#!/usr/bin/env node
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __typeError = (msg) => {
  throw TypeError(msg);
};
var __defNormalProp = (obj, key2, value) => key2 in obj ? __defProp(obj, key2, { enumerable: true, configurable: true, writable: true, value }) : obj[key2] = value;
var __esm = (fn, res) => function __init() {
  return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
};
var __commonJS = (cb, mod) => function __require() {
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all10) => {
  for (var name3 in all10)
    __defProp(target, name3, { get: all10[name3], enumerable: true });
};
var __copyProps = (to, from4, except, desc) => {
  if (from4 && typeof from4 === "object" || typeof from4 === "function") {
    for (let key2 of __getOwnPropNames(from4))
      if (!__hasOwnProp.call(to, key2) && key2 !== except)
        __defProp(to, key2, { get: () => from4[key2], enumerable: !(desc = __getOwnPropDesc(from4, key2)) || desc.enumerable });
  }
  return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  // If the importer is in node compatibility mode or this is not an ESM
  // file that has been converted to a CommonJS file using a Babel-
  // compatible transform (i.e. "__esModule" has not been set), then set
  // "default" to the CommonJS "module.exports" for node compatibility.
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  mod
));
var __publicField = (obj, key2, value) => __defNormalProp(obj, typeof key2 !== "symbol" ? key2 + "" : key2, value);
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
var __privateWrapper = (obj, member, setter, getter) => ({
  set _(value) {
    __privateSet(obj, member, value, setter);
  },
  get _() {
    return __privateGet(obj, member, getter);
  }
});

// ../../node_modules/core-js/internals/global.js
var require_global = __commonJS({
  "../../node_modules/core-js/internals/global.js"(exports2, module2) {
    var check2 = function(it) {
      return it && it.Math == Math && it;
    };
    module2.exports = // eslint-disable-next-line es/no-global-this -- safe
    check2(typeof globalThis == "object" && globalThis) || check2(typeof window == "object" && window) || // eslint-disable-next-line no-restricted-globals -- safe
    check2(typeof self == "object" && self) || check2(typeof global == "object" && global) || // eslint-disable-next-line no-new-func -- fallback
    /* @__PURE__ */ (function() {
      return this;
    })() || exports2 || Function("return this")();
  }
});

// ../../node_modules/core-js/internals/fails.js
var require_fails = __commonJS({
  "../../node_modules/core-js/internals/fails.js"(exports2, module2) {
    module2.exports = function(exec3) {
      try {
        return !!exec3();
      } catch (error) {
        return true;
      }
    };
  }
});

// ../../node_modules/core-js/internals/descriptors.js
var require_descriptors = __commonJS({
  "../../node_modules/core-js/internals/descriptors.js"(exports2, module2) {
    var fails = require_fails();
    module2.exports = !fails(function() {
      return Object.defineProperty({}, 1, { get: function() {
        return 7;
      } })[1] != 7;
    });
  }
});

// ../../node_modules/core-js/internals/function-bind-native.js
var require_function_bind_native = __commonJS({
  "../../node_modules/core-js/internals/function-bind-native.js"(exports2, module2) {
    var fails = require_fails();
    module2.exports = !fails(function() {
      var test2 = (function() {
      }).bind();
      return typeof test2 != "function" || test2.hasOwnProperty("prototype");
    });
  }
});

// ../../node_modules/core-js/internals/function-call.js
var require_function_call = __commonJS({
  "../../node_modules/core-js/internals/function-call.js"(exports2, module2) {
    var NATIVE_BIND = require_function_bind_native();
    var call = Function.prototype.call;
    module2.exports = NATIVE_BIND ? call.bind(call) : function() {
      return call.apply(call, arguments);
    };
  }
});

// ../../node_modules/core-js/internals/object-property-is-enumerable.js
var require_object_property_is_enumerable = __commonJS({
  "../../node_modules/core-js/internals/object-property-is-enumerable.js"(exports2) {
    "use strict";
    var $propertyIsEnumerable = {}.propertyIsEnumerable;
    var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
    var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);
    exports2.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
      var descriptor = getOwnPropertyDescriptor(this, V);
      return !!descriptor && descriptor.enumerable;
    } : $propertyIsEnumerable;
  }
});

// ../../node_modules/core-js/internals/create-property-descriptor.js
var require_create_property_descriptor = __commonJS({
  "../../node_modules/core-js/internals/create-property-descriptor.js"(exports2, module2) {
    module2.exports = function(bitmap, value) {
      return {
        enumerable: !(bitmap & 1),
        configurable: !(bitmap & 2),
        writable: !(bitmap & 4),
        value
      };
    };
  }
});

// ../../node_modules/core-js/internals/function-uncurry-this.js
var require_function_uncurry_this = __commonJS({
  "../../node_modules/core-js/internals/function-uncurry-this.js"(exports2, module2) {
    var NATIVE_BIND = require_function_bind_native();
    var FunctionPrototype = Function.prototype;
    var call = FunctionPrototype.call;
    var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);
    module2.exports = NATIVE_BIND ? uncurryThisWithBind : function(fn) {
      return function() {
        return call.apply(fn, arguments);
      };
    };
  }
});

// ../../node_modules/core-js/internals/classof-raw.js
var require_classof_raw = __commonJS({
  "../../node_modules/core-js/internals/classof-raw.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var toString6 = uncurryThis({}.toString);
    var stringSlice = uncurryThis("".slice);
    module2.exports = function(it) {
      return stringSlice(toString6(it), 8, -1);
    };
  }
});

// ../../node_modules/core-js/internals/indexed-object.js
var require_indexed_object = __commonJS({
  "../../node_modules/core-js/internals/indexed-object.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var fails = require_fails();
    var classof = require_classof_raw();
    var $Object = Object;
    var split2 = uncurryThis("".split);
    module2.exports = fails(function() {
      return !$Object("z").propertyIsEnumerable(0);
    }) ? function(it) {
      return classof(it) == "String" ? split2(it, "") : $Object(it);
    } : $Object;
  }
});

// ../../node_modules/core-js/internals/is-null-or-undefined.js
var require_is_null_or_undefined = __commonJS({
  "../../node_modules/core-js/internals/is-null-or-undefined.js"(exports2, module2) {
    module2.exports = function(it) {
      return it === null || it === void 0;
    };
  }
});

// ../../node_modules/core-js/internals/require-object-coercible.js
var require_require_object_coercible = __commonJS({
  "../../node_modules/core-js/internals/require-object-coercible.js"(exports2, module2) {
    var isNullOrUndefined = require_is_null_or_undefined();
    var $TypeError = TypeError;
    module2.exports = function(it) {
      if (isNullOrUndefined(it)) throw $TypeError("Can't call method on " + it);
      return it;
    };
  }
});

// ../../node_modules/core-js/internals/to-indexed-object.js
var require_to_indexed_object = __commonJS({
  "../../node_modules/core-js/internals/to-indexed-object.js"(exports2, module2) {
    var IndexedObject = require_indexed_object();
    var requireObjectCoercible = require_require_object_coercible();
    module2.exports = function(it) {
      return IndexedObject(requireObjectCoercible(it));
    };
  }
});

// ../../node_modules/core-js/internals/document-all.js
var require_document_all = __commonJS({
  "../../node_modules/core-js/internals/document-all.js"(exports2, module2) {
    var documentAll = typeof document == "object" && document.all;
    var IS_HTMLDDA = typeof documentAll == "undefined" && documentAll !== void 0;
    module2.exports = {
      all: documentAll,
      IS_HTMLDDA
    };
  }
});

// ../../node_modules/core-js/internals/is-callable.js
var require_is_callable = __commonJS({
  "../../node_modules/core-js/internals/is-callable.js"(exports2, module2) {
    var $documentAll = require_document_all();
    var documentAll = $documentAll.all;
    module2.exports = $documentAll.IS_HTMLDDA ? function(argument2) {
      return typeof argument2 == "function" || argument2 === documentAll;
    } : function(argument2) {
      return typeof argument2 == "function";
    };
  }
});

// ../../node_modules/core-js/internals/is-object.js
var require_is_object = __commonJS({
  "../../node_modules/core-js/internals/is-object.js"(exports2, module2) {
    var isCallable = require_is_callable();
    var $documentAll = require_document_all();
    var documentAll = $documentAll.all;
    module2.exports = $documentAll.IS_HTMLDDA ? function(it) {
      return typeof it == "object" ? it !== null : isCallable(it) || it === documentAll;
    } : function(it) {
      return typeof it == "object" ? it !== null : isCallable(it);
    };
  }
});

// ../../node_modules/core-js/internals/get-built-in.js
var require_get_built_in = __commonJS({
  "../../node_modules/core-js/internals/get-built-in.js"(exports2, module2) {
    var global2 = require_global();
    var isCallable = require_is_callable();
    var aFunction = function(argument2) {
      return isCallable(argument2) ? argument2 : void 0;
    };
    module2.exports = function(namespace, method) {
      return arguments.length < 2 ? aFunction(global2[namespace]) : global2[namespace] && global2[namespace][method];
    };
  }
});

// ../../node_modules/core-js/internals/object-is-prototype-of.js
var require_object_is_prototype_of = __commonJS({
  "../../node_modules/core-js/internals/object-is-prototype-of.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    module2.exports = uncurryThis({}.isPrototypeOf);
  }
});

// ../../node_modules/core-js/internals/engine-user-agent.js
var require_engine_user_agent = __commonJS({
  "../../node_modules/core-js/internals/engine-user-agent.js"(exports2, module2) {
    module2.exports = typeof navigator != "undefined" && String(navigator.userAgent) || "";
  }
});

// ../../node_modules/core-js/internals/engine-v8-version.js
var require_engine_v8_version = __commonJS({
  "../../node_modules/core-js/internals/engine-v8-version.js"(exports2, module2) {
    var global2 = require_global();
    var userAgent = require_engine_user_agent();
    var process11 = global2.process;
    var Deno2 = global2.Deno;
    var versions = process11 && process11.versions || Deno2 && Deno2.version;
    var v8 = versions && versions.v8;
    var match3;
    var version4;
    if (v8) {
      match3 = v8.split(".");
      version4 = match3[0] > 0 && match3[0] < 4 ? 1 : +(match3[0] + match3[1]);
    }
    if (!version4 && userAgent) {
      match3 = userAgent.match(/Edge\/(\d+)/);
      if (!match3 || match3[1] >= 74) {
        match3 = userAgent.match(/Chrome\/(\d+)/);
        if (match3) version4 = +match3[1];
      }
    }
    module2.exports = version4;
  }
});

// ../../node_modules/core-js/internals/symbol-constructor-detection.js
var require_symbol_constructor_detection = __commonJS({
  "../../node_modules/core-js/internals/symbol-constructor-detection.js"(exports2, module2) {
    var V8_VERSION = require_engine_v8_version();
    var fails = require_fails();
    var global2 = require_global();
    var $String = global2.String;
    module2.exports = !!Object.getOwnPropertySymbols && !fails(function() {
      var symbol = Symbol();
      return !$String(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
      !Symbol.sham && V8_VERSION && V8_VERSION < 41;
    });
  }
});

// ../../node_modules/core-js/internals/use-symbol-as-uid.js
var require_use_symbol_as_uid = __commonJS({
  "../../node_modules/core-js/internals/use-symbol-as-uid.js"(exports2, module2) {
    var NATIVE_SYMBOL = require_symbol_constructor_detection();
    module2.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == "symbol";
  }
});

// ../../node_modules/core-js/internals/is-symbol.js
var require_is_symbol = __commonJS({
  "../../node_modules/core-js/internals/is-symbol.js"(exports2, module2) {
    var getBuiltIn = require_get_built_in();
    var isCallable = require_is_callable();
    var isPrototypeOf = require_object_is_prototype_of();
    var USE_SYMBOL_AS_UID = require_use_symbol_as_uid();
    var $Object = Object;
    module2.exports = USE_SYMBOL_AS_UID ? function(it) {
      return typeof it == "symbol";
    } : function(it) {
      var $Symbol = getBuiltIn("Symbol");
      return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));
    };
  }
});

// ../../node_modules/core-js/internals/try-to-string.js
var require_try_to_string = __commonJS({
  "../../node_modules/core-js/internals/try-to-string.js"(exports2, module2) {
    var $String = String;
    module2.exports = function(argument2) {
      try {
        return $String(argument2);
      } catch (error) {
        return "Object";
      }
    };
  }
});

// ../../node_modules/core-js/internals/a-callable.js
var require_a_callable = __commonJS({
  "../../node_modules/core-js/internals/a-callable.js"(exports2, module2) {
    var isCallable = require_is_callable();
    var tryToString = require_try_to_string();
    var $TypeError = TypeError;
    module2.exports = function(argument2) {
      if (isCallable(argument2)) return argument2;
      throw $TypeError(tryToString(argument2) + " is not a function");
    };
  }
});

// ../../node_modules/core-js/internals/get-method.js
var require_get_method = __commonJS({
  "../../node_modules/core-js/internals/get-method.js"(exports2, module2) {
    var aCallable = require_a_callable();
    var isNullOrUndefined = require_is_null_or_undefined();
    module2.exports = function(V, P) {
      var func = V[P];
      return isNullOrUndefined(func) ? void 0 : aCallable(func);
    };
  }
});

// ../../node_modules/core-js/internals/ordinary-to-primitive.js
var require_ordinary_to_primitive = __commonJS({
  "../../node_modules/core-js/internals/ordinary-to-primitive.js"(exports2, module2) {
    var call = require_function_call();
    var isCallable = require_is_callable();
    var isObject2 = require_is_object();
    var $TypeError = TypeError;
    module2.exports = function(input3, pref) {
      var fn, val;
      if (pref === "string" && isCallable(fn = input3.toString) && !isObject2(val = call(fn, input3))) return val;
      if (isCallable(fn = input3.valueOf) && !isObject2(val = call(fn, input3))) return val;
      if (pref !== "string" && isCallable(fn = input3.toString) && !isObject2(val = call(fn, input3))) return val;
      throw $TypeError("Can't convert object to primitive value");
    };
  }
});

// ../../node_modules/core-js/internals/is-pure.js
var require_is_pure = __commonJS({
  "../../node_modules/core-js/internals/is-pure.js"(exports2, module2) {
    module2.exports = false;
  }
});

// ../../node_modules/core-js/internals/define-global-property.js
var require_define_global_property = __commonJS({
  "../../node_modules/core-js/internals/define-global-property.js"(exports2, module2) {
    var global2 = require_global();
    var defineProperty = Object.defineProperty;
    module2.exports = function(key2, value) {
      try {
        defineProperty(global2, key2, { value, configurable: true, writable: true });
      } catch (error) {
        global2[key2] = value;
      }
      return value;
    };
  }
});

// ../../node_modules/core-js/internals/shared-store.js
var require_shared_store = __commonJS({
  "../../node_modules/core-js/internals/shared-store.js"(exports2, module2) {
    var global2 = require_global();
    var defineGlobalProperty = require_define_global_property();
    var SHARED = "__core-js_shared__";
    var store = global2[SHARED] || defineGlobalProperty(SHARED, {});
    module2.exports = store;
  }
});

// ../../node_modules/core-js/internals/shared.js
var require_shared = __commonJS({
  "../../node_modules/core-js/internals/shared.js"(exports2, module2) {
    var IS_PURE = require_is_pure();
    var store = require_shared_store();
    (module2.exports = function(key2, value) {
      return store[key2] || (store[key2] = value !== void 0 ? value : {});
    })("versions", []).push({
      version: "3.31.1",
      mode: IS_PURE ? "pure" : "global",
      copyright: "\xA9 2014-2023 Denis Pushkarev (zloirock.ru)",
      license: "https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE",
      source: "https://github.com/zloirock/core-js"
    });
  }
});

// ../../node_modules/core-js/internals/to-object.js
var require_to_object = __commonJS({
  "../../node_modules/core-js/internals/to-object.js"(exports2, module2) {
    var requireObjectCoercible = require_require_object_coercible();
    var $Object = Object;
    module2.exports = function(argument2) {
      return $Object(requireObjectCoercible(argument2));
    };
  }
});

// ../../node_modules/core-js/internals/has-own-property.js
var require_has_own_property = __commonJS({
  "../../node_modules/core-js/internals/has-own-property.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var toObject = require_to_object();
    var hasOwnProperty = uncurryThis({}.hasOwnProperty);
    module2.exports = Object.hasOwn || function hasOwn(it, key2) {
      return hasOwnProperty(toObject(it), key2);
    };
  }
});

// ../../node_modules/core-js/internals/uid.js
var require_uid = __commonJS({
  "../../node_modules/core-js/internals/uid.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var id = 0;
    var postfix = Math.random();
    var toString6 = uncurryThis(1 .toString);
    module2.exports = function(key2) {
      return "Symbol(" + (key2 === void 0 ? "" : key2) + ")_" + toString6(++id + postfix, 36);
    };
  }
});

// ../../node_modules/core-js/internals/well-known-symbol.js
var require_well_known_symbol = __commonJS({
  "../../node_modules/core-js/internals/well-known-symbol.js"(exports2, module2) {
    var global2 = require_global();
    var shared = require_shared();
    var hasOwn = require_has_own_property();
    var uid = require_uid();
    var NATIVE_SYMBOL = require_symbol_constructor_detection();
    var USE_SYMBOL_AS_UID = require_use_symbol_as_uid();
    var Symbol2 = global2.Symbol;
    var WellKnownSymbolsStore = shared("wks");
    var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol2["for"] || Symbol2 : Symbol2 && Symbol2.withoutSetter || uid;
    module2.exports = function(name3) {
      if (!hasOwn(WellKnownSymbolsStore, name3)) {
        WellKnownSymbolsStore[name3] = NATIVE_SYMBOL && hasOwn(Symbol2, name3) ? Symbol2[name3] : createWellKnownSymbol("Symbol." + name3);
      }
      return WellKnownSymbolsStore[name3];
    };
  }
});

// ../../node_modules/core-js/internals/to-primitive.js
var require_to_primitive = __commonJS({
  "../../node_modules/core-js/internals/to-primitive.js"(exports2, module2) {
    var call = require_function_call();
    var isObject2 = require_is_object();
    var isSymbol = require_is_symbol();
    var getMethod = require_get_method();
    var ordinaryToPrimitive = require_ordinary_to_primitive();
    var wellKnownSymbol = require_well_known_symbol();
    var $TypeError = TypeError;
    var TO_PRIMITIVE = wellKnownSymbol("toPrimitive");
    module2.exports = function(input3, pref) {
      if (!isObject2(input3) || isSymbol(input3)) return input3;
      var exoticToPrim = getMethod(input3, TO_PRIMITIVE);
      var result;
      if (exoticToPrim) {
        if (pref === void 0) pref = "default";
        result = call(exoticToPrim, input3, pref);
        if (!isObject2(result) || isSymbol(result)) return result;
        throw $TypeError("Can't convert object to primitive value");
      }
      if (pref === void 0) pref = "number";
      return ordinaryToPrimitive(input3, pref);
    };
  }
});

// ../../node_modules/core-js/internals/to-property-key.js
var require_to_property_key = __commonJS({
  "../../node_modules/core-js/internals/to-property-key.js"(exports2, module2) {
    var toPrimitive = require_to_primitive();
    var isSymbol = require_is_symbol();
    module2.exports = function(argument2) {
      var key2 = toPrimitive(argument2, "string");
      return isSymbol(key2) ? key2 : key2 + "";
    };
  }
});

// ../../node_modules/core-js/internals/document-create-element.js
var require_document_create_element = __commonJS({
  "../../node_modules/core-js/internals/document-create-element.js"(exports2, module2) {
    var global2 = require_global();
    var isObject2 = require_is_object();
    var document2 = global2.document;
    var EXISTS = isObject2(document2) && isObject2(document2.createElement);
    module2.exports = function(it) {
      return EXISTS ? document2.createElement(it) : {};
    };
  }
});

// ../../node_modules/core-js/internals/ie8-dom-define.js
var require_ie8_dom_define = __commonJS({
  "../../node_modules/core-js/internals/ie8-dom-define.js"(exports2, module2) {
    var DESCRIPTORS = require_descriptors();
    var fails = require_fails();
    var createElement = require_document_create_element();
    module2.exports = !DESCRIPTORS && !fails(function() {
      return Object.defineProperty(createElement("div"), "a", {
        get: function() {
          return 7;
        }
      }).a != 7;
    });
  }
});

// ../../node_modules/core-js/internals/object-get-own-property-descriptor.js
var require_object_get_own_property_descriptor = __commonJS({
  "../../node_modules/core-js/internals/object-get-own-property-descriptor.js"(exports2) {
    var DESCRIPTORS = require_descriptors();
    var call = require_function_call();
    var propertyIsEnumerableModule = require_object_property_is_enumerable();
    var createPropertyDescriptor = require_create_property_descriptor();
    var toIndexedObject = require_to_indexed_object();
    var toPropertyKey = require_to_property_key();
    var hasOwn = require_has_own_property();
    var IE8_DOM_DEFINE = require_ie8_dom_define();
    var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
    exports2.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
      O = toIndexedObject(O);
      P = toPropertyKey(P);
      if (IE8_DOM_DEFINE) try {
        return $getOwnPropertyDescriptor(O, P);
      } catch (error) {
      }
      if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);
    };
  }
});

// ../../node_modules/core-js/internals/v8-prototype-define-bug.js
var require_v8_prototype_define_bug = __commonJS({
  "../../node_modules/core-js/internals/v8-prototype-define-bug.js"(exports2, module2) {
    var DESCRIPTORS = require_descriptors();
    var fails = require_fails();
    module2.exports = DESCRIPTORS && fails(function() {
      return Object.defineProperty(function() {
      }, "prototype", {
        value: 42,
        writable: false
      }).prototype != 42;
    });
  }
});

// ../../node_modules/core-js/internals/an-object.js
var require_an_object = __commonJS({
  "../../node_modules/core-js/internals/an-object.js"(exports2, module2) {
    var isObject2 = require_is_object();
    var $String = String;
    var $TypeError = TypeError;
    module2.exports = function(argument2) {
      if (isObject2(argument2)) return argument2;
      throw $TypeError($String(argument2) + " is not an object");
    };
  }
});

// ../../node_modules/core-js/internals/object-define-property.js
var require_object_define_property = __commonJS({
  "../../node_modules/core-js/internals/object-define-property.js"(exports2) {
    var DESCRIPTORS = require_descriptors();
    var IE8_DOM_DEFINE = require_ie8_dom_define();
    var V8_PROTOTYPE_DEFINE_BUG = require_v8_prototype_define_bug();
    var anObject = require_an_object();
    var toPropertyKey = require_to_property_key();
    var $TypeError = TypeError;
    var $defineProperty = Object.defineProperty;
    var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
    var ENUMERABLE = "enumerable";
    var CONFIGURABLE = "configurable";
    var WRITABLE = "writable";
    exports2.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {
      anObject(O);
      P = toPropertyKey(P);
      anObject(Attributes);
      if (typeof O === "function" && P === "prototype" && "value" in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
        var current2 = $getOwnPropertyDescriptor(O, P);
        if (current2 && current2[WRITABLE]) {
          O[P] = Attributes.value;
          Attributes = {
            configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current2[CONFIGURABLE],
            enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current2[ENUMERABLE],
            writable: false
          };
        }
      }
      return $defineProperty(O, P, Attributes);
    } : $defineProperty : function defineProperty(O, P, Attributes) {
      anObject(O);
      P = toPropertyKey(P);
      anObject(Attributes);
      if (IE8_DOM_DEFINE) try {
        return $defineProperty(O, P, Attributes);
      } catch (error) {
      }
      if ("get" in Attributes || "set" in Attributes) throw $TypeError("Accessors not supported");
      if ("value" in Attributes) O[P] = Attributes.value;
      return O;
    };
  }
});

// ../../node_modules/core-js/internals/create-non-enumerable-property.js
var require_create_non_enumerable_property = __commonJS({
  "../../node_modules/core-js/internals/create-non-enumerable-property.js"(exports2, module2) {
    var DESCRIPTORS = require_descriptors();
    var definePropertyModule = require_object_define_property();
    var createPropertyDescriptor = require_create_property_descriptor();
    module2.exports = DESCRIPTORS ? function(object, key2, value) {
      return definePropertyModule.f(object, key2, createPropertyDescriptor(1, value));
    } : function(object, key2, value) {
      object[key2] = value;
      return object;
    };
  }
});

// ../../node_modules/core-js/internals/function-name.js
var require_function_name = __commonJS({
  "../../node_modules/core-js/internals/function-name.js"(exports2, module2) {
    var DESCRIPTORS = require_descriptors();
    var hasOwn = require_has_own_property();
    var FunctionPrototype = Function.prototype;
    var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;
    var EXISTS = hasOwn(FunctionPrototype, "name");
    var PROPER = EXISTS && (function something() {
    }).name === "something";
    var CONFIGURABLE = EXISTS && (!DESCRIPTORS || DESCRIPTORS && getDescriptor(FunctionPrototype, "name").configurable);
    module2.exports = {
      EXISTS,
      PROPER,
      CONFIGURABLE
    };
  }
});

// ../../node_modules/core-js/internals/inspect-source.js
var require_inspect_source = __commonJS({
  "../../node_modules/core-js/internals/inspect-source.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var isCallable = require_is_callable();
    var store = require_shared_store();
    var functionToString = uncurryThis(Function.toString);
    if (!isCallable(store.inspectSource)) {
      store.inspectSource = function(it) {
        return functionToString(it);
      };
    }
    module2.exports = store.inspectSource;
  }
});

// ../../node_modules/core-js/internals/weak-map-basic-detection.js
var require_weak_map_basic_detection = __commonJS({
  "../../node_modules/core-js/internals/weak-map-basic-detection.js"(exports2, module2) {
    var global2 = require_global();
    var isCallable = require_is_callable();
    var WeakMap2 = global2.WeakMap;
    module2.exports = isCallable(WeakMap2) && /native code/.test(String(WeakMap2));
  }
});

// ../../node_modules/core-js/internals/shared-key.js
var require_shared_key = __commonJS({
  "../../node_modules/core-js/internals/shared-key.js"(exports2, module2) {
    var shared = require_shared();
    var uid = require_uid();
    var keys2 = shared("keys");
    module2.exports = function(key2) {
      return keys2[key2] || (keys2[key2] = uid(key2));
    };
  }
});

// ../../node_modules/core-js/internals/hidden-keys.js
var require_hidden_keys = __commonJS({
  "../../node_modules/core-js/internals/hidden-keys.js"(exports2, module2) {
    module2.exports = {};
  }
});

// ../../node_modules/core-js/internals/internal-state.js
var require_internal_state = __commonJS({
  "../../node_modules/core-js/internals/internal-state.js"(exports2, module2) {
    var NATIVE_WEAK_MAP = require_weak_map_basic_detection();
    var global2 = require_global();
    var isObject2 = require_is_object();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var hasOwn = require_has_own_property();
    var shared = require_shared_store();
    var sharedKey = require_shared_key();
    var hiddenKeys = require_hidden_keys();
    var OBJECT_ALREADY_INITIALIZED = "Object already initialized";
    var TypeError2 = global2.TypeError;
    var WeakMap2 = global2.WeakMap;
    var set3;
    var get;
    var has3;
    var enforce = function(it) {
      return has3(it) ? get(it) : set3(it, {});
    };
    var getterFor = function(TYPE2) {
      return function(it) {
        var state;
        if (!isObject2(it) || (state = get(it)).type !== TYPE2) {
          throw TypeError2("Incompatible receiver, " + TYPE2 + " required");
        }
        return state;
      };
    };
    if (NATIVE_WEAK_MAP || shared.state) {
      store = shared.state || (shared.state = new WeakMap2());
      store.get = store.get;
      store.has = store.has;
      store.set = store.set;
      set3 = function(it, metadata) {
        if (store.has(it)) throw TypeError2(OBJECT_ALREADY_INITIALIZED);
        metadata.facade = it;
        store.set(it, metadata);
        return metadata;
      };
      get = function(it) {
        return store.get(it) || {};
      };
      has3 = function(it) {
        return store.has(it);
      };
    } else {
      STATE = sharedKey("state");
      hiddenKeys[STATE] = true;
      set3 = function(it, metadata) {
        if (hasOwn(it, STATE)) throw TypeError2(OBJECT_ALREADY_INITIALIZED);
        metadata.facade = it;
        createNonEnumerableProperty(it, STATE, metadata);
        return metadata;
      };
      get = function(it) {
        return hasOwn(it, STATE) ? it[STATE] : {};
      };
      has3 = function(it) {
        return hasOwn(it, STATE);
      };
    }
    var store;
    var STATE;
    module2.exports = {
      set: set3,
      get,
      has: has3,
      enforce,
      getterFor
    };
  }
});

// ../../node_modules/core-js/internals/make-built-in.js
var require_make_built_in = __commonJS({
  "../../node_modules/core-js/internals/make-built-in.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var fails = require_fails();
    var isCallable = require_is_callable();
    var hasOwn = require_has_own_property();
    var DESCRIPTORS = require_descriptors();
    var CONFIGURABLE_FUNCTION_NAME = require_function_name().CONFIGURABLE;
    var inspectSource = require_inspect_source();
    var InternalStateModule = require_internal_state();
    var enforceInternalState = InternalStateModule.enforce;
    var getInternalState = InternalStateModule.get;
    var $String = String;
    var defineProperty = Object.defineProperty;
    var stringSlice = uncurryThis("".slice);
    var replace = uncurryThis("".replace);
    var join19 = uncurryThis([].join);
    var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function() {
      return defineProperty(function() {
      }, "length", { value: 8 }).length !== 8;
    });
    var TEMPLATE = String(String).split("String");
    var makeBuiltIn = module2.exports = function(value, name3, options) {
      if (stringSlice($String(name3), 0, 7) === "Symbol(") {
        name3 = "[" + replace($String(name3), /^Symbol\(([^)]*)\)/, "$1") + "]";
      }
      if (options && options.getter) name3 = "get " + name3;
      if (options && options.setter) name3 = "set " + name3;
      if (!hasOwn(value, "name") || CONFIGURABLE_FUNCTION_NAME && value.name !== name3) {
        if (DESCRIPTORS) defineProperty(value, "name", { value: name3, configurable: true });
        else value.name = name3;
      }
      if (CONFIGURABLE_LENGTH && options && hasOwn(options, "arity") && value.length !== options.arity) {
        defineProperty(value, "length", { value: options.arity });
      }
      try {
        if (options && hasOwn(options, "constructor") && options.constructor) {
          if (DESCRIPTORS) defineProperty(value, "prototype", { writable: false });
        } else if (value.prototype) value.prototype = void 0;
      } catch (error) {
      }
      var state = enforceInternalState(value);
      if (!hasOwn(state, "source")) {
        state.source = join19(TEMPLATE, typeof name3 == "string" ? name3 : "");
      }
      return value;
    };
    Function.prototype.toString = makeBuiltIn(function toString6() {
      return isCallable(this) && getInternalState(this).source || inspectSource(this);
    }, "toString");
  }
});

// ../../node_modules/core-js/internals/define-built-in.js
var require_define_built_in = __commonJS({
  "../../node_modules/core-js/internals/define-built-in.js"(exports2, module2) {
    var isCallable = require_is_callable();
    var definePropertyModule = require_object_define_property();
    var makeBuiltIn = require_make_built_in();
    var defineGlobalProperty = require_define_global_property();
    module2.exports = function(O, key2, value, options) {
      if (!options) options = {};
      var simple = options.enumerable;
      var name3 = options.name !== void 0 ? options.name : key2;
      if (isCallable(value)) makeBuiltIn(value, name3, options);
      if (options.global) {
        if (simple) O[key2] = value;
        else defineGlobalProperty(key2, value);
      } else {
        try {
          if (!options.unsafe) delete O[key2];
          else if (O[key2]) simple = true;
        } catch (error) {
        }
        if (simple) O[key2] = value;
        else definePropertyModule.f(O, key2, {
          value,
          enumerable: false,
          configurable: !options.nonConfigurable,
          writable: !options.nonWritable
        });
      }
      return O;
    };
  }
});

// ../../node_modules/core-js/internals/math-trunc.js
var require_math_trunc = __commonJS({
  "../../node_modules/core-js/internals/math-trunc.js"(exports2, module2) {
    var ceil = Math.ceil;
    var floor = Math.floor;
    module2.exports = Math.trunc || function trunc(x2) {
      var n = +x2;
      return (n > 0 ? floor : ceil)(n);
    };
  }
});

// ../../node_modules/core-js/internals/to-integer-or-infinity.js
var require_to_integer_or_infinity = __commonJS({
  "../../node_modules/core-js/internals/to-integer-or-infinity.js"(exports2, module2) {
    var trunc = require_math_trunc();
    module2.exports = function(argument2) {
      var number2 = +argument2;
      return number2 !== number2 || number2 === 0 ? 0 : trunc(number2);
    };
  }
});

// ../../node_modules/core-js/internals/to-absolute-index.js
var require_to_absolute_index = __commonJS({
  "../../node_modules/core-js/internals/to-absolute-index.js"(exports2, module2) {
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var max = Math.max;
    var min = Math.min;
    module2.exports = function(index4, length) {
      var integer = toIntegerOrInfinity(index4);
      return integer < 0 ? max(integer + length, 0) : min(integer, length);
    };
  }
});

// ../../node_modules/core-js/internals/to-length.js
var require_to_length = __commonJS({
  "../../node_modules/core-js/internals/to-length.js"(exports2, module2) {
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var min = Math.min;
    module2.exports = function(argument2) {
      return argument2 > 0 ? min(toIntegerOrInfinity(argument2), 9007199254740991) : 0;
    };
  }
});

// ../../node_modules/core-js/internals/length-of-array-like.js
var require_length_of_array_like = __commonJS({
  "../../node_modules/core-js/internals/length-of-array-like.js"(exports2, module2) {
    var toLength = require_to_length();
    module2.exports = function(obj) {
      return toLength(obj.length);
    };
  }
});

// ../../node_modules/core-js/internals/array-includes.js
var require_array_includes = __commonJS({
  "../../node_modules/core-js/internals/array-includes.js"(exports2, module2) {
    var toIndexedObject = require_to_indexed_object();
    var toAbsoluteIndex = require_to_absolute_index();
    var lengthOfArrayLike = require_length_of_array_like();
    var createMethod = function(IS_INCLUDES) {
      return function($this, el, fromIndex) {
        var O = toIndexedObject($this);
        var length = lengthOfArrayLike(O);
        var index4 = toAbsoluteIndex(fromIndex, length);
        var value;
        if (IS_INCLUDES && el != el) while (length > index4) {
          value = O[index4++];
          if (value != value) return true;
        }
        else for (; length > index4; index4++) {
          if ((IS_INCLUDES || index4 in O) && O[index4] === el) return IS_INCLUDES || index4 || 0;
        }
        return !IS_INCLUDES && -1;
      };
    };
    module2.exports = {
      // `Array.prototype.includes` method
      // https://tc39.es/ecma262/#sec-array.prototype.includes
      includes: createMethod(true),
      // `Array.prototype.indexOf` method
      // https://tc39.es/ecma262/#sec-array.prototype.indexof
      indexOf: createMethod(false)
    };
  }
});

// ../../node_modules/core-js/internals/object-keys-internal.js
var require_object_keys_internal = __commonJS({
  "../../node_modules/core-js/internals/object-keys-internal.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var hasOwn = require_has_own_property();
    var toIndexedObject = require_to_indexed_object();
    var indexOf2 = require_array_includes().indexOf;
    var hiddenKeys = require_hidden_keys();
    var push = uncurryThis([].push);
    module2.exports = function(object, names) {
      var O = toIndexedObject(object);
      var i2 = 0;
      var result = [];
      var key2;
      for (key2 in O) !hasOwn(hiddenKeys, key2) && hasOwn(O, key2) && push(result, key2);
      while (names.length > i2) if (hasOwn(O, key2 = names[i2++])) {
        ~indexOf2(result, key2) || push(result, key2);
      }
      return result;
    };
  }
});

// ../../node_modules/core-js/internals/enum-bug-keys.js
var require_enum_bug_keys = __commonJS({
  "../../node_modules/core-js/internals/enum-bug-keys.js"(exports2, module2) {
    module2.exports = [
      "constructor",
      "hasOwnProperty",
      "isPrototypeOf",
      "propertyIsEnumerable",
      "toLocaleString",
      "toString",
      "valueOf"
    ];
  }
});

// ../../node_modules/core-js/internals/object-get-own-property-names.js
var require_object_get_own_property_names = __commonJS({
  "../../node_modules/core-js/internals/object-get-own-property-names.js"(exports2) {
    var internalObjectKeys = require_object_keys_internal();
    var enumBugKeys = require_enum_bug_keys();
    var hiddenKeys = enumBugKeys.concat("length", "prototype");
    exports2.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
      return internalObjectKeys(O, hiddenKeys);
    };
  }
});

// ../../node_modules/core-js/internals/object-get-own-property-symbols.js
var require_object_get_own_property_symbols = __commonJS({
  "../../node_modules/core-js/internals/object-get-own-property-symbols.js"(exports2) {
    exports2.f = Object.getOwnPropertySymbols;
  }
});

// ../../node_modules/core-js/internals/own-keys.js
var require_own_keys = __commonJS({
  "../../node_modules/core-js/internals/own-keys.js"(exports2, module2) {
    var getBuiltIn = require_get_built_in();
    var uncurryThis = require_function_uncurry_this();
    var getOwnPropertyNamesModule = require_object_get_own_property_names();
    var getOwnPropertySymbolsModule = require_object_get_own_property_symbols();
    var anObject = require_an_object();
    var concat2 = uncurryThis([].concat);
    module2.exports = getBuiltIn("Reflect", "ownKeys") || function ownKeys(it) {
      var keys2 = getOwnPropertyNamesModule.f(anObject(it));
      var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
      return getOwnPropertySymbols ? concat2(keys2, getOwnPropertySymbols(it)) : keys2;
    };
  }
});

// ../../node_modules/core-js/internals/copy-constructor-properties.js
var require_copy_constructor_properties = __commonJS({
  "../../node_modules/core-js/internals/copy-constructor-properties.js"(exports2, module2) {
    var hasOwn = require_has_own_property();
    var ownKeys = require_own_keys();
    var getOwnPropertyDescriptorModule = require_object_get_own_property_descriptor();
    var definePropertyModule = require_object_define_property();
    module2.exports = function(target, source2, exceptions) {
      var keys2 = ownKeys(source2);
      var defineProperty = definePropertyModule.f;
      var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
      for (var i2 = 0; i2 < keys2.length; i2++) {
        var key2 = keys2[i2];
        if (!hasOwn(target, key2) && !(exceptions && hasOwn(exceptions, key2))) {
          defineProperty(target, key2, getOwnPropertyDescriptor(source2, key2));
        }
      }
    };
  }
});

// ../../node_modules/core-js/internals/is-forced.js
var require_is_forced = __commonJS({
  "../../node_modules/core-js/internals/is-forced.js"(exports2, module2) {
    var fails = require_fails();
    var isCallable = require_is_callable();
    var replacement = /#|\.prototype\./;
    var isForced = function(feature, detection) {
      var value = data[normalize6(feature)];
      return value == POLYFILL ? true : value == NATIVE ? false : isCallable(detection) ? fails(detection) : !!detection;
    };
    var normalize6 = isForced.normalize = function(string2) {
      return String(string2).replace(replacement, ".").toLowerCase();
    };
    var data = isForced.data = {};
    var NATIVE = isForced.NATIVE = "N";
    var POLYFILL = isForced.POLYFILL = "P";
    module2.exports = isForced;
  }
});

// ../../node_modules/core-js/internals/export.js
var require_export = __commonJS({
  "../../node_modules/core-js/internals/export.js"(exports2, module2) {
    var global2 = require_global();
    var getOwnPropertyDescriptor = require_object_get_own_property_descriptor().f;
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var defineBuiltIn = require_define_built_in();
    var defineGlobalProperty = require_define_global_property();
    var copyConstructorProperties = require_copy_constructor_properties();
    var isForced = require_is_forced();
    module2.exports = function(options, source2) {
      var TARGET = options.target;
      var GLOBAL = options.global;
      var STATIC = options.stat;
      var FORCED, target, key2, targetProperty, sourceProperty, descriptor;
      if (GLOBAL) {
        target = global2;
      } else if (STATIC) {
        target = global2[TARGET] || defineGlobalProperty(TARGET, {});
      } else {
        target = (global2[TARGET] || {}).prototype;
      }
      if (target) for (key2 in source2) {
        sourceProperty = source2[key2];
        if (options.dontCallGetSet) {
          descriptor = getOwnPropertyDescriptor(target, key2);
          targetProperty = descriptor && descriptor.value;
        } else targetProperty = target[key2];
        FORCED = isForced(GLOBAL ? key2 : TARGET + (STATIC ? "." : "#") + key2, options.forced);
        if (!FORCED && targetProperty !== void 0) {
          if (typeof sourceProperty == typeof targetProperty) continue;
          copyConstructorProperties(sourceProperty, targetProperty);
        }
        if (options.sham || targetProperty && targetProperty.sham) {
          createNonEnumerableProperty(sourceProperty, "sham", true);
        }
        defineBuiltIn(target, key2, sourceProperty, options);
      }
    };
  }
});

// ../../node_modules/core-js/internals/to-string-tag-support.js
var require_to_string_tag_support = __commonJS({
  "../../node_modules/core-js/internals/to-string-tag-support.js"(exports2, module2) {
    var wellKnownSymbol = require_well_known_symbol();
    var TO_STRING_TAG = wellKnownSymbol("toStringTag");
    var test2 = {};
    test2[TO_STRING_TAG] = "z";
    module2.exports = String(test2) === "[object z]";
  }
});

// ../../node_modules/core-js/internals/classof.js
var require_classof = __commonJS({
  "../../node_modules/core-js/internals/classof.js"(exports2, module2) {
    var TO_STRING_TAG_SUPPORT = require_to_string_tag_support();
    var isCallable = require_is_callable();
    var classofRaw = require_classof_raw();
    var wellKnownSymbol = require_well_known_symbol();
    var TO_STRING_TAG = wellKnownSymbol("toStringTag");
    var $Object = Object;
    var CORRECT_ARGUMENTS = classofRaw(/* @__PURE__ */ (function() {
      return arguments;
    })()) == "Arguments";
    var tryGet = function(it, key2) {
      try {
        return it[key2];
      } catch (error) {
      }
    };
    module2.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function(it) {
      var O, tag, result;
      return it === void 0 ? "Undefined" : it === null ? "Null" : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == "string" ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == "Object" && isCallable(O.callee) ? "Arguments" : result;
    };
  }
});

// ../../node_modules/core-js/internals/to-string.js
var require_to_string = __commonJS({
  "../../node_modules/core-js/internals/to-string.js"(exports2, module2) {
    var classof = require_classof();
    var $String = String;
    module2.exports = function(argument2) {
      if (classof(argument2) === "Symbol") throw TypeError("Cannot convert a Symbol value to a string");
      return $String(argument2);
    };
  }
});

// ../../node_modules/core-js/internals/object-keys.js
var require_object_keys = __commonJS({
  "../../node_modules/core-js/internals/object-keys.js"(exports2, module2) {
    var internalObjectKeys = require_object_keys_internal();
    var enumBugKeys = require_enum_bug_keys();
    module2.exports = Object.keys || function keys2(O) {
      return internalObjectKeys(O, enumBugKeys);
    };
  }
});

// ../../node_modules/core-js/internals/object-define-properties.js
var require_object_define_properties = __commonJS({
  "../../node_modules/core-js/internals/object-define-properties.js"(exports2) {
    var DESCRIPTORS = require_descriptors();
    var V8_PROTOTYPE_DEFINE_BUG = require_v8_prototype_define_bug();
    var definePropertyModule = require_object_define_property();
    var anObject = require_an_object();
    var toIndexedObject = require_to_indexed_object();
    var objectKeys = require_object_keys();
    exports2.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {
      anObject(O);
      var props = toIndexedObject(Properties);
      var keys2 = objectKeys(Properties);
      var length = keys2.length;
      var index4 = 0;
      var key2;
      while (length > index4) definePropertyModule.f(O, key2 = keys2[index4++], props[key2]);
      return O;
    };
  }
});

// ../../node_modules/core-js/internals/html.js
var require_html = __commonJS({
  "../../node_modules/core-js/internals/html.js"(exports2, module2) {
    var getBuiltIn = require_get_built_in();
    module2.exports = getBuiltIn("document", "documentElement");
  }
});

// ../../node_modules/core-js/internals/object-create.js
var require_object_create = __commonJS({
  "../../node_modules/core-js/internals/object-create.js"(exports2, module2) {
    var anObject = require_an_object();
    var definePropertiesModule = require_object_define_properties();
    var enumBugKeys = require_enum_bug_keys();
    var hiddenKeys = require_hidden_keys();
    var html7 = require_html();
    var documentCreateElement = require_document_create_element();
    var sharedKey = require_shared_key();
    var GT = ">";
    var LT = "<";
    var PROTOTYPE = "prototype";
    var SCRIPT = "script";
    var IE_PROTO = sharedKey("IE_PROTO");
    var EmptyConstructor = function() {
    };
    var scriptTag = function(content3) {
      return LT + SCRIPT + GT + content3 + LT + "/" + SCRIPT + GT;
    };
    var NullProtoObjectViaActiveX = function(activeXDocument2) {
      activeXDocument2.write(scriptTag(""));
      activeXDocument2.close();
      var temp = activeXDocument2.parentWindow.Object;
      activeXDocument2 = null;
      return temp;
    };
    var NullProtoObjectViaIFrame = function() {
      var iframe4 = documentCreateElement("iframe");
      var JS = "java" + SCRIPT + ":";
      var iframeDocument;
      iframe4.style.display = "none";
      html7.appendChild(iframe4);
      iframe4.src = String(JS);
      iframeDocument = iframe4.contentWindow.document;
      iframeDocument.open();
      iframeDocument.write(scriptTag("document.F=Object"));
      iframeDocument.close();
      return iframeDocument.F;
    };
    var activeXDocument;
    var NullProtoObject = function() {
      try {
        activeXDocument = new ActiveXObject("htmlfile");
      } catch (error) {
      }
      NullProtoObject = typeof document != "undefined" ? document.domain && activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame() : NullProtoObjectViaActiveX(activeXDocument);
      var length = enumBugKeys.length;
      while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
      return NullProtoObject();
    };
    hiddenKeys[IE_PROTO] = true;
    module2.exports = Object.create || function create3(O, Properties) {
      var result;
      if (O !== null) {
        EmptyConstructor[PROTOTYPE] = anObject(O);
        result = new EmptyConstructor();
        EmptyConstructor[PROTOTYPE] = null;
        result[IE_PROTO] = O;
      } else result = NullProtoObject();
      return Properties === void 0 ? result : definePropertiesModule.f(result, Properties);
    };
  }
});

// ../../node_modules/core-js/internals/create-property.js
var require_create_property = __commonJS({
  "../../node_modules/core-js/internals/create-property.js"(exports2, module2) {
    "use strict";
    var toPropertyKey = require_to_property_key();
    var definePropertyModule = require_object_define_property();
    var createPropertyDescriptor = require_create_property_descriptor();
    module2.exports = function(object, key2, value) {
      var propertyKey = toPropertyKey(key2);
      if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));
      else object[propertyKey] = value;
    };
  }
});

// ../../node_modules/core-js/internals/array-slice-simple.js
var require_array_slice_simple = __commonJS({
  "../../node_modules/core-js/internals/array-slice-simple.js"(exports2, module2) {
    var toAbsoluteIndex = require_to_absolute_index();
    var lengthOfArrayLike = require_length_of_array_like();
    var createProperty = require_create_property();
    var $Array = Array;
    var max = Math.max;
    module2.exports = function(O, start, end) {
      var length = lengthOfArrayLike(O);
      var k = toAbsoluteIndex(start, length);
      var fin = toAbsoluteIndex(end === void 0 ? length : end, length);
      var result = $Array(max(fin - k, 0));
      for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);
      result.length = n;
      return result;
    };
  }
});

// ../../node_modules/core-js/internals/object-get-own-property-names-external.js
var require_object_get_own_property_names_external = __commonJS({
  "../../node_modules/core-js/internals/object-get-own-property-names-external.js"(exports2, module2) {
    var classof = require_classof_raw();
    var toIndexedObject = require_to_indexed_object();
    var $getOwnPropertyNames = require_object_get_own_property_names().f;
    var arraySlice = require_array_slice_simple();
    var windowNames = typeof window == "object" && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];
    var getWindowNames = function(it) {
      try {
        return $getOwnPropertyNames(it);
      } catch (error) {
        return arraySlice(windowNames);
      }
    };
    module2.exports.f = function getOwnPropertyNames(it) {
      return windowNames && classof(it) == "Window" ? getWindowNames(it) : $getOwnPropertyNames(toIndexedObject(it));
    };
  }
});

// ../../node_modules/core-js/internals/define-built-in-accessor.js
var require_define_built_in_accessor = __commonJS({
  "../../node_modules/core-js/internals/define-built-in-accessor.js"(exports2, module2) {
    var makeBuiltIn = require_make_built_in();
    var defineProperty = require_object_define_property();
    module2.exports = function(target, name3, descriptor) {
      if (descriptor.get) makeBuiltIn(descriptor.get, name3, { getter: true });
      if (descriptor.set) makeBuiltIn(descriptor.set, name3, { setter: true });
      return defineProperty.f(target, name3, descriptor);
    };
  }
});

// ../../node_modules/core-js/internals/well-known-symbol-wrapped.js
var require_well_known_symbol_wrapped = __commonJS({
  "../../node_modules/core-js/internals/well-known-symbol-wrapped.js"(exports2) {
    var wellKnownSymbol = require_well_known_symbol();
    exports2.f = wellKnownSymbol;
  }
});

// ../../node_modules/core-js/internals/path.js
var require_path = __commonJS({
  "../../node_modules/core-js/internals/path.js"(exports2, module2) {
    var global2 = require_global();
    module2.exports = global2;
  }
});

// ../../node_modules/core-js/internals/well-known-symbol-define.js
var require_well_known_symbol_define = __commonJS({
  "../../node_modules/core-js/internals/well-known-symbol-define.js"(exports2, module2) {
    var path45 = require_path();
    var hasOwn = require_has_own_property();
    var wrappedWellKnownSymbolModule = require_well_known_symbol_wrapped();
    var defineProperty = require_object_define_property().f;
    module2.exports = function(NAME2) {
      var Symbol2 = path45.Symbol || (path45.Symbol = {});
      if (!hasOwn(Symbol2, NAME2)) defineProperty(Symbol2, NAME2, {
        value: wrappedWellKnownSymbolModule.f(NAME2)
      });
    };
  }
});

// ../../node_modules/core-js/internals/symbol-define-to-primitive.js
var require_symbol_define_to_primitive = __commonJS({
  "../../node_modules/core-js/internals/symbol-define-to-primitive.js"(exports2, module2) {
    var call = require_function_call();
    var getBuiltIn = require_get_built_in();
    var wellKnownSymbol = require_well_known_symbol();
    var defineBuiltIn = require_define_built_in();
    module2.exports = function() {
      var Symbol2 = getBuiltIn("Symbol");
      var SymbolPrototype = Symbol2 && Symbol2.prototype;
      var valueOf = SymbolPrototype && SymbolPrototype.valueOf;
      var TO_PRIMITIVE = wellKnownSymbol("toPrimitive");
      if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {
        defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function(hint) {
          return call(valueOf, this);
        }, { arity: 1 });
      }
    };
  }
});

// ../../node_modules/core-js/internals/set-to-string-tag.js
var require_set_to_string_tag = __commonJS({
  "../../node_modules/core-js/internals/set-to-string-tag.js"(exports2, module2) {
    var defineProperty = require_object_define_property().f;
    var hasOwn = require_has_own_property();
    var wellKnownSymbol = require_well_known_symbol();
    var TO_STRING_TAG = wellKnownSymbol("toStringTag");
    module2.exports = function(target, TAG, STATIC) {
      if (target && !STATIC) target = target.prototype;
      if (target && !hasOwn(target, TO_STRING_TAG)) {
        defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });
      }
    };
  }
});

// ../../node_modules/core-js/internals/function-uncurry-this-clause.js
var require_function_uncurry_this_clause = __commonJS({
  "../../node_modules/core-js/internals/function-uncurry-this-clause.js"(exports2, module2) {
    var classofRaw = require_classof_raw();
    var uncurryThis = require_function_uncurry_this();
    module2.exports = function(fn) {
      if (classofRaw(fn) === "Function") return uncurryThis(fn);
    };
  }
});

// ../../node_modules/core-js/internals/function-bind-context.js
var require_function_bind_context = __commonJS({
  "../../node_modules/core-js/internals/function-bind-context.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this_clause();
    var aCallable = require_a_callable();
    var NATIVE_BIND = require_function_bind_native();
    var bind = uncurryThis(uncurryThis.bind);
    module2.exports = function(fn, that) {
      aCallable(fn);
      return that === void 0 ? fn : NATIVE_BIND ? bind(fn, that) : function() {
        return fn.apply(that, arguments);
      };
    };
  }
});

// ../../node_modules/core-js/internals/is-array.js
var require_is_array = __commonJS({
  "../../node_modules/core-js/internals/is-array.js"(exports2, module2) {
    var classof = require_classof_raw();
    module2.exports = Array.isArray || function isArray2(argument2) {
      return classof(argument2) == "Array";
    };
  }
});

// ../../node_modules/core-js/internals/is-constructor.js
var require_is_constructor = __commonJS({
  "../../node_modules/core-js/internals/is-constructor.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var fails = require_fails();
    var isCallable = require_is_callable();
    var classof = require_classof();
    var getBuiltIn = require_get_built_in();
    var inspectSource = require_inspect_source();
    var noop5 = function() {
    };
    var empty4 = [];
    var construct = getBuiltIn("Reflect", "construct");
    var constructorRegExp = /^\s*(?:class|function)\b/;
    var exec3 = uncurryThis(constructorRegExp.exec);
    var INCORRECT_TO_STRING = !constructorRegExp.exec(noop5);
    var isConstructorModern = function isConstructor(argument2) {
      if (!isCallable(argument2)) return false;
      try {
        construct(noop5, empty4, argument2);
        return true;
      } catch (error) {
        return false;
      }
    };
    var isConstructorLegacy = function isConstructor(argument2) {
      if (!isCallable(argument2)) return false;
      switch (classof(argument2)) {
        case "AsyncFunction":
        case "GeneratorFunction":
        case "AsyncGeneratorFunction":
          return false;
      }
      try {
        return INCORRECT_TO_STRING || !!exec3(constructorRegExp, inspectSource(argument2));
      } catch (error) {
        return true;
      }
    };
    isConstructorLegacy.sham = true;
    module2.exports = !construct || fails(function() {
      var called;
      return isConstructorModern(isConstructorModern.call) || !isConstructorModern(Object) || !isConstructorModern(function() {
        called = true;
      }) || called;
    }) ? isConstructorLegacy : isConstructorModern;
  }
});

// ../../node_modules/core-js/internals/array-species-constructor.js
var require_array_species_constructor = __commonJS({
  "../../node_modules/core-js/internals/array-species-constructor.js"(exports2, module2) {
    var isArray2 = require_is_array();
    var isConstructor = require_is_constructor();
    var isObject2 = require_is_object();
    var wellKnownSymbol = require_well_known_symbol();
    var SPECIES = wellKnownSymbol("species");
    var $Array = Array;
    module2.exports = function(originalArray) {
      var C;
      if (isArray2(originalArray)) {
        C = originalArray.constructor;
        if (isConstructor(C) && (C === $Array || isArray2(C.prototype))) C = void 0;
        else if (isObject2(C)) {
          C = C[SPECIES];
          if (C === null) C = void 0;
        }
      }
      return C === void 0 ? $Array : C;
    };
  }
});

// ../../node_modules/core-js/internals/array-species-create.js
var require_array_species_create = __commonJS({
  "../../node_modules/core-js/internals/array-species-create.js"(exports2, module2) {
    var arraySpeciesConstructor = require_array_species_constructor();
    module2.exports = function(originalArray, length) {
      return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);
    };
  }
});

// ../../node_modules/core-js/internals/array-iteration.js
var require_array_iteration = __commonJS({
  "../../node_modules/core-js/internals/array-iteration.js"(exports2, module2) {
    var bind = require_function_bind_context();
    var uncurryThis = require_function_uncurry_this();
    var IndexedObject = require_indexed_object();
    var toObject = require_to_object();
    var lengthOfArrayLike = require_length_of_array_like();
    var arraySpeciesCreate = require_array_species_create();
    var push = uncurryThis([].push);
    var createMethod = function(TYPE2) {
      var IS_MAP = TYPE2 == 1;
      var IS_FILTER = TYPE2 == 2;
      var IS_SOME = TYPE2 == 3;
      var IS_EVERY = TYPE2 == 4;
      var IS_FIND_INDEX = TYPE2 == 6;
      var IS_FILTER_REJECT = TYPE2 == 7;
      var NO_HOLES = TYPE2 == 5 || IS_FIND_INDEX;
      return function($this, callbackfn, that, specificCreate) {
        var O = toObject($this);
        var self2 = IndexedObject(O);
        var boundFunction = bind(callbackfn, that);
        var length = lengthOfArrayLike(self2);
        var index4 = 0;
        var create3 = specificCreate || arraySpeciesCreate;
        var target = IS_MAP ? create3($this, length) : IS_FILTER || IS_FILTER_REJECT ? create3($this, 0) : void 0;
        var value, result;
        for (; length > index4; index4++) if (NO_HOLES || index4 in self2) {
          value = self2[index4];
          result = boundFunction(value, index4, O);
          if (TYPE2) {
            if (IS_MAP) target[index4] = result;
            else if (result) switch (TYPE2) {
              case 3:
                return true;
              // some
              case 5:
                return value;
              // find
              case 6:
                return index4;
              // findIndex
              case 2:
                push(target, value);
            }
            else switch (TYPE2) {
              case 4:
                return false;
              // every
              case 7:
                push(target, value);
            }
          }
        }
        return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
      };
    };
    module2.exports = {
      // `Array.prototype.forEach` method
      // https://tc39.es/ecma262/#sec-array.prototype.foreach
      forEach: createMethod(0),
      // `Array.prototype.map` method
      // https://tc39.es/ecma262/#sec-array.prototype.map
      map: createMethod(1),
      // `Array.prototype.filter` method
      // https://tc39.es/ecma262/#sec-array.prototype.filter
      filter: createMethod(2),
      // `Array.prototype.some` method
      // https://tc39.es/ecma262/#sec-array.prototype.some
      some: createMethod(3),
      // `Array.prototype.every` method
      // https://tc39.es/ecma262/#sec-array.prototype.every
      every: createMethod(4),
      // `Array.prototype.find` method
      // https://tc39.es/ecma262/#sec-array.prototype.find
      find: createMethod(5),
      // `Array.prototype.findIndex` method
      // https://tc39.es/ecma262/#sec-array.prototype.findIndex
      findIndex: createMethod(6),
      // `Array.prototype.filterReject` method
      // https://github.com/tc39/proposal-array-filtering
      filterReject: createMethod(7)
    };
  }
});

// ../../node_modules/core-js/modules/es.symbol.constructor.js
var require_es_symbol_constructor = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.constructor.js"() {
    "use strict";
    var $2 = require_export();
    var global2 = require_global();
    var call = require_function_call();
    var uncurryThis = require_function_uncurry_this();
    var IS_PURE = require_is_pure();
    var DESCRIPTORS = require_descriptors();
    var NATIVE_SYMBOL = require_symbol_constructor_detection();
    var fails = require_fails();
    var hasOwn = require_has_own_property();
    var isPrototypeOf = require_object_is_prototype_of();
    var anObject = require_an_object();
    var toIndexedObject = require_to_indexed_object();
    var toPropertyKey = require_to_property_key();
    var $toString = require_to_string();
    var createPropertyDescriptor = require_create_property_descriptor();
    var nativeObjectCreate = require_object_create();
    var objectKeys = require_object_keys();
    var getOwnPropertyNamesModule = require_object_get_own_property_names();
    var getOwnPropertyNamesExternal = require_object_get_own_property_names_external();
    var getOwnPropertySymbolsModule = require_object_get_own_property_symbols();
    var getOwnPropertyDescriptorModule = require_object_get_own_property_descriptor();
    var definePropertyModule = require_object_define_property();
    var definePropertiesModule = require_object_define_properties();
    var propertyIsEnumerableModule = require_object_property_is_enumerable();
    var defineBuiltIn = require_define_built_in();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var shared = require_shared();
    var sharedKey = require_shared_key();
    var hiddenKeys = require_hidden_keys();
    var uid = require_uid();
    var wellKnownSymbol = require_well_known_symbol();
    var wrappedWellKnownSymbolModule = require_well_known_symbol_wrapped();
    var defineWellKnownSymbol = require_well_known_symbol_define();
    var defineSymbolToPrimitive = require_symbol_define_to_primitive();
    var setToStringTag = require_set_to_string_tag();
    var InternalStateModule = require_internal_state();
    var $forEach = require_array_iteration().forEach;
    var HIDDEN = sharedKey("hidden");
    var SYMBOL = "Symbol";
    var PROTOTYPE = "prototype";
    var setInternalState = InternalStateModule.set;
    var getInternalState = InternalStateModule.getterFor(SYMBOL);
    var ObjectPrototype = Object[PROTOTYPE];
    var $Symbol = global2.Symbol;
    var SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];
    var TypeError2 = global2.TypeError;
    var QObject = global2.QObject;
    var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
    var nativeDefineProperty = definePropertyModule.f;
    var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;
    var nativePropertyIsEnumerable = propertyIsEnumerableModule.f;
    var push = uncurryThis([].push);
    var AllSymbols = shared("symbols");
    var ObjectPrototypeSymbols = shared("op-symbols");
    var WellKnownSymbolsStore = shared("wks");
    var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
    var setSymbolDescriptor = DESCRIPTORS && fails(function() {
      return nativeObjectCreate(nativeDefineProperty({}, "a", {
        get: function() {
          return nativeDefineProperty(this, "a", { value: 7 }).a;
        }
      })).a != 7;
    }) ? function(O, P, Attributes) {
      var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);
      if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];
      nativeDefineProperty(O, P, Attributes);
      if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {
        nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);
      }
    } : nativeDefineProperty;
    var wrap4 = function(tag, description) {
      var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);
      setInternalState(symbol, {
        type: SYMBOL,
        tag,
        description
      });
      if (!DESCRIPTORS) symbol.description = description;
      return symbol;
    };
    var $defineProperty = function defineProperty(O, P, Attributes) {
      if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);
      anObject(O);
      var key2 = toPropertyKey(P);
      anObject(Attributes);
      if (hasOwn(AllSymbols, key2)) {
        if (!Attributes.enumerable) {
          if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));
          O[HIDDEN][key2] = true;
        } else {
          if (hasOwn(O, HIDDEN) && O[HIDDEN][key2]) O[HIDDEN][key2] = false;
          Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });
        }
        return setSymbolDescriptor(O, key2, Attributes);
      }
      return nativeDefineProperty(O, key2, Attributes);
    };
    var $defineProperties = function defineProperties(O, Properties) {
      anObject(O);
      var properties = toIndexedObject(Properties);
      var keys2 = objectKeys(properties).concat($getOwnPropertySymbols(properties));
      $forEach(keys2, function(key2) {
        if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key2)) $defineProperty(O, key2, properties[key2]);
      });
      return O;
    };
    var $create = function create3(O, Properties) {
      return Properties === void 0 ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);
    };
    var $propertyIsEnumerable = function propertyIsEnumerable(V) {
      var P = toPropertyKey(V);
      var enumerable = call(nativePropertyIsEnumerable, this, P);
      if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;
      return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;
    };
    var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {
      var it = toIndexedObject(O);
      var key2 = toPropertyKey(P);
      if (it === ObjectPrototype && hasOwn(AllSymbols, key2) && !hasOwn(ObjectPrototypeSymbols, key2)) return;
      var descriptor = nativeGetOwnPropertyDescriptor(it, key2);
      if (descriptor && hasOwn(AllSymbols, key2) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key2])) {
        descriptor.enumerable = true;
      }
      return descriptor;
    };
    var $getOwnPropertyNames = function getOwnPropertyNames(O) {
      var names = nativeGetOwnPropertyNames(toIndexedObject(O));
      var result = [];
      $forEach(names, function(key2) {
        if (!hasOwn(AllSymbols, key2) && !hasOwn(hiddenKeys, key2)) push(result, key2);
      });
      return result;
    };
    var $getOwnPropertySymbols = function(O) {
      var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;
      var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));
      var result = [];
      $forEach(names, function(key2) {
        if (hasOwn(AllSymbols, key2) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key2))) {
          push(result, AllSymbols[key2]);
        }
      });
      return result;
    };
    if (!NATIVE_SYMBOL) {
      $Symbol = function Symbol2() {
        if (isPrototypeOf(SymbolPrototype, this)) throw TypeError2("Symbol is not a constructor");
        var description = !arguments.length || arguments[0] === void 0 ? void 0 : $toString(arguments[0]);
        var tag = uid(description);
        var setter = function(value) {
          if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);
          if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
          setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));
        };
        if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });
        return wrap4(tag, description);
      };
      SymbolPrototype = $Symbol[PROTOTYPE];
      defineBuiltIn(SymbolPrototype, "toString", function toString6() {
        return getInternalState(this).tag;
      });
      defineBuiltIn($Symbol, "withoutSetter", function(description) {
        return wrap4(uid(description), description);
      });
      propertyIsEnumerableModule.f = $propertyIsEnumerable;
      definePropertyModule.f = $defineProperty;
      definePropertiesModule.f = $defineProperties;
      getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;
      getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;
      getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;
      wrappedWellKnownSymbolModule.f = function(name3) {
        return wrap4(wellKnownSymbol(name3), name3);
      };
      if (DESCRIPTORS) {
        defineBuiltInAccessor(SymbolPrototype, "description", {
          configurable: true,
          get: function description() {
            return getInternalState(this).description;
          }
        });
        if (!IS_PURE) {
          defineBuiltIn(ObjectPrototype, "propertyIsEnumerable", $propertyIsEnumerable, { unsafe: true });
        }
      }
    }
    $2({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {
      Symbol: $Symbol
    });
    $forEach(objectKeys(WellKnownSymbolsStore), function(name3) {
      defineWellKnownSymbol(name3);
    });
    $2({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {
      useSetter: function() {
        USE_SETTER = true;
      },
      useSimple: function() {
        USE_SETTER = false;
      }
    });
    $2({ target: "Object", stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {
      // `Object.create` method
      // https://tc39.es/ecma262/#sec-object.create
      create: $create,
      // `Object.defineProperty` method
      // https://tc39.es/ecma262/#sec-object.defineproperty
      defineProperty: $defineProperty,
      // `Object.defineProperties` method
      // https://tc39.es/ecma262/#sec-object.defineproperties
      defineProperties: $defineProperties,
      // `Object.getOwnPropertyDescriptor` method
      // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors
      getOwnPropertyDescriptor: $getOwnPropertyDescriptor
    });
    $2({ target: "Object", stat: true, forced: !NATIVE_SYMBOL }, {
      // `Object.getOwnPropertyNames` method
      // https://tc39.es/ecma262/#sec-object.getownpropertynames
      getOwnPropertyNames: $getOwnPropertyNames
    });
    defineSymbolToPrimitive();
    setToStringTag($Symbol, SYMBOL);
    hiddenKeys[HIDDEN] = true;
  }
});

// ../../node_modules/core-js/internals/symbol-registry-detection.js
var require_symbol_registry_detection = __commonJS({
  "../../node_modules/core-js/internals/symbol-registry-detection.js"(exports2, module2) {
    var NATIVE_SYMBOL = require_symbol_constructor_detection();
    module2.exports = NATIVE_SYMBOL && !!Symbol["for"] && !!Symbol.keyFor;
  }
});

// ../../node_modules/core-js/modules/es.symbol.for.js
var require_es_symbol_for = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.for.js"() {
    var $2 = require_export();
    var getBuiltIn = require_get_built_in();
    var hasOwn = require_has_own_property();
    var toString6 = require_to_string();
    var shared = require_shared();
    var NATIVE_SYMBOL_REGISTRY = require_symbol_registry_detection();
    var StringToSymbolRegistry = shared("string-to-symbol-registry");
    var SymbolToStringRegistry = shared("symbol-to-string-registry");
    $2({ target: "Symbol", stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {
      "for": function(key2) {
        var string2 = toString6(key2);
        if (hasOwn(StringToSymbolRegistry, string2)) return StringToSymbolRegistry[string2];
        var symbol = getBuiltIn("Symbol")(string2);
        StringToSymbolRegistry[string2] = symbol;
        SymbolToStringRegistry[symbol] = string2;
        return symbol;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.symbol.key-for.js
var require_es_symbol_key_for = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.key-for.js"() {
    var $2 = require_export();
    var hasOwn = require_has_own_property();
    var isSymbol = require_is_symbol();
    var tryToString = require_try_to_string();
    var shared = require_shared();
    var NATIVE_SYMBOL_REGISTRY = require_symbol_registry_detection();
    var SymbolToStringRegistry = shared("symbol-to-string-registry");
    $2({ target: "Symbol", stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {
      keyFor: function keyFor(sym) {
        if (!isSymbol(sym)) throw TypeError(tryToString(sym) + " is not a symbol");
        if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];
      }
    });
  }
});

// ../../node_modules/core-js/internals/function-apply.js
var require_function_apply = __commonJS({
  "../../node_modules/core-js/internals/function-apply.js"(exports2, module2) {
    var NATIVE_BIND = require_function_bind_native();
    var FunctionPrototype = Function.prototype;
    var apply = FunctionPrototype.apply;
    var call = FunctionPrototype.call;
    module2.exports = typeof Reflect == "object" && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function() {
      return call.apply(apply, arguments);
    });
  }
});

// ../../node_modules/core-js/internals/array-slice.js
var require_array_slice = __commonJS({
  "../../node_modules/core-js/internals/array-slice.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    module2.exports = uncurryThis([].slice);
  }
});

// ../../node_modules/core-js/internals/get-json-replacer-function.js
var require_get_json_replacer_function = __commonJS({
  "../../node_modules/core-js/internals/get-json-replacer-function.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var isArray2 = require_is_array();
    var isCallable = require_is_callable();
    var classof = require_classof_raw();
    var toString6 = require_to_string();
    var push = uncurryThis([].push);
    module2.exports = function(replacer) {
      if (isCallable(replacer)) return replacer;
      if (!isArray2(replacer)) return;
      var rawLength = replacer.length;
      var keys2 = [];
      for (var i2 = 0; i2 < rawLength; i2++) {
        var element5 = replacer[i2];
        if (typeof element5 == "string") push(keys2, element5);
        else if (typeof element5 == "number" || classof(element5) == "Number" || classof(element5) == "String") push(keys2, toString6(element5));
      }
      var keysLength = keys2.length;
      var root6 = true;
      return function(key2, value) {
        if (root6) {
          root6 = false;
          return value;
        }
        if (isArray2(this)) return value;
        for (var j = 0; j < keysLength; j++) if (keys2[j] === key2) return value;
      };
    };
  }
});

// ../../node_modules/core-js/modules/es.json.stringify.js
var require_es_json_stringify = __commonJS({
  "../../node_modules/core-js/modules/es.json.stringify.js"() {
    var $2 = require_export();
    var getBuiltIn = require_get_built_in();
    var apply = require_function_apply();
    var call = require_function_call();
    var uncurryThis = require_function_uncurry_this();
    var fails = require_fails();
    var isCallable = require_is_callable();
    var isSymbol = require_is_symbol();
    var arraySlice = require_array_slice();
    var getReplacerFunction = require_get_json_replacer_function();
    var NATIVE_SYMBOL = require_symbol_constructor_detection();
    var $String = String;
    var $stringify = getBuiltIn("JSON", "stringify");
    var exec3 = uncurryThis(/./.exec);
    var charAt = uncurryThis("".charAt);
    var charCodeAt = uncurryThis("".charCodeAt);
    var replace = uncurryThis("".replace);
    var numberToString = uncurryThis(1 .toString);
    var tester = /[\uD800-\uDFFF]/g;
    var low = /^[\uD800-\uDBFF]$/;
    var hi = /^[\uDC00-\uDFFF]$/;
    var WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function() {
      var symbol = getBuiltIn("Symbol")();
      return $stringify([symbol]) != "[null]" || $stringify({ a: symbol }) != "{}" || $stringify(Object(symbol)) != "{}";
    });
    var ILL_FORMED_UNICODE = fails(function() {
      return $stringify("\uDF06\uD834") !== '"\\udf06\\ud834"' || $stringify("\uDEAD") !== '"\\udead"';
    });
    var stringifyWithSymbolsFix = function(it, replacer) {
      var args = arraySlice(arguments);
      var $replacer = getReplacerFunction(replacer);
      if (!isCallable($replacer) && (it === void 0 || isSymbol(it))) return;
      args[1] = function(key2, value) {
        if (isCallable($replacer)) value = call($replacer, this, $String(key2), value);
        if (!isSymbol(value)) return value;
      };
      return apply($stringify, null, args);
    };
    var fixIllFormed = function(match3, offset, string2) {
      var prev = charAt(string2, offset - 1);
      var next = charAt(string2, offset + 1);
      if (exec3(low, match3) && !exec3(hi, next) || exec3(hi, match3) && !exec3(low, prev)) {
        return "\\u" + numberToString(charCodeAt(match3, 0), 16);
      }
      return match3;
    };
    if ($stringify) {
      $2({ target: "JSON", stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {
        // eslint-disable-next-line no-unused-vars -- required for `.length`
        stringify: function stringify4(it, replacer, space3) {
          var args = arraySlice(arguments);
          var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);
          return ILL_FORMED_UNICODE && typeof result == "string" ? replace(result, tester, fixIllFormed) : result;
        }
      });
    }
  }
});

// ../../node_modules/core-js/modules/es.object.get-own-property-symbols.js
var require_es_object_get_own_property_symbols = __commonJS({
  "../../node_modules/core-js/modules/es.object.get-own-property-symbols.js"() {
    var $2 = require_export();
    var NATIVE_SYMBOL = require_symbol_constructor_detection();
    var fails = require_fails();
    var getOwnPropertySymbolsModule = require_object_get_own_property_symbols();
    var toObject = require_to_object();
    var FORCED = !NATIVE_SYMBOL || fails(function() {
      getOwnPropertySymbolsModule.f(1);
    });
    $2({ target: "Object", stat: true, forced: FORCED }, {
      getOwnPropertySymbols: function getOwnPropertySymbols(it) {
        var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
        return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.symbol.js
var require_es_symbol = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.js"() {
    require_es_symbol_constructor();
    require_es_symbol_for();
    require_es_symbol_key_for();
    require_es_json_stringify();
    require_es_object_get_own_property_symbols();
  }
});

// ../../node_modules/core-js/modules/es.symbol.description.js
var require_es_symbol_description = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.description.js"() {
    "use strict";
    var $2 = require_export();
    var DESCRIPTORS = require_descriptors();
    var global2 = require_global();
    var uncurryThis = require_function_uncurry_this();
    var hasOwn = require_has_own_property();
    var isCallable = require_is_callable();
    var isPrototypeOf = require_object_is_prototype_of();
    var toString6 = require_to_string();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var copyConstructorProperties = require_copy_constructor_properties();
    var NativeSymbol = global2.Symbol;
    var SymbolPrototype = NativeSymbol && NativeSymbol.prototype;
    if (DESCRIPTORS && isCallable(NativeSymbol) && (!("description" in SymbolPrototype) || // Safari 12 bug
    NativeSymbol().description !== void 0)) {
      EmptyStringDescriptionStore = {};
      SymbolWrapper = function Symbol2() {
        var description = arguments.length < 1 || arguments[0] === void 0 ? void 0 : toString6(arguments[0]);
        var result = isPrototypeOf(SymbolPrototype, this) ? new NativeSymbol(description) : description === void 0 ? NativeSymbol() : NativeSymbol(description);
        if (description === "") EmptyStringDescriptionStore[result] = true;
        return result;
      };
      copyConstructorProperties(SymbolWrapper, NativeSymbol);
      SymbolWrapper.prototype = SymbolPrototype;
      SymbolPrototype.constructor = SymbolWrapper;
      NATIVE_SYMBOL = String(NativeSymbol("test")) == "Symbol(test)";
      thisSymbolValue = uncurryThis(SymbolPrototype.valueOf);
      symbolDescriptiveString = uncurryThis(SymbolPrototype.toString);
      regexp = /^Symbol\((.*)\)[^)]+$/;
      replace = uncurryThis("".replace);
      stringSlice = uncurryThis("".slice);
      defineBuiltInAccessor(SymbolPrototype, "description", {
        configurable: true,
        get: function description() {
          var symbol = thisSymbolValue(this);
          if (hasOwn(EmptyStringDescriptionStore, symbol)) return "";
          var string2 = symbolDescriptiveString(symbol);
          var desc = NATIVE_SYMBOL ? stringSlice(string2, 7, -1) : replace(string2, regexp, "$1");
          return desc === "" ? void 0 : desc;
        }
      });
      $2({ global: true, constructor: true, forced: true }, {
        Symbol: SymbolWrapper
      });
    }
    var EmptyStringDescriptionStore;
    var SymbolWrapper;
    var NATIVE_SYMBOL;
    var thisSymbolValue;
    var symbolDescriptiveString;
    var regexp;
    var replace;
    var stringSlice;
  }
});

// ../../node_modules/core-js/modules/es.symbol.async-iterator.js
var require_es_symbol_async_iterator = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.async-iterator.js"() {
    var defineWellKnownSymbol = require_well_known_symbol_define();
    defineWellKnownSymbol("asyncIterator");
  }
});

// ../../node_modules/core-js/modules/es.symbol.has-instance.js
var require_es_symbol_has_instance = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.has-instance.js"() {
    var defineWellKnownSymbol = require_well_known_symbol_define();
    defineWellKnownSymbol("hasInstance");
  }
});

// ../../node_modules/core-js/modules/es.symbol.is-concat-spreadable.js
var require_es_symbol_is_concat_spreadable = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.is-concat-spreadable.js"() {
    var defineWellKnownSymbol = require_well_known_symbol_define();
    defineWellKnownSymbol("isConcatSpreadable");
  }
});

// ../../node_modules/core-js/modules/es.symbol.iterator.js
var require_es_symbol_iterator = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.iterator.js"() {
    var defineWellKnownSymbol = require_well_known_symbol_define();
    defineWellKnownSymbol("iterator");
  }
});

// ../../node_modules/core-js/modules/es.symbol.match.js
var require_es_symbol_match = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.match.js"() {
    var defineWellKnownSymbol = require_well_known_symbol_define();
    defineWellKnownSymbol("match");
  }
});

// ../../node_modules/core-js/modules/es.symbol.match-all.js
var require_es_symbol_match_all = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.match-all.js"() {
    var defineWellKnownSymbol = require_well_known_symbol_define();
    defineWellKnownSymbol("matchAll");
  }
});

// ../../node_modules/core-js/modules/es.symbol.replace.js
var require_es_symbol_replace = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.replace.js"() {
    var defineWellKnownSymbol = require_well_known_symbol_define();
    defineWellKnownSymbol("replace");
  }
});

// ../../node_modules/core-js/modules/es.symbol.search.js
var require_es_symbol_search = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.search.js"() {
    var defineWellKnownSymbol = require_well_known_symbol_define();
    defineWellKnownSymbol("search");
  }
});

// ../../node_modules/core-js/modules/es.symbol.species.js
var require_es_symbol_species = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.species.js"() {
    var defineWellKnownSymbol = require_well_known_symbol_define();
    defineWellKnownSymbol("species");
  }
});

// ../../node_modules/core-js/modules/es.symbol.split.js
var require_es_symbol_split = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.split.js"() {
    var defineWellKnownSymbol = require_well_known_symbol_define();
    defineWellKnownSymbol("split");
  }
});

// ../../node_modules/core-js/modules/es.symbol.to-primitive.js
var require_es_symbol_to_primitive = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.to-primitive.js"() {
    var defineWellKnownSymbol = require_well_known_symbol_define();
    var defineSymbolToPrimitive = require_symbol_define_to_primitive();
    defineWellKnownSymbol("toPrimitive");
    defineSymbolToPrimitive();
  }
});

// ../../node_modules/core-js/modules/es.symbol.to-string-tag.js
var require_es_symbol_to_string_tag = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.to-string-tag.js"() {
    var getBuiltIn = require_get_built_in();
    var defineWellKnownSymbol = require_well_known_symbol_define();
    var setToStringTag = require_set_to_string_tag();
    defineWellKnownSymbol("toStringTag");
    setToStringTag(getBuiltIn("Symbol"), "Symbol");
  }
});

// ../../node_modules/core-js/modules/es.symbol.unscopables.js
var require_es_symbol_unscopables = __commonJS({
  "../../node_modules/core-js/modules/es.symbol.unscopables.js"() {
    var defineWellKnownSymbol = require_well_known_symbol_define();
    defineWellKnownSymbol("unscopables");
  }
});

// ../../node_modules/core-js/internals/function-uncurry-this-accessor.js
var require_function_uncurry_this_accessor = __commonJS({
  "../../node_modules/core-js/internals/function-uncurry-this-accessor.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var aCallable = require_a_callable();
    module2.exports = function(object, key2, method) {
      try {
        return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key2)[method]));
      } catch (error) {
      }
    };
  }
});

// ../../node_modules/core-js/internals/a-possible-prototype.js
var require_a_possible_prototype = __commonJS({
  "../../node_modules/core-js/internals/a-possible-prototype.js"(exports2, module2) {
    var isCallable = require_is_callable();
    var $String = String;
    var $TypeError = TypeError;
    module2.exports = function(argument2) {
      if (typeof argument2 == "object" || isCallable(argument2)) return argument2;
      throw $TypeError("Can't set " + $String(argument2) + " as a prototype");
    };
  }
});

// ../../node_modules/core-js/internals/object-set-prototype-of.js
var require_object_set_prototype_of = __commonJS({
  "../../node_modules/core-js/internals/object-set-prototype-of.js"(exports2, module2) {
    var uncurryThisAccessor = require_function_uncurry_this_accessor();
    var anObject = require_an_object();
    var aPossiblePrototype = require_a_possible_prototype();
    module2.exports = Object.setPrototypeOf || ("__proto__" in {} ? (function() {
      var CORRECT_SETTER = false;
      var test2 = {};
      var setter;
      try {
        setter = uncurryThisAccessor(Object.prototype, "__proto__", "set");
        setter(test2, []);
        CORRECT_SETTER = test2 instanceof Array;
      } catch (error) {
      }
      return function setPrototypeOf(O, proto9) {
        anObject(O);
        aPossiblePrototype(proto9);
        if (CORRECT_SETTER) setter(O, proto9);
        else O.__proto__ = proto9;
        return O;
      };
    })() : void 0);
  }
});

// ../../node_modules/core-js/internals/proxy-accessor.js
var require_proxy_accessor = __commonJS({
  "../../node_modules/core-js/internals/proxy-accessor.js"(exports2, module2) {
    var defineProperty = require_object_define_property().f;
    module2.exports = function(Target, Source, key2) {
      key2 in Target || defineProperty(Target, key2, {
        configurable: true,
        get: function() {
          return Source[key2];
        },
        set: function(it) {
          Source[key2] = it;
        }
      });
    };
  }
});

// ../../node_modules/core-js/internals/inherit-if-required.js
var require_inherit_if_required = __commonJS({
  "../../node_modules/core-js/internals/inherit-if-required.js"(exports2, module2) {
    var isCallable = require_is_callable();
    var isObject2 = require_is_object();
    var setPrototypeOf = require_object_set_prototype_of();
    module2.exports = function($this, dummy, Wrapper) {
      var NewTarget, NewTargetPrototype;
      if (
        // it can work only with native `setPrototypeOf`
        setPrototypeOf && // we haven't completely correct pre-ES6 way for getting `new.target`, so use this
        isCallable(NewTarget = dummy.constructor) && NewTarget !== Wrapper && isObject2(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype
      ) setPrototypeOf($this, NewTargetPrototype);
      return $this;
    };
  }
});

// ../../node_modules/core-js/internals/normalize-string-argument.js
var require_normalize_string_argument = __commonJS({
  "../../node_modules/core-js/internals/normalize-string-argument.js"(exports2, module2) {
    var toString6 = require_to_string();
    module2.exports = function(argument2, $default) {
      return argument2 === void 0 ? arguments.length < 2 ? "" : $default : toString6(argument2);
    };
  }
});

// ../../node_modules/core-js/internals/install-error-cause.js
var require_install_error_cause = __commonJS({
  "../../node_modules/core-js/internals/install-error-cause.js"(exports2, module2) {
    var isObject2 = require_is_object();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    module2.exports = function(O, options) {
      if (isObject2(options) && "cause" in options) {
        createNonEnumerableProperty(O, "cause", options.cause);
      }
    };
  }
});

// ../../node_modules/core-js/internals/error-stack-clear.js
var require_error_stack_clear = __commonJS({
  "../../node_modules/core-js/internals/error-stack-clear.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var $Error = Error;
    var replace = uncurryThis("".replace);
    var TEST = (function(arg2) {
      return String($Error(arg2).stack);
    })("zxcasd");
    var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/;
    var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);
    module2.exports = function(stack, dropEntries) {
      if (IS_V8_OR_CHAKRA_STACK && typeof stack == "string" && !$Error.prepareStackTrace) {
        while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, "");
      }
      return stack;
    };
  }
});

// ../../node_modules/core-js/internals/error-stack-installable.js
var require_error_stack_installable = __commonJS({
  "../../node_modules/core-js/internals/error-stack-installable.js"(exports2, module2) {
    var fails = require_fails();
    var createPropertyDescriptor = require_create_property_descriptor();
    module2.exports = !fails(function() {
      var error = Error("a");
      if (!("stack" in error)) return true;
      Object.defineProperty(error, "stack", createPropertyDescriptor(1, 7));
      return error.stack !== 7;
    });
  }
});

// ../../node_modules/core-js/internals/error-stack-install.js
var require_error_stack_install = __commonJS({
  "../../node_modules/core-js/internals/error-stack-install.js"(exports2, module2) {
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var clearErrorStack = require_error_stack_clear();
    var ERROR_STACK_INSTALLABLE = require_error_stack_installable();
    var captureStackTrace = Error.captureStackTrace;
    module2.exports = function(error, C, stack, dropEntries) {
      if (ERROR_STACK_INSTALLABLE) {
        if (captureStackTrace) captureStackTrace(error, C);
        else createNonEnumerableProperty(error, "stack", clearErrorStack(stack, dropEntries));
      }
    };
  }
});

// ../../node_modules/core-js/internals/wrap-error-constructor-with-cause.js
var require_wrap_error_constructor_with_cause = __commonJS({
  "../../node_modules/core-js/internals/wrap-error-constructor-with-cause.js"(exports2, module2) {
    "use strict";
    var getBuiltIn = require_get_built_in();
    var hasOwn = require_has_own_property();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var isPrototypeOf = require_object_is_prototype_of();
    var setPrototypeOf = require_object_set_prototype_of();
    var copyConstructorProperties = require_copy_constructor_properties();
    var proxyAccessor = require_proxy_accessor();
    var inheritIfRequired = require_inherit_if_required();
    var normalizeStringArgument = require_normalize_string_argument();
    var installErrorCause = require_install_error_cause();
    var installErrorStack = require_error_stack_install();
    var DESCRIPTORS = require_descriptors();
    var IS_PURE = require_is_pure();
    module2.exports = function(FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {
      var STACK_TRACE_LIMIT = "stackTraceLimit";
      var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;
      var path45 = FULL_NAME.split(".");
      var ERROR_NAME = path45[path45.length - 1];
      var OriginalError = getBuiltIn.apply(null, path45);
      if (!OriginalError) return;
      var OriginalErrorPrototype = OriginalError.prototype;
      if (!IS_PURE && hasOwn(OriginalErrorPrototype, "cause")) delete OriginalErrorPrototype.cause;
      if (!FORCED) return OriginalError;
      var BaseError = getBuiltIn("Error");
      var WrappedError = wrapper(function(a2, b) {
        var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a2, void 0);
        var result = IS_AGGREGATE_ERROR ? new OriginalError(a2) : new OriginalError();
        if (message !== void 0) createNonEnumerableProperty(result, "message", message);
        installErrorStack(result, WrappedError, result.stack, 2);
        if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);
        if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);
        return result;
      });
      WrappedError.prototype = OriginalErrorPrototype;
      if (ERROR_NAME !== "Error") {
        if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);
        else copyConstructorProperties(WrappedError, BaseError, { name: true });
      } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {
        proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);
        proxyAccessor(WrappedError, OriginalError, "prepareStackTrace");
      }
      copyConstructorProperties(WrappedError, OriginalError);
      if (!IS_PURE) try {
        if (OriginalErrorPrototype.name !== ERROR_NAME) {
          createNonEnumerableProperty(OriginalErrorPrototype, "name", ERROR_NAME);
        }
        OriginalErrorPrototype.constructor = WrappedError;
      } catch (error) {
      }
      return WrappedError;
    };
  }
});

// ../../node_modules/core-js/modules/es.error.cause.js
var require_es_error_cause = __commonJS({
  "../../node_modules/core-js/modules/es.error.cause.js"() {
    var $2 = require_export();
    var global2 = require_global();
    var apply = require_function_apply();
    var wrapErrorConstructorWithCause = require_wrap_error_constructor_with_cause();
    var WEB_ASSEMBLY = "WebAssembly";
    var WebAssembly = global2[WEB_ASSEMBLY];
    var FORCED = Error("e", { cause: 7 }).cause !== 7;
    var exportGlobalErrorCauseWrapper = function(ERROR_NAME, wrapper) {
      var O = {};
      O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);
      $2({ global: true, constructor: true, arity: 1, forced: FORCED }, O);
    };
    var exportWebAssemblyErrorCauseWrapper = function(ERROR_NAME, wrapper) {
      if (WebAssembly && WebAssembly[ERROR_NAME]) {
        var O = {};
        O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + "." + ERROR_NAME, wrapper, FORCED);
        $2({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);
      }
    };
    exportGlobalErrorCauseWrapper("Error", function(init4) {
      return function Error2(message) {
        return apply(init4, this, arguments);
      };
    });
    exportGlobalErrorCauseWrapper("EvalError", function(init4) {
      return function EvalError2(message) {
        return apply(init4, this, arguments);
      };
    });
    exportGlobalErrorCauseWrapper("RangeError", function(init4) {
      return function RangeError2(message) {
        return apply(init4, this, arguments);
      };
    });
    exportGlobalErrorCauseWrapper("ReferenceError", function(init4) {
      return function ReferenceError2(message) {
        return apply(init4, this, arguments);
      };
    });
    exportGlobalErrorCauseWrapper("SyntaxError", function(init4) {
      return function SyntaxError2(message) {
        return apply(init4, this, arguments);
      };
    });
    exportGlobalErrorCauseWrapper("TypeError", function(init4) {
      return function TypeError2(message) {
        return apply(init4, this, arguments);
      };
    });
    exportGlobalErrorCauseWrapper("URIError", function(init4) {
      return function URIError2(message) {
        return apply(init4, this, arguments);
      };
    });
    exportWebAssemblyErrorCauseWrapper("CompileError", function(init4) {
      return function CompileError(message) {
        return apply(init4, this, arguments);
      };
    });
    exportWebAssemblyErrorCauseWrapper("LinkError", function(init4) {
      return function LinkError(message) {
        return apply(init4, this, arguments);
      };
    });
    exportWebAssemblyErrorCauseWrapper("RuntimeError", function(init4) {
      return function RuntimeError(message) {
        return apply(init4, this, arguments);
      };
    });
  }
});

// ../../node_modules/core-js/internals/error-to-string.js
var require_error_to_string = __commonJS({
  "../../node_modules/core-js/internals/error-to-string.js"(exports2, module2) {
    "use strict";
    var DESCRIPTORS = require_descriptors();
    var fails = require_fails();
    var anObject = require_an_object();
    var create3 = require_object_create();
    var normalizeStringArgument = require_normalize_string_argument();
    var nativeErrorToString = Error.prototype.toString;
    var INCORRECT_TO_STRING = fails(function() {
      if (DESCRIPTORS) {
        var object = create3(Object.defineProperty({}, "name", { get: function() {
          return this === object;
        } }));
        if (nativeErrorToString.call(object) !== "true") return true;
      }
      return nativeErrorToString.call({ message: 1, name: 2 }) !== "2: 1" || nativeErrorToString.call({}) !== "Error";
    });
    module2.exports = INCORRECT_TO_STRING ? function toString6() {
      var O = anObject(this);
      var name3 = normalizeStringArgument(O.name, "Error");
      var message = normalizeStringArgument(O.message);
      return !name3 ? message : !message ? name3 : name3 + ": " + message;
    } : nativeErrorToString;
  }
});

// ../../node_modules/core-js/modules/es.error.to-string.js
var require_es_error_to_string = __commonJS({
  "../../node_modules/core-js/modules/es.error.to-string.js"() {
    var defineBuiltIn = require_define_built_in();
    var errorToString = require_error_to_string();
    var ErrorPrototype = Error.prototype;
    if (ErrorPrototype.toString !== errorToString) {
      defineBuiltIn(ErrorPrototype, "toString", errorToString);
    }
  }
});

// ../../node_modules/core-js/internals/correct-prototype-getter.js
var require_correct_prototype_getter = __commonJS({
  "../../node_modules/core-js/internals/correct-prototype-getter.js"(exports2, module2) {
    var fails = require_fails();
    module2.exports = !fails(function() {
      function F2() {
      }
      F2.prototype.constructor = null;
      return Object.getPrototypeOf(new F2()) !== F2.prototype;
    });
  }
});

// ../../node_modules/core-js/internals/object-get-prototype-of.js
var require_object_get_prototype_of = __commonJS({
  "../../node_modules/core-js/internals/object-get-prototype-of.js"(exports2, module2) {
    var hasOwn = require_has_own_property();
    var isCallable = require_is_callable();
    var toObject = require_to_object();
    var sharedKey = require_shared_key();
    var CORRECT_PROTOTYPE_GETTER = require_correct_prototype_getter();
    var IE_PROTO = sharedKey("IE_PROTO");
    var $Object = Object;
    var ObjectPrototype = $Object.prototype;
    module2.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function(O) {
      var object = toObject(O);
      if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];
      var constructor = object.constructor;
      if (isCallable(constructor) && object instanceof constructor) {
        return constructor.prototype;
      }
      return object instanceof $Object ? ObjectPrototype : null;
    };
  }
});

// ../../node_modules/core-js/internals/iterators.js
var require_iterators = __commonJS({
  "../../node_modules/core-js/internals/iterators.js"(exports2, module2) {
    module2.exports = {};
  }
});

// ../../node_modules/core-js/internals/is-array-iterator-method.js
var require_is_array_iterator_method = __commonJS({
  "../../node_modules/core-js/internals/is-array-iterator-method.js"(exports2, module2) {
    var wellKnownSymbol = require_well_known_symbol();
    var Iterators = require_iterators();
    var ITERATOR = wellKnownSymbol("iterator");
    var ArrayPrototype = Array.prototype;
    module2.exports = function(it) {
      return it !== void 0 && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);
    };
  }
});

// ../../node_modules/core-js/internals/get-iterator-method.js
var require_get_iterator_method = __commonJS({
  "../../node_modules/core-js/internals/get-iterator-method.js"(exports2, module2) {
    var classof = require_classof();
    var getMethod = require_get_method();
    var isNullOrUndefined = require_is_null_or_undefined();
    var Iterators = require_iterators();
    var wellKnownSymbol = require_well_known_symbol();
    var ITERATOR = wellKnownSymbol("iterator");
    module2.exports = function(it) {
      if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR) || getMethod(it, "@@iterator") || Iterators[classof(it)];
    };
  }
});

// ../../node_modules/core-js/internals/get-iterator.js
var require_get_iterator = __commonJS({
  "../../node_modules/core-js/internals/get-iterator.js"(exports2, module2) {
    var call = require_function_call();
    var aCallable = require_a_callable();
    var anObject = require_an_object();
    var tryToString = require_try_to_string();
    var getIteratorMethod = require_get_iterator_method();
    var $TypeError = TypeError;
    module2.exports = function(argument2, usingIterator) {
      var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument2) : usingIterator;
      if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument2));
      throw $TypeError(tryToString(argument2) + " is not iterable");
    };
  }
});

// ../../node_modules/core-js/internals/iterator-close.js
var require_iterator_close = __commonJS({
  "../../node_modules/core-js/internals/iterator-close.js"(exports2, module2) {
    var call = require_function_call();
    var anObject = require_an_object();
    var getMethod = require_get_method();
    module2.exports = function(iterator, kind, value) {
      var innerResult, innerError;
      anObject(iterator);
      try {
        innerResult = getMethod(iterator, "return");
        if (!innerResult) {
          if (kind === "throw") throw value;
          return value;
        }
        innerResult = call(innerResult, iterator);
      } catch (error) {
        innerError = true;
        innerResult = error;
      }
      if (kind === "throw") throw value;
      if (innerError) throw innerResult;
      anObject(innerResult);
      return value;
    };
  }
});

// ../../node_modules/core-js/internals/iterate.js
var require_iterate = __commonJS({
  "../../node_modules/core-js/internals/iterate.js"(exports2, module2) {
    var bind = require_function_bind_context();
    var call = require_function_call();
    var anObject = require_an_object();
    var tryToString = require_try_to_string();
    var isArrayIteratorMethod = require_is_array_iterator_method();
    var lengthOfArrayLike = require_length_of_array_like();
    var isPrototypeOf = require_object_is_prototype_of();
    var getIterator = require_get_iterator();
    var getIteratorMethod = require_get_iterator_method();
    var iteratorClose = require_iterator_close();
    var $TypeError = TypeError;
    var Result = function(stopped, result) {
      this.stopped = stopped;
      this.result = result;
    };
    var ResultPrototype = Result.prototype;
    module2.exports = function(iterable, unboundFunction, options) {
      var that = options && options.that;
      var AS_ENTRIES = !!(options && options.AS_ENTRIES);
      var IS_RECORD = !!(options && options.IS_RECORD);
      var IS_ITERATOR = !!(options && options.IS_ITERATOR);
      var INTERRUPTED = !!(options && options.INTERRUPTED);
      var fn = bind(unboundFunction, that);
      var iterator, iterFn, index4, length, result, next, step;
      var stop = function(condition) {
        if (iterator) iteratorClose(iterator, "normal", condition);
        return new Result(true, condition);
      };
      var callFn = function(value) {
        if (AS_ENTRIES) {
          anObject(value);
          return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);
        }
        return INTERRUPTED ? fn(value, stop) : fn(value);
      };
      if (IS_RECORD) {
        iterator = iterable.iterator;
      } else if (IS_ITERATOR) {
        iterator = iterable;
      } else {
        iterFn = getIteratorMethod(iterable);
        if (!iterFn) throw $TypeError(tryToString(iterable) + " is not iterable");
        if (isArrayIteratorMethod(iterFn)) {
          for (index4 = 0, length = lengthOfArrayLike(iterable); length > index4; index4++) {
            result = callFn(iterable[index4]);
            if (result && isPrototypeOf(ResultPrototype, result)) return result;
          }
          return new Result(false);
        }
        iterator = getIterator(iterable, iterFn);
      }
      next = IS_RECORD ? iterable.next : iterator.next;
      while (!(step = call(next, iterator)).done) {
        try {
          result = callFn(step.value);
        } catch (error) {
          iteratorClose(iterator, "throw", error);
        }
        if (typeof result == "object" && result && isPrototypeOf(ResultPrototype, result)) return result;
      }
      return new Result(false);
    };
  }
});

// ../../node_modules/core-js/modules/es.aggregate-error.constructor.js
var require_es_aggregate_error_constructor = __commonJS({
  "../../node_modules/core-js/modules/es.aggregate-error.constructor.js"() {
    "use strict";
    var $2 = require_export();
    var isPrototypeOf = require_object_is_prototype_of();
    var getPrototypeOf2 = require_object_get_prototype_of();
    var setPrototypeOf = require_object_set_prototype_of();
    var copyConstructorProperties = require_copy_constructor_properties();
    var create3 = require_object_create();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var createPropertyDescriptor = require_create_property_descriptor();
    var installErrorCause = require_install_error_cause();
    var installErrorStack = require_error_stack_install();
    var iterate2 = require_iterate();
    var normalizeStringArgument = require_normalize_string_argument();
    var wellKnownSymbol = require_well_known_symbol();
    var TO_STRING_TAG = wellKnownSymbol("toStringTag");
    var $Error = Error;
    var push = [].push;
    var $AggregateError = function AggregateError2(errors4, message) {
      var isInstance = isPrototypeOf(AggregateErrorPrototype, this);
      var that;
      if (setPrototypeOf) {
        that = setPrototypeOf($Error(), isInstance ? getPrototypeOf2(this) : AggregateErrorPrototype);
      } else {
        that = isInstance ? this : create3(AggregateErrorPrototype);
        createNonEnumerableProperty(that, TO_STRING_TAG, "Error");
      }
      if (message !== void 0) createNonEnumerableProperty(that, "message", normalizeStringArgument(message));
      installErrorStack(that, $AggregateError, that.stack, 1);
      if (arguments.length > 2) installErrorCause(that, arguments[2]);
      var errorsArray = [];
      iterate2(errors4, push, { that: errorsArray });
      createNonEnumerableProperty(that, "errors", errorsArray);
      return that;
    };
    if (setPrototypeOf) setPrototypeOf($AggregateError, $Error);
    else copyConstructorProperties($AggregateError, $Error, { name: true });
    var AggregateErrorPrototype = $AggregateError.prototype = create3($Error.prototype, {
      constructor: createPropertyDescriptor(1, $AggregateError),
      message: createPropertyDescriptor(1, ""),
      name: createPropertyDescriptor(1, "AggregateError")
    });
    $2({ global: true, constructor: true, arity: 2 }, {
      AggregateError: $AggregateError
    });
  }
});

// ../../node_modules/core-js/modules/es.aggregate-error.js
var require_es_aggregate_error = __commonJS({
  "../../node_modules/core-js/modules/es.aggregate-error.js"() {
    require_es_aggregate_error_constructor();
  }
});

// ../../node_modules/core-js/modules/es.aggregate-error.cause.js
var require_es_aggregate_error_cause = __commonJS({
  "../../node_modules/core-js/modules/es.aggregate-error.cause.js"() {
    var $2 = require_export();
    var getBuiltIn = require_get_built_in();
    var apply = require_function_apply();
    var fails = require_fails();
    var wrapErrorConstructorWithCause = require_wrap_error_constructor_with_cause();
    var AGGREGATE_ERROR = "AggregateError";
    var $AggregateError = getBuiltIn(AGGREGATE_ERROR);
    var FORCED = !fails(function() {
      return $AggregateError([1]).errors[0] !== 1;
    }) && fails(function() {
      return $AggregateError([1], AGGREGATE_ERROR, { cause: 7 }).cause !== 7;
    });
    $2({ global: true, constructor: true, arity: 2, forced: FORCED }, {
      AggregateError: wrapErrorConstructorWithCause(AGGREGATE_ERROR, function(init4) {
        return function AggregateError2(errors4, message) {
          return apply(init4, this, arguments);
        };
      }, FORCED, true)
    });
  }
});

// ../../node_modules/core-js/internals/add-to-unscopables.js
var require_add_to_unscopables = __commonJS({
  "../../node_modules/core-js/internals/add-to-unscopables.js"(exports2, module2) {
    var wellKnownSymbol = require_well_known_symbol();
    var create3 = require_object_create();
    var defineProperty = require_object_define_property().f;
    var UNSCOPABLES = wellKnownSymbol("unscopables");
    var ArrayPrototype = Array.prototype;
    if (ArrayPrototype[UNSCOPABLES] == void 0) {
      defineProperty(ArrayPrototype, UNSCOPABLES, {
        configurable: true,
        value: create3(null)
      });
    }
    module2.exports = function(key2) {
      ArrayPrototype[UNSCOPABLES][key2] = true;
    };
  }
});

// ../../node_modules/core-js/modules/es.array.at.js
var require_es_array_at = __commonJS({
  "../../node_modules/core-js/modules/es.array.at.js"() {
    "use strict";
    var $2 = require_export();
    var toObject = require_to_object();
    var lengthOfArrayLike = require_length_of_array_like();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var addToUnscopables = require_add_to_unscopables();
    $2({ target: "Array", proto: true }, {
      at: function at(index4) {
        var O = toObject(this);
        var len = lengthOfArrayLike(O);
        var relativeIndex = toIntegerOrInfinity(index4);
        var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
        return k < 0 || k >= len ? void 0 : O[k];
      }
    });
    addToUnscopables("at");
  }
});

// ../../node_modules/core-js/internals/does-not-exceed-safe-integer.js
var require_does_not_exceed_safe_integer = __commonJS({
  "../../node_modules/core-js/internals/does-not-exceed-safe-integer.js"(exports2, module2) {
    var $TypeError = TypeError;
    var MAX_SAFE_INTEGER = 9007199254740991;
    module2.exports = function(it) {
      if (it > MAX_SAFE_INTEGER) throw $TypeError("Maximum allowed index exceeded");
      return it;
    };
  }
});

// ../../node_modules/core-js/internals/array-method-has-species-support.js
var require_array_method_has_species_support = __commonJS({
  "../../node_modules/core-js/internals/array-method-has-species-support.js"(exports2, module2) {
    var fails = require_fails();
    var wellKnownSymbol = require_well_known_symbol();
    var V8_VERSION = require_engine_v8_version();
    var SPECIES = wellKnownSymbol("species");
    module2.exports = function(METHOD_NAME) {
      return V8_VERSION >= 51 || !fails(function() {
        var array = [];
        var constructor = array.constructor = {};
        constructor[SPECIES] = function() {
          return { foo: 1 };
        };
        return array[METHOD_NAME](Boolean).foo !== 1;
      });
    };
  }
});

// ../../node_modules/core-js/modules/es.array.concat.js
var require_es_array_concat = __commonJS({
  "../../node_modules/core-js/modules/es.array.concat.js"() {
    "use strict";
    var $2 = require_export();
    var fails = require_fails();
    var isArray2 = require_is_array();
    var isObject2 = require_is_object();
    var toObject = require_to_object();
    var lengthOfArrayLike = require_length_of_array_like();
    var doesNotExceedSafeInteger = require_does_not_exceed_safe_integer();
    var createProperty = require_create_property();
    var arraySpeciesCreate = require_array_species_create();
    var arrayMethodHasSpeciesSupport = require_array_method_has_species_support();
    var wellKnownSymbol = require_well_known_symbol();
    var V8_VERSION = require_engine_v8_version();
    var IS_CONCAT_SPREADABLE = wellKnownSymbol("isConcatSpreadable");
    var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function() {
      var array = [];
      array[IS_CONCAT_SPREADABLE] = false;
      return array.concat()[0] !== array;
    });
    var isConcatSpreadable = function(O) {
      if (!isObject2(O)) return false;
      var spreadable = O[IS_CONCAT_SPREADABLE];
      return spreadable !== void 0 ? !!spreadable : isArray2(O);
    };
    var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport("concat");
    $2({ target: "Array", proto: true, arity: 1, forced: FORCED }, {
      // eslint-disable-next-line no-unused-vars -- required for `.length`
      concat: function concat2(arg2) {
        var O = toObject(this);
        var A2 = arraySpeciesCreate(O, 0);
        var n = 0;
        var i2, k, length, len, E;
        for (i2 = -1, length = arguments.length; i2 < length; i2++) {
          E = i2 === -1 ? O : arguments[i2];
          if (isConcatSpreadable(E)) {
            len = lengthOfArrayLike(E);
            doesNotExceedSafeInteger(n + len);
            for (k = 0; k < len; k++, n++) if (k in E) createProperty(A2, n, E[k]);
          } else {
            doesNotExceedSafeInteger(n + 1);
            createProperty(A2, n++, E);
          }
        }
        A2.length = n;
        return A2;
      }
    });
  }
});

// ../../node_modules/core-js/internals/delete-property-or-throw.js
var require_delete_property_or_throw = __commonJS({
  "../../node_modules/core-js/internals/delete-property-or-throw.js"(exports2, module2) {
    "use strict";
    var tryToString = require_try_to_string();
    var $TypeError = TypeError;
    module2.exports = function(O, P) {
      if (!delete O[P]) throw $TypeError("Cannot delete property " + tryToString(P) + " of " + tryToString(O));
    };
  }
});

// ../../node_modules/core-js/internals/array-copy-within.js
var require_array_copy_within = __commonJS({
  "../../node_modules/core-js/internals/array-copy-within.js"(exports2, module2) {
    "use strict";
    var toObject = require_to_object();
    var toAbsoluteIndex = require_to_absolute_index();
    var lengthOfArrayLike = require_length_of_array_like();
    var deletePropertyOrThrow = require_delete_property_or_throw();
    var min = Math.min;
    module2.exports = [].copyWithin || function copyWithin(target, start) {
      var O = toObject(this);
      var len = lengthOfArrayLike(O);
      var to = toAbsoluteIndex(target, len);
      var from4 = toAbsoluteIndex(start, len);
      var end = arguments.length > 2 ? arguments[2] : void 0;
      var count2 = min((end === void 0 ? len : toAbsoluteIndex(end, len)) - from4, len - to);
      var inc = 1;
      if (from4 < to && to < from4 + count2) {
        inc = -1;
        from4 += count2 - 1;
        to += count2 - 1;
      }
      while (count2-- > 0) {
        if (from4 in O) O[to] = O[from4];
        else deletePropertyOrThrow(O, to);
        to += inc;
        from4 += inc;
      }
      return O;
    };
  }
});

// ../../node_modules/core-js/modules/es.array.copy-within.js
var require_es_array_copy_within = __commonJS({
  "../../node_modules/core-js/modules/es.array.copy-within.js"() {
    var $2 = require_export();
    var copyWithin = require_array_copy_within();
    var addToUnscopables = require_add_to_unscopables();
    $2({ target: "Array", proto: true }, {
      copyWithin
    });
    addToUnscopables("copyWithin");
  }
});

// ../../node_modules/core-js/internals/array-method-is-strict.js
var require_array_method_is_strict = __commonJS({
  "../../node_modules/core-js/internals/array-method-is-strict.js"(exports2, module2) {
    "use strict";
    var fails = require_fails();
    module2.exports = function(METHOD_NAME, argument2) {
      var method = [][METHOD_NAME];
      return !!method && fails(function() {
        method.call(null, argument2 || function() {
          return 1;
        }, 1);
      });
    };
  }
});

// ../../node_modules/core-js/modules/es.array.every.js
var require_es_array_every = __commonJS({
  "../../node_modules/core-js/modules/es.array.every.js"() {
    "use strict";
    var $2 = require_export();
    var $every = require_array_iteration().every;
    var arrayMethodIsStrict = require_array_method_is_strict();
    var STRICT_METHOD = arrayMethodIsStrict("every");
    $2({ target: "Array", proto: true, forced: !STRICT_METHOD }, {
      every: function every(callbackfn) {
        return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);
      }
    });
  }
});

// ../../node_modules/core-js/internals/array-fill.js
var require_array_fill = __commonJS({
  "../../node_modules/core-js/internals/array-fill.js"(exports2, module2) {
    "use strict";
    var toObject = require_to_object();
    var toAbsoluteIndex = require_to_absolute_index();
    var lengthOfArrayLike = require_length_of_array_like();
    module2.exports = function fill3(value) {
      var O = toObject(this);
      var length = lengthOfArrayLike(O);
      var argumentsLength = arguments.length;
      var index4 = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : void 0, length);
      var end = argumentsLength > 2 ? arguments[2] : void 0;
      var endPos = end === void 0 ? length : toAbsoluteIndex(end, length);
      while (endPos > index4) O[index4++] = value;
      return O;
    };
  }
});

// ../../node_modules/core-js/modules/es.array.fill.js
var require_es_array_fill = __commonJS({
  "../../node_modules/core-js/modules/es.array.fill.js"() {
    var $2 = require_export();
    var fill3 = require_array_fill();
    var addToUnscopables = require_add_to_unscopables();
    $2({ target: "Array", proto: true }, {
      fill: fill3
    });
    addToUnscopables("fill");
  }
});

// ../../node_modules/core-js/modules/es.array.filter.js
var require_es_array_filter = __commonJS({
  "../../node_modules/core-js/modules/es.array.filter.js"() {
    "use strict";
    var $2 = require_export();
    var $filter = require_array_iteration().filter;
    var arrayMethodHasSpeciesSupport = require_array_method_has_species_support();
    var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport("filter");
    $2({ target: "Array", proto: true, forced: !HAS_SPECIES_SUPPORT }, {
      filter: function filter6(callbackfn) {
        return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.array.find.js
var require_es_array_find = __commonJS({
  "../../node_modules/core-js/modules/es.array.find.js"() {
    "use strict";
    var $2 = require_export();
    var $find = require_array_iteration().find;
    var addToUnscopables = require_add_to_unscopables();
    var FIND = "find";
    var SKIPS_HOLES = true;
    if (FIND in []) Array(1)[FIND](function() {
      SKIPS_HOLES = false;
    });
    $2({ target: "Array", proto: true, forced: SKIPS_HOLES }, {
      find: function find2(callbackfn) {
        return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);
      }
    });
    addToUnscopables(FIND);
  }
});

// ../../node_modules/core-js/modules/es.array.find-index.js
var require_es_array_find_index = __commonJS({
  "../../node_modules/core-js/modules/es.array.find-index.js"() {
    "use strict";
    var $2 = require_export();
    var $findIndex = require_array_iteration().findIndex;
    var addToUnscopables = require_add_to_unscopables();
    var FIND_INDEX = "findIndex";
    var SKIPS_HOLES = true;
    if (FIND_INDEX in []) Array(1)[FIND_INDEX](function() {
      SKIPS_HOLES = false;
    });
    $2({ target: "Array", proto: true, forced: SKIPS_HOLES }, {
      findIndex: function findIndex(callbackfn) {
        return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);
      }
    });
    addToUnscopables(FIND_INDEX);
  }
});

// ../../node_modules/core-js/internals/array-iteration-from-last.js
var require_array_iteration_from_last = __commonJS({
  "../../node_modules/core-js/internals/array-iteration-from-last.js"(exports2, module2) {
    var bind = require_function_bind_context();
    var IndexedObject = require_indexed_object();
    var toObject = require_to_object();
    var lengthOfArrayLike = require_length_of_array_like();
    var createMethod = function(TYPE2) {
      var IS_FIND_LAST_INDEX = TYPE2 == 1;
      return function($this, callbackfn, that) {
        var O = toObject($this);
        var self2 = IndexedObject(O);
        var boundFunction = bind(callbackfn, that);
        var index4 = lengthOfArrayLike(self2);
        var value, result;
        while (index4-- > 0) {
          value = self2[index4];
          result = boundFunction(value, index4, O);
          if (result) switch (TYPE2) {
            case 0:
              return value;
            // findLast
            case 1:
              return index4;
          }
        }
        return IS_FIND_LAST_INDEX ? -1 : void 0;
      };
    };
    module2.exports = {
      // `Array.prototype.findLast` method
      // https://github.com/tc39/proposal-array-find-from-last
      findLast: createMethod(0),
      // `Array.prototype.findLastIndex` method
      // https://github.com/tc39/proposal-array-find-from-last
      findLastIndex: createMethod(1)
    };
  }
});

// ../../node_modules/core-js/modules/es.array.find-last.js
var require_es_array_find_last = __commonJS({
  "../../node_modules/core-js/modules/es.array.find-last.js"() {
    "use strict";
    var $2 = require_export();
    var $findLast = require_array_iteration_from_last().findLast;
    var addToUnscopables = require_add_to_unscopables();
    $2({ target: "Array", proto: true }, {
      findLast: function findLast(callbackfn) {
        return $findLast(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);
      }
    });
    addToUnscopables("findLast");
  }
});

// ../../node_modules/core-js/modules/es.array.find-last-index.js
var require_es_array_find_last_index = __commonJS({
  "../../node_modules/core-js/modules/es.array.find-last-index.js"() {
    "use strict";
    var $2 = require_export();
    var $findLastIndex = require_array_iteration_from_last().findLastIndex;
    var addToUnscopables = require_add_to_unscopables();
    $2({ target: "Array", proto: true }, {
      findLastIndex: function findLastIndex(callbackfn) {
        return $findLastIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);
      }
    });
    addToUnscopables("findLastIndex");
  }
});

// ../../node_modules/core-js/internals/flatten-into-array.js
var require_flatten_into_array = __commonJS({
  "../../node_modules/core-js/internals/flatten-into-array.js"(exports2, module2) {
    "use strict";
    var isArray2 = require_is_array();
    var lengthOfArrayLike = require_length_of_array_like();
    var doesNotExceedSafeInteger = require_does_not_exceed_safe_integer();
    var bind = require_function_bind_context();
    var flattenIntoArray = function(target, original, source2, sourceLen, start, depth, mapper, thisArg) {
      var targetIndex = start;
      var sourceIndex = 0;
      var mapFn = mapper ? bind(mapper, thisArg) : false;
      var element5, elementLen;
      while (sourceIndex < sourceLen) {
        if (sourceIndex in source2) {
          element5 = mapFn ? mapFn(source2[sourceIndex], sourceIndex, original) : source2[sourceIndex];
          if (depth > 0 && isArray2(element5)) {
            elementLen = lengthOfArrayLike(element5);
            targetIndex = flattenIntoArray(target, original, element5, elementLen, targetIndex, depth - 1) - 1;
          } else {
            doesNotExceedSafeInteger(targetIndex + 1);
            target[targetIndex] = element5;
          }
          targetIndex++;
        }
        sourceIndex++;
      }
      return targetIndex;
    };
    module2.exports = flattenIntoArray;
  }
});

// ../../node_modules/core-js/modules/es.array.flat.js
var require_es_array_flat = __commonJS({
  "../../node_modules/core-js/modules/es.array.flat.js"() {
    "use strict";
    var $2 = require_export();
    var flattenIntoArray = require_flatten_into_array();
    var toObject = require_to_object();
    var lengthOfArrayLike = require_length_of_array_like();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var arraySpeciesCreate = require_array_species_create();
    $2({ target: "Array", proto: true }, {
      flat: function flat() {
        var depthArg = arguments.length ? arguments[0] : void 0;
        var O = toObject(this);
        var sourceLen = lengthOfArrayLike(O);
        var A2 = arraySpeciesCreate(O, 0);
        A2.length = flattenIntoArray(A2, O, O, sourceLen, 0, depthArg === void 0 ? 1 : toIntegerOrInfinity(depthArg));
        return A2;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.array.flat-map.js
var require_es_array_flat_map = __commonJS({
  "../../node_modules/core-js/modules/es.array.flat-map.js"() {
    "use strict";
    var $2 = require_export();
    var flattenIntoArray = require_flatten_into_array();
    var aCallable = require_a_callable();
    var toObject = require_to_object();
    var lengthOfArrayLike = require_length_of_array_like();
    var arraySpeciesCreate = require_array_species_create();
    $2({ target: "Array", proto: true }, {
      flatMap: function flatMap2(callbackfn) {
        var O = toObject(this);
        var sourceLen = lengthOfArrayLike(O);
        var A2;
        aCallable(callbackfn);
        A2 = arraySpeciesCreate(O, 0);
        A2.length = flattenIntoArray(A2, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : void 0);
        return A2;
      }
    });
  }
});

// ../../node_modules/core-js/internals/array-for-each.js
var require_array_for_each = __commonJS({
  "../../node_modules/core-js/internals/array-for-each.js"(exports2, module2) {
    "use strict";
    var $forEach = require_array_iteration().forEach;
    var arrayMethodIsStrict = require_array_method_is_strict();
    var STRICT_METHOD = arrayMethodIsStrict("forEach");
    module2.exports = !STRICT_METHOD ? function forEach(callbackfn) {
      return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);
    } : [].forEach;
  }
});

// ../../node_modules/core-js/modules/es.array.for-each.js
var require_es_array_for_each = __commonJS({
  "../../node_modules/core-js/modules/es.array.for-each.js"() {
    "use strict";
    var $2 = require_export();
    var forEach = require_array_for_each();
    $2({ target: "Array", proto: true, forced: [].forEach != forEach }, {
      forEach
    });
  }
});

// ../../node_modules/core-js/internals/call-with-safe-iteration-closing.js
var require_call_with_safe_iteration_closing = __commonJS({
  "../../node_modules/core-js/internals/call-with-safe-iteration-closing.js"(exports2, module2) {
    var anObject = require_an_object();
    var iteratorClose = require_iterator_close();
    module2.exports = function(iterator, fn, value, ENTRIES) {
      try {
        return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);
      } catch (error) {
        iteratorClose(iterator, "throw", error);
      }
    };
  }
});

// ../../node_modules/core-js/internals/array-from.js
var require_array_from = __commonJS({
  "../../node_modules/core-js/internals/array-from.js"(exports2, module2) {
    "use strict";
    var bind = require_function_bind_context();
    var call = require_function_call();
    var toObject = require_to_object();
    var callWithSafeIterationClosing = require_call_with_safe_iteration_closing();
    var isArrayIteratorMethod = require_is_array_iterator_method();
    var isConstructor = require_is_constructor();
    var lengthOfArrayLike = require_length_of_array_like();
    var createProperty = require_create_property();
    var getIterator = require_get_iterator();
    var getIteratorMethod = require_get_iterator_method();
    var $Array = Array;
    module2.exports = function from4(arrayLike) {
      var O = toObject(arrayLike);
      var IS_CONSTRUCTOR = isConstructor(this);
      var argumentsLength = arguments.length;
      var mapfn = argumentsLength > 1 ? arguments[1] : void 0;
      var mapping = mapfn !== void 0;
      if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : void 0);
      var iteratorMethod = getIteratorMethod(O);
      var index4 = 0;
      var length, result, step, iterator, next, value;
      if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {
        iterator = getIterator(O, iteratorMethod);
        next = iterator.next;
        result = IS_CONSTRUCTOR ? new this() : [];
        for (; !(step = call(next, iterator)).done; index4++) {
          value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index4], true) : step.value;
          createProperty(result, index4, value);
        }
      } else {
        length = lengthOfArrayLike(O);
        result = IS_CONSTRUCTOR ? new this(length) : $Array(length);
        for (; length > index4; index4++) {
          value = mapping ? mapfn(O[index4], index4) : O[index4];
          createProperty(result, index4, value);
        }
      }
      result.length = index4;
      return result;
    };
  }
});

// ../../node_modules/core-js/internals/check-correctness-of-iteration.js
var require_check_correctness_of_iteration = __commonJS({
  "../../node_modules/core-js/internals/check-correctness-of-iteration.js"(exports2, module2) {
    var wellKnownSymbol = require_well_known_symbol();
    var ITERATOR = wellKnownSymbol("iterator");
    var SAFE_CLOSING = false;
    try {
      called = 0;
      iteratorWithReturn = {
        next: function() {
          return { done: !!called++ };
        },
        "return": function() {
          SAFE_CLOSING = true;
        }
      };
      iteratorWithReturn[ITERATOR] = function() {
        return this;
      };
      Array.from(iteratorWithReturn, function() {
        throw 2;
      });
    } catch (error) {
    }
    var called;
    var iteratorWithReturn;
    module2.exports = function(exec3, SKIP_CLOSING) {
      if (!SKIP_CLOSING && !SAFE_CLOSING) return false;
      var ITERATION_SUPPORT = false;
      try {
        var object = {};
        object[ITERATOR] = function() {
          return {
            next: function() {
              return { done: ITERATION_SUPPORT = true };
            }
          };
        };
        exec3(object);
      } catch (error) {
      }
      return ITERATION_SUPPORT;
    };
  }
});

// ../../node_modules/core-js/modules/es.array.from.js
var require_es_array_from = __commonJS({
  "../../node_modules/core-js/modules/es.array.from.js"() {
    var $2 = require_export();
    var from4 = require_array_from();
    var checkCorrectnessOfIteration = require_check_correctness_of_iteration();
    var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function(iterable) {
      Array.from(iterable);
    });
    $2({ target: "Array", stat: true, forced: INCORRECT_ITERATION }, {
      from: from4
    });
  }
});

// ../../node_modules/core-js/modules/es.array.includes.js
var require_es_array_includes = __commonJS({
  "../../node_modules/core-js/modules/es.array.includes.js"() {
    "use strict";
    var $2 = require_export();
    var $includes = require_array_includes().includes;
    var fails = require_fails();
    var addToUnscopables = require_add_to_unscopables();
    var BROKEN_ON_SPARSE = fails(function() {
      return !Array(1).includes();
    });
    $2({ target: "Array", proto: true, forced: BROKEN_ON_SPARSE }, {
      includes: function includes2(el) {
        return $includes(this, el, arguments.length > 1 ? arguments[1] : void 0);
      }
    });
    addToUnscopables("includes");
  }
});

// ../../node_modules/core-js/modules/es.array.index-of.js
var require_es_array_index_of = __commonJS({
  "../../node_modules/core-js/modules/es.array.index-of.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this_clause();
    var $indexOf = require_array_includes().indexOf;
    var arrayMethodIsStrict = require_array_method_is_strict();
    var nativeIndexOf = uncurryThis([].indexOf);
    var NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;
    var FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict("indexOf");
    $2({ target: "Array", proto: true, forced: FORCED }, {
      indexOf: function indexOf2(searchElement) {
        var fromIndex = arguments.length > 1 ? arguments[1] : void 0;
        return NEGATIVE_ZERO ? nativeIndexOf(this, searchElement, fromIndex) || 0 : $indexOf(this, searchElement, fromIndex);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.array.is-array.js
var require_es_array_is_array = __commonJS({
  "../../node_modules/core-js/modules/es.array.is-array.js"() {
    var $2 = require_export();
    var isArray2 = require_is_array();
    $2({ target: "Array", stat: true }, {
      isArray: isArray2
    });
  }
});

// ../../node_modules/core-js/internals/iterators-core.js
var require_iterators_core = __commonJS({
  "../../node_modules/core-js/internals/iterators-core.js"(exports2, module2) {
    "use strict";
    var fails = require_fails();
    var isCallable = require_is_callable();
    var isObject2 = require_is_object();
    var create3 = require_object_create();
    var getPrototypeOf2 = require_object_get_prototype_of();
    var defineBuiltIn = require_define_built_in();
    var wellKnownSymbol = require_well_known_symbol();
    var IS_PURE = require_is_pure();
    var ITERATOR = wellKnownSymbol("iterator");
    var BUGGY_SAFARI_ITERATORS = false;
    var IteratorPrototype;
    var PrototypeOfArrayIteratorPrototype;
    var arrayIterator;
    if ([].keys) {
      arrayIterator = [].keys();
      if (!("next" in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
      else {
        PrototypeOfArrayIteratorPrototype = getPrototypeOf2(getPrototypeOf2(arrayIterator));
        if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
      }
    }
    var NEW_ITERATOR_PROTOTYPE = !isObject2(IteratorPrototype) || fails(function() {
      var test2 = {};
      return IteratorPrototype[ITERATOR].call(test2) !== test2;
    });
    if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};
    else if (IS_PURE) IteratorPrototype = create3(IteratorPrototype);
    if (!isCallable(IteratorPrototype[ITERATOR])) {
      defineBuiltIn(IteratorPrototype, ITERATOR, function() {
        return this;
      });
    }
    module2.exports = {
      IteratorPrototype,
      BUGGY_SAFARI_ITERATORS
    };
  }
});

// ../../node_modules/core-js/internals/iterator-create-constructor.js
var require_iterator_create_constructor = __commonJS({
  "../../node_modules/core-js/internals/iterator-create-constructor.js"(exports2, module2) {
    "use strict";
    var IteratorPrototype = require_iterators_core().IteratorPrototype;
    var create3 = require_object_create();
    var createPropertyDescriptor = require_create_property_descriptor();
    var setToStringTag = require_set_to_string_tag();
    var Iterators = require_iterators();
    var returnThis = function() {
      return this;
    };
    module2.exports = function(IteratorConstructor, NAME2, next, ENUMERABLE_NEXT) {
      var TO_STRING_TAG = NAME2 + " Iterator";
      IteratorConstructor.prototype = create3(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });
      setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);
      Iterators[TO_STRING_TAG] = returnThis;
      return IteratorConstructor;
    };
  }
});

// ../../node_modules/core-js/internals/iterator-define.js
var require_iterator_define = __commonJS({
  "../../node_modules/core-js/internals/iterator-define.js"(exports2, module2) {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var IS_PURE = require_is_pure();
    var FunctionName = require_function_name();
    var isCallable = require_is_callable();
    var createIteratorConstructor = require_iterator_create_constructor();
    var getPrototypeOf2 = require_object_get_prototype_of();
    var setPrototypeOf = require_object_set_prototype_of();
    var setToStringTag = require_set_to_string_tag();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var defineBuiltIn = require_define_built_in();
    var wellKnownSymbol = require_well_known_symbol();
    var Iterators = require_iterators();
    var IteratorsCore = require_iterators_core();
    var PROPER_FUNCTION_NAME = FunctionName.PROPER;
    var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;
    var IteratorPrototype = IteratorsCore.IteratorPrototype;
    var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
    var ITERATOR = wellKnownSymbol("iterator");
    var KEYS = "keys";
    var VALUES = "values";
    var ENTRIES = "entries";
    var returnThis = function() {
      return this;
    };
    module2.exports = function(Iterable, NAME2, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
      createIteratorConstructor(IteratorConstructor, NAME2, next);
      var getIterationMethod = function(KIND) {
        if (KIND === DEFAULT && defaultIterator) return defaultIterator;
        if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];
        switch (KIND) {
          case KEYS:
            return function keys2() {
              return new IteratorConstructor(this, KIND);
            };
          case VALUES:
            return function values() {
              return new IteratorConstructor(this, KIND);
            };
          case ENTRIES:
            return function entries2() {
              return new IteratorConstructor(this, KIND);
            };
        }
        return function() {
          return new IteratorConstructor(this);
        };
      };
      var TO_STRING_TAG = NAME2 + " Iterator";
      var INCORRECT_VALUES_NAME = false;
      var IterablePrototype = Iterable.prototype;
      var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype["@@iterator"] || DEFAULT && IterablePrototype[DEFAULT];
      var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
      var anyNativeIterator = NAME2 == "Array" ? IterablePrototype.entries || nativeIterator : nativeIterator;
      var CurrentIteratorPrototype, methods, KEY;
      if (anyNativeIterator) {
        CurrentIteratorPrototype = getPrototypeOf2(anyNativeIterator.call(new Iterable()));
        if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
          if (!IS_PURE && getPrototypeOf2(CurrentIteratorPrototype) !== IteratorPrototype) {
            if (setPrototypeOf) {
              setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
            } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {
              defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);
            }
          }
          setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
          if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;
        }
      }
      if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
        if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {
          createNonEnumerableProperty(IterablePrototype, "name", VALUES);
        } else {
          INCORRECT_VALUES_NAME = true;
          defaultIterator = function values() {
            return call(nativeIterator, this);
          };
        }
      }
      if (DEFAULT) {
        methods = {
          values: getIterationMethod(VALUES),
          keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
          entries: getIterationMethod(ENTRIES)
        };
        if (FORCED) for (KEY in methods) {
          if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
            defineBuiltIn(IterablePrototype, KEY, methods[KEY]);
          }
        }
        else $2({ target: NAME2, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
      }
      if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
        defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });
      }
      Iterators[NAME2] = defaultIterator;
      return methods;
    };
  }
});

// ../../node_modules/core-js/internals/create-iter-result-object.js
var require_create_iter_result_object = __commonJS({
  "../../node_modules/core-js/internals/create-iter-result-object.js"(exports2, module2) {
    module2.exports = function(value, done) {
      return { value, done };
    };
  }
});

// ../../node_modules/core-js/modules/es.array.iterator.js
var require_es_array_iterator = __commonJS({
  "../../node_modules/core-js/modules/es.array.iterator.js"(exports2, module2) {
    "use strict";
    var toIndexedObject = require_to_indexed_object();
    var addToUnscopables = require_add_to_unscopables();
    var Iterators = require_iterators();
    var InternalStateModule = require_internal_state();
    var defineProperty = require_object_define_property().f;
    var defineIterator = require_iterator_define();
    var createIterResultObject = require_create_iter_result_object();
    var IS_PURE = require_is_pure();
    var DESCRIPTORS = require_descriptors();
    var ARRAY_ITERATOR = "Array Iterator";
    var setInternalState = InternalStateModule.set;
    var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);
    module2.exports = defineIterator(Array, "Array", function(iterated, kind) {
      setInternalState(this, {
        type: ARRAY_ITERATOR,
        target: toIndexedObject(iterated),
        // target
        index: 0,
        // next index
        kind
        // kind
      });
    }, function() {
      var state = getInternalState(this);
      var target = state.target;
      var kind = state.kind;
      var index4 = state.index++;
      if (!target || index4 >= target.length) {
        state.target = void 0;
        return createIterResultObject(void 0, true);
      }
      if (kind == "keys") return createIterResultObject(index4, false);
      if (kind == "values") return createIterResultObject(target[index4], false);
      return createIterResultObject([index4, target[index4]], false);
    }, "values");
    var values = Iterators.Arguments = Iterators.Array;
    addToUnscopables("keys");
    addToUnscopables("values");
    addToUnscopables("entries");
    if (!IS_PURE && DESCRIPTORS && values.name !== "values") try {
      defineProperty(values, "name", { value: "values" });
    } catch (error) {
    }
  }
});

// ../../node_modules/core-js/modules/es.array.join.js
var require_es_array_join = __commonJS({
  "../../node_modules/core-js/modules/es.array.join.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var IndexedObject = require_indexed_object();
    var toIndexedObject = require_to_indexed_object();
    var arrayMethodIsStrict = require_array_method_is_strict();
    var nativeJoin = uncurryThis([].join);
    var ES3_STRINGS = IndexedObject != Object;
    var FORCED = ES3_STRINGS || !arrayMethodIsStrict("join", ",");
    $2({ target: "Array", proto: true, forced: FORCED }, {
      join: function join19(separator) {
        return nativeJoin(toIndexedObject(this), separator === void 0 ? "," : separator);
      }
    });
  }
});

// ../../node_modules/core-js/internals/array-last-index-of.js
var require_array_last_index_of = __commonJS({
  "../../node_modules/core-js/internals/array-last-index-of.js"(exports2, module2) {
    "use strict";
    var apply = require_function_apply();
    var toIndexedObject = require_to_indexed_object();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var lengthOfArrayLike = require_length_of_array_like();
    var arrayMethodIsStrict = require_array_method_is_strict();
    var min = Math.min;
    var $lastIndexOf = [].lastIndexOf;
    var NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;
    var STRICT_METHOD = arrayMethodIsStrict("lastIndexOf");
    var FORCED = NEGATIVE_ZERO || !STRICT_METHOD;
    module2.exports = FORCED ? function lastIndexOf2(searchElement) {
      if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;
      var O = toIndexedObject(this);
      var length = lengthOfArrayLike(O);
      var index4 = length - 1;
      if (arguments.length > 1) index4 = min(index4, toIntegerOrInfinity(arguments[1]));
      if (index4 < 0) index4 = length + index4;
      for (; index4 >= 0; index4--) if (index4 in O && O[index4] === searchElement) return index4 || 0;
      return -1;
    } : $lastIndexOf;
  }
});

// ../../node_modules/core-js/modules/es.array.last-index-of.js
var require_es_array_last_index_of = __commonJS({
  "../../node_modules/core-js/modules/es.array.last-index-of.js"() {
    var $2 = require_export();
    var lastIndexOf2 = require_array_last_index_of();
    $2({ target: "Array", proto: true, forced: lastIndexOf2 !== [].lastIndexOf }, {
      lastIndexOf: lastIndexOf2
    });
  }
});

// ../../node_modules/core-js/modules/es.array.map.js
var require_es_array_map = __commonJS({
  "../../node_modules/core-js/modules/es.array.map.js"() {
    "use strict";
    var $2 = require_export();
    var $map = require_array_iteration().map;
    var arrayMethodHasSpeciesSupport = require_array_method_has_species_support();
    var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport("map");
    $2({ target: "Array", proto: true, forced: !HAS_SPECIES_SUPPORT }, {
      map: function map13(callbackfn) {
        return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.array.of.js
var require_es_array_of = __commonJS({
  "../../node_modules/core-js/modules/es.array.of.js"() {
    "use strict";
    var $2 = require_export();
    var fails = require_fails();
    var isConstructor = require_is_constructor();
    var createProperty = require_create_property();
    var $Array = Array;
    var ISNT_GENERIC = fails(function() {
      function F2() {
      }
      return !($Array.of.call(F2) instanceof F2);
    });
    $2({ target: "Array", stat: true, forced: ISNT_GENERIC }, {
      of: function of3() {
        var index4 = 0;
        var argumentsLength = arguments.length;
        var result = new (isConstructor(this) ? this : $Array)(argumentsLength);
        while (argumentsLength > index4) createProperty(result, index4, arguments[index4++]);
        result.length = argumentsLength;
        return result;
      }
    });
  }
});

// ../../node_modules/core-js/internals/array-set-length.js
var require_array_set_length = __commonJS({
  "../../node_modules/core-js/internals/array-set-length.js"(exports2, module2) {
    "use strict";
    var DESCRIPTORS = require_descriptors();
    var isArray2 = require_is_array();
    var $TypeError = TypeError;
    var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
    var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !(function() {
      if (this !== void 0) return true;
      try {
        Object.defineProperty([], "length", { writable: false }).length = 1;
      } catch (error) {
        return error instanceof TypeError;
      }
    })();
    module2.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function(O, length) {
      if (isArray2(O) && !getOwnPropertyDescriptor(O, "length").writable) {
        throw $TypeError("Cannot set read only .length");
      }
      return O.length = length;
    } : function(O, length) {
      return O.length = length;
    };
  }
});

// ../../node_modules/core-js/modules/es.array.push.js
var require_es_array_push = __commonJS({
  "../../node_modules/core-js/modules/es.array.push.js"() {
    "use strict";
    var $2 = require_export();
    var toObject = require_to_object();
    var lengthOfArrayLike = require_length_of_array_like();
    var setArrayLength = require_array_set_length();
    var doesNotExceedSafeInteger = require_does_not_exceed_safe_integer();
    var fails = require_fails();
    var INCORRECT_TO_LENGTH = fails(function() {
      return [].push.call({ length: 4294967296 }, 1) !== 4294967297;
    });
    var properErrorOnNonWritableLength = function() {
      try {
        Object.defineProperty([], "length", { writable: false }).push();
      } catch (error) {
        return error instanceof TypeError;
      }
    };
    var FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();
    $2({ target: "Array", proto: true, arity: 1, forced: FORCED }, {
      // eslint-disable-next-line no-unused-vars -- required for `.length`
      push: function push(item) {
        var O = toObject(this);
        var len = lengthOfArrayLike(O);
        var argCount = arguments.length;
        doesNotExceedSafeInteger(len + argCount);
        for (var i2 = 0; i2 < argCount; i2++) {
          O[len] = arguments[i2];
          len++;
        }
        setArrayLength(O, len);
        return len;
      }
    });
  }
});

// ../../node_modules/core-js/internals/array-reduce.js
var require_array_reduce = __commonJS({
  "../../node_modules/core-js/internals/array-reduce.js"(exports2, module2) {
    var aCallable = require_a_callable();
    var toObject = require_to_object();
    var IndexedObject = require_indexed_object();
    var lengthOfArrayLike = require_length_of_array_like();
    var $TypeError = TypeError;
    var createMethod = function(IS_RIGHT) {
      return function(that, callbackfn, argumentsLength, memo) {
        aCallable(callbackfn);
        var O = toObject(that);
        var self2 = IndexedObject(O);
        var length = lengthOfArrayLike(O);
        var index4 = IS_RIGHT ? length - 1 : 0;
        var i2 = IS_RIGHT ? -1 : 1;
        if (argumentsLength < 2) while (true) {
          if (index4 in self2) {
            memo = self2[index4];
            index4 += i2;
            break;
          }
          index4 += i2;
          if (IS_RIGHT ? index4 < 0 : length <= index4) {
            throw $TypeError("Reduce of empty array with no initial value");
          }
        }
        for (; IS_RIGHT ? index4 >= 0 : length > index4; index4 += i2) if (index4 in self2) {
          memo = callbackfn(memo, self2[index4], index4, O);
        }
        return memo;
      };
    };
    module2.exports = {
      // `Array.prototype.reduce` method
      // https://tc39.es/ecma262/#sec-array.prototype.reduce
      left: createMethod(false),
      // `Array.prototype.reduceRight` method
      // https://tc39.es/ecma262/#sec-array.prototype.reduceright
      right: createMethod(true)
    };
  }
});

// ../../node_modules/core-js/internals/engine-is-node.js
var require_engine_is_node = __commonJS({
  "../../node_modules/core-js/internals/engine-is-node.js"(exports2, module2) {
    var classof = require_classof_raw();
    module2.exports = typeof process != "undefined" && classof(process) == "process";
  }
});

// ../../node_modules/core-js/modules/es.array.reduce.js
var require_es_array_reduce = __commonJS({
  "../../node_modules/core-js/modules/es.array.reduce.js"() {
    "use strict";
    var $2 = require_export();
    var $reduce = require_array_reduce().left;
    var arrayMethodIsStrict = require_array_method_is_strict();
    var CHROME_VERSION = require_engine_v8_version();
    var IS_NODE = require_engine_is_node();
    var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;
    var FORCED = CHROME_BUG || !arrayMethodIsStrict("reduce");
    $2({ target: "Array", proto: true, forced: FORCED }, {
      reduce: function reduce2(callbackfn) {
        var length = arguments.length;
        return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : void 0);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.array.reduce-right.js
var require_es_array_reduce_right = __commonJS({
  "../../node_modules/core-js/modules/es.array.reduce-right.js"() {
    "use strict";
    var $2 = require_export();
    var $reduceRight = require_array_reduce().right;
    var arrayMethodIsStrict = require_array_method_is_strict();
    var CHROME_VERSION = require_engine_v8_version();
    var IS_NODE = require_engine_is_node();
    var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;
    var FORCED = CHROME_BUG || !arrayMethodIsStrict("reduceRight");
    $2({ target: "Array", proto: true, forced: FORCED }, {
      reduceRight: function reduceRight(callbackfn) {
        return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : void 0);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.array.reverse.js
var require_es_array_reverse = __commonJS({
  "../../node_modules/core-js/modules/es.array.reverse.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var isArray2 = require_is_array();
    var nativeReverse = uncurryThis([].reverse);
    var test2 = [1, 2];
    $2({ target: "Array", proto: true, forced: String(test2) === String(test2.reverse()) }, {
      reverse: function reverse() {
        if (isArray2(this)) this.length = this.length;
        return nativeReverse(this);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.array.slice.js
var require_es_array_slice = __commonJS({
  "../../node_modules/core-js/modules/es.array.slice.js"() {
    "use strict";
    var $2 = require_export();
    var isArray2 = require_is_array();
    var isConstructor = require_is_constructor();
    var isObject2 = require_is_object();
    var toAbsoluteIndex = require_to_absolute_index();
    var lengthOfArrayLike = require_length_of_array_like();
    var toIndexedObject = require_to_indexed_object();
    var createProperty = require_create_property();
    var wellKnownSymbol = require_well_known_symbol();
    var arrayMethodHasSpeciesSupport = require_array_method_has_species_support();
    var nativeSlice = require_array_slice();
    var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport("slice");
    var SPECIES = wellKnownSymbol("species");
    var $Array = Array;
    var max = Math.max;
    $2({ target: "Array", proto: true, forced: !HAS_SPECIES_SUPPORT }, {
      slice: function slice2(start, end) {
        var O = toIndexedObject(this);
        var length = lengthOfArrayLike(O);
        var k = toAbsoluteIndex(start, length);
        var fin = toAbsoluteIndex(end === void 0 ? length : end, length);
        var Constructor, result, n;
        if (isArray2(O)) {
          Constructor = O.constructor;
          if (isConstructor(Constructor) && (Constructor === $Array || isArray2(Constructor.prototype))) {
            Constructor = void 0;
          } else if (isObject2(Constructor)) {
            Constructor = Constructor[SPECIES];
            if (Constructor === null) Constructor = void 0;
          }
          if (Constructor === $Array || Constructor === void 0) {
            return nativeSlice(O, k, fin);
          }
        }
        result = new (Constructor === void 0 ? $Array : Constructor)(max(fin - k, 0));
        for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);
        result.length = n;
        return result;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.array.some.js
var require_es_array_some = __commonJS({
  "../../node_modules/core-js/modules/es.array.some.js"() {
    "use strict";
    var $2 = require_export();
    var $some = require_array_iteration().some;
    var arrayMethodIsStrict = require_array_method_is_strict();
    var STRICT_METHOD = arrayMethodIsStrict("some");
    $2({ target: "Array", proto: true, forced: !STRICT_METHOD }, {
      some: function some(callbackfn) {
        return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);
      }
    });
  }
});

// ../../node_modules/core-js/internals/array-sort.js
var require_array_sort = __commonJS({
  "../../node_modules/core-js/internals/array-sort.js"(exports2, module2) {
    var arraySlice = require_array_slice_simple();
    var floor = Math.floor;
    var mergeSort = function(array, comparefn) {
      var length = array.length;
      var middle = floor(length / 2);
      return length < 8 ? insertionSort(array, comparefn) : merge3(
        array,
        mergeSort(arraySlice(array, 0, middle), comparefn),
        mergeSort(arraySlice(array, middle), comparefn),
        comparefn
      );
    };
    var insertionSort = function(array, comparefn) {
      var length = array.length;
      var i2 = 1;
      var element5, j;
      while (i2 < length) {
        j = i2;
        element5 = array[i2];
        while (j && comparefn(array[j - 1], element5) > 0) {
          array[j] = array[--j];
        }
        if (j !== i2++) array[j] = element5;
      }
      return array;
    };
    var merge3 = function(array, left2, right2, comparefn) {
      var llength = left2.length;
      var rlength = right2.length;
      var lindex = 0;
      var rindex = 0;
      while (lindex < llength || rindex < rlength) {
        array[lindex + rindex] = lindex < llength && rindex < rlength ? comparefn(left2[lindex], right2[rindex]) <= 0 ? left2[lindex++] : right2[rindex++] : lindex < llength ? left2[lindex++] : right2[rindex++];
      }
      return array;
    };
    module2.exports = mergeSort;
  }
});

// ../../node_modules/core-js/internals/engine-ff-version.js
var require_engine_ff_version = __commonJS({
  "../../node_modules/core-js/internals/engine-ff-version.js"(exports2, module2) {
    var userAgent = require_engine_user_agent();
    var firefox = userAgent.match(/firefox\/(\d+)/i);
    module2.exports = !!firefox && +firefox[1];
  }
});

// ../../node_modules/core-js/internals/engine-is-ie-or-edge.js
var require_engine_is_ie_or_edge = __commonJS({
  "../../node_modules/core-js/internals/engine-is-ie-or-edge.js"(exports2, module2) {
    var UA = require_engine_user_agent();
    module2.exports = /MSIE|Trident/.test(UA);
  }
});

// ../../node_modules/core-js/internals/engine-webkit-version.js
var require_engine_webkit_version = __commonJS({
  "../../node_modules/core-js/internals/engine-webkit-version.js"(exports2, module2) {
    var userAgent = require_engine_user_agent();
    var webkit = userAgent.match(/AppleWebKit\/(\d+)\./);
    module2.exports = !!webkit && +webkit[1];
  }
});

// ../../node_modules/core-js/modules/es.array.sort.js
var require_es_array_sort = __commonJS({
  "../../node_modules/core-js/modules/es.array.sort.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var aCallable = require_a_callable();
    var toObject = require_to_object();
    var lengthOfArrayLike = require_length_of_array_like();
    var deletePropertyOrThrow = require_delete_property_or_throw();
    var toString6 = require_to_string();
    var fails = require_fails();
    var internalSort = require_array_sort();
    var arrayMethodIsStrict = require_array_method_is_strict();
    var FF = require_engine_ff_version();
    var IE_OR_EDGE = require_engine_is_ie_or_edge();
    var V8 = require_engine_v8_version();
    var WEBKIT = require_engine_webkit_version();
    var test2 = [];
    var nativeSort = uncurryThis(test2.sort);
    var push = uncurryThis(test2.push);
    var FAILS_ON_UNDEFINED = fails(function() {
      test2.sort(void 0);
    });
    var FAILS_ON_NULL = fails(function() {
      test2.sort(null);
    });
    var STRICT_METHOD = arrayMethodIsStrict("sort");
    var STABLE_SORT = !fails(function() {
      if (V8) return V8 < 70;
      if (FF && FF > 3) return;
      if (IE_OR_EDGE) return true;
      if (WEBKIT) return WEBKIT < 603;
      var result = "";
      var code7, chr, value, index4;
      for (code7 = 65; code7 < 76; code7++) {
        chr = String.fromCharCode(code7);
        switch (code7) {
          case 66:
          case 69:
          case 70:
          case 72:
            value = 3;
            break;
          case 68:
          case 71:
            value = 4;
            break;
          default:
            value = 2;
        }
        for (index4 = 0; index4 < 47; index4++) {
          test2.push({ k: chr + index4, v: value });
        }
      }
      test2.sort(function(a2, b) {
        return b.v - a2.v;
      });
      for (index4 = 0; index4 < test2.length; index4++) {
        chr = test2[index4].k.charAt(0);
        if (result.charAt(result.length - 1) !== chr) result += chr;
      }
      return result !== "DGBEFHACIJK";
    });
    var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;
    var getSortCompare = function(comparefn) {
      return function(x2, y) {
        if (y === void 0) return -1;
        if (x2 === void 0) return 1;
        if (comparefn !== void 0) return +comparefn(x2, y) || 0;
        return toString6(x2) > toString6(y) ? 1 : -1;
      };
    };
    $2({ target: "Array", proto: true, forced: FORCED }, {
      sort: function sort(comparefn) {
        if (comparefn !== void 0) aCallable(comparefn);
        var array = toObject(this);
        if (STABLE_SORT) return comparefn === void 0 ? nativeSort(array) : nativeSort(array, comparefn);
        var items = [];
        var arrayLength = lengthOfArrayLike(array);
        var itemsLength, index4;
        for (index4 = 0; index4 < arrayLength; index4++) {
          if (index4 in array) push(items, array[index4]);
        }
        internalSort(items, getSortCompare(comparefn));
        itemsLength = lengthOfArrayLike(items);
        index4 = 0;
        while (index4 < itemsLength) array[index4] = items[index4++];
        while (index4 < arrayLength) deletePropertyOrThrow(array, index4++);
        return array;
      }
    });
  }
});

// ../../node_modules/core-js/internals/set-species.js
var require_set_species = __commonJS({
  "../../node_modules/core-js/internals/set-species.js"(exports2, module2) {
    "use strict";
    var getBuiltIn = require_get_built_in();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var wellKnownSymbol = require_well_known_symbol();
    var DESCRIPTORS = require_descriptors();
    var SPECIES = wellKnownSymbol("species");
    module2.exports = function(CONSTRUCTOR_NAME) {
      var Constructor = getBuiltIn(CONSTRUCTOR_NAME);
      if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {
        defineBuiltInAccessor(Constructor, SPECIES, {
          configurable: true,
          get: function() {
            return this;
          }
        });
      }
    };
  }
});

// ../../node_modules/core-js/modules/es.array.species.js
var require_es_array_species = __commonJS({
  "../../node_modules/core-js/modules/es.array.species.js"() {
    var setSpecies = require_set_species();
    setSpecies("Array");
  }
});

// ../../node_modules/core-js/modules/es.array.splice.js
var require_es_array_splice = __commonJS({
  "../../node_modules/core-js/modules/es.array.splice.js"() {
    "use strict";
    var $2 = require_export();
    var toObject = require_to_object();
    var toAbsoluteIndex = require_to_absolute_index();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var lengthOfArrayLike = require_length_of_array_like();
    var setArrayLength = require_array_set_length();
    var doesNotExceedSafeInteger = require_does_not_exceed_safe_integer();
    var arraySpeciesCreate = require_array_species_create();
    var createProperty = require_create_property();
    var deletePropertyOrThrow = require_delete_property_or_throw();
    var arrayMethodHasSpeciesSupport = require_array_method_has_species_support();
    var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport("splice");
    var max = Math.max;
    var min = Math.min;
    $2({ target: "Array", proto: true, forced: !HAS_SPECIES_SUPPORT }, {
      splice: function splice(start, deleteCount) {
        var O = toObject(this);
        var len = lengthOfArrayLike(O);
        var actualStart = toAbsoluteIndex(start, len);
        var argumentsLength = arguments.length;
        var insertCount, actualDeleteCount, A2, k, from4, to;
        if (argumentsLength === 0) {
          insertCount = actualDeleteCount = 0;
        } else if (argumentsLength === 1) {
          insertCount = 0;
          actualDeleteCount = len - actualStart;
        } else {
          insertCount = argumentsLength - 2;
          actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);
        }
        doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);
        A2 = arraySpeciesCreate(O, actualDeleteCount);
        for (k = 0; k < actualDeleteCount; k++) {
          from4 = actualStart + k;
          if (from4 in O) createProperty(A2, k, O[from4]);
        }
        A2.length = actualDeleteCount;
        if (insertCount < actualDeleteCount) {
          for (k = actualStart; k < len - actualDeleteCount; k++) {
            from4 = k + actualDeleteCount;
            to = k + insertCount;
            if (from4 in O) O[to] = O[from4];
            else deletePropertyOrThrow(O, to);
          }
          for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1);
        } else if (insertCount > actualDeleteCount) {
          for (k = len - actualDeleteCount; k > actualStart; k--) {
            from4 = k + actualDeleteCount - 1;
            to = k + insertCount - 1;
            if (from4 in O) O[to] = O[from4];
            else deletePropertyOrThrow(O, to);
          }
        }
        for (k = 0; k < insertCount; k++) {
          O[k + actualStart] = arguments[k + 2];
        }
        setArrayLength(O, len - actualDeleteCount + insertCount);
        return A2;
      }
    });
  }
});

// ../../node_modules/core-js/internals/array-to-reversed.js
var require_array_to_reversed = __commonJS({
  "../../node_modules/core-js/internals/array-to-reversed.js"(exports2, module2) {
    var lengthOfArrayLike = require_length_of_array_like();
    module2.exports = function(O, C) {
      var len = lengthOfArrayLike(O);
      var A2 = new C(len);
      var k = 0;
      for (; k < len; k++) A2[k] = O[len - k - 1];
      return A2;
    };
  }
});

// ../../node_modules/core-js/modules/es.array.to-reversed.js
var require_es_array_to_reversed = __commonJS({
  "../../node_modules/core-js/modules/es.array.to-reversed.js"() {
    "use strict";
    var $2 = require_export();
    var arrayToReversed = require_array_to_reversed();
    var toIndexedObject = require_to_indexed_object();
    var addToUnscopables = require_add_to_unscopables();
    var $Array = Array;
    $2({ target: "Array", proto: true }, {
      toReversed: function toReversed() {
        return arrayToReversed(toIndexedObject(this), $Array);
      }
    });
    addToUnscopables("toReversed");
  }
});

// ../../node_modules/core-js/internals/array-from-constructor-and-list.js
var require_array_from_constructor_and_list = __commonJS({
  "../../node_modules/core-js/internals/array-from-constructor-and-list.js"(exports2, module2) {
    var lengthOfArrayLike = require_length_of_array_like();
    module2.exports = function(Constructor, list6) {
      var index4 = 0;
      var length = lengthOfArrayLike(list6);
      var result = new Constructor(length);
      while (length > index4) result[index4] = list6[index4++];
      return result;
    };
  }
});

// ../../node_modules/core-js/internals/entry-virtual.js
var require_entry_virtual = __commonJS({
  "../../node_modules/core-js/internals/entry-virtual.js"(exports2, module2) {
    var global2 = require_global();
    module2.exports = function(CONSTRUCTOR) {
      return global2[CONSTRUCTOR].prototype;
    };
  }
});

// ../../node_modules/core-js/modules/es.array.to-sorted.js
var require_es_array_to_sorted = __commonJS({
  "../../node_modules/core-js/modules/es.array.to-sorted.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var aCallable = require_a_callable();
    var toIndexedObject = require_to_indexed_object();
    var arrayFromConstructorAndList = require_array_from_constructor_and_list();
    var getVirtual = require_entry_virtual();
    var addToUnscopables = require_add_to_unscopables();
    var $Array = Array;
    var sort = uncurryThis(getVirtual("Array").sort);
    $2({ target: "Array", proto: true }, {
      toSorted: function toSorted(compareFn) {
        if (compareFn !== void 0) aCallable(compareFn);
        var O = toIndexedObject(this);
        var A2 = arrayFromConstructorAndList($Array, O);
        return sort(A2, compareFn);
      }
    });
    addToUnscopables("toSorted");
  }
});

// ../../node_modules/core-js/modules/es.array.to-spliced.js
var require_es_array_to_spliced = __commonJS({
  "../../node_modules/core-js/modules/es.array.to-spliced.js"() {
    "use strict";
    var $2 = require_export();
    var addToUnscopables = require_add_to_unscopables();
    var doesNotExceedSafeInteger = require_does_not_exceed_safe_integer();
    var lengthOfArrayLike = require_length_of_array_like();
    var toAbsoluteIndex = require_to_absolute_index();
    var toIndexedObject = require_to_indexed_object();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var $Array = Array;
    var max = Math.max;
    var min = Math.min;
    $2({ target: "Array", proto: true }, {
      toSpliced: function toSpliced(start, deleteCount) {
        var O = toIndexedObject(this);
        var len = lengthOfArrayLike(O);
        var actualStart = toAbsoluteIndex(start, len);
        var argumentsLength = arguments.length;
        var k = 0;
        var insertCount, actualDeleteCount, newLen, A2;
        if (argumentsLength === 0) {
          insertCount = actualDeleteCount = 0;
        } else if (argumentsLength === 1) {
          insertCount = 0;
          actualDeleteCount = len - actualStart;
        } else {
          insertCount = argumentsLength - 2;
          actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);
        }
        newLen = doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);
        A2 = $Array(newLen);
        for (; k < actualStart; k++) A2[k] = O[k];
        for (; k < actualStart + insertCount; k++) A2[k] = arguments[k - actualStart + 2];
        for (; k < newLen; k++) A2[k] = O[k + actualDeleteCount - insertCount];
        return A2;
      }
    });
    addToUnscopables("toSpliced");
  }
});

// ../../node_modules/core-js/modules/es.array.unscopables.flat.js
var require_es_array_unscopables_flat = __commonJS({
  "../../node_modules/core-js/modules/es.array.unscopables.flat.js"() {
    var addToUnscopables = require_add_to_unscopables();
    addToUnscopables("flat");
  }
});

// ../../node_modules/core-js/modules/es.array.unscopables.flat-map.js
var require_es_array_unscopables_flat_map = __commonJS({
  "../../node_modules/core-js/modules/es.array.unscopables.flat-map.js"() {
    var addToUnscopables = require_add_to_unscopables();
    addToUnscopables("flatMap");
  }
});

// ../../node_modules/core-js/modules/es.array.unshift.js
var require_es_array_unshift = __commonJS({
  "../../node_modules/core-js/modules/es.array.unshift.js"() {
    "use strict";
    var $2 = require_export();
    var toObject = require_to_object();
    var lengthOfArrayLike = require_length_of_array_like();
    var setArrayLength = require_array_set_length();
    var deletePropertyOrThrow = require_delete_property_or_throw();
    var doesNotExceedSafeInteger = require_does_not_exceed_safe_integer();
    var INCORRECT_RESULT = [].unshift(0) !== 1;
    var properErrorOnNonWritableLength = function() {
      try {
        Object.defineProperty([], "length", { writable: false }).unshift();
      } catch (error) {
        return error instanceof TypeError;
      }
    };
    var FORCED = INCORRECT_RESULT || !properErrorOnNonWritableLength();
    $2({ target: "Array", proto: true, arity: 1, forced: FORCED }, {
      // eslint-disable-next-line no-unused-vars -- required for `.length`
      unshift: function unshift(item) {
        var O = toObject(this);
        var len = lengthOfArrayLike(O);
        var argCount = arguments.length;
        if (argCount) {
          doesNotExceedSafeInteger(len + argCount);
          var k = len;
          while (k--) {
            var to = k + argCount;
            if (k in O) O[to] = O[k];
            else deletePropertyOrThrow(O, to);
          }
          for (var j = 0; j < argCount; j++) {
            O[j] = arguments[j];
          }
        }
        return setArrayLength(O, len + argCount);
      }
    });
  }
});

// ../../node_modules/core-js/internals/array-with.js
var require_array_with = __commonJS({
  "../../node_modules/core-js/internals/array-with.js"(exports2, module2) {
    var lengthOfArrayLike = require_length_of_array_like();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var $RangeError = RangeError;
    module2.exports = function(O, C, index4, value) {
      var len = lengthOfArrayLike(O);
      var relativeIndex = toIntegerOrInfinity(index4);
      var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;
      if (actualIndex >= len || actualIndex < 0) throw $RangeError("Incorrect index");
      var A2 = new C(len);
      var k = 0;
      for (; k < len; k++) A2[k] = k === actualIndex ? value : O[k];
      return A2;
    };
  }
});

// ../../node_modules/core-js/modules/es.array.with.js
var require_es_array_with = __commonJS({
  "../../node_modules/core-js/modules/es.array.with.js"() {
    "use strict";
    var $2 = require_export();
    var arrayWith = require_array_with();
    var toIndexedObject = require_to_indexed_object();
    var $Array = Array;
    $2({ target: "Array", proto: true }, {
      "with": function(index4, value) {
        return arrayWith(toIndexedObject(this), $Array, index4, value);
      }
    });
  }
});

// ../../node_modules/core-js/internals/array-buffer-basic-detection.js
var require_array_buffer_basic_detection = __commonJS({
  "../../node_modules/core-js/internals/array-buffer-basic-detection.js"(exports2, module2) {
    module2.exports = typeof ArrayBuffer != "undefined" && typeof DataView != "undefined";
  }
});

// ../../node_modules/core-js/internals/define-built-ins.js
var require_define_built_ins = __commonJS({
  "../../node_modules/core-js/internals/define-built-ins.js"(exports2, module2) {
    var defineBuiltIn = require_define_built_in();
    module2.exports = function(target, src, options) {
      for (var key2 in src) defineBuiltIn(target, key2, src[key2], options);
      return target;
    };
  }
});

// ../../node_modules/core-js/internals/an-instance.js
var require_an_instance = __commonJS({
  "../../node_modules/core-js/internals/an-instance.js"(exports2, module2) {
    var isPrototypeOf = require_object_is_prototype_of();
    var $TypeError = TypeError;
    module2.exports = function(it, Prototype) {
      if (isPrototypeOf(Prototype, it)) return it;
      throw $TypeError("Incorrect invocation");
    };
  }
});

// ../../node_modules/core-js/internals/to-index.js
var require_to_index = __commonJS({
  "../../node_modules/core-js/internals/to-index.js"(exports2, module2) {
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var toLength = require_to_length();
    var $RangeError = RangeError;
    module2.exports = function(it) {
      if (it === void 0) return 0;
      var number2 = toIntegerOrInfinity(it);
      var length = toLength(number2);
      if (number2 !== length) throw $RangeError("Wrong length or index");
      return length;
    };
  }
});

// ../../node_modules/core-js/internals/ieee754.js
var require_ieee754 = __commonJS({
  "../../node_modules/core-js/internals/ieee754.js"(exports2, module2) {
    var $Array = Array;
    var abs = Math.abs;
    var pow = Math.pow;
    var floor = Math.floor;
    var log = Math.log;
    var LN2 = Math.LN2;
    var pack = function(number2, mantissaLength, bytes) {
      var buffer2 = $Array(bytes);
      var exponentLength = bytes * 8 - mantissaLength - 1;
      var eMax = (1 << exponentLength) - 1;
      var eBias = eMax >> 1;
      var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;
      var sign = number2 < 0 || number2 === 0 && 1 / number2 < 0 ? 1 : 0;
      var index4 = 0;
      var exponent, mantissa, c;
      number2 = abs(number2);
      if (number2 != number2 || number2 === Infinity) {
        mantissa = number2 != number2 ? 1 : 0;
        exponent = eMax;
      } else {
        exponent = floor(log(number2) / LN2);
        c = pow(2, -exponent);
        if (number2 * c < 1) {
          exponent--;
          c *= 2;
        }
        if (exponent + eBias >= 1) {
          number2 += rt / c;
        } else {
          number2 += rt * pow(2, 1 - eBias);
        }
        if (number2 * c >= 2) {
          exponent++;
          c /= 2;
        }
        if (exponent + eBias >= eMax) {
          mantissa = 0;
          exponent = eMax;
        } else if (exponent + eBias >= 1) {
          mantissa = (number2 * c - 1) * pow(2, mantissaLength);
          exponent = exponent + eBias;
        } else {
          mantissa = number2 * pow(2, eBias - 1) * pow(2, mantissaLength);
          exponent = 0;
        }
      }
      while (mantissaLength >= 8) {
        buffer2[index4++] = mantissa & 255;
        mantissa /= 256;
        mantissaLength -= 8;
      }
      exponent = exponent << mantissaLength | mantissa;
      exponentLength += mantissaLength;
      while (exponentLength > 0) {
        buffer2[index4++] = exponent & 255;
        exponent /= 256;
        exponentLength -= 8;
      }
      buffer2[--index4] |= sign * 128;
      return buffer2;
    };
    var unpack = function(buffer2, mantissaLength) {
      var bytes = buffer2.length;
      var exponentLength = bytes * 8 - mantissaLength - 1;
      var eMax = (1 << exponentLength) - 1;
      var eBias = eMax >> 1;
      var nBits = exponentLength - 7;
      var index4 = bytes - 1;
      var sign = buffer2[index4--];
      var exponent = sign & 127;
      var mantissa;
      sign >>= 7;
      while (nBits > 0) {
        exponent = exponent * 256 + buffer2[index4--];
        nBits -= 8;
      }
      mantissa = exponent & (1 << -nBits) - 1;
      exponent >>= -nBits;
      nBits += mantissaLength;
      while (nBits > 0) {
        mantissa = mantissa * 256 + buffer2[index4--];
        nBits -= 8;
      }
      if (exponent === 0) {
        exponent = 1 - eBias;
      } else if (exponent === eMax) {
        return mantissa ? NaN : sign ? -Infinity : Infinity;
      } else {
        mantissa = mantissa + pow(2, mantissaLength);
        exponent = exponent - eBias;
      }
      return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);
    };
    module2.exports = {
      pack,
      unpack
    };
  }
});

// ../../node_modules/core-js/internals/array-buffer.js
var require_array_buffer = __commonJS({
  "../../node_modules/core-js/internals/array-buffer.js"(exports2, module2) {
    "use strict";
    var global2 = require_global();
    var uncurryThis = require_function_uncurry_this();
    var DESCRIPTORS = require_descriptors();
    var NATIVE_ARRAY_BUFFER = require_array_buffer_basic_detection();
    var FunctionName = require_function_name();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var defineBuiltIns = require_define_built_ins();
    var fails = require_fails();
    var anInstance = require_an_instance();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var toLength = require_to_length();
    var toIndex = require_to_index();
    var IEEE754 = require_ieee754();
    var getPrototypeOf2 = require_object_get_prototype_of();
    var setPrototypeOf = require_object_set_prototype_of();
    var getOwnPropertyNames = require_object_get_own_property_names().f;
    var arrayFill = require_array_fill();
    var arraySlice = require_array_slice_simple();
    var setToStringTag = require_set_to_string_tag();
    var InternalStateModule = require_internal_state();
    var PROPER_FUNCTION_NAME = FunctionName.PROPER;
    var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;
    var ARRAY_BUFFER = "ArrayBuffer";
    var DATA_VIEW = "DataView";
    var PROTOTYPE = "prototype";
    var WRONG_LENGTH = "Wrong length";
    var WRONG_INDEX = "Wrong index";
    var getInternalArrayBufferState = InternalStateModule.getterFor(ARRAY_BUFFER);
    var getInternalDataViewState = InternalStateModule.getterFor(DATA_VIEW);
    var setInternalState = InternalStateModule.set;
    var NativeArrayBuffer = global2[ARRAY_BUFFER];
    var $ArrayBuffer = NativeArrayBuffer;
    var ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];
    var $DataView = global2[DATA_VIEW];
    var DataViewPrototype = $DataView && $DataView[PROTOTYPE];
    var ObjectPrototype = Object.prototype;
    var Array2 = global2.Array;
    var RangeError2 = global2.RangeError;
    var fill3 = uncurryThis(arrayFill);
    var reverse = uncurryThis([].reverse);
    var packIEEE754 = IEEE754.pack;
    var unpackIEEE754 = IEEE754.unpack;
    var packInt8 = function(number2) {
      return [number2 & 255];
    };
    var packInt16 = function(number2) {
      return [number2 & 255, number2 >> 8 & 255];
    };
    var packInt32 = function(number2) {
      return [number2 & 255, number2 >> 8 & 255, number2 >> 16 & 255, number2 >> 24 & 255];
    };
    var unpackInt32 = function(buffer2) {
      return buffer2[3] << 24 | buffer2[2] << 16 | buffer2[1] << 8 | buffer2[0];
    };
    var packFloat32 = function(number2) {
      return packIEEE754(number2, 23, 4);
    };
    var packFloat64 = function(number2) {
      return packIEEE754(number2, 52, 8);
    };
    var addGetter = function(Constructor, key3, getInternalState) {
      defineBuiltInAccessor(Constructor[PROTOTYPE], key3, {
        configurable: true,
        get: function() {
          return getInternalState(this)[key3];
        }
      });
    };
    var get = function(view, count2, index4, isLittleEndian) {
      var store = getInternalDataViewState(view);
      var intIndex = toIndex(index4);
      var boolIsLittleEndian = !!isLittleEndian;
      if (intIndex + count2 > store.byteLength) throw RangeError2(WRONG_INDEX);
      var bytes = store.bytes;
      var start = intIndex + store.byteOffset;
      var pack = arraySlice(bytes, start, start + count2);
      return boolIsLittleEndian ? pack : reverse(pack);
    };
    var set3 = function(view, count2, index4, conversion, value, isLittleEndian) {
      var store = getInternalDataViewState(view);
      var intIndex = toIndex(index4);
      var pack = conversion(+value);
      var boolIsLittleEndian = !!isLittleEndian;
      if (intIndex + count2 > store.byteLength) throw RangeError2(WRONG_INDEX);
      var bytes = store.bytes;
      var start = intIndex + store.byteOffset;
      for (var i2 = 0; i2 < count2; i2++) bytes[start + i2] = pack[boolIsLittleEndian ? i2 : count2 - i2 - 1];
    };
    if (!NATIVE_ARRAY_BUFFER) {
      $ArrayBuffer = function ArrayBuffer2(length) {
        anInstance(this, ArrayBufferPrototype);
        var byteLength2 = toIndex(length);
        setInternalState(this, {
          type: ARRAY_BUFFER,
          bytes: fill3(Array2(byteLength2), 0),
          byteLength: byteLength2
        });
        if (!DESCRIPTORS) {
          this.byteLength = byteLength2;
          this.detached = false;
        }
      };
      ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];
      $DataView = function DataView2(buffer2, byteOffset, byteLength2) {
        anInstance(this, DataViewPrototype);
        anInstance(buffer2, ArrayBufferPrototype);
        var bufferState = getInternalArrayBufferState(buffer2);
        var bufferLength = bufferState.byteLength;
        var offset = toIntegerOrInfinity(byteOffset);
        if (offset < 0 || offset > bufferLength) throw RangeError2("Wrong offset");
        byteLength2 = byteLength2 === void 0 ? bufferLength - offset : toLength(byteLength2);
        if (offset + byteLength2 > bufferLength) throw RangeError2(WRONG_LENGTH);
        setInternalState(this, {
          type: DATA_VIEW,
          buffer: buffer2,
          byteLength: byteLength2,
          byteOffset: offset,
          bytes: bufferState.bytes
        });
        if (!DESCRIPTORS) {
          this.buffer = buffer2;
          this.byteLength = byteLength2;
          this.byteOffset = offset;
        }
      };
      DataViewPrototype = $DataView[PROTOTYPE];
      if (DESCRIPTORS) {
        addGetter($ArrayBuffer, "byteLength", getInternalArrayBufferState);
        addGetter($DataView, "buffer", getInternalDataViewState);
        addGetter($DataView, "byteLength", getInternalDataViewState);
        addGetter($DataView, "byteOffset", getInternalDataViewState);
      }
      defineBuiltIns(DataViewPrototype, {
        getInt8: function getInt8(byteOffset) {
          return get(this, 1, byteOffset)[0] << 24 >> 24;
        },
        getUint8: function getUint8(byteOffset) {
          return get(this, 1, byteOffset)[0];
        },
        getInt16: function getInt16(byteOffset) {
          var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);
          return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
        },
        getUint16: function getUint16(byteOffset) {
          var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);
          return bytes[1] << 8 | bytes[0];
        },
        getInt32: function getInt32(byteOffset) {
          return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false));
        },
        getUint32: function getUint32(byteOffset) {
          return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)) >>> 0;
        },
        getFloat32: function getFloat32(byteOffset) {
          return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false), 23);
        },
        getFloat64: function getFloat64(byteOffset) {
          return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : false), 52);
        },
        setInt8: function setInt8(byteOffset, value) {
          set3(this, 1, byteOffset, packInt8, value);
        },
        setUint8: function setUint8(byteOffset, value) {
          set3(this, 1, byteOffset, packInt8, value);
        },
        setInt16: function setInt16(byteOffset, value) {
          set3(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);
        },
        setUint16: function setUint16(byteOffset, value) {
          set3(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);
        },
        setInt32: function setInt32(byteOffset, value) {
          set3(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);
        },
        setUint32: function setUint32(byteOffset, value) {
          set3(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);
        },
        setFloat32: function setFloat32(byteOffset, value) {
          set3(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : false);
        },
        setFloat64: function setFloat64(byteOffset, value) {
          set3(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : false);
        }
      });
    } else {
      INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;
      if (!fails(function() {
        NativeArrayBuffer(1);
      }) || !fails(function() {
        new NativeArrayBuffer(-1);
      }) || fails(function() {
        new NativeArrayBuffer();
        new NativeArrayBuffer(1.5);
        new NativeArrayBuffer(NaN);
        return NativeArrayBuffer.length != 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;
      })) {
        $ArrayBuffer = function ArrayBuffer2(length) {
          anInstance(this, ArrayBufferPrototype);
          return new NativeArrayBuffer(toIndex(length));
        };
        $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;
        for (keys2 = getOwnPropertyNames(NativeArrayBuffer), j = 0; keys2.length > j; ) {
          if (!((key2 = keys2[j++]) in $ArrayBuffer)) {
            createNonEnumerableProperty($ArrayBuffer, key2, NativeArrayBuffer[key2]);
          }
        }
        ArrayBufferPrototype.constructor = $ArrayBuffer;
      } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {
        createNonEnumerableProperty(NativeArrayBuffer, "name", ARRAY_BUFFER);
      }
      if (setPrototypeOf && getPrototypeOf2(DataViewPrototype) !== ObjectPrototype) {
        setPrototypeOf(DataViewPrototype, ObjectPrototype);
      }
      testView = new $DataView(new $ArrayBuffer(2));
      $setInt8 = uncurryThis(DataViewPrototype.setInt8);
      testView.setInt8(0, 2147483648);
      testView.setInt8(1, 2147483649);
      if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {
        setInt8: function setInt8(byteOffset, value) {
          $setInt8(this, byteOffset, value << 24 >> 24);
        },
        setUint8: function setUint8(byteOffset, value) {
          $setInt8(this, byteOffset, value << 24 >> 24);
        }
      }, { unsafe: true });
    }
    var INCORRECT_ARRAY_BUFFER_NAME;
    var keys2;
    var j;
    var key2;
    var testView;
    var $setInt8;
    setToStringTag($ArrayBuffer, ARRAY_BUFFER);
    setToStringTag($DataView, DATA_VIEW);
    module2.exports = {
      ArrayBuffer: $ArrayBuffer,
      DataView: $DataView
    };
  }
});

// ../../node_modules/core-js/modules/es.array-buffer.constructor.js
var require_es_array_buffer_constructor = __commonJS({
  "../../node_modules/core-js/modules/es.array-buffer.constructor.js"() {
    "use strict";
    var $2 = require_export();
    var global2 = require_global();
    var arrayBufferModule = require_array_buffer();
    var setSpecies = require_set_species();
    var ARRAY_BUFFER = "ArrayBuffer";
    var ArrayBuffer2 = arrayBufferModule[ARRAY_BUFFER];
    var NativeArrayBuffer = global2[ARRAY_BUFFER];
    $2({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer2 }, {
      ArrayBuffer: ArrayBuffer2
    });
    setSpecies(ARRAY_BUFFER);
  }
});

// ../../node_modules/core-js/internals/array-buffer-view-core.js
var require_array_buffer_view_core = __commonJS({
  "../../node_modules/core-js/internals/array-buffer-view-core.js"(exports2, module2) {
    "use strict";
    var NATIVE_ARRAY_BUFFER = require_array_buffer_basic_detection();
    var DESCRIPTORS = require_descriptors();
    var global2 = require_global();
    var isCallable = require_is_callable();
    var isObject2 = require_is_object();
    var hasOwn = require_has_own_property();
    var classof = require_classof();
    var tryToString = require_try_to_string();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var defineBuiltIn = require_define_built_in();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var isPrototypeOf = require_object_is_prototype_of();
    var getPrototypeOf2 = require_object_get_prototype_of();
    var setPrototypeOf = require_object_set_prototype_of();
    var wellKnownSymbol = require_well_known_symbol();
    var uid = require_uid();
    var InternalStateModule = require_internal_state();
    var enforceInternalState = InternalStateModule.enforce;
    var getInternalState = InternalStateModule.get;
    var Int8Array2 = global2.Int8Array;
    var Int8ArrayPrototype = Int8Array2 && Int8Array2.prototype;
    var Uint8ClampedArray2 = global2.Uint8ClampedArray;
    var Uint8ClampedArrayPrototype = Uint8ClampedArray2 && Uint8ClampedArray2.prototype;
    var TypedArray = Int8Array2 && getPrototypeOf2(Int8Array2);
    var TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf2(Int8ArrayPrototype);
    var ObjectPrototype = Object.prototype;
    var TypeError2 = global2.TypeError;
    var TO_STRING_TAG = wellKnownSymbol("toStringTag");
    var TYPED_ARRAY_TAG = uid("TYPED_ARRAY_TAG");
    var TYPED_ARRAY_CONSTRUCTOR = "TypedArrayConstructor";
    var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global2.opera) !== "Opera";
    var TYPED_ARRAY_TAG_REQUIRED = false;
    var NAME2;
    var Constructor;
    var Prototype;
    var TypedArrayConstructorsList = {
      Int8Array: 1,
      Uint8Array: 1,
      Uint8ClampedArray: 1,
      Int16Array: 2,
      Uint16Array: 2,
      Int32Array: 4,
      Uint32Array: 4,
      Float32Array: 4,
      Float64Array: 8
    };
    var BigIntArrayConstructorsList = {
      BigInt64Array: 8,
      BigUint64Array: 8
    };
    var isView = function isView2(it) {
      if (!isObject2(it)) return false;
      var klass = classof(it);
      return klass === "DataView" || hasOwn(TypedArrayConstructorsList, klass) || hasOwn(BigIntArrayConstructorsList, klass);
    };
    var getTypedArrayConstructor = function(it) {
      var proto9 = getPrototypeOf2(it);
      if (!isObject2(proto9)) return;
      var state = getInternalState(proto9);
      return state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto9);
    };
    var isTypedArray = function(it) {
      if (!isObject2(it)) return false;
      var klass = classof(it);
      return hasOwn(TypedArrayConstructorsList, klass) || hasOwn(BigIntArrayConstructorsList, klass);
    };
    var aTypedArray = function(it) {
      if (isTypedArray(it)) return it;
      throw TypeError2("Target is not a typed array");
    };
    var aTypedArrayConstructor = function(C) {
      if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;
      throw TypeError2(tryToString(C) + " is not a typed array constructor");
    };
    var exportTypedArrayMethod = function(KEY, property, forced, options) {
      if (!DESCRIPTORS) return;
      if (forced) for (var ARRAY in TypedArrayConstructorsList) {
        var TypedArrayConstructor = global2[ARRAY];
        if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {
          delete TypedArrayConstructor.prototype[KEY];
        } catch (error) {
          try {
            TypedArrayConstructor.prototype[KEY] = property;
          } catch (error2) {
          }
        }
      }
      if (!TypedArrayPrototype[KEY] || forced) {
        defineBuiltIn(TypedArrayPrototype, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);
      }
    };
    var exportTypedArrayStaticMethod = function(KEY, property, forced) {
      var ARRAY, TypedArrayConstructor;
      if (!DESCRIPTORS) return;
      if (setPrototypeOf) {
        if (forced) for (ARRAY in TypedArrayConstructorsList) {
          TypedArrayConstructor = global2[ARRAY];
          if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {
            delete TypedArrayConstructor[KEY];
          } catch (error) {
          }
        }
        if (!TypedArray[KEY] || forced) {
          try {
            return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);
          } catch (error) {
          }
        } else return;
      }
      for (ARRAY in TypedArrayConstructorsList) {
        TypedArrayConstructor = global2[ARRAY];
        if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {
          defineBuiltIn(TypedArrayConstructor, KEY, property);
        }
      }
    };
    for (NAME2 in TypedArrayConstructorsList) {
      Constructor = global2[NAME2];
      Prototype = Constructor && Constructor.prototype;
      if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;
      else NATIVE_ARRAY_BUFFER_VIEWS = false;
    }
    for (NAME2 in BigIntArrayConstructorsList) {
      Constructor = global2[NAME2];
      Prototype = Constructor && Constructor.prototype;
      if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;
    }
    if (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {
      TypedArray = function TypedArray2() {
        throw TypeError2("Incorrect invocation");
      };
      if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME2 in TypedArrayConstructorsList) {
        if (global2[NAME2]) setPrototypeOf(global2[NAME2], TypedArray);
      }
    }
    if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {
      TypedArrayPrototype = TypedArray.prototype;
      if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME2 in TypedArrayConstructorsList) {
        if (global2[NAME2]) setPrototypeOf(global2[NAME2].prototype, TypedArrayPrototype);
      }
    }
    if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf2(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {
      setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);
    }
    if (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {
      TYPED_ARRAY_TAG_REQUIRED = true;
      defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {
        configurable: true,
        get: function() {
          return isObject2(this) ? this[TYPED_ARRAY_TAG] : void 0;
        }
      });
      for (NAME2 in TypedArrayConstructorsList) if (global2[NAME2]) {
        createNonEnumerableProperty(global2[NAME2], TYPED_ARRAY_TAG, NAME2);
      }
    }
    module2.exports = {
      NATIVE_ARRAY_BUFFER_VIEWS,
      TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,
      aTypedArray,
      aTypedArrayConstructor,
      exportTypedArrayMethod,
      exportTypedArrayStaticMethod,
      getTypedArrayConstructor,
      isView,
      isTypedArray,
      TypedArray,
      TypedArrayPrototype
    };
  }
});

// ../../node_modules/core-js/modules/es.array-buffer.is-view.js
var require_es_array_buffer_is_view = __commonJS({
  "../../node_modules/core-js/modules/es.array-buffer.is-view.js"() {
    var $2 = require_export();
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;
    $2({ target: "ArrayBuffer", stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {
      isView: ArrayBufferViewCore.isView
    });
  }
});

// ../../node_modules/core-js/internals/a-constructor.js
var require_a_constructor = __commonJS({
  "../../node_modules/core-js/internals/a-constructor.js"(exports2, module2) {
    var isConstructor = require_is_constructor();
    var tryToString = require_try_to_string();
    var $TypeError = TypeError;
    module2.exports = function(argument2) {
      if (isConstructor(argument2)) return argument2;
      throw $TypeError(tryToString(argument2) + " is not a constructor");
    };
  }
});

// ../../node_modules/core-js/internals/species-constructor.js
var require_species_constructor = __commonJS({
  "../../node_modules/core-js/internals/species-constructor.js"(exports2, module2) {
    var anObject = require_an_object();
    var aConstructor = require_a_constructor();
    var isNullOrUndefined = require_is_null_or_undefined();
    var wellKnownSymbol = require_well_known_symbol();
    var SPECIES = wellKnownSymbol("species");
    module2.exports = function(O, defaultConstructor) {
      var C = anObject(O).constructor;
      var S3;
      return C === void 0 || isNullOrUndefined(S3 = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S3);
    };
  }
});

// ../../node_modules/core-js/modules/es.array-buffer.slice.js
var require_es_array_buffer_slice = __commonJS({
  "../../node_modules/core-js/modules/es.array-buffer.slice.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this_clause();
    var fails = require_fails();
    var ArrayBufferModule = require_array_buffer();
    var anObject = require_an_object();
    var toAbsoluteIndex = require_to_absolute_index();
    var toLength = require_to_length();
    var speciesConstructor = require_species_constructor();
    var ArrayBuffer2 = ArrayBufferModule.ArrayBuffer;
    var DataView2 = ArrayBufferModule.DataView;
    var DataViewPrototype = DataView2.prototype;
    var nativeArrayBufferSlice = uncurryThis(ArrayBuffer2.prototype.slice);
    var getUint8 = uncurryThis(DataViewPrototype.getUint8);
    var setUint8 = uncurryThis(DataViewPrototype.setUint8);
    var INCORRECT_SLICE = fails(function() {
      return !new ArrayBuffer2(2).slice(1, void 0).byteLength;
    });
    $2({ target: "ArrayBuffer", proto: true, unsafe: true, forced: INCORRECT_SLICE }, {
      slice: function slice2(start, end) {
        if (nativeArrayBufferSlice && end === void 0) {
          return nativeArrayBufferSlice(anObject(this), start);
        }
        var length = anObject(this).byteLength;
        var first2 = toAbsoluteIndex(start, length);
        var fin = toAbsoluteIndex(end === void 0 ? length : end, length);
        var result = new (speciesConstructor(this, ArrayBuffer2))(toLength(fin - first2));
        var viewSource = new DataView2(this);
        var viewTarget = new DataView2(result);
        var index4 = 0;
        while (first2 < fin) {
          setUint8(viewTarget, index4++, getUint8(viewSource, first2++));
        }
        return result;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.data-view.constructor.js
var require_es_data_view_constructor = __commonJS({
  "../../node_modules/core-js/modules/es.data-view.constructor.js"() {
    var $2 = require_export();
    var ArrayBufferModule = require_array_buffer();
    var NATIVE_ARRAY_BUFFER = require_array_buffer_basic_detection();
    $2({ global: true, constructor: true, forced: !NATIVE_ARRAY_BUFFER }, {
      DataView: ArrayBufferModule.DataView
    });
  }
});

// ../../node_modules/core-js/modules/es.data-view.js
var require_es_data_view = __commonJS({
  "../../node_modules/core-js/modules/es.data-view.js"() {
    require_es_data_view_constructor();
  }
});

// ../../node_modules/core-js/modules/es.date.get-year.js
var require_es_date_get_year = __commonJS({
  "../../node_modules/core-js/modules/es.date.get-year.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var fails = require_fails();
    var FORCED = fails(function() {
      return (/* @__PURE__ */ new Date(16e11)).getYear() !== 120;
    });
    var getFullYear = uncurryThis(Date.prototype.getFullYear);
    $2({ target: "Date", proto: true, forced: FORCED }, {
      getYear: function getYear() {
        return getFullYear(this) - 1900;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.date.now.js
var require_es_date_now = __commonJS({
  "../../node_modules/core-js/modules/es.date.now.js"() {
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var $Date = Date;
    var thisTimeValue = uncurryThis($Date.prototype.getTime);
    $2({ target: "Date", stat: true }, {
      now: function now() {
        return thisTimeValue(new $Date());
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.date.set-year.js
var require_es_date_set_year = __commonJS({
  "../../node_modules/core-js/modules/es.date.set-year.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var DatePrototype = Date.prototype;
    var thisTimeValue = uncurryThis(DatePrototype.getTime);
    var setFullYear = uncurryThis(DatePrototype.setFullYear);
    $2({ target: "Date", proto: true }, {
      setYear: function setYear(year) {
        thisTimeValue(this);
        var yi = toIntegerOrInfinity(year);
        var yyyy = 0 <= yi && yi <= 99 ? yi + 1900 : yi;
        return setFullYear(this, yyyy);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.date.to-gmt-string.js
var require_es_date_to_gmt_string = __commonJS({
  "../../node_modules/core-js/modules/es.date.to-gmt-string.js"() {
    var $2 = require_export();
    $2({ target: "Date", proto: true }, {
      toGMTString: Date.prototype.toUTCString
    });
  }
});

// ../../node_modules/core-js/internals/string-repeat.js
var require_string_repeat = __commonJS({
  "../../node_modules/core-js/internals/string-repeat.js"(exports2, module2) {
    "use strict";
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var toString6 = require_to_string();
    var requireObjectCoercible = require_require_object_coercible();
    var $RangeError = RangeError;
    module2.exports = function repeat2(count2) {
      var str2 = toString6(requireObjectCoercible(this));
      var result = "";
      var n = toIntegerOrInfinity(count2);
      if (n < 0 || n == Infinity) throw $RangeError("Wrong number of repetitions");
      for (; n > 0; (n >>>= 1) && (str2 += str2)) if (n & 1) result += str2;
      return result;
    };
  }
});

// ../../node_modules/core-js/internals/string-pad.js
var require_string_pad = __commonJS({
  "../../node_modules/core-js/internals/string-pad.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var toLength = require_to_length();
    var toString6 = require_to_string();
    var $repeat = require_string_repeat();
    var requireObjectCoercible = require_require_object_coercible();
    var repeat2 = uncurryThis($repeat);
    var stringSlice = uncurryThis("".slice);
    var ceil = Math.ceil;
    var createMethod = function(IS_END) {
      return function($this, maxLength, fillString) {
        var S3 = toString6(requireObjectCoercible($this));
        var intMaxLength = toLength(maxLength);
        var stringLength = S3.length;
        var fillStr = fillString === void 0 ? " " : toString6(fillString);
        var fillLen, stringFiller;
        if (intMaxLength <= stringLength || fillStr == "") return S3;
        fillLen = intMaxLength - stringLength;
        stringFiller = repeat2(fillStr, ceil(fillLen / fillStr.length));
        if (stringFiller.length > fillLen) stringFiller = stringSlice(stringFiller, 0, fillLen);
        return IS_END ? S3 + stringFiller : stringFiller + S3;
      };
    };
    module2.exports = {
      // `String.prototype.padStart` method
      // https://tc39.es/ecma262/#sec-string.prototype.padstart
      start: createMethod(false),
      // `String.prototype.padEnd` method
      // https://tc39.es/ecma262/#sec-string.prototype.padend
      end: createMethod(true)
    };
  }
});

// ../../node_modules/core-js/internals/date-to-iso-string.js
var require_date_to_iso_string = __commonJS({
  "../../node_modules/core-js/internals/date-to-iso-string.js"(exports2, module2) {
    "use strict";
    var uncurryThis = require_function_uncurry_this();
    var fails = require_fails();
    var padStart2 = require_string_pad().start;
    var $RangeError = RangeError;
    var $isFinite = isFinite;
    var abs = Math.abs;
    var DatePrototype = Date.prototype;
    var nativeDateToISOString = DatePrototype.toISOString;
    var thisTimeValue = uncurryThis(DatePrototype.getTime);
    var getUTCDate = uncurryThis(DatePrototype.getUTCDate);
    var getUTCFullYear = uncurryThis(DatePrototype.getUTCFullYear);
    var getUTCHours = uncurryThis(DatePrototype.getUTCHours);
    var getUTCMilliseconds = uncurryThis(DatePrototype.getUTCMilliseconds);
    var getUTCMinutes = uncurryThis(DatePrototype.getUTCMinutes);
    var getUTCMonth = uncurryThis(DatePrototype.getUTCMonth);
    var getUTCSeconds = uncurryThis(DatePrototype.getUTCSeconds);
    module2.exports = fails(function() {
      return nativeDateToISOString.call(new Date(-5e13 - 1)) != "0385-07-25T07:06:39.999Z";
    }) || !fails(function() {
      nativeDateToISOString.call(/* @__PURE__ */ new Date(NaN));
    }) ? function toISOString() {
      if (!$isFinite(thisTimeValue(this))) throw $RangeError("Invalid time value");
      var date = this;
      var year = getUTCFullYear(date);
      var milliseconds = getUTCMilliseconds(date);
      var sign = year < 0 ? "-" : year > 9999 ? "+" : "";
      return sign + padStart2(abs(year), sign ? 6 : 4, 0) + "-" + padStart2(getUTCMonth(date) + 1, 2, 0) + "-" + padStart2(getUTCDate(date), 2, 0) + "T" + padStart2(getUTCHours(date), 2, 0) + ":" + padStart2(getUTCMinutes(date), 2, 0) + ":" + padStart2(getUTCSeconds(date), 2, 0) + "." + padStart2(milliseconds, 3, 0) + "Z";
    } : nativeDateToISOString;
  }
});

// ../../node_modules/core-js/modules/es.date.to-iso-string.js
var require_es_date_to_iso_string = __commonJS({
  "../../node_modules/core-js/modules/es.date.to-iso-string.js"() {
    var $2 = require_export();
    var toISOString = require_date_to_iso_string();
    $2({ target: "Date", proto: true, forced: Date.prototype.toISOString !== toISOString }, {
      toISOString
    });
  }
});

// ../../node_modules/core-js/modules/es.date.to-json.js
var require_es_date_to_json = __commonJS({
  "../../node_modules/core-js/modules/es.date.to-json.js"() {
    "use strict";
    var $2 = require_export();
    var fails = require_fails();
    var toObject = require_to_object();
    var toPrimitive = require_to_primitive();
    var FORCED = fails(function() {
      return (/* @__PURE__ */ new Date(NaN)).toJSON() !== null || Date.prototype.toJSON.call({ toISOString: function() {
        return 1;
      } }) !== 1;
    });
    $2({ target: "Date", proto: true, arity: 1, forced: FORCED }, {
      // eslint-disable-next-line no-unused-vars -- required for `.length`
      toJSON: function toJSON2(key2) {
        var O = toObject(this);
        var pv = toPrimitive(O, "number");
        return typeof pv == "number" && !isFinite(pv) ? null : O.toISOString();
      }
    });
  }
});

// ../../node_modules/core-js/internals/date-to-primitive.js
var require_date_to_primitive = __commonJS({
  "../../node_modules/core-js/internals/date-to-primitive.js"(exports2, module2) {
    "use strict";
    var anObject = require_an_object();
    var ordinaryToPrimitive = require_ordinary_to_primitive();
    var $TypeError = TypeError;
    module2.exports = function(hint) {
      anObject(this);
      if (hint === "string" || hint === "default") hint = "string";
      else if (hint !== "number") throw $TypeError("Incorrect hint");
      return ordinaryToPrimitive(this, hint);
    };
  }
});

// ../../node_modules/core-js/modules/es.date.to-primitive.js
var require_es_date_to_primitive = __commonJS({
  "../../node_modules/core-js/modules/es.date.to-primitive.js"() {
    var hasOwn = require_has_own_property();
    var defineBuiltIn = require_define_built_in();
    var dateToPrimitive = require_date_to_primitive();
    var wellKnownSymbol = require_well_known_symbol();
    var TO_PRIMITIVE = wellKnownSymbol("toPrimitive");
    var DatePrototype = Date.prototype;
    if (!hasOwn(DatePrototype, TO_PRIMITIVE)) {
      defineBuiltIn(DatePrototype, TO_PRIMITIVE, dateToPrimitive);
    }
  }
});

// ../../node_modules/core-js/modules/es.date.to-string.js
var require_es_date_to_string = __commonJS({
  "../../node_modules/core-js/modules/es.date.to-string.js"() {
    var uncurryThis = require_function_uncurry_this();
    var defineBuiltIn = require_define_built_in();
    var DatePrototype = Date.prototype;
    var INVALID_DATE = "Invalid Date";
    var TO_STRING = "toString";
    var nativeDateToString = uncurryThis(DatePrototype[TO_STRING]);
    var thisTimeValue = uncurryThis(DatePrototype.getTime);
    if (String(/* @__PURE__ */ new Date(NaN)) != INVALID_DATE) {
      defineBuiltIn(DatePrototype, TO_STRING, function toString6() {
        var value = thisTimeValue(this);
        return value === value ? nativeDateToString(this) : INVALID_DATE;
      });
    }
  }
});

// ../../node_modules/core-js/modules/es.escape.js
var require_es_escape = __commonJS({
  "../../node_modules/core-js/modules/es.escape.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var toString6 = require_to_string();
    var charAt = uncurryThis("".charAt);
    var charCodeAt = uncurryThis("".charCodeAt);
    var exec3 = uncurryThis(/./.exec);
    var numberToString = uncurryThis(1 .toString);
    var toUpperCase = uncurryThis("".toUpperCase);
    var raw2 = /[\w*+\-./@]/;
    var hex = function(code7, length) {
      var result = numberToString(code7, 16);
      while (result.length < length) result = "0" + result;
      return result;
    };
    $2({ global: true }, {
      escape: function escape5(string2) {
        var str2 = toString6(string2);
        var result = "";
        var length = str2.length;
        var index4 = 0;
        var chr, code7;
        while (index4 < length) {
          chr = charAt(str2, index4++);
          if (exec3(raw2, chr)) {
            result += chr;
          } else {
            code7 = charCodeAt(chr, 0);
            if (code7 < 256) {
              result += "%" + hex(code7, 2);
            } else {
              result += "%u" + toUpperCase(hex(code7, 4));
            }
          }
        }
        return result;
      }
    });
  }
});

// ../../node_modules/core-js/internals/function-bind.js
var require_function_bind = __commonJS({
  "../../node_modules/core-js/internals/function-bind.js"(exports2, module2) {
    "use strict";
    var uncurryThis = require_function_uncurry_this();
    var aCallable = require_a_callable();
    var isObject2 = require_is_object();
    var hasOwn = require_has_own_property();
    var arraySlice = require_array_slice();
    var NATIVE_BIND = require_function_bind_native();
    var $Function = Function;
    var concat2 = uncurryThis([].concat);
    var join19 = uncurryThis([].join);
    var factories = {};
    var construct = function(C, argsLength, args) {
      if (!hasOwn(factories, argsLength)) {
        for (var list6 = [], i2 = 0; i2 < argsLength; i2++) list6[i2] = "a[" + i2 + "]";
        factories[argsLength] = $Function("C,a", "return new C(" + join19(list6, ",") + ")");
      }
      return factories[argsLength](C, args);
    };
    module2.exports = NATIVE_BIND ? $Function.bind : function bind(that) {
      var F2 = aCallable(this);
      var Prototype = F2.prototype;
      var partArgs = arraySlice(arguments, 1);
      var boundFunction = function bound() {
        var args = concat2(partArgs, arraySlice(arguments));
        return this instanceof boundFunction ? construct(F2, args.length, args) : F2.apply(that, args);
      };
      if (isObject2(Prototype)) boundFunction.prototype = Prototype;
      return boundFunction;
    };
  }
});

// ../../node_modules/core-js/modules/es.function.bind.js
var require_es_function_bind = __commonJS({
  "../../node_modules/core-js/modules/es.function.bind.js"() {
    var $2 = require_export();
    var bind = require_function_bind();
    $2({ target: "Function", proto: true, forced: Function.bind !== bind }, {
      bind
    });
  }
});

// ../../node_modules/core-js/modules/es.function.has-instance.js
var require_es_function_has_instance = __commonJS({
  "../../node_modules/core-js/modules/es.function.has-instance.js"() {
    "use strict";
    var isCallable = require_is_callable();
    var isObject2 = require_is_object();
    var definePropertyModule = require_object_define_property();
    var getPrototypeOf2 = require_object_get_prototype_of();
    var wellKnownSymbol = require_well_known_symbol();
    var makeBuiltIn = require_make_built_in();
    var HAS_INSTANCE = wellKnownSymbol("hasInstance");
    var FunctionPrototype = Function.prototype;
    if (!(HAS_INSTANCE in FunctionPrototype)) {
      definePropertyModule.f(FunctionPrototype, HAS_INSTANCE, { value: makeBuiltIn(function(O) {
        if (!isCallable(this) || !isObject2(O)) return false;
        var P = this.prototype;
        if (!isObject2(P)) return O instanceof this;
        while (O = getPrototypeOf2(O)) if (P === O) return true;
        return false;
      }, HAS_INSTANCE) });
    }
  }
});

// ../../node_modules/core-js/modules/es.function.name.js
var require_es_function_name = __commonJS({
  "../../node_modules/core-js/modules/es.function.name.js"() {
    var DESCRIPTORS = require_descriptors();
    var FUNCTION_NAME_EXISTS = require_function_name().EXISTS;
    var uncurryThis = require_function_uncurry_this();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var FunctionPrototype = Function.prototype;
    var functionToString = uncurryThis(FunctionPrototype.toString);
    var nameRE = /function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/;
    var regExpExec = uncurryThis(nameRE.exec);
    var NAME2 = "name";
    if (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {
      defineBuiltInAccessor(FunctionPrototype, NAME2, {
        configurable: true,
        get: function() {
          try {
            return regExpExec(nameRE, functionToString(this))[1];
          } catch (error) {
            return "";
          }
        }
      });
    }
  }
});

// ../../node_modules/core-js/modules/es.global-this.js
var require_es_global_this = __commonJS({
  "../../node_modules/core-js/modules/es.global-this.js"() {
    var $2 = require_export();
    var global2 = require_global();
    $2({ global: true, forced: global2.globalThis !== global2 }, {
      globalThis: global2
    });
  }
});

// ../../node_modules/core-js/modules/es.json.to-string-tag.js
var require_es_json_to_string_tag = __commonJS({
  "../../node_modules/core-js/modules/es.json.to-string-tag.js"() {
    var global2 = require_global();
    var setToStringTag = require_set_to_string_tag();
    setToStringTag(global2.JSON, "JSON", true);
  }
});

// ../../node_modules/core-js/internals/array-buffer-non-extensible.js
var require_array_buffer_non_extensible = __commonJS({
  "../../node_modules/core-js/internals/array-buffer-non-extensible.js"(exports2, module2) {
    var fails = require_fails();
    module2.exports = fails(function() {
      if (typeof ArrayBuffer == "function") {
        var buffer2 = new ArrayBuffer(8);
        if (Object.isExtensible(buffer2)) Object.defineProperty(buffer2, "a", { value: 8 });
      }
    });
  }
});

// ../../node_modules/core-js/internals/object-is-extensible.js
var require_object_is_extensible = __commonJS({
  "../../node_modules/core-js/internals/object-is-extensible.js"(exports2, module2) {
    var fails = require_fails();
    var isObject2 = require_is_object();
    var classof = require_classof_raw();
    var ARRAY_BUFFER_NON_EXTENSIBLE = require_array_buffer_non_extensible();
    var $isExtensible = Object.isExtensible;
    var FAILS_ON_PRIMITIVES = fails(function() {
      $isExtensible(1);
    });
    module2.exports = FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE ? function isExtensible(it) {
      if (!isObject2(it)) return false;
      if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == "ArrayBuffer") return false;
      return $isExtensible ? $isExtensible(it) : true;
    } : $isExtensible;
  }
});

// ../../node_modules/core-js/internals/freezing.js
var require_freezing = __commonJS({
  "../../node_modules/core-js/internals/freezing.js"(exports2, module2) {
    var fails = require_fails();
    module2.exports = !fails(function() {
      return Object.isExtensible(Object.preventExtensions({}));
    });
  }
});

// ../../node_modules/core-js/internals/internal-metadata.js
var require_internal_metadata = __commonJS({
  "../../node_modules/core-js/internals/internal-metadata.js"(exports2, module2) {
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var hiddenKeys = require_hidden_keys();
    var isObject2 = require_is_object();
    var hasOwn = require_has_own_property();
    var defineProperty = require_object_define_property().f;
    var getOwnPropertyNamesModule = require_object_get_own_property_names();
    var getOwnPropertyNamesExternalModule = require_object_get_own_property_names_external();
    var isExtensible = require_object_is_extensible();
    var uid = require_uid();
    var FREEZING = require_freezing();
    var REQUIRED = false;
    var METADATA = uid("meta");
    var id = 0;
    var setMetadata = function(it) {
      defineProperty(it, METADATA, { value: {
        objectID: "O" + id++,
        // object ID
        weakData: {}
        // weak collections IDs
      } });
    };
    var fastKey = function(it, create3) {
      if (!isObject2(it)) return typeof it == "symbol" ? it : (typeof it == "string" ? "S" : "P") + it;
      if (!hasOwn(it, METADATA)) {
        if (!isExtensible(it)) return "F";
        if (!create3) return "E";
        setMetadata(it);
      }
      return it[METADATA].objectID;
    };
    var getWeakData = function(it, create3) {
      if (!hasOwn(it, METADATA)) {
        if (!isExtensible(it)) return true;
        if (!create3) return false;
        setMetadata(it);
      }
      return it[METADATA].weakData;
    };
    var onFreeze = function(it) {
      if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);
      return it;
    };
    var enable = function() {
      meta2.enable = function() {
      };
      REQUIRED = true;
      var getOwnPropertyNames = getOwnPropertyNamesModule.f;
      var splice = uncurryThis([].splice);
      var test2 = {};
      test2[METADATA] = 1;
      if (getOwnPropertyNames(test2).length) {
        getOwnPropertyNamesModule.f = function(it) {
          var result = getOwnPropertyNames(it);
          for (var i2 = 0, length = result.length; i2 < length; i2++) {
            if (result[i2] === METADATA) {
              splice(result, i2, 1);
              break;
            }
          }
          return result;
        };
        $2({ target: "Object", stat: true, forced: true }, {
          getOwnPropertyNames: getOwnPropertyNamesExternalModule.f
        });
      }
    };
    var meta2 = module2.exports = {
      enable,
      fastKey,
      getWeakData,
      onFreeze
    };
    hiddenKeys[METADATA] = true;
  }
});

// ../../node_modules/core-js/internals/collection.js
var require_collection = __commonJS({
  "../../node_modules/core-js/internals/collection.js"(exports2, module2) {
    "use strict";
    var $2 = require_export();
    var global2 = require_global();
    var uncurryThis = require_function_uncurry_this();
    var isForced = require_is_forced();
    var defineBuiltIn = require_define_built_in();
    var InternalMetadataModule = require_internal_metadata();
    var iterate2 = require_iterate();
    var anInstance = require_an_instance();
    var isCallable = require_is_callable();
    var isNullOrUndefined = require_is_null_or_undefined();
    var isObject2 = require_is_object();
    var fails = require_fails();
    var checkCorrectnessOfIteration = require_check_correctness_of_iteration();
    var setToStringTag = require_set_to_string_tag();
    var inheritIfRequired = require_inherit_if_required();
    module2.exports = function(CONSTRUCTOR_NAME, wrapper, common3) {
      var IS_MAP = CONSTRUCTOR_NAME.indexOf("Map") !== -1;
      var IS_WEAK = CONSTRUCTOR_NAME.indexOf("Weak") !== -1;
      var ADDER = IS_MAP ? "set" : "add";
      var NativeConstructor = global2[CONSTRUCTOR_NAME];
      var NativePrototype = NativeConstructor && NativeConstructor.prototype;
      var Constructor = NativeConstructor;
      var exported = {};
      var fixMethod = function(KEY) {
        var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);
        defineBuiltIn(
          NativePrototype,
          KEY,
          KEY == "add" ? function add2(value) {
            uncurriedNativeMethod(this, value === 0 ? 0 : value);
            return this;
          } : KEY == "delete" ? function(key2) {
            return IS_WEAK && !isObject2(key2) ? false : uncurriedNativeMethod(this, key2 === 0 ? 0 : key2);
          } : KEY == "get" ? function get(key2) {
            return IS_WEAK && !isObject2(key2) ? void 0 : uncurriedNativeMethod(this, key2 === 0 ? 0 : key2);
          } : KEY == "has" ? function has3(key2) {
            return IS_WEAK && !isObject2(key2) ? false : uncurriedNativeMethod(this, key2 === 0 ? 0 : key2);
          } : function set3(key2, value) {
            uncurriedNativeMethod(this, key2 === 0 ? 0 : key2, value);
            return this;
          }
        );
      };
      var REPLACE = isForced(
        CONSTRUCTOR_NAME,
        !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function() {
          new NativeConstructor().entries().next();
        }))
      );
      if (REPLACE) {
        Constructor = common3.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);
        InternalMetadataModule.enable();
      } else if (isForced(CONSTRUCTOR_NAME, true)) {
        var instance = new Constructor();
        var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
        var THROWS_ON_PRIMITIVES = fails(function() {
          instance.has(1);
        });
        var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function(iterable) {
          new NativeConstructor(iterable);
        });
        var BUGGY_ZERO = !IS_WEAK && fails(function() {
          var $instance = new NativeConstructor();
          var index4 = 5;
          while (index4--) $instance[ADDER](index4, index4);
          return !$instance.has(-0);
        });
        if (!ACCEPT_ITERABLES) {
          Constructor = wrapper(function(dummy, iterable) {
            anInstance(dummy, NativePrototype);
            var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);
            if (!isNullOrUndefined(iterable)) iterate2(iterable, that[ADDER], { that, AS_ENTRIES: IS_MAP });
            return that;
          });
          Constructor.prototype = NativePrototype;
          NativePrototype.constructor = Constructor;
        }
        if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
          fixMethod("delete");
          fixMethod("has");
          IS_MAP && fixMethod("get");
        }
        if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
        if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;
      }
      exported[CONSTRUCTOR_NAME] = Constructor;
      $2({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported);
      setToStringTag(Constructor, CONSTRUCTOR_NAME);
      if (!IS_WEAK) common3.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);
      return Constructor;
    };
  }
});

// ../../node_modules/core-js/internals/collection-strong.js
var require_collection_strong = __commonJS({
  "../../node_modules/core-js/internals/collection-strong.js"(exports2, module2) {
    "use strict";
    var create3 = require_object_create();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var defineBuiltIns = require_define_built_ins();
    var bind = require_function_bind_context();
    var anInstance = require_an_instance();
    var isNullOrUndefined = require_is_null_or_undefined();
    var iterate2 = require_iterate();
    var defineIterator = require_iterator_define();
    var createIterResultObject = require_create_iter_result_object();
    var setSpecies = require_set_species();
    var DESCRIPTORS = require_descriptors();
    var fastKey = require_internal_metadata().fastKey;
    var InternalStateModule = require_internal_state();
    var setInternalState = InternalStateModule.set;
    var internalStateGetterFor = InternalStateModule.getterFor;
    module2.exports = {
      getConstructor: function(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {
        var Constructor = wrapper(function(that, iterable) {
          anInstance(that, Prototype);
          setInternalState(that, {
            type: CONSTRUCTOR_NAME,
            index: create3(null),
            first: void 0,
            last: void 0,
            size: 0
          });
          if (!DESCRIPTORS) that.size = 0;
          if (!isNullOrUndefined(iterable)) iterate2(iterable, that[ADDER], { that, AS_ENTRIES: IS_MAP });
        });
        var Prototype = Constructor.prototype;
        var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
        var define2 = function(that, key2, value) {
          var state = getInternalState(that);
          var entry = getEntry(that, key2);
          var previous, index4;
          if (entry) {
            entry.value = value;
          } else {
            state.last = entry = {
              index: index4 = fastKey(key2, true),
              key: key2,
              value,
              previous: previous = state.last,
              next: void 0,
              removed: false
            };
            if (!state.first) state.first = entry;
            if (previous) previous.next = entry;
            if (DESCRIPTORS) state.size++;
            else that.size++;
            if (index4 !== "F") state.index[index4] = entry;
          }
          return that;
        };
        var getEntry = function(that, key2) {
          var state = getInternalState(that);
          var index4 = fastKey(key2);
          var entry;
          if (index4 !== "F") return state.index[index4];
          for (entry = state.first; entry; entry = entry.next) {
            if (entry.key == key2) return entry;
          }
        };
        defineBuiltIns(Prototype, {
          // `{ Map, Set }.prototype.clear()` methods
          // https://tc39.es/ecma262/#sec-map.prototype.clear
          // https://tc39.es/ecma262/#sec-set.prototype.clear
          clear: function clear() {
            var that = this;
            var state = getInternalState(that);
            var data = state.index;
            var entry = state.first;
            while (entry) {
              entry.removed = true;
              if (entry.previous) entry.previous = entry.previous.next = void 0;
              delete data[entry.index];
              entry = entry.next;
            }
            state.first = state.last = void 0;
            if (DESCRIPTORS) state.size = 0;
            else that.size = 0;
          },
          // `{ Map, Set }.prototype.delete(key)` methods
          // https://tc39.es/ecma262/#sec-map.prototype.delete
          // https://tc39.es/ecma262/#sec-set.prototype.delete
          "delete": function(key2) {
            var that = this;
            var state = getInternalState(that);
            var entry = getEntry(that, key2);
            if (entry) {
              var next = entry.next;
              var prev = entry.previous;
              delete state.index[entry.index];
              entry.removed = true;
              if (prev) prev.next = next;
              if (next) next.previous = prev;
              if (state.first == entry) state.first = next;
              if (state.last == entry) state.last = prev;
              if (DESCRIPTORS) state.size--;
              else that.size--;
            }
            return !!entry;
          },
          // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods
          // https://tc39.es/ecma262/#sec-map.prototype.foreach
          // https://tc39.es/ecma262/#sec-set.prototype.foreach
          forEach: function forEach(callbackfn) {
            var state = getInternalState(this);
            var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : void 0);
            var entry;
            while (entry = entry ? entry.next : state.first) {
              boundFunction(entry.value, entry.key, this);
              while (entry && entry.removed) entry = entry.previous;
            }
          },
          // `{ Map, Set}.prototype.has(key)` methods
          // https://tc39.es/ecma262/#sec-map.prototype.has
          // https://tc39.es/ecma262/#sec-set.prototype.has
          has: function has3(key2) {
            return !!getEntry(this, key2);
          }
        });
        defineBuiltIns(Prototype, IS_MAP ? {
          // `Map.prototype.get(key)` method
          // https://tc39.es/ecma262/#sec-map.prototype.get
          get: function get(key2) {
            var entry = getEntry(this, key2);
            return entry && entry.value;
          },
          // `Map.prototype.set(key, value)` method
          // https://tc39.es/ecma262/#sec-map.prototype.set
          set: function set3(key2, value) {
            return define2(this, key2 === 0 ? 0 : key2, value);
          }
        } : {
          // `Set.prototype.add(value)` method
          // https://tc39.es/ecma262/#sec-set.prototype.add
          add: function add2(value) {
            return define2(this, value = value === 0 ? 0 : value, value);
          }
        });
        if (DESCRIPTORS) defineBuiltInAccessor(Prototype, "size", {
          configurable: true,
          get: function() {
            return getInternalState(this).size;
          }
        });
        return Constructor;
      },
      setStrong: function(Constructor, CONSTRUCTOR_NAME, IS_MAP) {
        var ITERATOR_NAME = CONSTRUCTOR_NAME + " Iterator";
        var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);
        var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);
        defineIterator(Constructor, CONSTRUCTOR_NAME, function(iterated, kind) {
          setInternalState(this, {
            type: ITERATOR_NAME,
            target: iterated,
            state: getInternalCollectionState(iterated),
            kind,
            last: void 0
          });
        }, function() {
          var state = getInternalIteratorState(this);
          var kind = state.kind;
          var entry = state.last;
          while (entry && entry.removed) entry = entry.previous;
          if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {
            state.target = void 0;
            return createIterResultObject(void 0, true);
          }
          if (kind == "keys") return createIterResultObject(entry.key, false);
          if (kind == "values") return createIterResultObject(entry.value, false);
          return createIterResultObject([entry.key, entry.value], false);
        }, IS_MAP ? "entries" : "values", !IS_MAP, true);
        setSpecies(CONSTRUCTOR_NAME);
      }
    };
  }
});

// ../../node_modules/core-js/modules/es.map.constructor.js
var require_es_map_constructor = __commonJS({
  "../../node_modules/core-js/modules/es.map.constructor.js"() {
    "use strict";
    var collection = require_collection();
    var collectionStrong = require_collection_strong();
    collection("Map", function(init4) {
      return function Map2() {
        return init4(this, arguments.length ? arguments[0] : void 0);
      };
    }, collectionStrong);
  }
});

// ../../node_modules/core-js/modules/es.map.js
var require_es_map = __commonJS({
  "../../node_modules/core-js/modules/es.map.js"() {
    require_es_map_constructor();
  }
});

// ../../node_modules/core-js/internals/math-log1p.js
var require_math_log1p = __commonJS({
  "../../node_modules/core-js/internals/math-log1p.js"(exports2, module2) {
    var log = Math.log;
    module2.exports = Math.log1p || function log1p(x2) {
      var n = +x2;
      return n > -1e-8 && n < 1e-8 ? n - n * n / 2 : log(1 + n);
    };
  }
});

// ../../node_modules/core-js/modules/es.math.acosh.js
var require_es_math_acosh = __commonJS({
  "../../node_modules/core-js/modules/es.math.acosh.js"() {
    var $2 = require_export();
    var log1p = require_math_log1p();
    var $acosh = Math.acosh;
    var log = Math.log;
    var sqrt = Math.sqrt;
    var LN2 = Math.LN2;
    var FORCED = !$acosh || Math.floor($acosh(Number.MAX_VALUE)) != 710 || $acosh(Infinity) != Infinity;
    $2({ target: "Math", stat: true, forced: FORCED }, {
      acosh: function acosh(x2) {
        var n = +x2;
        return n < 1 ? NaN : n > 9490626562425156e-8 ? log(n) + LN2 : log1p(n - 1 + sqrt(n - 1) * sqrt(n + 1));
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.math.asinh.js
var require_es_math_asinh = __commonJS({
  "../../node_modules/core-js/modules/es.math.asinh.js"() {
    var $2 = require_export();
    var $asinh = Math.asinh;
    var log = Math.log;
    var sqrt = Math.sqrt;
    function asinh(x2) {
      var n = +x2;
      return !isFinite(n) || n == 0 ? n : n < 0 ? -asinh(-n) : log(n + sqrt(n * n + 1));
    }
    var FORCED = !($asinh && 1 / $asinh(0) > 0);
    $2({ target: "Math", stat: true, forced: FORCED }, {
      asinh
    });
  }
});

// ../../node_modules/core-js/modules/es.math.atanh.js
var require_es_math_atanh = __commonJS({
  "../../node_modules/core-js/modules/es.math.atanh.js"() {
    var $2 = require_export();
    var $atanh = Math.atanh;
    var log = Math.log;
    var FORCED = !($atanh && 1 / $atanh(-0) < 0);
    $2({ target: "Math", stat: true, forced: FORCED }, {
      atanh: function atanh(x2) {
        var n = +x2;
        return n == 0 ? n : log((1 + n) / (1 - n)) / 2;
      }
    });
  }
});

// ../../node_modules/core-js/internals/math-sign.js
var require_math_sign = __commonJS({
  "../../node_modules/core-js/internals/math-sign.js"(exports2, module2) {
    module2.exports = Math.sign || function sign(x2) {
      var n = +x2;
      return n == 0 || n != n ? n : n < 0 ? -1 : 1;
    };
  }
});

// ../../node_modules/core-js/modules/es.math.cbrt.js
var require_es_math_cbrt = __commonJS({
  "../../node_modules/core-js/modules/es.math.cbrt.js"() {
    var $2 = require_export();
    var sign = require_math_sign();
    var abs = Math.abs;
    var pow = Math.pow;
    $2({ target: "Math", stat: true }, {
      cbrt: function cbrt(x2) {
        var n = +x2;
        return sign(n) * pow(abs(n), 1 / 3);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.math.clz32.js
var require_es_math_clz32 = __commonJS({
  "../../node_modules/core-js/modules/es.math.clz32.js"() {
    var $2 = require_export();
    var floor = Math.floor;
    var log = Math.log;
    var LOG2E = Math.LOG2E;
    $2({ target: "Math", stat: true }, {
      clz32: function clz32(x2) {
        var n = x2 >>> 0;
        return n ? 31 - floor(log(n + 0.5) * LOG2E) : 32;
      }
    });
  }
});

// ../../node_modules/core-js/internals/math-expm1.js
var require_math_expm1 = __commonJS({
  "../../node_modules/core-js/internals/math-expm1.js"(exports2, module2) {
    var $expm1 = Math.expm1;
    var exp = Math.exp;
    module2.exports = !$expm1 || $expm1(10) > 22025.465794806718 || $expm1(10) < 22025.465794806718 || $expm1(-2e-17) != -2e-17 ? function expm1(x2) {
      var n = +x2;
      return n == 0 ? n : n > -1e-6 && n < 1e-6 ? n + n * n / 2 : exp(n) - 1;
    } : $expm1;
  }
});

// ../../node_modules/core-js/modules/es.math.cosh.js
var require_es_math_cosh = __commonJS({
  "../../node_modules/core-js/modules/es.math.cosh.js"() {
    var $2 = require_export();
    var expm1 = require_math_expm1();
    var $cosh = Math.cosh;
    var abs = Math.abs;
    var E = Math.E;
    var FORCED = !$cosh || $cosh(710) === Infinity;
    $2({ target: "Math", stat: true, forced: FORCED }, {
      cosh: function cosh(x2) {
        var t2 = expm1(abs(x2) - 1) + 1;
        return (t2 + 1 / (t2 * E * E)) * (E / 2);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.math.expm1.js
var require_es_math_expm1 = __commonJS({
  "../../node_modules/core-js/modules/es.math.expm1.js"() {
    var $2 = require_export();
    var expm1 = require_math_expm1();
    $2({ target: "Math", stat: true, forced: expm1 != Math.expm1 }, { expm1 });
  }
});

// ../../node_modules/core-js/internals/math-fround.js
var require_math_fround = __commonJS({
  "../../node_modules/core-js/internals/math-fround.js"(exports2, module2) {
    var sign = require_math_sign();
    var abs = Math.abs;
    var pow = Math.pow;
    var EPSILON = pow(2, -52);
    var EPSILON32 = pow(2, -23);
    var MAX32 = pow(2, 127) * (2 - EPSILON32);
    var MIN32 = pow(2, -126);
    var roundTiesToEven = function(n) {
      return n + 1 / EPSILON - 1 / EPSILON;
    };
    module2.exports = Math.fround || function fround(x2) {
      var n = +x2;
      var $abs = abs(n);
      var $sign = sign(n);
      var a2, result;
      if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
      a2 = (1 + EPSILON32 / EPSILON) * $abs;
      result = a2 - (a2 - $abs);
      if (result > MAX32 || result != result) return $sign * Infinity;
      return $sign * result;
    };
  }
});

// ../../node_modules/core-js/modules/es.math.fround.js
var require_es_math_fround = __commonJS({
  "../../node_modules/core-js/modules/es.math.fround.js"() {
    var $2 = require_export();
    var fround = require_math_fround();
    $2({ target: "Math", stat: true }, { fround });
  }
});

// ../../node_modules/core-js/modules/es.math.hypot.js
var require_es_math_hypot = __commonJS({
  "../../node_modules/core-js/modules/es.math.hypot.js"() {
    var $2 = require_export();
    var $hypot = Math.hypot;
    var abs = Math.abs;
    var sqrt = Math.sqrt;
    var FORCED = !!$hypot && $hypot(Infinity, NaN) !== Infinity;
    $2({ target: "Math", stat: true, arity: 2, forced: FORCED }, {
      // eslint-disable-next-line no-unused-vars -- required for `.length`
      hypot: function hypot(value1, value2) {
        var sum = 0;
        var i2 = 0;
        var aLen = arguments.length;
        var larg = 0;
        var arg2, div2;
        while (i2 < aLen) {
          arg2 = abs(arguments[i2++]);
          if (larg < arg2) {
            div2 = larg / arg2;
            sum = sum * div2 * div2 + 1;
            larg = arg2;
          } else if (arg2 > 0) {
            div2 = arg2 / larg;
            sum += div2 * div2;
          } else sum += arg2;
        }
        return larg === Infinity ? Infinity : larg * sqrt(sum);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.math.imul.js
var require_es_math_imul = __commonJS({
  "../../node_modules/core-js/modules/es.math.imul.js"() {
    var $2 = require_export();
    var fails = require_fails();
    var $imul = Math.imul;
    var FORCED = fails(function() {
      return $imul(4294967295, 5) != -5 || $imul.length != 2;
    });
    $2({ target: "Math", stat: true, forced: FORCED }, {
      imul: function imul(x2, y) {
        var UINT16 = 65535;
        var xn = +x2;
        var yn = +y;
        var xl = UINT16 & xn;
        var yl = UINT16 & yn;
        return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
      }
    });
  }
});

// ../../node_modules/core-js/internals/math-log10.js
var require_math_log10 = __commonJS({
  "../../node_modules/core-js/internals/math-log10.js"(exports2, module2) {
    var log = Math.log;
    var LOG10E = Math.LOG10E;
    module2.exports = Math.log10 || function log10(x2) {
      return log(x2) * LOG10E;
    };
  }
});

// ../../node_modules/core-js/modules/es.math.log10.js
var require_es_math_log10 = __commonJS({
  "../../node_modules/core-js/modules/es.math.log10.js"() {
    var $2 = require_export();
    var log10 = require_math_log10();
    $2({ target: "Math", stat: true }, {
      log10
    });
  }
});

// ../../node_modules/core-js/modules/es.math.log1p.js
var require_es_math_log1p = __commonJS({
  "../../node_modules/core-js/modules/es.math.log1p.js"() {
    var $2 = require_export();
    var log1p = require_math_log1p();
    $2({ target: "Math", stat: true }, { log1p });
  }
});

// ../../node_modules/core-js/modules/es.math.log2.js
var require_es_math_log2 = __commonJS({
  "../../node_modules/core-js/modules/es.math.log2.js"() {
    var $2 = require_export();
    var log = Math.log;
    var LN2 = Math.LN2;
    $2({ target: "Math", stat: true }, {
      log2: function log2(x2) {
        return log(x2) / LN2;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.math.sign.js
var require_es_math_sign = __commonJS({
  "../../node_modules/core-js/modules/es.math.sign.js"() {
    var $2 = require_export();
    var sign = require_math_sign();
    $2({ target: "Math", stat: true }, {
      sign
    });
  }
});

// ../../node_modules/core-js/modules/es.math.sinh.js
var require_es_math_sinh = __commonJS({
  "../../node_modules/core-js/modules/es.math.sinh.js"() {
    var $2 = require_export();
    var fails = require_fails();
    var expm1 = require_math_expm1();
    var abs = Math.abs;
    var exp = Math.exp;
    var E = Math.E;
    var FORCED = fails(function() {
      return Math.sinh(-2e-17) != -2e-17;
    });
    $2({ target: "Math", stat: true, forced: FORCED }, {
      sinh: function sinh(x2) {
        var n = +x2;
        return abs(n) < 1 ? (expm1(n) - expm1(-n)) / 2 : (exp(n - 1) - exp(-n - 1)) * (E / 2);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.math.tanh.js
var require_es_math_tanh = __commonJS({
  "../../node_modules/core-js/modules/es.math.tanh.js"() {
    var $2 = require_export();
    var expm1 = require_math_expm1();
    var exp = Math.exp;
    $2({ target: "Math", stat: true }, {
      tanh: function tanh(x2) {
        var n = +x2;
        var a2 = expm1(n);
        var b = expm1(-n);
        return a2 == Infinity ? 1 : b == Infinity ? -1 : (a2 - b) / (exp(n) + exp(-n));
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.math.to-string-tag.js
var require_es_math_to_string_tag = __commonJS({
  "../../node_modules/core-js/modules/es.math.to-string-tag.js"() {
    var setToStringTag = require_set_to_string_tag();
    setToStringTag(Math, "Math", true);
  }
});

// ../../node_modules/core-js/modules/es.math.trunc.js
var require_es_math_trunc = __commonJS({
  "../../node_modules/core-js/modules/es.math.trunc.js"() {
    var $2 = require_export();
    var trunc = require_math_trunc();
    $2({ target: "Math", stat: true }, {
      trunc
    });
  }
});

// ../../node_modules/core-js/internals/this-number-value.js
var require_this_number_value = __commonJS({
  "../../node_modules/core-js/internals/this-number-value.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    module2.exports = uncurryThis(1 .valueOf);
  }
});

// ../../node_modules/core-js/internals/whitespaces.js
var require_whitespaces = __commonJS({
  "../../node_modules/core-js/internals/whitespaces.js"(exports2, module2) {
    module2.exports = "	\n\v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF";
  }
});

// ../../node_modules/core-js/internals/string-trim.js
var require_string_trim = __commonJS({
  "../../node_modules/core-js/internals/string-trim.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var requireObjectCoercible = require_require_object_coercible();
    var toString6 = require_to_string();
    var whitespaces = require_whitespaces();
    var replace = uncurryThis("".replace);
    var ltrim = RegExp("^[" + whitespaces + "]+");
    var rtrim = RegExp("(^|[^" + whitespaces + "])[" + whitespaces + "]+$");
    var createMethod = function(TYPE2) {
      return function($this) {
        var string2 = toString6(requireObjectCoercible($this));
        if (TYPE2 & 1) string2 = replace(string2, ltrim, "");
        if (TYPE2 & 2) string2 = replace(string2, rtrim, "$1");
        return string2;
      };
    };
    module2.exports = {
      // `String.prototype.{ trimLeft, trimStart }` methods
      // https://tc39.es/ecma262/#sec-string.prototype.trimstart
      start: createMethod(1),
      // `String.prototype.{ trimRight, trimEnd }` methods
      // https://tc39.es/ecma262/#sec-string.prototype.trimend
      end: createMethod(2),
      // `String.prototype.trim` method
      // https://tc39.es/ecma262/#sec-string.prototype.trim
      trim: createMethod(3)
    };
  }
});

// ../../node_modules/core-js/modules/es.number.constructor.js
var require_es_number_constructor = __commonJS({
  "../../node_modules/core-js/modules/es.number.constructor.js"() {
    "use strict";
    var $2 = require_export();
    var IS_PURE = require_is_pure();
    var DESCRIPTORS = require_descriptors();
    var global2 = require_global();
    var path45 = require_path();
    var uncurryThis = require_function_uncurry_this();
    var isForced = require_is_forced();
    var hasOwn = require_has_own_property();
    var inheritIfRequired = require_inherit_if_required();
    var isPrototypeOf = require_object_is_prototype_of();
    var isSymbol = require_is_symbol();
    var toPrimitive = require_to_primitive();
    var fails = require_fails();
    var getOwnPropertyNames = require_object_get_own_property_names().f;
    var getOwnPropertyDescriptor = require_object_get_own_property_descriptor().f;
    var defineProperty = require_object_define_property().f;
    var thisNumberValue = require_this_number_value();
    var trim2 = require_string_trim().trim;
    var NUMBER = "Number";
    var NativeNumber = global2[NUMBER];
    var PureNumberNamespace = path45[NUMBER];
    var NumberPrototype = NativeNumber.prototype;
    var TypeError2 = global2.TypeError;
    var stringSlice = uncurryThis("".slice);
    var charCodeAt = uncurryThis("".charCodeAt);
    var toNumeric = function(value) {
      var primValue = toPrimitive(value, "number");
      return typeof primValue == "bigint" ? primValue : toNumber(primValue);
    };
    var toNumber = function(argument2) {
      var it = toPrimitive(argument2, "number");
      var first2, third, radix, maxCode, digits, length, index4, code7;
      if (isSymbol(it)) throw TypeError2("Cannot convert a Symbol value to a number");
      if (typeof it == "string" && it.length > 2) {
        it = trim2(it);
        first2 = charCodeAt(it, 0);
        if (first2 === 43 || first2 === 45) {
          third = charCodeAt(it, 2);
          if (third === 88 || third === 120) return NaN;
        } else if (first2 === 48) {
          switch (charCodeAt(it, 1)) {
            case 66:
            case 98:
              radix = 2;
              maxCode = 49;
              break;
            // fast equal of /^0b[01]+$/i
            case 79:
            case 111:
              radix = 8;
              maxCode = 55;
              break;
            // fast equal of /^0o[0-7]+$/i
            default:
              return +it;
          }
          digits = stringSlice(it, 2);
          length = digits.length;
          for (index4 = 0; index4 < length; index4++) {
            code7 = charCodeAt(digits, index4);
            if (code7 < 48 || code7 > maxCode) return NaN;
          }
          return parseInt(digits, radix);
        }
      }
      return +it;
    };
    var FORCED = isForced(NUMBER, !NativeNumber(" 0o1") || !NativeNumber("0b1") || NativeNumber("+0x1"));
    var calledWithNew = function(dummy) {
      return isPrototypeOf(NumberPrototype, dummy) && fails(function() {
        thisNumberValue(dummy);
      });
    };
    var NumberWrapper = function Number2(value) {
      var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));
      return calledWithNew(this) ? inheritIfRequired(Object(n), this, NumberWrapper) : n;
    };
    NumberWrapper.prototype = NumberPrototype;
    if (FORCED && !IS_PURE) NumberPrototype.constructor = NumberWrapper;
    $2({ global: true, constructor: true, wrap: true, forced: FORCED }, {
      Number: NumberWrapper
    });
    var copyConstructorProperties = function(target, source2) {
      for (var keys2 = DESCRIPTORS ? getOwnPropertyNames(source2) : (
        // ES3:
        "MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(",")
      ), j = 0, key2; keys2.length > j; j++) {
        if (hasOwn(source2, key2 = keys2[j]) && !hasOwn(target, key2)) {
          defineProperty(target, key2, getOwnPropertyDescriptor(source2, key2));
        }
      }
    };
    if (IS_PURE && PureNumberNamespace) copyConstructorProperties(path45[NUMBER], PureNumberNamespace);
    if (FORCED || IS_PURE) copyConstructorProperties(path45[NUMBER], NativeNumber);
  }
});

// ../../node_modules/core-js/modules/es.number.epsilon.js
var require_es_number_epsilon = __commonJS({
  "../../node_modules/core-js/modules/es.number.epsilon.js"() {
    var $2 = require_export();
    $2({ target: "Number", stat: true, nonConfigurable: true, nonWritable: true }, {
      EPSILON: Math.pow(2, -52)
    });
  }
});

// ../../node_modules/core-js/internals/number-is-finite.js
var require_number_is_finite = __commonJS({
  "../../node_modules/core-js/internals/number-is-finite.js"(exports2, module2) {
    var global2 = require_global();
    var globalIsFinite = global2.isFinite;
    module2.exports = Number.isFinite || function isFinite2(it) {
      return typeof it == "number" && globalIsFinite(it);
    };
  }
});

// ../../node_modules/core-js/modules/es.number.is-finite.js
var require_es_number_is_finite = __commonJS({
  "../../node_modules/core-js/modules/es.number.is-finite.js"() {
    var $2 = require_export();
    var numberIsFinite = require_number_is_finite();
    $2({ target: "Number", stat: true }, { isFinite: numberIsFinite });
  }
});

// ../../node_modules/core-js/internals/is-integral-number.js
var require_is_integral_number = __commonJS({
  "../../node_modules/core-js/internals/is-integral-number.js"(exports2, module2) {
    var isObject2 = require_is_object();
    var floor = Math.floor;
    module2.exports = Number.isInteger || function isInteger2(it) {
      return !isObject2(it) && isFinite(it) && floor(it) === it;
    };
  }
});

// ../../node_modules/core-js/modules/es.number.is-integer.js
var require_es_number_is_integer = __commonJS({
  "../../node_modules/core-js/modules/es.number.is-integer.js"() {
    var $2 = require_export();
    var isIntegralNumber = require_is_integral_number();
    $2({ target: "Number", stat: true }, {
      isInteger: isIntegralNumber
    });
  }
});

// ../../node_modules/core-js/modules/es.number.is-nan.js
var require_es_number_is_nan = __commonJS({
  "../../node_modules/core-js/modules/es.number.is-nan.js"() {
    var $2 = require_export();
    $2({ target: "Number", stat: true }, {
      isNaN: function isNaN2(number2) {
        return number2 != number2;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.number.is-safe-integer.js
var require_es_number_is_safe_integer = __commonJS({
  "../../node_modules/core-js/modules/es.number.is-safe-integer.js"() {
    var $2 = require_export();
    var isIntegralNumber = require_is_integral_number();
    var abs = Math.abs;
    $2({ target: "Number", stat: true }, {
      isSafeInteger: function isSafeInteger(number2) {
        return isIntegralNumber(number2) && abs(number2) <= 9007199254740991;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.number.max-safe-integer.js
var require_es_number_max_safe_integer = __commonJS({
  "../../node_modules/core-js/modules/es.number.max-safe-integer.js"() {
    var $2 = require_export();
    $2({ target: "Number", stat: true, nonConfigurable: true, nonWritable: true }, {
      MAX_SAFE_INTEGER: 9007199254740991
    });
  }
});

// ../../node_modules/core-js/modules/es.number.min-safe-integer.js
var require_es_number_min_safe_integer = __commonJS({
  "../../node_modules/core-js/modules/es.number.min-safe-integer.js"() {
    var $2 = require_export();
    $2({ target: "Number", stat: true, nonConfigurable: true, nonWritable: true }, {
      MIN_SAFE_INTEGER: -9007199254740991
    });
  }
});

// ../../node_modules/core-js/internals/number-parse-float.js
var require_number_parse_float = __commonJS({
  "../../node_modules/core-js/internals/number-parse-float.js"(exports2, module2) {
    var global2 = require_global();
    var fails = require_fails();
    var uncurryThis = require_function_uncurry_this();
    var toString6 = require_to_string();
    var trim2 = require_string_trim().trim;
    var whitespaces = require_whitespaces();
    var charAt = uncurryThis("".charAt);
    var $parseFloat = global2.parseFloat;
    var Symbol2 = global2.Symbol;
    var ITERATOR = Symbol2 && Symbol2.iterator;
    var FORCED = 1 / $parseFloat(whitespaces + "-0") !== -Infinity || ITERATOR && !fails(function() {
      $parseFloat(Object(ITERATOR));
    });
    module2.exports = FORCED ? function parseFloat2(string2) {
      var trimmedString = trim2(toString6(string2));
      var result = $parseFloat(trimmedString);
      return result === 0 && charAt(trimmedString, 0) == "-" ? -0 : result;
    } : $parseFloat;
  }
});

// ../../node_modules/core-js/modules/es.number.parse-float.js
var require_es_number_parse_float = __commonJS({
  "../../node_modules/core-js/modules/es.number.parse-float.js"() {
    var $2 = require_export();
    var parseFloat2 = require_number_parse_float();
    $2({ target: "Number", stat: true, forced: Number.parseFloat != parseFloat2 }, {
      parseFloat: parseFloat2
    });
  }
});

// ../../node_modules/core-js/internals/number-parse-int.js
var require_number_parse_int = __commonJS({
  "../../node_modules/core-js/internals/number-parse-int.js"(exports2, module2) {
    var global2 = require_global();
    var fails = require_fails();
    var uncurryThis = require_function_uncurry_this();
    var toString6 = require_to_string();
    var trim2 = require_string_trim().trim;
    var whitespaces = require_whitespaces();
    var $parseInt = global2.parseInt;
    var Symbol2 = global2.Symbol;
    var ITERATOR = Symbol2 && Symbol2.iterator;
    var hex = /^[+-]?0x/i;
    var exec3 = uncurryThis(hex.exec);
    var FORCED = $parseInt(whitespaces + "08") !== 8 || $parseInt(whitespaces + "0x16") !== 22 || ITERATOR && !fails(function() {
      $parseInt(Object(ITERATOR));
    });
    module2.exports = FORCED ? function parseInt3(string2, radix) {
      var S3 = trim2(toString6(string2));
      return $parseInt(S3, radix >>> 0 || (exec3(hex, S3) ? 16 : 10));
    } : $parseInt;
  }
});

// ../../node_modules/core-js/modules/es.number.parse-int.js
var require_es_number_parse_int = __commonJS({
  "../../node_modules/core-js/modules/es.number.parse-int.js"() {
    var $2 = require_export();
    var parseInt3 = require_number_parse_int();
    $2({ target: "Number", stat: true, forced: Number.parseInt != parseInt3 }, {
      parseInt: parseInt3
    });
  }
});

// ../../node_modules/core-js/modules/es.number.to-exponential.js
var require_es_number_to_exponential = __commonJS({
  "../../node_modules/core-js/modules/es.number.to-exponential.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var thisNumberValue = require_this_number_value();
    var $repeat = require_string_repeat();
    var log10 = require_math_log10();
    var fails = require_fails();
    var $RangeError = RangeError;
    var $String = String;
    var $isFinite = isFinite;
    var abs = Math.abs;
    var floor = Math.floor;
    var pow = Math.pow;
    var round = Math.round;
    var nativeToExponential = uncurryThis(1 .toExponential);
    var repeat2 = uncurryThis($repeat);
    var stringSlice = uncurryThis("".slice);
    var ROUNDS_PROPERLY = nativeToExponential(-69e-12, 4) === "-6.9000e-11" && nativeToExponential(1.255, 2) === "1.25e+0" && nativeToExponential(12345, 3) === "1.235e+4" && nativeToExponential(25, 0) === "3e+1";
    var throwsOnInfinityFraction = function() {
      return fails(function() {
        nativeToExponential(1, Infinity);
      }) && fails(function() {
        nativeToExponential(1, -Infinity);
      });
    };
    var properNonFiniteThisCheck = function() {
      return !fails(function() {
        nativeToExponential(Infinity, Infinity);
        nativeToExponential(NaN, Infinity);
      });
    };
    var FORCED = !ROUNDS_PROPERLY || !throwsOnInfinityFraction() || !properNonFiniteThisCheck();
    $2({ target: "Number", proto: true, forced: FORCED }, {
      toExponential: function toExponential(fractionDigits) {
        var x2 = thisNumberValue(this);
        if (fractionDigits === void 0) return nativeToExponential(x2);
        var f3 = toIntegerOrInfinity(fractionDigits);
        if (!$isFinite(x2)) return String(x2);
        if (f3 < 0 || f3 > 20) throw $RangeError("Incorrect fraction digits");
        if (ROUNDS_PROPERLY) return nativeToExponential(x2, f3);
        var s5 = "";
        var m2 = "";
        var e2 = 0;
        var c = "";
        var d = "";
        if (x2 < 0) {
          s5 = "-";
          x2 = -x2;
        }
        if (x2 === 0) {
          e2 = 0;
          m2 = repeat2("0", f3 + 1);
        } else {
          var l = log10(x2);
          e2 = floor(l);
          var n = 0;
          var w = pow(10, e2 - f3);
          n = round(x2 / w);
          if (2 * x2 >= (2 * n + 1) * w) {
            n += 1;
          }
          if (n >= pow(10, f3 + 1)) {
            n /= 10;
            e2 += 1;
          }
          m2 = $String(n);
        }
        if (f3 !== 0) {
          m2 = stringSlice(m2, 0, 1) + "." + stringSlice(m2, 1);
        }
        if (e2 === 0) {
          c = "+";
          d = "0";
        } else {
          c = e2 > 0 ? "+" : "-";
          d = $String(abs(e2));
        }
        m2 += "e" + c + d;
        return s5 + m2;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.number.to-fixed.js
var require_es_number_to_fixed = __commonJS({
  "../../node_modules/core-js/modules/es.number.to-fixed.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var thisNumberValue = require_this_number_value();
    var $repeat = require_string_repeat();
    var fails = require_fails();
    var $RangeError = RangeError;
    var $String = String;
    var floor = Math.floor;
    var repeat2 = uncurryThis($repeat);
    var stringSlice = uncurryThis("".slice);
    var nativeToFixed = uncurryThis(1 .toFixed);
    var pow = function(x2, n, acc) {
      return n === 0 ? acc : n % 2 === 1 ? pow(x2, n - 1, acc * x2) : pow(x2 * x2, n / 2, acc);
    };
    var log = function(x2) {
      var n = 0;
      var x22 = x2;
      while (x22 >= 4096) {
        n += 12;
        x22 /= 4096;
      }
      while (x22 >= 2) {
        n += 1;
        x22 /= 2;
      }
      return n;
    };
    var multiply = function(data, n, c) {
      var index4 = -1;
      var c2 = c;
      while (++index4 < 6) {
        c2 += n * data[index4];
        data[index4] = c2 % 1e7;
        c2 = floor(c2 / 1e7);
      }
    };
    var divide = function(data, n) {
      var index4 = 6;
      var c = 0;
      while (--index4 >= 0) {
        c += data[index4];
        data[index4] = floor(c / n);
        c = c % n * 1e7;
      }
    };
    var dataToString = function(data) {
      var index4 = 6;
      var s5 = "";
      while (--index4 >= 0) {
        if (s5 !== "" || index4 === 0 || data[index4] !== 0) {
          var t2 = $String(data[index4]);
          s5 = s5 === "" ? t2 : s5 + repeat2("0", 7 - t2.length) + t2;
        }
      }
      return s5;
    };
    var FORCED = fails(function() {
      return nativeToFixed(8e-5, 3) !== "0.000" || nativeToFixed(0.9, 0) !== "1" || nativeToFixed(1.255, 2) !== "1.25" || nativeToFixed(1000000000000000100, 0) !== "1000000000000000128";
    }) || !fails(function() {
      nativeToFixed({});
    });
    $2({ target: "Number", proto: true, forced: FORCED }, {
      toFixed: function toFixed(fractionDigits) {
        var number2 = thisNumberValue(this);
        var fractDigits = toIntegerOrInfinity(fractionDigits);
        var data = [0, 0, 0, 0, 0, 0];
        var sign = "";
        var result = "0";
        var e2, z2, j, k;
        if (fractDigits < 0 || fractDigits > 20) throw $RangeError("Incorrect fraction digits");
        if (number2 != number2) return "NaN";
        if (number2 <= -1e21 || number2 >= 1e21) return $String(number2);
        if (number2 < 0) {
          sign = "-";
          number2 = -number2;
        }
        if (number2 > 1e-21) {
          e2 = log(number2 * pow(2, 69, 1)) - 69;
          z2 = e2 < 0 ? number2 * pow(2, -e2, 1) : number2 / pow(2, e2, 1);
          z2 *= 4503599627370496;
          e2 = 52 - e2;
          if (e2 > 0) {
            multiply(data, 0, z2);
            j = fractDigits;
            while (j >= 7) {
              multiply(data, 1e7, 0);
              j -= 7;
            }
            multiply(data, pow(10, j, 1), 0);
            j = e2 - 1;
            while (j >= 23) {
              divide(data, 1 << 23);
              j -= 23;
            }
            divide(data, 1 << j);
            multiply(data, 1, 1);
            divide(data, 2);
            result = dataToString(data);
          } else {
            multiply(data, 0, z2);
            multiply(data, 1 << -e2, 0);
            result = dataToString(data) + repeat2("0", fractDigits);
          }
        }
        if (fractDigits > 0) {
          k = result.length;
          result = sign + (k <= fractDigits ? "0." + repeat2("0", fractDigits - k) + result : stringSlice(result, 0, k - fractDigits) + "." + stringSlice(result, k - fractDigits));
        } else {
          result = sign + result;
        }
        return result;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.number.to-precision.js
var require_es_number_to_precision = __commonJS({
  "../../node_modules/core-js/modules/es.number.to-precision.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var fails = require_fails();
    var thisNumberValue = require_this_number_value();
    var nativeToPrecision = uncurryThis(1 .toPrecision);
    var FORCED = fails(function() {
      return nativeToPrecision(1, void 0) !== "1";
    }) || !fails(function() {
      nativeToPrecision({});
    });
    $2({ target: "Number", proto: true, forced: FORCED }, {
      toPrecision: function toPrecision(precision) {
        return precision === void 0 ? nativeToPrecision(thisNumberValue(this)) : nativeToPrecision(thisNumberValue(this), precision);
      }
    });
  }
});

// ../../node_modules/core-js/internals/object-assign.js
var require_object_assign = __commonJS({
  "../../node_modules/core-js/internals/object-assign.js"(exports2, module2) {
    "use strict";
    var DESCRIPTORS = require_descriptors();
    var uncurryThis = require_function_uncurry_this();
    var call = require_function_call();
    var fails = require_fails();
    var objectKeys = require_object_keys();
    var getOwnPropertySymbolsModule = require_object_get_own_property_symbols();
    var propertyIsEnumerableModule = require_object_property_is_enumerable();
    var toObject = require_to_object();
    var IndexedObject = require_indexed_object();
    var $assign = Object.assign;
    var defineProperty = Object.defineProperty;
    var concat2 = uncurryThis([].concat);
    module2.exports = !$assign || fails(function() {
      if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, "a", {
        enumerable: true,
        get: function() {
          defineProperty(this, "b", {
            value: 3,
            enumerable: false
          });
        }
      }), { b: 2 })).b !== 1) return true;
      var A2 = {};
      var B = {};
      var symbol = Symbol();
      var alphabet2 = "abcdefghijklmnopqrst";
      A2[symbol] = 7;
      alphabet2.split("").forEach(function(chr) {
        B[chr] = chr;
      });
      return $assign({}, A2)[symbol] != 7 || objectKeys($assign({}, B)).join("") != alphabet2;
    }) ? function assign2(target, source2) {
      var T2 = toObject(target);
      var argumentsLength = arguments.length;
      var index4 = 1;
      var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
      var propertyIsEnumerable = propertyIsEnumerableModule.f;
      while (argumentsLength > index4) {
        var S3 = IndexedObject(arguments[index4++]);
        var keys2 = getOwnPropertySymbols ? concat2(objectKeys(S3), getOwnPropertySymbols(S3)) : objectKeys(S3);
        var length = keys2.length;
        var j = 0;
        var key2;
        while (length > j) {
          key2 = keys2[j++];
          if (!DESCRIPTORS || call(propertyIsEnumerable, S3, key2)) T2[key2] = S3[key2];
        }
      }
      return T2;
    } : $assign;
  }
});

// ../../node_modules/core-js/modules/es.object.assign.js
var require_es_object_assign = __commonJS({
  "../../node_modules/core-js/modules/es.object.assign.js"() {
    var $2 = require_export();
    var assign2 = require_object_assign();
    $2({ target: "Object", stat: true, arity: 2, forced: Object.assign !== assign2 }, {
      assign: assign2
    });
  }
});

// ../../node_modules/core-js/modules/es.object.create.js
var require_es_object_create = __commonJS({
  "../../node_modules/core-js/modules/es.object.create.js"() {
    var $2 = require_export();
    var DESCRIPTORS = require_descriptors();
    var create3 = require_object_create();
    $2({ target: "Object", stat: true, sham: !DESCRIPTORS }, {
      create: create3
    });
  }
});

// ../../node_modules/core-js/internals/object-prototype-accessors-forced.js
var require_object_prototype_accessors_forced = __commonJS({
  "../../node_modules/core-js/internals/object-prototype-accessors-forced.js"(exports2, module2) {
    "use strict";
    var IS_PURE = require_is_pure();
    var global2 = require_global();
    var fails = require_fails();
    var WEBKIT = require_engine_webkit_version();
    module2.exports = IS_PURE || !fails(function() {
      if (WEBKIT && WEBKIT < 535) return;
      var key2 = Math.random();
      __defineSetter__.call(null, key2, function() {
      });
      delete global2[key2];
    });
  }
});

// ../../node_modules/core-js/modules/es.object.define-getter.js
var require_es_object_define_getter = __commonJS({
  "../../node_modules/core-js/modules/es.object.define-getter.js"() {
    "use strict";
    var $2 = require_export();
    var DESCRIPTORS = require_descriptors();
    var FORCED = require_object_prototype_accessors_forced();
    var aCallable = require_a_callable();
    var toObject = require_to_object();
    var definePropertyModule = require_object_define_property();
    if (DESCRIPTORS) {
      $2({ target: "Object", proto: true, forced: FORCED }, {
        __defineGetter__: function __defineGetter__(P, getter) {
          definePropertyModule.f(toObject(this), P, { get: aCallable(getter), enumerable: true, configurable: true });
        }
      });
    }
  }
});

// ../../node_modules/core-js/modules/es.object.define-properties.js
var require_es_object_define_properties = __commonJS({
  "../../node_modules/core-js/modules/es.object.define-properties.js"() {
    var $2 = require_export();
    var DESCRIPTORS = require_descriptors();
    var defineProperties = require_object_define_properties().f;
    $2({ target: "Object", stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, {
      defineProperties
    });
  }
});

// ../../node_modules/core-js/modules/es.object.define-property.js
var require_es_object_define_property = __commonJS({
  "../../node_modules/core-js/modules/es.object.define-property.js"() {
    var $2 = require_export();
    var DESCRIPTORS = require_descriptors();
    var defineProperty = require_object_define_property().f;
    $2({ target: "Object", stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {
      defineProperty
    });
  }
});

// ../../node_modules/core-js/modules/es.object.define-setter.js
var require_es_object_define_setter = __commonJS({
  "../../node_modules/core-js/modules/es.object.define-setter.js"() {
    "use strict";
    var $2 = require_export();
    var DESCRIPTORS = require_descriptors();
    var FORCED = require_object_prototype_accessors_forced();
    var aCallable = require_a_callable();
    var toObject = require_to_object();
    var definePropertyModule = require_object_define_property();
    if (DESCRIPTORS) {
      $2({ target: "Object", proto: true, forced: FORCED }, {
        __defineSetter__: function __defineSetter__2(P, setter) {
          definePropertyModule.f(toObject(this), P, { set: aCallable(setter), enumerable: true, configurable: true });
        }
      });
    }
  }
});

// ../../node_modules/core-js/internals/object-to-array.js
var require_object_to_array = __commonJS({
  "../../node_modules/core-js/internals/object-to-array.js"(exports2, module2) {
    var DESCRIPTORS = require_descriptors();
    var fails = require_fails();
    var uncurryThis = require_function_uncurry_this();
    var objectGetPrototypeOf = require_object_get_prototype_of();
    var objectKeys = require_object_keys();
    var toIndexedObject = require_to_indexed_object();
    var $propertyIsEnumerable = require_object_property_is_enumerable().f;
    var propertyIsEnumerable = uncurryThis($propertyIsEnumerable);
    var push = uncurryThis([].push);
    var IE_BUG = DESCRIPTORS && fails(function() {
      var O = /* @__PURE__ */ Object.create(null);
      O[2] = 2;
      return !propertyIsEnumerable(O, 2);
    });
    var createMethod = function(TO_ENTRIES) {
      return function(it) {
        var O = toIndexedObject(it);
        var keys2 = objectKeys(O);
        var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null;
        var length = keys2.length;
        var i2 = 0;
        var result = [];
        var key2;
        while (length > i2) {
          key2 = keys2[i2++];
          if (!DESCRIPTORS || (IE_WORKAROUND ? key2 in O : propertyIsEnumerable(O, key2))) {
            push(result, TO_ENTRIES ? [key2, O[key2]] : O[key2]);
          }
        }
        return result;
      };
    };
    module2.exports = {
      // `Object.entries` method
      // https://tc39.es/ecma262/#sec-object.entries
      entries: createMethod(true),
      // `Object.values` method
      // https://tc39.es/ecma262/#sec-object.values
      values: createMethod(false)
    };
  }
});

// ../../node_modules/core-js/modules/es.object.entries.js
var require_es_object_entries = __commonJS({
  "../../node_modules/core-js/modules/es.object.entries.js"() {
    var $2 = require_export();
    var $entries = require_object_to_array().entries;
    $2({ target: "Object", stat: true }, {
      entries: function entries2(O) {
        return $entries(O);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.object.freeze.js
var require_es_object_freeze = __commonJS({
  "../../node_modules/core-js/modules/es.object.freeze.js"() {
    var $2 = require_export();
    var FREEZING = require_freezing();
    var fails = require_fails();
    var isObject2 = require_is_object();
    var onFreeze = require_internal_metadata().onFreeze;
    var $freeze = Object.freeze;
    var FAILS_ON_PRIMITIVES = fails(function() {
      $freeze(1);
    });
    $2({ target: "Object", stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {
      freeze: function freeze2(it) {
        return $freeze && isObject2(it) ? $freeze(onFreeze(it)) : it;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.object.from-entries.js
var require_es_object_from_entries = __commonJS({
  "../../node_modules/core-js/modules/es.object.from-entries.js"() {
    var $2 = require_export();
    var iterate2 = require_iterate();
    var createProperty = require_create_property();
    $2({ target: "Object", stat: true }, {
      fromEntries: function fromEntries(iterable) {
        var obj = {};
        iterate2(iterable, function(k, v) {
          createProperty(obj, k, v);
        }, { AS_ENTRIES: true });
        return obj;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.object.get-own-property-descriptor.js
var require_es_object_get_own_property_descriptor = __commonJS({
  "../../node_modules/core-js/modules/es.object.get-own-property-descriptor.js"() {
    var $2 = require_export();
    var fails = require_fails();
    var toIndexedObject = require_to_indexed_object();
    var nativeGetOwnPropertyDescriptor = require_object_get_own_property_descriptor().f;
    var DESCRIPTORS = require_descriptors();
    var FORCED = !DESCRIPTORS || fails(function() {
      nativeGetOwnPropertyDescriptor(1);
    });
    $2({ target: "Object", stat: true, forced: FORCED, sham: !DESCRIPTORS }, {
      getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key2) {
        return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key2);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.object.get-own-property-descriptors.js
var require_es_object_get_own_property_descriptors = __commonJS({
  "../../node_modules/core-js/modules/es.object.get-own-property-descriptors.js"() {
    var $2 = require_export();
    var DESCRIPTORS = require_descriptors();
    var ownKeys = require_own_keys();
    var toIndexedObject = require_to_indexed_object();
    var getOwnPropertyDescriptorModule = require_object_get_own_property_descriptor();
    var createProperty = require_create_property();
    $2({ target: "Object", stat: true, sham: !DESCRIPTORS }, {
      getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
        var O = toIndexedObject(object);
        var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
        var keys2 = ownKeys(O);
        var result = {};
        var index4 = 0;
        var key2, descriptor;
        while (keys2.length > index4) {
          descriptor = getOwnPropertyDescriptor(O, key2 = keys2[index4++]);
          if (descriptor !== void 0) createProperty(result, key2, descriptor);
        }
        return result;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.object.get-own-property-names.js
var require_es_object_get_own_property_names = __commonJS({
  "../../node_modules/core-js/modules/es.object.get-own-property-names.js"() {
    var $2 = require_export();
    var fails = require_fails();
    var getOwnPropertyNames = require_object_get_own_property_names_external().f;
    var FAILS_ON_PRIMITIVES = fails(function() {
      return !Object.getOwnPropertyNames(1);
    });
    $2({ target: "Object", stat: true, forced: FAILS_ON_PRIMITIVES }, {
      getOwnPropertyNames
    });
  }
});

// ../../node_modules/core-js/modules/es.object.get-prototype-of.js
var require_es_object_get_prototype_of = __commonJS({
  "../../node_modules/core-js/modules/es.object.get-prototype-of.js"() {
    var $2 = require_export();
    var fails = require_fails();
    var toObject = require_to_object();
    var nativeGetPrototypeOf = require_object_get_prototype_of();
    var CORRECT_PROTOTYPE_GETTER = require_correct_prototype_getter();
    var FAILS_ON_PRIMITIVES = fails(function() {
      nativeGetPrototypeOf(1);
    });
    $2({ target: "Object", stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {
      getPrototypeOf: function getPrototypeOf2(it) {
        return nativeGetPrototypeOf(toObject(it));
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.object.has-own.js
var require_es_object_has_own = __commonJS({
  "../../node_modules/core-js/modules/es.object.has-own.js"() {
    var $2 = require_export();
    var hasOwn = require_has_own_property();
    $2({ target: "Object", stat: true }, {
      hasOwn
    });
  }
});

// ../../node_modules/core-js/internals/same-value.js
var require_same_value = __commonJS({
  "../../node_modules/core-js/internals/same-value.js"(exports2, module2) {
    module2.exports = Object.is || function is4(x2, y) {
      return x2 === y ? x2 !== 0 || 1 / x2 === 1 / y : x2 != x2 && y != y;
    };
  }
});

// ../../node_modules/core-js/modules/es.object.is.js
var require_es_object_is = __commonJS({
  "../../node_modules/core-js/modules/es.object.is.js"() {
    var $2 = require_export();
    var is4 = require_same_value();
    $2({ target: "Object", stat: true }, {
      is: is4
    });
  }
});

// ../../node_modules/core-js/modules/es.object.is-extensible.js
var require_es_object_is_extensible = __commonJS({
  "../../node_modules/core-js/modules/es.object.is-extensible.js"() {
    var $2 = require_export();
    var $isExtensible = require_object_is_extensible();
    $2({ target: "Object", stat: true, forced: Object.isExtensible !== $isExtensible }, {
      isExtensible: $isExtensible
    });
  }
});

// ../../node_modules/core-js/modules/es.object.is-frozen.js
var require_es_object_is_frozen = __commonJS({
  "../../node_modules/core-js/modules/es.object.is-frozen.js"() {
    var $2 = require_export();
    var fails = require_fails();
    var isObject2 = require_is_object();
    var classof = require_classof_raw();
    var ARRAY_BUFFER_NON_EXTENSIBLE = require_array_buffer_non_extensible();
    var $isFrozen = Object.isFrozen;
    var FORCED = ARRAY_BUFFER_NON_EXTENSIBLE || fails(function() {
      $isFrozen(1);
    });
    $2({ target: "Object", stat: true, forced: FORCED }, {
      isFrozen: function isFrozen2(it) {
        if (!isObject2(it)) return true;
        if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == "ArrayBuffer") return true;
        return $isFrozen ? $isFrozen(it) : false;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.object.is-sealed.js
var require_es_object_is_sealed = __commonJS({
  "../../node_modules/core-js/modules/es.object.is-sealed.js"() {
    var $2 = require_export();
    var fails = require_fails();
    var isObject2 = require_is_object();
    var classof = require_classof_raw();
    var ARRAY_BUFFER_NON_EXTENSIBLE = require_array_buffer_non_extensible();
    var $isSealed = Object.isSealed;
    var FORCED = ARRAY_BUFFER_NON_EXTENSIBLE || fails(function() {
      $isSealed(1);
    });
    $2({ target: "Object", stat: true, forced: FORCED }, {
      isSealed: function isSealed(it) {
        if (!isObject2(it)) return true;
        if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == "ArrayBuffer") return true;
        return $isSealed ? $isSealed(it) : false;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.object.keys.js
var require_es_object_keys = __commonJS({
  "../../node_modules/core-js/modules/es.object.keys.js"() {
    var $2 = require_export();
    var toObject = require_to_object();
    var nativeKeys = require_object_keys();
    var fails = require_fails();
    var FAILS_ON_PRIMITIVES = fails(function() {
      nativeKeys(1);
    });
    $2({ target: "Object", stat: true, forced: FAILS_ON_PRIMITIVES }, {
      keys: function keys2(it) {
        return nativeKeys(toObject(it));
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.object.lookup-getter.js
var require_es_object_lookup_getter = __commonJS({
  "../../node_modules/core-js/modules/es.object.lookup-getter.js"() {
    "use strict";
    var $2 = require_export();
    var DESCRIPTORS = require_descriptors();
    var FORCED = require_object_prototype_accessors_forced();
    var toObject = require_to_object();
    var toPropertyKey = require_to_property_key();
    var getPrototypeOf2 = require_object_get_prototype_of();
    var getOwnPropertyDescriptor = require_object_get_own_property_descriptor().f;
    if (DESCRIPTORS) {
      $2({ target: "Object", proto: true, forced: FORCED }, {
        __lookupGetter__: function __lookupGetter__(P) {
          var O = toObject(this);
          var key2 = toPropertyKey(P);
          var desc;
          do {
            if (desc = getOwnPropertyDescriptor(O, key2)) return desc.get;
          } while (O = getPrototypeOf2(O));
        }
      });
    }
  }
});

// ../../node_modules/core-js/modules/es.object.lookup-setter.js
var require_es_object_lookup_setter = __commonJS({
  "../../node_modules/core-js/modules/es.object.lookup-setter.js"() {
    "use strict";
    var $2 = require_export();
    var DESCRIPTORS = require_descriptors();
    var FORCED = require_object_prototype_accessors_forced();
    var toObject = require_to_object();
    var toPropertyKey = require_to_property_key();
    var getPrototypeOf2 = require_object_get_prototype_of();
    var getOwnPropertyDescriptor = require_object_get_own_property_descriptor().f;
    if (DESCRIPTORS) {
      $2({ target: "Object", proto: true, forced: FORCED }, {
        __lookupSetter__: function __lookupSetter__(P) {
          var O = toObject(this);
          var key2 = toPropertyKey(P);
          var desc;
          do {
            if (desc = getOwnPropertyDescriptor(O, key2)) return desc.set;
          } while (O = getPrototypeOf2(O));
        }
      });
    }
  }
});

// ../../node_modules/core-js/modules/es.object.prevent-extensions.js
var require_es_object_prevent_extensions = __commonJS({
  "../../node_modules/core-js/modules/es.object.prevent-extensions.js"() {
    var $2 = require_export();
    var isObject2 = require_is_object();
    var onFreeze = require_internal_metadata().onFreeze;
    var FREEZING = require_freezing();
    var fails = require_fails();
    var $preventExtensions = Object.preventExtensions;
    var FAILS_ON_PRIMITIVES = fails(function() {
      $preventExtensions(1);
    });
    $2({ target: "Object", stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {
      preventExtensions: function preventExtensions(it) {
        return $preventExtensions && isObject2(it) ? $preventExtensions(onFreeze(it)) : it;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.object.proto.js
var require_es_object_proto = __commonJS({
  "../../node_modules/core-js/modules/es.object.proto.js"() {
    "use strict";
    var DESCRIPTORS = require_descriptors();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var isObject2 = require_is_object();
    var toObject = require_to_object();
    var requireObjectCoercible = require_require_object_coercible();
    var getPrototypeOf2 = Object.getPrototypeOf;
    var setPrototypeOf = Object.setPrototypeOf;
    var ObjectPrototype = Object.prototype;
    var PROTO = "__proto__";
    if (DESCRIPTORS && getPrototypeOf2 && setPrototypeOf && !(PROTO in ObjectPrototype)) try {
      defineBuiltInAccessor(ObjectPrototype, PROTO, {
        configurable: true,
        get: function __proto__() {
          return getPrototypeOf2(toObject(this));
        },
        set: function __proto__(proto9) {
          var O = requireObjectCoercible(this);
          if (!isObject2(proto9) && proto9 !== null || !isObject2(O)) return;
          setPrototypeOf(O, proto9);
        }
      });
    } catch (error) {
    }
  }
});

// ../../node_modules/core-js/modules/es.object.seal.js
var require_es_object_seal = __commonJS({
  "../../node_modules/core-js/modules/es.object.seal.js"() {
    var $2 = require_export();
    var isObject2 = require_is_object();
    var onFreeze = require_internal_metadata().onFreeze;
    var FREEZING = require_freezing();
    var fails = require_fails();
    var $seal = Object.seal;
    var FAILS_ON_PRIMITIVES = fails(function() {
      $seal(1);
    });
    $2({ target: "Object", stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {
      seal: function seal(it) {
        return $seal && isObject2(it) ? $seal(onFreeze(it)) : it;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.object.set-prototype-of.js
var require_es_object_set_prototype_of = __commonJS({
  "../../node_modules/core-js/modules/es.object.set-prototype-of.js"() {
    var $2 = require_export();
    var setPrototypeOf = require_object_set_prototype_of();
    $2({ target: "Object", stat: true }, {
      setPrototypeOf
    });
  }
});

// ../../node_modules/core-js/internals/object-to-string.js
var require_object_to_string = __commonJS({
  "../../node_modules/core-js/internals/object-to-string.js"(exports2, module2) {
    "use strict";
    var TO_STRING_TAG_SUPPORT = require_to_string_tag_support();
    var classof = require_classof();
    module2.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString6() {
      return "[object " + classof(this) + "]";
    };
  }
});

// ../../node_modules/core-js/modules/es.object.to-string.js
var require_es_object_to_string = __commonJS({
  "../../node_modules/core-js/modules/es.object.to-string.js"() {
    var TO_STRING_TAG_SUPPORT = require_to_string_tag_support();
    var defineBuiltIn = require_define_built_in();
    var toString6 = require_object_to_string();
    if (!TO_STRING_TAG_SUPPORT) {
      defineBuiltIn(Object.prototype, "toString", toString6, { unsafe: true });
    }
  }
});

// ../../node_modules/core-js/modules/es.object.values.js
var require_es_object_values = __commonJS({
  "../../node_modules/core-js/modules/es.object.values.js"() {
    var $2 = require_export();
    var $values = require_object_to_array().values;
    $2({ target: "Object", stat: true }, {
      values: function values(O) {
        return $values(O);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.parse-float.js
var require_es_parse_float = __commonJS({
  "../../node_modules/core-js/modules/es.parse-float.js"() {
    var $2 = require_export();
    var $parseFloat = require_number_parse_float();
    $2({ global: true, forced: parseFloat != $parseFloat }, {
      parseFloat: $parseFloat
    });
  }
});

// ../../node_modules/core-js/modules/es.parse-int.js
var require_es_parse_int = __commonJS({
  "../../node_modules/core-js/modules/es.parse-int.js"() {
    var $2 = require_export();
    var $parseInt = require_number_parse_int();
    $2({ global: true, forced: parseInt != $parseInt }, {
      parseInt: $parseInt
    });
  }
});

// ../../node_modules/core-js/internals/validate-arguments-length.js
var require_validate_arguments_length = __commonJS({
  "../../node_modules/core-js/internals/validate-arguments-length.js"(exports2, module2) {
    var $TypeError = TypeError;
    module2.exports = function(passed, required) {
      if (passed < required) throw $TypeError("Not enough arguments");
      return passed;
    };
  }
});

// ../../node_modules/core-js/internals/engine-is-ios.js
var require_engine_is_ios = __commonJS({
  "../../node_modules/core-js/internals/engine-is-ios.js"(exports2, module2) {
    var userAgent = require_engine_user_agent();
    module2.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);
  }
});

// ../../node_modules/core-js/internals/task.js
var require_task = __commonJS({
  "../../node_modules/core-js/internals/task.js"(exports2, module2) {
    var global2 = require_global();
    var apply = require_function_apply();
    var bind = require_function_bind_context();
    var isCallable = require_is_callable();
    var hasOwn = require_has_own_property();
    var fails = require_fails();
    var html7 = require_html();
    var arraySlice = require_array_slice();
    var createElement = require_document_create_element();
    var validateArgumentsLength = require_validate_arguments_length();
    var IS_IOS = require_engine_is_ios();
    var IS_NODE = require_engine_is_node();
    var set3 = global2.setImmediate;
    var clear = global2.clearImmediate;
    var process11 = global2.process;
    var Dispatch = global2.Dispatch;
    var Function2 = global2.Function;
    var MessageChannel2 = global2.MessageChannel;
    var String2 = global2.String;
    var counter = 0;
    var queue = {};
    var ONREADYSTATECHANGE = "onreadystatechange";
    var $location;
    var defer3;
    var channel;
    var port;
    fails(function() {
      $location = global2.location;
    });
    var run = function(id) {
      if (hasOwn(queue, id)) {
        var fn = queue[id];
        delete queue[id];
        fn();
      }
    };
    var runner = function(id) {
      return function() {
        run(id);
      };
    };
    var eventListener = function(event) {
      run(event.data);
    };
    var globalPostMessageDefer = function(id) {
      global2.postMessage(String2(id), $location.protocol + "//" + $location.host);
    };
    if (!set3 || !clear) {
      set3 = function setImmediate2(handler) {
        validateArgumentsLength(arguments.length, 1);
        var fn = isCallable(handler) ? handler : Function2(handler);
        var args = arraySlice(arguments, 1);
        queue[++counter] = function() {
          apply(fn, void 0, args);
        };
        defer3(counter);
        return counter;
      };
      clear = function clearImmediate(id) {
        delete queue[id];
      };
      if (IS_NODE) {
        defer3 = function(id) {
          process11.nextTick(runner(id));
        };
      } else if (Dispatch && Dispatch.now) {
        defer3 = function(id) {
          Dispatch.now(runner(id));
        };
      } else if (MessageChannel2 && !IS_IOS) {
        channel = new MessageChannel2();
        port = channel.port2;
        channel.port1.onmessage = eventListener;
        defer3 = bind(port.postMessage, port);
      } else if (global2.addEventListener && isCallable(global2.postMessage) && !global2.importScripts && $location && $location.protocol !== "file:" && !fails(globalPostMessageDefer)) {
        defer3 = globalPostMessageDefer;
        global2.addEventListener("message", eventListener, false);
      } else if (ONREADYSTATECHANGE in createElement("script")) {
        defer3 = function(id) {
          html7.appendChild(createElement("script"))[ONREADYSTATECHANGE] = function() {
            html7.removeChild(this);
            run(id);
          };
        };
      } else {
        defer3 = function(id) {
          setTimeout(runner(id), 0);
        };
      }
    }
    module2.exports = {
      set: set3,
      clear
    };
  }
});

// ../../node_modules/core-js/internals/queue.js
var require_queue = __commonJS({
  "../../node_modules/core-js/internals/queue.js"(exports2, module2) {
    var Queue = function() {
      this.head = null;
      this.tail = null;
    };
    Queue.prototype = {
      add: function(item) {
        var entry = { item, next: null };
        var tail = this.tail;
        if (tail) tail.next = entry;
        else this.head = entry;
        this.tail = entry;
      },
      get: function() {
        var entry = this.head;
        if (entry) {
          var next = this.head = entry.next;
          if (next === null) this.tail = null;
          return entry.item;
        }
      }
    };
    module2.exports = Queue;
  }
});

// ../../node_modules/core-js/internals/engine-is-ios-pebble.js
var require_engine_is_ios_pebble = __commonJS({
  "../../node_modules/core-js/internals/engine-is-ios-pebble.js"(exports2, module2) {
    var userAgent = require_engine_user_agent();
    module2.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != "undefined";
  }
});

// ../../node_modules/core-js/internals/engine-is-webos-webkit.js
var require_engine_is_webos_webkit = __commonJS({
  "../../node_modules/core-js/internals/engine-is-webos-webkit.js"(exports2, module2) {
    var userAgent = require_engine_user_agent();
    module2.exports = /web0s(?!.*chrome)/i.test(userAgent);
  }
});

// ../../node_modules/core-js/internals/microtask.js
var require_microtask = __commonJS({
  "../../node_modules/core-js/internals/microtask.js"(exports2, module2) {
    var global2 = require_global();
    var bind = require_function_bind_context();
    var getOwnPropertyDescriptor = require_object_get_own_property_descriptor().f;
    var macrotask = require_task().set;
    var Queue = require_queue();
    var IS_IOS = require_engine_is_ios();
    var IS_IOS_PEBBLE = require_engine_is_ios_pebble();
    var IS_WEBOS_WEBKIT = require_engine_is_webos_webkit();
    var IS_NODE = require_engine_is_node();
    var MutationObserver = global2.MutationObserver || global2.WebKitMutationObserver;
    var document2 = global2.document;
    var process11 = global2.process;
    var Promise2 = global2.Promise;
    var queueMicrotaskDescriptor = getOwnPropertyDescriptor(global2, "queueMicrotask");
    var microtask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;
    var notify;
    var toggle;
    var node3;
    var promise;
    var then;
    if (!microtask) {
      queue = new Queue();
      flush = function() {
        var parent2, fn;
        if (IS_NODE && (parent2 = process11.domain)) parent2.exit();
        while (fn = queue.get()) try {
          fn();
        } catch (error) {
          if (queue.head) notify();
          throw error;
        }
        if (parent2) parent2.enter();
      };
      if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document2) {
        toggle = true;
        node3 = document2.createTextNode("");
        new MutationObserver(flush).observe(node3, { characterData: true });
        notify = function() {
          node3.data = toggle = !toggle;
        };
      } else if (!IS_IOS_PEBBLE && Promise2 && Promise2.resolve) {
        promise = Promise2.resolve(void 0);
        promise.constructor = Promise2;
        then = bind(promise.then, promise);
        notify = function() {
          then(flush);
        };
      } else if (IS_NODE) {
        notify = function() {
          process11.nextTick(flush);
        };
      } else {
        macrotask = bind(macrotask, global2);
        notify = function() {
          macrotask(flush);
        };
      }
      microtask = function(fn) {
        if (!queue.head) notify();
        queue.add(fn);
      };
    }
    var queue;
    var flush;
    module2.exports = microtask;
  }
});

// ../../node_modules/core-js/internals/host-report-errors.js
var require_host_report_errors = __commonJS({
  "../../node_modules/core-js/internals/host-report-errors.js"(exports2, module2) {
    module2.exports = function(a2, b) {
      try {
        arguments.length == 1 ? console.error(a2) : console.error(a2, b);
      } catch (error) {
      }
    };
  }
});

// ../../node_modules/core-js/internals/perform.js
var require_perform = __commonJS({
  "../../node_modules/core-js/internals/perform.js"(exports2, module2) {
    module2.exports = function(exec3) {
      try {
        return { error: false, value: exec3() };
      } catch (error) {
        return { error: true, value: error };
      }
    };
  }
});

// ../../node_modules/core-js/internals/promise-native-constructor.js
var require_promise_native_constructor = __commonJS({
  "../../node_modules/core-js/internals/promise-native-constructor.js"(exports2, module2) {
    var global2 = require_global();
    module2.exports = global2.Promise;
  }
});

// ../../node_modules/core-js/internals/engine-is-deno.js
var require_engine_is_deno = __commonJS({
  "../../node_modules/core-js/internals/engine-is-deno.js"(exports2, module2) {
    module2.exports = typeof Deno == "object" && Deno && typeof Deno.version == "object";
  }
});

// ../../node_modules/core-js/internals/engine-is-browser.js
var require_engine_is_browser = __commonJS({
  "../../node_modules/core-js/internals/engine-is-browser.js"(exports2, module2) {
    var IS_DENO = require_engine_is_deno();
    var IS_NODE = require_engine_is_node();
    module2.exports = !IS_DENO && !IS_NODE && typeof window == "object" && typeof document == "object";
  }
});

// ../../node_modules/core-js/internals/promise-constructor-detection.js
var require_promise_constructor_detection = __commonJS({
  "../../node_modules/core-js/internals/promise-constructor-detection.js"(exports2, module2) {
    var global2 = require_global();
    var NativePromiseConstructor = require_promise_native_constructor();
    var isCallable = require_is_callable();
    var isForced = require_is_forced();
    var inspectSource = require_inspect_source();
    var wellKnownSymbol = require_well_known_symbol();
    var IS_BROWSER = require_engine_is_browser();
    var IS_DENO = require_engine_is_deno();
    var IS_PURE = require_is_pure();
    var V8_VERSION = require_engine_v8_version();
    var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;
    var SPECIES = wellKnownSymbol("species");
    var SUBCLASSING = false;
    var NATIVE_PROMISE_REJECTION_EVENT = isCallable(global2.PromiseRejectionEvent);
    var FORCED_PROMISE_CONSTRUCTOR = isForced("Promise", function() {
      var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);
      var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);
      if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;
      if (IS_PURE && !(NativePromisePrototype["catch"] && NativePromisePrototype["finally"])) return true;
      if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {
        var promise = new NativePromiseConstructor(function(resolve9) {
          resolve9(1);
        });
        var FakePromise = function(exec3) {
          exec3(function() {
          }, function() {
          });
        };
        var constructor = promise.constructor = {};
        constructor[SPECIES] = FakePromise;
        SUBCLASSING = promise.then(function() {
        }) instanceof FakePromise;
        if (!SUBCLASSING) return true;
      }
      return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT;
    });
    module2.exports = {
      CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,
      REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,
      SUBCLASSING
    };
  }
});

// ../../node_modules/core-js/internals/new-promise-capability.js
var require_new_promise_capability = __commonJS({
  "../../node_modules/core-js/internals/new-promise-capability.js"(exports2, module2) {
    "use strict";
    var aCallable = require_a_callable();
    var $TypeError = TypeError;
    var PromiseCapability = function(C) {
      var resolve9, reject;
      this.promise = new C(function($$resolve, $$reject) {
        if (resolve9 !== void 0 || reject !== void 0) throw $TypeError("Bad Promise constructor");
        resolve9 = $$resolve;
        reject = $$reject;
      });
      this.resolve = aCallable(resolve9);
      this.reject = aCallable(reject);
    };
    module2.exports.f = function(C) {
      return new PromiseCapability(C);
    };
  }
});

// ../../node_modules/core-js/modules/es.promise.constructor.js
var require_es_promise_constructor = __commonJS({
  "../../node_modules/core-js/modules/es.promise.constructor.js"() {
    "use strict";
    var $2 = require_export();
    var IS_PURE = require_is_pure();
    var IS_NODE = require_engine_is_node();
    var global2 = require_global();
    var call = require_function_call();
    var defineBuiltIn = require_define_built_in();
    var setPrototypeOf = require_object_set_prototype_of();
    var setToStringTag = require_set_to_string_tag();
    var setSpecies = require_set_species();
    var aCallable = require_a_callable();
    var isCallable = require_is_callable();
    var isObject2 = require_is_object();
    var anInstance = require_an_instance();
    var speciesConstructor = require_species_constructor();
    var task = require_task().set;
    var microtask = require_microtask();
    var hostReportErrors = require_host_report_errors();
    var perform = require_perform();
    var Queue = require_queue();
    var InternalStateModule = require_internal_state();
    var NativePromiseConstructor = require_promise_native_constructor();
    var PromiseConstructorDetection = require_promise_constructor_detection();
    var newPromiseCapabilityModule = require_new_promise_capability();
    var PROMISE = "Promise";
    var FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;
    var NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;
    var NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;
    var getInternalPromiseState = InternalStateModule.getterFor(PROMISE);
    var setInternalState = InternalStateModule.set;
    var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;
    var PromiseConstructor = NativePromiseConstructor;
    var PromisePrototype = NativePromisePrototype;
    var TypeError2 = global2.TypeError;
    var document2 = global2.document;
    var process11 = global2.process;
    var newPromiseCapability = newPromiseCapabilityModule.f;
    var newGenericPromiseCapability = newPromiseCapability;
    var DISPATCH_EVENT = !!(document2 && document2.createEvent && global2.dispatchEvent);
    var UNHANDLED_REJECTION = "unhandledrejection";
    var REJECTION_HANDLED = "rejectionhandled";
    var PENDING = 0;
    var FULFILLED = 1;
    var REJECTED = 2;
    var HANDLED = 1;
    var UNHANDLED = 2;
    var Internal;
    var OwnPromiseCapability;
    var PromiseWrapper;
    var nativeThen;
    var isThenable2 = function(it) {
      var then;
      return isObject2(it) && isCallable(then = it.then) ? then : false;
    };
    var callReaction = function(reaction, state) {
      var value = state.value;
      var ok3 = state.state == FULFILLED;
      var handler = ok3 ? reaction.ok : reaction.fail;
      var resolve9 = reaction.resolve;
      var reject = reaction.reject;
      var domain = reaction.domain;
      var result, then, exited;
      try {
        if (handler) {
          if (!ok3) {
            if (state.rejection === UNHANDLED) onHandleUnhandled(state);
            state.rejection = HANDLED;
          }
          if (handler === true) result = value;
          else {
            if (domain) domain.enter();
            result = handler(value);
            if (domain) {
              domain.exit();
              exited = true;
            }
          }
          if (result === reaction.promise) {
            reject(TypeError2("Promise-chain cycle"));
          } else if (then = isThenable2(result)) {
            call(then, result, resolve9, reject);
          } else resolve9(result);
        } else reject(value);
      } catch (error) {
        if (domain && !exited) domain.exit();
        reject(error);
      }
    };
    var notify = function(state, isReject) {
      if (state.notified) return;
      state.notified = true;
      microtask(function() {
        var reactions = state.reactions;
        var reaction;
        while (reaction = reactions.get()) {
          callReaction(reaction, state);
        }
        state.notified = false;
        if (isReject && !state.rejection) onUnhandled(state);
      });
    };
    var dispatchEvent = function(name3, promise, reason) {
      var event, handler;
      if (DISPATCH_EVENT) {
        event = document2.createEvent("Event");
        event.promise = promise;
        event.reason = reason;
        event.initEvent(name3, false, true);
        global2.dispatchEvent(event);
      } else event = { promise, reason };
      if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global2["on" + name3])) handler(event);
      else if (name3 === UNHANDLED_REJECTION) hostReportErrors("Unhandled promise rejection", reason);
    };
    var onUnhandled = function(state) {
      call(task, global2, function() {
        var promise = state.facade;
        var value = state.value;
        var IS_UNHANDLED = isUnhandled(state);
        var result;
        if (IS_UNHANDLED) {
          result = perform(function() {
            if (IS_NODE) {
              process11.emit("unhandledRejection", value, promise);
            } else dispatchEvent(UNHANDLED_REJECTION, promise, value);
          });
          state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;
          if (result.error) throw result.value;
        }
      });
    };
    var isUnhandled = function(state) {
      return state.rejection !== HANDLED && !state.parent;
    };
    var onHandleUnhandled = function(state) {
      call(task, global2, function() {
        var promise = state.facade;
        if (IS_NODE) {
          process11.emit("rejectionHandled", promise);
        } else dispatchEvent(REJECTION_HANDLED, promise, state.value);
      });
    };
    var bind = function(fn, state, unwrap) {
      return function(value) {
        fn(state, value, unwrap);
      };
    };
    var internalReject = function(state, value, unwrap) {
      if (state.done) return;
      state.done = true;
      if (unwrap) state = unwrap;
      state.value = value;
      state.state = REJECTED;
      notify(state, true);
    };
    var internalResolve = function(state, value, unwrap) {
      if (state.done) return;
      state.done = true;
      if (unwrap) state = unwrap;
      try {
        if (state.facade === value) throw TypeError2("Promise can't be resolved itself");
        var then = isThenable2(value);
        if (then) {
          microtask(function() {
            var wrapper = { done: false };
            try {
              call(
                then,
                value,
                bind(internalResolve, wrapper, state),
                bind(internalReject, wrapper, state)
              );
            } catch (error) {
              internalReject(wrapper, error, state);
            }
          });
        } else {
          state.value = value;
          state.state = FULFILLED;
          notify(state, false);
        }
      } catch (error) {
        internalReject({ done: false }, error, state);
      }
    };
    if (FORCED_PROMISE_CONSTRUCTOR) {
      PromiseConstructor = function Promise2(executor) {
        anInstance(this, PromisePrototype);
        aCallable(executor);
        call(Internal, this);
        var state = getInternalPromiseState(this);
        try {
          executor(bind(internalResolve, state), bind(internalReject, state));
        } catch (error) {
          internalReject(state, error);
        }
      };
      PromisePrototype = PromiseConstructor.prototype;
      Internal = function Promise2(executor) {
        setInternalState(this, {
          type: PROMISE,
          done: false,
          notified: false,
          parent: false,
          reactions: new Queue(),
          rejection: false,
          state: PENDING,
          value: void 0
        });
      };
      Internal.prototype = defineBuiltIn(PromisePrototype, "then", function then(onFulfilled, onRejected) {
        var state = getInternalPromiseState(this);
        var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));
        state.parent = true;
        reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;
        reaction.fail = isCallable(onRejected) && onRejected;
        reaction.domain = IS_NODE ? process11.domain : void 0;
        if (state.state == PENDING) state.reactions.add(reaction);
        else microtask(function() {
          callReaction(reaction, state);
        });
        return reaction.promise;
      });
      OwnPromiseCapability = function() {
        var promise = new Internal();
        var state = getInternalPromiseState(promise);
        this.promise = promise;
        this.resolve = bind(internalResolve, state);
        this.reject = bind(internalReject, state);
      };
      newPromiseCapabilityModule.f = newPromiseCapability = function(C) {
        return C === PromiseConstructor || C === PromiseWrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);
      };
      if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {
        nativeThen = NativePromisePrototype.then;
        if (!NATIVE_PROMISE_SUBCLASSING) {
          defineBuiltIn(NativePromisePrototype, "then", function then(onFulfilled, onRejected) {
            var that = this;
            return new PromiseConstructor(function(resolve9, reject) {
              call(nativeThen, that, resolve9, reject);
            }).then(onFulfilled, onRejected);
          }, { unsafe: true });
        }
        try {
          delete NativePromisePrototype.constructor;
        } catch (error) {
        }
        if (setPrototypeOf) {
          setPrototypeOf(NativePromisePrototype, PromisePrototype);
        }
      }
    }
    $2({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {
      Promise: PromiseConstructor
    });
    setToStringTag(PromiseConstructor, PROMISE, false, true);
    setSpecies(PROMISE);
  }
});

// ../../node_modules/core-js/internals/promise-statics-incorrect-iteration.js
var require_promise_statics_incorrect_iteration = __commonJS({
  "../../node_modules/core-js/internals/promise-statics-incorrect-iteration.js"(exports2, module2) {
    var NativePromiseConstructor = require_promise_native_constructor();
    var checkCorrectnessOfIteration = require_check_correctness_of_iteration();
    var FORCED_PROMISE_CONSTRUCTOR = require_promise_constructor_detection().CONSTRUCTOR;
    module2.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function(iterable) {
      NativePromiseConstructor.all(iterable).then(void 0, function() {
      });
    });
  }
});

// ../../node_modules/core-js/modules/es.promise.all.js
var require_es_promise_all = __commonJS({
  "../../node_modules/core-js/modules/es.promise.all.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var aCallable = require_a_callable();
    var newPromiseCapabilityModule = require_new_promise_capability();
    var perform = require_perform();
    var iterate2 = require_iterate();
    var PROMISE_STATICS_INCORRECT_ITERATION = require_promise_statics_incorrect_iteration();
    $2({ target: "Promise", stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {
      all: function all10(iterable) {
        var C = this;
        var capability = newPromiseCapabilityModule.f(C);
        var resolve9 = capability.resolve;
        var reject = capability.reject;
        var result = perform(function() {
          var $promiseResolve = aCallable(C.resolve);
          var values = [];
          var counter = 0;
          var remaining = 1;
          iterate2(iterable, function(promise) {
            var index4 = counter++;
            var alreadyCalled = false;
            remaining++;
            call($promiseResolve, C, promise).then(function(value) {
              if (alreadyCalled) return;
              alreadyCalled = true;
              values[index4] = value;
              --remaining || resolve9(values);
            }, reject);
          });
          --remaining || resolve9(values);
        });
        if (result.error) reject(result.value);
        return capability.promise;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.promise.catch.js
var require_es_promise_catch = __commonJS({
  "../../node_modules/core-js/modules/es.promise.catch.js"() {
    "use strict";
    var $2 = require_export();
    var IS_PURE = require_is_pure();
    var FORCED_PROMISE_CONSTRUCTOR = require_promise_constructor_detection().CONSTRUCTOR;
    var NativePromiseConstructor = require_promise_native_constructor();
    var getBuiltIn = require_get_built_in();
    var isCallable = require_is_callable();
    var defineBuiltIn = require_define_built_in();
    var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;
    $2({ target: "Promise", proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {
      "catch": function(onRejected) {
        return this.then(void 0, onRejected);
      }
    });
    if (!IS_PURE && isCallable(NativePromiseConstructor)) {
      method = getBuiltIn("Promise").prototype["catch"];
      if (NativePromisePrototype["catch"] !== method) {
        defineBuiltIn(NativePromisePrototype, "catch", method, { unsafe: true });
      }
    }
    var method;
  }
});

// ../../node_modules/core-js/modules/es.promise.race.js
var require_es_promise_race = __commonJS({
  "../../node_modules/core-js/modules/es.promise.race.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var aCallable = require_a_callable();
    var newPromiseCapabilityModule = require_new_promise_capability();
    var perform = require_perform();
    var iterate2 = require_iterate();
    var PROMISE_STATICS_INCORRECT_ITERATION = require_promise_statics_incorrect_iteration();
    $2({ target: "Promise", stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {
      race: function race(iterable) {
        var C = this;
        var capability = newPromiseCapabilityModule.f(C);
        var reject = capability.reject;
        var result = perform(function() {
          var $promiseResolve = aCallable(C.resolve);
          iterate2(iterable, function(promise) {
            call($promiseResolve, C, promise).then(capability.resolve, reject);
          });
        });
        if (result.error) reject(result.value);
        return capability.promise;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.promise.reject.js
var require_es_promise_reject = __commonJS({
  "../../node_modules/core-js/modules/es.promise.reject.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var newPromiseCapabilityModule = require_new_promise_capability();
    var FORCED_PROMISE_CONSTRUCTOR = require_promise_constructor_detection().CONSTRUCTOR;
    $2({ target: "Promise", stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {
      reject: function reject(r2) {
        var capability = newPromiseCapabilityModule.f(this);
        call(capability.reject, void 0, r2);
        return capability.promise;
      }
    });
  }
});

// ../../node_modules/core-js/internals/promise-resolve.js
var require_promise_resolve = __commonJS({
  "../../node_modules/core-js/internals/promise-resolve.js"(exports2, module2) {
    var anObject = require_an_object();
    var isObject2 = require_is_object();
    var newPromiseCapability = require_new_promise_capability();
    module2.exports = function(C, x2) {
      anObject(C);
      if (isObject2(x2) && x2.constructor === C) return x2;
      var promiseCapability = newPromiseCapability.f(C);
      var resolve9 = promiseCapability.resolve;
      resolve9(x2);
      return promiseCapability.promise;
    };
  }
});

// ../../node_modules/core-js/modules/es.promise.resolve.js
var require_es_promise_resolve = __commonJS({
  "../../node_modules/core-js/modules/es.promise.resolve.js"() {
    "use strict";
    var $2 = require_export();
    var getBuiltIn = require_get_built_in();
    var IS_PURE = require_is_pure();
    var NativePromiseConstructor = require_promise_native_constructor();
    var FORCED_PROMISE_CONSTRUCTOR = require_promise_constructor_detection().CONSTRUCTOR;
    var promiseResolve = require_promise_resolve();
    var PromiseConstructorWrapper = getBuiltIn("Promise");
    var CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;
    $2({ target: "Promise", stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {
      resolve: function resolve9(x2) {
        return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x2);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.promise.js
var require_es_promise = __commonJS({
  "../../node_modules/core-js/modules/es.promise.js"() {
    require_es_promise_constructor();
    require_es_promise_all();
    require_es_promise_catch();
    require_es_promise_race();
    require_es_promise_reject();
    require_es_promise_resolve();
  }
});

// ../../node_modules/core-js/modules/es.promise.all-settled.js
var require_es_promise_all_settled = __commonJS({
  "../../node_modules/core-js/modules/es.promise.all-settled.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var aCallable = require_a_callable();
    var newPromiseCapabilityModule = require_new_promise_capability();
    var perform = require_perform();
    var iterate2 = require_iterate();
    var PROMISE_STATICS_INCORRECT_ITERATION = require_promise_statics_incorrect_iteration();
    $2({ target: "Promise", stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {
      allSettled: function allSettled(iterable) {
        var C = this;
        var capability = newPromiseCapabilityModule.f(C);
        var resolve9 = capability.resolve;
        var reject = capability.reject;
        var result = perform(function() {
          var promiseResolve = aCallable(C.resolve);
          var values = [];
          var counter = 0;
          var remaining = 1;
          iterate2(iterable, function(promise) {
            var index4 = counter++;
            var alreadyCalled = false;
            remaining++;
            call(promiseResolve, C, promise).then(function(value) {
              if (alreadyCalled) return;
              alreadyCalled = true;
              values[index4] = { status: "fulfilled", value };
              --remaining || resolve9(values);
            }, function(error) {
              if (alreadyCalled) return;
              alreadyCalled = true;
              values[index4] = { status: "rejected", reason: error };
              --remaining || resolve9(values);
            });
          });
          --remaining || resolve9(values);
        });
        if (result.error) reject(result.value);
        return capability.promise;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.promise.any.js
var require_es_promise_any = __commonJS({
  "../../node_modules/core-js/modules/es.promise.any.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var aCallable = require_a_callable();
    var getBuiltIn = require_get_built_in();
    var newPromiseCapabilityModule = require_new_promise_capability();
    var perform = require_perform();
    var iterate2 = require_iterate();
    var PROMISE_STATICS_INCORRECT_ITERATION = require_promise_statics_incorrect_iteration();
    var PROMISE_ANY_ERROR = "No one promise resolved";
    $2({ target: "Promise", stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {
      any: function any(iterable) {
        var C = this;
        var AggregateError2 = getBuiltIn("AggregateError");
        var capability = newPromiseCapabilityModule.f(C);
        var resolve9 = capability.resolve;
        var reject = capability.reject;
        var result = perform(function() {
          var promiseResolve = aCallable(C.resolve);
          var errors4 = [];
          var counter = 0;
          var remaining = 1;
          var alreadyResolved = false;
          iterate2(iterable, function(promise) {
            var index4 = counter++;
            var alreadyRejected = false;
            remaining++;
            call(promiseResolve, C, promise).then(function(value) {
              if (alreadyRejected || alreadyResolved) return;
              alreadyResolved = true;
              resolve9(value);
            }, function(error) {
              if (alreadyRejected || alreadyResolved) return;
              alreadyRejected = true;
              errors4[index4] = error;
              --remaining || reject(new AggregateError2(errors4, PROMISE_ANY_ERROR));
            });
          });
          --remaining || reject(new AggregateError2(errors4, PROMISE_ANY_ERROR));
        });
        if (result.error) reject(result.value);
        return capability.promise;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.promise.finally.js
var require_es_promise_finally = __commonJS({
  "../../node_modules/core-js/modules/es.promise.finally.js"() {
    "use strict";
    var $2 = require_export();
    var IS_PURE = require_is_pure();
    var NativePromiseConstructor = require_promise_native_constructor();
    var fails = require_fails();
    var getBuiltIn = require_get_built_in();
    var isCallable = require_is_callable();
    var speciesConstructor = require_species_constructor();
    var promiseResolve = require_promise_resolve();
    var defineBuiltIn = require_define_built_in();
    var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;
    var NON_GENERIC = !!NativePromiseConstructor && fails(function() {
      NativePromisePrototype["finally"].call({ then: function() {
      } }, function() {
      });
    });
    $2({ target: "Promise", proto: true, real: true, forced: NON_GENERIC }, {
      "finally": function(onFinally) {
        var C = speciesConstructor(this, getBuiltIn("Promise"));
        var isFunction2 = isCallable(onFinally);
        return this.then(
          isFunction2 ? function(x2) {
            return promiseResolve(C, onFinally()).then(function() {
              return x2;
            });
          } : onFinally,
          isFunction2 ? function(e2) {
            return promiseResolve(C, onFinally()).then(function() {
              throw e2;
            });
          } : onFinally
        );
      }
    });
    if (!IS_PURE && isCallable(NativePromiseConstructor)) {
      method = getBuiltIn("Promise").prototype["finally"];
      if (NativePromisePrototype["finally"] !== method) {
        defineBuiltIn(NativePromisePrototype, "finally", method, { unsafe: true });
      }
    }
    var method;
  }
});

// ../../node_modules/core-js/modules/es.reflect.apply.js
var require_es_reflect_apply = __commonJS({
  "../../node_modules/core-js/modules/es.reflect.apply.js"() {
    var $2 = require_export();
    var functionApply = require_function_apply();
    var aCallable = require_a_callable();
    var anObject = require_an_object();
    var fails = require_fails();
    var OPTIONAL_ARGUMENTS_LIST = !fails(function() {
      Reflect.apply(function() {
      });
    });
    $2({ target: "Reflect", stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {
      apply: function apply(target, thisArgument, argumentsList) {
        return functionApply(aCallable(target), thisArgument, anObject(argumentsList));
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.reflect.construct.js
var require_es_reflect_construct = __commonJS({
  "../../node_modules/core-js/modules/es.reflect.construct.js"() {
    var $2 = require_export();
    var getBuiltIn = require_get_built_in();
    var apply = require_function_apply();
    var bind = require_function_bind();
    var aConstructor = require_a_constructor();
    var anObject = require_an_object();
    var isObject2 = require_is_object();
    var create3 = require_object_create();
    var fails = require_fails();
    var nativeConstruct = getBuiltIn("Reflect", "construct");
    var ObjectPrototype = Object.prototype;
    var push = [].push;
    var NEW_TARGET_BUG = fails(function() {
      function F2() {
      }
      return !(nativeConstruct(function() {
      }, [], F2) instanceof F2);
    });
    var ARGS_BUG = !fails(function() {
      nativeConstruct(function() {
      });
    });
    var FORCED = NEW_TARGET_BUG || ARGS_BUG;
    $2({ target: "Reflect", stat: true, forced: FORCED, sham: FORCED }, {
      construct: function construct(Target, args) {
        aConstructor(Target);
        anObject(args);
        var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);
        if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);
        if (Target == newTarget) {
          switch (args.length) {
            case 0:
              return new Target();
            case 1:
              return new Target(args[0]);
            case 2:
              return new Target(args[0], args[1]);
            case 3:
              return new Target(args[0], args[1], args[2]);
            case 4:
              return new Target(args[0], args[1], args[2], args[3]);
          }
          var $args = [null];
          apply(push, $args, args);
          return new (apply(bind, Target, $args))();
        }
        var proto9 = newTarget.prototype;
        var instance = create3(isObject2(proto9) ? proto9 : ObjectPrototype);
        var result = apply(Target, instance, args);
        return isObject2(result) ? result : instance;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.reflect.define-property.js
var require_es_reflect_define_property = __commonJS({
  "../../node_modules/core-js/modules/es.reflect.define-property.js"() {
    var $2 = require_export();
    var DESCRIPTORS = require_descriptors();
    var anObject = require_an_object();
    var toPropertyKey = require_to_property_key();
    var definePropertyModule = require_object_define_property();
    var fails = require_fails();
    var ERROR_INSTEAD_OF_FALSE = fails(function() {
      Reflect.defineProperty(definePropertyModule.f({}, 1, { value: 1 }), 1, { value: 2 });
    });
    $2({ target: "Reflect", stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRIPTORS }, {
      defineProperty: function defineProperty(target, propertyKey, attributes) {
        anObject(target);
        var key2 = toPropertyKey(propertyKey);
        anObject(attributes);
        try {
          definePropertyModule.f(target, key2, attributes);
          return true;
        } catch (error) {
          return false;
        }
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.reflect.delete-property.js
var require_es_reflect_delete_property = __commonJS({
  "../../node_modules/core-js/modules/es.reflect.delete-property.js"() {
    var $2 = require_export();
    var anObject = require_an_object();
    var getOwnPropertyDescriptor = require_object_get_own_property_descriptor().f;
    $2({ target: "Reflect", stat: true }, {
      deleteProperty: function deleteProperty(target, propertyKey) {
        var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey);
        return descriptor && !descriptor.configurable ? false : delete target[propertyKey];
      }
    });
  }
});

// ../../node_modules/core-js/internals/is-data-descriptor.js
var require_is_data_descriptor = __commonJS({
  "../../node_modules/core-js/internals/is-data-descriptor.js"(exports2, module2) {
    var hasOwn = require_has_own_property();
    module2.exports = function(descriptor) {
      return descriptor !== void 0 && (hasOwn(descriptor, "value") || hasOwn(descriptor, "writable"));
    };
  }
});

// ../../node_modules/core-js/modules/es.reflect.get.js
var require_es_reflect_get = __commonJS({
  "../../node_modules/core-js/modules/es.reflect.get.js"() {
    var $2 = require_export();
    var call = require_function_call();
    var isObject2 = require_is_object();
    var anObject = require_an_object();
    var isDataDescriptor = require_is_data_descriptor();
    var getOwnPropertyDescriptorModule = require_object_get_own_property_descriptor();
    var getPrototypeOf2 = require_object_get_prototype_of();
    function get(target, propertyKey) {
      var receiver = arguments.length < 3 ? target : arguments[2];
      var descriptor, prototype;
      if (anObject(target) === receiver) return target[propertyKey];
      descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);
      if (descriptor) return isDataDescriptor(descriptor) ? descriptor.value : descriptor.get === void 0 ? void 0 : call(descriptor.get, receiver);
      if (isObject2(prototype = getPrototypeOf2(target))) return get(prototype, propertyKey, receiver);
    }
    $2({ target: "Reflect", stat: true }, {
      get
    });
  }
});

// ../../node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js
var require_es_reflect_get_own_property_descriptor = __commonJS({
  "../../node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js"() {
    var $2 = require_export();
    var DESCRIPTORS = require_descriptors();
    var anObject = require_an_object();
    var getOwnPropertyDescriptorModule = require_object_get_own_property_descriptor();
    $2({ target: "Reflect", stat: true, sham: !DESCRIPTORS }, {
      getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {
        return getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.reflect.get-prototype-of.js
var require_es_reflect_get_prototype_of = __commonJS({
  "../../node_modules/core-js/modules/es.reflect.get-prototype-of.js"() {
    var $2 = require_export();
    var anObject = require_an_object();
    var objectGetPrototypeOf = require_object_get_prototype_of();
    var CORRECT_PROTOTYPE_GETTER = require_correct_prototype_getter();
    $2({ target: "Reflect", stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, {
      getPrototypeOf: function getPrototypeOf2(target) {
        return objectGetPrototypeOf(anObject(target));
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.reflect.has.js
var require_es_reflect_has = __commonJS({
  "../../node_modules/core-js/modules/es.reflect.has.js"() {
    var $2 = require_export();
    $2({ target: "Reflect", stat: true }, {
      has: function has3(target, propertyKey) {
        return propertyKey in target;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.reflect.is-extensible.js
var require_es_reflect_is_extensible = __commonJS({
  "../../node_modules/core-js/modules/es.reflect.is-extensible.js"() {
    var $2 = require_export();
    var anObject = require_an_object();
    var $isExtensible = require_object_is_extensible();
    $2({ target: "Reflect", stat: true }, {
      isExtensible: function isExtensible(target) {
        anObject(target);
        return $isExtensible(target);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.reflect.own-keys.js
var require_es_reflect_own_keys = __commonJS({
  "../../node_modules/core-js/modules/es.reflect.own-keys.js"() {
    var $2 = require_export();
    var ownKeys = require_own_keys();
    $2({ target: "Reflect", stat: true }, {
      ownKeys
    });
  }
});

// ../../node_modules/core-js/modules/es.reflect.prevent-extensions.js
var require_es_reflect_prevent_extensions = __commonJS({
  "../../node_modules/core-js/modules/es.reflect.prevent-extensions.js"() {
    var $2 = require_export();
    var getBuiltIn = require_get_built_in();
    var anObject = require_an_object();
    var FREEZING = require_freezing();
    $2({ target: "Reflect", stat: true, sham: !FREEZING }, {
      preventExtensions: function preventExtensions(target) {
        anObject(target);
        try {
          var objectPreventExtensions = getBuiltIn("Object", "preventExtensions");
          if (objectPreventExtensions) objectPreventExtensions(target);
          return true;
        } catch (error) {
          return false;
        }
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.reflect.set.js
var require_es_reflect_set = __commonJS({
  "../../node_modules/core-js/modules/es.reflect.set.js"() {
    var $2 = require_export();
    var call = require_function_call();
    var anObject = require_an_object();
    var isObject2 = require_is_object();
    var isDataDescriptor = require_is_data_descriptor();
    var fails = require_fails();
    var definePropertyModule = require_object_define_property();
    var getOwnPropertyDescriptorModule = require_object_get_own_property_descriptor();
    var getPrototypeOf2 = require_object_get_prototype_of();
    var createPropertyDescriptor = require_create_property_descriptor();
    function set3(target, propertyKey, V) {
      var receiver = arguments.length < 4 ? target : arguments[3];
      var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);
      var existingDescriptor, prototype, setter;
      if (!ownDescriptor) {
        if (isObject2(prototype = getPrototypeOf2(target))) {
          return set3(prototype, propertyKey, V, receiver);
        }
        ownDescriptor = createPropertyDescriptor(0);
      }
      if (isDataDescriptor(ownDescriptor)) {
        if (ownDescriptor.writable === false || !isObject2(receiver)) return false;
        if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) {
          if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;
          existingDescriptor.value = V;
          definePropertyModule.f(receiver, propertyKey, existingDescriptor);
        } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V));
      } else {
        setter = ownDescriptor.set;
        if (setter === void 0) return false;
        call(setter, receiver, V);
      }
      return true;
    }
    var MS_EDGE_BUG = fails(function() {
      var Constructor = function() {
      };
      var object = definePropertyModule.f(new Constructor(), "a", { configurable: true });
      return Reflect.set(Constructor.prototype, "a", 1, object) !== false;
    });
    $2({ target: "Reflect", stat: true, forced: MS_EDGE_BUG }, {
      set: set3
    });
  }
});

// ../../node_modules/core-js/modules/es.reflect.set-prototype-of.js
var require_es_reflect_set_prototype_of = __commonJS({
  "../../node_modules/core-js/modules/es.reflect.set-prototype-of.js"() {
    var $2 = require_export();
    var anObject = require_an_object();
    var aPossiblePrototype = require_a_possible_prototype();
    var objectSetPrototypeOf = require_object_set_prototype_of();
    if (objectSetPrototypeOf) $2({ target: "Reflect", stat: true }, {
      setPrototypeOf: function setPrototypeOf(target, proto9) {
        anObject(target);
        aPossiblePrototype(proto9);
        try {
          objectSetPrototypeOf(target, proto9);
          return true;
        } catch (error) {
          return false;
        }
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.reflect.to-string-tag.js
var require_es_reflect_to_string_tag = __commonJS({
  "../../node_modules/core-js/modules/es.reflect.to-string-tag.js"() {
    var $2 = require_export();
    var global2 = require_global();
    var setToStringTag = require_set_to_string_tag();
    $2({ global: true }, { Reflect: {} });
    setToStringTag(global2.Reflect, "Reflect", true);
  }
});

// ../../node_modules/core-js/internals/is-regexp.js
var require_is_regexp = __commonJS({
  "../../node_modules/core-js/internals/is-regexp.js"(exports2, module2) {
    var isObject2 = require_is_object();
    var classof = require_classof_raw();
    var wellKnownSymbol = require_well_known_symbol();
    var MATCH = wellKnownSymbol("match");
    module2.exports = function(it) {
      var isRegExp;
      return isObject2(it) && ((isRegExp = it[MATCH]) !== void 0 ? !!isRegExp : classof(it) == "RegExp");
    };
  }
});

// ../../node_modules/core-js/internals/regexp-flags.js
var require_regexp_flags = __commonJS({
  "../../node_modules/core-js/internals/regexp-flags.js"(exports2, module2) {
    "use strict";
    var anObject = require_an_object();
    module2.exports = function() {
      var that = anObject(this);
      var result = "";
      if (that.hasIndices) result += "d";
      if (that.global) result += "g";
      if (that.ignoreCase) result += "i";
      if (that.multiline) result += "m";
      if (that.dotAll) result += "s";
      if (that.unicode) result += "u";
      if (that.unicodeSets) result += "v";
      if (that.sticky) result += "y";
      return result;
    };
  }
});

// ../../node_modules/core-js/internals/regexp-get-flags.js
var require_regexp_get_flags = __commonJS({
  "../../node_modules/core-js/internals/regexp-get-flags.js"(exports2, module2) {
    var call = require_function_call();
    var hasOwn = require_has_own_property();
    var isPrototypeOf = require_object_is_prototype_of();
    var regExpFlags = require_regexp_flags();
    var RegExpPrototype = RegExp.prototype;
    module2.exports = function(R) {
      var flags = R.flags;
      return flags === void 0 && !("flags" in RegExpPrototype) && !hasOwn(R, "flags") && isPrototypeOf(RegExpPrototype, R) ? call(regExpFlags, R) : flags;
    };
  }
});

// ../../node_modules/core-js/internals/regexp-sticky-helpers.js
var require_regexp_sticky_helpers = __commonJS({
  "../../node_modules/core-js/internals/regexp-sticky-helpers.js"(exports2, module2) {
    var fails = require_fails();
    var global2 = require_global();
    var $RegExp = global2.RegExp;
    var UNSUPPORTED_Y = fails(function() {
      var re = $RegExp("a", "y");
      re.lastIndex = 2;
      return re.exec("abcd") != null;
    });
    var MISSED_STICKY = UNSUPPORTED_Y || fails(function() {
      return !$RegExp("a", "y").sticky;
    });
    var BROKEN_CARET = UNSUPPORTED_Y || fails(function() {
      var re = $RegExp("^r", "gy");
      re.lastIndex = 2;
      return re.exec("str") != null;
    });
    module2.exports = {
      BROKEN_CARET,
      MISSED_STICKY,
      UNSUPPORTED_Y
    };
  }
});

// ../../node_modules/core-js/internals/regexp-unsupported-dot-all.js
var require_regexp_unsupported_dot_all = __commonJS({
  "../../node_modules/core-js/internals/regexp-unsupported-dot-all.js"(exports2, module2) {
    var fails = require_fails();
    var global2 = require_global();
    var $RegExp = global2.RegExp;
    module2.exports = fails(function() {
      var re = $RegExp(".", "s");
      return !(re.dotAll && re.exec("\n") && re.flags === "s");
    });
  }
});

// ../../node_modules/core-js/internals/regexp-unsupported-ncg.js
var require_regexp_unsupported_ncg = __commonJS({
  "../../node_modules/core-js/internals/regexp-unsupported-ncg.js"(exports2, module2) {
    var fails = require_fails();
    var global2 = require_global();
    var $RegExp = global2.RegExp;
    module2.exports = fails(function() {
      var re = $RegExp("(?<a>b)", "g");
      return re.exec("b").groups.a !== "b" || "b".replace(re, "$<a>c") !== "bc";
    });
  }
});

// ../../node_modules/core-js/modules/es.regexp.constructor.js
var require_es_regexp_constructor = __commonJS({
  "../../node_modules/core-js/modules/es.regexp.constructor.js"() {
    var DESCRIPTORS = require_descriptors();
    var global2 = require_global();
    var uncurryThis = require_function_uncurry_this();
    var isForced = require_is_forced();
    var inheritIfRequired = require_inherit_if_required();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var getOwnPropertyNames = require_object_get_own_property_names().f;
    var isPrototypeOf = require_object_is_prototype_of();
    var isRegExp = require_is_regexp();
    var toString6 = require_to_string();
    var getRegExpFlags = require_regexp_get_flags();
    var stickyHelpers = require_regexp_sticky_helpers();
    var proxyAccessor = require_proxy_accessor();
    var defineBuiltIn = require_define_built_in();
    var fails = require_fails();
    var hasOwn = require_has_own_property();
    var enforceInternalState = require_internal_state().enforce;
    var setSpecies = require_set_species();
    var wellKnownSymbol = require_well_known_symbol();
    var UNSUPPORTED_DOT_ALL = require_regexp_unsupported_dot_all();
    var UNSUPPORTED_NCG = require_regexp_unsupported_ncg();
    var MATCH = wellKnownSymbol("match");
    var NativeRegExp = global2.RegExp;
    var RegExpPrototype = NativeRegExp.prototype;
    var SyntaxError2 = global2.SyntaxError;
    var exec3 = uncurryThis(RegExpPrototype.exec);
    var charAt = uncurryThis("".charAt);
    var replace = uncurryThis("".replace);
    var stringIndexOf = uncurryThis("".indexOf);
    var stringSlice = uncurryThis("".slice);
    var IS_NCG = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/;
    var re1 = /a/g;
    var re2 = /a/g;
    var CORRECT_NEW = new NativeRegExp(re1) !== re1;
    var MISSED_STICKY = stickyHelpers.MISSED_STICKY;
    var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
    var BASE_FORCED = DESCRIPTORS && (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function() {
      re2[MATCH] = false;
      return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, "i") != "/a/i";
    }));
    var handleDotAll = function(string2) {
      var length = string2.length;
      var index5 = 0;
      var result = "";
      var brackets = false;
      var chr;
      for (; index5 <= length; index5++) {
        chr = charAt(string2, index5);
        if (chr === "\\") {
          result += chr + charAt(string2, ++index5);
          continue;
        }
        if (!brackets && chr === ".") {
          result += "[\\s\\S]";
        } else {
          if (chr === "[") {
            brackets = true;
          } else if (chr === "]") {
            brackets = false;
          }
          result += chr;
        }
      }
      return result;
    };
    var handleNCG = function(string2) {
      var length = string2.length;
      var index5 = 0;
      var result = "";
      var named = [];
      var names = {};
      var brackets = false;
      var ncg = false;
      var groupid = 0;
      var groupname = "";
      var chr;
      for (; index5 <= length; index5++) {
        chr = charAt(string2, index5);
        if (chr === "\\") {
          chr = chr + charAt(string2, ++index5);
        } else if (chr === "]") {
          brackets = false;
        } else if (!brackets) switch (true) {
          case chr === "[":
            brackets = true;
            break;
          case chr === "(":
            if (exec3(IS_NCG, stringSlice(string2, index5 + 1))) {
              index5 += 2;
              ncg = true;
            }
            result += chr;
            groupid++;
            continue;
          case (chr === ">" && ncg):
            if (groupname === "" || hasOwn(names, groupname)) {
              throw new SyntaxError2("Invalid capture group name");
            }
            names[groupname] = true;
            named[named.length] = [groupname, groupid];
            ncg = false;
            groupname = "";
            continue;
        }
        if (ncg) groupname += chr;
        else result += chr;
      }
      return [result, named];
    };
    if (isForced("RegExp", BASE_FORCED)) {
      RegExpWrapper = function RegExp2(pattern, flags) {
        var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);
        var patternIsRegExp = isRegExp(pattern);
        var flagsAreUndefined = flags === void 0;
        var groups = [];
        var rawPattern = pattern;
        var rawFlags, dotAll, sticky, handled, result, state;
        if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {
          return pattern;
        }
        if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {
          pattern = pattern.source;
          if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);
        }
        pattern = pattern === void 0 ? "" : toString6(pattern);
        flags = flags === void 0 ? "" : toString6(flags);
        rawPattern = pattern;
        if (UNSUPPORTED_DOT_ALL && "dotAll" in re1) {
          dotAll = !!flags && stringIndexOf(flags, "s") > -1;
          if (dotAll) flags = replace(flags, /s/g, "");
        }
        rawFlags = flags;
        if (MISSED_STICKY && "sticky" in re1) {
          sticky = !!flags && stringIndexOf(flags, "y") > -1;
          if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, "");
        }
        if (UNSUPPORTED_NCG) {
          handled = handleNCG(pattern);
          pattern = handled[0];
          groups = handled[1];
        }
        result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);
        if (dotAll || sticky || groups.length) {
          state = enforceInternalState(result);
          if (dotAll) {
            state.dotAll = true;
            state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);
          }
          if (sticky) state.sticky = true;
          if (groups.length) state.groups = groups;
        }
        if (pattern !== rawPattern) try {
          createNonEnumerableProperty(result, "source", rawPattern === "" ? "(?:)" : rawPattern);
        } catch (error) {
        }
        return result;
      };
      for (keys2 = getOwnPropertyNames(NativeRegExp), index4 = 0; keys2.length > index4; ) {
        proxyAccessor(RegExpWrapper, NativeRegExp, keys2[index4++]);
      }
      RegExpPrototype.constructor = RegExpWrapper;
      RegExpWrapper.prototype = RegExpPrototype;
      defineBuiltIn(global2, "RegExp", RegExpWrapper, { constructor: true });
    }
    var RegExpWrapper;
    var keys2;
    var index4;
    setSpecies("RegExp");
  }
});

// ../../node_modules/core-js/modules/es.regexp.dot-all.js
var require_es_regexp_dot_all = __commonJS({
  "../../node_modules/core-js/modules/es.regexp.dot-all.js"() {
    var DESCRIPTORS = require_descriptors();
    var UNSUPPORTED_DOT_ALL = require_regexp_unsupported_dot_all();
    var classof = require_classof_raw();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var getInternalState = require_internal_state().get;
    var RegExpPrototype = RegExp.prototype;
    var $TypeError = TypeError;
    if (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {
      defineBuiltInAccessor(RegExpPrototype, "dotAll", {
        configurable: true,
        get: function dotAll() {
          if (this === RegExpPrototype) return void 0;
          if (classof(this) === "RegExp") {
            return !!getInternalState(this).dotAll;
          }
          throw $TypeError("Incompatible receiver, RegExp required");
        }
      });
    }
  }
});

// ../../node_modules/core-js/internals/regexp-exec.js
var require_regexp_exec = __commonJS({
  "../../node_modules/core-js/internals/regexp-exec.js"(exports2, module2) {
    "use strict";
    var call = require_function_call();
    var uncurryThis = require_function_uncurry_this();
    var toString6 = require_to_string();
    var regexpFlags = require_regexp_flags();
    var stickyHelpers = require_regexp_sticky_helpers();
    var shared = require_shared();
    var create3 = require_object_create();
    var getInternalState = require_internal_state().get;
    var UNSUPPORTED_DOT_ALL = require_regexp_unsupported_dot_all();
    var UNSUPPORTED_NCG = require_regexp_unsupported_ncg();
    var nativeReplace = shared("native-string-replace", String.prototype.replace);
    var nativeExec = RegExp.prototype.exec;
    var patchedExec = nativeExec;
    var charAt = uncurryThis("".charAt);
    var indexOf2 = uncurryThis("".indexOf);
    var replace = uncurryThis("".replace);
    var stringSlice = uncurryThis("".slice);
    var UPDATES_LAST_INDEX_WRONG = (function() {
      var re1 = /a/;
      var re2 = /b*/g;
      call(nativeExec, re1, "a");
      call(nativeExec, re2, "a");
      return re1.lastIndex !== 0 || re2.lastIndex !== 0;
    })();
    var UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;
    var NPCG_INCLUDED = /()??/.exec("")[1] !== void 0;
    var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;
    if (PATCH) {
      patchedExec = function exec3(string2) {
        var re = this;
        var state = getInternalState(re);
        var str2 = toString6(string2);
        var raw2 = state.raw;
        var result, reCopy, lastIndex, match3, i2, object, group3;
        if (raw2) {
          raw2.lastIndex = re.lastIndex;
          result = call(patchedExec, raw2, str2);
          re.lastIndex = raw2.lastIndex;
          return result;
        }
        var groups = state.groups;
        var sticky = UNSUPPORTED_Y && re.sticky;
        var flags = call(regexpFlags, re);
        var source2 = re.source;
        var charsAdded = 0;
        var strCopy = str2;
        if (sticky) {
          flags = replace(flags, "y", "");
          if (indexOf2(flags, "g") === -1) {
            flags += "g";
          }
          strCopy = stringSlice(str2, re.lastIndex);
          if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str2, re.lastIndex - 1) !== "\n")) {
            source2 = "(?: " + source2 + ")";
            strCopy = " " + strCopy;
            charsAdded++;
          }
          reCopy = new RegExp("^(?:" + source2 + ")", flags);
        }
        if (NPCG_INCLUDED) {
          reCopy = new RegExp("^" + source2 + "$(?!\\s)", flags);
        }
        if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;
        match3 = call(nativeExec, sticky ? reCopy : re, strCopy);
        if (sticky) {
          if (match3) {
            match3.input = stringSlice(match3.input, charsAdded);
            match3[0] = stringSlice(match3[0], charsAdded);
            match3.index = re.lastIndex;
            re.lastIndex += match3[0].length;
          } else re.lastIndex = 0;
        } else if (UPDATES_LAST_INDEX_WRONG && match3) {
          re.lastIndex = re.global ? match3.index + match3[0].length : lastIndex;
        }
        if (NPCG_INCLUDED && match3 && match3.length > 1) {
          call(nativeReplace, match3[0], reCopy, function() {
            for (i2 = 1; i2 < arguments.length - 2; i2++) {
              if (arguments[i2] === void 0) match3[i2] = void 0;
            }
          });
        }
        if (match3 && groups) {
          match3.groups = object = create3(null);
          for (i2 = 0; i2 < groups.length; i2++) {
            group3 = groups[i2];
            object[group3[0]] = match3[group3[1]];
          }
        }
        return match3;
      };
    }
    module2.exports = patchedExec;
  }
});

// ../../node_modules/core-js/modules/es.regexp.exec.js
var require_es_regexp_exec = __commonJS({
  "../../node_modules/core-js/modules/es.regexp.exec.js"() {
    "use strict";
    var $2 = require_export();
    var exec3 = require_regexp_exec();
    $2({ target: "RegExp", proto: true, forced: /./.exec !== exec3 }, {
      exec: exec3
    });
  }
});

// ../../node_modules/core-js/modules/es.regexp.flags.js
var require_es_regexp_flags = __commonJS({
  "../../node_modules/core-js/modules/es.regexp.flags.js"() {
    var global2 = require_global();
    var DESCRIPTORS = require_descriptors();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var regExpFlags = require_regexp_flags();
    var fails = require_fails();
    var RegExp2 = global2.RegExp;
    var RegExpPrototype = RegExp2.prototype;
    var FORCED = DESCRIPTORS && fails(function() {
      var INDICES_SUPPORT = true;
      try {
        RegExp2(".", "d");
      } catch (error) {
        INDICES_SUPPORT = false;
      }
      var O = {};
      var calls = "";
      var expected = INDICES_SUPPORT ? "dgimsy" : "gimsy";
      var addGetter = function(key3, chr) {
        Object.defineProperty(O, key3, { get: function() {
          calls += chr;
          return true;
        } });
      };
      var pairs2 = {
        dotAll: "s",
        global: "g",
        ignoreCase: "i",
        multiline: "m",
        sticky: "y"
      };
      if (INDICES_SUPPORT) pairs2.hasIndices = "d";
      for (var key2 in pairs2) addGetter(key2, pairs2[key2]);
      var result = Object.getOwnPropertyDescriptor(RegExpPrototype, "flags").get.call(O);
      return result !== expected || calls !== expected;
    });
    if (FORCED) defineBuiltInAccessor(RegExpPrototype, "flags", {
      configurable: true,
      get: regExpFlags
    });
  }
});

// ../../node_modules/core-js/modules/es.regexp.sticky.js
var require_es_regexp_sticky = __commonJS({
  "../../node_modules/core-js/modules/es.regexp.sticky.js"() {
    var DESCRIPTORS = require_descriptors();
    var MISSED_STICKY = require_regexp_sticky_helpers().MISSED_STICKY;
    var classof = require_classof_raw();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var getInternalState = require_internal_state().get;
    var RegExpPrototype = RegExp.prototype;
    var $TypeError = TypeError;
    if (DESCRIPTORS && MISSED_STICKY) {
      defineBuiltInAccessor(RegExpPrototype, "sticky", {
        configurable: true,
        get: function sticky() {
          if (this === RegExpPrototype) return;
          if (classof(this) === "RegExp") {
            return !!getInternalState(this).sticky;
          }
          throw $TypeError("Incompatible receiver, RegExp required");
        }
      });
    }
  }
});

// ../../node_modules/core-js/modules/es.regexp.test.js
var require_es_regexp_test = __commonJS({
  "../../node_modules/core-js/modules/es.regexp.test.js"() {
    "use strict";
    require_es_regexp_exec();
    var $2 = require_export();
    var call = require_function_call();
    var isCallable = require_is_callable();
    var anObject = require_an_object();
    var toString6 = require_to_string();
    var DELEGATES_TO_EXEC = (function() {
      var execCalled = false;
      var re = /[ac]/;
      re.exec = function() {
        execCalled = true;
        return /./.exec.apply(this, arguments);
      };
      return re.test("abc") === true && execCalled;
    })();
    var nativeTest = /./.test;
    $2({ target: "RegExp", proto: true, forced: !DELEGATES_TO_EXEC }, {
      test: function(S3) {
        var R = anObject(this);
        var string2 = toString6(S3);
        var exec3 = R.exec;
        if (!isCallable(exec3)) return call(nativeTest, R, string2);
        var result = call(exec3, R, string2);
        if (result === null) return false;
        anObject(result);
        return true;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.regexp.to-string.js
var require_es_regexp_to_string = __commonJS({
  "../../node_modules/core-js/modules/es.regexp.to-string.js"() {
    "use strict";
    var PROPER_FUNCTION_NAME = require_function_name().PROPER;
    var defineBuiltIn = require_define_built_in();
    var anObject = require_an_object();
    var $toString = require_to_string();
    var fails = require_fails();
    var getRegExpFlags = require_regexp_get_flags();
    var TO_STRING = "toString";
    var RegExpPrototype = RegExp.prototype;
    var nativeToString = RegExpPrototype[TO_STRING];
    var NOT_GENERIC = fails(function() {
      return nativeToString.call({ source: "a", flags: "b" }) != "/a/b";
    });
    var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name != TO_STRING;
    if (NOT_GENERIC || INCORRECT_NAME) {
      defineBuiltIn(RegExp.prototype, TO_STRING, function toString6() {
        var R = anObject(this);
        var pattern = $toString(R.source);
        var flags = $toString(getRegExpFlags(R));
        return "/" + pattern + "/" + flags;
      }, { unsafe: true });
    }
  }
});

// ../../node_modules/core-js/modules/es.set.constructor.js
var require_es_set_constructor = __commonJS({
  "../../node_modules/core-js/modules/es.set.constructor.js"() {
    "use strict";
    var collection = require_collection();
    var collectionStrong = require_collection_strong();
    collection("Set", function(init4) {
      return function Set2() {
        return init4(this, arguments.length ? arguments[0] : void 0);
      };
    }, collectionStrong);
  }
});

// ../../node_modules/core-js/modules/es.set.js
var require_es_set = __commonJS({
  "../../node_modules/core-js/modules/es.set.js"() {
    require_es_set_constructor();
  }
});

// ../../node_modules/core-js/modules/es.string.at-alternative.js
var require_es_string_at_alternative = __commonJS({
  "../../node_modules/core-js/modules/es.string.at-alternative.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var requireObjectCoercible = require_require_object_coercible();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var toString6 = require_to_string();
    var fails = require_fails();
    var charAt = uncurryThis("".charAt);
    var FORCED = fails(function() {
      return "\u{20BB7}".at(-2) !== "\uD842";
    });
    $2({ target: "String", proto: true, forced: FORCED }, {
      at: function at(index4) {
        var S3 = toString6(requireObjectCoercible(this));
        var len = S3.length;
        var relativeIndex = toIntegerOrInfinity(index4);
        var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
        return k < 0 || k >= len ? void 0 : charAt(S3, k);
      }
    });
  }
});

// ../../node_modules/core-js/internals/string-multibyte.js
var require_string_multibyte = __commonJS({
  "../../node_modules/core-js/internals/string-multibyte.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var toString6 = require_to_string();
    var requireObjectCoercible = require_require_object_coercible();
    var charAt = uncurryThis("".charAt);
    var charCodeAt = uncurryThis("".charCodeAt);
    var stringSlice = uncurryThis("".slice);
    var createMethod = function(CONVERT_TO_STRING) {
      return function($this, pos) {
        var S3 = toString6(requireObjectCoercible($this));
        var position6 = toIntegerOrInfinity(pos);
        var size = S3.length;
        var first2, second;
        if (position6 < 0 || position6 >= size) return CONVERT_TO_STRING ? "" : void 0;
        first2 = charCodeAt(S3, position6);
        return first2 < 55296 || first2 > 56319 || position6 + 1 === size || (second = charCodeAt(S3, position6 + 1)) < 56320 || second > 57343 ? CONVERT_TO_STRING ? charAt(S3, position6) : first2 : CONVERT_TO_STRING ? stringSlice(S3, position6, position6 + 2) : (first2 - 55296 << 10) + (second - 56320) + 65536;
      };
    };
    module2.exports = {
      // `String.prototype.codePointAt` method
      // https://tc39.es/ecma262/#sec-string.prototype.codepointat
      codeAt: createMethod(false),
      // `String.prototype.at` method
      // https://github.com/mathiasbynens/String.prototype.at
      charAt: createMethod(true)
    };
  }
});

// ../../node_modules/core-js/modules/es.string.code-point-at.js
var require_es_string_code_point_at = __commonJS({
  "../../node_modules/core-js/modules/es.string.code-point-at.js"() {
    "use strict";
    var $2 = require_export();
    var codeAt = require_string_multibyte().codeAt;
    $2({ target: "String", proto: true }, {
      codePointAt: function codePointAt2(pos) {
        return codeAt(this, pos);
      }
    });
  }
});

// ../../node_modules/core-js/internals/not-a-regexp.js
var require_not_a_regexp = __commonJS({
  "../../node_modules/core-js/internals/not-a-regexp.js"(exports2, module2) {
    var isRegExp = require_is_regexp();
    var $TypeError = TypeError;
    module2.exports = function(it) {
      if (isRegExp(it)) {
        throw $TypeError("The method doesn't accept regular expressions");
      }
      return it;
    };
  }
});

// ../../node_modules/core-js/internals/correct-is-regexp-logic.js
var require_correct_is_regexp_logic = __commonJS({
  "../../node_modules/core-js/internals/correct-is-regexp-logic.js"(exports2, module2) {
    var wellKnownSymbol = require_well_known_symbol();
    var MATCH = wellKnownSymbol("match");
    module2.exports = function(METHOD_NAME) {
      var regexp = /./;
      try {
        "/./"[METHOD_NAME](regexp);
      } catch (error1) {
        try {
          regexp[MATCH] = false;
          return "/./"[METHOD_NAME](regexp);
        } catch (error2) {
        }
      }
      return false;
    };
  }
});

// ../../node_modules/core-js/modules/es.string.ends-with.js
var require_es_string_ends_with = __commonJS({
  "../../node_modules/core-js/modules/es.string.ends-with.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this_clause();
    var getOwnPropertyDescriptor = require_object_get_own_property_descriptor().f;
    var toLength = require_to_length();
    var toString6 = require_to_string();
    var notARegExp = require_not_a_regexp();
    var requireObjectCoercible = require_require_object_coercible();
    var correctIsRegExpLogic = require_correct_is_regexp_logic();
    var IS_PURE = require_is_pure();
    var nativeEndsWith = uncurryThis("".endsWith);
    var slice2 = uncurryThis("".slice);
    var min = Math.min;
    var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic("endsWith");
    var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!(function() {
      var descriptor = getOwnPropertyDescriptor(String.prototype, "endsWith");
      return descriptor && !descriptor.writable;
    })();
    $2({ target: "String", proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {
      endsWith: function endsWith(searchString) {
        var that = toString6(requireObjectCoercible(this));
        notARegExp(searchString);
        var endPosition = arguments.length > 1 ? arguments[1] : void 0;
        var len = that.length;
        var end = endPosition === void 0 ? len : min(toLength(endPosition), len);
        var search4 = toString6(searchString);
        return nativeEndsWith ? nativeEndsWith(that, search4, end) : slice2(that, end - search4.length, end) === search4;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.from-code-point.js
var require_es_string_from_code_point = __commonJS({
  "../../node_modules/core-js/modules/es.string.from-code-point.js"() {
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var toAbsoluteIndex = require_to_absolute_index();
    var $RangeError = RangeError;
    var fromCharCode = String.fromCharCode;
    var $fromCodePoint = String.fromCodePoint;
    var join19 = uncurryThis([].join);
    var INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length != 1;
    $2({ target: "String", stat: true, arity: 1, forced: INCORRECT_LENGTH }, {
      // eslint-disable-next-line no-unused-vars -- required for `.length`
      fromCodePoint: function fromCodePoint2(x2) {
        var elements = [];
        var length = arguments.length;
        var i2 = 0;
        var code7;
        while (length > i2) {
          code7 = +arguments[i2++];
          if (toAbsoluteIndex(code7, 1114111) !== code7) throw $RangeError(code7 + " is not a valid code point");
          elements[i2] = code7 < 65536 ? fromCharCode(code7) : fromCharCode(((code7 -= 65536) >> 10) + 55296, code7 % 1024 + 56320);
        }
        return join19(elements, "");
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.includes.js
var require_es_string_includes = __commonJS({
  "../../node_modules/core-js/modules/es.string.includes.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var notARegExp = require_not_a_regexp();
    var requireObjectCoercible = require_require_object_coercible();
    var toString6 = require_to_string();
    var correctIsRegExpLogic = require_correct_is_regexp_logic();
    var stringIndexOf = uncurryThis("".indexOf);
    $2({ target: "String", proto: true, forced: !correctIsRegExpLogic("includes") }, {
      includes: function includes2(searchString) {
        return !!~stringIndexOf(
          toString6(requireObjectCoercible(this)),
          toString6(notARegExp(searchString)),
          arguments.length > 1 ? arguments[1] : void 0
        );
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.is-well-formed.js
var require_es_string_is_well_formed = __commonJS({
  "../../node_modules/core-js/modules/es.string.is-well-formed.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var requireObjectCoercible = require_require_object_coercible();
    var toString6 = require_to_string();
    var charCodeAt = uncurryThis("".charCodeAt);
    $2({ target: "String", proto: true }, {
      isWellFormed: function isWellFormed() {
        var S3 = toString6(requireObjectCoercible(this));
        var length = S3.length;
        for (var i2 = 0; i2 < length; i2++) {
          var charCode = charCodeAt(S3, i2);
          if ((charCode & 63488) != 55296) continue;
          if (charCode >= 56320 || ++i2 >= length || (charCodeAt(S3, i2) & 64512) != 56320) return false;
        }
        return true;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.iterator.js
var require_es_string_iterator = __commonJS({
  "../../node_modules/core-js/modules/es.string.iterator.js"() {
    "use strict";
    var charAt = require_string_multibyte().charAt;
    var toString6 = require_to_string();
    var InternalStateModule = require_internal_state();
    var defineIterator = require_iterator_define();
    var createIterResultObject = require_create_iter_result_object();
    var STRING_ITERATOR = "String Iterator";
    var setInternalState = InternalStateModule.set;
    var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);
    defineIterator(String, "String", function(iterated) {
      setInternalState(this, {
        type: STRING_ITERATOR,
        string: toString6(iterated),
        index: 0
      });
    }, function next() {
      var state = getInternalState(this);
      var string2 = state.string;
      var index4 = state.index;
      var point6;
      if (index4 >= string2.length) return createIterResultObject(void 0, true);
      point6 = charAt(string2, index4);
      state.index += point6.length;
      return createIterResultObject(point6, false);
    });
  }
});

// ../../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js
var require_fix_regexp_well_known_symbol_logic = __commonJS({
  "../../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"(exports2, module2) {
    "use strict";
    require_es_regexp_exec();
    var uncurryThis = require_function_uncurry_this_clause();
    var defineBuiltIn = require_define_built_in();
    var regexpExec = require_regexp_exec();
    var fails = require_fails();
    var wellKnownSymbol = require_well_known_symbol();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var SPECIES = wellKnownSymbol("species");
    var RegExpPrototype = RegExp.prototype;
    module2.exports = function(KEY, exec3, FORCED, SHAM) {
      var SYMBOL = wellKnownSymbol(KEY);
      var DELEGATES_TO_SYMBOL = !fails(function() {
        var O = {};
        O[SYMBOL] = function() {
          return 7;
        };
        return ""[KEY](O) != 7;
      });
      var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function() {
        var execCalled = false;
        var re = /a/;
        if (KEY === "split") {
          re = {};
          re.constructor = {};
          re.constructor[SPECIES] = function() {
            return re;
          };
          re.flags = "";
          re[SYMBOL] = /./[SYMBOL];
        }
        re.exec = function() {
          execCalled = true;
          return null;
        };
        re[SYMBOL]("");
        return !execCalled;
      });
      if (!DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || FORCED) {
        var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);
        var methods = exec3(SYMBOL, ""[KEY], function(nativeMethod, regexp, str2, arg2, forceStringMethod) {
          var uncurriedNativeMethod = uncurryThis(nativeMethod);
          var $exec = regexp.exec;
          if ($exec === regexpExec || $exec === RegExpPrototype.exec) {
            if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
              return { done: true, value: uncurriedNativeRegExpMethod(regexp, str2, arg2) };
            }
            return { done: true, value: uncurriedNativeMethod(str2, regexp, arg2) };
          }
          return { done: false };
        });
        defineBuiltIn(String.prototype, KEY, methods[0]);
        defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);
      }
      if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], "sham", true);
    };
  }
});

// ../../node_modules/core-js/internals/advance-string-index.js
var require_advance_string_index = __commonJS({
  "../../node_modules/core-js/internals/advance-string-index.js"(exports2, module2) {
    "use strict";
    var charAt = require_string_multibyte().charAt;
    module2.exports = function(S3, index4, unicode) {
      return index4 + (unicode ? charAt(S3, index4).length : 1);
    };
  }
});

// ../../node_modules/core-js/internals/regexp-exec-abstract.js
var require_regexp_exec_abstract = __commonJS({
  "../../node_modules/core-js/internals/regexp-exec-abstract.js"(exports2, module2) {
    var call = require_function_call();
    var anObject = require_an_object();
    var isCallable = require_is_callable();
    var classof = require_classof_raw();
    var regexpExec = require_regexp_exec();
    var $TypeError = TypeError;
    module2.exports = function(R, S3) {
      var exec3 = R.exec;
      if (isCallable(exec3)) {
        var result = call(exec3, R, S3);
        if (result !== null) anObject(result);
        return result;
      }
      if (classof(R) === "RegExp") return call(regexpExec, R, S3);
      throw $TypeError("RegExp#exec called on incompatible receiver");
    };
  }
});

// ../../node_modules/core-js/modules/es.string.match.js
var require_es_string_match = __commonJS({
  "../../node_modules/core-js/modules/es.string.match.js"() {
    "use strict";
    var call = require_function_call();
    var fixRegExpWellKnownSymbolLogic = require_fix_regexp_well_known_symbol_logic();
    var anObject = require_an_object();
    var isNullOrUndefined = require_is_null_or_undefined();
    var toLength = require_to_length();
    var toString6 = require_to_string();
    var requireObjectCoercible = require_require_object_coercible();
    var getMethod = require_get_method();
    var advanceStringIndex = require_advance_string_index();
    var regExpExec = require_regexp_exec_abstract();
    fixRegExpWellKnownSymbolLogic("match", function(MATCH, nativeMatch, maybeCallNative) {
      return [
        // `String.prototype.match` method
        // https://tc39.es/ecma262/#sec-string.prototype.match
        function match3(regexp) {
          var O = requireObjectCoercible(this);
          var matcher = isNullOrUndefined(regexp) ? void 0 : getMethod(regexp, MATCH);
          return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString6(O));
        },
        // `RegExp.prototype[@@match]` method
        // https://tc39.es/ecma262/#sec-regexp.prototype-@@match
        function(string2) {
          var rx = anObject(this);
          var S3 = toString6(string2);
          var res = maybeCallNative(nativeMatch, rx, S3);
          if (res.done) return res.value;
          if (!rx.global) return regExpExec(rx, S3);
          var fullUnicode = rx.unicode;
          rx.lastIndex = 0;
          var A2 = [];
          var n = 0;
          var result;
          while ((result = regExpExec(rx, S3)) !== null) {
            var matchStr = toString6(result[0]);
            A2[n] = matchStr;
            if (matchStr === "") rx.lastIndex = advanceStringIndex(S3, toLength(rx.lastIndex), fullUnicode);
            n++;
          }
          return n === 0 ? null : A2;
        }
      ];
    });
  }
});

// ../../node_modules/core-js/modules/es.string.match-all.js
var require_es_string_match_all = __commonJS({
  "../../node_modules/core-js/modules/es.string.match-all.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var uncurryThis = require_function_uncurry_this_clause();
    var createIteratorConstructor = require_iterator_create_constructor();
    var createIterResultObject = require_create_iter_result_object();
    var requireObjectCoercible = require_require_object_coercible();
    var toLength = require_to_length();
    var toString6 = require_to_string();
    var anObject = require_an_object();
    var isNullOrUndefined = require_is_null_or_undefined();
    var classof = require_classof_raw();
    var isRegExp = require_is_regexp();
    var getRegExpFlags = require_regexp_get_flags();
    var getMethod = require_get_method();
    var defineBuiltIn = require_define_built_in();
    var fails = require_fails();
    var wellKnownSymbol = require_well_known_symbol();
    var speciesConstructor = require_species_constructor();
    var advanceStringIndex = require_advance_string_index();
    var regExpExec = require_regexp_exec_abstract();
    var InternalStateModule = require_internal_state();
    var IS_PURE = require_is_pure();
    var MATCH_ALL = wellKnownSymbol("matchAll");
    var REGEXP_STRING = "RegExp String";
    var REGEXP_STRING_ITERATOR = REGEXP_STRING + " Iterator";
    var setInternalState = InternalStateModule.set;
    var getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);
    var RegExpPrototype = RegExp.prototype;
    var $TypeError = TypeError;
    var stringIndexOf = uncurryThis("".indexOf);
    var nativeMatchAll = uncurryThis("".matchAll);
    var WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails(function() {
      nativeMatchAll("a", /./);
    });
    var $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string2, $global, fullUnicode) {
      setInternalState(this, {
        type: REGEXP_STRING_ITERATOR,
        regexp,
        string: string2,
        global: $global,
        unicode: fullUnicode,
        done: false
      });
    }, REGEXP_STRING, function next() {
      var state = getInternalState(this);
      if (state.done) return createIterResultObject(void 0, true);
      var R = state.regexp;
      var S3 = state.string;
      var match3 = regExpExec(R, S3);
      if (match3 === null) {
        state.done = true;
        return createIterResultObject(void 0, true);
      }
      if (state.global) {
        if (toString6(match3[0]) === "") R.lastIndex = advanceStringIndex(S3, toLength(R.lastIndex), state.unicode);
        return createIterResultObject(match3, false);
      }
      state.done = true;
      return createIterResultObject(match3, false);
    });
    var $matchAll = function(string2) {
      var R = anObject(this);
      var S3 = toString6(string2);
      var C = speciesConstructor(R, RegExp);
      var flags = toString6(getRegExpFlags(R));
      var matcher, $global, fullUnicode;
      matcher = new C(C === RegExp ? R.source : R, flags);
      $global = !!~stringIndexOf(flags, "g");
      fullUnicode = !!~stringIndexOf(flags, "u");
      matcher.lastIndex = toLength(R.lastIndex);
      return new $RegExpStringIterator(matcher, S3, $global, fullUnicode);
    };
    $2({ target: "String", proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {
      matchAll: function matchAll(regexp) {
        var O = requireObjectCoercible(this);
        var flags, S3, matcher, rx;
        if (!isNullOrUndefined(regexp)) {
          if (isRegExp(regexp)) {
            flags = toString6(requireObjectCoercible(getRegExpFlags(regexp)));
            if (!~stringIndexOf(flags, "g")) throw $TypeError("`.matchAll` does not allow non-global regexes");
          }
          if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll(O, regexp);
          matcher = getMethod(regexp, MATCH_ALL);
          if (matcher === void 0 && IS_PURE && classof(regexp) == "RegExp") matcher = $matchAll;
          if (matcher) return call(matcher, regexp, O);
        } else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll(O, regexp);
        S3 = toString6(O);
        rx = new RegExp(regexp, "g");
        return IS_PURE ? call($matchAll, rx, S3) : rx[MATCH_ALL](S3);
      }
    });
    IS_PURE || MATCH_ALL in RegExpPrototype || defineBuiltIn(RegExpPrototype, MATCH_ALL, $matchAll);
  }
});

// ../../node_modules/core-js/internals/string-pad-webkit-bug.js
var require_string_pad_webkit_bug = __commonJS({
  "../../node_modules/core-js/internals/string-pad-webkit-bug.js"(exports2, module2) {
    var userAgent = require_engine_user_agent();
    module2.exports = /Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(userAgent);
  }
});

// ../../node_modules/core-js/modules/es.string.pad-end.js
var require_es_string_pad_end = __commonJS({
  "../../node_modules/core-js/modules/es.string.pad-end.js"() {
    "use strict";
    var $2 = require_export();
    var $padEnd = require_string_pad().end;
    var WEBKIT_BUG = require_string_pad_webkit_bug();
    $2({ target: "String", proto: true, forced: WEBKIT_BUG }, {
      padEnd: function padEnd(maxLength) {
        return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : void 0);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.pad-start.js
var require_es_string_pad_start = __commonJS({
  "../../node_modules/core-js/modules/es.string.pad-start.js"() {
    "use strict";
    var $2 = require_export();
    var $padStart = require_string_pad().start;
    var WEBKIT_BUG = require_string_pad_webkit_bug();
    $2({ target: "String", proto: true, forced: WEBKIT_BUG }, {
      padStart: function padStart2(maxLength) {
        return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : void 0);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.raw.js
var require_es_string_raw = __commonJS({
  "../../node_modules/core-js/modules/es.string.raw.js"() {
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var toIndexedObject = require_to_indexed_object();
    var toObject = require_to_object();
    var toString6 = require_to_string();
    var lengthOfArrayLike = require_length_of_array_like();
    var push = uncurryThis([].push);
    var join19 = uncurryThis([].join);
    $2({ target: "String", stat: true }, {
      raw: function raw2(template) {
        var rawTemplate = toIndexedObject(toObject(template).raw);
        var literalSegments = lengthOfArrayLike(rawTemplate);
        if (!literalSegments) return "";
        var argumentsLength = arguments.length;
        var elements = [];
        var i2 = 0;
        while (true) {
          push(elements, toString6(rawTemplate[i2++]));
          if (i2 === literalSegments) return join19(elements, "");
          if (i2 < argumentsLength) push(elements, toString6(arguments[i2]));
        }
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.repeat.js
var require_es_string_repeat = __commonJS({
  "../../node_modules/core-js/modules/es.string.repeat.js"() {
    var $2 = require_export();
    var repeat2 = require_string_repeat();
    $2({ target: "String", proto: true }, {
      repeat: repeat2
    });
  }
});

// ../../node_modules/core-js/internals/get-substitution.js
var require_get_substitution = __commonJS({
  "../../node_modules/core-js/internals/get-substitution.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var toObject = require_to_object();
    var floor = Math.floor;
    var charAt = uncurryThis("".charAt);
    var replace = uncurryThis("".replace);
    var stringSlice = uncurryThis("".slice);
    var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
    var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g;
    module2.exports = function(matched, str2, position6, captures, namedCaptures, replacement) {
      var tailPos = position6 + matched.length;
      var m2 = captures.length;
      var symbols4 = SUBSTITUTION_SYMBOLS_NO_NAMED;
      if (namedCaptures !== void 0) {
        namedCaptures = toObject(namedCaptures);
        symbols4 = SUBSTITUTION_SYMBOLS;
      }
      return replace(replacement, symbols4, function(match3, ch) {
        var capture;
        switch (charAt(ch, 0)) {
          case "$":
            return "$";
          case "&":
            return matched;
          case "`":
            return stringSlice(str2, 0, position6);
          case "'":
            return stringSlice(str2, tailPos);
          case "<":
            capture = namedCaptures[stringSlice(ch, 1, -1)];
            break;
          default:
            var n = +ch;
            if (n === 0) return match3;
            if (n > m2) {
              var f3 = floor(n / 10);
              if (f3 === 0) return match3;
              if (f3 <= m2) return captures[f3 - 1] === void 0 ? charAt(ch, 1) : captures[f3 - 1] + charAt(ch, 1);
              return match3;
            }
            capture = captures[n - 1];
        }
        return capture === void 0 ? "" : capture;
      });
    };
  }
});

// ../../node_modules/core-js/modules/es.string.replace.js
var require_es_string_replace = __commonJS({
  "../../node_modules/core-js/modules/es.string.replace.js"() {
    "use strict";
    var apply = require_function_apply();
    var call = require_function_call();
    var uncurryThis = require_function_uncurry_this();
    var fixRegExpWellKnownSymbolLogic = require_fix_regexp_well_known_symbol_logic();
    var fails = require_fails();
    var anObject = require_an_object();
    var isCallable = require_is_callable();
    var isNullOrUndefined = require_is_null_or_undefined();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var toLength = require_to_length();
    var toString6 = require_to_string();
    var requireObjectCoercible = require_require_object_coercible();
    var advanceStringIndex = require_advance_string_index();
    var getMethod = require_get_method();
    var getSubstitution = require_get_substitution();
    var regExpExec = require_regexp_exec_abstract();
    var wellKnownSymbol = require_well_known_symbol();
    var REPLACE = wellKnownSymbol("replace");
    var max = Math.max;
    var min = Math.min;
    var concat2 = uncurryThis([].concat);
    var push = uncurryThis([].push);
    var stringIndexOf = uncurryThis("".indexOf);
    var stringSlice = uncurryThis("".slice);
    var maybeToString = function(it) {
      return it === void 0 ? it : String(it);
    };
    var REPLACE_KEEPS_$0 = (function() {
      return "a".replace(/./, "$0") === "$0";
    })();
    var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function() {
      if (/./[REPLACE]) {
        return /./[REPLACE]("a", "$0") === "";
      }
      return false;
    })();
    var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function() {
      var re = /./;
      re.exec = function() {
        var result = [];
        result.groups = { a: "7" };
        return result;
      };
      return "".replace(re, "$<a>") !== "7";
    });
    fixRegExpWellKnownSymbolLogic("replace", function(_2, nativeReplace, maybeCallNative) {
      var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? "$" : "$0";
      return [
        // `String.prototype.replace` method
        // https://tc39.es/ecma262/#sec-string.prototype.replace
        function replace(searchValue, replaceValue) {
          var O = requireObjectCoercible(this);
          var replacer = isNullOrUndefined(searchValue) ? void 0 : getMethod(searchValue, REPLACE);
          return replacer ? call(replacer, searchValue, O, replaceValue) : call(nativeReplace, toString6(O), searchValue, replaceValue);
        },
        // `RegExp.prototype[@@replace]` method
        // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace
        function(string2, replaceValue) {
          var rx = anObject(this);
          var S3 = toString6(string2);
          if (typeof replaceValue == "string" && stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 && stringIndexOf(replaceValue, "$<") === -1) {
            var res = maybeCallNative(nativeReplace, rx, S3, replaceValue);
            if (res.done) return res.value;
          }
          var functionalReplace = isCallable(replaceValue);
          if (!functionalReplace) replaceValue = toString6(replaceValue);
          var global2 = rx.global;
          if (global2) {
            var fullUnicode = rx.unicode;
            rx.lastIndex = 0;
          }
          var results = [];
          while (true) {
            var result = regExpExec(rx, S3);
            if (result === null) break;
            push(results, result);
            if (!global2) break;
            var matchStr = toString6(result[0]);
            if (matchStr === "") rx.lastIndex = advanceStringIndex(S3, toLength(rx.lastIndex), fullUnicode);
          }
          var accumulatedResult = "";
          var nextSourcePosition = 0;
          for (var i2 = 0; i2 < results.length; i2++) {
            result = results[i2];
            var matched = toString6(result[0]);
            var position6 = max(min(toIntegerOrInfinity(result.index), S3.length), 0);
            var captures = [];
            for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));
            var namedCaptures = result.groups;
            if (functionalReplace) {
              var replacerArgs = concat2([matched], captures, position6, S3);
              if (namedCaptures !== void 0) push(replacerArgs, namedCaptures);
              var replacement = toString6(apply(replaceValue, void 0, replacerArgs));
            } else {
              replacement = getSubstitution(matched, S3, position6, captures, namedCaptures, replaceValue);
            }
            if (position6 >= nextSourcePosition) {
              accumulatedResult += stringSlice(S3, nextSourcePosition, position6) + replacement;
              nextSourcePosition = position6 + matched.length;
            }
          }
          return accumulatedResult + stringSlice(S3, nextSourcePosition);
        }
      ];
    }, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);
  }
});

// ../../node_modules/core-js/modules/es.string.replace-all.js
var require_es_string_replace_all = __commonJS({
  "../../node_modules/core-js/modules/es.string.replace-all.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var uncurryThis = require_function_uncurry_this();
    var requireObjectCoercible = require_require_object_coercible();
    var isCallable = require_is_callable();
    var isNullOrUndefined = require_is_null_or_undefined();
    var isRegExp = require_is_regexp();
    var toString6 = require_to_string();
    var getMethod = require_get_method();
    var getRegExpFlags = require_regexp_get_flags();
    var getSubstitution = require_get_substitution();
    var wellKnownSymbol = require_well_known_symbol();
    var IS_PURE = require_is_pure();
    var REPLACE = wellKnownSymbol("replace");
    var $TypeError = TypeError;
    var indexOf2 = uncurryThis("".indexOf);
    var replace = uncurryThis("".replace);
    var stringSlice = uncurryThis("".slice);
    var max = Math.max;
    var stringIndexOf = function(string2, searchValue, fromIndex) {
      if (fromIndex > string2.length) return -1;
      if (searchValue === "") return fromIndex;
      return indexOf2(string2, searchValue, fromIndex);
    };
    $2({ target: "String", proto: true }, {
      replaceAll: function replaceAll(searchValue, replaceValue) {
        var O = requireObjectCoercible(this);
        var IS_REG_EXP, flags, replacer, string2, searchString, functionalReplace, searchLength, advanceBy, replacement;
        var position6 = 0;
        var endOfLastMatch = 0;
        var result = "";
        if (!isNullOrUndefined(searchValue)) {
          IS_REG_EXP = isRegExp(searchValue);
          if (IS_REG_EXP) {
            flags = toString6(requireObjectCoercible(getRegExpFlags(searchValue)));
            if (!~indexOf2(flags, "g")) throw $TypeError("`.replaceAll` does not allow non-global regexes");
          }
          replacer = getMethod(searchValue, REPLACE);
          if (replacer) {
            return call(replacer, searchValue, O, replaceValue);
          } else if (IS_PURE && IS_REG_EXP) {
            return replace(toString6(O), searchValue, replaceValue);
          }
        }
        string2 = toString6(O);
        searchString = toString6(searchValue);
        functionalReplace = isCallable(replaceValue);
        if (!functionalReplace) replaceValue = toString6(replaceValue);
        searchLength = searchString.length;
        advanceBy = max(1, searchLength);
        position6 = stringIndexOf(string2, searchString, 0);
        while (position6 !== -1) {
          replacement = functionalReplace ? toString6(replaceValue(searchString, position6, string2)) : getSubstitution(searchString, string2, position6, [], void 0, replaceValue);
          result += stringSlice(string2, endOfLastMatch, position6) + replacement;
          endOfLastMatch = position6 + searchLength;
          position6 = stringIndexOf(string2, searchString, position6 + advanceBy);
        }
        if (endOfLastMatch < string2.length) {
          result += stringSlice(string2, endOfLastMatch);
        }
        return result;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.search.js
var require_es_string_search = __commonJS({
  "../../node_modules/core-js/modules/es.string.search.js"() {
    "use strict";
    var call = require_function_call();
    var fixRegExpWellKnownSymbolLogic = require_fix_regexp_well_known_symbol_logic();
    var anObject = require_an_object();
    var isNullOrUndefined = require_is_null_or_undefined();
    var requireObjectCoercible = require_require_object_coercible();
    var sameValue = require_same_value();
    var toString6 = require_to_string();
    var getMethod = require_get_method();
    var regExpExec = require_regexp_exec_abstract();
    fixRegExpWellKnownSymbolLogic("search", function(SEARCH, nativeSearch, maybeCallNative) {
      return [
        // `String.prototype.search` method
        // https://tc39.es/ecma262/#sec-string.prototype.search
        function search4(regexp) {
          var O = requireObjectCoercible(this);
          var searcher = isNullOrUndefined(regexp) ? void 0 : getMethod(regexp, SEARCH);
          return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString6(O));
        },
        // `RegExp.prototype[@@search]` method
        // https://tc39.es/ecma262/#sec-regexp.prototype-@@search
        function(string2) {
          var rx = anObject(this);
          var S3 = toString6(string2);
          var res = maybeCallNative(nativeSearch, rx, S3);
          if (res.done) return res.value;
          var previousLastIndex = rx.lastIndex;
          if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;
          var result = regExpExec(rx, S3);
          if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;
          return result === null ? -1 : result.index;
        }
      ];
    });
  }
});

// ../../node_modules/core-js/modules/es.string.split.js
var require_es_string_split = __commonJS({
  "../../node_modules/core-js/modules/es.string.split.js"() {
    "use strict";
    var apply = require_function_apply();
    var call = require_function_call();
    var uncurryThis = require_function_uncurry_this();
    var fixRegExpWellKnownSymbolLogic = require_fix_regexp_well_known_symbol_logic();
    var anObject = require_an_object();
    var isNullOrUndefined = require_is_null_or_undefined();
    var isRegExp = require_is_regexp();
    var requireObjectCoercible = require_require_object_coercible();
    var speciesConstructor = require_species_constructor();
    var advanceStringIndex = require_advance_string_index();
    var toLength = require_to_length();
    var toString6 = require_to_string();
    var getMethod = require_get_method();
    var arraySlice = require_array_slice_simple();
    var callRegExpExec = require_regexp_exec_abstract();
    var regexpExec = require_regexp_exec();
    var stickyHelpers = require_regexp_sticky_helpers();
    var fails = require_fails();
    var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
    var MAX_UINT32 = 4294967295;
    var min = Math.min;
    var $push = [].push;
    var exec3 = uncurryThis(/./.exec);
    var push = uncurryThis($push);
    var stringSlice = uncurryThis("".slice);
    var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function() {
      var re = /(?:)/;
      var originalExec = re.exec;
      re.exec = function() {
        return originalExec.apply(this, arguments);
      };
      var result = "ab".split(re);
      return result.length !== 2 || result[0] !== "a" || result[1] !== "b";
    });
    fixRegExpWellKnownSymbolLogic("split", function(SPLIT, nativeSplit, maybeCallNative) {
      var internalSplit;
      if ("abbc".split(/(b)*/)[1] == "c" || // eslint-disable-next-line regexp/no-empty-group -- required for testing
      "test".split(/(?:)/, -1).length != 4 || "ab".split(/(?:ab)*/).length != 2 || ".".split(/(.?)(.?)/).length != 4 || // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing
      ".".split(/()()/).length > 1 || "".split(/.?/).length) {
        internalSplit = function(separator, limit) {
          var string2 = toString6(requireObjectCoercible(this));
          var lim = limit === void 0 ? MAX_UINT32 : limit >>> 0;
          if (lim === 0) return [];
          if (separator === void 0) return [string2];
          if (!isRegExp(separator)) {
            return call(nativeSplit, string2, separator, lim);
          }
          var output2 = [];
          var flags = (separator.ignoreCase ? "i" : "") + (separator.multiline ? "m" : "") + (separator.unicode ? "u" : "") + (separator.sticky ? "y" : "");
          var lastLastIndex = 0;
          var separatorCopy = new RegExp(separator.source, flags + "g");
          var match3, lastIndex, lastLength;
          while (match3 = call(regexpExec, separatorCopy, string2)) {
            lastIndex = separatorCopy.lastIndex;
            if (lastIndex > lastLastIndex) {
              push(output2, stringSlice(string2, lastLastIndex, match3.index));
              if (match3.length > 1 && match3.index < string2.length) apply($push, output2, arraySlice(match3, 1));
              lastLength = match3[0].length;
              lastLastIndex = lastIndex;
              if (output2.length >= lim) break;
            }
            if (separatorCopy.lastIndex === match3.index) separatorCopy.lastIndex++;
          }
          if (lastLastIndex === string2.length) {
            if (lastLength || !exec3(separatorCopy, "")) push(output2, "");
          } else push(output2, stringSlice(string2, lastLastIndex));
          return output2.length > lim ? arraySlice(output2, 0, lim) : output2;
        };
      } else if ("0".split(void 0, 0).length) {
        internalSplit = function(separator, limit) {
          return separator === void 0 && limit === 0 ? [] : call(nativeSplit, this, separator, limit);
        };
      } else internalSplit = nativeSplit;
      return [
        // `String.prototype.split` method
        // https://tc39.es/ecma262/#sec-string.prototype.split
        function split2(separator, limit) {
          var O = requireObjectCoercible(this);
          var splitter = isNullOrUndefined(separator) ? void 0 : getMethod(separator, SPLIT);
          return splitter ? call(splitter, separator, O, limit) : call(internalSplit, toString6(O), separator, limit);
        },
        // `RegExp.prototype[@@split]` method
        // https://tc39.es/ecma262/#sec-regexp.prototype-@@split
        //
        // NOTE: This cannot be properly polyfilled in engines that don't support
        // the 'y' flag.
        function(string2, limit) {
          var rx = anObject(this);
          var S3 = toString6(string2);
          var res = maybeCallNative(internalSplit, rx, S3, limit, internalSplit !== nativeSplit);
          if (res.done) return res.value;
          var C = speciesConstructor(rx, RegExp);
          var unicodeMatching = rx.unicode;
          var flags = (rx.ignoreCase ? "i" : "") + (rx.multiline ? "m" : "") + (rx.unicode ? "u" : "") + (UNSUPPORTED_Y ? "g" : "y");
          var splitter = new C(UNSUPPORTED_Y ? "^(?:" + rx.source + ")" : rx, flags);
          var lim = limit === void 0 ? MAX_UINT32 : limit >>> 0;
          if (lim === 0) return [];
          if (S3.length === 0) return callRegExpExec(splitter, S3) === null ? [S3] : [];
          var p5 = 0;
          var q2 = 0;
          var A2 = [];
          while (q2 < S3.length) {
            splitter.lastIndex = UNSUPPORTED_Y ? 0 : q2;
            var z2 = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S3, q2) : S3);
            var e2;
            if (z2 === null || (e2 = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q2 : 0)), S3.length)) === p5) {
              q2 = advanceStringIndex(S3, q2, unicodeMatching);
            } else {
              push(A2, stringSlice(S3, p5, q2));
              if (A2.length === lim) return A2;
              for (var i2 = 1; i2 <= z2.length - 1; i2++) {
                push(A2, z2[i2]);
                if (A2.length === lim) return A2;
              }
              q2 = p5 = e2;
            }
          }
          push(A2, stringSlice(S3, p5));
          return A2;
        }
      ];
    }, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);
  }
});

// ../../node_modules/core-js/modules/es.string.starts-with.js
var require_es_string_starts_with = __commonJS({
  "../../node_modules/core-js/modules/es.string.starts-with.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this_clause();
    var getOwnPropertyDescriptor = require_object_get_own_property_descriptor().f;
    var toLength = require_to_length();
    var toString6 = require_to_string();
    var notARegExp = require_not_a_regexp();
    var requireObjectCoercible = require_require_object_coercible();
    var correctIsRegExpLogic = require_correct_is_regexp_logic();
    var IS_PURE = require_is_pure();
    var nativeStartsWith = uncurryThis("".startsWith);
    var stringSlice = uncurryThis("".slice);
    var min = Math.min;
    var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic("startsWith");
    var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!(function() {
      var descriptor = getOwnPropertyDescriptor(String.prototype, "startsWith");
      return descriptor && !descriptor.writable;
    })();
    $2({ target: "String", proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {
      startsWith: function startsWith(searchString) {
        var that = toString6(requireObjectCoercible(this));
        notARegExp(searchString);
        var index4 = toLength(min(arguments.length > 1 ? arguments[1] : void 0, that.length));
        var search4 = toString6(searchString);
        return nativeStartsWith ? nativeStartsWith(that, search4, index4) : stringSlice(that, index4, index4 + search4.length) === search4;
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.substr.js
var require_es_string_substr = __commonJS({
  "../../node_modules/core-js/modules/es.string.substr.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var requireObjectCoercible = require_require_object_coercible();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var toString6 = require_to_string();
    var stringSlice = uncurryThis("".slice);
    var max = Math.max;
    var min = Math.min;
    var FORCED = !"".substr || "ab".substr(-1) !== "b";
    $2({ target: "String", proto: true, forced: FORCED }, {
      substr: function substr(start, length) {
        var that = toString6(requireObjectCoercible(this));
        var size = that.length;
        var intStart = toIntegerOrInfinity(start);
        var intLength, intEnd;
        if (intStart === Infinity) intStart = 0;
        if (intStart < 0) intStart = max(size + intStart, 0);
        intLength = length === void 0 ? size : toIntegerOrInfinity(length);
        if (intLength <= 0 || intLength === Infinity) return "";
        intEnd = min(intStart + intLength, size);
        return intStart >= intEnd ? "" : stringSlice(that, intStart, intEnd);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.to-well-formed.js
var require_es_string_to_well_formed = __commonJS({
  "../../node_modules/core-js/modules/es.string.to-well-formed.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var uncurryThis = require_function_uncurry_this();
    var requireObjectCoercible = require_require_object_coercible();
    var toString6 = require_to_string();
    var fails = require_fails();
    var $Array = Array;
    var charAt = uncurryThis("".charAt);
    var charCodeAt = uncurryThis("".charCodeAt);
    var join19 = uncurryThis([].join);
    var $toWellFormed = "".toWellFormed;
    var REPLACEMENT_CHARACTER2 = "\uFFFD";
    var TO_STRING_CONVERSION_BUG = $toWellFormed && fails(function() {
      return call($toWellFormed, 1) !== "1";
    });
    $2({ target: "String", proto: true, forced: TO_STRING_CONVERSION_BUG }, {
      toWellFormed: function toWellFormed() {
        var S3 = toString6(requireObjectCoercible(this));
        if (TO_STRING_CONVERSION_BUG) return call($toWellFormed, S3);
        var length = S3.length;
        var result = $Array(length);
        for (var i2 = 0; i2 < length; i2++) {
          var charCode = charCodeAt(S3, i2);
          if ((charCode & 63488) != 55296) result[i2] = charAt(S3, i2);
          else if (charCode >= 56320 || i2 + 1 >= length || (charCodeAt(S3, i2 + 1) & 64512) != 56320) result[i2] = REPLACEMENT_CHARACTER2;
          else {
            result[i2] = charAt(S3, i2);
            result[++i2] = charAt(S3, i2);
          }
        }
        return join19(result, "");
      }
    });
  }
});

// ../../node_modules/core-js/internals/string-trim-forced.js
var require_string_trim_forced = __commonJS({
  "../../node_modules/core-js/internals/string-trim-forced.js"(exports2, module2) {
    var PROPER_FUNCTION_NAME = require_function_name().PROPER;
    var fails = require_fails();
    var whitespaces = require_whitespaces();
    var non = "\u200B\x85\u180E";
    module2.exports = function(METHOD_NAME) {
      return fails(function() {
        return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() !== non || PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME;
      });
    };
  }
});

// ../../node_modules/core-js/modules/es.string.trim.js
var require_es_string_trim = __commonJS({
  "../../node_modules/core-js/modules/es.string.trim.js"() {
    "use strict";
    var $2 = require_export();
    var $trim = require_string_trim().trim;
    var forcedStringTrimMethod = require_string_trim_forced();
    $2({ target: "String", proto: true, forced: forcedStringTrimMethod("trim") }, {
      trim: function trim2() {
        return $trim(this);
      }
    });
  }
});

// ../../node_modules/core-js/internals/string-trim-end.js
var require_string_trim_end = __commonJS({
  "../../node_modules/core-js/internals/string-trim-end.js"(exports2, module2) {
    "use strict";
    var $trimEnd = require_string_trim().end;
    var forcedStringTrimMethod = require_string_trim_forced();
    module2.exports = forcedStringTrimMethod("trimEnd") ? function trimEnd2() {
      return $trimEnd(this);
    } : "".trimEnd;
  }
});

// ../../node_modules/core-js/modules/es.string.trim-right.js
var require_es_string_trim_right = __commonJS({
  "../../node_modules/core-js/modules/es.string.trim-right.js"() {
    var $2 = require_export();
    var trimEnd2 = require_string_trim_end();
    $2({ target: "String", proto: true, name: "trimEnd", forced: "".trimRight !== trimEnd2 }, {
      trimRight: trimEnd2
    });
  }
});

// ../../node_modules/core-js/modules/es.string.trim-end.js
var require_es_string_trim_end = __commonJS({
  "../../node_modules/core-js/modules/es.string.trim-end.js"() {
    require_es_string_trim_right();
    var $2 = require_export();
    var trimEnd2 = require_string_trim_end();
    $2({ target: "String", proto: true, name: "trimEnd", forced: "".trimEnd !== trimEnd2 }, {
      trimEnd: trimEnd2
    });
  }
});

// ../../node_modules/core-js/internals/string-trim-start.js
var require_string_trim_start = __commonJS({
  "../../node_modules/core-js/internals/string-trim-start.js"(exports2, module2) {
    "use strict";
    var $trimStart = require_string_trim().start;
    var forcedStringTrimMethod = require_string_trim_forced();
    module2.exports = forcedStringTrimMethod("trimStart") ? function trimStart2() {
      return $trimStart(this);
    } : "".trimStart;
  }
});

// ../../node_modules/core-js/modules/es.string.trim-left.js
var require_es_string_trim_left = __commonJS({
  "../../node_modules/core-js/modules/es.string.trim-left.js"() {
    var $2 = require_export();
    var trimStart2 = require_string_trim_start();
    $2({ target: "String", proto: true, name: "trimStart", forced: "".trimLeft !== trimStart2 }, {
      trimLeft: trimStart2
    });
  }
});

// ../../node_modules/core-js/modules/es.string.trim-start.js
var require_es_string_trim_start = __commonJS({
  "../../node_modules/core-js/modules/es.string.trim-start.js"() {
    require_es_string_trim_left();
    var $2 = require_export();
    var trimStart2 = require_string_trim_start();
    $2({ target: "String", proto: true, name: "trimStart", forced: "".trimStart !== trimStart2 }, {
      trimStart: trimStart2
    });
  }
});

// ../../node_modules/core-js/internals/create-html.js
var require_create_html = __commonJS({
  "../../node_modules/core-js/internals/create-html.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var requireObjectCoercible = require_require_object_coercible();
    var toString6 = require_to_string();
    var quot = /"/g;
    var replace = uncurryThis("".replace);
    module2.exports = function(string2, tag, attribute2, value) {
      var S3 = toString6(requireObjectCoercible(string2));
      var p1 = "<" + tag;
      if (attribute2 !== "") p1 += " " + attribute2 + '="' + replace(toString6(value), quot, "&quot;") + '"';
      return p1 + ">" + S3 + "</" + tag + ">";
    };
  }
});

// ../../node_modules/core-js/internals/string-html-forced.js
var require_string_html_forced = __commonJS({
  "../../node_modules/core-js/internals/string-html-forced.js"(exports2, module2) {
    var fails = require_fails();
    module2.exports = function(METHOD_NAME) {
      return fails(function() {
        var test2 = ""[METHOD_NAME]('"');
        return test2 !== test2.toLowerCase() || test2.split('"').length > 3;
      });
    };
  }
});

// ../../node_modules/core-js/modules/es.string.anchor.js
var require_es_string_anchor = __commonJS({
  "../../node_modules/core-js/modules/es.string.anchor.js"() {
    "use strict";
    var $2 = require_export();
    var createHTML = require_create_html();
    var forcedStringHTMLMethod = require_string_html_forced();
    $2({ target: "String", proto: true, forced: forcedStringHTMLMethod("anchor") }, {
      anchor: function anchor(name3) {
        return createHTML(this, "a", "name", name3);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.big.js
var require_es_string_big = __commonJS({
  "../../node_modules/core-js/modules/es.string.big.js"() {
    "use strict";
    var $2 = require_export();
    var createHTML = require_create_html();
    var forcedStringHTMLMethod = require_string_html_forced();
    $2({ target: "String", proto: true, forced: forcedStringHTMLMethod("big") }, {
      big: function big() {
        return createHTML(this, "big", "", "");
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.blink.js
var require_es_string_blink = __commonJS({
  "../../node_modules/core-js/modules/es.string.blink.js"() {
    "use strict";
    var $2 = require_export();
    var createHTML = require_create_html();
    var forcedStringHTMLMethod = require_string_html_forced();
    $2({ target: "String", proto: true, forced: forcedStringHTMLMethod("blink") }, {
      blink: function blink() {
        return createHTML(this, "blink", "", "");
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.bold.js
var require_es_string_bold = __commonJS({
  "../../node_modules/core-js/modules/es.string.bold.js"() {
    "use strict";
    var $2 = require_export();
    var createHTML = require_create_html();
    var forcedStringHTMLMethod = require_string_html_forced();
    $2({ target: "String", proto: true, forced: forcedStringHTMLMethod("bold") }, {
      bold: function bold() {
        return createHTML(this, "b", "", "");
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.fixed.js
var require_es_string_fixed = __commonJS({
  "../../node_modules/core-js/modules/es.string.fixed.js"() {
    "use strict";
    var $2 = require_export();
    var createHTML = require_create_html();
    var forcedStringHTMLMethod = require_string_html_forced();
    $2({ target: "String", proto: true, forced: forcedStringHTMLMethod("fixed") }, {
      fixed: function fixed() {
        return createHTML(this, "tt", "", "");
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.fontcolor.js
var require_es_string_fontcolor = __commonJS({
  "../../node_modules/core-js/modules/es.string.fontcolor.js"() {
    "use strict";
    var $2 = require_export();
    var createHTML = require_create_html();
    var forcedStringHTMLMethod = require_string_html_forced();
    $2({ target: "String", proto: true, forced: forcedStringHTMLMethod("fontcolor") }, {
      fontcolor: function fontcolor(color2) {
        return createHTML(this, "font", "color", color2);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.fontsize.js
var require_es_string_fontsize = __commonJS({
  "../../node_modules/core-js/modules/es.string.fontsize.js"() {
    "use strict";
    var $2 = require_export();
    var createHTML = require_create_html();
    var forcedStringHTMLMethod = require_string_html_forced();
    $2({ target: "String", proto: true, forced: forcedStringHTMLMethod("fontsize") }, {
      fontsize: function fontsize(size) {
        return createHTML(this, "font", "size", size);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.italics.js
var require_es_string_italics = __commonJS({
  "../../node_modules/core-js/modules/es.string.italics.js"() {
    "use strict";
    var $2 = require_export();
    var createHTML = require_create_html();
    var forcedStringHTMLMethod = require_string_html_forced();
    $2({ target: "String", proto: true, forced: forcedStringHTMLMethod("italics") }, {
      italics: function italics() {
        return createHTML(this, "i", "", "");
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.link.js
var require_es_string_link = __commonJS({
  "../../node_modules/core-js/modules/es.string.link.js"() {
    "use strict";
    var $2 = require_export();
    var createHTML = require_create_html();
    var forcedStringHTMLMethod = require_string_html_forced();
    $2({ target: "String", proto: true, forced: forcedStringHTMLMethod("link") }, {
      link: function link4(url) {
        return createHTML(this, "a", "href", url);
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.small.js
var require_es_string_small = __commonJS({
  "../../node_modules/core-js/modules/es.string.small.js"() {
    "use strict";
    var $2 = require_export();
    var createHTML = require_create_html();
    var forcedStringHTMLMethod = require_string_html_forced();
    $2({ target: "String", proto: true, forced: forcedStringHTMLMethod("small") }, {
      small: function small() {
        return createHTML(this, "small", "", "");
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.strike.js
var require_es_string_strike = __commonJS({
  "../../node_modules/core-js/modules/es.string.strike.js"() {
    "use strict";
    var $2 = require_export();
    var createHTML = require_create_html();
    var forcedStringHTMLMethod = require_string_html_forced();
    $2({ target: "String", proto: true, forced: forcedStringHTMLMethod("strike") }, {
      strike: function strike() {
        return createHTML(this, "strike", "", "");
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.sub.js
var require_es_string_sub = __commonJS({
  "../../node_modules/core-js/modules/es.string.sub.js"() {
    "use strict";
    var $2 = require_export();
    var createHTML = require_create_html();
    var forcedStringHTMLMethod = require_string_html_forced();
    $2({ target: "String", proto: true, forced: forcedStringHTMLMethod("sub") }, {
      sub: function sub2() {
        return createHTML(this, "sub", "", "");
      }
    });
  }
});

// ../../node_modules/core-js/modules/es.string.sup.js
var require_es_string_sup = __commonJS({
  "../../node_modules/core-js/modules/es.string.sup.js"() {
    "use strict";
    var $2 = require_export();
    var createHTML = require_create_html();
    var forcedStringHTMLMethod = require_string_html_forced();
    $2({ target: "String", proto: true, forced: forcedStringHTMLMethod("sup") }, {
      sup: function sup2() {
        return createHTML(this, "sup", "", "");
      }
    });
  }
});

// ../../node_modules/core-js/internals/typed-array-constructors-require-wrappers.js
var require_typed_array_constructors_require_wrappers = __commonJS({
  "../../node_modules/core-js/internals/typed-array-constructors-require-wrappers.js"(exports2, module2) {
    var global2 = require_global();
    var fails = require_fails();
    var checkCorrectnessOfIteration = require_check_correctness_of_iteration();
    var NATIVE_ARRAY_BUFFER_VIEWS = require_array_buffer_view_core().NATIVE_ARRAY_BUFFER_VIEWS;
    var ArrayBuffer2 = global2.ArrayBuffer;
    var Int8Array2 = global2.Int8Array;
    module2.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function() {
      Int8Array2(1);
    }) || !fails(function() {
      new Int8Array2(-1);
    }) || !checkCorrectnessOfIteration(function(iterable) {
      new Int8Array2();
      new Int8Array2(null);
      new Int8Array2(1.5);
      new Int8Array2(iterable);
    }, true) || fails(function() {
      return new Int8Array2(new ArrayBuffer2(2), 1, void 0).length !== 1;
    });
  }
});

// ../../node_modules/core-js/internals/to-positive-integer.js
var require_to_positive_integer = __commonJS({
  "../../node_modules/core-js/internals/to-positive-integer.js"(exports2, module2) {
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var $RangeError = RangeError;
    module2.exports = function(it) {
      var result = toIntegerOrInfinity(it);
      if (result < 0) throw $RangeError("The argument can't be less than 0");
      return result;
    };
  }
});

// ../../node_modules/core-js/internals/to-offset.js
var require_to_offset = __commonJS({
  "../../node_modules/core-js/internals/to-offset.js"(exports2, module2) {
    var toPositiveInteger = require_to_positive_integer();
    var $RangeError = RangeError;
    module2.exports = function(it, BYTES) {
      var offset = toPositiveInteger(it);
      if (offset % BYTES) throw $RangeError("Wrong offset");
      return offset;
    };
  }
});

// ../../node_modules/core-js/internals/is-big-int-array.js
var require_is_big_int_array = __commonJS({
  "../../node_modules/core-js/internals/is-big-int-array.js"(exports2, module2) {
    var classof = require_classof();
    module2.exports = function(it) {
      var klass = classof(it);
      return klass == "BigInt64Array" || klass == "BigUint64Array";
    };
  }
});

// ../../node_modules/core-js/internals/to-big-int.js
var require_to_big_int = __commonJS({
  "../../node_modules/core-js/internals/to-big-int.js"(exports2, module2) {
    var toPrimitive = require_to_primitive();
    var $TypeError = TypeError;
    module2.exports = function(argument2) {
      var prim = toPrimitive(argument2, "number");
      if (typeof prim == "number") throw $TypeError("Can't convert number to bigint");
      return BigInt(prim);
    };
  }
});

// ../../node_modules/core-js/internals/typed-array-from.js
var require_typed_array_from = __commonJS({
  "../../node_modules/core-js/internals/typed-array-from.js"(exports2, module2) {
    var bind = require_function_bind_context();
    var call = require_function_call();
    var aConstructor = require_a_constructor();
    var toObject = require_to_object();
    var lengthOfArrayLike = require_length_of_array_like();
    var getIterator = require_get_iterator();
    var getIteratorMethod = require_get_iterator_method();
    var isArrayIteratorMethod = require_is_array_iterator_method();
    var isBigIntArray = require_is_big_int_array();
    var aTypedArrayConstructor = require_array_buffer_view_core().aTypedArrayConstructor;
    var toBigInt = require_to_big_int();
    module2.exports = function from4(source2) {
      var C = aConstructor(this);
      var O = toObject(source2);
      var argumentsLength = arguments.length;
      var mapfn = argumentsLength > 1 ? arguments[1] : void 0;
      var mapping = mapfn !== void 0;
      var iteratorMethod = getIteratorMethod(O);
      var i2, length, result, thisIsBigIntArray, value, step, iterator, next;
      if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {
        iterator = getIterator(O, iteratorMethod);
        next = iterator.next;
        O = [];
        while (!(step = call(next, iterator)).done) {
          O.push(step.value);
        }
      }
      if (mapping && argumentsLength > 2) {
        mapfn = bind(mapfn, arguments[2]);
      }
      length = lengthOfArrayLike(O);
      result = new (aTypedArrayConstructor(C))(length);
      thisIsBigIntArray = isBigIntArray(result);
      for (i2 = 0; length > i2; i2++) {
        value = mapping ? mapfn(O[i2], i2) : O[i2];
        result[i2] = thisIsBigIntArray ? toBigInt(value) : +value;
      }
      return result;
    };
  }
});

// ../../node_modules/core-js/internals/typed-array-constructor.js
var require_typed_array_constructor = __commonJS({
  "../../node_modules/core-js/internals/typed-array-constructor.js"(exports2, module2) {
    "use strict";
    var $2 = require_export();
    var global2 = require_global();
    var call = require_function_call();
    var DESCRIPTORS = require_descriptors();
    var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require_typed_array_constructors_require_wrappers();
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var ArrayBufferModule = require_array_buffer();
    var anInstance = require_an_instance();
    var createPropertyDescriptor = require_create_property_descriptor();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var isIntegralNumber = require_is_integral_number();
    var toLength = require_to_length();
    var toIndex = require_to_index();
    var toOffset = require_to_offset();
    var toPropertyKey = require_to_property_key();
    var hasOwn = require_has_own_property();
    var classof = require_classof();
    var isObject2 = require_is_object();
    var isSymbol = require_is_symbol();
    var create3 = require_object_create();
    var isPrototypeOf = require_object_is_prototype_of();
    var setPrototypeOf = require_object_set_prototype_of();
    var getOwnPropertyNames = require_object_get_own_property_names().f;
    var typedArrayFrom = require_typed_array_from();
    var forEach = require_array_iteration().forEach;
    var setSpecies = require_set_species();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var definePropertyModule = require_object_define_property();
    var getOwnPropertyDescriptorModule = require_object_get_own_property_descriptor();
    var InternalStateModule = require_internal_state();
    var inheritIfRequired = require_inherit_if_required();
    var getInternalState = InternalStateModule.get;
    var setInternalState = InternalStateModule.set;
    var enforceInternalState = InternalStateModule.enforce;
    var nativeDefineProperty = definePropertyModule.f;
    var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
    var round = Math.round;
    var RangeError2 = global2.RangeError;
    var ArrayBuffer2 = ArrayBufferModule.ArrayBuffer;
    var ArrayBufferPrototype = ArrayBuffer2.prototype;
    var DataView2 = ArrayBufferModule.DataView;
    var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;
    var TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;
    var TypedArray = ArrayBufferViewCore.TypedArray;
    var TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;
    var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;
    var isTypedArray = ArrayBufferViewCore.isTypedArray;
    var BYTES_PER_ELEMENT = "BYTES_PER_ELEMENT";
    var WRONG_LENGTH = "Wrong length";
    var fromList = function(C, list6) {
      aTypedArrayConstructor(C);
      var index4 = 0;
      var length = list6.length;
      var result = new C(length);
      while (length > index4) result[index4] = list6[index4++];
      return result;
    };
    var addGetter = function(it, key2) {
      defineBuiltInAccessor(it, key2, {
        configurable: true,
        get: function() {
          return getInternalState(this)[key2];
        }
      });
    };
    var isArrayBuffer = function(it) {
      var klass;
      return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == "ArrayBuffer" || klass == "SharedArrayBuffer";
    };
    var isTypedArrayIndex = function(target, key2) {
      return isTypedArray(target) && !isSymbol(key2) && key2 in target && isIntegralNumber(+key2) && key2 >= 0;
    };
    var wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key2) {
      key2 = toPropertyKey(key2);
      return isTypedArrayIndex(target, key2) ? createPropertyDescriptor(2, target[key2]) : nativeGetOwnPropertyDescriptor(target, key2);
    };
    var wrappedDefineProperty = function defineProperty(target, key2, descriptor) {
      key2 = toPropertyKey(key2);
      if (isTypedArrayIndex(target, key2) && isObject2(descriptor) && hasOwn(descriptor, "value") && !hasOwn(descriptor, "get") && !hasOwn(descriptor, "set") && !descriptor.configurable && (!hasOwn(descriptor, "writable") || descriptor.writable) && (!hasOwn(descriptor, "enumerable") || descriptor.enumerable)) {
        target[key2] = descriptor.value;
        return target;
      }
      return nativeDefineProperty(target, key2, descriptor);
    };
    if (DESCRIPTORS) {
      if (!NATIVE_ARRAY_BUFFER_VIEWS) {
        getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;
        definePropertyModule.f = wrappedDefineProperty;
        addGetter(TypedArrayPrototype, "buffer");
        addGetter(TypedArrayPrototype, "byteOffset");
        addGetter(TypedArrayPrototype, "byteLength");
        addGetter(TypedArrayPrototype, "length");
      }
      $2({ target: "Object", stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {
        getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,
        defineProperty: wrappedDefineProperty
      });
      module2.exports = function(TYPE2, wrapper, CLAMPED) {
        var BYTES = TYPE2.match(/\d+/)[0] / 8;
        var CONSTRUCTOR_NAME = TYPE2 + (CLAMPED ? "Clamped" : "") + "Array";
        var GETTER = "get" + TYPE2;
        var SETTER = "set" + TYPE2;
        var NativeTypedArrayConstructor = global2[CONSTRUCTOR_NAME];
        var TypedArrayConstructor = NativeTypedArrayConstructor;
        var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;
        var exported = {};
        var getter = function(that, index4) {
          var data = getInternalState(that);
          return data.view[GETTER](index4 * BYTES + data.byteOffset, true);
        };
        var setter = function(that, index4, value) {
          var data = getInternalState(that);
          if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 255 ? 255 : value & 255;
          data.view[SETTER](index4 * BYTES + data.byteOffset, value, true);
        };
        var addElement = function(that, index4) {
          nativeDefineProperty(that, index4, {
            get: function() {
              return getter(this, index4);
            },
            set: function(value) {
              return setter(this, index4, value);
            },
            enumerable: true
          });
        };
        if (!NATIVE_ARRAY_BUFFER_VIEWS) {
          TypedArrayConstructor = wrapper(function(that, data, offset, $length) {
            anInstance(that, TypedArrayConstructorPrototype);
            var index4 = 0;
            var byteOffset = 0;
            var buffer2, byteLength2, length;
            if (!isObject2(data)) {
              length = toIndex(data);
              byteLength2 = length * BYTES;
              buffer2 = new ArrayBuffer2(byteLength2);
            } else if (isArrayBuffer(data)) {
              buffer2 = data;
              byteOffset = toOffset(offset, BYTES);
              var $len = data.byteLength;
              if ($length === void 0) {
                if ($len % BYTES) throw RangeError2(WRONG_LENGTH);
                byteLength2 = $len - byteOffset;
                if (byteLength2 < 0) throw RangeError2(WRONG_LENGTH);
              } else {
                byteLength2 = toLength($length) * BYTES;
                if (byteLength2 + byteOffset > $len) throw RangeError2(WRONG_LENGTH);
              }
              length = byteLength2 / BYTES;
            } else if (isTypedArray(data)) {
              return fromList(TypedArrayConstructor, data);
            } else {
              return call(typedArrayFrom, TypedArrayConstructor, data);
            }
            setInternalState(that, {
              buffer: buffer2,
              byteOffset,
              byteLength: byteLength2,
              length,
              view: new DataView2(buffer2)
            });
            while (index4 < length) addElement(that, index4++);
          });
          if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);
          TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create3(TypedArrayPrototype);
        } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {
          TypedArrayConstructor = wrapper(function(dummy, data, typedArrayOffset, $length) {
            anInstance(dummy, TypedArrayConstructorPrototype);
            return inheritIfRequired((function() {
              if (!isObject2(data)) return new NativeTypedArrayConstructor(toIndex(data));
              if (isArrayBuffer(data)) return $length !== void 0 ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length) : typedArrayOffset !== void 0 ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES)) : new NativeTypedArrayConstructor(data);
              if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);
              return call(typedArrayFrom, TypedArrayConstructor, data);
            })(), dummy, TypedArrayConstructor);
          });
          if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);
          forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function(key2) {
            if (!(key2 in TypedArrayConstructor)) {
              createNonEnumerableProperty(TypedArrayConstructor, key2, NativeTypedArrayConstructor[key2]);
            }
          });
          TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;
        }
        if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {
          createNonEnumerableProperty(TypedArrayConstructorPrototype, "constructor", TypedArrayConstructor);
        }
        enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor;
        if (TYPED_ARRAY_TAG) {
          createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);
        }
        var FORCED = TypedArrayConstructor != NativeTypedArrayConstructor;
        exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;
        $2({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);
        if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {
          createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);
        }
        if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {
          createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);
        }
        setSpecies(CONSTRUCTOR_NAME);
      };
    } else module2.exports = function() {
    };
  }
});

// ../../node_modules/core-js/modules/es.typed-array.float32-array.js
var require_es_typed_array_float32_array = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.float32-array.js"() {
    var createTypedArrayConstructor = require_typed_array_constructor();
    createTypedArrayConstructor("Float32", function(init4) {
      return function Float32Array2(data, byteOffset, length) {
        return init4(this, data, byteOffset, length);
      };
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.float64-array.js
var require_es_typed_array_float64_array = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.float64-array.js"() {
    var createTypedArrayConstructor = require_typed_array_constructor();
    createTypedArrayConstructor("Float64", function(init4) {
      return function Float64Array2(data, byteOffset, length) {
        return init4(this, data, byteOffset, length);
      };
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.int8-array.js
var require_es_typed_array_int8_array = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.int8-array.js"() {
    var createTypedArrayConstructor = require_typed_array_constructor();
    createTypedArrayConstructor("Int8", function(init4) {
      return function Int8Array2(data, byteOffset, length) {
        return init4(this, data, byteOffset, length);
      };
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.int16-array.js
var require_es_typed_array_int16_array = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.int16-array.js"() {
    var createTypedArrayConstructor = require_typed_array_constructor();
    createTypedArrayConstructor("Int16", function(init4) {
      return function Int16Array2(data, byteOffset, length) {
        return init4(this, data, byteOffset, length);
      };
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.int32-array.js
var require_es_typed_array_int32_array = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.int32-array.js"() {
    var createTypedArrayConstructor = require_typed_array_constructor();
    createTypedArrayConstructor("Int32", function(init4) {
      return function Int32Array2(data, byteOffset, length) {
        return init4(this, data, byteOffset, length);
      };
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.uint8-array.js
var require_es_typed_array_uint8_array = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.uint8-array.js"() {
    var createTypedArrayConstructor = require_typed_array_constructor();
    createTypedArrayConstructor("Uint8", function(init4) {
      return function Uint8Array2(data, byteOffset, length) {
        return init4(this, data, byteOffset, length);
      };
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js
var require_es_typed_array_uint8_clamped_array = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js"() {
    var createTypedArrayConstructor = require_typed_array_constructor();
    createTypedArrayConstructor("Uint8", function(init4) {
      return function Uint8ClampedArray2(data, byteOffset, length) {
        return init4(this, data, byteOffset, length);
      };
    }, true);
  }
});

// ../../node_modules/core-js/modules/es.typed-array.uint16-array.js
var require_es_typed_array_uint16_array = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.uint16-array.js"() {
    var createTypedArrayConstructor = require_typed_array_constructor();
    createTypedArrayConstructor("Uint16", function(init4) {
      return function Uint16Array2(data, byteOffset, length) {
        return init4(this, data, byteOffset, length);
      };
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.uint32-array.js
var require_es_typed_array_uint32_array = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.uint32-array.js"() {
    var createTypedArrayConstructor = require_typed_array_constructor();
    createTypedArrayConstructor("Uint32", function(init4) {
      return function Uint32Array2(data, byteOffset, length) {
        return init4(this, data, byteOffset, length);
      };
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.at.js
var require_es_typed_array_at = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.at.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var lengthOfArrayLike = require_length_of_array_like();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("at", function at(index4) {
      var O = aTypedArray(this);
      var len = lengthOfArrayLike(O);
      var relativeIndex = toIntegerOrInfinity(index4);
      var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
      return k < 0 || k >= len ? void 0 : O[k];
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.copy-within.js
var require_es_typed_array_copy_within = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.copy-within.js"() {
    "use strict";
    var uncurryThis = require_function_uncurry_this();
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var $ArrayCopyWithin = require_array_copy_within();
    var u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("copyWithin", function copyWithin(target, start) {
      return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : void 0);
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.every.js
var require_es_typed_array_every = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.every.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var $every = require_array_iteration().every;
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("every", function every(callbackfn) {
      return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : void 0);
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.fill.js
var require_es_typed_array_fill = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.fill.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var $fill = require_array_fill();
    var toBigInt = require_to_big_int();
    var classof = require_classof();
    var call = require_function_call();
    var uncurryThis = require_function_uncurry_this();
    var fails = require_fails();
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    var slice2 = uncurryThis("".slice);
    var CONVERSION_BUG = fails(function() {
      var count2 = 0;
      new Int8Array(2).fill({ valueOf: function() {
        return count2++;
      } });
      return count2 !== 1;
    });
    exportTypedArrayMethod("fill", function fill3(value) {
      var length = arguments.length;
      aTypedArray(this);
      var actualValue = slice2(classof(this), 0, 3) === "Big" ? toBigInt(value) : +value;
      return call($fill, this, actualValue, length > 1 ? arguments[1] : void 0, length > 2 ? arguments[2] : void 0);
    }, CONVERSION_BUG);
  }
});

// ../../node_modules/core-js/internals/typed-array-species-constructor.js
var require_typed_array_species_constructor = __commonJS({
  "../../node_modules/core-js/internals/typed-array-species-constructor.js"(exports2, module2) {
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var speciesConstructor = require_species_constructor();
    var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;
    var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
    module2.exports = function(originalArray) {
      return aTypedArrayConstructor(speciesConstructor(originalArray, getTypedArrayConstructor(originalArray)));
    };
  }
});

// ../../node_modules/core-js/internals/typed-array-from-species-and-list.js
var require_typed_array_from_species_and_list = __commonJS({
  "../../node_modules/core-js/internals/typed-array-from-species-and-list.js"(exports2, module2) {
    var arrayFromConstructorAndList = require_array_from_constructor_and_list();
    var typedArraySpeciesConstructor = require_typed_array_species_constructor();
    module2.exports = function(instance, list6) {
      return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list6);
    };
  }
});

// ../../node_modules/core-js/modules/es.typed-array.filter.js
var require_es_typed_array_filter = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.filter.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var $filter = require_array_iteration().filter;
    var fromSpeciesAndList = require_typed_array_from_species_and_list();
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("filter", function filter6(callbackfn) {
      var list6 = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : void 0);
      return fromSpeciesAndList(this, list6);
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.find.js
var require_es_typed_array_find = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.find.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var $find = require_array_iteration().find;
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("find", function find2(predicate) {
      return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : void 0);
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.find-index.js
var require_es_typed_array_find_index = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.find-index.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var $findIndex = require_array_iteration().findIndex;
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("findIndex", function findIndex(predicate) {
      return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : void 0);
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.find-last.js
var require_es_typed_array_find_last = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.find-last.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var $findLast = require_array_iteration_from_last().findLast;
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("findLast", function findLast(predicate) {
      return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : void 0);
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.find-last-index.js
var require_es_typed_array_find_last_index = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.find-last-index.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var $findLastIndex = require_array_iteration_from_last().findLastIndex;
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("findLastIndex", function findLastIndex(predicate) {
      return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : void 0);
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.for-each.js
var require_es_typed_array_for_each = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.for-each.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var $forEach = require_array_iteration().forEach;
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("forEach", function forEach(callbackfn) {
      $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : void 0);
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.from.js
var require_es_typed_array_from = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.from.js"() {
    "use strict";
    var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require_typed_array_constructors_require_wrappers();
    var exportTypedArrayStaticMethod = require_array_buffer_view_core().exportTypedArrayStaticMethod;
    var typedArrayFrom = require_typed_array_from();
    exportTypedArrayStaticMethod("from", typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);
  }
});

// ../../node_modules/core-js/modules/es.typed-array.includes.js
var require_es_typed_array_includes = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.includes.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var $includes = require_array_includes().includes;
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("includes", function includes2(searchElement) {
      return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : void 0);
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.index-of.js
var require_es_typed_array_index_of = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.index-of.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var $indexOf = require_array_includes().indexOf;
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("indexOf", function indexOf2(searchElement) {
      return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : void 0);
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.iterator.js
var require_es_typed_array_iterator = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.iterator.js"() {
    "use strict";
    var global2 = require_global();
    var fails = require_fails();
    var uncurryThis = require_function_uncurry_this();
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var ArrayIterators = require_es_array_iterator();
    var wellKnownSymbol = require_well_known_symbol();
    var ITERATOR = wellKnownSymbol("iterator");
    var Uint8Array2 = global2.Uint8Array;
    var arrayValues = uncurryThis(ArrayIterators.values);
    var arrayKeys = uncurryThis(ArrayIterators.keys);
    var arrayEntries = uncurryThis(ArrayIterators.entries);
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    var TypedArrayPrototype = Uint8Array2 && Uint8Array2.prototype;
    var GENERIC = !fails(function() {
      TypedArrayPrototype[ITERATOR].call([1]);
    });
    var ITERATOR_IS_VALUES = !!TypedArrayPrototype && TypedArrayPrototype.values && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values && TypedArrayPrototype.values.name === "values";
    var typedArrayValues = function values() {
      return arrayValues(aTypedArray(this));
    };
    exportTypedArrayMethod("entries", function entries2() {
      return arrayEntries(aTypedArray(this));
    }, GENERIC);
    exportTypedArrayMethod("keys", function keys2() {
      return arrayKeys(aTypedArray(this));
    }, GENERIC);
    exportTypedArrayMethod("values", typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: "values" });
    exportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: "values" });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.join.js
var require_es_typed_array_join = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.join.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var uncurryThis = require_function_uncurry_this();
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    var $join = uncurryThis([].join);
    exportTypedArrayMethod("join", function join19(separator) {
      return $join(aTypedArray(this), separator);
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.last-index-of.js
var require_es_typed_array_last_index_of = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.last-index-of.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var apply = require_function_apply();
    var $lastIndexOf = require_array_last_index_of();
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("lastIndexOf", function lastIndexOf2(searchElement) {
      var length = arguments.length;
      return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.map.js
var require_es_typed_array_map = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.map.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var $map = require_array_iteration().map;
    var typedArraySpeciesConstructor = require_typed_array_species_constructor();
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("map", function map13(mapfn) {
      return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : void 0, function(O, length) {
        return new (typedArraySpeciesConstructor(O))(length);
      });
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.of.js
var require_es_typed_array_of = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.of.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require_typed_array_constructors_require_wrappers();
    var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;
    var exportTypedArrayStaticMethod = ArrayBufferViewCore.exportTypedArrayStaticMethod;
    exportTypedArrayStaticMethod("of", function of3() {
      var index4 = 0;
      var length = arguments.length;
      var result = new (aTypedArrayConstructor(this))(length);
      while (length > index4) result[index4] = arguments[index4++];
      return result;
    }, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);
  }
});

// ../../node_modules/core-js/modules/es.typed-array.reduce.js
var require_es_typed_array_reduce = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.reduce.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var $reduce = require_array_reduce().left;
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("reduce", function reduce2(callbackfn) {
      var length = arguments.length;
      return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : void 0);
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.reduce-right.js
var require_es_typed_array_reduce_right = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.reduce-right.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var $reduceRight = require_array_reduce().right;
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("reduceRight", function reduceRight(callbackfn) {
      var length = arguments.length;
      return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : void 0);
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.reverse.js
var require_es_typed_array_reverse = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.reverse.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    var floor = Math.floor;
    exportTypedArrayMethod("reverse", function reverse() {
      var that = this;
      var length = aTypedArray(that).length;
      var middle = floor(length / 2);
      var index4 = 0;
      var value;
      while (index4 < middle) {
        value = that[index4];
        that[index4++] = that[--length];
        that[length] = value;
      }
      return that;
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.set.js
var require_es_typed_array_set = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.set.js"() {
    "use strict";
    var global2 = require_global();
    var call = require_function_call();
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var lengthOfArrayLike = require_length_of_array_like();
    var toOffset = require_to_offset();
    var toIndexedObject = require_to_object();
    var fails = require_fails();
    var RangeError2 = global2.RangeError;
    var Int8Array2 = global2.Int8Array;
    var Int8ArrayPrototype = Int8Array2 && Int8Array2.prototype;
    var $set = Int8ArrayPrototype && Int8ArrayPrototype.set;
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    var WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function() {
      var array = new Uint8ClampedArray(2);
      call($set, array, { length: 1, 0: 3 }, 1);
      return array[1] !== 3;
    });
    var TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function() {
      var array = new Int8Array2(2);
      array.set(1);
      array.set("2", 1);
      return array[0] !== 0 || array[1] !== 2;
    });
    exportTypedArrayMethod("set", function set3(arrayLike) {
      aTypedArray(this);
      var offset = toOffset(arguments.length > 1 ? arguments[1] : void 0, 1);
      var src = toIndexedObject(arrayLike);
      if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);
      var length = this.length;
      var len = lengthOfArrayLike(src);
      var index4 = 0;
      if (len + offset > length) throw RangeError2("Wrong length");
      while (index4 < len) this[offset + index4] = src[index4++];
    }, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);
  }
});

// ../../node_modules/core-js/modules/es.typed-array.slice.js
var require_es_typed_array_slice = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.slice.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var typedArraySpeciesConstructor = require_typed_array_species_constructor();
    var fails = require_fails();
    var arraySlice = require_array_slice();
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    var FORCED = fails(function() {
      new Int8Array(1).slice();
    });
    exportTypedArrayMethod("slice", function slice2(start, end) {
      var list6 = arraySlice(aTypedArray(this), start, end);
      var C = typedArraySpeciesConstructor(this);
      var index4 = 0;
      var length = list6.length;
      var result = new C(length);
      while (length > index4) result[index4] = list6[index4++];
      return result;
    }, FORCED);
  }
});

// ../../node_modules/core-js/modules/es.typed-array.some.js
var require_es_typed_array_some = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.some.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var $some = require_array_iteration().some;
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("some", function some(callbackfn) {
      return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : void 0);
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.sort.js
var require_es_typed_array_sort = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.sort.js"() {
    "use strict";
    var global2 = require_global();
    var uncurryThis = require_function_uncurry_this_clause();
    var fails = require_fails();
    var aCallable = require_a_callable();
    var internalSort = require_array_sort();
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var FF = require_engine_ff_version();
    var IE_OR_EDGE = require_engine_is_ie_or_edge();
    var V8 = require_engine_v8_version();
    var WEBKIT = require_engine_webkit_version();
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    var Uint16Array2 = global2.Uint16Array;
    var nativeSort = Uint16Array2 && uncurryThis(Uint16Array2.prototype.sort);
    var ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function() {
      nativeSort(new Uint16Array2(2), null);
    }) && fails(function() {
      nativeSort(new Uint16Array2(2), {});
    }));
    var STABLE_SORT = !!nativeSort && !fails(function() {
      if (V8) return V8 < 74;
      if (FF) return FF < 67;
      if (IE_OR_EDGE) return true;
      if (WEBKIT) return WEBKIT < 602;
      var array = new Uint16Array2(516);
      var expected = Array(516);
      var index4, mod;
      for (index4 = 0; index4 < 516; index4++) {
        mod = index4 % 4;
        array[index4] = 515 - index4;
        expected[index4] = index4 - 2 * mod + 3;
      }
      nativeSort(array, function(a2, b) {
        return (a2 / 4 | 0) - (b / 4 | 0);
      });
      for (index4 = 0; index4 < 516; index4++) {
        if (array[index4] !== expected[index4]) return true;
      }
    });
    var getSortCompare = function(comparefn) {
      return function(x2, y) {
        if (comparefn !== void 0) return +comparefn(x2, y) || 0;
        if (y !== y) return -1;
        if (x2 !== x2) return 1;
        if (x2 === 0 && y === 0) return 1 / x2 > 0 && 1 / y < 0 ? 1 : -1;
        return x2 > y;
      };
    };
    exportTypedArrayMethod("sort", function sort(comparefn) {
      if (comparefn !== void 0) aCallable(comparefn);
      if (STABLE_SORT) return nativeSort(this, comparefn);
      return internalSort(aTypedArray(this), getSortCompare(comparefn));
    }, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);
  }
});

// ../../node_modules/core-js/modules/es.typed-array.subarray.js
var require_es_typed_array_subarray = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.subarray.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var toLength = require_to_length();
    var toAbsoluteIndex = require_to_absolute_index();
    var typedArraySpeciesConstructor = require_typed_array_species_constructor();
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    exportTypedArrayMethod("subarray", function subarray(begin, end) {
      var O = aTypedArray(this);
      var length = O.length;
      var beginIndex = toAbsoluteIndex(begin, length);
      var C = typedArraySpeciesConstructor(O);
      return new C(
        O.buffer,
        O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,
        toLength((end === void 0 ? length : toAbsoluteIndex(end, length)) - beginIndex)
      );
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.to-locale-string.js
var require_es_typed_array_to_locale_string = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.to-locale-string.js"() {
    "use strict";
    var global2 = require_global();
    var apply = require_function_apply();
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var fails = require_fails();
    var arraySlice = require_array_slice();
    var Int8Array2 = global2.Int8Array;
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    var $toLocaleString = [].toLocaleString;
    var TO_LOCALE_STRING_BUG = !!Int8Array2 && fails(function() {
      $toLocaleString.call(new Int8Array2(1));
    });
    var FORCED = fails(function() {
      return [1, 2].toLocaleString() != new Int8Array2([1, 2]).toLocaleString();
    }) || !fails(function() {
      Int8Array2.prototype.toLocaleString.call([1, 2]);
    });
    exportTypedArrayMethod("toLocaleString", function toLocaleString() {
      return apply(
        $toLocaleString,
        TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),
        arraySlice(arguments)
      );
    }, FORCED);
  }
});

// ../../node_modules/core-js/modules/es.typed-array.to-reversed.js
var require_es_typed_array_to_reversed = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.to-reversed.js"() {
    "use strict";
    var arrayToReversed = require_array_to_reversed();
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
    exportTypedArrayMethod("toReversed", function toReversed() {
      return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.to-sorted.js
var require_es_typed_array_to_sorted = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.to-sorted.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var uncurryThis = require_function_uncurry_this();
    var aCallable = require_a_callable();
    var arrayFromConstructorAndList = require_array_from_constructor_and_list();
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    var sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);
    exportTypedArrayMethod("toSorted", function toSorted(compareFn) {
      if (compareFn !== void 0) aCallable(compareFn);
      var O = aTypedArray(this);
      var A2 = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);
      return sort(A2, compareFn);
    });
  }
});

// ../../node_modules/core-js/modules/es.typed-array.to-string.js
var require_es_typed_array_to_string = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.to-string.js"() {
    "use strict";
    var exportTypedArrayMethod = require_array_buffer_view_core().exportTypedArrayMethod;
    var fails = require_fails();
    var global2 = require_global();
    var uncurryThis = require_function_uncurry_this();
    var Uint8Array2 = global2.Uint8Array;
    var Uint8ArrayPrototype = Uint8Array2 && Uint8Array2.prototype || {};
    var arrayToString = [].toString;
    var join19 = uncurryThis([].join);
    if (fails(function() {
      arrayToString.call({});
    })) {
      arrayToString = function toString6() {
        return join19(this);
      };
    }
    var IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;
    exportTypedArrayMethod("toString", arrayToString, IS_NOT_ARRAY_METHOD);
  }
});

// ../../node_modules/core-js/modules/es.typed-array.with.js
var require_es_typed_array_with = __commonJS({
  "../../node_modules/core-js/modules/es.typed-array.with.js"() {
    "use strict";
    var arrayWith = require_array_with();
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var isBigIntArray = require_is_big_int_array();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var toBigInt = require_to_big_int();
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    var PROPER_ORDER = !!(function() {
      try {
        new Int8Array(1)["with"](2, { valueOf: function() {
          throw 8;
        } });
      } catch (error) {
        return error === 8;
      }
    })();
    exportTypedArrayMethod("with", { "with": function(index4, value) {
      var O = aTypedArray(this);
      var relativeIndex = toIntegerOrInfinity(index4);
      var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;
      return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);
    } }["with"], !PROPER_ORDER);
  }
});

// ../../node_modules/core-js/modules/es.unescape.js
var require_es_unescape = __commonJS({
  "../../node_modules/core-js/modules/es.unescape.js"() {
    "use strict";
    var $2 = require_export();
    var uncurryThis = require_function_uncurry_this();
    var toString6 = require_to_string();
    var fromCharCode = String.fromCharCode;
    var charAt = uncurryThis("".charAt);
    var exec3 = uncurryThis(/./.exec);
    var stringSlice = uncurryThis("".slice);
    var hex2 = /^[\da-f]{2}$/i;
    var hex4 = /^[\da-f]{4}$/i;
    $2({ global: true }, {
      unescape: function unescape3(string2) {
        var str2 = toString6(string2);
        var result = "";
        var length = str2.length;
        var index4 = 0;
        var chr, part;
        while (index4 < length) {
          chr = charAt(str2, index4++);
          if (chr === "%") {
            if (charAt(str2, index4) === "u") {
              part = stringSlice(str2, index4 + 1, index4 + 5);
              if (exec3(hex4, part)) {
                result += fromCharCode(parseInt(part, 16));
                index4 += 5;
                continue;
              }
            } else {
              part = stringSlice(str2, index4, index4 + 2);
              if (exec3(hex2, part)) {
                result += fromCharCode(parseInt(part, 16));
                index4 += 2;
                continue;
              }
            }
          }
          result += chr;
        }
        return result;
      }
    });
  }
});

// ../../node_modules/core-js/internals/collection-weak.js
var require_collection_weak = __commonJS({
  "../../node_modules/core-js/internals/collection-weak.js"(exports2, module2) {
    "use strict";
    var uncurryThis = require_function_uncurry_this();
    var defineBuiltIns = require_define_built_ins();
    var getWeakData = require_internal_metadata().getWeakData;
    var anInstance = require_an_instance();
    var anObject = require_an_object();
    var isNullOrUndefined = require_is_null_or_undefined();
    var isObject2 = require_is_object();
    var iterate2 = require_iterate();
    var ArrayIterationModule = require_array_iteration();
    var hasOwn = require_has_own_property();
    var InternalStateModule = require_internal_state();
    var setInternalState = InternalStateModule.set;
    var internalStateGetterFor = InternalStateModule.getterFor;
    var find2 = ArrayIterationModule.find;
    var findIndex = ArrayIterationModule.findIndex;
    var splice = uncurryThis([].splice);
    var id = 0;
    var uncaughtFrozenStore = function(state) {
      return state.frozen || (state.frozen = new UncaughtFrozenStore());
    };
    var UncaughtFrozenStore = function() {
      this.entries = [];
    };
    var findUncaughtFrozen = function(store, key2) {
      return find2(store.entries, function(it) {
        return it[0] === key2;
      });
    };
    UncaughtFrozenStore.prototype = {
      get: function(key2) {
        var entry = findUncaughtFrozen(this, key2);
        if (entry) return entry[1];
      },
      has: function(key2) {
        return !!findUncaughtFrozen(this, key2);
      },
      set: function(key2, value) {
        var entry = findUncaughtFrozen(this, key2);
        if (entry) entry[1] = value;
        else this.entries.push([key2, value]);
      },
      "delete": function(key2) {
        var index4 = findIndex(this.entries, function(it) {
          return it[0] === key2;
        });
        if (~index4) splice(this.entries, index4, 1);
        return !!~index4;
      }
    };
    module2.exports = {
      getConstructor: function(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {
        var Constructor = wrapper(function(that, iterable) {
          anInstance(that, Prototype);
          setInternalState(that, {
            type: CONSTRUCTOR_NAME,
            id: id++,
            frozen: void 0
          });
          if (!isNullOrUndefined(iterable)) iterate2(iterable, that[ADDER], { that, AS_ENTRIES: IS_MAP });
        });
        var Prototype = Constructor.prototype;
        var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
        var define2 = function(that, key2, value) {
          var state = getInternalState(that);
          var data = getWeakData(anObject(key2), true);
          if (data === true) uncaughtFrozenStore(state).set(key2, value);
          else data[state.id] = value;
          return that;
        };
        defineBuiltIns(Prototype, {
          // `{ WeakMap, WeakSet }.prototype.delete(key)` methods
          // https://tc39.es/ecma262/#sec-weakmap.prototype.delete
          // https://tc39.es/ecma262/#sec-weakset.prototype.delete
          "delete": function(key2) {
            var state = getInternalState(this);
            if (!isObject2(key2)) return false;
            var data = getWeakData(key2);
            if (data === true) return uncaughtFrozenStore(state)["delete"](key2);
            return data && hasOwn(data, state.id) && delete data[state.id];
          },
          // `{ WeakMap, WeakSet }.prototype.has(key)` methods
          // https://tc39.es/ecma262/#sec-weakmap.prototype.has
          // https://tc39.es/ecma262/#sec-weakset.prototype.has
          has: function has3(key2) {
            var state = getInternalState(this);
            if (!isObject2(key2)) return false;
            var data = getWeakData(key2);
            if (data === true) return uncaughtFrozenStore(state).has(key2);
            return data && hasOwn(data, state.id);
          }
        });
        defineBuiltIns(Prototype, IS_MAP ? {
          // `WeakMap.prototype.get(key)` method
          // https://tc39.es/ecma262/#sec-weakmap.prototype.get
          get: function get(key2) {
            var state = getInternalState(this);
            if (isObject2(key2)) {
              var data = getWeakData(key2);
              if (data === true) return uncaughtFrozenStore(state).get(key2);
              return data ? data[state.id] : void 0;
            }
          },
          // `WeakMap.prototype.set(key, value)` method
          // https://tc39.es/ecma262/#sec-weakmap.prototype.set
          set: function set3(key2, value) {
            return define2(this, key2, value);
          }
        } : {
          // `WeakSet.prototype.add(value)` method
          // https://tc39.es/ecma262/#sec-weakset.prototype.add
          add: function add2(value) {
            return define2(this, value, true);
          }
        });
        return Constructor;
      }
    };
  }
});

// ../../node_modules/core-js/modules/es.weak-map.constructor.js
var require_es_weak_map_constructor = __commonJS({
  "../../node_modules/core-js/modules/es.weak-map.constructor.js"() {
    "use strict";
    var FREEZING = require_freezing();
    var global2 = require_global();
    var uncurryThis = require_function_uncurry_this();
    var defineBuiltIns = require_define_built_ins();
    var InternalMetadataModule = require_internal_metadata();
    var collection = require_collection();
    var collectionWeak = require_collection_weak();
    var isObject2 = require_is_object();
    var enforceInternalState = require_internal_state().enforce;
    var fails = require_fails();
    var NATIVE_WEAK_MAP = require_weak_map_basic_detection();
    var $Object = Object;
    var isArray2 = Array.isArray;
    var isExtensible = $Object.isExtensible;
    var isFrozen2 = $Object.isFrozen;
    var isSealed = $Object.isSealed;
    var freeze2 = $Object.freeze;
    var seal = $Object.seal;
    var FROZEN = {};
    var SEALED = {};
    var IS_IE11 = !global2.ActiveXObject && "ActiveXObject" in global2;
    var InternalWeakMap;
    var wrapper = function(init4) {
      return function WeakMap2() {
        return init4(this, arguments.length ? arguments[0] : void 0);
      };
    };
    var $WeakMap = collection("WeakMap", wrapper, collectionWeak);
    var WeakMapPrototype = $WeakMap.prototype;
    var nativeSet = uncurryThis(WeakMapPrototype.set);
    var hasMSEdgeFreezingBug = function() {
      return FREEZING && fails(function() {
        var frozenArray = freeze2([]);
        nativeSet(new $WeakMap(), frozenArray, 1);
        return !isFrozen2(frozenArray);
      });
    };
    if (NATIVE_WEAK_MAP) {
      if (IS_IE11) {
        InternalWeakMap = collectionWeak.getConstructor(wrapper, "WeakMap", true);
        InternalMetadataModule.enable();
        nativeDelete = uncurryThis(WeakMapPrototype["delete"]);
        nativeHas = uncurryThis(WeakMapPrototype.has);
        nativeGet = uncurryThis(WeakMapPrototype.get);
        defineBuiltIns(WeakMapPrototype, {
          "delete": function(key2) {
            if (isObject2(key2) && !isExtensible(key2)) {
              var state = enforceInternalState(this);
              if (!state.frozen) state.frozen = new InternalWeakMap();
              return nativeDelete(this, key2) || state.frozen["delete"](key2);
            }
            return nativeDelete(this, key2);
          },
          has: function has3(key2) {
            if (isObject2(key2) && !isExtensible(key2)) {
              var state = enforceInternalState(this);
              if (!state.frozen) state.frozen = new InternalWeakMap();
              return nativeHas(this, key2) || state.frozen.has(key2);
            }
            return nativeHas(this, key2);
          },
          get: function get(key2) {
            if (isObject2(key2) && !isExtensible(key2)) {
              var state = enforceInternalState(this);
              if (!state.frozen) state.frozen = new InternalWeakMap();
              return nativeHas(this, key2) ? nativeGet(this, key2) : state.frozen.get(key2);
            }
            return nativeGet(this, key2);
          },
          set: function set3(key2, value) {
            if (isObject2(key2) && !isExtensible(key2)) {
              var state = enforceInternalState(this);
              if (!state.frozen) state.frozen = new InternalWeakMap();
              nativeHas(this, key2) ? nativeSet(this, key2, value) : state.frozen.set(key2, value);
            } else nativeSet(this, key2, value);
            return this;
          }
        });
      } else if (hasMSEdgeFreezingBug()) {
        defineBuiltIns(WeakMapPrototype, {
          set: function set3(key2, value) {
            var arrayIntegrityLevel;
            if (isArray2(key2)) {
              if (isFrozen2(key2)) arrayIntegrityLevel = FROZEN;
              else if (isSealed(key2)) arrayIntegrityLevel = SEALED;
            }
            nativeSet(this, key2, value);
            if (arrayIntegrityLevel == FROZEN) freeze2(key2);
            if (arrayIntegrityLevel == SEALED) seal(key2);
            return this;
          }
        });
      }
    }
    var nativeDelete;
    var nativeHas;
    var nativeGet;
  }
});

// ../../node_modules/core-js/modules/es.weak-map.js
var require_es_weak_map = __commonJS({
  "../../node_modules/core-js/modules/es.weak-map.js"() {
    require_es_weak_map_constructor();
  }
});

// ../../node_modules/core-js/modules/es.weak-set.constructor.js
var require_es_weak_set_constructor = __commonJS({
  "../../node_modules/core-js/modules/es.weak-set.constructor.js"() {
    "use strict";
    var collection = require_collection();
    var collectionWeak = require_collection_weak();
    collection("WeakSet", function(init4) {
      return function WeakSet2() {
        return init4(this, arguments.length ? arguments[0] : void 0);
      };
    }, collectionWeak);
  }
});

// ../../node_modules/core-js/modules/es.weak-set.js
var require_es_weak_set = __commonJS({
  "../../node_modules/core-js/modules/es.weak-set.js"() {
    require_es_weak_set_constructor();
  }
});

// ../../node_modules/core-js/internals/base64-map.js
var require_base64_map = __commonJS({
  "../../node_modules/core-js/internals/base64-map.js"(exports2, module2) {
    var itoc = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var ctoi = {};
    for (index4 = 0; index4 < 66; index4++) ctoi[itoc.charAt(index4)] = index4;
    var index4;
    module2.exports = {
      itoc,
      ctoi
    };
  }
});

// ../../node_modules/core-js/modules/web.atob.js
var require_web_atob = __commonJS({
  "../../node_modules/core-js/modules/web.atob.js"() {
    var $2 = require_export();
    var global2 = require_global();
    var getBuiltIn = require_get_built_in();
    var uncurryThis = require_function_uncurry_this();
    var call = require_function_call();
    var fails = require_fails();
    var toString6 = require_to_string();
    var hasOwn = require_has_own_property();
    var validateArgumentsLength = require_validate_arguments_length();
    var ctoi = require_base64_map().ctoi;
    var disallowed = /[^\d+/a-z]/i;
    var whitespaces = /[\t\n\f\r ]+/g;
    var finalEq = /[=]{1,2}$/;
    var $atob = getBuiltIn("atob");
    var fromCharCode = String.fromCharCode;
    var charAt = uncurryThis("".charAt);
    var replace = uncurryThis("".replace);
    var exec3 = uncurryThis(disallowed.exec);
    var NO_SPACES_IGNORE = fails(function() {
      return $atob(" ") !== "";
    });
    var NO_ENCODING_CHECK = !fails(function() {
      $atob("a");
    });
    var NO_ARG_RECEIVING_CHECK = !NO_SPACES_IGNORE && !NO_ENCODING_CHECK && !fails(function() {
      $atob();
    });
    var WRONG_ARITY = !NO_SPACES_IGNORE && !NO_ENCODING_CHECK && $atob.length !== 1;
    $2({ global: true, bind: true, enumerable: true, forced: NO_SPACES_IGNORE || NO_ENCODING_CHECK || NO_ARG_RECEIVING_CHECK || WRONG_ARITY }, {
      atob: function atob2(data) {
        validateArgumentsLength(arguments.length, 1);
        if (NO_ARG_RECEIVING_CHECK || WRONG_ARITY) return call($atob, global2, data);
        var string2 = replace(toString6(data), whitespaces, "");
        var output2 = "";
        var position6 = 0;
        var bc = 0;
        var chr, bs;
        if (string2.length % 4 == 0) {
          string2 = replace(string2, finalEq, "");
        }
        if (string2.length % 4 == 1 || exec3(disallowed, string2)) {
          throw new (getBuiltIn("DOMException"))("The string is not correctly encoded", "InvalidCharacterError");
        }
        while (chr = charAt(string2, position6++)) {
          if (hasOwn(ctoi, chr)) {
            bs = bc % 4 ? bs * 64 + ctoi[chr] : ctoi[chr];
            if (bc++ % 4) output2 += fromCharCode(255 & bs >> (-2 * bc & 6));
          }
        }
        return output2;
      }
    });
  }
});

// ../../node_modules/core-js/modules/web.btoa.js
var require_web_btoa = __commonJS({
  "../../node_modules/core-js/modules/web.btoa.js"() {
    var $2 = require_export();
    var global2 = require_global();
    var getBuiltIn = require_get_built_in();
    var uncurryThis = require_function_uncurry_this();
    var call = require_function_call();
    var fails = require_fails();
    var toString6 = require_to_string();
    var validateArgumentsLength = require_validate_arguments_length();
    var itoc = require_base64_map().itoc;
    var $btoa = getBuiltIn("btoa");
    var charAt = uncurryThis("".charAt);
    var charCodeAt = uncurryThis("".charCodeAt);
    var NO_ARG_RECEIVING_CHECK = !!$btoa && !fails(function() {
      $btoa();
    });
    var WRONG_ARG_CONVERSION = !!$btoa && fails(function() {
      return $btoa(null) !== "bnVsbA==";
    });
    var WRONG_ARITY = !!$btoa && $btoa.length !== 1;
    $2({ global: true, bind: true, enumerable: true, forced: NO_ARG_RECEIVING_CHECK || WRONG_ARG_CONVERSION || WRONG_ARITY }, {
      btoa: function btoa(data) {
        validateArgumentsLength(arguments.length, 1);
        if (NO_ARG_RECEIVING_CHECK || WRONG_ARG_CONVERSION || WRONG_ARITY) return call($btoa, global2, toString6(data));
        var string2 = toString6(data);
        var output2 = "";
        var position6 = 0;
        var map13 = itoc;
        var block5, charCode;
        while (charAt(string2, position6) || (map13 = "=", position6 % 1)) {
          charCode = charCodeAt(string2, position6 += 3 / 4);
          if (charCode > 255) {
            throw new (getBuiltIn("DOMException"))("The string contains characters outside of the Latin1 range", "InvalidCharacterError");
          }
          block5 = block5 << 8 | charCode;
          output2 += charAt(map13, 63 & block5 >> 8 - position6 % 1 * 8);
        }
        return output2;
      }
    });
  }
});

// ../../node_modules/core-js/internals/dom-iterables.js
var require_dom_iterables = __commonJS({
  "../../node_modules/core-js/internals/dom-iterables.js"(exports2, module2) {
    module2.exports = {
      CSSRuleList: 0,
      CSSStyleDeclaration: 0,
      CSSValueList: 0,
      ClientRectList: 0,
      DOMRectList: 0,
      DOMStringList: 0,
      DOMTokenList: 1,
      DataTransferItemList: 0,
      FileList: 0,
      HTMLAllCollection: 0,
      HTMLCollection: 0,
      HTMLFormElement: 0,
      HTMLSelectElement: 0,
      MediaList: 0,
      MimeTypeArray: 0,
      NamedNodeMap: 0,
      NodeList: 1,
      PaintRequestList: 0,
      Plugin: 0,
      PluginArray: 0,
      SVGLengthList: 0,
      SVGNumberList: 0,
      SVGPathSegList: 0,
      SVGPointList: 0,
      SVGStringList: 0,
      SVGTransformList: 0,
      SourceBufferList: 0,
      StyleSheetList: 0,
      TextTrackCueList: 0,
      TextTrackList: 0,
      TouchList: 0
    };
  }
});

// ../../node_modules/core-js/internals/dom-token-list-prototype.js
var require_dom_token_list_prototype = __commonJS({
  "../../node_modules/core-js/internals/dom-token-list-prototype.js"(exports2, module2) {
    var documentCreateElement = require_document_create_element();
    var classList = documentCreateElement("span").classList;
    var DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;
    module2.exports = DOMTokenListPrototype === Object.prototype ? void 0 : DOMTokenListPrototype;
  }
});

// ../../node_modules/core-js/modules/web.dom-collections.for-each.js
var require_web_dom_collections_for_each = __commonJS({
  "../../node_modules/core-js/modules/web.dom-collections.for-each.js"() {
    var global2 = require_global();
    var DOMIterables = require_dom_iterables();
    var DOMTokenListPrototype = require_dom_token_list_prototype();
    var forEach = require_array_for_each();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var handlePrototype = function(CollectionPrototype) {
      if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {
        createNonEnumerableProperty(CollectionPrototype, "forEach", forEach);
      } catch (error) {
        CollectionPrototype.forEach = forEach;
      }
    };
    for (COLLECTION_NAME in DOMIterables) {
      if (DOMIterables[COLLECTION_NAME]) {
        handlePrototype(global2[COLLECTION_NAME] && global2[COLLECTION_NAME].prototype);
      }
    }
    var COLLECTION_NAME;
    handlePrototype(DOMTokenListPrototype);
  }
});

// ../../node_modules/core-js/modules/web.dom-collections.iterator.js
var require_web_dom_collections_iterator = __commonJS({
  "../../node_modules/core-js/modules/web.dom-collections.iterator.js"() {
    var global2 = require_global();
    var DOMIterables = require_dom_iterables();
    var DOMTokenListPrototype = require_dom_token_list_prototype();
    var ArrayIteratorMethods = require_es_array_iterator();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var wellKnownSymbol = require_well_known_symbol();
    var ITERATOR = wellKnownSymbol("iterator");
    var TO_STRING_TAG = wellKnownSymbol("toStringTag");
    var ArrayValues = ArrayIteratorMethods.values;
    var handlePrototype = function(CollectionPrototype, COLLECTION_NAME2) {
      if (CollectionPrototype) {
        if (CollectionPrototype[ITERATOR] !== ArrayValues) try {
          createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);
        } catch (error) {
          CollectionPrototype[ITERATOR] = ArrayValues;
        }
        if (!CollectionPrototype[TO_STRING_TAG]) {
          createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME2);
        }
        if (DOMIterables[COLLECTION_NAME2]) for (var METHOD_NAME in ArrayIteratorMethods) {
          if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {
            createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);
          } catch (error) {
            CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];
          }
        }
      }
    };
    for (COLLECTION_NAME in DOMIterables) {
      handlePrototype(global2[COLLECTION_NAME] && global2[COLLECTION_NAME].prototype, COLLECTION_NAME);
    }
    var COLLECTION_NAME;
    handlePrototype(DOMTokenListPrototype, "DOMTokenList");
  }
});

// ../../node_modules/core-js/internals/try-node-require.js
var require_try_node_require = __commonJS({
  "../../node_modules/core-js/internals/try-node-require.js"(exports2, module2) {
    var IS_NODE = require_engine_is_node();
    module2.exports = function(name3) {
      try {
        if (IS_NODE) return Function('return require("' + name3 + '")')();
      } catch (error) {
      }
    };
  }
});

// ../../node_modules/core-js/internals/dom-exception-constants.js
var require_dom_exception_constants = __commonJS({
  "../../node_modules/core-js/internals/dom-exception-constants.js"(exports2, module2) {
    module2.exports = {
      IndexSizeError: { s: "INDEX_SIZE_ERR", c: 1, m: 1 },
      DOMStringSizeError: { s: "DOMSTRING_SIZE_ERR", c: 2, m: 0 },
      HierarchyRequestError: { s: "HIERARCHY_REQUEST_ERR", c: 3, m: 1 },
      WrongDocumentError: { s: "WRONG_DOCUMENT_ERR", c: 4, m: 1 },
      InvalidCharacterError: { s: "INVALID_CHARACTER_ERR", c: 5, m: 1 },
      NoDataAllowedError: { s: "NO_DATA_ALLOWED_ERR", c: 6, m: 0 },
      NoModificationAllowedError: { s: "NO_MODIFICATION_ALLOWED_ERR", c: 7, m: 1 },
      NotFoundError: { s: "NOT_FOUND_ERR", c: 8, m: 1 },
      NotSupportedError: { s: "NOT_SUPPORTED_ERR", c: 9, m: 1 },
      InUseAttributeError: { s: "INUSE_ATTRIBUTE_ERR", c: 10, m: 1 },
      InvalidStateError: { s: "INVALID_STATE_ERR", c: 11, m: 1 },
      SyntaxError: { s: "SYNTAX_ERR", c: 12, m: 1 },
      InvalidModificationError: { s: "INVALID_MODIFICATION_ERR", c: 13, m: 1 },
      NamespaceError: { s: "NAMESPACE_ERR", c: 14, m: 1 },
      InvalidAccessError: { s: "INVALID_ACCESS_ERR", c: 15, m: 1 },
      ValidationError: { s: "VALIDATION_ERR", c: 16, m: 0 },
      TypeMismatchError: { s: "TYPE_MISMATCH_ERR", c: 17, m: 1 },
      SecurityError: { s: "SECURITY_ERR", c: 18, m: 1 },
      NetworkError: { s: "NETWORK_ERR", c: 19, m: 1 },
      AbortError: { s: "ABORT_ERR", c: 20, m: 1 },
      URLMismatchError: { s: "URL_MISMATCH_ERR", c: 21, m: 1 },
      QuotaExceededError: { s: "QUOTA_EXCEEDED_ERR", c: 22, m: 1 },
      TimeoutError: { s: "TIMEOUT_ERR", c: 23, m: 1 },
      InvalidNodeTypeError: { s: "INVALID_NODE_TYPE_ERR", c: 24, m: 1 },
      DataCloneError: { s: "DATA_CLONE_ERR", c: 25, m: 1 }
    };
  }
});

// ../../node_modules/core-js/modules/web.dom-exception.constructor.js
var require_web_dom_exception_constructor = __commonJS({
  "../../node_modules/core-js/modules/web.dom-exception.constructor.js"() {
    "use strict";
    var $2 = require_export();
    var tryNodeRequire = require_try_node_require();
    var getBuiltIn = require_get_built_in();
    var fails = require_fails();
    var create3 = require_object_create();
    var createPropertyDescriptor = require_create_property_descriptor();
    var defineProperty = require_object_define_property().f;
    var defineBuiltIn = require_define_built_in();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var hasOwn = require_has_own_property();
    var anInstance = require_an_instance();
    var anObject = require_an_object();
    var errorToString = require_error_to_string();
    var normalizeStringArgument = require_normalize_string_argument();
    var DOMExceptionConstants = require_dom_exception_constants();
    var clearErrorStack = require_error_stack_clear();
    var InternalStateModule = require_internal_state();
    var DESCRIPTORS = require_descriptors();
    var IS_PURE = require_is_pure();
    var DOM_EXCEPTION = "DOMException";
    var DATA_CLONE_ERR = "DATA_CLONE_ERR";
    var Error2 = getBuiltIn("Error");
    var NativeDOMException = getBuiltIn(DOM_EXCEPTION) || (function() {
      try {
        var MessageChannel2 = getBuiltIn("MessageChannel") || tryNodeRequire("worker_threads").MessageChannel;
        new MessageChannel2().port1.postMessage(/* @__PURE__ */ new WeakMap());
      } catch (error) {
        if (error.name == DATA_CLONE_ERR && error.code == 25) return error.constructor;
      }
    })();
    var NativeDOMExceptionPrototype = NativeDOMException && NativeDOMException.prototype;
    var ErrorPrototype = Error2.prototype;
    var setInternalState = InternalStateModule.set;
    var getInternalState = InternalStateModule.getterFor(DOM_EXCEPTION);
    var HAS_STACK = "stack" in Error2(DOM_EXCEPTION);
    var codeFor = function(name3) {
      return hasOwn(DOMExceptionConstants, name3) && DOMExceptionConstants[name3].m ? DOMExceptionConstants[name3].c : 0;
    };
    var $DOMException = function DOMException3() {
      anInstance(this, DOMExceptionPrototype);
      var argumentsLength = arguments.length;
      var message = normalizeStringArgument(argumentsLength < 1 ? void 0 : arguments[0]);
      var name3 = normalizeStringArgument(argumentsLength < 2 ? void 0 : arguments[1], "Error");
      var code7 = codeFor(name3);
      setInternalState(this, {
        type: DOM_EXCEPTION,
        name: name3,
        message,
        code: code7
      });
      if (!DESCRIPTORS) {
        this.name = name3;
        this.message = message;
        this.code = code7;
      }
      if (HAS_STACK) {
        var error = Error2(message);
        error.name = DOM_EXCEPTION;
        defineProperty(this, "stack", createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));
      }
    };
    var DOMExceptionPrototype = $DOMException.prototype = create3(ErrorPrototype);
    var createGetterDescriptor = function(get) {
      return { enumerable: true, configurable: true, get };
    };
    var getterFor = function(key3) {
      return createGetterDescriptor(function() {
        return getInternalState(this)[key3];
      });
    };
    if (DESCRIPTORS) {
      defineBuiltInAccessor(DOMExceptionPrototype, "code", getterFor("code"));
      defineBuiltInAccessor(DOMExceptionPrototype, "message", getterFor("message"));
      defineBuiltInAccessor(DOMExceptionPrototype, "name", getterFor("name"));
    }
    defineProperty(DOMExceptionPrototype, "constructor", createPropertyDescriptor(1, $DOMException));
    var INCORRECT_CONSTRUCTOR = fails(function() {
      return !(new NativeDOMException() instanceof Error2);
    });
    var INCORRECT_TO_STRING = INCORRECT_CONSTRUCTOR || fails(function() {
      return ErrorPrototype.toString !== errorToString || String(new NativeDOMException(1, 2)) !== "2: 1";
    });
    var INCORRECT_CODE = INCORRECT_CONSTRUCTOR || fails(function() {
      return new NativeDOMException(1, "DataCloneError").code !== 25;
    });
    var MISSED_CONSTANTS = INCORRECT_CONSTRUCTOR || NativeDOMException[DATA_CLONE_ERR] !== 25 || NativeDOMExceptionPrototype[DATA_CLONE_ERR] !== 25;
    var FORCED_CONSTRUCTOR = IS_PURE ? INCORRECT_TO_STRING || INCORRECT_CODE || MISSED_CONSTANTS : INCORRECT_CONSTRUCTOR;
    $2({ global: true, constructor: true, forced: FORCED_CONSTRUCTOR }, {
      DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException
    });
    var PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);
    var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;
    if (INCORRECT_TO_STRING && (IS_PURE || NativeDOMException === PolyfilledDOMException)) {
      defineBuiltIn(PolyfilledDOMExceptionPrototype, "toString", errorToString);
    }
    if (INCORRECT_CODE && DESCRIPTORS && NativeDOMException === PolyfilledDOMException) {
      defineBuiltInAccessor(PolyfilledDOMExceptionPrototype, "code", createGetterDescriptor(function() {
        return codeFor(anObject(this).name);
      }));
    }
    for (key2 in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key2)) {
      constant = DOMExceptionConstants[key2];
      constantName = constant.s;
      descriptor = createPropertyDescriptor(6, constant.c);
      if (!hasOwn(PolyfilledDOMException, constantName)) {
        defineProperty(PolyfilledDOMException, constantName, descriptor);
      }
      if (!hasOwn(PolyfilledDOMExceptionPrototype, constantName)) {
        defineProperty(PolyfilledDOMExceptionPrototype, constantName, descriptor);
      }
    }
    var constant;
    var constantName;
    var descriptor;
    var key2;
  }
});

// ../../node_modules/core-js/modules/web.dom-exception.stack.js
var require_web_dom_exception_stack = __commonJS({
  "../../node_modules/core-js/modules/web.dom-exception.stack.js"() {
    "use strict";
    var $2 = require_export();
    var global2 = require_global();
    var getBuiltIn = require_get_built_in();
    var createPropertyDescriptor = require_create_property_descriptor();
    var defineProperty = require_object_define_property().f;
    var hasOwn = require_has_own_property();
    var anInstance = require_an_instance();
    var inheritIfRequired = require_inherit_if_required();
    var normalizeStringArgument = require_normalize_string_argument();
    var DOMExceptionConstants = require_dom_exception_constants();
    var clearErrorStack = require_error_stack_clear();
    var DESCRIPTORS = require_descriptors();
    var IS_PURE = require_is_pure();
    var DOM_EXCEPTION = "DOMException";
    var Error2 = getBuiltIn("Error");
    var NativeDOMException = getBuiltIn(DOM_EXCEPTION);
    var $DOMException = function DOMException3() {
      anInstance(this, DOMExceptionPrototype);
      var argumentsLength = arguments.length;
      var message = normalizeStringArgument(argumentsLength < 1 ? void 0 : arguments[0]);
      var name3 = normalizeStringArgument(argumentsLength < 2 ? void 0 : arguments[1], "Error");
      var that = new NativeDOMException(message, name3);
      var error = Error2(message);
      error.name = DOM_EXCEPTION;
      defineProperty(that, "stack", createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));
      inheritIfRequired(that, this, $DOMException);
      return that;
    };
    var DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;
    var ERROR_HAS_STACK = "stack" in Error2(DOM_EXCEPTION);
    var DOM_EXCEPTION_HAS_STACK = "stack" in new NativeDOMException(1, 2);
    var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global2, DOM_EXCEPTION);
    var BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);
    var FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;
    $2({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, {
      // TODO: fix export logic
      DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException
    });
    var PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);
    var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;
    if (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {
      if (!IS_PURE) {
        defineProperty(PolyfilledDOMExceptionPrototype, "constructor", createPropertyDescriptor(1, PolyfilledDOMException));
      }
      for (key2 in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key2)) {
        constant = DOMExceptionConstants[key2];
        constantName = constant.s;
        if (!hasOwn(PolyfilledDOMException, constantName)) {
          defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));
        }
      }
    }
    var constant;
    var constantName;
    var key2;
  }
});

// ../../node_modules/core-js/modules/web.dom-exception.to-string-tag.js
var require_web_dom_exception_to_string_tag = __commonJS({
  "../../node_modules/core-js/modules/web.dom-exception.to-string-tag.js"() {
    var getBuiltIn = require_get_built_in();
    var setToStringTag = require_set_to_string_tag();
    var DOM_EXCEPTION = "DOMException";
    setToStringTag(getBuiltIn(DOM_EXCEPTION), DOM_EXCEPTION);
  }
});

// ../../node_modules/core-js/modules/web.clear-immediate.js
var require_web_clear_immediate = __commonJS({
  "../../node_modules/core-js/modules/web.clear-immediate.js"() {
    var $2 = require_export();
    var global2 = require_global();
    var clearImmediate = require_task().clear;
    $2({ global: true, bind: true, enumerable: true, forced: global2.clearImmediate !== clearImmediate }, {
      clearImmediate
    });
  }
});

// ../../node_modules/core-js/internals/engine-is-bun.js
var require_engine_is_bun = __commonJS({
  "../../node_modules/core-js/internals/engine-is-bun.js"(exports2, module2) {
    module2.exports = typeof Bun == "function" && Bun && typeof Bun.version == "string";
  }
});

// ../../node_modules/core-js/internals/schedulers-fix.js
var require_schedulers_fix = __commonJS({
  "../../node_modules/core-js/internals/schedulers-fix.js"(exports2, module2) {
    "use strict";
    var global2 = require_global();
    var apply = require_function_apply();
    var isCallable = require_is_callable();
    var ENGINE_IS_BUN = require_engine_is_bun();
    var USER_AGENT2 = require_engine_user_agent();
    var arraySlice = require_array_slice();
    var validateArgumentsLength = require_validate_arguments_length();
    var Function2 = global2.Function;
    var WRAP = /MSIE .\./.test(USER_AGENT2) || ENGINE_IS_BUN && (function() {
      var version4 = global2.Bun.version.split(".");
      return version4.length < 3 || version4[0] == 0 && (version4[1] < 3 || version4[1] == 3 && version4[2] == 0);
    })();
    module2.exports = function(scheduler, hasTimeArg) {
      var firstParamIndex = hasTimeArg ? 2 : 1;
      return WRAP ? function(handler, timeout) {
        var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;
        var fn = isCallable(handler) ? handler : Function2(handler);
        var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];
        var callback = boundArgs ? function() {
          apply(fn, this, params);
        } : fn;
        return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);
      } : scheduler;
    };
  }
});

// ../../node_modules/core-js/modules/web.set-immediate.js
var require_web_set_immediate = __commonJS({
  "../../node_modules/core-js/modules/web.set-immediate.js"() {
    var $2 = require_export();
    var global2 = require_global();
    var setTask = require_task().set;
    var schedulersFix = require_schedulers_fix();
    var setImmediate2 = global2.setImmediate ? schedulersFix(setTask, false) : setTask;
    $2({ global: true, bind: true, enumerable: true, forced: global2.setImmediate !== setImmediate2 }, {
      setImmediate: setImmediate2
    });
  }
});

// ../../node_modules/core-js/modules/web.immediate.js
var require_web_immediate = __commonJS({
  "../../node_modules/core-js/modules/web.immediate.js"() {
    require_web_clear_immediate();
    require_web_set_immediate();
  }
});

// ../../node_modules/core-js/modules/web.queue-microtask.js
var require_web_queue_microtask = __commonJS({
  "../../node_modules/core-js/modules/web.queue-microtask.js"() {
    var $2 = require_export();
    var global2 = require_global();
    var microtask = require_microtask();
    var aCallable = require_a_callable();
    var validateArgumentsLength = require_validate_arguments_length();
    var IS_NODE = require_engine_is_node();
    var process11 = global2.process;
    $2({ global: true, enumerable: true, dontCallGetSet: true }, {
      queueMicrotask: function queueMicrotask2(fn) {
        validateArgumentsLength(arguments.length, 1);
        aCallable(fn);
        var domain = IS_NODE && process11.domain;
        microtask(domain ? domain.bind(fn) : fn);
      }
    });
  }
});

// ../../node_modules/core-js/modules/web.self.js
var require_web_self = __commonJS({
  "../../node_modules/core-js/modules/web.self.js"() {
    "use strict";
    var $2 = require_export();
    var global2 = require_global();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var DESCRIPTORS = require_descriptors();
    var $TypeError = TypeError;
    var defineProperty = Object.defineProperty;
    var INCORRECT_VALUE = global2.self !== global2;
    try {
      if (DESCRIPTORS) {
        descriptor = Object.getOwnPropertyDescriptor(global2, "self");
        if (INCORRECT_VALUE || !descriptor || !descriptor.get || !descriptor.enumerable) {
          defineBuiltInAccessor(global2, "self", {
            get: function self2() {
              return global2;
            },
            set: function self2(value) {
              if (this !== global2) throw $TypeError("Illegal invocation");
              defineProperty(global2, "self", {
                value,
                writable: true,
                configurable: true,
                enumerable: true
              });
            },
            configurable: true,
            enumerable: true
          });
        }
      } else $2({ global: true, simple: true, forced: INCORRECT_VALUE }, {
        self: global2
      });
    } catch (error) {
    }
    var descriptor;
  }
});

// ../../node_modules/core-js/internals/map-helpers.js
var require_map_helpers = __commonJS({
  "../../node_modules/core-js/internals/map-helpers.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var MapPrototype = Map.prototype;
    module2.exports = {
      // eslint-disable-next-line es/no-map -- safe
      Map,
      set: uncurryThis(MapPrototype.set),
      get: uncurryThis(MapPrototype.get),
      has: uncurryThis(MapPrototype.has),
      remove: uncurryThis(MapPrototype["delete"]),
      proto: MapPrototype
    };
  }
});

// ../../node_modules/core-js/internals/set-helpers.js
var require_set_helpers = __commonJS({
  "../../node_modules/core-js/internals/set-helpers.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var SetPrototype = Set.prototype;
    module2.exports = {
      // eslint-disable-next-line es/no-set -- safe
      Set,
      add: uncurryThis(SetPrototype.add),
      has: uncurryThis(SetPrototype.has),
      remove: uncurryThis(SetPrototype["delete"]),
      proto: SetPrototype
    };
  }
});

// ../../node_modules/core-js/internals/structured-clone-proper-transfer.js
var require_structured_clone_proper_transfer = __commonJS({
  "../../node_modules/core-js/internals/structured-clone-proper-transfer.js"(exports2, module2) {
    var global2 = require_global();
    var fails = require_fails();
    var V8 = require_engine_v8_version();
    var IS_BROWSER = require_engine_is_browser();
    var IS_DENO = require_engine_is_deno();
    var IS_NODE = require_engine_is_node();
    var structuredClone2 = global2.structuredClone;
    module2.exports = !!structuredClone2 && !fails(function() {
      if (IS_DENO && V8 > 92 || IS_NODE && V8 > 94 || IS_BROWSER && V8 > 97) return false;
      var buffer2 = new ArrayBuffer(8);
      var clone3 = structuredClone2(buffer2, { transfer: [buffer2] });
      return buffer2.byteLength != 0 || clone3.byteLength != 8;
    });
  }
});

// ../../node_modules/core-js/modules/web.structured-clone.js
var require_web_structured_clone = __commonJS({
  "../../node_modules/core-js/modules/web.structured-clone.js"() {
    var IS_PURE = require_is_pure();
    var $2 = require_export();
    var global2 = require_global();
    var getBuiltin = require_get_built_in();
    var uncurryThis = require_function_uncurry_this();
    var fails = require_fails();
    var uid = require_uid();
    var isCallable = require_is_callable();
    var isConstructor = require_is_constructor();
    var isNullOrUndefined = require_is_null_or_undefined();
    var isObject2 = require_is_object();
    var isSymbol = require_is_symbol();
    var iterate2 = require_iterate();
    var anObject = require_an_object();
    var classof = require_classof();
    var hasOwn = require_has_own_property();
    var createProperty = require_create_property();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var lengthOfArrayLike = require_length_of_array_like();
    var validateArgumentsLength = require_validate_arguments_length();
    var getRegExpFlags = require_regexp_get_flags();
    var MapHelpers = require_map_helpers();
    var SetHelpers = require_set_helpers();
    var ERROR_STACK_INSTALLABLE = require_error_stack_installable();
    var PROPER_TRANSFER = require_structured_clone_proper_transfer();
    var Object2 = global2.Object;
    var Array2 = global2.Array;
    var Date2 = global2.Date;
    var Error2 = global2.Error;
    var EvalError2 = global2.EvalError;
    var RangeError2 = global2.RangeError;
    var ReferenceError2 = global2.ReferenceError;
    var SyntaxError2 = global2.SyntaxError;
    var TypeError2 = global2.TypeError;
    var URIError2 = global2.URIError;
    var PerformanceMark = global2.PerformanceMark;
    var WebAssembly = global2.WebAssembly;
    var CompileError = WebAssembly && WebAssembly.CompileError || Error2;
    var LinkError = WebAssembly && WebAssembly.LinkError || Error2;
    var RuntimeError = WebAssembly && WebAssembly.RuntimeError || Error2;
    var DOMException3 = getBuiltin("DOMException");
    var Map2 = MapHelpers.Map;
    var mapHas = MapHelpers.has;
    var mapGet = MapHelpers.get;
    var mapSet = MapHelpers.set;
    var Set2 = SetHelpers.Set;
    var setAdd = SetHelpers.add;
    var objectKeys = getBuiltin("Object", "keys");
    var push = uncurryThis([].push);
    var thisBooleanValue = uncurryThis(true.valueOf);
    var thisNumberValue = uncurryThis(1 .valueOf);
    var thisStringValue = uncurryThis("".valueOf);
    var thisTimeValue = uncurryThis(Date2.prototype.getTime);
    var PERFORMANCE_MARK = uid("structuredClone");
    var DATA_CLONE_ERROR = "DataCloneError";
    var TRANSFERRING = "Transferring";
    var checkBasicSemantic = function(structuredCloneImplementation) {
      return !fails(function() {
        var set1 = new global2.Set([7]);
        var set22 = structuredCloneImplementation(set1);
        var number2 = structuredCloneImplementation(Object2(7));
        return set22 == set1 || !set22.has(7) || typeof number2 != "object" || number2 != 7;
      }) && structuredCloneImplementation;
    };
    var checkErrorsCloning = function(structuredCloneImplementation, $Error) {
      return !fails(function() {
        var error = new $Error();
        var test2 = structuredCloneImplementation({ a: error, b: error });
        return !(test2 && test2.a === test2.b && test2.a instanceof $Error && test2.a.stack === error.stack);
      });
    };
    var checkNewErrorsCloningSemantic = function(structuredCloneImplementation) {
      return !fails(function() {
        var test2 = structuredCloneImplementation(new global2.AggregateError([1], PERFORMANCE_MARK, { cause: 3 }));
        return test2.name != "AggregateError" || test2.errors[0] != 1 || test2.message != PERFORMANCE_MARK || test2.cause != 3;
      });
    };
    var nativeStructuredClone = global2.structuredClone;
    var FORCED_REPLACEMENT = IS_PURE || !checkErrorsCloning(nativeStructuredClone, Error2) || !checkErrorsCloning(nativeStructuredClone, DOMException3) || !checkNewErrorsCloningSemantic(nativeStructuredClone);
    var structuredCloneFromMark = !nativeStructuredClone && checkBasicSemantic(function(value) {
      return new PerformanceMark(PERFORMANCE_MARK, { detail: value }).detail;
    });
    var nativeRestrictedStructuredClone = checkBasicSemantic(nativeStructuredClone) || structuredCloneFromMark;
    var throwUncloneable = function(type2) {
      throw new DOMException3("Uncloneable type: " + type2, DATA_CLONE_ERROR);
    };
    var throwUnpolyfillable = function(type2, action) {
      throw new DOMException3((action || "Cloning") + " of " + type2 + " cannot be properly polyfilled in this engine", DATA_CLONE_ERROR);
    };
    var tryNativeRestrictedStructuredClone = function(value, type2) {
      if (!nativeRestrictedStructuredClone) throwUnpolyfillable(type2);
      return nativeRestrictedStructuredClone(value);
    };
    var createDataTransfer = function() {
      var dataTransfer;
      try {
        dataTransfer = new global2.DataTransfer();
      } catch (error) {
        try {
          dataTransfer = new global2.ClipboardEvent("").clipboardData;
        } catch (error2) {
        }
      }
      return dataTransfer && dataTransfer.items && dataTransfer.files ? dataTransfer : null;
    };
    var cloneBuffer = function(value, map13, $type) {
      if (mapHas(map13, value)) return mapGet(map13, value);
      var type2 = $type || classof(value);
      var clone3, length, options, source2, target, i2;
      if (type2 === "SharedArrayBuffer") {
        if (nativeRestrictedStructuredClone) clone3 = nativeRestrictedStructuredClone(value);
        else clone3 = value;
      } else {
        var DataView2 = global2.DataView;
        if (!DataView2 && typeof value.slice != "function") throwUnpolyfillable("ArrayBuffer");
        try {
          if (typeof value.slice == "function" && !value.resizable) {
            clone3 = value.slice(0);
          } else {
            length = value.byteLength;
            options = "maxByteLength" in value ? { maxByteLength: value.maxByteLength } : void 0;
            clone3 = new ArrayBuffer(length, options);
            source2 = new DataView2(value);
            target = new DataView2(clone3);
            for (i2 = 0; i2 < length; i2++) {
              target.setUint8(i2, source2.getUint8(i2));
            }
          }
        } catch (error) {
          throw new DOMException3("ArrayBuffer is detached", DATA_CLONE_ERROR);
        }
      }
      mapSet(map13, value, clone3);
      return clone3;
    };
    var cloneView = function(value, type2, offset, length, map13) {
      var C = global2[type2];
      if (!isObject2(C)) throwUnpolyfillable(type2);
      return new C(cloneBuffer(value.buffer, map13), offset, length);
    };
    var Placeholder = function(object, type2, metadata) {
      this.object = object;
      this.type = type2;
      this.metadata = metadata;
    };
    var structuredCloneInternal = function(value, map13, transferredBuffers) {
      if (isSymbol(value)) throwUncloneable("Symbol");
      if (!isObject2(value)) return value;
      if (map13) {
        if (mapHas(map13, value)) return mapGet(map13, value);
      } else map13 = new Map2();
      var type2 = classof(value);
      var C, name3, cloned, dataTransfer, i2, length, keys2, key2;
      switch (type2) {
        case "Array":
          cloned = Array2(lengthOfArrayLike(value));
          break;
        case "Object":
          cloned = {};
          break;
        case "Map":
          cloned = new Map2();
          break;
        case "Set":
          cloned = new Set2();
          break;
        case "RegExp":
          cloned = new RegExp(value.source, getRegExpFlags(value));
          break;
        case "Error":
          name3 = value.name;
          switch (name3) {
            case "AggregateError":
              cloned = getBuiltin("AggregateError")([]);
              break;
            case "EvalError":
              cloned = EvalError2();
              break;
            case "RangeError":
              cloned = RangeError2();
              break;
            case "ReferenceError":
              cloned = ReferenceError2();
              break;
            case "SyntaxError":
              cloned = SyntaxError2();
              break;
            case "TypeError":
              cloned = TypeError2();
              break;
            case "URIError":
              cloned = URIError2();
              break;
            case "CompileError":
              cloned = CompileError();
              break;
            case "LinkError":
              cloned = LinkError();
              break;
            case "RuntimeError":
              cloned = RuntimeError();
              break;
            default:
              cloned = Error2();
          }
          break;
        case "DOMException":
          cloned = new DOMException3(value.message, value.name);
          break;
        case "ArrayBuffer":
        case "SharedArrayBuffer":
          cloned = transferredBuffers ? new Placeholder(value, type2) : cloneBuffer(value, map13, type2);
          break;
        case "DataView":
        case "Int8Array":
        case "Uint8Array":
        case "Uint8ClampedArray":
        case "Int16Array":
        case "Uint16Array":
        case "Int32Array":
        case "Uint32Array":
        case "Float16Array":
        case "Float32Array":
        case "Float64Array":
        case "BigInt64Array":
        case "BigUint64Array":
          length = type2 === "DataView" ? value.byteLength : value.length;
          cloned = transferredBuffers ? new Placeholder(value, type2, { offset: value.byteOffset, length }) : cloneView(value, type2, value.byteOffset, length, map13);
          break;
        case "DOMQuad":
          try {
            cloned = new DOMQuad(
              structuredCloneInternal(value.p1, map13, transferredBuffers),
              structuredCloneInternal(value.p2, map13, transferredBuffers),
              structuredCloneInternal(value.p3, map13, transferredBuffers),
              structuredCloneInternal(value.p4, map13, transferredBuffers)
            );
          } catch (error) {
            cloned = tryNativeRestrictedStructuredClone(value, type2);
          }
          break;
        case "File":
          if (nativeRestrictedStructuredClone) try {
            cloned = nativeRestrictedStructuredClone(value);
            if (classof(cloned) !== type2) cloned = void 0;
          } catch (error) {
          }
          if (!cloned) try {
            cloned = new File([value], value.name, value);
          } catch (error) {
          }
          if (!cloned) throwUnpolyfillable(type2);
          break;
        case "FileList":
          dataTransfer = createDataTransfer();
          if (dataTransfer) {
            for (i2 = 0, length = lengthOfArrayLike(value); i2 < length; i2++) {
              dataTransfer.items.add(structuredCloneInternal(value[i2], map13, transferredBuffers));
            }
            cloned = dataTransfer.files;
          } else cloned = tryNativeRestrictedStructuredClone(value, type2);
          break;
        case "ImageData":
          try {
            cloned = new ImageData(
              structuredCloneInternal(value.data, map13, transferredBuffers),
              value.width,
              value.height,
              { colorSpace: value.colorSpace }
            );
          } catch (error) {
            cloned = tryNativeRestrictedStructuredClone(value, type2);
          }
          break;
        default:
          if (nativeRestrictedStructuredClone) {
            cloned = nativeRestrictedStructuredClone(value);
          } else switch (type2) {
            case "BigInt":
              cloned = Object2(value.valueOf());
              break;
            case "Boolean":
              cloned = Object2(thisBooleanValue(value));
              break;
            case "Number":
              cloned = Object2(thisNumberValue(value));
              break;
            case "String":
              cloned = Object2(thisStringValue(value));
              break;
            case "Date":
              cloned = new Date2(thisTimeValue(value));
              break;
            case "Blob":
              try {
                cloned = value.slice(0, value.size, value.type);
              } catch (error) {
                throwUnpolyfillable(type2);
              }
              break;
            case "DOMPoint":
            case "DOMPointReadOnly":
              C = global2[type2];
              try {
                cloned = C.fromPoint ? C.fromPoint(value) : new C(value.x, value.y, value.z, value.w);
              } catch (error) {
                throwUnpolyfillable(type2);
              }
              break;
            case "DOMRect":
            case "DOMRectReadOnly":
              C = global2[type2];
              try {
                cloned = C.fromRect ? C.fromRect(value) : new C(value.x, value.y, value.width, value.height);
              } catch (error) {
                throwUnpolyfillable(type2);
              }
              break;
            case "DOMMatrix":
            case "DOMMatrixReadOnly":
              C = global2[type2];
              try {
                cloned = C.fromMatrix ? C.fromMatrix(value) : new C(value);
              } catch (error) {
                throwUnpolyfillable(type2);
              }
              break;
            case "AudioData":
            case "VideoFrame":
              if (!isCallable(value.clone)) throwUnpolyfillable(type2);
              try {
                cloned = value.clone();
              } catch (error) {
                throwUncloneable(type2);
              }
              break;
            case "CropTarget":
            case "CryptoKey":
            case "FileSystemDirectoryHandle":
            case "FileSystemFileHandle":
            case "FileSystemHandle":
            case "GPUCompilationInfo":
            case "GPUCompilationMessage":
            case "ImageBitmap":
            case "RTCCertificate":
            case "WebAssembly.Module":
              throwUnpolyfillable(type2);
            // break omitted
            default:
              throwUncloneable(type2);
          }
      }
      mapSet(map13, value, cloned);
      switch (type2) {
        case "Array":
        case "Object":
          keys2 = objectKeys(value);
          for (i2 = 0, length = lengthOfArrayLike(keys2); i2 < length; i2++) {
            key2 = keys2[i2];
            createProperty(cloned, key2, structuredCloneInternal(value[key2], map13, transferredBuffers));
          }
          break;
        case "Map":
          value.forEach(function(v, k) {
            mapSet(cloned, structuredCloneInternal(k, map13, transferredBuffers), structuredCloneInternal(v, map13, transferredBuffers));
          });
          break;
        case "Set":
          value.forEach(function(v) {
            setAdd(cloned, structuredCloneInternal(v, map13, transferredBuffers));
          });
          break;
        case "Error":
          createNonEnumerableProperty(cloned, "message", structuredCloneInternal(value.message, map13, transferredBuffers));
          if (hasOwn(value, "cause")) {
            createNonEnumerableProperty(cloned, "cause", structuredCloneInternal(value.cause, map13, transferredBuffers));
          }
          if (name3 == "AggregateError") {
            cloned.errors = structuredCloneInternal(value.errors, map13, transferredBuffers);
          }
        // break omitted
        case "DOMException":
          if (ERROR_STACK_INSTALLABLE) {
            createNonEnumerableProperty(cloned, "stack", structuredCloneInternal(value.stack, map13, transferredBuffers));
          }
      }
      return cloned;
    };
    var replacePlaceholders = function(value, map13) {
      if (!isObject2(value)) return value;
      if (mapHas(map13, value)) return mapGet(map13, value);
      var type2, object, metadata, i2, length, keys2, key2, replacement;
      if (value instanceof Placeholder) {
        type2 = value.type;
        object = value.object;
        switch (type2) {
          case "ArrayBuffer":
          case "SharedArrayBuffer":
            replacement = cloneBuffer(object, map13, type2);
            break;
          case "DataView":
          case "Int8Array":
          case "Uint8Array":
          case "Uint8ClampedArray":
          case "Int16Array":
          case "Uint16Array":
          case "Int32Array":
          case "Uint32Array":
          case "Float16Array":
          case "Float32Array":
          case "Float64Array":
          case "BigInt64Array":
          case "BigUint64Array":
            metadata = value.metadata;
            replacement = cloneView(object, type2, metadata.offset, metadata.length, map13);
        }
      } else switch (classof(value)) {
        case "Array":
        case "Object":
          keys2 = objectKeys(value);
          for (i2 = 0, length = lengthOfArrayLike(keys2); i2 < length; i2++) {
            key2 = keys2[i2];
            value[key2] = replacePlaceholders(value[key2], map13);
          }
          break;
        case "Map":
          replacement = new Map2();
          value.forEach(function(v, k) {
            mapSet(replacement, replacePlaceholders(k, map13), replacePlaceholders(v, map13));
          });
          break;
        case "Set":
          replacement = new Set2();
          value.forEach(function(v) {
            setAdd(replacement, replacePlaceholders(v, map13));
          });
          break;
        case "Error":
          value.message = replacePlaceholders(value.message, map13);
          if (hasOwn(value, "cause")) {
            value.cause = replacePlaceholders(value.cause, map13);
          }
          if (value.name == "AggregateError") {
            value.errors = replacePlaceholders(value.errors, map13);
          }
        // break omitted
        case "DOMException":
          if (ERROR_STACK_INSTALLABLE) {
            value.stack = replacePlaceholders(value.stack, map13);
          }
      }
      mapSet(map13, value, replacement || value);
      return replacement || value;
    };
    var tryToTransfer = function(rawTransfer, map13) {
      if (!isObject2(rawTransfer)) throw TypeError2("Transfer option cannot be converted to a sequence");
      var transfer = [];
      iterate2(rawTransfer, function(value2) {
        push(transfer, anObject(value2));
      });
      var i2 = 0;
      var length = lengthOfArrayLike(transfer);
      var buffers = [];
      var value, type2, C, transferred, canvas, context;
      while (i2 < length) {
        value = transfer[i2++];
        type2 = classof(value);
        if (type2 === "ArrayBuffer") {
          push(buffers, value);
          continue;
        }
        if (mapHas(map13, value)) throw new DOMException3("Duplicate transferable", DATA_CLONE_ERROR);
        if (PROPER_TRANSFER) {
          transferred = nativeStructuredClone(value, { transfer: [value] });
        } else switch (type2) {
          case "ImageBitmap":
            C = global2.OffscreenCanvas;
            if (!isConstructor(C)) throwUnpolyfillable(type2, TRANSFERRING);
            try {
              canvas = new C(value.width, value.height);
              context = canvas.getContext("bitmaprenderer");
              context.transferFromImageBitmap(value);
              transferred = canvas.transferToImageBitmap();
            } catch (error) {
            }
            break;
          case "AudioData":
          case "VideoFrame":
            if (!isCallable(value.clone) || !isCallable(value.close)) throwUnpolyfillable(type2, TRANSFERRING);
            try {
              transferred = value.clone();
              value.close();
            } catch (error) {
            }
            break;
          case "MediaSourceHandle":
          case "MessagePort":
          case "OffscreenCanvas":
          case "ReadableStream":
          case "TransformStream":
          case "WritableStream":
            throwUnpolyfillable(type2, TRANSFERRING);
        }
        if (transferred === void 0) throw new DOMException3("This object cannot be transferred: " + type2, DATA_CLONE_ERROR);
        mapSet(map13, value, transferred);
      }
      return buffers;
    };
    var tryToTransferBuffers = function(transfer, map13) {
      var i2 = 0;
      var length = lengthOfArrayLike(transfer);
      var value, transferred;
      while (i2 < length) {
        value = transfer[i2++];
        if (mapHas(map13, value)) throw new DOMException3("Duplicate transferable", DATA_CLONE_ERROR);
        if (PROPER_TRANSFER) {
          transferred = nativeStructuredClone(value, { transfer: [value] });
        } else {
          if (!isCallable(value.transfer)) throwUnpolyfillable("ArrayBuffer", TRANSFERRING);
          transferred = value.transfer();
        }
        mapSet(map13, value, transferred);
      }
    };
    $2({ global: true, enumerable: true, sham: !PROPER_TRANSFER, forced: FORCED_REPLACEMENT }, {
      structuredClone: function structuredClone2(value) {
        var options = validateArgumentsLength(arguments.length, 1) > 1 && !isNullOrUndefined(arguments[1]) ? anObject(arguments[1]) : void 0;
        var transfer = options ? options.transfer : void 0;
        var transferredBuffers = false;
        var map13, buffers;
        if (transfer !== void 0) {
          map13 = new Map2();
          buffers = tryToTransfer(transfer, map13);
          transferredBuffers = !!lengthOfArrayLike(buffers);
        }
        var clone3 = structuredCloneInternal(value, map13, transferredBuffers);
        if (transferredBuffers) {
          map13 = new Map2();
          tryToTransferBuffers(transfer, map13);
          clone3 = replacePlaceholders(clone3, map13);
        }
        return clone3;
      }
    });
  }
});

// ../../node_modules/core-js/modules/web.set-interval.js
var require_web_set_interval = __commonJS({
  "../../node_modules/core-js/modules/web.set-interval.js"() {
    var $2 = require_export();
    var global2 = require_global();
    var schedulersFix = require_schedulers_fix();
    var setInterval2 = schedulersFix(global2.setInterval, true);
    $2({ global: true, bind: true, forced: global2.setInterval !== setInterval2 }, {
      setInterval: setInterval2
    });
  }
});

// ../../node_modules/core-js/modules/web.set-timeout.js
var require_web_set_timeout = __commonJS({
  "../../node_modules/core-js/modules/web.set-timeout.js"() {
    var $2 = require_export();
    var global2 = require_global();
    var schedulersFix = require_schedulers_fix();
    var setTimeout2 = schedulersFix(global2.setTimeout, true);
    $2({ global: true, bind: true, forced: global2.setTimeout !== setTimeout2 }, {
      setTimeout: setTimeout2
    });
  }
});

// ../../node_modules/core-js/modules/web.timers.js
var require_web_timers = __commonJS({
  "../../node_modules/core-js/modules/web.timers.js"() {
    require_web_set_interval();
    require_web_set_timeout();
  }
});

// ../../node_modules/core-js/internals/url-constructor-detection.js
var require_url_constructor_detection = __commonJS({
  "../../node_modules/core-js/internals/url-constructor-detection.js"(exports2, module2) {
    var fails = require_fails();
    var wellKnownSymbol = require_well_known_symbol();
    var DESCRIPTORS = require_descriptors();
    var IS_PURE = require_is_pure();
    var ITERATOR = wellKnownSymbol("iterator");
    module2.exports = !fails(function() {
      var url = new URL("b?a=1&b=2&c=3", "http://a");
      var searchParams = url.searchParams;
      var searchParams2 = new URLSearchParams("a=1&a=2");
      var result = "";
      url.pathname = "c%20d";
      searchParams.forEach(function(value, key2) {
        searchParams["delete"]("b");
        result += key2 + value;
      });
      searchParams2["delete"]("a", 2);
      return IS_PURE && (!url.toJSON || !searchParams2.has("a", 1) || searchParams2.has("a", 2)) || !searchParams.size && (IS_PURE || !DESCRIPTORS) || !searchParams.sort || url.href !== "http://a/c%20d?a=1&c=3" || searchParams.get("c") !== "3" || String(new URLSearchParams("?a=1")) !== "a=1" || !searchParams[ITERATOR] || new URL("https://a@b").username !== "a" || new URLSearchParams(new URLSearchParams("a=b")).get("a") !== "b" || new URL("http://\u0442\u0435\u0441\u0442").host !== "xn--e1aybc" || new URL("http://a#\u0431").hash !== "#%D0%B1" || result !== "a1c3" || new URL("http://x", void 0).host !== "x";
    });
  }
});

// ../../node_modules/core-js/internals/string-punycode-to-ascii.js
var require_string_punycode_to_ascii = __commonJS({
  "../../node_modules/core-js/internals/string-punycode-to-ascii.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var maxInt = 2147483647;
    var base5 = 36;
    var tMin = 1;
    var tMax = 26;
    var skew = 38;
    var damp = 700;
    var initialBias = 72;
    var initialN = 128;
    var delimiter2 = "-";
    var regexNonASCII = /[^\0-\u007E]/;
    var regexSeparators = /[.\u3002\uFF0E\uFF61]/g;
    var OVERFLOW_ERROR = "Overflow: input needs wider integers to process";
    var baseMinusTMin = base5 - tMin;
    var $RangeError = RangeError;
    var exec3 = uncurryThis(regexSeparators.exec);
    var floor = Math.floor;
    var fromCharCode = String.fromCharCode;
    var charCodeAt = uncurryThis("".charCodeAt);
    var join19 = uncurryThis([].join);
    var push = uncurryThis([].push);
    var replace = uncurryThis("".replace);
    var split2 = uncurryThis("".split);
    var toLowerCase = uncurryThis("".toLowerCase);
    var ucs2decode = function(string2) {
      var output2 = [];
      var counter = 0;
      var length = string2.length;
      while (counter < length) {
        var value = charCodeAt(string2, counter++);
        if (value >= 55296 && value <= 56319 && counter < length) {
          var extra = charCodeAt(string2, counter++);
          if ((extra & 64512) == 56320) {
            push(output2, ((value & 1023) << 10) + (extra & 1023) + 65536);
          } else {
            push(output2, value);
            counter--;
          }
        } else {
          push(output2, value);
        }
      }
      return output2;
    };
    var digitToBasic = function(digit) {
      return digit + 22 + 75 * (digit < 26);
    };
    var adapt = function(delta, numPoints, firstTime) {
      var k = 0;
      delta = firstTime ? floor(delta / damp) : delta >> 1;
      delta += floor(delta / numPoints);
      while (delta > baseMinusTMin * tMax >> 1) {
        delta = floor(delta / baseMinusTMin);
        k += base5;
      }
      return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
    };
    var encode = function(input3) {
      var output2 = [];
      input3 = ucs2decode(input3);
      var inputLength = input3.length;
      var n = initialN;
      var delta = 0;
      var bias = initialBias;
      var i2, currentValue;
      for (i2 = 0; i2 < input3.length; i2++) {
        currentValue = input3[i2];
        if (currentValue < 128) {
          push(output2, fromCharCode(currentValue));
        }
      }
      var basicLength = output2.length;
      var handledCPCount = basicLength;
      if (basicLength) {
        push(output2, delimiter2);
      }
      while (handledCPCount < inputLength) {
        var m2 = maxInt;
        for (i2 = 0; i2 < input3.length; i2++) {
          currentValue = input3[i2];
          if (currentValue >= n && currentValue < m2) {
            m2 = currentValue;
          }
        }
        var handledCPCountPlusOne = handledCPCount + 1;
        if (m2 - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
          throw $RangeError(OVERFLOW_ERROR);
        }
        delta += (m2 - n) * handledCPCountPlusOne;
        n = m2;
        for (i2 = 0; i2 < input3.length; i2++) {
          currentValue = input3[i2];
          if (currentValue < n && ++delta > maxInt) {
            throw $RangeError(OVERFLOW_ERROR);
          }
          if (currentValue == n) {
            var q2 = delta;
            var k = base5;
            while (true) {
              var t2 = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
              if (q2 < t2) break;
              var qMinusT = q2 - t2;
              var baseMinusT = base5 - t2;
              push(output2, fromCharCode(digitToBasic(t2 + qMinusT % baseMinusT)));
              q2 = floor(qMinusT / baseMinusT);
              k += base5;
            }
            push(output2, fromCharCode(digitToBasic(q2)));
            bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
            delta = 0;
            handledCPCount++;
          }
        }
        delta++;
        n++;
      }
      return join19(output2, "");
    };
    module2.exports = function(input3) {
      var encoded = [];
      var labels = split2(replace(toLowerCase(input3), regexSeparators, "."), ".");
      var i2, label;
      for (i2 = 0; i2 < labels.length; i2++) {
        label = labels[i2];
        push(encoded, exec3(regexNonASCII, label) ? "xn--" + encode(label) : label);
      }
      return join19(encoded, ".");
    };
  }
});

// ../../node_modules/core-js/modules/web.url-search-params.constructor.js
var require_web_url_search_params_constructor = __commonJS({
  "../../node_modules/core-js/modules/web.url-search-params.constructor.js"(exports2, module2) {
    "use strict";
    require_es_array_iterator();
    var $2 = require_export();
    var global2 = require_global();
    var call = require_function_call();
    var uncurryThis = require_function_uncurry_this();
    var DESCRIPTORS = require_descriptors();
    var USE_NATIVE_URL = require_url_constructor_detection();
    var defineBuiltIn = require_define_built_in();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var defineBuiltIns = require_define_built_ins();
    var setToStringTag = require_set_to_string_tag();
    var createIteratorConstructor = require_iterator_create_constructor();
    var InternalStateModule = require_internal_state();
    var anInstance = require_an_instance();
    var isCallable = require_is_callable();
    var hasOwn = require_has_own_property();
    var bind = require_function_bind_context();
    var classof = require_classof();
    var anObject = require_an_object();
    var isObject2 = require_is_object();
    var $toString = require_to_string();
    var create3 = require_object_create();
    var createPropertyDescriptor = require_create_property_descriptor();
    var getIterator = require_get_iterator();
    var getIteratorMethod = require_get_iterator_method();
    var validateArgumentsLength = require_validate_arguments_length();
    var wellKnownSymbol = require_well_known_symbol();
    var arraySort = require_array_sort();
    var ITERATOR = wellKnownSymbol("iterator");
    var URL_SEARCH_PARAMS = "URLSearchParams";
    var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + "Iterator";
    var setInternalState = InternalStateModule.set;
    var getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);
    var getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);
    var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
    var safeGetBuiltIn = function(name3) {
      if (!DESCRIPTORS) return global2[name3];
      var descriptor = getOwnPropertyDescriptor(global2, name3);
      return descriptor && descriptor.value;
    };
    var nativeFetch = safeGetBuiltIn("fetch");
    var NativeRequest = safeGetBuiltIn("Request");
    var Headers3 = safeGetBuiltIn("Headers");
    var RequestPrototype = NativeRequest && NativeRequest.prototype;
    var HeadersPrototype = Headers3 && Headers3.prototype;
    var RegExp2 = global2.RegExp;
    var TypeError2 = global2.TypeError;
    var decodeURIComponent2 = global2.decodeURIComponent;
    var encodeURIComponent2 = global2.encodeURIComponent;
    var charAt = uncurryThis("".charAt);
    var join19 = uncurryThis([].join);
    var push = uncurryThis([].push);
    var replace = uncurryThis("".replace);
    var shift = uncurryThis([].shift);
    var splice = uncurryThis([].splice);
    var split2 = uncurryThis("".split);
    var stringSlice = uncurryThis("".slice);
    var plus = /\+/g;
    var sequences = Array(4);
    var percentSequence = function(bytes) {
      return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp2("((?:%[\\da-f]{2}){" + bytes + "})", "gi"));
    };
    var percentDecode = function(sequence) {
      try {
        return decodeURIComponent2(sequence);
      } catch (error) {
        return sequence;
      }
    };
    var deserialize = function(it) {
      var result = replace(it, plus, " ");
      var bytes = 4;
      try {
        return decodeURIComponent2(result);
      } catch (error) {
        while (bytes) {
          result = replace(result, percentSequence(bytes--), percentDecode);
        }
        return result;
      }
    };
    var find2 = /[!'()~]|%20/g;
    var replacements3 = {
      "!": "%21",
      "'": "%27",
      "(": "%28",
      ")": "%29",
      "~": "%7E",
      "%20": "+"
    };
    var replacer = function(match3) {
      return replacements3[match3];
    };
    var serialize3 = function(it) {
      return replace(encodeURIComponent2(it), find2, replacer);
    };
    var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {
      setInternalState(this, {
        type: URL_SEARCH_PARAMS_ITERATOR,
        iterator: getIterator(getInternalParamsState(params).entries),
        kind
      });
    }, "Iterator", function next() {
      var state = getInternalIteratorState(this);
      var kind = state.kind;
      var step = state.iterator.next();
      var entry = step.value;
      if (!step.done) {
        step.value = kind === "keys" ? entry.key : kind === "values" ? entry.value : [entry.key, entry.value];
      }
      return step;
    }, true);
    var URLSearchParamsState = function(init4) {
      this.entries = [];
      this.url = null;
      if (init4 !== void 0) {
        if (isObject2(init4)) this.parseObject(init4);
        else this.parseQuery(typeof init4 == "string" ? charAt(init4, 0) === "?" ? stringSlice(init4, 1) : init4 : $toString(init4));
      }
    };
    URLSearchParamsState.prototype = {
      type: URL_SEARCH_PARAMS,
      bindURL: function(url) {
        this.url = url;
        this.update();
      },
      parseObject: function(object) {
        var iteratorMethod = getIteratorMethod(object);
        var iterator, next, step, entryIterator, entryNext, first2, second;
        if (iteratorMethod) {
          iterator = getIterator(object, iteratorMethod);
          next = iterator.next;
          while (!(step = call(next, iterator)).done) {
            entryIterator = getIterator(anObject(step.value));
            entryNext = entryIterator.next;
            if ((first2 = call(entryNext, entryIterator)).done || (second = call(entryNext, entryIterator)).done || !call(entryNext, entryIterator).done) throw TypeError2("Expected sequence with length 2");
            push(this.entries, { key: $toString(first2.value), value: $toString(second.value) });
          }
        } else for (var key2 in object) if (hasOwn(object, key2)) {
          push(this.entries, { key: key2, value: $toString(object[key2]) });
        }
      },
      parseQuery: function(query) {
        if (query) {
          var attributes = split2(query, "&");
          var index4 = 0;
          var attribute2, entry;
          while (index4 < attributes.length) {
            attribute2 = attributes[index4++];
            if (attribute2.length) {
              entry = split2(attribute2, "=");
              push(this.entries, {
                key: deserialize(shift(entry)),
                value: deserialize(join19(entry, "="))
              });
            }
          }
        }
      },
      serialize: function() {
        var entries2 = this.entries;
        var result = [];
        var index4 = 0;
        var entry;
        while (index4 < entries2.length) {
          entry = entries2[index4++];
          push(result, serialize3(entry.key) + "=" + serialize3(entry.value));
        }
        return join19(result, "&");
      },
      update: function() {
        this.entries.length = 0;
        this.parseQuery(this.url.query);
      },
      updateURL: function() {
        if (this.url) this.url.update();
      }
    };
    var URLSearchParamsConstructor = function URLSearchParams4() {
      anInstance(this, URLSearchParamsPrototype);
      var init4 = arguments.length > 0 ? arguments[0] : void 0;
      var state = setInternalState(this, new URLSearchParamsState(init4));
      if (!DESCRIPTORS) this.size = state.entries.length;
    };
    var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;
    defineBuiltIns(URLSearchParamsPrototype, {
      // `URLSearchParams.prototype.append` method
      // https://url.spec.whatwg.org/#dom-urlsearchparams-append
      append: function append(name3, value) {
        var state = getInternalParamsState(this);
        validateArgumentsLength(arguments.length, 2);
        push(state.entries, { key: $toString(name3), value: $toString(value) });
        if (!DESCRIPTORS) this.length++;
        state.updateURL();
      },
      // `URLSearchParams.prototype.delete` method
      // https://url.spec.whatwg.org/#dom-urlsearchparams-delete
      "delete": function(name3) {
        var state = getInternalParamsState(this);
        var length = validateArgumentsLength(arguments.length, 1);
        var entries2 = state.entries;
        var key2 = $toString(name3);
        var $value = length < 2 ? void 0 : arguments[1];
        var value = $value === void 0 ? $value : $toString($value);
        var index4 = 0;
        while (index4 < entries2.length) {
          var entry = entries2[index4];
          if (entry.key === key2 && (value === void 0 || entry.value === value)) {
            splice(entries2, index4, 1);
            if (value !== void 0) break;
          } else index4++;
        }
        if (!DESCRIPTORS) this.size = entries2.length;
        state.updateURL();
      },
      // `URLSearchParams.prototype.get` method
      // https://url.spec.whatwg.org/#dom-urlsearchparams-get
      get: function get(name3) {
        var entries2 = getInternalParamsState(this).entries;
        validateArgumentsLength(arguments.length, 1);
        var key2 = $toString(name3);
        var index4 = 0;
        for (; index4 < entries2.length; index4++) {
          if (entries2[index4].key === key2) return entries2[index4].value;
        }
        return null;
      },
      // `URLSearchParams.prototype.getAll` method
      // https://url.spec.whatwg.org/#dom-urlsearchparams-getall
      getAll: function getAll(name3) {
        var entries2 = getInternalParamsState(this).entries;
        validateArgumentsLength(arguments.length, 1);
        var key2 = $toString(name3);
        var result = [];
        var index4 = 0;
        for (; index4 < entries2.length; index4++) {
          if (entries2[index4].key === key2) push(result, entries2[index4].value);
        }
        return result;
      },
      // `URLSearchParams.prototype.has` method
      // https://url.spec.whatwg.org/#dom-urlsearchparams-has
      has: function has3(name3) {
        var entries2 = getInternalParamsState(this).entries;
        var length = validateArgumentsLength(arguments.length, 1);
        var key2 = $toString(name3);
        var $value = length < 2 ? void 0 : arguments[1];
        var value = $value === void 0 ? $value : $toString($value);
        var index4 = 0;
        while (index4 < entries2.length) {
          var entry = entries2[index4++];
          if (entry.key === key2 && (value === void 0 || entry.value === value)) return true;
        }
        return false;
      },
      // `URLSearchParams.prototype.set` method
      // https://url.spec.whatwg.org/#dom-urlsearchparams-set
      set: function set3(name3, value) {
        var state = getInternalParamsState(this);
        validateArgumentsLength(arguments.length, 1);
        var entries2 = state.entries;
        var found2 = false;
        var key2 = $toString(name3);
        var val = $toString(value);
        var index4 = 0;
        var entry;
        for (; index4 < entries2.length; index4++) {
          entry = entries2[index4];
          if (entry.key === key2) {
            if (found2) splice(entries2, index4--, 1);
            else {
              found2 = true;
              entry.value = val;
            }
          }
        }
        if (!found2) push(entries2, { key: key2, value: val });
        if (!DESCRIPTORS) this.size = entries2.length;
        state.updateURL();
      },
      // `URLSearchParams.prototype.sort` method
      // https://url.spec.whatwg.org/#dom-urlsearchparams-sort
      sort: function sort() {
        var state = getInternalParamsState(this);
        arraySort(state.entries, function(a2, b) {
          return a2.key > b.key ? 1 : -1;
        });
        state.updateURL();
      },
      // `URLSearchParams.prototype.forEach` method
      forEach: function forEach(callback) {
        var entries2 = getInternalParamsState(this).entries;
        var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : void 0);
        var index4 = 0;
        var entry;
        while (index4 < entries2.length) {
          entry = entries2[index4++];
          boundFunction(entry.value, entry.key, this);
        }
      },
      // `URLSearchParams.prototype.keys` method
      keys: function keys2() {
        return new URLSearchParamsIterator(this, "keys");
      },
      // `URLSearchParams.prototype.values` method
      values: function values() {
        return new URLSearchParamsIterator(this, "values");
      },
      // `URLSearchParams.prototype.entries` method
      entries: function entries2() {
        return new URLSearchParamsIterator(this, "entries");
      }
    }, { enumerable: true });
    defineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: "entries" });
    defineBuiltIn(URLSearchParamsPrototype, "toString", function toString6() {
      return getInternalParamsState(this).serialize();
    }, { enumerable: true });
    if (DESCRIPTORS) defineBuiltInAccessor(URLSearchParamsPrototype, "size", {
      get: function size() {
        return getInternalParamsState(this).entries.length;
      },
      configurable: true,
      enumerable: true
    });
    setToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);
    $2({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {
      URLSearchParams: URLSearchParamsConstructor
    });
    if (!USE_NATIVE_URL && isCallable(Headers3)) {
      headersHas = uncurryThis(HeadersPrototype.has);
      headersSet = uncurryThis(HeadersPrototype.set);
      wrapRequestOptions = function(init4) {
        if (isObject2(init4)) {
          var body3 = init4.body;
          var headers;
          if (classof(body3) === URL_SEARCH_PARAMS) {
            headers = init4.headers ? new Headers3(init4.headers) : new Headers3();
            if (!headersHas(headers, "content-type")) {
              headersSet(headers, "content-type", "application/x-www-form-urlencoded;charset=UTF-8");
            }
            return create3(init4, {
              body: createPropertyDescriptor(0, $toString(body3)),
              headers: createPropertyDescriptor(0, headers)
            });
          }
        }
        return init4;
      };
      if (isCallable(nativeFetch)) {
        $2({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {
          fetch: function fetch3(input3) {
            return nativeFetch(input3, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});
          }
        });
      }
      if (isCallable(NativeRequest)) {
        RequestConstructor = function Request4(input3) {
          anInstance(this, RequestPrototype);
          return new NativeRequest(input3, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});
        };
        RequestPrototype.constructor = RequestConstructor;
        RequestConstructor.prototype = RequestPrototype;
        $2({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {
          Request: RequestConstructor
        });
      }
    }
    var headersHas;
    var headersSet;
    var wrapRequestOptions;
    var RequestConstructor;
    module2.exports = {
      URLSearchParams: URLSearchParamsConstructor,
      getState: getInternalParamsState
    };
  }
});

// ../../node_modules/core-js/modules/web.url.constructor.js
var require_web_url_constructor = __commonJS({
  "../../node_modules/core-js/modules/web.url.constructor.js"() {
    "use strict";
    require_es_string_iterator();
    var $2 = require_export();
    var DESCRIPTORS = require_descriptors();
    var USE_NATIVE_URL = require_url_constructor_detection();
    var global2 = require_global();
    var bind = require_function_bind_context();
    var uncurryThis = require_function_uncurry_this();
    var defineBuiltIn = require_define_built_in();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var anInstance = require_an_instance();
    var hasOwn = require_has_own_property();
    var assign2 = require_object_assign();
    var arrayFrom = require_array_from();
    var arraySlice = require_array_slice_simple();
    var codeAt = require_string_multibyte().codeAt;
    var toASCII = require_string_punycode_to_ascii();
    var $toString = require_to_string();
    var setToStringTag = require_set_to_string_tag();
    var validateArgumentsLength = require_validate_arguments_length();
    var URLSearchParamsModule = require_web_url_search_params_constructor();
    var InternalStateModule = require_internal_state();
    var setInternalState = InternalStateModule.set;
    var getInternalURLState = InternalStateModule.getterFor("URL");
    var URLSearchParams4 = URLSearchParamsModule.URLSearchParams;
    var getInternalSearchParamsState = URLSearchParamsModule.getState;
    var NativeURL = global2.URL;
    var TypeError2 = global2.TypeError;
    var parseInt3 = global2.parseInt;
    var floor = Math.floor;
    var pow = Math.pow;
    var charAt = uncurryThis("".charAt);
    var exec3 = uncurryThis(/./.exec);
    var join19 = uncurryThis([].join);
    var numberToString = uncurryThis(1 .toString);
    var pop = uncurryThis([].pop);
    var push = uncurryThis([].push);
    var replace = uncurryThis("".replace);
    var shift = uncurryThis([].shift);
    var split2 = uncurryThis("".split);
    var stringSlice = uncurryThis("".slice);
    var toLowerCase = uncurryThis("".toLowerCase);
    var unshift = uncurryThis([].unshift);
    var INVALID_AUTHORITY = "Invalid authority";
    var INVALID_SCHEME = "Invalid scheme";
    var INVALID_HOST = "Invalid host";
    var INVALID_PORT = "Invalid port";
    var ALPHA2 = /[a-z]/i;
    var ALPHANUMERIC = /[\d+-.a-z]/i;
    var DIGIT = /\d/;
    var HEX_START = /^0x/i;
    var OCT = /^[0-7]+$/;
    var DEC = /^\d+$/;
    var HEX = /^[\da-f]+$/i;
    var FORBIDDEN_HOST_CODE_POINT = /[\0\t\n\r #%/:<>?@[\\\]^|]/;
    var FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\0\t\n\r #/:<>?@[\\\]^|]/;
    var LEADING_C0_CONTROL_OR_SPACE = /^[\u0000-\u0020]+/;
    var TRAILING_C0_CONTROL_OR_SPACE = /(^|[^\u0000-\u0020])[\u0000-\u0020]+$/;
    var TAB_AND_NEW_LINE = /[\t\n\r]/g;
    var EOF2;
    var parseIPv4 = function(input3) {
      var parts = split2(input3, ".");
      var partsLength, numbers2, index4, part, radix, number2, ipv4;
      if (parts.length && parts[parts.length - 1] == "") {
        parts.length--;
      }
      partsLength = parts.length;
      if (partsLength > 4) return input3;
      numbers2 = [];
      for (index4 = 0; index4 < partsLength; index4++) {
        part = parts[index4];
        if (part == "") return input3;
        radix = 10;
        if (part.length > 1 && charAt(part, 0) == "0") {
          radix = exec3(HEX_START, part) ? 16 : 8;
          part = stringSlice(part, radix == 8 ? 1 : 2);
        }
        if (part === "") {
          number2 = 0;
        } else {
          if (!exec3(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input3;
          number2 = parseInt3(part, radix);
        }
        push(numbers2, number2);
      }
      for (index4 = 0; index4 < partsLength; index4++) {
        number2 = numbers2[index4];
        if (index4 == partsLength - 1) {
          if (number2 >= pow(256, 5 - partsLength)) return null;
        } else if (number2 > 255) return null;
      }
      ipv4 = pop(numbers2);
      for (index4 = 0; index4 < numbers2.length; index4++) {
        ipv4 += numbers2[index4] * pow(256, 3 - index4);
      }
      return ipv4;
    };
    var parseIPv6 = function(input3) {
      var address = [0, 0, 0, 0, 0, 0, 0, 0];
      var pieceIndex = 0;
      var compress = null;
      var pointer = 0;
      var value, length, numbersSeen, ipv4Piece, number2, swaps, swap2;
      var chr = function() {
        return charAt(input3, pointer);
      };
      if (chr() == ":") {
        if (charAt(input3, 1) != ":") return;
        pointer += 2;
        pieceIndex++;
        compress = pieceIndex;
      }
      while (chr()) {
        if (pieceIndex == 8) return;
        if (chr() == ":") {
          if (compress !== null) return;
          pointer++;
          pieceIndex++;
          compress = pieceIndex;
          continue;
        }
        value = length = 0;
        while (length < 4 && exec3(HEX, chr())) {
          value = value * 16 + parseInt3(chr(), 16);
          pointer++;
          length++;
        }
        if (chr() == ".") {
          if (length == 0) return;
          pointer -= length;
          if (pieceIndex > 6) return;
          numbersSeen = 0;
          while (chr()) {
            ipv4Piece = null;
            if (numbersSeen > 0) {
              if (chr() == "." && numbersSeen < 4) pointer++;
              else return;
            }
            if (!exec3(DIGIT, chr())) return;
            while (exec3(DIGIT, chr())) {
              number2 = parseInt3(chr(), 10);
              if (ipv4Piece === null) ipv4Piece = number2;
              else if (ipv4Piece == 0) return;
              else ipv4Piece = ipv4Piece * 10 + number2;
              if (ipv4Piece > 255) return;
              pointer++;
            }
            address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;
            numbersSeen++;
            if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;
          }
          if (numbersSeen != 4) return;
          break;
        } else if (chr() == ":") {
          pointer++;
          if (!chr()) return;
        } else if (chr()) return;
        address[pieceIndex++] = value;
      }
      if (compress !== null) {
        swaps = pieceIndex - compress;
        pieceIndex = 7;
        while (pieceIndex != 0 && swaps > 0) {
          swap2 = address[pieceIndex];
          address[pieceIndex--] = address[compress + swaps - 1];
          address[compress + --swaps] = swap2;
        }
      } else if (pieceIndex != 8) return;
      return address;
    };
    var findLongestZeroSequence = function(ipv6) {
      var maxIndex = null;
      var maxLength = 1;
      var currStart = null;
      var currLength = 0;
      var index4 = 0;
      for (; index4 < 8; index4++) {
        if (ipv6[index4] !== 0) {
          if (currLength > maxLength) {
            maxIndex = currStart;
            maxLength = currLength;
          }
          currStart = null;
          currLength = 0;
        } else {
          if (currStart === null) currStart = index4;
          ++currLength;
        }
      }
      if (currLength > maxLength) {
        maxIndex = currStart;
        maxLength = currLength;
      }
      return maxIndex;
    };
    var serializeHost = function(host) {
      var result, index4, compress, ignore0;
      if (typeof host == "number") {
        result = [];
        for (index4 = 0; index4 < 4; index4++) {
          unshift(result, host % 256);
          host = floor(host / 256);
        }
        return join19(result, ".");
      } else if (typeof host == "object") {
        result = "";
        compress = findLongestZeroSequence(host);
        for (index4 = 0; index4 < 8; index4++) {
          if (ignore0 && host[index4] === 0) continue;
          if (ignore0) ignore0 = false;
          if (compress === index4) {
            result += index4 ? ":" : "::";
            ignore0 = true;
          } else {
            result += numberToString(host[index4], 16);
            if (index4 < 7) result += ":";
          }
        }
        return "[" + result + "]";
      }
      return host;
    };
    var C0ControlPercentEncodeSet = {};
    var fragmentPercentEncodeSet = assign2({}, C0ControlPercentEncodeSet, {
      " ": 1,
      '"': 1,
      "<": 1,
      ">": 1,
      "`": 1
    });
    var pathPercentEncodeSet = assign2({}, fragmentPercentEncodeSet, {
      "#": 1,
      "?": 1,
      "{": 1,
      "}": 1
    });
    var userinfoPercentEncodeSet = assign2({}, pathPercentEncodeSet, {
      "/": 1,
      ":": 1,
      ";": 1,
      "=": 1,
      "@": 1,
      "[": 1,
      "\\": 1,
      "]": 1,
      "^": 1,
      "|": 1
    });
    var percentEncode = function(chr, set3) {
      var code7 = codeAt(chr, 0);
      return code7 > 32 && code7 < 127 && !hasOwn(set3, chr) ? chr : encodeURIComponent(chr);
    };
    var specialSchemes = {
      ftp: 21,
      file: null,
      http: 80,
      https: 443,
      ws: 80,
      wss: 443
    };
    var isWindowsDriveLetter = function(string2, normalized) {
      var second;
      return string2.length == 2 && exec3(ALPHA2, charAt(string2, 0)) && ((second = charAt(string2, 1)) == ":" || !normalized && second == "|");
    };
    var startsWithWindowsDriveLetter = function(string2) {
      var third;
      return string2.length > 1 && isWindowsDriveLetter(stringSlice(string2, 0, 2)) && (string2.length == 2 || ((third = charAt(string2, 2)) === "/" || third === "\\" || third === "?" || third === "#"));
    };
    var isSingleDot = function(segment) {
      return segment === "." || toLowerCase(segment) === "%2e";
    };
    var isDoubleDot = function(segment) {
      segment = toLowerCase(segment);
      return segment === ".." || segment === "%2e." || segment === ".%2e" || segment === "%2e%2e";
    };
    var SCHEME_START = {};
    var SCHEME = {};
    var NO_SCHEME = {};
    var SPECIAL_RELATIVE_OR_AUTHORITY = {};
    var PATH_OR_AUTHORITY = {};
    var RELATIVE = {};
    var RELATIVE_SLASH = {};
    var SPECIAL_AUTHORITY_SLASHES = {};
    var SPECIAL_AUTHORITY_IGNORE_SLASHES = {};
    var AUTHORITY = {};
    var HOST = {};
    var HOSTNAME = {};
    var PORT = {};
    var FILE = {};
    var FILE_SLASH = {};
    var FILE_HOST = {};
    var PATH_START = {};
    var PATH = {};
    var CANNOT_BE_A_BASE_URL_PATH = {};
    var QUERY = {};
    var FRAGMENT = {};
    var URLState = function(url, isBase, base5) {
      var urlString = $toString(url);
      var baseState, failure, searchParams;
      if (isBase) {
        failure = this.parse(urlString);
        if (failure) throw TypeError2(failure);
        this.searchParams = null;
      } else {
        if (base5 !== void 0) baseState = new URLState(base5, true);
        failure = this.parse(urlString, null, baseState);
        if (failure) throw TypeError2(failure);
        searchParams = getInternalSearchParamsState(new URLSearchParams4());
        searchParams.bindURL(this);
        this.searchParams = searchParams;
      }
    };
    URLState.prototype = {
      type: "URL",
      // https://url.spec.whatwg.org/#url-parsing
      // eslint-disable-next-line max-statements -- TODO
      parse: function(input3, stateOverride, base5) {
        var url = this;
        var state = stateOverride || SCHEME_START;
        var pointer = 0;
        var buffer2 = "";
        var seenAt = false;
        var seenBracket = false;
        var seenPasswordToken = false;
        var codePoints, chr, bufferCodePoints, failure;
        input3 = $toString(input3);
        if (!stateOverride) {
          url.scheme = "";
          url.username = "";
          url.password = "";
          url.host = null;
          url.port = null;
          url.path = [];
          url.query = null;
          url.fragment = null;
          url.cannotBeABaseURL = false;
          input3 = replace(input3, LEADING_C0_CONTROL_OR_SPACE, "");
          input3 = replace(input3, TRAILING_C0_CONTROL_OR_SPACE, "$1");
        }
        input3 = replace(input3, TAB_AND_NEW_LINE, "");
        codePoints = arrayFrom(input3);
        while (pointer <= codePoints.length) {
          chr = codePoints[pointer];
          switch (state) {
            case SCHEME_START:
              if (chr && exec3(ALPHA2, chr)) {
                buffer2 += toLowerCase(chr);
                state = SCHEME;
              } else if (!stateOverride) {
                state = NO_SCHEME;
                continue;
              } else return INVALID_SCHEME;
              break;
            case SCHEME:
              if (chr && (exec3(ALPHANUMERIC, chr) || chr == "+" || chr == "-" || chr == ".")) {
                buffer2 += toLowerCase(chr);
              } else if (chr == ":") {
                if (stateOverride && (url.isSpecial() != hasOwn(specialSchemes, buffer2) || buffer2 == "file" && (url.includesCredentials() || url.port !== null) || url.scheme == "file" && !url.host)) return;
                url.scheme = buffer2;
                if (stateOverride) {
                  if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null;
                  return;
                }
                buffer2 = "";
                if (url.scheme == "file") {
                  state = FILE;
                } else if (url.isSpecial() && base5 && base5.scheme == url.scheme) {
                  state = SPECIAL_RELATIVE_OR_AUTHORITY;
                } else if (url.isSpecial()) {
                  state = SPECIAL_AUTHORITY_SLASHES;
                } else if (codePoints[pointer + 1] == "/") {
                  state = PATH_OR_AUTHORITY;
                  pointer++;
                } else {
                  url.cannotBeABaseURL = true;
                  push(url.path, "");
                  state = CANNOT_BE_A_BASE_URL_PATH;
                }
              } else if (!stateOverride) {
                buffer2 = "";
                state = NO_SCHEME;
                pointer = 0;
                continue;
              } else return INVALID_SCHEME;
              break;
            case NO_SCHEME:
              if (!base5 || base5.cannotBeABaseURL && chr != "#") return INVALID_SCHEME;
              if (base5.cannotBeABaseURL && chr == "#") {
                url.scheme = base5.scheme;
                url.path = arraySlice(base5.path);
                url.query = base5.query;
                url.fragment = "";
                url.cannotBeABaseURL = true;
                state = FRAGMENT;
                break;
              }
              state = base5.scheme == "file" ? FILE : RELATIVE;
              continue;
            case SPECIAL_RELATIVE_OR_AUTHORITY:
              if (chr == "/" && codePoints[pointer + 1] == "/") {
                state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
                pointer++;
              } else {
                state = RELATIVE;
                continue;
              }
              break;
            case PATH_OR_AUTHORITY:
              if (chr == "/") {
                state = AUTHORITY;
                break;
              } else {
                state = PATH;
                continue;
              }
            case RELATIVE:
              url.scheme = base5.scheme;
              if (chr == EOF2) {
                url.username = base5.username;
                url.password = base5.password;
                url.host = base5.host;
                url.port = base5.port;
                url.path = arraySlice(base5.path);
                url.query = base5.query;
              } else if (chr == "/" || chr == "\\" && url.isSpecial()) {
                state = RELATIVE_SLASH;
              } else if (chr == "?") {
                url.username = base5.username;
                url.password = base5.password;
                url.host = base5.host;
                url.port = base5.port;
                url.path = arraySlice(base5.path);
                url.query = "";
                state = QUERY;
              } else if (chr == "#") {
                url.username = base5.username;
                url.password = base5.password;
                url.host = base5.host;
                url.port = base5.port;
                url.path = arraySlice(base5.path);
                url.query = base5.query;
                url.fragment = "";
                state = FRAGMENT;
              } else {
                url.username = base5.username;
                url.password = base5.password;
                url.host = base5.host;
                url.port = base5.port;
                url.path = arraySlice(base5.path);
                url.path.length--;
                state = PATH;
                continue;
              }
              break;
            case RELATIVE_SLASH:
              if (url.isSpecial() && (chr == "/" || chr == "\\")) {
                state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
              } else if (chr == "/") {
                state = AUTHORITY;
              } else {
                url.username = base5.username;
                url.password = base5.password;
                url.host = base5.host;
                url.port = base5.port;
                state = PATH;
                continue;
              }
              break;
            case SPECIAL_AUTHORITY_SLASHES:
              state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
              if (chr != "/" || charAt(buffer2, pointer + 1) != "/") continue;
              pointer++;
              break;
            case SPECIAL_AUTHORITY_IGNORE_SLASHES:
              if (chr != "/" && chr != "\\") {
                state = AUTHORITY;
                continue;
              }
              break;
            case AUTHORITY:
              if (chr == "@") {
                if (seenAt) buffer2 = "%40" + buffer2;
                seenAt = true;
                bufferCodePoints = arrayFrom(buffer2);
                for (var i2 = 0; i2 < bufferCodePoints.length; i2++) {
                  var codePoint = bufferCodePoints[i2];
                  if (codePoint == ":" && !seenPasswordToken) {
                    seenPasswordToken = true;
                    continue;
                  }
                  var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);
                  if (seenPasswordToken) url.password += encodedCodePoints;
                  else url.username += encodedCodePoints;
                }
                buffer2 = "";
              } else if (chr == EOF2 || chr == "/" || chr == "?" || chr == "#" || chr == "\\" && url.isSpecial()) {
                if (seenAt && buffer2 == "") return INVALID_AUTHORITY;
                pointer -= arrayFrom(buffer2).length + 1;
                buffer2 = "";
                state = HOST;
              } else buffer2 += chr;
              break;
            case HOST:
            case HOSTNAME:
              if (stateOverride && url.scheme == "file") {
                state = FILE_HOST;
                continue;
              } else if (chr == ":" && !seenBracket) {
                if (buffer2 == "") return INVALID_HOST;
                failure = url.parseHost(buffer2);
                if (failure) return failure;
                buffer2 = "";
                state = PORT;
                if (stateOverride == HOSTNAME) return;
              } else if (chr == EOF2 || chr == "/" || chr == "?" || chr == "#" || chr == "\\" && url.isSpecial()) {
                if (url.isSpecial() && buffer2 == "") return INVALID_HOST;
                if (stateOverride && buffer2 == "" && (url.includesCredentials() || url.port !== null)) return;
                failure = url.parseHost(buffer2);
                if (failure) return failure;
                buffer2 = "";
                state = PATH_START;
                if (stateOverride) return;
                continue;
              } else {
                if (chr == "[") seenBracket = true;
                else if (chr == "]") seenBracket = false;
                buffer2 += chr;
              }
              break;
            case PORT:
              if (exec3(DIGIT, chr)) {
                buffer2 += chr;
              } else if (chr == EOF2 || chr == "/" || chr == "?" || chr == "#" || chr == "\\" && url.isSpecial() || stateOverride) {
                if (buffer2 != "") {
                  var port = parseInt3(buffer2, 10);
                  if (port > 65535) return INVALID_PORT;
                  url.port = url.isSpecial() && port === specialSchemes[url.scheme] ? null : port;
                  buffer2 = "";
                }
                if (stateOverride) return;
                state = PATH_START;
                continue;
              } else return INVALID_PORT;
              break;
            case FILE:
              url.scheme = "file";
              if (chr == "/" || chr == "\\") state = FILE_SLASH;
              else if (base5 && base5.scheme == "file") {
                if (chr == EOF2) {
                  url.host = base5.host;
                  url.path = arraySlice(base5.path);
                  url.query = base5.query;
                } else if (chr == "?") {
                  url.host = base5.host;
                  url.path = arraySlice(base5.path);
                  url.query = "";
                  state = QUERY;
                } else if (chr == "#") {
                  url.host = base5.host;
                  url.path = arraySlice(base5.path);
                  url.query = base5.query;
                  url.fragment = "";
                  state = FRAGMENT;
                } else {
                  if (!startsWithWindowsDriveLetter(join19(arraySlice(codePoints, pointer), ""))) {
                    url.host = base5.host;
                    url.path = arraySlice(base5.path);
                    url.shortenPath();
                  }
                  state = PATH;
                  continue;
                }
              } else {
                state = PATH;
                continue;
              }
              break;
            case FILE_SLASH:
              if (chr == "/" || chr == "\\") {
                state = FILE_HOST;
                break;
              }
              if (base5 && base5.scheme == "file" && !startsWithWindowsDriveLetter(join19(arraySlice(codePoints, pointer), ""))) {
                if (isWindowsDriveLetter(base5.path[0], true)) push(url.path, base5.path[0]);
                else url.host = base5.host;
              }
              state = PATH;
              continue;
            case FILE_HOST:
              if (chr == EOF2 || chr == "/" || chr == "\\" || chr == "?" || chr == "#") {
                if (!stateOverride && isWindowsDriveLetter(buffer2)) {
                  state = PATH;
                } else if (buffer2 == "") {
                  url.host = "";
                  if (stateOverride) return;
                  state = PATH_START;
                } else {
                  failure = url.parseHost(buffer2);
                  if (failure) return failure;
                  if (url.host == "localhost") url.host = "";
                  if (stateOverride) return;
                  buffer2 = "";
                  state = PATH_START;
                }
                continue;
              } else buffer2 += chr;
              break;
            case PATH_START:
              if (url.isSpecial()) {
                state = PATH;
                if (chr != "/" && chr != "\\") continue;
              } else if (!stateOverride && chr == "?") {
                url.query = "";
                state = QUERY;
              } else if (!stateOverride && chr == "#") {
                url.fragment = "";
                state = FRAGMENT;
              } else if (chr != EOF2) {
                state = PATH;
                if (chr != "/") continue;
              }
              break;
            case PATH:
              if (chr == EOF2 || chr == "/" || chr == "\\" && url.isSpecial() || !stateOverride && (chr == "?" || chr == "#")) {
                if (isDoubleDot(buffer2)) {
                  url.shortenPath();
                  if (chr != "/" && !(chr == "\\" && url.isSpecial())) {
                    push(url.path, "");
                  }
                } else if (isSingleDot(buffer2)) {
                  if (chr != "/" && !(chr == "\\" && url.isSpecial())) {
                    push(url.path, "");
                  }
                } else {
                  if (url.scheme == "file" && !url.path.length && isWindowsDriveLetter(buffer2)) {
                    if (url.host) url.host = "";
                    buffer2 = charAt(buffer2, 0) + ":";
                  }
                  push(url.path, buffer2);
                }
                buffer2 = "";
                if (url.scheme == "file" && (chr == EOF2 || chr == "?" || chr == "#")) {
                  while (url.path.length > 1 && url.path[0] === "") {
                    shift(url.path);
                  }
                }
                if (chr == "?") {
                  url.query = "";
                  state = QUERY;
                } else if (chr == "#") {
                  url.fragment = "";
                  state = FRAGMENT;
                }
              } else {
                buffer2 += percentEncode(chr, pathPercentEncodeSet);
              }
              break;
            case CANNOT_BE_A_BASE_URL_PATH:
              if (chr == "?") {
                url.query = "";
                state = QUERY;
              } else if (chr == "#") {
                url.fragment = "";
                state = FRAGMENT;
              } else if (chr != EOF2) {
                url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);
              }
              break;
            case QUERY:
              if (!stateOverride && chr == "#") {
                url.fragment = "";
                state = FRAGMENT;
              } else if (chr != EOF2) {
                if (chr == "'" && url.isSpecial()) url.query += "%27";
                else if (chr == "#") url.query += "%23";
                else url.query += percentEncode(chr, C0ControlPercentEncodeSet);
              }
              break;
            case FRAGMENT:
              if (chr != EOF2) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);
              break;
          }
          pointer++;
        }
      },
      // https://url.spec.whatwg.org/#host-parsing
      parseHost: function(input3) {
        var result, codePoints, index4;
        if (charAt(input3, 0) == "[") {
          if (charAt(input3, input3.length - 1) != "]") return INVALID_HOST;
          result = parseIPv6(stringSlice(input3, 1, -1));
          if (!result) return INVALID_HOST;
          this.host = result;
        } else if (!this.isSpecial()) {
          if (exec3(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input3)) return INVALID_HOST;
          result = "";
          codePoints = arrayFrom(input3);
          for (index4 = 0; index4 < codePoints.length; index4++) {
            result += percentEncode(codePoints[index4], C0ControlPercentEncodeSet);
          }
          this.host = result;
        } else {
          input3 = toASCII(input3);
          if (exec3(FORBIDDEN_HOST_CODE_POINT, input3)) return INVALID_HOST;
          result = parseIPv4(input3);
          if (result === null) return INVALID_HOST;
          this.host = result;
        }
      },
      // https://url.spec.whatwg.org/#cannot-have-a-username-password-port
      cannotHaveUsernamePasswordPort: function() {
        return !this.host || this.cannotBeABaseURL || this.scheme == "file";
      },
      // https://url.spec.whatwg.org/#include-credentials
      includesCredentials: function() {
        return this.username != "" || this.password != "";
      },
      // https://url.spec.whatwg.org/#is-special
      isSpecial: function() {
        return hasOwn(specialSchemes, this.scheme);
      },
      // https://url.spec.whatwg.org/#shorten-a-urls-path
      shortenPath: function() {
        var path45 = this.path;
        var pathSize = path45.length;
        if (pathSize && (this.scheme != "file" || pathSize != 1 || !isWindowsDriveLetter(path45[0], true))) {
          path45.length--;
        }
      },
      // https://url.spec.whatwg.org/#concept-url-serializer
      serialize: function() {
        var url = this;
        var scheme = url.scheme;
        var username = url.username;
        var password = url.password;
        var host = url.host;
        var port = url.port;
        var path45 = url.path;
        var query = url.query;
        var fragment = url.fragment;
        var output2 = scheme + ":";
        if (host !== null) {
          output2 += "//";
          if (url.includesCredentials()) {
            output2 += username + (password ? ":" + password : "") + "@";
          }
          output2 += serializeHost(host);
          if (port !== null) output2 += ":" + port;
        } else if (scheme == "file") output2 += "//";
        output2 += url.cannotBeABaseURL ? path45[0] : path45.length ? "/" + join19(path45, "/") : "";
        if (query !== null) output2 += "?" + query;
        if (fragment !== null) output2 += "#" + fragment;
        return output2;
      },
      // https://url.spec.whatwg.org/#dom-url-href
      setHref: function(href) {
        var failure = this.parse(href);
        if (failure) throw TypeError2(failure);
        this.searchParams.update();
      },
      // https://url.spec.whatwg.org/#dom-url-origin
      getOrigin: function() {
        var scheme = this.scheme;
        var port = this.port;
        if (scheme == "blob") try {
          return new URLConstructor(scheme.path[0]).origin;
        } catch (error) {
          return "null";
        }
        if (scheme == "file" || !this.isSpecial()) return "null";
        return scheme + "://" + serializeHost(this.host) + (port !== null ? ":" + port : "");
      },
      // https://url.spec.whatwg.org/#dom-url-protocol
      getProtocol: function() {
        return this.scheme + ":";
      },
      setProtocol: function(protocol) {
        this.parse($toString(protocol) + ":", SCHEME_START);
      },
      // https://url.spec.whatwg.org/#dom-url-username
      getUsername: function() {
        return this.username;
      },
      setUsername: function(username) {
        var codePoints = arrayFrom($toString(username));
        if (this.cannotHaveUsernamePasswordPort()) return;
        this.username = "";
        for (var i2 = 0; i2 < codePoints.length; i2++) {
          this.username += percentEncode(codePoints[i2], userinfoPercentEncodeSet);
        }
      },
      // https://url.spec.whatwg.org/#dom-url-password
      getPassword: function() {
        return this.password;
      },
      setPassword: function(password) {
        var codePoints = arrayFrom($toString(password));
        if (this.cannotHaveUsernamePasswordPort()) return;
        this.password = "";
        for (var i2 = 0; i2 < codePoints.length; i2++) {
          this.password += percentEncode(codePoints[i2], userinfoPercentEncodeSet);
        }
      },
      // https://url.spec.whatwg.org/#dom-url-host
      getHost: function() {
        var host = this.host;
        var port = this.port;
        return host === null ? "" : port === null ? serializeHost(host) : serializeHost(host) + ":" + port;
      },
      setHost: function(host) {
        if (this.cannotBeABaseURL) return;
        this.parse(host, HOST);
      },
      // https://url.spec.whatwg.org/#dom-url-hostname
      getHostname: function() {
        var host = this.host;
        return host === null ? "" : serializeHost(host);
      },
      setHostname: function(hostname) {
        if (this.cannotBeABaseURL) return;
        this.parse(hostname, HOSTNAME);
      },
      // https://url.spec.whatwg.org/#dom-url-port
      getPort: function() {
        var port = this.port;
        return port === null ? "" : $toString(port);
      },
      setPort: function(port) {
        if (this.cannotHaveUsernamePasswordPort()) return;
        port = $toString(port);
        if (port == "") this.port = null;
        else this.parse(port, PORT);
      },
      // https://url.spec.whatwg.org/#dom-url-pathname
      getPathname: function() {
        var path45 = this.path;
        return this.cannotBeABaseURL ? path45[0] : path45.length ? "/" + join19(path45, "/") : "";
      },
      setPathname: function(pathname) {
        if (this.cannotBeABaseURL) return;
        this.path = [];
        this.parse(pathname, PATH_START);
      },
      // https://url.spec.whatwg.org/#dom-url-search
      getSearch: function() {
        var query = this.query;
        return query ? "?" + query : "";
      },
      setSearch: function(search4) {
        search4 = $toString(search4);
        if (search4 == "") {
          this.query = null;
        } else {
          if ("?" == charAt(search4, 0)) search4 = stringSlice(search4, 1);
          this.query = "";
          this.parse(search4, QUERY);
        }
        this.searchParams.update();
      },
      // https://url.spec.whatwg.org/#dom-url-searchparams
      getSearchParams: function() {
        return this.searchParams.facade;
      },
      // https://url.spec.whatwg.org/#dom-url-hash
      getHash: function() {
        var fragment = this.fragment;
        return fragment ? "#" + fragment : "";
      },
      setHash: function(hash) {
        hash = $toString(hash);
        if (hash == "") {
          this.fragment = null;
          return;
        }
        if ("#" == charAt(hash, 0)) hash = stringSlice(hash, 1);
        this.fragment = "";
        this.parse(hash, FRAGMENT);
      },
      update: function() {
        this.query = this.searchParams.serialize() || null;
      }
    };
    var URLConstructor = function URL4(url) {
      var that = anInstance(this, URLPrototype);
      var base5 = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : void 0;
      var state = setInternalState(that, new URLState(url, false, base5));
      if (!DESCRIPTORS) {
        that.href = state.serialize();
        that.origin = state.getOrigin();
        that.protocol = state.getProtocol();
        that.username = state.getUsername();
        that.password = state.getPassword();
        that.host = state.getHost();
        that.hostname = state.getHostname();
        that.port = state.getPort();
        that.pathname = state.getPathname();
        that.search = state.getSearch();
        that.searchParams = state.getSearchParams();
        that.hash = state.getHash();
      }
    };
    var URLPrototype = URLConstructor.prototype;
    var accessorDescriptor = function(getter, setter) {
      return {
        get: function() {
          return getInternalURLState(this)[getter]();
        },
        set: setter && function(value) {
          return getInternalURLState(this)[setter](value);
        },
        configurable: true,
        enumerable: true
      };
    };
    if (DESCRIPTORS) {
      defineBuiltInAccessor(URLPrototype, "href", accessorDescriptor("serialize", "setHref"));
      defineBuiltInAccessor(URLPrototype, "origin", accessorDescriptor("getOrigin"));
      defineBuiltInAccessor(URLPrototype, "protocol", accessorDescriptor("getProtocol", "setProtocol"));
      defineBuiltInAccessor(URLPrototype, "username", accessorDescriptor("getUsername", "setUsername"));
      defineBuiltInAccessor(URLPrototype, "password", accessorDescriptor("getPassword", "setPassword"));
      defineBuiltInAccessor(URLPrototype, "host", accessorDescriptor("getHost", "setHost"));
      defineBuiltInAccessor(URLPrototype, "hostname", accessorDescriptor("getHostname", "setHostname"));
      defineBuiltInAccessor(URLPrototype, "port", accessorDescriptor("getPort", "setPort"));
      defineBuiltInAccessor(URLPrototype, "pathname", accessorDescriptor("getPathname", "setPathname"));
      defineBuiltInAccessor(URLPrototype, "search", accessorDescriptor("getSearch", "setSearch"));
      defineBuiltInAccessor(URLPrototype, "searchParams", accessorDescriptor("getSearchParams"));
      defineBuiltInAccessor(URLPrototype, "hash", accessorDescriptor("getHash", "setHash"));
    }
    defineBuiltIn(URLPrototype, "toJSON", function toJSON2() {
      return getInternalURLState(this).serialize();
    }, { enumerable: true });
    defineBuiltIn(URLPrototype, "toString", function toString6() {
      return getInternalURLState(this).serialize();
    }, { enumerable: true });
    if (NativeURL) {
      nativeCreateObjectURL = NativeURL.createObjectURL;
      nativeRevokeObjectURL = NativeURL.revokeObjectURL;
      if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, "createObjectURL", bind(nativeCreateObjectURL, NativeURL));
      if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, "revokeObjectURL", bind(nativeRevokeObjectURL, NativeURL));
    }
    var nativeCreateObjectURL;
    var nativeRevokeObjectURL;
    setToStringTag(URLConstructor, "URL");
    $2({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {
      URL: URLConstructor
    });
  }
});

// ../../node_modules/core-js/modules/web.url.js
var require_web_url = __commonJS({
  "../../node_modules/core-js/modules/web.url.js"() {
    require_web_url_constructor();
  }
});

// ../../node_modules/core-js/modules/web.url.can-parse.js
var require_web_url_can_parse = __commonJS({
  "../../node_modules/core-js/modules/web.url.can-parse.js"() {
    var $2 = require_export();
    var getBuiltIn = require_get_built_in();
    var fails = require_fails();
    var validateArgumentsLength = require_validate_arguments_length();
    var toString6 = require_to_string();
    var USE_NATIVE_URL = require_url_constructor_detection();
    var URL4 = getBuiltIn("URL");
    var THROWS_WITHOUT_ARGUMENTS = USE_NATIVE_URL && fails(function() {
      URL4.canParse();
    });
    $2({ target: "URL", stat: true, forced: !THROWS_WITHOUT_ARGUMENTS }, {
      canParse: function canParse(url) {
        var length = validateArgumentsLength(arguments.length, 1);
        var urlString = toString6(url);
        var base5 = length < 2 || arguments[1] === void 0 ? void 0 : toString6(arguments[1]);
        try {
          return !!new URL4(urlString, base5);
        } catch (error) {
          return false;
        }
      }
    });
  }
});

// ../../node_modules/core-js/modules/web.url.to-json.js
var require_web_url_to_json = __commonJS({
  "../../node_modules/core-js/modules/web.url.to-json.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    $2({ target: "URL", proto: true, enumerable: true }, {
      toJSON: function toJSON2() {
        return call(URL.prototype.toString, this);
      }
    });
  }
});

// ../../node_modules/core-js/modules/web.url-search-params.js
var require_web_url_search_params = __commonJS({
  "../../node_modules/core-js/modules/web.url-search-params.js"() {
    require_web_url_search_params_constructor();
  }
});

// ../../node_modules/core-js/modules/web.url-search-params.delete.js
var require_web_url_search_params_delete = __commonJS({
  "../../node_modules/core-js/modules/web.url-search-params.delete.js"() {
    "use strict";
    var defineBuiltIn = require_define_built_in();
    var uncurryThis = require_function_uncurry_this();
    var toString6 = require_to_string();
    var validateArgumentsLength = require_validate_arguments_length();
    var $URLSearchParams = URLSearchParams;
    var URLSearchParamsPrototype = $URLSearchParams.prototype;
    var append = uncurryThis(URLSearchParamsPrototype.append);
    var $delete = uncurryThis(URLSearchParamsPrototype["delete"]);
    var forEach = uncurryThis(URLSearchParamsPrototype.forEach);
    var push = uncurryThis([].push);
    var params = new $URLSearchParams("a=1&a=2");
    params["delete"]("a", 1);
    if (params + "" !== "a=2") {
      defineBuiltIn(URLSearchParamsPrototype, "delete", function(name3) {
        var length = arguments.length;
        var $value = length < 2 ? void 0 : arguments[1];
        if (length && $value === void 0) return $delete(this, name3);
        var entries2 = [];
        forEach(this, function(v, k) {
          push(entries2, { key: k, value: v });
        });
        validateArgumentsLength(length, 1);
        var key2 = toString6(name3);
        var value = toString6($value);
        var index4 = 0;
        var dindex = 0;
        var found2 = false;
        var entriesLength = entries2.length;
        var entry;
        while (index4 < entriesLength) {
          entry = entries2[index4++];
          if (found2 || entry.key === key2) {
            found2 = true;
            $delete(this, entry.key);
          } else dindex++;
        }
        while (dindex < entriesLength) {
          entry = entries2[dindex++];
          if (!(entry.key === key2 && entry.value === value)) append(this, entry.key, entry.value);
        }
      }, { enumerable: true, unsafe: true });
    }
  }
});

// ../../node_modules/core-js/modules/web.url-search-params.has.js
var require_web_url_search_params_has = __commonJS({
  "../../node_modules/core-js/modules/web.url-search-params.has.js"() {
    "use strict";
    var defineBuiltIn = require_define_built_in();
    var uncurryThis = require_function_uncurry_this();
    var toString6 = require_to_string();
    var validateArgumentsLength = require_validate_arguments_length();
    var $URLSearchParams = URLSearchParams;
    var URLSearchParamsPrototype = $URLSearchParams.prototype;
    var getAll = uncurryThis(URLSearchParamsPrototype.getAll);
    var $has = uncurryThis(URLSearchParamsPrototype.has);
    var params = new $URLSearchParams("a=1");
    if (params.has("a", 2)) {
      defineBuiltIn(URLSearchParamsPrototype, "has", function has3(name3) {
        var length = arguments.length;
        var $value = length < 2 ? void 0 : arguments[1];
        if (length && $value === void 0) return $has(this, name3);
        var values = getAll(this, name3);
        validateArgumentsLength(length, 1);
        var value = toString6($value);
        var index4 = 0;
        while (index4 < values.length) {
          if (values[index4++] === value) return true;
        }
        return false;
      }, { enumerable: true, unsafe: true });
    }
  }
});

// ../../node_modules/core-js/modules/web.url-search-params.size.js
var require_web_url_search_params_size = __commonJS({
  "../../node_modules/core-js/modules/web.url-search-params.size.js"() {
    "use strict";
    var DESCRIPTORS = require_descriptors();
    var uncurryThis = require_function_uncurry_this();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var URLSearchParamsPrototype = URLSearchParams.prototype;
    var forEach = uncurryThis(URLSearchParamsPrototype.forEach);
    if (DESCRIPTORS && !("size" in URLSearchParamsPrototype)) {
      defineBuiltInAccessor(URLSearchParamsPrototype, "size", {
        get: function size() {
          var count2 = 0;
          forEach(this, function() {
            count2++;
          });
          return count2;
        },
        configurable: true,
        enumerable: true
      });
    }
  }
});

// ../../node_modules/core-js/stable/index.js
var require_stable = __commonJS({
  "../../node_modules/core-js/stable/index.js"(exports2, module2) {
    require_es_symbol();
    require_es_symbol_description();
    require_es_symbol_async_iterator();
    require_es_symbol_has_instance();
    require_es_symbol_is_concat_spreadable();
    require_es_symbol_iterator();
    require_es_symbol_match();
    require_es_symbol_match_all();
    require_es_symbol_replace();
    require_es_symbol_search();
    require_es_symbol_species();
    require_es_symbol_split();
    require_es_symbol_to_primitive();
    require_es_symbol_to_string_tag();
    require_es_symbol_unscopables();
    require_es_error_cause();
    require_es_error_to_string();
    require_es_aggregate_error();
    require_es_aggregate_error_cause();
    require_es_array_at();
    require_es_array_concat();
    require_es_array_copy_within();
    require_es_array_every();
    require_es_array_fill();
    require_es_array_filter();
    require_es_array_find();
    require_es_array_find_index();
    require_es_array_find_last();
    require_es_array_find_last_index();
    require_es_array_flat();
    require_es_array_flat_map();
    require_es_array_for_each();
    require_es_array_from();
    require_es_array_includes();
    require_es_array_index_of();
    require_es_array_is_array();
    require_es_array_iterator();
    require_es_array_join();
    require_es_array_last_index_of();
    require_es_array_map();
    require_es_array_of();
    require_es_array_push();
    require_es_array_reduce();
    require_es_array_reduce_right();
    require_es_array_reverse();
    require_es_array_slice();
    require_es_array_some();
    require_es_array_sort();
    require_es_array_species();
    require_es_array_splice();
    require_es_array_to_reversed();
    require_es_array_to_sorted();
    require_es_array_to_spliced();
    require_es_array_unscopables_flat();
    require_es_array_unscopables_flat_map();
    require_es_array_unshift();
    require_es_array_with();
    require_es_array_buffer_constructor();
    require_es_array_buffer_is_view();
    require_es_array_buffer_slice();
    require_es_data_view();
    require_es_date_get_year();
    require_es_date_now();
    require_es_date_set_year();
    require_es_date_to_gmt_string();
    require_es_date_to_iso_string();
    require_es_date_to_json();
    require_es_date_to_primitive();
    require_es_date_to_string();
    require_es_escape();
    require_es_function_bind();
    require_es_function_has_instance();
    require_es_function_name();
    require_es_global_this();
    require_es_json_stringify();
    require_es_json_to_string_tag();
    require_es_map();
    require_es_math_acosh();
    require_es_math_asinh();
    require_es_math_atanh();
    require_es_math_cbrt();
    require_es_math_clz32();
    require_es_math_cosh();
    require_es_math_expm1();
    require_es_math_fround();
    require_es_math_hypot();
    require_es_math_imul();
    require_es_math_log10();
    require_es_math_log1p();
    require_es_math_log2();
    require_es_math_sign();
    require_es_math_sinh();
    require_es_math_tanh();
    require_es_math_to_string_tag();
    require_es_math_trunc();
    require_es_number_constructor();
    require_es_number_epsilon();
    require_es_number_is_finite();
    require_es_number_is_integer();
    require_es_number_is_nan();
    require_es_number_is_safe_integer();
    require_es_number_max_safe_integer();
    require_es_number_min_safe_integer();
    require_es_number_parse_float();
    require_es_number_parse_int();
    require_es_number_to_exponential();
    require_es_number_to_fixed();
    require_es_number_to_precision();
    require_es_object_assign();
    require_es_object_create();
    require_es_object_define_getter();
    require_es_object_define_properties();
    require_es_object_define_property();
    require_es_object_define_setter();
    require_es_object_entries();
    require_es_object_freeze();
    require_es_object_from_entries();
    require_es_object_get_own_property_descriptor();
    require_es_object_get_own_property_descriptors();
    require_es_object_get_own_property_names();
    require_es_object_get_prototype_of();
    require_es_object_has_own();
    require_es_object_is();
    require_es_object_is_extensible();
    require_es_object_is_frozen();
    require_es_object_is_sealed();
    require_es_object_keys();
    require_es_object_lookup_getter();
    require_es_object_lookup_setter();
    require_es_object_prevent_extensions();
    require_es_object_proto();
    require_es_object_seal();
    require_es_object_set_prototype_of();
    require_es_object_to_string();
    require_es_object_values();
    require_es_parse_float();
    require_es_parse_int();
    require_es_promise();
    require_es_promise_all_settled();
    require_es_promise_any();
    require_es_promise_finally();
    require_es_reflect_apply();
    require_es_reflect_construct();
    require_es_reflect_define_property();
    require_es_reflect_delete_property();
    require_es_reflect_get();
    require_es_reflect_get_own_property_descriptor();
    require_es_reflect_get_prototype_of();
    require_es_reflect_has();
    require_es_reflect_is_extensible();
    require_es_reflect_own_keys();
    require_es_reflect_prevent_extensions();
    require_es_reflect_set();
    require_es_reflect_set_prototype_of();
    require_es_reflect_to_string_tag();
    require_es_regexp_constructor();
    require_es_regexp_dot_all();
    require_es_regexp_exec();
    require_es_regexp_flags();
    require_es_regexp_sticky();
    require_es_regexp_test();
    require_es_regexp_to_string();
    require_es_set();
    require_es_string_at_alternative();
    require_es_string_code_point_at();
    require_es_string_ends_with();
    require_es_string_from_code_point();
    require_es_string_includes();
    require_es_string_is_well_formed();
    require_es_string_iterator();
    require_es_string_match();
    require_es_string_match_all();
    require_es_string_pad_end();
    require_es_string_pad_start();
    require_es_string_raw();
    require_es_string_repeat();
    require_es_string_replace();
    require_es_string_replace_all();
    require_es_string_search();
    require_es_string_split();
    require_es_string_starts_with();
    require_es_string_substr();
    require_es_string_to_well_formed();
    require_es_string_trim();
    require_es_string_trim_end();
    require_es_string_trim_start();
    require_es_string_anchor();
    require_es_string_big();
    require_es_string_blink();
    require_es_string_bold();
    require_es_string_fixed();
    require_es_string_fontcolor();
    require_es_string_fontsize();
    require_es_string_italics();
    require_es_string_link();
    require_es_string_small();
    require_es_string_strike();
    require_es_string_sub();
    require_es_string_sup();
    require_es_typed_array_float32_array();
    require_es_typed_array_float64_array();
    require_es_typed_array_int8_array();
    require_es_typed_array_int16_array();
    require_es_typed_array_int32_array();
    require_es_typed_array_uint8_array();
    require_es_typed_array_uint8_clamped_array();
    require_es_typed_array_uint16_array();
    require_es_typed_array_uint32_array();
    require_es_typed_array_at();
    require_es_typed_array_copy_within();
    require_es_typed_array_every();
    require_es_typed_array_fill();
    require_es_typed_array_filter();
    require_es_typed_array_find();
    require_es_typed_array_find_index();
    require_es_typed_array_find_last();
    require_es_typed_array_find_last_index();
    require_es_typed_array_for_each();
    require_es_typed_array_from();
    require_es_typed_array_includes();
    require_es_typed_array_index_of();
    require_es_typed_array_iterator();
    require_es_typed_array_join();
    require_es_typed_array_last_index_of();
    require_es_typed_array_map();
    require_es_typed_array_of();
    require_es_typed_array_reduce();
    require_es_typed_array_reduce_right();
    require_es_typed_array_reverse();
    require_es_typed_array_set();
    require_es_typed_array_slice();
    require_es_typed_array_some();
    require_es_typed_array_sort();
    require_es_typed_array_subarray();
    require_es_typed_array_to_locale_string();
    require_es_typed_array_to_reversed();
    require_es_typed_array_to_sorted();
    require_es_typed_array_to_string();
    require_es_typed_array_with();
    require_es_unescape();
    require_es_weak_map();
    require_es_weak_set();
    require_web_atob();
    require_web_btoa();
    require_web_dom_collections_for_each();
    require_web_dom_collections_iterator();
    require_web_dom_exception_constructor();
    require_web_dom_exception_stack();
    require_web_dom_exception_to_string_tag();
    require_web_immediate();
    require_web_queue_microtask();
    require_web_self();
    require_web_structured_clone();
    require_web_timers();
    require_web_url();
    require_web_url_can_parse();
    require_web_url_to_json();
    require_web_url_search_params();
    require_web_url_search_params_delete();
    require_web_url_search_params_has();
    require_web_url_search_params_size();
    module2.exports = require_path();
  }
});

// ../../node_modules/core-js/modules/esnext.object.has-own.js
var require_esnext_object_has_own = __commonJS({
  "../../node_modules/core-js/modules/esnext.object.has-own.js"() {
    require_es_object_has_own();
  }
});

// ../../node_modules/core-js/proposals/accessible-object-hasownproperty.js
var require_accessible_object_hasownproperty = __commonJS({
  "../../node_modules/core-js/proposals/accessible-object-hasownproperty.js"() {
    require_esnext_object_has_own();
  }
});

// ../../node_modules/core-js/modules/esnext.array.find-last.js
var require_esnext_array_find_last = __commonJS({
  "../../node_modules/core-js/modules/esnext.array.find-last.js"() {
    require_es_array_find_last();
  }
});

// ../../node_modules/core-js/modules/esnext.array.find-last-index.js
var require_esnext_array_find_last_index = __commonJS({
  "../../node_modules/core-js/modules/esnext.array.find-last-index.js"() {
    require_es_array_find_last_index();
  }
});

// ../../node_modules/core-js/modules/esnext.typed-array.find-last.js
var require_esnext_typed_array_find_last = __commonJS({
  "../../node_modules/core-js/modules/esnext.typed-array.find-last.js"() {
    require_es_typed_array_find_last();
  }
});

// ../../node_modules/core-js/modules/esnext.typed-array.find-last-index.js
var require_esnext_typed_array_find_last_index = __commonJS({
  "../../node_modules/core-js/modules/esnext.typed-array.find-last-index.js"() {
    require_es_typed_array_find_last_index();
  }
});

// ../../node_modules/core-js/proposals/array-find-from-last.js
var require_array_find_from_last = __commonJS({
  "../../node_modules/core-js/proposals/array-find-from-last.js"() {
    require_esnext_array_find_last();
    require_esnext_array_find_last_index();
    require_esnext_typed_array_find_last();
    require_esnext_typed_array_find_last_index();
  }
});

// ../../node_modules/core-js/modules/esnext.array.to-reversed.js
var require_esnext_array_to_reversed = __commonJS({
  "../../node_modules/core-js/modules/esnext.array.to-reversed.js"() {
    require_es_array_to_reversed();
  }
});

// ../../node_modules/core-js/modules/esnext.array.to-sorted.js
var require_esnext_array_to_sorted = __commonJS({
  "../../node_modules/core-js/modules/esnext.array.to-sorted.js"() {
    require_es_array_to_sorted();
  }
});

// ../../node_modules/core-js/modules/esnext.array.to-spliced.js
var require_esnext_array_to_spliced = __commonJS({
  "../../node_modules/core-js/modules/esnext.array.to-spliced.js"() {
    require_es_array_to_spliced();
  }
});

// ../../node_modules/core-js/modules/esnext.array.with.js
var require_esnext_array_with = __commonJS({
  "../../node_modules/core-js/modules/esnext.array.with.js"() {
    require_es_array_with();
  }
});

// ../../node_modules/core-js/modules/esnext.typed-array.to-reversed.js
var require_esnext_typed_array_to_reversed = __commonJS({
  "../../node_modules/core-js/modules/esnext.typed-array.to-reversed.js"() {
    require_es_typed_array_to_reversed();
  }
});

// ../../node_modules/core-js/modules/esnext.typed-array.to-sorted.js
var require_esnext_typed_array_to_sorted = __commonJS({
  "../../node_modules/core-js/modules/esnext.typed-array.to-sorted.js"() {
    require_es_typed_array_to_sorted();
  }
});

// ../../node_modules/core-js/modules/esnext.typed-array.with.js
var require_esnext_typed_array_with = __commonJS({
  "../../node_modules/core-js/modules/esnext.typed-array.with.js"() {
    require_es_typed_array_with();
  }
});

// ../../node_modules/core-js/proposals/change-array-by-copy-stage-4.js
var require_change_array_by_copy_stage_4 = __commonJS({
  "../../node_modules/core-js/proposals/change-array-by-copy-stage-4.js"() {
    require_esnext_array_to_reversed();
    require_esnext_array_to_sorted();
    require_esnext_array_to_spliced();
    require_esnext_array_with();
    require_esnext_typed_array_to_reversed();
    require_esnext_typed_array_to_sorted();
    require_esnext_typed_array_with();
  }
});

// ../../node_modules/core-js/modules/esnext.global-this.js
var require_esnext_global_this = __commonJS({
  "../../node_modules/core-js/modules/esnext.global-this.js"() {
    require_es_global_this();
  }
});

// ../../node_modules/core-js/proposals/global-this.js
var require_global_this = __commonJS({
  "../../node_modules/core-js/proposals/global-this.js"(exports2, module2) {
    require_esnext_global_this();
    var global2 = require_global();
    module2.exports = global2;
  }
});

// ../../node_modules/core-js/modules/esnext.promise.all-settled.js
var require_esnext_promise_all_settled = __commonJS({
  "../../node_modules/core-js/modules/esnext.promise.all-settled.js"() {
    require_es_promise_all_settled();
  }
});

// ../../node_modules/core-js/proposals/promise-all-settled.js
var require_promise_all_settled = __commonJS({
  "../../node_modules/core-js/proposals/promise-all-settled.js"() {
    require_esnext_promise_all_settled();
  }
});

// ../../node_modules/core-js/modules/esnext.aggregate-error.js
var require_esnext_aggregate_error = __commonJS({
  "../../node_modules/core-js/modules/esnext.aggregate-error.js"() {
    require_es_aggregate_error();
  }
});

// ../../node_modules/core-js/modules/esnext.promise.any.js
var require_esnext_promise_any = __commonJS({
  "../../node_modules/core-js/modules/esnext.promise.any.js"() {
    require_es_promise_any();
  }
});

// ../../node_modules/core-js/proposals/promise-any.js
var require_promise_any = __commonJS({
  "../../node_modules/core-js/proposals/promise-any.js"() {
    require_esnext_aggregate_error();
    require_esnext_promise_any();
  }
});

// ../../node_modules/core-js/modules/esnext.array.at.js
var require_esnext_array_at = __commonJS({
  "../../node_modules/core-js/modules/esnext.array.at.js"() {
    require_es_array_at();
  }
});

// ../../node_modules/core-js/modules/esnext.typed-array.at.js
var require_esnext_typed_array_at = __commonJS({
  "../../node_modules/core-js/modules/esnext.typed-array.at.js"() {
    require_es_typed_array_at();
  }
});

// ../../node_modules/core-js/proposals/relative-indexing-method.js
var require_relative_indexing_method = __commonJS({
  "../../node_modules/core-js/proposals/relative-indexing-method.js"() {
    require_es_string_at_alternative();
    require_esnext_array_at();
    require_esnext_typed_array_at();
  }
});

// ../../node_modules/core-js/modules/esnext.string.match-all.js
var require_esnext_string_match_all = __commonJS({
  "../../node_modules/core-js/modules/esnext.string.match-all.js"() {
    require_es_string_match_all();
  }
});

// ../../node_modules/core-js/proposals/string-match-all.js
var require_string_match_all = __commonJS({
  "../../node_modules/core-js/proposals/string-match-all.js"() {
    require_esnext_string_match_all();
  }
});

// ../../node_modules/core-js/modules/esnext.string.replace-all.js
var require_esnext_string_replace_all = __commonJS({
  "../../node_modules/core-js/modules/esnext.string.replace-all.js"() {
    require_es_string_replace_all();
  }
});

// ../../node_modules/core-js/proposals/string-replace-all-stage-4.js
var require_string_replace_all_stage_4 = __commonJS({
  "../../node_modules/core-js/proposals/string-replace-all-stage-4.js"() {
    require_esnext_string_replace_all();
  }
});

// ../../node_modules/core-js/modules/esnext.string.is-well-formed.js
var require_esnext_string_is_well_formed = __commonJS({
  "../../node_modules/core-js/modules/esnext.string.is-well-formed.js"() {
    require_es_string_is_well_formed();
  }
});

// ../../node_modules/core-js/modules/esnext.string.to-well-formed.js
var require_esnext_string_to_well_formed = __commonJS({
  "../../node_modules/core-js/modules/esnext.string.to-well-formed.js"() {
    require_es_string_to_well_formed();
  }
});

// ../../node_modules/core-js/proposals/well-formed-unicode-strings.js
var require_well_formed_unicode_strings = __commonJS({
  "../../node_modules/core-js/proposals/well-formed-unicode-strings.js"() {
    require_esnext_string_is_well_formed();
    require_esnext_string_to_well_formed();
  }
});

// ../../node_modules/core-js/stage/4.js
var require__ = __commonJS({
  "../../node_modules/core-js/stage/4.js"(exports2, module2) {
    require_accessible_object_hasownproperty();
    require_array_find_from_last();
    require_change_array_by_copy_stage_4();
    require_global_this();
    require_promise_all_settled();
    require_promise_any();
    require_relative_indexing_method();
    require_string_match_all();
    require_string_replace_all_stage_4();
    require_well_formed_unicode_strings();
    var path45 = require_path();
    module2.exports = path45;
  }
});

// ../../node_modules/core-js/internals/async-iterator-prototype.js
var require_async_iterator_prototype = __commonJS({
  "../../node_modules/core-js/internals/async-iterator-prototype.js"(exports2, module2) {
    var global2 = require_global();
    var shared = require_shared_store();
    var isCallable = require_is_callable();
    var create3 = require_object_create();
    var getPrototypeOf2 = require_object_get_prototype_of();
    var defineBuiltIn = require_define_built_in();
    var wellKnownSymbol = require_well_known_symbol();
    var IS_PURE = require_is_pure();
    var USE_FUNCTION_CONSTRUCTOR = "USE_FUNCTION_CONSTRUCTOR";
    var ASYNC_ITERATOR = wellKnownSymbol("asyncIterator");
    var AsyncIterator = global2.AsyncIterator;
    var PassedAsyncIteratorPrototype = shared.AsyncIteratorPrototype;
    var AsyncIteratorPrototype;
    var prototype;
    if (PassedAsyncIteratorPrototype) {
      AsyncIteratorPrototype = PassedAsyncIteratorPrototype;
    } else if (isCallable(AsyncIterator)) {
      AsyncIteratorPrototype = AsyncIterator.prototype;
    } else if (shared[USE_FUNCTION_CONSTRUCTOR] || global2[USE_FUNCTION_CONSTRUCTOR]) {
      try {
        prototype = getPrototypeOf2(getPrototypeOf2(getPrototypeOf2(Function("return async function*(){}()")())));
        if (getPrototypeOf2(prototype) === Object.prototype) AsyncIteratorPrototype = prototype;
      } catch (error) {
      }
    }
    if (!AsyncIteratorPrototype) AsyncIteratorPrototype = {};
    else if (IS_PURE) AsyncIteratorPrototype = create3(AsyncIteratorPrototype);
    if (!isCallable(AsyncIteratorPrototype[ASYNC_ITERATOR])) {
      defineBuiltIn(AsyncIteratorPrototype, ASYNC_ITERATOR, function() {
        return this;
      });
    }
    module2.exports = AsyncIteratorPrototype;
  }
});

// ../../node_modules/core-js/internals/async-from-sync-iterator.js
var require_async_from_sync_iterator = __commonJS({
  "../../node_modules/core-js/internals/async-from-sync-iterator.js"(exports2, module2) {
    "use strict";
    var call = require_function_call();
    var anObject = require_an_object();
    var create3 = require_object_create();
    var getMethod = require_get_method();
    var defineBuiltIns = require_define_built_ins();
    var InternalStateModule = require_internal_state();
    var getBuiltIn = require_get_built_in();
    var AsyncIteratorPrototype = require_async_iterator_prototype();
    var createIterResultObject = require_create_iter_result_object();
    var Promise2 = getBuiltIn("Promise");
    var ASYNC_FROM_SYNC_ITERATOR = "AsyncFromSyncIterator";
    var setInternalState = InternalStateModule.set;
    var getInternalState = InternalStateModule.getterFor(ASYNC_FROM_SYNC_ITERATOR);
    var asyncFromSyncIteratorContinuation = function(result, resolve9, reject) {
      var done = result.done;
      Promise2.resolve(result.value).then(function(value) {
        resolve9(createIterResultObject(value, done));
      }, reject);
    };
    var AsyncFromSyncIterator = function AsyncIterator(iteratorRecord) {
      iteratorRecord.type = ASYNC_FROM_SYNC_ITERATOR;
      setInternalState(this, iteratorRecord);
    };
    AsyncFromSyncIterator.prototype = defineBuiltIns(create3(AsyncIteratorPrototype), {
      next: function next() {
        var state = getInternalState(this);
        return new Promise2(function(resolve9, reject) {
          var result = anObject(call(state.next, state.iterator));
          asyncFromSyncIteratorContinuation(result, resolve9, reject);
        });
      },
      "return": function() {
        var iterator = getInternalState(this).iterator;
        return new Promise2(function(resolve9, reject) {
          var $return = getMethod(iterator, "return");
          if ($return === void 0) return resolve9(createIterResultObject(void 0, true));
          var result = anObject(call($return, iterator));
          asyncFromSyncIteratorContinuation(result, resolve9, reject);
        });
      }
    });
    module2.exports = AsyncFromSyncIterator;
  }
});

// ../../node_modules/core-js/internals/get-iterator-direct.js
var require_get_iterator_direct = __commonJS({
  "../../node_modules/core-js/internals/get-iterator-direct.js"(exports2, module2) {
    module2.exports = function(obj) {
      return {
        iterator: obj,
        next: obj.next,
        done: false
      };
    };
  }
});

// ../../node_modules/core-js/internals/get-async-iterator.js
var require_get_async_iterator = __commonJS({
  "../../node_modules/core-js/internals/get-async-iterator.js"(exports2, module2) {
    var call = require_function_call();
    var AsyncFromSyncIterator = require_async_from_sync_iterator();
    var anObject = require_an_object();
    var getIterator = require_get_iterator();
    var getIteratorDirect = require_get_iterator_direct();
    var getMethod = require_get_method();
    var wellKnownSymbol = require_well_known_symbol();
    var ASYNC_ITERATOR = wellKnownSymbol("asyncIterator");
    module2.exports = function(it, usingIterator) {
      var method = arguments.length < 2 ? getMethod(it, ASYNC_ITERATOR) : usingIterator;
      return method ? anObject(call(method, it)) : new AsyncFromSyncIterator(getIteratorDirect(getIterator(it)));
    };
  }
});

// ../../node_modules/core-js/internals/async-iterator-close.js
var require_async_iterator_close = __commonJS({
  "../../node_modules/core-js/internals/async-iterator-close.js"(exports2, module2) {
    var call = require_function_call();
    var getBuiltIn = require_get_built_in();
    var getMethod = require_get_method();
    module2.exports = function(iterator, method, argument2, reject) {
      try {
        var returnMethod = getMethod(iterator, "return");
        if (returnMethod) {
          return getBuiltIn("Promise").resolve(call(returnMethod, iterator)).then(function() {
            method(argument2);
          }, function(error) {
            reject(error);
          });
        }
      } catch (error2) {
        return reject(error2);
      }
      method(argument2);
    };
  }
});

// ../../node_modules/core-js/internals/async-iterator-iteration.js
var require_async_iterator_iteration = __commonJS({
  "../../node_modules/core-js/internals/async-iterator-iteration.js"(exports2, module2) {
    "use strict";
    var call = require_function_call();
    var aCallable = require_a_callable();
    var anObject = require_an_object();
    var isObject2 = require_is_object();
    var doesNotExceedSafeInteger = require_does_not_exceed_safe_integer();
    var getBuiltIn = require_get_built_in();
    var getIteratorDirect = require_get_iterator_direct();
    var closeAsyncIteration = require_async_iterator_close();
    var createMethod = function(TYPE2) {
      var IS_TO_ARRAY = TYPE2 == 0;
      var IS_FOR_EACH = TYPE2 == 1;
      var IS_EVERY = TYPE2 == 2;
      var IS_SOME = TYPE2 == 3;
      return function(object, fn, target) {
        anObject(object);
        var MAPPING = fn !== void 0;
        if (MAPPING || !IS_TO_ARRAY) aCallable(fn);
        var record = getIteratorDirect(object);
        var Promise2 = getBuiltIn("Promise");
        var iterator = record.iterator;
        var next = record.next;
        var counter = 0;
        return new Promise2(function(resolve9, reject) {
          var ifAbruptCloseAsyncIterator = function(error) {
            closeAsyncIteration(iterator, reject, error, reject);
          };
          var loop = function() {
            try {
              if (MAPPING) try {
                doesNotExceedSafeInteger(counter);
              } catch (error5) {
                ifAbruptCloseAsyncIterator(error5);
              }
              Promise2.resolve(anObject(call(next, iterator))).then(function(step) {
                try {
                  if (anObject(step).done) {
                    if (IS_TO_ARRAY) {
                      target.length = counter;
                      resolve9(target);
                    } else resolve9(IS_SOME ? false : IS_EVERY || void 0);
                  } else {
                    var value = step.value;
                    try {
                      if (MAPPING) {
                        var result = fn(value, counter);
                        var handler = function($result) {
                          if (IS_FOR_EACH) {
                            loop();
                          } else if (IS_EVERY) {
                            $result ? loop() : closeAsyncIteration(iterator, resolve9, false, reject);
                          } else if (IS_TO_ARRAY) {
                            try {
                              target[counter++] = $result;
                              loop();
                            } catch (error4) {
                              ifAbruptCloseAsyncIterator(error4);
                            }
                          } else {
                            $result ? closeAsyncIteration(iterator, resolve9, IS_SOME || value, reject) : loop();
                          }
                        };
                        if (isObject2(result)) Promise2.resolve(result).then(handler, ifAbruptCloseAsyncIterator);
                        else handler(result);
                      } else {
                        target[counter++] = value;
                        loop();
                      }
                    } catch (error3) {
                      ifAbruptCloseAsyncIterator(error3);
                    }
                  }
                } catch (error2) {
                  reject(error2);
                }
              }, reject);
            } catch (error) {
              reject(error);
            }
          };
          loop();
        });
      };
    };
    module2.exports = {
      toArray: createMethod(0),
      forEach: createMethod(1),
      every: createMethod(2),
      some: createMethod(3),
      find: createMethod(4)
    };
  }
});

// ../../node_modules/core-js/internals/array-from-async.js
var require_array_from_async = __commonJS({
  "../../node_modules/core-js/internals/array-from-async.js"(exports2, module2) {
    "use strict";
    var bind = require_function_bind_context();
    var uncurryThis = require_function_uncurry_this();
    var toObject = require_to_object();
    var isConstructor = require_is_constructor();
    var getAsyncIterator = require_get_async_iterator();
    var getIterator = require_get_iterator();
    var getIteratorDirect = require_get_iterator_direct();
    var getIteratorMethod = require_get_iterator_method();
    var getMethod = require_get_method();
    var getVirtual = require_entry_virtual();
    var getBuiltIn = require_get_built_in();
    var wellKnownSymbol = require_well_known_symbol();
    var AsyncFromSyncIterator = require_async_from_sync_iterator();
    var toArray2 = require_async_iterator_iteration().toArray;
    var ASYNC_ITERATOR = wellKnownSymbol("asyncIterator");
    var arrayIterator = uncurryThis(getVirtual("Array").values);
    var arrayIteratorNext = uncurryThis(arrayIterator([]).next);
    var safeArrayIterator = function() {
      return new SafeArrayIterator(this);
    };
    var SafeArrayIterator = function(O) {
      this.iterator = arrayIterator(O);
    };
    SafeArrayIterator.prototype.next = function() {
      return arrayIteratorNext(this.iterator);
    };
    module2.exports = function fromAsync(asyncItems) {
      var C = this;
      var argumentsLength = arguments.length;
      var mapfn = argumentsLength > 1 ? arguments[1] : void 0;
      var thisArg = argumentsLength > 2 ? arguments[2] : void 0;
      return new (getBuiltIn("Promise"))(function(resolve9) {
        var O = toObject(asyncItems);
        if (mapfn !== void 0) mapfn = bind(mapfn, thisArg);
        var usingAsyncIterator = getMethod(O, ASYNC_ITERATOR);
        var usingSyncIterator = usingAsyncIterator ? void 0 : getIteratorMethod(O) || safeArrayIterator;
        var A2 = isConstructor(C) ? new C() : [];
        var iterator = usingAsyncIterator ? getAsyncIterator(O, usingAsyncIterator) : new AsyncFromSyncIterator(getIteratorDirect(getIterator(O, usingSyncIterator)));
        resolve9(toArray2(iterator, mapfn, A2));
      });
    };
  }
});

// ../../node_modules/core-js/modules/esnext.array.from-async.js
var require_esnext_array_from_async = __commonJS({
  "../../node_modules/core-js/modules/esnext.array.from-async.js"() {
    var $2 = require_export();
    var fromAsync = require_array_from_async();
    $2({ target: "Array", stat: true }, {
      fromAsync
    });
  }
});

// ../../node_modules/core-js/proposals/array-from-async-stage-2.js
var require_array_from_async_stage_2 = __commonJS({
  "../../node_modules/core-js/proposals/array-from-async-stage-2.js"() {
    require_esnext_array_from_async();
  }
});

// ../../node_modules/core-js/internals/array-buffer-byte-length.js
var require_array_buffer_byte_length = __commonJS({
  "../../node_modules/core-js/internals/array-buffer-byte-length.js"(exports2, module2) {
    var uncurryThisAccessor = require_function_uncurry_this_accessor();
    var classof = require_classof_raw();
    var $TypeError = TypeError;
    module2.exports = uncurryThisAccessor(ArrayBuffer.prototype, "byteLength", "get") || function(O) {
      if (classof(O) != "ArrayBuffer") throw $TypeError("ArrayBuffer expected");
      return O.byteLength;
    };
  }
});

// ../../node_modules/core-js/internals/array-buffer-is-detached.js
var require_array_buffer_is_detached = __commonJS({
  "../../node_modules/core-js/internals/array-buffer-is-detached.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var arrayBufferByteLength = require_array_buffer_byte_length();
    var slice2 = uncurryThis(ArrayBuffer.prototype.slice);
    module2.exports = function(O) {
      if (arrayBufferByteLength(O) !== 0) return false;
      try {
        slice2(O, 0, 0);
        return false;
      } catch (error) {
        return true;
      }
    };
  }
});

// ../../node_modules/core-js/modules/esnext.array-buffer.detached.js
var require_esnext_array_buffer_detached = __commonJS({
  "../../node_modules/core-js/modules/esnext.array-buffer.detached.js"() {
    "use strict";
    var DESCRIPTORS = require_descriptors();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var isDetached = require_array_buffer_is_detached();
    var ArrayBufferPrototype = ArrayBuffer.prototype;
    if (DESCRIPTORS && !("detached" in ArrayBufferPrototype)) {
      defineBuiltInAccessor(ArrayBufferPrototype, "detached", {
        configurable: true,
        get: function detached() {
          return isDetached(this);
        }
      });
    }
  }
});

// ../../node_modules/core-js/internals/array-buffer-transfer.js
var require_array_buffer_transfer = __commonJS({
  "../../node_modules/core-js/internals/array-buffer-transfer.js"(exports2, module2) {
    var global2 = require_global();
    var uncurryThis = require_function_uncurry_this();
    var uncurryThisAccessor = require_function_uncurry_this_accessor();
    var toIndex = require_to_index();
    var isDetached = require_array_buffer_is_detached();
    var arrayBufferByteLength = require_array_buffer_byte_length();
    var PROPER_TRANSFER = require_structured_clone_proper_transfer();
    var TypeError2 = global2.TypeError;
    var structuredClone2 = global2.structuredClone;
    var ArrayBuffer2 = global2.ArrayBuffer;
    var DataView2 = global2.DataView;
    var min = Math.min;
    var ArrayBufferPrototype = ArrayBuffer2.prototype;
    var DataViewPrototype = DataView2.prototype;
    var slice2 = uncurryThis(ArrayBufferPrototype.slice);
    var isResizable = uncurryThisAccessor(ArrayBufferPrototype, "resizable", "get");
    var maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, "maxByteLength", "get");
    var getInt8 = uncurryThis(DataViewPrototype.getInt8);
    var setInt8 = uncurryThis(DataViewPrototype.setInt8);
    module2.exports = PROPER_TRANSFER && function(arrayBuffer, newLength, preserveResizability) {
      var byteLength2 = arrayBufferByteLength(arrayBuffer);
      var newByteLength = newLength === void 0 ? byteLength2 : toIndex(newLength);
      var fixedLength = !isResizable || !isResizable(arrayBuffer);
      if (isDetached(arrayBuffer)) throw TypeError2("ArrayBuffer is detached");
      var newBuffer = structuredClone2(arrayBuffer, { transfer: [arrayBuffer] });
      if (byteLength2 == newByteLength && (preserveResizability || fixedLength)) return newBuffer;
      if (byteLength2 >= newByteLength && (!preserveResizability || fixedLength)) return slice2(newBuffer, 0, newByteLength);
      var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(newBuffer) } : void 0;
      var newNewBuffer = new ArrayBuffer2(newByteLength, options);
      var a2 = new DataView2(newBuffer);
      var b = new DataView2(newNewBuffer);
      var copyLength = min(newByteLength, byteLength2);
      for (var i2 = 0; i2 < copyLength; i2++) setInt8(b, i2, getInt8(a2, i2));
      return newNewBuffer;
    };
  }
});

// ../../node_modules/core-js/modules/esnext.array-buffer.transfer.js
var require_esnext_array_buffer_transfer = __commonJS({
  "../../node_modules/core-js/modules/esnext.array-buffer.transfer.js"() {
    "use strict";
    var $2 = require_export();
    var $transfer = require_array_buffer_transfer();
    if ($transfer) $2({ target: "ArrayBuffer", proto: true }, {
      transfer: function transfer() {
        return $transfer(this, arguments.length ? arguments[0] : void 0, true);
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.array-buffer.transfer-to-fixed-length.js
var require_esnext_array_buffer_transfer_to_fixed_length = __commonJS({
  "../../node_modules/core-js/modules/esnext.array-buffer.transfer-to-fixed-length.js"() {
    "use strict";
    var $2 = require_export();
    var $transfer = require_array_buffer_transfer();
    if ($transfer) $2({ target: "ArrayBuffer", proto: true }, {
      transferToFixedLength: function transferToFixedLength() {
        return $transfer(this, arguments.length ? arguments[0] : void 0, false);
      }
    });
  }
});

// ../../node_modules/core-js/proposals/array-buffer-transfer.js
var require_array_buffer_transfer2 = __commonJS({
  "../../node_modules/core-js/proposals/array-buffer-transfer.js"() {
    require_esnext_array_buffer_detached();
    require_esnext_array_buffer_transfer();
    require_esnext_array_buffer_transfer_to_fixed_length();
  }
});

// ../../node_modules/core-js/modules/esnext.function.metadata.js
var require_esnext_function_metadata = __commonJS({
  "../../node_modules/core-js/modules/esnext.function.metadata.js"() {
    var wellKnownSymbol = require_well_known_symbol();
    var defineProperty = require_object_define_property().f;
    var METADATA = wellKnownSymbol("metadata");
    var FunctionPrototype = Function.prototype;
    if (FunctionPrototype[METADATA] === void 0) {
      defineProperty(FunctionPrototype, METADATA, {
        value: null
      });
    }
  }
});

// ../../node_modules/core-js/modules/esnext.symbol.metadata.js
var require_esnext_symbol_metadata = __commonJS({
  "../../node_modules/core-js/modules/esnext.symbol.metadata.js"() {
    var defineWellKnownSymbol = require_well_known_symbol_define();
    defineWellKnownSymbol("metadata");
  }
});

// ../../node_modules/core-js/proposals/decorator-metadata-v2.js
var require_decorator_metadata_v2 = __commonJS({
  "../../node_modules/core-js/proposals/decorator-metadata-v2.js"() {
    require_esnext_function_metadata();
    require_esnext_symbol_metadata();
  }
});

// ../../node_modules/core-js/modules/esnext.suppressed-error.constructor.js
var require_esnext_suppressed_error_constructor = __commonJS({
  "../../node_modules/core-js/modules/esnext.suppressed-error.constructor.js"() {
    "use strict";
    var $2 = require_export();
    var isPrototypeOf = require_object_is_prototype_of();
    var getPrototypeOf2 = require_object_get_prototype_of();
    var setPrototypeOf = require_object_set_prototype_of();
    var copyConstructorProperties = require_copy_constructor_properties();
    var create3 = require_object_create();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var createPropertyDescriptor = require_create_property_descriptor();
    var installErrorStack = require_error_stack_install();
    var normalizeStringArgument = require_normalize_string_argument();
    var wellKnownSymbol = require_well_known_symbol();
    var TO_STRING_TAG = wellKnownSymbol("toStringTag");
    var $Error = Error;
    var $SuppressedError = function SuppressedError2(error, suppressed, message) {
      var isInstance = isPrototypeOf(SuppressedErrorPrototype, this);
      var that;
      if (setPrototypeOf) {
        that = setPrototypeOf($Error(), isInstance ? getPrototypeOf2(this) : SuppressedErrorPrototype);
      } else {
        that = isInstance ? this : create3(SuppressedErrorPrototype);
        createNonEnumerableProperty(that, TO_STRING_TAG, "Error");
      }
      if (message !== void 0) createNonEnumerableProperty(that, "message", normalizeStringArgument(message));
      installErrorStack(that, $SuppressedError, that.stack, 1);
      createNonEnumerableProperty(that, "error", error);
      createNonEnumerableProperty(that, "suppressed", suppressed);
      return that;
    };
    if (setPrototypeOf) setPrototypeOf($SuppressedError, $Error);
    else copyConstructorProperties($SuppressedError, $Error, { name: true });
    var SuppressedErrorPrototype = $SuppressedError.prototype = create3($Error.prototype, {
      constructor: createPropertyDescriptor(1, $SuppressedError),
      message: createPropertyDescriptor(1, ""),
      name: createPropertyDescriptor(1, "SuppressedError")
    });
    $2({ global: true, constructor: true, arity: 3 }, {
      SuppressedError: $SuppressedError
    });
  }
});

// ../../node_modules/core-js/internals/add-disposable-resource.js
var require_add_disposable_resource = __commonJS({
  "../../node_modules/core-js/internals/add-disposable-resource.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var bind = require_function_bind_context();
    var anObject = require_an_object();
    var isNullOrUndefined = require_is_null_or_undefined();
    var getMethod = require_get_method();
    var wellKnownSymbol = require_well_known_symbol();
    var ASYNC_DISPOSE = wellKnownSymbol("asyncDispose");
    var DISPOSE = wellKnownSymbol("dispose");
    var push = uncurryThis([].push);
    var getDisposeMethod = function(V, hint) {
      if (hint == "async-dispose") {
        return getMethod(V, ASYNC_DISPOSE) || getMethod(V, DISPOSE);
      }
      return getMethod(V, DISPOSE);
    };
    var createDisposableResource = function(V, hint, method) {
      return bind(method || getDisposeMethod(V, hint), V);
    };
    module2.exports = function(disposable, V, hint, method) {
      var resource;
      if (!method) {
        if (isNullOrUndefined(V)) return;
        resource = createDisposableResource(anObject(V), hint);
      } else {
        resource = createDisposableResource(void 0, hint, method);
      }
      push(disposable.stack, resource);
    };
  }
});

// ../../node_modules/core-js/modules/esnext.disposable-stack.constructor.js
var require_esnext_disposable_stack_constructor = __commonJS({
  "../../node_modules/core-js/modules/esnext.disposable-stack.constructor.js"() {
    "use strict";
    var $2 = require_export();
    var DESCRIPTORS = require_descriptors();
    var getBuiltIn = require_get_built_in();
    var aCallable = require_a_callable();
    var anInstance = require_an_instance();
    var defineBuiltIn = require_define_built_in();
    var defineBuiltIns = require_define_built_ins();
    var defineBuiltInAccessor = require_define_built_in_accessor();
    var wellKnownSymbol = require_well_known_symbol();
    var InternalStateModule = require_internal_state();
    var addDisposableResource = require_add_disposable_resource();
    var SuppressedError2 = getBuiltIn("SuppressedError");
    var $ReferenceError = ReferenceError;
    var DISPOSE = wellKnownSymbol("dispose");
    var TO_STRING_TAG = wellKnownSymbol("toStringTag");
    var DISPOSABLE_STACK = "DisposableStack";
    var setInternalState = InternalStateModule.set;
    var getDisposableStackInternalState = InternalStateModule.getterFor(DISPOSABLE_STACK);
    var HINT = "sync-dispose";
    var DISPOSED = "disposed";
    var PENDING = "pending";
    var getPendingDisposableStackInternalState = function(stack) {
      var internalState = getDisposableStackInternalState(stack);
      if (internalState.state == DISPOSED) throw $ReferenceError(DISPOSABLE_STACK + " already disposed");
      return internalState;
    };
    var $DisposableStack = function DisposableStack() {
      setInternalState(anInstance(this, DisposableStackPrototype), {
        type: DISPOSABLE_STACK,
        state: PENDING,
        stack: []
      });
      if (!DESCRIPTORS) this.disposed = false;
    };
    var DisposableStackPrototype = $DisposableStack.prototype;
    defineBuiltIns(DisposableStackPrototype, {
      dispose: function dispose() {
        var internalState = getDisposableStackInternalState(this);
        if (internalState.state == DISPOSED) return;
        internalState.state = DISPOSED;
        if (!DESCRIPTORS) this.disposed = true;
        var stack = internalState.stack;
        var i2 = stack.length;
        var thrown = false;
        var suppressed;
        while (i2) {
          var disposeMethod = stack[--i2];
          stack[i2] = null;
          try {
            disposeMethod();
          } catch (errorResult) {
            if (thrown) {
              suppressed = new SuppressedError2(errorResult, suppressed);
            } else {
              thrown = true;
              suppressed = errorResult;
            }
          }
        }
        internalState.stack = null;
        if (thrown) throw suppressed;
      },
      use: function use(value) {
        addDisposableResource(getPendingDisposableStackInternalState(this), value, HINT);
        return value;
      },
      adopt: function adopt(value, onDispose) {
        var internalState = getPendingDisposableStackInternalState(this);
        aCallable(onDispose);
        addDisposableResource(internalState, void 0, HINT, function() {
          onDispose(value);
        });
        return value;
      },
      defer: function defer3(onDispose) {
        var internalState = getPendingDisposableStackInternalState(this);
        aCallable(onDispose);
        addDisposableResource(internalState, void 0, HINT, onDispose);
      },
      move: function move() {
        var internalState = getPendingDisposableStackInternalState(this);
        var newDisposableStack = new $DisposableStack();
        getDisposableStackInternalState(newDisposableStack).stack = internalState.stack;
        internalState.stack = [];
        internalState.state = DISPOSED;
        if (!DESCRIPTORS) this.disposed = true;
        return newDisposableStack;
      }
    });
    if (DESCRIPTORS) defineBuiltInAccessor(DisposableStackPrototype, "disposed", {
      configurable: true,
      get: function disposed() {
        return getDisposableStackInternalState(this).state == DISPOSED;
      }
    });
    defineBuiltIn(DisposableStackPrototype, DISPOSE, DisposableStackPrototype.dispose, { name: "dispose" });
    defineBuiltIn(DisposableStackPrototype, TO_STRING_TAG, DISPOSABLE_STACK, { nonWritable: true });
    $2({ global: true, constructor: true }, {
      DisposableStack: $DisposableStack
    });
  }
});

// ../../node_modules/core-js/modules/esnext.iterator.dispose.js
var require_esnext_iterator_dispose = __commonJS({
  "../../node_modules/core-js/modules/esnext.iterator.dispose.js"() {
    "use strict";
    var call = require_function_call();
    var defineBuiltIn = require_define_built_in();
    var getMethod = require_get_method();
    var hasOwn = require_has_own_property();
    var wellKnownSymbol = require_well_known_symbol();
    var IteratorPrototype = require_iterators_core().IteratorPrototype;
    var DISPOSE = wellKnownSymbol("dispose");
    if (!hasOwn(IteratorPrototype, DISPOSE)) {
      defineBuiltIn(IteratorPrototype, DISPOSE, function() {
        var $return = getMethod(this, "return");
        if ($return) call($return, this);
      });
    }
  }
});

// ../../node_modules/core-js/modules/esnext.symbol.dispose.js
var require_esnext_symbol_dispose = __commonJS({
  "../../node_modules/core-js/modules/esnext.symbol.dispose.js"() {
    var defineWellKnownSymbol = require_well_known_symbol_define();
    defineWellKnownSymbol("dispose");
  }
});

// ../../node_modules/core-js/proposals/explicit-resource-management.js
var require_explicit_resource_management = __commonJS({
  "../../node_modules/core-js/proposals/explicit-resource-management.js"() {
    require_esnext_suppressed_error_constructor();
    require_esnext_disposable_stack_constructor();
    require_esnext_iterator_dispose();
    require_esnext_symbol_dispose();
  }
});

// ../../node_modules/core-js/modules/esnext.iterator.constructor.js
var require_esnext_iterator_constructor = __commonJS({
  "../../node_modules/core-js/modules/esnext.iterator.constructor.js"() {
    "use strict";
    var $2 = require_export();
    var global2 = require_global();
    var anInstance = require_an_instance();
    var isCallable = require_is_callable();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var fails = require_fails();
    var hasOwn = require_has_own_property();
    var wellKnownSymbol = require_well_known_symbol();
    var IteratorPrototype = require_iterators_core().IteratorPrototype;
    var IS_PURE = require_is_pure();
    var TO_STRING_TAG = wellKnownSymbol("toStringTag");
    var NativeIterator = global2.Iterator;
    var FORCED = IS_PURE || !isCallable(NativeIterator) || NativeIterator.prototype !== IteratorPrototype || !fails(function() {
      NativeIterator({});
    });
    var IteratorConstructor = function Iterator() {
      anInstance(this, IteratorPrototype);
    };
    if (!hasOwn(IteratorPrototype, TO_STRING_TAG)) {
      createNonEnumerableProperty(IteratorPrototype, TO_STRING_TAG, "Iterator");
    }
    if (FORCED || !hasOwn(IteratorPrototype, "constructor") || IteratorPrototype.constructor === Object) {
      createNonEnumerableProperty(IteratorPrototype, "constructor", IteratorConstructor);
    }
    IteratorConstructor.prototype = IteratorPrototype;
    $2({ global: true, constructor: true, forced: FORCED }, {
      Iterator: IteratorConstructor
    });
  }
});

// ../../node_modules/core-js/internals/not-a-nan.js
var require_not_a_nan = __commonJS({
  "../../node_modules/core-js/internals/not-a-nan.js"(exports2, module2) {
    var $RangeError = RangeError;
    module2.exports = function(it) {
      if (it === it) return it;
      throw $RangeError("NaN is not allowed");
    };
  }
});

// ../../node_modules/core-js/internals/iterator-create-proxy.js
var require_iterator_create_proxy = __commonJS({
  "../../node_modules/core-js/internals/iterator-create-proxy.js"(exports2, module2) {
    "use strict";
    var call = require_function_call();
    var create3 = require_object_create();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var defineBuiltIns = require_define_built_ins();
    var wellKnownSymbol = require_well_known_symbol();
    var InternalStateModule = require_internal_state();
    var getMethod = require_get_method();
    var IteratorPrototype = require_iterators_core().IteratorPrototype;
    var createIterResultObject = require_create_iter_result_object();
    var iteratorClose = require_iterator_close();
    var TO_STRING_TAG = wellKnownSymbol("toStringTag");
    var ITERATOR_HELPER = "IteratorHelper";
    var WRAP_FOR_VALID_ITERATOR = "WrapForValidIterator";
    var setInternalState = InternalStateModule.set;
    var createIteratorProxyPrototype = function(IS_ITERATOR) {
      var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);
      return defineBuiltIns(create3(IteratorPrototype), {
        next: function next() {
          var state = getInternalState(this);
          if (IS_ITERATOR) return state.nextHandler();
          try {
            var result = state.done ? void 0 : state.nextHandler();
            return createIterResultObject(result, state.done);
          } catch (error) {
            state.done = true;
            throw error;
          }
        },
        "return": function() {
          var state = getInternalState(this);
          var iterator = state.iterator;
          state.done = true;
          if (IS_ITERATOR) {
            var returnMethod = getMethod(iterator, "return");
            return returnMethod ? call(returnMethod, iterator) : createIterResultObject(void 0, true);
          }
          if (state.inner) try {
            iteratorClose(state.inner.iterator, "normal");
          } catch (error) {
            return iteratorClose(iterator, "throw", error);
          }
          iteratorClose(iterator, "normal");
          return createIterResultObject(void 0, true);
        }
      });
    };
    var WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);
    var IteratorHelperPrototype = createIteratorProxyPrototype(false);
    createNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, "Iterator Helper");
    module2.exports = function(nextHandler, IS_ITERATOR) {
      var IteratorProxy = function Iterator(record, state) {
        if (state) {
          state.iterator = record.iterator;
          state.next = record.next;
        } else state = record;
        state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;
        state.nextHandler = nextHandler;
        state.counter = 0;
        state.done = false;
        setInternalState(this, state);
      };
      IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;
      return IteratorProxy;
    };
  }
});

// ../../node_modules/core-js/modules/esnext.iterator.drop.js
var require_esnext_iterator_drop = __commonJS({
  "../../node_modules/core-js/modules/esnext.iterator.drop.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var anObject = require_an_object();
    var getIteratorDirect = require_get_iterator_direct();
    var notANaN = require_not_a_nan();
    var toPositiveInteger = require_to_positive_integer();
    var createIteratorProxy = require_iterator_create_proxy();
    var IteratorProxy = createIteratorProxy(function() {
      var iterator = this.iterator;
      var next = this.next;
      var result, done;
      while (this.remaining) {
        this.remaining--;
        result = anObject(call(next, iterator));
        done = this.done = !!result.done;
        if (done) return;
      }
      result = anObject(call(next, iterator));
      done = this.done = !!result.done;
      if (!done) return result.value;
    });
    $2({ target: "Iterator", proto: true, real: true }, {
      drop: function drop(limit) {
        anObject(this);
        var remaining = toPositiveInteger(notANaN(+limit));
        return new IteratorProxy(getIteratorDirect(this), {
          remaining
        });
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.iterator.every.js
var require_esnext_iterator_every = __commonJS({
  "../../node_modules/core-js/modules/esnext.iterator.every.js"() {
    "use strict";
    var $2 = require_export();
    var iterate2 = require_iterate();
    var aCallable = require_a_callable();
    var anObject = require_an_object();
    var getIteratorDirect = require_get_iterator_direct();
    $2({ target: "Iterator", proto: true, real: true }, {
      every: function every(predicate) {
        anObject(this);
        aCallable(predicate);
        var record = getIteratorDirect(this);
        var counter = 0;
        return !iterate2(record, function(value, stop) {
          if (!predicate(value, counter++)) return stop();
        }, { IS_RECORD: true, INTERRUPTED: true }).stopped;
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.iterator.filter.js
var require_esnext_iterator_filter = __commonJS({
  "../../node_modules/core-js/modules/esnext.iterator.filter.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var aCallable = require_a_callable();
    var anObject = require_an_object();
    var getIteratorDirect = require_get_iterator_direct();
    var createIteratorProxy = require_iterator_create_proxy();
    var callWithSafeIterationClosing = require_call_with_safe_iteration_closing();
    var IteratorProxy = createIteratorProxy(function() {
      var iterator = this.iterator;
      var predicate = this.predicate;
      var next = this.next;
      var result, done, value;
      while (true) {
        result = anObject(call(next, iterator));
        done = this.done = !!result.done;
        if (done) return;
        value = result.value;
        if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;
      }
    });
    $2({ target: "Iterator", proto: true, real: true }, {
      filter: function filter6(predicate) {
        anObject(this);
        aCallable(predicate);
        return new IteratorProxy(getIteratorDirect(this), {
          predicate
        });
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.iterator.find.js
var require_esnext_iterator_find = __commonJS({
  "../../node_modules/core-js/modules/esnext.iterator.find.js"() {
    "use strict";
    var $2 = require_export();
    var iterate2 = require_iterate();
    var aCallable = require_a_callable();
    var anObject = require_an_object();
    var getIteratorDirect = require_get_iterator_direct();
    $2({ target: "Iterator", proto: true, real: true }, {
      find: function find2(predicate) {
        anObject(this);
        aCallable(predicate);
        var record = getIteratorDirect(this);
        var counter = 0;
        return iterate2(record, function(value, stop) {
          if (predicate(value, counter++)) return stop(value);
        }, { IS_RECORD: true, INTERRUPTED: true }).result;
      }
    });
  }
});

// ../../node_modules/core-js/internals/get-iterator-flattenable.js
var require_get_iterator_flattenable = __commonJS({
  "../../node_modules/core-js/internals/get-iterator-flattenable.js"(exports2, module2) {
    var call = require_function_call();
    var anObject = require_an_object();
    var getIteratorDirect = require_get_iterator_direct();
    var getIteratorMethod = require_get_iterator_method();
    module2.exports = function(obj) {
      var object = anObject(obj);
      var method = getIteratorMethod(object);
      return getIteratorDirect(anObject(method !== void 0 ? call(method, object) : object));
    };
  }
});

// ../../node_modules/core-js/modules/esnext.iterator.flat-map.js
var require_esnext_iterator_flat_map = __commonJS({
  "../../node_modules/core-js/modules/esnext.iterator.flat-map.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var aCallable = require_a_callable();
    var anObject = require_an_object();
    var getIteratorDirect = require_get_iterator_direct();
    var getIteratorFlattenable = require_get_iterator_flattenable();
    var createIteratorProxy = require_iterator_create_proxy();
    var iteratorClose = require_iterator_close();
    var IteratorProxy = createIteratorProxy(function() {
      var iterator = this.iterator;
      var mapper = this.mapper;
      var result, inner2;
      while (true) {
        if (inner2 = this.inner) try {
          result = anObject(call(inner2.next, inner2.iterator));
          if (!result.done) return result.value;
          this.inner = null;
        } catch (error) {
          iteratorClose(iterator, "throw", error);
        }
        result = anObject(call(this.next, iterator));
        if (this.done = !!result.done) return;
        try {
          this.inner = getIteratorFlattenable(mapper(result.value, this.counter++));
        } catch (error) {
          iteratorClose(iterator, "throw", error);
        }
      }
    });
    $2({ target: "Iterator", proto: true, real: true }, {
      flatMap: function flatMap2(mapper) {
        anObject(this);
        aCallable(mapper);
        return new IteratorProxy(getIteratorDirect(this), {
          mapper,
          inner: null
        });
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.iterator.for-each.js
var require_esnext_iterator_for_each = __commonJS({
  "../../node_modules/core-js/modules/esnext.iterator.for-each.js"() {
    "use strict";
    var $2 = require_export();
    var iterate2 = require_iterate();
    var aCallable = require_a_callable();
    var anObject = require_an_object();
    var getIteratorDirect = require_get_iterator_direct();
    $2({ target: "Iterator", proto: true, real: true }, {
      forEach: function forEach(fn) {
        anObject(this);
        aCallable(fn);
        var record = getIteratorDirect(this);
        var counter = 0;
        iterate2(record, function(value) {
          fn(value, counter++);
        }, { IS_RECORD: true });
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.iterator.from.js
var require_esnext_iterator_from = __commonJS({
  "../../node_modules/core-js/modules/esnext.iterator.from.js"() {
    var $2 = require_export();
    var call = require_function_call();
    var toObject = require_to_object();
    var isPrototypeOf = require_object_is_prototype_of();
    var IteratorPrototype = require_iterators_core().IteratorPrototype;
    var createIteratorProxy = require_iterator_create_proxy();
    var getIteratorFlattenable = require_get_iterator_flattenable();
    var IteratorProxy = createIteratorProxy(function() {
      return call(this.next, this.iterator);
    }, true);
    $2({ target: "Iterator", stat: true }, {
      from: function from4(O) {
        var iteratorRecord = getIteratorFlattenable(typeof O == "string" ? toObject(O) : O);
        return isPrototypeOf(IteratorPrototype, iteratorRecord.iterator) ? iteratorRecord.iterator : new IteratorProxy(iteratorRecord);
      }
    });
  }
});

// ../../node_modules/core-js/internals/iterator-map.js
var require_iterator_map = __commonJS({
  "../../node_modules/core-js/internals/iterator-map.js"(exports2, module2) {
    "use strict";
    var call = require_function_call();
    var aCallable = require_a_callable();
    var anObject = require_an_object();
    var getIteratorDirect = require_get_iterator_direct();
    var createIteratorProxy = require_iterator_create_proxy();
    var callWithSafeIterationClosing = require_call_with_safe_iteration_closing();
    var IteratorProxy = createIteratorProxy(function() {
      var iterator = this.iterator;
      var result = anObject(call(this.next, iterator));
      var done = this.done = !!result.done;
      if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);
    });
    module2.exports = function map13(mapper) {
      anObject(this);
      aCallable(mapper);
      return new IteratorProxy(getIteratorDirect(this), {
        mapper
      });
    };
  }
});

// ../../node_modules/core-js/modules/esnext.iterator.map.js
var require_esnext_iterator_map = __commonJS({
  "../../node_modules/core-js/modules/esnext.iterator.map.js"() {
    var $2 = require_export();
    var map13 = require_iterator_map();
    $2({ target: "Iterator", proto: true, real: true }, {
      map: map13
    });
  }
});

// ../../node_modules/core-js/modules/esnext.iterator.reduce.js
var require_esnext_iterator_reduce = __commonJS({
  "../../node_modules/core-js/modules/esnext.iterator.reduce.js"() {
    "use strict";
    var $2 = require_export();
    var iterate2 = require_iterate();
    var aCallable = require_a_callable();
    var anObject = require_an_object();
    var getIteratorDirect = require_get_iterator_direct();
    var $TypeError = TypeError;
    $2({ target: "Iterator", proto: true, real: true }, {
      reduce: function reduce2(reducer) {
        anObject(this);
        aCallable(reducer);
        var record = getIteratorDirect(this);
        var noInitial = arguments.length < 2;
        var accumulator = noInitial ? void 0 : arguments[1];
        var counter = 0;
        iterate2(record, function(value) {
          if (noInitial) {
            noInitial = false;
            accumulator = value;
          } else {
            accumulator = reducer(accumulator, value, counter);
          }
          counter++;
        }, { IS_RECORD: true });
        if (noInitial) throw $TypeError("Reduce of empty iterator with no initial value");
        return accumulator;
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.iterator.some.js
var require_esnext_iterator_some = __commonJS({
  "../../node_modules/core-js/modules/esnext.iterator.some.js"() {
    "use strict";
    var $2 = require_export();
    var iterate2 = require_iterate();
    var aCallable = require_a_callable();
    var anObject = require_an_object();
    var getIteratorDirect = require_get_iterator_direct();
    $2({ target: "Iterator", proto: true, real: true }, {
      some: function some(predicate) {
        anObject(this);
        aCallable(predicate);
        var record = getIteratorDirect(this);
        var counter = 0;
        return iterate2(record, function(value, stop) {
          if (predicate(value, counter++)) return stop();
        }, { IS_RECORD: true, INTERRUPTED: true }).stopped;
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.iterator.take.js
var require_esnext_iterator_take = __commonJS({
  "../../node_modules/core-js/modules/esnext.iterator.take.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var anObject = require_an_object();
    var getIteratorDirect = require_get_iterator_direct();
    var notANaN = require_not_a_nan();
    var toPositiveInteger = require_to_positive_integer();
    var createIteratorProxy = require_iterator_create_proxy();
    var iteratorClose = require_iterator_close();
    var IteratorProxy = createIteratorProxy(function() {
      var iterator = this.iterator;
      if (!this.remaining--) {
        this.done = true;
        return iteratorClose(iterator, "normal", void 0);
      }
      var result = anObject(call(this.next, iterator));
      var done = this.done = !!result.done;
      if (!done) return result.value;
    });
    $2({ target: "Iterator", proto: true, real: true }, {
      take: function take4(limit) {
        anObject(this);
        var remaining = toPositiveInteger(notANaN(+limit));
        return new IteratorProxy(getIteratorDirect(this), {
          remaining
        });
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.iterator.to-array.js
var require_esnext_iterator_to_array = __commonJS({
  "../../node_modules/core-js/modules/esnext.iterator.to-array.js"() {
    "use strict";
    var $2 = require_export();
    var anObject = require_an_object();
    var iterate2 = require_iterate();
    var getIteratorDirect = require_get_iterator_direct();
    var push = [].push;
    $2({ target: "Iterator", proto: true, real: true }, {
      toArray: function toArray2() {
        var result = [];
        iterate2(getIteratorDirect(anObject(this)), push, { that: result, IS_RECORD: true });
        return result;
      }
    });
  }
});

// ../../node_modules/core-js/proposals/iterator-helpers-stage-3-2.js
var require_iterator_helpers_stage_3_2 = __commonJS({
  "../../node_modules/core-js/proposals/iterator-helpers-stage-3-2.js"() {
    require_esnext_iterator_constructor();
    require_esnext_iterator_drop();
    require_esnext_iterator_every();
    require_esnext_iterator_filter();
    require_esnext_iterator_find();
    require_esnext_iterator_flat_map();
    require_esnext_iterator_for_each();
    require_esnext_iterator_from();
    require_esnext_iterator_map();
    require_esnext_iterator_reduce();
    require_esnext_iterator_some();
    require_esnext_iterator_take();
    require_esnext_iterator_to_array();
  }
});

// ../../node_modules/core-js/internals/native-raw-json.js
var require_native_raw_json = __commonJS({
  "../../node_modules/core-js/internals/native-raw-json.js"(exports2, module2) {
    var fails = require_fails();
    module2.exports = !fails(function() {
      var unsafeInt = "9007199254740993";
      var raw2 = JSON.rawJSON(unsafeInt);
      return !JSON.isRawJSON(raw2) || JSON.stringify(raw2) !== unsafeInt;
    });
  }
});

// ../../node_modules/core-js/internals/is-raw-json.js
var require_is_raw_json = __commonJS({
  "../../node_modules/core-js/internals/is-raw-json.js"(exports2, module2) {
    var isObject2 = require_is_object();
    var getInternalState = require_internal_state().get;
    module2.exports = function isRawJSON(O) {
      if (!isObject2(O)) return false;
      var state = getInternalState(O);
      return !!state && state.type === "RawJSON";
    };
  }
});

// ../../node_modules/core-js/modules/esnext.json.is-raw-json.js
var require_esnext_json_is_raw_json = __commonJS({
  "../../node_modules/core-js/modules/esnext.json.is-raw-json.js"() {
    var $2 = require_export();
    var NATIVE_RAW_JSON = require_native_raw_json();
    var isRawJSON = require_is_raw_json();
    $2({ target: "JSON", stat: true, forced: !NATIVE_RAW_JSON }, {
      isRawJSON
    });
  }
});

// ../../node_modules/core-js/internals/parse-json-string.js
var require_parse_json_string = __commonJS({
  "../../node_modules/core-js/internals/parse-json-string.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var hasOwn = require_has_own_property();
    var $SyntaxError = SyntaxError;
    var $parseInt = parseInt;
    var fromCharCode = String.fromCharCode;
    var at = uncurryThis("".charAt);
    var slice2 = uncurryThis("".slice);
    var exec3 = uncurryThis(/./.exec);
    var codePoints = {
      '\\"': '"',
      "\\\\": "\\",
      "\\/": "/",
      "\\b": "\b",
      "\\f": "\f",
      "\\n": "\n",
      "\\r": "\r",
      "\\t": "	"
    };
    var IS_4_HEX_DIGITS = /^[\da-f]{4}$/i;
    var IS_C0_CONTROL_CODE = /^[\u0000-\u001F]$/;
    module2.exports = function(source2, i2) {
      var unterminated = true;
      var value = "";
      while (i2 < source2.length) {
        var chr = at(source2, i2);
        if (chr == "\\") {
          var twoChars = slice2(source2, i2, i2 + 2);
          if (hasOwn(codePoints, twoChars)) {
            value += codePoints[twoChars];
            i2 += 2;
          } else if (twoChars == "\\u") {
            i2 += 2;
            var fourHexDigits = slice2(source2, i2, i2 + 4);
            if (!exec3(IS_4_HEX_DIGITS, fourHexDigits)) throw $SyntaxError("Bad Unicode escape at: " + i2);
            value += fromCharCode($parseInt(fourHexDigits, 16));
            i2 += 4;
          } else throw $SyntaxError('Unknown escape sequence: "' + twoChars + '"');
        } else if (chr == '"') {
          unterminated = false;
          i2++;
          break;
        } else {
          if (exec3(IS_C0_CONTROL_CODE, chr)) throw $SyntaxError("Bad control character in string literal at: " + i2);
          value += chr;
          i2++;
        }
      }
      if (unterminated) throw $SyntaxError("Unterminated string at: " + i2);
      return { value, end: i2 };
    };
  }
});

// ../../node_modules/core-js/modules/esnext.json.parse.js
var require_esnext_json_parse = __commonJS({
  "../../node_modules/core-js/modules/esnext.json.parse.js"() {
    "use strict";
    var $2 = require_export();
    var DESCRIPTORS = require_descriptors();
    var global2 = require_global();
    var getBuiltIn = require_get_built_in();
    var uncurryThis = require_function_uncurry_this();
    var call = require_function_call();
    var isCallable = require_is_callable();
    var isObject2 = require_is_object();
    var isArray2 = require_is_array();
    var hasOwn = require_has_own_property();
    var toString6 = require_to_string();
    var lengthOfArrayLike = require_length_of_array_like();
    var createProperty = require_create_property();
    var fails = require_fails();
    var parseJSONString = require_parse_json_string();
    var NATIVE_SYMBOL = require_symbol_constructor_detection();
    var JSON2 = global2.JSON;
    var Number2 = global2.Number;
    var SyntaxError2 = global2.SyntaxError;
    var nativeParse = JSON2 && JSON2.parse;
    var enumerableOwnProperties = getBuiltIn("Object", "keys");
    var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
    var at = uncurryThis("".charAt);
    var slice2 = uncurryThis("".slice);
    var exec3 = uncurryThis(/./.exec);
    var push = uncurryThis([].push);
    var IS_DIGIT = /^\d$/;
    var IS_NON_ZERO_DIGIT = /^[1-9]$/;
    var IS_NUMBER_START = /^(-|\d)$/;
    var IS_WHITESPACE = /^[\t\n\r ]$/;
    var PRIMITIVE = 0;
    var OBJECT = 1;
    var $parse = function(source2, reviver) {
      source2 = toString6(source2);
      var context = new Context(source2, 0, "");
      var root6 = context.parse();
      var value = root6.value;
      var endIndex = context.skip(IS_WHITESPACE, root6.end);
      if (endIndex < source2.length) {
        throw SyntaxError2('Unexpected extra character: "' + at(source2, endIndex) + '" after the parsed data at: ' + endIndex);
      }
      return isCallable(reviver) ? internalize({ "": value }, "", reviver, root6) : value;
    };
    var internalize = function(holder, name3, reviver, node3) {
      var val = holder[name3];
      var unmodified = node3 && val === node3.value;
      var context = unmodified && typeof node3.source == "string" ? { source: node3.source } : {};
      var elementRecordsLen, keys2, len, i2, P;
      if (isObject2(val)) {
        var nodeIsArray = isArray2(val);
        var nodes = unmodified ? node3.nodes : nodeIsArray ? [] : {};
        if (nodeIsArray) {
          elementRecordsLen = nodes.length;
          len = lengthOfArrayLike(val);
          for (i2 = 0; i2 < len; i2++) {
            internalizeProperty(val, i2, internalize(val, "" + i2, reviver, i2 < elementRecordsLen ? nodes[i2] : void 0));
          }
        } else {
          keys2 = enumerableOwnProperties(val);
          len = lengthOfArrayLike(keys2);
          for (i2 = 0; i2 < len; i2++) {
            P = keys2[i2];
            internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : void 0));
          }
        }
      }
      return call(reviver, holder, name3, val, context);
    };
    var internalizeProperty = function(object, key2, value) {
      if (DESCRIPTORS) {
        var descriptor = getOwnPropertyDescriptor(object, key2);
        if (descriptor && !descriptor.configurable) return;
      }
      if (value === void 0) delete object[key2];
      else createProperty(object, key2, value);
    };
    var Node = function(value, end, source2, nodes) {
      this.value = value;
      this.end = end;
      this.source = source2;
      this.nodes = nodes;
    };
    var Context = function(source2, index4) {
      this.source = source2;
      this.index = index4;
    };
    Context.prototype = {
      fork: function(nextIndex) {
        return new Context(this.source, nextIndex);
      },
      parse: function() {
        var source2 = this.source;
        var i2 = this.skip(IS_WHITESPACE, this.index);
        var fork = this.fork(i2);
        var chr = at(source2, i2);
        if (exec3(IS_NUMBER_START, chr)) return fork.number();
        switch (chr) {
          case "{":
            return fork.object();
          case "[":
            return fork.array();
          case '"':
            return fork.string();
          case "t":
            return fork.keyword(true);
          case "f":
            return fork.keyword(false);
          case "n":
            return fork.keyword(null);
        }
        throw SyntaxError2('Unexpected character: "' + chr + '" at: ' + i2);
      },
      node: function(type2, value, start, end, nodes) {
        return new Node(value, end, type2 ? null : slice2(this.source, start, end), nodes);
      },
      object: function() {
        var source2 = this.source;
        var i2 = this.index + 1;
        var expectKeypair = false;
        var object = {};
        var nodes = {};
        while (i2 < source2.length) {
          i2 = this.until(['"', "}"], i2);
          if (at(source2, i2) == "}" && !expectKeypair) {
            i2++;
            break;
          }
          var result = this.fork(i2).string();
          var key2 = result.value;
          i2 = result.end;
          i2 = this.until([":"], i2) + 1;
          i2 = this.skip(IS_WHITESPACE, i2);
          result = this.fork(i2).parse();
          createProperty(nodes, key2, result);
          createProperty(object, key2, result.value);
          i2 = this.until([",", "}"], result.end);
          var chr = at(source2, i2);
          if (chr == ",") {
            expectKeypair = true;
            i2++;
          } else if (chr == "}") {
            i2++;
            break;
          }
        }
        return this.node(OBJECT, object, this.index, i2, nodes);
      },
      array: function() {
        var source2 = this.source;
        var i2 = this.index + 1;
        var expectElement = false;
        var array = [];
        var nodes = [];
        while (i2 < source2.length) {
          i2 = this.skip(IS_WHITESPACE, i2);
          if (at(source2, i2) == "]" && !expectElement) {
            i2++;
            break;
          }
          var result = this.fork(i2).parse();
          push(nodes, result);
          push(array, result.value);
          i2 = this.until([",", "]"], result.end);
          if (at(source2, i2) == ",") {
            expectElement = true;
            i2++;
          } else if (at(source2, i2) == "]") {
            i2++;
            break;
          }
        }
        return this.node(OBJECT, array, this.index, i2, nodes);
      },
      string: function() {
        var index4 = this.index;
        var parsed = parseJSONString(this.source, this.index + 1);
        return this.node(PRIMITIVE, parsed.value, index4, parsed.end);
      },
      number: function() {
        var source2 = this.source;
        var startIndex = this.index;
        var i2 = startIndex;
        if (at(source2, i2) == "-") i2++;
        if (at(source2, i2) == "0") i2++;
        else if (exec3(IS_NON_ZERO_DIGIT, at(source2, i2))) i2 = this.skip(IS_DIGIT, ++i2);
        else throw SyntaxError2("Failed to parse number at: " + i2);
        if (at(source2, i2) == ".") i2 = this.skip(IS_DIGIT, ++i2);
        if (at(source2, i2) == "e" || at(source2, i2) == "E") {
          i2++;
          if (at(source2, i2) == "+" || at(source2, i2) == "-") i2++;
          var exponentStartIndex = i2;
          i2 = this.skip(IS_DIGIT, i2);
          if (exponentStartIndex == i2) throw SyntaxError2("Failed to parse number's exponent value at: " + i2);
        }
        return this.node(PRIMITIVE, Number2(slice2(source2, startIndex, i2)), startIndex, i2);
      },
      keyword: function(value) {
        var keyword = "" + value;
        var index4 = this.index;
        var endIndex = index4 + keyword.length;
        if (slice2(this.source, index4, endIndex) != keyword) throw SyntaxError2("Failed to parse value at: " + index4);
        return this.node(PRIMITIVE, value, index4, endIndex);
      },
      skip: function(regex2, i2) {
        var source2 = this.source;
        for (; i2 < source2.length; i2++) if (!exec3(regex2, at(source2, i2))) break;
        return i2;
      },
      until: function(array, i2) {
        i2 = this.skip(IS_WHITESPACE, i2);
        var chr = at(this.source, i2);
        for (var j = 0; j < array.length; j++) if (array[j] == chr) return i2;
        throw SyntaxError2('Unexpected character: "' + chr + '" at: ' + i2);
      }
    };
    var NO_SOURCE_SUPPORT = fails(function() {
      var unsafeInt = "9007199254740993";
      var source2;
      nativeParse(unsafeInt, function(key2, value, context) {
        source2 = context.source;
      });
      return source2 !== unsafeInt;
    });
    var PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function() {
      return 1 / nativeParse("-0 	") !== -Infinity;
    });
    $2({ target: "JSON", stat: true, forced: NO_SOURCE_SUPPORT }, {
      parse: function parse16(text7, reviver) {
        return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text7) : $parse(text7, reviver);
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.json.raw-json.js
var require_esnext_json_raw_json = __commonJS({
  "../../node_modules/core-js/modules/esnext.json.raw-json.js"() {
    "use strict";
    var $2 = require_export();
    var FREEZING = require_freezing();
    var NATIVE_RAW_JSON = require_native_raw_json();
    var getBuiltIn = require_get_built_in();
    var call = require_function_call();
    var uncurryThis = require_function_uncurry_this();
    var isCallable = require_is_callable();
    var isRawJSON = require_is_raw_json();
    var toString6 = require_to_string();
    var createProperty = require_create_property();
    var parseJSONString = require_parse_json_string();
    var getReplacerFunction = require_get_json_replacer_function();
    var uid = require_uid();
    var setInternalState = require_internal_state().set;
    var $String = String;
    var $SyntaxError = SyntaxError;
    var parse16 = getBuiltIn("JSON", "parse");
    var $stringify = getBuiltIn("JSON", "stringify");
    var create3 = getBuiltIn("Object", "create");
    var freeze2 = getBuiltIn("Object", "freeze");
    var at = uncurryThis("".charAt);
    var slice2 = uncurryThis("".slice);
    var exec3 = uncurryThis(/./.exec);
    var push = uncurryThis([].push);
    var MARK = uid();
    var MARK_LENGTH = MARK.length;
    var ERROR_MESSAGE = "Unacceptable as raw JSON";
    var IS_WHITESPACE = /^[\t\n\r ]$/;
    $2({ target: "JSON", stat: true, forced: !NATIVE_RAW_JSON }, {
      rawJSON: function rawJSON(text7) {
        var jsonString = toString6(text7);
        if (jsonString == "" || exec3(IS_WHITESPACE, at(jsonString, 0)) || exec3(IS_WHITESPACE, at(jsonString, jsonString.length - 1))) {
          throw $SyntaxError(ERROR_MESSAGE);
        }
        var parsed = parse16(jsonString);
        if (typeof parsed == "object" && parsed !== null) throw $SyntaxError(ERROR_MESSAGE);
        var obj = create3(null);
        setInternalState(obj, { type: "RawJSON" });
        createProperty(obj, "rawJSON", jsonString);
        return FREEZING ? freeze2(obj) : obj;
      }
    });
    if ($stringify) $2({ target: "JSON", stat: true, arity: 3, forced: !NATIVE_RAW_JSON }, {
      stringify: function stringify4(text7, replacer, space3) {
        var replacerFunction = getReplacerFunction(replacer);
        var rawStrings = [];
        var json2 = $stringify(text7, function(key2, value) {
          var v = isCallable(replacerFunction) ? call(replacerFunction, this, $String(key2), value) : value;
          return isRawJSON(v) ? MARK + (push(rawStrings, v.rawJSON) - 1) : v;
        }, space3);
        if (typeof json2 != "string") return json2;
        var result = "";
        var length = json2.length;
        for (var i2 = 0; i2 < length; i2++) {
          var chr = at(json2, i2);
          if (chr == '"') {
            var end = parseJSONString(json2, ++i2).end - 1;
            var string2 = slice2(json2, i2, end);
            result += slice2(string2, 0, MARK_LENGTH) == MARK ? rawStrings[slice2(string2, MARK_LENGTH)] : '"' + string2 + '"';
            i2 = end;
          } else result += chr;
        }
        return result;
      }
    });
  }
});

// ../../node_modules/core-js/proposals/json-parse-with-source.js
var require_json_parse_with_source = __commonJS({
  "../../node_modules/core-js/proposals/json-parse-with-source.js"() {
    require_esnext_json_is_raw_json();
    require_esnext_json_parse();
    require_esnext_json_raw_json();
  }
});

// ../../node_modules/core-js/internals/a-set.js
var require_a_set = __commonJS({
  "../../node_modules/core-js/internals/a-set.js"(exports2, module2) {
    var has3 = require_set_helpers().has;
    module2.exports = function(it) {
      has3(it);
      return it;
    };
  }
});

// ../../node_modules/core-js/internals/iterate-simple.js
var require_iterate_simple = __commonJS({
  "../../node_modules/core-js/internals/iterate-simple.js"(exports2, module2) {
    var call = require_function_call();
    module2.exports = function(iterator, fn, $next) {
      var next = $next || iterator.next;
      var step, result;
      while (!(step = call(next, iterator)).done) {
        result = fn(step.value);
        if (result !== void 0) return result;
      }
    };
  }
});

// ../../node_modules/core-js/internals/set-iterate.js
var require_set_iterate = __commonJS({
  "../../node_modules/core-js/internals/set-iterate.js"(exports2, module2) {
    var uncurryThis = require_function_uncurry_this();
    var iterateSimple = require_iterate_simple();
    var SetHelpers = require_set_helpers();
    var Set2 = SetHelpers.Set;
    var SetPrototype = SetHelpers.proto;
    var forEach = uncurryThis(SetPrototype.forEach);
    var keys2 = uncurryThis(SetPrototype.keys);
    var next = keys2(new Set2()).next;
    module2.exports = function(set3, fn, interruptible) {
      return interruptible ? iterateSimple(keys2(set3), fn, next) : forEach(set3, fn);
    };
  }
});

// ../../node_modules/core-js/internals/set-clone.js
var require_set_clone = __commonJS({
  "../../node_modules/core-js/internals/set-clone.js"(exports2, module2) {
    var SetHelpers = require_set_helpers();
    var iterate2 = require_set_iterate();
    var Set2 = SetHelpers.Set;
    var add2 = SetHelpers.add;
    module2.exports = function(set3) {
      var result = new Set2();
      iterate2(set3, function(it) {
        add2(result, it);
      });
      return result;
    };
  }
});

// ../../node_modules/core-js/internals/set-size.js
var require_set_size = __commonJS({
  "../../node_modules/core-js/internals/set-size.js"(exports2, module2) {
    var uncurryThisAccessor = require_function_uncurry_this_accessor();
    var SetHelpers = require_set_helpers();
    module2.exports = uncurryThisAccessor(SetHelpers.proto, "size", "get") || function(set3) {
      return set3.size;
    };
  }
});

// ../../node_modules/core-js/internals/get-set-record.js
var require_get_set_record = __commonJS({
  "../../node_modules/core-js/internals/get-set-record.js"(exports2, module2) {
    var aCallable = require_a_callable();
    var anObject = require_an_object();
    var call = require_function_call();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var $TypeError = TypeError;
    var max = Math.max;
    var SetRecord = function(set3, size, has3, keys2) {
      this.set = set3;
      this.size = size;
      this.has = has3;
      this.keys = keys2;
    };
    SetRecord.prototype = {
      getIterator: function() {
        return anObject(call(this.keys, this.set));
      },
      includes: function(it) {
        return call(this.has, this.set, it);
      }
    };
    module2.exports = function(obj) {
      anObject(obj);
      var numSize = +obj.size;
      if (numSize != numSize) throw $TypeError("Invalid size");
      return new SetRecord(
        obj,
        max(toIntegerOrInfinity(numSize), 0),
        aCallable(obj.has),
        aCallable(obj.keys)
      );
    };
  }
});

// ../../node_modules/core-js/internals/set-difference.js
var require_set_difference = __commonJS({
  "../../node_modules/core-js/internals/set-difference.js"(exports2, module2) {
    "use strict";
    var aSet = require_a_set();
    var SetHelpers = require_set_helpers();
    var clone3 = require_set_clone();
    var size = require_set_size();
    var getSetRecord = require_get_set_record();
    var iterateSet = require_set_iterate();
    var iterateSimple = require_iterate_simple();
    var has3 = SetHelpers.has;
    var remove3 = SetHelpers.remove;
    module2.exports = function difference(other) {
      var O = aSet(this);
      var otherRec = getSetRecord(other);
      var result = clone3(O);
      if (size(O) <= otherRec.size) iterateSet(O, function(e2) {
        if (otherRec.includes(e2)) remove3(result, e2);
      });
      else iterateSimple(otherRec.getIterator(), function(e2) {
        if (has3(O, e2)) remove3(result, e2);
      });
      return result;
    };
  }
});

// ../../node_modules/core-js/internals/set-method-accept-set-like.js
var require_set_method_accept_set_like = __commonJS({
  "../../node_modules/core-js/internals/set-method-accept-set-like.js"(exports2, module2) {
    var getBuiltIn = require_get_built_in();
    var createEmptySetLike = function() {
      return {
        size: 0,
        has: function() {
          return false;
        },
        keys: function() {
          return {
            next: function() {
              return { done: true };
            }
          };
        }
      };
    };
    module2.exports = function(name3) {
      try {
        var Set2 = getBuiltIn("Set");
        new Set2()[name3](createEmptySetLike());
        return true;
      } catch (error) {
        return false;
      }
    };
  }
});

// ../../node_modules/core-js/modules/esnext.set.difference.v2.js
var require_esnext_set_difference_v2 = __commonJS({
  "../../node_modules/core-js/modules/esnext.set.difference.v2.js"() {
    var $2 = require_export();
    var difference = require_set_difference();
    var setMethodAcceptSetLike = require_set_method_accept_set_like();
    $2({ target: "Set", proto: true, real: true, forced: !setMethodAcceptSetLike("difference") }, {
      difference
    });
  }
});

// ../../node_modules/core-js/internals/set-intersection.js
var require_set_intersection = __commonJS({
  "../../node_modules/core-js/internals/set-intersection.js"(exports2, module2) {
    "use strict";
    var aSet = require_a_set();
    var SetHelpers = require_set_helpers();
    var size = require_set_size();
    var getSetRecord = require_get_set_record();
    var iterateSet = require_set_iterate();
    var iterateSimple = require_iterate_simple();
    var Set2 = SetHelpers.Set;
    var add2 = SetHelpers.add;
    var has3 = SetHelpers.has;
    module2.exports = function intersection(other) {
      var O = aSet(this);
      var otherRec = getSetRecord(other);
      var result = new Set2();
      if (size(O) > otherRec.size) {
        iterateSimple(otherRec.getIterator(), function(e2) {
          if (has3(O, e2)) add2(result, e2);
        });
      } else {
        iterateSet(O, function(e2) {
          if (otherRec.includes(e2)) add2(result, e2);
        });
      }
      return result;
    };
  }
});

// ../../node_modules/core-js/modules/esnext.set.intersection.v2.js
var require_esnext_set_intersection_v2 = __commonJS({
  "../../node_modules/core-js/modules/esnext.set.intersection.v2.js"() {
    var $2 = require_export();
    var fails = require_fails();
    var intersection = require_set_intersection();
    var setMethodAcceptSetLike = require_set_method_accept_set_like();
    var INCORRECT = !setMethodAcceptSetLike("intersection") || fails(function() {
      return Array.from((/* @__PURE__ */ new Set([1, 2, 3])).intersection(/* @__PURE__ */ new Set([3, 2]))) != "3,2";
    });
    $2({ target: "Set", proto: true, real: true, forced: INCORRECT }, {
      intersection
    });
  }
});

// ../../node_modules/core-js/internals/set-is-disjoint-from.js
var require_set_is_disjoint_from = __commonJS({
  "../../node_modules/core-js/internals/set-is-disjoint-from.js"(exports2, module2) {
    "use strict";
    var aSet = require_a_set();
    var has3 = require_set_helpers().has;
    var size = require_set_size();
    var getSetRecord = require_get_set_record();
    var iterateSet = require_set_iterate();
    var iterateSimple = require_iterate_simple();
    var iteratorClose = require_iterator_close();
    module2.exports = function isDisjointFrom(other) {
      var O = aSet(this);
      var otherRec = getSetRecord(other);
      if (size(O) <= otherRec.size) return iterateSet(O, function(e2) {
        if (otherRec.includes(e2)) return false;
      }, true) !== false;
      var iterator = otherRec.getIterator();
      return iterateSimple(iterator, function(e2) {
        if (has3(O, e2)) return iteratorClose(iterator, "normal", false);
      }) !== false;
    };
  }
});

// ../../node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js
var require_esnext_set_is_disjoint_from_v2 = __commonJS({
  "../../node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js"() {
    var $2 = require_export();
    var isDisjointFrom = require_set_is_disjoint_from();
    var setMethodAcceptSetLike = require_set_method_accept_set_like();
    $2({ target: "Set", proto: true, real: true, forced: !setMethodAcceptSetLike("isDisjointFrom") }, {
      isDisjointFrom
    });
  }
});

// ../../node_modules/core-js/internals/set-is-subset-of.js
var require_set_is_subset_of = __commonJS({
  "../../node_modules/core-js/internals/set-is-subset-of.js"(exports2, module2) {
    "use strict";
    var aSet = require_a_set();
    var size = require_set_size();
    var iterate2 = require_set_iterate();
    var getSetRecord = require_get_set_record();
    module2.exports = function isSubsetOf(other) {
      var O = aSet(this);
      var otherRec = getSetRecord(other);
      if (size(O) > otherRec.size) return false;
      return iterate2(O, function(e2) {
        if (!otherRec.includes(e2)) return false;
      }, true) !== false;
    };
  }
});

// ../../node_modules/core-js/modules/esnext.set.is-subset-of.v2.js
var require_esnext_set_is_subset_of_v2 = __commonJS({
  "../../node_modules/core-js/modules/esnext.set.is-subset-of.v2.js"() {
    var $2 = require_export();
    var isSubsetOf = require_set_is_subset_of();
    var setMethodAcceptSetLike = require_set_method_accept_set_like();
    $2({ target: "Set", proto: true, real: true, forced: !setMethodAcceptSetLike("isSubsetOf") }, {
      isSubsetOf
    });
  }
});

// ../../node_modules/core-js/internals/set-is-superset-of.js
var require_set_is_superset_of = __commonJS({
  "../../node_modules/core-js/internals/set-is-superset-of.js"(exports2, module2) {
    "use strict";
    var aSet = require_a_set();
    var has3 = require_set_helpers().has;
    var size = require_set_size();
    var getSetRecord = require_get_set_record();
    var iterateSimple = require_iterate_simple();
    var iteratorClose = require_iterator_close();
    module2.exports = function isSupersetOf(other) {
      var O = aSet(this);
      var otherRec = getSetRecord(other);
      if (size(O) < otherRec.size) return false;
      var iterator = otherRec.getIterator();
      return iterateSimple(iterator, function(e2) {
        if (!has3(O, e2)) return iteratorClose(iterator, "normal", false);
      }) !== false;
    };
  }
});

// ../../node_modules/core-js/modules/esnext.set.is-superset-of.v2.js
var require_esnext_set_is_superset_of_v2 = __commonJS({
  "../../node_modules/core-js/modules/esnext.set.is-superset-of.v2.js"() {
    var $2 = require_export();
    var isSupersetOf = require_set_is_superset_of();
    var setMethodAcceptSetLike = require_set_method_accept_set_like();
    $2({ target: "Set", proto: true, real: true, forced: !setMethodAcceptSetLike("isSupersetOf") }, {
      isSupersetOf
    });
  }
});

// ../../node_modules/core-js/internals/set-union.js
var require_set_union = __commonJS({
  "../../node_modules/core-js/internals/set-union.js"(exports2, module2) {
    "use strict";
    var aSet = require_a_set();
    var add2 = require_set_helpers().add;
    var clone3 = require_set_clone();
    var getSetRecord = require_get_set_record();
    var iterateSimple = require_iterate_simple();
    module2.exports = function union(other) {
      var O = aSet(this);
      var keysIter = getSetRecord(other).getIterator();
      var result = clone3(O);
      iterateSimple(keysIter, function(it) {
        add2(result, it);
      });
      return result;
    };
  }
});

// ../../node_modules/core-js/modules/esnext.set.union.v2.js
var require_esnext_set_union_v2 = __commonJS({
  "../../node_modules/core-js/modules/esnext.set.union.v2.js"() {
    var $2 = require_export();
    var union = require_set_union();
    var setMethodAcceptSetLike = require_set_method_accept_set_like();
    $2({ target: "Set", proto: true, real: true, forced: !setMethodAcceptSetLike("union") }, {
      union
    });
  }
});

// ../../node_modules/core-js/internals/set-symmetric-difference.js
var require_set_symmetric_difference = __commonJS({
  "../../node_modules/core-js/internals/set-symmetric-difference.js"(exports2, module2) {
    "use strict";
    var aSet = require_a_set();
    var SetHelpers = require_set_helpers();
    var clone3 = require_set_clone();
    var getSetRecord = require_get_set_record();
    var iterateSimple = require_iterate_simple();
    var add2 = SetHelpers.add;
    var has3 = SetHelpers.has;
    var remove3 = SetHelpers.remove;
    module2.exports = function symmetricDifference(other) {
      var O = aSet(this);
      var keysIter = getSetRecord(other).getIterator();
      var result = clone3(O);
      iterateSimple(keysIter, function(e2) {
        if (has3(O, e2)) remove3(result, e2);
        else add2(result, e2);
      });
      return result;
    };
  }
});

// ../../node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js
var require_esnext_set_symmetric_difference_v2 = __commonJS({
  "../../node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js"() {
    var $2 = require_export();
    var symmetricDifference = require_set_symmetric_difference();
    var setMethodAcceptSetLike = require_set_method_accept_set_like();
    $2({ target: "Set", proto: true, real: true, forced: !setMethodAcceptSetLike("symmetricDifference") }, {
      symmetricDifference
    });
  }
});

// ../../node_modules/core-js/proposals/set-methods-v2.js
var require_set_methods_v2 = __commonJS({
  "../../node_modules/core-js/proposals/set-methods-v2.js"() {
    require_esnext_set_difference_v2();
    require_esnext_set_intersection_v2();
    require_esnext_set_is_disjoint_from_v2();
    require_esnext_set_is_subset_of_v2();
    require_esnext_set_is_superset_of_v2();
    require_esnext_set_union_v2();
    require_esnext_set_symmetric_difference_v2();
  }
});

// ../../node_modules/core-js/internals/array-group.js
var require_array_group = __commonJS({
  "../../node_modules/core-js/internals/array-group.js"(exports2, module2) {
    var bind = require_function_bind_context();
    var uncurryThis = require_function_uncurry_this();
    var IndexedObject = require_indexed_object();
    var toObject = require_to_object();
    var toPropertyKey = require_to_property_key();
    var lengthOfArrayLike = require_length_of_array_like();
    var objectCreate = require_object_create();
    var arrayFromConstructorAndList = require_array_from_constructor_and_list();
    var $Array = Array;
    var push = uncurryThis([].push);
    module2.exports = function($this, callbackfn, that, specificConstructor) {
      var O = toObject($this);
      var self2 = IndexedObject(O);
      var boundFunction = bind(callbackfn, that);
      var target = objectCreate(null);
      var length = lengthOfArrayLike(self2);
      var index4 = 0;
      var Constructor, key2, value;
      for (; length > index4; index4++) {
        value = self2[index4];
        key2 = toPropertyKey(boundFunction(value, index4, O));
        if (key2 in target) push(target[key2], value);
        else target[key2] = [value];
      }
      if (specificConstructor) {
        Constructor = specificConstructor(O);
        if (Constructor !== $Array) {
          for (key2 in target) target[key2] = arrayFromConstructorAndList(Constructor, target[key2]);
        }
      }
      return target;
    };
  }
});

// ../../node_modules/core-js/modules/esnext.array.group-by.js
var require_esnext_array_group_by = __commonJS({
  "../../node_modules/core-js/modules/esnext.array.group-by.js"() {
    "use strict";
    var $2 = require_export();
    var $group = require_array_group();
    var arrayMethodIsStrict = require_array_method_is_strict();
    var addToUnscopables = require_add_to_unscopables();
    $2({ target: "Array", proto: true, forced: !arrayMethodIsStrict("groupBy") }, {
      groupBy: function groupBy(callbackfn) {
        var thisArg = arguments.length > 1 ? arguments[1] : void 0;
        return $group(this, callbackfn, thisArg);
      }
    });
    addToUnscopables("groupBy");
  }
});

// ../../node_modules/core-js/internals/array-group-to-map.js
var require_array_group_to_map = __commonJS({
  "../../node_modules/core-js/internals/array-group-to-map.js"(exports2, module2) {
    "use strict";
    var bind = require_function_bind_context();
    var uncurryThis = require_function_uncurry_this();
    var IndexedObject = require_indexed_object();
    var toObject = require_to_object();
    var lengthOfArrayLike = require_length_of_array_like();
    var MapHelpers = require_map_helpers();
    var Map2 = MapHelpers.Map;
    var mapGet = MapHelpers.get;
    var mapHas = MapHelpers.has;
    var mapSet = MapHelpers.set;
    var push = uncurryThis([].push);
    module2.exports = function groupToMap(callbackfn) {
      var O = toObject(this);
      var self2 = IndexedObject(O);
      var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : void 0);
      var map13 = new Map2();
      var length = lengthOfArrayLike(self2);
      var index4 = 0;
      var key2, value;
      for (; length > index4; index4++) {
        value = self2[index4];
        key2 = boundFunction(value, index4, O);
        if (mapHas(map13, key2)) push(mapGet(map13, key2), value);
        else mapSet(map13, key2, [value]);
      }
      return map13;
    };
  }
});

// ../../node_modules/core-js/modules/esnext.array.group-by-to-map.js
var require_esnext_array_group_by_to_map = __commonJS({
  "../../node_modules/core-js/modules/esnext.array.group-by-to-map.js"() {
    var $2 = require_export();
    var arrayMethodIsStrict = require_array_method_is_strict();
    var addToUnscopables = require_add_to_unscopables();
    var $groupToMap = require_array_group_to_map();
    var IS_PURE = require_is_pure();
    $2({ target: "Array", proto: true, name: "groupToMap", forced: IS_PURE || !arrayMethodIsStrict("groupByToMap") }, {
      groupByToMap: $groupToMap
    });
    addToUnscopables("groupByToMap");
  }
});

// ../../node_modules/core-js/proposals/array-grouping-stage-3.js
var require_array_grouping_stage_3 = __commonJS({
  "../../node_modules/core-js/proposals/array-grouping-stage-3.js"() {
    require_esnext_array_group_by();
    require_esnext_array_group_by_to_map();
  }
});

// ../../node_modules/core-js/modules/esnext.array.group.js
var require_esnext_array_group = __commonJS({
  "../../node_modules/core-js/modules/esnext.array.group.js"() {
    "use strict";
    var $2 = require_export();
    var $group = require_array_group();
    var addToUnscopables = require_add_to_unscopables();
    $2({ target: "Array", proto: true }, {
      group: function group3(callbackfn) {
        var thisArg = arguments.length > 1 ? arguments[1] : void 0;
        return $group(this, callbackfn, thisArg);
      }
    });
    addToUnscopables("group");
  }
});

// ../../node_modules/core-js/modules/esnext.array.group-to-map.js
var require_esnext_array_group_to_map = __commonJS({
  "../../node_modules/core-js/modules/esnext.array.group-to-map.js"() {
    var $2 = require_export();
    var addToUnscopables = require_add_to_unscopables();
    var $groupToMap = require_array_group_to_map();
    var IS_PURE = require_is_pure();
    $2({ target: "Array", proto: true, forced: IS_PURE }, {
      groupToMap: $groupToMap
    });
    addToUnscopables("groupToMap");
  }
});

// ../../node_modules/core-js/proposals/array-grouping-stage-3-2.js
var require_array_grouping_stage_3_2 = __commonJS({
  "../../node_modules/core-js/proposals/array-grouping-stage-3-2.js"() {
    require_esnext_array_group();
    require_esnext_array_group_to_map();
  }
});

// ../../node_modules/core-js/modules/esnext.typed-array.to-spliced.js
var require_esnext_typed_array_to_spliced = __commonJS({
  "../../node_modules/core-js/modules/esnext.typed-array.to-spliced.js"() {
    "use strict";
    var ArrayBufferViewCore = require_array_buffer_view_core();
    var lengthOfArrayLike = require_length_of_array_like();
    var isBigIntArray = require_is_big_int_array();
    var toAbsoluteIndex = require_to_absolute_index();
    var toBigInt = require_to_big_int();
    var toIntegerOrInfinity = require_to_integer_or_infinity();
    var fails = require_fails();
    var aTypedArray = ArrayBufferViewCore.aTypedArray;
    var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
    var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
    var max = Math.max;
    var min = Math.min;
    var PROPER_ORDER = !fails(function() {
      var array = new Int8Array([1]);
      var spliced = array.toSpliced(1, 0, {
        valueOf: function() {
          array[0] = 2;
          return 3;
        }
      });
      return spliced[0] !== 2 || spliced[1] !== 3;
    });
    exportTypedArrayMethod("toSpliced", function toSpliced(start, deleteCount) {
      var O = aTypedArray(this);
      var C = getTypedArrayConstructor(O);
      var len = lengthOfArrayLike(O);
      var actualStart = toAbsoluteIndex(start, len);
      var argumentsLength = arguments.length;
      var k = 0;
      var insertCount, actualDeleteCount, thisIsBigIntArray, convertedItems, value, newLen, A2;
      if (argumentsLength === 0) {
        insertCount = actualDeleteCount = 0;
      } else if (argumentsLength === 1) {
        insertCount = 0;
        actualDeleteCount = len - actualStart;
      } else {
        actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);
        insertCount = argumentsLength - 2;
        if (insertCount) {
          convertedItems = new C(insertCount);
          thisIsBigIntArray = isBigIntArray(convertedItems);
          for (var i2 = 2; i2 < argumentsLength; i2++) {
            value = arguments[i2];
            convertedItems[i2 - 2] = thisIsBigIntArray ? toBigInt(value) : +value;
          }
        }
      }
      newLen = len + insertCount - actualDeleteCount;
      A2 = new C(newLen);
      for (; k < actualStart; k++) A2[k] = O[k];
      for (; k < actualStart + insertCount; k++) A2[k] = convertedItems[k - actualStart];
      for (; k < newLen; k++) A2[k] = O[k + actualDeleteCount - insertCount];
      return A2;
    }, !PROPER_ORDER);
  }
});

// ../../node_modules/core-js/proposals/change-array-by-copy.js
var require_change_array_by_copy = __commonJS({
  "../../node_modules/core-js/proposals/change-array-by-copy.js"() {
    require_esnext_array_to_reversed();
    require_esnext_array_to_sorted();
    require_esnext_array_to_spliced();
    require_esnext_array_with();
    require_esnext_typed_array_to_reversed();
    require_esnext_typed_array_to_sorted();
    require_esnext_typed_array_to_spliced();
    require_esnext_typed_array_with();
  }
});

// ../../node_modules/core-js/modules/esnext.async-iterator.constructor.js
var require_esnext_async_iterator_constructor = __commonJS({
  "../../node_modules/core-js/modules/esnext.async-iterator.constructor.js"() {
    "use strict";
    var $2 = require_export();
    var anInstance = require_an_instance();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var hasOwn = require_has_own_property();
    var wellKnownSymbol = require_well_known_symbol();
    var AsyncIteratorPrototype = require_async_iterator_prototype();
    var IS_PURE = require_is_pure();
    var TO_STRING_TAG = wellKnownSymbol("toStringTag");
    var AsyncIteratorConstructor = function AsyncIterator() {
      anInstance(this, AsyncIteratorPrototype);
    };
    AsyncIteratorConstructor.prototype = AsyncIteratorPrototype;
    if (!hasOwn(AsyncIteratorPrototype, TO_STRING_TAG)) {
      createNonEnumerableProperty(AsyncIteratorPrototype, TO_STRING_TAG, "AsyncIterator");
    }
    if (IS_PURE || !hasOwn(AsyncIteratorPrototype, "constructor") || AsyncIteratorPrototype.constructor === Object) {
      createNonEnumerableProperty(AsyncIteratorPrototype, "constructor", AsyncIteratorConstructor);
    }
    $2({ global: true, constructor: true, forced: IS_PURE }, {
      AsyncIterator: AsyncIteratorConstructor
    });
  }
});

// ../../node_modules/core-js/internals/async-iterator-create-proxy.js
var require_async_iterator_create_proxy = __commonJS({
  "../../node_modules/core-js/internals/async-iterator-create-proxy.js"(exports2, module2) {
    "use strict";
    var call = require_function_call();
    var perform = require_perform();
    var anObject = require_an_object();
    var create3 = require_object_create();
    var createNonEnumerableProperty = require_create_non_enumerable_property();
    var defineBuiltIns = require_define_built_ins();
    var wellKnownSymbol = require_well_known_symbol();
    var InternalStateModule = require_internal_state();
    var getBuiltIn = require_get_built_in();
    var getMethod = require_get_method();
    var AsyncIteratorPrototype = require_async_iterator_prototype();
    var createIterResultObject = require_create_iter_result_object();
    var iteratorClose = require_iterator_close();
    var Promise2 = getBuiltIn("Promise");
    var TO_STRING_TAG = wellKnownSymbol("toStringTag");
    var ASYNC_ITERATOR_HELPER = "AsyncIteratorHelper";
    var WRAP_FOR_VALID_ASYNC_ITERATOR = "WrapForValidAsyncIterator";
    var setInternalState = InternalStateModule.set;
    var createAsyncIteratorProxyPrototype = function(IS_ITERATOR) {
      var IS_GENERATOR = !IS_ITERATOR;
      var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ASYNC_ITERATOR : ASYNC_ITERATOR_HELPER);
      var getStateOrEarlyExit = function(that) {
        var stateCompletion = perform(function() {
          return getInternalState(that);
        });
        var stateError2 = stateCompletion.error;
        var state = stateCompletion.value;
        if (stateError2 || IS_GENERATOR && state.done) {
          return { exit: true, value: stateError2 ? Promise2.reject(state) : Promise2.resolve(createIterResultObject(void 0, true)) };
        }
        return { exit: false, value: state };
      };
      return defineBuiltIns(create3(AsyncIteratorPrototype), {
        next: function next() {
          var stateCompletion = getStateOrEarlyExit(this);
          var state = stateCompletion.value;
          if (stateCompletion.exit) return state;
          var handlerCompletion = perform(function() {
            return anObject(state.nextHandler(Promise2));
          });
          var handlerError = handlerCompletion.error;
          var value = handlerCompletion.value;
          if (handlerError) state.done = true;
          return handlerError ? Promise2.reject(value) : Promise2.resolve(value);
        },
        "return": function() {
          var stateCompletion = getStateOrEarlyExit(this);
          var state = stateCompletion.value;
          if (stateCompletion.exit) return state;
          state.done = true;
          var iterator = state.iterator;
          var returnMethod, result;
          var completion = perform(function() {
            if (state.inner) try {
              iteratorClose(state.inner.iterator, "normal");
            } catch (error) {
              return iteratorClose(iterator, "throw", error);
            }
            return getMethod(iterator, "return");
          });
          returnMethod = result = completion.value;
          if (completion.error) return Promise2.reject(result);
          if (returnMethod === void 0) return Promise2.resolve(createIterResultObject(void 0, true));
          completion = perform(function() {
            return call(returnMethod, iterator);
          });
          result = completion.value;
          if (completion.error) return Promise2.reject(result);
          return IS_ITERATOR ? Promise2.resolve(result) : Promise2.resolve(result).then(function(resolved) {
            anObject(resolved);
            return createIterResultObject(void 0, true);
          });
        }
      });
    };
    var WrapForValidAsyncIteratorPrototype = createAsyncIteratorProxyPrototype(true);
    var AsyncIteratorHelperPrototype = createAsyncIteratorProxyPrototype(false);
    createNonEnumerableProperty(AsyncIteratorHelperPrototype, TO_STRING_TAG, "Async Iterator Helper");
    module2.exports = function(nextHandler, IS_ITERATOR) {
      var AsyncIteratorProxy = function AsyncIterator(record, state) {
        if (state) {
          state.iterator = record.iterator;
          state.next = record.next;
        } else state = record;
        state.type = IS_ITERATOR ? WRAP_FOR_VALID_ASYNC_ITERATOR : ASYNC_ITERATOR_HELPER;
        state.nextHandler = nextHandler;
        state.counter = 0;
        state.done = false;
        setInternalState(this, state);
      };
      AsyncIteratorProxy.prototype = IS_ITERATOR ? WrapForValidAsyncIteratorPrototype : AsyncIteratorHelperPrototype;
      return AsyncIteratorProxy;
    };
  }
});

// ../../node_modules/core-js/modules/esnext.async-iterator.drop.js
var require_esnext_async_iterator_drop = __commonJS({
  "../../node_modules/core-js/modules/esnext.async-iterator.drop.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var anObject = require_an_object();
    var getIteratorDirect = require_get_iterator_direct();
    var notANaN = require_not_a_nan();
    var toPositiveInteger = require_to_positive_integer();
    var createAsyncIteratorProxy = require_async_iterator_create_proxy();
    var createIterResultObject = require_create_iter_result_object();
    var AsyncIteratorProxy = createAsyncIteratorProxy(function(Promise2) {
      var state = this;
      return new Promise2(function(resolve9, reject) {
        var doneAndReject = function(error) {
          state.done = true;
          reject(error);
        };
        var loop = function() {
          try {
            Promise2.resolve(anObject(call(state.next, state.iterator))).then(function(step) {
              try {
                if (anObject(step).done) {
                  state.done = true;
                  resolve9(createIterResultObject(void 0, true));
                } else if (state.remaining) {
                  state.remaining--;
                  loop();
                } else resolve9(createIterResultObject(step.value, false));
              } catch (err) {
                doneAndReject(err);
              }
            }, doneAndReject);
          } catch (error) {
            doneAndReject(error);
          }
        };
        loop();
      });
    });
    $2({ target: "AsyncIterator", proto: true, real: true }, {
      drop: function drop(limit) {
        anObject(this);
        var remaining = toPositiveInteger(notANaN(+limit));
        return new AsyncIteratorProxy(getIteratorDirect(this), {
          remaining
        });
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.async-iterator.every.js
var require_esnext_async_iterator_every = __commonJS({
  "../../node_modules/core-js/modules/esnext.async-iterator.every.js"() {
    "use strict";
    var $2 = require_export();
    var $every = require_async_iterator_iteration().every;
    $2({ target: "AsyncIterator", proto: true, real: true }, {
      every: function every(predicate) {
        return $every(this, predicate);
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.async-iterator.filter.js
var require_esnext_async_iterator_filter = __commonJS({
  "../../node_modules/core-js/modules/esnext.async-iterator.filter.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var aCallable = require_a_callable();
    var anObject = require_an_object();
    var isObject2 = require_is_object();
    var getIteratorDirect = require_get_iterator_direct();
    var createAsyncIteratorProxy = require_async_iterator_create_proxy();
    var createIterResultObject = require_create_iter_result_object();
    var closeAsyncIteration = require_async_iterator_close();
    var AsyncIteratorProxy = createAsyncIteratorProxy(function(Promise2) {
      var state = this;
      var iterator = state.iterator;
      var predicate = state.predicate;
      return new Promise2(function(resolve9, reject) {
        var doneAndReject = function(error) {
          state.done = true;
          reject(error);
        };
        var ifAbruptCloseAsyncIterator = function(error) {
          closeAsyncIteration(iterator, doneAndReject, error, doneAndReject);
        };
        var loop = function() {
          try {
            Promise2.resolve(anObject(call(state.next, iterator))).then(function(step) {
              try {
                if (anObject(step).done) {
                  state.done = true;
                  resolve9(createIterResultObject(void 0, true));
                } else {
                  var value = step.value;
                  try {
                    var result = predicate(value, state.counter++);
                    var handler = function(selected) {
                      selected ? resolve9(createIterResultObject(value, false)) : loop();
                    };
                    if (isObject2(result)) Promise2.resolve(result).then(handler, ifAbruptCloseAsyncIterator);
                    else handler(result);
                  } catch (error3) {
                    ifAbruptCloseAsyncIterator(error3);
                  }
                }
              } catch (error2) {
                doneAndReject(error2);
              }
            }, doneAndReject);
          } catch (error) {
            doneAndReject(error);
          }
        };
        loop();
      });
    });
    $2({ target: "AsyncIterator", proto: true, real: true }, {
      filter: function filter6(predicate) {
        anObject(this);
        aCallable(predicate);
        return new AsyncIteratorProxy(getIteratorDirect(this), {
          predicate
        });
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.async-iterator.find.js
var require_esnext_async_iterator_find = __commonJS({
  "../../node_modules/core-js/modules/esnext.async-iterator.find.js"() {
    "use strict";
    var $2 = require_export();
    var $find = require_async_iterator_iteration().find;
    $2({ target: "AsyncIterator", proto: true, real: true }, {
      find: function find2(predicate) {
        return $find(this, predicate);
      }
    });
  }
});

// ../../node_modules/core-js/internals/get-async-iterator-flattenable.js
var require_get_async_iterator_flattenable = __commonJS({
  "../../node_modules/core-js/internals/get-async-iterator-flattenable.js"(exports2, module2) {
    var call = require_function_call();
    var isCallable = require_is_callable();
    var anObject = require_an_object();
    var getIteratorDirect = require_get_iterator_direct();
    var getIteratorMethod = require_get_iterator_method();
    var getMethod = require_get_method();
    var wellKnownSymbol = require_well_known_symbol();
    var AsyncFromSyncIterator = require_async_from_sync_iterator();
    var ASYNC_ITERATOR = wellKnownSymbol("asyncIterator");
    module2.exports = function from4(obj) {
      var object = anObject(obj);
      var alreadyAsync = true;
      var method = getMethod(object, ASYNC_ITERATOR);
      var iterator;
      if (!isCallable(method)) {
        method = getIteratorMethod(object);
        alreadyAsync = false;
      }
      if (method !== void 0) {
        iterator = call(method, object);
      } else {
        iterator = object;
        alreadyAsync = true;
      }
      anObject(iterator);
      return getIteratorDirect(alreadyAsync ? iterator : new AsyncFromSyncIterator(getIteratorDirect(iterator)));
    };
  }
});

// ../../node_modules/core-js/modules/esnext.async-iterator.flat-map.js
var require_esnext_async_iterator_flat_map = __commonJS({
  "../../node_modules/core-js/modules/esnext.async-iterator.flat-map.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var aCallable = require_a_callable();
    var anObject = require_an_object();
    var isObject2 = require_is_object();
    var getIteratorDirect = require_get_iterator_direct();
    var createAsyncIteratorProxy = require_async_iterator_create_proxy();
    var createIterResultObject = require_create_iter_result_object();
    var getAsyncIteratorFlattenable = require_get_async_iterator_flattenable();
    var closeAsyncIteration = require_async_iterator_close();
    var AsyncIteratorProxy = createAsyncIteratorProxy(function(Promise2) {
      var state = this;
      var iterator = state.iterator;
      var mapper = state.mapper;
      return new Promise2(function(resolve9, reject) {
        var doneAndReject = function(error) {
          state.done = true;
          reject(error);
        };
        var ifAbruptCloseAsyncIterator = function(error) {
          closeAsyncIteration(iterator, doneAndReject, error, doneAndReject);
        };
        var outerLoop = function() {
          try {
            Promise2.resolve(anObject(call(state.next, iterator))).then(function(step) {
              try {
                if (anObject(step).done) {
                  state.done = true;
                  resolve9(createIterResultObject(void 0, true));
                } else {
                  var value = step.value;
                  try {
                    var result = mapper(value, state.counter++);
                    var handler = function(mapped) {
                      try {
                        state.inner = getAsyncIteratorFlattenable(mapped);
                        innerLoop();
                      } catch (error4) {
                        ifAbruptCloseAsyncIterator(error4);
                      }
                    };
                    if (isObject2(result)) Promise2.resolve(result).then(handler, ifAbruptCloseAsyncIterator);
                    else handler(result);
                  } catch (error3) {
                    ifAbruptCloseAsyncIterator(error3);
                  }
                }
              } catch (error2) {
                doneAndReject(error2);
              }
            }, doneAndReject);
          } catch (error) {
            doneAndReject(error);
          }
        };
        var innerLoop = function() {
          var inner2 = state.inner;
          if (inner2) {
            try {
              Promise2.resolve(anObject(call(inner2.next, inner2.iterator))).then(function(result) {
                try {
                  if (anObject(result).done) {
                    state.inner = null;
                    outerLoop();
                  } else resolve9(createIterResultObject(result.value, false));
                } catch (error1) {
                  ifAbruptCloseAsyncIterator(error1);
                }
              }, ifAbruptCloseAsyncIterator);
            } catch (error) {
              ifAbruptCloseAsyncIterator(error);
            }
          } else outerLoop();
        };
        innerLoop();
      });
    });
    $2({ target: "AsyncIterator", proto: true, real: true }, {
      flatMap: function flatMap2(mapper) {
        anObject(this);
        aCallable(mapper);
        return new AsyncIteratorProxy(getIteratorDirect(this), {
          mapper,
          inner: null
        });
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.async-iterator.for-each.js
var require_esnext_async_iterator_for_each = __commonJS({
  "../../node_modules/core-js/modules/esnext.async-iterator.for-each.js"() {
    "use strict";
    var $2 = require_export();
    var $forEach = require_async_iterator_iteration().forEach;
    $2({ target: "AsyncIterator", proto: true, real: true }, {
      forEach: function forEach(fn) {
        return $forEach(this, fn);
      }
    });
  }
});

// ../../node_modules/core-js/internals/async-iterator-wrap.js
var require_async_iterator_wrap = __commonJS({
  "../../node_modules/core-js/internals/async-iterator-wrap.js"(exports2, module2) {
    var call = require_function_call();
    var createAsyncIteratorProxy = require_async_iterator_create_proxy();
    module2.exports = createAsyncIteratorProxy(function() {
      return call(this.next, this.iterator);
    }, true);
  }
});

// ../../node_modules/core-js/modules/esnext.async-iterator.from.js
var require_esnext_async_iterator_from = __commonJS({
  "../../node_modules/core-js/modules/esnext.async-iterator.from.js"() {
    var $2 = require_export();
    var toObject = require_to_object();
    var isPrototypeOf = require_object_is_prototype_of();
    var getAsyncIteratorFlattenable = require_get_async_iterator_flattenable();
    var AsyncIteratorPrototype = require_async_iterator_prototype();
    var WrapAsyncIterator = require_async_iterator_wrap();
    $2({ target: "AsyncIterator", stat: true }, {
      from: function from4(O) {
        var iteratorRecord = getAsyncIteratorFlattenable(typeof O == "string" ? toObject(O) : O);
        return isPrototypeOf(AsyncIteratorPrototype, iteratorRecord.iterator) ? iteratorRecord.iterator : new WrapAsyncIterator(iteratorRecord);
      }
    });
  }
});

// ../../node_modules/core-js/internals/async-iterator-map.js
var require_async_iterator_map = __commonJS({
  "../../node_modules/core-js/internals/async-iterator-map.js"(exports2, module2) {
    "use strict";
    var call = require_function_call();
    var aCallable = require_a_callable();
    var anObject = require_an_object();
    var isObject2 = require_is_object();
    var getIteratorDirect = require_get_iterator_direct();
    var createAsyncIteratorProxy = require_async_iterator_create_proxy();
    var createIterResultObject = require_create_iter_result_object();
    var closeAsyncIteration = require_async_iterator_close();
    var AsyncIteratorProxy = createAsyncIteratorProxy(function(Promise2) {
      var state = this;
      var iterator = state.iterator;
      var mapper = state.mapper;
      return new Promise2(function(resolve9, reject) {
        var doneAndReject = function(error) {
          state.done = true;
          reject(error);
        };
        var ifAbruptCloseAsyncIterator = function(error) {
          closeAsyncIteration(iterator, doneAndReject, error, doneAndReject);
        };
        Promise2.resolve(anObject(call(state.next, iterator))).then(function(step) {
          try {
            if (anObject(step).done) {
              state.done = true;
              resolve9(createIterResultObject(void 0, true));
            } else {
              var value = step.value;
              try {
                var result = mapper(value, state.counter++);
                var handler = function(mapped) {
                  resolve9(createIterResultObject(mapped, false));
                };
                if (isObject2(result)) Promise2.resolve(result).then(handler, ifAbruptCloseAsyncIterator);
                else handler(result);
              } catch (error2) {
                ifAbruptCloseAsyncIterator(error2);
              }
            }
          } catch (error) {
            doneAndReject(error);
          }
        }, doneAndReject);
      });
    });
    module2.exports = function map13(mapper) {
      anObject(this);
      aCallable(mapper);
      return new AsyncIteratorProxy(getIteratorDirect(this), {
        mapper
      });
    };
  }
});

// ../../node_modules/core-js/modules/esnext.async-iterator.map.js
var require_esnext_async_iterator_map = __commonJS({
  "../../node_modules/core-js/modules/esnext.async-iterator.map.js"() {
    var $2 = require_export();
    var map13 = require_async_iterator_map();
    $2({ target: "AsyncIterator", proto: true, real: true }, {
      map: map13
    });
  }
});

// ../../node_modules/core-js/modules/esnext.async-iterator.reduce.js
var require_esnext_async_iterator_reduce = __commonJS({
  "../../node_modules/core-js/modules/esnext.async-iterator.reduce.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var aCallable = require_a_callable();
    var anObject = require_an_object();
    var isObject2 = require_is_object();
    var getBuiltIn = require_get_built_in();
    var getIteratorDirect = require_get_iterator_direct();
    var closeAsyncIteration = require_async_iterator_close();
    var Promise2 = getBuiltIn("Promise");
    var $TypeError = TypeError;
    $2({ target: "AsyncIterator", proto: true, real: true }, {
      reduce: function reduce2(reducer) {
        anObject(this);
        aCallable(reducer);
        var record = getIteratorDirect(this);
        var iterator = record.iterator;
        var next = record.next;
        var noInitial = arguments.length < 2;
        var accumulator = noInitial ? void 0 : arguments[1];
        var counter = 0;
        return new Promise2(function(resolve9, reject) {
          var ifAbruptCloseAsyncIterator = function(error) {
            closeAsyncIteration(iterator, reject, error, reject);
          };
          var loop = function() {
            try {
              Promise2.resolve(anObject(call(next, iterator))).then(function(step) {
                try {
                  if (anObject(step).done) {
                    noInitial ? reject($TypeError("Reduce of empty iterator with no initial value")) : resolve9(accumulator);
                  } else {
                    var value = step.value;
                    if (noInitial) {
                      noInitial = false;
                      accumulator = value;
                      loop();
                    } else try {
                      var result = reducer(accumulator, value, counter);
                      var handler = function($result) {
                        accumulator = $result;
                        loop();
                      };
                      if (isObject2(result)) Promise2.resolve(result).then(handler, ifAbruptCloseAsyncIterator);
                      else handler(result);
                    } catch (error3) {
                      ifAbruptCloseAsyncIterator(error3);
                    }
                  }
                  counter++;
                } catch (error2) {
                  reject(error2);
                }
              }, reject);
            } catch (error) {
              reject(error);
            }
          };
          loop();
        });
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.async-iterator.some.js
var require_esnext_async_iterator_some = __commonJS({
  "../../node_modules/core-js/modules/esnext.async-iterator.some.js"() {
    "use strict";
    var $2 = require_export();
    var $some = require_async_iterator_iteration().some;
    $2({ target: "AsyncIterator", proto: true, real: true }, {
      some: function some(predicate) {
        return $some(this, predicate);
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.async-iterator.take.js
var require_esnext_async_iterator_take = __commonJS({
  "../../node_modules/core-js/modules/esnext.async-iterator.take.js"() {
    "use strict";
    var $2 = require_export();
    var call = require_function_call();
    var anObject = require_an_object();
    var getIteratorDirect = require_get_iterator_direct();
    var notANaN = require_not_a_nan();
    var toPositiveInteger = require_to_positive_integer();
    var createAsyncIteratorProxy = require_async_iterator_create_proxy();
    var createIterResultObject = require_create_iter_result_object();
    var AsyncIteratorProxy = createAsyncIteratorProxy(function(Promise2) {
      var state = this;
      var iterator = state.iterator;
      var returnMethod;
      if (!state.remaining--) {
        var resultDone = createIterResultObject(void 0, true);
        state.done = true;
        returnMethod = iterator["return"];
        if (returnMethod !== void 0) {
          return Promise2.resolve(call(returnMethod, iterator, void 0)).then(function() {
            return resultDone;
          });
        }
        return resultDone;
      }
      return Promise2.resolve(call(state.next, iterator)).then(function(step) {
        if (anObject(step).done) {
          state.done = true;
          return createIterResultObject(void 0, true);
        }
        return createIterResultObject(step.value, false);
      }).then(null, function(error) {
        state.done = true;
        throw error;
      });
    });
    $2({ target: "AsyncIterator", proto: true, real: true }, {
      take: function take4(limit) {
        anObject(this);
        var remaining = toPositiveInteger(notANaN(+limit));
        return new AsyncIteratorProxy(getIteratorDirect(this), {
          remaining
        });
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.async-iterator.to-array.js
var require_esnext_async_iterator_to_array = __commonJS({
  "../../node_modules/core-js/modules/esnext.async-iterator.to-array.js"() {
    "use strict";
    var $2 = require_export();
    var $toArray = require_async_iterator_iteration().toArray;
    $2({ target: "AsyncIterator", proto: true, real: true }, {
      toArray: function toArray2() {
        return $toArray(this, void 0, []);
      }
    });
  }
});

// ../../node_modules/core-js/modules/esnext.iterator.to-async.js
var require_esnext_iterator_to_async = __commonJS({
  "../../node_modules/core-js/modules/esnext.iterator.to-async.js"() {
    "use strict";
    var $2 = require_export();
    var anObject = require_an_object();
    var AsyncFromSyncIterator = require_async_from_sync_iterator();
    var WrapAsyncIterator = require_async_iterator_wrap();
    var getIteratorDirect = require_get_iterator_direct();
    $2({ target: "Iterator", proto: true, real: true }, {
      toAsync: function toAsync() {
        return new WrapAsyncIterator(getIteratorDirect(new AsyncFromSyncIterator(getIteratorDirect(anObject(this)))));
      }
    });
  }
});

// ../../node_modules/core-js/proposals/iterator-helpers-stage-3.js
var require_iterator_helpers_stage_3 = __commonJS({
  "../../node_modules/core-js/proposals/iterator-helpers-stage-3.js"() {
    require_esnext_async_iterator_constructor();
    require_esnext_async_iterator_drop();
    require_esnext_async_iterator_every();
    require_esnext_async_iterator_filter();
    require_esnext_async_iterator_find();
    require_esnext_async_iterator_flat_map();
    require_esnext_async_iterator_for_each();
    require_esnext_async_iterator_from();
    require_esnext_async_iterator_map();
    require_esnext_async_iterator_reduce();
    require_esnext_async_iterator_some();
    require_esnext_async_iterator_take();
    require_esnext_async_iterator_to_array();
    require_esnext_iterator_constructor();
    require_esnext_iterator_drop();
    require_esnext_iterator_every();
    require_esnext_iterator_filter();
    require_esnext_iterator_find();
    require_esnext_iterator_flat_map();
    require_esnext_iterator_for_each();
    require_esnext_iterator_from();
    require_esnext_iterator_map();
    require_esnext_iterator_reduce();
    require_esnext_iterator_some();
    require_esnext_iterator_take();
    require_esnext_iterator_to_array();
    require_esnext_iterator_to_async();
  }
});

// ../../node_modules/core-js/stage/3.js
var require__2 = __commonJS({
  "../../node_modules/core-js/stage/3.js"(exports2, module2) {
    var parent2 = require__();
    require_array_from_async_stage_2();
    require_array_buffer_transfer2();
    require_decorator_metadata_v2();
    require_explicit_resource_management();
    require_iterator_helpers_stage_3_2();
    require_json_parse_with_source();
    require_set_methods_v2();
    require_array_grouping_stage_3();
    require_array_grouping_stage_3_2();
    require_change_array_by_copy();
    require_iterator_helpers_stage_3();
    module2.exports = parent2;
  }
});

// ../../node_modules/core-js/actual/index.js
var require_actual = __commonJS({
  "../../node_modules/core-js/actual/index.js"(exports2, module2) {
    require_stable();
    require__2();
    module2.exports = require_path();
  }
});

// ../../node_modules/commander/lib/error.js
var require_error = __commonJS({
  "../../node_modules/commander/lib/error.js"(exports2) {
    var CommanderError2 = class extends Error {
      /**
       * Constructs the CommanderError class
       * @param {number} exitCode suggested exit code which could be used with process.exit
       * @param {string} code an id string representing the error
       * @param {string} message human-readable description of the error
       * @constructor
       */
      constructor(exitCode, code7, message) {
        super(message);
        Error.captureStackTrace(this, this.constructor);
        this.name = this.constructor.name;
        this.code = code7;
        this.exitCode = exitCode;
        this.nestedError = void 0;
      }
    };
    var InvalidArgumentError2 = class extends CommanderError2 {
      /**
       * Constructs the InvalidArgumentError class
       * @param {string} [message] explanation of why argument is invalid
       * @constructor
       */
      constructor(message) {
        super(1, "commander.invalidArgument", message);
        Error.captureStackTrace(this, this.constructor);
        this.name = this.constructor.name;
      }
    };
    exports2.CommanderError = CommanderError2;
    exports2.InvalidArgumentError = InvalidArgumentError2;
  }
});

// ../../node_modules/commander/lib/argument.js
var require_argument = __commonJS({
  "../../node_modules/commander/lib/argument.js"(exports2) {
    var { InvalidArgumentError: InvalidArgumentError2 } = require_error();
    var Argument2 = class {
      /**
       * Initialize a new command argument with the given name and description.
       * The default is that the argument is required, and you can explicitly
       * indicate this with <> around the name. Put [] around the name for an optional argument.
       *
       * @param {string} name
       * @param {string} [description]
       */
      constructor(name3, description) {
        this.description = description || "";
        this.variadic = false;
        this.parseArg = void 0;
        this.defaultValue = void 0;
        this.defaultValueDescription = void 0;
        this.argChoices = void 0;
        switch (name3[0]) {
          case "<":
            this.required = true;
            this._name = name3.slice(1, -1);
            break;
          case "[":
            this.required = false;
            this._name = name3.slice(1, -1);
            break;
          default:
            this.required = true;
            this._name = name3;
            break;
        }
        if (this._name.length > 3 && this._name.slice(-3) === "...") {
          this.variadic = true;
          this._name = this._name.slice(0, -3);
        }
      }
      /**
       * Return argument name.
       *
       * @return {string}
       */
      name() {
        return this._name;
      }
      /**
       * @api private
       */
      _concatValue(value, previous) {
        if (previous === this.defaultValue || !Array.isArray(previous)) {
          return [value];
        }
        return previous.concat(value);
      }
      /**
       * Set the default value, and optionally supply the description to be displayed in the help.
       *
       * @param {any} value
       * @param {string} [description]
       * @return {Argument}
       */
      default(value, description) {
        this.defaultValue = value;
        this.defaultValueDescription = description;
        return this;
      }
      /**
       * Set the custom handler for processing CLI command arguments into argument values.
       *
       * @param {Function} [fn]
       * @return {Argument}
       */
      argParser(fn) {
        this.parseArg = fn;
        return this;
      }
      /**
       * Only allow argument value to be one of choices.
       *
       * @param {string[]} values
       * @return {Argument}
       */
      choices(values) {
        this.argChoices = values.slice();
        this.parseArg = (arg2, previous) => {
          if (!this.argChoices.includes(arg2)) {
            throw new InvalidArgumentError2(`Allowed choices are ${this.argChoices.join(", ")}.`);
          }
          if (this.variadic) {
            return this._concatValue(arg2, previous);
          }
          return arg2;
        };
        return this;
      }
      /**
       * Make argument required.
       */
      argRequired() {
        this.required = true;
        return this;
      }
      /**
       * Make argument optional.
       */
      argOptional() {
        this.required = false;
        return this;
      }
    };
    function humanReadableArgName(arg2) {
      const nameOutput = arg2.name() + (arg2.variadic === true ? "..." : "");
      return arg2.required ? "<" + nameOutput + ">" : "[" + nameOutput + "]";
    }
    exports2.Argument = Argument2;
    exports2.humanReadableArgName = humanReadableArgName;
  }
});

// ../../node_modules/commander/lib/help.js
var require_help = __commonJS({
  "../../node_modules/commander/lib/help.js"(exports2) {
    var { humanReadableArgName } = require_argument();
    var Help2 = class {
      constructor() {
        this.helpWidth = void 0;
        this.sortSubcommands = false;
        this.sortOptions = false;
        this.showGlobalOptions = false;
      }
      /**
       * Get an array of the visible subcommands. Includes a placeholder for the implicit help command, if there is one.
       *
       * @param {Command} cmd
       * @returns {Command[]}
       */
      visibleCommands(cmd) {
        const visibleCommands = cmd.commands.filter((cmd2) => !cmd2._hidden);
        if (cmd._hasImplicitHelpCommand()) {
          const [, helpName, helpArgs] = cmd._helpCommandnameAndArgs.match(/([^ ]+) *(.*)/);
          const helpCommand = cmd.createCommand(helpName).helpOption(false);
          helpCommand.description(cmd._helpCommandDescription);
          if (helpArgs) helpCommand.arguments(helpArgs);
          visibleCommands.push(helpCommand);
        }
        if (this.sortSubcommands) {
          visibleCommands.sort((a2, b) => {
            return a2.name().localeCompare(b.name());
          });
        }
        return visibleCommands;
      }
      /**
       * Compare options for sort.
       *
       * @param {Option} a
       * @param {Option} b
       * @returns number
       */
      compareOptions(a2, b) {
        const getSortKey = (option3) => {
          return option3.short ? option3.short.replace(/^-/, "") : option3.long.replace(/^--/, "");
        };
        return getSortKey(a2).localeCompare(getSortKey(b));
      }
      /**
       * Get an array of the visible options. Includes a placeholder for the implicit help option, if there is one.
       *
       * @param {Command} cmd
       * @returns {Option[]}
       */
      visibleOptions(cmd) {
        const visibleOptions = cmd.options.filter((option3) => !option3.hidden);
        const showShortHelpFlag = cmd._hasHelpOption && cmd._helpShortFlag && !cmd._findOption(cmd._helpShortFlag);
        const showLongHelpFlag = cmd._hasHelpOption && !cmd._findOption(cmd._helpLongFlag);
        if (showShortHelpFlag || showLongHelpFlag) {
          let helpOption;
          if (!showShortHelpFlag) {
            helpOption = cmd.createOption(cmd._helpLongFlag, cmd._helpDescription);
          } else if (!showLongHelpFlag) {
            helpOption = cmd.createOption(cmd._helpShortFlag, cmd._helpDescription);
          } else {
            helpOption = cmd.createOption(cmd._helpFlags, cmd._helpDescription);
          }
          visibleOptions.push(helpOption);
        }
        if (this.sortOptions) {
          visibleOptions.sort(this.compareOptions);
        }
        return visibleOptions;
      }
      /**
       * Get an array of the visible global options. (Not including help.)
       *
       * @param {Command} cmd
       * @returns {Option[]}
       */
      visibleGlobalOptions(cmd) {
        if (!this.showGlobalOptions) return [];
        const globalOptions = [];
        for (let parentCmd = cmd.parent; parentCmd; parentCmd = parentCmd.parent) {
          const visibleOptions = parentCmd.options.filter((option3) => !option3.hidden);
          globalOptions.push(...visibleOptions);
        }
        if (this.sortOptions) {
          globalOptions.sort(this.compareOptions);
        }
        return globalOptions;
      }
      /**
       * Get an array of the arguments if any have a description.
       *
       * @param {Command} cmd
       * @returns {Argument[]}
       */
      visibleArguments(cmd) {
        if (cmd._argsDescription) {
          cmd._args.forEach((argument2) => {
            argument2.description = argument2.description || cmd._argsDescription[argument2.name()] || "";
          });
        }
        if (cmd._args.find((argument2) => argument2.description)) {
          return cmd._args;
        }
        return [];
      }
      /**
       * Get the command term to show in the list of subcommands.
       *
       * @param {Command} cmd
       * @returns {string}
       */
      subcommandTerm(cmd) {
        const args = cmd._args.map((arg2) => humanReadableArgName(arg2)).join(" ");
        return cmd._name + (cmd._aliases[0] ? "|" + cmd._aliases[0] : "") + (cmd.options.length ? " [options]" : "") + // simplistic check for non-help option
        (args ? " " + args : "");
      }
      /**
       * Get the option term to show in the list of options.
       *
       * @param {Option} option
       * @returns {string}
       */
      optionTerm(option3) {
        return option3.flags;
      }
      /**
       * Get the argument term to show in the list of arguments.
       *
       * @param {Argument} argument
       * @returns {string}
       */
      argumentTerm(argument2) {
        return argument2.name();
      }
      /**
       * Get the longest command term length.
       *
       * @param {Command} cmd
       * @param {Help} helper
       * @returns {number}
       */
      longestSubcommandTermLength(cmd, helper) {
        return helper.visibleCommands(cmd).reduce((max, command) => {
          return Math.max(max, helper.subcommandTerm(command).length);
        }, 0);
      }
      /**
       * Get the longest option term length.
       *
       * @param {Command} cmd
       * @param {Help} helper
       * @returns {number}
       */
      longestOptionTermLength(cmd, helper) {
        return helper.visibleOptions(cmd).reduce((max, option3) => {
          return Math.max(max, helper.optionTerm(option3).length);
        }, 0);
      }
      /**
       * Get the longest global option term length.
       *
       * @param {Command} cmd
       * @param {Help} helper
       * @returns {number}
       */
      longestGlobalOptionTermLength(cmd, helper) {
        return helper.visibleGlobalOptions(cmd).reduce((max, option3) => {
          return Math.max(max, helper.optionTerm(option3).length);
        }, 0);
      }
      /**
       * Get the longest argument term length.
       *
       * @param {Command} cmd
       * @param {Help} helper
       * @returns {number}
       */
      longestArgumentTermLength(cmd, helper) {
        return helper.visibleArguments(cmd).reduce((max, argument2) => {
          return Math.max(max, helper.argumentTerm(argument2).length);
        }, 0);
      }
      /**
       * Get the command usage to be displayed at the top of the built-in help.
       *
       * @param {Command} cmd
       * @returns {string}
       */
      commandUsage(cmd) {
        let cmdName = cmd._name;
        if (cmd._aliases[0]) {
          cmdName = cmdName + "|" + cmd._aliases[0];
        }
        let parentCmdNames = "";
        for (let parentCmd = cmd.parent; parentCmd; parentCmd = parentCmd.parent) {
          parentCmdNames = parentCmd.name() + " " + parentCmdNames;
        }
        return parentCmdNames + cmdName + " " + cmd.usage();
      }
      /**
       * Get the description for the command.
       *
       * @param {Command} cmd
       * @returns {string}
       */
      commandDescription(cmd) {
        return cmd.description();
      }
      /**
       * Get the subcommand summary to show in the list of subcommands.
       * (Fallback to description for backwards compatibility.)
       *
       * @param {Command} cmd
       * @returns {string}
       */
      subcommandDescription(cmd) {
        return cmd.summary() || cmd.description();
      }
      /**
       * Get the option description to show in the list of options.
       *
       * @param {Option} option
       * @return {string}
       */
      optionDescription(option3) {
        const extraInfo = [];
        if (option3.argChoices) {
          extraInfo.push(
            // use stringify to match the display of the default value
            `choices: ${option3.argChoices.map((choice) => JSON.stringify(choice)).join(", ")}`
          );
        }
        if (option3.defaultValue !== void 0) {
          const showDefault = option3.required || option3.optional || option3.isBoolean() && typeof option3.defaultValue === "boolean";
          if (showDefault) {
            extraInfo.push(`default: ${option3.defaultValueDescription || JSON.stringify(option3.defaultValue)}`);
          }
        }
        if (option3.presetArg !== void 0 && option3.optional) {
          extraInfo.push(`preset: ${JSON.stringify(option3.presetArg)}`);
        }
        if (option3.envVar !== void 0) {
          extraInfo.push(`env: ${option3.envVar}`);
        }
        if (extraInfo.length > 0) {
          return `${option3.description} (${extraInfo.join(", ")})`;
        }
        return option3.description;
      }
      /**
       * Get the argument description to show in the list of arguments.
       *
       * @param {Argument} argument
       * @return {string}
       */
      argumentDescription(argument2) {
        const extraInfo = [];
        if (argument2.argChoices) {
          extraInfo.push(
            // use stringify to match the display of the default value
            `choices: ${argument2.argChoices.map((choice) => JSON.stringify(choice)).join(", ")}`
          );
        }
        if (argument2.defaultValue !== void 0) {
          extraInfo.push(`default: ${argument2.defaultValueDescription || JSON.stringify(argument2.defaultValue)}`);
        }
        if (extraInfo.length > 0) {
          const extraDescripton = `(${extraInfo.join(", ")})`;
          if (argument2.description) {
            return `${argument2.description} ${extraDescripton}`;
          }
          return extraDescripton;
        }
        return argument2.description;
      }
      /**
       * Generate the built-in help text.
       *
       * @param {Command} cmd
       * @param {Help} helper
       * @returns {string}
       */
      formatHelp(cmd, helper) {
        const termWidth = helper.padWidth(cmd, helper);
        const helpWidth = helper.helpWidth || 80;
        const itemIndentWidth = 2;
        const itemSeparatorWidth = 2;
        function formatItem(term, description) {
          if (description) {
            const fullText = `${term.padEnd(termWidth + itemSeparatorWidth)}${description}`;
            return helper.wrap(fullText, helpWidth - itemIndentWidth, termWidth + itemSeparatorWidth);
          }
          return term;
        }
        function formatList(textArray) {
          return textArray.join("\n").replace(/^/gm, " ".repeat(itemIndentWidth));
        }
        let output2 = [`Usage: ${helper.commandUsage(cmd)}`, ""];
        const commandDescription = helper.commandDescription(cmd);
        if (commandDescription.length > 0) {
          output2 = output2.concat([helper.wrap(commandDescription, helpWidth, 0), ""]);
        }
        const argumentList = helper.visibleArguments(cmd).map((argument2) => {
          return formatItem(helper.argumentTerm(argument2), helper.argumentDescription(argument2));
        });
        if (argumentList.length > 0) {
          output2 = output2.concat(["Arguments:", formatList(argumentList), ""]);
        }
        const optionList = helper.visibleOptions(cmd).map((option3) => {
          return formatItem(helper.optionTerm(option3), helper.optionDescription(option3));
        });
        if (optionList.length > 0) {
          output2 = output2.concat(["Options:", formatList(optionList), ""]);
        }
        if (this.showGlobalOptions) {
          const globalOptionList = helper.visibleGlobalOptions(cmd).map((option3) => {
            return formatItem(helper.optionTerm(option3), helper.optionDescription(option3));
          });
          if (globalOptionList.length > 0) {
            output2 = output2.concat(["Global Options:", formatList(globalOptionList), ""]);
          }
        }
        const commandList = helper.visibleCommands(cmd).map((cmd2) => {
          return formatItem(helper.subcommandTerm(cmd2), helper.subcommandDescription(cmd2));
        });
        if (commandList.length > 0) {
          output2 = output2.concat(["Commands:", formatList(commandList), ""]);
        }
        return output2.join("\n");
      }
      /**
       * Calculate the pad width from the maximum term length.
       *
       * @param {Command} cmd
       * @param {Help} helper
       * @returns {number}
       */
      padWidth(cmd, helper) {
        return Math.max(
          helper.longestOptionTermLength(cmd, helper),
          helper.longestGlobalOptionTermLength(cmd, helper),
          helper.longestSubcommandTermLength(cmd, helper),
          helper.longestArgumentTermLength(cmd, helper)
        );
      }
      /**
       * Wrap the given string to width characters per line, with lines after the first indented.
       * Do not wrap if insufficient room for wrapping (minColumnWidth), or string is manually formatted.
       *
       * @param {string} str
       * @param {number} width
       * @param {number} indent
       * @param {number} [minColumnWidth=40]
       * @return {string}
       *
       */
      wrap(str2, width, indent2, minColumnWidth = 40) {
        const indents = " \\f\\t\\v\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF";
        const manualIndent = new RegExp(`[\\n][${indents}]+`);
        if (str2.match(manualIndent)) return str2;
        const columnWidth = width - indent2;
        if (columnWidth < minColumnWidth) return str2;
        const leadingStr = str2.slice(0, indent2);
        const columnText = str2.slice(indent2).replace("\r\n", "\n");
        const indentString2 = " ".repeat(indent2);
        const zeroWidthSpace = "\u200B";
        const breaks = `\\s${zeroWidthSpace}`;
        const regex2 = new RegExp(`
|.{1,${columnWidth - 1}}([${breaks}]|$)|[^${breaks}]+?([${breaks}]|$)`, "g");
        const lines = columnText.match(regex2) || [];
        return leadingStr + lines.map((line2, i2) => {
          if (line2 === "\n") return "";
          return (i2 > 0 ? indentString2 : "") + line2.trimEnd();
        }).join("\n");
      }
    };
    exports2.Help = Help2;
  }
});

// ../../node_modules/commander/lib/option.js
var require_option = __commonJS({
  "../../node_modules/commander/lib/option.js"(exports2) {
    var { InvalidArgumentError: InvalidArgumentError2 } = require_error();
    var Option2 = class {
      /**
       * Initialize a new `Option` with the given `flags` and `description`.
       *
       * @param {string} flags
       * @param {string} [description]
       */
      constructor(flags, description) {
        this.flags = flags;
        this.description = description || "";
        this.required = flags.includes("<");
        this.optional = flags.includes("[");
        this.variadic = /\w\.\.\.[>\]]$/.test(flags);
        this.mandatory = false;
        const optionFlags = splitOptionFlags(flags);
        this.short = optionFlags.shortFlag;
        this.long = optionFlags.longFlag;
        this.negate = false;
        if (this.long) {
          this.negate = this.long.startsWith("--no-");
        }
        this.defaultValue = void 0;
        this.defaultValueDescription = void 0;
        this.presetArg = void 0;
        this.envVar = void 0;
        this.parseArg = void 0;
        this.hidden = false;
        this.argChoices = void 0;
        this.conflictsWith = [];
        this.implied = void 0;
      }
      /**
       * Set the default value, and optionally supply the description to be displayed in the help.
       *
       * @param {any} value
       * @param {string} [description]
       * @return {Option}
       */
      default(value, description) {
        this.defaultValue = value;
        this.defaultValueDescription = description;
        return this;
      }
      /**
       * Preset to use when option used without option-argument, especially optional but also boolean and negated.
       * The custom processing (parseArg) is called.
       *
       * @example
       * new Option('--color').default('GREYSCALE').preset('RGB');
       * new Option('--donate [amount]').preset('20').argParser(parseFloat);
       *
       * @param {any} arg
       * @return {Option}
       */
      preset(arg2) {
        this.presetArg = arg2;
        return this;
      }
      /**
       * Add option name(s) that conflict with this option.
       * An error will be displayed if conflicting options are found during parsing.
       *
       * @example
       * new Option('--rgb').conflicts('cmyk');
       * new Option('--js').conflicts(['ts', 'jsx']);
       *
       * @param {string | string[]} names
       * @return {Option}
       */
      conflicts(names) {
        this.conflictsWith = this.conflictsWith.concat(names);
        return this;
      }
      /**
       * Specify implied option values for when this option is set and the implied options are not.
       *
       * The custom processing (parseArg) is not called on the implied values.
       *
       * @example
       * program
       *   .addOption(new Option('--log', 'write logging information to file'))
       *   .addOption(new Option('--trace', 'log extra details').implies({ log: 'trace.txt' }));
       *
       * @param {Object} impliedOptionValues
       * @return {Option}
       */
      implies(impliedOptionValues) {
        let newImplied = impliedOptionValues;
        if (typeof impliedOptionValues === "string") {
          newImplied = { [impliedOptionValues]: true };
        }
        this.implied = Object.assign(this.implied || {}, newImplied);
        return this;
      }
      /**
       * Set environment variable to check for option value.
       *
       * An environment variable is only used if when processed the current option value is
       * undefined, or the source of the current value is 'default' or 'config' or 'env'.
       *
       * @param {string} name
       * @return {Option}
       */
      env(name3) {
        this.envVar = name3;
        return this;
      }
      /**
       * Set the custom handler for processing CLI option arguments into option values.
       *
       * @param {Function} [fn]
       * @return {Option}
       */
      argParser(fn) {
        this.parseArg = fn;
        return this;
      }
      /**
       * Whether the option is mandatory and must have a value after parsing.
       *
       * @param {boolean} [mandatory=true]
       * @return {Option}
       */
      makeOptionMandatory(mandatory = true) {
        this.mandatory = !!mandatory;
        return this;
      }
      /**
       * Hide option in help.
       *
       * @param {boolean} [hide=true]
       * @return {Option}
       */
      hideHelp(hide = true) {
        this.hidden = !!hide;
        return this;
      }
      /**
       * @api private
       */
      _concatValue(value, previous) {
        if (previous === this.defaultValue || !Array.isArray(previous)) {
          return [value];
        }
        return previous.concat(value);
      }
      /**
       * Only allow option value to be one of choices.
       *
       * @param {string[]} values
       * @return {Option}
       */
      choices(values) {
        this.argChoices = values.slice();
        this.parseArg = (arg2, previous) => {
          if (!this.argChoices.includes(arg2)) {
            throw new InvalidArgumentError2(`Allowed choices are ${this.argChoices.join(", ")}.`);
          }
          if (this.variadic) {
            return this._concatValue(arg2, previous);
          }
          return arg2;
        };
        return this;
      }
      /**
       * Return option name.
       *
       * @return {string}
       */
      name() {
        if (this.long) {
          return this.long.replace(/^--/, "");
        }
        return this.short.replace(/^-/, "");
      }
      /**
       * Return option name, in a camelcase format that can be used
       * as a object attribute key.
       *
       * @return {string}
       * @api private
       */
      attributeName() {
        return camelcase4(this.name().replace(/^no-/, ""));
      }
      /**
       * Check if `arg` matches the short or long flag.
       *
       * @param {string} arg
       * @return {boolean}
       * @api private
       */
      is(arg2) {
        return this.short === arg2 || this.long === arg2;
      }
      /**
       * Return whether a boolean option.
       *
       * Options are one of boolean, negated, required argument, or optional argument.
       *
       * @return {boolean}
       * @api private
       */
      isBoolean() {
        return !this.required && !this.optional && !this.negate;
      }
    };
    var DualOptions = class {
      /**
       * @param {Option[]} options
       */
      constructor(options) {
        this.positiveOptions = /* @__PURE__ */ new Map();
        this.negativeOptions = /* @__PURE__ */ new Map();
        this.dualOptions = /* @__PURE__ */ new Set();
        options.forEach((option3) => {
          if (option3.negate) {
            this.negativeOptions.set(option3.attributeName(), option3);
          } else {
            this.positiveOptions.set(option3.attributeName(), option3);
          }
        });
        this.negativeOptions.forEach((value, key2) => {
          if (this.positiveOptions.has(key2)) {
            this.dualOptions.add(key2);
          }
        });
      }
      /**
       * Did the value come from the option, and not from possible matching dual option?
       *
       * @param {any} value
       * @param {Option} option
       * @returns {boolean}
       */
      valueFromOption(value, option3) {
        const optionKey = option3.attributeName();
        if (!this.dualOptions.has(optionKey)) return true;
        const preset = this.negativeOptions.get(optionKey).presetArg;
        const negativeValue = preset !== void 0 ? preset : false;
        return option3.negate === (negativeValue === value);
      }
    };
    function camelcase4(str2) {
      return str2.split("-").reduce((str3, word) => {
        return str3 + word[0].toUpperCase() + word.slice(1);
      });
    }
    function splitOptionFlags(flags) {
      let shortFlag;
      let longFlag;
      const flagParts = flags.split(/[ |,]+/);
      if (flagParts.length > 1 && !/^[[<]/.test(flagParts[1])) shortFlag = flagParts.shift();
      longFlag = flagParts.shift();
      if (!shortFlag && /^-[^-]$/.test(longFlag)) {
        shortFlag = longFlag;
        longFlag = void 0;
      }
      return { shortFlag, longFlag };
    }
    exports2.Option = Option2;
    exports2.splitOptionFlags = splitOptionFlags;
    exports2.DualOptions = DualOptions;
  }
});

// ../../node_modules/commander/lib/suggestSimilar.js
var require_suggestSimilar = __commonJS({
  "../../node_modules/commander/lib/suggestSimilar.js"(exports2) {
    var maxDistance = 3;
    function editDistance(a2, b) {
      if (Math.abs(a2.length - b.length) > maxDistance) return Math.max(a2.length, b.length);
      const d = [];
      for (let i2 = 0; i2 <= a2.length; i2++) {
        d[i2] = [i2];
      }
      for (let j = 0; j <= b.length; j++) {
        d[0][j] = j;
      }
      for (let j = 1; j <= b.length; j++) {
        for (let i2 = 1; i2 <= a2.length; i2++) {
          let cost = 1;
          if (a2[i2 - 1] === b[j - 1]) {
            cost = 0;
          } else {
            cost = 1;
          }
          d[i2][j] = Math.min(
            d[i2 - 1][j] + 1,
            // deletion
            d[i2][j - 1] + 1,
            // insertion
            d[i2 - 1][j - 1] + cost
            // substitution
          );
          if (i2 > 1 && j > 1 && a2[i2 - 1] === b[j - 2] && a2[i2 - 2] === b[j - 1]) {
            d[i2][j] = Math.min(d[i2][j], d[i2 - 2][j - 2] + 1);
          }
        }
      }
      return d[a2.length][b.length];
    }
    function suggestSimilar(word, candidates) {
      if (!candidates || candidates.length === 0) return "";
      candidates = Array.from(new Set(candidates));
      const searchingOptions = word.startsWith("--");
      if (searchingOptions) {
        word = word.slice(2);
        candidates = candidates.map((candidate) => candidate.slice(2));
      }
      let similar = [];
      let bestDistance = maxDistance;
      const minSimilarity = 0.4;
      candidates.forEach((candidate) => {
        if (candidate.length <= 1) return;
        const distance = editDistance(word, candidate);
        const length = Math.max(word.length, candidate.length);
        const similarity = (length - distance) / length;
        if (similarity > minSimilarity) {
          if (distance < bestDistance) {
            bestDistance = distance;
            similar = [candidate];
          } else if (distance === bestDistance) {
            similar.push(candidate);
          }
        }
      });
      similar.sort((a2, b) => a2.localeCompare(b));
      if (searchingOptions) {
        similar = similar.map((candidate) => `--${candidate}`);
      }
      if (similar.length > 1) {
        return `
(Did you mean one of ${similar.join(", ")}?)`;
      }
      if (similar.length === 1) {
        return `
(Did you mean ${similar[0]}?)`;
      }
      return "";
    }
    exports2.suggestSimilar = suggestSimilar;
  }
});

// ../../node_modules/commander/lib/command.js
var require_command = __commonJS({
  "../../node_modules/commander/lib/command.js"(exports2) {
    var EventEmitter4 = require("events").EventEmitter;
    var childProcess = require("child_process");
    var path45 = require("path");
    var fs50 = require("fs");
    var process11 = require("process");
    var { Argument: Argument2, humanReadableArgName } = require_argument();
    var { CommanderError: CommanderError2 } = require_error();
    var { Help: Help2 } = require_help();
    var { Option: Option2, splitOptionFlags, DualOptions } = require_option();
    var { suggestSimilar } = require_suggestSimilar();
    var Command2 = class _Command extends EventEmitter4 {
      /**
       * Initialize a new `Command`.
       *
       * @param {string} [name]
       */
      constructor(name3) {
        super();
        this.commands = [];
        this.options = [];
        this.parent = null;
        this._allowUnknownOption = false;
        this._allowExcessArguments = true;
        this._args = [];
        this.args = [];
        this.rawArgs = [];
        this.processedArgs = [];
        this._scriptPath = null;
        this._name = name3 || "";
        this._optionValues = {};
        this._optionValueSources = {};
        this._storeOptionsAsProperties = false;
        this._actionHandler = null;
        this._executableHandler = false;
        this._executableFile = null;
        this._executableDir = null;
        this._defaultCommandName = null;
        this._exitCallback = null;
        this._aliases = [];
        this._combineFlagAndOptionalValue = true;
        this._description = "";
        this._summary = "";
        this._argsDescription = void 0;
        this._enablePositionalOptions = false;
        this._passThroughOptions = false;
        this._lifeCycleHooks = {};
        this._showHelpAfterError = false;
        this._showSuggestionAfterError = true;
        this._outputConfiguration = {
          writeOut: (str2) => process11.stdout.write(str2),
          writeErr: (str2) => process11.stderr.write(str2),
          getOutHelpWidth: () => process11.stdout.isTTY ? process11.stdout.columns : void 0,
          getErrHelpWidth: () => process11.stderr.isTTY ? process11.stderr.columns : void 0,
          outputError: (str2, write3) => write3(str2)
        };
        this._hidden = false;
        this._hasHelpOption = true;
        this._helpFlags = "-h, --help";
        this._helpDescription = "display help for command";
        this._helpShortFlag = "-h";
        this._helpLongFlag = "--help";
        this._addImplicitHelpCommand = void 0;
        this._helpCommandName = "help";
        this._helpCommandnameAndArgs = "help [command]";
        this._helpCommandDescription = "display help for command";
        this._helpConfiguration = {};
      }
      /**
       * Copy settings that are useful to have in common across root command and subcommands.
       *
       * (Used internally when adding a command using `.command()` so subcommands inherit parent settings.)
       *
       * @param {Command} sourceCommand
       * @return {Command} `this` command for chaining
       */
      copyInheritedSettings(sourceCommand) {
        this._outputConfiguration = sourceCommand._outputConfiguration;
        this._hasHelpOption = sourceCommand._hasHelpOption;
        this._helpFlags = sourceCommand._helpFlags;
        this._helpDescription = sourceCommand._helpDescription;
        this._helpShortFlag = sourceCommand._helpShortFlag;
        this._helpLongFlag = sourceCommand._helpLongFlag;
        this._helpCommandName = sourceCommand._helpCommandName;
        this._helpCommandnameAndArgs = sourceCommand._helpCommandnameAndArgs;
        this._helpCommandDescription = sourceCommand._helpCommandDescription;
        this._helpConfiguration = sourceCommand._helpConfiguration;
        this._exitCallback = sourceCommand._exitCallback;
        this._storeOptionsAsProperties = sourceCommand._storeOptionsAsProperties;
        this._combineFlagAndOptionalValue = sourceCommand._combineFlagAndOptionalValue;
        this._allowExcessArguments = sourceCommand._allowExcessArguments;
        this._enablePositionalOptions = sourceCommand._enablePositionalOptions;
        this._showHelpAfterError = sourceCommand._showHelpAfterError;
        this._showSuggestionAfterError = sourceCommand._showSuggestionAfterError;
        return this;
      }
      /**
       * Define a command.
       *
       * There are two styles of command: pay attention to where to put the description.
       *
       * @example
       * // Command implemented using action handler (description is supplied separately to `.command`)
       * program
       *   .command('clone <source> [destination]')
       *   .description('clone a repository into a newly created directory')
       *   .action((source, destination) => {
       *     console.log('clone command called');
       *   });
       *
       * // Command implemented using separate executable file (description is second parameter to `.command`)
       * program
       *   .command('start <service>', 'start named service')
       *   .command('stop [service]', 'stop named service, or all if no name supplied');
       *
       * @param {string} nameAndArgs - command name and arguments, args are `<required>` or `[optional]` and last may also be `variadic...`
       * @param {Object|string} [actionOptsOrExecDesc] - configuration options (for action), or description (for executable)
       * @param {Object} [execOpts] - configuration options (for executable)
       * @return {Command} returns new command for action handler, or `this` for executable command
       */
      command(nameAndArgs, actionOptsOrExecDesc, execOpts) {
        let desc = actionOptsOrExecDesc;
        let opts = execOpts;
        if (typeof desc === "object" && desc !== null) {
          opts = desc;
          desc = null;
        }
        opts = opts || {};
        const [, name3, args] = nameAndArgs.match(/([^ ]+) *(.*)/);
        const cmd = this.createCommand(name3);
        if (desc) {
          cmd.description(desc);
          cmd._executableHandler = true;
        }
        if (opts.isDefault) this._defaultCommandName = cmd._name;
        cmd._hidden = !!(opts.noHelp || opts.hidden);
        cmd._executableFile = opts.executableFile || null;
        if (args) cmd.arguments(args);
        this.commands.push(cmd);
        cmd.parent = this;
        cmd.copyInheritedSettings(this);
        if (desc) return this;
        return cmd;
      }
      /**
       * Factory routine to create a new unattached command.
       *
       * See .command() for creating an attached subcommand, which uses this routine to
       * create the command. You can override createCommand to customise subcommands.
       *
       * @param {string} [name]
       * @return {Command} new command
       */
      createCommand(name3) {
        return new _Command(name3);
      }
      /**
       * You can customise the help with a subclass of Help by overriding createHelp,
       * or by overriding Help properties using configureHelp().
       *
       * @return {Help}
       */
      createHelp() {
        return Object.assign(new Help2(), this.configureHelp());
      }
      /**
       * You can customise the help by overriding Help properties using configureHelp(),
       * or with a subclass of Help by overriding createHelp().
       *
       * @param {Object} [configuration] - configuration options
       * @return {Command|Object} `this` command for chaining, or stored configuration
       */
      configureHelp(configuration) {
        if (configuration === void 0) return this._helpConfiguration;
        this._helpConfiguration = configuration;
        return this;
      }
      /**
       * The default output goes to stdout and stderr. You can customise this for special
       * applications. You can also customise the display of errors by overriding outputError.
       *
       * The configuration properties are all functions:
       *
       *     // functions to change where being written, stdout and stderr
       *     writeOut(str)
       *     writeErr(str)
       *     // matching functions to specify width for wrapping help
       *     getOutHelpWidth()
       *     getErrHelpWidth()
       *     // functions based on what is being written out
       *     outputError(str, write) // used for displaying errors, and not used for displaying help
       *
       * @param {Object} [configuration] - configuration options
       * @return {Command|Object} `this` command for chaining, or stored configuration
       */
      configureOutput(configuration) {
        if (configuration === void 0) return this._outputConfiguration;
        Object.assign(this._outputConfiguration, configuration);
        return this;
      }
      /**
       * Display the help or a custom message after an error occurs.
       *
       * @param {boolean|string} [displayHelp]
       * @return {Command} `this` command for chaining
       */
      showHelpAfterError(displayHelp = true) {
        if (typeof displayHelp !== "string") displayHelp = !!displayHelp;
        this._showHelpAfterError = displayHelp;
        return this;
      }
      /**
       * Display suggestion of similar commands for unknown commands, or options for unknown options.
       *
       * @param {boolean} [displaySuggestion]
       * @return {Command} `this` command for chaining
       */
      showSuggestionAfterError(displaySuggestion = true) {
        this._showSuggestionAfterError = !!displaySuggestion;
        return this;
      }
      /**
       * Add a prepared subcommand.
       *
       * See .command() for creating an attached subcommand which inherits settings from its parent.
       *
       * @param {Command} cmd - new subcommand
       * @param {Object} [opts] - configuration options
       * @return {Command} `this` command for chaining
       */
      addCommand(cmd, opts) {
        if (!cmd._name) {
          throw new Error(`Command passed to .addCommand() must have a name
- specify the name in Command constructor or using .name()`);
        }
        opts = opts || {};
        if (opts.isDefault) this._defaultCommandName = cmd._name;
        if (opts.noHelp || opts.hidden) cmd._hidden = true;
        this.commands.push(cmd);
        cmd.parent = this;
        return this;
      }
      /**
       * Factory routine to create a new unattached argument.
       *
       * See .argument() for creating an attached argument, which uses this routine to
       * create the argument. You can override createArgument to return a custom argument.
       *
       * @param {string} name
       * @param {string} [description]
       * @return {Argument} new argument
       */
      createArgument(name3, description) {
        return new Argument2(name3, description);
      }
      /**
       * Define argument syntax for command.
       *
       * The default is that the argument is required, and you can explicitly
       * indicate this with <> around the name. Put [] around the name for an optional argument.
       *
       * @example
       * program.argument('<input-file>');
       * program.argument('[output-file]');
       *
       * @param {string} name
       * @param {string} [description]
       * @param {Function|*} [fn] - custom argument processing function
       * @param {*} [defaultValue]
       * @return {Command} `this` command for chaining
       */
      argument(name3, description, fn, defaultValue) {
        const argument2 = this.createArgument(name3, description);
        if (typeof fn === "function") {
          argument2.default(defaultValue).argParser(fn);
        } else {
          argument2.default(fn);
        }
        this.addArgument(argument2);
        return this;
      }
      /**
       * Define argument syntax for command, adding multiple at once (without descriptions).
       *
       * See also .argument().
       *
       * @example
       * program.arguments('<cmd> [env]');
       *
       * @param {string} names
       * @return {Command} `this` command for chaining
       */
      arguments(names) {
        names.split(/ +/).forEach((detail) => {
          this.argument(detail);
        });
        return this;
      }
      /**
       * Define argument syntax for command, adding a prepared argument.
       *
       * @param {Argument} argument
       * @return {Command} `this` command for chaining
       */
      addArgument(argument2) {
        const previousArgument = this._args.slice(-1)[0];
        if (previousArgument && previousArgument.variadic) {
          throw new Error(`only the last argument can be variadic '${previousArgument.name()}'`);
        }
        if (argument2.required && argument2.defaultValue !== void 0 && argument2.parseArg === void 0) {
          throw new Error(`a default value for a required argument is never used: '${argument2.name()}'`);
        }
        this._args.push(argument2);
        return this;
      }
      /**
       * Override default decision whether to add implicit help command.
       *
       *    addHelpCommand() // force on
       *    addHelpCommand(false); // force off
       *    addHelpCommand('help [cmd]', 'display help for [cmd]'); // force on with custom details
       *
       * @return {Command} `this` command for chaining
       */
      addHelpCommand(enableOrNameAndArgs, description) {
        if (enableOrNameAndArgs === false) {
          this._addImplicitHelpCommand = false;
        } else {
          this._addImplicitHelpCommand = true;
          if (typeof enableOrNameAndArgs === "string") {
            this._helpCommandName = enableOrNameAndArgs.split(" ")[0];
            this._helpCommandnameAndArgs = enableOrNameAndArgs;
          }
          this._helpCommandDescription = description || this._helpCommandDescription;
        }
        return this;
      }
      /**
       * @return {boolean}
       * @api private
       */
      _hasImplicitHelpCommand() {
        if (this._addImplicitHelpCommand === void 0) {
          return this.commands.length && !this._actionHandler && !this._findCommand("help");
        }
        return this._addImplicitHelpCommand;
      }
      /**
       * Add hook for life cycle event.
       *
       * @param {string} event
       * @param {Function} listener
       * @return {Command} `this` command for chaining
       */
      hook(event, listener2) {
        const allowedValues = ["preSubcommand", "preAction", "postAction"];
        if (!allowedValues.includes(event)) {
          throw new Error(`Unexpected value for event passed to hook : '${event}'.
Expecting one of '${allowedValues.join("', '")}'`);
        }
        if (this._lifeCycleHooks[event]) {
          this._lifeCycleHooks[event].push(listener2);
        } else {
          this._lifeCycleHooks[event] = [listener2];
        }
        return this;
      }
      /**
       * Register callback to use as replacement for calling process.exit.
       *
       * @param {Function} [fn] optional callback which will be passed a CommanderError, defaults to throwing
       * @return {Command} `this` command for chaining
       */
      exitOverride(fn) {
        if (fn) {
          this._exitCallback = fn;
        } else {
          this._exitCallback = (err) => {
            if (err.code !== "commander.executeSubCommandAsync") {
              throw err;
            } else {
            }
          };
        }
        return this;
      }
      /**
       * Call process.exit, and _exitCallback if defined.
       *
       * @param {number} exitCode exit code for using with process.exit
       * @param {string} code an id string representing the error
       * @param {string} message human-readable description of the error
       * @return never
       * @api private
       */
      _exit(exitCode, code7, message) {
        if (this._exitCallback) {
          this._exitCallback(new CommanderError2(exitCode, code7, message));
        }
        process11.exit(exitCode);
      }
      /**
       * Register callback `fn` for the command.
       *
       * @example
       * program
       *   .command('serve')
       *   .description('start service')
       *   .action(function() {
       *      // do work here
       *   });
       *
       * @param {Function} fn
       * @return {Command} `this` command for chaining
       */
      action(fn) {
        const listener2 = (args) => {
          const expectedArgsCount = this._args.length;
          const actionArgs = args.slice(0, expectedArgsCount);
          if (this._storeOptionsAsProperties) {
            actionArgs[expectedArgsCount] = this;
          } else {
            actionArgs[expectedArgsCount] = this.opts();
          }
          actionArgs.push(this);
          return fn.apply(this, actionArgs);
        };
        this._actionHandler = listener2;
        return this;
      }
      /**
       * Factory routine to create a new unattached option.
       *
       * See .option() for creating an attached option, which uses this routine to
       * create the option. You can override createOption to return a custom option.
       *
       * @param {string} flags
       * @param {string} [description]
       * @return {Option} new option
       */
      createOption(flags, description) {
        return new Option2(flags, description);
      }
      /**
       * Add an option.
       *
       * @param {Option} option
       * @return {Command} `this` command for chaining
       */
      addOption(option3) {
        const oname = option3.name();
        const name3 = option3.attributeName();
        if (option3.negate) {
          const positiveLongFlag = option3.long.replace(/^--no-/, "--");
          if (!this._findOption(positiveLongFlag)) {
            this.setOptionValueWithSource(name3, option3.defaultValue === void 0 ? true : option3.defaultValue, "default");
          }
        } else if (option3.defaultValue !== void 0) {
          this.setOptionValueWithSource(name3, option3.defaultValue, "default");
        }
        this.options.push(option3);
        const handleOptionValue = (val, invalidValueMessage, valueSource) => {
          if (val == null && option3.presetArg !== void 0) {
            val = option3.presetArg;
          }
          const oldValue = this.getOptionValue(name3);
          if (val !== null && option3.parseArg) {
            try {
              val = option3.parseArg(val, oldValue);
            } catch (err) {
              if (err.code === "commander.invalidArgument") {
                const message = `${invalidValueMessage} ${err.message}`;
                this.error(message, { exitCode: err.exitCode, code: err.code });
              }
              throw err;
            }
          } else if (val !== null && option3.variadic) {
            val = option3._concatValue(val, oldValue);
          }
          if (val == null) {
            if (option3.negate) {
              val = false;
            } else if (option3.isBoolean() || option3.optional) {
              val = true;
            } else {
              val = "";
            }
          }
          this.setOptionValueWithSource(name3, val, valueSource);
        };
        this.on("option:" + oname, (val) => {
          const invalidValueMessage = `error: option '${option3.flags}' argument '${val}' is invalid.`;
          handleOptionValue(val, invalidValueMessage, "cli");
        });
        if (option3.envVar) {
          this.on("optionEnv:" + oname, (val) => {
            const invalidValueMessage = `error: option '${option3.flags}' value '${val}' from env '${option3.envVar}' is invalid.`;
            handleOptionValue(val, invalidValueMessage, "env");
          });
        }
        return this;
      }
      /**
       * Internal implementation shared by .option() and .requiredOption()
       *
       * @api private
       */
      _optionEx(config3, flags, description, fn, defaultValue) {
        if (typeof flags === "object" && flags instanceof Option2) {
          throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");
        }
        const option3 = this.createOption(flags, description);
        option3.makeOptionMandatory(!!config3.mandatory);
        if (typeof fn === "function") {
          option3.default(defaultValue).argParser(fn);
        } else if (fn instanceof RegExp) {
          const regex2 = fn;
          fn = (val, def) => {
            const m2 = regex2.exec(val);
            return m2 ? m2[0] : def;
          };
          option3.default(defaultValue).argParser(fn);
        } else {
          option3.default(fn);
        }
        return this.addOption(option3);
      }
      /**
       * Define option with `flags`, `description` and optional
       * coercion `fn`.
       *
       * The `flags` string contains the short and/or long flags,
       * separated by comma, a pipe or space. The following are all valid
       * all will output this way when `--help` is used.
       *
       *     "-p, --pepper"
       *     "-p|--pepper"
       *     "-p --pepper"
       *
       * @example
       * // simple boolean defaulting to undefined
       * program.option('-p, --pepper', 'add pepper');
       *
       * program.pepper
       * // => undefined
       *
       * --pepper
       * program.pepper
       * // => true
       *
       * // simple boolean defaulting to true (unless non-negated option is also defined)
       * program.option('-C, --no-cheese', 'remove cheese');
       *
       * program.cheese
       * // => true
       *
       * --no-cheese
       * program.cheese
       * // => false
       *
       * // required argument
       * program.option('-C, --chdir <path>', 'change the working directory');
       *
       * --chdir /tmp
       * program.chdir
       * // => "/tmp"
       *
       * // optional argument
       * program.option('-c, --cheese [type]', 'add cheese [marble]');
       *
       * @param {string} flags
       * @param {string} [description]
       * @param {Function|*} [fn] - custom option processing function or default value
       * @param {*} [defaultValue]
       * @return {Command} `this` command for chaining
       */
      option(flags, description, fn, defaultValue) {
        return this._optionEx({}, flags, description, fn, defaultValue);
      }
      /**
      * Add a required option which must have a value after parsing. This usually means
      * the option must be specified on the command line. (Otherwise the same as .option().)
      *
      * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space.
      *
      * @param {string} flags
      * @param {string} [description]
      * @param {Function|*} [fn] - custom option processing function or default value
      * @param {*} [defaultValue]
      * @return {Command} `this` command for chaining
      */
      requiredOption(flags, description, fn, defaultValue) {
        return this._optionEx({ mandatory: true }, flags, description, fn, defaultValue);
      }
      /**
       * Alter parsing of short flags with optional values.
       *
       * @example
       * // for `.option('-f,--flag [value]'):
       * program.combineFlagAndOptionalValue(true);  // `-f80` is treated like `--flag=80`, this is the default behaviour
       * program.combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b`
       *
       * @param {Boolean} [combine=true] - if `true` or omitted, an optional value can be specified directly after the flag.
       */
      combineFlagAndOptionalValue(combine2 = true) {
        this._combineFlagAndOptionalValue = !!combine2;
        return this;
      }
      /**
       * Allow unknown options on the command line.
       *
       * @param {Boolean} [allowUnknown=true] - if `true` or omitted, no error will be thrown
       * for unknown options.
       */
      allowUnknownOption(allowUnknown = true) {
        this._allowUnknownOption = !!allowUnknown;
        return this;
      }
      /**
       * Allow excess command-arguments on the command line. Pass false to make excess arguments an error.
       *
       * @param {Boolean} [allowExcess=true] - if `true` or omitted, no error will be thrown
       * for excess arguments.
       */
      allowExcessArguments(allowExcess = true) {
        this._allowExcessArguments = !!allowExcess;
        return this;
      }
      /**
       * Enable positional options. Positional means global options are specified before subcommands which lets
       * subcommands reuse the same option names, and also enables subcommands to turn on passThroughOptions.
       * The default behaviour is non-positional and global options may appear anywhere on the command line.
       *
       * @param {Boolean} [positional=true]
       */
      enablePositionalOptions(positional = true) {
        this._enablePositionalOptions = !!positional;
        return this;
      }
      /**
       * Pass through options that come after command-arguments rather than treat them as command-options,
       * so actual command-options come before command-arguments. Turning this on for a subcommand requires
       * positional options to have been enabled on the program (parent commands).
       * The default behaviour is non-positional and options may appear before or after command-arguments.
       *
       * @param {Boolean} [passThrough=true]
       * for unknown options.
       */
      passThroughOptions(passThrough = true) {
        this._passThroughOptions = !!passThrough;
        if (!!this.parent && passThrough && !this.parent._enablePositionalOptions) {
          throw new Error("passThroughOptions can not be used without turning on enablePositionalOptions for parent command(s)");
        }
        return this;
      }
      /**
        * Whether to store option values as properties on command object,
        * or store separately (specify false). In both cases the option values can be accessed using .opts().
        *
        * @param {boolean} [storeAsProperties=true]
        * @return {Command} `this` command for chaining
        */
      storeOptionsAsProperties(storeAsProperties = true) {
        this._storeOptionsAsProperties = !!storeAsProperties;
        if (this.options.length) {
          throw new Error("call .storeOptionsAsProperties() before adding options");
        }
        return this;
      }
      /**
       * Retrieve option value.
       *
       * @param {string} key
       * @return {Object} value
       */
      getOptionValue(key2) {
        if (this._storeOptionsAsProperties) {
          return this[key2];
        }
        return this._optionValues[key2];
      }
      /**
       * Store option value.
       *
       * @param {string} key
       * @param {Object} value
       * @return {Command} `this` command for chaining
       */
      setOptionValue(key2, value) {
        return this.setOptionValueWithSource(key2, value, void 0);
      }
      /**
        * Store option value and where the value came from.
        *
        * @param {string} key
        * @param {Object} value
        * @param {string} source - expected values are default/config/env/cli/implied
        * @return {Command} `this` command for chaining
        */
      setOptionValueWithSource(key2, value, source2) {
        if (this._storeOptionsAsProperties) {
          this[key2] = value;
        } else {
          this._optionValues[key2] = value;
        }
        this._optionValueSources[key2] = source2;
        return this;
      }
      /**
        * Get source of option value.
        * Expected values are default | config | env | cli | implied
        *
        * @param {string} key
        * @return {string}
        */
      getOptionValueSource(key2) {
        return this._optionValueSources[key2];
      }
      /**
        * Get source of option value. See also .optsWithGlobals().
        * Expected values are default | config | env | cli | implied
        *
        * @param {string} key
        * @return {string}
        */
      getOptionValueSourceWithGlobals(key2) {
        let source2;
        getCommandAndParents(this).forEach((cmd) => {
          if (cmd.getOptionValueSource(key2) !== void 0) {
            source2 = cmd.getOptionValueSource(key2);
          }
        });
        return source2;
      }
      /**
       * Get user arguments from implied or explicit arguments.
       * Side-effects: set _scriptPath if args included script. Used for default program name, and subcommand searches.
       *
       * @api private
       */
      _prepareUserArgs(argv, parseOptions3) {
        if (argv !== void 0 && !Array.isArray(argv)) {
          throw new Error("first parameter to parse must be array or undefined");
        }
        parseOptions3 = parseOptions3 || {};
        if (argv === void 0) {
          argv = process11.argv;
          if (process11.versions && process11.versions.electron) {
            parseOptions3.from = "electron";
          }
        }
        this.rawArgs = argv.slice();
        let userArgs;
        switch (parseOptions3.from) {
          case void 0:
          case "node":
            this._scriptPath = argv[1];
            userArgs = argv.slice(2);
            break;
          case "electron":
            if (process11.defaultApp) {
              this._scriptPath = argv[1];
              userArgs = argv.slice(2);
            } else {
              userArgs = argv.slice(1);
            }
            break;
          case "user":
            userArgs = argv.slice(0);
            break;
          default:
            throw new Error(`unexpected parse option { from: '${parseOptions3.from}' }`);
        }
        if (!this._name && this._scriptPath) this.nameFromFilename(this._scriptPath);
        this._name = this._name || "program";
        return userArgs;
      }
      /**
       * Parse `argv`, setting options and invoking commands when defined.
       *
       * The default expectation is that the arguments are from node and have the application as argv[0]
       * and the script being run in argv[1], with user parameters after that.
       *
       * @example
       * program.parse(process.argv);
       * program.parse(); // implicitly use process.argv and auto-detect node vs electron conventions
       * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]
       *
       * @param {string[]} [argv] - optional, defaults to process.argv
       * @param {Object} [parseOptions] - optionally specify style of options with from: node/user/electron
       * @param {string} [parseOptions.from] - where the args are from: 'node', 'user', 'electron'
       * @return {Command} `this` command for chaining
       */
      parse(argv, parseOptions3) {
        const userArgs = this._prepareUserArgs(argv, parseOptions3);
        this._parseCommand([], userArgs);
        return this;
      }
      /**
       * Parse `argv`, setting options and invoking commands when defined.
       *
       * Use parseAsync instead of parse if any of your action handlers are async. Returns a Promise.
       *
       * The default expectation is that the arguments are from node and have the application as argv[0]
       * and the script being run in argv[1], with user parameters after that.
       *
       * @example
       * await program.parseAsync(process.argv);
       * await program.parseAsync(); // implicitly use process.argv and auto-detect node vs electron conventions
       * await program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]
       *
       * @param {string[]} [argv]
       * @param {Object} [parseOptions]
       * @param {string} parseOptions.from - where the args are from: 'node', 'user', 'electron'
       * @return {Promise}
       */
      async parseAsync(argv, parseOptions3) {
        const userArgs = this._prepareUserArgs(argv, parseOptions3);
        await this._parseCommand([], userArgs);
        return this;
      }
      /**
       * Execute a sub-command executable.
       *
       * @api private
       */
      _executeSubCommand(subcommand, args) {
        args = args.slice();
        let launchWithNode = false;
        const sourceExt = [".js", ".ts", ".tsx", ".mjs", ".cjs"];
        function findFile(baseDir, baseName) {
          const localBin = path45.resolve(baseDir, baseName);
          if (fs50.existsSync(localBin)) return localBin;
          if (sourceExt.includes(path45.extname(baseName))) return void 0;
          const foundExt = sourceExt.find((ext2) => fs50.existsSync(`${localBin}${ext2}`));
          if (foundExt) return `${localBin}${foundExt}`;
          return void 0;
        }
        this._checkForMissingMandatoryOptions();
        this._checkForConflictingOptions();
        let executableFile = subcommand._executableFile || `${this._name}-${subcommand._name}`;
        let executableDir = this._executableDir || "";
        if (this._scriptPath) {
          let resolvedScriptPath;
          try {
            resolvedScriptPath = fs50.realpathSync(this._scriptPath);
          } catch (err) {
            resolvedScriptPath = this._scriptPath;
          }
          executableDir = path45.resolve(path45.dirname(resolvedScriptPath), executableDir);
        }
        if (executableDir) {
          let localFile = findFile(executableDir, executableFile);
          if (!localFile && !subcommand._executableFile && this._scriptPath) {
            const legacyName = path45.basename(this._scriptPath, path45.extname(this._scriptPath));
            if (legacyName !== this._name) {
              localFile = findFile(executableDir, `${legacyName}-${subcommand._name}`);
            }
          }
          executableFile = localFile || executableFile;
        }
        launchWithNode = sourceExt.includes(path45.extname(executableFile));
        let proc2;
        if (process11.platform !== "win32") {
          if (launchWithNode) {
            args.unshift(executableFile);
            args = incrementNodeInspectorPort(process11.execArgv).concat(args);
            proc2 = childProcess.spawn(process11.argv[0], args, { stdio: "inherit" });
          } else {
            proc2 = childProcess.spawn(executableFile, args, { stdio: "inherit" });
          }
        } else {
          args.unshift(executableFile);
          args = incrementNodeInspectorPort(process11.execArgv).concat(args);
          proc2 = childProcess.spawn(process11.execPath, args, { stdio: "inherit" });
        }
        if (!proc2.killed) {
          const signals = ["SIGUSR1", "SIGUSR2", "SIGTERM", "SIGINT", "SIGHUP"];
          signals.forEach((signal) => {
            process11.on(signal, () => {
              if (proc2.killed === false && proc2.exitCode === null) {
                proc2.kill(signal);
              }
            });
          });
        }
        const exitCallback = this._exitCallback;
        if (!exitCallback) {
          proc2.on("close", process11.exit.bind(process11));
        } else {
          proc2.on("close", () => {
            exitCallback(new CommanderError2(process11.exitCode || 0, "commander.executeSubCommandAsync", "(close)"));
          });
        }
        proc2.on("error", (err) => {
          if (err.code === "ENOENT") {
            const executableDirMessage = executableDir ? `searched for local subcommand relative to directory '${executableDir}'` : "no directory for search for local subcommand, use .executableDir() to supply a custom directory";
            const executableMissing = `'${executableFile}' does not exist
 - if '${subcommand._name}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
 - if the default executable name is not suitable, use the executableFile option to supply a custom name or path
 - ${executableDirMessage}`;
            throw new Error(executableMissing);
          } else if (err.code === "EACCES") {
            throw new Error(`'${executableFile}' not executable`);
          }
          if (!exitCallback) {
            process11.exit(1);
          } else {
            const wrappedError = new CommanderError2(1, "commander.executeSubCommandAsync", "(error)");
            wrappedError.nestedError = err;
            exitCallback(wrappedError);
          }
        });
        this.runningCommand = proc2;
      }
      /**
       * @api private
       */
      _dispatchSubcommand(commandName, operands, unknown4) {
        const subCommand = this._findCommand(commandName);
        if (!subCommand) this.help({ error: true });
        let hookResult;
        hookResult = this._chainOrCallSubCommandHook(hookResult, subCommand, "preSubcommand");
        hookResult = this._chainOrCall(hookResult, () => {
          if (subCommand._executableHandler) {
            this._executeSubCommand(subCommand, operands.concat(unknown4));
          } else {
            return subCommand._parseCommand(operands, unknown4);
          }
        });
        return hookResult;
      }
      /**
       * Check this.args against expected this._args.
       *
       * @api private
       */
      _checkNumberOfArguments() {
        this._args.forEach((arg2, i2) => {
          if (arg2.required && this.args[i2] == null) {
            this.missingArgument(arg2.name());
          }
        });
        if (this._args.length > 0 && this._args[this._args.length - 1].variadic) {
          return;
        }
        if (this.args.length > this._args.length) {
          this._excessArguments(this.args);
        }
      }
      /**
       * Process this.args using this._args and save as this.processedArgs!
       *
       * @api private
       */
      _processArguments() {
        const myParseArg = (argument2, value, previous) => {
          let parsedValue = value;
          if (value !== null && argument2.parseArg) {
            try {
              parsedValue = argument2.parseArg(value, previous);
            } catch (err) {
              if (err.code === "commander.invalidArgument") {
                const message = `error: command-argument value '${value}' is invalid for argument '${argument2.name()}'. ${err.message}`;
                this.error(message, { exitCode: err.exitCode, code: err.code });
              }
              throw err;
            }
          }
          return parsedValue;
        };
        this._checkNumberOfArguments();
        const processedArgs = [];
        this._args.forEach((declaredArg, index4) => {
          let value = declaredArg.defaultValue;
          if (declaredArg.variadic) {
            if (index4 < this.args.length) {
              value = this.args.slice(index4);
              if (declaredArg.parseArg) {
                value = value.reduce((processed, v) => {
                  return myParseArg(declaredArg, v, processed);
                }, declaredArg.defaultValue);
              }
            } else if (value === void 0) {
              value = [];
            }
          } else if (index4 < this.args.length) {
            value = this.args[index4];
            if (declaredArg.parseArg) {
              value = myParseArg(declaredArg, value, declaredArg.defaultValue);
            }
          }
          processedArgs[index4] = value;
        });
        this.processedArgs = processedArgs;
      }
      /**
       * Once we have a promise we chain, but call synchronously until then.
       *
       * @param {Promise|undefined} promise
       * @param {Function} fn
       * @return {Promise|undefined}
       * @api private
       */
      _chainOrCall(promise, fn) {
        if (promise && promise.then && typeof promise.then === "function") {
          return promise.then(() => fn());
        }
        return fn();
      }
      /**
       *
       * @param {Promise|undefined} promise
       * @param {string} event
       * @return {Promise|undefined}
       * @api private
       */
      _chainOrCallHooks(promise, event) {
        let result = promise;
        const hooks = [];
        getCommandAndParents(this).reverse().filter((cmd) => cmd._lifeCycleHooks[event] !== void 0).forEach((hookedCommand) => {
          hookedCommand._lifeCycleHooks[event].forEach((callback) => {
            hooks.push({ hookedCommand, callback });
          });
        });
        if (event === "postAction") {
          hooks.reverse();
        }
        hooks.forEach((hookDetail) => {
          result = this._chainOrCall(result, () => {
            return hookDetail.callback(hookDetail.hookedCommand, this);
          });
        });
        return result;
      }
      /**
       *
       * @param {Promise|undefined} promise
       * @param {Command} subCommand
       * @param {string} event
       * @return {Promise|undefined}
       * @api private
       */
      _chainOrCallSubCommandHook(promise, subCommand, event) {
        let result = promise;
        if (this._lifeCycleHooks[event] !== void 0) {
          this._lifeCycleHooks[event].forEach((hook) => {
            result = this._chainOrCall(result, () => {
              return hook(this, subCommand);
            });
          });
        }
        return result;
      }
      /**
       * Process arguments in context of this command.
       * Returns action result, in case it is a promise.
       *
       * @api private
       */
      _parseCommand(operands, unknown4) {
        const parsed = this.parseOptions(unknown4);
        this._parseOptionsEnv();
        this._parseOptionsImplied();
        operands = operands.concat(parsed.operands);
        unknown4 = parsed.unknown;
        this.args = operands.concat(unknown4);
        if (operands && this._findCommand(operands[0])) {
          return this._dispatchSubcommand(operands[0], operands.slice(1), unknown4);
        }
        if (this._hasImplicitHelpCommand() && operands[0] === this._helpCommandName) {
          if (operands.length === 1) {
            this.help();
          }
          return this._dispatchSubcommand(operands[1], [], [this._helpLongFlag]);
        }
        if (this._defaultCommandName) {
          outputHelpIfRequested(this, unknown4);
          return this._dispatchSubcommand(this._defaultCommandName, operands, unknown4);
        }
        if (this.commands.length && this.args.length === 0 && !this._actionHandler && !this._defaultCommandName) {
          this.help({ error: true });
        }
        outputHelpIfRequested(this, parsed.unknown);
        this._checkForMissingMandatoryOptions();
        this._checkForConflictingOptions();
        const checkForUnknownOptions = () => {
          if (parsed.unknown.length > 0) {
            this.unknownOption(parsed.unknown[0]);
          }
        };
        const commandEvent = `command:${this.name()}`;
        if (this._actionHandler) {
          checkForUnknownOptions();
          this._processArguments();
          let actionResult;
          actionResult = this._chainOrCallHooks(actionResult, "preAction");
          actionResult = this._chainOrCall(actionResult, () => this._actionHandler(this.processedArgs));
          if (this.parent) {
            actionResult = this._chainOrCall(actionResult, () => {
              this.parent.emit(commandEvent, operands, unknown4);
            });
          }
          actionResult = this._chainOrCallHooks(actionResult, "postAction");
          return actionResult;
        }
        if (this.parent && this.parent.listenerCount(commandEvent)) {
          checkForUnknownOptions();
          this._processArguments();
          this.parent.emit(commandEvent, operands, unknown4);
        } else if (operands.length) {
          if (this._findCommand("*")) {
            return this._dispatchSubcommand("*", operands, unknown4);
          }
          if (this.listenerCount("command:*")) {
            this.emit("command:*", operands, unknown4);
          } else if (this.commands.length) {
            this.unknownCommand();
          } else {
            checkForUnknownOptions();
            this._processArguments();
          }
        } else if (this.commands.length) {
          checkForUnknownOptions();
          this.help({ error: true });
        } else {
          checkForUnknownOptions();
          this._processArguments();
        }
      }
      /**
       * Find matching command.
       *
       * @api private
       */
      _findCommand(name3) {
        if (!name3) return void 0;
        return this.commands.find((cmd) => cmd._name === name3 || cmd._aliases.includes(name3));
      }
      /**
       * Return an option matching `arg` if any.
       *
       * @param {string} arg
       * @return {Option}
       * @api private
       */
      _findOption(arg2) {
        return this.options.find((option3) => option3.is(arg2));
      }
      /**
       * Display an error message if a mandatory option does not have a value.
       * Called after checking for help flags in leaf subcommand.
       *
       * @api private
       */
      _checkForMissingMandatoryOptions() {
        for (let cmd = this; cmd; cmd = cmd.parent) {
          cmd.options.forEach((anOption) => {
            if (anOption.mandatory && cmd.getOptionValue(anOption.attributeName()) === void 0) {
              cmd.missingMandatoryOptionValue(anOption);
            }
          });
        }
      }
      /**
       * Display an error message if conflicting options are used together in this.
       *
       * @api private
       */
      _checkForConflictingLocalOptions() {
        const definedNonDefaultOptions = this.options.filter(
          (option3) => {
            const optionKey = option3.attributeName();
            if (this.getOptionValue(optionKey) === void 0) {
              return false;
            }
            return this.getOptionValueSource(optionKey) !== "default";
          }
        );
        const optionsWithConflicting = definedNonDefaultOptions.filter(
          (option3) => option3.conflictsWith.length > 0
        );
        optionsWithConflicting.forEach((option3) => {
          const conflictingAndDefined = definedNonDefaultOptions.find(
            (defined3) => option3.conflictsWith.includes(defined3.attributeName())
          );
          if (conflictingAndDefined) {
            this._conflictingOption(option3, conflictingAndDefined);
          }
        });
      }
      /**
       * Display an error message if conflicting options are used together.
       * Called after checking for help flags in leaf subcommand.
       *
       * @api private
       */
      _checkForConflictingOptions() {
        for (let cmd = this; cmd; cmd = cmd.parent) {
          cmd._checkForConflictingLocalOptions();
        }
      }
      /**
       * Parse options from `argv` removing known options,
       * and return argv split into operands and unknown arguments.
       *
       * Examples:
       *
       *     argv => operands, unknown
       *     --known kkk op => [op], []
       *     op --known kkk => [op], []
       *     sub --unknown uuu op => [sub], [--unknown uuu op]
       *     sub -- --unknown uuu op => [sub --unknown uuu op], []
       *
       * @param {String[]} argv
       * @return {{operands: String[], unknown: String[]}}
       */
      parseOptions(argv) {
        const operands = [];
        const unknown4 = [];
        let dest = operands;
        const args = argv.slice();
        function maybeOption(arg2) {
          return arg2.length > 1 && arg2[0] === "-";
        }
        let activeVariadicOption = null;
        while (args.length) {
          const arg2 = args.shift();
          if (arg2 === "--") {
            if (dest === unknown4) dest.push(arg2);
            dest.push(...args);
            break;
          }
          if (activeVariadicOption && !maybeOption(arg2)) {
            this.emit(`option:${activeVariadicOption.name()}`, arg2);
            continue;
          }
          activeVariadicOption = null;
          if (maybeOption(arg2)) {
            const option3 = this._findOption(arg2);
            if (option3) {
              if (option3.required) {
                const value = args.shift();
                if (value === void 0) this.optionMissingArgument(option3);
                this.emit(`option:${option3.name()}`, value);
              } else if (option3.optional) {
                let value = null;
                if (args.length > 0 && !maybeOption(args[0])) {
                  value = args.shift();
                }
                this.emit(`option:${option3.name()}`, value);
              } else {
                this.emit(`option:${option3.name()}`);
              }
              activeVariadicOption = option3.variadic ? option3 : null;
              continue;
            }
          }
          if (arg2.length > 2 && arg2[0] === "-" && arg2[1] !== "-") {
            const option3 = this._findOption(`-${arg2[1]}`);
            if (option3) {
              if (option3.required || option3.optional && this._combineFlagAndOptionalValue) {
                this.emit(`option:${option3.name()}`, arg2.slice(2));
              } else {
                this.emit(`option:${option3.name()}`);
                args.unshift(`-${arg2.slice(2)}`);
              }
              continue;
            }
          }
          if (/^--[^=]+=/.test(arg2)) {
            const index4 = arg2.indexOf("=");
            const option3 = this._findOption(arg2.slice(0, index4));
            if (option3 && (option3.required || option3.optional)) {
              this.emit(`option:${option3.name()}`, arg2.slice(index4 + 1));
              continue;
            }
          }
          if (maybeOption(arg2)) {
            dest = unknown4;
          }
          if ((this._enablePositionalOptions || this._passThroughOptions) && operands.length === 0 && unknown4.length === 0) {
            if (this._findCommand(arg2)) {
              operands.push(arg2);
              if (args.length > 0) unknown4.push(...args);
              break;
            } else if (arg2 === this._helpCommandName && this._hasImplicitHelpCommand()) {
              operands.push(arg2);
              if (args.length > 0) operands.push(...args);
              break;
            } else if (this._defaultCommandName) {
              unknown4.push(arg2);
              if (args.length > 0) unknown4.push(...args);
              break;
            }
          }
          if (this._passThroughOptions) {
            dest.push(arg2);
            if (args.length > 0) dest.push(...args);
            break;
          }
          dest.push(arg2);
        }
        return { operands, unknown: unknown4 };
      }
      /**
       * Return an object containing local option values as key-value pairs.
       *
       * @return {Object}
       */
      opts() {
        if (this._storeOptionsAsProperties) {
          const result = {};
          const len = this.options.length;
          for (let i2 = 0; i2 < len; i2++) {
            const key2 = this.options[i2].attributeName();
            result[key2] = key2 === this._versionOptionName ? this._version : this[key2];
          }
          return result;
        }
        return this._optionValues;
      }
      /**
       * Return an object containing merged local and global option values as key-value pairs.
       *
       * @return {Object}
       */
      optsWithGlobals() {
        return getCommandAndParents(this).reduce(
          (combinedOptions, cmd) => Object.assign(combinedOptions, cmd.opts()),
          {}
        );
      }
      /**
       * Display error message and exit (or call exitOverride).
       *
       * @param {string} message
       * @param {Object} [errorOptions]
       * @param {string} [errorOptions.code] - an id string representing the error
       * @param {number} [errorOptions.exitCode] - used with process.exit
       */
      error(message, errorOptions) {
        this._outputConfiguration.outputError(`${message}
`, this._outputConfiguration.writeErr);
        if (typeof this._showHelpAfterError === "string") {
          this._outputConfiguration.writeErr(`${this._showHelpAfterError}
`);
        } else if (this._showHelpAfterError) {
          this._outputConfiguration.writeErr("\n");
          this.outputHelp({ error: true });
        }
        const config3 = errorOptions || {};
        const exitCode = config3.exitCode || 1;
        const code7 = config3.code || "commander.error";
        this._exit(exitCode, code7, message);
      }
      /**
       * Apply any option related environment variables, if option does
       * not have a value from cli or client code.
       *
       * @api private
       */
      _parseOptionsEnv() {
        this.options.forEach((option3) => {
          if (option3.envVar && option3.envVar in process11.env) {
            const optionKey = option3.attributeName();
            if (this.getOptionValue(optionKey) === void 0 || ["default", "config", "env"].includes(this.getOptionValueSource(optionKey))) {
              if (option3.required || option3.optional) {
                this.emit(`optionEnv:${option3.name()}`, process11.env[option3.envVar]);
              } else {
                this.emit(`optionEnv:${option3.name()}`);
              }
            }
          }
        });
      }
      /**
       * Apply any implied option values, if option is undefined or default value.
       *
       * @api private
       */
      _parseOptionsImplied() {
        const dualHelper = new DualOptions(this.options);
        const hasCustomOptionValue = (optionKey) => {
          return this.getOptionValue(optionKey) !== void 0 && !["default", "implied"].includes(this.getOptionValueSource(optionKey));
        };
        this.options.filter((option3) => option3.implied !== void 0 && hasCustomOptionValue(option3.attributeName()) && dualHelper.valueFromOption(this.getOptionValue(option3.attributeName()), option3)).forEach((option3) => {
          Object.keys(option3.implied).filter((impliedKey) => !hasCustomOptionValue(impliedKey)).forEach((impliedKey) => {
            this.setOptionValueWithSource(impliedKey, option3.implied[impliedKey], "implied");
          });
        });
      }
      /**
       * Argument `name` is missing.
       *
       * @param {string} name
       * @api private
       */
      missingArgument(name3) {
        const message = `error: missing required argument '${name3}'`;
        this.error(message, { code: "commander.missingArgument" });
      }
      /**
       * `Option` is missing an argument.
       *
       * @param {Option} option
       * @api private
       */
      optionMissingArgument(option3) {
        const message = `error: option '${option3.flags}' argument missing`;
        this.error(message, { code: "commander.optionMissingArgument" });
      }
      /**
       * `Option` does not have a value, and is a mandatory option.
       *
       * @param {Option} option
       * @api private
       */
      missingMandatoryOptionValue(option3) {
        const message = `error: required option '${option3.flags}' not specified`;
        this.error(message, { code: "commander.missingMandatoryOptionValue" });
      }
      /**
       * `Option` conflicts with another option.
       *
       * @param {Option} option
       * @param {Option} conflictingOption
       * @api private
       */
      _conflictingOption(option3, conflictingOption) {
        const findBestOptionFromValue = (option4) => {
          const optionKey = option4.attributeName();
          const optionValue = this.getOptionValue(optionKey);
          const negativeOption = this.options.find((target) => target.negate && optionKey === target.attributeName());
          const positiveOption = this.options.find((target) => !target.negate && optionKey === target.attributeName());
          if (negativeOption && (negativeOption.presetArg === void 0 && optionValue === false || negativeOption.presetArg !== void 0 && optionValue === negativeOption.presetArg)) {
            return negativeOption;
          }
          return positiveOption || option4;
        };
        const getErrorMessage = (option4) => {
          const bestOption = findBestOptionFromValue(option4);
          const optionKey = bestOption.attributeName();
          const source2 = this.getOptionValueSource(optionKey);
          if (source2 === "env") {
            return `environment variable '${bestOption.envVar}'`;
          }
          return `option '${bestOption.flags}'`;
        };
        const message = `error: ${getErrorMessage(option3)} cannot be used with ${getErrorMessage(conflictingOption)}`;
        this.error(message, { code: "commander.conflictingOption" });
      }
      /**
       * Unknown option `flag`.
       *
       * @param {string} flag
       * @api private
       */
      unknownOption(flag) {
        if (this._allowUnknownOption) return;
        let suggestion = "";
        if (flag.startsWith("--") && this._showSuggestionAfterError) {
          let candidateFlags = [];
          let command = this;
          do {
            const moreFlags = command.createHelp().visibleOptions(command).filter((option3) => option3.long).map((option3) => option3.long);
            candidateFlags = candidateFlags.concat(moreFlags);
            command = command.parent;
          } while (command && !command._enablePositionalOptions);
          suggestion = suggestSimilar(flag, candidateFlags);
        }
        const message = `error: unknown option '${flag}'${suggestion}`;
        this.error(message, { code: "commander.unknownOption" });
      }
      /**
       * Excess arguments, more than expected.
       *
       * @param {string[]} receivedArgs
       * @api private
       */
      _excessArguments(receivedArgs) {
        if (this._allowExcessArguments) return;
        const expected = this._args.length;
        const s5 = expected === 1 ? "" : "s";
        const forSubcommand = this.parent ? ` for '${this.name()}'` : "";
        const message = `error: too many arguments${forSubcommand}. Expected ${expected} argument${s5} but got ${receivedArgs.length}.`;
        this.error(message, { code: "commander.excessArguments" });
      }
      /**
       * Unknown command.
       *
       * @api private
       */
      unknownCommand() {
        const unknownName = this.args[0];
        let suggestion = "";
        if (this._showSuggestionAfterError) {
          const candidateNames = [];
          this.createHelp().visibleCommands(this).forEach((command) => {
            candidateNames.push(command.name());
            if (command.alias()) candidateNames.push(command.alias());
          });
          suggestion = suggestSimilar(unknownName, candidateNames);
        }
        const message = `error: unknown command '${unknownName}'${suggestion}`;
        this.error(message, { code: "commander.unknownCommand" });
      }
      /**
       * Set the program version to `str`.
       *
       * This method auto-registers the "-V, --version" flag
       * which will print the version number when passed.
       *
       * You can optionally supply the  flags and description to override the defaults.
       *
       * @param {string} str
       * @param {string} [flags]
       * @param {string} [description]
       * @return {this | string} `this` command for chaining, or version string if no arguments
       */
      version(str2, flags, description) {
        if (str2 === void 0) return this._version;
        this._version = str2;
        flags = flags || "-V, --version";
        description = description || "output the version number";
        const versionOption = this.createOption(flags, description);
        this._versionOptionName = versionOption.attributeName();
        this.options.push(versionOption);
        this.on("option:" + versionOption.name(), () => {
          this._outputConfiguration.writeOut(`${str2}
`);
          this._exit(0, "commander.version", str2);
        });
        return this;
      }
      /**
       * Set the description.
       *
       * @param {string} [str]
       * @param {Object} [argsDescription]
       * @return {string|Command}
       */
      description(str2, argsDescription) {
        if (str2 === void 0 && argsDescription === void 0) return this._description;
        this._description = str2;
        if (argsDescription) {
          this._argsDescription = argsDescription;
        }
        return this;
      }
      /**
       * Set the summary. Used when listed as subcommand of parent.
       *
       * @param {string} [str]
       * @return {string|Command}
       */
      summary(str2) {
        if (str2 === void 0) return this._summary;
        this._summary = str2;
        return this;
      }
      /**
       * Set an alias for the command.
       *
       * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help.
       *
       * @param {string} [alias]
       * @return {string|Command}
       */
      alias(alias) {
        if (alias === void 0) return this._aliases[0];
        let command = this;
        if (this.commands.length !== 0 && this.commands[this.commands.length - 1]._executableHandler) {
          command = this.commands[this.commands.length - 1];
        }
        if (alias === command._name) throw new Error("Command alias can't be the same as its name");
        command._aliases.push(alias);
        return this;
      }
      /**
       * Set aliases for the command.
       *
       * Only the first alias is shown in the auto-generated help.
       *
       * @param {string[]} [aliases]
       * @return {string[]|Command}
       */
      aliases(aliases2) {
        if (aliases2 === void 0) return this._aliases;
        aliases2.forEach((alias) => this.alias(alias));
        return this;
      }
      /**
       * Set / get the command usage `str`.
       *
       * @param {string} [str]
       * @return {String|Command}
       */
      usage(str2) {
        if (str2 === void 0) {
          if (this._usage) return this._usage;
          const args = this._args.map((arg2) => {
            return humanReadableArgName(arg2);
          });
          return [].concat(
            this.options.length || this._hasHelpOption ? "[options]" : [],
            this.commands.length ? "[command]" : [],
            this._args.length ? args : []
          ).join(" ");
        }
        this._usage = str2;
        return this;
      }
      /**
       * Get or set the name of the command.
       *
       * @param {string} [str]
       * @return {string|Command}
       */
      name(str2) {
        if (str2 === void 0) return this._name;
        this._name = str2;
        return this;
      }
      /**
       * Set the name of the command from script filename, such as process.argv[1],
       * or require.main.filename, or __filename.
       *
       * (Used internally and public although not documented in README.)
       *
       * @example
       * program.nameFromFilename(require.main.filename);
       *
       * @param {string} filename
       * @return {Command}
       */
      nameFromFilename(filename) {
        this._name = path45.basename(filename, path45.extname(filename));
        return this;
      }
      /**
       * Get or set the directory for searching for executable subcommands of this command.
       *
       * @example
       * program.executableDir(__dirname);
       * // or
       * program.executableDir('subcommands');
       *
       * @param {string} [path]
       * @return {string|Command}
       */
      executableDir(path46) {
        if (path46 === void 0) return this._executableDir;
        this._executableDir = path46;
        return this;
      }
      /**
       * Return program help documentation.
       *
       * @param {{ error: boolean }} [contextOptions] - pass {error:true} to wrap for stderr instead of stdout
       * @return {string}
       */
      helpInformation(contextOptions) {
        const helper = this.createHelp();
        if (helper.helpWidth === void 0) {
          helper.helpWidth = contextOptions && contextOptions.error ? this._outputConfiguration.getErrHelpWidth() : this._outputConfiguration.getOutHelpWidth();
        }
        return helper.formatHelp(this, helper);
      }
      /**
       * @api private
       */
      _getHelpContext(contextOptions) {
        contextOptions = contextOptions || {};
        const context = { error: !!contextOptions.error };
        let write3;
        if (context.error) {
          write3 = (arg2) => this._outputConfiguration.writeErr(arg2);
        } else {
          write3 = (arg2) => this._outputConfiguration.writeOut(arg2);
        }
        context.write = contextOptions.write || write3;
        context.command = this;
        return context;
      }
      /**
       * Output help information for this command.
       *
       * Outputs built-in help, and custom text added using `.addHelpText()`.
       *
       * @param {{ error: boolean } | Function} [contextOptions] - pass {error:true} to write to stderr instead of stdout
       */
      outputHelp(contextOptions) {
        let deprecatedCallback;
        if (typeof contextOptions === "function") {
          deprecatedCallback = contextOptions;
          contextOptions = void 0;
        }
        const context = this._getHelpContext(contextOptions);
        getCommandAndParents(this).reverse().forEach((command) => command.emit("beforeAllHelp", context));
        this.emit("beforeHelp", context);
        let helpInformation = this.helpInformation(context);
        if (deprecatedCallback) {
          helpInformation = deprecatedCallback(helpInformation);
          if (typeof helpInformation !== "string" && !Buffer.isBuffer(helpInformation)) {
            throw new Error("outputHelp callback must return a string or a Buffer");
          }
        }
        context.write(helpInformation);
        this.emit(this._helpLongFlag);
        this.emit("afterHelp", context);
        getCommandAndParents(this).forEach((command) => command.emit("afterAllHelp", context));
      }
      /**
       * You can pass in flags and a description to override the help
       * flags and help description for your command. Pass in false to
       * disable the built-in help option.
       *
       * @param {string | boolean} [flags]
       * @param {string} [description]
       * @return {Command} `this` command for chaining
       */
      helpOption(flags, description) {
        if (typeof flags === "boolean") {
          this._hasHelpOption = flags;
          return this;
        }
        this._helpFlags = flags || this._helpFlags;
        this._helpDescription = description || this._helpDescription;
        const helpFlags = splitOptionFlags(this._helpFlags);
        this._helpShortFlag = helpFlags.shortFlag;
        this._helpLongFlag = helpFlags.longFlag;
        return this;
      }
      /**
       * Output help information and exit.
       *
       * Outputs built-in help, and custom text added using `.addHelpText()`.
       *
       * @param {{ error: boolean }} [contextOptions] - pass {error:true} to write to stderr instead of stdout
       */
      help(contextOptions) {
        this.outputHelp(contextOptions);
        let exitCode = process11.exitCode || 0;
        if (exitCode === 0 && contextOptions && typeof contextOptions !== "function" && contextOptions.error) {
          exitCode = 1;
        }
        this._exit(exitCode, "commander.help", "(outputHelp)");
      }
      /**
       * Add additional text to be displayed with the built-in help.
       *
       * Position is 'before' or 'after' to affect just this command,
       * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands.
       *
       * @param {string} position - before or after built-in help
       * @param {string | Function} text - string to add, or a function returning a string
       * @return {Command} `this` command for chaining
       */
      addHelpText(position6, text7) {
        const allowedValues = ["beforeAll", "before", "after", "afterAll"];
        if (!allowedValues.includes(position6)) {
          throw new Error(`Unexpected value for position to addHelpText.
Expecting one of '${allowedValues.join("', '")}'`);
        }
        const helpEvent = `${position6}Help`;
        this.on(helpEvent, (context) => {
          let helpStr;
          if (typeof text7 === "function") {
            helpStr = text7({ error: context.error, command: context.command });
          } else {
            helpStr = text7;
          }
          if (helpStr) {
            context.write(`${helpStr}
`);
          }
        });
        return this;
      }
    };
    function outputHelpIfRequested(cmd, args) {
      const helpOption = cmd._hasHelpOption && args.find((arg2) => arg2 === cmd._helpLongFlag || arg2 === cmd._helpShortFlag);
      if (helpOption) {
        cmd.outputHelp();
        cmd._exit(0, "commander.helpDisplayed", "(outputHelp)");
      }
    }
    function incrementNodeInspectorPort(args) {
      return args.map((arg2) => {
        if (!arg2.startsWith("--inspect")) {
          return arg2;
        }
        let debugOption;
        let debugHost = "127.0.0.1";
        let debugPort = "9229";
        let match3;
        if ((match3 = arg2.match(/^(--inspect(-brk)?)$/)) !== null) {
          debugOption = match3[1];
        } else if ((match3 = arg2.match(/^(--inspect(-brk|-port)?)=([^:]+)$/)) !== null) {
          debugOption = match3[1];
          if (/^\d+$/.test(match3[3])) {
            debugPort = match3[3];
          } else {
            debugHost = match3[3];
          }
        } else if ((match3 = arg2.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/)) !== null) {
          debugOption = match3[1];
          debugHost = match3[3];
          debugPort = match3[4];
        }
        if (debugOption && debugPort !== "0") {
          return `${debugOption}=${debugHost}:${parseInt(debugPort) + 1}`;
        }
        return arg2;
      });
    }
    function getCommandAndParents(startCommand) {
      const result = [];
      for (let command = startCommand; command; command = command.parent) {
        result.push(command);
      }
      return result;
    }
    exports2.Command = Command2;
  }
});

// ../../node_modules/commander/index.js
var require_commander = __commonJS({
  "../../node_modules/commander/index.js"(exports2, module2) {
    var { Argument: Argument2 } = require_argument();
    var { Command: Command2 } = require_command();
    var { CommanderError: CommanderError2, InvalidArgumentError: InvalidArgumentError2 } = require_error();
    var { Help: Help2 } = require_help();
    var { Option: Option2 } = require_option();
    exports2 = module2.exports = new Command2();
    exports2.program = exports2;
    exports2.Argument = Argument2;
    exports2.Command = Command2;
    exports2.CommanderError = CommanderError2;
    exports2.Help = Help2;
    exports2.InvalidArgumentError = InvalidArgumentError2;
    exports2.InvalidOptionArgumentError = InvalidArgumentError2;
    exports2.Option = Option2;
  }
});

// ../../node_modules/spdx-license-ids/index.json
var require_spdx_license_ids = __commonJS({
  "../../node_modules/spdx-license-ids/index.json"(exports2, module2) {
    module2.exports = [
      "0BSD",
      "AAL",
      "ADSL",
      "AFL-1.1",
      "AFL-1.2",
      "AFL-2.0",
      "AFL-2.1",
      "AFL-3.0",
      "AGPL-1.0-only",
      "AGPL-1.0-or-later",
      "AGPL-3.0-only",
      "AGPL-3.0-or-later",
      "AMDPLPA",
      "AML",
      "AMPAS",
      "ANTLR-PD",
      "ANTLR-PD-fallback",
      "APAFML",
      "APL-1.0",
      "APSL-1.0",
      "APSL-1.1",
      "APSL-1.2",
      "APSL-2.0",
      "Abstyles",
      "AdaCore-doc",
      "Adobe-2006",
      "Adobe-Glyph",
      "Afmparse",
      "Aladdin",
      "Apache-1.0",
      "Apache-1.1",
      "Apache-2.0",
      "App-s2p",
      "Arphic-1999",
      "Artistic-1.0",
      "Artistic-1.0-Perl",
      "Artistic-1.0-cl8",
      "Artistic-2.0",
      "BSD-1-Clause",
      "BSD-2-Clause",
      "BSD-2-Clause-Patent",
      "BSD-2-Clause-Views",
      "BSD-3-Clause",
      "BSD-3-Clause-Attribution",
      "BSD-3-Clause-Clear",
      "BSD-3-Clause-LBNL",
      "BSD-3-Clause-Modification",
      "BSD-3-Clause-No-Military-License",
      "BSD-3-Clause-No-Nuclear-License",
      "BSD-3-Clause-No-Nuclear-License-2014",
      "BSD-3-Clause-No-Nuclear-Warranty",
      "BSD-3-Clause-Open-MPI",
      "BSD-4-Clause",
      "BSD-4-Clause-Shortened",
      "BSD-4-Clause-UC",
      "BSD-4.3RENO",
      "BSD-4.3TAHOE",
      "BSD-Advertising-Acknowledgement",
      "BSD-Attribution-HPND-disclaimer",
      "BSD-Protection",
      "BSD-Source-Code",
      "BSL-1.0",
      "BUSL-1.1",
      "Baekmuk",
      "Bahyph",
      "Barr",
      "Beerware",
      "BitTorrent-1.0",
      "BitTorrent-1.1",
      "Bitstream-Charter",
      "Bitstream-Vera",
      "BlueOak-1.0.0",
      "Borceux",
      "Brian-Gladman-3-Clause",
      "C-UDA-1.0",
      "CAL-1.0",
      "CAL-1.0-Combined-Work-Exception",
      "CATOSL-1.1",
      "CC-BY-1.0",
      "CC-BY-2.0",
      "CC-BY-2.5",
      "CC-BY-2.5-AU",
      "CC-BY-3.0",
      "CC-BY-3.0-AT",
      "CC-BY-3.0-DE",
      "CC-BY-3.0-IGO",
      "CC-BY-3.0-NL",
      "CC-BY-3.0-US",
      "CC-BY-4.0",
      "CC-BY-NC-1.0",
      "CC-BY-NC-2.0",
      "CC-BY-NC-2.5",
      "CC-BY-NC-3.0",
      "CC-BY-NC-3.0-DE",
      "CC-BY-NC-4.0",
      "CC-BY-NC-ND-1.0",
      "CC-BY-NC-ND-2.0",
      "CC-BY-NC-ND-2.5",
      "CC-BY-NC-ND-3.0",
      "CC-BY-NC-ND-3.0-DE",
      "CC-BY-NC-ND-3.0-IGO",
      "CC-BY-NC-ND-4.0",
      "CC-BY-NC-SA-1.0",
      "CC-BY-NC-SA-2.0",
      "CC-BY-NC-SA-2.0-DE",
      "CC-BY-NC-SA-2.0-FR",
      "CC-BY-NC-SA-2.0-UK",
      "CC-BY-NC-SA-2.5",
      "CC-BY-NC-SA-3.0",
      "CC-BY-NC-SA-3.0-DE",
      "CC-BY-NC-SA-3.0-IGO",
      "CC-BY-NC-SA-4.0",
      "CC-BY-ND-1.0",
      "CC-BY-ND-2.0",
      "CC-BY-ND-2.5",
      "CC-BY-ND-3.0",
      "CC-BY-ND-3.0-DE",
      "CC-BY-ND-4.0",
      "CC-BY-SA-1.0",
      "CC-BY-SA-2.0",
      "CC-BY-SA-2.0-UK",
      "CC-BY-SA-2.1-JP",
      "CC-BY-SA-2.5",
      "CC-BY-SA-3.0",
      "CC-BY-SA-3.0-AT",
      "CC-BY-SA-3.0-DE",
      "CC-BY-SA-4.0",
      "CC-PDDC",
      "CC0-1.0",
      "CDDL-1.0",
      "CDDL-1.1",
      "CDL-1.0",
      "CDLA-Permissive-1.0",
      "CDLA-Permissive-2.0",
      "CDLA-Sharing-1.0",
      "CECILL-1.0",
      "CECILL-1.1",
      "CECILL-2.0",
      "CECILL-2.1",
      "CECILL-B",
      "CECILL-C",
      "CERN-OHL-1.1",
      "CERN-OHL-1.2",
      "CERN-OHL-P-2.0",
      "CERN-OHL-S-2.0",
      "CERN-OHL-W-2.0",
      "CFITSIO",
      "CMU-Mach",
      "CNRI-Jython",
      "CNRI-Python",
      "CNRI-Python-GPL-Compatible",
      "COIL-1.0",
      "CPAL-1.0",
      "CPL-1.0",
      "CPOL-1.02",
      "CUA-OPL-1.0",
      "Caldera",
      "ClArtistic",
      "Clips",
      "Community-Spec-1.0",
      "Condor-1.1",
      "Cornell-Lossless-JPEG",
      "Crossword",
      "CrystalStacker",
      "Cube",
      "D-FSL-1.0",
      "DL-DE-BY-2.0",
      "DOC",
      "DRL-1.0",
      "DSDP",
      "Dotseqn",
      "ECL-1.0",
      "ECL-2.0",
      "EFL-1.0",
      "EFL-2.0",
      "EPICS",
      "EPL-1.0",
      "EPL-2.0",
      "EUDatagrid",
      "EUPL-1.0",
      "EUPL-1.1",
      "EUPL-1.2",
      "Elastic-2.0",
      "Entessa",
      "ErlPL-1.1",
      "Eurosym",
      "FDK-AAC",
      "FSFAP",
      "FSFUL",
      "FSFULLR",
      "FSFULLRWD",
      "FTL",
      "Fair",
      "Frameworx-1.0",
      "FreeBSD-DOC",
      "FreeImage",
      "GD",
      "GFDL-1.1-invariants-only",
      "GFDL-1.1-invariants-or-later",
      "GFDL-1.1-no-invariants-only",
      "GFDL-1.1-no-invariants-or-later",
      "GFDL-1.1-only",
      "GFDL-1.1-or-later",
      "GFDL-1.2-invariants-only",
      "GFDL-1.2-invariants-or-later",
      "GFDL-1.2-no-invariants-only",
      "GFDL-1.2-no-invariants-or-later",
      "GFDL-1.2-only",
      "GFDL-1.2-or-later",
      "GFDL-1.3-invariants-only",
      "GFDL-1.3-invariants-or-later",
      "GFDL-1.3-no-invariants-only",
      "GFDL-1.3-no-invariants-or-later",
      "GFDL-1.3-only",
      "GFDL-1.3-or-later",
      "GL2PS",
      "GLWTPL",
      "GPL-1.0-only",
      "GPL-1.0-or-later",
      "GPL-2.0-only",
      "GPL-2.0-or-later",
      "GPL-3.0-only",
      "GPL-3.0-or-later",
      "Giftware",
      "Glide",
      "Glulxe",
      "Graphics-Gems",
      "HP-1986",
      "HPND",
      "HPND-Markus-Kuhn",
      "HPND-export-US",
      "HPND-sell-variant",
      "HPND-sell-variant-MIT-disclaimer",
      "HTMLTIDY",
      "HaskellReport",
      "Hippocratic-2.1",
      "IBM-pibs",
      "ICU",
      "IEC-Code-Components-EULA",
      "IJG",
      "IJG-short",
      "IPA",
      "IPL-1.0",
      "ISC",
      "ImageMagick",
      "Imlib2",
      "Info-ZIP",
      "Intel",
      "Intel-ACPI",
      "Interbase-1.0",
      "JPL-image",
      "JPNIC",
      "JSON",
      "Jam",
      "JasPer-2.0",
      "Kazlib",
      "Knuth-CTAN",
      "LAL-1.2",
      "LAL-1.3",
      "LGPL-2.0-only",
      "LGPL-2.0-or-later",
      "LGPL-2.1-only",
      "LGPL-2.1-or-later",
      "LGPL-3.0-only",
      "LGPL-3.0-or-later",
      "LGPLLR",
      "LOOP",
      "LPL-1.0",
      "LPL-1.02",
      "LPPL-1.0",
      "LPPL-1.1",
      "LPPL-1.2",
      "LPPL-1.3a",
      "LPPL-1.3c",
      "LZMA-SDK-9.11-to-9.20",
      "LZMA-SDK-9.22",
      "Latex2e",
      "Leptonica",
      "LiLiQ-P-1.1",
      "LiLiQ-R-1.1",
      "LiLiQ-Rplus-1.1",
      "Libpng",
      "Linux-OpenIB",
      "Linux-man-pages-copyleft",
      "MIT",
      "MIT-0",
      "MIT-CMU",
      "MIT-Modern-Variant",
      "MIT-Wu",
      "MIT-advertising",
      "MIT-enna",
      "MIT-feh",
      "MIT-open-group",
      "MITNFA",
      "MPL-1.0",
      "MPL-1.1",
      "MPL-2.0",
      "MPL-2.0-no-copyleft-exception",
      "MS-LPL",
      "MS-PL",
      "MS-RL",
      "MTLL",
      "MakeIndex",
      "Martin-Birgmeier",
      "Minpack",
      "MirOS",
      "Motosoto",
      "MulanPSL-1.0",
      "MulanPSL-2.0",
      "Multics",
      "Mup",
      "NAIST-2003",
      "NASA-1.3",
      "NBPL-1.0",
      "NCGL-UK-2.0",
      "NCSA",
      "NGPL",
      "NICTA-1.0",
      "NIST-PD",
      "NIST-PD-fallback",
      "NLOD-1.0",
      "NLOD-2.0",
      "NLPL",
      "NOSL",
      "NPL-1.0",
      "NPL-1.1",
      "NPOSL-3.0",
      "NRL",
      "NTP",
      "NTP-0",
      "Naumen",
      "Net-SNMP",
      "NetCDF",
      "Newsletr",
      "Nokia",
      "Noweb",
      "O-UDA-1.0",
      "OCCT-PL",
      "OCLC-2.0",
      "ODC-By-1.0",
      "ODbL-1.0",
      "OFFIS",
      "OFL-1.0",
      "OFL-1.0-RFN",
      "OFL-1.0-no-RFN",
      "OFL-1.1",
      "OFL-1.1-RFN",
      "OFL-1.1-no-RFN",
      "OGC-1.0",
      "OGDL-Taiwan-1.0",
      "OGL-Canada-2.0",
      "OGL-UK-1.0",
      "OGL-UK-2.0",
      "OGL-UK-3.0",
      "OGTSL",
      "OLDAP-1.1",
      "OLDAP-1.2",
      "OLDAP-1.3",
      "OLDAP-1.4",
      "OLDAP-2.0",
      "OLDAP-2.0.1",
      "OLDAP-2.1",
      "OLDAP-2.2",
      "OLDAP-2.2.1",
      "OLDAP-2.2.2",
      "OLDAP-2.3",
      "OLDAP-2.4",
      "OLDAP-2.5",
      "OLDAP-2.6",
      "OLDAP-2.7",
      "OLDAP-2.8",
      "OML",
      "OPL-1.0",
      "OPUBL-1.0",
      "OSET-PL-2.1",
      "OSL-1.0",
      "OSL-1.1",
      "OSL-2.0",
      "OSL-2.1",
      "OSL-3.0",
      "OpenPBS-2.3",
      "OpenSSL",
      "PDDL-1.0",
      "PHP-3.0",
      "PHP-3.01",
      "PSF-2.0",
      "Parity-6.0.0",
      "Parity-7.0.0",
      "Plexus",
      "PolyForm-Noncommercial-1.0.0",
      "PolyForm-Small-Business-1.0.0",
      "PostgreSQL",
      "Python-2.0",
      "Python-2.0.1",
      "QPL-1.0",
      "QPL-1.0-INRIA-2004",
      "Qhull",
      "RHeCos-1.1",
      "RPL-1.1",
      "RPL-1.5",
      "RPSL-1.0",
      "RSA-MD",
      "RSCPL",
      "Rdisc",
      "Ruby",
      "SAX-PD",
      "SCEA",
      "SGI-B-1.0",
      "SGI-B-1.1",
      "SGI-B-2.0",
      "SHL-0.5",
      "SHL-0.51",
      "SISSL",
      "SISSL-1.2",
      "SMLNJ",
      "SMPPL",
      "SNIA",
      "SPL-1.0",
      "SSH-OpenSSH",
      "SSH-short",
      "SSPL-1.0",
      "SWL",
      "Saxpath",
      "SchemeReport",
      "Sendmail",
      "Sendmail-8.23",
      "SimPL-2.0",
      "Sleepycat",
      "Spencer-86",
      "Spencer-94",
      "Spencer-99",
      "SugarCRM-1.1.3",
      "SunPro",
      "Symlinks",
      "TAPR-OHL-1.0",
      "TCL",
      "TCP-wrappers",
      "TMate",
      "TORQUE-1.1",
      "TOSL",
      "TPDL",
      "TPL-1.0",
      "TTWL",
      "TU-Berlin-1.0",
      "TU-Berlin-2.0",
      "UCAR",
      "UCL-1.0",
      "UPL-1.0",
      "Unicode-DFS-2015",
      "Unicode-DFS-2016",
      "Unicode-TOU",
      "Unlicense",
      "VOSTROM",
      "VSL-1.0",
      "Vim",
      "W3C",
      "W3C-19980720",
      "W3C-20150513",
      "WTFPL",
      "Watcom-1.0",
      "Wsuipa",
      "X11",
      "X11-distribute-modifications-variant",
      "XFree86-1.1",
      "XSkat",
      "Xerox",
      "Xnet",
      "YPL-1.0",
      "YPL-1.1",
      "ZPL-1.1",
      "ZPL-2.0",
      "ZPL-2.1",
      "Zed",
      "Zend-2.0",
      "Zimbra-1.3",
      "Zimbra-1.4",
      "Zlib",
      "blessing",
      "bzip2-1.0.6",
      "checkmk",
      "copyleft-next-0.3.0",
      "copyleft-next-0.3.1",
      "curl",
      "diffmark",
      "dvipdfm",
      "eGenix",
      "etalab-2.0",
      "gSOAP-1.3b",
      "gnuplot",
      "iMatix",
      "libpng-2.0",
      "libselinux-1.0",
      "libtiff",
      "libutil-David-Nugent",
      "mpi-permissive",
      "mpich2",
      "mplus",
      "psfrag",
      "psutils",
      "snprintf",
      "w3m",
      "xinetd",
      "xlock",
      "xpp",
      "zlib-acknowledgement"
    ];
  }
});

// ../../node_modules/spdx-license-ids/deprecated.json
var require_deprecated = __commonJS({
  "../../node_modules/spdx-license-ids/deprecated.json"(exports2, module2) {
    module2.exports = [
      "AGPL-1.0",
      "AGPL-3.0",
      "BSD-2-Clause-FreeBSD",
      "BSD-2-Clause-NetBSD",
      "GFDL-1.1",
      "GFDL-1.2",
      "GFDL-1.3",
      "GPL-1.0",
      "GPL-2.0",
      "GPL-2.0-with-GCC-exception",
      "GPL-2.0-with-autoconf-exception",
      "GPL-2.0-with-bison-exception",
      "GPL-2.0-with-classpath-exception",
      "GPL-2.0-with-font-exception",
      "GPL-3.0",
      "GPL-3.0-with-GCC-exception",
      "GPL-3.0-with-autoconf-exception",
      "LGPL-2.0",
      "LGPL-2.1",
      "LGPL-3.0",
      "Nunit",
      "StandardML-NJ",
      "bzip2-1.0.5",
      "eCos-2.0",
      "wxWindows"
    ];
  }
});

// ../../node_modules/spdx-exceptions/index.json
var require_spdx_exceptions = __commonJS({
  "../../node_modules/spdx-exceptions/index.json"(exports2, module2) {
    module2.exports = [
      "389-exception",
      "Autoconf-exception-2.0",
      "Autoconf-exception-3.0",
      "Bison-exception-2.2",
      "Bootloader-exception",
      "Classpath-exception-2.0",
      "CLISP-exception-2.0",
      "DigiRule-FOSS-exception",
      "eCos-exception-2.0",
      "Fawkes-Runtime-exception",
      "FLTK-exception",
      "Font-exception-2.0",
      "freertos-exception-2.0",
      "GCC-exception-2.0",
      "GCC-exception-3.1",
      "gnu-javamail-exception",
      "GPL-3.0-linking-exception",
      "GPL-3.0-linking-source-exception",
      "GPL-CC-1.0",
      "i2p-gpl-java-exception",
      "Libtool-exception",
      "Linux-syscall-note",
      "LLVM-exception",
      "LZMA-exception",
      "mif-exception",
      "Nokia-Qt-exception-1.1",
      "OCaml-LGPL-linking-exception",
      "OCCT-exception-1.0",
      "OpenJDK-assembly-exception-1.0",
      "openvpn-openssl-exception",
      "PS-or-PDF-font-exception-20170817",
      "Qt-GPL-exception-1.0",
      "Qt-LGPL-exception-1.1",
      "Qwt-exception-1.0",
      "Swift-exception",
      "u-boot-exception-2.0",
      "Universal-FOSS-exception-1.0",
      "WxWindows-exception-3.1"
    ];
  }
});

// ../../node_modules/spdx-expression-parse/scan.js
var require_scan = __commonJS({
  "../../node_modules/spdx-expression-parse/scan.js"(exports2, module2) {
    "use strict";
    var licenses2 = [].concat(require_spdx_license_ids()).concat(require_deprecated());
    var exceptions = require_spdx_exceptions();
    module2.exports = function(source2) {
      var index4 = 0;
      function hasMore() {
        return index4 < source2.length;
      }
      function read2(value) {
        if (value instanceof RegExp) {
          var chars = source2.slice(index4);
          var match3 = chars.match(value);
          if (match3) {
            index4 += match3[0].length;
            return match3[0];
          }
        } else {
          if (source2.indexOf(value, index4) === index4) {
            index4 += value.length;
            return value;
          }
        }
      }
      function skipWhitespace() {
        read2(/[ ]*/);
      }
      function operator() {
        var string2;
        var possibilities = ["WITH", "AND", "OR", "(", ")", ":", "+"];
        for (var i2 = 0; i2 < possibilities.length; i2++) {
          string2 = read2(possibilities[i2]);
          if (string2) {
            break;
          }
        }
        if (string2 === "+" && index4 > 1 && source2[index4 - 2] === " ") {
          throw new Error("Space before `+`");
        }
        return string2 && {
          type: "OPERATOR",
          string: string2
        };
      }
      function idstring() {
        return read2(/[A-Za-z0-9-.]+/);
      }
      function expectIdstring() {
        var string2 = idstring();
        if (!string2) {
          throw new Error("Expected idstring at offset " + index4);
        }
        return string2;
      }
      function documentRef() {
        if (read2("DocumentRef-")) {
          var string2 = expectIdstring();
          return { type: "DOCUMENTREF", string: string2 };
        }
      }
      function licenseRef() {
        if (read2("LicenseRef-")) {
          var string2 = expectIdstring();
          return { type: "LICENSEREF", string: string2 };
        }
      }
      function identifier() {
        var begin = index4;
        var string2 = idstring();
        if (licenses2.indexOf(string2) !== -1) {
          return {
            type: "LICENSE",
            string: string2
          };
        } else if (exceptions.indexOf(string2) !== -1) {
          return {
            type: "EXCEPTION",
            string: string2
          };
        }
        index4 = begin;
      }
      function parseToken() {
        return operator() || documentRef() || licenseRef() || identifier();
      }
      var tokens = [];
      while (hasMore()) {
        skipWhitespace();
        if (!hasMore()) {
          break;
        }
        var token = parseToken();
        if (!token) {
          throw new Error("Unexpected `" + source2[index4] + "` at offset " + index4);
        }
        tokens.push(token);
      }
      return tokens;
    };
  }
});

// ../../node_modules/spdx-expression-parse/parse.js
var require_parse = __commonJS({
  "../../node_modules/spdx-expression-parse/parse.js"(exports2, module2) {
    "use strict";
    module2.exports = function(tokens) {
      var index4 = 0;
      function hasMore() {
        return index4 < tokens.length;
      }
      function token() {
        return hasMore() ? tokens[index4] : null;
      }
      function next() {
        if (!hasMore()) {
          throw new Error();
        }
        index4++;
      }
      function parseOperator(operator) {
        var t2 = token();
        if (t2 && t2.type === "OPERATOR" && operator === t2.string) {
          next();
          return t2.string;
        }
      }
      function parseWith() {
        if (parseOperator("WITH")) {
          var t2 = token();
          if (t2 && t2.type === "EXCEPTION") {
            next();
            return t2.string;
          }
          throw new Error("Expected exception after `WITH`");
        }
      }
      function parseLicenseRef() {
        var begin = index4;
        var string2 = "";
        var t2 = token();
        if (t2.type === "DOCUMENTREF") {
          next();
          string2 += "DocumentRef-" + t2.string + ":";
          if (!parseOperator(":")) {
            throw new Error("Expected `:` after `DocumentRef-...`");
          }
        }
        t2 = token();
        if (t2.type === "LICENSEREF") {
          next();
          string2 += "LicenseRef-" + t2.string;
          return { license: string2 };
        }
        index4 = begin;
      }
      function parseLicense() {
        var t2 = token();
        if (t2 && t2.type === "LICENSE") {
          next();
          var node4 = { license: t2.string };
          if (parseOperator("+")) {
            node4.plus = true;
          }
          var exception2 = parseWith();
          if (exception2) {
            node4.exception = exception2;
          }
          return node4;
        }
      }
      function parseParenthesizedExpression() {
        var left2 = parseOperator("(");
        if (!left2) {
          return;
        }
        var expr = parseExpression();
        if (!parseOperator(")")) {
          throw new Error("Expected `)`");
        }
        return expr;
      }
      function parseAtom() {
        return parseParenthesizedExpression() || parseLicenseRef() || parseLicense();
      }
      function makeBinaryOpParser(operator, nextParser) {
        return function parseBinaryOp() {
          var left2 = nextParser();
          if (!left2) {
            return;
          }
          if (!parseOperator(operator)) {
            return left2;
          }
          var right2 = parseBinaryOp();
          if (!right2) {
            throw new Error("Expected expression");
          }
          return {
            left: left2,
            conjunction: operator.toLowerCase(),
            right: right2
          };
        };
      }
      var parseAnd = makeBinaryOpParser("AND", parseAtom);
      var parseExpression = makeBinaryOpParser("OR", parseAnd);
      var node3 = parseExpression();
      if (!node3 || hasMore()) {
        throw new Error("Syntax error");
      }
      return node3;
    };
  }
});

// ../../node_modules/spdx-expression-parse/index.js
var require_spdx_expression_parse = __commonJS({
  "../../node_modules/spdx-expression-parse/index.js"(exports2, module2) {
    "use strict";
    var scan2 = require_scan();
    var parse16 = require_parse();
    module2.exports = function(source2) {
      return parse16(scan2(source2));
    };
  }
});

// ../../node_modules/spdx-correct/index.js
var require_spdx_correct = __commonJS({
  "../../node_modules/spdx-correct/index.js"(exports2, module2) {
    var parse16 = require_spdx_expression_parse();
    var spdxLicenseIds = require_spdx_license_ids();
    function valid2(string2) {
      try {
        parse16(string2);
        return true;
      } catch (error) {
        return false;
      }
    }
    function sortTranspositions(a2, b) {
      var length = b[0].length - a2[0].length;
      if (length !== 0) return length;
      return a2[0].toUpperCase().localeCompare(b[0].toUpperCase());
    }
    var transpositions = [
      ["APGL", "AGPL"],
      ["Gpl", "GPL"],
      ["GLP", "GPL"],
      ["APL", "Apache"],
      ["ISD", "ISC"],
      ["GLP", "GPL"],
      ["IST", "ISC"],
      ["Claude", "Clause"],
      [" or later", "+"],
      [" International", ""],
      ["GNU", "GPL"],
      ["GUN", "GPL"],
      ["+", ""],
      ["GNU GPL", "GPL"],
      ["GNU LGPL", "LGPL"],
      ["GNU/GPL", "GPL"],
      ["GNU GLP", "GPL"],
      ["GNU LESSER GENERAL PUBLIC LICENSE", "LGPL"],
      ["GNU Lesser General Public License", "LGPL"],
      ["GNU LESSER GENERAL PUBLIC LICENSE", "LGPL-2.1"],
      ["GNU Lesser General Public License", "LGPL-2.1"],
      ["LESSER GENERAL PUBLIC LICENSE", "LGPL"],
      ["Lesser General Public License", "LGPL"],
      ["LESSER GENERAL PUBLIC LICENSE", "LGPL-2.1"],
      ["Lesser General Public License", "LGPL-2.1"],
      ["GNU General Public License", "GPL"],
      ["Gnu public license", "GPL"],
      ["GNU Public License", "GPL"],
      ["GNU GENERAL PUBLIC LICENSE", "GPL"],
      ["MTI", "MIT"],
      ["Mozilla Public License", "MPL"],
      ["Universal Permissive License", "UPL"],
      ["WTH", "WTF"],
      ["WTFGPL", "WTFPL"],
      ["-License", ""]
    ].sort(sortTranspositions);
    var TRANSPOSED = 0;
    var CORRECT = 1;
    var transforms = [
      // e.g. 'mit'
      function(argument2) {
        return argument2.toUpperCase();
      },
      // e.g. 'MIT '
      function(argument2) {
        return argument2.trim();
      },
      // e.g. 'M.I.T.'
      function(argument2) {
        return argument2.replace(/\./g, "");
      },
      // e.g. 'Apache- 2.0'
      function(argument2) {
        return argument2.replace(/\s+/g, "");
      },
      // e.g. 'CC BY 4.0''
      function(argument2) {
        return argument2.replace(/\s+/g, "-");
      },
      // e.g. 'LGPLv2.1'
      function(argument2) {
        return argument2.replace("v", "-");
      },
      // e.g. 'Apache 2.0'
      function(argument2) {
        return argument2.replace(/,?\s*(\d)/, "-$1");
      },
      // e.g. 'GPL 2'
      function(argument2) {
        return argument2.replace(/,?\s*(\d)/, "-$1.0");
      },
      // e.g. 'Apache Version 2.0'
      function(argument2) {
        return argument2.replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/, "-$2");
      },
      // e.g. 'Apache Version 2'
      function(argument2) {
        return argument2.replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/, "-$2.0");
      },
      // e.g. 'ZLIB'
      function(argument2) {
        return argument2[0].toUpperCase() + argument2.slice(1);
      },
      // e.g. 'MPL/2.0'
      function(argument2) {
        return argument2.replace("/", "-");
      },
      // e.g. 'Apache 2'
      function(argument2) {
        return argument2.replace(/\s*V\s*(\d)/, "-$1").replace(/(\d)$/, "$1.0");
      },
      // e.g. 'GPL-2.0', 'GPL-3.0'
      function(argument2) {
        if (argument2.indexOf("3.0") !== -1) {
          return argument2 + "-or-later";
        } else {
          return argument2 + "-only";
        }
      },
      // e.g. 'GPL-2.0-'
      function(argument2) {
        return argument2 + "only";
      },
      // e.g. 'GPL2'
      function(argument2) {
        return argument2.replace(/(\d)$/, "-$1.0");
      },
      // e.g. 'BSD 3'
      function(argument2) {
        return argument2.replace(/(-| )?(\d)$/, "-$2-Clause");
      },
      // e.g. 'BSD clause 3'
      function(argument2) {
        return argument2.replace(/(-| )clause(-| )(\d)/, "-$3-Clause");
      },
      // e.g. 'New BSD license'
      function(argument2) {
        return argument2.replace(/\b(Modified|New|Revised)(-| )?BSD((-| )License)?/i, "BSD-3-Clause");
      },
      // e.g. 'Simplified BSD license'
      function(argument2) {
        return argument2.replace(/\bSimplified(-| )?BSD((-| )License)?/i, "BSD-2-Clause");
      },
      // e.g. 'Free BSD license'
      function(argument2) {
        return argument2.replace(/\b(Free|Net)(-| )?BSD((-| )License)?/i, "BSD-2-Clause-$1BSD");
      },
      // e.g. 'Clear BSD license'
      function(argument2) {
        return argument2.replace(/\bClear(-| )?BSD((-| )License)?/i, "BSD-3-Clause-Clear");
      },
      // e.g. 'Old BSD License'
      function(argument2) {
        return argument2.replace(/\b(Old|Original)(-| )?BSD((-| )License)?/i, "BSD-4-Clause");
      },
      // e.g. 'BY-NC-4.0'
      function(argument2) {
        return "CC-" + argument2;
      },
      // e.g. 'BY-NC'
      function(argument2) {
        return "CC-" + argument2 + "-4.0";
      },
      // e.g. 'Attribution-NonCommercial'
      function(argument2) {
        return argument2.replace("Attribution", "BY").replace("NonCommercial", "NC").replace("NoDerivatives", "ND").replace(/ (\d)/, "-$1").replace(/ ?International/, "");
      },
      // e.g. 'Attribution-NonCommercial'
      function(argument2) {
        return "CC-" + argument2.replace("Attribution", "BY").replace("NonCommercial", "NC").replace("NoDerivatives", "ND").replace(/ (\d)/, "-$1").replace(/ ?International/, "") + "-4.0";
      }
    ];
    var licensesWithVersions = spdxLicenseIds.map(function(id) {
      var match3 = /^(.*)-\d+\.\d+$/.exec(id);
      return match3 ? [match3[0], match3[1]] : [id, null];
    }).reduce(function(objectMap, item) {
      var key2 = item[1];
      objectMap[key2] = objectMap[key2] || [];
      objectMap[key2].push(item[0]);
      return objectMap;
    }, {});
    var licensesWithOneVersion = Object.keys(licensesWithVersions).map(function makeEntries(key2) {
      return [key2, licensesWithVersions[key2]];
    }).filter(function identifySoleVersions(item) {
      return (
        // Licenses has just one valid version suffix.
        item[1].length === 1 && item[0] !== null && // APL will be considered Apache, rather than APL-1.0
        item[0] !== "APL"
      );
    }).map(function createLastResorts(item) {
      return [item[0], item[1][0]];
    });
    licensesWithVersions = void 0;
    var lastResorts = [
      ["UNLI", "Unlicense"],
      ["WTF", "WTFPL"],
      ["2 CLAUSE", "BSD-2-Clause"],
      ["2-CLAUSE", "BSD-2-Clause"],
      ["3 CLAUSE", "BSD-3-Clause"],
      ["3-CLAUSE", "BSD-3-Clause"],
      ["AFFERO", "AGPL-3.0-or-later"],
      ["AGPL", "AGPL-3.0-or-later"],
      ["APACHE", "Apache-2.0"],
      ["ARTISTIC", "Artistic-2.0"],
      ["Affero", "AGPL-3.0-or-later"],
      ["BEER", "Beerware"],
      ["BOOST", "BSL-1.0"],
      ["BSD", "BSD-2-Clause"],
      ["CDDL", "CDDL-1.1"],
      ["ECLIPSE", "EPL-1.0"],
      ["FUCK", "WTFPL"],
      ["GNU", "GPL-3.0-or-later"],
      ["LGPL", "LGPL-3.0-or-later"],
      ["GPLV1", "GPL-1.0-only"],
      ["GPL-1", "GPL-1.0-only"],
      ["GPLV2", "GPL-2.0-only"],
      ["GPL-2", "GPL-2.0-only"],
      ["GPL", "GPL-3.0-or-later"],
      ["MIT +NO-FALSE-ATTRIBS", "MITNFA"],
      ["MIT", "MIT"],
      ["MPL", "MPL-2.0"],
      ["X11", "X11"],
      ["ZLIB", "Zlib"]
    ].concat(licensesWithOneVersion).sort(sortTranspositions);
    var SUBSTRING = 0;
    var IDENTIFIER2 = 1;
    var validTransformation = function(identifier) {
      for (var i2 = 0; i2 < transforms.length; i2++) {
        var transformed = transforms[i2](identifier).trim();
        if (transformed !== identifier && valid2(transformed)) {
          return transformed;
        }
      }
      return null;
    };
    var validLastResort = function(identifier) {
      var upperCased = identifier.toUpperCase();
      for (var i2 = 0; i2 < lastResorts.length; i2++) {
        var lastResort = lastResorts[i2];
        if (upperCased.indexOf(lastResort[SUBSTRING]) > -1) {
          return lastResort[IDENTIFIER2];
        }
      }
      return null;
    };
    var anyCorrection = function(identifier, check2) {
      for (var i2 = 0; i2 < transpositions.length; i2++) {
        var transposition = transpositions[i2];
        var transposed = transposition[TRANSPOSED];
        if (identifier.indexOf(transposed) > -1) {
          var corrected = identifier.replace(
            transposed,
            transposition[CORRECT]
          );
          var checked2 = check2(corrected);
          if (checked2 !== null) {
            return checked2;
          }
        }
      }
      return null;
    };
    module2.exports = function(identifier, options) {
      options = options || {};
      var upgrade = options.upgrade === void 0 ? true : !!options.upgrade;
      function postprocess(value) {
        return upgrade ? upgradeGPLs(value) : value;
      }
      var validArugment = typeof identifier === "string" && identifier.trim().length !== 0;
      if (!validArugment) {
        throw Error("Invalid argument. Expected non-empty string.");
      }
      identifier = identifier.trim();
      if (valid2(identifier)) {
        return postprocess(identifier);
      }
      var noPlus = identifier.replace(/\+$/, "").trim();
      if (valid2(noPlus)) {
        return postprocess(noPlus);
      }
      var transformed = validTransformation(identifier);
      if (transformed !== null) {
        return postprocess(transformed);
      }
      transformed = anyCorrection(identifier, function(argument2) {
        if (valid2(argument2)) {
          return argument2;
        }
        return validTransformation(argument2);
      });
      if (transformed !== null) {
        return postprocess(transformed);
      }
      transformed = validLastResort(identifier);
      if (transformed !== null) {
        return postprocess(transformed);
      }
      transformed = anyCorrection(identifier, validLastResort);
      if (transformed !== null) {
        return postprocess(transformed);
      }
      return null;
    };
    function upgradeGPLs(value) {
      if ([
        "GPL-1.0",
        "LGPL-1.0",
        "AGPL-1.0",
        "GPL-2.0",
        "LGPL-2.0",
        "AGPL-2.0",
        "LGPL-2.1"
      ].indexOf(value) !== -1) {
        return value + "-only";
      } else if ([
        "GPL-1.0+",
        "GPL-2.0+",
        "GPL-3.0+",
        "LGPL-2.0+",
        "LGPL-2.1+",
        "LGPL-3.0+",
        "AGPL-1.0+",
        "AGPL-3.0+"
      ].indexOf(value) !== -1) {
        return value.replace(/\+$/, "-or-later");
      } else if (["GPL-3.0", "LGPL-3.0", "AGPL-3.0"].indexOf(value) !== -1) {
        return value + "-or-later";
      } else {
        return value;
      }
    }
  }
});

// ../../node_modules/pretty-hrtime/index.js
var require_pretty_hrtime = __commonJS({
  "../../node_modules/pretty-hrtime/index.js"(exports2, module2) {
    "use strict";
    var minimalDesc = ["h", "min", "s", "ms", "\u03BCs", "ns"];
    var verboseDesc = ["hour", "minute", "second", "millisecond", "microsecond", "nanosecond"];
    var convert6 = [60 * 60, 60, 1, 1e6, 1e3, 1];
    module2.exports = function(source2, opts) {
      var verbose, precise, i2, spot, sourceAtStep, valAtStep, decimals, strAtStep, results, totalSeconds;
      verbose = false;
      precise = false;
      if (opts) {
        verbose = opts.verbose || false;
        precise = opts.precise || false;
      }
      if (!Array.isArray(source2) || source2.length !== 2) {
        return "";
      }
      if (typeof source2[0] !== "number" || typeof source2[1] !== "number") {
        return "";
      }
      if (source2[1] < 0) {
        totalSeconds = source2[0] + source2[1] / 1e9;
        source2[0] = parseInt(totalSeconds);
        source2[1] = parseFloat((totalSeconds % 1).toPrecision(9)) * 1e9;
      }
      results = "";
      for (i2 = 0; i2 < 6; i2++) {
        spot = i2 < 3 ? 0 : 1;
        sourceAtStep = source2[spot];
        if (i2 !== 3 && i2 !== 0) {
          sourceAtStep = sourceAtStep % convert6[i2 - 1];
        }
        if (i2 === 2) {
          sourceAtStep += source2[1] / 1e9;
        }
        valAtStep = sourceAtStep / convert6[i2];
        if (valAtStep >= 1) {
          if (verbose) {
            valAtStep = Math.floor(valAtStep);
          }
          if (!precise) {
            decimals = valAtStep >= 10 ? 0 : 2;
            strAtStep = valAtStep.toFixed(decimals);
          } else {
            strAtStep = valAtStep.toString();
          }
          if (strAtStep.indexOf(".") > -1 && strAtStep[strAtStep.length - 1] === "0") {
            strAtStep = strAtStep.replace(/\.?0+$/, "");
          }
          if (results) {
            results += " ";
          }
          results += strAtStep;
          if (verbose) {
            results += " " + verboseDesc[i2];
            if (strAtStep !== "1") {
              results += "s";
            }
          } else {
            results += " " + minimalDesc[i2];
          }
          if (!verbose) {
            break;
          }
        }
      }
      return results;
    };
  }
});

// ../../node_modules/boolbase/index.js
var require_boolbase = __commonJS({
  "../../node_modules/boolbase/index.js"(exports2, module2) {
    module2.exports = {
      trueFunc: function trueFunc() {
        return true;
      },
      falseFunc: function falseFunc() {
        return false;
      }
    };
  }
});

// ../../node_modules/css-selector-parser/lib/utils.js
var require_utils = __commonJS({
  "../../node_modules/css-selector-parser/lib/utils.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    function isIdentStart(c) {
      return c >= "a" && c <= "z" || c >= "A" && c <= "Z" || c === "-" || c === "_";
    }
    exports2.isIdentStart = isIdentStart;
    function isIdent(c) {
      return c >= "a" && c <= "z" || c >= "A" && c <= "Z" || c >= "0" && c <= "9" || c === "-" || c === "_";
    }
    exports2.isIdent = isIdent;
    function isHex2(c) {
      return c >= "a" && c <= "f" || c >= "A" && c <= "F" || c >= "0" && c <= "9";
    }
    exports2.isHex = isHex2;
    function escapeIdentifier(s5) {
      var len = s5.length;
      var result = "";
      var i2 = 0;
      while (i2 < len) {
        var chr = s5.charAt(i2);
        if (exports2.identSpecialChars[chr]) {
          result += "\\" + chr;
        } else {
          if (!(chr === "_" || chr === "-" || chr >= "A" && chr <= "Z" || chr >= "a" && chr <= "z" || i2 !== 0 && chr >= "0" && chr <= "9")) {
            var charCode = chr.charCodeAt(0);
            if ((charCode & 63488) === 55296) {
              var extraCharCode = s5.charCodeAt(i2++);
              if ((charCode & 64512) !== 55296 || (extraCharCode & 64512) !== 56320) {
                throw Error("UCS-2(decode): illegal sequence");
              }
              charCode = ((charCode & 1023) << 10) + (extraCharCode & 1023) + 65536;
            }
            result += "\\" + charCode.toString(16) + " ";
          } else {
            result += chr;
          }
        }
        i2++;
      }
      return result;
    }
    exports2.escapeIdentifier = escapeIdentifier;
    function escapeStr(s5) {
      var len = s5.length;
      var result = "";
      var i2 = 0;
      var replacement;
      while (i2 < len) {
        var chr = s5.charAt(i2);
        if (chr === '"') {
          chr = '\\"';
        } else if (chr === "\\") {
          chr = "\\\\";
        } else if ((replacement = exports2.strReplacementsRev[chr]) !== void 0) {
          chr = replacement;
        }
        result += chr;
        i2++;
      }
      return '"' + result + '"';
    }
    exports2.escapeStr = escapeStr;
    exports2.identSpecialChars = {
      "!": true,
      '"': true,
      "#": true,
      "$": true,
      "%": true,
      "&": true,
      "'": true,
      "(": true,
      ")": true,
      "*": true,
      "+": true,
      ",": true,
      ".": true,
      "/": true,
      ";": true,
      "<": true,
      "=": true,
      ">": true,
      "?": true,
      "@": true,
      "[": true,
      "\\": true,
      "]": true,
      "^": true,
      "`": true,
      "{": true,
      "|": true,
      "}": true,
      "~": true
    };
    exports2.strReplacementsRev = {
      "\n": "\\n",
      "\r": "\\r",
      "	": "\\t",
      "\f": "\\f",
      "\v": "\\v"
    };
    exports2.singleQuoteEscapeChars = {
      n: "\n",
      r: "\r",
      t: "	",
      f: "\f",
      "\\": "\\",
      "'": "'"
    };
    exports2.doubleQuotesEscapeChars = {
      n: "\n",
      r: "\r",
      t: "	",
      f: "\f",
      "\\": "\\",
      '"': '"'
    };
  }
});

// ../../node_modules/css-selector-parser/lib/parser-context.js
var require_parser_context = __commonJS({
  "../../node_modules/css-selector-parser/lib/parser-context.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var utils_1 = require_utils();
    function parseCssSelector(str2, pos, pseudos, attrEqualityMods, ruleNestingOperators, substitutesEnabled) {
      var l = str2.length;
      var chr = "";
      function getStr(quote, escapeTable) {
        var result = "";
        pos++;
        chr = str2.charAt(pos);
        while (pos < l) {
          if (chr === quote) {
            pos++;
            return result;
          } else if (chr === "\\") {
            pos++;
            chr = str2.charAt(pos);
            var esc = void 0;
            if (chr === quote) {
              result += quote;
            } else if ((esc = escapeTable[chr]) !== void 0) {
              result += esc;
            } else if (utils_1.isHex(chr)) {
              var hex = chr;
              pos++;
              chr = str2.charAt(pos);
              while (utils_1.isHex(chr)) {
                hex += chr;
                pos++;
                chr = str2.charAt(pos);
              }
              if (chr === " ") {
                pos++;
                chr = str2.charAt(pos);
              }
              result += String.fromCharCode(parseInt(hex, 16));
              continue;
            } else {
              result += chr;
            }
          } else {
            result += chr;
          }
          pos++;
          chr = str2.charAt(pos);
        }
        return result;
      }
      function getIdent() {
        var result = "";
        chr = str2.charAt(pos);
        while (pos < l) {
          if (utils_1.isIdent(chr)) {
            result += chr;
          } else if (chr === "\\") {
            pos++;
            if (pos >= l) {
              throw Error("Expected symbol but end of file reached.");
            }
            chr = str2.charAt(pos);
            if (utils_1.identSpecialChars[chr]) {
              result += chr;
            } else if (utils_1.isHex(chr)) {
              var hex = chr;
              pos++;
              chr = str2.charAt(pos);
              while (utils_1.isHex(chr)) {
                hex += chr;
                pos++;
                chr = str2.charAt(pos);
              }
              if (chr === " ") {
                pos++;
                chr = str2.charAt(pos);
              }
              result += String.fromCharCode(parseInt(hex, 16));
              continue;
            } else {
              result += chr;
            }
          } else {
            return result;
          }
          pos++;
          chr = str2.charAt(pos);
        }
        return result;
      }
      function skipWhitespace() {
        chr = str2.charAt(pos);
        var result = false;
        while (chr === " " || chr === "	" || chr === "\n" || chr === "\r" || chr === "\f") {
          result = true;
          pos++;
          chr = str2.charAt(pos);
        }
        return result;
      }
      function parse16() {
        var res = parseSelector3();
        if (pos < l) {
          throw Error('Rule expected but "' + str2.charAt(pos) + '" found.');
        }
        return res;
      }
      function parseSelector3() {
        var selector = parseSingleSelector();
        if (!selector) {
          return null;
        }
        var res = selector;
        chr = str2.charAt(pos);
        while (chr === ",") {
          pos++;
          skipWhitespace();
          if (res.type !== "selectors") {
            res = {
              type: "selectors",
              selectors: [selector]
            };
          }
          selector = parseSingleSelector();
          if (!selector) {
            throw Error('Rule expected after ",".');
          }
          res.selectors.push(selector);
        }
        return res;
      }
      function parseSingleSelector() {
        skipWhitespace();
        var selector = {
          type: "ruleSet"
        };
        var rule = parseRule();
        if (!rule) {
          return null;
        }
        var currentRule = selector;
        while (rule) {
          rule.type = "rule";
          currentRule.rule = rule;
          currentRule = rule;
          skipWhitespace();
          chr = str2.charAt(pos);
          if (pos >= l || chr === "," || chr === ")") {
            break;
          }
          if (ruleNestingOperators[chr]) {
            var op2 = chr;
            pos++;
            skipWhitespace();
            rule = parseRule();
            if (!rule) {
              throw Error('Rule expected after "' + op2 + '".');
            }
            rule.nestingOperator = op2;
          } else {
            rule = parseRule();
            if (rule) {
              rule.nestingOperator = null;
            }
          }
        }
        return selector;
      }
      function parseRule() {
        var rule = null;
        while (pos < l) {
          chr = str2.charAt(pos);
          if (chr === "*") {
            pos++;
            (rule = rule || {}).tagName = "*";
          } else if (utils_1.isIdentStart(chr) || chr === "\\") {
            (rule = rule || {}).tagName = getIdent();
          } else if (chr === ".") {
            pos++;
            rule = rule || {};
            (rule.classNames = rule.classNames || []).push(getIdent());
          } else if (chr === "#") {
            pos++;
            (rule = rule || {}).id = getIdent();
          } else if (chr === "[") {
            pos++;
            skipWhitespace();
            var attr = {
              name: getIdent()
            };
            skipWhitespace();
            if (chr === "]") {
              pos++;
            } else {
              var operator = "";
              if (attrEqualityMods[chr]) {
                operator = chr;
                pos++;
                chr = str2.charAt(pos);
              }
              if (pos >= l) {
                throw Error('Expected "=" but end of file reached.');
              }
              if (chr !== "=") {
                throw Error('Expected "=" but "' + chr + '" found.');
              }
              attr.operator = operator + "=";
              pos++;
              skipWhitespace();
              var attrValue = "";
              attr.valueType = "string";
              if (chr === '"') {
                attrValue = getStr('"', utils_1.doubleQuotesEscapeChars);
              } else if (chr === "'") {
                attrValue = getStr("'", utils_1.singleQuoteEscapeChars);
              } else if (substitutesEnabled && chr === "$") {
                pos++;
                attrValue = getIdent();
                attr.valueType = "substitute";
              } else {
                while (pos < l) {
                  if (chr === "]") {
                    break;
                  }
                  attrValue += chr;
                  pos++;
                  chr = str2.charAt(pos);
                }
                attrValue = attrValue.trim();
              }
              skipWhitespace();
              if (pos >= l) {
                throw Error('Expected "]" but end of file reached.');
              }
              if (chr !== "]") {
                throw Error('Expected "]" but "' + chr + '" found.');
              }
              pos++;
              attr.value = attrValue;
            }
            rule = rule || {};
            (rule.attrs = rule.attrs || []).push(attr);
          } else if (chr === ":") {
            pos++;
            var pseudoName = getIdent();
            var pseudo2 = {
              name: pseudoName
            };
            if (chr === "(") {
              pos++;
              var value = "";
              skipWhitespace();
              if (pseudos[pseudoName] === "selector") {
                pseudo2.valueType = "selector";
                value = parseSelector3();
              } else {
                pseudo2.valueType = pseudos[pseudoName] || "string";
                if (chr === '"') {
                  value = getStr('"', utils_1.doubleQuotesEscapeChars);
                } else if (chr === "'") {
                  value = getStr("'", utils_1.singleQuoteEscapeChars);
                } else if (substitutesEnabled && chr === "$") {
                  pos++;
                  value = getIdent();
                  pseudo2.valueType = "substitute";
                } else {
                  while (pos < l) {
                    if (chr === ")") {
                      break;
                    }
                    value += chr;
                    pos++;
                    chr = str2.charAt(pos);
                  }
                  value = value.trim();
                }
                skipWhitespace();
              }
              if (pos >= l) {
                throw Error('Expected ")" but end of file reached.');
              }
              if (chr !== ")") {
                throw Error('Expected ")" but "' + chr + '" found.');
              }
              pos++;
              pseudo2.value = value;
            }
            rule = rule || {};
            (rule.pseudos = rule.pseudos || []).push(pseudo2);
          } else {
            break;
          }
        }
        return rule;
      }
      return parse16();
    }
    exports2.parseCssSelector = parseCssSelector;
  }
});

// ../../node_modules/css-selector-parser/lib/render.js
var require_render = __commonJS({
  "../../node_modules/css-selector-parser/lib/render.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var utils_1 = require_utils();
    function renderEntity(entity) {
      var res = "";
      switch (entity.type) {
        case "ruleSet":
          var currentEntity = entity.rule;
          var parts = [];
          while (currentEntity) {
            if (currentEntity.nestingOperator) {
              parts.push(currentEntity.nestingOperator);
            }
            parts.push(renderEntity(currentEntity));
            currentEntity = currentEntity.rule;
          }
          res = parts.join(" ");
          break;
        case "selectors":
          res = entity.selectors.map(renderEntity).join(", ");
          break;
        case "rule":
          if (entity.tagName) {
            if (entity.tagName === "*") {
              res = "*";
            } else {
              res = utils_1.escapeIdentifier(entity.tagName);
            }
          }
          if (entity.id) {
            res += "#" + utils_1.escapeIdentifier(entity.id);
          }
          if (entity.classNames) {
            res += entity.classNames.map(function(cn) {
              return "." + utils_1.escapeIdentifier(cn);
            }).join("");
          }
          if (entity.attrs) {
            res += entity.attrs.map(function(attr) {
              if ("operator" in attr) {
                if (attr.valueType === "substitute") {
                  return "[" + utils_1.escapeIdentifier(attr.name) + attr.operator + "$" + attr.value + "]";
                } else {
                  return "[" + utils_1.escapeIdentifier(attr.name) + attr.operator + utils_1.escapeStr(attr.value) + "]";
                }
              } else {
                return "[" + utils_1.escapeIdentifier(attr.name) + "]";
              }
            }).join("");
          }
          if (entity.pseudos) {
            res += entity.pseudos.map(function(pseudo2) {
              if (pseudo2.valueType) {
                if (pseudo2.valueType === "selector") {
                  return ":" + utils_1.escapeIdentifier(pseudo2.name) + "(" + renderEntity(pseudo2.value) + ")";
                } else if (pseudo2.valueType === "substitute") {
                  return ":" + utils_1.escapeIdentifier(pseudo2.name) + "($" + pseudo2.value + ")";
                } else if (pseudo2.valueType === "numeric") {
                  return ":" + utils_1.escapeIdentifier(pseudo2.name) + "(" + pseudo2.value + ")";
                } else {
                  return ":" + utils_1.escapeIdentifier(pseudo2.name) + "(" + utils_1.escapeIdentifier(pseudo2.value) + ")";
                }
              } else {
                return ":" + utils_1.escapeIdentifier(pseudo2.name);
              }
            }).join("");
          }
          break;
        default:
          throw Error('Unknown entity type: "' + entity.type + '".');
      }
      return res;
    }
    exports2.renderEntity = renderEntity;
  }
});

// ../../node_modules/css-selector-parser/lib/index.js
var require_lib = __commonJS({
  "../../node_modules/css-selector-parser/lib/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var parser_context_1 = require_parser_context();
    var render_1 = require_render();
    var CssSelectorParser2 = (
      /** @class */
      (function() {
        function CssSelectorParser3() {
          this.pseudos = {};
          this.attrEqualityMods = {};
          this.ruleNestingOperators = {};
          this.substitutesEnabled = false;
        }
        CssSelectorParser3.prototype.registerSelectorPseudos = function() {
          var pseudos = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            pseudos[_i] = arguments[_i];
          }
          for (var _a6 = 0, pseudos_1 = pseudos; _a6 < pseudos_1.length; _a6++) {
            var pseudo2 = pseudos_1[_a6];
            this.pseudos[pseudo2] = "selector";
          }
          return this;
        };
        CssSelectorParser3.prototype.unregisterSelectorPseudos = function() {
          var pseudos = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            pseudos[_i] = arguments[_i];
          }
          for (var _a6 = 0, pseudos_2 = pseudos; _a6 < pseudos_2.length; _a6++) {
            var pseudo2 = pseudos_2[_a6];
            delete this.pseudos[pseudo2];
          }
          return this;
        };
        CssSelectorParser3.prototype.registerNumericPseudos = function() {
          var pseudos = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            pseudos[_i] = arguments[_i];
          }
          for (var _a6 = 0, pseudos_3 = pseudos; _a6 < pseudos_3.length; _a6++) {
            var pseudo2 = pseudos_3[_a6];
            this.pseudos[pseudo2] = "numeric";
          }
          return this;
        };
        CssSelectorParser3.prototype.unregisterNumericPseudos = function() {
          var pseudos = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            pseudos[_i] = arguments[_i];
          }
          for (var _a6 = 0, pseudos_4 = pseudos; _a6 < pseudos_4.length; _a6++) {
            var pseudo2 = pseudos_4[_a6];
            delete this.pseudos[pseudo2];
          }
          return this;
        };
        CssSelectorParser3.prototype.registerNestingOperators = function() {
          var operators = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            operators[_i] = arguments[_i];
          }
          for (var _a6 = 0, operators_1 = operators; _a6 < operators_1.length; _a6++) {
            var operator = operators_1[_a6];
            this.ruleNestingOperators[operator] = true;
          }
          return this;
        };
        CssSelectorParser3.prototype.unregisterNestingOperators = function() {
          var operators = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            operators[_i] = arguments[_i];
          }
          for (var _a6 = 0, operators_2 = operators; _a6 < operators_2.length; _a6++) {
            var operator = operators_2[_a6];
            delete this.ruleNestingOperators[operator];
          }
          return this;
        };
        CssSelectorParser3.prototype.registerAttrEqualityMods = function() {
          var mods = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            mods[_i] = arguments[_i];
          }
          for (var _a6 = 0, mods_1 = mods; _a6 < mods_1.length; _a6++) {
            var mod = mods_1[_a6];
            this.attrEqualityMods[mod] = true;
          }
          return this;
        };
        CssSelectorParser3.prototype.unregisterAttrEqualityMods = function() {
          var mods = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            mods[_i] = arguments[_i];
          }
          for (var _a6 = 0, mods_2 = mods; _a6 < mods_2.length; _a6++) {
            var mod = mods_2[_a6];
            delete this.attrEqualityMods[mod];
          }
          return this;
        };
        CssSelectorParser3.prototype.enableSubstitutes = function() {
          this.substitutesEnabled = true;
          return this;
        };
        CssSelectorParser3.prototype.disableSubstitutes = function() {
          this.substitutesEnabled = false;
          return this;
        };
        CssSelectorParser3.prototype.parse = function(str2) {
          return parser_context_1.parseCssSelector(str2, 0, this.pseudos, this.attrEqualityMods, this.ruleNestingOperators, this.substitutesEnabled);
        };
        CssSelectorParser3.prototype.render = function(path45) {
          return render_1.renderEntity(path45).trim();
        };
        return CssSelectorParser3;
      })()
    );
    exports2.CssSelectorParser = CssSelectorParser2;
  }
});

// ../../node_modules/is-buffer/index.js
var require_is_buffer = __commonJS({
  "../../node_modules/is-buffer/index.js"(exports2, module2) {
    module2.exports = function isBuffer3(obj) {
      return obj != null && obj.constructor != null && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj);
    };
  }
});

// ../../node_modules/extend/index.js
var require_extend = __commonJS({
  "../../node_modules/extend/index.js"(exports2, module2) {
    "use strict";
    var hasOwn = Object.prototype.hasOwnProperty;
    var toStr = Object.prototype.toString;
    var defineProperty = Object.defineProperty;
    var gOPD = Object.getOwnPropertyDescriptor;
    var isArray2 = function isArray3(arr) {
      if (typeof Array.isArray === "function") {
        return Array.isArray(arr);
      }
      return toStr.call(arr) === "[object Array]";
    };
    var isPlainObject5 = function isPlainObject6(obj) {
      if (!obj || toStr.call(obj) !== "[object Object]") {
        return false;
      }
      var hasOwnConstructor = hasOwn.call(obj, "constructor");
      var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, "isPrototypeOf");
      if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {
        return false;
      }
      var key2;
      for (key2 in obj) {
      }
      return typeof key2 === "undefined" || hasOwn.call(obj, key2);
    };
    var setProperty = function setProperty2(target, options) {
      if (defineProperty && options.name === "__proto__") {
        defineProperty(target, options.name, {
          enumerable: true,
          configurable: true,
          value: options.newValue,
          writable: true
        });
      } else {
        target[options.name] = options.newValue;
      }
    };
    var getProperty2 = function getProperty3(obj, name3) {
      if (name3 === "__proto__") {
        if (!hasOwn.call(obj, name3)) {
          return void 0;
        } else if (gOPD) {
          return gOPD(obj, name3).value;
        }
      }
      return obj[name3];
    };
    module2.exports = function extend5() {
      var options, name3, src, copy2, copyIsArray, clone3;
      var target = arguments[0];
      var i2 = 1;
      var length = arguments.length;
      var deep = false;
      if (typeof target === "boolean") {
        deep = target;
        target = arguments[1] || {};
        i2 = 2;
      }
      if (target == null || typeof target !== "object" && typeof target !== "function") {
        target = {};
      }
      for (; i2 < length; ++i2) {
        options = arguments[i2];
        if (options != null) {
          for (name3 in options) {
            src = getProperty2(target, name3);
            copy2 = getProperty2(options, name3);
            if (target !== copy2) {
              if (deep && copy2 && (isPlainObject5(copy2) || (copyIsArray = isArray2(copy2)))) {
                if (copyIsArray) {
                  copyIsArray = false;
                  clone3 = src && isArray2(src) ? src : [];
                } else {
                  clone3 = src && isPlainObject5(src) ? src : {};
                }
                setProperty(target, { name: name3, newValue: extend5(deep, clone3, copy2) });
              } else if (typeof copy2 !== "undefined") {
                setProperty(target, { name: name3, newValue: copy2 });
              }
            }
          }
        }
      }
      return target;
    };
  }
});

// ../../node_modules/markdown-it/node_modules/entities/lib/maps/entities.json
var require_entities = __commonJS({
  "../../node_modules/markdown-it/node_modules/entities/lib/maps/entities.json"(exports2, module2) {
    module2.exports = { Aacute: "\xC1", aacute: "\xE1", Abreve: "\u0102", abreve: "\u0103", ac: "\u223E", acd: "\u223F", acE: "\u223E\u0333", Acirc: "\xC2", acirc: "\xE2", acute: "\xB4", Acy: "\u0410", acy: "\u0430", AElig: "\xC6", aelig: "\xE6", af: "\u2061", Afr: "\u{1D504}", afr: "\u{1D51E}", Agrave: "\xC0", agrave: "\xE0", alefsym: "\u2135", aleph: "\u2135", Alpha: "\u0391", alpha: "\u03B1", Amacr: "\u0100", amacr: "\u0101", amalg: "\u2A3F", amp: "&", AMP: "&", andand: "\u2A55", And: "\u2A53", and: "\u2227", andd: "\u2A5C", andslope: "\u2A58", andv: "\u2A5A", ang: "\u2220", ange: "\u29A4", angle: "\u2220", angmsdaa: "\u29A8", angmsdab: "\u29A9", angmsdac: "\u29AA", angmsdad: "\u29AB", angmsdae: "\u29AC", angmsdaf: "\u29AD", angmsdag: "\u29AE", angmsdah: "\u29AF", angmsd: "\u2221", angrt: "\u221F", angrtvb: "\u22BE", angrtvbd: "\u299D", angsph: "\u2222", angst: "\xC5", angzarr: "\u237C", Aogon: "\u0104", aogon: "\u0105", Aopf: "\u{1D538}", aopf: "\u{1D552}", apacir: "\u2A6F", ap: "\u2248", apE: "\u2A70", ape: "\u224A", apid: "\u224B", apos: "'", ApplyFunction: "\u2061", approx: "\u2248", approxeq: "\u224A", Aring: "\xC5", aring: "\xE5", Ascr: "\u{1D49C}", ascr: "\u{1D4B6}", Assign: "\u2254", ast: "*", asymp: "\u2248", asympeq: "\u224D", Atilde: "\xC3", atilde: "\xE3", Auml: "\xC4", auml: "\xE4", awconint: "\u2233", awint: "\u2A11", backcong: "\u224C", backepsilon: "\u03F6", backprime: "\u2035", backsim: "\u223D", backsimeq: "\u22CD", Backslash: "\u2216", Barv: "\u2AE7", barvee: "\u22BD", barwed: "\u2305", Barwed: "\u2306", barwedge: "\u2305", bbrk: "\u23B5", bbrktbrk: "\u23B6", bcong: "\u224C", Bcy: "\u0411", bcy: "\u0431", bdquo: "\u201E", becaus: "\u2235", because: "\u2235", Because: "\u2235", bemptyv: "\u29B0", bepsi: "\u03F6", bernou: "\u212C", Bernoullis: "\u212C", Beta: "\u0392", beta: "\u03B2", beth: "\u2136", between: "\u226C", Bfr: "\u{1D505}", bfr: "\u{1D51F}", bigcap: "\u22C2", bigcirc: "\u25EF", bigcup: "\u22C3", bigodot: "\u2A00", bigoplus: "\u2A01", bigotimes: "\u2A02", bigsqcup: "\u2A06", bigstar: "\u2605", bigtriangledown: "\u25BD", bigtriangleup: "\u25B3", biguplus: "\u2A04", bigvee: "\u22C1", bigwedge: "\u22C0", bkarow: "\u290D", blacklozenge: "\u29EB", blacksquare: "\u25AA", blacktriangle: "\u25B4", blacktriangledown: "\u25BE", blacktriangleleft: "\u25C2", blacktriangleright: "\u25B8", blank: "\u2423", blk12: "\u2592", blk14: "\u2591", blk34: "\u2593", block: "\u2588", bne: "=\u20E5", bnequiv: "\u2261\u20E5", bNot: "\u2AED", bnot: "\u2310", Bopf: "\u{1D539}", bopf: "\u{1D553}", bot: "\u22A5", bottom: "\u22A5", bowtie: "\u22C8", boxbox: "\u29C9", boxdl: "\u2510", boxdL: "\u2555", boxDl: "\u2556", boxDL: "\u2557", boxdr: "\u250C", boxdR: "\u2552", boxDr: "\u2553", boxDR: "\u2554", boxh: "\u2500", boxH: "\u2550", boxhd: "\u252C", boxHd: "\u2564", boxhD: "\u2565", boxHD: "\u2566", boxhu: "\u2534", boxHu: "\u2567", boxhU: "\u2568", boxHU: "\u2569", boxminus: "\u229F", boxplus: "\u229E", boxtimes: "\u22A0", boxul: "\u2518", boxuL: "\u255B", boxUl: "\u255C", boxUL: "\u255D", boxur: "\u2514", boxuR: "\u2558", boxUr: "\u2559", boxUR: "\u255A", boxv: "\u2502", boxV: "\u2551", boxvh: "\u253C", boxvH: "\u256A", boxVh: "\u256B", boxVH: "\u256C", boxvl: "\u2524", boxvL: "\u2561", boxVl: "\u2562", boxVL: "\u2563", boxvr: "\u251C", boxvR: "\u255E", boxVr: "\u255F", boxVR: "\u2560", bprime: "\u2035", breve: "\u02D8", Breve: "\u02D8", brvbar: "\xA6", bscr: "\u{1D4B7}", Bscr: "\u212C", bsemi: "\u204F", bsim: "\u223D", bsime: "\u22CD", bsolb: "\u29C5", bsol: "\\", bsolhsub: "\u27C8", bull: "\u2022", bullet: "\u2022", bump: "\u224E", bumpE: "\u2AAE", bumpe: "\u224F", Bumpeq: "\u224E", bumpeq: "\u224F", Cacute: "\u0106", cacute: "\u0107", capand: "\u2A44", capbrcup: "\u2A49", capcap: "\u2A4B", cap: "\u2229", Cap: "\u22D2", capcup: "\u2A47", capdot: "\u2A40", CapitalDifferentialD: "\u2145", caps: "\u2229\uFE00", caret: "\u2041", caron: "\u02C7", Cayleys: "\u212D", ccaps: "\u2A4D", Ccaron: "\u010C", ccaron: "\u010D", Ccedil: "\xC7", ccedil: "\xE7", Ccirc: "\u0108", ccirc: "\u0109", Cconint: "\u2230", ccups: "\u2A4C", ccupssm: "\u2A50", Cdot: "\u010A", cdot: "\u010B", cedil: "\xB8", Cedilla: "\xB8", cemptyv: "\u29B2", cent: "\xA2", centerdot: "\xB7", CenterDot: "\xB7", cfr: "\u{1D520}", Cfr: "\u212D", CHcy: "\u0427", chcy: "\u0447", check: "\u2713", checkmark: "\u2713", Chi: "\u03A7", chi: "\u03C7", circ: "\u02C6", circeq: "\u2257", circlearrowleft: "\u21BA", circlearrowright: "\u21BB", circledast: "\u229B", circledcirc: "\u229A", circleddash: "\u229D", CircleDot: "\u2299", circledR: "\xAE", circledS: "\u24C8", CircleMinus: "\u2296", CirclePlus: "\u2295", CircleTimes: "\u2297", cir: "\u25CB", cirE: "\u29C3", cire: "\u2257", cirfnint: "\u2A10", cirmid: "\u2AEF", cirscir: "\u29C2", ClockwiseContourIntegral: "\u2232", CloseCurlyDoubleQuote: "\u201D", CloseCurlyQuote: "\u2019", clubs: "\u2663", clubsuit: "\u2663", colon: ":", Colon: "\u2237", Colone: "\u2A74", colone: "\u2254", coloneq: "\u2254", comma: ",", commat: "@", comp: "\u2201", compfn: "\u2218", complement: "\u2201", complexes: "\u2102", cong: "\u2245", congdot: "\u2A6D", Congruent: "\u2261", conint: "\u222E", Conint: "\u222F", ContourIntegral: "\u222E", copf: "\u{1D554}", Copf: "\u2102", coprod: "\u2210", Coproduct: "\u2210", copy: "\xA9", COPY: "\xA9", copysr: "\u2117", CounterClockwiseContourIntegral: "\u2233", crarr: "\u21B5", cross: "\u2717", Cross: "\u2A2F", Cscr: "\u{1D49E}", cscr: "\u{1D4B8}", csub: "\u2ACF", csube: "\u2AD1", csup: "\u2AD0", csupe: "\u2AD2", ctdot: "\u22EF", cudarrl: "\u2938", cudarrr: "\u2935", cuepr: "\u22DE", cuesc: "\u22DF", cularr: "\u21B6", cularrp: "\u293D", cupbrcap: "\u2A48", cupcap: "\u2A46", CupCap: "\u224D", cup: "\u222A", Cup: "\u22D3", cupcup: "\u2A4A", cupdot: "\u228D", cupor: "\u2A45", cups: "\u222A\uFE00", curarr: "\u21B7", curarrm: "\u293C", curlyeqprec: "\u22DE", curlyeqsucc: "\u22DF", curlyvee: "\u22CE", curlywedge: "\u22CF", curren: "\xA4", curvearrowleft: "\u21B6", curvearrowright: "\u21B7", cuvee: "\u22CE", cuwed: "\u22CF", cwconint: "\u2232", cwint: "\u2231", cylcty: "\u232D", dagger: "\u2020", Dagger: "\u2021", daleth: "\u2138", darr: "\u2193", Darr: "\u21A1", dArr: "\u21D3", dash: "\u2010", Dashv: "\u2AE4", dashv: "\u22A3", dbkarow: "\u290F", dblac: "\u02DD", Dcaron: "\u010E", dcaron: "\u010F", Dcy: "\u0414", dcy: "\u0434", ddagger: "\u2021", ddarr: "\u21CA", DD: "\u2145", dd: "\u2146", DDotrahd: "\u2911", ddotseq: "\u2A77", deg: "\xB0", Del: "\u2207", Delta: "\u0394", delta: "\u03B4", demptyv: "\u29B1", dfisht: "\u297F", Dfr: "\u{1D507}", dfr: "\u{1D521}", dHar: "\u2965", dharl: "\u21C3", dharr: "\u21C2", DiacriticalAcute: "\xB4", DiacriticalDot: "\u02D9", DiacriticalDoubleAcute: "\u02DD", DiacriticalGrave: "`", DiacriticalTilde: "\u02DC", diam: "\u22C4", diamond: "\u22C4", Diamond: "\u22C4", diamondsuit: "\u2666", diams: "\u2666", die: "\xA8", DifferentialD: "\u2146", digamma: "\u03DD", disin: "\u22F2", div: "\xF7", divide: "\xF7", divideontimes: "\u22C7", divonx: "\u22C7", DJcy: "\u0402", djcy: "\u0452", dlcorn: "\u231E", dlcrop: "\u230D", dollar: "$", Dopf: "\u{1D53B}", dopf: "\u{1D555}", Dot: "\xA8", dot: "\u02D9", DotDot: "\u20DC", doteq: "\u2250", doteqdot: "\u2251", DotEqual: "\u2250", dotminus: "\u2238", dotplus: "\u2214", dotsquare: "\u22A1", doublebarwedge: "\u2306", DoubleContourIntegral: "\u222F", DoubleDot: "\xA8", DoubleDownArrow: "\u21D3", DoubleLeftArrow: "\u21D0", DoubleLeftRightArrow: "\u21D4", DoubleLeftTee: "\u2AE4", DoubleLongLeftArrow: "\u27F8", DoubleLongLeftRightArrow: "\u27FA", DoubleLongRightArrow: "\u27F9", DoubleRightArrow: "\u21D2", DoubleRightTee: "\u22A8", DoubleUpArrow: "\u21D1", DoubleUpDownArrow: "\u21D5", DoubleVerticalBar: "\u2225", DownArrowBar: "\u2913", downarrow: "\u2193", DownArrow: "\u2193", Downarrow: "\u21D3", DownArrowUpArrow: "\u21F5", DownBreve: "\u0311", downdownarrows: "\u21CA", downharpoonleft: "\u21C3", downharpoonright: "\u21C2", DownLeftRightVector: "\u2950", DownLeftTeeVector: "\u295E", DownLeftVectorBar: "\u2956", DownLeftVector: "\u21BD", DownRightTeeVector: "\u295F", DownRightVectorBar: "\u2957", DownRightVector: "\u21C1", DownTeeArrow: "\u21A7", DownTee: "\u22A4", drbkarow: "\u2910", drcorn: "\u231F", drcrop: "\u230C", Dscr: "\u{1D49F}", dscr: "\u{1D4B9}", DScy: "\u0405", dscy: "\u0455", dsol: "\u29F6", Dstrok: "\u0110", dstrok: "\u0111", dtdot: "\u22F1", dtri: "\u25BF", dtrif: "\u25BE", duarr: "\u21F5", duhar: "\u296F", dwangle: "\u29A6", DZcy: "\u040F", dzcy: "\u045F", dzigrarr: "\u27FF", Eacute: "\xC9", eacute: "\xE9", easter: "\u2A6E", Ecaron: "\u011A", ecaron: "\u011B", Ecirc: "\xCA", ecirc: "\xEA", ecir: "\u2256", ecolon: "\u2255", Ecy: "\u042D", ecy: "\u044D", eDDot: "\u2A77", Edot: "\u0116", edot: "\u0117", eDot: "\u2251", ee: "\u2147", efDot: "\u2252", Efr: "\u{1D508}", efr: "\u{1D522}", eg: "\u2A9A", Egrave: "\xC8", egrave: "\xE8", egs: "\u2A96", egsdot: "\u2A98", el: "\u2A99", Element: "\u2208", elinters: "\u23E7", ell: "\u2113", els: "\u2A95", elsdot: "\u2A97", Emacr: "\u0112", emacr: "\u0113", empty: "\u2205", emptyset: "\u2205", EmptySmallSquare: "\u25FB", emptyv: "\u2205", EmptyVerySmallSquare: "\u25AB", emsp13: "\u2004", emsp14: "\u2005", emsp: "\u2003", ENG: "\u014A", eng: "\u014B", ensp: "\u2002", Eogon: "\u0118", eogon: "\u0119", Eopf: "\u{1D53C}", eopf: "\u{1D556}", epar: "\u22D5", eparsl: "\u29E3", eplus: "\u2A71", epsi: "\u03B5", Epsilon: "\u0395", epsilon: "\u03B5", epsiv: "\u03F5", eqcirc: "\u2256", eqcolon: "\u2255", eqsim: "\u2242", eqslantgtr: "\u2A96", eqslantless: "\u2A95", Equal: "\u2A75", equals: "=", EqualTilde: "\u2242", equest: "\u225F", Equilibrium: "\u21CC", equiv: "\u2261", equivDD: "\u2A78", eqvparsl: "\u29E5", erarr: "\u2971", erDot: "\u2253", escr: "\u212F", Escr: "\u2130", esdot: "\u2250", Esim: "\u2A73", esim: "\u2242", Eta: "\u0397", eta: "\u03B7", ETH: "\xD0", eth: "\xF0", Euml: "\xCB", euml: "\xEB", euro: "\u20AC", excl: "!", exist: "\u2203", Exists: "\u2203", expectation: "\u2130", exponentiale: "\u2147", ExponentialE: "\u2147", fallingdotseq: "\u2252", Fcy: "\u0424", fcy: "\u0444", female: "\u2640", ffilig: "\uFB03", fflig: "\uFB00", ffllig: "\uFB04", Ffr: "\u{1D509}", ffr: "\u{1D523}", filig: "\uFB01", FilledSmallSquare: "\u25FC", FilledVerySmallSquare: "\u25AA", fjlig: "fj", flat: "\u266D", fllig: "\uFB02", fltns: "\u25B1", fnof: "\u0192", Fopf: "\u{1D53D}", fopf: "\u{1D557}", forall: "\u2200", ForAll: "\u2200", fork: "\u22D4", forkv: "\u2AD9", Fouriertrf: "\u2131", fpartint: "\u2A0D", frac12: "\xBD", frac13: "\u2153", frac14: "\xBC", frac15: "\u2155", frac16: "\u2159", frac18: "\u215B", frac23: "\u2154", frac25: "\u2156", frac34: "\xBE", frac35: "\u2157", frac38: "\u215C", frac45: "\u2158", frac56: "\u215A", frac58: "\u215D", frac78: "\u215E", frasl: "\u2044", frown: "\u2322", fscr: "\u{1D4BB}", Fscr: "\u2131", gacute: "\u01F5", Gamma: "\u0393", gamma: "\u03B3", Gammad: "\u03DC", gammad: "\u03DD", gap: "\u2A86", Gbreve: "\u011E", gbreve: "\u011F", Gcedil: "\u0122", Gcirc: "\u011C", gcirc: "\u011D", Gcy: "\u0413", gcy: "\u0433", Gdot: "\u0120", gdot: "\u0121", ge: "\u2265", gE: "\u2267", gEl: "\u2A8C", gel: "\u22DB", geq: "\u2265", geqq: "\u2267", geqslant: "\u2A7E", gescc: "\u2AA9", ges: "\u2A7E", gesdot: "\u2A80", gesdoto: "\u2A82", gesdotol: "\u2A84", gesl: "\u22DB\uFE00", gesles: "\u2A94", Gfr: "\u{1D50A}", gfr: "\u{1D524}", gg: "\u226B", Gg: "\u22D9", ggg: "\u22D9", gimel: "\u2137", GJcy: "\u0403", gjcy: "\u0453", gla: "\u2AA5", gl: "\u2277", glE: "\u2A92", glj: "\u2AA4", gnap: "\u2A8A", gnapprox: "\u2A8A", gne: "\u2A88", gnE: "\u2269", gneq: "\u2A88", gneqq: "\u2269", gnsim: "\u22E7", Gopf: "\u{1D53E}", gopf: "\u{1D558}", grave: "`", GreaterEqual: "\u2265", GreaterEqualLess: "\u22DB", GreaterFullEqual: "\u2267", GreaterGreater: "\u2AA2", GreaterLess: "\u2277", GreaterSlantEqual: "\u2A7E", GreaterTilde: "\u2273", Gscr: "\u{1D4A2}", gscr: "\u210A", gsim: "\u2273", gsime: "\u2A8E", gsiml: "\u2A90", gtcc: "\u2AA7", gtcir: "\u2A7A", gt: ">", GT: ">", Gt: "\u226B", gtdot: "\u22D7", gtlPar: "\u2995", gtquest: "\u2A7C", gtrapprox: "\u2A86", gtrarr: "\u2978", gtrdot: "\u22D7", gtreqless: "\u22DB", gtreqqless: "\u2A8C", gtrless: "\u2277", gtrsim: "\u2273", gvertneqq: "\u2269\uFE00", gvnE: "\u2269\uFE00", Hacek: "\u02C7", hairsp: "\u200A", half: "\xBD", hamilt: "\u210B", HARDcy: "\u042A", hardcy: "\u044A", harrcir: "\u2948", harr: "\u2194", hArr: "\u21D4", harrw: "\u21AD", Hat: "^", hbar: "\u210F", Hcirc: "\u0124", hcirc: "\u0125", hearts: "\u2665", heartsuit: "\u2665", hellip: "\u2026", hercon: "\u22B9", hfr: "\u{1D525}", Hfr: "\u210C", HilbertSpace: "\u210B", hksearow: "\u2925", hkswarow: "\u2926", hoarr: "\u21FF", homtht: "\u223B", hookleftarrow: "\u21A9", hookrightarrow: "\u21AA", hopf: "\u{1D559}", Hopf: "\u210D", horbar: "\u2015", HorizontalLine: "\u2500", hscr: "\u{1D4BD}", Hscr: "\u210B", hslash: "\u210F", Hstrok: "\u0126", hstrok: "\u0127", HumpDownHump: "\u224E", HumpEqual: "\u224F", hybull: "\u2043", hyphen: "\u2010", Iacute: "\xCD", iacute: "\xED", ic: "\u2063", Icirc: "\xCE", icirc: "\xEE", Icy: "\u0418", icy: "\u0438", Idot: "\u0130", IEcy: "\u0415", iecy: "\u0435", iexcl: "\xA1", iff: "\u21D4", ifr: "\u{1D526}", Ifr: "\u2111", Igrave: "\xCC", igrave: "\xEC", ii: "\u2148", iiiint: "\u2A0C", iiint: "\u222D", iinfin: "\u29DC", iiota: "\u2129", IJlig: "\u0132", ijlig: "\u0133", Imacr: "\u012A", imacr: "\u012B", image: "\u2111", ImaginaryI: "\u2148", imagline: "\u2110", imagpart: "\u2111", imath: "\u0131", Im: "\u2111", imof: "\u22B7", imped: "\u01B5", Implies: "\u21D2", incare: "\u2105", in: "\u2208", infin: "\u221E", infintie: "\u29DD", inodot: "\u0131", intcal: "\u22BA", int: "\u222B", Int: "\u222C", integers: "\u2124", Integral: "\u222B", intercal: "\u22BA", Intersection: "\u22C2", intlarhk: "\u2A17", intprod: "\u2A3C", InvisibleComma: "\u2063", InvisibleTimes: "\u2062", IOcy: "\u0401", iocy: "\u0451", Iogon: "\u012E", iogon: "\u012F", Iopf: "\u{1D540}", iopf: "\u{1D55A}", Iota: "\u0399", iota: "\u03B9", iprod: "\u2A3C", iquest: "\xBF", iscr: "\u{1D4BE}", Iscr: "\u2110", isin: "\u2208", isindot: "\u22F5", isinE: "\u22F9", isins: "\u22F4", isinsv: "\u22F3", isinv: "\u2208", it: "\u2062", Itilde: "\u0128", itilde: "\u0129", Iukcy: "\u0406", iukcy: "\u0456", Iuml: "\xCF", iuml: "\xEF", Jcirc: "\u0134", jcirc: "\u0135", Jcy: "\u0419", jcy: "\u0439", Jfr: "\u{1D50D}", jfr: "\u{1D527}", jmath: "\u0237", Jopf: "\u{1D541}", jopf: "\u{1D55B}", Jscr: "\u{1D4A5}", jscr: "\u{1D4BF}", Jsercy: "\u0408", jsercy: "\u0458", Jukcy: "\u0404", jukcy: "\u0454", Kappa: "\u039A", kappa: "\u03BA", kappav: "\u03F0", Kcedil: "\u0136", kcedil: "\u0137", Kcy: "\u041A", kcy: "\u043A", Kfr: "\u{1D50E}", kfr: "\u{1D528}", kgreen: "\u0138", KHcy: "\u0425", khcy: "\u0445", KJcy: "\u040C", kjcy: "\u045C", Kopf: "\u{1D542}", kopf: "\u{1D55C}", Kscr: "\u{1D4A6}", kscr: "\u{1D4C0}", lAarr: "\u21DA", Lacute: "\u0139", lacute: "\u013A", laemptyv: "\u29B4", lagran: "\u2112", Lambda: "\u039B", lambda: "\u03BB", lang: "\u27E8", Lang: "\u27EA", langd: "\u2991", langle: "\u27E8", lap: "\u2A85", Laplacetrf: "\u2112", laquo: "\xAB", larrb: "\u21E4", larrbfs: "\u291F", larr: "\u2190", Larr: "\u219E", lArr: "\u21D0", larrfs: "\u291D", larrhk: "\u21A9", larrlp: "\u21AB", larrpl: "\u2939", larrsim: "\u2973", larrtl: "\u21A2", latail: "\u2919", lAtail: "\u291B", lat: "\u2AAB", late: "\u2AAD", lates: "\u2AAD\uFE00", lbarr: "\u290C", lBarr: "\u290E", lbbrk: "\u2772", lbrace: "{", lbrack: "[", lbrke: "\u298B", lbrksld: "\u298F", lbrkslu: "\u298D", Lcaron: "\u013D", lcaron: "\u013E", Lcedil: "\u013B", lcedil: "\u013C", lceil: "\u2308", lcub: "{", Lcy: "\u041B", lcy: "\u043B", ldca: "\u2936", ldquo: "\u201C", ldquor: "\u201E", ldrdhar: "\u2967", ldrushar: "\u294B", ldsh: "\u21B2", le: "\u2264", lE: "\u2266", LeftAngleBracket: "\u27E8", LeftArrowBar: "\u21E4", leftarrow: "\u2190", LeftArrow: "\u2190", Leftarrow: "\u21D0", LeftArrowRightArrow: "\u21C6", leftarrowtail: "\u21A2", LeftCeiling: "\u2308", LeftDoubleBracket: "\u27E6", LeftDownTeeVector: "\u2961", LeftDownVectorBar: "\u2959", LeftDownVector: "\u21C3", LeftFloor: "\u230A", leftharpoondown: "\u21BD", leftharpoonup: "\u21BC", leftleftarrows: "\u21C7", leftrightarrow: "\u2194", LeftRightArrow: "\u2194", Leftrightarrow: "\u21D4", leftrightarrows: "\u21C6", leftrightharpoons: "\u21CB", leftrightsquigarrow: "\u21AD", LeftRightVector: "\u294E", LeftTeeArrow: "\u21A4", LeftTee: "\u22A3", LeftTeeVector: "\u295A", leftthreetimes: "\u22CB", LeftTriangleBar: "\u29CF", LeftTriangle: "\u22B2", LeftTriangleEqual: "\u22B4", LeftUpDownVector: "\u2951", LeftUpTeeVector: "\u2960", LeftUpVectorBar: "\u2958", LeftUpVector: "\u21BF", LeftVectorBar: "\u2952", LeftVector: "\u21BC", lEg: "\u2A8B", leg: "\u22DA", leq: "\u2264", leqq: "\u2266", leqslant: "\u2A7D", lescc: "\u2AA8", les: "\u2A7D", lesdot: "\u2A7F", lesdoto: "\u2A81", lesdotor: "\u2A83", lesg: "\u22DA\uFE00", lesges: "\u2A93", lessapprox: "\u2A85", lessdot: "\u22D6", lesseqgtr: "\u22DA", lesseqqgtr: "\u2A8B", LessEqualGreater: "\u22DA", LessFullEqual: "\u2266", LessGreater: "\u2276", lessgtr: "\u2276", LessLess: "\u2AA1", lesssim: "\u2272", LessSlantEqual: "\u2A7D", LessTilde: "\u2272", lfisht: "\u297C", lfloor: "\u230A", Lfr: "\u{1D50F}", lfr: "\u{1D529}", lg: "\u2276", lgE: "\u2A91", lHar: "\u2962", lhard: "\u21BD", lharu: "\u21BC", lharul: "\u296A", lhblk: "\u2584", LJcy: "\u0409", ljcy: "\u0459", llarr: "\u21C7", ll: "\u226A", Ll: "\u22D8", llcorner: "\u231E", Lleftarrow: "\u21DA", llhard: "\u296B", lltri: "\u25FA", Lmidot: "\u013F", lmidot: "\u0140", lmoustache: "\u23B0", lmoust: "\u23B0", lnap: "\u2A89", lnapprox: "\u2A89", lne: "\u2A87", lnE: "\u2268", lneq: "\u2A87", lneqq: "\u2268", lnsim: "\u22E6", loang: "\u27EC", loarr: "\u21FD", lobrk: "\u27E6", longleftarrow: "\u27F5", LongLeftArrow: "\u27F5", Longleftarrow: "\u27F8", longleftrightarrow: "\u27F7", LongLeftRightArrow: "\u27F7", Longleftrightarrow: "\u27FA", longmapsto: "\u27FC", longrightarrow: "\u27F6", LongRightArrow: "\u27F6", Longrightarrow: "\u27F9", looparrowleft: "\u21AB", looparrowright: "\u21AC", lopar: "\u2985", Lopf: "\u{1D543}", lopf: "\u{1D55D}", loplus: "\u2A2D", lotimes: "\u2A34", lowast: "\u2217", lowbar: "_", LowerLeftArrow: "\u2199", LowerRightArrow: "\u2198", loz: "\u25CA", lozenge: "\u25CA", lozf: "\u29EB", lpar: "(", lparlt: "\u2993", lrarr: "\u21C6", lrcorner: "\u231F", lrhar: "\u21CB", lrhard: "\u296D", lrm: "\u200E", lrtri: "\u22BF", lsaquo: "\u2039", lscr: "\u{1D4C1}", Lscr: "\u2112", lsh: "\u21B0", Lsh: "\u21B0", lsim: "\u2272", lsime: "\u2A8D", lsimg: "\u2A8F", lsqb: "[", lsquo: "\u2018", lsquor: "\u201A", Lstrok: "\u0141", lstrok: "\u0142", ltcc: "\u2AA6", ltcir: "\u2A79", lt: "<", LT: "<", Lt: "\u226A", ltdot: "\u22D6", lthree: "\u22CB", ltimes: "\u22C9", ltlarr: "\u2976", ltquest: "\u2A7B", ltri: "\u25C3", ltrie: "\u22B4", ltrif: "\u25C2", ltrPar: "\u2996", lurdshar: "\u294A", luruhar: "\u2966", lvertneqq: "\u2268\uFE00", lvnE: "\u2268\uFE00", macr: "\xAF", male: "\u2642", malt: "\u2720", maltese: "\u2720", Map: "\u2905", map: "\u21A6", mapsto: "\u21A6", mapstodown: "\u21A7", mapstoleft: "\u21A4", mapstoup: "\u21A5", marker: "\u25AE", mcomma: "\u2A29", Mcy: "\u041C", mcy: "\u043C", mdash: "\u2014", mDDot: "\u223A", measuredangle: "\u2221", MediumSpace: "\u205F", Mellintrf: "\u2133", Mfr: "\u{1D510}", mfr: "\u{1D52A}", mho: "\u2127", micro: "\xB5", midast: "*", midcir: "\u2AF0", mid: "\u2223", middot: "\xB7", minusb: "\u229F", minus: "\u2212", minusd: "\u2238", minusdu: "\u2A2A", MinusPlus: "\u2213", mlcp: "\u2ADB", mldr: "\u2026", mnplus: "\u2213", models: "\u22A7", Mopf: "\u{1D544}", mopf: "\u{1D55E}", mp: "\u2213", mscr: "\u{1D4C2}", Mscr: "\u2133", mstpos: "\u223E", Mu: "\u039C", mu: "\u03BC", multimap: "\u22B8", mumap: "\u22B8", nabla: "\u2207", Nacute: "\u0143", nacute: "\u0144", nang: "\u2220\u20D2", nap: "\u2249", napE: "\u2A70\u0338", napid: "\u224B\u0338", napos: "\u0149", napprox: "\u2249", natural: "\u266E", naturals: "\u2115", natur: "\u266E", nbsp: "\xA0", nbump: "\u224E\u0338", nbumpe: "\u224F\u0338", ncap: "\u2A43", Ncaron: "\u0147", ncaron: "\u0148", Ncedil: "\u0145", ncedil: "\u0146", ncong: "\u2247", ncongdot: "\u2A6D\u0338", ncup: "\u2A42", Ncy: "\u041D", ncy: "\u043D", ndash: "\u2013", nearhk: "\u2924", nearr: "\u2197", neArr: "\u21D7", nearrow: "\u2197", ne: "\u2260", nedot: "\u2250\u0338", NegativeMediumSpace: "\u200B", NegativeThickSpace: "\u200B", NegativeThinSpace: "\u200B", NegativeVeryThinSpace: "\u200B", nequiv: "\u2262", nesear: "\u2928", nesim: "\u2242\u0338", NestedGreaterGreater: "\u226B", NestedLessLess: "\u226A", NewLine: "\n", nexist: "\u2204", nexists: "\u2204", Nfr: "\u{1D511}", nfr: "\u{1D52B}", ngE: "\u2267\u0338", nge: "\u2271", ngeq: "\u2271", ngeqq: "\u2267\u0338", ngeqslant: "\u2A7E\u0338", nges: "\u2A7E\u0338", nGg: "\u22D9\u0338", ngsim: "\u2275", nGt: "\u226B\u20D2", ngt: "\u226F", ngtr: "\u226F", nGtv: "\u226B\u0338", nharr: "\u21AE", nhArr: "\u21CE", nhpar: "\u2AF2", ni: "\u220B", nis: "\u22FC", nisd: "\u22FA", niv: "\u220B", NJcy: "\u040A", njcy: "\u045A", nlarr: "\u219A", nlArr: "\u21CD", nldr: "\u2025", nlE: "\u2266\u0338", nle: "\u2270", nleftarrow: "\u219A", nLeftarrow: "\u21CD", nleftrightarrow: "\u21AE", nLeftrightarrow: "\u21CE", nleq: "\u2270", nleqq: "\u2266\u0338", nleqslant: "\u2A7D\u0338", nles: "\u2A7D\u0338", nless: "\u226E", nLl: "\u22D8\u0338", nlsim: "\u2274", nLt: "\u226A\u20D2", nlt: "\u226E", nltri: "\u22EA", nltrie: "\u22EC", nLtv: "\u226A\u0338", nmid: "\u2224", NoBreak: "\u2060", NonBreakingSpace: "\xA0", nopf: "\u{1D55F}", Nopf: "\u2115", Not: "\u2AEC", not: "\xAC", NotCongruent: "\u2262", NotCupCap: "\u226D", NotDoubleVerticalBar: "\u2226", NotElement: "\u2209", NotEqual: "\u2260", NotEqualTilde: "\u2242\u0338", NotExists: "\u2204", NotGreater: "\u226F", NotGreaterEqual: "\u2271", NotGreaterFullEqual: "\u2267\u0338", NotGreaterGreater: "\u226B\u0338", NotGreaterLess: "\u2279", NotGreaterSlantEqual: "\u2A7E\u0338", NotGreaterTilde: "\u2275", NotHumpDownHump: "\u224E\u0338", NotHumpEqual: "\u224F\u0338", notin: "\u2209", notindot: "\u22F5\u0338", notinE: "\u22F9\u0338", notinva: "\u2209", notinvb: "\u22F7", notinvc: "\u22F6", NotLeftTriangleBar: "\u29CF\u0338", NotLeftTriangle: "\u22EA", NotLeftTriangleEqual: "\u22EC", NotLess: "\u226E", NotLessEqual: "\u2270", NotLessGreater: "\u2278", NotLessLess: "\u226A\u0338", NotLessSlantEqual: "\u2A7D\u0338", NotLessTilde: "\u2274", NotNestedGreaterGreater: "\u2AA2\u0338", NotNestedLessLess: "\u2AA1\u0338", notni: "\u220C", notniva: "\u220C", notnivb: "\u22FE", notnivc: "\u22FD", NotPrecedes: "\u2280", NotPrecedesEqual: "\u2AAF\u0338", NotPrecedesSlantEqual: "\u22E0", NotReverseElement: "\u220C", NotRightTriangleBar: "\u29D0\u0338", NotRightTriangle: "\u22EB", NotRightTriangleEqual: "\u22ED", NotSquareSubset: "\u228F\u0338", NotSquareSubsetEqual: "\u22E2", NotSquareSuperset: "\u2290\u0338", NotSquareSupersetEqual: "\u22E3", NotSubset: "\u2282\u20D2", NotSubsetEqual: "\u2288", NotSucceeds: "\u2281", NotSucceedsEqual: "\u2AB0\u0338", NotSucceedsSlantEqual: "\u22E1", NotSucceedsTilde: "\u227F\u0338", NotSuperset: "\u2283\u20D2", NotSupersetEqual: "\u2289", NotTilde: "\u2241", NotTildeEqual: "\u2244", NotTildeFullEqual: "\u2247", NotTildeTilde: "\u2249", NotVerticalBar: "\u2224", nparallel: "\u2226", npar: "\u2226", nparsl: "\u2AFD\u20E5", npart: "\u2202\u0338", npolint: "\u2A14", npr: "\u2280", nprcue: "\u22E0", nprec: "\u2280", npreceq: "\u2AAF\u0338", npre: "\u2AAF\u0338", nrarrc: "\u2933\u0338", nrarr: "\u219B", nrArr: "\u21CF", nrarrw: "\u219D\u0338", nrightarrow: "\u219B", nRightarrow: "\u21CF", nrtri: "\u22EB", nrtrie: "\u22ED", nsc: "\u2281", nsccue: "\u22E1", nsce: "\u2AB0\u0338", Nscr: "\u{1D4A9}", nscr: "\u{1D4C3}", nshortmid: "\u2224", nshortparallel: "\u2226", nsim: "\u2241", nsime: "\u2244", nsimeq: "\u2244", nsmid: "\u2224", nspar: "\u2226", nsqsube: "\u22E2", nsqsupe: "\u22E3", nsub: "\u2284", nsubE: "\u2AC5\u0338", nsube: "\u2288", nsubset: "\u2282\u20D2", nsubseteq: "\u2288", nsubseteqq: "\u2AC5\u0338", nsucc: "\u2281", nsucceq: "\u2AB0\u0338", nsup: "\u2285", nsupE: "\u2AC6\u0338", nsupe: "\u2289", nsupset: "\u2283\u20D2", nsupseteq: "\u2289", nsupseteqq: "\u2AC6\u0338", ntgl: "\u2279", Ntilde: "\xD1", ntilde: "\xF1", ntlg: "\u2278", ntriangleleft: "\u22EA", ntrianglelefteq: "\u22EC", ntriangleright: "\u22EB", ntrianglerighteq: "\u22ED", Nu: "\u039D", nu: "\u03BD", num: "#", numero: "\u2116", numsp: "\u2007", nvap: "\u224D\u20D2", nvdash: "\u22AC", nvDash: "\u22AD", nVdash: "\u22AE", nVDash: "\u22AF", nvge: "\u2265\u20D2", nvgt: ">\u20D2", nvHarr: "\u2904", nvinfin: "\u29DE", nvlArr: "\u2902", nvle: "\u2264\u20D2", nvlt: "<\u20D2", nvltrie: "\u22B4\u20D2", nvrArr: "\u2903", nvrtrie: "\u22B5\u20D2", nvsim: "\u223C\u20D2", nwarhk: "\u2923", nwarr: "\u2196", nwArr: "\u21D6", nwarrow: "\u2196", nwnear: "\u2927", Oacute: "\xD3", oacute: "\xF3", oast: "\u229B", Ocirc: "\xD4", ocirc: "\xF4", ocir: "\u229A", Ocy: "\u041E", ocy: "\u043E", odash: "\u229D", Odblac: "\u0150", odblac: "\u0151", odiv: "\u2A38", odot: "\u2299", odsold: "\u29BC", OElig: "\u0152", oelig: "\u0153", ofcir: "\u29BF", Ofr: "\u{1D512}", ofr: "\u{1D52C}", ogon: "\u02DB", Ograve: "\xD2", ograve: "\xF2", ogt: "\u29C1", ohbar: "\u29B5", ohm: "\u03A9", oint: "\u222E", olarr: "\u21BA", olcir: "\u29BE", olcross: "\u29BB", oline: "\u203E", olt: "\u29C0", Omacr: "\u014C", omacr: "\u014D", Omega: "\u03A9", omega: "\u03C9", Omicron: "\u039F", omicron: "\u03BF", omid: "\u29B6", ominus: "\u2296", Oopf: "\u{1D546}", oopf: "\u{1D560}", opar: "\u29B7", OpenCurlyDoubleQuote: "\u201C", OpenCurlyQuote: "\u2018", operp: "\u29B9", oplus: "\u2295", orarr: "\u21BB", Or: "\u2A54", or: "\u2228", ord: "\u2A5D", order: "\u2134", orderof: "\u2134", ordf: "\xAA", ordm: "\xBA", origof: "\u22B6", oror: "\u2A56", orslope: "\u2A57", orv: "\u2A5B", oS: "\u24C8", Oscr: "\u{1D4AA}", oscr: "\u2134", Oslash: "\xD8", oslash: "\xF8", osol: "\u2298", Otilde: "\xD5", otilde: "\xF5", otimesas: "\u2A36", Otimes: "\u2A37", otimes: "\u2297", Ouml: "\xD6", ouml: "\xF6", ovbar: "\u233D", OverBar: "\u203E", OverBrace: "\u23DE", OverBracket: "\u23B4", OverParenthesis: "\u23DC", para: "\xB6", parallel: "\u2225", par: "\u2225", parsim: "\u2AF3", parsl: "\u2AFD", part: "\u2202", PartialD: "\u2202", Pcy: "\u041F", pcy: "\u043F", percnt: "%", period: ".", permil: "\u2030", perp: "\u22A5", pertenk: "\u2031", Pfr: "\u{1D513}", pfr: "\u{1D52D}", Phi: "\u03A6", phi: "\u03C6", phiv: "\u03D5", phmmat: "\u2133", phone: "\u260E", Pi: "\u03A0", pi: "\u03C0", pitchfork: "\u22D4", piv: "\u03D6", planck: "\u210F", planckh: "\u210E", plankv: "\u210F", plusacir: "\u2A23", plusb: "\u229E", pluscir: "\u2A22", plus: "+", plusdo: "\u2214", plusdu: "\u2A25", pluse: "\u2A72", PlusMinus: "\xB1", plusmn: "\xB1", plussim: "\u2A26", plustwo: "\u2A27", pm: "\xB1", Poincareplane: "\u210C", pointint: "\u2A15", popf: "\u{1D561}", Popf: "\u2119", pound: "\xA3", prap: "\u2AB7", Pr: "\u2ABB", pr: "\u227A", prcue: "\u227C", precapprox: "\u2AB7", prec: "\u227A", preccurlyeq: "\u227C", Precedes: "\u227A", PrecedesEqual: "\u2AAF", PrecedesSlantEqual: "\u227C", PrecedesTilde: "\u227E", preceq: "\u2AAF", precnapprox: "\u2AB9", precneqq: "\u2AB5", precnsim: "\u22E8", pre: "\u2AAF", prE: "\u2AB3", precsim: "\u227E", prime: "\u2032", Prime: "\u2033", primes: "\u2119", prnap: "\u2AB9", prnE: "\u2AB5", prnsim: "\u22E8", prod: "\u220F", Product: "\u220F", profalar: "\u232E", profline: "\u2312", profsurf: "\u2313", prop: "\u221D", Proportional: "\u221D", Proportion: "\u2237", propto: "\u221D", prsim: "\u227E", prurel: "\u22B0", Pscr: "\u{1D4AB}", pscr: "\u{1D4C5}", Psi: "\u03A8", psi: "\u03C8", puncsp: "\u2008", Qfr: "\u{1D514}", qfr: "\u{1D52E}", qint: "\u2A0C", qopf: "\u{1D562}", Qopf: "\u211A", qprime: "\u2057", Qscr: "\u{1D4AC}", qscr: "\u{1D4C6}", quaternions: "\u210D", quatint: "\u2A16", quest: "?", questeq: "\u225F", quot: '"', QUOT: '"', rAarr: "\u21DB", race: "\u223D\u0331", Racute: "\u0154", racute: "\u0155", radic: "\u221A", raemptyv: "\u29B3", rang: "\u27E9", Rang: "\u27EB", rangd: "\u2992", range: "\u29A5", rangle: "\u27E9", raquo: "\xBB", rarrap: "\u2975", rarrb: "\u21E5", rarrbfs: "\u2920", rarrc: "\u2933", rarr: "\u2192", Rarr: "\u21A0", rArr: "\u21D2", rarrfs: "\u291E", rarrhk: "\u21AA", rarrlp: "\u21AC", rarrpl: "\u2945", rarrsim: "\u2974", Rarrtl: "\u2916", rarrtl: "\u21A3", rarrw: "\u219D", ratail: "\u291A", rAtail: "\u291C", ratio: "\u2236", rationals: "\u211A", rbarr: "\u290D", rBarr: "\u290F", RBarr: "\u2910", rbbrk: "\u2773", rbrace: "}", rbrack: "]", rbrke: "\u298C", rbrksld: "\u298E", rbrkslu: "\u2990", Rcaron: "\u0158", rcaron: "\u0159", Rcedil: "\u0156", rcedil: "\u0157", rceil: "\u2309", rcub: "}", Rcy: "\u0420", rcy: "\u0440", rdca: "\u2937", rdldhar: "\u2969", rdquo: "\u201D", rdquor: "\u201D", rdsh: "\u21B3", real: "\u211C", realine: "\u211B", realpart: "\u211C", reals: "\u211D", Re: "\u211C", rect: "\u25AD", reg: "\xAE", REG: "\xAE", ReverseElement: "\u220B", ReverseEquilibrium: "\u21CB", ReverseUpEquilibrium: "\u296F", rfisht: "\u297D", rfloor: "\u230B", rfr: "\u{1D52F}", Rfr: "\u211C", rHar: "\u2964", rhard: "\u21C1", rharu: "\u21C0", rharul: "\u296C", Rho: "\u03A1", rho: "\u03C1", rhov: "\u03F1", RightAngleBracket: "\u27E9", RightArrowBar: "\u21E5", rightarrow: "\u2192", RightArrow: "\u2192", Rightarrow: "\u21D2", RightArrowLeftArrow: "\u21C4", rightarrowtail: "\u21A3", RightCeiling: "\u2309", RightDoubleBracket: "\u27E7", RightDownTeeVector: "\u295D", RightDownVectorBar: "\u2955", RightDownVector: "\u21C2", RightFloor: "\u230B", rightharpoondown: "\u21C1", rightharpoonup: "\u21C0", rightleftarrows: "\u21C4", rightleftharpoons: "\u21CC", rightrightarrows: "\u21C9", rightsquigarrow: "\u219D", RightTeeArrow: "\u21A6", RightTee: "\u22A2", RightTeeVector: "\u295B", rightthreetimes: "\u22CC", RightTriangleBar: "\u29D0", RightTriangle: "\u22B3", RightTriangleEqual: "\u22B5", RightUpDownVector: "\u294F", RightUpTeeVector: "\u295C", RightUpVectorBar: "\u2954", RightUpVector: "\u21BE", RightVectorBar: "\u2953", RightVector: "\u21C0", ring: "\u02DA", risingdotseq: "\u2253", rlarr: "\u21C4", rlhar: "\u21CC", rlm: "\u200F", rmoustache: "\u23B1", rmoust: "\u23B1", rnmid: "\u2AEE", roang: "\u27ED", roarr: "\u21FE", robrk: "\u27E7", ropar: "\u2986", ropf: "\u{1D563}", Ropf: "\u211D", roplus: "\u2A2E", rotimes: "\u2A35", RoundImplies: "\u2970", rpar: ")", rpargt: "\u2994", rppolint: "\u2A12", rrarr: "\u21C9", Rrightarrow: "\u21DB", rsaquo: "\u203A", rscr: "\u{1D4C7}", Rscr: "\u211B", rsh: "\u21B1", Rsh: "\u21B1", rsqb: "]", rsquo: "\u2019", rsquor: "\u2019", rthree: "\u22CC", rtimes: "\u22CA", rtri: "\u25B9", rtrie: "\u22B5", rtrif: "\u25B8", rtriltri: "\u29CE", RuleDelayed: "\u29F4", ruluhar: "\u2968", rx: "\u211E", Sacute: "\u015A", sacute: "\u015B", sbquo: "\u201A", scap: "\u2AB8", Scaron: "\u0160", scaron: "\u0161", Sc: "\u2ABC", sc: "\u227B", sccue: "\u227D", sce: "\u2AB0", scE: "\u2AB4", Scedil: "\u015E", scedil: "\u015F", Scirc: "\u015C", scirc: "\u015D", scnap: "\u2ABA", scnE: "\u2AB6", scnsim: "\u22E9", scpolint: "\u2A13", scsim: "\u227F", Scy: "\u0421", scy: "\u0441", sdotb: "\u22A1", sdot: "\u22C5", sdote: "\u2A66", searhk: "\u2925", searr: "\u2198", seArr: "\u21D8", searrow: "\u2198", sect: "\xA7", semi: ";", seswar: "\u2929", setminus: "\u2216", setmn: "\u2216", sext: "\u2736", Sfr: "\u{1D516}", sfr: "\u{1D530}", sfrown: "\u2322", sharp: "\u266F", SHCHcy: "\u0429", shchcy: "\u0449", SHcy: "\u0428", shcy: "\u0448", ShortDownArrow: "\u2193", ShortLeftArrow: "\u2190", shortmid: "\u2223", shortparallel: "\u2225", ShortRightArrow: "\u2192", ShortUpArrow: "\u2191", shy: "\xAD", Sigma: "\u03A3", sigma: "\u03C3", sigmaf: "\u03C2", sigmav: "\u03C2", sim: "\u223C", simdot: "\u2A6A", sime: "\u2243", simeq: "\u2243", simg: "\u2A9E", simgE: "\u2AA0", siml: "\u2A9D", simlE: "\u2A9F", simne: "\u2246", simplus: "\u2A24", simrarr: "\u2972", slarr: "\u2190", SmallCircle: "\u2218", smallsetminus: "\u2216", smashp: "\u2A33", smeparsl: "\u29E4", smid: "\u2223", smile: "\u2323", smt: "\u2AAA", smte: "\u2AAC", smtes: "\u2AAC\uFE00", SOFTcy: "\u042C", softcy: "\u044C", solbar: "\u233F", solb: "\u29C4", sol: "/", Sopf: "\u{1D54A}", sopf: "\u{1D564}", spades: "\u2660", spadesuit: "\u2660", spar: "\u2225", sqcap: "\u2293", sqcaps: "\u2293\uFE00", sqcup: "\u2294", sqcups: "\u2294\uFE00", Sqrt: "\u221A", sqsub: "\u228F", sqsube: "\u2291", sqsubset: "\u228F", sqsubseteq: "\u2291", sqsup: "\u2290", sqsupe: "\u2292", sqsupset: "\u2290", sqsupseteq: "\u2292", square: "\u25A1", Square: "\u25A1", SquareIntersection: "\u2293", SquareSubset: "\u228F", SquareSubsetEqual: "\u2291", SquareSuperset: "\u2290", SquareSupersetEqual: "\u2292", SquareUnion: "\u2294", squarf: "\u25AA", squ: "\u25A1", squf: "\u25AA", srarr: "\u2192", Sscr: "\u{1D4AE}", sscr: "\u{1D4C8}", ssetmn: "\u2216", ssmile: "\u2323", sstarf: "\u22C6", Star: "\u22C6", star: "\u2606", starf: "\u2605", straightepsilon: "\u03F5", straightphi: "\u03D5", strns: "\xAF", sub: "\u2282", Sub: "\u22D0", subdot: "\u2ABD", subE: "\u2AC5", sube: "\u2286", subedot: "\u2AC3", submult: "\u2AC1", subnE: "\u2ACB", subne: "\u228A", subplus: "\u2ABF", subrarr: "\u2979", subset: "\u2282", Subset: "\u22D0", subseteq: "\u2286", subseteqq: "\u2AC5", SubsetEqual: "\u2286", subsetneq: "\u228A", subsetneqq: "\u2ACB", subsim: "\u2AC7", subsub: "\u2AD5", subsup: "\u2AD3", succapprox: "\u2AB8", succ: "\u227B", succcurlyeq: "\u227D", Succeeds: "\u227B", SucceedsEqual: "\u2AB0", SucceedsSlantEqual: "\u227D", SucceedsTilde: "\u227F", succeq: "\u2AB0", succnapprox: "\u2ABA", succneqq: "\u2AB6", succnsim: "\u22E9", succsim: "\u227F", SuchThat: "\u220B", sum: "\u2211", Sum: "\u2211", sung: "\u266A", sup1: "\xB9", sup2: "\xB2", sup3: "\xB3", sup: "\u2283", Sup: "\u22D1", supdot: "\u2ABE", supdsub: "\u2AD8", supE: "\u2AC6", supe: "\u2287", supedot: "\u2AC4", Superset: "\u2283", SupersetEqual: "\u2287", suphsol: "\u27C9", suphsub: "\u2AD7", suplarr: "\u297B", supmult: "\u2AC2", supnE: "\u2ACC", supne: "\u228B", supplus: "\u2AC0", supset: "\u2283", Supset: "\u22D1", supseteq: "\u2287", supseteqq: "\u2AC6", supsetneq: "\u228B", supsetneqq: "\u2ACC", supsim: "\u2AC8", supsub: "\u2AD4", supsup: "\u2AD6", swarhk: "\u2926", swarr: "\u2199", swArr: "\u21D9", swarrow: "\u2199", swnwar: "\u292A", szlig: "\xDF", Tab: "	", target: "\u2316", Tau: "\u03A4", tau: "\u03C4", tbrk: "\u23B4", Tcaron: "\u0164", tcaron: "\u0165", Tcedil: "\u0162", tcedil: "\u0163", Tcy: "\u0422", tcy: "\u0442", tdot: "\u20DB", telrec: "\u2315", Tfr: "\u{1D517}", tfr: "\u{1D531}", there4: "\u2234", therefore: "\u2234", Therefore: "\u2234", Theta: "\u0398", theta: "\u03B8", thetasym: "\u03D1", thetav: "\u03D1", thickapprox: "\u2248", thicksim: "\u223C", ThickSpace: "\u205F\u200A", ThinSpace: "\u2009", thinsp: "\u2009", thkap: "\u2248", thksim: "\u223C", THORN: "\xDE", thorn: "\xFE", tilde: "\u02DC", Tilde: "\u223C", TildeEqual: "\u2243", TildeFullEqual: "\u2245", TildeTilde: "\u2248", timesbar: "\u2A31", timesb: "\u22A0", times: "\xD7", timesd: "\u2A30", tint: "\u222D", toea: "\u2928", topbot: "\u2336", topcir: "\u2AF1", top: "\u22A4", Topf: "\u{1D54B}", topf: "\u{1D565}", topfork: "\u2ADA", tosa: "\u2929", tprime: "\u2034", trade: "\u2122", TRADE: "\u2122", triangle: "\u25B5", triangledown: "\u25BF", triangleleft: "\u25C3", trianglelefteq: "\u22B4", triangleq: "\u225C", triangleright: "\u25B9", trianglerighteq: "\u22B5", tridot: "\u25EC", trie: "\u225C", triminus: "\u2A3A", TripleDot: "\u20DB", triplus: "\u2A39", trisb: "\u29CD", tritime: "\u2A3B", trpezium: "\u23E2", Tscr: "\u{1D4AF}", tscr: "\u{1D4C9}", TScy: "\u0426", tscy: "\u0446", TSHcy: "\u040B", tshcy: "\u045B", Tstrok: "\u0166", tstrok: "\u0167", twixt: "\u226C", twoheadleftarrow: "\u219E", twoheadrightarrow: "\u21A0", Uacute: "\xDA", uacute: "\xFA", uarr: "\u2191", Uarr: "\u219F", uArr: "\u21D1", Uarrocir: "\u2949", Ubrcy: "\u040E", ubrcy: "\u045E", Ubreve: "\u016C", ubreve: "\u016D", Ucirc: "\xDB", ucirc: "\xFB", Ucy: "\u0423", ucy: "\u0443", udarr: "\u21C5", Udblac: "\u0170", udblac: "\u0171", udhar: "\u296E", ufisht: "\u297E", Ufr: "\u{1D518}", ufr: "\u{1D532}", Ugrave: "\xD9", ugrave: "\xF9", uHar: "\u2963", uharl: "\u21BF", uharr: "\u21BE", uhblk: "\u2580", ulcorn: "\u231C", ulcorner: "\u231C", ulcrop: "\u230F", ultri: "\u25F8", Umacr: "\u016A", umacr: "\u016B", uml: "\xA8", UnderBar: "_", UnderBrace: "\u23DF", UnderBracket: "\u23B5", UnderParenthesis: "\u23DD", Union: "\u22C3", UnionPlus: "\u228E", Uogon: "\u0172", uogon: "\u0173", Uopf: "\u{1D54C}", uopf: "\u{1D566}", UpArrowBar: "\u2912", uparrow: "\u2191", UpArrow: "\u2191", Uparrow: "\u21D1", UpArrowDownArrow: "\u21C5", updownarrow: "\u2195", UpDownArrow: "\u2195", Updownarrow: "\u21D5", UpEquilibrium: "\u296E", upharpoonleft: "\u21BF", upharpoonright: "\u21BE", uplus: "\u228E", UpperLeftArrow: "\u2196", UpperRightArrow: "\u2197", upsi: "\u03C5", Upsi: "\u03D2", upsih: "\u03D2", Upsilon: "\u03A5", upsilon: "\u03C5", UpTeeArrow: "\u21A5", UpTee: "\u22A5", upuparrows: "\u21C8", urcorn: "\u231D", urcorner: "\u231D", urcrop: "\u230E", Uring: "\u016E", uring: "\u016F", urtri: "\u25F9", Uscr: "\u{1D4B0}", uscr: "\u{1D4CA}", utdot: "\u22F0", Utilde: "\u0168", utilde: "\u0169", utri: "\u25B5", utrif: "\u25B4", uuarr: "\u21C8", Uuml: "\xDC", uuml: "\xFC", uwangle: "\u29A7", vangrt: "\u299C", varepsilon: "\u03F5", varkappa: "\u03F0", varnothing: "\u2205", varphi: "\u03D5", varpi: "\u03D6", varpropto: "\u221D", varr: "\u2195", vArr: "\u21D5", varrho: "\u03F1", varsigma: "\u03C2", varsubsetneq: "\u228A\uFE00", varsubsetneqq: "\u2ACB\uFE00", varsupsetneq: "\u228B\uFE00", varsupsetneqq: "\u2ACC\uFE00", vartheta: "\u03D1", vartriangleleft: "\u22B2", vartriangleright: "\u22B3", vBar: "\u2AE8", Vbar: "\u2AEB", vBarv: "\u2AE9", Vcy: "\u0412", vcy: "\u0432", vdash: "\u22A2", vDash: "\u22A8", Vdash: "\u22A9", VDash: "\u22AB", Vdashl: "\u2AE6", veebar: "\u22BB", vee: "\u2228", Vee: "\u22C1", veeeq: "\u225A", vellip: "\u22EE", verbar: "|", Verbar: "\u2016", vert: "|", Vert: "\u2016", VerticalBar: "\u2223", VerticalLine: "|", VerticalSeparator: "\u2758", VerticalTilde: "\u2240", VeryThinSpace: "\u200A", Vfr: "\u{1D519}", vfr: "\u{1D533}", vltri: "\u22B2", vnsub: "\u2282\u20D2", vnsup: "\u2283\u20D2", Vopf: "\u{1D54D}", vopf: "\u{1D567}", vprop: "\u221D", vrtri: "\u22B3", Vscr: "\u{1D4B1}", vscr: "\u{1D4CB}", vsubnE: "\u2ACB\uFE00", vsubne: "\u228A\uFE00", vsupnE: "\u2ACC\uFE00", vsupne: "\u228B\uFE00", Vvdash: "\u22AA", vzigzag: "\u299A", Wcirc: "\u0174", wcirc: "\u0175", wedbar: "\u2A5F", wedge: "\u2227", Wedge: "\u22C0", wedgeq: "\u2259", weierp: "\u2118", Wfr: "\u{1D51A}", wfr: "\u{1D534}", Wopf: "\u{1D54E}", wopf: "\u{1D568}", wp: "\u2118", wr: "\u2240", wreath: "\u2240", Wscr: "\u{1D4B2}", wscr: "\u{1D4CC}", xcap: "\u22C2", xcirc: "\u25EF", xcup: "\u22C3", xdtri: "\u25BD", Xfr: "\u{1D51B}", xfr: "\u{1D535}", xharr: "\u27F7", xhArr: "\u27FA", Xi: "\u039E", xi: "\u03BE", xlarr: "\u27F5", xlArr: "\u27F8", xmap: "\u27FC", xnis: "\u22FB", xodot: "\u2A00", Xopf: "\u{1D54F}", xopf: "\u{1D569}", xoplus: "\u2A01", xotime: "\u2A02", xrarr: "\u27F6", xrArr: "\u27F9", Xscr: "\u{1D4B3}", xscr: "\u{1D4CD}", xsqcup: "\u2A06", xuplus: "\u2A04", xutri: "\u25B3", xvee: "\u22C1", xwedge: "\u22C0", Yacute: "\xDD", yacute: "\xFD", YAcy: "\u042F", yacy: "\u044F", Ycirc: "\u0176", ycirc: "\u0177", Ycy: "\u042B", ycy: "\u044B", yen: "\xA5", Yfr: "\u{1D51C}", yfr: "\u{1D536}", YIcy: "\u0407", yicy: "\u0457", Yopf: "\u{1D550}", yopf: "\u{1D56A}", Yscr: "\u{1D4B4}", yscr: "\u{1D4CE}", YUcy: "\u042E", yucy: "\u044E", yuml: "\xFF", Yuml: "\u0178", Zacute: "\u0179", zacute: "\u017A", Zcaron: "\u017D", zcaron: "\u017E", Zcy: "\u0417", zcy: "\u0437", Zdot: "\u017B", zdot: "\u017C", zeetrf: "\u2128", ZeroWidthSpace: "\u200B", Zeta: "\u0396", zeta: "\u03B6", zfr: "\u{1D537}", Zfr: "\u2128", ZHcy: "\u0416", zhcy: "\u0436", zigrarr: "\u21DD", zopf: "\u{1D56B}", Zopf: "\u2124", Zscr: "\u{1D4B5}", zscr: "\u{1D4CF}", zwj: "\u200D", zwnj: "\u200C" };
  }
});

// ../../node_modules/markdown-it/lib/common/entities.js
var require_entities2 = __commonJS({
  "../../node_modules/markdown-it/lib/common/entities.js"(exports2, module2) {
    "use strict";
    module2.exports = require_entities();
  }
});

// ../../node_modules/uc.micro/categories/P/regex.js
var require_regex = __commonJS({
  "../../node_modules/uc.micro/categories/P/regex.js"(exports2, module2) {
    module2.exports = /[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/;
  }
});

// ../../node_modules/mdurl/encode.js
var require_encode = __commonJS({
  "../../node_modules/mdurl/encode.js"(exports2, module2) {
    "use strict";
    var encodeCache = {};
    function getEncodeCache(exclude) {
      var i2, ch, cache = encodeCache[exclude];
      if (cache) {
        return cache;
      }
      cache = encodeCache[exclude] = [];
      for (i2 = 0; i2 < 128; i2++) {
        ch = String.fromCharCode(i2);
        if (/^[0-9a-z]$/i.test(ch)) {
          cache.push(ch);
        } else {
          cache.push("%" + ("0" + i2.toString(16).toUpperCase()).slice(-2));
        }
      }
      for (i2 = 0; i2 < exclude.length; i2++) {
        cache[exclude.charCodeAt(i2)] = exclude[i2];
      }
      return cache;
    }
    function encode(string2, exclude, keepEscaped) {
      var i2, l, code7, nextCode, cache, result = "";
      if (typeof exclude !== "string") {
        keepEscaped = exclude;
        exclude = encode.defaultChars;
      }
      if (typeof keepEscaped === "undefined") {
        keepEscaped = true;
      }
      cache = getEncodeCache(exclude);
      for (i2 = 0, l = string2.length; i2 < l; i2++) {
        code7 = string2.charCodeAt(i2);
        if (keepEscaped && code7 === 37 && i2 + 2 < l) {
          if (/^[0-9a-f]{2}$/i.test(string2.slice(i2 + 1, i2 + 3))) {
            result += string2.slice(i2, i2 + 3);
            i2 += 2;
            continue;
          }
        }
        if (code7 < 128) {
          result += cache[code7];
          continue;
        }
        if (code7 >= 55296 && code7 <= 57343) {
          if (code7 >= 55296 && code7 <= 56319 && i2 + 1 < l) {
            nextCode = string2.charCodeAt(i2 + 1);
            if (nextCode >= 56320 && nextCode <= 57343) {
              result += encodeURIComponent(string2[i2] + string2[i2 + 1]);
              i2++;
              continue;
            }
          }
          result += "%EF%BF%BD";
          continue;
        }
        result += encodeURIComponent(string2[i2]);
      }
      return result;
    }
    encode.defaultChars = ";/?:@&=+$,-_.!~*'()#";
    encode.componentChars = "-_.!~*'()";
    module2.exports = encode;
  }
});

// ../../node_modules/mdurl/decode.js
var require_decode = __commonJS({
  "../../node_modules/mdurl/decode.js"(exports2, module2) {
    "use strict";
    var decodeCache = {};
    function getDecodeCache(exclude) {
      var i2, ch, cache = decodeCache[exclude];
      if (cache) {
        return cache;
      }
      cache = decodeCache[exclude] = [];
      for (i2 = 0; i2 < 128; i2++) {
        ch = String.fromCharCode(i2);
        cache.push(ch);
      }
      for (i2 = 0; i2 < exclude.length; i2++) {
        ch = exclude.charCodeAt(i2);
        cache[ch] = "%" + ("0" + ch.toString(16).toUpperCase()).slice(-2);
      }
      return cache;
    }
    function decode2(string2, exclude) {
      var cache;
      if (typeof exclude !== "string") {
        exclude = decode2.defaultChars;
      }
      cache = getDecodeCache(exclude);
      return string2.replace(/(%[a-f0-9]{2})+/gi, function(seq2) {
        var i2, l, b1, b2, b3, b4, chr, result = "";
        for (i2 = 0, l = seq2.length; i2 < l; i2 += 3) {
          b1 = parseInt(seq2.slice(i2 + 1, i2 + 3), 16);
          if (b1 < 128) {
            result += cache[b1];
            continue;
          }
          if ((b1 & 224) === 192 && i2 + 3 < l) {
            b2 = parseInt(seq2.slice(i2 + 4, i2 + 6), 16);
            if ((b2 & 192) === 128) {
              chr = b1 << 6 & 1984 | b2 & 63;
              if (chr < 128) {
                result += "\uFFFD\uFFFD";
              } else {
                result += String.fromCharCode(chr);
              }
              i2 += 3;
              continue;
            }
          }
          if ((b1 & 240) === 224 && i2 + 6 < l) {
            b2 = parseInt(seq2.slice(i2 + 4, i2 + 6), 16);
            b3 = parseInt(seq2.slice(i2 + 7, i2 + 9), 16);
            if ((b2 & 192) === 128 && (b3 & 192) === 128) {
              chr = b1 << 12 & 61440 | b2 << 6 & 4032 | b3 & 63;
              if (chr < 2048 || chr >= 55296 && chr <= 57343) {
                result += "\uFFFD\uFFFD\uFFFD";
              } else {
                result += String.fromCharCode(chr);
              }
              i2 += 6;
              continue;
            }
          }
          if ((b1 & 248) === 240 && i2 + 9 < l) {
            b2 = parseInt(seq2.slice(i2 + 4, i2 + 6), 16);
            b3 = parseInt(seq2.slice(i2 + 7, i2 + 9), 16);
            b4 = parseInt(seq2.slice(i2 + 10, i2 + 12), 16);
            if ((b2 & 192) === 128 && (b3 & 192) === 128 && (b4 & 192) === 128) {
              chr = b1 << 18 & 1835008 | b2 << 12 & 258048 | b3 << 6 & 4032 | b4 & 63;
              if (chr < 65536 || chr > 1114111) {
                result += "\uFFFD\uFFFD\uFFFD\uFFFD";
              } else {
                chr -= 65536;
                result += String.fromCharCode(55296 + (chr >> 10), 56320 + (chr & 1023));
              }
              i2 += 9;
              continue;
            }
          }
          result += "\uFFFD";
        }
        return result;
      });
    }
    decode2.defaultChars = ";/?:@&=+$,#";
    decode2.componentChars = "";
    module2.exports = decode2;
  }
});

// ../../node_modules/mdurl/format.js
var require_format = __commonJS({
  "../../node_modules/mdurl/format.js"(exports2, module2) {
    "use strict";
    module2.exports = function format(url) {
      var result = "";
      result += url.protocol || "";
      result += url.slashes ? "//" : "";
      result += url.auth ? url.auth + "@" : "";
      if (url.hostname && url.hostname.indexOf(":") !== -1) {
        result += "[" + url.hostname + "]";
      } else {
        result += url.hostname || "";
      }
      result += url.port ? ":" + url.port : "";
      result += url.pathname || "";
      result += url.search || "";
      result += url.hash || "";
      return result;
    };
  }
});

// ../../node_modules/mdurl/parse.js
var require_parse2 = __commonJS({
  "../../node_modules/mdurl/parse.js"(exports2, module2) {
    "use strict";
    function Url() {
      this.protocol = null;
      this.slashes = null;
      this.auth = null;
      this.port = null;
      this.hostname = null;
      this.hash = null;
      this.search = null;
      this.pathname = null;
    }
    var protocolPattern = /^([a-z0-9.+-]+:)/i;
    var portPattern = /:[0-9]*$/;
    var simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/;
    var delims = ["<", ">", '"', "`", " ", "\r", "\n", "	"];
    var unwise = ["{", "}", "|", "\\", "^", "`"].concat(delims);
    var autoEscape = ["'"].concat(unwise);
    var nonHostChars = ["%", "/", "?", ";", "#"].concat(autoEscape);
    var hostEndingChars = ["/", "?", "#"];
    var hostnameMaxLen = 255;
    var hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/;
    var hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/;
    var hostlessProtocol = {
      "javascript": true,
      "javascript:": true
    };
    var slashedProtocol = {
      "http": true,
      "https": true,
      "ftp": true,
      "gopher": true,
      "file": true,
      "http:": true,
      "https:": true,
      "ftp:": true,
      "gopher:": true,
      "file:": true
    };
    function urlParse(url, slashesDenoteHost) {
      if (url && url instanceof Url) {
        return url;
      }
      var u3 = new Url();
      u3.parse(url, slashesDenoteHost);
      return u3;
    }
    Url.prototype.parse = function(url, slashesDenoteHost) {
      var i2, l, lowerProto, hec, slashes, rest = url;
      rest = rest.trim();
      if (!slashesDenoteHost && url.split("#").length === 1) {
        var simplePath = simplePathPattern.exec(rest);
        if (simplePath) {
          this.pathname = simplePath[1];
          if (simplePath[2]) {
            this.search = simplePath[2];
          }
          return this;
        }
      }
      var proto9 = protocolPattern.exec(rest);
      if (proto9) {
        proto9 = proto9[0];
        lowerProto = proto9.toLowerCase();
        this.protocol = proto9;
        rest = rest.substr(proto9.length);
      }
      if (slashesDenoteHost || proto9 || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) {
        slashes = rest.substr(0, 2) === "//";
        if (slashes && !(proto9 && hostlessProtocol[proto9])) {
          rest = rest.substr(2);
          this.slashes = true;
        }
      }
      if (!hostlessProtocol[proto9] && (slashes || proto9 && !slashedProtocol[proto9])) {
        var hostEnd = -1;
        for (i2 = 0; i2 < hostEndingChars.length; i2++) {
          hec = rest.indexOf(hostEndingChars[i2]);
          if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {
            hostEnd = hec;
          }
        }
        var auth, atSign;
        if (hostEnd === -1) {
          atSign = rest.lastIndexOf("@");
        } else {
          atSign = rest.lastIndexOf("@", hostEnd);
        }
        if (atSign !== -1) {
          auth = rest.slice(0, atSign);
          rest = rest.slice(atSign + 1);
          this.auth = auth;
        }
        hostEnd = -1;
        for (i2 = 0; i2 < nonHostChars.length; i2++) {
          hec = rest.indexOf(nonHostChars[i2]);
          if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {
            hostEnd = hec;
          }
        }
        if (hostEnd === -1) {
          hostEnd = rest.length;
        }
        if (rest[hostEnd - 1] === ":") {
          hostEnd--;
        }
        var host = rest.slice(0, hostEnd);
        rest = rest.slice(hostEnd);
        this.parseHost(host);
        this.hostname = this.hostname || "";
        var ipv6Hostname = this.hostname[0] === "[" && this.hostname[this.hostname.length - 1] === "]";
        if (!ipv6Hostname) {
          var hostparts = this.hostname.split(/\./);
          for (i2 = 0, l = hostparts.length; i2 < l; i2++) {
            var part = hostparts[i2];
            if (!part) {
              continue;
            }
            if (!part.match(hostnamePartPattern)) {
              var newpart = "";
              for (var j = 0, k = part.length; j < k; j++) {
                if (part.charCodeAt(j) > 127) {
                  newpart += "x";
                } else {
                  newpart += part[j];
                }
              }
              if (!newpart.match(hostnamePartPattern)) {
                var validParts = hostparts.slice(0, i2);
                var notHost = hostparts.slice(i2 + 1);
                var bit = part.match(hostnamePartStart);
                if (bit) {
                  validParts.push(bit[1]);
                  notHost.unshift(bit[2]);
                }
                if (notHost.length) {
                  rest = notHost.join(".") + rest;
                }
                this.hostname = validParts.join(".");
                break;
              }
            }
          }
        }
        if (this.hostname.length > hostnameMaxLen) {
          this.hostname = "";
        }
        if (ipv6Hostname) {
          this.hostname = this.hostname.substr(1, this.hostname.length - 2);
        }
      }
      var hash = rest.indexOf("#");
      if (hash !== -1) {
        this.hash = rest.substr(hash);
        rest = rest.slice(0, hash);
      }
      var qm = rest.indexOf("?");
      if (qm !== -1) {
        this.search = rest.substr(qm);
        rest = rest.slice(0, qm);
      }
      if (rest) {
        this.pathname = rest;
      }
      if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {
        this.pathname = "";
      }
      return this;
    };
    Url.prototype.parseHost = function(host) {
      var port = portPattern.exec(host);
      if (port) {
        port = port[0];
        if (port !== ":") {
          this.port = port.substr(1);
        }
        host = host.substr(0, host.length - port.length);
      }
      if (host) {
        this.hostname = host;
      }
    };
    module2.exports = urlParse;
  }
});

// ../../node_modules/mdurl/index.js
var require_mdurl = __commonJS({
  "../../node_modules/mdurl/index.js"(exports2, module2) {
    "use strict";
    module2.exports.encode = require_encode();
    module2.exports.decode = require_decode();
    module2.exports.format = require_format();
    module2.exports.parse = require_parse2();
  }
});

// ../../node_modules/uc.micro/properties/Any/regex.js
var require_regex2 = __commonJS({
  "../../node_modules/uc.micro/properties/Any/regex.js"(exports2, module2) {
    module2.exports = /[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
  }
});

// ../../node_modules/uc.micro/categories/Cc/regex.js
var require_regex3 = __commonJS({
  "../../node_modules/uc.micro/categories/Cc/regex.js"(exports2, module2) {
    module2.exports = /[\0-\x1F\x7F-\x9F]/;
  }
});

// ../../node_modules/uc.micro/categories/Cf/regex.js
var require_regex4 = __commonJS({
  "../../node_modules/uc.micro/categories/Cf/regex.js"(exports2, module2) {
    module2.exports = /[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/;
  }
});

// ../../node_modules/uc.micro/categories/Z/regex.js
var require_regex5 = __commonJS({
  "../../node_modules/uc.micro/categories/Z/regex.js"(exports2, module2) {
    module2.exports = /[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;
  }
});

// ../../node_modules/uc.micro/index.js
var require_uc = __commonJS({
  "../../node_modules/uc.micro/index.js"(exports2) {
    "use strict";
    exports2.Any = require_regex2();
    exports2.Cc = require_regex3();
    exports2.Cf = require_regex4();
    exports2.P = require_regex();
    exports2.Z = require_regex5();
  }
});

// ../../node_modules/markdown-it/lib/common/utils.js
var require_utils2 = __commonJS({
  "../../node_modules/markdown-it/lib/common/utils.js"(exports2) {
    "use strict";
    function _class2(obj) {
      return Object.prototype.toString.call(obj);
    }
    function isString(obj) {
      return _class2(obj) === "[object String]";
    }
    var _hasOwnProperty2 = Object.prototype.hasOwnProperty;
    function has3(object, key2) {
      return _hasOwnProperty2.call(object, key2);
    }
    function assign2(obj) {
      var sources = Array.prototype.slice.call(arguments, 1);
      sources.forEach(function(source2) {
        if (!source2) {
          return;
        }
        if (typeof source2 !== "object") {
          throw new TypeError(source2 + "must be object");
        }
        Object.keys(source2).forEach(function(key2) {
          obj[key2] = source2[key2];
        });
      });
      return obj;
    }
    function arrayReplaceAt(src, pos, newElements) {
      return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));
    }
    function isValidEntityCode(c) {
      if (c >= 55296 && c <= 57343) {
        return false;
      }
      if (c >= 64976 && c <= 65007) {
        return false;
      }
      if ((c & 65535) === 65535 || (c & 65535) === 65534) {
        return false;
      }
      if (c >= 0 && c <= 8) {
        return false;
      }
      if (c === 11) {
        return false;
      }
      if (c >= 14 && c <= 31) {
        return false;
      }
      if (c >= 127 && c <= 159) {
        return false;
      }
      if (c > 1114111) {
        return false;
      }
      return true;
    }
    function fromCodePoint2(c) {
      if (c > 65535) {
        c -= 65536;
        var surrogate1 = 55296 + (c >> 10), surrogate2 = 56320 + (c & 1023);
        return String.fromCharCode(surrogate1, surrogate2);
      }
      return String.fromCharCode(c);
    }
    var UNESCAPE_MD_RE = /\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g;
    var ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;
    var UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + "|" + ENTITY_RE.source, "gi");
    var DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i;
    var entities = require_entities2();
    function replaceEntityPattern(match3, name3) {
      var code7;
      if (has3(entities, name3)) {
        return entities[name3];
      }
      if (name3.charCodeAt(0) === 35 && DIGITAL_ENTITY_TEST_RE.test(name3)) {
        code7 = name3[1].toLowerCase() === "x" ? parseInt(name3.slice(2), 16) : parseInt(name3.slice(1), 10);
        if (isValidEntityCode(code7)) {
          return fromCodePoint2(code7);
        }
      }
      return match3;
    }
    function unescapeMd(str2) {
      if (str2.indexOf("\\") < 0) {
        return str2;
      }
      return str2.replace(UNESCAPE_MD_RE, "$1");
    }
    function unescapeAll(str2) {
      if (str2.indexOf("\\") < 0 && str2.indexOf("&") < 0) {
        return str2;
      }
      return str2.replace(UNESCAPE_ALL_RE, function(match3, escaped, entity) {
        if (escaped) {
          return escaped;
        }
        return replaceEntityPattern(match3, entity);
      });
    }
    var HTML_ESCAPE_TEST_RE = /[&<>"]/;
    var HTML_ESCAPE_REPLACE_RE = /[&<>"]/g;
    var HTML_REPLACEMENTS = {
      "&": "&amp;",
      "<": "&lt;",
      ">": "&gt;",
      '"': "&quot;"
    };
    function replaceUnsafeChar(ch) {
      return HTML_REPLACEMENTS[ch];
    }
    function escapeHtml4(str2) {
      if (HTML_ESCAPE_TEST_RE.test(str2)) {
        return str2.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);
      }
      return str2;
    }
    var REGEXP_ESCAPE_RE = /[.?*+^$[\]\\(){}|-]/g;
    function escapeRE(str2) {
      return str2.replace(REGEXP_ESCAPE_RE, "\\$&");
    }
    function isSpace(code7) {
      switch (code7) {
        case 9:
        case 32:
          return true;
      }
      return false;
    }
    function isWhiteSpace(code7) {
      if (code7 >= 8192 && code7 <= 8202) {
        return true;
      }
      switch (code7) {
        case 9:
        // \t
        case 10:
        // \n
        case 11:
        // \v
        case 12:
        // \f
        case 13:
        // \r
        case 32:
        case 160:
        case 5760:
        case 8239:
        case 8287:
        case 12288:
          return true;
      }
      return false;
    }
    var UNICODE_PUNCT_RE = require_regex();
    function isPunctChar(ch) {
      return UNICODE_PUNCT_RE.test(ch);
    }
    function isMdAsciiPunct(ch) {
      switch (ch) {
        case 33:
        case 34:
        case 35:
        case 36:
        case 37:
        case 38:
        case 39:
        case 40:
        case 41:
        case 42:
        case 43:
        case 44:
        case 45:
        case 46:
        case 47:
        case 58:
        case 59:
        case 60:
        case 61:
        case 62:
        case 63:
        case 64:
        case 91:
        case 92:
        case 93:
        case 94:
        case 95:
        case 96:
        case 123:
        case 124:
        case 125:
        case 126:
          return true;
        default:
          return false;
      }
    }
    function normalizeReference(str2) {
      str2 = str2.trim().replace(/\s+/g, " ");
      if ("\u1E9E".toLowerCase() === "\u1E7E") {
        str2 = str2.replace(/ẞ/g, "\xDF");
      }
      return str2.toLowerCase().toUpperCase();
    }
    exports2.lib = {};
    exports2.lib.mdurl = require_mdurl();
    exports2.lib.ucmicro = require_uc();
    exports2.assign = assign2;
    exports2.isString = isString;
    exports2.has = has3;
    exports2.unescapeMd = unescapeMd;
    exports2.unescapeAll = unescapeAll;
    exports2.isValidEntityCode = isValidEntityCode;
    exports2.fromCodePoint = fromCodePoint2;
    exports2.escapeHtml = escapeHtml4;
    exports2.arrayReplaceAt = arrayReplaceAt;
    exports2.isSpace = isSpace;
    exports2.isWhiteSpace = isWhiteSpace;
    exports2.isMdAsciiPunct = isMdAsciiPunct;
    exports2.isPunctChar = isPunctChar;
    exports2.escapeRE = escapeRE;
    exports2.normalizeReference = normalizeReference;
  }
});

// ../../node_modules/classnames/index.js
var require_classnames = __commonJS({
  "../../node_modules/classnames/index.js"(exports2, module2) {
    (function() {
      "use strict";
      var hasOwn = {}.hasOwnProperty;
      var nativeCodeString = "[native code]";
      function classNames3() {
        var classes = [];
        for (var i2 = 0; i2 < arguments.length; i2++) {
          var arg2 = arguments[i2];
          if (!arg2) continue;
          var argType = typeof arg2;
          if (argType === "string" || argType === "number") {
            classes.push(arg2);
          } else if (Array.isArray(arg2)) {
            if (arg2.length) {
              var inner2 = classNames3.apply(null, arg2);
              if (inner2) {
                classes.push(inner2);
              }
            }
          } else if (argType === "object") {
            if (arg2.toString !== Object.prototype.toString && !arg2.toString.toString().includes("[native code]")) {
              classes.push(arg2.toString());
              continue;
            }
            for (var key2 in arg2) {
              if (hasOwn.call(arg2, key2) && arg2[key2]) {
                classes.push(key2);
              }
            }
          }
        }
        return classes.join(" ");
      }
      if (typeof module2 !== "undefined" && module2.exports) {
        classNames3.default = classNames3;
        module2.exports = classNames3;
      } else if (typeof define === "function" && typeof define.amd === "object" && define.amd) {
        define("classnames", [], function() {
          return classNames3;
        });
      } else {
        window.classNames = classNames3;
      }
    })();
  }
});

// ../../node_modules/parse5/lib/common/unicode.js
var require_unicode = __commonJS({
  "../../node_modules/parse5/lib/common/unicode.js"(exports2) {
    "use strict";
    var UNDEFINED_CODE_POINTS2 = [
      65534,
      65535,
      131070,
      131071,
      196606,
      196607,
      262142,
      262143,
      327678,
      327679,
      393214,
      393215,
      458750,
      458751,
      524286,
      524287,
      589822,
      589823,
      655358,
      655359,
      720894,
      720895,
      786430,
      786431,
      851966,
      851967,
      917502,
      917503,
      983038,
      983039,
      1048574,
      1048575,
      1114110,
      1114111
    ];
    exports2.REPLACEMENT_CHARACTER = "\uFFFD";
    exports2.CODE_POINTS = {
      EOF: -1,
      NULL: 0,
      TABULATION: 9,
      CARRIAGE_RETURN: 13,
      LINE_FEED: 10,
      FORM_FEED: 12,
      SPACE: 32,
      EXCLAMATION_MARK: 33,
      QUOTATION_MARK: 34,
      NUMBER_SIGN: 35,
      AMPERSAND: 38,
      APOSTROPHE: 39,
      HYPHEN_MINUS: 45,
      SOLIDUS: 47,
      DIGIT_0: 48,
      DIGIT_9: 57,
      SEMICOLON: 59,
      LESS_THAN_SIGN: 60,
      EQUALS_SIGN: 61,
      GREATER_THAN_SIGN: 62,
      QUESTION_MARK: 63,
      LATIN_CAPITAL_A: 65,
      LATIN_CAPITAL_F: 70,
      LATIN_CAPITAL_X: 88,
      LATIN_CAPITAL_Z: 90,
      RIGHT_SQUARE_BRACKET: 93,
      GRAVE_ACCENT: 96,
      LATIN_SMALL_A: 97,
      LATIN_SMALL_F: 102,
      LATIN_SMALL_X: 120,
      LATIN_SMALL_Z: 122,
      REPLACEMENT_CHARACTER: 65533
    };
    exports2.CODE_POINT_SEQUENCES = {
      DASH_DASH_STRING: [45, 45],
      //--
      DOCTYPE_STRING: [68, 79, 67, 84, 89, 80, 69],
      //DOCTYPE
      CDATA_START_STRING: [91, 67, 68, 65, 84, 65, 91],
      //[CDATA[
      SCRIPT_STRING: [115, 99, 114, 105, 112, 116],
      //script
      PUBLIC_STRING: [80, 85, 66, 76, 73, 67],
      //PUBLIC
      SYSTEM_STRING: [83, 89, 83, 84, 69, 77]
      //SYSTEM
    };
    exports2.isSurrogate = function(cp) {
      return cp >= 55296 && cp <= 57343;
    };
    exports2.isSurrogatePair = function(cp) {
      return cp >= 56320 && cp <= 57343;
    };
    exports2.getSurrogatePairCodePoint = function(cp1, cp2) {
      return (cp1 - 55296) * 1024 + 9216 + cp2;
    };
    exports2.isControlCodePoint = function(cp) {
      return cp !== 32 && cp !== 10 && cp !== 13 && cp !== 9 && cp !== 12 && cp >= 1 && cp <= 31 || cp >= 127 && cp <= 159;
    };
    exports2.isUndefinedCodePoint = function(cp) {
      return cp >= 64976 && cp <= 65007 || UNDEFINED_CODE_POINTS2.indexOf(cp) > -1;
    };
  }
});

// ../../node_modules/parse5/lib/common/error-codes.js
var require_error_codes = __commonJS({
  "../../node_modules/parse5/lib/common/error-codes.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      controlCharacterInInputStream: "control-character-in-input-stream",
      noncharacterInInputStream: "noncharacter-in-input-stream",
      surrogateInInputStream: "surrogate-in-input-stream",
      nonVoidHtmlElementStartTagWithTrailingSolidus: "non-void-html-element-start-tag-with-trailing-solidus",
      endTagWithAttributes: "end-tag-with-attributes",
      endTagWithTrailingSolidus: "end-tag-with-trailing-solidus",
      unexpectedSolidusInTag: "unexpected-solidus-in-tag",
      unexpectedNullCharacter: "unexpected-null-character",
      unexpectedQuestionMarkInsteadOfTagName: "unexpected-question-mark-instead-of-tag-name",
      invalidFirstCharacterOfTagName: "invalid-first-character-of-tag-name",
      unexpectedEqualsSignBeforeAttributeName: "unexpected-equals-sign-before-attribute-name",
      missingEndTagName: "missing-end-tag-name",
      unexpectedCharacterInAttributeName: "unexpected-character-in-attribute-name",
      unknownNamedCharacterReference: "unknown-named-character-reference",
      missingSemicolonAfterCharacterReference: "missing-semicolon-after-character-reference",
      unexpectedCharacterAfterDoctypeSystemIdentifier: "unexpected-character-after-doctype-system-identifier",
      unexpectedCharacterInUnquotedAttributeValue: "unexpected-character-in-unquoted-attribute-value",
      eofBeforeTagName: "eof-before-tag-name",
      eofInTag: "eof-in-tag",
      missingAttributeValue: "missing-attribute-value",
      missingWhitespaceBetweenAttributes: "missing-whitespace-between-attributes",
      missingWhitespaceAfterDoctypePublicKeyword: "missing-whitespace-after-doctype-public-keyword",
      missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers: "missing-whitespace-between-doctype-public-and-system-identifiers",
      missingWhitespaceAfterDoctypeSystemKeyword: "missing-whitespace-after-doctype-system-keyword",
      missingQuoteBeforeDoctypePublicIdentifier: "missing-quote-before-doctype-public-identifier",
      missingQuoteBeforeDoctypeSystemIdentifier: "missing-quote-before-doctype-system-identifier",
      missingDoctypePublicIdentifier: "missing-doctype-public-identifier",
      missingDoctypeSystemIdentifier: "missing-doctype-system-identifier",
      abruptDoctypePublicIdentifier: "abrupt-doctype-public-identifier",
      abruptDoctypeSystemIdentifier: "abrupt-doctype-system-identifier",
      cdataInHtmlContent: "cdata-in-html-content",
      incorrectlyOpenedComment: "incorrectly-opened-comment",
      eofInScriptHtmlCommentLikeText: "eof-in-script-html-comment-like-text",
      eofInDoctype: "eof-in-doctype",
      nestedComment: "nested-comment",
      abruptClosingOfEmptyComment: "abrupt-closing-of-empty-comment",
      eofInComment: "eof-in-comment",
      incorrectlyClosedComment: "incorrectly-closed-comment",
      eofInCdata: "eof-in-cdata",
      absenceOfDigitsInNumericCharacterReference: "absence-of-digits-in-numeric-character-reference",
      nullCharacterReference: "null-character-reference",
      surrogateCharacterReference: "surrogate-character-reference",
      characterReferenceOutsideUnicodeRange: "character-reference-outside-unicode-range",
      controlCharacterReference: "control-character-reference",
      noncharacterCharacterReference: "noncharacter-character-reference",
      missingWhitespaceBeforeDoctypeName: "missing-whitespace-before-doctype-name",
      missingDoctypeName: "missing-doctype-name",
      invalidCharacterSequenceAfterDoctypeName: "invalid-character-sequence-after-doctype-name",
      duplicateAttribute: "duplicate-attribute",
      nonConformingDoctype: "non-conforming-doctype",
      missingDoctype: "missing-doctype",
      misplacedDoctype: "misplaced-doctype",
      endTagWithoutMatchingOpenElement: "end-tag-without-matching-open-element",
      closingOfElementWithOpenChildElements: "closing-of-element-with-open-child-elements",
      disallowedContentInNoscriptInHead: "disallowed-content-in-noscript-in-head",
      openElementsLeftAfterEof: "open-elements-left-after-eof",
      abandonedHeadElementChild: "abandoned-head-element-child",
      misplacedStartTagForHeadElement: "misplaced-start-tag-for-head-element",
      nestedNoscriptInHead: "nested-noscript-in-head",
      eofInElementThatCanContainOnlyText: "eof-in-element-that-can-contain-only-text"
    };
  }
});

// ../../node_modules/parse5/lib/tokenizer/preprocessor.js
var require_preprocessor = __commonJS({
  "../../node_modules/parse5/lib/tokenizer/preprocessor.js"(exports2, module2) {
    "use strict";
    var unicode = require_unicode();
    var ERR2 = require_error_codes();
    var $2 = unicode.CODE_POINTS;
    var DEFAULT_BUFFER_WATERLINE2 = 1 << 16;
    var Preprocessor2 = class {
      constructor() {
        this.html = null;
        this.pos = -1;
        this.lastGapPos = -1;
        this.lastCharPos = -1;
        this.gapStack = [];
        this.skipNextNewLine = false;
        this.lastChunkWritten = false;
        this.endOfChunkHit = false;
        this.bufferWaterline = DEFAULT_BUFFER_WATERLINE2;
      }
      _err() {
      }
      _addGap() {
        this.gapStack.push(this.lastGapPos);
        this.lastGapPos = this.pos;
      }
      _processSurrogate(cp) {
        if (this.pos !== this.lastCharPos) {
          const nextCp = this.html.charCodeAt(this.pos + 1);
          if (unicode.isSurrogatePair(nextCp)) {
            this.pos++;
            this._addGap();
            return unicode.getSurrogatePairCodePoint(cp, nextCp);
          }
        } else if (!this.lastChunkWritten) {
          this.endOfChunkHit = true;
          return $2.EOF;
        }
        this._err(ERR2.surrogateInInputStream);
        return cp;
      }
      dropParsedChunk() {
        if (this.pos > this.bufferWaterline) {
          this.lastCharPos -= this.pos;
          this.html = this.html.substring(this.pos);
          this.pos = 0;
          this.lastGapPos = -1;
          this.gapStack = [];
        }
      }
      write(chunk, isLastChunk) {
        if (this.html) {
          this.html += chunk;
        } else {
          this.html = chunk;
        }
        this.lastCharPos = this.html.length - 1;
        this.endOfChunkHit = false;
        this.lastChunkWritten = isLastChunk;
      }
      insertHtmlAtCurrentPos(chunk) {
        this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1, this.html.length);
        this.lastCharPos = this.html.length - 1;
        this.endOfChunkHit = false;
      }
      advance() {
        this.pos++;
        if (this.pos > this.lastCharPos) {
          this.endOfChunkHit = !this.lastChunkWritten;
          return $2.EOF;
        }
        let cp = this.html.charCodeAt(this.pos);
        if (this.skipNextNewLine && cp === $2.LINE_FEED) {
          this.skipNextNewLine = false;
          this._addGap();
          return this.advance();
        }
        if (cp === $2.CARRIAGE_RETURN) {
          this.skipNextNewLine = true;
          return $2.LINE_FEED;
        }
        this.skipNextNewLine = false;
        if (unicode.isSurrogate(cp)) {
          cp = this._processSurrogate(cp);
        }
        const isCommonValidRange = cp > 31 && cp < 127 || cp === $2.LINE_FEED || cp === $2.CARRIAGE_RETURN || cp > 159 && cp < 64976;
        if (!isCommonValidRange) {
          this._checkForProblematicCharacters(cp);
        }
        return cp;
      }
      _checkForProblematicCharacters(cp) {
        if (unicode.isControlCodePoint(cp)) {
          this._err(ERR2.controlCharacterInInputStream);
        } else if (unicode.isUndefinedCodePoint(cp)) {
          this._err(ERR2.noncharacterInInputStream);
        }
      }
      retreat() {
        if (this.pos === this.lastGapPos) {
          this.lastGapPos = this.gapStack.pop();
          this.pos--;
        }
        this.pos--;
      }
    };
    module2.exports = Preprocessor2;
  }
});

// ../../node_modules/parse5/lib/tokenizer/named-entity-data.js
var require_named_entity_data = __commonJS({
  "../../node_modules/parse5/lib/tokenizer/named-entity-data.js"(exports2, module2) {
    "use strict";
    module2.exports = new Uint16Array([4, 52, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 106, 303, 412, 810, 1432, 1701, 1796, 1987, 2114, 2360, 2420, 2484, 3170, 3251, 4140, 4393, 4575, 4610, 5106, 5512, 5728, 6117, 6274, 6315, 6345, 6427, 6516, 7002, 7910, 8733, 9323, 9870, 10170, 10631, 10893, 11318, 11386, 11467, 12773, 13092, 14474, 14922, 15448, 15542, 16419, 17666, 18166, 18611, 19004, 19095, 19298, 19397, 4, 16, 69, 77, 97, 98, 99, 102, 103, 108, 109, 110, 111, 112, 114, 115, 116, 117, 140, 150, 158, 169, 176, 194, 199, 210, 216, 222, 226, 242, 256, 266, 283, 294, 108, 105, 103, 5, 198, 1, 59, 148, 1, 198, 80, 5, 38, 1, 59, 156, 1, 38, 99, 117, 116, 101, 5, 193, 1, 59, 167, 1, 193, 114, 101, 118, 101, 59, 1, 258, 4, 2, 105, 121, 182, 191, 114, 99, 5, 194, 1, 59, 189, 1, 194, 59, 1, 1040, 114, 59, 3, 55349, 56580, 114, 97, 118, 101, 5, 192, 1, 59, 208, 1, 192, 112, 104, 97, 59, 1, 913, 97, 99, 114, 59, 1, 256, 100, 59, 1, 10835, 4, 2, 103, 112, 232, 237, 111, 110, 59, 1, 260, 102, 59, 3, 55349, 56632, 112, 108, 121, 70, 117, 110, 99, 116, 105, 111, 110, 59, 1, 8289, 105, 110, 103, 5, 197, 1, 59, 264, 1, 197, 4, 2, 99, 115, 272, 277, 114, 59, 3, 55349, 56476, 105, 103, 110, 59, 1, 8788, 105, 108, 100, 101, 5, 195, 1, 59, 292, 1, 195, 109, 108, 5, 196, 1, 59, 301, 1, 196, 4, 8, 97, 99, 101, 102, 111, 114, 115, 117, 321, 350, 354, 383, 388, 394, 400, 405, 4, 2, 99, 114, 327, 336, 107, 115, 108, 97, 115, 104, 59, 1, 8726, 4, 2, 118, 119, 342, 345, 59, 1, 10983, 101, 100, 59, 1, 8966, 121, 59, 1, 1041, 4, 3, 99, 114, 116, 362, 369, 379, 97, 117, 115, 101, 59, 1, 8757, 110, 111, 117, 108, 108, 105, 115, 59, 1, 8492, 97, 59, 1, 914, 114, 59, 3, 55349, 56581, 112, 102, 59, 3, 55349, 56633, 101, 118, 101, 59, 1, 728, 99, 114, 59, 1, 8492, 109, 112, 101, 113, 59, 1, 8782, 4, 14, 72, 79, 97, 99, 100, 101, 102, 104, 105, 108, 111, 114, 115, 117, 442, 447, 456, 504, 542, 547, 569, 573, 577, 616, 678, 784, 790, 796, 99, 121, 59, 1, 1063, 80, 89, 5, 169, 1, 59, 454, 1, 169, 4, 3, 99, 112, 121, 464, 470, 497, 117, 116, 101, 59, 1, 262, 4, 2, 59, 105, 476, 478, 1, 8914, 116, 97, 108, 68, 105, 102, 102, 101, 114, 101, 110, 116, 105, 97, 108, 68, 59, 1, 8517, 108, 101, 121, 115, 59, 1, 8493, 4, 4, 97, 101, 105, 111, 514, 520, 530, 535, 114, 111, 110, 59, 1, 268, 100, 105, 108, 5, 199, 1, 59, 528, 1, 199, 114, 99, 59, 1, 264, 110, 105, 110, 116, 59, 1, 8752, 111, 116, 59, 1, 266, 4, 2, 100, 110, 553, 560, 105, 108, 108, 97, 59, 1, 184, 116, 101, 114, 68, 111, 116, 59, 1, 183, 114, 59, 1, 8493, 105, 59, 1, 935, 114, 99, 108, 101, 4, 4, 68, 77, 80, 84, 591, 596, 603, 609, 111, 116, 59, 1, 8857, 105, 110, 117, 115, 59, 1, 8854, 108, 117, 115, 59, 1, 8853, 105, 109, 101, 115, 59, 1, 8855, 111, 4, 2, 99, 115, 623, 646, 107, 119, 105, 115, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 1, 8754, 101, 67, 117, 114, 108, 121, 4, 2, 68, 81, 658, 671, 111, 117, 98, 108, 101, 81, 117, 111, 116, 101, 59, 1, 8221, 117, 111, 116, 101, 59, 1, 8217, 4, 4, 108, 110, 112, 117, 688, 701, 736, 753, 111, 110, 4, 2, 59, 101, 696, 698, 1, 8759, 59, 1, 10868, 4, 3, 103, 105, 116, 709, 717, 722, 114, 117, 101, 110, 116, 59, 1, 8801, 110, 116, 59, 1, 8751, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 1, 8750, 4, 2, 102, 114, 742, 745, 59, 1, 8450, 111, 100, 117, 99, 116, 59, 1, 8720, 110, 116, 101, 114, 67, 108, 111, 99, 107, 119, 105, 115, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 1, 8755, 111, 115, 115, 59, 1, 10799, 99, 114, 59, 3, 55349, 56478, 112, 4, 2, 59, 67, 803, 805, 1, 8915, 97, 112, 59, 1, 8781, 4, 11, 68, 74, 83, 90, 97, 99, 101, 102, 105, 111, 115, 834, 850, 855, 860, 865, 888, 903, 916, 921, 1011, 1415, 4, 2, 59, 111, 840, 842, 1, 8517, 116, 114, 97, 104, 100, 59, 1, 10513, 99, 121, 59, 1, 1026, 99, 121, 59, 1, 1029, 99, 121, 59, 1, 1039, 4, 3, 103, 114, 115, 873, 879, 883, 103, 101, 114, 59, 1, 8225, 114, 59, 1, 8609, 104, 118, 59, 1, 10980, 4, 2, 97, 121, 894, 900, 114, 111, 110, 59, 1, 270, 59, 1, 1044, 108, 4, 2, 59, 116, 910, 912, 1, 8711, 97, 59, 1, 916, 114, 59, 3, 55349, 56583, 4, 2, 97, 102, 927, 998, 4, 2, 99, 109, 933, 992, 114, 105, 116, 105, 99, 97, 108, 4, 4, 65, 68, 71, 84, 950, 957, 978, 985, 99, 117, 116, 101, 59, 1, 180, 111, 4, 2, 116, 117, 964, 967, 59, 1, 729, 98, 108, 101, 65, 99, 117, 116, 101, 59, 1, 733, 114, 97, 118, 101, 59, 1, 96, 105, 108, 100, 101, 59, 1, 732, 111, 110, 100, 59, 1, 8900, 102, 101, 114, 101, 110, 116, 105, 97, 108, 68, 59, 1, 8518, 4, 4, 112, 116, 117, 119, 1021, 1026, 1048, 1249, 102, 59, 3, 55349, 56635, 4, 3, 59, 68, 69, 1034, 1036, 1041, 1, 168, 111, 116, 59, 1, 8412, 113, 117, 97, 108, 59, 1, 8784, 98, 108, 101, 4, 6, 67, 68, 76, 82, 85, 86, 1065, 1082, 1101, 1189, 1211, 1236, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 1, 8751, 111, 4, 2, 116, 119, 1089, 1092, 59, 1, 168, 110, 65, 114, 114, 111, 119, 59, 1, 8659, 4, 2, 101, 111, 1107, 1141, 102, 116, 4, 3, 65, 82, 84, 1117, 1124, 1136, 114, 114, 111, 119, 59, 1, 8656, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 8660, 101, 101, 59, 1, 10980, 110, 103, 4, 2, 76, 82, 1149, 1177, 101, 102, 116, 4, 2, 65, 82, 1158, 1165, 114, 114, 111, 119, 59, 1, 10232, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 10234, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 10233, 105, 103, 104, 116, 4, 2, 65, 84, 1199, 1206, 114, 114, 111, 119, 59, 1, 8658, 101, 101, 59, 1, 8872, 112, 4, 2, 65, 68, 1218, 1225, 114, 114, 111, 119, 59, 1, 8657, 111, 119, 110, 65, 114, 114, 111, 119, 59, 1, 8661, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 1, 8741, 110, 4, 6, 65, 66, 76, 82, 84, 97, 1264, 1292, 1299, 1352, 1391, 1408, 114, 114, 111, 119, 4, 3, 59, 66, 85, 1276, 1278, 1283, 1, 8595, 97, 114, 59, 1, 10515, 112, 65, 114, 114, 111, 119, 59, 1, 8693, 114, 101, 118, 101, 59, 1, 785, 101, 102, 116, 4, 3, 82, 84, 86, 1310, 1323, 1334, 105, 103, 104, 116, 86, 101, 99, 116, 111, 114, 59, 1, 10576, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10590, 101, 99, 116, 111, 114, 4, 2, 59, 66, 1345, 1347, 1, 8637, 97, 114, 59, 1, 10582, 105, 103, 104, 116, 4, 2, 84, 86, 1362, 1373, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10591, 101, 99, 116, 111, 114, 4, 2, 59, 66, 1384, 1386, 1, 8641, 97, 114, 59, 1, 10583, 101, 101, 4, 2, 59, 65, 1399, 1401, 1, 8868, 114, 114, 111, 119, 59, 1, 8615, 114, 114, 111, 119, 59, 1, 8659, 4, 2, 99, 116, 1421, 1426, 114, 59, 3, 55349, 56479, 114, 111, 107, 59, 1, 272, 4, 16, 78, 84, 97, 99, 100, 102, 103, 108, 109, 111, 112, 113, 115, 116, 117, 120, 1466, 1470, 1478, 1489, 1515, 1520, 1525, 1536, 1544, 1593, 1609, 1617, 1650, 1664, 1668, 1677, 71, 59, 1, 330, 72, 5, 208, 1, 59, 1476, 1, 208, 99, 117, 116, 101, 5, 201, 1, 59, 1487, 1, 201, 4, 3, 97, 105, 121, 1497, 1503, 1512, 114, 111, 110, 59, 1, 282, 114, 99, 5, 202, 1, 59, 1510, 1, 202, 59, 1, 1069, 111, 116, 59, 1, 278, 114, 59, 3, 55349, 56584, 114, 97, 118, 101, 5, 200, 1, 59, 1534, 1, 200, 101, 109, 101, 110, 116, 59, 1, 8712, 4, 2, 97, 112, 1550, 1555, 99, 114, 59, 1, 274, 116, 121, 4, 2, 83, 86, 1563, 1576, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 1, 9723, 101, 114, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 1, 9643, 4, 2, 103, 112, 1599, 1604, 111, 110, 59, 1, 280, 102, 59, 3, 55349, 56636, 115, 105, 108, 111, 110, 59, 1, 917, 117, 4, 2, 97, 105, 1624, 1640, 108, 4, 2, 59, 84, 1631, 1633, 1, 10869, 105, 108, 100, 101, 59, 1, 8770, 108, 105, 98, 114, 105, 117, 109, 59, 1, 8652, 4, 2, 99, 105, 1656, 1660, 114, 59, 1, 8496, 109, 59, 1, 10867, 97, 59, 1, 919, 109, 108, 5, 203, 1, 59, 1675, 1, 203, 4, 2, 105, 112, 1683, 1689, 115, 116, 115, 59, 1, 8707, 111, 110, 101, 110, 116, 105, 97, 108, 69, 59, 1, 8519, 4, 5, 99, 102, 105, 111, 115, 1713, 1717, 1722, 1762, 1791, 121, 59, 1, 1060, 114, 59, 3, 55349, 56585, 108, 108, 101, 100, 4, 2, 83, 86, 1732, 1745, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 1, 9724, 101, 114, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 1, 9642, 4, 3, 112, 114, 117, 1770, 1775, 1781, 102, 59, 3, 55349, 56637, 65, 108, 108, 59, 1, 8704, 114, 105, 101, 114, 116, 114, 102, 59, 1, 8497, 99, 114, 59, 1, 8497, 4, 12, 74, 84, 97, 98, 99, 100, 102, 103, 111, 114, 115, 116, 1822, 1827, 1834, 1848, 1855, 1877, 1882, 1887, 1890, 1896, 1978, 1984, 99, 121, 59, 1, 1027, 5, 62, 1, 59, 1832, 1, 62, 109, 109, 97, 4, 2, 59, 100, 1843, 1845, 1, 915, 59, 1, 988, 114, 101, 118, 101, 59, 1, 286, 4, 3, 101, 105, 121, 1863, 1869, 1874, 100, 105, 108, 59, 1, 290, 114, 99, 59, 1, 284, 59, 1, 1043, 111, 116, 59, 1, 288, 114, 59, 3, 55349, 56586, 59, 1, 8921, 112, 102, 59, 3, 55349, 56638, 101, 97, 116, 101, 114, 4, 6, 69, 70, 71, 76, 83, 84, 1915, 1933, 1944, 1953, 1959, 1971, 113, 117, 97, 108, 4, 2, 59, 76, 1925, 1927, 1, 8805, 101, 115, 115, 59, 1, 8923, 117, 108, 108, 69, 113, 117, 97, 108, 59, 1, 8807, 114, 101, 97, 116, 101, 114, 59, 1, 10914, 101, 115, 115, 59, 1, 8823, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 10878, 105, 108, 100, 101, 59, 1, 8819, 99, 114, 59, 3, 55349, 56482, 59, 1, 8811, 4, 8, 65, 97, 99, 102, 105, 111, 115, 117, 2005, 2012, 2026, 2032, 2036, 2049, 2073, 2089, 82, 68, 99, 121, 59, 1, 1066, 4, 2, 99, 116, 2018, 2023, 101, 107, 59, 1, 711, 59, 1, 94, 105, 114, 99, 59, 1, 292, 114, 59, 1, 8460, 108, 98, 101, 114, 116, 83, 112, 97, 99, 101, 59, 1, 8459, 4, 2, 112, 114, 2055, 2059, 102, 59, 1, 8461, 105, 122, 111, 110, 116, 97, 108, 76, 105, 110, 101, 59, 1, 9472, 4, 2, 99, 116, 2079, 2083, 114, 59, 1, 8459, 114, 111, 107, 59, 1, 294, 109, 112, 4, 2, 68, 69, 2097, 2107, 111, 119, 110, 72, 117, 109, 112, 59, 1, 8782, 113, 117, 97, 108, 59, 1, 8783, 4, 14, 69, 74, 79, 97, 99, 100, 102, 103, 109, 110, 111, 115, 116, 117, 2144, 2149, 2155, 2160, 2171, 2189, 2194, 2198, 2209, 2245, 2307, 2329, 2334, 2341, 99, 121, 59, 1, 1045, 108, 105, 103, 59, 1, 306, 99, 121, 59, 1, 1025, 99, 117, 116, 101, 5, 205, 1, 59, 2169, 1, 205, 4, 2, 105, 121, 2177, 2186, 114, 99, 5, 206, 1, 59, 2184, 1, 206, 59, 1, 1048, 111, 116, 59, 1, 304, 114, 59, 1, 8465, 114, 97, 118, 101, 5, 204, 1, 59, 2207, 1, 204, 4, 3, 59, 97, 112, 2217, 2219, 2238, 1, 8465, 4, 2, 99, 103, 2225, 2229, 114, 59, 1, 298, 105, 110, 97, 114, 121, 73, 59, 1, 8520, 108, 105, 101, 115, 59, 1, 8658, 4, 2, 116, 118, 2251, 2281, 4, 2, 59, 101, 2257, 2259, 1, 8748, 4, 2, 103, 114, 2265, 2271, 114, 97, 108, 59, 1, 8747, 115, 101, 99, 116, 105, 111, 110, 59, 1, 8898, 105, 115, 105, 98, 108, 101, 4, 2, 67, 84, 2293, 2300, 111, 109, 109, 97, 59, 1, 8291, 105, 109, 101, 115, 59, 1, 8290, 4, 3, 103, 112, 116, 2315, 2320, 2325, 111, 110, 59, 1, 302, 102, 59, 3, 55349, 56640, 97, 59, 1, 921, 99, 114, 59, 1, 8464, 105, 108, 100, 101, 59, 1, 296, 4, 2, 107, 109, 2347, 2352, 99, 121, 59, 1, 1030, 108, 5, 207, 1, 59, 2358, 1, 207, 4, 5, 99, 102, 111, 115, 117, 2372, 2386, 2391, 2397, 2414, 4, 2, 105, 121, 2378, 2383, 114, 99, 59, 1, 308, 59, 1, 1049, 114, 59, 3, 55349, 56589, 112, 102, 59, 3, 55349, 56641, 4, 2, 99, 101, 2403, 2408, 114, 59, 3, 55349, 56485, 114, 99, 121, 59, 1, 1032, 107, 99, 121, 59, 1, 1028, 4, 7, 72, 74, 97, 99, 102, 111, 115, 2436, 2441, 2446, 2452, 2467, 2472, 2478, 99, 121, 59, 1, 1061, 99, 121, 59, 1, 1036, 112, 112, 97, 59, 1, 922, 4, 2, 101, 121, 2458, 2464, 100, 105, 108, 59, 1, 310, 59, 1, 1050, 114, 59, 3, 55349, 56590, 112, 102, 59, 3, 55349, 56642, 99, 114, 59, 3, 55349, 56486, 4, 11, 74, 84, 97, 99, 101, 102, 108, 109, 111, 115, 116, 2508, 2513, 2520, 2562, 2585, 2981, 2986, 3004, 3011, 3146, 3167, 99, 121, 59, 1, 1033, 5, 60, 1, 59, 2518, 1, 60, 4, 5, 99, 109, 110, 112, 114, 2532, 2538, 2544, 2548, 2558, 117, 116, 101, 59, 1, 313, 98, 100, 97, 59, 1, 923, 103, 59, 1, 10218, 108, 97, 99, 101, 116, 114, 102, 59, 1, 8466, 114, 59, 1, 8606, 4, 3, 97, 101, 121, 2570, 2576, 2582, 114, 111, 110, 59, 1, 317, 100, 105, 108, 59, 1, 315, 59, 1, 1051, 4, 2, 102, 115, 2591, 2907, 116, 4, 10, 65, 67, 68, 70, 82, 84, 85, 86, 97, 114, 2614, 2663, 2672, 2728, 2735, 2760, 2820, 2870, 2888, 2895, 4, 2, 110, 114, 2620, 2633, 103, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 1, 10216, 114, 111, 119, 4, 3, 59, 66, 82, 2644, 2646, 2651, 1, 8592, 97, 114, 59, 1, 8676, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 8646, 101, 105, 108, 105, 110, 103, 59, 1, 8968, 111, 4, 2, 117, 119, 2679, 2692, 98, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 1, 10214, 110, 4, 2, 84, 86, 2699, 2710, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10593, 101, 99, 116, 111, 114, 4, 2, 59, 66, 2721, 2723, 1, 8643, 97, 114, 59, 1, 10585, 108, 111, 111, 114, 59, 1, 8970, 105, 103, 104, 116, 4, 2, 65, 86, 2745, 2752, 114, 114, 111, 119, 59, 1, 8596, 101, 99, 116, 111, 114, 59, 1, 10574, 4, 2, 101, 114, 2766, 2792, 101, 4, 3, 59, 65, 86, 2775, 2777, 2784, 1, 8867, 114, 114, 111, 119, 59, 1, 8612, 101, 99, 116, 111, 114, 59, 1, 10586, 105, 97, 110, 103, 108, 101, 4, 3, 59, 66, 69, 2806, 2808, 2813, 1, 8882, 97, 114, 59, 1, 10703, 113, 117, 97, 108, 59, 1, 8884, 112, 4, 3, 68, 84, 86, 2829, 2841, 2852, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 1, 10577, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10592, 101, 99, 116, 111, 114, 4, 2, 59, 66, 2863, 2865, 1, 8639, 97, 114, 59, 1, 10584, 101, 99, 116, 111, 114, 4, 2, 59, 66, 2881, 2883, 1, 8636, 97, 114, 59, 1, 10578, 114, 114, 111, 119, 59, 1, 8656, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8660, 115, 4, 6, 69, 70, 71, 76, 83, 84, 2922, 2936, 2947, 2956, 2962, 2974, 113, 117, 97, 108, 71, 114, 101, 97, 116, 101, 114, 59, 1, 8922, 117, 108, 108, 69, 113, 117, 97, 108, 59, 1, 8806, 114, 101, 97, 116, 101, 114, 59, 1, 8822, 101, 115, 115, 59, 1, 10913, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 10877, 105, 108, 100, 101, 59, 1, 8818, 114, 59, 3, 55349, 56591, 4, 2, 59, 101, 2992, 2994, 1, 8920, 102, 116, 97, 114, 114, 111, 119, 59, 1, 8666, 105, 100, 111, 116, 59, 1, 319, 4, 3, 110, 112, 119, 3019, 3110, 3115, 103, 4, 4, 76, 82, 108, 114, 3030, 3058, 3070, 3098, 101, 102, 116, 4, 2, 65, 82, 3039, 3046, 114, 114, 111, 119, 59, 1, 10229, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 10231, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 10230, 101, 102, 116, 4, 2, 97, 114, 3079, 3086, 114, 114, 111, 119, 59, 1, 10232, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 10234, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 10233, 102, 59, 3, 55349, 56643, 101, 114, 4, 2, 76, 82, 3123, 3134, 101, 102, 116, 65, 114, 114, 111, 119, 59, 1, 8601, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 8600, 4, 3, 99, 104, 116, 3154, 3158, 3161, 114, 59, 1, 8466, 59, 1, 8624, 114, 111, 107, 59, 1, 321, 59, 1, 8810, 4, 8, 97, 99, 101, 102, 105, 111, 115, 117, 3188, 3192, 3196, 3222, 3227, 3237, 3243, 3248, 112, 59, 1, 10501, 121, 59, 1, 1052, 4, 2, 100, 108, 3202, 3213, 105, 117, 109, 83, 112, 97, 99, 101, 59, 1, 8287, 108, 105, 110, 116, 114, 102, 59, 1, 8499, 114, 59, 3, 55349, 56592, 110, 117, 115, 80, 108, 117, 115, 59, 1, 8723, 112, 102, 59, 3, 55349, 56644, 99, 114, 59, 1, 8499, 59, 1, 924, 4, 9, 74, 97, 99, 101, 102, 111, 115, 116, 117, 3271, 3276, 3283, 3306, 3422, 3427, 4120, 4126, 4137, 99, 121, 59, 1, 1034, 99, 117, 116, 101, 59, 1, 323, 4, 3, 97, 101, 121, 3291, 3297, 3303, 114, 111, 110, 59, 1, 327, 100, 105, 108, 59, 1, 325, 59, 1, 1053, 4, 3, 103, 115, 119, 3314, 3380, 3415, 97, 116, 105, 118, 101, 4, 3, 77, 84, 86, 3327, 3340, 3365, 101, 100, 105, 117, 109, 83, 112, 97, 99, 101, 59, 1, 8203, 104, 105, 4, 2, 99, 110, 3348, 3357, 107, 83, 112, 97, 99, 101, 59, 1, 8203, 83, 112, 97, 99, 101, 59, 1, 8203, 101, 114, 121, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 1, 8203, 116, 101, 100, 4, 2, 71, 76, 3389, 3405, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 1, 8811, 101, 115, 115, 76, 101, 115, 115, 59, 1, 8810, 76, 105, 110, 101, 59, 1, 10, 114, 59, 3, 55349, 56593, 4, 4, 66, 110, 112, 116, 3437, 3444, 3460, 3464, 114, 101, 97, 107, 59, 1, 8288, 66, 114, 101, 97, 107, 105, 110, 103, 83, 112, 97, 99, 101, 59, 1, 160, 102, 59, 1, 8469, 4, 13, 59, 67, 68, 69, 71, 72, 76, 78, 80, 82, 83, 84, 86, 3492, 3494, 3517, 3536, 3578, 3657, 3685, 3784, 3823, 3860, 3915, 4066, 4107, 1, 10988, 4, 2, 111, 117, 3500, 3510, 110, 103, 114, 117, 101, 110, 116, 59, 1, 8802, 112, 67, 97, 112, 59, 1, 8813, 111, 117, 98, 108, 101, 86, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 1, 8742, 4, 3, 108, 113, 120, 3544, 3552, 3571, 101, 109, 101, 110, 116, 59, 1, 8713, 117, 97, 108, 4, 2, 59, 84, 3561, 3563, 1, 8800, 105, 108, 100, 101, 59, 3, 8770, 824, 105, 115, 116, 115, 59, 1, 8708, 114, 101, 97, 116, 101, 114, 4, 7, 59, 69, 70, 71, 76, 83, 84, 3600, 3602, 3609, 3621, 3631, 3637, 3650, 1, 8815, 113, 117, 97, 108, 59, 1, 8817, 117, 108, 108, 69, 113, 117, 97, 108, 59, 3, 8807, 824, 114, 101, 97, 116, 101, 114, 59, 3, 8811, 824, 101, 115, 115, 59, 1, 8825, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 3, 10878, 824, 105, 108, 100, 101, 59, 1, 8821, 117, 109, 112, 4, 2, 68, 69, 3666, 3677, 111, 119, 110, 72, 117, 109, 112, 59, 3, 8782, 824, 113, 117, 97, 108, 59, 3, 8783, 824, 101, 4, 2, 102, 115, 3692, 3724, 116, 84, 114, 105, 97, 110, 103, 108, 101, 4, 3, 59, 66, 69, 3709, 3711, 3717, 1, 8938, 97, 114, 59, 3, 10703, 824, 113, 117, 97, 108, 59, 1, 8940, 115, 4, 6, 59, 69, 71, 76, 83, 84, 3739, 3741, 3748, 3757, 3764, 3777, 1, 8814, 113, 117, 97, 108, 59, 1, 8816, 114, 101, 97, 116, 101, 114, 59, 1, 8824, 101, 115, 115, 59, 3, 8810, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 3, 10877, 824, 105, 108, 100, 101, 59, 1, 8820, 101, 115, 116, 101, 100, 4, 2, 71, 76, 3795, 3812, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 3, 10914, 824, 101, 115, 115, 76, 101, 115, 115, 59, 3, 10913, 824, 114, 101, 99, 101, 100, 101, 115, 4, 3, 59, 69, 83, 3838, 3840, 3848, 1, 8832, 113, 117, 97, 108, 59, 3, 10927, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 8928, 4, 2, 101, 105, 3866, 3881, 118, 101, 114, 115, 101, 69, 108, 101, 109, 101, 110, 116, 59, 1, 8716, 103, 104, 116, 84, 114, 105, 97, 110, 103, 108, 101, 4, 3, 59, 66, 69, 3900, 3902, 3908, 1, 8939, 97, 114, 59, 3, 10704, 824, 113, 117, 97, 108, 59, 1, 8941, 4, 2, 113, 117, 3921, 3973, 117, 97, 114, 101, 83, 117, 4, 2, 98, 112, 3933, 3952, 115, 101, 116, 4, 2, 59, 69, 3942, 3945, 3, 8847, 824, 113, 117, 97, 108, 59, 1, 8930, 101, 114, 115, 101, 116, 4, 2, 59, 69, 3963, 3966, 3, 8848, 824, 113, 117, 97, 108, 59, 1, 8931, 4, 3, 98, 99, 112, 3981, 4e3, 4045, 115, 101, 116, 4, 2, 59, 69, 3990, 3993, 3, 8834, 8402, 113, 117, 97, 108, 59, 1, 8840, 99, 101, 101, 100, 115, 4, 4, 59, 69, 83, 84, 4015, 4017, 4025, 4037, 1, 8833, 113, 117, 97, 108, 59, 3, 10928, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 8929, 105, 108, 100, 101, 59, 3, 8831, 824, 101, 114, 115, 101, 116, 4, 2, 59, 69, 4056, 4059, 3, 8835, 8402, 113, 117, 97, 108, 59, 1, 8841, 105, 108, 100, 101, 4, 4, 59, 69, 70, 84, 4080, 4082, 4089, 4100, 1, 8769, 113, 117, 97, 108, 59, 1, 8772, 117, 108, 108, 69, 113, 117, 97, 108, 59, 1, 8775, 105, 108, 100, 101, 59, 1, 8777, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 1, 8740, 99, 114, 59, 3, 55349, 56489, 105, 108, 100, 101, 5, 209, 1, 59, 4135, 1, 209, 59, 1, 925, 4, 14, 69, 97, 99, 100, 102, 103, 109, 111, 112, 114, 115, 116, 117, 118, 4170, 4176, 4187, 4205, 4212, 4217, 4228, 4253, 4259, 4292, 4295, 4316, 4337, 4346, 108, 105, 103, 59, 1, 338, 99, 117, 116, 101, 5, 211, 1, 59, 4185, 1, 211, 4, 2, 105, 121, 4193, 4202, 114, 99, 5, 212, 1, 59, 4200, 1, 212, 59, 1, 1054, 98, 108, 97, 99, 59, 1, 336, 114, 59, 3, 55349, 56594, 114, 97, 118, 101, 5, 210, 1, 59, 4226, 1, 210, 4, 3, 97, 101, 105, 4236, 4241, 4246, 99, 114, 59, 1, 332, 103, 97, 59, 1, 937, 99, 114, 111, 110, 59, 1, 927, 112, 102, 59, 3, 55349, 56646, 101, 110, 67, 117, 114, 108, 121, 4, 2, 68, 81, 4272, 4285, 111, 117, 98, 108, 101, 81, 117, 111, 116, 101, 59, 1, 8220, 117, 111, 116, 101, 59, 1, 8216, 59, 1, 10836, 4, 2, 99, 108, 4301, 4306, 114, 59, 3, 55349, 56490, 97, 115, 104, 5, 216, 1, 59, 4314, 1, 216, 105, 4, 2, 108, 109, 4323, 4332, 100, 101, 5, 213, 1, 59, 4330, 1, 213, 101, 115, 59, 1, 10807, 109, 108, 5, 214, 1, 59, 4344, 1, 214, 101, 114, 4, 2, 66, 80, 4354, 4380, 4, 2, 97, 114, 4360, 4364, 114, 59, 1, 8254, 97, 99, 4, 2, 101, 107, 4372, 4375, 59, 1, 9182, 101, 116, 59, 1, 9140, 97, 114, 101, 110, 116, 104, 101, 115, 105, 115, 59, 1, 9180, 4, 9, 97, 99, 102, 104, 105, 108, 111, 114, 115, 4413, 4422, 4426, 4431, 4435, 4438, 4448, 4471, 4561, 114, 116, 105, 97, 108, 68, 59, 1, 8706, 121, 59, 1, 1055, 114, 59, 3, 55349, 56595, 105, 59, 1, 934, 59, 1, 928, 117, 115, 77, 105, 110, 117, 115, 59, 1, 177, 4, 2, 105, 112, 4454, 4467, 110, 99, 97, 114, 101, 112, 108, 97, 110, 101, 59, 1, 8460, 102, 59, 1, 8473, 4, 4, 59, 101, 105, 111, 4481, 4483, 4526, 4531, 1, 10939, 99, 101, 100, 101, 115, 4, 4, 59, 69, 83, 84, 4498, 4500, 4507, 4519, 1, 8826, 113, 117, 97, 108, 59, 1, 10927, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 8828, 105, 108, 100, 101, 59, 1, 8830, 109, 101, 59, 1, 8243, 4, 2, 100, 112, 4537, 4543, 117, 99, 116, 59, 1, 8719, 111, 114, 116, 105, 111, 110, 4, 2, 59, 97, 4555, 4557, 1, 8759, 108, 59, 1, 8733, 4, 2, 99, 105, 4567, 4572, 114, 59, 3, 55349, 56491, 59, 1, 936, 4, 4, 85, 102, 111, 115, 4585, 4594, 4599, 4604, 79, 84, 5, 34, 1, 59, 4592, 1, 34, 114, 59, 3, 55349, 56596, 112, 102, 59, 1, 8474, 99, 114, 59, 3, 55349, 56492, 4, 12, 66, 69, 97, 99, 101, 102, 104, 105, 111, 114, 115, 117, 4636, 4642, 4650, 4681, 4704, 4763, 4767, 4771, 5047, 5069, 5081, 5094, 97, 114, 114, 59, 1, 10512, 71, 5, 174, 1, 59, 4648, 1, 174, 4, 3, 99, 110, 114, 4658, 4664, 4668, 117, 116, 101, 59, 1, 340, 103, 59, 1, 10219, 114, 4, 2, 59, 116, 4675, 4677, 1, 8608, 108, 59, 1, 10518, 4, 3, 97, 101, 121, 4689, 4695, 4701, 114, 111, 110, 59, 1, 344, 100, 105, 108, 59, 1, 342, 59, 1, 1056, 4, 2, 59, 118, 4710, 4712, 1, 8476, 101, 114, 115, 101, 4, 2, 69, 85, 4722, 4748, 4, 2, 108, 113, 4728, 4736, 101, 109, 101, 110, 116, 59, 1, 8715, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 1, 8651, 112, 69, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 1, 10607, 114, 59, 1, 8476, 111, 59, 1, 929, 103, 104, 116, 4, 8, 65, 67, 68, 70, 84, 85, 86, 97, 4792, 4840, 4849, 4905, 4912, 4972, 5022, 5040, 4, 2, 110, 114, 4798, 4811, 103, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 1, 10217, 114, 111, 119, 4, 3, 59, 66, 76, 4822, 4824, 4829, 1, 8594, 97, 114, 59, 1, 8677, 101, 102, 116, 65, 114, 114, 111, 119, 59, 1, 8644, 101, 105, 108, 105, 110, 103, 59, 1, 8969, 111, 4, 2, 117, 119, 4856, 4869, 98, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 1, 10215, 110, 4, 2, 84, 86, 4876, 4887, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10589, 101, 99, 116, 111, 114, 4, 2, 59, 66, 4898, 4900, 1, 8642, 97, 114, 59, 1, 10581, 108, 111, 111, 114, 59, 1, 8971, 4, 2, 101, 114, 4918, 4944, 101, 4, 3, 59, 65, 86, 4927, 4929, 4936, 1, 8866, 114, 114, 111, 119, 59, 1, 8614, 101, 99, 116, 111, 114, 59, 1, 10587, 105, 97, 110, 103, 108, 101, 4, 3, 59, 66, 69, 4958, 4960, 4965, 1, 8883, 97, 114, 59, 1, 10704, 113, 117, 97, 108, 59, 1, 8885, 112, 4, 3, 68, 84, 86, 4981, 4993, 5004, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 1, 10575, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10588, 101, 99, 116, 111, 114, 4, 2, 59, 66, 5015, 5017, 1, 8638, 97, 114, 59, 1, 10580, 101, 99, 116, 111, 114, 4, 2, 59, 66, 5033, 5035, 1, 8640, 97, 114, 59, 1, 10579, 114, 114, 111, 119, 59, 1, 8658, 4, 2, 112, 117, 5053, 5057, 102, 59, 1, 8477, 110, 100, 73, 109, 112, 108, 105, 101, 115, 59, 1, 10608, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8667, 4, 2, 99, 104, 5087, 5091, 114, 59, 1, 8475, 59, 1, 8625, 108, 101, 68, 101, 108, 97, 121, 101, 100, 59, 1, 10740, 4, 13, 72, 79, 97, 99, 102, 104, 105, 109, 111, 113, 115, 116, 117, 5134, 5150, 5157, 5164, 5198, 5203, 5259, 5265, 5277, 5283, 5374, 5380, 5385, 4, 2, 67, 99, 5140, 5146, 72, 99, 121, 59, 1, 1065, 121, 59, 1, 1064, 70, 84, 99, 121, 59, 1, 1068, 99, 117, 116, 101, 59, 1, 346, 4, 5, 59, 97, 101, 105, 121, 5176, 5178, 5184, 5190, 5195, 1, 10940, 114, 111, 110, 59, 1, 352, 100, 105, 108, 59, 1, 350, 114, 99, 59, 1, 348, 59, 1, 1057, 114, 59, 3, 55349, 56598, 111, 114, 116, 4, 4, 68, 76, 82, 85, 5216, 5227, 5238, 5250, 111, 119, 110, 65, 114, 114, 111, 119, 59, 1, 8595, 101, 102, 116, 65, 114, 114, 111, 119, 59, 1, 8592, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 8594, 112, 65, 114, 114, 111, 119, 59, 1, 8593, 103, 109, 97, 59, 1, 931, 97, 108, 108, 67, 105, 114, 99, 108, 101, 59, 1, 8728, 112, 102, 59, 3, 55349, 56650, 4, 2, 114, 117, 5289, 5293, 116, 59, 1, 8730, 97, 114, 101, 4, 4, 59, 73, 83, 85, 5306, 5308, 5322, 5367, 1, 9633, 110, 116, 101, 114, 115, 101, 99, 116, 105, 111, 110, 59, 1, 8851, 117, 4, 2, 98, 112, 5329, 5347, 115, 101, 116, 4, 2, 59, 69, 5338, 5340, 1, 8847, 113, 117, 97, 108, 59, 1, 8849, 101, 114, 115, 101, 116, 4, 2, 59, 69, 5358, 5360, 1, 8848, 113, 117, 97, 108, 59, 1, 8850, 110, 105, 111, 110, 59, 1, 8852, 99, 114, 59, 3, 55349, 56494, 97, 114, 59, 1, 8902, 4, 4, 98, 99, 109, 112, 5395, 5420, 5475, 5478, 4, 2, 59, 115, 5401, 5403, 1, 8912, 101, 116, 4, 2, 59, 69, 5411, 5413, 1, 8912, 113, 117, 97, 108, 59, 1, 8838, 4, 2, 99, 104, 5426, 5468, 101, 101, 100, 115, 4, 4, 59, 69, 83, 84, 5440, 5442, 5449, 5461, 1, 8827, 113, 117, 97, 108, 59, 1, 10928, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 8829, 105, 108, 100, 101, 59, 1, 8831, 84, 104, 97, 116, 59, 1, 8715, 59, 1, 8721, 4, 3, 59, 101, 115, 5486, 5488, 5507, 1, 8913, 114, 115, 101, 116, 4, 2, 59, 69, 5498, 5500, 1, 8835, 113, 117, 97, 108, 59, 1, 8839, 101, 116, 59, 1, 8913, 4, 11, 72, 82, 83, 97, 99, 102, 104, 105, 111, 114, 115, 5536, 5546, 5552, 5567, 5579, 5602, 5607, 5655, 5695, 5701, 5711, 79, 82, 78, 5, 222, 1, 59, 5544, 1, 222, 65, 68, 69, 59, 1, 8482, 4, 2, 72, 99, 5558, 5563, 99, 121, 59, 1, 1035, 121, 59, 1, 1062, 4, 2, 98, 117, 5573, 5576, 59, 1, 9, 59, 1, 932, 4, 3, 97, 101, 121, 5587, 5593, 5599, 114, 111, 110, 59, 1, 356, 100, 105, 108, 59, 1, 354, 59, 1, 1058, 114, 59, 3, 55349, 56599, 4, 2, 101, 105, 5613, 5631, 4, 2, 114, 116, 5619, 5627, 101, 102, 111, 114, 101, 59, 1, 8756, 97, 59, 1, 920, 4, 2, 99, 110, 5637, 5647, 107, 83, 112, 97, 99, 101, 59, 3, 8287, 8202, 83, 112, 97, 99, 101, 59, 1, 8201, 108, 100, 101, 4, 4, 59, 69, 70, 84, 5668, 5670, 5677, 5688, 1, 8764, 113, 117, 97, 108, 59, 1, 8771, 117, 108, 108, 69, 113, 117, 97, 108, 59, 1, 8773, 105, 108, 100, 101, 59, 1, 8776, 112, 102, 59, 3, 55349, 56651, 105, 112, 108, 101, 68, 111, 116, 59, 1, 8411, 4, 2, 99, 116, 5717, 5722, 114, 59, 3, 55349, 56495, 114, 111, 107, 59, 1, 358, 4, 14, 97, 98, 99, 100, 102, 103, 109, 110, 111, 112, 114, 115, 116, 117, 5758, 5789, 5805, 5823, 5830, 5835, 5846, 5852, 5921, 5937, 6089, 6095, 6101, 6108, 4, 2, 99, 114, 5764, 5774, 117, 116, 101, 5, 218, 1, 59, 5772, 1, 218, 114, 4, 2, 59, 111, 5781, 5783, 1, 8607, 99, 105, 114, 59, 1, 10569, 114, 4, 2, 99, 101, 5796, 5800, 121, 59, 1, 1038, 118, 101, 59, 1, 364, 4, 2, 105, 121, 5811, 5820, 114, 99, 5, 219, 1, 59, 5818, 1, 219, 59, 1, 1059, 98, 108, 97, 99, 59, 1, 368, 114, 59, 3, 55349, 56600, 114, 97, 118, 101, 5, 217, 1, 59, 5844, 1, 217, 97, 99, 114, 59, 1, 362, 4, 2, 100, 105, 5858, 5905, 101, 114, 4, 2, 66, 80, 5866, 5892, 4, 2, 97, 114, 5872, 5876, 114, 59, 1, 95, 97, 99, 4, 2, 101, 107, 5884, 5887, 59, 1, 9183, 101, 116, 59, 1, 9141, 97, 114, 101, 110, 116, 104, 101, 115, 105, 115, 59, 1, 9181, 111, 110, 4, 2, 59, 80, 5913, 5915, 1, 8899, 108, 117, 115, 59, 1, 8846, 4, 2, 103, 112, 5927, 5932, 111, 110, 59, 1, 370, 102, 59, 3, 55349, 56652, 4, 8, 65, 68, 69, 84, 97, 100, 112, 115, 5955, 5985, 5996, 6009, 6026, 6033, 6044, 6075, 114, 114, 111, 119, 4, 3, 59, 66, 68, 5967, 5969, 5974, 1, 8593, 97, 114, 59, 1, 10514, 111, 119, 110, 65, 114, 114, 111, 119, 59, 1, 8645, 111, 119, 110, 65, 114, 114, 111, 119, 59, 1, 8597, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 1, 10606, 101, 101, 4, 2, 59, 65, 6017, 6019, 1, 8869, 114, 114, 111, 119, 59, 1, 8613, 114, 114, 111, 119, 59, 1, 8657, 111, 119, 110, 97, 114, 114, 111, 119, 59, 1, 8661, 101, 114, 4, 2, 76, 82, 6052, 6063, 101, 102, 116, 65, 114, 114, 111, 119, 59, 1, 8598, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 8599, 105, 4, 2, 59, 108, 6082, 6084, 1, 978, 111, 110, 59, 1, 933, 105, 110, 103, 59, 1, 366, 99, 114, 59, 3, 55349, 56496, 105, 108, 100, 101, 59, 1, 360, 109, 108, 5, 220, 1, 59, 6115, 1, 220, 4, 9, 68, 98, 99, 100, 101, 102, 111, 115, 118, 6137, 6143, 6148, 6152, 6166, 6250, 6255, 6261, 6267, 97, 115, 104, 59, 1, 8875, 97, 114, 59, 1, 10987, 121, 59, 1, 1042, 97, 115, 104, 4, 2, 59, 108, 6161, 6163, 1, 8873, 59, 1, 10982, 4, 2, 101, 114, 6172, 6175, 59, 1, 8897, 4, 3, 98, 116, 121, 6183, 6188, 6238, 97, 114, 59, 1, 8214, 4, 2, 59, 105, 6194, 6196, 1, 8214, 99, 97, 108, 4, 4, 66, 76, 83, 84, 6209, 6214, 6220, 6231, 97, 114, 59, 1, 8739, 105, 110, 101, 59, 1, 124, 101, 112, 97, 114, 97, 116, 111, 114, 59, 1, 10072, 105, 108, 100, 101, 59, 1, 8768, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 1, 8202, 114, 59, 3, 55349, 56601, 112, 102, 59, 3, 55349, 56653, 99, 114, 59, 3, 55349, 56497, 100, 97, 115, 104, 59, 1, 8874, 4, 5, 99, 101, 102, 111, 115, 6286, 6292, 6298, 6303, 6309, 105, 114, 99, 59, 1, 372, 100, 103, 101, 59, 1, 8896, 114, 59, 3, 55349, 56602, 112, 102, 59, 3, 55349, 56654, 99, 114, 59, 3, 55349, 56498, 4, 4, 102, 105, 111, 115, 6325, 6330, 6333, 6339, 114, 59, 3, 55349, 56603, 59, 1, 926, 112, 102, 59, 3, 55349, 56655, 99, 114, 59, 3, 55349, 56499, 4, 9, 65, 73, 85, 97, 99, 102, 111, 115, 117, 6365, 6370, 6375, 6380, 6391, 6405, 6410, 6416, 6422, 99, 121, 59, 1, 1071, 99, 121, 59, 1, 1031, 99, 121, 59, 1, 1070, 99, 117, 116, 101, 5, 221, 1, 59, 6389, 1, 221, 4, 2, 105, 121, 6397, 6402, 114, 99, 59, 1, 374, 59, 1, 1067, 114, 59, 3, 55349, 56604, 112, 102, 59, 3, 55349, 56656, 99, 114, 59, 3, 55349, 56500, 109, 108, 59, 1, 376, 4, 8, 72, 97, 99, 100, 101, 102, 111, 115, 6445, 6450, 6457, 6472, 6477, 6501, 6505, 6510, 99, 121, 59, 1, 1046, 99, 117, 116, 101, 59, 1, 377, 4, 2, 97, 121, 6463, 6469, 114, 111, 110, 59, 1, 381, 59, 1, 1047, 111, 116, 59, 1, 379, 4, 2, 114, 116, 6483, 6497, 111, 87, 105, 100, 116, 104, 83, 112, 97, 99, 101, 59, 1, 8203, 97, 59, 1, 918, 114, 59, 1, 8488, 112, 102, 59, 1, 8484, 99, 114, 59, 3, 55349, 56501, 4, 16, 97, 98, 99, 101, 102, 103, 108, 109, 110, 111, 112, 114, 115, 116, 117, 119, 6550, 6561, 6568, 6612, 6622, 6634, 6645, 6672, 6699, 6854, 6870, 6923, 6933, 6963, 6974, 6983, 99, 117, 116, 101, 5, 225, 1, 59, 6559, 1, 225, 114, 101, 118, 101, 59, 1, 259, 4, 6, 59, 69, 100, 105, 117, 121, 6582, 6584, 6588, 6591, 6600, 6609, 1, 8766, 59, 3, 8766, 819, 59, 1, 8767, 114, 99, 5, 226, 1, 59, 6598, 1, 226, 116, 101, 5, 180, 1, 59, 6607, 1, 180, 59, 1, 1072, 108, 105, 103, 5, 230, 1, 59, 6620, 1, 230, 4, 2, 59, 114, 6628, 6630, 1, 8289, 59, 3, 55349, 56606, 114, 97, 118, 101, 5, 224, 1, 59, 6643, 1, 224, 4, 2, 101, 112, 6651, 6667, 4, 2, 102, 112, 6657, 6663, 115, 121, 109, 59, 1, 8501, 104, 59, 1, 8501, 104, 97, 59, 1, 945, 4, 2, 97, 112, 6678, 6692, 4, 2, 99, 108, 6684, 6688, 114, 59, 1, 257, 103, 59, 1, 10815, 5, 38, 1, 59, 6697, 1, 38, 4, 2, 100, 103, 6705, 6737, 4, 5, 59, 97, 100, 115, 118, 6717, 6719, 6724, 6727, 6734, 1, 8743, 110, 100, 59, 1, 10837, 59, 1, 10844, 108, 111, 112, 101, 59, 1, 10840, 59, 1, 10842, 4, 7, 59, 101, 108, 109, 114, 115, 122, 6753, 6755, 6758, 6762, 6814, 6835, 6848, 1, 8736, 59, 1, 10660, 101, 59, 1, 8736, 115, 100, 4, 2, 59, 97, 6770, 6772, 1, 8737, 4, 8, 97, 98, 99, 100, 101, 102, 103, 104, 6790, 6793, 6796, 6799, 6802, 6805, 6808, 6811, 59, 1, 10664, 59, 1, 10665, 59, 1, 10666, 59, 1, 10667, 59, 1, 10668, 59, 1, 10669, 59, 1, 10670, 59, 1, 10671, 116, 4, 2, 59, 118, 6821, 6823, 1, 8735, 98, 4, 2, 59, 100, 6830, 6832, 1, 8894, 59, 1, 10653, 4, 2, 112, 116, 6841, 6845, 104, 59, 1, 8738, 59, 1, 197, 97, 114, 114, 59, 1, 9084, 4, 2, 103, 112, 6860, 6865, 111, 110, 59, 1, 261, 102, 59, 3, 55349, 56658, 4, 7, 59, 69, 97, 101, 105, 111, 112, 6886, 6888, 6891, 6897, 6900, 6904, 6908, 1, 8776, 59, 1, 10864, 99, 105, 114, 59, 1, 10863, 59, 1, 8778, 100, 59, 1, 8779, 115, 59, 1, 39, 114, 111, 120, 4, 2, 59, 101, 6917, 6919, 1, 8776, 113, 59, 1, 8778, 105, 110, 103, 5, 229, 1, 59, 6931, 1, 229, 4, 3, 99, 116, 121, 6941, 6946, 6949, 114, 59, 3, 55349, 56502, 59, 1, 42, 109, 112, 4, 2, 59, 101, 6957, 6959, 1, 8776, 113, 59, 1, 8781, 105, 108, 100, 101, 5, 227, 1, 59, 6972, 1, 227, 109, 108, 5, 228, 1, 59, 6981, 1, 228, 4, 2, 99, 105, 6989, 6997, 111, 110, 105, 110, 116, 59, 1, 8755, 110, 116, 59, 1, 10769, 4, 16, 78, 97, 98, 99, 100, 101, 102, 105, 107, 108, 110, 111, 112, 114, 115, 117, 7036, 7041, 7119, 7135, 7149, 7155, 7219, 7224, 7347, 7354, 7463, 7489, 7786, 7793, 7814, 7866, 111, 116, 59, 1, 10989, 4, 2, 99, 114, 7047, 7094, 107, 4, 4, 99, 101, 112, 115, 7058, 7064, 7073, 7080, 111, 110, 103, 59, 1, 8780, 112, 115, 105, 108, 111, 110, 59, 1, 1014, 114, 105, 109, 101, 59, 1, 8245, 105, 109, 4, 2, 59, 101, 7088, 7090, 1, 8765, 113, 59, 1, 8909, 4, 2, 118, 119, 7100, 7105, 101, 101, 59, 1, 8893, 101, 100, 4, 2, 59, 103, 7113, 7115, 1, 8965, 101, 59, 1, 8965, 114, 107, 4, 2, 59, 116, 7127, 7129, 1, 9141, 98, 114, 107, 59, 1, 9142, 4, 2, 111, 121, 7141, 7146, 110, 103, 59, 1, 8780, 59, 1, 1073, 113, 117, 111, 59, 1, 8222, 4, 5, 99, 109, 112, 114, 116, 7167, 7181, 7188, 7193, 7199, 97, 117, 115, 4, 2, 59, 101, 7176, 7178, 1, 8757, 59, 1, 8757, 112, 116, 121, 118, 59, 1, 10672, 115, 105, 59, 1, 1014, 110, 111, 117, 59, 1, 8492, 4, 3, 97, 104, 119, 7207, 7210, 7213, 59, 1, 946, 59, 1, 8502, 101, 101, 110, 59, 1, 8812, 114, 59, 3, 55349, 56607, 103, 4, 7, 99, 111, 115, 116, 117, 118, 119, 7241, 7262, 7288, 7305, 7328, 7335, 7340, 4, 3, 97, 105, 117, 7249, 7253, 7258, 112, 59, 1, 8898, 114, 99, 59, 1, 9711, 112, 59, 1, 8899, 4, 3, 100, 112, 116, 7270, 7275, 7281, 111, 116, 59, 1, 10752, 108, 117, 115, 59, 1, 10753, 105, 109, 101, 115, 59, 1, 10754, 4, 2, 113, 116, 7294, 7300, 99, 117, 112, 59, 1, 10758, 97, 114, 59, 1, 9733, 114, 105, 97, 110, 103, 108, 101, 4, 2, 100, 117, 7318, 7324, 111, 119, 110, 59, 1, 9661, 112, 59, 1, 9651, 112, 108, 117, 115, 59, 1, 10756, 101, 101, 59, 1, 8897, 101, 100, 103, 101, 59, 1, 8896, 97, 114, 111, 119, 59, 1, 10509, 4, 3, 97, 107, 111, 7362, 7436, 7458, 4, 2, 99, 110, 7368, 7432, 107, 4, 3, 108, 115, 116, 7377, 7386, 7394, 111, 122, 101, 110, 103, 101, 59, 1, 10731, 113, 117, 97, 114, 101, 59, 1, 9642, 114, 105, 97, 110, 103, 108, 101, 4, 4, 59, 100, 108, 114, 7411, 7413, 7419, 7425, 1, 9652, 111, 119, 110, 59, 1, 9662, 101, 102, 116, 59, 1, 9666, 105, 103, 104, 116, 59, 1, 9656, 107, 59, 1, 9251, 4, 2, 49, 51, 7442, 7454, 4, 2, 50, 52, 7448, 7451, 59, 1, 9618, 59, 1, 9617, 52, 59, 1, 9619, 99, 107, 59, 1, 9608, 4, 2, 101, 111, 7469, 7485, 4, 2, 59, 113, 7475, 7478, 3, 61, 8421, 117, 105, 118, 59, 3, 8801, 8421, 116, 59, 1, 8976, 4, 4, 112, 116, 119, 120, 7499, 7504, 7517, 7523, 102, 59, 3, 55349, 56659, 4, 2, 59, 116, 7510, 7512, 1, 8869, 111, 109, 59, 1, 8869, 116, 105, 101, 59, 1, 8904, 4, 12, 68, 72, 85, 86, 98, 100, 104, 109, 112, 116, 117, 118, 7549, 7571, 7597, 7619, 7655, 7660, 7682, 7708, 7715, 7721, 7728, 7750, 4, 4, 76, 82, 108, 114, 7559, 7562, 7565, 7568, 59, 1, 9559, 59, 1, 9556, 59, 1, 9558, 59, 1, 9555, 4, 5, 59, 68, 85, 100, 117, 7583, 7585, 7588, 7591, 7594, 1, 9552, 59, 1, 9574, 59, 1, 9577, 59, 1, 9572, 59, 1, 9575, 4, 4, 76, 82, 108, 114, 7607, 7610, 7613, 7616, 59, 1, 9565, 59, 1, 9562, 59, 1, 9564, 59, 1, 9561, 4, 7, 59, 72, 76, 82, 104, 108, 114, 7635, 7637, 7640, 7643, 7646, 7649, 7652, 1, 9553, 59, 1, 9580, 59, 1, 9571, 59, 1, 9568, 59, 1, 9579, 59, 1, 9570, 59, 1, 9567, 111, 120, 59, 1, 10697, 4, 4, 76, 82, 108, 114, 7670, 7673, 7676, 7679, 59, 1, 9557, 59, 1, 9554, 59, 1, 9488, 59, 1, 9484, 4, 5, 59, 68, 85, 100, 117, 7694, 7696, 7699, 7702, 7705, 1, 9472, 59, 1, 9573, 59, 1, 9576, 59, 1, 9516, 59, 1, 9524, 105, 110, 117, 115, 59, 1, 8863, 108, 117, 115, 59, 1, 8862, 105, 109, 101, 115, 59, 1, 8864, 4, 4, 76, 82, 108, 114, 7738, 7741, 7744, 7747, 59, 1, 9563, 59, 1, 9560, 59, 1, 9496, 59, 1, 9492, 4, 7, 59, 72, 76, 82, 104, 108, 114, 7766, 7768, 7771, 7774, 7777, 7780, 7783, 1, 9474, 59, 1, 9578, 59, 1, 9569, 59, 1, 9566, 59, 1, 9532, 59, 1, 9508, 59, 1, 9500, 114, 105, 109, 101, 59, 1, 8245, 4, 2, 101, 118, 7799, 7804, 118, 101, 59, 1, 728, 98, 97, 114, 5, 166, 1, 59, 7812, 1, 166, 4, 4, 99, 101, 105, 111, 7824, 7829, 7834, 7846, 114, 59, 3, 55349, 56503, 109, 105, 59, 1, 8271, 109, 4, 2, 59, 101, 7841, 7843, 1, 8765, 59, 1, 8909, 108, 4, 3, 59, 98, 104, 7855, 7857, 7860, 1, 92, 59, 1, 10693, 115, 117, 98, 59, 1, 10184, 4, 2, 108, 109, 7872, 7885, 108, 4, 2, 59, 101, 7879, 7881, 1, 8226, 116, 59, 1, 8226, 112, 4, 3, 59, 69, 101, 7894, 7896, 7899, 1, 8782, 59, 1, 10926, 4, 2, 59, 113, 7905, 7907, 1, 8783, 59, 1, 8783, 4, 15, 97, 99, 100, 101, 102, 104, 105, 108, 111, 114, 115, 116, 117, 119, 121, 7942, 8021, 8075, 8080, 8121, 8126, 8157, 8279, 8295, 8430, 8446, 8485, 8491, 8707, 8726, 4, 3, 99, 112, 114, 7950, 7956, 8007, 117, 116, 101, 59, 1, 263, 4, 6, 59, 97, 98, 99, 100, 115, 7970, 7972, 7977, 7984, 7998, 8003, 1, 8745, 110, 100, 59, 1, 10820, 114, 99, 117, 112, 59, 1, 10825, 4, 2, 97, 117, 7990, 7994, 112, 59, 1, 10827, 112, 59, 1, 10823, 111, 116, 59, 1, 10816, 59, 3, 8745, 65024, 4, 2, 101, 111, 8013, 8017, 116, 59, 1, 8257, 110, 59, 1, 711, 4, 4, 97, 101, 105, 117, 8031, 8046, 8056, 8061, 4, 2, 112, 114, 8037, 8041, 115, 59, 1, 10829, 111, 110, 59, 1, 269, 100, 105, 108, 5, 231, 1, 59, 8054, 1, 231, 114, 99, 59, 1, 265, 112, 115, 4, 2, 59, 115, 8069, 8071, 1, 10828, 109, 59, 1, 10832, 111, 116, 59, 1, 267, 4, 3, 100, 109, 110, 8088, 8097, 8104, 105, 108, 5, 184, 1, 59, 8095, 1, 184, 112, 116, 121, 118, 59, 1, 10674, 116, 5, 162, 2, 59, 101, 8112, 8114, 1, 162, 114, 100, 111, 116, 59, 1, 183, 114, 59, 3, 55349, 56608, 4, 3, 99, 101, 105, 8134, 8138, 8154, 121, 59, 1, 1095, 99, 107, 4, 2, 59, 109, 8146, 8148, 1, 10003, 97, 114, 107, 59, 1, 10003, 59, 1, 967, 114, 4, 7, 59, 69, 99, 101, 102, 109, 115, 8174, 8176, 8179, 8258, 8261, 8268, 8273, 1, 9675, 59, 1, 10691, 4, 3, 59, 101, 108, 8187, 8189, 8193, 1, 710, 113, 59, 1, 8791, 101, 4, 2, 97, 100, 8200, 8223, 114, 114, 111, 119, 4, 2, 108, 114, 8210, 8216, 101, 102, 116, 59, 1, 8634, 105, 103, 104, 116, 59, 1, 8635, 4, 5, 82, 83, 97, 99, 100, 8235, 8238, 8241, 8246, 8252, 59, 1, 174, 59, 1, 9416, 115, 116, 59, 1, 8859, 105, 114, 99, 59, 1, 8858, 97, 115, 104, 59, 1, 8861, 59, 1, 8791, 110, 105, 110, 116, 59, 1, 10768, 105, 100, 59, 1, 10991, 99, 105, 114, 59, 1, 10690, 117, 98, 115, 4, 2, 59, 117, 8288, 8290, 1, 9827, 105, 116, 59, 1, 9827, 4, 4, 108, 109, 110, 112, 8305, 8326, 8376, 8400, 111, 110, 4, 2, 59, 101, 8313, 8315, 1, 58, 4, 2, 59, 113, 8321, 8323, 1, 8788, 59, 1, 8788, 4, 2, 109, 112, 8332, 8344, 97, 4, 2, 59, 116, 8339, 8341, 1, 44, 59, 1, 64, 4, 3, 59, 102, 108, 8352, 8354, 8358, 1, 8705, 110, 59, 1, 8728, 101, 4, 2, 109, 120, 8365, 8371, 101, 110, 116, 59, 1, 8705, 101, 115, 59, 1, 8450, 4, 2, 103, 105, 8382, 8395, 4, 2, 59, 100, 8388, 8390, 1, 8773, 111, 116, 59, 1, 10861, 110, 116, 59, 1, 8750, 4, 3, 102, 114, 121, 8408, 8412, 8417, 59, 3, 55349, 56660, 111, 100, 59, 1, 8720, 5, 169, 2, 59, 115, 8424, 8426, 1, 169, 114, 59, 1, 8471, 4, 2, 97, 111, 8436, 8441, 114, 114, 59, 1, 8629, 115, 115, 59, 1, 10007, 4, 2, 99, 117, 8452, 8457, 114, 59, 3, 55349, 56504, 4, 2, 98, 112, 8463, 8474, 4, 2, 59, 101, 8469, 8471, 1, 10959, 59, 1, 10961, 4, 2, 59, 101, 8480, 8482, 1, 10960, 59, 1, 10962, 100, 111, 116, 59, 1, 8943, 4, 7, 100, 101, 108, 112, 114, 118, 119, 8507, 8522, 8536, 8550, 8600, 8697, 8702, 97, 114, 114, 4, 2, 108, 114, 8516, 8519, 59, 1, 10552, 59, 1, 10549, 4, 2, 112, 115, 8528, 8532, 114, 59, 1, 8926, 99, 59, 1, 8927, 97, 114, 114, 4, 2, 59, 112, 8545, 8547, 1, 8630, 59, 1, 10557, 4, 6, 59, 98, 99, 100, 111, 115, 8564, 8566, 8573, 8587, 8592, 8596, 1, 8746, 114, 99, 97, 112, 59, 1, 10824, 4, 2, 97, 117, 8579, 8583, 112, 59, 1, 10822, 112, 59, 1, 10826, 111, 116, 59, 1, 8845, 114, 59, 1, 10821, 59, 3, 8746, 65024, 4, 4, 97, 108, 114, 118, 8610, 8623, 8663, 8672, 114, 114, 4, 2, 59, 109, 8618, 8620, 1, 8631, 59, 1, 10556, 121, 4, 3, 101, 118, 119, 8632, 8651, 8656, 113, 4, 2, 112, 115, 8639, 8645, 114, 101, 99, 59, 1, 8926, 117, 99, 99, 59, 1, 8927, 101, 101, 59, 1, 8910, 101, 100, 103, 101, 59, 1, 8911, 101, 110, 5, 164, 1, 59, 8670, 1, 164, 101, 97, 114, 114, 111, 119, 4, 2, 108, 114, 8684, 8690, 101, 102, 116, 59, 1, 8630, 105, 103, 104, 116, 59, 1, 8631, 101, 101, 59, 1, 8910, 101, 100, 59, 1, 8911, 4, 2, 99, 105, 8713, 8721, 111, 110, 105, 110, 116, 59, 1, 8754, 110, 116, 59, 1, 8753, 108, 99, 116, 121, 59, 1, 9005, 4, 19, 65, 72, 97, 98, 99, 100, 101, 102, 104, 105, 106, 108, 111, 114, 115, 116, 117, 119, 122, 8773, 8778, 8783, 8821, 8839, 8854, 8887, 8914, 8930, 8944, 9036, 9041, 9058, 9197, 9227, 9258, 9281, 9297, 9305, 114, 114, 59, 1, 8659, 97, 114, 59, 1, 10597, 4, 4, 103, 108, 114, 115, 8793, 8799, 8805, 8809, 103, 101, 114, 59, 1, 8224, 101, 116, 104, 59, 1, 8504, 114, 59, 1, 8595, 104, 4, 2, 59, 118, 8816, 8818, 1, 8208, 59, 1, 8867, 4, 2, 107, 108, 8827, 8834, 97, 114, 111, 119, 59, 1, 10511, 97, 99, 59, 1, 733, 4, 2, 97, 121, 8845, 8851, 114, 111, 110, 59, 1, 271, 59, 1, 1076, 4, 3, 59, 97, 111, 8862, 8864, 8880, 1, 8518, 4, 2, 103, 114, 8870, 8876, 103, 101, 114, 59, 1, 8225, 114, 59, 1, 8650, 116, 115, 101, 113, 59, 1, 10871, 4, 3, 103, 108, 109, 8895, 8902, 8907, 5, 176, 1, 59, 8900, 1, 176, 116, 97, 59, 1, 948, 112, 116, 121, 118, 59, 1, 10673, 4, 2, 105, 114, 8920, 8926, 115, 104, 116, 59, 1, 10623, 59, 3, 55349, 56609, 97, 114, 4, 2, 108, 114, 8938, 8941, 59, 1, 8643, 59, 1, 8642, 4, 5, 97, 101, 103, 115, 118, 8956, 8986, 8989, 8996, 9001, 109, 4, 3, 59, 111, 115, 8965, 8967, 8983, 1, 8900, 110, 100, 4, 2, 59, 115, 8975, 8977, 1, 8900, 117, 105, 116, 59, 1, 9830, 59, 1, 9830, 59, 1, 168, 97, 109, 109, 97, 59, 1, 989, 105, 110, 59, 1, 8946, 4, 3, 59, 105, 111, 9009, 9011, 9031, 1, 247, 100, 101, 5, 247, 2, 59, 111, 9020, 9022, 1, 247, 110, 116, 105, 109, 101, 115, 59, 1, 8903, 110, 120, 59, 1, 8903, 99, 121, 59, 1, 1106, 99, 4, 2, 111, 114, 9048, 9053, 114, 110, 59, 1, 8990, 111, 112, 59, 1, 8973, 4, 5, 108, 112, 116, 117, 119, 9070, 9076, 9081, 9130, 9144, 108, 97, 114, 59, 1, 36, 102, 59, 3, 55349, 56661, 4, 5, 59, 101, 109, 112, 115, 9093, 9095, 9109, 9116, 9122, 1, 729, 113, 4, 2, 59, 100, 9102, 9104, 1, 8784, 111, 116, 59, 1, 8785, 105, 110, 117, 115, 59, 1, 8760, 108, 117, 115, 59, 1, 8724, 113, 117, 97, 114, 101, 59, 1, 8865, 98, 108, 101, 98, 97, 114, 119, 101, 100, 103, 101, 59, 1, 8966, 110, 4, 3, 97, 100, 104, 9153, 9160, 9172, 114, 114, 111, 119, 59, 1, 8595, 111, 119, 110, 97, 114, 114, 111, 119, 115, 59, 1, 8650, 97, 114, 112, 111, 111, 110, 4, 2, 108, 114, 9184, 9190, 101, 102, 116, 59, 1, 8643, 105, 103, 104, 116, 59, 1, 8642, 4, 2, 98, 99, 9203, 9211, 107, 97, 114, 111, 119, 59, 1, 10512, 4, 2, 111, 114, 9217, 9222, 114, 110, 59, 1, 8991, 111, 112, 59, 1, 8972, 4, 3, 99, 111, 116, 9235, 9248, 9252, 4, 2, 114, 121, 9241, 9245, 59, 3, 55349, 56505, 59, 1, 1109, 108, 59, 1, 10742, 114, 111, 107, 59, 1, 273, 4, 2, 100, 114, 9264, 9269, 111, 116, 59, 1, 8945, 105, 4, 2, 59, 102, 9276, 9278, 1, 9663, 59, 1, 9662, 4, 2, 97, 104, 9287, 9292, 114, 114, 59, 1, 8693, 97, 114, 59, 1, 10607, 97, 110, 103, 108, 101, 59, 1, 10662, 4, 2, 99, 105, 9311, 9315, 121, 59, 1, 1119, 103, 114, 97, 114, 114, 59, 1, 10239, 4, 18, 68, 97, 99, 100, 101, 102, 103, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 120, 9361, 9376, 9398, 9439, 9444, 9447, 9462, 9495, 9531, 9585, 9598, 9614, 9659, 9755, 9771, 9792, 9808, 9826, 4, 2, 68, 111, 9367, 9372, 111, 116, 59, 1, 10871, 116, 59, 1, 8785, 4, 2, 99, 115, 9382, 9392, 117, 116, 101, 5, 233, 1, 59, 9390, 1, 233, 116, 101, 114, 59, 1, 10862, 4, 4, 97, 105, 111, 121, 9408, 9414, 9430, 9436, 114, 111, 110, 59, 1, 283, 114, 4, 2, 59, 99, 9421, 9423, 1, 8790, 5, 234, 1, 59, 9428, 1, 234, 108, 111, 110, 59, 1, 8789, 59, 1, 1101, 111, 116, 59, 1, 279, 59, 1, 8519, 4, 2, 68, 114, 9453, 9458, 111, 116, 59, 1, 8786, 59, 3, 55349, 56610, 4, 3, 59, 114, 115, 9470, 9472, 9482, 1, 10906, 97, 118, 101, 5, 232, 1, 59, 9480, 1, 232, 4, 2, 59, 100, 9488, 9490, 1, 10902, 111, 116, 59, 1, 10904, 4, 4, 59, 105, 108, 115, 9505, 9507, 9515, 9518, 1, 10905, 110, 116, 101, 114, 115, 59, 1, 9191, 59, 1, 8467, 4, 2, 59, 100, 9524, 9526, 1, 10901, 111, 116, 59, 1, 10903, 4, 3, 97, 112, 115, 9539, 9544, 9564, 99, 114, 59, 1, 275, 116, 121, 4, 3, 59, 115, 118, 9554, 9556, 9561, 1, 8709, 101, 116, 59, 1, 8709, 59, 1, 8709, 112, 4, 2, 49, 59, 9571, 9583, 4, 2, 51, 52, 9577, 9580, 59, 1, 8196, 59, 1, 8197, 1, 8195, 4, 2, 103, 115, 9591, 9594, 59, 1, 331, 112, 59, 1, 8194, 4, 2, 103, 112, 9604, 9609, 111, 110, 59, 1, 281, 102, 59, 3, 55349, 56662, 4, 3, 97, 108, 115, 9622, 9635, 9640, 114, 4, 2, 59, 115, 9629, 9631, 1, 8917, 108, 59, 1, 10723, 117, 115, 59, 1, 10865, 105, 4, 3, 59, 108, 118, 9649, 9651, 9656, 1, 949, 111, 110, 59, 1, 949, 59, 1, 1013, 4, 4, 99, 115, 117, 118, 9669, 9686, 9716, 9747, 4, 2, 105, 111, 9675, 9680, 114, 99, 59, 1, 8790, 108, 111, 110, 59, 1, 8789, 4, 2, 105, 108, 9692, 9696, 109, 59, 1, 8770, 97, 110, 116, 4, 2, 103, 108, 9705, 9710, 116, 114, 59, 1, 10902, 101, 115, 115, 59, 1, 10901, 4, 3, 97, 101, 105, 9724, 9729, 9734, 108, 115, 59, 1, 61, 115, 116, 59, 1, 8799, 118, 4, 2, 59, 68, 9741, 9743, 1, 8801, 68, 59, 1, 10872, 112, 97, 114, 115, 108, 59, 1, 10725, 4, 2, 68, 97, 9761, 9766, 111, 116, 59, 1, 8787, 114, 114, 59, 1, 10609, 4, 3, 99, 100, 105, 9779, 9783, 9788, 114, 59, 1, 8495, 111, 116, 59, 1, 8784, 109, 59, 1, 8770, 4, 2, 97, 104, 9798, 9801, 59, 1, 951, 5, 240, 1, 59, 9806, 1, 240, 4, 2, 109, 114, 9814, 9822, 108, 5, 235, 1, 59, 9820, 1, 235, 111, 59, 1, 8364, 4, 3, 99, 105, 112, 9834, 9838, 9843, 108, 59, 1, 33, 115, 116, 59, 1, 8707, 4, 2, 101, 111, 9849, 9859, 99, 116, 97, 116, 105, 111, 110, 59, 1, 8496, 110, 101, 110, 116, 105, 97, 108, 101, 59, 1, 8519, 4, 12, 97, 99, 101, 102, 105, 106, 108, 110, 111, 112, 114, 115, 9896, 9910, 9914, 9921, 9954, 9960, 9967, 9989, 9994, 10027, 10036, 10164, 108, 108, 105, 110, 103, 100, 111, 116, 115, 101, 113, 59, 1, 8786, 121, 59, 1, 1092, 109, 97, 108, 101, 59, 1, 9792, 4, 3, 105, 108, 114, 9929, 9935, 9950, 108, 105, 103, 59, 1, 64259, 4, 2, 105, 108, 9941, 9945, 103, 59, 1, 64256, 105, 103, 59, 1, 64260, 59, 3, 55349, 56611, 108, 105, 103, 59, 1, 64257, 108, 105, 103, 59, 3, 102, 106, 4, 3, 97, 108, 116, 9975, 9979, 9984, 116, 59, 1, 9837, 105, 103, 59, 1, 64258, 110, 115, 59, 1, 9649, 111, 102, 59, 1, 402, 4, 2, 112, 114, 1e4, 10005, 102, 59, 3, 55349, 56663, 4, 2, 97, 107, 10011, 10016, 108, 108, 59, 1, 8704, 4, 2, 59, 118, 10022, 10024, 1, 8916, 59, 1, 10969, 97, 114, 116, 105, 110, 116, 59, 1, 10765, 4, 2, 97, 111, 10042, 10159, 4, 2, 99, 115, 10048, 10155, 4, 6, 49, 50, 51, 52, 53, 55, 10062, 10102, 10114, 10135, 10139, 10151, 4, 6, 50, 51, 52, 53, 54, 56, 10076, 10083, 10086, 10093, 10096, 10099, 5, 189, 1, 59, 10081, 1, 189, 59, 1, 8531, 5, 188, 1, 59, 10091, 1, 188, 59, 1, 8533, 59, 1, 8537, 59, 1, 8539, 4, 2, 51, 53, 10108, 10111, 59, 1, 8532, 59, 1, 8534, 4, 3, 52, 53, 56, 10122, 10129, 10132, 5, 190, 1, 59, 10127, 1, 190, 59, 1, 8535, 59, 1, 8540, 53, 59, 1, 8536, 4, 2, 54, 56, 10145, 10148, 59, 1, 8538, 59, 1, 8541, 56, 59, 1, 8542, 108, 59, 1, 8260, 119, 110, 59, 1, 8994, 99, 114, 59, 3, 55349, 56507, 4, 17, 69, 97, 98, 99, 100, 101, 102, 103, 105, 106, 108, 110, 111, 114, 115, 116, 118, 10206, 10217, 10247, 10254, 10268, 10273, 10358, 10363, 10374, 10380, 10385, 10406, 10458, 10464, 10470, 10497, 10610, 4, 2, 59, 108, 10212, 10214, 1, 8807, 59, 1, 10892, 4, 3, 99, 109, 112, 10225, 10231, 10244, 117, 116, 101, 59, 1, 501, 109, 97, 4, 2, 59, 100, 10239, 10241, 1, 947, 59, 1, 989, 59, 1, 10886, 114, 101, 118, 101, 59, 1, 287, 4, 2, 105, 121, 10260, 10265, 114, 99, 59, 1, 285, 59, 1, 1075, 111, 116, 59, 1, 289, 4, 4, 59, 108, 113, 115, 10283, 10285, 10288, 10308, 1, 8805, 59, 1, 8923, 4, 3, 59, 113, 115, 10296, 10298, 10301, 1, 8805, 59, 1, 8807, 108, 97, 110, 116, 59, 1, 10878, 4, 4, 59, 99, 100, 108, 10318, 10320, 10324, 10345, 1, 10878, 99, 59, 1, 10921, 111, 116, 4, 2, 59, 111, 10332, 10334, 1, 10880, 4, 2, 59, 108, 10340, 10342, 1, 10882, 59, 1, 10884, 4, 2, 59, 101, 10351, 10354, 3, 8923, 65024, 115, 59, 1, 10900, 114, 59, 3, 55349, 56612, 4, 2, 59, 103, 10369, 10371, 1, 8811, 59, 1, 8921, 109, 101, 108, 59, 1, 8503, 99, 121, 59, 1, 1107, 4, 4, 59, 69, 97, 106, 10395, 10397, 10400, 10403, 1, 8823, 59, 1, 10898, 59, 1, 10917, 59, 1, 10916, 4, 4, 69, 97, 101, 115, 10416, 10419, 10434, 10453, 59, 1, 8809, 112, 4, 2, 59, 112, 10426, 10428, 1, 10890, 114, 111, 120, 59, 1, 10890, 4, 2, 59, 113, 10440, 10442, 1, 10888, 4, 2, 59, 113, 10448, 10450, 1, 10888, 59, 1, 8809, 105, 109, 59, 1, 8935, 112, 102, 59, 3, 55349, 56664, 97, 118, 101, 59, 1, 96, 4, 2, 99, 105, 10476, 10480, 114, 59, 1, 8458, 109, 4, 3, 59, 101, 108, 10489, 10491, 10494, 1, 8819, 59, 1, 10894, 59, 1, 10896, 5, 62, 6, 59, 99, 100, 108, 113, 114, 10512, 10514, 10527, 10532, 10538, 10545, 1, 62, 4, 2, 99, 105, 10520, 10523, 59, 1, 10919, 114, 59, 1, 10874, 111, 116, 59, 1, 8919, 80, 97, 114, 59, 1, 10645, 117, 101, 115, 116, 59, 1, 10876, 4, 5, 97, 100, 101, 108, 115, 10557, 10574, 10579, 10599, 10605, 4, 2, 112, 114, 10563, 10570, 112, 114, 111, 120, 59, 1, 10886, 114, 59, 1, 10616, 111, 116, 59, 1, 8919, 113, 4, 2, 108, 113, 10586, 10592, 101, 115, 115, 59, 1, 8923, 108, 101, 115, 115, 59, 1, 10892, 101, 115, 115, 59, 1, 8823, 105, 109, 59, 1, 8819, 4, 2, 101, 110, 10616, 10626, 114, 116, 110, 101, 113, 113, 59, 3, 8809, 65024, 69, 59, 3, 8809, 65024, 4, 10, 65, 97, 98, 99, 101, 102, 107, 111, 115, 121, 10653, 10658, 10713, 10718, 10724, 10760, 10765, 10786, 10850, 10875, 114, 114, 59, 1, 8660, 4, 4, 105, 108, 109, 114, 10668, 10674, 10678, 10684, 114, 115, 112, 59, 1, 8202, 102, 59, 1, 189, 105, 108, 116, 59, 1, 8459, 4, 2, 100, 114, 10690, 10695, 99, 121, 59, 1, 1098, 4, 3, 59, 99, 119, 10703, 10705, 10710, 1, 8596, 105, 114, 59, 1, 10568, 59, 1, 8621, 97, 114, 59, 1, 8463, 105, 114, 99, 59, 1, 293, 4, 3, 97, 108, 114, 10732, 10748, 10754, 114, 116, 115, 4, 2, 59, 117, 10741, 10743, 1, 9829, 105, 116, 59, 1, 9829, 108, 105, 112, 59, 1, 8230, 99, 111, 110, 59, 1, 8889, 114, 59, 3, 55349, 56613, 115, 4, 2, 101, 119, 10772, 10779, 97, 114, 111, 119, 59, 1, 10533, 97, 114, 111, 119, 59, 1, 10534, 4, 5, 97, 109, 111, 112, 114, 10798, 10803, 10809, 10839, 10844, 114, 114, 59, 1, 8703, 116, 104, 116, 59, 1, 8763, 107, 4, 2, 108, 114, 10816, 10827, 101, 102, 116, 97, 114, 114, 111, 119, 59, 1, 8617, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8618, 102, 59, 3, 55349, 56665, 98, 97, 114, 59, 1, 8213, 4, 3, 99, 108, 116, 10858, 10863, 10869, 114, 59, 3, 55349, 56509, 97, 115, 104, 59, 1, 8463, 114, 111, 107, 59, 1, 295, 4, 2, 98, 112, 10881, 10887, 117, 108, 108, 59, 1, 8259, 104, 101, 110, 59, 1, 8208, 4, 15, 97, 99, 101, 102, 103, 105, 106, 109, 110, 111, 112, 113, 115, 116, 117, 10925, 10936, 10958, 10977, 10990, 11001, 11039, 11045, 11101, 11192, 11220, 11226, 11237, 11285, 11299, 99, 117, 116, 101, 5, 237, 1, 59, 10934, 1, 237, 4, 3, 59, 105, 121, 10944, 10946, 10955, 1, 8291, 114, 99, 5, 238, 1, 59, 10953, 1, 238, 59, 1, 1080, 4, 2, 99, 120, 10964, 10968, 121, 59, 1, 1077, 99, 108, 5, 161, 1, 59, 10975, 1, 161, 4, 2, 102, 114, 10983, 10986, 59, 1, 8660, 59, 3, 55349, 56614, 114, 97, 118, 101, 5, 236, 1, 59, 10999, 1, 236, 4, 4, 59, 105, 110, 111, 11011, 11013, 11028, 11034, 1, 8520, 4, 2, 105, 110, 11019, 11024, 110, 116, 59, 1, 10764, 116, 59, 1, 8749, 102, 105, 110, 59, 1, 10716, 116, 97, 59, 1, 8489, 108, 105, 103, 59, 1, 307, 4, 3, 97, 111, 112, 11053, 11092, 11096, 4, 3, 99, 103, 116, 11061, 11065, 11088, 114, 59, 1, 299, 4, 3, 101, 108, 112, 11073, 11076, 11082, 59, 1, 8465, 105, 110, 101, 59, 1, 8464, 97, 114, 116, 59, 1, 8465, 104, 59, 1, 305, 102, 59, 1, 8887, 101, 100, 59, 1, 437, 4, 5, 59, 99, 102, 111, 116, 11113, 11115, 11121, 11136, 11142, 1, 8712, 97, 114, 101, 59, 1, 8453, 105, 110, 4, 2, 59, 116, 11129, 11131, 1, 8734, 105, 101, 59, 1, 10717, 100, 111, 116, 59, 1, 305, 4, 5, 59, 99, 101, 108, 112, 11154, 11156, 11161, 11179, 11186, 1, 8747, 97, 108, 59, 1, 8890, 4, 2, 103, 114, 11167, 11173, 101, 114, 115, 59, 1, 8484, 99, 97, 108, 59, 1, 8890, 97, 114, 104, 107, 59, 1, 10775, 114, 111, 100, 59, 1, 10812, 4, 4, 99, 103, 112, 116, 11202, 11206, 11211, 11216, 121, 59, 1, 1105, 111, 110, 59, 1, 303, 102, 59, 3, 55349, 56666, 97, 59, 1, 953, 114, 111, 100, 59, 1, 10812, 117, 101, 115, 116, 5, 191, 1, 59, 11235, 1, 191, 4, 2, 99, 105, 11243, 11248, 114, 59, 3, 55349, 56510, 110, 4, 5, 59, 69, 100, 115, 118, 11261, 11263, 11266, 11271, 11282, 1, 8712, 59, 1, 8953, 111, 116, 59, 1, 8949, 4, 2, 59, 118, 11277, 11279, 1, 8948, 59, 1, 8947, 59, 1, 8712, 4, 2, 59, 105, 11291, 11293, 1, 8290, 108, 100, 101, 59, 1, 297, 4, 2, 107, 109, 11305, 11310, 99, 121, 59, 1, 1110, 108, 5, 239, 1, 59, 11316, 1, 239, 4, 6, 99, 102, 109, 111, 115, 117, 11332, 11346, 11351, 11357, 11363, 11380, 4, 2, 105, 121, 11338, 11343, 114, 99, 59, 1, 309, 59, 1, 1081, 114, 59, 3, 55349, 56615, 97, 116, 104, 59, 1, 567, 112, 102, 59, 3, 55349, 56667, 4, 2, 99, 101, 11369, 11374, 114, 59, 3, 55349, 56511, 114, 99, 121, 59, 1, 1112, 107, 99, 121, 59, 1, 1108, 4, 8, 97, 99, 102, 103, 104, 106, 111, 115, 11404, 11418, 11433, 11438, 11445, 11450, 11455, 11461, 112, 112, 97, 4, 2, 59, 118, 11413, 11415, 1, 954, 59, 1, 1008, 4, 2, 101, 121, 11424, 11430, 100, 105, 108, 59, 1, 311, 59, 1, 1082, 114, 59, 3, 55349, 56616, 114, 101, 101, 110, 59, 1, 312, 99, 121, 59, 1, 1093, 99, 121, 59, 1, 1116, 112, 102, 59, 3, 55349, 56668, 99, 114, 59, 3, 55349, 56512, 4, 23, 65, 66, 69, 72, 97, 98, 99, 100, 101, 102, 103, 104, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 11515, 11538, 11544, 11555, 11560, 11721, 11780, 11818, 11868, 12136, 12160, 12171, 12203, 12208, 12246, 12275, 12327, 12509, 12523, 12569, 12641, 12732, 12752, 4, 3, 97, 114, 116, 11523, 11528, 11532, 114, 114, 59, 1, 8666, 114, 59, 1, 8656, 97, 105, 108, 59, 1, 10523, 97, 114, 114, 59, 1, 10510, 4, 2, 59, 103, 11550, 11552, 1, 8806, 59, 1, 10891, 97, 114, 59, 1, 10594, 4, 9, 99, 101, 103, 109, 110, 112, 113, 114, 116, 11580, 11586, 11594, 11600, 11606, 11624, 11627, 11636, 11694, 117, 116, 101, 59, 1, 314, 109, 112, 116, 121, 118, 59, 1, 10676, 114, 97, 110, 59, 1, 8466, 98, 100, 97, 59, 1, 955, 103, 4, 3, 59, 100, 108, 11615, 11617, 11620, 1, 10216, 59, 1, 10641, 101, 59, 1, 10216, 59, 1, 10885, 117, 111, 5, 171, 1, 59, 11634, 1, 171, 114, 4, 8, 59, 98, 102, 104, 108, 112, 115, 116, 11655, 11657, 11669, 11673, 11677, 11681, 11685, 11690, 1, 8592, 4, 2, 59, 102, 11663, 11665, 1, 8676, 115, 59, 1, 10527, 115, 59, 1, 10525, 107, 59, 1, 8617, 112, 59, 1, 8619, 108, 59, 1, 10553, 105, 109, 59, 1, 10611, 108, 59, 1, 8610, 4, 3, 59, 97, 101, 11702, 11704, 11709, 1, 10923, 105, 108, 59, 1, 10521, 4, 2, 59, 115, 11715, 11717, 1, 10925, 59, 3, 10925, 65024, 4, 3, 97, 98, 114, 11729, 11734, 11739, 114, 114, 59, 1, 10508, 114, 107, 59, 1, 10098, 4, 2, 97, 107, 11745, 11758, 99, 4, 2, 101, 107, 11752, 11755, 59, 1, 123, 59, 1, 91, 4, 2, 101, 115, 11764, 11767, 59, 1, 10635, 108, 4, 2, 100, 117, 11774, 11777, 59, 1, 10639, 59, 1, 10637, 4, 4, 97, 101, 117, 121, 11790, 11796, 11811, 11815, 114, 111, 110, 59, 1, 318, 4, 2, 100, 105, 11802, 11807, 105, 108, 59, 1, 316, 108, 59, 1, 8968, 98, 59, 1, 123, 59, 1, 1083, 4, 4, 99, 113, 114, 115, 11828, 11832, 11845, 11864, 97, 59, 1, 10550, 117, 111, 4, 2, 59, 114, 11840, 11842, 1, 8220, 59, 1, 8222, 4, 2, 100, 117, 11851, 11857, 104, 97, 114, 59, 1, 10599, 115, 104, 97, 114, 59, 1, 10571, 104, 59, 1, 8626, 4, 5, 59, 102, 103, 113, 115, 11880, 11882, 12008, 12011, 12031, 1, 8804, 116, 4, 5, 97, 104, 108, 114, 116, 11895, 11913, 11935, 11947, 11996, 114, 114, 111, 119, 4, 2, 59, 116, 11905, 11907, 1, 8592, 97, 105, 108, 59, 1, 8610, 97, 114, 112, 111, 111, 110, 4, 2, 100, 117, 11925, 11931, 111, 119, 110, 59, 1, 8637, 112, 59, 1, 8636, 101, 102, 116, 97, 114, 114, 111, 119, 115, 59, 1, 8647, 105, 103, 104, 116, 4, 3, 97, 104, 115, 11959, 11974, 11984, 114, 114, 111, 119, 4, 2, 59, 115, 11969, 11971, 1, 8596, 59, 1, 8646, 97, 114, 112, 111, 111, 110, 115, 59, 1, 8651, 113, 117, 105, 103, 97, 114, 114, 111, 119, 59, 1, 8621, 104, 114, 101, 101, 116, 105, 109, 101, 115, 59, 1, 8907, 59, 1, 8922, 4, 3, 59, 113, 115, 12019, 12021, 12024, 1, 8804, 59, 1, 8806, 108, 97, 110, 116, 59, 1, 10877, 4, 5, 59, 99, 100, 103, 115, 12043, 12045, 12049, 12070, 12083, 1, 10877, 99, 59, 1, 10920, 111, 116, 4, 2, 59, 111, 12057, 12059, 1, 10879, 4, 2, 59, 114, 12065, 12067, 1, 10881, 59, 1, 10883, 4, 2, 59, 101, 12076, 12079, 3, 8922, 65024, 115, 59, 1, 10899, 4, 5, 97, 100, 101, 103, 115, 12095, 12103, 12108, 12126, 12131, 112, 112, 114, 111, 120, 59, 1, 10885, 111, 116, 59, 1, 8918, 113, 4, 2, 103, 113, 12115, 12120, 116, 114, 59, 1, 8922, 103, 116, 114, 59, 1, 10891, 116, 114, 59, 1, 8822, 105, 109, 59, 1, 8818, 4, 3, 105, 108, 114, 12144, 12150, 12156, 115, 104, 116, 59, 1, 10620, 111, 111, 114, 59, 1, 8970, 59, 3, 55349, 56617, 4, 2, 59, 69, 12166, 12168, 1, 8822, 59, 1, 10897, 4, 2, 97, 98, 12177, 12198, 114, 4, 2, 100, 117, 12184, 12187, 59, 1, 8637, 4, 2, 59, 108, 12193, 12195, 1, 8636, 59, 1, 10602, 108, 107, 59, 1, 9604, 99, 121, 59, 1, 1113, 4, 5, 59, 97, 99, 104, 116, 12220, 12222, 12227, 12235, 12241, 1, 8810, 114, 114, 59, 1, 8647, 111, 114, 110, 101, 114, 59, 1, 8990, 97, 114, 100, 59, 1, 10603, 114, 105, 59, 1, 9722, 4, 2, 105, 111, 12252, 12258, 100, 111, 116, 59, 1, 320, 117, 115, 116, 4, 2, 59, 97, 12267, 12269, 1, 9136, 99, 104, 101, 59, 1, 9136, 4, 4, 69, 97, 101, 115, 12285, 12288, 12303, 12322, 59, 1, 8808, 112, 4, 2, 59, 112, 12295, 12297, 1, 10889, 114, 111, 120, 59, 1, 10889, 4, 2, 59, 113, 12309, 12311, 1, 10887, 4, 2, 59, 113, 12317, 12319, 1, 10887, 59, 1, 8808, 105, 109, 59, 1, 8934, 4, 8, 97, 98, 110, 111, 112, 116, 119, 122, 12345, 12359, 12364, 12421, 12446, 12467, 12474, 12490, 4, 2, 110, 114, 12351, 12355, 103, 59, 1, 10220, 114, 59, 1, 8701, 114, 107, 59, 1, 10214, 103, 4, 3, 108, 109, 114, 12373, 12401, 12409, 101, 102, 116, 4, 2, 97, 114, 12382, 12389, 114, 114, 111, 119, 59, 1, 10229, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 10231, 97, 112, 115, 116, 111, 59, 1, 10236, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 10230, 112, 97, 114, 114, 111, 119, 4, 2, 108, 114, 12433, 12439, 101, 102, 116, 59, 1, 8619, 105, 103, 104, 116, 59, 1, 8620, 4, 3, 97, 102, 108, 12454, 12458, 12462, 114, 59, 1, 10629, 59, 3, 55349, 56669, 117, 115, 59, 1, 10797, 105, 109, 101, 115, 59, 1, 10804, 4, 2, 97, 98, 12480, 12485, 115, 116, 59, 1, 8727, 97, 114, 59, 1, 95, 4, 3, 59, 101, 102, 12498, 12500, 12506, 1, 9674, 110, 103, 101, 59, 1, 9674, 59, 1, 10731, 97, 114, 4, 2, 59, 108, 12517, 12519, 1, 40, 116, 59, 1, 10643, 4, 5, 97, 99, 104, 109, 116, 12535, 12540, 12548, 12561, 12564, 114, 114, 59, 1, 8646, 111, 114, 110, 101, 114, 59, 1, 8991, 97, 114, 4, 2, 59, 100, 12556, 12558, 1, 8651, 59, 1, 10605, 59, 1, 8206, 114, 105, 59, 1, 8895, 4, 6, 97, 99, 104, 105, 113, 116, 12583, 12589, 12594, 12597, 12614, 12635, 113, 117, 111, 59, 1, 8249, 114, 59, 3, 55349, 56513, 59, 1, 8624, 109, 4, 3, 59, 101, 103, 12606, 12608, 12611, 1, 8818, 59, 1, 10893, 59, 1, 10895, 4, 2, 98, 117, 12620, 12623, 59, 1, 91, 111, 4, 2, 59, 114, 12630, 12632, 1, 8216, 59, 1, 8218, 114, 111, 107, 59, 1, 322, 5, 60, 8, 59, 99, 100, 104, 105, 108, 113, 114, 12660, 12662, 12675, 12680, 12686, 12692, 12698, 12705, 1, 60, 4, 2, 99, 105, 12668, 12671, 59, 1, 10918, 114, 59, 1, 10873, 111, 116, 59, 1, 8918, 114, 101, 101, 59, 1, 8907, 109, 101, 115, 59, 1, 8905, 97, 114, 114, 59, 1, 10614, 117, 101, 115, 116, 59, 1, 10875, 4, 2, 80, 105, 12711, 12716, 97, 114, 59, 1, 10646, 4, 3, 59, 101, 102, 12724, 12726, 12729, 1, 9667, 59, 1, 8884, 59, 1, 9666, 114, 4, 2, 100, 117, 12739, 12746, 115, 104, 97, 114, 59, 1, 10570, 104, 97, 114, 59, 1, 10598, 4, 2, 101, 110, 12758, 12768, 114, 116, 110, 101, 113, 113, 59, 3, 8808, 65024, 69, 59, 3, 8808, 65024, 4, 14, 68, 97, 99, 100, 101, 102, 104, 105, 108, 110, 111, 112, 115, 117, 12803, 12809, 12893, 12908, 12914, 12928, 12933, 12937, 13011, 13025, 13032, 13049, 13052, 13069, 68, 111, 116, 59, 1, 8762, 4, 4, 99, 108, 112, 114, 12819, 12827, 12849, 12887, 114, 5, 175, 1, 59, 12825, 1, 175, 4, 2, 101, 116, 12833, 12836, 59, 1, 9794, 4, 2, 59, 101, 12842, 12844, 1, 10016, 115, 101, 59, 1, 10016, 4, 2, 59, 115, 12855, 12857, 1, 8614, 116, 111, 4, 4, 59, 100, 108, 117, 12869, 12871, 12877, 12883, 1, 8614, 111, 119, 110, 59, 1, 8615, 101, 102, 116, 59, 1, 8612, 112, 59, 1, 8613, 107, 101, 114, 59, 1, 9646, 4, 2, 111, 121, 12899, 12905, 109, 109, 97, 59, 1, 10793, 59, 1, 1084, 97, 115, 104, 59, 1, 8212, 97, 115, 117, 114, 101, 100, 97, 110, 103, 108, 101, 59, 1, 8737, 114, 59, 3, 55349, 56618, 111, 59, 1, 8487, 4, 3, 99, 100, 110, 12945, 12954, 12985, 114, 111, 5, 181, 1, 59, 12952, 1, 181, 4, 4, 59, 97, 99, 100, 12964, 12966, 12971, 12976, 1, 8739, 115, 116, 59, 1, 42, 105, 114, 59, 1, 10992, 111, 116, 5, 183, 1, 59, 12983, 1, 183, 117, 115, 4, 3, 59, 98, 100, 12995, 12997, 13e3, 1, 8722, 59, 1, 8863, 4, 2, 59, 117, 13006, 13008, 1, 8760, 59, 1, 10794, 4, 2, 99, 100, 13017, 13021, 112, 59, 1, 10971, 114, 59, 1, 8230, 112, 108, 117, 115, 59, 1, 8723, 4, 2, 100, 112, 13038, 13044, 101, 108, 115, 59, 1, 8871, 102, 59, 3, 55349, 56670, 59, 1, 8723, 4, 2, 99, 116, 13058, 13063, 114, 59, 3, 55349, 56514, 112, 111, 115, 59, 1, 8766, 4, 3, 59, 108, 109, 13077, 13079, 13087, 1, 956, 116, 105, 109, 97, 112, 59, 1, 8888, 97, 112, 59, 1, 8888, 4, 24, 71, 76, 82, 86, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 111, 112, 114, 115, 116, 117, 118, 119, 13142, 13165, 13217, 13229, 13247, 13330, 13359, 13414, 13420, 13508, 13513, 13579, 13602, 13626, 13631, 13762, 13767, 13855, 13936, 13995, 14214, 14285, 14312, 14432, 4, 2, 103, 116, 13148, 13152, 59, 3, 8921, 824, 4, 2, 59, 118, 13158, 13161, 3, 8811, 8402, 59, 3, 8811, 824, 4, 3, 101, 108, 116, 13173, 13200, 13204, 102, 116, 4, 2, 97, 114, 13181, 13188, 114, 114, 111, 119, 59, 1, 8653, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8654, 59, 3, 8920, 824, 4, 2, 59, 118, 13210, 13213, 3, 8810, 8402, 59, 3, 8810, 824, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8655, 4, 2, 68, 100, 13235, 13241, 97, 115, 104, 59, 1, 8879, 97, 115, 104, 59, 1, 8878, 4, 5, 98, 99, 110, 112, 116, 13259, 13264, 13270, 13275, 13308, 108, 97, 59, 1, 8711, 117, 116, 101, 59, 1, 324, 103, 59, 3, 8736, 8402, 4, 5, 59, 69, 105, 111, 112, 13287, 13289, 13293, 13298, 13302, 1, 8777, 59, 3, 10864, 824, 100, 59, 3, 8779, 824, 115, 59, 1, 329, 114, 111, 120, 59, 1, 8777, 117, 114, 4, 2, 59, 97, 13316, 13318, 1, 9838, 108, 4, 2, 59, 115, 13325, 13327, 1, 9838, 59, 1, 8469, 4, 2, 115, 117, 13336, 13344, 112, 5, 160, 1, 59, 13342, 1, 160, 109, 112, 4, 2, 59, 101, 13352, 13355, 3, 8782, 824, 59, 3, 8783, 824, 4, 5, 97, 101, 111, 117, 121, 13371, 13385, 13391, 13407, 13411, 4, 2, 112, 114, 13377, 13380, 59, 1, 10819, 111, 110, 59, 1, 328, 100, 105, 108, 59, 1, 326, 110, 103, 4, 2, 59, 100, 13399, 13401, 1, 8775, 111, 116, 59, 3, 10861, 824, 112, 59, 1, 10818, 59, 1, 1085, 97, 115, 104, 59, 1, 8211, 4, 7, 59, 65, 97, 100, 113, 115, 120, 13436, 13438, 13443, 13466, 13472, 13478, 13494, 1, 8800, 114, 114, 59, 1, 8663, 114, 4, 2, 104, 114, 13450, 13454, 107, 59, 1, 10532, 4, 2, 59, 111, 13460, 13462, 1, 8599, 119, 59, 1, 8599, 111, 116, 59, 3, 8784, 824, 117, 105, 118, 59, 1, 8802, 4, 2, 101, 105, 13484, 13489, 97, 114, 59, 1, 10536, 109, 59, 3, 8770, 824, 105, 115, 116, 4, 2, 59, 115, 13503, 13505, 1, 8708, 59, 1, 8708, 114, 59, 3, 55349, 56619, 4, 4, 69, 101, 115, 116, 13523, 13527, 13563, 13568, 59, 3, 8807, 824, 4, 3, 59, 113, 115, 13535, 13537, 13559, 1, 8817, 4, 3, 59, 113, 115, 13545, 13547, 13551, 1, 8817, 59, 3, 8807, 824, 108, 97, 110, 116, 59, 3, 10878, 824, 59, 3, 10878, 824, 105, 109, 59, 1, 8821, 4, 2, 59, 114, 13574, 13576, 1, 8815, 59, 1, 8815, 4, 3, 65, 97, 112, 13587, 13592, 13597, 114, 114, 59, 1, 8654, 114, 114, 59, 1, 8622, 97, 114, 59, 1, 10994, 4, 3, 59, 115, 118, 13610, 13612, 13623, 1, 8715, 4, 2, 59, 100, 13618, 13620, 1, 8956, 59, 1, 8954, 59, 1, 8715, 99, 121, 59, 1, 1114, 4, 7, 65, 69, 97, 100, 101, 115, 116, 13647, 13652, 13656, 13661, 13665, 13737, 13742, 114, 114, 59, 1, 8653, 59, 3, 8806, 824, 114, 114, 59, 1, 8602, 114, 59, 1, 8229, 4, 4, 59, 102, 113, 115, 13675, 13677, 13703, 13725, 1, 8816, 116, 4, 2, 97, 114, 13684, 13691, 114, 114, 111, 119, 59, 1, 8602, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8622, 4, 3, 59, 113, 115, 13711, 13713, 13717, 1, 8816, 59, 3, 8806, 824, 108, 97, 110, 116, 59, 3, 10877, 824, 4, 2, 59, 115, 13731, 13734, 3, 10877, 824, 59, 1, 8814, 105, 109, 59, 1, 8820, 4, 2, 59, 114, 13748, 13750, 1, 8814, 105, 4, 2, 59, 101, 13757, 13759, 1, 8938, 59, 1, 8940, 105, 100, 59, 1, 8740, 4, 2, 112, 116, 13773, 13778, 102, 59, 3, 55349, 56671, 5, 172, 3, 59, 105, 110, 13787, 13789, 13829, 1, 172, 110, 4, 4, 59, 69, 100, 118, 13800, 13802, 13806, 13812, 1, 8713, 59, 3, 8953, 824, 111, 116, 59, 3, 8949, 824, 4, 3, 97, 98, 99, 13820, 13823, 13826, 59, 1, 8713, 59, 1, 8951, 59, 1, 8950, 105, 4, 2, 59, 118, 13836, 13838, 1, 8716, 4, 3, 97, 98, 99, 13846, 13849, 13852, 59, 1, 8716, 59, 1, 8958, 59, 1, 8957, 4, 3, 97, 111, 114, 13863, 13892, 13899, 114, 4, 4, 59, 97, 115, 116, 13874, 13876, 13883, 13888, 1, 8742, 108, 108, 101, 108, 59, 1, 8742, 108, 59, 3, 11005, 8421, 59, 3, 8706, 824, 108, 105, 110, 116, 59, 1, 10772, 4, 3, 59, 99, 101, 13907, 13909, 13914, 1, 8832, 117, 101, 59, 1, 8928, 4, 2, 59, 99, 13920, 13923, 3, 10927, 824, 4, 2, 59, 101, 13929, 13931, 1, 8832, 113, 59, 3, 10927, 824, 4, 4, 65, 97, 105, 116, 13946, 13951, 13971, 13982, 114, 114, 59, 1, 8655, 114, 114, 4, 3, 59, 99, 119, 13961, 13963, 13967, 1, 8603, 59, 3, 10547, 824, 59, 3, 8605, 824, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8603, 114, 105, 4, 2, 59, 101, 13990, 13992, 1, 8939, 59, 1, 8941, 4, 7, 99, 104, 105, 109, 112, 113, 117, 14011, 14036, 14060, 14080, 14085, 14090, 14106, 4, 4, 59, 99, 101, 114, 14021, 14023, 14028, 14032, 1, 8833, 117, 101, 59, 1, 8929, 59, 3, 10928, 824, 59, 3, 55349, 56515, 111, 114, 116, 4, 2, 109, 112, 14045, 14050, 105, 100, 59, 1, 8740, 97, 114, 97, 108, 108, 101, 108, 59, 1, 8742, 109, 4, 2, 59, 101, 14067, 14069, 1, 8769, 4, 2, 59, 113, 14075, 14077, 1, 8772, 59, 1, 8772, 105, 100, 59, 1, 8740, 97, 114, 59, 1, 8742, 115, 117, 4, 2, 98, 112, 14098, 14102, 101, 59, 1, 8930, 101, 59, 1, 8931, 4, 3, 98, 99, 112, 14114, 14157, 14171, 4, 4, 59, 69, 101, 115, 14124, 14126, 14130, 14133, 1, 8836, 59, 3, 10949, 824, 59, 1, 8840, 101, 116, 4, 2, 59, 101, 14141, 14144, 3, 8834, 8402, 113, 4, 2, 59, 113, 14151, 14153, 1, 8840, 59, 3, 10949, 824, 99, 4, 2, 59, 101, 14164, 14166, 1, 8833, 113, 59, 3, 10928, 824, 4, 4, 59, 69, 101, 115, 14181, 14183, 14187, 14190, 1, 8837, 59, 3, 10950, 824, 59, 1, 8841, 101, 116, 4, 2, 59, 101, 14198, 14201, 3, 8835, 8402, 113, 4, 2, 59, 113, 14208, 14210, 1, 8841, 59, 3, 10950, 824, 4, 4, 103, 105, 108, 114, 14224, 14228, 14238, 14242, 108, 59, 1, 8825, 108, 100, 101, 5, 241, 1, 59, 14236, 1, 241, 103, 59, 1, 8824, 105, 97, 110, 103, 108, 101, 4, 2, 108, 114, 14254, 14269, 101, 102, 116, 4, 2, 59, 101, 14263, 14265, 1, 8938, 113, 59, 1, 8940, 105, 103, 104, 116, 4, 2, 59, 101, 14279, 14281, 1, 8939, 113, 59, 1, 8941, 4, 2, 59, 109, 14291, 14293, 1, 957, 4, 3, 59, 101, 115, 14301, 14303, 14308, 1, 35, 114, 111, 59, 1, 8470, 112, 59, 1, 8199, 4, 9, 68, 72, 97, 100, 103, 105, 108, 114, 115, 14332, 14338, 14344, 14349, 14355, 14369, 14376, 14408, 14426, 97, 115, 104, 59, 1, 8877, 97, 114, 114, 59, 1, 10500, 112, 59, 3, 8781, 8402, 97, 115, 104, 59, 1, 8876, 4, 2, 101, 116, 14361, 14365, 59, 3, 8805, 8402, 59, 3, 62, 8402, 110, 102, 105, 110, 59, 1, 10718, 4, 3, 65, 101, 116, 14384, 14389, 14393, 114, 114, 59, 1, 10498, 59, 3, 8804, 8402, 4, 2, 59, 114, 14399, 14402, 3, 60, 8402, 105, 101, 59, 3, 8884, 8402, 4, 2, 65, 116, 14414, 14419, 114, 114, 59, 1, 10499, 114, 105, 101, 59, 3, 8885, 8402, 105, 109, 59, 3, 8764, 8402, 4, 3, 65, 97, 110, 14440, 14445, 14468, 114, 114, 59, 1, 8662, 114, 4, 2, 104, 114, 14452, 14456, 107, 59, 1, 10531, 4, 2, 59, 111, 14462, 14464, 1, 8598, 119, 59, 1, 8598, 101, 97, 114, 59, 1, 10535, 4, 18, 83, 97, 99, 100, 101, 102, 103, 104, 105, 108, 109, 111, 112, 114, 115, 116, 117, 118, 14512, 14515, 14535, 14560, 14597, 14603, 14618, 14643, 14657, 14662, 14701, 14741, 14747, 14769, 14851, 14877, 14907, 14916, 59, 1, 9416, 4, 2, 99, 115, 14521, 14531, 117, 116, 101, 5, 243, 1, 59, 14529, 1, 243, 116, 59, 1, 8859, 4, 2, 105, 121, 14541, 14557, 114, 4, 2, 59, 99, 14548, 14550, 1, 8858, 5, 244, 1, 59, 14555, 1, 244, 59, 1, 1086, 4, 5, 97, 98, 105, 111, 115, 14572, 14577, 14583, 14587, 14591, 115, 104, 59, 1, 8861, 108, 97, 99, 59, 1, 337, 118, 59, 1, 10808, 116, 59, 1, 8857, 111, 108, 100, 59, 1, 10684, 108, 105, 103, 59, 1, 339, 4, 2, 99, 114, 14609, 14614, 105, 114, 59, 1, 10687, 59, 3, 55349, 56620, 4, 3, 111, 114, 116, 14626, 14630, 14640, 110, 59, 1, 731, 97, 118, 101, 5, 242, 1, 59, 14638, 1, 242, 59, 1, 10689, 4, 2, 98, 109, 14649, 14654, 97, 114, 59, 1, 10677, 59, 1, 937, 110, 116, 59, 1, 8750, 4, 4, 97, 99, 105, 116, 14672, 14677, 14693, 14698, 114, 114, 59, 1, 8634, 4, 2, 105, 114, 14683, 14687, 114, 59, 1, 10686, 111, 115, 115, 59, 1, 10683, 110, 101, 59, 1, 8254, 59, 1, 10688, 4, 3, 97, 101, 105, 14709, 14714, 14719, 99, 114, 59, 1, 333, 103, 97, 59, 1, 969, 4, 3, 99, 100, 110, 14727, 14733, 14736, 114, 111, 110, 59, 1, 959, 59, 1, 10678, 117, 115, 59, 1, 8854, 112, 102, 59, 3, 55349, 56672, 4, 3, 97, 101, 108, 14755, 14759, 14764, 114, 59, 1, 10679, 114, 112, 59, 1, 10681, 117, 115, 59, 1, 8853, 4, 7, 59, 97, 100, 105, 111, 115, 118, 14785, 14787, 14792, 14831, 14837, 14841, 14848, 1, 8744, 114, 114, 59, 1, 8635, 4, 4, 59, 101, 102, 109, 14802, 14804, 14817, 14824, 1, 10845, 114, 4, 2, 59, 111, 14811, 14813, 1, 8500, 102, 59, 1, 8500, 5, 170, 1, 59, 14822, 1, 170, 5, 186, 1, 59, 14829, 1, 186, 103, 111, 102, 59, 1, 8886, 114, 59, 1, 10838, 108, 111, 112, 101, 59, 1, 10839, 59, 1, 10843, 4, 3, 99, 108, 111, 14859, 14863, 14873, 114, 59, 1, 8500, 97, 115, 104, 5, 248, 1, 59, 14871, 1, 248, 108, 59, 1, 8856, 105, 4, 2, 108, 109, 14884, 14893, 100, 101, 5, 245, 1, 59, 14891, 1, 245, 101, 115, 4, 2, 59, 97, 14901, 14903, 1, 8855, 115, 59, 1, 10806, 109, 108, 5, 246, 1, 59, 14914, 1, 246, 98, 97, 114, 59, 1, 9021, 4, 12, 97, 99, 101, 102, 104, 105, 108, 109, 111, 114, 115, 117, 14948, 14992, 14996, 15033, 15038, 15068, 15090, 15189, 15192, 15222, 15427, 15441, 114, 4, 4, 59, 97, 115, 116, 14959, 14961, 14976, 14989, 1, 8741, 5, 182, 2, 59, 108, 14968, 14970, 1, 182, 108, 101, 108, 59, 1, 8741, 4, 2, 105, 108, 14982, 14986, 109, 59, 1, 10995, 59, 1, 11005, 59, 1, 8706, 121, 59, 1, 1087, 114, 4, 5, 99, 105, 109, 112, 116, 15009, 15014, 15019, 15024, 15027, 110, 116, 59, 1, 37, 111, 100, 59, 1, 46, 105, 108, 59, 1, 8240, 59, 1, 8869, 101, 110, 107, 59, 1, 8241, 114, 59, 3, 55349, 56621, 4, 3, 105, 109, 111, 15046, 15057, 15063, 4, 2, 59, 118, 15052, 15054, 1, 966, 59, 1, 981, 109, 97, 116, 59, 1, 8499, 110, 101, 59, 1, 9742, 4, 3, 59, 116, 118, 15076, 15078, 15087, 1, 960, 99, 104, 102, 111, 114, 107, 59, 1, 8916, 59, 1, 982, 4, 2, 97, 117, 15096, 15119, 110, 4, 2, 99, 107, 15103, 15115, 107, 4, 2, 59, 104, 15110, 15112, 1, 8463, 59, 1, 8462, 118, 59, 1, 8463, 115, 4, 9, 59, 97, 98, 99, 100, 101, 109, 115, 116, 15140, 15142, 15148, 15151, 15156, 15168, 15171, 15179, 15184, 1, 43, 99, 105, 114, 59, 1, 10787, 59, 1, 8862, 105, 114, 59, 1, 10786, 4, 2, 111, 117, 15162, 15165, 59, 1, 8724, 59, 1, 10789, 59, 1, 10866, 110, 5, 177, 1, 59, 15177, 1, 177, 105, 109, 59, 1, 10790, 119, 111, 59, 1, 10791, 59, 1, 177, 4, 3, 105, 112, 117, 15200, 15208, 15213, 110, 116, 105, 110, 116, 59, 1, 10773, 102, 59, 3, 55349, 56673, 110, 100, 5, 163, 1, 59, 15220, 1, 163, 4, 10, 59, 69, 97, 99, 101, 105, 110, 111, 115, 117, 15244, 15246, 15249, 15253, 15258, 15334, 15347, 15367, 15416, 15421, 1, 8826, 59, 1, 10931, 112, 59, 1, 10935, 117, 101, 59, 1, 8828, 4, 2, 59, 99, 15264, 15266, 1, 10927, 4, 6, 59, 97, 99, 101, 110, 115, 15280, 15282, 15290, 15299, 15303, 15329, 1, 8826, 112, 112, 114, 111, 120, 59, 1, 10935, 117, 114, 108, 121, 101, 113, 59, 1, 8828, 113, 59, 1, 10927, 4, 3, 97, 101, 115, 15311, 15319, 15324, 112, 112, 114, 111, 120, 59, 1, 10937, 113, 113, 59, 1, 10933, 105, 109, 59, 1, 8936, 105, 109, 59, 1, 8830, 109, 101, 4, 2, 59, 115, 15342, 15344, 1, 8242, 59, 1, 8473, 4, 3, 69, 97, 115, 15355, 15358, 15362, 59, 1, 10933, 112, 59, 1, 10937, 105, 109, 59, 1, 8936, 4, 3, 100, 102, 112, 15375, 15378, 15404, 59, 1, 8719, 4, 3, 97, 108, 115, 15386, 15392, 15398, 108, 97, 114, 59, 1, 9006, 105, 110, 101, 59, 1, 8978, 117, 114, 102, 59, 1, 8979, 4, 2, 59, 116, 15410, 15412, 1, 8733, 111, 59, 1, 8733, 105, 109, 59, 1, 8830, 114, 101, 108, 59, 1, 8880, 4, 2, 99, 105, 15433, 15438, 114, 59, 3, 55349, 56517, 59, 1, 968, 110, 99, 115, 112, 59, 1, 8200, 4, 6, 102, 105, 111, 112, 115, 117, 15462, 15467, 15472, 15478, 15485, 15491, 114, 59, 3, 55349, 56622, 110, 116, 59, 1, 10764, 112, 102, 59, 3, 55349, 56674, 114, 105, 109, 101, 59, 1, 8279, 99, 114, 59, 3, 55349, 56518, 4, 3, 97, 101, 111, 15499, 15520, 15534, 116, 4, 2, 101, 105, 15506, 15515, 114, 110, 105, 111, 110, 115, 59, 1, 8461, 110, 116, 59, 1, 10774, 115, 116, 4, 2, 59, 101, 15528, 15530, 1, 63, 113, 59, 1, 8799, 116, 5, 34, 1, 59, 15540, 1, 34, 4, 21, 65, 66, 72, 97, 98, 99, 100, 101, 102, 104, 105, 108, 109, 110, 111, 112, 114, 115, 116, 117, 120, 15586, 15609, 15615, 15620, 15796, 15855, 15893, 15931, 15977, 16001, 16039, 16183, 16204, 16222, 16228, 16285, 16312, 16318, 16363, 16408, 16416, 4, 3, 97, 114, 116, 15594, 15599, 15603, 114, 114, 59, 1, 8667, 114, 59, 1, 8658, 97, 105, 108, 59, 1, 10524, 97, 114, 114, 59, 1, 10511, 97, 114, 59, 1, 10596, 4, 7, 99, 100, 101, 110, 113, 114, 116, 15636, 15651, 15656, 15664, 15687, 15696, 15770, 4, 2, 101, 117, 15642, 15646, 59, 3, 8765, 817, 116, 101, 59, 1, 341, 105, 99, 59, 1, 8730, 109, 112, 116, 121, 118, 59, 1, 10675, 103, 4, 4, 59, 100, 101, 108, 15675, 15677, 15680, 15683, 1, 10217, 59, 1, 10642, 59, 1, 10661, 101, 59, 1, 10217, 117, 111, 5, 187, 1, 59, 15694, 1, 187, 114, 4, 11, 59, 97, 98, 99, 102, 104, 108, 112, 115, 116, 119, 15721, 15723, 15727, 15739, 15742, 15746, 15750, 15754, 15758, 15763, 15767, 1, 8594, 112, 59, 1, 10613, 4, 2, 59, 102, 15733, 15735, 1, 8677, 115, 59, 1, 10528, 59, 1, 10547, 115, 59, 1, 10526, 107, 59, 1, 8618, 112, 59, 1, 8620, 108, 59, 1, 10565, 105, 109, 59, 1, 10612, 108, 59, 1, 8611, 59, 1, 8605, 4, 2, 97, 105, 15776, 15781, 105, 108, 59, 1, 10522, 111, 4, 2, 59, 110, 15788, 15790, 1, 8758, 97, 108, 115, 59, 1, 8474, 4, 3, 97, 98, 114, 15804, 15809, 15814, 114, 114, 59, 1, 10509, 114, 107, 59, 1, 10099, 4, 2, 97, 107, 15820, 15833, 99, 4, 2, 101, 107, 15827, 15830, 59, 1, 125, 59, 1, 93, 4, 2, 101, 115, 15839, 15842, 59, 1, 10636, 108, 4, 2, 100, 117, 15849, 15852, 59, 1, 10638, 59, 1, 10640, 4, 4, 97, 101, 117, 121, 15865, 15871, 15886, 15890, 114, 111, 110, 59, 1, 345, 4, 2, 100, 105, 15877, 15882, 105, 108, 59, 1, 343, 108, 59, 1, 8969, 98, 59, 1, 125, 59, 1, 1088, 4, 4, 99, 108, 113, 115, 15903, 15907, 15914, 15927, 97, 59, 1, 10551, 100, 104, 97, 114, 59, 1, 10601, 117, 111, 4, 2, 59, 114, 15922, 15924, 1, 8221, 59, 1, 8221, 104, 59, 1, 8627, 4, 3, 97, 99, 103, 15939, 15966, 15970, 108, 4, 4, 59, 105, 112, 115, 15950, 15952, 15957, 15963, 1, 8476, 110, 101, 59, 1, 8475, 97, 114, 116, 59, 1, 8476, 59, 1, 8477, 116, 59, 1, 9645, 5, 174, 1, 59, 15975, 1, 174, 4, 3, 105, 108, 114, 15985, 15991, 15997, 115, 104, 116, 59, 1, 10621, 111, 111, 114, 59, 1, 8971, 59, 3, 55349, 56623, 4, 2, 97, 111, 16007, 16028, 114, 4, 2, 100, 117, 16014, 16017, 59, 1, 8641, 4, 2, 59, 108, 16023, 16025, 1, 8640, 59, 1, 10604, 4, 2, 59, 118, 16034, 16036, 1, 961, 59, 1, 1009, 4, 3, 103, 110, 115, 16047, 16167, 16171, 104, 116, 4, 6, 97, 104, 108, 114, 115, 116, 16063, 16081, 16103, 16130, 16143, 16155, 114, 114, 111, 119, 4, 2, 59, 116, 16073, 16075, 1, 8594, 97, 105, 108, 59, 1, 8611, 97, 114, 112, 111, 111, 110, 4, 2, 100, 117, 16093, 16099, 111, 119, 110, 59, 1, 8641, 112, 59, 1, 8640, 101, 102, 116, 4, 2, 97, 104, 16112, 16120, 114, 114, 111, 119, 115, 59, 1, 8644, 97, 114, 112, 111, 111, 110, 115, 59, 1, 8652, 105, 103, 104, 116, 97, 114, 114, 111, 119, 115, 59, 1, 8649, 113, 117, 105, 103, 97, 114, 114, 111, 119, 59, 1, 8605, 104, 114, 101, 101, 116, 105, 109, 101, 115, 59, 1, 8908, 103, 59, 1, 730, 105, 110, 103, 100, 111, 116, 115, 101, 113, 59, 1, 8787, 4, 3, 97, 104, 109, 16191, 16196, 16201, 114, 114, 59, 1, 8644, 97, 114, 59, 1, 8652, 59, 1, 8207, 111, 117, 115, 116, 4, 2, 59, 97, 16214, 16216, 1, 9137, 99, 104, 101, 59, 1, 9137, 109, 105, 100, 59, 1, 10990, 4, 4, 97, 98, 112, 116, 16238, 16252, 16257, 16278, 4, 2, 110, 114, 16244, 16248, 103, 59, 1, 10221, 114, 59, 1, 8702, 114, 107, 59, 1, 10215, 4, 3, 97, 102, 108, 16265, 16269, 16273, 114, 59, 1, 10630, 59, 3, 55349, 56675, 117, 115, 59, 1, 10798, 105, 109, 101, 115, 59, 1, 10805, 4, 2, 97, 112, 16291, 16304, 114, 4, 2, 59, 103, 16298, 16300, 1, 41, 116, 59, 1, 10644, 111, 108, 105, 110, 116, 59, 1, 10770, 97, 114, 114, 59, 1, 8649, 4, 4, 97, 99, 104, 113, 16328, 16334, 16339, 16342, 113, 117, 111, 59, 1, 8250, 114, 59, 3, 55349, 56519, 59, 1, 8625, 4, 2, 98, 117, 16348, 16351, 59, 1, 93, 111, 4, 2, 59, 114, 16358, 16360, 1, 8217, 59, 1, 8217, 4, 3, 104, 105, 114, 16371, 16377, 16383, 114, 101, 101, 59, 1, 8908, 109, 101, 115, 59, 1, 8906, 105, 4, 4, 59, 101, 102, 108, 16394, 16396, 16399, 16402, 1, 9657, 59, 1, 8885, 59, 1, 9656, 116, 114, 105, 59, 1, 10702, 108, 117, 104, 97, 114, 59, 1, 10600, 59, 1, 8478, 4, 19, 97, 98, 99, 100, 101, 102, 104, 105, 108, 109, 111, 112, 113, 114, 115, 116, 117, 119, 122, 16459, 16466, 16472, 16572, 16590, 16672, 16687, 16746, 16844, 16850, 16924, 16963, 16988, 17115, 17121, 17154, 17206, 17614, 17656, 99, 117, 116, 101, 59, 1, 347, 113, 117, 111, 59, 1, 8218, 4, 10, 59, 69, 97, 99, 101, 105, 110, 112, 115, 121, 16494, 16496, 16499, 16513, 16518, 16531, 16536, 16556, 16564, 16569, 1, 8827, 59, 1, 10932, 4, 2, 112, 114, 16505, 16508, 59, 1, 10936, 111, 110, 59, 1, 353, 117, 101, 59, 1, 8829, 4, 2, 59, 100, 16524, 16526, 1, 10928, 105, 108, 59, 1, 351, 114, 99, 59, 1, 349, 4, 3, 69, 97, 115, 16544, 16547, 16551, 59, 1, 10934, 112, 59, 1, 10938, 105, 109, 59, 1, 8937, 111, 108, 105, 110, 116, 59, 1, 10771, 105, 109, 59, 1, 8831, 59, 1, 1089, 111, 116, 4, 3, 59, 98, 101, 16582, 16584, 16587, 1, 8901, 59, 1, 8865, 59, 1, 10854, 4, 7, 65, 97, 99, 109, 115, 116, 120, 16606, 16611, 16634, 16642, 16646, 16652, 16668, 114, 114, 59, 1, 8664, 114, 4, 2, 104, 114, 16618, 16622, 107, 59, 1, 10533, 4, 2, 59, 111, 16628, 16630, 1, 8600, 119, 59, 1, 8600, 116, 5, 167, 1, 59, 16640, 1, 167, 105, 59, 1, 59, 119, 97, 114, 59, 1, 10537, 109, 4, 2, 105, 110, 16659, 16665, 110, 117, 115, 59, 1, 8726, 59, 1, 8726, 116, 59, 1, 10038, 114, 4, 2, 59, 111, 16679, 16682, 3, 55349, 56624, 119, 110, 59, 1, 8994, 4, 4, 97, 99, 111, 121, 16697, 16702, 16716, 16739, 114, 112, 59, 1, 9839, 4, 2, 104, 121, 16708, 16713, 99, 121, 59, 1, 1097, 59, 1, 1096, 114, 116, 4, 2, 109, 112, 16724, 16729, 105, 100, 59, 1, 8739, 97, 114, 97, 108, 108, 101, 108, 59, 1, 8741, 5, 173, 1, 59, 16744, 1, 173, 4, 2, 103, 109, 16752, 16770, 109, 97, 4, 3, 59, 102, 118, 16762, 16764, 16767, 1, 963, 59, 1, 962, 59, 1, 962, 4, 8, 59, 100, 101, 103, 108, 110, 112, 114, 16788, 16790, 16795, 16806, 16817, 16828, 16832, 16838, 1, 8764, 111, 116, 59, 1, 10858, 4, 2, 59, 113, 16801, 16803, 1, 8771, 59, 1, 8771, 4, 2, 59, 69, 16812, 16814, 1, 10910, 59, 1, 10912, 4, 2, 59, 69, 16823, 16825, 1, 10909, 59, 1, 10911, 101, 59, 1, 8774, 108, 117, 115, 59, 1, 10788, 97, 114, 114, 59, 1, 10610, 97, 114, 114, 59, 1, 8592, 4, 4, 97, 101, 105, 116, 16860, 16883, 16891, 16904, 4, 2, 108, 115, 16866, 16878, 108, 115, 101, 116, 109, 105, 110, 117, 115, 59, 1, 8726, 104, 112, 59, 1, 10803, 112, 97, 114, 115, 108, 59, 1, 10724, 4, 2, 100, 108, 16897, 16900, 59, 1, 8739, 101, 59, 1, 8995, 4, 2, 59, 101, 16910, 16912, 1, 10922, 4, 2, 59, 115, 16918, 16920, 1, 10924, 59, 3, 10924, 65024, 4, 3, 102, 108, 112, 16932, 16938, 16958, 116, 99, 121, 59, 1, 1100, 4, 2, 59, 98, 16944, 16946, 1, 47, 4, 2, 59, 97, 16952, 16954, 1, 10692, 114, 59, 1, 9023, 102, 59, 3, 55349, 56676, 97, 4, 2, 100, 114, 16970, 16985, 101, 115, 4, 2, 59, 117, 16978, 16980, 1, 9824, 105, 116, 59, 1, 9824, 59, 1, 8741, 4, 3, 99, 115, 117, 16996, 17028, 17089, 4, 2, 97, 117, 17002, 17015, 112, 4, 2, 59, 115, 17009, 17011, 1, 8851, 59, 3, 8851, 65024, 112, 4, 2, 59, 115, 17022, 17024, 1, 8852, 59, 3, 8852, 65024, 117, 4, 2, 98, 112, 17035, 17062, 4, 3, 59, 101, 115, 17043, 17045, 17048, 1, 8847, 59, 1, 8849, 101, 116, 4, 2, 59, 101, 17056, 17058, 1, 8847, 113, 59, 1, 8849, 4, 3, 59, 101, 115, 17070, 17072, 17075, 1, 8848, 59, 1, 8850, 101, 116, 4, 2, 59, 101, 17083, 17085, 1, 8848, 113, 59, 1, 8850, 4, 3, 59, 97, 102, 17097, 17099, 17112, 1, 9633, 114, 4, 2, 101, 102, 17106, 17109, 59, 1, 9633, 59, 1, 9642, 59, 1, 9642, 97, 114, 114, 59, 1, 8594, 4, 4, 99, 101, 109, 116, 17131, 17136, 17142, 17148, 114, 59, 3, 55349, 56520, 116, 109, 110, 59, 1, 8726, 105, 108, 101, 59, 1, 8995, 97, 114, 102, 59, 1, 8902, 4, 2, 97, 114, 17160, 17172, 114, 4, 2, 59, 102, 17167, 17169, 1, 9734, 59, 1, 9733, 4, 2, 97, 110, 17178, 17202, 105, 103, 104, 116, 4, 2, 101, 112, 17188, 17197, 112, 115, 105, 108, 111, 110, 59, 1, 1013, 104, 105, 59, 1, 981, 115, 59, 1, 175, 4, 5, 98, 99, 109, 110, 112, 17218, 17351, 17420, 17423, 17427, 4, 9, 59, 69, 100, 101, 109, 110, 112, 114, 115, 17238, 17240, 17243, 17248, 17261, 17267, 17279, 17285, 17291, 1, 8834, 59, 1, 10949, 111, 116, 59, 1, 10941, 4, 2, 59, 100, 17254, 17256, 1, 8838, 111, 116, 59, 1, 10947, 117, 108, 116, 59, 1, 10945, 4, 2, 69, 101, 17273, 17276, 59, 1, 10955, 59, 1, 8842, 108, 117, 115, 59, 1, 10943, 97, 114, 114, 59, 1, 10617, 4, 3, 101, 105, 117, 17299, 17335, 17339, 116, 4, 3, 59, 101, 110, 17308, 17310, 17322, 1, 8834, 113, 4, 2, 59, 113, 17317, 17319, 1, 8838, 59, 1, 10949, 101, 113, 4, 2, 59, 113, 17330, 17332, 1, 8842, 59, 1, 10955, 109, 59, 1, 10951, 4, 2, 98, 112, 17345, 17348, 59, 1, 10965, 59, 1, 10963, 99, 4, 6, 59, 97, 99, 101, 110, 115, 17366, 17368, 17376, 17385, 17389, 17415, 1, 8827, 112, 112, 114, 111, 120, 59, 1, 10936, 117, 114, 108, 121, 101, 113, 59, 1, 8829, 113, 59, 1, 10928, 4, 3, 97, 101, 115, 17397, 17405, 17410, 112, 112, 114, 111, 120, 59, 1, 10938, 113, 113, 59, 1, 10934, 105, 109, 59, 1, 8937, 105, 109, 59, 1, 8831, 59, 1, 8721, 103, 59, 1, 9834, 4, 13, 49, 50, 51, 59, 69, 100, 101, 104, 108, 109, 110, 112, 115, 17455, 17462, 17469, 17476, 17478, 17481, 17496, 17509, 17524, 17530, 17536, 17548, 17554, 5, 185, 1, 59, 17460, 1, 185, 5, 178, 1, 59, 17467, 1, 178, 5, 179, 1, 59, 17474, 1, 179, 1, 8835, 59, 1, 10950, 4, 2, 111, 115, 17487, 17491, 116, 59, 1, 10942, 117, 98, 59, 1, 10968, 4, 2, 59, 100, 17502, 17504, 1, 8839, 111, 116, 59, 1, 10948, 115, 4, 2, 111, 117, 17516, 17520, 108, 59, 1, 10185, 98, 59, 1, 10967, 97, 114, 114, 59, 1, 10619, 117, 108, 116, 59, 1, 10946, 4, 2, 69, 101, 17542, 17545, 59, 1, 10956, 59, 1, 8843, 108, 117, 115, 59, 1, 10944, 4, 3, 101, 105, 117, 17562, 17598, 17602, 116, 4, 3, 59, 101, 110, 17571, 17573, 17585, 1, 8835, 113, 4, 2, 59, 113, 17580, 17582, 1, 8839, 59, 1, 10950, 101, 113, 4, 2, 59, 113, 17593, 17595, 1, 8843, 59, 1, 10956, 109, 59, 1, 10952, 4, 2, 98, 112, 17608, 17611, 59, 1, 10964, 59, 1, 10966, 4, 3, 65, 97, 110, 17622, 17627, 17650, 114, 114, 59, 1, 8665, 114, 4, 2, 104, 114, 17634, 17638, 107, 59, 1, 10534, 4, 2, 59, 111, 17644, 17646, 1, 8601, 119, 59, 1, 8601, 119, 97, 114, 59, 1, 10538, 108, 105, 103, 5, 223, 1, 59, 17664, 1, 223, 4, 13, 97, 98, 99, 100, 101, 102, 104, 105, 111, 112, 114, 115, 119, 17694, 17709, 17714, 17737, 17742, 17749, 17754, 17860, 17905, 17957, 17964, 18090, 18122, 4, 2, 114, 117, 17700, 17706, 103, 101, 116, 59, 1, 8982, 59, 1, 964, 114, 107, 59, 1, 9140, 4, 3, 97, 101, 121, 17722, 17728, 17734, 114, 111, 110, 59, 1, 357, 100, 105, 108, 59, 1, 355, 59, 1, 1090, 111, 116, 59, 1, 8411, 108, 114, 101, 99, 59, 1, 8981, 114, 59, 3, 55349, 56625, 4, 4, 101, 105, 107, 111, 17764, 17805, 17836, 17851, 4, 2, 114, 116, 17770, 17786, 101, 4, 2, 52, 102, 17777, 17780, 59, 1, 8756, 111, 114, 101, 59, 1, 8756, 97, 4, 3, 59, 115, 118, 17795, 17797, 17802, 1, 952, 121, 109, 59, 1, 977, 59, 1, 977, 4, 2, 99, 110, 17811, 17831, 107, 4, 2, 97, 115, 17818, 17826, 112, 112, 114, 111, 120, 59, 1, 8776, 105, 109, 59, 1, 8764, 115, 112, 59, 1, 8201, 4, 2, 97, 115, 17842, 17846, 112, 59, 1, 8776, 105, 109, 59, 1, 8764, 114, 110, 5, 254, 1, 59, 17858, 1, 254, 4, 3, 108, 109, 110, 17868, 17873, 17901, 100, 101, 59, 1, 732, 101, 115, 5, 215, 3, 59, 98, 100, 17884, 17886, 17898, 1, 215, 4, 2, 59, 97, 17892, 17894, 1, 8864, 114, 59, 1, 10801, 59, 1, 10800, 116, 59, 1, 8749, 4, 3, 101, 112, 115, 17913, 17917, 17953, 97, 59, 1, 10536, 4, 4, 59, 98, 99, 102, 17927, 17929, 17934, 17939, 1, 8868, 111, 116, 59, 1, 9014, 105, 114, 59, 1, 10993, 4, 2, 59, 111, 17945, 17948, 3, 55349, 56677, 114, 107, 59, 1, 10970, 97, 59, 1, 10537, 114, 105, 109, 101, 59, 1, 8244, 4, 3, 97, 105, 112, 17972, 17977, 18082, 100, 101, 59, 1, 8482, 4, 7, 97, 100, 101, 109, 112, 115, 116, 17993, 18051, 18056, 18059, 18066, 18072, 18076, 110, 103, 108, 101, 4, 5, 59, 100, 108, 113, 114, 18009, 18011, 18017, 18032, 18035, 1, 9653, 111, 119, 110, 59, 1, 9663, 101, 102, 116, 4, 2, 59, 101, 18026, 18028, 1, 9667, 113, 59, 1, 8884, 59, 1, 8796, 105, 103, 104, 116, 4, 2, 59, 101, 18045, 18047, 1, 9657, 113, 59, 1, 8885, 111, 116, 59, 1, 9708, 59, 1, 8796, 105, 110, 117, 115, 59, 1, 10810, 108, 117, 115, 59, 1, 10809, 98, 59, 1, 10701, 105, 109, 101, 59, 1, 10811, 101, 122, 105, 117, 109, 59, 1, 9186, 4, 3, 99, 104, 116, 18098, 18111, 18116, 4, 2, 114, 121, 18104, 18108, 59, 3, 55349, 56521, 59, 1, 1094, 99, 121, 59, 1, 1115, 114, 111, 107, 59, 1, 359, 4, 2, 105, 111, 18128, 18133, 120, 116, 59, 1, 8812, 104, 101, 97, 100, 4, 2, 108, 114, 18143, 18154, 101, 102, 116, 97, 114, 114, 111, 119, 59, 1, 8606, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8608, 4, 18, 65, 72, 97, 98, 99, 100, 102, 103, 104, 108, 109, 111, 112, 114, 115, 116, 117, 119, 18204, 18209, 18214, 18234, 18250, 18268, 18292, 18308, 18319, 18343, 18379, 18397, 18413, 18504, 18547, 18553, 18584, 18603, 114, 114, 59, 1, 8657, 97, 114, 59, 1, 10595, 4, 2, 99, 114, 18220, 18230, 117, 116, 101, 5, 250, 1, 59, 18228, 1, 250, 114, 59, 1, 8593, 114, 4, 2, 99, 101, 18241, 18245, 121, 59, 1, 1118, 118, 101, 59, 1, 365, 4, 2, 105, 121, 18256, 18265, 114, 99, 5, 251, 1, 59, 18263, 1, 251, 59, 1, 1091, 4, 3, 97, 98, 104, 18276, 18281, 18287, 114, 114, 59, 1, 8645, 108, 97, 99, 59, 1, 369, 97, 114, 59, 1, 10606, 4, 2, 105, 114, 18298, 18304, 115, 104, 116, 59, 1, 10622, 59, 3, 55349, 56626, 114, 97, 118, 101, 5, 249, 1, 59, 18317, 1, 249, 4, 2, 97, 98, 18325, 18338, 114, 4, 2, 108, 114, 18332, 18335, 59, 1, 8639, 59, 1, 8638, 108, 107, 59, 1, 9600, 4, 2, 99, 116, 18349, 18374, 4, 2, 111, 114, 18355, 18369, 114, 110, 4, 2, 59, 101, 18363, 18365, 1, 8988, 114, 59, 1, 8988, 111, 112, 59, 1, 8975, 114, 105, 59, 1, 9720, 4, 2, 97, 108, 18385, 18390, 99, 114, 59, 1, 363, 5, 168, 1, 59, 18395, 1, 168, 4, 2, 103, 112, 18403, 18408, 111, 110, 59, 1, 371, 102, 59, 3, 55349, 56678, 4, 6, 97, 100, 104, 108, 115, 117, 18427, 18434, 18445, 18470, 18475, 18494, 114, 114, 111, 119, 59, 1, 8593, 111, 119, 110, 97, 114, 114, 111, 119, 59, 1, 8597, 97, 114, 112, 111, 111, 110, 4, 2, 108, 114, 18457, 18463, 101, 102, 116, 59, 1, 8639, 105, 103, 104, 116, 59, 1, 8638, 117, 115, 59, 1, 8846, 105, 4, 3, 59, 104, 108, 18484, 18486, 18489, 1, 965, 59, 1, 978, 111, 110, 59, 1, 965, 112, 97, 114, 114, 111, 119, 115, 59, 1, 8648, 4, 3, 99, 105, 116, 18512, 18537, 18542, 4, 2, 111, 114, 18518, 18532, 114, 110, 4, 2, 59, 101, 18526, 18528, 1, 8989, 114, 59, 1, 8989, 111, 112, 59, 1, 8974, 110, 103, 59, 1, 367, 114, 105, 59, 1, 9721, 99, 114, 59, 3, 55349, 56522, 4, 3, 100, 105, 114, 18561, 18566, 18572, 111, 116, 59, 1, 8944, 108, 100, 101, 59, 1, 361, 105, 4, 2, 59, 102, 18579, 18581, 1, 9653, 59, 1, 9652, 4, 2, 97, 109, 18590, 18595, 114, 114, 59, 1, 8648, 108, 5, 252, 1, 59, 18601, 1, 252, 97, 110, 103, 108, 101, 59, 1, 10663, 4, 15, 65, 66, 68, 97, 99, 100, 101, 102, 108, 110, 111, 112, 114, 115, 122, 18643, 18648, 18661, 18667, 18847, 18851, 18857, 18904, 18909, 18915, 18931, 18937, 18943, 18949, 18996, 114, 114, 59, 1, 8661, 97, 114, 4, 2, 59, 118, 18656, 18658, 1, 10984, 59, 1, 10985, 97, 115, 104, 59, 1, 8872, 4, 2, 110, 114, 18673, 18679, 103, 114, 116, 59, 1, 10652, 4, 7, 101, 107, 110, 112, 114, 115, 116, 18695, 18704, 18711, 18720, 18742, 18754, 18810, 112, 115, 105, 108, 111, 110, 59, 1, 1013, 97, 112, 112, 97, 59, 1, 1008, 111, 116, 104, 105, 110, 103, 59, 1, 8709, 4, 3, 104, 105, 114, 18728, 18732, 18735, 105, 59, 1, 981, 59, 1, 982, 111, 112, 116, 111, 59, 1, 8733, 4, 2, 59, 104, 18748, 18750, 1, 8597, 111, 59, 1, 1009, 4, 2, 105, 117, 18760, 18766, 103, 109, 97, 59, 1, 962, 4, 2, 98, 112, 18772, 18791, 115, 101, 116, 110, 101, 113, 4, 2, 59, 113, 18784, 18787, 3, 8842, 65024, 59, 3, 10955, 65024, 115, 101, 116, 110, 101, 113, 4, 2, 59, 113, 18803, 18806, 3, 8843, 65024, 59, 3, 10956, 65024, 4, 2, 104, 114, 18816, 18822, 101, 116, 97, 59, 1, 977, 105, 97, 110, 103, 108, 101, 4, 2, 108, 114, 18834, 18840, 101, 102, 116, 59, 1, 8882, 105, 103, 104, 116, 59, 1, 8883, 121, 59, 1, 1074, 97, 115, 104, 59, 1, 8866, 4, 3, 101, 108, 114, 18865, 18884, 18890, 4, 3, 59, 98, 101, 18873, 18875, 18880, 1, 8744, 97, 114, 59, 1, 8891, 113, 59, 1, 8794, 108, 105, 112, 59, 1, 8942, 4, 2, 98, 116, 18896, 18901, 97, 114, 59, 1, 124, 59, 1, 124, 114, 59, 3, 55349, 56627, 116, 114, 105, 59, 1, 8882, 115, 117, 4, 2, 98, 112, 18923, 18927, 59, 3, 8834, 8402, 59, 3, 8835, 8402, 112, 102, 59, 3, 55349, 56679, 114, 111, 112, 59, 1, 8733, 116, 114, 105, 59, 1, 8883, 4, 2, 99, 117, 18955, 18960, 114, 59, 3, 55349, 56523, 4, 2, 98, 112, 18966, 18981, 110, 4, 2, 69, 101, 18973, 18977, 59, 3, 10955, 65024, 59, 3, 8842, 65024, 110, 4, 2, 69, 101, 18988, 18992, 59, 3, 10956, 65024, 59, 3, 8843, 65024, 105, 103, 122, 97, 103, 59, 1, 10650, 4, 7, 99, 101, 102, 111, 112, 114, 115, 19020, 19026, 19061, 19066, 19072, 19075, 19089, 105, 114, 99, 59, 1, 373, 4, 2, 100, 105, 19032, 19055, 4, 2, 98, 103, 19038, 19043, 97, 114, 59, 1, 10847, 101, 4, 2, 59, 113, 19050, 19052, 1, 8743, 59, 1, 8793, 101, 114, 112, 59, 1, 8472, 114, 59, 3, 55349, 56628, 112, 102, 59, 3, 55349, 56680, 59, 1, 8472, 4, 2, 59, 101, 19081, 19083, 1, 8768, 97, 116, 104, 59, 1, 8768, 99, 114, 59, 3, 55349, 56524, 4, 14, 99, 100, 102, 104, 105, 108, 109, 110, 111, 114, 115, 117, 118, 119, 19125, 19146, 19152, 19157, 19173, 19176, 19192, 19197, 19202, 19236, 19252, 19269, 19286, 19291, 4, 3, 97, 105, 117, 19133, 19137, 19142, 112, 59, 1, 8898, 114, 99, 59, 1, 9711, 112, 59, 1, 8899, 116, 114, 105, 59, 1, 9661, 114, 59, 3, 55349, 56629, 4, 2, 65, 97, 19163, 19168, 114, 114, 59, 1, 10234, 114, 114, 59, 1, 10231, 59, 1, 958, 4, 2, 65, 97, 19182, 19187, 114, 114, 59, 1, 10232, 114, 114, 59, 1, 10229, 97, 112, 59, 1, 10236, 105, 115, 59, 1, 8955, 4, 3, 100, 112, 116, 19210, 19215, 19230, 111, 116, 59, 1, 10752, 4, 2, 102, 108, 19221, 19225, 59, 3, 55349, 56681, 117, 115, 59, 1, 10753, 105, 109, 101, 59, 1, 10754, 4, 2, 65, 97, 19242, 19247, 114, 114, 59, 1, 10233, 114, 114, 59, 1, 10230, 4, 2, 99, 113, 19258, 19263, 114, 59, 3, 55349, 56525, 99, 117, 112, 59, 1, 10758, 4, 2, 112, 116, 19275, 19281, 108, 117, 115, 59, 1, 10756, 114, 105, 59, 1, 9651, 101, 101, 59, 1, 8897, 101, 100, 103, 101, 59, 1, 8896, 4, 8, 97, 99, 101, 102, 105, 111, 115, 117, 19316, 19335, 19349, 19357, 19362, 19367, 19373, 19379, 99, 4, 2, 117, 121, 19323, 19332, 116, 101, 5, 253, 1, 59, 19330, 1, 253, 59, 1, 1103, 4, 2, 105, 121, 19341, 19346, 114, 99, 59, 1, 375, 59, 1, 1099, 110, 5, 165, 1, 59, 19355, 1, 165, 114, 59, 3, 55349, 56630, 99, 121, 59, 1, 1111, 112, 102, 59, 3, 55349, 56682, 99, 114, 59, 3, 55349, 56526, 4, 2, 99, 109, 19385, 19389, 121, 59, 1, 1102, 108, 5, 255, 1, 59, 19395, 1, 255, 4, 10, 97, 99, 100, 101, 102, 104, 105, 111, 115, 119, 19419, 19426, 19441, 19446, 19462, 19467, 19472, 19480, 19486, 19492, 99, 117, 116, 101, 59, 1, 378, 4, 2, 97, 121, 19432, 19438, 114, 111, 110, 59, 1, 382, 59, 1, 1079, 111, 116, 59, 1, 380, 4, 2, 101, 116, 19452, 19458, 116, 114, 102, 59, 1, 8488, 97, 59, 1, 950, 114, 59, 3, 55349, 56631, 99, 121, 59, 1, 1078, 103, 114, 97, 114, 114, 59, 1, 8669, 112, 102, 59, 3, 55349, 56683, 99, 114, 59, 3, 55349, 56527, 4, 2, 106, 110, 19498, 19501, 59, 1, 8205, 106, 59, 1, 8204]);
  }
});

// ../../node_modules/parse5/lib/tokenizer/index.js
var require_tokenizer = __commonJS({
  "../../node_modules/parse5/lib/tokenizer/index.js"(exports2, module2) {
    "use strict";
    var Preprocessor2 = require_preprocessor();
    var unicode = require_unicode();
    var neTree = require_named_entity_data();
    var ERR2 = require_error_codes();
    var $2 = unicode.CODE_POINTS;
    var $$ = unicode.CODE_POINT_SEQUENCES;
    var C1_CONTROLS_REFERENCE_REPLACEMENTS2 = {
      128: 8364,
      130: 8218,
      131: 402,
      132: 8222,
      133: 8230,
      134: 8224,
      135: 8225,
      136: 710,
      137: 8240,
      138: 352,
      139: 8249,
      140: 338,
      142: 381,
      145: 8216,
      146: 8217,
      147: 8220,
      148: 8221,
      149: 8226,
      150: 8211,
      151: 8212,
      152: 732,
      153: 8482,
      154: 353,
      155: 8250,
      156: 339,
      158: 382,
      159: 376
    };
    var HAS_DATA_FLAG = 1 << 0;
    var DATA_DUPLET_FLAG = 1 << 1;
    var HAS_BRANCHES_FLAG = 1 << 2;
    var MAX_BRANCH_MARKER_VALUE = HAS_DATA_FLAG | DATA_DUPLET_FLAG | HAS_BRANCHES_FLAG;
    var DATA_STATE = "DATA_STATE";
    var RCDATA_STATE = "RCDATA_STATE";
    var RAWTEXT_STATE = "RAWTEXT_STATE";
    var SCRIPT_DATA_STATE = "SCRIPT_DATA_STATE";
    var PLAINTEXT_STATE = "PLAINTEXT_STATE";
    var TAG_OPEN_STATE = "TAG_OPEN_STATE";
    var END_TAG_OPEN_STATE = "END_TAG_OPEN_STATE";
    var TAG_NAME_STATE = "TAG_NAME_STATE";
    var RCDATA_LESS_THAN_SIGN_STATE = "RCDATA_LESS_THAN_SIGN_STATE";
    var RCDATA_END_TAG_OPEN_STATE = "RCDATA_END_TAG_OPEN_STATE";
    var RCDATA_END_TAG_NAME_STATE = "RCDATA_END_TAG_NAME_STATE";
    var RAWTEXT_LESS_THAN_SIGN_STATE = "RAWTEXT_LESS_THAN_SIGN_STATE";
    var RAWTEXT_END_TAG_OPEN_STATE = "RAWTEXT_END_TAG_OPEN_STATE";
    var RAWTEXT_END_TAG_NAME_STATE = "RAWTEXT_END_TAG_NAME_STATE";
    var SCRIPT_DATA_LESS_THAN_SIGN_STATE = "SCRIPT_DATA_LESS_THAN_SIGN_STATE";
    var SCRIPT_DATA_END_TAG_OPEN_STATE = "SCRIPT_DATA_END_TAG_OPEN_STATE";
    var SCRIPT_DATA_END_TAG_NAME_STATE = "SCRIPT_DATA_END_TAG_NAME_STATE";
    var SCRIPT_DATA_ESCAPE_START_STATE = "SCRIPT_DATA_ESCAPE_START_STATE";
    var SCRIPT_DATA_ESCAPE_START_DASH_STATE = "SCRIPT_DATA_ESCAPE_START_DASH_STATE";
    var SCRIPT_DATA_ESCAPED_STATE = "SCRIPT_DATA_ESCAPED_STATE";
    var SCRIPT_DATA_ESCAPED_DASH_STATE = "SCRIPT_DATA_ESCAPED_DASH_STATE";
    var SCRIPT_DATA_ESCAPED_DASH_DASH_STATE = "SCRIPT_DATA_ESCAPED_DASH_DASH_STATE";
    var SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE = "SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE";
    var SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE = "SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE";
    var SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE = "SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE";
    var SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE = "SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE";
    var SCRIPT_DATA_DOUBLE_ESCAPED_STATE = "SCRIPT_DATA_DOUBLE_ESCAPED_STATE";
    var SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE";
    var SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE";
    var SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE = "SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE";
    var SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE = "SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE";
    var BEFORE_ATTRIBUTE_NAME_STATE = "BEFORE_ATTRIBUTE_NAME_STATE";
    var ATTRIBUTE_NAME_STATE = "ATTRIBUTE_NAME_STATE";
    var AFTER_ATTRIBUTE_NAME_STATE = "AFTER_ATTRIBUTE_NAME_STATE";
    var BEFORE_ATTRIBUTE_VALUE_STATE = "BEFORE_ATTRIBUTE_VALUE_STATE";
    var ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE = "ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE";
    var ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE = "ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE";
    var ATTRIBUTE_VALUE_UNQUOTED_STATE = "ATTRIBUTE_VALUE_UNQUOTED_STATE";
    var AFTER_ATTRIBUTE_VALUE_QUOTED_STATE = "AFTER_ATTRIBUTE_VALUE_QUOTED_STATE";
    var SELF_CLOSING_START_TAG_STATE = "SELF_CLOSING_START_TAG_STATE";
    var BOGUS_COMMENT_STATE = "BOGUS_COMMENT_STATE";
    var MARKUP_DECLARATION_OPEN_STATE = "MARKUP_DECLARATION_OPEN_STATE";
    var COMMENT_START_STATE = "COMMENT_START_STATE";
    var COMMENT_START_DASH_STATE = "COMMENT_START_DASH_STATE";
    var COMMENT_STATE = "COMMENT_STATE";
    var COMMENT_LESS_THAN_SIGN_STATE = "COMMENT_LESS_THAN_SIGN_STATE";
    var COMMENT_LESS_THAN_SIGN_BANG_STATE = "COMMENT_LESS_THAN_SIGN_BANG_STATE";
    var COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE = "COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE";
    var COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE = "COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE";
    var COMMENT_END_DASH_STATE = "COMMENT_END_DASH_STATE";
    var COMMENT_END_STATE = "COMMENT_END_STATE";
    var COMMENT_END_BANG_STATE = "COMMENT_END_BANG_STATE";
    var DOCTYPE_STATE = "DOCTYPE_STATE";
    var BEFORE_DOCTYPE_NAME_STATE = "BEFORE_DOCTYPE_NAME_STATE";
    var DOCTYPE_NAME_STATE = "DOCTYPE_NAME_STATE";
    var AFTER_DOCTYPE_NAME_STATE = "AFTER_DOCTYPE_NAME_STATE";
    var AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE = "AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE";
    var BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE = "BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE";
    var DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE = "DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE";
    var DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE = "DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE";
    var AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE = "AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE";
    var BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE = "BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE";
    var AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE = "AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE";
    var BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE = "BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE";
    var DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE = "DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE";
    var DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE = "DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE";
    var AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE = "AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE";
    var BOGUS_DOCTYPE_STATE = "BOGUS_DOCTYPE_STATE";
    var CDATA_SECTION_STATE = "CDATA_SECTION_STATE";
    var CDATA_SECTION_BRACKET_STATE = "CDATA_SECTION_BRACKET_STATE";
    var CDATA_SECTION_END_STATE = "CDATA_SECTION_END_STATE";
    var CHARACTER_REFERENCE_STATE = "CHARACTER_REFERENCE_STATE";
    var NAMED_CHARACTER_REFERENCE_STATE = "NAMED_CHARACTER_REFERENCE_STATE";
    var AMBIGUOUS_AMPERSAND_STATE = "AMBIGUOS_AMPERSAND_STATE";
    var NUMERIC_CHARACTER_REFERENCE_STATE = "NUMERIC_CHARACTER_REFERENCE_STATE";
    var HEXADEMICAL_CHARACTER_REFERENCE_START_STATE = "HEXADEMICAL_CHARACTER_REFERENCE_START_STATE";
    var DECIMAL_CHARACTER_REFERENCE_START_STATE = "DECIMAL_CHARACTER_REFERENCE_START_STATE";
    var HEXADEMICAL_CHARACTER_REFERENCE_STATE = "HEXADEMICAL_CHARACTER_REFERENCE_STATE";
    var DECIMAL_CHARACTER_REFERENCE_STATE = "DECIMAL_CHARACTER_REFERENCE_STATE";
    var NUMERIC_CHARACTER_REFERENCE_END_STATE = "NUMERIC_CHARACTER_REFERENCE_END_STATE";
    function isWhitespace3(cp) {
      return cp === $2.SPACE || cp === $2.LINE_FEED || cp === $2.TABULATION || cp === $2.FORM_FEED;
    }
    function isAsciiDigit2(cp) {
      return cp >= $2.DIGIT_0 && cp <= $2.DIGIT_9;
    }
    function isAsciiUpper2(cp) {
      return cp >= $2.LATIN_CAPITAL_A && cp <= $2.LATIN_CAPITAL_Z;
    }
    function isAsciiLower2(cp) {
      return cp >= $2.LATIN_SMALL_A && cp <= $2.LATIN_SMALL_Z;
    }
    function isAsciiLetter2(cp) {
      return isAsciiLower2(cp) || isAsciiUpper2(cp);
    }
    function isAsciiAlphaNumeric3(cp) {
      return isAsciiLetter2(cp) || isAsciiDigit2(cp);
    }
    function isAsciiUpperHexDigit2(cp) {
      return cp >= $2.LATIN_CAPITAL_A && cp <= $2.LATIN_CAPITAL_F;
    }
    function isAsciiLowerHexDigit2(cp) {
      return cp >= $2.LATIN_SMALL_A && cp <= $2.LATIN_SMALL_F;
    }
    function isAsciiHexDigit2(cp) {
      return isAsciiDigit2(cp) || isAsciiUpperHexDigit2(cp) || isAsciiLowerHexDigit2(cp);
    }
    function toAsciiLowerCodePoint(cp) {
      return cp + 32;
    }
    function toChar(cp) {
      if (cp <= 65535) {
        return String.fromCharCode(cp);
      }
      cp -= 65536;
      return String.fromCharCode(cp >>> 10 & 1023 | 55296) + String.fromCharCode(56320 | cp & 1023);
    }
    function toAsciiLowerChar(cp) {
      return String.fromCharCode(toAsciiLowerCodePoint(cp));
    }
    function findNamedEntityTreeBranch(nodeIx, cp) {
      const branchCount = neTree[++nodeIx];
      let lo = ++nodeIx;
      let hi = lo + branchCount - 1;
      while (lo <= hi) {
        const mid = lo + hi >>> 1;
        const midCp = neTree[mid];
        if (midCp < cp) {
          lo = mid + 1;
        } else if (midCp > cp) {
          hi = mid - 1;
        } else {
          return neTree[mid + branchCount];
        }
      }
      return -1;
    }
    var Tokenizer2 = class _Tokenizer {
      constructor() {
        this.preprocessor = new Preprocessor2();
        this.tokenQueue = [];
        this.allowCDATA = false;
        this.state = DATA_STATE;
        this.returnState = "";
        this.charRefCode = -1;
        this.tempBuff = [];
        this.lastStartTagName = "";
        this.consumedAfterSnapshot = -1;
        this.active = false;
        this.currentCharacterToken = null;
        this.currentToken = null;
        this.currentAttr = null;
      }
      //Errors
      _err() {
      }
      _errOnNextCodePoint(err) {
        this._consume();
        this._err(err);
        this._unconsume();
      }
      //API
      getNextToken() {
        while (!this.tokenQueue.length && this.active) {
          this.consumedAfterSnapshot = 0;
          const cp = this._consume();
          if (!this._ensureHibernation()) {
            this[this.state](cp);
          }
        }
        return this.tokenQueue.shift();
      }
      write(chunk, isLastChunk) {
        this.active = true;
        this.preprocessor.write(chunk, isLastChunk);
      }
      insertHtmlAtCurrentPos(chunk) {
        this.active = true;
        this.preprocessor.insertHtmlAtCurrentPos(chunk);
      }
      //Hibernation
      _ensureHibernation() {
        if (this.preprocessor.endOfChunkHit) {
          for (; this.consumedAfterSnapshot > 0; this.consumedAfterSnapshot--) {
            this.preprocessor.retreat();
          }
          this.active = false;
          this.tokenQueue.push({ type: _Tokenizer.HIBERNATION_TOKEN });
          return true;
        }
        return false;
      }
      //Consumption
      _consume() {
        this.consumedAfterSnapshot++;
        return this.preprocessor.advance();
      }
      _unconsume() {
        this.consumedAfterSnapshot--;
        this.preprocessor.retreat();
      }
      _reconsumeInState(state) {
        this.state = state;
        this._unconsume();
      }
      _consumeSequenceIfMatch(pattern, startCp, caseSensitive) {
        let consumedCount = 0;
        let isMatch = true;
        const patternLength = pattern.length;
        let patternPos = 0;
        let cp = startCp;
        let patternCp = void 0;
        for (; patternPos < patternLength; patternPos++) {
          if (patternPos > 0) {
            cp = this._consume();
            consumedCount++;
          }
          if (cp === $2.EOF) {
            isMatch = false;
            break;
          }
          patternCp = pattern[patternPos];
          if (cp !== patternCp && (caseSensitive || cp !== toAsciiLowerCodePoint(patternCp))) {
            isMatch = false;
            break;
          }
        }
        if (!isMatch) {
          while (consumedCount--) {
            this._unconsume();
          }
        }
        return isMatch;
      }
      //Temp buffer
      _isTempBufferEqualToScriptString() {
        if (this.tempBuff.length !== $$.SCRIPT_STRING.length) {
          return false;
        }
        for (let i2 = 0; i2 < this.tempBuff.length; i2++) {
          if (this.tempBuff[i2] !== $$.SCRIPT_STRING[i2]) {
            return false;
          }
        }
        return true;
      }
      //Token creation
      _createStartTagToken() {
        this.currentToken = {
          type: _Tokenizer.START_TAG_TOKEN,
          tagName: "",
          selfClosing: false,
          ackSelfClosing: false,
          attrs: []
        };
      }
      _createEndTagToken() {
        this.currentToken = {
          type: _Tokenizer.END_TAG_TOKEN,
          tagName: "",
          selfClosing: false,
          attrs: []
        };
      }
      _createCommentToken() {
        this.currentToken = {
          type: _Tokenizer.COMMENT_TOKEN,
          data: ""
        };
      }
      _createDoctypeToken(initialName) {
        this.currentToken = {
          type: _Tokenizer.DOCTYPE_TOKEN,
          name: initialName,
          forceQuirks: false,
          publicId: null,
          systemId: null
        };
      }
      _createCharacterToken(type2, ch) {
        this.currentCharacterToken = {
          type: type2,
          chars: ch
        };
      }
      _createEOFToken() {
        this.currentToken = { type: _Tokenizer.EOF_TOKEN };
      }
      //Tag attributes
      _createAttr(attrNameFirstCh) {
        this.currentAttr = {
          name: attrNameFirstCh,
          value: ""
        };
      }
      _leaveAttrName(toState) {
        if (_Tokenizer.getTokenAttr(this.currentToken, this.currentAttr.name) === null) {
          this.currentToken.attrs.push(this.currentAttr);
        } else {
          this._err(ERR2.duplicateAttribute);
        }
        this.state = toState;
      }
      _leaveAttrValue(toState) {
        this.state = toState;
      }
      //Token emission
      _emitCurrentToken() {
        this._emitCurrentCharacterToken();
        const ct = this.currentToken;
        this.currentToken = null;
        if (ct.type === _Tokenizer.START_TAG_TOKEN) {
          this.lastStartTagName = ct.tagName;
        } else if (ct.type === _Tokenizer.END_TAG_TOKEN) {
          if (ct.attrs.length > 0) {
            this._err(ERR2.endTagWithAttributes);
          }
          if (ct.selfClosing) {
            this._err(ERR2.endTagWithTrailingSolidus);
          }
        }
        this.tokenQueue.push(ct);
      }
      _emitCurrentCharacterToken() {
        if (this.currentCharacterToken) {
          this.tokenQueue.push(this.currentCharacterToken);
          this.currentCharacterToken = null;
        }
      }
      _emitEOFToken() {
        this._createEOFToken();
        this._emitCurrentToken();
      }
      //Characters emission
      //OPTIMIZATION: specification uses only one type of character tokens (one token per character).
      //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.
      //If we have a sequence of characters that belong to the same group, parser can process it
      //as a single solid character token.
      //So, there are 3 types of character tokens in parse5:
      //1)NULL_CHARACTER_TOKEN - \u0000-character sequences (e.g. '\u0000\u0000\u0000')
      //2)WHITESPACE_CHARACTER_TOKEN - any whitespace/new-line character sequences (e.g. '\n  \r\t   \f')
      //3)CHARACTER_TOKEN - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')
      _appendCharToCurrentCharacterToken(type2, ch) {
        if (this.currentCharacterToken && this.currentCharacterToken.type !== type2) {
          this._emitCurrentCharacterToken();
        }
        if (this.currentCharacterToken) {
          this.currentCharacterToken.chars += ch;
        } else {
          this._createCharacterToken(type2, ch);
        }
      }
      _emitCodePoint(cp) {
        let type2 = _Tokenizer.CHARACTER_TOKEN;
        if (isWhitespace3(cp)) {
          type2 = _Tokenizer.WHITESPACE_CHARACTER_TOKEN;
        } else if (cp === $2.NULL) {
          type2 = _Tokenizer.NULL_CHARACTER_TOKEN;
        }
        this._appendCharToCurrentCharacterToken(type2, toChar(cp));
      }
      _emitSeveralCodePoints(codePoints) {
        for (let i2 = 0; i2 < codePoints.length; i2++) {
          this._emitCodePoint(codePoints[i2]);
        }
      }
      //NOTE: used then we emit character explicitly. This is always a non-whitespace and a non-null character.
      //So we can avoid additional checks here.
      _emitChars(ch) {
        this._appendCharToCurrentCharacterToken(_Tokenizer.CHARACTER_TOKEN, ch);
      }
      // Character reference helpers
      _matchNamedCharacterReference(startCp) {
        let result = null;
        let excess = 1;
        let i2 = findNamedEntityTreeBranch(0, startCp);
        this.tempBuff.push(startCp);
        while (i2 > -1) {
          const current2 = neTree[i2];
          const inNode = current2 < MAX_BRANCH_MARKER_VALUE;
          const nodeWithData = inNode && current2 & HAS_DATA_FLAG;
          if (nodeWithData) {
            result = current2 & DATA_DUPLET_FLAG ? [neTree[++i2], neTree[++i2]] : [neTree[++i2]];
            excess = 0;
          }
          const cp = this._consume();
          this.tempBuff.push(cp);
          excess++;
          if (cp === $2.EOF) {
            break;
          }
          if (inNode) {
            i2 = current2 & HAS_BRANCHES_FLAG ? findNamedEntityTreeBranch(i2, cp) : -1;
          } else {
            i2 = cp === current2 ? ++i2 : -1;
          }
        }
        while (excess--) {
          this.tempBuff.pop();
          this._unconsume();
        }
        return result;
      }
      _isCharacterReferenceInAttribute() {
        return this.returnState === ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE || this.returnState === ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE || this.returnState === ATTRIBUTE_VALUE_UNQUOTED_STATE;
      }
      _isCharacterReferenceAttributeQuirk(withSemicolon) {
        if (!withSemicolon && this._isCharacterReferenceInAttribute()) {
          const nextCp = this._consume();
          this._unconsume();
          return nextCp === $2.EQUALS_SIGN || isAsciiAlphaNumeric3(nextCp);
        }
        return false;
      }
      _flushCodePointsConsumedAsCharacterReference() {
        if (this._isCharacterReferenceInAttribute()) {
          for (let i2 = 0; i2 < this.tempBuff.length; i2++) {
            this.currentAttr.value += toChar(this.tempBuff[i2]);
          }
        } else {
          this._emitSeveralCodePoints(this.tempBuff);
        }
        this.tempBuff = [];
      }
      // State machine
      // Data state
      //------------------------------------------------------------------
      [DATA_STATE](cp) {
        this.preprocessor.dropParsedChunk();
        if (cp === $2.LESS_THAN_SIGN) {
          this.state = TAG_OPEN_STATE;
        } else if (cp === $2.AMPERSAND) {
          this.returnState = DATA_STATE;
          this.state = CHARACTER_REFERENCE_STATE;
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this._emitCodePoint(cp);
        } else if (cp === $2.EOF) {
          this._emitEOFToken();
        } else {
          this._emitCodePoint(cp);
        }
      }
      //  RCDATA state
      //------------------------------------------------------------------
      [RCDATA_STATE](cp) {
        this.preprocessor.dropParsedChunk();
        if (cp === $2.AMPERSAND) {
          this.returnState = RCDATA_STATE;
          this.state = CHARACTER_REFERENCE_STATE;
        } else if (cp === $2.LESS_THAN_SIGN) {
          this.state = RCDATA_LESS_THAN_SIGN_STATE;
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this._emitChars(unicode.REPLACEMENT_CHARACTER);
        } else if (cp === $2.EOF) {
          this._emitEOFToken();
        } else {
          this._emitCodePoint(cp);
        }
      }
      // RAWTEXT state
      //------------------------------------------------------------------
      [RAWTEXT_STATE](cp) {
        this.preprocessor.dropParsedChunk();
        if (cp === $2.LESS_THAN_SIGN) {
          this.state = RAWTEXT_LESS_THAN_SIGN_STATE;
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this._emitChars(unicode.REPLACEMENT_CHARACTER);
        } else if (cp === $2.EOF) {
          this._emitEOFToken();
        } else {
          this._emitCodePoint(cp);
        }
      }
      // Script data state
      //------------------------------------------------------------------
      [SCRIPT_DATA_STATE](cp) {
        this.preprocessor.dropParsedChunk();
        if (cp === $2.LESS_THAN_SIGN) {
          this.state = SCRIPT_DATA_LESS_THAN_SIGN_STATE;
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this._emitChars(unicode.REPLACEMENT_CHARACTER);
        } else if (cp === $2.EOF) {
          this._emitEOFToken();
        } else {
          this._emitCodePoint(cp);
        }
      }
      // PLAINTEXT state
      //------------------------------------------------------------------
      [PLAINTEXT_STATE](cp) {
        this.preprocessor.dropParsedChunk();
        if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this._emitChars(unicode.REPLACEMENT_CHARACTER);
        } else if (cp === $2.EOF) {
          this._emitEOFToken();
        } else {
          this._emitCodePoint(cp);
        }
      }
      // Tag open state
      //------------------------------------------------------------------
      [TAG_OPEN_STATE](cp) {
        if (cp === $2.EXCLAMATION_MARK) {
          this.state = MARKUP_DECLARATION_OPEN_STATE;
        } else if (cp === $2.SOLIDUS) {
          this.state = END_TAG_OPEN_STATE;
        } else if (isAsciiLetter2(cp)) {
          this._createStartTagToken();
          this._reconsumeInState(TAG_NAME_STATE);
        } else if (cp === $2.QUESTION_MARK) {
          this._err(ERR2.unexpectedQuestionMarkInsteadOfTagName);
          this._createCommentToken();
          this._reconsumeInState(BOGUS_COMMENT_STATE);
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofBeforeTagName);
          this._emitChars("<");
          this._emitEOFToken();
        } else {
          this._err(ERR2.invalidFirstCharacterOfTagName);
          this._emitChars("<");
          this._reconsumeInState(DATA_STATE);
        }
      }
      // End tag open state
      //------------------------------------------------------------------
      [END_TAG_OPEN_STATE](cp) {
        if (isAsciiLetter2(cp)) {
          this._createEndTagToken();
          this._reconsumeInState(TAG_NAME_STATE);
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._err(ERR2.missingEndTagName);
          this.state = DATA_STATE;
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofBeforeTagName);
          this._emitChars("</");
          this._emitEOFToken();
        } else {
          this._err(ERR2.invalidFirstCharacterOfTagName);
          this._createCommentToken();
          this._reconsumeInState(BOGUS_COMMENT_STATE);
        }
      }
      // Tag name state
      //------------------------------------------------------------------
      [TAG_NAME_STATE](cp) {
        if (isWhitespace3(cp)) {
          this.state = BEFORE_ATTRIBUTE_NAME_STATE;
        } else if (cp === $2.SOLIDUS) {
          this.state = SELF_CLOSING_START_TAG_STATE;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this.state = DATA_STATE;
          this._emitCurrentToken();
        } else if (isAsciiUpper2(cp)) {
          this.currentToken.tagName += toAsciiLowerChar(cp);
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this.currentToken.tagName += unicode.REPLACEMENT_CHARACTER;
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInTag);
          this._emitEOFToken();
        } else {
          this.currentToken.tagName += toChar(cp);
        }
      }
      // RCDATA less-than sign state
      //------------------------------------------------------------------
      [RCDATA_LESS_THAN_SIGN_STATE](cp) {
        if (cp === $2.SOLIDUS) {
          this.tempBuff = [];
          this.state = RCDATA_END_TAG_OPEN_STATE;
        } else {
          this._emitChars("<");
          this._reconsumeInState(RCDATA_STATE);
        }
      }
      // RCDATA end tag open state
      //------------------------------------------------------------------
      [RCDATA_END_TAG_OPEN_STATE](cp) {
        if (isAsciiLetter2(cp)) {
          this._createEndTagToken();
          this._reconsumeInState(RCDATA_END_TAG_NAME_STATE);
        } else {
          this._emitChars("</");
          this._reconsumeInState(RCDATA_STATE);
        }
      }
      // RCDATA end tag name state
      //------------------------------------------------------------------
      [RCDATA_END_TAG_NAME_STATE](cp) {
        if (isAsciiUpper2(cp)) {
          this.currentToken.tagName += toAsciiLowerChar(cp);
          this.tempBuff.push(cp);
        } else if (isAsciiLower2(cp)) {
          this.currentToken.tagName += toChar(cp);
          this.tempBuff.push(cp);
        } else {
          if (this.lastStartTagName === this.currentToken.tagName) {
            if (isWhitespace3(cp)) {
              this.state = BEFORE_ATTRIBUTE_NAME_STATE;
              return;
            }
            if (cp === $2.SOLIDUS) {
              this.state = SELF_CLOSING_START_TAG_STATE;
              return;
            }
            if (cp === $2.GREATER_THAN_SIGN) {
              this.state = DATA_STATE;
              this._emitCurrentToken();
              return;
            }
          }
          this._emitChars("</");
          this._emitSeveralCodePoints(this.tempBuff);
          this._reconsumeInState(RCDATA_STATE);
        }
      }
      // RAWTEXT less-than sign state
      //------------------------------------------------------------------
      [RAWTEXT_LESS_THAN_SIGN_STATE](cp) {
        if (cp === $2.SOLIDUS) {
          this.tempBuff = [];
          this.state = RAWTEXT_END_TAG_OPEN_STATE;
        } else {
          this._emitChars("<");
          this._reconsumeInState(RAWTEXT_STATE);
        }
      }
      // RAWTEXT end tag open state
      //------------------------------------------------------------------
      [RAWTEXT_END_TAG_OPEN_STATE](cp) {
        if (isAsciiLetter2(cp)) {
          this._createEndTagToken();
          this._reconsumeInState(RAWTEXT_END_TAG_NAME_STATE);
        } else {
          this._emitChars("</");
          this._reconsumeInState(RAWTEXT_STATE);
        }
      }
      // RAWTEXT end tag name state
      //------------------------------------------------------------------
      [RAWTEXT_END_TAG_NAME_STATE](cp) {
        if (isAsciiUpper2(cp)) {
          this.currentToken.tagName += toAsciiLowerChar(cp);
          this.tempBuff.push(cp);
        } else if (isAsciiLower2(cp)) {
          this.currentToken.tagName += toChar(cp);
          this.tempBuff.push(cp);
        } else {
          if (this.lastStartTagName === this.currentToken.tagName) {
            if (isWhitespace3(cp)) {
              this.state = BEFORE_ATTRIBUTE_NAME_STATE;
              return;
            }
            if (cp === $2.SOLIDUS) {
              this.state = SELF_CLOSING_START_TAG_STATE;
              return;
            }
            if (cp === $2.GREATER_THAN_SIGN) {
              this._emitCurrentToken();
              this.state = DATA_STATE;
              return;
            }
          }
          this._emitChars("</");
          this._emitSeveralCodePoints(this.tempBuff);
          this._reconsumeInState(RAWTEXT_STATE);
        }
      }
      // Script data less-than sign state
      //------------------------------------------------------------------
      [SCRIPT_DATA_LESS_THAN_SIGN_STATE](cp) {
        if (cp === $2.SOLIDUS) {
          this.tempBuff = [];
          this.state = SCRIPT_DATA_END_TAG_OPEN_STATE;
        } else if (cp === $2.EXCLAMATION_MARK) {
          this.state = SCRIPT_DATA_ESCAPE_START_STATE;
          this._emitChars("<!");
        } else {
          this._emitChars("<");
          this._reconsumeInState(SCRIPT_DATA_STATE);
        }
      }
      // Script data end tag open state
      //------------------------------------------------------------------
      [SCRIPT_DATA_END_TAG_OPEN_STATE](cp) {
        if (isAsciiLetter2(cp)) {
          this._createEndTagToken();
          this._reconsumeInState(SCRIPT_DATA_END_TAG_NAME_STATE);
        } else {
          this._emitChars("</");
          this._reconsumeInState(SCRIPT_DATA_STATE);
        }
      }
      // Script data end tag name state
      //------------------------------------------------------------------
      [SCRIPT_DATA_END_TAG_NAME_STATE](cp) {
        if (isAsciiUpper2(cp)) {
          this.currentToken.tagName += toAsciiLowerChar(cp);
          this.tempBuff.push(cp);
        } else if (isAsciiLower2(cp)) {
          this.currentToken.tagName += toChar(cp);
          this.tempBuff.push(cp);
        } else {
          if (this.lastStartTagName === this.currentToken.tagName) {
            if (isWhitespace3(cp)) {
              this.state = BEFORE_ATTRIBUTE_NAME_STATE;
              return;
            } else if (cp === $2.SOLIDUS) {
              this.state = SELF_CLOSING_START_TAG_STATE;
              return;
            } else if (cp === $2.GREATER_THAN_SIGN) {
              this._emitCurrentToken();
              this.state = DATA_STATE;
              return;
            }
          }
          this._emitChars("</");
          this._emitSeveralCodePoints(this.tempBuff);
          this._reconsumeInState(SCRIPT_DATA_STATE);
        }
      }
      // Script data escape start state
      //------------------------------------------------------------------
      [SCRIPT_DATA_ESCAPE_START_STATE](cp) {
        if (cp === $2.HYPHEN_MINUS) {
          this.state = SCRIPT_DATA_ESCAPE_START_DASH_STATE;
          this._emitChars("-");
        } else {
          this._reconsumeInState(SCRIPT_DATA_STATE);
        }
      }
      // Script data escape start dash state
      //------------------------------------------------------------------
      [SCRIPT_DATA_ESCAPE_START_DASH_STATE](cp) {
        if (cp === $2.HYPHEN_MINUS) {
          this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;
          this._emitChars("-");
        } else {
          this._reconsumeInState(SCRIPT_DATA_STATE);
        }
      }
      // Script data escaped state
      //------------------------------------------------------------------
      [SCRIPT_DATA_ESCAPED_STATE](cp) {
        if (cp === $2.HYPHEN_MINUS) {
          this.state = SCRIPT_DATA_ESCAPED_DASH_STATE;
          this._emitChars("-");
        } else if (cp === $2.LESS_THAN_SIGN) {
          this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this._emitChars(unicode.REPLACEMENT_CHARACTER);
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInScriptHtmlCommentLikeText);
          this._emitEOFToken();
        } else {
          this._emitCodePoint(cp);
        }
      }
      // Script data escaped dash state
      //------------------------------------------------------------------
      [SCRIPT_DATA_ESCAPED_DASH_STATE](cp) {
        if (cp === $2.HYPHEN_MINUS) {
          this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;
          this._emitChars("-");
        } else if (cp === $2.LESS_THAN_SIGN) {
          this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this.state = SCRIPT_DATA_ESCAPED_STATE;
          this._emitChars(unicode.REPLACEMENT_CHARACTER);
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInScriptHtmlCommentLikeText);
          this._emitEOFToken();
        } else {
          this.state = SCRIPT_DATA_ESCAPED_STATE;
          this._emitCodePoint(cp);
        }
      }
      // Script data escaped dash dash state
      //------------------------------------------------------------------
      [SCRIPT_DATA_ESCAPED_DASH_DASH_STATE](cp) {
        if (cp === $2.HYPHEN_MINUS) {
          this._emitChars("-");
        } else if (cp === $2.LESS_THAN_SIGN) {
          this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this.state = SCRIPT_DATA_STATE;
          this._emitChars(">");
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this.state = SCRIPT_DATA_ESCAPED_STATE;
          this._emitChars(unicode.REPLACEMENT_CHARACTER);
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInScriptHtmlCommentLikeText);
          this._emitEOFToken();
        } else {
          this.state = SCRIPT_DATA_ESCAPED_STATE;
          this._emitCodePoint(cp);
        }
      }
      // Script data escaped less-than sign state
      //------------------------------------------------------------------
      [SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE](cp) {
        if (cp === $2.SOLIDUS) {
          this.tempBuff = [];
          this.state = SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE;
        } else if (isAsciiLetter2(cp)) {
          this.tempBuff = [];
          this._emitChars("<");
          this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE);
        } else {
          this._emitChars("<");
          this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);
        }
      }
      // Script data escaped end tag open state
      //------------------------------------------------------------------
      [SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE](cp) {
        if (isAsciiLetter2(cp)) {
          this._createEndTagToken();
          this._reconsumeInState(SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE);
        } else {
          this._emitChars("</");
          this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);
        }
      }
      // Script data escaped end tag name state
      //------------------------------------------------------------------
      [SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE](cp) {
        if (isAsciiUpper2(cp)) {
          this.currentToken.tagName += toAsciiLowerChar(cp);
          this.tempBuff.push(cp);
        } else if (isAsciiLower2(cp)) {
          this.currentToken.tagName += toChar(cp);
          this.tempBuff.push(cp);
        } else {
          if (this.lastStartTagName === this.currentToken.tagName) {
            if (isWhitespace3(cp)) {
              this.state = BEFORE_ATTRIBUTE_NAME_STATE;
              return;
            }
            if (cp === $2.SOLIDUS) {
              this.state = SELF_CLOSING_START_TAG_STATE;
              return;
            }
            if (cp === $2.GREATER_THAN_SIGN) {
              this._emitCurrentToken();
              this.state = DATA_STATE;
              return;
            }
          }
          this._emitChars("</");
          this._emitSeveralCodePoints(this.tempBuff);
          this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);
        }
      }
      // Script data double escape start state
      //------------------------------------------------------------------
      [SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE](cp) {
        if (isWhitespace3(cp) || cp === $2.SOLIDUS || cp === $2.GREATER_THAN_SIGN) {
          this.state = this._isTempBufferEqualToScriptString() ? SCRIPT_DATA_DOUBLE_ESCAPED_STATE : SCRIPT_DATA_ESCAPED_STATE;
          this._emitCodePoint(cp);
        } else if (isAsciiUpper2(cp)) {
          this.tempBuff.push(toAsciiLowerCodePoint(cp));
          this._emitCodePoint(cp);
        } else if (isAsciiLower2(cp)) {
          this.tempBuff.push(cp);
          this._emitCodePoint(cp);
        } else {
          this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);
        }
      }
      // Script data double escaped state
      //------------------------------------------------------------------
      [SCRIPT_DATA_DOUBLE_ESCAPED_STATE](cp) {
        if (cp === $2.HYPHEN_MINUS) {
          this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE;
          this._emitChars("-");
        } else if (cp === $2.LESS_THAN_SIGN) {
          this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;
          this._emitChars("<");
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this._emitChars(unicode.REPLACEMENT_CHARACTER);
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInScriptHtmlCommentLikeText);
          this._emitEOFToken();
        } else {
          this._emitCodePoint(cp);
        }
      }
      // Script data double escaped dash state
      //------------------------------------------------------------------
      [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE](cp) {
        if (cp === $2.HYPHEN_MINUS) {
          this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE;
          this._emitChars("-");
        } else if (cp === $2.LESS_THAN_SIGN) {
          this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;
          this._emitChars("<");
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;
          this._emitChars(unicode.REPLACEMENT_CHARACTER);
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInScriptHtmlCommentLikeText);
          this._emitEOFToken();
        } else {
          this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;
          this._emitCodePoint(cp);
        }
      }
      // Script data double escaped dash dash state
      //------------------------------------------------------------------
      [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE](cp) {
        if (cp === $2.HYPHEN_MINUS) {
          this._emitChars("-");
        } else if (cp === $2.LESS_THAN_SIGN) {
          this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;
          this._emitChars("<");
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this.state = SCRIPT_DATA_STATE;
          this._emitChars(">");
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;
          this._emitChars(unicode.REPLACEMENT_CHARACTER);
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInScriptHtmlCommentLikeText);
          this._emitEOFToken();
        } else {
          this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;
          this._emitCodePoint(cp);
        }
      }
      // Script data double escaped less-than sign state
      //------------------------------------------------------------------
      [SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE](cp) {
        if (cp === $2.SOLIDUS) {
          this.tempBuff = [];
          this.state = SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE;
          this._emitChars("/");
        } else {
          this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);
        }
      }
      // Script data double escape end state
      //------------------------------------------------------------------
      [SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE](cp) {
        if (isWhitespace3(cp) || cp === $2.SOLIDUS || cp === $2.GREATER_THAN_SIGN) {
          this.state = this._isTempBufferEqualToScriptString() ? SCRIPT_DATA_ESCAPED_STATE : SCRIPT_DATA_DOUBLE_ESCAPED_STATE;
          this._emitCodePoint(cp);
        } else if (isAsciiUpper2(cp)) {
          this.tempBuff.push(toAsciiLowerCodePoint(cp));
          this._emitCodePoint(cp);
        } else if (isAsciiLower2(cp)) {
          this.tempBuff.push(cp);
          this._emitCodePoint(cp);
        } else {
          this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);
        }
      }
      // Before attribute name state
      //------------------------------------------------------------------
      [BEFORE_ATTRIBUTE_NAME_STATE](cp) {
        if (isWhitespace3(cp)) {
          return;
        }
        if (cp === $2.SOLIDUS || cp === $2.GREATER_THAN_SIGN || cp === $2.EOF) {
          this._reconsumeInState(AFTER_ATTRIBUTE_NAME_STATE);
        } else if (cp === $2.EQUALS_SIGN) {
          this._err(ERR2.unexpectedEqualsSignBeforeAttributeName);
          this._createAttr("=");
          this.state = ATTRIBUTE_NAME_STATE;
        } else {
          this._createAttr("");
          this._reconsumeInState(ATTRIBUTE_NAME_STATE);
        }
      }
      // Attribute name state
      //------------------------------------------------------------------
      [ATTRIBUTE_NAME_STATE](cp) {
        if (isWhitespace3(cp) || cp === $2.SOLIDUS || cp === $2.GREATER_THAN_SIGN || cp === $2.EOF) {
          this._leaveAttrName(AFTER_ATTRIBUTE_NAME_STATE);
          this._unconsume();
        } else if (cp === $2.EQUALS_SIGN) {
          this._leaveAttrName(BEFORE_ATTRIBUTE_VALUE_STATE);
        } else if (isAsciiUpper2(cp)) {
          this.currentAttr.name += toAsciiLowerChar(cp);
        } else if (cp === $2.QUOTATION_MARK || cp === $2.APOSTROPHE || cp === $2.LESS_THAN_SIGN) {
          this._err(ERR2.unexpectedCharacterInAttributeName);
          this.currentAttr.name += toChar(cp);
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this.currentAttr.name += unicode.REPLACEMENT_CHARACTER;
        } else {
          this.currentAttr.name += toChar(cp);
        }
      }
      // After attribute name state
      //------------------------------------------------------------------
      [AFTER_ATTRIBUTE_NAME_STATE](cp) {
        if (isWhitespace3(cp)) {
          return;
        }
        if (cp === $2.SOLIDUS) {
          this.state = SELF_CLOSING_START_TAG_STATE;
        } else if (cp === $2.EQUALS_SIGN) {
          this.state = BEFORE_ATTRIBUTE_VALUE_STATE;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this.state = DATA_STATE;
          this._emitCurrentToken();
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInTag);
          this._emitEOFToken();
        } else {
          this._createAttr("");
          this._reconsumeInState(ATTRIBUTE_NAME_STATE);
        }
      }
      // Before attribute value state
      //------------------------------------------------------------------
      [BEFORE_ATTRIBUTE_VALUE_STATE](cp) {
        if (isWhitespace3(cp)) {
          return;
        }
        if (cp === $2.QUOTATION_MARK) {
          this.state = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;
        } else if (cp === $2.APOSTROPHE) {
          this.state = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._err(ERR2.missingAttributeValue);
          this.state = DATA_STATE;
          this._emitCurrentToken();
        } else {
          this._reconsumeInState(ATTRIBUTE_VALUE_UNQUOTED_STATE);
        }
      }
      // Attribute value (double-quoted) state
      //------------------------------------------------------------------
      [ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE](cp) {
        if (cp === $2.QUOTATION_MARK) {
          this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;
        } else if (cp === $2.AMPERSAND) {
          this.returnState = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;
          this.state = CHARACTER_REFERENCE_STATE;
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInTag);
          this._emitEOFToken();
        } else {
          this.currentAttr.value += toChar(cp);
        }
      }
      // Attribute value (single-quoted) state
      //------------------------------------------------------------------
      [ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE](cp) {
        if (cp === $2.APOSTROPHE) {
          this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;
        } else if (cp === $2.AMPERSAND) {
          this.returnState = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;
          this.state = CHARACTER_REFERENCE_STATE;
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInTag);
          this._emitEOFToken();
        } else {
          this.currentAttr.value += toChar(cp);
        }
      }
      // Attribute value (unquoted) state
      //------------------------------------------------------------------
      [ATTRIBUTE_VALUE_UNQUOTED_STATE](cp) {
        if (isWhitespace3(cp)) {
          this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);
        } else if (cp === $2.AMPERSAND) {
          this.returnState = ATTRIBUTE_VALUE_UNQUOTED_STATE;
          this.state = CHARACTER_REFERENCE_STATE;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._leaveAttrValue(DATA_STATE);
          this._emitCurrentToken();
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;
        } else if (cp === $2.QUOTATION_MARK || cp === $2.APOSTROPHE || cp === $2.LESS_THAN_SIGN || cp === $2.EQUALS_SIGN || cp === $2.GRAVE_ACCENT) {
          this._err(ERR2.unexpectedCharacterInUnquotedAttributeValue);
          this.currentAttr.value += toChar(cp);
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInTag);
          this._emitEOFToken();
        } else {
          this.currentAttr.value += toChar(cp);
        }
      }
      // After attribute value (quoted) state
      //------------------------------------------------------------------
      [AFTER_ATTRIBUTE_VALUE_QUOTED_STATE](cp) {
        if (isWhitespace3(cp)) {
          this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);
        } else if (cp === $2.SOLIDUS) {
          this._leaveAttrValue(SELF_CLOSING_START_TAG_STATE);
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._leaveAttrValue(DATA_STATE);
          this._emitCurrentToken();
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInTag);
          this._emitEOFToken();
        } else {
          this._err(ERR2.missingWhitespaceBetweenAttributes);
          this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);
        }
      }
      // Self-closing start tag state
      //------------------------------------------------------------------
      [SELF_CLOSING_START_TAG_STATE](cp) {
        if (cp === $2.GREATER_THAN_SIGN) {
          this.currentToken.selfClosing = true;
          this.state = DATA_STATE;
          this._emitCurrentToken();
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInTag);
          this._emitEOFToken();
        } else {
          this._err(ERR2.unexpectedSolidusInTag);
          this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);
        }
      }
      // Bogus comment state
      //------------------------------------------------------------------
      [BOGUS_COMMENT_STATE](cp) {
        if (cp === $2.GREATER_THAN_SIGN) {
          this.state = DATA_STATE;
          this._emitCurrentToken();
        } else if (cp === $2.EOF) {
          this._emitCurrentToken();
          this._emitEOFToken();
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this.currentToken.data += unicode.REPLACEMENT_CHARACTER;
        } else {
          this.currentToken.data += toChar(cp);
        }
      }
      // Markup declaration open state
      //------------------------------------------------------------------
      [MARKUP_DECLARATION_OPEN_STATE](cp) {
        if (this._consumeSequenceIfMatch($$.DASH_DASH_STRING, cp, true)) {
          this._createCommentToken();
          this.state = COMMENT_START_STATE;
        } else if (this._consumeSequenceIfMatch($$.DOCTYPE_STRING, cp, false)) {
          this.state = DOCTYPE_STATE;
        } else if (this._consumeSequenceIfMatch($$.CDATA_START_STRING, cp, true)) {
          if (this.allowCDATA) {
            this.state = CDATA_SECTION_STATE;
          } else {
            this._err(ERR2.cdataInHtmlContent);
            this._createCommentToken();
            this.currentToken.data = "[CDATA[";
            this.state = BOGUS_COMMENT_STATE;
          }
        } else if (!this._ensureHibernation()) {
          this._err(ERR2.incorrectlyOpenedComment);
          this._createCommentToken();
          this._reconsumeInState(BOGUS_COMMENT_STATE);
        }
      }
      // Comment start state
      //------------------------------------------------------------------
      [COMMENT_START_STATE](cp) {
        if (cp === $2.HYPHEN_MINUS) {
          this.state = COMMENT_START_DASH_STATE;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._err(ERR2.abruptClosingOfEmptyComment);
          this.state = DATA_STATE;
          this._emitCurrentToken();
        } else {
          this._reconsumeInState(COMMENT_STATE);
        }
      }
      // Comment start dash state
      //------------------------------------------------------------------
      [COMMENT_START_DASH_STATE](cp) {
        if (cp === $2.HYPHEN_MINUS) {
          this.state = COMMENT_END_STATE;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._err(ERR2.abruptClosingOfEmptyComment);
          this.state = DATA_STATE;
          this._emitCurrentToken();
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInComment);
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this.currentToken.data += "-";
          this._reconsumeInState(COMMENT_STATE);
        }
      }
      // Comment state
      //------------------------------------------------------------------
      [COMMENT_STATE](cp) {
        if (cp === $2.HYPHEN_MINUS) {
          this.state = COMMENT_END_DASH_STATE;
        } else if (cp === $2.LESS_THAN_SIGN) {
          this.currentToken.data += "<";
          this.state = COMMENT_LESS_THAN_SIGN_STATE;
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this.currentToken.data += unicode.REPLACEMENT_CHARACTER;
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInComment);
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this.currentToken.data += toChar(cp);
        }
      }
      // Comment less-than sign state
      //------------------------------------------------------------------
      [COMMENT_LESS_THAN_SIGN_STATE](cp) {
        if (cp === $2.EXCLAMATION_MARK) {
          this.currentToken.data += "!";
          this.state = COMMENT_LESS_THAN_SIGN_BANG_STATE;
        } else if (cp === $2.LESS_THAN_SIGN) {
          this.currentToken.data += "!";
        } else {
          this._reconsumeInState(COMMENT_STATE);
        }
      }
      // Comment less-than sign bang state
      //------------------------------------------------------------------
      [COMMENT_LESS_THAN_SIGN_BANG_STATE](cp) {
        if (cp === $2.HYPHEN_MINUS) {
          this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE;
        } else {
          this._reconsumeInState(COMMENT_STATE);
        }
      }
      // Comment less-than sign bang dash state
      //------------------------------------------------------------------
      [COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE](cp) {
        if (cp === $2.HYPHEN_MINUS) {
          this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE;
        } else {
          this._reconsumeInState(COMMENT_END_DASH_STATE);
        }
      }
      // Comment less-than sign bang dash dash state
      //------------------------------------------------------------------
      [COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE](cp) {
        if (cp !== $2.GREATER_THAN_SIGN && cp !== $2.EOF) {
          this._err(ERR2.nestedComment);
        }
        this._reconsumeInState(COMMENT_END_STATE);
      }
      // Comment end dash state
      //------------------------------------------------------------------
      [COMMENT_END_DASH_STATE](cp) {
        if (cp === $2.HYPHEN_MINUS) {
          this.state = COMMENT_END_STATE;
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInComment);
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this.currentToken.data += "-";
          this._reconsumeInState(COMMENT_STATE);
        }
      }
      // Comment end state
      //------------------------------------------------------------------
      [COMMENT_END_STATE](cp) {
        if (cp === $2.GREATER_THAN_SIGN) {
          this.state = DATA_STATE;
          this._emitCurrentToken();
        } else if (cp === $2.EXCLAMATION_MARK) {
          this.state = COMMENT_END_BANG_STATE;
        } else if (cp === $2.HYPHEN_MINUS) {
          this.currentToken.data += "-";
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInComment);
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this.currentToken.data += "--";
          this._reconsumeInState(COMMENT_STATE);
        }
      }
      // Comment end bang state
      //------------------------------------------------------------------
      [COMMENT_END_BANG_STATE](cp) {
        if (cp === $2.HYPHEN_MINUS) {
          this.currentToken.data += "--!";
          this.state = COMMENT_END_DASH_STATE;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._err(ERR2.incorrectlyClosedComment);
          this.state = DATA_STATE;
          this._emitCurrentToken();
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInComment);
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this.currentToken.data += "--!";
          this._reconsumeInState(COMMENT_STATE);
        }
      }
      // DOCTYPE state
      //------------------------------------------------------------------
      [DOCTYPE_STATE](cp) {
        if (isWhitespace3(cp)) {
          this.state = BEFORE_DOCTYPE_NAME_STATE;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInDoctype);
          this._createDoctypeToken(null);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this._err(ERR2.missingWhitespaceBeforeDoctypeName);
          this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);
        }
      }
      // Before DOCTYPE name state
      //------------------------------------------------------------------
      [BEFORE_DOCTYPE_NAME_STATE](cp) {
        if (isWhitespace3(cp)) {
          return;
        }
        if (isAsciiUpper2(cp)) {
          this._createDoctypeToken(toAsciiLowerChar(cp));
          this.state = DOCTYPE_NAME_STATE;
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this._createDoctypeToken(unicode.REPLACEMENT_CHARACTER);
          this.state = DOCTYPE_NAME_STATE;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._err(ERR2.missingDoctypeName);
          this._createDoctypeToken(null);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this.state = DATA_STATE;
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInDoctype);
          this._createDoctypeToken(null);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this._createDoctypeToken(toChar(cp));
          this.state = DOCTYPE_NAME_STATE;
        }
      }
      // DOCTYPE name state
      //------------------------------------------------------------------
      [DOCTYPE_NAME_STATE](cp) {
        if (isWhitespace3(cp)) {
          this.state = AFTER_DOCTYPE_NAME_STATE;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this.state = DATA_STATE;
          this._emitCurrentToken();
        } else if (isAsciiUpper2(cp)) {
          this.currentToken.name += toAsciiLowerChar(cp);
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this.currentToken.name += unicode.REPLACEMENT_CHARACTER;
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInDoctype);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this.currentToken.name += toChar(cp);
        }
      }
      // After DOCTYPE name state
      //------------------------------------------------------------------
      [AFTER_DOCTYPE_NAME_STATE](cp) {
        if (isWhitespace3(cp)) {
          return;
        }
        if (cp === $2.GREATER_THAN_SIGN) {
          this.state = DATA_STATE;
          this._emitCurrentToken();
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInDoctype);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this._emitEOFToken();
        } else if (this._consumeSequenceIfMatch($$.PUBLIC_STRING, cp, false)) {
          this.state = AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE;
        } else if (this._consumeSequenceIfMatch($$.SYSTEM_STRING, cp, false)) {
          this.state = AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE;
        } else if (!this._ensureHibernation()) {
          this._err(ERR2.invalidCharacterSequenceAfterDoctypeName);
          this.currentToken.forceQuirks = true;
          this._reconsumeInState(BOGUS_DOCTYPE_STATE);
        }
      }
      // After DOCTYPE public keyword state
      //------------------------------------------------------------------
      [AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE](cp) {
        if (isWhitespace3(cp)) {
          this.state = BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE;
        } else if (cp === $2.QUOTATION_MARK) {
          this._err(ERR2.missingWhitespaceAfterDoctypePublicKeyword);
          this.currentToken.publicId = "";
          this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;
        } else if (cp === $2.APOSTROPHE) {
          this._err(ERR2.missingWhitespaceAfterDoctypePublicKeyword);
          this.currentToken.publicId = "";
          this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._err(ERR2.missingDoctypePublicIdentifier);
          this.currentToken.forceQuirks = true;
          this.state = DATA_STATE;
          this._emitCurrentToken();
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInDoctype);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this._err(ERR2.missingQuoteBeforeDoctypePublicIdentifier);
          this.currentToken.forceQuirks = true;
          this._reconsumeInState(BOGUS_DOCTYPE_STATE);
        }
      }
      // Before DOCTYPE public identifier state
      //------------------------------------------------------------------
      [BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {
        if (isWhitespace3(cp)) {
          return;
        }
        if (cp === $2.QUOTATION_MARK) {
          this.currentToken.publicId = "";
          this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;
        } else if (cp === $2.APOSTROPHE) {
          this.currentToken.publicId = "";
          this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._err(ERR2.missingDoctypePublicIdentifier);
          this.currentToken.forceQuirks = true;
          this.state = DATA_STATE;
          this._emitCurrentToken();
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInDoctype);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this._err(ERR2.missingQuoteBeforeDoctypePublicIdentifier);
          this.currentToken.forceQuirks = true;
          this._reconsumeInState(BOGUS_DOCTYPE_STATE);
        }
      }
      // DOCTYPE public identifier (double-quoted) state
      //------------------------------------------------------------------
      [DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {
        if (cp === $2.QUOTATION_MARK) {
          this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._err(ERR2.abruptDoctypePublicIdentifier);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this.state = DATA_STATE;
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInDoctype);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this.currentToken.publicId += toChar(cp);
        }
      }
      // DOCTYPE public identifier (single-quoted) state
      //------------------------------------------------------------------
      [DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {
        if (cp === $2.APOSTROPHE) {
          this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._err(ERR2.abruptDoctypePublicIdentifier);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this.state = DATA_STATE;
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInDoctype);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this.currentToken.publicId += toChar(cp);
        }
      }
      // After DOCTYPE public identifier state
      //------------------------------------------------------------------
      [AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {
        if (isWhitespace3(cp)) {
          this.state = BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this.state = DATA_STATE;
          this._emitCurrentToken();
        } else if (cp === $2.QUOTATION_MARK) {
          this._err(ERR2.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);
          this.currentToken.systemId = "";
          this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;
        } else if (cp === $2.APOSTROPHE) {
          this._err(ERR2.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);
          this.currentToken.systemId = "";
          this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInDoctype);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this._err(ERR2.missingQuoteBeforeDoctypeSystemIdentifier);
          this.currentToken.forceQuirks = true;
          this._reconsumeInState(BOGUS_DOCTYPE_STATE);
        }
      }
      // Between DOCTYPE public and system identifiers state
      //------------------------------------------------------------------
      [BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE](cp) {
        if (isWhitespace3(cp)) {
          return;
        }
        if (cp === $2.GREATER_THAN_SIGN) {
          this._emitCurrentToken();
          this.state = DATA_STATE;
        } else if (cp === $2.QUOTATION_MARK) {
          this.currentToken.systemId = "";
          this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;
        } else if (cp === $2.APOSTROPHE) {
          this.currentToken.systemId = "";
          this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInDoctype);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this._err(ERR2.missingQuoteBeforeDoctypeSystemIdentifier);
          this.currentToken.forceQuirks = true;
          this._reconsumeInState(BOGUS_DOCTYPE_STATE);
        }
      }
      // After DOCTYPE system keyword state
      //------------------------------------------------------------------
      [AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE](cp) {
        if (isWhitespace3(cp)) {
          this.state = BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE;
        } else if (cp === $2.QUOTATION_MARK) {
          this._err(ERR2.missingWhitespaceAfterDoctypeSystemKeyword);
          this.currentToken.systemId = "";
          this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;
        } else if (cp === $2.APOSTROPHE) {
          this._err(ERR2.missingWhitespaceAfterDoctypeSystemKeyword);
          this.currentToken.systemId = "";
          this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._err(ERR2.missingDoctypeSystemIdentifier);
          this.currentToken.forceQuirks = true;
          this.state = DATA_STATE;
          this._emitCurrentToken();
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInDoctype);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this._err(ERR2.missingQuoteBeforeDoctypeSystemIdentifier);
          this.currentToken.forceQuirks = true;
          this._reconsumeInState(BOGUS_DOCTYPE_STATE);
        }
      }
      // Before DOCTYPE system identifier state
      //------------------------------------------------------------------
      [BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {
        if (isWhitespace3(cp)) {
          return;
        }
        if (cp === $2.QUOTATION_MARK) {
          this.currentToken.systemId = "";
          this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;
        } else if (cp === $2.APOSTROPHE) {
          this.currentToken.systemId = "";
          this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._err(ERR2.missingDoctypeSystemIdentifier);
          this.currentToken.forceQuirks = true;
          this.state = DATA_STATE;
          this._emitCurrentToken();
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInDoctype);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this._err(ERR2.missingQuoteBeforeDoctypeSystemIdentifier);
          this.currentToken.forceQuirks = true;
          this._reconsumeInState(BOGUS_DOCTYPE_STATE);
        }
      }
      // DOCTYPE system identifier (double-quoted) state
      //------------------------------------------------------------------
      [DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {
        if (cp === $2.QUOTATION_MARK) {
          this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._err(ERR2.abruptDoctypeSystemIdentifier);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this.state = DATA_STATE;
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInDoctype);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this.currentToken.systemId += toChar(cp);
        }
      }
      // DOCTYPE system identifier (single-quoted) state
      //------------------------------------------------------------------
      [DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {
        if (cp === $2.APOSTROPHE) {
          this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
          this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;
        } else if (cp === $2.GREATER_THAN_SIGN) {
          this._err(ERR2.abruptDoctypeSystemIdentifier);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this.state = DATA_STATE;
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInDoctype);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this.currentToken.systemId += toChar(cp);
        }
      }
      // After DOCTYPE system identifier state
      //------------------------------------------------------------------
      [AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {
        if (isWhitespace3(cp)) {
          return;
        }
        if (cp === $2.GREATER_THAN_SIGN) {
          this._emitCurrentToken();
          this.state = DATA_STATE;
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInDoctype);
          this.currentToken.forceQuirks = true;
          this._emitCurrentToken();
          this._emitEOFToken();
        } else {
          this._err(ERR2.unexpectedCharacterAfterDoctypeSystemIdentifier);
          this._reconsumeInState(BOGUS_DOCTYPE_STATE);
        }
      }
      // Bogus DOCTYPE state
      //------------------------------------------------------------------
      [BOGUS_DOCTYPE_STATE](cp) {
        if (cp === $2.GREATER_THAN_SIGN) {
          this._emitCurrentToken();
          this.state = DATA_STATE;
        } else if (cp === $2.NULL) {
          this._err(ERR2.unexpectedNullCharacter);
        } else if (cp === $2.EOF) {
          this._emitCurrentToken();
          this._emitEOFToken();
        }
      }
      // CDATA section state
      //------------------------------------------------------------------
      [CDATA_SECTION_STATE](cp) {
        if (cp === $2.RIGHT_SQUARE_BRACKET) {
          this.state = CDATA_SECTION_BRACKET_STATE;
        } else if (cp === $2.EOF) {
          this._err(ERR2.eofInCdata);
          this._emitEOFToken();
        } else {
          this._emitCodePoint(cp);
        }
      }
      // CDATA section bracket state
      //------------------------------------------------------------------
      [CDATA_SECTION_BRACKET_STATE](cp) {
        if (cp === $2.RIGHT_SQUARE_BRACKET) {
          this.state = CDATA_SECTION_END_STATE;
        } else {
          this._emitChars("]");
          this._reconsumeInState(CDATA_SECTION_STATE);
        }
      }
      // CDATA section end state
      //------------------------------------------------------------------
      [CDATA_SECTION_END_STATE](cp) {
        if (cp === $2.GREATER_THAN_SIGN) {
          this.state = DATA_STATE;
        } else if (cp === $2.RIGHT_SQUARE_BRACKET) {
          this._emitChars("]");
        } else {
          this._emitChars("]]");
          this._reconsumeInState(CDATA_SECTION_STATE);
        }
      }
      // Character reference state
      //------------------------------------------------------------------
      [CHARACTER_REFERENCE_STATE](cp) {
        this.tempBuff = [$2.AMPERSAND];
        if (cp === $2.NUMBER_SIGN) {
          this.tempBuff.push(cp);
          this.state = NUMERIC_CHARACTER_REFERENCE_STATE;
        } else if (isAsciiAlphaNumeric3(cp)) {
          this._reconsumeInState(NAMED_CHARACTER_REFERENCE_STATE);
        } else {
          this._flushCodePointsConsumedAsCharacterReference();
          this._reconsumeInState(this.returnState);
        }
      }
      // Named character reference state
      //------------------------------------------------------------------
      [NAMED_CHARACTER_REFERENCE_STATE](cp) {
        const matchResult = this._matchNamedCharacterReference(cp);
        if (this._ensureHibernation()) {
          this.tempBuff = [$2.AMPERSAND];
        } else if (matchResult) {
          const withSemicolon = this.tempBuff[this.tempBuff.length - 1] === $2.SEMICOLON;
          if (!this._isCharacterReferenceAttributeQuirk(withSemicolon)) {
            if (!withSemicolon) {
              this._errOnNextCodePoint(ERR2.missingSemicolonAfterCharacterReference);
            }
            this.tempBuff = matchResult;
          }
          this._flushCodePointsConsumedAsCharacterReference();
          this.state = this.returnState;
        } else {
          this._flushCodePointsConsumedAsCharacterReference();
          this.state = AMBIGUOUS_AMPERSAND_STATE;
        }
      }
      // Ambiguos ampersand state
      //------------------------------------------------------------------
      [AMBIGUOUS_AMPERSAND_STATE](cp) {
        if (isAsciiAlphaNumeric3(cp)) {
          if (this._isCharacterReferenceInAttribute()) {
            this.currentAttr.value += toChar(cp);
          } else {
            this._emitCodePoint(cp);
          }
        } else {
          if (cp === $2.SEMICOLON) {
            this._err(ERR2.unknownNamedCharacterReference);
          }
          this._reconsumeInState(this.returnState);
        }
      }
      // Numeric character reference state
      //------------------------------------------------------------------
      [NUMERIC_CHARACTER_REFERENCE_STATE](cp) {
        this.charRefCode = 0;
        if (cp === $2.LATIN_SMALL_X || cp === $2.LATIN_CAPITAL_X) {
          this.tempBuff.push(cp);
          this.state = HEXADEMICAL_CHARACTER_REFERENCE_START_STATE;
        } else {
          this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_START_STATE);
        }
      }
      // Hexademical character reference start state
      //------------------------------------------------------------------
      [HEXADEMICAL_CHARACTER_REFERENCE_START_STATE](cp) {
        if (isAsciiHexDigit2(cp)) {
          this._reconsumeInState(HEXADEMICAL_CHARACTER_REFERENCE_STATE);
        } else {
          this._err(ERR2.absenceOfDigitsInNumericCharacterReference);
          this._flushCodePointsConsumedAsCharacterReference();
          this._reconsumeInState(this.returnState);
        }
      }
      // Decimal character reference start state
      //------------------------------------------------------------------
      [DECIMAL_CHARACTER_REFERENCE_START_STATE](cp) {
        if (isAsciiDigit2(cp)) {
          this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_STATE);
        } else {
          this._err(ERR2.absenceOfDigitsInNumericCharacterReference);
          this._flushCodePointsConsumedAsCharacterReference();
          this._reconsumeInState(this.returnState);
        }
      }
      // Hexademical character reference state
      //------------------------------------------------------------------
      [HEXADEMICAL_CHARACTER_REFERENCE_STATE](cp) {
        if (isAsciiUpperHexDigit2(cp)) {
          this.charRefCode = this.charRefCode * 16 + cp - 55;
        } else if (isAsciiLowerHexDigit2(cp)) {
          this.charRefCode = this.charRefCode * 16 + cp - 87;
        } else if (isAsciiDigit2(cp)) {
          this.charRefCode = this.charRefCode * 16 + cp - 48;
        } else if (cp === $2.SEMICOLON) {
          this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;
        } else {
          this._err(ERR2.missingSemicolonAfterCharacterReference);
          this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);
        }
      }
      // Decimal character reference state
      //------------------------------------------------------------------
      [DECIMAL_CHARACTER_REFERENCE_STATE](cp) {
        if (isAsciiDigit2(cp)) {
          this.charRefCode = this.charRefCode * 10 + cp - 48;
        } else if (cp === $2.SEMICOLON) {
          this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;
        } else {
          this._err(ERR2.missingSemicolonAfterCharacterReference);
          this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);
        }
      }
      // Numeric character reference end state
      //------------------------------------------------------------------
      [NUMERIC_CHARACTER_REFERENCE_END_STATE]() {
        if (this.charRefCode === $2.NULL) {
          this._err(ERR2.nullCharacterReference);
          this.charRefCode = $2.REPLACEMENT_CHARACTER;
        } else if (this.charRefCode > 1114111) {
          this._err(ERR2.characterReferenceOutsideUnicodeRange);
          this.charRefCode = $2.REPLACEMENT_CHARACTER;
        } else if (unicode.isSurrogate(this.charRefCode)) {
          this._err(ERR2.surrogateCharacterReference);
          this.charRefCode = $2.REPLACEMENT_CHARACTER;
        } else if (unicode.isUndefinedCodePoint(this.charRefCode)) {
          this._err(ERR2.noncharacterCharacterReference);
        } else if (unicode.isControlCodePoint(this.charRefCode) || this.charRefCode === $2.CARRIAGE_RETURN) {
          this._err(ERR2.controlCharacterReference);
          const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS2[this.charRefCode];
          if (replacement) {
            this.charRefCode = replacement;
          }
        }
        this.tempBuff = [this.charRefCode];
        this._flushCodePointsConsumedAsCharacterReference();
        this._reconsumeInState(this.returnState);
      }
    };
    Tokenizer2.CHARACTER_TOKEN = "CHARACTER_TOKEN";
    Tokenizer2.NULL_CHARACTER_TOKEN = "NULL_CHARACTER_TOKEN";
    Tokenizer2.WHITESPACE_CHARACTER_TOKEN = "WHITESPACE_CHARACTER_TOKEN";
    Tokenizer2.START_TAG_TOKEN = "START_TAG_TOKEN";
    Tokenizer2.END_TAG_TOKEN = "END_TAG_TOKEN";
    Tokenizer2.COMMENT_TOKEN = "COMMENT_TOKEN";
    Tokenizer2.DOCTYPE_TOKEN = "DOCTYPE_TOKEN";
    Tokenizer2.EOF_TOKEN = "EOF_TOKEN";
    Tokenizer2.HIBERNATION_TOKEN = "HIBERNATION_TOKEN";
    Tokenizer2.MODE = {
      DATA: DATA_STATE,
      RCDATA: RCDATA_STATE,
      RAWTEXT: RAWTEXT_STATE,
      SCRIPT_DATA: SCRIPT_DATA_STATE,
      PLAINTEXT: PLAINTEXT_STATE
    };
    Tokenizer2.getTokenAttr = function(token, attrName) {
      for (let i2 = token.attrs.length - 1; i2 >= 0; i2--) {
        if (token.attrs[i2].name === attrName) {
          return token.attrs[i2].value;
        }
      }
      return null;
    };
    module2.exports = Tokenizer2;
  }
});

// ../../node_modules/parse5/lib/common/html.js
var require_html2 = __commonJS({
  "../../node_modules/parse5/lib/common/html.js"(exports2) {
    "use strict";
    var NS2 = exports2.NAMESPACES = {
      HTML: "http://www.w3.org/1999/xhtml",
      MATHML: "http://www.w3.org/1998/Math/MathML",
      SVG: "http://www.w3.org/2000/svg",
      XLINK: "http://www.w3.org/1999/xlink",
      XML: "http://www.w3.org/XML/1998/namespace",
      XMLNS: "http://www.w3.org/2000/xmlns/"
    };
    exports2.ATTRS = {
      TYPE: "type",
      ACTION: "action",
      ENCODING: "encoding",
      PROMPT: "prompt",
      NAME: "name",
      COLOR: "color",
      FACE: "face",
      SIZE: "size"
    };
    exports2.DOCUMENT_MODE = {
      NO_QUIRKS: "no-quirks",
      QUIRKS: "quirks",
      LIMITED_QUIRKS: "limited-quirks"
    };
    var $2 = exports2.TAG_NAMES = {
      A: "a",
      ADDRESS: "address",
      ANNOTATION_XML: "annotation-xml",
      APPLET: "applet",
      AREA: "area",
      ARTICLE: "article",
      ASIDE: "aside",
      B: "b",
      BASE: "base",
      BASEFONT: "basefont",
      BGSOUND: "bgsound",
      BIG: "big",
      BLOCKQUOTE: "blockquote",
      BODY: "body",
      BR: "br",
      BUTTON: "button",
      CAPTION: "caption",
      CENTER: "center",
      CODE: "code",
      COL: "col",
      COLGROUP: "colgroup",
      DD: "dd",
      DESC: "desc",
      DETAILS: "details",
      DIALOG: "dialog",
      DIR: "dir",
      DIV: "div",
      DL: "dl",
      DT: "dt",
      EM: "em",
      EMBED: "embed",
      FIELDSET: "fieldset",
      FIGCAPTION: "figcaption",
      FIGURE: "figure",
      FONT: "font",
      FOOTER: "footer",
      FOREIGN_OBJECT: "foreignObject",
      FORM: "form",
      FRAME: "frame",
      FRAMESET: "frameset",
      H1: "h1",
      H2: "h2",
      H3: "h3",
      H4: "h4",
      H5: "h5",
      H6: "h6",
      HEAD: "head",
      HEADER: "header",
      HGROUP: "hgroup",
      HR: "hr",
      HTML: "html",
      I: "i",
      IMG: "img",
      IMAGE: "image",
      INPUT: "input",
      IFRAME: "iframe",
      KEYGEN: "keygen",
      LABEL: "label",
      LI: "li",
      LINK: "link",
      LISTING: "listing",
      MAIN: "main",
      MALIGNMARK: "malignmark",
      MARQUEE: "marquee",
      MATH: "math",
      MENU: "menu",
      META: "meta",
      MGLYPH: "mglyph",
      MI: "mi",
      MO: "mo",
      MN: "mn",
      MS: "ms",
      MTEXT: "mtext",
      NAV: "nav",
      NOBR: "nobr",
      NOFRAMES: "noframes",
      NOEMBED: "noembed",
      NOSCRIPT: "noscript",
      OBJECT: "object",
      OL: "ol",
      OPTGROUP: "optgroup",
      OPTION: "option",
      P: "p",
      PARAM: "param",
      PLAINTEXT: "plaintext",
      PRE: "pre",
      RB: "rb",
      RP: "rp",
      RT: "rt",
      RTC: "rtc",
      RUBY: "ruby",
      S: "s",
      SCRIPT: "script",
      SECTION: "section",
      SELECT: "select",
      SOURCE: "source",
      SMALL: "small",
      SPAN: "span",
      STRIKE: "strike",
      STRONG: "strong",
      STYLE: "style",
      SUB: "sub",
      SUMMARY: "summary",
      SUP: "sup",
      TABLE: "table",
      TBODY: "tbody",
      TEMPLATE: "template",
      TEXTAREA: "textarea",
      TFOOT: "tfoot",
      TD: "td",
      TH: "th",
      THEAD: "thead",
      TITLE: "title",
      TR: "tr",
      TRACK: "track",
      TT: "tt",
      U: "u",
      UL: "ul",
      SVG: "svg",
      VAR: "var",
      WBR: "wbr",
      XMP: "xmp"
    };
    exports2.SPECIAL_ELEMENTS = {
      [NS2.HTML]: {
        [$2.ADDRESS]: true,
        [$2.APPLET]: true,
        [$2.AREA]: true,
        [$2.ARTICLE]: true,
        [$2.ASIDE]: true,
        [$2.BASE]: true,
        [$2.BASEFONT]: true,
        [$2.BGSOUND]: true,
        [$2.BLOCKQUOTE]: true,
        [$2.BODY]: true,
        [$2.BR]: true,
        [$2.BUTTON]: true,
        [$2.CAPTION]: true,
        [$2.CENTER]: true,
        [$2.COL]: true,
        [$2.COLGROUP]: true,
        [$2.DD]: true,
        [$2.DETAILS]: true,
        [$2.DIR]: true,
        [$2.DIV]: true,
        [$2.DL]: true,
        [$2.DT]: true,
        [$2.EMBED]: true,
        [$2.FIELDSET]: true,
        [$2.FIGCAPTION]: true,
        [$2.FIGURE]: true,
        [$2.FOOTER]: true,
        [$2.FORM]: true,
        [$2.FRAME]: true,
        [$2.FRAMESET]: true,
        [$2.H1]: true,
        [$2.H2]: true,
        [$2.H3]: true,
        [$2.H4]: true,
        [$2.H5]: true,
        [$2.H6]: true,
        [$2.HEAD]: true,
        [$2.HEADER]: true,
        [$2.HGROUP]: true,
        [$2.HR]: true,
        [$2.HTML]: true,
        [$2.IFRAME]: true,
        [$2.IMG]: true,
        [$2.INPUT]: true,
        [$2.LI]: true,
        [$2.LINK]: true,
        [$2.LISTING]: true,
        [$2.MAIN]: true,
        [$2.MARQUEE]: true,
        [$2.MENU]: true,
        [$2.META]: true,
        [$2.NAV]: true,
        [$2.NOEMBED]: true,
        [$2.NOFRAMES]: true,
        [$2.NOSCRIPT]: true,
        [$2.OBJECT]: true,
        [$2.OL]: true,
        [$2.P]: true,
        [$2.PARAM]: true,
        [$2.PLAINTEXT]: true,
        [$2.PRE]: true,
        [$2.SCRIPT]: true,
        [$2.SECTION]: true,
        [$2.SELECT]: true,
        [$2.SOURCE]: true,
        [$2.STYLE]: true,
        [$2.SUMMARY]: true,
        [$2.TABLE]: true,
        [$2.TBODY]: true,
        [$2.TD]: true,
        [$2.TEMPLATE]: true,
        [$2.TEXTAREA]: true,
        [$2.TFOOT]: true,
        [$2.TH]: true,
        [$2.THEAD]: true,
        [$2.TITLE]: true,
        [$2.TR]: true,
        [$2.TRACK]: true,
        [$2.UL]: true,
        [$2.WBR]: true,
        [$2.XMP]: true
      },
      [NS2.MATHML]: {
        [$2.MI]: true,
        [$2.MO]: true,
        [$2.MN]: true,
        [$2.MS]: true,
        [$2.MTEXT]: true,
        [$2.ANNOTATION_XML]: true
      },
      [NS2.SVG]: {
        [$2.TITLE]: true,
        [$2.FOREIGN_OBJECT]: true,
        [$2.DESC]: true
      }
    };
  }
});

// ../../node_modules/parse5/lib/parser/open-element-stack.js
var require_open_element_stack = __commonJS({
  "../../node_modules/parse5/lib/parser/open-element-stack.js"(exports2, module2) {
    "use strict";
    var HTML = require_html2();
    var $2 = HTML.TAG_NAMES;
    var NS2 = HTML.NAMESPACES;
    function isImpliedEndTagRequired(tn) {
      switch (tn.length) {
        case 1:
          return tn === $2.P;
        case 2:
          return tn === $2.RB || tn === $2.RP || tn === $2.RT || tn === $2.DD || tn === $2.DT || tn === $2.LI;
        case 3:
          return tn === $2.RTC;
        case 6:
          return tn === $2.OPTION;
        case 8:
          return tn === $2.OPTGROUP;
      }
      return false;
    }
    function isImpliedEndTagRequiredThoroughly(tn) {
      switch (tn.length) {
        case 1:
          return tn === $2.P;
        case 2:
          return tn === $2.RB || tn === $2.RP || tn === $2.RT || tn === $2.DD || tn === $2.DT || tn === $2.LI || tn === $2.TD || tn === $2.TH || tn === $2.TR;
        case 3:
          return tn === $2.RTC;
        case 5:
          return tn === $2.TBODY || tn === $2.TFOOT || tn === $2.THEAD;
        case 6:
          return tn === $2.OPTION;
        case 7:
          return tn === $2.CAPTION;
        case 8:
          return tn === $2.OPTGROUP || tn === $2.COLGROUP;
      }
      return false;
    }
    function isScopingElement(tn, ns) {
      switch (tn.length) {
        case 2:
          if (tn === $2.TD || tn === $2.TH) {
            return ns === NS2.HTML;
          } else if (tn === $2.MI || tn === $2.MO || tn === $2.MN || tn === $2.MS) {
            return ns === NS2.MATHML;
          }
          break;
        case 4:
          if (tn === $2.HTML) {
            return ns === NS2.HTML;
          } else if (tn === $2.DESC) {
            return ns === NS2.SVG;
          }
          break;
        case 5:
          if (tn === $2.TABLE) {
            return ns === NS2.HTML;
          } else if (tn === $2.MTEXT) {
            return ns === NS2.MATHML;
          } else if (tn === $2.TITLE) {
            return ns === NS2.SVG;
          }
          break;
        case 6:
          return (tn === $2.APPLET || tn === $2.OBJECT) && ns === NS2.HTML;
        case 7:
          return (tn === $2.CAPTION || tn === $2.MARQUEE) && ns === NS2.HTML;
        case 8:
          return tn === $2.TEMPLATE && ns === NS2.HTML;
        case 13:
          return tn === $2.FOREIGN_OBJECT && ns === NS2.SVG;
        case 14:
          return tn === $2.ANNOTATION_XML && ns === NS2.MATHML;
      }
      return false;
    }
    var OpenElementStack2 = class {
      constructor(document2, treeAdapter) {
        this.stackTop = -1;
        this.items = [];
        this.current = document2;
        this.currentTagName = null;
        this.currentTmplContent = null;
        this.tmplCount = 0;
        this.treeAdapter = treeAdapter;
      }
      //Index of element
      _indexOf(element5) {
        let idx = -1;
        for (let i2 = this.stackTop; i2 >= 0; i2--) {
          if (this.items[i2] === element5) {
            idx = i2;
            break;
          }
        }
        return idx;
      }
      //Update current element
      _isInTemplate() {
        return this.currentTagName === $2.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS2.HTML;
      }
      _updateCurrentElement() {
        this.current = this.items[this.stackTop];
        this.currentTagName = this.current && this.treeAdapter.getTagName(this.current);
        this.currentTmplContent = this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : null;
      }
      //Mutations
      push(element5) {
        this.items[++this.stackTop] = element5;
        this._updateCurrentElement();
        if (this._isInTemplate()) {
          this.tmplCount++;
        }
      }
      pop() {
        this.stackTop--;
        if (this.tmplCount > 0 && this._isInTemplate()) {
          this.tmplCount--;
        }
        this._updateCurrentElement();
      }
      replace(oldElement, newElement) {
        const idx = this._indexOf(oldElement);
        this.items[idx] = newElement;
        if (idx === this.stackTop) {
          this._updateCurrentElement();
        }
      }
      insertAfter(referenceElement, newElement) {
        const insertionIdx = this._indexOf(referenceElement) + 1;
        this.items.splice(insertionIdx, 0, newElement);
        if (insertionIdx === ++this.stackTop) {
          this._updateCurrentElement();
        }
      }
      popUntilTagNamePopped(tagName) {
        while (this.stackTop > -1) {
          const tn = this.currentTagName;
          const ns = this.treeAdapter.getNamespaceURI(this.current);
          this.pop();
          if (tn === tagName && ns === NS2.HTML) {
            break;
          }
        }
      }
      popUntilElementPopped(element5) {
        while (this.stackTop > -1) {
          const poppedElement = this.current;
          this.pop();
          if (poppedElement === element5) {
            break;
          }
        }
      }
      popUntilNumberedHeaderPopped() {
        while (this.stackTop > -1) {
          const tn = this.currentTagName;
          const ns = this.treeAdapter.getNamespaceURI(this.current);
          this.pop();
          if (tn === $2.H1 || tn === $2.H2 || tn === $2.H3 || tn === $2.H4 || tn === $2.H5 || tn === $2.H6 && ns === NS2.HTML) {
            break;
          }
        }
      }
      popUntilTableCellPopped() {
        while (this.stackTop > -1) {
          const tn = this.currentTagName;
          const ns = this.treeAdapter.getNamespaceURI(this.current);
          this.pop();
          if (tn === $2.TD || tn === $2.TH && ns === NS2.HTML) {
            break;
          }
        }
      }
      popAllUpToHtmlElement() {
        this.stackTop = 0;
        this._updateCurrentElement();
      }
      clearBackToTableContext() {
        while (this.currentTagName !== $2.TABLE && this.currentTagName !== $2.TEMPLATE && this.currentTagName !== $2.HTML || this.treeAdapter.getNamespaceURI(this.current) !== NS2.HTML) {
          this.pop();
        }
      }
      clearBackToTableBodyContext() {
        while (this.currentTagName !== $2.TBODY && this.currentTagName !== $2.TFOOT && this.currentTagName !== $2.THEAD && this.currentTagName !== $2.TEMPLATE && this.currentTagName !== $2.HTML || this.treeAdapter.getNamespaceURI(this.current) !== NS2.HTML) {
          this.pop();
        }
      }
      clearBackToTableRowContext() {
        while (this.currentTagName !== $2.TR && this.currentTagName !== $2.TEMPLATE && this.currentTagName !== $2.HTML || this.treeAdapter.getNamespaceURI(this.current) !== NS2.HTML) {
          this.pop();
        }
      }
      remove(element5) {
        for (let i2 = this.stackTop; i2 >= 0; i2--) {
          if (this.items[i2] === element5) {
            this.items.splice(i2, 1);
            this.stackTop--;
            this._updateCurrentElement();
            break;
          }
        }
      }
      //Search
      tryPeekProperlyNestedBodyElement() {
        const element5 = this.items[1];
        return element5 && this.treeAdapter.getTagName(element5) === $2.BODY ? element5 : null;
      }
      contains(element5) {
        return this._indexOf(element5) > -1;
      }
      getCommonAncestor(element5) {
        let elementIdx = this._indexOf(element5);
        return --elementIdx >= 0 ? this.items[elementIdx] : null;
      }
      isRootHtmlElementCurrent() {
        return this.stackTop === 0 && this.currentTagName === $2.HTML;
      }
      //Element in scope
      hasInScope(tagName) {
        for (let i2 = this.stackTop; i2 >= 0; i2--) {
          const tn = this.treeAdapter.getTagName(this.items[i2]);
          const ns = this.treeAdapter.getNamespaceURI(this.items[i2]);
          if (tn === tagName && ns === NS2.HTML) {
            return true;
          }
          if (isScopingElement(tn, ns)) {
            return false;
          }
        }
        return true;
      }
      hasNumberedHeaderInScope() {
        for (let i2 = this.stackTop; i2 >= 0; i2--) {
          const tn = this.treeAdapter.getTagName(this.items[i2]);
          const ns = this.treeAdapter.getNamespaceURI(this.items[i2]);
          if ((tn === $2.H1 || tn === $2.H2 || tn === $2.H3 || tn === $2.H4 || tn === $2.H5 || tn === $2.H6) && ns === NS2.HTML) {
            return true;
          }
          if (isScopingElement(tn, ns)) {
            return false;
          }
        }
        return true;
      }
      hasInListItemScope(tagName) {
        for (let i2 = this.stackTop; i2 >= 0; i2--) {
          const tn = this.treeAdapter.getTagName(this.items[i2]);
          const ns = this.treeAdapter.getNamespaceURI(this.items[i2]);
          if (tn === tagName && ns === NS2.HTML) {
            return true;
          }
          if ((tn === $2.UL || tn === $2.OL) && ns === NS2.HTML || isScopingElement(tn, ns)) {
            return false;
          }
        }
        return true;
      }
      hasInButtonScope(tagName) {
        for (let i2 = this.stackTop; i2 >= 0; i2--) {
          const tn = this.treeAdapter.getTagName(this.items[i2]);
          const ns = this.treeAdapter.getNamespaceURI(this.items[i2]);
          if (tn === tagName && ns === NS2.HTML) {
            return true;
          }
          if (tn === $2.BUTTON && ns === NS2.HTML || isScopingElement(tn, ns)) {
            return false;
          }
        }
        return true;
      }
      hasInTableScope(tagName) {
        for (let i2 = this.stackTop; i2 >= 0; i2--) {
          const tn = this.treeAdapter.getTagName(this.items[i2]);
          const ns = this.treeAdapter.getNamespaceURI(this.items[i2]);
          if (ns !== NS2.HTML) {
            continue;
          }
          if (tn === tagName) {
            return true;
          }
          if (tn === $2.TABLE || tn === $2.TEMPLATE || tn === $2.HTML) {
            return false;
          }
        }
        return true;
      }
      hasTableBodyContextInTableScope() {
        for (let i2 = this.stackTop; i2 >= 0; i2--) {
          const tn = this.treeAdapter.getTagName(this.items[i2]);
          const ns = this.treeAdapter.getNamespaceURI(this.items[i2]);
          if (ns !== NS2.HTML) {
            continue;
          }
          if (tn === $2.TBODY || tn === $2.THEAD || tn === $2.TFOOT) {
            return true;
          }
          if (tn === $2.TABLE || tn === $2.HTML) {
            return false;
          }
        }
        return true;
      }
      hasInSelectScope(tagName) {
        for (let i2 = this.stackTop; i2 >= 0; i2--) {
          const tn = this.treeAdapter.getTagName(this.items[i2]);
          const ns = this.treeAdapter.getNamespaceURI(this.items[i2]);
          if (ns !== NS2.HTML) {
            continue;
          }
          if (tn === tagName) {
            return true;
          }
          if (tn !== $2.OPTION && tn !== $2.OPTGROUP) {
            return false;
          }
        }
        return true;
      }
      //Implied end tags
      generateImpliedEndTags() {
        while (isImpliedEndTagRequired(this.currentTagName)) {
          this.pop();
        }
      }
      generateImpliedEndTagsThoroughly() {
        while (isImpliedEndTagRequiredThoroughly(this.currentTagName)) {
          this.pop();
        }
      }
      generateImpliedEndTagsWithExclusion(exclusionTagName) {
        while (isImpliedEndTagRequired(this.currentTagName) && this.currentTagName !== exclusionTagName) {
          this.pop();
        }
      }
    };
    module2.exports = OpenElementStack2;
  }
});

// ../../node_modules/parse5/lib/parser/formatting-element-list.js
var require_formatting_element_list = __commonJS({
  "../../node_modules/parse5/lib/parser/formatting-element-list.js"(exports2, module2) {
    "use strict";
    var NOAH_ARK_CAPACITY2 = 3;
    var FormattingElementList2 = class _FormattingElementList {
      constructor(treeAdapter) {
        this.length = 0;
        this.entries = [];
        this.treeAdapter = treeAdapter;
        this.bookmark = null;
      }
      //Noah Ark's condition
      //OPTIMIZATION: at first we try to find possible candidates for exclusion using
      //lightweight heuristics without thorough attributes check.
      _getNoahArkConditionCandidates(newElement) {
        const candidates = [];
        if (this.length >= NOAH_ARK_CAPACITY2) {
          const neAttrsLength = this.treeAdapter.getAttrList(newElement).length;
          const neTagName = this.treeAdapter.getTagName(newElement);
          const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);
          for (let i2 = this.length - 1; i2 >= 0; i2--) {
            const entry = this.entries[i2];
            if (entry.type === _FormattingElementList.MARKER_ENTRY) {
              break;
            }
            const element5 = entry.element;
            const elementAttrs = this.treeAdapter.getAttrList(element5);
            const isCandidate = this.treeAdapter.getTagName(element5) === neTagName && this.treeAdapter.getNamespaceURI(element5) === neNamespaceURI && elementAttrs.length === neAttrsLength;
            if (isCandidate) {
              candidates.push({ idx: i2, attrs: elementAttrs });
            }
          }
        }
        return candidates.length < NOAH_ARK_CAPACITY2 ? [] : candidates;
      }
      _ensureNoahArkCondition(newElement) {
        const candidates = this._getNoahArkConditionCandidates(newElement);
        let cLength = candidates.length;
        if (cLength) {
          const neAttrs = this.treeAdapter.getAttrList(newElement);
          const neAttrsLength = neAttrs.length;
          const neAttrsMap = /* @__PURE__ */ Object.create(null);
          for (let i2 = 0; i2 < neAttrsLength; i2++) {
            const neAttr = neAttrs[i2];
            neAttrsMap[neAttr.name] = neAttr.value;
          }
          for (let i2 = 0; i2 < neAttrsLength; i2++) {
            for (let j = 0; j < cLength; j++) {
              const cAttr = candidates[j].attrs[i2];
              if (neAttrsMap[cAttr.name] !== cAttr.value) {
                candidates.splice(j, 1);
                cLength--;
              }
              if (candidates.length < NOAH_ARK_CAPACITY2) {
                return;
              }
            }
          }
          for (let i2 = cLength - 1; i2 >= NOAH_ARK_CAPACITY2 - 1; i2--) {
            this.entries.splice(candidates[i2].idx, 1);
            this.length--;
          }
        }
      }
      //Mutations
      insertMarker() {
        this.entries.push({ type: _FormattingElementList.MARKER_ENTRY });
        this.length++;
      }
      pushElement(element5, token) {
        this._ensureNoahArkCondition(element5);
        this.entries.push({
          type: _FormattingElementList.ELEMENT_ENTRY,
          element: element5,
          token
        });
        this.length++;
      }
      insertElementAfterBookmark(element5, token) {
        let bookmarkIdx = this.length - 1;
        for (; bookmarkIdx >= 0; bookmarkIdx--) {
          if (this.entries[bookmarkIdx] === this.bookmark) {
            break;
          }
        }
        this.entries.splice(bookmarkIdx + 1, 0, {
          type: _FormattingElementList.ELEMENT_ENTRY,
          element: element5,
          token
        });
        this.length++;
      }
      removeEntry(entry) {
        for (let i2 = this.length - 1; i2 >= 0; i2--) {
          if (this.entries[i2] === entry) {
            this.entries.splice(i2, 1);
            this.length--;
            break;
          }
        }
      }
      clearToLastMarker() {
        while (this.length) {
          const entry = this.entries.pop();
          this.length--;
          if (entry.type === _FormattingElementList.MARKER_ENTRY) {
            break;
          }
        }
      }
      //Search
      getElementEntryInScopeWithTagName(tagName) {
        for (let i2 = this.length - 1; i2 >= 0; i2--) {
          const entry = this.entries[i2];
          if (entry.type === _FormattingElementList.MARKER_ENTRY) {
            return null;
          }
          if (this.treeAdapter.getTagName(entry.element) === tagName) {
            return entry;
          }
        }
        return null;
      }
      getElementEntry(element5) {
        for (let i2 = this.length - 1; i2 >= 0; i2--) {
          const entry = this.entries[i2];
          if (entry.type === _FormattingElementList.ELEMENT_ENTRY && entry.element === element5) {
            return entry;
          }
        }
        return null;
      }
    };
    FormattingElementList2.MARKER_ENTRY = "MARKER_ENTRY";
    FormattingElementList2.ELEMENT_ENTRY = "ELEMENT_ENTRY";
    module2.exports = FormattingElementList2;
  }
});

// ../../node_modules/parse5/lib/utils/mixin.js
var require_mixin = __commonJS({
  "../../node_modules/parse5/lib/utils/mixin.js"(exports2, module2) {
    "use strict";
    var Mixin = class {
      constructor(host) {
        const originalMethods = {};
        const overriddenMethods = this._getOverriddenMethods(this, originalMethods);
        for (const key2 of Object.keys(overriddenMethods)) {
          if (typeof overriddenMethods[key2] === "function") {
            originalMethods[key2] = host[key2];
            host[key2] = overriddenMethods[key2];
          }
        }
      }
      _getOverriddenMethods() {
        throw new Error("Not implemented");
      }
    };
    Mixin.install = function(host, Ctor, opts) {
      if (!host.__mixins) {
        host.__mixins = [];
      }
      for (let i2 = 0; i2 < host.__mixins.length; i2++) {
        if (host.__mixins[i2].constructor === Ctor) {
          return host.__mixins[i2];
        }
      }
      const mixin = new Ctor(host, opts);
      host.__mixins.push(mixin);
      return mixin;
    };
    module2.exports = Mixin;
  }
});

// ../../node_modules/parse5/lib/extensions/position-tracking/preprocessor-mixin.js
var require_preprocessor_mixin = __commonJS({
  "../../node_modules/parse5/lib/extensions/position-tracking/preprocessor-mixin.js"(exports2, module2) {
    "use strict";
    var Mixin = require_mixin();
    var PositionTrackingPreprocessorMixin = class extends Mixin {
      constructor(preprocessor) {
        super(preprocessor);
        this.preprocessor = preprocessor;
        this.isEol = false;
        this.lineStartPos = 0;
        this.droppedBufferSize = 0;
        this.offset = 0;
        this.col = 0;
        this.line = 1;
      }
      _getOverriddenMethods(mxn, orig) {
        return {
          advance() {
            const pos = this.pos + 1;
            const ch = this.html[pos];
            if (mxn.isEol) {
              mxn.isEol = false;
              mxn.line++;
              mxn.lineStartPos = pos;
            }
            if (ch === "\n" || ch === "\r" && this.html[pos + 1] !== "\n") {
              mxn.isEol = true;
            }
            mxn.col = pos - mxn.lineStartPos + 1;
            mxn.offset = mxn.droppedBufferSize + pos;
            return orig.advance.call(this);
          },
          retreat() {
            orig.retreat.call(this);
            mxn.isEol = false;
            mxn.col = this.pos - mxn.lineStartPos + 1;
          },
          dropParsedChunk() {
            const prevPos = this.pos;
            orig.dropParsedChunk.call(this);
            const reduction = prevPos - this.pos;
            mxn.lineStartPos -= reduction;
            mxn.droppedBufferSize += reduction;
            mxn.offset = mxn.droppedBufferSize + this.pos;
          }
        };
      }
    };
    module2.exports = PositionTrackingPreprocessorMixin;
  }
});

// ../../node_modules/parse5/lib/extensions/location-info/tokenizer-mixin.js
var require_tokenizer_mixin = __commonJS({
  "../../node_modules/parse5/lib/extensions/location-info/tokenizer-mixin.js"(exports2, module2) {
    "use strict";
    var Mixin = require_mixin();
    var Tokenizer2 = require_tokenizer();
    var PositionTrackingPreprocessorMixin = require_preprocessor_mixin();
    var LocationInfoTokenizerMixin = class extends Mixin {
      constructor(tokenizer) {
        super(tokenizer);
        this.tokenizer = tokenizer;
        this.posTracker = Mixin.install(tokenizer.preprocessor, PositionTrackingPreprocessorMixin);
        this.currentAttrLocation = null;
        this.ctLoc = null;
      }
      _getCurrentLocation() {
        return {
          startLine: this.posTracker.line,
          startCol: this.posTracker.col,
          startOffset: this.posTracker.offset,
          endLine: -1,
          endCol: -1,
          endOffset: -1
        };
      }
      _attachCurrentAttrLocationInfo() {
        this.currentAttrLocation.endLine = this.posTracker.line;
        this.currentAttrLocation.endCol = this.posTracker.col;
        this.currentAttrLocation.endOffset = this.posTracker.offset;
        const currentToken = this.tokenizer.currentToken;
        const currentAttr = this.tokenizer.currentAttr;
        if (!currentToken.location.attrs) {
          currentToken.location.attrs = /* @__PURE__ */ Object.create(null);
        }
        currentToken.location.attrs[currentAttr.name] = this.currentAttrLocation;
      }
      _getOverriddenMethods(mxn, orig) {
        const methods = {
          _createStartTagToken() {
            orig._createStartTagToken.call(this);
            this.currentToken.location = mxn.ctLoc;
          },
          _createEndTagToken() {
            orig._createEndTagToken.call(this);
            this.currentToken.location = mxn.ctLoc;
          },
          _createCommentToken() {
            orig._createCommentToken.call(this);
            this.currentToken.location = mxn.ctLoc;
          },
          _createDoctypeToken(initialName) {
            orig._createDoctypeToken.call(this, initialName);
            this.currentToken.location = mxn.ctLoc;
          },
          _createCharacterToken(type2, ch) {
            orig._createCharacterToken.call(this, type2, ch);
            this.currentCharacterToken.location = mxn.ctLoc;
          },
          _createEOFToken() {
            orig._createEOFToken.call(this);
            this.currentToken.location = mxn._getCurrentLocation();
          },
          _createAttr(attrNameFirstCh) {
            orig._createAttr.call(this, attrNameFirstCh);
            mxn.currentAttrLocation = mxn._getCurrentLocation();
          },
          _leaveAttrName(toState) {
            orig._leaveAttrName.call(this, toState);
            mxn._attachCurrentAttrLocationInfo();
          },
          _leaveAttrValue(toState) {
            orig._leaveAttrValue.call(this, toState);
            mxn._attachCurrentAttrLocationInfo();
          },
          _emitCurrentToken() {
            const ctLoc = this.currentToken.location;
            if (this.currentCharacterToken) {
              this.currentCharacterToken.location.endLine = ctLoc.startLine;
              this.currentCharacterToken.location.endCol = ctLoc.startCol;
              this.currentCharacterToken.location.endOffset = ctLoc.startOffset;
            }
            if (this.currentToken.type === Tokenizer2.EOF_TOKEN) {
              ctLoc.endLine = ctLoc.startLine;
              ctLoc.endCol = ctLoc.startCol;
              ctLoc.endOffset = ctLoc.startOffset;
            } else {
              ctLoc.endLine = mxn.posTracker.line;
              ctLoc.endCol = mxn.posTracker.col + 1;
              ctLoc.endOffset = mxn.posTracker.offset + 1;
            }
            orig._emitCurrentToken.call(this);
          },
          _emitCurrentCharacterToken() {
            const ctLoc = this.currentCharacterToken && this.currentCharacterToken.location;
            if (ctLoc && ctLoc.endOffset === -1) {
              ctLoc.endLine = mxn.posTracker.line;
              ctLoc.endCol = mxn.posTracker.col;
              ctLoc.endOffset = mxn.posTracker.offset;
            }
            orig._emitCurrentCharacterToken.call(this);
          }
        };
        Object.keys(Tokenizer2.MODE).forEach((modeName) => {
          const state = Tokenizer2.MODE[modeName];
          methods[state] = function(cp) {
            mxn.ctLoc = mxn._getCurrentLocation();
            orig[state].call(this, cp);
          };
        });
        return methods;
      }
    };
    module2.exports = LocationInfoTokenizerMixin;
  }
});

// ../../node_modules/parse5/lib/extensions/location-info/open-element-stack-mixin.js
var require_open_element_stack_mixin = __commonJS({
  "../../node_modules/parse5/lib/extensions/location-info/open-element-stack-mixin.js"(exports2, module2) {
    "use strict";
    var Mixin = require_mixin();
    var LocationInfoOpenElementStackMixin = class extends Mixin {
      constructor(stack, opts) {
        super(stack);
        this.onItemPop = opts.onItemPop;
      }
      _getOverriddenMethods(mxn, orig) {
        return {
          pop() {
            mxn.onItemPop(this.current);
            orig.pop.call(this);
          },
          popAllUpToHtmlElement() {
            for (let i2 = this.stackTop; i2 > 0; i2--) {
              mxn.onItemPop(this.items[i2]);
            }
            orig.popAllUpToHtmlElement.call(this);
          },
          remove(element5) {
            mxn.onItemPop(this.current);
            orig.remove.call(this, element5);
          }
        };
      }
    };
    module2.exports = LocationInfoOpenElementStackMixin;
  }
});

// ../../node_modules/parse5/lib/extensions/location-info/parser-mixin.js
var require_parser_mixin = __commonJS({
  "../../node_modules/parse5/lib/extensions/location-info/parser-mixin.js"(exports2, module2) {
    "use strict";
    var Mixin = require_mixin();
    var Tokenizer2 = require_tokenizer();
    var LocationInfoTokenizerMixin = require_tokenizer_mixin();
    var LocationInfoOpenElementStackMixin = require_open_element_stack_mixin();
    var HTML = require_html2();
    var $2 = HTML.TAG_NAMES;
    var LocationInfoParserMixin = class extends Mixin {
      constructor(parser3) {
        super(parser3);
        this.parser = parser3;
        this.treeAdapter = this.parser.treeAdapter;
        this.posTracker = null;
        this.lastStartTagToken = null;
        this.lastFosterParentingLocation = null;
        this.currentToken = null;
      }
      _setStartLocation(element5) {
        let loc = null;
        if (this.lastStartTagToken) {
          loc = Object.assign({}, this.lastStartTagToken.location);
          loc.startTag = this.lastStartTagToken.location;
        }
        this.treeAdapter.setNodeSourceCodeLocation(element5, loc);
      }
      _setEndLocation(element5, closingToken) {
        const loc = this.treeAdapter.getNodeSourceCodeLocation(element5);
        if (loc) {
          if (closingToken.location) {
            const ctLoc = closingToken.location;
            const tn = this.treeAdapter.getTagName(element5);
            const isClosingEndTag = closingToken.type === Tokenizer2.END_TAG_TOKEN && tn === closingToken.tagName;
            const endLoc = {};
            if (isClosingEndTag) {
              endLoc.endTag = Object.assign({}, ctLoc);
              endLoc.endLine = ctLoc.endLine;
              endLoc.endCol = ctLoc.endCol;
              endLoc.endOffset = ctLoc.endOffset;
            } else {
              endLoc.endLine = ctLoc.startLine;
              endLoc.endCol = ctLoc.startCol;
              endLoc.endOffset = ctLoc.startOffset;
            }
            this.treeAdapter.updateNodeSourceCodeLocation(element5, endLoc);
          }
        }
      }
      _getOverriddenMethods(mxn, orig) {
        return {
          _bootstrap(document2, fragmentContext) {
            orig._bootstrap.call(this, document2, fragmentContext);
            mxn.lastStartTagToken = null;
            mxn.lastFosterParentingLocation = null;
            mxn.currentToken = null;
            const tokenizerMixin = Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);
            mxn.posTracker = tokenizerMixin.posTracker;
            Mixin.install(this.openElements, LocationInfoOpenElementStackMixin, {
              onItemPop: function(element5) {
                mxn._setEndLocation(element5, mxn.currentToken);
              }
            });
          },
          _runParsingLoop(scriptHandler) {
            orig._runParsingLoop.call(this, scriptHandler);
            for (let i2 = this.openElements.stackTop; i2 >= 0; i2--) {
              mxn._setEndLocation(this.openElements.items[i2], mxn.currentToken);
            }
          },
          //Token processing
          _processTokenInForeignContent(token) {
            mxn.currentToken = token;
            orig._processTokenInForeignContent.call(this, token);
          },
          _processToken(token) {
            mxn.currentToken = token;
            orig._processToken.call(this, token);
            const requireExplicitUpdate = token.type === Tokenizer2.END_TAG_TOKEN && (token.tagName === $2.HTML || token.tagName === $2.BODY && this.openElements.hasInScope($2.BODY));
            if (requireExplicitUpdate) {
              for (let i2 = this.openElements.stackTop; i2 >= 0; i2--) {
                const element5 = this.openElements.items[i2];
                if (this.treeAdapter.getTagName(element5) === token.tagName) {
                  mxn._setEndLocation(element5, token);
                  break;
                }
              }
            }
          },
          //Doctype
          _setDocumentType(token) {
            orig._setDocumentType.call(this, token);
            const documentChildren = this.treeAdapter.getChildNodes(this.document);
            const cnLength = documentChildren.length;
            for (let i2 = 0; i2 < cnLength; i2++) {
              const node3 = documentChildren[i2];
              if (this.treeAdapter.isDocumentTypeNode(node3)) {
                this.treeAdapter.setNodeSourceCodeLocation(node3, token.location);
                break;
              }
            }
          },
          //Elements
          _attachElementToTree(element5) {
            mxn._setStartLocation(element5);
            mxn.lastStartTagToken = null;
            orig._attachElementToTree.call(this, element5);
          },
          _appendElement(token, namespaceURI) {
            mxn.lastStartTagToken = token;
            orig._appendElement.call(this, token, namespaceURI);
          },
          _insertElement(token, namespaceURI) {
            mxn.lastStartTagToken = token;
            orig._insertElement.call(this, token, namespaceURI);
          },
          _insertTemplate(token) {
            mxn.lastStartTagToken = token;
            orig._insertTemplate.call(this, token);
            const tmplContent = this.treeAdapter.getTemplateContent(this.openElements.current);
            this.treeAdapter.setNodeSourceCodeLocation(tmplContent, null);
          },
          _insertFakeRootElement() {
            orig._insertFakeRootElement.call(this);
            this.treeAdapter.setNodeSourceCodeLocation(this.openElements.current, null);
          },
          //Comments
          _appendCommentNode(token, parent2) {
            orig._appendCommentNode.call(this, token, parent2);
            const children = this.treeAdapter.getChildNodes(parent2);
            const commentNode = children[children.length - 1];
            this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);
          },
          //Text
          _findFosterParentingLocation() {
            mxn.lastFosterParentingLocation = orig._findFosterParentingLocation.call(this);
            return mxn.lastFosterParentingLocation;
          },
          _insertCharacters(token) {
            orig._insertCharacters.call(this, token);
            const hasFosterParent = this._shouldFosterParentOnInsertion();
            const parent2 = hasFosterParent && mxn.lastFosterParentingLocation.parent || this.openElements.currentTmplContent || this.openElements.current;
            const siblings2 = this.treeAdapter.getChildNodes(parent2);
            const textNodeIdx = hasFosterParent && mxn.lastFosterParentingLocation.beforeElement ? siblings2.indexOf(mxn.lastFosterParentingLocation.beforeElement) - 1 : siblings2.length - 1;
            const textNode = siblings2[textNodeIdx];
            const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);
            if (tnLoc) {
              const { endLine, endCol, endOffset } = token.location;
              this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });
            } else {
              this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);
            }
          }
        };
      }
    };
    module2.exports = LocationInfoParserMixin;
  }
});

// ../../node_modules/parse5/lib/extensions/error-reporting/mixin-base.js
var require_mixin_base = __commonJS({
  "../../node_modules/parse5/lib/extensions/error-reporting/mixin-base.js"(exports2, module2) {
    "use strict";
    var Mixin = require_mixin();
    var ErrorReportingMixinBase = class extends Mixin {
      constructor(host, opts) {
        super(host);
        this.posTracker = null;
        this.onParseError = opts.onParseError;
      }
      _setErrorLocation(err) {
        err.startLine = err.endLine = this.posTracker.line;
        err.startCol = err.endCol = this.posTracker.col;
        err.startOffset = err.endOffset = this.posTracker.offset;
      }
      _reportError(code7) {
        const err = {
          code: code7,
          startLine: -1,
          startCol: -1,
          startOffset: -1,
          endLine: -1,
          endCol: -1,
          endOffset: -1
        };
        this._setErrorLocation(err);
        this.onParseError(err);
      }
      _getOverriddenMethods(mxn) {
        return {
          _err(code7) {
            mxn._reportError(code7);
          }
        };
      }
    };
    module2.exports = ErrorReportingMixinBase;
  }
});

// ../../node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js
var require_preprocessor_mixin2 = __commonJS({
  "../../node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js"(exports2, module2) {
    "use strict";
    var ErrorReportingMixinBase = require_mixin_base();
    var PositionTrackingPreprocessorMixin = require_preprocessor_mixin();
    var Mixin = require_mixin();
    var ErrorReportingPreprocessorMixin = class extends ErrorReportingMixinBase {
      constructor(preprocessor, opts) {
        super(preprocessor, opts);
        this.posTracker = Mixin.install(preprocessor, PositionTrackingPreprocessorMixin);
        this.lastErrOffset = -1;
      }
      _reportError(code7) {
        if (this.lastErrOffset !== this.posTracker.offset) {
          this.lastErrOffset = this.posTracker.offset;
          super._reportError(code7);
        }
      }
    };
    module2.exports = ErrorReportingPreprocessorMixin;
  }
});

// ../../node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js
var require_tokenizer_mixin2 = __commonJS({
  "../../node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js"(exports2, module2) {
    "use strict";
    var ErrorReportingMixinBase = require_mixin_base();
    var ErrorReportingPreprocessorMixin = require_preprocessor_mixin2();
    var Mixin = require_mixin();
    var ErrorReportingTokenizerMixin = class extends ErrorReportingMixinBase {
      constructor(tokenizer, opts) {
        super(tokenizer, opts);
        const preprocessorMixin = Mixin.install(tokenizer.preprocessor, ErrorReportingPreprocessorMixin, opts);
        this.posTracker = preprocessorMixin.posTracker;
      }
    };
    module2.exports = ErrorReportingTokenizerMixin;
  }
});

// ../../node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
var require_parser_mixin2 = __commonJS({
  "../../node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js"(exports2, module2) {
    "use strict";
    var ErrorReportingMixinBase = require_mixin_base();
    var ErrorReportingTokenizerMixin = require_tokenizer_mixin2();
    var LocationInfoTokenizerMixin = require_tokenizer_mixin();
    var Mixin = require_mixin();
    var ErrorReportingParserMixin = class extends ErrorReportingMixinBase {
      constructor(parser3, opts) {
        super(parser3, opts);
        this.opts = opts;
        this.ctLoc = null;
        this.locBeforeToken = false;
      }
      _setErrorLocation(err) {
        if (this.ctLoc) {
          err.startLine = this.ctLoc.startLine;
          err.startCol = this.ctLoc.startCol;
          err.startOffset = this.ctLoc.startOffset;
          err.endLine = this.locBeforeToken ? this.ctLoc.startLine : this.ctLoc.endLine;
          err.endCol = this.locBeforeToken ? this.ctLoc.startCol : this.ctLoc.endCol;
          err.endOffset = this.locBeforeToken ? this.ctLoc.startOffset : this.ctLoc.endOffset;
        }
      }
      _getOverriddenMethods(mxn, orig) {
        return {
          _bootstrap(document2, fragmentContext) {
            orig._bootstrap.call(this, document2, fragmentContext);
            Mixin.install(this.tokenizer, ErrorReportingTokenizerMixin, mxn.opts);
            Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);
          },
          _processInputToken(token) {
            mxn.ctLoc = token.location;
            orig._processInputToken.call(this, token);
          },
          _err(code7, options) {
            mxn.locBeforeToken = options && options.beforeToken;
            mxn._reportError(code7);
          }
        };
      }
    };
    module2.exports = ErrorReportingParserMixin;
  }
});

// ../../node_modules/parse5/lib/tree-adapters/default.js
var require_default = __commonJS({
  "../../node_modules/parse5/lib/tree-adapters/default.js"(exports2) {
    "use strict";
    var { DOCUMENT_MODE: DOCUMENT_MODE2 } = require_html2();
    exports2.createDocument = function() {
      return {
        nodeName: "#document",
        mode: DOCUMENT_MODE2.NO_QUIRKS,
        childNodes: []
      };
    };
    exports2.createDocumentFragment = function() {
      return {
        nodeName: "#document-fragment",
        childNodes: []
      };
    };
    exports2.createElement = function(tagName, namespaceURI, attrs) {
      return {
        nodeName: tagName,
        tagName,
        attrs,
        namespaceURI,
        childNodes: [],
        parentNode: null
      };
    };
    exports2.createCommentNode = function(data) {
      return {
        nodeName: "#comment",
        data,
        parentNode: null
      };
    };
    var createTextNode2 = function(value) {
      return {
        nodeName: "#text",
        value,
        parentNode: null
      };
    };
    var appendChild = exports2.appendChild = function(parentNode, newNode) {
      parentNode.childNodes.push(newNode);
      newNode.parentNode = parentNode;
    };
    var insertBefore = exports2.insertBefore = function(parentNode, newNode, referenceNode) {
      const insertionIdx = parentNode.childNodes.indexOf(referenceNode);
      parentNode.childNodes.splice(insertionIdx, 0, newNode);
      newNode.parentNode = parentNode;
    };
    exports2.setTemplateContent = function(templateElement, contentElement) {
      templateElement.content = contentElement;
    };
    exports2.getTemplateContent = function(templateElement) {
      return templateElement.content;
    };
    exports2.setDocumentType = function(document2, name3, publicId, systemId) {
      let doctypeNode = null;
      for (let i2 = 0; i2 < document2.childNodes.length; i2++) {
        if (document2.childNodes[i2].nodeName === "#documentType") {
          doctypeNode = document2.childNodes[i2];
          break;
        }
      }
      if (doctypeNode) {
        doctypeNode.name = name3;
        doctypeNode.publicId = publicId;
        doctypeNode.systemId = systemId;
      } else {
        appendChild(document2, {
          nodeName: "#documentType",
          name: name3,
          publicId,
          systemId
        });
      }
    };
    exports2.setDocumentMode = function(document2, mode) {
      document2.mode = mode;
    };
    exports2.getDocumentMode = function(document2) {
      return document2.mode;
    };
    exports2.detachNode = function(node3) {
      if (node3.parentNode) {
        const idx = node3.parentNode.childNodes.indexOf(node3);
        node3.parentNode.childNodes.splice(idx, 1);
        node3.parentNode = null;
      }
    };
    exports2.insertText = function(parentNode, text7) {
      if (parentNode.childNodes.length) {
        const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];
        if (prevNode.nodeName === "#text") {
          prevNode.value += text7;
          return;
        }
      }
      appendChild(parentNode, createTextNode2(text7));
    };
    exports2.insertTextBefore = function(parentNode, text7, referenceNode) {
      const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];
      if (prevNode && prevNode.nodeName === "#text") {
        prevNode.value += text7;
      } else {
        insertBefore(parentNode, createTextNode2(text7), referenceNode);
      }
    };
    exports2.adoptAttributes = function(recipient, attrs) {
      const recipientAttrsMap = [];
      for (let i2 = 0; i2 < recipient.attrs.length; i2++) {
        recipientAttrsMap.push(recipient.attrs[i2].name);
      }
      for (let j = 0; j < attrs.length; j++) {
        if (recipientAttrsMap.indexOf(attrs[j].name) === -1) {
          recipient.attrs.push(attrs[j]);
        }
      }
    };
    exports2.getFirstChild = function(node3) {
      return node3.childNodes[0];
    };
    exports2.getChildNodes = function(node3) {
      return node3.childNodes;
    };
    exports2.getParentNode = function(node3) {
      return node3.parentNode;
    };
    exports2.getAttrList = function(element5) {
      return element5.attrs;
    };
    exports2.getTagName = function(element5) {
      return element5.tagName;
    };
    exports2.getNamespaceURI = function(element5) {
      return element5.namespaceURI;
    };
    exports2.getTextNodeContent = function(textNode) {
      return textNode.value;
    };
    exports2.getCommentNodeContent = function(commentNode) {
      return commentNode.data;
    };
    exports2.getDocumentTypeNodeName = function(doctypeNode) {
      return doctypeNode.name;
    };
    exports2.getDocumentTypeNodePublicId = function(doctypeNode) {
      return doctypeNode.publicId;
    };
    exports2.getDocumentTypeNodeSystemId = function(doctypeNode) {
      return doctypeNode.systemId;
    };
    exports2.isTextNode = function(node3) {
      return node3.nodeName === "#text";
    };
    exports2.isCommentNode = function(node3) {
      return node3.nodeName === "#comment";
    };
    exports2.isDocumentTypeNode = function(node3) {
      return node3.nodeName === "#documentType";
    };
    exports2.isElementNode = function(node3) {
      return !!node3.tagName;
    };
    exports2.setNodeSourceCodeLocation = function(node3, location4) {
      node3.sourceCodeLocation = location4;
    };
    exports2.getNodeSourceCodeLocation = function(node3) {
      return node3.sourceCodeLocation;
    };
    exports2.updateNodeSourceCodeLocation = function(node3, endLocation) {
      node3.sourceCodeLocation = Object.assign(node3.sourceCodeLocation, endLocation);
    };
  }
});

// ../../node_modules/parse5/lib/utils/merge-options.js
var require_merge_options = __commonJS({
  "../../node_modules/parse5/lib/utils/merge-options.js"(exports2, module2) {
    "use strict";
    module2.exports = function mergeOptions(defaults3, options) {
      options = options || /* @__PURE__ */ Object.create(null);
      return [defaults3, options].reduce((merged, optObj) => {
        Object.keys(optObj).forEach((key2) => {
          merged[key2] = optObj[key2];
        });
        return merged;
      }, /* @__PURE__ */ Object.create(null));
    };
  }
});

// ../../node_modules/parse5/lib/common/doctype.js
var require_doctype = __commonJS({
  "../../node_modules/parse5/lib/common/doctype.js"(exports2) {
    "use strict";
    var { DOCUMENT_MODE: DOCUMENT_MODE2 } = require_html2();
    var VALID_DOCTYPE_NAME2 = "html";
    var VALID_SYSTEM_ID2 = "about:legacy-compat";
    var QUIRKS_MODE_SYSTEM_ID2 = "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd";
    var QUIRKS_MODE_PUBLIC_ID_PREFIXES2 = [
      "+//silmaril//dtd html pro v0r11 19970101//",
      "-//as//dtd html 3.0 aswedit + extensions//",
      "-//advasoft ltd//dtd html 3.0 aswedit + extensions//",
      "-//ietf//dtd html 2.0 level 1//",
      "-//ietf//dtd html 2.0 level 2//",
      "-//ietf//dtd html 2.0 strict level 1//",
      "-//ietf//dtd html 2.0 strict level 2//",
      "-//ietf//dtd html 2.0 strict//",
      "-//ietf//dtd html 2.0//",
      "-//ietf//dtd html 2.1e//",
      "-//ietf//dtd html 3.0//",
      "-//ietf//dtd html 3.2 final//",
      "-//ietf//dtd html 3.2//",
      "-//ietf//dtd html 3//",
      "-//ietf//dtd html level 0//",
      "-//ietf//dtd html level 1//",
      "-//ietf//dtd html level 2//",
      "-//ietf//dtd html level 3//",
      "-//ietf//dtd html strict level 0//",
      "-//ietf//dtd html strict level 1//",
      "-//ietf//dtd html strict level 2//",
      "-//ietf//dtd html strict level 3//",
      "-//ietf//dtd html strict//",
      "-//ietf//dtd html//",
      "-//metrius//dtd metrius presentational//",
      "-//microsoft//dtd internet explorer 2.0 html strict//",
      "-//microsoft//dtd internet explorer 2.0 html//",
      "-//microsoft//dtd internet explorer 2.0 tables//",
      "-//microsoft//dtd internet explorer 3.0 html strict//",
      "-//microsoft//dtd internet explorer 3.0 html//",
      "-//microsoft//dtd internet explorer 3.0 tables//",
      "-//netscape comm. corp.//dtd html//",
      "-//netscape comm. corp.//dtd strict html//",
      "-//o'reilly and associates//dtd html 2.0//",
      "-//o'reilly and associates//dtd html extended 1.0//",
      "-//o'reilly and associates//dtd html extended relaxed 1.0//",
      "-//sq//dtd html 2.0 hotmetal + extensions//",
      "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//",
      "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//",
      "-//spyglass//dtd html 2.0 extended//",
      "-//sun microsystems corp.//dtd hotjava html//",
      "-//sun microsystems corp.//dtd hotjava strict html//",
      "-//w3c//dtd html 3 1995-03-24//",
      "-//w3c//dtd html 3.2 draft//",
      "-//w3c//dtd html 3.2 final//",
      "-//w3c//dtd html 3.2//",
      "-//w3c//dtd html 3.2s draft//",
      "-//w3c//dtd html 4.0 frameset//",
      "-//w3c//dtd html 4.0 transitional//",
      "-//w3c//dtd html experimental 19960712//",
      "-//w3c//dtd html experimental 970421//",
      "-//w3c//dtd w3 html//",
      "-//w3o//dtd w3 html 3.0//",
      "-//webtechs//dtd mozilla html 2.0//",
      "-//webtechs//dtd mozilla html//"
    ];
    var QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES2 = QUIRKS_MODE_PUBLIC_ID_PREFIXES2.concat([
      "-//w3c//dtd html 4.01 frameset//",
      "-//w3c//dtd html 4.01 transitional//"
    ]);
    var QUIRKS_MODE_PUBLIC_IDS2 = ["-//w3o//dtd w3 html strict 3.0//en//", "-/w3c/dtd html 4.0 transitional/en", "html"];
    var LIMITED_QUIRKS_PUBLIC_ID_PREFIXES2 = ["-//w3c//dtd xhtml 1.0 frameset//", "-//w3c//dtd xhtml 1.0 transitional//"];
    var LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES2 = LIMITED_QUIRKS_PUBLIC_ID_PREFIXES2.concat([
      "-//w3c//dtd html 4.01 frameset//",
      "-//w3c//dtd html 4.01 transitional//"
    ]);
    function enquoteDoctypeId(id) {
      const quote = id.indexOf('"') !== -1 ? "'" : '"';
      return quote + id + quote;
    }
    function hasPrefix2(publicId, prefixes) {
      for (let i2 = 0; i2 < prefixes.length; i2++) {
        if (publicId.indexOf(prefixes[i2]) === 0) {
          return true;
        }
      }
      return false;
    }
    exports2.isConforming = function(token) {
      return token.name === VALID_DOCTYPE_NAME2 && token.publicId === null && (token.systemId === null || token.systemId === VALID_SYSTEM_ID2);
    };
    exports2.getDocumentMode = function(token) {
      if (token.name !== VALID_DOCTYPE_NAME2) {
        return DOCUMENT_MODE2.QUIRKS;
      }
      const systemId = token.systemId;
      if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID2) {
        return DOCUMENT_MODE2.QUIRKS;
      }
      let publicId = token.publicId;
      if (publicId !== null) {
        publicId = publicId.toLowerCase();
        if (QUIRKS_MODE_PUBLIC_IDS2.indexOf(publicId) > -1) {
          return DOCUMENT_MODE2.QUIRKS;
        }
        let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES2 : QUIRKS_MODE_PUBLIC_ID_PREFIXES2;
        if (hasPrefix2(publicId, prefixes)) {
          return DOCUMENT_MODE2.QUIRKS;
        }
        prefixes = systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES2 : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES2;
        if (hasPrefix2(publicId, prefixes)) {
          return DOCUMENT_MODE2.LIMITED_QUIRKS;
        }
      }
      return DOCUMENT_MODE2.NO_QUIRKS;
    };
    exports2.serializeContent = function(name3, publicId, systemId) {
      let str2 = "!DOCTYPE ";
      if (name3) {
        str2 += name3;
      }
      if (publicId) {
        str2 += " PUBLIC " + enquoteDoctypeId(publicId);
      } else if (systemId) {
        str2 += " SYSTEM";
      }
      if (systemId !== null) {
        str2 += " " + enquoteDoctypeId(systemId);
      }
      return str2;
    };
  }
});

// ../../node_modules/parse5/lib/common/foreign-content.js
var require_foreign_content = __commonJS({
  "../../node_modules/parse5/lib/common/foreign-content.js"(exports2) {
    "use strict";
    var Tokenizer2 = require_tokenizer();
    var HTML = require_html2();
    var $2 = HTML.TAG_NAMES;
    var NS2 = HTML.NAMESPACES;
    var ATTRS2 = HTML.ATTRS;
    var MIME_TYPES2 = {
      TEXT_HTML: "text/html",
      APPLICATION_XML: "application/xhtml+xml"
    };
    var DEFINITION_URL_ATTR2 = "definitionurl";
    var ADJUSTED_DEFINITION_URL_ATTR2 = "definitionURL";
    var SVG_ATTRS_ADJUSTMENT_MAP2 = {
      attributename: "attributeName",
      attributetype: "attributeType",
      basefrequency: "baseFrequency",
      baseprofile: "baseProfile",
      calcmode: "calcMode",
      clippathunits: "clipPathUnits",
      diffuseconstant: "diffuseConstant",
      edgemode: "edgeMode",
      filterunits: "filterUnits",
      glyphref: "glyphRef",
      gradienttransform: "gradientTransform",
      gradientunits: "gradientUnits",
      kernelmatrix: "kernelMatrix",
      kernelunitlength: "kernelUnitLength",
      keypoints: "keyPoints",
      keysplines: "keySplines",
      keytimes: "keyTimes",
      lengthadjust: "lengthAdjust",
      limitingconeangle: "limitingConeAngle",
      markerheight: "markerHeight",
      markerunits: "markerUnits",
      markerwidth: "markerWidth",
      maskcontentunits: "maskContentUnits",
      maskunits: "maskUnits",
      numoctaves: "numOctaves",
      pathlength: "pathLength",
      patterncontentunits: "patternContentUnits",
      patterntransform: "patternTransform",
      patternunits: "patternUnits",
      pointsatx: "pointsAtX",
      pointsaty: "pointsAtY",
      pointsatz: "pointsAtZ",
      preservealpha: "preserveAlpha",
      preserveaspectratio: "preserveAspectRatio",
      primitiveunits: "primitiveUnits",
      refx: "refX",
      refy: "refY",
      repeatcount: "repeatCount",
      repeatdur: "repeatDur",
      requiredextensions: "requiredExtensions",
      requiredfeatures: "requiredFeatures",
      specularconstant: "specularConstant",
      specularexponent: "specularExponent",
      spreadmethod: "spreadMethod",
      startoffset: "startOffset",
      stddeviation: "stdDeviation",
      stitchtiles: "stitchTiles",
      surfacescale: "surfaceScale",
      systemlanguage: "systemLanguage",
      tablevalues: "tableValues",
      targetx: "targetX",
      targety: "targetY",
      textlength: "textLength",
      viewbox: "viewBox",
      viewtarget: "viewTarget",
      xchannelselector: "xChannelSelector",
      ychannelselector: "yChannelSelector",
      zoomandpan: "zoomAndPan"
    };
    var XML_ATTRS_ADJUSTMENT_MAP2 = {
      "xlink:actuate": { prefix: "xlink", name: "actuate", namespace: NS2.XLINK },
      "xlink:arcrole": { prefix: "xlink", name: "arcrole", namespace: NS2.XLINK },
      "xlink:href": { prefix: "xlink", name: "href", namespace: NS2.XLINK },
      "xlink:role": { prefix: "xlink", name: "role", namespace: NS2.XLINK },
      "xlink:show": { prefix: "xlink", name: "show", namespace: NS2.XLINK },
      "xlink:title": { prefix: "xlink", name: "title", namespace: NS2.XLINK },
      "xlink:type": { prefix: "xlink", name: "type", namespace: NS2.XLINK },
      "xml:base": { prefix: "xml", name: "base", namespace: NS2.XML },
      "xml:lang": { prefix: "xml", name: "lang", namespace: NS2.XML },
      "xml:space": { prefix: "xml", name: "space", namespace: NS2.XML },
      xmlns: { prefix: "", name: "xmlns", namespace: NS2.XMLNS },
      "xmlns:xlink": { prefix: "xmlns", name: "xlink", namespace: NS2.XMLNS }
    };
    var SVG_TAG_NAMES_ADJUSTMENT_MAP2 = exports2.SVG_TAG_NAMES_ADJUSTMENT_MAP = {
      altglyph: "altGlyph",
      altglyphdef: "altGlyphDef",
      altglyphitem: "altGlyphItem",
      animatecolor: "animateColor",
      animatemotion: "animateMotion",
      animatetransform: "animateTransform",
      clippath: "clipPath",
      feblend: "feBlend",
      fecolormatrix: "feColorMatrix",
      fecomponenttransfer: "feComponentTransfer",
      fecomposite: "feComposite",
      feconvolvematrix: "feConvolveMatrix",
      fediffuselighting: "feDiffuseLighting",
      fedisplacementmap: "feDisplacementMap",
      fedistantlight: "feDistantLight",
      feflood: "feFlood",
      fefunca: "feFuncA",
      fefuncb: "feFuncB",
      fefuncg: "feFuncG",
      fefuncr: "feFuncR",
      fegaussianblur: "feGaussianBlur",
      feimage: "feImage",
      femerge: "feMerge",
      femergenode: "feMergeNode",
      femorphology: "feMorphology",
      feoffset: "feOffset",
      fepointlight: "fePointLight",
      fespecularlighting: "feSpecularLighting",
      fespotlight: "feSpotLight",
      fetile: "feTile",
      feturbulence: "feTurbulence",
      foreignobject: "foreignObject",
      glyphref: "glyphRef",
      lineargradient: "linearGradient",
      radialgradient: "radialGradient",
      textpath: "textPath"
    };
    var EXITS_FOREIGN_CONTENT2 = {
      [$2.B]: true,
      [$2.BIG]: true,
      [$2.BLOCKQUOTE]: true,
      [$2.BODY]: true,
      [$2.BR]: true,
      [$2.CENTER]: true,
      [$2.CODE]: true,
      [$2.DD]: true,
      [$2.DIV]: true,
      [$2.DL]: true,
      [$2.DT]: true,
      [$2.EM]: true,
      [$2.EMBED]: true,
      [$2.H1]: true,
      [$2.H2]: true,
      [$2.H3]: true,
      [$2.H4]: true,
      [$2.H5]: true,
      [$2.H6]: true,
      [$2.HEAD]: true,
      [$2.HR]: true,
      [$2.I]: true,
      [$2.IMG]: true,
      [$2.LI]: true,
      [$2.LISTING]: true,
      [$2.MENU]: true,
      [$2.META]: true,
      [$2.NOBR]: true,
      [$2.OL]: true,
      [$2.P]: true,
      [$2.PRE]: true,
      [$2.RUBY]: true,
      [$2.S]: true,
      [$2.SMALL]: true,
      [$2.SPAN]: true,
      [$2.STRONG]: true,
      [$2.STRIKE]: true,
      [$2.SUB]: true,
      [$2.SUP]: true,
      [$2.TABLE]: true,
      [$2.TT]: true,
      [$2.U]: true,
      [$2.UL]: true,
      [$2.VAR]: true
    };
    exports2.causesExit = function(startTagToken) {
      const tn = startTagToken.tagName;
      const isFontWithAttrs = tn === $2.FONT && (Tokenizer2.getTokenAttr(startTagToken, ATTRS2.COLOR) !== null || Tokenizer2.getTokenAttr(startTagToken, ATTRS2.SIZE) !== null || Tokenizer2.getTokenAttr(startTagToken, ATTRS2.FACE) !== null);
      return isFontWithAttrs ? true : EXITS_FOREIGN_CONTENT2[tn];
    };
    exports2.adjustTokenMathMLAttrs = function(token) {
      for (let i2 = 0; i2 < token.attrs.length; i2++) {
        if (token.attrs[i2].name === DEFINITION_URL_ATTR2) {
          token.attrs[i2].name = ADJUSTED_DEFINITION_URL_ATTR2;
          break;
        }
      }
    };
    exports2.adjustTokenSVGAttrs = function(token) {
      for (let i2 = 0; i2 < token.attrs.length; i2++) {
        const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP2[token.attrs[i2].name];
        if (adjustedAttrName) {
          token.attrs[i2].name = adjustedAttrName;
        }
      }
    };
    exports2.adjustTokenXMLAttrs = function(token) {
      for (let i2 = 0; i2 < token.attrs.length; i2++) {
        const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP2[token.attrs[i2].name];
        if (adjustedAttrEntry) {
          token.attrs[i2].prefix = adjustedAttrEntry.prefix;
          token.attrs[i2].name = adjustedAttrEntry.name;
          token.attrs[i2].namespace = adjustedAttrEntry.namespace;
        }
      }
    };
    exports2.adjustTokenSVGTagName = function(token) {
      const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP2[token.tagName];
      if (adjustedTagName) {
        token.tagName = adjustedTagName;
      }
    };
    function isMathMLTextIntegrationPoint2(tn, ns) {
      return ns === NS2.MATHML && (tn === $2.MI || tn === $2.MO || tn === $2.MN || tn === $2.MS || tn === $2.MTEXT);
    }
    function isHtmlIntegrationPoint2(tn, ns, attrs) {
      if (ns === NS2.MATHML && tn === $2.ANNOTATION_XML) {
        for (let i2 = 0; i2 < attrs.length; i2++) {
          if (attrs[i2].name === ATTRS2.ENCODING) {
            const value = attrs[i2].value.toLowerCase();
            return value === MIME_TYPES2.TEXT_HTML || value === MIME_TYPES2.APPLICATION_XML;
          }
        }
      }
      return ns === NS2.SVG && (tn === $2.FOREIGN_OBJECT || tn === $2.DESC || tn === $2.TITLE);
    }
    exports2.isIntegrationPoint = function(tn, ns, attrs, foreignNS) {
      if ((!foreignNS || foreignNS === NS2.HTML) && isHtmlIntegrationPoint2(tn, ns, attrs)) {
        return true;
      }
      if ((!foreignNS || foreignNS === NS2.MATHML) && isMathMLTextIntegrationPoint2(tn, ns)) {
        return true;
      }
      return false;
    };
  }
});

// ../../node_modules/parse5/lib/parser/index.js
var require_parser = __commonJS({
  "../../node_modules/parse5/lib/parser/index.js"(exports2, module2) {
    "use strict";
    var Tokenizer2 = require_tokenizer();
    var OpenElementStack2 = require_open_element_stack();
    var FormattingElementList2 = require_formatting_element_list();
    var LocationInfoParserMixin = require_parser_mixin();
    var ErrorReportingParserMixin = require_parser_mixin2();
    var Mixin = require_mixin();
    var defaultTreeAdapter2 = require_default();
    var mergeOptions = require_merge_options();
    var doctype2 = require_doctype();
    var foreignContent = require_foreign_content();
    var ERR2 = require_error_codes();
    var unicode = require_unicode();
    var HTML = require_html2();
    var $2 = HTML.TAG_NAMES;
    var NS2 = HTML.NAMESPACES;
    var ATTRS2 = HTML.ATTRS;
    var DEFAULT_OPTIONS = {
      scriptingEnabled: true,
      sourceCodeLocationInfo: false,
      onParseError: null,
      treeAdapter: defaultTreeAdapter2
    };
    var HIDDEN_INPUT_TYPE2 = "hidden";
    var AA_OUTER_LOOP_ITER2 = 8;
    var AA_INNER_LOOP_ITER2 = 3;
    var INITIAL_MODE = "INITIAL_MODE";
    var BEFORE_HTML_MODE = "BEFORE_HTML_MODE";
    var BEFORE_HEAD_MODE = "BEFORE_HEAD_MODE";
    var IN_HEAD_MODE = "IN_HEAD_MODE";
    var IN_HEAD_NO_SCRIPT_MODE = "IN_HEAD_NO_SCRIPT_MODE";
    var AFTER_HEAD_MODE = "AFTER_HEAD_MODE";
    var IN_BODY_MODE = "IN_BODY_MODE";
    var TEXT_MODE = "TEXT_MODE";
    var IN_TABLE_MODE = "IN_TABLE_MODE";
    var IN_TABLE_TEXT_MODE = "IN_TABLE_TEXT_MODE";
    var IN_CAPTION_MODE = "IN_CAPTION_MODE";
    var IN_COLUMN_GROUP_MODE = "IN_COLUMN_GROUP_MODE";
    var IN_TABLE_BODY_MODE = "IN_TABLE_BODY_MODE";
    var IN_ROW_MODE = "IN_ROW_MODE";
    var IN_CELL_MODE = "IN_CELL_MODE";
    var IN_SELECT_MODE = "IN_SELECT_MODE";
    var IN_SELECT_IN_TABLE_MODE = "IN_SELECT_IN_TABLE_MODE";
    var IN_TEMPLATE_MODE = "IN_TEMPLATE_MODE";
    var AFTER_BODY_MODE = "AFTER_BODY_MODE";
    var IN_FRAMESET_MODE = "IN_FRAMESET_MODE";
    var AFTER_FRAMESET_MODE = "AFTER_FRAMESET_MODE";
    var AFTER_AFTER_BODY_MODE = "AFTER_AFTER_BODY_MODE";
    var AFTER_AFTER_FRAMESET_MODE = "AFTER_AFTER_FRAMESET_MODE";
    var INSERTION_MODE_RESET_MAP = {
      [$2.TR]: IN_ROW_MODE,
      [$2.TBODY]: IN_TABLE_BODY_MODE,
      [$2.THEAD]: IN_TABLE_BODY_MODE,
      [$2.TFOOT]: IN_TABLE_BODY_MODE,
      [$2.CAPTION]: IN_CAPTION_MODE,
      [$2.COLGROUP]: IN_COLUMN_GROUP_MODE,
      [$2.TABLE]: IN_TABLE_MODE,
      [$2.BODY]: IN_BODY_MODE,
      [$2.FRAMESET]: IN_FRAMESET_MODE
    };
    var TEMPLATE_INSERTION_MODE_SWITCH_MAP = {
      [$2.CAPTION]: IN_TABLE_MODE,
      [$2.COLGROUP]: IN_TABLE_MODE,
      [$2.TBODY]: IN_TABLE_MODE,
      [$2.TFOOT]: IN_TABLE_MODE,
      [$2.THEAD]: IN_TABLE_MODE,
      [$2.COL]: IN_COLUMN_GROUP_MODE,
      [$2.TR]: IN_TABLE_BODY_MODE,
      [$2.TD]: IN_ROW_MODE,
      [$2.TH]: IN_ROW_MODE
    };
    var TOKEN_HANDLERS = {
      [INITIAL_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: tokenInInitialMode2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenInInitialMode2,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: doctypeInInitialMode2,
        [Tokenizer2.START_TAG_TOKEN]: tokenInInitialMode2,
        [Tokenizer2.END_TAG_TOKEN]: tokenInInitialMode2,
        [Tokenizer2.EOF_TOKEN]: tokenInInitialMode2
      },
      [BEFORE_HTML_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: tokenBeforeHtml2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenBeforeHtml2,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: startTagBeforeHtml2,
        [Tokenizer2.END_TAG_TOKEN]: endTagBeforeHtml2,
        [Tokenizer2.EOF_TOKEN]: tokenBeforeHtml2
      },
      [BEFORE_HEAD_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: tokenBeforeHead2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenBeforeHead2,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: misplacedDoctype,
        [Tokenizer2.START_TAG_TOKEN]: startTagBeforeHead2,
        [Tokenizer2.END_TAG_TOKEN]: endTagBeforeHead2,
        [Tokenizer2.EOF_TOKEN]: tokenBeforeHead2
      },
      [IN_HEAD_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: tokenInHead2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenInHead2,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: misplacedDoctype,
        [Tokenizer2.START_TAG_TOKEN]: startTagInHead2,
        [Tokenizer2.END_TAG_TOKEN]: endTagInHead2,
        [Tokenizer2.EOF_TOKEN]: tokenInHead2
      },
      [IN_HEAD_NO_SCRIPT_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: tokenInHeadNoScript2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenInHeadNoScript2,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: misplacedDoctype,
        [Tokenizer2.START_TAG_TOKEN]: startTagInHeadNoScript2,
        [Tokenizer2.END_TAG_TOKEN]: endTagInHeadNoScript2,
        [Tokenizer2.EOF_TOKEN]: tokenInHeadNoScript2
      },
      [AFTER_HEAD_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: tokenAfterHead2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenAfterHead2,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: misplacedDoctype,
        [Tokenizer2.START_TAG_TOKEN]: startTagAfterHead2,
        [Tokenizer2.END_TAG_TOKEN]: endTagAfterHead2,
        [Tokenizer2.EOF_TOKEN]: tokenAfterHead2
      },
      [IN_BODY_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: characterInBody2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody2,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: startTagInBody2,
        [Tokenizer2.END_TAG_TOKEN]: endTagInBody2,
        [Tokenizer2.EOF_TOKEN]: eofInBody2
      },
      [TEXT_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: insertCharacters,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: insertCharacters,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,
        [Tokenizer2.COMMENT_TOKEN]: ignoreToken,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: ignoreToken,
        [Tokenizer2.END_TAG_TOKEN]: endTagInText2,
        [Tokenizer2.EOF_TOKEN]: eofInText2
      },
      [IN_TABLE_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: characterInTable2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: characterInTable2,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: characterInTable2,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: startTagInTable2,
        [Tokenizer2.END_TAG_TOKEN]: endTagInTable2,
        [Tokenizer2.EOF_TOKEN]: eofInBody2
      },
      [IN_TABLE_TEXT_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: characterInTableText2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInTableText2,
        [Tokenizer2.COMMENT_TOKEN]: tokenInTableText2,
        [Tokenizer2.DOCTYPE_TOKEN]: tokenInTableText2,
        [Tokenizer2.START_TAG_TOKEN]: tokenInTableText2,
        [Tokenizer2.END_TAG_TOKEN]: tokenInTableText2,
        [Tokenizer2.EOF_TOKEN]: tokenInTableText2
      },
      [IN_CAPTION_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: characterInBody2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody2,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: startTagInCaption2,
        [Tokenizer2.END_TAG_TOKEN]: endTagInCaption2,
        [Tokenizer2.EOF_TOKEN]: eofInBody2
      },
      [IN_COLUMN_GROUP_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: tokenInColumnGroup2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenInColumnGroup2,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: startTagInColumnGroup2,
        [Tokenizer2.END_TAG_TOKEN]: endTagInColumnGroup2,
        [Tokenizer2.EOF_TOKEN]: eofInBody2
      },
      [IN_TABLE_BODY_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: characterInTable2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: characterInTable2,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: characterInTable2,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: startTagInTableBody2,
        [Tokenizer2.END_TAG_TOKEN]: endTagInTableBody2,
        [Tokenizer2.EOF_TOKEN]: eofInBody2
      },
      [IN_ROW_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: characterInTable2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: characterInTable2,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: characterInTable2,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: startTagInRow2,
        [Tokenizer2.END_TAG_TOKEN]: endTagInRow2,
        [Tokenizer2.EOF_TOKEN]: eofInBody2
      },
      [IN_CELL_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: characterInBody2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody2,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: startTagInCell2,
        [Tokenizer2.END_TAG_TOKEN]: endTagInCell2,
        [Tokenizer2.EOF_TOKEN]: eofInBody2
      },
      [IN_SELECT_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: insertCharacters,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: startTagInSelect2,
        [Tokenizer2.END_TAG_TOKEN]: endTagInSelect2,
        [Tokenizer2.EOF_TOKEN]: eofInBody2
      },
      [IN_SELECT_IN_TABLE_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: insertCharacters,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: startTagInSelectInTable2,
        [Tokenizer2.END_TAG_TOKEN]: endTagInSelectInTable2,
        [Tokenizer2.EOF_TOKEN]: eofInBody2
      },
      [IN_TEMPLATE_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: characterInBody2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody2,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: startTagInTemplate2,
        [Tokenizer2.END_TAG_TOKEN]: endTagInTemplate2,
        [Tokenizer2.EOF_TOKEN]: eofInTemplate2
      },
      [AFTER_BODY_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: tokenAfterBody2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenAfterBody2,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody2,
        [Tokenizer2.COMMENT_TOKEN]: appendCommentToRootHtmlElement2,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: startTagAfterBody2,
        [Tokenizer2.END_TAG_TOKEN]: endTagAfterBody2,
        [Tokenizer2.EOF_TOKEN]: stopParsing2
      },
      [IN_FRAMESET_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: ignoreToken,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: startTagInFrameset2,
        [Tokenizer2.END_TAG_TOKEN]: endTagInFrameset2,
        [Tokenizer2.EOF_TOKEN]: stopParsing2
      },
      [AFTER_FRAMESET_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: ignoreToken,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,
        [Tokenizer2.COMMENT_TOKEN]: appendComment2,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: startTagAfterFrameset2,
        [Tokenizer2.END_TAG_TOKEN]: endTagAfterFrameset2,
        [Tokenizer2.EOF_TOKEN]: stopParsing2
      },
      [AFTER_AFTER_BODY_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: tokenAfterAfterBody2,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenAfterAfterBody2,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody2,
        [Tokenizer2.COMMENT_TOKEN]: appendCommentToDocument2,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: startTagAfterAfterBody2,
        [Tokenizer2.END_TAG_TOKEN]: tokenAfterAfterBody2,
        [Tokenizer2.EOF_TOKEN]: stopParsing2
      },
      [AFTER_AFTER_FRAMESET_MODE]: {
        [Tokenizer2.CHARACTER_TOKEN]: ignoreToken,
        [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,
        [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody2,
        [Tokenizer2.COMMENT_TOKEN]: appendCommentToDocument2,
        [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,
        [Tokenizer2.START_TAG_TOKEN]: startTagAfterAfterFrameset2,
        [Tokenizer2.END_TAG_TOKEN]: ignoreToken,
        [Tokenizer2.EOF_TOKEN]: stopParsing2
      }
    };
    var Parser3 = class {
      constructor(options) {
        this.options = mergeOptions(DEFAULT_OPTIONS, options);
        this.treeAdapter = this.options.treeAdapter;
        this.pendingScript = null;
        if (this.options.sourceCodeLocationInfo) {
          Mixin.install(this, LocationInfoParserMixin);
        }
        if (this.options.onParseError) {
          Mixin.install(this, ErrorReportingParserMixin, { onParseError: this.options.onParseError });
        }
      }
      // API
      parse(html7) {
        const document2 = this.treeAdapter.createDocument();
        this._bootstrap(document2, null);
        this.tokenizer.write(html7, true);
        this._runParsingLoop(null);
        return document2;
      }
      parseFragment(html7, fragmentContext) {
        if (!fragmentContext) {
          fragmentContext = this.treeAdapter.createElement($2.TEMPLATE, NS2.HTML, []);
        }
        const documentMock = this.treeAdapter.createElement("documentmock", NS2.HTML, []);
        this._bootstrap(documentMock, fragmentContext);
        if (this.treeAdapter.getTagName(fragmentContext) === $2.TEMPLATE) {
          this._pushTmplInsertionMode(IN_TEMPLATE_MODE);
        }
        this._initTokenizerForFragmentParsing();
        this._insertFakeRootElement();
        this._resetInsertionMode();
        this._findFormInFragmentContext();
        this.tokenizer.write(html7, true);
        this._runParsingLoop(null);
        const rootElement = this.treeAdapter.getFirstChild(documentMock);
        const fragment = this.treeAdapter.createDocumentFragment();
        this._adoptNodes(rootElement, fragment);
        return fragment;
      }
      //Bootstrap parser
      _bootstrap(document2, fragmentContext) {
        this.tokenizer = new Tokenizer2(this.options);
        this.stopped = false;
        this.insertionMode = INITIAL_MODE;
        this.originalInsertionMode = "";
        this.document = document2;
        this.fragmentContext = fragmentContext;
        this.headElement = null;
        this.formElement = null;
        this.openElements = new OpenElementStack2(this.document, this.treeAdapter);
        this.activeFormattingElements = new FormattingElementList2(this.treeAdapter);
        this.tmplInsertionModeStack = [];
        this.tmplInsertionModeStackTop = -1;
        this.currentTmplInsertionMode = null;
        this.pendingCharacterTokens = [];
        this.hasNonWhitespacePendingCharacterToken = false;
        this.framesetOk = true;
        this.skipNextNewLine = false;
        this.fosterParentingEnabled = false;
      }
      //Errors
      _err() {
      }
      //Parsing loop
      _runParsingLoop(scriptHandler) {
        while (!this.stopped) {
          this._setupTokenizerCDATAMode();
          const token = this.tokenizer.getNextToken();
          if (token.type === Tokenizer2.HIBERNATION_TOKEN) {
            break;
          }
          if (this.skipNextNewLine) {
            this.skipNextNewLine = false;
            if (token.type === Tokenizer2.WHITESPACE_CHARACTER_TOKEN && token.chars[0] === "\n") {
              if (token.chars.length === 1) {
                continue;
              }
              token.chars = token.chars.substr(1);
            }
          }
          this._processInputToken(token);
          if (scriptHandler && this.pendingScript) {
            break;
          }
        }
      }
      runParsingLoopForCurrentChunk(writeCallback, scriptHandler) {
        this._runParsingLoop(scriptHandler);
        if (scriptHandler && this.pendingScript) {
          const script = this.pendingScript;
          this.pendingScript = null;
          scriptHandler(script);
          return;
        }
        if (writeCallback) {
          writeCallback();
        }
      }
      //Text parsing
      _setupTokenizerCDATAMode() {
        const current2 = this._getAdjustedCurrentElement();
        this.tokenizer.allowCDATA = current2 && current2 !== this.document && this.treeAdapter.getNamespaceURI(current2) !== NS2.HTML && !this._isIntegrationPoint(current2);
      }
      _switchToTextParsing(currentToken, nextTokenizerState) {
        this._insertElement(currentToken, NS2.HTML);
        this.tokenizer.state = nextTokenizerState;
        this.originalInsertionMode = this.insertionMode;
        this.insertionMode = TEXT_MODE;
      }
      switchToPlaintextParsing() {
        this.insertionMode = TEXT_MODE;
        this.originalInsertionMode = IN_BODY_MODE;
        this.tokenizer.state = Tokenizer2.MODE.PLAINTEXT;
      }
      //Fragment parsing
      _getAdjustedCurrentElement() {
        return this.openElements.stackTop === 0 && this.fragmentContext ? this.fragmentContext : this.openElements.current;
      }
      _findFormInFragmentContext() {
        let node3 = this.fragmentContext;
        do {
          if (this.treeAdapter.getTagName(node3) === $2.FORM) {
            this.formElement = node3;
            break;
          }
          node3 = this.treeAdapter.getParentNode(node3);
        } while (node3);
      }
      _initTokenizerForFragmentParsing() {
        if (this.treeAdapter.getNamespaceURI(this.fragmentContext) === NS2.HTML) {
          const tn = this.treeAdapter.getTagName(this.fragmentContext);
          if (tn === $2.TITLE || tn === $2.TEXTAREA) {
            this.tokenizer.state = Tokenizer2.MODE.RCDATA;
          } else if (tn === $2.STYLE || tn === $2.XMP || tn === $2.IFRAME || tn === $2.NOEMBED || tn === $2.NOFRAMES || tn === $2.NOSCRIPT) {
            this.tokenizer.state = Tokenizer2.MODE.RAWTEXT;
          } else if (tn === $2.SCRIPT) {
            this.tokenizer.state = Tokenizer2.MODE.SCRIPT_DATA;
          } else if (tn === $2.PLAINTEXT) {
            this.tokenizer.state = Tokenizer2.MODE.PLAINTEXT;
          }
        }
      }
      //Tree mutation
      _setDocumentType(token) {
        const name3 = token.name || "";
        const publicId = token.publicId || "";
        const systemId = token.systemId || "";
        this.treeAdapter.setDocumentType(this.document, name3, publicId, systemId);
      }
      _attachElementToTree(element5) {
        if (this._shouldFosterParentOnInsertion()) {
          this._fosterParentElement(element5);
        } else {
          const parent2 = this.openElements.currentTmplContent || this.openElements.current;
          this.treeAdapter.appendChild(parent2, element5);
        }
      }
      _appendElement(token, namespaceURI) {
        const element5 = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);
        this._attachElementToTree(element5);
      }
      _insertElement(token, namespaceURI) {
        const element5 = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);
        this._attachElementToTree(element5);
        this.openElements.push(element5);
      }
      _insertFakeElement(tagName) {
        const element5 = this.treeAdapter.createElement(tagName, NS2.HTML, []);
        this._attachElementToTree(element5);
        this.openElements.push(element5);
      }
      _insertTemplate(token) {
        const tmpl = this.treeAdapter.createElement(token.tagName, NS2.HTML, token.attrs);
        const content3 = this.treeAdapter.createDocumentFragment();
        this.treeAdapter.setTemplateContent(tmpl, content3);
        this._attachElementToTree(tmpl);
        this.openElements.push(tmpl);
      }
      _insertFakeRootElement() {
        const element5 = this.treeAdapter.createElement($2.HTML, NS2.HTML, []);
        this.treeAdapter.appendChild(this.openElements.current, element5);
        this.openElements.push(element5);
      }
      _appendCommentNode(token, parent2) {
        const commentNode = this.treeAdapter.createCommentNode(token.data);
        this.treeAdapter.appendChild(parent2, commentNode);
      }
      _insertCharacters(token) {
        if (this._shouldFosterParentOnInsertion()) {
          this._fosterParentText(token.chars);
        } else {
          const parent2 = this.openElements.currentTmplContent || this.openElements.current;
          this.treeAdapter.insertText(parent2, token.chars);
        }
      }
      _adoptNodes(donor, recipient) {
        for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {
          this.treeAdapter.detachNode(child);
          this.treeAdapter.appendChild(recipient, child);
        }
      }
      //Token processing
      _shouldProcessTokenInForeignContent(token) {
        const current2 = this._getAdjustedCurrentElement();
        if (!current2 || current2 === this.document) {
          return false;
        }
        const ns = this.treeAdapter.getNamespaceURI(current2);
        if (ns === NS2.HTML) {
          return false;
        }
        if (this.treeAdapter.getTagName(current2) === $2.ANNOTATION_XML && ns === NS2.MATHML && token.type === Tokenizer2.START_TAG_TOKEN && token.tagName === $2.SVG) {
          return false;
        }
        const isCharacterToken = token.type === Tokenizer2.CHARACTER_TOKEN || token.type === Tokenizer2.NULL_CHARACTER_TOKEN || token.type === Tokenizer2.WHITESPACE_CHARACTER_TOKEN;
        const isMathMLTextStartTag = token.type === Tokenizer2.START_TAG_TOKEN && token.tagName !== $2.MGLYPH && token.tagName !== $2.MALIGNMARK;
        if ((isMathMLTextStartTag || isCharacterToken) && this._isIntegrationPoint(current2, NS2.MATHML)) {
          return false;
        }
        if ((token.type === Tokenizer2.START_TAG_TOKEN || isCharacterToken) && this._isIntegrationPoint(current2, NS2.HTML)) {
          return false;
        }
        return token.type !== Tokenizer2.EOF_TOKEN;
      }
      _processToken(token) {
        TOKEN_HANDLERS[this.insertionMode][token.type](this, token);
      }
      _processTokenInBodyMode(token) {
        TOKEN_HANDLERS[IN_BODY_MODE][token.type](this, token);
      }
      _processTokenInForeignContent(token) {
        if (token.type === Tokenizer2.CHARACTER_TOKEN) {
          characterInForeignContent2(this, token);
        } else if (token.type === Tokenizer2.NULL_CHARACTER_TOKEN) {
          nullCharacterInForeignContent2(this, token);
        } else if (token.type === Tokenizer2.WHITESPACE_CHARACTER_TOKEN) {
          insertCharacters(this, token);
        } else if (token.type === Tokenizer2.COMMENT_TOKEN) {
          appendComment2(this, token);
        } else if (token.type === Tokenizer2.START_TAG_TOKEN) {
          startTagInForeignContent2(this, token);
        } else if (token.type === Tokenizer2.END_TAG_TOKEN) {
          endTagInForeignContent2(this, token);
        }
      }
      _processInputToken(token) {
        if (this._shouldProcessTokenInForeignContent(token)) {
          this._processTokenInForeignContent(token);
        } else {
          this._processToken(token);
        }
        if (token.type === Tokenizer2.START_TAG_TOKEN && token.selfClosing && !token.ackSelfClosing) {
          this._err(ERR2.nonVoidHtmlElementStartTagWithTrailingSolidus);
        }
      }
      //Integration points
      _isIntegrationPoint(element5, foreignNS) {
        const tn = this.treeAdapter.getTagName(element5);
        const ns = this.treeAdapter.getNamespaceURI(element5);
        const attrs = this.treeAdapter.getAttrList(element5);
        return foreignContent.isIntegrationPoint(tn, ns, attrs, foreignNS);
      }
      //Active formatting elements reconstruction
      _reconstructActiveFormattingElements() {
        const listLength = this.activeFormattingElements.length;
        if (listLength) {
          let unopenIdx = listLength;
          let entry = null;
          do {
            unopenIdx--;
            entry = this.activeFormattingElements.entries[unopenIdx];
            if (entry.type === FormattingElementList2.MARKER_ENTRY || this.openElements.contains(entry.element)) {
              unopenIdx++;
              break;
            }
          } while (unopenIdx > 0);
          for (let i2 = unopenIdx; i2 < listLength; i2++) {
            entry = this.activeFormattingElements.entries[i2];
            this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));
            entry.element = this.openElements.current;
          }
        }
      }
      //Close elements
      _closeTableCell() {
        this.openElements.generateImpliedEndTags();
        this.openElements.popUntilTableCellPopped();
        this.activeFormattingElements.clearToLastMarker();
        this.insertionMode = IN_ROW_MODE;
      }
      _closePElement() {
        this.openElements.generateImpliedEndTagsWithExclusion($2.P);
        this.openElements.popUntilTagNamePopped($2.P);
      }
      //Insertion modes
      _resetInsertionMode() {
        for (let i2 = this.openElements.stackTop, last = false; i2 >= 0; i2--) {
          let element5 = this.openElements.items[i2];
          if (i2 === 0) {
            last = true;
            if (this.fragmentContext) {
              element5 = this.fragmentContext;
            }
          }
          const tn = this.treeAdapter.getTagName(element5);
          const newInsertionMode = INSERTION_MODE_RESET_MAP[tn];
          if (newInsertionMode) {
            this.insertionMode = newInsertionMode;
            break;
          } else if (!last && (tn === $2.TD || tn === $2.TH)) {
            this.insertionMode = IN_CELL_MODE;
            break;
          } else if (!last && tn === $2.HEAD) {
            this.insertionMode = IN_HEAD_MODE;
            break;
          } else if (tn === $2.SELECT) {
            this._resetInsertionModeForSelect(i2);
            break;
          } else if (tn === $2.TEMPLATE) {
            this.insertionMode = this.currentTmplInsertionMode;
            break;
          } else if (tn === $2.HTML) {
            this.insertionMode = this.headElement ? AFTER_HEAD_MODE : BEFORE_HEAD_MODE;
            break;
          } else if (last) {
            this.insertionMode = IN_BODY_MODE;
            break;
          }
        }
      }
      _resetInsertionModeForSelect(selectIdx) {
        if (selectIdx > 0) {
          for (let i2 = selectIdx - 1; i2 > 0; i2--) {
            const ancestor = this.openElements.items[i2];
            const tn = this.treeAdapter.getTagName(ancestor);
            if (tn === $2.TEMPLATE) {
              break;
            } else if (tn === $2.TABLE) {
              this.insertionMode = IN_SELECT_IN_TABLE_MODE;
              return;
            }
          }
        }
        this.insertionMode = IN_SELECT_MODE;
      }
      _pushTmplInsertionMode(mode) {
        this.tmplInsertionModeStack.push(mode);
        this.tmplInsertionModeStackTop++;
        this.currentTmplInsertionMode = mode;
      }
      _popTmplInsertionMode() {
        this.tmplInsertionModeStack.pop();
        this.tmplInsertionModeStackTop--;
        this.currentTmplInsertionMode = this.tmplInsertionModeStack[this.tmplInsertionModeStackTop];
      }
      //Foster parenting
      _isElementCausesFosterParenting(element5) {
        const tn = this.treeAdapter.getTagName(element5);
        return tn === $2.TABLE || tn === $2.TBODY || tn === $2.TFOOT || tn === $2.THEAD || tn === $2.TR;
      }
      _shouldFosterParentOnInsertion() {
        return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.current);
      }
      _findFosterParentingLocation() {
        const location4 = {
          parent: null,
          beforeElement: null
        };
        for (let i2 = this.openElements.stackTop; i2 >= 0; i2--) {
          const openElement = this.openElements.items[i2];
          const tn = this.treeAdapter.getTagName(openElement);
          const ns = this.treeAdapter.getNamespaceURI(openElement);
          if (tn === $2.TEMPLATE && ns === NS2.HTML) {
            location4.parent = this.treeAdapter.getTemplateContent(openElement);
            break;
          } else if (tn === $2.TABLE) {
            location4.parent = this.treeAdapter.getParentNode(openElement);
            if (location4.parent) {
              location4.beforeElement = openElement;
            } else {
              location4.parent = this.openElements.items[i2 - 1];
            }
            break;
          }
        }
        if (!location4.parent) {
          location4.parent = this.openElements.items[0];
        }
        return location4;
      }
      _fosterParentElement(element5) {
        const location4 = this._findFosterParentingLocation();
        if (location4.beforeElement) {
          this.treeAdapter.insertBefore(location4.parent, element5, location4.beforeElement);
        } else {
          this.treeAdapter.appendChild(location4.parent, element5);
        }
      }
      _fosterParentText(chars) {
        const location4 = this._findFosterParentingLocation();
        if (location4.beforeElement) {
          this.treeAdapter.insertTextBefore(location4.parent, chars, location4.beforeElement);
        } else {
          this.treeAdapter.insertText(location4.parent, chars);
        }
      }
      //Special elements
      _isSpecialElement(element5) {
        const tn = this.treeAdapter.getTagName(element5);
        const ns = this.treeAdapter.getNamespaceURI(element5);
        return HTML.SPECIAL_ELEMENTS[ns][tn];
      }
    };
    module2.exports = Parser3;
    function aaObtainFormattingElementEntry2(p5, token) {
      let formattingElementEntry = p5.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);
      if (formattingElementEntry) {
        if (!p5.openElements.contains(formattingElementEntry.element)) {
          p5.activeFormattingElements.removeEntry(formattingElementEntry);
          formattingElementEntry = null;
        } else if (!p5.openElements.hasInScope(token.tagName)) {
          formattingElementEntry = null;
        }
      } else {
        genericEndTagInBody2(p5, token);
      }
      return formattingElementEntry;
    }
    function aaObtainFurthestBlock2(p5, formattingElementEntry) {
      let furthestBlock = null;
      for (let i2 = p5.openElements.stackTop; i2 >= 0; i2--) {
        const element5 = p5.openElements.items[i2];
        if (element5 === formattingElementEntry.element) {
          break;
        }
        if (p5._isSpecialElement(element5)) {
          furthestBlock = element5;
        }
      }
      if (!furthestBlock) {
        p5.openElements.popUntilElementPopped(formattingElementEntry.element);
        p5.activeFormattingElements.removeEntry(formattingElementEntry);
      }
      return furthestBlock;
    }
    function aaInnerLoop2(p5, furthestBlock, formattingElement) {
      let lastElement = furthestBlock;
      let nextElement = p5.openElements.getCommonAncestor(furthestBlock);
      for (let i2 = 0, element5 = nextElement; element5 !== formattingElement; i2++, element5 = nextElement) {
        nextElement = p5.openElements.getCommonAncestor(element5);
        const elementEntry = p5.activeFormattingElements.getElementEntry(element5);
        const counterOverflow = elementEntry && i2 >= AA_INNER_LOOP_ITER2;
        const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;
        if (shouldRemoveFromOpenElements) {
          if (counterOverflow) {
            p5.activeFormattingElements.removeEntry(elementEntry);
          }
          p5.openElements.remove(element5);
        } else {
          element5 = aaRecreateElementFromEntry2(p5, elementEntry);
          if (lastElement === furthestBlock) {
            p5.activeFormattingElements.bookmark = elementEntry;
          }
          p5.treeAdapter.detachNode(lastElement);
          p5.treeAdapter.appendChild(element5, lastElement);
          lastElement = element5;
        }
      }
      return lastElement;
    }
    function aaRecreateElementFromEntry2(p5, elementEntry) {
      const ns = p5.treeAdapter.getNamespaceURI(elementEntry.element);
      const newElement = p5.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);
      p5.openElements.replace(elementEntry.element, newElement);
      elementEntry.element = newElement;
      return newElement;
    }
    function aaInsertLastNodeInCommonAncestor2(p5, commonAncestor, lastElement) {
      if (p5._isElementCausesFosterParenting(commonAncestor)) {
        p5._fosterParentElement(lastElement);
      } else {
        const tn = p5.treeAdapter.getTagName(commonAncestor);
        const ns = p5.treeAdapter.getNamespaceURI(commonAncestor);
        if (tn === $2.TEMPLATE && ns === NS2.HTML) {
          commonAncestor = p5.treeAdapter.getTemplateContent(commonAncestor);
        }
        p5.treeAdapter.appendChild(commonAncestor, lastElement);
      }
    }
    function aaReplaceFormattingElement2(p5, furthestBlock, formattingElementEntry) {
      const ns = p5.treeAdapter.getNamespaceURI(formattingElementEntry.element);
      const token = formattingElementEntry.token;
      const newElement = p5.treeAdapter.createElement(token.tagName, ns, token.attrs);
      p5._adoptNodes(furthestBlock, newElement);
      p5.treeAdapter.appendChild(furthestBlock, newElement);
      p5.activeFormattingElements.insertElementAfterBookmark(newElement, formattingElementEntry.token);
      p5.activeFormattingElements.removeEntry(formattingElementEntry);
      p5.openElements.remove(formattingElementEntry.element);
      p5.openElements.insertAfter(furthestBlock, newElement);
    }
    function callAdoptionAgency2(p5, token) {
      let formattingElementEntry;
      for (let i2 = 0; i2 < AA_OUTER_LOOP_ITER2; i2++) {
        formattingElementEntry = aaObtainFormattingElementEntry2(p5, token, formattingElementEntry);
        if (!formattingElementEntry) {
          break;
        }
        const furthestBlock = aaObtainFurthestBlock2(p5, formattingElementEntry);
        if (!furthestBlock) {
          break;
        }
        p5.activeFormattingElements.bookmark = formattingElementEntry;
        const lastElement = aaInnerLoop2(p5, furthestBlock, formattingElementEntry.element);
        const commonAncestor = p5.openElements.getCommonAncestor(formattingElementEntry.element);
        p5.treeAdapter.detachNode(lastElement);
        aaInsertLastNodeInCommonAncestor2(p5, commonAncestor, lastElement);
        aaReplaceFormattingElement2(p5, furthestBlock, formattingElementEntry);
      }
    }
    function ignoreToken() {
    }
    function misplacedDoctype(p5) {
      p5._err(ERR2.misplacedDoctype);
    }
    function appendComment2(p5, token) {
      p5._appendCommentNode(token, p5.openElements.currentTmplContent || p5.openElements.current);
    }
    function appendCommentToRootHtmlElement2(p5, token) {
      p5._appendCommentNode(token, p5.openElements.items[0]);
    }
    function appendCommentToDocument2(p5, token) {
      p5._appendCommentNode(token, p5.document);
    }
    function insertCharacters(p5, token) {
      p5._insertCharacters(token);
    }
    function stopParsing2(p5) {
      p5.stopped = true;
    }
    function doctypeInInitialMode2(p5, token) {
      p5._setDocumentType(token);
      const mode = token.forceQuirks ? HTML.DOCUMENT_MODE.QUIRKS : doctype2.getDocumentMode(token);
      if (!doctype2.isConforming(token)) {
        p5._err(ERR2.nonConformingDoctype);
      }
      p5.treeAdapter.setDocumentMode(p5.document, mode);
      p5.insertionMode = BEFORE_HTML_MODE;
    }
    function tokenInInitialMode2(p5, token) {
      p5._err(ERR2.missingDoctype, { beforeToken: true });
      p5.treeAdapter.setDocumentMode(p5.document, HTML.DOCUMENT_MODE.QUIRKS);
      p5.insertionMode = BEFORE_HTML_MODE;
      p5._processToken(token);
    }
    function startTagBeforeHtml2(p5, token) {
      if (token.tagName === $2.HTML) {
        p5._insertElement(token, NS2.HTML);
        p5.insertionMode = BEFORE_HEAD_MODE;
      } else {
        tokenBeforeHtml2(p5, token);
      }
    }
    function endTagBeforeHtml2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.HTML || tn === $2.HEAD || tn === $2.BODY || tn === $2.BR) {
        tokenBeforeHtml2(p5, token);
      }
    }
    function tokenBeforeHtml2(p5, token) {
      p5._insertFakeRootElement();
      p5.insertionMode = BEFORE_HEAD_MODE;
      p5._processToken(token);
    }
    function startTagBeforeHead2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.HTML) {
        startTagInBody2(p5, token);
      } else if (tn === $2.HEAD) {
        p5._insertElement(token, NS2.HTML);
        p5.headElement = p5.openElements.current;
        p5.insertionMode = IN_HEAD_MODE;
      } else {
        tokenBeforeHead2(p5, token);
      }
    }
    function endTagBeforeHead2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.HEAD || tn === $2.BODY || tn === $2.HTML || tn === $2.BR) {
        tokenBeforeHead2(p5, token);
      } else {
        p5._err(ERR2.endTagWithoutMatchingOpenElement);
      }
    }
    function tokenBeforeHead2(p5, token) {
      p5._insertFakeElement($2.HEAD);
      p5.headElement = p5.openElements.current;
      p5.insertionMode = IN_HEAD_MODE;
      p5._processToken(token);
    }
    function startTagInHead2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.HTML) {
        startTagInBody2(p5, token);
      } else if (tn === $2.BASE || tn === $2.BASEFONT || tn === $2.BGSOUND || tn === $2.LINK || tn === $2.META) {
        p5._appendElement(token, NS2.HTML);
        token.ackSelfClosing = true;
      } else if (tn === $2.TITLE) {
        p5._switchToTextParsing(token, Tokenizer2.MODE.RCDATA);
      } else if (tn === $2.NOSCRIPT) {
        if (p5.options.scriptingEnabled) {
          p5._switchToTextParsing(token, Tokenizer2.MODE.RAWTEXT);
        } else {
          p5._insertElement(token, NS2.HTML);
          p5.insertionMode = IN_HEAD_NO_SCRIPT_MODE;
        }
      } else if (tn === $2.NOFRAMES || tn === $2.STYLE) {
        p5._switchToTextParsing(token, Tokenizer2.MODE.RAWTEXT);
      } else if (tn === $2.SCRIPT) {
        p5._switchToTextParsing(token, Tokenizer2.MODE.SCRIPT_DATA);
      } else if (tn === $2.TEMPLATE) {
        p5._insertTemplate(token, NS2.HTML);
        p5.activeFormattingElements.insertMarker();
        p5.framesetOk = false;
        p5.insertionMode = IN_TEMPLATE_MODE;
        p5._pushTmplInsertionMode(IN_TEMPLATE_MODE);
      } else if (tn === $2.HEAD) {
        p5._err(ERR2.misplacedStartTagForHeadElement);
      } else {
        tokenInHead2(p5, token);
      }
    }
    function endTagInHead2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.HEAD) {
        p5.openElements.pop();
        p5.insertionMode = AFTER_HEAD_MODE;
      } else if (tn === $2.BODY || tn === $2.BR || tn === $2.HTML) {
        tokenInHead2(p5, token);
      } else if (tn === $2.TEMPLATE) {
        if (p5.openElements.tmplCount > 0) {
          p5.openElements.generateImpliedEndTagsThoroughly();
          if (p5.openElements.currentTagName !== $2.TEMPLATE) {
            p5._err(ERR2.closingOfElementWithOpenChildElements);
          }
          p5.openElements.popUntilTagNamePopped($2.TEMPLATE);
          p5.activeFormattingElements.clearToLastMarker();
          p5._popTmplInsertionMode();
          p5._resetInsertionMode();
        } else {
          p5._err(ERR2.endTagWithoutMatchingOpenElement);
        }
      } else {
        p5._err(ERR2.endTagWithoutMatchingOpenElement);
      }
    }
    function tokenInHead2(p5, token) {
      p5.openElements.pop();
      p5.insertionMode = AFTER_HEAD_MODE;
      p5._processToken(token);
    }
    function startTagInHeadNoScript2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.HTML) {
        startTagInBody2(p5, token);
      } else if (tn === $2.BASEFONT || tn === $2.BGSOUND || tn === $2.HEAD || tn === $2.LINK || tn === $2.META || tn === $2.NOFRAMES || tn === $2.STYLE) {
        startTagInHead2(p5, token);
      } else if (tn === $2.NOSCRIPT) {
        p5._err(ERR2.nestedNoscriptInHead);
      } else {
        tokenInHeadNoScript2(p5, token);
      }
    }
    function endTagInHeadNoScript2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.NOSCRIPT) {
        p5.openElements.pop();
        p5.insertionMode = IN_HEAD_MODE;
      } else if (tn === $2.BR) {
        tokenInHeadNoScript2(p5, token);
      } else {
        p5._err(ERR2.endTagWithoutMatchingOpenElement);
      }
    }
    function tokenInHeadNoScript2(p5, token) {
      const errCode = token.type === Tokenizer2.EOF_TOKEN ? ERR2.openElementsLeftAfterEof : ERR2.disallowedContentInNoscriptInHead;
      p5._err(errCode);
      p5.openElements.pop();
      p5.insertionMode = IN_HEAD_MODE;
      p5._processToken(token);
    }
    function startTagAfterHead2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.HTML) {
        startTagInBody2(p5, token);
      } else if (tn === $2.BODY) {
        p5._insertElement(token, NS2.HTML);
        p5.framesetOk = false;
        p5.insertionMode = IN_BODY_MODE;
      } else if (tn === $2.FRAMESET) {
        p5._insertElement(token, NS2.HTML);
        p5.insertionMode = IN_FRAMESET_MODE;
      } else if (tn === $2.BASE || tn === $2.BASEFONT || tn === $2.BGSOUND || tn === $2.LINK || tn === $2.META || tn === $2.NOFRAMES || tn === $2.SCRIPT || tn === $2.STYLE || tn === $2.TEMPLATE || tn === $2.TITLE) {
        p5._err(ERR2.abandonedHeadElementChild);
        p5.openElements.push(p5.headElement);
        startTagInHead2(p5, token);
        p5.openElements.remove(p5.headElement);
      } else if (tn === $2.HEAD) {
        p5._err(ERR2.misplacedStartTagForHeadElement);
      } else {
        tokenAfterHead2(p5, token);
      }
    }
    function endTagAfterHead2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.BODY || tn === $2.HTML || tn === $2.BR) {
        tokenAfterHead2(p5, token);
      } else if (tn === $2.TEMPLATE) {
        endTagInHead2(p5, token);
      } else {
        p5._err(ERR2.endTagWithoutMatchingOpenElement);
      }
    }
    function tokenAfterHead2(p5, token) {
      p5._insertFakeElement($2.BODY);
      p5.insertionMode = IN_BODY_MODE;
      p5._processToken(token);
    }
    function whitespaceCharacterInBody2(p5, token) {
      p5._reconstructActiveFormattingElements();
      p5._insertCharacters(token);
    }
    function characterInBody2(p5, token) {
      p5._reconstructActiveFormattingElements();
      p5._insertCharacters(token);
      p5.framesetOk = false;
    }
    function htmlStartTagInBody2(p5, token) {
      if (p5.openElements.tmplCount === 0) {
        p5.treeAdapter.adoptAttributes(p5.openElements.items[0], token.attrs);
      }
    }
    function bodyStartTagInBody2(p5, token) {
      const bodyElement = p5.openElements.tryPeekProperlyNestedBodyElement();
      if (bodyElement && p5.openElements.tmplCount === 0) {
        p5.framesetOk = false;
        p5.treeAdapter.adoptAttributes(bodyElement, token.attrs);
      }
    }
    function framesetStartTagInBody2(p5, token) {
      const bodyElement = p5.openElements.tryPeekProperlyNestedBodyElement();
      if (p5.framesetOk && bodyElement) {
        p5.treeAdapter.detachNode(bodyElement);
        p5.openElements.popAllUpToHtmlElement();
        p5._insertElement(token, NS2.HTML);
        p5.insertionMode = IN_FRAMESET_MODE;
      }
    }
    function addressStartTagInBody2(p5, token) {
      if (p5.openElements.hasInButtonScope($2.P)) {
        p5._closePElement();
      }
      p5._insertElement(token, NS2.HTML);
    }
    function numberedHeaderStartTagInBody2(p5, token) {
      if (p5.openElements.hasInButtonScope($2.P)) {
        p5._closePElement();
      }
      const tn = p5.openElements.currentTagName;
      if (tn === $2.H1 || tn === $2.H2 || tn === $2.H3 || tn === $2.H4 || tn === $2.H5 || tn === $2.H6) {
        p5.openElements.pop();
      }
      p5._insertElement(token, NS2.HTML);
    }
    function preStartTagInBody2(p5, token) {
      if (p5.openElements.hasInButtonScope($2.P)) {
        p5._closePElement();
      }
      p5._insertElement(token, NS2.HTML);
      p5.skipNextNewLine = true;
      p5.framesetOk = false;
    }
    function formStartTagInBody2(p5, token) {
      const inTemplate = p5.openElements.tmplCount > 0;
      if (!p5.formElement || inTemplate) {
        if (p5.openElements.hasInButtonScope($2.P)) {
          p5._closePElement();
        }
        p5._insertElement(token, NS2.HTML);
        if (!inTemplate) {
          p5.formElement = p5.openElements.current;
        }
      }
    }
    function listItemStartTagInBody2(p5, token) {
      p5.framesetOk = false;
      const tn = token.tagName;
      for (let i2 = p5.openElements.stackTop; i2 >= 0; i2--) {
        const element5 = p5.openElements.items[i2];
        const elementTn = p5.treeAdapter.getTagName(element5);
        let closeTn = null;
        if (tn === $2.LI && elementTn === $2.LI) {
          closeTn = $2.LI;
        } else if ((tn === $2.DD || tn === $2.DT) && (elementTn === $2.DD || elementTn === $2.DT)) {
          closeTn = elementTn;
        }
        if (closeTn) {
          p5.openElements.generateImpliedEndTagsWithExclusion(closeTn);
          p5.openElements.popUntilTagNamePopped(closeTn);
          break;
        }
        if (elementTn !== $2.ADDRESS && elementTn !== $2.DIV && elementTn !== $2.P && p5._isSpecialElement(element5)) {
          break;
        }
      }
      if (p5.openElements.hasInButtonScope($2.P)) {
        p5._closePElement();
      }
      p5._insertElement(token, NS2.HTML);
    }
    function plaintextStartTagInBody2(p5, token) {
      if (p5.openElements.hasInButtonScope($2.P)) {
        p5._closePElement();
      }
      p5._insertElement(token, NS2.HTML);
      p5.tokenizer.state = Tokenizer2.MODE.PLAINTEXT;
    }
    function buttonStartTagInBody2(p5, token) {
      if (p5.openElements.hasInScope($2.BUTTON)) {
        p5.openElements.generateImpliedEndTags();
        p5.openElements.popUntilTagNamePopped($2.BUTTON);
      }
      p5._reconstructActiveFormattingElements();
      p5._insertElement(token, NS2.HTML);
      p5.framesetOk = false;
    }
    function aStartTagInBody2(p5, token) {
      const activeElementEntry = p5.activeFormattingElements.getElementEntryInScopeWithTagName($2.A);
      if (activeElementEntry) {
        callAdoptionAgency2(p5, token);
        p5.openElements.remove(activeElementEntry.element);
        p5.activeFormattingElements.removeEntry(activeElementEntry);
      }
      p5._reconstructActiveFormattingElements();
      p5._insertElement(token, NS2.HTML);
      p5.activeFormattingElements.pushElement(p5.openElements.current, token);
    }
    function bStartTagInBody2(p5, token) {
      p5._reconstructActiveFormattingElements();
      p5._insertElement(token, NS2.HTML);
      p5.activeFormattingElements.pushElement(p5.openElements.current, token);
    }
    function nobrStartTagInBody2(p5, token) {
      p5._reconstructActiveFormattingElements();
      if (p5.openElements.hasInScope($2.NOBR)) {
        callAdoptionAgency2(p5, token);
        p5._reconstructActiveFormattingElements();
      }
      p5._insertElement(token, NS2.HTML);
      p5.activeFormattingElements.pushElement(p5.openElements.current, token);
    }
    function appletStartTagInBody2(p5, token) {
      p5._reconstructActiveFormattingElements();
      p5._insertElement(token, NS2.HTML);
      p5.activeFormattingElements.insertMarker();
      p5.framesetOk = false;
    }
    function tableStartTagInBody2(p5, token) {
      if (p5.treeAdapter.getDocumentMode(p5.document) !== HTML.DOCUMENT_MODE.QUIRKS && p5.openElements.hasInButtonScope($2.P)) {
        p5._closePElement();
      }
      p5._insertElement(token, NS2.HTML);
      p5.framesetOk = false;
      p5.insertionMode = IN_TABLE_MODE;
    }
    function areaStartTagInBody2(p5, token) {
      p5._reconstructActiveFormattingElements();
      p5._appendElement(token, NS2.HTML);
      p5.framesetOk = false;
      token.ackSelfClosing = true;
    }
    function inputStartTagInBody2(p5, token) {
      p5._reconstructActiveFormattingElements();
      p5._appendElement(token, NS2.HTML);
      const inputType = Tokenizer2.getTokenAttr(token, ATTRS2.TYPE);
      if (!inputType || inputType.toLowerCase() !== HIDDEN_INPUT_TYPE2) {
        p5.framesetOk = false;
      }
      token.ackSelfClosing = true;
    }
    function paramStartTagInBody2(p5, token) {
      p5._appendElement(token, NS2.HTML);
      token.ackSelfClosing = true;
    }
    function hrStartTagInBody2(p5, token) {
      if (p5.openElements.hasInButtonScope($2.P)) {
        p5._closePElement();
      }
      p5._appendElement(token, NS2.HTML);
      p5.framesetOk = false;
      token.ackSelfClosing = true;
    }
    function imageStartTagInBody2(p5, token) {
      token.tagName = $2.IMG;
      areaStartTagInBody2(p5, token);
    }
    function textareaStartTagInBody2(p5, token) {
      p5._insertElement(token, NS2.HTML);
      p5.skipNextNewLine = true;
      p5.tokenizer.state = Tokenizer2.MODE.RCDATA;
      p5.originalInsertionMode = p5.insertionMode;
      p5.framesetOk = false;
      p5.insertionMode = TEXT_MODE;
    }
    function xmpStartTagInBody2(p5, token) {
      if (p5.openElements.hasInButtonScope($2.P)) {
        p5._closePElement();
      }
      p5._reconstructActiveFormattingElements();
      p5.framesetOk = false;
      p5._switchToTextParsing(token, Tokenizer2.MODE.RAWTEXT);
    }
    function iframeStartTagInBody2(p5, token) {
      p5.framesetOk = false;
      p5._switchToTextParsing(token, Tokenizer2.MODE.RAWTEXT);
    }
    function noembedStartTagInBody2(p5, token) {
      p5._switchToTextParsing(token, Tokenizer2.MODE.RAWTEXT);
    }
    function selectStartTagInBody2(p5, token) {
      p5._reconstructActiveFormattingElements();
      p5._insertElement(token, NS2.HTML);
      p5.framesetOk = false;
      if (p5.insertionMode === IN_TABLE_MODE || p5.insertionMode === IN_CAPTION_MODE || p5.insertionMode === IN_TABLE_BODY_MODE || p5.insertionMode === IN_ROW_MODE || p5.insertionMode === IN_CELL_MODE) {
        p5.insertionMode = IN_SELECT_IN_TABLE_MODE;
      } else {
        p5.insertionMode = IN_SELECT_MODE;
      }
    }
    function optgroupStartTagInBody2(p5, token) {
      if (p5.openElements.currentTagName === $2.OPTION) {
        p5.openElements.pop();
      }
      p5._reconstructActiveFormattingElements();
      p5._insertElement(token, NS2.HTML);
    }
    function rbStartTagInBody2(p5, token) {
      if (p5.openElements.hasInScope($2.RUBY)) {
        p5.openElements.generateImpliedEndTags();
      }
      p5._insertElement(token, NS2.HTML);
    }
    function rtStartTagInBody2(p5, token) {
      if (p5.openElements.hasInScope($2.RUBY)) {
        p5.openElements.generateImpliedEndTagsWithExclusion($2.RTC);
      }
      p5._insertElement(token, NS2.HTML);
    }
    function menuStartTagInBody(p5, token) {
      if (p5.openElements.hasInButtonScope($2.P)) {
        p5._closePElement();
      }
      p5._insertElement(token, NS2.HTML);
    }
    function mathStartTagInBody2(p5, token) {
      p5._reconstructActiveFormattingElements();
      foreignContent.adjustTokenMathMLAttrs(token);
      foreignContent.adjustTokenXMLAttrs(token);
      if (token.selfClosing) {
        p5._appendElement(token, NS2.MATHML);
      } else {
        p5._insertElement(token, NS2.MATHML);
      }
      token.ackSelfClosing = true;
    }
    function svgStartTagInBody2(p5, token) {
      p5._reconstructActiveFormattingElements();
      foreignContent.adjustTokenSVGAttrs(token);
      foreignContent.adjustTokenXMLAttrs(token);
      if (token.selfClosing) {
        p5._appendElement(token, NS2.SVG);
      } else {
        p5._insertElement(token, NS2.SVG);
      }
      token.ackSelfClosing = true;
    }
    function genericStartTagInBody2(p5, token) {
      p5._reconstructActiveFormattingElements();
      p5._insertElement(token, NS2.HTML);
    }
    function startTagInBody2(p5, token) {
      const tn = token.tagName;
      switch (tn.length) {
        case 1:
          if (tn === $2.I || tn === $2.S || tn === $2.B || tn === $2.U) {
            bStartTagInBody2(p5, token);
          } else if (tn === $2.P) {
            addressStartTagInBody2(p5, token);
          } else if (tn === $2.A) {
            aStartTagInBody2(p5, token);
          } else {
            genericStartTagInBody2(p5, token);
          }
          break;
        case 2:
          if (tn === $2.DL || tn === $2.OL || tn === $2.UL) {
            addressStartTagInBody2(p5, token);
          } else if (tn === $2.H1 || tn === $2.H2 || tn === $2.H3 || tn === $2.H4 || tn === $2.H5 || tn === $2.H6) {
            numberedHeaderStartTagInBody2(p5, token);
          } else if (tn === $2.LI || tn === $2.DD || tn === $2.DT) {
            listItemStartTagInBody2(p5, token);
          } else if (tn === $2.EM || tn === $2.TT) {
            bStartTagInBody2(p5, token);
          } else if (tn === $2.BR) {
            areaStartTagInBody2(p5, token);
          } else if (tn === $2.HR) {
            hrStartTagInBody2(p5, token);
          } else if (tn === $2.RB) {
            rbStartTagInBody2(p5, token);
          } else if (tn === $2.RT || tn === $2.RP) {
            rtStartTagInBody2(p5, token);
          } else if (tn !== $2.TH && tn !== $2.TD && tn !== $2.TR) {
            genericStartTagInBody2(p5, token);
          }
          break;
        case 3:
          if (tn === $2.DIV || tn === $2.DIR || tn === $2.NAV) {
            addressStartTagInBody2(p5, token);
          } else if (tn === $2.PRE) {
            preStartTagInBody2(p5, token);
          } else if (tn === $2.BIG) {
            bStartTagInBody2(p5, token);
          } else if (tn === $2.IMG || tn === $2.WBR) {
            areaStartTagInBody2(p5, token);
          } else if (tn === $2.XMP) {
            xmpStartTagInBody2(p5, token);
          } else if (tn === $2.SVG) {
            svgStartTagInBody2(p5, token);
          } else if (tn === $2.RTC) {
            rbStartTagInBody2(p5, token);
          } else if (tn !== $2.COL) {
            genericStartTagInBody2(p5, token);
          }
          break;
        case 4:
          if (tn === $2.HTML) {
            htmlStartTagInBody2(p5, token);
          } else if (tn === $2.BASE || tn === $2.LINK || tn === $2.META) {
            startTagInHead2(p5, token);
          } else if (tn === $2.BODY) {
            bodyStartTagInBody2(p5, token);
          } else if (tn === $2.MAIN || tn === $2.MENU) {
            addressStartTagInBody2(p5, token);
          } else if (tn === $2.FORM) {
            formStartTagInBody2(p5, token);
          } else if (tn === $2.CODE || tn === $2.FONT) {
            bStartTagInBody2(p5, token);
          } else if (tn === $2.NOBR) {
            nobrStartTagInBody2(p5, token);
          } else if (tn === $2.AREA) {
            areaStartTagInBody2(p5, token);
          } else if (tn === $2.MATH) {
            mathStartTagInBody2(p5, token);
          } else if (tn === $2.MENU) {
            menuStartTagInBody(p5, token);
          } else if (tn !== $2.HEAD) {
            genericStartTagInBody2(p5, token);
          }
          break;
        case 5:
          if (tn === $2.STYLE || tn === $2.TITLE) {
            startTagInHead2(p5, token);
          } else if (tn === $2.ASIDE) {
            addressStartTagInBody2(p5, token);
          } else if (tn === $2.SMALL) {
            bStartTagInBody2(p5, token);
          } else if (tn === $2.TABLE) {
            tableStartTagInBody2(p5, token);
          } else if (tn === $2.EMBED) {
            areaStartTagInBody2(p5, token);
          } else if (tn === $2.INPUT) {
            inputStartTagInBody2(p5, token);
          } else if (tn === $2.PARAM || tn === $2.TRACK) {
            paramStartTagInBody2(p5, token);
          } else if (tn === $2.IMAGE) {
            imageStartTagInBody2(p5, token);
          } else if (tn !== $2.FRAME && tn !== $2.TBODY && tn !== $2.TFOOT && tn !== $2.THEAD) {
            genericStartTagInBody2(p5, token);
          }
          break;
        case 6:
          if (tn === $2.SCRIPT) {
            startTagInHead2(p5, token);
          } else if (tn === $2.CENTER || tn === $2.FIGURE || tn === $2.FOOTER || tn === $2.HEADER || tn === $2.HGROUP || tn === $2.DIALOG) {
            addressStartTagInBody2(p5, token);
          } else if (tn === $2.BUTTON) {
            buttonStartTagInBody2(p5, token);
          } else if (tn === $2.STRIKE || tn === $2.STRONG) {
            bStartTagInBody2(p5, token);
          } else if (tn === $2.APPLET || tn === $2.OBJECT) {
            appletStartTagInBody2(p5, token);
          } else if (tn === $2.KEYGEN) {
            areaStartTagInBody2(p5, token);
          } else if (tn === $2.SOURCE) {
            paramStartTagInBody2(p5, token);
          } else if (tn === $2.IFRAME) {
            iframeStartTagInBody2(p5, token);
          } else if (tn === $2.SELECT) {
            selectStartTagInBody2(p5, token);
          } else if (tn === $2.OPTION) {
            optgroupStartTagInBody2(p5, token);
          } else {
            genericStartTagInBody2(p5, token);
          }
          break;
        case 7:
          if (tn === $2.BGSOUND) {
            startTagInHead2(p5, token);
          } else if (tn === $2.DETAILS || tn === $2.ADDRESS || tn === $2.ARTICLE || tn === $2.SECTION || tn === $2.SUMMARY) {
            addressStartTagInBody2(p5, token);
          } else if (tn === $2.LISTING) {
            preStartTagInBody2(p5, token);
          } else if (tn === $2.MARQUEE) {
            appletStartTagInBody2(p5, token);
          } else if (tn === $2.NOEMBED) {
            noembedStartTagInBody2(p5, token);
          } else if (tn !== $2.CAPTION) {
            genericStartTagInBody2(p5, token);
          }
          break;
        case 8:
          if (tn === $2.BASEFONT) {
            startTagInHead2(p5, token);
          } else if (tn === $2.FRAMESET) {
            framesetStartTagInBody2(p5, token);
          } else if (tn === $2.FIELDSET) {
            addressStartTagInBody2(p5, token);
          } else if (tn === $2.TEXTAREA) {
            textareaStartTagInBody2(p5, token);
          } else if (tn === $2.TEMPLATE) {
            startTagInHead2(p5, token);
          } else if (tn === $2.NOSCRIPT) {
            if (p5.options.scriptingEnabled) {
              noembedStartTagInBody2(p5, token);
            } else {
              genericStartTagInBody2(p5, token);
            }
          } else if (tn === $2.OPTGROUP) {
            optgroupStartTagInBody2(p5, token);
          } else if (tn !== $2.COLGROUP) {
            genericStartTagInBody2(p5, token);
          }
          break;
        case 9:
          if (tn === $2.PLAINTEXT) {
            plaintextStartTagInBody2(p5, token);
          } else {
            genericStartTagInBody2(p5, token);
          }
          break;
        case 10:
          if (tn === $2.BLOCKQUOTE || tn === $2.FIGCAPTION) {
            addressStartTagInBody2(p5, token);
          } else {
            genericStartTagInBody2(p5, token);
          }
          break;
        default:
          genericStartTagInBody2(p5, token);
      }
    }
    function bodyEndTagInBody2(p5) {
      if (p5.openElements.hasInScope($2.BODY)) {
        p5.insertionMode = AFTER_BODY_MODE;
      }
    }
    function htmlEndTagInBody2(p5, token) {
      if (p5.openElements.hasInScope($2.BODY)) {
        p5.insertionMode = AFTER_BODY_MODE;
        p5._processToken(token);
      }
    }
    function addressEndTagInBody2(p5, token) {
      const tn = token.tagName;
      if (p5.openElements.hasInScope(tn)) {
        p5.openElements.generateImpliedEndTags();
        p5.openElements.popUntilTagNamePopped(tn);
      }
    }
    function formEndTagInBody2(p5) {
      const inTemplate = p5.openElements.tmplCount > 0;
      const formElement = p5.formElement;
      if (!inTemplate) {
        p5.formElement = null;
      }
      if ((formElement || inTemplate) && p5.openElements.hasInScope($2.FORM)) {
        p5.openElements.generateImpliedEndTags();
        if (inTemplate) {
          p5.openElements.popUntilTagNamePopped($2.FORM);
        } else {
          p5.openElements.remove(formElement);
        }
      }
    }
    function pEndTagInBody2(p5) {
      if (!p5.openElements.hasInButtonScope($2.P)) {
        p5._insertFakeElement($2.P);
      }
      p5._closePElement();
    }
    function liEndTagInBody2(p5) {
      if (p5.openElements.hasInListItemScope($2.LI)) {
        p5.openElements.generateImpliedEndTagsWithExclusion($2.LI);
        p5.openElements.popUntilTagNamePopped($2.LI);
      }
    }
    function ddEndTagInBody2(p5, token) {
      const tn = token.tagName;
      if (p5.openElements.hasInScope(tn)) {
        p5.openElements.generateImpliedEndTagsWithExclusion(tn);
        p5.openElements.popUntilTagNamePopped(tn);
      }
    }
    function numberedHeaderEndTagInBody2(p5) {
      if (p5.openElements.hasNumberedHeaderInScope()) {
        p5.openElements.generateImpliedEndTags();
        p5.openElements.popUntilNumberedHeaderPopped();
      }
    }
    function appletEndTagInBody2(p5, token) {
      const tn = token.tagName;
      if (p5.openElements.hasInScope(tn)) {
        p5.openElements.generateImpliedEndTags();
        p5.openElements.popUntilTagNamePopped(tn);
        p5.activeFormattingElements.clearToLastMarker();
      }
    }
    function brEndTagInBody2(p5) {
      p5._reconstructActiveFormattingElements();
      p5._insertFakeElement($2.BR);
      p5.openElements.pop();
      p5.framesetOk = false;
    }
    function genericEndTagInBody2(p5, token) {
      const tn = token.tagName;
      for (let i2 = p5.openElements.stackTop; i2 > 0; i2--) {
        const element5 = p5.openElements.items[i2];
        if (p5.treeAdapter.getTagName(element5) === tn) {
          p5.openElements.generateImpliedEndTagsWithExclusion(tn);
          p5.openElements.popUntilElementPopped(element5);
          break;
        }
        if (p5._isSpecialElement(element5)) {
          break;
        }
      }
    }
    function endTagInBody2(p5, token) {
      const tn = token.tagName;
      switch (tn.length) {
        case 1:
          if (tn === $2.A || tn === $2.B || tn === $2.I || tn === $2.S || tn === $2.U) {
            callAdoptionAgency2(p5, token);
          } else if (tn === $2.P) {
            pEndTagInBody2(p5, token);
          } else {
            genericEndTagInBody2(p5, token);
          }
          break;
        case 2:
          if (tn === $2.DL || tn === $2.UL || tn === $2.OL) {
            addressEndTagInBody2(p5, token);
          } else if (tn === $2.LI) {
            liEndTagInBody2(p5, token);
          } else if (tn === $2.DD || tn === $2.DT) {
            ddEndTagInBody2(p5, token);
          } else if (tn === $2.H1 || tn === $2.H2 || tn === $2.H3 || tn === $2.H4 || tn === $2.H5 || tn === $2.H6) {
            numberedHeaderEndTagInBody2(p5, token);
          } else if (tn === $2.BR) {
            brEndTagInBody2(p5, token);
          } else if (tn === $2.EM || tn === $2.TT) {
            callAdoptionAgency2(p5, token);
          } else {
            genericEndTagInBody2(p5, token);
          }
          break;
        case 3:
          if (tn === $2.BIG) {
            callAdoptionAgency2(p5, token);
          } else if (tn === $2.DIR || tn === $2.DIV || tn === $2.NAV || tn === $2.PRE) {
            addressEndTagInBody2(p5, token);
          } else {
            genericEndTagInBody2(p5, token);
          }
          break;
        case 4:
          if (tn === $2.BODY) {
            bodyEndTagInBody2(p5, token);
          } else if (tn === $2.HTML) {
            htmlEndTagInBody2(p5, token);
          } else if (tn === $2.FORM) {
            formEndTagInBody2(p5, token);
          } else if (tn === $2.CODE || tn === $2.FONT || tn === $2.NOBR) {
            callAdoptionAgency2(p5, token);
          } else if (tn === $2.MAIN || tn === $2.MENU) {
            addressEndTagInBody2(p5, token);
          } else {
            genericEndTagInBody2(p5, token);
          }
          break;
        case 5:
          if (tn === $2.ASIDE) {
            addressEndTagInBody2(p5, token);
          } else if (tn === $2.SMALL) {
            callAdoptionAgency2(p5, token);
          } else {
            genericEndTagInBody2(p5, token);
          }
          break;
        case 6:
          if (tn === $2.CENTER || tn === $2.FIGURE || tn === $2.FOOTER || tn === $2.HEADER || tn === $2.HGROUP || tn === $2.DIALOG) {
            addressEndTagInBody2(p5, token);
          } else if (tn === $2.APPLET || tn === $2.OBJECT) {
            appletEndTagInBody2(p5, token);
          } else if (tn === $2.STRIKE || tn === $2.STRONG) {
            callAdoptionAgency2(p5, token);
          } else {
            genericEndTagInBody2(p5, token);
          }
          break;
        case 7:
          if (tn === $2.ADDRESS || tn === $2.ARTICLE || tn === $2.DETAILS || tn === $2.SECTION || tn === $2.SUMMARY || tn === $2.LISTING) {
            addressEndTagInBody2(p5, token);
          } else if (tn === $2.MARQUEE) {
            appletEndTagInBody2(p5, token);
          } else {
            genericEndTagInBody2(p5, token);
          }
          break;
        case 8:
          if (tn === $2.FIELDSET) {
            addressEndTagInBody2(p5, token);
          } else if (tn === $2.TEMPLATE) {
            endTagInHead2(p5, token);
          } else {
            genericEndTagInBody2(p5, token);
          }
          break;
        case 10:
          if (tn === $2.BLOCKQUOTE || tn === $2.FIGCAPTION) {
            addressEndTagInBody2(p5, token);
          } else {
            genericEndTagInBody2(p5, token);
          }
          break;
        default:
          genericEndTagInBody2(p5, token);
      }
    }
    function eofInBody2(p5, token) {
      if (p5.tmplInsertionModeStackTop > -1) {
        eofInTemplate2(p5, token);
      } else {
        p5.stopped = true;
      }
    }
    function endTagInText2(p5, token) {
      if (token.tagName === $2.SCRIPT) {
        p5.pendingScript = p5.openElements.current;
      }
      p5.openElements.pop();
      p5.insertionMode = p5.originalInsertionMode;
    }
    function eofInText2(p5, token) {
      p5._err(ERR2.eofInElementThatCanContainOnlyText);
      p5.openElements.pop();
      p5.insertionMode = p5.originalInsertionMode;
      p5._processToken(token);
    }
    function characterInTable2(p5, token) {
      const curTn = p5.openElements.currentTagName;
      if (curTn === $2.TABLE || curTn === $2.TBODY || curTn === $2.TFOOT || curTn === $2.THEAD || curTn === $2.TR) {
        p5.pendingCharacterTokens = [];
        p5.hasNonWhitespacePendingCharacterToken = false;
        p5.originalInsertionMode = p5.insertionMode;
        p5.insertionMode = IN_TABLE_TEXT_MODE;
        p5._processToken(token);
      } else {
        tokenInTable2(p5, token);
      }
    }
    function captionStartTagInTable2(p5, token) {
      p5.openElements.clearBackToTableContext();
      p5.activeFormattingElements.insertMarker();
      p5._insertElement(token, NS2.HTML);
      p5.insertionMode = IN_CAPTION_MODE;
    }
    function colgroupStartTagInTable2(p5, token) {
      p5.openElements.clearBackToTableContext();
      p5._insertElement(token, NS2.HTML);
      p5.insertionMode = IN_COLUMN_GROUP_MODE;
    }
    function colStartTagInTable2(p5, token) {
      p5.openElements.clearBackToTableContext();
      p5._insertFakeElement($2.COLGROUP);
      p5.insertionMode = IN_COLUMN_GROUP_MODE;
      p5._processToken(token);
    }
    function tbodyStartTagInTable2(p5, token) {
      p5.openElements.clearBackToTableContext();
      p5._insertElement(token, NS2.HTML);
      p5.insertionMode = IN_TABLE_BODY_MODE;
    }
    function tdStartTagInTable2(p5, token) {
      p5.openElements.clearBackToTableContext();
      p5._insertFakeElement($2.TBODY);
      p5.insertionMode = IN_TABLE_BODY_MODE;
      p5._processToken(token);
    }
    function tableStartTagInTable2(p5, token) {
      if (p5.openElements.hasInTableScope($2.TABLE)) {
        p5.openElements.popUntilTagNamePopped($2.TABLE);
        p5._resetInsertionMode();
        p5._processToken(token);
      }
    }
    function inputStartTagInTable2(p5, token) {
      const inputType = Tokenizer2.getTokenAttr(token, ATTRS2.TYPE);
      if (inputType && inputType.toLowerCase() === HIDDEN_INPUT_TYPE2) {
        p5._appendElement(token, NS2.HTML);
      } else {
        tokenInTable2(p5, token);
      }
      token.ackSelfClosing = true;
    }
    function formStartTagInTable2(p5, token) {
      if (!p5.formElement && p5.openElements.tmplCount === 0) {
        p5._insertElement(token, NS2.HTML);
        p5.formElement = p5.openElements.current;
        p5.openElements.pop();
      }
    }
    function startTagInTable2(p5, token) {
      const tn = token.tagName;
      switch (tn.length) {
        case 2:
          if (tn === $2.TD || tn === $2.TH || tn === $2.TR) {
            tdStartTagInTable2(p5, token);
          } else {
            tokenInTable2(p5, token);
          }
          break;
        case 3:
          if (tn === $2.COL) {
            colStartTagInTable2(p5, token);
          } else {
            tokenInTable2(p5, token);
          }
          break;
        case 4:
          if (tn === $2.FORM) {
            formStartTagInTable2(p5, token);
          } else {
            tokenInTable2(p5, token);
          }
          break;
        case 5:
          if (tn === $2.TABLE) {
            tableStartTagInTable2(p5, token);
          } else if (tn === $2.STYLE) {
            startTagInHead2(p5, token);
          } else if (tn === $2.TBODY || tn === $2.TFOOT || tn === $2.THEAD) {
            tbodyStartTagInTable2(p5, token);
          } else if (tn === $2.INPUT) {
            inputStartTagInTable2(p5, token);
          } else {
            tokenInTable2(p5, token);
          }
          break;
        case 6:
          if (tn === $2.SCRIPT) {
            startTagInHead2(p5, token);
          } else {
            tokenInTable2(p5, token);
          }
          break;
        case 7:
          if (tn === $2.CAPTION) {
            captionStartTagInTable2(p5, token);
          } else {
            tokenInTable2(p5, token);
          }
          break;
        case 8:
          if (tn === $2.COLGROUP) {
            colgroupStartTagInTable2(p5, token);
          } else if (tn === $2.TEMPLATE) {
            startTagInHead2(p5, token);
          } else {
            tokenInTable2(p5, token);
          }
          break;
        default:
          tokenInTable2(p5, token);
      }
    }
    function endTagInTable2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.TABLE) {
        if (p5.openElements.hasInTableScope($2.TABLE)) {
          p5.openElements.popUntilTagNamePopped($2.TABLE);
          p5._resetInsertionMode();
        }
      } else if (tn === $2.TEMPLATE) {
        endTagInHead2(p5, token);
      } else if (tn !== $2.BODY && tn !== $2.CAPTION && tn !== $2.COL && tn !== $2.COLGROUP && tn !== $2.HTML && tn !== $2.TBODY && tn !== $2.TD && tn !== $2.TFOOT && tn !== $2.TH && tn !== $2.THEAD && tn !== $2.TR) {
        tokenInTable2(p5, token);
      }
    }
    function tokenInTable2(p5, token) {
      const savedFosterParentingState = p5.fosterParentingEnabled;
      p5.fosterParentingEnabled = true;
      p5._processTokenInBodyMode(token);
      p5.fosterParentingEnabled = savedFosterParentingState;
    }
    function whitespaceCharacterInTableText2(p5, token) {
      p5.pendingCharacterTokens.push(token);
    }
    function characterInTableText2(p5, token) {
      p5.pendingCharacterTokens.push(token);
      p5.hasNonWhitespacePendingCharacterToken = true;
    }
    function tokenInTableText2(p5, token) {
      let i2 = 0;
      if (p5.hasNonWhitespacePendingCharacterToken) {
        for (; i2 < p5.pendingCharacterTokens.length; i2++) {
          tokenInTable2(p5, p5.pendingCharacterTokens[i2]);
        }
      } else {
        for (; i2 < p5.pendingCharacterTokens.length; i2++) {
          p5._insertCharacters(p5.pendingCharacterTokens[i2]);
        }
      }
      p5.insertionMode = p5.originalInsertionMode;
      p5._processToken(token);
    }
    function startTagInCaption2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.CAPTION || tn === $2.COL || tn === $2.COLGROUP || tn === $2.TBODY || tn === $2.TD || tn === $2.TFOOT || tn === $2.TH || tn === $2.THEAD || tn === $2.TR) {
        if (p5.openElements.hasInTableScope($2.CAPTION)) {
          p5.openElements.generateImpliedEndTags();
          p5.openElements.popUntilTagNamePopped($2.CAPTION);
          p5.activeFormattingElements.clearToLastMarker();
          p5.insertionMode = IN_TABLE_MODE;
          p5._processToken(token);
        }
      } else {
        startTagInBody2(p5, token);
      }
    }
    function endTagInCaption2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.CAPTION || tn === $2.TABLE) {
        if (p5.openElements.hasInTableScope($2.CAPTION)) {
          p5.openElements.generateImpliedEndTags();
          p5.openElements.popUntilTagNamePopped($2.CAPTION);
          p5.activeFormattingElements.clearToLastMarker();
          p5.insertionMode = IN_TABLE_MODE;
          if (tn === $2.TABLE) {
            p5._processToken(token);
          }
        }
      } else if (tn !== $2.BODY && tn !== $2.COL && tn !== $2.COLGROUP && tn !== $2.HTML && tn !== $2.TBODY && tn !== $2.TD && tn !== $2.TFOOT && tn !== $2.TH && tn !== $2.THEAD && tn !== $2.TR) {
        endTagInBody2(p5, token);
      }
    }
    function startTagInColumnGroup2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.HTML) {
        startTagInBody2(p5, token);
      } else if (tn === $2.COL) {
        p5._appendElement(token, NS2.HTML);
        token.ackSelfClosing = true;
      } else if (tn === $2.TEMPLATE) {
        startTagInHead2(p5, token);
      } else {
        tokenInColumnGroup2(p5, token);
      }
    }
    function endTagInColumnGroup2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.COLGROUP) {
        if (p5.openElements.currentTagName === $2.COLGROUP) {
          p5.openElements.pop();
          p5.insertionMode = IN_TABLE_MODE;
        }
      } else if (tn === $2.TEMPLATE) {
        endTagInHead2(p5, token);
      } else if (tn !== $2.COL) {
        tokenInColumnGroup2(p5, token);
      }
    }
    function tokenInColumnGroup2(p5, token) {
      if (p5.openElements.currentTagName === $2.COLGROUP) {
        p5.openElements.pop();
        p5.insertionMode = IN_TABLE_MODE;
        p5._processToken(token);
      }
    }
    function startTagInTableBody2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.TR) {
        p5.openElements.clearBackToTableBodyContext();
        p5._insertElement(token, NS2.HTML);
        p5.insertionMode = IN_ROW_MODE;
      } else if (tn === $2.TH || tn === $2.TD) {
        p5.openElements.clearBackToTableBodyContext();
        p5._insertFakeElement($2.TR);
        p5.insertionMode = IN_ROW_MODE;
        p5._processToken(token);
      } else if (tn === $2.CAPTION || tn === $2.COL || tn === $2.COLGROUP || tn === $2.TBODY || tn === $2.TFOOT || tn === $2.THEAD) {
        if (p5.openElements.hasTableBodyContextInTableScope()) {
          p5.openElements.clearBackToTableBodyContext();
          p5.openElements.pop();
          p5.insertionMode = IN_TABLE_MODE;
          p5._processToken(token);
        }
      } else {
        startTagInTable2(p5, token);
      }
    }
    function endTagInTableBody2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.TBODY || tn === $2.TFOOT || tn === $2.THEAD) {
        if (p5.openElements.hasInTableScope(tn)) {
          p5.openElements.clearBackToTableBodyContext();
          p5.openElements.pop();
          p5.insertionMode = IN_TABLE_MODE;
        }
      } else if (tn === $2.TABLE) {
        if (p5.openElements.hasTableBodyContextInTableScope()) {
          p5.openElements.clearBackToTableBodyContext();
          p5.openElements.pop();
          p5.insertionMode = IN_TABLE_MODE;
          p5._processToken(token);
        }
      } else if (tn !== $2.BODY && tn !== $2.CAPTION && tn !== $2.COL && tn !== $2.COLGROUP || tn !== $2.HTML && tn !== $2.TD && tn !== $2.TH && tn !== $2.TR) {
        endTagInTable2(p5, token);
      }
    }
    function startTagInRow2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.TH || tn === $2.TD) {
        p5.openElements.clearBackToTableRowContext();
        p5._insertElement(token, NS2.HTML);
        p5.insertionMode = IN_CELL_MODE;
        p5.activeFormattingElements.insertMarker();
      } else if (tn === $2.CAPTION || tn === $2.COL || tn === $2.COLGROUP || tn === $2.TBODY || tn === $2.TFOOT || tn === $2.THEAD || tn === $2.TR) {
        if (p5.openElements.hasInTableScope($2.TR)) {
          p5.openElements.clearBackToTableRowContext();
          p5.openElements.pop();
          p5.insertionMode = IN_TABLE_BODY_MODE;
          p5._processToken(token);
        }
      } else {
        startTagInTable2(p5, token);
      }
    }
    function endTagInRow2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.TR) {
        if (p5.openElements.hasInTableScope($2.TR)) {
          p5.openElements.clearBackToTableRowContext();
          p5.openElements.pop();
          p5.insertionMode = IN_TABLE_BODY_MODE;
        }
      } else if (tn === $2.TABLE) {
        if (p5.openElements.hasInTableScope($2.TR)) {
          p5.openElements.clearBackToTableRowContext();
          p5.openElements.pop();
          p5.insertionMode = IN_TABLE_BODY_MODE;
          p5._processToken(token);
        }
      } else if (tn === $2.TBODY || tn === $2.TFOOT || tn === $2.THEAD) {
        if (p5.openElements.hasInTableScope(tn) || p5.openElements.hasInTableScope($2.TR)) {
          p5.openElements.clearBackToTableRowContext();
          p5.openElements.pop();
          p5.insertionMode = IN_TABLE_BODY_MODE;
          p5._processToken(token);
        }
      } else if (tn !== $2.BODY && tn !== $2.CAPTION && tn !== $2.COL && tn !== $2.COLGROUP || tn !== $2.HTML && tn !== $2.TD && tn !== $2.TH) {
        endTagInTable2(p5, token);
      }
    }
    function startTagInCell2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.CAPTION || tn === $2.COL || tn === $2.COLGROUP || tn === $2.TBODY || tn === $2.TD || tn === $2.TFOOT || tn === $2.TH || tn === $2.THEAD || tn === $2.TR) {
        if (p5.openElements.hasInTableScope($2.TD) || p5.openElements.hasInTableScope($2.TH)) {
          p5._closeTableCell();
          p5._processToken(token);
        }
      } else {
        startTagInBody2(p5, token);
      }
    }
    function endTagInCell2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.TD || tn === $2.TH) {
        if (p5.openElements.hasInTableScope(tn)) {
          p5.openElements.generateImpliedEndTags();
          p5.openElements.popUntilTagNamePopped(tn);
          p5.activeFormattingElements.clearToLastMarker();
          p5.insertionMode = IN_ROW_MODE;
        }
      } else if (tn === $2.TABLE || tn === $2.TBODY || tn === $2.TFOOT || tn === $2.THEAD || tn === $2.TR) {
        if (p5.openElements.hasInTableScope(tn)) {
          p5._closeTableCell();
          p5._processToken(token);
        }
      } else if (tn !== $2.BODY && tn !== $2.CAPTION && tn !== $2.COL && tn !== $2.COLGROUP && tn !== $2.HTML) {
        endTagInBody2(p5, token);
      }
    }
    function startTagInSelect2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.HTML) {
        startTagInBody2(p5, token);
      } else if (tn === $2.OPTION) {
        if (p5.openElements.currentTagName === $2.OPTION) {
          p5.openElements.pop();
        }
        p5._insertElement(token, NS2.HTML);
      } else if (tn === $2.OPTGROUP) {
        if (p5.openElements.currentTagName === $2.OPTION) {
          p5.openElements.pop();
        }
        if (p5.openElements.currentTagName === $2.OPTGROUP) {
          p5.openElements.pop();
        }
        p5._insertElement(token, NS2.HTML);
      } else if (tn === $2.INPUT || tn === $2.KEYGEN || tn === $2.TEXTAREA || tn === $2.SELECT) {
        if (p5.openElements.hasInSelectScope($2.SELECT)) {
          p5.openElements.popUntilTagNamePopped($2.SELECT);
          p5._resetInsertionMode();
          if (tn !== $2.SELECT) {
            p5._processToken(token);
          }
        }
      } else if (tn === $2.SCRIPT || tn === $2.TEMPLATE) {
        startTagInHead2(p5, token);
      }
    }
    function endTagInSelect2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.OPTGROUP) {
        const prevOpenElement = p5.openElements.items[p5.openElements.stackTop - 1];
        const prevOpenElementTn = prevOpenElement && p5.treeAdapter.getTagName(prevOpenElement);
        if (p5.openElements.currentTagName === $2.OPTION && prevOpenElementTn === $2.OPTGROUP) {
          p5.openElements.pop();
        }
        if (p5.openElements.currentTagName === $2.OPTGROUP) {
          p5.openElements.pop();
        }
      } else if (tn === $2.OPTION) {
        if (p5.openElements.currentTagName === $2.OPTION) {
          p5.openElements.pop();
        }
      } else if (tn === $2.SELECT && p5.openElements.hasInSelectScope($2.SELECT)) {
        p5.openElements.popUntilTagNamePopped($2.SELECT);
        p5._resetInsertionMode();
      } else if (tn === $2.TEMPLATE) {
        endTagInHead2(p5, token);
      }
    }
    function startTagInSelectInTable2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.CAPTION || tn === $2.TABLE || tn === $2.TBODY || tn === $2.TFOOT || tn === $2.THEAD || tn === $2.TR || tn === $2.TD || tn === $2.TH) {
        p5.openElements.popUntilTagNamePopped($2.SELECT);
        p5._resetInsertionMode();
        p5._processToken(token);
      } else {
        startTagInSelect2(p5, token);
      }
    }
    function endTagInSelectInTable2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.CAPTION || tn === $2.TABLE || tn === $2.TBODY || tn === $2.TFOOT || tn === $2.THEAD || tn === $2.TR || tn === $2.TD || tn === $2.TH) {
        if (p5.openElements.hasInTableScope(tn)) {
          p5.openElements.popUntilTagNamePopped($2.SELECT);
          p5._resetInsertionMode();
          p5._processToken(token);
        }
      } else {
        endTagInSelect2(p5, token);
      }
    }
    function startTagInTemplate2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.BASE || tn === $2.BASEFONT || tn === $2.BGSOUND || tn === $2.LINK || tn === $2.META || tn === $2.NOFRAMES || tn === $2.SCRIPT || tn === $2.STYLE || tn === $2.TEMPLATE || tn === $2.TITLE) {
        startTagInHead2(p5, token);
      } else {
        const newInsertionMode = TEMPLATE_INSERTION_MODE_SWITCH_MAP[tn] || IN_BODY_MODE;
        p5._popTmplInsertionMode();
        p5._pushTmplInsertionMode(newInsertionMode);
        p5.insertionMode = newInsertionMode;
        p5._processToken(token);
      }
    }
    function endTagInTemplate2(p5, token) {
      if (token.tagName === $2.TEMPLATE) {
        endTagInHead2(p5, token);
      }
    }
    function eofInTemplate2(p5, token) {
      if (p5.openElements.tmplCount > 0) {
        p5.openElements.popUntilTagNamePopped($2.TEMPLATE);
        p5.activeFormattingElements.clearToLastMarker();
        p5._popTmplInsertionMode();
        p5._resetInsertionMode();
        p5._processToken(token);
      } else {
        p5.stopped = true;
      }
    }
    function startTagAfterBody2(p5, token) {
      if (token.tagName === $2.HTML) {
        startTagInBody2(p5, token);
      } else {
        tokenAfterBody2(p5, token);
      }
    }
    function endTagAfterBody2(p5, token) {
      if (token.tagName === $2.HTML) {
        if (!p5.fragmentContext) {
          p5.insertionMode = AFTER_AFTER_BODY_MODE;
        }
      } else {
        tokenAfterBody2(p5, token);
      }
    }
    function tokenAfterBody2(p5, token) {
      p5.insertionMode = IN_BODY_MODE;
      p5._processToken(token);
    }
    function startTagInFrameset2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.HTML) {
        startTagInBody2(p5, token);
      } else if (tn === $2.FRAMESET) {
        p5._insertElement(token, NS2.HTML);
      } else if (tn === $2.FRAME) {
        p5._appendElement(token, NS2.HTML);
        token.ackSelfClosing = true;
      } else if (tn === $2.NOFRAMES) {
        startTagInHead2(p5, token);
      }
    }
    function endTagInFrameset2(p5, token) {
      if (token.tagName === $2.FRAMESET && !p5.openElements.isRootHtmlElementCurrent()) {
        p5.openElements.pop();
        if (!p5.fragmentContext && p5.openElements.currentTagName !== $2.FRAMESET) {
          p5.insertionMode = AFTER_FRAMESET_MODE;
        }
      }
    }
    function startTagAfterFrameset2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.HTML) {
        startTagInBody2(p5, token);
      } else if (tn === $2.NOFRAMES) {
        startTagInHead2(p5, token);
      }
    }
    function endTagAfterFrameset2(p5, token) {
      if (token.tagName === $2.HTML) {
        p5.insertionMode = AFTER_AFTER_FRAMESET_MODE;
      }
    }
    function startTagAfterAfterBody2(p5, token) {
      if (token.tagName === $2.HTML) {
        startTagInBody2(p5, token);
      } else {
        tokenAfterAfterBody2(p5, token);
      }
    }
    function tokenAfterAfterBody2(p5, token) {
      p5.insertionMode = IN_BODY_MODE;
      p5._processToken(token);
    }
    function startTagAfterAfterFrameset2(p5, token) {
      const tn = token.tagName;
      if (tn === $2.HTML) {
        startTagInBody2(p5, token);
      } else if (tn === $2.NOFRAMES) {
        startTagInHead2(p5, token);
      }
    }
    function nullCharacterInForeignContent2(p5, token) {
      token.chars = unicode.REPLACEMENT_CHARACTER;
      p5._insertCharacters(token);
    }
    function characterInForeignContent2(p5, token) {
      p5._insertCharacters(token);
      p5.framesetOk = false;
    }
    function startTagInForeignContent2(p5, token) {
      if (foreignContent.causesExit(token) && !p5.fragmentContext) {
        while (p5.treeAdapter.getNamespaceURI(p5.openElements.current) !== NS2.HTML && !p5._isIntegrationPoint(p5.openElements.current)) {
          p5.openElements.pop();
        }
        p5._processToken(token);
      } else {
        const current2 = p5._getAdjustedCurrentElement();
        const currentNs = p5.treeAdapter.getNamespaceURI(current2);
        if (currentNs === NS2.MATHML) {
          foreignContent.adjustTokenMathMLAttrs(token);
        } else if (currentNs === NS2.SVG) {
          foreignContent.adjustTokenSVGTagName(token);
          foreignContent.adjustTokenSVGAttrs(token);
        }
        foreignContent.adjustTokenXMLAttrs(token);
        if (token.selfClosing) {
          p5._appendElement(token, currentNs);
        } else {
          p5._insertElement(token, currentNs);
        }
        token.ackSelfClosing = true;
      }
    }
    function endTagInForeignContent2(p5, token) {
      for (let i2 = p5.openElements.stackTop; i2 > 0; i2--) {
        const element5 = p5.openElements.items[i2];
        if (p5.treeAdapter.getNamespaceURI(element5) === NS2.HTML) {
          p5._processToken(token);
          break;
        }
        if (p5.treeAdapter.getTagName(element5).toLowerCase() === token.tagName) {
          p5.openElements.popUntilElementPopped(element5);
          break;
        }
      }
    }
  }
});

// ../../node_modules/picomatch/lib/constants.js
var require_constants = __commonJS({
  "../../node_modules/picomatch/lib/constants.js"(exports2, module2) {
    "use strict";
    var path45 = require("path");
    var WIN_SLASH = "\\\\/";
    var WIN_NO_SLASH = `[^${WIN_SLASH}]`;
    var DOT_LITERAL = "\\.";
    var PLUS_LITERAL = "\\+";
    var QMARK_LITERAL = "\\?";
    var SLASH_LITERAL = "\\/";
    var ONE_CHAR = "(?=.)";
    var QMARK = "[^/]";
    var END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;
    var START_ANCHOR = `(?:^|${SLASH_LITERAL})`;
    var DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;
    var NO_DOT = `(?!${DOT_LITERAL})`;
    var NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;
    var NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;
    var NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;
    var QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;
    var STAR = `${QMARK}*?`;
    var POSIX_CHARS = {
      DOT_LITERAL,
      PLUS_LITERAL,
      QMARK_LITERAL,
      SLASH_LITERAL,
      ONE_CHAR,
      QMARK,
      END_ANCHOR,
      DOTS_SLASH,
      NO_DOT,
      NO_DOTS,
      NO_DOT_SLASH,
      NO_DOTS_SLASH,
      QMARK_NO_DOT,
      STAR,
      START_ANCHOR
    };
    var WINDOWS_CHARS = {
      ...POSIX_CHARS,
      SLASH_LITERAL: `[${WIN_SLASH}]`,
      QMARK: WIN_NO_SLASH,
      STAR: `${WIN_NO_SLASH}*?`,
      DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,
      NO_DOT: `(?!${DOT_LITERAL})`,
      NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,
      NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,
      NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,
      QMARK_NO_DOT: `[^.${WIN_SLASH}]`,
      START_ANCHOR: `(?:^|[${WIN_SLASH}])`,
      END_ANCHOR: `(?:[${WIN_SLASH}]|$)`
    };
    var POSIX_REGEX_SOURCE = {
      alnum: "a-zA-Z0-9",
      alpha: "a-zA-Z",
      ascii: "\\x00-\\x7F",
      blank: " \\t",
      cntrl: "\\x00-\\x1F\\x7F",
      digit: "0-9",
      graph: "\\x21-\\x7E",
      lower: "a-z",
      print: "\\x20-\\x7E ",
      punct: "\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",
      space: " \\t\\r\\n\\v\\f",
      upper: "A-Z",
      word: "A-Za-z0-9_",
      xdigit: "A-Fa-f0-9"
    };
    module2.exports = {
      MAX_LENGTH: 1024 * 64,
      POSIX_REGEX_SOURCE,
      // regular expressions
      REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g,
      REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/,
      REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/,
      REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g,
      REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g,
      REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g,
      // Replace globs with equivalent patterns to reduce parsing time.
      REPLACEMENTS: {
        "***": "*",
        "**/**": "**",
        "**/**/**": "**"
      },
      // Digits
      CHAR_0: 48,
      /* 0 */
      CHAR_9: 57,
      /* 9 */
      // Alphabet chars.
      CHAR_UPPERCASE_A: 65,
      /* A */
      CHAR_LOWERCASE_A: 97,
      /* a */
      CHAR_UPPERCASE_Z: 90,
      /* Z */
      CHAR_LOWERCASE_Z: 122,
      /* z */
      CHAR_LEFT_PARENTHESES: 40,
      /* ( */
      CHAR_RIGHT_PARENTHESES: 41,
      /* ) */
      CHAR_ASTERISK: 42,
      /* * */
      // Non-alphabetic chars.
      CHAR_AMPERSAND: 38,
      /* & */
      CHAR_AT: 64,
      /* @ */
      CHAR_BACKWARD_SLASH: 92,
      /* \ */
      CHAR_CARRIAGE_RETURN: 13,
      /* \r */
      CHAR_CIRCUMFLEX_ACCENT: 94,
      /* ^ */
      CHAR_COLON: 58,
      /* : */
      CHAR_COMMA: 44,
      /* , */
      CHAR_DOT: 46,
      /* . */
      CHAR_DOUBLE_QUOTE: 34,
      /* " */
      CHAR_EQUAL: 61,
      /* = */
      CHAR_EXCLAMATION_MARK: 33,
      /* ! */
      CHAR_FORM_FEED: 12,
      /* \f */
      CHAR_FORWARD_SLASH: 47,
      /* / */
      CHAR_GRAVE_ACCENT: 96,
      /* ` */
      CHAR_HASH: 35,
      /* # */
      CHAR_HYPHEN_MINUS: 45,
      /* - */
      CHAR_LEFT_ANGLE_BRACKET: 60,
      /* < */
      CHAR_LEFT_CURLY_BRACE: 123,
      /* { */
      CHAR_LEFT_SQUARE_BRACKET: 91,
      /* [ */
      CHAR_LINE_FEED: 10,
      /* \n */
      CHAR_NO_BREAK_SPACE: 160,
      /* \u00A0 */
      CHAR_PERCENT: 37,
      /* % */
      CHAR_PLUS: 43,
      /* + */
      CHAR_QUESTION_MARK: 63,
      /* ? */
      CHAR_RIGHT_ANGLE_BRACKET: 62,
      /* > */
      CHAR_RIGHT_CURLY_BRACE: 125,
      /* } */
      CHAR_RIGHT_SQUARE_BRACKET: 93,
      /* ] */
      CHAR_SEMICOLON: 59,
      /* ; */
      CHAR_SINGLE_QUOTE: 39,
      /* ' */
      CHAR_SPACE: 32,
      /*   */
      CHAR_TAB: 9,
      /* \t */
      CHAR_UNDERSCORE: 95,
      /* _ */
      CHAR_VERTICAL_LINE: 124,
      /* | */
      CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279,
      /* \uFEFF */
      SEP: path45.sep,
      /**
       * Create EXTGLOB_CHARS
       */
      extglobChars(chars) {
        return {
          "!": { type: "negate", open: "(?:(?!(?:", close: `))${chars.STAR})` },
          "?": { type: "qmark", open: "(?:", close: ")?" },
          "+": { type: "plus", open: "(?:", close: ")+" },
          "*": { type: "star", open: "(?:", close: ")*" },
          "@": { type: "at", open: "(?:", close: ")" }
        };
      },
      /**
       * Create GLOB_CHARS
       */
      globChars(win322) {
        return win322 === true ? WINDOWS_CHARS : POSIX_CHARS;
      }
    };
  }
});

// ../../node_modules/picomatch/lib/utils.js
var require_utils3 = __commonJS({
  "../../node_modules/picomatch/lib/utils.js"(exports2) {
    "use strict";
    var path45 = require("path");
    var win322 = process.platform === "win32";
    var {
      REGEX_BACKSLASH,
      REGEX_REMOVE_BACKSLASH,
      REGEX_SPECIAL_CHARS,
      REGEX_SPECIAL_CHARS_GLOBAL
    } = require_constants();
    exports2.isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val);
    exports2.hasRegexChars = (str2) => REGEX_SPECIAL_CHARS.test(str2);
    exports2.isRegexChar = (str2) => str2.length === 1 && exports2.hasRegexChars(str2);
    exports2.escapeRegex = (str2) => str2.replace(REGEX_SPECIAL_CHARS_GLOBAL, "\\$1");
    exports2.toPosixSlashes = (str2) => str2.replace(REGEX_BACKSLASH, "/");
    exports2.removeBackslashes = (str2) => {
      return str2.replace(REGEX_REMOVE_BACKSLASH, (match3) => {
        return match3 === "\\" ? "" : match3;
      });
    };
    exports2.supportsLookbehinds = () => {
      const segs = process.version.slice(1).split(".").map(Number);
      if (segs.length === 3 && segs[0] >= 9 || segs[0] === 8 && segs[1] >= 10) {
        return true;
      }
      return false;
    };
    exports2.isWindows = (options) => {
      if (options && typeof options.windows === "boolean") {
        return options.windows;
      }
      return win322 === true || path45.sep === "\\";
    };
    exports2.escapeLast = (input3, char, lastIdx) => {
      const idx = input3.lastIndexOf(char, lastIdx);
      if (idx === -1) return input3;
      if (input3[idx - 1] === "\\") return exports2.escapeLast(input3, char, idx - 1);
      return `${input3.slice(0, idx)}\\${input3.slice(idx)}`;
    };
    exports2.removePrefix = (input3, state = {}) => {
      let output2 = input3;
      if (output2.startsWith("./")) {
        output2 = output2.slice(2);
        state.prefix = "./";
      }
      return output2;
    };
    exports2.wrapOutput = (input3, state = {}, options = {}) => {
      const prepend = options.contains ? "" : "^";
      const append = options.contains ? "" : "$";
      let output2 = `${prepend}(?:${input3})${append}`;
      if (state.negated === true) {
        output2 = `(?:^(?!${output2}).*$)`;
      }
      return output2;
    };
  }
});

// ../../node_modules/picomatch/lib/scan.js
var require_scan2 = __commonJS({
  "../../node_modules/picomatch/lib/scan.js"(exports2, module2) {
    "use strict";
    var utils2 = require_utils3();
    var {
      CHAR_ASTERISK: CHAR_ASTERISK2,
      /* * */
      CHAR_AT,
      /* @ */
      CHAR_BACKWARD_SLASH,
      /* \ */
      CHAR_COMMA: CHAR_COMMA2,
      /* , */
      CHAR_DOT,
      /* . */
      CHAR_EXCLAMATION_MARK,
      /* ! */
      CHAR_FORWARD_SLASH,
      /* / */
      CHAR_LEFT_CURLY_BRACE,
      /* { */
      CHAR_LEFT_PARENTHESES,
      /* ( */
      CHAR_LEFT_SQUARE_BRACKET: CHAR_LEFT_SQUARE_BRACKET2,
      /* [ */
      CHAR_PLUS,
      /* + */
      CHAR_QUESTION_MARK,
      /* ? */
      CHAR_RIGHT_CURLY_BRACE,
      /* } */
      CHAR_RIGHT_PARENTHESES,
      /* ) */
      CHAR_RIGHT_SQUARE_BRACKET: CHAR_RIGHT_SQUARE_BRACKET2
      /* ] */
    } = require_constants();
    var isPathSeparator = (code7) => {
      return code7 === CHAR_FORWARD_SLASH || code7 === CHAR_BACKWARD_SLASH;
    };
    var depth = (token) => {
      if (token.isPrefix !== true) {
        token.depth = token.isGlobstar ? Infinity : 1;
      }
    };
    var scan2 = (input3, options) => {
      const opts = options || {};
      const length = input3.length - 1;
      const scanToEnd = opts.parts === true || opts.scanToEnd === true;
      const slashes = [];
      const tokens = [];
      const parts = [];
      let str2 = input3;
      let index4 = -1;
      let start = 0;
      let lastIndex = 0;
      let isBrace = false;
      let isBracket = false;
      let isGlob = false;
      let isExtglob = false;
      let isGlobstar = false;
      let braceEscaped = false;
      let backslashes = false;
      let negated = false;
      let negatedExtglob = false;
      let finished = false;
      let braces = 0;
      let prev;
      let code7;
      let token = { value: "", depth: 0, isGlob: false };
      const eos = () => index4 >= length;
      const peek2 = () => str2.charCodeAt(index4 + 1);
      const advance = () => {
        prev = code7;
        return str2.charCodeAt(++index4);
      };
      while (index4 < length) {
        code7 = advance();
        let next;
        if (code7 === CHAR_BACKWARD_SLASH) {
          backslashes = token.backslashes = true;
          code7 = advance();
          if (code7 === CHAR_LEFT_CURLY_BRACE) {
            braceEscaped = true;
          }
          continue;
        }
        if (braceEscaped === true || code7 === CHAR_LEFT_CURLY_BRACE) {
          braces++;
          while (eos() !== true && (code7 = advance())) {
            if (code7 === CHAR_BACKWARD_SLASH) {
              backslashes = token.backslashes = true;
              advance();
              continue;
            }
            if (code7 === CHAR_LEFT_CURLY_BRACE) {
              braces++;
              continue;
            }
            if (braceEscaped !== true && code7 === CHAR_DOT && (code7 = advance()) === CHAR_DOT) {
              isBrace = token.isBrace = true;
              isGlob = token.isGlob = true;
              finished = true;
              if (scanToEnd === true) {
                continue;
              }
              break;
            }
            if (braceEscaped !== true && code7 === CHAR_COMMA2) {
              isBrace = token.isBrace = true;
              isGlob = token.isGlob = true;
              finished = true;
              if (scanToEnd === true) {
                continue;
              }
              break;
            }
            if (code7 === CHAR_RIGHT_CURLY_BRACE) {
              braces--;
              if (braces === 0) {
                braceEscaped = false;
                isBrace = token.isBrace = true;
                finished = true;
                break;
              }
            }
          }
          if (scanToEnd === true) {
            continue;
          }
          break;
        }
        if (code7 === CHAR_FORWARD_SLASH) {
          slashes.push(index4);
          tokens.push(token);
          token = { value: "", depth: 0, isGlob: false };
          if (finished === true) continue;
          if (prev === CHAR_DOT && index4 === start + 1) {
            start += 2;
            continue;
          }
          lastIndex = index4 + 1;
          continue;
        }
        if (opts.noext !== true) {
          const isExtglobChar = code7 === CHAR_PLUS || code7 === CHAR_AT || code7 === CHAR_ASTERISK2 || code7 === CHAR_QUESTION_MARK || code7 === CHAR_EXCLAMATION_MARK;
          if (isExtglobChar === true && peek2() === CHAR_LEFT_PARENTHESES) {
            isGlob = token.isGlob = true;
            isExtglob = token.isExtglob = true;
            finished = true;
            if (code7 === CHAR_EXCLAMATION_MARK && index4 === start) {
              negatedExtglob = true;
            }
            if (scanToEnd === true) {
              while (eos() !== true && (code7 = advance())) {
                if (code7 === CHAR_BACKWARD_SLASH) {
                  backslashes = token.backslashes = true;
                  code7 = advance();
                  continue;
                }
                if (code7 === CHAR_RIGHT_PARENTHESES) {
                  isGlob = token.isGlob = true;
                  finished = true;
                  break;
                }
              }
              continue;
            }
            break;
          }
        }
        if (code7 === CHAR_ASTERISK2) {
          if (prev === CHAR_ASTERISK2) isGlobstar = token.isGlobstar = true;
          isGlob = token.isGlob = true;
          finished = true;
          if (scanToEnd === true) {
            continue;
          }
          break;
        }
        if (code7 === CHAR_QUESTION_MARK) {
          isGlob = token.isGlob = true;
          finished = true;
          if (scanToEnd === true) {
            continue;
          }
          break;
        }
        if (code7 === CHAR_LEFT_SQUARE_BRACKET2) {
          while (eos() !== true && (next = advance())) {
            if (next === CHAR_BACKWARD_SLASH) {
              backslashes = token.backslashes = true;
              advance();
              continue;
            }
            if (next === CHAR_RIGHT_SQUARE_BRACKET2) {
              isBracket = token.isBracket = true;
              isGlob = token.isGlob = true;
              finished = true;
              break;
            }
          }
          if (scanToEnd === true) {
            continue;
          }
          break;
        }
        if (opts.nonegate !== true && code7 === CHAR_EXCLAMATION_MARK && index4 === start) {
          negated = token.negated = true;
          start++;
          continue;
        }
        if (opts.noparen !== true && code7 === CHAR_LEFT_PARENTHESES) {
          isGlob = token.isGlob = true;
          if (scanToEnd === true) {
            while (eos() !== true && (code7 = advance())) {
              if (code7 === CHAR_LEFT_PARENTHESES) {
                backslashes = token.backslashes = true;
                code7 = advance();
                continue;
              }
              if (code7 === CHAR_RIGHT_PARENTHESES) {
                finished = true;
                break;
              }
            }
            continue;
          }
          break;
        }
        if (isGlob === true) {
          finished = true;
          if (scanToEnd === true) {
            continue;
          }
          break;
        }
      }
      if (opts.noext === true) {
        isExtglob = false;
        isGlob = false;
      }
      let base5 = str2;
      let prefix2 = "";
      let glob2 = "";
      if (start > 0) {
        prefix2 = str2.slice(0, start);
        str2 = str2.slice(start);
        lastIndex -= start;
      }
      if (base5 && isGlob === true && lastIndex > 0) {
        base5 = str2.slice(0, lastIndex);
        glob2 = str2.slice(lastIndex);
      } else if (isGlob === true) {
        base5 = "";
        glob2 = str2;
      } else {
        base5 = str2;
      }
      if (base5 && base5 !== "" && base5 !== "/" && base5 !== str2) {
        if (isPathSeparator(base5.charCodeAt(base5.length - 1))) {
          base5 = base5.slice(0, -1);
        }
      }
      if (opts.unescape === true) {
        if (glob2) glob2 = utils2.removeBackslashes(glob2);
        if (base5 && backslashes === true) {
          base5 = utils2.removeBackslashes(base5);
        }
      }
      const state = {
        prefix: prefix2,
        input: input3,
        start,
        base: base5,
        glob: glob2,
        isBrace,
        isBracket,
        isGlob,
        isExtglob,
        isGlobstar,
        negated,
        negatedExtglob
      };
      if (opts.tokens === true) {
        state.maxDepth = 0;
        if (!isPathSeparator(code7)) {
          tokens.push(token);
        }
        state.tokens = tokens;
      }
      if (opts.parts === true || opts.tokens === true) {
        let prevIndex;
        for (let idx = 0; idx < slashes.length; idx++) {
          const n = prevIndex ? prevIndex + 1 : start;
          const i2 = slashes[idx];
          const value = input3.slice(n, i2);
          if (opts.tokens) {
            if (idx === 0 && start !== 0) {
              tokens[idx].isPrefix = true;
              tokens[idx].value = prefix2;
            } else {
              tokens[idx].value = value;
            }
            depth(tokens[idx]);
            state.maxDepth += tokens[idx].depth;
          }
          if (idx !== 0 || value !== "") {
            parts.push(value);
          }
          prevIndex = i2;
        }
        if (prevIndex && prevIndex + 1 < input3.length) {
          const value = input3.slice(prevIndex + 1);
          parts.push(value);
          if (opts.tokens) {
            tokens[tokens.length - 1].value = value;
            depth(tokens[tokens.length - 1]);
            state.maxDepth += tokens[tokens.length - 1].depth;
          }
        }
        state.slashes = slashes;
        state.parts = parts;
      }
      return state;
    };
    module2.exports = scan2;
  }
});

// ../../node_modules/picomatch/lib/parse.js
var require_parse3 = __commonJS({
  "../../node_modules/picomatch/lib/parse.js"(exports2, module2) {
    "use strict";
    var constants2 = require_constants();
    var utils2 = require_utils3();
    var {
      MAX_LENGTH,
      POSIX_REGEX_SOURCE,
      REGEX_NON_SPECIAL_CHARS,
      REGEX_SPECIAL_CHARS_BACKREF,
      REPLACEMENTS
    } = constants2;
    var expandRange = (args, options) => {
      if (typeof options.expandRange === "function") {
        return options.expandRange(...args, options);
      }
      args.sort();
      const value = `[${args.join("-")}]`;
      try {
        new RegExp(value);
      } catch (ex) {
        return args.map((v) => utils2.escapeRegex(v)).join("..");
      }
      return value;
    };
    var syntaxError = (type2, char) => {
      return `Missing ${type2}: "${char}" - use "\\\\${char}" to match literal characters`;
    };
    var parse16 = (input3, options) => {
      if (typeof input3 !== "string") {
        throw new TypeError("Expected a string");
      }
      input3 = REPLACEMENTS[input3] || input3;
      const opts = { ...options };
      const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
      let len = input3.length;
      if (len > max) {
        throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);
      }
      const bos = { type: "bos", value: "", output: opts.prepend || "" };
      const tokens = [bos];
      const capture = opts.capture ? "" : "?:";
      const win322 = utils2.isWindows(options);
      const PLATFORM_CHARS = constants2.globChars(win322);
      const EXTGLOB_CHARS = constants2.extglobChars(PLATFORM_CHARS);
      const {
        DOT_LITERAL,
        PLUS_LITERAL,
        SLASH_LITERAL,
        ONE_CHAR,
        DOTS_SLASH,
        NO_DOT,
        NO_DOT_SLASH,
        NO_DOTS_SLASH,
        QMARK,
        QMARK_NO_DOT,
        STAR,
        START_ANCHOR
      } = PLATFORM_CHARS;
      const globstar = (opts2) => {
        return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;
      };
      const nodot = opts.dot ? "" : NO_DOT;
      const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;
      let star3 = opts.bash === true ? globstar(opts) : STAR;
      if (opts.capture) {
        star3 = `(${star3})`;
      }
      if (typeof opts.noext === "boolean") {
        opts.noextglob = opts.noext;
      }
      const state = {
        input: input3,
        index: -1,
        start: 0,
        dot: opts.dot === true,
        consumed: "",
        output: "",
        prefix: "",
        backtrack: false,
        negated: false,
        brackets: 0,
        braces: 0,
        parens: 0,
        quotes: 0,
        globstar: false,
        tokens
      };
      input3 = utils2.removePrefix(input3, state);
      len = input3.length;
      const extglobs = [];
      const braces = [];
      const stack = [];
      let prev = bos;
      let value;
      const eos = () => state.index === len - 1;
      const peek2 = state.peek = (n = 1) => input3[state.index + n];
      const advance = state.advance = () => input3[++state.index] || "";
      const remaining = () => input3.slice(state.index + 1);
      const consume = (value2 = "", num = 0) => {
        state.consumed += value2;
        state.index += num;
      };
      const append = (token) => {
        state.output += token.output != null ? token.output : token.value;
        consume(token.value);
      };
      const negate = () => {
        let count2 = 1;
        while (peek2() === "!" && (peek2(2) !== "(" || peek2(3) === "?")) {
          advance();
          state.start++;
          count2++;
        }
        if (count2 % 2 === 0) {
          return false;
        }
        state.negated = true;
        state.start++;
        return true;
      };
      const increment2 = (type2) => {
        state[type2]++;
        stack.push(type2);
      };
      const decrement = (type2) => {
        state[type2]--;
        stack.pop();
      };
      const push = (tok) => {
        if (prev.type === "globstar") {
          const isBrace = state.braces > 0 && (tok.type === "comma" || tok.type === "brace");
          const isExtglob = tok.extglob === true || extglobs.length && (tok.type === "pipe" || tok.type === "paren");
          if (tok.type !== "slash" && tok.type !== "paren" && !isBrace && !isExtglob) {
            state.output = state.output.slice(0, -prev.output.length);
            prev.type = "star";
            prev.value = "*";
            prev.output = star3;
            state.output += prev.output;
          }
        }
        if (extglobs.length && tok.type !== "paren") {
          extglobs[extglobs.length - 1].inner += tok.value;
        }
        if (tok.value || tok.output) append(tok);
        if (prev && prev.type === "text" && tok.type === "text") {
          prev.value += tok.value;
          prev.output = (prev.output || "") + tok.value;
          return;
        }
        tok.prev = prev;
        tokens.push(tok);
        prev = tok;
      };
      const extglobOpen = (type2, value2) => {
        const token = { ...EXTGLOB_CHARS[value2], conditions: 1, inner: "" };
        token.prev = prev;
        token.parens = state.parens;
        token.output = state.output;
        const output2 = (opts.capture ? "(" : "") + token.open;
        increment2("parens");
        push({ type: type2, value: value2, output: state.output ? "" : ONE_CHAR });
        push({ type: "paren", extglob: true, value: advance(), output: output2 });
        extglobs.push(token);
      };
      const extglobClose = (token) => {
        let output2 = token.close + (opts.capture ? ")" : "");
        let rest;
        if (token.type === "negate") {
          let extglobStar = star3;
          if (token.inner && token.inner.length > 1 && token.inner.includes("/")) {
            extglobStar = globstar(opts);
          }
          if (extglobStar !== star3 || eos() || /^\)+$/.test(remaining())) {
            output2 = token.close = `)$))${extglobStar}`;
          }
          if (token.inner.includes("*") && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) {
            const expression = parse16(rest, { ...options, fastpaths: false }).output;
            output2 = token.close = `)${expression})${extglobStar})`;
          }
          if (token.prev.type === "bos") {
            state.negatedExtglob = true;
          }
        }
        push({ type: "paren", extglob: true, value, output: output2 });
        decrement("parens");
      };
      if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input3)) {
        let backslashes = false;
        let output2 = input3.replace(REGEX_SPECIAL_CHARS_BACKREF, (m2, esc, chars, first2, rest, index4) => {
          if (first2 === "\\") {
            backslashes = true;
            return m2;
          }
          if (first2 === "?") {
            if (esc) {
              return esc + first2 + (rest ? QMARK.repeat(rest.length) : "");
            }
            if (index4 === 0) {
              return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : "");
            }
            return QMARK.repeat(chars.length);
          }
          if (first2 === ".") {
            return DOT_LITERAL.repeat(chars.length);
          }
          if (first2 === "*") {
            if (esc) {
              return esc + first2 + (rest ? star3 : "");
            }
            return star3;
          }
          return esc ? m2 : `\\${m2}`;
        });
        if (backslashes === true) {
          if (opts.unescape === true) {
            output2 = output2.replace(/\\/g, "");
          } else {
            output2 = output2.replace(/\\+/g, (m2) => {
              return m2.length % 2 === 0 ? "\\\\" : m2 ? "\\" : "";
            });
          }
        }
        if (output2 === input3 && opts.contains === true) {
          state.output = input3;
          return state;
        }
        state.output = utils2.wrapOutput(output2, state, options);
        return state;
      }
      while (!eos()) {
        value = advance();
        if (value === "\0") {
          continue;
        }
        if (value === "\\") {
          const next = peek2();
          if (next === "/" && opts.bash !== true) {
            continue;
          }
          if (next === "." || next === ";") {
            continue;
          }
          if (!next) {
            value += "\\";
            push({ type: "text", value });
            continue;
          }
          const match3 = /^\\+/.exec(remaining());
          let slashes = 0;
          if (match3 && match3[0].length > 2) {
            slashes = match3[0].length;
            state.index += slashes;
            if (slashes % 2 !== 0) {
              value += "\\";
            }
          }
          if (opts.unescape === true) {
            value = advance();
          } else {
            value += advance();
          }
          if (state.brackets === 0) {
            push({ type: "text", value });
            continue;
          }
        }
        if (state.brackets > 0 && (value !== "]" || prev.value === "[" || prev.value === "[^")) {
          if (opts.posix !== false && value === ":") {
            const inner2 = prev.value.slice(1);
            if (inner2.includes("[")) {
              prev.posix = true;
              if (inner2.includes(":")) {
                const idx = prev.value.lastIndexOf("[");
                const pre2 = prev.value.slice(0, idx);
                const rest2 = prev.value.slice(idx + 2);
                const posix2 = POSIX_REGEX_SOURCE[rest2];
                if (posix2) {
                  prev.value = pre2 + posix2;
                  state.backtrack = true;
                  advance();
                  if (!bos.output && tokens.indexOf(prev) === 1) {
                    bos.output = ONE_CHAR;
                  }
                  continue;
                }
              }
            }
          }
          if (value === "[" && peek2() !== ":" || value === "-" && peek2() === "]") {
            value = `\\${value}`;
          }
          if (value === "]" && (prev.value === "[" || prev.value === "[^")) {
            value = `\\${value}`;
          }
          if (opts.posix === true && value === "!" && prev.value === "[") {
            value = "^";
          }
          prev.value += value;
          append({ value });
          continue;
        }
        if (state.quotes === 1 && value !== '"') {
          value = utils2.escapeRegex(value);
          prev.value += value;
          append({ value });
          continue;
        }
        if (value === '"') {
          state.quotes = state.quotes === 1 ? 0 : 1;
          if (opts.keepQuotes === true) {
            push({ type: "text", value });
          }
          continue;
        }
        if (value === "(") {
          increment2("parens");
          push({ type: "paren", value });
          continue;
        }
        if (value === ")") {
          if (state.parens === 0 && opts.strictBrackets === true) {
            throw new SyntaxError(syntaxError("opening", "("));
          }
          const extglob = extglobs[extglobs.length - 1];
          if (extglob && state.parens === extglob.parens + 1) {
            extglobClose(extglobs.pop());
            continue;
          }
          push({ type: "paren", value, output: state.parens ? ")" : "\\)" });
          decrement("parens");
          continue;
        }
        if (value === "[") {
          if (opts.nobracket === true || !remaining().includes("]")) {
            if (opts.nobracket !== true && opts.strictBrackets === true) {
              throw new SyntaxError(syntaxError("closing", "]"));
            }
            value = `\\${value}`;
          } else {
            increment2("brackets");
          }
          push({ type: "bracket", value });
          continue;
        }
        if (value === "]") {
          if (opts.nobracket === true || prev && prev.type === "bracket" && prev.value.length === 1) {
            push({ type: "text", value, output: `\\${value}` });
            continue;
          }
          if (state.brackets === 0) {
            if (opts.strictBrackets === true) {
              throw new SyntaxError(syntaxError("opening", "["));
            }
            push({ type: "text", value, output: `\\${value}` });
            continue;
          }
          decrement("brackets");
          const prevValue = prev.value.slice(1);
          if (prev.posix !== true && prevValue[0] === "^" && !prevValue.includes("/")) {
            value = `/${value}`;
          }
          prev.value += value;
          append({ value });
          if (opts.literalBrackets === false || utils2.hasRegexChars(prevValue)) {
            continue;
          }
          const escaped = utils2.escapeRegex(prev.value);
          state.output = state.output.slice(0, -prev.value.length);
          if (opts.literalBrackets === true) {
            state.output += escaped;
            prev.value = escaped;
            continue;
          }
          prev.value = `(${capture}${escaped}|${prev.value})`;
          state.output += prev.value;
          continue;
        }
        if (value === "{" && opts.nobrace !== true) {
          increment2("braces");
          const open2 = {
            type: "brace",
            value,
            output: "(",
            outputIndex: state.output.length,
            tokensIndex: state.tokens.length
          };
          braces.push(open2);
          push(open2);
          continue;
        }
        if (value === "}") {
          const brace = braces[braces.length - 1];
          if (opts.nobrace === true || !brace) {
            push({ type: "text", value, output: value });
            continue;
          }
          let output2 = ")";
          if (brace.dots === true) {
            const arr = tokens.slice();
            const range = [];
            for (let i2 = arr.length - 1; i2 >= 0; i2--) {
              tokens.pop();
              if (arr[i2].type === "brace") {
                break;
              }
              if (arr[i2].type !== "dots") {
                range.unshift(arr[i2].value);
              }
            }
            output2 = expandRange(range, opts);
            state.backtrack = true;
          }
          if (brace.comma !== true && brace.dots !== true) {
            const out = state.output.slice(0, brace.outputIndex);
            const toks = state.tokens.slice(brace.tokensIndex);
            brace.value = brace.output = "\\{";
            value = output2 = "\\}";
            state.output = out;
            for (const t2 of toks) {
              state.output += t2.output || t2.value;
            }
          }
          push({ type: "brace", value, output: output2 });
          decrement("braces");
          braces.pop();
          continue;
        }
        if (value === "|") {
          if (extglobs.length > 0) {
            extglobs[extglobs.length - 1].conditions++;
          }
          push({ type: "text", value });
          continue;
        }
        if (value === ",") {
          let output2 = value;
          const brace = braces[braces.length - 1];
          if (brace && stack[stack.length - 1] === "braces") {
            brace.comma = true;
            output2 = "|";
          }
          push({ type: "comma", value, output: output2 });
          continue;
        }
        if (value === "/") {
          if (prev.type === "dot" && state.index === state.start + 1) {
            state.start = state.index + 1;
            state.consumed = "";
            state.output = "";
            tokens.pop();
            prev = bos;
            continue;
          }
          push({ type: "slash", value, output: SLASH_LITERAL });
          continue;
        }
        if (value === ".") {
          if (state.braces > 0 && prev.type === "dot") {
            if (prev.value === ".") prev.output = DOT_LITERAL;
            const brace = braces[braces.length - 1];
            prev.type = "dots";
            prev.output += value;
            prev.value += value;
            brace.dots = true;
            continue;
          }
          if (state.braces + state.parens === 0 && prev.type !== "bos" && prev.type !== "slash") {
            push({ type: "text", value, output: DOT_LITERAL });
            continue;
          }
          push({ type: "dot", value, output: DOT_LITERAL });
          continue;
        }
        if (value === "?") {
          const isGroup = prev && prev.value === "(";
          if (!isGroup && opts.noextglob !== true && peek2() === "(" && peek2(2) !== "?") {
            extglobOpen("qmark", value);
            continue;
          }
          if (prev && prev.type === "paren") {
            const next = peek2();
            let output2 = value;
            if (next === "<" && !utils2.supportsLookbehinds()) {
              throw new Error("Node.js v10 or higher is required for regex lookbehinds");
            }
            if (prev.value === "(" && !/[!=<:]/.test(next) || next === "<" && !/<([!=]|\w+>)/.test(remaining())) {
              output2 = `\\${value}`;
            }
            push({ type: "text", value, output: output2 });
            continue;
          }
          if (opts.dot !== true && (prev.type === "slash" || prev.type === "bos")) {
            push({ type: "qmark", value, output: QMARK_NO_DOT });
            continue;
          }
          push({ type: "qmark", value, output: QMARK });
          continue;
        }
        if (value === "!") {
          if (opts.noextglob !== true && peek2() === "(") {
            if (peek2(2) !== "?" || !/[!=<:]/.test(peek2(3))) {
              extglobOpen("negate", value);
              continue;
            }
          }
          if (opts.nonegate !== true && state.index === 0) {
            negate();
            continue;
          }
        }
        if (value === "+") {
          if (opts.noextglob !== true && peek2() === "(" && peek2(2) !== "?") {
            extglobOpen("plus", value);
            continue;
          }
          if (prev && prev.value === "(" || opts.regex === false) {
            push({ type: "plus", value, output: PLUS_LITERAL });
            continue;
          }
          if (prev && (prev.type === "bracket" || prev.type === "paren" || prev.type === "brace") || state.parens > 0) {
            push({ type: "plus", value });
            continue;
          }
          push({ type: "plus", value: PLUS_LITERAL });
          continue;
        }
        if (value === "@") {
          if (opts.noextglob !== true && peek2() === "(" && peek2(2) !== "?") {
            push({ type: "at", extglob: true, value, output: "" });
            continue;
          }
          push({ type: "text", value });
          continue;
        }
        if (value !== "*") {
          if (value === "$" || value === "^") {
            value = `\\${value}`;
          }
          const match3 = REGEX_NON_SPECIAL_CHARS.exec(remaining());
          if (match3) {
            value += match3[0];
            state.index += match3[0].length;
          }
          push({ type: "text", value });
          continue;
        }
        if (prev && (prev.type === "globstar" || prev.star === true)) {
          prev.type = "star";
          prev.star = true;
          prev.value += value;
          prev.output = star3;
          state.backtrack = true;
          state.globstar = true;
          consume(value);
          continue;
        }
        let rest = remaining();
        if (opts.noextglob !== true && /^\([^?]/.test(rest)) {
          extglobOpen("star", value);
          continue;
        }
        if (prev.type === "star") {
          if (opts.noglobstar === true) {
            consume(value);
            continue;
          }
          const prior = prev.prev;
          const before = prior.prev;
          const isStart = prior.type === "slash" || prior.type === "bos";
          const afterStar = before && (before.type === "star" || before.type === "globstar");
          if (opts.bash === true && (!isStart || rest[0] && rest[0] !== "/")) {
            push({ type: "star", value, output: "" });
            continue;
          }
          const isBrace = state.braces > 0 && (prior.type === "comma" || prior.type === "brace");
          const isExtglob = extglobs.length && (prior.type === "pipe" || prior.type === "paren");
          if (!isStart && prior.type !== "paren" && !isBrace && !isExtglob) {
            push({ type: "star", value, output: "" });
            continue;
          }
          while (rest.slice(0, 3) === "/**") {
            const after = input3[state.index + 4];
            if (after && after !== "/") {
              break;
            }
            rest = rest.slice(3);
            consume("/**", 3);
          }
          if (prior.type === "bos" && eos()) {
            prev.type = "globstar";
            prev.value += value;
            prev.output = globstar(opts);
            state.output = prev.output;
            state.globstar = true;
            consume(value);
            continue;
          }
          if (prior.type === "slash" && prior.prev.type !== "bos" && !afterStar && eos()) {
            state.output = state.output.slice(0, -(prior.output + prev.output).length);
            prior.output = `(?:${prior.output}`;
            prev.type = "globstar";
            prev.output = globstar(opts) + (opts.strictSlashes ? ")" : "|$)");
            prev.value += value;
            state.globstar = true;
            state.output += prior.output + prev.output;
            consume(value);
            continue;
          }
          if (prior.type === "slash" && prior.prev.type !== "bos" && rest[0] === "/") {
            const end = rest[1] !== void 0 ? "|$" : "";
            state.output = state.output.slice(0, -(prior.output + prev.output).length);
            prior.output = `(?:${prior.output}`;
            prev.type = "globstar";
            prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;
            prev.value += value;
            state.output += prior.output + prev.output;
            state.globstar = true;
            consume(value + advance());
            push({ type: "slash", value: "/", output: "" });
            continue;
          }
          if (prior.type === "bos" && rest[0] === "/") {
            prev.type = "globstar";
            prev.value += value;
            prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;
            state.output = prev.output;
            state.globstar = true;
            consume(value + advance());
            push({ type: "slash", value: "/", output: "" });
            continue;
          }
          state.output = state.output.slice(0, -prev.output.length);
          prev.type = "globstar";
          prev.output = globstar(opts);
          prev.value += value;
          state.output += prev.output;
          state.globstar = true;
          consume(value);
          continue;
        }
        const token = { type: "star", value, output: star3 };
        if (opts.bash === true) {
          token.output = ".*?";
          if (prev.type === "bos" || prev.type === "slash") {
            token.output = nodot + token.output;
          }
          push(token);
          continue;
        }
        if (prev && (prev.type === "bracket" || prev.type === "paren") && opts.regex === true) {
          token.output = value;
          push(token);
          continue;
        }
        if (state.index === state.start || prev.type === "slash" || prev.type === "dot") {
          if (prev.type === "dot") {
            state.output += NO_DOT_SLASH;
            prev.output += NO_DOT_SLASH;
          } else if (opts.dot === true) {
            state.output += NO_DOTS_SLASH;
            prev.output += NO_DOTS_SLASH;
          } else {
            state.output += nodot;
            prev.output += nodot;
          }
          if (peek2() !== "*") {
            state.output += ONE_CHAR;
            prev.output += ONE_CHAR;
          }
        }
        push(token);
      }
      while (state.brackets > 0) {
        if (opts.strictBrackets === true) throw new SyntaxError(syntaxError("closing", "]"));
        state.output = utils2.escapeLast(state.output, "[");
        decrement("brackets");
      }
      while (state.parens > 0) {
        if (opts.strictBrackets === true) throw new SyntaxError(syntaxError("closing", ")"));
        state.output = utils2.escapeLast(state.output, "(");
        decrement("parens");
      }
      while (state.braces > 0) {
        if (opts.strictBrackets === true) throw new SyntaxError(syntaxError("closing", "}"));
        state.output = utils2.escapeLast(state.output, "{");
        decrement("braces");
      }
      if (opts.strictSlashes !== true && (prev.type === "star" || prev.type === "bracket")) {
        push({ type: "maybe_slash", value: "", output: `${SLASH_LITERAL}?` });
      }
      if (state.backtrack === true) {
        state.output = "";
        for (const token of state.tokens) {
          state.output += token.output != null ? token.output : token.value;
          if (token.suffix) {
            state.output += token.suffix;
          }
        }
      }
      return state;
    };
    parse16.fastpaths = (input3, options) => {
      const opts = { ...options };
      const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
      const len = input3.length;
      if (len > max) {
        throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);
      }
      input3 = REPLACEMENTS[input3] || input3;
      const win322 = utils2.isWindows(options);
      const {
        DOT_LITERAL,
        SLASH_LITERAL,
        ONE_CHAR,
        DOTS_SLASH,
        NO_DOT,
        NO_DOTS,
        NO_DOTS_SLASH,
        STAR,
        START_ANCHOR
      } = constants2.globChars(win322);
      const nodot = opts.dot ? NO_DOTS : NO_DOT;
      const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;
      const capture = opts.capture ? "" : "?:";
      const state = { negated: false, prefix: "" };
      let star3 = opts.bash === true ? ".*?" : STAR;
      if (opts.capture) {
        star3 = `(${star3})`;
      }
      const globstar = (opts2) => {
        if (opts2.noglobstar === true) return star3;
        return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;
      };
      const create3 = (str2) => {
        switch (str2) {
          case "*":
            return `${nodot}${ONE_CHAR}${star3}`;
          case ".*":
            return `${DOT_LITERAL}${ONE_CHAR}${star3}`;
          case "*.*":
            return `${nodot}${star3}${DOT_LITERAL}${ONE_CHAR}${star3}`;
          case "*/*":
            return `${nodot}${star3}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star3}`;
          case "**":
            return nodot + globstar(opts);
          case "**/*":
            return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star3}`;
          case "**/*.*":
            return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star3}${DOT_LITERAL}${ONE_CHAR}${star3}`;
          case "**/.*":
            return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star3}`;
          default: {
            const match3 = /^(.*?)\.(\w+)$/.exec(str2);
            if (!match3) return;
            const source3 = create3(match3[1]);
            if (!source3) return;
            return source3 + DOT_LITERAL + match3[2];
          }
        }
      };
      const output2 = utils2.removePrefix(input3, state);
      let source2 = create3(output2);
      if (source2 && opts.strictSlashes !== true) {
        source2 += `${SLASH_LITERAL}?`;
      }
      return source2;
    };
    module2.exports = parse16;
  }
});

// ../../node_modules/picomatch/lib/picomatch.js
var require_picomatch = __commonJS({
  "../../node_modules/picomatch/lib/picomatch.js"(exports2, module2) {
    "use strict";
    var path45 = require("path");
    var scan2 = require_scan2();
    var parse16 = require_parse3();
    var utils2 = require_utils3();
    var constants2 = require_constants();
    var isObject2 = (val) => val && typeof val === "object" && !Array.isArray(val);
    var picomatch2 = (glob2, options, returnState = false) => {
      if (Array.isArray(glob2)) {
        const fns = glob2.map((input3) => picomatch2(input3, options, returnState));
        const arrayMatcher = (str2) => {
          for (const isMatch of fns) {
            const state2 = isMatch(str2);
            if (state2) return state2;
          }
          return false;
        };
        return arrayMatcher;
      }
      const isState = isObject2(glob2) && glob2.tokens && glob2.input;
      if (glob2 === "" || typeof glob2 !== "string" && !isState) {
        throw new TypeError("Expected pattern to be a non-empty string");
      }
      const opts = options || {};
      const posix2 = utils2.isWindows(options);
      const regex2 = isState ? picomatch2.compileRe(glob2, options) : picomatch2.makeRe(glob2, options, false, true);
      const state = regex2.state;
      delete regex2.state;
      let isIgnored = () => false;
      if (opts.ignore) {
        const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };
        isIgnored = picomatch2(opts.ignore, ignoreOpts, returnState);
      }
      const matcher = (input3, returnObject = false) => {
        const { isMatch, match: match3, output: output2 } = picomatch2.test(input3, regex2, options, { glob: glob2, posix: posix2 });
        const result = { glob: glob2, state, regex: regex2, posix: posix2, input: input3, output: output2, match: match3, isMatch };
        if (typeof opts.onResult === "function") {
          opts.onResult(result);
        }
        if (isMatch === false) {
          result.isMatch = false;
          return returnObject ? result : false;
        }
        if (isIgnored(input3)) {
          if (typeof opts.onIgnore === "function") {
            opts.onIgnore(result);
          }
          result.isMatch = false;
          return returnObject ? result : false;
        }
        if (typeof opts.onMatch === "function") {
          opts.onMatch(result);
        }
        return returnObject ? result : true;
      };
      if (returnState) {
        matcher.state = state;
      }
      return matcher;
    };
    picomatch2.test = (input3, regex2, options, { glob: glob2, posix: posix2 } = {}) => {
      if (typeof input3 !== "string") {
        throw new TypeError("Expected input to be a string");
      }
      if (input3 === "") {
        return { isMatch: false, output: "" };
      }
      const opts = options || {};
      const format = opts.format || (posix2 ? utils2.toPosixSlashes : null);
      let match3 = input3 === glob2;
      let output2 = match3 && format ? format(input3) : input3;
      if (match3 === false) {
        output2 = format ? format(input3) : input3;
        match3 = output2 === glob2;
      }
      if (match3 === false || opts.capture === true) {
        if (opts.matchBase === true || opts.basename === true) {
          match3 = picomatch2.matchBase(input3, regex2, options, posix2);
        } else {
          match3 = regex2.exec(output2);
        }
      }
      return { isMatch: Boolean(match3), match: match3, output: output2 };
    };
    picomatch2.matchBase = (input3, glob2, options, posix2 = utils2.isWindows(options)) => {
      const regex2 = glob2 instanceof RegExp ? glob2 : picomatch2.makeRe(glob2, options);
      return regex2.test(path45.basename(input3));
    };
    picomatch2.isMatch = (str2, patterns, options) => picomatch2(patterns, options)(str2);
    picomatch2.parse = (pattern, options) => {
      if (Array.isArray(pattern)) return pattern.map((p5) => picomatch2.parse(p5, options));
      return parse16(pattern, { ...options, fastpaths: false });
    };
    picomatch2.scan = (input3, options) => scan2(input3, options);
    picomatch2.compileRe = (state, options, returnOutput = false, returnState = false) => {
      if (returnOutput === true) {
        return state.output;
      }
      const opts = options || {};
      const prepend = opts.contains ? "" : "^";
      const append = opts.contains ? "" : "$";
      let source2 = `${prepend}(?:${state.output})${append}`;
      if (state && state.negated === true) {
        source2 = `^(?!${source2}).*$`;
      }
      const regex2 = picomatch2.toRegex(source2, options);
      if (returnState === true) {
        regex2.state = state;
      }
      return regex2;
    };
    picomatch2.makeRe = (input3, options = {}, returnOutput = false, returnState = false) => {
      if (!input3 || typeof input3 !== "string") {
        throw new TypeError("Expected a non-empty string");
      }
      let parsed = { negated: false, fastpaths: true };
      if (options.fastpaths !== false && (input3[0] === "." || input3[0] === "*")) {
        parsed.output = parse16.fastpaths(input3, options);
      }
      if (!parsed.output) {
        parsed = parse16(input3, options);
      }
      return picomatch2.compileRe(parsed, options, returnOutput, returnState);
    };
    picomatch2.toRegex = (source2, options) => {
      try {
        const opts = options || {};
        return new RegExp(source2, opts.flags || (opts.nocase ? "i" : ""));
      } catch (err) {
        if (options && options.debug === true) throw err;
        return /$^/;
      }
    };
    picomatch2.constants = constants2;
    module2.exports = picomatch2;
  }
});

// ../../node_modules/picomatch/index.js
var require_picomatch2 = __commonJS({
  "../../node_modules/picomatch/index.js"(exports2, module2) {
    "use strict";
    module2.exports = require_picomatch();
  }
});

// ../../node_modules/trie-prefix-tree/dist/config.js
var require_config = __commonJS({
  "../../node_modules/trie-prefix-tree/dist/config.js"(exports2, module2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = {
      END_WORD: "$",
      END_WORD_REPLACER: "9a219a89-91cd-42e2-abd5-eb113af08ca8",
      PERMS_MIN_LEN: 2
    };
    module2.exports = exports2["default"];
  }
});

// ../../node_modules/trie-prefix-tree/dist/append.js
var require_append = __commonJS({
  "../../node_modules/trie-prefix-tree/dist/append.js"(exports2, module2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = append;
    var _config2 = require_config();
    var _config22 = _interopRequireDefault3(_config2);
    function _interopRequireDefault3(obj) {
      return obj && obj.__esModule ? obj : { default: obj };
    }
    function append(trie, letter, index4, array) {
      var isEndWordLetter = letter === _config22.default.END_WORD;
      var isLastLetter = index4 === array.length - 1;
      if (isEndWordLetter && !isLastLetter) {
        trie[_config22.default.END_WORD] = 1;
        trie[_config22.default.END_WORD_REPLACER] = {};
        trie = trie[_config22.default.END_WORD_REPLACER];
      } else {
        trie[letter] = trie[letter] || {};
        trie = trie[letter];
      }
      if (isLastLetter) {
        trie[_config22.default.END_WORD] = 1;
      }
      return trie;
    }
    module2.exports = exports2["default"];
  }
});

// ../../node_modules/trie-prefix-tree/dist/create.js
var require_create = __commonJS({
  "../../node_modules/trie-prefix-tree/dist/create.js"(exports2, module2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
      return typeof obj;
    } : function(obj) {
      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
    };
    exports2.default = create3;
    var _append = require_append();
    var _append2 = _interopRequireDefault3(_append);
    function _interopRequireDefault3(obj) {
      return obj && obj.__esModule ? obj : { default: obj };
    }
    function create3(input3) {
      if (!Array.isArray(input3)) {
        throw "Expected parameter Array, received " + (typeof input3 === "undefined" ? "undefined" : _typeof(input3));
      }
      var trie = input3.reduce(function(accumulator, item) {
        item.toLowerCase().split("").reduce(_append2.default, accumulator);
        return accumulator;
      }, {});
      return trie;
    }
    module2.exports = exports2["default"];
  }
});

// ../../node_modules/trie-prefix-tree/dist/utils.js
var require_utils4 = __commonJS({
  "../../node_modules/trie-prefix-tree/dist/utils.js"(exports2, module2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = {
      objectCopy: function objectCopy(obj) {
        if (typeof obj === "undefined") {
          return {};
        }
        return JSON.parse(JSON.stringify(obj));
      },
      stringify: function stringify4(obj) {
        var spacer = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 2;
        if (typeof obj === "undefined") {
          return "";
        }
        return JSON.stringify(obj, null, spacer);
      }
    };
    module2.exports = exports2["default"];
  }
});

// ../../node_modules/trie-prefix-tree/dist/checkPrefix.js
var require_checkPrefix = __commonJS({
  "../../node_modules/trie-prefix-tree/dist/checkPrefix.js"(exports2, module2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = checkPrefix;
    var _utils = require_utils4();
    var _utils2 = _interopRequireDefault3(_utils);
    function _interopRequireDefault3(obj) {
      return obj && obj.__esModule ? obj : { default: obj };
    }
    function checkPrefix(prefixNode, prefix2) {
      var input3 = prefix2.toLowerCase().split("");
      var prefixFound = input3.every(function(letter, index4) {
        if (!prefixNode[letter]) {
          return false;
        }
        return prefixNode = prefixNode[letter];
      });
      return {
        prefixFound,
        prefixNode
      };
    }
    module2.exports = exports2["default"];
  }
});

// ../../node_modules/trie-prefix-tree/dist/recursePrefix.js
var require_recursePrefix = __commonJS({
  "../../node_modules/trie-prefix-tree/dist/recursePrefix.js"(exports2, module2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = recursePrefix;
    var _config2 = require_config();
    var _config22 = _interopRequireDefault3(_config2);
    function _interopRequireDefault3(obj) {
      return obj && obj.__esModule ? obj : { default: obj };
    }
    var pushInOrder = function pushInOrder2(word, prefixes) {
      var i2 = 0;
      while (i2 < prefixes.length) {
        if (word < prefixes[i2]) {
          break;
        }
        i2 += 1;
      }
      prefixes.splice(i2, 0, word);
      return prefixes;
    };
    function recursePrefix(node3, prefix2, sorted) {
      var prefixes = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : [];
      var word = prefix2;
      for (var branch in node3) {
        var currentLetter = branch;
        if (branch === _config22.default.END_WORD && typeof node3[branch] === "number") {
          if (sorted) {
            pushInOrder(word, prefixes);
          } else {
            prefixes.push(word);
          }
          word = "";
        } else if (branch === _config22.default.END_WORD_REPLACER) {
          currentLetter = _config22.default.END_WORD;
        }
        recursePrefix(node3[branch], prefix2 + currentLetter, sorted, prefixes);
      }
      return prefixes;
    }
    module2.exports = exports2["default"];
  }
});

// ../../node_modules/trie-prefix-tree/dist/recurseRandomWord.js
var require_recurseRandomWord = __commonJS({
  "../../node_modules/trie-prefix-tree/dist/recurseRandomWord.js"(exports2, module2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = recurseRandomWord;
    var _config2 = require_config();
    var _config22 = _interopRequireDefault3(_config2);
    function _interopRequireDefault3(obj) {
      return obj && obj.__esModule ? obj : { default: obj };
    }
    function recurseRandomWord(node3, prefix2) {
      var word = prefix2;
      var branches = Object.keys(node3);
      var branch = branches[Math.floor(Math.random() * branches.length)];
      if (branch === _config22.default.END_WORD) {
        return word;
      }
      return recurseRandomWord(node3[branch], prefix2 + branch);
    }
    module2.exports = exports2["default"];
  }
});

// ../../node_modules/trie-prefix-tree/dist/permutations.js
var require_permutations = __commonJS({
  "../../node_modules/trie-prefix-tree/dist/permutations.js"(exports2, module2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
      return typeof obj;
    } : function(obj) {
      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
    };
    exports2.default = permutations;
    var _config2 = require_config();
    var _config22 = _interopRequireDefault3(_config2);
    function _interopRequireDefault3(obj) {
      return obj && obj.__esModule ? obj : { default: obj };
    }
    function permutations(letters2, trie) {
      var opts = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {
        type: "anagram"
      };
      if (typeof letters2 !== "string") {
        throw "Permutations expects string letters, received " + (typeof letters2 === "undefined" ? "undefined" : _typeof(letters2));
      }
      var words = [];
      var permute = function permute2(word, node3) {
        var prefix2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "";
        var wordIsEmpty = word.length === 0;
        var wordFound = words.indexOf(prefix2) !== -1;
        var endWordFound = node3[_config22.default.END_WORD] === 1;
        if (wordIsEmpty && endWordFound && !wordFound) {
          words.push(prefix2);
        }
        for (var i2 = 0, len = word.length; i2 < len; i2++) {
          var letter = word[i2];
          if (opts.type === "sub-anagram") {
            if (endWordFound && !(words.indexOf(prefix2) !== -1)) {
              words.push(prefix2);
            }
          }
          if (node3[letter]) {
            var remaining = word.substring(0, i2) + word.substring(i2 + 1, len);
            permute2(remaining, node3[letter], prefix2 + letter, words);
          }
        }
        return words.sort();
      };
      return permute(letters2, trie);
    }
    module2.exports = exports2["default"];
  }
});

// ../../node_modules/trie-prefix-tree/dist/index.js
var require_dist = __commonJS({
  "../../node_modules/trie-prefix-tree/dist/index.js"(exports2, module2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
      return typeof obj;
    } : function(obj) {
      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
    };
    exports2.default = function(input3) {
      if (!Array.isArray(input3)) {
        throw "Expected parameter Array, received " + (typeof input3 === "undefined" ? "undefined" : _typeof(input3));
      }
      var trie = (0, _create2.default)([].concat(_toConsumableArray(input3)));
      return {
        /**
         * Get the generated raw trie object
        */
        tree: function tree() {
          return trie;
        },
        /**
         * Get a string representation of the trie
        */
        dump: function dump3() {
          var spacer = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
          return _utils2.default.stringify(trie, spacer);
        },
        /**
         * Add a new word to the trie
         */
        addWord: function addWord(word) {
          if (typeof word !== "string" || word === "") {
            throw "Expected parameter string, received " + (typeof word === "undefined" ? "undefined" : _typeof(word));
          }
          var reducer = function reducer2() {
            return _append2.default.apply(void 0, arguments);
          };
          var input4 = word.toLowerCase().split("");
          input4.reduce(reducer, trie);
          return this;
        },
        /**
         * Remove an existing word from the trie
         */
        removeWord: function removeWord(word) {
          if (typeof word !== "string" || word === "") {
            throw "Expected parameter string, received " + (typeof word === "undefined" ? "undefined" : _typeof(word));
          }
          var _checkPrefix = (0, _checkPrefix6.default)(trie, word), prefixFound = _checkPrefix.prefixFound, prefixNode = _checkPrefix.prefixNode;
          if (prefixFound) {
            delete prefixNode[_config22.default.END_WORD];
          }
          return this;
        },
        /**
         * Check a prefix is valid
         * @returns Boolean
        */
        isPrefix: function isPrefix(prefix2) {
          if (typeof prefix2 !== "string") {
            throw "Expected string prefix, received " + (typeof prefix2 === "undefined" ? "undefined" : _typeof(prefix2));
          }
          var _checkPrefix2 = (0, _checkPrefix6.default)(trie, prefix2), prefixFound = _checkPrefix2.prefixFound;
          return prefixFound;
        },
        /**
        * Get a list of all words in the trie with the given prefix
        * @returns Array
        */
        getPrefix: function getPrefix(strPrefix) {
          var sorted = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
          if (typeof strPrefix !== "string") {
            throw "Expected string prefix, received " + (typeof strPrefix === "undefined" ? "undefined" : _typeof(strPrefix));
          }
          if (typeof sorted !== "boolean") {
            throw "Expected sort parameter as boolean, received " + (typeof sorted === "undefined" ? "undefined" : _typeof(sorted));
          }
          if (!this.isPrefix(strPrefix)) {
            return [];
          }
          var prefixNode = strPrefix.length ? (0, _checkPrefix6.default)(trie, strPrefix).prefixNode : trie;
          return (0, _recursePrefix2.default)(prefixNode, strPrefix, sorted);
        },
        /**
        * Get a random word in the trie with the given prefix
        * @returns Array
        */
        getRandomWordWithPrefix: function getRandomWordWithPrefix(strPrefix) {
          if (typeof strPrefix !== "string") {
            throw "Expected string prefix, received " + (typeof strPrefix === "undefined" ? "undefined" : _typeof(strPrefix));
          }
          if (!this.isPrefix(strPrefix)) {
            return "";
          }
          var _checkPrefix3 = (0, _checkPrefix6.default)(trie, strPrefix), prefixNode = _checkPrefix3.prefixNode;
          return (0, _recurseRandomWord2.default)(prefixNode, strPrefix);
        },
        /**
        * Count the number of words with the given prefixSearch
        * @returns Number
        */
        countPrefix: function countPrefix(strPrefix) {
          var prefixes = this.getPrefix(strPrefix);
          return prefixes.length;
        },
        /**
        * Get all words in the trie
        * @returns Array
        */
        getWords: function getWords() {
          var sorted = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
          return this.getPrefix("", sorted);
        },
        /**
        * Check the existence of a word in the trie
        * @returns Boolean
        */
        hasWord: function hasWord(word) {
          if (typeof word !== "string") {
            throw "Expected string word, received " + (typeof word === "undefined" ? "undefined" : _typeof(word));
          }
          var _checkPrefix4 = (0, _checkPrefix6.default)(trie, word), prefixFound = _checkPrefix4.prefixFound, prefixNode = _checkPrefix4.prefixNode;
          if (prefixFound) {
            return prefixNode[_config22.default.END_WORD] === 1;
          }
          return false;
        },
        /**
        * Get a list of valid anagrams that can be made from the given letters
        * @returns Array
        */
        getAnagrams: function getAnagrams(letters2) {
          if (typeof letters2 !== "string") {
            throw "Anagrams expected string letters, received " + (typeof letters2 === "undefined" ? "undefined" : _typeof(letters2));
          }
          if (letters2.length < PERMS_MIN_LEN) {
            throw "getAnagrams expects at least " + PERMS_MIN_LEN + " letters";
          }
          return (0, _permutations2.default)(letters2, trie, {
            type: "anagram"
          });
        },
        /**
        * Get a list of all sub-anagrams that can be made from the given letters
        * @returns Array
        */
        getSubAnagrams: function getSubAnagrams(letters2) {
          if (typeof letters2 !== "string") {
            throw "Expected string letters, received " + (typeof letters2 === "undefined" ? "undefined" : _typeof(letters2));
          }
          if (letters2.length < PERMS_MIN_LEN) {
            throw "getSubAnagrams expects at least " + PERMS_MIN_LEN + " letters";
          }
          return (0, _permutations2.default)(letters2, trie, {
            type: "sub-anagram"
          });
        }
      };
    };
    var _create = require_create();
    var _create2 = _interopRequireDefault3(_create);
    var _append = require_append();
    var _append2 = _interopRequireDefault3(_append);
    var _checkPrefix5 = require_checkPrefix();
    var _checkPrefix6 = _interopRequireDefault3(_checkPrefix5);
    var _recursePrefix = require_recursePrefix();
    var _recursePrefix2 = _interopRequireDefault3(_recursePrefix);
    var _recurseRandomWord = require_recurseRandomWord();
    var _recurseRandomWord2 = _interopRequireDefault3(_recurseRandomWord);
    var _utils = require_utils4();
    var _utils2 = _interopRequireDefault3(_utils);
    var _config2 = require_config();
    var _config22 = _interopRequireDefault3(_config2);
    var _permutations = require_permutations();
    var _permutations2 = _interopRequireDefault3(_permutations);
    function _interopRequireDefault3(obj) {
      return obj && obj.__esModule ? obj : { default: obj };
    }
    function _toConsumableArray(arr) {
      if (Array.isArray(arr)) {
        for (var i2 = 0, arr2 = Array(arr.length); i2 < arr.length; i2++) {
          arr2[i2] = arr[i2];
        }
        return arr2;
      } else {
        return Array.from(arr);
      }
    }
    var PERMS_MIN_LEN = _config22.default.PERMS_MIN_LEN;
    module2.exports = exports2["default"];
  }
});

// ../../node_modules/color-name/index.js
var require_color_name = __commonJS({
  "../../node_modules/color-name/index.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      "aliceblue": [240, 248, 255],
      "antiquewhite": [250, 235, 215],
      "aqua": [0, 255, 255],
      "aquamarine": [127, 255, 212],
      "azure": [240, 255, 255],
      "beige": [245, 245, 220],
      "bisque": [255, 228, 196],
      "black": [0, 0, 0],
      "blanchedalmond": [255, 235, 205],
      "blue": [0, 0, 255],
      "blueviolet": [138, 43, 226],
      "brown": [165, 42, 42],
      "burlywood": [222, 184, 135],
      "cadetblue": [95, 158, 160],
      "chartreuse": [127, 255, 0],
      "chocolate": [210, 105, 30],
      "coral": [255, 127, 80],
      "cornflowerblue": [100, 149, 237],
      "cornsilk": [255, 248, 220],
      "crimson": [220, 20, 60],
      "cyan": [0, 255, 255],
      "darkblue": [0, 0, 139],
      "darkcyan": [0, 139, 139],
      "darkgoldenrod": [184, 134, 11],
      "darkgray": [169, 169, 169],
      "darkgreen": [0, 100, 0],
      "darkgrey": [169, 169, 169],
      "darkkhaki": [189, 183, 107],
      "darkmagenta": [139, 0, 139],
      "darkolivegreen": [85, 107, 47],
      "darkorange": [255, 140, 0],
      "darkorchid": [153, 50, 204],
      "darkred": [139, 0, 0],
      "darksalmon": [233, 150, 122],
      "darkseagreen": [143, 188, 143],
      "darkslateblue": [72, 61, 139],
      "darkslategray": [47, 79, 79],
      "darkslategrey": [47, 79, 79],
      "darkturquoise": [0, 206, 209],
      "darkviolet": [148, 0, 211],
      "deeppink": [255, 20, 147],
      "deepskyblue": [0, 191, 255],
      "dimgray": [105, 105, 105],
      "dimgrey": [105, 105, 105],
      "dodgerblue": [30, 144, 255],
      "firebrick": [178, 34, 34],
      "floralwhite": [255, 250, 240],
      "forestgreen": [34, 139, 34],
      "fuchsia": [255, 0, 255],
      "gainsboro": [220, 220, 220],
      "ghostwhite": [248, 248, 255],
      "gold": [255, 215, 0],
      "goldenrod": [218, 165, 32],
      "gray": [128, 128, 128],
      "green": [0, 128, 0],
      "greenyellow": [173, 255, 47],
      "grey": [128, 128, 128],
      "honeydew": [240, 255, 240],
      "hotpink": [255, 105, 180],
      "indianred": [205, 92, 92],
      "indigo": [75, 0, 130],
      "ivory": [255, 255, 240],
      "khaki": [240, 230, 140],
      "lavender": [230, 230, 250],
      "lavenderblush": [255, 240, 245],
      "lawngreen": [124, 252, 0],
      "lemonchiffon": [255, 250, 205],
      "lightblue": [173, 216, 230],
      "lightcoral": [240, 128, 128],
      "lightcyan": [224, 255, 255],
      "lightgoldenrodyellow": [250, 250, 210],
      "lightgray": [211, 211, 211],
      "lightgreen": [144, 238, 144],
      "lightgrey": [211, 211, 211],
      "lightpink": [255, 182, 193],
      "lightsalmon": [255, 160, 122],
      "lightseagreen": [32, 178, 170],
      "lightskyblue": [135, 206, 250],
      "lightslategray": [119, 136, 153],
      "lightslategrey": [119, 136, 153],
      "lightsteelblue": [176, 196, 222],
      "lightyellow": [255, 255, 224],
      "lime": [0, 255, 0],
      "limegreen": [50, 205, 50],
      "linen": [250, 240, 230],
      "magenta": [255, 0, 255],
      "maroon": [128, 0, 0],
      "mediumaquamarine": [102, 205, 170],
      "mediumblue": [0, 0, 205],
      "mediumorchid": [186, 85, 211],
      "mediumpurple": [147, 112, 219],
      "mediumseagreen": [60, 179, 113],
      "mediumslateblue": [123, 104, 238],
      "mediumspringgreen": [0, 250, 154],
      "mediumturquoise": [72, 209, 204],
      "mediumvioletred": [199, 21, 133],
      "midnightblue": [25, 25, 112],
      "mintcream": [245, 255, 250],
      "mistyrose": [255, 228, 225],
      "moccasin": [255, 228, 181],
      "navajowhite": [255, 222, 173],
      "navy": [0, 0, 128],
      "oldlace": [253, 245, 230],
      "olive": [128, 128, 0],
      "olivedrab": [107, 142, 35],
      "orange": [255, 165, 0],
      "orangered": [255, 69, 0],
      "orchid": [218, 112, 214],
      "palegoldenrod": [238, 232, 170],
      "palegreen": [152, 251, 152],
      "paleturquoise": [175, 238, 238],
      "palevioletred": [219, 112, 147],
      "papayawhip": [255, 239, 213],
      "peachpuff": [255, 218, 185],
      "peru": [205, 133, 63],
      "pink": [255, 192, 203],
      "plum": [221, 160, 221],
      "powderblue": [176, 224, 230],
      "purple": [128, 0, 128],
      "rebeccapurple": [102, 51, 153],
      "red": [255, 0, 0],
      "rosybrown": [188, 143, 143],
      "royalblue": [65, 105, 225],
      "saddlebrown": [139, 69, 19],
      "salmon": [250, 128, 114],
      "sandybrown": [244, 164, 96],
      "seagreen": [46, 139, 87],
      "seashell": [255, 245, 238],
      "sienna": [160, 82, 45],
      "silver": [192, 192, 192],
      "skyblue": [135, 206, 235],
      "slateblue": [106, 90, 205],
      "slategray": [112, 128, 144],
      "slategrey": [112, 128, 144],
      "snow": [255, 250, 250],
      "springgreen": [0, 255, 127],
      "steelblue": [70, 130, 180],
      "tan": [210, 180, 140],
      "teal": [0, 128, 128],
      "thistle": [216, 191, 216],
      "tomato": [255, 99, 71],
      "turquoise": [64, 224, 208],
      "violet": [238, 130, 238],
      "wheat": [245, 222, 179],
      "white": [255, 255, 255],
      "whitesmoke": [245, 245, 245],
      "yellow": [255, 255, 0],
      "yellowgreen": [154, 205, 50]
    };
  }
});

// ../../node_modules/simple-swizzle/node_modules/is-arrayish/index.js
var require_is_arrayish = __commonJS({
  "../../node_modules/simple-swizzle/node_modules/is-arrayish/index.js"(exports2, module2) {
    module2.exports = function isArrayish(obj) {
      if (!obj || typeof obj === "string") {
        return false;
      }
      return obj instanceof Array || Array.isArray(obj) || obj.length >= 0 && (obj.splice instanceof Function || Object.getOwnPropertyDescriptor(obj, obj.length - 1) && obj.constructor.name !== "String");
    };
  }
});

// ../../node_modules/simple-swizzle/index.js
var require_simple_swizzle = __commonJS({
  "../../node_modules/simple-swizzle/index.js"(exports2, module2) {
    "use strict";
    var isArrayish = require_is_arrayish();
    var concat2 = Array.prototype.concat;
    var slice2 = Array.prototype.slice;
    var swizzle = module2.exports = function swizzle2(args) {
      var results = [];
      for (var i2 = 0, len = args.length; i2 < len; i2++) {
        var arg2 = args[i2];
        if (isArrayish(arg2)) {
          results = concat2.call(results, slice2.call(arg2));
        } else {
          results.push(arg2);
        }
      }
      return results;
    };
    swizzle.wrap = function(fn) {
      return function() {
        return fn(swizzle(arguments));
      };
    };
  }
});

// ../../node_modules/color-string/index.js
var require_color_string = __commonJS({
  "../../node_modules/color-string/index.js"(exports2, module2) {
    var colorNames7 = require_color_name();
    var swizzle = require_simple_swizzle();
    var hasOwnProperty = Object.hasOwnProperty;
    var reverseNames = /* @__PURE__ */ Object.create(null);
    for (name3 in colorNames7) {
      if (hasOwnProperty.call(colorNames7, name3)) {
        reverseNames[colorNames7[name3]] = name3;
      }
    }
    var name3;
    var cs = module2.exports = {
      to: {},
      get: {}
    };
    cs.get = function(string2) {
      var prefix2 = string2.substring(0, 3).toLowerCase();
      var val;
      var model;
      switch (prefix2) {
        case "hsl":
          val = cs.get.hsl(string2);
          model = "hsl";
          break;
        case "hwb":
          val = cs.get.hwb(string2);
          model = "hwb";
          break;
        default:
          val = cs.get.rgb(string2);
          model = "rgb";
          break;
      }
      if (!val) {
        return null;
      }
      return { model, value: val };
    };
    cs.get.rgb = function(string2) {
      if (!string2) {
        return null;
      }
      var abbr = /^#([a-f0-9]{3,4})$/i;
      var hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;
      var rgba = /^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;
      var per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;
      var keyword = /^(\w+)$/;
      var rgb = [0, 0, 0, 1];
      var match3;
      var i2;
      var hexAlpha;
      if (match3 = string2.match(hex)) {
        hexAlpha = match3[2];
        match3 = match3[1];
        for (i2 = 0; i2 < 3; i2++) {
          var i22 = i2 * 2;
          rgb[i2] = parseInt(match3.slice(i22, i22 + 2), 16);
        }
        if (hexAlpha) {
          rgb[3] = parseInt(hexAlpha, 16) / 255;
        }
      } else if (match3 = string2.match(abbr)) {
        match3 = match3[1];
        hexAlpha = match3[3];
        for (i2 = 0; i2 < 3; i2++) {
          rgb[i2] = parseInt(match3[i2] + match3[i2], 16);
        }
        if (hexAlpha) {
          rgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;
        }
      } else if (match3 = string2.match(rgba)) {
        for (i2 = 0; i2 < 3; i2++) {
          rgb[i2] = parseInt(match3[i2 + 1], 0);
        }
        if (match3[4]) {
          if (match3[5]) {
            rgb[3] = parseFloat(match3[4]) * 0.01;
          } else {
            rgb[3] = parseFloat(match3[4]);
          }
        }
      } else if (match3 = string2.match(per)) {
        for (i2 = 0; i2 < 3; i2++) {
          rgb[i2] = Math.round(parseFloat(match3[i2 + 1]) * 2.55);
        }
        if (match3[4]) {
          if (match3[5]) {
            rgb[3] = parseFloat(match3[4]) * 0.01;
          } else {
            rgb[3] = parseFloat(match3[4]);
          }
        }
      } else if (match3 = string2.match(keyword)) {
        if (match3[1] === "transparent") {
          return [0, 0, 0, 0];
        }
        if (!hasOwnProperty.call(colorNames7, match3[1])) {
          return null;
        }
        rgb = colorNames7[match3[1]];
        rgb[3] = 1;
        return rgb;
      } else {
        return null;
      }
      for (i2 = 0; i2 < 3; i2++) {
        rgb[i2] = clamp(rgb[i2], 0, 255);
      }
      rgb[3] = clamp(rgb[3], 0, 1);
      return rgb;
    };
    cs.get.hsl = function(string2) {
      if (!string2) {
        return null;
      }
      var hsl = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/;
      var match3 = string2.match(hsl);
      if (match3) {
        var alpha2 = parseFloat(match3[4]);
        var h4 = (parseFloat(match3[1]) % 360 + 360) % 360;
        var s5 = clamp(parseFloat(match3[2]), 0, 100);
        var l = clamp(parseFloat(match3[3]), 0, 100);
        var a2 = clamp(isNaN(alpha2) ? 1 : alpha2, 0, 1);
        return [h4, s5, l, a2];
      }
      return null;
    };
    cs.get.hwb = function(string2) {
      if (!string2) {
        return null;
      }
      var hwb = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/;
      var match3 = string2.match(hwb);
      if (match3) {
        var alpha2 = parseFloat(match3[4]);
        var h4 = (parseFloat(match3[1]) % 360 + 360) % 360;
        var w = clamp(parseFloat(match3[2]), 0, 100);
        var b = clamp(parseFloat(match3[3]), 0, 100);
        var a2 = clamp(isNaN(alpha2) ? 1 : alpha2, 0, 1);
        return [h4, w, b, a2];
      }
      return null;
    };
    cs.to.hex = function() {
      var rgba = swizzle(arguments);
      return "#" + hexDouble(rgba[0]) + hexDouble(rgba[1]) + hexDouble(rgba[2]) + (rgba[3] < 1 ? hexDouble(Math.round(rgba[3] * 255)) : "");
    };
    cs.to.rgb = function() {
      var rgba = swizzle(arguments);
      return rgba.length < 4 || rgba[3] === 1 ? "rgb(" + Math.round(rgba[0]) + ", " + Math.round(rgba[1]) + ", " + Math.round(rgba[2]) + ")" : "rgba(" + Math.round(rgba[0]) + ", " + Math.round(rgba[1]) + ", " + Math.round(rgba[2]) + ", " + rgba[3] + ")";
    };
    cs.to.rgb.percent = function() {
      var rgba = swizzle(arguments);
      var r2 = Math.round(rgba[0] / 255 * 100);
      var g = Math.round(rgba[1] / 255 * 100);
      var b = Math.round(rgba[2] / 255 * 100);
      return rgba.length < 4 || rgba[3] === 1 ? "rgb(" + r2 + "%, " + g + "%, " + b + "%)" : "rgba(" + r2 + "%, " + g + "%, " + b + "%, " + rgba[3] + ")";
    };
    cs.to.hsl = function() {
      var hsla = swizzle(arguments);
      return hsla.length < 4 || hsla[3] === 1 ? "hsl(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%)" : "hsla(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%, " + hsla[3] + ")";
    };
    cs.to.hwb = function() {
      var hwba = swizzle(arguments);
      var a2 = "";
      if (hwba.length >= 4 && hwba[3] !== 1) {
        a2 = ", " + hwba[3];
      }
      return "hwb(" + hwba[0] + ", " + hwba[1] + "%, " + hwba[2] + "%" + a2 + ")";
    };
    cs.to.keyword = function(rgb) {
      return reverseNames[rgb.slice(0, 3)];
    };
    function clamp(num, min, max) {
      return Math.min(Math.max(min, num), max);
    }
    function hexDouble(num) {
      var str2 = Math.round(num).toString(16).toUpperCase();
      return str2.length < 2 ? "0" + str2 : str2;
    }
  }
});

// ../../node_modules/color/node_modules/color-name/index.js
var require_color_name2 = __commonJS({
  "../../node_modules/color/node_modules/color-name/index.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      "aliceblue": [240, 248, 255],
      "antiquewhite": [250, 235, 215],
      "aqua": [0, 255, 255],
      "aquamarine": [127, 255, 212],
      "azure": [240, 255, 255],
      "beige": [245, 245, 220],
      "bisque": [255, 228, 196],
      "black": [0, 0, 0],
      "blanchedalmond": [255, 235, 205],
      "blue": [0, 0, 255],
      "blueviolet": [138, 43, 226],
      "brown": [165, 42, 42],
      "burlywood": [222, 184, 135],
      "cadetblue": [95, 158, 160],
      "chartreuse": [127, 255, 0],
      "chocolate": [210, 105, 30],
      "coral": [255, 127, 80],
      "cornflowerblue": [100, 149, 237],
      "cornsilk": [255, 248, 220],
      "crimson": [220, 20, 60],
      "cyan": [0, 255, 255],
      "darkblue": [0, 0, 139],
      "darkcyan": [0, 139, 139],
      "darkgoldenrod": [184, 134, 11],
      "darkgray": [169, 169, 169],
      "darkgreen": [0, 100, 0],
      "darkgrey": [169, 169, 169],
      "darkkhaki": [189, 183, 107],
      "darkmagenta": [139, 0, 139],
      "darkolivegreen": [85, 107, 47],
      "darkorange": [255, 140, 0],
      "darkorchid": [153, 50, 204],
      "darkred": [139, 0, 0],
      "darksalmon": [233, 150, 122],
      "darkseagreen": [143, 188, 143],
      "darkslateblue": [72, 61, 139],
      "darkslategray": [47, 79, 79],
      "darkslategrey": [47, 79, 79],
      "darkturquoise": [0, 206, 209],
      "darkviolet": [148, 0, 211],
      "deeppink": [255, 20, 147],
      "deepskyblue": [0, 191, 255],
      "dimgray": [105, 105, 105],
      "dimgrey": [105, 105, 105],
      "dodgerblue": [30, 144, 255],
      "firebrick": [178, 34, 34],
      "floralwhite": [255, 250, 240],
      "forestgreen": [34, 139, 34],
      "fuchsia": [255, 0, 255],
      "gainsboro": [220, 220, 220],
      "ghostwhite": [248, 248, 255],
      "gold": [255, 215, 0],
      "goldenrod": [218, 165, 32],
      "gray": [128, 128, 128],
      "green": [0, 128, 0],
      "greenyellow": [173, 255, 47],
      "grey": [128, 128, 128],
      "honeydew": [240, 255, 240],
      "hotpink": [255, 105, 180],
      "indianred": [205, 92, 92],
      "indigo": [75, 0, 130],
      "ivory": [255, 255, 240],
      "khaki": [240, 230, 140],
      "lavender": [230, 230, 250],
      "lavenderblush": [255, 240, 245],
      "lawngreen": [124, 252, 0],
      "lemonchiffon": [255, 250, 205],
      "lightblue": [173, 216, 230],
      "lightcoral": [240, 128, 128],
      "lightcyan": [224, 255, 255],
      "lightgoldenrodyellow": [250, 250, 210],
      "lightgray": [211, 211, 211],
      "lightgreen": [144, 238, 144],
      "lightgrey": [211, 211, 211],
      "lightpink": [255, 182, 193],
      "lightsalmon": [255, 160, 122],
      "lightseagreen": [32, 178, 170],
      "lightskyblue": [135, 206, 250],
      "lightslategray": [119, 136, 153],
      "lightslategrey": [119, 136, 153],
      "lightsteelblue": [176, 196, 222],
      "lightyellow": [255, 255, 224],
      "lime": [0, 255, 0],
      "limegreen": [50, 205, 50],
      "linen": [250, 240, 230],
      "magenta": [255, 0, 255],
      "maroon": [128, 0, 0],
      "mediumaquamarine": [102, 205, 170],
      "mediumblue": [0, 0, 205],
      "mediumorchid": [186, 85, 211],
      "mediumpurple": [147, 112, 219],
      "mediumseagreen": [60, 179, 113],
      "mediumslateblue": [123, 104, 238],
      "mediumspringgreen": [0, 250, 154],
      "mediumturquoise": [72, 209, 204],
      "mediumvioletred": [199, 21, 133],
      "midnightblue": [25, 25, 112],
      "mintcream": [245, 255, 250],
      "mistyrose": [255, 228, 225],
      "moccasin": [255, 228, 181],
      "navajowhite": [255, 222, 173],
      "navy": [0, 0, 128],
      "oldlace": [253, 245, 230],
      "olive": [128, 128, 0],
      "olivedrab": [107, 142, 35],
      "orange": [255, 165, 0],
      "orangered": [255, 69, 0],
      "orchid": [218, 112, 214],
      "palegoldenrod": [238, 232, 170],
      "palegreen": [152, 251, 152],
      "paleturquoise": [175, 238, 238],
      "palevioletred": [219, 112, 147],
      "papayawhip": [255, 239, 213],
      "peachpuff": [255, 218, 185],
      "peru": [205, 133, 63],
      "pink": [255, 192, 203],
      "plum": [221, 160, 221],
      "powderblue": [176, 224, 230],
      "purple": [128, 0, 128],
      "rebeccapurple": [102, 51, 153],
      "red": [255, 0, 0],
      "rosybrown": [188, 143, 143],
      "royalblue": [65, 105, 225],
      "saddlebrown": [139, 69, 19],
      "salmon": [250, 128, 114],
      "sandybrown": [244, 164, 96],
      "seagreen": [46, 139, 87],
      "seashell": [255, 245, 238],
      "sienna": [160, 82, 45],
      "silver": [192, 192, 192],
      "skyblue": [135, 206, 235],
      "slateblue": [106, 90, 205],
      "slategray": [112, 128, 144],
      "slategrey": [112, 128, 144],
      "snow": [255, 250, 250],
      "springgreen": [0, 255, 127],
      "steelblue": [70, 130, 180],
      "tan": [210, 180, 140],
      "teal": [0, 128, 128],
      "thistle": [216, 191, 216],
      "tomato": [255, 99, 71],
      "turquoise": [64, 224, 208],
      "violet": [238, 130, 238],
      "wheat": [245, 222, 179],
      "white": [255, 255, 255],
      "whitesmoke": [245, 245, 245],
      "yellow": [255, 255, 0],
      "yellowgreen": [154, 205, 50]
    };
  }
});

// ../../node_modules/color/node_modules/color-convert/conversions.js
var require_conversions = __commonJS({
  "../../node_modules/color/node_modules/color-convert/conversions.js"(exports2, module2) {
    var cssKeywords = require_color_name2();
    var reverseKeywords = {};
    for (const key2 of Object.keys(cssKeywords)) {
      reverseKeywords[cssKeywords[key2]] = key2;
    }
    var convert6 = {
      rgb: { channels: 3, labels: "rgb" },
      hsl: { channels: 3, labels: "hsl" },
      hsv: { channels: 3, labels: "hsv" },
      hwb: { channels: 3, labels: "hwb" },
      cmyk: { channels: 4, labels: "cmyk" },
      xyz: { channels: 3, labels: "xyz" },
      lab: { channels: 3, labels: "lab" },
      lch: { channels: 3, labels: "lch" },
      hex: { channels: 1, labels: ["hex"] },
      keyword: { channels: 1, labels: ["keyword"] },
      ansi16: { channels: 1, labels: ["ansi16"] },
      ansi256: { channels: 1, labels: ["ansi256"] },
      hcg: { channels: 3, labels: ["h", "c", "g"] },
      apple: { channels: 3, labels: ["r16", "g16", "b16"] },
      gray: { channels: 1, labels: ["gray"] }
    };
    module2.exports = convert6;
    for (const model of Object.keys(convert6)) {
      if (!("channels" in convert6[model])) {
        throw new Error("missing channels property: " + model);
      }
      if (!("labels" in convert6[model])) {
        throw new Error("missing channel labels property: " + model);
      }
      if (convert6[model].labels.length !== convert6[model].channels) {
        throw new Error("channel and label counts mismatch: " + model);
      }
      const { channels, labels } = convert6[model];
      delete convert6[model].channels;
      delete convert6[model].labels;
      Object.defineProperty(convert6[model], "channels", { value: channels });
      Object.defineProperty(convert6[model], "labels", { value: labels });
    }
    convert6.rgb.hsl = function(rgb) {
      const r2 = rgb[0] / 255;
      const g = rgb[1] / 255;
      const b = rgb[2] / 255;
      const min = Math.min(r2, g, b);
      const max = Math.max(r2, g, b);
      const delta = max - min;
      let h4;
      let s5;
      if (max === min) {
        h4 = 0;
      } else if (r2 === max) {
        h4 = (g - b) / delta;
      } else if (g === max) {
        h4 = 2 + (b - r2) / delta;
      } else if (b === max) {
        h4 = 4 + (r2 - g) / delta;
      }
      h4 = Math.min(h4 * 60, 360);
      if (h4 < 0) {
        h4 += 360;
      }
      const l = (min + max) / 2;
      if (max === min) {
        s5 = 0;
      } else if (l <= 0.5) {
        s5 = delta / (max + min);
      } else {
        s5 = delta / (2 - max - min);
      }
      return [h4, s5 * 100, l * 100];
    };
    convert6.rgb.hsv = function(rgb) {
      let rdif;
      let gdif;
      let bdif;
      let h4;
      let s5;
      const r2 = rgb[0] / 255;
      const g = rgb[1] / 255;
      const b = rgb[2] / 255;
      const v = Math.max(r2, g, b);
      const diff = v - Math.min(r2, g, b);
      const diffc = function(c) {
        return (v - c) / 6 / diff + 1 / 2;
      };
      if (diff === 0) {
        h4 = 0;
        s5 = 0;
      } else {
        s5 = diff / v;
        rdif = diffc(r2);
        gdif = diffc(g);
        bdif = diffc(b);
        if (r2 === v) {
          h4 = bdif - gdif;
        } else if (g === v) {
          h4 = 1 / 3 + rdif - bdif;
        } else if (b === v) {
          h4 = 2 / 3 + gdif - rdif;
        }
        if (h4 < 0) {
          h4 += 1;
        } else if (h4 > 1) {
          h4 -= 1;
        }
      }
      return [
        h4 * 360,
        s5 * 100,
        v * 100
      ];
    };
    convert6.rgb.hwb = function(rgb) {
      const r2 = rgb[0];
      const g = rgb[1];
      let b = rgb[2];
      const h4 = convert6.rgb.hsl(rgb)[0];
      const w = 1 / 255 * Math.min(r2, Math.min(g, b));
      b = 1 - 1 / 255 * Math.max(r2, Math.max(g, b));
      return [h4, w * 100, b * 100];
    };
    convert6.rgb.cmyk = function(rgb) {
      const r2 = rgb[0] / 255;
      const g = rgb[1] / 255;
      const b = rgb[2] / 255;
      const k = Math.min(1 - r2, 1 - g, 1 - b);
      const c = (1 - r2 - k) / (1 - k) || 0;
      const m2 = (1 - g - k) / (1 - k) || 0;
      const y = (1 - b - k) / (1 - k) || 0;
      return [c * 100, m2 * 100, y * 100, k * 100];
    };
    function comparativeDistance(x2, y) {
      return (x2[0] - y[0]) ** 2 + (x2[1] - y[1]) ** 2 + (x2[2] - y[2]) ** 2;
    }
    convert6.rgb.keyword = function(rgb) {
      const reversed = reverseKeywords[rgb];
      if (reversed) {
        return reversed;
      }
      let currentClosestDistance = Infinity;
      let currentClosestKeyword;
      for (const keyword of Object.keys(cssKeywords)) {
        const value = cssKeywords[keyword];
        const distance = comparativeDistance(rgb, value);
        if (distance < currentClosestDistance) {
          currentClosestDistance = distance;
          currentClosestKeyword = keyword;
        }
      }
      return currentClosestKeyword;
    };
    convert6.keyword.rgb = function(keyword) {
      return cssKeywords[keyword];
    };
    convert6.rgb.xyz = function(rgb) {
      let r2 = rgb[0] / 255;
      let g = rgb[1] / 255;
      let b = rgb[2] / 255;
      r2 = r2 > 0.04045 ? ((r2 + 0.055) / 1.055) ** 2.4 : r2 / 12.92;
      g = g > 0.04045 ? ((g + 0.055) / 1.055) ** 2.4 : g / 12.92;
      b = b > 0.04045 ? ((b + 0.055) / 1.055) ** 2.4 : b / 12.92;
      const x2 = r2 * 0.4124 + g * 0.3576 + b * 0.1805;
      const y = r2 * 0.2126 + g * 0.7152 + b * 0.0722;
      const z2 = r2 * 0.0193 + g * 0.1192 + b * 0.9505;
      return [x2 * 100, y * 100, z2 * 100];
    };
    convert6.rgb.lab = function(rgb) {
      const xyz = convert6.rgb.xyz(rgb);
      let x2 = xyz[0];
      let y = xyz[1];
      let z2 = xyz[2];
      x2 /= 95.047;
      y /= 100;
      z2 /= 108.883;
      x2 = x2 > 8856e-6 ? x2 ** (1 / 3) : 7.787 * x2 + 16 / 116;
      y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116;
      z2 = z2 > 8856e-6 ? z2 ** (1 / 3) : 7.787 * z2 + 16 / 116;
      const l = 116 * y - 16;
      const a2 = 500 * (x2 - y);
      const b = 200 * (y - z2);
      return [l, a2, b];
    };
    convert6.hsl.rgb = function(hsl) {
      const h4 = hsl[0] / 360;
      const s5 = hsl[1] / 100;
      const l = hsl[2] / 100;
      let t2;
      let t3;
      let val;
      if (s5 === 0) {
        val = l * 255;
        return [val, val, val];
      }
      if (l < 0.5) {
        t2 = l * (1 + s5);
      } else {
        t2 = l + s5 - l * s5;
      }
      const t1 = 2 * l - t2;
      const rgb = [0, 0, 0];
      for (let i2 = 0; i2 < 3; i2++) {
        t3 = h4 + 1 / 3 * -(i2 - 1);
        if (t3 < 0) {
          t3++;
        }
        if (t3 > 1) {
          t3--;
        }
        if (6 * t3 < 1) {
          val = t1 + (t2 - t1) * 6 * t3;
        } else if (2 * t3 < 1) {
          val = t2;
        } else if (3 * t3 < 2) {
          val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
        } else {
          val = t1;
        }
        rgb[i2] = val * 255;
      }
      return rgb;
    };
    convert6.hsl.hsv = function(hsl) {
      const h4 = hsl[0];
      let s5 = hsl[1] / 100;
      let l = hsl[2] / 100;
      let smin = s5;
      const lmin = Math.max(l, 0.01);
      l *= 2;
      s5 *= l <= 1 ? l : 2 - l;
      smin *= lmin <= 1 ? lmin : 2 - lmin;
      const v = (l + s5) / 2;
      const sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s5 / (l + s5);
      return [h4, sv * 100, v * 100];
    };
    convert6.hsv.rgb = function(hsv) {
      const h4 = hsv[0] / 60;
      const s5 = hsv[1] / 100;
      let v = hsv[2] / 100;
      const hi = Math.floor(h4) % 6;
      const f3 = h4 - Math.floor(h4);
      const p5 = 255 * v * (1 - s5);
      const q2 = 255 * v * (1 - s5 * f3);
      const t2 = 255 * v * (1 - s5 * (1 - f3));
      v *= 255;
      switch (hi) {
        case 0:
          return [v, t2, p5];
        case 1:
          return [q2, v, p5];
        case 2:
          return [p5, v, t2];
        case 3:
          return [p5, q2, v];
        case 4:
          return [t2, p5, v];
        case 5:
          return [v, p5, q2];
      }
    };
    convert6.hsv.hsl = function(hsv) {
      const h4 = hsv[0];
      const s5 = hsv[1] / 100;
      const v = hsv[2] / 100;
      const vmin = Math.max(v, 0.01);
      let sl;
      let l;
      l = (2 - s5) * v;
      const lmin = (2 - s5) * vmin;
      sl = s5 * vmin;
      sl /= lmin <= 1 ? lmin : 2 - lmin;
      sl = sl || 0;
      l /= 2;
      return [h4, sl * 100, l * 100];
    };
    convert6.hwb.rgb = function(hwb) {
      const h4 = hwb[0] / 360;
      let wh = hwb[1] / 100;
      let bl = hwb[2] / 100;
      const ratio = wh + bl;
      let f3;
      if (ratio > 1) {
        wh /= ratio;
        bl /= ratio;
      }
      const i2 = Math.floor(6 * h4);
      const v = 1 - bl;
      f3 = 6 * h4 - i2;
      if ((i2 & 1) !== 0) {
        f3 = 1 - f3;
      }
      const n = wh + f3 * (v - wh);
      let r2;
      let g;
      let b;
      switch (i2) {
        default:
        case 6:
        case 0:
          r2 = v;
          g = n;
          b = wh;
          break;
        case 1:
          r2 = n;
          g = v;
          b = wh;
          break;
        case 2:
          r2 = wh;
          g = v;
          b = n;
          break;
        case 3:
          r2 = wh;
          g = n;
          b = v;
          break;
        case 4:
          r2 = n;
          g = wh;
          b = v;
          break;
        case 5:
          r2 = v;
          g = wh;
          b = n;
          break;
      }
      return [r2 * 255, g * 255, b * 255];
    };
    convert6.cmyk.rgb = function(cmyk) {
      const c = cmyk[0] / 100;
      const m2 = cmyk[1] / 100;
      const y = cmyk[2] / 100;
      const k = cmyk[3] / 100;
      const r2 = 1 - Math.min(1, c * (1 - k) + k);
      const g = 1 - Math.min(1, m2 * (1 - k) + k);
      const b = 1 - Math.min(1, y * (1 - k) + k);
      return [r2 * 255, g * 255, b * 255];
    };
    convert6.xyz.rgb = function(xyz) {
      const x2 = xyz[0] / 100;
      const y = xyz[1] / 100;
      const z2 = xyz[2] / 100;
      let r2;
      let g;
      let b;
      r2 = x2 * 3.2406 + y * -1.5372 + z2 * -0.4986;
      g = x2 * -0.9689 + y * 1.8758 + z2 * 0.0415;
      b = x2 * 0.0557 + y * -0.204 + z2 * 1.057;
      r2 = r2 > 31308e-7 ? 1.055 * r2 ** (1 / 2.4) - 0.055 : r2 * 12.92;
      g = g > 31308e-7 ? 1.055 * g ** (1 / 2.4) - 0.055 : g * 12.92;
      b = b > 31308e-7 ? 1.055 * b ** (1 / 2.4) - 0.055 : b * 12.92;
      r2 = Math.min(Math.max(0, r2), 1);
      g = Math.min(Math.max(0, g), 1);
      b = Math.min(Math.max(0, b), 1);
      return [r2 * 255, g * 255, b * 255];
    };
    convert6.xyz.lab = function(xyz) {
      let x2 = xyz[0];
      let y = xyz[1];
      let z2 = xyz[2];
      x2 /= 95.047;
      y /= 100;
      z2 /= 108.883;
      x2 = x2 > 8856e-6 ? x2 ** (1 / 3) : 7.787 * x2 + 16 / 116;
      y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116;
      z2 = z2 > 8856e-6 ? z2 ** (1 / 3) : 7.787 * z2 + 16 / 116;
      const l = 116 * y - 16;
      const a2 = 500 * (x2 - y);
      const b = 200 * (y - z2);
      return [l, a2, b];
    };
    convert6.lab.xyz = function(lab) {
      const l = lab[0];
      const a2 = lab[1];
      const b = lab[2];
      let x2;
      let y;
      let z2;
      y = (l + 16) / 116;
      x2 = a2 / 500 + y;
      z2 = y - b / 200;
      const y2 = y ** 3;
      const x22 = x2 ** 3;
      const z22 = z2 ** 3;
      y = y2 > 8856e-6 ? y2 : (y - 16 / 116) / 7.787;
      x2 = x22 > 8856e-6 ? x22 : (x2 - 16 / 116) / 7.787;
      z2 = z22 > 8856e-6 ? z22 : (z2 - 16 / 116) / 7.787;
      x2 *= 95.047;
      y *= 100;
      z2 *= 108.883;
      return [x2, y, z2];
    };
    convert6.lab.lch = function(lab) {
      const l = lab[0];
      const a2 = lab[1];
      const b = lab[2];
      let h4;
      const hr2 = Math.atan2(b, a2);
      h4 = hr2 * 360 / 2 / Math.PI;
      if (h4 < 0) {
        h4 += 360;
      }
      const c = Math.sqrt(a2 * a2 + b * b);
      return [l, c, h4];
    };
    convert6.lch.lab = function(lch) {
      const l = lch[0];
      const c = lch[1];
      const h4 = lch[2];
      const hr2 = h4 / 360 * 2 * Math.PI;
      const a2 = c * Math.cos(hr2);
      const b = c * Math.sin(hr2);
      return [l, a2, b];
    };
    convert6.rgb.ansi16 = function(args, saturation = null) {
      const [r2, g, b] = args;
      let value = saturation === null ? convert6.rgb.hsv(args)[2] : saturation;
      value = Math.round(value / 50);
      if (value === 0) {
        return 30;
      }
      let ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r2 / 255));
      if (value === 2) {
        ansi += 60;
      }
      return ansi;
    };
    convert6.hsv.ansi16 = function(args) {
      return convert6.rgb.ansi16(convert6.hsv.rgb(args), args[2]);
    };
    convert6.rgb.ansi256 = function(args) {
      const r2 = args[0];
      const g = args[1];
      const b = args[2];
      if (r2 === g && g === b) {
        if (r2 < 8) {
          return 16;
        }
        if (r2 > 248) {
          return 231;
        }
        return Math.round((r2 - 8) / 247 * 24) + 232;
      }
      const ansi = 16 + 36 * Math.round(r2 / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);
      return ansi;
    };
    convert6.ansi16.rgb = function(args) {
      let color2 = args % 10;
      if (color2 === 0 || color2 === 7) {
        if (args > 50) {
          color2 += 3.5;
        }
        color2 = color2 / 10.5 * 255;
        return [color2, color2, color2];
      }
      const mult = (~~(args > 50) + 1) * 0.5;
      const r2 = (color2 & 1) * mult * 255;
      const g = (color2 >> 1 & 1) * mult * 255;
      const b = (color2 >> 2 & 1) * mult * 255;
      return [r2, g, b];
    };
    convert6.ansi256.rgb = function(args) {
      if (args >= 232) {
        const c = (args - 232) * 10 + 8;
        return [c, c, c];
      }
      args -= 16;
      let rem;
      const r2 = Math.floor(args / 36) / 5 * 255;
      const g = Math.floor((rem = args % 36) / 6) / 5 * 255;
      const b = rem % 6 / 5 * 255;
      return [r2, g, b];
    };
    convert6.rgb.hex = function(args) {
      const integer = ((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255);
      const string2 = integer.toString(16).toUpperCase();
      return "000000".substring(string2.length) + string2;
    };
    convert6.hex.rgb = function(args) {
      const match3 = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
      if (!match3) {
        return [0, 0, 0];
      }
      let colorString = match3[0];
      if (match3[0].length === 3) {
        colorString = colorString.split("").map((char) => {
          return char + char;
        }).join("");
      }
      const integer = parseInt(colorString, 16);
      const r2 = integer >> 16 & 255;
      const g = integer >> 8 & 255;
      const b = integer & 255;
      return [r2, g, b];
    };
    convert6.rgb.hcg = function(rgb) {
      const r2 = rgb[0] / 255;
      const g = rgb[1] / 255;
      const b = rgb[2] / 255;
      const max = Math.max(Math.max(r2, g), b);
      const min = Math.min(Math.min(r2, g), b);
      const chroma = max - min;
      let grayscale;
      let hue;
      if (chroma < 1) {
        grayscale = min / (1 - chroma);
      } else {
        grayscale = 0;
      }
      if (chroma <= 0) {
        hue = 0;
      } else if (max === r2) {
        hue = (g - b) / chroma % 6;
      } else if (max === g) {
        hue = 2 + (b - r2) / chroma;
      } else {
        hue = 4 + (r2 - g) / chroma;
      }
      hue /= 6;
      hue %= 1;
      return [hue * 360, chroma * 100, grayscale * 100];
    };
    convert6.hsl.hcg = function(hsl) {
      const s5 = hsl[1] / 100;
      const l = hsl[2] / 100;
      const c = l < 0.5 ? 2 * s5 * l : 2 * s5 * (1 - l);
      let f3 = 0;
      if (c < 1) {
        f3 = (l - 0.5 * c) / (1 - c);
      }
      return [hsl[0], c * 100, f3 * 100];
    };
    convert6.hsv.hcg = function(hsv) {
      const s5 = hsv[1] / 100;
      const v = hsv[2] / 100;
      const c = s5 * v;
      let f3 = 0;
      if (c < 1) {
        f3 = (v - c) / (1 - c);
      }
      return [hsv[0], c * 100, f3 * 100];
    };
    convert6.hcg.rgb = function(hcg) {
      const h4 = hcg[0] / 360;
      const c = hcg[1] / 100;
      const g = hcg[2] / 100;
      if (c === 0) {
        return [g * 255, g * 255, g * 255];
      }
      const pure = [0, 0, 0];
      const hi = h4 % 1 * 6;
      const v = hi % 1;
      const w = 1 - v;
      let mg = 0;
      switch (Math.floor(hi)) {
        case 0:
          pure[0] = 1;
          pure[1] = v;
          pure[2] = 0;
          break;
        case 1:
          pure[0] = w;
          pure[1] = 1;
          pure[2] = 0;
          break;
        case 2:
          pure[0] = 0;
          pure[1] = 1;
          pure[2] = v;
          break;
        case 3:
          pure[0] = 0;
          pure[1] = w;
          pure[2] = 1;
          break;
        case 4:
          pure[0] = v;
          pure[1] = 0;
          pure[2] = 1;
          break;
        default:
          pure[0] = 1;
          pure[1] = 0;
          pure[2] = w;
      }
      mg = (1 - c) * g;
      return [
        (c * pure[0] + mg) * 255,
        (c * pure[1] + mg) * 255,
        (c * pure[2] + mg) * 255
      ];
    };
    convert6.hcg.hsv = function(hcg) {
      const c = hcg[1] / 100;
      const g = hcg[2] / 100;
      const v = c + g * (1 - c);
      let f3 = 0;
      if (v > 0) {
        f3 = c / v;
      }
      return [hcg[0], f3 * 100, v * 100];
    };
    convert6.hcg.hsl = function(hcg) {
      const c = hcg[1] / 100;
      const g = hcg[2] / 100;
      const l = g * (1 - c) + 0.5 * c;
      let s5 = 0;
      if (l > 0 && l < 0.5) {
        s5 = c / (2 * l);
      } else if (l >= 0.5 && l < 1) {
        s5 = c / (2 * (1 - l));
      }
      return [hcg[0], s5 * 100, l * 100];
    };
    convert6.hcg.hwb = function(hcg) {
      const c = hcg[1] / 100;
      const g = hcg[2] / 100;
      const v = c + g * (1 - c);
      return [hcg[0], (v - c) * 100, (1 - v) * 100];
    };
    convert6.hwb.hcg = function(hwb) {
      const w = hwb[1] / 100;
      const b = hwb[2] / 100;
      const v = 1 - b;
      const c = v - w;
      let g = 0;
      if (c < 1) {
        g = (v - c) / (1 - c);
      }
      return [hwb[0], c * 100, g * 100];
    };
    convert6.apple.rgb = function(apple) {
      return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];
    };
    convert6.rgb.apple = function(rgb) {
      return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];
    };
    convert6.gray.rgb = function(args) {
      return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
    };
    convert6.gray.hsl = function(args) {
      return [0, 0, args[0]];
    };
    convert6.gray.hsv = convert6.gray.hsl;
    convert6.gray.hwb = function(gray) {
      return [0, 100, gray[0]];
    };
    convert6.gray.cmyk = function(gray) {
      return [0, 0, 0, gray[0]];
    };
    convert6.gray.lab = function(gray) {
      return [gray[0], 0, 0];
    };
    convert6.gray.hex = function(gray) {
      const val = Math.round(gray[0] / 100 * 255) & 255;
      const integer = (val << 16) + (val << 8) + val;
      const string2 = integer.toString(16).toUpperCase();
      return "000000".substring(string2.length) + string2;
    };
    convert6.rgb.gray = function(rgb) {
      const val = (rgb[0] + rgb[1] + rgb[2]) / 3;
      return [val / 255 * 100];
    };
  }
});

// ../../node_modules/color/node_modules/color-convert/route.js
var require_route = __commonJS({
  "../../node_modules/color/node_modules/color-convert/route.js"(exports2, module2) {
    var conversions = require_conversions();
    function buildGraph() {
      const graph = {};
      const models = Object.keys(conversions);
      for (let len = models.length, i2 = 0; i2 < len; i2++) {
        graph[models[i2]] = {
          // http://jsperf.com/1-vs-infinity
          // micro-opt, but this is simple.
          distance: -1,
          parent: null
        };
      }
      return graph;
    }
    function deriveBFS(fromModel) {
      const graph = buildGraph();
      const queue = [fromModel];
      graph[fromModel].distance = 0;
      while (queue.length) {
        const current2 = queue.pop();
        const adjacents = Object.keys(conversions[current2]);
        for (let len = adjacents.length, i2 = 0; i2 < len; i2++) {
          const adjacent = adjacents[i2];
          const node3 = graph[adjacent];
          if (node3.distance === -1) {
            node3.distance = graph[current2].distance + 1;
            node3.parent = current2;
            queue.unshift(adjacent);
          }
        }
      }
      return graph;
    }
    function link4(from4, to) {
      return function(args) {
        return to(from4(args));
      };
    }
    function wrapConversion(toModel, graph) {
      const path45 = [graph[toModel].parent, toModel];
      let fn = conversions[graph[toModel].parent][toModel];
      let cur = graph[toModel].parent;
      while (graph[cur].parent) {
        path45.unshift(graph[cur].parent);
        fn = link4(conversions[graph[cur].parent][cur], fn);
        cur = graph[cur].parent;
      }
      fn.conversion = path45;
      return fn;
    }
    module2.exports = function(fromModel) {
      const graph = deriveBFS(fromModel);
      const conversion = {};
      const models = Object.keys(graph);
      for (let len = models.length, i2 = 0; i2 < len; i2++) {
        const toModel = models[i2];
        const node3 = graph[toModel];
        if (node3.parent === null) {
          continue;
        }
        conversion[toModel] = wrapConversion(toModel, graph);
      }
      return conversion;
    };
  }
});

// ../../node_modules/color/node_modules/color-convert/index.js
var require_color_convert = __commonJS({
  "../../node_modules/color/node_modules/color-convert/index.js"(exports2, module2) {
    var conversions = require_conversions();
    var route = require_route();
    var convert6 = {};
    var models = Object.keys(conversions);
    function wrapRaw(fn) {
      const wrappedFn = function(...args) {
        const arg0 = args[0];
        if (arg0 === void 0 || arg0 === null) {
          return arg0;
        }
        if (arg0.length > 1) {
          args = arg0;
        }
        return fn(args);
      };
      if ("conversion" in fn) {
        wrappedFn.conversion = fn.conversion;
      }
      return wrappedFn;
    }
    function wrapRounded(fn) {
      const wrappedFn = function(...args) {
        const arg0 = args[0];
        if (arg0 === void 0 || arg0 === null) {
          return arg0;
        }
        if (arg0.length > 1) {
          args = arg0;
        }
        const result = fn(args);
        if (typeof result === "object") {
          for (let len = result.length, i2 = 0; i2 < len; i2++) {
            result[i2] = Math.round(result[i2]);
          }
        }
        return result;
      };
      if ("conversion" in fn) {
        wrappedFn.conversion = fn.conversion;
      }
      return wrappedFn;
    }
    models.forEach((fromModel) => {
      convert6[fromModel] = {};
      Object.defineProperty(convert6[fromModel], "channels", { value: conversions[fromModel].channels });
      Object.defineProperty(convert6[fromModel], "labels", { value: conversions[fromModel].labels });
      const routes = route(fromModel);
      const routeModels = Object.keys(routes);
      routeModels.forEach((toModel) => {
        const fn = routes[toModel];
        convert6[fromModel][toModel] = wrapRounded(fn);
        convert6[fromModel][toModel].raw = wrapRaw(fn);
      });
    });
    module2.exports = convert6;
  }
});

// ../../node_modules/color/index.js
var require_color = __commonJS({
  "../../node_modules/color/index.js"(exports2, module2) {
    var colorString = require_color_string();
    var convert6 = require_color_convert();
    var skippedModels = [
      // To be honest, I don't really feel like keyword belongs in color convert, but eh.
      "keyword",
      // Gray conflicts with some method names, and has its own method defined.
      "gray",
      // Shouldn't really be in color-convert either...
      "hex"
    ];
    var hashedModelKeys = {};
    for (const model of Object.keys(convert6)) {
      hashedModelKeys[[...convert6[model].labels].sort().join("")] = model;
    }
    var limiters = {};
    function Color3(object, model) {
      if (!(this instanceof Color3)) {
        return new Color3(object, model);
      }
      if (model && model in skippedModels) {
        model = null;
      }
      if (model && !(model in convert6)) {
        throw new Error("Unknown model: " + model);
      }
      let i2;
      let channels;
      if (object == null) {
        this.model = "rgb";
        this.color = [0, 0, 0];
        this.valpha = 1;
      } else if (object instanceof Color3) {
        this.model = object.model;
        this.color = [...object.color];
        this.valpha = object.valpha;
      } else if (typeof object === "string") {
        const result = colorString.get(object);
        if (result === null) {
          throw new Error("Unable to parse color from string: " + object);
        }
        this.model = result.model;
        channels = convert6[this.model].channels;
        this.color = result.value.slice(0, channels);
        this.valpha = typeof result.value[channels] === "number" ? result.value[channels] : 1;
      } else if (object.length > 0) {
        this.model = model || "rgb";
        channels = convert6[this.model].channels;
        const newArray = Array.prototype.slice.call(object, 0, channels);
        this.color = zeroArray(newArray, channels);
        this.valpha = typeof object[channels] === "number" ? object[channels] : 1;
      } else if (typeof object === "number") {
        this.model = "rgb";
        this.color = [
          object >> 16 & 255,
          object >> 8 & 255,
          object & 255
        ];
        this.valpha = 1;
      } else {
        this.valpha = 1;
        const keys2 = Object.keys(object);
        if ("alpha" in object) {
          keys2.splice(keys2.indexOf("alpha"), 1);
          this.valpha = typeof object.alpha === "number" ? object.alpha : 0;
        }
        const hashedKeys = keys2.sort().join("");
        if (!(hashedKeys in hashedModelKeys)) {
          throw new Error("Unable to parse color from object: " + JSON.stringify(object));
        }
        this.model = hashedModelKeys[hashedKeys];
        const { labels } = convert6[this.model];
        const color2 = [];
        for (i2 = 0; i2 < labels.length; i2++) {
          color2.push(object[labels[i2]]);
        }
        this.color = zeroArray(color2);
      }
      if (limiters[this.model]) {
        channels = convert6[this.model].channels;
        for (i2 = 0; i2 < channels; i2++) {
          const limit = limiters[this.model][i2];
          if (limit) {
            this.color[i2] = limit(this.color[i2]);
          }
        }
      }
      this.valpha = Math.max(0, Math.min(1, this.valpha));
      if (Object.freeze) {
        Object.freeze(this);
      }
    }
    Color3.prototype = {
      toString() {
        return this.string();
      },
      toJSON() {
        return this[this.model]();
      },
      string(places) {
        let self2 = this.model in colorString.to ? this : this.rgb();
        self2 = self2.round(typeof places === "number" ? places : 1);
        const args = self2.valpha === 1 ? self2.color : [...self2.color, this.valpha];
        return colorString.to[self2.model](args);
      },
      percentString(places) {
        const self2 = this.rgb().round(typeof places === "number" ? places : 1);
        const args = self2.valpha === 1 ? self2.color : [...self2.color, this.valpha];
        return colorString.to.rgb.percent(args);
      },
      array() {
        return this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];
      },
      object() {
        const result = {};
        const { channels } = convert6[this.model];
        const { labels } = convert6[this.model];
        for (let i2 = 0; i2 < channels; i2++) {
          result[labels[i2]] = this.color[i2];
        }
        if (this.valpha !== 1) {
          result.alpha = this.valpha;
        }
        return result;
      },
      unitArray() {
        const rgb = this.rgb().color;
        rgb[0] /= 255;
        rgb[1] /= 255;
        rgb[2] /= 255;
        if (this.valpha !== 1) {
          rgb.push(this.valpha);
        }
        return rgb;
      },
      unitObject() {
        const rgb = this.rgb().object();
        rgb.r /= 255;
        rgb.g /= 255;
        rgb.b /= 255;
        if (this.valpha !== 1) {
          rgb.alpha = this.valpha;
        }
        return rgb;
      },
      round(places) {
        places = Math.max(places || 0, 0);
        return new Color3([...this.color.map(roundToPlace(places)), this.valpha], this.model);
      },
      alpha(value) {
        if (value !== void 0) {
          return new Color3([...this.color, Math.max(0, Math.min(1, value))], this.model);
        }
        return this.valpha;
      },
      // Rgb
      red: getset("rgb", 0, maxfn(255)),
      green: getset("rgb", 1, maxfn(255)),
      blue: getset("rgb", 2, maxfn(255)),
      hue: getset(["hsl", "hsv", "hsl", "hwb", "hcg"], 0, (value) => (value % 360 + 360) % 360),
      saturationl: getset("hsl", 1, maxfn(100)),
      lightness: getset("hsl", 2, maxfn(100)),
      saturationv: getset("hsv", 1, maxfn(100)),
      value: getset("hsv", 2, maxfn(100)),
      chroma: getset("hcg", 1, maxfn(100)),
      gray: getset("hcg", 2, maxfn(100)),
      white: getset("hwb", 1, maxfn(100)),
      wblack: getset("hwb", 2, maxfn(100)),
      cyan: getset("cmyk", 0, maxfn(100)),
      magenta: getset("cmyk", 1, maxfn(100)),
      yellow: getset("cmyk", 2, maxfn(100)),
      black: getset("cmyk", 3, maxfn(100)),
      x: getset("xyz", 0, maxfn(95.047)),
      y: getset("xyz", 1, maxfn(100)),
      z: getset("xyz", 2, maxfn(108.833)),
      l: getset("lab", 0, maxfn(100)),
      a: getset("lab", 1),
      b: getset("lab", 2),
      keyword(value) {
        if (value !== void 0) {
          return new Color3(value);
        }
        return convert6[this.model].keyword(this.color);
      },
      hex(value) {
        if (value !== void 0) {
          return new Color3(value);
        }
        return colorString.to.hex(this.rgb().round().color);
      },
      hexa(value) {
        if (value !== void 0) {
          return new Color3(value);
        }
        const rgbArray = this.rgb().round().color;
        let alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();
        if (alphaHex.length === 1) {
          alphaHex = "0" + alphaHex;
        }
        return colorString.to.hex(rgbArray) + alphaHex;
      },
      rgbNumber() {
        const rgb = this.rgb().color;
        return (rgb[0] & 255) << 16 | (rgb[1] & 255) << 8 | rgb[2] & 255;
      },
      luminosity() {
        const rgb = this.rgb().color;
        const lum = [];
        for (const [i2, element5] of rgb.entries()) {
          const chan = element5 / 255;
          lum[i2] = chan <= 0.04045 ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;
        }
        return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];
      },
      contrast(color2) {
        const lum1 = this.luminosity();
        const lum2 = color2.luminosity();
        if (lum1 > lum2) {
          return (lum1 + 0.05) / (lum2 + 0.05);
        }
        return (lum2 + 0.05) / (lum1 + 0.05);
      },
      level(color2) {
        const contrastRatio = this.contrast(color2);
        if (contrastRatio >= 7) {
          return "AAA";
        }
        return contrastRatio >= 4.5 ? "AA" : "";
      },
      isDark() {
        const rgb = this.rgb().color;
        const yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 1e4;
        return yiq < 128;
      },
      isLight() {
        return !this.isDark();
      },
      negate() {
        const rgb = this.rgb();
        for (let i2 = 0; i2 < 3; i2++) {
          rgb.color[i2] = 255 - rgb.color[i2];
        }
        return rgb;
      },
      lighten(ratio) {
        const hsl = this.hsl();
        hsl.color[2] += hsl.color[2] * ratio;
        return hsl;
      },
      darken(ratio) {
        const hsl = this.hsl();
        hsl.color[2] -= hsl.color[2] * ratio;
        return hsl;
      },
      saturate(ratio) {
        const hsl = this.hsl();
        hsl.color[1] += hsl.color[1] * ratio;
        return hsl;
      },
      desaturate(ratio) {
        const hsl = this.hsl();
        hsl.color[1] -= hsl.color[1] * ratio;
        return hsl;
      },
      whiten(ratio) {
        const hwb = this.hwb();
        hwb.color[1] += hwb.color[1] * ratio;
        return hwb;
      },
      blacken(ratio) {
        const hwb = this.hwb();
        hwb.color[2] += hwb.color[2] * ratio;
        return hwb;
      },
      grayscale() {
        const rgb = this.rgb().color;
        const value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;
        return Color3.rgb(value, value, value);
      },
      fade(ratio) {
        return this.alpha(this.valpha - this.valpha * ratio);
      },
      opaquer(ratio) {
        return this.alpha(this.valpha + this.valpha * ratio);
      },
      rotate(degrees) {
        const hsl = this.hsl();
        let hue = hsl.color[0];
        hue = (hue + degrees) % 360;
        hue = hue < 0 ? 360 + hue : hue;
        hsl.color[0] = hue;
        return hsl;
      },
      mix(mixinColor, weight) {
        if (!mixinColor || !mixinColor.rgb) {
          throw new Error('Argument to "mix" was not a Color instance, but rather an instance of ' + typeof mixinColor);
        }
        const color1 = mixinColor.rgb();
        const color2 = this.rgb();
        const p5 = weight === void 0 ? 0.5 : weight;
        const w = 2 * p5 - 1;
        const a2 = color1.alpha() - color2.alpha();
        const w1 = ((w * a2 === -1 ? w : (w + a2) / (1 + w * a2)) + 1) / 2;
        const w2 = 1 - w1;
        return Color3.rgb(
          w1 * color1.red() + w2 * color2.red(),
          w1 * color1.green() + w2 * color2.green(),
          w1 * color1.blue() + w2 * color2.blue(),
          color1.alpha() * p5 + color2.alpha() * (1 - p5)
        );
      }
    };
    for (const model of Object.keys(convert6)) {
      if (skippedModels.includes(model)) {
        continue;
      }
      const { channels } = convert6[model];
      Color3.prototype[model] = function(...args) {
        if (this.model === model) {
          return new Color3(this);
        }
        if (args.length > 0) {
          return new Color3(args, model);
        }
        return new Color3([...assertArray(convert6[this.model][model].raw(this.color)), this.valpha], model);
      };
      Color3[model] = function(...args) {
        let color2 = args[0];
        if (typeof color2 === "number") {
          color2 = zeroArray(args, channels);
        }
        return new Color3(color2, model);
      };
    }
    function roundTo(number2, places) {
      return Number(number2.toFixed(places));
    }
    function roundToPlace(places) {
      return function(number2) {
        return roundTo(number2, places);
      };
    }
    function getset(model, channel, modifier) {
      model = Array.isArray(model) ? model : [model];
      for (const m2 of model) {
        (limiters[m2] || (limiters[m2] = []))[channel] = modifier;
      }
      model = model[0];
      return function(value) {
        let result;
        if (value !== void 0) {
          if (modifier) {
            value = modifier(value);
          }
          result = this[model]();
          result.color[channel] = value;
          return result;
        }
        result = this[model]().color[channel];
        if (modifier) {
          result = modifier(result);
        }
        return result;
      };
    }
    function maxfn(max) {
      return function(v) {
        return Math.max(0, Math.min(max, v));
      };
    }
    function assertArray(value) {
      return Array.isArray(value) ? value : [value];
    }
    function zeroArray(array, length) {
      for (let i2 = 0; i2 < length; i2++) {
        if (typeof array[i2] !== "number") {
          array[i2] = 0;
        }
      }
      return array;
    }
    module2.exports = Color3;
  }
});

// ../../node_modules/@citation-js/core/lib/Cite/log.js
var require_log = __commonJS({
  "../../node_modules/@citation-js/core/lib/Cite/log.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.currentVersion = currentVersion;
    exports2.retrieveLastVersion = retrieveLastVersion;
    exports2.retrieveVersion = retrieveVersion;
    exports2.save = save;
    exports2.undo = undo;
    function currentVersion() {
      return this.log.length;
    }
    function retrieveVersion(versnum = 1) {
      if (versnum <= 0 || versnum > this.currentVersion()) {
        return null;
      } else {
        const [data, options] = this.log[versnum - 1];
        const image6 = new this.constructor(JSON.parse(data), JSON.parse(options));
        image6.log = this.log.slice(0, versnum);
        return image6;
      }
    }
    function undo(number2 = 1) {
      return this.retrieveVersion(this.currentVersion() - number2);
    }
    function retrieveLastVersion() {
      return this.retrieveVersion(this.currentVersion());
    }
    function save() {
      this.log.push([JSON.stringify(this.data), JSON.stringify(this._options)]);
      return this;
    }
  }
});

// ../../node_modules/@citation-js/core/lib/Cite/validate.js
var require_validate = __commonJS({
  "../../node_modules/@citation-js/core/lib/Cite/validate.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.validateOptions = validateOptions;
    exports2.validateOutputOptions = validateOutputOptions;
    var formats = ["real", "string"];
    var types6 = ["json", "html", "string", "rtf"];
    var styles14 = ["csl", "bibtex", "bibtxt", "citation-*", "ris", "ndjson"];
    var wrapperTypes = ["string", "function"];
    function validateOutputOptions(options) {
      if (typeof options !== "object") {
        throw new TypeError("Options not an object!");
      }
      const {
        format,
        type: type2,
        style: style3,
        lang,
        append,
        prepend
      } = options;
      if (format && !formats.includes(format)) {
        throw new TypeError(`Option format ("${format}") should be one of: ${formats}`);
      } else if (type2 && !types6.includes(type2)) {
        throw new TypeError(`Option type ("${type2}") should be one of: ${types6}`);
      } else if (style3 && !styles14.includes(style3) && !/^citation/.test(style3)) {
        throw new TypeError(`Option style ("${style3}") should be one of: ${styles14}`);
      } else if (lang && typeof lang !== "string") {
        throw new TypeError(`Option lang should be a string, but is a ${typeof lang}`);
      } else if (prepend && !wrapperTypes.includes(typeof prepend)) {
        throw new TypeError(`Option prepend should be a string or a function, but is a ${typeof prepend}`);
      } else if (append && !wrapperTypes.includes(typeof append)) {
        throw new TypeError(`Option append should be a string or a function, but is a ${typeof append}`);
      }
      if (/^citation/.test(style3) && type2 === "json") {
        throw new Error(`Combination type/style of json/citation-* is not valid: ${type2}/${style3}`);
      }
      return true;
    }
    function validateOptions(options) {
      if (typeof options !== "object") {
        throw new TypeError("Options should be an object");
      }
      if (options.output) {
        validateOutputOptions(options.output);
      } else if (options.maxChainLength && typeof options.maxChainLength !== "number") {
        throw new TypeError("Option maxChainLength should be a number");
      } else if (options.forceType && typeof options.forceType !== "string") {
        throw new TypeError("Option forceType should be a string");
      } else if (options.generateGraph != null && typeof options.generateGraph !== "boolean") {
        throw new TypeError("Option generateGraph should be a boolean");
      } else if (options.strict != null && typeof options.strict !== "boolean") {
        throw new TypeError("Option strict should be a boolean");
      } else if (options.target != null && typeof options.target !== "string") {
        throw new TypeError("Option target should be a boolean");
      }
      return true;
    }
  }
});

// ../../node_modules/@citation-js/core/lib/Cite/options.js
var require_options = __commonJS({
  "../../node_modules/@citation-js/core/lib/Cite/options.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.defaultOptions = void 0;
    exports2.options = options;
    var _validate = require_validate();
    var defaultOptions5 = exports2.defaultOptions = {
      format: "real",
      type: "json",
      style: "csl",
      lang: "en-US"
    };
    function options(options2, log) {
      (0, _validate.validateOutputOptions)(options2);
      if (log) {
        this.save();
      }
      Object.assign(this._options, options2);
      return this;
    }
  }
});

// ../../node_modules/@citation-js/core/lib/plugins/input/dataType.js
var require_dataType = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugins/input/dataType.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.dataTypeOf = dataTypeOf;
    exports2.typeOf = typeOf;
    function typeOf(thing) {
      switch (thing) {
        case void 0:
          return "Undefined";
        case null:
          return "Null";
        default:
          return thing.constructor.name;
      }
    }
    function dataTypeOf(thing) {
      switch (typeof thing) {
        case "string":
          return "String";
        case "object":
          if (Array.isArray(thing)) {
            return "Array";
          } else if (typeOf(thing) === "Object") {
            return "SimpleObject";
          } else if (typeOf(thing) !== "Null") {
            return "ComplexObject";
          }
        default:
          return "Primitive";
      }
    }
  }
});

// ../../node_modules/@citation-js/core/lib/plugins/input/graph.js
var require_graph = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugins/input/graph.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.applyGraph = applyGraph;
    exports2.removeGraph = removeGraph;
    function applyGraph(entry, graph) {
      if (entry._graph) {
        const index4 = graph.findIndex(({
          type: type2
        }) => type2 === "@else/list+object");
        if (index4 !== -1) {
          graph.splice(index4 + 1, 0, ...entry._graph.slice(0, -1));
        }
      }
      entry._graph = graph;
      return entry;
    }
    function removeGraph(entry) {
      delete entry._graph;
      return entry;
    }
  }
});

// ../../node_modules/@citation-js/core/lib/logger.js
var require_logger = __commonJS({
  "../../node_modules/@citation-js/core/lib/logger.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    var logger = {
      _output(level, scope2, msg) {
        this._log.push(scope2, msg);
        if (this._levels.indexOf(level) < this._levels.indexOf(this.level)) {
          return;
        }
        this._console.log(scope2, ...msg);
      },
      _console: null,
      _log: [],
      _levels: ["http", "debug", "unmapped", "info", "warn", "error", "silent"],
      level: "silent"
    };
    for (const level of logger._levels) {
      logger[level] = (scope2, ...msg) => logger._output(level, scope2, msg);
    }
    if (typeof console.Console === "function") {
      logger._console = new console.Console(process.stderr);
    } else {
      logger._console = console;
    }
    var _default2 = exports2.default = logger;
  }
});

// ../../node_modules/@citation-js/core/lib/plugins/input/type.js
var require_type = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugins/input/type.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.addTypeParser = addTypeParser;
    exports2.hasTypeParser = hasTypeParser;
    exports2.listTypeParser = listTypeParser;
    exports2.removeTypeParser = removeTypeParser;
    exports2.treeTypeParser = treeTypeParser;
    exports2.type = type2;
    exports2.typeMatcher = void 0;
    var _logger = _interopRequireDefault3(require_logger());
    var _dataType = require_dataType();
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    var types6 = {};
    var dataTypes = {};
    var unregExts = {};
    function parseNativeTypes(input3, dataType) {
      switch (dataType) {
        case "Array":
          if (input3.length === 0 || input3.every((entry) => type2(entry) === "@csl/object")) {
            return "@csl/list+object";
          } else {
            return "@else/list+object";
          }
        case "SimpleObject":
        case "ComplexObject":
          return "@csl/object";
        default:
          return "@invalid";
      }
    }
    function matchType(typeList = [], data) {
      for (const type3 of typeList) {
        if (types6[type3].predicate(data)) {
          return matchType(types6[type3].extensions, data) || type3;
        }
      }
    }
    function type2(input3) {
      const dataType = (0, _dataType.dataTypeOf)(input3);
      if (dataType === "Array" && input3.length === 0) {
        return parseNativeTypes(input3, dataType);
      }
      const match3 = matchType(dataTypes[dataType], input3);
      return match3 || parseNativeTypes(input3, dataType);
    }
    function addTypeParser(format, {
      dataType,
      predicate,
      extends: extend5
    }) {
      let extensions = [];
      if (format in unregExts) {
        extensions = unregExts[format];
        delete unregExts[format];
        _logger.default.debug("[core]", `Subclasses "${extensions}" finally registered to parent type "${format}"`);
      }
      const object = {
        predicate,
        extensions
      };
      types6[format] = object;
      if (extend5) {
        const parentTypeParser = types6[extend5];
        if (parentTypeParser) {
          parentTypeParser.extensions.push(format);
        } else {
          if (!unregExts[extend5]) {
            unregExts[extend5] = [];
          }
          unregExts[extend5].push(format);
          _logger.default.debug("[core]", `Subclass "${format}" is waiting on parent type "${extend5}"`);
        }
      } else {
        const typeList = dataTypes[dataType] || (dataTypes[dataType] = []);
        typeList.push(format);
      }
    }
    function hasTypeParser(type3) {
      return Object.prototype.hasOwnProperty.call(types6, type3);
    }
    function removeTypeParser(type3) {
      delete types6[type3];
      const typeLists = [...Object.keys(dataTypes).map((key2) => dataTypes[key2]), ...Object.keys(types6).map((type4) => types6[type4].extensions).filter((list6) => list6.length > 0)];
      typeLists.forEach((typeList) => {
        const index4 = typeList.indexOf(type3);
        if (index4 > -1) {
          typeList.splice(index4, 1);
        }
      });
    }
    function listTypeParser() {
      return Object.keys(types6);
    }
    function treeTypeParser() {
      const attachNode = (name3) => ({
        name: name3,
        children: types6[name3].extensions.map(attachNode)
      });
      return {
        name: "Type tree",
        children: Object.keys(dataTypes).map((name3) => ({
          name: name3,
          children: dataTypes[name3].map(attachNode)
        }))
      };
    }
    var typeMatcher = exports2.typeMatcher = /^(?:@(.+?))(?:\/(?:(.+?)\+)?(?:(.+)))?$/;
  }
});

// ../../node_modules/@citation-js/core/lib/plugins/input/parser.js
var require_parser2 = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugins/input/parser.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.TypeParser = exports2.FormatParser = exports2.DataParser = void 0;
    var _type3 = require_type();
    function _defineProperty(e2, r2, t2) {
      return (r2 = _toPropertyKey(r2)) in e2 ? Object.defineProperty(e2, r2, { value: t2, enumerable: true, configurable: true, writable: true }) : e2[r2] = t2, e2;
    }
    function _toPropertyKey(t2) {
      var i2 = _toPrimitive(t2, "string");
      return "symbol" == typeof i2 ? i2 : i2 + "";
    }
    function _toPrimitive(t2, r2) {
      if ("object" != typeof t2 || !t2) return t2;
      var e2 = t2[Symbol.toPrimitive];
      if (void 0 !== e2) {
        var i2 = e2.call(t2, r2 || "default");
        if ("object" != typeof i2) return i2;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return ("string" === r2 ? String : Number)(t2);
    }
    var TypeParser = class {
      constructor(data) {
        _defineProperty(this, "validDataTypes", ["String", "Array", "SimpleObject", "ComplexObject", "Primitive"]);
        this.data = data;
      }
      validateDataType() {
        const dataType = this.data.dataType;
        if (dataType && !this.validDataTypes.includes(dataType)) {
          throw new RangeError(`dataType was ${dataType}; expected one of ${this.validDataTypes}`);
        }
      }
      validateParseType() {
        const predicate = this.data.predicate;
        if (predicate && !(predicate instanceof RegExp || typeof predicate === "function")) {
          throw new TypeError(`predicate was ${typeof predicate}; expected RegExp or function`);
        }
      }
      validateTokenList() {
        const tokenList = this.data.tokenList;
        if (tokenList && typeof tokenList !== "object") {
          throw new TypeError(`tokenList was ${typeof tokenList}; expected object or RegExp`);
        }
      }
      validatePropertyConstraint() {
        const propertyConstraint = this.data.propertyConstraint;
        if (propertyConstraint && typeof propertyConstraint !== "object") {
          throw new TypeError(`propertyConstraint was ${typeof propertyConstraint}; expected array or object`);
        }
      }
      validateElementConstraint() {
        const elementConstraint = this.data.elementConstraint;
        if (elementConstraint && typeof elementConstraint !== "string") {
          throw new TypeError(`elementConstraint was ${typeof elementConstraint}; expected string`);
        }
      }
      validateExtends() {
        const extend5 = this.data.extends;
        if (extend5 && typeof extend5 !== "string") {
          throw new TypeError(`extends was ${typeof extend5}; expected string`);
        }
      }
      validate() {
        if (this.data === null || typeof this.data !== "object") {
          throw new TypeError(`typeParser was ${typeof this.data}; expected object`);
        }
        this.validateDataType();
        this.validateParseType();
        this.validateTokenList();
        this.validatePropertyConstraint();
        this.validateElementConstraint();
        this.validateExtends();
      }
      parseTokenList() {
        let tokenList = this.data.tokenList;
        if (!tokenList) {
          return [];
        } else if (tokenList instanceof RegExp) {
          tokenList = {
            token: tokenList
          };
        }
        const {
          token,
          split: split2 = /\s+/,
          trim: trim2 = true,
          every = true
        } = tokenList;
        const trimInput = (input3) => trim2 ? input3.trim() : input3;
        const testTokens = every ? "every" : "some";
        const predicate = (input3) => trimInput(input3).split(split2)[testTokens]((part) => token.test(part));
        return [predicate];
      }
      parsePropertyConstraint() {
        const constraints = [].concat(this.data.propertyConstraint || []);
        return constraints.map(({
          props,
          match: match3,
          value
        }) => {
          props = [].concat(props);
          switch (match3) {
            case "any":
            case "some":
              return (input3) => props.some((prop) => prop in input3 && (!value || value(input3[prop])));
            case "none":
              return (input3) => !props.some((prop) => prop in input3 && (!value || value(input3[prop])));
            case "every":
            default:
              return (input3) => props.every((prop) => prop in input3 && (!value || value(input3[prop])));
          }
        });
      }
      parseElementConstraint() {
        const constraint = this.data.elementConstraint;
        return !constraint ? [] : [(input3) => input3.every((entry) => (0, _type3.type)(entry) === constraint)];
      }
      parsePredicate() {
        if (this.data.predicate instanceof RegExp) {
          return [this.data.predicate.test.bind(this.data.predicate)];
        } else if (this.data.predicate) {
          return [this.data.predicate];
        } else {
          return [];
        }
      }
      getCombinedPredicate() {
        const predicates = [...this.parsePredicate(), ...this.parseTokenList(), ...this.parsePropertyConstraint(), ...this.parseElementConstraint()];
        if (predicates.length === 0) {
          return () => true;
        } else if (predicates.length === 1) {
          return predicates[0];
        } else {
          return (input3) => predicates.every((predicate) => predicate(input3));
        }
      }
      getDataType() {
        if (this.data.dataType) {
          return this.data.dataType;
        } else if (this.data.predicate instanceof RegExp) {
          return "String";
        } else if (this.data.tokenList) {
          return "String";
        } else if (this.data.elementConstraint) {
          return "Array";
        } else {
          return "Primitive";
        }
      }
      get dataType() {
        return this.getDataType();
      }
      get predicate() {
        return this.getCombinedPredicate();
      }
      get extends() {
        return this.data.extends;
      }
    };
    exports2.TypeParser = TypeParser;
    var DataParser = class {
      constructor(parser3, {
        async
      } = {}) {
        this.parser = parser3;
        this.async = async;
      }
      validate() {
        const parser3 = this.parser;
        if (typeof parser3 !== "function") {
          throw new TypeError(`parser was ${typeof parser3}; expected function`);
        }
      }
    };
    exports2.DataParser = DataParser;
    var FormatParser = class {
      constructor(format, parsers = {}) {
        this.format = format;
        if (parsers.parseType) {
          this.typeParser = new TypeParser(parsers.parseType);
        }
        if (parsers.parse) {
          this.dataParser = new DataParser(parsers.parse, {
            async: false
          });
        }
        if (parsers.parseAsync) {
          this.asyncDataParser = new DataParser(parsers.parseAsync, {
            async: true
          });
        }
      }
      validateFormat() {
        const format = this.format;
        if (!_type3.typeMatcher.test(format)) {
          throw new TypeError(`format name was "${format}"; didn't match expected pattern`);
        }
      }
      validate() {
        this.validateFormat();
        if (this.typeParser) {
          this.typeParser.validate();
        }
        if (this.dataParser) {
          this.dataParser.validate();
        }
        if (this.asyncDataParser) {
          this.asyncDataParser.validate();
        }
      }
    };
    exports2.FormatParser = FormatParser;
  }
});

// ../../node_modules/@citation-js/name/lib/input.js
var require_input = __commonJS({
  "../../node_modules/@citation-js/name/lib/input.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = exports2.parse = exports2.types = exports2.scope = void 0;
    function _slicedToArray(arr, i2) {
      return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i2) || _nonIterableRest();
    }
    function _nonIterableRest() {
      throw new TypeError("Invalid attempt to destructure non-iterable instance");
    }
    function _iterableToArrayLimit(arr, i2) {
      var _arr = [];
      var _n = true;
      var _d2 = false;
      var _e = void 0;
      try {
        for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
          _arr.push(_s.value);
          if (i2 && _arr.length === i2) break;
        }
      } catch (err) {
        _d2 = true;
        _e = err;
      } finally {
        try {
          if (!_n && _i["return"] != null) _i["return"]();
        } finally {
          if (_d2) throw _e;
        }
      }
      return _arr;
    }
    function _arrayWithHoles(arr) {
      if (Array.isArray(arr)) return arr;
    }
    var punctutationMatcher = (string2) => string2.replace(/$|( )|(?!^)(?=[A-Z])/g, "\\.?$1");
    var getListMatcher = (list6) => `(?:${list6.join("|")})\\b`;
    var getSplittingRegex = (matcher, flags) => new RegExp(`(?:^| )(${matcher}$)`, flags);
    var titles = ["mr", "mrs", "ms", "miss", "dr", "herr", "monsieur", "hr", "frau", "a v m", "admiraal", "admiral", "air cdre", "air commodore", "air marshal", "air vice marshal", "alderman", "alhaji", "ambassador", "baron", "barones", "brig", "brig gen", "brig general", "brigadier", "brigadier general", "brother", "canon", "capt", "captain", "cardinal", "cdr", "chief", "cik", "cmdr", "coach", "col", "col dr", "colonel", "commandant", "commander", "commissioner", "commodore", "comte", "comtessa", "congressman", "conseiller", "consul", "conte", "contessa", "corporal", "councillor", "count", "countess", "crown prince", "crown princess", "dame", "datin", "dato", "datuk", "datuk seri", "deacon", "deaconess", "dean", "dhr", "dipl ing", "doctor", "dott", "dott sa", "dr", "dr ing", "dra", "drs", "embajador", "embajadora", "en", "encik", "eng", "eur ing", "exma sra", "exmo sr", "f o", "father", "first lieutient", "first officer", "flt lieut", "flying officer", "fr", "frau", "fraulein", "fru", "gen", "generaal", "general", "governor", "graaf", "gravin", "group captain", "grp capt", "h e dr", "h h", "h m", "h r h", "hajah", "haji", "hajim", "her highness", "her majesty", "herr", "high chief", "his highness", "his holiness", "his majesty", "hon", "hr", "hra", "ing", "ir", "jonkheer", "judge", "justice", "khun ying", "kolonel", "lady", "lcda", "lic", "lieut", "lieut cdr", "lieut col", "lieut gen", "lord", "m", "m l", "m r", "madame", "mademoiselle", "maj gen", "major", "master", "mevrouw", "miss", "mlle", "mme", "monsieur", "monsignor", "mr", "mrs", "ms", "mstr", "nti", "pastor", "president", "prince", "princess", "princesse", "prinses", "prof", "prof dr", "prof sir", "professor", "puan", "puan sri", "rabbi", "rear admiral", "rev", "rev canon", "rev dr", "rev mother", "reverend", "rva", "senator", "sergeant", "sheikh", "sheikha", "sig", "sig na", "sig ra", "sir", "sister", "sqn ldr", "sr", "sr d", "sra", "srta", "sultan", "tan sri", "tan sri dato", "tengku", "teuku", "than puying", "the hon dr", "the hon justice", "the hon miss", "the hon mr", "the hon mrs", "the hon ms", "the hon sir", "the very rev", "toh puan", "tun", "vice admiral", "viscount", "viscountess", "wg cdr"];
    var suffixes = ["I", "II", "III", "IV", "V", "Senior", "Junior", "Jr", "Sr", "PhD", "Ph\\.D", "APR", "RPh", "PE", "MD", "MA", "DMD", "CME", "BVM", "CFRE", "CLU", "CPA", "CSC", "CSJ", "DC", "DD", "DDS", "DO", "DVM", "EdD", "Esq", "JD", "LLD", "OD", "OSB", "PC", "Ret", "RGS", "RN", "RNC", "SHCJ", "SJ", "SNJM", "SSMO", "USA", "USAF", "USAFR", "USAR", "USCG", "USMC", "USMCR", "USN", "USNR"];
    var particles = ["Vere", "Von", "Van", "De", "Del", "Della", "Di", "Da", "Pietro", "Vanden", "Du", "St.", "St", "La", "Lo", "Ter", "O", "O'", "Mac", "Fitz"];
    var titleMatcher = getListMatcher(titles.map(punctutationMatcher));
    var suffixMatcher = getListMatcher(suffixes.map(punctutationMatcher));
    var particleMatcher = getListMatcher(particles);
    var titleSplitter = new RegExp(`^((?:${titleMatcher} )*)(.*)$`, "i");
    var suffixSplitter = getSplittingRegex(`(?:${suffixMatcher}, )*(?:${suffixMatcher})`, "i");
    var particleSplitter = getSplittingRegex(`${/(?:[A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2160-\u216F\u2183\u24B6-\u24CF\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uFF21-\uFF3A]|\uD801[\uDC00-\uDC27\uDCB0-\uDCD3]|\uD803[\uDC80-\uDCB2]|\uD806[\uDCA0-\uDCBF]|\uD81B[\uDE40-\uDE5F]|\uD835[\uDC00-\uDC19\uDC34-\uDC4D\uDC68-\uDC81\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB5\uDCD0-\uDCE9\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD38\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD6C-\uDD85\uDDA0-\uDDB9\uDDD4-\uDDED\uDE08-\uDE21\uDE3C-\uDE55\uDE70-\uDE89\uDEA8-\uDEC0\uDEE2-\uDEFA\uDF1C-\uDF34\uDF56-\uDF6E\uDF90-\uDFA8\uDFCA]|\uD83A[\uDD00-\uDD21]|\uD83C[\uDD30-\uDD49\uDD50-\uDD69\uDD70-\uDD89])/.source}.*`);
    var endSplitter = getSplittingRegex(`(?:${/(?:[a-z\xAA\xB5\xBA\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02B8\u02C0\u02C1\u02E0-\u02E4\u0345\u0371\u0373\u0377\u037A-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1DBF\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u2071\u207F\u2090-\u209C\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2170-\u217F\u2184\u24D0-\u24E9\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7D\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B-\uA69D\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7F8-\uA7FA\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A]|\uD801[\uDC28-\uDC4F\uDCD8-\uDCFB]|\uD803[\uDCC0-\uDCF2]|\uD806[\uDCC0-\uDCDF]|\uD81B[\uDE60-\uDE7F]|\uD835[\uDC1A-\uDC33\uDC4E-\uDC54\uDC56-\uDC67\uDC82-\uDC9B\uDCB6-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDCEA-\uDD03\uDD1E-\uDD37\uDD52-\uDD6B\uDD86-\uDD9F\uDDBA-\uDDD3\uDDEE-\uDE07\uDE22-\uDE3B\uDE56-\uDE6F\uDE8A-\uDEA5\uDEC2-\uDEDA\uDEDC-\uDEE1\uDEFC-\uDF14\uDF16-\uDF1B\uDF36-\uDF4E\uDF50-\uDF55\uDF70-\uDF88\uDF8A-\uDF8F\uDFAA-\uDFC2\uDFC4-\uDFC9\uDFCB]|\uD83A[\uDD22-\uDD43])/.source}.*|${particleMatcher}.*|\\S*)`);
    var parseName2 = function parseName3(name3 = "") {
      if (typeof name3 !== "string") {
        name3 = name3 + "";
      }
      let start = "";
      let mid = "";
      let end = "";
      if (/[^.], /.test(name3)) {
        const parts = name3.split(", ");
        end = parts.shift();
        const suffixMatch = RegExp(suffixMatcher).exec(parts.join(", "));
        start = parts.splice(suffixMatch && suffixMatch.index !== 0 ? 0 : -1, 1)[0];
        mid = parts.join(", ");
      } else {
        const parts = name3.split(suffixSplitter, 2);
        const main2 = parts.shift().split(endSplitter, 2);
        start = main2[0];
        end = main2[1];
        mid = parts.pop();
      }
      const _start$match = start.match(titleSplitter), _start$match2 = _slicedToArray(_start$match, 3), droppingParticle = _start$match2[1], given = _start$match2[2];
      const suffix = mid;
      const _end$split$reverse = end.split(particleSplitter, 2).reverse(), _end$split$reverse2 = _slicedToArray(_end$split$reverse, 2), family = _end$split$reverse2[0], nonDroppingParticle = _end$split$reverse2[1];
      if (!given && family) {
        return family.includes(" ") ? {
          literal: family
        } : {
          family
        };
      } else if (family) {
        const nameObject = {
          "dropping-particle": droppingParticle,
          given,
          suffix,
          "non-dropping-particle": nonDroppingParticle,
          family
        };
        Object.keys(nameObject).forEach((key2) => {
          if (!nameObject[key2]) {
            delete nameObject[key2];
          }
        });
        return nameObject;
      } else {
        return {
          literal: name3
        };
      }
    };
    exports2.default = exports2.parse = parseName2;
    var scope2 = "@name";
    exports2.scope = scope2;
    var types6 = "@name";
    exports2.types = types6;
  }
});

// ../../node_modules/@citation-js/name/lib/output.js
var require_output = __commonJS({
  "../../node_modules/@citation-js/name/lib/output.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    var startParts = ["dropping-particle", "given"];
    var suffixParts = ["suffix"];
    var endParts = ["non-dropping-particle", "family"];
    var getName = function getName2(name3, reversed = false) {
      const get = (parts) => parts.map((entry) => name3[entry] || "").filter(Boolean).join(" ");
      if (name3.literal) {
        return name3.literal;
      } else if (reversed) {
        const suffixPart = get(suffixParts) ? `, ${get(suffixParts)}` : "";
        const startPart = get(startParts) ? `, ${get(startParts)}` : "";
        return get(endParts) + suffixPart + startPart;
      } else {
        return `${get([...startParts, ...suffixParts, ...endParts])}`;
      }
    };
    var _default2 = getName;
    exports2.default = _default2;
  }
});

// ../../node_modules/@citation-js/name/lib/index.js
var require_lib2 = __commonJS({
  "../../node_modules/@citation-js/name/lib/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    Object.defineProperty(exports2, "parse", {
      enumerable: true,
      get: function get() {
        return _input.default;
      }
    });
    Object.defineProperty(exports2, "format", {
      enumerable: true,
      get: function get() {
        return _output.default;
      }
    });
    var _input = _interopRequireDefault3(require_input());
    var _output = _interopRequireDefault3(require_output());
    function _interopRequireDefault3(obj) {
      return obj && obj.__esModule ? obj : { default: obj };
    }
  }
});

// ../../node_modules/@citation-js/core/lib/plugins/input/csl.js
var require_csl = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugins/input/csl.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.clean = parseCsl;
    var _name2 = require_lib2();
    function ownKeys(e2, r2) {
      var t2 = Object.keys(e2);
      if (Object.getOwnPropertySymbols) {
        var o = Object.getOwnPropertySymbols(e2);
        r2 && (o = o.filter(function(r3) {
          return Object.getOwnPropertyDescriptor(e2, r3).enumerable;
        })), t2.push.apply(t2, o);
      }
      return t2;
    }
    function _objectSpread(e2) {
      for (var r2 = 1; r2 < arguments.length; r2++) {
        var t2 = null != arguments[r2] ? arguments[r2] : {};
        r2 % 2 ? ownKeys(Object(t2), true).forEach(function(r3) {
          _defineProperty(e2, r3, t2[r3]);
        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t2)) : ownKeys(Object(t2)).forEach(function(r3) {
          Object.defineProperty(e2, r3, Object.getOwnPropertyDescriptor(t2, r3));
        });
      }
      return e2;
    }
    function _defineProperty(e2, r2, t2) {
      return (r2 = _toPropertyKey(r2)) in e2 ? Object.defineProperty(e2, r2, { value: t2, enumerable: true, configurable: true, writable: true }) : e2[r2] = t2, e2;
    }
    function _toPropertyKey(t2) {
      var i2 = _toPrimitive(t2, "string");
      return "symbol" == typeof i2 ? i2 : i2 + "";
    }
    function _toPrimitive(t2, r2) {
      if ("object" != typeof t2 || !t2) return t2;
      var e2 = t2[Symbol.toPrimitive];
      if (void 0 !== e2) {
        var i2 = e2.call(t2, r2 || "default");
        if ("object" != typeof i2) return i2;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return ("string" === r2 ? String : Number)(t2);
    }
    var NAME2 = 1;
    var NAME_LIST = 2;
    var DATE = 3;
    var TYPE2 = 4;
    var entryTypes = {
      article: true,
      "article-journal": true,
      "article-magazine": true,
      "article-newspaper": true,
      bill: true,
      book: true,
      broadcast: true,
      chapter: true,
      classic: true,
      collection: true,
      dataset: true,
      document: true,
      entry: true,
      "entry-dictionary": true,
      "entry-encyclopedia": true,
      event: true,
      figure: true,
      graphic: true,
      hearing: true,
      interview: true,
      legal_case: true,
      legislation: true,
      manuscript: true,
      map: true,
      motion_picture: true,
      musical_score: true,
      pamphlet: true,
      "paper-conference": true,
      patent: true,
      performance: true,
      periodical: true,
      personal_communication: true,
      post: true,
      "post-weblog": true,
      regulation: true,
      report: true,
      review: true,
      "review-book": true,
      software: true,
      song: true,
      speech: true,
      standard: true,
      thesis: true,
      treaty: true,
      webpage: true,
      "journal-article": "article-journal",
      "book-chapter": "chapter",
      "posted-content": "manuscript",
      "proceedings-article": "paper-conference",
      dissertation: "thesis"
    };
    var fieldTypes = {
      author: NAME_LIST,
      chair: NAME_LIST,
      "collection-editor": NAME_LIST,
      compiler: NAME_LIST,
      composer: NAME_LIST,
      "container-author": NAME_LIST,
      contributor: NAME_LIST,
      curator: NAME_LIST,
      director: NAME_LIST,
      editor: NAME_LIST,
      "editorial-director": NAME_LIST,
      "executive-producer": NAME_LIST,
      guest: NAME_LIST,
      host: NAME_LIST,
      interviewer: NAME_LIST,
      illustrator: NAME_LIST,
      narrator: NAME_LIST,
      organizer: NAME_LIST,
      "original-author": NAME_LIST,
      performer: NAME_LIST,
      producer: NAME_LIST,
      "reviewed-author": NAME_LIST,
      recipient: NAME_LIST,
      "script-writer": NAME_LIST,
      "series-creator": NAME_LIST,
      translator: NAME_LIST,
      accessed: DATE,
      "available-date": DATE,
      container: DATE,
      "event-date": DATE,
      issued: DATE,
      "original-date": DATE,
      submitted: DATE,
      type: TYPE2,
      categories: "object",
      custom: "object",
      id: ["string", "number"],
      language: "string",
      journalAbbreviation: "string",
      shortTitle: "string",
      abstract: "string",
      annote: "string",
      archive: "string",
      archive_collection: "string",
      archive_location: "string",
      "archive-place": "string",
      authority: "string",
      "call-number": "string",
      "chapter-number": "string",
      "citation-number": "string",
      "citation-key": "string",
      "citation-label": "string",
      "collection-number": "string",
      "collection-title": "string",
      "container-title": "string",
      "container-title-short": "string",
      dimensions: "string",
      division: "string",
      DOI: "string",
      edition: ["string", "number"],
      event: "string",
      "event-title": "string",
      "event-place": "string",
      "first-reference-note-number": "string",
      genre: "string",
      ISBN: "string",
      ISSN: "string",
      issue: ["string", "number"],
      jurisdiction: "string",
      keyword: "string",
      locator: "string",
      medium: "string",
      note: "string",
      number: ["string", "number"],
      "number-of-pages": "string",
      "number-of-volumes": ["string", "number"],
      "original-publisher": "string",
      "original-publisher-place": "string",
      "original-title": "string",
      page: "string",
      "page-first": "string",
      "part-number": ["string", "number"],
      "part-title": "string",
      PMCID: "string",
      PMID: "string",
      printing: "string",
      publisher: "string",
      "publisher-place": "string",
      references: "string",
      "reviewed-title": "string",
      "reviewed-genre": "string",
      scale: "string",
      section: "string",
      source: "string",
      status: "string",
      supplement: ["string", "number"],
      title: "string",
      "title-short": "string",
      URL: "string",
      version: "string",
      volume: ["string", "number"],
      "volume-title": "string",
      "volume-title-short": "string",
      "year-suffix": "string"
    };
    function correctName(name3, bestGuessConversions) {
      if (typeof name3 === "object" && name3 !== null && (name3.literal || name3.given || name3.family)) {
        if (name3.ORCID || name3.orcid || name3._ORCID) {
          name3 = _objectSpread({
            _orcid: name3.ORCID || name3.orcid || name3._ORCID
          }, name3);
          delete name3.ORCID;
          delete name3.orcid;
          delete name3._ORCID;
        }
        return name3;
      } else if (!bestGuessConversions) {
        return void 0;
      } else if (typeof name3 === "string") {
        return (0, _name2.parse)(name3);
      }
    }
    function correctNameList(nameList, bestGuessConversions) {
      if (nameList instanceof Array) {
        const names = nameList.map((name3) => correctName(name3, bestGuessConversions)).filter(Boolean);
        return names.length ? names : void 0;
      }
    }
    function correctDateParts(dateParts, bestGuessConversions) {
      if (dateParts.every((part) => typeof part === "number")) {
        return dateParts;
      } else if (!bestGuessConversions || dateParts.some((part) => isNaN(parseInt(part)))) {
        return void 0;
      } else {
        return dateParts.map((part) => parseInt(part));
      }
    }
    function correctDate(date, bestGuessConversions) {
      const dp = "date-parts";
      if (typeof date !== "object" || date === null) {
        return void 0;
      } else if (date[dp] instanceof Array && date[dp].every((part) => part instanceof Array)) {
        const range = date[dp].map((dateParts) => correctDateParts(dateParts, bestGuessConversions)).filter(Boolean);
        return range.length ? _objectSpread(_objectSpread({}, date), {}, {
          "date-parts": range
        }) : void 0;
      } else if (date instanceof Array && date.every((part) => part[dp] instanceof Array)) {
        const range = date.map((dateParts) => correctDateParts(dateParts[dp], bestGuessConversions)).filter(Boolean);
        return range.length ? {
          "date-parts": range
        } : void 0;
      } else if (date[dp] instanceof Array) {
        const dateParts = correctDateParts(date[dp], bestGuessConversions);
        return dateParts && {
          "date-parts": [dateParts]
        };
      } else if ("literal" in date || "raw" in date) {
        return date;
      }
    }
    function correctType(type2, bestGuessConversions) {
      type2 = correctField("language", type2, bestGuessConversions);
      if (entryTypes[type2] === true) {
        return type2;
      }
      if (bestGuessConversions) {
        if (type2 in entryTypes) {
          return entryTypes[type2];
        } else if (type2.toLowerCase() !== type2) {
          return correctType(type2.toLowerCase(), bestGuessConversions);
        }
      }
      return void 0;
    }
    function correctField(fieldName, value, bestGuessConversions) {
      const fieldType = [].concat(fieldTypes[fieldName]);
      switch (fieldTypes[fieldName]) {
        case NAME2:
          return correctName(value, bestGuessConversions);
        case NAME_LIST:
          return correctNameList(value, bestGuessConversions);
        case DATE:
          return correctDate(value, bestGuessConversions);
        case TYPE2:
          return correctType(value, bestGuessConversions);
      }
      if (bestGuessConversions) {
        if (typeof value === "string" && fieldType.includes("number") && !fieldType.includes("string") && !isNaN(+value)) {
          return parseFloat(value);
        } else if (typeof value === "number" && fieldType.includes("string") && !fieldType.includes("number")) {
          return value.toString();
        } else if (Array.isArray(value) && value.length) {
          return correctField(fieldName, value[0], bestGuessConversions);
        }
      }
      if (fieldType.includes(typeof value)) {
        return value;
      }
    }
    function parseCsl(data, bestGuessConversions = true) {
      return data.map(function(entry) {
        const clean3 = {};
        for (const field in entry) {
          const correction = correctField(field, entry[field], bestGuessConversions);
          if (correction !== void 0) {
            clean3[field] = correction;
          }
        }
        return clean3;
      });
    }
  }
});

// ../../node_modules/@citation-js/core/lib/plugins/input/data.js
var require_data = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugins/input/data.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.addDataParser = addDataParser;
    exports2.data = data;
    exports2.dataAsync = dataAsync;
    exports2.hasDataParser = hasDataParser;
    exports2.listDataParser = listDataParser;
    exports2.removeDataParser = removeDataParser;
    var _type3 = require_type();
    var parsers = {};
    var asyncParsers = {};
    var nativeParsers = {
      "@csl/object": (input3) => [input3],
      "@csl/list+object": (input3) => input3,
      "@else/list+object": (input3) => input3.map((item) => {
        const type2 = (0, _type3.type)(item);
        return data(item, type2);
      }).flat(),
      "@invalid": () => {
        throw new Error("This format is not supported or recognized");
      }
    };
    var nativeAsyncParsers = {
      "@else/list+object": (input3) => Promise.all(input3.map((item) => {
        const type2 = (0, _type3.type)(item);
        return dataAsync(item, type2);
      })).then((input4) => input4.flat())
    };
    function data(input3, type2) {
      if (typeof parsers[type2] === "function") {
        return parsers[type2](input3);
      } else if (typeof nativeParsers[type2] === "function") {
        return nativeParsers[type2](input3);
      } else {
        throw new TypeError(`No synchronous parser found for ${type2}`);
      }
    }
    async function dataAsync(input3, type2) {
      if (typeof asyncParsers[type2] === "function") {
        return asyncParsers[type2](input3);
      } else if (typeof nativeAsyncParsers[type2] === "function") {
        return nativeAsyncParsers[type2](input3);
      } else if (hasDataParser(type2, false)) {
        return data(input3, type2);
      } else {
        throw new TypeError(`No parser found for ${type2}`);
      }
    }
    function addDataParser(format, {
      parser: parser3,
      async
    }) {
      if (async) {
        asyncParsers[format] = parser3;
      } else {
        parsers[format] = parser3;
      }
    }
    function hasDataParser(type2, async) {
      return async ? asyncParsers[type2] || nativeAsyncParsers[type2] : parsers[type2] || nativeParsers[type2];
    }
    function removeDataParser(type2, async) {
      delete (async ? asyncParsers : parsers)[type2];
    }
    function listDataParser(async) {
      return Object.keys(async ? asyncParsers : parsers);
    }
  }
});

// ../../node_modules/@citation-js/core/lib/plugins/input/register.js
var require_register = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugins/input/register.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.add = add2;
    exports2.get = get;
    exports2.has = has3;
    exports2.list = list6;
    exports2.remove = remove3;
    var _parser = require_parser2();
    var _type3 = require_type();
    var _data = require_data();
    var formats = {};
    function add2(format, parsers) {
      const formatParser = new _parser.FormatParser(format, parsers);
      formatParser.validate();
      const index4 = formats[format] || (formats[format] = {});
      if (formatParser.typeParser) {
        (0, _type3.addTypeParser)(format, formatParser.typeParser);
        index4.type = true;
      }
      if (formatParser.dataParser) {
        (0, _data.addDataParser)(format, formatParser.dataParser);
        index4.data = true;
      }
      if (formatParser.asyncDataParser) {
        (0, _data.addDataParser)(format, formatParser.asyncDataParser);
        index4.asyncData = true;
      }
      if (parsers.outputs) {
        index4.outputs = parsers.outputs;
      }
    }
    function get(format) {
      return formats[format];
    }
    function remove3(format) {
      const index4 = formats[format];
      if (!index4) {
        return;
      }
      if (index4.type) {
        (0, _type3.removeTypeParser)(format);
      }
      if (index4.data) {
        (0, _data.removeDataParser)(format);
      }
      if (index4.asyncData) {
        (0, _data.removeDataParser)(format, true);
      }
      delete formats[format];
    }
    function has3(format) {
      return format in formats;
    }
    function list6() {
      return Object.keys(formats);
    }
  }
});

// ../../node_modules/@citation-js/core/lib/util/csl.js
var require_csl2 = __commonJS({
  "../../node_modules/@citation-js/core/lib/util/csl.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.downgradeCsl = downgradeCsl;
    exports2.upgradeCsl = upgradeCsl;
    function ownKeys(e2, r2) {
      var t2 = Object.keys(e2);
      if (Object.getOwnPropertySymbols) {
        var o = Object.getOwnPropertySymbols(e2);
        r2 && (o = o.filter(function(r3) {
          return Object.getOwnPropertyDescriptor(e2, r3).enumerable;
        })), t2.push.apply(t2, o);
      }
      return t2;
    }
    function _objectSpread(e2) {
      for (var r2 = 1; r2 < arguments.length; r2++) {
        var t2 = null != arguments[r2] ? arguments[r2] : {};
        r2 % 2 ? ownKeys(Object(t2), true).forEach(function(r3) {
          _defineProperty(e2, r3, t2[r3]);
        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t2)) : ownKeys(Object(t2)).forEach(function(r3) {
          Object.defineProperty(e2, r3, Object.getOwnPropertyDescriptor(t2, r3));
        });
      }
      return e2;
    }
    function _defineProperty(e2, r2, t2) {
      return (r2 = _toPropertyKey(r2)) in e2 ? Object.defineProperty(e2, r2, { value: t2, enumerable: true, configurable: true, writable: true }) : e2[r2] = t2, e2;
    }
    function _toPropertyKey(t2) {
      var i2 = _toPrimitive(t2, "string");
      return "symbol" == typeof i2 ? i2 : i2 + "";
    }
    function _toPrimitive(t2, r2) {
      if ("object" != typeof t2 || !t2) return t2;
      var e2 = t2[Symbol.toPrimitive];
      if (void 0 !== e2) {
        var i2 = e2.call(t2, r2 || "default");
        if ("object" != typeof i2) return i2;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return ("string" === r2 ? String : Number)(t2);
    }
    function upgradeCsl(item) {
      if (Array.isArray(item)) {
        return item.map(upgradeCsl);
      }
      item = _objectSpread({}, item);
      if ("event" in item) {
        item["event-title"] = item.event;
        delete item.event;
      }
      if (item.type === "book" && "version" in item) {
        item.type = "software";
      }
      return item;
    }
    function downgradeCsl(item) {
      if (Array.isArray(item)) {
        return item.map(downgradeCsl);
      }
      item = _objectSpread({}, item);
      if ("event-title" in item) {
        item.event = item["event-title"];
        delete item["event-title"];
      }
      if (item.type === "software") {
        item.type = "book";
      }
      return item;
    }
  }
});

// ../../node_modules/@citation-js/core/lib/util/deepCopy.js
var require_deepCopy = __commonJS({
  "../../node_modules/@citation-js/core/lib/util/deepCopy.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.deepCopy = deepCopy;
    exports2.default = void 0;
    function deepCopy(value, seen = /* @__PURE__ */ new Set()) {
      if (typeof value !== "object" || value === null || value.constructor !== Object && value.constructor !== Array) {
        return value;
      }
      if (seen.has(value)) {
        throw new TypeError("Recursively copying circular structure");
      }
      seen.add(value);
      let copy2;
      if (value.constructor === Array) {
        copy2 = value.map((value2) => deepCopy(value2, seen));
      } else {
        const object = {};
        for (const key2 in value) {
          object[key2] = deepCopy(value[key2], seen);
        }
        copy2 = object;
      }
      seen.delete(value);
      return copy2;
    }
    var _default2 = exports2.default = deepCopy;
  }
});

// ../../node_modules/webidl-conversions/lib/index.js
var require_lib3 = __commonJS({
  "../../node_modules/webidl-conversions/lib/index.js"(exports2, module2) {
    "use strict";
    var conversions = {};
    module2.exports = conversions;
    function sign(x2) {
      return x2 < 0 ? -1 : 1;
    }
    function evenRound(x2) {
      if (x2 % 1 === 0.5 && (x2 & 1) === 0) {
        return Math.floor(x2);
      } else {
        return Math.round(x2);
      }
    }
    function createNumberConversion(bitLength, typeOpts) {
      if (!typeOpts.unsigned) {
        --bitLength;
      }
      const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);
      const upperBound = Math.pow(2, bitLength) - 1;
      const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);
      const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);
      return function(V, opts) {
        if (!opts) opts = {};
        let x2 = +V;
        if (opts.enforceRange) {
          if (!Number.isFinite(x2)) {
            throw new TypeError("Argument is not a finite number");
          }
          x2 = sign(x2) * Math.floor(Math.abs(x2));
          if (x2 < lowerBound || x2 > upperBound) {
            throw new TypeError("Argument is not in byte range");
          }
          return x2;
        }
        if (!isNaN(x2) && opts.clamp) {
          x2 = evenRound(x2);
          if (x2 < lowerBound) x2 = lowerBound;
          if (x2 > upperBound) x2 = upperBound;
          return x2;
        }
        if (!Number.isFinite(x2) || x2 === 0) {
          return 0;
        }
        x2 = sign(x2) * Math.floor(Math.abs(x2));
        x2 = x2 % moduloVal;
        if (!typeOpts.unsigned && x2 >= moduloBound) {
          return x2 - moduloVal;
        } else if (typeOpts.unsigned) {
          if (x2 < 0) {
            x2 += moduloVal;
          } else if (x2 === -0) {
            return 0;
          }
        }
        return x2;
      };
    }
    conversions["void"] = function() {
      return void 0;
    };
    conversions["boolean"] = function(val) {
      return !!val;
    };
    conversions["byte"] = createNumberConversion(8, { unsigned: false });
    conversions["octet"] = createNumberConversion(8, { unsigned: true });
    conversions["short"] = createNumberConversion(16, { unsigned: false });
    conversions["unsigned short"] = createNumberConversion(16, { unsigned: true });
    conversions["long"] = createNumberConversion(32, { unsigned: false });
    conversions["unsigned long"] = createNumberConversion(32, { unsigned: true });
    conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });
    conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });
    conversions["double"] = function(V) {
      const x2 = +V;
      if (!Number.isFinite(x2)) {
        throw new TypeError("Argument is not a finite floating-point value");
      }
      return x2;
    };
    conversions["unrestricted double"] = function(V) {
      const x2 = +V;
      if (isNaN(x2)) {
        throw new TypeError("Argument is NaN");
      }
      return x2;
    };
    conversions["float"] = conversions["double"];
    conversions["unrestricted float"] = conversions["unrestricted double"];
    conversions["DOMString"] = function(V, opts) {
      if (!opts) opts = {};
      if (opts.treatNullAsEmptyString && V === null) {
        return "";
      }
      return String(V);
    };
    conversions["ByteString"] = function(V, opts) {
      const x2 = String(V);
      let c = void 0;
      for (let i2 = 0; (c = x2.codePointAt(i2)) !== void 0; ++i2) {
        if (c > 255) {
          throw new TypeError("Argument is not a valid bytestring");
        }
      }
      return x2;
    };
    conversions["USVString"] = function(V) {
      const S3 = String(V);
      const n = S3.length;
      const U = [];
      for (let i2 = 0; i2 < n; ++i2) {
        const c = S3.charCodeAt(i2);
        if (c < 55296 || c > 57343) {
          U.push(String.fromCodePoint(c));
        } else if (56320 <= c && c <= 57343) {
          U.push(String.fromCodePoint(65533));
        } else {
          if (i2 === n - 1) {
            U.push(String.fromCodePoint(65533));
          } else {
            const d = S3.charCodeAt(i2 + 1);
            if (56320 <= d && d <= 57343) {
              const a2 = c & 1023;
              const b = d & 1023;
              U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a2 + b));
              ++i2;
            } else {
              U.push(String.fromCodePoint(65533));
            }
          }
        }
      }
      return U.join("");
    };
    conversions["Date"] = function(V, opts) {
      if (!(V instanceof Date)) {
        throw new TypeError("Argument is not a Date object");
      }
      if (isNaN(V)) {
        return void 0;
      }
      return V;
    };
    conversions["RegExp"] = function(V, opts) {
      if (!(V instanceof RegExp)) {
        V = new RegExp(V);
      }
      return V;
    };
  }
});

// ../../node_modules/whatwg-url/lib/utils.js
var require_utils5 = __commonJS({
  "../../node_modules/whatwg-url/lib/utils.js"(exports2, module2) {
    "use strict";
    module2.exports.mixin = function mixin(target, source2) {
      const keys2 = Object.getOwnPropertyNames(source2);
      for (let i2 = 0; i2 < keys2.length; ++i2) {
        Object.defineProperty(target, keys2[i2], Object.getOwnPropertyDescriptor(source2, keys2[i2]));
      }
    };
    module2.exports.wrapperSymbol = Symbol("wrapper");
    module2.exports.implSymbol = Symbol("impl");
    module2.exports.wrapperForImpl = function(impl) {
      return impl[module2.exports.wrapperSymbol];
    };
    module2.exports.implForWrapper = function(wrapper) {
      return wrapper[module2.exports.implSymbol];
    };
  }
});

// ../../node_modules/tr46/lib/mappingTable.json
var require_mappingTable = __commonJS({
  "../../node_modules/tr46/lib/mappingTable.json"(exports2, module2) {
    module2.exports = [[[0, 44], "disallowed_STD3_valid"], [[45, 46], "valid"], [[47, 47], "disallowed_STD3_valid"], [[48, 57], "valid"], [[58, 64], "disallowed_STD3_valid"], [[65, 65], "mapped", [97]], [[66, 66], "mapped", [98]], [[67, 67], "mapped", [99]], [[68, 68], "mapped", [100]], [[69, 69], "mapped", [101]], [[70, 70], "mapped", [102]], [[71, 71], "mapped", [103]], [[72, 72], "mapped", [104]], [[73, 73], "mapped", [105]], [[74, 74], "mapped", [106]], [[75, 75], "mapped", [107]], [[76, 76], "mapped", [108]], [[77, 77], "mapped", [109]], [[78, 78], "mapped", [110]], [[79, 79], "mapped", [111]], [[80, 80], "mapped", [112]], [[81, 81], "mapped", [113]], [[82, 82], "mapped", [114]], [[83, 83], "mapped", [115]], [[84, 84], "mapped", [116]], [[85, 85], "mapped", [117]], [[86, 86], "mapped", [118]], [[87, 87], "mapped", [119]], [[88, 88], "mapped", [120]], [[89, 89], "mapped", [121]], [[90, 90], "mapped", [122]], [[91, 96], "disallowed_STD3_valid"], [[97, 122], "valid"], [[123, 127], "disallowed_STD3_valid"], [[128, 159], "disallowed"], [[160, 160], "disallowed_STD3_mapped", [32]], [[161, 167], "valid", [], "NV8"], [[168, 168], "disallowed_STD3_mapped", [32, 776]], [[169, 169], "valid", [], "NV8"], [[170, 170], "mapped", [97]], [[171, 172], "valid", [], "NV8"], [[173, 173], "ignored"], [[174, 174], "valid", [], "NV8"], [[175, 175], "disallowed_STD3_mapped", [32, 772]], [[176, 177], "valid", [], "NV8"], [[178, 178], "mapped", [50]], [[179, 179], "mapped", [51]], [[180, 180], "disallowed_STD3_mapped", [32, 769]], [[181, 181], "mapped", [956]], [[182, 182], "valid", [], "NV8"], [[183, 183], "valid"], [[184, 184], "disallowed_STD3_mapped", [32, 807]], [[185, 185], "mapped", [49]], [[186, 186], "mapped", [111]], [[187, 187], "valid", [], "NV8"], [[188, 188], "mapped", [49, 8260, 52]], [[189, 189], "mapped", [49, 8260, 50]], [[190, 190], "mapped", [51, 8260, 52]], [[191, 191], "valid", [], "NV8"], [[192, 192], "mapped", [224]], [[193, 193], "mapped", [225]], [[194, 194], "mapped", [226]], [[195, 195], "mapped", [227]], [[196, 196], "mapped", [228]], [[197, 197], "mapped", [229]], [[198, 198], "mapped", [230]], [[199, 199], "mapped", [231]], [[200, 200], "mapped", [232]], [[201, 201], "mapped", [233]], [[202, 202], "mapped", [234]], [[203, 203], "mapped", [235]], [[204, 204], "mapped", [236]], [[205, 205], "mapped", [237]], [[206, 206], "mapped", [238]], [[207, 207], "mapped", [239]], [[208, 208], "mapped", [240]], [[209, 209], "mapped", [241]], [[210, 210], "mapped", [242]], [[211, 211], "mapped", [243]], [[212, 212], "mapped", [244]], [[213, 213], "mapped", [245]], [[214, 214], "mapped", [246]], [[215, 215], "valid", [], "NV8"], [[216, 216], "mapped", [248]], [[217, 217], "mapped", [249]], [[218, 218], "mapped", [250]], [[219, 219], "mapped", [251]], [[220, 220], "mapped", [252]], [[221, 221], "mapped", [253]], [[222, 222], "mapped", [254]], [[223, 223], "deviation", [115, 115]], [[224, 246], "valid"], [[247, 247], "valid", [], "NV8"], [[248, 255], "valid"], [[256, 256], "mapped", [257]], [[257, 257], "valid"], [[258, 258], "mapped", [259]], [[259, 259], "valid"], [[260, 260], "mapped", [261]], [[261, 261], "valid"], [[262, 262], "mapped", [263]], [[263, 263], "valid"], [[264, 264], "mapped", [265]], [[265, 265], "valid"], [[266, 266], "mapped", [267]], [[267, 267], "valid"], [[268, 268], "mapped", [269]], [[269, 269], "valid"], [[270, 270], "mapped", [271]], [[271, 271], "valid"], [[272, 272], "mapped", [273]], [[273, 273], "valid"], [[274, 274], "mapped", [275]], [[275, 275], "valid"], [[276, 276], "mapped", [277]], [[277, 277], "valid"], [[278, 278], "mapped", [279]], [[279, 279], "valid"], [[280, 280], "mapped", [281]], [[281, 281], "valid"], [[282, 282], "mapped", [283]], [[283, 283], "valid"], [[284, 284], "mapped", [285]], [[285, 285], "valid"], [[286, 286], "mapped", [287]], [[287, 287], "valid"], [[288, 288], "mapped", [289]], [[289, 289], "valid"], [[290, 290], "mapped", [291]], [[291, 291], "valid"], [[292, 292], "mapped", [293]], [[293, 293], "valid"], [[294, 294], "mapped", [295]], [[295, 295], "valid"], [[296, 296], "mapped", [297]], [[297, 297], "valid"], [[298, 298], "mapped", [299]], [[299, 299], "valid"], [[300, 300], "mapped", [301]], [[301, 301], "valid"], [[302, 302], "mapped", [303]], [[303, 303], "valid"], [[304, 304], "mapped", [105, 775]], [[305, 305], "valid"], [[306, 307], "mapped", [105, 106]], [[308, 308], "mapped", [309]], [[309, 309], "valid"], [[310, 310], "mapped", [311]], [[311, 312], "valid"], [[313, 313], "mapped", [314]], [[314, 314], "valid"], [[315, 315], "mapped", [316]], [[316, 316], "valid"], [[317, 317], "mapped", [318]], [[318, 318], "valid"], [[319, 320], "mapped", [108, 183]], [[321, 321], "mapped", [322]], [[322, 322], "valid"], [[323, 323], "mapped", [324]], [[324, 324], "valid"], [[325, 325], "mapped", [326]], [[326, 326], "valid"], [[327, 327], "mapped", [328]], [[328, 328], "valid"], [[329, 329], "mapped", [700, 110]], [[330, 330], "mapped", [331]], [[331, 331], "valid"], [[332, 332], "mapped", [333]], [[333, 333], "valid"], [[334, 334], "mapped", [335]], [[335, 335], "valid"], [[336, 336], "mapped", [337]], [[337, 337], "valid"], [[338, 338], "mapped", [339]], [[339, 339], "valid"], [[340, 340], "mapped", [341]], [[341, 341], "valid"], [[342, 342], "mapped", [343]], [[343, 343], "valid"], [[344, 344], "mapped", [345]], [[345, 345], "valid"], [[346, 346], "mapped", [347]], [[347, 347], "valid"], [[348, 348], "mapped", [349]], [[349, 349], "valid"], [[350, 350], "mapped", [351]], [[351, 351], "valid"], [[352, 352], "mapped", [353]], [[353, 353], "valid"], [[354, 354], "mapped", [355]], [[355, 355], "valid"], [[356, 356], "mapped", [357]], [[357, 357], "valid"], [[358, 358], "mapped", [359]], [[359, 359], "valid"], [[360, 360], "mapped", [361]], [[361, 361], "valid"], [[362, 362], "mapped", [363]], [[363, 363], "valid"], [[364, 364], "mapped", [365]], [[365, 365], "valid"], [[366, 366], "mapped", [367]], [[367, 367], "valid"], [[368, 368], "mapped", [369]], [[369, 369], "valid"], [[370, 370], "mapped", [371]], [[371, 371], "valid"], [[372, 372], "mapped", [373]], [[373, 373], "valid"], [[374, 374], "mapped", [375]], [[375, 375], "valid"], [[376, 376], "mapped", [255]], [[377, 377], "mapped", [378]], [[378, 378], "valid"], [[379, 379], "mapped", [380]], [[380, 380], "valid"], [[381, 381], "mapped", [382]], [[382, 382], "valid"], [[383, 383], "mapped", [115]], [[384, 384], "valid"], [[385, 385], "mapped", [595]], [[386, 386], "mapped", [387]], [[387, 387], "valid"], [[388, 388], "mapped", [389]], [[389, 389], "valid"], [[390, 390], "mapped", [596]], [[391, 391], "mapped", [392]], [[392, 392], "valid"], [[393, 393], "mapped", [598]], [[394, 394], "mapped", [599]], [[395, 395], "mapped", [396]], [[396, 397], "valid"], [[398, 398], "mapped", [477]], [[399, 399], "mapped", [601]], [[400, 400], "mapped", [603]], [[401, 401], "mapped", [402]], [[402, 402], "valid"], [[403, 403], "mapped", [608]], [[404, 404], "mapped", [611]], [[405, 405], "valid"], [[406, 406], "mapped", [617]], [[407, 407], "mapped", [616]], [[408, 408], "mapped", [409]], [[409, 411], "valid"], [[412, 412], "mapped", [623]], [[413, 413], "mapped", [626]], [[414, 414], "valid"], [[415, 415], "mapped", [629]], [[416, 416], "mapped", [417]], [[417, 417], "valid"], [[418, 418], "mapped", [419]], [[419, 419], "valid"], [[420, 420], "mapped", [421]], [[421, 421], "valid"], [[422, 422], "mapped", [640]], [[423, 423], "mapped", [424]], [[424, 424], "valid"], [[425, 425], "mapped", [643]], [[426, 427], "valid"], [[428, 428], "mapped", [429]], [[429, 429], "valid"], [[430, 430], "mapped", [648]], [[431, 431], "mapped", [432]], [[432, 432], "valid"], [[433, 433], "mapped", [650]], [[434, 434], "mapped", [651]], [[435, 435], "mapped", [436]], [[436, 436], "valid"], [[437, 437], "mapped", [438]], [[438, 438], "valid"], [[439, 439], "mapped", [658]], [[440, 440], "mapped", [441]], [[441, 443], "valid"], [[444, 444], "mapped", [445]], [[445, 451], "valid"], [[452, 454], "mapped", [100, 382]], [[455, 457], "mapped", [108, 106]], [[458, 460], "mapped", [110, 106]], [[461, 461], "mapped", [462]], [[462, 462], "valid"], [[463, 463], "mapped", [464]], [[464, 464], "valid"], [[465, 465], "mapped", [466]], [[466, 466], "valid"], [[467, 467], "mapped", [468]], [[468, 468], "valid"], [[469, 469], "mapped", [470]], [[470, 470], "valid"], [[471, 471], "mapped", [472]], [[472, 472], "valid"], [[473, 473], "mapped", [474]], [[474, 474], "valid"], [[475, 475], "mapped", [476]], [[476, 477], "valid"], [[478, 478], "mapped", [479]], [[479, 479], "valid"], [[480, 480], "mapped", [481]], [[481, 481], "valid"], [[482, 482], "mapped", [483]], [[483, 483], "valid"], [[484, 484], "mapped", [485]], [[485, 485], "valid"], [[486, 486], "mapped", [487]], [[487, 487], "valid"], [[488, 488], "mapped", [489]], [[489, 489], "valid"], [[490, 490], "mapped", [491]], [[491, 491], "valid"], [[492, 492], "mapped", [493]], [[493, 493], "valid"], [[494, 494], "mapped", [495]], [[495, 496], "valid"], [[497, 499], "mapped", [100, 122]], [[500, 500], "mapped", [501]], [[501, 501], "valid"], [[502, 502], "mapped", [405]], [[503, 503], "mapped", [447]], [[504, 504], "mapped", [505]], [[505, 505], "valid"], [[506, 506], "mapped", [507]], [[507, 507], "valid"], [[508, 508], "mapped", [509]], [[509, 509], "valid"], [[510, 510], "mapped", [511]], [[511, 511], "valid"], [[512, 512], "mapped", [513]], [[513, 513], "valid"], [[514, 514], "mapped", [515]], [[515, 515], "valid"], [[516, 516], "mapped", [517]], [[517, 517], "valid"], [[518, 518], "mapped", [519]], [[519, 519], "valid"], [[520, 520], "mapped", [521]], [[521, 521], "valid"], [[522, 522], "mapped", [523]], [[523, 523], "valid"], [[524, 524], "mapped", [525]], [[525, 525], "valid"], [[526, 526], "mapped", [527]], [[527, 527], "valid"], [[528, 528], "mapped", [529]], [[529, 529], "valid"], [[530, 530], "mapped", [531]], [[531, 531], "valid"], [[532, 532], "mapped", [533]], [[533, 533], "valid"], [[534, 534], "mapped", [535]], [[535, 535], "valid"], [[536, 536], "mapped", [537]], [[537, 537], "valid"], [[538, 538], "mapped", [539]], [[539, 539], "valid"], [[540, 540], "mapped", [541]], [[541, 541], "valid"], [[542, 542], "mapped", [543]], [[543, 543], "valid"], [[544, 544], "mapped", [414]], [[545, 545], "valid"], [[546, 546], "mapped", [547]], [[547, 547], "valid"], [[548, 548], "mapped", [549]], [[549, 549], "valid"], [[550, 550], "mapped", [551]], [[551, 551], "valid"], [[552, 552], "mapped", [553]], [[553, 553], "valid"], [[554, 554], "mapped", [555]], [[555, 555], "valid"], [[556, 556], "mapped", [557]], [[557, 557], "valid"], [[558, 558], "mapped", [559]], [[559, 559], "valid"], [[560, 560], "mapped", [561]], [[561, 561], "valid"], [[562, 562], "mapped", [563]], [[563, 563], "valid"], [[564, 566], "valid"], [[567, 569], "valid"], [[570, 570], "mapped", [11365]], [[571, 571], "mapped", [572]], [[572, 572], "valid"], [[573, 573], "mapped", [410]], [[574, 574], "mapped", [11366]], [[575, 576], "valid"], [[577, 577], "mapped", [578]], [[578, 578], "valid"], [[579, 579], "mapped", [384]], [[580, 580], "mapped", [649]], [[581, 581], "mapped", [652]], [[582, 582], "mapped", [583]], [[583, 583], "valid"], [[584, 584], "mapped", [585]], [[585, 585], "valid"], [[586, 586], "mapped", [587]], [[587, 587], "valid"], [[588, 588], "mapped", [589]], [[589, 589], "valid"], [[590, 590], "mapped", [591]], [[591, 591], "valid"], [[592, 680], "valid"], [[681, 685], "valid"], [[686, 687], "valid"], [[688, 688], "mapped", [104]], [[689, 689], "mapped", [614]], [[690, 690], "mapped", [106]], [[691, 691], "mapped", [114]], [[692, 692], "mapped", [633]], [[693, 693], "mapped", [635]], [[694, 694], "mapped", [641]], [[695, 695], "mapped", [119]], [[696, 696], "mapped", [121]], [[697, 705], "valid"], [[706, 709], "valid", [], "NV8"], [[710, 721], "valid"], [[722, 727], "valid", [], "NV8"], [[728, 728], "disallowed_STD3_mapped", [32, 774]], [[729, 729], "disallowed_STD3_mapped", [32, 775]], [[730, 730], "disallowed_STD3_mapped", [32, 778]], [[731, 731], "disallowed_STD3_mapped", [32, 808]], [[732, 732], "disallowed_STD3_mapped", [32, 771]], [[733, 733], "disallowed_STD3_mapped", [32, 779]], [[734, 734], "valid", [], "NV8"], [[735, 735], "valid", [], "NV8"], [[736, 736], "mapped", [611]], [[737, 737], "mapped", [108]], [[738, 738], "mapped", [115]], [[739, 739], "mapped", [120]], [[740, 740], "mapped", [661]], [[741, 745], "valid", [], "NV8"], [[746, 747], "valid", [], "NV8"], [[748, 748], "valid"], [[749, 749], "valid", [], "NV8"], [[750, 750], "valid"], [[751, 767], "valid", [], "NV8"], [[768, 831], "valid"], [[832, 832], "mapped", [768]], [[833, 833], "mapped", [769]], [[834, 834], "valid"], [[835, 835], "mapped", [787]], [[836, 836], "mapped", [776, 769]], [[837, 837], "mapped", [953]], [[838, 846], "valid"], [[847, 847], "ignored"], [[848, 855], "valid"], [[856, 860], "valid"], [[861, 863], "valid"], [[864, 865], "valid"], [[866, 866], "valid"], [[867, 879], "valid"], [[880, 880], "mapped", [881]], [[881, 881], "valid"], [[882, 882], "mapped", [883]], [[883, 883], "valid"], [[884, 884], "mapped", [697]], [[885, 885], "valid"], [[886, 886], "mapped", [887]], [[887, 887], "valid"], [[888, 889], "disallowed"], [[890, 890], "disallowed_STD3_mapped", [32, 953]], [[891, 893], "valid"], [[894, 894], "disallowed_STD3_mapped", [59]], [[895, 895], "mapped", [1011]], [[896, 899], "disallowed"], [[900, 900], "disallowed_STD3_mapped", [32, 769]], [[901, 901], "disallowed_STD3_mapped", [32, 776, 769]], [[902, 902], "mapped", [940]], [[903, 903], "mapped", [183]], [[904, 904], "mapped", [941]], [[905, 905], "mapped", [942]], [[906, 906], "mapped", [943]], [[907, 907], "disallowed"], [[908, 908], "mapped", [972]], [[909, 909], "disallowed"], [[910, 910], "mapped", [973]], [[911, 911], "mapped", [974]], [[912, 912], "valid"], [[913, 913], "mapped", [945]], [[914, 914], "mapped", [946]], [[915, 915], "mapped", [947]], [[916, 916], "mapped", [948]], [[917, 917], "mapped", [949]], [[918, 918], "mapped", [950]], [[919, 919], "mapped", [951]], [[920, 920], "mapped", [952]], [[921, 921], "mapped", [953]], [[922, 922], "mapped", [954]], [[923, 923], "mapped", [955]], [[924, 924], "mapped", [956]], [[925, 925], "mapped", [957]], [[926, 926], "mapped", [958]], [[927, 927], "mapped", [959]], [[928, 928], "mapped", [960]], [[929, 929], "mapped", [961]], [[930, 930], "disallowed"], [[931, 931], "mapped", [963]], [[932, 932], "mapped", [964]], [[933, 933], "mapped", [965]], [[934, 934], "mapped", [966]], [[935, 935], "mapped", [967]], [[936, 936], "mapped", [968]], [[937, 937], "mapped", [969]], [[938, 938], "mapped", [970]], [[939, 939], "mapped", [971]], [[940, 961], "valid"], [[962, 962], "deviation", [963]], [[963, 974], "valid"], [[975, 975], "mapped", [983]], [[976, 976], "mapped", [946]], [[977, 977], "mapped", [952]], [[978, 978], "mapped", [965]], [[979, 979], "mapped", [973]], [[980, 980], "mapped", [971]], [[981, 981], "mapped", [966]], [[982, 982], "mapped", [960]], [[983, 983], "valid"], [[984, 984], "mapped", [985]], [[985, 985], "valid"], [[986, 986], "mapped", [987]], [[987, 987], "valid"], [[988, 988], "mapped", [989]], [[989, 989], "valid"], [[990, 990], "mapped", [991]], [[991, 991], "valid"], [[992, 992], "mapped", [993]], [[993, 993], "valid"], [[994, 994], "mapped", [995]], [[995, 995], "valid"], [[996, 996], "mapped", [997]], [[997, 997], "valid"], [[998, 998], "mapped", [999]], [[999, 999], "valid"], [[1e3, 1e3], "mapped", [1001]], [[1001, 1001], "valid"], [[1002, 1002], "mapped", [1003]], [[1003, 1003], "valid"], [[1004, 1004], "mapped", [1005]], [[1005, 1005], "valid"], [[1006, 1006], "mapped", [1007]], [[1007, 1007], "valid"], [[1008, 1008], "mapped", [954]], [[1009, 1009], "mapped", [961]], [[1010, 1010], "mapped", [963]], [[1011, 1011], "valid"], [[1012, 1012], "mapped", [952]], [[1013, 1013], "mapped", [949]], [[1014, 1014], "valid", [], "NV8"], [[1015, 1015], "mapped", [1016]], [[1016, 1016], "valid"], [[1017, 1017], "mapped", [963]], [[1018, 1018], "mapped", [1019]], [[1019, 1019], "valid"], [[1020, 1020], "valid"], [[1021, 1021], "mapped", [891]], [[1022, 1022], "mapped", [892]], [[1023, 1023], "mapped", [893]], [[1024, 1024], "mapped", [1104]], [[1025, 1025], "mapped", [1105]], [[1026, 1026], "mapped", [1106]], [[1027, 1027], "mapped", [1107]], [[1028, 1028], "mapped", [1108]], [[1029, 1029], "mapped", [1109]], [[1030, 1030], "mapped", [1110]], [[1031, 1031], "mapped", [1111]], [[1032, 1032], "mapped", [1112]], [[1033, 1033], "mapped", [1113]], [[1034, 1034], "mapped", [1114]], [[1035, 1035], "mapped", [1115]], [[1036, 1036], "mapped", [1116]], [[1037, 1037], "mapped", [1117]], [[1038, 1038], "mapped", [1118]], [[1039, 1039], "mapped", [1119]], [[1040, 1040], "mapped", [1072]], [[1041, 1041], "mapped", [1073]], [[1042, 1042], "mapped", [1074]], [[1043, 1043], "mapped", [1075]], [[1044, 1044], "mapped", [1076]], [[1045, 1045], "mapped", [1077]], [[1046, 1046], "mapped", [1078]], [[1047, 1047], "mapped", [1079]], [[1048, 1048], "mapped", [1080]], [[1049, 1049], "mapped", [1081]], [[1050, 1050], "mapped", [1082]], [[1051, 1051], "mapped", [1083]], [[1052, 1052], "mapped", [1084]], [[1053, 1053], "mapped", [1085]], [[1054, 1054], "mapped", [1086]], [[1055, 1055], "mapped", [1087]], [[1056, 1056], "mapped", [1088]], [[1057, 1057], "mapped", [1089]], [[1058, 1058], "mapped", [1090]], [[1059, 1059], "mapped", [1091]], [[1060, 1060], "mapped", [1092]], [[1061, 1061], "mapped", [1093]], [[1062, 1062], "mapped", [1094]], [[1063, 1063], "mapped", [1095]], [[1064, 1064], "mapped", [1096]], [[1065, 1065], "mapped", [1097]], [[1066, 1066], "mapped", [1098]], [[1067, 1067], "mapped", [1099]], [[1068, 1068], "mapped", [1100]], [[1069, 1069], "mapped", [1101]], [[1070, 1070], "mapped", [1102]], [[1071, 1071], "mapped", [1103]], [[1072, 1103], "valid"], [[1104, 1104], "valid"], [[1105, 1116], "valid"], [[1117, 1117], "valid"], [[1118, 1119], "valid"], [[1120, 1120], "mapped", [1121]], [[1121, 1121], "valid"], [[1122, 1122], "mapped", [1123]], [[1123, 1123], "valid"], [[1124, 1124], "mapped", [1125]], [[1125, 1125], "valid"], [[1126, 1126], "mapped", [1127]], [[1127, 1127], "valid"], [[1128, 1128], "mapped", [1129]], [[1129, 1129], "valid"], [[1130, 1130], "mapped", [1131]], [[1131, 1131], "valid"], [[1132, 1132], "mapped", [1133]], [[1133, 1133], "valid"], [[1134, 1134], "mapped", [1135]], [[1135, 1135], "valid"], [[1136, 1136], "mapped", [1137]], [[1137, 1137], "valid"], [[1138, 1138], "mapped", [1139]], [[1139, 1139], "valid"], [[1140, 1140], "mapped", [1141]], [[1141, 1141], "valid"], [[1142, 1142], "mapped", [1143]], [[1143, 1143], "valid"], [[1144, 1144], "mapped", [1145]], [[1145, 1145], "valid"], [[1146, 1146], "mapped", [1147]], [[1147, 1147], "valid"], [[1148, 1148], "mapped", [1149]], [[1149, 1149], "valid"], [[1150, 1150], "mapped", [1151]], [[1151, 1151], "valid"], [[1152, 1152], "mapped", [1153]], [[1153, 1153], "valid"], [[1154, 1154], "valid", [], "NV8"], [[1155, 1158], "valid"], [[1159, 1159], "valid"], [[1160, 1161], "valid", [], "NV8"], [[1162, 1162], "mapped", [1163]], [[1163, 1163], "valid"], [[1164, 1164], "mapped", [1165]], [[1165, 1165], "valid"], [[1166, 1166], "mapped", [1167]], [[1167, 1167], "valid"], [[1168, 1168], "mapped", [1169]], [[1169, 1169], "valid"], [[1170, 1170], "mapped", [1171]], [[1171, 1171], "valid"], [[1172, 1172], "mapped", [1173]], [[1173, 1173], "valid"], [[1174, 1174], "mapped", [1175]], [[1175, 1175], "valid"], [[1176, 1176], "mapped", [1177]], [[1177, 1177], "valid"], [[1178, 1178], "mapped", [1179]], [[1179, 1179], "valid"], [[1180, 1180], "mapped", [1181]], [[1181, 1181], "valid"], [[1182, 1182], "mapped", [1183]], [[1183, 1183], "valid"], [[1184, 1184], "mapped", [1185]], [[1185, 1185], "valid"], [[1186, 1186], "mapped", [1187]], [[1187, 1187], "valid"], [[1188, 1188], "mapped", [1189]], [[1189, 1189], "valid"], [[1190, 1190], "mapped", [1191]], [[1191, 1191], "valid"], [[1192, 1192], "mapped", [1193]], [[1193, 1193], "valid"], [[1194, 1194], "mapped", [1195]], [[1195, 1195], "valid"], [[1196, 1196], "mapped", [1197]], [[1197, 1197], "valid"], [[1198, 1198], "mapped", [1199]], [[1199, 1199], "valid"], [[1200, 1200], "mapped", [1201]], [[1201, 1201], "valid"], [[1202, 1202], "mapped", [1203]], [[1203, 1203], "valid"], [[1204, 1204], "mapped", [1205]], [[1205, 1205], "valid"], [[1206, 1206], "mapped", [1207]], [[1207, 1207], "valid"], [[1208, 1208], "mapped", [1209]], [[1209, 1209], "valid"], [[1210, 1210], "mapped", [1211]], [[1211, 1211], "valid"], [[1212, 1212], "mapped", [1213]], [[1213, 1213], "valid"], [[1214, 1214], "mapped", [1215]], [[1215, 1215], "valid"], [[1216, 1216], "disallowed"], [[1217, 1217], "mapped", [1218]], [[1218, 1218], "valid"], [[1219, 1219], "mapped", [1220]], [[1220, 1220], "valid"], [[1221, 1221], "mapped", [1222]], [[1222, 1222], "valid"], [[1223, 1223], "mapped", [1224]], [[1224, 1224], "valid"], [[1225, 1225], "mapped", [1226]], [[1226, 1226], "valid"], [[1227, 1227], "mapped", [1228]], [[1228, 1228], "valid"], [[1229, 1229], "mapped", [1230]], [[1230, 1230], "valid"], [[1231, 1231], "valid"], [[1232, 1232], "mapped", [1233]], [[1233, 1233], "valid"], [[1234, 1234], "mapped", [1235]], [[1235, 1235], "valid"], [[1236, 1236], "mapped", [1237]], [[1237, 1237], "valid"], [[1238, 1238], "mapped", [1239]], [[1239, 1239], "valid"], [[1240, 1240], "mapped", [1241]], [[1241, 1241], "valid"], [[1242, 1242], "mapped", [1243]], [[1243, 1243], "valid"], [[1244, 1244], "mapped", [1245]], [[1245, 1245], "valid"], [[1246, 1246], "mapped", [1247]], [[1247, 1247], "valid"], [[1248, 1248], "mapped", [1249]], [[1249, 1249], "valid"], [[1250, 1250], "mapped", [1251]], [[1251, 1251], "valid"], [[1252, 1252], "mapped", [1253]], [[1253, 1253], "valid"], [[1254, 1254], "mapped", [1255]], [[1255, 1255], "valid"], [[1256, 1256], "mapped", [1257]], [[1257, 1257], "valid"], [[1258, 1258], "mapped", [1259]], [[1259, 1259], "valid"], [[1260, 1260], "mapped", [1261]], [[1261, 1261], "valid"], [[1262, 1262], "mapped", [1263]], [[1263, 1263], "valid"], [[1264, 1264], "mapped", [1265]], [[1265, 1265], "valid"], [[1266, 1266], "mapped", [1267]], [[1267, 1267], "valid"], [[1268, 1268], "mapped", [1269]], [[1269, 1269], "valid"], [[1270, 1270], "mapped", [1271]], [[1271, 1271], "valid"], [[1272, 1272], "mapped", [1273]], [[1273, 1273], "valid"], [[1274, 1274], "mapped", [1275]], [[1275, 1275], "valid"], [[1276, 1276], "mapped", [1277]], [[1277, 1277], "valid"], [[1278, 1278], "mapped", [1279]], [[1279, 1279], "valid"], [[1280, 1280], "mapped", [1281]], [[1281, 1281], "valid"], [[1282, 1282], "mapped", [1283]], [[1283, 1283], "valid"], [[1284, 1284], "mapped", [1285]], [[1285, 1285], "valid"], [[1286, 1286], "mapped", [1287]], [[1287, 1287], "valid"], [[1288, 1288], "mapped", [1289]], [[1289, 1289], "valid"], [[1290, 1290], "mapped", [1291]], [[1291, 1291], "valid"], [[1292, 1292], "mapped", [1293]], [[1293, 1293], "valid"], [[1294, 1294], "mapped", [1295]], [[1295, 1295], "valid"], [[1296, 1296], "mapped", [1297]], [[1297, 1297], "valid"], [[1298, 1298], "mapped", [1299]], [[1299, 1299], "valid"], [[1300, 1300], "mapped", [1301]], [[1301, 1301], "valid"], [[1302, 1302], "mapped", [1303]], [[1303, 1303], "valid"], [[1304, 1304], "mapped", [1305]], [[1305, 1305], "valid"], [[1306, 1306], "mapped", [1307]], [[1307, 1307], "valid"], [[1308, 1308], "mapped", [1309]], [[1309, 1309], "valid"], [[1310, 1310], "mapped", [1311]], [[1311, 1311], "valid"], [[1312, 1312], "mapped", [1313]], [[1313, 1313], "valid"], [[1314, 1314], "mapped", [1315]], [[1315, 1315], "valid"], [[1316, 1316], "mapped", [1317]], [[1317, 1317], "valid"], [[1318, 1318], "mapped", [1319]], [[1319, 1319], "valid"], [[1320, 1320], "mapped", [1321]], [[1321, 1321], "valid"], [[1322, 1322], "mapped", [1323]], [[1323, 1323], "valid"], [[1324, 1324], "mapped", [1325]], [[1325, 1325], "valid"], [[1326, 1326], "mapped", [1327]], [[1327, 1327], "valid"], [[1328, 1328], "disallowed"], [[1329, 1329], "mapped", [1377]], [[1330, 1330], "mapped", [1378]], [[1331, 1331], "mapped", [1379]], [[1332, 1332], "mapped", [1380]], [[1333, 1333], "mapped", [1381]], [[1334, 1334], "mapped", [1382]], [[1335, 1335], "mapped", [1383]], [[1336, 1336], "mapped", [1384]], [[1337, 1337], "mapped", [1385]], [[1338, 1338], "mapped", [1386]], [[1339, 1339], "mapped", [1387]], [[1340, 1340], "mapped", [1388]], [[1341, 1341], "mapped", [1389]], [[1342, 1342], "mapped", [1390]], [[1343, 1343], "mapped", [1391]], [[1344, 1344], "mapped", [1392]], [[1345, 1345], "mapped", [1393]], [[1346, 1346], "mapped", [1394]], [[1347, 1347], "mapped", [1395]], [[1348, 1348], "mapped", [1396]], [[1349, 1349], "mapped", [1397]], [[1350, 1350], "mapped", [1398]], [[1351, 1351], "mapped", [1399]], [[1352, 1352], "mapped", [1400]], [[1353, 1353], "mapped", [1401]], [[1354, 1354], "mapped", [1402]], [[1355, 1355], "mapped", [1403]], [[1356, 1356], "mapped", [1404]], [[1357, 1357], "mapped", [1405]], [[1358, 1358], "mapped", [1406]], [[1359, 1359], "mapped", [1407]], [[1360, 1360], "mapped", [1408]], [[1361, 1361], "mapped", [1409]], [[1362, 1362], "mapped", [1410]], [[1363, 1363], "mapped", [1411]], [[1364, 1364], "mapped", [1412]], [[1365, 1365], "mapped", [1413]], [[1366, 1366], "mapped", [1414]], [[1367, 1368], "disallowed"], [[1369, 1369], "valid"], [[1370, 1375], "valid", [], "NV8"], [[1376, 1376], "disallowed"], [[1377, 1414], "valid"], [[1415, 1415], "mapped", [1381, 1410]], [[1416, 1416], "disallowed"], [[1417, 1417], "valid", [], "NV8"], [[1418, 1418], "valid", [], "NV8"], [[1419, 1420], "disallowed"], [[1421, 1422], "valid", [], "NV8"], [[1423, 1423], "valid", [], "NV8"], [[1424, 1424], "disallowed"], [[1425, 1441], "valid"], [[1442, 1442], "valid"], [[1443, 1455], "valid"], [[1456, 1465], "valid"], [[1466, 1466], "valid"], [[1467, 1469], "valid"], [[1470, 1470], "valid", [], "NV8"], [[1471, 1471], "valid"], [[1472, 1472], "valid", [], "NV8"], [[1473, 1474], "valid"], [[1475, 1475], "valid", [], "NV8"], [[1476, 1476], "valid"], [[1477, 1477], "valid"], [[1478, 1478], "valid", [], "NV8"], [[1479, 1479], "valid"], [[1480, 1487], "disallowed"], [[1488, 1514], "valid"], [[1515, 1519], "disallowed"], [[1520, 1524], "valid"], [[1525, 1535], "disallowed"], [[1536, 1539], "disallowed"], [[1540, 1540], "disallowed"], [[1541, 1541], "disallowed"], [[1542, 1546], "valid", [], "NV8"], [[1547, 1547], "valid", [], "NV8"], [[1548, 1548], "valid", [], "NV8"], [[1549, 1551], "valid", [], "NV8"], [[1552, 1557], "valid"], [[1558, 1562], "valid"], [[1563, 1563], "valid", [], "NV8"], [[1564, 1564], "disallowed"], [[1565, 1565], "disallowed"], [[1566, 1566], "valid", [], "NV8"], [[1567, 1567], "valid", [], "NV8"], [[1568, 1568], "valid"], [[1569, 1594], "valid"], [[1595, 1599], "valid"], [[1600, 1600], "valid", [], "NV8"], [[1601, 1618], "valid"], [[1619, 1621], "valid"], [[1622, 1624], "valid"], [[1625, 1630], "valid"], [[1631, 1631], "valid"], [[1632, 1641], "valid"], [[1642, 1645], "valid", [], "NV8"], [[1646, 1647], "valid"], [[1648, 1652], "valid"], [[1653, 1653], "mapped", [1575, 1652]], [[1654, 1654], "mapped", [1608, 1652]], [[1655, 1655], "mapped", [1735, 1652]], [[1656, 1656], "mapped", [1610, 1652]], [[1657, 1719], "valid"], [[1720, 1721], "valid"], [[1722, 1726], "valid"], [[1727, 1727], "valid"], [[1728, 1742], "valid"], [[1743, 1743], "valid"], [[1744, 1747], "valid"], [[1748, 1748], "valid", [], "NV8"], [[1749, 1756], "valid"], [[1757, 1757], "disallowed"], [[1758, 1758], "valid", [], "NV8"], [[1759, 1768], "valid"], [[1769, 1769], "valid", [], "NV8"], [[1770, 1773], "valid"], [[1774, 1775], "valid"], [[1776, 1785], "valid"], [[1786, 1790], "valid"], [[1791, 1791], "valid"], [[1792, 1805], "valid", [], "NV8"], [[1806, 1806], "disallowed"], [[1807, 1807], "disallowed"], [[1808, 1836], "valid"], [[1837, 1839], "valid"], [[1840, 1866], "valid"], [[1867, 1868], "disallowed"], [[1869, 1871], "valid"], [[1872, 1901], "valid"], [[1902, 1919], "valid"], [[1920, 1968], "valid"], [[1969, 1969], "valid"], [[1970, 1983], "disallowed"], [[1984, 2037], "valid"], [[2038, 2042], "valid", [], "NV8"], [[2043, 2047], "disallowed"], [[2048, 2093], "valid"], [[2094, 2095], "disallowed"], [[2096, 2110], "valid", [], "NV8"], [[2111, 2111], "disallowed"], [[2112, 2139], "valid"], [[2140, 2141], "disallowed"], [[2142, 2142], "valid", [], "NV8"], [[2143, 2207], "disallowed"], [[2208, 2208], "valid"], [[2209, 2209], "valid"], [[2210, 2220], "valid"], [[2221, 2226], "valid"], [[2227, 2228], "valid"], [[2229, 2274], "disallowed"], [[2275, 2275], "valid"], [[2276, 2302], "valid"], [[2303, 2303], "valid"], [[2304, 2304], "valid"], [[2305, 2307], "valid"], [[2308, 2308], "valid"], [[2309, 2361], "valid"], [[2362, 2363], "valid"], [[2364, 2381], "valid"], [[2382, 2382], "valid"], [[2383, 2383], "valid"], [[2384, 2388], "valid"], [[2389, 2389], "valid"], [[2390, 2391], "valid"], [[2392, 2392], "mapped", [2325, 2364]], [[2393, 2393], "mapped", [2326, 2364]], [[2394, 2394], "mapped", [2327, 2364]], [[2395, 2395], "mapped", [2332, 2364]], [[2396, 2396], "mapped", [2337, 2364]], [[2397, 2397], "mapped", [2338, 2364]], [[2398, 2398], "mapped", [2347, 2364]], [[2399, 2399], "mapped", [2351, 2364]], [[2400, 2403], "valid"], [[2404, 2405], "valid", [], "NV8"], [[2406, 2415], "valid"], [[2416, 2416], "valid", [], "NV8"], [[2417, 2418], "valid"], [[2419, 2423], "valid"], [[2424, 2424], "valid"], [[2425, 2426], "valid"], [[2427, 2428], "valid"], [[2429, 2429], "valid"], [[2430, 2431], "valid"], [[2432, 2432], "valid"], [[2433, 2435], "valid"], [[2436, 2436], "disallowed"], [[2437, 2444], "valid"], [[2445, 2446], "disallowed"], [[2447, 2448], "valid"], [[2449, 2450], "disallowed"], [[2451, 2472], "valid"], [[2473, 2473], "disallowed"], [[2474, 2480], "valid"], [[2481, 2481], "disallowed"], [[2482, 2482], "valid"], [[2483, 2485], "disallowed"], [[2486, 2489], "valid"], [[2490, 2491], "disallowed"], [[2492, 2492], "valid"], [[2493, 2493], "valid"], [[2494, 2500], "valid"], [[2501, 2502], "disallowed"], [[2503, 2504], "valid"], [[2505, 2506], "disallowed"], [[2507, 2509], "valid"], [[2510, 2510], "valid"], [[2511, 2518], "disallowed"], [[2519, 2519], "valid"], [[2520, 2523], "disallowed"], [[2524, 2524], "mapped", [2465, 2492]], [[2525, 2525], "mapped", [2466, 2492]], [[2526, 2526], "disallowed"], [[2527, 2527], "mapped", [2479, 2492]], [[2528, 2531], "valid"], [[2532, 2533], "disallowed"], [[2534, 2545], "valid"], [[2546, 2554], "valid", [], "NV8"], [[2555, 2555], "valid", [], "NV8"], [[2556, 2560], "disallowed"], [[2561, 2561], "valid"], [[2562, 2562], "valid"], [[2563, 2563], "valid"], [[2564, 2564], "disallowed"], [[2565, 2570], "valid"], [[2571, 2574], "disallowed"], [[2575, 2576], "valid"], [[2577, 2578], "disallowed"], [[2579, 2600], "valid"], [[2601, 2601], "disallowed"], [[2602, 2608], "valid"], [[2609, 2609], "disallowed"], [[2610, 2610], "valid"], [[2611, 2611], "mapped", [2610, 2620]], [[2612, 2612], "disallowed"], [[2613, 2613], "valid"], [[2614, 2614], "mapped", [2616, 2620]], [[2615, 2615], "disallowed"], [[2616, 2617], "valid"], [[2618, 2619], "disallowed"], [[2620, 2620], "valid"], [[2621, 2621], "disallowed"], [[2622, 2626], "valid"], [[2627, 2630], "disallowed"], [[2631, 2632], "valid"], [[2633, 2634], "disallowed"], [[2635, 2637], "valid"], [[2638, 2640], "disallowed"], [[2641, 2641], "valid"], [[2642, 2648], "disallowed"], [[2649, 2649], "mapped", [2582, 2620]], [[2650, 2650], "mapped", [2583, 2620]], [[2651, 2651], "mapped", [2588, 2620]], [[2652, 2652], "valid"], [[2653, 2653], "disallowed"], [[2654, 2654], "mapped", [2603, 2620]], [[2655, 2661], "disallowed"], [[2662, 2676], "valid"], [[2677, 2677], "valid"], [[2678, 2688], "disallowed"], [[2689, 2691], "valid"], [[2692, 2692], "disallowed"], [[2693, 2699], "valid"], [[2700, 2700], "valid"], [[2701, 2701], "valid"], [[2702, 2702], "disallowed"], [[2703, 2705], "valid"], [[2706, 2706], "disallowed"], [[2707, 2728], "valid"], [[2729, 2729], "disallowed"], [[2730, 2736], "valid"], [[2737, 2737], "disallowed"], [[2738, 2739], "valid"], [[2740, 2740], "disallowed"], [[2741, 2745], "valid"], [[2746, 2747], "disallowed"], [[2748, 2757], "valid"], [[2758, 2758], "disallowed"], [[2759, 2761], "valid"], [[2762, 2762], "disallowed"], [[2763, 2765], "valid"], [[2766, 2767], "disallowed"], [[2768, 2768], "valid"], [[2769, 2783], "disallowed"], [[2784, 2784], "valid"], [[2785, 2787], "valid"], [[2788, 2789], "disallowed"], [[2790, 2799], "valid"], [[2800, 2800], "valid", [], "NV8"], [[2801, 2801], "valid", [], "NV8"], [[2802, 2808], "disallowed"], [[2809, 2809], "valid"], [[2810, 2816], "disallowed"], [[2817, 2819], "valid"], [[2820, 2820], "disallowed"], [[2821, 2828], "valid"], [[2829, 2830], "disallowed"], [[2831, 2832], "valid"], [[2833, 2834], "disallowed"], [[2835, 2856], "valid"], [[2857, 2857], "disallowed"], [[2858, 2864], "valid"], [[2865, 2865], "disallowed"], [[2866, 2867], "valid"], [[2868, 2868], "disallowed"], [[2869, 2869], "valid"], [[2870, 2873], "valid"], [[2874, 2875], "disallowed"], [[2876, 2883], "valid"], [[2884, 2884], "valid"], [[2885, 2886], "disallowed"], [[2887, 2888], "valid"], [[2889, 2890], "disallowed"], [[2891, 2893], "valid"], [[2894, 2901], "disallowed"], [[2902, 2903], "valid"], [[2904, 2907], "disallowed"], [[2908, 2908], "mapped", [2849, 2876]], [[2909, 2909], "mapped", [2850, 2876]], [[2910, 2910], "disallowed"], [[2911, 2913], "valid"], [[2914, 2915], "valid"], [[2916, 2917], "disallowed"], [[2918, 2927], "valid"], [[2928, 2928], "valid", [], "NV8"], [[2929, 2929], "valid"], [[2930, 2935], "valid", [], "NV8"], [[2936, 2945], "disallowed"], [[2946, 2947], "valid"], [[2948, 2948], "disallowed"], [[2949, 2954], "valid"], [[2955, 2957], "disallowed"], [[2958, 2960], "valid"], [[2961, 2961], "disallowed"], [[2962, 2965], "valid"], [[2966, 2968], "disallowed"], [[2969, 2970], "valid"], [[2971, 2971], "disallowed"], [[2972, 2972], "valid"], [[2973, 2973], "disallowed"], [[2974, 2975], "valid"], [[2976, 2978], "disallowed"], [[2979, 2980], "valid"], [[2981, 2983], "disallowed"], [[2984, 2986], "valid"], [[2987, 2989], "disallowed"], [[2990, 2997], "valid"], [[2998, 2998], "valid"], [[2999, 3001], "valid"], [[3002, 3005], "disallowed"], [[3006, 3010], "valid"], [[3011, 3013], "disallowed"], [[3014, 3016], "valid"], [[3017, 3017], "disallowed"], [[3018, 3021], "valid"], [[3022, 3023], "disallowed"], [[3024, 3024], "valid"], [[3025, 3030], "disallowed"], [[3031, 3031], "valid"], [[3032, 3045], "disallowed"], [[3046, 3046], "valid"], [[3047, 3055], "valid"], [[3056, 3058], "valid", [], "NV8"], [[3059, 3066], "valid", [], "NV8"], [[3067, 3071], "disallowed"], [[3072, 3072], "valid"], [[3073, 3075], "valid"], [[3076, 3076], "disallowed"], [[3077, 3084], "valid"], [[3085, 3085], "disallowed"], [[3086, 3088], "valid"], [[3089, 3089], "disallowed"], [[3090, 3112], "valid"], [[3113, 3113], "disallowed"], [[3114, 3123], "valid"], [[3124, 3124], "valid"], [[3125, 3129], "valid"], [[3130, 3132], "disallowed"], [[3133, 3133], "valid"], [[3134, 3140], "valid"], [[3141, 3141], "disallowed"], [[3142, 3144], "valid"], [[3145, 3145], "disallowed"], [[3146, 3149], "valid"], [[3150, 3156], "disallowed"], [[3157, 3158], "valid"], [[3159, 3159], "disallowed"], [[3160, 3161], "valid"], [[3162, 3162], "valid"], [[3163, 3167], "disallowed"], [[3168, 3169], "valid"], [[3170, 3171], "valid"], [[3172, 3173], "disallowed"], [[3174, 3183], "valid"], [[3184, 3191], "disallowed"], [[3192, 3199], "valid", [], "NV8"], [[3200, 3200], "disallowed"], [[3201, 3201], "valid"], [[3202, 3203], "valid"], [[3204, 3204], "disallowed"], [[3205, 3212], "valid"], [[3213, 3213], "disallowed"], [[3214, 3216], "valid"], [[3217, 3217], "disallowed"], [[3218, 3240], "valid"], [[3241, 3241], "disallowed"], [[3242, 3251], "valid"], [[3252, 3252], "disallowed"], [[3253, 3257], "valid"], [[3258, 3259], "disallowed"], [[3260, 3261], "valid"], [[3262, 3268], "valid"], [[3269, 3269], "disallowed"], [[3270, 3272], "valid"], [[3273, 3273], "disallowed"], [[3274, 3277], "valid"], [[3278, 3284], "disallowed"], [[3285, 3286], "valid"], [[3287, 3293], "disallowed"], [[3294, 3294], "valid"], [[3295, 3295], "disallowed"], [[3296, 3297], "valid"], [[3298, 3299], "valid"], [[3300, 3301], "disallowed"], [[3302, 3311], "valid"], [[3312, 3312], "disallowed"], [[3313, 3314], "valid"], [[3315, 3328], "disallowed"], [[3329, 3329], "valid"], [[3330, 3331], "valid"], [[3332, 3332], "disallowed"], [[3333, 3340], "valid"], [[3341, 3341], "disallowed"], [[3342, 3344], "valid"], [[3345, 3345], "disallowed"], [[3346, 3368], "valid"], [[3369, 3369], "valid"], [[3370, 3385], "valid"], [[3386, 3386], "valid"], [[3387, 3388], "disallowed"], [[3389, 3389], "valid"], [[3390, 3395], "valid"], [[3396, 3396], "valid"], [[3397, 3397], "disallowed"], [[3398, 3400], "valid"], [[3401, 3401], "disallowed"], [[3402, 3405], "valid"], [[3406, 3406], "valid"], [[3407, 3414], "disallowed"], [[3415, 3415], "valid"], [[3416, 3422], "disallowed"], [[3423, 3423], "valid"], [[3424, 3425], "valid"], [[3426, 3427], "valid"], [[3428, 3429], "disallowed"], [[3430, 3439], "valid"], [[3440, 3445], "valid", [], "NV8"], [[3446, 3448], "disallowed"], [[3449, 3449], "valid", [], "NV8"], [[3450, 3455], "valid"], [[3456, 3457], "disallowed"], [[3458, 3459], "valid"], [[3460, 3460], "disallowed"], [[3461, 3478], "valid"], [[3479, 3481], "disallowed"], [[3482, 3505], "valid"], [[3506, 3506], "disallowed"], [[3507, 3515], "valid"], [[3516, 3516], "disallowed"], [[3517, 3517], "valid"], [[3518, 3519], "disallowed"], [[3520, 3526], "valid"], [[3527, 3529], "disallowed"], [[3530, 3530], "valid"], [[3531, 3534], "disallowed"], [[3535, 3540], "valid"], [[3541, 3541], "disallowed"], [[3542, 3542], "valid"], [[3543, 3543], "disallowed"], [[3544, 3551], "valid"], [[3552, 3557], "disallowed"], [[3558, 3567], "valid"], [[3568, 3569], "disallowed"], [[3570, 3571], "valid"], [[3572, 3572], "valid", [], "NV8"], [[3573, 3584], "disallowed"], [[3585, 3634], "valid"], [[3635, 3635], "mapped", [3661, 3634]], [[3636, 3642], "valid"], [[3643, 3646], "disallowed"], [[3647, 3647], "valid", [], "NV8"], [[3648, 3662], "valid"], [[3663, 3663], "valid", [], "NV8"], [[3664, 3673], "valid"], [[3674, 3675], "valid", [], "NV8"], [[3676, 3712], "disallowed"], [[3713, 3714], "valid"], [[3715, 3715], "disallowed"], [[3716, 3716], "valid"], [[3717, 3718], "disallowed"], [[3719, 3720], "valid"], [[3721, 3721], "disallowed"], [[3722, 3722], "valid"], [[3723, 3724], "disallowed"], [[3725, 3725], "valid"], [[3726, 3731], "disallowed"], [[3732, 3735], "valid"], [[3736, 3736], "disallowed"], [[3737, 3743], "valid"], [[3744, 3744], "disallowed"], [[3745, 3747], "valid"], [[3748, 3748], "disallowed"], [[3749, 3749], "valid"], [[3750, 3750], "disallowed"], [[3751, 3751], "valid"], [[3752, 3753], "disallowed"], [[3754, 3755], "valid"], [[3756, 3756], "disallowed"], [[3757, 3762], "valid"], [[3763, 3763], "mapped", [3789, 3762]], [[3764, 3769], "valid"], [[3770, 3770], "disallowed"], [[3771, 3773], "valid"], [[3774, 3775], "disallowed"], [[3776, 3780], "valid"], [[3781, 3781], "disallowed"], [[3782, 3782], "valid"], [[3783, 3783], "disallowed"], [[3784, 3789], "valid"], [[3790, 3791], "disallowed"], [[3792, 3801], "valid"], [[3802, 3803], "disallowed"], [[3804, 3804], "mapped", [3755, 3737]], [[3805, 3805], "mapped", [3755, 3745]], [[3806, 3807], "valid"], [[3808, 3839], "disallowed"], [[3840, 3840], "valid"], [[3841, 3850], "valid", [], "NV8"], [[3851, 3851], "valid"], [[3852, 3852], "mapped", [3851]], [[3853, 3863], "valid", [], "NV8"], [[3864, 3865], "valid"], [[3866, 3871], "valid", [], "NV8"], [[3872, 3881], "valid"], [[3882, 3892], "valid", [], "NV8"], [[3893, 3893], "valid"], [[3894, 3894], "valid", [], "NV8"], [[3895, 3895], "valid"], [[3896, 3896], "valid", [], "NV8"], [[3897, 3897], "valid"], [[3898, 3901], "valid", [], "NV8"], [[3902, 3906], "valid"], [[3907, 3907], "mapped", [3906, 4023]], [[3908, 3911], "valid"], [[3912, 3912], "disallowed"], [[3913, 3916], "valid"], [[3917, 3917], "mapped", [3916, 4023]], [[3918, 3921], "valid"], [[3922, 3922], "mapped", [3921, 4023]], [[3923, 3926], "valid"], [[3927, 3927], "mapped", [3926, 4023]], [[3928, 3931], "valid"], [[3932, 3932], "mapped", [3931, 4023]], [[3933, 3944], "valid"], [[3945, 3945], "mapped", [3904, 4021]], [[3946, 3946], "valid"], [[3947, 3948], "valid"], [[3949, 3952], "disallowed"], [[3953, 3954], "valid"], [[3955, 3955], "mapped", [3953, 3954]], [[3956, 3956], "valid"], [[3957, 3957], "mapped", [3953, 3956]], [[3958, 3958], "mapped", [4018, 3968]], [[3959, 3959], "mapped", [4018, 3953, 3968]], [[3960, 3960], "mapped", [4019, 3968]], [[3961, 3961], "mapped", [4019, 3953, 3968]], [[3962, 3968], "valid"], [[3969, 3969], "mapped", [3953, 3968]], [[3970, 3972], "valid"], [[3973, 3973], "valid", [], "NV8"], [[3974, 3979], "valid"], [[3980, 3983], "valid"], [[3984, 3986], "valid"], [[3987, 3987], "mapped", [3986, 4023]], [[3988, 3989], "valid"], [[3990, 3990], "valid"], [[3991, 3991], "valid"], [[3992, 3992], "disallowed"], [[3993, 3996], "valid"], [[3997, 3997], "mapped", [3996, 4023]], [[3998, 4001], "valid"], [[4002, 4002], "mapped", [4001, 4023]], [[4003, 4006], "valid"], [[4007, 4007], "mapped", [4006, 4023]], [[4008, 4011], "valid"], [[4012, 4012], "mapped", [4011, 4023]], [[4013, 4013], "valid"], [[4014, 4016], "valid"], [[4017, 4023], "valid"], [[4024, 4024], "valid"], [[4025, 4025], "mapped", [3984, 4021]], [[4026, 4028], "valid"], [[4029, 4029], "disallowed"], [[4030, 4037], "valid", [], "NV8"], [[4038, 4038], "valid"], [[4039, 4044], "valid", [], "NV8"], [[4045, 4045], "disallowed"], [[4046, 4046], "valid", [], "NV8"], [[4047, 4047], "valid", [], "NV8"], [[4048, 4049], "valid", [], "NV8"], [[4050, 4052], "valid", [], "NV8"], [[4053, 4056], "valid", [], "NV8"], [[4057, 4058], "valid", [], "NV8"], [[4059, 4095], "disallowed"], [[4096, 4129], "valid"], [[4130, 4130], "valid"], [[4131, 4135], "valid"], [[4136, 4136], "valid"], [[4137, 4138], "valid"], [[4139, 4139], "valid"], [[4140, 4146], "valid"], [[4147, 4149], "valid"], [[4150, 4153], "valid"], [[4154, 4159], "valid"], [[4160, 4169], "valid"], [[4170, 4175], "valid", [], "NV8"], [[4176, 4185], "valid"], [[4186, 4249], "valid"], [[4250, 4253], "valid"], [[4254, 4255], "valid", [], "NV8"], [[4256, 4293], "disallowed"], [[4294, 4294], "disallowed"], [[4295, 4295], "mapped", [11559]], [[4296, 4300], "disallowed"], [[4301, 4301], "mapped", [11565]], [[4302, 4303], "disallowed"], [[4304, 4342], "valid"], [[4343, 4344], "valid"], [[4345, 4346], "valid"], [[4347, 4347], "valid", [], "NV8"], [[4348, 4348], "mapped", [4316]], [[4349, 4351], "valid"], [[4352, 4441], "valid", [], "NV8"], [[4442, 4446], "valid", [], "NV8"], [[4447, 4448], "disallowed"], [[4449, 4514], "valid", [], "NV8"], [[4515, 4519], "valid", [], "NV8"], [[4520, 4601], "valid", [], "NV8"], [[4602, 4607], "valid", [], "NV8"], [[4608, 4614], "valid"], [[4615, 4615], "valid"], [[4616, 4678], "valid"], [[4679, 4679], "valid"], [[4680, 4680], "valid"], [[4681, 4681], "disallowed"], [[4682, 4685], "valid"], [[4686, 4687], "disallowed"], [[4688, 4694], "valid"], [[4695, 4695], "disallowed"], [[4696, 4696], "valid"], [[4697, 4697], "disallowed"], [[4698, 4701], "valid"], [[4702, 4703], "disallowed"], [[4704, 4742], "valid"], [[4743, 4743], "valid"], [[4744, 4744], "valid"], [[4745, 4745], "disallowed"], [[4746, 4749], "valid"], [[4750, 4751], "disallowed"], [[4752, 4782], "valid"], [[4783, 4783], "valid"], [[4784, 4784], "valid"], [[4785, 4785], "disallowed"], [[4786, 4789], "valid"], [[4790, 4791], "disallowed"], [[4792, 4798], "valid"], [[4799, 4799], "disallowed"], [[4800, 4800], "valid"], [[4801, 4801], "disallowed"], [[4802, 4805], "valid"], [[4806, 4807], "disallowed"], [[4808, 4814], "valid"], [[4815, 4815], "valid"], [[4816, 4822], "valid"], [[4823, 4823], "disallowed"], [[4824, 4846], "valid"], [[4847, 4847], "valid"], [[4848, 4878], "valid"], [[4879, 4879], "valid"], [[4880, 4880], "valid"], [[4881, 4881], "disallowed"], [[4882, 4885], "valid"], [[4886, 4887], "disallowed"], [[4888, 4894], "valid"], [[4895, 4895], "valid"], [[4896, 4934], "valid"], [[4935, 4935], "valid"], [[4936, 4954], "valid"], [[4955, 4956], "disallowed"], [[4957, 4958], "valid"], [[4959, 4959], "valid"], [[4960, 4960], "valid", [], "NV8"], [[4961, 4988], "valid", [], "NV8"], [[4989, 4991], "disallowed"], [[4992, 5007], "valid"], [[5008, 5017], "valid", [], "NV8"], [[5018, 5023], "disallowed"], [[5024, 5108], "valid"], [[5109, 5109], "valid"], [[5110, 5111], "disallowed"], [[5112, 5112], "mapped", [5104]], [[5113, 5113], "mapped", [5105]], [[5114, 5114], "mapped", [5106]], [[5115, 5115], "mapped", [5107]], [[5116, 5116], "mapped", [5108]], [[5117, 5117], "mapped", [5109]], [[5118, 5119], "disallowed"], [[5120, 5120], "valid", [], "NV8"], [[5121, 5740], "valid"], [[5741, 5742], "valid", [], "NV8"], [[5743, 5750], "valid"], [[5751, 5759], "valid"], [[5760, 5760], "disallowed"], [[5761, 5786], "valid"], [[5787, 5788], "valid", [], "NV8"], [[5789, 5791], "disallowed"], [[5792, 5866], "valid"], [[5867, 5872], "valid", [], "NV8"], [[5873, 5880], "valid"], [[5881, 5887], "disallowed"], [[5888, 5900], "valid"], [[5901, 5901], "disallowed"], [[5902, 5908], "valid"], [[5909, 5919], "disallowed"], [[5920, 5940], "valid"], [[5941, 5942], "valid", [], "NV8"], [[5943, 5951], "disallowed"], [[5952, 5971], "valid"], [[5972, 5983], "disallowed"], [[5984, 5996], "valid"], [[5997, 5997], "disallowed"], [[5998, 6e3], "valid"], [[6001, 6001], "disallowed"], [[6002, 6003], "valid"], [[6004, 6015], "disallowed"], [[6016, 6067], "valid"], [[6068, 6069], "disallowed"], [[6070, 6099], "valid"], [[6100, 6102], "valid", [], "NV8"], [[6103, 6103], "valid"], [[6104, 6107], "valid", [], "NV8"], [[6108, 6108], "valid"], [[6109, 6109], "valid"], [[6110, 6111], "disallowed"], [[6112, 6121], "valid"], [[6122, 6127], "disallowed"], [[6128, 6137], "valid", [], "NV8"], [[6138, 6143], "disallowed"], [[6144, 6149], "valid", [], "NV8"], [[6150, 6150], "disallowed"], [[6151, 6154], "valid", [], "NV8"], [[6155, 6157], "ignored"], [[6158, 6158], "disallowed"], [[6159, 6159], "disallowed"], [[6160, 6169], "valid"], [[6170, 6175], "disallowed"], [[6176, 6263], "valid"], [[6264, 6271], "disallowed"], [[6272, 6313], "valid"], [[6314, 6314], "valid"], [[6315, 6319], "disallowed"], [[6320, 6389], "valid"], [[6390, 6399], "disallowed"], [[6400, 6428], "valid"], [[6429, 6430], "valid"], [[6431, 6431], "disallowed"], [[6432, 6443], "valid"], [[6444, 6447], "disallowed"], [[6448, 6459], "valid"], [[6460, 6463], "disallowed"], [[6464, 6464], "valid", [], "NV8"], [[6465, 6467], "disallowed"], [[6468, 6469], "valid", [], "NV8"], [[6470, 6509], "valid"], [[6510, 6511], "disallowed"], [[6512, 6516], "valid"], [[6517, 6527], "disallowed"], [[6528, 6569], "valid"], [[6570, 6571], "valid"], [[6572, 6575], "disallowed"], [[6576, 6601], "valid"], [[6602, 6607], "disallowed"], [[6608, 6617], "valid"], [[6618, 6618], "valid", [], "XV8"], [[6619, 6621], "disallowed"], [[6622, 6623], "valid", [], "NV8"], [[6624, 6655], "valid", [], "NV8"], [[6656, 6683], "valid"], [[6684, 6685], "disallowed"], [[6686, 6687], "valid", [], "NV8"], [[6688, 6750], "valid"], [[6751, 6751], "disallowed"], [[6752, 6780], "valid"], [[6781, 6782], "disallowed"], [[6783, 6793], "valid"], [[6794, 6799], "disallowed"], [[6800, 6809], "valid"], [[6810, 6815], "disallowed"], [[6816, 6822], "valid", [], "NV8"], [[6823, 6823], "valid"], [[6824, 6829], "valid", [], "NV8"], [[6830, 6831], "disallowed"], [[6832, 6845], "valid"], [[6846, 6846], "valid", [], "NV8"], [[6847, 6911], "disallowed"], [[6912, 6987], "valid"], [[6988, 6991], "disallowed"], [[6992, 7001], "valid"], [[7002, 7018], "valid", [], "NV8"], [[7019, 7027], "valid"], [[7028, 7036], "valid", [], "NV8"], [[7037, 7039], "disallowed"], [[7040, 7082], "valid"], [[7083, 7085], "valid"], [[7086, 7097], "valid"], [[7098, 7103], "valid"], [[7104, 7155], "valid"], [[7156, 7163], "disallowed"], [[7164, 7167], "valid", [], "NV8"], [[7168, 7223], "valid"], [[7224, 7226], "disallowed"], [[7227, 7231], "valid", [], "NV8"], [[7232, 7241], "valid"], [[7242, 7244], "disallowed"], [[7245, 7293], "valid"], [[7294, 7295], "valid", [], "NV8"], [[7296, 7359], "disallowed"], [[7360, 7367], "valid", [], "NV8"], [[7368, 7375], "disallowed"], [[7376, 7378], "valid"], [[7379, 7379], "valid", [], "NV8"], [[7380, 7410], "valid"], [[7411, 7414], "valid"], [[7415, 7415], "disallowed"], [[7416, 7417], "valid"], [[7418, 7423], "disallowed"], [[7424, 7467], "valid"], [[7468, 7468], "mapped", [97]], [[7469, 7469], "mapped", [230]], [[7470, 7470], "mapped", [98]], [[7471, 7471], "valid"], [[7472, 7472], "mapped", [100]], [[7473, 7473], "mapped", [101]], [[7474, 7474], "mapped", [477]], [[7475, 7475], "mapped", [103]], [[7476, 7476], "mapped", [104]], [[7477, 7477], "mapped", [105]], [[7478, 7478], "mapped", [106]], [[7479, 7479], "mapped", [107]], [[7480, 7480], "mapped", [108]], [[7481, 7481], "mapped", [109]], [[7482, 7482], "mapped", [110]], [[7483, 7483], "valid"], [[7484, 7484], "mapped", [111]], [[7485, 7485], "mapped", [547]], [[7486, 7486], "mapped", [112]], [[7487, 7487], "mapped", [114]], [[7488, 7488], "mapped", [116]], [[7489, 7489], "mapped", [117]], [[7490, 7490], "mapped", [119]], [[7491, 7491], "mapped", [97]], [[7492, 7492], "mapped", [592]], [[7493, 7493], "mapped", [593]], [[7494, 7494], "mapped", [7426]], [[7495, 7495], "mapped", [98]], [[7496, 7496], "mapped", [100]], [[7497, 7497], "mapped", [101]], [[7498, 7498], "mapped", [601]], [[7499, 7499], "mapped", [603]], [[7500, 7500], "mapped", [604]], [[7501, 7501], "mapped", [103]], [[7502, 7502], "valid"], [[7503, 7503], "mapped", [107]], [[7504, 7504], "mapped", [109]], [[7505, 7505], "mapped", [331]], [[7506, 7506], "mapped", [111]], [[7507, 7507], "mapped", [596]], [[7508, 7508], "mapped", [7446]], [[7509, 7509], "mapped", [7447]], [[7510, 7510], "mapped", [112]], [[7511, 7511], "mapped", [116]], [[7512, 7512], "mapped", [117]], [[7513, 7513], "mapped", [7453]], [[7514, 7514], "mapped", [623]], [[7515, 7515], "mapped", [118]], [[7516, 7516], "mapped", [7461]], [[7517, 7517], "mapped", [946]], [[7518, 7518], "mapped", [947]], [[7519, 7519], "mapped", [948]], [[7520, 7520], "mapped", [966]], [[7521, 7521], "mapped", [967]], [[7522, 7522], "mapped", [105]], [[7523, 7523], "mapped", [114]], [[7524, 7524], "mapped", [117]], [[7525, 7525], "mapped", [118]], [[7526, 7526], "mapped", [946]], [[7527, 7527], "mapped", [947]], [[7528, 7528], "mapped", [961]], [[7529, 7529], "mapped", [966]], [[7530, 7530], "mapped", [967]], [[7531, 7531], "valid"], [[7532, 7543], "valid"], [[7544, 7544], "mapped", [1085]], [[7545, 7578], "valid"], [[7579, 7579], "mapped", [594]], [[7580, 7580], "mapped", [99]], [[7581, 7581], "mapped", [597]], [[7582, 7582], "mapped", [240]], [[7583, 7583], "mapped", [604]], [[7584, 7584], "mapped", [102]], [[7585, 7585], "mapped", [607]], [[7586, 7586], "mapped", [609]], [[7587, 7587], "mapped", [613]], [[7588, 7588], "mapped", [616]], [[7589, 7589], "mapped", [617]], [[7590, 7590], "mapped", [618]], [[7591, 7591], "mapped", [7547]], [[7592, 7592], "mapped", [669]], [[7593, 7593], "mapped", [621]], [[7594, 7594], "mapped", [7557]], [[7595, 7595], "mapped", [671]], [[7596, 7596], "mapped", [625]], [[7597, 7597], "mapped", [624]], [[7598, 7598], "mapped", [626]], [[7599, 7599], "mapped", [627]], [[7600, 7600], "mapped", [628]], [[7601, 7601], "mapped", [629]], [[7602, 7602], "mapped", [632]], [[7603, 7603], "mapped", [642]], [[7604, 7604], "mapped", [643]], [[7605, 7605], "mapped", [427]], [[7606, 7606], "mapped", [649]], [[7607, 7607], "mapped", [650]], [[7608, 7608], "mapped", [7452]], [[7609, 7609], "mapped", [651]], [[7610, 7610], "mapped", [652]], [[7611, 7611], "mapped", [122]], [[7612, 7612], "mapped", [656]], [[7613, 7613], "mapped", [657]], [[7614, 7614], "mapped", [658]], [[7615, 7615], "mapped", [952]], [[7616, 7619], "valid"], [[7620, 7626], "valid"], [[7627, 7654], "valid"], [[7655, 7669], "valid"], [[7670, 7675], "disallowed"], [[7676, 7676], "valid"], [[7677, 7677], "valid"], [[7678, 7679], "valid"], [[7680, 7680], "mapped", [7681]], [[7681, 7681], "valid"], [[7682, 7682], "mapped", [7683]], [[7683, 7683], "valid"], [[7684, 7684], "mapped", [7685]], [[7685, 7685], "valid"], [[7686, 7686], "mapped", [7687]], [[7687, 7687], "valid"], [[7688, 7688], "mapped", [7689]], [[7689, 7689], "valid"], [[7690, 7690], "mapped", [7691]], [[7691, 7691], "valid"], [[7692, 7692], "mapped", [7693]], [[7693, 7693], "valid"], [[7694, 7694], "mapped", [7695]], [[7695, 7695], "valid"], [[7696, 7696], "mapped", [7697]], [[7697, 7697], "valid"], [[7698, 7698], "mapped", [7699]], [[7699, 7699], "valid"], [[7700, 7700], "mapped", [7701]], [[7701, 7701], "valid"], [[7702, 7702], "mapped", [7703]], [[7703, 7703], "valid"], [[7704, 7704], "mapped", [7705]], [[7705, 7705], "valid"], [[7706, 7706], "mapped", [7707]], [[7707, 7707], "valid"], [[7708, 7708], "mapped", [7709]], [[7709, 7709], "valid"], [[7710, 7710], "mapped", [7711]], [[7711, 7711], "valid"], [[7712, 7712], "mapped", [7713]], [[7713, 7713], "valid"], [[7714, 7714], "mapped", [7715]], [[7715, 7715], "valid"], [[7716, 7716], "mapped", [7717]], [[7717, 7717], "valid"], [[7718, 7718], "mapped", [7719]], [[7719, 7719], "valid"], [[7720, 7720], "mapped", [7721]], [[7721, 7721], "valid"], [[7722, 7722], "mapped", [7723]], [[7723, 7723], "valid"], [[7724, 7724], "mapped", [7725]], [[7725, 7725], "valid"], [[7726, 7726], "mapped", [7727]], [[7727, 7727], "valid"], [[7728, 7728], "mapped", [7729]], [[7729, 7729], "valid"], [[7730, 7730], "mapped", [7731]], [[7731, 7731], "valid"], [[7732, 7732], "mapped", [7733]], [[7733, 7733], "valid"], [[7734, 7734], "mapped", [7735]], [[7735, 7735], "valid"], [[7736, 7736], "mapped", [7737]], [[7737, 7737], "valid"], [[7738, 7738], "mapped", [7739]], [[7739, 7739], "valid"], [[7740, 7740], "mapped", [7741]], [[7741, 7741], "valid"], [[7742, 7742], "mapped", [7743]], [[7743, 7743], "valid"], [[7744, 7744], "mapped", [7745]], [[7745, 7745], "valid"], [[7746, 7746], "mapped", [7747]], [[7747, 7747], "valid"], [[7748, 7748], "mapped", [7749]], [[7749, 7749], "valid"], [[7750, 7750], "mapped", [7751]], [[7751, 7751], "valid"], [[7752, 7752], "mapped", [7753]], [[7753, 7753], "valid"], [[7754, 7754], "mapped", [7755]], [[7755, 7755], "valid"], [[7756, 7756], "mapped", [7757]], [[7757, 7757], "valid"], [[7758, 7758], "mapped", [7759]], [[7759, 7759], "valid"], [[7760, 7760], "mapped", [7761]], [[7761, 7761], "valid"], [[7762, 7762], "mapped", [7763]], [[7763, 7763], "valid"], [[7764, 7764], "mapped", [7765]], [[7765, 7765], "valid"], [[7766, 7766], "mapped", [7767]], [[7767, 7767], "valid"], [[7768, 7768], "mapped", [7769]], [[7769, 7769], "valid"], [[7770, 7770], "mapped", [7771]], [[7771, 7771], "valid"], [[7772, 7772], "mapped", [7773]], [[7773, 7773], "valid"], [[7774, 7774], "mapped", [7775]], [[7775, 7775], "valid"], [[7776, 7776], "mapped", [7777]], [[7777, 7777], "valid"], [[7778, 7778], "mapped", [7779]], [[7779, 7779], "valid"], [[7780, 7780], "mapped", [7781]], [[7781, 7781], "valid"], [[7782, 7782], "mapped", [7783]], [[7783, 7783], "valid"], [[7784, 7784], "mapped", [7785]], [[7785, 7785], "valid"], [[7786, 7786], "mapped", [7787]], [[7787, 7787], "valid"], [[7788, 7788], "mapped", [7789]], [[7789, 7789], "valid"], [[7790, 7790], "mapped", [7791]], [[7791, 7791], "valid"], [[7792, 7792], "mapped", [7793]], [[7793, 7793], "valid"], [[7794, 7794], "mapped", [7795]], [[7795, 7795], "valid"], [[7796, 7796], "mapped", [7797]], [[7797, 7797], "valid"], [[7798, 7798], "mapped", [7799]], [[7799, 7799], "valid"], [[7800, 7800], "mapped", [7801]], [[7801, 7801], "valid"], [[7802, 7802], "mapped", [7803]], [[7803, 7803], "valid"], [[7804, 7804], "mapped", [7805]], [[7805, 7805], "valid"], [[7806, 7806], "mapped", [7807]], [[7807, 7807], "valid"], [[7808, 7808], "mapped", [7809]], [[7809, 7809], "valid"], [[7810, 7810], "mapped", [7811]], [[7811, 7811], "valid"], [[7812, 7812], "mapped", [7813]], [[7813, 7813], "valid"], [[7814, 7814], "mapped", [7815]], [[7815, 7815], "valid"], [[7816, 7816], "mapped", [7817]], [[7817, 7817], "valid"], [[7818, 7818], "mapped", [7819]], [[7819, 7819], "valid"], [[7820, 7820], "mapped", [7821]], [[7821, 7821], "valid"], [[7822, 7822], "mapped", [7823]], [[7823, 7823], "valid"], [[7824, 7824], "mapped", [7825]], [[7825, 7825], "valid"], [[7826, 7826], "mapped", [7827]], [[7827, 7827], "valid"], [[7828, 7828], "mapped", [7829]], [[7829, 7833], "valid"], [[7834, 7834], "mapped", [97, 702]], [[7835, 7835], "mapped", [7777]], [[7836, 7837], "valid"], [[7838, 7838], "mapped", [115, 115]], [[7839, 7839], "valid"], [[7840, 7840], "mapped", [7841]], [[7841, 7841], "valid"], [[7842, 7842], "mapped", [7843]], [[7843, 7843], "valid"], [[7844, 7844], "mapped", [7845]], [[7845, 7845], "valid"], [[7846, 7846], "mapped", [7847]], [[7847, 7847], "valid"], [[7848, 7848], "mapped", [7849]], [[7849, 7849], "valid"], [[7850, 7850], "mapped", [7851]], [[7851, 7851], "valid"], [[7852, 7852], "mapped", [7853]], [[7853, 7853], "valid"], [[7854, 7854], "mapped", [7855]], [[7855, 7855], "valid"], [[7856, 7856], "mapped", [7857]], [[7857, 7857], "valid"], [[7858, 7858], "mapped", [7859]], [[7859, 7859], "valid"], [[7860, 7860], "mapped", [7861]], [[7861, 7861], "valid"], [[7862, 7862], "mapped", [7863]], [[7863, 7863], "valid"], [[7864, 7864], "mapped", [7865]], [[7865, 7865], "valid"], [[7866, 7866], "mapped", [7867]], [[7867, 7867], "valid"], [[7868, 7868], "mapped", [7869]], [[7869, 7869], "valid"], [[7870, 7870], "mapped", [7871]], [[7871, 7871], "valid"], [[7872, 7872], "mapped", [7873]], [[7873, 7873], "valid"], [[7874, 7874], "mapped", [7875]], [[7875, 7875], "valid"], [[7876, 7876], "mapped", [7877]], [[7877, 7877], "valid"], [[7878, 7878], "mapped", [7879]], [[7879, 7879], "valid"], [[7880, 7880], "mapped", [7881]], [[7881, 7881], "valid"], [[7882, 7882], "mapped", [7883]], [[7883, 7883], "valid"], [[7884, 7884], "mapped", [7885]], [[7885, 7885], "valid"], [[7886, 7886], "mapped", [7887]], [[7887, 7887], "valid"], [[7888, 7888], "mapped", [7889]], [[7889, 7889], "valid"], [[7890, 7890], "mapped", [7891]], [[7891, 7891], "valid"], [[7892, 7892], "mapped", [7893]], [[7893, 7893], "valid"], [[7894, 7894], "mapped", [7895]], [[7895, 7895], "valid"], [[7896, 7896], "mapped", [7897]], [[7897, 7897], "valid"], [[7898, 7898], "mapped", [7899]], [[7899, 7899], "valid"], [[7900, 7900], "mapped", [7901]], [[7901, 7901], "valid"], [[7902, 7902], "mapped", [7903]], [[7903, 7903], "valid"], [[7904, 7904], "mapped", [7905]], [[7905, 7905], "valid"], [[7906, 7906], "mapped", [7907]], [[7907, 7907], "valid"], [[7908, 7908], "mapped", [7909]], [[7909, 7909], "valid"], [[7910, 7910], "mapped", [7911]], [[7911, 7911], "valid"], [[7912, 7912], "mapped", [7913]], [[7913, 7913], "valid"], [[7914, 7914], "mapped", [7915]], [[7915, 7915], "valid"], [[7916, 7916], "mapped", [7917]], [[7917, 7917], "valid"], [[7918, 7918], "mapped", [7919]], [[7919, 7919], "valid"], [[7920, 7920], "mapped", [7921]], [[7921, 7921], "valid"], [[7922, 7922], "mapped", [7923]], [[7923, 7923], "valid"], [[7924, 7924], "mapped", [7925]], [[7925, 7925], "valid"], [[7926, 7926], "mapped", [7927]], [[7927, 7927], "valid"], [[7928, 7928], "mapped", [7929]], [[7929, 7929], "valid"], [[7930, 7930], "mapped", [7931]], [[7931, 7931], "valid"], [[7932, 7932], "mapped", [7933]], [[7933, 7933], "valid"], [[7934, 7934], "mapped", [7935]], [[7935, 7935], "valid"], [[7936, 7943], "valid"], [[7944, 7944], "mapped", [7936]], [[7945, 7945], "mapped", [7937]], [[7946, 7946], "mapped", [7938]], [[7947, 7947], "mapped", [7939]], [[7948, 7948], "mapped", [7940]], [[7949, 7949], "mapped", [7941]], [[7950, 7950], "mapped", [7942]], [[7951, 7951], "mapped", [7943]], [[7952, 7957], "valid"], [[7958, 7959], "disallowed"], [[7960, 7960], "mapped", [7952]], [[7961, 7961], "mapped", [7953]], [[7962, 7962], "mapped", [7954]], [[7963, 7963], "mapped", [7955]], [[7964, 7964], "mapped", [7956]], [[7965, 7965], "mapped", [7957]], [[7966, 7967], "disallowed"], [[7968, 7975], "valid"], [[7976, 7976], "mapped", [7968]], [[7977, 7977], "mapped", [7969]], [[7978, 7978], "mapped", [7970]], [[7979, 7979], "mapped", [7971]], [[7980, 7980], "mapped", [7972]], [[7981, 7981], "mapped", [7973]], [[7982, 7982], "mapped", [7974]], [[7983, 7983], "mapped", [7975]], [[7984, 7991], "valid"], [[7992, 7992], "mapped", [7984]], [[7993, 7993], "mapped", [7985]], [[7994, 7994], "mapped", [7986]], [[7995, 7995], "mapped", [7987]], [[7996, 7996], "mapped", [7988]], [[7997, 7997], "mapped", [7989]], [[7998, 7998], "mapped", [7990]], [[7999, 7999], "mapped", [7991]], [[8e3, 8005], "valid"], [[8006, 8007], "disallowed"], [[8008, 8008], "mapped", [8e3]], [[8009, 8009], "mapped", [8001]], [[8010, 8010], "mapped", [8002]], [[8011, 8011], "mapped", [8003]], [[8012, 8012], "mapped", [8004]], [[8013, 8013], "mapped", [8005]], [[8014, 8015], "disallowed"], [[8016, 8023], "valid"], [[8024, 8024], "disallowed"], [[8025, 8025], "mapped", [8017]], [[8026, 8026], "disallowed"], [[8027, 8027], "mapped", [8019]], [[8028, 8028], "disallowed"], [[8029, 8029], "mapped", [8021]], [[8030, 8030], "disallowed"], [[8031, 8031], "mapped", [8023]], [[8032, 8039], "valid"], [[8040, 8040], "mapped", [8032]], [[8041, 8041], "mapped", [8033]], [[8042, 8042], "mapped", [8034]], [[8043, 8043], "mapped", [8035]], [[8044, 8044], "mapped", [8036]], [[8045, 8045], "mapped", [8037]], [[8046, 8046], "mapped", [8038]], [[8047, 8047], "mapped", [8039]], [[8048, 8048], "valid"], [[8049, 8049], "mapped", [940]], [[8050, 8050], "valid"], [[8051, 8051], "mapped", [941]], [[8052, 8052], "valid"], [[8053, 8053], "mapped", [942]], [[8054, 8054], "valid"], [[8055, 8055], "mapped", [943]], [[8056, 8056], "valid"], [[8057, 8057], "mapped", [972]], [[8058, 8058], "valid"], [[8059, 8059], "mapped", [973]], [[8060, 8060], "valid"], [[8061, 8061], "mapped", [974]], [[8062, 8063], "disallowed"], [[8064, 8064], "mapped", [7936, 953]], [[8065, 8065], "mapped", [7937, 953]], [[8066, 8066], "mapped", [7938, 953]], [[8067, 8067], "mapped", [7939, 953]], [[8068, 8068], "mapped", [7940, 953]], [[8069, 8069], "mapped", [7941, 953]], [[8070, 8070], "mapped", [7942, 953]], [[8071, 8071], "mapped", [7943, 953]], [[8072, 8072], "mapped", [7936, 953]], [[8073, 8073], "mapped", [7937, 953]], [[8074, 8074], "mapped", [7938, 953]], [[8075, 8075], "mapped", [7939, 953]], [[8076, 8076], "mapped", [7940, 953]], [[8077, 8077], "mapped", [7941, 953]], [[8078, 8078], "mapped", [7942, 953]], [[8079, 8079], "mapped", [7943, 953]], [[8080, 8080], "mapped", [7968, 953]], [[8081, 8081], "mapped", [7969, 953]], [[8082, 8082], "mapped", [7970, 953]], [[8083, 8083], "mapped", [7971, 953]], [[8084, 8084], "mapped", [7972, 953]], [[8085, 8085], "mapped", [7973, 953]], [[8086, 8086], "mapped", [7974, 953]], [[8087, 8087], "mapped", [7975, 953]], [[8088, 8088], "mapped", [7968, 953]], [[8089, 8089], "mapped", [7969, 953]], [[8090, 8090], "mapped", [7970, 953]], [[8091, 8091], "mapped", [7971, 953]], [[8092, 8092], "mapped", [7972, 953]], [[8093, 8093], "mapped", [7973, 953]], [[8094, 8094], "mapped", [7974, 953]], [[8095, 8095], "mapped", [7975, 953]], [[8096, 8096], "mapped", [8032, 953]], [[8097, 8097], "mapped", [8033, 953]], [[8098, 8098], "mapped", [8034, 953]], [[8099, 8099], "mapped", [8035, 953]], [[8100, 8100], "mapped", [8036, 953]], [[8101, 8101], "mapped", [8037, 953]], [[8102, 8102], "mapped", [8038, 953]], [[8103, 8103], "mapped", [8039, 953]], [[8104, 8104], "mapped", [8032, 953]], [[8105, 8105], "mapped", [8033, 953]], [[8106, 8106], "mapped", [8034, 953]], [[8107, 8107], "mapped", [8035, 953]], [[8108, 8108], "mapped", [8036, 953]], [[8109, 8109], "mapped", [8037, 953]], [[8110, 8110], "mapped", [8038, 953]], [[8111, 8111], "mapped", [8039, 953]], [[8112, 8113], "valid"], [[8114, 8114], "mapped", [8048, 953]], [[8115, 8115], "mapped", [945, 953]], [[8116, 8116], "mapped", [940, 953]], [[8117, 8117], "disallowed"], [[8118, 8118], "valid"], [[8119, 8119], "mapped", [8118, 953]], [[8120, 8120], "mapped", [8112]], [[8121, 8121], "mapped", [8113]], [[8122, 8122], "mapped", [8048]], [[8123, 8123], "mapped", [940]], [[8124, 8124], "mapped", [945, 953]], [[8125, 8125], "disallowed_STD3_mapped", [32, 787]], [[8126, 8126], "mapped", [953]], [[8127, 8127], "disallowed_STD3_mapped", [32, 787]], [[8128, 8128], "disallowed_STD3_mapped", [32, 834]], [[8129, 8129], "disallowed_STD3_mapped", [32, 776, 834]], [[8130, 8130], "mapped", [8052, 953]], [[8131, 8131], "mapped", [951, 953]], [[8132, 8132], "mapped", [942, 953]], [[8133, 8133], "disallowed"], [[8134, 8134], "valid"], [[8135, 8135], "mapped", [8134, 953]], [[8136, 8136], "mapped", [8050]], [[8137, 8137], "mapped", [941]], [[8138, 8138], "mapped", [8052]], [[8139, 8139], "mapped", [942]], [[8140, 8140], "mapped", [951, 953]], [[8141, 8141], "disallowed_STD3_mapped", [32, 787, 768]], [[8142, 8142], "disallowed_STD3_mapped", [32, 787, 769]], [[8143, 8143], "disallowed_STD3_mapped", [32, 787, 834]], [[8144, 8146], "valid"], [[8147, 8147], "mapped", [912]], [[8148, 8149], "disallowed"], [[8150, 8151], "valid"], [[8152, 8152], "mapped", [8144]], [[8153, 8153], "mapped", [8145]], [[8154, 8154], "mapped", [8054]], [[8155, 8155], "mapped", [943]], [[8156, 8156], "disallowed"], [[8157, 8157], "disallowed_STD3_mapped", [32, 788, 768]], [[8158, 8158], "disallowed_STD3_mapped", [32, 788, 769]], [[8159, 8159], "disallowed_STD3_mapped", [32, 788, 834]], [[8160, 8162], "valid"], [[8163, 8163], "mapped", [944]], [[8164, 8167], "valid"], [[8168, 8168], "mapped", [8160]], [[8169, 8169], "mapped", [8161]], [[8170, 8170], "mapped", [8058]], [[8171, 8171], "mapped", [973]], [[8172, 8172], "mapped", [8165]], [[8173, 8173], "disallowed_STD3_mapped", [32, 776, 768]], [[8174, 8174], "disallowed_STD3_mapped", [32, 776, 769]], [[8175, 8175], "disallowed_STD3_mapped", [96]], [[8176, 8177], "disallowed"], [[8178, 8178], "mapped", [8060, 953]], [[8179, 8179], "mapped", [969, 953]], [[8180, 8180], "mapped", [974, 953]], [[8181, 8181], "disallowed"], [[8182, 8182], "valid"], [[8183, 8183], "mapped", [8182, 953]], [[8184, 8184], "mapped", [8056]], [[8185, 8185], "mapped", [972]], [[8186, 8186], "mapped", [8060]], [[8187, 8187], "mapped", [974]], [[8188, 8188], "mapped", [969, 953]], [[8189, 8189], "disallowed_STD3_mapped", [32, 769]], [[8190, 8190], "disallowed_STD3_mapped", [32, 788]], [[8191, 8191], "disallowed"], [[8192, 8202], "disallowed_STD3_mapped", [32]], [[8203, 8203], "ignored"], [[8204, 8205], "deviation", []], [[8206, 8207], "disallowed"], [[8208, 8208], "valid", [], "NV8"], [[8209, 8209], "mapped", [8208]], [[8210, 8214], "valid", [], "NV8"], [[8215, 8215], "disallowed_STD3_mapped", [32, 819]], [[8216, 8227], "valid", [], "NV8"], [[8228, 8230], "disallowed"], [[8231, 8231], "valid", [], "NV8"], [[8232, 8238], "disallowed"], [[8239, 8239], "disallowed_STD3_mapped", [32]], [[8240, 8242], "valid", [], "NV8"], [[8243, 8243], "mapped", [8242, 8242]], [[8244, 8244], "mapped", [8242, 8242, 8242]], [[8245, 8245], "valid", [], "NV8"], [[8246, 8246], "mapped", [8245, 8245]], [[8247, 8247], "mapped", [8245, 8245, 8245]], [[8248, 8251], "valid", [], "NV8"], [[8252, 8252], "disallowed_STD3_mapped", [33, 33]], [[8253, 8253], "valid", [], "NV8"], [[8254, 8254], "disallowed_STD3_mapped", [32, 773]], [[8255, 8262], "valid", [], "NV8"], [[8263, 8263], "disallowed_STD3_mapped", [63, 63]], [[8264, 8264], "disallowed_STD3_mapped", [63, 33]], [[8265, 8265], "disallowed_STD3_mapped", [33, 63]], [[8266, 8269], "valid", [], "NV8"], [[8270, 8274], "valid", [], "NV8"], [[8275, 8276], "valid", [], "NV8"], [[8277, 8278], "valid", [], "NV8"], [[8279, 8279], "mapped", [8242, 8242, 8242, 8242]], [[8280, 8286], "valid", [], "NV8"], [[8287, 8287], "disallowed_STD3_mapped", [32]], [[8288, 8288], "ignored"], [[8289, 8291], "disallowed"], [[8292, 8292], "ignored"], [[8293, 8293], "disallowed"], [[8294, 8297], "disallowed"], [[8298, 8303], "disallowed"], [[8304, 8304], "mapped", [48]], [[8305, 8305], "mapped", [105]], [[8306, 8307], "disallowed"], [[8308, 8308], "mapped", [52]], [[8309, 8309], "mapped", [53]], [[8310, 8310], "mapped", [54]], [[8311, 8311], "mapped", [55]], [[8312, 8312], "mapped", [56]], [[8313, 8313], "mapped", [57]], [[8314, 8314], "disallowed_STD3_mapped", [43]], [[8315, 8315], "mapped", [8722]], [[8316, 8316], "disallowed_STD3_mapped", [61]], [[8317, 8317], "disallowed_STD3_mapped", [40]], [[8318, 8318], "disallowed_STD3_mapped", [41]], [[8319, 8319], "mapped", [110]], [[8320, 8320], "mapped", [48]], [[8321, 8321], "mapped", [49]], [[8322, 8322], "mapped", [50]], [[8323, 8323], "mapped", [51]], [[8324, 8324], "mapped", [52]], [[8325, 8325], "mapped", [53]], [[8326, 8326], "mapped", [54]], [[8327, 8327], "mapped", [55]], [[8328, 8328], "mapped", [56]], [[8329, 8329], "mapped", [57]], [[8330, 8330], "disallowed_STD3_mapped", [43]], [[8331, 8331], "mapped", [8722]], [[8332, 8332], "disallowed_STD3_mapped", [61]], [[8333, 8333], "disallowed_STD3_mapped", [40]], [[8334, 8334], "disallowed_STD3_mapped", [41]], [[8335, 8335], "disallowed"], [[8336, 8336], "mapped", [97]], [[8337, 8337], "mapped", [101]], [[8338, 8338], "mapped", [111]], [[8339, 8339], "mapped", [120]], [[8340, 8340], "mapped", [601]], [[8341, 8341], "mapped", [104]], [[8342, 8342], "mapped", [107]], [[8343, 8343], "mapped", [108]], [[8344, 8344], "mapped", [109]], [[8345, 8345], "mapped", [110]], [[8346, 8346], "mapped", [112]], [[8347, 8347], "mapped", [115]], [[8348, 8348], "mapped", [116]], [[8349, 8351], "disallowed"], [[8352, 8359], "valid", [], "NV8"], [[8360, 8360], "mapped", [114, 115]], [[8361, 8362], "valid", [], "NV8"], [[8363, 8363], "valid", [], "NV8"], [[8364, 8364], "valid", [], "NV8"], [[8365, 8367], "valid", [], "NV8"], [[8368, 8369], "valid", [], "NV8"], [[8370, 8373], "valid", [], "NV8"], [[8374, 8376], "valid", [], "NV8"], [[8377, 8377], "valid", [], "NV8"], [[8378, 8378], "valid", [], "NV8"], [[8379, 8381], "valid", [], "NV8"], [[8382, 8382], "valid", [], "NV8"], [[8383, 8399], "disallowed"], [[8400, 8417], "valid", [], "NV8"], [[8418, 8419], "valid", [], "NV8"], [[8420, 8426], "valid", [], "NV8"], [[8427, 8427], "valid", [], "NV8"], [[8428, 8431], "valid", [], "NV8"], [[8432, 8432], "valid", [], "NV8"], [[8433, 8447], "disallowed"], [[8448, 8448], "disallowed_STD3_mapped", [97, 47, 99]], [[8449, 8449], "disallowed_STD3_mapped", [97, 47, 115]], [[8450, 8450], "mapped", [99]], [[8451, 8451], "mapped", [176, 99]], [[8452, 8452], "valid", [], "NV8"], [[8453, 8453], "disallowed_STD3_mapped", [99, 47, 111]], [[8454, 8454], "disallowed_STD3_mapped", [99, 47, 117]], [[8455, 8455], "mapped", [603]], [[8456, 8456], "valid", [], "NV8"], [[8457, 8457], "mapped", [176, 102]], [[8458, 8458], "mapped", [103]], [[8459, 8462], "mapped", [104]], [[8463, 8463], "mapped", [295]], [[8464, 8465], "mapped", [105]], [[8466, 8467], "mapped", [108]], [[8468, 8468], "valid", [], "NV8"], [[8469, 8469], "mapped", [110]], [[8470, 8470], "mapped", [110, 111]], [[8471, 8472], "valid", [], "NV8"], [[8473, 8473], "mapped", [112]], [[8474, 8474], "mapped", [113]], [[8475, 8477], "mapped", [114]], [[8478, 8479], "valid", [], "NV8"], [[8480, 8480], "mapped", [115, 109]], [[8481, 8481], "mapped", [116, 101, 108]], [[8482, 8482], "mapped", [116, 109]], [[8483, 8483], "valid", [], "NV8"], [[8484, 8484], "mapped", [122]], [[8485, 8485], "valid", [], "NV8"], [[8486, 8486], "mapped", [969]], [[8487, 8487], "valid", [], "NV8"], [[8488, 8488], "mapped", [122]], [[8489, 8489], "valid", [], "NV8"], [[8490, 8490], "mapped", [107]], [[8491, 8491], "mapped", [229]], [[8492, 8492], "mapped", [98]], [[8493, 8493], "mapped", [99]], [[8494, 8494], "valid", [], "NV8"], [[8495, 8496], "mapped", [101]], [[8497, 8497], "mapped", [102]], [[8498, 8498], "disallowed"], [[8499, 8499], "mapped", [109]], [[8500, 8500], "mapped", [111]], [[8501, 8501], "mapped", [1488]], [[8502, 8502], "mapped", [1489]], [[8503, 8503], "mapped", [1490]], [[8504, 8504], "mapped", [1491]], [[8505, 8505], "mapped", [105]], [[8506, 8506], "valid", [], "NV8"], [[8507, 8507], "mapped", [102, 97, 120]], [[8508, 8508], "mapped", [960]], [[8509, 8510], "mapped", [947]], [[8511, 8511], "mapped", [960]], [[8512, 8512], "mapped", [8721]], [[8513, 8516], "valid", [], "NV8"], [[8517, 8518], "mapped", [100]], [[8519, 8519], "mapped", [101]], [[8520, 8520], "mapped", [105]], [[8521, 8521], "mapped", [106]], [[8522, 8523], "valid", [], "NV8"], [[8524, 8524], "valid", [], "NV8"], [[8525, 8525], "valid", [], "NV8"], [[8526, 8526], "valid"], [[8527, 8527], "valid", [], "NV8"], [[8528, 8528], "mapped", [49, 8260, 55]], [[8529, 8529], "mapped", [49, 8260, 57]], [[8530, 8530], "mapped", [49, 8260, 49, 48]], [[8531, 8531], "mapped", [49, 8260, 51]], [[8532, 8532], "mapped", [50, 8260, 51]], [[8533, 8533], "mapped", [49, 8260, 53]], [[8534, 8534], "mapped", [50, 8260, 53]], [[8535, 8535], "mapped", [51, 8260, 53]], [[8536, 8536], "mapped", [52, 8260, 53]], [[8537, 8537], "mapped", [49, 8260, 54]], [[8538, 8538], "mapped", [53, 8260, 54]], [[8539, 8539], "mapped", [49, 8260, 56]], [[8540, 8540], "mapped", [51, 8260, 56]], [[8541, 8541], "mapped", [53, 8260, 56]], [[8542, 8542], "mapped", [55, 8260, 56]], [[8543, 8543], "mapped", [49, 8260]], [[8544, 8544], "mapped", [105]], [[8545, 8545], "mapped", [105, 105]], [[8546, 8546], "mapped", [105, 105, 105]], [[8547, 8547], "mapped", [105, 118]], [[8548, 8548], "mapped", [118]], [[8549, 8549], "mapped", [118, 105]], [[8550, 8550], "mapped", [118, 105, 105]], [[8551, 8551], "mapped", [118, 105, 105, 105]], [[8552, 8552], "mapped", [105, 120]], [[8553, 8553], "mapped", [120]], [[8554, 8554], "mapped", [120, 105]], [[8555, 8555], "mapped", [120, 105, 105]], [[8556, 8556], "mapped", [108]], [[8557, 8557], "mapped", [99]], [[8558, 8558], "mapped", [100]], [[8559, 8559], "mapped", [109]], [[8560, 8560], "mapped", [105]], [[8561, 8561], "mapped", [105, 105]], [[8562, 8562], "mapped", [105, 105, 105]], [[8563, 8563], "mapped", [105, 118]], [[8564, 8564], "mapped", [118]], [[8565, 8565], "mapped", [118, 105]], [[8566, 8566], "mapped", [118, 105, 105]], [[8567, 8567], "mapped", [118, 105, 105, 105]], [[8568, 8568], "mapped", [105, 120]], [[8569, 8569], "mapped", [120]], [[8570, 8570], "mapped", [120, 105]], [[8571, 8571], "mapped", [120, 105, 105]], [[8572, 8572], "mapped", [108]], [[8573, 8573], "mapped", [99]], [[8574, 8574], "mapped", [100]], [[8575, 8575], "mapped", [109]], [[8576, 8578], "valid", [], "NV8"], [[8579, 8579], "disallowed"], [[8580, 8580], "valid"], [[8581, 8584], "valid", [], "NV8"], [[8585, 8585], "mapped", [48, 8260, 51]], [[8586, 8587], "valid", [], "NV8"], [[8588, 8591], "disallowed"], [[8592, 8682], "valid", [], "NV8"], [[8683, 8691], "valid", [], "NV8"], [[8692, 8703], "valid", [], "NV8"], [[8704, 8747], "valid", [], "NV8"], [[8748, 8748], "mapped", [8747, 8747]], [[8749, 8749], "mapped", [8747, 8747, 8747]], [[8750, 8750], "valid", [], "NV8"], [[8751, 8751], "mapped", [8750, 8750]], [[8752, 8752], "mapped", [8750, 8750, 8750]], [[8753, 8799], "valid", [], "NV8"], [[8800, 8800], "disallowed_STD3_valid"], [[8801, 8813], "valid", [], "NV8"], [[8814, 8815], "disallowed_STD3_valid"], [[8816, 8945], "valid", [], "NV8"], [[8946, 8959], "valid", [], "NV8"], [[8960, 8960], "valid", [], "NV8"], [[8961, 8961], "valid", [], "NV8"], [[8962, 9e3], "valid", [], "NV8"], [[9001, 9001], "mapped", [12296]], [[9002, 9002], "mapped", [12297]], [[9003, 9082], "valid", [], "NV8"], [[9083, 9083], "valid", [], "NV8"], [[9084, 9084], "valid", [], "NV8"], [[9085, 9114], "valid", [], "NV8"], [[9115, 9166], "valid", [], "NV8"], [[9167, 9168], "valid", [], "NV8"], [[9169, 9179], "valid", [], "NV8"], [[9180, 9191], "valid", [], "NV8"], [[9192, 9192], "valid", [], "NV8"], [[9193, 9203], "valid", [], "NV8"], [[9204, 9210], "valid", [], "NV8"], [[9211, 9215], "disallowed"], [[9216, 9252], "valid", [], "NV8"], [[9253, 9254], "valid", [], "NV8"], [[9255, 9279], "disallowed"], [[9280, 9290], "valid", [], "NV8"], [[9291, 9311], "disallowed"], [[9312, 9312], "mapped", [49]], [[9313, 9313], "mapped", [50]], [[9314, 9314], "mapped", [51]], [[9315, 9315], "mapped", [52]], [[9316, 9316], "mapped", [53]], [[9317, 9317], "mapped", [54]], [[9318, 9318], "mapped", [55]], [[9319, 9319], "mapped", [56]], [[9320, 9320], "mapped", [57]], [[9321, 9321], "mapped", [49, 48]], [[9322, 9322], "mapped", [49, 49]], [[9323, 9323], "mapped", [49, 50]], [[9324, 9324], "mapped", [49, 51]], [[9325, 9325], "mapped", [49, 52]], [[9326, 9326], "mapped", [49, 53]], [[9327, 9327], "mapped", [49, 54]], [[9328, 9328], "mapped", [49, 55]], [[9329, 9329], "mapped", [49, 56]], [[9330, 9330], "mapped", [49, 57]], [[9331, 9331], "mapped", [50, 48]], [[9332, 9332], "disallowed_STD3_mapped", [40, 49, 41]], [[9333, 9333], "disallowed_STD3_mapped", [40, 50, 41]], [[9334, 9334], "disallowed_STD3_mapped", [40, 51, 41]], [[9335, 9335], "disallowed_STD3_mapped", [40, 52, 41]], [[9336, 9336], "disallowed_STD3_mapped", [40, 53, 41]], [[9337, 9337], "disallowed_STD3_mapped", [40, 54, 41]], [[9338, 9338], "disallowed_STD3_mapped", [40, 55, 41]], [[9339, 9339], "disallowed_STD3_mapped", [40, 56, 41]], [[9340, 9340], "disallowed_STD3_mapped", [40, 57, 41]], [[9341, 9341], "disallowed_STD3_mapped", [40, 49, 48, 41]], [[9342, 9342], "disallowed_STD3_mapped", [40, 49, 49, 41]], [[9343, 9343], "disallowed_STD3_mapped", [40, 49, 50, 41]], [[9344, 9344], "disallowed_STD3_mapped", [40, 49, 51, 41]], [[9345, 9345], "disallowed_STD3_mapped", [40, 49, 52, 41]], [[9346, 9346], "disallowed_STD3_mapped", [40, 49, 53, 41]], [[9347, 9347], "disallowed_STD3_mapped", [40, 49, 54, 41]], [[9348, 9348], "disallowed_STD3_mapped", [40, 49, 55, 41]], [[9349, 9349], "disallowed_STD3_mapped", [40, 49, 56, 41]], [[9350, 9350], "disallowed_STD3_mapped", [40, 49, 57, 41]], [[9351, 9351], "disallowed_STD3_mapped", [40, 50, 48, 41]], [[9352, 9371], "disallowed"], [[9372, 9372], "disallowed_STD3_mapped", [40, 97, 41]], [[9373, 9373], "disallowed_STD3_mapped", [40, 98, 41]], [[9374, 9374], "disallowed_STD3_mapped", [40, 99, 41]], [[9375, 9375], "disallowed_STD3_mapped", [40, 100, 41]], [[9376, 9376], "disallowed_STD3_mapped", [40, 101, 41]], [[9377, 9377], "disallowed_STD3_mapped", [40, 102, 41]], [[9378, 9378], "disallowed_STD3_mapped", [40, 103, 41]], [[9379, 9379], "disallowed_STD3_mapped", [40, 104, 41]], [[9380, 9380], "disallowed_STD3_mapped", [40, 105, 41]], [[9381, 9381], "disallowed_STD3_mapped", [40, 106, 41]], [[9382, 9382], "disallowed_STD3_mapped", [40, 107, 41]], [[9383, 9383], "disallowed_STD3_mapped", [40, 108, 41]], [[9384, 9384], "disallowed_STD3_mapped", [40, 109, 41]], [[9385, 9385], "disallowed_STD3_mapped", [40, 110, 41]], [[9386, 9386], "disallowed_STD3_mapped", [40, 111, 41]], [[9387, 9387], "disallowed_STD3_mapped", [40, 112, 41]], [[9388, 9388], "disallowed_STD3_mapped", [40, 113, 41]], [[9389, 9389], "disallowed_STD3_mapped", [40, 114, 41]], [[9390, 9390], "disallowed_STD3_mapped", [40, 115, 41]], [[9391, 9391], "disallowed_STD3_mapped", [40, 116, 41]], [[9392, 9392], "disallowed_STD3_mapped", [40, 117, 41]], [[9393, 9393], "disallowed_STD3_mapped", [40, 118, 41]], [[9394, 9394], "disallowed_STD3_mapped", [40, 119, 41]], [[9395, 9395], "disallowed_STD3_mapped", [40, 120, 41]], [[9396, 9396], "disallowed_STD3_mapped", [40, 121, 41]], [[9397, 9397], "disallowed_STD3_mapped", [40, 122, 41]], [[9398, 9398], "mapped", [97]], [[9399, 9399], "mapped", [98]], [[9400, 9400], "mapped", [99]], [[9401, 9401], "mapped", [100]], [[9402, 9402], "mapped", [101]], [[9403, 9403], "mapped", [102]], [[9404, 9404], "mapped", [103]], [[9405, 9405], "mapped", [104]], [[9406, 9406], "mapped", [105]], [[9407, 9407], "mapped", [106]], [[9408, 9408], "mapped", [107]], [[9409, 9409], "mapped", [108]], [[9410, 9410], "mapped", [109]], [[9411, 9411], "mapped", [110]], [[9412, 9412], "mapped", [111]], [[9413, 9413], "mapped", [112]], [[9414, 9414], "mapped", [113]], [[9415, 9415], "mapped", [114]], [[9416, 9416], "mapped", [115]], [[9417, 9417], "mapped", [116]], [[9418, 9418], "mapped", [117]], [[9419, 9419], "mapped", [118]], [[9420, 9420], "mapped", [119]], [[9421, 9421], "mapped", [120]], [[9422, 9422], "mapped", [121]], [[9423, 9423], "mapped", [122]], [[9424, 9424], "mapped", [97]], [[9425, 9425], "mapped", [98]], [[9426, 9426], "mapped", [99]], [[9427, 9427], "mapped", [100]], [[9428, 9428], "mapped", [101]], [[9429, 9429], "mapped", [102]], [[9430, 9430], "mapped", [103]], [[9431, 9431], "mapped", [104]], [[9432, 9432], "mapped", [105]], [[9433, 9433], "mapped", [106]], [[9434, 9434], "mapped", [107]], [[9435, 9435], "mapped", [108]], [[9436, 9436], "mapped", [109]], [[9437, 9437], "mapped", [110]], [[9438, 9438], "mapped", [111]], [[9439, 9439], "mapped", [112]], [[9440, 9440], "mapped", [113]], [[9441, 9441], "mapped", [114]], [[9442, 9442], "mapped", [115]], [[9443, 9443], "mapped", [116]], [[9444, 9444], "mapped", [117]], [[9445, 9445], "mapped", [118]], [[9446, 9446], "mapped", [119]], [[9447, 9447], "mapped", [120]], [[9448, 9448], "mapped", [121]], [[9449, 9449], "mapped", [122]], [[9450, 9450], "mapped", [48]], [[9451, 9470], "valid", [], "NV8"], [[9471, 9471], "valid", [], "NV8"], [[9472, 9621], "valid", [], "NV8"], [[9622, 9631], "valid", [], "NV8"], [[9632, 9711], "valid", [], "NV8"], [[9712, 9719], "valid", [], "NV8"], [[9720, 9727], "valid", [], "NV8"], [[9728, 9747], "valid", [], "NV8"], [[9748, 9749], "valid", [], "NV8"], [[9750, 9751], "valid", [], "NV8"], [[9752, 9752], "valid", [], "NV8"], [[9753, 9753], "valid", [], "NV8"], [[9754, 9839], "valid", [], "NV8"], [[9840, 9841], "valid", [], "NV8"], [[9842, 9853], "valid", [], "NV8"], [[9854, 9855], "valid", [], "NV8"], [[9856, 9865], "valid", [], "NV8"], [[9866, 9873], "valid", [], "NV8"], [[9874, 9884], "valid", [], "NV8"], [[9885, 9885], "valid", [], "NV8"], [[9886, 9887], "valid", [], "NV8"], [[9888, 9889], "valid", [], "NV8"], [[9890, 9905], "valid", [], "NV8"], [[9906, 9906], "valid", [], "NV8"], [[9907, 9916], "valid", [], "NV8"], [[9917, 9919], "valid", [], "NV8"], [[9920, 9923], "valid", [], "NV8"], [[9924, 9933], "valid", [], "NV8"], [[9934, 9934], "valid", [], "NV8"], [[9935, 9953], "valid", [], "NV8"], [[9954, 9954], "valid", [], "NV8"], [[9955, 9955], "valid", [], "NV8"], [[9956, 9959], "valid", [], "NV8"], [[9960, 9983], "valid", [], "NV8"], [[9984, 9984], "valid", [], "NV8"], [[9985, 9988], "valid", [], "NV8"], [[9989, 9989], "valid", [], "NV8"], [[9990, 9993], "valid", [], "NV8"], [[9994, 9995], "valid", [], "NV8"], [[9996, 10023], "valid", [], "NV8"], [[10024, 10024], "valid", [], "NV8"], [[10025, 10059], "valid", [], "NV8"], [[10060, 10060], "valid", [], "NV8"], [[10061, 10061], "valid", [], "NV8"], [[10062, 10062], "valid", [], "NV8"], [[10063, 10066], "valid", [], "NV8"], [[10067, 10069], "valid", [], "NV8"], [[10070, 10070], "valid", [], "NV8"], [[10071, 10071], "valid", [], "NV8"], [[10072, 10078], "valid", [], "NV8"], [[10079, 10080], "valid", [], "NV8"], [[10081, 10087], "valid", [], "NV8"], [[10088, 10101], "valid", [], "NV8"], [[10102, 10132], "valid", [], "NV8"], [[10133, 10135], "valid", [], "NV8"], [[10136, 10159], "valid", [], "NV8"], [[10160, 10160], "valid", [], "NV8"], [[10161, 10174], "valid", [], "NV8"], [[10175, 10175], "valid", [], "NV8"], [[10176, 10182], "valid", [], "NV8"], [[10183, 10186], "valid", [], "NV8"], [[10187, 10187], "valid", [], "NV8"], [[10188, 10188], "valid", [], "NV8"], [[10189, 10189], "valid", [], "NV8"], [[10190, 10191], "valid", [], "NV8"], [[10192, 10219], "valid", [], "NV8"], [[10220, 10223], "valid", [], "NV8"], [[10224, 10239], "valid", [], "NV8"], [[10240, 10495], "valid", [], "NV8"], [[10496, 10763], "valid", [], "NV8"], [[10764, 10764], "mapped", [8747, 8747, 8747, 8747]], [[10765, 10867], "valid", [], "NV8"], [[10868, 10868], "disallowed_STD3_mapped", [58, 58, 61]], [[10869, 10869], "disallowed_STD3_mapped", [61, 61]], [[10870, 10870], "disallowed_STD3_mapped", [61, 61, 61]], [[10871, 10971], "valid", [], "NV8"], [[10972, 10972], "mapped", [10973, 824]], [[10973, 11007], "valid", [], "NV8"], [[11008, 11021], "valid", [], "NV8"], [[11022, 11027], "valid", [], "NV8"], [[11028, 11034], "valid", [], "NV8"], [[11035, 11039], "valid", [], "NV8"], [[11040, 11043], "valid", [], "NV8"], [[11044, 11084], "valid", [], "NV8"], [[11085, 11087], "valid", [], "NV8"], [[11088, 11092], "valid", [], "NV8"], [[11093, 11097], "valid", [], "NV8"], [[11098, 11123], "valid", [], "NV8"], [[11124, 11125], "disallowed"], [[11126, 11157], "valid", [], "NV8"], [[11158, 11159], "disallowed"], [[11160, 11193], "valid", [], "NV8"], [[11194, 11196], "disallowed"], [[11197, 11208], "valid", [], "NV8"], [[11209, 11209], "disallowed"], [[11210, 11217], "valid", [], "NV8"], [[11218, 11243], "disallowed"], [[11244, 11247], "valid", [], "NV8"], [[11248, 11263], "disallowed"], [[11264, 11264], "mapped", [11312]], [[11265, 11265], "mapped", [11313]], [[11266, 11266], "mapped", [11314]], [[11267, 11267], "mapped", [11315]], [[11268, 11268], "mapped", [11316]], [[11269, 11269], "mapped", [11317]], [[11270, 11270], "mapped", [11318]], [[11271, 11271], "mapped", [11319]], [[11272, 11272], "mapped", [11320]], [[11273, 11273], "mapped", [11321]], [[11274, 11274], "mapped", [11322]], [[11275, 11275], "mapped", [11323]], [[11276, 11276], "mapped", [11324]], [[11277, 11277], "mapped", [11325]], [[11278, 11278], "mapped", [11326]], [[11279, 11279], "mapped", [11327]], [[11280, 11280], "mapped", [11328]], [[11281, 11281], "mapped", [11329]], [[11282, 11282], "mapped", [11330]], [[11283, 11283], "mapped", [11331]], [[11284, 11284], "mapped", [11332]], [[11285, 11285], "mapped", [11333]], [[11286, 11286], "mapped", [11334]], [[11287, 11287], "mapped", [11335]], [[11288, 11288], "mapped", [11336]], [[11289, 11289], "mapped", [11337]], [[11290, 11290], "mapped", [11338]], [[11291, 11291], "mapped", [11339]], [[11292, 11292], "mapped", [11340]], [[11293, 11293], "mapped", [11341]], [[11294, 11294], "mapped", [11342]], [[11295, 11295], "mapped", [11343]], [[11296, 11296], "mapped", [11344]], [[11297, 11297], "mapped", [11345]], [[11298, 11298], "mapped", [11346]], [[11299, 11299], "mapped", [11347]], [[11300, 11300], "mapped", [11348]], [[11301, 11301], "mapped", [11349]], [[11302, 11302], "mapped", [11350]], [[11303, 11303], "mapped", [11351]], [[11304, 11304], "mapped", [11352]], [[11305, 11305], "mapped", [11353]], [[11306, 11306], "mapped", [11354]], [[11307, 11307], "mapped", [11355]], [[11308, 11308], "mapped", [11356]], [[11309, 11309], "mapped", [11357]], [[11310, 11310], "mapped", [11358]], [[11311, 11311], "disallowed"], [[11312, 11358], "valid"], [[11359, 11359], "disallowed"], [[11360, 11360], "mapped", [11361]], [[11361, 11361], "valid"], [[11362, 11362], "mapped", [619]], [[11363, 11363], "mapped", [7549]], [[11364, 11364], "mapped", [637]], [[11365, 11366], "valid"], [[11367, 11367], "mapped", [11368]], [[11368, 11368], "valid"], [[11369, 11369], "mapped", [11370]], [[11370, 11370], "valid"], [[11371, 11371], "mapped", [11372]], [[11372, 11372], "valid"], [[11373, 11373], "mapped", [593]], [[11374, 11374], "mapped", [625]], [[11375, 11375], "mapped", [592]], [[11376, 11376], "mapped", [594]], [[11377, 11377], "valid"], [[11378, 11378], "mapped", [11379]], [[11379, 11379], "valid"], [[11380, 11380], "valid"], [[11381, 11381], "mapped", [11382]], [[11382, 11383], "valid"], [[11384, 11387], "valid"], [[11388, 11388], "mapped", [106]], [[11389, 11389], "mapped", [118]], [[11390, 11390], "mapped", [575]], [[11391, 11391], "mapped", [576]], [[11392, 11392], "mapped", [11393]], [[11393, 11393], "valid"], [[11394, 11394], "mapped", [11395]], [[11395, 11395], "valid"], [[11396, 11396], "mapped", [11397]], [[11397, 11397], "valid"], [[11398, 11398], "mapped", [11399]], [[11399, 11399], "valid"], [[11400, 11400], "mapped", [11401]], [[11401, 11401], "valid"], [[11402, 11402], "mapped", [11403]], [[11403, 11403], "valid"], [[11404, 11404], "mapped", [11405]], [[11405, 11405], "valid"], [[11406, 11406], "mapped", [11407]], [[11407, 11407], "valid"], [[11408, 11408], "mapped", [11409]], [[11409, 11409], "valid"], [[11410, 11410], "mapped", [11411]], [[11411, 11411], "valid"], [[11412, 11412], "mapped", [11413]], [[11413, 11413], "valid"], [[11414, 11414], "mapped", [11415]], [[11415, 11415], "valid"], [[11416, 11416], "mapped", [11417]], [[11417, 11417], "valid"], [[11418, 11418], "mapped", [11419]], [[11419, 11419], "valid"], [[11420, 11420], "mapped", [11421]], [[11421, 11421], "valid"], [[11422, 11422], "mapped", [11423]], [[11423, 11423], "valid"], [[11424, 11424], "mapped", [11425]], [[11425, 11425], "valid"], [[11426, 11426], "mapped", [11427]], [[11427, 11427], "valid"], [[11428, 11428], "mapped", [11429]], [[11429, 11429], "valid"], [[11430, 11430], "mapped", [11431]], [[11431, 11431], "valid"], [[11432, 11432], "mapped", [11433]], [[11433, 11433], "valid"], [[11434, 11434], "mapped", [11435]], [[11435, 11435], "valid"], [[11436, 11436], "mapped", [11437]], [[11437, 11437], "valid"], [[11438, 11438], "mapped", [11439]], [[11439, 11439], "valid"], [[11440, 11440], "mapped", [11441]], [[11441, 11441], "valid"], [[11442, 11442], "mapped", [11443]], [[11443, 11443], "valid"], [[11444, 11444], "mapped", [11445]], [[11445, 11445], "valid"], [[11446, 11446], "mapped", [11447]], [[11447, 11447], "valid"], [[11448, 11448], "mapped", [11449]], [[11449, 11449], "valid"], [[11450, 11450], "mapped", [11451]], [[11451, 11451], "valid"], [[11452, 11452], "mapped", [11453]], [[11453, 11453], "valid"], [[11454, 11454], "mapped", [11455]], [[11455, 11455], "valid"], [[11456, 11456], "mapped", [11457]], [[11457, 11457], "valid"], [[11458, 11458], "mapped", [11459]], [[11459, 11459], "valid"], [[11460, 11460], "mapped", [11461]], [[11461, 11461], "valid"], [[11462, 11462], "mapped", [11463]], [[11463, 11463], "valid"], [[11464, 11464], "mapped", [11465]], [[11465, 11465], "valid"], [[11466, 11466], "mapped", [11467]], [[11467, 11467], "valid"], [[11468, 11468], "mapped", [11469]], [[11469, 11469], "valid"], [[11470, 11470], "mapped", [11471]], [[11471, 11471], "valid"], [[11472, 11472], "mapped", [11473]], [[11473, 11473], "valid"], [[11474, 11474], "mapped", [11475]], [[11475, 11475], "valid"], [[11476, 11476], "mapped", [11477]], [[11477, 11477], "valid"], [[11478, 11478], "mapped", [11479]], [[11479, 11479], "valid"], [[11480, 11480], "mapped", [11481]], [[11481, 11481], "valid"], [[11482, 11482], "mapped", [11483]], [[11483, 11483], "valid"], [[11484, 11484], "mapped", [11485]], [[11485, 11485], "valid"], [[11486, 11486], "mapped", [11487]], [[11487, 11487], "valid"], [[11488, 11488], "mapped", [11489]], [[11489, 11489], "valid"], [[11490, 11490], "mapped", [11491]], [[11491, 11492], "valid"], [[11493, 11498], "valid", [], "NV8"], [[11499, 11499], "mapped", [11500]], [[11500, 11500], "valid"], [[11501, 11501], "mapped", [11502]], [[11502, 11505], "valid"], [[11506, 11506], "mapped", [11507]], [[11507, 11507], "valid"], [[11508, 11512], "disallowed"], [[11513, 11519], "valid", [], "NV8"], [[11520, 11557], "valid"], [[11558, 11558], "disallowed"], [[11559, 11559], "valid"], [[11560, 11564], "disallowed"], [[11565, 11565], "valid"], [[11566, 11567], "disallowed"], [[11568, 11621], "valid"], [[11622, 11623], "valid"], [[11624, 11630], "disallowed"], [[11631, 11631], "mapped", [11617]], [[11632, 11632], "valid", [], "NV8"], [[11633, 11646], "disallowed"], [[11647, 11647], "valid"], [[11648, 11670], "valid"], [[11671, 11679], "disallowed"], [[11680, 11686], "valid"], [[11687, 11687], "disallowed"], [[11688, 11694], "valid"], [[11695, 11695], "disallowed"], [[11696, 11702], "valid"], [[11703, 11703], "disallowed"], [[11704, 11710], "valid"], [[11711, 11711], "disallowed"], [[11712, 11718], "valid"], [[11719, 11719], "disallowed"], [[11720, 11726], "valid"], [[11727, 11727], "disallowed"], [[11728, 11734], "valid"], [[11735, 11735], "disallowed"], [[11736, 11742], "valid"], [[11743, 11743], "disallowed"], [[11744, 11775], "valid"], [[11776, 11799], "valid", [], "NV8"], [[11800, 11803], "valid", [], "NV8"], [[11804, 11805], "valid", [], "NV8"], [[11806, 11822], "valid", [], "NV8"], [[11823, 11823], "valid"], [[11824, 11824], "valid", [], "NV8"], [[11825, 11825], "valid", [], "NV8"], [[11826, 11835], "valid", [], "NV8"], [[11836, 11842], "valid", [], "NV8"], [[11843, 11903], "disallowed"], [[11904, 11929], "valid", [], "NV8"], [[11930, 11930], "disallowed"], [[11931, 11934], "valid", [], "NV8"], [[11935, 11935], "mapped", [27597]], [[11936, 12018], "valid", [], "NV8"], [[12019, 12019], "mapped", [40863]], [[12020, 12031], "disallowed"], [[12032, 12032], "mapped", [19968]], [[12033, 12033], "mapped", [20008]], [[12034, 12034], "mapped", [20022]], [[12035, 12035], "mapped", [20031]], [[12036, 12036], "mapped", [20057]], [[12037, 12037], "mapped", [20101]], [[12038, 12038], "mapped", [20108]], [[12039, 12039], "mapped", [20128]], [[12040, 12040], "mapped", [20154]], [[12041, 12041], "mapped", [20799]], [[12042, 12042], "mapped", [20837]], [[12043, 12043], "mapped", [20843]], [[12044, 12044], "mapped", [20866]], [[12045, 12045], "mapped", [20886]], [[12046, 12046], "mapped", [20907]], [[12047, 12047], "mapped", [20960]], [[12048, 12048], "mapped", [20981]], [[12049, 12049], "mapped", [20992]], [[12050, 12050], "mapped", [21147]], [[12051, 12051], "mapped", [21241]], [[12052, 12052], "mapped", [21269]], [[12053, 12053], "mapped", [21274]], [[12054, 12054], "mapped", [21304]], [[12055, 12055], "mapped", [21313]], [[12056, 12056], "mapped", [21340]], [[12057, 12057], "mapped", [21353]], [[12058, 12058], "mapped", [21378]], [[12059, 12059], "mapped", [21430]], [[12060, 12060], "mapped", [21448]], [[12061, 12061], "mapped", [21475]], [[12062, 12062], "mapped", [22231]], [[12063, 12063], "mapped", [22303]], [[12064, 12064], "mapped", [22763]], [[12065, 12065], "mapped", [22786]], [[12066, 12066], "mapped", [22794]], [[12067, 12067], "mapped", [22805]], [[12068, 12068], "mapped", [22823]], [[12069, 12069], "mapped", [22899]], [[12070, 12070], "mapped", [23376]], [[12071, 12071], "mapped", [23424]], [[12072, 12072], "mapped", [23544]], [[12073, 12073], "mapped", [23567]], [[12074, 12074], "mapped", [23586]], [[12075, 12075], "mapped", [23608]], [[12076, 12076], "mapped", [23662]], [[12077, 12077], "mapped", [23665]], [[12078, 12078], "mapped", [24027]], [[12079, 12079], "mapped", [24037]], [[12080, 12080], "mapped", [24049]], [[12081, 12081], "mapped", [24062]], [[12082, 12082], "mapped", [24178]], [[12083, 12083], "mapped", [24186]], [[12084, 12084], "mapped", [24191]], [[12085, 12085], "mapped", [24308]], [[12086, 12086], "mapped", [24318]], [[12087, 12087], "mapped", [24331]], [[12088, 12088], "mapped", [24339]], [[12089, 12089], "mapped", [24400]], [[12090, 12090], "mapped", [24417]], [[12091, 12091], "mapped", [24435]], [[12092, 12092], "mapped", [24515]], [[12093, 12093], "mapped", [25096]], [[12094, 12094], "mapped", [25142]], [[12095, 12095], "mapped", [25163]], [[12096, 12096], "mapped", [25903]], [[12097, 12097], "mapped", [25908]], [[12098, 12098], "mapped", [25991]], [[12099, 12099], "mapped", [26007]], [[12100, 12100], "mapped", [26020]], [[12101, 12101], "mapped", [26041]], [[12102, 12102], "mapped", [26080]], [[12103, 12103], "mapped", [26085]], [[12104, 12104], "mapped", [26352]], [[12105, 12105], "mapped", [26376]], [[12106, 12106], "mapped", [26408]], [[12107, 12107], "mapped", [27424]], [[12108, 12108], "mapped", [27490]], [[12109, 12109], "mapped", [27513]], [[12110, 12110], "mapped", [27571]], [[12111, 12111], "mapped", [27595]], [[12112, 12112], "mapped", [27604]], [[12113, 12113], "mapped", [27611]], [[12114, 12114], "mapped", [27663]], [[12115, 12115], "mapped", [27668]], [[12116, 12116], "mapped", [27700]], [[12117, 12117], "mapped", [28779]], [[12118, 12118], "mapped", [29226]], [[12119, 12119], "mapped", [29238]], [[12120, 12120], "mapped", [29243]], [[12121, 12121], "mapped", [29247]], [[12122, 12122], "mapped", [29255]], [[12123, 12123], "mapped", [29273]], [[12124, 12124], "mapped", [29275]], [[12125, 12125], "mapped", [29356]], [[12126, 12126], "mapped", [29572]], [[12127, 12127], "mapped", [29577]], [[12128, 12128], "mapped", [29916]], [[12129, 12129], "mapped", [29926]], [[12130, 12130], "mapped", [29976]], [[12131, 12131], "mapped", [29983]], [[12132, 12132], "mapped", [29992]], [[12133, 12133], "mapped", [3e4]], [[12134, 12134], "mapped", [30091]], [[12135, 12135], "mapped", [30098]], [[12136, 12136], "mapped", [30326]], [[12137, 12137], "mapped", [30333]], [[12138, 12138], "mapped", [30382]], [[12139, 12139], "mapped", [30399]], [[12140, 12140], "mapped", [30446]], [[12141, 12141], "mapped", [30683]], [[12142, 12142], "mapped", [30690]], [[12143, 12143], "mapped", [30707]], [[12144, 12144], "mapped", [31034]], [[12145, 12145], "mapped", [31160]], [[12146, 12146], "mapped", [31166]], [[12147, 12147], "mapped", [31348]], [[12148, 12148], "mapped", [31435]], [[12149, 12149], "mapped", [31481]], [[12150, 12150], "mapped", [31859]], [[12151, 12151], "mapped", [31992]], [[12152, 12152], "mapped", [32566]], [[12153, 12153], "mapped", [32593]], [[12154, 12154], "mapped", [32650]], [[12155, 12155], "mapped", [32701]], [[12156, 12156], "mapped", [32769]], [[12157, 12157], "mapped", [32780]], [[12158, 12158], "mapped", [32786]], [[12159, 12159], "mapped", [32819]], [[12160, 12160], "mapped", [32895]], [[12161, 12161], "mapped", [32905]], [[12162, 12162], "mapped", [33251]], [[12163, 12163], "mapped", [33258]], [[12164, 12164], "mapped", [33267]], [[12165, 12165], "mapped", [33276]], [[12166, 12166], "mapped", [33292]], [[12167, 12167], "mapped", [33307]], [[12168, 12168], "mapped", [33311]], [[12169, 12169], "mapped", [33390]], [[12170, 12170], "mapped", [33394]], [[12171, 12171], "mapped", [33400]], [[12172, 12172], "mapped", [34381]], [[12173, 12173], "mapped", [34411]], [[12174, 12174], "mapped", [34880]], [[12175, 12175], "mapped", [34892]], [[12176, 12176], "mapped", [34915]], [[12177, 12177], "mapped", [35198]], [[12178, 12178], "mapped", [35211]], [[12179, 12179], "mapped", [35282]], [[12180, 12180], "mapped", [35328]], [[12181, 12181], "mapped", [35895]], [[12182, 12182], "mapped", [35910]], [[12183, 12183], "mapped", [35925]], [[12184, 12184], "mapped", [35960]], [[12185, 12185], "mapped", [35997]], [[12186, 12186], "mapped", [36196]], [[12187, 12187], "mapped", [36208]], [[12188, 12188], "mapped", [36275]], [[12189, 12189], "mapped", [36523]], [[12190, 12190], "mapped", [36554]], [[12191, 12191], "mapped", [36763]], [[12192, 12192], "mapped", [36784]], [[12193, 12193], "mapped", [36789]], [[12194, 12194], "mapped", [37009]], [[12195, 12195], "mapped", [37193]], [[12196, 12196], "mapped", [37318]], [[12197, 12197], "mapped", [37324]], [[12198, 12198], "mapped", [37329]], [[12199, 12199], "mapped", [38263]], [[12200, 12200], "mapped", [38272]], [[12201, 12201], "mapped", [38428]], [[12202, 12202], "mapped", [38582]], [[12203, 12203], "mapped", [38585]], [[12204, 12204], "mapped", [38632]], [[12205, 12205], "mapped", [38737]], [[12206, 12206], "mapped", [38750]], [[12207, 12207], "mapped", [38754]], [[12208, 12208], "mapped", [38761]], [[12209, 12209], "mapped", [38859]], [[12210, 12210], "mapped", [38893]], [[12211, 12211], "mapped", [38899]], [[12212, 12212], "mapped", [38913]], [[12213, 12213], "mapped", [39080]], [[12214, 12214], "mapped", [39131]], [[12215, 12215], "mapped", [39135]], [[12216, 12216], "mapped", [39318]], [[12217, 12217], "mapped", [39321]], [[12218, 12218], "mapped", [39340]], [[12219, 12219], "mapped", [39592]], [[12220, 12220], "mapped", [39640]], [[12221, 12221], "mapped", [39647]], [[12222, 12222], "mapped", [39717]], [[12223, 12223], "mapped", [39727]], [[12224, 12224], "mapped", [39730]], [[12225, 12225], "mapped", [39740]], [[12226, 12226], "mapped", [39770]], [[12227, 12227], "mapped", [40165]], [[12228, 12228], "mapped", [40565]], [[12229, 12229], "mapped", [40575]], [[12230, 12230], "mapped", [40613]], [[12231, 12231], "mapped", [40635]], [[12232, 12232], "mapped", [40643]], [[12233, 12233], "mapped", [40653]], [[12234, 12234], "mapped", [40657]], [[12235, 12235], "mapped", [40697]], [[12236, 12236], "mapped", [40701]], [[12237, 12237], "mapped", [40718]], [[12238, 12238], "mapped", [40723]], [[12239, 12239], "mapped", [40736]], [[12240, 12240], "mapped", [40763]], [[12241, 12241], "mapped", [40778]], [[12242, 12242], "mapped", [40786]], [[12243, 12243], "mapped", [40845]], [[12244, 12244], "mapped", [40860]], [[12245, 12245], "mapped", [40864]], [[12246, 12271], "disallowed"], [[12272, 12283], "disallowed"], [[12284, 12287], "disallowed"], [[12288, 12288], "disallowed_STD3_mapped", [32]], [[12289, 12289], "valid", [], "NV8"], [[12290, 12290], "mapped", [46]], [[12291, 12292], "valid", [], "NV8"], [[12293, 12295], "valid"], [[12296, 12329], "valid", [], "NV8"], [[12330, 12333], "valid"], [[12334, 12341], "valid", [], "NV8"], [[12342, 12342], "mapped", [12306]], [[12343, 12343], "valid", [], "NV8"], [[12344, 12344], "mapped", [21313]], [[12345, 12345], "mapped", [21316]], [[12346, 12346], "mapped", [21317]], [[12347, 12347], "valid", [], "NV8"], [[12348, 12348], "valid"], [[12349, 12349], "valid", [], "NV8"], [[12350, 12350], "valid", [], "NV8"], [[12351, 12351], "valid", [], "NV8"], [[12352, 12352], "disallowed"], [[12353, 12436], "valid"], [[12437, 12438], "valid"], [[12439, 12440], "disallowed"], [[12441, 12442], "valid"], [[12443, 12443], "disallowed_STD3_mapped", [32, 12441]], [[12444, 12444], "disallowed_STD3_mapped", [32, 12442]], [[12445, 12446], "valid"], [[12447, 12447], "mapped", [12424, 12426]], [[12448, 12448], "valid", [], "NV8"], [[12449, 12542], "valid"], [[12543, 12543], "mapped", [12467, 12488]], [[12544, 12548], "disallowed"], [[12549, 12588], "valid"], [[12589, 12589], "valid"], [[12590, 12592], "disallowed"], [[12593, 12593], "mapped", [4352]], [[12594, 12594], "mapped", [4353]], [[12595, 12595], "mapped", [4522]], [[12596, 12596], "mapped", [4354]], [[12597, 12597], "mapped", [4524]], [[12598, 12598], "mapped", [4525]], [[12599, 12599], "mapped", [4355]], [[12600, 12600], "mapped", [4356]], [[12601, 12601], "mapped", [4357]], [[12602, 12602], "mapped", [4528]], [[12603, 12603], "mapped", [4529]], [[12604, 12604], "mapped", [4530]], [[12605, 12605], "mapped", [4531]], [[12606, 12606], "mapped", [4532]], [[12607, 12607], "mapped", [4533]], [[12608, 12608], "mapped", [4378]], [[12609, 12609], "mapped", [4358]], [[12610, 12610], "mapped", [4359]], [[12611, 12611], "mapped", [4360]], [[12612, 12612], "mapped", [4385]], [[12613, 12613], "mapped", [4361]], [[12614, 12614], "mapped", [4362]], [[12615, 12615], "mapped", [4363]], [[12616, 12616], "mapped", [4364]], [[12617, 12617], "mapped", [4365]], [[12618, 12618], "mapped", [4366]], [[12619, 12619], "mapped", [4367]], [[12620, 12620], "mapped", [4368]], [[12621, 12621], "mapped", [4369]], [[12622, 12622], "mapped", [4370]], [[12623, 12623], "mapped", [4449]], [[12624, 12624], "mapped", [4450]], [[12625, 12625], "mapped", [4451]], [[12626, 12626], "mapped", [4452]], [[12627, 12627], "mapped", [4453]], [[12628, 12628], "mapped", [4454]], [[12629, 12629], "mapped", [4455]], [[12630, 12630], "mapped", [4456]], [[12631, 12631], "mapped", [4457]], [[12632, 12632], "mapped", [4458]], [[12633, 12633], "mapped", [4459]], [[12634, 12634], "mapped", [4460]], [[12635, 12635], "mapped", [4461]], [[12636, 12636], "mapped", [4462]], [[12637, 12637], "mapped", [4463]], [[12638, 12638], "mapped", [4464]], [[12639, 12639], "mapped", [4465]], [[12640, 12640], "mapped", [4466]], [[12641, 12641], "mapped", [4467]], [[12642, 12642], "mapped", [4468]], [[12643, 12643], "mapped", [4469]], [[12644, 12644], "disallowed"], [[12645, 12645], "mapped", [4372]], [[12646, 12646], "mapped", [4373]], [[12647, 12647], "mapped", [4551]], [[12648, 12648], "mapped", [4552]], [[12649, 12649], "mapped", [4556]], [[12650, 12650], "mapped", [4558]], [[12651, 12651], "mapped", [4563]], [[12652, 12652], "mapped", [4567]], [[12653, 12653], "mapped", [4569]], [[12654, 12654], "mapped", [4380]], [[12655, 12655], "mapped", [4573]], [[12656, 12656], "mapped", [4575]], [[12657, 12657], "mapped", [4381]], [[12658, 12658], "mapped", [4382]], [[12659, 12659], "mapped", [4384]], [[12660, 12660], "mapped", [4386]], [[12661, 12661], "mapped", [4387]], [[12662, 12662], "mapped", [4391]], [[12663, 12663], "mapped", [4393]], [[12664, 12664], "mapped", [4395]], [[12665, 12665], "mapped", [4396]], [[12666, 12666], "mapped", [4397]], [[12667, 12667], "mapped", [4398]], [[12668, 12668], "mapped", [4399]], [[12669, 12669], "mapped", [4402]], [[12670, 12670], "mapped", [4406]], [[12671, 12671], "mapped", [4416]], [[12672, 12672], "mapped", [4423]], [[12673, 12673], "mapped", [4428]], [[12674, 12674], "mapped", [4593]], [[12675, 12675], "mapped", [4594]], [[12676, 12676], "mapped", [4439]], [[12677, 12677], "mapped", [4440]], [[12678, 12678], "mapped", [4441]], [[12679, 12679], "mapped", [4484]], [[12680, 12680], "mapped", [4485]], [[12681, 12681], "mapped", [4488]], [[12682, 12682], "mapped", [4497]], [[12683, 12683], "mapped", [4498]], [[12684, 12684], "mapped", [4500]], [[12685, 12685], "mapped", [4510]], [[12686, 12686], "mapped", [4513]], [[12687, 12687], "disallowed"], [[12688, 12689], "valid", [], "NV8"], [[12690, 12690], "mapped", [19968]], [[12691, 12691], "mapped", [20108]], [[12692, 12692], "mapped", [19977]], [[12693, 12693], "mapped", [22235]], [[12694, 12694], "mapped", [19978]], [[12695, 12695], "mapped", [20013]], [[12696, 12696], "mapped", [19979]], [[12697, 12697], "mapped", [30002]], [[12698, 12698], "mapped", [20057]], [[12699, 12699], "mapped", [19993]], [[12700, 12700], "mapped", [19969]], [[12701, 12701], "mapped", [22825]], [[12702, 12702], "mapped", [22320]], [[12703, 12703], "mapped", [20154]], [[12704, 12727], "valid"], [[12728, 12730], "valid"], [[12731, 12735], "disallowed"], [[12736, 12751], "valid", [], "NV8"], [[12752, 12771], "valid", [], "NV8"], [[12772, 12783], "disallowed"], [[12784, 12799], "valid"], [[12800, 12800], "disallowed_STD3_mapped", [40, 4352, 41]], [[12801, 12801], "disallowed_STD3_mapped", [40, 4354, 41]], [[12802, 12802], "disallowed_STD3_mapped", [40, 4355, 41]], [[12803, 12803], "disallowed_STD3_mapped", [40, 4357, 41]], [[12804, 12804], "disallowed_STD3_mapped", [40, 4358, 41]], [[12805, 12805], "disallowed_STD3_mapped", [40, 4359, 41]], [[12806, 12806], "disallowed_STD3_mapped", [40, 4361, 41]], [[12807, 12807], "disallowed_STD3_mapped", [40, 4363, 41]], [[12808, 12808], "disallowed_STD3_mapped", [40, 4364, 41]], [[12809, 12809], "disallowed_STD3_mapped", [40, 4366, 41]], [[12810, 12810], "disallowed_STD3_mapped", [40, 4367, 41]], [[12811, 12811], "disallowed_STD3_mapped", [40, 4368, 41]], [[12812, 12812], "disallowed_STD3_mapped", [40, 4369, 41]], [[12813, 12813], "disallowed_STD3_mapped", [40, 4370, 41]], [[12814, 12814], "disallowed_STD3_mapped", [40, 44032, 41]], [[12815, 12815], "disallowed_STD3_mapped", [40, 45208, 41]], [[12816, 12816], "disallowed_STD3_mapped", [40, 45796, 41]], [[12817, 12817], "disallowed_STD3_mapped", [40, 46972, 41]], [[12818, 12818], "disallowed_STD3_mapped", [40, 47560, 41]], [[12819, 12819], "disallowed_STD3_mapped", [40, 48148, 41]], [[12820, 12820], "disallowed_STD3_mapped", [40, 49324, 41]], [[12821, 12821], "disallowed_STD3_mapped", [40, 50500, 41]], [[12822, 12822], "disallowed_STD3_mapped", [40, 51088, 41]], [[12823, 12823], "disallowed_STD3_mapped", [40, 52264, 41]], [[12824, 12824], "disallowed_STD3_mapped", [40, 52852, 41]], [[12825, 12825], "disallowed_STD3_mapped", [40, 53440, 41]], [[12826, 12826], "disallowed_STD3_mapped", [40, 54028, 41]], [[12827, 12827], "disallowed_STD3_mapped", [40, 54616, 41]], [[12828, 12828], "disallowed_STD3_mapped", [40, 51452, 41]], [[12829, 12829], "disallowed_STD3_mapped", [40, 50724, 51204, 41]], [[12830, 12830], "disallowed_STD3_mapped", [40, 50724, 54980, 41]], [[12831, 12831], "disallowed"], [[12832, 12832], "disallowed_STD3_mapped", [40, 19968, 41]], [[12833, 12833], "disallowed_STD3_mapped", [40, 20108, 41]], [[12834, 12834], "disallowed_STD3_mapped", [40, 19977, 41]], [[12835, 12835], "disallowed_STD3_mapped", [40, 22235, 41]], [[12836, 12836], "disallowed_STD3_mapped", [40, 20116, 41]], [[12837, 12837], "disallowed_STD3_mapped", [40, 20845, 41]], [[12838, 12838], "disallowed_STD3_mapped", [40, 19971, 41]], [[12839, 12839], "disallowed_STD3_mapped", [40, 20843, 41]], [[12840, 12840], "disallowed_STD3_mapped", [40, 20061, 41]], [[12841, 12841], "disallowed_STD3_mapped", [40, 21313, 41]], [[12842, 12842], "disallowed_STD3_mapped", [40, 26376, 41]], [[12843, 12843], "disallowed_STD3_mapped", [40, 28779, 41]], [[12844, 12844], "disallowed_STD3_mapped", [40, 27700, 41]], [[12845, 12845], "disallowed_STD3_mapped", [40, 26408, 41]], [[12846, 12846], "disallowed_STD3_mapped", [40, 37329, 41]], [[12847, 12847], "disallowed_STD3_mapped", [40, 22303, 41]], [[12848, 12848], "disallowed_STD3_mapped", [40, 26085, 41]], [[12849, 12849], "disallowed_STD3_mapped", [40, 26666, 41]], [[12850, 12850], "disallowed_STD3_mapped", [40, 26377, 41]], [[12851, 12851], "disallowed_STD3_mapped", [40, 31038, 41]], [[12852, 12852], "disallowed_STD3_mapped", [40, 21517, 41]], [[12853, 12853], "disallowed_STD3_mapped", [40, 29305, 41]], [[12854, 12854], "disallowed_STD3_mapped", [40, 36001, 41]], [[12855, 12855], "disallowed_STD3_mapped", [40, 31069, 41]], [[12856, 12856], "disallowed_STD3_mapped", [40, 21172, 41]], [[12857, 12857], "disallowed_STD3_mapped", [40, 20195, 41]], [[12858, 12858], "disallowed_STD3_mapped", [40, 21628, 41]], [[12859, 12859], "disallowed_STD3_mapped", [40, 23398, 41]], [[12860, 12860], "disallowed_STD3_mapped", [40, 30435, 41]], [[12861, 12861], "disallowed_STD3_mapped", [40, 20225, 41]], [[12862, 12862], "disallowed_STD3_mapped", [40, 36039, 41]], [[12863, 12863], "disallowed_STD3_mapped", [40, 21332, 41]], [[12864, 12864], "disallowed_STD3_mapped", [40, 31085, 41]], [[12865, 12865], "disallowed_STD3_mapped", [40, 20241, 41]], [[12866, 12866], "disallowed_STD3_mapped", [40, 33258, 41]], [[12867, 12867], "disallowed_STD3_mapped", [40, 33267, 41]], [[12868, 12868], "mapped", [21839]], [[12869, 12869], "mapped", [24188]], [[12870, 12870], "mapped", [25991]], [[12871, 12871], "mapped", [31631]], [[12872, 12879], "valid", [], "NV8"], [[12880, 12880], "mapped", [112, 116, 101]], [[12881, 12881], "mapped", [50, 49]], [[12882, 12882], "mapped", [50, 50]], [[12883, 12883], "mapped", [50, 51]], [[12884, 12884], "mapped", [50, 52]], [[12885, 12885], "mapped", [50, 53]], [[12886, 12886], "mapped", [50, 54]], [[12887, 12887], "mapped", [50, 55]], [[12888, 12888], "mapped", [50, 56]], [[12889, 12889], "mapped", [50, 57]], [[12890, 12890], "mapped", [51, 48]], [[12891, 12891], "mapped", [51, 49]], [[12892, 12892], "mapped", [51, 50]], [[12893, 12893], "mapped", [51, 51]], [[12894, 12894], "mapped", [51, 52]], [[12895, 12895], "mapped", [51, 53]], [[12896, 12896], "mapped", [4352]], [[12897, 12897], "mapped", [4354]], [[12898, 12898], "mapped", [4355]], [[12899, 12899], "mapped", [4357]], [[12900, 12900], "mapped", [4358]], [[12901, 12901], "mapped", [4359]], [[12902, 12902], "mapped", [4361]], [[12903, 12903], "mapped", [4363]], [[12904, 12904], "mapped", [4364]], [[12905, 12905], "mapped", [4366]], [[12906, 12906], "mapped", [4367]], [[12907, 12907], "mapped", [4368]], [[12908, 12908], "mapped", [4369]], [[12909, 12909], "mapped", [4370]], [[12910, 12910], "mapped", [44032]], [[12911, 12911], "mapped", [45208]], [[12912, 12912], "mapped", [45796]], [[12913, 12913], "mapped", [46972]], [[12914, 12914], "mapped", [47560]], [[12915, 12915], "mapped", [48148]], [[12916, 12916], "mapped", [49324]], [[12917, 12917], "mapped", [50500]], [[12918, 12918], "mapped", [51088]], [[12919, 12919], "mapped", [52264]], [[12920, 12920], "mapped", [52852]], [[12921, 12921], "mapped", [53440]], [[12922, 12922], "mapped", [54028]], [[12923, 12923], "mapped", [54616]], [[12924, 12924], "mapped", [52280, 44256]], [[12925, 12925], "mapped", [51452, 51032]], [[12926, 12926], "mapped", [50864]], [[12927, 12927], "valid", [], "NV8"], [[12928, 12928], "mapped", [19968]], [[12929, 12929], "mapped", [20108]], [[12930, 12930], "mapped", [19977]], [[12931, 12931], "mapped", [22235]], [[12932, 12932], "mapped", [20116]], [[12933, 12933], "mapped", [20845]], [[12934, 12934], "mapped", [19971]], [[12935, 12935], "mapped", [20843]], [[12936, 12936], "mapped", [20061]], [[12937, 12937], "mapped", [21313]], [[12938, 12938], "mapped", [26376]], [[12939, 12939], "mapped", [28779]], [[12940, 12940], "mapped", [27700]], [[12941, 12941], "mapped", [26408]], [[12942, 12942], "mapped", [37329]], [[12943, 12943], "mapped", [22303]], [[12944, 12944], "mapped", [26085]], [[12945, 12945], "mapped", [26666]], [[12946, 12946], "mapped", [26377]], [[12947, 12947], "mapped", [31038]], [[12948, 12948], "mapped", [21517]], [[12949, 12949], "mapped", [29305]], [[12950, 12950], "mapped", [36001]], [[12951, 12951], "mapped", [31069]], [[12952, 12952], "mapped", [21172]], [[12953, 12953], "mapped", [31192]], [[12954, 12954], "mapped", [30007]], [[12955, 12955], "mapped", [22899]], [[12956, 12956], "mapped", [36969]], [[12957, 12957], "mapped", [20778]], [[12958, 12958], "mapped", [21360]], [[12959, 12959], "mapped", [27880]], [[12960, 12960], "mapped", [38917]], [[12961, 12961], "mapped", [20241]], [[12962, 12962], "mapped", [20889]], [[12963, 12963], "mapped", [27491]], [[12964, 12964], "mapped", [19978]], [[12965, 12965], "mapped", [20013]], [[12966, 12966], "mapped", [19979]], [[12967, 12967], "mapped", [24038]], [[12968, 12968], "mapped", [21491]], [[12969, 12969], "mapped", [21307]], [[12970, 12970], "mapped", [23447]], [[12971, 12971], "mapped", [23398]], [[12972, 12972], "mapped", [30435]], [[12973, 12973], "mapped", [20225]], [[12974, 12974], "mapped", [36039]], [[12975, 12975], "mapped", [21332]], [[12976, 12976], "mapped", [22812]], [[12977, 12977], "mapped", [51, 54]], [[12978, 12978], "mapped", [51, 55]], [[12979, 12979], "mapped", [51, 56]], [[12980, 12980], "mapped", [51, 57]], [[12981, 12981], "mapped", [52, 48]], [[12982, 12982], "mapped", [52, 49]], [[12983, 12983], "mapped", [52, 50]], [[12984, 12984], "mapped", [52, 51]], [[12985, 12985], "mapped", [52, 52]], [[12986, 12986], "mapped", [52, 53]], [[12987, 12987], "mapped", [52, 54]], [[12988, 12988], "mapped", [52, 55]], [[12989, 12989], "mapped", [52, 56]], [[12990, 12990], "mapped", [52, 57]], [[12991, 12991], "mapped", [53, 48]], [[12992, 12992], "mapped", [49, 26376]], [[12993, 12993], "mapped", [50, 26376]], [[12994, 12994], "mapped", [51, 26376]], [[12995, 12995], "mapped", [52, 26376]], [[12996, 12996], "mapped", [53, 26376]], [[12997, 12997], "mapped", [54, 26376]], [[12998, 12998], "mapped", [55, 26376]], [[12999, 12999], "mapped", [56, 26376]], [[13e3, 13e3], "mapped", [57, 26376]], [[13001, 13001], "mapped", [49, 48, 26376]], [[13002, 13002], "mapped", [49, 49, 26376]], [[13003, 13003], "mapped", [49, 50, 26376]], [[13004, 13004], "mapped", [104, 103]], [[13005, 13005], "mapped", [101, 114, 103]], [[13006, 13006], "mapped", [101, 118]], [[13007, 13007], "mapped", [108, 116, 100]], [[13008, 13008], "mapped", [12450]], [[13009, 13009], "mapped", [12452]], [[13010, 13010], "mapped", [12454]], [[13011, 13011], "mapped", [12456]], [[13012, 13012], "mapped", [12458]], [[13013, 13013], "mapped", [12459]], [[13014, 13014], "mapped", [12461]], [[13015, 13015], "mapped", [12463]], [[13016, 13016], "mapped", [12465]], [[13017, 13017], "mapped", [12467]], [[13018, 13018], "mapped", [12469]], [[13019, 13019], "mapped", [12471]], [[13020, 13020], "mapped", [12473]], [[13021, 13021], "mapped", [12475]], [[13022, 13022], "mapped", [12477]], [[13023, 13023], "mapped", [12479]], [[13024, 13024], "mapped", [12481]], [[13025, 13025], "mapped", [12484]], [[13026, 13026], "mapped", [12486]], [[13027, 13027], "mapped", [12488]], [[13028, 13028], "mapped", [12490]], [[13029, 13029], "mapped", [12491]], [[13030, 13030], "mapped", [12492]], [[13031, 13031], "mapped", [12493]], [[13032, 13032], "mapped", [12494]], [[13033, 13033], "mapped", [12495]], [[13034, 13034], "mapped", [12498]], [[13035, 13035], "mapped", [12501]], [[13036, 13036], "mapped", [12504]], [[13037, 13037], "mapped", [12507]], [[13038, 13038], "mapped", [12510]], [[13039, 13039], "mapped", [12511]], [[13040, 13040], "mapped", [12512]], [[13041, 13041], "mapped", [12513]], [[13042, 13042], "mapped", [12514]], [[13043, 13043], "mapped", [12516]], [[13044, 13044], "mapped", [12518]], [[13045, 13045], "mapped", [12520]], [[13046, 13046], "mapped", [12521]], [[13047, 13047], "mapped", [12522]], [[13048, 13048], "mapped", [12523]], [[13049, 13049], "mapped", [12524]], [[13050, 13050], "mapped", [12525]], [[13051, 13051], "mapped", [12527]], [[13052, 13052], "mapped", [12528]], [[13053, 13053], "mapped", [12529]], [[13054, 13054], "mapped", [12530]], [[13055, 13055], "disallowed"], [[13056, 13056], "mapped", [12450, 12497, 12540, 12488]], [[13057, 13057], "mapped", [12450, 12523, 12501, 12449]], [[13058, 13058], "mapped", [12450, 12531, 12506, 12450]], [[13059, 13059], "mapped", [12450, 12540, 12523]], [[13060, 13060], "mapped", [12452, 12491, 12531, 12464]], [[13061, 13061], "mapped", [12452, 12531, 12481]], [[13062, 13062], "mapped", [12454, 12457, 12531]], [[13063, 13063], "mapped", [12456, 12473, 12463, 12540, 12489]], [[13064, 13064], "mapped", [12456, 12540, 12459, 12540]], [[13065, 13065], "mapped", [12458, 12531, 12473]], [[13066, 13066], "mapped", [12458, 12540, 12512]], [[13067, 13067], "mapped", [12459, 12452, 12522]], [[13068, 13068], "mapped", [12459, 12521, 12483, 12488]], [[13069, 13069], "mapped", [12459, 12525, 12522, 12540]], [[13070, 13070], "mapped", [12460, 12525, 12531]], [[13071, 13071], "mapped", [12460, 12531, 12510]], [[13072, 13072], "mapped", [12462, 12460]], [[13073, 13073], "mapped", [12462, 12491, 12540]], [[13074, 13074], "mapped", [12461, 12517, 12522, 12540]], [[13075, 13075], "mapped", [12462, 12523, 12480, 12540]], [[13076, 13076], "mapped", [12461, 12525]], [[13077, 13077], "mapped", [12461, 12525, 12464, 12521, 12512]], [[13078, 13078], "mapped", [12461, 12525, 12513, 12540, 12488, 12523]], [[13079, 13079], "mapped", [12461, 12525, 12527, 12483, 12488]], [[13080, 13080], "mapped", [12464, 12521, 12512]], [[13081, 13081], "mapped", [12464, 12521, 12512, 12488, 12531]], [[13082, 13082], "mapped", [12463, 12523, 12476, 12452, 12525]], [[13083, 13083], "mapped", [12463, 12525, 12540, 12493]], [[13084, 13084], "mapped", [12465, 12540, 12473]], [[13085, 13085], "mapped", [12467, 12523, 12490]], [[13086, 13086], "mapped", [12467, 12540, 12509]], [[13087, 13087], "mapped", [12469, 12452, 12463, 12523]], [[13088, 13088], "mapped", [12469, 12531, 12481, 12540, 12512]], [[13089, 13089], "mapped", [12471, 12522, 12531, 12464]], [[13090, 13090], "mapped", [12475, 12531, 12481]], [[13091, 13091], "mapped", [12475, 12531, 12488]], [[13092, 13092], "mapped", [12480, 12540, 12473]], [[13093, 13093], "mapped", [12487, 12471]], [[13094, 13094], "mapped", [12489, 12523]], [[13095, 13095], "mapped", [12488, 12531]], [[13096, 13096], "mapped", [12490, 12494]], [[13097, 13097], "mapped", [12494, 12483, 12488]], [[13098, 13098], "mapped", [12495, 12452, 12484]], [[13099, 13099], "mapped", [12497, 12540, 12475, 12531, 12488]], [[13100, 13100], "mapped", [12497, 12540, 12484]], [[13101, 13101], "mapped", [12496, 12540, 12524, 12523]], [[13102, 13102], "mapped", [12500, 12450, 12473, 12488, 12523]], [[13103, 13103], "mapped", [12500, 12463, 12523]], [[13104, 13104], "mapped", [12500, 12467]], [[13105, 13105], "mapped", [12499, 12523]], [[13106, 13106], "mapped", [12501, 12449, 12521, 12483, 12489]], [[13107, 13107], "mapped", [12501, 12451, 12540, 12488]], [[13108, 13108], "mapped", [12502, 12483, 12471, 12455, 12523]], [[13109, 13109], "mapped", [12501, 12521, 12531]], [[13110, 13110], "mapped", [12504, 12463, 12479, 12540, 12523]], [[13111, 13111], "mapped", [12506, 12477]], [[13112, 13112], "mapped", [12506, 12491, 12498]], [[13113, 13113], "mapped", [12504, 12523, 12484]], [[13114, 13114], "mapped", [12506, 12531, 12473]], [[13115, 13115], "mapped", [12506, 12540, 12472]], [[13116, 13116], "mapped", [12505, 12540, 12479]], [[13117, 13117], "mapped", [12509, 12452, 12531, 12488]], [[13118, 13118], "mapped", [12508, 12523, 12488]], [[13119, 13119], "mapped", [12507, 12531]], [[13120, 13120], "mapped", [12509, 12531, 12489]], [[13121, 13121], "mapped", [12507, 12540, 12523]], [[13122, 13122], "mapped", [12507, 12540, 12531]], [[13123, 13123], "mapped", [12510, 12452, 12463, 12525]], [[13124, 13124], "mapped", [12510, 12452, 12523]], [[13125, 13125], "mapped", [12510, 12483, 12495]], [[13126, 13126], "mapped", [12510, 12523, 12463]], [[13127, 13127], "mapped", [12510, 12531, 12471, 12519, 12531]], [[13128, 13128], "mapped", [12511, 12463, 12525, 12531]], [[13129, 13129], "mapped", [12511, 12522]], [[13130, 13130], "mapped", [12511, 12522, 12496, 12540, 12523]], [[13131, 13131], "mapped", [12513, 12460]], [[13132, 13132], "mapped", [12513, 12460, 12488, 12531]], [[13133, 13133], "mapped", [12513, 12540, 12488, 12523]], [[13134, 13134], "mapped", [12516, 12540, 12489]], [[13135, 13135], "mapped", [12516, 12540, 12523]], [[13136, 13136], "mapped", [12518, 12450, 12531]], [[13137, 13137], "mapped", [12522, 12483, 12488, 12523]], [[13138, 13138], "mapped", [12522, 12521]], [[13139, 13139], "mapped", [12523, 12500, 12540]], [[13140, 13140], "mapped", [12523, 12540, 12502, 12523]], [[13141, 13141], "mapped", [12524, 12512]], [[13142, 13142], "mapped", [12524, 12531, 12488, 12466, 12531]], [[13143, 13143], "mapped", [12527, 12483, 12488]], [[13144, 13144], "mapped", [48, 28857]], [[13145, 13145], "mapped", [49, 28857]], [[13146, 13146], "mapped", [50, 28857]], [[13147, 13147], "mapped", [51, 28857]], [[13148, 13148], "mapped", [52, 28857]], [[13149, 13149], "mapped", [53, 28857]], [[13150, 13150], "mapped", [54, 28857]], [[13151, 13151], "mapped", [55, 28857]], [[13152, 13152], "mapped", [56, 28857]], [[13153, 13153], "mapped", [57, 28857]], [[13154, 13154], "mapped", [49, 48, 28857]], [[13155, 13155], "mapped", [49, 49, 28857]], [[13156, 13156], "mapped", [49, 50, 28857]], [[13157, 13157], "mapped", [49, 51, 28857]], [[13158, 13158], "mapped", [49, 52, 28857]], [[13159, 13159], "mapped", [49, 53, 28857]], [[13160, 13160], "mapped", [49, 54, 28857]], [[13161, 13161], "mapped", [49, 55, 28857]], [[13162, 13162], "mapped", [49, 56, 28857]], [[13163, 13163], "mapped", [49, 57, 28857]], [[13164, 13164], "mapped", [50, 48, 28857]], [[13165, 13165], "mapped", [50, 49, 28857]], [[13166, 13166], "mapped", [50, 50, 28857]], [[13167, 13167], "mapped", [50, 51, 28857]], [[13168, 13168], "mapped", [50, 52, 28857]], [[13169, 13169], "mapped", [104, 112, 97]], [[13170, 13170], "mapped", [100, 97]], [[13171, 13171], "mapped", [97, 117]], [[13172, 13172], "mapped", [98, 97, 114]], [[13173, 13173], "mapped", [111, 118]], [[13174, 13174], "mapped", [112, 99]], [[13175, 13175], "mapped", [100, 109]], [[13176, 13176], "mapped", [100, 109, 50]], [[13177, 13177], "mapped", [100, 109, 51]], [[13178, 13178], "mapped", [105, 117]], [[13179, 13179], "mapped", [24179, 25104]], [[13180, 13180], "mapped", [26157, 21644]], [[13181, 13181], "mapped", [22823, 27491]], [[13182, 13182], "mapped", [26126, 27835]], [[13183, 13183], "mapped", [26666, 24335, 20250, 31038]], [[13184, 13184], "mapped", [112, 97]], [[13185, 13185], "mapped", [110, 97]], [[13186, 13186], "mapped", [956, 97]], [[13187, 13187], "mapped", [109, 97]], [[13188, 13188], "mapped", [107, 97]], [[13189, 13189], "mapped", [107, 98]], [[13190, 13190], "mapped", [109, 98]], [[13191, 13191], "mapped", [103, 98]], [[13192, 13192], "mapped", [99, 97, 108]], [[13193, 13193], "mapped", [107, 99, 97, 108]], [[13194, 13194], "mapped", [112, 102]], [[13195, 13195], "mapped", [110, 102]], [[13196, 13196], "mapped", [956, 102]], [[13197, 13197], "mapped", [956, 103]], [[13198, 13198], "mapped", [109, 103]], [[13199, 13199], "mapped", [107, 103]], [[13200, 13200], "mapped", [104, 122]], [[13201, 13201], "mapped", [107, 104, 122]], [[13202, 13202], "mapped", [109, 104, 122]], [[13203, 13203], "mapped", [103, 104, 122]], [[13204, 13204], "mapped", [116, 104, 122]], [[13205, 13205], "mapped", [956, 108]], [[13206, 13206], "mapped", [109, 108]], [[13207, 13207], "mapped", [100, 108]], [[13208, 13208], "mapped", [107, 108]], [[13209, 13209], "mapped", [102, 109]], [[13210, 13210], "mapped", [110, 109]], [[13211, 13211], "mapped", [956, 109]], [[13212, 13212], "mapped", [109, 109]], [[13213, 13213], "mapped", [99, 109]], [[13214, 13214], "mapped", [107, 109]], [[13215, 13215], "mapped", [109, 109, 50]], [[13216, 13216], "mapped", [99, 109, 50]], [[13217, 13217], "mapped", [109, 50]], [[13218, 13218], "mapped", [107, 109, 50]], [[13219, 13219], "mapped", [109, 109, 51]], [[13220, 13220], "mapped", [99, 109, 51]], [[13221, 13221], "mapped", [109, 51]], [[13222, 13222], "mapped", [107, 109, 51]], [[13223, 13223], "mapped", [109, 8725, 115]], [[13224, 13224], "mapped", [109, 8725, 115, 50]], [[13225, 13225], "mapped", [112, 97]], [[13226, 13226], "mapped", [107, 112, 97]], [[13227, 13227], "mapped", [109, 112, 97]], [[13228, 13228], "mapped", [103, 112, 97]], [[13229, 13229], "mapped", [114, 97, 100]], [[13230, 13230], "mapped", [114, 97, 100, 8725, 115]], [[13231, 13231], "mapped", [114, 97, 100, 8725, 115, 50]], [[13232, 13232], "mapped", [112, 115]], [[13233, 13233], "mapped", [110, 115]], [[13234, 13234], "mapped", [956, 115]], [[13235, 13235], "mapped", [109, 115]], [[13236, 13236], "mapped", [112, 118]], [[13237, 13237], "mapped", [110, 118]], [[13238, 13238], "mapped", [956, 118]], [[13239, 13239], "mapped", [109, 118]], [[13240, 13240], "mapped", [107, 118]], [[13241, 13241], "mapped", [109, 118]], [[13242, 13242], "mapped", [112, 119]], [[13243, 13243], "mapped", [110, 119]], [[13244, 13244], "mapped", [956, 119]], [[13245, 13245], "mapped", [109, 119]], [[13246, 13246], "mapped", [107, 119]], [[13247, 13247], "mapped", [109, 119]], [[13248, 13248], "mapped", [107, 969]], [[13249, 13249], "mapped", [109, 969]], [[13250, 13250], "disallowed"], [[13251, 13251], "mapped", [98, 113]], [[13252, 13252], "mapped", [99, 99]], [[13253, 13253], "mapped", [99, 100]], [[13254, 13254], "mapped", [99, 8725, 107, 103]], [[13255, 13255], "disallowed"], [[13256, 13256], "mapped", [100, 98]], [[13257, 13257], "mapped", [103, 121]], [[13258, 13258], "mapped", [104, 97]], [[13259, 13259], "mapped", [104, 112]], [[13260, 13260], "mapped", [105, 110]], [[13261, 13261], "mapped", [107, 107]], [[13262, 13262], "mapped", [107, 109]], [[13263, 13263], "mapped", [107, 116]], [[13264, 13264], "mapped", [108, 109]], [[13265, 13265], "mapped", [108, 110]], [[13266, 13266], "mapped", [108, 111, 103]], [[13267, 13267], "mapped", [108, 120]], [[13268, 13268], "mapped", [109, 98]], [[13269, 13269], "mapped", [109, 105, 108]], [[13270, 13270], "mapped", [109, 111, 108]], [[13271, 13271], "mapped", [112, 104]], [[13272, 13272], "disallowed"], [[13273, 13273], "mapped", [112, 112, 109]], [[13274, 13274], "mapped", [112, 114]], [[13275, 13275], "mapped", [115, 114]], [[13276, 13276], "mapped", [115, 118]], [[13277, 13277], "mapped", [119, 98]], [[13278, 13278], "mapped", [118, 8725, 109]], [[13279, 13279], "mapped", [97, 8725, 109]], [[13280, 13280], "mapped", [49, 26085]], [[13281, 13281], "mapped", [50, 26085]], [[13282, 13282], "mapped", [51, 26085]], [[13283, 13283], "mapped", [52, 26085]], [[13284, 13284], "mapped", [53, 26085]], [[13285, 13285], "mapped", [54, 26085]], [[13286, 13286], "mapped", [55, 26085]], [[13287, 13287], "mapped", [56, 26085]], [[13288, 13288], "mapped", [57, 26085]], [[13289, 13289], "mapped", [49, 48, 26085]], [[13290, 13290], "mapped", [49, 49, 26085]], [[13291, 13291], "mapped", [49, 50, 26085]], [[13292, 13292], "mapped", [49, 51, 26085]], [[13293, 13293], "mapped", [49, 52, 26085]], [[13294, 13294], "mapped", [49, 53, 26085]], [[13295, 13295], "mapped", [49, 54, 26085]], [[13296, 13296], "mapped", [49, 55, 26085]], [[13297, 13297], "mapped", [49, 56, 26085]], [[13298, 13298], "mapped", [49, 57, 26085]], [[13299, 13299], "mapped", [50, 48, 26085]], [[13300, 13300], "mapped", [50, 49, 26085]], [[13301, 13301], "mapped", [50, 50, 26085]], [[13302, 13302], "mapped", [50, 51, 26085]], [[13303, 13303], "mapped", [50, 52, 26085]], [[13304, 13304], "mapped", [50, 53, 26085]], [[13305, 13305], "mapped", [50, 54, 26085]], [[13306, 13306], "mapped", [50, 55, 26085]], [[13307, 13307], "mapped", [50, 56, 26085]], [[13308, 13308], "mapped", [50, 57, 26085]], [[13309, 13309], "mapped", [51, 48, 26085]], [[13310, 13310], "mapped", [51, 49, 26085]], [[13311, 13311], "mapped", [103, 97, 108]], [[13312, 19893], "valid"], [[19894, 19903], "disallowed"], [[19904, 19967], "valid", [], "NV8"], [[19968, 40869], "valid"], [[40870, 40891], "valid"], [[40892, 40899], "valid"], [[40900, 40907], "valid"], [[40908, 40908], "valid"], [[40909, 40917], "valid"], [[40918, 40959], "disallowed"], [[40960, 42124], "valid"], [[42125, 42127], "disallowed"], [[42128, 42145], "valid", [], "NV8"], [[42146, 42147], "valid", [], "NV8"], [[42148, 42163], "valid", [], "NV8"], [[42164, 42164], "valid", [], "NV8"], [[42165, 42176], "valid", [], "NV8"], [[42177, 42177], "valid", [], "NV8"], [[42178, 42180], "valid", [], "NV8"], [[42181, 42181], "valid", [], "NV8"], [[42182, 42182], "valid", [], "NV8"], [[42183, 42191], "disallowed"], [[42192, 42237], "valid"], [[42238, 42239], "valid", [], "NV8"], [[42240, 42508], "valid"], [[42509, 42511], "valid", [], "NV8"], [[42512, 42539], "valid"], [[42540, 42559], "disallowed"], [[42560, 42560], "mapped", [42561]], [[42561, 42561], "valid"], [[42562, 42562], "mapped", [42563]], [[42563, 42563], "valid"], [[42564, 42564], "mapped", [42565]], [[42565, 42565], "valid"], [[42566, 42566], "mapped", [42567]], [[42567, 42567], "valid"], [[42568, 42568], "mapped", [42569]], [[42569, 42569], "valid"], [[42570, 42570], "mapped", [42571]], [[42571, 42571], "valid"], [[42572, 42572], "mapped", [42573]], [[42573, 42573], "valid"], [[42574, 42574], "mapped", [42575]], [[42575, 42575], "valid"], [[42576, 42576], "mapped", [42577]], [[42577, 42577], "valid"], [[42578, 42578], "mapped", [42579]], [[42579, 42579], "valid"], [[42580, 42580], "mapped", [42581]], [[42581, 42581], "valid"], [[42582, 42582], "mapped", [42583]], [[42583, 42583], "valid"], [[42584, 42584], "mapped", [42585]], [[42585, 42585], "valid"], [[42586, 42586], "mapped", [42587]], [[42587, 42587], "valid"], [[42588, 42588], "mapped", [42589]], [[42589, 42589], "valid"], [[42590, 42590], "mapped", [42591]], [[42591, 42591], "valid"], [[42592, 42592], "mapped", [42593]], [[42593, 42593], "valid"], [[42594, 42594], "mapped", [42595]], [[42595, 42595], "valid"], [[42596, 42596], "mapped", [42597]], [[42597, 42597], "valid"], [[42598, 42598], "mapped", [42599]], [[42599, 42599], "valid"], [[42600, 42600], "mapped", [42601]], [[42601, 42601], "valid"], [[42602, 42602], "mapped", [42603]], [[42603, 42603], "valid"], [[42604, 42604], "mapped", [42605]], [[42605, 42607], "valid"], [[42608, 42611], "valid", [], "NV8"], [[42612, 42619], "valid"], [[42620, 42621], "valid"], [[42622, 42622], "valid", [], "NV8"], [[42623, 42623], "valid"], [[42624, 42624], "mapped", [42625]], [[42625, 42625], "valid"], [[42626, 42626], "mapped", [42627]], [[42627, 42627], "valid"], [[42628, 42628], "mapped", [42629]], [[42629, 42629], "valid"], [[42630, 42630], "mapped", [42631]], [[42631, 42631], "valid"], [[42632, 42632], "mapped", [42633]], [[42633, 42633], "valid"], [[42634, 42634], "mapped", [42635]], [[42635, 42635], "valid"], [[42636, 42636], "mapped", [42637]], [[42637, 42637], "valid"], [[42638, 42638], "mapped", [42639]], [[42639, 42639], "valid"], [[42640, 42640], "mapped", [42641]], [[42641, 42641], "valid"], [[42642, 42642], "mapped", [42643]], [[42643, 42643], "valid"], [[42644, 42644], "mapped", [42645]], [[42645, 42645], "valid"], [[42646, 42646], "mapped", [42647]], [[42647, 42647], "valid"], [[42648, 42648], "mapped", [42649]], [[42649, 42649], "valid"], [[42650, 42650], "mapped", [42651]], [[42651, 42651], "valid"], [[42652, 42652], "mapped", [1098]], [[42653, 42653], "mapped", [1100]], [[42654, 42654], "valid"], [[42655, 42655], "valid"], [[42656, 42725], "valid"], [[42726, 42735], "valid", [], "NV8"], [[42736, 42737], "valid"], [[42738, 42743], "valid", [], "NV8"], [[42744, 42751], "disallowed"], [[42752, 42774], "valid", [], "NV8"], [[42775, 42778], "valid"], [[42779, 42783], "valid"], [[42784, 42785], "valid", [], "NV8"], [[42786, 42786], "mapped", [42787]], [[42787, 42787], "valid"], [[42788, 42788], "mapped", [42789]], [[42789, 42789], "valid"], [[42790, 42790], "mapped", [42791]], [[42791, 42791], "valid"], [[42792, 42792], "mapped", [42793]], [[42793, 42793], "valid"], [[42794, 42794], "mapped", [42795]], [[42795, 42795], "valid"], [[42796, 42796], "mapped", [42797]], [[42797, 42797], "valid"], [[42798, 42798], "mapped", [42799]], [[42799, 42801], "valid"], [[42802, 42802], "mapped", [42803]], [[42803, 42803], "valid"], [[42804, 42804], "mapped", [42805]], [[42805, 42805], "valid"], [[42806, 42806], "mapped", [42807]], [[42807, 42807], "valid"], [[42808, 42808], "mapped", [42809]], [[42809, 42809], "valid"], [[42810, 42810], "mapped", [42811]], [[42811, 42811], "valid"], [[42812, 42812], "mapped", [42813]], [[42813, 42813], "valid"], [[42814, 42814], "mapped", [42815]], [[42815, 42815], "valid"], [[42816, 42816], "mapped", [42817]], [[42817, 42817], "valid"], [[42818, 42818], "mapped", [42819]], [[42819, 42819], "valid"], [[42820, 42820], "mapped", [42821]], [[42821, 42821], "valid"], [[42822, 42822], "mapped", [42823]], [[42823, 42823], "valid"], [[42824, 42824], "mapped", [42825]], [[42825, 42825], "valid"], [[42826, 42826], "mapped", [42827]], [[42827, 42827], "valid"], [[42828, 42828], "mapped", [42829]], [[42829, 42829], "valid"], [[42830, 42830], "mapped", [42831]], [[42831, 42831], "valid"], [[42832, 42832], "mapped", [42833]], [[42833, 42833], "valid"], [[42834, 42834], "mapped", [42835]], [[42835, 42835], "valid"], [[42836, 42836], "mapped", [42837]], [[42837, 42837], "valid"], [[42838, 42838], "mapped", [42839]], [[42839, 42839], "valid"], [[42840, 42840], "mapped", [42841]], [[42841, 42841], "valid"], [[42842, 42842], "mapped", [42843]], [[42843, 42843], "valid"], [[42844, 42844], "mapped", [42845]], [[42845, 42845], "valid"], [[42846, 42846], "mapped", [42847]], [[42847, 42847], "valid"], [[42848, 42848], "mapped", [42849]], [[42849, 42849], "valid"], [[42850, 42850], "mapped", [42851]], [[42851, 42851], "valid"], [[42852, 42852], "mapped", [42853]], [[42853, 42853], "valid"], [[42854, 42854], "mapped", [42855]], [[42855, 42855], "valid"], [[42856, 42856], "mapped", [42857]], [[42857, 42857], "valid"], [[42858, 42858], "mapped", [42859]], [[42859, 42859], "valid"], [[42860, 42860], "mapped", [42861]], [[42861, 42861], "valid"], [[42862, 42862], "mapped", [42863]], [[42863, 42863], "valid"], [[42864, 42864], "mapped", [42863]], [[42865, 42872], "valid"], [[42873, 42873], "mapped", [42874]], [[42874, 42874], "valid"], [[42875, 42875], "mapped", [42876]], [[42876, 42876], "valid"], [[42877, 42877], "mapped", [7545]], [[42878, 42878], "mapped", [42879]], [[42879, 42879], "valid"], [[42880, 42880], "mapped", [42881]], [[42881, 42881], "valid"], [[42882, 42882], "mapped", [42883]], [[42883, 42883], "valid"], [[42884, 42884], "mapped", [42885]], [[42885, 42885], "valid"], [[42886, 42886], "mapped", [42887]], [[42887, 42888], "valid"], [[42889, 42890], "valid", [], "NV8"], [[42891, 42891], "mapped", [42892]], [[42892, 42892], "valid"], [[42893, 42893], "mapped", [613]], [[42894, 42894], "valid"], [[42895, 42895], "valid"], [[42896, 42896], "mapped", [42897]], [[42897, 42897], "valid"], [[42898, 42898], "mapped", [42899]], [[42899, 42899], "valid"], [[42900, 42901], "valid"], [[42902, 42902], "mapped", [42903]], [[42903, 42903], "valid"], [[42904, 42904], "mapped", [42905]], [[42905, 42905], "valid"], [[42906, 42906], "mapped", [42907]], [[42907, 42907], "valid"], [[42908, 42908], "mapped", [42909]], [[42909, 42909], "valid"], [[42910, 42910], "mapped", [42911]], [[42911, 42911], "valid"], [[42912, 42912], "mapped", [42913]], [[42913, 42913], "valid"], [[42914, 42914], "mapped", [42915]], [[42915, 42915], "valid"], [[42916, 42916], "mapped", [42917]], [[42917, 42917], "valid"], [[42918, 42918], "mapped", [42919]], [[42919, 42919], "valid"], [[42920, 42920], "mapped", [42921]], [[42921, 42921], "valid"], [[42922, 42922], "mapped", [614]], [[42923, 42923], "mapped", [604]], [[42924, 42924], "mapped", [609]], [[42925, 42925], "mapped", [620]], [[42926, 42927], "disallowed"], [[42928, 42928], "mapped", [670]], [[42929, 42929], "mapped", [647]], [[42930, 42930], "mapped", [669]], [[42931, 42931], "mapped", [43859]], [[42932, 42932], "mapped", [42933]], [[42933, 42933], "valid"], [[42934, 42934], "mapped", [42935]], [[42935, 42935], "valid"], [[42936, 42998], "disallowed"], [[42999, 42999], "valid"], [[43e3, 43e3], "mapped", [295]], [[43001, 43001], "mapped", [339]], [[43002, 43002], "valid"], [[43003, 43007], "valid"], [[43008, 43047], "valid"], [[43048, 43051], "valid", [], "NV8"], [[43052, 43055], "disallowed"], [[43056, 43065], "valid", [], "NV8"], [[43066, 43071], "disallowed"], [[43072, 43123], "valid"], [[43124, 43127], "valid", [], "NV8"], [[43128, 43135], "disallowed"], [[43136, 43204], "valid"], [[43205, 43213], "disallowed"], [[43214, 43215], "valid", [], "NV8"], [[43216, 43225], "valid"], [[43226, 43231], "disallowed"], [[43232, 43255], "valid"], [[43256, 43258], "valid", [], "NV8"], [[43259, 43259], "valid"], [[43260, 43260], "valid", [], "NV8"], [[43261, 43261], "valid"], [[43262, 43263], "disallowed"], [[43264, 43309], "valid"], [[43310, 43311], "valid", [], "NV8"], [[43312, 43347], "valid"], [[43348, 43358], "disallowed"], [[43359, 43359], "valid", [], "NV8"], [[43360, 43388], "valid", [], "NV8"], [[43389, 43391], "disallowed"], [[43392, 43456], "valid"], [[43457, 43469], "valid", [], "NV8"], [[43470, 43470], "disallowed"], [[43471, 43481], "valid"], [[43482, 43485], "disallowed"], [[43486, 43487], "valid", [], "NV8"], [[43488, 43518], "valid"], [[43519, 43519], "disallowed"], [[43520, 43574], "valid"], [[43575, 43583], "disallowed"], [[43584, 43597], "valid"], [[43598, 43599], "disallowed"], [[43600, 43609], "valid"], [[43610, 43611], "disallowed"], [[43612, 43615], "valid", [], "NV8"], [[43616, 43638], "valid"], [[43639, 43641], "valid", [], "NV8"], [[43642, 43643], "valid"], [[43644, 43647], "valid"], [[43648, 43714], "valid"], [[43715, 43738], "disallowed"], [[43739, 43741], "valid"], [[43742, 43743], "valid", [], "NV8"], [[43744, 43759], "valid"], [[43760, 43761], "valid", [], "NV8"], [[43762, 43766], "valid"], [[43767, 43776], "disallowed"], [[43777, 43782], "valid"], [[43783, 43784], "disallowed"], [[43785, 43790], "valid"], [[43791, 43792], "disallowed"], [[43793, 43798], "valid"], [[43799, 43807], "disallowed"], [[43808, 43814], "valid"], [[43815, 43815], "disallowed"], [[43816, 43822], "valid"], [[43823, 43823], "disallowed"], [[43824, 43866], "valid"], [[43867, 43867], "valid", [], "NV8"], [[43868, 43868], "mapped", [42791]], [[43869, 43869], "mapped", [43831]], [[43870, 43870], "mapped", [619]], [[43871, 43871], "mapped", [43858]], [[43872, 43875], "valid"], [[43876, 43877], "valid"], [[43878, 43887], "disallowed"], [[43888, 43888], "mapped", [5024]], [[43889, 43889], "mapped", [5025]], [[43890, 43890], "mapped", [5026]], [[43891, 43891], "mapped", [5027]], [[43892, 43892], "mapped", [5028]], [[43893, 43893], "mapped", [5029]], [[43894, 43894], "mapped", [5030]], [[43895, 43895], "mapped", [5031]], [[43896, 43896], "mapped", [5032]], [[43897, 43897], "mapped", [5033]], [[43898, 43898], "mapped", [5034]], [[43899, 43899], "mapped", [5035]], [[43900, 43900], "mapped", [5036]], [[43901, 43901], "mapped", [5037]], [[43902, 43902], "mapped", [5038]], [[43903, 43903], "mapped", [5039]], [[43904, 43904], "mapped", [5040]], [[43905, 43905], "mapped", [5041]], [[43906, 43906], "mapped", [5042]], [[43907, 43907], "mapped", [5043]], [[43908, 43908], "mapped", [5044]], [[43909, 43909], "mapped", [5045]], [[43910, 43910], "mapped", [5046]], [[43911, 43911], "mapped", [5047]], [[43912, 43912], "mapped", [5048]], [[43913, 43913], "mapped", [5049]], [[43914, 43914], "mapped", [5050]], [[43915, 43915], "mapped", [5051]], [[43916, 43916], "mapped", [5052]], [[43917, 43917], "mapped", [5053]], [[43918, 43918], "mapped", [5054]], [[43919, 43919], "mapped", [5055]], [[43920, 43920], "mapped", [5056]], [[43921, 43921], "mapped", [5057]], [[43922, 43922], "mapped", [5058]], [[43923, 43923], "mapped", [5059]], [[43924, 43924], "mapped", [5060]], [[43925, 43925], "mapped", [5061]], [[43926, 43926], "mapped", [5062]], [[43927, 43927], "mapped", [5063]], [[43928, 43928], "mapped", [5064]], [[43929, 43929], "mapped", [5065]], [[43930, 43930], "mapped", [5066]], [[43931, 43931], "mapped", [5067]], [[43932, 43932], "mapped", [5068]], [[43933, 43933], "mapped", [5069]], [[43934, 43934], "mapped", [5070]], [[43935, 43935], "mapped", [5071]], [[43936, 43936], "mapped", [5072]], [[43937, 43937], "mapped", [5073]], [[43938, 43938], "mapped", [5074]], [[43939, 43939], "mapped", [5075]], [[43940, 43940], "mapped", [5076]], [[43941, 43941], "mapped", [5077]], [[43942, 43942], "mapped", [5078]], [[43943, 43943], "mapped", [5079]], [[43944, 43944], "mapped", [5080]], [[43945, 43945], "mapped", [5081]], [[43946, 43946], "mapped", [5082]], [[43947, 43947], "mapped", [5083]], [[43948, 43948], "mapped", [5084]], [[43949, 43949], "mapped", [5085]], [[43950, 43950], "mapped", [5086]], [[43951, 43951], "mapped", [5087]], [[43952, 43952], "mapped", [5088]], [[43953, 43953], "mapped", [5089]], [[43954, 43954], "mapped", [5090]], [[43955, 43955], "mapped", [5091]], [[43956, 43956], "mapped", [5092]], [[43957, 43957], "mapped", [5093]], [[43958, 43958], "mapped", [5094]], [[43959, 43959], "mapped", [5095]], [[43960, 43960], "mapped", [5096]], [[43961, 43961], "mapped", [5097]], [[43962, 43962], "mapped", [5098]], [[43963, 43963], "mapped", [5099]], [[43964, 43964], "mapped", [5100]], [[43965, 43965], "mapped", [5101]], [[43966, 43966], "mapped", [5102]], [[43967, 43967], "mapped", [5103]], [[43968, 44010], "valid"], [[44011, 44011], "valid", [], "NV8"], [[44012, 44013], "valid"], [[44014, 44015], "disallowed"], [[44016, 44025], "valid"], [[44026, 44031], "disallowed"], [[44032, 55203], "valid"], [[55204, 55215], "disallowed"], [[55216, 55238], "valid", [], "NV8"], [[55239, 55242], "disallowed"], [[55243, 55291], "valid", [], "NV8"], [[55292, 55295], "disallowed"], [[55296, 57343], "disallowed"], [[57344, 63743], "disallowed"], [[63744, 63744], "mapped", [35912]], [[63745, 63745], "mapped", [26356]], [[63746, 63746], "mapped", [36554]], [[63747, 63747], "mapped", [36040]], [[63748, 63748], "mapped", [28369]], [[63749, 63749], "mapped", [20018]], [[63750, 63750], "mapped", [21477]], [[63751, 63752], "mapped", [40860]], [[63753, 63753], "mapped", [22865]], [[63754, 63754], "mapped", [37329]], [[63755, 63755], "mapped", [21895]], [[63756, 63756], "mapped", [22856]], [[63757, 63757], "mapped", [25078]], [[63758, 63758], "mapped", [30313]], [[63759, 63759], "mapped", [32645]], [[63760, 63760], "mapped", [34367]], [[63761, 63761], "mapped", [34746]], [[63762, 63762], "mapped", [35064]], [[63763, 63763], "mapped", [37007]], [[63764, 63764], "mapped", [27138]], [[63765, 63765], "mapped", [27931]], [[63766, 63766], "mapped", [28889]], [[63767, 63767], "mapped", [29662]], [[63768, 63768], "mapped", [33853]], [[63769, 63769], "mapped", [37226]], [[63770, 63770], "mapped", [39409]], [[63771, 63771], "mapped", [20098]], [[63772, 63772], "mapped", [21365]], [[63773, 63773], "mapped", [27396]], [[63774, 63774], "mapped", [29211]], [[63775, 63775], "mapped", [34349]], [[63776, 63776], "mapped", [40478]], [[63777, 63777], "mapped", [23888]], [[63778, 63778], "mapped", [28651]], [[63779, 63779], "mapped", [34253]], [[63780, 63780], "mapped", [35172]], [[63781, 63781], "mapped", [25289]], [[63782, 63782], "mapped", [33240]], [[63783, 63783], "mapped", [34847]], [[63784, 63784], "mapped", [24266]], [[63785, 63785], "mapped", [26391]], [[63786, 63786], "mapped", [28010]], [[63787, 63787], "mapped", [29436]], [[63788, 63788], "mapped", [37070]], [[63789, 63789], "mapped", [20358]], [[63790, 63790], "mapped", [20919]], [[63791, 63791], "mapped", [21214]], [[63792, 63792], "mapped", [25796]], [[63793, 63793], "mapped", [27347]], [[63794, 63794], "mapped", [29200]], [[63795, 63795], "mapped", [30439]], [[63796, 63796], "mapped", [32769]], [[63797, 63797], "mapped", [34310]], [[63798, 63798], "mapped", [34396]], [[63799, 63799], "mapped", [36335]], [[63800, 63800], "mapped", [38706]], [[63801, 63801], "mapped", [39791]], [[63802, 63802], "mapped", [40442]], [[63803, 63803], "mapped", [30860]], [[63804, 63804], "mapped", [31103]], [[63805, 63805], "mapped", [32160]], [[63806, 63806], "mapped", [33737]], [[63807, 63807], "mapped", [37636]], [[63808, 63808], "mapped", [40575]], [[63809, 63809], "mapped", [35542]], [[63810, 63810], "mapped", [22751]], [[63811, 63811], "mapped", [24324]], [[63812, 63812], "mapped", [31840]], [[63813, 63813], "mapped", [32894]], [[63814, 63814], "mapped", [29282]], [[63815, 63815], "mapped", [30922]], [[63816, 63816], "mapped", [36034]], [[63817, 63817], "mapped", [38647]], [[63818, 63818], "mapped", [22744]], [[63819, 63819], "mapped", [23650]], [[63820, 63820], "mapped", [27155]], [[63821, 63821], "mapped", [28122]], [[63822, 63822], "mapped", [28431]], [[63823, 63823], "mapped", [32047]], [[63824, 63824], "mapped", [32311]], [[63825, 63825], "mapped", [38475]], [[63826, 63826], "mapped", [21202]], [[63827, 63827], "mapped", [32907]], [[63828, 63828], "mapped", [20956]], [[63829, 63829], "mapped", [20940]], [[63830, 63830], "mapped", [31260]], [[63831, 63831], "mapped", [32190]], [[63832, 63832], "mapped", [33777]], [[63833, 63833], "mapped", [38517]], [[63834, 63834], "mapped", [35712]], [[63835, 63835], "mapped", [25295]], [[63836, 63836], "mapped", [27138]], [[63837, 63837], "mapped", [35582]], [[63838, 63838], "mapped", [20025]], [[63839, 63839], "mapped", [23527]], [[63840, 63840], "mapped", [24594]], [[63841, 63841], "mapped", [29575]], [[63842, 63842], "mapped", [30064]], [[63843, 63843], "mapped", [21271]], [[63844, 63844], "mapped", [30971]], [[63845, 63845], "mapped", [20415]], [[63846, 63846], "mapped", [24489]], [[63847, 63847], "mapped", [19981]], [[63848, 63848], "mapped", [27852]], [[63849, 63849], "mapped", [25976]], [[63850, 63850], "mapped", [32034]], [[63851, 63851], "mapped", [21443]], [[63852, 63852], "mapped", [22622]], [[63853, 63853], "mapped", [30465]], [[63854, 63854], "mapped", [33865]], [[63855, 63855], "mapped", [35498]], [[63856, 63856], "mapped", [27578]], [[63857, 63857], "mapped", [36784]], [[63858, 63858], "mapped", [27784]], [[63859, 63859], "mapped", [25342]], [[63860, 63860], "mapped", [33509]], [[63861, 63861], "mapped", [25504]], [[63862, 63862], "mapped", [30053]], [[63863, 63863], "mapped", [20142]], [[63864, 63864], "mapped", [20841]], [[63865, 63865], "mapped", [20937]], [[63866, 63866], "mapped", [26753]], [[63867, 63867], "mapped", [31975]], [[63868, 63868], "mapped", [33391]], [[63869, 63869], "mapped", [35538]], [[63870, 63870], "mapped", [37327]], [[63871, 63871], "mapped", [21237]], [[63872, 63872], "mapped", [21570]], [[63873, 63873], "mapped", [22899]], [[63874, 63874], "mapped", [24300]], [[63875, 63875], "mapped", [26053]], [[63876, 63876], "mapped", [28670]], [[63877, 63877], "mapped", [31018]], [[63878, 63878], "mapped", [38317]], [[63879, 63879], "mapped", [39530]], [[63880, 63880], "mapped", [40599]], [[63881, 63881], "mapped", [40654]], [[63882, 63882], "mapped", [21147]], [[63883, 63883], "mapped", [26310]], [[63884, 63884], "mapped", [27511]], [[63885, 63885], "mapped", [36706]], [[63886, 63886], "mapped", [24180]], [[63887, 63887], "mapped", [24976]], [[63888, 63888], "mapped", [25088]], [[63889, 63889], "mapped", [25754]], [[63890, 63890], "mapped", [28451]], [[63891, 63891], "mapped", [29001]], [[63892, 63892], "mapped", [29833]], [[63893, 63893], "mapped", [31178]], [[63894, 63894], "mapped", [32244]], [[63895, 63895], "mapped", [32879]], [[63896, 63896], "mapped", [36646]], [[63897, 63897], "mapped", [34030]], [[63898, 63898], "mapped", [36899]], [[63899, 63899], "mapped", [37706]], [[63900, 63900], "mapped", [21015]], [[63901, 63901], "mapped", [21155]], [[63902, 63902], "mapped", [21693]], [[63903, 63903], "mapped", [28872]], [[63904, 63904], "mapped", [35010]], [[63905, 63905], "mapped", [35498]], [[63906, 63906], "mapped", [24265]], [[63907, 63907], "mapped", [24565]], [[63908, 63908], "mapped", [25467]], [[63909, 63909], "mapped", [27566]], [[63910, 63910], "mapped", [31806]], [[63911, 63911], "mapped", [29557]], [[63912, 63912], "mapped", [20196]], [[63913, 63913], "mapped", [22265]], [[63914, 63914], "mapped", [23527]], [[63915, 63915], "mapped", [23994]], [[63916, 63916], "mapped", [24604]], [[63917, 63917], "mapped", [29618]], [[63918, 63918], "mapped", [29801]], [[63919, 63919], "mapped", [32666]], [[63920, 63920], "mapped", [32838]], [[63921, 63921], "mapped", [37428]], [[63922, 63922], "mapped", [38646]], [[63923, 63923], "mapped", [38728]], [[63924, 63924], "mapped", [38936]], [[63925, 63925], "mapped", [20363]], [[63926, 63926], "mapped", [31150]], [[63927, 63927], "mapped", [37300]], [[63928, 63928], "mapped", [38584]], [[63929, 63929], "mapped", [24801]], [[63930, 63930], "mapped", [20102]], [[63931, 63931], "mapped", [20698]], [[63932, 63932], "mapped", [23534]], [[63933, 63933], "mapped", [23615]], [[63934, 63934], "mapped", [26009]], [[63935, 63935], "mapped", [27138]], [[63936, 63936], "mapped", [29134]], [[63937, 63937], "mapped", [30274]], [[63938, 63938], "mapped", [34044]], [[63939, 63939], "mapped", [36988]], [[63940, 63940], "mapped", [40845]], [[63941, 63941], "mapped", [26248]], [[63942, 63942], "mapped", [38446]], [[63943, 63943], "mapped", [21129]], [[63944, 63944], "mapped", [26491]], [[63945, 63945], "mapped", [26611]], [[63946, 63946], "mapped", [27969]], [[63947, 63947], "mapped", [28316]], [[63948, 63948], "mapped", [29705]], [[63949, 63949], "mapped", [30041]], [[63950, 63950], "mapped", [30827]], [[63951, 63951], "mapped", [32016]], [[63952, 63952], "mapped", [39006]], [[63953, 63953], "mapped", [20845]], [[63954, 63954], "mapped", [25134]], [[63955, 63955], "mapped", [38520]], [[63956, 63956], "mapped", [20523]], [[63957, 63957], "mapped", [23833]], [[63958, 63958], "mapped", [28138]], [[63959, 63959], "mapped", [36650]], [[63960, 63960], "mapped", [24459]], [[63961, 63961], "mapped", [24900]], [[63962, 63962], "mapped", [26647]], [[63963, 63963], "mapped", [29575]], [[63964, 63964], "mapped", [38534]], [[63965, 63965], "mapped", [21033]], [[63966, 63966], "mapped", [21519]], [[63967, 63967], "mapped", [23653]], [[63968, 63968], "mapped", [26131]], [[63969, 63969], "mapped", [26446]], [[63970, 63970], "mapped", [26792]], [[63971, 63971], "mapped", [27877]], [[63972, 63972], "mapped", [29702]], [[63973, 63973], "mapped", [30178]], [[63974, 63974], "mapped", [32633]], [[63975, 63975], "mapped", [35023]], [[63976, 63976], "mapped", [35041]], [[63977, 63977], "mapped", [37324]], [[63978, 63978], "mapped", [38626]], [[63979, 63979], "mapped", [21311]], [[63980, 63980], "mapped", [28346]], [[63981, 63981], "mapped", [21533]], [[63982, 63982], "mapped", [29136]], [[63983, 63983], "mapped", [29848]], [[63984, 63984], "mapped", [34298]], [[63985, 63985], "mapped", [38563]], [[63986, 63986], "mapped", [40023]], [[63987, 63987], "mapped", [40607]], [[63988, 63988], "mapped", [26519]], [[63989, 63989], "mapped", [28107]], [[63990, 63990], "mapped", [33256]], [[63991, 63991], "mapped", [31435]], [[63992, 63992], "mapped", [31520]], [[63993, 63993], "mapped", [31890]], [[63994, 63994], "mapped", [29376]], [[63995, 63995], "mapped", [28825]], [[63996, 63996], "mapped", [35672]], [[63997, 63997], "mapped", [20160]], [[63998, 63998], "mapped", [33590]], [[63999, 63999], "mapped", [21050]], [[64e3, 64e3], "mapped", [20999]], [[64001, 64001], "mapped", [24230]], [[64002, 64002], "mapped", [25299]], [[64003, 64003], "mapped", [31958]], [[64004, 64004], "mapped", [23429]], [[64005, 64005], "mapped", [27934]], [[64006, 64006], "mapped", [26292]], [[64007, 64007], "mapped", [36667]], [[64008, 64008], "mapped", [34892]], [[64009, 64009], "mapped", [38477]], [[64010, 64010], "mapped", [35211]], [[64011, 64011], "mapped", [24275]], [[64012, 64012], "mapped", [20800]], [[64013, 64013], "mapped", [21952]], [[64014, 64015], "valid"], [[64016, 64016], "mapped", [22618]], [[64017, 64017], "valid"], [[64018, 64018], "mapped", [26228]], [[64019, 64020], "valid"], [[64021, 64021], "mapped", [20958]], [[64022, 64022], "mapped", [29482]], [[64023, 64023], "mapped", [30410]], [[64024, 64024], "mapped", [31036]], [[64025, 64025], "mapped", [31070]], [[64026, 64026], "mapped", [31077]], [[64027, 64027], "mapped", [31119]], [[64028, 64028], "mapped", [38742]], [[64029, 64029], "mapped", [31934]], [[64030, 64030], "mapped", [32701]], [[64031, 64031], "valid"], [[64032, 64032], "mapped", [34322]], [[64033, 64033], "valid"], [[64034, 64034], "mapped", [35576]], [[64035, 64036], "valid"], [[64037, 64037], "mapped", [36920]], [[64038, 64038], "mapped", [37117]], [[64039, 64041], "valid"], [[64042, 64042], "mapped", [39151]], [[64043, 64043], "mapped", [39164]], [[64044, 64044], "mapped", [39208]], [[64045, 64045], "mapped", [40372]], [[64046, 64046], "mapped", [37086]], [[64047, 64047], "mapped", [38583]], [[64048, 64048], "mapped", [20398]], [[64049, 64049], "mapped", [20711]], [[64050, 64050], "mapped", [20813]], [[64051, 64051], "mapped", [21193]], [[64052, 64052], "mapped", [21220]], [[64053, 64053], "mapped", [21329]], [[64054, 64054], "mapped", [21917]], [[64055, 64055], "mapped", [22022]], [[64056, 64056], "mapped", [22120]], [[64057, 64057], "mapped", [22592]], [[64058, 64058], "mapped", [22696]], [[64059, 64059], "mapped", [23652]], [[64060, 64060], "mapped", [23662]], [[64061, 64061], "mapped", [24724]], [[64062, 64062], "mapped", [24936]], [[64063, 64063], "mapped", [24974]], [[64064, 64064], "mapped", [25074]], [[64065, 64065], "mapped", [25935]], [[64066, 64066], "mapped", [26082]], [[64067, 64067], "mapped", [26257]], [[64068, 64068], "mapped", [26757]], [[64069, 64069], "mapped", [28023]], [[64070, 64070], "mapped", [28186]], [[64071, 64071], "mapped", [28450]], [[64072, 64072], "mapped", [29038]], [[64073, 64073], "mapped", [29227]], [[64074, 64074], "mapped", [29730]], [[64075, 64075], "mapped", [30865]], [[64076, 64076], "mapped", [31038]], [[64077, 64077], "mapped", [31049]], [[64078, 64078], "mapped", [31048]], [[64079, 64079], "mapped", [31056]], [[64080, 64080], "mapped", [31062]], [[64081, 64081], "mapped", [31069]], [[64082, 64082], "mapped", [31117]], [[64083, 64083], "mapped", [31118]], [[64084, 64084], "mapped", [31296]], [[64085, 64085], "mapped", [31361]], [[64086, 64086], "mapped", [31680]], [[64087, 64087], "mapped", [32244]], [[64088, 64088], "mapped", [32265]], [[64089, 64089], "mapped", [32321]], [[64090, 64090], "mapped", [32626]], [[64091, 64091], "mapped", [32773]], [[64092, 64092], "mapped", [33261]], [[64093, 64094], "mapped", [33401]], [[64095, 64095], "mapped", [33879]], [[64096, 64096], "mapped", [35088]], [[64097, 64097], "mapped", [35222]], [[64098, 64098], "mapped", [35585]], [[64099, 64099], "mapped", [35641]], [[64100, 64100], "mapped", [36051]], [[64101, 64101], "mapped", [36104]], [[64102, 64102], "mapped", [36790]], [[64103, 64103], "mapped", [36920]], [[64104, 64104], "mapped", [38627]], [[64105, 64105], "mapped", [38911]], [[64106, 64106], "mapped", [38971]], [[64107, 64107], "mapped", [24693]], [[64108, 64108], "mapped", [148206]], [[64109, 64109], "mapped", [33304]], [[64110, 64111], "disallowed"], [[64112, 64112], "mapped", [20006]], [[64113, 64113], "mapped", [20917]], [[64114, 64114], "mapped", [20840]], [[64115, 64115], "mapped", [20352]], [[64116, 64116], "mapped", [20805]], [[64117, 64117], "mapped", [20864]], [[64118, 64118], "mapped", [21191]], [[64119, 64119], "mapped", [21242]], [[64120, 64120], "mapped", [21917]], [[64121, 64121], "mapped", [21845]], [[64122, 64122], "mapped", [21913]], [[64123, 64123], "mapped", [21986]], [[64124, 64124], "mapped", [22618]], [[64125, 64125], "mapped", [22707]], [[64126, 64126], "mapped", [22852]], [[64127, 64127], "mapped", [22868]], [[64128, 64128], "mapped", [23138]], [[64129, 64129], "mapped", [23336]], [[64130, 64130], "mapped", [24274]], [[64131, 64131], "mapped", [24281]], [[64132, 64132], "mapped", [24425]], [[64133, 64133], "mapped", [24493]], [[64134, 64134], "mapped", [24792]], [[64135, 64135], "mapped", [24910]], [[64136, 64136], "mapped", [24840]], [[64137, 64137], "mapped", [24974]], [[64138, 64138], "mapped", [24928]], [[64139, 64139], "mapped", [25074]], [[64140, 64140], "mapped", [25140]], [[64141, 64141], "mapped", [25540]], [[64142, 64142], "mapped", [25628]], [[64143, 64143], "mapped", [25682]], [[64144, 64144], "mapped", [25942]], [[64145, 64145], "mapped", [26228]], [[64146, 64146], "mapped", [26391]], [[64147, 64147], "mapped", [26395]], [[64148, 64148], "mapped", [26454]], [[64149, 64149], "mapped", [27513]], [[64150, 64150], "mapped", [27578]], [[64151, 64151], "mapped", [27969]], [[64152, 64152], "mapped", [28379]], [[64153, 64153], "mapped", [28363]], [[64154, 64154], "mapped", [28450]], [[64155, 64155], "mapped", [28702]], [[64156, 64156], "mapped", [29038]], [[64157, 64157], "mapped", [30631]], [[64158, 64158], "mapped", [29237]], [[64159, 64159], "mapped", [29359]], [[64160, 64160], "mapped", [29482]], [[64161, 64161], "mapped", [29809]], [[64162, 64162], "mapped", [29958]], [[64163, 64163], "mapped", [30011]], [[64164, 64164], "mapped", [30237]], [[64165, 64165], "mapped", [30239]], [[64166, 64166], "mapped", [30410]], [[64167, 64167], "mapped", [30427]], [[64168, 64168], "mapped", [30452]], [[64169, 64169], "mapped", [30538]], [[64170, 64170], "mapped", [30528]], [[64171, 64171], "mapped", [30924]], [[64172, 64172], "mapped", [31409]], [[64173, 64173], "mapped", [31680]], [[64174, 64174], "mapped", [31867]], [[64175, 64175], "mapped", [32091]], [[64176, 64176], "mapped", [32244]], [[64177, 64177], "mapped", [32574]], [[64178, 64178], "mapped", [32773]], [[64179, 64179], "mapped", [33618]], [[64180, 64180], "mapped", [33775]], [[64181, 64181], "mapped", [34681]], [[64182, 64182], "mapped", [35137]], [[64183, 64183], "mapped", [35206]], [[64184, 64184], "mapped", [35222]], [[64185, 64185], "mapped", [35519]], [[64186, 64186], "mapped", [35576]], [[64187, 64187], "mapped", [35531]], [[64188, 64188], "mapped", [35585]], [[64189, 64189], "mapped", [35582]], [[64190, 64190], "mapped", [35565]], [[64191, 64191], "mapped", [35641]], [[64192, 64192], "mapped", [35722]], [[64193, 64193], "mapped", [36104]], [[64194, 64194], "mapped", [36664]], [[64195, 64195], "mapped", [36978]], [[64196, 64196], "mapped", [37273]], [[64197, 64197], "mapped", [37494]], [[64198, 64198], "mapped", [38524]], [[64199, 64199], "mapped", [38627]], [[64200, 64200], "mapped", [38742]], [[64201, 64201], "mapped", [38875]], [[64202, 64202], "mapped", [38911]], [[64203, 64203], "mapped", [38923]], [[64204, 64204], "mapped", [38971]], [[64205, 64205], "mapped", [39698]], [[64206, 64206], "mapped", [40860]], [[64207, 64207], "mapped", [141386]], [[64208, 64208], "mapped", [141380]], [[64209, 64209], "mapped", [144341]], [[64210, 64210], "mapped", [15261]], [[64211, 64211], "mapped", [16408]], [[64212, 64212], "mapped", [16441]], [[64213, 64213], "mapped", [152137]], [[64214, 64214], "mapped", [154832]], [[64215, 64215], "mapped", [163539]], [[64216, 64216], "mapped", [40771]], [[64217, 64217], "mapped", [40846]], [[64218, 64255], "disallowed"], [[64256, 64256], "mapped", [102, 102]], [[64257, 64257], "mapped", [102, 105]], [[64258, 64258], "mapped", [102, 108]], [[64259, 64259], "mapped", [102, 102, 105]], [[64260, 64260], "mapped", [102, 102, 108]], [[64261, 64262], "mapped", [115, 116]], [[64263, 64274], "disallowed"], [[64275, 64275], "mapped", [1396, 1398]], [[64276, 64276], "mapped", [1396, 1381]], [[64277, 64277], "mapped", [1396, 1387]], [[64278, 64278], "mapped", [1406, 1398]], [[64279, 64279], "mapped", [1396, 1389]], [[64280, 64284], "disallowed"], [[64285, 64285], "mapped", [1497, 1460]], [[64286, 64286], "valid"], [[64287, 64287], "mapped", [1522, 1463]], [[64288, 64288], "mapped", [1506]], [[64289, 64289], "mapped", [1488]], [[64290, 64290], "mapped", [1491]], [[64291, 64291], "mapped", [1492]], [[64292, 64292], "mapped", [1499]], [[64293, 64293], "mapped", [1500]], [[64294, 64294], "mapped", [1501]], [[64295, 64295], "mapped", [1512]], [[64296, 64296], "mapped", [1514]], [[64297, 64297], "disallowed_STD3_mapped", [43]], [[64298, 64298], "mapped", [1513, 1473]], [[64299, 64299], "mapped", [1513, 1474]], [[64300, 64300], "mapped", [1513, 1468, 1473]], [[64301, 64301], "mapped", [1513, 1468, 1474]], [[64302, 64302], "mapped", [1488, 1463]], [[64303, 64303], "mapped", [1488, 1464]], [[64304, 64304], "mapped", [1488, 1468]], [[64305, 64305], "mapped", [1489, 1468]], [[64306, 64306], "mapped", [1490, 1468]], [[64307, 64307], "mapped", [1491, 1468]], [[64308, 64308], "mapped", [1492, 1468]], [[64309, 64309], "mapped", [1493, 1468]], [[64310, 64310], "mapped", [1494, 1468]], [[64311, 64311], "disallowed"], [[64312, 64312], "mapped", [1496, 1468]], [[64313, 64313], "mapped", [1497, 1468]], [[64314, 64314], "mapped", [1498, 1468]], [[64315, 64315], "mapped", [1499, 1468]], [[64316, 64316], "mapped", [1500, 1468]], [[64317, 64317], "disallowed"], [[64318, 64318], "mapped", [1502, 1468]], [[64319, 64319], "disallowed"], [[64320, 64320], "mapped", [1504, 1468]], [[64321, 64321], "mapped", [1505, 1468]], [[64322, 64322], "disallowed"], [[64323, 64323], "mapped", [1507, 1468]], [[64324, 64324], "mapped", [1508, 1468]], [[64325, 64325], "disallowed"], [[64326, 64326], "mapped", [1510, 1468]], [[64327, 64327], "mapped", [1511, 1468]], [[64328, 64328], "mapped", [1512, 1468]], [[64329, 64329], "mapped", [1513, 1468]], [[64330, 64330], "mapped", [1514, 1468]], [[64331, 64331], "mapped", [1493, 1465]], [[64332, 64332], "mapped", [1489, 1471]], [[64333, 64333], "mapped", [1499, 1471]], [[64334, 64334], "mapped", [1508, 1471]], [[64335, 64335], "mapped", [1488, 1500]], [[64336, 64337], "mapped", [1649]], [[64338, 64341], "mapped", [1659]], [[64342, 64345], "mapped", [1662]], [[64346, 64349], "mapped", [1664]], [[64350, 64353], "mapped", [1658]], [[64354, 64357], "mapped", [1663]], [[64358, 64361], "mapped", [1657]], [[64362, 64365], "mapped", [1700]], [[64366, 64369], "mapped", [1702]], [[64370, 64373], "mapped", [1668]], [[64374, 64377], "mapped", [1667]], [[64378, 64381], "mapped", [1670]], [[64382, 64385], "mapped", [1671]], [[64386, 64387], "mapped", [1677]], [[64388, 64389], "mapped", [1676]], [[64390, 64391], "mapped", [1678]], [[64392, 64393], "mapped", [1672]], [[64394, 64395], "mapped", [1688]], [[64396, 64397], "mapped", [1681]], [[64398, 64401], "mapped", [1705]], [[64402, 64405], "mapped", [1711]], [[64406, 64409], "mapped", [1715]], [[64410, 64413], "mapped", [1713]], [[64414, 64415], "mapped", [1722]], [[64416, 64419], "mapped", [1723]], [[64420, 64421], "mapped", [1728]], [[64422, 64425], "mapped", [1729]], [[64426, 64429], "mapped", [1726]], [[64430, 64431], "mapped", [1746]], [[64432, 64433], "mapped", [1747]], [[64434, 64449], "valid", [], "NV8"], [[64450, 64466], "disallowed"], [[64467, 64470], "mapped", [1709]], [[64471, 64472], "mapped", [1735]], [[64473, 64474], "mapped", [1734]], [[64475, 64476], "mapped", [1736]], [[64477, 64477], "mapped", [1735, 1652]], [[64478, 64479], "mapped", [1739]], [[64480, 64481], "mapped", [1733]], [[64482, 64483], "mapped", [1737]], [[64484, 64487], "mapped", [1744]], [[64488, 64489], "mapped", [1609]], [[64490, 64491], "mapped", [1574, 1575]], [[64492, 64493], "mapped", [1574, 1749]], [[64494, 64495], "mapped", [1574, 1608]], [[64496, 64497], "mapped", [1574, 1735]], [[64498, 64499], "mapped", [1574, 1734]], [[64500, 64501], "mapped", [1574, 1736]], [[64502, 64504], "mapped", [1574, 1744]], [[64505, 64507], "mapped", [1574, 1609]], [[64508, 64511], "mapped", [1740]], [[64512, 64512], "mapped", [1574, 1580]], [[64513, 64513], "mapped", [1574, 1581]], [[64514, 64514], "mapped", [1574, 1605]], [[64515, 64515], "mapped", [1574, 1609]], [[64516, 64516], "mapped", [1574, 1610]], [[64517, 64517], "mapped", [1576, 1580]], [[64518, 64518], "mapped", [1576, 1581]], [[64519, 64519], "mapped", [1576, 1582]], [[64520, 64520], "mapped", [1576, 1605]], [[64521, 64521], "mapped", [1576, 1609]], [[64522, 64522], "mapped", [1576, 1610]], [[64523, 64523], "mapped", [1578, 1580]], [[64524, 64524], "mapped", [1578, 1581]], [[64525, 64525], "mapped", [1578, 1582]], [[64526, 64526], "mapped", [1578, 1605]], [[64527, 64527], "mapped", [1578, 1609]], [[64528, 64528], "mapped", [1578, 1610]], [[64529, 64529], "mapped", [1579, 1580]], [[64530, 64530], "mapped", [1579, 1605]], [[64531, 64531], "mapped", [1579, 1609]], [[64532, 64532], "mapped", [1579, 1610]], [[64533, 64533], "mapped", [1580, 1581]], [[64534, 64534], "mapped", [1580, 1605]], [[64535, 64535], "mapped", [1581, 1580]], [[64536, 64536], "mapped", [1581, 1605]], [[64537, 64537], "mapped", [1582, 1580]], [[64538, 64538], "mapped", [1582, 1581]], [[64539, 64539], "mapped", [1582, 1605]], [[64540, 64540], "mapped", [1587, 1580]], [[64541, 64541], "mapped", [1587, 1581]], [[64542, 64542], "mapped", [1587, 1582]], [[64543, 64543], "mapped", [1587, 1605]], [[64544, 64544], "mapped", [1589, 1581]], [[64545, 64545], "mapped", [1589, 1605]], [[64546, 64546], "mapped", [1590, 1580]], [[64547, 64547], "mapped", [1590, 1581]], [[64548, 64548], "mapped", [1590, 1582]], [[64549, 64549], "mapped", [1590, 1605]], [[64550, 64550], "mapped", [1591, 1581]], [[64551, 64551], "mapped", [1591, 1605]], [[64552, 64552], "mapped", [1592, 1605]], [[64553, 64553], "mapped", [1593, 1580]], [[64554, 64554], "mapped", [1593, 1605]], [[64555, 64555], "mapped", [1594, 1580]], [[64556, 64556], "mapped", [1594, 1605]], [[64557, 64557], "mapped", [1601, 1580]], [[64558, 64558], "mapped", [1601, 1581]], [[64559, 64559], "mapped", [1601, 1582]], [[64560, 64560], "mapped", [1601, 1605]], [[64561, 64561], "mapped", [1601, 1609]], [[64562, 64562], "mapped", [1601, 1610]], [[64563, 64563], "mapped", [1602, 1581]], [[64564, 64564], "mapped", [1602, 1605]], [[64565, 64565], "mapped", [1602, 1609]], [[64566, 64566], "mapped", [1602, 1610]], [[64567, 64567], "mapped", [1603, 1575]], [[64568, 64568], "mapped", [1603, 1580]], [[64569, 64569], "mapped", [1603, 1581]], [[64570, 64570], "mapped", [1603, 1582]], [[64571, 64571], "mapped", [1603, 1604]], [[64572, 64572], "mapped", [1603, 1605]], [[64573, 64573], "mapped", [1603, 1609]], [[64574, 64574], "mapped", [1603, 1610]], [[64575, 64575], "mapped", [1604, 1580]], [[64576, 64576], "mapped", [1604, 1581]], [[64577, 64577], "mapped", [1604, 1582]], [[64578, 64578], "mapped", [1604, 1605]], [[64579, 64579], "mapped", [1604, 1609]], [[64580, 64580], "mapped", [1604, 1610]], [[64581, 64581], "mapped", [1605, 1580]], [[64582, 64582], "mapped", [1605, 1581]], [[64583, 64583], "mapped", [1605, 1582]], [[64584, 64584], "mapped", [1605, 1605]], [[64585, 64585], "mapped", [1605, 1609]], [[64586, 64586], "mapped", [1605, 1610]], [[64587, 64587], "mapped", [1606, 1580]], [[64588, 64588], "mapped", [1606, 1581]], [[64589, 64589], "mapped", [1606, 1582]], [[64590, 64590], "mapped", [1606, 1605]], [[64591, 64591], "mapped", [1606, 1609]], [[64592, 64592], "mapped", [1606, 1610]], [[64593, 64593], "mapped", [1607, 1580]], [[64594, 64594], "mapped", [1607, 1605]], [[64595, 64595], "mapped", [1607, 1609]], [[64596, 64596], "mapped", [1607, 1610]], [[64597, 64597], "mapped", [1610, 1580]], [[64598, 64598], "mapped", [1610, 1581]], [[64599, 64599], "mapped", [1610, 1582]], [[64600, 64600], "mapped", [1610, 1605]], [[64601, 64601], "mapped", [1610, 1609]], [[64602, 64602], "mapped", [1610, 1610]], [[64603, 64603], "mapped", [1584, 1648]], [[64604, 64604], "mapped", [1585, 1648]], [[64605, 64605], "mapped", [1609, 1648]], [[64606, 64606], "disallowed_STD3_mapped", [32, 1612, 1617]], [[64607, 64607], "disallowed_STD3_mapped", [32, 1613, 1617]], [[64608, 64608], "disallowed_STD3_mapped", [32, 1614, 1617]], [[64609, 64609], "disallowed_STD3_mapped", [32, 1615, 1617]], [[64610, 64610], "disallowed_STD3_mapped", [32, 1616, 1617]], [[64611, 64611], "disallowed_STD3_mapped", [32, 1617, 1648]], [[64612, 64612], "mapped", [1574, 1585]], [[64613, 64613], "mapped", [1574, 1586]], [[64614, 64614], "mapped", [1574, 1605]], [[64615, 64615], "mapped", [1574, 1606]], [[64616, 64616], "mapped", [1574, 1609]], [[64617, 64617], "mapped", [1574, 1610]], [[64618, 64618], "mapped", [1576, 1585]], [[64619, 64619], "mapped", [1576, 1586]], [[64620, 64620], "mapped", [1576, 1605]], [[64621, 64621], "mapped", [1576, 1606]], [[64622, 64622], "mapped", [1576, 1609]], [[64623, 64623], "mapped", [1576, 1610]], [[64624, 64624], "mapped", [1578, 1585]], [[64625, 64625], "mapped", [1578, 1586]], [[64626, 64626], "mapped", [1578, 1605]], [[64627, 64627], "mapped", [1578, 1606]], [[64628, 64628], "mapped", [1578, 1609]], [[64629, 64629], "mapped", [1578, 1610]], [[64630, 64630], "mapped", [1579, 1585]], [[64631, 64631], "mapped", [1579, 1586]], [[64632, 64632], "mapped", [1579, 1605]], [[64633, 64633], "mapped", [1579, 1606]], [[64634, 64634], "mapped", [1579, 1609]], [[64635, 64635], "mapped", [1579, 1610]], [[64636, 64636], "mapped", [1601, 1609]], [[64637, 64637], "mapped", [1601, 1610]], [[64638, 64638], "mapped", [1602, 1609]], [[64639, 64639], "mapped", [1602, 1610]], [[64640, 64640], "mapped", [1603, 1575]], [[64641, 64641], "mapped", [1603, 1604]], [[64642, 64642], "mapped", [1603, 1605]], [[64643, 64643], "mapped", [1603, 1609]], [[64644, 64644], "mapped", [1603, 1610]], [[64645, 64645], "mapped", [1604, 1605]], [[64646, 64646], "mapped", [1604, 1609]], [[64647, 64647], "mapped", [1604, 1610]], [[64648, 64648], "mapped", [1605, 1575]], [[64649, 64649], "mapped", [1605, 1605]], [[64650, 64650], "mapped", [1606, 1585]], [[64651, 64651], "mapped", [1606, 1586]], [[64652, 64652], "mapped", [1606, 1605]], [[64653, 64653], "mapped", [1606, 1606]], [[64654, 64654], "mapped", [1606, 1609]], [[64655, 64655], "mapped", [1606, 1610]], [[64656, 64656], "mapped", [1609, 1648]], [[64657, 64657], "mapped", [1610, 1585]], [[64658, 64658], "mapped", [1610, 1586]], [[64659, 64659], "mapped", [1610, 1605]], [[64660, 64660], "mapped", [1610, 1606]], [[64661, 64661], "mapped", [1610, 1609]], [[64662, 64662], "mapped", [1610, 1610]], [[64663, 64663], "mapped", [1574, 1580]], [[64664, 64664], "mapped", [1574, 1581]], [[64665, 64665], "mapped", [1574, 1582]], [[64666, 64666], "mapped", [1574, 1605]], [[64667, 64667], "mapped", [1574, 1607]], [[64668, 64668], "mapped", [1576, 1580]], [[64669, 64669], "mapped", [1576, 1581]], [[64670, 64670], "mapped", [1576, 1582]], [[64671, 64671], "mapped", [1576, 1605]], [[64672, 64672], "mapped", [1576, 1607]], [[64673, 64673], "mapped", [1578, 1580]], [[64674, 64674], "mapped", [1578, 1581]], [[64675, 64675], "mapped", [1578, 1582]], [[64676, 64676], "mapped", [1578, 1605]], [[64677, 64677], "mapped", [1578, 1607]], [[64678, 64678], "mapped", [1579, 1605]], [[64679, 64679], "mapped", [1580, 1581]], [[64680, 64680], "mapped", [1580, 1605]], [[64681, 64681], "mapped", [1581, 1580]], [[64682, 64682], "mapped", [1581, 1605]], [[64683, 64683], "mapped", [1582, 1580]], [[64684, 64684], "mapped", [1582, 1605]], [[64685, 64685], "mapped", [1587, 1580]], [[64686, 64686], "mapped", [1587, 1581]], [[64687, 64687], "mapped", [1587, 1582]], [[64688, 64688], "mapped", [1587, 1605]], [[64689, 64689], "mapped", [1589, 1581]], [[64690, 64690], "mapped", [1589, 1582]], [[64691, 64691], "mapped", [1589, 1605]], [[64692, 64692], "mapped", [1590, 1580]], [[64693, 64693], "mapped", [1590, 1581]], [[64694, 64694], "mapped", [1590, 1582]], [[64695, 64695], "mapped", [1590, 1605]], [[64696, 64696], "mapped", [1591, 1581]], [[64697, 64697], "mapped", [1592, 1605]], [[64698, 64698], "mapped", [1593, 1580]], [[64699, 64699], "mapped", [1593, 1605]], [[64700, 64700], "mapped", [1594, 1580]], [[64701, 64701], "mapped", [1594, 1605]], [[64702, 64702], "mapped", [1601, 1580]], [[64703, 64703], "mapped", [1601, 1581]], [[64704, 64704], "mapped", [1601, 1582]], [[64705, 64705], "mapped", [1601, 1605]], [[64706, 64706], "mapped", [1602, 1581]], [[64707, 64707], "mapped", [1602, 1605]], [[64708, 64708], "mapped", [1603, 1580]], [[64709, 64709], "mapped", [1603, 1581]], [[64710, 64710], "mapped", [1603, 1582]], [[64711, 64711], "mapped", [1603, 1604]], [[64712, 64712], "mapped", [1603, 1605]], [[64713, 64713], "mapped", [1604, 1580]], [[64714, 64714], "mapped", [1604, 1581]], [[64715, 64715], "mapped", [1604, 1582]], [[64716, 64716], "mapped", [1604, 1605]], [[64717, 64717], "mapped", [1604, 1607]], [[64718, 64718], "mapped", [1605, 1580]], [[64719, 64719], "mapped", [1605, 1581]], [[64720, 64720], "mapped", [1605, 1582]], [[64721, 64721], "mapped", [1605, 1605]], [[64722, 64722], "mapped", [1606, 1580]], [[64723, 64723], "mapped", [1606, 1581]], [[64724, 64724], "mapped", [1606, 1582]], [[64725, 64725], "mapped", [1606, 1605]], [[64726, 64726], "mapped", [1606, 1607]], [[64727, 64727], "mapped", [1607, 1580]], [[64728, 64728], "mapped", [1607, 1605]], [[64729, 64729], "mapped", [1607, 1648]], [[64730, 64730], "mapped", [1610, 1580]], [[64731, 64731], "mapped", [1610, 1581]], [[64732, 64732], "mapped", [1610, 1582]], [[64733, 64733], "mapped", [1610, 1605]], [[64734, 64734], "mapped", [1610, 1607]], [[64735, 64735], "mapped", [1574, 1605]], [[64736, 64736], "mapped", [1574, 1607]], [[64737, 64737], "mapped", [1576, 1605]], [[64738, 64738], "mapped", [1576, 1607]], [[64739, 64739], "mapped", [1578, 1605]], [[64740, 64740], "mapped", [1578, 1607]], [[64741, 64741], "mapped", [1579, 1605]], [[64742, 64742], "mapped", [1579, 1607]], [[64743, 64743], "mapped", [1587, 1605]], [[64744, 64744], "mapped", [1587, 1607]], [[64745, 64745], "mapped", [1588, 1605]], [[64746, 64746], "mapped", [1588, 1607]], [[64747, 64747], "mapped", [1603, 1604]], [[64748, 64748], "mapped", [1603, 1605]], [[64749, 64749], "mapped", [1604, 1605]], [[64750, 64750], "mapped", [1606, 1605]], [[64751, 64751], "mapped", [1606, 1607]], [[64752, 64752], "mapped", [1610, 1605]], [[64753, 64753], "mapped", [1610, 1607]], [[64754, 64754], "mapped", [1600, 1614, 1617]], [[64755, 64755], "mapped", [1600, 1615, 1617]], [[64756, 64756], "mapped", [1600, 1616, 1617]], [[64757, 64757], "mapped", [1591, 1609]], [[64758, 64758], "mapped", [1591, 1610]], [[64759, 64759], "mapped", [1593, 1609]], [[64760, 64760], "mapped", [1593, 1610]], [[64761, 64761], "mapped", [1594, 1609]], [[64762, 64762], "mapped", [1594, 1610]], [[64763, 64763], "mapped", [1587, 1609]], [[64764, 64764], "mapped", [1587, 1610]], [[64765, 64765], "mapped", [1588, 1609]], [[64766, 64766], "mapped", [1588, 1610]], [[64767, 64767], "mapped", [1581, 1609]], [[64768, 64768], "mapped", [1581, 1610]], [[64769, 64769], "mapped", [1580, 1609]], [[64770, 64770], "mapped", [1580, 1610]], [[64771, 64771], "mapped", [1582, 1609]], [[64772, 64772], "mapped", [1582, 1610]], [[64773, 64773], "mapped", [1589, 1609]], [[64774, 64774], "mapped", [1589, 1610]], [[64775, 64775], "mapped", [1590, 1609]], [[64776, 64776], "mapped", [1590, 1610]], [[64777, 64777], "mapped", [1588, 1580]], [[64778, 64778], "mapped", [1588, 1581]], [[64779, 64779], "mapped", [1588, 1582]], [[64780, 64780], "mapped", [1588, 1605]], [[64781, 64781], "mapped", [1588, 1585]], [[64782, 64782], "mapped", [1587, 1585]], [[64783, 64783], "mapped", [1589, 1585]], [[64784, 64784], "mapped", [1590, 1585]], [[64785, 64785], "mapped", [1591, 1609]], [[64786, 64786], "mapped", [1591, 1610]], [[64787, 64787], "mapped", [1593, 1609]], [[64788, 64788], "mapped", [1593, 1610]], [[64789, 64789], "mapped", [1594, 1609]], [[64790, 64790], "mapped", [1594, 1610]], [[64791, 64791], "mapped", [1587, 1609]], [[64792, 64792], "mapped", [1587, 1610]], [[64793, 64793], "mapped", [1588, 1609]], [[64794, 64794], "mapped", [1588, 1610]], [[64795, 64795], "mapped", [1581, 1609]], [[64796, 64796], "mapped", [1581, 1610]], [[64797, 64797], "mapped", [1580, 1609]], [[64798, 64798], "mapped", [1580, 1610]], [[64799, 64799], "mapped", [1582, 1609]], [[64800, 64800], "mapped", [1582, 1610]], [[64801, 64801], "mapped", [1589, 1609]], [[64802, 64802], "mapped", [1589, 1610]], [[64803, 64803], "mapped", [1590, 1609]], [[64804, 64804], "mapped", [1590, 1610]], [[64805, 64805], "mapped", [1588, 1580]], [[64806, 64806], "mapped", [1588, 1581]], [[64807, 64807], "mapped", [1588, 1582]], [[64808, 64808], "mapped", [1588, 1605]], [[64809, 64809], "mapped", [1588, 1585]], [[64810, 64810], "mapped", [1587, 1585]], [[64811, 64811], "mapped", [1589, 1585]], [[64812, 64812], "mapped", [1590, 1585]], [[64813, 64813], "mapped", [1588, 1580]], [[64814, 64814], "mapped", [1588, 1581]], [[64815, 64815], "mapped", [1588, 1582]], [[64816, 64816], "mapped", [1588, 1605]], [[64817, 64817], "mapped", [1587, 1607]], [[64818, 64818], "mapped", [1588, 1607]], [[64819, 64819], "mapped", [1591, 1605]], [[64820, 64820], "mapped", [1587, 1580]], [[64821, 64821], "mapped", [1587, 1581]], [[64822, 64822], "mapped", [1587, 1582]], [[64823, 64823], "mapped", [1588, 1580]], [[64824, 64824], "mapped", [1588, 1581]], [[64825, 64825], "mapped", [1588, 1582]], [[64826, 64826], "mapped", [1591, 1605]], [[64827, 64827], "mapped", [1592, 1605]], [[64828, 64829], "mapped", [1575, 1611]], [[64830, 64831], "valid", [], "NV8"], [[64832, 64847], "disallowed"], [[64848, 64848], "mapped", [1578, 1580, 1605]], [[64849, 64850], "mapped", [1578, 1581, 1580]], [[64851, 64851], "mapped", [1578, 1581, 1605]], [[64852, 64852], "mapped", [1578, 1582, 1605]], [[64853, 64853], "mapped", [1578, 1605, 1580]], [[64854, 64854], "mapped", [1578, 1605, 1581]], [[64855, 64855], "mapped", [1578, 1605, 1582]], [[64856, 64857], "mapped", [1580, 1605, 1581]], [[64858, 64858], "mapped", [1581, 1605, 1610]], [[64859, 64859], "mapped", [1581, 1605, 1609]], [[64860, 64860], "mapped", [1587, 1581, 1580]], [[64861, 64861], "mapped", [1587, 1580, 1581]], [[64862, 64862], "mapped", [1587, 1580, 1609]], [[64863, 64864], "mapped", [1587, 1605, 1581]], [[64865, 64865], "mapped", [1587, 1605, 1580]], [[64866, 64867], "mapped", [1587, 1605, 1605]], [[64868, 64869], "mapped", [1589, 1581, 1581]], [[64870, 64870], "mapped", [1589, 1605, 1605]], [[64871, 64872], "mapped", [1588, 1581, 1605]], [[64873, 64873], "mapped", [1588, 1580, 1610]], [[64874, 64875], "mapped", [1588, 1605, 1582]], [[64876, 64877], "mapped", [1588, 1605, 1605]], [[64878, 64878], "mapped", [1590, 1581, 1609]], [[64879, 64880], "mapped", [1590, 1582, 1605]], [[64881, 64882], "mapped", [1591, 1605, 1581]], [[64883, 64883], "mapped", [1591, 1605, 1605]], [[64884, 64884], "mapped", [1591, 1605, 1610]], [[64885, 64885], "mapped", [1593, 1580, 1605]], [[64886, 64887], "mapped", [1593, 1605, 1605]], [[64888, 64888], "mapped", [1593, 1605, 1609]], [[64889, 64889], "mapped", [1594, 1605, 1605]], [[64890, 64890], "mapped", [1594, 1605, 1610]], [[64891, 64891], "mapped", [1594, 1605, 1609]], [[64892, 64893], "mapped", [1601, 1582, 1605]], [[64894, 64894], "mapped", [1602, 1605, 1581]], [[64895, 64895], "mapped", [1602, 1605, 1605]], [[64896, 64896], "mapped", [1604, 1581, 1605]], [[64897, 64897], "mapped", [1604, 1581, 1610]], [[64898, 64898], "mapped", [1604, 1581, 1609]], [[64899, 64900], "mapped", [1604, 1580, 1580]], [[64901, 64902], "mapped", [1604, 1582, 1605]], [[64903, 64904], "mapped", [1604, 1605, 1581]], [[64905, 64905], "mapped", [1605, 1581, 1580]], [[64906, 64906], "mapped", [1605, 1581, 1605]], [[64907, 64907], "mapped", [1605, 1581, 1610]], [[64908, 64908], "mapped", [1605, 1580, 1581]], [[64909, 64909], "mapped", [1605, 1580, 1605]], [[64910, 64910], "mapped", [1605, 1582, 1580]], [[64911, 64911], "mapped", [1605, 1582, 1605]], [[64912, 64913], "disallowed"], [[64914, 64914], "mapped", [1605, 1580, 1582]], [[64915, 64915], "mapped", [1607, 1605, 1580]], [[64916, 64916], "mapped", [1607, 1605, 1605]], [[64917, 64917], "mapped", [1606, 1581, 1605]], [[64918, 64918], "mapped", [1606, 1581, 1609]], [[64919, 64920], "mapped", [1606, 1580, 1605]], [[64921, 64921], "mapped", [1606, 1580, 1609]], [[64922, 64922], "mapped", [1606, 1605, 1610]], [[64923, 64923], "mapped", [1606, 1605, 1609]], [[64924, 64925], "mapped", [1610, 1605, 1605]], [[64926, 64926], "mapped", [1576, 1582, 1610]], [[64927, 64927], "mapped", [1578, 1580, 1610]], [[64928, 64928], "mapped", [1578, 1580, 1609]], [[64929, 64929], "mapped", [1578, 1582, 1610]], [[64930, 64930], "mapped", [1578, 1582, 1609]], [[64931, 64931], "mapped", [1578, 1605, 1610]], [[64932, 64932], "mapped", [1578, 1605, 1609]], [[64933, 64933], "mapped", [1580, 1605, 1610]], [[64934, 64934], "mapped", [1580, 1581, 1609]], [[64935, 64935], "mapped", [1580, 1605, 1609]], [[64936, 64936], "mapped", [1587, 1582, 1609]], [[64937, 64937], "mapped", [1589, 1581, 1610]], [[64938, 64938], "mapped", [1588, 1581, 1610]], [[64939, 64939], "mapped", [1590, 1581, 1610]], [[64940, 64940], "mapped", [1604, 1580, 1610]], [[64941, 64941], "mapped", [1604, 1605, 1610]], [[64942, 64942], "mapped", [1610, 1581, 1610]], [[64943, 64943], "mapped", [1610, 1580, 1610]], [[64944, 64944], "mapped", [1610, 1605, 1610]], [[64945, 64945], "mapped", [1605, 1605, 1610]], [[64946, 64946], "mapped", [1602, 1605, 1610]], [[64947, 64947], "mapped", [1606, 1581, 1610]], [[64948, 64948], "mapped", [1602, 1605, 1581]], [[64949, 64949], "mapped", [1604, 1581, 1605]], [[64950, 64950], "mapped", [1593, 1605, 1610]], [[64951, 64951], "mapped", [1603, 1605, 1610]], [[64952, 64952], "mapped", [1606, 1580, 1581]], [[64953, 64953], "mapped", [1605, 1582, 1610]], [[64954, 64954], "mapped", [1604, 1580, 1605]], [[64955, 64955], "mapped", [1603, 1605, 1605]], [[64956, 64956], "mapped", [1604, 1580, 1605]], [[64957, 64957], "mapped", [1606, 1580, 1581]], [[64958, 64958], "mapped", [1580, 1581, 1610]], [[64959, 64959], "mapped", [1581, 1580, 1610]], [[64960, 64960], "mapped", [1605, 1580, 1610]], [[64961, 64961], "mapped", [1601, 1605, 1610]], [[64962, 64962], "mapped", [1576, 1581, 1610]], [[64963, 64963], "mapped", [1603, 1605, 1605]], [[64964, 64964], "mapped", [1593, 1580, 1605]], [[64965, 64965], "mapped", [1589, 1605, 1605]], [[64966, 64966], "mapped", [1587, 1582, 1610]], [[64967, 64967], "mapped", [1606, 1580, 1610]], [[64968, 64975], "disallowed"], [[64976, 65007], "disallowed"], [[65008, 65008], "mapped", [1589, 1604, 1746]], [[65009, 65009], "mapped", [1602, 1604, 1746]], [[65010, 65010], "mapped", [1575, 1604, 1604, 1607]], [[65011, 65011], "mapped", [1575, 1603, 1576, 1585]], [[65012, 65012], "mapped", [1605, 1581, 1605, 1583]], [[65013, 65013], "mapped", [1589, 1604, 1593, 1605]], [[65014, 65014], "mapped", [1585, 1587, 1608, 1604]], [[65015, 65015], "mapped", [1593, 1604, 1610, 1607]], [[65016, 65016], "mapped", [1608, 1587, 1604, 1605]], [[65017, 65017], "mapped", [1589, 1604, 1609]], [[65018, 65018], "disallowed_STD3_mapped", [1589, 1604, 1609, 32, 1575, 1604, 1604, 1607, 32, 1593, 1604, 1610, 1607, 32, 1608, 1587, 1604, 1605]], [[65019, 65019], "disallowed_STD3_mapped", [1580, 1604, 32, 1580, 1604, 1575, 1604, 1607]], [[65020, 65020], "mapped", [1585, 1740, 1575, 1604]], [[65021, 65021], "valid", [], "NV8"], [[65022, 65023], "disallowed"], [[65024, 65039], "ignored"], [[65040, 65040], "disallowed_STD3_mapped", [44]], [[65041, 65041], "mapped", [12289]], [[65042, 65042], "disallowed"], [[65043, 65043], "disallowed_STD3_mapped", [58]], [[65044, 65044], "disallowed_STD3_mapped", [59]], [[65045, 65045], "disallowed_STD3_mapped", [33]], [[65046, 65046], "disallowed_STD3_mapped", [63]], [[65047, 65047], "mapped", [12310]], [[65048, 65048], "mapped", [12311]], [[65049, 65049], "disallowed"], [[65050, 65055], "disallowed"], [[65056, 65059], "valid"], [[65060, 65062], "valid"], [[65063, 65069], "valid"], [[65070, 65071], "valid"], [[65072, 65072], "disallowed"], [[65073, 65073], "mapped", [8212]], [[65074, 65074], "mapped", [8211]], [[65075, 65076], "disallowed_STD3_mapped", [95]], [[65077, 65077], "disallowed_STD3_mapped", [40]], [[65078, 65078], "disallowed_STD3_mapped", [41]], [[65079, 65079], "disallowed_STD3_mapped", [123]], [[65080, 65080], "disallowed_STD3_mapped", [125]], [[65081, 65081], "mapped", [12308]], [[65082, 65082], "mapped", [12309]], [[65083, 65083], "mapped", [12304]], [[65084, 65084], "mapped", [12305]], [[65085, 65085], "mapped", [12298]], [[65086, 65086], "mapped", [12299]], [[65087, 65087], "mapped", [12296]], [[65088, 65088], "mapped", [12297]], [[65089, 65089], "mapped", [12300]], [[65090, 65090], "mapped", [12301]], [[65091, 65091], "mapped", [12302]], [[65092, 65092], "mapped", [12303]], [[65093, 65094], "valid", [], "NV8"], [[65095, 65095], "disallowed_STD3_mapped", [91]], [[65096, 65096], "disallowed_STD3_mapped", [93]], [[65097, 65100], "disallowed_STD3_mapped", [32, 773]], [[65101, 65103], "disallowed_STD3_mapped", [95]], [[65104, 65104], "disallowed_STD3_mapped", [44]], [[65105, 65105], "mapped", [12289]], [[65106, 65106], "disallowed"], [[65107, 65107], "disallowed"], [[65108, 65108], "disallowed_STD3_mapped", [59]], [[65109, 65109], "disallowed_STD3_mapped", [58]], [[65110, 65110], "disallowed_STD3_mapped", [63]], [[65111, 65111], "disallowed_STD3_mapped", [33]], [[65112, 65112], "mapped", [8212]], [[65113, 65113], "disallowed_STD3_mapped", [40]], [[65114, 65114], "disallowed_STD3_mapped", [41]], [[65115, 65115], "disallowed_STD3_mapped", [123]], [[65116, 65116], "disallowed_STD3_mapped", [125]], [[65117, 65117], "mapped", [12308]], [[65118, 65118], "mapped", [12309]], [[65119, 65119], "disallowed_STD3_mapped", [35]], [[65120, 65120], "disallowed_STD3_mapped", [38]], [[65121, 65121], "disallowed_STD3_mapped", [42]], [[65122, 65122], "disallowed_STD3_mapped", [43]], [[65123, 65123], "mapped", [45]], [[65124, 65124], "disallowed_STD3_mapped", [60]], [[65125, 65125], "disallowed_STD3_mapped", [62]], [[65126, 65126], "disallowed_STD3_mapped", [61]], [[65127, 65127], "disallowed"], [[65128, 65128], "disallowed_STD3_mapped", [92]], [[65129, 65129], "disallowed_STD3_mapped", [36]], [[65130, 65130], "disallowed_STD3_mapped", [37]], [[65131, 65131], "disallowed_STD3_mapped", [64]], [[65132, 65135], "disallowed"], [[65136, 65136], "disallowed_STD3_mapped", [32, 1611]], [[65137, 65137], "mapped", [1600, 1611]], [[65138, 65138], "disallowed_STD3_mapped", [32, 1612]], [[65139, 65139], "valid"], [[65140, 65140], "disallowed_STD3_mapped", [32, 1613]], [[65141, 65141], "disallowed"], [[65142, 65142], "disallowed_STD3_mapped", [32, 1614]], [[65143, 65143], "mapped", [1600, 1614]], [[65144, 65144], "disallowed_STD3_mapped", [32, 1615]], [[65145, 65145], "mapped", [1600, 1615]], [[65146, 65146], "disallowed_STD3_mapped", [32, 1616]], [[65147, 65147], "mapped", [1600, 1616]], [[65148, 65148], "disallowed_STD3_mapped", [32, 1617]], [[65149, 65149], "mapped", [1600, 1617]], [[65150, 65150], "disallowed_STD3_mapped", [32, 1618]], [[65151, 65151], "mapped", [1600, 1618]], [[65152, 65152], "mapped", [1569]], [[65153, 65154], "mapped", [1570]], [[65155, 65156], "mapped", [1571]], [[65157, 65158], "mapped", [1572]], [[65159, 65160], "mapped", [1573]], [[65161, 65164], "mapped", [1574]], [[65165, 65166], "mapped", [1575]], [[65167, 65170], "mapped", [1576]], [[65171, 65172], "mapped", [1577]], [[65173, 65176], "mapped", [1578]], [[65177, 65180], "mapped", [1579]], [[65181, 65184], "mapped", [1580]], [[65185, 65188], "mapped", [1581]], [[65189, 65192], "mapped", [1582]], [[65193, 65194], "mapped", [1583]], [[65195, 65196], "mapped", [1584]], [[65197, 65198], "mapped", [1585]], [[65199, 65200], "mapped", [1586]], [[65201, 65204], "mapped", [1587]], [[65205, 65208], "mapped", [1588]], [[65209, 65212], "mapped", [1589]], [[65213, 65216], "mapped", [1590]], [[65217, 65220], "mapped", [1591]], [[65221, 65224], "mapped", [1592]], [[65225, 65228], "mapped", [1593]], [[65229, 65232], "mapped", [1594]], [[65233, 65236], "mapped", [1601]], [[65237, 65240], "mapped", [1602]], [[65241, 65244], "mapped", [1603]], [[65245, 65248], "mapped", [1604]], [[65249, 65252], "mapped", [1605]], [[65253, 65256], "mapped", [1606]], [[65257, 65260], "mapped", [1607]], [[65261, 65262], "mapped", [1608]], [[65263, 65264], "mapped", [1609]], [[65265, 65268], "mapped", [1610]], [[65269, 65270], "mapped", [1604, 1570]], [[65271, 65272], "mapped", [1604, 1571]], [[65273, 65274], "mapped", [1604, 1573]], [[65275, 65276], "mapped", [1604, 1575]], [[65277, 65278], "disallowed"], [[65279, 65279], "ignored"], [[65280, 65280], "disallowed"], [[65281, 65281], "disallowed_STD3_mapped", [33]], [[65282, 65282], "disallowed_STD3_mapped", [34]], [[65283, 65283], "disallowed_STD3_mapped", [35]], [[65284, 65284], "disallowed_STD3_mapped", [36]], [[65285, 65285], "disallowed_STD3_mapped", [37]], [[65286, 65286], "disallowed_STD3_mapped", [38]], [[65287, 65287], "disallowed_STD3_mapped", [39]], [[65288, 65288], "disallowed_STD3_mapped", [40]], [[65289, 65289], "disallowed_STD3_mapped", [41]], [[65290, 65290], "disallowed_STD3_mapped", [42]], [[65291, 65291], "disallowed_STD3_mapped", [43]], [[65292, 65292], "disallowed_STD3_mapped", [44]], [[65293, 65293], "mapped", [45]], [[65294, 65294], "mapped", [46]], [[65295, 65295], "disallowed_STD3_mapped", [47]], [[65296, 65296], "mapped", [48]], [[65297, 65297], "mapped", [49]], [[65298, 65298], "mapped", [50]], [[65299, 65299], "mapped", [51]], [[65300, 65300], "mapped", [52]], [[65301, 65301], "mapped", [53]], [[65302, 65302], "mapped", [54]], [[65303, 65303], "mapped", [55]], [[65304, 65304], "mapped", [56]], [[65305, 65305], "mapped", [57]], [[65306, 65306], "disallowed_STD3_mapped", [58]], [[65307, 65307], "disallowed_STD3_mapped", [59]], [[65308, 65308], "disallowed_STD3_mapped", [60]], [[65309, 65309], "disallowed_STD3_mapped", [61]], [[65310, 65310], "disallowed_STD3_mapped", [62]], [[65311, 65311], "disallowed_STD3_mapped", [63]], [[65312, 65312], "disallowed_STD3_mapped", [64]], [[65313, 65313], "mapped", [97]], [[65314, 65314], "mapped", [98]], [[65315, 65315], "mapped", [99]], [[65316, 65316], "mapped", [100]], [[65317, 65317], "mapped", [101]], [[65318, 65318], "mapped", [102]], [[65319, 65319], "mapped", [103]], [[65320, 65320], "mapped", [104]], [[65321, 65321], "mapped", [105]], [[65322, 65322], "mapped", [106]], [[65323, 65323], "mapped", [107]], [[65324, 65324], "mapped", [108]], [[65325, 65325], "mapped", [109]], [[65326, 65326], "mapped", [110]], [[65327, 65327], "mapped", [111]], [[65328, 65328], "mapped", [112]], [[65329, 65329], "mapped", [113]], [[65330, 65330], "mapped", [114]], [[65331, 65331], "mapped", [115]], [[65332, 65332], "mapped", [116]], [[65333, 65333], "mapped", [117]], [[65334, 65334], "mapped", [118]], [[65335, 65335], "mapped", [119]], [[65336, 65336], "mapped", [120]], [[65337, 65337], "mapped", [121]], [[65338, 65338], "mapped", [122]], [[65339, 65339], "disallowed_STD3_mapped", [91]], [[65340, 65340], "disallowed_STD3_mapped", [92]], [[65341, 65341], "disallowed_STD3_mapped", [93]], [[65342, 65342], "disallowed_STD3_mapped", [94]], [[65343, 65343], "disallowed_STD3_mapped", [95]], [[65344, 65344], "disallowed_STD3_mapped", [96]], [[65345, 65345], "mapped", [97]], [[65346, 65346], "mapped", [98]], [[65347, 65347], "mapped", [99]], [[65348, 65348], "mapped", [100]], [[65349, 65349], "mapped", [101]], [[65350, 65350], "mapped", [102]], [[65351, 65351], "mapped", [103]], [[65352, 65352], "mapped", [104]], [[65353, 65353], "mapped", [105]], [[65354, 65354], "mapped", [106]], [[65355, 65355], "mapped", [107]], [[65356, 65356], "mapped", [108]], [[65357, 65357], "mapped", [109]], [[65358, 65358], "mapped", [110]], [[65359, 65359], "mapped", [111]], [[65360, 65360], "mapped", [112]], [[65361, 65361], "mapped", [113]], [[65362, 65362], "mapped", [114]], [[65363, 65363], "mapped", [115]], [[65364, 65364], "mapped", [116]], [[65365, 65365], "mapped", [117]], [[65366, 65366], "mapped", [118]], [[65367, 65367], "mapped", [119]], [[65368, 65368], "mapped", [120]], [[65369, 65369], "mapped", [121]], [[65370, 65370], "mapped", [122]], [[65371, 65371], "disallowed_STD3_mapped", [123]], [[65372, 65372], "disallowed_STD3_mapped", [124]], [[65373, 65373], "disallowed_STD3_mapped", [125]], [[65374, 65374], "disallowed_STD3_mapped", [126]], [[65375, 65375], "mapped", [10629]], [[65376, 65376], "mapped", [10630]], [[65377, 65377], "mapped", [46]], [[65378, 65378], "mapped", [12300]], [[65379, 65379], "mapped", [12301]], [[65380, 65380], "mapped", [12289]], [[65381, 65381], "mapped", [12539]], [[65382, 65382], "mapped", [12530]], [[65383, 65383], "mapped", [12449]], [[65384, 65384], "mapped", [12451]], [[65385, 65385], "mapped", [12453]], [[65386, 65386], "mapped", [12455]], [[65387, 65387], "mapped", [12457]], [[65388, 65388], "mapped", [12515]], [[65389, 65389], "mapped", [12517]], [[65390, 65390], "mapped", [12519]], [[65391, 65391], "mapped", [12483]], [[65392, 65392], "mapped", [12540]], [[65393, 65393], "mapped", [12450]], [[65394, 65394], "mapped", [12452]], [[65395, 65395], "mapped", [12454]], [[65396, 65396], "mapped", [12456]], [[65397, 65397], "mapped", [12458]], [[65398, 65398], "mapped", [12459]], [[65399, 65399], "mapped", [12461]], [[65400, 65400], "mapped", [12463]], [[65401, 65401], "mapped", [12465]], [[65402, 65402], "mapped", [12467]], [[65403, 65403], "mapped", [12469]], [[65404, 65404], "mapped", [12471]], [[65405, 65405], "mapped", [12473]], [[65406, 65406], "mapped", [12475]], [[65407, 65407], "mapped", [12477]], [[65408, 65408], "mapped", [12479]], [[65409, 65409], "mapped", [12481]], [[65410, 65410], "mapped", [12484]], [[65411, 65411], "mapped", [12486]], [[65412, 65412], "mapped", [12488]], [[65413, 65413], "mapped", [12490]], [[65414, 65414], "mapped", [12491]], [[65415, 65415], "mapped", [12492]], [[65416, 65416], "mapped", [12493]], [[65417, 65417], "mapped", [12494]], [[65418, 65418], "mapped", [12495]], [[65419, 65419], "mapped", [12498]], [[65420, 65420], "mapped", [12501]], [[65421, 65421], "mapped", [12504]], [[65422, 65422], "mapped", [12507]], [[65423, 65423], "mapped", [12510]], [[65424, 65424], "mapped", [12511]], [[65425, 65425], "mapped", [12512]], [[65426, 65426], "mapped", [12513]], [[65427, 65427], "mapped", [12514]], [[65428, 65428], "mapped", [12516]], [[65429, 65429], "mapped", [12518]], [[65430, 65430], "mapped", [12520]], [[65431, 65431], "mapped", [12521]], [[65432, 65432], "mapped", [12522]], [[65433, 65433], "mapped", [12523]], [[65434, 65434], "mapped", [12524]], [[65435, 65435], "mapped", [12525]], [[65436, 65436], "mapped", [12527]], [[65437, 65437], "mapped", [12531]], [[65438, 65438], "mapped", [12441]], [[65439, 65439], "mapped", [12442]], [[65440, 65440], "disallowed"], [[65441, 65441], "mapped", [4352]], [[65442, 65442], "mapped", [4353]], [[65443, 65443], "mapped", [4522]], [[65444, 65444], "mapped", [4354]], [[65445, 65445], "mapped", [4524]], [[65446, 65446], "mapped", [4525]], [[65447, 65447], "mapped", [4355]], [[65448, 65448], "mapped", [4356]], [[65449, 65449], "mapped", [4357]], [[65450, 65450], "mapped", [4528]], [[65451, 65451], "mapped", [4529]], [[65452, 65452], "mapped", [4530]], [[65453, 65453], "mapped", [4531]], [[65454, 65454], "mapped", [4532]], [[65455, 65455], "mapped", [4533]], [[65456, 65456], "mapped", [4378]], [[65457, 65457], "mapped", [4358]], [[65458, 65458], "mapped", [4359]], [[65459, 65459], "mapped", [4360]], [[65460, 65460], "mapped", [4385]], [[65461, 65461], "mapped", [4361]], [[65462, 65462], "mapped", [4362]], [[65463, 65463], "mapped", [4363]], [[65464, 65464], "mapped", [4364]], [[65465, 65465], "mapped", [4365]], [[65466, 65466], "mapped", [4366]], [[65467, 65467], "mapped", [4367]], [[65468, 65468], "mapped", [4368]], [[65469, 65469], "mapped", [4369]], [[65470, 65470], "mapped", [4370]], [[65471, 65473], "disallowed"], [[65474, 65474], "mapped", [4449]], [[65475, 65475], "mapped", [4450]], [[65476, 65476], "mapped", [4451]], [[65477, 65477], "mapped", [4452]], [[65478, 65478], "mapped", [4453]], [[65479, 65479], "mapped", [4454]], [[65480, 65481], "disallowed"], [[65482, 65482], "mapped", [4455]], [[65483, 65483], "mapped", [4456]], [[65484, 65484], "mapped", [4457]], [[65485, 65485], "mapped", [4458]], [[65486, 65486], "mapped", [4459]], [[65487, 65487], "mapped", [4460]], [[65488, 65489], "disallowed"], [[65490, 65490], "mapped", [4461]], [[65491, 65491], "mapped", [4462]], [[65492, 65492], "mapped", [4463]], [[65493, 65493], "mapped", [4464]], [[65494, 65494], "mapped", [4465]], [[65495, 65495], "mapped", [4466]], [[65496, 65497], "disallowed"], [[65498, 65498], "mapped", [4467]], [[65499, 65499], "mapped", [4468]], [[65500, 65500], "mapped", [4469]], [[65501, 65503], "disallowed"], [[65504, 65504], "mapped", [162]], [[65505, 65505], "mapped", [163]], [[65506, 65506], "mapped", [172]], [[65507, 65507], "disallowed_STD3_mapped", [32, 772]], [[65508, 65508], "mapped", [166]], [[65509, 65509], "mapped", [165]], [[65510, 65510], "mapped", [8361]], [[65511, 65511], "disallowed"], [[65512, 65512], "mapped", [9474]], [[65513, 65513], "mapped", [8592]], [[65514, 65514], "mapped", [8593]], [[65515, 65515], "mapped", [8594]], [[65516, 65516], "mapped", [8595]], [[65517, 65517], "mapped", [9632]], [[65518, 65518], "mapped", [9675]], [[65519, 65528], "disallowed"], [[65529, 65531], "disallowed"], [[65532, 65532], "disallowed"], [[65533, 65533], "disallowed"], [[65534, 65535], "disallowed"], [[65536, 65547], "valid"], [[65548, 65548], "disallowed"], [[65549, 65574], "valid"], [[65575, 65575], "disallowed"], [[65576, 65594], "valid"], [[65595, 65595], "disallowed"], [[65596, 65597], "valid"], [[65598, 65598], "disallowed"], [[65599, 65613], "valid"], [[65614, 65615], "disallowed"], [[65616, 65629], "valid"], [[65630, 65663], "disallowed"], [[65664, 65786], "valid"], [[65787, 65791], "disallowed"], [[65792, 65794], "valid", [], "NV8"], [[65795, 65798], "disallowed"], [[65799, 65843], "valid", [], "NV8"], [[65844, 65846], "disallowed"], [[65847, 65855], "valid", [], "NV8"], [[65856, 65930], "valid", [], "NV8"], [[65931, 65932], "valid", [], "NV8"], [[65933, 65935], "disallowed"], [[65936, 65947], "valid", [], "NV8"], [[65948, 65951], "disallowed"], [[65952, 65952], "valid", [], "NV8"], [[65953, 65999], "disallowed"], [[66e3, 66044], "valid", [], "NV8"], [[66045, 66045], "valid"], [[66046, 66175], "disallowed"], [[66176, 66204], "valid"], [[66205, 66207], "disallowed"], [[66208, 66256], "valid"], [[66257, 66271], "disallowed"], [[66272, 66272], "valid"], [[66273, 66299], "valid", [], "NV8"], [[66300, 66303], "disallowed"], [[66304, 66334], "valid"], [[66335, 66335], "valid"], [[66336, 66339], "valid", [], "NV8"], [[66340, 66351], "disallowed"], [[66352, 66368], "valid"], [[66369, 66369], "valid", [], "NV8"], [[66370, 66377], "valid"], [[66378, 66378], "valid", [], "NV8"], [[66379, 66383], "disallowed"], [[66384, 66426], "valid"], [[66427, 66431], "disallowed"], [[66432, 66461], "valid"], [[66462, 66462], "disallowed"], [[66463, 66463], "valid", [], "NV8"], [[66464, 66499], "valid"], [[66500, 66503], "disallowed"], [[66504, 66511], "valid"], [[66512, 66517], "valid", [], "NV8"], [[66518, 66559], "disallowed"], [[66560, 66560], "mapped", [66600]], [[66561, 66561], "mapped", [66601]], [[66562, 66562], "mapped", [66602]], [[66563, 66563], "mapped", [66603]], [[66564, 66564], "mapped", [66604]], [[66565, 66565], "mapped", [66605]], [[66566, 66566], "mapped", [66606]], [[66567, 66567], "mapped", [66607]], [[66568, 66568], "mapped", [66608]], [[66569, 66569], "mapped", [66609]], [[66570, 66570], "mapped", [66610]], [[66571, 66571], "mapped", [66611]], [[66572, 66572], "mapped", [66612]], [[66573, 66573], "mapped", [66613]], [[66574, 66574], "mapped", [66614]], [[66575, 66575], "mapped", [66615]], [[66576, 66576], "mapped", [66616]], [[66577, 66577], "mapped", [66617]], [[66578, 66578], "mapped", [66618]], [[66579, 66579], "mapped", [66619]], [[66580, 66580], "mapped", [66620]], [[66581, 66581], "mapped", [66621]], [[66582, 66582], "mapped", [66622]], [[66583, 66583], "mapped", [66623]], [[66584, 66584], "mapped", [66624]], [[66585, 66585], "mapped", [66625]], [[66586, 66586], "mapped", [66626]], [[66587, 66587], "mapped", [66627]], [[66588, 66588], "mapped", [66628]], [[66589, 66589], "mapped", [66629]], [[66590, 66590], "mapped", [66630]], [[66591, 66591], "mapped", [66631]], [[66592, 66592], "mapped", [66632]], [[66593, 66593], "mapped", [66633]], [[66594, 66594], "mapped", [66634]], [[66595, 66595], "mapped", [66635]], [[66596, 66596], "mapped", [66636]], [[66597, 66597], "mapped", [66637]], [[66598, 66598], "mapped", [66638]], [[66599, 66599], "mapped", [66639]], [[66600, 66637], "valid"], [[66638, 66717], "valid"], [[66718, 66719], "disallowed"], [[66720, 66729], "valid"], [[66730, 66815], "disallowed"], [[66816, 66855], "valid"], [[66856, 66863], "disallowed"], [[66864, 66915], "valid"], [[66916, 66926], "disallowed"], [[66927, 66927], "valid", [], "NV8"], [[66928, 67071], "disallowed"], [[67072, 67382], "valid"], [[67383, 67391], "disallowed"], [[67392, 67413], "valid"], [[67414, 67423], "disallowed"], [[67424, 67431], "valid"], [[67432, 67583], "disallowed"], [[67584, 67589], "valid"], [[67590, 67591], "disallowed"], [[67592, 67592], "valid"], [[67593, 67593], "disallowed"], [[67594, 67637], "valid"], [[67638, 67638], "disallowed"], [[67639, 67640], "valid"], [[67641, 67643], "disallowed"], [[67644, 67644], "valid"], [[67645, 67646], "disallowed"], [[67647, 67647], "valid"], [[67648, 67669], "valid"], [[67670, 67670], "disallowed"], [[67671, 67679], "valid", [], "NV8"], [[67680, 67702], "valid"], [[67703, 67711], "valid", [], "NV8"], [[67712, 67742], "valid"], [[67743, 67750], "disallowed"], [[67751, 67759], "valid", [], "NV8"], [[67760, 67807], "disallowed"], [[67808, 67826], "valid"], [[67827, 67827], "disallowed"], [[67828, 67829], "valid"], [[67830, 67834], "disallowed"], [[67835, 67839], "valid", [], "NV8"], [[67840, 67861], "valid"], [[67862, 67865], "valid", [], "NV8"], [[67866, 67867], "valid", [], "NV8"], [[67868, 67870], "disallowed"], [[67871, 67871], "valid", [], "NV8"], [[67872, 67897], "valid"], [[67898, 67902], "disallowed"], [[67903, 67903], "valid", [], "NV8"], [[67904, 67967], "disallowed"], [[67968, 68023], "valid"], [[68024, 68027], "disallowed"], [[68028, 68029], "valid", [], "NV8"], [[68030, 68031], "valid"], [[68032, 68047], "valid", [], "NV8"], [[68048, 68049], "disallowed"], [[68050, 68095], "valid", [], "NV8"], [[68096, 68099], "valid"], [[68100, 68100], "disallowed"], [[68101, 68102], "valid"], [[68103, 68107], "disallowed"], [[68108, 68115], "valid"], [[68116, 68116], "disallowed"], [[68117, 68119], "valid"], [[68120, 68120], "disallowed"], [[68121, 68147], "valid"], [[68148, 68151], "disallowed"], [[68152, 68154], "valid"], [[68155, 68158], "disallowed"], [[68159, 68159], "valid"], [[68160, 68167], "valid", [], "NV8"], [[68168, 68175], "disallowed"], [[68176, 68184], "valid", [], "NV8"], [[68185, 68191], "disallowed"], [[68192, 68220], "valid"], [[68221, 68223], "valid", [], "NV8"], [[68224, 68252], "valid"], [[68253, 68255], "valid", [], "NV8"], [[68256, 68287], "disallowed"], [[68288, 68295], "valid"], [[68296, 68296], "valid", [], "NV8"], [[68297, 68326], "valid"], [[68327, 68330], "disallowed"], [[68331, 68342], "valid", [], "NV8"], [[68343, 68351], "disallowed"], [[68352, 68405], "valid"], [[68406, 68408], "disallowed"], [[68409, 68415], "valid", [], "NV8"], [[68416, 68437], "valid"], [[68438, 68439], "disallowed"], [[68440, 68447], "valid", [], "NV8"], [[68448, 68466], "valid"], [[68467, 68471], "disallowed"], [[68472, 68479], "valid", [], "NV8"], [[68480, 68497], "valid"], [[68498, 68504], "disallowed"], [[68505, 68508], "valid", [], "NV8"], [[68509, 68520], "disallowed"], [[68521, 68527], "valid", [], "NV8"], [[68528, 68607], "disallowed"], [[68608, 68680], "valid"], [[68681, 68735], "disallowed"], [[68736, 68736], "mapped", [68800]], [[68737, 68737], "mapped", [68801]], [[68738, 68738], "mapped", [68802]], [[68739, 68739], "mapped", [68803]], [[68740, 68740], "mapped", [68804]], [[68741, 68741], "mapped", [68805]], [[68742, 68742], "mapped", [68806]], [[68743, 68743], "mapped", [68807]], [[68744, 68744], "mapped", [68808]], [[68745, 68745], "mapped", [68809]], [[68746, 68746], "mapped", [68810]], [[68747, 68747], "mapped", [68811]], [[68748, 68748], "mapped", [68812]], [[68749, 68749], "mapped", [68813]], [[68750, 68750], "mapped", [68814]], [[68751, 68751], "mapped", [68815]], [[68752, 68752], "mapped", [68816]], [[68753, 68753], "mapped", [68817]], [[68754, 68754], "mapped", [68818]], [[68755, 68755], "mapped", [68819]], [[68756, 68756], "mapped", [68820]], [[68757, 68757], "mapped", [68821]], [[68758, 68758], "mapped", [68822]], [[68759, 68759], "mapped", [68823]], [[68760, 68760], "mapped", [68824]], [[68761, 68761], "mapped", [68825]], [[68762, 68762], "mapped", [68826]], [[68763, 68763], "mapped", [68827]], [[68764, 68764], "mapped", [68828]], [[68765, 68765], "mapped", [68829]], [[68766, 68766], "mapped", [68830]], [[68767, 68767], "mapped", [68831]], [[68768, 68768], "mapped", [68832]], [[68769, 68769], "mapped", [68833]], [[68770, 68770], "mapped", [68834]], [[68771, 68771], "mapped", [68835]], [[68772, 68772], "mapped", [68836]], [[68773, 68773], "mapped", [68837]], [[68774, 68774], "mapped", [68838]], [[68775, 68775], "mapped", [68839]], [[68776, 68776], "mapped", [68840]], [[68777, 68777], "mapped", [68841]], [[68778, 68778], "mapped", [68842]], [[68779, 68779], "mapped", [68843]], [[68780, 68780], "mapped", [68844]], [[68781, 68781], "mapped", [68845]], [[68782, 68782], "mapped", [68846]], [[68783, 68783], "mapped", [68847]], [[68784, 68784], "mapped", [68848]], [[68785, 68785], "mapped", [68849]], [[68786, 68786], "mapped", [68850]], [[68787, 68799], "disallowed"], [[68800, 68850], "valid"], [[68851, 68857], "disallowed"], [[68858, 68863], "valid", [], "NV8"], [[68864, 69215], "disallowed"], [[69216, 69246], "valid", [], "NV8"], [[69247, 69631], "disallowed"], [[69632, 69702], "valid"], [[69703, 69709], "valid", [], "NV8"], [[69710, 69713], "disallowed"], [[69714, 69733], "valid", [], "NV8"], [[69734, 69743], "valid"], [[69744, 69758], "disallowed"], [[69759, 69759], "valid"], [[69760, 69818], "valid"], [[69819, 69820], "valid", [], "NV8"], [[69821, 69821], "disallowed"], [[69822, 69825], "valid", [], "NV8"], [[69826, 69839], "disallowed"], [[69840, 69864], "valid"], [[69865, 69871], "disallowed"], [[69872, 69881], "valid"], [[69882, 69887], "disallowed"], [[69888, 69940], "valid"], [[69941, 69941], "disallowed"], [[69942, 69951], "valid"], [[69952, 69955], "valid", [], "NV8"], [[69956, 69967], "disallowed"], [[69968, 70003], "valid"], [[70004, 70005], "valid", [], "NV8"], [[70006, 70006], "valid"], [[70007, 70015], "disallowed"], [[70016, 70084], "valid"], [[70085, 70088], "valid", [], "NV8"], [[70089, 70089], "valid", [], "NV8"], [[70090, 70092], "valid"], [[70093, 70093], "valid", [], "NV8"], [[70094, 70095], "disallowed"], [[70096, 70105], "valid"], [[70106, 70106], "valid"], [[70107, 70107], "valid", [], "NV8"], [[70108, 70108], "valid"], [[70109, 70111], "valid", [], "NV8"], [[70112, 70112], "disallowed"], [[70113, 70132], "valid", [], "NV8"], [[70133, 70143], "disallowed"], [[70144, 70161], "valid"], [[70162, 70162], "disallowed"], [[70163, 70199], "valid"], [[70200, 70205], "valid", [], "NV8"], [[70206, 70271], "disallowed"], [[70272, 70278], "valid"], [[70279, 70279], "disallowed"], [[70280, 70280], "valid"], [[70281, 70281], "disallowed"], [[70282, 70285], "valid"], [[70286, 70286], "disallowed"], [[70287, 70301], "valid"], [[70302, 70302], "disallowed"], [[70303, 70312], "valid"], [[70313, 70313], "valid", [], "NV8"], [[70314, 70319], "disallowed"], [[70320, 70378], "valid"], [[70379, 70383], "disallowed"], [[70384, 70393], "valid"], [[70394, 70399], "disallowed"], [[70400, 70400], "valid"], [[70401, 70403], "valid"], [[70404, 70404], "disallowed"], [[70405, 70412], "valid"], [[70413, 70414], "disallowed"], [[70415, 70416], "valid"], [[70417, 70418], "disallowed"], [[70419, 70440], "valid"], [[70441, 70441], "disallowed"], [[70442, 70448], "valid"], [[70449, 70449], "disallowed"], [[70450, 70451], "valid"], [[70452, 70452], "disallowed"], [[70453, 70457], "valid"], [[70458, 70459], "disallowed"], [[70460, 70468], "valid"], [[70469, 70470], "disallowed"], [[70471, 70472], "valid"], [[70473, 70474], "disallowed"], [[70475, 70477], "valid"], [[70478, 70479], "disallowed"], [[70480, 70480], "valid"], [[70481, 70486], "disallowed"], [[70487, 70487], "valid"], [[70488, 70492], "disallowed"], [[70493, 70499], "valid"], [[70500, 70501], "disallowed"], [[70502, 70508], "valid"], [[70509, 70511], "disallowed"], [[70512, 70516], "valid"], [[70517, 70783], "disallowed"], [[70784, 70853], "valid"], [[70854, 70854], "valid", [], "NV8"], [[70855, 70855], "valid"], [[70856, 70863], "disallowed"], [[70864, 70873], "valid"], [[70874, 71039], "disallowed"], [[71040, 71093], "valid"], [[71094, 71095], "disallowed"], [[71096, 71104], "valid"], [[71105, 71113], "valid", [], "NV8"], [[71114, 71127], "valid", [], "NV8"], [[71128, 71133], "valid"], [[71134, 71167], "disallowed"], [[71168, 71232], "valid"], [[71233, 71235], "valid", [], "NV8"], [[71236, 71236], "valid"], [[71237, 71247], "disallowed"], [[71248, 71257], "valid"], [[71258, 71295], "disallowed"], [[71296, 71351], "valid"], [[71352, 71359], "disallowed"], [[71360, 71369], "valid"], [[71370, 71423], "disallowed"], [[71424, 71449], "valid"], [[71450, 71452], "disallowed"], [[71453, 71467], "valid"], [[71468, 71471], "disallowed"], [[71472, 71481], "valid"], [[71482, 71487], "valid", [], "NV8"], [[71488, 71839], "disallowed"], [[71840, 71840], "mapped", [71872]], [[71841, 71841], "mapped", [71873]], [[71842, 71842], "mapped", [71874]], [[71843, 71843], "mapped", [71875]], [[71844, 71844], "mapped", [71876]], [[71845, 71845], "mapped", [71877]], [[71846, 71846], "mapped", [71878]], [[71847, 71847], "mapped", [71879]], [[71848, 71848], "mapped", [71880]], [[71849, 71849], "mapped", [71881]], [[71850, 71850], "mapped", [71882]], [[71851, 71851], "mapped", [71883]], [[71852, 71852], "mapped", [71884]], [[71853, 71853], "mapped", [71885]], [[71854, 71854], "mapped", [71886]], [[71855, 71855], "mapped", [71887]], [[71856, 71856], "mapped", [71888]], [[71857, 71857], "mapped", [71889]], [[71858, 71858], "mapped", [71890]], [[71859, 71859], "mapped", [71891]], [[71860, 71860], "mapped", [71892]], [[71861, 71861], "mapped", [71893]], [[71862, 71862], "mapped", [71894]], [[71863, 71863], "mapped", [71895]], [[71864, 71864], "mapped", [71896]], [[71865, 71865], "mapped", [71897]], [[71866, 71866], "mapped", [71898]], [[71867, 71867], "mapped", [71899]], [[71868, 71868], "mapped", [71900]], [[71869, 71869], "mapped", [71901]], [[71870, 71870], "mapped", [71902]], [[71871, 71871], "mapped", [71903]], [[71872, 71913], "valid"], [[71914, 71922], "valid", [], "NV8"], [[71923, 71934], "disallowed"], [[71935, 71935], "valid"], [[71936, 72383], "disallowed"], [[72384, 72440], "valid"], [[72441, 73727], "disallowed"], [[73728, 74606], "valid"], [[74607, 74648], "valid"], [[74649, 74649], "valid"], [[74650, 74751], "disallowed"], [[74752, 74850], "valid", [], "NV8"], [[74851, 74862], "valid", [], "NV8"], [[74863, 74863], "disallowed"], [[74864, 74867], "valid", [], "NV8"], [[74868, 74868], "valid", [], "NV8"], [[74869, 74879], "disallowed"], [[74880, 75075], "valid"], [[75076, 77823], "disallowed"], [[77824, 78894], "valid"], [[78895, 82943], "disallowed"], [[82944, 83526], "valid"], [[83527, 92159], "disallowed"], [[92160, 92728], "valid"], [[92729, 92735], "disallowed"], [[92736, 92766], "valid"], [[92767, 92767], "disallowed"], [[92768, 92777], "valid"], [[92778, 92781], "disallowed"], [[92782, 92783], "valid", [], "NV8"], [[92784, 92879], "disallowed"], [[92880, 92909], "valid"], [[92910, 92911], "disallowed"], [[92912, 92916], "valid"], [[92917, 92917], "valid", [], "NV8"], [[92918, 92927], "disallowed"], [[92928, 92982], "valid"], [[92983, 92991], "valid", [], "NV8"], [[92992, 92995], "valid"], [[92996, 92997], "valid", [], "NV8"], [[92998, 93007], "disallowed"], [[93008, 93017], "valid"], [[93018, 93018], "disallowed"], [[93019, 93025], "valid", [], "NV8"], [[93026, 93026], "disallowed"], [[93027, 93047], "valid"], [[93048, 93052], "disallowed"], [[93053, 93071], "valid"], [[93072, 93951], "disallowed"], [[93952, 94020], "valid"], [[94021, 94031], "disallowed"], [[94032, 94078], "valid"], [[94079, 94094], "disallowed"], [[94095, 94111], "valid"], [[94112, 110591], "disallowed"], [[110592, 110593], "valid"], [[110594, 113663], "disallowed"], [[113664, 113770], "valid"], [[113771, 113775], "disallowed"], [[113776, 113788], "valid"], [[113789, 113791], "disallowed"], [[113792, 113800], "valid"], [[113801, 113807], "disallowed"], [[113808, 113817], "valid"], [[113818, 113819], "disallowed"], [[113820, 113820], "valid", [], "NV8"], [[113821, 113822], "valid"], [[113823, 113823], "valid", [], "NV8"], [[113824, 113827], "ignored"], [[113828, 118783], "disallowed"], [[118784, 119029], "valid", [], "NV8"], [[119030, 119039], "disallowed"], [[119040, 119078], "valid", [], "NV8"], [[119079, 119080], "disallowed"], [[119081, 119081], "valid", [], "NV8"], [[119082, 119133], "valid", [], "NV8"], [[119134, 119134], "mapped", [119127, 119141]], [[119135, 119135], "mapped", [119128, 119141]], [[119136, 119136], "mapped", [119128, 119141, 119150]], [[119137, 119137], "mapped", [119128, 119141, 119151]], [[119138, 119138], "mapped", [119128, 119141, 119152]], [[119139, 119139], "mapped", [119128, 119141, 119153]], [[119140, 119140], "mapped", [119128, 119141, 119154]], [[119141, 119154], "valid", [], "NV8"], [[119155, 119162], "disallowed"], [[119163, 119226], "valid", [], "NV8"], [[119227, 119227], "mapped", [119225, 119141]], [[119228, 119228], "mapped", [119226, 119141]], [[119229, 119229], "mapped", [119225, 119141, 119150]], [[119230, 119230], "mapped", [119226, 119141, 119150]], [[119231, 119231], "mapped", [119225, 119141, 119151]], [[119232, 119232], "mapped", [119226, 119141, 119151]], [[119233, 119261], "valid", [], "NV8"], [[119262, 119272], "valid", [], "NV8"], [[119273, 119295], "disallowed"], [[119296, 119365], "valid", [], "NV8"], [[119366, 119551], "disallowed"], [[119552, 119638], "valid", [], "NV8"], [[119639, 119647], "disallowed"], [[119648, 119665], "valid", [], "NV8"], [[119666, 119807], "disallowed"], [[119808, 119808], "mapped", [97]], [[119809, 119809], "mapped", [98]], [[119810, 119810], "mapped", [99]], [[119811, 119811], "mapped", [100]], [[119812, 119812], "mapped", [101]], [[119813, 119813], "mapped", [102]], [[119814, 119814], "mapped", [103]], [[119815, 119815], "mapped", [104]], [[119816, 119816], "mapped", [105]], [[119817, 119817], "mapped", [106]], [[119818, 119818], "mapped", [107]], [[119819, 119819], "mapped", [108]], [[119820, 119820], "mapped", [109]], [[119821, 119821], "mapped", [110]], [[119822, 119822], "mapped", [111]], [[119823, 119823], "mapped", [112]], [[119824, 119824], "mapped", [113]], [[119825, 119825], "mapped", [114]], [[119826, 119826], "mapped", [115]], [[119827, 119827], "mapped", [116]], [[119828, 119828], "mapped", [117]], [[119829, 119829], "mapped", [118]], [[119830, 119830], "mapped", [119]], [[119831, 119831], "mapped", [120]], [[119832, 119832], "mapped", [121]], [[119833, 119833], "mapped", [122]], [[119834, 119834], "mapped", [97]], [[119835, 119835], "mapped", [98]], [[119836, 119836], "mapped", [99]], [[119837, 119837], "mapped", [100]], [[119838, 119838], "mapped", [101]], [[119839, 119839], "mapped", [102]], [[119840, 119840], "mapped", [103]], [[119841, 119841], "mapped", [104]], [[119842, 119842], "mapped", [105]], [[119843, 119843], "mapped", [106]], [[119844, 119844], "mapped", [107]], [[119845, 119845], "mapped", [108]], [[119846, 119846], "mapped", [109]], [[119847, 119847], "mapped", [110]], [[119848, 119848], "mapped", [111]], [[119849, 119849], "mapped", [112]], [[119850, 119850], "mapped", [113]], [[119851, 119851], "mapped", [114]], [[119852, 119852], "mapped", [115]], [[119853, 119853], "mapped", [116]], [[119854, 119854], "mapped", [117]], [[119855, 119855], "mapped", [118]], [[119856, 119856], "mapped", [119]], [[119857, 119857], "mapped", [120]], [[119858, 119858], "mapped", [121]], [[119859, 119859], "mapped", [122]], [[119860, 119860], "mapped", [97]], [[119861, 119861], "mapped", [98]], [[119862, 119862], "mapped", [99]], [[119863, 119863], "mapped", [100]], [[119864, 119864], "mapped", [101]], [[119865, 119865], "mapped", [102]], [[119866, 119866], "mapped", [103]], [[119867, 119867], "mapped", [104]], [[119868, 119868], "mapped", [105]], [[119869, 119869], "mapped", [106]], [[119870, 119870], "mapped", [107]], [[119871, 119871], "mapped", [108]], [[119872, 119872], "mapped", [109]], [[119873, 119873], "mapped", [110]], [[119874, 119874], "mapped", [111]], [[119875, 119875], "mapped", [112]], [[119876, 119876], "mapped", [113]], [[119877, 119877], "mapped", [114]], [[119878, 119878], "mapped", [115]], [[119879, 119879], "mapped", [116]], [[119880, 119880], "mapped", [117]], [[119881, 119881], "mapped", [118]], [[119882, 119882], "mapped", [119]], [[119883, 119883], "mapped", [120]], [[119884, 119884], "mapped", [121]], [[119885, 119885], "mapped", [122]], [[119886, 119886], "mapped", [97]], [[119887, 119887], "mapped", [98]], [[119888, 119888], "mapped", [99]], [[119889, 119889], "mapped", [100]], [[119890, 119890], "mapped", [101]], [[119891, 119891], "mapped", [102]], [[119892, 119892], "mapped", [103]], [[119893, 119893], "disallowed"], [[119894, 119894], "mapped", [105]], [[119895, 119895], "mapped", [106]], [[119896, 119896], "mapped", [107]], [[119897, 119897], "mapped", [108]], [[119898, 119898], "mapped", [109]], [[119899, 119899], "mapped", [110]], [[119900, 119900], "mapped", [111]], [[119901, 119901], "mapped", [112]], [[119902, 119902], "mapped", [113]], [[119903, 119903], "mapped", [114]], [[119904, 119904], "mapped", [115]], [[119905, 119905], "mapped", [116]], [[119906, 119906], "mapped", [117]], [[119907, 119907], "mapped", [118]], [[119908, 119908], "mapped", [119]], [[119909, 119909], "mapped", [120]], [[119910, 119910], "mapped", [121]], [[119911, 119911], "mapped", [122]], [[119912, 119912], "mapped", [97]], [[119913, 119913], "mapped", [98]], [[119914, 119914], "mapped", [99]], [[119915, 119915], "mapped", [100]], [[119916, 119916], "mapped", [101]], [[119917, 119917], "mapped", [102]], [[119918, 119918], "mapped", [103]], [[119919, 119919], "mapped", [104]], [[119920, 119920], "mapped", [105]], [[119921, 119921], "mapped", [106]], [[119922, 119922], "mapped", [107]], [[119923, 119923], "mapped", [108]], [[119924, 119924], "mapped", [109]], [[119925, 119925], "mapped", [110]], [[119926, 119926], "mapped", [111]], [[119927, 119927], "mapped", [112]], [[119928, 119928], "mapped", [113]], [[119929, 119929], "mapped", [114]], [[119930, 119930], "mapped", [115]], [[119931, 119931], "mapped", [116]], [[119932, 119932], "mapped", [117]], [[119933, 119933], "mapped", [118]], [[119934, 119934], "mapped", [119]], [[119935, 119935], "mapped", [120]], [[119936, 119936], "mapped", [121]], [[119937, 119937], "mapped", [122]], [[119938, 119938], "mapped", [97]], [[119939, 119939], "mapped", [98]], [[119940, 119940], "mapped", [99]], [[119941, 119941], "mapped", [100]], [[119942, 119942], "mapped", [101]], [[119943, 119943], "mapped", [102]], [[119944, 119944], "mapped", [103]], [[119945, 119945], "mapped", [104]], [[119946, 119946], "mapped", [105]], [[119947, 119947], "mapped", [106]], [[119948, 119948], "mapped", [107]], [[119949, 119949], "mapped", [108]], [[119950, 119950], "mapped", [109]], [[119951, 119951], "mapped", [110]], [[119952, 119952], "mapped", [111]], [[119953, 119953], "mapped", [112]], [[119954, 119954], "mapped", [113]], [[119955, 119955], "mapped", [114]], [[119956, 119956], "mapped", [115]], [[119957, 119957], "mapped", [116]], [[119958, 119958], "mapped", [117]], [[119959, 119959], "mapped", [118]], [[119960, 119960], "mapped", [119]], [[119961, 119961], "mapped", [120]], [[119962, 119962], "mapped", [121]], [[119963, 119963], "mapped", [122]], [[119964, 119964], "mapped", [97]], [[119965, 119965], "disallowed"], [[119966, 119966], "mapped", [99]], [[119967, 119967], "mapped", [100]], [[119968, 119969], "disallowed"], [[119970, 119970], "mapped", [103]], [[119971, 119972], "disallowed"], [[119973, 119973], "mapped", [106]], [[119974, 119974], "mapped", [107]], [[119975, 119976], "disallowed"], [[119977, 119977], "mapped", [110]], [[119978, 119978], "mapped", [111]], [[119979, 119979], "mapped", [112]], [[119980, 119980], "mapped", [113]], [[119981, 119981], "disallowed"], [[119982, 119982], "mapped", [115]], [[119983, 119983], "mapped", [116]], [[119984, 119984], "mapped", [117]], [[119985, 119985], "mapped", [118]], [[119986, 119986], "mapped", [119]], [[119987, 119987], "mapped", [120]], [[119988, 119988], "mapped", [121]], [[119989, 119989], "mapped", [122]], [[119990, 119990], "mapped", [97]], [[119991, 119991], "mapped", [98]], [[119992, 119992], "mapped", [99]], [[119993, 119993], "mapped", [100]], [[119994, 119994], "disallowed"], [[119995, 119995], "mapped", [102]], [[119996, 119996], "disallowed"], [[119997, 119997], "mapped", [104]], [[119998, 119998], "mapped", [105]], [[119999, 119999], "mapped", [106]], [[12e4, 12e4], "mapped", [107]], [[120001, 120001], "mapped", [108]], [[120002, 120002], "mapped", [109]], [[120003, 120003], "mapped", [110]], [[120004, 120004], "disallowed"], [[120005, 120005], "mapped", [112]], [[120006, 120006], "mapped", [113]], [[120007, 120007], "mapped", [114]], [[120008, 120008], "mapped", [115]], [[120009, 120009], "mapped", [116]], [[120010, 120010], "mapped", [117]], [[120011, 120011], "mapped", [118]], [[120012, 120012], "mapped", [119]], [[120013, 120013], "mapped", [120]], [[120014, 120014], "mapped", [121]], [[120015, 120015], "mapped", [122]], [[120016, 120016], "mapped", [97]], [[120017, 120017], "mapped", [98]], [[120018, 120018], "mapped", [99]], [[120019, 120019], "mapped", [100]], [[120020, 120020], "mapped", [101]], [[120021, 120021], "mapped", [102]], [[120022, 120022], "mapped", [103]], [[120023, 120023], "mapped", [104]], [[120024, 120024], "mapped", [105]], [[120025, 120025], "mapped", [106]], [[120026, 120026], "mapped", [107]], [[120027, 120027], "mapped", [108]], [[120028, 120028], "mapped", [109]], [[120029, 120029], "mapped", [110]], [[120030, 120030], "mapped", [111]], [[120031, 120031], "mapped", [112]], [[120032, 120032], "mapped", [113]], [[120033, 120033], "mapped", [114]], [[120034, 120034], "mapped", [115]], [[120035, 120035], "mapped", [116]], [[120036, 120036], "mapped", [117]], [[120037, 120037], "mapped", [118]], [[120038, 120038], "mapped", [119]], [[120039, 120039], "mapped", [120]], [[120040, 120040], "mapped", [121]], [[120041, 120041], "mapped", [122]], [[120042, 120042], "mapped", [97]], [[120043, 120043], "mapped", [98]], [[120044, 120044], "mapped", [99]], [[120045, 120045], "mapped", [100]], [[120046, 120046], "mapped", [101]], [[120047, 120047], "mapped", [102]], [[120048, 120048], "mapped", [103]], [[120049, 120049], "mapped", [104]], [[120050, 120050], "mapped", [105]], [[120051, 120051], "mapped", [106]], [[120052, 120052], "mapped", [107]], [[120053, 120053], "mapped", [108]], [[120054, 120054], "mapped", [109]], [[120055, 120055], "mapped", [110]], [[120056, 120056], "mapped", [111]], [[120057, 120057], "mapped", [112]], [[120058, 120058], "mapped", [113]], [[120059, 120059], "mapped", [114]], [[120060, 120060], "mapped", [115]], [[120061, 120061], "mapped", [116]], [[120062, 120062], "mapped", [117]], [[120063, 120063], "mapped", [118]], [[120064, 120064], "mapped", [119]], [[120065, 120065], "mapped", [120]], [[120066, 120066], "mapped", [121]], [[120067, 120067], "mapped", [122]], [[120068, 120068], "mapped", [97]], [[120069, 120069], "mapped", [98]], [[120070, 120070], "disallowed"], [[120071, 120071], "mapped", [100]], [[120072, 120072], "mapped", [101]], [[120073, 120073], "mapped", [102]], [[120074, 120074], "mapped", [103]], [[120075, 120076], "disallowed"], [[120077, 120077], "mapped", [106]], [[120078, 120078], "mapped", [107]], [[120079, 120079], "mapped", [108]], [[120080, 120080], "mapped", [109]], [[120081, 120081], "mapped", [110]], [[120082, 120082], "mapped", [111]], [[120083, 120083], "mapped", [112]], [[120084, 120084], "mapped", [113]], [[120085, 120085], "disallowed"], [[120086, 120086], "mapped", [115]], [[120087, 120087], "mapped", [116]], [[120088, 120088], "mapped", [117]], [[120089, 120089], "mapped", [118]], [[120090, 120090], "mapped", [119]], [[120091, 120091], "mapped", [120]], [[120092, 120092], "mapped", [121]], [[120093, 120093], "disallowed"], [[120094, 120094], "mapped", [97]], [[120095, 120095], "mapped", [98]], [[120096, 120096], "mapped", [99]], [[120097, 120097], "mapped", [100]], [[120098, 120098], "mapped", [101]], [[120099, 120099], "mapped", [102]], [[120100, 120100], "mapped", [103]], [[120101, 120101], "mapped", [104]], [[120102, 120102], "mapped", [105]], [[120103, 120103], "mapped", [106]], [[120104, 120104], "mapped", [107]], [[120105, 120105], "mapped", [108]], [[120106, 120106], "mapped", [109]], [[120107, 120107], "mapped", [110]], [[120108, 120108], "mapped", [111]], [[120109, 120109], "mapped", [112]], [[120110, 120110], "mapped", [113]], [[120111, 120111], "mapped", [114]], [[120112, 120112], "mapped", [115]], [[120113, 120113], "mapped", [116]], [[120114, 120114], "mapped", [117]], [[120115, 120115], "mapped", [118]], [[120116, 120116], "mapped", [119]], [[120117, 120117], "mapped", [120]], [[120118, 120118], "mapped", [121]], [[120119, 120119], "mapped", [122]], [[120120, 120120], "mapped", [97]], [[120121, 120121], "mapped", [98]], [[120122, 120122], "disallowed"], [[120123, 120123], "mapped", [100]], [[120124, 120124], "mapped", [101]], [[120125, 120125], "mapped", [102]], [[120126, 120126], "mapped", [103]], [[120127, 120127], "disallowed"], [[120128, 120128], "mapped", [105]], [[120129, 120129], "mapped", [106]], [[120130, 120130], "mapped", [107]], [[120131, 120131], "mapped", [108]], [[120132, 120132], "mapped", [109]], [[120133, 120133], "disallowed"], [[120134, 120134], "mapped", [111]], [[120135, 120137], "disallowed"], [[120138, 120138], "mapped", [115]], [[120139, 120139], "mapped", [116]], [[120140, 120140], "mapped", [117]], [[120141, 120141], "mapped", [118]], [[120142, 120142], "mapped", [119]], [[120143, 120143], "mapped", [120]], [[120144, 120144], "mapped", [121]], [[120145, 120145], "disallowed"], [[120146, 120146], "mapped", [97]], [[120147, 120147], "mapped", [98]], [[120148, 120148], "mapped", [99]], [[120149, 120149], "mapped", [100]], [[120150, 120150], "mapped", [101]], [[120151, 120151], "mapped", [102]], [[120152, 120152], "mapped", [103]], [[120153, 120153], "mapped", [104]], [[120154, 120154], "mapped", [105]], [[120155, 120155], "mapped", [106]], [[120156, 120156], "mapped", [107]], [[120157, 120157], "mapped", [108]], [[120158, 120158], "mapped", [109]], [[120159, 120159], "mapped", [110]], [[120160, 120160], "mapped", [111]], [[120161, 120161], "mapped", [112]], [[120162, 120162], "mapped", [113]], [[120163, 120163], "mapped", [114]], [[120164, 120164], "mapped", [115]], [[120165, 120165], "mapped", [116]], [[120166, 120166], "mapped", [117]], [[120167, 120167], "mapped", [118]], [[120168, 120168], "mapped", [119]], [[120169, 120169], "mapped", [120]], [[120170, 120170], "mapped", [121]], [[120171, 120171], "mapped", [122]], [[120172, 120172], "mapped", [97]], [[120173, 120173], "mapped", [98]], [[120174, 120174], "mapped", [99]], [[120175, 120175], "mapped", [100]], [[120176, 120176], "mapped", [101]], [[120177, 120177], "mapped", [102]], [[120178, 120178], "mapped", [103]], [[120179, 120179], "mapped", [104]], [[120180, 120180], "mapped", [105]], [[120181, 120181], "mapped", [106]], [[120182, 120182], "mapped", [107]], [[120183, 120183], "mapped", [108]], [[120184, 120184], "mapped", [109]], [[120185, 120185], "mapped", [110]], [[120186, 120186], "mapped", [111]], [[120187, 120187], "mapped", [112]], [[120188, 120188], "mapped", [113]], [[120189, 120189], "mapped", [114]], [[120190, 120190], "mapped", [115]], [[120191, 120191], "mapped", [116]], [[120192, 120192], "mapped", [117]], [[120193, 120193], "mapped", [118]], [[120194, 120194], "mapped", [119]], [[120195, 120195], "mapped", [120]], [[120196, 120196], "mapped", [121]], [[120197, 120197], "mapped", [122]], [[120198, 120198], "mapped", [97]], [[120199, 120199], "mapped", [98]], [[120200, 120200], "mapped", [99]], [[120201, 120201], "mapped", [100]], [[120202, 120202], "mapped", [101]], [[120203, 120203], "mapped", [102]], [[120204, 120204], "mapped", [103]], [[120205, 120205], "mapped", [104]], [[120206, 120206], "mapped", [105]], [[120207, 120207], "mapped", [106]], [[120208, 120208], "mapped", [107]], [[120209, 120209], "mapped", [108]], [[120210, 120210], "mapped", [109]], [[120211, 120211], "mapped", [110]], [[120212, 120212], "mapped", [111]], [[120213, 120213], "mapped", [112]], [[120214, 120214], "mapped", [113]], [[120215, 120215], "mapped", [114]], [[120216, 120216], "mapped", [115]], [[120217, 120217], "mapped", [116]], [[120218, 120218], "mapped", [117]], [[120219, 120219], "mapped", [118]], [[120220, 120220], "mapped", [119]], [[120221, 120221], "mapped", [120]], [[120222, 120222], "mapped", [121]], [[120223, 120223], "mapped", [122]], [[120224, 120224], "mapped", [97]], [[120225, 120225], "mapped", [98]], [[120226, 120226], "mapped", [99]], [[120227, 120227], "mapped", [100]], [[120228, 120228], "mapped", [101]], [[120229, 120229], "mapped", [102]], [[120230, 120230], "mapped", [103]], [[120231, 120231], "mapped", [104]], [[120232, 120232], "mapped", [105]], [[120233, 120233], "mapped", [106]], [[120234, 120234], "mapped", [107]], [[120235, 120235], "mapped", [108]], [[120236, 120236], "mapped", [109]], [[120237, 120237], "mapped", [110]], [[120238, 120238], "mapped", [111]], [[120239, 120239], "mapped", [112]], [[120240, 120240], "mapped", [113]], [[120241, 120241], "mapped", [114]], [[120242, 120242], "mapped", [115]], [[120243, 120243], "mapped", [116]], [[120244, 120244], "mapped", [117]], [[120245, 120245], "mapped", [118]], [[120246, 120246], "mapped", [119]], [[120247, 120247], "mapped", [120]], [[120248, 120248], "mapped", [121]], [[120249, 120249], "mapped", [122]], [[120250, 120250], "mapped", [97]], [[120251, 120251], "mapped", [98]], [[120252, 120252], "mapped", [99]], [[120253, 120253], "mapped", [100]], [[120254, 120254], "mapped", [101]], [[120255, 120255], "mapped", [102]], [[120256, 120256], "mapped", [103]], [[120257, 120257], "mapped", [104]], [[120258, 120258], "mapped", [105]], [[120259, 120259], "mapped", [106]], [[120260, 120260], "mapped", [107]], [[120261, 120261], "mapped", [108]], [[120262, 120262], "mapped", [109]], [[120263, 120263], "mapped", [110]], [[120264, 120264], "mapped", [111]], [[120265, 120265], "mapped", [112]], [[120266, 120266], "mapped", [113]], [[120267, 120267], "mapped", [114]], [[120268, 120268], "mapped", [115]], [[120269, 120269], "mapped", [116]], [[120270, 120270], "mapped", [117]], [[120271, 120271], "mapped", [118]], [[120272, 120272], "mapped", [119]], [[120273, 120273], "mapped", [120]], [[120274, 120274], "mapped", [121]], [[120275, 120275], "mapped", [122]], [[120276, 120276], "mapped", [97]], [[120277, 120277], "mapped", [98]], [[120278, 120278], "mapped", [99]], [[120279, 120279], "mapped", [100]], [[120280, 120280], "mapped", [101]], [[120281, 120281], "mapped", [102]], [[120282, 120282], "mapped", [103]], [[120283, 120283], "mapped", [104]], [[120284, 120284], "mapped", [105]], [[120285, 120285], "mapped", [106]], [[120286, 120286], "mapped", [107]], [[120287, 120287], "mapped", [108]], [[120288, 120288], "mapped", [109]], [[120289, 120289], "mapped", [110]], [[120290, 120290], "mapped", [111]], [[120291, 120291], "mapped", [112]], [[120292, 120292], "mapped", [113]], [[120293, 120293], "mapped", [114]], [[120294, 120294], "mapped", [115]], [[120295, 120295], "mapped", [116]], [[120296, 120296], "mapped", [117]], [[120297, 120297], "mapped", [118]], [[120298, 120298], "mapped", [119]], [[120299, 120299], "mapped", [120]], [[120300, 120300], "mapped", [121]], [[120301, 120301], "mapped", [122]], [[120302, 120302], "mapped", [97]], [[120303, 120303], "mapped", [98]], [[120304, 120304], "mapped", [99]], [[120305, 120305], "mapped", [100]], [[120306, 120306], "mapped", [101]], [[120307, 120307], "mapped", [102]], [[120308, 120308], "mapped", [103]], [[120309, 120309], "mapped", [104]], [[120310, 120310], "mapped", [105]], [[120311, 120311], "mapped", [106]], [[120312, 120312], "mapped", [107]], [[120313, 120313], "mapped", [108]], [[120314, 120314], "mapped", [109]], [[120315, 120315], "mapped", [110]], [[120316, 120316], "mapped", [111]], [[120317, 120317], "mapped", [112]], [[120318, 120318], "mapped", [113]], [[120319, 120319], "mapped", [114]], [[120320, 120320], "mapped", [115]], [[120321, 120321], "mapped", [116]], [[120322, 120322], "mapped", [117]], [[120323, 120323], "mapped", [118]], [[120324, 120324], "mapped", [119]], [[120325, 120325], "mapped", [120]], [[120326, 120326], "mapped", [121]], [[120327, 120327], "mapped", [122]], [[120328, 120328], "mapped", [97]], [[120329, 120329], "mapped", [98]], [[120330, 120330], "mapped", [99]], [[120331, 120331], "mapped", [100]], [[120332, 120332], "mapped", [101]], [[120333, 120333], "mapped", [102]], [[120334, 120334], "mapped", [103]], [[120335, 120335], "mapped", [104]], [[120336, 120336], "mapped", [105]], [[120337, 120337], "mapped", [106]], [[120338, 120338], "mapped", [107]], [[120339, 120339], "mapped", [108]], [[120340, 120340], "mapped", [109]], [[120341, 120341], "mapped", [110]], [[120342, 120342], "mapped", [111]], [[120343, 120343], "mapped", [112]], [[120344, 120344], "mapped", [113]], [[120345, 120345], "mapped", [114]], [[120346, 120346], "mapped", [115]], [[120347, 120347], "mapped", [116]], [[120348, 120348], "mapped", [117]], [[120349, 120349], "mapped", [118]], [[120350, 120350], "mapped", [119]], [[120351, 120351], "mapped", [120]], [[120352, 120352], "mapped", [121]], [[120353, 120353], "mapped", [122]], [[120354, 120354], "mapped", [97]], [[120355, 120355], "mapped", [98]], [[120356, 120356], "mapped", [99]], [[120357, 120357], "mapped", [100]], [[120358, 120358], "mapped", [101]], [[120359, 120359], "mapped", [102]], [[120360, 120360], "mapped", [103]], [[120361, 120361], "mapped", [104]], [[120362, 120362], "mapped", [105]], [[120363, 120363], "mapped", [106]], [[120364, 120364], "mapped", [107]], [[120365, 120365], "mapped", [108]], [[120366, 120366], "mapped", [109]], [[120367, 120367], "mapped", [110]], [[120368, 120368], "mapped", [111]], [[120369, 120369], "mapped", [112]], [[120370, 120370], "mapped", [113]], [[120371, 120371], "mapped", [114]], [[120372, 120372], "mapped", [115]], [[120373, 120373], "mapped", [116]], [[120374, 120374], "mapped", [117]], [[120375, 120375], "mapped", [118]], [[120376, 120376], "mapped", [119]], [[120377, 120377], "mapped", [120]], [[120378, 120378], "mapped", [121]], [[120379, 120379], "mapped", [122]], [[120380, 120380], "mapped", [97]], [[120381, 120381], "mapped", [98]], [[120382, 120382], "mapped", [99]], [[120383, 120383], "mapped", [100]], [[120384, 120384], "mapped", [101]], [[120385, 120385], "mapped", [102]], [[120386, 120386], "mapped", [103]], [[120387, 120387], "mapped", [104]], [[120388, 120388], "mapped", [105]], [[120389, 120389], "mapped", [106]], [[120390, 120390], "mapped", [107]], [[120391, 120391], "mapped", [108]], [[120392, 120392], "mapped", [109]], [[120393, 120393], "mapped", [110]], [[120394, 120394], "mapped", [111]], [[120395, 120395], "mapped", [112]], [[120396, 120396], "mapped", [113]], [[120397, 120397], "mapped", [114]], [[120398, 120398], "mapped", [115]], [[120399, 120399], "mapped", [116]], [[120400, 120400], "mapped", [117]], [[120401, 120401], "mapped", [118]], [[120402, 120402], "mapped", [119]], [[120403, 120403], "mapped", [120]], [[120404, 120404], "mapped", [121]], [[120405, 120405], "mapped", [122]], [[120406, 120406], "mapped", [97]], [[120407, 120407], "mapped", [98]], [[120408, 120408], "mapped", [99]], [[120409, 120409], "mapped", [100]], [[120410, 120410], "mapped", [101]], [[120411, 120411], "mapped", [102]], [[120412, 120412], "mapped", [103]], [[120413, 120413], "mapped", [104]], [[120414, 120414], "mapped", [105]], [[120415, 120415], "mapped", [106]], [[120416, 120416], "mapped", [107]], [[120417, 120417], "mapped", [108]], [[120418, 120418], "mapped", [109]], [[120419, 120419], "mapped", [110]], [[120420, 120420], "mapped", [111]], [[120421, 120421], "mapped", [112]], [[120422, 120422], "mapped", [113]], [[120423, 120423], "mapped", [114]], [[120424, 120424], "mapped", [115]], [[120425, 120425], "mapped", [116]], [[120426, 120426], "mapped", [117]], [[120427, 120427], "mapped", [118]], [[120428, 120428], "mapped", [119]], [[120429, 120429], "mapped", [120]], [[120430, 120430], "mapped", [121]], [[120431, 120431], "mapped", [122]], [[120432, 120432], "mapped", [97]], [[120433, 120433], "mapped", [98]], [[120434, 120434], "mapped", [99]], [[120435, 120435], "mapped", [100]], [[120436, 120436], "mapped", [101]], [[120437, 120437], "mapped", [102]], [[120438, 120438], "mapped", [103]], [[120439, 120439], "mapped", [104]], [[120440, 120440], "mapped", [105]], [[120441, 120441], "mapped", [106]], [[120442, 120442], "mapped", [107]], [[120443, 120443], "mapped", [108]], [[120444, 120444], "mapped", [109]], [[120445, 120445], "mapped", [110]], [[120446, 120446], "mapped", [111]], [[120447, 120447], "mapped", [112]], [[120448, 120448], "mapped", [113]], [[120449, 120449], "mapped", [114]], [[120450, 120450], "mapped", [115]], [[120451, 120451], "mapped", [116]], [[120452, 120452], "mapped", [117]], [[120453, 120453], "mapped", [118]], [[120454, 120454], "mapped", [119]], [[120455, 120455], "mapped", [120]], [[120456, 120456], "mapped", [121]], [[120457, 120457], "mapped", [122]], [[120458, 120458], "mapped", [97]], [[120459, 120459], "mapped", [98]], [[120460, 120460], "mapped", [99]], [[120461, 120461], "mapped", [100]], [[120462, 120462], "mapped", [101]], [[120463, 120463], "mapped", [102]], [[120464, 120464], "mapped", [103]], [[120465, 120465], "mapped", [104]], [[120466, 120466], "mapped", [105]], [[120467, 120467], "mapped", [106]], [[120468, 120468], "mapped", [107]], [[120469, 120469], "mapped", [108]], [[120470, 120470], "mapped", [109]], [[120471, 120471], "mapped", [110]], [[120472, 120472], "mapped", [111]], [[120473, 120473], "mapped", [112]], [[120474, 120474], "mapped", [113]], [[120475, 120475], "mapped", [114]], [[120476, 120476], "mapped", [115]], [[120477, 120477], "mapped", [116]], [[120478, 120478], "mapped", [117]], [[120479, 120479], "mapped", [118]], [[120480, 120480], "mapped", [119]], [[120481, 120481], "mapped", [120]], [[120482, 120482], "mapped", [121]], [[120483, 120483], "mapped", [122]], [[120484, 120484], "mapped", [305]], [[120485, 120485], "mapped", [567]], [[120486, 120487], "disallowed"], [[120488, 120488], "mapped", [945]], [[120489, 120489], "mapped", [946]], [[120490, 120490], "mapped", [947]], [[120491, 120491], "mapped", [948]], [[120492, 120492], "mapped", [949]], [[120493, 120493], "mapped", [950]], [[120494, 120494], "mapped", [951]], [[120495, 120495], "mapped", [952]], [[120496, 120496], "mapped", [953]], [[120497, 120497], "mapped", [954]], [[120498, 120498], "mapped", [955]], [[120499, 120499], "mapped", [956]], [[120500, 120500], "mapped", [957]], [[120501, 120501], "mapped", [958]], [[120502, 120502], "mapped", [959]], [[120503, 120503], "mapped", [960]], [[120504, 120504], "mapped", [961]], [[120505, 120505], "mapped", [952]], [[120506, 120506], "mapped", [963]], [[120507, 120507], "mapped", [964]], [[120508, 120508], "mapped", [965]], [[120509, 120509], "mapped", [966]], [[120510, 120510], "mapped", [967]], [[120511, 120511], "mapped", [968]], [[120512, 120512], "mapped", [969]], [[120513, 120513], "mapped", [8711]], [[120514, 120514], "mapped", [945]], [[120515, 120515], "mapped", [946]], [[120516, 120516], "mapped", [947]], [[120517, 120517], "mapped", [948]], [[120518, 120518], "mapped", [949]], [[120519, 120519], "mapped", [950]], [[120520, 120520], "mapped", [951]], [[120521, 120521], "mapped", [952]], [[120522, 120522], "mapped", [953]], [[120523, 120523], "mapped", [954]], [[120524, 120524], "mapped", [955]], [[120525, 120525], "mapped", [956]], [[120526, 120526], "mapped", [957]], [[120527, 120527], "mapped", [958]], [[120528, 120528], "mapped", [959]], [[120529, 120529], "mapped", [960]], [[120530, 120530], "mapped", [961]], [[120531, 120532], "mapped", [963]], [[120533, 120533], "mapped", [964]], [[120534, 120534], "mapped", [965]], [[120535, 120535], "mapped", [966]], [[120536, 120536], "mapped", [967]], [[120537, 120537], "mapped", [968]], [[120538, 120538], "mapped", [969]], [[120539, 120539], "mapped", [8706]], [[120540, 120540], "mapped", [949]], [[120541, 120541], "mapped", [952]], [[120542, 120542], "mapped", [954]], [[120543, 120543], "mapped", [966]], [[120544, 120544], "mapped", [961]], [[120545, 120545], "mapped", [960]], [[120546, 120546], "mapped", [945]], [[120547, 120547], "mapped", [946]], [[120548, 120548], "mapped", [947]], [[120549, 120549], "mapped", [948]], [[120550, 120550], "mapped", [949]], [[120551, 120551], "mapped", [950]], [[120552, 120552], "mapped", [951]], [[120553, 120553], "mapped", [952]], [[120554, 120554], "mapped", [953]], [[120555, 120555], "mapped", [954]], [[120556, 120556], "mapped", [955]], [[120557, 120557], "mapped", [956]], [[120558, 120558], "mapped", [957]], [[120559, 120559], "mapped", [958]], [[120560, 120560], "mapped", [959]], [[120561, 120561], "mapped", [960]], [[120562, 120562], "mapped", [961]], [[120563, 120563], "mapped", [952]], [[120564, 120564], "mapped", [963]], [[120565, 120565], "mapped", [964]], [[120566, 120566], "mapped", [965]], [[120567, 120567], "mapped", [966]], [[120568, 120568], "mapped", [967]], [[120569, 120569], "mapped", [968]], [[120570, 120570], "mapped", [969]], [[120571, 120571], "mapped", [8711]], [[120572, 120572], "mapped", [945]], [[120573, 120573], "mapped", [946]], [[120574, 120574], "mapped", [947]], [[120575, 120575], "mapped", [948]], [[120576, 120576], "mapped", [949]], [[120577, 120577], "mapped", [950]], [[120578, 120578], "mapped", [951]], [[120579, 120579], "mapped", [952]], [[120580, 120580], "mapped", [953]], [[120581, 120581], "mapped", [954]], [[120582, 120582], "mapped", [955]], [[120583, 120583], "mapped", [956]], [[120584, 120584], "mapped", [957]], [[120585, 120585], "mapped", [958]], [[120586, 120586], "mapped", [959]], [[120587, 120587], "mapped", [960]], [[120588, 120588], "mapped", [961]], [[120589, 120590], "mapped", [963]], [[120591, 120591], "mapped", [964]], [[120592, 120592], "mapped", [965]], [[120593, 120593], "mapped", [966]], [[120594, 120594], "mapped", [967]], [[120595, 120595], "mapped", [968]], [[120596, 120596], "mapped", [969]], [[120597, 120597], "mapped", [8706]], [[120598, 120598], "mapped", [949]], [[120599, 120599], "mapped", [952]], [[120600, 120600], "mapped", [954]], [[120601, 120601], "mapped", [966]], [[120602, 120602], "mapped", [961]], [[120603, 120603], "mapped", [960]], [[120604, 120604], "mapped", [945]], [[120605, 120605], "mapped", [946]], [[120606, 120606], "mapped", [947]], [[120607, 120607], "mapped", [948]], [[120608, 120608], "mapped", [949]], [[120609, 120609], "mapped", [950]], [[120610, 120610], "mapped", [951]], [[120611, 120611], "mapped", [952]], [[120612, 120612], "mapped", [953]], [[120613, 120613], "mapped", [954]], [[120614, 120614], "mapped", [955]], [[120615, 120615], "mapped", [956]], [[120616, 120616], "mapped", [957]], [[120617, 120617], "mapped", [958]], [[120618, 120618], "mapped", [959]], [[120619, 120619], "mapped", [960]], [[120620, 120620], "mapped", [961]], [[120621, 120621], "mapped", [952]], [[120622, 120622], "mapped", [963]], [[120623, 120623], "mapped", [964]], [[120624, 120624], "mapped", [965]], [[120625, 120625], "mapped", [966]], [[120626, 120626], "mapped", [967]], [[120627, 120627], "mapped", [968]], [[120628, 120628], "mapped", [969]], [[120629, 120629], "mapped", [8711]], [[120630, 120630], "mapped", [945]], [[120631, 120631], "mapped", [946]], [[120632, 120632], "mapped", [947]], [[120633, 120633], "mapped", [948]], [[120634, 120634], "mapped", [949]], [[120635, 120635], "mapped", [950]], [[120636, 120636], "mapped", [951]], [[120637, 120637], "mapped", [952]], [[120638, 120638], "mapped", [953]], [[120639, 120639], "mapped", [954]], [[120640, 120640], "mapped", [955]], [[120641, 120641], "mapped", [956]], [[120642, 120642], "mapped", [957]], [[120643, 120643], "mapped", [958]], [[120644, 120644], "mapped", [959]], [[120645, 120645], "mapped", [960]], [[120646, 120646], "mapped", [961]], [[120647, 120648], "mapped", [963]], [[120649, 120649], "mapped", [964]], [[120650, 120650], "mapped", [965]], [[120651, 120651], "mapped", [966]], [[120652, 120652], "mapped", [967]], [[120653, 120653], "mapped", [968]], [[120654, 120654], "mapped", [969]], [[120655, 120655], "mapped", [8706]], [[120656, 120656], "mapped", [949]], [[120657, 120657], "mapped", [952]], [[120658, 120658], "mapped", [954]], [[120659, 120659], "mapped", [966]], [[120660, 120660], "mapped", [961]], [[120661, 120661], "mapped", [960]], [[120662, 120662], "mapped", [945]], [[120663, 120663], "mapped", [946]], [[120664, 120664], "mapped", [947]], [[120665, 120665], "mapped", [948]], [[120666, 120666], "mapped", [949]], [[120667, 120667], "mapped", [950]], [[120668, 120668], "mapped", [951]], [[120669, 120669], "mapped", [952]], [[120670, 120670], "mapped", [953]], [[120671, 120671], "mapped", [954]], [[120672, 120672], "mapped", [955]], [[120673, 120673], "mapped", [956]], [[120674, 120674], "mapped", [957]], [[120675, 120675], "mapped", [958]], [[120676, 120676], "mapped", [959]], [[120677, 120677], "mapped", [960]], [[120678, 120678], "mapped", [961]], [[120679, 120679], "mapped", [952]], [[120680, 120680], "mapped", [963]], [[120681, 120681], "mapped", [964]], [[120682, 120682], "mapped", [965]], [[120683, 120683], "mapped", [966]], [[120684, 120684], "mapped", [967]], [[120685, 120685], "mapped", [968]], [[120686, 120686], "mapped", [969]], [[120687, 120687], "mapped", [8711]], [[120688, 120688], "mapped", [945]], [[120689, 120689], "mapped", [946]], [[120690, 120690], "mapped", [947]], [[120691, 120691], "mapped", [948]], [[120692, 120692], "mapped", [949]], [[120693, 120693], "mapped", [950]], [[120694, 120694], "mapped", [951]], [[120695, 120695], "mapped", [952]], [[120696, 120696], "mapped", [953]], [[120697, 120697], "mapped", [954]], [[120698, 120698], "mapped", [955]], [[120699, 120699], "mapped", [956]], [[120700, 120700], "mapped", [957]], [[120701, 120701], "mapped", [958]], [[120702, 120702], "mapped", [959]], [[120703, 120703], "mapped", [960]], [[120704, 120704], "mapped", [961]], [[120705, 120706], "mapped", [963]], [[120707, 120707], "mapped", [964]], [[120708, 120708], "mapped", [965]], [[120709, 120709], "mapped", [966]], [[120710, 120710], "mapped", [967]], [[120711, 120711], "mapped", [968]], [[120712, 120712], "mapped", [969]], [[120713, 120713], "mapped", [8706]], [[120714, 120714], "mapped", [949]], [[120715, 120715], "mapped", [952]], [[120716, 120716], "mapped", [954]], [[120717, 120717], "mapped", [966]], [[120718, 120718], "mapped", [961]], [[120719, 120719], "mapped", [960]], [[120720, 120720], "mapped", [945]], [[120721, 120721], "mapped", [946]], [[120722, 120722], "mapped", [947]], [[120723, 120723], "mapped", [948]], [[120724, 120724], "mapped", [949]], [[120725, 120725], "mapped", [950]], [[120726, 120726], "mapped", [951]], [[120727, 120727], "mapped", [952]], [[120728, 120728], "mapped", [953]], [[120729, 120729], "mapped", [954]], [[120730, 120730], "mapped", [955]], [[120731, 120731], "mapped", [956]], [[120732, 120732], "mapped", [957]], [[120733, 120733], "mapped", [958]], [[120734, 120734], "mapped", [959]], [[120735, 120735], "mapped", [960]], [[120736, 120736], "mapped", [961]], [[120737, 120737], "mapped", [952]], [[120738, 120738], "mapped", [963]], [[120739, 120739], "mapped", [964]], [[120740, 120740], "mapped", [965]], [[120741, 120741], "mapped", [966]], [[120742, 120742], "mapped", [967]], [[120743, 120743], "mapped", [968]], [[120744, 120744], "mapped", [969]], [[120745, 120745], "mapped", [8711]], [[120746, 120746], "mapped", [945]], [[120747, 120747], "mapped", [946]], [[120748, 120748], "mapped", [947]], [[120749, 120749], "mapped", [948]], [[120750, 120750], "mapped", [949]], [[120751, 120751], "mapped", [950]], [[120752, 120752], "mapped", [951]], [[120753, 120753], "mapped", [952]], [[120754, 120754], "mapped", [953]], [[120755, 120755], "mapped", [954]], [[120756, 120756], "mapped", [955]], [[120757, 120757], "mapped", [956]], [[120758, 120758], "mapped", [957]], [[120759, 120759], "mapped", [958]], [[120760, 120760], "mapped", [959]], [[120761, 120761], "mapped", [960]], [[120762, 120762], "mapped", [961]], [[120763, 120764], "mapped", [963]], [[120765, 120765], "mapped", [964]], [[120766, 120766], "mapped", [965]], [[120767, 120767], "mapped", [966]], [[120768, 120768], "mapped", [967]], [[120769, 120769], "mapped", [968]], [[120770, 120770], "mapped", [969]], [[120771, 120771], "mapped", [8706]], [[120772, 120772], "mapped", [949]], [[120773, 120773], "mapped", [952]], [[120774, 120774], "mapped", [954]], [[120775, 120775], "mapped", [966]], [[120776, 120776], "mapped", [961]], [[120777, 120777], "mapped", [960]], [[120778, 120779], "mapped", [989]], [[120780, 120781], "disallowed"], [[120782, 120782], "mapped", [48]], [[120783, 120783], "mapped", [49]], [[120784, 120784], "mapped", [50]], [[120785, 120785], "mapped", [51]], [[120786, 120786], "mapped", [52]], [[120787, 120787], "mapped", [53]], [[120788, 120788], "mapped", [54]], [[120789, 120789], "mapped", [55]], [[120790, 120790], "mapped", [56]], [[120791, 120791], "mapped", [57]], [[120792, 120792], "mapped", [48]], [[120793, 120793], "mapped", [49]], [[120794, 120794], "mapped", [50]], [[120795, 120795], "mapped", [51]], [[120796, 120796], "mapped", [52]], [[120797, 120797], "mapped", [53]], [[120798, 120798], "mapped", [54]], [[120799, 120799], "mapped", [55]], [[120800, 120800], "mapped", [56]], [[120801, 120801], "mapped", [57]], [[120802, 120802], "mapped", [48]], [[120803, 120803], "mapped", [49]], [[120804, 120804], "mapped", [50]], [[120805, 120805], "mapped", [51]], [[120806, 120806], "mapped", [52]], [[120807, 120807], "mapped", [53]], [[120808, 120808], "mapped", [54]], [[120809, 120809], "mapped", [55]], [[120810, 120810], "mapped", [56]], [[120811, 120811], "mapped", [57]], [[120812, 120812], "mapped", [48]], [[120813, 120813], "mapped", [49]], [[120814, 120814], "mapped", [50]], [[120815, 120815], "mapped", [51]], [[120816, 120816], "mapped", [52]], [[120817, 120817], "mapped", [53]], [[120818, 120818], "mapped", [54]], [[120819, 120819], "mapped", [55]], [[120820, 120820], "mapped", [56]], [[120821, 120821], "mapped", [57]], [[120822, 120822], "mapped", [48]], [[120823, 120823], "mapped", [49]], [[120824, 120824], "mapped", [50]], [[120825, 120825], "mapped", [51]], [[120826, 120826], "mapped", [52]], [[120827, 120827], "mapped", [53]], [[120828, 120828], "mapped", [54]], [[120829, 120829], "mapped", [55]], [[120830, 120830], "mapped", [56]], [[120831, 120831], "mapped", [57]], [[120832, 121343], "valid", [], "NV8"], [[121344, 121398], "valid"], [[121399, 121402], "valid", [], "NV8"], [[121403, 121452], "valid"], [[121453, 121460], "valid", [], "NV8"], [[121461, 121461], "valid"], [[121462, 121475], "valid", [], "NV8"], [[121476, 121476], "valid"], [[121477, 121483], "valid", [], "NV8"], [[121484, 121498], "disallowed"], [[121499, 121503], "valid"], [[121504, 121504], "disallowed"], [[121505, 121519], "valid"], [[121520, 124927], "disallowed"], [[124928, 125124], "valid"], [[125125, 125126], "disallowed"], [[125127, 125135], "valid", [], "NV8"], [[125136, 125142], "valid"], [[125143, 126463], "disallowed"], [[126464, 126464], "mapped", [1575]], [[126465, 126465], "mapped", [1576]], [[126466, 126466], "mapped", [1580]], [[126467, 126467], "mapped", [1583]], [[126468, 126468], "disallowed"], [[126469, 126469], "mapped", [1608]], [[126470, 126470], "mapped", [1586]], [[126471, 126471], "mapped", [1581]], [[126472, 126472], "mapped", [1591]], [[126473, 126473], "mapped", [1610]], [[126474, 126474], "mapped", [1603]], [[126475, 126475], "mapped", [1604]], [[126476, 126476], "mapped", [1605]], [[126477, 126477], "mapped", [1606]], [[126478, 126478], "mapped", [1587]], [[126479, 126479], "mapped", [1593]], [[126480, 126480], "mapped", [1601]], [[126481, 126481], "mapped", [1589]], [[126482, 126482], "mapped", [1602]], [[126483, 126483], "mapped", [1585]], [[126484, 126484], "mapped", [1588]], [[126485, 126485], "mapped", [1578]], [[126486, 126486], "mapped", [1579]], [[126487, 126487], "mapped", [1582]], [[126488, 126488], "mapped", [1584]], [[126489, 126489], "mapped", [1590]], [[126490, 126490], "mapped", [1592]], [[126491, 126491], "mapped", [1594]], [[126492, 126492], "mapped", [1646]], [[126493, 126493], "mapped", [1722]], [[126494, 126494], "mapped", [1697]], [[126495, 126495], "mapped", [1647]], [[126496, 126496], "disallowed"], [[126497, 126497], "mapped", [1576]], [[126498, 126498], "mapped", [1580]], [[126499, 126499], "disallowed"], [[126500, 126500], "mapped", [1607]], [[126501, 126502], "disallowed"], [[126503, 126503], "mapped", [1581]], [[126504, 126504], "disallowed"], [[126505, 126505], "mapped", [1610]], [[126506, 126506], "mapped", [1603]], [[126507, 126507], "mapped", [1604]], [[126508, 126508], "mapped", [1605]], [[126509, 126509], "mapped", [1606]], [[126510, 126510], "mapped", [1587]], [[126511, 126511], "mapped", [1593]], [[126512, 126512], "mapped", [1601]], [[126513, 126513], "mapped", [1589]], [[126514, 126514], "mapped", [1602]], [[126515, 126515], "disallowed"], [[126516, 126516], "mapped", [1588]], [[126517, 126517], "mapped", [1578]], [[126518, 126518], "mapped", [1579]], [[126519, 126519], "mapped", [1582]], [[126520, 126520], "disallowed"], [[126521, 126521], "mapped", [1590]], [[126522, 126522], "disallowed"], [[126523, 126523], "mapped", [1594]], [[126524, 126529], "disallowed"], [[126530, 126530], "mapped", [1580]], [[126531, 126534], "disallowed"], [[126535, 126535], "mapped", [1581]], [[126536, 126536], "disallowed"], [[126537, 126537], "mapped", [1610]], [[126538, 126538], "disallowed"], [[126539, 126539], "mapped", [1604]], [[126540, 126540], "disallowed"], [[126541, 126541], "mapped", [1606]], [[126542, 126542], "mapped", [1587]], [[126543, 126543], "mapped", [1593]], [[126544, 126544], "disallowed"], [[126545, 126545], "mapped", [1589]], [[126546, 126546], "mapped", [1602]], [[126547, 126547], "disallowed"], [[126548, 126548], "mapped", [1588]], [[126549, 126550], "disallowed"], [[126551, 126551], "mapped", [1582]], [[126552, 126552], "disallowed"], [[126553, 126553], "mapped", [1590]], [[126554, 126554], "disallowed"], [[126555, 126555], "mapped", [1594]], [[126556, 126556], "disallowed"], [[126557, 126557], "mapped", [1722]], [[126558, 126558], "disallowed"], [[126559, 126559], "mapped", [1647]], [[126560, 126560], "disallowed"], [[126561, 126561], "mapped", [1576]], [[126562, 126562], "mapped", [1580]], [[126563, 126563], "disallowed"], [[126564, 126564], "mapped", [1607]], [[126565, 126566], "disallowed"], [[126567, 126567], "mapped", [1581]], [[126568, 126568], "mapped", [1591]], [[126569, 126569], "mapped", [1610]], [[126570, 126570], "mapped", [1603]], [[126571, 126571], "disallowed"], [[126572, 126572], "mapped", [1605]], [[126573, 126573], "mapped", [1606]], [[126574, 126574], "mapped", [1587]], [[126575, 126575], "mapped", [1593]], [[126576, 126576], "mapped", [1601]], [[126577, 126577], "mapped", [1589]], [[126578, 126578], "mapped", [1602]], [[126579, 126579], "disallowed"], [[126580, 126580], "mapped", [1588]], [[126581, 126581], "mapped", [1578]], [[126582, 126582], "mapped", [1579]], [[126583, 126583], "mapped", [1582]], [[126584, 126584], "disallowed"], [[126585, 126585], "mapped", [1590]], [[126586, 126586], "mapped", [1592]], [[126587, 126587], "mapped", [1594]], [[126588, 126588], "mapped", [1646]], [[126589, 126589], "disallowed"], [[126590, 126590], "mapped", [1697]], [[126591, 126591], "disallowed"], [[126592, 126592], "mapped", [1575]], [[126593, 126593], "mapped", [1576]], [[126594, 126594], "mapped", [1580]], [[126595, 126595], "mapped", [1583]], [[126596, 126596], "mapped", [1607]], [[126597, 126597], "mapped", [1608]], [[126598, 126598], "mapped", [1586]], [[126599, 126599], "mapped", [1581]], [[126600, 126600], "mapped", [1591]], [[126601, 126601], "mapped", [1610]], [[126602, 126602], "disallowed"], [[126603, 126603], "mapped", [1604]], [[126604, 126604], "mapped", [1605]], [[126605, 126605], "mapped", [1606]], [[126606, 126606], "mapped", [1587]], [[126607, 126607], "mapped", [1593]], [[126608, 126608], "mapped", [1601]], [[126609, 126609], "mapped", [1589]], [[126610, 126610], "mapped", [1602]], [[126611, 126611], "mapped", [1585]], [[126612, 126612], "mapped", [1588]], [[126613, 126613], "mapped", [1578]], [[126614, 126614], "mapped", [1579]], [[126615, 126615], "mapped", [1582]], [[126616, 126616], "mapped", [1584]], [[126617, 126617], "mapped", [1590]], [[126618, 126618], "mapped", [1592]], [[126619, 126619], "mapped", [1594]], [[126620, 126624], "disallowed"], [[126625, 126625], "mapped", [1576]], [[126626, 126626], "mapped", [1580]], [[126627, 126627], "mapped", [1583]], [[126628, 126628], "disallowed"], [[126629, 126629], "mapped", [1608]], [[126630, 126630], "mapped", [1586]], [[126631, 126631], "mapped", [1581]], [[126632, 126632], "mapped", [1591]], [[126633, 126633], "mapped", [1610]], [[126634, 126634], "disallowed"], [[126635, 126635], "mapped", [1604]], [[126636, 126636], "mapped", [1605]], [[126637, 126637], "mapped", [1606]], [[126638, 126638], "mapped", [1587]], [[126639, 126639], "mapped", [1593]], [[126640, 126640], "mapped", [1601]], [[126641, 126641], "mapped", [1589]], [[126642, 126642], "mapped", [1602]], [[126643, 126643], "mapped", [1585]], [[126644, 126644], "mapped", [1588]], [[126645, 126645], "mapped", [1578]], [[126646, 126646], "mapped", [1579]], [[126647, 126647], "mapped", [1582]], [[126648, 126648], "mapped", [1584]], [[126649, 126649], "mapped", [1590]], [[126650, 126650], "mapped", [1592]], [[126651, 126651], "mapped", [1594]], [[126652, 126703], "disallowed"], [[126704, 126705], "valid", [], "NV8"], [[126706, 126975], "disallowed"], [[126976, 127019], "valid", [], "NV8"], [[127020, 127023], "disallowed"], [[127024, 127123], "valid", [], "NV8"], [[127124, 127135], "disallowed"], [[127136, 127150], "valid", [], "NV8"], [[127151, 127152], "disallowed"], [[127153, 127166], "valid", [], "NV8"], [[127167, 127167], "valid", [], "NV8"], [[127168, 127168], "disallowed"], [[127169, 127183], "valid", [], "NV8"], [[127184, 127184], "disallowed"], [[127185, 127199], "valid", [], "NV8"], [[127200, 127221], "valid", [], "NV8"], [[127222, 127231], "disallowed"], [[127232, 127232], "disallowed"], [[127233, 127233], "disallowed_STD3_mapped", [48, 44]], [[127234, 127234], "disallowed_STD3_mapped", [49, 44]], [[127235, 127235], "disallowed_STD3_mapped", [50, 44]], [[127236, 127236], "disallowed_STD3_mapped", [51, 44]], [[127237, 127237], "disallowed_STD3_mapped", [52, 44]], [[127238, 127238], "disallowed_STD3_mapped", [53, 44]], [[127239, 127239], "disallowed_STD3_mapped", [54, 44]], [[127240, 127240], "disallowed_STD3_mapped", [55, 44]], [[127241, 127241], "disallowed_STD3_mapped", [56, 44]], [[127242, 127242], "disallowed_STD3_mapped", [57, 44]], [[127243, 127244], "valid", [], "NV8"], [[127245, 127247], "disallowed"], [[127248, 127248], "disallowed_STD3_mapped", [40, 97, 41]], [[127249, 127249], "disallowed_STD3_mapped", [40, 98, 41]], [[127250, 127250], "disallowed_STD3_mapped", [40, 99, 41]], [[127251, 127251], "disallowed_STD3_mapped", [40, 100, 41]], [[127252, 127252], "disallowed_STD3_mapped", [40, 101, 41]], [[127253, 127253], "disallowed_STD3_mapped", [40, 102, 41]], [[127254, 127254], "disallowed_STD3_mapped", [40, 103, 41]], [[127255, 127255], "disallowed_STD3_mapped", [40, 104, 41]], [[127256, 127256], "disallowed_STD3_mapped", [40, 105, 41]], [[127257, 127257], "disallowed_STD3_mapped", [40, 106, 41]], [[127258, 127258], "disallowed_STD3_mapped", [40, 107, 41]], [[127259, 127259], "disallowed_STD3_mapped", [40, 108, 41]], [[127260, 127260], "disallowed_STD3_mapped", [40, 109, 41]], [[127261, 127261], "disallowed_STD3_mapped", [40, 110, 41]], [[127262, 127262], "disallowed_STD3_mapped", [40, 111, 41]], [[127263, 127263], "disallowed_STD3_mapped", [40, 112, 41]], [[127264, 127264], "disallowed_STD3_mapped", [40, 113, 41]], [[127265, 127265], "disallowed_STD3_mapped", [40, 114, 41]], [[127266, 127266], "disallowed_STD3_mapped", [40, 115, 41]], [[127267, 127267], "disallowed_STD3_mapped", [40, 116, 41]], [[127268, 127268], "disallowed_STD3_mapped", [40, 117, 41]], [[127269, 127269], "disallowed_STD3_mapped", [40, 118, 41]], [[127270, 127270], "disallowed_STD3_mapped", [40, 119, 41]], [[127271, 127271], "disallowed_STD3_mapped", [40, 120, 41]], [[127272, 127272], "disallowed_STD3_mapped", [40, 121, 41]], [[127273, 127273], "disallowed_STD3_mapped", [40, 122, 41]], [[127274, 127274], "mapped", [12308, 115, 12309]], [[127275, 127275], "mapped", [99]], [[127276, 127276], "mapped", [114]], [[127277, 127277], "mapped", [99, 100]], [[127278, 127278], "mapped", [119, 122]], [[127279, 127279], "disallowed"], [[127280, 127280], "mapped", [97]], [[127281, 127281], "mapped", [98]], [[127282, 127282], "mapped", [99]], [[127283, 127283], "mapped", [100]], [[127284, 127284], "mapped", [101]], [[127285, 127285], "mapped", [102]], [[127286, 127286], "mapped", [103]], [[127287, 127287], "mapped", [104]], [[127288, 127288], "mapped", [105]], [[127289, 127289], "mapped", [106]], [[127290, 127290], "mapped", [107]], [[127291, 127291], "mapped", [108]], [[127292, 127292], "mapped", [109]], [[127293, 127293], "mapped", [110]], [[127294, 127294], "mapped", [111]], [[127295, 127295], "mapped", [112]], [[127296, 127296], "mapped", [113]], [[127297, 127297], "mapped", [114]], [[127298, 127298], "mapped", [115]], [[127299, 127299], "mapped", [116]], [[127300, 127300], "mapped", [117]], [[127301, 127301], "mapped", [118]], [[127302, 127302], "mapped", [119]], [[127303, 127303], "mapped", [120]], [[127304, 127304], "mapped", [121]], [[127305, 127305], "mapped", [122]], [[127306, 127306], "mapped", [104, 118]], [[127307, 127307], "mapped", [109, 118]], [[127308, 127308], "mapped", [115, 100]], [[127309, 127309], "mapped", [115, 115]], [[127310, 127310], "mapped", [112, 112, 118]], [[127311, 127311], "mapped", [119, 99]], [[127312, 127318], "valid", [], "NV8"], [[127319, 127319], "valid", [], "NV8"], [[127320, 127326], "valid", [], "NV8"], [[127327, 127327], "valid", [], "NV8"], [[127328, 127337], "valid", [], "NV8"], [[127338, 127338], "mapped", [109, 99]], [[127339, 127339], "mapped", [109, 100]], [[127340, 127343], "disallowed"], [[127344, 127352], "valid", [], "NV8"], [[127353, 127353], "valid", [], "NV8"], [[127354, 127354], "valid", [], "NV8"], [[127355, 127356], "valid", [], "NV8"], [[127357, 127358], "valid", [], "NV8"], [[127359, 127359], "valid", [], "NV8"], [[127360, 127369], "valid", [], "NV8"], [[127370, 127373], "valid", [], "NV8"], [[127374, 127375], "valid", [], "NV8"], [[127376, 127376], "mapped", [100, 106]], [[127377, 127386], "valid", [], "NV8"], [[127387, 127461], "disallowed"], [[127462, 127487], "valid", [], "NV8"], [[127488, 127488], "mapped", [12411, 12363]], [[127489, 127489], "mapped", [12467, 12467]], [[127490, 127490], "mapped", [12469]], [[127491, 127503], "disallowed"], [[127504, 127504], "mapped", [25163]], [[127505, 127505], "mapped", [23383]], [[127506, 127506], "mapped", [21452]], [[127507, 127507], "mapped", [12487]], [[127508, 127508], "mapped", [20108]], [[127509, 127509], "mapped", [22810]], [[127510, 127510], "mapped", [35299]], [[127511, 127511], "mapped", [22825]], [[127512, 127512], "mapped", [20132]], [[127513, 127513], "mapped", [26144]], [[127514, 127514], "mapped", [28961]], [[127515, 127515], "mapped", [26009]], [[127516, 127516], "mapped", [21069]], [[127517, 127517], "mapped", [24460]], [[127518, 127518], "mapped", [20877]], [[127519, 127519], "mapped", [26032]], [[127520, 127520], "mapped", [21021]], [[127521, 127521], "mapped", [32066]], [[127522, 127522], "mapped", [29983]], [[127523, 127523], "mapped", [36009]], [[127524, 127524], "mapped", [22768]], [[127525, 127525], "mapped", [21561]], [[127526, 127526], "mapped", [28436]], [[127527, 127527], "mapped", [25237]], [[127528, 127528], "mapped", [25429]], [[127529, 127529], "mapped", [19968]], [[127530, 127530], "mapped", [19977]], [[127531, 127531], "mapped", [36938]], [[127532, 127532], "mapped", [24038]], [[127533, 127533], "mapped", [20013]], [[127534, 127534], "mapped", [21491]], [[127535, 127535], "mapped", [25351]], [[127536, 127536], "mapped", [36208]], [[127537, 127537], "mapped", [25171]], [[127538, 127538], "mapped", [31105]], [[127539, 127539], "mapped", [31354]], [[127540, 127540], "mapped", [21512]], [[127541, 127541], "mapped", [28288]], [[127542, 127542], "mapped", [26377]], [[127543, 127543], "mapped", [26376]], [[127544, 127544], "mapped", [30003]], [[127545, 127545], "mapped", [21106]], [[127546, 127546], "mapped", [21942]], [[127547, 127551], "disallowed"], [[127552, 127552], "mapped", [12308, 26412, 12309]], [[127553, 127553], "mapped", [12308, 19977, 12309]], [[127554, 127554], "mapped", [12308, 20108, 12309]], [[127555, 127555], "mapped", [12308, 23433, 12309]], [[127556, 127556], "mapped", [12308, 28857, 12309]], [[127557, 127557], "mapped", [12308, 25171, 12309]], [[127558, 127558], "mapped", [12308, 30423, 12309]], [[127559, 127559], "mapped", [12308, 21213, 12309]], [[127560, 127560], "mapped", [12308, 25943, 12309]], [[127561, 127567], "disallowed"], [[127568, 127568], "mapped", [24471]], [[127569, 127569], "mapped", [21487]], [[127570, 127743], "disallowed"], [[127744, 127776], "valid", [], "NV8"], [[127777, 127788], "valid", [], "NV8"], [[127789, 127791], "valid", [], "NV8"], [[127792, 127797], "valid", [], "NV8"], [[127798, 127798], "valid", [], "NV8"], [[127799, 127868], "valid", [], "NV8"], [[127869, 127869], "valid", [], "NV8"], [[127870, 127871], "valid", [], "NV8"], [[127872, 127891], "valid", [], "NV8"], [[127892, 127903], "valid", [], "NV8"], [[127904, 127940], "valid", [], "NV8"], [[127941, 127941], "valid", [], "NV8"], [[127942, 127946], "valid", [], "NV8"], [[127947, 127950], "valid", [], "NV8"], [[127951, 127955], "valid", [], "NV8"], [[127956, 127967], "valid", [], "NV8"], [[127968, 127984], "valid", [], "NV8"], [[127985, 127991], "valid", [], "NV8"], [[127992, 127999], "valid", [], "NV8"], [[128e3, 128062], "valid", [], "NV8"], [[128063, 128063], "valid", [], "NV8"], [[128064, 128064], "valid", [], "NV8"], [[128065, 128065], "valid", [], "NV8"], [[128066, 128247], "valid", [], "NV8"], [[128248, 128248], "valid", [], "NV8"], [[128249, 128252], "valid", [], "NV8"], [[128253, 128254], "valid", [], "NV8"], [[128255, 128255], "valid", [], "NV8"], [[128256, 128317], "valid", [], "NV8"], [[128318, 128319], "valid", [], "NV8"], [[128320, 128323], "valid", [], "NV8"], [[128324, 128330], "valid", [], "NV8"], [[128331, 128335], "valid", [], "NV8"], [[128336, 128359], "valid", [], "NV8"], [[128360, 128377], "valid", [], "NV8"], [[128378, 128378], "disallowed"], [[128379, 128419], "valid", [], "NV8"], [[128420, 128420], "disallowed"], [[128421, 128506], "valid", [], "NV8"], [[128507, 128511], "valid", [], "NV8"], [[128512, 128512], "valid", [], "NV8"], [[128513, 128528], "valid", [], "NV8"], [[128529, 128529], "valid", [], "NV8"], [[128530, 128532], "valid", [], "NV8"], [[128533, 128533], "valid", [], "NV8"], [[128534, 128534], "valid", [], "NV8"], [[128535, 128535], "valid", [], "NV8"], [[128536, 128536], "valid", [], "NV8"], [[128537, 128537], "valid", [], "NV8"], [[128538, 128538], "valid", [], "NV8"], [[128539, 128539], "valid", [], "NV8"], [[128540, 128542], "valid", [], "NV8"], [[128543, 128543], "valid", [], "NV8"], [[128544, 128549], "valid", [], "NV8"], [[128550, 128551], "valid", [], "NV8"], [[128552, 128555], "valid", [], "NV8"], [[128556, 128556], "valid", [], "NV8"], [[128557, 128557], "valid", [], "NV8"], [[128558, 128559], "valid", [], "NV8"], [[128560, 128563], "valid", [], "NV8"], [[128564, 128564], "valid", [], "NV8"], [[128565, 128576], "valid", [], "NV8"], [[128577, 128578], "valid", [], "NV8"], [[128579, 128580], "valid", [], "NV8"], [[128581, 128591], "valid", [], "NV8"], [[128592, 128639], "valid", [], "NV8"], [[128640, 128709], "valid", [], "NV8"], [[128710, 128719], "valid", [], "NV8"], [[128720, 128720], "valid", [], "NV8"], [[128721, 128735], "disallowed"], [[128736, 128748], "valid", [], "NV8"], [[128749, 128751], "disallowed"], [[128752, 128755], "valid", [], "NV8"], [[128756, 128767], "disallowed"], [[128768, 128883], "valid", [], "NV8"], [[128884, 128895], "disallowed"], [[128896, 128980], "valid", [], "NV8"], [[128981, 129023], "disallowed"], [[129024, 129035], "valid", [], "NV8"], [[129036, 129039], "disallowed"], [[129040, 129095], "valid", [], "NV8"], [[129096, 129103], "disallowed"], [[129104, 129113], "valid", [], "NV8"], [[129114, 129119], "disallowed"], [[129120, 129159], "valid", [], "NV8"], [[129160, 129167], "disallowed"], [[129168, 129197], "valid", [], "NV8"], [[129198, 129295], "disallowed"], [[129296, 129304], "valid", [], "NV8"], [[129305, 129407], "disallowed"], [[129408, 129412], "valid", [], "NV8"], [[129413, 129471], "disallowed"], [[129472, 129472], "valid", [], "NV8"], [[129473, 131069], "disallowed"], [[131070, 131071], "disallowed"], [[131072, 173782], "valid"], [[173783, 173823], "disallowed"], [[173824, 177972], "valid"], [[177973, 177983], "disallowed"], [[177984, 178205], "valid"], [[178206, 178207], "disallowed"], [[178208, 183969], "valid"], [[183970, 194559], "disallowed"], [[194560, 194560], "mapped", [20029]], [[194561, 194561], "mapped", [20024]], [[194562, 194562], "mapped", [20033]], [[194563, 194563], "mapped", [131362]], [[194564, 194564], "mapped", [20320]], [[194565, 194565], "mapped", [20398]], [[194566, 194566], "mapped", [20411]], [[194567, 194567], "mapped", [20482]], [[194568, 194568], "mapped", [20602]], [[194569, 194569], "mapped", [20633]], [[194570, 194570], "mapped", [20711]], [[194571, 194571], "mapped", [20687]], [[194572, 194572], "mapped", [13470]], [[194573, 194573], "mapped", [132666]], [[194574, 194574], "mapped", [20813]], [[194575, 194575], "mapped", [20820]], [[194576, 194576], "mapped", [20836]], [[194577, 194577], "mapped", [20855]], [[194578, 194578], "mapped", [132380]], [[194579, 194579], "mapped", [13497]], [[194580, 194580], "mapped", [20839]], [[194581, 194581], "mapped", [20877]], [[194582, 194582], "mapped", [132427]], [[194583, 194583], "mapped", [20887]], [[194584, 194584], "mapped", [20900]], [[194585, 194585], "mapped", [20172]], [[194586, 194586], "mapped", [20908]], [[194587, 194587], "mapped", [20917]], [[194588, 194588], "mapped", [168415]], [[194589, 194589], "mapped", [20981]], [[194590, 194590], "mapped", [20995]], [[194591, 194591], "mapped", [13535]], [[194592, 194592], "mapped", [21051]], [[194593, 194593], "mapped", [21062]], [[194594, 194594], "mapped", [21106]], [[194595, 194595], "mapped", [21111]], [[194596, 194596], "mapped", [13589]], [[194597, 194597], "mapped", [21191]], [[194598, 194598], "mapped", [21193]], [[194599, 194599], "mapped", [21220]], [[194600, 194600], "mapped", [21242]], [[194601, 194601], "mapped", [21253]], [[194602, 194602], "mapped", [21254]], [[194603, 194603], "mapped", [21271]], [[194604, 194604], "mapped", [21321]], [[194605, 194605], "mapped", [21329]], [[194606, 194606], "mapped", [21338]], [[194607, 194607], "mapped", [21363]], [[194608, 194608], "mapped", [21373]], [[194609, 194611], "mapped", [21375]], [[194612, 194612], "mapped", [133676]], [[194613, 194613], "mapped", [28784]], [[194614, 194614], "mapped", [21450]], [[194615, 194615], "mapped", [21471]], [[194616, 194616], "mapped", [133987]], [[194617, 194617], "mapped", [21483]], [[194618, 194618], "mapped", [21489]], [[194619, 194619], "mapped", [21510]], [[194620, 194620], "mapped", [21662]], [[194621, 194621], "mapped", [21560]], [[194622, 194622], "mapped", [21576]], [[194623, 194623], "mapped", [21608]], [[194624, 194624], "mapped", [21666]], [[194625, 194625], "mapped", [21750]], [[194626, 194626], "mapped", [21776]], [[194627, 194627], "mapped", [21843]], [[194628, 194628], "mapped", [21859]], [[194629, 194630], "mapped", [21892]], [[194631, 194631], "mapped", [21913]], [[194632, 194632], "mapped", [21931]], [[194633, 194633], "mapped", [21939]], [[194634, 194634], "mapped", [21954]], [[194635, 194635], "mapped", [22294]], [[194636, 194636], "mapped", [22022]], [[194637, 194637], "mapped", [22295]], [[194638, 194638], "mapped", [22097]], [[194639, 194639], "mapped", [22132]], [[194640, 194640], "mapped", [20999]], [[194641, 194641], "mapped", [22766]], [[194642, 194642], "mapped", [22478]], [[194643, 194643], "mapped", [22516]], [[194644, 194644], "mapped", [22541]], [[194645, 194645], "mapped", [22411]], [[194646, 194646], "mapped", [22578]], [[194647, 194647], "mapped", [22577]], [[194648, 194648], "mapped", [22700]], [[194649, 194649], "mapped", [136420]], [[194650, 194650], "mapped", [22770]], [[194651, 194651], "mapped", [22775]], [[194652, 194652], "mapped", [22790]], [[194653, 194653], "mapped", [22810]], [[194654, 194654], "mapped", [22818]], [[194655, 194655], "mapped", [22882]], [[194656, 194656], "mapped", [136872]], [[194657, 194657], "mapped", [136938]], [[194658, 194658], "mapped", [23020]], [[194659, 194659], "mapped", [23067]], [[194660, 194660], "mapped", [23079]], [[194661, 194661], "mapped", [23e3]], [[194662, 194662], "mapped", [23142]], [[194663, 194663], "mapped", [14062]], [[194664, 194664], "disallowed"], [[194665, 194665], "mapped", [23304]], [[194666, 194667], "mapped", [23358]], [[194668, 194668], "mapped", [137672]], [[194669, 194669], "mapped", [23491]], [[194670, 194670], "mapped", [23512]], [[194671, 194671], "mapped", [23527]], [[194672, 194672], "mapped", [23539]], [[194673, 194673], "mapped", [138008]], [[194674, 194674], "mapped", [23551]], [[194675, 194675], "mapped", [23558]], [[194676, 194676], "disallowed"], [[194677, 194677], "mapped", [23586]], [[194678, 194678], "mapped", [14209]], [[194679, 194679], "mapped", [23648]], [[194680, 194680], "mapped", [23662]], [[194681, 194681], "mapped", [23744]], [[194682, 194682], "mapped", [23693]], [[194683, 194683], "mapped", [138724]], [[194684, 194684], "mapped", [23875]], [[194685, 194685], "mapped", [138726]], [[194686, 194686], "mapped", [23918]], [[194687, 194687], "mapped", [23915]], [[194688, 194688], "mapped", [23932]], [[194689, 194689], "mapped", [24033]], [[194690, 194690], "mapped", [24034]], [[194691, 194691], "mapped", [14383]], [[194692, 194692], "mapped", [24061]], [[194693, 194693], "mapped", [24104]], [[194694, 194694], "mapped", [24125]], [[194695, 194695], "mapped", [24169]], [[194696, 194696], "mapped", [14434]], [[194697, 194697], "mapped", [139651]], [[194698, 194698], "mapped", [14460]], [[194699, 194699], "mapped", [24240]], [[194700, 194700], "mapped", [24243]], [[194701, 194701], "mapped", [24246]], [[194702, 194702], "mapped", [24266]], [[194703, 194703], "mapped", [172946]], [[194704, 194704], "mapped", [24318]], [[194705, 194706], "mapped", [140081]], [[194707, 194707], "mapped", [33281]], [[194708, 194709], "mapped", [24354]], [[194710, 194710], "mapped", [14535]], [[194711, 194711], "mapped", [144056]], [[194712, 194712], "mapped", [156122]], [[194713, 194713], "mapped", [24418]], [[194714, 194714], "mapped", [24427]], [[194715, 194715], "mapped", [14563]], [[194716, 194716], "mapped", [24474]], [[194717, 194717], "mapped", [24525]], [[194718, 194718], "mapped", [24535]], [[194719, 194719], "mapped", [24569]], [[194720, 194720], "mapped", [24705]], [[194721, 194721], "mapped", [14650]], [[194722, 194722], "mapped", [14620]], [[194723, 194723], "mapped", [24724]], [[194724, 194724], "mapped", [141012]], [[194725, 194725], "mapped", [24775]], [[194726, 194726], "mapped", [24904]], [[194727, 194727], "mapped", [24908]], [[194728, 194728], "mapped", [24910]], [[194729, 194729], "mapped", [24908]], [[194730, 194730], "mapped", [24954]], [[194731, 194731], "mapped", [24974]], [[194732, 194732], "mapped", [25010]], [[194733, 194733], "mapped", [24996]], [[194734, 194734], "mapped", [25007]], [[194735, 194735], "mapped", [25054]], [[194736, 194736], "mapped", [25074]], [[194737, 194737], "mapped", [25078]], [[194738, 194738], "mapped", [25104]], [[194739, 194739], "mapped", [25115]], [[194740, 194740], "mapped", [25181]], [[194741, 194741], "mapped", [25265]], [[194742, 194742], "mapped", [25300]], [[194743, 194743], "mapped", [25424]], [[194744, 194744], "mapped", [142092]], [[194745, 194745], "mapped", [25405]], [[194746, 194746], "mapped", [25340]], [[194747, 194747], "mapped", [25448]], [[194748, 194748], "mapped", [25475]], [[194749, 194749], "mapped", [25572]], [[194750, 194750], "mapped", [142321]], [[194751, 194751], "mapped", [25634]], [[194752, 194752], "mapped", [25541]], [[194753, 194753], "mapped", [25513]], [[194754, 194754], "mapped", [14894]], [[194755, 194755], "mapped", [25705]], [[194756, 194756], "mapped", [25726]], [[194757, 194757], "mapped", [25757]], [[194758, 194758], "mapped", [25719]], [[194759, 194759], "mapped", [14956]], [[194760, 194760], "mapped", [25935]], [[194761, 194761], "mapped", [25964]], [[194762, 194762], "mapped", [143370]], [[194763, 194763], "mapped", [26083]], [[194764, 194764], "mapped", [26360]], [[194765, 194765], "mapped", [26185]], [[194766, 194766], "mapped", [15129]], [[194767, 194767], "mapped", [26257]], [[194768, 194768], "mapped", [15112]], [[194769, 194769], "mapped", [15076]], [[194770, 194770], "mapped", [20882]], [[194771, 194771], "mapped", [20885]], [[194772, 194772], "mapped", [26368]], [[194773, 194773], "mapped", [26268]], [[194774, 194774], "mapped", [32941]], [[194775, 194775], "mapped", [17369]], [[194776, 194776], "mapped", [26391]], [[194777, 194777], "mapped", [26395]], [[194778, 194778], "mapped", [26401]], [[194779, 194779], "mapped", [26462]], [[194780, 194780], "mapped", [26451]], [[194781, 194781], "mapped", [144323]], [[194782, 194782], "mapped", [15177]], [[194783, 194783], "mapped", [26618]], [[194784, 194784], "mapped", [26501]], [[194785, 194785], "mapped", [26706]], [[194786, 194786], "mapped", [26757]], [[194787, 194787], "mapped", [144493]], [[194788, 194788], "mapped", [26766]], [[194789, 194789], "mapped", [26655]], [[194790, 194790], "mapped", [26900]], [[194791, 194791], "mapped", [15261]], [[194792, 194792], "mapped", [26946]], [[194793, 194793], "mapped", [27043]], [[194794, 194794], "mapped", [27114]], [[194795, 194795], "mapped", [27304]], [[194796, 194796], "mapped", [145059]], [[194797, 194797], "mapped", [27355]], [[194798, 194798], "mapped", [15384]], [[194799, 194799], "mapped", [27425]], [[194800, 194800], "mapped", [145575]], [[194801, 194801], "mapped", [27476]], [[194802, 194802], "mapped", [15438]], [[194803, 194803], "mapped", [27506]], [[194804, 194804], "mapped", [27551]], [[194805, 194805], "mapped", [27578]], [[194806, 194806], "mapped", [27579]], [[194807, 194807], "mapped", [146061]], [[194808, 194808], "mapped", [138507]], [[194809, 194809], "mapped", [146170]], [[194810, 194810], "mapped", [27726]], [[194811, 194811], "mapped", [146620]], [[194812, 194812], "mapped", [27839]], [[194813, 194813], "mapped", [27853]], [[194814, 194814], "mapped", [27751]], [[194815, 194815], "mapped", [27926]], [[194816, 194816], "mapped", [27966]], [[194817, 194817], "mapped", [28023]], [[194818, 194818], "mapped", [27969]], [[194819, 194819], "mapped", [28009]], [[194820, 194820], "mapped", [28024]], [[194821, 194821], "mapped", [28037]], [[194822, 194822], "mapped", [146718]], [[194823, 194823], "mapped", [27956]], [[194824, 194824], "mapped", [28207]], [[194825, 194825], "mapped", [28270]], [[194826, 194826], "mapped", [15667]], [[194827, 194827], "mapped", [28363]], [[194828, 194828], "mapped", [28359]], [[194829, 194829], "mapped", [147153]], [[194830, 194830], "mapped", [28153]], [[194831, 194831], "mapped", [28526]], [[194832, 194832], "mapped", [147294]], [[194833, 194833], "mapped", [147342]], [[194834, 194834], "mapped", [28614]], [[194835, 194835], "mapped", [28729]], [[194836, 194836], "mapped", [28702]], [[194837, 194837], "mapped", [28699]], [[194838, 194838], "mapped", [15766]], [[194839, 194839], "mapped", [28746]], [[194840, 194840], "mapped", [28797]], [[194841, 194841], "mapped", [28791]], [[194842, 194842], "mapped", [28845]], [[194843, 194843], "mapped", [132389]], [[194844, 194844], "mapped", [28997]], [[194845, 194845], "mapped", [148067]], [[194846, 194846], "mapped", [29084]], [[194847, 194847], "disallowed"], [[194848, 194848], "mapped", [29224]], [[194849, 194849], "mapped", [29237]], [[194850, 194850], "mapped", [29264]], [[194851, 194851], "mapped", [149e3]], [[194852, 194852], "mapped", [29312]], [[194853, 194853], "mapped", [29333]], [[194854, 194854], "mapped", [149301]], [[194855, 194855], "mapped", [149524]], [[194856, 194856], "mapped", [29562]], [[194857, 194857], "mapped", [29579]], [[194858, 194858], "mapped", [16044]], [[194859, 194859], "mapped", [29605]], [[194860, 194861], "mapped", [16056]], [[194862, 194862], "mapped", [29767]], [[194863, 194863], "mapped", [29788]], [[194864, 194864], "mapped", [29809]], [[194865, 194865], "mapped", [29829]], [[194866, 194866], "mapped", [29898]], [[194867, 194867], "mapped", [16155]], [[194868, 194868], "mapped", [29988]], [[194869, 194869], "mapped", [150582]], [[194870, 194870], "mapped", [30014]], [[194871, 194871], "mapped", [150674]], [[194872, 194872], "mapped", [30064]], [[194873, 194873], "mapped", [139679]], [[194874, 194874], "mapped", [30224]], [[194875, 194875], "mapped", [151457]], [[194876, 194876], "mapped", [151480]], [[194877, 194877], "mapped", [151620]], [[194878, 194878], "mapped", [16380]], [[194879, 194879], "mapped", [16392]], [[194880, 194880], "mapped", [30452]], [[194881, 194881], "mapped", [151795]], [[194882, 194882], "mapped", [151794]], [[194883, 194883], "mapped", [151833]], [[194884, 194884], "mapped", [151859]], [[194885, 194885], "mapped", [30494]], [[194886, 194887], "mapped", [30495]], [[194888, 194888], "mapped", [30538]], [[194889, 194889], "mapped", [16441]], [[194890, 194890], "mapped", [30603]], [[194891, 194891], "mapped", [16454]], [[194892, 194892], "mapped", [16534]], [[194893, 194893], "mapped", [152605]], [[194894, 194894], "mapped", [30798]], [[194895, 194895], "mapped", [30860]], [[194896, 194896], "mapped", [30924]], [[194897, 194897], "mapped", [16611]], [[194898, 194898], "mapped", [153126]], [[194899, 194899], "mapped", [31062]], [[194900, 194900], "mapped", [153242]], [[194901, 194901], "mapped", [153285]], [[194902, 194902], "mapped", [31119]], [[194903, 194903], "mapped", [31211]], [[194904, 194904], "mapped", [16687]], [[194905, 194905], "mapped", [31296]], [[194906, 194906], "mapped", [31306]], [[194907, 194907], "mapped", [31311]], [[194908, 194908], "mapped", [153980]], [[194909, 194910], "mapped", [154279]], [[194911, 194911], "disallowed"], [[194912, 194912], "mapped", [16898]], [[194913, 194913], "mapped", [154539]], [[194914, 194914], "mapped", [31686]], [[194915, 194915], "mapped", [31689]], [[194916, 194916], "mapped", [16935]], [[194917, 194917], "mapped", [154752]], [[194918, 194918], "mapped", [31954]], [[194919, 194919], "mapped", [17056]], [[194920, 194920], "mapped", [31976]], [[194921, 194921], "mapped", [31971]], [[194922, 194922], "mapped", [32e3]], [[194923, 194923], "mapped", [155526]], [[194924, 194924], "mapped", [32099]], [[194925, 194925], "mapped", [17153]], [[194926, 194926], "mapped", [32199]], [[194927, 194927], "mapped", [32258]], [[194928, 194928], "mapped", [32325]], [[194929, 194929], "mapped", [17204]], [[194930, 194930], "mapped", [156200]], [[194931, 194931], "mapped", [156231]], [[194932, 194932], "mapped", [17241]], [[194933, 194933], "mapped", [156377]], [[194934, 194934], "mapped", [32634]], [[194935, 194935], "mapped", [156478]], [[194936, 194936], "mapped", [32661]], [[194937, 194937], "mapped", [32762]], [[194938, 194938], "mapped", [32773]], [[194939, 194939], "mapped", [156890]], [[194940, 194940], "mapped", [156963]], [[194941, 194941], "mapped", [32864]], [[194942, 194942], "mapped", [157096]], [[194943, 194943], "mapped", [32880]], [[194944, 194944], "mapped", [144223]], [[194945, 194945], "mapped", [17365]], [[194946, 194946], "mapped", [32946]], [[194947, 194947], "mapped", [33027]], [[194948, 194948], "mapped", [17419]], [[194949, 194949], "mapped", [33086]], [[194950, 194950], "mapped", [23221]], [[194951, 194951], "mapped", [157607]], [[194952, 194952], "mapped", [157621]], [[194953, 194953], "mapped", [144275]], [[194954, 194954], "mapped", [144284]], [[194955, 194955], "mapped", [33281]], [[194956, 194956], "mapped", [33284]], [[194957, 194957], "mapped", [36766]], [[194958, 194958], "mapped", [17515]], [[194959, 194959], "mapped", [33425]], [[194960, 194960], "mapped", [33419]], [[194961, 194961], "mapped", [33437]], [[194962, 194962], "mapped", [21171]], [[194963, 194963], "mapped", [33457]], [[194964, 194964], "mapped", [33459]], [[194965, 194965], "mapped", [33469]], [[194966, 194966], "mapped", [33510]], [[194967, 194967], "mapped", [158524]], [[194968, 194968], "mapped", [33509]], [[194969, 194969], "mapped", [33565]], [[194970, 194970], "mapped", [33635]], [[194971, 194971], "mapped", [33709]], [[194972, 194972], "mapped", [33571]], [[194973, 194973], "mapped", [33725]], [[194974, 194974], "mapped", [33767]], [[194975, 194975], "mapped", [33879]], [[194976, 194976], "mapped", [33619]], [[194977, 194977], "mapped", [33738]], [[194978, 194978], "mapped", [33740]], [[194979, 194979], "mapped", [33756]], [[194980, 194980], "mapped", [158774]], [[194981, 194981], "mapped", [159083]], [[194982, 194982], "mapped", [158933]], [[194983, 194983], "mapped", [17707]], [[194984, 194984], "mapped", [34033]], [[194985, 194985], "mapped", [34035]], [[194986, 194986], "mapped", [34070]], [[194987, 194987], "mapped", [160714]], [[194988, 194988], "mapped", [34148]], [[194989, 194989], "mapped", [159532]], [[194990, 194990], "mapped", [17757]], [[194991, 194991], "mapped", [17761]], [[194992, 194992], "mapped", [159665]], [[194993, 194993], "mapped", [159954]], [[194994, 194994], "mapped", [17771]], [[194995, 194995], "mapped", [34384]], [[194996, 194996], "mapped", [34396]], [[194997, 194997], "mapped", [34407]], [[194998, 194998], "mapped", [34409]], [[194999, 194999], "mapped", [34473]], [[195e3, 195e3], "mapped", [34440]], [[195001, 195001], "mapped", [34574]], [[195002, 195002], "mapped", [34530]], [[195003, 195003], "mapped", [34681]], [[195004, 195004], "mapped", [34600]], [[195005, 195005], "mapped", [34667]], [[195006, 195006], "mapped", [34694]], [[195007, 195007], "disallowed"], [[195008, 195008], "mapped", [34785]], [[195009, 195009], "mapped", [34817]], [[195010, 195010], "mapped", [17913]], [[195011, 195011], "mapped", [34912]], [[195012, 195012], "mapped", [34915]], [[195013, 195013], "mapped", [161383]], [[195014, 195014], "mapped", [35031]], [[195015, 195015], "mapped", [35038]], [[195016, 195016], "mapped", [17973]], [[195017, 195017], "mapped", [35066]], [[195018, 195018], "mapped", [13499]], [[195019, 195019], "mapped", [161966]], [[195020, 195020], "mapped", [162150]], [[195021, 195021], "mapped", [18110]], [[195022, 195022], "mapped", [18119]], [[195023, 195023], "mapped", [35488]], [[195024, 195024], "mapped", [35565]], [[195025, 195025], "mapped", [35722]], [[195026, 195026], "mapped", [35925]], [[195027, 195027], "mapped", [162984]], [[195028, 195028], "mapped", [36011]], [[195029, 195029], "mapped", [36033]], [[195030, 195030], "mapped", [36123]], [[195031, 195031], "mapped", [36215]], [[195032, 195032], "mapped", [163631]], [[195033, 195033], "mapped", [133124]], [[195034, 195034], "mapped", [36299]], [[195035, 195035], "mapped", [36284]], [[195036, 195036], "mapped", [36336]], [[195037, 195037], "mapped", [133342]], [[195038, 195038], "mapped", [36564]], [[195039, 195039], "mapped", [36664]], [[195040, 195040], "mapped", [165330]], [[195041, 195041], "mapped", [165357]], [[195042, 195042], "mapped", [37012]], [[195043, 195043], "mapped", [37105]], [[195044, 195044], "mapped", [37137]], [[195045, 195045], "mapped", [165678]], [[195046, 195046], "mapped", [37147]], [[195047, 195047], "mapped", [37432]], [[195048, 195048], "mapped", [37591]], [[195049, 195049], "mapped", [37592]], [[195050, 195050], "mapped", [37500]], [[195051, 195051], "mapped", [37881]], [[195052, 195052], "mapped", [37909]], [[195053, 195053], "mapped", [166906]], [[195054, 195054], "mapped", [38283]], [[195055, 195055], "mapped", [18837]], [[195056, 195056], "mapped", [38327]], [[195057, 195057], "mapped", [167287]], [[195058, 195058], "mapped", [18918]], [[195059, 195059], "mapped", [38595]], [[195060, 195060], "mapped", [23986]], [[195061, 195061], "mapped", [38691]], [[195062, 195062], "mapped", [168261]], [[195063, 195063], "mapped", [168474]], [[195064, 195064], "mapped", [19054]], [[195065, 195065], "mapped", [19062]], [[195066, 195066], "mapped", [38880]], [[195067, 195067], "mapped", [168970]], [[195068, 195068], "mapped", [19122]], [[195069, 195069], "mapped", [169110]], [[195070, 195071], "mapped", [38923]], [[195072, 195072], "mapped", [38953]], [[195073, 195073], "mapped", [169398]], [[195074, 195074], "mapped", [39138]], [[195075, 195075], "mapped", [19251]], [[195076, 195076], "mapped", [39209]], [[195077, 195077], "mapped", [39335]], [[195078, 195078], "mapped", [39362]], [[195079, 195079], "mapped", [39422]], [[195080, 195080], "mapped", [19406]], [[195081, 195081], "mapped", [170800]], [[195082, 195082], "mapped", [39698]], [[195083, 195083], "mapped", [4e4]], [[195084, 195084], "mapped", [40189]], [[195085, 195085], "mapped", [19662]], [[195086, 195086], "mapped", [19693]], [[195087, 195087], "mapped", [40295]], [[195088, 195088], "mapped", [172238]], [[195089, 195089], "mapped", [19704]], [[195090, 195090], "mapped", [172293]], [[195091, 195091], "mapped", [172558]], [[195092, 195092], "mapped", [172689]], [[195093, 195093], "mapped", [40635]], [[195094, 195094], "mapped", [19798]], [[195095, 195095], "mapped", [40697]], [[195096, 195096], "mapped", [40702]], [[195097, 195097], "mapped", [40709]], [[195098, 195098], "mapped", [40719]], [[195099, 195099], "mapped", [40726]], [[195100, 195100], "mapped", [40763]], [[195101, 195101], "mapped", [173568]], [[195102, 196605], "disallowed"], [[196606, 196607], "disallowed"], [[196608, 262141], "disallowed"], [[262142, 262143], "disallowed"], [[262144, 327677], "disallowed"], [[327678, 327679], "disallowed"], [[327680, 393213], "disallowed"], [[393214, 393215], "disallowed"], [[393216, 458749], "disallowed"], [[458750, 458751], "disallowed"], [[458752, 524285], "disallowed"], [[524286, 524287], "disallowed"], [[524288, 589821], "disallowed"], [[589822, 589823], "disallowed"], [[589824, 655357], "disallowed"], [[655358, 655359], "disallowed"], [[655360, 720893], "disallowed"], [[720894, 720895], "disallowed"], [[720896, 786429], "disallowed"], [[786430, 786431], "disallowed"], [[786432, 851965], "disallowed"], [[851966, 851967], "disallowed"], [[851968, 917501], "disallowed"], [[917502, 917503], "disallowed"], [[917504, 917504], "disallowed"], [[917505, 917505], "disallowed"], [[917506, 917535], "disallowed"], [[917536, 917631], "disallowed"], [[917632, 917759], "disallowed"], [[917760, 917999], "ignored"], [[918e3, 983037], "disallowed"], [[983038, 983039], "disallowed"], [[983040, 1048573], "disallowed"], [[1048574, 1048575], "disallowed"], [[1048576, 1114109], "disallowed"], [[1114110, 1114111], "disallowed"]];
  }
});

// ../../node_modules/tr46/index.js
var require_tr46 = __commonJS({
  "../../node_modules/tr46/index.js"(exports2, module2) {
    "use strict";
    var punycode = require("punycode");
    var mappingTable = require_mappingTable();
    var PROCESSING_OPTIONS = {
      TRANSITIONAL: 0,
      NONTRANSITIONAL: 1
    };
    function normalize6(str2) {
      return str2.split("\0").map(function(s5) {
        return s5.normalize("NFC");
      }).join("\0");
    }
    function findStatus(val) {
      var start = 0;
      var end = mappingTable.length - 1;
      while (start <= end) {
        var mid = Math.floor((start + end) / 2);
        var target = mappingTable[mid];
        if (target[0][0] <= val && target[0][1] >= val) {
          return target;
        } else if (target[0][0] > val) {
          end = mid - 1;
        } else {
          start = mid + 1;
        }
      }
      return null;
    }
    var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
    function countSymbols(string2) {
      return string2.replace(regexAstralSymbols, "_").length;
    }
    function mapChars(domain_name, useSTD3, processing_option) {
      var hasError = false;
      var processed = "";
      var len = countSymbols(domain_name);
      for (var i2 = 0; i2 < len; ++i2) {
        var codePoint = domain_name.codePointAt(i2);
        var status = findStatus(codePoint);
        switch (status[1]) {
          case "disallowed":
            hasError = true;
            processed += String.fromCodePoint(codePoint);
            break;
          case "ignored":
            break;
          case "mapped":
            processed += String.fromCodePoint.apply(String, status[2]);
            break;
          case "deviation":
            if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {
              processed += String.fromCodePoint.apply(String, status[2]);
            } else {
              processed += String.fromCodePoint(codePoint);
            }
            break;
          case "valid":
            processed += String.fromCodePoint(codePoint);
            break;
          case "disallowed_STD3_mapped":
            if (useSTD3) {
              hasError = true;
              processed += String.fromCodePoint(codePoint);
            } else {
              processed += String.fromCodePoint.apply(String, status[2]);
            }
            break;
          case "disallowed_STD3_valid":
            if (useSTD3) {
              hasError = true;
            }
            processed += String.fromCodePoint(codePoint);
            break;
        }
      }
      return {
        string: processed,
        error: hasError
      };
    }
    var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/;
    function validateLabel(label, processing_option) {
      if (label.substr(0, 4) === "xn--") {
        label = punycode.toUnicode(label);
        processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;
      }
      var error = false;
      if (normalize6(label) !== label || label[3] === "-" && label[4] === "-" || label[0] === "-" || label[label.length - 1] === "-" || label.indexOf(".") !== -1 || label.search(combiningMarksRegex) === 0) {
        error = true;
      }
      var len = countSymbols(label);
      for (var i2 = 0; i2 < len; ++i2) {
        var status = findStatus(label.codePointAt(i2));
        if (processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid" || processing === PROCESSING_OPTIONS.NONTRANSITIONAL && status[1] !== "valid" && status[1] !== "deviation") {
          error = true;
          break;
        }
      }
      return {
        label,
        error
      };
    }
    function processing(domain_name, useSTD3, processing_option) {
      var result = mapChars(domain_name, useSTD3, processing_option);
      result.string = normalize6(result.string);
      var labels = result.string.split(".");
      for (var i2 = 0; i2 < labels.length; ++i2) {
        try {
          var validation = validateLabel(labels[i2]);
          labels[i2] = validation.label;
          result.error = result.error || validation.error;
        } catch (e2) {
          result.error = true;
        }
      }
      return {
        string: labels.join("."),
        error: result.error
      };
    }
    module2.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {
      var result = processing(domain_name, useSTD3, processing_option);
      var labels = result.string.split(".");
      labels = labels.map(function(l) {
        try {
          return punycode.toASCII(l);
        } catch (e2) {
          result.error = true;
          return l;
        }
      });
      if (verifyDnsLength) {
        var total = labels.slice(0, labels.length - 1).join(".").length;
        if (total.length > 253 || total.length === 0) {
          result.error = true;
        }
        for (var i2 = 0; i2 < labels.length; ++i2) {
          if (labels.length > 63 || labels.length === 0) {
            result.error = true;
            break;
          }
        }
      }
      if (result.error) return null;
      return labels.join(".");
    };
    module2.exports.toUnicode = function(domain_name, useSTD3) {
      var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);
      return {
        domain: result.string,
        error: result.error
      };
    };
    module2.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;
  }
});

// ../../node_modules/whatwg-url/lib/url-state-machine.js
var require_url_state_machine = __commonJS({
  "../../node_modules/whatwg-url/lib/url-state-machine.js"(exports2, module2) {
    "use strict";
    var punycode = require("punycode");
    var tr46 = require_tr46();
    var specialSchemes = {
      ftp: 21,
      file: null,
      gopher: 70,
      http: 80,
      https: 443,
      ws: 80,
      wss: 443
    };
    var failure = Symbol("failure");
    function countSymbols(str2) {
      return punycode.ucs2.decode(str2).length;
    }
    function at(input3, idx) {
      const c = input3[idx];
      return isNaN(c) ? void 0 : String.fromCodePoint(c);
    }
    function isASCIIDigit(c) {
      return c >= 48 && c <= 57;
    }
    function isASCIIAlpha(c) {
      return c >= 65 && c <= 90 || c >= 97 && c <= 122;
    }
    function isASCIIAlphanumeric(c) {
      return isASCIIAlpha(c) || isASCIIDigit(c);
    }
    function isASCIIHex(c) {
      return isASCIIDigit(c) || c >= 65 && c <= 70 || c >= 97 && c <= 102;
    }
    function isSingleDot(buffer2) {
      return buffer2 === "." || buffer2.toLowerCase() === "%2e";
    }
    function isDoubleDot(buffer2) {
      buffer2 = buffer2.toLowerCase();
      return buffer2 === ".." || buffer2 === "%2e." || buffer2 === ".%2e" || buffer2 === "%2e%2e";
    }
    function isWindowsDriveLetterCodePoints(cp1, cp2) {
      return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);
    }
    function isWindowsDriveLetterString(string2) {
      return string2.length === 2 && isASCIIAlpha(string2.codePointAt(0)) && (string2[1] === ":" || string2[1] === "|");
    }
    function isNormalizedWindowsDriveLetterString(string2) {
      return string2.length === 2 && isASCIIAlpha(string2.codePointAt(0)) && string2[1] === ":";
    }
    function containsForbiddenHostCodePoint(string2) {
      return string2.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1;
    }
    function containsForbiddenHostCodePointExcludingPercent(string2) {
      return string2.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1;
    }
    function isSpecialScheme(scheme) {
      return specialSchemes[scheme] !== void 0;
    }
    function isSpecial(url) {
      return isSpecialScheme(url.scheme);
    }
    function defaultPort(scheme) {
      return specialSchemes[scheme];
    }
    function percentEncode(c) {
      let hex = c.toString(16).toUpperCase();
      if (hex.length === 1) {
        hex = "0" + hex;
      }
      return "%" + hex;
    }
    function utf8PercentEncode(c) {
      const buf = new Buffer(c);
      let str2 = "";
      for (let i2 = 0; i2 < buf.length; ++i2) {
        str2 += percentEncode(buf[i2]);
      }
      return str2;
    }
    function utf8PercentDecode(str2) {
      const input3 = new Buffer(str2);
      const output2 = [];
      for (let i2 = 0; i2 < input3.length; ++i2) {
        if (input3[i2] !== 37) {
          output2.push(input3[i2]);
        } else if (input3[i2] === 37 && isASCIIHex(input3[i2 + 1]) && isASCIIHex(input3[i2 + 2])) {
          output2.push(parseInt(input3.slice(i2 + 1, i2 + 3).toString(), 16));
          i2 += 2;
        } else {
          output2.push(input3[i2]);
        }
      }
      return new Buffer(output2).toString();
    }
    function isC0ControlPercentEncode(c) {
      return c <= 31 || c > 126;
    }
    var extraPathPercentEncodeSet = /* @__PURE__ */ new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);
    function isPathPercentEncode(c) {
      return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);
    }
    var extraUserinfoPercentEncodeSet = /* @__PURE__ */ new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);
    function isUserinfoPercentEncode(c) {
      return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);
    }
    function percentEncodeChar(c, encodeSetPredicate) {
      const cStr = String.fromCodePoint(c);
      if (encodeSetPredicate(c)) {
        return utf8PercentEncode(cStr);
      }
      return cStr;
    }
    function parseIPv4Number(input3) {
      let R = 10;
      if (input3.length >= 2 && input3.charAt(0) === "0" && input3.charAt(1).toLowerCase() === "x") {
        input3 = input3.substring(2);
        R = 16;
      } else if (input3.length >= 2 && input3.charAt(0) === "0") {
        input3 = input3.substring(1);
        R = 8;
      }
      if (input3 === "") {
        return 0;
      }
      const regex2 = R === 10 ? /[^0-9]/ : R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/;
      if (regex2.test(input3)) {
        return failure;
      }
      return parseInt(input3, R);
    }
    function parseIPv4(input3) {
      const parts = input3.split(".");
      if (parts[parts.length - 1] === "") {
        if (parts.length > 1) {
          parts.pop();
        }
      }
      if (parts.length > 4) {
        return input3;
      }
      const numbers2 = [];
      for (const part of parts) {
        if (part === "") {
          return input3;
        }
        const n = parseIPv4Number(part);
        if (n === failure) {
          return input3;
        }
        numbers2.push(n);
      }
      for (let i2 = 0; i2 < numbers2.length - 1; ++i2) {
        if (numbers2[i2] > 255) {
          return failure;
        }
      }
      if (numbers2[numbers2.length - 1] >= Math.pow(256, 5 - numbers2.length)) {
        return failure;
      }
      let ipv4 = numbers2.pop();
      let counter = 0;
      for (const n of numbers2) {
        ipv4 += n * Math.pow(256, 3 - counter);
        ++counter;
      }
      return ipv4;
    }
    function serializeIPv4(address) {
      let output2 = "";
      let n = address;
      for (let i2 = 1; i2 <= 4; ++i2) {
        output2 = String(n % 256) + output2;
        if (i2 !== 4) {
          output2 = "." + output2;
        }
        n = Math.floor(n / 256);
      }
      return output2;
    }
    function parseIPv6(input3) {
      const address = [0, 0, 0, 0, 0, 0, 0, 0];
      let pieceIndex = 0;
      let compress = null;
      let pointer = 0;
      input3 = punycode.ucs2.decode(input3);
      if (input3[pointer] === 58) {
        if (input3[pointer + 1] !== 58) {
          return failure;
        }
        pointer += 2;
        ++pieceIndex;
        compress = pieceIndex;
      }
      while (pointer < input3.length) {
        if (pieceIndex === 8) {
          return failure;
        }
        if (input3[pointer] === 58) {
          if (compress !== null) {
            return failure;
          }
          ++pointer;
          ++pieceIndex;
          compress = pieceIndex;
          continue;
        }
        let value = 0;
        let length = 0;
        while (length < 4 && isASCIIHex(input3[pointer])) {
          value = value * 16 + parseInt(at(input3, pointer), 16);
          ++pointer;
          ++length;
        }
        if (input3[pointer] === 46) {
          if (length === 0) {
            return failure;
          }
          pointer -= length;
          if (pieceIndex > 6) {
            return failure;
          }
          let numbersSeen = 0;
          while (input3[pointer] !== void 0) {
            let ipv4Piece = null;
            if (numbersSeen > 0) {
              if (input3[pointer] === 46 && numbersSeen < 4) {
                ++pointer;
              } else {
                return failure;
              }
            }
            if (!isASCIIDigit(input3[pointer])) {
              return failure;
            }
            while (isASCIIDigit(input3[pointer])) {
              const number2 = parseInt(at(input3, pointer));
              if (ipv4Piece === null) {
                ipv4Piece = number2;
              } else if (ipv4Piece === 0) {
                return failure;
              } else {
                ipv4Piece = ipv4Piece * 10 + number2;
              }
              if (ipv4Piece > 255) {
                return failure;
              }
              ++pointer;
            }
            address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;
            ++numbersSeen;
            if (numbersSeen === 2 || numbersSeen === 4) {
              ++pieceIndex;
            }
          }
          if (numbersSeen !== 4) {
            return failure;
          }
          break;
        } else if (input3[pointer] === 58) {
          ++pointer;
          if (input3[pointer] === void 0) {
            return failure;
          }
        } else if (input3[pointer] !== void 0) {
          return failure;
        }
        address[pieceIndex] = value;
        ++pieceIndex;
      }
      if (compress !== null) {
        let swaps = pieceIndex - compress;
        pieceIndex = 7;
        while (pieceIndex !== 0 && swaps > 0) {
          const temp = address[compress + swaps - 1];
          address[compress + swaps - 1] = address[pieceIndex];
          address[pieceIndex] = temp;
          --pieceIndex;
          --swaps;
        }
      } else if (compress === null && pieceIndex !== 8) {
        return failure;
      }
      return address;
    }
    function serializeIPv6(address) {
      let output2 = "";
      const seqResult = findLongestZeroSequence(address);
      const compress = seqResult.idx;
      let ignore0 = false;
      for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {
        if (ignore0 && address[pieceIndex] === 0) {
          continue;
        } else if (ignore0) {
          ignore0 = false;
        }
        if (compress === pieceIndex) {
          const separator = pieceIndex === 0 ? "::" : ":";
          output2 += separator;
          ignore0 = true;
          continue;
        }
        output2 += address[pieceIndex].toString(16);
        if (pieceIndex !== 7) {
          output2 += ":";
        }
      }
      return output2;
    }
    function parseHost(input3, isSpecialArg) {
      if (input3[0] === "[") {
        if (input3[input3.length - 1] !== "]") {
          return failure;
        }
        return parseIPv6(input3.substring(1, input3.length - 1));
      }
      if (!isSpecialArg) {
        return parseOpaqueHost(input3);
      }
      const domain = utf8PercentDecode(input3);
      const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);
      if (asciiDomain === null) {
        return failure;
      }
      if (containsForbiddenHostCodePoint(asciiDomain)) {
        return failure;
      }
      const ipv4Host = parseIPv4(asciiDomain);
      if (typeof ipv4Host === "number" || ipv4Host === failure) {
        return ipv4Host;
      }
      return asciiDomain;
    }
    function parseOpaqueHost(input3) {
      if (containsForbiddenHostCodePointExcludingPercent(input3)) {
        return failure;
      }
      let output2 = "";
      const decoded = punycode.ucs2.decode(input3);
      for (let i2 = 0; i2 < decoded.length; ++i2) {
        output2 += percentEncodeChar(decoded[i2], isC0ControlPercentEncode);
      }
      return output2;
    }
    function findLongestZeroSequence(arr) {
      let maxIdx = null;
      let maxLen = 1;
      let currStart = null;
      let currLen = 0;
      for (let i2 = 0; i2 < arr.length; ++i2) {
        if (arr[i2] !== 0) {
          if (currLen > maxLen) {
            maxIdx = currStart;
            maxLen = currLen;
          }
          currStart = null;
          currLen = 0;
        } else {
          if (currStart === null) {
            currStart = i2;
          }
          ++currLen;
        }
      }
      if (currLen > maxLen) {
        maxIdx = currStart;
        maxLen = currLen;
      }
      return {
        idx: maxIdx,
        len: maxLen
      };
    }
    function serializeHost(host) {
      if (typeof host === "number") {
        return serializeIPv4(host);
      }
      if (host instanceof Array) {
        return "[" + serializeIPv6(host) + "]";
      }
      return host;
    }
    function trimControlChars(url) {
      return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, "");
    }
    function trimTabAndNewline(url) {
      return url.replace(/\u0009|\u000A|\u000D/g, "");
    }
    function shortenPath(url) {
      const path45 = url.path;
      if (path45.length === 0) {
        return;
      }
      if (url.scheme === "file" && path45.length === 1 && isNormalizedWindowsDriveLetter(path45[0])) {
        return;
      }
      path45.pop();
    }
    function includesCredentials(url) {
      return url.username !== "" || url.password !== "";
    }
    function cannotHaveAUsernamePasswordPort(url) {
      return url.host === null || url.host === "" || url.cannotBeABaseURL || url.scheme === "file";
    }
    function isNormalizedWindowsDriveLetter(string2) {
      return /^[A-Za-z]:$/.test(string2);
    }
    function URLStateMachine(input3, base5, encodingOverride, url, stateOverride) {
      this.pointer = 0;
      this.input = input3;
      this.base = base5 || null;
      this.encodingOverride = encodingOverride || "utf-8";
      this.stateOverride = stateOverride;
      this.url = url;
      this.failure = false;
      this.parseError = false;
      if (!this.url) {
        this.url = {
          scheme: "",
          username: "",
          password: "",
          host: null,
          port: null,
          path: [],
          query: null,
          fragment: null,
          cannotBeABaseURL: false
        };
        const res2 = trimControlChars(this.input);
        if (res2 !== this.input) {
          this.parseError = true;
        }
        this.input = res2;
      }
      const res = trimTabAndNewline(this.input);
      if (res !== this.input) {
        this.parseError = true;
      }
      this.input = res;
      this.state = stateOverride || "scheme start";
      this.buffer = "";
      this.atFlag = false;
      this.arrFlag = false;
      this.passwordTokenSeenFlag = false;
      this.input = punycode.ucs2.decode(this.input);
      for (; this.pointer <= this.input.length; ++this.pointer) {
        const c = this.input[this.pointer];
        const cStr = isNaN(c) ? void 0 : String.fromCodePoint(c);
        const ret = this["parse " + this.state](c, cStr);
        if (!ret) {
          break;
        } else if (ret === failure) {
          this.failure = true;
          break;
        }
      }
    }
    URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) {
      if (isASCIIAlpha(c)) {
        this.buffer += cStr.toLowerCase();
        this.state = "scheme";
      } else if (!this.stateOverride) {
        this.state = "no scheme";
        --this.pointer;
      } else {
        this.parseError = true;
        return failure;
      }
      return true;
    };
    URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) {
      if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {
        this.buffer += cStr.toLowerCase();
      } else if (c === 58) {
        if (this.stateOverride) {
          if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {
            return false;
          }
          if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {
            return false;
          }
          if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") {
            return false;
          }
          if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) {
            return false;
          }
        }
        this.url.scheme = this.buffer;
        this.buffer = "";
        if (this.stateOverride) {
          return false;
        }
        if (this.url.scheme === "file") {
          if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {
            this.parseError = true;
          }
          this.state = "file";
        } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {
          this.state = "special relative or authority";
        } else if (isSpecial(this.url)) {
          this.state = "special authority slashes";
        } else if (this.input[this.pointer + 1] === 47) {
          this.state = "path or authority";
          ++this.pointer;
        } else {
          this.url.cannotBeABaseURL = true;
          this.url.path.push("");
          this.state = "cannot-be-a-base-URL path";
        }
      } else if (!this.stateOverride) {
        this.buffer = "";
        this.state = "no scheme";
        this.pointer = -1;
      } else {
        this.parseError = true;
        return failure;
      }
      return true;
    };
    URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) {
      if (this.base === null || this.base.cannotBeABaseURL && c !== 35) {
        return failure;
      } else if (this.base.cannotBeABaseURL && c === 35) {
        this.url.scheme = this.base.scheme;
        this.url.path = this.base.path.slice();
        this.url.query = this.base.query;
        this.url.fragment = "";
        this.url.cannotBeABaseURL = true;
        this.state = "fragment";
      } else if (this.base.scheme === "file") {
        this.state = "file";
        --this.pointer;
      } else {
        this.state = "relative";
        --this.pointer;
      }
      return true;
    };
    URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) {
      if (c === 47 && this.input[this.pointer + 1] === 47) {
        this.state = "special authority ignore slashes";
        ++this.pointer;
      } else {
        this.parseError = true;
        this.state = "relative";
        --this.pointer;
      }
      return true;
    };
    URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) {
      if (c === 47) {
        this.state = "authority";
      } else {
        this.state = "path";
        --this.pointer;
      }
      return true;
    };
    URLStateMachine.prototype["parse relative"] = function parseRelative(c) {
      this.url.scheme = this.base.scheme;
      if (isNaN(c)) {
        this.url.username = this.base.username;
        this.url.password = this.base.password;
        this.url.host = this.base.host;
        this.url.port = this.base.port;
        this.url.path = this.base.path.slice();
        this.url.query = this.base.query;
      } else if (c === 47) {
        this.state = "relative slash";
      } else if (c === 63) {
        this.url.username = this.base.username;
        this.url.password = this.base.password;
        this.url.host = this.base.host;
        this.url.port = this.base.port;
        this.url.path = this.base.path.slice();
        this.url.query = "";
        this.state = "query";
      } else if (c === 35) {
        this.url.username = this.base.username;
        this.url.password = this.base.password;
        this.url.host = this.base.host;
        this.url.port = this.base.port;
        this.url.path = this.base.path.slice();
        this.url.query = this.base.query;
        this.url.fragment = "";
        this.state = "fragment";
      } else if (isSpecial(this.url) && c === 92) {
        this.parseError = true;
        this.state = "relative slash";
      } else {
        this.url.username = this.base.username;
        this.url.password = this.base.password;
        this.url.host = this.base.host;
        this.url.port = this.base.port;
        this.url.path = this.base.path.slice(0, this.base.path.length - 1);
        this.state = "path";
        --this.pointer;
      }
      return true;
    };
    URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) {
      if (isSpecial(this.url) && (c === 47 || c === 92)) {
        if (c === 92) {
          this.parseError = true;
        }
        this.state = "special authority ignore slashes";
      } else if (c === 47) {
        this.state = "authority";
      } else {
        this.url.username = this.base.username;
        this.url.password = this.base.password;
        this.url.host = this.base.host;
        this.url.port = this.base.port;
        this.state = "path";
        --this.pointer;
      }
      return true;
    };
    URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) {
      if (c === 47 && this.input[this.pointer + 1] === 47) {
        this.state = "special authority ignore slashes";
        ++this.pointer;
      } else {
        this.parseError = true;
        this.state = "special authority ignore slashes";
        --this.pointer;
      }
      return true;
    };
    URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) {
      if (c !== 47 && c !== 92) {
        this.state = "authority";
        --this.pointer;
      } else {
        this.parseError = true;
      }
      return true;
    };
    URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) {
      if (c === 64) {
        this.parseError = true;
        if (this.atFlag) {
          this.buffer = "%40" + this.buffer;
        }
        this.atFlag = true;
        const len = countSymbols(this.buffer);
        for (let pointer = 0; pointer < len; ++pointer) {
          const codePoint = this.buffer.codePointAt(pointer);
          if (codePoint === 58 && !this.passwordTokenSeenFlag) {
            this.passwordTokenSeenFlag = true;
            continue;
          }
          const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);
          if (this.passwordTokenSeenFlag) {
            this.url.password += encodedCodePoints;
          } else {
            this.url.username += encodedCodePoints;
          }
        }
        this.buffer = "";
      } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || isSpecial(this.url) && c === 92) {
        if (this.atFlag && this.buffer === "") {
          this.parseError = true;
          return failure;
        }
        this.pointer -= countSymbols(this.buffer) + 1;
        this.buffer = "";
        this.state = "host";
      } else {
        this.buffer += cStr;
      }
      return true;
    };
    URLStateMachine.prototype["parse hostname"] = URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) {
      if (this.stateOverride && this.url.scheme === "file") {
        --this.pointer;
        this.state = "file host";
      } else if (c === 58 && !this.arrFlag) {
        if (this.buffer === "") {
          this.parseError = true;
          return failure;
        }
        const host = parseHost(this.buffer, isSpecial(this.url));
        if (host === failure) {
          return failure;
        }
        this.url.host = host;
        this.buffer = "";
        this.state = "port";
        if (this.stateOverride === "hostname") {
          return false;
        }
      } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || isSpecial(this.url) && c === 92) {
        --this.pointer;
        if (isSpecial(this.url) && this.buffer === "") {
          this.parseError = true;
          return failure;
        } else if (this.stateOverride && this.buffer === "" && (includesCredentials(this.url) || this.url.port !== null)) {
          this.parseError = true;
          return false;
        }
        const host = parseHost(this.buffer, isSpecial(this.url));
        if (host === failure) {
          return failure;
        }
        this.url.host = host;
        this.buffer = "";
        this.state = "path start";
        if (this.stateOverride) {
          return false;
        }
      } else {
        if (c === 91) {
          this.arrFlag = true;
        } else if (c === 93) {
          this.arrFlag = false;
        }
        this.buffer += cStr;
      }
      return true;
    };
    URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) {
      if (isASCIIDigit(c)) {
        this.buffer += cStr;
      } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || isSpecial(this.url) && c === 92 || this.stateOverride) {
        if (this.buffer !== "") {
          const port = parseInt(this.buffer);
          if (port > Math.pow(2, 16) - 1) {
            this.parseError = true;
            return failure;
          }
          this.url.port = port === defaultPort(this.url.scheme) ? null : port;
          this.buffer = "";
        }
        if (this.stateOverride) {
          return false;
        }
        this.state = "path start";
        --this.pointer;
      } else {
        this.parseError = true;
        return failure;
      }
      return true;
    };
    var fileOtherwiseCodePoints = /* @__PURE__ */ new Set([47, 92, 63, 35]);
    URLStateMachine.prototype["parse file"] = function parseFile(c) {
      this.url.scheme = "file";
      if (c === 47 || c === 92) {
        if (c === 92) {
          this.parseError = true;
        }
        this.state = "file slash";
      } else if (this.base !== null && this.base.scheme === "file") {
        if (isNaN(c)) {
          this.url.host = this.base.host;
          this.url.path = this.base.path.slice();
          this.url.query = this.base.query;
        } else if (c === 63) {
          this.url.host = this.base.host;
          this.url.path = this.base.path.slice();
          this.url.query = "";
          this.state = "query";
        } else if (c === 35) {
          this.url.host = this.base.host;
          this.url.path = this.base.path.slice();
          this.url.query = this.base.query;
          this.url.fragment = "";
          this.state = "fragment";
        } else {
          if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points
          !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) || this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points
          !fileOtherwiseCodePoints.has(this.input[this.pointer + 2])) {
            this.url.host = this.base.host;
            this.url.path = this.base.path.slice();
            shortenPath(this.url);
          } else {
            this.parseError = true;
          }
          this.state = "path";
          --this.pointer;
        }
      } else {
        this.state = "path";
        --this.pointer;
      }
      return true;
    };
    URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) {
      if (c === 47 || c === 92) {
        if (c === 92) {
          this.parseError = true;
        }
        this.state = "file host";
      } else {
        if (this.base !== null && this.base.scheme === "file") {
          if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {
            this.url.path.push(this.base.path[0]);
          } else {
            this.url.host = this.base.host;
          }
        }
        this.state = "path";
        --this.pointer;
      }
      return true;
    };
    URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) {
      if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {
        --this.pointer;
        if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {
          this.parseError = true;
          this.state = "path";
        } else if (this.buffer === "") {
          this.url.host = "";
          if (this.stateOverride) {
            return false;
          }
          this.state = "path start";
        } else {
          let host = parseHost(this.buffer, isSpecial(this.url));
          if (host === failure) {
            return failure;
          }
          if (host === "localhost") {
            host = "";
          }
          this.url.host = host;
          if (this.stateOverride) {
            return false;
          }
          this.buffer = "";
          this.state = "path start";
        }
      } else {
        this.buffer += cStr;
      }
      return true;
    };
    URLStateMachine.prototype["parse path start"] = function parsePathStart(c) {
      if (isSpecial(this.url)) {
        if (c === 92) {
          this.parseError = true;
        }
        this.state = "path";
        if (c !== 47 && c !== 92) {
          --this.pointer;
        }
      } else if (!this.stateOverride && c === 63) {
        this.url.query = "";
        this.state = "query";
      } else if (!this.stateOverride && c === 35) {
        this.url.fragment = "";
        this.state = "fragment";
      } else if (c !== void 0) {
        this.state = "path";
        if (c !== 47) {
          --this.pointer;
        }
      }
      return true;
    };
    URLStateMachine.prototype["parse path"] = function parsePath(c) {
      if (isNaN(c) || c === 47 || isSpecial(this.url) && c === 92 || !this.stateOverride && (c === 63 || c === 35)) {
        if (isSpecial(this.url) && c === 92) {
          this.parseError = true;
        }
        if (isDoubleDot(this.buffer)) {
          shortenPath(this.url);
          if (c !== 47 && !(isSpecial(this.url) && c === 92)) {
            this.url.path.push("");
          }
        } else if (isSingleDot(this.buffer) && c !== 47 && !(isSpecial(this.url) && c === 92)) {
          this.url.path.push("");
        } else if (!isSingleDot(this.buffer)) {
          if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {
            if (this.url.host !== "" && this.url.host !== null) {
              this.parseError = true;
              this.url.host = "";
            }
            this.buffer = this.buffer[0] + ":";
          }
          this.url.path.push(this.buffer);
        }
        this.buffer = "";
        if (this.url.scheme === "file" && (c === void 0 || c === 63 || c === 35)) {
          while (this.url.path.length > 1 && this.url.path[0] === "") {
            this.parseError = true;
            this.url.path.shift();
          }
        }
        if (c === 63) {
          this.url.query = "";
          this.state = "query";
        }
        if (c === 35) {
          this.url.fragment = "";
          this.state = "fragment";
        }
      } else {
        if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) {
          this.parseError = true;
        }
        this.buffer += percentEncodeChar(c, isPathPercentEncode);
      }
      return true;
    };
    URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) {
      if (c === 63) {
        this.url.query = "";
        this.state = "query";
      } else if (c === 35) {
        this.url.fragment = "";
        this.state = "fragment";
      } else {
        if (!isNaN(c) && c !== 37) {
          this.parseError = true;
        }
        if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) {
          this.parseError = true;
        }
        if (!isNaN(c)) {
          this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);
        }
      }
      return true;
    };
    URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) {
      if (isNaN(c) || !this.stateOverride && c === 35) {
        if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") {
          this.encodingOverride = "utf-8";
        }
        const buffer2 = new Buffer(this.buffer);
        for (let i2 = 0; i2 < buffer2.length; ++i2) {
          if (buffer2[i2] < 33 || buffer2[i2] > 126 || buffer2[i2] === 34 || buffer2[i2] === 35 || buffer2[i2] === 60 || buffer2[i2] === 62) {
            this.url.query += percentEncode(buffer2[i2]);
          } else {
            this.url.query += String.fromCodePoint(buffer2[i2]);
          }
        }
        this.buffer = "";
        if (c === 35) {
          this.url.fragment = "";
          this.state = "fragment";
        }
      } else {
        if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) {
          this.parseError = true;
        }
        this.buffer += cStr;
      }
      return true;
    };
    URLStateMachine.prototype["parse fragment"] = function parseFragment2(c) {
      if (isNaN(c)) {
      } else if (c === 0) {
        this.parseError = true;
      } else {
        if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) {
          this.parseError = true;
        }
        this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);
      }
      return true;
    };
    function serializeURL(url, excludeFragment) {
      let output2 = url.scheme + ":";
      if (url.host !== null) {
        output2 += "//";
        if (url.username !== "" || url.password !== "") {
          output2 += url.username;
          if (url.password !== "") {
            output2 += ":" + url.password;
          }
          output2 += "@";
        }
        output2 += serializeHost(url.host);
        if (url.port !== null) {
          output2 += ":" + url.port;
        }
      } else if (url.host === null && url.scheme === "file") {
        output2 += "//";
      }
      if (url.cannotBeABaseURL) {
        output2 += url.path[0];
      } else {
        for (const string2 of url.path) {
          output2 += "/" + string2;
        }
      }
      if (url.query !== null) {
        output2 += "?" + url.query;
      }
      if (!excludeFragment && url.fragment !== null) {
        output2 += "#" + url.fragment;
      }
      return output2;
    }
    function serializeOrigin(tuple) {
      let result = tuple.scheme + "://";
      result += serializeHost(tuple.host);
      if (tuple.port !== null) {
        result += ":" + tuple.port;
      }
      return result;
    }
    module2.exports.serializeURL = serializeURL;
    module2.exports.serializeURLOrigin = function(url) {
      switch (url.scheme) {
        case "blob":
          try {
            return module2.exports.serializeURLOrigin(module2.exports.parseURL(url.path[0]));
          } catch (e2) {
            return "null";
          }
        case "ftp":
        case "gopher":
        case "http":
        case "https":
        case "ws":
        case "wss":
          return serializeOrigin({
            scheme: url.scheme,
            host: url.host,
            port: url.port
          });
        case "file":
          return "file://";
        default:
          return "null";
      }
    };
    module2.exports.basicURLParse = function(input3, options) {
      if (options === void 0) {
        options = {};
      }
      const usm = new URLStateMachine(input3, options.baseURL, options.encodingOverride, options.url, options.stateOverride);
      if (usm.failure) {
        return "failure";
      }
      return usm.url;
    };
    module2.exports.setTheUsername = function(url, username) {
      url.username = "";
      const decoded = punycode.ucs2.decode(username);
      for (let i2 = 0; i2 < decoded.length; ++i2) {
        url.username += percentEncodeChar(decoded[i2], isUserinfoPercentEncode);
      }
    };
    module2.exports.setThePassword = function(url, password) {
      url.password = "";
      const decoded = punycode.ucs2.decode(password);
      for (let i2 = 0; i2 < decoded.length; ++i2) {
        url.password += percentEncodeChar(decoded[i2], isUserinfoPercentEncode);
      }
    };
    module2.exports.serializeHost = serializeHost;
    module2.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;
    module2.exports.serializeInteger = function(integer) {
      return String(integer);
    };
    module2.exports.parseURL = function(input3, options) {
      if (options === void 0) {
        options = {};
      }
      return module2.exports.basicURLParse(input3, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });
    };
  }
});

// ../../node_modules/whatwg-url/lib/URL-impl.js
var require_URL_impl = __commonJS({
  "../../node_modules/whatwg-url/lib/URL-impl.js"(exports2) {
    "use strict";
    var usm = require_url_state_machine();
    exports2.implementation = class URLImpl {
      constructor(constructorArgs) {
        const url = constructorArgs[0];
        const base5 = constructorArgs[1];
        let parsedBase = null;
        if (base5 !== void 0) {
          parsedBase = usm.basicURLParse(base5);
          if (parsedBase === "failure") {
            throw new TypeError("Invalid base URL");
          }
        }
        const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });
        if (parsedURL === "failure") {
          throw new TypeError("Invalid URL");
        }
        this._url = parsedURL;
      }
      get href() {
        return usm.serializeURL(this._url);
      }
      set href(v) {
        const parsedURL = usm.basicURLParse(v);
        if (parsedURL === "failure") {
          throw new TypeError("Invalid URL");
        }
        this._url = parsedURL;
      }
      get origin() {
        return usm.serializeURLOrigin(this._url);
      }
      get protocol() {
        return this._url.scheme + ":";
      }
      set protocol(v) {
        usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" });
      }
      get username() {
        return this._url.username;
      }
      set username(v) {
        if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
          return;
        }
        usm.setTheUsername(this._url, v);
      }
      get password() {
        return this._url.password;
      }
      set password(v) {
        if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
          return;
        }
        usm.setThePassword(this._url, v);
      }
      get host() {
        const url = this._url;
        if (url.host === null) {
          return "";
        }
        if (url.port === null) {
          return usm.serializeHost(url.host);
        }
        return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port);
      }
      set host(v) {
        if (this._url.cannotBeABaseURL) {
          return;
        }
        usm.basicURLParse(v, { url: this._url, stateOverride: "host" });
      }
      get hostname() {
        if (this._url.host === null) {
          return "";
        }
        return usm.serializeHost(this._url.host);
      }
      set hostname(v) {
        if (this._url.cannotBeABaseURL) {
          return;
        }
        usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" });
      }
      get port() {
        if (this._url.port === null) {
          return "";
        }
        return usm.serializeInteger(this._url.port);
      }
      set port(v) {
        if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
          return;
        }
        if (v === "") {
          this._url.port = null;
        } else {
          usm.basicURLParse(v, { url: this._url, stateOverride: "port" });
        }
      }
      get pathname() {
        if (this._url.cannotBeABaseURL) {
          return this._url.path[0];
        }
        if (this._url.path.length === 0) {
          return "";
        }
        return "/" + this._url.path.join("/");
      }
      set pathname(v) {
        if (this._url.cannotBeABaseURL) {
          return;
        }
        this._url.path = [];
        usm.basicURLParse(v, { url: this._url, stateOverride: "path start" });
      }
      get search() {
        if (this._url.query === null || this._url.query === "") {
          return "";
        }
        return "?" + this._url.query;
      }
      set search(v) {
        const url = this._url;
        if (v === "") {
          url.query = null;
          return;
        }
        const input3 = v[0] === "?" ? v.substring(1) : v;
        url.query = "";
        usm.basicURLParse(input3, { url, stateOverride: "query" });
      }
      get hash() {
        if (this._url.fragment === null || this._url.fragment === "") {
          return "";
        }
        return "#" + this._url.fragment;
      }
      set hash(v) {
        if (v === "") {
          this._url.fragment = null;
          return;
        }
        const input3 = v[0] === "#" ? v.substring(1) : v;
        this._url.fragment = "";
        usm.basicURLParse(input3, { url: this._url, stateOverride: "fragment" });
      }
      toJSON() {
        return this.href;
      }
    };
  }
});

// ../../node_modules/whatwg-url/lib/URL.js
var require_URL = __commonJS({
  "../../node_modules/whatwg-url/lib/URL.js"(exports2, module2) {
    "use strict";
    var conversions = require_lib3();
    var utils2 = require_utils5();
    var Impl = require_URL_impl();
    var impl = utils2.implSymbol;
    function URL4(url) {
      if (!this || this[impl] || !(this instanceof URL4)) {
        throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");
      }
      if (arguments.length < 1) {
        throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present.");
      }
      const args = [];
      for (let i2 = 0; i2 < arguments.length && i2 < 2; ++i2) {
        args[i2] = arguments[i2];
      }
      args[0] = conversions["USVString"](args[0]);
      if (args[1] !== void 0) {
        args[1] = conversions["USVString"](args[1]);
      }
      module2.exports.setup(this, args);
    }
    URL4.prototype.toJSON = function toJSON2() {
      if (!this || !module2.exports.is(this)) {
        throw new TypeError("Illegal invocation");
      }
      const args = [];
      for (let i2 = 0; i2 < arguments.length && i2 < 0; ++i2) {
        args[i2] = arguments[i2];
      }
      return this[impl].toJSON.apply(this[impl], args);
    };
    Object.defineProperty(URL4.prototype, "href", {
      get() {
        return this[impl].href;
      },
      set(V) {
        V = conversions["USVString"](V);
        this[impl].href = V;
      },
      enumerable: true,
      configurable: true
    });
    URL4.prototype.toString = function() {
      if (!this || !module2.exports.is(this)) {
        throw new TypeError("Illegal invocation");
      }
      return this.href;
    };
    Object.defineProperty(URL4.prototype, "origin", {
      get() {
        return this[impl].origin;
      },
      enumerable: true,
      configurable: true
    });
    Object.defineProperty(URL4.prototype, "protocol", {
      get() {
        return this[impl].protocol;
      },
      set(V) {
        V = conversions["USVString"](V);
        this[impl].protocol = V;
      },
      enumerable: true,
      configurable: true
    });
    Object.defineProperty(URL4.prototype, "username", {
      get() {
        return this[impl].username;
      },
      set(V) {
        V = conversions["USVString"](V);
        this[impl].username = V;
      },
      enumerable: true,
      configurable: true
    });
    Object.defineProperty(URL4.prototype, "password", {
      get() {
        return this[impl].password;
      },
      set(V) {
        V = conversions["USVString"](V);
        this[impl].password = V;
      },
      enumerable: true,
      configurable: true
    });
    Object.defineProperty(URL4.prototype, "host", {
      get() {
        return this[impl].host;
      },
      set(V) {
        V = conversions["USVString"](V);
        this[impl].host = V;
      },
      enumerable: true,
      configurable: true
    });
    Object.defineProperty(URL4.prototype, "hostname", {
      get() {
        return this[impl].hostname;
      },
      set(V) {
        V = conversions["USVString"](V);
        this[impl].hostname = V;
      },
      enumerable: true,
      configurable: true
    });
    Object.defineProperty(URL4.prototype, "port", {
      get() {
        return this[impl].port;
      },
      set(V) {
        V = conversions["USVString"](V);
        this[impl].port = V;
      },
      enumerable: true,
      configurable: true
    });
    Object.defineProperty(URL4.prototype, "pathname", {
      get() {
        return this[impl].pathname;
      },
      set(V) {
        V = conversions["USVString"](V);
        this[impl].pathname = V;
      },
      enumerable: true,
      configurable: true
    });
    Object.defineProperty(URL4.prototype, "search", {
      get() {
        return this[impl].search;
      },
      set(V) {
        V = conversions["USVString"](V);
        this[impl].search = V;
      },
      enumerable: true,
      configurable: true
    });
    Object.defineProperty(URL4.prototype, "hash", {
      get() {
        return this[impl].hash;
      },
      set(V) {
        V = conversions["USVString"](V);
        this[impl].hash = V;
      },
      enumerable: true,
      configurable: true
    });
    module2.exports = {
      is(obj) {
        return !!obj && obj[impl] instanceof Impl.implementation;
      },
      create(constructorArgs, privateData) {
        let obj = Object.create(URL4.prototype);
        this.setup(obj, constructorArgs, privateData);
        return obj;
      },
      setup(obj, constructorArgs, privateData) {
        if (!privateData) privateData = {};
        privateData.wrapper = obj;
        obj[impl] = new Impl.implementation(constructorArgs, privateData);
        obj[impl][utils2.wrapperSymbol] = obj;
      },
      interface: URL4,
      expose: {
        Window: { URL: URL4 },
        Worker: { URL: URL4 }
      }
    };
  }
});

// ../../node_modules/whatwg-url/lib/public-api.js
var require_public_api = __commonJS({
  "../../node_modules/whatwg-url/lib/public-api.js"(exports2) {
    "use strict";
    exports2.URL = require_URL().interface;
    exports2.serializeURL = require_url_state_machine().serializeURL;
    exports2.serializeURLOrigin = require_url_state_machine().serializeURLOrigin;
    exports2.basicURLParse = require_url_state_machine().basicURLParse;
    exports2.setTheUsername = require_url_state_machine().setTheUsername;
    exports2.setThePassword = require_url_state_machine().setThePassword;
    exports2.serializeHost = require_url_state_machine().serializeHost;
    exports2.serializeInteger = require_url_state_machine().serializeInteger;
    exports2.parseURL = require_url_state_machine().parseURL;
  }
});

// ../../node_modules/sync-fetch/node_modules/node-fetch/lib/index.js
var require_lib4 = __commonJS({
  "../../node_modules/sync-fetch/node_modules/node-fetch/lib/index.js"(exports2, module2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    function _interopDefault(ex) {
      return ex && typeof ex === "object" && "default" in ex ? ex["default"] : ex;
    }
    var Stream4 = _interopDefault(require("stream"));
    var http5 = _interopDefault(require("http"));
    var Url = _interopDefault(require("url"));
    var whatwgUrl = _interopDefault(require_public_api());
    var https3 = _interopDefault(require("https"));
    var zlib3 = _interopDefault(require("zlib"));
    var Readable = Stream4.Readable;
    var BUFFER2 = Symbol("buffer");
    var TYPE2 = Symbol("type");
    var Blob3 = class _Blob2 {
      constructor() {
        this[TYPE2] = "";
        const blobParts = arguments[0];
        const options = arguments[1];
        const buffers = [];
        let size = 0;
        if (blobParts) {
          const a2 = blobParts;
          const length = Number(a2.length);
          for (let i2 = 0; i2 < length; i2++) {
            const element5 = a2[i2];
            let buffer2;
            if (element5 instanceof Buffer) {
              buffer2 = element5;
            } else if (ArrayBuffer.isView(element5)) {
              buffer2 = Buffer.from(element5.buffer, element5.byteOffset, element5.byteLength);
            } else if (element5 instanceof ArrayBuffer) {
              buffer2 = Buffer.from(element5);
            } else if (element5 instanceof _Blob2) {
              buffer2 = element5[BUFFER2];
            } else {
              buffer2 = Buffer.from(typeof element5 === "string" ? element5 : String(element5));
            }
            size += buffer2.length;
            buffers.push(buffer2);
          }
        }
        this[BUFFER2] = Buffer.concat(buffers);
        let type2 = options && options.type !== void 0 && String(options.type).toLowerCase();
        if (type2 && !/[^\u0020-\u007E]/.test(type2)) {
          this[TYPE2] = type2;
        }
      }
      get size() {
        return this[BUFFER2].length;
      }
      get type() {
        return this[TYPE2];
      }
      text() {
        return Promise.resolve(this[BUFFER2].toString());
      }
      arrayBuffer() {
        const buf = this[BUFFER2];
        const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
        return Promise.resolve(ab);
      }
      stream() {
        const readable = new Readable();
        readable._read = function() {
        };
        readable.push(this[BUFFER2]);
        readable.push(null);
        return readable;
      }
      toString() {
        return "[object Blob]";
      }
      slice() {
        const size = this.size;
        const start = arguments[0];
        const end = arguments[1];
        let relativeStart, relativeEnd;
        if (start === void 0) {
          relativeStart = 0;
        } else if (start < 0) {
          relativeStart = Math.max(size + start, 0);
        } else {
          relativeStart = Math.min(start, size);
        }
        if (end === void 0) {
          relativeEnd = size;
        } else if (end < 0) {
          relativeEnd = Math.max(size + end, 0);
        } else {
          relativeEnd = Math.min(end, size);
        }
        const span = Math.max(relativeEnd - relativeStart, 0);
        const buffer2 = this[BUFFER2];
        const slicedBuffer = buffer2.slice(relativeStart, relativeStart + span);
        const blob = new _Blob2([], { type: arguments[2] });
        blob[BUFFER2] = slicedBuffer;
        return blob;
      }
    };
    Object.defineProperties(Blob3.prototype, {
      size: { enumerable: true },
      type: { enumerable: true },
      slice: { enumerable: true }
    });
    Object.defineProperty(Blob3.prototype, Symbol.toStringTag, {
      value: "Blob",
      writable: false,
      enumerable: false,
      configurable: true
    });
    function FetchError2(message, type2, systemError) {
      Error.call(this, message);
      this.message = message;
      this.type = type2;
      if (systemError) {
        this.code = this.errno = systemError.code;
      }
      Error.captureStackTrace(this, this.constructor);
    }
    FetchError2.prototype = Object.create(Error.prototype);
    FetchError2.prototype.constructor = FetchError2;
    FetchError2.prototype.name = "FetchError";
    var convert6;
    try {
      convert6 = require("encoding").convert;
    } catch (e2) {
    }
    var INTERNALS4 = Symbol("Body internals");
    var PassThrough3 = Stream4.PassThrough;
    function Body2(body3) {
      var _this = this;
      var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, _ref$size = _ref.size;
      let size = _ref$size === void 0 ? 0 : _ref$size;
      var _ref$timeout = _ref.timeout;
      let timeout = _ref$timeout === void 0 ? 0 : _ref$timeout;
      if (body3 == null) {
        body3 = null;
      } else if (isURLSearchParams(body3)) {
        body3 = Buffer.from(body3.toString());
      } else if (isBlob2(body3)) ;
      else if (Buffer.isBuffer(body3)) ;
      else if (Object.prototype.toString.call(body3) === "[object ArrayBuffer]") {
        body3 = Buffer.from(body3);
      } else if (ArrayBuffer.isView(body3)) {
        body3 = Buffer.from(body3.buffer, body3.byteOffset, body3.byteLength);
      } else if (body3 instanceof Stream4) ;
      else {
        body3 = Buffer.from(String(body3));
      }
      this[INTERNALS4] = {
        body: body3,
        disturbed: false,
        error: null
      };
      this.size = size;
      this.timeout = timeout;
      if (body3 instanceof Stream4) {
        body3.on("error", function(err) {
          const error = err.name === "AbortError" ? err : new FetchError2(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, "system", err);
          _this[INTERNALS4].error = error;
        });
      }
    }
    Body2.prototype = {
      get body() {
        return this[INTERNALS4].body;
      },
      get bodyUsed() {
        return this[INTERNALS4].disturbed;
      },
      /**
       * Decode response as ArrayBuffer
       *
       * @return  Promise
       */
      arrayBuffer() {
        return consumeBody2.call(this).then(function(buf) {
          return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
        });
      },
      /**
       * Return raw response as Blob
       *
       * @return Promise
       */
      blob() {
        let ct = this.headers && this.headers.get("content-type") || "";
        return consumeBody2.call(this).then(function(buf) {
          return Object.assign(
            // Prevent copying
            new Blob3([], {
              type: ct.toLowerCase()
            }),
            {
              [BUFFER2]: buf
            }
          );
        });
      },
      /**
       * Decode response as json
       *
       * @return  Promise
       */
      json() {
        var _this2 = this;
        return consumeBody2.call(this).then(function(buffer2) {
          try {
            return JSON.parse(buffer2.toString());
          } catch (err) {
            return Body2.Promise.reject(new FetchError2(`invalid json response body at ${_this2.url} reason: ${err.message}`, "invalid-json"));
          }
        });
      },
      /**
       * Decode response as text
       *
       * @return  Promise
       */
      text() {
        return consumeBody2.call(this).then(function(buffer2) {
          return buffer2.toString();
        });
      },
      /**
       * Decode response as buffer (non-spec api)
       *
       * @return  Promise
       */
      buffer() {
        return consumeBody2.call(this);
      },
      /**
       * Decode response as text, while automatically detecting the encoding and
       * trying to decode to UTF-8 (non-spec api)
       *
       * @return  Promise
       */
      textConverted() {
        var _this3 = this;
        return consumeBody2.call(this).then(function(buffer2) {
          return convertBody(buffer2, _this3.headers);
        });
      }
    };
    Object.defineProperties(Body2.prototype, {
      body: { enumerable: true },
      bodyUsed: { enumerable: true },
      arrayBuffer: { enumerable: true },
      blob: { enumerable: true },
      json: { enumerable: true },
      text: { enumerable: true }
    });
    Body2.mixIn = function(proto9) {
      for (const name3 of Object.getOwnPropertyNames(Body2.prototype)) {
        if (!(name3 in proto9)) {
          const desc = Object.getOwnPropertyDescriptor(Body2.prototype, name3);
          Object.defineProperty(proto9, name3, desc);
        }
      }
    };
    function consumeBody2() {
      var _this4 = this;
      if (this[INTERNALS4].disturbed) {
        return Body2.Promise.reject(new TypeError(`body used already for: ${this.url}`));
      }
      this[INTERNALS4].disturbed = true;
      if (this[INTERNALS4].error) {
        return Body2.Promise.reject(this[INTERNALS4].error);
      }
      let body3 = this.body;
      if (body3 === null) {
        return Body2.Promise.resolve(Buffer.alloc(0));
      }
      if (isBlob2(body3)) {
        body3 = body3.stream();
      }
      if (Buffer.isBuffer(body3)) {
        return Body2.Promise.resolve(body3);
      }
      if (!(body3 instanceof Stream4)) {
        return Body2.Promise.resolve(Buffer.alloc(0));
      }
      let accum = [];
      let accumBytes = 0;
      let abort = false;
      return new Body2.Promise(function(resolve9, reject) {
        let resTimeout;
        if (_this4.timeout) {
          resTimeout = setTimeout(function() {
            abort = true;
            reject(new FetchError2(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, "body-timeout"));
          }, _this4.timeout);
        }
        body3.on("error", function(err) {
          if (err.name === "AbortError") {
            abort = true;
            reject(err);
          } else {
            reject(new FetchError2(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, "system", err));
          }
        });
        body3.on("data", function(chunk) {
          if (abort || chunk === null) {
            return;
          }
          if (_this4.size && accumBytes + chunk.length > _this4.size) {
            abort = true;
            reject(new FetchError2(`content size at ${_this4.url} over limit: ${_this4.size}`, "max-size"));
            return;
          }
          accumBytes += chunk.length;
          accum.push(chunk);
        });
        body3.on("end", function() {
          if (abort) {
            return;
          }
          clearTimeout(resTimeout);
          try {
            resolve9(Buffer.concat(accum, accumBytes));
          } catch (err) {
            reject(new FetchError2(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, "system", err));
          }
        });
      });
    }
    function convertBody(buffer2, headers) {
      if (typeof convert6 !== "function") {
        throw new Error("The package `encoding` must be installed to use the textConverted() function");
      }
      const ct = headers.get("content-type");
      let charset = "utf-8";
      let res, str2;
      if (ct) {
        res = /charset=([^;]*)/i.exec(ct);
      }
      str2 = buffer2.slice(0, 1024).toString();
      if (!res && str2) {
        res = /<meta.+?charset=(['"])(.+?)\1/i.exec(str2);
      }
      if (!res && str2) {
        res = /<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(str2);
        if (!res) {
          res = /<meta[\s]+?content=(['"])(.+?)\1[\s]+?http-equiv=(['"])content-type\3/i.exec(str2);
          if (res) {
            res.pop();
          }
        }
        if (res) {
          res = /charset=(.*)/i.exec(res.pop());
        }
      }
      if (!res && str2) {
        res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str2);
      }
      if (res) {
        charset = res.pop();
        if (charset === "gb2312" || charset === "gbk") {
          charset = "gb18030";
        }
      }
      return convert6(buffer2, "UTF-8", charset).toString();
    }
    function isURLSearchParams(obj) {
      if (typeof obj !== "object" || typeof obj.append !== "function" || typeof obj.delete !== "function" || typeof obj.get !== "function" || typeof obj.getAll !== "function" || typeof obj.has !== "function" || typeof obj.set !== "function") {
        return false;
      }
      return obj.constructor.name === "URLSearchParams" || Object.prototype.toString.call(obj) === "[object URLSearchParams]" || typeof obj.sort === "function";
    }
    function isBlob2(obj) {
      return typeof obj === "object" && typeof obj.arrayBuffer === "function" && typeof obj.type === "string" && typeof obj.stream === "function" && typeof obj.constructor === "function" && typeof obj.constructor.name === "string" && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);
    }
    function clone3(instance) {
      let p1, p22;
      let body3 = instance.body;
      if (instance.bodyUsed) {
        throw new Error("cannot clone body after it is used");
      }
      if (body3 instanceof Stream4 && typeof body3.getBoundary !== "function") {
        p1 = new PassThrough3();
        p22 = new PassThrough3();
        body3.pipe(p1);
        body3.pipe(p22);
        instance[INTERNALS4].body = p1;
        body3 = p22;
      }
      return body3;
    }
    function extractContentType2(body3) {
      if (body3 === null) {
        return null;
      } else if (typeof body3 === "string") {
        return "text/plain;charset=UTF-8";
      } else if (isURLSearchParams(body3)) {
        return "application/x-www-form-urlencoded;charset=UTF-8";
      } else if (isBlob2(body3)) {
        return body3.type || null;
      } else if (Buffer.isBuffer(body3)) {
        return null;
      } else if (Object.prototype.toString.call(body3) === "[object ArrayBuffer]") {
        return null;
      } else if (ArrayBuffer.isView(body3)) {
        return null;
      } else if (typeof body3.getBoundary === "function") {
        return `multipart/form-data;boundary=${body3.getBoundary()}`;
      } else if (body3 instanceof Stream4) {
        return null;
      } else {
        return "text/plain;charset=UTF-8";
      }
    }
    function getTotalBytes2(instance) {
      const body3 = instance.body;
      if (body3 === null) {
        return 0;
      } else if (isBlob2(body3)) {
        return body3.size;
      } else if (Buffer.isBuffer(body3)) {
        return body3.length;
      } else if (body3 && typeof body3.getLengthSync === "function") {
        if (body3._lengthRetrievers && body3._lengthRetrievers.length == 0 || // 1.x
        body3.hasKnownLength && body3.hasKnownLength()) {
          return body3.getLengthSync();
        }
        return null;
      } else {
        return null;
      }
    }
    function writeToStream2(dest, instance) {
      const body3 = instance.body;
      if (body3 === null) {
        dest.end();
      } else if (isBlob2(body3)) {
        body3.stream().pipe(dest);
      } else if (Buffer.isBuffer(body3)) {
        dest.write(body3);
        dest.end();
      } else {
        body3.pipe(dest);
      }
    }
    Body2.Promise = global.Promise;
    var invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/;
    var invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
    function validateName2(name3) {
      name3 = `${name3}`;
      if (invalidTokenRegex.test(name3) || name3 === "") {
        throw new TypeError(`${name3} is not a legal HTTP header name`);
      }
    }
    function validateValue(value) {
      value = `${value}`;
      if (invalidHeaderCharRegex.test(value)) {
        throw new TypeError(`${value} is not a legal HTTP header value`);
      }
    }
    function find2(map13, name3) {
      name3 = name3.toLowerCase();
      for (const key2 in map13) {
        if (key2.toLowerCase() === name3) {
          return key2;
        }
      }
      return void 0;
    }
    var MAP = Symbol("map");
    var Headers3 = class _Headers {
      /**
       * Headers class
       *
       * @param   Object  headers  Response headers
       * @return  Void
       */
      constructor() {
        let init4 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : void 0;
        this[MAP] = /* @__PURE__ */ Object.create(null);
        if (init4 instanceof _Headers) {
          const rawHeaders = init4.raw();
          const headerNames = Object.keys(rawHeaders);
          for (const headerName of headerNames) {
            for (const value of rawHeaders[headerName]) {
              this.append(headerName, value);
            }
          }
          return;
        }
        if (init4 == null) ;
        else if (typeof init4 === "object") {
          const method = init4[Symbol.iterator];
          if (method != null) {
            if (typeof method !== "function") {
              throw new TypeError("Header pairs must be iterable");
            }
            const pairs2 = [];
            for (const pair of init4) {
              if (typeof pair !== "object" || typeof pair[Symbol.iterator] !== "function") {
                throw new TypeError("Each header pair must be iterable");
              }
              pairs2.push(Array.from(pair));
            }
            for (const pair of pairs2) {
              if (pair.length !== 2) {
                throw new TypeError("Each header pair must be a name/value tuple");
              }
              this.append(pair[0], pair[1]);
            }
          } else {
            for (const key2 of Object.keys(init4)) {
              const value = init4[key2];
              this.append(key2, value);
            }
          }
        } else {
          throw new TypeError("Provided initializer must be an object");
        }
      }
      /**
       * Return combined header value given name
       *
       * @param   String  name  Header name
       * @return  Mixed
       */
      get(name3) {
        name3 = `${name3}`;
        validateName2(name3);
        const key2 = find2(this[MAP], name3);
        if (key2 === void 0) {
          return null;
        }
        return this[MAP][key2].join(", ");
      }
      /**
       * Iterate over all headers
       *
       * @param   Function  callback  Executed for each item with parameters (value, name, thisArg)
       * @param   Boolean   thisArg   `this` context for callback function
       * @return  Void
       */
      forEach(callback) {
        let thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : void 0;
        let pairs2 = getHeaders(this);
        let i2 = 0;
        while (i2 < pairs2.length) {
          var _pairs$i = pairs2[i2];
          const name3 = _pairs$i[0], value = _pairs$i[1];
          callback.call(thisArg, value, name3, this);
          pairs2 = getHeaders(this);
          i2++;
        }
      }
      /**
       * Overwrite header values given name
       *
       * @param   String  name   Header name
       * @param   String  value  Header value
       * @return  Void
       */
      set(name3, value) {
        name3 = `${name3}`;
        value = `${value}`;
        validateName2(name3);
        validateValue(value);
        const key2 = find2(this[MAP], name3);
        this[MAP][key2 !== void 0 ? key2 : name3] = [value];
      }
      /**
       * Append a value onto existing header
       *
       * @param   String  name   Header name
       * @param   String  value  Header value
       * @return  Void
       */
      append(name3, value) {
        name3 = `${name3}`;
        value = `${value}`;
        validateName2(name3);
        validateValue(value);
        const key2 = find2(this[MAP], name3);
        if (key2 !== void 0) {
          this[MAP][key2].push(value);
        } else {
          this[MAP][name3] = [value];
        }
      }
      /**
       * Check for header name existence
       *
       * @param   String   name  Header name
       * @return  Boolean
       */
      has(name3) {
        name3 = `${name3}`;
        validateName2(name3);
        return find2(this[MAP], name3) !== void 0;
      }
      /**
       * Delete all header values given name
       *
       * @param   String  name  Header name
       * @return  Void
       */
      delete(name3) {
        name3 = `${name3}`;
        validateName2(name3);
        const key2 = find2(this[MAP], name3);
        if (key2 !== void 0) {
          delete this[MAP][key2];
        }
      }
      /**
       * Return raw headers (non-spec api)
       *
       * @return  Object
       */
      raw() {
        return this[MAP];
      }
      /**
       * Get an iterator on keys.
       *
       * @return  Iterator
       */
      keys() {
        return createHeadersIterator(this, "key");
      }
      /**
       * Get an iterator on values.
       *
       * @return  Iterator
       */
      values() {
        return createHeadersIterator(this, "value");
      }
      /**
       * Get an iterator on entries.
       *
       * This is the default iterator of the Headers object.
       *
       * @return  Iterator
       */
      [Symbol.iterator]() {
        return createHeadersIterator(this, "key+value");
      }
    };
    Headers3.prototype.entries = Headers3.prototype[Symbol.iterator];
    Object.defineProperty(Headers3.prototype, Symbol.toStringTag, {
      value: "Headers",
      writable: false,
      enumerable: false,
      configurable: true
    });
    Object.defineProperties(Headers3.prototype, {
      get: { enumerable: true },
      forEach: { enumerable: true },
      set: { enumerable: true },
      append: { enumerable: true },
      has: { enumerable: true },
      delete: { enumerable: true },
      keys: { enumerable: true },
      values: { enumerable: true },
      entries: { enumerable: true }
    });
    function getHeaders(headers) {
      let kind = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "key+value";
      const keys2 = Object.keys(headers[MAP]).sort();
      return keys2.map(kind === "key" ? function(k) {
        return k.toLowerCase();
      } : kind === "value" ? function(k) {
        return headers[MAP][k].join(", ");
      } : function(k) {
        return [k.toLowerCase(), headers[MAP][k].join(", ")];
      });
    }
    var INTERNAL = Symbol("internal");
    function createHeadersIterator(target, kind) {
      const iterator = Object.create(HeadersIteratorPrototype);
      iterator[INTERNAL] = {
        target,
        kind,
        index: 0
      };
      return iterator;
    }
    var HeadersIteratorPrototype = Object.setPrototypeOf({
      next() {
        if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
          throw new TypeError("Value of `this` is not a HeadersIterator");
        }
        var _INTERNAL = this[INTERNAL];
        const target = _INTERNAL.target, kind = _INTERNAL.kind, index4 = _INTERNAL.index;
        const values = getHeaders(target, kind);
        const len = values.length;
        if (index4 >= len) {
          return {
            value: void 0,
            done: true
          };
        }
        this[INTERNAL].index = index4 + 1;
        return {
          value: values[index4],
          done: false
        };
      }
    }, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
    Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
      value: "HeadersIterator",
      writable: false,
      enumerable: false,
      configurable: true
    });
    function exportNodeCompatibleHeaders(headers) {
      const obj = Object.assign({ __proto__: null }, headers[MAP]);
      const hostHeaderKey = find2(headers[MAP], "Host");
      if (hostHeaderKey !== void 0) {
        obj[hostHeaderKey] = obj[hostHeaderKey][0];
      }
      return obj;
    }
    function createHeadersLenient(obj) {
      const headers = new Headers3();
      for (const name3 of Object.keys(obj)) {
        if (invalidTokenRegex.test(name3)) {
          continue;
        }
        if (Array.isArray(obj[name3])) {
          for (const val of obj[name3]) {
            if (invalidHeaderCharRegex.test(val)) {
              continue;
            }
            if (headers[MAP][name3] === void 0) {
              headers[MAP][name3] = [val];
            } else {
              headers[MAP][name3].push(val);
            }
          }
        } else if (!invalidHeaderCharRegex.test(obj[name3])) {
          headers[MAP][name3] = [obj[name3]];
        }
      }
      return headers;
    }
    var INTERNALS$1 = Symbol("Response internals");
    var STATUS_CODES = http5.STATUS_CODES;
    var Response3 = class _Response {
      constructor() {
        let body3 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null;
        let opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
        Body2.call(this, body3, opts);
        const status = opts.status || 200;
        const headers = new Headers3(opts.headers);
        if (body3 != null && !headers.has("Content-Type")) {
          const contentType = extractContentType2(body3);
          if (contentType) {
            headers.append("Content-Type", contentType);
          }
        }
        this[INTERNALS$1] = {
          url: opts.url,
          status,
          statusText: opts.statusText || STATUS_CODES[status],
          headers,
          counter: opts.counter
        };
      }
      get url() {
        return this[INTERNALS$1].url || "";
      }
      get status() {
        return this[INTERNALS$1].status;
      }
      /**
       * Convenience property representing if the request ended normally
       */
      get ok() {
        return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
      }
      get redirected() {
        return this[INTERNALS$1].counter > 0;
      }
      get statusText() {
        return this[INTERNALS$1].statusText;
      }
      get headers() {
        return this[INTERNALS$1].headers;
      }
      /**
       * Clone this response
       *
       * @return  Response
       */
      clone() {
        return new _Response(clone3(this), {
          url: this.url,
          status: this.status,
          statusText: this.statusText,
          headers: this.headers,
          ok: this.ok,
          redirected: this.redirected
        });
      }
    };
    Body2.mixIn(Response3.prototype);
    Object.defineProperties(Response3.prototype, {
      url: { enumerable: true },
      status: { enumerable: true },
      ok: { enumerable: true },
      redirected: { enumerable: true },
      statusText: { enumerable: true },
      headers: { enumerable: true },
      clone: { enumerable: true }
    });
    Object.defineProperty(Response3.prototype, Symbol.toStringTag, {
      value: "Response",
      writable: false,
      enumerable: false,
      configurable: true
    });
    var INTERNALS$2 = Symbol("Request internals");
    var URL4 = Url.URL || whatwgUrl.URL;
    var parse_url = Url.parse;
    var format_url = Url.format;
    function parseURL(urlStr) {
      if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) {
        urlStr = new URL4(urlStr).toString();
      }
      return parse_url(urlStr);
    }
    var streamDestructionSupported = "destroy" in Stream4.Readable.prototype;
    function isRequest3(input3) {
      return typeof input3 === "object" && typeof input3[INTERNALS$2] === "object";
    }
    function isAbortSignal2(signal) {
      const proto9 = signal && typeof signal === "object" && Object.getPrototypeOf(signal);
      return !!(proto9 && proto9.constructor.name === "AbortSignal");
    }
    var Request4 = class _Request {
      constructor(input3) {
        let init4 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
        let parsedURL;
        if (!isRequest3(input3)) {
          if (input3 && input3.href) {
            parsedURL = parseURL(input3.href);
          } else {
            parsedURL = parseURL(`${input3}`);
          }
          input3 = {};
        } else {
          parsedURL = parseURL(input3.url);
        }
        let method = init4.method || input3.method || "GET";
        method = method.toUpperCase();
        if ((init4.body != null || isRequest3(input3) && input3.body !== null) && (method === "GET" || method === "HEAD")) {
          throw new TypeError("Request with GET/HEAD method cannot have body");
        }
        let inputBody = init4.body != null ? init4.body : isRequest3(input3) && input3.body !== null ? clone3(input3) : null;
        Body2.call(this, inputBody, {
          timeout: init4.timeout || input3.timeout || 0,
          size: init4.size || input3.size || 0
        });
        const headers = new Headers3(init4.headers || input3.headers || {});
        if (inputBody != null && !headers.has("Content-Type")) {
          const contentType = extractContentType2(inputBody);
          if (contentType) {
            headers.append("Content-Type", contentType);
          }
        }
        let signal = isRequest3(input3) ? input3.signal : null;
        if ("signal" in init4) signal = init4.signal;
        if (signal != null && !isAbortSignal2(signal)) {
          throw new TypeError("Expected signal to be an instanceof AbortSignal");
        }
        this[INTERNALS$2] = {
          method,
          redirect: init4.redirect || input3.redirect || "follow",
          headers,
          parsedURL,
          signal
        };
        this.follow = init4.follow !== void 0 ? init4.follow : input3.follow !== void 0 ? input3.follow : 20;
        this.compress = init4.compress !== void 0 ? init4.compress : input3.compress !== void 0 ? input3.compress : true;
        this.counter = init4.counter || input3.counter || 0;
        this.agent = init4.agent || input3.agent;
      }
      get method() {
        return this[INTERNALS$2].method;
      }
      get url() {
        return format_url(this[INTERNALS$2].parsedURL);
      }
      get headers() {
        return this[INTERNALS$2].headers;
      }
      get redirect() {
        return this[INTERNALS$2].redirect;
      }
      get signal() {
        return this[INTERNALS$2].signal;
      }
      /**
       * Clone this request
       *
       * @return  Request
       */
      clone() {
        return new _Request(this);
      }
    };
    Body2.mixIn(Request4.prototype);
    Object.defineProperty(Request4.prototype, Symbol.toStringTag, {
      value: "Request",
      writable: false,
      enumerable: false,
      configurable: true
    });
    Object.defineProperties(Request4.prototype, {
      method: { enumerable: true },
      url: { enumerable: true },
      headers: { enumerable: true },
      redirect: { enumerable: true },
      clone: { enumerable: true },
      signal: { enumerable: true }
    });
    function getNodeRequestOptions2(request) {
      const parsedURL = request[INTERNALS$2].parsedURL;
      const headers = new Headers3(request[INTERNALS$2].headers);
      if (!headers.has("Accept")) {
        headers.set("Accept", "*/*");
      }
      if (!parsedURL.protocol || !parsedURL.hostname) {
        throw new TypeError("Only absolute URLs are supported");
      }
      if (!/^https?:$/.test(parsedURL.protocol)) {
        throw new TypeError("Only HTTP(S) protocols are supported");
      }
      if (request.signal && request.body instanceof Stream4.Readable && !streamDestructionSupported) {
        throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8");
      }
      let contentLengthValue = null;
      if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
        contentLengthValue = "0";
      }
      if (request.body != null) {
        const totalBytes = getTotalBytes2(request);
        if (typeof totalBytes === "number") {
          contentLengthValue = String(totalBytes);
        }
      }
      if (contentLengthValue) {
        headers.set("Content-Length", contentLengthValue);
      }
      if (!headers.has("User-Agent")) {
        headers.set("User-Agent", "node-fetch/1.0 (+https://github.com/bitinn/node-fetch)");
      }
      if (request.compress && !headers.has("Accept-Encoding")) {
        headers.set("Accept-Encoding", "gzip,deflate");
      }
      let agent = request.agent;
      if (typeof agent === "function") {
        agent = agent(parsedURL);
      }
      if (!headers.has("Connection") && !agent) {
        headers.set("Connection", "close");
      }
      return Object.assign({}, parsedURL, {
        method: request.method,
        headers: exportNodeCompatibleHeaders(headers),
        agent
      });
    }
    function AbortError3(message) {
      Error.call(this, message);
      this.type = "aborted";
      this.message = message;
      Error.captureStackTrace(this, this.constructor);
    }
    AbortError3.prototype = Object.create(Error.prototype);
    AbortError3.prototype.constructor = AbortError3;
    AbortError3.prototype.name = "AbortError";
    var URL$1 = Url.URL || whatwgUrl.URL;
    var PassThrough$1 = Stream4.PassThrough;
    var isDomainOrSubdomain2 = function isDomainOrSubdomain3(destination, original) {
      const orig = new URL$1(original).hostname;
      const dest = new URL$1(destination).hostname;
      return orig === dest || orig[orig.length - dest.length - 1] === "." && orig.endsWith(dest);
    };
    var isSameProtocol2 = function isSameProtocol3(destination, original) {
      const orig = new URL$1(original).protocol;
      const dest = new URL$1(destination).protocol;
      return orig === dest;
    };
    function fetch3(url, opts) {
      if (!fetch3.Promise) {
        throw new Error("native promise missing, set fetch.Promise to your favorite alternative");
      }
      Body2.Promise = fetch3.Promise;
      return new fetch3.Promise(function(resolve9, reject) {
        const request = new Request4(url, opts);
        const options = getNodeRequestOptions2(request);
        const send = (options.protocol === "https:" ? https3 : http5).request;
        const signal = request.signal;
        let response = null;
        const abort = function abort2() {
          let error = new AbortError3("The user aborted a request.");
          reject(error);
          if (request.body && request.body instanceof Stream4.Readable) {
            destroyStream(request.body, error);
          }
          if (!response || !response.body) return;
          response.body.emit("error", error);
        };
        if (signal && signal.aborted) {
          abort();
          return;
        }
        const abortAndFinalize = function abortAndFinalize2() {
          abort();
          finalize2();
        };
        const req = send(options);
        let reqTimeout;
        if (signal) {
          signal.addEventListener("abort", abortAndFinalize);
        }
        function finalize2() {
          req.abort();
          if (signal) signal.removeEventListener("abort", abortAndFinalize);
          clearTimeout(reqTimeout);
        }
        if (request.timeout) {
          req.once("socket", function(socket) {
            reqTimeout = setTimeout(function() {
              reject(new FetchError2(`network timeout at: ${request.url}`, "request-timeout"));
              finalize2();
            }, request.timeout);
          });
        }
        req.on("error", function(err) {
          reject(new FetchError2(`request to ${request.url} failed, reason: ${err.message}`, "system", err));
          if (response && response.body) {
            destroyStream(response.body, err);
          }
          finalize2();
        });
        fixResponseChunkedTransferBadEnding2(req, function(err) {
          if (signal && signal.aborted) {
            return;
          }
          if (response && response.body) {
            destroyStream(response.body, err);
          }
        });
        if (parseInt(process.version.substring(1)) < 14) {
          req.on("socket", function(s5) {
            s5.addListener("close", function(hadError) {
              const hasDataListener = s5.listenerCount("data") > 0;
              if (response && hasDataListener && !hadError && !(signal && signal.aborted)) {
                const err = new Error("Premature close");
                err.code = "ERR_STREAM_PREMATURE_CLOSE";
                response.body.emit("error", err);
              }
            });
          });
        }
        req.on("response", function(res) {
          clearTimeout(reqTimeout);
          const headers = createHeadersLenient(res.headers);
          if (fetch3.isRedirect(res.statusCode)) {
            const location4 = headers.get("Location");
            let locationURL = null;
            try {
              locationURL = location4 === null ? null : new URL$1(location4, request.url).toString();
            } catch (err) {
              if (request.redirect !== "manual") {
                reject(new FetchError2(`uri requested responds with an invalid redirect URL: ${location4}`, "invalid-redirect"));
                finalize2();
                return;
              }
            }
            switch (request.redirect) {
              case "error":
                reject(new FetchError2(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, "no-redirect"));
                finalize2();
                return;
              case "manual":
                if (locationURL !== null) {
                  try {
                    headers.set("Location", locationURL);
                  } catch (err) {
                    reject(err);
                  }
                }
                break;
              case "follow":
                if (locationURL === null) {
                  break;
                }
                if (request.counter >= request.follow) {
                  reject(new FetchError2(`maximum redirect reached at: ${request.url}`, "max-redirect"));
                  finalize2();
                  return;
                }
                const requestOpts = {
                  headers: new Headers3(request.headers),
                  follow: request.follow,
                  counter: request.counter + 1,
                  agent: request.agent,
                  compress: request.compress,
                  method: request.method,
                  body: request.body,
                  signal: request.signal,
                  timeout: request.timeout,
                  size: request.size
                };
                if (!isDomainOrSubdomain2(request.url, locationURL) || !isSameProtocol2(request.url, locationURL)) {
                  for (const name3 of ["authorization", "www-authenticate", "cookie", "cookie2"]) {
                    requestOpts.headers.delete(name3);
                  }
                }
                if (res.statusCode !== 303 && request.body && getTotalBytes2(request) === null) {
                  reject(new FetchError2("Cannot follow redirect with body being a readable stream", "unsupported-redirect"));
                  finalize2();
                  return;
                }
                if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === "POST") {
                  requestOpts.method = "GET";
                  requestOpts.body = void 0;
                  requestOpts.headers.delete("content-length");
                }
                resolve9(fetch3(new Request4(locationURL, requestOpts)));
                finalize2();
                return;
            }
          }
          res.once("end", function() {
            if (signal) signal.removeEventListener("abort", abortAndFinalize);
          });
          let body3 = res.pipe(new PassThrough$1());
          const response_options = {
            url: request.url,
            status: res.statusCode,
            statusText: res.statusMessage,
            headers,
            size: request.size,
            timeout: request.timeout,
            counter: request.counter
          };
          const codings = headers.get("Content-Encoding");
          if (!request.compress || request.method === "HEAD" || codings === null || res.statusCode === 204 || res.statusCode === 304) {
            response = new Response3(body3, response_options);
            resolve9(response);
            return;
          }
          const zlibOptions = {
            flush: zlib3.Z_SYNC_FLUSH,
            finishFlush: zlib3.Z_SYNC_FLUSH
          };
          if (codings == "gzip" || codings == "x-gzip") {
            body3 = body3.pipe(zlib3.createGunzip(zlibOptions));
            response = new Response3(body3, response_options);
            resolve9(response);
            return;
          }
          if (codings == "deflate" || codings == "x-deflate") {
            const raw2 = res.pipe(new PassThrough$1());
            raw2.once("data", function(chunk) {
              if ((chunk[0] & 15) === 8) {
                body3 = body3.pipe(zlib3.createInflate());
              } else {
                body3 = body3.pipe(zlib3.createInflateRaw());
              }
              response = new Response3(body3, response_options);
              resolve9(response);
            });
            raw2.on("end", function() {
              if (!response) {
                response = new Response3(body3, response_options);
                resolve9(response);
              }
            });
            return;
          }
          if (codings == "br" && typeof zlib3.createBrotliDecompress === "function") {
            body3 = body3.pipe(zlib3.createBrotliDecompress());
            response = new Response3(body3, response_options);
            resolve9(response);
            return;
          }
          response = new Response3(body3, response_options);
          resolve9(response);
        });
        writeToStream2(req, request);
      });
    }
    function fixResponseChunkedTransferBadEnding2(request, errorCallback) {
      let socket;
      request.on("socket", function(s5) {
        socket = s5;
      });
      request.on("response", function(response) {
        const headers = response.headers;
        if (headers["transfer-encoding"] === "chunked" && !headers["content-length"]) {
          response.once("close", function(hadError) {
            const hasDataListener = socket && socket.listenerCount("data") > 0;
            if (hasDataListener && !hadError) {
              const err = new Error("Premature close");
              err.code = "ERR_STREAM_PREMATURE_CLOSE";
              errorCallback(err);
            }
          });
        }
      });
    }
    function destroyStream(stream3, err) {
      if (stream3.destroy) {
        stream3.destroy(err);
      } else {
        stream3.emit("error", err);
        stream3.end();
      }
    }
    fetch3.isRedirect = function(code7) {
      return code7 === 301 || code7 === 302 || code7 === 303 || code7 === 307 || code7 === 308;
    };
    fetch3.Promise = global.Promise;
    module2.exports = exports2 = fetch3;
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.default = exports2;
    exports2.Headers = Headers3;
    exports2.Request = Request4;
    exports2.Response = Response3;
    exports2.FetchError = FetchError2;
  }
});

// ../../node_modules/sync-fetch/shared.js
var require_shared2 = __commonJS({
  "../../node_modules/sync-fetch/shared.js"(exports2, module2) {
    var Stream4 = require("stream");
    function serializeHeaders(headers) {
      return headers.raw();
    }
    function deserializeHeaders(fetch3, old = {}) {
      const headers = new fetch3.Headers();
      for (const name3 in old) {
        for (const value of old[name3]) {
          headers.append(name3, value);
        }
      }
      return headers;
    }
    function serializeRequest(request) {
      return [
        request.url,
        {
          method: request.method,
          headers: request.headers,
          body: request.body,
          mode: request.mode,
          credentials: request.credentials,
          cache: request.cache,
          redirect: request.redirect,
          referrer: request.referrer,
          referrerPolicy: request.referrerPolicy,
          integrity: request.integrity,
          keepalive: request.keepalive,
          // signal: request.signal,
          // node-fetch props
          follow: request.follow,
          timeout: request.timeout,
          compress: request.compress,
          size: request.size
          // agent: request.agent
        }
      ];
    }
    function deserializeRequest(fetch3, resource, init4) {
      return new fetch3.Request(resource, {
        ...init4,
        body: init4.body ? Buffer.from(init4.body, "base64") : void 0,
        headers: deserializeHeaders(fetch3, init4.headers)
      });
    }
    function serializeResponse(response) {
      return {
        url: response.url,
        headers: response.headers.raw(),
        status: response.status,
        statusText: response.statusText,
        counter: response.redirected ? 1 : 0
        // could be more than one, but no way of telling
      };
    }
    function deserializeResponse(fetch3, body3, init4, bodyError) {
      const buffer2 = Buffer.from(body3, "base64");
      return new fetch3.Response(
        body3 ? createStream(buffer2) : createStream(null),
        {
          ...init4,
          headers: deserializeHeaders(fetch3, init4.headers)
        },
        {
          buffer: buffer2,
          bodyError
        }
      );
    }
    var errors4 = {
      TypeError
    };
    function serializeError({ constructor, message, type: type2, code: code7 }) {
      return [
        constructor.name,
        [message, type2, { code: code7 }]
      ];
    }
    function deserializeError(fetch3, name3, init4) {
      if (name3 in errors4) {
        return new errors4[name3](...init4);
      } else {
        return new fetch3.FetchError(...init4);
      }
    }
    function parseBodyType(body3) {
      if (body3 == null) {
        return "Null";
      } else if (body3.constructor.name === "URLSearchParams") {
        return "URLSearchParams";
      } else if (Buffer.isBuffer(body3)) {
        return "Buffer";
      } else if (Object.prototype.toString.call(body3) === "[object ArrayBuffer]") {
        return "ArrayBuffer";
      } else if (ArrayBuffer.isView(body3)) {
        return "ArrayBufferView";
      } else if (body3 instanceof Stream4) {
        return "Stream";
      } else {
        return "String";
      }
    }
    function parseBody2(body3, type2 = parseBodyType(body3)) {
      switch (type2) {
        case "Null":
          return null;
        case "URLSearchParams":
          return Buffer.from(body3.toString());
        case "Buffer":
          return body3;
        case "ArrayBuffer":
          return Buffer.from(body3);
        case "ArrayBufferView":
          return Buffer.from(body3.buffer, body3.byteOffset, body3.byteLength);
        case "String":
          return Buffer.from(String(body3));
        default:
          throw new TypeError(`sync-fetch does not support bodies of type: ${type2}`);
      }
    }
    function createStream(buffer2) {
      return new Stream4.Transform({
        read() {
          this.push(buffer2);
          this.push(null);
        }
      });
    }
    module2.exports = {
      serializeHeaders,
      deserializeHeaders,
      serializeRequest,
      deserializeRequest,
      serializeResponse,
      deserializeResponse,
      serializeError,
      deserializeError,
      parseBodyType,
      parseBody: parseBody2,
      createStream
    };
  }
});

// ../../node_modules/sync-fetch/index.js
var require_sync_fetch = __commonJS({
  "../../node_modules/sync-fetch/index.js"(exports2, module2) {
    var exec3 = require("child_process").execFileSync;
    var path45 = require("path");
    var { URL: URL4 } = require("url");
    var _fetch = require_lib4();
    var shared = require_shared2();
    function fetch3(resource, init4) {
      const request = [];
      if (resource instanceof fetch3.Request) {
        request.push(...shared.serializeRequest(resource));
      } else if (resource instanceof URL4) {
        request.push(resource.href, {});
      } else {
        request.push(resource, {});
      }
      Object.assign(request[1], init4);
      request[1].headers = new _fetch.Headers(request[1].headers);
      if (request[1].body) {
        const contentType = extractContentType2(request);
        if (contentType && !request[1].headers.get("content-type")) {
          request[1].headers.append("content-type", contentType);
        }
        request[1].body = shared.parseBody(init4.body).toString("base64");
      }
      request[1].headers = shared.serializeHeaders(request[1].headers);
      const response = JSON.parse(sendMessage(request));
      if ("headers" in response[1]) {
        return shared.deserializeResponse(fetch3, ...response);
      } else {
        throw shared.deserializeError(fetch3, ...response);
      }
    }
    function sendMessage(message) {
      return exec3(process.execPath, [path45.join(__dirname, "worker.js")], {
        windowsHide: true,
        maxBuffer: Infinity,
        input: JSON.stringify(message),
        shell: false
      }).toString();
    }
    function extractContentType2(input3) {
      const request = new _fetch.Request(...input3);
      return request.headers.get("content-type") || void 0;
    }
    var _body = Symbol("bodyBuffer");
    var _bodyError = Symbol("bodyError");
    var SyncRequest = class _SyncRequest extends _fetch.Request {
      constructor(resource, init4 = {}) {
        const buffer2 = shared.parseBody(init4.body);
        super(resource, init4);
        defineBuffer(this, buffer2);
      }
      clone() {
        checkBody(this);
        return new _SyncRequest(...shared.serializeRequest(this));
      }
    };
    var SyncResponse = class _SyncResponse extends _fetch.Response {
      constructor(body3, init4, options = {}) {
        const {
          buffer: buffer2 = shared.parseBody(body3),
          bodyError
        } = options;
        super(body3, init4);
        defineBuffer(this, buffer2);
        if (bodyError) defineBodyError(this, bodyError);
      }
      clone() {
        checkBody(this);
        const buffer2 = Buffer.from(this[_body]);
        return new _SyncResponse(
          shared.createStream(buffer2),
          shared.serializeResponse(this),
          {
            buffer: buffer2,
            bodyError: this[_bodyError]
          }
        );
      }
    };
    var Body2 = class _Body {
      static mixin(proto9) {
        for (const name3 of Object.getOwnPropertyNames(_Body.prototype)) {
          if (name3 === "constructor") {
            continue;
          }
          const desc = Object.getOwnPropertyDescriptor(_Body.prototype, name3);
          Object.defineProperty(proto9, name3, {
            ...desc,
            enumerable: true
          });
        }
      }
      arrayBuffer() {
        checkBody(this);
        const buf = consumeBody2(this);
        return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
      }
      text() {
        checkBody(this);
        return consumeBody2(this).toString();
      }
      json() {
        checkBody(this);
        try {
          return JSON.parse(consumeBody2(this).toString());
        } catch (err) {
          throw new fetch3.FetchError(`invalid json response body at ${this.url} reason: ${err.message}`, "invalid-json");
        }
      }
      buffer() {
        checkBody(this);
        return Buffer.from(consumeBody2(this));
      }
      textConverted() {
        throw new fetch3.FetchError("textConverted not implemented");
      }
    };
    function _super(self2, method) {
      return Object.getPrototypeOf(Object.getPrototypeOf(self2))[method].bind(self2);
    }
    function checkBody(body3) {
      if (body3[_bodyError]) {
        throw body3[_bodyError];
      }
      if (body3.bodyUsed) {
        throw new TypeError(`body used already for: ${body3.url}`);
      }
    }
    function consumeBody2(body3) {
      _super(body3, "buffer")().catch((error) => console.error(error));
      return body3[_body] || Buffer.alloc(0);
    }
    function defineBuffer(body3, buffer2) {
      Object.defineProperty(body3, _body, {
        value: buffer2,
        enumerable: false
      });
    }
    function defineBodyError(body3, error) {
      Object.defineProperty(body3, _bodyError, {
        value: shared.deserializeError(fetch3, ...error),
        enumerable: false
      });
    }
    Body2.mixin(SyncRequest.prototype);
    Body2.mixin(SyncResponse.prototype);
    Object.defineProperties(SyncRequest.prototype, { clone: { enumerable: true } });
    Object.defineProperties(SyncResponse.prototype, { clone: { enumerable: true } });
    fetch3.Headers = _fetch.Headers;
    fetch3.FetchError = _fetch.FetchError;
    fetch3.Request = SyncRequest;
    fetch3.Response = SyncResponse;
    module2.exports = fetch3;
  }
});

// ../../node_modules/fetch-ponyfill/node_modules/node-fetch/lib/index.js
var require_lib5 = __commonJS({
  "../../node_modules/fetch-ponyfill/node_modules/node-fetch/lib/index.js"(exports2, module2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    function _interopDefault(ex) {
      return ex && typeof ex === "object" && "default" in ex ? ex["default"] : ex;
    }
    var Stream4 = _interopDefault(require("stream"));
    var http5 = _interopDefault(require("http"));
    var Url = _interopDefault(require("url"));
    var whatwgUrl = _interopDefault(require_public_api());
    var https3 = _interopDefault(require("https"));
    var zlib3 = _interopDefault(require("zlib"));
    var Readable = Stream4.Readable;
    var BUFFER2 = Symbol("buffer");
    var TYPE2 = Symbol("type");
    var Blob3 = class _Blob2 {
      constructor() {
        this[TYPE2] = "";
        const blobParts = arguments[0];
        const options = arguments[1];
        const buffers = [];
        let size = 0;
        if (blobParts) {
          const a2 = blobParts;
          const length = Number(a2.length);
          for (let i2 = 0; i2 < length; i2++) {
            const element5 = a2[i2];
            let buffer2;
            if (element5 instanceof Buffer) {
              buffer2 = element5;
            } else if (ArrayBuffer.isView(element5)) {
              buffer2 = Buffer.from(element5.buffer, element5.byteOffset, element5.byteLength);
            } else if (element5 instanceof ArrayBuffer) {
              buffer2 = Buffer.from(element5);
            } else if (element5 instanceof _Blob2) {
              buffer2 = element5[BUFFER2];
            } else {
              buffer2 = Buffer.from(typeof element5 === "string" ? element5 : String(element5));
            }
            size += buffer2.length;
            buffers.push(buffer2);
          }
        }
        this[BUFFER2] = Buffer.concat(buffers);
        let type2 = options && options.type !== void 0 && String(options.type).toLowerCase();
        if (type2 && !/[^\u0020-\u007E]/.test(type2)) {
          this[TYPE2] = type2;
        }
      }
      get size() {
        return this[BUFFER2].length;
      }
      get type() {
        return this[TYPE2];
      }
      text() {
        return Promise.resolve(this[BUFFER2].toString());
      }
      arrayBuffer() {
        const buf = this[BUFFER2];
        const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
        return Promise.resolve(ab);
      }
      stream() {
        const readable = new Readable();
        readable._read = function() {
        };
        readable.push(this[BUFFER2]);
        readable.push(null);
        return readable;
      }
      toString() {
        return "[object Blob]";
      }
      slice() {
        const size = this.size;
        const start = arguments[0];
        const end = arguments[1];
        let relativeStart, relativeEnd;
        if (start === void 0) {
          relativeStart = 0;
        } else if (start < 0) {
          relativeStart = Math.max(size + start, 0);
        } else {
          relativeStart = Math.min(start, size);
        }
        if (end === void 0) {
          relativeEnd = size;
        } else if (end < 0) {
          relativeEnd = Math.max(size + end, 0);
        } else {
          relativeEnd = Math.min(end, size);
        }
        const span = Math.max(relativeEnd - relativeStart, 0);
        const buffer2 = this[BUFFER2];
        const slicedBuffer = buffer2.slice(relativeStart, relativeStart + span);
        const blob = new _Blob2([], { type: arguments[2] });
        blob[BUFFER2] = slicedBuffer;
        return blob;
      }
    };
    Object.defineProperties(Blob3.prototype, {
      size: { enumerable: true },
      type: { enumerable: true },
      slice: { enumerable: true }
    });
    Object.defineProperty(Blob3.prototype, Symbol.toStringTag, {
      value: "Blob",
      writable: false,
      enumerable: false,
      configurable: true
    });
    function FetchError2(message, type2, systemError) {
      Error.call(this, message);
      this.message = message;
      this.type = type2;
      if (systemError) {
        this.code = this.errno = systemError.code;
      }
      Error.captureStackTrace(this, this.constructor);
    }
    FetchError2.prototype = Object.create(Error.prototype);
    FetchError2.prototype.constructor = FetchError2;
    FetchError2.prototype.name = "FetchError";
    var convert6;
    try {
      convert6 = require("encoding").convert;
    } catch (e2) {
    }
    var INTERNALS4 = Symbol("Body internals");
    var PassThrough3 = Stream4.PassThrough;
    function Body2(body3) {
      var _this = this;
      var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, _ref$size = _ref.size;
      let size = _ref$size === void 0 ? 0 : _ref$size;
      var _ref$timeout = _ref.timeout;
      let timeout = _ref$timeout === void 0 ? 0 : _ref$timeout;
      if (body3 == null) {
        body3 = null;
      } else if (isURLSearchParams(body3)) {
        body3 = Buffer.from(body3.toString());
      } else if (isBlob2(body3)) ;
      else if (Buffer.isBuffer(body3)) ;
      else if (Object.prototype.toString.call(body3) === "[object ArrayBuffer]") {
        body3 = Buffer.from(body3);
      } else if (ArrayBuffer.isView(body3)) {
        body3 = Buffer.from(body3.buffer, body3.byteOffset, body3.byteLength);
      } else if (body3 instanceof Stream4) ;
      else {
        body3 = Buffer.from(String(body3));
      }
      this[INTERNALS4] = {
        body: body3,
        disturbed: false,
        error: null
      };
      this.size = size;
      this.timeout = timeout;
      if (body3 instanceof Stream4) {
        body3.on("error", function(err) {
          const error = err.name === "AbortError" ? err : new FetchError2(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, "system", err);
          _this[INTERNALS4].error = error;
        });
      }
    }
    Body2.prototype = {
      get body() {
        return this[INTERNALS4].body;
      },
      get bodyUsed() {
        return this[INTERNALS4].disturbed;
      },
      /**
       * Decode response as ArrayBuffer
       *
       * @return  Promise
       */
      arrayBuffer() {
        return consumeBody2.call(this).then(function(buf) {
          return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
        });
      },
      /**
       * Return raw response as Blob
       *
       * @return Promise
       */
      blob() {
        let ct = this.headers && this.headers.get("content-type") || "";
        return consumeBody2.call(this).then(function(buf) {
          return Object.assign(
            // Prevent copying
            new Blob3([], {
              type: ct.toLowerCase()
            }),
            {
              [BUFFER2]: buf
            }
          );
        });
      },
      /**
       * Decode response as json
       *
       * @return  Promise
       */
      json() {
        var _this2 = this;
        return consumeBody2.call(this).then(function(buffer2) {
          try {
            return JSON.parse(buffer2.toString());
          } catch (err) {
            return Body2.Promise.reject(new FetchError2(`invalid json response body at ${_this2.url} reason: ${err.message}`, "invalid-json"));
          }
        });
      },
      /**
       * Decode response as text
       *
       * @return  Promise
       */
      text() {
        return consumeBody2.call(this).then(function(buffer2) {
          return buffer2.toString();
        });
      },
      /**
       * Decode response as buffer (non-spec api)
       *
       * @return  Promise
       */
      buffer() {
        return consumeBody2.call(this);
      },
      /**
       * Decode response as text, while automatically detecting the encoding and
       * trying to decode to UTF-8 (non-spec api)
       *
       * @return  Promise
       */
      textConverted() {
        var _this3 = this;
        return consumeBody2.call(this).then(function(buffer2) {
          return convertBody(buffer2, _this3.headers);
        });
      }
    };
    Object.defineProperties(Body2.prototype, {
      body: { enumerable: true },
      bodyUsed: { enumerable: true },
      arrayBuffer: { enumerable: true },
      blob: { enumerable: true },
      json: { enumerable: true },
      text: { enumerable: true }
    });
    Body2.mixIn = function(proto9) {
      for (const name3 of Object.getOwnPropertyNames(Body2.prototype)) {
        if (!(name3 in proto9)) {
          const desc = Object.getOwnPropertyDescriptor(Body2.prototype, name3);
          Object.defineProperty(proto9, name3, desc);
        }
      }
    };
    function consumeBody2() {
      var _this4 = this;
      if (this[INTERNALS4].disturbed) {
        return Body2.Promise.reject(new TypeError(`body used already for: ${this.url}`));
      }
      this[INTERNALS4].disturbed = true;
      if (this[INTERNALS4].error) {
        return Body2.Promise.reject(this[INTERNALS4].error);
      }
      let body3 = this.body;
      if (body3 === null) {
        return Body2.Promise.resolve(Buffer.alloc(0));
      }
      if (isBlob2(body3)) {
        body3 = body3.stream();
      }
      if (Buffer.isBuffer(body3)) {
        return Body2.Promise.resolve(body3);
      }
      if (!(body3 instanceof Stream4)) {
        return Body2.Promise.resolve(Buffer.alloc(0));
      }
      let accum = [];
      let accumBytes = 0;
      let abort = false;
      return new Body2.Promise(function(resolve9, reject) {
        let resTimeout;
        if (_this4.timeout) {
          resTimeout = setTimeout(function() {
            abort = true;
            reject(new FetchError2(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, "body-timeout"));
          }, _this4.timeout);
        }
        body3.on("error", function(err) {
          if (err.name === "AbortError") {
            abort = true;
            reject(err);
          } else {
            reject(new FetchError2(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, "system", err));
          }
        });
        body3.on("data", function(chunk) {
          if (abort || chunk === null) {
            return;
          }
          if (_this4.size && accumBytes + chunk.length > _this4.size) {
            abort = true;
            reject(new FetchError2(`content size at ${_this4.url} over limit: ${_this4.size}`, "max-size"));
            return;
          }
          accumBytes += chunk.length;
          accum.push(chunk);
        });
        body3.on("end", function() {
          if (abort) {
            return;
          }
          clearTimeout(resTimeout);
          try {
            resolve9(Buffer.concat(accum, accumBytes));
          } catch (err) {
            reject(new FetchError2(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, "system", err));
          }
        });
      });
    }
    function convertBody(buffer2, headers) {
      if (typeof convert6 !== "function") {
        throw new Error("The package `encoding` must be installed to use the textConverted() function");
      }
      const ct = headers.get("content-type");
      let charset = "utf-8";
      let res, str2;
      if (ct) {
        res = /charset=([^;]*)/i.exec(ct);
      }
      str2 = buffer2.slice(0, 1024).toString();
      if (!res && str2) {
        res = /<meta.+?charset=(['"])(.+?)\1/i.exec(str2);
      }
      if (!res && str2) {
        res = /<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(str2);
        if (!res) {
          res = /<meta[\s]+?content=(['"])(.+?)\1[\s]+?http-equiv=(['"])content-type\3/i.exec(str2);
          if (res) {
            res.pop();
          }
        }
        if (res) {
          res = /charset=(.*)/i.exec(res.pop());
        }
      }
      if (!res && str2) {
        res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str2);
      }
      if (res) {
        charset = res.pop();
        if (charset === "gb2312" || charset === "gbk") {
          charset = "gb18030";
        }
      }
      return convert6(buffer2, "UTF-8", charset).toString();
    }
    function isURLSearchParams(obj) {
      if (typeof obj !== "object" || typeof obj.append !== "function" || typeof obj.delete !== "function" || typeof obj.get !== "function" || typeof obj.getAll !== "function" || typeof obj.has !== "function" || typeof obj.set !== "function") {
        return false;
      }
      return obj.constructor.name === "URLSearchParams" || Object.prototype.toString.call(obj) === "[object URLSearchParams]" || typeof obj.sort === "function";
    }
    function isBlob2(obj) {
      return typeof obj === "object" && typeof obj.arrayBuffer === "function" && typeof obj.type === "string" && typeof obj.stream === "function" && typeof obj.constructor === "function" && typeof obj.constructor.name === "string" && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);
    }
    function clone3(instance) {
      let p1, p22;
      let body3 = instance.body;
      if (instance.bodyUsed) {
        throw new Error("cannot clone body after it is used");
      }
      if (body3 instanceof Stream4 && typeof body3.getBoundary !== "function") {
        p1 = new PassThrough3();
        p22 = new PassThrough3();
        body3.pipe(p1);
        body3.pipe(p22);
        instance[INTERNALS4].body = p1;
        body3 = p22;
      }
      return body3;
    }
    function extractContentType2(body3) {
      if (body3 === null) {
        return null;
      } else if (typeof body3 === "string") {
        return "text/plain;charset=UTF-8";
      } else if (isURLSearchParams(body3)) {
        return "application/x-www-form-urlencoded;charset=UTF-8";
      } else if (isBlob2(body3)) {
        return body3.type || null;
      } else if (Buffer.isBuffer(body3)) {
        return null;
      } else if (Object.prototype.toString.call(body3) === "[object ArrayBuffer]") {
        return null;
      } else if (ArrayBuffer.isView(body3)) {
        return null;
      } else if (typeof body3.getBoundary === "function") {
        return `multipart/form-data;boundary=${body3.getBoundary()}`;
      } else if (body3 instanceof Stream4) {
        return null;
      } else {
        return "text/plain;charset=UTF-8";
      }
    }
    function getTotalBytes2(instance) {
      const body3 = instance.body;
      if (body3 === null) {
        return 0;
      } else if (isBlob2(body3)) {
        return body3.size;
      } else if (Buffer.isBuffer(body3)) {
        return body3.length;
      } else if (body3 && typeof body3.getLengthSync === "function") {
        if (body3._lengthRetrievers && body3._lengthRetrievers.length == 0 || // 1.x
        body3.hasKnownLength && body3.hasKnownLength()) {
          return body3.getLengthSync();
        }
        return null;
      } else {
        return null;
      }
    }
    function writeToStream2(dest, instance) {
      const body3 = instance.body;
      if (body3 === null) {
        dest.end();
      } else if (isBlob2(body3)) {
        body3.stream().pipe(dest);
      } else if (Buffer.isBuffer(body3)) {
        dest.write(body3);
        dest.end();
      } else {
        body3.pipe(dest);
      }
    }
    Body2.Promise = global.Promise;
    var invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/;
    var invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
    function validateName2(name3) {
      name3 = `${name3}`;
      if (invalidTokenRegex.test(name3) || name3 === "") {
        throw new TypeError(`${name3} is not a legal HTTP header name`);
      }
    }
    function validateValue(value) {
      value = `${value}`;
      if (invalidHeaderCharRegex.test(value)) {
        throw new TypeError(`${value} is not a legal HTTP header value`);
      }
    }
    function find2(map13, name3) {
      name3 = name3.toLowerCase();
      for (const key2 in map13) {
        if (key2.toLowerCase() === name3) {
          return key2;
        }
      }
      return void 0;
    }
    var MAP = Symbol("map");
    var Headers3 = class _Headers {
      /**
       * Headers class
       *
       * @param   Object  headers  Response headers
       * @return  Void
       */
      constructor() {
        let init4 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : void 0;
        this[MAP] = /* @__PURE__ */ Object.create(null);
        if (init4 instanceof _Headers) {
          const rawHeaders = init4.raw();
          const headerNames = Object.keys(rawHeaders);
          for (const headerName of headerNames) {
            for (const value of rawHeaders[headerName]) {
              this.append(headerName, value);
            }
          }
          return;
        }
        if (init4 == null) ;
        else if (typeof init4 === "object") {
          const method = init4[Symbol.iterator];
          if (method != null) {
            if (typeof method !== "function") {
              throw new TypeError("Header pairs must be iterable");
            }
            const pairs2 = [];
            for (const pair of init4) {
              if (typeof pair !== "object" || typeof pair[Symbol.iterator] !== "function") {
                throw new TypeError("Each header pair must be iterable");
              }
              pairs2.push(Array.from(pair));
            }
            for (const pair of pairs2) {
              if (pair.length !== 2) {
                throw new TypeError("Each header pair must be a name/value tuple");
              }
              this.append(pair[0], pair[1]);
            }
          } else {
            for (const key2 of Object.keys(init4)) {
              const value = init4[key2];
              this.append(key2, value);
            }
          }
        } else {
          throw new TypeError("Provided initializer must be an object");
        }
      }
      /**
       * Return combined header value given name
       *
       * @param   String  name  Header name
       * @return  Mixed
       */
      get(name3) {
        name3 = `${name3}`;
        validateName2(name3);
        const key2 = find2(this[MAP], name3);
        if (key2 === void 0) {
          return null;
        }
        return this[MAP][key2].join(", ");
      }
      /**
       * Iterate over all headers
       *
       * @param   Function  callback  Executed for each item with parameters (value, name, thisArg)
       * @param   Boolean   thisArg   `this` context for callback function
       * @return  Void
       */
      forEach(callback) {
        let thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : void 0;
        let pairs2 = getHeaders(this);
        let i2 = 0;
        while (i2 < pairs2.length) {
          var _pairs$i = pairs2[i2];
          const name3 = _pairs$i[0], value = _pairs$i[1];
          callback.call(thisArg, value, name3, this);
          pairs2 = getHeaders(this);
          i2++;
        }
      }
      /**
       * Overwrite header values given name
       *
       * @param   String  name   Header name
       * @param   String  value  Header value
       * @return  Void
       */
      set(name3, value) {
        name3 = `${name3}`;
        value = `${value}`;
        validateName2(name3);
        validateValue(value);
        const key2 = find2(this[MAP], name3);
        this[MAP][key2 !== void 0 ? key2 : name3] = [value];
      }
      /**
       * Append a value onto existing header
       *
       * @param   String  name   Header name
       * @param   String  value  Header value
       * @return  Void
       */
      append(name3, value) {
        name3 = `${name3}`;
        value = `${value}`;
        validateName2(name3);
        validateValue(value);
        const key2 = find2(this[MAP], name3);
        if (key2 !== void 0) {
          this[MAP][key2].push(value);
        } else {
          this[MAP][name3] = [value];
        }
      }
      /**
       * Check for header name existence
       *
       * @param   String   name  Header name
       * @return  Boolean
       */
      has(name3) {
        name3 = `${name3}`;
        validateName2(name3);
        return find2(this[MAP], name3) !== void 0;
      }
      /**
       * Delete all header values given name
       *
       * @param   String  name  Header name
       * @return  Void
       */
      delete(name3) {
        name3 = `${name3}`;
        validateName2(name3);
        const key2 = find2(this[MAP], name3);
        if (key2 !== void 0) {
          delete this[MAP][key2];
        }
      }
      /**
       * Return raw headers (non-spec api)
       *
       * @return  Object
       */
      raw() {
        return this[MAP];
      }
      /**
       * Get an iterator on keys.
       *
       * @return  Iterator
       */
      keys() {
        return createHeadersIterator(this, "key");
      }
      /**
       * Get an iterator on values.
       *
       * @return  Iterator
       */
      values() {
        return createHeadersIterator(this, "value");
      }
      /**
       * Get an iterator on entries.
       *
       * This is the default iterator of the Headers object.
       *
       * @return  Iterator
       */
      [Symbol.iterator]() {
        return createHeadersIterator(this, "key+value");
      }
    };
    Headers3.prototype.entries = Headers3.prototype[Symbol.iterator];
    Object.defineProperty(Headers3.prototype, Symbol.toStringTag, {
      value: "Headers",
      writable: false,
      enumerable: false,
      configurable: true
    });
    Object.defineProperties(Headers3.prototype, {
      get: { enumerable: true },
      forEach: { enumerable: true },
      set: { enumerable: true },
      append: { enumerable: true },
      has: { enumerable: true },
      delete: { enumerable: true },
      keys: { enumerable: true },
      values: { enumerable: true },
      entries: { enumerable: true }
    });
    function getHeaders(headers) {
      let kind = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "key+value";
      const keys2 = Object.keys(headers[MAP]).sort();
      return keys2.map(kind === "key" ? function(k) {
        return k.toLowerCase();
      } : kind === "value" ? function(k) {
        return headers[MAP][k].join(", ");
      } : function(k) {
        return [k.toLowerCase(), headers[MAP][k].join(", ")];
      });
    }
    var INTERNAL = Symbol("internal");
    function createHeadersIterator(target, kind) {
      const iterator = Object.create(HeadersIteratorPrototype);
      iterator[INTERNAL] = {
        target,
        kind,
        index: 0
      };
      return iterator;
    }
    var HeadersIteratorPrototype = Object.setPrototypeOf({
      next() {
        if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
          throw new TypeError("Value of `this` is not a HeadersIterator");
        }
        var _INTERNAL = this[INTERNAL];
        const target = _INTERNAL.target, kind = _INTERNAL.kind, index4 = _INTERNAL.index;
        const values = getHeaders(target, kind);
        const len = values.length;
        if (index4 >= len) {
          return {
            value: void 0,
            done: true
          };
        }
        this[INTERNAL].index = index4 + 1;
        return {
          value: values[index4],
          done: false
        };
      }
    }, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
    Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
      value: "HeadersIterator",
      writable: false,
      enumerable: false,
      configurable: true
    });
    function exportNodeCompatibleHeaders(headers) {
      const obj = Object.assign({ __proto__: null }, headers[MAP]);
      const hostHeaderKey = find2(headers[MAP], "Host");
      if (hostHeaderKey !== void 0) {
        obj[hostHeaderKey] = obj[hostHeaderKey][0];
      }
      return obj;
    }
    function createHeadersLenient(obj) {
      const headers = new Headers3();
      for (const name3 of Object.keys(obj)) {
        if (invalidTokenRegex.test(name3)) {
          continue;
        }
        if (Array.isArray(obj[name3])) {
          for (const val of obj[name3]) {
            if (invalidHeaderCharRegex.test(val)) {
              continue;
            }
            if (headers[MAP][name3] === void 0) {
              headers[MAP][name3] = [val];
            } else {
              headers[MAP][name3].push(val);
            }
          }
        } else if (!invalidHeaderCharRegex.test(obj[name3])) {
          headers[MAP][name3] = [obj[name3]];
        }
      }
      return headers;
    }
    var INTERNALS$1 = Symbol("Response internals");
    var STATUS_CODES = http5.STATUS_CODES;
    var Response3 = class _Response {
      constructor() {
        let body3 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null;
        let opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
        Body2.call(this, body3, opts);
        const status = opts.status || 200;
        const headers = new Headers3(opts.headers);
        if (body3 != null && !headers.has("Content-Type")) {
          const contentType = extractContentType2(body3);
          if (contentType) {
            headers.append("Content-Type", contentType);
          }
        }
        this[INTERNALS$1] = {
          url: opts.url,
          status,
          statusText: opts.statusText || STATUS_CODES[status],
          headers,
          counter: opts.counter
        };
      }
      get url() {
        return this[INTERNALS$1].url || "";
      }
      get status() {
        return this[INTERNALS$1].status;
      }
      /**
       * Convenience property representing if the request ended normally
       */
      get ok() {
        return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
      }
      get redirected() {
        return this[INTERNALS$1].counter > 0;
      }
      get statusText() {
        return this[INTERNALS$1].statusText;
      }
      get headers() {
        return this[INTERNALS$1].headers;
      }
      /**
       * Clone this response
       *
       * @return  Response
       */
      clone() {
        return new _Response(clone3(this), {
          url: this.url,
          status: this.status,
          statusText: this.statusText,
          headers: this.headers,
          ok: this.ok,
          redirected: this.redirected
        });
      }
    };
    Body2.mixIn(Response3.prototype);
    Object.defineProperties(Response3.prototype, {
      url: { enumerable: true },
      status: { enumerable: true },
      ok: { enumerable: true },
      redirected: { enumerable: true },
      statusText: { enumerable: true },
      headers: { enumerable: true },
      clone: { enumerable: true }
    });
    Object.defineProperty(Response3.prototype, Symbol.toStringTag, {
      value: "Response",
      writable: false,
      enumerable: false,
      configurable: true
    });
    var INTERNALS$2 = Symbol("Request internals");
    var URL4 = Url.URL || whatwgUrl.URL;
    var parse_url = Url.parse;
    var format_url = Url.format;
    function parseURL(urlStr) {
      if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) {
        urlStr = new URL4(urlStr).toString();
      }
      return parse_url(urlStr);
    }
    var streamDestructionSupported = "destroy" in Stream4.Readable.prototype;
    function isRequest3(input3) {
      return typeof input3 === "object" && typeof input3[INTERNALS$2] === "object";
    }
    function isAbortSignal2(signal) {
      const proto9 = signal && typeof signal === "object" && Object.getPrototypeOf(signal);
      return !!(proto9 && proto9.constructor.name === "AbortSignal");
    }
    var Request4 = class _Request {
      constructor(input3) {
        let init4 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
        let parsedURL;
        if (!isRequest3(input3)) {
          if (input3 && input3.href) {
            parsedURL = parseURL(input3.href);
          } else {
            parsedURL = parseURL(`${input3}`);
          }
          input3 = {};
        } else {
          parsedURL = parseURL(input3.url);
        }
        let method = init4.method || input3.method || "GET";
        method = method.toUpperCase();
        if ((init4.body != null || isRequest3(input3) && input3.body !== null) && (method === "GET" || method === "HEAD")) {
          throw new TypeError("Request with GET/HEAD method cannot have body");
        }
        let inputBody = init4.body != null ? init4.body : isRequest3(input3) && input3.body !== null ? clone3(input3) : null;
        Body2.call(this, inputBody, {
          timeout: init4.timeout || input3.timeout || 0,
          size: init4.size || input3.size || 0
        });
        const headers = new Headers3(init4.headers || input3.headers || {});
        if (inputBody != null && !headers.has("Content-Type")) {
          const contentType = extractContentType2(inputBody);
          if (contentType) {
            headers.append("Content-Type", contentType);
          }
        }
        let signal = isRequest3(input3) ? input3.signal : null;
        if ("signal" in init4) signal = init4.signal;
        if (signal != null && !isAbortSignal2(signal)) {
          throw new TypeError("Expected signal to be an instanceof AbortSignal");
        }
        this[INTERNALS$2] = {
          method,
          redirect: init4.redirect || input3.redirect || "follow",
          headers,
          parsedURL,
          signal
        };
        this.follow = init4.follow !== void 0 ? init4.follow : input3.follow !== void 0 ? input3.follow : 20;
        this.compress = init4.compress !== void 0 ? init4.compress : input3.compress !== void 0 ? input3.compress : true;
        this.counter = init4.counter || input3.counter || 0;
        this.agent = init4.agent || input3.agent;
      }
      get method() {
        return this[INTERNALS$2].method;
      }
      get url() {
        return format_url(this[INTERNALS$2].parsedURL);
      }
      get headers() {
        return this[INTERNALS$2].headers;
      }
      get redirect() {
        return this[INTERNALS$2].redirect;
      }
      get signal() {
        return this[INTERNALS$2].signal;
      }
      /**
       * Clone this request
       *
       * @return  Request
       */
      clone() {
        return new _Request(this);
      }
    };
    Body2.mixIn(Request4.prototype);
    Object.defineProperty(Request4.prototype, Symbol.toStringTag, {
      value: "Request",
      writable: false,
      enumerable: false,
      configurable: true
    });
    Object.defineProperties(Request4.prototype, {
      method: { enumerable: true },
      url: { enumerable: true },
      headers: { enumerable: true },
      redirect: { enumerable: true },
      clone: { enumerable: true },
      signal: { enumerable: true }
    });
    function getNodeRequestOptions2(request) {
      const parsedURL = request[INTERNALS$2].parsedURL;
      const headers = new Headers3(request[INTERNALS$2].headers);
      if (!headers.has("Accept")) {
        headers.set("Accept", "*/*");
      }
      if (!parsedURL.protocol || !parsedURL.hostname) {
        throw new TypeError("Only absolute URLs are supported");
      }
      if (!/^https?:$/.test(parsedURL.protocol)) {
        throw new TypeError("Only HTTP(S) protocols are supported");
      }
      if (request.signal && request.body instanceof Stream4.Readable && !streamDestructionSupported) {
        throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8");
      }
      let contentLengthValue = null;
      if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
        contentLengthValue = "0";
      }
      if (request.body != null) {
        const totalBytes = getTotalBytes2(request);
        if (typeof totalBytes === "number") {
          contentLengthValue = String(totalBytes);
        }
      }
      if (contentLengthValue) {
        headers.set("Content-Length", contentLengthValue);
      }
      if (!headers.has("User-Agent")) {
        headers.set("User-Agent", "node-fetch/1.0 (+https://github.com/bitinn/node-fetch)");
      }
      if (request.compress && !headers.has("Accept-Encoding")) {
        headers.set("Accept-Encoding", "gzip,deflate");
      }
      let agent = request.agent;
      if (typeof agent === "function") {
        agent = agent(parsedURL);
      }
      if (!headers.has("Connection") && !agent) {
        headers.set("Connection", "close");
      }
      return Object.assign({}, parsedURL, {
        method: request.method,
        headers: exportNodeCompatibleHeaders(headers),
        agent
      });
    }
    function AbortError3(message) {
      Error.call(this, message);
      this.type = "aborted";
      this.message = message;
      Error.captureStackTrace(this, this.constructor);
    }
    AbortError3.prototype = Object.create(Error.prototype);
    AbortError3.prototype.constructor = AbortError3;
    AbortError3.prototype.name = "AbortError";
    var URL$1 = Url.URL || whatwgUrl.URL;
    var PassThrough$1 = Stream4.PassThrough;
    var isDomainOrSubdomain2 = function isDomainOrSubdomain3(destination, original) {
      const orig = new URL$1(original).hostname;
      const dest = new URL$1(destination).hostname;
      return orig === dest || orig[orig.length - dest.length - 1] === "." && orig.endsWith(dest);
    };
    var isSameProtocol2 = function isSameProtocol3(destination, original) {
      const orig = new URL$1(original).protocol;
      const dest = new URL$1(destination).protocol;
      return orig === dest;
    };
    function fetch3(url, opts) {
      if (!fetch3.Promise) {
        throw new Error("native promise missing, set fetch.Promise to your favorite alternative");
      }
      Body2.Promise = fetch3.Promise;
      return new fetch3.Promise(function(resolve9, reject) {
        const request = new Request4(url, opts);
        const options = getNodeRequestOptions2(request);
        const send = (options.protocol === "https:" ? https3 : http5).request;
        const signal = request.signal;
        let response = null;
        const abort = function abort2() {
          let error = new AbortError3("The user aborted a request.");
          reject(error);
          if (request.body && request.body instanceof Stream4.Readable) {
            destroyStream(request.body, error);
          }
          if (!response || !response.body) return;
          response.body.emit("error", error);
        };
        if (signal && signal.aborted) {
          abort();
          return;
        }
        const abortAndFinalize = function abortAndFinalize2() {
          abort();
          finalize2();
        };
        const req = send(options);
        let reqTimeout;
        if (signal) {
          signal.addEventListener("abort", abortAndFinalize);
        }
        function finalize2() {
          req.abort();
          if (signal) signal.removeEventListener("abort", abortAndFinalize);
          clearTimeout(reqTimeout);
        }
        if (request.timeout) {
          req.once("socket", function(socket) {
            reqTimeout = setTimeout(function() {
              reject(new FetchError2(`network timeout at: ${request.url}`, "request-timeout"));
              finalize2();
            }, request.timeout);
          });
        }
        req.on("error", function(err) {
          reject(new FetchError2(`request to ${request.url} failed, reason: ${err.message}`, "system", err));
          if (response && response.body) {
            destroyStream(response.body, err);
          }
          finalize2();
        });
        fixResponseChunkedTransferBadEnding2(req, function(err) {
          if (signal && signal.aborted) {
            return;
          }
          if (response && response.body) {
            destroyStream(response.body, err);
          }
        });
        if (parseInt(process.version.substring(1)) < 14) {
          req.on("socket", function(s5) {
            s5.addListener("close", function(hadError) {
              const hasDataListener = s5.listenerCount("data") > 0;
              if (response && hasDataListener && !hadError && !(signal && signal.aborted)) {
                const err = new Error("Premature close");
                err.code = "ERR_STREAM_PREMATURE_CLOSE";
                response.body.emit("error", err);
              }
            });
          });
        }
        req.on("response", function(res) {
          clearTimeout(reqTimeout);
          const headers = createHeadersLenient(res.headers);
          if (fetch3.isRedirect(res.statusCode)) {
            const location4 = headers.get("Location");
            let locationURL = null;
            try {
              locationURL = location4 === null ? null : new URL$1(location4, request.url).toString();
            } catch (err) {
              if (request.redirect !== "manual") {
                reject(new FetchError2(`uri requested responds with an invalid redirect URL: ${location4}`, "invalid-redirect"));
                finalize2();
                return;
              }
            }
            switch (request.redirect) {
              case "error":
                reject(new FetchError2(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, "no-redirect"));
                finalize2();
                return;
              case "manual":
                if (locationURL !== null) {
                  try {
                    headers.set("Location", locationURL);
                  } catch (err) {
                    reject(err);
                  }
                }
                break;
              case "follow":
                if (locationURL === null) {
                  break;
                }
                if (request.counter >= request.follow) {
                  reject(new FetchError2(`maximum redirect reached at: ${request.url}`, "max-redirect"));
                  finalize2();
                  return;
                }
                const requestOpts = {
                  headers: new Headers3(request.headers),
                  follow: request.follow,
                  counter: request.counter + 1,
                  agent: request.agent,
                  compress: request.compress,
                  method: request.method,
                  body: request.body,
                  signal: request.signal,
                  timeout: request.timeout,
                  size: request.size
                };
                if (!isDomainOrSubdomain2(request.url, locationURL) || !isSameProtocol2(request.url, locationURL)) {
                  for (const name3 of ["authorization", "www-authenticate", "cookie", "cookie2"]) {
                    requestOpts.headers.delete(name3);
                  }
                }
                if (res.statusCode !== 303 && request.body && getTotalBytes2(request) === null) {
                  reject(new FetchError2("Cannot follow redirect with body being a readable stream", "unsupported-redirect"));
                  finalize2();
                  return;
                }
                if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === "POST") {
                  requestOpts.method = "GET";
                  requestOpts.body = void 0;
                  requestOpts.headers.delete("content-length");
                }
                resolve9(fetch3(new Request4(locationURL, requestOpts)));
                finalize2();
                return;
            }
          }
          res.once("end", function() {
            if (signal) signal.removeEventListener("abort", abortAndFinalize);
          });
          let body3 = res.pipe(new PassThrough$1());
          const response_options = {
            url: request.url,
            status: res.statusCode,
            statusText: res.statusMessage,
            headers,
            size: request.size,
            timeout: request.timeout,
            counter: request.counter
          };
          const codings = headers.get("Content-Encoding");
          if (!request.compress || request.method === "HEAD" || codings === null || res.statusCode === 204 || res.statusCode === 304) {
            response = new Response3(body3, response_options);
            resolve9(response);
            return;
          }
          const zlibOptions = {
            flush: zlib3.Z_SYNC_FLUSH,
            finishFlush: zlib3.Z_SYNC_FLUSH
          };
          if (codings == "gzip" || codings == "x-gzip") {
            body3 = body3.pipe(zlib3.createGunzip(zlibOptions));
            response = new Response3(body3, response_options);
            resolve9(response);
            return;
          }
          if (codings == "deflate" || codings == "x-deflate") {
            const raw2 = res.pipe(new PassThrough$1());
            raw2.once("data", function(chunk) {
              if ((chunk[0] & 15) === 8) {
                body3 = body3.pipe(zlib3.createInflate());
              } else {
                body3 = body3.pipe(zlib3.createInflateRaw());
              }
              response = new Response3(body3, response_options);
              resolve9(response);
            });
            raw2.on("end", function() {
              if (!response) {
                response = new Response3(body3, response_options);
                resolve9(response);
              }
            });
            return;
          }
          if (codings == "br" && typeof zlib3.createBrotliDecompress === "function") {
            body3 = body3.pipe(zlib3.createBrotliDecompress());
            response = new Response3(body3, response_options);
            resolve9(response);
            return;
          }
          response = new Response3(body3, response_options);
          resolve9(response);
        });
        writeToStream2(req, request);
      });
    }
    function fixResponseChunkedTransferBadEnding2(request, errorCallback) {
      let socket;
      request.on("socket", function(s5) {
        socket = s5;
      });
      request.on("response", function(response) {
        const headers = response.headers;
        if (headers["transfer-encoding"] === "chunked" && !headers["content-length"]) {
          response.once("close", function(hadError) {
            const hasDataListener = socket && socket.listenerCount("data") > 0;
            if (hasDataListener && !hadError) {
              const err = new Error("Premature close");
              err.code = "ERR_STREAM_PREMATURE_CLOSE";
              errorCallback(err);
            }
          });
        }
      });
    }
    function destroyStream(stream3, err) {
      if (stream3.destroy) {
        stream3.destroy(err);
      } else {
        stream3.emit("error", err);
        stream3.end();
      }
    }
    fetch3.isRedirect = function(code7) {
      return code7 === 301 || code7 === 302 || code7 === 303 || code7 === 307 || code7 === 308;
    };
    fetch3.Promise = global.Promise;
    module2.exports = exports2 = fetch3;
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.default = exports2;
    exports2.Headers = Headers3;
    exports2.Request = Request4;
    exports2.Response = Response3;
    exports2.FetchError = FetchError2;
  }
});

// ../../node_modules/fetch-ponyfill/fetch-node.js
var require_fetch_node = __commonJS({
  "../../node_modules/fetch-ponyfill/fetch-node.js"(exports2, module2) {
    "use strict";
    var fetch3 = require_lib5();
    function wrapFetchForNode(fetch4) {
      return function(u3, options) {
        if (typeof u3 === "string" && u3.slice(0, 2) === "//") {
          return fetch4("https:" + u3, options);
        }
        return fetch4(u3, options);
      };
    }
    module2.exports = function(context) {
      var fetchFn = fetch3.default ? fetch3.default : fetch3;
      if (context && context.Promise) {
        fetchFn.Promise = context.Promise;
      }
      return {
        fetch: wrapFetchForNode(fetchFn),
        Headers: fetch3.Headers,
        Request: fetch3.Request,
        Response: fetch3.Response
      };
    };
  }
});

// ../../node_modules/@citation-js/core/package.json
var require_package = __commonJS({
  "../../node_modules/@citation-js/core/package.json"(exports2, module2) {
    module2.exports = {
      name: "@citation-js/core",
      version: "0.7.18",
      description: "Convert different bibliographic metadata sources",
      keywords: [
        "citation-js",
        "citation",
        "bibliography"
      ],
      author: "Lars Willighagen <lars.willighagen@gmail.com>",
      license: "MIT",
      main: "lib/index.js",
      module: "lib-mjs/index.js",
      directories: {
        lib: "src",
        test: "__tests__"
      },
      homepage: "https://citation.js.org/",
      repository: {
        type: "git",
        url: "https://github.com/citation-js/citation-js.git",
        directory: "packages/core"
      },
      bugs: {
        url: "https://github.com/citation-js/citation-js/issues"
      },
      engines: {
        node: ">=16.0.0"
      },
      files: [
        "lib",
        "lib-mjs"
      ],
      scripts: {
        test: "mocha -c -R dot test/*.spec.js"
      },
      dependencies: {
        "@citation-js/date": "^0.5.0",
        "@citation-js/name": "^0.4.2",
        "fetch-ponyfill": "^7.1.0",
        "sync-fetch": "^0.4.1"
      },
      gitHead: "c4ac806070502051e36cf3ab8ad29f3d97e85978"
    };
  }
});

// ../../node_modules/@citation-js/core/lib/util/fetchFile.js
var require_fetchFile = __commonJS({
  "../../node_modules/@citation-js/core/lib/util/fetchFile.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    exports2.fetchFile = fetchFile;
    exports2.fetchFileAsync = fetchFileAsync;
    exports2.setUserAgent = setUserAgent;
    var _syncFetch = _interopRequireDefault3(require_sync_fetch());
    var _fetchPonyfill = _interopRequireDefault3(require_fetch_node());
    var _logger = _interopRequireDefault3(require_logger());
    var _package = _interopRequireDefault3(require_package());
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    var isBrowser = typeof location !== "undefined" && typeof navigator !== "undefined";
    var {
      fetch: asyncFetch,
      Headers: asyncHeaders
    } = typeof fetch === "function" && isBrowser ? {
      fetch,
      Headers
    } : (0, _fetchPonyfill.default)();
    var userAgent = `Citation.js/${_package.default.version}`;
    if (typeof process !== "undefined" && process && process.release && process.release.name === "node" && process.version) {
      userAgent += ` Node.js/${process.version}`;
    }
    function normaliseHeaders(headers) {
      const result = {};
      const entries2 = headers instanceof asyncHeaders || headers instanceof _syncFetch.default.Headers ? Array.from(headers) : Object.entries(headers);
      for (const [name3, header] of entries2) {
        result[name3.toLowerCase()] = header.toString();
      }
      return result;
    }
    function parseOpts(opts = {}) {
      const reqOpts = {
        headers: {
          accept: "*/*"
        },
        method: "GET",
        checkContentType: opts.checkContentType
      };
      if (userAgent && !isBrowser) {
        reqOpts.headers["user-agent"] = userAgent;
      }
      if (opts.body) {
        reqOpts.method = "POST";
        const isJson = typeof opts.body !== "string";
        reqOpts.body = isJson ? JSON.stringify(opts.body) : opts.body;
        reqOpts.headers["content-type"] = isJson ? "application/json" : "text/plain";
      }
      if (opts.headers) {
        Object.assign(reqOpts.headers, normaliseHeaders(opts.headers));
      }
      return reqOpts;
    }
    function sameType(request, response) {
      if (!request.accept || request.accept === "*/*" || !response["content-type"]) {
        return true;
      }
      const [a2, b] = response["content-type"].split(";")[0].trim().split("/");
      return request.accept.split(",").map((type2) => type2.split(";")[0].trim().split("/")).some(([c, d]) => (c === a2 || c === "*") && (d === b || d === "*"));
    }
    function checkResponse(response, opts) {
      const {
        status,
        headers
      } = response;
      let error;
      if (status >= 400) {
        error = new Error(`Server responded with status code ${status}`);
      } else if (opts.checkContentType === true && !sameType(opts.headers, normaliseHeaders(headers))) {
        error = new Error(`Server responded with content-type ${headers.get("content-type")}`);
      }
      if (error) {
        error.status = status;
        error.headers = headers;
        error.body = response.body;
        throw error;
      }
      return response;
    }
    function fetchFile(url, opts) {
      const reqOpts = parseOpts(opts);
      _logger.default.http("[core]", reqOpts.method, url, reqOpts);
      const response = checkResponse((0, _syncFetch.default)(url, reqOpts), reqOpts);
      return response.text();
    }
    async function fetchFileAsync(url, opts) {
      const reqOpts = parseOpts(opts);
      _logger.default.http("[core]", reqOpts.method, url, reqOpts);
      return asyncFetch(url, reqOpts).then((response) => checkResponse(response, reqOpts)).then((response) => response.text());
    }
    function setUserAgent(newUserAgent) {
      userAgent = newUserAgent;
    }
    var _default2 = exports2.default = fetchFile;
  }
});

// ../../node_modules/@citation-js/core/lib/util/fetchId.js
var require_fetchId = __commonJS({
  "../../node_modules/@citation-js/core/lib/util/fetchId.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    function fetchId(list6, prefix2) {
      let id;
      while (id === void 0 || list6.includes(id)) {
        id = `${prefix2}${Math.random().toString().slice(2)}`;
      }
      return id;
    }
    var _default2 = exports2.default = fetchId;
  }
});

// ../../node_modules/@citation-js/core/lib/util/stack.js
var require_stack = __commonJS({
  "../../node_modules/@citation-js/core/lib/util/stack.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    var TokenStack = class _TokenStack {
      constructor(array) {
        this.stack = array;
        this.index = 0;
        this.current = this.stack[this.index];
      }
      static getPatternText(pattern) {
        return `"${pattern instanceof RegExp ? pattern.source : pattern}"`;
      }
      static getMatchCallback(pattern) {
        if (Array.isArray(pattern)) {
          const matches4 = pattern.map(_TokenStack.getMatchCallback);
          return (token) => matches4.some((matchCallback) => matchCallback(token));
        } else if (pattern instanceof Function) {
          return pattern;
        } else if (pattern instanceof RegExp) {
          return (token) => pattern.test(token);
        } else {
          return (token) => pattern === token;
        }
      }
      tokensLeft() {
        return this.stack.length - this.index;
      }
      matches(pattern) {
        return _TokenStack.getMatchCallback(pattern)(this.current, this.index, this.stack);
      }
      matchesSequence(sequence) {
        const part = this.stack.slice(this.index, this.index + sequence.length).join("");
        return typeof sequence === "string" ? part === sequence : sequence.every((pattern, index4) => _TokenStack.getMatchCallback(pattern)(part[index4]));
      }
      consumeToken(pattern = /^[\s\S]$/, {
        inverse = false,
        spaced = true
      } = {}) {
        if (spaced) {
          this.consumeWhitespace();
        }
        const token = this.current;
        const match3 = _TokenStack.getMatchCallback(pattern)(token, this.index, this.stack);
        if (match3) {
          this.current = this.stack[++this.index];
        } else {
          throw new SyntaxError(`Unexpected token at index ${this.index}: Expected ${_TokenStack.getPatternText(pattern)}, got "${token}"`);
        }
        if (spaced) {
          this.consumeWhitespace();
        }
        return token;
      }
      consumeWhitespace(pattern = /^\s$/, {
        optional = true
      } = {}) {
        return this.consume(pattern, {
          min: +!optional
        });
      }
      consumeN(length) {
        if (this.tokensLeft() < length) {
          throw new SyntaxError("Not enough tokens left");
        }
        const start = this.index;
        while (length--) {
          this.current = this.stack[++this.index];
        }
        return this.stack.slice(start, this.index).join("");
      }
      consumeSequence(sequence) {
        if (this.matchesSequence(sequence)) {
          return this.consumeN(sequence.length);
        } else {
          throw new SyntaxError(`Expected "${sequence}", got "${this.consumeN(sequence.length)}"`);
        }
      }
      consume(pattern = /^[\s\S]$/, {
        min = 0,
        max = Infinity,
        inverse = false,
        tokenMap,
        tokenFilter
      } = {}) {
        const start = this.index;
        const match3 = _TokenStack.getMatchCallback(pattern);
        while (match3(this.current, this.index, this.stack) !== inverse) {
          this.current = this.stack[++this.index];
        }
        let consumed = this.stack.slice(start, this.index);
        if (consumed.length < min) {
          throw new SyntaxError(`Not enough ${_TokenStack.getPatternText(pattern)}`);
        } else if (consumed.length > max) {
          throw new SyntaxError(`Too many ${_TokenStack.getPatternText(pattern)}`);
        }
        if (tokenMap) {
          consumed = consumed.map(tokenMap);
        }
        if (tokenFilter) {
          consumed = consumed.filter(tokenFilter);
        }
        return consumed.join("");
      }
    };
    var _default2 = exports2.default = TokenStack;
  }
});

// ../../node_modules/@citation-js/core/lib/util/register.js
var require_register2 = __commonJS({
  "../../node_modules/@citation-js/core/lib/util/register.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    var Register = class {
      constructor(data = {}) {
        this.data = data;
      }
      set(key2, value) {
        this.data[key2] = value;
        return this;
      }
      add(...args) {
        return this.set(...args);
      }
      delete(key2) {
        delete this.data[key2];
        return this;
      }
      remove(...args) {
        return this.delete(...args);
      }
      get(key2) {
        return this.data[key2];
      }
      has(key2) {
        return Object.prototype.hasOwnProperty.call(this.data, key2);
      }
      list() {
        return Object.keys(this.data);
      }
    };
    var _default2 = exports2.default = Register;
  }
});

// ../../node_modules/@citation-js/core/lib/util/grammar.js
var require_grammar = __commonJS({
  "../../node_modules/@citation-js/core/lib/util/grammar.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.Grammar = void 0;
    var _deepCopy = require_deepCopy();
    var Grammar = class {
      constructor(rules, state) {
        this.rules = rules;
        this.defaultState = state;
        this.mainRule = Object.keys(rules)[0];
        this.log = [];
      }
      parse(iterator, mainRule) {
        this.lexer = iterator;
        this.token = this.lexer.next();
        this.state = (0, _deepCopy.deepCopy)(this.defaultState);
        this.log = [];
        return this.consumeRule(mainRule || this.mainRule);
      }
      matchEndOfFile() {
        return !this.token;
      }
      matchToken(type2) {
        return this.token && type2 === this.token.type;
      }
      consumeToken(type2, optional) {
        const token = this.token;
        if (!type2 || token && token.type === type2) {
          this.token = this.lexer.next();
          return token;
        } else if (optional) {
          return void 0;
        } else {
          const got2 = token ? `"${token.type}"` : "EOF";
          const error = new SyntaxError(this.lexer.formatError(token, `expected "${type2}", got ${got2}`));
          error.message += ` (${this.log.join("->")})`;
          throw error;
        }
      }
      consumeRule(rule) {
        this.log.push(rule);
        const result = this.rules[rule].call(this);
        this.log.pop();
        return result;
      }
    };
    exports2.Grammar = Grammar;
  }
});

// ../../node_modules/@citation-js/core/lib/util/translator.js
var require_translator = __commonJS({
  "../../node_modules/@citation-js/core/lib/util/translator.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.Translator = void 0;
    function createConditionEval(condition) {
      return function conditionEval(input3) {
        if (typeof condition === "boolean") {
          return condition;
        }
        return Object.keys(condition).every((prop) => {
          const value = condition[prop];
          if (value === true) {
            return prop in input3;
          } else if (value === false) {
            return !(prop in input3);
          } else if (typeof value === "function") {
            return value(input3[prop]);
          } else if (Array.isArray(value)) {
            return value.includes(input3[prop]);
          } else {
            return input3[prop] === value;
          }
        });
      };
    }
    function parsePropStatement(prop, toSource) {
      let inputProp;
      let outputProp;
      let convert6;
      let condition;
      if (typeof prop === "string") {
        inputProp = outputProp = prop;
      } else if (prop) {
        inputProp = toSource ? prop.target : prop.source;
        outputProp = toSource ? prop.source : prop.target;
        if (prop.convert) {
          convert6 = toSource ? prop.convert.toSource : prop.convert.toTarget;
        }
        if (prop.when) {
          condition = toSource ? prop.when.target : prop.when.source;
          if (condition != null) {
            condition = createConditionEval(condition);
          }
        }
      } else {
        return null;
      }
      inputProp = [].concat(inputProp).filter(Boolean);
      outputProp = [].concat(outputProp).filter(Boolean);
      return {
        inputProp,
        outputProp,
        convert: convert6,
        condition
      };
    }
    function createConverter(props, toSource) {
      toSource = toSource === Translator.CONVERT_TO_SOURCE;
      props = props.map((prop) => parsePropStatement(prop, toSource)).filter(Boolean);
      return function converter(input3) {
        const output2 = {};
        for (const {
          inputProp,
          outputProp,
          convert: convert6,
          condition
        } of props) {
          if (outputProp.length === 0) {
            continue;
          } else if (condition && !condition(input3)) {
            continue;
          } else if (inputProp.length !== 0 && inputProp.every((prop) => !(prop in input3))) {
            continue;
          }
          let outputData = inputProp.map((prop) => input3[prop]);
          if (convert6) {
            try {
              const converted = convert6.apply(input3, outputData);
              outputData = outputProp.length === 1 ? [converted] : converted;
            } catch (cause) {
              throw new Error(`Failed to convert ${inputProp} to ${outputProp}`, {
                cause
              });
            }
          }
          outputProp.forEach((prop, index4) => {
            const value = outputData[index4];
            if (value !== void 0) {
              output2[prop] = value;
            }
          });
        }
        return output2;
      };
    }
    var Translator = class _Translator {
      constructor(props) {
        this.convertToSource = createConverter(props, _Translator.CONVERT_TO_SOURCE);
        this.convertToTarget = createConverter(props, _Translator.CONVERT_TO_TARGET);
      }
    };
    exports2.Translator = Translator;
    Translator.CONVERT_TO_SOURCE = Symbol("convert to source");
    Translator.CONVERT_TO_TARGET = Symbol("convert to target");
  }
});

// ../../node_modules/@citation-js/core/lib/util/index.js
var require_util = __commonJS({
  "../../node_modules/@citation-js/core/lib/util/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    Object.defineProperty(exports2, "Grammar", {
      enumerable: true,
      get: function() {
        return _grammar.Grammar;
      }
    });
    Object.defineProperty(exports2, "Register", {
      enumerable: true,
      get: function() {
        return _register.default;
      }
    });
    Object.defineProperty(exports2, "TokenStack", {
      enumerable: true,
      get: function() {
        return _stack.default;
      }
    });
    Object.defineProperty(exports2, "Translator", {
      enumerable: true,
      get: function() {
        return _translator.Translator;
      }
    });
    Object.defineProperty(exports2, "deepCopy", {
      enumerable: true,
      get: function() {
        return _deepCopy.default;
      }
    });
    Object.defineProperty(exports2, "downgradeCsl", {
      enumerable: true,
      get: function() {
        return _csl.downgradeCsl;
      }
    });
    Object.defineProperty(exports2, "fetchFile", {
      enumerable: true,
      get: function() {
        return _fetchFile.fetchFile;
      }
    });
    Object.defineProperty(exports2, "fetchFileAsync", {
      enumerable: true,
      get: function() {
        return _fetchFile.fetchFileAsync;
      }
    });
    Object.defineProperty(exports2, "fetchId", {
      enumerable: true,
      get: function() {
        return _fetchId.default;
      }
    });
    Object.defineProperty(exports2, "setUserAgent", {
      enumerable: true,
      get: function() {
        return _fetchFile.setUserAgent;
      }
    });
    Object.defineProperty(exports2, "upgradeCsl", {
      enumerable: true,
      get: function() {
        return _csl.upgradeCsl;
      }
    });
    var _csl = require_csl2();
    var _deepCopy = _interopRequireDefault3(require_deepCopy());
    var _fetchFile = require_fetchFile();
    var _fetchId = _interopRequireDefault3(require_fetchId());
    var _stack = _interopRequireDefault3(require_stack());
    var _register = _interopRequireDefault3(require_register2());
    var _grammar = require_grammar();
    var _translator = require_translator();
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
  }
});

// ../../node_modules/@citation-js/core/lib/plugins/input/chain.js
var require_chain = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugins/input/chain.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.chainLinkAsync = exports2.chainLink = exports2.chainAsync = exports2.chain = void 0;
    var _index4 = require_util();
    var _logger = _interopRequireDefault3(require_logger());
    var _register = require_register();
    var _type3 = require_type();
    var _data = require_data();
    var _graph = require_graph();
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    function prepareParseGraph(graph) {
      return graph.reduce((array, next) => {
        const last = array[array.length - 1];
        if (last && last.type === next.type) {
          last.count = last.count + 1 || 2;
        } else {
          array.push(next);
        }
        return array;
      }, []).map((element5) => (element5.count > 1 ? element5.count + "x " : "") + element5.type).join(" -> ");
    }
    var ChainParser = class {
      constructor(input3, options = {}) {
        this.options = Object.assign({
          generateGraph: true,
          forceType: (0, _type3.type)(input3),
          maxChainLength: 10,
          strict: true,
          target: "@csl/list+object"
        }, options);
        this.type = this.options.forceType;
        this.data = typeof input3 === "object" ? (0, _index4.deepCopy)(input3) : input3;
        this.graph = [{
          type: this.type,
          data: input3
        }];
        this.iteration = 0;
      }
      iterate() {
        if (this.iteration !== 0) {
          const typeInfo = (0, _register.get)(this.type);
          if (typeInfo && typeInfo.outputs) {
            this.type = typeInfo.outputs;
          } else {
            this.type = (0, _type3.type)(this.data);
          }
          this.graph.push({
            type: this.type
          });
        }
        if (this.error || this.type === this.options.target) {
          return false;
        } else if (this.iteration >= this.options.maxChainLength) {
          this.error = new RangeError(`Max. number of parsing iterations reached (${prepareParseGraph(this.graph)})`);
          return false;
        } else {
          this.iteration++;
          return true;
        }
      }
      end() {
        if (this.error) {
          _logger.default.error("[core]", this.error.message);
          if (this.options.strict !== false) {
            throw this.error;
          } else {
            return [];
          }
        } else if (this.options.target === "@csl/list+object") {
          return (0, _index4.upgradeCsl)(this.data).map(this.options.generateGraph ? (entry) => (0, _graph.applyGraph)(entry, this.graph) : _graph.removeGraph);
        } else {
          return this.data;
        }
      }
    };
    var chain = (...args) => {
      const chain2 = new ChainParser(...args);
      while (chain2.iterate()) {
        try {
          chain2.data = (0, _data.data)(chain2.data, chain2.type);
        } catch (e2) {
          chain2.error = e2;
        }
      }
      return chain2.end();
    };
    exports2.chain = chain;
    var chainLink = (input3) => {
      const type2 = (0, _type3.type)(input3);
      const output2 = type2.match(/array|object/) ? (0, _index4.deepCopy)(input3) : input3;
      return (0, _data.data)(output2, type2);
    };
    exports2.chainLink = chainLink;
    var chainAsync = async (...args) => {
      const chain2 = new ChainParser(...args);
      while (chain2.iterate()) {
        chain2.data = await (0, _data.dataAsync)(chain2.data, chain2.type).catch((e2) => {
          chain2.error = e2;
        });
      }
      return chain2.end();
    };
    exports2.chainAsync = chainAsync;
    var chainLinkAsync = async (input3) => {
      const type2 = (0, _type3.type)(input3);
      const output2 = type2.match(/array|object/) ? (0, _index4.deepCopy)(input3) : input3;
      return (0, _data.dataAsync)(output2, type2);
    };
    exports2.chainLinkAsync = chainLinkAsync;
  }
});

// ../../node_modules/@citation-js/core/lib/plugins/input/index.js
var require_input2 = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugins/input/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    var _exportNames = {
      util: true
    };
    exports2.util = void 0;
    var dataType = _interopRequireWildcard(require_dataType());
    var graph = _interopRequireWildcard(require_graph());
    var parser3 = _interopRequireWildcard(require_parser2());
    var csl = _interopRequireWildcard(require_csl());
    var _register = require_register();
    Object.keys(_register).forEach(function(key2) {
      if (key2 === "default" || key2 === "__esModule") return;
      if (Object.prototype.hasOwnProperty.call(_exportNames, key2)) return;
      if (key2 in exports2 && exports2[key2] === _register[key2]) return;
      Object.defineProperty(exports2, key2, {
        enumerable: true,
        get: function() {
          return _register[key2];
        }
      });
    });
    var _chain = require_chain();
    Object.keys(_chain).forEach(function(key2) {
      if (key2 === "default" || key2 === "__esModule") return;
      if (Object.prototype.hasOwnProperty.call(_exportNames, key2)) return;
      if (key2 in exports2 && exports2[key2] === _chain[key2]) return;
      Object.defineProperty(exports2, key2, {
        enumerable: true,
        get: function() {
          return _chain[key2];
        }
      });
    });
    var _type3 = require_type();
    Object.keys(_type3).forEach(function(key2) {
      if (key2 === "default" || key2 === "__esModule") return;
      if (Object.prototype.hasOwnProperty.call(_exportNames, key2)) return;
      if (key2 in exports2 && exports2[key2] === _type3[key2]) return;
      Object.defineProperty(exports2, key2, {
        enumerable: true,
        get: function() {
          return _type3[key2];
        }
      });
    });
    var _data = require_data();
    Object.keys(_data).forEach(function(key2) {
      if (key2 === "default" || key2 === "__esModule") return;
      if (Object.prototype.hasOwnProperty.call(_exportNames, key2)) return;
      if (key2 in exports2 && exports2[key2] === _data[key2]) return;
      Object.defineProperty(exports2, key2, {
        enumerable: true,
        get: function() {
          return _data[key2];
        }
      });
    });
    function _getRequireWildcardCache(e2) {
      if ("function" != typeof WeakMap) return null;
      var r2 = /* @__PURE__ */ new WeakMap(), t2 = /* @__PURE__ */ new WeakMap();
      return (_getRequireWildcardCache = function(e3) {
        return e3 ? t2 : r2;
      })(e2);
    }
    function _interopRequireWildcard(e2, r2) {
      if (!r2 && e2 && e2.__esModule) return e2;
      if (null === e2 || "object" != typeof e2 && "function" != typeof e2) return { default: e2 };
      var t2 = _getRequireWildcardCache(r2);
      if (t2 && t2.has(e2)) return t2.get(e2);
      var n = { __proto__: null }, a2 = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var u3 in e2) if ("default" !== u3 && {}.hasOwnProperty.call(e2, u3)) {
        var i2 = a2 ? Object.getOwnPropertyDescriptor(e2, u3) : null;
        i2 && (i2.get || i2.set) ? Object.defineProperty(n, u3, i2) : n[u3] = e2[u3];
      }
      return n.default = e2, t2 && t2.set(e2, n), n;
    }
    var util4 = exports2.util = Object.assign({}, dataType, graph, parser3, csl);
  }
});

// ../../node_modules/@citation-js/core/lib/Cite/set.js
var require_set = __commonJS({
  "../../node_modules/@citation-js/core/lib/Cite/set.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.add = add2;
    exports2.addAsync = addAsync;
    exports2.reset = reset;
    exports2.set = set3;
    exports2.setAsync = setAsync;
    var _index4 = require_input2();
    var _fetchId = _interopRequireDefault3(require_fetchId());
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    function add2(data, options = {}, log = false) {
      if (options === true || log === true) {
        this.save();
      }
      this.data.push(...(0, _index4.chain)(data, options));
      this.data.filter((entry) => !Object.prototype.hasOwnProperty.call(entry, "id")).forEach((entry) => {
        entry.id = (0, _fetchId.default)(this.getIds(), "temp_id_");
      });
      return this;
    }
    async function addAsync(data, options = {}, log = false) {
      if (options === true || log === true) {
        this.save();
      }
      this.data.push(...await (0, _index4.chainAsync)(data, options));
      this.data.filter((entry) => !Object.prototype.hasOwnProperty.call(entry, "id")).forEach((entry) => {
        entry.id = (0, _fetchId.default)(this.getIds(), "temp_id_");
      });
      return this;
    }
    function set3(data, options = {}, log = false) {
      if (options === true || log === true) {
        this.save();
      }
      this.data = [];
      return typeof options !== "boolean" ? this.add(data, options) : this.add(data);
    }
    async function setAsync(data, options = {}, log = false) {
      if (options === true || log === true) {
        this.save();
      }
      this.data = [];
      return typeof options !== "boolean" ? this.addAsync(data, options) : this.addAsync(data);
    }
    function reset(log) {
      if (log) {
        this.save();
      }
      this.data = [];
      this._options = {};
      return this;
    }
  }
});

// ../../node_modules/@citation-js/core/lib/plugin-common/output/label.js
var require_label = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugin-common/output/label.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    exports2.getLabel = getLabel;
    function getLabel(entry) {
      if ("citation-label" in entry) {
        return entry["citation-label"];
      }
      let res = "";
      if (entry.author) {
        res += entry.author[0].family || entry.author[0].literal;
      }
      if (entry.issued && entry.issued["date-parts"] && entry.issued["date-parts"][0]) {
        res += entry.issued["date-parts"][0][0];
      }
      if (entry["year-suffix"]) {
        res += entry["year-suffix"];
      } else if (entry.title) {
        res += entry.title.replace(/<\/?.*?>/g, "").match(/^(?:(?:the|a|an)\s+)?(\S+)/i)[1];
      }
      return res;
    }
    var _default2 = exports2.default = {
      label(data) {
        return data.reduce((object, entry) => {
          object[entry.id] = getLabel(entry);
          return object;
        }, {});
      }
    };
  }
});

// ../../node_modules/@citation-js/core/lib/Cite/sort.js
var require_sort = __commonJS({
  "../../node_modules/@citation-js/core/lib/Cite/sort.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.sort = sort;
    var _label = require_label();
    var _name2 = require_lib2();
    function getComparisonValue(obj, prop, label = prop === "label") {
      let value = label ? (0, _label.getLabel)(obj) : obj[prop];
      switch (prop) {
        case "author":
        case "editor":
          return value.map((name3) => name3.literal || name3.family || (0, _name2.format)(name3));
        case "accessed":
        case "issued":
          return value["date-parts"][0];
        case "page":
          return value.split("-").map((num) => parseInt(num));
        case "edition":
        case "issue":
        case "volume":
          value = parseInt(value);
          return !isNaN(value) ? value : -Infinity;
        default:
          return value || -Infinity;
      }
    }
    function compareProp(entryA, entryB, prop, flip = /^!/.test(prop)) {
      prop = prop.replace(/^!/, "");
      const a2 = getComparisonValue(entryA, prop);
      const b = getComparisonValue(entryB, prop);
      return (flip ? -1 : 1) * (a2 > b ? 1 : a2 < b ? -1 : 0);
    }
    function getSortCallback(...props) {
      return (a2, b) => {
        const keys2 = props.slice();
        let output2 = 0;
        while (!output2 && keys2.length) {
          output2 = compareProp(a2, b, keys2.shift());
        }
        return output2;
      };
    }
    function sort(method = [], log) {
      if (log) {
        this.save();
      }
      this.data.sort(typeof method === "function" ? method : getSortCallback(...method, "label"));
      return this;
    }
  }
});

// ../../node_modules/@citation-js/core/lib/plugins/output.js
var require_output2 = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugins/output.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.add = add2;
    exports2.format = format;
    exports2.has = has3;
    exports2.list = list6;
    exports2.register = void 0;
    exports2.remove = remove3;
    var _register = _interopRequireDefault3(require_register2());
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    function validate5(name3, formatter) {
      if (typeof name3 !== "string") {
        throw new TypeError(`Invalid output format name, expected string, got ${typeof name3}`);
      } else if (typeof formatter !== "function") {
        throw new TypeError(`Invalid formatter, expected function, got ${typeof formatter}`);
      }
    }
    var register = exports2.register = new _register.default();
    function add2(name3, formatter) {
      validate5(name3, formatter);
      register.set(name3, formatter);
    }
    function remove3(name3) {
      register.remove(name3);
    }
    function has3(name3) {
      return register.has(name3);
    }
    function list6() {
      return register.list();
    }
    function format(name3, data, ...options) {
      if (!register.has(name3)) {
        throw new Error(`Output format "${name3}" unavailable`);
      }
      return register.get(name3)(data, ...options);
    }
  }
});

// ../../node_modules/@citation-js/core/lib/Cite/get.js
var require_get = __commonJS({
  "../../node_modules/@citation-js/core/lib/Cite/get.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.format = format;
    exports2.get = get;
    exports2.getIds = getIds;
    var _validate = require_validate();
    var _output = require_output2();
    var _csl = require_csl();
    function getIds() {
      return this.data.map((entry) => entry.id);
    }
    function format(format2, ...options) {
      return (0, _output.format)(format2, (0, _csl.clean)(this.data), ...options);
    }
    function get(options = {}) {
      (0, _validate.validateOutputOptions)(options);
      const parsedOptions = Object.assign({}, this.defaultOptions, this._options.output, options);
      const {
        type: type2,
        style: style3
      } = parsedOptions;
      const [styleType, styleFormat] = style3.split("-");
      const newStyle = styleType === "citation" ? "bibliography" : styleType === "csl" ? "data" : styleType;
      const newType = type2 === "string" ? "text" : type2 === "json" ? "object" : type2;
      let formatOptions;
      switch (newStyle) {
        case "bibliography": {
          const {
            lang,
            append,
            prepend
          } = parsedOptions;
          formatOptions = {
            template: styleFormat,
            lang,
            format: newType,
            append,
            prepend
          };
          break;
        }
        case "data":
        case "bibtex":
        case "bibtxt":
        case "ndjson":
        case "ris":
          formatOptions = {
            type: newType
          };
          break;
        default:
          throw new Error(`Invalid style "${newStyle}"`);
      }
      const result = this.format(newStyle, Object.assign(formatOptions, options._newOptions));
      const {
        format: format2
      } = parsedOptions;
      if (format2 === "real" && newType === "html" && typeof document !== "undefined" && typeof document.createElement === "function") {
        const tmp = document.createElement("div");
        tmp.innerHTML = result;
        return tmp.firstChild;
      } else if (format2 === "string" && typeof result === "object") {
        return JSON.stringify(result);
      } else {
        return result;
      }
    }
  }
});

// ../../node_modules/@citation-js/core/lib/Cite/async.js
var require_async = __commonJS({
  "../../node_modules/@citation-js/core/lib/Cite/async.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    function async(data, options, callback) {
      if (typeof options === "function" && !callback) {
        callback = options;
        options = void 0;
      }
      const promise = new this().setAsync(data, options);
      if (typeof callback === "function") {
        promise.then(callback);
        return void 0;
      } else {
        return promise;
      }
    }
    var _default2 = exports2.default = async;
  }
});

// ../../node_modules/@citation-js/core/lib/Cite/static.js
var require_static = __commonJS({
  "../../node_modules/@citation-js/core/lib/Cite/static.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    var _exportNames = {
      async: true
    };
    Object.defineProperty(exports2, "async", {
      enumerable: true,
      get: function() {
        return _async.default;
      }
    });
    var _async = _interopRequireDefault3(require_async());
    var _validate = require_validate();
    Object.keys(_validate).forEach(function(key2) {
      if (key2 === "default" || key2 === "__esModule") return;
      if (Object.prototype.hasOwnProperty.call(_exportNames, key2)) return;
      if (key2 in exports2 && exports2[key2] === _validate[key2]) return;
      Object.defineProperty(exports2, key2, {
        enumerable: true,
        get: function() {
          return _validate[key2];
        }
      });
    });
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
  }
});

// ../../node_modules/@citation-js/core/lib/Cite/index.js
var require_Cite = __commonJS({
  "../../node_modules/@citation-js/core/lib/Cite/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    var log = _interopRequireWildcard(require_log());
    var options = _interopRequireWildcard(require_options());
    var set3 = _interopRequireWildcard(require_set());
    var sort = _interopRequireWildcard(require_sort());
    var get = _interopRequireWildcard(require_get());
    var staticMethods = _interopRequireWildcard(require_static());
    function _getRequireWildcardCache(e2) {
      if ("function" != typeof WeakMap) return null;
      var r2 = /* @__PURE__ */ new WeakMap(), t2 = /* @__PURE__ */ new WeakMap();
      return (_getRequireWildcardCache = function(e3) {
        return e3 ? t2 : r2;
      })(e2);
    }
    function _interopRequireWildcard(e2, r2) {
      if (!r2 && e2 && e2.__esModule) return e2;
      if (null === e2 || "object" != typeof e2 && "function" != typeof e2) return { default: e2 };
      var t2 = _getRequireWildcardCache(r2);
      if (t2 && t2.has(e2)) return t2.get(e2);
      var n = { __proto__: null }, a2 = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var u3 in e2) if ("default" !== u3 && {}.hasOwnProperty.call(e2, u3)) {
        var i2 = a2 ? Object.getOwnPropertyDescriptor(e2, u3) : null;
        i2 && (i2.get || i2.set) ? Object.defineProperty(n, u3, i2) : n[u3] = e2[u3];
      }
      return n.default = e2, t2 && t2.set(e2, n), n;
    }
    function Cite2(data, options2 = {}) {
      if (!(this instanceof Cite2)) {
        return new Cite2(data, options2);
      }
      this._options = options2;
      this.log = [];
      this.data = [];
      this.set(data, options2);
      this.options(options2);
      return this;
    }
    Object.assign(Cite2.prototype, log, options, set3, sort, get);
    Cite2.prototype[Symbol.iterator] = function* () {
      yield* this.data;
    };
    Object.assign(Cite2, staticMethods);
    var _default2 = exports2.default = Cite2;
  }
});

// ../../node_modules/@citation-js/core/lib/plugins/dict.js
var require_dict = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugins/dict.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.add = add2;
    exports2.get = get;
    exports2.has = has3;
    exports2.htmlDict = void 0;
    exports2.list = list6;
    exports2.register = void 0;
    exports2.remove = remove3;
    exports2.textDict = void 0;
    var _register = _interopRequireDefault3(require_register2());
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    function validate5(name3, dict) {
      if (typeof name3 !== "string") {
        throw new TypeError(`Invalid dict name, expected string, got ${typeof name3}`);
      } else if (typeof dict !== "object") {
        throw new TypeError(`Invalid dict, expected object, got ${typeof dict}`);
      }
      for (const entryName in dict) {
        const entry = dict[entryName];
        if (!Array.isArray(entry) || entry.some((part) => typeof part !== "string")) {
          throw new TypeError(`Invalid dict entry "${entryName}", expected array of strings`);
        }
      }
    }
    var register = exports2.register = new _register.default({
      html: {
        bibliographyContainer: ['<div class="csl-bib-body">', "</div>"],
        entry: ['<div class="csl-entry">', "</div>"],
        list: ['<ul style="list-style-type:none">', "</ul>"],
        listItem: ["<li>", "</li>"]
      },
      text: {
        bibliographyContainer: ["", "\n"],
        entry: ["", "\n"],
        list: ["\n", ""],
        listItem: ["	", "\n"]
      }
    });
    function add2(name3, dict) {
      validate5(name3, dict);
      register.set(name3, dict);
    }
    function remove3(name3) {
      register.remove(name3);
    }
    function has3(name3) {
      return register.has(name3);
    }
    function list6() {
      return register.list();
    }
    function get(name3) {
      if (!register.has(name3)) {
        throw new Error(`Dict "${name3}" unavailable`);
      }
      return register.get(name3);
    }
    var htmlDict = exports2.htmlDict = {
      wr_start: '<div class="csl-bib-body">',
      wr_end: "</div>",
      en_start: '<div class="csl-entry">',
      en_end: "</div>",
      ul_start: '<ul style="list-style-type:none">',
      ul_end: "</ul>",
      li_start: "<li>",
      li_end: "</li>"
    };
    var textDict = exports2.textDict = {
      wr_start: "",
      wr_end: "\n",
      en_start: "",
      en_end: "\n",
      ul_start: "\n",
      ul_end: "",
      li_start: "	",
      li_end: "\n"
    };
  }
});

// ../../node_modules/@citation-js/core/lib/plugins/config.js
var require_config2 = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugins/config.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.add = add2;
    exports2.get = get;
    exports2.has = has3;
    exports2.list = list6;
    exports2.remove = remove3;
    var configs = {};
    function add2(ref, config3) {
      configs[ref] = config3;
    }
    function get(ref) {
      return configs[ref];
    }
    function has3(ref) {
      return Object.prototype.hasOwnProperty.call(configs, ref);
    }
    function remove3(ref) {
      delete configs[ref];
    }
    function list6() {
      return Object.keys(configs);
    }
  }
});

// ../../node_modules/@citation-js/core/lib/plugins/index.js
var require_plugins = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugins/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.add = add2;
    exports2.dict = exports2.config = void 0;
    exports2.has = has3;
    exports2.input = void 0;
    exports2.list = list6;
    exports2.output = void 0;
    exports2.remove = remove3;
    var input3 = _interopRequireWildcard(require_input2());
    exports2.input = input3;
    var output2 = _interopRequireWildcard(require_output2());
    exports2.output = output2;
    var dict = _interopRequireWildcard(require_dict());
    exports2.dict = dict;
    var config3 = _interopRequireWildcard(require_config2());
    exports2.config = config3;
    function _getRequireWildcardCache(e2) {
      if ("function" != typeof WeakMap) return null;
      var r2 = /* @__PURE__ */ new WeakMap(), t2 = /* @__PURE__ */ new WeakMap();
      return (_getRequireWildcardCache = function(e3) {
        return e3 ? t2 : r2;
      })(e2);
    }
    function _interopRequireWildcard(e2, r2) {
      if (!r2 && e2 && e2.__esModule) return e2;
      if (null === e2 || "object" != typeof e2 && "function" != typeof e2) return { default: e2 };
      var t2 = _getRequireWildcardCache(r2);
      if (t2 && t2.has(e2)) return t2.get(e2);
      var n = { __proto__: null }, a2 = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var u3 in e2) if ("default" !== u3 && {}.hasOwnProperty.call(e2, u3)) {
        var i2 = a2 ? Object.getOwnPropertyDescriptor(e2, u3) : null;
        i2 && (i2.get || i2.set) ? Object.defineProperty(n, u3, i2) : n[u3] = e2[u3];
      }
      return n.default = e2, t2 && t2.set(e2, n), n;
    }
    var registers = {
      input: input3,
      output: output2,
      dict,
      config: config3
    };
    var indices = {};
    function add2(ref, plugins3 = {}) {
      const mainIndex = indices[ref] = {};
      for (const type2 in plugins3) {
        if (type2 === "config") {
          mainIndex.config = {
            [ref]: plugins3.config
          };
          registers.config.add(ref, plugins3.config);
          continue;
        }
        const typeIndex = mainIndex[type2] = {};
        const typePlugins = plugins3[type2];
        for (const name3 in typePlugins) {
          const typePlugin = typePlugins[name3];
          typeIndex[name3] = true;
          registers[type2].add(name3, typePlugin);
        }
      }
    }
    function remove3(ref) {
      const mainIndex = indices[ref];
      for (const type2 in mainIndex) {
        const typeIndex = mainIndex[type2];
        for (const name3 in typeIndex) {
          registers[type2].remove(name3);
        }
      }
      delete indices[ref];
    }
    function has3(ref) {
      return ref in indices;
    }
    function list6() {
      return Object.keys(indices);
    }
  }
});

// ../../node_modules/@citation-js/core/lib/plugin-common/input/empty.js
var require_empty = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugin-common/input/empty.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.parse = parse16;
    function parse16() {
      return [];
    }
  }
});

// ../../node_modules/@citation-js/core/lib/plugin-common/input/json.js
var require_json = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugin-common/input/json.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = exports2.parse = parseJSON;
    var _logger = _interopRequireDefault3(require_logger());
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    var substituters = [[/((?:\[|:|,)\s*)'((?:\\'|[^'])*?[^\\])?'(?=\s*(?:\]|}|,))/g, '$1"$2"'], [/((?:(?:"|]|}|\/[gmiuys]|\.|(?:\d|\.|-)*\d)\s*,|{)\s*)(?:"([^":\n]+?)"|'([^":\n]+?)'|([^":\n]+?))(\s*):/g, '$1"$2$3$4"$5:']];
    function parseJSON(str2) {
      if (typeof str2 !== "string") {
        return JSON.parse(str2);
      }
      try {
        return JSON.parse(str2);
      } catch (e2) {
        _logger.default.debug("[plugin-common]", "Invalid JSON, switching to experimental parser");
        substituters.forEach(([regex2, subst]) => {
          str2 = str2.replace(regex2, subst);
        });
        return JSON.parse(str2);
      }
    }
  }
});

// ../../node_modules/@citation-js/core/lib/plugin-common/input/jquery.js
var require_jquery = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugin-common/input/jquery.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.parse = parse16;
    function parse16(input3) {
      return input3.val() || input3.text() || input3.html();
    }
  }
});

// ../../node_modules/@citation-js/core/lib/plugin-common/input/html.js
var require_html3 = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugin-common/input/html.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.parse = parse16;
    function parse16(input3) {
      return input3.value || input3.textContent;
    }
  }
});

// ../../node_modules/@citation-js/core/lib/plugin-common/input/index.js
var require_input3 = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugin-common/input/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.ref = exports2.parsers = exports2.formats = void 0;
    var empty4 = _interopRequireWildcard(require_empty());
    var json2 = _interopRequireWildcard(require_json());
    var jquery = _interopRequireWildcard(require_jquery());
    var html7 = _interopRequireWildcard(require_html3());
    function _getRequireWildcardCache(e2) {
      if ("function" != typeof WeakMap) return null;
      var r2 = /* @__PURE__ */ new WeakMap(), t2 = /* @__PURE__ */ new WeakMap();
      return (_getRequireWildcardCache = function(e3) {
        return e3 ? t2 : r2;
      })(e2);
    }
    function _interopRequireWildcard(e2, r2) {
      if (!r2 && e2 && e2.__esModule) return e2;
      if (null === e2 || "object" != typeof e2 && "function" != typeof e2) return { default: e2 };
      var t2 = _getRequireWildcardCache(r2);
      if (t2 && t2.has(e2)) return t2.get(e2);
      var n = { __proto__: null }, a2 = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var u3 in e2) if ("default" !== u3 && {}.hasOwnProperty.call(e2, u3)) {
        var i2 = a2 ? Object.getOwnPropertyDescriptor(e2, u3) : null;
        i2 && (i2.get || i2.set) ? Object.defineProperty(n, u3, i2) : n[u3] = e2[u3];
      }
      return n.default = e2, t2 && t2.set(e2, n), n;
    }
    var ref = exports2.ref = "@else";
    var parsers = exports2.parsers = {
      empty: empty4,
      json: json2,
      jquery,
      html: html7
    };
    var formats = exports2.formats = {
      "@empty/text": {
        parse: empty4.parse,
        parseType: {
          dataType: "String",
          predicate: (input3) => input3 === ""
        }
      },
      "@empty/whitespace+text": {
        parse: empty4.parse,
        parseType: {
          dataType: "String",
          predicate: /^\s+$/
        }
      },
      "@empty": {
        parse: empty4.parse,
        parseType: {
          dataType: "Primitive",
          predicate: (input3) => input3 == null
        }
      },
      "@else/json": {
        parse: json2.parse,
        parseType: {
          dataType: "String",
          predicate: /^\s*(\{[\S\s]*\}|\[[\S\s]*\])\s*$/
        }
      },
      "@else/url": {
        parseType: {
          dataType: "String",
          predicate: /^https?:\/\/(([\w-]+\.)*[\w-]+)(:\d+)?(\/[^?/]*)*(\?[^#]*)?(#.*)?$/i
        }
      },
      "@else/jquery": {
        parse: jquery.parse,
        parseType: {
          dataType: "ComplexObject",
          predicate(input3) {
            return typeof jQuery !== "undefined" && input3 instanceof jQuery;
          }
        }
      },
      "@else/html": {
        parse: html7.parse,
        parseType: {
          dataType: "ComplexObject",
          predicate(input3) {
            return typeof HTMLElement !== "undefined" && input3 instanceof HTMLElement;
          }
        }
      }
    };
  }
});

// ../../node_modules/@citation-js/core/lib/plugin-common/output/json.js
var require_json2 = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugin-common/output/json.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    exports2.getJsonWrapper = getJsonWrapper;
    var plugins3 = _interopRequireWildcard(require_plugins());
    var util4 = _interopRequireWildcard(require_util());
    var _logger = _interopRequireDefault3(require_logger());
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    function _getRequireWildcardCache(e2) {
      if ("function" != typeof WeakMap) return null;
      var r2 = /* @__PURE__ */ new WeakMap(), t2 = /* @__PURE__ */ new WeakMap();
      return (_getRequireWildcardCache = function(e3) {
        return e3 ? t2 : r2;
      })(e2);
    }
    function _interopRequireWildcard(e2, r2) {
      if (!r2 && e2 && e2.__esModule) return e2;
      if (null === e2 || "object" != typeof e2 && "function" != typeof e2) return { default: e2 };
      var t2 = _getRequireWildcardCache(r2);
      if (t2 && t2.has(e2)) return t2.get(e2);
      var n = { __proto__: null }, a2 = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var u3 in e2) if ("default" !== u3 && {}.hasOwnProperty.call(e2, u3)) {
        var i2 = a2 ? Object.getOwnPropertyDescriptor(e2, u3) : null;
        i2 && (i2.get || i2.set) ? Object.defineProperty(n, u3, i2) : n[u3] = e2[u3];
      }
      return n.default = e2, t2 && t2.set(e2, n), n;
    }
    function appendCommas(string2, index4, array) {
      return string2 + (index4 < array.length - 1 ? "," : "");
    }
    function getJsonObject(src, dict) {
      const isArray2 = Array.isArray(src);
      let entries2;
      if (isArray2) {
        entries2 = src.map((entry) => getJsonValue(entry, dict));
      } else {
        entries2 = Object.keys(src).filter((prop) => JSON.stringify(src[prop])).map((prop) => `"${prop}": ${getJsonValue(src[prop], dict)}`);
      }
      entries2 = entries2.map(appendCommas).map((entry) => dict.listItem.join(entry));
      entries2 = dict.list.join(entries2.join(""));
      return isArray2 ? `[${entries2}]` : `{${entries2}}`;
    }
    function getJsonValue(src, dict) {
      if (typeof src === "object" && src !== null) {
        if (src.length === 0) {
          return "[]";
        } else if (Object.keys(src).length === 0) {
          return "{}";
        } else {
          return getJsonObject(src, dict);
        }
      } else {
        return JSON.stringify(src);
      }
    }
    function getJson(src, dict) {
      let entries2 = src.map((entry) => getJsonObject(entry, dict));
      entries2 = entries2.map(appendCommas).map((entry) => dict.entry.join(entry));
      entries2 = entries2.join("");
      return dict.bibliographyContainer.join(`[${entries2}]`);
    }
    function getJsonWrapper(src) {
      return getJson(src, plugins3.dict.get("html"));
    }
    var _default2 = exports2.default = {
      data(data, {
        type: type2,
        format = type2 || "text",
        version: version4 = "1.0.2"
      } = {}) {
        if (version4 < "1.0.2") {
          data = util4.downgradeCsl(data);
        }
        if (format === "object") {
          return util4.deepCopy(data);
        } else if (format === "text") {
          return JSON.stringify(data, null, 2);
        } else {
          _logger.default.warn("[core]", "This feature (JSON output with special formatting) is unstable. See https://github.com/larsgw/citation.js/issues/144");
          return getJson(data, plugins3.dict.get(format));
        }
      },
      ndjson(data, {
        version: version4 = "1.0.2"
      } = {}) {
        if (version4 < "1.0.2") {
          data = util4.downgradeCsl(data);
        }
        return data.map((entry) => JSON.stringify(entry)).join("\n");
      }
    };
  }
});

// ../../node_modules/@citation-js/core/lib/plugin-common/output/index.js
var require_output3 = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugin-common/output/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    var _json = _interopRequireDefault3(require_json2());
    var _label = _interopRequireDefault3(require_label());
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    var _default2 = exports2.default = Object.assign({}, _json.default, _label.default);
  }
});

// ../../node_modules/@citation-js/core/lib/plugin-common/index.js
var require_plugin_common = __commonJS({
  "../../node_modules/@citation-js/core/lib/plugin-common/index.js"() {
    "use strict";
    var plugins3 = _interopRequireWildcard(require_plugins());
    var _input = require_input3();
    var _output = _interopRequireDefault3(require_output3());
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    function _getRequireWildcardCache(e2) {
      if ("function" != typeof WeakMap) return null;
      var r2 = /* @__PURE__ */ new WeakMap(), t2 = /* @__PURE__ */ new WeakMap();
      return (_getRequireWildcardCache = function(e3) {
        return e3 ? t2 : r2;
      })(e2);
    }
    function _interopRequireWildcard(e2, r2) {
      if (!r2 && e2 && e2.__esModule) return e2;
      if (null === e2 || "object" != typeof e2 && "function" != typeof e2) return { default: e2 };
      var t2 = _getRequireWildcardCache(r2);
      if (t2 && t2.has(e2)) return t2.get(e2);
      var n = { __proto__: null }, a2 = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var u3 in e2) if ("default" !== u3 && {}.hasOwnProperty.call(e2, u3)) {
        var i2 = a2 ? Object.getOwnPropertyDescriptor(e2, u3) : null;
        i2 && (i2.get || i2.set) ? Object.defineProperty(n, u3, i2) : n[u3] = e2[u3];
      }
      return n.default = e2, t2 && t2.set(e2, n), n;
    }
    plugins3.add(_input.ref, {
      input: _input.formats,
      output: _output.default
    });
  }
});

// ../../node_modules/@citation-js/core/lib/index.js
var require_lib6 = __commonJS({
  "../../node_modules/@citation-js/core/lib/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    Object.defineProperty(exports2, "Cite", {
      enumerable: true,
      get: function() {
        return _index4.default;
      }
    });
    Object.defineProperty(exports2, "logger", {
      enumerable: true,
      get: function() {
        return _logger.default;
      }
    });
    exports2.version = exports2.util = exports2.plugins = void 0;
    var _index4 = _interopRequireDefault3(require_Cite());
    var plugins3 = _interopRequireWildcard(require_plugins());
    exports2.plugins = plugins3;
    var util4 = _interopRequireWildcard(require_util());
    exports2.util = util4;
    var _logger = _interopRequireDefault3(require_logger());
    var _package = _interopRequireDefault3(require_package());
    require_plugin_common();
    function _getRequireWildcardCache(e2) {
      if ("function" != typeof WeakMap) return null;
      var r2 = /* @__PURE__ */ new WeakMap(), t2 = /* @__PURE__ */ new WeakMap();
      return (_getRequireWildcardCache = function(e3) {
        return e3 ? t2 : r2;
      })(e2);
    }
    function _interopRequireWildcard(e2, r2) {
      if (!r2 && e2 && e2.__esModule) return e2;
      if (null === e2 || "object" != typeof e2 && "function" != typeof e2) return { default: e2 };
      var t2 = _getRequireWildcardCache(r2);
      if (t2 && t2.has(e2)) return t2.get(e2);
      var n = { __proto__: null }, a2 = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var u3 in e2) if ("default" !== u3 && {}.hasOwnProperty.call(e2, u3)) {
        var i2 = a2 ? Object.getOwnPropertyDescriptor(e2, u3) : null;
        i2 && (i2.get || i2.set) ? Object.defineProperty(n, u3, i2) : n[u3] = e2[u3];
      }
      return n.default = e2, t2 && t2.set(e2, n), n;
    }
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    var version4 = exports2.version = _package.default.version;
  }
});

// ../../node_modules/entities/lib/generated/decode-data-html.js
var require_decode_data_html = __commonJS({
  "../../node_modules/entities/lib/generated/decode-data-html.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.default = new Uint16Array(
      // prettier-ignore
      '\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map(function(c) {
        return c.charCodeAt(0);
      })
    );
  }
});

// ../../node_modules/entities/lib/generated/decode-data-xml.js
var require_decode_data_xml = __commonJS({
  "../../node_modules/entities/lib/generated/decode-data-xml.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.default = new Uint16Array(
      // prettier-ignore
      "\u0200aglq	\x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map(function(c) {
        return c.charCodeAt(0);
      })
    );
  }
});

// ../../node_modules/entities/lib/decode_codepoint.js
var require_decode_codepoint = __commonJS({
  "../../node_modules/entities/lib/decode_codepoint.js"(exports2) {
    "use strict";
    var _a6;
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.replaceCodePoint = exports2.fromCodePoint = void 0;
    var decodeMap2 = /* @__PURE__ */ new Map([
      [0, 65533],
      // C1 Unicode control character reference replacements
      [128, 8364],
      [130, 8218],
      [131, 402],
      [132, 8222],
      [133, 8230],
      [134, 8224],
      [135, 8225],
      [136, 710],
      [137, 8240],
      [138, 352],
      [139, 8249],
      [140, 338],
      [142, 381],
      [145, 8216],
      [146, 8217],
      [147, 8220],
      [148, 8221],
      [149, 8226],
      [150, 8211],
      [151, 8212],
      [152, 732],
      [153, 8482],
      [154, 353],
      [155, 8250],
      [156, 339],
      [158, 382],
      [159, 376]
    ]);
    exports2.fromCodePoint = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
    (_a6 = String.fromCodePoint) !== null && _a6 !== void 0 ? _a6 : function(codePoint) {
      var output2 = "";
      if (codePoint > 65535) {
        codePoint -= 65536;
        output2 += String.fromCharCode(codePoint >>> 10 & 1023 | 55296);
        codePoint = 56320 | codePoint & 1023;
      }
      output2 += String.fromCharCode(codePoint);
      return output2;
    };
    function replaceCodePoint2(codePoint) {
      var _a7;
      if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {
        return 65533;
      }
      return (_a7 = decodeMap2.get(codePoint)) !== null && _a7 !== void 0 ? _a7 : codePoint;
    }
    exports2.replaceCodePoint = replaceCodePoint2;
    function decodeCodePoint2(codePoint) {
      return (0, exports2.fromCodePoint)(replaceCodePoint2(codePoint));
    }
    exports2.default = decodeCodePoint2;
  }
});

// ../../node_modules/entities/lib/decode.js
var require_decode2 = __commonJS({
  "../../node_modules/entities/lib/decode.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.decodeXML = exports2.decodeHTMLStrict = exports2.decodeHTMLAttribute = exports2.decodeHTML = exports2.determineBranch = exports2.EntityDecoder = exports2.DecodingMode = exports2.BinTrieFlags = exports2.fromCodePoint = exports2.replaceCodePoint = exports2.decodeCodePoint = exports2.xmlDecodeTree = exports2.htmlDecodeTree = void 0;
    var decode_data_html_js_1 = __importDefault2(require_decode_data_html());
    exports2.htmlDecodeTree = decode_data_html_js_1.default;
    var decode_data_xml_js_1 = __importDefault2(require_decode_data_xml());
    exports2.xmlDecodeTree = decode_data_xml_js_1.default;
    var decode_codepoint_js_1 = __importStar(require_decode_codepoint());
    exports2.decodeCodePoint = decode_codepoint_js_1.default;
    var decode_codepoint_js_2 = require_decode_codepoint();
    Object.defineProperty(exports2, "replaceCodePoint", { enumerable: true, get: function() {
      return decode_codepoint_js_2.replaceCodePoint;
    } });
    Object.defineProperty(exports2, "fromCodePoint", { enumerable: true, get: function() {
      return decode_codepoint_js_2.fromCodePoint;
    } });
    var CharCodes2;
    (function(CharCodes3) {
      CharCodes3[CharCodes3["NUM"] = 35] = "NUM";
      CharCodes3[CharCodes3["SEMI"] = 59] = "SEMI";
      CharCodes3[CharCodes3["EQUALS"] = 61] = "EQUALS";
      CharCodes3[CharCodes3["ZERO"] = 48] = "ZERO";
      CharCodes3[CharCodes3["NINE"] = 57] = "NINE";
      CharCodes3[CharCodes3["LOWER_A"] = 97] = "LOWER_A";
      CharCodes3[CharCodes3["LOWER_F"] = 102] = "LOWER_F";
      CharCodes3[CharCodes3["LOWER_X"] = 120] = "LOWER_X";
      CharCodes3[CharCodes3["LOWER_Z"] = 122] = "LOWER_Z";
      CharCodes3[CharCodes3["UPPER_A"] = 65] = "UPPER_A";
      CharCodes3[CharCodes3["UPPER_F"] = 70] = "UPPER_F";
      CharCodes3[CharCodes3["UPPER_Z"] = 90] = "UPPER_Z";
    })(CharCodes2 || (CharCodes2 = {}));
    var TO_LOWER_BIT2 = 32;
    var BinTrieFlags2;
    (function(BinTrieFlags3) {
      BinTrieFlags3[BinTrieFlags3["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
      BinTrieFlags3[BinTrieFlags3["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
      BinTrieFlags3[BinTrieFlags3["JUMP_TABLE"] = 127] = "JUMP_TABLE";
    })(BinTrieFlags2 = exports2.BinTrieFlags || (exports2.BinTrieFlags = {}));
    function isNumber2(code7) {
      return code7 >= CharCodes2.ZERO && code7 <= CharCodes2.NINE;
    }
    function isHexadecimalCharacter2(code7) {
      return code7 >= CharCodes2.UPPER_A && code7 <= CharCodes2.UPPER_F || code7 >= CharCodes2.LOWER_A && code7 <= CharCodes2.LOWER_F;
    }
    function isAsciiAlphaNumeric3(code7) {
      return code7 >= CharCodes2.UPPER_A && code7 <= CharCodes2.UPPER_Z || code7 >= CharCodes2.LOWER_A && code7 <= CharCodes2.LOWER_Z || isNumber2(code7);
    }
    function isEntityInAttributeInvalidEnd3(code7) {
      return code7 === CharCodes2.EQUALS || isAsciiAlphaNumeric3(code7);
    }
    var EntityDecoderState2;
    (function(EntityDecoderState3) {
      EntityDecoderState3[EntityDecoderState3["EntityStart"] = 0] = "EntityStart";
      EntityDecoderState3[EntityDecoderState3["NumericStart"] = 1] = "NumericStart";
      EntityDecoderState3[EntityDecoderState3["NumericDecimal"] = 2] = "NumericDecimal";
      EntityDecoderState3[EntityDecoderState3["NumericHex"] = 3] = "NumericHex";
      EntityDecoderState3[EntityDecoderState3["NamedEntity"] = 4] = "NamedEntity";
    })(EntityDecoderState2 || (EntityDecoderState2 = {}));
    var DecodingMode2;
    (function(DecodingMode3) {
      DecodingMode3[DecodingMode3["Legacy"] = 0] = "Legacy";
      DecodingMode3[DecodingMode3["Strict"] = 1] = "Strict";
      DecodingMode3[DecodingMode3["Attribute"] = 2] = "Attribute";
    })(DecodingMode2 = exports2.DecodingMode || (exports2.DecodingMode = {}));
    var EntityDecoder2 = (
      /** @class */
      (function() {
        function EntityDecoder3(decodeTree, emitCodePoint, errors4) {
          this.decodeTree = decodeTree;
          this.emitCodePoint = emitCodePoint;
          this.errors = errors4;
          this.state = EntityDecoderState2.EntityStart;
          this.consumed = 1;
          this.result = 0;
          this.treeIndex = 0;
          this.excess = 1;
          this.decodeMode = DecodingMode2.Strict;
        }
        EntityDecoder3.prototype.startEntity = function(decodeMode) {
          this.decodeMode = decodeMode;
          this.state = EntityDecoderState2.EntityStart;
          this.result = 0;
          this.treeIndex = 0;
          this.excess = 1;
          this.consumed = 1;
        };
        EntityDecoder3.prototype.write = function(str2, offset) {
          switch (this.state) {
            case EntityDecoderState2.EntityStart: {
              if (str2.charCodeAt(offset) === CharCodes2.NUM) {
                this.state = EntityDecoderState2.NumericStart;
                this.consumed += 1;
                return this.stateNumericStart(str2, offset + 1);
              }
              this.state = EntityDecoderState2.NamedEntity;
              return this.stateNamedEntity(str2, offset);
            }
            case EntityDecoderState2.NumericStart: {
              return this.stateNumericStart(str2, offset);
            }
            case EntityDecoderState2.NumericDecimal: {
              return this.stateNumericDecimal(str2, offset);
            }
            case EntityDecoderState2.NumericHex: {
              return this.stateNumericHex(str2, offset);
            }
            case EntityDecoderState2.NamedEntity: {
              return this.stateNamedEntity(str2, offset);
            }
          }
        };
        EntityDecoder3.prototype.stateNumericStart = function(str2, offset) {
          if (offset >= str2.length) {
            return -1;
          }
          if ((str2.charCodeAt(offset) | TO_LOWER_BIT2) === CharCodes2.LOWER_X) {
            this.state = EntityDecoderState2.NumericHex;
            this.consumed += 1;
            return this.stateNumericHex(str2, offset + 1);
          }
          this.state = EntityDecoderState2.NumericDecimal;
          return this.stateNumericDecimal(str2, offset);
        };
        EntityDecoder3.prototype.addToNumericResult = function(str2, start, end, base5) {
          if (start !== end) {
            var digitCount = end - start;
            this.result = this.result * Math.pow(base5, digitCount) + parseInt(str2.substr(start, digitCount), base5);
            this.consumed += digitCount;
          }
        };
        EntityDecoder3.prototype.stateNumericHex = function(str2, offset) {
          var startIdx = offset;
          while (offset < str2.length) {
            var char = str2.charCodeAt(offset);
            if (isNumber2(char) || isHexadecimalCharacter2(char)) {
              offset += 1;
            } else {
              this.addToNumericResult(str2, startIdx, offset, 16);
              return this.emitNumericEntity(char, 3);
            }
          }
          this.addToNumericResult(str2, startIdx, offset, 16);
          return -1;
        };
        EntityDecoder3.prototype.stateNumericDecimal = function(str2, offset) {
          var startIdx = offset;
          while (offset < str2.length) {
            var char = str2.charCodeAt(offset);
            if (isNumber2(char)) {
              offset += 1;
            } else {
              this.addToNumericResult(str2, startIdx, offset, 10);
              return this.emitNumericEntity(char, 2);
            }
          }
          this.addToNumericResult(str2, startIdx, offset, 10);
          return -1;
        };
        EntityDecoder3.prototype.emitNumericEntity = function(lastCp, expectedLength) {
          var _a6;
          if (this.consumed <= expectedLength) {
            (_a6 = this.errors) === null || _a6 === void 0 ? void 0 : _a6.absenceOfDigitsInNumericCharacterReference(this.consumed);
            return 0;
          }
          if (lastCp === CharCodes2.SEMI) {
            this.consumed += 1;
          } else if (this.decodeMode === DecodingMode2.Strict) {
            return 0;
          }
          this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed);
          if (this.errors) {
            if (lastCp !== CharCodes2.SEMI) {
              this.errors.missingSemicolonAfterCharacterReference();
            }
            this.errors.validateNumericCharacterReference(this.result);
          }
          return this.consumed;
        };
        EntityDecoder3.prototype.stateNamedEntity = function(str2, offset) {
          var decodeTree = this.decodeTree;
          var current2 = decodeTree[this.treeIndex];
          var valueLength = (current2 & BinTrieFlags2.VALUE_LENGTH) >> 14;
          for (; offset < str2.length; offset++, this.excess++) {
            var char = str2.charCodeAt(offset);
            this.treeIndex = determineBranch2(decodeTree, current2, this.treeIndex + Math.max(1, valueLength), char);
            if (this.treeIndex < 0) {
              return this.result === 0 || // If we are parsing an attribute
              this.decodeMode === DecodingMode2.Attribute && // We shouldn't have consumed any characters after the entity,
              (valueLength === 0 || // And there should be no invalid characters.
              isEntityInAttributeInvalidEnd3(char)) ? 0 : this.emitNotTerminatedNamedEntity();
            }
            current2 = decodeTree[this.treeIndex];
            valueLength = (current2 & BinTrieFlags2.VALUE_LENGTH) >> 14;
            if (valueLength !== 0) {
              if (char === CharCodes2.SEMI) {
                return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
              }
              if (this.decodeMode !== DecodingMode2.Strict) {
                this.result = this.treeIndex;
                this.consumed += this.excess;
                this.excess = 0;
              }
            }
          }
          return -1;
        };
        EntityDecoder3.prototype.emitNotTerminatedNamedEntity = function() {
          var _a6;
          var _b = this, result = _b.result, decodeTree = _b.decodeTree;
          var valueLength = (decodeTree[result] & BinTrieFlags2.VALUE_LENGTH) >> 14;
          this.emitNamedEntityData(result, valueLength, this.consumed);
          (_a6 = this.errors) === null || _a6 === void 0 ? void 0 : _a6.missingSemicolonAfterCharacterReference();
          return this.consumed;
        };
        EntityDecoder3.prototype.emitNamedEntityData = function(result, valueLength, consumed) {
          var decodeTree = this.decodeTree;
          this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags2.VALUE_LENGTH : decodeTree[result + 1], consumed);
          if (valueLength === 3) {
            this.emitCodePoint(decodeTree[result + 2], consumed);
          }
          return consumed;
        };
        EntityDecoder3.prototype.end = function() {
          var _a6;
          switch (this.state) {
            case EntityDecoderState2.NamedEntity: {
              return this.result !== 0 && (this.decodeMode !== DecodingMode2.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;
            }
            // Otherwise, emit a numeric entity if we have one.
            case EntityDecoderState2.NumericDecimal: {
              return this.emitNumericEntity(0, 2);
            }
            case EntityDecoderState2.NumericHex: {
              return this.emitNumericEntity(0, 3);
            }
            case EntityDecoderState2.NumericStart: {
              (_a6 = this.errors) === null || _a6 === void 0 ? void 0 : _a6.absenceOfDigitsInNumericCharacterReference(this.consumed);
              return 0;
            }
            case EntityDecoderState2.EntityStart: {
              return 0;
            }
          }
        };
        return EntityDecoder3;
      })()
    );
    exports2.EntityDecoder = EntityDecoder2;
    function getDecoder2(decodeTree) {
      var ret = "";
      var decoder = new EntityDecoder2(decodeTree, function(str2) {
        return ret += (0, decode_codepoint_js_1.fromCodePoint)(str2);
      });
      return function decodeWithTrie(str2, decodeMode) {
        var lastIndex = 0;
        var offset = 0;
        while ((offset = str2.indexOf("&", offset)) >= 0) {
          ret += str2.slice(lastIndex, offset);
          decoder.startEntity(decodeMode);
          var len = decoder.write(
            str2,
            // Skip the "&"
            offset + 1
          );
          if (len < 0) {
            lastIndex = offset + decoder.end();
            break;
          }
          lastIndex = offset + len;
          offset = len === 0 ? lastIndex + 1 : lastIndex;
        }
        var result = ret + str2.slice(lastIndex);
        ret = "";
        return result;
      };
    }
    function determineBranch2(decodeTree, current2, nodeIdx, char) {
      var branchCount = (current2 & BinTrieFlags2.BRANCH_LENGTH) >> 7;
      var jumpOffset = current2 & BinTrieFlags2.JUMP_TABLE;
      if (branchCount === 0) {
        return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
      }
      if (jumpOffset) {
        var value = char - jumpOffset;
        return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1;
      }
      var lo = nodeIdx;
      var hi = lo + branchCount - 1;
      while (lo <= hi) {
        var mid = lo + hi >>> 1;
        var midVal = decodeTree[mid];
        if (midVal < char) {
          lo = mid + 1;
        } else if (midVal > char) {
          hi = mid - 1;
        } else {
          return decodeTree[mid + branchCount];
        }
      }
      return -1;
    }
    exports2.determineBranch = determineBranch2;
    var htmlDecoder2 = getDecoder2(decode_data_html_js_1.default);
    var xmlDecoder2 = getDecoder2(decode_data_xml_js_1.default);
    function decodeHTML(str2, mode) {
      if (mode === void 0) {
        mode = DecodingMode2.Legacy;
      }
      return htmlDecoder2(str2, mode);
    }
    exports2.decodeHTML = decodeHTML;
    function decodeHTMLAttribute(str2) {
      return htmlDecoder2(str2, DecodingMode2.Attribute);
    }
    exports2.decodeHTMLAttribute = decodeHTMLAttribute;
    function decodeHTMLStrict(str2) {
      return htmlDecoder2(str2, DecodingMode2.Strict);
    }
    exports2.decodeHTMLStrict = decodeHTMLStrict;
    function decodeXML(str2) {
      return xmlDecoder2(str2, DecodingMode2.Strict);
    }
    exports2.decodeXML = decodeXML;
  }
});

// ../../node_modules/htmlparser2/lib/Tokenizer.js
var require_Tokenizer = __commonJS({
  "../../node_modules/htmlparser2/lib/Tokenizer.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.QuoteType = void 0;
    var decode_js_1 = require_decode2();
    var CharCodes2;
    (function(CharCodes3) {
      CharCodes3[CharCodes3["Tab"] = 9] = "Tab";
      CharCodes3[CharCodes3["NewLine"] = 10] = "NewLine";
      CharCodes3[CharCodes3["FormFeed"] = 12] = "FormFeed";
      CharCodes3[CharCodes3["CarriageReturn"] = 13] = "CarriageReturn";
      CharCodes3[CharCodes3["Space"] = 32] = "Space";
      CharCodes3[CharCodes3["ExclamationMark"] = 33] = "ExclamationMark";
      CharCodes3[CharCodes3["Number"] = 35] = "Number";
      CharCodes3[CharCodes3["Amp"] = 38] = "Amp";
      CharCodes3[CharCodes3["SingleQuote"] = 39] = "SingleQuote";
      CharCodes3[CharCodes3["DoubleQuote"] = 34] = "DoubleQuote";
      CharCodes3[CharCodes3["Dash"] = 45] = "Dash";
      CharCodes3[CharCodes3["Slash"] = 47] = "Slash";
      CharCodes3[CharCodes3["Zero"] = 48] = "Zero";
      CharCodes3[CharCodes3["Nine"] = 57] = "Nine";
      CharCodes3[CharCodes3["Semi"] = 59] = "Semi";
      CharCodes3[CharCodes3["Lt"] = 60] = "Lt";
      CharCodes3[CharCodes3["Eq"] = 61] = "Eq";
      CharCodes3[CharCodes3["Gt"] = 62] = "Gt";
      CharCodes3[CharCodes3["Questionmark"] = 63] = "Questionmark";
      CharCodes3[CharCodes3["UpperA"] = 65] = "UpperA";
      CharCodes3[CharCodes3["LowerA"] = 97] = "LowerA";
      CharCodes3[CharCodes3["UpperF"] = 70] = "UpperF";
      CharCodes3[CharCodes3["LowerF"] = 102] = "LowerF";
      CharCodes3[CharCodes3["UpperZ"] = 90] = "UpperZ";
      CharCodes3[CharCodes3["LowerZ"] = 122] = "LowerZ";
      CharCodes3[CharCodes3["LowerX"] = 120] = "LowerX";
      CharCodes3[CharCodes3["OpeningSquareBracket"] = 91] = "OpeningSquareBracket";
    })(CharCodes2 || (CharCodes2 = {}));
    var State5;
    (function(State6) {
      State6[State6["Text"] = 1] = "Text";
      State6[State6["BeforeTagName"] = 2] = "BeforeTagName";
      State6[State6["InTagName"] = 3] = "InTagName";
      State6[State6["InSelfClosingTag"] = 4] = "InSelfClosingTag";
      State6[State6["BeforeClosingTagName"] = 5] = "BeforeClosingTagName";
      State6[State6["InClosingTagName"] = 6] = "InClosingTagName";
      State6[State6["AfterClosingTagName"] = 7] = "AfterClosingTagName";
      State6[State6["BeforeAttributeName"] = 8] = "BeforeAttributeName";
      State6[State6["InAttributeName"] = 9] = "InAttributeName";
      State6[State6["AfterAttributeName"] = 10] = "AfterAttributeName";
      State6[State6["BeforeAttributeValue"] = 11] = "BeforeAttributeValue";
      State6[State6["InAttributeValueDq"] = 12] = "InAttributeValueDq";
      State6[State6["InAttributeValueSq"] = 13] = "InAttributeValueSq";
      State6[State6["InAttributeValueNq"] = 14] = "InAttributeValueNq";
      State6[State6["BeforeDeclaration"] = 15] = "BeforeDeclaration";
      State6[State6["InDeclaration"] = 16] = "InDeclaration";
      State6[State6["InProcessingInstruction"] = 17] = "InProcessingInstruction";
      State6[State6["BeforeComment"] = 18] = "BeforeComment";
      State6[State6["CDATASequence"] = 19] = "CDATASequence";
      State6[State6["InSpecialComment"] = 20] = "InSpecialComment";
      State6[State6["InCommentLike"] = 21] = "InCommentLike";
      State6[State6["BeforeSpecialS"] = 22] = "BeforeSpecialS";
      State6[State6["SpecialStartSequence"] = 23] = "SpecialStartSequence";
      State6[State6["InSpecialTag"] = 24] = "InSpecialTag";
      State6[State6["BeforeEntity"] = 25] = "BeforeEntity";
      State6[State6["BeforeNumericEntity"] = 26] = "BeforeNumericEntity";
      State6[State6["InNamedEntity"] = 27] = "InNamedEntity";
      State6[State6["InNumericEntity"] = 28] = "InNumericEntity";
      State6[State6["InHexEntity"] = 29] = "InHexEntity";
    })(State5 || (State5 = {}));
    function isWhitespace3(c) {
      return c === CharCodes2.Space || c === CharCodes2.NewLine || c === CharCodes2.Tab || c === CharCodes2.FormFeed || c === CharCodes2.CarriageReturn;
    }
    function isEndOfTagSection(c) {
      return c === CharCodes2.Slash || c === CharCodes2.Gt || isWhitespace3(c);
    }
    function isNumber2(c) {
      return c >= CharCodes2.Zero && c <= CharCodes2.Nine;
    }
    function isASCIIAlpha(c) {
      return c >= CharCodes2.LowerA && c <= CharCodes2.LowerZ || c >= CharCodes2.UpperA && c <= CharCodes2.UpperZ;
    }
    function isHexDigit(c) {
      return c >= CharCodes2.UpperA && c <= CharCodes2.UpperF || c >= CharCodes2.LowerA && c <= CharCodes2.LowerF;
    }
    var QuoteType;
    (function(QuoteType2) {
      QuoteType2[QuoteType2["NoValue"] = 0] = "NoValue";
      QuoteType2[QuoteType2["Unquoted"] = 1] = "Unquoted";
      QuoteType2[QuoteType2["Single"] = 2] = "Single";
      QuoteType2[QuoteType2["Double"] = 3] = "Double";
    })(QuoteType = exports2.QuoteType || (exports2.QuoteType = {}));
    var Sequences = {
      Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]),
      CdataEnd: new Uint8Array([93, 93, 62]),
      CommentEnd: new Uint8Array([45, 45, 62]),
      ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]),
      StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]),
      TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101])
      // `</title`
    };
    var Tokenizer2 = (
      /** @class */
      (function() {
        function Tokenizer3(_a6, cbs) {
          var _b = _a6.xmlMode, xmlMode = _b === void 0 ? false : _b, _c = _a6.decodeEntities, decodeEntities = _c === void 0 ? true : _c;
          this.cbs = cbs;
          this.state = State5.Text;
          this.buffer = "";
          this.sectionStart = 0;
          this.index = 0;
          this.baseState = State5.Text;
          this.isSpecial = false;
          this.running = true;
          this.offset = 0;
          this.currentSequence = void 0;
          this.sequenceIndex = 0;
          this.trieIndex = 0;
          this.trieCurrent = 0;
          this.entityResult = 0;
          this.entityExcess = 0;
          this.xmlMode = xmlMode;
          this.decodeEntities = decodeEntities;
          this.entityTrie = xmlMode ? decode_js_1.xmlDecodeTree : decode_js_1.htmlDecodeTree;
        }
        Tokenizer3.prototype.reset = function() {
          this.state = State5.Text;
          this.buffer = "";
          this.sectionStart = 0;
          this.index = 0;
          this.baseState = State5.Text;
          this.currentSequence = void 0;
          this.running = true;
          this.offset = 0;
        };
        Tokenizer3.prototype.write = function(chunk) {
          this.offset += this.buffer.length;
          this.buffer = chunk;
          this.parse();
        };
        Tokenizer3.prototype.end = function() {
          if (this.running)
            this.finish();
        };
        Tokenizer3.prototype.pause = function() {
          this.running = false;
        };
        Tokenizer3.prototype.resume = function() {
          this.running = true;
          if (this.index < this.buffer.length + this.offset) {
            this.parse();
          }
        };
        Tokenizer3.prototype.getIndex = function() {
          return this.index;
        };
        Tokenizer3.prototype.getSectionStart = function() {
          return this.sectionStart;
        };
        Tokenizer3.prototype.stateText = function(c) {
          if (c === CharCodes2.Lt || !this.decodeEntities && this.fastForwardTo(CharCodes2.Lt)) {
            if (this.index > this.sectionStart) {
              this.cbs.ontext(this.sectionStart, this.index);
            }
            this.state = State5.BeforeTagName;
            this.sectionStart = this.index;
          } else if (this.decodeEntities && c === CharCodes2.Amp) {
            this.state = State5.BeforeEntity;
          }
        };
        Tokenizer3.prototype.stateSpecialStartSequence = function(c) {
          var isEnd = this.sequenceIndex === this.currentSequence.length;
          var isMatch = isEnd ? (
            // If we are at the end of the sequence, make sure the tag name has ended
            isEndOfTagSection(c)
          ) : (
            // Otherwise, do a case-insensitive comparison
            (c | 32) === this.currentSequence[this.sequenceIndex]
          );
          if (!isMatch) {
            this.isSpecial = false;
          } else if (!isEnd) {
            this.sequenceIndex++;
            return;
          }
          this.sequenceIndex = 0;
          this.state = State5.InTagName;
          this.stateInTagName(c);
        };
        Tokenizer3.prototype.stateInSpecialTag = function(c) {
          if (this.sequenceIndex === this.currentSequence.length) {
            if (c === CharCodes2.Gt || isWhitespace3(c)) {
              var endOfText = this.index - this.currentSequence.length;
              if (this.sectionStart < endOfText) {
                var actualIndex = this.index;
                this.index = endOfText;
                this.cbs.ontext(this.sectionStart, endOfText);
                this.index = actualIndex;
              }
              this.isSpecial = false;
              this.sectionStart = endOfText + 2;
              this.stateInClosingTagName(c);
              return;
            }
            this.sequenceIndex = 0;
          }
          if ((c | 32) === this.currentSequence[this.sequenceIndex]) {
            this.sequenceIndex += 1;
          } else if (this.sequenceIndex === 0) {
            if (this.currentSequence === Sequences.TitleEnd) {
              if (this.decodeEntities && c === CharCodes2.Amp) {
                this.state = State5.BeforeEntity;
              }
            } else if (this.fastForwardTo(CharCodes2.Lt)) {
              this.sequenceIndex = 1;
            }
          } else {
            this.sequenceIndex = Number(c === CharCodes2.Lt);
          }
        };
        Tokenizer3.prototype.stateCDATASequence = function(c) {
          if (c === Sequences.Cdata[this.sequenceIndex]) {
            if (++this.sequenceIndex === Sequences.Cdata.length) {
              this.state = State5.InCommentLike;
              this.currentSequence = Sequences.CdataEnd;
              this.sequenceIndex = 0;
              this.sectionStart = this.index + 1;
            }
          } else {
            this.sequenceIndex = 0;
            this.state = State5.InDeclaration;
            this.stateInDeclaration(c);
          }
        };
        Tokenizer3.prototype.fastForwardTo = function(c) {
          while (++this.index < this.buffer.length + this.offset) {
            if (this.buffer.charCodeAt(this.index - this.offset) === c) {
              return true;
            }
          }
          this.index = this.buffer.length + this.offset - 1;
          return false;
        };
        Tokenizer3.prototype.stateInCommentLike = function(c) {
          if (c === this.currentSequence[this.sequenceIndex]) {
            if (++this.sequenceIndex === this.currentSequence.length) {
              if (this.currentSequence === Sequences.CdataEnd) {
                this.cbs.oncdata(this.sectionStart, this.index, 2);
              } else {
                this.cbs.oncomment(this.sectionStart, this.index, 2);
              }
              this.sequenceIndex = 0;
              this.sectionStart = this.index + 1;
              this.state = State5.Text;
            }
          } else if (this.sequenceIndex === 0) {
            if (this.fastForwardTo(this.currentSequence[0])) {
              this.sequenceIndex = 1;
            }
          } else if (c !== this.currentSequence[this.sequenceIndex - 1]) {
            this.sequenceIndex = 0;
          }
        };
        Tokenizer3.prototype.isTagStartChar = function(c) {
          return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);
        };
        Tokenizer3.prototype.startSpecial = function(sequence, offset) {
          this.isSpecial = true;
          this.currentSequence = sequence;
          this.sequenceIndex = offset;
          this.state = State5.SpecialStartSequence;
        };
        Tokenizer3.prototype.stateBeforeTagName = function(c) {
          if (c === CharCodes2.ExclamationMark) {
            this.state = State5.BeforeDeclaration;
            this.sectionStart = this.index + 1;
          } else if (c === CharCodes2.Questionmark) {
            this.state = State5.InProcessingInstruction;
            this.sectionStart = this.index + 1;
          } else if (this.isTagStartChar(c)) {
            var lower2 = c | 32;
            this.sectionStart = this.index;
            if (!this.xmlMode && lower2 === Sequences.TitleEnd[2]) {
              this.startSpecial(Sequences.TitleEnd, 3);
            } else {
              this.state = !this.xmlMode && lower2 === Sequences.ScriptEnd[2] ? State5.BeforeSpecialS : State5.InTagName;
            }
          } else if (c === CharCodes2.Slash) {
            this.state = State5.BeforeClosingTagName;
          } else {
            this.state = State5.Text;
            this.stateText(c);
          }
        };
        Tokenizer3.prototype.stateInTagName = function(c) {
          if (isEndOfTagSection(c)) {
            this.cbs.onopentagname(this.sectionStart, this.index);
            this.sectionStart = -1;
            this.state = State5.BeforeAttributeName;
            this.stateBeforeAttributeName(c);
          }
        };
        Tokenizer3.prototype.stateBeforeClosingTagName = function(c) {
          if (isWhitespace3(c)) {
          } else if (c === CharCodes2.Gt) {
            this.state = State5.Text;
          } else {
            this.state = this.isTagStartChar(c) ? State5.InClosingTagName : State5.InSpecialComment;
            this.sectionStart = this.index;
          }
        };
        Tokenizer3.prototype.stateInClosingTagName = function(c) {
          if (c === CharCodes2.Gt || isWhitespace3(c)) {
            this.cbs.onclosetag(this.sectionStart, this.index);
            this.sectionStart = -1;
            this.state = State5.AfterClosingTagName;
            this.stateAfterClosingTagName(c);
          }
        };
        Tokenizer3.prototype.stateAfterClosingTagName = function(c) {
          if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) {
            this.state = State5.Text;
            this.baseState = State5.Text;
            this.sectionStart = this.index + 1;
          }
        };
        Tokenizer3.prototype.stateBeforeAttributeName = function(c) {
          if (c === CharCodes2.Gt) {
            this.cbs.onopentagend(this.index);
            if (this.isSpecial) {
              this.state = State5.InSpecialTag;
              this.sequenceIndex = 0;
            } else {
              this.state = State5.Text;
            }
            this.baseState = this.state;
            this.sectionStart = this.index + 1;
          } else if (c === CharCodes2.Slash) {
            this.state = State5.InSelfClosingTag;
          } else if (!isWhitespace3(c)) {
            this.state = State5.InAttributeName;
            this.sectionStart = this.index;
          }
        };
        Tokenizer3.prototype.stateInSelfClosingTag = function(c) {
          if (c === CharCodes2.Gt) {
            this.cbs.onselfclosingtag(this.index);
            this.state = State5.Text;
            this.baseState = State5.Text;
            this.sectionStart = this.index + 1;
            this.isSpecial = false;
          } else if (!isWhitespace3(c)) {
            this.state = State5.BeforeAttributeName;
            this.stateBeforeAttributeName(c);
          }
        };
        Tokenizer3.prototype.stateInAttributeName = function(c) {
          if (c === CharCodes2.Eq || isEndOfTagSection(c)) {
            this.cbs.onattribname(this.sectionStart, this.index);
            this.sectionStart = -1;
            this.state = State5.AfterAttributeName;
            this.stateAfterAttributeName(c);
          }
        };
        Tokenizer3.prototype.stateAfterAttributeName = function(c) {
          if (c === CharCodes2.Eq) {
            this.state = State5.BeforeAttributeValue;
          } else if (c === CharCodes2.Slash || c === CharCodes2.Gt) {
            this.cbs.onattribend(QuoteType.NoValue, this.index);
            this.state = State5.BeforeAttributeName;
            this.stateBeforeAttributeName(c);
          } else if (!isWhitespace3(c)) {
            this.cbs.onattribend(QuoteType.NoValue, this.index);
            this.state = State5.InAttributeName;
            this.sectionStart = this.index;
          }
        };
        Tokenizer3.prototype.stateBeforeAttributeValue = function(c) {
          if (c === CharCodes2.DoubleQuote) {
            this.state = State5.InAttributeValueDq;
            this.sectionStart = this.index + 1;
          } else if (c === CharCodes2.SingleQuote) {
            this.state = State5.InAttributeValueSq;
            this.sectionStart = this.index + 1;
          } else if (!isWhitespace3(c)) {
            this.sectionStart = this.index;
            this.state = State5.InAttributeValueNq;
            this.stateInAttributeValueNoQuotes(c);
          }
        };
        Tokenizer3.prototype.handleInAttributeValue = function(c, quote) {
          if (c === quote || !this.decodeEntities && this.fastForwardTo(quote)) {
            this.cbs.onattribdata(this.sectionStart, this.index);
            this.sectionStart = -1;
            this.cbs.onattribend(quote === CharCodes2.DoubleQuote ? QuoteType.Double : QuoteType.Single, this.index);
            this.state = State5.BeforeAttributeName;
          } else if (this.decodeEntities && c === CharCodes2.Amp) {
            this.baseState = this.state;
            this.state = State5.BeforeEntity;
          }
        };
        Tokenizer3.prototype.stateInAttributeValueDoubleQuotes = function(c) {
          this.handleInAttributeValue(c, CharCodes2.DoubleQuote);
        };
        Tokenizer3.prototype.stateInAttributeValueSingleQuotes = function(c) {
          this.handleInAttributeValue(c, CharCodes2.SingleQuote);
        };
        Tokenizer3.prototype.stateInAttributeValueNoQuotes = function(c) {
          if (isWhitespace3(c) || c === CharCodes2.Gt) {
            this.cbs.onattribdata(this.sectionStart, this.index);
            this.sectionStart = -1;
            this.cbs.onattribend(QuoteType.Unquoted, this.index);
            this.state = State5.BeforeAttributeName;
            this.stateBeforeAttributeName(c);
          } else if (this.decodeEntities && c === CharCodes2.Amp) {
            this.baseState = this.state;
            this.state = State5.BeforeEntity;
          }
        };
        Tokenizer3.prototype.stateBeforeDeclaration = function(c) {
          if (c === CharCodes2.OpeningSquareBracket) {
            this.state = State5.CDATASequence;
            this.sequenceIndex = 0;
          } else {
            this.state = c === CharCodes2.Dash ? State5.BeforeComment : State5.InDeclaration;
          }
        };
        Tokenizer3.prototype.stateInDeclaration = function(c) {
          if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) {
            this.cbs.ondeclaration(this.sectionStart, this.index);
            this.state = State5.Text;
            this.sectionStart = this.index + 1;
          }
        };
        Tokenizer3.prototype.stateInProcessingInstruction = function(c) {
          if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) {
            this.cbs.onprocessinginstruction(this.sectionStart, this.index);
            this.state = State5.Text;
            this.sectionStart = this.index + 1;
          }
        };
        Tokenizer3.prototype.stateBeforeComment = function(c) {
          if (c === CharCodes2.Dash) {
            this.state = State5.InCommentLike;
            this.currentSequence = Sequences.CommentEnd;
            this.sequenceIndex = 2;
            this.sectionStart = this.index + 1;
          } else {
            this.state = State5.InDeclaration;
          }
        };
        Tokenizer3.prototype.stateInSpecialComment = function(c) {
          if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) {
            this.cbs.oncomment(this.sectionStart, this.index, 0);
            this.state = State5.Text;
            this.sectionStart = this.index + 1;
          }
        };
        Tokenizer3.prototype.stateBeforeSpecialS = function(c) {
          var lower2 = c | 32;
          if (lower2 === Sequences.ScriptEnd[3]) {
            this.startSpecial(Sequences.ScriptEnd, 4);
          } else if (lower2 === Sequences.StyleEnd[3]) {
            this.startSpecial(Sequences.StyleEnd, 4);
          } else {
            this.state = State5.InTagName;
            this.stateInTagName(c);
          }
        };
        Tokenizer3.prototype.stateBeforeEntity = function(c) {
          this.entityExcess = 1;
          this.entityResult = 0;
          if (c === CharCodes2.Number) {
            this.state = State5.BeforeNumericEntity;
          } else if (c === CharCodes2.Amp) {
          } else {
            this.trieIndex = 0;
            this.trieCurrent = this.entityTrie[0];
            this.state = State5.InNamedEntity;
            this.stateInNamedEntity(c);
          }
        };
        Tokenizer3.prototype.stateInNamedEntity = function(c) {
          this.entityExcess += 1;
          this.trieIndex = (0, decode_js_1.determineBranch)(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);
          if (this.trieIndex < 0) {
            this.emitNamedEntity();
            this.index--;
            return;
          }
          this.trieCurrent = this.entityTrie[this.trieIndex];
          var masked = this.trieCurrent & decode_js_1.BinTrieFlags.VALUE_LENGTH;
          if (masked) {
            var valueLength = (masked >> 14) - 1;
            if (!this.allowLegacyEntity() && c !== CharCodes2.Semi) {
              this.trieIndex += valueLength;
            } else {
              var entityStart = this.index - this.entityExcess + 1;
              if (entityStart > this.sectionStart) {
                this.emitPartial(this.sectionStart, entityStart);
              }
              this.entityResult = this.trieIndex;
              this.trieIndex += valueLength;
              this.entityExcess = 0;
              this.sectionStart = this.index + 1;
              if (valueLength === 0) {
                this.emitNamedEntity();
              }
            }
          }
        };
        Tokenizer3.prototype.emitNamedEntity = function() {
          this.state = this.baseState;
          if (this.entityResult === 0) {
            return;
          }
          var valueLength = (this.entityTrie[this.entityResult] & decode_js_1.BinTrieFlags.VALUE_LENGTH) >> 14;
          switch (valueLength) {
            case 1: {
              this.emitCodePoint(this.entityTrie[this.entityResult] & ~decode_js_1.BinTrieFlags.VALUE_LENGTH);
              break;
            }
            case 2: {
              this.emitCodePoint(this.entityTrie[this.entityResult + 1]);
              break;
            }
            case 3: {
              this.emitCodePoint(this.entityTrie[this.entityResult + 1]);
              this.emitCodePoint(this.entityTrie[this.entityResult + 2]);
            }
          }
        };
        Tokenizer3.prototype.stateBeforeNumericEntity = function(c) {
          if ((c | 32) === CharCodes2.LowerX) {
            this.entityExcess++;
            this.state = State5.InHexEntity;
          } else {
            this.state = State5.InNumericEntity;
            this.stateInNumericEntity(c);
          }
        };
        Tokenizer3.prototype.emitNumericEntity = function(strict) {
          var entityStart = this.index - this.entityExcess - 1;
          var numberStart = entityStart + 2 + Number(this.state === State5.InHexEntity);
          if (numberStart !== this.index) {
            if (entityStart > this.sectionStart) {
              this.emitPartial(this.sectionStart, entityStart);
            }
            this.sectionStart = this.index + Number(strict);
            this.emitCodePoint((0, decode_js_1.replaceCodePoint)(this.entityResult));
          }
          this.state = this.baseState;
        };
        Tokenizer3.prototype.stateInNumericEntity = function(c) {
          if (c === CharCodes2.Semi) {
            this.emitNumericEntity(true);
          } else if (isNumber2(c)) {
            this.entityResult = this.entityResult * 10 + (c - CharCodes2.Zero);
            this.entityExcess++;
          } else {
            if (this.allowLegacyEntity()) {
              this.emitNumericEntity(false);
            } else {
              this.state = this.baseState;
            }
            this.index--;
          }
        };
        Tokenizer3.prototype.stateInHexEntity = function(c) {
          if (c === CharCodes2.Semi) {
            this.emitNumericEntity(true);
          } else if (isNumber2(c)) {
            this.entityResult = this.entityResult * 16 + (c - CharCodes2.Zero);
            this.entityExcess++;
          } else if (isHexDigit(c)) {
            this.entityResult = this.entityResult * 16 + ((c | 32) - CharCodes2.LowerA + 10);
            this.entityExcess++;
          } else {
            if (this.allowLegacyEntity()) {
              this.emitNumericEntity(false);
            } else {
              this.state = this.baseState;
            }
            this.index--;
          }
        };
        Tokenizer3.prototype.allowLegacyEntity = function() {
          return !this.xmlMode && (this.baseState === State5.Text || this.baseState === State5.InSpecialTag);
        };
        Tokenizer3.prototype.cleanup = function() {
          if (this.running && this.sectionStart !== this.index) {
            if (this.state === State5.Text || this.state === State5.InSpecialTag && this.sequenceIndex === 0) {
              this.cbs.ontext(this.sectionStart, this.index);
              this.sectionStart = this.index;
            } else if (this.state === State5.InAttributeValueDq || this.state === State5.InAttributeValueSq || this.state === State5.InAttributeValueNq) {
              this.cbs.onattribdata(this.sectionStart, this.index);
              this.sectionStart = this.index;
            }
          }
        };
        Tokenizer3.prototype.shouldContinue = function() {
          return this.index < this.buffer.length + this.offset && this.running;
        };
        Tokenizer3.prototype.parse = function() {
          while (this.shouldContinue()) {
            var c = this.buffer.charCodeAt(this.index - this.offset);
            switch (this.state) {
              case State5.Text: {
                this.stateText(c);
                break;
              }
              case State5.SpecialStartSequence: {
                this.stateSpecialStartSequence(c);
                break;
              }
              case State5.InSpecialTag: {
                this.stateInSpecialTag(c);
                break;
              }
              case State5.CDATASequence: {
                this.stateCDATASequence(c);
                break;
              }
              case State5.InAttributeValueDq: {
                this.stateInAttributeValueDoubleQuotes(c);
                break;
              }
              case State5.InAttributeName: {
                this.stateInAttributeName(c);
                break;
              }
              case State5.InCommentLike: {
                this.stateInCommentLike(c);
                break;
              }
              case State5.InSpecialComment: {
                this.stateInSpecialComment(c);
                break;
              }
              case State5.BeforeAttributeName: {
                this.stateBeforeAttributeName(c);
                break;
              }
              case State5.InTagName: {
                this.stateInTagName(c);
                break;
              }
              case State5.InClosingTagName: {
                this.stateInClosingTagName(c);
                break;
              }
              case State5.BeforeTagName: {
                this.stateBeforeTagName(c);
                break;
              }
              case State5.AfterAttributeName: {
                this.stateAfterAttributeName(c);
                break;
              }
              case State5.InAttributeValueSq: {
                this.stateInAttributeValueSingleQuotes(c);
                break;
              }
              case State5.BeforeAttributeValue: {
                this.stateBeforeAttributeValue(c);
                break;
              }
              case State5.BeforeClosingTagName: {
                this.stateBeforeClosingTagName(c);
                break;
              }
              case State5.AfterClosingTagName: {
                this.stateAfterClosingTagName(c);
                break;
              }
              case State5.BeforeSpecialS: {
                this.stateBeforeSpecialS(c);
                break;
              }
              case State5.InAttributeValueNq: {
                this.stateInAttributeValueNoQuotes(c);
                break;
              }
              case State5.InSelfClosingTag: {
                this.stateInSelfClosingTag(c);
                break;
              }
              case State5.InDeclaration: {
                this.stateInDeclaration(c);
                break;
              }
              case State5.BeforeDeclaration: {
                this.stateBeforeDeclaration(c);
                break;
              }
              case State5.BeforeComment: {
                this.stateBeforeComment(c);
                break;
              }
              case State5.InProcessingInstruction: {
                this.stateInProcessingInstruction(c);
                break;
              }
              case State5.InNamedEntity: {
                this.stateInNamedEntity(c);
                break;
              }
              case State5.BeforeEntity: {
                this.stateBeforeEntity(c);
                break;
              }
              case State5.InHexEntity: {
                this.stateInHexEntity(c);
                break;
              }
              case State5.InNumericEntity: {
                this.stateInNumericEntity(c);
                break;
              }
              default: {
                this.stateBeforeNumericEntity(c);
              }
            }
            this.index++;
          }
          this.cleanup();
        };
        Tokenizer3.prototype.finish = function() {
          if (this.state === State5.InNamedEntity) {
            this.emitNamedEntity();
          }
          if (this.sectionStart < this.index) {
            this.handleTrailingData();
          }
          this.cbs.onend();
        };
        Tokenizer3.prototype.handleTrailingData = function() {
          var endIndex = this.buffer.length + this.offset;
          if (this.state === State5.InCommentLike) {
            if (this.currentSequence === Sequences.CdataEnd) {
              this.cbs.oncdata(this.sectionStart, endIndex, 0);
            } else {
              this.cbs.oncomment(this.sectionStart, endIndex, 0);
            }
          } else if (this.state === State5.InNumericEntity && this.allowLegacyEntity()) {
            this.emitNumericEntity(false);
          } else if (this.state === State5.InHexEntity && this.allowLegacyEntity()) {
            this.emitNumericEntity(false);
          } else if (this.state === State5.InTagName || this.state === State5.BeforeAttributeName || this.state === State5.BeforeAttributeValue || this.state === State5.AfterAttributeName || this.state === State5.InAttributeName || this.state === State5.InAttributeValueSq || this.state === State5.InAttributeValueDq || this.state === State5.InAttributeValueNq || this.state === State5.InClosingTagName) {
          } else {
            this.cbs.ontext(this.sectionStart, endIndex);
          }
        };
        Tokenizer3.prototype.emitPartial = function(start, endIndex) {
          if (this.baseState !== State5.Text && this.baseState !== State5.InSpecialTag) {
            this.cbs.onattribdata(start, endIndex);
          } else {
            this.cbs.ontext(start, endIndex);
          }
        };
        Tokenizer3.prototype.emitCodePoint = function(cp) {
          if (this.baseState !== State5.Text && this.baseState !== State5.InSpecialTag) {
            this.cbs.onattribentity(cp);
          } else {
            this.cbs.ontextentity(cp);
          }
        };
        return Tokenizer3;
      })()
    );
    exports2.default = Tokenizer2;
  }
});

// ../../node_modules/htmlparser2/lib/Parser.js
var require_Parser = __commonJS({
  "../../node_modules/htmlparser2/lib/Parser.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.Parser = void 0;
    var Tokenizer_js_1 = __importStar(require_Tokenizer());
    var decode_js_1 = require_decode2();
    var formTags = /* @__PURE__ */ new Set([
      "input",
      "option",
      "optgroup",
      "select",
      "button",
      "datalist",
      "textarea"
    ]);
    var pTag = /* @__PURE__ */ new Set(["p"]);
    var tableSectionTags = /* @__PURE__ */ new Set(["thead", "tbody"]);
    var ddtTags = /* @__PURE__ */ new Set(["dd", "dt"]);
    var rtpTags = /* @__PURE__ */ new Set(["rt", "rp"]);
    var openImpliesClose = /* @__PURE__ */ new Map([
      ["tr", /* @__PURE__ */ new Set(["tr", "th", "td"])],
      ["th", /* @__PURE__ */ new Set(["th"])],
      ["td", /* @__PURE__ */ new Set(["thead", "th", "td"])],
      ["body", /* @__PURE__ */ new Set(["head", "link", "script"])],
      ["li", /* @__PURE__ */ new Set(["li"])],
      ["p", pTag],
      ["h1", pTag],
      ["h2", pTag],
      ["h3", pTag],
      ["h4", pTag],
      ["h5", pTag],
      ["h6", pTag],
      ["select", formTags],
      ["input", formTags],
      ["output", formTags],
      ["button", formTags],
      ["datalist", formTags],
      ["textarea", formTags],
      ["option", /* @__PURE__ */ new Set(["option"])],
      ["optgroup", /* @__PURE__ */ new Set(["optgroup", "option"])],
      ["dd", ddtTags],
      ["dt", ddtTags],
      ["address", pTag],
      ["article", pTag],
      ["aside", pTag],
      ["blockquote", pTag],
      ["details", pTag],
      ["div", pTag],
      ["dl", pTag],
      ["fieldset", pTag],
      ["figcaption", pTag],
      ["figure", pTag],
      ["footer", pTag],
      ["form", pTag],
      ["header", pTag],
      ["hr", pTag],
      ["main", pTag],
      ["nav", pTag],
      ["ol", pTag],
      ["pre", pTag],
      ["section", pTag],
      ["table", pTag],
      ["ul", pTag],
      ["rt", rtpTags],
      ["rp", rtpTags],
      ["tbody", tableSectionTags],
      ["tfoot", tableSectionTags]
    ]);
    var voidElements = /* @__PURE__ */ new Set([
      "area",
      "base",
      "basefont",
      "br",
      "col",
      "command",
      "embed",
      "frame",
      "hr",
      "img",
      "input",
      "isindex",
      "keygen",
      "link",
      "meta",
      "param",
      "source",
      "track",
      "wbr"
    ]);
    var foreignContextElements = /* @__PURE__ */ new Set(["math", "svg"]);
    var htmlIntegrationElements = /* @__PURE__ */ new Set([
      "mi",
      "mo",
      "mn",
      "ms",
      "mtext",
      "annotation-xml",
      "foreignobject",
      "desc",
      "title"
    ]);
    var reNameEnd = /\s|\//;
    var Parser3 = (
      /** @class */
      (function() {
        function Parser4(cbs, options) {
          if (options === void 0) {
            options = {};
          }
          var _a6, _b, _c, _d2, _e;
          this.options = options;
          this.startIndex = 0;
          this.endIndex = 0;
          this.openTagStart = 0;
          this.tagname = "";
          this.attribname = "";
          this.attribvalue = "";
          this.attribs = null;
          this.stack = [];
          this.foreignContext = [];
          this.buffers = [];
          this.bufferOffset = 0;
          this.writeIndex = 0;
          this.ended = false;
          this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};
          this.lowerCaseTagNames = (_a6 = options.lowerCaseTags) !== null && _a6 !== void 0 ? _a6 : !options.xmlMode;
          this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;
          this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer_js_1.default)(this.options, this);
          (_e = (_d2 = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d2, this);
        }
        Parser4.prototype.ontext = function(start, endIndex) {
          var _a6, _b;
          var data = this.getSlice(start, endIndex);
          this.endIndex = endIndex - 1;
          (_b = (_a6 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a6, data);
          this.startIndex = endIndex;
        };
        Parser4.prototype.ontextentity = function(cp) {
          var _a6, _b;
          var index4 = this.tokenizer.getSectionStart();
          this.endIndex = index4 - 1;
          (_b = (_a6 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a6, (0, decode_js_1.fromCodePoint)(cp));
          this.startIndex = index4;
        };
        Parser4.prototype.isVoidElement = function(name3) {
          return !this.options.xmlMode && voidElements.has(name3);
        };
        Parser4.prototype.onopentagname = function(start, endIndex) {
          this.endIndex = endIndex;
          var name3 = this.getSlice(start, endIndex);
          if (this.lowerCaseTagNames) {
            name3 = name3.toLowerCase();
          }
          this.emitOpenTag(name3);
        };
        Parser4.prototype.emitOpenTag = function(name3) {
          var _a6, _b, _c, _d2;
          this.openTagStart = this.startIndex;
          this.tagname = name3;
          var impliesClose = !this.options.xmlMode && openImpliesClose.get(name3);
          if (impliesClose) {
            while (this.stack.length > 0 && impliesClose.has(this.stack[this.stack.length - 1])) {
              var element5 = this.stack.pop();
              (_b = (_a6 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a6, element5, true);
            }
          }
          if (!this.isVoidElement(name3)) {
            this.stack.push(name3);
            if (foreignContextElements.has(name3)) {
              this.foreignContext.push(true);
            } else if (htmlIntegrationElements.has(name3)) {
              this.foreignContext.push(false);
            }
          }
          (_d2 = (_c = this.cbs).onopentagname) === null || _d2 === void 0 ? void 0 : _d2.call(_c, name3);
          if (this.cbs.onopentag)
            this.attribs = {};
        };
        Parser4.prototype.endOpenTag = function(isImplied) {
          var _a6, _b;
          this.startIndex = this.openTagStart;
          if (this.attribs) {
            (_b = (_a6 = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a6, this.tagname, this.attribs, isImplied);
            this.attribs = null;
          }
          if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {
            this.cbs.onclosetag(this.tagname, true);
          }
          this.tagname = "";
        };
        Parser4.prototype.onopentagend = function(endIndex) {
          this.endIndex = endIndex;
          this.endOpenTag(false);
          this.startIndex = endIndex + 1;
        };
        Parser4.prototype.onclosetag = function(start, endIndex) {
          var _a6, _b, _c, _d2, _e, _f;
          this.endIndex = endIndex;
          var name3 = this.getSlice(start, endIndex);
          if (this.lowerCaseTagNames) {
            name3 = name3.toLowerCase();
          }
          if (foreignContextElements.has(name3) || htmlIntegrationElements.has(name3)) {
            this.foreignContext.pop();
          }
          if (!this.isVoidElement(name3)) {
            var pos = this.stack.lastIndexOf(name3);
            if (pos !== -1) {
              if (this.cbs.onclosetag) {
                var count2 = this.stack.length - pos;
                while (count2--) {
                  this.cbs.onclosetag(this.stack.pop(), count2 !== 0);
                }
              } else
                this.stack.length = pos;
            } else if (!this.options.xmlMode && name3 === "p") {
              this.emitOpenTag("p");
              this.closeCurrentTag(true);
            }
          } else if (!this.options.xmlMode && name3 === "br") {
            (_b = (_a6 = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a6, "br");
            (_d2 = (_c = this.cbs).onopentag) === null || _d2 === void 0 ? void 0 : _d2.call(_c, "br", {}, true);
            (_f = (_e = this.cbs).onclosetag) === null || _f === void 0 ? void 0 : _f.call(_e, "br", false);
          }
          this.startIndex = endIndex + 1;
        };
        Parser4.prototype.onselfclosingtag = function(endIndex) {
          this.endIndex = endIndex;
          if (this.options.xmlMode || this.options.recognizeSelfClosing || this.foreignContext[this.foreignContext.length - 1]) {
            this.closeCurrentTag(false);
            this.startIndex = endIndex + 1;
          } else {
            this.onopentagend(endIndex);
          }
        };
        Parser4.prototype.closeCurrentTag = function(isOpenImplied) {
          var _a6, _b;
          var name3 = this.tagname;
          this.endOpenTag(isOpenImplied);
          if (this.stack[this.stack.length - 1] === name3) {
            (_b = (_a6 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a6, name3, !isOpenImplied);
            this.stack.pop();
          }
        };
        Parser4.prototype.onattribname = function(start, endIndex) {
          this.startIndex = start;
          var name3 = this.getSlice(start, endIndex);
          this.attribname = this.lowerCaseAttributeNames ? name3.toLowerCase() : name3;
        };
        Parser4.prototype.onattribdata = function(start, endIndex) {
          this.attribvalue += this.getSlice(start, endIndex);
        };
        Parser4.prototype.onattribentity = function(cp) {
          this.attribvalue += (0, decode_js_1.fromCodePoint)(cp);
        };
        Parser4.prototype.onattribend = function(quote, endIndex) {
          var _a6, _b;
          this.endIndex = endIndex;
          (_b = (_a6 = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a6, this.attribname, this.attribvalue, quote === Tokenizer_js_1.QuoteType.Double ? '"' : quote === Tokenizer_js_1.QuoteType.Single ? "'" : quote === Tokenizer_js_1.QuoteType.NoValue ? void 0 : null);
          if (this.attribs && !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {
            this.attribs[this.attribname] = this.attribvalue;
          }
          this.attribvalue = "";
        };
        Parser4.prototype.getInstructionName = function(value) {
          var index4 = value.search(reNameEnd);
          var name3 = index4 < 0 ? value : value.substr(0, index4);
          if (this.lowerCaseTagNames) {
            name3 = name3.toLowerCase();
          }
          return name3;
        };
        Parser4.prototype.ondeclaration = function(start, endIndex) {
          this.endIndex = endIndex;
          var value = this.getSlice(start, endIndex);
          if (this.cbs.onprocessinginstruction) {
            var name3 = this.getInstructionName(value);
            this.cbs.onprocessinginstruction("!".concat(name3), "!".concat(value));
          }
          this.startIndex = endIndex + 1;
        };
        Parser4.prototype.onprocessinginstruction = function(start, endIndex) {
          this.endIndex = endIndex;
          var value = this.getSlice(start, endIndex);
          if (this.cbs.onprocessinginstruction) {
            var name3 = this.getInstructionName(value);
            this.cbs.onprocessinginstruction("?".concat(name3), "?".concat(value));
          }
          this.startIndex = endIndex + 1;
        };
        Parser4.prototype.oncomment = function(start, endIndex, offset) {
          var _a6, _b, _c, _d2;
          this.endIndex = endIndex;
          (_b = (_a6 = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a6, this.getSlice(start, endIndex - offset));
          (_d2 = (_c = this.cbs).oncommentend) === null || _d2 === void 0 ? void 0 : _d2.call(_c);
          this.startIndex = endIndex + 1;
        };
        Parser4.prototype.oncdata = function(start, endIndex, offset) {
          var _a6, _b, _c, _d2, _e, _f, _g, _h, _j, _k;
          this.endIndex = endIndex;
          var value = this.getSlice(start, endIndex - offset);
          if (this.options.xmlMode || this.options.recognizeCDATA) {
            (_b = (_a6 = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a6);
            (_d2 = (_c = this.cbs).ontext) === null || _d2 === void 0 ? void 0 : _d2.call(_c, value);
            (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);
          } else {
            (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, "[CDATA[".concat(value, "]]"));
            (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);
          }
          this.startIndex = endIndex + 1;
        };
        Parser4.prototype.onend = function() {
          var _a6, _b;
          if (this.cbs.onclosetag) {
            this.endIndex = this.startIndex;
            for (var index4 = this.stack.length; index4 > 0; this.cbs.onclosetag(this.stack[--index4], true))
              ;
          }
          (_b = (_a6 = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a6);
        };
        Parser4.prototype.reset = function() {
          var _a6, _b, _c, _d2;
          (_b = (_a6 = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a6);
          this.tokenizer.reset();
          this.tagname = "";
          this.attribname = "";
          this.attribs = null;
          this.stack.length = 0;
          this.startIndex = 0;
          this.endIndex = 0;
          (_d2 = (_c = this.cbs).onparserinit) === null || _d2 === void 0 ? void 0 : _d2.call(_c, this);
          this.buffers.length = 0;
          this.bufferOffset = 0;
          this.writeIndex = 0;
          this.ended = false;
        };
        Parser4.prototype.parseComplete = function(data) {
          this.reset();
          this.end(data);
        };
        Parser4.prototype.getSlice = function(start, end) {
          while (start - this.bufferOffset >= this.buffers[0].length) {
            this.shiftBuffer();
          }
          var slice2 = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);
          while (end - this.bufferOffset > this.buffers[0].length) {
            this.shiftBuffer();
            slice2 += this.buffers[0].slice(0, end - this.bufferOffset);
          }
          return slice2;
        };
        Parser4.prototype.shiftBuffer = function() {
          this.bufferOffset += this.buffers[0].length;
          this.writeIndex--;
          this.buffers.shift();
        };
        Parser4.prototype.write = function(chunk) {
          var _a6, _b;
          if (this.ended) {
            (_b = (_a6 = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a6, new Error(".write() after done!"));
            return;
          }
          this.buffers.push(chunk);
          if (this.tokenizer.running) {
            this.tokenizer.write(chunk);
            this.writeIndex++;
          }
        };
        Parser4.prototype.end = function(chunk) {
          var _a6, _b;
          if (this.ended) {
            (_b = (_a6 = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a6, new Error(".end() after done!"));
            return;
          }
          if (chunk)
            this.write(chunk);
          this.ended = true;
          this.tokenizer.end();
        };
        Parser4.prototype.pause = function() {
          this.tokenizer.pause();
        };
        Parser4.prototype.resume = function() {
          this.tokenizer.resume();
          while (this.tokenizer.running && this.writeIndex < this.buffers.length) {
            this.tokenizer.write(this.buffers[this.writeIndex++]);
          }
          if (this.ended)
            this.tokenizer.end();
        };
        Parser4.prototype.parseChunk = function(chunk) {
          this.write(chunk);
        };
        Parser4.prototype.done = function(chunk) {
          this.end(chunk);
        };
        return Parser4;
      })()
    );
    exports2.Parser = Parser3;
  }
});

// ../../node_modules/domelementtype/lib/index.js
var require_lib7 = __commonJS({
  "../../node_modules/domelementtype/lib/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.Doctype = exports2.CDATA = exports2.Tag = exports2.Style = exports2.Script = exports2.Comment = exports2.Directive = exports2.Text = exports2.Root = exports2.isTag = exports2.ElementType = void 0;
    var ElementType;
    (function(ElementType2) {
      ElementType2["Root"] = "root";
      ElementType2["Text"] = "text";
      ElementType2["Directive"] = "directive";
      ElementType2["Comment"] = "comment";
      ElementType2["Script"] = "script";
      ElementType2["Style"] = "style";
      ElementType2["Tag"] = "tag";
      ElementType2["CDATA"] = "cdata";
      ElementType2["Doctype"] = "doctype";
    })(ElementType = exports2.ElementType || (exports2.ElementType = {}));
    function isTag(elem) {
      return elem.type === ElementType.Tag || elem.type === ElementType.Script || elem.type === ElementType.Style;
    }
    exports2.isTag = isTag;
    exports2.Root = ElementType.Root;
    exports2.Text = ElementType.Text;
    exports2.Directive = ElementType.Directive;
    exports2.Comment = ElementType.Comment;
    exports2.Script = ElementType.Script;
    exports2.Style = ElementType.Style;
    exports2.Tag = ElementType.Tag;
    exports2.CDATA = ElementType.CDATA;
    exports2.Doctype = ElementType.Doctype;
  }
});

// ../../node_modules/domhandler/lib/node.js
var require_node = __commonJS({
  "../../node_modules/domhandler/lib/node.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    var __assign = exports2 && exports2.__assign || function() {
      __assign = Object.assign || function(t2) {
        for (var s5, i2 = 1, n = arguments.length; i2 < n; i2++) {
          s5 = arguments[i2];
          for (var p5 in s5) if (Object.prototype.hasOwnProperty.call(s5, p5))
            t2[p5] = s5[p5];
        }
        return t2;
      };
      return __assign.apply(this, arguments);
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.cloneNode = exports2.hasChildren = exports2.isDocument = exports2.isDirective = exports2.isComment = exports2.isText = exports2.isCDATA = exports2.isTag = exports2.Element = exports2.Document = exports2.CDATA = exports2.NodeWithChildren = exports2.ProcessingInstruction = exports2.Comment = exports2.Text = exports2.DataNode = exports2.Node = void 0;
    var domelementtype_1 = require_lib7();
    var Node = (
      /** @class */
      (function() {
        function Node2() {
          this.parent = null;
          this.prev = null;
          this.next = null;
          this.startIndex = null;
          this.endIndex = null;
        }
        Object.defineProperty(Node2.prototype, "parentNode", {
          // Read-write aliases for properties
          /**
           * Same as {@link parent}.
           * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
           */
          get: function() {
            return this.parent;
          },
          set: function(parent2) {
            this.parent = parent2;
          },
          enumerable: false,
          configurable: true
        });
        Object.defineProperty(Node2.prototype, "previousSibling", {
          /**
           * Same as {@link prev}.
           * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
           */
          get: function() {
            return this.prev;
          },
          set: function(prev) {
            this.prev = prev;
          },
          enumerable: false,
          configurable: true
        });
        Object.defineProperty(Node2.prototype, "nextSibling", {
          /**
           * Same as {@link next}.
           * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
           */
          get: function() {
            return this.next;
          },
          set: function(next) {
            this.next = next;
          },
          enumerable: false,
          configurable: true
        });
        Node2.prototype.cloneNode = function(recursive) {
          if (recursive === void 0) {
            recursive = false;
          }
          return cloneNode(this, recursive);
        };
        return Node2;
      })()
    );
    exports2.Node = Node;
    var DataNode = (
      /** @class */
      (function(_super) {
        __extends(DataNode2, _super);
        function DataNode2(data) {
          var _this = _super.call(this) || this;
          _this.data = data;
          return _this;
        }
        Object.defineProperty(DataNode2.prototype, "nodeValue", {
          /**
           * Same as {@link data}.
           * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
           */
          get: function() {
            return this.data;
          },
          set: function(data) {
            this.data = data;
          },
          enumerable: false,
          configurable: true
        });
        return DataNode2;
      })(Node)
    );
    exports2.DataNode = DataNode;
    var Text = (
      /** @class */
      (function(_super) {
        __extends(Text2, _super);
        function Text2() {
          var _this = _super !== null && _super.apply(this, arguments) || this;
          _this.type = domelementtype_1.ElementType.Text;
          return _this;
        }
        Object.defineProperty(Text2.prototype, "nodeType", {
          get: function() {
            return 3;
          },
          enumerable: false,
          configurable: true
        });
        return Text2;
      })(DataNode)
    );
    exports2.Text = Text;
    var Comment = (
      /** @class */
      (function(_super) {
        __extends(Comment2, _super);
        function Comment2() {
          var _this = _super !== null && _super.apply(this, arguments) || this;
          _this.type = domelementtype_1.ElementType.Comment;
          return _this;
        }
        Object.defineProperty(Comment2.prototype, "nodeType", {
          get: function() {
            return 8;
          },
          enumerable: false,
          configurable: true
        });
        return Comment2;
      })(DataNode)
    );
    exports2.Comment = Comment;
    var ProcessingInstruction = (
      /** @class */
      (function(_super) {
        __extends(ProcessingInstruction2, _super);
        function ProcessingInstruction2(name3, data) {
          var _this = _super.call(this, data) || this;
          _this.name = name3;
          _this.type = domelementtype_1.ElementType.Directive;
          return _this;
        }
        Object.defineProperty(ProcessingInstruction2.prototype, "nodeType", {
          get: function() {
            return 1;
          },
          enumerable: false,
          configurable: true
        });
        return ProcessingInstruction2;
      })(DataNode)
    );
    exports2.ProcessingInstruction = ProcessingInstruction;
    var NodeWithChildren = (
      /** @class */
      (function(_super) {
        __extends(NodeWithChildren2, _super);
        function NodeWithChildren2(children) {
          var _this = _super.call(this) || this;
          _this.children = children;
          return _this;
        }
        Object.defineProperty(NodeWithChildren2.prototype, "firstChild", {
          // Aliases
          /** First child of the node. */
          get: function() {
            var _a6;
            return (_a6 = this.children[0]) !== null && _a6 !== void 0 ? _a6 : null;
          },
          enumerable: false,
          configurable: true
        });
        Object.defineProperty(NodeWithChildren2.prototype, "lastChild", {
          /** Last child of the node. */
          get: function() {
            return this.children.length > 0 ? this.children[this.children.length - 1] : null;
          },
          enumerable: false,
          configurable: true
        });
        Object.defineProperty(NodeWithChildren2.prototype, "childNodes", {
          /**
           * Same as {@link children}.
           * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
           */
          get: function() {
            return this.children;
          },
          set: function(children) {
            this.children = children;
          },
          enumerable: false,
          configurable: true
        });
        return NodeWithChildren2;
      })(Node)
    );
    exports2.NodeWithChildren = NodeWithChildren;
    var CDATA = (
      /** @class */
      (function(_super) {
        __extends(CDATA2, _super);
        function CDATA2() {
          var _this = _super !== null && _super.apply(this, arguments) || this;
          _this.type = domelementtype_1.ElementType.CDATA;
          return _this;
        }
        Object.defineProperty(CDATA2.prototype, "nodeType", {
          get: function() {
            return 4;
          },
          enumerable: false,
          configurable: true
        });
        return CDATA2;
      })(NodeWithChildren)
    );
    exports2.CDATA = CDATA;
    var Document2 = (
      /** @class */
      (function(_super) {
        __extends(Document3, _super);
        function Document3() {
          var _this = _super !== null && _super.apply(this, arguments) || this;
          _this.type = domelementtype_1.ElementType.Root;
          return _this;
        }
        Object.defineProperty(Document3.prototype, "nodeType", {
          get: function() {
            return 9;
          },
          enumerable: false,
          configurable: true
        });
        return Document3;
      })(NodeWithChildren)
    );
    exports2.Document = Document2;
    var Element = (
      /** @class */
      (function(_super) {
        __extends(Element2, _super);
        function Element2(name3, attribs, children, type2) {
          if (children === void 0) {
            children = [];
          }
          if (type2 === void 0) {
            type2 = name3 === "script" ? domelementtype_1.ElementType.Script : name3 === "style" ? domelementtype_1.ElementType.Style : domelementtype_1.ElementType.Tag;
          }
          var _this = _super.call(this, children) || this;
          _this.name = name3;
          _this.attribs = attribs;
          _this.type = type2;
          return _this;
        }
        Object.defineProperty(Element2.prototype, "nodeType", {
          get: function() {
            return 1;
          },
          enumerable: false,
          configurable: true
        });
        Object.defineProperty(Element2.prototype, "tagName", {
          // DOM Level 1 aliases
          /**
           * Same as {@link name}.
           * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
           */
          get: function() {
            return this.name;
          },
          set: function(name3) {
            this.name = name3;
          },
          enumerable: false,
          configurable: true
        });
        Object.defineProperty(Element2.prototype, "attributes", {
          get: function() {
            var _this = this;
            return Object.keys(this.attribs).map(function(name3) {
              var _a6, _b;
              return {
                name: name3,
                value: _this.attribs[name3],
                namespace: (_a6 = _this["x-attribsNamespace"]) === null || _a6 === void 0 ? void 0 : _a6[name3],
                prefix: (_b = _this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name3]
              };
            });
          },
          enumerable: false,
          configurable: true
        });
        return Element2;
      })(NodeWithChildren)
    );
    exports2.Element = Element;
    function isTag(node3) {
      return (0, domelementtype_1.isTag)(node3);
    }
    exports2.isTag = isTag;
    function isCDATA(node3) {
      return node3.type === domelementtype_1.ElementType.CDATA;
    }
    exports2.isCDATA = isCDATA;
    function isText(node3) {
      return node3.type === domelementtype_1.ElementType.Text;
    }
    exports2.isText = isText;
    function isComment(node3) {
      return node3.type === domelementtype_1.ElementType.Comment;
    }
    exports2.isComment = isComment;
    function isDirective(node3) {
      return node3.type === domelementtype_1.ElementType.Directive;
    }
    exports2.isDirective = isDirective;
    function isDocument(node3) {
      return node3.type === domelementtype_1.ElementType.Root;
    }
    exports2.isDocument = isDocument;
    function hasChildren2(node3) {
      return Object.prototype.hasOwnProperty.call(node3, "children");
    }
    exports2.hasChildren = hasChildren2;
    function cloneNode(node3, recursive) {
      if (recursive === void 0) {
        recursive = false;
      }
      var result;
      if (isText(node3)) {
        result = new Text(node3.data);
      } else if (isComment(node3)) {
        result = new Comment(node3.data);
      } else if (isTag(node3)) {
        var children = recursive ? cloneChildren(node3.children) : [];
        var clone_1 = new Element(node3.name, __assign({}, node3.attribs), children);
        children.forEach(function(child) {
          return child.parent = clone_1;
        });
        if (node3.namespace != null) {
          clone_1.namespace = node3.namespace;
        }
        if (node3["x-attribsNamespace"]) {
          clone_1["x-attribsNamespace"] = __assign({}, node3["x-attribsNamespace"]);
        }
        if (node3["x-attribsPrefix"]) {
          clone_1["x-attribsPrefix"] = __assign({}, node3["x-attribsPrefix"]);
        }
        result = clone_1;
      } else if (isCDATA(node3)) {
        var children = recursive ? cloneChildren(node3.children) : [];
        var clone_2 = new CDATA(children);
        children.forEach(function(child) {
          return child.parent = clone_2;
        });
        result = clone_2;
      } else if (isDocument(node3)) {
        var children = recursive ? cloneChildren(node3.children) : [];
        var clone_3 = new Document2(children);
        children.forEach(function(child) {
          return child.parent = clone_3;
        });
        if (node3["x-mode"]) {
          clone_3["x-mode"] = node3["x-mode"];
        }
        result = clone_3;
      } else if (isDirective(node3)) {
        var instruction = new ProcessingInstruction(node3.name, node3.data);
        if (node3["x-name"] != null) {
          instruction["x-name"] = node3["x-name"];
          instruction["x-publicId"] = node3["x-publicId"];
          instruction["x-systemId"] = node3["x-systemId"];
        }
        result = instruction;
      } else {
        throw new Error("Not implemented yet: ".concat(node3.type));
      }
      result.startIndex = node3.startIndex;
      result.endIndex = node3.endIndex;
      if (node3.sourceCodeLocation != null) {
        result.sourceCodeLocation = node3.sourceCodeLocation;
      }
      return result;
    }
    exports2.cloneNode = cloneNode;
    function cloneChildren(childs) {
      var children = childs.map(function(child) {
        return cloneNode(child, true);
      });
      for (var i2 = 1; i2 < children.length; i2++) {
        children[i2].prev = children[i2 - 1];
        children[i2 - 1].next = children[i2];
      }
      return children;
    }
  }
});

// ../../node_modules/domhandler/lib/index.js
var require_lib8 = __commonJS({
  "../../node_modules/domhandler/lib/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __exportStar = exports2 && exports2.__exportStar || function(m2, exports3) {
      for (var p5 in m2) if (p5 !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p5)) __createBinding(exports3, m2, p5);
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.DomHandler = void 0;
    var domelementtype_1 = require_lib7();
    var node_js_1 = require_node();
    __exportStar(require_node(), exports2);
    var defaultOpts = {
      withStartIndices: false,
      withEndIndices: false,
      xmlMode: false
    };
    var DomHandler = (
      /** @class */
      (function() {
        function DomHandler2(callback, options, elementCB) {
          this.dom = [];
          this.root = new node_js_1.Document(this.dom);
          this.done = false;
          this.tagStack = [this.root];
          this.lastNode = null;
          this.parser = null;
          if (typeof options === "function") {
            elementCB = options;
            options = defaultOpts;
          }
          if (typeof callback === "object") {
            options = callback;
            callback = void 0;
          }
          this.callback = callback !== null && callback !== void 0 ? callback : null;
          this.options = options !== null && options !== void 0 ? options : defaultOpts;
          this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;
        }
        DomHandler2.prototype.onparserinit = function(parser3) {
          this.parser = parser3;
        };
        DomHandler2.prototype.onreset = function() {
          this.dom = [];
          this.root = new node_js_1.Document(this.dom);
          this.done = false;
          this.tagStack = [this.root];
          this.lastNode = null;
          this.parser = null;
        };
        DomHandler2.prototype.onend = function() {
          if (this.done)
            return;
          this.done = true;
          this.parser = null;
          this.handleCallback(null);
        };
        DomHandler2.prototype.onerror = function(error) {
          this.handleCallback(error);
        };
        DomHandler2.prototype.onclosetag = function() {
          this.lastNode = null;
          var elem = this.tagStack.pop();
          if (this.options.withEndIndices) {
            elem.endIndex = this.parser.endIndex;
          }
          if (this.elementCB)
            this.elementCB(elem);
        };
        DomHandler2.prototype.onopentag = function(name3, attribs) {
          var type2 = this.options.xmlMode ? domelementtype_1.ElementType.Tag : void 0;
          var element5 = new node_js_1.Element(name3, attribs, void 0, type2);
          this.addNode(element5);
          this.tagStack.push(element5);
        };
        DomHandler2.prototype.ontext = function(data) {
          var lastNode2 = this.lastNode;
          if (lastNode2 && lastNode2.type === domelementtype_1.ElementType.Text) {
            lastNode2.data += data;
            if (this.options.withEndIndices) {
              lastNode2.endIndex = this.parser.endIndex;
            }
          } else {
            var node3 = new node_js_1.Text(data);
            this.addNode(node3);
            this.lastNode = node3;
          }
        };
        DomHandler2.prototype.oncomment = function(data) {
          if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {
            this.lastNode.data += data;
            return;
          }
          var node3 = new node_js_1.Comment(data);
          this.addNode(node3);
          this.lastNode = node3;
        };
        DomHandler2.prototype.oncommentend = function() {
          this.lastNode = null;
        };
        DomHandler2.prototype.oncdatastart = function() {
          var text7 = new node_js_1.Text("");
          var node3 = new node_js_1.CDATA([text7]);
          this.addNode(node3);
          text7.parent = node3;
          this.lastNode = text7;
        };
        DomHandler2.prototype.oncdataend = function() {
          this.lastNode = null;
        };
        DomHandler2.prototype.onprocessinginstruction = function(name3, data) {
          var node3 = new node_js_1.ProcessingInstruction(name3, data);
          this.addNode(node3);
        };
        DomHandler2.prototype.handleCallback = function(error) {
          if (typeof this.callback === "function") {
            this.callback(error, this.dom);
          } else if (error) {
            throw error;
          }
        };
        DomHandler2.prototype.addNode = function(node3) {
          var parent2 = this.tagStack[this.tagStack.length - 1];
          var previousSibling = parent2.children[parent2.children.length - 1];
          if (this.options.withStartIndices) {
            node3.startIndex = this.parser.startIndex;
          }
          if (this.options.withEndIndices) {
            node3.endIndex = this.parser.endIndex;
          }
          parent2.children.push(node3);
          if (previousSibling) {
            node3.prev = previousSibling;
            previousSibling.next = node3;
          }
          node3.parent = parent2;
          this.lastNode = null;
        };
        return DomHandler2;
      })()
    );
    exports2.DomHandler = DomHandler;
    exports2.default = DomHandler;
  }
});

// ../../node_modules/entities/lib/generated/encode-html.js
var require_encode_html = __commonJS({
  "../../node_modules/entities/lib/generated/encode-html.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    function restoreDiff(arr) {
      for (var i2 = 1; i2 < arr.length; i2++) {
        arr[i2][0] += arr[i2 - 1][0] + 1;
      }
      return arr;
    }
    exports2.default = new Map(/* @__PURE__ */ restoreDiff([[9, "&Tab;"], [0, "&NewLine;"], [22, "&excl;"], [0, "&quot;"], [0, "&num;"], [0, "&dollar;"], [0, "&percnt;"], [0, "&amp;"], [0, "&apos;"], [0, "&lpar;"], [0, "&rpar;"], [0, "&ast;"], [0, "&plus;"], [0, "&comma;"], [1, "&period;"], [0, "&sol;"], [10, "&colon;"], [0, "&semi;"], [0, { v: "&lt;", n: 8402, o: "&nvlt;" }], [0, { v: "&equals;", n: 8421, o: "&bne;" }], [0, { v: "&gt;", n: 8402, o: "&nvgt;" }], [0, "&quest;"], [0, "&commat;"], [26, "&lbrack;"], [0, "&bsol;"], [0, "&rbrack;"], [0, "&Hat;"], [0, "&lowbar;"], [0, "&DiacriticalGrave;"], [5, { n: 106, o: "&fjlig;" }], [20, "&lbrace;"], [0, "&verbar;"], [0, "&rbrace;"], [34, "&nbsp;"], [0, "&iexcl;"], [0, "&cent;"], [0, "&pound;"], [0, "&curren;"], [0, "&yen;"], [0, "&brvbar;"], [0, "&sect;"], [0, "&die;"], [0, "&copy;"], [0, "&ordf;"], [0, "&laquo;"], [0, "&not;"], [0, "&shy;"], [0, "&circledR;"], [0, "&macr;"], [0, "&deg;"], [0, "&PlusMinus;"], [0, "&sup2;"], [0, "&sup3;"], [0, "&acute;"], [0, "&micro;"], [0, "&para;"], [0, "&centerdot;"], [0, "&cedil;"], [0, "&sup1;"], [0, "&ordm;"], [0, "&raquo;"], [0, "&frac14;"], [0, "&frac12;"], [0, "&frac34;"], [0, "&iquest;"], [0, "&Agrave;"], [0, "&Aacute;"], [0, "&Acirc;"], [0, "&Atilde;"], [0, "&Auml;"], [0, "&angst;"], [0, "&AElig;"], [0, "&Ccedil;"], [0, "&Egrave;"], [0, "&Eacute;"], [0, "&Ecirc;"], [0, "&Euml;"], [0, "&Igrave;"], [0, "&Iacute;"], [0, "&Icirc;"], [0, "&Iuml;"], [0, "&ETH;"], [0, "&Ntilde;"], [0, "&Ograve;"], [0, "&Oacute;"], [0, "&Ocirc;"], [0, "&Otilde;"], [0, "&Ouml;"], [0, "&times;"], [0, "&Oslash;"], [0, "&Ugrave;"], [0, "&Uacute;"], [0, "&Ucirc;"], [0, "&Uuml;"], [0, "&Yacute;"], [0, "&THORN;"], [0, "&szlig;"], [0, "&agrave;"], [0, "&aacute;"], [0, "&acirc;"], [0, "&atilde;"], [0, "&auml;"], [0, "&aring;"], [0, "&aelig;"], [0, "&ccedil;"], [0, "&egrave;"], [0, "&eacute;"], [0, "&ecirc;"], [0, "&euml;"], [0, "&igrave;"], [0, "&iacute;"], [0, "&icirc;"], [0, "&iuml;"], [0, "&eth;"], [0, "&ntilde;"], [0, "&ograve;"], [0, "&oacute;"], [0, "&ocirc;"], [0, "&otilde;"], [0, "&ouml;"], [0, "&div;"], [0, "&oslash;"], [0, "&ugrave;"], [0, "&uacute;"], [0, "&ucirc;"], [0, "&uuml;"], [0, "&yacute;"], [0, "&thorn;"], [0, "&yuml;"], [0, "&Amacr;"], [0, "&amacr;"], [0, "&Abreve;"], [0, "&abreve;"], [0, "&Aogon;"], [0, "&aogon;"], [0, "&Cacute;"], [0, "&cacute;"], [0, "&Ccirc;"], [0, "&ccirc;"], [0, "&Cdot;"], [0, "&cdot;"], [0, "&Ccaron;"], [0, "&ccaron;"], [0, "&Dcaron;"], [0, "&dcaron;"], [0, "&Dstrok;"], [0, "&dstrok;"], [0, "&Emacr;"], [0, "&emacr;"], [2, "&Edot;"], [0, "&edot;"], [0, "&Eogon;"], [0, "&eogon;"], [0, "&Ecaron;"], [0, "&ecaron;"], [0, "&Gcirc;"], [0, "&gcirc;"], [0, "&Gbreve;"], [0, "&gbreve;"], [0, "&Gdot;"], [0, "&gdot;"], [0, "&Gcedil;"], [1, "&Hcirc;"], [0, "&hcirc;"], [0, "&Hstrok;"], [0, "&hstrok;"], [0, "&Itilde;"], [0, "&itilde;"], [0, "&Imacr;"], [0, "&imacr;"], [2, "&Iogon;"], [0, "&iogon;"], [0, "&Idot;"], [0, "&imath;"], [0, "&IJlig;"], [0, "&ijlig;"], [0, "&Jcirc;"], [0, "&jcirc;"], [0, "&Kcedil;"], [0, "&kcedil;"], [0, "&kgreen;"], [0, "&Lacute;"], [0, "&lacute;"], [0, "&Lcedil;"], [0, "&lcedil;"], [0, "&Lcaron;"], [0, "&lcaron;"], [0, "&Lmidot;"], [0, "&lmidot;"], [0, "&Lstrok;"], [0, "&lstrok;"], [0, "&Nacute;"], [0, "&nacute;"], [0, "&Ncedil;"], [0, "&ncedil;"], [0, "&Ncaron;"], [0, "&ncaron;"], [0, "&napos;"], [0, "&ENG;"], [0, "&eng;"], [0, "&Omacr;"], [0, "&omacr;"], [2, "&Odblac;"], [0, "&odblac;"], [0, "&OElig;"], [0, "&oelig;"], [0, "&Racute;"], [0, "&racute;"], [0, "&Rcedil;"], [0, "&rcedil;"], [0, "&Rcaron;"], [0, "&rcaron;"], [0, "&Sacute;"], [0, "&sacute;"], [0, "&Scirc;"], [0, "&scirc;"], [0, "&Scedil;"], [0, "&scedil;"], [0, "&Scaron;"], [0, "&scaron;"], [0, "&Tcedil;"], [0, "&tcedil;"], [0, "&Tcaron;"], [0, "&tcaron;"], [0, "&Tstrok;"], [0, "&tstrok;"], [0, "&Utilde;"], [0, "&utilde;"], [0, "&Umacr;"], [0, "&umacr;"], [0, "&Ubreve;"], [0, "&ubreve;"], [0, "&Uring;"], [0, "&uring;"], [0, "&Udblac;"], [0, "&udblac;"], [0, "&Uogon;"], [0, "&uogon;"], [0, "&Wcirc;"], [0, "&wcirc;"], [0, "&Ycirc;"], [0, "&ycirc;"], [0, "&Yuml;"], [0, "&Zacute;"], [0, "&zacute;"], [0, "&Zdot;"], [0, "&zdot;"], [0, "&Zcaron;"], [0, "&zcaron;"], [19, "&fnof;"], [34, "&imped;"], [63, "&gacute;"], [65, "&jmath;"], [142, "&circ;"], [0, "&caron;"], [16, "&breve;"], [0, "&DiacriticalDot;"], [0, "&ring;"], [0, "&ogon;"], [0, "&DiacriticalTilde;"], [0, "&dblac;"], [51, "&DownBreve;"], [127, "&Alpha;"], [0, "&Beta;"], [0, "&Gamma;"], [0, "&Delta;"], [0, "&Epsilon;"], [0, "&Zeta;"], [0, "&Eta;"], [0, "&Theta;"], [0, "&Iota;"], [0, "&Kappa;"], [0, "&Lambda;"], [0, "&Mu;"], [0, "&Nu;"], [0, "&Xi;"], [0, "&Omicron;"], [0, "&Pi;"], [0, "&Rho;"], [1, "&Sigma;"], [0, "&Tau;"], [0, "&Upsilon;"], [0, "&Phi;"], [0, "&Chi;"], [0, "&Psi;"], [0, "&ohm;"], [7, "&alpha;"], [0, "&beta;"], [0, "&gamma;"], [0, "&delta;"], [0, "&epsi;"], [0, "&zeta;"], [0, "&eta;"], [0, "&theta;"], [0, "&iota;"], [0, "&kappa;"], [0, "&lambda;"], [0, "&mu;"], [0, "&nu;"], [0, "&xi;"], [0, "&omicron;"], [0, "&pi;"], [0, "&rho;"], [0, "&sigmaf;"], [0, "&sigma;"], [0, "&tau;"], [0, "&upsi;"], [0, "&phi;"], [0, "&chi;"], [0, "&psi;"], [0, "&omega;"], [7, "&thetasym;"], [0, "&Upsi;"], [2, "&phiv;"], [0, "&piv;"], [5, "&Gammad;"], [0, "&digamma;"], [18, "&kappav;"], [0, "&rhov;"], [3, "&epsiv;"], [0, "&backepsilon;"], [10, "&IOcy;"], [0, "&DJcy;"], [0, "&GJcy;"], [0, "&Jukcy;"], [0, "&DScy;"], [0, "&Iukcy;"], [0, "&YIcy;"], [0, "&Jsercy;"], [0, "&LJcy;"], [0, "&NJcy;"], [0, "&TSHcy;"], [0, "&KJcy;"], [1, "&Ubrcy;"], [0, "&DZcy;"], [0, "&Acy;"], [0, "&Bcy;"], [0, "&Vcy;"], [0, "&Gcy;"], [0, "&Dcy;"], [0, "&IEcy;"], [0, "&ZHcy;"], [0, "&Zcy;"], [0, "&Icy;"], [0, "&Jcy;"], [0, "&Kcy;"], [0, "&Lcy;"], [0, "&Mcy;"], [0, "&Ncy;"], [0, "&Ocy;"], [0, "&Pcy;"], [0, "&Rcy;"], [0, "&Scy;"], [0, "&Tcy;"], [0, "&Ucy;"], [0, "&Fcy;"], [0, "&KHcy;"], [0, "&TScy;"], [0, "&CHcy;"], [0, "&SHcy;"], [0, "&SHCHcy;"], [0, "&HARDcy;"], [0, "&Ycy;"], [0, "&SOFTcy;"], [0, "&Ecy;"], [0, "&YUcy;"], [0, "&YAcy;"], [0, "&acy;"], [0, "&bcy;"], [0, "&vcy;"], [0, "&gcy;"], [0, "&dcy;"], [0, "&iecy;"], [0, "&zhcy;"], [0, "&zcy;"], [0, "&icy;"], [0, "&jcy;"], [0, "&kcy;"], [0, "&lcy;"], [0, "&mcy;"], [0, "&ncy;"], [0, "&ocy;"], [0, "&pcy;"], [0, "&rcy;"], [0, "&scy;"], [0, "&tcy;"], [0, "&ucy;"], [0, "&fcy;"], [0, "&khcy;"], [0, "&tscy;"], [0, "&chcy;"], [0, "&shcy;"], [0, "&shchcy;"], [0, "&hardcy;"], [0, "&ycy;"], [0, "&softcy;"], [0, "&ecy;"], [0, "&yucy;"], [0, "&yacy;"], [1, "&iocy;"], [0, "&djcy;"], [0, "&gjcy;"], [0, "&jukcy;"], [0, "&dscy;"], [0, "&iukcy;"], [0, "&yicy;"], [0, "&jsercy;"], [0, "&ljcy;"], [0, "&njcy;"], [0, "&tshcy;"], [0, "&kjcy;"], [1, "&ubrcy;"], [0, "&dzcy;"], [7074, "&ensp;"], [0, "&emsp;"], [0, "&emsp13;"], [0, "&emsp14;"], [1, "&numsp;"], [0, "&puncsp;"], [0, "&ThinSpace;"], [0, "&hairsp;"], [0, "&NegativeMediumSpace;"], [0, "&zwnj;"], [0, "&zwj;"], [0, "&lrm;"], [0, "&rlm;"], [0, "&dash;"], [2, "&ndash;"], [0, "&mdash;"], [0, "&horbar;"], [0, "&Verbar;"], [1, "&lsquo;"], [0, "&CloseCurlyQuote;"], [0, "&lsquor;"], [1, "&ldquo;"], [0, "&CloseCurlyDoubleQuote;"], [0, "&bdquo;"], [1, "&dagger;"], [0, "&Dagger;"], [0, "&bull;"], [2, "&nldr;"], [0, "&hellip;"], [9, "&permil;"], [0, "&pertenk;"], [0, "&prime;"], [0, "&Prime;"], [0, "&tprime;"], [0, "&backprime;"], [3, "&lsaquo;"], [0, "&rsaquo;"], [3, "&oline;"], [2, "&caret;"], [1, "&hybull;"], [0, "&frasl;"], [10, "&bsemi;"], [7, "&qprime;"], [7, { v: "&MediumSpace;", n: 8202, o: "&ThickSpace;" }], [0, "&NoBreak;"], [0, "&af;"], [0, "&InvisibleTimes;"], [0, "&ic;"], [72, "&euro;"], [46, "&tdot;"], [0, "&DotDot;"], [37, "&complexes;"], [2, "&incare;"], [4, "&gscr;"], [0, "&hamilt;"], [0, "&Hfr;"], [0, "&Hopf;"], [0, "&planckh;"], [0, "&hbar;"], [0, "&imagline;"], [0, "&Ifr;"], [0, "&lagran;"], [0, "&ell;"], [1, "&naturals;"], [0, "&numero;"], [0, "&copysr;"], [0, "&weierp;"], [0, "&Popf;"], [0, "&Qopf;"], [0, "&realine;"], [0, "&real;"], [0, "&reals;"], [0, "&rx;"], [3, "&trade;"], [1, "&integers;"], [2, "&mho;"], [0, "&zeetrf;"], [0, "&iiota;"], [2, "&bernou;"], [0, "&Cayleys;"], [1, "&escr;"], [0, "&Escr;"], [0, "&Fouriertrf;"], [1, "&Mellintrf;"], [0, "&order;"], [0, "&alefsym;"], [0, "&beth;"], [0, "&gimel;"], [0, "&daleth;"], [12, "&CapitalDifferentialD;"], [0, "&dd;"], [0, "&ee;"], [0, "&ii;"], [10, "&frac13;"], [0, "&frac23;"], [0, "&frac15;"], [0, "&frac25;"], [0, "&frac35;"], [0, "&frac45;"], [0, "&frac16;"], [0, "&frac56;"], [0, "&frac18;"], [0, "&frac38;"], [0, "&frac58;"], [0, "&frac78;"], [49, "&larr;"], [0, "&ShortUpArrow;"], [0, "&rarr;"], [0, "&darr;"], [0, "&harr;"], [0, "&updownarrow;"], [0, "&nwarr;"], [0, "&nearr;"], [0, "&LowerRightArrow;"], [0, "&LowerLeftArrow;"], [0, "&nlarr;"], [0, "&nrarr;"], [1, { v: "&rarrw;", n: 824, o: "&nrarrw;" }], [0, "&Larr;"], [0, "&Uarr;"], [0, "&Rarr;"], [0, "&Darr;"], [0, "&larrtl;"], [0, "&rarrtl;"], [0, "&LeftTeeArrow;"], [0, "&mapstoup;"], [0, "&map;"], [0, "&DownTeeArrow;"], [1, "&hookleftarrow;"], [0, "&hookrightarrow;"], [0, "&larrlp;"], [0, "&looparrowright;"], [0, "&harrw;"], [0, "&nharr;"], [1, "&lsh;"], [0, "&rsh;"], [0, "&ldsh;"], [0, "&rdsh;"], [1, "&crarr;"], [0, "&cularr;"], [0, "&curarr;"], [2, "&circlearrowleft;"], [0, "&circlearrowright;"], [0, "&leftharpoonup;"], [0, "&DownLeftVector;"], [0, "&RightUpVector;"], [0, "&LeftUpVector;"], [0, "&rharu;"], [0, "&DownRightVector;"], [0, "&dharr;"], [0, "&dharl;"], [0, "&RightArrowLeftArrow;"], [0, "&udarr;"], [0, "&LeftArrowRightArrow;"], [0, "&leftleftarrows;"], [0, "&upuparrows;"], [0, "&rightrightarrows;"], [0, "&ddarr;"], [0, "&leftrightharpoons;"], [0, "&Equilibrium;"], [0, "&nlArr;"], [0, "&nhArr;"], [0, "&nrArr;"], [0, "&DoubleLeftArrow;"], [0, "&DoubleUpArrow;"], [0, "&DoubleRightArrow;"], [0, "&dArr;"], [0, "&DoubleLeftRightArrow;"], [0, "&DoubleUpDownArrow;"], [0, "&nwArr;"], [0, "&neArr;"], [0, "&seArr;"], [0, "&swArr;"], [0, "&lAarr;"], [0, "&rAarr;"], [1, "&zigrarr;"], [6, "&larrb;"], [0, "&rarrb;"], [15, "&DownArrowUpArrow;"], [7, "&loarr;"], [0, "&roarr;"], [0, "&hoarr;"], [0, "&forall;"], [0, "&comp;"], [0, { v: "&part;", n: 824, o: "&npart;" }], [0, "&exist;"], [0, "&nexist;"], [0, "&empty;"], [1, "&Del;"], [0, "&Element;"], [0, "&NotElement;"], [1, "&ni;"], [0, "&notni;"], [2, "&prod;"], [0, "&coprod;"], [0, "&sum;"], [0, "&minus;"], [0, "&MinusPlus;"], [0, "&dotplus;"], [1, "&Backslash;"], [0, "&lowast;"], [0, "&compfn;"], [1, "&radic;"], [2, "&prop;"], [0, "&infin;"], [0, "&angrt;"], [0, { v: "&ang;", n: 8402, o: "&nang;" }], [0, "&angmsd;"], [0, "&angsph;"], [0, "&mid;"], [0, "&nmid;"], [0, "&DoubleVerticalBar;"], [0, "&NotDoubleVerticalBar;"], [0, "&and;"], [0, "&or;"], [0, { v: "&cap;", n: 65024, o: "&caps;" }], [0, { v: "&cup;", n: 65024, o: "&cups;" }], [0, "&int;"], [0, "&Int;"], [0, "&iiint;"], [0, "&conint;"], [0, "&Conint;"], [0, "&Cconint;"], [0, "&cwint;"], [0, "&ClockwiseContourIntegral;"], [0, "&awconint;"], [0, "&there4;"], [0, "&becaus;"], [0, "&ratio;"], [0, "&Colon;"], [0, "&dotminus;"], [1, "&mDDot;"], [0, "&homtht;"], [0, { v: "&sim;", n: 8402, o: "&nvsim;" }], [0, { v: "&backsim;", n: 817, o: "&race;" }], [0, { v: "&ac;", n: 819, o: "&acE;" }], [0, "&acd;"], [0, "&VerticalTilde;"], [0, "&NotTilde;"], [0, { v: "&eqsim;", n: 824, o: "&nesim;" }], [0, "&sime;"], [0, "&NotTildeEqual;"], [0, "&cong;"], [0, "&simne;"], [0, "&ncong;"], [0, "&ap;"], [0, "&nap;"], [0, "&ape;"], [0, { v: "&apid;", n: 824, o: "&napid;" }], [0, "&backcong;"], [0, { v: "&asympeq;", n: 8402, o: "&nvap;" }], [0, { v: "&bump;", n: 824, o: "&nbump;" }], [0, { v: "&bumpe;", n: 824, o: "&nbumpe;" }], [0, { v: "&doteq;", n: 824, o: "&nedot;" }], [0, "&doteqdot;"], [0, "&efDot;"], [0, "&erDot;"], [0, "&Assign;"], [0, "&ecolon;"], [0, "&ecir;"], [0, "&circeq;"], [1, "&wedgeq;"], [0, "&veeeq;"], [1, "&triangleq;"], [2, "&equest;"], [0, "&ne;"], [0, { v: "&Congruent;", n: 8421, o: "&bnequiv;" }], [0, "&nequiv;"], [1, { v: "&le;", n: 8402, o: "&nvle;" }], [0, { v: "&ge;", n: 8402, o: "&nvge;" }], [0, { v: "&lE;", n: 824, o: "&nlE;" }], [0, { v: "&gE;", n: 824, o: "&ngE;" }], [0, { v: "&lnE;", n: 65024, o: "&lvertneqq;" }], [0, { v: "&gnE;", n: 65024, o: "&gvertneqq;" }], [0, { v: "&ll;", n: new Map(/* @__PURE__ */ restoreDiff([[824, "&nLtv;"], [7577, "&nLt;"]])) }], [0, { v: "&gg;", n: new Map(/* @__PURE__ */ restoreDiff([[824, "&nGtv;"], [7577, "&nGt;"]])) }], [0, "&between;"], [0, "&NotCupCap;"], [0, "&nless;"], [0, "&ngt;"], [0, "&nle;"], [0, "&nge;"], [0, "&lesssim;"], [0, "&GreaterTilde;"], [0, "&nlsim;"], [0, "&ngsim;"], [0, "&LessGreater;"], [0, "&gl;"], [0, "&NotLessGreater;"], [0, "&NotGreaterLess;"], [0, "&pr;"], [0, "&sc;"], [0, "&prcue;"], [0, "&sccue;"], [0, "&PrecedesTilde;"], [0, { v: "&scsim;", n: 824, o: "&NotSucceedsTilde;" }], [0, "&NotPrecedes;"], [0, "&NotSucceeds;"], [0, { v: "&sub;", n: 8402, o: "&NotSubset;" }], [0, { v: "&sup;", n: 8402, o: "&NotSuperset;" }], [0, "&nsub;"], [0, "&nsup;"], [0, "&sube;"], [0, "&supe;"], [0, "&NotSubsetEqual;"], [0, "&NotSupersetEqual;"], [0, { v: "&subne;", n: 65024, o: "&varsubsetneq;" }], [0, { v: "&supne;", n: 65024, o: "&varsupsetneq;" }], [1, "&cupdot;"], [0, "&UnionPlus;"], [0, { v: "&sqsub;", n: 824, o: "&NotSquareSubset;" }], [0, { v: "&sqsup;", n: 824, o: "&NotSquareSuperset;" }], [0, "&sqsube;"], [0, "&sqsupe;"], [0, { v: "&sqcap;", n: 65024, o: "&sqcaps;" }], [0, { v: "&sqcup;", n: 65024, o: "&sqcups;" }], [0, "&CirclePlus;"], [0, "&CircleMinus;"], [0, "&CircleTimes;"], [0, "&osol;"], [0, "&CircleDot;"], [0, "&circledcirc;"], [0, "&circledast;"], [1, "&circleddash;"], [0, "&boxplus;"], [0, "&boxminus;"], [0, "&boxtimes;"], [0, "&dotsquare;"], [0, "&RightTee;"], [0, "&dashv;"], [0, "&DownTee;"], [0, "&bot;"], [1, "&models;"], [0, "&DoubleRightTee;"], [0, "&Vdash;"], [0, "&Vvdash;"], [0, "&VDash;"], [0, "&nvdash;"], [0, "&nvDash;"], [0, "&nVdash;"], [0, "&nVDash;"], [0, "&prurel;"], [1, "&LeftTriangle;"], [0, "&RightTriangle;"], [0, { v: "&LeftTriangleEqual;", n: 8402, o: "&nvltrie;" }], [0, { v: "&RightTriangleEqual;", n: 8402, o: "&nvrtrie;" }], [0, "&origof;"], [0, "&imof;"], [0, "&multimap;"], [0, "&hercon;"], [0, "&intcal;"], [0, "&veebar;"], [1, "&barvee;"], [0, "&angrtvb;"], [0, "&lrtri;"], [0, "&bigwedge;"], [0, "&bigvee;"], [0, "&bigcap;"], [0, "&bigcup;"], [0, "&diam;"], [0, "&sdot;"], [0, "&sstarf;"], [0, "&divideontimes;"], [0, "&bowtie;"], [0, "&ltimes;"], [0, "&rtimes;"], [0, "&leftthreetimes;"], [0, "&rightthreetimes;"], [0, "&backsimeq;"], [0, "&curlyvee;"], [0, "&curlywedge;"], [0, "&Sub;"], [0, "&Sup;"], [0, "&Cap;"], [0, "&Cup;"], [0, "&fork;"], [0, "&epar;"], [0, "&lessdot;"], [0, "&gtdot;"], [0, { v: "&Ll;", n: 824, o: "&nLl;" }], [0, { v: "&Gg;", n: 824, o: "&nGg;" }], [0, { v: "&leg;", n: 65024, o: "&lesg;" }], [0, { v: "&gel;", n: 65024, o: "&gesl;" }], [2, "&cuepr;"], [0, "&cuesc;"], [0, "&NotPrecedesSlantEqual;"], [0, "&NotSucceedsSlantEqual;"], [0, "&NotSquareSubsetEqual;"], [0, "&NotSquareSupersetEqual;"], [2, "&lnsim;"], [0, "&gnsim;"], [0, "&precnsim;"], [0, "&scnsim;"], [0, "&nltri;"], [0, "&NotRightTriangle;"], [0, "&nltrie;"], [0, "&NotRightTriangleEqual;"], [0, "&vellip;"], [0, "&ctdot;"], [0, "&utdot;"], [0, "&dtdot;"], [0, "&disin;"], [0, "&isinsv;"], [0, "&isins;"], [0, { v: "&isindot;", n: 824, o: "&notindot;" }], [0, "&notinvc;"], [0, "&notinvb;"], [1, { v: "&isinE;", n: 824, o: "&notinE;" }], [0, "&nisd;"], [0, "&xnis;"], [0, "&nis;"], [0, "&notnivc;"], [0, "&notnivb;"], [6, "&barwed;"], [0, "&Barwed;"], [1, "&lceil;"], [0, "&rceil;"], [0, "&LeftFloor;"], [0, "&rfloor;"], [0, "&drcrop;"], [0, "&dlcrop;"], [0, "&urcrop;"], [0, "&ulcrop;"], [0, "&bnot;"], [1, "&profline;"], [0, "&profsurf;"], [1, "&telrec;"], [0, "&target;"], [5, "&ulcorn;"], [0, "&urcorn;"], [0, "&dlcorn;"], [0, "&drcorn;"], [2, "&frown;"], [0, "&smile;"], [9, "&cylcty;"], [0, "&profalar;"], [7, "&topbot;"], [6, "&ovbar;"], [1, "&solbar;"], [60, "&angzarr;"], [51, "&lmoustache;"], [0, "&rmoustache;"], [2, "&OverBracket;"], [0, "&bbrk;"], [0, "&bbrktbrk;"], [37, "&OverParenthesis;"], [0, "&UnderParenthesis;"], [0, "&OverBrace;"], [0, "&UnderBrace;"], [2, "&trpezium;"], [4, "&elinters;"], [59, "&blank;"], [164, "&circledS;"], [55, "&boxh;"], [1, "&boxv;"], [9, "&boxdr;"], [3, "&boxdl;"], [3, "&boxur;"], [3, "&boxul;"], [3, "&boxvr;"], [7, "&boxvl;"], [7, "&boxhd;"], [7, "&boxhu;"], [7, "&boxvh;"], [19, "&boxH;"], [0, "&boxV;"], [0, "&boxdR;"], [0, "&boxDr;"], [0, "&boxDR;"], [0, "&boxdL;"], [0, "&boxDl;"], [0, "&boxDL;"], [0, "&boxuR;"], [0, "&boxUr;"], [0, "&boxUR;"], [0, "&boxuL;"], [0, "&boxUl;"], [0, "&boxUL;"], [0, "&boxvR;"], [0, "&boxVr;"], [0, "&boxVR;"], [0, "&boxvL;"], [0, "&boxVl;"], [0, "&boxVL;"], [0, "&boxHd;"], [0, "&boxhD;"], [0, "&boxHD;"], [0, "&boxHu;"], [0, "&boxhU;"], [0, "&boxHU;"], [0, "&boxvH;"], [0, "&boxVh;"], [0, "&boxVH;"], [19, "&uhblk;"], [3, "&lhblk;"], [3, "&block;"], [8, "&blk14;"], [0, "&blk12;"], [0, "&blk34;"], [13, "&square;"], [8, "&blacksquare;"], [0, "&EmptyVerySmallSquare;"], [1, "&rect;"], [0, "&marker;"], [2, "&fltns;"], [1, "&bigtriangleup;"], [0, "&blacktriangle;"], [0, "&triangle;"], [2, "&blacktriangleright;"], [0, "&rtri;"], [3, "&bigtriangledown;"], [0, "&blacktriangledown;"], [0, "&dtri;"], [2, "&blacktriangleleft;"], [0, "&ltri;"], [6, "&loz;"], [0, "&cir;"], [32, "&tridot;"], [2, "&bigcirc;"], [8, "&ultri;"], [0, "&urtri;"], [0, "&lltri;"], [0, "&EmptySmallSquare;"], [0, "&FilledSmallSquare;"], [8, "&bigstar;"], [0, "&star;"], [7, "&phone;"], [49, "&female;"], [1, "&male;"], [29, "&spades;"], [2, "&clubs;"], [1, "&hearts;"], [0, "&diamondsuit;"], [3, "&sung;"], [2, "&flat;"], [0, "&natural;"], [0, "&sharp;"], [163, "&check;"], [3, "&cross;"], [8, "&malt;"], [21, "&sext;"], [33, "&VerticalSeparator;"], [25, "&lbbrk;"], [0, "&rbbrk;"], [84, "&bsolhsub;"], [0, "&suphsol;"], [28, "&LeftDoubleBracket;"], [0, "&RightDoubleBracket;"], [0, "&lang;"], [0, "&rang;"], [0, "&Lang;"], [0, "&Rang;"], [0, "&loang;"], [0, "&roang;"], [7, "&longleftarrow;"], [0, "&longrightarrow;"], [0, "&longleftrightarrow;"], [0, "&DoubleLongLeftArrow;"], [0, "&DoubleLongRightArrow;"], [0, "&DoubleLongLeftRightArrow;"], [1, "&longmapsto;"], [2, "&dzigrarr;"], [258, "&nvlArr;"], [0, "&nvrArr;"], [0, "&nvHarr;"], [0, "&Map;"], [6, "&lbarr;"], [0, "&bkarow;"], [0, "&lBarr;"], [0, "&dbkarow;"], [0, "&drbkarow;"], [0, "&DDotrahd;"], [0, "&UpArrowBar;"], [0, "&DownArrowBar;"], [2, "&Rarrtl;"], [2, "&latail;"], [0, "&ratail;"], [0, "&lAtail;"], [0, "&rAtail;"], [0, "&larrfs;"], [0, "&rarrfs;"], [0, "&larrbfs;"], [0, "&rarrbfs;"], [2, "&nwarhk;"], [0, "&nearhk;"], [0, "&hksearow;"], [0, "&hkswarow;"], [0, "&nwnear;"], [0, "&nesear;"], [0, "&seswar;"], [0, "&swnwar;"], [8, { v: "&rarrc;", n: 824, o: "&nrarrc;" }], [1, "&cudarrr;"], [0, "&ldca;"], [0, "&rdca;"], [0, "&cudarrl;"], [0, "&larrpl;"], [2, "&curarrm;"], [0, "&cularrp;"], [7, "&rarrpl;"], [2, "&harrcir;"], [0, "&Uarrocir;"], [0, "&lurdshar;"], [0, "&ldrushar;"], [2, "&LeftRightVector;"], [0, "&RightUpDownVector;"], [0, "&DownLeftRightVector;"], [0, "&LeftUpDownVector;"], [0, "&LeftVectorBar;"], [0, "&RightVectorBar;"], [0, "&RightUpVectorBar;"], [0, "&RightDownVectorBar;"], [0, "&DownLeftVectorBar;"], [0, "&DownRightVectorBar;"], [0, "&LeftUpVectorBar;"], [0, "&LeftDownVectorBar;"], [0, "&LeftTeeVector;"], [0, "&RightTeeVector;"], [0, "&RightUpTeeVector;"], [0, "&RightDownTeeVector;"], [0, "&DownLeftTeeVector;"], [0, "&DownRightTeeVector;"], [0, "&LeftUpTeeVector;"], [0, "&LeftDownTeeVector;"], [0, "&lHar;"], [0, "&uHar;"], [0, "&rHar;"], [0, "&dHar;"], [0, "&luruhar;"], [0, "&ldrdhar;"], [0, "&ruluhar;"], [0, "&rdldhar;"], [0, "&lharul;"], [0, "&llhard;"], [0, "&rharul;"], [0, "&lrhard;"], [0, "&udhar;"], [0, "&duhar;"], [0, "&RoundImplies;"], [0, "&erarr;"], [0, "&simrarr;"], [0, "&larrsim;"], [0, "&rarrsim;"], [0, "&rarrap;"], [0, "&ltlarr;"], [1, "&gtrarr;"], [0, "&subrarr;"], [1, "&suplarr;"], [0, "&lfisht;"], [0, "&rfisht;"], [0, "&ufisht;"], [0, "&dfisht;"], [5, "&lopar;"], [0, "&ropar;"], [4, "&lbrke;"], [0, "&rbrke;"], [0, "&lbrkslu;"], [0, "&rbrksld;"], [0, "&lbrksld;"], [0, "&rbrkslu;"], [0, "&langd;"], [0, "&rangd;"], [0, "&lparlt;"], [0, "&rpargt;"], [0, "&gtlPar;"], [0, "&ltrPar;"], [3, "&vzigzag;"], [1, "&vangrt;"], [0, "&angrtvbd;"], [6, "&ange;"], [0, "&range;"], [0, "&dwangle;"], [0, "&uwangle;"], [0, "&angmsdaa;"], [0, "&angmsdab;"], [0, "&angmsdac;"], [0, "&angmsdad;"], [0, "&angmsdae;"], [0, "&angmsdaf;"], [0, "&angmsdag;"], [0, "&angmsdah;"], [0, "&bemptyv;"], [0, "&demptyv;"], [0, "&cemptyv;"], [0, "&raemptyv;"], [0, "&laemptyv;"], [0, "&ohbar;"], [0, "&omid;"], [0, "&opar;"], [1, "&operp;"], [1, "&olcross;"], [0, "&odsold;"], [1, "&olcir;"], [0, "&ofcir;"], [0, "&olt;"], [0, "&ogt;"], [0, "&cirscir;"], [0, "&cirE;"], [0, "&solb;"], [0, "&bsolb;"], [3, "&boxbox;"], [3, "&trisb;"], [0, "&rtriltri;"], [0, { v: "&LeftTriangleBar;", n: 824, o: "&NotLeftTriangleBar;" }], [0, { v: "&RightTriangleBar;", n: 824, o: "&NotRightTriangleBar;" }], [11, "&iinfin;"], [0, "&infintie;"], [0, "&nvinfin;"], [4, "&eparsl;"], [0, "&smeparsl;"], [0, "&eqvparsl;"], [5, "&blacklozenge;"], [8, "&RuleDelayed;"], [1, "&dsol;"], [9, "&bigodot;"], [0, "&bigoplus;"], [0, "&bigotimes;"], [1, "&biguplus;"], [1, "&bigsqcup;"], [5, "&iiiint;"], [0, "&fpartint;"], [2, "&cirfnint;"], [0, "&awint;"], [0, "&rppolint;"], [0, "&scpolint;"], [0, "&npolint;"], [0, "&pointint;"], [0, "&quatint;"], [0, "&intlarhk;"], [10, "&pluscir;"], [0, "&plusacir;"], [0, "&simplus;"], [0, "&plusdu;"], [0, "&plussim;"], [0, "&plustwo;"], [1, "&mcomma;"], [0, "&minusdu;"], [2, "&loplus;"], [0, "&roplus;"], [0, "&Cross;"], [0, "&timesd;"], [0, "&timesbar;"], [1, "&smashp;"], [0, "&lotimes;"], [0, "&rotimes;"], [0, "&otimesas;"], [0, "&Otimes;"], [0, "&odiv;"], [0, "&triplus;"], [0, "&triminus;"], [0, "&tritime;"], [0, "&intprod;"], [2, "&amalg;"], [0, "&capdot;"], [1, "&ncup;"], [0, "&ncap;"], [0, "&capand;"], [0, "&cupor;"], [0, "&cupcap;"], [0, "&capcup;"], [0, "&cupbrcap;"], [0, "&capbrcup;"], [0, "&cupcup;"], [0, "&capcap;"], [0, "&ccups;"], [0, "&ccaps;"], [2, "&ccupssm;"], [2, "&And;"], [0, "&Or;"], [0, "&andand;"], [0, "&oror;"], [0, "&orslope;"], [0, "&andslope;"], [1, "&andv;"], [0, "&orv;"], [0, "&andd;"], [0, "&ord;"], [1, "&wedbar;"], [6, "&sdote;"], [3, "&simdot;"], [2, { v: "&congdot;", n: 824, o: "&ncongdot;" }], [0, "&easter;"], [0, "&apacir;"], [0, { v: "&apE;", n: 824, o: "&napE;" }], [0, "&eplus;"], [0, "&pluse;"], [0, "&Esim;"], [0, "&Colone;"], [0, "&Equal;"], [1, "&ddotseq;"], [0, "&equivDD;"], [0, "&ltcir;"], [0, "&gtcir;"], [0, "&ltquest;"], [0, "&gtquest;"], [0, { v: "&leqslant;", n: 824, o: "&nleqslant;" }], [0, { v: "&geqslant;", n: 824, o: "&ngeqslant;" }], [0, "&lesdot;"], [0, "&gesdot;"], [0, "&lesdoto;"], [0, "&gesdoto;"], [0, "&lesdotor;"], [0, "&gesdotol;"], [0, "&lap;"], [0, "&gap;"], [0, "&lne;"], [0, "&gne;"], [0, "&lnap;"], [0, "&gnap;"], [0, "&lEg;"], [0, "&gEl;"], [0, "&lsime;"], [0, "&gsime;"], [0, "&lsimg;"], [0, "&gsiml;"], [0, "&lgE;"], [0, "&glE;"], [0, "&lesges;"], [0, "&gesles;"], [0, "&els;"], [0, "&egs;"], [0, "&elsdot;"], [0, "&egsdot;"], [0, "&el;"], [0, "&eg;"], [2, "&siml;"], [0, "&simg;"], [0, "&simlE;"], [0, "&simgE;"], [0, { v: "&LessLess;", n: 824, o: "&NotNestedLessLess;" }], [0, { v: "&GreaterGreater;", n: 824, o: "&NotNestedGreaterGreater;" }], [1, "&glj;"], [0, "&gla;"], [0, "&ltcc;"], [0, "&gtcc;"], [0, "&lescc;"], [0, "&gescc;"], [0, "&smt;"], [0, "&lat;"], [0, { v: "&smte;", n: 65024, o: "&smtes;" }], [0, { v: "&late;", n: 65024, o: "&lates;" }], [0, "&bumpE;"], [0, { v: "&PrecedesEqual;", n: 824, o: "&NotPrecedesEqual;" }], [0, { v: "&sce;", n: 824, o: "&NotSucceedsEqual;" }], [2, "&prE;"], [0, "&scE;"], [0, "&precneqq;"], [0, "&scnE;"], [0, "&prap;"], [0, "&scap;"], [0, "&precnapprox;"], [0, "&scnap;"], [0, "&Pr;"], [0, "&Sc;"], [0, "&subdot;"], [0, "&supdot;"], [0, "&subplus;"], [0, "&supplus;"], [0, "&submult;"], [0, "&supmult;"], [0, "&subedot;"], [0, "&supedot;"], [0, { v: "&subE;", n: 824, o: "&nsubE;" }], [0, { v: "&supE;", n: 824, o: "&nsupE;" }], [0, "&subsim;"], [0, "&supsim;"], [2, { v: "&subnE;", n: 65024, o: "&varsubsetneqq;" }], [0, { v: "&supnE;", n: 65024, o: "&varsupsetneqq;" }], [2, "&csub;"], [0, "&csup;"], [0, "&csube;"], [0, "&csupe;"], [0, "&subsup;"], [0, "&supsub;"], [0, "&subsub;"], [0, "&supsup;"], [0, "&suphsub;"], [0, "&supdsub;"], [0, "&forkv;"], [0, "&topfork;"], [0, "&mlcp;"], [8, "&Dashv;"], [1, "&Vdashl;"], [0, "&Barv;"], [0, "&vBar;"], [0, "&vBarv;"], [1, "&Vbar;"], [0, "&Not;"], [0, "&bNot;"], [0, "&rnmid;"], [0, "&cirmid;"], [0, "&midcir;"], [0, "&topcir;"], [0, "&nhpar;"], [0, "&parsim;"], [9, { v: "&parsl;", n: 8421, o: "&nparsl;" }], [44343, { n: new Map(/* @__PURE__ */ restoreDiff([[56476, "&Ascr;"], [1, "&Cscr;"], [0, "&Dscr;"], [2, "&Gscr;"], [2, "&Jscr;"], [0, "&Kscr;"], [2, "&Nscr;"], [0, "&Oscr;"], [0, "&Pscr;"], [0, "&Qscr;"], [1, "&Sscr;"], [0, "&Tscr;"], [0, "&Uscr;"], [0, "&Vscr;"], [0, "&Wscr;"], [0, "&Xscr;"], [0, "&Yscr;"], [0, "&Zscr;"], [0, "&ascr;"], [0, "&bscr;"], [0, "&cscr;"], [0, "&dscr;"], [1, "&fscr;"], [1, "&hscr;"], [0, "&iscr;"], [0, "&jscr;"], [0, "&kscr;"], [0, "&lscr;"], [0, "&mscr;"], [0, "&nscr;"], [1, "&pscr;"], [0, "&qscr;"], [0, "&rscr;"], [0, "&sscr;"], [0, "&tscr;"], [0, "&uscr;"], [0, "&vscr;"], [0, "&wscr;"], [0, "&xscr;"], [0, "&yscr;"], [0, "&zscr;"], [52, "&Afr;"], [0, "&Bfr;"], [1, "&Dfr;"], [0, "&Efr;"], [0, "&Ffr;"], [0, "&Gfr;"], [2, "&Jfr;"], [0, "&Kfr;"], [0, "&Lfr;"], [0, "&Mfr;"], [0, "&Nfr;"], [0, "&Ofr;"], [0, "&Pfr;"], [0, "&Qfr;"], [1, "&Sfr;"], [0, "&Tfr;"], [0, "&Ufr;"], [0, "&Vfr;"], [0, "&Wfr;"], [0, "&Xfr;"], [0, "&Yfr;"], [1, "&afr;"], [0, "&bfr;"], [0, "&cfr;"], [0, "&dfr;"], [0, "&efr;"], [0, "&ffr;"], [0, "&gfr;"], [0, "&hfr;"], [0, "&ifr;"], [0, "&jfr;"], [0, "&kfr;"], [0, "&lfr;"], [0, "&mfr;"], [0, "&nfr;"], [0, "&ofr;"], [0, "&pfr;"], [0, "&qfr;"], [0, "&rfr;"], [0, "&sfr;"], [0, "&tfr;"], [0, "&ufr;"], [0, "&vfr;"], [0, "&wfr;"], [0, "&xfr;"], [0, "&yfr;"], [0, "&zfr;"], [0, "&Aopf;"], [0, "&Bopf;"], [1, "&Dopf;"], [0, "&Eopf;"], [0, "&Fopf;"], [0, "&Gopf;"], [1, "&Iopf;"], [0, "&Jopf;"], [0, "&Kopf;"], [0, "&Lopf;"], [0, "&Mopf;"], [1, "&Oopf;"], [3, "&Sopf;"], [0, "&Topf;"], [0, "&Uopf;"], [0, "&Vopf;"], [0, "&Wopf;"], [0, "&Xopf;"], [0, "&Yopf;"], [1, "&aopf;"], [0, "&bopf;"], [0, "&copf;"], [0, "&dopf;"], [0, "&eopf;"], [0, "&fopf;"], [0, "&gopf;"], [0, "&hopf;"], [0, "&iopf;"], [0, "&jopf;"], [0, "&kopf;"], [0, "&lopf;"], [0, "&mopf;"], [0, "&nopf;"], [0, "&oopf;"], [0, "&popf;"], [0, "&qopf;"], [0, "&ropf;"], [0, "&sopf;"], [0, "&topf;"], [0, "&uopf;"], [0, "&vopf;"], [0, "&wopf;"], [0, "&xopf;"], [0, "&yopf;"], [0, "&zopf;"]])) }], [8906, "&fflig;"], [0, "&filig;"], [0, "&fllig;"], [0, "&ffilig;"], [0, "&ffllig;"]]));
  }
});

// ../../node_modules/entities/lib/escape.js
var require_escape = __commonJS({
  "../../node_modules/entities/lib/escape.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.escapeText = exports2.escapeAttribute = exports2.escapeUTF8 = exports2.escape = exports2.encodeXML = exports2.getCodePoint = exports2.xmlReplacer = void 0;
    exports2.xmlReplacer = /["&'<>$\x80-\uFFFF]/g;
    var xmlCodeMap2 = /* @__PURE__ */ new Map([
      [34, "&quot;"],
      [38, "&amp;"],
      [39, "&apos;"],
      [60, "&lt;"],
      [62, "&gt;"]
    ]);
    exports2.getCodePoint = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
    String.prototype.codePointAt != null ? function(str2, index4) {
      return str2.codePointAt(index4);
    } : (
      // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
      function(c, index4) {
        return (c.charCodeAt(index4) & 64512) === 55296 ? (c.charCodeAt(index4) - 55296) * 1024 + c.charCodeAt(index4 + 1) - 56320 + 65536 : c.charCodeAt(index4);
      }
    );
    function encodeXML(str2) {
      var ret = "";
      var lastIdx = 0;
      var match3;
      while ((match3 = exports2.xmlReplacer.exec(str2)) !== null) {
        var i2 = match3.index;
        var char = str2.charCodeAt(i2);
        var next = xmlCodeMap2.get(char);
        if (next !== void 0) {
          ret += str2.substring(lastIdx, i2) + next;
          lastIdx = i2 + 1;
        } else {
          ret += "".concat(str2.substring(lastIdx, i2), "&#x").concat((0, exports2.getCodePoint)(str2, i2).toString(16), ";");
          lastIdx = exports2.xmlReplacer.lastIndex += Number((char & 64512) === 55296);
        }
      }
      return ret + str2.substr(lastIdx);
    }
    exports2.encodeXML = encodeXML;
    exports2.escape = encodeXML;
    function getEscaper2(regex2, map13) {
      return function escape5(data) {
        var match3;
        var lastIdx = 0;
        var result = "";
        while (match3 = regex2.exec(data)) {
          if (lastIdx !== match3.index) {
            result += data.substring(lastIdx, match3.index);
          }
          result += map13.get(match3[0].charCodeAt(0));
          lastIdx = match3.index + 1;
        }
        return result + data.substring(lastIdx);
      };
    }
    exports2.escapeUTF8 = getEscaper2(/[&<>'"]/g, xmlCodeMap2);
    exports2.escapeAttribute = getEscaper2(/["&\u00A0]/g, /* @__PURE__ */ new Map([
      [34, "&quot;"],
      [38, "&amp;"],
      [160, "&nbsp;"]
    ]));
    exports2.escapeText = getEscaper2(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([
      [38, "&amp;"],
      [60, "&lt;"],
      [62, "&gt;"],
      [160, "&nbsp;"]
    ]));
  }
});

// ../../node_modules/entities/lib/encode.js
var require_encode2 = __commonJS({
  "../../node_modules/entities/lib/encode.js"(exports2) {
    "use strict";
    var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.encodeNonAsciiHTML = exports2.encodeHTML = void 0;
    var encode_html_js_1 = __importDefault2(require_encode_html());
    var escape_js_1 = require_escape();
    var htmlReplacer = /[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g;
    function encodeHTML(data) {
      return encodeHTMLTrieRe(htmlReplacer, data);
    }
    exports2.encodeHTML = encodeHTML;
    function encodeNonAsciiHTML(data) {
      return encodeHTMLTrieRe(escape_js_1.xmlReplacer, data);
    }
    exports2.encodeNonAsciiHTML = encodeNonAsciiHTML;
    function encodeHTMLTrieRe(regExp, str2) {
      var ret = "";
      var lastIdx = 0;
      var match3;
      while ((match3 = regExp.exec(str2)) !== null) {
        var i2 = match3.index;
        ret += str2.substring(lastIdx, i2);
        var char = str2.charCodeAt(i2);
        var next = encode_html_js_1.default.get(char);
        if (typeof next === "object") {
          if (i2 + 1 < str2.length) {
            var nextChar = str2.charCodeAt(i2 + 1);
            var value = typeof next.n === "number" ? next.n === nextChar ? next.o : void 0 : next.n.get(nextChar);
            if (value !== void 0) {
              ret += value;
              lastIdx = regExp.lastIndex += 1;
              continue;
            }
          }
          next = next.v;
        }
        if (next !== void 0) {
          ret += next;
          lastIdx = i2 + 1;
        } else {
          var cp = (0, escape_js_1.getCodePoint)(str2, i2);
          ret += "&#x".concat(cp.toString(16), ";");
          lastIdx = regExp.lastIndex += Number(cp !== char);
        }
      }
      return ret + str2.substr(lastIdx);
    }
  }
});

// ../../node_modules/entities/lib/index.js
var require_lib9 = __commonJS({
  "../../node_modules/entities/lib/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.decodeXMLStrict = exports2.decodeHTML5Strict = exports2.decodeHTML4Strict = exports2.decodeHTML5 = exports2.decodeHTML4 = exports2.decodeHTMLAttribute = exports2.decodeHTMLStrict = exports2.decodeHTML = exports2.decodeXML = exports2.DecodingMode = exports2.EntityDecoder = exports2.encodeHTML5 = exports2.encodeHTML4 = exports2.encodeNonAsciiHTML = exports2.encodeHTML = exports2.escapeText = exports2.escapeAttribute = exports2.escapeUTF8 = exports2.escape = exports2.encodeXML = exports2.encode = exports2.decodeStrict = exports2.decode = exports2.EncodingMode = exports2.EntityLevel = void 0;
    var decode_js_1 = require_decode2();
    var encode_js_1 = require_encode2();
    var escape_js_1 = require_escape();
    var EntityLevel;
    (function(EntityLevel2) {
      EntityLevel2[EntityLevel2["XML"] = 0] = "XML";
      EntityLevel2[EntityLevel2["HTML"] = 1] = "HTML";
    })(EntityLevel = exports2.EntityLevel || (exports2.EntityLevel = {}));
    var EncodingMode;
    (function(EncodingMode2) {
      EncodingMode2[EncodingMode2["UTF8"] = 0] = "UTF8";
      EncodingMode2[EncodingMode2["ASCII"] = 1] = "ASCII";
      EncodingMode2[EncodingMode2["Extensive"] = 2] = "Extensive";
      EncodingMode2[EncodingMode2["Attribute"] = 3] = "Attribute";
      EncodingMode2[EncodingMode2["Text"] = 4] = "Text";
    })(EncodingMode = exports2.EncodingMode || (exports2.EncodingMode = {}));
    function decode2(data, options) {
      if (options === void 0) {
        options = EntityLevel.XML;
      }
      var level = typeof options === "number" ? options : options.level;
      if (level === EntityLevel.HTML) {
        var mode = typeof options === "object" ? options.mode : void 0;
        return (0, decode_js_1.decodeHTML)(data, mode);
      }
      return (0, decode_js_1.decodeXML)(data);
    }
    exports2.decode = decode2;
    function decodeStrict(data, options) {
      var _a6;
      if (options === void 0) {
        options = EntityLevel.XML;
      }
      var opts = typeof options === "number" ? { level: options } : options;
      (_a6 = opts.mode) !== null && _a6 !== void 0 ? _a6 : opts.mode = decode_js_1.DecodingMode.Strict;
      return decode2(data, opts);
    }
    exports2.decodeStrict = decodeStrict;
    function encode(data, options) {
      if (options === void 0) {
        options = EntityLevel.XML;
      }
      var opts = typeof options === "number" ? { level: options } : options;
      if (opts.mode === EncodingMode.UTF8)
        return (0, escape_js_1.escapeUTF8)(data);
      if (opts.mode === EncodingMode.Attribute)
        return (0, escape_js_1.escapeAttribute)(data);
      if (opts.mode === EncodingMode.Text)
        return (0, escape_js_1.escapeText)(data);
      if (opts.level === EntityLevel.HTML) {
        if (opts.mode === EncodingMode.ASCII) {
          return (0, encode_js_1.encodeNonAsciiHTML)(data);
        }
        return (0, encode_js_1.encodeHTML)(data);
      }
      return (0, escape_js_1.encodeXML)(data);
    }
    exports2.encode = encode;
    var escape_js_2 = require_escape();
    Object.defineProperty(exports2, "encodeXML", { enumerable: true, get: function() {
      return escape_js_2.encodeXML;
    } });
    Object.defineProperty(exports2, "escape", { enumerable: true, get: function() {
      return escape_js_2.escape;
    } });
    Object.defineProperty(exports2, "escapeUTF8", { enumerable: true, get: function() {
      return escape_js_2.escapeUTF8;
    } });
    Object.defineProperty(exports2, "escapeAttribute", { enumerable: true, get: function() {
      return escape_js_2.escapeAttribute;
    } });
    Object.defineProperty(exports2, "escapeText", { enumerable: true, get: function() {
      return escape_js_2.escapeText;
    } });
    var encode_js_2 = require_encode2();
    Object.defineProperty(exports2, "encodeHTML", { enumerable: true, get: function() {
      return encode_js_2.encodeHTML;
    } });
    Object.defineProperty(exports2, "encodeNonAsciiHTML", { enumerable: true, get: function() {
      return encode_js_2.encodeNonAsciiHTML;
    } });
    Object.defineProperty(exports2, "encodeHTML4", { enumerable: true, get: function() {
      return encode_js_2.encodeHTML;
    } });
    Object.defineProperty(exports2, "encodeHTML5", { enumerable: true, get: function() {
      return encode_js_2.encodeHTML;
    } });
    var decode_js_2 = require_decode2();
    Object.defineProperty(exports2, "EntityDecoder", { enumerable: true, get: function() {
      return decode_js_2.EntityDecoder;
    } });
    Object.defineProperty(exports2, "DecodingMode", { enumerable: true, get: function() {
      return decode_js_2.DecodingMode;
    } });
    Object.defineProperty(exports2, "decodeXML", { enumerable: true, get: function() {
      return decode_js_2.decodeXML;
    } });
    Object.defineProperty(exports2, "decodeHTML", { enumerable: true, get: function() {
      return decode_js_2.decodeHTML;
    } });
    Object.defineProperty(exports2, "decodeHTMLStrict", { enumerable: true, get: function() {
      return decode_js_2.decodeHTMLStrict;
    } });
    Object.defineProperty(exports2, "decodeHTMLAttribute", { enumerable: true, get: function() {
      return decode_js_2.decodeHTMLAttribute;
    } });
    Object.defineProperty(exports2, "decodeHTML4", { enumerable: true, get: function() {
      return decode_js_2.decodeHTML;
    } });
    Object.defineProperty(exports2, "decodeHTML5", { enumerable: true, get: function() {
      return decode_js_2.decodeHTML;
    } });
    Object.defineProperty(exports2, "decodeHTML4Strict", { enumerable: true, get: function() {
      return decode_js_2.decodeHTMLStrict;
    } });
    Object.defineProperty(exports2, "decodeHTML5Strict", { enumerable: true, get: function() {
      return decode_js_2.decodeHTMLStrict;
    } });
    Object.defineProperty(exports2, "decodeXMLStrict", { enumerable: true, get: function() {
      return decode_js_2.decodeXML;
    } });
  }
});

// ../../node_modules/dom-serializer/lib/foreignNames.js
var require_foreignNames = __commonJS({
  "../../node_modules/dom-serializer/lib/foreignNames.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.attributeNames = exports2.elementNames = void 0;
    exports2.elementNames = new Map([
      "altGlyph",
      "altGlyphDef",
      "altGlyphItem",
      "animateColor",
      "animateMotion",
      "animateTransform",
      "clipPath",
      "feBlend",
      "feColorMatrix",
      "feComponentTransfer",
      "feComposite",
      "feConvolveMatrix",
      "feDiffuseLighting",
      "feDisplacementMap",
      "feDistantLight",
      "feDropShadow",
      "feFlood",
      "feFuncA",
      "feFuncB",
      "feFuncG",
      "feFuncR",
      "feGaussianBlur",
      "feImage",
      "feMerge",
      "feMergeNode",
      "feMorphology",
      "feOffset",
      "fePointLight",
      "feSpecularLighting",
      "feSpotLight",
      "feTile",
      "feTurbulence",
      "foreignObject",
      "glyphRef",
      "linearGradient",
      "radialGradient",
      "textPath"
    ].map(function(val) {
      return [val.toLowerCase(), val];
    }));
    exports2.attributeNames = new Map([
      "definitionURL",
      "attributeName",
      "attributeType",
      "baseFrequency",
      "baseProfile",
      "calcMode",
      "clipPathUnits",
      "diffuseConstant",
      "edgeMode",
      "filterUnits",
      "glyphRef",
      "gradientTransform",
      "gradientUnits",
      "kernelMatrix",
      "kernelUnitLength",
      "keyPoints",
      "keySplines",
      "keyTimes",
      "lengthAdjust",
      "limitingConeAngle",
      "markerHeight",
      "markerUnits",
      "markerWidth",
      "maskContentUnits",
      "maskUnits",
      "numOctaves",
      "pathLength",
      "patternContentUnits",
      "patternTransform",
      "patternUnits",
      "pointsAtX",
      "pointsAtY",
      "pointsAtZ",
      "preserveAlpha",
      "preserveAspectRatio",
      "primitiveUnits",
      "refX",
      "refY",
      "repeatCount",
      "repeatDur",
      "requiredExtensions",
      "requiredFeatures",
      "specularConstant",
      "specularExponent",
      "spreadMethod",
      "startOffset",
      "stdDeviation",
      "stitchTiles",
      "surfaceScale",
      "systemLanguage",
      "tableValues",
      "targetX",
      "targetY",
      "textLength",
      "viewBox",
      "viewTarget",
      "xChannelSelector",
      "yChannelSelector",
      "zoomAndPan"
    ].map(function(val) {
      return [val.toLowerCase(), val];
    }));
  }
});

// ../../node_modules/dom-serializer/lib/index.js
var require_lib10 = __commonJS({
  "../../node_modules/dom-serializer/lib/index.js"(exports2) {
    "use strict";
    var __assign = exports2 && exports2.__assign || function() {
      __assign = Object.assign || function(t2) {
        for (var s5, i2 = 1, n = arguments.length; i2 < n; i2++) {
          s5 = arguments[i2];
          for (var p5 in s5) if (Object.prototype.hasOwnProperty.call(s5, p5))
            t2[p5] = s5[p5];
        }
        return t2;
      };
      return __assign.apply(this, arguments);
    };
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.render = void 0;
    var ElementType = __importStar(require_lib7());
    var entities_1 = require_lib9();
    var foreignNames_js_1 = require_foreignNames();
    var unencodedElements = /* @__PURE__ */ new Set([
      "style",
      "script",
      "xmp",
      "iframe",
      "noembed",
      "noframes",
      "plaintext",
      "noscript"
    ]);
    function replaceQuotes(value) {
      return value.replace(/"/g, "&quot;");
    }
    function formatAttributes(attributes, opts) {
      var _a6;
      if (!attributes)
        return;
      var encode = ((_a6 = opts.encodeEntities) !== null && _a6 !== void 0 ? _a6 : opts.decodeEntities) === false ? replaceQuotes : opts.xmlMode || opts.encodeEntities !== "utf8" ? entities_1.encodeXML : entities_1.escapeAttribute;
      return Object.keys(attributes).map(function(key2) {
        var _a7, _b;
        var value = (_a7 = attributes[key2]) !== null && _a7 !== void 0 ? _a7 : "";
        if (opts.xmlMode === "foreign") {
          key2 = (_b = foreignNames_js_1.attributeNames.get(key2)) !== null && _b !== void 0 ? _b : key2;
        }
        if (!opts.emptyAttrs && !opts.xmlMode && value === "") {
          return key2;
        }
        return "".concat(key2, '="').concat(encode(value), '"');
      }).join(" ");
    }
    var singleTag = /* @__PURE__ */ new Set([
      "area",
      "base",
      "basefont",
      "br",
      "col",
      "command",
      "embed",
      "frame",
      "hr",
      "img",
      "input",
      "isindex",
      "keygen",
      "link",
      "meta",
      "param",
      "source",
      "track",
      "wbr"
    ]);
    function render3(node3, options) {
      if (options === void 0) {
        options = {};
      }
      var nodes = "length" in node3 ? node3 : [node3];
      var output2 = "";
      for (var i2 = 0; i2 < nodes.length; i2++) {
        output2 += renderNode(nodes[i2], options);
      }
      return output2;
    }
    exports2.render = render3;
    exports2.default = render3;
    function renderNode(node3, options) {
      switch (node3.type) {
        case ElementType.Root:
          return render3(node3.children, options);
        // @ts-expect-error We don't use `Doctype` yet
        case ElementType.Doctype:
        case ElementType.Directive:
          return renderDirective(node3);
        case ElementType.Comment:
          return renderComment(node3);
        case ElementType.CDATA:
          return renderCdata(node3);
        case ElementType.Script:
        case ElementType.Style:
        case ElementType.Tag:
          return renderTag(node3, options);
        case ElementType.Text:
          return renderText(node3, options);
      }
    }
    var foreignModeIntegrationPoints = /* @__PURE__ */ new Set([
      "mi",
      "mo",
      "mn",
      "ms",
      "mtext",
      "annotation-xml",
      "foreignObject",
      "desc",
      "title"
    ]);
    var foreignElements = /* @__PURE__ */ new Set(["svg", "math"]);
    function renderTag(elem, opts) {
      var _a6;
      if (opts.xmlMode === "foreign") {
        elem.name = (_a6 = foreignNames_js_1.elementNames.get(elem.name)) !== null && _a6 !== void 0 ? _a6 : elem.name;
        if (elem.parent && foreignModeIntegrationPoints.has(elem.parent.name)) {
          opts = __assign(__assign({}, opts), { xmlMode: false });
        }
      }
      if (!opts.xmlMode && foreignElements.has(elem.name)) {
        opts = __assign(__assign({}, opts), { xmlMode: "foreign" });
      }
      var tag = "<".concat(elem.name);
      var attribs = formatAttributes(elem.attribs, opts);
      if (attribs) {
        tag += " ".concat(attribs);
      }
      if (elem.children.length === 0 && (opts.xmlMode ? (
        // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags
        opts.selfClosingTags !== false
      ) : (
        // User explicitly asked for self-closing tags, even in HTML mode
        opts.selfClosingTags && singleTag.has(elem.name)
      ))) {
        if (!opts.xmlMode)
          tag += " ";
        tag += "/>";
      } else {
        tag += ">";
        if (elem.children.length > 0) {
          tag += render3(elem.children, opts);
        }
        if (opts.xmlMode || !singleTag.has(elem.name)) {
          tag += "</".concat(elem.name, ">");
        }
      }
      return tag;
    }
    function renderDirective(elem) {
      return "<".concat(elem.data, ">");
    }
    function renderText(elem, opts) {
      var _a6;
      var data = elem.data || "";
      if (((_a6 = opts.encodeEntities) !== null && _a6 !== void 0 ? _a6 : opts.decodeEntities) !== false && !(!opts.xmlMode && elem.parent && unencodedElements.has(elem.parent.name))) {
        data = opts.xmlMode || opts.encodeEntities !== "utf8" ? (0, entities_1.encodeXML)(data) : (0, entities_1.escapeText)(data);
      }
      return data;
    }
    function renderCdata(elem) {
      return "<![CDATA[".concat(elem.children[0].data, "]]>");
    }
    function renderComment(elem) {
      return "<!--".concat(elem.data, "-->");
    }
  }
});

// ../../node_modules/domutils/lib/stringify.js
var require_stringify = __commonJS({
  "../../node_modules/domutils/lib/stringify.js"(exports2) {
    "use strict";
    var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.innerText = exports2.textContent = exports2.getText = exports2.getInnerHTML = exports2.getOuterHTML = void 0;
    var domhandler_1 = require_lib8();
    var dom_serializer_1 = __importDefault2(require_lib10());
    var domelementtype_1 = require_lib7();
    function getOuterHTML(node3, options) {
      return (0, dom_serializer_1.default)(node3, options);
    }
    exports2.getOuterHTML = getOuterHTML;
    function getInnerHTML(node3, options) {
      return (0, domhandler_1.hasChildren)(node3) ? node3.children.map(function(node4) {
        return getOuterHTML(node4, options);
      }).join("") : "";
    }
    exports2.getInnerHTML = getInnerHTML;
    function getText(node3) {
      if (Array.isArray(node3))
        return node3.map(getText).join("");
      if ((0, domhandler_1.isTag)(node3))
        return node3.name === "br" ? "\n" : getText(node3.children);
      if ((0, domhandler_1.isCDATA)(node3))
        return getText(node3.children);
      if ((0, domhandler_1.isText)(node3))
        return node3.data;
      return "";
    }
    exports2.getText = getText;
    function textContent(node3) {
      if (Array.isArray(node3))
        return node3.map(textContent).join("");
      if ((0, domhandler_1.hasChildren)(node3) && !(0, domhandler_1.isComment)(node3)) {
        return textContent(node3.children);
      }
      if ((0, domhandler_1.isText)(node3))
        return node3.data;
      return "";
    }
    exports2.textContent = textContent;
    function innerText(node3) {
      if (Array.isArray(node3))
        return node3.map(innerText).join("");
      if ((0, domhandler_1.hasChildren)(node3) && (node3.type === domelementtype_1.ElementType.Tag || (0, domhandler_1.isCDATA)(node3))) {
        return innerText(node3.children);
      }
      if ((0, domhandler_1.isText)(node3))
        return node3.data;
      return "";
    }
    exports2.innerText = innerText;
  }
});

// ../../node_modules/domutils/lib/traversal.js
var require_traversal = __commonJS({
  "../../node_modules/domutils/lib/traversal.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.prevElementSibling = exports2.nextElementSibling = exports2.getName = exports2.hasAttrib = exports2.getAttributeValue = exports2.getSiblings = exports2.getParent = exports2.getChildren = void 0;
    var domhandler_1 = require_lib8();
    function getChildren(elem) {
      return (0, domhandler_1.hasChildren)(elem) ? elem.children : [];
    }
    exports2.getChildren = getChildren;
    function getParent(elem) {
      return elem.parent || null;
    }
    exports2.getParent = getParent;
    function getSiblings(elem) {
      var _a6, _b;
      var parent2 = getParent(elem);
      if (parent2 != null)
        return getChildren(parent2);
      var siblings2 = [elem];
      var prev = elem.prev, next = elem.next;
      while (prev != null) {
        siblings2.unshift(prev);
        _a6 = prev, prev = _a6.prev;
      }
      while (next != null) {
        siblings2.push(next);
        _b = next, next = _b.next;
      }
      return siblings2;
    }
    exports2.getSiblings = getSiblings;
    function getAttributeValue(elem, name3) {
      var _a6;
      return (_a6 = elem.attribs) === null || _a6 === void 0 ? void 0 : _a6[name3];
    }
    exports2.getAttributeValue = getAttributeValue;
    function hasAttrib(elem, name3) {
      return elem.attribs != null && Object.prototype.hasOwnProperty.call(elem.attribs, name3) && elem.attribs[name3] != null;
    }
    exports2.hasAttrib = hasAttrib;
    function getName(elem) {
      return elem.name;
    }
    exports2.getName = getName;
    function nextElementSibling(elem) {
      var _a6;
      var next = elem.next;
      while (next !== null && !(0, domhandler_1.isTag)(next))
        _a6 = next, next = _a6.next;
      return next;
    }
    exports2.nextElementSibling = nextElementSibling;
    function prevElementSibling(elem) {
      var _a6;
      var prev = elem.prev;
      while (prev !== null && !(0, domhandler_1.isTag)(prev))
        _a6 = prev, prev = _a6.prev;
      return prev;
    }
    exports2.prevElementSibling = prevElementSibling;
  }
});

// ../../node_modules/domutils/lib/manipulation.js
var require_manipulation = __commonJS({
  "../../node_modules/domutils/lib/manipulation.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.prepend = exports2.prependChild = exports2.append = exports2.appendChild = exports2.replaceElement = exports2.removeElement = void 0;
    function removeElement(elem) {
      if (elem.prev)
        elem.prev.next = elem.next;
      if (elem.next)
        elem.next.prev = elem.prev;
      if (elem.parent) {
        var childs = elem.parent.children;
        var childsIndex = childs.lastIndexOf(elem);
        if (childsIndex >= 0) {
          childs.splice(childsIndex, 1);
        }
      }
      elem.next = null;
      elem.prev = null;
      elem.parent = null;
    }
    exports2.removeElement = removeElement;
    function replaceElement(elem, replacement) {
      var prev = replacement.prev = elem.prev;
      if (prev) {
        prev.next = replacement;
      }
      var next = replacement.next = elem.next;
      if (next) {
        next.prev = replacement;
      }
      var parent2 = replacement.parent = elem.parent;
      if (parent2) {
        var childs = parent2.children;
        childs[childs.lastIndexOf(elem)] = replacement;
        elem.parent = null;
      }
    }
    exports2.replaceElement = replaceElement;
    function appendChild(parent2, child) {
      removeElement(child);
      child.next = null;
      child.parent = parent2;
      if (parent2.children.push(child) > 1) {
        var sibling = parent2.children[parent2.children.length - 2];
        sibling.next = child;
        child.prev = sibling;
      } else {
        child.prev = null;
      }
    }
    exports2.appendChild = appendChild;
    function append(elem, next) {
      removeElement(next);
      var parent2 = elem.parent;
      var currNext = elem.next;
      next.next = currNext;
      next.prev = elem;
      elem.next = next;
      next.parent = parent2;
      if (currNext) {
        currNext.prev = next;
        if (parent2) {
          var childs = parent2.children;
          childs.splice(childs.lastIndexOf(currNext), 0, next);
        }
      } else if (parent2) {
        parent2.children.push(next);
      }
    }
    exports2.append = append;
    function prependChild(parent2, child) {
      removeElement(child);
      child.parent = parent2;
      child.prev = null;
      if (parent2.children.unshift(child) !== 1) {
        var sibling = parent2.children[1];
        sibling.prev = child;
        child.next = sibling;
      } else {
        child.next = null;
      }
    }
    exports2.prependChild = prependChild;
    function prepend(elem, prev) {
      removeElement(prev);
      var parent2 = elem.parent;
      if (parent2) {
        var childs = parent2.children;
        childs.splice(childs.indexOf(elem), 0, prev);
      }
      if (elem.prev) {
        elem.prev.next = prev;
      }
      prev.parent = parent2;
      prev.prev = elem.prev;
      prev.next = elem;
      elem.prev = prev;
    }
    exports2.prepend = prepend;
  }
});

// ../../node_modules/domutils/lib/querying.js
var require_querying = __commonJS({
  "../../node_modules/domutils/lib/querying.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.findAll = exports2.existsOne = exports2.findOne = exports2.findOneChild = exports2.find = exports2.filter = void 0;
    var domhandler_1 = require_lib8();
    function filter6(test2, node3, recurse, limit) {
      if (recurse === void 0) {
        recurse = true;
      }
      if (limit === void 0) {
        limit = Infinity;
      }
      return find2(test2, Array.isArray(node3) ? node3 : [node3], recurse, limit);
    }
    exports2.filter = filter6;
    function find2(test2, nodes, recurse, limit) {
      var result = [];
      var nodeStack = [nodes];
      var indexStack = [0];
      for (; ; ) {
        if (indexStack[0] >= nodeStack[0].length) {
          if (indexStack.length === 1) {
            return result;
          }
          nodeStack.shift();
          indexStack.shift();
          continue;
        }
        var elem = nodeStack[0][indexStack[0]++];
        if (test2(elem)) {
          result.push(elem);
          if (--limit <= 0)
            return result;
        }
        if (recurse && (0, domhandler_1.hasChildren)(elem) && elem.children.length > 0) {
          indexStack.unshift(0);
          nodeStack.unshift(elem.children);
        }
      }
    }
    exports2.find = find2;
    function findOneChild(test2, nodes) {
      return nodes.find(test2);
    }
    exports2.findOneChild = findOneChild;
    function findOne(test2, nodes, recurse) {
      if (recurse === void 0) {
        recurse = true;
      }
      var elem = null;
      for (var i2 = 0; i2 < nodes.length && !elem; i2++) {
        var node3 = nodes[i2];
        if (!(0, domhandler_1.isTag)(node3)) {
          continue;
        } else if (test2(node3)) {
          elem = node3;
        } else if (recurse && node3.children.length > 0) {
          elem = findOne(test2, node3.children, true);
        }
      }
      return elem;
    }
    exports2.findOne = findOne;
    function existsOne(test2, nodes) {
      return nodes.some(function(checked2) {
        return (0, domhandler_1.isTag)(checked2) && (test2(checked2) || existsOne(test2, checked2.children));
      });
    }
    exports2.existsOne = existsOne;
    function findAll(test2, nodes) {
      var result = [];
      var nodeStack = [nodes];
      var indexStack = [0];
      for (; ; ) {
        if (indexStack[0] >= nodeStack[0].length) {
          if (nodeStack.length === 1) {
            return result;
          }
          nodeStack.shift();
          indexStack.shift();
          continue;
        }
        var elem = nodeStack[0][indexStack[0]++];
        if (!(0, domhandler_1.isTag)(elem))
          continue;
        if (test2(elem))
          result.push(elem);
        if (elem.children.length > 0) {
          indexStack.unshift(0);
          nodeStack.unshift(elem.children);
        }
      }
    }
    exports2.findAll = findAll;
  }
});

// ../../node_modules/domutils/lib/legacy.js
var require_legacy = __commonJS({
  "../../node_modules/domutils/lib/legacy.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.getElementsByTagType = exports2.getElementsByTagName = exports2.getElementById = exports2.getElements = exports2.testElement = void 0;
    var domhandler_1 = require_lib8();
    var querying_js_1 = require_querying();
    var Checks = {
      tag_name: function(name3) {
        if (typeof name3 === "function") {
          return function(elem) {
            return (0, domhandler_1.isTag)(elem) && name3(elem.name);
          };
        } else if (name3 === "*") {
          return domhandler_1.isTag;
        }
        return function(elem) {
          return (0, domhandler_1.isTag)(elem) && elem.name === name3;
        };
      },
      tag_type: function(type2) {
        if (typeof type2 === "function") {
          return function(elem) {
            return type2(elem.type);
          };
        }
        return function(elem) {
          return elem.type === type2;
        };
      },
      tag_contains: function(data) {
        if (typeof data === "function") {
          return function(elem) {
            return (0, domhandler_1.isText)(elem) && data(elem.data);
          };
        }
        return function(elem) {
          return (0, domhandler_1.isText)(elem) && elem.data === data;
        };
      }
    };
    function getAttribCheck(attrib, value) {
      if (typeof value === "function") {
        return function(elem) {
          return (0, domhandler_1.isTag)(elem) && value(elem.attribs[attrib]);
        };
      }
      return function(elem) {
        return (0, domhandler_1.isTag)(elem) && elem.attribs[attrib] === value;
      };
    }
    function combineFuncs(a2, b) {
      return function(elem) {
        return a2(elem) || b(elem);
      };
    }
    function compileTest(options) {
      var funcs = Object.keys(options).map(function(key2) {
        var value = options[key2];
        return Object.prototype.hasOwnProperty.call(Checks, key2) ? Checks[key2](value) : getAttribCheck(key2, value);
      });
      return funcs.length === 0 ? null : funcs.reduce(combineFuncs);
    }
    function testElement(options, node3) {
      var test2 = compileTest(options);
      return test2 ? test2(node3) : true;
    }
    exports2.testElement = testElement;
    function getElements(options, nodes, recurse, limit) {
      if (limit === void 0) {
        limit = Infinity;
      }
      var test2 = compileTest(options);
      return test2 ? (0, querying_js_1.filter)(test2, nodes, recurse, limit) : [];
    }
    exports2.getElements = getElements;
    function getElementById(id, nodes, recurse) {
      if (recurse === void 0) {
        recurse = true;
      }
      if (!Array.isArray(nodes))
        nodes = [nodes];
      return (0, querying_js_1.findOne)(getAttribCheck("id", id), nodes, recurse);
    }
    exports2.getElementById = getElementById;
    function getElementsByTagName(tagName, nodes, recurse, limit) {
      if (recurse === void 0) {
        recurse = true;
      }
      if (limit === void 0) {
        limit = Infinity;
      }
      return (0, querying_js_1.filter)(Checks["tag_name"](tagName), nodes, recurse, limit);
    }
    exports2.getElementsByTagName = getElementsByTagName;
    function getElementsByTagType(type2, nodes, recurse, limit) {
      if (recurse === void 0) {
        recurse = true;
      }
      if (limit === void 0) {
        limit = Infinity;
      }
      return (0, querying_js_1.filter)(Checks["tag_type"](type2), nodes, recurse, limit);
    }
    exports2.getElementsByTagType = getElementsByTagType;
  }
});

// ../../node_modules/domutils/lib/helpers.js
var require_helpers = __commonJS({
  "../../node_modules/domutils/lib/helpers.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.uniqueSort = exports2.compareDocumentPosition = exports2.DocumentPosition = exports2.removeSubsets = void 0;
    var domhandler_1 = require_lib8();
    function removeSubsets(nodes) {
      var idx = nodes.length;
      while (--idx >= 0) {
        var node3 = nodes[idx];
        if (idx > 0 && nodes.lastIndexOf(node3, idx - 1) >= 0) {
          nodes.splice(idx, 1);
          continue;
        }
        for (var ancestor = node3.parent; ancestor; ancestor = ancestor.parent) {
          if (nodes.includes(ancestor)) {
            nodes.splice(idx, 1);
            break;
          }
        }
      }
      return nodes;
    }
    exports2.removeSubsets = removeSubsets;
    var DocumentPosition;
    (function(DocumentPosition2) {
      DocumentPosition2[DocumentPosition2["DISCONNECTED"] = 1] = "DISCONNECTED";
      DocumentPosition2[DocumentPosition2["PRECEDING"] = 2] = "PRECEDING";
      DocumentPosition2[DocumentPosition2["FOLLOWING"] = 4] = "FOLLOWING";
      DocumentPosition2[DocumentPosition2["CONTAINS"] = 8] = "CONTAINS";
      DocumentPosition2[DocumentPosition2["CONTAINED_BY"] = 16] = "CONTAINED_BY";
    })(DocumentPosition = exports2.DocumentPosition || (exports2.DocumentPosition = {}));
    function compareDocumentPosition(nodeA, nodeB) {
      var aParents = [];
      var bParents = [];
      if (nodeA === nodeB) {
        return 0;
      }
      var current2 = (0, domhandler_1.hasChildren)(nodeA) ? nodeA : nodeA.parent;
      while (current2) {
        aParents.unshift(current2);
        current2 = current2.parent;
      }
      current2 = (0, domhandler_1.hasChildren)(nodeB) ? nodeB : nodeB.parent;
      while (current2) {
        bParents.unshift(current2);
        current2 = current2.parent;
      }
      var maxIdx = Math.min(aParents.length, bParents.length);
      var idx = 0;
      while (idx < maxIdx && aParents[idx] === bParents[idx]) {
        idx++;
      }
      if (idx === 0) {
        return DocumentPosition.DISCONNECTED;
      }
      var sharedParent = aParents[idx - 1];
      var siblings2 = sharedParent.children;
      var aSibling = aParents[idx];
      var bSibling = bParents[idx];
      if (siblings2.indexOf(aSibling) > siblings2.indexOf(bSibling)) {
        if (sharedParent === nodeB) {
          return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY;
        }
        return DocumentPosition.FOLLOWING;
      }
      if (sharedParent === nodeA) {
        return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS;
      }
      return DocumentPosition.PRECEDING;
    }
    exports2.compareDocumentPosition = compareDocumentPosition;
    function uniqueSort(nodes) {
      nodes = nodes.filter(function(node3, i2, arr) {
        return !arr.includes(node3, i2 + 1);
      });
      nodes.sort(function(a2, b) {
        var relative6 = compareDocumentPosition(a2, b);
        if (relative6 & DocumentPosition.PRECEDING) {
          return -1;
        } else if (relative6 & DocumentPosition.FOLLOWING) {
          return 1;
        }
        return 0;
      });
      return nodes;
    }
    exports2.uniqueSort = uniqueSort;
  }
});

// ../../node_modules/domutils/lib/feeds.js
var require_feeds = __commonJS({
  "../../node_modules/domutils/lib/feeds.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.getFeed = void 0;
    var stringify_js_1 = require_stringify();
    var legacy_js_1 = require_legacy();
    function getFeed(doc) {
      var feedRoot = getOneElement(isValidFeed, doc);
      return !feedRoot ? null : feedRoot.name === "feed" ? getAtomFeed(feedRoot) : getRssFeed(feedRoot);
    }
    exports2.getFeed = getFeed;
    function getAtomFeed(feedRoot) {
      var _a6;
      var childs = feedRoot.children;
      var feed = {
        type: "atom",
        items: (0, legacy_js_1.getElementsByTagName)("entry", childs).map(function(item) {
          var _a7;
          var children = item.children;
          var entry = { media: getMediaElements(children) };
          addConditionally(entry, "id", "id", children);
          addConditionally(entry, "title", "title", children);
          var href2 = (_a7 = getOneElement("link", children)) === null || _a7 === void 0 ? void 0 : _a7.attribs["href"];
          if (href2) {
            entry.link = href2;
          }
          var description = fetch3("summary", children) || fetch3("content", children);
          if (description) {
            entry.description = description;
          }
          var pubDate = fetch3("updated", children);
          if (pubDate) {
            entry.pubDate = new Date(pubDate);
          }
          return entry;
        })
      };
      addConditionally(feed, "id", "id", childs);
      addConditionally(feed, "title", "title", childs);
      var href = (_a6 = getOneElement("link", childs)) === null || _a6 === void 0 ? void 0 : _a6.attribs["href"];
      if (href) {
        feed.link = href;
      }
      addConditionally(feed, "description", "subtitle", childs);
      var updated = fetch3("updated", childs);
      if (updated) {
        feed.updated = new Date(updated);
      }
      addConditionally(feed, "author", "email", childs, true);
      return feed;
    }
    function getRssFeed(feedRoot) {
      var _a6, _b;
      var childs = (_b = (_a6 = getOneElement("channel", feedRoot.children)) === null || _a6 === void 0 ? void 0 : _a6.children) !== null && _b !== void 0 ? _b : [];
      var feed = {
        type: feedRoot.name.substr(0, 3),
        id: "",
        items: (0, legacy_js_1.getElementsByTagName)("item", feedRoot.children).map(function(item) {
          var children = item.children;
          var entry = { media: getMediaElements(children) };
          addConditionally(entry, "id", "guid", children);
          addConditionally(entry, "title", "title", children);
          addConditionally(entry, "link", "link", children);
          addConditionally(entry, "description", "description", children);
          var pubDate = fetch3("pubDate", children) || fetch3("dc:date", children);
          if (pubDate)
            entry.pubDate = new Date(pubDate);
          return entry;
        })
      };
      addConditionally(feed, "title", "title", childs);
      addConditionally(feed, "link", "link", childs);
      addConditionally(feed, "description", "description", childs);
      var updated = fetch3("lastBuildDate", childs);
      if (updated) {
        feed.updated = new Date(updated);
      }
      addConditionally(feed, "author", "managingEditor", childs, true);
      return feed;
    }
    var MEDIA_KEYS_STRING = ["url", "type", "lang"];
    var MEDIA_KEYS_INT = [
      "fileSize",
      "bitrate",
      "framerate",
      "samplingrate",
      "channels",
      "duration",
      "height",
      "width"
    ];
    function getMediaElements(where) {
      return (0, legacy_js_1.getElementsByTagName)("media:content", where).map(function(elem) {
        var attribs = elem.attribs;
        var media2 = {
          medium: attribs["medium"],
          isDefault: !!attribs["isDefault"]
        };
        for (var _i = 0, MEDIA_KEYS_STRING_1 = MEDIA_KEYS_STRING; _i < MEDIA_KEYS_STRING_1.length; _i++) {
          var attrib = MEDIA_KEYS_STRING_1[_i];
          if (attribs[attrib]) {
            media2[attrib] = attribs[attrib];
          }
        }
        for (var _a6 = 0, MEDIA_KEYS_INT_1 = MEDIA_KEYS_INT; _a6 < MEDIA_KEYS_INT_1.length; _a6++) {
          var attrib = MEDIA_KEYS_INT_1[_a6];
          if (attribs[attrib]) {
            media2[attrib] = parseInt(attribs[attrib], 10);
          }
        }
        if (attribs["expression"]) {
          media2.expression = attribs["expression"];
        }
        return media2;
      });
    }
    function getOneElement(tagName, node3) {
      return (0, legacy_js_1.getElementsByTagName)(tagName, node3, true, 1)[0];
    }
    function fetch3(tagName, where, recurse) {
      if (recurse === void 0) {
        recurse = false;
      }
      return (0, stringify_js_1.textContent)((0, legacy_js_1.getElementsByTagName)(tagName, where, recurse, 1)).trim();
    }
    function addConditionally(obj, prop, tagName, where, recurse) {
      if (recurse === void 0) {
        recurse = false;
      }
      var val = fetch3(tagName, where, recurse);
      if (val)
        obj[prop] = val;
    }
    function isValidFeed(value) {
      return value === "rss" || value === "feed" || value === "rdf:RDF";
    }
  }
});

// ../../node_modules/domutils/lib/index.js
var require_lib11 = __commonJS({
  "../../node_modules/domutils/lib/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __exportStar = exports2 && exports2.__exportStar || function(m2, exports3) {
      for (var p5 in m2) if (p5 !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p5)) __createBinding(exports3, m2, p5);
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.hasChildren = exports2.isDocument = exports2.isComment = exports2.isText = exports2.isCDATA = exports2.isTag = void 0;
    __exportStar(require_stringify(), exports2);
    __exportStar(require_traversal(), exports2);
    __exportStar(require_manipulation(), exports2);
    __exportStar(require_querying(), exports2);
    __exportStar(require_legacy(), exports2);
    __exportStar(require_helpers(), exports2);
    __exportStar(require_feeds(), exports2);
    var domhandler_1 = require_lib8();
    Object.defineProperty(exports2, "isTag", { enumerable: true, get: function() {
      return domhandler_1.isTag;
    } });
    Object.defineProperty(exports2, "isCDATA", { enumerable: true, get: function() {
      return domhandler_1.isCDATA;
    } });
    Object.defineProperty(exports2, "isText", { enumerable: true, get: function() {
      return domhandler_1.isText;
    } });
    Object.defineProperty(exports2, "isComment", { enumerable: true, get: function() {
      return domhandler_1.isComment;
    } });
    Object.defineProperty(exports2, "isDocument", { enumerable: true, get: function() {
      return domhandler_1.isDocument;
    } });
    Object.defineProperty(exports2, "hasChildren", { enumerable: true, get: function() {
      return domhandler_1.hasChildren;
    } });
  }
});

// ../../node_modules/htmlparser2/lib/index.js
var require_lib12 = __commonJS({
  "../../node_modules/htmlparser2/lib/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.DomUtils = exports2.parseFeed = exports2.getFeed = exports2.ElementType = exports2.Tokenizer = exports2.createDomStream = exports2.parseDOM = exports2.parseDocument = exports2.DefaultHandler = exports2.DomHandler = exports2.Parser = void 0;
    var Parser_js_1 = require_Parser();
    var Parser_js_2 = require_Parser();
    Object.defineProperty(exports2, "Parser", { enumerable: true, get: function() {
      return Parser_js_2.Parser;
    } });
    var domhandler_1 = require_lib8();
    var domhandler_2 = require_lib8();
    Object.defineProperty(exports2, "DomHandler", { enumerable: true, get: function() {
      return domhandler_2.DomHandler;
    } });
    Object.defineProperty(exports2, "DefaultHandler", { enumerable: true, get: function() {
      return domhandler_2.DomHandler;
    } });
    function parseDocument(data, options) {
      var handler = new domhandler_1.DomHandler(void 0, options);
      new Parser_js_1.Parser(handler, options).end(data);
      return handler.root;
    }
    exports2.parseDocument = parseDocument;
    function parseDOM(data, options) {
      return parseDocument(data, options).children;
    }
    exports2.parseDOM = parseDOM;
    function createDomStream(callback, options, elementCallback) {
      var handler = new domhandler_1.DomHandler(callback, options, elementCallback);
      return new Parser_js_1.Parser(handler, options);
    }
    exports2.createDomStream = createDomStream;
    var Tokenizer_js_1 = require_Tokenizer();
    Object.defineProperty(exports2, "Tokenizer", { enumerable: true, get: function() {
      return __importDefault2(Tokenizer_js_1).default;
    } });
    exports2.ElementType = __importStar(require_lib7());
    var domutils_1 = require_lib11();
    var domutils_2 = require_lib11();
    Object.defineProperty(exports2, "getFeed", { enumerable: true, get: function() {
      return domutils_2.getFeed;
    } });
    var parseFeedDefaultOptions = { xmlMode: true };
    function parseFeed(feed, options) {
      if (options === void 0) {
        options = parseFeedDefaultOptions;
      }
      return (0, domutils_1.getFeed)(parseDOM(feed, options));
    }
    exports2.parseFeed = parseFeed;
    exports2.DomUtils = __importStar(require_lib11());
  }
});

// ../../node_modules/sanitize-html/node_modules/escape-string-regexp/index.js
var require_escape_string_regexp = __commonJS({
  "../../node_modules/sanitize-html/node_modules/escape-string-regexp/index.js"(exports2, module2) {
    "use strict";
    module2.exports = (string2) => {
      if (typeof string2 !== "string") {
        throw new TypeError("Expected a string");
      }
      return string2.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
    };
  }
});

// ../../node_modules/is-plain-object/dist/is-plain-object.js
var require_is_plain_object = __commonJS({
  "../../node_modules/is-plain-object/dist/is-plain-object.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    function isObject2(o) {
      return Object.prototype.toString.call(o) === "[object Object]";
    }
    function isPlainObject5(o) {
      var ctor, prot;
      if (isObject2(o) === false) return false;
      ctor = o.constructor;
      if (ctor === void 0) return true;
      prot = ctor.prototype;
      if (isObject2(prot) === false) return false;
      if (prot.hasOwnProperty("isPrototypeOf") === false) {
        return false;
      }
      return true;
    }
    exports2.isPlainObject = isPlainObject5;
  }
});

// ../../node_modules/deepmerge/dist/cjs.js
var require_cjs = __commonJS({
  "../../node_modules/deepmerge/dist/cjs.js"(exports2, module2) {
    "use strict";
    var isMergeableObject = function isMergeableObject2(value) {
      return isNonNullObject(value) && !isSpecial(value);
    };
    function isNonNullObject(value) {
      return !!value && typeof value === "object";
    }
    function isSpecial(value) {
      var stringValue = Object.prototype.toString.call(value);
      return stringValue === "[object RegExp]" || stringValue === "[object Date]" || isReactElement(value);
    }
    var canUseSymbol = typeof Symbol === "function" && Symbol.for;
    var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for("react.element") : 60103;
    function isReactElement(value) {
      return value.$$typeof === REACT_ELEMENT_TYPE;
    }
    function emptyTarget(val) {
      return Array.isArray(val) ? [] : {};
    }
    function cloneUnlessOtherwiseSpecified(value, options) {
      return options.clone !== false && options.isMergeableObject(value) ? deepmerge(emptyTarget(value), value, options) : value;
    }
    function defaultArrayMerge(target, source2, options) {
      return target.concat(source2).map(function(element5) {
        return cloneUnlessOtherwiseSpecified(element5, options);
      });
    }
    function getMergeFunction(key2, options) {
      if (!options.customMerge) {
        return deepmerge;
      }
      var customMerge = options.customMerge(key2);
      return typeof customMerge === "function" ? customMerge : deepmerge;
    }
    function getEnumerableOwnPropertySymbols(target) {
      return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) {
        return Object.propertyIsEnumerable.call(target, symbol);
      }) : [];
    }
    function getKeys(target) {
      return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));
    }
    function propertyIsOnObject(object, property) {
      try {
        return property in object;
      } catch (_2) {
        return false;
      }
    }
    function propertyIsUnsafe(target, key2) {
      return propertyIsOnObject(target, key2) && !(Object.hasOwnProperty.call(target, key2) && Object.propertyIsEnumerable.call(target, key2));
    }
    function mergeObject(target, source2, options) {
      var destination = {};
      if (options.isMergeableObject(target)) {
        getKeys(target).forEach(function(key2) {
          destination[key2] = cloneUnlessOtherwiseSpecified(target[key2], options);
        });
      }
      getKeys(source2).forEach(function(key2) {
        if (propertyIsUnsafe(target, key2)) {
          return;
        }
        if (propertyIsOnObject(target, key2) && options.isMergeableObject(source2[key2])) {
          destination[key2] = getMergeFunction(key2, options)(target[key2], source2[key2], options);
        } else {
          destination[key2] = cloneUnlessOtherwiseSpecified(source2[key2], options);
        }
      });
      return destination;
    }
    function deepmerge(target, source2, options) {
      options = options || {};
      options.arrayMerge = options.arrayMerge || defaultArrayMerge;
      options.isMergeableObject = options.isMergeableObject || isMergeableObject;
      options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;
      var sourceIsArray = Array.isArray(source2);
      var targetIsArray = Array.isArray(target);
      var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
      if (!sourceAndTargetTypesMatch) {
        return cloneUnlessOtherwiseSpecified(source2, options);
      } else if (sourceIsArray) {
        return options.arrayMerge(target, source2, options);
      } else {
        return mergeObject(target, source2, options);
      }
    }
    deepmerge.all = function deepmergeAll(array, options) {
      if (!Array.isArray(array)) {
        throw new Error("first argument should be an array");
      }
      return array.reduce(function(prev, next) {
        return deepmerge(prev, next, options);
      }, {});
    };
    var deepmerge_1 = deepmerge;
    module2.exports = deepmerge_1;
  }
});

// ../../node_modules/parse-srcset/src/parse-srcset.js
var require_parse_srcset = __commonJS({
  "../../node_modules/parse-srcset/src/parse-srcset.js"(exports2, module2) {
    (function(root6, factory) {
      if (typeof define === "function" && define.amd) {
        define([], factory);
      } else if (typeof module2 === "object" && module2.exports) {
        module2.exports = factory();
      } else {
        root6.parseSrcset = factory();
      }
    })(exports2, function() {
      return function(input3) {
        function isSpace(c2) {
          return c2 === " " || // space
          c2 === "	" || // horizontal tab
          c2 === "\n" || // new line
          c2 === "\f" || // form feed
          c2 === "\r";
        }
        function collectCharacters(regEx) {
          var chars, match3 = regEx.exec(input3.substring(pos));
          if (match3) {
            chars = match3[0];
            pos += chars.length;
            return chars;
          }
        }
        var inputLength = input3.length, regexLeadingSpaces = /^[ \t\n\r\u000c]+/, regexLeadingCommasOrSpaces = /^[, \t\n\r\u000c]+/, regexLeadingNotSpaces = /^[^ \t\n\r\u000c]+/, regexTrailingCommas = /[,]+$/, regexNonNegativeInteger = /^\d+$/, regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/, url, descriptors, currentDescriptor, state, c, pos = 0, candidates = [];
        while (true) {
          collectCharacters(regexLeadingCommasOrSpaces);
          if (pos >= inputLength) {
            return candidates;
          }
          url = collectCharacters(regexLeadingNotSpaces);
          descriptors = [];
          if (url.slice(-1) === ",") {
            url = url.replace(regexTrailingCommas, "");
            parseDescriptors();
          } else {
            tokenize();
          }
        }
        function tokenize() {
          collectCharacters(regexLeadingSpaces);
          currentDescriptor = "";
          state = "in descriptor";
          while (true) {
            c = input3.charAt(pos);
            if (state === "in descriptor") {
              if (isSpace(c)) {
                if (currentDescriptor) {
                  descriptors.push(currentDescriptor);
                  currentDescriptor = "";
                  state = "after descriptor";
                }
              } else if (c === ",") {
                pos += 1;
                if (currentDescriptor) {
                  descriptors.push(currentDescriptor);
                }
                parseDescriptors();
                return;
              } else if (c === "(") {
                currentDescriptor = currentDescriptor + c;
                state = "in parens";
              } else if (c === "") {
                if (currentDescriptor) {
                  descriptors.push(currentDescriptor);
                }
                parseDescriptors();
                return;
              } else {
                currentDescriptor = currentDescriptor + c;
              }
            } else if (state === "in parens") {
              if (c === ")") {
                currentDescriptor = currentDescriptor + c;
                state = "in descriptor";
              } else if (c === "") {
                descriptors.push(currentDescriptor);
                parseDescriptors();
                return;
              } else {
                currentDescriptor = currentDescriptor + c;
              }
            } else if (state === "after descriptor") {
              if (isSpace(c)) {
              } else if (c === "") {
                parseDescriptors();
                return;
              } else {
                state = "in descriptor";
                pos -= 1;
              }
            }
            pos += 1;
          }
        }
        function parseDescriptors() {
          var pError = false, w, d, h4, i2, candidate = {}, desc, lastChar, value, intVal, floatVal;
          for (i2 = 0; i2 < descriptors.length; i2++) {
            desc = descriptors[i2];
            lastChar = desc[desc.length - 1];
            value = desc.substring(0, desc.length - 1);
            intVal = parseInt(value, 10);
            floatVal = parseFloat(value);
            if (regexNonNegativeInteger.test(value) && lastChar === "w") {
              if (w || d) {
                pError = true;
              }
              if (intVal === 0) {
                pError = true;
              } else {
                w = intVal;
              }
            } else if (regexFloatingPoint.test(value) && lastChar === "x") {
              if (w || d || h4) {
                pError = true;
              }
              if (floatVal < 0) {
                pError = true;
              } else {
                d = floatVal;
              }
            } else if (regexNonNegativeInteger.test(value) && lastChar === "h") {
              if (h4 || d) {
                pError = true;
              }
              if (intVal === 0) {
                pError = true;
              } else {
                h4 = intVal;
              }
            } else {
              pError = true;
            }
          }
          if (!pError) {
            candidate.url = url;
            if (w) {
              candidate.w = w;
            }
            if (d) {
              candidate.d = d;
            }
            if (h4) {
              candidate.h = h4;
            }
            candidates.push(candidate);
          } else if (console && console.log) {
            console.log("Invalid srcset descriptor found in '" + input3 + "' at '" + desc + "'.");
          }
        }
      };
    });
  }
});

// ../../node_modules/picocolors/picocolors.js
var require_picocolors = __commonJS({
  "../../node_modules/picocolors/picocolors.js"(exports2, module2) {
    var p5 = process || {};
    var argv = p5.argv || [];
    var env6 = p5.env || {};
    var isColorSupported = !(!!env6.NO_COLOR || argv.includes("--no-color")) && (!!env6.FORCE_COLOR || argv.includes("--color") || p5.platform === "win32" || (p5.stdout || {}).isTTY && env6.TERM !== "dumb" || !!env6.CI);
    var formatter = (open2, close2, replace = open2) => (input3) => {
      let string2 = "" + input3, index4 = string2.indexOf(close2, open2.length);
      return ~index4 ? open2 + replaceClose(string2, close2, replace, index4) + close2 : open2 + string2 + close2;
    };
    var replaceClose = (string2, close2, replace, index4) => {
      let result = "", cursor = 0;
      do {
        result += string2.substring(cursor, index4) + replace;
        cursor = index4 + close2.length;
        index4 = string2.indexOf(close2, cursor);
      } while (~index4);
      return result + string2.substring(cursor);
    };
    var createColors = (enabled = isColorSupported) => {
      let f3 = enabled ? formatter : () => String;
      return {
        isColorSupported: enabled,
        reset: f3("\x1B[0m", "\x1B[0m"),
        bold: f3("\x1B[1m", "\x1B[22m", "\x1B[22m\x1B[1m"),
        dim: f3("\x1B[2m", "\x1B[22m", "\x1B[22m\x1B[2m"),
        italic: f3("\x1B[3m", "\x1B[23m"),
        underline: f3("\x1B[4m", "\x1B[24m"),
        inverse: f3("\x1B[7m", "\x1B[27m"),
        hidden: f3("\x1B[8m", "\x1B[28m"),
        strikethrough: f3("\x1B[9m", "\x1B[29m"),
        black: f3("\x1B[30m", "\x1B[39m"),
        red: f3("\x1B[31m", "\x1B[39m"),
        green: f3("\x1B[32m", "\x1B[39m"),
        yellow: f3("\x1B[33m", "\x1B[39m"),
        blue: f3("\x1B[34m", "\x1B[39m"),
        magenta: f3("\x1B[35m", "\x1B[39m"),
        cyan: f3("\x1B[36m", "\x1B[39m"),
        white: f3("\x1B[37m", "\x1B[39m"),
        gray: f3("\x1B[90m", "\x1B[39m"),
        bgBlack: f3("\x1B[40m", "\x1B[49m"),
        bgRed: f3("\x1B[41m", "\x1B[49m"),
        bgGreen: f3("\x1B[42m", "\x1B[49m"),
        bgYellow: f3("\x1B[43m", "\x1B[49m"),
        bgBlue: f3("\x1B[44m", "\x1B[49m"),
        bgMagenta: f3("\x1B[45m", "\x1B[49m"),
        bgCyan: f3("\x1B[46m", "\x1B[49m"),
        bgWhite: f3("\x1B[47m", "\x1B[49m"),
        blackBright: f3("\x1B[90m", "\x1B[39m"),
        redBright: f3("\x1B[91m", "\x1B[39m"),
        greenBright: f3("\x1B[92m", "\x1B[39m"),
        yellowBright: f3("\x1B[93m", "\x1B[39m"),
        blueBright: f3("\x1B[94m", "\x1B[39m"),
        magentaBright: f3("\x1B[95m", "\x1B[39m"),
        cyanBright: f3("\x1B[96m", "\x1B[39m"),
        whiteBright: f3("\x1B[97m", "\x1B[39m"),
        bgBlackBright: f3("\x1B[100m", "\x1B[49m"),
        bgRedBright: f3("\x1B[101m", "\x1B[49m"),
        bgGreenBright: f3("\x1B[102m", "\x1B[49m"),
        bgYellowBright: f3("\x1B[103m", "\x1B[49m"),
        bgBlueBright: f3("\x1B[104m", "\x1B[49m"),
        bgMagentaBright: f3("\x1B[105m", "\x1B[49m"),
        bgCyanBright: f3("\x1B[106m", "\x1B[49m"),
        bgWhiteBright: f3("\x1B[107m", "\x1B[49m")
      };
    };
    module2.exports = createColors();
    module2.exports.createColors = createColors;
  }
});

// ../../node_modules/postcss/lib/tokenize.js
var require_tokenize = __commonJS({
  "../../node_modules/postcss/lib/tokenize.js"(exports2, module2) {
    "use strict";
    var SINGLE_QUOTE = "'".charCodeAt(0);
    var DOUBLE_QUOTE = '"'.charCodeAt(0);
    var BACKSLASH3 = "\\".charCodeAt(0);
    var SLASH = "/".charCodeAt(0);
    var NEWLINE2 = "\n".charCodeAt(0);
    var SPACE2 = " ".charCodeAt(0);
    var FEED = "\f".charCodeAt(0);
    var TAB = "	".charCodeAt(0);
    var CR2 = "\r".charCodeAt(0);
    var OPEN_SQUARE = "[".charCodeAt(0);
    var CLOSE_SQUARE = "]".charCodeAt(0);
    var OPEN_PARENTHESES = "(".charCodeAt(0);
    var CLOSE_PARENTHESES = ")".charCodeAt(0);
    var OPEN_CURLY = "{".charCodeAt(0);
    var CLOSE_CURLY = "}".charCodeAt(0);
    var SEMICOLON = ";".charCodeAt(0);
    var ASTERISK = "*".charCodeAt(0);
    var COLON2 = ":".charCodeAt(0);
    var AT = "@".charCodeAt(0);
    var RE_AT_END = /[\t\n\f\r "#'()/;[\\\]{}]/g;
    var RE_WORD_END = /[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g;
    var RE_BAD_BRACKET = /.[\r\n"'(/\\]/;
    var RE_HEX_ESCAPE = /[\da-f]/i;
    module2.exports = function tokenizer(input3, options = {}) {
      let css = input3.css.valueOf();
      let ignore3 = options.ignoreErrors;
      let code7, content3, escape5, next, quote;
      let currentToken, escaped, escapePos, n, prev;
      let length = css.length;
      let pos = 0;
      let buffer2 = [];
      let returned = [];
      function position6() {
        return pos;
      }
      function unclosed(what) {
        throw input3.error("Unclosed " + what, pos);
      }
      function endOfFile() {
        return returned.length === 0 && pos >= length;
      }
      function nextToken(opts) {
        if (returned.length) return returned.pop();
        if (pos >= length) return;
        let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;
        code7 = css.charCodeAt(pos);
        switch (code7) {
          case NEWLINE2:
          case SPACE2:
          case TAB:
          case CR2:
          case FEED: {
            next = pos;
            do {
              next += 1;
              code7 = css.charCodeAt(next);
            } while (code7 === SPACE2 || code7 === NEWLINE2 || code7 === TAB || code7 === CR2 || code7 === FEED);
            currentToken = ["space", css.slice(pos, next)];
            pos = next - 1;
            break;
          }
          case OPEN_SQUARE:
          case CLOSE_SQUARE:
          case OPEN_CURLY:
          case CLOSE_CURLY:
          case COLON2:
          case SEMICOLON:
          case CLOSE_PARENTHESES: {
            let controlChar = String.fromCharCode(code7);
            currentToken = [controlChar, controlChar, pos];
            break;
          }
          case OPEN_PARENTHESES: {
            prev = buffer2.length ? buffer2.pop()[1] : "";
            n = css.charCodeAt(pos + 1);
            if (prev === "url" && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE2 && n !== NEWLINE2 && n !== TAB && n !== FEED && n !== CR2) {
              next = pos;
              do {
                escaped = false;
                next = css.indexOf(")", next + 1);
                if (next === -1) {
                  if (ignore3 || ignoreUnclosed) {
                    next = pos;
                    break;
                  } else {
                    unclosed("bracket");
                  }
                }
                escapePos = next;
                while (css.charCodeAt(escapePos - 1) === BACKSLASH3) {
                  escapePos -= 1;
                  escaped = !escaped;
                }
              } while (escaped);
              currentToken = ["brackets", css.slice(pos, next + 1), pos, next];
              pos = next;
            } else {
              next = css.indexOf(")", pos + 1);
              content3 = css.slice(pos, next + 1);
              if (next === -1 || RE_BAD_BRACKET.test(content3)) {
                currentToken = ["(", "(", pos];
              } else {
                currentToken = ["brackets", content3, pos, next];
                pos = next;
              }
            }
            break;
          }
          case SINGLE_QUOTE:
          case DOUBLE_QUOTE: {
            quote = code7 === SINGLE_QUOTE ? "'" : '"';
            next = pos;
            do {
              escaped = false;
              next = css.indexOf(quote, next + 1);
              if (next === -1) {
                if (ignore3 || ignoreUnclosed) {
                  next = pos + 1;
                  break;
                } else {
                  unclosed("string");
                }
              }
              escapePos = next;
              while (css.charCodeAt(escapePos - 1) === BACKSLASH3) {
                escapePos -= 1;
                escaped = !escaped;
              }
            } while (escaped);
            currentToken = ["string", css.slice(pos, next + 1), pos, next];
            pos = next;
            break;
          }
          case AT: {
            RE_AT_END.lastIndex = pos + 1;
            RE_AT_END.test(css);
            if (RE_AT_END.lastIndex === 0) {
              next = css.length - 1;
            } else {
              next = RE_AT_END.lastIndex - 2;
            }
            currentToken = ["at-word", css.slice(pos, next + 1), pos, next];
            pos = next;
            break;
          }
          case BACKSLASH3: {
            next = pos;
            escape5 = true;
            while (css.charCodeAt(next + 1) === BACKSLASH3) {
              next += 1;
              escape5 = !escape5;
            }
            code7 = css.charCodeAt(next + 1);
            if (escape5 && code7 !== SLASH && code7 !== SPACE2 && code7 !== NEWLINE2 && code7 !== TAB && code7 !== CR2 && code7 !== FEED) {
              next += 1;
              if (RE_HEX_ESCAPE.test(css.charAt(next))) {
                while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {
                  next += 1;
                }
                if (css.charCodeAt(next + 1) === SPACE2) {
                  next += 1;
                }
              }
            }
            currentToken = ["word", css.slice(pos, next + 1), pos, next];
            pos = next;
            break;
          }
          default: {
            if (code7 === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {
              next = css.indexOf("*/", pos + 2) + 1;
              if (next === 0) {
                if (ignore3 || ignoreUnclosed) {
                  next = css.length;
                } else {
                  unclosed("comment");
                }
              }
              currentToken = ["comment", css.slice(pos, next + 1), pos, next];
              pos = next;
            } else {
              RE_WORD_END.lastIndex = pos + 1;
              RE_WORD_END.test(css);
              if (RE_WORD_END.lastIndex === 0) {
                next = css.length - 1;
              } else {
                next = RE_WORD_END.lastIndex - 2;
              }
              currentToken = ["word", css.slice(pos, next + 1), pos, next];
              buffer2.push(currentToken);
              pos = next;
            }
            break;
          }
        }
        pos++;
        return currentToken;
      }
      function back(token) {
        returned.push(token);
      }
      return {
        back,
        endOfFile,
        nextToken,
        position: position6
      };
    };
  }
});

// ../../node_modules/postcss/lib/terminal-highlight.js
var require_terminal_highlight = __commonJS({
  "../../node_modules/postcss/lib/terminal-highlight.js"(exports2, module2) {
    "use strict";
    var pico = require_picocolors();
    var tokenizer = require_tokenize();
    var Input;
    function registerInput(dependant) {
      Input = dependant;
    }
    var HIGHLIGHT_THEME = {
      ";": pico.yellow,
      ":": pico.yellow,
      "(": pico.cyan,
      ")": pico.cyan,
      "[": pico.yellow,
      "]": pico.yellow,
      "{": pico.yellow,
      "}": pico.yellow,
      "at-word": pico.cyan,
      "brackets": pico.cyan,
      "call": pico.cyan,
      "class": pico.yellow,
      "comment": pico.gray,
      "hash": pico.magenta,
      "string": pico.green
    };
    function getTokenType([type2, value], processor2) {
      if (type2 === "word") {
        if (value[0] === ".") {
          return "class";
        }
        if (value[0] === "#") {
          return "hash";
        }
      }
      if (!processor2.endOfFile()) {
        let next = processor2.nextToken();
        processor2.back(next);
        if (next[0] === "brackets" || next[0] === "(") return "call";
      }
      return type2;
    }
    function terminalHighlight(css) {
      let processor2 = tokenizer(new Input(css), { ignoreErrors: true });
      let result = "";
      while (!processor2.endOfFile()) {
        let token = processor2.nextToken();
        let color2 = HIGHLIGHT_THEME[getTokenType(token, processor2)];
        if (color2) {
          result += token[1].split(/\r?\n/).map((i2) => color2(i2)).join("\n");
        } else {
          result += token[1];
        }
      }
      return result;
    }
    terminalHighlight.registerInput = registerInput;
    module2.exports = terminalHighlight;
  }
});

// ../../node_modules/postcss/lib/css-syntax-error.js
var require_css_syntax_error = __commonJS({
  "../../node_modules/postcss/lib/css-syntax-error.js"(exports2, module2) {
    "use strict";
    var pico = require_picocolors();
    var terminalHighlight = require_terminal_highlight();
    var CssSyntaxError = class _CssSyntaxError extends Error {
      constructor(message, line2, column, source2, file, plugin5) {
        super(message);
        this.name = "CssSyntaxError";
        this.reason = message;
        if (file) {
          this.file = file;
        }
        if (source2) {
          this.source = source2;
        }
        if (plugin5) {
          this.plugin = plugin5;
        }
        if (typeof line2 !== "undefined" && typeof column !== "undefined") {
          if (typeof line2 === "number") {
            this.line = line2;
            this.column = column;
          } else {
            this.line = line2.line;
            this.column = line2.column;
            this.endLine = column.line;
            this.endColumn = column.column;
          }
        }
        this.setMessage();
        if (Error.captureStackTrace) {
          Error.captureStackTrace(this, _CssSyntaxError);
        }
      }
      setMessage() {
        this.message = this.plugin ? this.plugin + ": " : "";
        this.message += this.file ? this.file : "<css input>";
        if (typeof this.line !== "undefined") {
          this.message += ":" + this.line + ":" + this.column;
        }
        this.message += ": " + this.reason;
      }
      showSourceCode(color2) {
        if (!this.source) return "";
        let css = this.source;
        if (color2 == null) color2 = pico.isColorSupported;
        let aside2 = (text7) => text7;
        let mark2 = (text7) => text7;
        let highlight = (text7) => text7;
        if (color2) {
          let { bold, gray, red } = pico.createColors(true);
          mark2 = (text7) => bold(red(text7));
          aside2 = (text7) => gray(text7);
          if (terminalHighlight) {
            highlight = (text7) => terminalHighlight(text7);
          }
        }
        let lines = css.split(/\r?\n/);
        let start = Math.max(this.line - 3, 0);
        let end = Math.min(this.line + 2, lines.length);
        let maxWidth = String(end).length;
        return lines.slice(start, end).map((line2, index4) => {
          let number2 = start + 1 + index4;
          let gutter = " " + (" " + number2).slice(-maxWidth) + " | ";
          if (number2 === this.line) {
            if (line2.length > 160) {
              let padding2 = 20;
              let subLineStart = Math.max(0, this.column - padding2);
              let subLineEnd = Math.max(
                this.column + padding2,
                this.endColumn + padding2
              );
              let subLine = line2.slice(subLineStart, subLineEnd);
              let spacing3 = aside2(gutter.replace(/\d/g, " ")) + line2.slice(0, Math.min(this.column - 1, padding2 - 1)).replace(/[^\t]/g, " ");
              return mark2(">") + aside2(gutter) + highlight(subLine) + "\n " + spacing3 + mark2("^");
            }
            let spacing2 = aside2(gutter.replace(/\d/g, " ")) + line2.slice(0, this.column - 1).replace(/[^\t]/g, " ");
            return mark2(">") + aside2(gutter) + highlight(line2) + "\n " + spacing2 + mark2("^");
          }
          return " " + aside2(gutter) + highlight(line2);
        }).join("\n");
      }
      toString() {
        let code7 = this.showSourceCode();
        if (code7) {
          code7 = "\n\n" + code7 + "\n";
        }
        return this.name + ": " + this.message + code7;
      }
    };
    module2.exports = CssSyntaxError;
    CssSyntaxError.default = CssSyntaxError;
  }
});

// ../../node_modules/postcss/lib/stringifier.js
var require_stringifier = __commonJS({
  "../../node_modules/postcss/lib/stringifier.js"(exports2, module2) {
    "use strict";
    var DEFAULT_RAW = {
      after: "\n",
      beforeClose: "\n",
      beforeComment: "\n",
      beforeDecl: "\n",
      beforeOpen: " ",
      beforeRule: "\n",
      colon: ": ",
      commentLeft: " ",
      commentRight: " ",
      emptyBody: "",
      indent: "    ",
      semicolon: false
    };
    function capitalize2(str2) {
      return str2[0].toUpperCase() + str2.slice(1);
    }
    var Stringifier = class {
      constructor(builder) {
        this.builder = builder;
      }
      atrule(node3, semicolon) {
        let name3 = "@" + node3.name;
        let params = node3.params ? this.rawValue(node3, "params") : "";
        if (typeof node3.raws.afterName !== "undefined") {
          name3 += node3.raws.afterName;
        } else if (params) {
          name3 += " ";
        }
        if (node3.nodes) {
          this.block(node3, name3 + params);
        } else {
          let end = (node3.raws.between || "") + (semicolon ? ";" : "");
          this.builder(name3 + params + end, node3);
        }
      }
      beforeAfter(node3, detect2) {
        let value;
        if (node3.type === "decl") {
          value = this.raw(node3, null, "beforeDecl");
        } else if (node3.type === "comment") {
          value = this.raw(node3, null, "beforeComment");
        } else if (detect2 === "before") {
          value = this.raw(node3, null, "beforeRule");
        } else {
          value = this.raw(node3, null, "beforeClose");
        }
        let buf = node3.parent;
        let depth = 0;
        while (buf && buf.type !== "root") {
          depth += 1;
          buf = buf.parent;
        }
        if (value.includes("\n")) {
          let indent2 = this.raw(node3, null, "indent");
          if (indent2.length) {
            for (let step = 0; step < depth; step++) value += indent2;
          }
        }
        return value;
      }
      block(node3, start) {
        let between2 = this.raw(node3, "between", "beforeOpen");
        this.builder(start + between2 + "{", node3, "start");
        let after;
        if (node3.nodes && node3.nodes.length) {
          this.body(node3);
          after = this.raw(node3, "after");
        } else {
          after = this.raw(node3, "after", "emptyBody");
        }
        if (after) this.builder(after);
        this.builder("}", node3, "end");
      }
      body(node3) {
        let last = node3.nodes.length - 1;
        while (last > 0) {
          if (node3.nodes[last].type !== "comment") break;
          last -= 1;
        }
        let semicolon = this.raw(node3, "semicolon");
        for (let i2 = 0; i2 < node3.nodes.length; i2++) {
          let child = node3.nodes[i2];
          let before = this.raw(child, "before");
          if (before) this.builder(before);
          this.stringify(child, last !== i2 || semicolon);
        }
      }
      comment(node3) {
        let left2 = this.raw(node3, "left", "commentLeft");
        let right2 = this.raw(node3, "right", "commentRight");
        this.builder("/*" + left2 + node3.text + right2 + "*/", node3);
      }
      decl(node3, semicolon) {
        let between2 = this.raw(node3, "between", "colon");
        let string2 = node3.prop + between2 + this.rawValue(node3, "value");
        if (node3.important) {
          string2 += node3.raws.important || " !important";
        }
        if (semicolon) string2 += ";";
        this.builder(string2, node3);
      }
      document(node3) {
        this.body(node3);
      }
      raw(node3, own18, detect2) {
        let value;
        if (!detect2) detect2 = own18;
        if (own18) {
          value = node3.raws[own18];
          if (typeof value !== "undefined") return value;
        }
        let parent2 = node3.parent;
        if (detect2 === "before") {
          if (!parent2 || parent2.type === "root" && parent2.first === node3) {
            return "";
          }
          if (parent2 && parent2.type === "document") {
            return "";
          }
        }
        if (!parent2) return DEFAULT_RAW[detect2];
        let root6 = node3.root();
        if (!root6.rawCache) root6.rawCache = {};
        if (typeof root6.rawCache[detect2] !== "undefined") {
          return root6.rawCache[detect2];
        }
        if (detect2 === "before" || detect2 === "after") {
          return this.beforeAfter(node3, detect2);
        } else {
          let method = "raw" + capitalize2(detect2);
          if (this[method]) {
            value = this[method](root6, node3);
          } else {
            root6.walk((i2) => {
              value = i2.raws[own18];
              if (typeof value !== "undefined") return false;
            });
          }
        }
        if (typeof value === "undefined") value = DEFAULT_RAW[detect2];
        root6.rawCache[detect2] = value;
        return value;
      }
      rawBeforeClose(root6) {
        let value;
        root6.walk((i2) => {
          if (i2.nodes && i2.nodes.length > 0) {
            if (typeof i2.raws.after !== "undefined") {
              value = i2.raws.after;
              if (value.includes("\n")) {
                value = value.replace(/[^\n]+$/, "");
              }
              return false;
            }
          }
        });
        if (value) value = value.replace(/\S/g, "");
        return value;
      }
      rawBeforeComment(root6, node3) {
        let value;
        root6.walkComments((i2) => {
          if (typeof i2.raws.before !== "undefined") {
            value = i2.raws.before;
            if (value.includes("\n")) {
              value = value.replace(/[^\n]+$/, "");
            }
            return false;
          }
        });
        if (typeof value === "undefined") {
          value = this.raw(node3, null, "beforeDecl");
        } else if (value) {
          value = value.replace(/\S/g, "");
        }
        return value;
      }
      rawBeforeDecl(root6, node3) {
        let value;
        root6.walkDecls((i2) => {
          if (typeof i2.raws.before !== "undefined") {
            value = i2.raws.before;
            if (value.includes("\n")) {
              value = value.replace(/[^\n]+$/, "");
            }
            return false;
          }
        });
        if (typeof value === "undefined") {
          value = this.raw(node3, null, "beforeRule");
        } else if (value) {
          value = value.replace(/\S/g, "");
        }
        return value;
      }
      rawBeforeOpen(root6) {
        let value;
        root6.walk((i2) => {
          if (i2.type !== "decl") {
            value = i2.raws.between;
            if (typeof value !== "undefined") return false;
          }
        });
        return value;
      }
      rawBeforeRule(root6) {
        let value;
        root6.walk((i2) => {
          if (i2.nodes && (i2.parent !== root6 || root6.first !== i2)) {
            if (typeof i2.raws.before !== "undefined") {
              value = i2.raws.before;
              if (value.includes("\n")) {
                value = value.replace(/[^\n]+$/, "");
              }
              return false;
            }
          }
        });
        if (value) value = value.replace(/\S/g, "");
        return value;
      }
      rawColon(root6) {
        let value;
        root6.walkDecls((i2) => {
          if (typeof i2.raws.between !== "undefined") {
            value = i2.raws.between.replace(/[^\s:]/g, "");
            return false;
          }
        });
        return value;
      }
      rawEmptyBody(root6) {
        let value;
        root6.walk((i2) => {
          if (i2.nodes && i2.nodes.length === 0) {
            value = i2.raws.after;
            if (typeof value !== "undefined") return false;
          }
        });
        return value;
      }
      rawIndent(root6) {
        if (root6.raws.indent) return root6.raws.indent;
        let value;
        root6.walk((i2) => {
          let p5 = i2.parent;
          if (p5 && p5 !== root6 && p5.parent && p5.parent === root6) {
            if (typeof i2.raws.before !== "undefined") {
              let parts = i2.raws.before.split("\n");
              value = parts[parts.length - 1];
              value = value.replace(/\S/g, "");
              return false;
            }
          }
        });
        return value;
      }
      rawSemicolon(root6) {
        let value;
        root6.walk((i2) => {
          if (i2.nodes && i2.nodes.length && i2.last.type === "decl") {
            value = i2.raws.semicolon;
            if (typeof value !== "undefined") return false;
          }
        });
        return value;
      }
      rawValue(node3, prop) {
        let value = node3[prop];
        let raw2 = node3.raws[prop];
        if (raw2 && raw2.value === value) {
          return raw2.raw;
        }
        return value;
      }
      root(node3) {
        this.body(node3);
        if (node3.raws.after) this.builder(node3.raws.after);
      }
      rule(node3) {
        this.block(node3, this.rawValue(node3, "selector"));
        if (node3.raws.ownSemicolon) {
          this.builder(node3.raws.ownSemicolon, node3, "end");
        }
      }
      stringify(node3, semicolon) {
        if (!this[node3.type]) {
          throw new Error(
            "Unknown AST node type " + node3.type + ". Maybe you need to change PostCSS stringifier."
          );
        }
        this[node3.type](node3, semicolon);
      }
    };
    module2.exports = Stringifier;
    Stringifier.default = Stringifier;
  }
});

// ../../node_modules/postcss/lib/stringify.js
var require_stringify2 = __commonJS({
  "../../node_modules/postcss/lib/stringify.js"(exports2, module2) {
    "use strict";
    var Stringifier = require_stringifier();
    function stringify4(node3, builder) {
      let str2 = new Stringifier(builder);
      str2.stringify(node3);
    }
    module2.exports = stringify4;
    stringify4.default = stringify4;
  }
});

// ../../node_modules/postcss/lib/symbols.js
var require_symbols = __commonJS({
  "../../node_modules/postcss/lib/symbols.js"(exports2, module2) {
    "use strict";
    module2.exports.isClean = Symbol("isClean");
    module2.exports.my = Symbol("my");
  }
});

// ../../node_modules/postcss/lib/node.js
var require_node2 = __commonJS({
  "../../node_modules/postcss/lib/node.js"(exports2, module2) {
    "use strict";
    var CssSyntaxError = require_css_syntax_error();
    var Stringifier = require_stringifier();
    var stringify4 = require_stringify2();
    var { isClean, my } = require_symbols();
    function cloneNode(obj, parent2) {
      let cloned = new obj.constructor();
      for (let i2 in obj) {
        if (!Object.prototype.hasOwnProperty.call(obj, i2)) {
          continue;
        }
        if (i2 === "proxyCache") continue;
        let value = obj[i2];
        let type2 = typeof value;
        if (i2 === "parent" && type2 === "object") {
          if (parent2) cloned[i2] = parent2;
        } else if (i2 === "source") {
          cloned[i2] = value;
        } else if (Array.isArray(value)) {
          cloned[i2] = value.map((j) => cloneNode(j, cloned));
        } else {
          if (type2 === "object" && value !== null) value = cloneNode(value);
          cloned[i2] = value;
        }
      }
      return cloned;
    }
    function sourceOffset(inputCSS, position6) {
      if (position6 && typeof position6.offset !== "undefined") {
        return position6.offset;
      }
      let column = 1;
      let line2 = 1;
      let offset = 0;
      for (let i2 = 0; i2 < inputCSS.length; i2++) {
        if (line2 === position6.line && column === position6.column) {
          offset = i2;
          break;
        }
        if (inputCSS[i2] === "\n") {
          column = 1;
          line2 += 1;
        } else {
          column += 1;
        }
      }
      return offset;
    }
    var Node = class {
      get proxyOf() {
        return this;
      }
      constructor(defaults3 = {}) {
        this.raws = {};
        this[isClean] = false;
        this[my] = true;
        for (let name3 in defaults3) {
          if (name3 === "nodes") {
            this.nodes = [];
            for (let node3 of defaults3[name3]) {
              if (typeof node3.clone === "function") {
                this.append(node3.clone());
              } else {
                this.append(node3);
              }
            }
          } else {
            this[name3] = defaults3[name3];
          }
        }
      }
      addToError(error) {
        error.postcssNode = this;
        if (error.stack && this.source && /\n\s{4}at /.test(error.stack)) {
          let s5 = this.source;
          error.stack = error.stack.replace(
            /\n\s{4}at /,
            `$&${s5.input.from}:${s5.start.line}:${s5.start.column}$&`
          );
        }
        return error;
      }
      after(add2) {
        this.parent.insertAfter(this, add2);
        return this;
      }
      assign(overrides = {}) {
        for (let name3 in overrides) {
          this[name3] = overrides[name3];
        }
        return this;
      }
      before(add2) {
        this.parent.insertBefore(this, add2);
        return this;
      }
      cleanRaws(keepBetween) {
        delete this.raws.before;
        delete this.raws.after;
        if (!keepBetween) delete this.raws.between;
      }
      clone(overrides = {}) {
        let cloned = cloneNode(this);
        for (let name3 in overrides) {
          cloned[name3] = overrides[name3];
        }
        return cloned;
      }
      cloneAfter(overrides = {}) {
        let cloned = this.clone(overrides);
        this.parent.insertAfter(this, cloned);
        return cloned;
      }
      cloneBefore(overrides = {}) {
        let cloned = this.clone(overrides);
        this.parent.insertBefore(this, cloned);
        return cloned;
      }
      error(message, opts = {}) {
        if (this.source) {
          let { end, start } = this.rangeBy(opts);
          return this.source.input.error(
            message,
            { column: start.column, line: start.line },
            { column: end.column, line: end.line },
            opts
          );
        }
        return new CssSyntaxError(message);
      }
      getProxyProcessor() {
        return {
          get(node3, prop) {
            if (prop === "proxyOf") {
              return node3;
            } else if (prop === "root") {
              return () => node3.root().toProxy();
            } else {
              return node3[prop];
            }
          },
          set(node3, prop, value) {
            if (node3[prop] === value) return true;
            node3[prop] = value;
            if (prop === "prop" || prop === "value" || prop === "name" || prop === "params" || prop === "important" || /* c8 ignore next */
            prop === "text") {
              node3.markDirty();
            }
            return true;
          }
        };
      }
      /* c8 ignore next 3 */
      markClean() {
        this[isClean] = true;
      }
      markDirty() {
        if (this[isClean]) {
          this[isClean] = false;
          let next = this;
          while (next = next.parent) {
            next[isClean] = false;
          }
        }
      }
      next() {
        if (!this.parent) return void 0;
        let index4 = this.parent.index(this);
        return this.parent.nodes[index4 + 1];
      }
      positionBy(opts = {}) {
        let pos = this.source.start;
        if (opts.index) {
          pos = this.positionInside(opts.index);
        } else if (opts.word) {
          let inputString = "document" in this.source.input ? this.source.input.document : this.source.input.css;
          let stringRepresentation = inputString.slice(
            sourceOffset(inputString, this.source.start),
            sourceOffset(inputString, this.source.end)
          );
          let index4 = stringRepresentation.indexOf(opts.word);
          if (index4 !== -1) pos = this.positionInside(index4);
        }
        return pos;
      }
      positionInside(index4) {
        let column = this.source.start.column;
        let line2 = this.source.start.line;
        let inputString = "document" in this.source.input ? this.source.input.document : this.source.input.css;
        let offset = sourceOffset(inputString, this.source.start);
        let end = offset + index4;
        for (let i2 = offset; i2 < end; i2++) {
          if (inputString[i2] === "\n") {
            column = 1;
            line2 += 1;
          } else {
            column += 1;
          }
        }
        return { column, line: line2, offset: end };
      }
      prev() {
        if (!this.parent) return void 0;
        let index4 = this.parent.index(this);
        return this.parent.nodes[index4 - 1];
      }
      rangeBy(opts = {}) {
        let inputString = "document" in this.source.input ? this.source.input.document : this.source.input.css;
        let start = {
          column: this.source.start.column,
          line: this.source.start.line,
          offset: sourceOffset(inputString, this.source.start)
        };
        let end = this.source.end ? {
          column: this.source.end.column + 1,
          line: this.source.end.line,
          offset: typeof this.source.end.offset === "number" ? (
            // `source.end.offset` is exclusive, so we don't need to add 1
            this.source.end.offset
          ) : (
            // Since line/column in this.source.end is inclusive,
            // the `sourceOffset(... , this.source.end)` returns an inclusive offset.
            // So, we add 1 to convert it to exclusive.
            sourceOffset(inputString, this.source.end) + 1
          )
        } : {
          column: start.column + 1,
          line: start.line,
          offset: start.offset + 1
        };
        if (opts.word) {
          let stringRepresentation = inputString.slice(
            sourceOffset(inputString, this.source.start),
            sourceOffset(inputString, this.source.end)
          );
          let index4 = stringRepresentation.indexOf(opts.word);
          if (index4 !== -1) {
            start = this.positionInside(index4);
            end = this.positionInside(index4 + opts.word.length);
          }
        } else {
          if (opts.start) {
            start = {
              column: opts.start.column,
              line: opts.start.line,
              offset: sourceOffset(inputString, opts.start)
            };
          } else if (opts.index) {
            start = this.positionInside(opts.index);
          }
          if (opts.end) {
            end = {
              column: opts.end.column,
              line: opts.end.line,
              offset: sourceOffset(inputString, opts.end)
            };
          } else if (typeof opts.endIndex === "number") {
            end = this.positionInside(opts.endIndex);
          } else if (opts.index) {
            end = this.positionInside(opts.index + 1);
          }
        }
        if (end.line < start.line || end.line === start.line && end.column <= start.column) {
          end = {
            column: start.column + 1,
            line: start.line,
            offset: start.offset + 1
          };
        }
        return { end, start };
      }
      raw(prop, defaultType) {
        let str2 = new Stringifier();
        return str2.raw(this, prop, defaultType);
      }
      remove() {
        if (this.parent) {
          this.parent.removeChild(this);
        }
        this.parent = void 0;
        return this;
      }
      replaceWith(...nodes) {
        if (this.parent) {
          let bookmark = this;
          let foundSelf = false;
          for (let node3 of nodes) {
            if (node3 === this) {
              foundSelf = true;
            } else if (foundSelf) {
              this.parent.insertAfter(bookmark, node3);
              bookmark = node3;
            } else {
              this.parent.insertBefore(bookmark, node3);
            }
          }
          if (!foundSelf) {
            this.remove();
          }
        }
        return this;
      }
      root() {
        let result = this;
        while (result.parent && result.parent.type !== "document") {
          result = result.parent;
        }
        return result;
      }
      toJSON(_2, inputs) {
        let fixed = {};
        let emitInputs = inputs == null;
        inputs = inputs || /* @__PURE__ */ new Map();
        let inputsNextIndex = 0;
        for (let name3 in this) {
          if (!Object.prototype.hasOwnProperty.call(this, name3)) {
            continue;
          }
          if (name3 === "parent" || name3 === "proxyCache") continue;
          let value = this[name3];
          if (Array.isArray(value)) {
            fixed[name3] = value.map((i2) => {
              if (typeof i2 === "object" && i2.toJSON) {
                return i2.toJSON(null, inputs);
              } else {
                return i2;
              }
            });
          } else if (typeof value === "object" && value.toJSON) {
            fixed[name3] = value.toJSON(null, inputs);
          } else if (name3 === "source") {
            if (value == null) continue;
            let inputId = inputs.get(value.input);
            if (inputId == null) {
              inputId = inputsNextIndex;
              inputs.set(value.input, inputsNextIndex);
              inputsNextIndex++;
            }
            fixed[name3] = {
              end: value.end,
              inputId,
              start: value.start
            };
          } else {
            fixed[name3] = value;
          }
        }
        if (emitInputs) {
          fixed.inputs = [...inputs.keys()].map((input3) => input3.toJSON());
        }
        return fixed;
      }
      toProxy() {
        if (!this.proxyCache) {
          this.proxyCache = new Proxy(this, this.getProxyProcessor());
        }
        return this.proxyCache;
      }
      toString(stringifier = stringify4) {
        if (stringifier.stringify) stringifier = stringifier.stringify;
        let result = "";
        stringifier(this, (i2) => {
          result += i2;
        });
        return result;
      }
      warn(result, text7, opts = {}) {
        let data = { node: this };
        for (let i2 in opts) data[i2] = opts[i2];
        return result.warn(text7, data);
      }
    };
    module2.exports = Node;
    Node.default = Node;
  }
});

// ../../node_modules/postcss/lib/comment.js
var require_comment = __commonJS({
  "../../node_modules/postcss/lib/comment.js"(exports2, module2) {
    "use strict";
    var Node = require_node2();
    var Comment = class extends Node {
      constructor(defaults3) {
        super(defaults3);
        this.type = "comment";
      }
    };
    module2.exports = Comment;
    Comment.default = Comment;
  }
});

// ../../node_modules/postcss/lib/declaration.js
var require_declaration = __commonJS({
  "../../node_modules/postcss/lib/declaration.js"(exports2, module2) {
    "use strict";
    var Node = require_node2();
    var Declaration = class extends Node {
      get variable() {
        return this.prop.startsWith("--") || this.prop[0] === "$";
      }
      constructor(defaults3) {
        if (defaults3 && typeof defaults3.value !== "undefined" && typeof defaults3.value !== "string") {
          defaults3 = { ...defaults3, value: String(defaults3.value) };
        }
        super(defaults3);
        this.type = "decl";
      }
    };
    module2.exports = Declaration;
    Declaration.default = Declaration;
  }
});

// ../../node_modules/postcss/lib/container.js
var require_container = __commonJS({
  "../../node_modules/postcss/lib/container.js"(exports2, module2) {
    "use strict";
    var Comment = require_comment();
    var Declaration = require_declaration();
    var Node = require_node2();
    var { isClean, my } = require_symbols();
    var AtRule;
    var parse16;
    var Root;
    var Rule;
    function cleanSource(nodes) {
      return nodes.map((i2) => {
        if (i2.nodes) i2.nodes = cleanSource(i2.nodes);
        delete i2.source;
        return i2;
      });
    }
    function markTreeDirty(node3) {
      node3[isClean] = false;
      if (node3.proxyOf.nodes) {
        for (let i2 of node3.proxyOf.nodes) {
          markTreeDirty(i2);
        }
      }
    }
    var Container = class _Container extends Node {
      get first() {
        if (!this.proxyOf.nodes) return void 0;
        return this.proxyOf.nodes[0];
      }
      get last() {
        if (!this.proxyOf.nodes) return void 0;
        return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];
      }
      append(...children) {
        for (let child of children) {
          let nodes = this.normalize(child, this.last);
          for (let node3 of nodes) this.proxyOf.nodes.push(node3);
        }
        this.markDirty();
        return this;
      }
      cleanRaws(keepBetween) {
        super.cleanRaws(keepBetween);
        if (this.nodes) {
          for (let node3 of this.nodes) node3.cleanRaws(keepBetween);
        }
      }
      each(callback) {
        if (!this.proxyOf.nodes) return void 0;
        let iterator = this.getIterator();
        let index4, result;
        while (this.indexes[iterator] < this.proxyOf.nodes.length) {
          index4 = this.indexes[iterator];
          result = callback(this.proxyOf.nodes[index4], index4);
          if (result === false) break;
          this.indexes[iterator] += 1;
        }
        delete this.indexes[iterator];
        return result;
      }
      every(condition) {
        return this.nodes.every(condition);
      }
      getIterator() {
        if (!this.lastEach) this.lastEach = 0;
        if (!this.indexes) this.indexes = {};
        this.lastEach += 1;
        let iterator = this.lastEach;
        this.indexes[iterator] = 0;
        return iterator;
      }
      getProxyProcessor() {
        return {
          get(node3, prop) {
            if (prop === "proxyOf") {
              return node3;
            } else if (!node3[prop]) {
              return node3[prop];
            } else if (prop === "each" || typeof prop === "string" && prop.startsWith("walk")) {
              return (...args) => {
                return node3[prop](
                  ...args.map((i2) => {
                    if (typeof i2 === "function") {
                      return (child, index4) => i2(child.toProxy(), index4);
                    } else {
                      return i2;
                    }
                  })
                );
              };
            } else if (prop === "every" || prop === "some") {
              return (cb) => {
                return node3[prop](
                  (child, ...other) => cb(child.toProxy(), ...other)
                );
              };
            } else if (prop === "root") {
              return () => node3.root().toProxy();
            } else if (prop === "nodes") {
              return node3.nodes.map((i2) => i2.toProxy());
            } else if (prop === "first" || prop === "last") {
              return node3[prop].toProxy();
            } else {
              return node3[prop];
            }
          },
          set(node3, prop, value) {
            if (node3[prop] === value) return true;
            node3[prop] = value;
            if (prop === "name" || prop === "params" || prop === "selector") {
              node3.markDirty();
            }
            return true;
          }
        };
      }
      index(child) {
        if (typeof child === "number") return child;
        if (child.proxyOf) child = child.proxyOf;
        return this.proxyOf.nodes.indexOf(child);
      }
      insertAfter(exist, add2) {
        let existIndex = this.index(exist);
        let nodes = this.normalize(add2, this.proxyOf.nodes[existIndex]).reverse();
        existIndex = this.index(exist);
        for (let node3 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node3);
        let index4;
        for (let id in this.indexes) {
          index4 = this.indexes[id];
          if (existIndex < index4) {
            this.indexes[id] = index4 + nodes.length;
          }
        }
        this.markDirty();
        return this;
      }
      insertBefore(exist, add2) {
        let existIndex = this.index(exist);
        let type2 = existIndex === 0 ? "prepend" : false;
        let nodes = this.normalize(
          add2,
          this.proxyOf.nodes[existIndex],
          type2
        ).reverse();
        existIndex = this.index(exist);
        for (let node3 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node3);
        let index4;
        for (let id in this.indexes) {
          index4 = this.indexes[id];
          if (existIndex <= index4) {
            this.indexes[id] = index4 + nodes.length;
          }
        }
        this.markDirty();
        return this;
      }
      normalize(nodes, sample) {
        if (typeof nodes === "string") {
          nodes = cleanSource(parse16(nodes).nodes);
        } else if (typeof nodes === "undefined") {
          nodes = [];
        } else if (Array.isArray(nodes)) {
          nodes = nodes.slice(0);
          for (let i2 of nodes) {
            if (i2.parent) i2.parent.removeChild(i2, "ignore");
          }
        } else if (nodes.type === "root" && this.type !== "document") {
          nodes = nodes.nodes.slice(0);
          for (let i2 of nodes) {
            if (i2.parent) i2.parent.removeChild(i2, "ignore");
          }
        } else if (nodes.type) {
          nodes = [nodes];
        } else if (nodes.prop) {
          if (typeof nodes.value === "undefined") {
            throw new Error("Value field is missed in node creation");
          } else if (typeof nodes.value !== "string") {
            nodes.value = String(nodes.value);
          }
          nodes = [new Declaration(nodes)];
        } else if (nodes.selector || nodes.selectors) {
          nodes = [new Rule(nodes)];
        } else if (nodes.name) {
          nodes = [new AtRule(nodes)];
        } else if (nodes.text) {
          nodes = [new Comment(nodes)];
        } else {
          throw new Error("Unknown node type in node creation");
        }
        let processed = nodes.map((i2) => {
          if (!i2[my]) _Container.rebuild(i2);
          i2 = i2.proxyOf;
          if (i2.parent) i2.parent.removeChild(i2);
          if (i2[isClean]) markTreeDirty(i2);
          if (!i2.raws) i2.raws = {};
          if (typeof i2.raws.before === "undefined") {
            if (sample && typeof sample.raws.before !== "undefined") {
              i2.raws.before = sample.raws.before.replace(/\S/g, "");
            }
          }
          i2.parent = this.proxyOf;
          return i2;
        });
        return processed;
      }
      prepend(...children) {
        children = children.reverse();
        for (let child of children) {
          let nodes = this.normalize(child, this.first, "prepend").reverse();
          for (let node3 of nodes) this.proxyOf.nodes.unshift(node3);
          for (let id in this.indexes) {
            this.indexes[id] = this.indexes[id] + nodes.length;
          }
        }
        this.markDirty();
        return this;
      }
      push(child) {
        child.parent = this;
        this.proxyOf.nodes.push(child);
        return this;
      }
      removeAll() {
        for (let node3 of this.proxyOf.nodes) node3.parent = void 0;
        this.proxyOf.nodes = [];
        this.markDirty();
        return this;
      }
      removeChild(child) {
        child = this.index(child);
        this.proxyOf.nodes[child].parent = void 0;
        this.proxyOf.nodes.splice(child, 1);
        let index4;
        for (let id in this.indexes) {
          index4 = this.indexes[id];
          if (index4 >= child) {
            this.indexes[id] = index4 - 1;
          }
        }
        this.markDirty();
        return this;
      }
      replaceValues(pattern, opts, callback) {
        if (!callback) {
          callback = opts;
          opts = {};
        }
        this.walkDecls((decl) => {
          if (opts.props && !opts.props.includes(decl.prop)) return;
          if (opts.fast && !decl.value.includes(opts.fast)) return;
          decl.value = decl.value.replace(pattern, callback);
        });
        this.markDirty();
        return this;
      }
      some(condition) {
        return this.nodes.some(condition);
      }
      walk(callback) {
        return this.each((child, i2) => {
          let result;
          try {
            result = callback(child, i2);
          } catch (e2) {
            throw child.addToError(e2);
          }
          if (result !== false && child.walk) {
            result = child.walk(callback);
          }
          return result;
        });
      }
      walkAtRules(name3, callback) {
        if (!callback) {
          callback = name3;
          return this.walk((child, i2) => {
            if (child.type === "atrule") {
              return callback(child, i2);
            }
          });
        }
        if (name3 instanceof RegExp) {
          return this.walk((child, i2) => {
            if (child.type === "atrule" && name3.test(child.name)) {
              return callback(child, i2);
            }
          });
        }
        return this.walk((child, i2) => {
          if (child.type === "atrule" && child.name === name3) {
            return callback(child, i2);
          }
        });
      }
      walkComments(callback) {
        return this.walk((child, i2) => {
          if (child.type === "comment") {
            return callback(child, i2);
          }
        });
      }
      walkDecls(prop, callback) {
        if (!callback) {
          callback = prop;
          return this.walk((child, i2) => {
            if (child.type === "decl") {
              return callback(child, i2);
            }
          });
        }
        if (prop instanceof RegExp) {
          return this.walk((child, i2) => {
            if (child.type === "decl" && prop.test(child.prop)) {
              return callback(child, i2);
            }
          });
        }
        return this.walk((child, i2) => {
          if (child.type === "decl" && child.prop === prop) {
            return callback(child, i2);
          }
        });
      }
      walkRules(selector, callback) {
        if (!callback) {
          callback = selector;
          return this.walk((child, i2) => {
            if (child.type === "rule") {
              return callback(child, i2);
            }
          });
        }
        if (selector instanceof RegExp) {
          return this.walk((child, i2) => {
            if (child.type === "rule" && selector.test(child.selector)) {
              return callback(child, i2);
            }
          });
        }
        return this.walk((child, i2) => {
          if (child.type === "rule" && child.selector === selector) {
            return callback(child, i2);
          }
        });
      }
    };
    Container.registerParse = (dependant) => {
      parse16 = dependant;
    };
    Container.registerRule = (dependant) => {
      Rule = dependant;
    };
    Container.registerAtRule = (dependant) => {
      AtRule = dependant;
    };
    Container.registerRoot = (dependant) => {
      Root = dependant;
    };
    module2.exports = Container;
    Container.default = Container;
    Container.rebuild = (node3) => {
      if (node3.type === "atrule") {
        Object.setPrototypeOf(node3, AtRule.prototype);
      } else if (node3.type === "rule") {
        Object.setPrototypeOf(node3, Rule.prototype);
      } else if (node3.type === "decl") {
        Object.setPrototypeOf(node3, Declaration.prototype);
      } else if (node3.type === "comment") {
        Object.setPrototypeOf(node3, Comment.prototype);
      } else if (node3.type === "root") {
        Object.setPrototypeOf(node3, Root.prototype);
      }
      node3[my] = true;
      if (node3.nodes) {
        node3.nodes.forEach((child) => {
          Container.rebuild(child);
        });
      }
    };
  }
});

// ../../node_modules/postcss/lib/at-rule.js
var require_at_rule = __commonJS({
  "../../node_modules/postcss/lib/at-rule.js"(exports2, module2) {
    "use strict";
    var Container = require_container();
    var AtRule = class extends Container {
      constructor(defaults3) {
        super(defaults3);
        this.type = "atrule";
      }
      append(...children) {
        if (!this.proxyOf.nodes) this.nodes = [];
        return super.append(...children);
      }
      prepend(...children) {
        if (!this.proxyOf.nodes) this.nodes = [];
        return super.prepend(...children);
      }
    };
    module2.exports = AtRule;
    AtRule.default = AtRule;
    Container.registerAtRule(AtRule);
  }
});

// ../../node_modules/postcss/lib/document.js
var require_document = __commonJS({
  "../../node_modules/postcss/lib/document.js"(exports2, module2) {
    "use strict";
    var Container = require_container();
    var LazyResult;
    var Processor2;
    var Document2 = class extends Container {
      constructor(defaults3) {
        super({ type: "document", ...defaults3 });
        if (!this.nodes) {
          this.nodes = [];
        }
      }
      toResult(opts = {}) {
        let lazy = new LazyResult(new Processor2(), this, opts);
        return lazy.stringify();
      }
    };
    Document2.registerLazyResult = (dependant) => {
      LazyResult = dependant;
    };
    Document2.registerProcessor = (dependant) => {
      Processor2 = dependant;
    };
    module2.exports = Document2;
    Document2.default = Document2;
  }
});

// ../../node_modules/postcss/node_modules/nanoid/non-secure/index.cjs
var require_non_secure = __commonJS({
  "../../node_modules/postcss/node_modules/nanoid/non-secure/index.cjs"(exports2, module2) {
    var urlAlphabet3 = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
    var customAlphabet2 = (alphabet2, defaultSize = 21) => {
      return (size = defaultSize) => {
        let id = "";
        let i2 = size | 0;
        while (i2--) {
          id += alphabet2[Math.random() * alphabet2.length | 0];
        }
        return id;
      };
    };
    var nanoid3 = (size = 21) => {
      let id = "";
      let i2 = size | 0;
      while (i2--) {
        id += urlAlphabet3[Math.random() * 64 | 0];
      }
      return id;
    };
    module2.exports = { nanoid: nanoid3, customAlphabet: customAlphabet2 };
  }
});

// ../../node_modules/source-map-js/lib/base64.js
var require_base64 = __commonJS({
  "../../node_modules/source-map-js/lib/base64.js"(exports2) {
    var intToCharMap = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
    exports2.encode = function(number2) {
      if (0 <= number2 && number2 < intToCharMap.length) {
        return intToCharMap[number2];
      }
      throw new TypeError("Must be between 0 and 63: " + number2);
    };
    exports2.decode = function(charCode) {
      var bigA = 65;
      var bigZ = 90;
      var littleA = 97;
      var littleZ = 122;
      var zero = 48;
      var nine = 57;
      var plus = 43;
      var slash = 47;
      var littleOffset = 26;
      var numberOffset = 52;
      if (bigA <= charCode && charCode <= bigZ) {
        return charCode - bigA;
      }
      if (littleA <= charCode && charCode <= littleZ) {
        return charCode - littleA + littleOffset;
      }
      if (zero <= charCode && charCode <= nine) {
        return charCode - zero + numberOffset;
      }
      if (charCode == plus) {
        return 62;
      }
      if (charCode == slash) {
        return 63;
      }
      return -1;
    };
  }
});

// ../../node_modules/source-map-js/lib/base64-vlq.js
var require_base64_vlq = __commonJS({
  "../../node_modules/source-map-js/lib/base64-vlq.js"(exports2) {
    var base64 = require_base64();
    var VLQ_BASE_SHIFT = 5;
    var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
    var VLQ_BASE_MASK = VLQ_BASE - 1;
    var VLQ_CONTINUATION_BIT = VLQ_BASE;
    function toVLQSigned(aValue) {
      return aValue < 0 ? (-aValue << 1) + 1 : (aValue << 1) + 0;
    }
    function fromVLQSigned(aValue) {
      var isNegative = (aValue & 1) === 1;
      var shifted = aValue >> 1;
      return isNegative ? -shifted : shifted;
    }
    exports2.encode = function base64VLQ_encode(aValue) {
      var encoded = "";
      var digit;
      var vlq = toVLQSigned(aValue);
      do {
        digit = vlq & VLQ_BASE_MASK;
        vlq >>>= VLQ_BASE_SHIFT;
        if (vlq > 0) {
          digit |= VLQ_CONTINUATION_BIT;
        }
        encoded += base64.encode(digit);
      } while (vlq > 0);
      return encoded;
    };
    exports2.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
      var strLen = aStr.length;
      var result = 0;
      var shift = 0;
      var continuation, digit;
      do {
        if (aIndex >= strLen) {
          throw new Error("Expected more digits in base 64 VLQ value.");
        }
        digit = base64.decode(aStr.charCodeAt(aIndex++));
        if (digit === -1) {
          throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
        }
        continuation = !!(digit & VLQ_CONTINUATION_BIT);
        digit &= VLQ_BASE_MASK;
        result = result + (digit << shift);
        shift += VLQ_BASE_SHIFT;
      } while (continuation);
      aOutParam.value = fromVLQSigned(result);
      aOutParam.rest = aIndex;
    };
  }
});

// ../../node_modules/source-map-js/lib/util.js
var require_util2 = __commonJS({
  "../../node_modules/source-map-js/lib/util.js"(exports2) {
    function getArg(aArgs, aName, aDefaultValue) {
      if (aName in aArgs) {
        return aArgs[aName];
      } else if (arguments.length === 3) {
        return aDefaultValue;
      } else {
        throw new Error('"' + aName + '" is a required argument.');
      }
    }
    exports2.getArg = getArg;
    var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;
    var dataUrlRegexp = /^data:.+\,.+$/;
    function urlParse(aUrl) {
      var match3 = aUrl.match(urlRegexp);
      if (!match3) {
        return null;
      }
      return {
        scheme: match3[1],
        auth: match3[2],
        host: match3[3],
        port: match3[4],
        path: match3[5]
      };
    }
    exports2.urlParse = urlParse;
    function urlGenerate(aParsedUrl) {
      var url = "";
      if (aParsedUrl.scheme) {
        url += aParsedUrl.scheme + ":";
      }
      url += "//";
      if (aParsedUrl.auth) {
        url += aParsedUrl.auth + "@";
      }
      if (aParsedUrl.host) {
        url += aParsedUrl.host;
      }
      if (aParsedUrl.port) {
        url += ":" + aParsedUrl.port;
      }
      if (aParsedUrl.path) {
        url += aParsedUrl.path;
      }
      return url;
    }
    exports2.urlGenerate = urlGenerate;
    var MAX_CACHED_INPUTS = 32;
    function lruMemoize(f3) {
      var cache = [];
      return function(input3) {
        for (var i2 = 0; i2 < cache.length; i2++) {
          if (cache[i2].input === input3) {
            var temp = cache[0];
            cache[0] = cache[i2];
            cache[i2] = temp;
            return cache[0].result;
          }
        }
        var result = f3(input3);
        cache.unshift({
          input: input3,
          result
        });
        if (cache.length > MAX_CACHED_INPUTS) {
          cache.pop();
        }
        return result;
      };
    }
    var normalize6 = lruMemoize(function normalize7(aPath) {
      var path45 = aPath;
      var url = urlParse(aPath);
      if (url) {
        if (!url.path) {
          return aPath;
        }
        path45 = url.path;
      }
      var isAbsolute = exports2.isAbsolute(path45);
      var parts = [];
      var start = 0;
      var i2 = 0;
      while (true) {
        start = i2;
        i2 = path45.indexOf("/", start);
        if (i2 === -1) {
          parts.push(path45.slice(start));
          break;
        } else {
          parts.push(path45.slice(start, i2));
          while (i2 < path45.length && path45[i2] === "/") {
            i2++;
          }
        }
      }
      for (var part, up2 = 0, i2 = parts.length - 1; i2 >= 0; i2--) {
        part = parts[i2];
        if (part === ".") {
          parts.splice(i2, 1);
        } else if (part === "..") {
          up2++;
        } else if (up2 > 0) {
          if (part === "") {
            parts.splice(i2 + 1, up2);
            up2 = 0;
          } else {
            parts.splice(i2, 2);
            up2--;
          }
        }
      }
      path45 = parts.join("/");
      if (path45 === "") {
        path45 = isAbsolute ? "/" : ".";
      }
      if (url) {
        url.path = path45;
        return urlGenerate(url);
      }
      return path45;
    });
    exports2.normalize = normalize6;
    function join19(aRoot, aPath) {
      if (aRoot === "") {
        aRoot = ".";
      }
      if (aPath === "") {
        aPath = ".";
      }
      var aPathUrl = urlParse(aPath);
      var aRootUrl = urlParse(aRoot);
      if (aRootUrl) {
        aRoot = aRootUrl.path || "/";
      }
      if (aPathUrl && !aPathUrl.scheme) {
        if (aRootUrl) {
          aPathUrl.scheme = aRootUrl.scheme;
        }
        return urlGenerate(aPathUrl);
      }
      if (aPathUrl || aPath.match(dataUrlRegexp)) {
        return aPath;
      }
      if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
        aRootUrl.host = aPath;
        return urlGenerate(aRootUrl);
      }
      var joined = aPath.charAt(0) === "/" ? aPath : normalize6(aRoot.replace(/\/+$/, "") + "/" + aPath);
      if (aRootUrl) {
        aRootUrl.path = joined;
        return urlGenerate(aRootUrl);
      }
      return joined;
    }
    exports2.join = join19;
    exports2.isAbsolute = function(aPath) {
      return aPath.charAt(0) === "/" || urlRegexp.test(aPath);
    };
    function relative6(aRoot, aPath) {
      if (aRoot === "") {
        aRoot = ".";
      }
      aRoot = aRoot.replace(/\/$/, "");
      var level = 0;
      while (aPath.indexOf(aRoot + "/") !== 0) {
        var index4 = aRoot.lastIndexOf("/");
        if (index4 < 0) {
          return aPath;
        }
        aRoot = aRoot.slice(0, index4);
        if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
          return aPath;
        }
        ++level;
      }
      return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
    }
    exports2.relative = relative6;
    var supportsNullProto = (function() {
      var obj = /* @__PURE__ */ Object.create(null);
      return !("__proto__" in obj);
    })();
    function identity2(s5) {
      return s5;
    }
    function toSetString(aStr) {
      if (isProtoString(aStr)) {
        return "$" + aStr;
      }
      return aStr;
    }
    exports2.toSetString = supportsNullProto ? identity2 : toSetString;
    function fromSetString(aStr) {
      if (isProtoString(aStr)) {
        return aStr.slice(1);
      }
      return aStr;
    }
    exports2.fromSetString = supportsNullProto ? identity2 : fromSetString;
    function isProtoString(s5) {
      if (!s5) {
        return false;
      }
      var length = s5.length;
      if (length < 9) {
        return false;
      }
      if (s5.charCodeAt(length - 1) !== 95 || s5.charCodeAt(length - 2) !== 95 || s5.charCodeAt(length - 3) !== 111 || s5.charCodeAt(length - 4) !== 116 || s5.charCodeAt(length - 5) !== 111 || s5.charCodeAt(length - 6) !== 114 || s5.charCodeAt(length - 7) !== 112 || s5.charCodeAt(length - 8) !== 95 || s5.charCodeAt(length - 9) !== 95) {
        return false;
      }
      for (var i2 = length - 10; i2 >= 0; i2--) {
        if (s5.charCodeAt(i2) !== 36) {
          return false;
        }
      }
      return true;
    }
    function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
      var cmp = strcmp(mappingA.source, mappingB.source);
      if (cmp !== 0) {
        return cmp;
      }
      cmp = mappingA.originalLine - mappingB.originalLine;
      if (cmp !== 0) {
        return cmp;
      }
      cmp = mappingA.originalColumn - mappingB.originalColumn;
      if (cmp !== 0 || onlyCompareOriginal) {
        return cmp;
      }
      cmp = mappingA.generatedColumn - mappingB.generatedColumn;
      if (cmp !== 0) {
        return cmp;
      }
      cmp = mappingA.generatedLine - mappingB.generatedLine;
      if (cmp !== 0) {
        return cmp;
      }
      return strcmp(mappingA.name, mappingB.name);
    }
    exports2.compareByOriginalPositions = compareByOriginalPositions;
    function compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) {
      var cmp;
      cmp = mappingA.originalLine - mappingB.originalLine;
      if (cmp !== 0) {
        return cmp;
      }
      cmp = mappingA.originalColumn - mappingB.originalColumn;
      if (cmp !== 0 || onlyCompareOriginal) {
        return cmp;
      }
      cmp = mappingA.generatedColumn - mappingB.generatedColumn;
      if (cmp !== 0) {
        return cmp;
      }
      cmp = mappingA.generatedLine - mappingB.generatedLine;
      if (cmp !== 0) {
        return cmp;
      }
      return strcmp(mappingA.name, mappingB.name);
    }
    exports2.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;
    function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
      var cmp = mappingA.generatedLine - mappingB.generatedLine;
      if (cmp !== 0) {
        return cmp;
      }
      cmp = mappingA.generatedColumn - mappingB.generatedColumn;
      if (cmp !== 0 || onlyCompareGenerated) {
        return cmp;
      }
      cmp = strcmp(mappingA.source, mappingB.source);
      if (cmp !== 0) {
        return cmp;
      }
      cmp = mappingA.originalLine - mappingB.originalLine;
      if (cmp !== 0) {
        return cmp;
      }
      cmp = mappingA.originalColumn - mappingB.originalColumn;
      if (cmp !== 0) {
        return cmp;
      }
      return strcmp(mappingA.name, mappingB.name);
    }
    exports2.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
    function compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) {
      var cmp = mappingA.generatedColumn - mappingB.generatedColumn;
      if (cmp !== 0 || onlyCompareGenerated) {
        return cmp;
      }
      cmp = strcmp(mappingA.source, mappingB.source);
      if (cmp !== 0) {
        return cmp;
      }
      cmp = mappingA.originalLine - mappingB.originalLine;
      if (cmp !== 0) {
        return cmp;
      }
      cmp = mappingA.originalColumn - mappingB.originalColumn;
      if (cmp !== 0) {
        return cmp;
      }
      return strcmp(mappingA.name, mappingB.name);
    }
    exports2.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;
    function strcmp(aStr1, aStr2) {
      if (aStr1 === aStr2) {
        return 0;
      }
      if (aStr1 === null) {
        return 1;
      }
      if (aStr2 === null) {
        return -1;
      }
      if (aStr1 > aStr2) {
        return 1;
      }
      return -1;
    }
    function compareByGeneratedPositionsInflated(mappingA, mappingB) {
      var cmp = mappingA.generatedLine - mappingB.generatedLine;
      if (cmp !== 0) {
        return cmp;
      }
      cmp = mappingA.generatedColumn - mappingB.generatedColumn;
      if (cmp !== 0) {
        return cmp;
      }
      cmp = strcmp(mappingA.source, mappingB.source);
      if (cmp !== 0) {
        return cmp;
      }
      cmp = mappingA.originalLine - mappingB.originalLine;
      if (cmp !== 0) {
        return cmp;
      }
      cmp = mappingA.originalColumn - mappingB.originalColumn;
      if (cmp !== 0) {
        return cmp;
      }
      return strcmp(mappingA.name, mappingB.name);
    }
    exports2.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
    function parseSourceMapInput(str2) {
      return JSON.parse(str2.replace(/^\)]}'[^\n]*\n/, ""));
    }
    exports2.parseSourceMapInput = parseSourceMapInput;
    function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {
      sourceURL = sourceURL || "";
      if (sourceRoot) {
        if (sourceRoot[sourceRoot.length - 1] !== "/" && sourceURL[0] !== "/") {
          sourceRoot += "/";
        }
        sourceURL = sourceRoot + sourceURL;
      }
      if (sourceMapURL) {
        var parsed = urlParse(sourceMapURL);
        if (!parsed) {
          throw new Error("sourceMapURL could not be parsed");
        }
        if (parsed.path) {
          var index4 = parsed.path.lastIndexOf("/");
          if (index4 >= 0) {
            parsed.path = parsed.path.substring(0, index4 + 1);
          }
        }
        sourceURL = join19(urlGenerate(parsed), sourceURL);
      }
      return normalize6(sourceURL);
    }
    exports2.computeSourceURL = computeSourceURL;
  }
});

// ../../node_modules/source-map-js/lib/array-set.js
var require_array_set = __commonJS({
  "../../node_modules/source-map-js/lib/array-set.js"(exports2) {
    var util4 = require_util2();
    var has3 = Object.prototype.hasOwnProperty;
    var hasNativeMap = typeof Map !== "undefined";
    function ArraySet() {
      this._array = [];
      this._set = hasNativeMap ? /* @__PURE__ */ new Map() : /* @__PURE__ */ Object.create(null);
    }
    ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
      var set3 = new ArraySet();
      for (var i2 = 0, len = aArray.length; i2 < len; i2++) {
        set3.add(aArray[i2], aAllowDuplicates);
      }
      return set3;
    };
    ArraySet.prototype.size = function ArraySet_size() {
      return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;
    };
    ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
      var sStr = hasNativeMap ? aStr : util4.toSetString(aStr);
      var isDuplicate = hasNativeMap ? this.has(aStr) : has3.call(this._set, sStr);
      var idx = this._array.length;
      if (!isDuplicate || aAllowDuplicates) {
        this._array.push(aStr);
      }
      if (!isDuplicate) {
        if (hasNativeMap) {
          this._set.set(aStr, idx);
        } else {
          this._set[sStr] = idx;
        }
      }
    };
    ArraySet.prototype.has = function ArraySet_has(aStr) {
      if (hasNativeMap) {
        return this._set.has(aStr);
      } else {
        var sStr = util4.toSetString(aStr);
        return has3.call(this._set, sStr);
      }
    };
    ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
      if (hasNativeMap) {
        var idx = this._set.get(aStr);
        if (idx >= 0) {
          return idx;
        }
      } else {
        var sStr = util4.toSetString(aStr);
        if (has3.call(this._set, sStr)) {
          return this._set[sStr];
        }
      }
      throw new Error('"' + aStr + '" is not in the set.');
    };
    ArraySet.prototype.at = function ArraySet_at(aIdx) {
      if (aIdx >= 0 && aIdx < this._array.length) {
        return this._array[aIdx];
      }
      throw new Error("No element indexed by " + aIdx);
    };
    ArraySet.prototype.toArray = function ArraySet_toArray() {
      return this._array.slice();
    };
    exports2.ArraySet = ArraySet;
  }
});

// ../../node_modules/source-map-js/lib/mapping-list.js
var require_mapping_list = __commonJS({
  "../../node_modules/source-map-js/lib/mapping-list.js"(exports2) {
    var util4 = require_util2();
    function generatedPositionAfter(mappingA, mappingB) {
      var lineA = mappingA.generatedLine;
      var lineB = mappingB.generatedLine;
      var columnA = mappingA.generatedColumn;
      var columnB = mappingB.generatedColumn;
      return lineB > lineA || lineB == lineA && columnB >= columnA || util4.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
    }
    function MappingList() {
      this._array = [];
      this._sorted = true;
      this._last = { generatedLine: -1, generatedColumn: 0 };
    }
    MappingList.prototype.unsortedForEach = function MappingList_forEach(aCallback, aThisArg) {
      this._array.forEach(aCallback, aThisArg);
    };
    MappingList.prototype.add = function MappingList_add(aMapping) {
      if (generatedPositionAfter(this._last, aMapping)) {
        this._last = aMapping;
        this._array.push(aMapping);
      } else {
        this._sorted = false;
        this._array.push(aMapping);
      }
    };
    MappingList.prototype.toArray = function MappingList_toArray() {
      if (!this._sorted) {
        this._array.sort(util4.compareByGeneratedPositionsInflated);
        this._sorted = true;
      }
      return this._array;
    };
    exports2.MappingList = MappingList;
  }
});

// ../../node_modules/source-map-js/lib/source-map-generator.js
var require_source_map_generator = __commonJS({
  "../../node_modules/source-map-js/lib/source-map-generator.js"(exports2) {
    var base64VLQ = require_base64_vlq();
    var util4 = require_util2();
    var ArraySet = require_array_set().ArraySet;
    var MappingList = require_mapping_list().MappingList;
    function SourceMapGenerator(aArgs) {
      if (!aArgs) {
        aArgs = {};
      }
      this._file = util4.getArg(aArgs, "file", null);
      this._sourceRoot = util4.getArg(aArgs, "sourceRoot", null);
      this._skipValidation = util4.getArg(aArgs, "skipValidation", false);
      this._ignoreInvalidMapping = util4.getArg(aArgs, "ignoreInvalidMapping", false);
      this._sources = new ArraySet();
      this._names = new ArraySet();
      this._mappings = new MappingList();
      this._sourcesContents = null;
    }
    SourceMapGenerator.prototype._version = 3;
    SourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer, generatorOps) {
      var sourceRoot = aSourceMapConsumer.sourceRoot;
      var generator = new SourceMapGenerator(Object.assign(generatorOps || {}, {
        file: aSourceMapConsumer.file,
        sourceRoot
      }));
      aSourceMapConsumer.eachMapping(function(mapping) {
        var newMapping = {
          generated: {
            line: mapping.generatedLine,
            column: mapping.generatedColumn
          }
        };
        if (mapping.source != null) {
          newMapping.source = mapping.source;
          if (sourceRoot != null) {
            newMapping.source = util4.relative(sourceRoot, newMapping.source);
          }
          newMapping.original = {
            line: mapping.originalLine,
            column: mapping.originalColumn
          };
          if (mapping.name != null) {
            newMapping.name = mapping.name;
          }
        }
        generator.addMapping(newMapping);
      });
      aSourceMapConsumer.sources.forEach(function(sourceFile) {
        var sourceRelative = sourceFile;
        if (sourceRoot !== null) {
          sourceRelative = util4.relative(sourceRoot, sourceFile);
        }
        if (!generator._sources.has(sourceRelative)) {
          generator._sources.add(sourceRelative);
        }
        var content3 = aSourceMapConsumer.sourceContentFor(sourceFile);
        if (content3 != null) {
          generator.setSourceContent(sourceFile, content3);
        }
      });
      return generator;
    };
    SourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) {
      var generated2 = util4.getArg(aArgs, "generated");
      var original = util4.getArg(aArgs, "original", null);
      var source2 = util4.getArg(aArgs, "source", null);
      var name3 = util4.getArg(aArgs, "name", null);
      if (!this._skipValidation) {
        if (this._validateMapping(generated2, original, source2, name3) === false) {
          return;
        }
      }
      if (source2 != null) {
        source2 = String(source2);
        if (!this._sources.has(source2)) {
          this._sources.add(source2);
        }
      }
      if (name3 != null) {
        name3 = String(name3);
        if (!this._names.has(name3)) {
          this._names.add(name3);
        }
      }
      this._mappings.add({
        generatedLine: generated2.line,
        generatedColumn: generated2.column,
        originalLine: original != null && original.line,
        originalColumn: original != null && original.column,
        source: source2,
        name: name3
      });
    };
    SourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
      var source2 = aSourceFile;
      if (this._sourceRoot != null) {
        source2 = util4.relative(this._sourceRoot, source2);
      }
      if (aSourceContent != null) {
        if (!this._sourcesContents) {
          this._sourcesContents = /* @__PURE__ */ Object.create(null);
        }
        this._sourcesContents[util4.toSetString(source2)] = aSourceContent;
      } else if (this._sourcesContents) {
        delete this._sourcesContents[util4.toSetString(source2)];
        if (Object.keys(this._sourcesContents).length === 0) {
          this._sourcesContents = null;
        }
      }
    };
    SourceMapGenerator.prototype.applySourceMap = function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
      var sourceFile = aSourceFile;
      if (aSourceFile == null) {
        if (aSourceMapConsumer.file == null) {
          throw new Error(
            `SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.`
          );
        }
        sourceFile = aSourceMapConsumer.file;
      }
      var sourceRoot = this._sourceRoot;
      if (sourceRoot != null) {
        sourceFile = util4.relative(sourceRoot, sourceFile);
      }
      var newSources = new ArraySet();
      var newNames = new ArraySet();
      this._mappings.unsortedForEach(function(mapping) {
        if (mapping.source === sourceFile && mapping.originalLine != null) {
          var original = aSourceMapConsumer.originalPositionFor({
            line: mapping.originalLine,
            column: mapping.originalColumn
          });
          if (original.source != null) {
            mapping.source = original.source;
            if (aSourceMapPath != null) {
              mapping.source = util4.join(aSourceMapPath, mapping.source);
            }
            if (sourceRoot != null) {
              mapping.source = util4.relative(sourceRoot, mapping.source);
            }
            mapping.originalLine = original.line;
            mapping.originalColumn = original.column;
            if (original.name != null) {
              mapping.name = original.name;
            }
          }
        }
        var source2 = mapping.source;
        if (source2 != null && !newSources.has(source2)) {
          newSources.add(source2);
        }
        var name3 = mapping.name;
        if (name3 != null && !newNames.has(name3)) {
          newNames.add(name3);
        }
      }, this);
      this._sources = newSources;
      this._names = newNames;
      aSourceMapConsumer.sources.forEach(function(sourceFile2) {
        var content3 = aSourceMapConsumer.sourceContentFor(sourceFile2);
        if (content3 != null) {
          if (aSourceMapPath != null) {
            sourceFile2 = util4.join(aSourceMapPath, sourceFile2);
          }
          if (sourceRoot != null) {
            sourceFile2 = util4.relative(sourceRoot, sourceFile2);
          }
          this.setSourceContent(sourceFile2, content3);
        }
      }, this);
    };
    SourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) {
      if (aOriginal && typeof aOriginal.line !== "number" && typeof aOriginal.column !== "number") {
        var message = "original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.";
        if (this._ignoreInvalidMapping) {
          if (typeof console !== "undefined" && console.warn) {
            console.warn(message);
          }
          return false;
        } else {
          throw new Error(message);
        }
      }
      if (aGenerated && "line" in aGenerated && "column" in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) {
        return;
      } else if (aGenerated && "line" in aGenerated && "column" in aGenerated && aOriginal && "line" in aOriginal && "column" in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) {
        return;
      } else {
        var message = "Invalid mapping: " + JSON.stringify({
          generated: aGenerated,
          source: aSource,
          original: aOriginal,
          name: aName
        });
        if (this._ignoreInvalidMapping) {
          if (typeof console !== "undefined" && console.warn) {
            console.warn(message);
          }
          return false;
        } else {
          throw new Error(message);
        }
      }
    };
    SourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() {
      var previousGeneratedColumn = 0;
      var previousGeneratedLine = 1;
      var previousOriginalColumn = 0;
      var previousOriginalLine = 0;
      var previousName = 0;
      var previousSource = 0;
      var result = "";
      var next;
      var mapping;
      var nameIdx;
      var sourceIdx;
      var mappings = this._mappings.toArray();
      for (var i2 = 0, len = mappings.length; i2 < len; i2++) {
        mapping = mappings[i2];
        next = "";
        if (mapping.generatedLine !== previousGeneratedLine) {
          previousGeneratedColumn = 0;
          while (mapping.generatedLine !== previousGeneratedLine) {
            next += ";";
            previousGeneratedLine++;
          }
        } else {
          if (i2 > 0) {
            if (!util4.compareByGeneratedPositionsInflated(mapping, mappings[i2 - 1])) {
              continue;
            }
            next += ",";
          }
        }
        next += base64VLQ.encode(mapping.generatedColumn - previousGeneratedColumn);
        previousGeneratedColumn = mapping.generatedColumn;
        if (mapping.source != null) {
          sourceIdx = this._sources.indexOf(mapping.source);
          next += base64VLQ.encode(sourceIdx - previousSource);
          previousSource = sourceIdx;
          next += base64VLQ.encode(mapping.originalLine - 1 - previousOriginalLine);
          previousOriginalLine = mapping.originalLine - 1;
          next += base64VLQ.encode(mapping.originalColumn - previousOriginalColumn);
          previousOriginalColumn = mapping.originalColumn;
          if (mapping.name != null) {
            nameIdx = this._names.indexOf(mapping.name);
            next += base64VLQ.encode(nameIdx - previousName);
            previousName = nameIdx;
          }
        }
        result += next;
      }
      return result;
    };
    SourceMapGenerator.prototype._generateSourcesContent = function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
      return aSources.map(function(source2) {
        if (!this._sourcesContents) {
          return null;
        }
        if (aSourceRoot != null) {
          source2 = util4.relative(aSourceRoot, source2);
        }
        var key2 = util4.toSetString(source2);
        return Object.prototype.hasOwnProperty.call(this._sourcesContents, key2) ? this._sourcesContents[key2] : null;
      }, this);
    };
    SourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() {
      var map13 = {
        version: this._version,
        sources: this._sources.toArray(),
        names: this._names.toArray(),
        mappings: this._serializeMappings()
      };
      if (this._file != null) {
        map13.file = this._file;
      }
      if (this._sourceRoot != null) {
        map13.sourceRoot = this._sourceRoot;
      }
      if (this._sourcesContents) {
        map13.sourcesContent = this._generateSourcesContent(map13.sources, map13.sourceRoot);
      }
      return map13;
    };
    SourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() {
      return JSON.stringify(this.toJSON());
    };
    exports2.SourceMapGenerator = SourceMapGenerator;
  }
});

// ../../node_modules/source-map-js/lib/binary-search.js
var require_binary_search = __commonJS({
  "../../node_modules/source-map-js/lib/binary-search.js"(exports2) {
    exports2.GREATEST_LOWER_BOUND = 1;
    exports2.LEAST_UPPER_BOUND = 2;
    function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
      var mid = Math.floor((aHigh - aLow) / 2) + aLow;
      var cmp = aCompare(aNeedle, aHaystack[mid], true);
      if (cmp === 0) {
        return mid;
      } else if (cmp > 0) {
        if (aHigh - mid > 1) {
          return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
        }
        if (aBias == exports2.LEAST_UPPER_BOUND) {
          return aHigh < aHaystack.length ? aHigh : -1;
        } else {
          return mid;
        }
      } else {
        if (mid - aLow > 1) {
          return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
        }
        if (aBias == exports2.LEAST_UPPER_BOUND) {
          return mid;
        } else {
          return aLow < 0 ? -1 : aLow;
        }
      }
    }
    exports2.search = function search4(aNeedle, aHaystack, aCompare, aBias) {
      if (aHaystack.length === 0) {
        return -1;
      }
      var index4 = recursiveSearch(
        -1,
        aHaystack.length,
        aNeedle,
        aHaystack,
        aCompare,
        aBias || exports2.GREATEST_LOWER_BOUND
      );
      if (index4 < 0) {
        return -1;
      }
      while (index4 - 1 >= 0) {
        if (aCompare(aHaystack[index4], aHaystack[index4 - 1], true) !== 0) {
          break;
        }
        --index4;
      }
      return index4;
    };
  }
});

// ../../node_modules/source-map-js/lib/quick-sort.js
var require_quick_sort = __commonJS({
  "../../node_modules/source-map-js/lib/quick-sort.js"(exports2) {
    function SortTemplate(comparator) {
      function swap2(ary, x2, y) {
        var temp = ary[x2];
        ary[x2] = ary[y];
        ary[y] = temp;
      }
      function randomIntInRange(low, high) {
        return Math.round(low + Math.random() * (high - low));
      }
      function doQuickSort(ary, comparator2, p5, r2) {
        if (p5 < r2) {
          var pivotIndex = randomIntInRange(p5, r2);
          var i2 = p5 - 1;
          swap2(ary, pivotIndex, r2);
          var pivot = ary[r2];
          for (var j = p5; j < r2; j++) {
            if (comparator2(ary[j], pivot, false) <= 0) {
              i2 += 1;
              swap2(ary, i2, j);
            }
          }
          swap2(ary, i2 + 1, j);
          var q2 = i2 + 1;
          doQuickSort(ary, comparator2, p5, q2 - 1);
          doQuickSort(ary, comparator2, q2 + 1, r2);
        }
      }
      return doQuickSort;
    }
    function cloneSort(comparator) {
      let template = SortTemplate.toString();
      let templateFn = new Function(`return ${template}`)();
      return templateFn(comparator);
    }
    var sortCache = /* @__PURE__ */ new WeakMap();
    exports2.quickSort = function(ary, comparator, start = 0) {
      let doQuickSort = sortCache.get(comparator);
      if (doQuickSort === void 0) {
        doQuickSort = cloneSort(comparator);
        sortCache.set(comparator, doQuickSort);
      }
      doQuickSort(ary, comparator, start, ary.length - 1);
    };
  }
});

// ../../node_modules/source-map-js/lib/source-map-consumer.js
var require_source_map_consumer = __commonJS({
  "../../node_modules/source-map-js/lib/source-map-consumer.js"(exports2) {
    var util4 = require_util2();
    var binarySearch = require_binary_search();
    var ArraySet = require_array_set().ArraySet;
    var base64VLQ = require_base64_vlq();
    var quickSort = require_quick_sort().quickSort;
    function SourceMapConsumer(aSourceMap, aSourceMapURL) {
      var sourceMap = aSourceMap;
      if (typeof aSourceMap === "string") {
        sourceMap = util4.parseSourceMapInput(aSourceMap);
      }
      return sourceMap.sections != null ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);
    }
    SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {
      return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);
    };
    SourceMapConsumer.prototype._version = 3;
    SourceMapConsumer.prototype.__generatedMappings = null;
    Object.defineProperty(SourceMapConsumer.prototype, "_generatedMappings", {
      configurable: true,
      enumerable: true,
      get: function() {
        if (!this.__generatedMappings) {
          this._parseMappings(this._mappings, this.sourceRoot);
        }
        return this.__generatedMappings;
      }
    });
    SourceMapConsumer.prototype.__originalMappings = null;
    Object.defineProperty(SourceMapConsumer.prototype, "_originalMappings", {
      configurable: true,
      enumerable: true,
      get: function() {
        if (!this.__originalMappings) {
          this._parseMappings(this._mappings, this.sourceRoot);
        }
        return this.__originalMappings;
      }
    });
    SourceMapConsumer.prototype._charIsMappingSeparator = function SourceMapConsumer_charIsMappingSeparator(aStr, index4) {
      var c = aStr.charAt(index4);
      return c === ";" || c === ",";
    };
    SourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
      throw new Error("Subclasses must implement _parseMappings");
    };
    SourceMapConsumer.GENERATED_ORDER = 1;
    SourceMapConsumer.ORIGINAL_ORDER = 2;
    SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
    SourceMapConsumer.LEAST_UPPER_BOUND = 2;
    SourceMapConsumer.prototype.eachMapping = function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
      var context = aContext || null;
      var order3 = aOrder || SourceMapConsumer.GENERATED_ORDER;
      var mappings;
      switch (order3) {
        case SourceMapConsumer.GENERATED_ORDER:
          mappings = this._generatedMappings;
          break;
        case SourceMapConsumer.ORIGINAL_ORDER:
          mappings = this._originalMappings;
          break;
        default:
          throw new Error("Unknown order of iteration.");
      }
      var sourceRoot = this.sourceRoot;
      var boundCallback = aCallback.bind(context);
      var names = this._names;
      var sources = this._sources;
      var sourceMapURL = this._sourceMapURL;
      for (var i2 = 0, n = mappings.length; i2 < n; i2++) {
        var mapping = mappings[i2];
        var source2 = mapping.source === null ? null : sources.at(mapping.source);
        if (source2 !== null) {
          source2 = util4.computeSourceURL(sourceRoot, source2, sourceMapURL);
        }
        boundCallback({
          source: source2,
          generatedLine: mapping.generatedLine,
          generatedColumn: mapping.generatedColumn,
          originalLine: mapping.originalLine,
          originalColumn: mapping.originalColumn,
          name: mapping.name === null ? null : names.at(mapping.name)
        });
      }
    };
    SourceMapConsumer.prototype.allGeneratedPositionsFor = function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
      var line2 = util4.getArg(aArgs, "line");
      var needle = {
        source: util4.getArg(aArgs, "source"),
        originalLine: line2,
        originalColumn: util4.getArg(aArgs, "column", 0)
      };
      needle.source = this._findSourceIndex(needle.source);
      if (needle.source < 0) {
        return [];
      }
      var mappings = [];
      var index4 = this._findMapping(
        needle,
        this._originalMappings,
        "originalLine",
        "originalColumn",
        util4.compareByOriginalPositions,
        binarySearch.LEAST_UPPER_BOUND
      );
      if (index4 >= 0) {
        var mapping = this._originalMappings[index4];
        if (aArgs.column === void 0) {
          var originalLine = mapping.originalLine;
          while (mapping && mapping.originalLine === originalLine) {
            mappings.push({
              line: util4.getArg(mapping, "generatedLine", null),
              column: util4.getArg(mapping, "generatedColumn", null),
              lastColumn: util4.getArg(mapping, "lastGeneratedColumn", null)
            });
            mapping = this._originalMappings[++index4];
          }
        } else {
          var originalColumn = mapping.originalColumn;
          while (mapping && mapping.originalLine === line2 && mapping.originalColumn == originalColumn) {
            mappings.push({
              line: util4.getArg(mapping, "generatedLine", null),
              column: util4.getArg(mapping, "generatedColumn", null),
              lastColumn: util4.getArg(mapping, "lastGeneratedColumn", null)
            });
            mapping = this._originalMappings[++index4];
          }
        }
      }
      return mappings;
    };
    exports2.SourceMapConsumer = SourceMapConsumer;
    function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {
      var sourceMap = aSourceMap;
      if (typeof aSourceMap === "string") {
        sourceMap = util4.parseSourceMapInput(aSourceMap);
      }
      var version4 = util4.getArg(sourceMap, "version");
      var sources = util4.getArg(sourceMap, "sources");
      var names = util4.getArg(sourceMap, "names", []);
      var sourceRoot = util4.getArg(sourceMap, "sourceRoot", null);
      var sourcesContent = util4.getArg(sourceMap, "sourcesContent", null);
      var mappings = util4.getArg(sourceMap, "mappings");
      var file = util4.getArg(sourceMap, "file", null);
      if (version4 != this._version) {
        throw new Error("Unsupported version: " + version4);
      }
      if (sourceRoot) {
        sourceRoot = util4.normalize(sourceRoot);
      }
      sources = sources.map(String).map(util4.normalize).map(function(source2) {
        return sourceRoot && util4.isAbsolute(sourceRoot) && util4.isAbsolute(source2) ? util4.relative(sourceRoot, source2) : source2;
      });
      this._names = ArraySet.fromArray(names.map(String), true);
      this._sources = ArraySet.fromArray(sources, true);
      this._absoluteSources = this._sources.toArray().map(function(s5) {
        return util4.computeSourceURL(sourceRoot, s5, aSourceMapURL);
      });
      this.sourceRoot = sourceRoot;
      this.sourcesContent = sourcesContent;
      this._mappings = mappings;
      this._sourceMapURL = aSourceMapURL;
      this.file = file;
    }
    BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
    BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
    BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {
      var relativeSource = aSource;
      if (this.sourceRoot != null) {
        relativeSource = util4.relative(this.sourceRoot, relativeSource);
      }
      if (this._sources.has(relativeSource)) {
        return this._sources.indexOf(relativeSource);
      }
      var i2;
      for (i2 = 0; i2 < this._absoluteSources.length; ++i2) {
        if (this._absoluteSources[i2] == aSource) {
          return i2;
        }
      }
      return -1;
    };
    BasicSourceMapConsumer.fromSourceMap = function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {
      var smc = Object.create(BasicSourceMapConsumer.prototype);
      var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
      var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
      smc.sourceRoot = aSourceMap._sourceRoot;
      smc.sourcesContent = aSourceMap._generateSourcesContent(
        smc._sources.toArray(),
        smc.sourceRoot
      );
      smc.file = aSourceMap._file;
      smc._sourceMapURL = aSourceMapURL;
      smc._absoluteSources = smc._sources.toArray().map(function(s5) {
        return util4.computeSourceURL(smc.sourceRoot, s5, aSourceMapURL);
      });
      var generatedMappings = aSourceMap._mappings.toArray().slice();
      var destGeneratedMappings = smc.__generatedMappings = [];
      var destOriginalMappings = smc.__originalMappings = [];
      for (var i2 = 0, length = generatedMappings.length; i2 < length; i2++) {
        var srcMapping = generatedMappings[i2];
        var destMapping = new Mapping();
        destMapping.generatedLine = srcMapping.generatedLine;
        destMapping.generatedColumn = srcMapping.generatedColumn;
        if (srcMapping.source) {
          destMapping.source = sources.indexOf(srcMapping.source);
          destMapping.originalLine = srcMapping.originalLine;
          destMapping.originalColumn = srcMapping.originalColumn;
          if (srcMapping.name) {
            destMapping.name = names.indexOf(srcMapping.name);
          }
          destOriginalMappings.push(destMapping);
        }
        destGeneratedMappings.push(destMapping);
      }
      quickSort(smc.__originalMappings, util4.compareByOriginalPositions);
      return smc;
    };
    BasicSourceMapConsumer.prototype._version = 3;
    Object.defineProperty(BasicSourceMapConsumer.prototype, "sources", {
      get: function() {
        return this._absoluteSources.slice();
      }
    });
    function Mapping() {
      this.generatedLine = 0;
      this.generatedColumn = 0;
      this.source = null;
      this.originalLine = null;
      this.originalColumn = null;
      this.name = null;
    }
    var compareGenerated = util4.compareByGeneratedPositionsDeflatedNoLine;
    function sortGenerated(array, start) {
      let l = array.length;
      let n = array.length - start;
      if (n <= 1) {
        return;
      } else if (n == 2) {
        let a2 = array[start];
        let b = array[start + 1];
        if (compareGenerated(a2, b) > 0) {
          array[start] = b;
          array[start + 1] = a2;
        }
      } else if (n < 20) {
        for (let i2 = start; i2 < l; i2++) {
          for (let j = i2; j > start; j--) {
            let a2 = array[j - 1];
            let b = array[j];
            if (compareGenerated(a2, b) <= 0) {
              break;
            }
            array[j - 1] = b;
            array[j] = a2;
          }
        }
      } else {
        quickSort(array, compareGenerated, start);
      }
    }
    BasicSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
      var generatedLine = 1;
      var previousGeneratedColumn = 0;
      var previousOriginalLine = 0;
      var previousOriginalColumn = 0;
      var previousSource = 0;
      var previousName = 0;
      var length = aStr.length;
      var index4 = 0;
      var cachedSegments = {};
      var temp = {};
      var originalMappings = [];
      var generatedMappings = [];
      var mapping, str2, segment, end, value;
      let subarrayStart = 0;
      while (index4 < length) {
        if (aStr.charAt(index4) === ";") {
          generatedLine++;
          index4++;
          previousGeneratedColumn = 0;
          sortGenerated(generatedMappings, subarrayStart);
          subarrayStart = generatedMappings.length;
        } else if (aStr.charAt(index4) === ",") {
          index4++;
        } else {
          mapping = new Mapping();
          mapping.generatedLine = generatedLine;
          for (end = index4; end < length; end++) {
            if (this._charIsMappingSeparator(aStr, end)) {
              break;
            }
          }
          str2 = aStr.slice(index4, end);
          segment = [];
          while (index4 < end) {
            base64VLQ.decode(aStr, index4, temp);
            value = temp.value;
            index4 = temp.rest;
            segment.push(value);
          }
          if (segment.length === 2) {
            throw new Error("Found a source, but no line and column");
          }
          if (segment.length === 3) {
            throw new Error("Found a source and line, but no column");
          }
          mapping.generatedColumn = previousGeneratedColumn + segment[0];
          previousGeneratedColumn = mapping.generatedColumn;
          if (segment.length > 1) {
            mapping.source = previousSource + segment[1];
            previousSource += segment[1];
            mapping.originalLine = previousOriginalLine + segment[2];
            previousOriginalLine = mapping.originalLine;
            mapping.originalLine += 1;
            mapping.originalColumn = previousOriginalColumn + segment[3];
            previousOriginalColumn = mapping.originalColumn;
            if (segment.length > 4) {
              mapping.name = previousName + segment[4];
              previousName += segment[4];
            }
          }
          generatedMappings.push(mapping);
          if (typeof mapping.originalLine === "number") {
            let currentSource = mapping.source;
            while (originalMappings.length <= currentSource) {
              originalMappings.push(null);
            }
            if (originalMappings[currentSource] === null) {
              originalMappings[currentSource] = [];
            }
            originalMappings[currentSource].push(mapping);
          }
        }
      }
      sortGenerated(generatedMappings, subarrayStart);
      this.__generatedMappings = generatedMappings;
      for (var i2 = 0; i2 < originalMappings.length; i2++) {
        if (originalMappings[i2] != null) {
          quickSort(originalMappings[i2], util4.compareByOriginalPositionsNoSource);
        }
      }
      this.__originalMappings = [].concat(...originalMappings);
    };
    BasicSourceMapConsumer.prototype._findMapping = function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias) {
      if (aNeedle[aLineName] <= 0) {
        throw new TypeError("Line must be greater than or equal to 1, got " + aNeedle[aLineName]);
      }
      if (aNeedle[aColumnName] < 0) {
        throw new TypeError("Column must be greater than or equal to 0, got " + aNeedle[aColumnName]);
      }
      return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
    };
    BasicSourceMapConsumer.prototype.computeColumnSpans = function SourceMapConsumer_computeColumnSpans() {
      for (var index4 = 0; index4 < this._generatedMappings.length; ++index4) {
        var mapping = this._generatedMappings[index4];
        if (index4 + 1 < this._generatedMappings.length) {
          var nextMapping = this._generatedMappings[index4 + 1];
          if (mapping.generatedLine === nextMapping.generatedLine) {
            mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
            continue;
          }
        }
        mapping.lastGeneratedColumn = Infinity;
      }
    };
    BasicSourceMapConsumer.prototype.originalPositionFor = function SourceMapConsumer_originalPositionFor(aArgs) {
      var needle = {
        generatedLine: util4.getArg(aArgs, "line"),
        generatedColumn: util4.getArg(aArgs, "column")
      };
      var index4 = this._findMapping(
        needle,
        this._generatedMappings,
        "generatedLine",
        "generatedColumn",
        util4.compareByGeneratedPositionsDeflated,
        util4.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND)
      );
      if (index4 >= 0) {
        var mapping = this._generatedMappings[index4];
        if (mapping.generatedLine === needle.generatedLine) {
          var source2 = util4.getArg(mapping, "source", null);
          if (source2 !== null) {
            source2 = this._sources.at(source2);
            source2 = util4.computeSourceURL(this.sourceRoot, source2, this._sourceMapURL);
          }
          var name3 = util4.getArg(mapping, "name", null);
          if (name3 !== null) {
            name3 = this._names.at(name3);
          }
          return {
            source: source2,
            line: util4.getArg(mapping, "originalLine", null),
            column: util4.getArg(mapping, "originalColumn", null),
            name: name3
          };
        }
      }
      return {
        source: null,
        line: null,
        column: null,
        name: null
      };
    };
    BasicSourceMapConsumer.prototype.hasContentsOfAllSources = function BasicSourceMapConsumer_hasContentsOfAllSources() {
      if (!this.sourcesContent) {
        return false;
      }
      return this.sourcesContent.length >= this._sources.size() && !this.sourcesContent.some(function(sc) {
        return sc == null;
      });
    };
    BasicSourceMapConsumer.prototype.sourceContentFor = function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
      if (!this.sourcesContent) {
        return null;
      }
      var index4 = this._findSourceIndex(aSource);
      if (index4 >= 0) {
        return this.sourcesContent[index4];
      }
      var relativeSource = aSource;
      if (this.sourceRoot != null) {
        relativeSource = util4.relative(this.sourceRoot, relativeSource);
      }
      var url;
      if (this.sourceRoot != null && (url = util4.urlParse(this.sourceRoot))) {
        var fileUriAbsPath = relativeSource.replace(/^file:\/\//, "");
        if (url.scheme == "file" && this._sources.has(fileUriAbsPath)) {
          return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)];
        }
        if ((!url.path || url.path == "/") && this._sources.has("/" + relativeSource)) {
          return this.sourcesContent[this._sources.indexOf("/" + relativeSource)];
        }
      }
      if (nullOnMissing) {
        return null;
      } else {
        throw new Error('"' + relativeSource + '" is not in the SourceMap.');
      }
    };
    BasicSourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) {
      var source2 = util4.getArg(aArgs, "source");
      source2 = this._findSourceIndex(source2);
      if (source2 < 0) {
        return {
          line: null,
          column: null,
          lastColumn: null
        };
      }
      var needle = {
        source: source2,
        originalLine: util4.getArg(aArgs, "line"),
        originalColumn: util4.getArg(aArgs, "column")
      };
      var index4 = this._findMapping(
        needle,
        this._originalMappings,
        "originalLine",
        "originalColumn",
        util4.compareByOriginalPositions,
        util4.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND)
      );
      if (index4 >= 0) {
        var mapping = this._originalMappings[index4];
        if (mapping.source === needle.source) {
          return {
            line: util4.getArg(mapping, "generatedLine", null),
            column: util4.getArg(mapping, "generatedColumn", null),
            lastColumn: util4.getArg(mapping, "lastGeneratedColumn", null)
          };
        }
      }
      return {
        line: null,
        column: null,
        lastColumn: null
      };
    };
    exports2.BasicSourceMapConsumer = BasicSourceMapConsumer;
    function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {
      var sourceMap = aSourceMap;
      if (typeof aSourceMap === "string") {
        sourceMap = util4.parseSourceMapInput(aSourceMap);
      }
      var version4 = util4.getArg(sourceMap, "version");
      var sections = util4.getArg(sourceMap, "sections");
      if (version4 != this._version) {
        throw new Error("Unsupported version: " + version4);
      }
      this._sources = new ArraySet();
      this._names = new ArraySet();
      var lastOffset = {
        line: -1,
        column: 0
      };
      this._sections = sections.map(function(s5) {
        if (s5.url) {
          throw new Error("Support for url field in sections not implemented.");
        }
        var offset = util4.getArg(s5, "offset");
        var offsetLine = util4.getArg(offset, "line");
        var offsetColumn = util4.getArg(offset, "column");
        if (offsetLine < lastOffset.line || offsetLine === lastOffset.line && offsetColumn < lastOffset.column) {
          throw new Error("Section offsets must be ordered and non-overlapping.");
        }
        lastOffset = offset;
        return {
          generatedOffset: {
            // The offset fields are 0-based, but we use 1-based indices when
            // encoding/decoding from VLQ.
            generatedLine: offsetLine + 1,
            generatedColumn: offsetColumn + 1
          },
          consumer: new SourceMapConsumer(util4.getArg(s5, "map"), aSourceMapURL)
        };
      });
    }
    IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
    IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
    IndexedSourceMapConsumer.prototype._version = 3;
    Object.defineProperty(IndexedSourceMapConsumer.prototype, "sources", {
      get: function() {
        var sources = [];
        for (var i2 = 0; i2 < this._sections.length; i2++) {
          for (var j = 0; j < this._sections[i2].consumer.sources.length; j++) {
            sources.push(this._sections[i2].consumer.sources[j]);
          }
        }
        return sources;
      }
    });
    IndexedSourceMapConsumer.prototype.originalPositionFor = function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
      var needle = {
        generatedLine: util4.getArg(aArgs, "line"),
        generatedColumn: util4.getArg(aArgs, "column")
      };
      var sectionIndex = binarySearch.search(
        needle,
        this._sections,
        function(needle2, section2) {
          var cmp = needle2.generatedLine - section2.generatedOffset.generatedLine;
          if (cmp) {
            return cmp;
          }
          return needle2.generatedColumn - section2.generatedOffset.generatedColumn;
        }
      );
      var section = this._sections[sectionIndex];
      if (!section) {
        return {
          source: null,
          line: null,
          column: null,
          name: null
        };
      }
      return section.consumer.originalPositionFor({
        line: needle.generatedLine - (section.generatedOffset.generatedLine - 1),
        column: needle.generatedColumn - (section.generatedOffset.generatedLine === needle.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0),
        bias: aArgs.bias
      });
    };
    IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = function IndexedSourceMapConsumer_hasContentsOfAllSources() {
      return this._sections.every(function(s5) {
        return s5.consumer.hasContentsOfAllSources();
      });
    };
    IndexedSourceMapConsumer.prototype.sourceContentFor = function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
      for (var i2 = 0; i2 < this._sections.length; i2++) {
        var section = this._sections[i2];
        var content3 = section.consumer.sourceContentFor(aSource, true);
        if (content3 || content3 === "") {
          return content3;
        }
      }
      if (nullOnMissing) {
        return null;
      } else {
        throw new Error('"' + aSource + '" is not in the SourceMap.');
      }
    };
    IndexedSourceMapConsumer.prototype.generatedPositionFor = function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
      for (var i2 = 0; i2 < this._sections.length; i2++) {
        var section = this._sections[i2];
        if (section.consumer._findSourceIndex(util4.getArg(aArgs, "source")) === -1) {
          continue;
        }
        var generatedPosition = section.consumer.generatedPositionFor(aArgs);
        if (generatedPosition) {
          var ret = {
            line: generatedPosition.line + (section.generatedOffset.generatedLine - 1),
            column: generatedPosition.column + (section.generatedOffset.generatedLine === generatedPosition.line ? section.generatedOffset.generatedColumn - 1 : 0)
          };
          return ret;
        }
      }
      return {
        line: null,
        column: null
      };
    };
    IndexedSourceMapConsumer.prototype._parseMappings = function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
      this.__generatedMappings = [];
      this.__originalMappings = [];
      for (var i2 = 0; i2 < this._sections.length; i2++) {
        var section = this._sections[i2];
        var sectionMappings = section.consumer._generatedMappings;
        for (var j = 0; j < sectionMappings.length; j++) {
          var mapping = sectionMappings[j];
          var source2 = section.consumer._sources.at(mapping.source);
          if (source2 !== null) {
            source2 = util4.computeSourceURL(section.consumer.sourceRoot, source2, this._sourceMapURL);
          }
          this._sources.add(source2);
          source2 = this._sources.indexOf(source2);
          var name3 = null;
          if (mapping.name) {
            name3 = section.consumer._names.at(mapping.name);
            this._names.add(name3);
            name3 = this._names.indexOf(name3);
          }
          var adjustedMapping = {
            source: source2,
            generatedLine: mapping.generatedLine + (section.generatedOffset.generatedLine - 1),
            generatedColumn: mapping.generatedColumn + (section.generatedOffset.generatedLine === mapping.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0),
            originalLine: mapping.originalLine,
            originalColumn: mapping.originalColumn,
            name: name3
          };
          this.__generatedMappings.push(adjustedMapping);
          if (typeof adjustedMapping.originalLine === "number") {
            this.__originalMappings.push(adjustedMapping);
          }
        }
      }
      quickSort(this.__generatedMappings, util4.compareByGeneratedPositionsDeflated);
      quickSort(this.__originalMappings, util4.compareByOriginalPositions);
    };
    exports2.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
  }
});

// ../../node_modules/source-map-js/lib/source-node.js
var require_source_node = __commonJS({
  "../../node_modules/source-map-js/lib/source-node.js"(exports2) {
    var SourceMapGenerator = require_source_map_generator().SourceMapGenerator;
    var util4 = require_util2();
    var REGEX_NEWLINE = /(\r?\n)/;
    var NEWLINE_CODE = 10;
    var isSourceNode = "$$$isSourceNode$$$";
    function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
      this.children = [];
      this.sourceContents = {};
      this.line = aLine == null ? null : aLine;
      this.column = aColumn == null ? null : aColumn;
      this.source = aSource == null ? null : aSource;
      this.name = aName == null ? null : aName;
      this[isSourceNode] = true;
      if (aChunks != null) this.add(aChunks);
    }
    SourceNode.fromStringWithSourceMap = function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
      var node3 = new SourceNode();
      var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
      var remainingLinesIndex = 0;
      var shiftNextLine = function() {
        var lineContents = getNextLine();
        var newLine = getNextLine() || "";
        return lineContents + newLine;
        function getNextLine() {
          return remainingLinesIndex < remainingLines.length ? remainingLines[remainingLinesIndex++] : void 0;
        }
      };
      var lastGeneratedLine = 1, lastGeneratedColumn = 0;
      var lastMapping = null;
      aSourceMapConsumer.eachMapping(function(mapping) {
        if (lastMapping !== null) {
          if (lastGeneratedLine < mapping.generatedLine) {
            addMappingWithCode(lastMapping, shiftNextLine());
            lastGeneratedLine++;
            lastGeneratedColumn = 0;
          } else {
            var nextLine = remainingLines[remainingLinesIndex] || "";
            var code7 = nextLine.substr(0, mapping.generatedColumn - lastGeneratedColumn);
            remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - lastGeneratedColumn);
            lastGeneratedColumn = mapping.generatedColumn;
            addMappingWithCode(lastMapping, code7);
            lastMapping = mapping;
            return;
          }
        }
        while (lastGeneratedLine < mapping.generatedLine) {
          node3.add(shiftNextLine());
          lastGeneratedLine++;
        }
        if (lastGeneratedColumn < mapping.generatedColumn) {
          var nextLine = remainingLines[remainingLinesIndex] || "";
          node3.add(nextLine.substr(0, mapping.generatedColumn));
          remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);
          lastGeneratedColumn = mapping.generatedColumn;
        }
        lastMapping = mapping;
      }, this);
      if (remainingLinesIndex < remainingLines.length) {
        if (lastMapping) {
          addMappingWithCode(lastMapping, shiftNextLine());
        }
        node3.add(remainingLines.splice(remainingLinesIndex).join(""));
      }
      aSourceMapConsumer.sources.forEach(function(sourceFile) {
        var content3 = aSourceMapConsumer.sourceContentFor(sourceFile);
        if (content3 != null) {
          if (aRelativePath != null) {
            sourceFile = util4.join(aRelativePath, sourceFile);
          }
          node3.setSourceContent(sourceFile, content3);
        }
      });
      return node3;
      function addMappingWithCode(mapping, code7) {
        if (mapping === null || mapping.source === void 0) {
          node3.add(code7);
        } else {
          var source2 = aRelativePath ? util4.join(aRelativePath, mapping.source) : mapping.source;
          node3.add(new SourceNode(
            mapping.originalLine,
            mapping.originalColumn,
            source2,
            code7,
            mapping.name
          ));
        }
      }
    };
    SourceNode.prototype.add = function SourceNode_add(aChunk) {
      if (Array.isArray(aChunk)) {
        aChunk.forEach(function(chunk) {
          this.add(chunk);
        }, this);
      } else if (aChunk[isSourceNode] || typeof aChunk === "string") {
        if (aChunk) {
          this.children.push(aChunk);
        }
      } else {
        throw new TypeError(
          "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
        );
      }
      return this;
    };
    SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
      if (Array.isArray(aChunk)) {
        for (var i2 = aChunk.length - 1; i2 >= 0; i2--) {
          this.prepend(aChunk[i2]);
        }
      } else if (aChunk[isSourceNode] || typeof aChunk === "string") {
        this.children.unshift(aChunk);
      } else {
        throw new TypeError(
          "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
        );
      }
      return this;
    };
    SourceNode.prototype.walk = function SourceNode_walk(aFn) {
      var chunk;
      for (var i2 = 0, len = this.children.length; i2 < len; i2++) {
        chunk = this.children[i2];
        if (chunk[isSourceNode]) {
          chunk.walk(aFn);
        } else {
          if (chunk !== "") {
            aFn(chunk, {
              source: this.source,
              line: this.line,
              column: this.column,
              name: this.name
            });
          }
        }
      }
    };
    SourceNode.prototype.join = function SourceNode_join(aSep) {
      var newChildren;
      var i2;
      var len = this.children.length;
      if (len > 0) {
        newChildren = [];
        for (i2 = 0; i2 < len - 1; i2++) {
          newChildren.push(this.children[i2]);
          newChildren.push(aSep);
        }
        newChildren.push(this.children[i2]);
        this.children = newChildren;
      }
      return this;
    };
    SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
      var lastChild2 = this.children[this.children.length - 1];
      if (lastChild2[isSourceNode]) {
        lastChild2.replaceRight(aPattern, aReplacement);
      } else if (typeof lastChild2 === "string") {
        this.children[this.children.length - 1] = lastChild2.replace(aPattern, aReplacement);
      } else {
        this.children.push("".replace(aPattern, aReplacement));
      }
      return this;
    };
    SourceNode.prototype.setSourceContent = function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
      this.sourceContents[util4.toSetString(aSourceFile)] = aSourceContent;
    };
    SourceNode.prototype.walkSourceContents = function SourceNode_walkSourceContents(aFn) {
      for (var i2 = 0, len = this.children.length; i2 < len; i2++) {
        if (this.children[i2][isSourceNode]) {
          this.children[i2].walkSourceContents(aFn);
        }
      }
      var sources = Object.keys(this.sourceContents);
      for (var i2 = 0, len = sources.length; i2 < len; i2++) {
        aFn(util4.fromSetString(sources[i2]), this.sourceContents[sources[i2]]);
      }
    };
    SourceNode.prototype.toString = function SourceNode_toString() {
      var str2 = "";
      this.walk(function(chunk) {
        str2 += chunk;
      });
      return str2;
    };
    SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
      var generated2 = {
        code: "",
        line: 1,
        column: 0
      };
      var map13 = new SourceMapGenerator(aArgs);
      var sourceMappingActive = false;
      var lastOriginalSource = null;
      var lastOriginalLine = null;
      var lastOriginalColumn = null;
      var lastOriginalName = null;
      this.walk(function(chunk, original) {
        generated2.code += chunk;
        if (original.source !== null && original.line !== null && original.column !== null) {
          if (lastOriginalSource !== original.source || lastOriginalLine !== original.line || lastOriginalColumn !== original.column || lastOriginalName !== original.name) {
            map13.addMapping({
              source: original.source,
              original: {
                line: original.line,
                column: original.column
              },
              generated: {
                line: generated2.line,
                column: generated2.column
              },
              name: original.name
            });
          }
          lastOriginalSource = original.source;
          lastOriginalLine = original.line;
          lastOriginalColumn = original.column;
          lastOriginalName = original.name;
          sourceMappingActive = true;
        } else if (sourceMappingActive) {
          map13.addMapping({
            generated: {
              line: generated2.line,
              column: generated2.column
            }
          });
          lastOriginalSource = null;
          sourceMappingActive = false;
        }
        for (var idx = 0, length = chunk.length; idx < length; idx++) {
          if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
            generated2.line++;
            generated2.column = 0;
            if (idx + 1 === length) {
              lastOriginalSource = null;
              sourceMappingActive = false;
            } else if (sourceMappingActive) {
              map13.addMapping({
                source: original.source,
                original: {
                  line: original.line,
                  column: original.column
                },
                generated: {
                  line: generated2.line,
                  column: generated2.column
                },
                name: original.name
              });
            }
          } else {
            generated2.column++;
          }
        }
      });
      this.walkSourceContents(function(sourceFile, sourceContent) {
        map13.setSourceContent(sourceFile, sourceContent);
      });
      return { code: generated2.code, map: map13 };
    };
    exports2.SourceNode = SourceNode;
  }
});

// ../../node_modules/source-map-js/source-map.js
var require_source_map = __commonJS({
  "../../node_modules/source-map-js/source-map.js"(exports2) {
    exports2.SourceMapGenerator = require_source_map_generator().SourceMapGenerator;
    exports2.SourceMapConsumer = require_source_map_consumer().SourceMapConsumer;
    exports2.SourceNode = require_source_node().SourceNode;
  }
});

// ../../node_modules/postcss/lib/previous-map.js
var require_previous_map = __commonJS({
  "../../node_modules/postcss/lib/previous-map.js"(exports2, module2) {
    "use strict";
    var { existsSync: existsSync2, readFileSync: readFileSync3 } = require("fs");
    var { dirname: dirname8, join: join19 } = require("path");
    var { SourceMapConsumer, SourceMapGenerator } = require_source_map();
    function fromBase64(str2) {
      if (Buffer) {
        return Buffer.from(str2, "base64").toString();
      } else {
        return window.atob(str2);
      }
    }
    var PreviousMap = class {
      constructor(css, opts) {
        if (opts.map === false) return;
        this.loadAnnotation(css);
        this.inline = this.startWith(this.annotation, "data:");
        let prev = opts.map ? opts.map.prev : void 0;
        let text7 = this.loadMap(opts.from, prev);
        if (!this.mapFile && opts.from) {
          this.mapFile = opts.from;
        }
        if (this.mapFile) this.root = dirname8(this.mapFile);
        if (text7) this.text = text7;
      }
      consumer() {
        if (!this.consumerCache) {
          this.consumerCache = new SourceMapConsumer(this.text);
        }
        return this.consumerCache;
      }
      decodeInline(text7) {
        let baseCharsetUri = /^data:application\/json;charset=utf-?8;base64,/;
        let baseUri = /^data:application\/json;base64,/;
        let charsetUri = /^data:application\/json;charset=utf-?8,/;
        let uri = /^data:application\/json,/;
        let uriMatch = text7.match(charsetUri) || text7.match(uri);
        if (uriMatch) {
          return decodeURIComponent(text7.substr(uriMatch[0].length));
        }
        let baseUriMatch = text7.match(baseCharsetUri) || text7.match(baseUri);
        if (baseUriMatch) {
          return fromBase64(text7.substr(baseUriMatch[0].length));
        }
        let encoding = text7.match(/data:application\/json;([^,]+),/)[1];
        throw new Error("Unsupported source map encoding " + encoding);
      }
      getAnnotationURL(sourceMapString) {
        return sourceMapString.replace(/^\/\*\s*# sourceMappingURL=/, "").trim();
      }
      isMap(map13) {
        if (typeof map13 !== "object") return false;
        return typeof map13.mappings === "string" || typeof map13._mappings === "string" || Array.isArray(map13.sections);
      }
      loadAnnotation(css) {
        let comments = css.match(/\/\*\s*# sourceMappingURL=/g);
        if (!comments) return;
        let start = css.lastIndexOf(comments.pop());
        let end = css.indexOf("*/", start);
        if (start > -1 && end > -1) {
          this.annotation = this.getAnnotationURL(css.substring(start, end));
        }
      }
      loadFile(path45) {
        this.root = dirname8(path45);
        if (existsSync2(path45)) {
          this.mapFile = path45;
          return readFileSync3(path45, "utf-8").toString().trim();
        }
      }
      loadMap(file, prev) {
        if (prev === false) return false;
        if (prev) {
          if (typeof prev === "string") {
            return prev;
          } else if (typeof prev === "function") {
            let prevPath = prev(file);
            if (prevPath) {
              let map13 = this.loadFile(prevPath);
              if (!map13) {
                throw new Error(
                  "Unable to load previous source map: " + prevPath.toString()
                );
              }
              return map13;
            }
          } else if (prev instanceof SourceMapConsumer) {
            return SourceMapGenerator.fromSourceMap(prev).toString();
          } else if (prev instanceof SourceMapGenerator) {
            return prev.toString();
          } else if (this.isMap(prev)) {
            return JSON.stringify(prev);
          } else {
            throw new Error(
              "Unsupported previous source map format: " + prev.toString()
            );
          }
        } else if (this.inline) {
          return this.decodeInline(this.annotation);
        } else if (this.annotation) {
          let map13 = this.annotation;
          if (file) map13 = join19(dirname8(file), map13);
          return this.loadFile(map13);
        }
      }
      startWith(string2, start) {
        if (!string2) return false;
        return string2.substr(0, start.length) === start;
      }
      withContent() {
        return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);
      }
    };
    module2.exports = PreviousMap;
    PreviousMap.default = PreviousMap;
  }
});

// ../../node_modules/postcss/lib/input.js
var require_input4 = __commonJS({
  "../../node_modules/postcss/lib/input.js"(exports2, module2) {
    "use strict";
    var { nanoid: nanoid3 } = require_non_secure();
    var { isAbsolute, resolve: resolve9 } = require("path");
    var { SourceMapConsumer, SourceMapGenerator } = require_source_map();
    var { fileURLToPath: fileURLToPath5, pathToFileURL: pathToFileURL2 } = require("url");
    var CssSyntaxError = require_css_syntax_error();
    var PreviousMap = require_previous_map();
    var terminalHighlight = require_terminal_highlight();
    var lineToIndexCache = Symbol("lineToIndexCache");
    var sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);
    var pathAvailable = Boolean(resolve9 && isAbsolute);
    function getLineToIndex(input3) {
      if (input3[lineToIndexCache]) return input3[lineToIndexCache];
      let lines = input3.css.split("\n");
      let lineToIndex = new Array(lines.length);
      let prevIndex = 0;
      for (let i2 = 0, l = lines.length; i2 < l; i2++) {
        lineToIndex[i2] = prevIndex;
        prevIndex += lines[i2].length + 1;
      }
      input3[lineToIndexCache] = lineToIndex;
      return lineToIndex;
    }
    var Input = class {
      get from() {
        return this.file || this.id;
      }
      constructor(css, opts = {}) {
        if (css === null || typeof css === "undefined" || typeof css === "object" && !css.toString) {
          throw new Error(`PostCSS received ${css} instead of CSS string`);
        }
        this.css = css.toString();
        if (this.css[0] === "\uFEFF" || this.css[0] === "\uFFFE") {
          this.hasBOM = true;
          this.css = this.css.slice(1);
        } else {
          this.hasBOM = false;
        }
        this.document = this.css;
        if (opts.document) this.document = opts.document.toString();
        if (opts.from) {
          if (!pathAvailable || /^\w+:\/\//.test(opts.from) || isAbsolute(opts.from)) {
            this.file = opts.from;
          } else {
            this.file = resolve9(opts.from);
          }
        }
        if (pathAvailable && sourceMapAvailable) {
          let map13 = new PreviousMap(this.css, opts);
          if (map13.text) {
            this.map = map13;
            let file = map13.consumer().file;
            if (!this.file && file) this.file = this.mapResolve(file);
          }
        }
        if (!this.file) {
          this.id = "<input css " + nanoid3(6) + ">";
        }
        if (this.map) this.map.file = this.from;
      }
      error(message, line2, column, opts = {}) {
        let endColumn, endLine, endOffset, offset, result;
        if (line2 && typeof line2 === "object") {
          let start = line2;
          let end = column;
          if (typeof start.offset === "number") {
            offset = start.offset;
            let pos = this.fromOffset(offset);
            line2 = pos.line;
            column = pos.col;
          } else {
            line2 = start.line;
            column = start.column;
            offset = this.fromLineAndColumn(line2, column);
          }
          if (typeof end.offset === "number") {
            endOffset = end.offset;
            let pos = this.fromOffset(endOffset);
            endLine = pos.line;
            endColumn = pos.col;
          } else {
            endLine = end.line;
            endColumn = end.column;
            endOffset = this.fromLineAndColumn(end.line, end.column);
          }
        } else if (!column) {
          offset = line2;
          let pos = this.fromOffset(offset);
          line2 = pos.line;
          column = pos.col;
        } else {
          offset = this.fromLineAndColumn(line2, column);
        }
        let origin = this.origin(line2, column, endLine, endColumn);
        if (origin) {
          result = new CssSyntaxError(
            message,
            origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },
            origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },
            origin.source,
            origin.file,
            opts.plugin
          );
        } else {
          result = new CssSyntaxError(
            message,
            endLine === void 0 ? line2 : { column, line: line2 },
            endLine === void 0 ? column : { column: endColumn, line: endLine },
            this.css,
            this.file,
            opts.plugin
          );
        }
        result.input = { column, endColumn, endLine, endOffset, line: line2, offset, source: this.css };
        if (this.file) {
          if (pathToFileURL2) {
            result.input.url = pathToFileURL2(this.file).toString();
          }
          result.input.file = this.file;
        }
        return result;
      }
      fromLineAndColumn(line2, column) {
        let lineToIndex = getLineToIndex(this);
        let index4 = lineToIndex[line2 - 1];
        return index4 + column - 1;
      }
      fromOffset(offset) {
        let lineToIndex = getLineToIndex(this);
        let lastLine2 = lineToIndex[lineToIndex.length - 1];
        let min = 0;
        if (offset >= lastLine2) {
          min = lineToIndex.length - 1;
        } else {
          let max = lineToIndex.length - 2;
          let mid;
          while (min < max) {
            mid = min + (max - min >> 1);
            if (offset < lineToIndex[mid]) {
              max = mid - 1;
            } else if (offset >= lineToIndex[mid + 1]) {
              min = mid + 1;
            } else {
              min = mid;
              break;
            }
          }
        }
        return {
          col: offset - lineToIndex[min] + 1,
          line: min + 1
        };
      }
      mapResolve(file) {
        if (/^\w+:\/\//.test(file)) {
          return file;
        }
        return resolve9(this.map.consumer().sourceRoot || this.map.root || ".", file);
      }
      origin(line2, column, endLine, endColumn) {
        if (!this.map) return false;
        let consumer = this.map.consumer();
        let from4 = consumer.originalPositionFor({ column, line: line2 });
        if (!from4.source) return false;
        let to;
        if (typeof endLine === "number") {
          to = consumer.originalPositionFor({ column: endColumn, line: endLine });
        }
        let fromUrl;
        if (isAbsolute(from4.source)) {
          fromUrl = pathToFileURL2(from4.source);
        } else {
          fromUrl = new URL(
            from4.source,
            this.map.consumer().sourceRoot || pathToFileURL2(this.map.mapFile)
          );
        }
        let result = {
          column: from4.column,
          endColumn: to && to.column,
          endLine: to && to.line,
          line: from4.line,
          url: fromUrl.toString()
        };
        if (fromUrl.protocol === "file:") {
          if (fileURLToPath5) {
            result.file = fileURLToPath5(fromUrl);
          } else {
            throw new Error(`file: protocol is not available in this PostCSS build`);
          }
        }
        let source2 = consumer.sourceContentFor(from4.source);
        if (source2) result.source = source2;
        return result;
      }
      toJSON() {
        let json2 = {};
        for (let name3 of ["hasBOM", "css", "file", "id"]) {
          if (this[name3] != null) {
            json2[name3] = this[name3];
          }
        }
        if (this.map) {
          json2.map = { ...this.map };
          if (json2.map.consumerCache) {
            json2.map.consumerCache = void 0;
          }
        }
        return json2;
      }
    };
    module2.exports = Input;
    Input.default = Input;
    if (terminalHighlight && terminalHighlight.registerInput) {
      terminalHighlight.registerInput(Input);
    }
  }
});

// ../../node_modules/postcss/lib/root.js
var require_root = __commonJS({
  "../../node_modules/postcss/lib/root.js"(exports2, module2) {
    "use strict";
    var Container = require_container();
    var LazyResult;
    var Processor2;
    var Root = class extends Container {
      constructor(defaults3) {
        super(defaults3);
        this.type = "root";
        if (!this.nodes) this.nodes = [];
      }
      normalize(child, sample, type2) {
        let nodes = super.normalize(child);
        if (sample) {
          if (type2 === "prepend") {
            if (this.nodes.length > 1) {
              sample.raws.before = this.nodes[1].raws.before;
            } else {
              delete sample.raws.before;
            }
          } else if (this.first !== sample) {
            for (let node3 of nodes) {
              node3.raws.before = sample.raws.before;
            }
          }
        }
        return nodes;
      }
      removeChild(child, ignore3) {
        let index4 = this.index(child);
        if (!ignore3 && index4 === 0 && this.nodes.length > 1) {
          this.nodes[1].raws.before = this.nodes[index4].raws.before;
        }
        return super.removeChild(child);
      }
      toResult(opts = {}) {
        let lazy = new LazyResult(new Processor2(), this, opts);
        return lazy.stringify();
      }
    };
    Root.registerLazyResult = (dependant) => {
      LazyResult = dependant;
    };
    Root.registerProcessor = (dependant) => {
      Processor2 = dependant;
    };
    module2.exports = Root;
    Root.default = Root;
    Container.registerRoot(Root);
  }
});

// ../../node_modules/postcss/lib/list.js
var require_list = __commonJS({
  "../../node_modules/postcss/lib/list.js"(exports2, module2) {
    "use strict";
    var list6 = {
      comma(string2) {
        return list6.split(string2, [","], true);
      },
      space(string2) {
        let spaces = [" ", "\n", "	"];
        return list6.split(string2, spaces);
      },
      split(string2, separators, last) {
        let array = [];
        let current2 = "";
        let split2 = false;
        let func = 0;
        let inQuote = false;
        let prevQuote = "";
        let escape5 = false;
        for (let letter of string2) {
          if (escape5) {
            escape5 = false;
          } else if (letter === "\\") {
            escape5 = true;
          } else if (inQuote) {
            if (letter === prevQuote) {
              inQuote = false;
            }
          } else if (letter === '"' || letter === "'") {
            inQuote = true;
            prevQuote = letter;
          } else if (letter === "(") {
            func += 1;
          } else if (letter === ")") {
            if (func > 0) func -= 1;
          } else if (func === 0) {
            if (separators.includes(letter)) split2 = true;
          }
          if (split2) {
            if (current2 !== "") array.push(current2.trim());
            current2 = "";
            split2 = false;
          } else {
            current2 += letter;
          }
        }
        if (last || current2 !== "") array.push(current2.trim());
        return array;
      }
    };
    module2.exports = list6;
    list6.default = list6;
  }
});

// ../../node_modules/postcss/lib/rule.js
var require_rule = __commonJS({
  "../../node_modules/postcss/lib/rule.js"(exports2, module2) {
    "use strict";
    var Container = require_container();
    var list6 = require_list();
    var Rule = class extends Container {
      get selectors() {
        return list6.comma(this.selector);
      }
      set selectors(values) {
        let match3 = this.selector ? this.selector.match(/,\s*/) : null;
        let sep5 = match3 ? match3[0] : "," + this.raw("between", "beforeOpen");
        this.selector = values.join(sep5);
      }
      constructor(defaults3) {
        super(defaults3);
        this.type = "rule";
        if (!this.nodes) this.nodes = [];
      }
    };
    module2.exports = Rule;
    Rule.default = Rule;
    Container.registerRule(Rule);
  }
});

// ../../node_modules/postcss/lib/fromJSON.js
var require_fromJSON = __commonJS({
  "../../node_modules/postcss/lib/fromJSON.js"(exports2, module2) {
    "use strict";
    var AtRule = require_at_rule();
    var Comment = require_comment();
    var Declaration = require_declaration();
    var Input = require_input4();
    var PreviousMap = require_previous_map();
    var Root = require_root();
    var Rule = require_rule();
    function fromJSON(json2, inputs) {
      if (Array.isArray(json2)) return json2.map((n) => fromJSON(n));
      let { inputs: ownInputs, ...defaults3 } = json2;
      if (ownInputs) {
        inputs = [];
        for (let input3 of ownInputs) {
          let inputHydrated = { ...input3, __proto__: Input.prototype };
          if (inputHydrated.map) {
            inputHydrated.map = {
              ...inputHydrated.map,
              __proto__: PreviousMap.prototype
            };
          }
          inputs.push(inputHydrated);
        }
      }
      if (defaults3.nodes) {
        defaults3.nodes = json2.nodes.map((n) => fromJSON(n, inputs));
      }
      if (defaults3.source) {
        let { inputId, ...source2 } = defaults3.source;
        defaults3.source = source2;
        if (inputId != null) {
          defaults3.source.input = inputs[inputId];
        }
      }
      if (defaults3.type === "root") {
        return new Root(defaults3);
      } else if (defaults3.type === "decl") {
        return new Declaration(defaults3);
      } else if (defaults3.type === "rule") {
        return new Rule(defaults3);
      } else if (defaults3.type === "comment") {
        return new Comment(defaults3);
      } else if (defaults3.type === "atrule") {
        return new AtRule(defaults3);
      } else {
        throw new Error("Unknown node type: " + json2.type);
      }
    }
    module2.exports = fromJSON;
    fromJSON.default = fromJSON;
  }
});

// ../../node_modules/postcss/lib/map-generator.js
var require_map_generator = __commonJS({
  "../../node_modules/postcss/lib/map-generator.js"(exports2, module2) {
    "use strict";
    var { dirname: dirname8, relative: relative6, resolve: resolve9, sep: sep5 } = require("path");
    var { SourceMapConsumer, SourceMapGenerator } = require_source_map();
    var { pathToFileURL: pathToFileURL2 } = require("url");
    var Input = require_input4();
    var sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);
    var pathAvailable = Boolean(dirname8 && resolve9 && relative6 && sep5);
    var MapGenerator = class {
      constructor(stringify4, root6, opts, cssString) {
        this.stringify = stringify4;
        this.mapOpts = opts.map || {};
        this.root = root6;
        this.opts = opts;
        this.css = cssString;
        this.originalCSS = cssString;
        this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;
        this.memoizedFileURLs = /* @__PURE__ */ new Map();
        this.memoizedPaths = /* @__PURE__ */ new Map();
        this.memoizedURLs = /* @__PURE__ */ new Map();
      }
      addAnnotation() {
        let content3;
        if (this.isInline()) {
          content3 = "data:application/json;base64," + this.toBase64(this.map.toString());
        } else if (typeof this.mapOpts.annotation === "string") {
          content3 = this.mapOpts.annotation;
        } else if (typeof this.mapOpts.annotation === "function") {
          content3 = this.mapOpts.annotation(this.opts.to, this.root);
        } else {
          content3 = this.outputFile() + ".map";
        }
        let eol2 = "\n";
        if (this.css.includes("\r\n")) eol2 = "\r\n";
        this.css += eol2 + "/*# sourceMappingURL=" + content3 + " */";
      }
      applyPrevMaps() {
        for (let prev of this.previous()) {
          let from4 = this.toUrl(this.path(prev.file));
          let root6 = prev.root || dirname8(prev.file);
          let map13;
          if (this.mapOpts.sourcesContent === false) {
            map13 = new SourceMapConsumer(prev.text);
            if (map13.sourcesContent) {
              map13.sourcesContent = null;
            }
          } else {
            map13 = prev.consumer();
          }
          this.map.applySourceMap(map13, from4, this.toUrl(this.path(root6)));
        }
      }
      clearAnnotation() {
        if (this.mapOpts.annotation === false) return;
        if (this.root) {
          let node3;
          for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {
            node3 = this.root.nodes[i2];
            if (node3.type !== "comment") continue;
            if (node3.text.startsWith("# sourceMappingURL=")) {
              this.root.removeChild(i2);
            }
          }
        } else if (this.css) {
          this.css = this.css.replace(/\n*\/\*#[\S\s]*?\*\/$/gm, "");
        }
      }
      generate() {
        this.clearAnnotation();
        if (pathAvailable && sourceMapAvailable && this.isMap()) {
          return this.generateMap();
        } else {
          let result = "";
          this.stringify(this.root, (i2) => {
            result += i2;
          });
          return [result];
        }
      }
      generateMap() {
        if (this.root) {
          this.generateString();
        } else if (this.previous().length === 1) {
          let prev = this.previous()[0].consumer();
          prev.file = this.outputFile();
          this.map = SourceMapGenerator.fromSourceMap(prev, {
            ignoreInvalidMapping: true
          });
        } else {
          this.map = new SourceMapGenerator({
            file: this.outputFile(),
            ignoreInvalidMapping: true
          });
          this.map.addMapping({
            generated: { column: 0, line: 1 },
            original: { column: 0, line: 1 },
            source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : "<no source>"
          });
        }
        if (this.isSourcesContent()) this.setSourcesContent();
        if (this.root && this.previous().length > 0) this.applyPrevMaps();
        if (this.isAnnotation()) this.addAnnotation();
        if (this.isInline()) {
          return [this.css];
        } else {
          return [this.css, this.map];
        }
      }
      generateString() {
        this.css = "";
        this.map = new SourceMapGenerator({
          file: this.outputFile(),
          ignoreInvalidMapping: true
        });
        let line2 = 1;
        let column = 1;
        let noSource = "<no source>";
        let mapping = {
          generated: { column: 0, line: 0 },
          original: { column: 0, line: 0 },
          source: ""
        };
        let last, lines;
        this.stringify(this.root, (str2, node3, type2) => {
          this.css += str2;
          if (node3 && type2 !== "end") {
            mapping.generated.line = line2;
            mapping.generated.column = column - 1;
            if (node3.source && node3.source.start) {
              mapping.source = this.sourcePath(node3);
              mapping.original.line = node3.source.start.line;
              mapping.original.column = node3.source.start.column - 1;
              this.map.addMapping(mapping);
            } else {
              mapping.source = noSource;
              mapping.original.line = 1;
              mapping.original.column = 0;
              this.map.addMapping(mapping);
            }
          }
          lines = str2.match(/\n/g);
          if (lines) {
            line2 += lines.length;
            last = str2.lastIndexOf("\n");
            column = str2.length - last;
          } else {
            column += str2.length;
          }
          if (node3 && type2 !== "start") {
            let p5 = node3.parent || { raws: {} };
            let childless = node3.type === "decl" || node3.type === "atrule" && !node3.nodes;
            if (!childless || node3 !== p5.last || p5.raws.semicolon) {
              if (node3.source && node3.source.end) {
                mapping.source = this.sourcePath(node3);
                mapping.original.line = node3.source.end.line;
                mapping.original.column = node3.source.end.column - 1;
                mapping.generated.line = line2;
                mapping.generated.column = column - 2;
                this.map.addMapping(mapping);
              } else {
                mapping.source = noSource;
                mapping.original.line = 1;
                mapping.original.column = 0;
                mapping.generated.line = line2;
                mapping.generated.column = column - 1;
                this.map.addMapping(mapping);
              }
            }
          }
        });
      }
      isAnnotation() {
        if (this.isInline()) {
          return true;
        }
        if (typeof this.mapOpts.annotation !== "undefined") {
          return this.mapOpts.annotation;
        }
        if (this.previous().length) {
          return this.previous().some((i2) => i2.annotation);
        }
        return true;
      }
      isInline() {
        if (typeof this.mapOpts.inline !== "undefined") {
          return this.mapOpts.inline;
        }
        let annotation = this.mapOpts.annotation;
        if (typeof annotation !== "undefined" && annotation !== true) {
          return false;
        }
        if (this.previous().length) {
          return this.previous().some((i2) => i2.inline);
        }
        return true;
      }
      isMap() {
        if (typeof this.opts.map !== "undefined") {
          return !!this.opts.map;
        }
        return this.previous().length > 0;
      }
      isSourcesContent() {
        if (typeof this.mapOpts.sourcesContent !== "undefined") {
          return this.mapOpts.sourcesContent;
        }
        if (this.previous().length) {
          return this.previous().some((i2) => i2.withContent());
        }
        return true;
      }
      outputFile() {
        if (this.opts.to) {
          return this.path(this.opts.to);
        } else if (this.opts.from) {
          return this.path(this.opts.from);
        } else {
          return "to.css";
        }
      }
      path(file) {
        if (this.mapOpts.absolute) return file;
        if (file.charCodeAt(0) === 60) return file;
        if (/^\w+:\/\//.test(file)) return file;
        let cached = this.memoizedPaths.get(file);
        if (cached) return cached;
        let from4 = this.opts.to ? dirname8(this.opts.to) : ".";
        if (typeof this.mapOpts.annotation === "string") {
          from4 = dirname8(resolve9(from4, this.mapOpts.annotation));
        }
        let path45 = relative6(from4, file);
        this.memoizedPaths.set(file, path45);
        return path45;
      }
      previous() {
        if (!this.previousMaps) {
          this.previousMaps = [];
          if (this.root) {
            this.root.walk((node3) => {
              if (node3.source && node3.source.input.map) {
                let map13 = node3.source.input.map;
                if (!this.previousMaps.includes(map13)) {
                  this.previousMaps.push(map13);
                }
              }
            });
          } else {
            let input3 = new Input(this.originalCSS, this.opts);
            if (input3.map) this.previousMaps.push(input3.map);
          }
        }
        return this.previousMaps;
      }
      setSourcesContent() {
        let already = {};
        if (this.root) {
          this.root.walk((node3) => {
            if (node3.source) {
              let from4 = node3.source.input.from;
              if (from4 && !already[from4]) {
                already[from4] = true;
                let fromUrl = this.usesFileUrls ? this.toFileUrl(from4) : this.toUrl(this.path(from4));
                this.map.setSourceContent(fromUrl, node3.source.input.css);
              }
            }
          });
        } else if (this.css) {
          let from4 = this.opts.from ? this.toUrl(this.path(this.opts.from)) : "<no source>";
          this.map.setSourceContent(from4, this.css);
        }
      }
      sourcePath(node3) {
        if (this.mapOpts.from) {
          return this.toUrl(this.mapOpts.from);
        } else if (this.usesFileUrls) {
          return this.toFileUrl(node3.source.input.from);
        } else {
          return this.toUrl(this.path(node3.source.input.from));
        }
      }
      toBase64(str2) {
        if (Buffer) {
          return Buffer.from(str2).toString("base64");
        } else {
          return window.btoa(unescape(encodeURIComponent(str2)));
        }
      }
      toFileUrl(path45) {
        let cached = this.memoizedFileURLs.get(path45);
        if (cached) return cached;
        if (pathToFileURL2) {
          let fileURL = pathToFileURL2(path45).toString();
          this.memoizedFileURLs.set(path45, fileURL);
          return fileURL;
        } else {
          throw new Error(
            "`map.absolute` option is not available in this PostCSS build"
          );
        }
      }
      toUrl(path45) {
        let cached = this.memoizedURLs.get(path45);
        if (cached) return cached;
        if (sep5 === "\\") {
          path45 = path45.replace(/\\/g, "/");
        }
        let url = encodeURI(path45).replace(/[#?]/g, encodeURIComponent);
        this.memoizedURLs.set(path45, url);
        return url;
      }
    };
    module2.exports = MapGenerator;
  }
});

// ../../node_modules/postcss/lib/parser.js
var require_parser3 = __commonJS({
  "../../node_modules/postcss/lib/parser.js"(exports2, module2) {
    "use strict";
    var AtRule = require_at_rule();
    var Comment = require_comment();
    var Declaration = require_declaration();
    var Root = require_root();
    var Rule = require_rule();
    var tokenizer = require_tokenize();
    var SAFE_COMMENT_NEIGHBOR = {
      empty: true,
      space: true
    };
    function findLastWithPosition(tokens) {
      for (let i2 = tokens.length - 1; i2 >= 0; i2--) {
        let token = tokens[i2];
        let pos = token[3] || token[2];
        if (pos) return pos;
      }
    }
    var Parser3 = class {
      constructor(input3) {
        this.input = input3;
        this.root = new Root();
        this.current = this.root;
        this.spaces = "";
        this.semicolon = false;
        this.createTokenizer();
        this.root.source = { input: input3, start: { column: 1, line: 1, offset: 0 } };
      }
      atrule(token) {
        let node3 = new AtRule();
        node3.name = token[1].slice(1);
        if (node3.name === "") {
          this.unnamedAtrule(node3, token);
        }
        this.init(node3, token[2]);
        let type2;
        let prev;
        let shift;
        let last = false;
        let open2 = false;
        let params = [];
        let brackets = [];
        while (!this.tokenizer.endOfFile()) {
          token = this.tokenizer.nextToken();
          type2 = token[0];
          if (type2 === "(" || type2 === "[") {
            brackets.push(type2 === "(" ? ")" : "]");
          } else if (type2 === "{" && brackets.length > 0) {
            brackets.push("}");
          } else if (type2 === brackets[brackets.length - 1]) {
            brackets.pop();
          }
          if (brackets.length === 0) {
            if (type2 === ";") {
              node3.source.end = this.getPosition(token[2]);
              node3.source.end.offset++;
              this.semicolon = true;
              break;
            } else if (type2 === "{") {
              open2 = true;
              break;
            } else if (type2 === "}") {
              if (params.length > 0) {
                shift = params.length - 1;
                prev = params[shift];
                while (prev && prev[0] === "space") {
                  prev = params[--shift];
                }
                if (prev) {
                  node3.source.end = this.getPosition(prev[3] || prev[2]);
                  node3.source.end.offset++;
                }
              }
              this.end(token);
              break;
            } else {
              params.push(token);
            }
          } else {
            params.push(token);
          }
          if (this.tokenizer.endOfFile()) {
            last = true;
            break;
          }
        }
        node3.raws.between = this.spacesAndCommentsFromEnd(params);
        if (params.length) {
          node3.raws.afterName = this.spacesAndCommentsFromStart(params);
          this.raw(node3, "params", params);
          if (last) {
            token = params[params.length - 1];
            node3.source.end = this.getPosition(token[3] || token[2]);
            node3.source.end.offset++;
            this.spaces = node3.raws.between;
            node3.raws.between = "";
          }
        } else {
          node3.raws.afterName = "";
          node3.params = "";
        }
        if (open2) {
          node3.nodes = [];
          this.current = node3;
        }
      }
      checkMissedSemicolon(tokens) {
        let colon = this.colon(tokens);
        if (colon === false) return;
        let founded = 0;
        let token;
        for (let j = colon - 1; j >= 0; j--) {
          token = tokens[j];
          if (token[0] !== "space") {
            founded += 1;
            if (founded === 2) break;
          }
        }
        throw this.input.error(
          "Missed semicolon",
          token[0] === "word" ? token[3] + 1 : token[2]
        );
      }
      colon(tokens) {
        let brackets = 0;
        let prev, token, type2;
        for (let [i2, element5] of tokens.entries()) {
          token = element5;
          type2 = token[0];
          if (type2 === "(") {
            brackets += 1;
          }
          if (type2 === ")") {
            brackets -= 1;
          }
          if (brackets === 0 && type2 === ":") {
            if (!prev) {
              this.doubleColon(token);
            } else if (prev[0] === "word" && prev[1] === "progid") {
              continue;
            } else {
              return i2;
            }
          }
          prev = token;
        }
        return false;
      }
      comment(token) {
        let node3 = new Comment();
        this.init(node3, token[2]);
        node3.source.end = this.getPosition(token[3] || token[2]);
        node3.source.end.offset++;
        let text7 = token[1].slice(2, -2);
        if (/^\s*$/.test(text7)) {
          node3.text = "";
          node3.raws.left = text7;
          node3.raws.right = "";
        } else {
          let match3 = text7.match(/^(\s*)([^]*\S)(\s*)$/);
          node3.text = match3[2];
          node3.raws.left = match3[1];
          node3.raws.right = match3[3];
        }
      }
      createTokenizer() {
        this.tokenizer = tokenizer(this.input);
      }
      decl(tokens, customProperty) {
        let node3 = new Declaration();
        this.init(node3, tokens[0][2]);
        let last = tokens[tokens.length - 1];
        if (last[0] === ";") {
          this.semicolon = true;
          tokens.pop();
        }
        node3.source.end = this.getPosition(
          last[3] || last[2] || findLastWithPosition(tokens)
        );
        node3.source.end.offset++;
        while (tokens[0][0] !== "word") {
          if (tokens.length === 1) this.unknownWord(tokens);
          node3.raws.before += tokens.shift()[1];
        }
        node3.source.start = this.getPosition(tokens[0][2]);
        node3.prop = "";
        while (tokens.length) {
          let type2 = tokens[0][0];
          if (type2 === ":" || type2 === "space" || type2 === "comment") {
            break;
          }
          node3.prop += tokens.shift()[1];
        }
        node3.raws.between = "";
        let token;
        while (tokens.length) {
          token = tokens.shift();
          if (token[0] === ":") {
            node3.raws.between += token[1];
            break;
          } else {
            if (token[0] === "word" && /\w/.test(token[1])) {
              this.unknownWord([token]);
            }
            node3.raws.between += token[1];
          }
        }
        if (node3.prop[0] === "_" || node3.prop[0] === "*") {
          node3.raws.before += node3.prop[0];
          node3.prop = node3.prop.slice(1);
        }
        let firstSpaces = [];
        let next;
        while (tokens.length) {
          next = tokens[0][0];
          if (next !== "space" && next !== "comment") break;
          firstSpaces.push(tokens.shift());
        }
        this.precheckMissedSemicolon(tokens);
        for (let i2 = tokens.length - 1; i2 >= 0; i2--) {
          token = tokens[i2];
          if (token[1].toLowerCase() === "!important") {
            node3.important = true;
            let string2 = this.stringFrom(tokens, i2);
            string2 = this.spacesFromEnd(tokens) + string2;
            if (string2 !== " !important") node3.raws.important = string2;
            break;
          } else if (token[1].toLowerCase() === "important") {
            let cache = tokens.slice(0);
            let str2 = "";
            for (let j = i2; j > 0; j--) {
              let type2 = cache[j][0];
              if (str2.trim().startsWith("!") && type2 !== "space") {
                break;
              }
              str2 = cache.pop()[1] + str2;
            }
            if (str2.trim().startsWith("!")) {
              node3.important = true;
              node3.raws.important = str2;
              tokens = cache;
            }
          }
          if (token[0] !== "space" && token[0] !== "comment") {
            break;
          }
        }
        let hasWord = tokens.some((i2) => i2[0] !== "space" && i2[0] !== "comment");
        if (hasWord) {
          node3.raws.between += firstSpaces.map((i2) => i2[1]).join("");
          firstSpaces = [];
        }
        this.raw(node3, "value", firstSpaces.concat(tokens), customProperty);
        if (node3.value.includes(":") && !customProperty) {
          this.checkMissedSemicolon(tokens);
        }
      }
      doubleColon(token) {
        throw this.input.error(
          "Double colon",
          { offset: token[2] },
          { offset: token[2] + token[1].length }
        );
      }
      emptyRule(token) {
        let node3 = new Rule();
        this.init(node3, token[2]);
        node3.selector = "";
        node3.raws.between = "";
        this.current = node3;
      }
      end(token) {
        if (this.current.nodes && this.current.nodes.length) {
          this.current.raws.semicolon = this.semicolon;
        }
        this.semicolon = false;
        this.current.raws.after = (this.current.raws.after || "") + this.spaces;
        this.spaces = "";
        if (this.current.parent) {
          this.current.source.end = this.getPosition(token[2]);
          this.current.source.end.offset++;
          this.current = this.current.parent;
        } else {
          this.unexpectedClose(token);
        }
      }
      endFile() {
        if (this.current.parent) this.unclosedBlock();
        if (this.current.nodes && this.current.nodes.length) {
          this.current.raws.semicolon = this.semicolon;
        }
        this.current.raws.after = (this.current.raws.after || "") + this.spaces;
        this.root.source.end = this.getPosition(this.tokenizer.position());
      }
      freeSemicolon(token) {
        this.spaces += token[1];
        if (this.current.nodes) {
          let prev = this.current.nodes[this.current.nodes.length - 1];
          if (prev && prev.type === "rule" && !prev.raws.ownSemicolon) {
            prev.raws.ownSemicolon = this.spaces;
            this.spaces = "";
            prev.source.end = this.getPosition(token[2]);
            prev.source.end.offset += prev.raws.ownSemicolon.length;
          }
        }
      }
      // Helpers
      getPosition(offset) {
        let pos = this.input.fromOffset(offset);
        return {
          column: pos.col,
          line: pos.line,
          offset
        };
      }
      init(node3, offset) {
        this.current.push(node3);
        node3.source = {
          input: this.input,
          start: this.getPosition(offset)
        };
        node3.raws.before = this.spaces;
        this.spaces = "";
        if (node3.type !== "comment") this.semicolon = false;
      }
      other(start) {
        let end = false;
        let type2 = null;
        let colon = false;
        let bracket = null;
        let brackets = [];
        let customProperty = start[1].startsWith("--");
        let tokens = [];
        let token = start;
        while (token) {
          type2 = token[0];
          tokens.push(token);
          if (type2 === "(" || type2 === "[") {
            if (!bracket) bracket = token;
            brackets.push(type2 === "(" ? ")" : "]");
          } else if (customProperty && colon && type2 === "{") {
            if (!bracket) bracket = token;
            brackets.push("}");
          } else if (brackets.length === 0) {
            if (type2 === ";") {
              if (colon) {
                this.decl(tokens, customProperty);
                return;
              } else {
                break;
              }
            } else if (type2 === "{") {
              this.rule(tokens);
              return;
            } else if (type2 === "}") {
              this.tokenizer.back(tokens.pop());
              end = true;
              break;
            } else if (type2 === ":") {
              colon = true;
            }
          } else if (type2 === brackets[brackets.length - 1]) {
            brackets.pop();
            if (brackets.length === 0) bracket = null;
          }
          token = this.tokenizer.nextToken();
        }
        if (this.tokenizer.endOfFile()) end = true;
        if (brackets.length > 0) this.unclosedBracket(bracket);
        if (end && colon) {
          if (!customProperty) {
            while (tokens.length) {
              token = tokens[tokens.length - 1][0];
              if (token !== "space" && token !== "comment") break;
              this.tokenizer.back(tokens.pop());
            }
          }
          this.decl(tokens, customProperty);
        } else {
          this.unknownWord(tokens);
        }
      }
      parse() {
        let token;
        while (!this.tokenizer.endOfFile()) {
          token = this.tokenizer.nextToken();
          switch (token[0]) {
            case "space":
              this.spaces += token[1];
              break;
            case ";":
              this.freeSemicolon(token);
              break;
            case "}":
              this.end(token);
              break;
            case "comment":
              this.comment(token);
              break;
            case "at-word":
              this.atrule(token);
              break;
            case "{":
              this.emptyRule(token);
              break;
            default:
              this.other(token);
              break;
          }
        }
        this.endFile();
      }
      precheckMissedSemicolon() {
      }
      raw(node3, prop, tokens, customProperty) {
        let token, type2;
        let length = tokens.length;
        let value = "";
        let clean3 = true;
        let next, prev;
        for (let i2 = 0; i2 < length; i2 += 1) {
          token = tokens[i2];
          type2 = token[0];
          if (type2 === "space" && i2 === length - 1 && !customProperty) {
            clean3 = false;
          } else if (type2 === "comment") {
            prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : "empty";
            next = tokens[i2 + 1] ? tokens[i2 + 1][0] : "empty";
            if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {
              if (value.slice(-1) === ",") {
                clean3 = false;
              } else {
                value += token[1];
              }
            } else {
              clean3 = false;
            }
          } else {
            value += token[1];
          }
        }
        if (!clean3) {
          let raw2 = tokens.reduce((all10, i2) => all10 + i2[1], "");
          node3.raws[prop] = { raw: raw2, value };
        }
        node3[prop] = value;
      }
      rule(tokens) {
        tokens.pop();
        let node3 = new Rule();
        this.init(node3, tokens[0][2]);
        node3.raws.between = this.spacesAndCommentsFromEnd(tokens);
        this.raw(node3, "selector", tokens);
        this.current = node3;
      }
      spacesAndCommentsFromEnd(tokens) {
        let lastTokenType;
        let spaces = "";
        while (tokens.length) {
          lastTokenType = tokens[tokens.length - 1][0];
          if (lastTokenType !== "space" && lastTokenType !== "comment") break;
          spaces = tokens.pop()[1] + spaces;
        }
        return spaces;
      }
      // Errors
      spacesAndCommentsFromStart(tokens) {
        let next;
        let spaces = "";
        while (tokens.length) {
          next = tokens[0][0];
          if (next !== "space" && next !== "comment") break;
          spaces += tokens.shift()[1];
        }
        return spaces;
      }
      spacesFromEnd(tokens) {
        let lastTokenType;
        let spaces = "";
        while (tokens.length) {
          lastTokenType = tokens[tokens.length - 1][0];
          if (lastTokenType !== "space") break;
          spaces = tokens.pop()[1] + spaces;
        }
        return spaces;
      }
      stringFrom(tokens, from4) {
        let result = "";
        for (let i2 = from4; i2 < tokens.length; i2++) {
          result += tokens[i2][1];
        }
        tokens.splice(from4, tokens.length - from4);
        return result;
      }
      unclosedBlock() {
        let pos = this.current.source.start;
        throw this.input.error("Unclosed block", pos.line, pos.column);
      }
      unclosedBracket(bracket) {
        throw this.input.error(
          "Unclosed bracket",
          { offset: bracket[2] },
          { offset: bracket[2] + 1 }
        );
      }
      unexpectedClose(token) {
        throw this.input.error(
          "Unexpected }",
          { offset: token[2] },
          { offset: token[2] + 1 }
        );
      }
      unknownWord(tokens) {
        throw this.input.error(
          "Unknown word " + tokens[0][1],
          { offset: tokens[0][2] },
          { offset: tokens[0][2] + tokens[0][1].length }
        );
      }
      unnamedAtrule(node3, token) {
        throw this.input.error(
          "At-rule without name",
          { offset: token[2] },
          { offset: token[2] + token[1].length }
        );
      }
    };
    module2.exports = Parser3;
  }
});

// ../../node_modules/postcss/lib/parse.js
var require_parse4 = __commonJS({
  "../../node_modules/postcss/lib/parse.js"(exports2, module2) {
    "use strict";
    var Container = require_container();
    var Input = require_input4();
    var Parser3 = require_parser3();
    function parse16(css, opts) {
      let input3 = new Input(css, opts);
      let parser3 = new Parser3(input3);
      try {
        parser3.parse();
      } catch (e2) {
        if (process.env.NODE_ENV !== "production") {
          if (e2.name === "CssSyntaxError" && opts && opts.from) {
            if (/\.scss$/i.test(opts.from)) {
              e2.message += "\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser";
            } else if (/\.sass/i.test(opts.from)) {
              e2.message += "\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser";
            } else if (/\.less$/i.test(opts.from)) {
              e2.message += "\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser";
            }
          }
        }
        throw e2;
      }
      return parser3.root;
    }
    module2.exports = parse16;
    parse16.default = parse16;
    Container.registerParse(parse16);
  }
});

// ../../node_modules/postcss/lib/warning.js
var require_warning = __commonJS({
  "../../node_modules/postcss/lib/warning.js"(exports2, module2) {
    "use strict";
    var Warning = class {
      constructor(text7, opts = {}) {
        this.type = "warning";
        this.text = text7;
        if (opts.node && opts.node.source) {
          let range = opts.node.rangeBy(opts);
          this.line = range.start.line;
          this.column = range.start.column;
          this.endLine = range.end.line;
          this.endColumn = range.end.column;
        }
        for (let opt in opts) this[opt] = opts[opt];
      }
      toString() {
        if (this.node) {
          return this.node.error(this.text, {
            index: this.index,
            plugin: this.plugin,
            word: this.word
          }).message;
        }
        if (this.plugin) {
          return this.plugin + ": " + this.text;
        }
        return this.text;
      }
    };
    module2.exports = Warning;
    Warning.default = Warning;
  }
});

// ../../node_modules/postcss/lib/result.js
var require_result = __commonJS({
  "../../node_modules/postcss/lib/result.js"(exports2, module2) {
    "use strict";
    var Warning = require_warning();
    var Result = class {
      get content() {
        return this.css;
      }
      constructor(processor2, root6, opts) {
        this.processor = processor2;
        this.messages = [];
        this.root = root6;
        this.opts = opts;
        this.css = "";
        this.map = void 0;
      }
      toString() {
        return this.css;
      }
      warn(text7, opts = {}) {
        if (!opts.plugin) {
          if (this.lastPlugin && this.lastPlugin.postcssPlugin) {
            opts.plugin = this.lastPlugin.postcssPlugin;
          }
        }
        let warning2 = new Warning(text7, opts);
        this.messages.push(warning2);
        return warning2;
      }
      warnings() {
        return this.messages.filter((i2) => i2.type === "warning");
      }
    };
    module2.exports = Result;
    Result.default = Result;
  }
});

// ../../node_modules/postcss/lib/warn-once.js
var require_warn_once = __commonJS({
  "../../node_modules/postcss/lib/warn-once.js"(exports2, module2) {
    "use strict";
    var printed = {};
    module2.exports = function warnOnce(message) {
      if (printed[message]) return;
      printed[message] = true;
      if (typeof console !== "undefined" && console.warn) {
        console.warn(message);
      }
    };
  }
});

// ../../node_modules/postcss/lib/lazy-result.js
var require_lazy_result = __commonJS({
  "../../node_modules/postcss/lib/lazy-result.js"(exports2, module2) {
    "use strict";
    var Container = require_container();
    var Document2 = require_document();
    var MapGenerator = require_map_generator();
    var parse16 = require_parse4();
    var Result = require_result();
    var Root = require_root();
    var stringify4 = require_stringify2();
    var { isClean, my } = require_symbols();
    var warnOnce = require_warn_once();
    var TYPE_TO_CLASS_NAME = {
      atrule: "AtRule",
      comment: "Comment",
      decl: "Declaration",
      document: "Document",
      root: "Root",
      rule: "Rule"
    };
    var PLUGIN_PROPS = {
      AtRule: true,
      AtRuleExit: true,
      Comment: true,
      CommentExit: true,
      Declaration: true,
      DeclarationExit: true,
      Document: true,
      DocumentExit: true,
      Once: true,
      OnceExit: true,
      postcssPlugin: true,
      prepare: true,
      Root: true,
      RootExit: true,
      Rule: true,
      RuleExit: true
    };
    var NOT_VISITORS = {
      Once: true,
      postcssPlugin: true,
      prepare: true
    };
    var CHILDREN = 0;
    function isPromise(obj) {
      return typeof obj === "object" && typeof obj.then === "function";
    }
    function getEvents(node3) {
      let key2 = false;
      let type2 = TYPE_TO_CLASS_NAME[node3.type];
      if (node3.type === "decl") {
        key2 = node3.prop.toLowerCase();
      } else if (node3.type === "atrule") {
        key2 = node3.name.toLowerCase();
      }
      if (key2 && node3.append) {
        return [
          type2,
          type2 + "-" + key2,
          CHILDREN,
          type2 + "Exit",
          type2 + "Exit-" + key2
        ];
      } else if (key2) {
        return [type2, type2 + "-" + key2, type2 + "Exit", type2 + "Exit-" + key2];
      } else if (node3.append) {
        return [type2, CHILDREN, type2 + "Exit"];
      } else {
        return [type2, type2 + "Exit"];
      }
    }
    function toStack(node3) {
      let events;
      if (node3.type === "document") {
        events = ["Document", CHILDREN, "DocumentExit"];
      } else if (node3.type === "root") {
        events = ["Root", CHILDREN, "RootExit"];
      } else {
        events = getEvents(node3);
      }
      return {
        eventIndex: 0,
        events,
        iterator: 0,
        node: node3,
        visitorIndex: 0,
        visitors: []
      };
    }
    function cleanMarks(node3) {
      node3[isClean] = false;
      if (node3.nodes) node3.nodes.forEach((i2) => cleanMarks(i2));
      return node3;
    }
    var postcss = {};
    var LazyResult = class _LazyResult {
      get content() {
        return this.stringify().content;
      }
      get css() {
        return this.stringify().css;
      }
      get map() {
        return this.stringify().map;
      }
      get messages() {
        return this.sync().messages;
      }
      get opts() {
        return this.result.opts;
      }
      get processor() {
        return this.result.processor;
      }
      get root() {
        return this.sync().root;
      }
      get [Symbol.toStringTag]() {
        return "LazyResult";
      }
      constructor(processor2, css, opts) {
        this.stringified = false;
        this.processed = false;
        let root6;
        if (typeof css === "object" && css !== null && (css.type === "root" || css.type === "document")) {
          root6 = cleanMarks(css);
        } else if (css instanceof _LazyResult || css instanceof Result) {
          root6 = cleanMarks(css.root);
          if (css.map) {
            if (typeof opts.map === "undefined") opts.map = {};
            if (!opts.map.inline) opts.map.inline = false;
            opts.map.prev = css.map;
          }
        } else {
          let parser3 = parse16;
          if (opts.syntax) parser3 = opts.syntax.parse;
          if (opts.parser) parser3 = opts.parser;
          if (parser3.parse) parser3 = parser3.parse;
          try {
            root6 = parser3(css, opts);
          } catch (error) {
            this.processed = true;
            this.error = error;
          }
          if (root6 && !root6[my]) {
            Container.rebuild(root6);
          }
        }
        this.result = new Result(processor2, root6, opts);
        this.helpers = { ...postcss, postcss, result: this.result };
        this.plugins = this.processor.plugins.map((plugin5) => {
          if (typeof plugin5 === "object" && plugin5.prepare) {
            return { ...plugin5, ...plugin5.prepare(this.result) };
          } else {
            return plugin5;
          }
        });
      }
      async() {
        if (this.error) return Promise.reject(this.error);
        if (this.processed) return Promise.resolve(this.result);
        if (!this.processing) {
          this.processing = this.runAsync();
        }
        return this.processing;
      }
      catch(onRejected) {
        return this.async().catch(onRejected);
      }
      finally(onFinally) {
        return this.async().then(onFinally, onFinally);
      }
      getAsyncError() {
        throw new Error("Use process(css).then(cb) to work with async plugins");
      }
      handleError(error, node3) {
        let plugin5 = this.result.lastPlugin;
        try {
          if (node3) node3.addToError(error);
          this.error = error;
          if (error.name === "CssSyntaxError" && !error.plugin) {
            error.plugin = plugin5.postcssPlugin;
            error.setMessage();
          } else if (plugin5.postcssVersion) {
            if (process.env.NODE_ENV !== "production") {
              let pluginName = plugin5.postcssPlugin;
              let pluginVer = plugin5.postcssVersion;
              let runtimeVer = this.result.processor.version;
              let a2 = pluginVer.split(".");
              let b = runtimeVer.split(".");
              if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {
                console.error(
                  "Unknown error from PostCSS plugin. Your current PostCSS version is " + runtimeVer + ", but " + pluginName + " uses " + pluginVer + ". Perhaps this is the source of the error below."
                );
              }
            }
          }
        } catch (err) {
          if (console && console.error) console.error(err);
        }
        return error;
      }
      prepareVisitors() {
        this.listeners = {};
        let add2 = (plugin5, type2, cb) => {
          if (!this.listeners[type2]) this.listeners[type2] = [];
          this.listeners[type2].push([plugin5, cb]);
        };
        for (let plugin5 of this.plugins) {
          if (typeof plugin5 === "object") {
            for (let event in plugin5) {
              if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {
                throw new Error(
                  `Unknown event ${event} in ${plugin5.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`
                );
              }
              if (!NOT_VISITORS[event]) {
                if (typeof plugin5[event] === "object") {
                  for (let filter6 in plugin5[event]) {
                    if (filter6 === "*") {
                      add2(plugin5, event, plugin5[event][filter6]);
                    } else {
                      add2(
                        plugin5,
                        event + "-" + filter6.toLowerCase(),
                        plugin5[event][filter6]
                      );
                    }
                  }
                } else if (typeof plugin5[event] === "function") {
                  add2(plugin5, event, plugin5[event]);
                }
              }
            }
          }
        }
        this.hasListener = Object.keys(this.listeners).length > 0;
      }
      async runAsync() {
        this.plugin = 0;
        for (let i2 = 0; i2 < this.plugins.length; i2++) {
          let plugin5 = this.plugins[i2];
          let promise = this.runOnRoot(plugin5);
          if (isPromise(promise)) {
            try {
              await promise;
            } catch (error) {
              throw this.handleError(error);
            }
          }
        }
        this.prepareVisitors();
        if (this.hasListener) {
          let root6 = this.result.root;
          while (!root6[isClean]) {
            root6[isClean] = true;
            let stack = [toStack(root6)];
            while (stack.length > 0) {
              let promise = this.visitTick(stack);
              if (isPromise(promise)) {
                try {
                  await promise;
                } catch (e2) {
                  let node3 = stack[stack.length - 1].node;
                  throw this.handleError(e2, node3);
                }
              }
            }
          }
          if (this.listeners.OnceExit) {
            for (let [plugin5, visitor] of this.listeners.OnceExit) {
              this.result.lastPlugin = plugin5;
              try {
                if (root6.type === "document") {
                  let roots = root6.nodes.map(
                    (subRoot) => visitor(subRoot, this.helpers)
                  );
                  await Promise.all(roots);
                } else {
                  await visitor(root6, this.helpers);
                }
              } catch (e2) {
                throw this.handleError(e2);
              }
            }
          }
        }
        this.processed = true;
        return this.stringify();
      }
      runOnRoot(plugin5) {
        this.result.lastPlugin = plugin5;
        try {
          if (typeof plugin5 === "object" && plugin5.Once) {
            if (this.result.root.type === "document") {
              let roots = this.result.root.nodes.map(
                (root6) => plugin5.Once(root6, this.helpers)
              );
              if (isPromise(roots[0])) {
                return Promise.all(roots);
              }
              return roots;
            }
            return plugin5.Once(this.result.root, this.helpers);
          } else if (typeof plugin5 === "function") {
            return plugin5(this.result.root, this.result);
          }
        } catch (error) {
          throw this.handleError(error);
        }
      }
      stringify() {
        if (this.error) throw this.error;
        if (this.stringified) return this.result;
        this.stringified = true;
        this.sync();
        let opts = this.result.opts;
        let str2 = stringify4;
        if (opts.syntax) str2 = opts.syntax.stringify;
        if (opts.stringifier) str2 = opts.stringifier;
        if (str2.stringify) str2 = str2.stringify;
        let map13 = new MapGenerator(str2, this.result.root, this.result.opts);
        let data = map13.generate();
        this.result.css = data[0];
        this.result.map = data[1];
        return this.result;
      }
      sync() {
        if (this.error) throw this.error;
        if (this.processed) return this.result;
        this.processed = true;
        if (this.processing) {
          throw this.getAsyncError();
        }
        for (let plugin5 of this.plugins) {
          let promise = this.runOnRoot(plugin5);
          if (isPromise(promise)) {
            throw this.getAsyncError();
          }
        }
        this.prepareVisitors();
        if (this.hasListener) {
          let root6 = this.result.root;
          while (!root6[isClean]) {
            root6[isClean] = true;
            this.walkSync(root6);
          }
          if (this.listeners.OnceExit) {
            if (root6.type === "document") {
              for (let subRoot of root6.nodes) {
                this.visitSync(this.listeners.OnceExit, subRoot);
              }
            } else {
              this.visitSync(this.listeners.OnceExit, root6);
            }
          }
        }
        return this.result;
      }
      then(onFulfilled, onRejected) {
        if (process.env.NODE_ENV !== "production") {
          if (!("from" in this.opts)) {
            warnOnce(
              "Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning."
            );
          }
        }
        return this.async().then(onFulfilled, onRejected);
      }
      toString() {
        return this.css;
      }
      visitSync(visitors, node3) {
        for (let [plugin5, visitor] of visitors) {
          this.result.lastPlugin = plugin5;
          let promise;
          try {
            promise = visitor(node3, this.helpers);
          } catch (e2) {
            throw this.handleError(e2, node3.proxyOf);
          }
          if (node3.type !== "root" && node3.type !== "document" && !node3.parent) {
            return true;
          }
          if (isPromise(promise)) {
            throw this.getAsyncError();
          }
        }
      }
      visitTick(stack) {
        let visit3 = stack[stack.length - 1];
        let { node: node3, visitors } = visit3;
        if (node3.type !== "root" && node3.type !== "document" && !node3.parent) {
          stack.pop();
          return;
        }
        if (visitors.length > 0 && visit3.visitorIndex < visitors.length) {
          let [plugin5, visitor] = visitors[visit3.visitorIndex];
          visit3.visitorIndex += 1;
          if (visit3.visitorIndex === visitors.length) {
            visit3.visitors = [];
            visit3.visitorIndex = 0;
          }
          this.result.lastPlugin = plugin5;
          try {
            return visitor(node3.toProxy(), this.helpers);
          } catch (e2) {
            throw this.handleError(e2, node3);
          }
        }
        if (visit3.iterator !== 0) {
          let iterator = visit3.iterator;
          let child;
          while (child = node3.nodes[node3.indexes[iterator]]) {
            node3.indexes[iterator] += 1;
            if (!child[isClean]) {
              child[isClean] = true;
              stack.push(toStack(child));
              return;
            }
          }
          visit3.iterator = 0;
          delete node3.indexes[iterator];
        }
        let events = visit3.events;
        while (visit3.eventIndex < events.length) {
          let event = events[visit3.eventIndex];
          visit3.eventIndex += 1;
          if (event === CHILDREN) {
            if (node3.nodes && node3.nodes.length) {
              node3[isClean] = true;
              visit3.iterator = node3.getIterator();
            }
            return;
          } else if (this.listeners[event]) {
            visit3.visitors = this.listeners[event];
            return;
          }
        }
        stack.pop();
      }
      walkSync(node3) {
        node3[isClean] = true;
        let events = getEvents(node3);
        for (let event of events) {
          if (event === CHILDREN) {
            if (node3.nodes) {
              node3.each((child) => {
                if (!child[isClean]) this.walkSync(child);
              });
            }
          } else {
            let visitors = this.listeners[event];
            if (visitors) {
              if (this.visitSync(visitors, node3.toProxy())) return;
            }
          }
        }
      }
      warnings() {
        return this.sync().warnings();
      }
    };
    LazyResult.registerPostcss = (dependant) => {
      postcss = dependant;
    };
    module2.exports = LazyResult;
    LazyResult.default = LazyResult;
    Root.registerLazyResult(LazyResult);
    Document2.registerLazyResult(LazyResult);
  }
});

// ../../node_modules/postcss/lib/no-work-result.js
var require_no_work_result = __commonJS({
  "../../node_modules/postcss/lib/no-work-result.js"(exports2, module2) {
    "use strict";
    var MapGenerator = require_map_generator();
    var parse16 = require_parse4();
    var Result = require_result();
    var stringify4 = require_stringify2();
    var warnOnce = require_warn_once();
    var NoWorkResult = class {
      get content() {
        return this.result.css;
      }
      get css() {
        return this.result.css;
      }
      get map() {
        return this.result.map;
      }
      get messages() {
        return [];
      }
      get opts() {
        return this.result.opts;
      }
      get processor() {
        return this.result.processor;
      }
      get root() {
        if (this._root) {
          return this._root;
        }
        let root6;
        let parser3 = parse16;
        try {
          root6 = parser3(this._css, this._opts);
        } catch (error) {
          this.error = error;
        }
        if (this.error) {
          throw this.error;
        } else {
          this._root = root6;
          return root6;
        }
      }
      get [Symbol.toStringTag]() {
        return "NoWorkResult";
      }
      constructor(processor2, css, opts) {
        css = css.toString();
        this.stringified = false;
        this._processor = processor2;
        this._css = css;
        this._opts = opts;
        this._map = void 0;
        let root6;
        let str2 = stringify4;
        this.result = new Result(this._processor, root6, this._opts);
        this.result.css = css;
        let self2 = this;
        Object.defineProperty(this.result, "root", {
          get() {
            return self2.root;
          }
        });
        let map13 = new MapGenerator(str2, root6, this._opts, css);
        if (map13.isMap()) {
          let [generatedCSS, generatedMap] = map13.generate();
          if (generatedCSS) {
            this.result.css = generatedCSS;
          }
          if (generatedMap) {
            this.result.map = generatedMap;
          }
        } else {
          map13.clearAnnotation();
          this.result.css = map13.css;
        }
      }
      async() {
        if (this.error) return Promise.reject(this.error);
        return Promise.resolve(this.result);
      }
      catch(onRejected) {
        return this.async().catch(onRejected);
      }
      finally(onFinally) {
        return this.async().then(onFinally, onFinally);
      }
      sync() {
        if (this.error) throw this.error;
        return this.result;
      }
      then(onFulfilled, onRejected) {
        if (process.env.NODE_ENV !== "production") {
          if (!("from" in this._opts)) {
            warnOnce(
              "Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning."
            );
          }
        }
        return this.async().then(onFulfilled, onRejected);
      }
      toString() {
        return this._css;
      }
      warnings() {
        return [];
      }
    };
    module2.exports = NoWorkResult;
    NoWorkResult.default = NoWorkResult;
  }
});

// ../../node_modules/postcss/lib/processor.js
var require_processor = __commonJS({
  "../../node_modules/postcss/lib/processor.js"(exports2, module2) {
    "use strict";
    var Document2 = require_document();
    var LazyResult = require_lazy_result();
    var NoWorkResult = require_no_work_result();
    var Root = require_root();
    var Processor2 = class {
      constructor(plugins3 = []) {
        this.version = "8.5.6";
        this.plugins = this.normalize(plugins3);
      }
      normalize(plugins3) {
        let normalized = [];
        for (let i2 of plugins3) {
          if (i2.postcss === true) {
            i2 = i2();
          } else if (i2.postcss) {
            i2 = i2.postcss;
          }
          if (typeof i2 === "object" && Array.isArray(i2.plugins)) {
            normalized = normalized.concat(i2.plugins);
          } else if (typeof i2 === "object" && i2.postcssPlugin) {
            normalized.push(i2);
          } else if (typeof i2 === "function") {
            normalized.push(i2);
          } else if (typeof i2 === "object" && (i2.parse || i2.stringify)) {
            if (process.env.NODE_ENV !== "production") {
              throw new Error(
                "PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation."
              );
            }
          } else {
            throw new Error(i2 + " is not a PostCSS plugin");
          }
        }
        return normalized;
      }
      process(css, opts = {}) {
        if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {
          return new NoWorkResult(this, css, opts);
        } else {
          return new LazyResult(this, css, opts);
        }
      }
      use(plugin5) {
        this.plugins = this.plugins.concat(this.normalize([plugin5]));
        return this;
      }
    };
    module2.exports = Processor2;
    Processor2.default = Processor2;
    Root.registerProcessor(Processor2);
    Document2.registerProcessor(Processor2);
  }
});

// ../../node_modules/postcss/lib/postcss.js
var require_postcss = __commonJS({
  "../../node_modules/postcss/lib/postcss.js"(exports2, module2) {
    "use strict";
    var AtRule = require_at_rule();
    var Comment = require_comment();
    var Container = require_container();
    var CssSyntaxError = require_css_syntax_error();
    var Declaration = require_declaration();
    var Document2 = require_document();
    var fromJSON = require_fromJSON();
    var Input = require_input4();
    var LazyResult = require_lazy_result();
    var list6 = require_list();
    var Node = require_node2();
    var parse16 = require_parse4();
    var Processor2 = require_processor();
    var Result = require_result();
    var Root = require_root();
    var Rule = require_rule();
    var stringify4 = require_stringify2();
    var Warning = require_warning();
    function postcss(...plugins3) {
      if (plugins3.length === 1 && Array.isArray(plugins3[0])) {
        plugins3 = plugins3[0];
      }
      return new Processor2(plugins3);
    }
    postcss.plugin = function plugin5(name3, initializer) {
      let warningPrinted = false;
      function creator(...args) {
        if (console && console.warn && !warningPrinted) {
          warningPrinted = true;
          console.warn(
            name3 + ": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"
          );
          if (process.env.LANG && process.env.LANG.startsWith("cn")) {
            console.warn(
              name3 + ": \u91CC\u9762 postcss.plugin \u88AB\u5F03\u7528. \u8FC1\u79FB\u6307\u5357:\nhttps://www.w3ctech.com/topic/2226"
            );
          }
        }
        let transformer = initializer(...args);
        transformer.postcssPlugin = name3;
        transformer.postcssVersion = new Processor2().version;
        return transformer;
      }
      let cache;
      Object.defineProperty(creator, "postcss", {
        get() {
          if (!cache) cache = creator();
          return cache;
        }
      });
      creator.process = function(css, processOpts, pluginOpts) {
        return postcss([creator(pluginOpts)]).process(css, processOpts);
      };
      return creator;
    };
    postcss.stringify = stringify4;
    postcss.parse = parse16;
    postcss.fromJSON = fromJSON;
    postcss.list = list6;
    postcss.comment = (defaults3) => new Comment(defaults3);
    postcss.atRule = (defaults3) => new AtRule(defaults3);
    postcss.decl = (defaults3) => new Declaration(defaults3);
    postcss.rule = (defaults3) => new Rule(defaults3);
    postcss.root = (defaults3) => new Root(defaults3);
    postcss.document = (defaults3) => new Document2(defaults3);
    postcss.CssSyntaxError = CssSyntaxError;
    postcss.Declaration = Declaration;
    postcss.Container = Container;
    postcss.Processor = Processor2;
    postcss.Document = Document2;
    postcss.Comment = Comment;
    postcss.Warning = Warning;
    postcss.AtRule = AtRule;
    postcss.Result = Result;
    postcss.Input = Input;
    postcss.Rule = Rule;
    postcss.Root = Root;
    postcss.Node = Node;
    LazyResult.registerPostcss(postcss);
    module2.exports = postcss;
    postcss.default = postcss;
  }
});

// ../../node_modules/sanitize-html/index.js
var require_sanitize_html = __commonJS({
  "../../node_modules/sanitize-html/index.js"(exports2, module2) {
    var htmlparser = require_lib12();
    var escapeStringRegexp2 = require_escape_string_regexp();
    var { isPlainObject: isPlainObject5 } = require_is_plain_object();
    var deepmerge = require_cjs();
    var parseSrcset = require_parse_srcset();
    var { parse: postcssParse } = require_postcss();
    var mediaTags = [
      "img",
      "audio",
      "video",
      "picture",
      "svg",
      "object",
      "map",
      "iframe",
      "embed"
    ];
    var vulnerableTags = ["script", "style"];
    function each2(obj, cb) {
      if (obj) {
        Object.keys(obj).forEach(function(key2) {
          cb(obj[key2], key2);
        });
      }
    }
    function has3(obj, key2) {
      return {}.hasOwnProperty.call(obj, key2);
    }
    function filter6(a2, cb) {
      const n = [];
      each2(a2, function(v) {
        if (cb(v)) {
          n.push(v);
        }
      });
      return n;
    }
    function isEmptyObject(obj) {
      for (const key2 in obj) {
        if (has3(obj, key2)) {
          return false;
        }
      }
      return true;
    }
    function stringifySrcset(parsedSrcset) {
      return parsedSrcset.map(function(part) {
        if (!part.url) {
          throw new Error("URL missing");
        }
        return part.url + (part.w ? ` ${part.w}w` : "") + (part.h ? ` ${part.h}h` : "") + (part.d ? ` ${part.d}x` : "");
      }).join(", ");
    }
    module2.exports = sanitizeHtml2;
    var VALID_HTML_ATTRIBUTE_NAME = /^[^\0\t\n\f\r /<=>]+$/;
    function sanitizeHtml2(html7, options, _recursing) {
      if (html7 == null) {
        return "";
      }
      if (typeof html7 === "number") {
        html7 = html7.toString();
      }
      let result = "";
      let tempResult = "";
      function Frame(tag, attribs) {
        const that = this;
        this.tag = tag;
        this.attribs = attribs || {};
        this.tagPosition = result.length;
        this.text = "";
        this.mediaChildren = [];
        this.updateParentNodeText = function() {
          if (stack.length) {
            const parentFrame = stack[stack.length - 1];
            parentFrame.text += that.text;
          }
        };
        this.updateParentNodeMediaChildren = function() {
          if (stack.length && mediaTags.includes(this.tag)) {
            const parentFrame = stack[stack.length - 1];
            parentFrame.mediaChildren.push(this.tag);
          }
        };
      }
      options = Object.assign({}, sanitizeHtml2.defaults, options);
      options.parser = Object.assign({}, htmlParserDefaults, options.parser);
      const tagAllowed = function(name3) {
        return options.allowedTags === false || (options.allowedTags || []).indexOf(name3) > -1;
      };
      vulnerableTags.forEach(function(tag) {
        if (tagAllowed(tag) && !options.allowVulnerableTags) {
          console.warn(`

\u26A0\uFE0F Your \`allowedTags\` option includes, \`${tag}\`, which is inherently
vulnerable to XSS attacks. Please remove it from \`allowedTags\`.
Or, to disable this warning, add the \`allowVulnerableTags\` option
and ensure you are accounting for this risk.

`);
        }
      });
      const nonTextTagsArray = options.nonTextTags || [
        "script",
        "style",
        "textarea",
        "option"
      ];
      let allowedAttributesMap;
      let allowedAttributesGlobMap;
      if (options.allowedAttributes) {
        allowedAttributesMap = {};
        allowedAttributesGlobMap = {};
        each2(options.allowedAttributes, function(attributes, tag) {
          allowedAttributesMap[tag] = [];
          const globRegex = [];
          attributes.forEach(function(obj) {
            if (typeof obj === "string" && obj.indexOf("*") >= 0) {
              globRegex.push(escapeStringRegexp2(obj).replace(/\\\*/g, ".*"));
            } else {
              allowedAttributesMap[tag].push(obj);
            }
          });
          if (globRegex.length) {
            allowedAttributesGlobMap[tag] = new RegExp("^(" + globRegex.join("|") + ")$");
          }
        });
      }
      const allowedClassesMap = {};
      const allowedClassesGlobMap = {};
      const allowedClassesRegexMap = {};
      each2(options.allowedClasses, function(classes, tag) {
        if (allowedAttributesMap) {
          if (!has3(allowedAttributesMap, tag)) {
            allowedAttributesMap[tag] = [];
          }
          allowedAttributesMap[tag].push("class");
        }
        allowedClassesMap[tag] = classes;
        if (Array.isArray(classes)) {
          const globRegex = [];
          allowedClassesMap[tag] = [];
          allowedClassesRegexMap[tag] = [];
          classes.forEach(function(obj) {
            if (typeof obj === "string" && obj.indexOf("*") >= 0) {
              globRegex.push(escapeStringRegexp2(obj).replace(/\\\*/g, ".*"));
            } else if (obj instanceof RegExp) {
              allowedClassesRegexMap[tag].push(obj);
            } else {
              allowedClassesMap[tag].push(obj);
            }
          });
          if (globRegex.length) {
            allowedClassesGlobMap[tag] = new RegExp("^(" + globRegex.join("|") + ")$");
          }
        }
      });
      const transformTagsMap = {};
      let transformTagsAll;
      each2(options.transformTags, function(transform3, tag) {
        let transFun;
        if (typeof transform3 === "function") {
          transFun = transform3;
        } else if (typeof transform3 === "string") {
          transFun = sanitizeHtml2.simpleTransform(transform3);
        }
        if (tag === "*") {
          transformTagsAll = transFun;
        } else {
          transformTagsMap[tag] = transFun;
        }
      });
      let depth;
      let stack;
      let skipMap;
      let transformMap;
      let skipText;
      let skipTextDepth;
      let addedText = false;
      initializeState();
      const parser3 = new htmlparser.Parser({
        onopentag: function(name3, attribs) {
          if (options.enforceHtmlBoundary && name3 === "html") {
            initializeState();
          }
          if (skipText) {
            skipTextDepth++;
            return;
          }
          const frame = new Frame(name3, attribs);
          stack.push(frame);
          let skip = false;
          const hasText = !!frame.text;
          let transformedTag;
          if (has3(transformTagsMap, name3)) {
            transformedTag = transformTagsMap[name3](name3, attribs);
            frame.attribs = attribs = transformedTag.attribs;
            if (transformedTag.text !== void 0) {
              frame.innerText = transformedTag.text;
            }
            if (name3 !== transformedTag.tagName) {
              frame.name = name3 = transformedTag.tagName;
              transformMap[depth] = transformedTag.tagName;
            }
          }
          if (transformTagsAll) {
            transformedTag = transformTagsAll(name3, attribs);
            frame.attribs = attribs = transformedTag.attribs;
            if (name3 !== transformedTag.tagName) {
              frame.name = name3 = transformedTag.tagName;
              transformMap[depth] = transformedTag.tagName;
            }
          }
          if (!tagAllowed(name3) || options.disallowedTagsMode === "recursiveEscape" && !isEmptyObject(skipMap) || options.nestingLimit != null && depth >= options.nestingLimit) {
            skip = true;
            skipMap[depth] = true;
            if (options.disallowedTagsMode === "discard" || options.disallowedTagsMode === "completelyDiscard") {
              if (nonTextTagsArray.indexOf(name3) !== -1) {
                skipText = true;
                skipTextDepth = 1;
              }
            }
            skipMap[depth] = true;
          }
          depth++;
          if (skip) {
            if (options.disallowedTagsMode === "discard" || options.disallowedTagsMode === "completelyDiscard") {
              return;
            }
            tempResult = result;
            result = "";
          }
          result += "<" + name3;
          if (name3 === "script") {
            if (options.allowedScriptHostnames || options.allowedScriptDomains) {
              frame.innerText = "";
            }
          }
          if (!allowedAttributesMap || has3(allowedAttributesMap, name3) || allowedAttributesMap["*"]) {
            each2(attribs, function(value, a2) {
              if (!VALID_HTML_ATTRIBUTE_NAME.test(a2)) {
                delete frame.attribs[a2];
                return;
              }
              if (value === "" && !options.allowedEmptyAttributes.includes(a2) && (options.nonBooleanAttributes.includes(a2) || options.nonBooleanAttributes.includes("*"))) {
                delete frame.attribs[a2];
                return;
              }
              let passedAllowedAttributesMapCheck = false;
              if (!allowedAttributesMap || has3(allowedAttributesMap, name3) && allowedAttributesMap[name3].indexOf(a2) !== -1 || allowedAttributesMap["*"] && allowedAttributesMap["*"].indexOf(a2) !== -1 || has3(allowedAttributesGlobMap, name3) && allowedAttributesGlobMap[name3].test(a2) || allowedAttributesGlobMap["*"] && allowedAttributesGlobMap["*"].test(a2)) {
                passedAllowedAttributesMapCheck = true;
              } else if (allowedAttributesMap && allowedAttributesMap[name3]) {
                for (const o of allowedAttributesMap[name3]) {
                  if (isPlainObject5(o) && o.name && o.name === a2) {
                    passedAllowedAttributesMapCheck = true;
                    let newValue = "";
                    if (o.multiple === true) {
                      const splitStrArray = value.split(" ");
                      for (const s5 of splitStrArray) {
                        if (o.values.indexOf(s5) !== -1) {
                          if (newValue === "") {
                            newValue = s5;
                          } else {
                            newValue += " " + s5;
                          }
                        }
                      }
                    } else if (o.values.indexOf(value) >= 0) {
                      newValue = value;
                    }
                    value = newValue;
                  }
                }
              }
              if (passedAllowedAttributesMapCheck) {
                if (options.allowedSchemesAppliedToAttributes.indexOf(a2) !== -1) {
                  if (naughtyHref(name3, value)) {
                    delete frame.attribs[a2];
                    return;
                  }
                }
                if (name3 === "script" && a2 === "src") {
                  let allowed = true;
                  try {
                    const parsed = parseUrl(value);
                    if (options.allowedScriptHostnames || options.allowedScriptDomains) {
                      const allowedHostname = (options.allowedScriptHostnames || []).find(function(hostname) {
                        return hostname === parsed.url.hostname;
                      });
                      const allowedDomain = (options.allowedScriptDomains || []).find(function(domain) {
                        return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);
                      });
                      allowed = allowedHostname || allowedDomain;
                    }
                  } catch (e2) {
                    allowed = false;
                  }
                  if (!allowed) {
                    delete frame.attribs[a2];
                    return;
                  }
                }
                if (name3 === "iframe" && a2 === "src") {
                  let allowed = true;
                  try {
                    const parsed = parseUrl(value);
                    if (parsed.isRelativeUrl) {
                      allowed = has3(options, "allowIframeRelativeUrls") ? options.allowIframeRelativeUrls : !options.allowedIframeHostnames && !options.allowedIframeDomains;
                    } else if (options.allowedIframeHostnames || options.allowedIframeDomains) {
                      const allowedHostname = (options.allowedIframeHostnames || []).find(function(hostname) {
                        return hostname === parsed.url.hostname;
                      });
                      const allowedDomain = (options.allowedIframeDomains || []).find(function(domain) {
                        return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);
                      });
                      allowed = allowedHostname || allowedDomain;
                    }
                  } catch (e2) {
                    allowed = false;
                  }
                  if (!allowed) {
                    delete frame.attribs[a2];
                    return;
                  }
                }
                if (a2 === "srcset") {
                  try {
                    let parsed = parseSrcset(value);
                    parsed.forEach(function(value2) {
                      if (naughtyHref("srcset", value2.url)) {
                        value2.evil = true;
                      }
                    });
                    parsed = filter6(parsed, function(v) {
                      return !v.evil;
                    });
                    if (!parsed.length) {
                      delete frame.attribs[a2];
                      return;
                    } else {
                      value = stringifySrcset(filter6(parsed, function(v) {
                        return !v.evil;
                      }));
                      frame.attribs[a2] = value;
                    }
                  } catch (e2) {
                    delete frame.attribs[a2];
                    return;
                  }
                }
                if (a2 === "class") {
                  const allowedSpecificClasses = allowedClassesMap[name3];
                  const allowedWildcardClasses = allowedClassesMap["*"];
                  const allowedSpecificClassesGlob = allowedClassesGlobMap[name3];
                  const allowedSpecificClassesRegex = allowedClassesRegexMap[name3];
                  const allowedWildcardClassesRegex = allowedClassesRegexMap["*"];
                  const allowedWildcardClassesGlob = allowedClassesGlobMap["*"];
                  const allowedClassesGlobs = [
                    allowedSpecificClassesGlob,
                    allowedWildcardClassesGlob
                  ].concat(allowedSpecificClassesRegex, allowedWildcardClassesRegex).filter(function(t2) {
                    return t2;
                  });
                  if (allowedSpecificClasses && allowedWildcardClasses) {
                    value = filterClasses(value, deepmerge(allowedSpecificClasses, allowedWildcardClasses), allowedClassesGlobs);
                  } else {
                    value = filterClasses(value, allowedSpecificClasses || allowedWildcardClasses, allowedClassesGlobs);
                  }
                  if (!value.length) {
                    delete frame.attribs[a2];
                    return;
                  }
                }
                if (a2 === "style") {
                  if (options.parseStyleAttributes) {
                    try {
                      const abstractSyntaxTree = postcssParse(name3 + " {" + value + "}", { map: false });
                      const filteredAST = filterCss(abstractSyntaxTree, options.allowedStyles);
                      value = stringifyStyleAttributes(filteredAST);
                      if (value.length === 0) {
                        delete frame.attribs[a2];
                        return;
                      }
                    } catch (e2) {
                      if (typeof window !== "undefined") {
                        console.warn('Failed to parse "' + name3 + " {" + value + `}", If you're running this in a browser, we recommend to disable style parsing: options.parseStyleAttributes: false, since this only works in a node environment due to a postcss dependency, More info: https://github.com/apostrophecms/sanitize-html/issues/547`);
                      }
                      delete frame.attribs[a2];
                      return;
                    }
                  } else if (options.allowedStyles) {
                    throw new Error("allowedStyles option cannot be used together with parseStyleAttributes: false.");
                  }
                }
                result += " " + a2;
                if (value && value.length) {
                  result += '="' + escapeHtml4(value, true) + '"';
                } else if (options.allowedEmptyAttributes.includes(a2)) {
                  result += '=""';
                }
              } else {
                delete frame.attribs[a2];
              }
            });
          }
          if (options.selfClosing.indexOf(name3) !== -1) {
            result += " />";
          } else {
            result += ">";
            if (frame.innerText && !hasText && !options.textFilter) {
              result += escapeHtml4(frame.innerText);
              addedText = true;
            }
          }
          if (skip) {
            result = tempResult + escapeHtml4(result);
            tempResult = "";
          }
        },
        ontext: function(text7) {
          if (skipText) {
            return;
          }
          const lastFrame = stack[stack.length - 1];
          let tag;
          if (lastFrame) {
            tag = lastFrame.tag;
            text7 = lastFrame.innerText !== void 0 ? lastFrame.innerText : text7;
          }
          if (options.disallowedTagsMode === "completelyDiscard" && !tagAllowed(tag)) {
            text7 = "";
          } else if ((options.disallowedTagsMode === "discard" || options.disallowedTagsMode === "completelyDiscard") && (tag === "script" || tag === "style")) {
            result += text7;
          } else {
            const escaped = escapeHtml4(text7, false);
            if (options.textFilter && !addedText) {
              result += options.textFilter(escaped, tag);
            } else if (!addedText) {
              result += escaped;
            }
          }
          if (stack.length) {
            const frame = stack[stack.length - 1];
            frame.text += text7;
          }
        },
        onclosetag: function(name3, isImplied) {
          if (skipText) {
            skipTextDepth--;
            if (!skipTextDepth) {
              skipText = false;
            } else {
              return;
            }
          }
          const frame = stack.pop();
          if (!frame) {
            return;
          }
          if (frame.tag !== name3) {
            stack.push(frame);
            return;
          }
          skipText = options.enforceHtmlBoundary ? name3 === "html" : false;
          depth--;
          const skip = skipMap[depth];
          if (skip) {
            delete skipMap[depth];
            if (options.disallowedTagsMode === "discard" || options.disallowedTagsMode === "completelyDiscard") {
              frame.updateParentNodeText();
              return;
            }
            tempResult = result;
            result = "";
          }
          if (transformMap[depth]) {
            name3 = transformMap[depth];
            delete transformMap[depth];
          }
          if (options.exclusiveFilter && options.exclusiveFilter(frame)) {
            result = result.substr(0, frame.tagPosition);
            return;
          }
          frame.updateParentNodeMediaChildren();
          frame.updateParentNodeText();
          if (
            // Already output />
            options.selfClosing.indexOf(name3) !== -1 || // Escaped tag, closing tag is implied
            isImplied && !tagAllowed(name3) && ["escape", "recursiveEscape"].indexOf(options.disallowedTagsMode) >= 0
          ) {
            if (skip) {
              result = tempResult;
              tempResult = "";
            }
            return;
          }
          result += "</" + name3 + ">";
          if (skip) {
            result = tempResult + escapeHtml4(result);
            tempResult = "";
          }
          addedText = false;
        }
      }, options.parser);
      parser3.write(html7);
      parser3.end();
      return result;
      function initializeState() {
        result = "";
        depth = 0;
        stack = [];
        skipMap = {};
        transformMap = {};
        skipText = false;
        skipTextDepth = 0;
      }
      function escapeHtml4(s5, quote) {
        if (typeof s5 !== "string") {
          s5 = s5 + "";
        }
        if (options.parser.decodeEntities) {
          s5 = s5.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
          if (quote) {
            s5 = s5.replace(/"/g, "&quot;");
          }
        }
        s5 = s5.replace(/&(?![a-zA-Z0-9#]{1,20};)/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
        if (quote) {
          s5 = s5.replace(/"/g, "&quot;");
        }
        return s5;
      }
      function naughtyHref(name3, href) {
        href = href.replace(/[\x00-\x20]+/g, "");
        while (true) {
          const firstIndex = href.indexOf("<!--");
          if (firstIndex === -1) {
            break;
          }
          const lastIndex = href.indexOf("-->", firstIndex + 4);
          if (lastIndex === -1) {
            break;
          }
          href = href.substring(0, firstIndex) + href.substring(lastIndex + 3);
        }
        const matches4 = href.match(/^([a-zA-Z][a-zA-Z0-9.\-+]*):/);
        if (!matches4) {
          if (href.match(/^[/\\]{2}/)) {
            return !options.allowProtocolRelative;
          }
          return false;
        }
        const scheme = matches4[1].toLowerCase();
        if (has3(options.allowedSchemesByTag, name3)) {
          return options.allowedSchemesByTag[name3].indexOf(scheme) === -1;
        }
        return !options.allowedSchemes || options.allowedSchemes.indexOf(scheme) === -1;
      }
      function parseUrl(value) {
        value = value.replace(/^(\w+:)?\s*[\\/]\s*[\\/]/, "$1//");
        if (value.startsWith("relative:")) {
          throw new Error("relative: exploit attempt");
        }
        let base5 = "relative://relative-site";
        for (let i2 = 0; i2 < 100; i2++) {
          base5 += `/${i2}`;
        }
        const parsed = new URL(value, base5);
        const isRelativeUrl = parsed && parsed.hostname === "relative-site" && parsed.protocol === "relative:";
        return {
          isRelativeUrl,
          url: parsed
        };
      }
      function filterCss(abstractSyntaxTree, allowedStyles) {
        if (!allowedStyles) {
          return abstractSyntaxTree;
        }
        const astRules = abstractSyntaxTree.nodes[0];
        let selectedRule;
        if (allowedStyles[astRules.selector] && allowedStyles["*"]) {
          selectedRule = deepmerge(
            allowedStyles[astRules.selector],
            allowedStyles["*"]
          );
        } else {
          selectedRule = allowedStyles[astRules.selector] || allowedStyles["*"];
        }
        if (selectedRule) {
          abstractSyntaxTree.nodes[0].nodes = astRules.nodes.reduce(filterDeclarations(selectedRule), []);
        }
        return abstractSyntaxTree;
      }
      function stringifyStyleAttributes(filteredAST) {
        return filteredAST.nodes[0].nodes.reduce(function(extractedAttributes, attrObject) {
          extractedAttributes.push(
            `${attrObject.prop}:${attrObject.value}${attrObject.important ? " !important" : ""}`
          );
          return extractedAttributes;
        }, []).join(";");
      }
      function filterDeclarations(selectedRule) {
        return function(allowedDeclarationsList, attributeObject) {
          if (has3(selectedRule, attributeObject.prop)) {
            const matchesRegex = selectedRule[attributeObject.prop].some(function(regularExpression) {
              return regularExpression.test(attributeObject.value);
            });
            if (matchesRegex) {
              allowedDeclarationsList.push(attributeObject);
            }
          }
          return allowedDeclarationsList;
        };
      }
      function filterClasses(classes, allowed, allowedGlobs) {
        if (!allowed) {
          return classes;
        }
        classes = classes.split(/\s+/);
        return classes.filter(function(clss) {
          return allowed.indexOf(clss) !== -1 || allowedGlobs.some(function(glob2) {
            return glob2.test(clss);
          });
        }).join(" ");
      }
    }
    var htmlParserDefaults = {
      decodeEntities: true
    };
    sanitizeHtml2.defaults = {
      allowedTags: [
        // Sections derived from MDN element categories and limited to the more
        // benign categories.
        // https://developer.mozilla.org/en-US/docs/Web/HTML/Element
        // Content sectioning
        "address",
        "article",
        "aside",
        "footer",
        "header",
        "h1",
        "h2",
        "h3",
        "h4",
        "h5",
        "h6",
        "hgroup",
        "main",
        "nav",
        "section",
        // Text content
        "blockquote",
        "dd",
        "div",
        "dl",
        "dt",
        "figcaption",
        "figure",
        "hr",
        "li",
        "main",
        "ol",
        "p",
        "pre",
        "ul",
        // Inline text semantics
        "a",
        "abbr",
        "b",
        "bdi",
        "bdo",
        "br",
        "cite",
        "code",
        "data",
        "dfn",
        "em",
        "i",
        "kbd",
        "mark",
        "q",
        "rb",
        "rp",
        "rt",
        "rtc",
        "ruby",
        "s",
        "samp",
        "small",
        "span",
        "strong",
        "sub",
        "sup",
        "time",
        "u",
        "var",
        "wbr",
        // Table content
        "caption",
        "col",
        "colgroup",
        "table",
        "tbody",
        "td",
        "tfoot",
        "th",
        "thead",
        "tr"
      ],
      // Tags that cannot be boolean
      nonBooleanAttributes: [
        "abbr",
        "accept",
        "accept-charset",
        "accesskey",
        "action",
        "allow",
        "alt",
        "as",
        "autocapitalize",
        "autocomplete",
        "blocking",
        "charset",
        "cite",
        "class",
        "color",
        "cols",
        "colspan",
        "content",
        "contenteditable",
        "coords",
        "crossorigin",
        "data",
        "datetime",
        "decoding",
        "dir",
        "dirname",
        "download",
        "draggable",
        "enctype",
        "enterkeyhint",
        "fetchpriority",
        "for",
        "form",
        "formaction",
        "formenctype",
        "formmethod",
        "formtarget",
        "headers",
        "height",
        "hidden",
        "high",
        "href",
        "hreflang",
        "http-equiv",
        "id",
        "imagesizes",
        "imagesrcset",
        "inputmode",
        "integrity",
        "is",
        "itemid",
        "itemprop",
        "itemref",
        "itemtype",
        "kind",
        "label",
        "lang",
        "list",
        "loading",
        "low",
        "max",
        "maxlength",
        "media",
        "method",
        "min",
        "minlength",
        "name",
        "nonce",
        "optimum",
        "pattern",
        "ping",
        "placeholder",
        "popover",
        "popovertarget",
        "popovertargetaction",
        "poster",
        "preload",
        "referrerpolicy",
        "rel",
        "rows",
        "rowspan",
        "sandbox",
        "scope",
        "shape",
        "size",
        "sizes",
        "slot",
        "span",
        "spellcheck",
        "src",
        "srcdoc",
        "srclang",
        "srcset",
        "start",
        "step",
        "style",
        "tabindex",
        "target",
        "title",
        "translate",
        "type",
        "usemap",
        "value",
        "width",
        "wrap",
        // Event handlers
        "onauxclick",
        "onafterprint",
        "onbeforematch",
        "onbeforeprint",
        "onbeforeunload",
        "onbeforetoggle",
        "onblur",
        "oncancel",
        "oncanplay",
        "oncanplaythrough",
        "onchange",
        "onclick",
        "onclose",
        "oncontextlost",
        "oncontextmenu",
        "oncontextrestored",
        "oncopy",
        "oncuechange",
        "oncut",
        "ondblclick",
        "ondrag",
        "ondragend",
        "ondragenter",
        "ondragleave",
        "ondragover",
        "ondragstart",
        "ondrop",
        "ondurationchange",
        "onemptied",
        "onended",
        "onerror",
        "onfocus",
        "onformdata",
        "onhashchange",
        "oninput",
        "oninvalid",
        "onkeydown",
        "onkeypress",
        "onkeyup",
        "onlanguagechange",
        "onload",
        "onloadeddata",
        "onloadedmetadata",
        "onloadstart",
        "onmessage",
        "onmessageerror",
        "onmousedown",
        "onmouseenter",
        "onmouseleave",
        "onmousemove",
        "onmouseout",
        "onmouseover",
        "onmouseup",
        "onoffline",
        "ononline",
        "onpagehide",
        "onpageshow",
        "onpaste",
        "onpause",
        "onplay",
        "onplaying",
        "onpopstate",
        "onprogress",
        "onratechange",
        "onreset",
        "onresize",
        "onrejectionhandled",
        "onscroll",
        "onscrollend",
        "onsecuritypolicyviolation",
        "onseeked",
        "onseeking",
        "onselect",
        "onslotchange",
        "onstalled",
        "onstorage",
        "onsubmit",
        "onsuspend",
        "ontimeupdate",
        "ontoggle",
        "onunhandledrejection",
        "onunload",
        "onvolumechange",
        "onwaiting",
        "onwheel"
      ],
      disallowedTagsMode: "discard",
      allowedAttributes: {
        a: ["href", "name", "target"],
        // We don't currently allow img itself by default, but
        // these attributes would make sense if we did.
        img: ["src", "srcset", "alt", "title", "width", "height", "loading"]
      },
      allowedEmptyAttributes: [
        "alt"
      ],
      // Lots of these won't come up by default because we don't allow them
      selfClosing: ["img", "br", "hr", "area", "base", "basefont", "input", "link", "meta"],
      // URL schemes we permit
      allowedSchemes: ["http", "https", "ftp", "mailto", "tel"],
      allowedSchemesByTag: {},
      allowedSchemesAppliedToAttributes: ["href", "src", "cite"],
      allowProtocolRelative: true,
      enforceHtmlBoundary: false,
      parseStyleAttributes: true
    };
    sanitizeHtml2.simpleTransform = function(newTagName, newAttribs, merge3) {
      merge3 = merge3 === void 0 ? true : merge3;
      newAttribs = newAttribs || {};
      return function(tagName, attribs) {
        let attrib;
        if (merge3) {
          for (attrib in newAttribs) {
            attribs[attrib] = newAttribs[attrib];
          }
        } else {
          attribs = newAttribs;
        }
        return {
          tagName: newTagName,
          attribs
        };
      };
    };
  }
});

// ../../node_modules/moo/moo.js
var require_moo = __commonJS({
  "../../node_modules/moo/moo.js"(exports2, module2) {
    (function(root6, factory) {
      if (typeof define === "function" && define.amd) {
        define([], factory);
      } else if (typeof module2 === "object" && module2.exports) {
        module2.exports = factory();
      } else {
        root6.moo = factory();
      }
    })(exports2, function() {
      "use strict";
      var hasOwnProperty = Object.prototype.hasOwnProperty;
      var toString6 = Object.prototype.toString;
      var hasSticky = typeof new RegExp().sticky === "boolean";
      function isRegExp(o) {
        return o && toString6.call(o) === "[object RegExp]";
      }
      function isObject2(o) {
        return o && typeof o === "object" && !isRegExp(o) && !Array.isArray(o);
      }
      function reEscape(s5) {
        return s5.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
      }
      function reGroups(s5) {
        var re = new RegExp("|" + s5);
        return re.exec("").length - 1;
      }
      function reCapture(s5) {
        return "(" + s5 + ")";
      }
      function reUnion(regexps) {
        if (!regexps.length) return "(?!)";
        var source2 = regexps.map(function(s5) {
          return "(?:" + s5 + ")";
        }).join("|");
        return "(?:" + source2 + ")";
      }
      function regexpOrLiteral(obj) {
        if (typeof obj === "string") {
          return "(?:" + reEscape(obj) + ")";
        } else if (isRegExp(obj)) {
          if (obj.ignoreCase) throw new Error("RegExp /i flag not allowed");
          if (obj.global) throw new Error("RegExp /g flag is implied");
          if (obj.sticky) throw new Error("RegExp /y flag is implied");
          if (obj.multiline) throw new Error("RegExp /m flag is implied");
          return obj.source;
        } else {
          throw new Error("Not a pattern: " + obj);
        }
      }
      function pad2(s5, length) {
        if (s5.length > length) {
          return s5;
        }
        return Array(length - s5.length + 1).join(" ") + s5;
      }
      function lastNLines(string2, numLines) {
        var position6 = string2.length;
        var lineBreaks = 0;
        while (true) {
          var idx = string2.lastIndexOf("\n", position6 - 1);
          if (idx === -1) {
            break;
          } else {
            lineBreaks++;
          }
          position6 = idx;
          if (lineBreaks === numLines) {
            break;
          }
          if (position6 === 0) {
            break;
          }
        }
        var startPosition = lineBreaks < numLines ? 0 : position6 + 1;
        return string2.substring(startPosition).split("\n");
      }
      function objectToRules(object) {
        var keys2 = Object.getOwnPropertyNames(object);
        var result = [];
        for (var i2 = 0; i2 < keys2.length; i2++) {
          var key2 = keys2[i2];
          var thing = object[key2];
          var rules = [].concat(thing);
          if (key2 === "include") {
            for (var j = 0; j < rules.length; j++) {
              result.push({ include: rules[j] });
            }
            continue;
          }
          var match3 = [];
          rules.forEach(function(rule) {
            if (isObject2(rule)) {
              if (match3.length) result.push(ruleOptions(key2, match3));
              result.push(ruleOptions(key2, rule));
              match3 = [];
            } else {
              match3.push(rule);
            }
          });
          if (match3.length) result.push(ruleOptions(key2, match3));
        }
        return result;
      }
      function arrayToRules(array) {
        var result = [];
        for (var i2 = 0; i2 < array.length; i2++) {
          var obj = array[i2];
          if (obj.include) {
            var include3 = [].concat(obj.include);
            for (var j = 0; j < include3.length; j++) {
              result.push({ include: include3[j] });
            }
            continue;
          }
          if (!obj.type) {
            throw new Error("Rule has no type: " + JSON.stringify(obj));
          }
          result.push(ruleOptions(obj.type, obj));
        }
        return result;
      }
      function ruleOptions(type2, obj) {
        if (!isObject2(obj)) {
          obj = { match: obj };
        }
        if (obj.include) {
          throw new Error("Matching rules cannot also include states");
        }
        var options = {
          defaultType: type2,
          lineBreaks: !!obj.error || !!obj.fallback,
          pop: false,
          next: null,
          push: null,
          error: false,
          fallback: false,
          value: null,
          type: null,
          shouldThrow: false
        };
        for (var key2 in obj) {
          if (hasOwnProperty.call(obj, key2)) {
            options[key2] = obj[key2];
          }
        }
        if (typeof options.type === "string" && type2 !== options.type) {
          throw new Error("Type transform cannot be a string (type '" + options.type + "' for token '" + type2 + "')");
        }
        var match3 = options.match;
        options.match = Array.isArray(match3) ? match3 : match3 ? [match3] : [];
        options.match.sort(function(a2, b) {
          return isRegExp(a2) && isRegExp(b) ? 0 : isRegExp(b) ? -1 : isRegExp(a2) ? 1 : b.length - a2.length;
        });
        return options;
      }
      function toRules(spec) {
        return Array.isArray(spec) ? arrayToRules(spec) : objectToRules(spec);
      }
      var defaultErrorRule = ruleOptions("error", { lineBreaks: true, shouldThrow: true });
      function compileRules(rules, hasStates) {
        var errorRule = null;
        var fast = /* @__PURE__ */ Object.create(null);
        var fastAllowed = true;
        var unicodeFlag = null;
        var groups = [];
        var parts = [];
        for (var i2 = 0; i2 < rules.length; i2++) {
          if (rules[i2].fallback) {
            fastAllowed = false;
          }
        }
        for (var i2 = 0; i2 < rules.length; i2++) {
          var options = rules[i2];
          if (options.include) {
            throw new Error("Inheritance is not allowed in stateless lexers");
          }
          if (options.error || options.fallback) {
            if (errorRule) {
              if (!options.fallback === !errorRule.fallback) {
                throw new Error("Multiple " + (options.fallback ? "fallback" : "error") + " rules not allowed (for token '" + options.defaultType + "')");
              } else {
                throw new Error("fallback and error are mutually exclusive (for token '" + options.defaultType + "')");
              }
            }
            errorRule = options;
          }
          var match3 = options.match.slice();
          if (fastAllowed) {
            while (match3.length && typeof match3[0] === "string" && match3[0].length === 1) {
              var word = match3.shift();
              fast[word.charCodeAt(0)] = options;
            }
          }
          if (options.pop || options.push || options.next) {
            if (!hasStates) {
              throw new Error("State-switching options are not allowed in stateless lexers (for token '" + options.defaultType + "')");
            }
            if (options.fallback) {
              throw new Error("State-switching options are not allowed on fallback tokens (for token '" + options.defaultType + "')");
            }
          }
          if (match3.length === 0) {
            continue;
          }
          fastAllowed = false;
          groups.push(options);
          for (var j = 0; j < match3.length; j++) {
            var obj = match3[j];
            if (!isRegExp(obj)) {
              continue;
            }
            if (unicodeFlag === null) {
              unicodeFlag = obj.unicode;
            } else if (unicodeFlag !== obj.unicode && options.fallback === false) {
              throw new Error("If one rule is /u then all must be");
            }
          }
          var pat = reUnion(match3.map(regexpOrLiteral));
          var regexp = new RegExp(pat);
          if (regexp.test("")) {
            throw new Error("RegExp matches empty string: " + regexp);
          }
          var groupCount = reGroups(pat);
          if (groupCount > 0) {
            throw new Error("RegExp has capture groups: " + regexp + "\nUse (?: \u2026 ) instead");
          }
          if (!options.lineBreaks && regexp.test("\n")) {
            throw new Error("Rule should declare lineBreaks: " + regexp);
          }
          parts.push(reCapture(pat));
        }
        var fallbackRule = errorRule && errorRule.fallback;
        var flags = hasSticky && !fallbackRule ? "ym" : "gm";
        var suffix = hasSticky || fallbackRule ? "" : "|";
        if (unicodeFlag === true) flags += "u";
        var combined = new RegExp(reUnion(parts) + suffix, flags);
        return { regexp: combined, groups, fast, error: errorRule || defaultErrorRule };
      }
      function compile2(rules) {
        var result = compileRules(toRules(rules));
        return new Lexer2({ start: result }, "start");
      }
      function checkStateGroup(g, name3, map13) {
        var state = g && (g.push || g.next);
        if (state && !map13[state]) {
          throw new Error("Missing state '" + state + "' (in token '" + g.defaultType + "' of state '" + name3 + "')");
        }
        if (g && g.pop && +g.pop !== 1) {
          throw new Error("pop must be 1 (in token '" + g.defaultType + "' of state '" + name3 + "')");
        }
      }
      function compileStates(states, start) {
        var all10 = states.$all ? toRules(states.$all) : [];
        delete states.$all;
        var keys2 = Object.getOwnPropertyNames(states);
        if (!start) start = keys2[0];
        var ruleMap = /* @__PURE__ */ Object.create(null);
        for (var i2 = 0; i2 < keys2.length; i2++) {
          var key2 = keys2[i2];
          ruleMap[key2] = toRules(states[key2]).concat(all10);
        }
        for (var i2 = 0; i2 < keys2.length; i2++) {
          var key2 = keys2[i2];
          var rules = ruleMap[key2];
          var included = /* @__PURE__ */ Object.create(null);
          for (var j = 0; j < rules.length; j++) {
            var rule = rules[j];
            if (!rule.include) continue;
            var splice = [j, 1];
            if (rule.include !== key2 && !included[rule.include]) {
              included[rule.include] = true;
              var newRules = ruleMap[rule.include];
              if (!newRules) {
                throw new Error("Cannot include nonexistent state '" + rule.include + "' (in state '" + key2 + "')");
              }
              for (var k = 0; k < newRules.length; k++) {
                var newRule = newRules[k];
                if (rules.indexOf(newRule) !== -1) continue;
                splice.push(newRule);
              }
            }
            rules.splice.apply(rules, splice);
            j--;
          }
        }
        var map13 = /* @__PURE__ */ Object.create(null);
        for (var i2 = 0; i2 < keys2.length; i2++) {
          var key2 = keys2[i2];
          map13[key2] = compileRules(ruleMap[key2], true);
        }
        for (var i2 = 0; i2 < keys2.length; i2++) {
          var name3 = keys2[i2];
          var state = map13[name3];
          var groups = state.groups;
          for (var j = 0; j < groups.length; j++) {
            checkStateGroup(groups[j], name3, map13);
          }
          var fastKeys = Object.getOwnPropertyNames(state.fast);
          for (var j = 0; j < fastKeys.length; j++) {
            checkStateGroup(state.fast[fastKeys[j]], name3, map13);
          }
        }
        return new Lexer2(map13, start);
      }
      function keywordTransform(map13) {
        var isMap2 = typeof Map !== "undefined";
        var reverseMap = isMap2 ? /* @__PURE__ */ new Map() : /* @__PURE__ */ Object.create(null);
        var types6 = Object.getOwnPropertyNames(map13);
        for (var i2 = 0; i2 < types6.length; i2++) {
          var tokenType = types6[i2];
          var item = map13[tokenType];
          var keywordList = Array.isArray(item) ? item : [item];
          keywordList.forEach(function(keyword) {
            if (typeof keyword !== "string") {
              throw new Error("keyword must be string (in keyword '" + tokenType + "')");
            }
            if (isMap2) {
              reverseMap.set(keyword, tokenType);
            } else {
              reverseMap[keyword] = tokenType;
            }
          });
        }
        return function(k) {
          return isMap2 ? reverseMap.get(k) : reverseMap[k];
        };
      }
      var Lexer2 = function(states, state) {
        this.startState = state;
        this.states = states;
        this.buffer = "";
        this.stack = [];
        this.reset();
      };
      Lexer2.prototype.reset = function(data, info) {
        this.buffer = data || "";
        this.index = 0;
        this.line = info ? info.line : 1;
        this.col = info ? info.col : 1;
        this.queuedToken = info ? info.queuedToken : null;
        this.queuedText = info ? info.queuedText : "";
        this.queuedThrow = info ? info.queuedThrow : null;
        this.setState(info ? info.state : this.startState);
        this.stack = info && info.stack ? info.stack.slice() : [];
        return this;
      };
      Lexer2.prototype.save = function() {
        return {
          line: this.line,
          col: this.col,
          state: this.state,
          stack: this.stack.slice(),
          queuedToken: this.queuedToken,
          queuedText: this.queuedText,
          queuedThrow: this.queuedThrow
        };
      };
      Lexer2.prototype.setState = function(state) {
        if (!state || this.state === state) return;
        this.state = state;
        var info = this.states[state];
        this.groups = info.groups;
        this.error = info.error;
        this.re = info.regexp;
        this.fast = info.fast;
      };
      Lexer2.prototype.popState = function() {
        this.setState(this.stack.pop());
      };
      Lexer2.prototype.pushState = function(state) {
        this.stack.push(this.state);
        this.setState(state);
      };
      var eat = hasSticky ? function(re, buffer2) {
        return re.exec(buffer2);
      } : function(re, buffer2) {
        var match3 = re.exec(buffer2);
        if (match3[0].length === 0) {
          return null;
        }
        return match3;
      };
      Lexer2.prototype._getGroup = function(match3) {
        var groupCount = this.groups.length;
        for (var i2 = 0; i2 < groupCount; i2++) {
          if (match3[i2 + 1] !== void 0) {
            return this.groups[i2];
          }
        }
        throw new Error("Cannot find token type for matched text");
      };
      function tokenToString() {
        return this.value;
      }
      Lexer2.prototype.next = function() {
        var index4 = this.index;
        if (this.queuedGroup) {
          var token = this._token(this.queuedGroup, this.queuedText, index4);
          this.queuedGroup = null;
          this.queuedText = "";
          return token;
        }
        var buffer2 = this.buffer;
        if (index4 === buffer2.length) {
          return;
        }
        var group3 = this.fast[buffer2.charCodeAt(index4)];
        if (group3) {
          return this._token(group3, buffer2.charAt(index4), index4);
        }
        var re = this.re;
        re.lastIndex = index4;
        var match3 = eat(re, buffer2);
        var error = this.error;
        if (match3 == null) {
          return this._token(error, buffer2.slice(index4, buffer2.length), index4);
        }
        var group3 = this._getGroup(match3);
        var text7 = match3[0];
        if (error.fallback && match3.index !== index4) {
          this.queuedGroup = group3;
          this.queuedText = text7;
          return this._token(error, buffer2.slice(index4, match3.index), index4);
        }
        return this._token(group3, text7, index4);
      };
      Lexer2.prototype._token = function(group3, text7, offset) {
        var lineBreaks = 0;
        if (group3.lineBreaks) {
          var matchNL = /\n/g;
          var nl2 = 1;
          if (text7 === "\n") {
            lineBreaks = 1;
          } else {
            while (matchNL.exec(text7)) {
              lineBreaks++;
              nl2 = matchNL.lastIndex;
            }
          }
        }
        var token = {
          type: typeof group3.type === "function" && group3.type(text7) || group3.defaultType,
          value: typeof group3.value === "function" ? group3.value(text7) : text7,
          text: text7,
          toString: tokenToString,
          offset,
          lineBreaks,
          line: this.line,
          col: this.col
        };
        var size = text7.length;
        this.index += size;
        this.line += lineBreaks;
        if (lineBreaks !== 0) {
          this.col = size - nl2 + 1;
        } else {
          this.col += size;
        }
        if (group3.shouldThrow) {
          var err = new Error(this.formatError(token, "invalid syntax"));
          throw err;
        }
        if (group3.pop) this.popState();
        else if (group3.push) this.pushState(group3.push);
        else if (group3.next) this.setState(group3.next);
        return token;
      };
      if (typeof Symbol !== "undefined" && Symbol.iterator) {
        var LexerIterator = function(lexer) {
          this.lexer = lexer;
        };
        LexerIterator.prototype.next = function() {
          var token = this.lexer.next();
          return { value: token, done: !token };
        };
        LexerIterator.prototype[Symbol.iterator] = function() {
          return this;
        };
        Lexer2.prototype[Symbol.iterator] = function() {
          return new LexerIterator(this);
        };
      }
      Lexer2.prototype.formatError = function(token, message) {
        if (token == null) {
          var text7 = this.buffer.slice(this.index);
          var token = {
            text: text7,
            offset: this.index,
            lineBreaks: text7.indexOf("\n") === -1 ? 0 : 1,
            line: this.line,
            col: this.col
          };
        }
        var numLinesAround = 2;
        var firstDisplayedLine = Math.max(token.line - numLinesAround, 1);
        var lastDisplayedLine = token.line + numLinesAround;
        var lastLineDigits = String(lastDisplayedLine).length;
        var displayedLines = lastNLines(
          this.buffer,
          this.line - token.line + numLinesAround + 1
        ).slice(0, 5);
        var errorLines = [];
        errorLines.push(message + " at line " + token.line + " col " + token.col + ":");
        errorLines.push("");
        for (var i2 = 0; i2 < displayedLines.length; i2++) {
          var line2 = displayedLines[i2];
          var lineNo = firstDisplayedLine + i2;
          errorLines.push(pad2(String(lineNo), lastLineDigits) + "  " + line2);
          if (lineNo === token.line) {
            errorLines.push(pad2("", lastLineDigits + token.col + 1) + "^");
          }
        }
        return errorLines.join("\n");
      };
      Lexer2.prototype.clone = function() {
        return new Lexer2(this.states, this.state);
      };
      Lexer2.prototype.has = function(tokenType) {
        return true;
      };
      return {
        compile: compile2,
        states: compileStates,
        error: Object.freeze({ error: true }),
        fallback: Object.freeze({ fallback: true }),
        keywords: keywordTransform
      };
    });
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/mapping/biblatexTypes.json
var require_biblatexTypes = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/mapping/biblatexTypes.json"(exports2, module2) {
    module2.exports = {
      source: {
        article: "article-journal",
        book: "book",
        mvbook: "book",
        inbook: "chapter",
        bookinbook: "book",
        booklet: "book",
        collection: "book",
        mvcollection: "book",
        incollection: "chapter",
        dataset: "dataset",
        manual: "report",
        misc: "document",
        online: "webpage",
        patent: "patent",
        periodical: "periodical",
        proceedings: "book",
        mvproceedings: "book",
        inproceedings: "paper-conference",
        reference: "book",
        mvreference: "book",
        inreference: "entry",
        report: "report",
        software: "software",
        thesis: "thesis",
        unpublished: "manuscript",
        artwork: "graphic",
        audio: "song",
        image: "figure",
        jurisdiction: "legal_case",
        legislation: "legislation",
        legal: "treaty",
        letter: "personal_communication",
        movie: "motion_picture",
        music: "musical_score",
        performance: "performance",
        review: "review",
        standard: "standard",
        video: "motion_picture",
        conference: "paper-conference",
        electronic: "webpage",
        mastersthesis: "thesis",
        phdthesis: "thesis",
        techreport: "report",
        www: "webpage"
      },
      target: {
        article: "article",
        "article-journal": "article",
        "article-magazine": "article",
        "article-newspaper": "article",
        bill: "legislation",
        book: "book",
        broadcast: "audio",
        chapter: "inbook",
        classic: "unpublished",
        collection: "misc",
        dataset: "dataset",
        document: "misc",
        entry: "inreference",
        "entry-dictionary": "inreference",
        "entry-encyclopedia": "inreference",
        event: "misc",
        figure: "artwork",
        graphic: "artwork",
        hearing: "legal",
        interview: "audio",
        legal_case: "jurisdiction",
        legislation: "legislation",
        manuscript: "unpublished",
        motion_picture: "movie",
        musical_score: "music",
        "paper-conference": "inproceedings",
        patent: "patent",
        performance: "performance",
        periodical: "periodical",
        personal_communication: "letter",
        post: "online",
        "post-weblog": "online",
        regulation: "legal",
        report: "report",
        review: "review",
        "review-book": "review",
        software: "software",
        song: "music",
        speech: "audio",
        standard: "standard",
        thesis: "thesis",
        treaty: "legal",
        webpage: "online"
      }
    };
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/mapping/bibtexTypes.json
var require_bibtexTypes = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/mapping/bibtexTypes.json"(exports2, module2) {
    module2.exports = {
      source: {
        article: "article-journal",
        book: "book",
        booklet: "book",
        conference: "paper-conference",
        inbook: "chapter",
        incollection: "chapter",
        inproceedings: "paper-conference",
        manual: "report",
        mastersthesis: "thesis",
        misc: "document",
        phdthesis: "thesis",
        proceedings: "book",
        techreport: "report",
        unpublished: "manuscript"
      },
      target: {
        article: "article",
        "article-journal": "article",
        "article-magazine": "article",
        "article-newspaper": "article",
        book: "book",
        chapter: "inbook",
        manuscript: "unpublished",
        "paper-conference": "inproceedings",
        report: "techreport",
        review: "article",
        "review-book": "article"
      }
    };
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/input/required.json
var require_required = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/input/required.json"(exports2, module2) {
    module2.exports = { biblatex: { article: ["author", "title", "journaltitle", ["year", "date"]], book: ["author", "title", ["year", "date"]], mvbook: ["author", "title", ["year", "date"]], inbook: ["author", "title", "booktitle", ["year", "date"]], booklet: [["author", "editor"], "title", ["year", "date"]], collection: ["editor", "title", ["year", "date"]], mvcollection: ["editor", "title", ["year", "date"]], incollection: ["author", "title", "booktitle", ["year", "date"]], dataset: [["author", "editor"], "title", ["year", "date"]], online: [["author", "editor"], "title", ["year", "date"], ["doi", "eprint", "url"]], patent: ["author", "title", "number", ["year", "date"]], periodical: ["editor", "title", ["year", "date"]], proceedings: ["title", ["year", "date"]], mvproceedings: ["title", ["year", "date"]], inproceedings: ["author", "title", "booktitle", ["year", "date"]], report: ["author", "title", "type", "institution", ["year", "date"]], thesis: ["author", "title", "type", "institution", ["year", "date"]], unpublished: ["author", "title", ["year", "date"]], conference: ["author", "title", "booktitle", ["year", "date"]], electronic: [["author", "editor"], "title", ["year", "date"], ["doi", "eprint", "url"]], mastersthesis: ["author", "title", "institution", ["year", "date"]], phdthesis: ["author", "title", "institution", ["year", "date"]], techreport: ["author", "title", "institution", ["year", "date"]], www: [["author", "editor"], "title", ["year", "date"], ["doi", "eprint", "url"]] }, bibtex: { article: ["author", "title", "journal", "year"], book: [["author", "editor"], "title", "publisher", "year"], booklet: ["title"], inbook: [["author", "editor"], "title", ["chapter", "pages"], "publisher", "year"], incollection: ["author", "title", "booktitle", "publisher", "year"], inproceedings: ["author", "title", "booktitle", "year"], mastersthesis: ["author", "title", "school", "year"], phdthesis: ["author", "title", "school", "year"], proceedings: ["title", "year"], techreport: ["author", "title", "institution", "year"], unpublished: ["author", "title", "note"] } };
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/input/fieldTypes.json
var require_fieldTypes = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/input/fieldTypes.json"(exports2, module2) {
    module2.exports = {
      abstract: ["field", "literal"],
      addendum: ["field", "literal"],
      afterword: ["list", "name"],
      annotation: ["field", "literal"],
      annotator: ["list", "name"],
      author: ["list", "name"],
      authortype: ["field", "key"],
      bookauthor: ["list", "name"],
      bookpagination: ["field", "key"],
      booksubtitle: ["field", "literal"],
      booktitle: ["field", "title"],
      booktitleaddon: ["field", "literal"],
      chapter: ["field", "literal"],
      commentator: ["list", "name"],
      date: ["field", "date"],
      doi: ["field", "verbatim"],
      edition: ["field", "literal"],
      editor: ["list", "name"],
      editora: ["list", "name"],
      editorb: ["list", "name"],
      editorc: ["list", "name"],
      editortype: ["field", "key"],
      editoratype: ["field", "key"],
      editorbtype: ["field", "key"],
      editorctype: ["field", "key"],
      eid: ["field", "literal"],
      entrysubtype: ["field", "literal"],
      eprint: ["field", "verbatim"],
      eprintclass: ["field", "literal"],
      eprinttype: ["field", "literal"],
      eventdate: ["field", "date"],
      eventtitle: ["field", "title"],
      eventtitleaddon: ["field", "literal"],
      file: ["field", "verbatim"],
      foreword: ["list", "name"],
      holder: ["list", "name"],
      howpublished: ["field", "literal"],
      indextitle: ["field", "literal"],
      institution: ["list", "literal"],
      introduction: ["list", "name"],
      isan: ["field", "literal"],
      isbn: ["field", "literal"],
      ismn: ["field", "literal"],
      isrn: ["field", "literal"],
      issn: ["field", "literal"],
      issue: ["field", "literal"],
      issuesubtitle: ["field", "literal"],
      issuetitle: ["field", "literal"],
      iswc: ["field", "literal"],
      journalsubtitle: ["field", "literal"],
      journaltitle: ["field", "literal"],
      label: ["field", "literal"],
      language: ["list", "key"],
      library: ["field", "literal"],
      location: ["list", "literal"],
      mainsubtitle: ["field", "literal"],
      maintitle: ["field", "title"],
      maintitleaddon: ["field", "literal"],
      month: ["field", "literal"],
      nameaddon: ["field", "literal"],
      note: ["field", "literal"],
      number: ["field", "literal"],
      organization: ["list", "literal"],
      origdate: ["field", "date"],
      origlanguage: ["list", "key"],
      origlocation: ["list", "literal"],
      origpublisher: ["list", "literal"],
      origtitle: ["field", "title"],
      pages: ["field", "range"],
      pagetotal: ["field", "literal"],
      pagination: ["field", "key"],
      part: ["field", "literal"],
      publisher: ["list", "literal"],
      pubstate: ["field", "key"],
      reprinttitle: ["field", "literal"],
      series: ["field", "title"],
      shortauthor: ["list", "name"],
      shorteditor: ["list", "name"],
      shorthand: ["field", "literal"],
      shorthandintro: ["field", "literal"],
      shortjournal: ["field", "literal"],
      shortseries: ["field", "literal"],
      shorttitle: ["field", "title"],
      subtitle: ["field", "literal"],
      title: ["field", "title"],
      titleaddon: ["field", "literal"],
      translator: ["list", "name"],
      type: ["field", "title"],
      url: ["field", "uri"],
      urldate: ["field", "date"],
      venue: ["field", "literal"],
      version: ["field", "literal"],
      volume: ["field", "integer"],
      volumes: ["field", "integer"],
      year: ["field", "literal"],
      crossref: ["field", "entry key"],
      entryset: ["separated", "literal"],
      execute: ["field", "code"],
      gender: ["field", "gender"],
      langid: ["field", "identifier"],
      langidopts: ["field", "literal"],
      ids: ["separated", "entry key"],
      indexsorttitle: ["field", "literal"],
      keywords: ["separated", "literal"],
      options: ["separated", "options"],
      presort: ["field", "string"],
      related: ["separated", "literal"],
      relatedoptions: ["separated", "literal"],
      relatedtype: ["field", "identifier"],
      relatedstring: ["field", "literal"],
      sortkey: ["field", "literal"],
      sortname: ["list", "name"],
      sortshorthand: ["field", "literal"],
      sorttitle: ["field", "literal"],
      sortyear: ["field", "integer"],
      xdata: ["separated", "entry key"],
      xref: ["field", "entry key"],
      namea: ["list", "name"],
      nameb: ["list", "name"],
      namec: ["list", "name"],
      nameatype: ["field", "key"],
      namebtype: ["field", "key"],
      namectype: ["field", "key"],
      lista: ["list", "literal"],
      listb: ["list", "literal"],
      listc: ["list", "literal"],
      listd: ["list", "literal"],
      liste: ["list", "literal"],
      listf: ["list", "literal"],
      usera: ["field", "literal"],
      userb: ["field", "literal"],
      userc: ["field", "literal"],
      userd: ["field", "literal"],
      usere: ["field", "literal"],
      userf: ["field", "literal"],
      verba: ["field", "literal"],
      verbb: ["field", "literal"],
      verbc: ["field", "literal"],
      address: ["list", "literal"],
      annote: ["field", "literal"],
      archiveprefix: ["field", "literal"],
      journal: ["field", "literal"],
      key: ["field", "literal"],
      pdf: ["field", "verbatim"],
      primaryclass: ["field", "literal"],
      school: ["list", "literal"],
      numpages: ["field", "integer"],
      pmid: ["field", "literal"],
      pmcid: ["field", "literal"]
    };
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/input/unicode.json
var require_unicode2 = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/input/unicode.json"(exports2, module2) {
    module2.exports = { diacritics: { "`": "\u0300", "'": "\u0301", "^": "\u0302", "~": "\u0303", "=": "\u0304", u: "\u0306", ".": "\u0307", '"': "\u0308", r: "\u030A", H: "\u030B", v: "\u030C", b: "\u0332", d: "\u0323", c: "\u0327", k: "\u0328", t: "\u0361", textcommabelow: "\u0326" }, commands: { textquotesingle: "'", textasciigrave: "`", textquotedbl: '"', textdollar: "$", textless: "<", textgreater: ">", textbackslash: "\\", textasciicircum: "^", textunderscore: "_", textbraceleft: "{", textbar: "|", textbraceright: "}", textasciitilde: "~", textexclamdown: "\xA1", textcent: "\xA2", textsterling: "\xA3", textcurrency: "\xA4", textyen: "\xA5", textbrokenbar: "\xA6", textsection: "\xA7", textasciidieresis: "\xA8", textcopyright: "\xA9", textordfeminine: "\xAA", guillemetleft: "\xAB", guillemotleft: "\xAB", textlnot: "\xAC", textregistered: "\xAE", textasciimacron: "\xAF", textdegree: "\xB0", textpm: "\xB1", texttwosuperior: "\xB2", textthreesuperior: "\xB3", textasciiacute: "\xB4", textmu: "\xB5", textparagraph: "\xB6", textperiodcentered: "\xB7", textonesuperior: "\xB9", textordmasculine: "\xBA", guillemetright: "\xBB", guillemotright: "\xBB", textonequarter: "\xBC", textonehalf: "\xBD", textthreequarters: "\xBE", textquestiondown: "\xBF", AE: "\xC6", DH: "\xD0", texttimes: "\xD7", O: "\xD8", TH: "\xDE", ss: "\xDF", ae: "\xE6", dh: "\xF0", textdiv: "\xF7", o: "\xF8", th: "\xFE", DJ: "\u0110", dj: "\u0111", i: "\u0131", IJ: "\u0132", ij: "\u0133", L: "\u0141", l: "\u0142", NG: "\u014A", ng: "\u014B", OE: "\u0152", oe: "\u0153", textflorin: "\u0192", j: "\u0237", textasciicaron: "\u02C7", textasciibreve: "\u02D8", textacutedbl: "\u02DD", textgravedbl: "\u02F5", texttildelow: "\u02F7", textbaht: "\u0E3F", SS: "\u1E9E", textcompwordmark: "\u200C", textendash: "\u2013", textemdash: "\u2014", textbardbl: "\u2016", textquoteleft: "\u2018", textquoteright: "\u2019", quotesinglbase: "\u201A", textquotedblleft: "\u201C", textquotedblright: "\u201D", quotedblbase: "\u201E", textdagger: "\u2020", textdaggerdbl: "\u2021", textbullet: "\u2022", textellipsis: "\u2026", textperthousand: "\u2030", textpertenthousand: "\u2031", guilsinglleft: "\u2039", guilsinglright: "\u203A", textreferencemark: "\u203B", textinterrobang: "\u203D", textfractionsolidus: "\u2044", textlquill: "\u2045", textrquill: "\u2046", textdiscount: "\u2052", textcolonmonetary: "\u20A1", textlira: "\u20A4", textnaira: "\u20A6", textwon: "\u20A9", textdong: "\u20AB", texteuro: "\u20AC", textpeso: "\u20B1", textcelsius: "\u2103", textnumero: "\u2116", textcircledP: "\u2117", textrecipe: "\u211E", textservicemark: "\u2120", texttrademark: "\u2122", textohm: "\u2126", textmho: "\u2127", textestimated: "\u212E", textleftarrow: "\u2190", textuparrow: "\u2191", textrightarrow: "\u2192", textdownarrow: "\u2193", textminus: "\u2212", Hwithstroke: "\u0126", hwithstroke: "\u0127", textasteriskcentered: "\u2217", textsurd: "\u221A", textlangle: "\u2329", textrangle: "\u232A", textblank: "\u2422", textvisiblespace: "\u2423", textopenbullet: "\u25E6", textbigcircle: "\u25EF", textmusicalnote: "\u266A", textmarried: "\u26AD", textdivorced: "\u26AE", textinterrobangdown: "\u2E18", textcommabelow: null, copyright: "\xA9" }, mathCommands: { Gamma: "\u0393", Delta: "\u0394", Theta: "\u0398", Lambda: "\u039B", Xi: "\u039E", Pi: "\u03A0", Sigma: "\u03A3", Phi: "\u03A6", Psi: "\u03A8", Omega: "\u03A9", alpha: "\u03B1", beta: "\u03B2", gamma: "\u03B3", delta: "\u03B4", varepsilon: "\u03B5", zeta: "\u03B6", eta: "\u03B7", theta: "\u03B8", iota: "\u03B9", kappa: "\u03BA", lambda: "\u03BB", mu: "\u03BC", nu: "\u03BD", xi: "\u03BE", pi: "\u03C0", rho: "\u03C1", varsigma: "\u03C2", sigma: "\u03C3", tau: "\u03C4", upsilon: "\u03C5", varphi: "\u03C6", chi: "\u03C7", psi: "\u03C8", omega: "\u03C9", vartheta: "\u03D1", Upsilon: "\u03D2", phi: "\u03D5", varpi: "\u03D6", varrho: "\u03F1", epsilon: "\u03F5" } };
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/input/constants.js
var require_constants2 = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/input/constants.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.sentenceCaseLanguages = exports2.required = exports2.mathScripts = exports2.mathScriptFormatting = exports2.mathCommands = exports2.ligatures = exports2.ligaturePattern = exports2.formattingEnvs = exports2.formattingCommands = exports2.formatting = exports2.fieldTypes = exports2.diacritics = exports2.defaultStrings = exports2.commands = exports2.argumentCommands = void 0;
    var _required2 = _interopRequireDefault3(require_required());
    var _fieldTypes2 = _interopRequireDefault3(require_fieldTypes());
    var _unicode = _interopRequireDefault3(require_unicode2());
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    var required = exports2.required = _required2.default;
    var fieldTypes = exports2.fieldTypes = _fieldTypes2.default;
    var diacritics = exports2.diacritics = _unicode.default.diacritics;
    var commands = exports2.commands = _unicode.default.commands;
    var mathCommands = exports2.mathCommands = _unicode.default.mathCommands;
    var defaultStrings = exports2.defaultStrings = {
      jan: "01",
      feb: "02",
      mar: "03",
      apr: "04",
      may: "05",
      jun: "06",
      jul: "07",
      aug: "08",
      sep: "09",
      oct: "10",
      nov: "11",
      dec: "12",
      acmcs: "ACM Computing Surveys",
      acta: "Acta Informatica",
      cacm: "Communications of the ACM",
      ibmjrd: "IBM Journal of Research and Development",
      ibmsj: "IBM Systems Journal",
      ieeese: "IEEE Transactions on Software Engineering",
      ieeetc: "IEEE Transactions on Computers",
      ieeetcad: "IEEE Transactions on Computer-Aided Design of Integrated Circuits",
      ipl: "Information Processing Letters",
      jacm: "Journal of the ACM",
      jcss: "Journal of Computer and System Sciences",
      scp: "Science of Computer Programming",
      sicomp: "SIAM Journal on Computing",
      tocs: "ACM Transactions on Computer Systems",
      tods: "ACM Transactions on Database Systems",
      tog: "ACM Transactions on Graphics",
      toms: "ACM Transactions on Mathematical Software",
      toois: "ACM Transactions on Office Information Systems",
      toplas: "ACM Transactions on Programming Languages and Systems",
      tcs: "Theoretical Computer Science"
    };
    var formattingEnvs = exports2.formattingEnvs = {
      it: "italics",
      itshape: "italics",
      sl: "italics",
      slshape: "italics",
      em: "italics",
      bf: "bold",
      bfseries: "bold",
      sc: "smallcaps",
      scshape: "smallcaps",
      rm: void 0,
      sf: void 0,
      tt: void 0
    };
    var formattingCommands = exports2.formattingCommands = {
      textit: "italics",
      textsl: "italics",
      emph: "italics",
      mkbibitalic: "italics",
      mkbibemph: "italics",
      textbf: "bold",
      strong: "bold",
      mkbibbold: "bold",
      textsc: "smallcaps",
      textsuperscript: "superscript",
      textsubscript: "subscript",
      enquote: "quotes",
      mkbibquote: "quotes",
      textmd: void 0,
      textrm: void 0,
      textsf: void 0,
      texttt: void 0,
      textup: void 0
    };
    var formatting = exports2.formatting = {
      italics: ["<i>", "</i>"],
      bold: ["<b>", "</b>"],
      superscript: ["<sup>", "</sup>"],
      subscript: ["<sub>", "</sub>"],
      smallcaps: ['<span style="font-variant:small-caps;">', "</span>"],
      nocase: ['<span class="nocase">', "</span>"],
      quotes: ["\u201C", "\u201D"]
    };
    var argumentCommands = exports2.argumentCommands = {
      ElsevierGlyph(glyph) {
        return String.fromCharCode(parseInt(glyph, 16));
      },
      href(url, text7) {
        return url;
      },
      url(url) {
        return url;
      }
    };
    var ligaturePattern = exports2.ligaturePattern = /---?|''|``|~/g;
    var ligatures2 = exports2.ligatures = {
      "--": "\u2013",
      "---": "\u2014",
      "``": "\u201C",
      "''": "\u201D",
      "~": "\xA0"
    };
    var mathScriptFormatting = exports2.mathScriptFormatting = {
      "^": "superscript",
      sp: "superscript",
      _: "subscript",
      sb: "subscript",
      mathrm: void 0
    };
    var mathScripts = exports2.mathScripts = {
      "^": {
        "0": "\u2070",
        "1": "\xB9",
        "2": "\xB2",
        "3": "\xB3",
        "4": "\u2074",
        "5": "\u2075",
        "6": "\u2076",
        "7": "\u2077",
        "8": "\u2078",
        "9": "\u2079",
        "+": "\u207A",
        "-": "\u207B",
        "=": "\u207C",
        "(": "\u207D",
        ")": "\u207E",
        "i": "\u2071",
        "n": "\u207F"
      },
      "_": {
        "0": "\u2080",
        "1": "\u2081",
        "2": "\u2082",
        "3": "\u2083",
        "4": "\u2084",
        "5": "\u2085",
        "6": "\u2086",
        "7": "\u2087",
        "8": "\u2088",
        "9": "\u2089",
        "+": "\u208A",
        "-": "\u208B",
        "=": "\u208C",
        "(": "\u208D",
        ")": "\u208E",
        "a": "\u2090",
        "e": "\u2091",
        "o": "\u2092",
        "x": "\u2093",
        "\u0259": "\u2094",
        "h": "\u2095",
        "k": "\u2096",
        "l": "\u2097",
        "m": "\u2098",
        "n": "\u2099",
        "s": "\u209A",
        "p": "\u209B",
        "t": "\u209C"
      }
    };
    var sentenceCaseLanguages = exports2.sentenceCaseLanguages = ["american", "british", "canadian", "english", "australian", "newzealand", "usenglish", "ukenglish", "en", "eng", "en-au", "en-bz", "en-ca", "en-cb", "en-gb", "en-ie", "en-jm", "en-nz", "en-ph", "en-tt", "en-us", "en-za", "en-zw", "anglais"];
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/config.js
var require_config3 = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/config.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    var _biblatexTypes = _interopRequireDefault3(require_biblatexTypes());
    var _bibtexTypes = _interopRequireDefault3(require_bibtexTypes());
    var constants2 = _interopRequireWildcard(require_constants2());
    function _getRequireWildcardCache(e2) {
      if ("function" != typeof WeakMap) return null;
      var r2 = /* @__PURE__ */ new WeakMap(), t2 = /* @__PURE__ */ new WeakMap();
      return (_getRequireWildcardCache = function(e3) {
        return e3 ? t2 : r2;
      })(e2);
    }
    function _interopRequireWildcard(e2, r2) {
      if (!r2 && e2 && e2.__esModule) return e2;
      if (null === e2 || "object" != typeof e2 && "function" != typeof e2) return { default: e2 };
      var t2 = _getRequireWildcardCache(r2);
      if (t2 && t2.has(e2)) return t2.get(e2);
      var n = { __proto__: null }, a2 = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var u3 in e2) if ("default" !== u3 && {}.hasOwnProperty.call(e2, u3)) {
        var i2 = a2 ? Object.getOwnPropertyDescriptor(e2, u3) : null;
        i2 && (i2.get || i2.set) ? Object.defineProperty(n, u3, i2) : n[u3] = e2[u3];
      }
      return n.default = e2, t2 && t2.set(e2, n), n;
    }
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    var _default2 = exports2.default = {
      constants: constants2,
      types: {
        biblatex: _biblatexTypes.default,
        bibtex: _bibtexTypes.default
      },
      parse: {
        biblatex: true,
        strict: false,
        sentenceCase: "never"
      },
      format: {
        useIdAsLabel: false,
        checkLabel: true,
        asciiOnly: true
      },
      biber: {
        annotationMarker: "+an",
        namedAnnotationMarker: ":"
      }
    };
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/input/file.js
var require_file = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/input/file.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.bibtexGrammar = void 0;
    exports2.parse = parse16;
    var _core3 = require_lib6();
    var _moo = _interopRequireDefault3(require_moo());
    var _config2 = _interopRequireDefault3(require_config3());
    var _constants = require_constants2();
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    function ownKeys(e2, r2) {
      var t2 = Object.keys(e2);
      if (Object.getOwnPropertySymbols) {
        var o = Object.getOwnPropertySymbols(e2);
        r2 && (o = o.filter(function(r3) {
          return Object.getOwnPropertyDescriptor(e2, r3).enumerable;
        })), t2.push.apply(t2, o);
      }
      return t2;
    }
    function _objectSpread(e2) {
      for (var r2 = 1; r2 < arguments.length; r2++) {
        var t2 = null != arguments[r2] ? arguments[r2] : {};
        r2 % 2 ? ownKeys(Object(t2), true).forEach(function(r3) {
          _defineProperty(e2, r3, t2[r3]);
        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t2)) : ownKeys(Object(t2)).forEach(function(r3) {
          Object.defineProperty(e2, r3, Object.getOwnPropertyDescriptor(t2, r3));
        });
      }
      return e2;
    }
    function _defineProperty(e2, r2, t2) {
      return (r2 = _toPropertyKey(r2)) in e2 ? Object.defineProperty(e2, r2, { value: t2, enumerable: true, configurable: true, writable: true }) : e2[r2] = t2, e2;
    }
    function _toPropertyKey(t2) {
      var i2 = _toPrimitive(t2, "string");
      return "symbol" == typeof i2 ? i2 : i2 + "";
    }
    function _toPrimitive(t2, r2) {
      if ("object" != typeof t2 || !t2) return t2;
      var e2 = t2[Symbol.toPrimitive];
      if (void 0 !== e2) {
        var i2 = e2.call(t2, r2 || "default");
        if ("object" != typeof i2) return i2;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return ("string" === r2 ? String : Number)(t2);
    }
    var identifier = /[a-zA-Z_][a-zA-Z0-9_:+-]*/;
    var whitespace4 = {
      comment: /%.*/,
      whitespace: {
        match: /\s+/,
        lineBreaks: true
      }
    };
    var lexer = _moo.default.states({
      main: {
        junk: {
          match: /@[cC][oO][mM][mM][eE][nN][tT].+|[^@]+/,
          lineBreaks: true
        },
        at: {
          match: "@",
          push: "entry"
        }
      },
      entry: _objectSpread(_objectSpread({}, whitespace4), {}, {
        otherEntryType: {
          match: /[sS][tT][rR][iI][nN][gG]|[pP][rR][eE][aA][mM][bB][lL][eE]/,
          next: "otherEntryContents"
        },
        dataEntryType: {
          match: identifier,
          next: "dataEntryContents"
        }
      }),
      otherEntryContents: _objectSpread(_objectSpread({}, whitespace4), {}, {
        lbrace: {
          match: /[{(]/,
          next: "fields"
        }
      }),
      dataEntryContents: _objectSpread(_objectSpread({}, whitespace4), {}, {
        lbrace: {
          match: /[{(]/,
          next: "dataEntryContents"
        },
        label: /[^,\s]+/,
        comma: {
          match: ",",
          next: "fields"
        }
      }),
      fields: _objectSpread(_objectSpread({}, whitespace4), {}, {
        identifier,
        number: /-?\d+/,
        hash: "#",
        equals: "=",
        comma: ",",
        quote: {
          match: '"',
          push: "quotedLiteral"
        },
        lbrace: {
          match: "{",
          push: "bracedLiteral"
        },
        rbrace: {
          match: /[})]/,
          pop: true
        }
      }),
      quotedLiteral: {
        lbrace: {
          match: "{",
          push: "bracedLiteral"
        },
        quote: {
          match: '"',
          pop: true
        },
        text: {
          match: /(?:\\[\\{]|[^{"])+/,
          lineBreaks: true
        }
      },
      bracedLiteral: {
        lbrace: {
          match: "{",
          push: "bracedLiteral"
        },
        rbrace: {
          match: "}",
          pop: true
        },
        text: {
          match: /(?:\\[\\{}]|[^{}])+/,
          lineBreaks: true
        }
      }
    });
    var delimiters2 = {
      "(": ")",
      "{": "}"
    };
    var bibtexGrammar = exports2.bibtexGrammar = new _core3.util.Grammar({
      Main() {
        const entries2 = [];
        while (true) {
          while (this.matchToken("junk")) {
            this.consumeToken("junk");
          }
          if (this.matchEndOfFile()) {
            break;
          }
          entries2.push(this.consumeRule("Entry"));
        }
        return entries2.filter(Boolean);
      },
      _() {
        let oldToken;
        while (oldToken !== this.token) {
          oldToken = this.token;
          this.consumeToken("whitespace", true);
          this.consumeToken("comment", true);
        }
      },
      Entry() {
        this.consumeToken("at");
        this.consumeRule("_");
        const type2 = (this.matchToken("otherEntryType") ? this.consumeToken("otherEntryType") : this.consumeToken("dataEntryType")).value.toLowerCase();
        this.consumeRule("_");
        const openBrace = this.consumeToken("lbrace").value;
        this.consumeRule("_");
        let result;
        if (type2 === "string") {
          const [key2, value] = this.consumeRule("Field");
          this.state.strings[key2] = value;
        } else if (type2 === "preamble") {
          this.consumeRule("Expression");
        } else {
          const label = this.consumeToken("label").value;
          this.consumeRule("_");
          this.consumeToken("comma");
          this.consumeRule("_");
          const entryBody = this.consumeRule("EntryBody");
          result = _objectSpread({
            type: type2,
            label
          }, entryBody);
        }
        this.consumeRule("_");
        const closeBrace = this.consumeToken("rbrace").value;
        if (closeBrace !== delimiters2[openBrace]) {
          _core3.logger.warn("[plugin-bibtex]", `entry started with "${openBrace}", but ends with "${closeBrace}"`);
        }
        return result;
      },
      EntryBody() {
        const output2 = {
          properties: {}
        };
        while (this.matchToken("identifier")) {
          const [field, value] = this.consumeRule("Field");
          let annotationField;
          let annotationName = "default";
          if (field.endsWith(_config2.default.biber.annotationMarker)) {
            annotationField = field.slice(0, -_config2.default.biber.annotationMarker.length);
          } else if (field.includes(_config2.default.biber.annotationMarker + _config2.default.biber.namedAnnotationMarker)) {
            [annotationField, annotationName] = field.split(_config2.default.biber.annotationMarker + _config2.default.biber.namedAnnotationMarker);
          }
          if (annotationField) {
            if (!output2.annotations) {
              output2.annotations = {};
            }
            if (!output2.annotations[annotationField]) {
              output2.annotations[annotationField] = {};
            }
            output2.annotations[annotationField][annotationName] = value;
          } else {
            output2.properties[field] = value;
          }
          this.consumeRule("_");
          if (this.consumeToken("comma", true)) {
            this.consumeRule("_");
          } else {
            break;
          }
        }
        return output2;
      },
      Field() {
        const field = this.consumeToken("identifier").value.toLowerCase();
        this.consumeRule("_");
        this.consumeToken("equals");
        this.consumeRule("_");
        const value = this.consumeRule("Expression");
        return [field, value];
      },
      Expression() {
        let output2 = this.consumeRule("ExpressionPart");
        this.consumeRule("_");
        while (this.matchToken("hash")) {
          this.consumeToken("hash");
          this.consumeRule("_");
          output2 += this.consumeRule("ExpressionPart").toString();
          this.consumeRule("_");
        }
        return output2;
      },
      ExpressionPart() {
        if (this.matchToken("identifier")) {
          return this.state.strings[this.consumeToken("identifier").value.toLowerCase()] || "";
        } else if (this.matchToken("number")) {
          return parseInt(this.consumeToken("number"));
        } else if (this.matchToken("quote")) {
          return this.consumeRule("QuoteString");
        } else {
          return this.consumeRule("BracketString");
        }
      },
      QuoteString() {
        let output2 = "";
        this.consumeToken("quote");
        while (!this.matchToken("quote")) {
          output2 += this.consumeRule("Text");
        }
        this.consumeToken("quote");
        return output2;
      },
      BracketString() {
        let output2 = "";
        this.consumeToken("lbrace");
        while (!this.matchToken("rbrace")) {
          output2 += this.consumeRule("Text");
        }
        this.consumeToken("rbrace");
        return output2;
      },
      Text() {
        if (this.matchToken("lbrace")) {
          return `{${this.consumeRule("BracketString")}}`;
        } else {
          return this.consumeToken("text").value;
        }
      }
    }, {
      strings: _constants.defaultStrings
    });
    function parse16(text7) {
      return bibtexGrammar.parse(lexer.reset(text7));
    }
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/input/bibtxt.js
var require_bibtxt = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/input/bibtxt.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.textEntry = exports2.text = exports2.parse = void 0;
    var bibTxtRegex = {
      splitEntries: /\n\s*(?=\[)/g,
      parseEntry: /^\[(.+?)\]\s*(?:\n([\s\S]+))?$/,
      splitPairs: /((?=.)\s)*\n\s*/g,
      splitPair: /:(.*)/
    };
    var parseBibTxtEntry = (entry) => {
      const [, label, pairs2] = entry.match(bibTxtRegex.parseEntry) || [];
      if (!label || !pairs2) {
        return {};
      } else {
        const out = {
          type: "book",
          label,
          properties: {}
        };
        pairs2.trim().split(bibTxtRegex.splitPairs).filter((v) => v).forEach((pair) => {
          let [key2, value] = pair.split(bibTxtRegex.splitPair);
          if (value) {
            key2 = key2.trim();
            value = value.trim();
            if (key2 === "type") {
              out.type = value;
            } else {
              out.properties[key2] = value;
            }
          }
        });
        return out;
      }
    };
    exports2.textEntry = parseBibTxtEntry;
    var parseBibTxt = (src) => src.trim().split(bibTxtRegex.splitEntries).map(parseBibTxtEntry);
    exports2.text = exports2.parse = parseBibTxt;
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/mapping/shared.js
var require_shared3 = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/mapping/shared.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.TYPE_KEYS = exports2.TYPE = exports2.STANDARD_NUMBERS_PATTERN = exports2.MONTHS = exports2.LABEL = exports2.Converters = void 0;
    exports2.formatLabel = formatLabel2;
    exports2.parseDate = parseDate;
    exports2.parseMonth = parseMonth;
    var _core3 = require_lib6();
    var _config2 = _interopRequireDefault3(require_config3());
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    var stopWords = /* @__PURE__ */ new Set(["the", "a", "an"]);
    var unsafeChars = /(?:<\/?.*?>|[\u0020-\u002F\u003A-\u0040\u005B-\u005E\u0060\u007B-\u007F])+/g;
    var unicode = /[^\u0020-\u007F]+/g;
    function isLabelSafe(text7) {
      return !_config2.default.format.checkLabel || !text7.match(unsafeChars);
    }
    function formatLabelFromId(id) {
      if (id === null) {
        return "null";
      } else if (id === void 0) {
        return "undefined";
      } else if (_config2.default.format.checkLabel) {
        return id.toString().replace(unsafeChars, "");
      } else {
        return id.toString();
      }
    }
    function firstWord(text7) {
      if (!text7) {
        return "";
      } else {
        return text7.normalize("NFKD").replace(unicode, "").split(unsafeChars).find((word) => word.length && !stopWords.has(word.toLowerCase()));
      }
    }
    var name3 = new _core3.util.Translator([{
      source: "given",
      target: "given"
    }, {
      source: "family",
      target: "family"
    }, {
      source: "suffix",
      target: "suffix"
    }, {
      source: "prefix",
      target: "non-dropping-particle"
    }, {
      source: "family",
      target: "literal",
      when: {
        source: false,
        target: {
          family: false,
          given: false
        }
      }
    }]);
    var months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
    var TYPE2 = exports2.TYPE = "BibTeX type";
    var LABEL = exports2.LABEL = "BibTeX label";
    var MONTHS = exports2.MONTHS = {
      jan: 1,
      feb: 2,
      mar: 3,
      apr: 4,
      may: 5,
      jun: 6,
      jul: 7,
      aug: 8,
      sep: 9,
      oct: 10,
      nov: 11,
      dec: 12,
      january: 1,
      february: 2,
      march: 3,
      april: 4,
      may: 5,
      june: 6,
      july: 7,
      august: 8,
      september: 9,
      october: 10,
      november: 11,
      december: 12
    };
    var TYPE_KEYS = exports2.TYPE_KEYS = {
      bathesis: "Bachelor's thesis",
      mathesis: "Master's thesis",
      phdthesis: "PhD thesis",
      candthesis: "Candidate thesis",
      techreport: "technical report",
      resreport: "research report",
      software: "computer software",
      datacd: "data cd",
      audiocd: "audio cd",
      patent: "patent",
      patentde: "German patent",
      patenteu: "European patent",
      patentfr: "French patent",
      patentuk: "British patent",
      patentus: "U.S. patent",
      patreq: "patent request",
      patreqde: "German patent request",
      patreqeu: "European patent request",
      patreqfr: "French patent request",
      patrequk: "British patent request",
      patrequs: "U.S. patent request"
    };
    var STANDARD_NUMBERS_PATTERN = exports2.STANDARD_NUMBERS_PATTERN = /(^(?:ISAN )?(?:[0-9a-f]{4}-){4}[0-9a-z](?:-(?:[0-9a-f]{4}-){2}[0-9a-z])?$)|(^(?:979-?0-?|M-?)(?:\d{9}|(?=[\d-]{11}$)\d+-\d+-\d)$)|(^ISRN .{1,36}$)|(^(?:ISWC )?T-?\d{9}-?\d$)/i;
    function parseDate(date) {
      const parts = date.split("T")[0].replace(/[?~%]$/, "").split("-");
      const year = +parts[0].replace(/^Y(?=-?\d{4}\d+)/, "").replace(/X/g, "0");
      const month = +parts[1];
      const day = +parts[2];
      if (!month || month > 20) {
        return [year];
      } else if (!day) {
        return [year, month];
      } else {
        return [year, month, day];
      }
    }
    function parseMonth(value) {
      if (value == null) {
        return [];
      }
      if (+value) {
        return [parseInt(value, 10)];
      }
      value = value.trim().toLowerCase();
      if (value in MONTHS) {
        return [MONTHS[value]];
      }
      const parts = value.split(/\s+/);
      let month;
      let day;
      if (parts[0] in MONTHS) {
        month = MONTHS[parts[0]];
        day = parseInt(parts[1]);
      } else if (parts[1] in MONTHS) {
        month = MONTHS[parts[1]];
        day = parseInt(parts[0]);
      }
      return day ? [month, day] : month ? [month] : [];
    }
    function formatLabel2(author, issued, suffix, title) {
      let label = "";
      if (author && author[0]) {
        label += firstWord(author[0].family || author[0].literal);
      }
      if (issued && issued["date-parts"] && issued["date-parts"][0]) {
        label += issued["date-parts"][0][0];
      }
      if (suffix) {
        label += suffix;
      } else if (title) {
        label += firstWord(title);
      }
      return label;
    }
    var Converters = exports2.Converters = {
      PICK: {
        toTarget(...args) {
          return args.find(Boolean);
        },
        toSource(value) {
          return [value];
        }
      },
      DATE: {
        toTarget(date) {
          const parts = date.split("/").map((part) => part && part !== ".." ? parseDate(part) : void 0);
          return isNaN(parts[0][0]) ? {
            literal: date
          } : {
            "date-parts": parts
          };
        },
        toSource(date) {
          if ("date-parts" in date) {
            return date["date-parts"].map((datePart) => datePart.map((datePart2) => datePart2.toString().padStart(2, "0")).join("-")).join("/");
          }
        }
      },
      YEAR_MONTH: {
        toTarget(year, month, day) {
          if (isNaN(+year)) {
            return {
              literal: year
            };
          } else if (!isNaN(+day) && !isNaN(+month)) {
            return {
              "date-parts": [[+year, +month, +day]]
            };
          } else {
            return {
              "date-parts": [[+year, ...parseMonth(month)]]
            };
          }
        },
        toSource(date) {
          if ("date-parts" in date) {
            const [year, month, day] = date["date-parts"][0];
            return [year.toString(), month ? day ? `${months[month - 1]} ${day}` : month : void 0];
          } else {
            return [];
          }
        }
      },
      EPRINT: {
        toTarget(id, type2) {
          if (type2 === "pubmed") {
            return id;
          }
        },
        toSource(id) {
          return [id, "pubmed"];
        }
      },
      EVENT_TITLE: {
        toTarget(title, addon) {
          if (addon) {
            title += " (" + addon + ")";
          }
          return title;
        },
        toSource(title) {
          return title.match(/^(.+)(?: \((.+)\))?$/).slice(1, 3);
        }
      },
      HOW_PUBLISHED: {
        toTarget(howPublished) {
          if (howPublished.startsWith("http")) {
            return howPublished;
          }
        }
      },
      KEYWORDS: {
        toTarget(list6) {
          return list6.join(",");
        },
        toSource(list6) {
          return list6.split(",");
        }
      },
      LABEL: {
        toTarget(label) {
          return [label, label];
        },
        toSource(id, label, author, issued, suffix, title) {
          if (label && isLabelSafe(label)) {
            return label;
          } else if (_config2.default.format.useIdAsLabel) {
            return formatLabelFromId(id);
          } else {
            return formatLabel2(author, issued, suffix, title) || formatLabelFromId(id);
          }
        }
      },
      NAMES: {
        toTarget(list6) {
          return list6.map(name3.convertToTarget);
        },
        toSource(list6) {
          return list6.map(name3.convertToSource);
        }
      },
      NAMES_ORCID: {
        toTarget(list6, orcid2) {
          return list6.map((inputName, i2) => {
            var _orcid$item;
            const outputName = name3.convertToTarget(inputName);
            if (typeof (orcid2 === null || orcid2 === void 0 || (_orcid$item = orcid2.item) === null || _orcid$item === void 0 ? void 0 : _orcid$item[i2]) === "string") {
              outputName._orcid = orcid2.item[i2];
            }
            return outputName;
          });
        },
        toSource(list6) {
          const names = [];
          const orcid2 = [];
          for (let i2 = 0; i2 < list6.length; i2++) {
            names.push(name3.convertToSource(list6[i2]));
            if (list6[i2]._orcid) {
              orcid2[i2] = list6[i2]._orcid;
            }
          }
          return [names, orcid2.length ? {
            item: orcid2
          } : void 0];
        }
      },
      PAGES: {
        toTarget(pages) {
          return pages.replace(/[–—]/, "-");
        },
        toSource(pages) {
          return pages.replace("-", "--");
        }
      },
      STANDARD_NUMBERS: {
        toTarget(...args) {
          return args.find(Boolean);
        },
        toSource(number2) {
          const match3 = number2.toString().match(STANDARD_NUMBERS_PATTERN);
          return match3 ? match3.slice(1, 5) : [];
        }
      },
      STATUS: {
        toSource(state) {
          if (/^(inpreparation|submitted|forthcoming|inpress|prepublished)$/i.test(state)) {
            return state;
          }
        }
      },
      TITLE: {
        toTarget(title, subtitle, addon) {
          if (subtitle) {
            title += ": " + subtitle;
          }
          return title;
        },
        toSource(title) {
          return [title];
        }
      }
    };
  }
});

// ../../node_modules/@citation-js/date/lib/input.js
var require_input5 = __commonJS({
  "../../node_modules/@citation-js/date/lib/input.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    function _slicedToArray(arr, i2) {
      return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i2) || _unsupportedIterableToArray(arr, i2) || _nonIterableRest();
    }
    function _nonIterableRest() {
      throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    }
    function _unsupportedIterableToArray(o, minLen) {
      if (!o) return;
      if (typeof o === "string") return _arrayLikeToArray(o, minLen);
      var n = Object.prototype.toString.call(o).slice(8, -1);
      if (n === "Object" && o.constructor) n = o.constructor.name;
      if (n === "Map" || n === "Set") return Array.from(o);
      if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
    }
    function _arrayLikeToArray(arr, len) {
      if (len == null || len > arr.length) len = arr.length;
      for (var i2 = 0, arr2 = new Array(len); i2 < len; i2++) arr2[i2] = arr[i2];
      return arr2;
    }
    function _iterableToArrayLimit(arr, i2) {
      var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
      if (_i == null) return;
      var _arr = [];
      var _n = true;
      var _d2 = false;
      var _s, _e;
      try {
        for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
          _arr.push(_s.value);
          if (i2 && _arr.length === i2) break;
        }
      } catch (err) {
        _d2 = true;
        _e = err;
      } finally {
        try {
          if (!_n && _i["return"] != null) _i["return"]();
        } finally {
          if (_d2) throw _e;
        }
      }
      return _arr;
    }
    function _arrayWithHoles(arr) {
      if (Array.isArray(arr)) return arr;
    }
    var monthMap = {
      jan: 1,
      feb: 2,
      mar: 3,
      apr: 4,
      may: 5,
      jun: 6,
      jul: 7,
      aug: 8,
      sep: 9,
      oct: 10,
      nov: 11,
      dec: 12
    };
    var dateRangeDelimiters = / (?:to|[-/]) | ?(?:--|[–—]) ?/;
    var dateRangePattern = /^(\d{4}-\d{2}-\d{2})\/(\d{4}-\d{2}-\d{2})$/;
    function getMonth(monthName) {
      return monthMap[monthName.toLowerCase().slice(0, 3)];
    }
    function parseEpoch(date) {
      const epoch = new Date(date);
      if (typeof date === "number" && !isNaN(epoch.valueOf())) {
        return [epoch.getFullYear(), epoch.getMonth() + 1, epoch.getDate()];
      } else {
        return null;
      }
    }
    var parseIso8601 = function parseIso86012(date) {
      const pattern = /^(\d{4}|[-+]\d{6,})-(\d{2})(?:-(\d{2}))?/;
      if (typeof date !== "string" || !pattern.test(date)) {
        return null;
      }
      const _date$match = date.match(pattern), _date$match2 = _slicedToArray(_date$match, 4), year = _date$match2[1], month = _date$match2[2], day = _date$match2[3];
      if (!+month) {
        return [year];
      } else if (!+day) {
        return [year, month];
      } else {
        return [year, month, day];
      }
    };
    var parseRfc2822 = function parseRfc28222(date) {
      const pattern = /^(?:[a-z]{3},\s*)?(\d{1,2}) ([a-z]{3}) (\d{4,})/i;
      if (typeof date !== "string" || !pattern.test(date)) {
        return null;
      }
      let _date$match3 = date.match(pattern), _date$match4 = _slicedToArray(_date$match3, 4), day = _date$match4[1], month = _date$match4[2], year = _date$match4[3];
      month = getMonth(month);
      if (!month) {
        return null;
      }
      return [year, month, day];
    };
    function parseAmericanDay(date) {
      const pattern = /^(\d{1,2})\/(\d{1,2})\/(\d{2}(?:\d{2})?)/;
      if (typeof date !== "string" || !pattern.test(date)) {
        return null;
      }
      const _date$match5 = date.match(pattern), _date$match6 = _slicedToArray(_date$match5, 4), month = _date$match6[1], day = _date$match6[2], year = _date$match6[3];
      const check2 = new Date(year, month, day);
      if (check2.getMonth() === parseInt(month)) {
        return [year, month, day];
      } else {
        return null;
      }
    }
    function parseDay(date) {
      const pattern = /^(\d{1,2})[ .\-/](\d{1,2}|[a-z]{3,10})[ .\-/](-?\d+)/i;
      const reversePattern = /^(-?\d+)[ .\-/](\d{1,2}|[a-z]{3,10})[ .\-/](\d{1,2})/i;
      let year;
      let month;
      let day;
      if (typeof date !== "string") {
        return null;
      } else if (pattern.test(date)) {
        var _date$match7 = date.match(pattern);
        var _date$match8 = _slicedToArray(_date$match7, 4);
        day = _date$match8[1];
        month = _date$match8[2];
        year = _date$match8[3];
      } else if (reversePattern.test(date)) {
        var _date$match9 = date.match(reversePattern);
        var _date$match10 = _slicedToArray(_date$match9, 4);
        year = _date$match10[1];
        month = _date$match10[2];
        day = _date$match10[3];
      } else {
        return null;
      }
      if (getMonth(month)) {
        month = getMonth(month);
      } else if (isNaN(month)) {
        return null;
      }
      return [year, month, day];
    }
    function parseMonth(date) {
      const pattern = /^([a-z]{3,10}|-?\d+)[^\w-]+([a-z]{3,10}|-?\d+)$/i;
      if (typeof date === "string" && pattern.test(date)) {
        const values = date.match(pattern).slice(1, 3);
        let month;
        if (getMonth(values[1])) {
          month = getMonth(values.pop());
        } else if (getMonth(values[0])) {
          month = getMonth(values.shift());
        } else if (values.some(isNaN) || values.every((value) => +value < 0)) {
          return null;
        } else if (+values[0] < 0) {
          month = values.pop();
        } else if (+values[0] > +values[1] && +values[1] > 0) {
          month = values.pop();
        } else {
          month = values.shift();
        }
        const year = values.pop();
        return [year, month];
      } else {
        return null;
      }
    }
    function parseYear(date) {
      if (typeof date !== "string") {
        return null;
      }
      const adBc = date.match(/^(\d+) ?(a\.?d\.?|b\.?c\.?)$/i);
      if (adBc) {
        const _adBc$slice = adBc.slice(1), _adBc$slice2 = _slicedToArray(_adBc$slice, 2), date2 = _adBc$slice2[0], suffix = _adBc$slice2[1];
        return [date2 * (suffix.toLowerCase()[0] === "a" ? 1 : -1)];
      } else if (/^-?\d+$/.test(date)) {
        return [date];
      } else {
        return null;
      }
    }
    function parseDateParts(value) {
      const dateParts = parseEpoch(value) || parseIso8601(value) || parseRfc2822(value) || parseAmericanDay(value) || parseDay(value) || parseMonth(value) || parseYear(value);
      return dateParts && dateParts.map((string2) => parseInt(string2));
    }
    function splitDateRange(range) {
      if (dateRangePattern.test(range)) {
        return range.match(dateRangePattern).slice(1, 3);
      } else {
        return range.split(dateRangeDelimiters);
      }
    }
    function parseDate(rangeStart, rangeEnd) {
      const range = [];
      const rangeStartAsRange = typeof rangeStart === "string" && splitDateRange(rangeStart);
      if (rangeEnd) {
        range.push(rangeStart, rangeEnd);
      } else if (rangeStartAsRange && rangeStartAsRange.length === 2) {
        range.push(...rangeStartAsRange);
      } else {
        range.push(rangeStart);
      }
      const dateParts = range.map(parseDateParts);
      if (dateParts.filter(Boolean).length === range.length) {
        return {
          "date-parts": dateParts
        };
      } else {
        return {
          raw: rangeEnd ? range.join("/") : rangeStart
        };
      }
    }
    var _default2 = parseDate;
    exports2.default = _default2;
  }
});

// ../../node_modules/@citation-js/date/lib/output.js
var require_output4 = __commonJS({
  "../../node_modules/@citation-js/date/lib/output.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    function padStart2(str2, len, chr) {
      if (str2.length >= len) {
        return str2;
      }
      while (str2.length < len) {
        str2 = chr + str2;
      }
      return str2.slice(-len);
    }
    var getDate = function getDate2(date, delimiter2 = "-") {
      if (!date["date-parts"]) {
        return date.raw;
      }
      const dateParts = date["date-parts"][0].map((part) => part.toString());
      switch (dateParts.length) {
        case 3:
          dateParts[2] = padStart2(dateParts[2], 2, "0");
        case 2:
          dateParts[1] = padStart2(dateParts[1], 2, "0");
        case 1:
          dateParts[0] = padStart2(dateParts[0], 4, "0");
          break;
      }
      return dateParts.join(delimiter2);
    };
    var _default2 = getDate;
    exports2.default = _default2;
  }
});

// ../../node_modules/@citation-js/date/lib/index.js
var require_lib13 = __commonJS({
  "../../node_modules/@citation-js/date/lib/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    Object.defineProperty(exports2, "format", {
      enumerable: true,
      get: function get() {
        return _output.default;
      }
    });
    Object.defineProperty(exports2, "parse", {
      enumerable: true,
      get: function get() {
        return _input.default;
      }
    });
    var _input = _interopRequireDefault3(require_input5());
    var _output = _interopRequireDefault3(require_output4());
    function _interopRequireDefault3(obj) {
      return obj && obj.__esModule ? obj : { default: obj };
    }
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/mapping/biblatex.js
var require_biblatex = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/mapping/biblatex.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    var _core3 = require_lib6();
    var _date = require_lib13();
    var _biblatexTypes = _interopRequireDefault3(require_biblatexTypes());
    var _shared = require_shared3();
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    var nonSpec = [{
      source: "note",
      target: "accessed",
      when: {
        source: false,
        target: {
          note: false,
          addendum: false
        }
      },
      convert: {
        toSource(accessed) {
          return `[Online; accessed ${(0, _date.format)(accessed)}]`;
        }
      }
    }, {
      source: "numpages",
      target: "number-of-pages",
      when: {
        source: {
          pagetotal: false
        },
        target: false
      }
    }, {
      source: "pmid",
      target: "PMID",
      when: {
        source: {
          eprinttype(type2) {
            return type2 !== "pmid";
          },
          archiveprefix(type2) {
            return type2 !== "pmid";
          }
        },
        target: false
      }
    }, {
      source: "pmcid",
      target: "PMCID",
      when: {
        target: false
      }
    }, {
      source: "s2id",
      target: "custom",
      convert: {
        toTarget(S2ID) {
          return {
            S2ID
          };
        },
        toSource({
          S2ID
        }) {
          return S2ID;
        }
      }
    }];
    var aliases2 = [{
      source: "annote",
      target: "annote",
      when: {
        source: {
          annotation: false
        },
        target: false
      }
    }, {
      source: "address",
      target: "publisher-place",
      convert: _shared.Converters.PICK,
      when: {
        source: {
          location: false
        },
        target: false
      }
    }, {
      source: ["eprint", "archiveprefix"],
      target: "PMID",
      convert: _shared.Converters.EPRINT,
      when: {
        source: {
          eprinttype: false
        },
        target: false
      }
    }, {
      source: "journal",
      target: "container-title",
      when: {
        source: {
          maintitle: false,
          booktitle: false,
          journaltitle: false
        },
        target: false
      }
    }, {
      source: "school",
      target: "publisher",
      convert: _shared.Converters.PICK,
      when: {
        source: {
          institution: false,
          organization: false,
          publisher: false
        },
        target: false
      }
    }];
    var _default2 = exports2.default = new _core3.util.Translator([...aliases2, ...nonSpec, {
      source: "abstract",
      target: "abstract"
    }, {
      source: "urldate",
      target: "accessed",
      convert: _shared.Converters.DATE
    }, {
      source: "annotation",
      target: "annote"
    }, {
      source: ["author", "author+an:orcid"],
      target: "author",
      convert: _shared.Converters.NAMES_ORCID
    }, {
      source: "library",
      target: "call-number"
    }, {
      source: "chapter",
      target: "chapter-number"
    }, {
      source: "bookauthor",
      target: "container-author",
      convert: _shared.Converters.NAMES
    }, {
      source: ["maintitle", "mainsubtitle", "maintitleaddon"],
      target: "container-title",
      when: {
        source: true,
        target: {
          "number-of-volumes": true
        }
      },
      convert: _shared.Converters.TITLE
    }, {
      source: ["booktitle", "booksubtitle", "booktitleaddon"],
      target: "container-title",
      when: {
        source: {
          maintitle: false
        },
        target: {
          "number-of-volumes": false,
          type(type2) {
            return !type2 || !type2.startsWith("article");
          }
        }
      },
      convert: _shared.Converters.TITLE
    }, {
      source: ["journaltitle", "journalsubtitle", "journaltitleaddon"],
      target: "container-title",
      when: {
        source: {
          [_shared.TYPE]: "article"
        },
        target: {
          type: ["article", "article-newspaper", "article-journal", "article-magazine"]
        }
      },
      convert: _shared.Converters.TITLE
    }, {
      source: "shortjournal",
      target: "container-title-short",
      when: {
        source: {
          [_shared.TYPE]: "article"
        },
        target: {
          type: ["article", "article-newspaper", "article-journal", "article-magazine"]
        }
      }
    }, {
      source: "shortjournal",
      target: "journalAbbreviation",
      when: {
        source: false,
        target: {
          "container-title-short": false
        }
      }
    }, {
      source: "number",
      target: "collection-number",
      when: {
        source: {
          [_shared.TYPE]: ["book", "mvbook", "inbook", "bookinbook", "suppbook", "collection", "mvcollection", "incollection", "suppcollection", "manual", "suppperiodical", "proceedings", "mvproceedings", "refererence"]
        },
        target: {
          type: ["bill", "book", "broadcast", "chapter", "dataset", "entry", "entry-dictionary", "entry-encyclopedia", "figure", "graphic", "interview", "legislation", "legal_case", "manuscript", "map", "motion_picture", "musical_score", "pamphlet", "post", "post-weblog", "personal_communication", "review", "review-book", "song", "speech", "thesis", "treaty", "webpage"]
        }
      }
    }, {
      source: "series",
      target: "collection-title"
    }, {
      source: "shortseries",
      target: "collection-title-short"
    }, {
      source: "doi",
      target: "DOI"
    }, {
      source: "edition",
      target: "edition"
    }, {
      source: "editor",
      target: "editor",
      convert: _shared.Converters.NAMES
    }, {
      source: [_shared.TYPE, "entrysubtype", "type"],
      target: ["type", "genre"],
      convert: {
        toTarget(type2, subtype, typeKey) {
          if (!typeKey) {
            if (type2 === "mastersthesis") {
              typeKey = "mathesis";
            }
            if (type2 === "phdthesis") {
              typeKey = "phdthesis";
            }
            if (type2 === "techreport") {
              typeKey = "techreport";
            }
          }
          return [_biblatexTypes.default.source[type2] || "document", typeKey || subtype];
        },
        toSource(type2, genre) {
          const sourceType = _biblatexTypes.default.target[type2] || "misc";
          return genre in _shared.TYPE_KEYS ? [sourceType, void 0, genre] : [sourceType, genre];
        }
      }
    }, {
      source: _shared.TYPE,
      when: {
        target: {
          type: false
        }
      },
      convert: {
        toSource() {
          return "misc";
        }
      }
    }, {
      source: "eventdate",
      target: "event-date",
      convert: _shared.Converters.DATE
    }, {
      source: "venue",
      target: "event-place"
    }, {
      source: ["eventtitle", "eventtitleaddon"],
      target: "event-title",
      convert: _shared.Converters.EVENT_TITLE
    }, {
      source: ["eventtitle", "eventtitleaddon"],
      target: "event",
      convert: _shared.Converters.EVENT_TITLE,
      when: {
        source: false,
        target: {
          "event-title": false
        }
      }
    }, {
      source: _shared.LABEL,
      target: ["id", "citation-key", "author", "issued", "year-suffix", "title"],
      convert: _shared.Converters.LABEL
    }, {
      source: "isbn",
      target: "ISBN"
    }, {
      source: "issn",
      target: "ISSN"
    }, {
      source: "issue",
      target: "issue",
      when: {
        source: {
          number: false,
          [_shared.TYPE]: ["article", "periodical"]
        },
        target: {
          issue(issue) {
            return typeof issue === "string" && !issue.match(/\d+/);
          },
          type: ["article", "article-journal", "article-newspaper", "article-magazine", "periodical"]
        }
      }
    }, {
      source: "number",
      target: "issue",
      when: {
        source: {
          [_shared.TYPE]: ["article", "periodical", "inproceedings"]
        },
        target: {
          issue(issue) {
            return issue && (typeof issue === "number" || issue.match(/\d+/));
          },
          type: ["article", "article-journal", "article-newspaper", "article-magazine", "paper-conference", "periodical"]
        }
      }
    }, {
      source: "date",
      target: "issued",
      convert: _shared.Converters.DATE
    }, {
      source: ["year", "month", "day"],
      target: "issued",
      convert: _shared.Converters.YEAR_MONTH,
      when: {
        source: {
          date: false
        },
        target: false
      }
    }, {
      source: "location",
      target: "jurisdiction",
      when: {
        source: {
          type: "patent"
        },
        target: {
          type: "patent"
        }
      }
    }, {
      source: "keywords",
      target: "keyword",
      convert: _shared.Converters.KEYWORDS
    }, {
      source: "language",
      target: "language",
      convert: _shared.Converters.PICK
    }, {
      source: "langid",
      target: "language",
      when: {
        source: {
          language: false
        },
        target: false
      }
    }, {
      source: "note",
      target: "note"
    }, {
      source: "addendum",
      target: "note",
      when: {
        source: {
          note: false
        },
        target: false
      }
    }, {
      source: "eid",
      target: "number",
      when: {
        target: {
          type: ["article-journal"]
        }
      }
    }, {
      source: ["isan", "ismn", "isrn", "iswc"],
      target: "number",
      convert: _shared.Converters.STANDARD_NUMBERS,
      when: {
        source: {
          [_shared.TYPE](type2) {
            return type2 !== "patent";
          }
        },
        target: {
          type(type2) {
            return type2 !== "patent";
          }
        }
      }
    }, {
      source: "number",
      target: "number",
      when: {
        source: {
          [_shared.TYPE]: ["patent", "report", "techreport", "legislation"]
        },
        target: {
          type: ["patent", "report", "legislation"]
        }
      }
    }, {
      source: "origdate",
      target: "original-date",
      convert: _shared.Converters.DATE
    }, {
      source: "origlocation",
      target: "original-publisher-place",
      convert: _shared.Converters.PICK
    }, {
      source: "origpublisher",
      target: "original-publisher",
      convert: _shared.Converters.PICK
    }, {
      source: "origtitle",
      target: "original-title"
    }, {
      source: "pages",
      target: "page",
      when: {
        source: {
          bookpagination: [void 0, "page"]
        }
      },
      convert: _shared.Converters.PAGES
    }, {
      source: "pagetotal",
      target: "number-of-pages"
    }, {
      source: "part",
      target: "part-number"
    }, {
      source: ["eprint", "eprinttype"],
      target: "PMID",
      convert: _shared.Converters.EPRINT
    }, {
      source: "location",
      target: "publisher-place",
      convert: _shared.Converters.PICK
    }, {
      source: "publisher",
      target: "publisher",
      convert: _shared.Converters.PICK,
      when: {
        source: true,
        target: {
          type: ["article", "article-journal", "article-magazine", "article-newspaper", "bill", "book", "broadcast", "chapter", "classic", "collection", "dataset", "document", "entry", "entry-dictionary", "entry-encyclopedia", "event", "figure", "graphic", "hearing", "interview", "legal_case", "legislation", "manuscript", "map", "motion_picture", "musical_score", "pamphlet", "patent", "performance", "periodical", "personal_communication", "post", "post-weblog", "regulation", "review", "review-book", "software", "song", "speech", "standard", "treaty"]
        }
      }
    }, {
      source: "organization",
      target: "publisher",
      convert: _shared.Converters.PICK,
      when: {
        source: {
          publisher: false
        },
        target: {
          type: ["paper-conference", "webpage"]
        }
      }
    }, {
      source: "institution",
      target: "publisher",
      convert: _shared.Converters.PICK,
      when: {
        source: {
          publisher: false,
          organization: false
        },
        target: {
          type: ["report", "thesis"]
        }
      }
    }, {
      source: "howpublished",
      target: "publisher",
      convert: _shared.Converters.PICK,
      when: {
        source: {
          howpublished(howPublished) {
            return howPublished && !howPublished.startsWith("http");
          },
          publisher: false,
          organization: false,
          institution: false
        },
        target: {
          type: "manuscript"
        }
      }
    }, {
      source: ["pages", "bookpagination"],
      target: "section",
      when: {
        source: {
          bookpagination: "section"
        },
        target: {
          page: false
        }
      },
      convert: {
        toTarget(section) {
          return section;
        },
        toSource(section) {
          return [section, "section"];
        }
      }
    }, {
      source: "pubstate",
      target: "status",
      convert: _shared.Converters.STATUS
    }, {
      source: "shorttitle",
      target: "title-short"
    }, {
      source: "shorttitle",
      target: "shortTitle",
      when: {
        source: false,
        target: {
          "title-short": false
        }
      }
    }, {
      source: ["title", "subtitle", "titleaddon"],
      target: "title",
      convert: _shared.Converters.TITLE
    }, {
      source: "translator",
      target: "translator",
      convert: _shared.Converters.NAMES
    }, {
      source: "url",
      target: "URL"
    }, {
      source: "howpublished",
      target: "URL",
      convert: _shared.Converters.HOW_PUBLISHED,
      when: {
        source: {
          url: false
        },
        target: false
      }
    }, {
      source: "version",
      target: "version"
    }, {
      source: "volume",
      target: "volume"
    }, {
      source: "volumes",
      target: "number-of-volumes"
    }, {
      source: ["issuetitle", "issuesubtitle", "issuetitleaddon"],
      target: "volume-title",
      convert: _shared.Converters.TITLE
    }]);
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/mapping/bibtex.js
var require_bibtex = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/mapping/bibtex.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    var _core3 = require_lib6();
    var _date = require_lib13();
    var _bibtexTypes = _interopRequireDefault3(require_bibtexTypes());
    var _shared = require_shared3();
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    var _default2 = exports2.default = new _core3.util.Translator([{
      source: "note",
      target: "accessed",
      when: {
        source: false,
        target: {
          note: false
        }
      },
      convert: {
        toSource(accessed) {
          return `[Online; accessed ${(0, _date.format)(accessed)}]`;
        }
      }
    }, {
      source: "annote",
      target: "annote"
    }, {
      source: "address",
      target: "publisher-place",
      convert: _shared.Converters.PICK
    }, {
      source: "author",
      target: "author",
      convert: _shared.Converters.NAMES
    }, {
      source: "chapter",
      target: "chapter-number"
    }, {
      source: "number",
      target: "collection-number",
      when: {
        source: {
          [_shared.TYPE]: ["book", "mvbook", "inbook", "collection", "mvcollection", "incollection", "suppcollection", "manual", "suppperiodical", "proceedings", "mvproceedings", "refererence"]
        },
        target: {
          type: ["bill", "book", "broadcast", "chapter", "dataset", "entry", "entry-dictionary", "entry-encyclopedia", "figure", "graphic", "interview", "legislation", "legal_case", "manuscript", "map", "motion_picture", "musical_score", "pamphlet", "post", "post-weblog", "personal_communication", "review", "review-book", "song", "speech", "thesis", "treaty", "webpage"]
        }
      }
    }, {
      source: "series",
      target: "collection-title"
    }, {
      source: "booktitle",
      target: "container-title",
      when: {
        target: {
          type: ["chapter", "paper-conference"]
        }
      }
    }, {
      source: "journal",
      target: "container-title",
      when: {
        source: {
          [_shared.TYPE]: "article"
        },
        target: {
          type: ["article", "article-newspaper", "article-journal", "article-magazine"]
        }
      }
    }, {
      source: "doi",
      target: "DOI"
    }, {
      source: "edition",
      target: "edition"
    }, {
      source: "editor",
      target: "editor",
      convert: _shared.Converters.NAMES
    }, {
      source: _shared.LABEL,
      target: ["id", "citation-key", "author", "issued", "year-suffix", "title"],
      convert: _shared.Converters.LABEL
    }, {
      source: "isbn",
      target: "ISBN"
    }, {
      source: "issn",
      target: "ISSN"
    }, {
      source: "number",
      target: "issue",
      when: {
        source: {
          [_shared.TYPE]: ["article", "periodical", "inproceedings"]
        },
        target: {
          issue(issue) {
            return typeof issue === "number" || typeof issue === "string" && issue.match(/\d+/);
          },
          type: ["article", "article-journal", "article-newspaper", "article-magazine", "paper-conference", "periodical"]
        }
      }
    }, {
      source: ["year", "month", "day"],
      target: "issued",
      convert: _shared.Converters.YEAR_MONTH
    }, {
      source: "note",
      target: "note"
    }, {
      source: "number",
      target: "number",
      when: {
        source: {
          [_shared.TYPE]: ["patent", "report", "techreport"]
        },
        target: {
          type: ["patent", "report"]
        }
      }
    }, {
      source: "eid",
      target: "number",
      when: {
        source: {
          number: false
        },
        target: {
          type: ["article-journal"]
        }
      }
    }, {
      source: "pages",
      target: "page",
      convert: _shared.Converters.PAGES
    }, {
      source: "publisher",
      target: "publisher",
      convert: _shared.Converters.PICK,
      when: {
        target: {
          type: ["article", "article-journal", "article-magazine", "article-newspaper", "bill", "book", "broadcast", "chapter", "classic", "collection", "dataset", "document", "entry", "entry-dictionary", "entry-encyclopedia", "event", "figure", "graphic", "hearing", "interview", "legal_case", "legislation", "map", "motion_picture", "musical_score", "pamphlet", "patent", "performance", "periodical", "personal_communication", "post", "post-weblog", "regulation", "review", "review-book", "software", "song", "speech", "standard", "treaty", "webpage"]
        }
      }
    }, {
      source: "organization",
      target: "publisher",
      convert: _shared.Converters.PICK,
      when: {
        source: {
          publisher: false
        },
        target: {
          type: "paper-conference"
        }
      }
    }, {
      source: "institution",
      target: "publisher",
      convert: _shared.Converters.PICK,
      when: {
        source: {
          publisher: false,
          organization: false
        },
        target: {
          type: "report"
        }
      }
    }, {
      source: "school",
      target: "publisher",
      convert: _shared.Converters.PICK,
      when: {
        source: {
          institution: false,
          organization: false,
          publisher: false
        },
        target: {
          type: "thesis"
        }
      }
    }, {
      source: "howpublished",
      target: "publisher",
      convert: _shared.Converters.PICK,
      when: {
        source: {
          howpublished(howPublished) {
            return howPublished && !howPublished.startsWith("http");
          },
          publisher: false,
          organization: false,
          institution: false,
          school: false
        },
        target: {
          type: "manuscript"
        }
      }
    }, {
      source: "title",
      target: "title"
    }, {
      source: [_shared.TYPE, "type"],
      target: ["type", "genre"],
      convert: {
        toTarget(sourceType, subType) {
          const type2 = _bibtexTypes.default.source[sourceType] || "document";
          if (subType) {
            return [type2, subType];
          } else if (sourceType === "mastersthesis") {
            return [type2, "Master's thesis"];
          } else if (sourceType === "phdthesis") {
            return [type2, "PhD thesis"];
          } else {
            return [type2];
          }
        },
        toSource(targetType, genre) {
          const type2 = _bibtexTypes.default.target[targetType] || "misc";
          if (/^(master'?s|diploma) thesis$/i.test(genre)) {
            return ["mastersthesis"];
          } else if (/^(phd|doctoral) thesis$/i.test(genre)) {
            return ["phdthesis"];
          } else {
            return [type2, genre];
          }
        }
      }
    }, {
      source: _shared.TYPE,
      when: {
        target: {
          type: false
        }
      },
      convert: {
        toSource() {
          return "misc";
        }
      }
    }, {
      source: "url",
      target: "URL"
    }, {
      source: "howpublished",
      target: "URL",
      convert: _shared.Converters.HOW_PUBLISHED,
      when: {
        target: {
          publisher: false
        }
      }
    }, {
      source: "volume",
      target: "volume"
    }]);
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/mapping/crossref.js
var require_crossref = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/mapping/crossref.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.crossref = crossref;
    function ownKeys(e2, r2) {
      var t2 = Object.keys(e2);
      if (Object.getOwnPropertySymbols) {
        var o = Object.getOwnPropertySymbols(e2);
        r2 && (o = o.filter(function(r3) {
          return Object.getOwnPropertyDescriptor(e2, r3).enumerable;
        })), t2.push.apply(t2, o);
      }
      return t2;
    }
    function _objectSpread(e2) {
      for (var r2 = 1; r2 < arguments.length; r2++) {
        var t2 = null != arguments[r2] ? arguments[r2] : {};
        r2 % 2 ? ownKeys(Object(t2), true).forEach(function(r3) {
          _defineProperty(e2, r3, t2[r3]);
        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t2)) : ownKeys(Object(t2)).forEach(function(r3) {
          Object.defineProperty(e2, r3, Object.getOwnPropertyDescriptor(t2, r3));
        });
      }
      return e2;
    }
    function _defineProperty(e2, r2, t2) {
      return (r2 = _toPropertyKey(r2)) in e2 ? Object.defineProperty(e2, r2, { value: t2, enumerable: true, configurable: true, writable: true }) : e2[r2] = t2, e2;
    }
    function _toPropertyKey(t2) {
      var i2 = _toPrimitive(t2, "string");
      return "symbol" == typeof i2 ? i2 : i2 + "";
    }
    function _toPrimitive(t2, r2) {
      if ("object" != typeof t2 || !t2) return t2;
      var e2 = t2[Symbol.toPrimitive];
      if (void 0 !== e2) {
        var i2 = e2.call(t2, r2 || "default");
        if ("object" != typeof i2) return i2;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return ("string" === r2 ? String : Number)(t2);
    }
    var BOOK = /* @__PURE__ */ new Set(["book", "inbook", "bookinbook", "suppbook"]);
    var BOOK_PART = /* @__PURE__ */ new Set(["inbook", "bookinbook", "suppbook"]);
    var COLLECTION = /* @__PURE__ */ new Set(["collection", "reference", "incollection", "inreference", "suppcollection"]);
    var COLLECTION_PART = /* @__PURE__ */ new Set(["incollection", "inreference", "suppcollection"]);
    var PROCEEDINGS = /* @__PURE__ */ new Set(["proceedings", "inproceedings"]);
    var PROCEEDINGS_PART = /* @__PURE__ */ new Set(["inproceedings"]);
    var PERIODICAL_PART = /* @__PURE__ */ new Set(["article", "suppperiodical"]);
    var TITLE_MAP = {
      mvbook: ["main", BOOK],
      mvcollection: ["main", COLLECTION],
      mvreference: ["main", COLLECTION],
      mvproceedings: ["main", PROCEEDINGS],
      book: ["book", BOOK_PART],
      collection: ["book", COLLECTION_PART],
      reference: ["book", COLLECTION_PART],
      proceedings: ["book", PROCEEDINGS_PART],
      periodical: ["journal", PERIODICAL_PART]
    };
    function crossref(target, entry, registry) {
      if (entry.crossref in registry) {
        const parent2 = registry[entry.crossref];
        if (parent2.properties === entry) {
          return entry;
        }
        const data = _objectSpread({}, crossref(parent2.type, parent2.properties, registry));
        delete data.ids;
        delete data.crossref;
        delete data.xref;
        delete data.entryset;
        delete data.entrysubtype;
        delete data.execute;
        delete data.label;
        delete data.options;
        delete data.presort;
        delete data.related;
        delete data.relatedoptions;
        delete data.relatedstring;
        delete data.relatedtype;
        delete data.shortand;
        delete data.shortandintro;
        delete data.sortkey;
        if ((parent2.type === "mvbook" || parent2.type === "book") && BOOK_PART.has(target)) {
          data.bookauthor = data.author;
        }
        if (parent2.type in TITLE_MAP) {
          const [prefix2, targets] = TITLE_MAP[parent2.type];
          if (targets.has(target)) {
            data[prefix2 + "title"] = data.title;
            data[prefix2 + "subtitle"] = data.subtitle;
            if (prefix2 !== "journal") {
              data[prefix2 + "titleaddon"] = data.titleaddon;
            }
            delete data.title;
            delete data.subtitle;
            delete data.titleaddon;
            delete data.shorttitle;
            delete data.sorttitle;
            delete data.indextitle;
            delete data.indexsorttitle;
          }
        }
        return Object.assign(data, entry);
      }
      return entry;
    }
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/mapping/index.js
var require_mapping = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/mapping/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.format = format;
    exports2.formatBibtex = formatBibtex;
    exports2.parse = parse16;
    exports2.parseBibtex = parseBibtex;
    var _shared = require_shared3();
    var _biblatex = _interopRequireDefault3(require_biblatex());
    var _bibtex = _interopRequireDefault3(require_bibtex());
    var _crossref = require_crossref();
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    function _objectWithoutProperties(e2, t2) {
      if (null == e2) return {};
      var o, r2, i2 = _objectWithoutPropertiesLoose(e2, t2);
      if (Object.getOwnPropertySymbols) {
        var s5 = Object.getOwnPropertySymbols(e2);
        for (r2 = 0; r2 < s5.length; r2++) o = s5[r2], t2.includes(o) || {}.propertyIsEnumerable.call(e2, o) && (i2[o] = e2[o]);
      }
      return i2;
    }
    function _objectWithoutPropertiesLoose(r2, e2) {
      if (null == r2) return {};
      var t2 = {};
      for (var n in r2) if ({}.hasOwnProperty.call(r2, n)) {
        if (e2.includes(n)) continue;
        t2[n] = r2[n];
      }
      return t2;
    }
    function ownKeys(e2, r2) {
      var t2 = Object.keys(e2);
      if (Object.getOwnPropertySymbols) {
        var o = Object.getOwnPropertySymbols(e2);
        r2 && (o = o.filter(function(r3) {
          return Object.getOwnPropertyDescriptor(e2, r3).enumerable;
        })), t2.push.apply(t2, o);
      }
      return t2;
    }
    function _objectSpread(e2) {
      for (var r2 = 1; r2 < arguments.length; r2++) {
        var t2 = null != arguments[r2] ? arguments[r2] : {};
        r2 % 2 ? ownKeys(Object(t2), true).forEach(function(r3) {
          _defineProperty(e2, r3, t2[r3]);
        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t2)) : ownKeys(Object(t2)).forEach(function(r3) {
          Object.defineProperty(e2, r3, Object.getOwnPropertyDescriptor(t2, r3));
        });
      }
      return e2;
    }
    function _defineProperty(e2, r2, t2) {
      return (r2 = _toPropertyKey(r2)) in e2 ? Object.defineProperty(e2, r2, { value: t2, enumerable: true, configurable: true, writable: true }) : e2[r2] = t2, e2;
    }
    function _toPropertyKey(t2) {
      var i2 = _toPrimitive(t2, "string");
      return "symbol" == typeof i2 ? i2 : i2 + "";
    }
    function _toPrimitive(t2, r2) {
      if ("object" != typeof t2 || !t2) return t2;
      var e2 = t2[Symbol.toPrimitive];
      if (void 0 !== e2) {
        var i2 = e2.call(t2, r2 || "default");
        if ("object" != typeof i2) return i2;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return ("string" === r2 ? String : Number)(t2);
    }
    function _parse(input3, spec) {
      const registry = {};
      for (const entry of input3) {
        registry[entry.label] = entry;
      }
      return input3.map(({
        type: type2,
        label,
        properties
      }) => spec.convertToTarget(_objectSpread({
        [_shared.TYPE]: type2,
        [_shared.LABEL]: label
      }, (0, _crossref.crossref)(type2, properties, registry))));
    }
    function _format(input3, spec) {
      return input3.map((entry) => {
        const _spec$convertToSource = spec.convertToSource(entry), {
          [_shared.TYPE]: type2,
          [_shared.LABEL]: label
        } = _spec$convertToSource, properties = _objectWithoutProperties(_spec$convertToSource, [_shared.TYPE, _shared.LABEL].map(_toPropertyKey));
        return {
          type: type2,
          label,
          properties
        };
      });
    }
    function parseBibtex(input3) {
      return _parse(input3, _bibtex.default);
    }
    function formatBibtex(input3) {
      return _format(input3, _bibtex.default);
    }
    function parse16(input3) {
      return _parse(input3, _biblatex.default);
    }
    function format(input3) {
      return _format(input3, _biblatex.default);
    }
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/input/name.js
var require_name = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/input/name.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.formatNameParts = formatNameParts;
    exports2.getStringCase = getStringCase;
    exports2.orderNameParts = orderNameParts;
    exports2.orderNamePieces = orderNamePieces;
    function getStringCase(string2) {
      const a2 = string2.toUpperCase();
      const b = string2.toLowerCase();
      for (let i2 = 0; i2 < string2.length; i2++) {
        if (a2[i2] !== b[i2]) {
          return a2[i2] === string2[i2];
        }
      }
      return null;
    }
    function formatNameParts(parts) {
      if (parts.length === 0) {
        return void 0;
      }
      let piece = "";
      while (parts.length > 1) {
        const {
          value,
          hyphenated
        } = parts.shift();
        piece += value + (hyphenated ? "-" : " ");
      }
      const output2 = piece + parts[0].value;
      return output2[0] && output2;
    }
    function orderNameParts(parts, orderGiven = true) {
      const given = [];
      const undecided = [];
      if (orderGiven) {
        while (parts.length > 1 && parts[0].upperCase !== false) {
          given.push(...undecided);
          undecided.length = 0;
          while (parts.length > 1 && parts[0].upperCase !== false && !parts[0].hyphenated) {
            given.push(parts.shift());
          }
          while (parts.length > 0 && parts[0].upperCase !== false && parts[0].hyphenated) {
            undecided.push(parts.shift());
          }
        }
      }
      const prefix2 = [];
      const family = [];
      while (parts.length > 1) {
        prefix2.push(...family);
        family.length = 0;
        while (parts.length > 1 && parts[0].upperCase === false) {
          prefix2.push(parts.shift());
        }
        while (parts.length > 0 && parts[0].upperCase !== false) {
          family.push(parts.shift());
        }
      }
      if (undecided.length) {
        family.unshift(...undecided);
      }
      if (parts.length) {
        family.push(parts[0]);
      }
      return [formatNameParts(given), formatNameParts(prefix2), formatNameParts(family)];
    }
    function orderNamePieces(pieces) {
      if (pieces[0][0].label) {
        const name4 = {};
        for (const [{
          value,
          label
        }] of pieces) {
          name4[label] = value;
        }
        return name4;
      }
      const name3 = {};
      const [given, prefix2, family] = orderNameParts(pieces[0], pieces.length === 1);
      if (family) {
        name3.family = family;
      }
      if (prefix2) {
        name3.prefix = prefix2;
      }
      if (pieces.length === 3) {
        name3.given = formatNameParts(pieces[2]);
        name3.suffix = formatNameParts(pieces[1]);
      } else if (pieces.length === 2) {
        name3.given = formatNameParts(pieces[1]);
      } else if (given) {
        name3.given = given;
      }
      return name3;
    }
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/input/value.js
var require_value = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/input/value.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.parse = parse16;
    exports2.parseAnnotation = parseAnnotation;
    exports2.valueGrammar = void 0;
    var _core3 = require_lib6();
    var _moo = _interopRequireDefault3(require_moo());
    var _config2 = _interopRequireDefault3(require_config3());
    var constants2 = _interopRequireWildcard(require_constants2());
    var _name2 = require_name();
    function _getRequireWildcardCache(e2) {
      if ("function" != typeof WeakMap) return null;
      var r2 = /* @__PURE__ */ new WeakMap(), t2 = /* @__PURE__ */ new WeakMap();
      return (_getRequireWildcardCache = function(e3) {
        return e3 ? t2 : r2;
      })(e2);
    }
    function _interopRequireWildcard(e2, r2) {
      if (!r2 && e2 && e2.__esModule) return e2;
      if (null === e2 || "object" != typeof e2 && "function" != typeof e2) return { default: e2 };
      var t2 = _getRequireWildcardCache(r2);
      if (t2 && t2.has(e2)) return t2.get(e2);
      var n = { __proto__: null }, a2 = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var u3 in e2) if ("default" !== u3 && {}.hasOwnProperty.call(e2, u3)) {
        var i2 = a2 ? Object.getOwnPropertyDescriptor(e2, u3) : null;
        i2 && (i2.get || i2.set) ? Object.defineProperty(n, u3, i2) : n[u3] = e2[u3];
      }
      return n.default = e2, t2 && t2.set(e2, n), n;
    }
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    function ownKeys(e2, r2) {
      var t2 = Object.keys(e2);
      if (Object.getOwnPropertySymbols) {
        var o = Object.getOwnPropertySymbols(e2);
        r2 && (o = o.filter(function(r3) {
          return Object.getOwnPropertyDescriptor(e2, r3).enumerable;
        })), t2.push.apply(t2, o);
      }
      return t2;
    }
    function _objectSpread(e2) {
      for (var r2 = 1; r2 < arguments.length; r2++) {
        var t2 = null != arguments[r2] ? arguments[r2] : {};
        r2 % 2 ? ownKeys(Object(t2), true).forEach(function(r3) {
          _defineProperty(e2, r3, t2[r3]);
        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t2)) : ownKeys(Object(t2)).forEach(function(r3) {
          Object.defineProperty(e2, r3, Object.getOwnPropertyDescriptor(t2, r3));
        });
      }
      return e2;
    }
    function _defineProperty(e2, r2, t2) {
      return (r2 = _toPropertyKey(r2)) in e2 ? Object.defineProperty(e2, r2, { value: t2, enumerable: true, configurable: true, writable: true }) : e2[r2] = t2, e2;
    }
    function _toPropertyKey(t2) {
      var i2 = _toPrimitive(t2, "string");
      return "symbol" == typeof i2 ? i2 : i2 + "";
    }
    function _toPrimitive(t2, r2) {
      if ("object" != typeof t2 || !t2) return t2;
      var e2 = t2[Symbol.toPrimitive];
      if (void 0 !== e2) {
        var i2 = e2.call(t2, r2 || "default");
        if ("object" != typeof i2) return i2;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return ("string" === r2 ? String : Number)(t2);
    }
    var text7 = {
      commandBegin: {
        match: "\\begin",
        push: "environment"
      },
      command: {
        match: /\\(?:[a-zA-Z]+|.) */,
        value: (s5) => s5.slice(1).trim()
      },
      lbrace: {
        match: "{",
        push: "bracedLiteral"
      },
      mathShift: {
        match: "$",
        push: "mathLiteral"
      },
      whitespace: {
        match: /[\s]+|~/,
        lineBreaks: true,
        value(token) {
          return token === "~" ? "\xA0" : " ";
        }
      }
    };
    var lexer = _moo.default.states({
      stringLiteral: _objectSpread(_objectSpread({}, text7), {}, {
        text: /[^{$}\s~\\]+/
      }),
      namesLiteral: _objectSpread(_objectSpread({
        and: /\s+[aA][nN][dD]\s+/,
        comma: ",",
        hyphen: "-",
        equals: "="
      }, text7), {}, {
        text: /[^{$}\s~\\,=-]+/
      }),
      listLiteral: _objectSpread(_objectSpread({
        and: /\s+and\s+/
      }, text7), {}, {
        text: /[^{$}\s~\\]+/
      }),
      separatedLiteral: _objectSpread(_objectSpread({
        comma: ","
      }, text7), {}, {
        text: /[^{$}\s~\\,]+/
      }),
      annotation: _objectSpread(_objectSpread({}, text7), {}, {
        colon: ":",
        equals: "=",
        comma: ",",
        semicolon: ";",
        quote: '"',
        itemCount: /\d+/,
        text: /[^{$}\s~\\":;,=]+/
      }),
      bracedLiteral: _objectSpread(_objectSpread({}, text7), {}, {
        rbrace: {
          match: "}",
          pop: true
        },
        text: /[^{$}\s~\\]+/
      }),
      mathLiteral: _objectSpread(_objectSpread({}, text7), {}, {
        mathShift: {
          match: "$",
          pop: true
        },
        script: /[\^_]/,
        text: /[^{$}\s~\\^_]+/
      }),
      environment: _objectSpread(_objectSpread({
        commandEnd: {
          match: "\\end",
          pop: true
        }
      }, text7), {}, {
        text: /[^{$}\s~\\]+/
      })
    });
    function flattenConsString(string2) {
      string2[0];
      return string2;
    }
    function applyFormatting(text8, format) {
      if (format in constants2.formatting) {
        return text8 && constants2.formatting[format].join(text8);
      } else {
        return text8;
      }
    }
    var valueGrammar = exports2.valueGrammar = new _core3.util.Grammar({
      String() {
        let output2 = "";
        while (!this.matchEndOfFile()) {
          output2 += this.consumeRule("Text");
        }
        return flattenConsString(output2);
      },
      StringNames() {
        const list6 = [];
        while (true) {
          this.consumeToken("whitespace", true);
          list6.push(this.consumeRule("Name"));
          this.consumeToken("whitespace", true);
          if (this.matchEndOfFile()) {
            return list6;
          } else {
            this.consumeToken("and");
          }
        }
      },
      Name() {
        const pieces = [];
        while (true) {
          pieces.push(this.consumeRule("NamePiece"));
          if (this.matchEndOfFile() || this.matchToken("and")) {
            return (0, _name2.orderNamePieces)(pieces);
          } else {
            this.consumeToken("comma");
            this.consumeToken("whitespace", true);
          }
        }
      },
      NamePiece() {
        const parts = [];
        while (true) {
          const part = this.consumeRule("NameToken");
          if (part.label) {
            part.label = (0, _name2.formatNameParts)([...parts, {
              value: part.label
            }]);
            return [part];
          }
          parts.push(part);
          if (this.matchEndOfFile() || this.matchToken("and") || this.matchToken("comma")) {
            return parts;
          } else {
            while (this.matchToken("hyphen") || this.matchToken("whitespace")) {
              this.consumeToken();
            }
          }
        }
      },
      NameToken() {
        let upperCase = null;
        let value = "";
        while (true) {
          if (upperCase === null && this.matchToken("text")) {
            const text8 = this.consumeToken().value;
            value += text8;
            upperCase = (0, _name2.getStringCase)(text8);
          } else if (this.matchEndOfFile() || this.matchToken("and") || this.matchToken("comma") || this.matchToken("whitespace")) {
            return {
              value,
              upperCase
            };
          } else if (this.matchToken("hyphen")) {
            return {
              value,
              upperCase,
              hyphenated: true
            };
          } else if (this.matchToken("equals")) {
            this.consumeToken("equals");
            const text8 = this.consumeRule("NamePiece");
            if (text8[0].label) {
              value += "=" + text8[0].label;
            }
            return {
              value: (0, _name2.formatNameParts)(text8),
              label: value
            };
          } else {
            value += this.consumeRule("Text");
          }
        }
      },
      StringList() {
        const list6 = [];
        while (!this.matchEndOfFile()) {
          let output2 = "";
          while (!this.matchEndOfFile() && !this.matchToken("and")) {
            output2 += this.consumeRule("Text");
          }
          list6.push(flattenConsString(output2));
          this.consumeToken("and", true);
        }
        return list6.length === 1 ? list6[0] : list6;
      },
      StringSeparated() {
        const list6 = [];
        while (!this.matchEndOfFile()) {
          let output2 = "";
          while (!this.matchEndOfFile() && !this.matchToken("comma")) {
            output2 += this.consumeRule("Text");
          }
          list6.push(output2.trim());
          this.consumeToken("comma", true);
          this.consumeToken("whitespace", true);
        }
        return list6;
      },
      StringVerbatim() {
        let output2 = "";
        while (!this.matchEndOfFile()) {
          output2 += this.consumeToken().text;
        }
        return flattenConsString(output2);
      },
      StringUri() {
        const uri = this.consumeRule("StringVerbatim");
        try {
          if (decodeURI(uri) === uri) {
            return encodeURI(uri);
          } else {
            return uri;
          }
        } catch (e2) {
          return encodeURI(uri);
        }
      },
      StringTitleCase() {
        this.state.sentenceCase = true;
        let output2 = "";
        while (!this.matchEndOfFile()) {
          output2 += this.consumeRule("Text");
        }
        return flattenConsString(output2);
      },
      Annotations() {
        const annotations = {};
        while (true) {
          const {
            scope: scope2,
            item,
            part,
            value
          } = this.consumeRule("Annotation");
          if (scope2 === "part") {
            if (!annotations.part) {
              annotations.part = [];
            }
            if (!annotations.part[item]) {
              annotations.part[item] = {};
            }
            annotations.part[item][part] = value;
          } else if (scope2 === "item") {
            if (!annotations.item) {
              annotations.item = [];
            }
            annotations.item[item] = value;
          } else {
            annotations.field = value;
          }
          if (this.matchEndOfFile()) {
            break;
          } else {
            this.consumeToken("semicolon");
            this.consumeRule("_");
          }
        }
        return annotations;
      },
      Annotation() {
        const annotation = {};
        if (this.matchToken("itemCount")) {
          annotation.item = parseInt(this.consumeToken("itemCount")) - 1;
          if (this.matchToken("colon")) {
            this.consumeToken("colon");
            annotation.part = this.consumeToken("text");
            annotation.scope = "part";
          } else {
            annotation.scope = "item";
          }
        } else {
          annotation.scope = "field";
        }
        this.consumeToken("equals");
        this.consumeRule("_");
        if (this.matchToken("quote")) {
          this.consumeToken("quote");
          let literal = "";
          while (!this.matchToken("quote")) {
            if (this.matchToken("itemCount") || this.matchToken("colon") || this.matchToken("comma") || this.matchToken("semicolon") || this.matchToken("equals")) {
              literal += this.token.value;
              this.token = this.lexer.next();
            } else {
              literal += this.consumeRule("Text");
            }
          }
          this.consumeToken("quote");
          annotation.value = flattenConsString(literal);
          this.consumeRule("_");
        } else {
          annotation.value = [];
          let output2 = "";
          while (true) {
            output2 += this.consumeRule("Text");
            if (this.matchToken("comma")) {
              this.consumeToken("comma");
              this.consumeRule("_");
              annotation.value.push(flattenConsString(output2));
              output2 = "";
            } else if (this.matchEndOfFile() || this.matchToken("semicolon")) {
              annotation.value.push(flattenConsString(output2));
              break;
            }
          }
        }
        return annotation;
      },
      BracketString() {
        var _this$state;
        let output2 = "";
        this.consumeToken("lbrace");
        const sentenceCase = this.state.sentenceCase;
        this.state.sentenceCase = sentenceCase && this.matchToken("command");
        (_this$state = this.state).partlyLowercase && (_this$state.partlyLowercase = this.state.sentenceCase);
        while (!this.matchToken("rbrace")) {
          output2 += this.consumeRule("Text");
        }
        const topLevel = sentenceCase && !this.state.sentenceCase;
        const protectCase = topLevel && this.state.partlyLowercase;
        this.state.sentenceCase = sentenceCase;
        this.consumeToken("rbrace");
        return protectCase ? applyFormatting(output2, "nocase") : output2;
      },
      MathString() {
        let output2 = "";
        this.consumeToken("mathShift");
        while (!this.matchToken("mathShift")) {
          if (this.matchToken("script")) {
            const script = this.consumeToken("script").value;
            const text8 = this.consumeRule("Text").split("");
            if (text8.every((char) => char in constants2.mathScripts[script])) {
              output2 += text8.map((char) => constants2.mathScripts[script][char]).join("");
            } else {
              const formatName2 = constants2.mathScriptFormatting[script];
              output2 += constants2.formatting[formatName2].join(text8.join(""));
            }
            continue;
          }
          if (this.matchToken("command")) {
            const command = this.token.value;
            if (command in constants2.mathScriptFormatting) {
              this.consumeToken("command");
              const text8 = this.consumeRule("BracketString");
              output2 += applyFormatting(text8, constants2.mathScriptFormatting[command]);
              continue;
            }
          }
          output2 += this.consumeRule("Text");
        }
        this.consumeToken("mathShift");
        return output2;
      },
      Text() {
        if (this.matchToken("lbrace")) {
          return this.consumeRule("BracketString");
        } else if (this.matchToken("mathShift")) {
          return this.consumeRule("MathString");
        } else if (this.matchToken("whitespace")) {
          return this.consumeToken("whitespace").value;
        } else if (this.matchToken("commandBegin")) {
          return this.consumeRule("EnclosedEnv");
        } else if (this.matchToken("command")) {
          return this.consumeRule("Command");
        }
        const text8 = this.consumeToken("text").value.replace(constants2.ligaturePattern, (ligature) => constants2.ligatures[ligature]);
        const afterPunctuation = this.state.afterPunctuation;
        this.state.afterPunctuation = /[?!.:]$/.test(text8);
        if (!this.state.sentenceCase) {
          var _this$state2;
          (_this$state2 = this.state).partlyLowercase || (_this$state2.partlyLowercase = text8 === text8.toLowerCase() && text8 !== text8.toUpperCase());
          return text8;
        }
        const [first2, ...otherCharacters] = text8;
        const rest = otherCharacters.join("");
        const restLowerCase = rest.toLowerCase();
        if (rest !== restLowerCase) {
          return text8;
        }
        if (!afterPunctuation) {
          return text8.toLowerCase();
        }
        return first2 + restLowerCase;
      },
      Command() {
        const commandToken = this.consumeToken("command");
        const command = commandToken.value;
        if (command in constants2.formattingEnvs) {
          const text8 = this.consumeRule("Env");
          const format = constants2.formattingEnvs[command];
          return applyFormatting(text8, format);
        } else if (command in constants2.formattingCommands) {
          const text8 = this.consumeRule("BracketString");
          const format = constants2.formattingCommands[command];
          return applyFormatting(text8, format);
        } else if (command in constants2.commands) {
          return constants2.commands[command];
        } else if (command in constants2.mathCommands) {
          return constants2.mathCommands[command];
        } else if (command in constants2.diacritics && !this.matchEndOfFile()) {
          const text8 = this.consumeRule("Text");
          const diacritic = text8[0] + constants2.diacritics[command];
          return diacritic.normalize("NFC") + text8.slice(1);
        } else if (command in constants2.argumentCommands) {
          const func = constants2.argumentCommands[command];
          const args = [];
          let arity = func.length;
          while (arity-- > 0) {
            this.consumeToken("whitespace", true);
            args.push(this.consumeRule("BracketString"));
          }
          return func(...args);
        } else if (/^[&%$#_{}]$/.test(command)) {
          return commandToken.text.slice(1);
        } else {
          return commandToken.text;
        }
      },
      Env() {
        let output2 = "";
        while (!this.matchEndOfFile() && !this.matchToken("rbrace")) {
          output2 += this.consumeRule("Text");
        }
        return output2;
      },
      EnclosedEnv() {
        this.consumeToken("commandBegin");
        const beginEnv = this.consumeRule("BracketString");
        let output2 = "";
        while (!this.matchToken("commandEnd")) {
          output2 += this.consumeRule("Text");
        }
        const end = this.consumeToken("commandEnd");
        const endEnv = this.consumeRule("BracketString");
        if (beginEnv !== endEnv) {
          throw new SyntaxError(this.lexer.formatError(end, `environment started with "${beginEnv}", ended with "${endEnv}"`));
        }
        return applyFormatting(output2, constants2.formattingEnvs[beginEnv]);
      },
      _() {
        while (this.matchToken("whitespace")) {
          this.consumeToken("whitespace");
        }
      }
    }, {
      sentenceCase: false,
      partlyLowercase: false,
      afterPunctuation: true
    });
    function singleLanguageIsEnglish(language) {
      return constants2.sentenceCaseLanguages.includes(language.toLowerCase());
    }
    function isEnglish(languages) {
      if (Array.isArray(languages)) {
        return languages.every(singleLanguageIsEnglish);
      }
      return singleLanguageIsEnglish(languages);
    }
    function getMainRule(fieldType, languages) {
      if (fieldType[1] === "name") {
        return fieldType[0] === "list" ? "StringNames" : "Name";
      }
      if (fieldType[1] === "title") {
        const option3 = _config2.default.parse.sentenceCase;
        if (option3 === "always" || option3 === "english" && isEnglish(languages)) {
          return "StringTitleCase";
        } else {
          return "String";
        }
      }
      switch (fieldType[0] === "field" ? fieldType[1] : fieldType[0]) {
        case "list":
          return "StringList";
        case "separated":
          return "StringSeparated";
        case "verbatim":
          return "StringVerbatim";
        case "uri":
          return "StringUri";
        case "title":
        case "literal":
        default:
          return "String";
      }
    }
    function getLexerState(fieldType) {
      if (fieldType[1] === "name") {
        return "namesLiteral";
      }
      switch (fieldType[0]) {
        case "list":
          return "listLiteral";
        case "separated":
          return "separatedLiteral";
        case "field":
        default:
          return "stringLiteral";
      }
    }
    function parse16(text8, field, languages = []) {
      const fieldType = constants2.fieldTypes[field] || [];
      return valueGrammar.parse(lexer.reset(text8, {
        state: getLexerState(fieldType),
        line: 0,
        col: 0
      }), getMainRule(fieldType, languages));
    }
    function parseAnnotation(text8) {
      return valueGrammar.parse(lexer.reset(text8, {
        state: "annotation",
        line: 0,
        col: 0
      }), "Annotations");
    }
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/input/entries.js
var require_entries = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/input/entries.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.parse = parse16;
    exports2.parseBibtex = parseBibtex;
    var _config2 = _interopRequireDefault3(require_config3());
    var _index4 = require_mapping();
    var _value = require_value();
    var _constants = require_constants2();
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    function ownKeys(e2, r2) {
      var t2 = Object.keys(e2);
      if (Object.getOwnPropertySymbols) {
        var o = Object.getOwnPropertySymbols(e2);
        r2 && (o = o.filter(function(r3) {
          return Object.getOwnPropertyDescriptor(e2, r3).enumerable;
        })), t2.push.apply(t2, o);
      }
      return t2;
    }
    function _objectSpread(e2) {
      for (var r2 = 1; r2 < arguments.length; r2++) {
        var t2 = null != arguments[r2] ? arguments[r2] : {};
        r2 % 2 ? ownKeys(Object(t2), true).forEach(function(r3) {
          _defineProperty(e2, r3, t2[r3]);
        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t2)) : ownKeys(Object(t2)).forEach(function(r3) {
          Object.defineProperty(e2, r3, Object.getOwnPropertyDescriptor(t2, r3));
        });
      }
      return e2;
    }
    function _defineProperty(e2, r2, t2) {
      return (r2 = _toPropertyKey(r2)) in e2 ? Object.defineProperty(e2, r2, { value: t2, enumerable: true, configurable: true, writable: true }) : e2[r2] = t2, e2;
    }
    function _toPropertyKey(t2) {
      var i2 = _toPrimitive(t2, "string");
      return "symbol" == typeof i2 ? i2 : i2 + "";
    }
    function _toPrimitive(t2, r2) {
      if ("object" != typeof t2 || !t2) return t2;
      var e2 = t2[Symbol.toPrimitive];
      if (void 0 !== e2) {
        var i2 = e2.call(t2, r2 || "default");
        if ("object" != typeof i2) return i2;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return ("string" === r2 ? String : Number)(t2);
    }
    function validate5(entries2, requirements) {
      const problems = [];
      for (const {
        type: type2,
        label,
        properties
      } of entries2) {
        if (type2 in requirements) {
          const missing = [];
          for (const field of requirements[type2]) {
            if (Array.isArray(field) && !field.some((field2) => field2 in properties)) {
              missing.push(field.join("/"));
            } else if (typeof field === "string" && !(field in properties)) {
              missing.push(field);
            }
          }
          if (missing.length) {
            problems.push([label, `missing fields: ${missing.join(", ")}`]);
          }
        } else {
          problems.push([label, `invalid type: "${type2}"`]);
        }
      }
      if (problems.length) {
        throw new RangeError(["Invalid entries:"].concat(problems.map(([label, problem]) => `  - ${label} has ${problem}`)).join("\n"));
      }
    }
    function parseEntryValues(entry) {
      const output2 = {};
      if ("language" in entry.properties) {
        output2.language = (0, _value.parse)(entry.properties.language, "language");
      }
      for (const property in entry.properties) {
        const value = entry.properties[property];
        if (value === "") {
          continue;
        }
        output2[property] = (0, _value.parse)(value + "", property, output2.language);
      }
      for (const property in entry.annotations) {
        for (const annotation in entry.annotations[property]) {
          output2[property + "+an:" + annotation] = (0, _value.parseAnnotation)(entry.annotations[property][annotation]);
        }
      }
      return _objectSpread(_objectSpread({}, entry), {}, {
        properties: output2
      });
    }
    function parse16(entries2) {
      if (_config2.default.parse.strict) {
        validate5(entries2, _constants.required.biblatex);
      }
      return (0, _index4.parse)(entries2.map(parseEntryValues));
    }
    function parseBibtex(entries2) {
      if (_config2.default.parse.strict) {
        validate5(entries2, _constants.required.bibtex);
      }
      return (0, _index4.parseBibtex)(entries2.map(parseEntryValues));
    }
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/input/index.js
var require_input6 = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/input/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.ref = exports2.formats = void 0;
    var _file = require_file();
    var _bibtxt = require_bibtxt();
    var _entries = require_entries();
    var ref = exports2.ref = "@bibtex";
    var formats = exports2.formats = {
      "@biblatex/text": {
        parse: _file.parse,
        parseType: {
          dataType: "String",
          predicate: /@\s{0,5}[A-Za-z]{1,13}\s{0,5}\{\s{0,5}[^@{}"=,\\\s]{0,100}\s{0,5},[\s\S]*\}/
        }
      },
      "@biblatex/entry+object": {
        parse(input3) {
          return (0, _entries.parse)([input3]);
        },
        parseType: {
          dataType: "SimpleObject",
          propertyConstraint: {
            props: ["type", "label", "properties"]
          }
        }
      },
      "@biblatex/entries+list": {
        parse: _entries.parse,
        parseType: {
          elementConstraint: "@biblatex/entry+object"
        }
      },
      "@bibtex/text": {
        parse: _file.parse,
        outputs: "@bibtex/entries+list"
      },
      "@bibtex/entry+object": {
        parse(input3) {
          return (0, _entries.parseBibtex)([input3]);
        }
      },
      "@bibtex/entries+list": {
        parse: _entries.parseBibtex
      },
      "@bibtxt/text": {
        parse: _bibtxt.parse,
        parseType: {
          dataType: "String",
          predicate: /^\s*(\[(?!\s*[{[]).*?\]\s*(\n\s*[^[]((?!:)\S)+\s*:\s*.+?\s*)*\s*)+$/
        }
      }
    };
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/output/value.js
var require_value2 = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/output/value.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.format = format;
    exports2.formatAnnotation = formatAnnotation;
    var _config2 = _interopRequireDefault3(require_config3());
    var _constants = require_constants2();
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    var unicode = {};
    for (const command in _constants.commands) {
      unicode[_constants.commands[command]] = command;
    }
    for (const diacritic in _constants.diacritics) {
      unicode[_constants.diacritics[diacritic]] = diacritic;
    }
    for (const ligature in _constants.ligatures) {
      unicode[_constants.ligatures[ligature]] = ligature;
    }
    var mathUnicode = {};
    for (const command in _constants.mathCommands) {
      mathUnicode[_constants.mathCommands[command]] = command;
    }
    var UNSAFE_UNICODE = /[^a-zA-Z0-9\s!"'()*+,\-./:;=?@[\]\u0300-\u0308\u030a-\u030c\u0332\u0323\u0327\u0328\u0361\u0326]/g;
    var DIACRITIC_PATTERN = /.[\u0300-\u0308\u030a-\u030c\u0332\u0323\u0327\u0328\u0361\u0326]+/g;
    var LONE_DIACRITIC_PATTERN = /[\u0300-\u0308\u030a-\u030c\u0332\u0323\u0327\u0328\u0361\u0326]/g;
    var listDelimiters = {
      separated: ",",
      list: " and "
    };
    var richTextMappings = {
      i: "\\textit{",
      b: "\\textbf{",
      sc: "\\textsc{",
      sup: "\\textsuperscript{",
      sub: "\\textsubscript{",
      'span style="font-variant:small-caps;"': "\\textsc{",
      'span class="nocase"': "{"
    };
    function escapeCharacter(char) {
      if (char in unicode) {
        return unicode[char] in _constants.ligatures ? unicode[char] : `\\${unicode[char]}{}`;
      } else if (char in mathUnicode) {
        return `$\\${mathUnicode[char]}$`;
      } else if (/^[&%$#_{}]$/.test(char)) {
        return `\\${char}`;
      } else {
        return "";
      }
    }
    function escapeValue(value) {
      if (!_config2.default.format.asciiOnly) {
        return value;
      }
      return value.normalize("NFKD").replace(UNSAFE_UNICODE, (char) => escapeCharacter(char)).replace(DIACRITIC_PATTERN, (match3) => Array.from(match3).reduce((subject, diacritic) => `{\\${unicode[diacritic]} ${subject}}`)).replace(LONE_DIACRITIC_PATTERN, "");
    }
    function formatRichText(value) {
      const closingTags = [];
      let tokens = value.split(/<(\/?(?:i|b|sc|sup|sub|span)|span .*?)>/g);
      tokens = tokens.map((token, index4) => {
        if (index4 % 2 === 0) {
          return escapeValue(token);
        } else if (token in richTextMappings) {
          closingTags.push("/" + token.split(" ")[0]);
          return richTextMappings[token];
        } else if (token === closingTags[closingTags.length - 1]) {
          closingTags.pop();
          return "}";
        } else {
          return "";
        }
      });
      return tokens.join("");
    }
    function formatName2(name3) {
      if (name3.family && !name3.prefix && !name3.given & !name3.suffix) {
        return name3.family.includes(listDelimiters.list) ? name3.family : `{${name3.family}}`;
      }
      const parts = [""];
      if (name3.prefix && name3.family) {
        parts[0] += name3.prefix + " ";
      }
      if (name3.family) {
        parts[0] += name3.family;
      }
      if (name3.suffix) {
        parts.push(name3.suffix);
        parts.push(name3.given || "");
      } else {
        parts.push(name3.given);
      }
      return escapeValue(parts.join(", ").trim());
    }
    function formatTitle2(title) {
      return formatRichText(title).split(/(:\s*)/).map((part, i2) => i2 % 2 ? part : part.replace(/([^\\])\b([a-z]*[A-Z].*?)\b/g, "$1{$2}")).join("");
    }
    function formatSingleValue(value, valueType) {
      switch (valueType) {
        case "title":
          return formatTitle2(value);
        case "literal":
          return formatRichText(value.toString());
        case "name":
          return formatName2(value);
        case "verbatim":
        case "uri":
          return value.toString();
        default:
          return escapeValue(value.toString());
      }
    }
    function formatList(values, valueType, listType) {
      const delimiter2 = listDelimiters[listType];
      return values.map((value) => {
        const formatted = formatSingleValue(value, valueType);
        return formatted.includes(delimiter2) ? `{${formatted}}` : formatted;
      }).join(delimiter2);
    }
    function formatAnnotationValue(values) {
      if (Array.isArray(values)) {
        return values.map((value) => escapeValue(value).replace(/([;,"])/g, "{$1}")).join(", ");
      } else {
        return '"' + escapeValue(values).replace(/(["])/g, "{$1}") + '"';
      }
    }
    function format(field, value) {
      if (!(field in _constants.fieldTypes)) {
        return formatSingleValue(value, "verbatim");
      }
      const [listType, valueType] = _constants.fieldTypes[field];
      if (listType in listDelimiters) {
        return formatList(value, valueType, listType);
      } else {
        return formatSingleValue(value, valueType);
      }
    }
    function formatAnnotation(value) {
      const annotations = [];
      if (value.field) {
        annotations.push("=" + formatAnnotationValue(value.field));
      }
      if (value.item) {
        for (const [itemCount, itemValue] of Object.entries(value.item)) {
          if (!itemValue) {
            continue;
          }
          const i2 = parseInt(itemCount) + 1;
          annotations.push(i2 + "=" + formatAnnotationValue(itemValue));
        }
      }
      if (value.part) {
        for (const [itemCount, itemValue] of Object.entries(value.part)) {
          if (!itemValue) {
            continue;
          }
          const i2 = parseInt(itemCount) + 1;
          for (const part in itemValue) {
            if (!itemValue[part]) {
              continue;
            }
            annotations.push(i2 + ":" + part + "=" + formatAnnotationValue(itemValue[part]));
          }
        }
      }
      return annotations.join("; ");
    }
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/output/entries.js
var require_entries2 = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/output/entries.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.format = format;
    exports2.formatBibtex = formatBibtex;
    var _index4 = require_mapping();
    var _value = require_value2();
    function formatEntryValues({
      type: type2,
      label,
      properties
    }) {
      const output2 = {
        type: type2,
        label,
        properties: {}
      };
      for (const property in properties) {
        const value = properties[property];
        const [field, annotation] = property.split("+an:");
        if (annotation) {
          if (!output2.annotations) {
            output2.annotations = {};
          }
          if (!output2.annotations[field]) {
            output2.annotations[field] = {};
          }
          output2.annotations[field][annotation] = (0, _value.formatAnnotation)(value);
        } else {
          output2.properties[property] = (0, _value.format)(property, value);
        }
      }
      return output2;
    }
    function format(entries2) {
      return (0, _index4.format)(entries2).map(formatEntryValues);
    }
    function formatBibtex(entries2) {
      return (0, _index4.formatBibtex)(entries2).map(formatEntryValues);
    }
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/output/bibtex.js
var require_bibtex2 = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/output/bibtex.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.format = format;
    var _config2 = _interopRequireDefault3(require_config3());
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    function formatField(field, value, dict) {
      return dict.listItem.join(`${field} = {${value}},`);
    }
    function formatEntry(entry, dict) {
      const fields = [];
      for (const field in entry.properties) {
        fields.push(formatField(field, entry.properties[field], dict));
        if (entry.annotations && entry.annotations[field]) {
          for (const annotation in entry.annotations[field]) {
            let annotationField = field + _config2.default.biber.annotationMarker;
            if (annotation !== "default") {
              annotationField += _config2.default.biber.namedAnnotationMarker + annotation;
            }
            fields.push(formatField(annotationField, entry.annotations[field][annotation], dict));
          }
        }
      }
      return dict.entry.join(`@${entry.type}{${entry.label},${dict.list.join(fields.join(""))}}`);
    }
    function format(src, dict) {
      const entries2 = src.map((entry) => formatEntry(entry, dict)).join("");
      return dict.bibliographyContainer.join(entries2);
    }
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/output/bibtxt.js
var require_bibtxt2 = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/output/bibtxt.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.format = format;
    function formatEntry({
      type: type2,
      label,
      properties
    }, dict) {
      const fields = Object.entries(properties).concat([["type", type2]]).map(([field, value]) => dict.listItem.join(`${field}: ${value}`));
      return dict.entry.join(`[${label}]${dict.list.join(fields.join(""))}`);
    }
    function format(src, dict) {
      const entries2 = src.map((entry) => formatEntry(entry, dict)).join("\n");
      return dict.bibliographyContainer.join(entries2);
    }
  }
});

// ../../node_modules/@citation-js/plugin-bibtex/lib/output/index.js
var require_output5 = __commonJS({
  "../../node_modules/@citation-js/plugin-bibtex/lib/output/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = void 0;
    var _core3 = require_lib6();
    var _entries = require_entries2();
    var _bibtex = require_bibtex2();
    var _bibtxt = require_bibtxt2();
    var factory = function(mapper, formatter) {
      return function(data, opts = {}) {
        const {
          type: type2,
          format = type2 || "text"
        } = opts;
        data = mapper(data);
        if (format === "object") {
          return data;
        } else if (_core3.plugins.dict.has(format)) {
          return formatter(data, _core3.plugins.dict.get(format), opts);
        } else {
          throw new RangeError(`Output dictionary "${format}" not available`);
        }
      };
    };
    var _default2 = exports2.default = {
      bibtex: factory(_entries.formatBibtex, _bibtex.format),
      biblatex: factory(_entries.format, _bibtex.format),
      bibtxt: factory(_entries.formatBibtex, _bibtxt.format)
    };
  }
});

// ../../node_modules/@citation-js/plugin-csl/lib/locales.json
var require_locales = __commonJS({
  "../../node_modules/@citation-js/plugin-csl/lib/locales.json"(exports2, module2) {
    module2.exports = {
      "en-US": '<?xml version="1.0" encoding="utf-8"?>\n<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="en-US"><info><translator><name>Andrew Dunning</name></translator><translator><name>Sebastian Karcher</name></translator><translator><name>Rintze M. Zelle</name></translator><translator><name>Denis Meier</name></translator><translator><name>Brenton M. Wiernik</name></translator><rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights><updated>2015-10-10T23:31:02+00:00</updated></info><style-options punctuation-in-quote="true"/><date form="text"><date-part name="month" suffix=" "/><date-part name="day" suffix=", "/><date-part name="year"/></date><date form="numeric"><date-part name="month" form="numeric-leading-zeros" suffix="/"/><date-part name="day" form="numeric-leading-zeros" suffix="/"/><date-part name="year"/></date><terms><term name="advance-online-publication">advance online publication</term><term name="album">album</term><term name="audio-recording">audio recording</term><term name="film">film</term><term name="henceforth">henceforth</term><term name="loc-cit">loc. cit.</term> <!-- like ibid., the abbreviated form is the regular form  --><term name="no-place">no place</term><term name="no-place" form="short">n.p.</term><term name="no-publisher">no publisher</term> <!-- sine nomine --><term name="no-publisher" form="short">n.p.</term><term name="on">on</term><term name="op-cit">op. cit.</term> <!-- like ibid., the abbreviated form is the regular form  --><term name="original-work-published">original work published</term><term name="personal-communication">personal communication</term><term name="podcast">podcast</term><term name="podcast-episode">podcast episode</term><term name="preprint">preprint</term><term name="radio-broadcast">radio broadcast</term><term name="radio-series">radio series</term><term name="radio-series-episode">radio series episode</term><term name="special-issue">special issue</term><term name="special-section">special section</term><term name="television-broadcast">television broadcast</term><term name="television-series">television series</term><term name="television-series-episode">television series episode</term><term name="video">video</term><term name="working-paper">working paper</term><term name="accessed">accessed</term><term name="and">and</term><term name="and others">and others</term><term name="anonymous">anonymous</term><term name="anonymous" form="short">anon.</term><term name="at">at</term><term name="available at">available at</term><term name="by">by</term><term name="circa">circa</term><term name="circa" form="short">c.</term><term name="cited">cited</term><term name="edition"><single>edition</single><multiple>editions</multiple></term><term name="edition" form="short">ed.</term><term name="et-al">et al.</term><term name="forthcoming">forthcoming</term><term name="from">from</term><term name="ibid">ibid.</term><term name="in">in</term><term name="in press">in press</term><term name="internet">internet</term><term name="interview">interview</term><term name="letter">letter</term><term name="no date">no date</term><term name="no date" form="short">n.d.</term><term name="online">online</term><term name="presented at">presented at the</term><term name="reference"><single>reference</single><multiple>references</multiple></term><term name="reference" form="short"><single>ref.</single><multiple>refs.</multiple></term><term name="retrieved">retrieved</term><term name="scale">scale</term><term name="version">version</term>\n<!-- LONG ITEM TYPE FORMS --><term name="article">preprint</term><term name="article-journal">journal article</term><term name="article-magazine">magazine article</term><term name="article-newspaper">newspaper article</term><term name="bill">bill</term><term name="book">book</term><term name="broadcast">broadcast</term><term name="chapter">book chapter</term><term name="classic">classic</term><term name="collection">collection</term><term name="dataset">dataset</term><term name="document">document</term><term name="entry">entry</term><term name="entry-dictionary">dictionary entry</term><term name="entry-encyclopedia">encyclopedia entry</term><term name="event">event</term><!-- figure is in the list of locator terms --><term name="graphic">graphic</term><term name="hearing">hearing</term><term name="interview">interview</term><term name="legal_case">legal case</term><term name="legislation">legislation</term><term name="manuscript">manuscript</term><term name="map">map</term><term name="motion_picture">video recording</term><term name="musical_score">musical score</term><term name="pamphlet">pamphlet</term><term name="paper-conference">conference paper</term><term name="patent">patent</term><term name="performance">performance</term><term name="periodical">periodical</term><term name="personal_communication">personal communication</term><term name="post">post</term><term name="post-weblog">blog post</term><term name="regulation">regulation</term><term name="report">report</term><term name="review">review</term><term name="review-book">book review</term><term name="software">software</term><term name="song">audio recording</term><term name="speech">presentation</term><term name="standard">standard</term><term name="thesis">thesis</term><term name="treaty">treaty</term><term name="webpage">webpage</term>\n<!-- SHORT ITEM TYPE FORMS --><term name="article-journal" form="short">journal art.</term><term name="article-magazine" form="short">mag. art.</term><term name="article-newspaper" form="short">newspaper art.</term><term name="book" form="short">bk.</term><term name="chapter" form="short">bk. chap.</term><term name="document" form="short">doc.</term><!-- figure is in the list of locator terms --><term name="graphic" form="short">graph.</term><term name="interview" form="short">interv.</term><term name="manuscript" form="short">MS</term><term name="motion_picture" form="short">video rec.</term><term name="report" form="short">rep.</term><term name="review" form="short">rev.</term><term name="review-book" form="short">bk. rev.</term><term name="song" form="short">audio rec.</term>\n<!-- HISTORICAL ERA TERMS --><term name="ad">AD</term><term name="bc">BC</term><term name="bce">BCE</term><term name="ce">CE</term>\n<!-- PUNCTUATION --><term name="open-quote">\u201C</term><term name="close-quote">\u201D</term><term name="open-inner-quote">\u2018</term><term name="close-inner-quote">\u2019</term><term name="page-range-delimiter">\u2013</term><term name="colon">:</term><term name="comma">,</term><term name="semicolon">;</term>\n<!-- ORDINALS --><term name="ordinal">th</term><term name="ordinal-01">st</term><term name="ordinal-02">nd</term><term name="ordinal-03">rd</term><term name="ordinal-11">th</term><term name="ordinal-12">th</term><term name="ordinal-13">th</term>\n<!-- LONG ORDINALS --><term name="long-ordinal-01">first</term><term name="long-ordinal-02">second</term><term name="long-ordinal-03">third</term><term name="long-ordinal-04">fourth</term><term name="long-ordinal-05">fifth</term><term name="long-ordinal-06">sixth</term><term name="long-ordinal-07">seventh</term><term name="long-ordinal-08">eighth</term><term name="long-ordinal-09">ninth</term><term name="long-ordinal-10">tenth</term>\n<!-- LONG LOCATOR FORMS --><term name="act">			 <single>act</single><multiple>acts</multiple>						 </term><term name="appendix">			 <single>appendix</single><multiple>appendices</multiple>						 </term><term name="article-locator">			 <single>article</single><multiple>articles</multiple>						 </term><term name="canon">			 <single>canon</single><multiple>canons</multiple>						 </term><term name="elocation">			 <single>location</single><multiple>locations</multiple>						 </term><term name="equation">			 <single>equation</single><multiple>equations</multiple>						 </term><term name="rule">			 <single>rule</single><multiple>rules</multiple>						 </term><term name="scene">			 <single>scene</single><multiple>scenes</multiple>						 </term><term name="table">			 <single>table</single><multiple>tables</multiple>						 </term><term name="timestamp"> <!-- generally blank --><single></single><multiple></multiple>						 </term><term name="title-locator">			 <single>title</single><multiple>titles</multiple>						 </term><term name="book"><single>book</single><multiple>books</multiple></term><term name="chapter"><single>chapter</single><multiple>chapters</multiple></term><term name="column"><single>column</single><multiple>columns</multiple></term><term name="figure"><single>figure</single><multiple>figures</multiple></term><term name="folio"><single>folio</single><multiple>folios</multiple></term><term name="issue"><single>number</single><multiple>numbers</multiple></term><term name="line"><single>line</single><multiple>lines</multiple></term><term name="note"><single>note</single><multiple>notes</multiple></term><term name="opus"><single>opus</single><multiple>opera</multiple></term><term name="page"><single>page</single><multiple>pages</multiple></term><term name="number-of-pages"><single>page</single><multiple>pages</multiple></term><term name="paragraph"><single>paragraph</single><multiple>paragraphs</multiple></term><term name="part"><single>part</single><multiple>parts</multiple></term><term name="section"><single>section</single><multiple>sections</multiple></term><term name="sub-verbo"><single>sub verbo</single><multiple>sub verbis</multiple></term><term name="verse"><single>verse</single><multiple>verses</multiple></term><term name="volume"><single>volume</single><multiple>volumes</multiple></term>\n<!-- SHORT LOCATOR FORMS --><term name="appendix" form="short">			 <single>app.</single><multiple>apps.</multiple>						 </term><term name="article-locator" form="short">			 <single>art.</single><multiple>arts.</multiple></term><term name="elocation" form="short">			 <single>loc.</single><multiple>locs.</multiple></term><term name="equation" form="short">			 <single>eq.</single><multiple>eqs.</multiple></term><term name="rule" form="short">			 <single>r.</single><multiple>rr.</multiple>						 </term><term name="scene" form="short">			 <single>sc.</single><multiple>scs.</multiple>						 </term><term name="table" form="short">			 <single>tbl.</single><multiple>tbls.</multiple>						 </term><term name="timestamp" form="short"> <!-- generally blank --><single></single><multiple></multiple>						 </term><term name="title-locator" form="short">			 <single>tit.</single><multiple>tits.</multiple></term><term name="book" form="short"><single>bk.</single><multiple>bks.</multiple></term><term name="chapter" form="short"><single>chap.</single><multiple>chaps.</multiple></term><term name="column" form="short"><single>col.</single><multiple>cols.</multiple></term><term name="figure" form="short"><single>fig.</single><multiple>figs.</multiple></term><term name="folio" form="short"><single>fol.</single><multiple>fols.</multiple></term><term name="issue" form="short"><single>no.</single><multiple>nos.</multiple></term><term name="line" form="short"><single>l.</single><multiple>ll.</multiple></term><term name="note" form="short"><single>n.</single><multiple>nn.</multiple></term><term name="opus" form="short"><single>op.</single><multiple>opp.</multiple></term><term name="page" form="short"><single>p.</single><multiple>pp.</multiple></term><term name="number-of-pages" form="short"><single>p.</single><multiple>pp.</multiple></term><term name="paragraph" form="short"><single>para.</single><multiple>paras.</multiple></term><term name="part" form="short"><single>pt.</single><multiple>pts.</multiple></term><term name="section" form="short"><single>sec.</single><multiple>secs.</multiple></term><term name="sub-verbo" form="short"><single>s.v.</single><multiple>s.vv.</multiple></term><term name="verse" form="short"><single>v.</single><multiple>vv.</multiple></term><term name="volume" form="short"><single>vol.</single><multiple>vols.</multiple></term>\n<!-- SYMBOL LOCATOR FORMS --><term name="paragraph" form="symbol"><single>\xB6</single><multiple>\xB6\xB6</multiple></term><term name="section" form="symbol"><single>\xA7</single><multiple>\xA7\xA7</multiple></term>\n<!-- LONG ROLE FORMS --><term name="chair"><single>chair</single><multiple>chairs</multiple></term><term name="compiler"><single>compiler</single><multiple>compilers</multiple></term><term name="contributor"><single>contributor</single><multiple>contributors</multiple></term><term name="curator"><single>curator</single><multiple>curators</multiple></term><term name="executive-producer"><single>executive producer</single><multiple>executive producers</multiple></term><term name="guest"><single>guest</single><multiple>guests</multiple></term><term name="host"><single>host</single><multiple>hosts</multiple></term><term name="narrator"><single>narrator</single><multiple>narrators</multiple></term><term name="organizer"><single>organizer</single><multiple>organizers</multiple></term><term name="performer"><single>performer</single><multiple>performers</multiple></term><term name="producer"><single>producer</single><multiple>producers</multiple></term><term name="script-writer"><single>writer</single><multiple>writers</multiple></term><term name="series-creator"><single>series creator</single><multiple>series creators</multiple></term><term name="director"><single>director</single><multiple>directors</multiple></term><term name="editor"><single>editor</single><multiple>editors</multiple></term><term name="editorial-director"><single>editor</single><multiple>editors</multiple></term><term name="illustrator"><single>illustrator</single><multiple>illustrators</multiple></term><term name="translator"><single>translator</single><multiple>translators</multiple></term><term name="editortranslator"><single>editor &amp; translator</single><multiple>editors &amp; translators</multiple></term>\n<!-- SHORT ROLE FORMS --><term name="compiler" form="short"><single>comp.</single><multiple>comps.</multiple></term><term name="contributor" form="short"><single>contrib.</single><multiple>contribs.</multiple></term><term name="curator" form="short"><single>cur.</single><multiple>curs.</multiple></term><term name="executive-producer" form="short"><single>exec. prod.</single><multiple>exec. prods.</multiple></term><term name="narrator" form="short"><single>narr.</single><multiple>narrs.</multiple></term><term name="organizer" form="short"><single>org.</single><multiple>orgs.</multiple></term><term name="performer" form="short"><single>perf.</single><multiple>perfs.</multiple></term><term name="producer" form="short"><single>prod.</single><multiple>prods.</multiple></term><term name="script-writer" form="short"><single>writ.</single><multiple>writs.</multiple></term><term name="series-creator" form="short"><single>cre.</single><multiple>cres.</multiple></term><term name="director" form="short"><single>dir.</single><multiple>dirs.</multiple></term><term name="editor" form="short"><single>ed.</single><multiple>eds.</multiple></term><term name="editorial-director" form="short"><single>ed.</single><multiple>eds.</multiple></term><term name="illustrator" form="short"><single>ill.</single><multiple>ills.</multiple></term><term name="translator" form="short"><single>tran.</single><multiple>trans.</multiple></term><term name="editortranslator" form="short"><single>ed. &amp; tran.</single><multiple>eds. &amp; trans.</multiple></term>\n<!-- VERB ROLE FORMS --><term name="chair" form="verb">chaired by</term><term name="compiler" form="verb">compiled by</term><term name="contributor" form="verb">with</term><term name="curator" form="verb">curated by</term><term name="executive-producer" form="verb">executive produced by</term><term name="guest" form="verb">with guest</term><term name="host" form="verb">hosted by</term><term name="narrator" form="verb">narrated by</term><term name="organizer" form="verb">organized by</term><term name="performer" form="verb">performed by</term><term name="producer" form="verb">produced by</term><term name="script-writer" form="verb">written by</term><term name="series-creator" form="verb">created by</term><term name="container-author" form="verb">by</term><term name="director" form="verb">directed by</term><term name="editor" form="verb">edited by</term><term name="editorial-director" form="verb">edited by</term><term name="illustrator" form="verb">illustrated by</term><term name="interviewer" form="verb">interview by</term><term name="recipient" form="verb">to</term><term name="reviewed-author" form="verb">by</term><term name="translator" form="verb">translated by</term><term name="editortranslator" form="verb">edited &amp; translated by</term>\n<!-- SHORT VERB ROLE FORMS --><term name="compiler" form="verb-short">comp. by</term><term name="contributor" form="verb-short">w.</term><term name="curator" form="verb-short">cur. by</term><term name="executive-producer" form="verb-short">exec. prod. by</term><term name="guest" form="verb-short">w. guest</term><term name="host" form="verb-short">hosted by</term><term name="narrator" form="verb-short">narr. by</term><term name="organizer" form="verb-short">org. by</term><term name="performer" form="verb-short">perf. by</term><term name="producer" form="verb-short">prod. by</term><term name="script-writer" form="verb-short">writ. by</term><term name="series-creator" form="verb-short">cre. by</term><term name="director" form="verb-short">dir. by</term><term name="editor" form="verb-short">ed. by</term><term name="editorial-director" form="verb-short">ed. by</term><term name="illustrator" form="verb-short">illus. by</term><term name="translator" form="verb-short">trans. by</term><term name="editortranslator" form="verb-short">ed. &amp; trans. by</term>\n<!-- LONG MONTH FORMS --><term name="month-01">January</term><term name="month-02">February</term><term name="month-03">March</term><term name="month-04">April</term><term name="month-05">May</term><term name="month-06">June</term><term name="month-07">July</term><term name="month-08">August</term><term name="month-09">September</term><term name="month-10">October</term><term name="month-11">November</term><term name="month-12">December</term>\n<!-- SHORT MONTH FORMS --><term name="month-01" form="short">Jan.</term><term name="month-02" form="short">Feb.</term><term name="month-03" form="short">Mar.</term><term name="month-04" form="short">Apr.</term><term name="month-05" form="short">May</term><term name="month-06" form="short">Jun.</term><term name="month-07" form="short">Jul.</term><term name="month-08" form="short">Aug.</term><term name="month-09" form="short">Sep.</term><term name="month-10" form="short">Oct.</term><term name="month-11" form="short">Nov.</term><term name="month-12" form="short">Dec.</term>\n<!-- SEASONS --><term name="season-01">Spring</term><term name="season-02">Summer</term><term name="season-03">Autumn</term><term name="season-04">Winter</term></terms>\n</locale>\n',
      "nl-NL": `<?xml version="1.0" encoding="utf-8"?>
<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="nl-NL"><info><translator><name>Rintze M. Zelle</name><uri>http://twitter.com/rintzezelle</uri></translator><rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights><updated>2017-04-01T12:00:00+00:00</updated></info><style-options punctuation-in-quote="false"/><date form="text"><date-part name="day" suffix=" "/><date-part name="month" suffix=" "/><date-part name="year"/></date><date form="numeric"><date-part name="day" suffix="-" range-delimiter="/"/><date-part name="month" form="numeric" suffix="-" range-delimiter="/"/><date-part name="year"/></date><terms><term name="advance-online-publication">advance online publication</term><term name="album">album</term><term name="audio-recording">audio recording</term><term name="film">film</term><term name="henceforth">henceforth</term><term name="loc-cit">loc. cit.</term> <!-- like ibid., the abbreviated form is the regular form  --><term name="no-place">no place</term><term name="no-place" form="short">n.p.</term><term name="no-publisher">no publisher</term> <!-- sine nomine --><term name="no-publisher" form="short">n.p.</term><term name="on">on</term><term name="op-cit">op. cit.</term> <!-- like ibid., the abbreviated form is the regular form  --><term name="original-work-published">original work published</term><term name="personal-communication">persoonlijke communicatie</term><term name="podcast">podcast</term><term name="podcast-episode">podcast episode</term><term name="preprint">preprint</term><term name="radio-broadcast">radio broadcast</term><term name="radio-series">radio series</term><term name="radio-series-episode">radio series episode</term><term name="special-issue">special issue</term><term name="special-section">special section</term><term name="television-broadcast">television broadcast</term><term name="television-series">television series</term><term name="television-series-episode">television series episode</term><term name="video">video</term><term name="working-paper">working paper</term><term name="accessed">geraadpleegd</term><term name="and">en</term><term name="and others">en anderen</term><term name="anonymous">anoniem</term><term name="anonymous" form="short">anon.</term><term name="at">bij</term><term name="available at">beschikbaar op</term><term name="by">door</term><term name="circa">circa</term><term name="circa" form="short">c.</term><term name="cited">geciteerd</term><term name="edition"><single>druk</single><multiple>drukken</multiple></term><term name="edition" form="short">dr.</term><term name="et-al">e.a.</term><term name="forthcoming">in voorbereiding</term><term name="from">van</term><term name="ibid">ibid.</term><term name="in">in</term><term name="in press">in druk</term><term name="internet">internet</term><term name="interview">interview</term><term name="letter">brief</term><term name="no date">zonder datum</term><term name="no date" form="short">z.d.</term><term name="online">online</term><term name="presented at">gepresenteerd bij</term><term name="reference"><single>referentie</single><multiple>referenties</multiple></term><term name="reference" form="short"><single>ref.</single><multiple>refs.</multiple></term><term name="retrieved">geraadpleegd</term><term name="scale">schaal</term><term name="version">versie</term>
<!-- LONG ITEM TYPE FORMS --><term name="article">preprint</term><term name="article-journal">journal article</term><term name="article-magazine">magazine article</term><term name="article-newspaper">newspaper article</term><term name="bill">bill</term><term name="book">book</term><term name="broadcast">broadcast</term><term name="chapter">book chapter</term><term name="classic">classic</term><term name="collection">collection</term><term name="dataset">dataset</term><term name="document">document</term><term name="entry">entry</term><term name="entry-dictionary">dictionary entry</term><term name="entry-encyclopedia">encyclopedia entry</term><term name="event">event</term><!-- figure is in the list of locator terms --><term name="graphic">graphic</term><term name="hearing">hearing</term><term name="interview">interview</term><term name="legal_case">legal case</term><term name="legislation">legislation</term><term name="manuscript">manuscript</term><term name="map">map</term><term name="motion_picture">video recording</term><term name="musical_score">musical score</term><term name="pamphlet">pamphlet</term><term name="paper-conference">conference paper</term><term name="patent">patent</term><term name="performance">performance</term><term name="periodical">periodical</term><term name="personal_communication">persoonlijke communicatie</term><term name="post">post</term><term name="post-weblog">blog post</term><term name="regulation">regulation</term><term name="report">report</term><term name="review">review</term><term name="review-book">book review</term><term name="software">software</term><term name="song">audio recording</term><term name="speech">presentation</term><term name="standard">standard</term><term name="thesis">thesis</term><term name="treaty">treaty</term><term name="webpage">webpage</term>
<!-- SHORT ITEM TYPE FORMS --><term name="article-journal" form="short">journal art.</term><term name="article-magazine" form="short">mag. art.</term><term name="article-newspaper" form="short">newspaper art.</term><term name="book" form="short">bk.</term><term name="chapter" form="short">bk. chap.</term><term name="document" form="short">doc.</term><!-- figure is in the list of locator terms --><term name="graphic" form="short">graph.</term><term name="interview" form="short">interv.</term><term name="manuscript" form="short">MS</term><term name="motion_picture" form="short">video rec.</term><term name="report" form="short">rep.</term><term name="review" form="short">rev.</term><term name="review-book" form="short">bk. rev.</term><term name="song" form="short">audio rec.</term>
<!-- HISTORICAL ERA TERMS --><term name="ad">AD</term><term name="bc">BC</term><term name="bce">BCE</term><term name="ce">CE</term>
<!-- PUNCTUATION --><term name="open-quote">\u2018</term><term name="close-quote">\u2019</term><term name="open-inner-quote">\u201C</term><term name="close-inner-quote">\u201D</term><term name="page-range-delimiter">\u2013</term><term name="colon">:</term><term name="comma">,</term><term name="semicolon">;</term>
<!-- ORDINALS --><term name="ordinal">ste</term><term name="ordinal-00" match="whole-number">de</term><term name="ordinal-02" match="last-two-digits">de</term><term name="ordinal-03" match="last-two-digits">de</term><term name="ordinal-04" match="last-two-digits">de</term><term name="ordinal-05" match="last-two-digits">de</term><term name="ordinal-06" match="last-two-digits">de</term><term name="ordinal-07" match="last-two-digits">de</term><term name="ordinal-09" match="last-two-digits">de</term><term name="ordinal-10">de</term><term name="ordinal-11">de</term><term name="ordinal-12">de</term><term name="ordinal-13">de</term><term name="ordinal-14">de</term><term name="ordinal-15">de</term><term name="ordinal-16">de</term><term name="ordinal-17">de</term><term name="ordinal-18">de</term><term name="ordinal-19">de</term>
<!-- LONG ORDINALS --><term name="long-ordinal-01">eerste</term><term name="long-ordinal-02">tweede</term><term name="long-ordinal-03">derde</term><term name="long-ordinal-04">vierde</term><term name="long-ordinal-05">vijfde</term><term name="long-ordinal-06">zesde</term><term name="long-ordinal-07">zevende</term><term name="long-ordinal-08">achtste</term><term name="long-ordinal-09">negende</term><term name="long-ordinal-10">tiende</term>
<!-- LONG LOCATOR FORMS --><term name="act">			 <single>act</single><multiple>acts</multiple>						 </term><term name="appendix">			 <single>appendix</single><multiple>appendices</multiple>						 </term><term name="article-locator">			 <single>article</single><multiple>articles</multiple>						 </term><term name="canon">			 <single>canon</single><multiple>canons</multiple>						 </term><term name="elocation">			 <single>location</single><multiple>locations</multiple>						 </term><term name="equation">			 <single>equation</single><multiple>equations</multiple>						 </term><term name="rule">			 <single>rule</single><multiple>rules</multiple>						 </term><term name="scene">			 <single>scene</single><multiple>scenes</multiple>						 </term><term name="table">			 <single>table</single><multiple>tables</multiple>						 </term><term name="timestamp"> <!-- generally blank --><single></single><multiple></multiple>						 </term><term name="title-locator">			 <single>title</single><multiple>titles</multiple>						 </term><term name="book"><single>boek</single><multiple>boeken</multiple></term><term name="chapter"><single>hoofdstuk</single><multiple>hoofdstukken</multiple></term><term name="column"><single>column</single><multiple>columns</multiple></term><term name="figure"><single>figuur</single><multiple>figuren</multiple></term><term name="folio"><single>folio</single><multiple>folio's</multiple></term><term name="issue"><single>nummer</single><multiple>nummers</multiple></term><term name="line"><single>regel</single><multiple>regels</multiple></term><term name="note"><single>aantekening</single><multiple>aantekeningen</multiple></term><term name="opus"><single>opus</single><multiple>opera</multiple></term><term name="page"><single>pagina</single><multiple>pagina's</multiple></term><term name="number-of-pages"><single>pagina</single><multiple>pagina's</multiple></term><term name="paragraph"><single>paragraaf</single><multiple>paragrafen</multiple></term><term name="part"><single>deel</single><multiple>delen</multiple></term><term name="section"><single>sectie</single><multiple>secties</multiple></term><term name="sub-verbo"><single>sub verbo</single><multiple>sub verbis</multiple></term><term name="verse"><single>vers</single><multiple>versen</multiple></term><term name="volume"><single>volume</single><multiple>volumes</multiple></term>
<!-- SHORT LOCATOR FORMS --><term name="appendix">			 <single>app.</single><multiple>apps.</multiple>						 </term><term name="article-locator">			 <single>art.</single><multiple>arts.</multiple></term><term name="elocation">			 <single>loc.</single><multiple>locs.</multiple></term><term name="equation">			 <single>eq.</single><multiple>eqs.</multiple></term><term name="rule">			 <single>r.</single><multiple>rr.</multiple>						 </term><term name="scene">			 <single>sc.</single><multiple>scs.</multiple>						 </term><term name="table">			 <single>tbl.</single><multiple>tbls.</multiple>						 </term><term name="timestamp"> <!-- generally blank --><single></single><multiple></multiple>						 </term><term name="title-locator">			 <single>tit.</single><multiple>tits.</multiple></term><term name="book" form="short">bk.</term><term name="chapter" form="short">hfdst.</term><term name="column" form="short">col.</term><term name="figure" form="short">fig.</term><term name="folio" form="short">f.</term><term name="issue" form="short">nr.</term><term name="line" form="short">l.</term><term name="note" form="short">n.</term><term name="opus" form="short">op.</term><term name="page" form="short"><single>p.</single><multiple>pp.</multiple></term><term name="number-of-pages" form="short"><single>p.</single><multiple>pp.</multiple></term><term name="paragraph" form="short">par.</term><term name="part" form="short">deel</term><term name="section" form="short">sec.</term><term name="sub-verbo" form="short"><single>s.v.</single><multiple>s.vv.</multiple></term><term name="verse" form="short"><single>v.</single><multiple>vv.</multiple></term><term name="volume" form="short"><single>vol.</single><multiple>vols.</multiple></term>
<!-- SYMBOL LOCATOR FORMS --><term name="paragraph" form="symbol"><single>\xB6</single><multiple>\xB6\xB6</multiple></term><term name="section" form="symbol"><single>\xA7</single><multiple>\xA7\xA7</multiple></term>
<!-- LONG ROLE FORMS --><term name="chair"><single>chair</single><multiple>chairs</multiple></term><term name="compiler"><single>compiler</single><multiple>compilers</multiple></term><term name="contributor"><single>contributor</single><multiple>contributors</multiple></term><term name="curator"><single>curator</single><multiple>curators</multiple></term><term name="executive-producer"><single>executive producer</single><multiple>executive producers</multiple></term><term name="guest"><single>guest</single><multiple>guests</multiple></term><term name="host"><single>host</single><multiple>hosts</multiple></term><term name="narrator"><single>narrator</single><multiple>narrators</multiple></term><term name="organizer"><single>organizer</single><multiple>organizers</multiple></term><term name="performer"><single>performer</single><multiple>performers</multiple></term><term name="producer"><single>producer</single><multiple>producers</multiple></term><term name="script-writer"><single>writer</single><multiple>writers</multiple></term><term name="series-creator"><single>series creator</single><multiple>series creators</multiple></term><term name="director"><single>regisseur</single><multiple>regisseurs</multiple></term><term name="editor"><single>redacteur</single><multiple>redacteuren</multiple></term><term name="editorial-director"><single>redacteur</single><multiple>redacteuren</multiple></term><term name="illustrator"><single>illustrator</single><multiple>illustrators</multiple></term><term name="translator"><single>vertaler</single><multiple>vertalers</multiple></term><term name="editortranslator"><single>redacteur &amp; vertaler</single><multiple>redacteuren &amp; vertalers</multiple></term>
<!-- SHORT ROLE FORMS --><term name="compiler" form="short"><single>comp.</single><multiple>comps.</multiple></term><term name="contributor" form="short"><single>contrib.</single><multiple>contribs.</multiple></term><term name="curator" form="short"><single>cur.</single><multiple>curs.</multiple></term><term name="executive-producer" form="short"><single>exec. prod.</single><multiple>exec. prods.</multiple></term><term name="narrator" form="short"><single>narr.</single><multiple>narrs.</multiple></term><term name="organizer" form="short"><single>org.</single><multiple>orgs.</multiple></term><term name="performer" form="short"><single>perf.</single><multiple>perfs.</multiple></term><term name="producer" form="short"><single>prod.</single><multiple>prods.</multiple></term><term name="script-writer" form="short"><single>writ.</single><multiple>writs.</multiple></term><term name="series-creator" form="short"><single>cre.</single><multiple>cres.</multiple></term><term name="director" form="short"><single>reg.</single><multiple>reg.</multiple></term><term name="editor" form="short"><single>red.</single><multiple>red.</multiple></term><term name="editorial-director" form="short"><single>red.</single><multiple>red.</multiple></term><term name="illustrator" form="short"><single>ill.</single><multiple>ill.</multiple></term><term name="translator" form="short"><single>vert.</single><multiple>vert.</multiple></term><term name="editortranslator" form="short"><single>red. &amp; vert.</single><multiple>red. &amp; vert.</multiple></term>
<!-- VERB ROLE FORMS --><term name="chair" form="verb">chaired by</term><term name="compiler" form="verb">compiled by</term><term name="contributor" form="verb">with</term><term name="curator" form="verb">curated by</term><term name="executive-producer" form="verb">executive produced by</term><term name="guest" form="verb">with guest</term><term name="host" form="verb">hosted by</term><term name="narrator" form="verb">narrated by</term><term name="organizer" form="verb">organized by</term><term name="performer" form="verb">performed by</term><term name="producer" form="verb">produced by</term><term name="script-writer" form="verb">written by</term><term name="series-creator" form="verb">created by</term><term name="container-author" form="verb">door</term><term name="director" form="verb">geregisseerd door</term><term name="editor" form="verb">onder redactie van</term><term name="editorial-director" form="verb">onder redactie van</term><term name="illustrator" form="verb">ge\xEFllustreerd door</term><term name="interviewer" form="verb">ge\xEFnterviewd door</term><term name="recipient" form="verb">ontvangen door</term><term name="reviewed-author" form="verb">door</term><term name="translator" form="verb">vertaald door</term><term name="editortranslator" form="verb">bewerkt &amp; vertaald door</term>
<!-- SHORT VERB ROLE FORMS --><term name="compiler" form="verb-short">comp. by</term><term name="contributor" form="verb-short">w.</term><term name="curator" form="verb-short">cur. by</term><term name="executive-producer" form="verb-short">exec. prod. by</term><term name="guest" form="verb-short">w. guest</term><term name="host" form="verb-short">hosted by</term><term name="narrator" form="verb-short">narr. by</term><term name="organizer" form="verb-short">org. by</term><term name="performer" form="verb-short">perf. by</term><term name="producer" form="verb-short">prod. by</term><term name="script-writer" form="verb-short">writ. by</term><term name="series-creator" form="verb-short">cre. by</term><term name="director" form="verb-short">geregisseerd door</term><term name="editor" form="verb-short">onder redactie van</term><term name="editorial-director" form="verb-short">bewerkt door</term><term name="illustrator" form="verb-short">ge\xEFllustreerd door</term><term name="translator" form="verb-short">vertaald door</term><term name="editortranslator" form="verb-short">bewerkt &amp; vertaald door</term>
<!-- LONG MONTH FORMS --><term name="month-01">januari</term><term name="month-02">februari</term><term name="month-03">maart</term><term name="month-04">april</term><term name="month-05">mei</term><term name="month-06">juni</term><term name="month-07">juli</term><term name="month-08">augustus</term><term name="month-09">september</term><term name="month-10">oktober</term><term name="month-11">november</term><term name="month-12">december</term>
<!-- SHORT MONTH FORMS --><term name="month-01" form="short">jan.</term><term name="month-02" form="short">feb.</term><term name="month-03" form="short">mrt.</term><term name="month-04" form="short">apr.</term><term name="month-05" form="short">mei</term><term name="month-06" form="short">jun.</term><term name="month-07" form="short">jul.</term><term name="month-08" form="short">aug.</term><term name="month-09" form="short">sep.</term><term name="month-10" form="short">okt.</term><term name="month-11" form="short">nov.</term><term name="month-12" form="short">dec.</term>
<!-- SEASONS --><term name="season-01">lente</term><term name="season-02">zomer</term><term name="season-03">herst</term><term name="season-04">winter</term></terms>
</locale>
`,
      "fr-FR": `<?xml version="1.0" encoding="utf-8"?>
<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="fr-FR"><info><translator><name>Gr\xE9goire Colly</name></translator><translator><name>Collectif Zotero francophone</name></translator><rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights><updated>2012-07-04T23:31:02+00:00</updated></info><style-options punctuation-in-quote="false" limit-day-ordinals-to-day-1="true"/><date form="text"><date-part name="day" suffix=" "/><date-part name="month" suffix=" "/><date-part name="year"/></date><date form="numeric"><date-part name="day" form="numeric-leading-zeros" suffix="/"/><date-part name="month" form="numeric-leading-zeros" suffix="/"/><date-part name="year"/></date><terms><term name="advance-online-publication">publication en ligne anticip\xE9e</term><term name="album">album</term><term name="audio-recording">enregistrement audio</term><term name="film">film</term><term name="henceforth">d\xE9sormais</term><term name="loc-cit">loc.&#160;cit.</term> <!-- like ibid., the abbreviated form is the regular form  --><term name="no-place">sans lieu</term><term name="no-place" form="short">s.&#160;l.</term><term name="no-publisher">sans nom</term> <!-- sine nomine --><term name="no-publisher" form="short">s.&#160;n.</term><term name="on">sur</term><term name="op-cit">op.&#160;cit.</term> <!-- like ibid., the abbreviated form is the regular form  --><term name="original-work-published">\xE9dition originale</term><term name="personal-communication">communication personnelle</term><term name="podcast">podcast</term><term name="podcast-episode">\xE9pisode de podcast</term><term name="preprint">pr\xE9publication</term><term name="radio-broadcast">\xE9mission de radio</term><term name="radio-series">s\xE9rie radiophonique</term><term name="radio-series-episode">\xE9pisode de s\xE9rie radiophonique</term><term name="special-issue">num\xE9ro sp\xE9cial</term><term name="special-section">section sp\xE9ciale</term><term name="television-broadcast">\xE9mission de t\xE9l\xE9vision</term><term name="television-series">s\xE9rie t\xE9l\xE9vis\xE9e</term><term name="television-series-episode">\xE9pisode de s\xE9rie t\xE9l\xE9vis\xE9e</term><term name="video">vid\xE9o</term><term name="working-paper">document de travail</term><term name="accessed">consult\xE9 le</term><term name="and">et</term><term name="and others">et autres</term><term name="anonymous">anonyme</term><term name="anonymous" form="short">anon.</term><term name="at">sur</term><term name="available at">disponible sur</term><term name="by">par</term><term name="circa">vers</term><term name="circa" form="short">v.</term><term name="cited">cit\xE9</term><term name="edition" gender="feminine"><single>\xE9dition</single><multiple>\xE9ditions</multiple></term><term name="edition" form="short">\xE9d.</term><term name="et-al">et al.</term><term name="forthcoming">\xE0 para\xEEtre</term><term name="from">\xE0 l'adresse</term><term name="ibid">ibid.</term><term name="in">in</term><term name="in press">sous presse</term><term name="internet">Internet</term><term name="interview">entretien</term><term name="letter">lettre</term><term name="no date">sans date</term><term name="no date" form="short">s.&#160;d.</term><term name="online">en ligne</term><term name="presented at">pr\xE9sent\xE9 \xE0</term><term name="reference"><single>r\xE9f\xE9rence</single><multiple>r\xE9f\xE9rences</multiple></term><term name="reference" form="short"><single>r\xE9f.</single><multiple>r\xE9f.</multiple></term><term name="retrieved">consult\xE9</term><term name="scale">\xE9chelle</term><term name="version">version</term>
<!-- LONG ITEM TYPE FORMS --><term name="article">article</term><term name="article-journal">article de revue</term><term name="article-magazine">article de magazine</term><term name="article-newspaper">article de presse</term><term name="bill">projet de loi</term><term name="book">livre</term><term name="broadcast">\xE9mission</term><term name="chapter">chapitre de livre</term><term name="classic">classique</term><term name="collection">collection</term><term name="dataset">jeu de donn\xE9es</term><term name="document">document</term><term name="entry">entr\xE9e</term><term name="entry-dictionary">entr\xE9e de dictionnaire</term><term name="entry-encyclopedia">entr\xE9e d'encyclop\xE9die</term><term name="event">\xE9v\xE9nement</term><!-- figure is in the list of locator terms --><term name="graphic">image</term><term name="hearing">audience</term><term name="interview">interview</term><term name="legal_case">affaire</term><term name="legislation">acte juridique</term><term name="manuscript">manuscrit</term><term name="map">carte</term><term name="motion_picture">enregistrement vid\xE9o</term><term name="musical_score">partition</term><term name="pamphlet">pamphlet</term><term name="paper-conference">article de colloque</term><term name="patent">brevet</term><term name="performance">interpr\xE9tation</term><term name="periodical">p\xE9riodique</term><term name="personal_communication">communication personnelle</term><term name="post">billet</term><term name="post-weblog">billet de blog</term><term name="regulation">r\xE8glement</term><term name="report">rapport</term><term name="review">recension</term><term name="review-book">recension de livre</term><term name="software">logiciel</term><term name="song">chanson</term><term name="speech">pr\xE9sentation</term><term name="standard">norme</term><term name="thesis">th\xE8se</term><term name="treaty">trait\xE9</term><term name="webpage">page web</term>
<!-- SHORT ITEM TYPE FORMS --><term name="article-journal" form="short">art. de revue</term><term name="article-magazine" form="short">art. de mag.</term><term name="article-newspaper" form="short">art. de presse</term><term name="book" form="short">liv.</term><term name="chapter" form="short">chap. de liv.</term><term name="document" form="short">doc.</term><!-- figure is in the list of locator terms --><term name="graphic" form="short">graph.</term><term name="interview" form="short">interv.</term><term name="manuscript" form="short">ms</term><term name="motion_picture" form="short">enr. vid\xE9o</term><term name="report" form="short">rap.</term><term name="review" form="short">recens.</term><term name="review-book" form="short">recens. de liv.</term><term name="song" form="short">enr. audio</term>
<!-- HISTORICAL ERA TERMS --><term name="ad">apr. J.-C.</term><term name="bc">av. J.-C.</term><term name="bce">av. n. \xE8.</term><term name="ce">n. \xE8.</term>
<!-- PUNCTUATION --><term name="open-quote">\xAB&#160;</term><term name="close-quote">&#160;\xBB</term><term name="open-inner-quote">\u201C</term><term name="close-inner-quote">\u201D</term><term name="page-range-delimiter">&#8209;</term> <!-- non-breaking hyphen --><term name="colon">&#160;:</term><term name="comma">,</term><term name="semicolon">&#160;;</term>
<!-- ORDINALS --><term name="ordinal">\u1D49</term><term name="ordinal-01" gender-form="feminine" match="whole-number">\u02B3\u1D49</term><term name="ordinal-01" gender-form="masculine" match="whole-number">\u1D49\u02B3</term>
<!-- LONG ORDINALS --><term name="long-ordinal-01">premier</term><term name="long-ordinal-02">deuxi\xE8me</term><term name="long-ordinal-03">troisi\xE8me</term><term name="long-ordinal-04">quatri\xE8me</term><term name="long-ordinal-05">cinqui\xE8me</term><term name="long-ordinal-06">sixi\xE8me</term><term name="long-ordinal-07">septi\xE8me</term><term name="long-ordinal-08">huiti\xE8me</term><term name="long-ordinal-09">neuvi\xE8me</term><term name="long-ordinal-10">dixi\xE8me</term>
<!-- LONG LOCATOR FORMS --><term name="act"><single>acte</single><multiple>actes</multiple></term><term name="appendix"><single>appendice</single><multiple>appendices</multiple></term><term name="article-locator"><single>article</single><multiple>articles</multiple></term><term name="canon"><single>canon</single><multiple>canons</multiple></term><term name="elocation"><single>emplacement</single><multiple>emplacements</multiple></term><term name="equation"><single>\xE9quation</single><multiple>\xE9quations</multiple></term><term name="rule"><single>r\xE8gle</single><multiple>r\xE8gles</multiple></term><term name="scene"><single>sc\xE8ne</single><multiple>sc\xE8nes</multiple></term><term name="table"><single>tableau</single><multiple>tableaux</multiple></term><term name="timestamp"> <!-- generally blank --><single></single><multiple></multiple></term><term name="title-locator"><single>titre</single><multiple>titres</multiple></term><term name="book"><single>livre</single><multiple>livres</multiple></term><term name="chapter"><single>chapitre</single><multiple>chapitres</multiple></term><term name="column"><single>colonne</single><multiple>colonnes</multiple></term><term name="figure"><single>figure</single><multiple>figures</multiple></term><term name="folio"><single>folio</single><multiple>folios</multiple></term><term name="issue" gender="masculine"><single>num\xE9ro</single><multiple>num\xE9ros</multiple></term><term name="line"><single>ligne</single><multiple>lignes</multiple></term><term name="note"><single>note</single><multiple>notes</multiple></term><term name="opus"><single>opus</single><multiple>opus</multiple></term><term name="page"><single>page</single><multiple>pages</multiple></term><term name="number-of-pages"><single>page</single><multiple>pages</multiple></term><term name="paragraph"><single>paragraphe</single><multiple>paragraphes</multiple></term><term name="part"><single>partie</single><multiple>parties</multiple></term><term name="section"><single>section</single><multiple>sections</multiple></term><term name="sub-verbo"><single>sub verbo</single><multiple>sub verbis</multiple></term><term name="verse"><single>verset</single><multiple>versets</multiple></term><term name="volume" gender="masculine"><single>volume</single><multiple>volumes</multiple></term>
<!-- SHORT LOCATOR FORMS --><term name="appendix"><single>append.</single><multiple>append.</multiple></term><term name="article-locator"><single>art.</single><multiple>art.</multiple></term><term name="elocation"><single>emplact</single><multiple>emplact</multiple></term><term name="equation"><single>eq.</single><multiple>eq.</multiple></term><term name="rule"><single>r\xE8gle</single><multiple>r\xE8gles</multiple></term><term name="scene"><single>sc.</single><multiple>sc.</multiple></term><term name="table"><single>tab.</single><multiple>tab.</multiple></term><term name="timestamp"> <!-- generally blank --><single></single><multiple></multiple></term><term name="title-locator"><single>tit.</single><multiple>tit.</multiple></term><term name="book" form="short">liv.</term><term name="chapter" form="short">chap.</term><term name="column" form="short">col.</term><term name="figure" form="short">fig.</term><term name="folio" form="short"><single>f\u1D52</single><multiple>f\u1D52\u02E2</multiple></term><term name="issue" form="short"><single>n\u1D52</single><multiple>n\u1D52\u02E2</multiple></term><term name="line" form="short">l.</term><term name="note" form="short">n.</term><term name="opus" form="short">op.</term><term name="page" form="short"><single>p.</single><multiple>p.</multiple></term><term name="number-of-pages" form="short"><single>p.</single><multiple>p.</multiple></term><term name="paragraph" form="short">paragr.</term><term name="part" form="short">part.</term><term name="section" form="short">sect.</term><term name="sub-verbo" form="short"><single>s.&#160;v.</single><multiple>s.&#160;vv.</multiple></term><term name="verse" form="short"><single>v.</single><multiple>v.</multiple></term><term name="volume" form="short"><single>vol.</single><multiple>vol.</multiple></term>
<!-- SYMBOL LOCATOR FORMS --><term name="paragraph" form="symbol"><single>\xA7</single><multiple>\xA7</multiple></term><term name="section" form="symbol"><single>\xA7</single><multiple>\xA7</multiple></term>
<!-- LONG ROLE FORMS --><term name="chair"><single>pr\xE9sident</single><multiple>pr\xE9sidents</multiple></term><term name="compiler"><single>compilateur</single><multiple>compilateurs</multiple></term><term name="contributor"><single>contributeur</single><multiple>contributeurs</multiple></term><term name="curator"><single>commissaire</single><multiple>commissaires</multiple></term><term name="executive-producer"><single>producteur ex\xE9cutif</single><multiple>producteurs ex\xE9cutifs</multiple></term><term name="guest"><single>invit\xE9</single><multiple>invit\xE9s</multiple></term><term name="host"><single>h\xF4te</single><multiple>h\xF4tes</multiple></term><term name="narrator"><single>narrateur</single><multiple>narrateurs</multiple></term><term name="organizer"><single>organisateur</single><multiple>organisateurs</multiple></term><term name="performer"><single>interpr\xE8te</single><multiple>interpr\xE8tes</multiple></term><term name="producer"><single>producteur</single><multiple>producteurs</multiple></term><term name="script-writer"><single>sc\xE9nariste</single><multiple>sc\xE9naristes</multiple></term><term name="series-creator"><single>cr\xE9ateur de s\xE9rie</single><multiple>cr\xE9ateurs de s\xE9rie</multiple></term><term name="director"><single>r\xE9alisateur</single><multiple>r\xE9alisateurs</multiple></term><term name="editor"><single>\xE9diteur</single><multiple>\xE9diteurs</multiple></term><term name="editorial-director"><single>directeur</single><multiple>directeurs</multiple></term><term name="illustrator"><single>illustrateur</single><multiple>illustrateurs</multiple></term><term name="translator"><single>traducteur</single><multiple>traducteurs</multiple></term><term name="editortranslator"><single>\xE9diteur et traducteur</single><multiple>\xE9diteurs et traducteurs</multiple></term>
<!-- SHORT ROLE FORMS --><term name="compiler" form="short"><single>compil.</single><multiple>compil.</multiple></term><term name="contributor" form="short"><single>contrib.</single><multiple>contrib.</multiple></term><term name="curator" form="short"><single>commiss.</single><multiple>commiss.</multiple></term><term name="executive-producer" form="short"><single>prod. ex\xE9.</single><multiple>prod. ex\xE9.</multiple></term><term name="narrator" form="short"><single>narr.</single><multiple>narr.</multiple></term><term name="organizer" form="short"><single>org.</single><multiple>org.</multiple></term><term name="performer" form="short"><single>interpr.</single><multiple>interpr.</multiple></term><term name="producer" form="short"><single>prod.</single><multiple>prod.</multiple></term><term name="script-writer" form="short"><single>sc\xE9nar.</single><multiple>sc\xE9nar.</multiple></term><term name="series-creator" form="short"><single>cr\xE9at.</single><multiple>cr\xE9at.</multiple></term><term name="director" form="short"><single>r\xE9al.</single><multiple>r\xE9al.</multiple></term><term name="editor" form="short"><single>\xE9d.</single><multiple>\xE9d.</multiple></term><term name="editorial-director" form="short"><single>dir.</single><multiple>dir.</multiple></term><term name="illustrator" form="short"><single>ill.</single><multiple>ill.</multiple></term><term name="translator" form="short"><single>trad.</single><multiple>trad.</multiple></term><term name="editortranslator" form="short"><single>\xE9d. et trad.</single><multiple>\xE9d. et trad.</multiple></term>
<!-- VERB ROLE FORMS --><term name="chair" form="verb">pr\xE9sid\xE9 par</term><term name="compiler" form="verb">compil\xE9 par</term><term name="contributor" form="verb">avec</term><term name="curator" form="verb">organis\xE9 par</term><term name="executive-producer" form="verb">production ex\xE9cutive par</term><term name="guest" form="verb">avec pour invit\xE9</term><term name="host" form="verb">anim\xE9 par</term><term name="narrator" form="verb">lu par</term><term name="organizer" form="verb">organis\xE9 par</term><term name="performer" form="verb">interpr\xE9t\xE9 par</term><term name="producer" form="verb">produit par</term><term name="script-writer" form="verb">sc\xE9nario de</term><term name="series-creator" form="verb">cr\xE9\xE9 par</term><term name="container-author" form="verb">par</term><term name="director" form="verb">r\xE9alis\xE9 par</term><term name="editor" form="verb">\xE9dit\xE9 par</term><term name="editorial-director" form="verb">sous la direction de</term><term name="illustrator" form="verb">illustr\xE9 par</term><term name="interviewer" form="verb">entretien r\xE9alis\xE9 par</term><term name="recipient" form="verb">\xE0</term><term name="reviewed-author" form="verb">par</term><term name="translator" form="verb">traduit par</term><term name="editortranslator" form="verb">\xE9dit\xE9 et traduit par</term>
<!-- SHORT VERB ROLE FORMS --><term name="compiler" form="verb-short">compil. par</term><term name="contributor" form="verb-short">ac</term><term name="curator" form="verb-short">org. par</term><term name="executive-producer" form="verb-short">prod. ex\xE9. par</term><term name="guest" form="verb-short">ac pr inv.</term><term name="host" form="verb-short">anim. par</term><term name="narrator" form="verb-short">lu par</term><term name="organizer" form="verb-short">org. par</term><term name="performer" form="verb-short">interpr. par</term><term name="producer" form="verb-short">prod. par</term><term name="script-writer" form="verb-short">sc\xE9nar. de</term><term name="series-creator" form="verb-short">cr\xE9\xE9 par</term><term name="director" form="verb-short">r\xE9al. par</term><term name="editor" form="verb-short">\xE9d. par</term><term name="editorial-director" form="verb-short">ss la dir. de</term><term name="illustrator" form="verb-short">ill. par</term><term name="translator" form="verb-short">trad. par</term><term name="editortranslator" form="verb-short">\xE9d. et trad. par</term>
<!-- LONG MONTH FORMS --><term name="month-01" gender="masculine">janvier</term><term name="month-02" gender="masculine">f\xE9vrier</term><term name="month-03" gender="masculine">mars</term><term name="month-04" gender="masculine">avril</term><term name="month-05" gender="masculine">mai</term><term name="month-06" gender="masculine">juin</term><term name="month-07" gender="masculine">juillet</term><term name="month-08" gender="masculine">ao\xFBt</term><term name="month-09" gender="masculine">septembre</term><term name="month-10" gender="masculine">octobre</term><term name="month-11" gender="masculine">novembre</term><term name="month-12" gender="masculine">d\xE9cembre</term>
<!-- SHORT MONTH FORMS --><term name="month-01" form="short">janv.</term><term name="month-02" form="short">f\xE9vr.</term><term name="month-03" form="short">mars</term><term name="month-04" form="short">avr.</term><term name="month-05" form="short">mai</term><term name="month-06" form="short">juin</term><term name="month-07" form="short">juill.</term><term name="month-08" form="short">ao\xFBt</term><term name="month-09" form="short">sept.</term><term name="month-10" form="short">oct.</term><term name="month-11" form="short">nov.</term><term name="month-12" form="short">d\xE9c.</term>
<!-- SEASONS --><term name="season-01">printemps</term><term name="season-02">\xE9t\xE9</term><term name="season-03">automne</term><term name="season-04">hiver</term></terms>
</locale>
`,
      "de-DE": '<?xml version="1.0" encoding="utf-8"?>\n<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="de-DE"><info><translator><name>Till A. Heilmann</name></translator><translator><name>Ulrich</name></translator><translator><name>Rintze M. Zelle</name></translator><translator><name>Sebastian Karcher</name></translator><translator><name>jakov</name></translator><rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights><updated>2012-07-04T23:31:02+00:00</updated></info><style-options punctuation-in-quote="false"/><date form="text"><date-part name="day" form="ordinal" suffix=" "/><date-part name="month" suffix=" "/><date-part name="year"/></date><date form="numeric"><date-part name="day" form="numeric-leading-zeros" suffix="."/><date-part name="month" form="numeric-leading-zeros" suffix="."/><date-part name="year"/></date><terms><term name="advance-online-publication">advance online publication</term><term name="album">album</term><term name="audio-recording">audio recording</term><term name="film">film</term><term name="henceforth">henceforth</term><term name="loc-cit">loc. cit.</term> <!-- like ibid., the abbreviated form is the regular form  --><term name="no-place">no place</term><term name="no-place" form="short">n.p.</term><term name="no-publisher">no publisher</term> <!-- sine nomine --><term name="no-publisher" form="short">n.p.</term><term name="on">on</term><term name="op-cit">op. cit.</term> <!-- like ibid., the abbreviated form is the regular form  --><term name="original-work-published">original work published</term><term name="personal-communication">pers\xF6nliche Kommunikation</term><term name="podcast">podcast</term><term name="podcast-episode">podcast episode</term><term name="preprint">preprint</term><term name="radio-broadcast">radio broadcast</term><term name="radio-series">radio series</term><term name="radio-series-episode">radio series episode</term><term name="special-issue">special issue</term><term name="special-section">special section</term><term name="television-broadcast">television broadcast</term><term name="television-series">television series</term><term name="television-series-episode">television series episode</term><term name="video">video</term><term name="working-paper">working paper</term><term name="accessed">zugegriffen</term><term name="and">und</term><term name="and others">und andere</term><term name="anonymous">ohne Autor</term><term name="anonymous" form="short">o.&#160;A.</term><term name="at">auf</term><term name="available at">verf\xFCgbar unter</term><term name="by">von</term><term name="circa">circa</term><term name="circa" form="short">ca.</term><term name="cited">zitiert</term><term name="edition"><single>Auflage</single><multiple>Auflagen</multiple></term><term name="edition" form="short">Aufl.</term><term name="et-al">u.&#160;a.</term><term name="forthcoming">i.&#160;E.</term><term name="from">von</term><term name="ibid">ebd.</term><term name="in">in</term><term name="in press">im Druck</term><term name="internet">Internet</term><term name="interview">Interview</term><term name="letter">Brief</term><term name="no date">ohne Datum</term><term name="no date" form="short">o.&#160;J.</term><term name="online">online</term><term name="presented at">gehalten auf der</term><term name="reference"><single>Referenz</single><multiple>Referenzen</multiple></term><term name="reference" form="short"><single>Ref.</single><multiple>Ref.</multiple></term><term name="retrieved">abgerufen</term><term name="scale">Ma\xDFstab</term><term name="version">Version</term>\n<!-- LONG ITEM TYPE FORMS --><term name="article">preprint</term><term name="article-journal">journal article</term><term name="article-magazine">magazine article</term><term name="article-newspaper">newspaper article</term><term name="bill">bill</term><term name="book">book</term><term name="broadcast">broadcast</term><term name="chapter">book chapter</term><term name="classic">classic</term><term name="collection">collection</term><term name="dataset">dataset</term><term name="document">document</term><term name="entry">entry</term><term name="entry-dictionary">dictionary entry</term><term name="entry-encyclopedia">encyclopedia entry</term><term name="event">event</term><!-- figure is in the list of locator terms --><term name="graphic">graphic</term><term name="hearing">hearing</term><term name="interview">interview</term><term name="legal_case">legal case</term><term name="legislation">legislation</term><term name="manuscript">manuscript</term><term name="map">map</term><term name="motion_picture">video recording</term><term name="musical_score">musical score</term><term name="pamphlet">pamphlet</term><term name="paper-conference">conference paper</term><term name="patent">patent</term><term name="performance">performance</term><term name="periodical">periodical</term><term name="personal_communication">pers\xF6nliche Kommunikation</term><term name="post">post</term><term name="post-weblog">blog post</term><term name="regulation">regulation</term><term name="report">report</term><term name="review">review</term><term name="review-book">book review</term><term name="software">software</term><term name="song">audio recording</term><term name="speech">presentation</term><term name="standard">standard</term><term name="thesis">thesis</term><term name="treaty">treaty</term><term name="webpage">webpage</term>\n<!-- SHORT ITEM TYPE FORMS --><term name="article-journal" form="short">journal art.</term><term name="article-magazine" form="short">mag. art.</term><term name="article-newspaper" form="short">newspaper art.</term><term name="book" form="short">bk.</term><term name="chapter" form="short">bk. chap.</term><term name="document" form="short">doc.</term><!-- figure is in the list of locator terms --><term name="graphic" form="short">graph.</term><term name="interview" form="short">interv.</term><term name="manuscript" form="short">MS</term><term name="motion_picture" form="short">video rec.</term><term name="report" form="short">rep.</term><term name="review" form="short">rev.</term><term name="review-book" form="short">bk. rev.</term><term name="song" form="short">audio rec.</term>\n<!-- HISTORICAL ERA TERMS --><term name="ad">&#160;n.&#160;Chr.</term><term name="bc">&#160;v.&#160;Chr.</term><term name="bce">BCE</term><term name="ce">CE</term>\n<!-- PUNCTUATION --><term name="open-quote">\u201E</term><term name="close-quote">\u201C</term><term name="open-inner-quote">\u201A</term><term name="close-inner-quote">\u2018</term><term name="page-range-delimiter">\u2013</term><term name="colon">:</term><term name="comma">,</term><term name="semicolon">;</term>\n<!-- ORDINALS --><term name="ordinal">.</term>\n<!-- LONG ORDINALS --><term name="long-ordinal-01">erster</term><term name="long-ordinal-02">zweiter</term><term name="long-ordinal-03">dritter</term><term name="long-ordinal-04">vierter</term><term name="long-ordinal-05">f\xFCnfter</term><term name="long-ordinal-06">sechster</term><term name="long-ordinal-07">siebter</term><term name="long-ordinal-08">achter</term><term name="long-ordinal-09">neunter</term><term name="long-ordinal-10">zehnter</term>\n<!-- LONG LOCATOR FORMS --><term name="act">			 <single>act</single><multiple>acts</multiple>						 </term><term name="appendix">			 <single>appendix</single><multiple>appendices</multiple>						 </term><term name="article-locator">			 <single>article</single><multiple>articles</multiple>						 </term><term name="canon">			 <single>canon</single><multiple>canons</multiple>						 </term><term name="elocation">			 <single>location</single><multiple>locations</multiple>						 </term><term name="equation">			 <single>equation</single><multiple>equations</multiple>						 </term><term name="rule">			 <single>rule</single><multiple>rules</multiple>						 </term><term name="scene">			 <single>scene</single><multiple>scenes</multiple>						 </term><term name="table">			 <single>table</single><multiple>tables</multiple>						 </term><term name="timestamp"> <!-- generally blank --><single></single><multiple></multiple>						 </term><term name="title-locator">			 <single>title</single><multiple>titles</multiple>						 </term><term name="book"><single>Buch</single><multiple>B\xFCcher</multiple></term><term name="chapter"><single>Kapitel</single><multiple>Kapitel</multiple></term><term name="column"><single>Spalte</single><multiple>Spalten</multiple></term><term name="figure"><single>Abbildung</single><multiple>Abbildungen</multiple></term><term name="folio"><single>Blatt</single><multiple>Bl\xE4tter</multiple></term><term name="issue"><single>Nummer</single><multiple>Nummern</multiple></term><term name="line"><single>Zeile</single><multiple>Zeilen</multiple></term><term name="note"><single>Note</single><multiple>Noten</multiple></term><term name="opus"><single>Opus</single><multiple>Opera</multiple></term><term name="page"><single>Seite</single><multiple>Seiten</multiple></term><term name="number-of-pages"><single>Seite</single><multiple>Seiten</multiple></term><term name="paragraph"><single>Absatz</single><multiple>Abs\xE4tze</multiple></term><term name="part"><single>Teil</single><multiple>Teile</multiple></term><term name="section"><single>Abschnitt</single><multiple>Abschnitte</multiple></term><term name="sub-verbo"><single>sub verbo</single><multiple>sub verbis</multiple></term><term name="verse"><single>Vers</single><multiple>Verse</multiple></term><term name="volume"><single>Band</single><multiple>B\xE4nde</multiple></term>\n<!-- SHORT LOCATOR FORMS --><term name="appendix">			 <single>app.</single><multiple>apps.</multiple>						 </term><term name="article-locator">			 <single>art.</single><multiple>arts.</multiple></term><term name="elocation">			 <single>loc.</single><multiple>locs.</multiple></term><term name="equation">			 <single>eq.</single><multiple>eqs.</multiple></term><term name="rule">			 <single>r.</single><multiple>rr.</multiple>						 </term><term name="scene">			 <single>sc.</single><multiple>scs.</multiple>						 </term><term name="table">			 <single>tbl.</single><multiple>tbls.</multiple>						 </term><term name="timestamp"> <!-- generally blank --><single></single><multiple></multiple>						 </term><term name="title-locator">			 <single>tit.</single><multiple>tits.</multiple></term><term name="book" form="short">B.</term><term name="chapter" form="short">Kap.</term><term name="column" form="short">Sp.</term><term name="figure" form="short">Abb.</term><term name="folio" form="short">Fol.</term><term name="issue" form="short">Nr.</term><term name="line" form="short">Z.</term><term name="note" form="short">N.</term><term name="opus" form="short">op.</term><term name="page" form="short"><single>S.</single><multiple>S.</multiple></term><term name="number-of-pages" form="short"><single>S.</single><multiple>S.</multiple></term><term name="paragraph" form="short">Abs.</term><term name="part" form="short">Teil</term><term name="section" form="short">Abschn.</term><term name="sub-verbo" form="short"><single>s.&#160;v.</single><multiple>s.&#160;vv.</multiple></term><term name="verse" form="short"><single>V.</single><multiple>V.</multiple></term><term name="volume" form="short"><single>Bd.</single><multiple>Bde.</multiple></term>\n<!-- SYMBOL LOCATOR FORMS --><term name="paragraph" form="symbol"><single>\xB6</single><multiple>\xB6\xB6</multiple></term><term name="section" form="symbol"><single>\xA7</single><multiple>\xA7\xA7</multiple></term>\n<!-- LONG ROLE FORMS --><term name="chair"><single>chair</single><multiple>chairs</multiple></term><term name="compiler"><single>compiler</single><multiple>compilers</multiple></term><term name="contributor"><single>contributor</single><multiple>contributors</multiple></term><term name="curator"><single>curator</single><multiple>curators</multiple></term><term name="executive-producer"><single>executive producer</single><multiple>executive producers</multiple></term><term name="guest"><single>guest</single><multiple>guests</multiple></term><term name="host"><single>host</single><multiple>hosts</multiple></term><term name="narrator"><single>narrator</single><multiple>narrators</multiple></term><term name="organizer"><single>organizer</single><multiple>organizers</multiple></term><term name="performer"><single>performer</single><multiple>performers</multiple></term><term name="producer"><single>producer</single><multiple>producers</multiple></term><term name="script-writer"><single>writer</single><multiple>writers</multiple></term><term name="series-creator"><single>series creator</single><multiple>series creators</multiple></term><term name="director"><single>Regisseur</single><multiple>Regisseure</multiple></term><term name="editor"><single>Herausgeber</single><multiple>Herausgeber</multiple></term><term name="collection-editor"><single>Reihenherausgeber</single><multiple>Reihenherausgeber</multiple></term><term name="editorial-director"><single>Herausgeber</single><multiple>Herausgeber</multiple></term><term name="illustrator"><single>Illustrator</single><multiple>Illustratoren</multiple></term><term name="translator"><single>\xDCbersetzer</single><multiple>\xDCbersetzer</multiple></term><term name="editortranslator"><single>Herausgeber&#160;&amp; \xDCbersetzer</single><multiple>Herausgeber&#160;&amp; \xDCbersetzer</multiple></term>\n<!-- SHORT ROLE FORMS --><term name="compiler" form="short"><single>comp.</single><multiple>comps.</multiple></term><term name="contributor" form="short"><single>contrib.</single><multiple>contribs.</multiple></term><term name="curator" form="short"><single>cur.</single><multiple>curs.</multiple></term><term name="executive-producer" form="short"><single>exec. prod.</single><multiple>exec. prods.</multiple></term><term name="narrator" form="short"><single>narr.</single><multiple>narrs.</multiple></term><term name="organizer" form="short"><single>org.</single><multiple>orgs.</multiple></term><term name="performer" form="short"><single>perf.</single><multiple>perfs.</multiple></term><term name="producer" form="short"><single>prod.</single><multiple>prods.</multiple></term><term name="script-writer" form="short"><single>writ.</single><multiple>writs.</multiple></term><term name="series-creator" form="short"><single>cre.</single><multiple>cres.</multiple></term><term name="director" form="short"><single>Reg.</single><multiple>Reg.</multiple></term><term name="editor" form="short"><single>Hrsg.</single><multiple>Hrsg.</multiple></term><term name="collection-editor" form="short"><single>Hrsg.</single><multiple>Hrsg.</multiple></term><term name="editorial-director" form="short"><single>Hrsg.</single><multiple>Hrsg.</multiple></term><term name="illustrator" form="short"><single>Ill.</single><multiple>Ill.</multiple></term><term name="translator" form="short"><single>\xDCbers.</single><multiple>\xDCbers.</multiple></term><term name="editortranslator" form="short"><single>Hrsg.&#160;&amp; \xDCbers.</single><multiple>Hrsg.&#160;&amp; \xDCbers.</multiple></term>\n<!-- VERB ROLE FORMS --><term name="chair" form="verb">chaired by</term><term name="compiler" form="verb">compiled by</term><term name="contributor" form="verb">with</term><term name="curator" form="verb">curated by</term><term name="executive-producer" form="verb">executive produced by</term><term name="guest" form="verb">with guest</term><term name="host" form="verb">hosted by</term><term name="narrator" form="verb">narrated by</term><term name="organizer" form="verb">organized by</term><term name="performer" form="verb">performed by</term><term name="producer" form="verb">produced by</term><term name="script-writer" form="verb">written by</term><term name="series-creator" form="verb">created by</term><term name="container-author" form="verb">von</term><term name="director" form="verb">Regie von</term><term name="editor" form="verb">herausgegeben von</term><term name="collection-editor" form="verb">herausgegeben von</term><term name="editorial-director" form="verb">herausgegeben von</term><term name="illustrator" form="verb">illustriert von</term><term name="interviewer" form="verb">interviewt von</term><term name="recipient" form="verb">an</term><term name="reviewed-author" form="verb">von</term><term name="translator" form="verb">\xFCbersetzt von</term><term name="editortranslator" form="verb">herausgegeben und \xFCbersetzt von</term>\n<!-- SHORT VERB ROLE FORMS --><term name="compiler" form="verb-short">comp. by</term><term name="contributor" form="verb-short">w.</term><term name="curator" form="verb-short">cur. by</term><term name="executive-producer" form="verb-short">exec. prod. by</term><term name="guest" form="verb-short">w. guest</term><term name="host" form="verb-short">hosted by</term><term name="narrator" form="verb-short">narr. by</term><term name="organizer" form="verb-short">org. by</term><term name="performer" form="verb-short">perf. by</term><term name="producer" form="verb-short">prod. by</term><term name="script-writer" form="verb-short">writ. by</term><term name="series-creator" form="verb-short">cre. by</term><term name="director" form="verb-short">Reg.</term><term name="editor" form="verb-short">hg. von</term><term name="collection-editor" form="verb-short">hg. von</term><term name="editorial-director" form="verb-short">hg. von</term><term name="illustrator" form="verb-short">illus. von</term><term name="translator" form="verb-short">\xFCbers. von</term><term name="editortranslator" form="verb-short">hg.&#160;&amp; \xFCbers. von</term>\n<!-- LONG MONTH FORMS --><term name="month-01">Januar</term><term name="month-02">Februar</term><term name="month-03">M\xE4rz</term><term name="month-04">April</term><term name="month-05">Mai</term><term name="month-06">Juni</term><term name="month-07">Juli</term><term name="month-08">August</term><term name="month-09">September</term><term name="month-10">Oktober</term><term name="month-11">November</term><term name="month-12">Dezember</term>\n<!-- SHORT MONTH FORMS --><term name="month-01" form="short">Jan.</term><term name="month-02" form="short">Feb.</term><term name="month-03" form="short">M\xE4rz</term><term name="month-04" form="short">Apr.</term><term name="month-05" form="short">Mai</term><term name="month-06" form="short">Juni</term><term name="month-07" form="short">Juli</term><term name="month-08" form="short">Aug.</term><term name="month-09" form="short">Sep.</term><term name="month-10" form="short">Okt.</term><term name="month-11" form="short">Nov.</term><term name="month-12" form="short">Dez.</term>\n<!-- SEASONS --><term name="season-01">Fr\xFChjahr</term><term name="season-02">Sommer</term><term name="season-03">Herbst</term><term name="season-04">Winter</term></terms>\n</locale>\n',
      "es-ES": '<?xml version="1.0" encoding="utf-8"?>\n<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="es-ES"><info><translator><name>javimat</name></translator><rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights><updated>2012-07-04T23:31:02+00:00</updated></info><style-options punctuation-in-quote="false"/><date form="text"><date-part name="day" suffix=" de "/><date-part name="month" suffix=" de "/><date-part name="year"/></date><date form="numeric"><date-part name="day" form="numeric-leading-zeros" suffix="/"/><date-part name="month" form="numeric-leading-zeros" suffix="/"/><date-part name="year"/></date><terms><term name="advance-online-publication">advance online publication</term><term name="album">album</term><term name="audio-recording">audio recording</term><term name="film">film</term><term name="henceforth">henceforth</term><term name="loc-cit">loc. cit.</term> <!-- like ibid., the abbreviated form is the regular form  --><term name="no-place">no place</term><term name="no-place" form="short">n.p.</term><term name="no-publisher">no publisher</term> <!-- sine nomine --><term name="no-publisher" form="short">n.p.</term><term name="on">on</term><term name="op-cit">op. cit.</term> <!-- like ibid., the abbreviated form is the regular form  --><term name="original-work-published">original work published</term><term name="personal-communication">comunicaci\xF3n personal</term><term name="podcast">podcast</term><term name="podcast-episode">podcast episode</term><term name="preprint">preprint</term><term name="radio-broadcast">radio broadcast</term><term name="radio-series">radio series</term><term name="radio-series-episode">radio series episode</term><term name="special-issue">special issue</term><term name="special-section">special section</term><term name="television-broadcast">television broadcast</term><term name="television-series">television series</term><term name="television-series-episode">television series episode</term><term name="video">video</term><term name="working-paper">working paper</term><term name="accessed">accedido</term><term name="and">y</term><term name="and others">y otros</term><term name="anonymous">an\xF3nimo</term><term name="anonymous" form="short">an\xF3n.</term><term name="at">en</term><term name="available at">disponible en</term><term name="by">de</term><term name="circa">circa</term><term name="circa" form="short">c.</term><term name="cited">citado</term><term name="edition"><single>edici\xF3n</single><multiple>ediciones</multiple></term><term name="edition" form="short">ed.</term><term name="et-al">et&#160;al.</term><term name="forthcoming">previsto</term><term name="from">a partir de</term><term name="ibid">ibid.</term><term name="in">en</term><term name="in press">en imprenta</term><term name="internet">internet</term><term name="interview">entrevista</term><term name="letter">carta</term><term name="no date">sin fecha</term><term name="no date" form="short">s.&#160;f.</term><term name="online">en l\xEDnea</term><term name="presented at">presentado en</term><term name="reference"><single>referencia</single><multiple>referencias</multiple></term><term name="reference" form="short"><single>ref.</single><multiple>refs.</multiple></term><term name="retrieved">recuperado</term><term name="scale">escala</term><term name="version">versi\xF3n</term>\n<!-- LONG ITEM TYPE FORMS --><term name="article">preprint</term><term name="article-journal">journal article</term><term name="article-magazine">magazine article</term><term name="article-newspaper">newspaper article</term><term name="bill">bill</term><term name="book">book</term><term name="broadcast">broadcast</term><term name="chapter">book chapter</term><term name="classic">classic</term><term name="collection">collection</term><term name="dataset">dataset</term><term name="document">document</term><term name="entry">entry</term><term name="entry-dictionary">dictionary entry</term><term name="entry-encyclopedia">encyclopedia entry</term><term name="event">event</term><!-- figure is in the list of locator terms --><term name="graphic">graphic</term><term name="hearing">hearing</term><term name="interview">interview</term><term name="legal_case">legal case</term><term name="legislation">legislation</term><term name="manuscript">manuscript</term><term name="map">map</term><term name="motion_picture">video recording</term><term name="musical_score">musical score</term><term name="pamphlet">pamphlet</term><term name="paper-conference">conference paper</term><term name="patent">patent</term><term name="performance">performance</term><term name="periodical">periodical</term><term name="personal_communication">comunicaci\xF3n personal</term><term name="post">post</term><term name="post-weblog">blog post</term><term name="regulation">regulation</term><term name="report">report</term><term name="review">review</term><term name="review-book">book review</term><term name="software">software</term><term name="song">audio recording</term><term name="speech">presentation</term><term name="standard">standard</term><term name="thesis">thesis</term><term name="treaty">treaty</term><term name="webpage">webpage</term>\n<!-- SHORT ITEM TYPE FORMS --><term name="article-journal" form="short">journal art.</term><term name="article-magazine" form="short">mag. art.</term><term name="article-newspaper" form="short">newspaper art.</term><term name="book" form="short">bk.</term><term name="chapter" form="short">bk. chap.</term><term name="document" form="short">doc.</term><!-- figure is in the list of locator terms --><term name="graphic" form="short">graph.</term><term name="interview" form="short">interv.</term><term name="manuscript" form="short">MS</term><term name="motion_picture" form="short">video rec.</term><term name="report" form="short">rep.</term><term name="review" form="short">rev.</term><term name="review-book" form="short">bk. rev.</term><term name="song" form="short">audio rec.</term>\n<!-- HISTORICAL ERA TERMS --><term name="ad">d.&#160;C.</term><term name="bc">a.&#160;C.</term><term name="bce">BCE</term><term name="ce">CE</term>\n<!-- PUNCTUATION --><term name="open-quote">\xAB</term><term name="close-quote">\xBB</term><term name="open-inner-quote">\u201C</term><term name="close-inner-quote">\u201D</term><term name="page-range-delimiter">-</term><term name="colon">:</term><term name="comma">,</term><term name="semicolon">;</term>\n<!-- ORDINALS --><term name="ordinal">.\xAA</term>\n<!-- LONG ORDINALS --><term name="long-ordinal-01">primera</term><term name="long-ordinal-02">segunda</term><term name="long-ordinal-03">tercera</term><term name="long-ordinal-04">cuarta</term><term name="long-ordinal-05">quinta</term><term name="long-ordinal-06">sexta</term><term name="long-ordinal-07">s\xE9ptima</term><term name="long-ordinal-08">octava</term><term name="long-ordinal-09">novena</term><term name="long-ordinal-10">d\xE9cima</term>\n<!-- LONG LOCATOR FORMS --><term name="act">			 <single>act</single><multiple>acts</multiple>						 </term><term name="appendix">			 <single>appendix</single><multiple>appendices</multiple>						 </term><term name="article-locator">			 <single>article</single><multiple>articles</multiple>						 </term><term name="canon">			 <single>canon</single><multiple>canons</multiple>						 </term><term name="elocation">			 <single>location</single><multiple>locations</multiple>						 </term><term name="equation">			 <single>equation</single><multiple>equations</multiple>						 </term><term name="rule">			 <single>rule</single><multiple>rules</multiple>						 </term><term name="scene">			 <single>scene</single><multiple>scenes</multiple>						 </term><term name="table">			 <single>table</single><multiple>tables</multiple>						 </term><term name="timestamp"> <!-- generally blank --><single></single><multiple></multiple>						 </term><term name="title-locator">			 <single>title</single><multiple>titles</multiple>						 </term><term name="book"><single>libro</single><multiple>libros</multiple></term><term name="chapter"><single>cap\xEDtulo</single><multiple>cap\xEDtulos</multiple></term><term name="column"><single>columna</single><multiple>columnas</multiple></term><term name="figure"><single>figura</single><multiple>figuras</multiple></term><term name="folio"><single>folio</single><multiple>folios</multiple></term><term name="issue"><single>n\xFAmero</single><multiple>n\xFAmeros</multiple></term><term name="line"><single>l\xEDnea</single><multiple>l\xEDneas</multiple></term><term name="note"><single>nota</single><multiple>notas</multiple></term><term name="opus"><single>opus</single><multiple>opera</multiple></term><term name="page"><single>p\xE1gina</single><multiple>p\xE1ginas</multiple></term><term name="number-of-pages"><single>p\xE1gina</single><multiple>p\xE1ginas</multiple></term><term name="paragraph"><single>p\xE1rrafo</single><multiple>p\xE1rrafos</multiple></term><term name="part"><single>parte</single><multiple>partes</multiple></term><term name="section"><single>secci\xF3n</single><multiple>secciones</multiple></term><term name="sub-verbo"><single>sub voce</single><multiple>sub vocibus</multiple></term><term name="verse"><single>verso</single><multiple>versos</multiple></term><term name="volume"><single>volumen</single><multiple>vol\xFAmenes</multiple></term>\n<!-- SHORT LOCATOR FORMS --><term name="appendix">			 <single>app.</single><multiple>apps.</multiple>						 </term><term name="article-locator">			 <single>art.</single><multiple>arts.</multiple></term><term name="elocation">			 <single>loc.</single><multiple>locs.</multiple></term><term name="equation">			 <single>eq.</single><multiple>eqs.</multiple></term><term name="rule">			 <single>r.</single><multiple>rr.</multiple>						 </term><term name="scene">			 <single>sc.</single><multiple>scs.</multiple>						 </term><term name="table">			 <single>tbl.</single><multiple>tbls.</multiple>						 </term><term name="timestamp"> <!-- generally blank --><single></single><multiple></multiple>						 </term><term name="title-locator">			 <single>tit.</single><multiple>tits.</multiple></term><term name="book" form="short">lib.</term><term name="chapter" form="short">cap.</term><term name="column" form="short">col.</term><term name="figure" form="short">fig.</term><term name="folio" form="short">f.</term><term name="issue" form="short">n.\xBA</term><term name="line" form="short">l.</term><term name="note" form="short">n.</term><term name="opus" form="short">op.</term><term name="page" form="short"><single>p.</single><multiple>pp.</multiple></term><term name="number-of-pages" form="short"><single>p.</single><multiple>pp.</multiple></term><term name="paragraph" form="short">p\xE1rr.</term><term name="part" form="short">pt.</term><term name="section" form="short">sec.</term><term name="sub-verbo" form="short"><single>s.&#160;v.</single><multiple>s.&#160;vv.</multiple></term><term name="verse" form="short"><single>v.</single><multiple>vv.</multiple></term><term name="volume" form="short"><single>vol.</single><multiple>vols.</multiple></term>\n<!-- SYMBOL LOCATOR FORMS --><term name="paragraph" form="symbol"><single>\xA7</single><multiple>\xA7</multiple></term><term name="section" form="symbol"><single>\xA7</single><multiple>\xA7</multiple></term>\n<!-- LONG ROLE FORMS --><term name="chair"><single>chair</single><multiple>chairs</multiple></term><term name="compiler"><single>compiler</single><multiple>compilers</multiple></term><term name="contributor"><single>contributor</single><multiple>contributors</multiple></term><term name="curator"><single>curator</single><multiple>curators</multiple></term><term name="executive-producer"><single>executive producer</single><multiple>executive producers</multiple></term><term name="guest"><single>guest</single><multiple>guests</multiple></term><term name="host"><single>host</single><multiple>hosts</multiple></term><term name="narrator"><single>narrator</single><multiple>narrators</multiple></term><term name="organizer"><single>organizer</single><multiple>organizers</multiple></term><term name="performer"><single>performer</single><multiple>performers</multiple></term><term name="producer"><single>producer</single><multiple>producers</multiple></term><term name="script-writer"><single>writer</single><multiple>writers</multiple></term><term name="series-creator"><single>series creator</single><multiple>series creators</multiple></term><term name="director"><single>director</single><multiple>directores</multiple></term><term name="editor"><single>editor</single><multiple>editores</multiple></term><term name="editorial-director"><single>editor</single><multiple>editores</multiple></term><term name="illustrator"><single>ilustrador</single><multiple>ilustradores</multiple></term><term name="translator"><single>traductor</single><multiple>traductores</multiple></term><term name="editortranslator"><single>editor y traductor</single><multiple>editores y traductores</multiple></term>\n<!-- SHORT ROLE FORMS --><term name="compiler" form="short"><single>comp.</single><multiple>comps.</multiple></term><term name="contributor" form="short"><single>contrib.</single><multiple>contribs.</multiple></term><term name="curator" form="short"><single>cur.</single><multiple>curs.</multiple></term><term name="executive-producer" form="short"><single>exec. prod.</single><multiple>exec. prods.</multiple></term><term name="narrator" form="short"><single>narr.</single><multiple>narrs.</multiple></term><term name="organizer" form="short"><single>org.</single><multiple>orgs.</multiple></term><term name="performer" form="short"><single>perf.</single><multiple>perfs.</multiple></term><term name="producer" form="short"><single>prod.</single><multiple>prods.</multiple></term><term name="script-writer" form="short"><single>writ.</single><multiple>writs.</multiple></term><term name="series-creator" form="short"><single>cre.</single><multiple>cres.</multiple></term><term name="director" form="short"><single>dir.</single><multiple>dirs.</multiple></term><term name="editor" form="short"><single>ed.</single><multiple>eds.</multiple></term><term name="editorial-director" form="short"><single>ed.</single><multiple>eds.</multiple></term><term name="illustrator" form="short"><single>ilust.</single><multiple>ilusts.</multiple></term><term name="translator" form="short"><single>trad.</single><multiple>trads.</multiple></term><term name="editortranslator" form="short"><single>ed. y trad.</single><multiple>eds. y trads.</multiple></term>\n<!-- VERB ROLE FORMS --><term name="chair" form="verb">chaired by</term><term name="compiler" form="verb">compiled by</term><term name="contributor" form="verb">with</term><term name="curator" form="verb">curated by</term><term name="executive-producer" form="verb">executive produced by</term><term name="guest" form="verb">with guest</term><term name="host" form="verb">hosted by</term><term name="narrator" form="verb">narrated by</term><term name="organizer" form="verb">organized by</term><term name="performer" form="verb">performed by</term><term name="producer" form="verb">produced by</term><term name="script-writer" form="verb">written by</term><term name="series-creator" form="verb">created by</term><term name="container-author" form="verb">de</term><term name="director" form="verb">dirigido por</term><term name="editor" form="verb">editado por</term><term name="editorial-director" form="verb">editado por</term><term name="illustrator" form="verb">ilustrado por</term><term name="interviewer" form="verb">entrevistado por</term><term name="recipient" form="verb">a</term><term name="reviewed-author" form="verb">por</term><term name="translator" form="verb">traducido por</term><term name="editortranslator" form="verb">editado y traducido por</term>\n<!-- SHORT VERB ROLE FORMS --><term name="compiler" form="verb-short">comp. by</term><term name="contributor" form="verb-short">w.</term><term name="curator" form="verb-short">cur. by</term><term name="executive-producer" form="verb-short">exec. prod. by</term><term name="guest" form="verb-short">w. guest</term><term name="host" form="verb-short">hosted by</term><term name="narrator" form="verb-short">narr. by</term><term name="organizer" form="verb-short">org. by</term><term name="performer" form="verb-short">perf. by</term><term name="producer" form="verb-short">prod. by</term><term name="script-writer" form="verb-short">writ. by</term><term name="series-creator" form="verb-short">cre. by</term><term name="director" form="verb-short">dir.</term><term name="editor" form="verb-short">ed.</term><term name="editorial-director" form="verb-short">ed.</term><term name="illustrator" form="verb-short">ilust.</term><term name="translator" form="verb-short">trad.</term><term name="editortranslator" form="verb-short">ed. y trad.</term>\n<!-- LONG MONTH FORMS --><term name="month-01">enero</term><term name="month-02">febrero</term><term name="month-03">marzo</term><term name="month-04">abril</term><term name="month-05">mayo</term><term name="month-06">junio</term><term name="month-07">julio</term><term name="month-08">agosto</term><term name="month-09">septiembre</term><term name="month-10">octubre</term><term name="month-11">noviembre</term><term name="month-12">diciembre</term>\n<!-- SHORT MONTH FORMS --><term name="month-01" form="short">ene.</term><term name="month-02" form="short">feb.</term><term name="month-03" form="short">mar.</term><term name="month-04" form="short">abr.</term><term name="month-05" form="short">may</term><term name="month-06" form="short">jun.</term><term name="month-07" form="short">jul.</term><term name="month-08" form="short">ago.</term><term name="month-09" form="short">sep.</term><term name="month-10" form="short">oct.</term><term name="month-11" form="short">nov.</term><term name="month-12" form="short">dic.</term>\n<!-- SEASONS --><term name="season-01">primavera</term><term name="season-02">verano</term><term name="season-03">oto\xF1o</term><term name="season-04">invierno</term></terms>\n</locale>\n'
    };
  }
});

// ../../node_modules/@citation-js/plugin-csl/lib/locales.js
var require_locales2 = __commonJS({
  "../../node_modules/@citation-js/plugin-csl/lib/locales.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.locales = exports2.default = void 0;
    var _core3 = require_lib6();
    var _locales2 = _interopRequireDefault3(require_locales());
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    var locales = exports2.locales = new _core3.util.Register(_locales2.default);
    var fetchLocale = (lang) => {
      if (locales.has(lang)) {
        return locales.get(lang);
      } else {
        return locales.get("en-US");
      }
    };
    var _default2 = exports2.default = fetchLocale;
  }
});

// ../../node_modules/@citation-js/plugin-csl/lib/styles.json
var require_styles = __commonJS({
  "../../node_modules/@citation-js/plugin-csl/lib/styles.json"(exports2, module2) {
    module2.exports = {
      apa: `<?xml version="1.0" encoding="utf-8"?>
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="never" page-range-format="expanded"><info><title>American Psychological Association 7th edition</title><title-short>APA</title-short><id>http://www.zotero.org/styles/apa</id><link href="http://www.zotero.org/styles/apa" rel="self"/><link href="http://www.zotero.org/styles/apa-6th-edition" rel="template"/><link href="https://apastyle.apa.org/style-grammar-guidelines/references/examples" rel="documentation"/><author><name>Brenton M. Wiernik</name><email>zotero@wiernik.org</email></author><category citation-format="author-date"/><category field="psychology"/><category field="generic-base"/><updated>2022-01-31T14:43:56+00:00</updated><rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights></info><locale xml:lang="en"><terms><term name="editortranslator" form="short"><single>ed. &amp; trans.</single><multiple>eds. &amp; trans.</multiple></term><term name="translator" form="short">trans.</term><term name="interviewer" form="short"><single>interviewer</single><multiple>interviewers</multiple></term><term name="collection-editor" form="short"><single>ed.</single><multiple>eds.</multiple></term><term name="circa" form="short">ca.</term><term name="bc"> B.C.E.</term><term name="ad"> C.E.</term><term name="letter">personal communication</term><term name="letter" form="short">letter</term><term name="issue" form="long"><single>issue</single><multiple>issues</multiple></term></terms></locale><locale xml:lang="af"><terms><term name="letter">persoonlike kommunikasie</term><term name="letter" form="short">brief</term></terms></locale><locale xml:lang="ar"><terms><term name="letter">\u0627\u062A\u0635\u0627\u0644 \u0634\u062E\u0635\u064A</term><term name="letter" form="short">\u062E\u0637\u0627\u0628</term></terms></locale><locale xml:lang="bg"><terms><term name="letter">\u043B\u0438\u0447\u043D\u0430 \u043A\u043E\u043C\u0443\u043D\u0438\u043A\u0430\u0446\u0438\u044F</term><term name="letter" form="short">\u043F\u0438\u0441\u043C\u043E</term></terms></locale><locale xml:lang="ca"><terms><term name="letter">comunicaci\xF3 personal</term><term name="letter" form="short">carta</term></terms></locale><locale xml:lang="cs"><terms><term name="letter">osobn\xED komunikace</term><term name="letter" form="short">dopis</term></terms></locale><locale xml:lang="cy"><terms><term name="letter">cyfathrebu personol</term><term name="letter" form="short">llythyr</term></terms></locale><locale xml:lang="da"><terms><term name="et-al">et al.</term><term name="letter">personlig kommunikation</term><term name="letter" form="short">brev</term></terms></locale><locale xml:lang="de"><terms><term name="et-al">et al.</term><term name="letter">pers\xF6nliche Kommunikation</term><term name="letter" form="short">Brief</term></terms></locale><locale xml:lang="el"><terms><term name="letter">\u03C0\u03C1\u03BF\u03C3\u03C9\u03C0\u03B9\u03BA\u03AE \u03B5\u03C0\u03B9\u03BA\u03BF\u03B9\u03BD\u03C9\u03BD\u03AF\u03B1</term><term name="letter" form="short">\u03B5\u03C0\u03B9\u03C3\u03C4\u03BF\u03BB\u03AE</term></terms></locale><locale xml:lang="es"><terms><term name="from">de</term><term name="letter">comunicaci\xF3n personal</term><term name="letter" form="short">carta</term></terms></locale><locale xml:lang="et"><terms><term name="letter">isiklik suhtlus</term><term name="letter" form="short">kiri</term></terms></locale><locale xml:lang="eu"><terms><term name="letter">komunikazio pertsonala</term><term name="letter" form="short">gutuna</term></terms></locale><locale xml:lang="fa"><terms><term name="letter">\u0627\u0631\u062A\u0628\u0627\u0637 \u0634\u062E\u0635\u06CC</term><term name="letter" form="short">\u0646\u0627\u0645\u0647</term></terms></locale><locale xml:lang="fi"><terms><term name="letter">henkil\xF6kohtainen viestint\xE4</term><term name="letter" form="short">kirje</term></terms></locale><locale xml:lang="fr"><terms><term name="letter">communication personnelle</term><term name="letter" form="short">lettre</term><term name="editor" form="short"><single>\xE9d.</single><multiple>\xE9ds.</multiple></term></terms></locale><locale xml:lang="he"><terms><term name="letter">\u05EA\u05E7\u05E9\u05D5\u05E8\u05EA \u05D0\u05D9\u05E9\u05D9\u05EA</term><term name="letter" form="short">\u05DE\u05DB\u05EA\u05D1</term></terms></locale><locale xml:lang="hr"><terms><term name="letter">osobna komunikacija</term><term name="letter" form="short">pismo</term></terms></locale><locale xml:lang="hu"><terms><term name="letter">szem\xE9lyes kommunik\xE1ci\xF3</term><term name="letter" form="short">lev\xE9l</term></terms></locale><locale xml:lang="id"><terms><term name="letter">komunikasi pribadi</term><term name="letter" form="short">surat</term></terms></locale><locale xml:lang="is"><terms><term name="letter">pers\xF3nuleg samskipti</term><term name="letter" form="short">br\xE9f</term></terms></locale><locale xml:lang="it"><terms><term name="letter">comunicazione personale</term><term name="letter" form="short">lettera</term></terms></locale><locale xml:lang="ja"><terms><term name="letter">\u500B\u4EBA\u7684\u306A\u3084\u308A\u53D6\u308A</term><term name="letter" form="short">\u624B\u7D19</term></terms></locale><locale xml:lang="ko"><terms><term name="letter">\uAC1C\uC778 \uC11C\uC2E0</term><term name="letter" form="short">\uD3B8\uC9C0</term></terms></locale><locale xml:lang="la"><terms><term name="letter"/><term name="letter" form="short">epistula</term></terms></locale><locale xml:lang="lt"><terms><term name="letter">communicationis personalis</term><term name="letter" form="short"/></terms></locale><locale xml:lang="lv"><terms><term name="letter">person\u012Bga komunik\u0101cija</term><term name="letter" form="short">v\u0113stule</term></terms></locale><locale xml:lang="mn"><terms><term name="letter">\u0445\u0443\u0432\u0438\u0439\u043D \u0445\u0430\u0440\u0438\u043B\u0446\u0430\u0430 \u0445\u043E\u043B\u0431\u043E\u043E</term><term name="letter" form="short">\u0437\u0430\u0445\u0438\u0430</term></terms></locale><locale xml:lang="nb"><terms><term name="et-al">et al.</term><term name="letter">personlig kommunikasjon</term><term name="letter" form="short">brev</term></terms></locale><locale xml:lang="nl"><terms><term name="et-al">et al.</term><term name="letter">persoonlijke communicatie</term><term name="letter" form="short">brief</term></terms></locale><locale xml:lang="nn"><terms><term name="et-al">et al.</term><term name="letter">personlig kommunikasjon</term><term name="letter" form="short">brev</term></terms></locale><locale xml:lang="pl"><terms><term name="letter">osobista komunikacja</term><term name="letter" form="short">list</term></terms></locale><locale xml:lang="pt"><terms><term name="letter">comunica\xE7\xE3o pessoal</term><term name="letter" form="short">carta</term></terms></locale><locale xml:lang="ro"><terms><term name="letter">comunicare personal\u0103</term><term name="letter" form="short">scrisoare</term></terms></locale><locale xml:lang="ru"><terms><term name="letter">\u043B\u0438\u0447\u043D\u0430\u044F \u043F\u0435\u0440\u0435\u043F\u0438\u0441\u043A\u0430</term><term name="letter" form="short">\u043F\u0438\u0441\u044C\u043C\u043E</term></terms></locale><locale xml:lang="sk"><terms><term name="letter">osobn\xE1 komunik\xE1cia</term><term name="letter" form="short">list</term></terms></locale><locale xml:lang="sl"><terms><term name="letter">osebna komunikacija</term><term name="letter" form="short">pismo</term></terms></locale><locale xml:lang="sr"><terms><term name="letter">\u043B\u0438\u0447\u043D\u0430 \u043A\u043E\u043C\u0443\u043D\u0438\u043A\u0430\u0446\u0438\u0458\u0430</term><term name="letter" form="short">\u043F\u0438\u0441\u043C\u043E</term></terms></locale><locale xml:lang="sv"><terms><term name="letter">personlig kommunikation</term><term name="letter" form="short">brev</term></terms></locale><locale xml:lang="th"><terms><term name="letter">\u0E01\u0E32\u0E23\u0E2A\u0E37\u0E48\u0E2D\u0E2A\u0E32\u0E23\u0E2A\u0E48\u0E27\u0E19\u0E1A\u0E38\u0E04\u0E04\u0E25</term><term name="letter" form="short">\u0E08\u0E14\u0E2B\u0E21\u0E32\u0E22</term></terms></locale><locale xml:lang="tr"><terms><term name="letter">ki\u015Fisel ileti\u015Fim</term><term name="letter" form="short">mektup</term></terms></locale><locale xml:lang="uk"><terms><term name="letter">\u043E\u0441\u043E\u0431\u0438\u0441\u0442\u0435 \u0441\u043F\u0456\u043B\u043A\u0443\u0432\u0430\u043D\u043D\u044F</term><term name="letter" form="short">\u043B\u0438\u0441\u0442</term></terms></locale><locale xml:lang="vi"><terms><term name="letter">giao ti\u1EBFp c\xE1 nh\xE2n</term><term name="letter" form="short">th\u01B0</term></terms></locale><locale xml:lang="zh-CN"><terms><term name="letter">\u7684\u79C1\u4EBA\u4EA4\u6D41</term><term name="letter" form="short">\u4FE1\u51FD</term></terms></locale><locale xml:lang="zh-TW"><terms><term name="letter">\u79C1\u4EBA\u901A\u8A0A</term><term name="letter" form="short">\u4FE1\u51FD</term></terms></locale><!-- General categories of item types:Periodical: article-journal article-magazine article-newspaper post-weblog review review-bookPeriodical or Booklike: paper-conferenceBooklike: article book broadcast chapter dataset entry entry-dictionary entry-encyclopedia figure graphic interview manuscript map motion_picture musical_score pamphlet patent personal_communication report song speech thesis post webpageLegal: bill legal_case legislation treaty--><!-- APA references contain four parts: author, date, title, source --><macro name="author-bib"><names variable="composer" delimiter=", "><name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/><substitute><names variable="author"/><names variable="illustrator"/><names variable="director"><name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/><label form="long" prefix=" (" suffix=")" text-case="title"/></names><choose><if variable="container-title"><choose><if type="book entry entry-dictionary entry-encyclopedia" match="any"><choose><if variable="title"><group delimiter=" "><text macro="title"/><text macro="parenthetical"/></group></if><else><text macro="title-and-descriptions"/></else></choose></if></choose></if></choose><!-- Test for editortranslator and put that first as that becomes available --><names variable="editor" delimiter=", "><name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/><label form="short" prefix=" (" suffix=")" text-case="title"/></names><names variable="editorial-director"><name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/><label form="short" prefix=" (" suffix=")" text-case="title"/></names><names variable="collection-editor"><name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/><label form="short" prefix=" (" suffix=")" text-case="title"/></names><choose><if variable="title"><group delimiter=" "><text macro="title"/><text macro="parenthetical"/></group></if><else><text macro="title-and-descriptions"/></else></choose></substitute></names></macro><macro name="author-intext"><choose><if type="bill legal_case legislation treaty" match="any"><text macro="title-intext"/></if><else-if type="interview personal_communication" match="any"><choose><!-- These variables indicate that the letter is retrievable by the reader. If not, then use the APA in-text-only personal communication format --><if variable="archive container-title DOI publisher URL" match="none"><group delimiter=", "><names variable="author"><name and="symbol" delimiter=", " initialize-with=". "/><substitute><text macro="title-intext"/></substitute></names><!-- Replace with term="personal-communication" if that becomes available --><text term="letter"/></group></if><else><names variable="author" delimiter=", "><name form="short" and="symbol" delimiter=", " initialize-with=". "/><substitute><text macro="title-intext"/></substitute></names></else></choose></else-if><else><names variable="composer" delimiter=", "><name form="short" and="symbol" delimiter=", " initialize-with=". "/><substitute><names variable="author"/><names variable="illustrator"/><names variable="director"/><choose><if variable="container-title"><choose><if type="book entry entry-dictionary entry-encyclopedia" match="any"><text macro="title-intext"/></if></choose></if></choose><names variable="editor"/><names variable="editorial-director"/><text macro="title-intext"/></substitute></names></else></choose></macro><macro name="date-bib"><group delimiter=" " prefix="(" suffix=")"><choose><if is-uncertain-date="issued"><text term="circa" form="short"/></if></choose><group><choose><if variable="issued"><date variable="issued"><date-part name="year"/></date><text variable="year-suffix"/><choose><if type="article-magazine article-newspaper broadcast interview motion_picture pamphlet personal_communication post post-weblog song speech webpage" match="any"><!-- Many video and audio examples in manual give full dates. Err on the side of too much information. --><date variable="issued"><date-part prefix=", " name="month"/><date-part prefix=" " name="day"/></date></if><else-if type="paper-conference"><!-- Capture 'speech' stored as 'paper-conference' --><choose><if variable="collection-editor editor editorial-director issue page volume" match="none"><date variable="issued"><date-part prefix=", " name="month"/><date-part prefix=" " name="day"/></date></if></choose></else-if><!-- Only year: article article-journal book chapter entry entry-dictionary entry-encyclopedia dataset figure graphic manuscript map musical_score paper-conference[published] patent report review review-book thesis --></choose></if><else-if variable="status"><group><text variable="status" text-case="lowercase"/><text variable="year-suffix" prefix="-"/></group></else-if><else><text term="no date" form="short"/><text variable="year-suffix" prefix="-"/></else></choose></group></group></macro><macro name="date-sort-group"><!-- APA sorts 1. no-date items, 2. items with dates, 3. in-press (status) items --><choose><if variable="issued"><text value="1"/></if><else-if variable="status"><text value="2"/></else-if><else><text value="0"/></else></choose></macro><macro name="date-sort-date"><date variable="issued" form="numeric"/></macro><macro name="date-intext"><choose><if variable="issued"><group delimiter="/"><group delimiter=" "><choose><if is-uncertain-date="original-date"><text term="circa" form="short"/></if></choose><date variable="original-date"><date-part name="year"/></date></group><group delimiter=" "><choose><if is-uncertain-date="issued"><text term="circa" form="short"/></if></choose><group><choose><if type="interview personal_communication" match="any"><choose><if variable="archive container-title DOI publisher URL" match="none"><!-- These variables indicate that the communication is retrievable by the reader. If not, then use the in-text-only personal communication format --><date variable="issued" form="text"/></if><else><date variable="issued"><date-part name="year"/></date></else></choose></if><else><date variable="issued"><date-part name="year"/></date></else></choose><text variable="year-suffix"/></group></group></group></if><else-if variable="status"><text variable="status" text-case="lowercase"/><text variable="year-suffix" prefix="-"/></else-if><else><text term="no date" form="short"/><text variable="year-suffix" prefix="-"/></else></choose></macro><!-- APA has two description elements following the title:title (parenthetical) [bracketed]  --><macro name="title-and-descriptions"><choose><if variable="title"><group delimiter=" "><text macro="title"/><text macro="parenthetical"/><text macro="bracketed"/></group></if><else><group delimiter=" "><text macro="bracketed"/><text macro="parenthetical"/></group></else></choose></macro><macro name="title"><choose><if type="post webpage" match="any"><!-- Webpages are always italicized --><text variable="title" font-style="italic"/></if><else-if variable="container-title" match="any"><!-- Other types are italicized based on presence of container-title.Assume that review and review-book are published in periodicals/blogs,not just on a web page (ex. 69) --><text variable="title"/></else-if><else><choose><if type="article-journal article-magazine article-newspaper post-weblog review review-book" match="any"><text variable="title" font-style="italic"/></if><else-if type="paper-conference"><choose><if variable="collection-editor editor editorial-director" match="any"><group delimiter=": " font-style="italic"><text variable="title"/><!-- Replace with volume-title as that becomes available --><choose><if is-numeric="volume" match="none"><group delimiter=" "><label variable="volume" form="short" text-case="capitalize-first"/><text variable="volume"/></group></if></choose></group></if><else><text variable="title" font-style="italic"/></else></choose></else-if><else><group delimiter=": " font-style="italic"><text variable="title"/><!-- Replace with volume-title as that becomes available --><choose><if is-numeric="volume" match="none"><group delimiter=" "><label variable="volume" form="short" text-case="capitalize-first"/><text variable="volume"/></group></if></choose></group></else></choose></else></choose></macro><macro name="title-intext"><choose><if variable="title" match="none"><text macro="bracketed-intext" prefix="[" suffix="]"/></if><else-if type="bill"><!-- If a bill has no number or container-title, assume it is a hearing; italic --><choose><if variable="number container-title" match="none"><text variable="title" form="short" font-style="italic" text-case="title"/></if><else-if variable="title"><text variable="title" form="short" text-case="title"/></else-if><else><group delimiter=" "><text variable="genre"/><group delimiter=" "><choose><if variable="chapter-number container-title" match="none"><!-- Replace with label variable="number" as that becomes available --><text term="issue" form="short"/></if></choose><text variable="number"/></group></group></else></choose></else-if><else-if type="legal_case" match="any"><!-- Cases are italicized --><text variable="title" font-style="italic"/></else-if><else-if type="legislation treaty" match="any"><!-- Legislation and treaties not italicized or quoted --><text variable="title" form="short" text-case="title"/></else-if><else-if type="post webpage" match="any"><!-- Webpages are always italicized --><text variable="title" form="short" font-style="italic" text-case="title"/></else-if><else-if variable="container-title" match="any"><!-- Other types are italicized or quoted based on presence of container-title. As in title macro. --><text variable="title" form="short" quotes="true" text-case="title"/></else-if><else><text variable="title" form="short" font-style="italic" text-case="title"/></else></choose></macro><macro name="parenthetical"><!-- (Secondary contributors; Database location; Genre no. 123; Report Series 123, Version, Edition, Volume, Page) --><group prefix="(" suffix=")"><choose><if type="patent"><!-- authority: U.S. ; genre: patent ; number: 123,445 --><group delimiter=" "><text variable="authority" form="short"/><choose><if variable="genre"><text variable="genre" text-case="capitalize-first"/></if><else><!-- This should be localized --><text value="patent" text-case="capitalize-first"/></else></choose><group delimiter=" "><!-- Replace with label variable="number" if that becomes available --><text term="issue" form="short" text-case="capitalize-first"/><text variable="number"/></group></group></if><else-if type="post webpage" match="any"><!-- For post webpage, container-title is treated as publisher --><group delimiter="; "><text macro="secondary-contributors"/><text macro="database-location"/><text macro="number"/><text macro="locators-booklike"/></group></else-if><else-if variable="container-title"><group delimiter="; "><text macro="secondary-contributors"/><choose><if type="broadcast graphic map motion_picture song" match="any"><!-- For audiovisual media, number information comes after title, not container-title --><text macro="number"/></if></choose></group></else-if><else><group delimiter="; "><text macro="secondary-contributors"/><text macro="database-location"/><text macro="number"/><text macro="locators-booklike"/></group></else></choose></group></macro><macro name="parenthetical-container"><choose><if variable="container-title" match="any"><group prefix="(" suffix=")"><group delimiter="; "><text macro="database-location"/><choose><if type="broadcast graphic map motion_picture song" match="none"><!-- For audiovisual media, number information comes after title, not container-title --><text macro="number"/></if></choose><text macro="locators-booklike"/></group></group></if></choose></macro><macro name="bracketed"><!-- [Descriptive information] --><!-- If there is a number, genre is already printed in macro="number" --><group prefix="[" suffix="]"><choose><if variable="reviewed-author reviewed-title" type="review review-book" match="any"><!-- Reviewed item --><group delimiter="; "><group delimiter=", "><group delimiter=" "><!-- Assume that genre is entered as 'Review of the book' or similar --><choose><if variable="number" match="none"><choose><if variable="genre"><text variable="genre" text-case="capitalize-first"/></if><else-if variable="medium"><text variable="medium" text-case="capitalize-first"/></else-if><else><!-- Replace with term="review" as that becomes available --><text value="Review of"/></else></choose></if><else><choose><if variable="medium"><text variable="medium" text-case="capitalize-first"/></if><else><!-- Replace with term="review" as that becomes available --><text value="Review of"/></else></choose></else></choose><text macro="reviewed-title"/></group><names variable="reviewed-author"><label form="verb-short" suffix=" "/><name and="symbol" initialize-with=". " delimiter=", "/></names></group><choose><if variable="genre" match="any"><choose><if variable="number" match="none"><text variable="medium" text-case="capitalize-first"/></if></choose></if></choose></group></if><else-if type="thesis"><!-- Thesis type and institution --><group delimiter="; "><choose><if variable="number" match="none"><group delimiter=", "><text variable="genre" text-case="capitalize-first"/><choose><if variable="archive DOI URL" match="any"><!-- Include the university in brackets if thesis is published --><text variable="publisher"/></if></choose></group></if></choose><text variable="medium" text-case="capitalize-first"/></group></else-if><else-if variable="interviewer" type="interview" match="any"><!-- Interview information --><choose><if variable="title"><text macro="format"/></if><else-if variable="genre"><group delimiter="; "><group delimiter=" "><text variable="genre" text-case="capitalize-first"/><group delimiter=" "><text term="author" form="verb"/><names variable="interviewer"><name and="symbol" initialize-with=". " delimiter=", "/></names></group></group></group></else-if><else-if variable="interviewer"><group delimiter="; "><names variable="interviewer"><label form="verb" suffix=" " text-case="capitalize-first"/><name and="symbol" initialize-with=". " delimiter=", "/></names><text variable="medium" text-case="capitalize-first"/></group></else-if><else><text macro="format"/></else></choose></else-if><else-if type="personal_communication"><!-- Letter information --><choose><if variable="recipient"><group delimiter="; "><group delimiter=" "><choose><if variable="number" match="none"><choose><if variable="genre"><text variable="genre" text-case="capitalize-first"/></if><else-if variable="medium"><text variable="medium" text-case="capitalize-first"/></else-if><else><text term="letter" form="short" text-case="capitalize-first"/></else></choose></if><else><choose><if variable="medium"><text variable="medium" text-case="capitalize-first"/></if><else><text term="letter" form="short" text-case="capitalize-first"/></else></choose></else></choose><names variable="recipient" delimiter=", "><label form="verb" suffix=" "/><name and="symbol" delimiter=", "/></names></group><choose><if variable="genre" match="any"><choose><if variable="number" match="none"><text variable="medium" text-case="capitalize-first"/></if></choose></if></choose></group></if><else><text macro="format"/></else></choose></else-if><else-if variable="composer" type="song" match="all"><!-- Performer of classical music works --><group delimiter="; "><choose><if variable="number" match="none"><group delimiter=" "><choose><if variable="genre"><text variable="genre" text-case="capitalize-first"/><!-- Replace prefix with performer label as that becomes available --><names variable="author" prefix="recorded by "><name and="symbol" initialize-with=". " delimiter=", "/></names></if><else-if variable="medium"><text variable="medium" text-case="capitalize-first"/><!-- Replace prefix with performer label as that becomes available --><names variable="author" prefix="recorded by "><name and="symbol" initialize-with=". " delimiter=", "/></names></else-if><else><!-- Replace prefix with performer label as that becomes available --><names variable="author" prefix="Recorded by "><name and="symbol" initialize-with=". " delimiter=", "/></names></else></choose></group></if><else><group delimiter=" "><choose><if variable="medium"><text variable="medium" text-case="capitalize-first"/><!-- Replace prefix with performer label as that becomes available --><names variable="author" prefix="recorded by "><name and="symbol" initialize-with=". " delimiter=", "/></names></if><else><!-- Replace prefix with performer label as that becomes available --><names variable="author" prefix="Recorded by "><name and="symbol" initialize-with=". " delimiter=", "/></names></else></choose></group></else></choose><choose><if variable="genre" match="any"><choose><if variable="number" match="none"><text variable="medium" text-case="capitalize-first"/></if></choose></if></choose></group></else-if><else-if variable="container-title" match="none"><!-- Other description --><text macro="format"/></else-if><else><!-- For conference presentations, chapters in reports, software, place bracketed after the container title --><choose><if type="paper-conference speech" match="any"><choose><if variable="collection-editor editor editorial-director issue page volume" match="any"><text macro="format"/></if></choose></if><else-if type="book"><choose><if variable="version" match="none"><text macro="format"/></if></choose></else-if><else-if type="report" match="none"><text macro="format"/></else-if></choose></else></choose></group></macro><macro name="bracketed-intext"><group prefix="[" suffix="]"><choose><if variable="reviewed-author reviewed-title" type="review review-book" match="any"><!-- This should be localized --><text macro="reviewed-title-intext" prefix="Review of "/></if><else-if variable="interviewer" type="interview" match="any"><names variable="interviewer"><label form="verb" suffix=" " text-case="capitalize-first"/><name and="symbol" initialize-with=". " delimiter=", "/><substitute><text macro="format-intext"/></substitute></names></else-if><else-if type="personal_communication"><!-- Letter information --><choose><if variable="recipient"><group delimiter=" "><choose><if variable="number" match="none"><text variable="genre" text-case="capitalize-first"/></if><else><text term="letter" form="short" text-case="capitalize-first"/></else></choose><names variable="recipient" delimiter=", "><label form="verb" suffix=" "/><name and="symbol" delimiter=", "/></names></group></if><else><text macro="format-intext"/></else></choose></else-if><else><text macro="format-intext"/></else></choose></group></macro><macro name="bracketed-container"><group prefix="[" suffix="]"><choose><if type="paper-conference speech" match="any"><!-- Conference presentations should describe the session [container] in bracketed unless published in a proceedings --><choose><if variable="collection-editor editor editorial-director issue page volume" match="none"><text macro="format"/></if></choose></if><else-if type="book" variable="version" match="all"><!-- For entries in mobile app reference works, place bracketed after the container-title --><text macro="format"/></else-if><else-if type="report"><!-- For chapters in reports, place bracketed after the container title --><text macro="format"/></else-if></choose></group></macro><macro name="secondary-contributors"><choose><if type="article-journal article-magazine article-newspaper post-weblog review review-book" match="any"><text macro="secondary-contributors-periodical"/></if><else-if type="paper-conference"><choose><if variable="collection-editor editor editorial-director" match="any"><text macro="secondary-contributors-booklike"/></if><else><text macro="secondary-contributors-periodical"/></else></choose></else-if><else><text macro="secondary-contributors-booklike"/></else></choose></macro><macro name="secondary-contributors-periodical"><group delimiter="; "><choose><if variable="title"><names variable="interviewer" delimiter="; "><name and="symbol" initialize-with=". " delimiter=", "/><label form="short" prefix=", " text-case="title"/></names></if></choose><names variable="translator" delimiter="; "><name and="symbol" initialize-with=". " delimiter=", "/><label form="short" prefix=", " text-case="title"/></names></group></macro><macro name="secondary-contributors-booklike"><group delimiter="; "><choose><if variable="title"><names variable="interviewer"><name and="symbol" initialize-with=". " delimiter=", "/><label form="short" prefix=", " text-case="title"/></names></if></choose><!-- When editortranslator becomes available, add a test: variable="editortranslator" match="none"; then print translator --><choose><if type="post webpage" match="none"><!-- Webpages treat container-title like publisher --><choose><if variable="container-title" match="none"><group delimiter="; "><names variable="container-author"><label form="verb-short" suffix=" " text-case="title"/><name and="symbol" initialize-with=". " delimiter=", "/></names><names variable="editor translator" delimiter="; "><name and="symbol" initialize-with=". " delimiter=", "/><label form="short" prefix=", " text-case="title"/></names></group></if></choose></if><else><group delimiter="; "><names variable="container-author"><label form="verb-short" suffix=" " text-case="title"/><name and="symbol" initialize-with=". " delimiter=", "/></names><names variable="editor translator" delimiter="; "><name and="symbol" initialize-with=". " delimiter=", "/><label form="short" prefix=", " text-case="title"/></names></group></else></choose></group></macro><macro name="database-location"><choose><if variable="archive-place" match="none"><!-- With \`archive-place\`: physical archives. Without: online archives. --><!-- Add archive_collection as that becomes available --><text variable="archive_location"/></if></choose></macro><macro name="number"><choose><if variable="number"><group delimiter=", "><group delimiter=" "><text variable="genre" text-case="title"/><choose><if is-numeric="number"><!-- Replace with label variable="number" if that becomes available --><text term="issue" form="short" text-case="capitalize-first"/><text variable="number"/></if><else><text variable="number"/></else></choose></group><choose><if type="thesis"><choose><!-- Include the university in brackets if thesis is published --><if variable="archive DOI URL" match="any"><text variable="publisher"/></if></choose></if></choose></group></if></choose></macro><macro name="locators-booklike"><choose><if type="article-journal article-magazine article-newspaper broadcast interview patent post post-weblog review review-book speech webpage" match="any"/><else-if type="paper-conference"><choose><if variable="collection-editor editor editorial-director" match="any"><group delimiter=", "><text macro="version"/><text macro="edition"/><text macro="volume-booklike"/></group></if></choose></else-if><else><group delimiter=", "><text macro="version"/><text macro="edition"/><text macro="volume-booklike"/></group></else></choose></macro><macro name="version"><choose><if is-numeric="version"><group delimiter=" "><!-- replace with label variable="version" if that becomes available --><text term="version" text-case="capitalize-first"/><text variable="version"/></group></if><else><text variable="version"/></else></choose></macro><macro name="edition"><choose><if is-numeric="edition"><group delimiter=" "><number variable="edition" form="ordinal"/><label variable="edition" form="short"/></group></if><else><text variable="edition"/></else></choose></macro><macro name="volume-booklike"><group delimiter=", "><!-- Report series [ex. 52] --><choose><if type="report"><group delimiter=" "><text variable="collection-title" text-case="title"/><text variable="collection-number"/></group></if></choose><choose><if variable="volume" match="any"><choose><!-- Non-numeric volumes are already printed as part of the book title --><if is-numeric="volume" match="none"/><else><group delimiter=" "><label variable="volume" form="short" text-case="capitalize-first"/><number variable="volume" form="numeric"/></group></else></choose></if><else><group><!-- Replace with label variable="number-of-volumes" if that becomes available --><text term="volume" form="short" text-case="capitalize-first" suffix=" "/><text term="page-range-delimiter" prefix="1"/><number variable="number-of-volumes" form="numeric"/></group></else></choose><group delimiter=" "><label variable="issue" text-case="capitalize-first"/><text variable="issue"/></group><group delimiter=" "><label variable="page" form="short" suffix=" "/><text variable="page"/></group></group></macro><macro name="reviewed-title"><choose><if variable="reviewed-title"><!-- Not possible to distinguish TV series episode from other reviewed works [Ex. 69] --><text variable="reviewed-title" font-style="italic"/></if><else><!-- Assume title is title of reviewed work --><text variable="title" font-style="italic"/></else></choose></macro><macro name="reviewed-title-intext"><choose><if variable="reviewed-title"><!-- Not possible to distinguish TV series episode from other reviewed works [Ex. 69] --><text variable="reviewed-title" form="short" font-style="italic" text-case="title"/></if><else><!-- Assume title is title of reviewed work --><text variable="title" form="short" font-style="italic" text-case="title"/></else></choose></macro><macro name="format"><choose><if variable="genre medium" match="any"><group delimiter="; "><choose><if variable="number" match="none"><text variable="genre" text-case="capitalize-first"/></if></choose><text variable="medium" text-case="capitalize-first"/></group></if><!-- Generic labels for specific types --><!-- These should be localized when possible --><else-if type="dataset"><text value="Data set"/></else-if><else-if type="book" variable="version" match="all"><!-- Replace with type="software" and term="software" as that becomes available --><text value="Computer software"/></else-if><else-if type="interview personal_communication" match="any"><choose><if variable="archive container-title DOI publisher URL" match="none"><text term="letter" text-case="capitalize-first"/></if><else-if type="interview"><text term="interview" text-case="capitalize-first"/></else-if></choose></else-if><else-if type="map"><text value="Map"/></else-if></choose></macro><macro name="format-intext"><choose><if variable="genre" match="any"><text variable="genre" text-case="capitalize-first"/></if><else-if variable="medium"><text variable="medium" text-case="capitalize-first"/></else-if><!-- Generic labels for specific types --><!-- These should be localized when possible --><else-if type="dataset"><text value="Data set"/></else-if><else-if type="book" variable="version" match="all"><!-- Replace with type="software" and term="software" as that becomes available --><text value="Computer software"/></else-if><else-if type="interview personal_communication" match="any"><choose><if variable="archive container-title DOI publisher URL" match="none"><text term="letter" text-case="capitalize-first"/></if><else-if type="interview"><text term="interview" text-case="capitalize-first"/></else-if></choose></else-if><else-if type="map"><text value="Map"/></else-if></choose></macro><!-- APA 'source' element contains four parts:container, event, publisher, access --><macro name="container"><choose><if type="article-journal article-magazine article-newspaper post-weblog review review-book" match="any"><!-- Periodical items --><text macro="container-periodical"/></if><else-if type="paper-conference"><!-- Determine if paper-conference is a periodical or booklike --><choose><if variable="editor editorial-director collection-editor container-author" match="any"><text macro="container-booklike"/></if><else><text macro="container-periodical"/></else></choose></else-if><else-if type="post webpage" match="none"><!-- post and webpage treat container-title like publisher --><text macro="container-booklike"/></else-if></choose></macro><macro name="container-periodical"><group delimiter=". "><group delimiter=", "><text variable="container-title" font-style="italic" text-case="title"/><choose><if variable="volume"><group><text variable="volume" font-style="italic"/><text variable="issue" prefix="(" suffix=")"/></group></if><else><text variable="issue" font-style="italic"/></else></choose><choose><if variable="page"><text variable="page"/></if><else><!-- Ex. 6: Journal article with article number or eLocator --><!-- This should be localized --><text variable="number" prefix="Article "/></else></choose></group><choose><if variable="issued"><choose><if variable="issue page volume" match="none"><text variable="status" text-case="capitalize-first"/></if></choose></if></choose></group></macro><macro name="container-booklike"><choose><if variable="container-title" match="any"><group delimiter=" "><text term="in" text-case="capitalize-first"/><group delimiter=", "><names variable="editor translator" delimiter=", &amp; "><!-- Change to editortranslator and move editor to substitute as that becomes available --><name and="symbol" initialize-with=". " delimiter=", "/><label form="short" text-case="title" prefix=" (" suffix=")"/><substitute><names variable="editorial-director"/><names variable="collection-editor"/><names variable="container-author"/></substitute></names><group delimiter=": " font-style="italic"><text variable="container-title"/><!-- Replace with volume-title as that becomes available --><choose><if is-numeric="volume" match="none"><group delimiter=" "><label variable="volume" form="short" text-case="capitalize-first"/><text variable="volume"/></group></if></choose></group></group><text macro="parenthetical-container"/><text macro="bracketed-container"/></group></if></choose></macro><macro name="publisher"><group delimiter="; "><choose><if type="thesis"><choose><if variable="archive DOI URL" match="none"><text variable="publisher"/></if></choose></if><else-if type="post webpage" match="any"><!-- For websites, treat container title like publisher --><group delimiter="; "><text variable="container-title" text-case="title"/><text variable="publisher"/></group></else-if><else-if type="paper-conference"><!-- For paper-conference, don't print publisher if in a journal-like proceedings --><choose><if variable="collection-editor editor editorial-director" match="any"><text variable="publisher"/></if></choose></else-if><else-if type="article-journal article-magazine article-newspaper post-weblog" match="none"><text variable="publisher"/></else-if></choose><group delimiter=", "><choose><if variable="archive-place"><!-- With \`archive-place\`: physical archives. Without: online archives. --><!-- For physical archives, print the location before the archive name.For electronic archives, these are printed in macro="description". --><!-- Split "archive_location" into "archive_collection" and "archive_location" as that becomes available --><!-- Must test for archive_collection:With collection: archive_collection (archive_location), archive, archive-placeNo collection: archive (archive_location), archive-place--><text variable="archive_location"/></if></choose><text variable="archive"/><text variable="archive-place"/></group></group></macro><macro name="access"><choose><if variable="DOI" match="any"><text variable="DOI" prefix="https://doi.org/"/></if><else-if variable="URL"><group delimiter=" "><choose><if variable="issued status" match="none"><group delimiter=" "><text term="retrieved" text-case="capitalize-first"/><date variable="accessed" form="text" suffix=","/><text term="from"/></group></if></choose><text variable="URL"/></group></else-if></choose></macro><macro name="event"><choose><if variable="event"><!-- To prevent Zotero from printing event-place due to its double-mapping of all 'place' toboth publisher-place and event-place. Remove this 'choose' when that is changed. --><choose><if variable="collection-editor editor editorial-director issue page volume" match="none"><!-- Don't print event info if published in a proceedings --><group delimiter=", "><text variable="event"/><text variable="event-place"/></group></if></choose></if></choose></macro><!-- After 'source', APA also prints publication history (original publication, reprint info, retraction info) --><macro name="publication-history"><choose><if type="patent" match="none"><group prefix="(" suffix=")"><choose><if variable="references"><!-- This provides the option for more elaborate description of publication history, such as full "reprinted" references(examples 11, 43, 44) or retracted references --><text variable="references"/></if><else><group delimiter=" "><text value="Original work published"/><choose><if is-uncertain-date="original-date"><text term="circa" form="short"/></if></choose><date variable="original-date"><date-part name="year"/></date></group></else></choose></group></if><else><text variable="references" prefix="(" suffix=")"/></else></choose></macro><!-- Legal citations have their own rules --><macro name="legal-cites"><choose><if type="legal_case"><group delimiter=". "><group delimiter=", "><text variable="title"/><group delimiter=" "><text macro="container-legal"/><text macro="date-legal"/></group><text variable="references"/></group><text macro="access"/></group></if><else-if type="bill"><!-- Currently designed to handle bills, resolutions, hearings, rederal reports. --><group delimiter=". "><group delimiter=", "><choose><if variable="number container-title" match="none"><!-- If no number or container-title, then assume it is a hearing --><text variable="title" font-style="italic"/></if><else><text variable="title"/></else></choose><group delimiter=" "><text macro="container-legal"/><text macro="date-legal"/><choose><if variable="number container-title" match="none"><!-- If no number or container-title, then assume it is a hearing --><names variable="author" prefix="(testimony of " suffix=")"><name and="symbol" delimiter=", "/></names></if><else><text variable="status" prefix="(" suffix=")"/></else></choose></group><text variable="references"/></group><text macro="access"/></group></else-if><else-if type="legislation"><!-- Currently designed to handle statutes, codified regulations, executive orders.For uncodified regulations, assume future code section is in status. --><group delimiter=". "><group delimiter=", "><text variable="title"/><group delimiter=" "><text macro="container-legal"/><text macro="date-legal"/><text variable="status" prefix="(" suffix=")"/></group><text variable="references"/></group><text macro="access"/></group></else-if><else-if type="treaty"><!-- APA generally defers to Bluebook for legal citations, but diverges withoutexplanation for treaty items. The Bluebook format that was used in APA 6thed. is used here. --><group delimiter=", "><text variable="title" text-case="title"/><names variable="author"><name initialize-with="." form="short" delimiter="-"/></names><text macro="date-legal"/><text macro="container-legal"/><text macro="access"/></group></else-if></choose></macro><macro name="date-legal"><choose><if type="legal_case"><group prefix="(" suffix=")" delimiter=" "><text variable="authority"/><choose><if variable="container-title" match="any"><!-- Print only year for cases published in reporters--><date variable="issued" form="numeric" date-parts="year"/></if><else><date variable="issued" form="text"/></else></choose></group></if><else-if type="bill legislation" match="any"><group prefix="(" suffix=")" delimiter=" "><group delimiter=" "><date variable="original-date"><date-part name="year"/></date><text term="and" form="symbol"/></group><date variable="issued"><date-part name="year"/></date></group></else-if><else-if type="treaty"><date variable="issued" form="text"/></else-if></choose></macro><macro name="container-legal"><!-- Expect legal item container-titles to be stored in short form --><choose><if type="legal_case"><group delimiter=" "><choose><if variable="container-title"><group delimiter=" "><text variable="volume"/><text variable="container-title"/><group delimiter=" "><!-- Change to label variable="section" as that becomes available --><text term="section" form="symbol"/><text variable="section"/></group><choose><if variable="page page-first" match="any"><text variable="page-first"/></if><else><text value="___"/></else></choose></group></if><else><group delimiter=" "><choose><if is-numeric="number"><!-- Replace with label variable="number" if that becomes available --><text term="issue" form="short" text-case="capitalize-first"/></if></choose><text variable="number"/></group></else></choose></group></if><else-if type="bill"><group delimiter=", "><group delimiter=" "><text variable="genre"/><group delimiter=" "><choose><if variable="chapter-number container-title" match="none"><!-- Replace with label variable="number" as that becomes available --><text term="issue" form="short"/></if></choose><text variable="number"/></group></group><text variable="authority"/><text variable="chapter-number"/><group delimiter=" "><text variable="volume"/><text variable="container-title"/><text variable="page-first"/></group></group></else-if><else-if type="legislation"><choose><if variable="number"><!--There's a public law number--><group delimiter=", "><text variable="number" prefix="Pub. L. No. "/><group delimiter=" "><text variable="volume"/><text variable="container-title"/><text variable="page-first"/></group></group></if><else><group delimiter=" "><text variable="volume"/><text variable="container-title"/><choose><if variable="section"><group delimiter=" "><!-- Change to label variable="section" as that becomes available --><text term="section" form="symbol"/><text variable="section"/></group></if><else><text variable="page-first"/></else></choose></group></else></choose></else-if><else-if type="treaty"><group delimiter=" "><number variable="volume"/><text variable="container-title"/><choose><if variable="page page-first" match="any"><text variable="page-first"/></if><else><group delimiter=" "><!-- Replace with label variable="number" if that becomes available --><text term="issue" form="short" text-case="capitalize-first"/><text variable="number"/></group></else></choose></group></else-if></choose></macro><macro name="citation-locator"><group delimiter=" "><choose><if locator="chapter"><label variable="locator" text-case="capitalize-first"/></if><else><label variable="locator" form="short"/></else></choose><text variable="locator"/></group></macro><citation et-al-min="3" et-al-use-first="1" disambiguate-add-year-suffix="true" disambiguate-add-names="true" disambiguate-add-givenname="true" collapse="year" givenname-disambiguation-rule="primary-name-with-initials"><sort><key macro="author-bib" names-min="3" names-use-first="1"/><key macro="date-sort-group"/><key macro="date-sort-date" sort="ascending"/><key variable="status"/></sort><layout prefix="(" suffix=")" delimiter="; "><group delimiter=", "><text macro="author-intext"/><text macro="date-intext"/><text macro="citation-locator"/></group></layout></citation><bibliography hanging-indent="true" et-al-min="21" et-al-use-first="19" et-al-use-last="true" entry-spacing="0" line-spacing="2"><sort><key macro="author-bib"/><key macro="date-sort-group"/><key macro="date-sort-date" sort="ascending"/><key variable="status"/><key macro="title"/></sort><layout><choose><if type="bill legal_case legislation treaty" match="any"><!-- Legal items have different orders and delimiters --><choose><if variable="DOI URL" match="any"><text macro="legal-cites"/></if><else><text macro="legal-cites" suffix="."/></else></choose></if><else><group delimiter=" "><group delimiter=". " suffix="."><text macro="author-bib"/><text macro="date-bib"/><text macro="title-and-descriptions"/><text macro="container"/><text macro="event"/><text macro="publisher"/></group><text macro="access"/><text macro="publication-history"/></group></else></choose></layout></bibliography>
</style>
`,
      vancouver: '<?xml version="1.0" encoding="utf-8"?>\n<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="sort-only" initialize-with-hyphen="false" page-range-format="minimal"><info><title>Vancouver</title><id>http://www.zotero.org/styles/vancouver</id><link href="http://www.zotero.org/styles/vancouver" rel="self"/><link href="http://www.nlm.nih.gov/bsd/uniform_requirements.html" rel="documentation"/><author><name>Michael Berkowitz</name><email>mberkowi@gmu.edu</email></author><contributor><name>Sean Takats</name><email>stakats@gmu.edu</email></contributor><contributor><name>Sebastian Karcher</name></contributor><category citation-format="numeric"/><category field="medicine"/><summary>Vancouver style as outlined by International Committee of Medical Journal Editors Uniform Requirements for Manuscripts Submitted to Biomedical Journals: Sample References</summary><updated>2022-04-14T13:48:43+00:00</updated><rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights></info><locale xml:lang="en"><date form="text" delimiter=" "><date-part name="year"/><date-part name="month" form="short" strip-periods="true"/><date-part name="day"/></date><terms><term name="collection-editor" form="long"><single>editor</single><multiple>editors</multiple></term><term name="presented at">presented at</term><term name="available at">available from</term><term name="section" form="short">sect.</term></terms></locale><locale xml:lang="fr"><date form="text" delimiter=" "><date-part name="day"/><date-part name="month" form="short" strip-periods="true"/><date-part name="year"/></date></locale><macro name="author"><names variable="author"><name sort-separator=" " initialize-with="" name-as-sort-order="all" delimiter=", " delimiter-precedes-last="always"/><label form="long" prefix=", "/><substitute><names variable="editor"/></substitute></names></macro><macro name="editor"><names variable="editor" suffix="."><name sort-separator=" " initialize-with="" name-as-sort-order="all" delimiter=", " delimiter-precedes-last="always"/><label form="long" prefix=", "/></names></macro><macro name="chapter-marker"><choose><if type="chapter paper-conference entry-dictionary entry-encyclopedia" match="any"><text term="in" text-case="capitalize-first"/></if></choose></macro><macro name="publisher"><choose><!--discard publisher info for articles--><if type="article-journal article-magazine article-newspaper" match="none"><group delimiter=": " suffix=";"><choose><if type="thesis"><text variable="publisher-place" prefix="[" suffix="]"/></if><else-if type="speech"/><else><text variable="publisher-place"/></else></choose><text variable="publisher"/></group></if></choose></macro><macro name="access"><choose><if variable="URL"><group delimiter=": "><text term="available at" text-case="capitalize-first"/><text variable="URL"/></group></if></choose></macro><macro name="accessed-date"><choose><if variable="URL"><group prefix="[" suffix="]" delimiter=" "><text term="cited" text-case="lowercase"/><date variable="accessed" form="text"/></group></if></choose></macro><macro name="container-title"><choose><if type="article-journal article-magazine chapter paper-conference article-newspaper review review-book entry-dictionary entry-encyclopedia" match="any"><group suffix="." delimiter=" "><choose><if type="article-journal review review-book" match="any"><text variable="container-title" form="short" strip-periods="true"/></if><else><text variable="container-title" strip-periods="true"/></else></choose><choose><if variable="URL"><text term="internet" prefix="[" suffix="]" text-case="capitalize-first"/></if></choose></group><text macro="edition" prefix=" "/></if><!--add event-name and event-place once they become available--><else-if type="bill legislation" match="any"><group delimiter=", "><group delimiter=". "><text variable="container-title"/><group delimiter=" "><text term="section" form="short" text-case="capitalize-first"/><text variable="section"/></group></group><text variable="number"/></group></else-if><else-if type="speech"><group delimiter=": " suffix=";"><group delimiter=" "><text variable="genre" text-case="capitalize-first"/><text term="presented at"/></group><text variable="event"/></group></else-if><else><group delimiter=", " suffix="."><choose><if variable="collection-title" match="none"><group delimiter=" "><label variable="volume" form="short" text-case="capitalize-first"/><text variable="volume"/></group></if></choose><text variable="container-title"/></group></else></choose></macro><macro name="title"><text variable="title"/><choose><if type="article-journal article-magazine chapter paper-conference article-newspaper review review-book entry-dictionary entry-encyclopedia" match="none"><choose><if variable="URL"><text term="internet" prefix=" [" suffix="]" text-case="capitalize-first"/></if></choose><text macro="edition" prefix=". "/></if></choose><choose><if type="thesis"><text variable="genre" prefix=" [" suffix="]"/></if></choose></macro><macro name="edition"><choose><if is-numeric="edition"><group delimiter=" "><number variable="edition" form="ordinal"/><text term="edition" form="short"/></group></if><else><text variable="edition" suffix="."/></else></choose></macro><macro name="date"><choose><if type="article-journal article-magazine article-newspaper review review-book" match="any"><group suffix=";" delimiter=" "><date variable="issued" form="text"/><text macro="accessed-date"/></group></if><else-if type="bill legislation" match="any"><group delimiter=", "><date variable="issued" delimiter=" "><date-part name="month" form="short" strip-periods="true"/><date-part name="day"/></date><date variable="issued"><date-part name="year"/></date></group></else-if><else-if type="report"><date variable="issued" delimiter=" "><date-part name="year"/><date-part name="month" form="short" strip-periods="true"/></date><text macro="accessed-date" prefix=" "/></else-if><else-if type="patent"><group suffix="."><group delimiter=", "><text variable="number"/><date variable="issued"><date-part name="year"/></date></group><text macro="accessed-date" prefix=" "/></group></else-if><else-if type="speech"><group delimiter="; "><group delimiter=" "><date variable="issued" delimiter=" "><date-part name="year"/><date-part name="month" form="short" strip-periods="true"/><date-part name="day"/></date><text macro="accessed-date"/></group><text variable="event-place"/></group></else-if><else><group suffix="."><date variable="issued"><date-part name="year"/></date><text macro="accessed-date" prefix=" "/></group></else></choose></macro><macro name="pages"><choose><if type="article-journal article-magazine article-newspaper review review-book" match="any"><text variable="page" prefix=":"/></if><else-if type="book" match="any"><text variable="number-of-pages" prefix=" "/><choose><if is-numeric="number-of-pages"><label variable="number-of-pages" form="short" prefix=" " plural="never"/></if></choose></else-if><else><group prefix=" " delimiter=" "><label variable="page" form="short" plural="never"/><text variable="page"/></group></else></choose></macro><macro name="journal-location"><choose><if type="article-journal article-magazine review review-book" match="any"><text variable="volume"/><text variable="issue" prefix="(" suffix=")"/></if></choose></macro><macro name="collection-details"><choose><if type="article-journal article-magazine article-newspaper review review-book" match="none"><choose><if variable="collection-title"><group delimiter=" " prefix="(" suffix=")"><names variable="collection-editor" suffix="."><name sort-separator=" " initialize-with="" name-as-sort-order="all" delimiter=", " delimiter-precedes-last="always"/><label form="long" prefix=", "/></names><group delimiter="; "><text variable="collection-title"/><group delimiter=" "><label variable="volume" form="short"/><text variable="volume"/></group></group></group></if></choose></if></choose></macro><macro name="report-details"><choose><if type="report"><text variable="number" prefix="Report No.: "/></if></choose></macro><citation collapse="citation-number"><sort><key variable="citation-number"/></sort><layout prefix="(" suffix=")" delimiter=","><text variable="citation-number"/></layout></citation><bibliography et-al-min="7" et-al-use-first="6" second-field-align="flush"><layout><text variable="citation-number" suffix=". "/><group delimiter=". " suffix=". "><text macro="author"/><text macro="title"/></group><group delimiter=" " suffix=". "><group delimiter=": "><text macro="chapter-marker"/><group delimiter=" "><text macro="editor"/><text macro="container-title"/></group></group><text macro="publisher"/><group><text macro="date"/><text macro="journal-location"/><text macro="pages"/></group></group><text macro="collection-details" suffix=". "/><text macro="report-details" suffix=". "/><text macro="access"/></layout></bibliography>\n</style>\n',
      harvard1: `<?xml version="1.0" encoding="utf-8"?>
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="sort-only" default-locale="en-GB"><info><title>Cite Them Right 11th edition - Harvard</title><id>http://www.zotero.org/styles/harvard-cite-them-right</id><link href="http://www.zotero.org/styles/harvard-cite-them-right" rel="self"/><link href="http://www.zotero.org/styles/harvard-cite-them-right-10th-edition" rel="template"/><link href="http://www.citethemrightonline.com/" rel="documentation"/><author><name>Patrick O'Brien</name></author><category citation-format="author-date"/><category field="generic-base"/><summary>Harvard according to Cite Them Right, 11th edition.</summary><updated>2021-09-01T10:12:20+00:00</updated><rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights></info><locale xml:lang="en-GB"><terms><term name="editor" form="short"><single>ed.</single><multiple>eds</multiple></term><term name="editortranslator" form="verb">edited and translated by</term><term name="edition" form="short">edn.</term></terms></locale><macro name="editor"><choose><if type="chapter paper-conference" match="any"><names variable="container-author" delimiter=", " suffix=", "><name and="text" initialize-with=". " delimiter=", " sort-separator=", " name-as-sort-order="all"/></names><choose><if variable="container-author" match="none"><names variable="editor translator" delimiter=", "><name and="text" initialize-with="." name-as-sort-order="all"/><label form="short" prefix=" (" suffix=")"/></names></if></choose></if></choose></macro><macro name="secondary-contributors"><choose><if type="chapter paper-conference" match="none"><names variable="editor translator" delimiter=". "><label form="verb" text-case="capitalize-first" suffix=" "/><name and="text" initialize-with="."/></names></if><else-if variable="container-author" match="any"><names variable="editor translator" delimiter=". "><label form="verb" text-case="capitalize-first" suffix=" "/><name and="text" initialize-with=". " delimiter=", "/></names></else-if></choose></macro><macro name="author"><names variable="author"><name and="text" delimiter-precedes-last="never" initialize-with="." name-as-sort-order="all"/><label form="short" prefix=" (" suffix=")"/><et-al font-style="italic"/><substitute><names variable="editor"/><names variable="translator"/><choose><if type="article-newspaper article-magazine" match="any"><text variable="container-title" text-case="title" font-style="italic"/></if><else><text macro="title"/></else></choose></substitute></names></macro><macro name="author-short"><names variable="author"><name form="short" and="text" delimiter=", " delimiter-precedes-last="never" initialize-with=". "/><et-al font-style="italic"/><substitute><names variable="editor"/><names variable="translator"/><choose><if type="article-newspaper article-magazine" match="any"><text variable="container-title" text-case="title" font-style="italic"/></if><else><text macro="title"/></else></choose></substitute></names></macro><macro name="access"><choose><if variable="DOI"><text variable="DOI" prefix="doi:"/></if><else-if variable="URL"><text term="available at" suffix=": " text-case="capitalize-first"/><text variable="URL"/><group prefix=" (" delimiter=": " suffix=")"><text term="accessed" text-case="capitalize-first"/><date form="text" variable="accessed"><date-part name="day"/><date-part name="month"/><date-part name="year"/></date></group></else-if></choose></macro><macro name="number-volumes"><choose><if variable="volume" match="none"><group delimiter=" " prefix="(" suffix=")"><text variable="number-of-volumes"/><label variable="volume" form="short" strip-periods="true"/></group></if></choose></macro><macro name="title"><choose><if type="bill book legal_case legislation motion_picture report song thesis webpage graphic" match="any"><group delimiter=". "><group delimiter=" "><group delimiter=" "><text variable="title" font-style="italic"/><text variable="medium" prefix="[" suffix="]"/></group><text macro="number-volumes"/></group><text macro="edition"/></group></if><else><text variable="title" form="long" quotes="true"/></else></choose></macro><macro name="publisher"><choose><if type="thesis"><group delimiter=". "><text variable="genre"/><text variable="publisher"/></group></if><else-if type="report"><group delimiter=". "><group delimiter=" "><text variable="genre"/><text variable="number"/></group><group delimiter=": "><text variable="publisher-place"/><text variable="publisher"/></group></group></else-if><else-if type="article-journal article-newspaper article-magazine" match="none"><group delimiter=" "><group delimiter=", "><choose><if type="speech" variable="event" match="any"><text variable="event" font-style="italic"/></if></choose><group delimiter=": "><text variable="publisher-place"/><text variable="publisher"/></group></group><group prefix="(" suffix=")" delimiter=", "><text variable="collection-title"/><text variable="collection-number"/></group></group></else-if></choose></macro><macro name="year-date"><choose><if variable="issued"><date variable="issued"><date-part name="year"/></date><text variable="year-suffix"/></if><else><text term="no date"/><text variable="year-suffix" prefix=" "/></else></choose></macro><macro name="locator"><choose><if type="article-journal"><text variable="volume"/><text variable="issue" prefix="(" suffix=")"/></if></choose></macro><macro name="published-date"><choose><if type="article-newspaper article-magazine post-weblog speech" match="any"><date variable="issued"><date-part name="day" suffix=" "/><date-part name="month" form="long"/></date></if></choose></macro><macro name="pages"><choose><if type="chapter paper-conference article-journal article article-magazine article-newspaper book review review-book report" match="any"><group delimiter=" "><label variable="page" form="short"/><text variable="page"/></group></if></choose></macro><macro name="container-title"><choose><if variable="container-title"><group delimiter=". "><group delimiter=" "><text variable="container-title" font-style="italic"/><choose><if type="article article-journal" match="any"><choose><if match="none" variable="page volume"><text value="Preprint" prefix="[" suffix="]"/></if></choose></if></choose></group><text macro="edition"/></group></if></choose></macro><macro name="edition"><choose><if is-numeric="edition"><group delimiter=" "><number variable="edition" form="ordinal"/><text term="edition" form="short" strip-periods="true"/></group></if><else><text variable="edition"/></else></choose></macro><macro name="container-prefix"><choose><if type="chapter paper-conference" match="any"><text term="in"/></if></choose></macro><citation et-al-min="4" et-al-use-first="1" disambiguate-add-year-suffix="true" disambiguate-add-names="true" disambiguate-add-givenname="true" collapse="year"><sort><key macro="year-date"/></sort><layout prefix="(" suffix=")" delimiter="; "><group delimiter=", "><group delimiter=", "><text macro="author-short"/><text macro="year-date"/></group><group><label variable="locator" form="short" suffix=" "/><text variable="locator"/></group></group></layout></citation><bibliography and="text" et-al-min="4" et-al-use-first="1"><sort><key macro="author"/><key macro="year-date"/><key variable="title"/></sort><layout suffix="."><group delimiter=". "><group delimiter=" "><text macro="author"/><text macro="year-date" prefix="(" suffix=")"/><group delimiter=", "><text macro="title"/><group delimiter=" "><text macro="container-prefix"/><text macro="editor"/><text macro="container-title"/></group></group></group><text macro="secondary-contributors"/><text macro="publisher"/></group><group delimiter=", " prefix=", "><text macro="locator"/><text macro="published-date"/><text macro="pages"/></group><text macro="access" prefix=". "/></layout></bibliography>
</style>
`
    };
  }
});

// ../../node_modules/@citation-js/plugin-csl/lib/styles.js
var require_styles2 = __commonJS({
  "../../node_modules/@citation-js/plugin-csl/lib/styles.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.templates = exports2.default = void 0;
    var _core3 = require_lib6();
    var _styles2 = _interopRequireDefault3(require_styles());
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    var templates = exports2.templates = new _core3.util.Register(_styles2.default);
    var fetchStyle = (style3) => {
      if (templates.has(style3)) {
        return templates.get(style3);
      } else {
        return templates.get("apa");
      }
    };
    var _default2 = exports2.default = fetchStyle;
  }
});

// ../../node_modules/citeproc/citeproc_commonjs.js
var require_citeproc_commonjs = __commonJS({
  "../../node_modules/citeproc/citeproc_commonjs.js"(exports2, module2) {
    "use strict";
    var CSL = {
      PROCESSOR_VERSION: "1.4.61",
      error: function(str2) {
        if ("undefined" === typeof Error) {
          throw new Error("citeproc-js error: " + str2);
        } else {
          throw "citeproc-js error: " + str2;
        }
      },
      debug: function(str2) {
        if ("undefined" === typeof console) {
          dump("CSL: " + str2 + "\n");
        } else {
          console.log("citeproc-js warning: " + str2);
        }
      },
      toLocaleUpperCase(str2) {
        var arr = this.tmp.lang_array;
        try {
          str2 = str2.toLocaleUpperCase(arr);
        } catch (e2) {
          str2 = str2.toUpperCase();
        }
        return str2;
      },
      toLocaleLowerCase(str2) {
        var arr = this.tmp.lang_array;
        try {
          str2 = str2.toLocaleLowerCase(arr);
        } catch (e2) {
          str2 = str2.toLowerCase();
        }
        return str2;
      },
      LOCATOR_LABELS_REGEXP: new RegExp("^((vrs|sv|subpara|op|subch|add|amend|annot|app|art|bibliog|bk|ch|cl|col|cmt|dec|dept|div|ex|fig|fld|fol|n|hypo|illus|intro|l|no|p|pp|para|pt|pmbl|princ|pub|r|rn|sched|sec|ser|subdiv|subsec|supp|tbl|tit|vol)\\.)\\s+(.*)"),
      STATUTE_SUBDIV_PLAIN_REGEX: /(?:(?:^| )(?:vrs|sv|subpara|op|subch|add|amend|annot|app|art|bibliog|bk|ch|cl|col|cmt|dec|dept|div|ex|fig|fld|fol|n|hypo|illus|intro|l|no|p|pp|para|pt|pmbl|princ|pub|r|rn|sched|sec|ser|subdiv|subsec|supp|tbl|tit|vol)\. *)/,
      STATUTE_SUBDIV_PLAIN_REGEX_FRONT: /(?:^\s*[.,;]*\s*(?:vrs|sv|subpara|op|subch|add|amend|annot|app|art|bibliog|bk|ch|cl|col|cmt|dec|dept|div|ex|fig|fld|fol|n|hypo|illus|intro|l|no|p|pp|para|pt|pmbl|princ|pub|r|rn|sched|sec|ser|subdiv|subsec|supp|tbl|tit|vol)\. *)/,
      STATUTE_SUBDIV_STRINGS: {
        "vrs.": "verse",
        "sv.": "sub-verbo",
        "subpara.": "subparagraph",
        "op.": "opus",
        "subch.": "subchapter",
        "add.": "addendum",
        "amend.": "amendment",
        "annot.": "annotation",
        "app.": "appendix",
        "art.": "article",
        "bibliog.": "bibliography",
        "bk.": "book",
        "ch.": "chapter",
        "cl.": "clause",
        "col.": "column",
        "cmt.": "comment",
        "dec.": "decision",
        "dept.": "department",
        "ex.": "example",
        "fig.": "figure",
        "fld.": "field",
        "fol.": "folio",
        "n.": "note",
        "hypo.": "hypothetical",
        "illus.": "illustration",
        "intro.": "introduction",
        "l.": "line",
        "no.": "issue",
        "p.": "page",
        "pp.": "page",
        "para.": "paragraph",
        "pt.": "part",
        "pmbl.": "preamble",
        "princ.": "principle",
        "pub.": "publication",
        "r.": "rule",
        "rn.": "randnummer",
        "sched.": "schedule",
        "sec.": "section",
        "ser.": "series,",
        "subdiv.": "subdivision",
        "subsec.": "subsection",
        "supp.": "supplement",
        "tbl.": "table",
        "tit.": "title",
        "vol.": "volume"
      },
      STATUTE_SUBDIV_STRINGS_REVERSE: {
        "verse": "vrs.",
        "sub-verbo": "sv.",
        "sub verbo": "sv.",
        "subparagraph": "subpara.",
        "opus": "op.",
        "subchapter": "subch.",
        "addendum": "add.",
        "amendment": "amend.",
        "annotation": "annot.",
        "appendix": "app.",
        "article": "art.",
        "bibliography": "bibliog.",
        "book": "bk.",
        "chapter": "ch.",
        "clause": "cl.",
        "column": "col.",
        "comment": "cmt.",
        "decision": "dec.",
        "department": "dept.",
        "example": "ex.",
        "figure": "fig.",
        "field": "fld.",
        "folio": "fol.",
        "note": "n.",
        "hypothetical": "hypo.",
        "illustration": "illus.",
        "introduction": "intro.",
        "line": "l.",
        "issue": "no.",
        "page": "p.",
        "paragraph": "para.",
        "part": "pt.",
        "preamble": "pmbl.",
        "principle": "princ.",
        "publication": "pub.",
        "rule": "r.",
        "randnummer": "rn.",
        "schedule": "sched.",
        "section": "sec.",
        "series,": "ser.",
        "subdivision": "subdiv.",
        "subsection": "subsec.",
        "supplement": "supp.",
        "table": "tbl.",
        "title": "tit.",
        "volume": "vol."
      },
      LOCATOR_LABELS_MAP: {
        "vrs": "verse",
        "sv": "sub-verbo",
        "subpara": "subparagraph",
        "op": "opus",
        "subch": "subchapter",
        "add": "addendum",
        "amend": "amendment",
        "annot": "annotation",
        "app": "appendix",
        "art": "article",
        "bibliog": "bibliography",
        "bk": "book",
        "ch": "chapter",
        "cl": "clause",
        "col": "column",
        "cmt": "comment",
        "dec": "decision",
        "dept": "department",
        "ex": "example",
        "fig": "figure",
        "fld": "field",
        "fol": "folio",
        "n": "note",
        "hypo": "hypothetical",
        "illus": "illustration",
        "intro": "introduction",
        "l": "line",
        "no": "issue",
        "p": "page",
        "pp": "page",
        "para": "paragraph",
        "pt": "part",
        "pmbl": "preamble",
        "princ": "principle",
        "pub": "publication",
        "r": "rule",
        "rn": "randnummer",
        "sched": "schedule",
        "sec": "section",
        "ser": "series,",
        "subdiv": "subdivision",
        "subsec": "subsection",
        "supp": "supplement",
        "tbl": "table",
        "tit": "title",
        "vol": "volume"
      },
      MODULE_MACROS: {
        "juris-pretitle": true,
        "juris-title": true,
        "juris-pretitle-short": true,
        "juris-title-short": true,
        "juris-main": true,
        "juris-main-short": true,
        "juris-tail": true,
        "juris-tail-short": true,
        "juris-locator": true
      },
      MODULE_TYPES: {
        "legal_case": true,
        "legislation": true,
        "bill": true,
        "hearing": true,
        "gazette": true,
        "report": true,
        "regulation": true,
        "standard": true,
        "patent": true,
        "locator": true
      },
      checkNestedBrace: function(state) {
        if (state.opt.xclass === "note") {
          this.depth = 0;
          this.update = function(str2) {
            var str2 = str2 ? str2 : "";
            var lst = str2.split(/([\(\)])/);
            for (var i2 = 1, ilen = lst.length; i2 < ilen; i2 += 2) {
              if (lst[i2] === "(") {
                if (1 === this.depth % 2) {
                  lst[i2] = "[";
                }
                this.depth += 1;
              } else if (lst[i2] === ")") {
                if (0 === this.depth % 2) {
                  lst[i2] = "]";
                }
                this.depth -= 1;
              }
            }
            var ret = lst.join("");
            return ret;
          };
        } else {
          this.update = function(str2) {
            return str2;
          };
        }
      },
      MULTI_FIELDS: ["event", "publisher", "publisher-place", "event-place", "title", "container-title", "collection-title", "authority", "genre", "title-short", "medium", "country", "jurisdiction", "archive", "archive-place"],
      LangPrefsMap: {
        "title": "titles",
        "title-short": "titles",
        "event": "titles",
        "genre": "titles",
        "medium": "titles",
        "container-title": "journals",
        "collection-title": "titles",
        "archive": "journals",
        "publisher": "publishers",
        "authority": "publishers",
        "publisher-place": "places",
        "event-place": "places",
        "archive-place": "places",
        "jurisdiction": "places",
        "number": "places",
        "edition": "places",
        "issue": "places",
        "volume": "places"
      },
      AbbreviationSegments: function() {
        this["container-title"] = {};
        this["collection-title"] = {};
        this["institution-entire"] = {};
        this["institution-part"] = {};
        this.nickname = {};
        this.number = {};
        this.title = {};
        this.place = {};
        this.hereinafter = {};
        this.classic = {};
        this["container-phrase"] = {};
        this["title-phrase"] = {};
      },
      getAbbrevsDomain: function(state, country, lang) {
        var domain = null;
        if (state.opt.availableAbbrevDomains && country && country !== "default") {
          var globalDomainPreference = state.locale[state.opt.lang].opts["jurisdiction-preference"];
          var itemDomainPreference = null;
          if (state.locale[lang]) {
            itemDomainPreference = state.locale[lang].opts["jurisdiction-preference"];
          }
          if (itemDomainPreference) {
            for (var j = itemDomainPreference.length - 1; j > -1; j--) {
              if (state.opt.availableAbbrevDomains[country].indexOf(itemDomainPreference[j]) > -1) {
                domain = itemDomainPreference[j];
                break;
              }
            }
          }
          if (!domain && globalDomainPreference) {
            for (var j = globalDomainPreference.length - 1; j > -1; j--) {
              if (state.opt.availableAbbrevDomains[country].indexOf(globalDomainPreference[j]) > -1) {
                domain = globalDomainPreference[j];
                break;
              }
            }
          }
        }
        return domain;
      },
      FIELD_CATEGORY_REMAP: {
        "title": "title",
        "container-title": "container-title",
        "collection-title": "collection-title",
        "country": "place",
        "number": "number",
        "place": "place",
        "archive": "container-title",
        "title-short": "title",
        "genre": "title",
        "event": "title",
        "medium": "title",
        "archive-place": "place",
        "publisher-place": "place",
        "event-place": "place",
        "jurisdiction": "place",
        "language-name": "place",
        "language-name-original": "place",
        "call-number": "number",
        "chapter-number": "number",
        "collection-number": "number",
        "edition": "number",
        "page": "number",
        "issue": "number",
        "locator": "number",
        "locator-extra": "number",
        "number-of-pages": "number",
        "number-of-volumes": "number",
        "volume": "number",
        "citation-number": "number",
        "publisher": "institution-part"
      },
      parseLocator: function(item) {
        if (this.opt.development_extensions.locator_date_and_revision) {
          if (item.locator) {
            item.locator = "" + item.locator;
            var idx = item.locator.indexOf("|");
            if (idx > -1) {
              var raw_locator = item.locator;
              item.locator = raw_locator.slice(0, idx);
              raw_locator = raw_locator.slice(idx + 1);
              var m2 = raw_locator.match(/^([0-9]{4}-[0-9]{2}-[0-9]{2}).*/);
              if (m2) {
                item["locator-date"] = this.fun.dateparser.parseDateToObject(m2[1]);
                raw_locator = raw_locator.slice(m2[1].length);
              }
              item["locator-extra"] = raw_locator.replace(/^\s+/, "").replace(/\s+$/, "");
            }
          }
        }
        if (item.locator) {
          item.locator = ("" + item.locator).replace(/\s+$/, "");
        }
        return item;
      },
      normalizeLocaleStr: function(str2) {
        if (!str2) {
          return;
        }
        var lst = str2.split("-");
        lst[0] = lst[0].toLowerCase();
        if (lst[1]) {
          lst[1] = lst[1].toUpperCase();
        }
        return lst.join("-");
      },
      parseNoteFieldHacks: function(Item, validFieldsForType, allowDateOverride) {
        if ("string" !== typeof Item.note) {
          return;
        }
        var elems = [];
        var lines = Item.note.split("\n");
        for (var i2 = 0, ilen = lines.length; i2 < ilen; i2++) {
          var line2 = lines[i2];
          var elems = [];
          var m2 = line2.match(CSL.NOTE_FIELDS_REGEXP);
          if (m2) {
            var splt = line2.split(CSL.NOTE_FIELDS_REGEXP);
            for (var j = 0, jlen = splt.length - 1; j < jlen; j++) {
              elems.push(splt[j]);
              elems.push(m2[j]);
            }
            elems.push(splt[splt.length - 1]);
            for (var j = 1, jlen = elems.length; j < jlen; j += 2) {
              if (elems[j - 1].trim() && (i2 > 0 || j > 1) && !elems[j - 1].match(CSL.NOTE_FIELD_REGEXP)) {
                break;
              } else {
                elems[j] = "\n" + elems[j].slice(2, -1).trim() + "\n";
              }
            }
            lines[i2] = elems.join("");
          }
        }
        lines = lines.join("\n").split("\n");
        var offset = 0;
        var names = {};
        for (var i2 = 0, ilen = lines.length; i2 < ilen; i2++) {
          var line2 = lines[i2];
          var mm = line2.match(CSL.NOTE_FIELD_REGEXP);
          if (!line2.trim()) {
            continue;
          } else if (!mm) {
            if (i2 === 0) {
              continue;
            } else {
              offset = i2;
              break;
            }
          }
          var key2 = mm[1];
          var val = mm[2].replace(/^\s+/, "").replace(/\s+$/, "");
          if (key2 === "type") {
            Item.type = val;
            lines[i2] = "";
          } else if (CSL.DATE_VARIABLES.indexOf(key2.replace(/^alt-/, "")) > -1) {
            if (!Item[key2] || allowDateOverride) {
              Item[key2] = CSL.DateParser.parseDateToArray(val);
              if (!validFieldsForType || validFieldsForType[key2] && this.isDateString(val)) {
                lines[i2] = "";
              }
            }
          } else if (!Item[key2]) {
            if (CSL.NAME_VARIABLES.indexOf(key2.replace(/^alt-/, "")) > -1) {
              if (!names[key2]) {
                names[key2] = [];
              }
              var lst = val.split(/\s*\|\|\s*/);
              if (lst.length === 1) {
                names[key2].push({ literal: lst[0] });
              } else if (lst.length === 2) {
                var name3 = { family: lst[0], given: lst[1] };
                CSL.parseParticles(name3);
                names[key2].push(name3);
              }
            } else {
              Item[key2] = val;
            }
            if (!validFieldsForType || validFieldsForType[key2]) {
              lines[i2] = "";
            }
          }
        }
        for (var key2 in names) {
          Item[key2] = names[key2];
        }
        if (validFieldsForType) {
          if (lines[offset].trim()) {
            lines[offset] = "\n" + lines[offset];
          }
          for (var i2 = offset - 1; i2 > -1; i2--) {
            if (!lines[i2].trim()) {
              lines = lines.slice(0, i2).concat(lines.slice(i2 + 1));
            }
          }
        }
        Item.note = lines.join("\n").trim();
      },
      checkPrefixSpaceAppend: function(state, prefix2) {
        if (!prefix2) {
          prefix2 = "";
        }
        var sp = "";
        var test_prefix = prefix2.replace(/<[^>]+>/g, "").replace(/["'\u201d\u2019\u00bb\u202f\u00a0 ]+$/g, "");
        var test_char = test_prefix.slice(-1);
        if (test_prefix.match(CSL.ENDSWITH_ROMANESQUE_REGEXP)) {
          sp = " ";
        } else if (CSL.TERMINAL_PUNCTUATION.slice(0, -1).indexOf(test_char) > -1) {
          sp = " ";
        } else if (test_char.match(/[\)\],0-9]/)) {
          sp = " ";
        }
        var prefix2 = (prefix2 + sp).replace(/\s+/g, " ");
        return prefix2;
      },
      checkIgnorePredecessor: function(state, prefix2) {
        var ignorePredecessor = false;
        var test_prefix = prefix2.replace(/<[^>]+>/g, "").replace(/["'\u201d\u2019\u00bb\u202f\u00a0 ]+$/g, "");
        var test_char = test_prefix.slice(-1);
        if (CSL.TERMINAL_PUNCTUATION.slice(0, -1).indexOf(test_char) > -1 && prefix2.trim().indexOf(" ") > -1) {
          state.tmp.term_predecessor = false;
          return true;
        }
        return false;
      },
      checkSuffixSpacePrepend: function(state, suffix) {
        if (!suffix) {
          return "";
        }
        if (suffix.match(CSL.STARTSWITH_ROMANESQUE_REGEXP) || ["[", "("].indexOf(suffix.slice(0, 1)) > -1) {
          suffix = " " + suffix;
        }
        return suffix;
      },
      GENDERS: ["masculine", "feminine"],
      ERROR_NO_RENDERED_FORM: 1,
      PREVIEW: "Just for laughs.",
      ASSUME_ALL_ITEMS_REGISTERED: 2,
      START: 0,
      END: 1,
      SINGLETON: 2,
      SEEN: 6,
      SUCCESSOR: 3,
      SUCCESSOR_OF_SUCCESSOR: 4,
      SUPPRESS: 5,
      SINGULAR: 0,
      PLURAL: 1,
      LITERAL: true,
      BEFORE: 1,
      AFTER: 2,
      DESCENDING: 1,
      ASCENDING: 2,
      PRIMARY: 1,
      SECONDARY: 2,
      POSITION_FIRST: 0,
      POSITION_SUBSEQUENT: 1,
      POSITION_IBID: 2,
      POSITION_IBID_WITH_LOCATOR: 3,
      POSITION_CONTAINER_SUBSEQUENT: 4,
      POSITION_MAP: {
        "0": 0,
        "4": 1,
        "1": 2,
        "2": 3,
        "3": 4
      },
      POSITION_TEST_VARS: ["position", "first-reference-note-number", "near-note"],
      AREAS: ["citation", "citation_sort", "bibliography", "bibliography_sort", "intext"],
      CITE_FIELDS: ["first-reference-note-number", "first-container-reference-note-number", "locator", "locator-extra"],
      SWAPPING_PUNCTUATION: [".", "!", "?", ":", ","],
      TERMINAL_PUNCTUATION: [":", ".", ";", "!", "?", " "],
      // update modes
      NONE: 0,
      NUMERIC: 1,
      POSITION: 2,
      TRIGRAPH: 3,
      DATE_PARTS: ["year", "month", "day"],
      DATE_PARTS_ALL: ["year", "month", "day", "season"],
      DATE_PARTS_INTERNAL: ["year", "month", "day", "year_end", "month_end", "day_end"],
      NAME_PARTS: ["non-dropping-particle", "family", "given", "dropping-particle", "suffix", "literal"],
      DISAMBIGUATE_OPTIONS: [
        "disambiguate-add-names",
        "disambiguate-add-givenname",
        "disambiguate-add-year-suffix"
      ],
      GIVENNAME_DISAMBIGUATION_RULES: [
        "all-names",
        "all-names-with-initials",
        "primary-name",
        "primary-name-with-initials",
        "by-cite"
      ],
      NAME_ATTRIBUTES: [
        "and",
        "delimiter-precedes-last",
        "delimiter-precedes-et-al",
        "initialize-with",
        "initialize",
        "name-as-sort-order",
        "sort-separator",
        "et-al-min",
        "et-al-use-first",
        "et-al-subsequent-min",
        "et-al-subsequent-use-first",
        "form",
        "prefix",
        "suffix",
        "delimiter"
      ],
      LOOSE: 0,
      STRICT: 1,
      TOLERANT: 2,
      PREFIX_PUNCTUATION: /[.;:]\s*$/,
      SUFFIX_PUNCTUATION: /^\s*[.;:,\(\)]/,
      NUMBER_REGEXP: /(?:^\d+|\d+$)/,
      //
      // \u0400-\u042f are cyrillic and extended cyrillic capitals
      // this is not fully smart yet.  can't do what this was trying to do
      // with regexps, actually; we want to identify strings with a leading
      // capital letter, and any subsequent capital letters.  Have to compare
      // locale caps version with existing version, character by character.
      // hard stuff, but if it breaks, that's what to do.
      // \u0600-\u06ff is Arabic/Persian
      // \u200c-\u200e and \u202a-\u202e are special spaces and left-right 
      // control characters
      NAME_INITIAL_REGEXP: /^([A-Z\u0e01-\u0e5b\u00c0-\u017f\u0400-\u042f\u0590-\u05d4\u05d6-\u05ff\u0600-\u06ff\u0370\u0372\u0376\u0386\u0388-\u03ab\u03e2\u03e4\u03e6\u03e8\u03ea\u03ec\u03ee\u03f4\u03f7\u03fd-\u03ff])([a-zA-Z\u0e01-\u0e5b\u00c0-\u017f\u0400-\u052f\u0600-\u06ff\u0370-\u03ff\u1f00-\u1fff]*|)(\.)*/,
      ROMANESQUE_REGEXP: /[-0-9a-zA-Z\u0e01-\u0e5b\u00c0-\u017f\u0370-\u03ff\u0400-\u052f\u0590-\u05d4\u05d6-\u05ff\u1f00-\u1fff\u0600-\u06ff\u200c\u200d\u200e\u0218\u0219\u021a\u021b\u202a-\u202e]/,
      ROMANESQUE_NOT_REGEXP: /[^a-zA-Z\u0e01-\u0e5b\u00c0-\u017f\u0370-\u03ff\u0400-\u052f\u0590-\u05d4\u05d6-\u05ff\u1f00-\u1fff\u0600-\u06ff\u200c\u200d\u200e\u0218\u0219\u021a\u021b\u202a-\u202e]/g,
      STARTSWITH_ROMANESQUE_REGEXP: /^[&a-zA-Z\u0e01-\u0e5b\u00c0-\u017f\u0370-\u03ff\u0400-\u052f\u0590-\u05d4\u05d6-\u05ff\u1f00-\u1fff\u0600-\u06ff\u200c\u200d\u200e\u0218\u0219\u021a\u021b\u202a-\u202e]/,
      ENDSWITH_ROMANESQUE_REGEXP: /[.;:&a-zA-Z\u0e01-\u0e5b\u00c0-\u017f\u0370-\u03ff\u0400-\u052f\u0590-\u05d4\u05d6-\u05ff\u1f00-\u1fff\u0600-\u06ff\u200c\u200d\u200e\u0218\u0219\u021a\u021b\u202a-\u202e]$/,
      ALL_ROMANESQUE_REGEXP: /^[a-zA-Z\u0e01-\u0e5b\u00c0-\u017f\u0370-\u03ff\u0400-\u052f\u0590-\u05d4\u05d6-\u05ff\u1f00-\u1fff\u0600-\u06ff\u200c\u200d\u200e\u0218\u0219\u021a\u021b\u202a-\u202e]+$/,
      VIETNAMESE_SPECIALS: /[\u00c0-\u00c3\u00c8-\u00ca\u00cc\u00cd\u00d2-\u00d5\u00d9\u00da\u00dd\u00e0-\u00e3\u00e8-\u00ea\u00ec\u00ed\u00f2-\u00f5\u00f9\u00fa\u00fd\u0101\u0103\u0110\u0111\u0128\u0129\u0168\u0169\u01a0\u01a1\u01af\u01b0\u1ea0-\u1ef9]/,
      VIETNAMESE_NAMES: /^(?:(?:[.AaBbCcDdEeGgHhIiKkLlMmNnOoPpQqRrSsTtUuVvXxYy \u00c0-\u00c3\u00c8-\u00ca\u00cc\u00cd\u00d2-\u00d5\u00d9\u00da\u00dd\u00e0-\u00e3\u00e8-\u00ea\u00ec\u00ed\u00f2-\u00f5\u00f9\u00fa\u00fd\u0101\u0103\u0110\u0111\u0128\u0129\u0168\u0169\u01a0\u01a1\u01af\u01b0\u1ea0-\u1ef9]{2,6})(\s+|$))+$/,
      NOTE_FIELDS_REGEXP: /\{:(?:[\-_a-z]+|[A-Z]+):[^\}]+\}/g,
      NOTE_FIELD_REGEXP: /^([\-_a-z]+|[A-Z]+):\s*([^\}]+)$/,
      PARTICLE_GIVEN_REGEXP: /^([^ ]+(?:\u02bb |\u2019 | |\' ) *)(.+)$/,
      PARTICLE_FAMILY_REGEXP: /^([^ ]+(?:\-|\u02bb|\u2019| |\') *)(.+)$/,
      DISPLAY_CLASSES: ["block", "left-margin", "right-inline", "indent"],
      NAME_VARIABLES: [
        "author",
        "chair",
        "collection-editor",
        "compiler",
        "composer",
        "container-author",
        "contributor",
        "curator",
        "director",
        "editor",
        "editor-translator",
        "editorial-director",
        "executive-producer",
        "guest",
        "host",
        "illustrator",
        "interviewer",
        "narrator",
        "organizer",
        "original-author",
        "performer",
        "producer",
        "recipient",
        "reviewed-author",
        "script-writer",
        "series-creator",
        "translator",
        "commenter"
      ],
      CREATORS: [
        "author",
        "chair",
        "collection-editor",
        "compiler",
        "composer",
        "container-author",
        "contributor",
        "curator",
        "director",
        "editor",
        "editor-translator",
        "editorial-director",
        "executive-producer",
        "guest",
        "host",
        "illustrator",
        "interviewer",
        "narrator",
        "organizer",
        "original-author",
        "performer",
        "producer",
        "recipient",
        "reviewed-author",
        "script-writer",
        "series-creator",
        "translator",
        "commenter"
      ],
      NUMERIC_VARIABLES: [
        "call-number",
        "chapter-number",
        "collection-number",
        "division",
        "edition",
        "page",
        "issue",
        "locator",
        "locator-extra",
        "number",
        "number-of-pages",
        "number-of-volumes",
        "part-number",
        "printing-number",
        "section",
        "supplement-number",
        "version",
        "volume",
        "supplement",
        // maybe deprecated this? supplement-number should serve this purpose in standard CSL.
        "citation-number"
      ],
      //var x = new Array();
      //x = x.concat(["title","container-title","issued","page"]);
      //x = x.concat(["locator","collection-number","original-date"]);
      //x = x.concat(["reporting-date","decision-date","filing-date"]);
      //x = x.concat(["revision-date"]);
      //NUMERIC_VARIABLES = x.slice();
      DATE_VARIABLES: [
        "locator-date",
        "issued",
        "event-date",
        "accessed",
        "original-date",
        "publication-date",
        "available-date",
        "submitted",
        "alt-issued",
        "alt-event"
      ],
      VARIABLES_WITH_SHORT_FORM: [
        "title",
        "container-title"
      ],
      TITLE_FIELD_SPLITS: function(seg) {
        var keys2 = ["title", "short", "main", "sub", "subjoin"];
        var ret = {};
        for (var i2 = 0, ilen = keys2.length; i2 < ilen; i2++) {
          ret[keys2[i2]] = seg + "title" + (keys2[i2] === "title" ? "" : "-" + keys2[i2]);
        }
        return ret;
      },
      demoteNoiseWords: function(state, fld, drop_or_demote) {
        var SKIP_WORDS = state.locale[state.opt.lang].opts["leading-noise-words"];
        if (fld && drop_or_demote) {
          fld = fld.split(/\s+/);
          fld.reverse();
          var toEnd = [];
          for (var j = fld.length - 1; j > -1; j += -1) {
            if (SKIP_WORDS.indexOf(fld[j].toLowerCase()) > -1) {
              toEnd.push(fld.pop());
            } else {
              break;
            }
          }
          fld.reverse();
          var start = fld.join(" ");
          var end = toEnd.join(" ");
          if ("drop" === drop_or_demote || !end) {
            fld = start;
          } else if ("demote" === drop_or_demote) {
            fld = [start, end].join(", ");
          }
        }
        return fld;
      },
      extractTitleAndSubtitle: function(Item, narrowSpaceLocale) {
        var narrowSpace = narrowSpaceLocale ? "\u202F" : "";
        var segments = [""];
        if (this.opt.development_extensions.split_container_title) {
          segments.push("container-");
        }
        for (var i2 = 0, ilen = segments.length; i2 < ilen; i2++) {
          var seg = segments[i2];
          var title = CSL.TITLE_FIELD_SPLITS(seg);
          var langs = [false];
          if (Item.multi) {
            for (var lang in Item.multi._keys[title.short]) {
              langs.push(lang);
            }
          }
          for (var j = 0, jlen = langs.length; j < jlen; j++) {
            var lang = langs[j];
            var vals = {};
            if (lang) {
              if (Item.multi._keys[title.title]) {
                vals[title.title] = Item.multi._keys[title.title][lang];
              }
              if (Item.multi._keys[title["short"]]) {
                vals[title["short"]] = Item.multi._keys[title["short"]][lang];
              }
            } else {
              vals[title.title] = Item[title.title];
              vals[title["short"]] = Item[title["short"]];
            }
            vals[title.main] = vals[title.title];
            vals[title.sub] = false;
            var shortTitle = vals[title["short"]];
            if (vals[title.title]) {
              if (shortTitle && shortTitle.toLowerCase() === vals[title.title].toLowerCase()) {
                vals[title.main] = vals[title.title];
                vals[title.subjoin] = "";
                vals[title.sub] = "";
              } else if (shortTitle) {
                var tail = vals[title.title].slice(shortTitle.replace(/[\?\!]+$/, "").length);
                var top = vals[title.title].replace(tail.replace(/^[\?\!]+/, ""), "").trim();
                var m2 = CSL.TITLE_SPLIT_REGEXP.matchfirst.exec(tail);
                if (m2 && top.toLowerCase() === shortTitle.toLowerCase()) {
                  vals[title.main] = top;
                  vals[title.subjoin] = m2[1].replace(/[\?\!]+(\s*)$/, "$1");
                  vals[title.sub] = tail.replace(CSL.TITLE_SPLIT_REGEXP.matchfirst, "");
                  if (this.opt.development_extensions.force_short_title_casing_alignment) {
                    vals[title["short"]] = vals[title.main];
                  }
                } else {
                  var splitTitle = CSL.TITLE_SPLIT(vals[title.title]);
                  if (splitTitle.length == 3) {
                    vals[title.main] = splitTitle[0];
                    vals[title.subjoin] = splitTitle[1];
                    vals[title.sub] = splitTitle[2];
                  } else {
                    vals[title.main] = vals[title.title];
                    vals[title.subjoin] = "";
                    vals[title.sub] = "";
                  }
                }
              } else {
                var splitTitle = CSL.TITLE_SPLIT(vals[title.title]);
                if (splitTitle.length == 3) {
                  vals[title.main] = splitTitle[0];
                  vals[title.subjoin] = splitTitle[1];
                  vals[title.sub] = splitTitle[2];
                  if (this.opt.development_extensions.implicit_short_title && Item.type !== "legal_case") {
                    if (!Item[title.short] && !vals[title.main].match(/^[\-\.[0-9]+$/)) {
                      var punct2 = vals[title.subjoin].trim();
                      if (["?", "!"].indexOf(punct2) === -1) {
                        punct2 = "";
                      }
                      vals[title.short] = vals[title.main] + punct2;
                    }
                  }
                } else {
                  vals[title.main] = vals[title.title];
                  vals[title.subjoin] = "";
                  vals[title.sub] = "";
                }
              }
              if (vals[title.subjoin]) {
                if (vals[title.subjoin].match(/([\?\!])/)) {
                  var m2 = vals[title.subjoin].match(/(\s*)$/);
                  vals[title.main] = vals[title.main] + narrowSpace + vals[title.subjoin].trim();
                  vals[title.subjoin] = m2[1];
                }
              }
            }
            if (vals[title.subjoin]) {
              if (vals[title.subjoin].indexOf(":") > -1) {
                vals[title.subjoin] = narrowSpace + ": ";
              }
              if (vals[title.subjoin].indexOf("-") > -1 || vals[title.subjoin].indexOf("\u2014") > -1) {
                vals[title.subjoin] = "\u2014";
              }
            }
            if (lang) {
              for (var key2 in vals) {
                if (!Item.multi._keys[key2]) {
                  Item.multi._keys[key2] = {};
                }
                Item.multi._keys[key2][lang] = vals[key2];
              }
            } else {
              for (var key2 in vals) {
                Item[key2] = vals[key2];
              }
            }
          }
        }
      },
      titlecaseSentenceOrNormal: function(state, Item, seg, lang, sentenceCase) {
        var title = CSL.TITLE_FIELD_SPLITS(seg);
        var vals = {};
        if (lang && Item.multi) {
          if (Item.multi._keys[title.title]) {
            vals[title.title] = Item.multi._keys[title.title][lang];
          }
          if (Item.multi._keys[title.main]) {
            vals[title.main] = Item.multi._keys[title.main][lang];
          }
          if (Item.multi._keys[title.sub]) {
            vals[title.sub] = Item.multi._keys[title.sub][lang];
          }
          if (Item.multi._keys[title.subjoin]) {
            vals[title.subjoin] = Item.multi._keys[title.subjoin][lang];
          }
        } else {
          vals[title.title] = Item[title.title];
          vals[title.main] = Item[title.main];
          vals[title.sub] = Item[title.sub];
          vals[title.subjoin] = Item[title.subjoin];
        }
        if (vals[title.main] && vals[title.sub]) {
          var mainTitle = vals[title.main];
          var subJoin = vals[title.subjoin];
          var subTitle = vals[title.sub];
          if (sentenceCase) {
            mainTitle = CSL.Output.Formatters.sentence(state, mainTitle);
            subTitle = CSL.Output.Formatters.sentence(state, subTitle);
          } else if (state.opt.development_extensions.uppercase_subtitles) {
            subTitle = CSL.Output.Formatters["capitalize-first"](state, subTitle);
          }
          return [mainTitle, subJoin, subTitle].join("");
        } else if (vals[title.title]) {
          if (sentenceCase) {
            return CSL.Output.Formatters.sentence(state, vals[title.title]);
          } else if (state.opt.development_extensions.uppercase_subtitles) {
            var splits = CSL.TITLE_SPLIT(vals[title.title]);
            for (var i2 = 0, ilen = splits.length; i2 < ilen; i2 += 2) {
              splits[i2] = CSL.Output.Formatters["capitalize-first"](state, splits[i2]);
            }
            for (var i2 = 1, ilen = splits.length - 1; i2 < ilen; i2 += 2) {
              var m2 = splits[i2].match(/([:\?\!] )/);
              if (m2) {
                var narrowSpace = state.opt["default-locale"][0].slice(0, 2).toLowerCase() === "fr" ? "\u202F" : "";
                splits[i2] = narrowSpace + m2[1];
              }
              if (splits[i2].indexOf("-") > -1 || splits[i2].indexOf("\u2014") > -1) {
                splits[i2] = "\u2014";
              }
            }
            vals[title.title] = splits.join("");
            return vals[title.title];
          } else {
            return vals[title.title];
          }
        } else {
          return "";
        }
      },
      getSafeEscape: function(state) {
        if (["bibliography", "citation"].indexOf(state.tmp.area) > -1) {
          var callbacks = [];
          if (state.opt.development_extensions.thin_non_breaking_space_html_hack && state.opt.mode === "html") {
            callbacks.push(function(txt) {
              return txt.replace(/\u202f/g, '<span style="white-space:nowrap">&thinsp;</span>');
            });
          }
          if (callbacks.length) {
            return function(txt) {
              for (var i2 = 0, ilen = callbacks.length; i2 < ilen; i2 += 1) {
                txt = callbacks[i2](txt);
              }
              return CSL.Output.Formats[state.opt.mode].text_escape(txt);
            };
          } else {
            return CSL.Output.Formats[state.opt.mode].text_escape;
          }
        } else {
          return function(txt) {
            return txt;
          };
        }
      },
      SKIP_WORDS: ["about", "above", "across", "afore", "after", "against", "al", "along", "alongside", "amid", "amidst", "among", "amongst", "anenst", "apropos", "apud", "around", "as", "aside", "astride", "at", "athwart", "atop", "barring", "before", "behind", "below", "beneath", "beside", "besides", "between", "beyond", "but", "by", "circa", "despite", "down", "during", "et", "except", "for", "forenenst", "from", "given", "in", "inside", "into", "lest", "like", "modulo", "near", "next", "notwithstanding", "of", "off", "on", "onto", "out", "over", "per", "plus", "pro", "qua", "sans", "since", "than", "through", " thru", "throughout", "thruout", "till", "to", "toward", "towards", "under", "underneath", "until", "unto", "up", "upon", "versus", "vs.", "v.", "vs", "v", "via", "vis-\xE0-vis", "with", "within", "without", "according to", "ahead of", "apart from", "as for", "as of", "as per", "as regards", "aside from", "back to", "because of", "close to", "due to", "except for", "far from", "inside of", "instead of", "near to", "next to", "on to", "out from", "out of", "outside of", "prior to", "pursuant to", "rather than", "regardless of", "such as", "that of", "up to", "where as", "or", "yet", "so", "for", "and", "nor", "a", "an", "the", "de", "d'", "von", "van", "c", "ca"],
      FORMAT_KEY_SEQUENCE: [
        "@strip-periods",
        "@font-style",
        "@font-variant",
        "@font-weight",
        "@text-decoration",
        "@vertical-align",
        "@quotes"
      ],
      INSTITUTION_KEYS: [
        "font-style",
        "font-variant",
        "font-weight",
        "text-decoration",
        "text-case"
      ],
      SUFFIX_CHARS: "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z",
      ROMAN_NUMERALS: [
        ["", "i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix"],
        ["", "x", "xx", "xxx", "xl", "l", "lx", "lxx", "lxxx", "xc"],
        ["", "c", "cc", "ccc", "cd", "d", "dc", "dcc", "dccc", "cm"],
        ["", "m", "mm", "mmm", "mmmm", "mmmmm"]
      ],
      LANGS: {
        "af-ZA": "Afrikaans",
        "ar": "Arabic",
        "bg-BG": "Bulgarian",
        "ca-AD": "Catalan",
        "cs-CZ": "Czech",
        "da-DK": "Danish",
        "de-AT": "Austrian",
        "de-CH": "German (CH)",
        "de-DE": "German (DE)",
        "el-GR": "Greek",
        "en-GB": "English (GB)",
        "en-US": "English (US)",
        "es-ES": "Spanish",
        "et-EE": "Estonian",
        "eu": "European",
        "fa-IR": "Persian",
        "fi-FI": "Finnish",
        "fr-CA": "French (CA)",
        "fr-FR": "French (FR)",
        "he-IL": "Hebrew",
        "hr-HR": "Croatian",
        "hu-HU": "Hungarian",
        "is-IS": "Icelandic",
        "it-IT": "Italian",
        "ja-JP": "Japanese",
        "km-KH": "Khmer",
        "ko-KR": "Korean",
        "lt-LT": "Lithuanian",
        "lv-LV": "Latvian",
        "mn-MN": "Mongolian",
        "nb-NO": "Norwegian (Bokm\xE5l)",
        "nl-NL": "Dutch",
        "nn-NO": "Norwegian (Nynorsk)",
        "pl-PL": "Polish",
        "pt-BR": "Portuguese (BR)",
        "pt-PT": "Portuguese (PT)",
        "ro-RO": "Romanian",
        "ru-RU": "Russian",
        "sk-SK": "Slovak",
        "sl-SI": "Slovenian",
        "sr-RS": "Serbian",
        "sv-SE": "Swedish",
        "th-TH": "Thai",
        "tr-TR": "Turkish",
        "uk-UA": "Ukrainian",
        "vi-VN": "Vietnamese",
        "zh-CN": "Chinese (CN)",
        "zh-TW": "Chinese (TW)"
      },
      LANG_BASES: {
        af: "af_ZA",
        ar: "ar",
        bg: "bg_BG",
        ca: "ca_AD",
        cs: "cs_CZ",
        da: "da_DK",
        de: "de_DE",
        el: "el_GR",
        en: "en_US",
        es: "es_ES",
        et: "et_EE",
        eu: "eu",
        fa: "fa_IR",
        fi: "fi_FI",
        fr: "fr_FR",
        he: "he_IL",
        hr: "hr-HR",
        hu: "hu_HU",
        is: "is_IS",
        it: "it_IT",
        ja: "ja_JP",
        km: "km_KH",
        ko: "ko_KR",
        lt: "lt_LT",
        lv: "lv-LV",
        mn: "mn_MN",
        nb: "nb_NO",
        nl: "nl_NL",
        nn: "nn-NO",
        pl: "pl_PL",
        pt: "pt_PT",
        ro: "ro_RO",
        ru: "ru_RU",
        sk: "sk_SK",
        sl: "sl_SI",
        sr: "sr_RS",
        sv: "sv_SE",
        th: "th_TH",
        tr: "tr_TR",
        uk: "uk_UA",
        vi: "vi_VN",
        zh: "zh_CN"
      },
      SUPERSCRIPTS: {
        "\xAA": "a",
        "\xB2": "2",
        "\xB3": "3",
        "\xB9": "1",
        "\xBA": "o",
        "\u02B0": "h",
        "\u02B1": "\u0266",
        "\u02B2": "j",
        "\u02B3": "r",
        "\u02B4": "\u0279",
        "\u02B5": "\u027B",
        "\u02B6": "\u0281",
        "\u02B7": "w",
        "\u02B8": "y",
        "\u02E0": "\u0263",
        "\u02E1": "l",
        "\u02E2": "s",
        "\u02E3": "x",
        "\u02E4": "\u0295",
        "\u1D2C": "A",
        "\u1D2D": "\xC6",
        "\u1D2E": "B",
        "\u1D30": "D",
        "\u1D31": "E",
        "\u1D32": "\u018E",
        "\u1D33": "G",
        "\u1D34": "H",
        "\u1D35": "I",
        "\u1D36": "J",
        "\u1D37": "K",
        "\u1D38": "L",
        "\u1D39": "M",
        "\u1D3A": "N",
        "\u1D3C": "O",
        "\u1D3D": "\u0222",
        "\u1D3E": "P",
        "\u1D3F": "R",
        "\u1D40": "T",
        "\u1D41": "U",
        "\u1D42": "W",
        "\u1D43": "a",
        "\u1D44": "\u0250",
        "\u1D45": "\u0251",
        "\u1D46": "\u1D02",
        "\u1D47": "b",
        "\u1D48": "d",
        "\u1D49": "e",
        "\u1D4A": "\u0259",
        "\u1D4B": "\u025B",
        "\u1D4C": "\u025C",
        "\u1D4D": "g",
        "\u1D4F": "k",
        "\u1D50": "m",
        "\u1D51": "\u014B",
        "\u1D52": "o",
        "\u1D53": "\u0254",
        "\u1D54": "\u1D16",
        "\u1D55": "\u1D17",
        "\u1D56": "p",
        "\u1D57": "t",
        "\u1D58": "u",
        "\u1D59": "\u1D1D",
        "\u1D5A": "\u026F",
        "\u1D5B": "v",
        "\u1D5C": "\u1D25",
        "\u1D5D": "\u03B2",
        "\u1D5E": "\u03B3",
        "\u1D5F": "\u03B4",
        "\u1D60": "\u03C6",
        "\u1D61": "\u03C7",
        "\u2070": "0",
        "\u2071": "i",
        "\u2074": "4",
        "\u2075": "5",
        "\u2076": "6",
        "\u2077": "7",
        "\u2078": "8",
        "\u2079": "9",
        "\u207A": "+",
        "\u207B": "\u2212",
        "\u207C": "=",
        "\u207D": "(",
        "\u207E": ")",
        "\u207F": "n",
        "\u2120": "SM",
        "\u2122": "TM",
        "\u3192": "\u4E00",
        "\u3193": "\u4E8C",
        "\u3194": "\u4E09",
        "\u3195": "\u56DB",
        "\u3196": "\u4E0A",
        "\u3197": "\u4E2D",
        "\u3198": "\u4E0B",
        "\u3199": "\u7532",
        "\u319A": "\u4E59",
        "\u319B": "\u4E19",
        "\u319C": "\u4E01",
        "\u319D": "\u5929",
        "\u319E": "\u5730",
        "\u319F": "\u4EBA",
        "\u02C0": "\u0294",
        "\u02C1": "\u0295",
        "\u06E5": "\u0648",
        "\u06E6": "\u064A"
      },
      SUPERSCRIPTS_REGEXP: new RegExp("[\xAA\xB2\xB3\xB9\xBA\u02B0\u02B1\u02B2\u02B3\u02B4\u02B5\u02B6\u02B7\u02B8\u02E0\u02E1\u02E2\u02E3\u02E4\u1D2C\u1D2D\u1D2E\u1D30\u1D31\u1D32\u1D33\u1D34\u1D35\u1D36\u1D37\u1D38\u1D39\u1D3A\u1D3C\u1D3D\u1D3E\u1D3F\u1D40\u1D41\u1D42\u1D43\u1D44\u1D45\u1D46\u1D47\u1D48\u1D49\u1D4A\u1D4B\u1D4C\u1D4D\u1D4F\u1D50\u1D51\u1D52\u1D53\u1D54\u1D55\u1D56\u1D57\u1D58\u1D59\u1D5A\u1D5B\u1D5C\u1D5D\u1D5E\u1D5F\u1D60\u1D61\u2070\u2071\u2074\u2075\u2076\u2077\u2078\u2079\u207A\u207B\u207C\u207D\u207E\u207F\u2120\u2122\u3192\u3193\u3194\u3195\u3196\u3197\u3198\u3199\u319A\u319B\u319C\u319D\u319E\u319F\u02C0\u02C1\u06E5\u06E6]", "g"),
      // I think we need to have separate args for prefix and term,
      // since they have different effects between comma-safe and comma-safe-numbers-only.
      // Either that, or -- oh, we could just bang the two together for the test where
      // necessary.
      UPDATE_GROUP_CONTEXT_CONDITION: function(state, str2, valueTerm, token, value) {
        if (!state.opt.use_context_condition) return;
        var flags = state.tmp.group_context.tip;
        if (flags.condition) {
          if (!flags.condition.termtxt) {
            flags.condition.termtxt = str2;
            flags.condition.valueTerm = valueTerm;
          }
          if (!flags.value_seen && flags.condition.test === "comma-safe-numbers-only") {
            if (value) {
              flags.value_seen = true;
              if (!value.match(/^[0-9]/)) {
                state.tmp.just_did_number = false;
              }
            }
          }
        } else {
          if (token && token.decorations.filter((o) => o[0] === "@vertical-align").length > 0) {
            state.tmp.just_did_number = false;
          } else if (token && token.strings.suffix) {
            state.tmp.just_did_number = false;
          } else if (str2) {
            if (str2.match(/[0-9]$/)) {
              state.tmp.just_did_number = true;
            } else {
              state.tmp.just_did_number = false;
            }
          }
        }
      },
      EVALUATE_GROUP_CONDITION: function(state, flags) {
        if (!state.opt.use_context_condition) return;
        var testres;
        var numbersOnly = flags.condition.test === "comma-safe-numbers-only";
        if (flags.condition.test === "empty-label") {
          testres = !flags.condition.termtxt;
        } else if (flags.condition.test === "empty-label-no-decor") {
          testres = !flags.condition.termtxt || flags.condition.termtxt.indexOf("%s") > -1;
        } else if (["comma-safe", "comma-safe-numbers-only"].indexOf(flags.condition.test) > -1) {
          var locale_term = flags.condition.termtxt;
          var termStartAlpha = false;
          if (flags.condition.termtxt) {
            termStartAlpha = flags.condition.termtxt.slice(0, 1).match(CSL.ALL_ROMANESQUE_REGEXP);
          }
          var num = state.tmp.just_did_number;
          if (num) {
            if (flags.condition.valueTerm) {
              testres = numbersOnly ? false : true;
            } else if (!locale_term) {
              testres = true;
            } else if (termStartAlpha) {
              testres = numbersOnly ? false : true;
            } else if (["always", "after-number"].indexOf(state.opt.require_comma_on_symbol) > -1) {
              testres = true;
            } else {
              testres = false;
            }
          } else {
            if (flags.condition.valueTerm) {
              testres = false;
            } else if (!locale_term) {
              testres = false;
            } else if (termStartAlpha) {
              testres = numbersOnly ? false : true;
            } else if (state.opt.require_comma_on_symbol === "always") {
              testres = true;
            } else {
              testres = false;
            }
          }
        }
        if (testres) {
          var force_suppress = false;
        } else {
          var force_suppress = true;
        }
        if (flags.condition.not) {
          force_suppress = !force_suppress;
        }
        return force_suppress;
      },
      SYS_OPTIONS: [
        "prioritize_disambiguate_condition",
        "csl_reverse_lookup_support",
        "main_title_from_short_title",
        "uppercase_subtitles",
        "force_short_title_casing_alignment",
        "implicit_short_title",
        "split_container_title"
      ],
      TITLE_SPLIT_REGEXP: (function() {
        var splits = [
          "\\.\\s+",
          "\\!\\s+",
          "\\?\\s+",
          "\\s*::*\\s+",
          "\\s*\u2014\\s*",
          "\\s+\\-\\s+",
          "\\s*\\-\\-\\-*\\s*"
        ];
        return {
          match: new RegExp("(" + splits.join("|") + ")", "g"),
          matchfirst: new RegExp("^(" + splits.join("|") + ")"),
          split: new RegExp("(?:" + splits.join("|") + ")")
        };
      })(),
      TITLE_SPLIT: function(str2) {
        if (!str2) {
          return str2;
        }
        var m2 = str2.match(CSL.TITLE_SPLIT_REGEXP.match);
        var lst = str2.split(CSL.TITLE_SPLIT_REGEXP.split);
        for (var i2 = lst.length - 2; i2 > -1; i2--) {
          lst[i2] = lst[i2].trim();
          if (lst[i2] && lst[i2].slice(-1).toLowerCase() !== lst[i2].slice(-1)) {
            lst[i2] = lst[i2] + m2[i2] + lst[i2 + 1];
            lst = lst.slice(0, i2 + 1).concat(lst.slice(i2 + 2));
          } else {
            lst = lst.slice(0, i2 + 1).concat([m2[i2]]).concat(lst.slice(i2 + 1));
          }
        }
        return lst;
      },
      GET_COURT_CLASS: function(state, Item, sortKey) {
        var cls = "";
        var authority = null;
        var country = Item.jurisdiction ? Item.jurisdiction.split(":")[0] : null;
        var classType = "court_condition_classes";
        if (sortKey) {
          classType = "court_key_classes";
        }
        if (country && Item.authority) {
          if ("string" === typeof Item.authority) {
            authority = Item.authority;
          } else {
            if (Item.authority[0] && Item.authority[0].literal) {
              authority = Item.authority[0].literal;
            }
          }
        }
        if (authority) {
          if (this.lang && state.locale[this.lang].opts[classType] && state.locale[this.lang].opts[classType][country] && state.locale[this.lang].opts[classType][country][authority]) {
            cls = state.locale[this.lang].opts[classType][country][authority];
          } else if (state.locale[state.opt["default-locale"][0]].opts[classType] && state.locale[state.opt["default-locale"][0]].opts[classType][country] && state.locale[state.opt["default-locale"][0]].opts[classType][country][authority]) {
            cls = state.locale[state.opt["default-locale"][0]].opts[classType][country][authority];
          }
        }
        return cls;
      },
      SET_COURT_CLASSES: function(state, lang, myxml, dataObj) {
        var nodes = myxml.getNodesByName(dataObj, "court-class");
        for (var pos = 0, len = myxml.numberofnodes(nodes); pos < len; pos += 1) {
          var courtclass = nodes[pos];
          var attributes = myxml.attributes(courtclass);
          var cls = attributes["@name"];
          var country = attributes["@country"];
          var courts = attributes["@courts"];
          var classType = "court_key_classes";
          if (state.registry) {
            classType = "court_condition_classes";
          }
          if (cls && country && courts) {
            courts = courts.trim().split(/\s+/);
            if (!state.locale[lang].opts[classType]) {
              state.locale[lang].opts[classType] = {};
            }
            if (!state.locale[lang].opts[classType][country]) {
              state.locale[lang].opts[classType][country] = {};
            }
            for (var i2 = 0, ilen = courts.length; i2 < ilen; i2++) {
              state.locale[lang].opts[classType][country][courts[i2]] = cls;
            }
          }
        }
      },
      INIT_JURISDICTION_MACROS: function(state, Item, item, macroName) {
        if (Item["best-jurisdiction"]) {
          return true;
        }
        if (!state.sys.retrieveStyleModule || !CSL.MODULE_MACROS[macroName] || !Item.jurisdiction) {
          return false;
        }
        var jurisdictionList = state.getJurisdictionList(Item.jurisdiction);
        if (!state.opt.jurisdictions_seen[jurisdictionList[0]]) {
          var res = state.retrieveAllStyleModules(jurisdictionList);
          for (var jurisdiction in res) {
            var fallback = state.loadStyleModule(jurisdiction, res[jurisdiction]);
            if (fallback) {
              if (!res[fallback]) {
                Object.assign(res, state.retrieveAllStyleModules([fallback]));
                state.loadStyleModule(fallback, res[fallback], true);
              }
            }
          }
        }
        var jurisdictionList = state.getJurisdictionList(Item.jurisdiction);
        if (state.opt.parallel.enable) {
          if (!state.parallel) {
            state.parallel = new CSL.Parallel(state);
          }
        }
        for (var i2 = 0, ilen = jurisdictionList.length; i2 < ilen; i2++) {
          var jurisdiction = jurisdictionList[i2];
          if (item) {
            if (state.juris[jurisdiction] && !item["best-jurisdiction"] && state.juris[jurisdiction].types.locator) {
              Item["best-jurisdiction"] = jurisdiction;
            }
          }
          if (state.juris[jurisdiction] && state.juris[jurisdiction].types[Item.type]) {
            Item["best-jurisdiction"] = jurisdiction;
            return true;
          }
        }
        return false;
      }
    };
    CSL.XmlJSON = function(dataObj) {
      this.dataObj = dataObj;
      this.institution = {
        name: "institution",
        attrs: {
          "institution-parts": "long",
          "delimiter": ", "
        },
        children: [
          {
            name: "institution-part",
            attrs: {
              name: "long"
            },
            children: []
          }
        ]
      };
    };
    CSL.XmlJSON.prototype.clean = function(json2) {
      return json2;
    };
    CSL.XmlJSON.prototype.getStyleId = function(myjson, styleName) {
      var tagName = "id";
      if (styleName) {
        tagName = "title";
      }
      var ret = "";
      var children = myjson.children;
      for (var i2 = 0, ilen = children.length; i2 < ilen; i2++) {
        if (children[i2].name === "info") {
          var grandkids = children[i2].children;
          for (var j = 0, jlen = grandkids.length; j < jlen; j++) {
            if (grandkids[j].name === tagName) {
              ret = grandkids[j].children[0];
            }
          }
        }
      }
      return ret;
    };
    CSL.XmlJSON.prototype.children = function(myjson) {
      if (myjson && myjson.children.length) {
        return myjson.children.slice();
      } else {
        return false;
      }
    };
    CSL.XmlJSON.prototype.nodename = function(myjson) {
      return myjson ? myjson.name : null;
    };
    CSL.XmlJSON.prototype.attributes = function(myjson) {
      var ret = {};
      for (var attrname in myjson.attrs) {
        ret["@" + attrname] = myjson.attrs[attrname];
      }
      return ret;
    };
    CSL.XmlJSON.prototype.content = function(myjson) {
      var ret = "";
      if (!myjson || !myjson.children) {
        return ret;
      }
      for (var i2 = 0, ilen = myjson.children.length; i2 < ilen; i2 += 1) {
        if ("string" === typeof myjson.children[i2]) {
          ret += myjson.children[i2];
        }
      }
      return ret;
    };
    CSL.XmlJSON.prototype.namespace = {};
    CSL.XmlJSON.prototype.numberofnodes = function(myjson) {
      if (myjson && "number" == typeof myjson.length) {
        return myjson.length;
      } else {
        return 0;
      }
    };
    CSL.XmlJSON.prototype.getAttributeValue = function(myjson, name3, namespace) {
      var ret = "";
      if (namespace) {
        name3 = namespace + ":" + name3;
      }
      if (myjson) {
        if (myjson.attrs) {
          if (myjson.attrs[name3]) {
            ret = myjson.attrs[name3];
          } else {
            ret = "";
          }
        }
      }
      return ret;
    };
    CSL.XmlJSON.prototype.getNodeValue = function(myjson, name3) {
      var ret = "";
      if (name3) {
        for (var i2 = 0, ilen = myjson.children.length; i2 < ilen; i2 += 1) {
          if (myjson.children[i2].name === name3) {
            if (myjson.children[i2].children.length) {
              ret = myjson.children[i2];
            } else {
              ret = "";
            }
          }
        }
      } else if (myjson) {
        ret = myjson;
      }
      if (ret && ret.children && ret.children.length == 1 && "string" === typeof ret.children[0]) {
        ret = ret.children[0];
      }
      return ret;
    };
    CSL.XmlJSON.prototype.setAttributeOnNodeIdentifiedByNameAttribute = function(myjson, nodename, partname, attrname, val) {
      var pos, len, xml2, nodes, node3;
      if (attrname.slice(0, 1) === "@") {
        attrname = attrname.slice(1);
      }
      for (var i2 = 0, ilen = myjson.children.length; i2 < ilen; i2 += 1) {
        if (myjson.children[i2].name === nodename && myjson.children[i2].attrs.name === partname) {
          myjson.children[i2].attrs[attrname] = val;
        }
      }
    };
    CSL.XmlJSON.prototype.deleteNodeByNameAttribute = function(myjson, val) {
      var i2, ilen;
      for (i2 = 0, ilen = myjson.children.length; i2 < ilen; i2 += 1) {
        if (!myjson.children[i2] || "string" === typeof myjson.children[i2]) {
          continue;
        }
        if (myjson.children[i2].attrs.name == val) {
          myjson.children = myjson.children.slice(0, i2).concat(myjson.children.slice(i2 + 1));
        }
      }
    };
    CSL.XmlJSON.prototype.deleteAttribute = function(myjson, attrname) {
      var i2, ilen;
      if ("undefined" !== typeof myjson.attrs[attrname]) {
        myjson.attrs.pop(attrname);
      }
    };
    CSL.XmlJSON.prototype.setAttribute = function(myjson, attr, val) {
      myjson.attrs[attr] = val;
      return false;
    };
    CSL.XmlJSON.prototype.nodeCopy = function(myjson, clone3) {
      if (!clone3) {
        var clone3 = {};
      }
      if ("object" === typeof clone3 && "undefined" === typeof clone3.length) {
        for (var key2 in myjson) {
          if ("string" === typeof myjson[key2]) {
            clone3[key2] = myjson[key2];
          } else if ("object" === typeof myjson[key2]) {
            if ("undefined" === typeof myjson[key2].length) {
              clone3[key2] = this.nodeCopy(myjson[key2], {});
            } else {
              clone3[key2] = this.nodeCopy(myjson[key2], []);
            }
          }
        }
      } else {
        for (var i2 = 0, ilen = myjson.length; i2 < ilen; i2 += 1) {
          if ("string" === typeof myjson[i2]) {
            clone3[i2] = myjson[i2];
          } else {
            clone3[i2] = this.nodeCopy(myjson[i2], {});
          }
        }
      }
      return clone3;
    };
    CSL.XmlJSON.prototype.getNodesByName = function(myjson, name3, nameattrval, ret) {
      var nodes, node3, pos, len;
      if (!ret) {
        var ret = [];
      }
      if (!myjson || !myjson.children) {
        return ret;
      }
      if (name3 === myjson.name) {
        if (nameattrval) {
          if (nameattrval === myjson.attrs.name) {
            ret.push(myjson);
          }
        } else {
          ret.push(myjson);
        }
      }
      for (var i2 = 0, ilen = myjson.children.length; i2 < ilen; i2 += 1) {
        if ("object" !== typeof myjson.children[i2]) {
          continue;
        }
        this.getNodesByName(myjson.children[i2], name3, nameattrval, ret);
      }
      return ret;
    };
    CSL.XmlJSON.prototype.nodeNameIs = function(myjson, name3) {
      if (typeof myjson === "undefined") {
        return false;
      }
      if (name3 == myjson.name) {
        return true;
      }
      return false;
    };
    CSL.XmlJSON.prototype.makeXml = function(myjson) {
      if ("string" === typeof myjson) {
        if (myjson.slice(0, 1) === "<") {
          myjson = this.jsonStringWalker.walkToObject(myjson);
        } else {
          myjson = JSON.parse(myjson);
        }
      }
      return myjson;
    };
    CSL.XmlJSON.prototype.insertChildNodeAfter = function(parent2, node3, pos, datejson) {
      for (var i2 = 0, ilen = parent2.children.length; i2 < ilen; i2 += 1) {
        if (node3 === parent2.children[i2]) {
          parent2.children = parent2.children.slice(0, i2).concat([datejson]).concat(parent2.children.slice(i2 + 1));
          break;
        }
      }
      return parent2;
    };
    CSL.XmlJSON.prototype.insertPublisherAndPlace = function(myjson) {
      if (myjson.name === "group") {
        var useme = true;
        var mustHaves = ["publisher", "publisher-place"];
        for (var i2 = 0, ilen = myjson.children.length; i2 < ilen; i2 += 1) {
          var haveVarname = mustHaves.indexOf(myjson.children[i2].attrs.variable);
          var isText = myjson.children[i2].name === "text";
          if (isText && haveVarname > -1 && !myjson.children[i2].attrs.prefix && !myjson.children[i2].attrs.suffix) {
            mustHaves = mustHaves.slice(0, haveVarname).concat(mustHaves.slice(haveVarname + 1));
          } else {
            useme = false;
            break;
          }
        }
        if (useme && !mustHaves.length) {
          myjson.attrs["has-publisher-and-publisher-place"] = true;
        }
      }
      for (var i2 = 0, ilen = myjson.children.length; i2 < ilen; i2 += 1) {
        if ("object" === typeof myjson.children[i2]) {
          this.insertPublisherAndPlace(myjson.children[i2]);
        }
      }
    };
    CSL.XmlJSON.prototype.isChildOfSubstitute = function(parents) {
      if (parents.length > 0) {
        var myparents = parents.slice();
        var parent2 = myparents.pop();
        if (parent2 === "substitute") {
          return true;
        } else {
          return this.isChildOfSubstitute(myparents);
        }
      }
      return false;
    };
    CSL.XmlJSON.prototype.addMissingNameNodes = function(myjson, parents) {
      if (!parents) {
        parents = [];
      }
      if (myjson.name === "names") {
        if (!this.isChildOfSubstitute(parents)) {
          var addName = true;
          for (var i2 = 0, ilen = myjson.children.length; i2 < ilen; i2++) {
            if (myjson.children[i2].name === "name") {
              addName = false;
              break;
            }
          }
          if (addName) {
            myjson.children = [{ name: "name", attrs: {}, children: [] }].concat(myjson.children);
          }
        }
      }
      parents.push(myjson.name);
      for (var i2 = 0, ilen = myjson.children.length; i2 < ilen; i2 += 1) {
        if ("object" === typeof myjson.children[i2]) {
          this.addMissingNameNodes(myjson.children[i2], parents);
        }
      }
      parents.pop();
    };
    CSL.XmlJSON.prototype.addInstitutionNodes = function(myjson) {
      var names, thenames, institution, theinstitution, name3, thename, xml2, pos, len;
      if (myjson.name === "names") {
        var attributes = {};
        var insertPos = -1;
        for (var i2 = 0, ilen = myjson.children.length; i2 < ilen; i2 += 1) {
          if (myjson.children[i2].name == "name") {
            for (var key2 in myjson.children[i2].attrs) {
              attributes[key2] = myjson.children[i2].attrs[key2];
            }
            attributes.delimiter = myjson.children[i2].attrs.delimiter;
            attributes.and = myjson.children[i2].attrs.and;
            insertPos = i2;
            for (var k = 0, klen = myjson.children[i2].children.length; k < klen; k += 1) {
              if (myjson.children[i2].children[k].attrs.name !== "family") {
                continue;
              }
              for (var key2 in myjson.children[i2].children[k].attrs) {
                attributes[key2] = myjson.children[i2].children[k].attrs[key2];
              }
            }
          }
          if (myjson.children[i2].name == "institution") {
            insertPos = -1;
            break;
          }
        }
        if (insertPos > -1) {
          var institution = this.nodeCopy(this.institution);
          for (var i2 = 0, ilen = CSL.INSTITUTION_KEYS.length; i2 < ilen; i2 += 1) {
            var attrname = CSL.INSTITUTION_KEYS[i2];
            if ("undefined" !== typeof attributes[attrname]) {
              institution.children[0].attrs[attrname] = attributes[attrname];
            }
            if (attributes.delimiter) {
              institution.attrs.delimiter = attributes.delimiter;
            }
            if (attributes.and) {
              institution.attrs.and = attributes.and;
            }
          }
          myjson.children = myjson.children.slice(0, insertPos + 1).concat([institution]).concat(myjson.children.slice(insertPos + 1));
        }
      }
      for (var i2 = 0, ilen = myjson.children.length; i2 < ilen; i2 += 1) {
        if ("string" === typeof myjson.children[i2]) {
          continue;
        }
        this.addInstitutionNodes(myjson.children[i2]);
      }
    };
    CSL.XmlJSON.prototype.flagDateMacros = function(myjson) {
      for (var i2 = 0, ilen = myjson.children.length; i2 < ilen; i2 += 1) {
        if (myjson.children[i2].name === "macro") {
          if (this.inspectDateMacros(myjson.children[i2])) {
            myjson.children[i2].attrs["macro-has-date"] = "true";
          }
        }
      }
    };
    CSL.XmlJSON.prototype.inspectDateMacros = function(myjson) {
      if (!myjson || !myjson.children) {
        return false;
      }
      if (myjson.name === "date") {
        return true;
      } else {
        for (var i2 = 0, ilen = myjson.children.length; i2 < ilen; i2 += 1) {
          if (this.inspectDateMacros(myjson.children[i2])) {
            return true;
          }
        }
      }
      return false;
    };
    CSL.stripXmlProcessingInstruction = function(xml2) {
      if (!xml2) {
        return xml2;
      }
      xml2 = xml2.replace(/^<\?[^?]+\?>/, "");
      xml2 = xml2.replace(/<!--[^>]+-->/g, "");
      xml2 = xml2.replace(/^\s+/g, "");
      xml2 = xml2.replace(/\s+$/g, "");
      return xml2;
    };
    CSL.parseXml = function(str2) {
      var _pos = 0;
      var _obj = { children: [] };
      var _stack = [_obj.children];
      function _listifyString(str3) {
        str3 = str3.split(/(?:\r\n|\n|\r)/).join(" ").replace(/>[	 ]+</g, "><").replace(/<\!--.*?-->/g, "");
        var lst2 = str3.split("><");
        var stylePos = null;
        for (var i3 = 0, ilen2 = lst2.length; i3 < ilen2; i3++) {
          if (i3 > 0) {
            lst2[i3] = "<" + lst2[i3];
          }
          if (i3 < lst2.length - 1) {
            lst2[i3] = lst2[i3] + ">";
          }
          if ("number" != typeof stylePos) {
            if (lst2[i3].slice(0, 7) === "<style " || lst2[i3].slice(0, 8) == "<locale ") {
              stylePos = i3;
            }
          }
        }
        lst2 = lst2.slice(stylePos);
        for (var i3 = lst2.length - 2; i3 > -1; i3--) {
          if (lst2[i3].slice(1).indexOf("<") === -1) {
            var stub = lst2[i3].slice(0, 5);
            if (lst2[i3].slice(-2) !== "/>") {
              if (stub === "<term") {
                if (lst2[i3 + 1].slice(0, 6) === "</term") {
                  lst2[i3] = lst2[i3] + lst2[i3 + 1];
                  lst2 = lst2.slice(0, i3 + 1).concat(lst2.slice(i3 + 2));
                }
              } else if (["<sing", "<mult"].indexOf(stub) > -1) {
                if (lst2[i3].slice(-2) !== "/>" && lst2[i3 + 1].slice(0, 1) === "<") {
                  lst2[i3] = lst2[i3] + lst2[i3 + 1];
                  lst2 = lst2.slice(0, i3 + 1).concat(lst2.slice(i3 + 2));
                }
              }
            }
          }
        }
        return lst2;
      }
      function _decodeHtmlEntities(str3) {
        return str3.split("&amp;").join("&").split("&quot;").join('"').split("&gt;").join(">").split("&lt;").join("<").replace(/&#([0-9]{1,6});/gi, function(match3, numStr) {
          var num = parseInt(numStr, 10);
          return String.fromCharCode(num);
        }).replace(/&#x([a-f0-9]{1,6});/gi, function(match3, numStr) {
          var num = parseInt(numStr, 16);
          return String.fromCharCode(num);
        });
      }
      function _getAttributes(elem2) {
        var m2 = elem2.match(/([^\'\"=	 ]+)=(?:\"[^\"]*\"|\'[^\']*\')/g);
        if (m2) {
          for (var i3 = 0, ilen2 = m2.length; i3 < ilen2; i3++) {
            m2[i3] = m2[i3].replace(/=.*/, "");
          }
        }
        return m2;
      }
      function _getAttribute(elem2, attr) {
        var rex = RegExp("^.*[	 ]+" + attr + `=("(?:[^"]*)"|'(?:[^']*)').*$`);
        var m2 = elem2.match(rex);
        return m2 ? m2[1].slice(1, -1) : null;
      }
      function _getTagName(elem2) {
        var rex = RegExp("^<([^	 />]+)");
        var m2 = elem2.match(rex);
        return m2 ? m2[1] : null;
      }
      function _castObjectFromOpeningTag(elem2) {
        var obj = {};
        obj.name = _getTagName(elem2);
        obj.attrs = {};
        var attributes = _getAttributes(elem2);
        if (attributes) {
          for (var i3 = 0, ilen2 = attributes.length; i3 < ilen2; i3++) {
            var attr = {
              name: attributes[i3],
              value: _getAttribute(elem2, attributes[i3])
            };
            obj.attrs[attr.name] = _decodeHtmlEntities(attr.value);
          }
        }
        obj.children = [];
        return obj;
      }
      function _extractTextFromCompositeElement(elem2) {
        var m2 = elem2.match(/^.*>([^<]*)<.*$/);
        return _decodeHtmlEntities(m2[1]);
      }
      function _appendToChildren(obj) {
        _stack.slice(-1)[0].push(obj);
      }
      function _extendStackWithNewChildren(obj) {
        _stack.push(obj.children);
      }
      function processElement(elem2) {
        var obj;
        if (elem2.slice(1).indexOf("<") > -1) {
          var tag = elem2.slice(0, elem2.indexOf(">") + 1);
          obj = _castObjectFromOpeningTag(tag);
          obj.children = [_extractTextFromCompositeElement(elem2)];
          _appendToChildren(obj);
        } else if (elem2.slice(-2) === "/>") {
          obj = _castObjectFromOpeningTag(elem2);
          if (_getTagName(elem2) === "term") {
            obj.children.push("");
          }
          _appendToChildren(obj);
        } else if (elem2.slice(0, 2) === "</") {
          _stack.pop();
        } else {
          obj = _castObjectFromOpeningTag(elem2);
          _appendToChildren(obj);
          _extendStackWithNewChildren(obj);
        }
      }
      var lst = _listifyString(str2);
      for (var i2 = 0, ilen = lst.length; i2 < ilen; i2++) {
        var elem = lst[i2];
        processElement(elem);
      }
      return _obj.children[0];
    };
    CSL.XmlDOM = function(dataObj) {
      this.dataObj = dataObj;
      if ("undefined" == typeof DOMParser) {
        DOMParser = function() {
        };
        DOMParser.prototype.parseFromString = function(str3, contentType) {
          if ("undefined" != typeof ActiveXObject) {
            var xmldata = new ActiveXObject("MSXML.DomDocument");
            xmldata.async = false;
            xmldata.loadXML(str3);
            return xmldata;
          } else if ("undefined" != typeof XMLHttpRequest) {
            var xmldata = new XMLHttpRequest();
            if (!contentType) {
              contentType = "text/xml";
            }
            xmldata.open("GET", "data:" + contentType + ";charset=utf-8," + encodeURIComponent(str3), false);
            if (xmldata.overrideMimeType) {
              xmldata.overrideMimeType(contentType);
            }
            xmldata.send(null);
            return xmldata.responseXML;
          } else if ("undefined" != typeof marknote) {
            var parser3 = new marknote.Parser();
            return parser3.parse(str3);
          }
        };
        this.hasAttributes = function(node3) {
          var ret;
          if (node3.attributes && node3.attributes.length) {
            ret = true;
          } else {
            ret = false;
          }
          return ret;
        };
      } else {
        this.hasAttributes = function(node3) {
          var ret;
          if (node3.attributes && node3.attributes.length) {
            ret = true;
          } else {
            ret = false;
          }
          return ret;
        };
      }
      this.importNode = function(doc, srcElement) {
        var ret;
        if ("undefined" == typeof doc.importNode) {
          ret = this._importNode(doc, srcElement, true);
        } else {
          ret = doc.importNode(srcElement, true);
        }
        return ret;
      };
      this._importNode = function(doc, node3, allChildren) {
        switch (node3.nodeType) {
          // element node
          case 1:
            var newNode = doc.createElement(node3.nodeName);
            if (node3.attributes && node3.attributes.length > 0)
              for (var i2 = 0, il = node3.attributes.length; i2 < il; )
                newNode.setAttribute(node3.attributes[i2].nodeName, node3.getAttribute(node3.attributes[i2++].nodeName));
            if (allChildren && node3.childNodes && node3.childNodes.length > 0)
              for (var i2 = 0, il = node3.childNodes.length; i2 < il; )
                newNode.appendChild(this._importNode(doc, node3.childNodes[i2++], allChildren));
            return newNode;
            break;
          case 3:
          case 4:
          case 8:
        }
      };
      this.parser = new DOMParser();
      var str2 = '<docco><institution institution-parts="long" delimiter=", " substitute-use-first="1" use-last="1"><institution-part name="long"/></institution></docco>';
      var inst_doc = this.parser.parseFromString(str2, "text/xml");
      var inst_node = inst_doc.getElementsByTagName("institution");
      this.institution = inst_node.item(0);
      var inst_part_node = inst_doc.getElementsByTagName("institution-part");
      this.institutionpart = inst_part_node.item(0);
      this.ns = "http://purl.org/net/xbiblio/csl";
    };
    CSL.XmlDOM.prototype.clean = function(xml2) {
      xml2 = xml2.replace(/<\?[^?]+\?>/g, "");
      xml2 = xml2.replace(/<![^>]+>/g, "");
      xml2 = xml2.replace(/^\s+/, "");
      xml2 = xml2.replace(/\s+$/, "");
      xml2 = xml2.replace(/^\n*/, "");
      return xml2;
    };
    CSL.XmlDOM.prototype.getStyleId = function(myxml, styleName) {
      var text7 = "";
      var tagName = "id";
      if (styleName) {
        tagName = "title";
      }
      var node3 = myxml.getElementsByTagName(tagName);
      if (node3 && node3.length) {
        node3 = node3.item(0);
      }
      if (node3) {
        text7 = node3.textContent;
      }
      if (!text7) {
        text7 = node3.innerText;
      }
      if (!text7) {
        text7 = node3.innerHTML;
      }
      return text7;
    };
    CSL.XmlDOM.prototype.children = function(myxml) {
      var children, pos, len, ret;
      if (myxml) {
        ret = [];
        children = myxml.childNodes;
        for (pos = 0, len = children.length; pos < len; pos += 1) {
          if (children[pos].nodeName != "#text") {
            ret.push(children[pos]);
          }
        }
        return ret;
      } else {
        return [];
      }
    };
    CSL.XmlDOM.prototype.nodename = function(myxml) {
      var ret = myxml.nodeName;
      return ret;
    };
    CSL.XmlDOM.prototype.attributes = function(myxml) {
      var ret, attrs, attr, key2, xml2, pos, len;
      ret = new Object();
      if (myxml && this.hasAttributes(myxml)) {
        attrs = myxml.attributes;
        for (pos = 0, len = attrs.length; pos < len; pos += 1) {
          attr = attrs[pos];
          ret["@" + attr.name] = attr.value;
        }
      }
      return ret;
    };
    CSL.XmlDOM.prototype.content = function(myxml) {
      var ret;
      if ("undefined" != typeof myxml.textContent) {
        ret = myxml.textContent;
      } else if ("undefined" != typeof myxml.innerText) {
        ret = myxml.innerText;
      } else {
        ret = myxml.txt;
      }
      return ret;
    };
    CSL.XmlDOM.prototype.namespace = {
      "xml": "http://www.w3.org/XML/1998/namespace"
    };
    CSL.XmlDOM.prototype.numberofnodes = function(myxml) {
      if (myxml) {
        return myxml.length;
      } else {
        return 0;
      }
    };
    CSL.XmlDOM.prototype.getAttributeName = function(attr) {
      var ret = attr.name;
      return ret;
    };
    CSL.XmlDOM.prototype.getAttributeValue = function(myxml, name3, namespace) {
      var ret = "";
      if (namespace) {
        name3 = namespace + ":" + name3;
      }
      if (myxml && this.hasAttributes(myxml) && myxml.getAttribute(name3)) {
        ret = myxml.getAttribute(name3);
      }
      return ret;
    };
    CSL.XmlDOM.prototype.getNodeValue = function(myxml, name3) {
      var ret = null;
      if (name3) {
        var vals = myxml.getElementsByTagName(name3);
        if (vals.length > 0) {
          if ("undefined" != typeof vals[0].textContent) {
            ret = vals[0].textContent;
          } else if ("undefined" != typeof vals[0].innerText) {
            ret = vals[0].innerText;
          } else {
            ret = vals[0].text;
          }
        }
      }
      if (ret === null && myxml && myxml.childNodes && (myxml.childNodes.length == 0 || myxml.childNodes.length == 1 && myxml.firstChild.nodeName == "#text")) {
        if ("undefined" != typeof myxml.textContent) {
          ret = myxml.textContent;
        } else if ("undefined" != typeof myxml.innerText) {
          ret = myxml.innerText;
        } else {
          ret = myxml.text;
        }
      }
      if (ret === null) {
        ret = myxml;
      }
      return ret;
    };
    CSL.XmlDOM.prototype.setAttributeOnNodeIdentifiedByNameAttribute = function(myxml, nodename, partname, attrname, val) {
      var pos, len, xml2, nodes, node3;
      if (attrname.slice(0, 1) === "@") {
        attrname = attrname.slice(1);
      }
      nodes = myxml.getElementsByTagName(nodename);
      for (pos = 0, len = nodes.length; pos < len; pos += 1) {
        node3 = nodes[pos];
        if (node3.getAttribute("name") != partname) {
          continue;
        }
        node3.setAttribute(attrname, val);
      }
    };
    CSL.XmlDOM.prototype.deleteNodeByNameAttribute = function(myxml, val) {
      var pos, len, node3, nodes;
      nodes = myxml.childNodes;
      for (pos = 0, len = nodes.length; pos < len; pos += 1) {
        node3 = nodes[pos];
        if (!node3 || node3.nodeType == node3.TEXT_NODE) {
          continue;
        }
        if (this.hasAttributes(node3) && node3.getAttribute("name") == val) {
          myxml.removeChild(nodes[pos]);
        }
      }
    };
    CSL.XmlDOM.prototype.deleteAttribute = function(myxml, attr) {
      myxml.removeAttribute(attr);
    };
    CSL.XmlDOM.prototype.setAttribute = function(myxml, attr, val) {
      if (!myxml.ownerDocument) {
        myxml = myxml.firstChild;
      }
      if (["function", "unknown"].indexOf(typeof myxml.setAttribute) > -1) {
        myxml.setAttribute(attr, val);
      }
      return false;
    };
    CSL.XmlDOM.prototype.nodeCopy = function(myxml) {
      var cloned_node = myxml.cloneNode(true);
      return cloned_node;
    };
    CSL.XmlDOM.prototype.getNodesByName = function(myxml, name3, nameattrval) {
      var ret, nodes, node3, pos, len;
      ret = [];
      nodes = myxml.getElementsByTagName(name3);
      for (pos = 0, len = nodes.length; pos < len; pos += 1) {
        node3 = nodes.item(pos);
        if (nameattrval && !(this.hasAttributes(node3) && node3.getAttribute("name") == nameattrval)) {
          continue;
        }
        ret.push(node3);
      }
      return ret;
    };
    CSL.XmlDOM.prototype.nodeNameIs = function(myxml, name3) {
      if (name3 == myxml.nodeName) {
        return true;
      }
      return false;
    };
    CSL.XmlDOM.prototype.makeXml = function(myxml) {
      var ret, topnode;
      if (!myxml) {
        myxml = "<docco><bogus/></docco>";
      }
      myxml = myxml.replace(/\s*<\?[^>]*\?>\s*\n*/g, "");
      var nodetree = this.parser.parseFromString(myxml, "application/xml");
      return nodetree.firstChild;
    };
    CSL.XmlDOM.prototype.insertChildNodeAfter = function(parent2, node3, pos, datexml) {
      var myxml, xml2;
      myxml = this.importNode(node3.ownerDocument, datexml);
      parent2.replaceChild(myxml, node3);
      return parent2;
    };
    CSL.XmlDOM.prototype.insertPublisherAndPlace = function(myxml) {
      var group3 = myxml.getElementsByTagName("group");
      for (var i2 = 0, ilen = group3.length; i2 < ilen; i2 += 1) {
        var node3 = group3.item(i2);
        var skippers = [];
        for (var j = 0, jlen = node3.childNodes.length; j < jlen; j += 1) {
          if (node3.childNodes.item(j).nodeType !== 1) {
            skippers.push(j);
          }
        }
        if (node3.childNodes.length - skippers.length === 2) {
          var twovars = [];
          for (var j = 0, jlen = 2; j < jlen; j += 1) {
            if (skippers.indexOf(j) > -1) {
              continue;
            }
            var child = node3.childNodes.item(j);
            var subskippers = [];
            for (var k = 0, klen = child.childNodes.length; k < klen; k += 1) {
              if (child.childNodes.item(k).nodeType !== 1) {
                subskippers.push(k);
              }
            }
            if (child.childNodes.length - subskippers.length === 0) {
              twovars.push(child.getAttribute("variable"));
              if (child.getAttribute("suffix") || child.getAttribute("prefix")) {
                twovars = [];
                break;
              }
            }
          }
          if (twovars.indexOf("publisher") > -1 && twovars.indexOf("publisher-place") > -1) {
            node3.setAttribute("has-publisher-and-publisher-place", true);
          }
        }
      }
    };
    CSL.XmlDOM.prototype.isChildOfSubstitute = function(node3) {
      if (node3.parentNode) {
        if (node3.parentNode.tagName.toLowerCase() === "substitute") {
          return true;
        } else {
          return this.isChildOfSubstitute(node3.parentNode);
        }
      }
      return false;
    };
    CSL.XmlDOM.prototype.addMissingNameNodes = function(myxml) {
      var nameslist = myxml.getElementsByTagName("names");
      for (var i2 = 0, ilen = nameslist.length; i2 < ilen; i2 += 1) {
        var names = nameslist.item(i2);
        var namelist = names.getElementsByTagName("name");
        if ((!namelist || namelist.length === 0) && !this.isChildOfSubstitute(names)) {
          var doc = names.ownerDocument;
          var name3 = doc.createElement("name");
          names.appendChild(name3);
        }
      }
    };
    CSL.XmlDOM.prototype.addInstitutionNodes = function(myxml) {
      var names, thenames, institution, theinstitution, theinstitutionpart, name3, thename, xml2, pos, len;
      names = myxml.getElementsByTagName("names");
      for (pos = 0, len = names.length; pos < len; pos += 1) {
        thenames = names.item(pos);
        name3 = thenames.getElementsByTagName("name");
        if (name3.length == 0) {
          continue;
        }
        institution = thenames.getElementsByTagName("institution");
        if (institution.length == 0) {
          theinstitution = this.importNode(myxml.ownerDocument, this.institution);
          theinstitutionpart = theinstitution.getElementsByTagName("institution-part").item(0);
          thename = name3.item(0);
          thenames.insertBefore(theinstitution, thename.nextSibling);
          for (var j = 0, jlen = CSL.INSTITUTION_KEYS.length; j < jlen; j += 1) {
            var attrname = CSL.INSTITUTION_KEYS[j];
            var attrval = thename.getAttribute(attrname);
            if (attrval) {
              theinstitutionpart.setAttribute(attrname, attrval);
            }
          }
          var nameparts = thename.getElementsByTagName("name-part");
          for (var j = 0, jlen = nameparts.length; j < jlen; j += 1) {
            if ("family" === nameparts[j].getAttribute("name")) {
              for (var k = 0, klen = CSL.INSTITUTION_KEYS.length; k < klen; k += 1) {
                var attrname = CSL.INSTITUTION_KEYS[k];
                var attrval = nameparts[j].getAttribute(attrname);
                if (attrval) {
                  theinstitutionpart.setAttribute(attrname, attrval);
                }
              }
            }
          }
        }
      }
    };
    CSL.XmlDOM.prototype.flagDateMacros = function(myxml) {
      var pos, len, thenode, thedate;
      var nodes = myxml.getElementsByTagName("macro");
      for (pos = 0, len = nodes.length; pos < len; pos += 1) {
        thenode = nodes.item(pos);
        thedate = thenode.getElementsByTagName("date");
        if (thedate.length) {
          thenode.setAttribute("macro-has-date", "true");
        }
      }
    };
    CSL.setupXml = function(xmlObject) {
      var dataObj = {};
      var parser3 = null;
      if ("undefined" !== typeof xmlObject) {
        if ("string" === typeof xmlObject) {
          xmlObject = xmlObject.replace("^\uFEFF", "").replace(/^\s+/, "");
          if (xmlObject.slice(0, 1) === "<") {
            dataObj = CSL.parseXml(xmlObject);
          } else {
            dataObj = JSON.parse(xmlObject);
          }
          parser3 = new CSL.XmlJSON(dataObj);
        } else if ("undefined" !== typeof xmlObject.getAttribute) {
          parser3 = new CSL.XmlDOM(xmlObject);
        } else if ("undefined" !== typeof xmlObject.toXMLString) {
          parser3 = new CSL.XmlE4X(xmlObject);
        } else {
          parser3 = new CSL.XmlJSON(xmlObject);
        }
      } else {
        CSL.error("unable to parse XML input");
      }
      if (!parser3) {
        CSL.error("citeproc-js error: unable to parse CSL style or locale object");
      }
      return parser3;
    };
    CSL.getSortCompare = function(default_locale) {
      if (CSL.stringCompare) {
        return CSL.stringCompare;
      }
      var me = this;
      var strcmp;
      var strcmp_opts = {
        sensitivity: "base",
        ignorePunctuation: true,
        numeric: true
      };
      if (!default_locale) {
        default_locale = "en-US";
      }
      strcmp = function(a2, b) {
        return CSL.toLocaleLowerCase.call(me, a2).localeCompare(CSL.toLocaleLowerCase.call(me, b), default_locale, strcmp_opts);
      };
      var stripPunct = function(str2) {
        return str2.replace(/^[\[\]\'\"]*/g, "");
      };
      var getBracketPreSort = function() {
        if (!strcmp("[x", "x")) {
          return false;
        } else {
          return function(a2, b) {
            return strcmp(stripPunct(a2), stripPunct(b));
          };
        }
      };
      var bracketPreSort = getBracketPreSort();
      var sortCompare = function(a2, b) {
        if (bracketPreSort) {
          return bracketPreSort(a2, b);
        } else {
          return strcmp(a2, b);
        }
      };
      return sortCompare;
    };
    CSL.ambigConfigDiff = function(a2, b) {
      var pos, len, ppos, llen;
      if (a2.names.length !== b.names.length) {
        return 1;
      } else {
        for (pos = 0, len = a2.names.length; pos < len; pos += 1) {
          if (a2.names[pos] !== b.names[pos]) {
            return 1;
          } else {
            for (ppos = 0, llen = a2.givens[pos]; ppos < llen; ppos += 1) {
              if (a2.givens[pos][ppos] !== b.givens[pos][ppos]) {
                return 1;
              }
            }
          }
        }
      }
      if (a2.disambiguate != b.disambiguate) {
        return 1;
      }
      if (a2.year_suffix !== b.year_suffix) {
        return 1;
      }
      return 0;
    };
    CSL.cloneAmbigConfig = function(config3, oldconfig) {
      var i2, ilen, j, jlen, param;
      var ret = {};
      ret.names = [];
      ret.givens = [];
      ret.year_suffix = false;
      ret.disambiguate = false;
      for (i2 = 0, ilen = config3.names.length; i2 < ilen; i2 += 1) {
        param = config3.names[i2];
        ret.names[i2] = param;
      }
      for (i2 = 0, ilen = config3.givens.length; i2 < ilen; i2 += 1) {
        param = [];
        for (j = 0, jlen = config3.givens[i2].length; j < jlen; j += 1) {
          param.push(config3.givens[i2][j]);
        }
        ret.givens.push(param);
      }
      if (oldconfig) {
        ret.year_suffix = oldconfig.year_suffix;
        ret.disambiguate = oldconfig.disambiguate;
      } else {
        ret.year_suffix = config3.year_suffix;
        ret.disambiguate = config3.disambiguate;
      }
      return ret;
    };
    CSL.getAmbigConfig = function() {
      var config3, ret;
      config3 = this.tmp.disambig_request;
      if (!config3) {
        config3 = this.tmp.disambig_settings;
      }
      var ret = CSL.cloneAmbigConfig(config3);
      return ret;
    };
    CSL.getMaxVals = function() {
      return this.tmp.names_max.mystack.slice();
    };
    CSL.getMinVal = function() {
      return this.tmp["et-al-min"];
    };
    CSL.tokenExec = function(token, Item, item) {
      var next, maybenext, exec3, debug;
      debug = false;
      next = token.next;
      maybenext = false;
      var record = function(result) {
        if (result) {
          this.tmp.jump.replace("succeed");
          return token.succeed;
        } else {
          this.tmp.jump.replace("fail");
          return token.fail;
        }
      };
      if (token.test) {
        next = record.call(this, token.test(Item, item));
      }
      for (var i2 = 0, ilen = token.execs.length; i2 < ilen; i2++) {
        exec3 = token.execs[i2];
        maybenext = exec3.call(token, this, Item, item);
        if (maybenext) {
          next = maybenext;
        }
      }
      if (debug) {
        CSL.debug(token.name + " (" + token.tokentype + ") ---> done");
      }
      return next;
    };
    CSL.expandMacro = function(macro_key_token, target) {
      var mkey, macro_nodes, end_of_macro, func;
      mkey = macro_key_token.postponed_macro;
      var sort_direction = macro_key_token.strings.sort_direction;
      macro_key_token = new CSL.Token("group", CSL.START);
      var hasDate = false;
      var macroid = false;
      macro_nodes = this.cslXml.getNodesByName(this.cslXml.dataObj, "macro", mkey);
      if (macro_nodes.length) {
        macroid = this.cslXml.getAttributeValue(macro_nodes[0], "cslid");
        hasDate = this.cslXml.getAttributeValue(macro_nodes[0], "macro-has-date");
      }
      if (hasDate) {
        mkey = mkey + "@" + this.build.current_default_locale;
        func = function(state) {
          if (state.tmp.extension) {
            state.tmp["doing-macro-with-date"] = true;
          }
        };
        macro_key_token.execs.push(func);
      }
      if (this.build.macro_stack.indexOf(mkey) > -1) {
        CSL.error('CSL processor error: call to macro "' + mkey + '" would cause an infinite loop');
      } else {
        this.build.macro_stack.push(mkey);
      }
      macro_key_token.cslid = macroid;
      if (CSL.MODULE_MACROS[mkey]) {
        macro_key_token.juris = mkey;
        this.opt.update_mode = CSL.POSITION;
      }
      CSL.Node.group.build.call(macro_key_token, this, target, true);
      if (!this.cslXml.getNodeValue(macro_nodes)) {
        CSL.error('CSL style error: undefined macro "' + mkey + '"');
      }
      var mytarget = CSL.getMacroTarget.call(this, mkey);
      if (mytarget) {
        CSL.buildMacro.call(this, mytarget, macro_nodes);
        CSL.configureMacro.call(this, mytarget);
      }
      if (!this.build.extension) {
        var func = /* @__PURE__ */ (function(macro_name) {
          return function(state, Item, item) {
            var next = 0;
            while (next < state.macros[macro_name].length) {
              next = CSL.tokenExec.call(state, state.macros[macro_name][next], Item, item);
            }
          };
        })(mkey);
        var text_node = new CSL.Token("text", CSL.SINGLETON);
        text_node.execs.push(func);
        target.push(text_node);
      }
      end_of_macro = new CSL.Token("group", CSL.END);
      end_of_macro.strings.sort_direction = sort_direction;
      if (hasDate) {
        func = function(state) {
          if (state.tmp.extension) {
            state.tmp["doing-macro-with-date"] = false;
          }
        };
        end_of_macro.execs.push(func);
      }
      if (macro_key_token.juris) {
        end_of_macro.juris = mkey;
      }
      CSL.Node.group.build.call(end_of_macro, this, target, true);
      this.build.macro_stack.pop();
    };
    CSL.getMacroTarget = function(mkey) {
      var mytarget = false;
      if (this.build.extension) {
        mytarget = this[this.build.root + this.build.extension].tokens;
      } else if (!this.macros[mkey]) {
        mytarget = [];
        this.macros[mkey] = mytarget;
      }
      return mytarget;
    };
    CSL.buildMacro = function(mytarget, macro_nodes) {
      var builder = CSL.makeBuilder(this, mytarget);
      var mynode;
      if ("undefined" === typeof macro_nodes.length) {
        mynode = macro_nodes;
      } else {
        mynode = macro_nodes[0];
      }
      builder(mynode);
    };
    CSL.configureMacro = function(mytarget) {
      if (!this.build.extension) {
        this.configureTokenList(mytarget);
      }
    };
    CSL.XmlToToken = function(state, tokentype, explicitTarget, var_stack) {
      var name3, txt, attrfuncs, attributes, decorations, token, key2, target;
      name3 = state.cslXml.nodename(this);
      if (state.build.skip && state.build.skip !== name3) {
        return;
      }
      if (!name3) {
        txt = state.cslXml.content(this);
        if (txt) {
          state.build.text = txt;
        }
        return;
      }
      if (!CSL.Node[state.cslXml.nodename(this)]) {
        CSL.error('Undefined node name "' + name3 + '".');
      }
      attrfuncs = [];
      attributes = state.cslXml.attributes(this);
      decorations = CSL.setDecorations.call(this, state, attributes);
      token = new CSL.Token(name3, tokentype);
      if (tokentype !== CSL.END || name3 === "if" || name3 === "else-if" || name3 === "layout") {
        for (var key2 in attributes) {
          if (attributes.hasOwnProperty(key2)) {
            if (tokentype === CSL.END && key2 !== "@language" && key2 !== "@locale") {
              continue;
            }
            if (attributes.hasOwnProperty(key2)) {
              if (CSL.Attributes[key2]) {
                try {
                  CSL.Attributes[key2].call(token, state, "" + attributes[key2]);
                } catch (e2) {
                  CSL.error(key2 + " attribute: " + e2);
                }
              } else {
                CSL.debug('warning: undefined attribute "' + key2 + '" in style');
              }
            }
          }
        }
        token.decorations = decorations;
        if (CSL.DATE_VARIABLES.indexOf(attributes["@variable"]) > -1) {
          var_stack.push(token.variables);
        }
      } else if (tokentype === CSL.END && attributes["@variable"]) {
        token.hasVariable = true;
        if (CSL.DATE_VARIABLES.indexOf(attributes["@variable"]) > -1) {
          token.variables = var_stack.pop();
        }
      }
      if (explicitTarget) {
        target = explicitTarget;
      } else {
        target = state[state.build.area].tokens;
      }
      CSL.Node[name3].build.call(token, state, target, true);
    };
    CSL.DateParser = function() {
      var epochPairs = [
        ["\u660E\u6CBB", 1867],
        ["\u5927\u6B63", 1911],
        ["\u662D\u548C", 1925],
        ["\u5E73\u6210", 1988]
      ];
      var epochYearByName = {};
      for (var i2 = 0, ilen = epochPairs.length; i2 < ilen; i2++) {
        var key2 = epochPairs[i2][0];
        var val = epochPairs[i2][1];
        epochYearByName[key2] = val;
      }
      var epochMatchStrings = [];
      var epochMap = {};
      for (var i2 = 0, ilen = epochPairs.length; i2 < ilen; i2++) {
        var pair = epochPairs[i2];
        var val = pair[0];
        epochMatchStrings.push(val);
        epochMap[pair[0]] = pair[1];
      }
      var epochMatchString = epochMatchStrings.join("|");
      var epochSplitter = new RegExp("(?:" + epochMatchString + ")(?:[0-9]+)");
      var epochMatcher = new RegExp("(?:" + epochMatchString + ")(?:[0-9]+)", "g");
      var kanjiMonthDay = /(\u6708|\u5E74)/g;
      var kanjiYear = /\u65E5/g;
      var kanjiRange = /\u301c/g;
      var yearLast = "(?:[?0-9]{1,2}%%NUMD%%){0,2}[?0-9]{4}(?![0-9])";
      var yearFirst = "[?0-9]{4}(?:%%NUMD%%[?0-9]{1,2}){0,2}(?![0-9])";
      var numberVal = "[?0-9]{1,3}";
      var rangeSeparator = "[%%DATED%%]";
      var fuzzyChar = "[?~]";
      var chars = "[^-/~?0-9]+";
      var rexString = "(" + yearFirst + "|" + yearLast + "|" + numberVal + "|" + rangeSeparator + "|" + fuzzyChar + "|" + chars + ")";
      var rexDash = new RegExp(rexString.replace(/%%NUMD%%/g, "-").replace(/%%DATED%%/g, "-"));
      var rexDashSlash = new RegExp(rexString.replace(/%%NUMD%%/g, "-").replace(/%%DATED%%/g, "/"));
      var rexSlashDash = new RegExp(rexString.replace(/%%NUMD%%/g, "/").replace(/%%DATED%%/g, "-"));
      var monthString = "january february march april may june july august september october november december spring summer fall winter spring summer";
      this.monthStrings = monthString.split(" ");
      this.setOrderDayMonth = function() {
        this.monthGuess = 1;
        this.dayGuess = 0;
      };
      this.setOrderMonthDay = function() {
        this.monthGuess = 0;
        this.dayGuess = 1;
      };
      this.resetDateParserMonths = function() {
        this.monthSets = [];
        for (var i3 = 0, ilen2 = this.monthStrings.length; i3 < ilen2; i3++) {
          this.monthSets.push([this.monthStrings[i3]]);
        }
        this.monthAbbrevs = [];
        for (var i3 = 0, ilen2 = this.monthSets.length; i3 < ilen2; i3++) {
          this.monthAbbrevs.push([]);
          for (var j = 0, jlen = this.monthSets[i3].length; j < jlen; j++) {
            this.monthAbbrevs[i3].push(this.monthSets[i3][0].slice(0, 3));
          }
        }
        this.monthRexes = [];
        for (var i3 = 0, ilen2 = this.monthAbbrevs.length; i3 < ilen2; i3++) {
          this.monthRexes.push(new RegExp("(?:" + this.monthAbbrevs[i3].join("|") + ")"));
        }
      };
      this.addDateParserMonths = function(lst) {
        if ("string" === typeof lst) {
          lst = lst.split(/\s+/);
        }
        if (lst.length !== 12 && lst.length !== 16) {
          CSL.debug("month [+season] list of " + lst.length + ", expected 12 or 16. Ignoring.");
          return;
        }
        for (var i3 = 0, ilen2 = lst.length; i3 < ilen2; i3++) {
          var abbrevLength = null;
          var skip = false;
          var insert = 3;
          var extendedSets = {};
          for (var j = 0, jlen = this.monthAbbrevs.length; j < jlen; j++) {
            extendedSets[j] = {};
            if (j === i3) {
              for (var k = 0, klen = this.monthAbbrevs[i3].length; k < klen; k++) {
                if (this.monthAbbrevs[i3][k] === lst[i3].slice(0, this.monthAbbrevs[i3][k].length)) {
                  skip = true;
                  break;
                }
              }
            } else {
              for (var k = 0, klen = this.monthAbbrevs[j].length; k < klen; k++) {
                abbrevLength = this.monthAbbrevs[j][k].length;
                if (this.monthAbbrevs[j][k] === lst[i3].slice(0, abbrevLength)) {
                  while (this.monthSets[j][k].slice(0, abbrevLength) === lst[i3].slice(0, abbrevLength)) {
                    if (abbrevLength > lst[i3].length || abbrevLength > this.monthSets[j][k].length) {
                      CSL.debug("unable to disambiguate month string in date parser: " + lst[i3]);
                      break;
                    } else {
                      abbrevLength += 1;
                    }
                  }
                  insert = abbrevLength;
                  extendedSets[j][k] = abbrevLength;
                }
              }
            }
            for (var jKey in extendedSets) {
              for (var kKey in extendedSets[jKey]) {
                abbrevLength = extendedSets[jKey][kKey];
                jKey = parseInt(jKey, 10);
                kKey = parseInt(kKey, 10);
                this.monthAbbrevs[jKey][kKey] = this.monthSets[jKey][kKey].slice(0, abbrevLength);
              }
            }
          }
          if (!skip) {
            this.monthSets[i3].push(lst[i3]);
            this.monthAbbrevs[i3].push(lst[i3].slice(0, insert));
          }
        }
        this.monthRexes = [];
        this.monthRexStrs = [];
        for (var i3 = 0, ilen2 = this.monthAbbrevs.length; i3 < ilen2; i3++) {
          this.monthRexes.push(new RegExp("^(?:" + this.monthAbbrevs[i3].join("|") + ")"));
          this.monthRexStrs.push("^(?:" + this.monthAbbrevs[i3].join("|") + ")");
        }
        if (this.monthAbbrevs.length === 18) {
          for (var i3 = 12, ilen2 = 14; i3 < ilen2; i3++) {
            this.monthRexes[i3 + 4] = new RegExp("^(?:" + this.monthAbbrevs[i3].join("|") + ")");
            this.monthRexStrs[i3 + 4] = "^(?:" + this.monthAbbrevs[i3].join("|") + ")";
          }
        }
      };
      this.convertDateObjectToArray = function(thedate) {
        thedate["date-parts"] = [];
        thedate["date-parts"].push([]);
        var slicelen = 0;
        var part;
        for (var i3 = 0, ilen2 = 3; i3 < ilen2; i3++) {
          part = ["year", "month", "day"][i3];
          if (!thedate[part]) {
            break;
          }
          slicelen += 1;
          thedate["date-parts"][0].push(thedate[part]);
          delete thedate[part];
        }
        thedate["date-parts"].push([]);
        for (var i3 = 0, ilen2 = slicelen; i3 < ilen2; i3++) {
          part = ["year_end", "month_end", "day_end"][i3];
          if (!thedate[part]) {
            break;
          }
          thedate["date-parts"][1].push(thedate[part]);
          delete thedate[part];
        }
        if (thedate["date-parts"][0].length !== thedate["date-parts"][1].length) {
          thedate["date-parts"].pop();
        }
        return thedate;
      };
      this.convertDateObjectToString = function(thedate) {
        var ret = [];
        for (var i3 = 0, ilen2 = 3; i3 < ilen2; i3 += 1) {
          if (thedate[CSL.DATE_PARTS_ALL[i3]]) {
            ret.push(thedate[CSL.DATE_PARTS_ALL[i3]]);
          } else {
            break;
          }
        }
        return ret.join("-");
      };
      this._parseNumericDate = function(ret, delim, suff, txt) {
        if (!suff) {
          suff = "";
        }
        var lst = txt.split(delim);
        for (var i3 = 0, ilen2 = lst.length; i3 < ilen2; i3++) {
          if (lst[i3].length === 4) {
            ret["year" + suff] = lst[i3].replace(/^0*/, "");
            if (!i3) {
              lst = lst.slice(1);
            } else {
              lst = lst.slice(0, i3);
            }
            break;
          }
        }
        for (var i3 = 0, ilen2 = lst.length; i3 < ilen2; i3++) {
          lst[i3] = parseInt(lst[i3], 10);
        }
        if (lst.length === 1 || lst.length === 2 && !lst[1]) {
          var month = lst[0];
          if (month) {
            ret["month" + suff] = "" + lst[0];
          }
        } else if (lst.length === 2) {
          if (lst[this.monthGuess] > 12) {
            var month = lst[this.dayGuess];
            var day = lst[this.monthGuess];
            if (month) {
              ret["month" + suff] = "" + month;
              if (day) {
                ret["day" + suff] = "" + day;
              }
            }
          } else {
            var month = lst[this.monthGuess];
            var day = lst[this.dayGuess];
            if (month) {
              ret["month" + suff] = "" + month;
              if (day) {
                ret["day" + suff] = "" + day;
              }
            }
          }
        }
      };
      this.parseDateToObject = function(txt) {
        var orig = txt;
        var slashPos = -1;
        var dashPos = -1;
        var yearIsNegative = false;
        var lst;
        if (txt) {
          txt = txt.replace(/^(.*[0-9])T[0-9].*/, "$1");
          if (txt.slice(0, 1) === "-") {
            yearIsNegative = true;
            txt = txt.slice(1);
          }
          if (txt.match(/^[0-9]{1,3}$/)) {
            while (txt.length < 4) {
              txt = "0" + txt;
            }
          }
          txt = "" + txt;
          txt = txt.replace(/\s*[0-9]{2}:[0-9]{2}(?::[0-9]+)/, "");
          var m2 = txt.match(kanjiMonthDay);
          if (m2) {
            txt = txt.replace(/\s+/g, "");
            txt = txt.replace(kanjiYear, "");
            txt = txt.replace(kanjiMonthDay, "-");
            txt = txt.replace(kanjiRange, "/");
            txt = txt.replace(/\-\//g, "/");
            txt = txt.replace(/-$/g, "");
            var slst = txt.split(epochSplitter);
            lst = [];
            var mm = txt.match(epochMatcher);
            if (mm) {
              var mmx = [];
              for (var i3 = 0, ilen2 = mm.length; i3 < ilen2; i3++) {
                mmx = mmx.concat(mm[i3].match(/([^0-9]+)([0-9]+)/).slice(1));
              }
              for (var i3 = 0, ilen2 = slst.length; i3 < ilen2; i3++) {
                lst.push(slst[i3]);
                if (i3 !== ilen2 - 1) {
                  var mmpos = i3 * 2;
                  lst.push(mmx[mmpos]);
                  lst.push(mmx[mmpos + 1]);
                }
              }
            } else {
              lst = slst;
            }
            for (var i3 = 1, ilen2 = lst.length; i3 < ilen2; i3 += 3) {
              lst[i3 + 1] = epochMap[lst[i3]] + parseInt(lst[i3 + 1], 10);
              lst[i3] = "";
            }
            txt = lst.join("");
            txt = txt.replace(/\s*-\s*$/, "").replace(/\s*-\s*\//, "/");
            txt = txt.replace(/\.\s*$/, "");
            txt = txt.replace(/\.(?! )/, "");
            slashPos = txt.indexOf("/");
            dashPos = txt.indexOf("-");
          }
        }
        txt = txt.replace(/([A-Za-z])\./g, "$1");
        var number2 = "";
        var note = "";
        var thedate = {};
        var rangeDelim;
        var dateDelim;
        if (txt.slice(0, 1) === '"' && txt.slice(-1) === '"') {
          thedate.literal = txt.slice(1, -1);
          return thedate;
        }
        if (slashPos > -1 && dashPos > -1) {
          var slashCount = txt.split("/");
          if (slashCount.length > 3) {
            rangeDelim = "-";
            txt = txt.replace(/\_/g, "-");
            dateDelim = "/";
            lst = txt.split(rexSlashDash);
          } else {
            rangeDelim = "/";
            txt = txt.replace(/\_/g, "/");
            dateDelim = "-";
            lst = txt.split(rexDashSlash);
          }
        } else {
          txt = txt.replace(/\//g, "-");
          txt = txt.replace(/\_/g, "-");
          rangeDelim = "-";
          dateDelim = "-";
          lst = txt.split(rexDash);
        }
        var ret = [];
        for (var i3 = 0, ilen2 = lst.length; i3 < ilen2; i3++) {
          var m2 = lst[i3].match(/^\s*([\-\/]|[^\-\/\~\?0-9]+|[\-~?0-9]+)\s*$/);
          if (m2) {
            ret.push(m2[1]);
          }
        }
        var delimPos = ret.indexOf(rangeDelim);
        var delims = [];
        var isRange = false;
        if (delimPos > -1) {
          delims.push([0, delimPos]);
          delims.push([delimPos + 1, ret.length]);
          isRange = true;
        } else {
          delims.push([0, ret.length]);
        }
        var suff = "";
        for (var i3 = 0, ilen2 = delims.length; i3 < ilen2; i3++) {
          var delim = delims[i3];
          var date = ret.slice(delim[0], delim[1]);
          outer:
            for (var j = 0, jlen = date.length; j < jlen; j++) {
              var element5 = date[j];
              if (element5.indexOf(dateDelim) > -1) {
                this._parseNumericDate(thedate, dateDelim, suff, element5);
                continue;
              }
              if (element5.match(/[0-9]{4}/)) {
                thedate["year" + suff] = element5.replace(/^0*/, "");
                continue;
              }
              if (element5 === "~" || element5 === "?" || element5 === "c" || element5.match(/^cir/)) {
                thedate.circa = true;
              }
              for (var k = 0, klen = this.monthRexes.length; k < klen; k++) {
                if (element5.toLocaleLowerCase().match(this.monthRexes[k])) {
                  thedate["month" + suff] = "" + (parseInt(k, 10) + 1);
                  continue outer;
                }
              }
              if (element5.match(/^[0-9]+$/)) {
                number2 = element5;
              }
              if (element5.toLocaleLowerCase().match(/^bc/) && number2) {
                thedate["year" + suff] = "" + number2 * -1;
                number2 = "";
                continue;
              }
              if (element5.toLocaleLowerCase().match(/^ad/) && number2) {
                thedate["year" + suff] = "" + number2;
                number2 = "";
                continue;
              }
              if (element5.toLocaleLowerCase().match(/(?:mic|tri|hil|eas)/) && !thedate["season" + suff]) {
                note = element5;
                continue;
              }
            }
          if (number2) {
            thedate["day" + suff] = number2;
            number2 = "";
          }
          if (note && !thedate["season" + suff]) {
            thedate["season" + suff] = note.trim();
            note = "";
          }
          suff = "_end";
        }
        if (isRange) {
          for (var j = 0, jlen = CSL.DATE_PARTS_ALL.length; j < jlen; j++) {
            var item = CSL.DATE_PARTS_ALL[j];
            if (thedate[item] && !thedate[item + "_end"]) {
              thedate[item + "_end"] = thedate[item];
            } else if (!thedate[item] && thedate[item + "_end"]) {
              thedate[item] = thedate[item + "_end"];
            }
          }
        }
        if (!thedate.year || thedate.year && thedate.day && !thedate.month) {
          thedate = { "literal": orig };
        }
        var parts = ["year", "month", "day", "year_end", "month_end", "day_end"];
        for (var i3 = 0, ilen2 = parts.length; i3 < ilen2; i3++) {
          var part = parts[i3];
          if ("string" === typeof thedate[part] && thedate[part].match(/^[0-9]+$/)) {
            thedate[part] = parseInt(thedate[part], 10);
          }
        }
        if (yearIsNegative && Object.keys(thedate).indexOf("year") > -1) {
          thedate.year = thedate.year * -1;
        }
        return thedate;
      };
      this.parseDateToArray = function(txt) {
        return this.convertDateObjectToArray(this.parseDateToObject(txt));
      };
      this.parseDateToString = function(txt) {
        return this.convertDateObjectToString(this.parseDateToObject(txt));
      };
      this.parse = function(txt) {
        return this.parseDateToObject(txt);
      };
      this.setOrderMonthDay();
      this.resetDateParserMonths();
    };
    CSL.DateParser = new CSL.DateParser();
    CSL.Engine = function(sys, style3, lang, forceLang) {
      var attrs, langspec;
      this.processor_version = CSL.PROCESSOR_VERSION;
      this.csl_version = "1.0";
      this.sys = sys;
      if (typeof Object.assign != "function") {
        Object.defineProperty(Object, "assign", {
          value: function assign2(target) {
            "use strict";
            if (target == null) {
              throw new TypeError("Cannot convert undefined or null to object");
            }
            var to = Object(target);
            for (var index4 = 1; index4 < arguments.length; index4++) {
              var nextSource = arguments[index4];
              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
        });
      }
      if (sys.variableWrapper) {
        CSL.VARIABLE_WRAPPER_PREPUNCT_REX = new RegExp("^([" + [" "].concat(CSL.SWAPPING_PUNCTUATION).join("") + "]*)(.*)");
      }
      if (CSL.retrieveStyleModule) {
        this.sys.retrieveStyleModule = CSL.retrieveStyleModule;
      }
      if (CSL.getAbbreviation) {
        this.sys.getAbbreviation = CSL.getAbbreviation;
      }
      if (this.sys.stringCompare) {
        CSL.stringCompare = this.sys.stringCompare;
      }
      this.sys.AbbreviationSegments = CSL.AbbreviationSegments;
      this.transform = new CSL.Transform(this);
      this.setParseNames = function(val) {
        this.opt["parse-names"] = val;
      };
      this.opt = new CSL.Engine.Opt();
      this.tmp = new CSL.Engine.Tmp();
      this.build = new CSL.Engine.Build();
      this.fun = new CSL.Engine.Fun(this);
      this.configure = new CSL.Engine.Configure();
      this.citation_sort = new CSL.Engine.CitationSort();
      this.bibliography_sort = new CSL.Engine.BibliographySort();
      this.citation = new CSL.Engine.Citation(this);
      this.bibliography = new CSL.Engine.Bibliography();
      this.intext = new CSL.Engine.InText();
      this.output = new CSL.Output.Queue(this);
      this.dateput = new CSL.Output.Queue(this);
      this.cslXml = CSL.setupXml(style3);
      for (var i2 in CSL.SYS_OPTIONS) {
        var option3 = CSL.SYS_OPTIONS[i2];
        if ("boolean" === typeof this.sys[option3]) {
          this.opt.development_extensions[option3] = this.sys[option3];
        }
      }
      if (this.opt.development_extensions.uppercase_subtitles || this.opt.development_extensions.implicit_short_title) {
        this.opt.development_extensions.main_title_from_short_title = true;
      }
      if (this.opt.development_extensions.csl_reverse_lookup_support) {
        this.build.cslNodeId = 0;
        this.setCslNodeIds = function(myxml, nodename) {
          var children = this.cslXml.children(myxml);
          this.cslXml.setAttribute(myxml, "cslid", this.build.cslNodeId);
          this.opt.nodenames.push(nodename);
          this.build.cslNodeId += 1;
          for (var i3 = 0, ilen = this.cslXml.numberofnodes(children); i3 < ilen; i3 += 1) {
            nodename = this.cslXml.nodename(children[i3]);
            if (nodename) {
              this.setCslNodeIds(children[i3], nodename);
            }
          }
        };
        this.setCslNodeIds(this.cslXml.dataObj, "style");
      }
      this.cslXml.addMissingNameNodes(this.cslXml.dataObj);
      this.cslXml.addInstitutionNodes(this.cslXml.dataObj);
      this.cslXml.insertPublisherAndPlace(this.cslXml.dataObj);
      this.cslXml.flagDateMacros(this.cslXml.dataObj);
      attrs = this.cslXml.attributes(this.cslXml.dataObj);
      if ("undefined" === typeof attrs["@sort-separator"]) {
        this.cslXml.setAttribute(this.cslXml.dataObj, "sort-separator", ", ");
      }
      this.opt["initialize-with-hyphen"] = true;
      this.setStyleAttributes();
      this.opt.xclass = this.cslXml.getAttributeValue(this.cslXml.dataObj, "class");
      this.opt["class"] = this.opt.xclass;
      this.opt.styleID = this.cslXml.getStyleId(this.cslXml.dataObj);
      this.opt.styleName = this.cslXml.getStyleId(this.cslXml.dataObj, true);
      if (this.opt.version.slice(0, 4) === "1.1m") {
        this.opt.development_extensions.consolidate_legal_items = true;
        this.opt.development_extensions.consolidate_container_items = true;
        this.opt.development_extensions.main_title_from_short_title = true;
        this.opt.development_extensions.expect_and_symbol_form = true;
        this.opt.development_extensions.require_explicit_legal_case_title_short = true;
        this.opt.development_extensions.force_jurisdiction = true;
        this.opt.development_extensions.force_title_abbrev_fallback = true;
      }
      if (lang) {
        lang = lang.replace("_", "-");
        lang = CSL.normalizeLocaleStr(lang);
      }
      if (this.opt["default-locale"][0]) {
        this.opt["default-locale"][0] = this.opt["default-locale"][0].replace("_", "-");
        this.opt["default-locale"][0] = CSL.normalizeLocaleStr(this.opt["default-locale"][0]);
      }
      if (lang && forceLang) {
        this.opt["default-locale"] = [lang];
      }
      if (lang && !forceLang && this.opt["default-locale"][0]) {
        lang = this.opt["default-locale"][0];
      }
      if (this.opt["default-locale"].length === 0) {
        if (!lang) {
          lang = "en-US";
        }
        this.opt["default-locale"].push("en-US");
      }
      if (!lang) {
        lang = this.opt["default-locale"][0];
      }
      langspec = CSL.localeResolve(lang);
      this.opt.lang = langspec.best;
      this.opt["default-locale"][0] = langspec.best;
      this.locale = {};
      if (!this.opt["default-locale-sort"]) {
        this.opt["default-locale-sort"] = this.opt["default-locale"][0];
      }
      if ("dale|".localeCompare("daleb", this.opt["default-locale-sort"]) > -1) {
        this.opt.sort_sep = "@";
      } else {
        this.opt.sort_sep = "|";
      }
      this.localeConfigure(langspec);
      function makeRegExp(lst) {
        var lst = lst.slice();
        var ret = new RegExp("(?:(?:[?!:]*\\s+|-|^)(?:" + lst.join("|") + ")(?=[!?:]*\\s+|-|$))", "g");
        return ret;
      }
      this.locale[this.opt.lang].opts["skip-words-regexp"] = makeRegExp(this.locale[this.opt.lang].opts["skip-words"]);
      this.output.adjust = new CSL.Output.Queue.adjust(this.getOpt("punctuation-in-quote"));
      this.registry = new CSL.Registry(this);
      this.macros = {};
      this.build.area = "citation";
      var area_nodes = this.cslXml.getNodesByName(this.cslXml.dataObj, this.build.area);
      this.buildTokenLists(area_nodes, this[this.build.area].tokens);
      this.build.area = "bibliography";
      var area_nodes = this.cslXml.getNodesByName(this.cslXml.dataObj, this.build.area);
      this.buildTokenLists(area_nodes, this[this.build.area].tokens);
      this.build.area = "intext";
      var area_nodes = this.cslXml.getNodesByName(this.cslXml.dataObj, this.build.area);
      this.buildTokenLists(area_nodes, this[this.build.area].tokens);
      if (this.opt.parallel.enable) {
        this.parallel = new CSL.Parallel(this);
      }
      this.juris = {};
      this.configureTokenLists();
      this.disambiguate = new CSL.Disambiguation(this);
      this.splice_delimiter = false;
      this.fun.dateparser = CSL.DateParser;
      this.fun.flipflopper = new CSL.Util.FlipFlopper(this);
      this.setCloseQuotesArray();
      this.fun.ordinalizer.init(this);
      this.fun.long_ordinalizer.init(this);
      this.fun.page_mangler = CSL.Util.PageRangeMangler.getFunction(this, "page");
      this.fun.year_mangler = CSL.Util.PageRangeMangler.getFunction(this, "year");
      this.setOutputFormat("html");
    };
    CSL.Engine.prototype.setCloseQuotesArray = function() {
      var ret;
      ret = [];
      ret.push(this.getTerm("close-quote"));
      ret.push(this.getTerm("close-inner-quote"));
      ret.push('"');
      ret.push("'");
      this.opt.close_quotes_array = ret;
    };
    CSL.makeBuilder = function(me, target) {
      var var_stack = [];
      var node_stack = [];
      function runStart(node3) {
        node_stack.push(node3);
        CSL.XmlToToken.call(node3, me, CSL.START, target, var_stack);
      }
      function runEnd() {
        var node3 = node_stack.pop();
        CSL.XmlToToken.call(node3, me, CSL.END, target, var_stack);
      }
      function runSingle(node3) {
        CSL.XmlToToken.call(node3, me, CSL.SINGLETON, target, var_stack);
      }
      function buildStyle(nodes, parent2, node_stack2) {
        if (!node_stack2) {
          node_stack2 = [];
        }
        if (!nodes) {
          nodes = [];
        }
        if ("undefined" === typeof nodes.length) {
          nodes = [nodes];
        }
        for (var i2 = 0; i2 < nodes.length; i2++) {
          var node3 = nodes[i2];
          if (me.cslXml.nodename(node3) === null) {
            continue;
          }
          if (parent2 && me.cslXml.nodename(node3) === "date") {
            CSL.Util.fixDateNode.call(me, parent2, i2, node3);
            node3 = me.cslXml.children(parent2)[i2];
          }
          if (me.cslXml.numberofnodes(me.cslXml.children(node3))) {
            runStart(node3);
            buildStyle(me.cslXml.children(node3), node3, node_stack2);
            runEnd();
          } else {
            runSingle(node3);
          }
        }
      }
      return buildStyle;
    };
    CSL.Engine.prototype.buildTokenLists = function(area_nodes, target) {
      if (!this.cslXml.getNodeValue(area_nodes)) {
        return;
      }
      var builder = CSL.makeBuilder(this, target);
      var mynode;
      if ("undefined" === typeof area_nodes.length) {
        mynode = area_nodes;
      } else {
        mynode = area_nodes[0];
      }
      builder(mynode);
    };
    CSL.Engine.prototype.setStyleAttributes = function() {
      var dummy, attributes, attrname;
      var dummy = {};
      dummy.name = this.cslXml.nodename(this.cslXml.dataObj);
      attributes = this.cslXml.attributes(this.cslXml.dataObj);
      for (attrname in attributes) {
        if (attributes.hasOwnProperty(attrname)) {
          CSL.Attributes[attrname].call(dummy, this, attributes[attrname]);
        }
      }
    };
    CSL.Engine.prototype.getTerm = function(term, form, plural2, gender, mode, forceDefaultLocale) {
      if (term && term.match(/[A-Z]/) && term === term.toUpperCase()) {
        CSL.debug("Warning: term key is in uppercase form: " + term);
        term = term.toLowerCase();
      }
      var lang;
      if (forceDefaultLocale) {
        lang = this.opt["default-locale"][0];
      } else {
        lang = this.opt.lang;
      }
      var ret = CSL.Engine.getField(CSL.LOOSE, this.locale[lang].terms, term, form, plural2, gender);
      if (!ret && term === "range-delimiter") {
        ret = "\u2013";
      }
      if (typeof ret === "undefined") {
        if (mode === CSL.STRICT) {
          CSL.error('Error in getTerm: term "' + term + '" does not exist.');
        } else if (mode === CSL.TOLERANT) {
          ret = "";
        }
      }
      if (ret) {
        this.tmp.cite_renders_content = true;
      }
      return ret;
    };
    CSL.Engine.prototype.getDate = function(form, forceDefaultLocale) {
      var lang;
      if (forceDefaultLocale) {
        lang = this.opt["default-locale"];
      } else {
        lang = this.opt.lang;
      }
      if (this.locale[lang].dates[form]) {
        return this.locale[lang].dates[form];
      } else {
        return false;
      }
    };
    CSL.Engine.prototype.getOpt = function(arg2) {
      if ("undefined" !== typeof this.locale[this.opt.lang].opts[arg2]) {
        return this.locale[this.opt.lang].opts[arg2];
      } else {
        return false;
      }
    };
    CSL.Engine.prototype.getVariable = function(Item, varname, form, plural2) {
      return CSL.Engine.getField(CSL.LOOSE, Item, varname, form, plural2);
    };
    CSL.Engine.prototype.getDateNum = function(ItemField, partname) {
      if ("undefined" === typeof ItemField) {
        return 0;
      } else {
        return ItemField[partname];
      }
    };
    CSL.Engine.getField = function(mode, hash, term, form, plural2, gender) {
      var ret, forms, f3, pos, len, hashterm;
      ret = "";
      if ("undefined" === typeof hash[term]) {
        if (mode === CSL.STRICT) {
          CSL.error('Error in getField: term "' + term + '" does not exist.');
        } else {
          return void 0;
        }
      }
      if (gender && hash[term][gender]) {
        hashterm = hash[term][gender];
      } else {
        hashterm = hash[term];
      }
      forms = [];
      if (form === "symbol") {
        forms = ["symbol", "short"];
      } else if (form === "verb-short") {
        forms = ["verb-short", "verb"];
      } else if (form !== "long") {
        forms = [form];
      }
      forms = forms.concat(["long"]);
      len = forms.length;
      for (pos = 0; pos < len; pos += 1) {
        f3 = forms[pos];
        if ("string" === typeof hashterm || "number" === typeof hashterm) {
          ret = hashterm;
        } else if ("undefined" !== typeof hashterm[f3]) {
          if ("string" === typeof hashterm[f3] || "number" === typeof hashterm[f3]) {
            ret = hashterm[f3];
          } else {
            if ("number" === typeof plural2) {
              ret = hashterm[f3][plural2];
            } else {
              ret = hashterm[f3][0];
            }
          }
          break;
        }
      }
      return ret;
    };
    CSL.Engine.prototype.configureTokenLists = function() {
      var area, pos, len;
      len = CSL.AREAS.length;
      for (pos = 0; pos < len; pos += 1) {
        area = CSL.AREAS[pos];
        var tokens = this[area].tokens;
        this.configureTokenList(tokens);
      }
      this.version = CSL.version;
      return this.state;
    };
    CSL.Engine.prototype.configureTokenList = function(tokens) {
      var dateparts_master, token, dateparts, part, ppos, pppos, llen, lllen;
      dateparts_master = ["year", "month", "day"];
      llen = tokens.length - 1;
      for (ppos = llen; ppos > -1; ppos += -1) {
        token = tokens[ppos];
        if ("date" === token.name && CSL.END === token.tokentype) {
          dateparts = [];
        }
        if ("date-part" === token.name && token.strings.name) {
          lllen = dateparts_master.length;
          for (pppos = 0; pppos < lllen; pppos += 1) {
            part = dateparts_master[pppos];
            if (part === token.strings.name) {
              dateparts.push(token.strings.name);
            }
          }
        }
        if ("date" === token.name && CSL.START === token.tokentype) {
          dateparts.reverse();
          token.dateparts = dateparts;
        }
        token.next = ppos + 1;
        if (token.name && CSL.Node[token.name].configure) {
          CSL.Node[token.name].configure.call(token, this, ppos);
        }
      }
    };
    CSL.Engine.prototype.refetchItems = function(ids) {
      var ret = [];
      for (var i2 = 0, ilen = ids.length; i2 < ilen; i2 += 1) {
        ret.push(this.refetchItem("" + ids[i2]));
      }
      return ret;
    };
    CSL.ITERATION = 0;
    CSL.Engine.prototype.retrieveItem = function(id) {
      var Item, m2, i2;
      if (!this.tmp.loadedItemIDs[id]) {
        this.tmp.loadedItemIDs[id] = true;
      } else {
        return this.registry.refhash[id];
      }
      if (this.opt.development_extensions.normalize_lang_keys_to_lowercase && "boolean" === typeof this.opt.development_extensions.normalize_lang_keys_to_lowercase) {
        for (var i2 = 0, ilen = this.opt["default-locale"].length; i2 < ilen; i2 += 1) {
          this.opt["default-locale"][i2] = this.opt["default-locale"][i2].toLowerCase();
        }
        for (var i2 = 0, ilen = this.opt["locale-translit"].length; i2 < ilen; i2 += 1) {
          this.opt["locale-translit"][i2] = this.opt["locale-translit"][i2].toLowerCase();
        }
        for (var i2 = 0, ilen = this.opt["locale-translat"].length; i2 < ilen; i2 += 1) {
          this.opt["locale-translat"][i2] = this.opt["locale-translat"][i2].toLowerCase();
        }
        this.opt.development_extensions.normalize_lang_keys_to_lowercase = 100;
      }
      CSL.ITERATION += 1;
      Item = JSON.parse(JSON.stringify(this.sys.retrieveItem("" + id)));
      if (this.opt.development_extensions.normalize_lang_keys_to_lowercase) {
        if (Item.multi) {
          if (Item.multi._keys) {
            for (var field in Item.multi._keys) {
              for (var key2 in Item.multi._keys[field]) {
                if (key2 !== key2.toLowerCase()) {
                  Item.multi._keys[field][key2.toLowerCase()] = Item.multi._keys[field][key2];
                  delete Item.multi._keys[field][key2];
                }
              }
            }
          }
          if (Item.multi.main) {
            for (var field in Item.multi.main) {
              Item.multi.main[field] = Item.multi.main[field].toLowerCase();
            }
          }
        }
        for (var i2 = 0, ilen = CSL.NAME_VARIABLES.length; i2 > ilen; i2 += 1) {
          var ctype = CSL.NAME_VARIABLES[i2];
          if (Item[ctype] && Item[ctype].multi) {
            for (var j = 0, jlen = Item[ctype].length; j < jlen; j += 1) {
              var creator = Item[ctype][j];
              if (creator.multi) {
                if (creator.multi._key) {
                  for (var key2 in creator.multi._key) {
                    if (key2 !== key2.toLowerCase()) {
                      creator.multi._key[key2.toLowerCase()] = creator.multi._key[key2];
                      delete creator.multi._key[key2];
                    }
                  }
                }
                if (creator.multi.main) {
                  creator.multi.main = creator.multi.main.toLowerCase();
                }
              }
            }
          }
        }
      }
      if (Item.language && Item.language.match(/[><]/)) {
        var m2 = Item.language.match(/(.*?)([<>])(.*)/);
        if (m2[2] === "<") {
          Item["language-name"] = m2[1];
          Item["language-name-original"] = m2[3];
        } else {
          Item["language-name"] = m2[3];
          Item["language-name-original"] = m2[1];
        }
        if (this.opt.multi_layout) {
          if (Item["language-name-original"]) {
            Item.language = Item["language-name-original"];
          }
        } else {
          if (Item["language-name"]) {
            Item.language = Item["language-name"];
          }
        }
      }
      if (Item.page) {
        Item["page-first"] = Item.page;
        var num = "" + Item.page;
        var m2 = num.split(/\s*(?:&|, |-|\u2013)\s*/);
        if (m2[0].slice(-1) !== "\\") {
          Item["page-first"] = m2[0];
        }
      }
      if (this.opt.development_extensions.field_hack && Item.note) {
        CSL.parseNoteFieldHacks(Item, false, this.opt.development_extensions.allow_field_hack_date_override);
      }
      for (var key2 in Item) {
        if (CSL.DATE_VARIABLES.indexOf(key2.replace(/^alt-/, "")) > -1) {
          var dateobj = Item[key2];
          if (dateobj) {
            if (this.opt.development_extensions.raw_date_parsing) {
              if (dateobj.raw && (!dateobj["date-parts"] || dateobj["date-parts"].length === 0)) {
                dateobj = this.fun.dateparser.parseDateToObject(dateobj.raw);
              }
            }
            Item[key2] = this.dateParseArray(dateobj);
          }
        }
      }
      if (this.opt.development_extensions.consolidate_legal_items) {
        if (Item.type && ["bill", "gazette", "legislation", "regulation", "treaty"].indexOf(Item.type) > -1) {
          var varname;
          var elements = ["type", "title", "jurisdiction", "genre", "volume", "container-title"];
          var legislation_id = [];
          for (var i2 = 0, ilen = elements.length; i2 < ilen; i2 += 1) {
            varname = elements[i2];
            if (Item[varname]) {
              legislation_id.push(Item[varname]);
            }
          }
          elements = ["original-date", "issued"];
          for (var i2 = 0, ilen = elements.length; i2 < ilen; i2 += 1) {
            varname = elements[i2];
            if (Item[varname] && Item[varname].year) {
              var value = Item[varname].year;
              legislation_id.push(value);
              break;
            }
          }
          Item.legislation_id = legislation_id.join("::");
        }
      }
      if (this.bibliography.opt.track_container_items) {
        if (this.bibliography.opt.track_container_items.indexOf(Item.type) > -1) {
          var varname;
          var elements = ["type", "container-title", "publisher", "edition"];
          var container_id = [];
          for (var i2 = 0, ilen = elements.length; i2 < ilen; i2 += 1) {
            varname = elements[i2];
            if (Item[varname]) {
              container_id.push(Item[varname]);
            }
          }
          Item.container_id = container_id.join("::");
        }
      }
      if (this.opt.development_extensions.force_jurisdiction) {
        if ("string" === typeof Item.authority) {
          Item.authority = [
            {
              literal: Item.authority,
              multi: {
                _key: {}
              }
            }
          ];
          if (Item.multi && Item.multi._keys && Item.multi._keys.authority) {
            Item.authority[0].multi._key = {};
            for (var key2 in Item.multi._keys.authority) {
              Item.authority[0].multi._key[key2] = {
                literal: Item.multi._keys.authority[key2]
              };
            }
          }
        }
      }
      if (!Item["title-short"]) {
        Item["title-short"] = Item.shortTitle;
      }
      if (this.opt.development_extensions.main_title_from_short_title) {
        var narrowSpaceLocale = this.opt["default-locale"][0].slice(0, 2).toLowerCase() === "fr";
        CSL.extractTitleAndSubtitle.call(this, Item, narrowSpaceLocale);
      }
      var isLegalType = ["bill", "legal_case", "legislation", "gazette", "regulation"].indexOf(Item.type) > -1;
      if (this.opt.development_extensions.force_jurisdiction && isLegalType) {
        if (!Item.jurisdiction) {
          Item.jurisdiction = "us";
        }
      }
      var normalizedKey;
      if (!isLegalType && Item.title && this.sys.getAbbreviation) {
        var noHints = false;
        if (!Item.jurisdiction) {
          noHints = true;
        }
        if (this.sys.normalizeAbbrevsKey) {
          normalizedKey = this.sys.normalizeAbbrevsKey("title", Item.title);
        } else {
          normalizedKey = Item.title;
        }
        var jurisdiction = this.transform.loadAbbreviation(Item.jurisdiction, "title", normalizedKey, Item.language);
        if (this.transform.abbrevs[jurisdiction].title) {
          if (this.transform.abbrevs[jurisdiction].title[normalizedKey]) {
            Item["title-short"] = this.transform.abbrevs[jurisdiction].title[normalizedKey];
          }
        }
      }
      if (!Item["container-title-short"]) {
        Item["container-title-short"] = Item.journalAbbreviation;
      }
      if (Item["container-title"] && this.sys.getAbbreviation) {
        if (this.sys.normalizeAbbrevsKey) {
          normalizedKey = this.sys.normalizeAbbrevsKey(Item["container-title"]);
        } else {
          normalizedKey = Item["container-title"];
        }
        var jurisdiction = this.transform.loadAbbreviation(Item.jurisdiction, "container-title", normalizedKey, Item.language);
        if (this.transform.abbrevs[jurisdiction]["container-title"]) {
          if (this.transform.abbrevs[jurisdiction]["container-title"][normalizedKey]) {
            Item["container-title-short"] = this.transform.abbrevs[jurisdiction]["container-title"][normalizedKey];
          }
        }
      }
      if (Item.jurisdiction) {
        Item.country = Item.jurisdiction.split(":")[0];
      }
      if (this.registry.refhash[id]) {
        if (JSON.stringify(this.registry.refhash[id]) != JSON.stringify(Item)) {
          for (var key2 in this.registry.refhash[id]) {
            delete this.registry.refhash[id][key2];
          }
          this.tmp.taintedItemIDs[Item.id] = true;
          Object.assign(this.registry.refhash[id], Item);
        }
      } else {
        this.registry.refhash[id] = Item;
      }
      return this.registry.refhash[id];
    };
    CSL.Engine.prototype.refetchItem = function(id) {
      return this.registry.refhash[id];
    };
    CSL.Engine.prototype.setOpt = function(token, name3, value) {
      if (token.name === "style" || token.name === "cslstyle") {
        this.opt.inheritedAttributes[name3] = value;
        this.citation.opt.inheritedAttributes[name3] = value;
        this.bibliography.opt.inheritedAttributes[name3] = value;
      } else if (["citation", "bibliography"].indexOf(token.name) > -1) {
        this[token.name].opt.inheritedAttributes[name3] = value;
      } else {
        token.strings[name3] = value;
      }
    };
    CSL.Engine.prototype.inheritOpt = function(token, attrname, parentname, defaultValue) {
      if ("undefined" !== typeof token.strings[attrname]) {
        return token.strings[attrname];
      } else {
        var parentValue = this[this.tmp.root].opt.inheritedAttributes[parentname ? parentname : attrname];
        if ("undefined" !== typeof parentValue) {
          return parentValue;
        } else {
          return defaultValue;
        }
      }
    };
    CSL.Engine.prototype.remapSectionVariable = function(inputList) {
      for (var i2 = 0, ilen = inputList.length; i2 < ilen; i2 += 1) {
        var Item = inputList[i2][0];
        var item = inputList[i2][1];
        if (["bill", "gazette", "legislation", "regulation", "treaty"].indexOf(Item.type) > -1) {
          if (item.locator) {
            item.locator = item.locator.trim();
            var m2 = item.locator.match(CSL.STATUTE_SUBDIV_PLAIN_REGEX_FRONT);
            if (!m2) {
              if (item.label) {
                item.locator = CSL.STATUTE_SUBDIV_STRINGS_REVERSE[item.label] + " " + item.locator;
              } else {
                item.locator = "p. " + item.locator;
              }
            }
          }
          var sectionMasterLabel = null;
          if (Item.section) {
            Item.section = Item.section.trim();
            var m2 = Item.section.match(CSL.STATUTE_SUBDIV_PLAIN_REGEX_FRONT);
            if (!m2) {
              Item.section = "sec. " + Item.section;
              sectionMasterLabel = "sec.";
            } else {
              sectionMasterLabel = m2[0].trim();
            }
          }
          if (Item.section) {
            if (!item.locator) {
              item.locator = Item.section;
            } else {
              var m2 = item.locator.match(/^([^ ]*)\s*(.*)/);
              var space3 = " ";
              if (m2) {
                if (m2[1] === "p." && sectionMasterLabel !== "p.") {
                  item.locator = m2[2];
                }
                if (["[", "(", ".", ",", ";", ":", "?"].indexOf(item.locator.slice(0, 1)) > -1) {
                  space3 = "";
                }
              } else {
                space3 = "";
              }
              item.locator = Item.section + space3 + item.locator;
            }
          }
          item.label = "";
        }
      }
    };
    CSL.Engine.prototype.setNumberLabels = function(Item) {
      if (Item.number && ["bill", "gazette", "legislation", "regulation", "treaty"].indexOf(Item.type) > -1 && this.opt.development_extensions.consolidate_legal_items && !this.tmp.shadow_numbers["number"]) {
        this.tmp.shadow_numbers["number"] = {};
        this.tmp.shadow_numbers["number"].values = [];
        this.tmp.shadow_numbers["number"].plural = 0;
        this.tmp.shadow_numbers["number"].numeric = false;
        this.tmp.shadow_numbers["number"].label = false;
        var value = "" + Item.number;
        value = value.split("\\").join("");
        var firstword = value.split(/\s+/)[0];
        var firstlabel = CSL.STATUTE_SUBDIV_STRINGS[firstword];
        if (firstlabel) {
          var splt = value.split(CSL.STATUTE_SUBDIV_PLAIN_REGEX);
          if (splt.length > 1) {
            var lst = [];
            for (var j = 1, jlen = splt.length; j < jlen; j += 1) {
              lst.push(splt[j].replace(/\s*$/, "").replace(/^\s*/, ""));
            }
            value = lst.join(" ");
          } else {
            value = splt[0];
          }
          this.tmp.shadow_numbers["number"].label = firstlabel;
          this.tmp.shadow_numbers["number"].values.push(["Blob", value, false]);
          this.tmp.shadow_numbers["number"].numeric = false;
        } else {
          this.tmp.shadow_numbers["number"].values.push(["Blob", value, false]);
          this.tmp.shadow_numbers["number"].numeric = true;
        }
      }
    };
    CSL.substituteOne = function(template) {
      return function(state, list6) {
        if (!list6) {
          return "";
        } else {
          return template.replace("%%STRING%%", list6);
        }
      };
    };
    CSL.substituteTwo = function(template) {
      return function(param) {
        var template2 = template.replace("%%PARAM%%", param);
        return function(state, list6) {
          if (!list6) {
            return "";
          } else {
            return template2.replace("%%STRING%%", list6);
          }
        };
      };
    };
    CSL.Mode = function(mode) {
      var decorations, params, param, func, val, args;
      decorations = {};
      params = CSL.Output.Formats[mode];
      for (param in params) {
        if (true) {
          if ("@" !== param.slice(0, 1)) {
            decorations[param] = params[param];
            continue;
          }
          func = false;
          val = params[param];
          args = param.split("/");
          if (typeof val === "string" && val.indexOf("%%STRING%%") > -1) {
            if (val.indexOf("%%PARAM%%") > -1) {
              func = CSL.substituteTwo(val);
            } else {
              func = CSL.substituteOne(val);
            }
          } else if (typeof val === "boolean" && !val) {
            func = CSL.Output.Formatters.passthrough;
          } else if (typeof val === "function") {
            func = val;
          } else {
            CSL.error("Bad " + mode + " config entry for " + param + ": " + val);
          }
          if (args.length === 1) {
            decorations[args[0]] = func;
          } else if (args.length === 2) {
            if (!decorations[args[0]]) {
              decorations[args[0]] = {};
            }
            decorations[args[0]][args[1]] = func;
          }
        }
      }
      return decorations;
    };
    CSL.setDecorations = function(state, attributes) {
      var ret, key2, pos;
      ret = [];
      for (pos in CSL.FORMAT_KEY_SEQUENCE) {
        if (true) {
          var key2 = CSL.FORMAT_KEY_SEQUENCE[pos];
          if (attributes[key2]) {
            ret.push([key2, attributes[key2]]);
            delete attributes[key2];
          }
        }
      }
      return ret;
    };
    CSL.Doppeler = function(rexStr, stringMangler) {
      var matchRex = new RegExp("(" + rexStr + ")", "g");
      var splitRex = new RegExp(rexStr, "g");
      this.split = function(str2) {
        if (stringMangler) {
          str2 = stringMangler(str2);
        }
        var match3 = str2.match(matchRex);
        if (!match3) {
          return {
            tags: [],
            strings: [str2]
          };
        }
        var split2 = str2.split(splitRex);
        for (var i2 = match3.length - 1; i2 > -1; i2--) {
          if (typeof match3[i2] === "number") {
            match3[i2] = "";
          }
          var tag = match3[i2];
          if (tag === "'" && split2[i2 + 1].length > 0) {
            split2[i2 + 1] = match3[i2] + split2[i2 + 1];
            match3[i2] = "";
          }
        }
        return {
          tags: match3,
          strings: split2,
          origStrings: split2.slice()
        };
      };
      this.join = function(obj) {
        var lst = obj.strings.slice(-1);
        for (var i2 = obj.tags.length - 1; i2 > -1; i2--) {
          lst.push(obj.tags[i2]);
          lst.push(obj.strings[i2]);
        }
        lst.reverse();
        return lst.join("");
      };
    };
    CSL.Engine.prototype.normalDecorIsOrphan = function(blob, params) {
      if (params[1] === "normal") {
        var use_param = false;
        var all_the_decor;
        if (this.tmp.area === "citation") {
          all_the_decor = [this.citation.opt.layout_decorations].concat(blob.alldecor);
        } else {
          all_the_decor = blob.alldecor;
        }
        for (var k = all_the_decor.length - 1; k > -1; k += -1) {
          for (var n = all_the_decor[k].length - 1; n > -1; n += -1) {
            if (all_the_decor[k][n][0] === params[0]) {
              if (all_the_decor[k][n][1] !== "normal") {
                use_param = true;
              }
            }
          }
        }
        if (!use_param) {
          return true;
        }
      }
      return false;
    };
    CSL.Engine.prototype.getCitationLabel = function(Item) {
      var label = "";
      var params = this.getTrigraphParams();
      var config3 = params[0];
      var myname = this.getTerm("reference", "short", 0);
      if ("undefined" === typeof myname) {
        myname = "reference";
      }
      myname = myname.replace(".", "");
      myname = myname.slice(0, 1).toUpperCase() + myname.slice(1);
      for (var i2 = 0, ilen = CSL.NAME_VARIABLES.length; i2 < ilen; i2 += 1) {
        var n = CSL.NAME_VARIABLES[i2];
        if (Item[n]) {
          var names = Item[n];
          if (names.length > params.length) {
            config3 = params[params.length - 1];
          } else {
            config3 = params[names.length - 1];
          }
          for (var j = 0, jlen = names.length; j < jlen; j += 1) {
            if (j === config3.authors.length) {
              break;
            }
            var res = this.nameOutput.getName(names[j], "locale-translit", true);
            var name3 = res.name;
            if (name3 && name3.family) {
              myname = name3.family;
              myname = myname.replace(/^([ \'\u2019a-z]+\s+)/, "");
            } else if (name3 && name3.literal) {
              myname = name3.literal;
            }
            var m2 = myname.toLowerCase().match(/^(a\s+|the\s+|an\s+)/);
            if (m2) {
              myname = myname.slice(m2[1].length);
            }
            myname = myname.replace(CSL.ROMANESQUE_NOT_REGEXP, "");
            if (!myname) {
              break;
            }
            myname = myname.slice(0, config3.authors[j]);
            if (myname.length > 1) {
              myname = myname.slice(0, 1).toUpperCase() + myname.slice(1).toLowerCase();
            } else if (myname.length === 1) {
              myname = myname.toUpperCase();
            }
            label += myname;
          }
          break;
        }
      }
      if (!label) {
        if (Item.title) {
          var skipWords = this.locale[this.opt.lang].opts["skip-words"];
          var lst = Item.title.split(/\s+/);
          for (var i2 = lst.length - 1; i2 > -1; i2--) {
            if (skipWords.indexOf(lst[i2]) > -1) {
              lst = lst.slice(0, i2).concat(lst.slice(i2 + 1));
            }
          }
          var str2 = lst.join("");
          str2 = str2.slice(0, params[0].authors[0]);
          if (str2.length > 1) {
            str2 = str2.slice(0, 1).toUpperCase() + str2.slice(1).toLowerCase();
          } else if (str2.length === 1) {
            str2 = str2.toUpperCase();
          }
          label = str2;
        }
      }
      var year = "0000";
      if (Item.issued) {
        if (Item.issued.year) {
          year = "" + Item.issued.year;
        }
      }
      year = year.slice(config3.year * -1);
      label = label + year;
      return label;
    };
    CSL.Engine.prototype.getTrigraphParams = function() {
      var params = [];
      var ilst = this.opt.trigraph.split(":");
      if (!this.opt.trigraph || this.opt.trigraph.slice(0, 1) !== "A") {
        CSL.error("Bad trigraph definition: " + this.opt.trigraph);
      }
      for (var i2 = 0, ilen = ilst.length; i2 < ilen; i2 += 1) {
        var str2 = ilst[i2];
        var config3 = { authors: [], year: 0 };
        for (var j = 0, jlen = str2.length; j < jlen; j += 1) {
          switch (str2.slice(j, j + 1)) {
            case "A":
              config3.authors.push(1);
              break;
            case "a":
              config3.authors[config3.authors.length - 1] += 1;
              break;
            case "0":
              config3.year += 1;
              break;
            default:
              CSL.error("Invalid character in trigraph definition: " + this.opt.trigraph);
          }
        }
        params.push(config3);
      }
      return params;
    };
    CSL.Engine.prototype.setOutputFormat = function(mode) {
      this.opt.mode = mode;
      this.fun.decorate = CSL.Mode(mode);
      if (!this.output[mode]) {
        this.output[mode] = {};
        this.output[mode].tmp = {};
      }
    };
    CSL.Engine.prototype.getSortFunc = function() {
      return function(a2, b) {
        a2 = a2.split("-");
        b = b.split("-");
        if (a2.length < b.length) {
          return 1;
        } else if (a2.length > b.length) {
          return -1;
        } else {
          a2 = a2.slice(-1)[0];
          b = b.slice(-1)[0];
          if (a2.length < b.length) {
            return 1;
          } else if (a2.length > b.length) {
            return -1;
          } else {
            return 0;
          }
        }
      };
    };
    CSL.Engine.prototype.setLangTagsForCslSort = function(tags) {
      var i2, ilen;
      if (tags) {
        this.opt["locale-sort"] = [];
        for (i2 = 0, ilen = tags.length; i2 < ilen; i2 += 1) {
          this.opt["locale-sort"].push(tags[i2]);
        }
      }
      this.opt["locale-sort"].sort(this.getSortFunc());
    };
    CSL.Engine.prototype.setLangTagsForCslTransliteration = function(tags) {
      var i2, ilen;
      this.opt["locale-translit"] = [];
      if (tags) {
        for (i2 = 0, ilen = tags.length; i2 < ilen; i2 += 1) {
          this.opt["locale-translit"].push(tags[i2]);
        }
      }
      this.opt["locale-translit"].sort(this.getSortFunc());
    };
    CSL.Engine.prototype.setLangTagsForCslTranslation = function(tags) {
      var i2, ilen;
      this.opt["locale-translat"] = [];
      if (tags) {
        for (i2 = 0, ilen = tags.length; i2 < ilen; i2 += 1) {
          this.opt["locale-translat"].push(tags[i2]);
        }
      }
      this.opt["locale-translat"].sort(this.getSortFunc());
    };
    CSL.Engine.prototype.setLangPrefsForCites = function(obj, conv) {
      var opt = this.opt["cite-lang-prefs"];
      if (!conv) {
        conv = function(key2) {
          return key2.toLowerCase();
        };
      }
      var segments = ["Persons", "Institutions", "Titles", "Journals", "Publishers", "Places"];
      for (var i2 = 0, ilen = segments.length; i2 < ilen; i2 += 1) {
        var clientSegment = conv(segments[i2]);
        var citeprocSegment = segments[i2].toLowerCase();
        if (!obj[clientSegment]) {
          continue;
        }
        var supplements = [];
        while (obj[clientSegment].length > 1) {
          supplements.push(obj[clientSegment].pop());
        }
        var sortval = { orig: 1, translit: 2, translat: 3 };
        if (supplements.length === 2 && sortval[supplements[0]] < sortval[supplements[1]]) {
          supplements.reverse();
        }
        while (supplements.length) {
          obj[clientSegment].push(supplements.pop());
        }
        var lst = opt[citeprocSegment];
        while (lst.length) {
          lst.pop();
        }
        for (var j = 0, jlen = obj[clientSegment].length; j < jlen; j += 1) {
          lst.push(obj[clientSegment][j]);
        }
      }
    };
    CSL.Engine.prototype.setLangPrefsForCiteAffixes = function(affixList) {
      if (affixList && affixList.length === 48) {
        var affixes = this.opt.citeAffixes;
        var count2 = 0;
        var settings = ["persons", "institutions", "titles", "journals", "publishers", "places"];
        var forms = ["translit", "orig", "translit", "translat"];
        var value;
        for (var i2 = 0, ilen = settings.length; i2 < ilen; i2 += 1) {
          for (var j = 0, jlen = forms.length; j < jlen; j += 1) {
            value = "";
            if (count2 % 8 === 4) {
              if (!affixes[settings[i2]]["locale-" + forms[j]].prefix && !affixes[settings[i2]]["locale-" + forms[j]].suffix) {
                value = affixList[count2] ? affixList[count2] : "";
                affixes[settings[i2]]["locale-" + forms[j]].prefix = value;
                value = affixList[count2] ? affixList[count2 + 1] : "";
                affixes[settings[i2]]["locale-" + forms[j]].suffix = value;
              }
            } else {
              value = affixList[count2] ? affixList[count2] : "";
              affixes[settings[i2]]["locale-" + forms[j]].prefix = value;
              value = affixList[count2] ? affixList[count2 + 1] : "";
              affixes[settings[i2]]["locale-" + forms[j]].suffix = value;
            }
            count2 += 2;
          }
        }
        this.opt.citeAffixes = affixes;
      }
    };
    CSL.Engine.prototype.setAutoVietnameseNamesOption = function(arg2) {
      if (arg2) {
        this.opt["auto-vietnamese-names"] = true;
      } else {
        this.opt["auto-vietnamese-names"] = false;
      }
    };
    CSL.Engine.prototype.setAbbreviations = function(arg2) {
      if (this.sys.setAbbreviations) {
        this.sys.setAbbreviations(arg2);
      }
    };
    CSL.Engine.prototype.setSuppressTrailingPunctuation = function(arg2) {
      this.citation.opt.suppressTrailingPunctuation = !!arg2;
    };
    CSL.Output = {};
    CSL.Output.Queue = function(state) {
      this.levelname = ["top"];
      this.state = state;
      this.queue = [];
      this.empty = new CSL.Token("empty");
      var tokenstore = {};
      tokenstore.empty = this.empty;
      this.formats = new CSL.Stack(tokenstore);
      this.current = new CSL.Stack(this.queue);
    };
    CSL.Output.Queue.prototype.pop = function() {
      var drip = this.current.value();
      if (drip.length) {
        return drip.pop();
      } else {
        return drip.blobs.pop();
      }
    };
    CSL.Output.Queue.prototype.getToken = function(name3) {
      var ret = this.formats.value()[name3];
      return ret;
    };
    CSL.Output.Queue.prototype.mergeTokenStrings = function(base5, modifier) {
      var base_token, modifier_token, ret, key2;
      base_token = this.formats.value()[base5];
      modifier_token = this.formats.value()[modifier];
      ret = base_token;
      if (modifier_token) {
        if (!base_token) {
          base_token = new CSL.Token(base5, CSL.SINGLETON);
          base_token.decorations = [];
        }
        ret = new CSL.Token(base5, CSL.SINGLETON);
        var key2 = "";
        for (var key2 in base_token.strings) {
          if (base_token.strings.hasOwnProperty(key2)) {
            ret.strings[key2] = base_token.strings[key2];
          }
        }
        for (var key2 in modifier_token.strings) {
          if (modifier_token.strings.hasOwnProperty(key2)) {
            ret.strings[key2] = modifier_token.strings[key2];
          }
        }
        ret.decorations = base_token.decorations.concat(modifier_token.decorations);
      }
      return ret;
    };
    CSL.Output.Queue.prototype.addToken = function(name3, modifier, token) {
      var newtok, attr;
      newtok = new CSL.Token("output");
      if ("string" === typeof token) {
        token = this.formats.value()[token];
      }
      if (token && token.strings) {
        for (attr in token.strings) {
          if (token.strings.hasOwnProperty(attr)) {
            newtok.strings[attr] = token.strings[attr];
          }
        }
        newtok.decorations = token.decorations;
      }
      if ("string" === typeof modifier) {
        newtok.strings.delimiter = modifier;
      }
      this.formats.value()[name3] = newtok;
    };
    CSL.Output.Queue.prototype.pushFormats = function(tokenstore) {
      if (!tokenstore) {
        tokenstore = {};
      }
      tokenstore.empty = this.empty;
      this.formats.push(tokenstore);
    };
    CSL.Output.Queue.prototype.popFormats = function() {
      this.formats.pop();
    };
    CSL.Output.Queue.prototype.startTag = function(name3, token) {
      var tokenstore = {};
      if (this.state.tmp["doing-macro-with-date"] && this.state.tmp.extension) {
        token = this.empty;
        name3 = "empty";
      }
      tokenstore[name3] = token;
      this.pushFormats(tokenstore);
      this.openLevel(name3);
    };
    CSL.Output.Queue.prototype.endTag = function(name3) {
      this.closeLevel(name3);
      this.popFormats();
    };
    CSL.Output.Queue.prototype.openLevel = function(token) {
      var blob, curr;
      if ("object" === typeof token) {
        blob = new CSL.Blob(void 0, token);
      } else if ("undefined" === typeof token) {
        blob = new CSL.Blob(void 0, this.formats.value().empty, "empty");
      } else {
        if (!this.formats.value() || !this.formats.value()[token]) {
          CSL.error('CSL processor error: call to nonexistent format token "' + token + '"');
        }
        blob = new CSL.Blob(void 0, this.formats.value()[token], token);
      }
      curr = this.current.value();
      if (!this.state.tmp.just_looking && this.checkNestedBrace) {
        blob.strings.prefix = this.checkNestedBrace.update(blob.strings.prefix);
      }
      curr.push(blob);
      this.current.push(blob);
    };
    CSL.Output.Queue.prototype.closeLevel = function(name3) {
      if (name3 && name3 !== this.current.value().levelname) {
        CSL.error("Level mismatch error:  wanted " + name3 + " but found " + this.current.value().levelname);
      }
      var blob = this.current.pop();
      if (!this.state.tmp.just_looking && this.checkNestedBrace) {
        blob.strings.suffix = this.checkNestedBrace.update(blob.strings.suffix);
      }
    };
    CSL.Output.Queue.prototype.append = function(str2, tokname, notSerious, ignorePredecessor, noStripPeriods) {
      var token, blob, curr;
      var useblob = true;
      if (notSerious) {
        ignorePredecessor = true;
      }
      if (this.state.tmp["doing-macro-with-date"] && !notSerious) {
        if (tokname !== "macro-with-date") {
          return false;
        }
        if (tokname === "macro-with-date") {
          tokname = "empty";
        }
      }
      if ("undefined" === typeof str2) {
        return false;
      }
      if ("number" === typeof str2) {
        str2 = "" + str2;
      }
      if (!notSerious && this.state.tmp.element_trace && this.state.tmp.element_trace.value() === "suppress-me") {
        return false;
      }
      blob = false;
      if (!tokname) {
        token = this.formats.value().empty;
      } else if (tokname === "literal") {
        token = true;
        useblob = false;
      } else if ("string" === typeof tokname) {
        token = this.formats.value()[tokname];
      } else {
        token = tokname;
      }
      if (!token) {
        CSL.error("CSL processor error: unknown format token name: " + tokname);
      }
      if (token.strings && "undefined" === typeof token.strings.delimiter) {
        token.strings.delimiter = "";
      }
      if ("string" === typeof str2 && str2.length) {
        str2 = str2.replace(/ ([:;?!\u00bb])/g, "\u202F$1").replace(/\u00ab /g, "\xAB\u202F");
        this.last_char_rendered = str2.slice(-1);
        str2 = str2.replace(/\s+'/g, " '");
        if (!notSerious) {
          str2 = str2.replace(/^'/g, " '");
        }
        if (!ignorePredecessor) {
          this.state.tmp.term_predecessor = true;
          this.state.tmp.in_cite_predecessor = true;
        } else if (notSerious) {
          this.state.tmp.term_predecessor_name = true;
        }
      }
      blob = new CSL.Blob(str2, token);
      curr = this.current.value();
      if ("undefined" === typeof curr && this.current.mystack.length === 0) {
        this.current.mystack.push([]);
        curr = this.current.value();
      }
      if ("string" === typeof blob.blobs) {
        if (!ignorePredecessor) {
          this.state.tmp.term_predecessor = true;
          this.state.tmp.in_cite_predecessor = true;
        } else if (notSerious) {
          this.state.tmp.term_predecessor_name = true;
        }
      }
      if ("string" === typeof str2) {
        if ("string" === typeof blob.blobs) {
          if (blob.blobs.slice(0, 1) !== " ") {
            var blobPrefix = "";
            var blobBlobs = blob.blobs;
            while (CSL.TERMINAL_PUNCTUATION.indexOf(blobBlobs.slice(0, 1)) > -1) {
              blobPrefix = blobPrefix + blobBlobs.slice(0, 1);
              blobBlobs = blobBlobs.slice(1);
            }
            if (blobBlobs && blobPrefix) {
              blob.strings.prefix = blob.strings.prefix + blobPrefix;
              blob.blobs = blobBlobs;
            }
          }
        }
        if (blob.strings["text-case"]) {
          blob.blobs = CSL.Output.Formatters[blob.strings["text-case"]](this.state, str2);
        }
        if (this.state.tmp.strip_periods && !noStripPeriods) {
          blob.blobs = blob.blobs.replace(/\.([^a-z]|$)/g, "$1");
        }
        for (var i2 = blob.decorations.length - 1; i2 > -1; i2 += -1) {
          if (blob.decorations[i2][0] === "@quotes" && blob.decorations[i2][1] !== "false") {
            blob.punctuation_in_quote = this.state.getOpt("punctuation-in-quote");
          }
          if (!blob.blobs.match(CSL.ROMANESQUE_REGEXP)) {
            if (blob.decorations[i2][0] === "@font-style") {
              blob.decorations = blob.decorations.slice(0, i2).concat(blob.decorations.slice(i2 + 1));
            }
          }
        }
        curr.push(blob);
        this.state.fun.flipflopper.processTags(blob);
      } else if (useblob) {
        curr.push(blob);
      } else {
        curr.push(str2);
      }
      return true;
    };
    CSL.Output.Queue.prototype.string = function(state, myblobs, blob) {
      var i2, ilen, j, jlen, b;
      var txt_esc = CSL.getSafeEscape(this.state);
      var blobs = myblobs.slice();
      var ret = [];
      if (blobs.length === 0) {
        return ret;
      }
      var blob_delimiter = "";
      if (blob) {
        blob_delimiter = blob.strings.delimiter;
      } else {
        state.tmp.count_offset_characters = false;
        state.tmp.offset_characters = 0;
      }
      if (blob && blob.new_locale) {
        blob.old_locale = state.opt.lang;
        state.opt.lang = blob.new_locale;
      }
      var blobjr, use_suffix, use_prefix, params;
      for (var i2 = 0, ilen = blobs.length; i2 < ilen; i2 += 1) {
        blobjr = blobs[i2];
        if (blobjr.strings.first_blob) {
          state.tmp.count_offset_characters = blobjr.strings.first_blob;
        }
        if ("string" === typeof blobjr.blobs) {
          if ("number" === typeof blobjr.num) {
            ret.push(blobjr);
          } else if (blobjr.blobs) {
            if (blobjr.particle) {
              blobjr.blobs = blobjr.particle + blobjr.blobs;
              blobjr.particle = "";
            }
            b = txt_esc(blobjr.blobs);
            var blen = b.length;
            if (!state.tmp.suppress_decorations) {
              for (j = 0, jlen = blobjr.decorations.length; j < jlen; j += 1) {
                params = blobjr.decorations[j];
                if (params[0] === "@showid") {
                  continue;
                }
                if (state.normalDecorIsOrphan(blobjr, params)) {
                  continue;
                }
                b = state.fun.decorate[params[0]][params[1]].call(blobjr, state, b, params[2]);
              }
            }
            if (b && b.length) {
              b = txt_esc(blobjr.strings.prefix) + b + txt_esc(blobjr.strings.suffix);
              if (state.opt.development_extensions.csl_reverse_lookup_support && !state.tmp.suppress_decorations) {
                for (j = 0, jlen = blobjr.decorations.length; j < jlen; j += 1) {
                  params = blobjr.decorations[j];
                  if (params[0] === "@showid") {
                    b = state.fun.decorate[params[0]][params[1]].call(blobjr, state, b, params[2]);
                  }
                }
              }
              ret.push(b);
              if (state.tmp.count_offset_characters) {
                state.tmp.offset_characters += blen + blobjr.strings.suffix.length + blobjr.strings.prefix.length;
              }
            }
          }
        } else if (blobjr.blobs.length) {
          var addtoret = state.output.string(state, blobjr.blobs, blobjr);
          if (blob) {
            if ("string" !== addtoret && addtoret.length > 1 && blobjr.strings.delimiter) {
              var numberSeen = false;
              for (var j = 0, jlen = addtoret.length; j < jlen; j++) {
                if ("string" !== typeof addtoret[j]) {
                  numberSeen = true;
                } else if (numberSeen) {
                  addtoret[j] = blobjr.strings.delimiter + addtoret[j];
                }
              }
            }
          }
          ret = ret.concat(addtoret);
        }
        if (blobjr.strings.first_blob && state.registry.registry[blobjr.strings.first_blob]) {
          state.registry.registry[blobjr.strings.first_blob].offset = state.tmp.offset_characters;
          state.tmp.count_offset_characters = false;
        }
      }
      for (i2 = 0, ilen = ret.length - 1; i2 < ilen; i2 += 1) {
        if ("number" === typeof ret[i2].num && "number" === typeof ret[i2 + 1].num && !ret[i2 + 1].UGLY_DELIMITER_SUPPRESS_HACK) {
          ret[i2].strings.suffix = ret[i2].strings.suffix + (blob_delimiter ? blob_delimiter : "");
          ret[i2 + 1].successor_prefix = "";
          ret[i2 + 1].UGLY_DELIMITER_SUPPRESS_HACK = true;
        }
      }
      var span_split = 0;
      for (var i2 = 0, ilen = ret.length; i2 < ilen; i2 += 1) {
        if ("string" === typeof ret[i2]) {
          span_split = parseInt(i2, 10) + 1;
          if (i2 < ret.length - 1 && "object" === typeof ret[i2 + 1]) {
            if (blob_delimiter && !ret[i2 + 1].UGLY_DELIMITER_SUPPRESS_HACK) {
              ret[i2] += txt_esc(blob_delimiter);
            }
            ret[i2 + 1].UGLY_DELIMITER_SUPPRESS_HACK = true;
          }
        }
      }
      if (blob && (blob.decorations.length || blob.strings.suffix)) {
        span_split = ret.length;
      } else if (blob && blob.strings.prefix) {
        for (var i2 = 0, ilen = ret.length; i2 < ilen; i2++) {
          if ("undefined" !== typeof ret[i2].num) {
            span_split = i2;
            if (i2 === 0) {
              ret[i2].strings.prefix = blob.strings.prefix + ret[i2].strings.prefix;
            }
            break;
          }
        }
      }
      var blobs_start = state.output.renderBlobs(ret.slice(0, span_split), blob_delimiter, false, blob);
      if (blobs_start && blob && (blob.decorations.length || blob.strings.suffix || blob.strings.prefix)) {
        if (!state.tmp.suppress_decorations) {
          for (var i2 = 0, ilen = blob.decorations.length; i2 < ilen; i2 += 1) {
            params = blob.decorations[i2];
            if (["@cite", "@bibliography", "@display", "@showid"].indexOf(params[0]) > -1) {
              continue;
            }
            if (state.normalDecorIsOrphan(blobjr, params)) {
              continue;
            }
            if (!params[0]) continue;
            if ("string" === typeof blobs_start) {
              blobs_start = state.fun.decorate[params[0]][params[1]].call(blob, state, blobs_start, params[2]);
            }
          }
        }
        b = blobs_start;
        use_suffix = blob.strings.suffix;
        if (b && b.length) {
          use_prefix = blob.strings.prefix;
          b = txt_esc(use_prefix) + b + txt_esc(use_suffix);
          if (state.tmp.count_offset_characters) {
            state.tmp.offset_characters += use_prefix.length + use_suffix.length;
          }
        }
        blobs_start = b;
        if (!state.tmp.suppress_decorations) {
          for (var i2 = 0, ilen = blob.decorations.length; i2 < ilen; i2 += 1) {
            params = blob.decorations[i2];
            if (["@cite", "@bibliography", "@display", "@showid"].indexOf(params[0]) === -1) {
              continue;
            }
            if ("string" === typeof blobs_start) {
              blobs_start = state.fun.decorate[params[0]][params[1]].call(blob, state, blobs_start, params[2]);
            }
          }
        }
      }
      var blobs_end = ret.slice(span_split, ret.length);
      if (!blobs_end.length && blobs_start) {
        ret = [blobs_start];
      } else if (blobs_end.length && !blobs_start) {
        ret = blobs_end;
      } else if (blobs_start && blobs_end.length) {
        ret = [blobs_start].concat(blobs_end);
      }
      if ("undefined" === typeof blob) {
        this.queue = [];
        this.current.mystack = [];
        this.current.mystack.push(this.queue);
        if (state.tmp.suppress_decorations) {
          ret = state.output.renderBlobs(ret, void 0, false);
        }
      } else if ("boolean" === typeof blob) {
        ret = state.output.renderBlobs(ret, void 0, true);
      }
      if (blob && blob.new_locale) {
        state.opt.lang = blob.old_locale;
      }
      return ret;
    };
    CSL.Output.Queue.prototype.clearlevel = function() {
      var blob, pos, len;
      blob = this.current.value();
      len = blob.blobs.length;
      for (pos = 0; pos < len; pos += 1) {
        blob.blobs.pop();
      }
    };
    CSL.Output.Queue.prototype.renderBlobs = function(blobs, delim, in_cite, parent2) {
      var state, ret, ret_last_char, use_delim, blob, pos, len, ppos, llen, str2, params, txt_esc;
      txt_esc = CSL.getSafeEscape(this.state);
      if (!delim) {
        delim = "";
      }
      state = this.state;
      ret = "";
      ret_last_char = [];
      use_delim = "";
      len = blobs.length;
      if (this.state.tmp.area === "citation" && !this.state.tmp.just_looking && len === 1 && typeof blobs[0] === "object" && parent2) {
        blobs[0].strings.prefix = parent2.strings.prefix + blobs[0].strings.prefix;
        blobs[0].strings.suffix = blobs[0].strings.suffix + parent2.strings.suffix;
        blobs[0].decorations = blobs[0].decorations.concat(parent2.decorations);
        blobs[0].params = parent2.params;
        return blobs[0];
      }
      var start = true;
      for (pos = 0; pos < len; pos += 1) {
        if (blobs[pos].checkNext) {
          blobs[pos].checkNext(blobs[pos + 1], start);
          start = false;
        } else if (blobs[pos + 1] && blobs[pos + 1].splice_prefix) {
          start = false;
        } else {
          start = true;
        }
      }
      var doit = true;
      for (pos = blobs.length - 1; pos > 0; pos += -1) {
        if (blobs[pos].checkLast) {
          if (doit && blobs[pos].checkLast(blobs[pos - 1])) {
            doit = false;
          }
        } else {
          doit = true;
        }
      }
      len = blobs.length;
      for (pos = 0; pos < len; pos += 1) {
        blob = blobs[pos];
        if (ret) {
          use_delim = delim;
        }
        if ("string" === typeof blob) {
          ret += txt_esc(use_delim);
          ret += blob;
          if (state.tmp.count_offset_characters) {
            state.tmp.offset_characters += use_delim.length;
          }
        } else if (in_cite) {
          if (ret) {
            ret = [ret, blob];
          } else {
            ret = [blob];
          }
        } else if (blob.status !== CSL.SUPPRESS) {
          if (blob.particle) {
            str2 = blob.particle + blob.num;
          } else {
            str2 = blob.formatter.format(blob.num, blob.gender);
          }
          var strlen = str2.replace(/<[^>]*>/g, "").length;
          this.append(str2, "empty", true);
          var str_blob = this.pop();
          var count_offset_characters = state.tmp.count_offset_characters;
          str2 = this.string(state, [str_blob], false);
          state.tmp.count_offset_characters = count_offset_characters;
          if (blob.strings["text-case"]) {
            str2 = CSL.Output.Formatters[blob.strings["text-case"]](this.state, str2);
          }
          if (str2 && this.state.tmp.strip_periods) {
            str2 = str2.replace(/\.([^a-z]|$)/g, "$1");
          }
          if (!state.tmp.suppress_decorations) {
            llen = blob.decorations.length;
            for (ppos = 0; ppos < llen; ppos += 1) {
              params = blob.decorations[ppos];
              if (state.normalDecorIsOrphan(blob, params)) {
                continue;
              }
              str2 = state.fun.decorate[params[0]][params[1]].call(blob, state, str2, params[2]);
            }
          }
          str2 = txt_esc(blob.strings.prefix) + str2 + txt_esc(blob.strings.suffix);
          var addme = "";
          if (blob.status === CSL.END) {
            addme = txt_esc(blob.range_prefix);
          } else if (blob.status === CSL.SUCCESSOR) {
            addme = txt_esc(blob.successor_prefix);
          } else if (blob.status === CSL.START) {
            if (pos > 0 && !blob.suppress_splice_prefix) {
              addme = txt_esc(blob.splice_prefix);
            } else {
              addme = "";
            }
          } else if (blob.status === CSL.SEEN) {
            addme = txt_esc(blob.splice_prefix);
          }
          ret += addme;
          ret += str2;
          if (state.tmp.count_offset_characters) {
            state.tmp.offset_characters += addme.length + blob.strings.prefix.length + strlen + blob.strings.suffix.length;
          }
        }
      }
      return ret;
    };
    CSL.Output.Queue.purgeEmptyBlobs = function(parent2) {
      if ("object" !== typeof parent2 || "object" !== typeof parent2.blobs || !parent2.blobs.length) {
        return;
      }
      for (var i2 = parent2.blobs.length - 1; i2 > -1; i2--) {
        CSL.Output.Queue.purgeEmptyBlobs(parent2.blobs[i2]);
        var child = parent2.blobs[i2];
        if (!child || !child.blobs || !child.blobs.length) {
          var buf = [];
          while (parent2.blobs.length - 1 > i2) {
            buf.push(parent2.blobs.pop());
          }
          parent2.blobs.pop();
          while (buf.length) {
            parent2.blobs.push(buf.pop());
          }
        }
      }
    };
    CSL.Output.Queue.adjust = function(punctInQuote) {
      var NO_SWAP_IN = {
        ";": true,
        ":": true
      };
      var NO_SWAP_OUT = {
        ".": true,
        "!": true,
        "?": true
      };
      var LtoR_MAP = {
        "!": {
          ".": "!",
          "?": "!?",
          ":": "!",
          ",": "!,",
          ";": "!;"
        },
        "?": {
          "!": "?!",
          ".": "?",
          ":": "?",
          ",": "?,",
          ";": "?;"
        },
        ".": {
          "!": ".!",
          "?": ".?",
          ":": ".:",
          ",": ".,",
          ";": ".;"
        },
        ":": {
          "!": "!",
          "?": "?",
          ".": ":",
          ",": ":,",
          ";": ":;"
        },
        ",": {
          "!": ",!",
          "?": ",?",
          ":": ",:",
          ".": ",.",
          ";": ",;"
        },
        ";": {
          "!": "!",
          "?": "?",
          ":": ";",
          ",": ";,",
          ".": ";"
        }
      };
      var SWAP_IN = {};
      var SWAP_OUT = {};
      var PUNCT = {};
      var PUNCT_OR_SPACE = {};
      for (var key2 in LtoR_MAP) {
        PUNCT[key2] = true;
        PUNCT_OR_SPACE[key2] = true;
        if (!NO_SWAP_IN[key2]) {
          SWAP_IN[key2] = true;
        }
        if (!NO_SWAP_OUT[key2]) {
          SWAP_OUT[key2] = true;
        }
      }
      PUNCT_OR_SPACE[" "] = true;
      PUNCT_OR_SPACE["\xA0"] = true;
      var RtoL_MAP = {};
      for (var key2 in LtoR_MAP) {
        for (var subkey in LtoR_MAP[key2]) {
          if (!RtoL_MAP[subkey]) {
            RtoL_MAP[subkey] = {};
          }
          RtoL_MAP[subkey][key2] = LtoR_MAP[key2][subkey];
        }
      }
      function blobIsNumber(blob) {
        return "number" === typeof blob.num || blob.blobs && blob.blobs.length === 1 && "number" === typeof blob.blobs[0].num;
      }
      function blobEndsInNumber(blob) {
        if ("number" === typeof blob.num) {
          return true;
        }
        if (!blob.blobs || "object" !== typeof blob.blobs) {
          return false;
        }
        if (blobEndsInNumber(blob.blobs[blob.blobs.length - 1])) {
          return true;
        }
      }
      function blobHasDecorations(blob, includeQuotes) {
        var ret = false;
        var decorlist = ["@font-style", "@font-variant", "@font-weight", "@text-decoration", "@vertical-align"];
        if (includeQuotes) {
          decorlist.push("@quotes");
        }
        if (blob.decorations) {
          for (var i2 = 0, ilen = blob.decorations.length; i2 < ilen; i2++) {
            if (decorlist.indexOf(blob.decorations[i2][0]) > -1) {
              ret = true;
              break;
            }
          }
        }
        return ret;
      }
      function blobHasDescendantQuotes(blob) {
        if (blob.decorations) {
          for (var i2 = 0, ilen = blob.decorations.length; i2 < ilen; i2++) {
            if (blob.decorations[i2][0] === "@quotes" && blob.decorations[i2][1] !== "false") {
              return true;
            }
          }
        }
        if ("object" !== typeof blob.blobs) {
          return false;
        }
        return blobHasDescendantQuotes(blob.blobs[blob.blobs.length - 1]);
      }
      function blobHasDescendantMergingPunctuation(parentChar, blob) {
        var childChar = blob.strings.suffix.slice(-1);
        if (!childChar && "string" === typeof blob.blobs) {
          childChar = blob.blobs.slice(-1);
        }
        var mergedChars = RtoL_MAP[parentChar][childChar];
        if (mergedChars && mergedChars.length === 1) {
          return true;
        }
        if ("object" !== typeof blob.blobs) {
          return false;
        }
        if (blobHasDescendantMergingPunctuation(parentChar, blob.blobs[blob.blobs.length - 1])) {
          return true;
        }
        return false;
      }
      function matchLastChar(blob, chr) {
        if (!PUNCT[chr]) {
          return false;
        }
        if ("string" === typeof blob.blobs) {
          if (blob.blobs.slice(-1) === chr) {
            return true;
          } else {
            return false;
          }
        } else {
          var child = blob.blobs[blob.blobs.length - 1];
          if (child) {
            var childChar = child.strings.suffix.slice(-1);
            if (!childChar) {
              return matchLastChar(child, chr);
            } else if (child.strings.suffix.slice(-1) == chr) {
              return true;
            } else {
              return false;
            }
          } else {
            return false;
          }
        }
      }
      function mergeChars(First, first2, Second, second, merge_right) {
        var FirstStrings = "blobs" === first2 ? First : First.strings;
        var SecondStrings = "blobs" === second ? Second : Second.strings;
        var firstChar = FirstStrings[first2].slice(-1);
        var secondChar = SecondStrings[second].slice(0, 1);
        function cullRight() {
          SecondStrings[second] = SecondStrings[second].slice(1);
        }
        function cullLeft() {
          FirstStrings[first2] = FirstStrings[first2].slice(0, -1);
        }
        function addRight(chr) {
          SecondStrings[second] = chr + SecondStrings[second];
        }
        function addLeft(chr) {
          FirstStrings[first2] += chr;
        }
        var cull = merge_right ? cullLeft : cullRight;
        function matchOnRight() {
          return RtoL_MAP[secondChar];
        }
        function matchOnLeft() {
          return LtoR_MAP[firstChar];
        }
        var match3 = merge_right ? matchOnLeft : matchOnRight;
        function mergeToRight() {
          var chr = LtoR_MAP[firstChar][secondChar];
          if ("string" === typeof chr) {
            cullLeft();
            cullRight();
            addRight(chr);
          } else {
            addRight(firstChar);
            cullLeft();
          }
        }
        function mergeToLeft() {
          var chr = RtoL_MAP[secondChar][firstChar];
          if ("string" === typeof chr) {
            cullLeft();
            cullRight();
            addLeft(chr);
          } else {
            addLeft(secondChar);
            cullRight();
          }
        }
        var merge3 = merge_right ? mergeToRight : mergeToLeft;
        var isDuplicate = firstChar === secondChar;
        if (isDuplicate) {
          cull();
        } else {
          if (match3()) {
            merge3();
          }
        }
      }
      function upward(parent2) {
        if (parent2.blobs && "string" == typeof parent2.blobs) {
          if (PUNCT[parent2.strings.suffix.slice(0, 1)] && parent2.strings.suffix.slice(0, 1) === parent2.blobs.slice(-1)) {
            parent2.strings.suffix = parent2.strings.suffix.slice(1);
          }
          return;
        } else if ("object" !== typeof parent2 || "object" !== typeof parent2.blobs || !parent2.blobs.length) {
          return;
        }
        var parentDecorations = blobHasDecorations(parent2, true);
        for (var i2 = parent2.blobs.length - 1; i2 > -1; i2--) {
          this.upward(parent2.blobs[i2]);
          var parentStrings = parent2.strings;
          var childStrings = parent2.blobs[i2].strings;
          if (i2 === 0) {
            if (" " === parentStrings.prefix.slice(-1) && " " === childStrings.prefix.slice(0, 1)) {
              childStrings.prefix = childStrings.prefix.slice(1);
            }
            var childChar = childStrings.prefix.slice(0, 1);
            if (!parentDecorations && PUNCT_OR_SPACE[childChar] && !parentStrings.prefix) {
              parentStrings.prefix += childChar;
              childStrings.prefix = childStrings.prefix.slice(1);
            }
          }
          if (i2 === parent2.blobs.length - 1) {
            var childChar = childStrings.suffix.slice(-1);
            if (!parentDecorations && [" "].indexOf(childChar) > -1) {
              if (parentStrings.suffix.slice(0, 1) !== childChar) {
                parentStrings.suffix = childChar + parentStrings.suffix;
              }
              childStrings.suffix = childStrings.suffix.slice(0, -1);
            }
          }
          if (parentStrings.delimiter && i2 > 0) {
            if (PUNCT_OR_SPACE[parentStrings.delimiter.slice(-1)] && parentStrings.delimiter.slice(-1) === childStrings.prefix.slice(0, 1)) {
              childStrings.prefix = childStrings.prefix.slice(1);
            }
          }
        }
      }
      function leftward(parent2) {
        if ("object" !== typeof parent2 || "object" !== typeof parent2.blobs || !parent2.blobs.length) {
          return;
        }
        for (var i2 = parent2.blobs.length - 1; i2 > -1; i2--) {
          this.leftward(parent2.blobs[i2]);
          if (i2 < parent2.blobs.length - 1 && !parent2.strings.delimiter) {
            var child = parent2.blobs[i2];
            var childChar = child.strings.suffix.slice(-1);
            var sibling = parent2.blobs[i2 + 1];
            var siblingChar = sibling.strings.prefix.slice(0, 1);
            var hasDecorations = blobHasDecorations(child) || blobHasDecorations(sibling);
            var hasNumber = "number" === typeof childChar || "number" === typeof siblingChar;
            if (!hasDecorations && !hasNumber && PUNCT[siblingChar] && !hasNumber) {
              var suffixAndPrefixMatch = siblingChar === child.strings.suffix.slice(-1);
              var suffixAndFieldMatch = !child.strings.suffix && "string" === typeof child.blobs && child.blobs.slice(-1) === siblingChar;
              if (!suffixAndPrefixMatch && !suffixAndFieldMatch) {
                mergeChars(child, "suffix", sibling, "prefix");
              } else {
                sibling.strings.prefix = sibling.strings.prefix.slice(1);
              }
            }
          }
        }
      }
      function downward(parent2) {
        if (parent2.blobs && "string" == typeof parent2.blobs) {
          if (PUNCT[parent2.strings.suffix.slice(0, 1)] && parent2.strings.suffix.slice(0, 1) === parent2.blobs.slice(-1)) {
            parent2.strings.suffix = parent2.strings.suffix.slice(1);
          }
          return;
        } else if ("object" !== typeof parent2 || "object" !== typeof parent2.blobs || !parent2.blobs.length) {
          return;
        }
        var parentStrings = parent2.strings;
        var someChildrenAreNumbers = false;
        for (var i2 = 0, ilen = parent2.blobs.length; i2 < ilen; i2++) {
          if (blobIsNumber(parent2.blobs[i2])) {
            someChildrenAreNumbers = true;
            break;
          }
        }
        if (true) {
          if (parentStrings.delimiter && PUNCT[parentStrings.delimiter.slice(0, 1)]) {
            var delimChar = parentStrings.delimiter.slice(0, 1);
            for (var i2 = parent2.blobs.length - 2; i2 > -1; i2--) {
              var childStrings = parent2.blobs[i2].strings;
              if (childStrings.suffix.slice(-1) !== delimChar) {
                childStrings.suffix += delimChar;
              }
            }
            parentStrings.delimiter = parentStrings.delimiter.slice(1);
          }
        }
        for (var i2 = parent2.blobs.length - 1; i2 > -1; i2--) {
          var child = parent2.blobs[i2];
          var childStrings = parent2.blobs[i2].strings;
          var childDecorations = blobHasDecorations(child, true);
          var childIsNumber = blobIsNumber(child);
          if (i2 === parent2.blobs.length - 1) {
            if (true) {
              var parentChar = parentStrings.suffix.slice(0, 1);
              var allowMigration = false;
              if (PUNCT[parentChar]) {
                allowMigration = blobHasDescendantMergingPunctuation(parentChar, child);
                if (!allowMigration && punctInQuote) {
                  allowMigration = blobHasDescendantQuotes(child);
                }
              }
              if (allowMigration) {
                if (PUNCT[parentChar]) {
                  if (!blobEndsInNumber(child)) {
                    if ("string" === typeof child.blobs) {
                      mergeChars(child, "blobs", parent2, "suffix");
                    } else {
                      mergeChars(child, "suffix", parent2, "suffix");
                    }
                    if (parentStrings.suffix.slice(0, 1) === ".") {
                      childStrings.suffix += parentStrings.suffix.slice(0, 1);
                      parentStrings.suffix = parentStrings.suffix.slice(1);
                    }
                  }
                }
              }
              if (childStrings.suffix.slice(-1) === "\xA0" && parentStrings.suffix.slice(0, 1) === " ") {
                parentStrings.suffix = parentStrings.suffix.slice(1);
              }
              if (PUNCT_OR_SPACE[childStrings.suffix.slice(0, 1)]) {
                if ("string" === typeof child.blobs && child.blobs.slice(-1) === childStrings.suffix.slice(0, 1)) {
                  childStrings.suffix = childStrings.suffix.slice(1);
                }
                if (childStrings.suffix.slice(-1) === parentStrings.suffix.slice(0, 1)) {
                  parentStrings.suffix = parentStrings.suffix.slice(0, -1);
                }
              }
            }
            if (matchLastChar(parent2, parent2.strings.suffix.slice(0, 1))) {
              parent2.strings.suffix = parent2.strings.suffix.slice(1);
            }
          } else if (parentStrings.delimiter) {
            if (PUNCT_OR_SPACE[parentStrings.delimiter.slice(0, 1)] && parentStrings.delimiter.slice(0, 1) === childStrings.suffix.slice(-1)) {
              parent2.blobs[i2].strings.suffix = parent2.blobs[i2].strings.suffix.slice(0, -1);
            }
          } else {
            var siblingStrings = parent2.blobs[i2 + 1].strings;
            if (!blobIsNumber(child) && !childDecorations && PUNCT_OR_SPACE[childStrings.suffix.slice(-1)] && childStrings.suffix.slice(-1) === siblingStrings.prefix.slice(0, 1)) {
              siblingStrings.prefix = siblingStrings.prefix.slice(1);
            }
          }
          if (!childIsNumber && !childDecorations && PUNCT[childStrings.suffix.slice(0, 1)] && "string" === typeof child.blobs) {
            mergeChars(child, "blobs", child, "suffix");
          }
          this.downward(parent2.blobs[i2]);
        }
      }
      function swapToTheLeft(child) {
        var childChar = child.strings.suffix.slice(0, 1);
        if ("string" === typeof child.blobs) {
          while (SWAP_IN[childChar]) {
            mergeChars(child, "blobs", child, "suffix");
            childChar = child.strings.suffix.slice(0, 1);
          }
        } else {
          while (SWAP_IN[childChar]) {
            mergeChars(child.blobs[child.blobs.length - 1], "suffix", child, "suffix");
            childChar = child.strings.suffix.slice(0, 1);
          }
        }
      }
      function swapToTheRight(child) {
        if ("string" === typeof child.blobs) {
          var childChar = child.blobs.slice(-1);
          while (SWAP_OUT[childChar]) {
            mergeChars(child, "blobs", child, "suffix", true);
            childChar = child.blobs.slice(-1);
          }
        } else {
          var childChar = child.blobs[child.blobs.length - 1].strings.suffix.slice(-1);
          while (SWAP_OUT[childChar]) {
            mergeChars(child.blobs[child.blobs.length - 1], "suffix", child, "suffix", true);
            childChar = child.blobs[child.blobs.length - 1].strings.suffix.slice(-1);
          }
        }
      }
      function fix(parent2) {
        if ("object" !== typeof parent2 || "object" !== typeof parent2.blobs || !parent2.blobs.length) {
          return;
        }
        var lastChar;
        for (var i2 = 0, ilen = parent2.blobs.length; i2 < ilen; i2++) {
          var child = parent2.blobs[i2];
          var quoteSwap = false;
          for (var j = 0, jlen = child.decorations.length; j < jlen; j++) {
            var decoration = child.decorations[j];
            if (decoration[0] === "@quotes" && decoration[1] !== "false") {
              quoteSwap = true;
            }
          }
          if (quoteSwap) {
            if (punctInQuote) {
              swapToTheLeft(child);
            } else {
              swapToTheRight(child);
            }
          }
          lastChar = this.fix(parent2.blobs[i2]);
          if (child.blobs && "string" === typeof child.blobs) {
            lastChar = child.blobs.slice(-1);
          }
        }
        return lastChar;
      }
      this.upward = upward;
      this.leftward = leftward;
      this.downward = downward;
      this.fix = fix;
    };
    CSL.Engine.Opt = function() {
      this.parallel = {
        enable: false
      }, this.has_disambiguate = false;
      this.mode = "html";
      this.dates = {};
      this.jurisdictions_seen = {};
      this.suppressedJurisdictions = {};
      this.inheritedAttributes = {};
      this["locale-sort"] = [];
      this["locale-translit"] = [];
      this["locale-translat"] = [];
      this.citeAffixes = {
        persons: {
          "locale-orig": {
            prefix: "",
            suffix: ""
          },
          "locale-translit": {
            prefix: "",
            suffix: ""
          },
          "locale-translat": {
            prefix: "",
            suffix: ""
          }
        },
        institutions: {
          "locale-orig": {
            prefix: "",
            suffix: ""
          },
          "locale-translit": {
            prefix: "",
            suffix: ""
          },
          "locale-translat": {
            prefix: "",
            suffix: ""
          }
        },
        titles: {
          "locale-orig": {
            prefix: "",
            suffix: ""
          },
          "locale-translit": {
            prefix: "",
            suffix: ""
          },
          "locale-translat": {
            prefix: "",
            suffix: ""
          }
        },
        journals: {
          "locale-orig": {
            prefix: "",
            suffix: ""
          },
          "locale-translit": {
            prefix: "",
            suffix: ""
          },
          "locale-translat": {
            prefix: "",
            suffix: ""
          }
        },
        publishers: {
          "locale-orig": {
            prefix: "",
            suffix: ""
          },
          "locale-translit": {
            prefix: "",
            suffix: ""
          },
          "locale-translat": {
            prefix: "",
            suffix: ""
          }
        },
        places: {
          "locale-orig": {
            prefix: "",
            suffix: ""
          },
          "locale-translit": {
            prefix: "",
            suffix: ""
          },
          "locale-translat": {
            prefix: "",
            suffix: ""
          }
        }
      };
      this["default-locale"] = [];
      this.update_mode = CSL.NONE;
      this.bib_mode = CSL.NONE;
      this.sort_citations = false;
      this["et-al-min"] = 0;
      this["et-al-use-first"] = 1;
      this["et-al-use-last"] = false;
      this["et-al-subsequent-min"] = false;
      this["et-al-subsequent-use-first"] = false;
      this["demote-non-dropping-particle"] = "display-and-sort";
      this["parse-names"] = true;
      this.citation_number_slug = false;
      this.trigraph = "Aaaa00:AaAa00:AaAA00:AAAA00";
      this.nodenames = [];
      this.gender = {};
      this["cite-lang-prefs"] = {
        persons: ["orig"],
        institutions: ["orig"],
        titles: ["orig"],
        journals: ["orig"],
        publishers: ["orig"],
        places: ["orig"],
        number: ["orig"]
      };
      this.has_layout_locale = false;
      this.disable_duplicate_year_suppression = [];
      this.use_context_condition = false;
      this.jurisdiction_fallbacks = {};
      this.development_extensions = {};
      this.development_extensions.field_hack = true;
      this.development_extensions.allow_field_hack_date_override = true;
      this.development_extensions.locator_date_and_revision = true;
      this.development_extensions.locator_label_parse = true;
      this.development_extensions.raw_date_parsing = true;
      this.development_extensions.clean_up_csl_flaws = true;
      this.development_extensions.consolidate_legal_items = false;
      this.development_extensions.csl_reverse_lookup_support = false;
      this.development_extensions.wrap_url_and_doi = false;
      this.development_extensions.thin_non_breaking_space_html_hack = false;
      this.development_extensions.apply_citation_wrapper = false;
      this.development_extensions.main_title_from_short_title = false;
      this.development_extensions.uppercase_subtitles = false;
      this.development_extensions.normalize_lang_keys_to_lowercase = false;
      this.development_extensions.strict_text_case_locales = false;
      this.development_extensions.expect_and_symbol_form = false;
      this.development_extensions.require_explicit_legal_case_title_short = false;
      this.development_extensions.spoof_institutional_affiliations = false;
      this.development_extensions.force_jurisdiction = false;
      this.development_extensions.parse_names = true;
      this.development_extensions.hanging_indent_legacy_number = false;
      this.development_extensions.throw_on_empty = false;
      this.development_extensions.strict_inputs = true;
      this.development_extensions.prioritize_disambiguate_condition = false;
      this.development_extensions.force_short_title_casing_alignment = true;
      this.development_extensions.implicit_short_title = false;
      this.development_extensions.force_title_abbrev_fallback = false;
      this.development_extensions.split_container_title = false;
      this.development_extensions.legacy_institution_name_ordering = false;
      this.development_extensions.etal_min_etal_usefirst_hack = false;
    };
    CSL.Engine.Tmp = function() {
      this.names_max = new CSL.Stack();
      this.names_base = new CSL.Stack();
      this.givens_base = new CSL.Stack();
      this.value = [];
      this.namepart_decorations = {};
      this.namepart_type = false;
      this.area = "citation";
      this.root = "citation";
      this.extension = "";
      this.can_substitute = new CSL.Stack(0, CSL.LITERAL);
      this.element_rendered_ok = false;
      this.element_trace = new CSL.Stack("style");
      this.nameset_counter = 0;
      this.group_context = new CSL.Stack({
        term_intended: false,
        variable_attempt: false,
        variable_success: false,
        output_tip: void 0,
        label_form: void 0,
        parallel_first: void 0,
        parallel_last: void 0,
        parallel_delimiter_override: void 0,
        condition: false,
        force_suppress: false,
        done_vars: []
      });
      this.term_predecessor = false;
      this.in_cite_predecessor = false;
      this.jump = new CSL.Stack(0, CSL.LITERAL);
      this.decorations = new CSL.Stack();
      this.tokenstore_stack = new CSL.Stack();
      this.last_suffix_used = "";
      this.last_names_used = [];
      this.last_years_used = [];
      this.years_used = [];
      this.names_used = [];
      this.taintedItemIDs = {};
      this.taintedCitationIDs = {};
      this.initialize_with = new CSL.Stack();
      this.disambig_request = false;
      this["name-as-sort-order"] = false;
      this.suppress_decorations = false;
      this.disambig_settings = new CSL.AmbigConfig();
      this.bib_sort_keys = [];
      this.prefix = new CSL.Stack("", CSL.LITERAL);
      this.suffix = new CSL.Stack("", CSL.LITERAL);
      this.delimiter = new CSL.Stack("", CSL.LITERAL);
      this.cite_locales = [];
      this.cite_affixes = {
        citation: false,
        bibliography: false,
        citation_sort: false,
        bibliography_sort: false
      };
      this.strip_periods = 0;
      this.shadow_numbers = {};
      this.authority_stop_last = 0;
      this.loadedItemIDs = {};
      this.condition_counter = 0;
      this.condition_lang_val_arr = [];
      this.condition_lang_counter_arr = [];
    };
    CSL.Engine.Fun = function(state) {
      this.match = new CSL.Util.Match();
      this.suffixator = new CSL.Util.Suffixator(CSL.SUFFIX_CHARS);
      this.romanizer = new CSL.Util.Romanizer();
      this.ordinalizer = new CSL.Util.Ordinalizer(state);
      this.long_ordinalizer = new CSL.Util.LongOrdinalizer();
    };
    CSL.Engine.Build = function() {
      this["alternate-term"] = false;
      this.in_bibliography = false;
      this.in_style = false;
      this.skip = false;
      this.postponed_macro = false;
      this.layout_flag = false;
      this.name = false;
      this.names_variables = [[]];
      this.name_label = [{}];
      this.form = false;
      this.term = false;
      this.macro = {};
      this.macro_stack = [];
      this.text = false;
      this.lang = false;
      this.area = "citation";
      this.root = "citation";
      this.extension = "";
      this.substitute_level = new CSL.Stack(0, CSL.LITERAL);
      this.names_level = 0;
      this.render_nesting_level = 0;
      this.render_seen = false;
      this.bibliography_key_pos = 0;
    };
    CSL.Engine.Configure = function() {
      this.tests = [];
      this.fail = [];
      this.succeed = [];
    };
    CSL.Engine.Citation = function(state) {
      this.opt = {
        inheritedAttributes: {}
      };
      this.tokens = [];
      this.srt = new CSL.Registry.Comparifier(state, "citation_sort");
      this.opt.collapse = [];
      this.opt["disambiguate-add-names"] = false;
      this.opt["disambiguate-add-givenname"] = false;
      this.opt["disambiguate-add-year-suffix"] = false;
      this.opt["givenname-disambiguation-rule"] = "by-cite";
      this.opt["near-note-distance"] = 5;
      this.opt.topdecor = [];
      this.opt.layout_decorations = [];
      this.opt.layout_prefix = "";
      this.opt.layout_suffix = "";
      this.opt.layout_delimiter = "";
      this.opt.sort_locales = [];
      this.opt.max_number_of_names = 0;
      this.root = "citation";
    };
    CSL.Engine.Bibliography = function() {
      this.opt = {
        inheritedAttributes: {}
      };
      this.tokens = [];
      this.opt.collapse = [];
      this.opt.topdecor = [];
      this.opt.layout_decorations = [];
      this.opt.layout_prefix = "";
      this.opt.layout_suffix = "";
      this.opt.layout_delimiter = "";
      this.opt["line-spacing"] = 1;
      this.opt["entry-spacing"] = 1;
      this.opt.sort_locales = [];
      this.opt.max_number_of_names = 0;
      this.root = "bibliography";
    };
    CSL.Engine.BibliographySort = function() {
      this.tokens = [];
      this.opt = {};
      this.opt.sort_directions = [];
      this.opt.topdecor = [];
      this.opt.citation_number_sort_direction = CSL.ASCENDING;
      this.opt.citation_number_secondary = false;
      this.tmp = {};
      this.keys = [];
      this.root = "bibliography";
    };
    CSL.Engine.CitationSort = function() {
      this.tokens = [];
      this.opt = {};
      this.opt.sort_directions = [];
      this.keys = [];
      this.opt.topdecor = [];
      this.root = "citation";
    };
    CSL.Engine.InText = function() {
      this.opt = {
        inheritedAttributes: {}
      };
      this.tokens = [];
      this.opt.collapse = [];
      this.opt["disambiguate-add-names"] = false;
      this.opt["disambiguate-add-givenname"] = false;
      this.opt["disambiguate-add-year-suffix"] = false;
      this.opt["givenname-disambiguation-rule"] = "by-cite";
      this.opt["near-note-distance"] = 5;
      this.opt.topdecor = [];
      this.opt.layout_decorations = [];
      this.opt.layout_prefix = "";
      this.opt.layout_suffix = "";
      this.opt.layout_delimiter = "";
      this.opt.sort_locales = [];
      this.opt.max_number_of_names = 0;
      this.root = "intext";
    };
    CSL.Engine.prototype.previewCitationCluster = function(citation, citationsPre, citationsPost, newMode) {
      var oldMode = this.opt.mode;
      this.setOutputFormat(newMode);
      if (citation.citationID) {
        delete citation.citationID;
      }
      var ret = this.processCitationCluster(citation, citationsPre, citationsPost, CSL.PREVIEW);
      this.setOutputFormat(oldMode);
      return ret[1];
    };
    CSL.Engine.prototype.appendCitationCluster = function(citation) {
      var citationsPre = [];
      var len = this.registry.citationreg.citationByIndex.length;
      for (var pos = 0; pos < len; pos += 1) {
        var c = this.registry.citationreg.citationByIndex[pos];
        citationsPre.push(["" + c.citationID, c.properties.noteIndex]);
      }
      return this.processCitationCluster(citation, citationsPre, [])[1];
    };
    CSL.Engine.prototype.processCitationCluster = function(citation, citationsPre, citationsPost, flag) {
      var c, preCitation, postCitation, i2, ilen, j, jlen, k, klen, n, nlen, key2, Item, item, noteCitations, textCitations, m2, citationsInNote;
      this.debug = false;
      this.tmp.loadedItemIDs = {};
      this.tmp.citation_errors = [];
      this.registry.return_data = { "bibchange": false };
      this.setCitationId(citation);
      var oldCitationList;
      var oldItemList;
      var oldAmbigs;
      if (flag === CSL.PREVIEW) {
        if (this.debug) {
          CSL.debug("****** start state save *********");
        }
        oldCitationList = this.registry.citationreg.citationByIndex.slice();
        oldItemList = this.registry.reflist.slice();
        var newCitationList = citationsPre.concat(citationsPost);
        var newItemIds = {};
        var newItemIdsList = [];
        for (var i2 = 0, ilen = newCitationList.length; i2 < ilen; i2 += 1) {
          c = this.registry.citationreg.citationById[newCitationList[i2][0]];
          for (j = 0, jlen = c.citationItems.length; j < jlen; j += 1) {
            newItemIds[c.citationItems[j].id] = true;
            newItemIdsList.push("" + c.citationItems[j].id);
          }
        }
        for (j = 0, jlen = citation.citationItems.length; j < jlen; j += 1) {
          newItemIds[citation.citationItems[j].id] = true;
          newItemIdsList.push("" + citation.citationItems[j].id);
        }
        oldAmbigs = {};
        for (var i2 = 0, ilen = oldItemList.length; i2 < ilen; i2 += 1) {
          if (!newItemIds[oldItemList[i2].id]) {
            var oldAkey = this.registry.registry[oldItemList[i2].id].ambig;
            var ids = this.registry.ambigcites[oldAkey];
            if (ids) {
              for (j = 0, jlen = ids.length; j < jlen; j += 1) {
                oldAmbigs[ids[j]] = CSL.cloneAmbigConfig(this.registry.registry[ids[j]].disambig);
              }
            }
          }
        }
        if (this.debug) {
          CSL.debug("****** end state save *********");
        }
      }
      this.tmp.taintedCitationIDs = {};
      var sortedItems = [];
      var rerunAkeys = {};
      for (var i2 = 0, ilen = citation.citationItems.length; i2 < ilen; i2 += 1) {
        item = {};
        for (var key2 in citation.citationItems[i2]) {
          item[key2] = citation.citationItems[i2][key2];
        }
        Item = this.retrieveItem("" + item.id);
        if (Item.id) {
          this.transform.loadAbbreviation("default", "hereinafter", Item.id, Item.language);
        }
        item = CSL.parseLocator.call(this, item);
        if (this.opt.development_extensions.consolidate_legal_items) {
          this.remapSectionVariable([[Item, item]]);
        }
        if (this.opt.development_extensions.locator_label_parse) {
          if (item.locator && ["bill", "gazette", "legislation", "regulation", "treaty"].indexOf(Item.type) === -1 && (!item.label || item.label === "page")) {
            var m2 = CSL.LOCATOR_LABELS_REGEXP.exec(item.locator);
            if (m2) {
              var tryLabel = CSL.LOCATOR_LABELS_MAP[m2[2]];
              if (this.getTerm(tryLabel)) {
                item.label = tryLabel;
                item.locator = m2[3];
              }
            }
          }
        }
        var newitem = [Item, item];
        sortedItems.push(newitem);
        citation.citationItems[i2].item = Item;
      }
      citation.sortedItems = sortedItems;
      var citationByIndex = [];
      var citationById = {};
      var lastNotePos;
      for (i2 = 0, ilen = citationsPre.length; i2 < ilen; i2 += 1) {
        preCitation = citationsPre[i2];
        if (this.opt.development_extensions.strict_inputs) {
          if (citationById[preCitation[0]]) {
            CSL.error("Previously referenced citationID " + preCitation[0] + " encountered in citationsPre");
          }
          if (preCitation[1]) {
            if (lastNotePos > preCitation[1]) {
              CSL.debug("Note index sequence is not sane at citationsPre[" + i2 + "]");
            }
            lastNotePos = preCitation[1];
          }
        }
        this.registry.citationreg.citationById[preCitation[0]].properties.noteIndex = preCitation[1];
        citationByIndex.push(this.registry.citationreg.citationById[preCitation[0]]);
        citationById[preCitation[0]] = this.registry.citationreg.citationById[preCitation[0]];
      }
      if (!citation.properties) {
        citation.properties = {
          noteIndex: 0
        };
      }
      if (this.opt.development_extensions.strict_inputs) {
        if (citationById[citation.citationID]) {
          CSL.error("Citation with previously referenced citationID " + citation.citationID);
        }
        if (citation.properties.noteIndex) {
          if (lastNotePos > citation.properties.noteIndex) {
            CSL.debug("Note index sequence is not sane for citation " + citation.citationID);
          }
          lastNotePos = citation.properties.noteIndex;
        }
      }
      citationByIndex.push(citation);
      citationById[citation.citationID] = citation;
      for (i2 = 0, ilen = citationsPost.length; i2 < ilen; i2 += 1) {
        postCitation = citationsPost[i2];
        if (this.opt.development_extensions.strict_inputs) {
          if (citationById[postCitation[0]]) {
            CSL.error("Previously referenced citationID " + postCitation[0] + " encountered in citationsPost");
          }
          if (postCitation[1]) {
            if (lastNotePos > postCitation[1]) {
              CSL.debug("Note index sequence is not sane at postCitation[" + i2 + "]");
            }
            lastNotePos = postCitation[1];
          }
        }
        this.registry.citationreg.citationById[postCitation[0]].properties.noteIndex = postCitation[1];
        citationByIndex.push(this.registry.citationreg.citationById[postCitation[0]]);
        citationById[postCitation[0]] = this.registry.citationreg.citationById[postCitation[0]];
      }
      this.registry.citationreg.citationByIndex = citationByIndex;
      this.registry.citationreg.citationById = citationById;
      this.registry.citationreg.citationsByItemId = {};
      if (this.opt.update_mode === CSL.POSITION) {
        textCitations = [];
        noteCitations = [];
        citationsInNote = {};
      }
      var update_items = [];
      for (var i2 = 0, ilen = citationByIndex.length; i2 < ilen; i2 += 1) {
        citationByIndex[i2].properties.index = i2;
        for (j = 0, jlen = citationByIndex[i2].sortedItems.length; j < jlen; j += 1) {
          item = citationByIndex[i2].sortedItems[j];
          if (!this.registry.citationreg.citationsByItemId[item[1].id]) {
            this.registry.citationreg.citationsByItemId[item[1].id] = [];
            update_items.push("" + item[1].id);
          }
          if (this.registry.citationreg.citationsByItemId[item[1].id].indexOf(citationByIndex[i2]) === -1) {
            this.registry.citationreg.citationsByItemId[item[1].id].push(citationByIndex[i2]);
          }
        }
        if (this.opt.update_mode === CSL.POSITION) {
          if (citationByIndex[i2].properties.noteIndex) {
            noteCitations.push(citationByIndex[i2]);
          } else {
            citationByIndex[i2].properties.noteIndex = 0;
            textCitations.push(citationByIndex[i2]);
          }
        }
      }
      if (flag !== CSL.ASSUME_ALL_ITEMS_REGISTERED) {
        if (this.debug) {
          CSL.debug("****** start update items *********");
        }
        this.updateItems(update_items, null, null, true);
        if (this.debug) {
          CSL.debug("****** endo update items *********");
        }
      }
      if (!this.opt.citation_number_sort && sortedItems && sortedItems.length > 1 && this.citation_sort.tokens.length > 0) {
        for (var i2 = 0, ilen = sortedItems.length; i2 < ilen; i2 += 1) {
          sortedItems[i2][1].sortkeys = CSL.getSortKeys.call(this, sortedItems[i2][0], "citation_sort");
        }
        if (this.opt.grouped_sort && !citation.properties.unsorted) {
          for (var i2 = 0, ilen = sortedItems.length; i2 < ilen; i2 += 1) {
            var sortkeys = sortedItems[i2][1].sortkeys;
            this.tmp.authorstring_request = true;
            var mydisambig = this.registry.registry[sortedItems[i2][0].id].disambig;
            this.tmp.authorstring_request = true;
            CSL.getAmbiguousCite.call(this, sortedItems[i2][0], mydisambig);
            var authorstring = this.registry.authorstrings[sortedItems[i2][0].id];
            this.tmp.authorstring_request = false;
            sortedItems[i2][1].sortkeys = [authorstring].concat(sortkeys);
          }
          sortedItems.sort(this.citation.srt.compareCompositeKeys);
          var lastauthor = false;
          var thiskey = false;
          var thisauthor = false;
          for (var i2 = 0, ilen = sortedItems.length; i2 < ilen; i2 += 1) {
            if (sortedItems[i2][1].sortkeys[0] !== lastauthor) {
              thisauthor = sortedItems[i2][1].sortkeys[0];
              thiskey = sortedItems[i2][1].sortkeys[1];
            }
            sortedItems[i2][1].sortkeys[0] = "" + thiskey + i2;
            lastauthor = thisauthor;
          }
        }
        if (!citation.properties.unsorted) {
          sortedItems.sort(this.citation.srt.compareCompositeKeys);
        }
      }
      if (this.opt.parallel.enable) {
        this.parallel.StartCitation(citation.sortedItems);
      }
      var citations;
      if (this.opt.update_mode === CSL.POSITION) {
        for (var i2 = 0; i2 < 2; i2 += 1) {
          var first_ref = {};
          var last_ref = {};
          var first_container_ref = {};
          citations = [textCitations, noteCitations][i2];
          for (j = 0, jlen = citations.length; j < jlen; j += 1) {
            var onecitation = citations[j];
            if (!citations[j].properties.noteIndex) {
              citations[j].properties.noteIndex = 0;
            }
            citations[j].properties.noteIndex = parseInt(citations[j].properties.noteIndex, 10);
            if (j > 0 && onecitation.properties.noteIndex && citations[j - 1].properties.noteIndex > onecitation.properties.noteIndex) {
              citationsInNote = {};
              first_ref = {};
              last_ref = {};
              first_container_ref = {};
            }
            for (k = 0, klen = onecitation.sortedItems.length; k < klen; k += 1) {
              if (onecitation.sortedItems[k][1].parallel && onecitation.sortedItems[k][1].parallel !== "first") {
                continue;
              }
              if (!citationsInNote[onecitation.properties.noteIndex]) {
                citationsInNote[onecitation.properties.noteIndex] = 1;
              } else {
                citationsInNote[onecitation.properties.noteIndex] += 1;
              }
            }
            for (k = 0, klen = citations[j].sortedItems.length; k < klen; k += 1) {
              item = citations[j].sortedItems[k];
              var item_id = item[0].id;
              var first_id = item[0].legislation_id ? item[0].legislation_id : item[0].id;
              var last_id = item[0].legislation_id ? item[0].legislation_id : item[0].container_id ? item[0].container_id : item[0].id;
              var myxloc = item[1]["locator-extra"];
              var mylocator = item[1].locator;
              var mylabel = item[1].label;
              var incitationid;
              var incitationxloc;
              if (k > 0) {
                if (onecitation.sortedItems[k - 1][0].legislation_id) {
                  incitationid = onecitation.sortedItems[k - 1][0].legislation_id;
                } else {
                  incitationid = onecitation.sortedItems[k - 1][1].id;
                  incitationxloc = onecitation.sortedItems[k - 1][1]["locator-extra"];
                  for (var l = k - 2; l > -1; l--) {
                    if (onecitation.sortedItems[l][1].parallel === "first") {
                      incitationid = onecitation.sortedItems[l][1].id;
                      incitationxloc = onecitation.sortedItems[l][1]["locator-extra"];
                    }
                  }
                }
              }
              if (flag === CSL.PREVIEW) {
                if (onecitation.citationID != citation.citationID) {
                  if ("undefined" === typeof first_ref[item[1].id]) {
                    first_ref[first_id] = onecitation.properties.noteIndex;
                    last_ref[last_id] = onecitation.properties.noteIndex;
                  } else {
                    last_ref[last_id] = onecitation.properties.noteIndex;
                  }
                  continue;
                }
              }
              var oldvalue = {};
              oldvalue.position = item[1].position;
              oldvalue["first-reference-note-number"] = item[1]["first-reference-note-number"];
              oldvalue["first-container-reference-note-number"] = item[1]["first-container-reference-note-number"];
              oldvalue["near-note"] = item[1]["near-note"];
              item[1]["first-reference-note-number"] = 0;
              item[1]["first-container-reference-note-number"] = 0;
              item[1]["near-note"] = false;
              if (this.registry.citationreg.citationsByItemId[item_id]) {
                if (this.opt.xclass === "note" && this.opt.has_disambiguate) {
                  var oldCount = this.registry.registry[item[0].id]["citation-count"];
                  var newCount = this.registry.citationreg.citationsByItemId[item_id].length;
                  this.registry.registry[item[0].id]["citation-count"] = this.registry.citationreg.citationsByItemId[item_id].length;
                  if ("number" === typeof oldCount) {
                    var oldCountCheck = oldCount < 2;
                    var newCountCheck = newCount < 2;
                    if (oldCountCheck !== newCountCheck) {
                      for (var l = 0, llen = this.registry.citationreg.citationsByItemId[item_id].length; l < llen; l++) {
                        rerunAkeys[this.registry.registry[item[0].id].ambig] = true;
                        this.tmp.taintedCitationIDs[this.registry.citationreg.citationsByItemId[item_id][l].citationID] = true;
                      }
                    }
                  } else {
                    for (var l = 0, llen = this.registry.citationreg.citationsByItemId[item_id].length; l < llen; l++) {
                      rerunAkeys[this.registry.registry[item[0].id].ambig] = true;
                      this.tmp.taintedCitationIDs[this.registry.citationreg.citationsByItemId[item_id][l].citationID] = true;
                    }
                  }
                }
              }
              var oldlastid;
              var oldlastxloc;
              if ("undefined" === typeof last_ref[last_id] && onecitation.properties.mode !== "author-only") {
                first_ref[first_id] = onecitation.properties.noteIndex;
                last_ref[last_id] = onecitation.properties.noteIndex;
                first_container_ref[last_id] = onecitation.properties.noteIndex;
                item[1].position = CSL.POSITION_FIRST;
              } else {
                var ibidme = false;
                var suprame = false;
                var prevCitation = null;
                if (j > 0) {
                  var prevCitation = citations[j - 1];
                }
                var thisCitation = citations[j];
                if (j > 0) {
                  var old_last_id_offset = 1;
                  if (prevCitation.properties.mode === "author-only" && j > 1) {
                    old_last_id_offset = 2;
                  }
                  var adjusted_offset = j - old_last_id_offset;
                  if (citations[adjusted_offset].sortedItems.length) {
                    oldlastid = citations[adjusted_offset].sortedItems.slice(-1)[0][1].id;
                    oldlastxloc = citations[j - old_last_id_offset].sortedItems.slice(-1)[0][1]["locator-extra"];
                  }
                  if (prevCitation.sortedItems.length) {
                    if (prevCitation.sortedItems[0].slice(-1)[0].legislation_id) {
                      oldlastid = prevCitation.sortedItems[0].slice(-1)[0].legislation_id;
                    }
                  }
                }
                if (j > 0 && k === 0 && prevCitation.properties.noteIndex !== thisCitation.properties.noteIndex) {
                  var useme = false;
                  var oldid = prevCitation.sortedItems[0][0].id;
                  if (prevCitation.sortedItems[0][0].legislation_id) {
                    oldid = prevCitation.sortedItems[0][0].legislation_id;
                  }
                  if (oldid == first_id && prevCitation.properties.noteIndex >= thisCitation.properties.noteIndex - 1) {
                    var prevxloc = prevCitation.sortedItems[0][1]["locator-extra"];
                    var thisxloc = thisCitation.sortedItems[0][1]["locator-extra"];
                    if ((citationsInNote[prevCitation.properties.noteIndex] === 1 || prevCitation.properties.noteIndex === 0) && prevxloc === thisxloc) {
                      useme = true;
                    }
                  }
                  if (useme) {
                    ibidme = true;
                  } else {
                    suprame = true;
                  }
                } else if (k > 0 && incitationid == first_id && incitationxloc == myxloc) {
                  ibidme = true;
                } else if (k === 0 && j > 0 && prevCitation.properties.noteIndex == thisCitation.properties.noteIndex && prevCitation.sortedItems.length && oldlastid == first_id && oldlastxloc == myxloc) {
                  ibidme = true;
                } else {
                  suprame = true;
                }
                var prev, prev_locator, prev_label, curr_locator, curr_label;
                if (ibidme) {
                  if (k > 0) {
                    prev = onecitation.sortedItems[k - 1][1];
                  } else {
                    prev = citations[j - 1].sortedItems[0][1];
                  }
                  if (prev.locator) {
                    if (prev.label) {
                      prev_label = prev.label;
                    } else {
                      prev_label = "";
                    }
                    prev_locator = "" + prev.locator + prev_label;
                  } else {
                    prev_locator = prev.locator;
                  }
                  if (mylocator) {
                    if (mylabel) {
                      curr_label = mylabel;
                    } else {
                      curr_label = "";
                    }
                    curr_locator = "" + mylocator + curr_label;
                  } else {
                    curr_locator = mylocator;
                  }
                }
                if (ibidme && prev_locator && !curr_locator) {
                  ibidme = false;
                  suprame = true;
                }
                if (ibidme) {
                  if (!prev_locator && curr_locator) {
                    item[1].position = CSL.POSITION_IBID_WITH_LOCATOR;
                  } else if (!prev_locator && !curr_locator) {
                    item[1].position = CSL.POSITION_IBID;
                  } else if (prev_locator && curr_locator === prev_locator) {
                    item[1].position = CSL.POSITION_IBID;
                  } else if (prev_locator && curr_locator && curr_locator !== prev_locator) {
                    item[1].position = CSL.POSITION_IBID_WITH_LOCATOR;
                  } else {
                    ibidme = false;
                    suprame = true;
                  }
                }
                if (suprame) {
                  item[1].position = CSL.POSITION_CONTAINER_SUBSEQUENT;
                  if ("undefined" === typeof first_ref[first_id]) {
                    first_ref[first_id] = onecitation.properties.noteIndex;
                  } else {
                    item[1].position = CSL.POSITION_SUBSEQUENT;
                  }
                }
                if (suprame || ibidme) {
                  if (onecitation.properties.mode === "author-only") {
                    item[1].position = CSL.POSITION_FIRST;
                  }
                  if (first_container_ref[last_id] != onecitation.properties.noteIndex) {
                    item[1]["first-container-reference-note-number"] = first_container_ref[last_id];
                    if (this.registry.registry[item[0].id]) {
                      this.registry.registry[item[0].id]["first-container-reference-note-number"] = first_container_ref[last_id];
                    }
                  }
                  if (first_ref[first_id] != onecitation.properties.noteIndex) {
                    item[1]["first-reference-note-number"] = first_ref[first_id];
                    if (this.registry.registry[item[0].id]) {
                      this.registry.registry[item[0].id]["first-reference-note-number"] = first_ref[first_id];
                    }
                  }
                }
              }
              if (onecitation.properties.noteIndex) {
                var note_distance = parseInt(onecitation.properties.noteIndex, 10) - parseInt(last_ref[last_id], 10);
                if (item[1].position !== CSL.POSITION_FIRST && note_distance <= this.citation.opt["near-note-distance"]) {
                  item[1]["near-note"] = true;
                }
                last_ref[last_id] = onecitation.properties.noteIndex;
              } else if (item[1].position !== CSL.POSITION_FIRST) {
                item[1]["near-note"] = true;
              }
              if (onecitation.citationID != citation.citationID) {
                for (n = 0, nlen = CSL.POSITION_TEST_VARS.length; n < nlen; n += 1) {
                  var param = CSL.POSITION_TEST_VARS[n];
                  if (item[1][param] !== oldvalue[param]) {
                    if (this.registry.registry[item[0].id]) {
                      if (param === "first-reference-note-number") {
                        rerunAkeys[this.registry.registry[item[0].id].ambig] = true;
                        this.tmp.taintedItemIDs[item[0].id] = true;
                      }
                    }
                    this.tmp.taintedCitationIDs[onecitation.citationID] = true;
                  }
                }
              }
              if (this.sys.variableWrapper) {
                item[1].index = onecitation.properties.index;
                item[1].noteIndex = onecitation.properties.noteIndex;
              }
            }
          }
        }
      }
      if (this.opt.citation_number_sort && sortedItems && sortedItems.length > 1 && this.citation_sort.tokens.length > 0) {
        if (!citation.properties.unsorted) {
          for (var i2 = 0, ilen = sortedItems.length; i2 < ilen; i2 += 1) {
            sortedItems[i2][1].sortkeys = CSL.getSortKeys.call(this, sortedItems[i2][0], "citation_sort");
          }
          sortedItems.sort(this.citation.srt.compareCompositeKeys);
        }
      }
      for (var key2 in this.tmp.taintedItemIDs) {
        if (this.tmp.taintedItemIDs.hasOwnProperty(key2)) {
          citations = this.registry.citationreg.citationsByItemId[key2];
          if (citations) {
            for (var i2 = 0, ilen = citations.length; i2 < ilen; i2 += 1) {
              this.tmp.taintedCitationIDs[citations[i2].citationID] = true;
            }
          }
        }
      }
      var ret = [];
      if (flag === CSL.PREVIEW) {
        if (this.debug) {
          CSL.debug("****** start run processor *********");
        }
        try {
          ret = this.process_CitationCluster.call(this, citation.sortedItems, citation);
        } catch (e2) {
          CSL.error("Error running CSL processor for preview: " + e2);
        }
        if (this.debug) {
          CSL.debug("****** end run processor *********");
          CSL.debug("****** start state restore *********");
        }
        this.registry.citationreg.citationByIndex = oldCitationList;
        this.registry.citationreg.citationById = {};
        for (var i2 = 0, ilen = oldCitationList.length; i2 < ilen; i2 += 1) {
          this.registry.citationreg.citationById[oldCitationList[i2].citationID] = oldCitationList[i2];
        }
        if (this.debug) {
          CSL.debug("****** start final update *********");
        }
        var oldItemIds = [];
        for (var i2 = 0, ilen = oldItemList.length; i2 < ilen; i2 += 1) {
          oldItemIds.push("" + oldItemList[i2].id);
        }
        this.updateItems(oldItemIds, null, null, true);
        if (this.debug) {
          CSL.debug("****** end final update *********");
        }
        for (var key2 in oldAmbigs) {
          if (oldAmbigs.hasOwnProperty(key2)) {
            this.registry.registry[key2].disambig = oldAmbigs[key2];
          }
        }
        if (this.debug) {
          CSL.debug("****** end state restore *********");
        }
      } else {
        for (var rerunAkey in rerunAkeys) {
          this.disambiguate.run(rerunAkey, citation);
        }
        var obj;
        for (var key2 in this.tmp.taintedCitationIDs) {
          if (key2 == citation.citationID) {
            continue;
          }
          var mycitation = this.registry.citationreg.citationById[key2];
          if (!mycitation.properties.unsorted) {
            for (var i2 = 0, ilen = mycitation.sortedItems.length; i2 < ilen; i2 += 1) {
              mycitation.sortedItems[i2][1].sortkeys = CSL.getSortKeys.call(this, mycitation.sortedItems[i2][0], "citation_sort");
            }
            mycitation.sortedItems.sort(this.citation.srt.compareCompositeKeys);
          }
          this.tmp.citation_pos = mycitation.properties.index;
          this.tmp.citation_note_index = mycitation.properties.noteIndex;
          this.tmp.citation_id = "" + mycitation.citationID;
          obj = [];
          obj.push(mycitation.properties.index);
          obj.push(this.process_CitationCluster.call(this, mycitation.sortedItems, mycitation));
          obj.push(mycitation.citationID);
          ret.push(obj);
        }
        this.tmp.taintedItemIDs = {};
        this.tmp.taintedCitationIDs = {};
        this.tmp.citation_pos = citation.properties.index;
        this.tmp.citation_note_index = citation.properties.noteIndex;
        this.tmp.citation_id = "" + citation.citationID;
        obj = [];
        obj.push(citationsPre.length);
        obj.push(this.process_CitationCluster.call(this, sortedItems, citation));
        obj.push(citation.citationID);
        ret.push(obj);
        ret.sort(function(a2, b) {
          if (a2[0] > b[0]) {
            return 1;
          } else if (a2[0] < b[0]) {
            return -1;
          } else {
            return 0;
          }
        });
      }
      this.registry.return_data.citation_errors = this.tmp.citation_errors.slice();
      return [this.registry.return_data, ret];
    };
    CSL.Engine.prototype.process_CitationCluster = function(sortedItems, citation) {
      var str2 = "";
      if (citation && citation.properties && citation.properties.mode === "composite") {
        citation.properties.mode = "author-only";
        var firstChunk = CSL.getCitationCluster.call(this, sortedItems, citation);
        citation.properties.mode = "suppress-author";
        var secondChunk = "";
        if (citation.properties.infix) {
          this.output.append(citation.properties.infix);
          secondChunk = this.output.string(this, this.output.queue);
          if ("object" === typeof secondChunk) {
            secondChunk = secondChunk.join("");
          }
        }
        var thirdChunk = CSL.getCitationCluster.call(this, sortedItems, citation);
        citation.properties.mode = "composite";
        if (firstChunk && secondChunk && CSL.SWAPPING_PUNCTUATION.concat(["\u2019", "'"]).indexOf(secondChunk[0]) > -1) {
          firstChunk += secondChunk;
          secondChunk = false;
        }
        str2 = [firstChunk, secondChunk, thirdChunk].filter(function(obj) {
          return obj;
        }).join(" ");
      } else {
        str2 = CSL.getCitationCluster.call(this, sortedItems, citation);
      }
      return str2;
    };
    CSL.Engine.prototype.makeCitationCluster = function(rawList) {
      var inputList, newitem, str2, pos, len, item, Item;
      inputList = [];
      len = rawList.length;
      for (pos = 0; pos < len; pos += 1) {
        item = {};
        for (var key2 in rawList[pos]) {
          item[key2] = rawList[pos][key2];
        }
        Item = this.retrieveItem("" + item.id);
        if (this.opt.development_extensions.locator_label_parse) {
          if (item.locator && ["bill", "gazette", "legislation", "regulation", "treaty"].indexOf(Item.type) === -1 && (!item.label || item.label === "page")) {
            var m2 = CSL.LOCATOR_LABELS_REGEXP.exec(item.locator);
            if (m2) {
              var tryLabel = CSL.LOCATOR_LABELS_MAP[m2[2]];
              if (this.getTerm(tryLabel)) {
                item.label = tryLabel;
                item.locator = m2[3];
              }
            }
          }
        }
        if (item.locator) {
          item.locator = ("" + item.locator).replace(/\s+$/, "");
        }
        newitem = [Item, item];
        inputList.push(newitem);
      }
      if (this.opt.development_extensions.consolidate_legal_items) {
        this.remapSectionVariable(inputList);
      }
      if (inputList && inputList.length > 1 && this.citation_sort.tokens.length > 0) {
        len = inputList.length;
        for (pos = 0; pos < len; pos += 1) {
          inputList[pos][1].sortkeys = CSL.getSortKeys.call(this, inputList[pos][0], "citation_sort");
        }
        inputList.sort(this.citation.srt.compareCompositeKeys);
      }
      this.tmp.citation_errors = [];
      var str2 = CSL.getCitationCluster.call(this, inputList);
      return str2;
    };
    CSL.getAmbiguousCite = function(Item, disambig, visualForm, item) {
      var ret;
      var flags = this.tmp.group_context.tip;
      var oldTermSiblingLayer = {
        term_intended: flags.term_intended,
        variable_attempt: flags.variable_attempt,
        variable_success: flags.variable_success,
        output_tip: flags.output_tip,
        label_form: flags.label_form,
        non_parallel: flags.non_parallel,
        parallel_last: flags.parallel_last,
        parallel_first: flags.parallel_first,
        parallel_last_override: flags.parallel_last_override,
        parallel_delimiter_override: flags.parallel_delimiter_override,
        parallel_delimiter_override_on_suppress: flags.parallel_delimiter_override_on_suppress,
        condition: flags.condition,
        force_suppress: flags.force_suppress,
        done_vars: flags.done_vars.slice()
      };
      if (disambig) {
        this.tmp.disambig_request = disambig;
      } else {
        this.tmp.disambig_request = false;
      }
      var itemSupp = {
        position: CSL.POSITION_SUBSEQUENT,
        "near-note": true
      };
      if (item) {
        itemSupp.locator = item.locator;
        itemSupp.label = item.label;
      }
      if (this.registry.registry[Item.id] && this.registry.citationreg.citationsByItemId && this.registry.citationreg.citationsByItemId[Item.id] && this.registry.citationreg.citationsByItemId[Item.id].length && visualForm) {
        if (this.citation.opt["givenname-disambiguation-rule"] === "by-cite") {
          itemSupp["first-reference-note-number"] = this.registry.registry[Item.id]["first-reference-note-number"];
        }
      }
      this.tmp.area = "citation";
      this.tmp.root = "citation";
      var origSuppressDecorations = this.tmp.suppress_decorations;
      this.tmp.suppress_decorations = true;
      this.tmp.just_looking = true;
      CSL.getCite.call(this, Item, itemSupp, null, false);
      for (var i2 = 0, ilen = this.output.queue.length; i2 < ilen; i2 += 1) {
        CSL.Output.Queue.purgeEmptyBlobs(this.output.queue[i2]);
      }
      if (this.opt.development_extensions.clean_up_csl_flaws) {
        for (var j = 0, jlen = this.output.queue.length; j < jlen; j += 1) {
          this.output.adjust.upward(this.output.queue[j]);
          this.output.adjust.leftward(this.output.queue[j]);
          this.output.adjust.downward(this.output.queue[j]);
          this.output.adjust.fix(this.output.queue[j]);
        }
      }
      var ret = this.output.string(this, this.output.queue);
      this.tmp.just_looking = false;
      this.tmp.suppress_decorations = origSuppressDecorations;
      this.tmp.group_context.replace(oldTermSiblingLayer);
      return ret;
    };
    CSL.getSpliceDelimiter = function(last_locator, last_collapsed, pos) {
      if (void 0 !== this.citation.opt["after-collapse-delimiter"]) {
        if (last_locator) {
          this.tmp.splice_delimiter = this.citation.opt["after-collapse-delimiter"];
        } else if (last_collapsed && !this.tmp.have_collapsed) {
          this.tmp.splice_delimiter = this.citation.opt["after-collapse-delimiter"];
        } else if (!last_collapsed && !this.tmp.have_collapsed && this.citation.opt.collapse !== "year-suffix") {
          this.tmp.splice_delimiter = this.citation.opt["after-collapse-delimiter"];
        } else {
          this.tmp.splice_delimiter = this.citation.opt.layout_delimiter;
        }
      } else if (this.tmp.use_cite_group_delimiter) {
        this.tmp.splice_delimiter = this.citation.opt.cite_group_delimiter;
      } else {
        if (this.tmp.have_collapsed && this.opt.xclass === "in-text" && this.opt.update_mode !== CSL.NUMERIC) {
          this.tmp.splice_delimiter = ", ";
        } else if (this.tmp.cite_locales[pos - 1]) {
          var alt_affixes = this.tmp.cite_affixes[this.tmp.area][this.tmp.cite_locales[pos - 1]];
          if (alt_affixes && alt_affixes.delimiter) {
            this.tmp.splice_delimiter = alt_affixes.delimiter;
          }
        } else if (!this.tmp.splice_delimiter) {
          this.tmp.splice_delimiter = "";
        }
      }
      return this.tmp.splice_delimiter;
    };
    CSL.getCitationCluster = function(inputList, citation) {
      var result, objects, myparams, len, pos, item, last_collapsed, params, empties, composite, compie, myblobs, Item, llen, ppos, obj, preceding_item, txt_esc, error_object, citationID, authorOnly, suppressAuthor;
      var citation_prefix = "";
      this.output.checkNestedBrace = new CSL.checkNestedBrace(this);
      if (citation) {
        citationID = citation.citationID;
        authorOnly = citation.properties.mode === "author-only" ? !!citation.properties.mode : false;
        if (this.opt.xclass !== "note") {
          suppressAuthor = citation.properties.mode === "suppress-author" ? !!citation.properties.mode : false;
        }
        if (citation.properties.prefix) {
          citation_prefix = CSL.checkPrefixSpaceAppend(this, citation.properties.prefix);
        }
      }
      inputList = inputList ? inputList : [];
      this.tmp.last_primary_names_string = false;
      txt_esc = CSL.getSafeEscape(this);
      this.tmp.area = "citation";
      this.tmp.root = "citation";
      result = "";
      objects = [];
      this.tmp.last_suffix_used = "";
      this.tmp.last_names_used = [];
      this.tmp.last_years_used = [];
      this.tmp.backref_index = [];
      this.tmp.cite_locales = [];
      if (!this.tmp.just_looking) {
        this.tmp.abbrev_trimmer = {
          QUASHES: {}
        };
      }
      var use_layout_prefix = this.output.checkNestedBrace.update(this.citation.opt.layout_prefix + citation_prefix);
      var suppressTrailingPunctuation = false;
      if (this.citation.opt.suppressTrailingPunctuation) {
        suppressTrailingPunctuation = true;
      }
      if (citationID) {
        if (this.registry.citationreg.citationById[citationID].properties["suppress-trailing-punctuation"]) {
          suppressTrailingPunctuation = true;
        }
      }
      if (this.opt.xclass === "note") {
        var parasets = [];
        var lastTitle = false;
        var lastPosition = false;
        var lastID = false;
        var lst = [];
        for (var i2 = 0, ilen = inputList.length; i2 < ilen; i2 += 1) {
          var type2 = inputList[i2][0].type;
          var title = inputList[i2][0].title;
          var position6 = inputList[i2][1].position;
          var id = inputList[i2][0].id;
          if (title && type2 === "legal_case" && id !== lastID && position6) {
            if (title !== lastTitle || parasets.length === 0) {
              lst = [];
              parasets.push(lst);
            }
            lst.push(inputList[i2][1]);
          }
          lastTitle = title;
          lastPosition = position6;
          lastID = id;
        }
        for (i2 = 0, ilen = parasets.length; i2 < ilen; i2 += 1) {
          lst = parasets[i2];
          if (lst.length < 2) {
            continue;
          }
          var locatorInLastPosition = lst.slice(-1)[0].locator;
          if (locatorInLastPosition) {
            for (var j = 0, jlen = lst.length - 1; j < jlen; j += 1) {
              if (lst[j].locator) {
                locatorInLastPosition = false;
              }
            }
          }
          if (locatorInLastPosition) {
            lst[0].locator = locatorInLastPosition;
            delete lst.slice(-1)[0].locator;
            lst[0].label = lst.slice(-1)[0].label;
            if (lst.slice(-1)[0].label) {
              delete lst.slice(-1)[0].label;
            }
          }
        }
      }
      myparams = [];
      len = inputList.length;
      if (inputList[0] && inputList[0][1]) {
        if (authorOnly) {
          delete inputList[0][1]["suppress-author"];
          inputList[0][1]["author-only"] = true;
        } else if (suppressAuthor) {
          delete inputList[0][1]["author-only"];
          inputList[0][1]["suppress-author"] = true;
        }
      }
      if (this.opt.parallel.enable) {
        this.parallel.StartCitation(inputList);
      }
      for (pos = 0; pos < len; pos += 1) {
        this.tmp.cite_index = pos;
        Item = inputList[pos][0];
        item = inputList[pos][1];
        item = CSL.parseLocator.call(this, item);
        last_collapsed = this.tmp.have_collapsed;
        var last_locator = false;
        if (pos > 0 && inputList[pos - 1][1]) {
          last_locator = !!inputList[pos - 1][1].locator;
        }
        params = {};
        this.tmp.shadow_numbers = {};
        if (!this.tmp.just_looking && this.opt.hasPlaceholderTerm) {
          var output2 = this.output;
          this.output = new CSL.Output.Queue(this);
          this.output.adjust = new CSL.Output.Queue.adjust();
          CSL.getAmbiguousCite.call(this, Item, null, false, item);
          this.output = output2;
        }
        this.tmp.in_cite_predecessor = false;
        if (pos > 0) {
          CSL.getCite.call(this, Item, item, "" + inputList[pos - 1][0].id, true);
        } else {
          this.tmp.term_predecessor = false;
          CSL.getCite.call(this, Item, item, null, true);
        }
        if (!this.tmp.cite_renders_content) {
          error_object = {
            citationID: "" + this.tmp.citation_id,
            index: this.tmp.citation_pos,
            noteIndex: this.tmp.citation_note_index,
            itemID: "" + Item.id,
            citationItems_pos: pos,
            error_code: CSL.ERROR_NO_RENDERED_FORM
          };
          this.tmp.citation_errors.push(error_object);
        }
        params.splice_delimiter = CSL.getSpliceDelimiter.call(this, last_locator, last_collapsed, pos);
        if (item && item["author-only"]) {
          this.tmp.suppress_decorations = true;
        }
        if (pos > 0) {
          preceding_item = inputList[pos - 1][1];
          var precedingEndsInPeriodOrComma = preceding_item.suffix && [";", ".", ","].indexOf(preceding_item.suffix.slice(-1)) > -1;
          var currentStartsWithPeriodOrComma = !preceding_item.suffix && item.prefix && [";", ".", ","].indexOf(item.prefix.slice(0, 1)) > -1;
          if (precedingEndsInPeriodOrComma || currentStartsWithPeriodOrComma) {
            var spaceidx = params.splice_delimiter.indexOf(" ");
            if (spaceidx > -1 && !currentStartsWithPeriodOrComma) {
              params.splice_delimiter = params.splice_delimiter.slice(spaceidx);
            } else {
              params.splice_delimiter = "";
            }
          }
        }
        params.suppress_decorations = this.tmp.suppress_decorations;
        params.have_collapsed = this.tmp.have_collapsed;
        myparams.push(params);
        if (item["author-only"]) {
          break;
        }
      }
      empties = 0;
      myblobs = this.output.queue.slice();
      var citation_suffix = "";
      if (citation) {
        citation_suffix = CSL.checkSuffixSpacePrepend(this, citation.properties.suffix);
      }
      var suffix = this.citation.opt.layout_suffix;
      var last_locale = this.tmp.cite_locales[this.tmp.cite_locales.length - 1];
      if (last_locale && this.tmp.cite_affixes[this.tmp.area][last_locale] && this.tmp.cite_affixes[this.tmp.area][last_locale].suffix) {
        suffix = this.tmp.cite_affixes[this.tmp.area][last_locale].suffix;
      }
      if (CSL.TERMINAL_PUNCTUATION.slice(0, -1).indexOf(suffix.slice(0, 1)) > -1) {
        suffix = suffix.slice(0, 1);
      }
      suffix = this.output.checkNestedBrace.update(citation_suffix + suffix);
      for (var i2 = 0, ilen = this.output.queue.length; i2 < ilen; i2 += 1) {
        CSL.Output.Queue.purgeEmptyBlobs(this.output.queue[i2]);
      }
      if (!this.tmp.suppress_decorations && this.output.queue.length) {
        if (!(this.opt.development_extensions.apply_citation_wrapper && this.sys.wrapCitationEntry && !this.tmp.just_looking && this.tmp.area === "citation")) {
          if (!suppressTrailingPunctuation) {
            this.output.queue[this.output.queue.length - 1].strings.suffix = suffix;
          }
          this.output.queue[0].strings.prefix = use_layout_prefix;
        }
      }
      if (this.opt.development_extensions.clean_up_csl_flaws) {
        for (var j = 0, jlen = this.output.queue.length; j < jlen; j += 1) {
          this.output.adjust.upward(this.output.queue[j]);
          this.output.adjust.leftward(this.output.queue[j]);
          this.output.adjust.downward(this.output.queue[j]);
          this.tmp.last_chr = this.output.adjust.fix(this.output.queue[j]);
        }
      }
      for (pos = 0, len = myblobs.length; pos < len; pos += 1) {
        var buffer2 = [];
        this.output.queue = [myblobs[pos]];
        this.tmp.suppress_decorations = myparams[pos].suppress_decorations;
        this.tmp.splice_delimiter = myparams[pos].splice_delimiter;
        if (myblobs[pos].parallel_delimiter) {
          this.tmp.splice_delimiter = myblobs[pos].parallel_delimiter;
        }
        this.tmp.have_collapsed = myparams[pos].have_collapsed;
        composite = this.output.string(this, this.output.queue);
        this.tmp.suppress_decorations = false;
        if ("string" === typeof composite) {
          this.tmp.suppress_decorations = false;
          if (!composite) {
            if (this.opt.development_extensions.throw_on_empty) {
              CSL.error("Citation would render no content");
            } else {
              composite = "[NO_PRINTED_FORM]";
            }
          }
          return composite;
        }
        if ("object" === typeof composite && composite.length === 0 && !item["suppress-author"]) {
          if (pos === 0) {
            var errStr = "[CSL STYLE ERROR: reference with no printed form.]";
            var preStr = pos === 0 ? txt_esc(this.citation.opt.layout_prefix) : "";
            var sufStr = pos === myblobs.length - 1 ? txt_esc(this.citation.opt.layout_suffix) : "";
            composite.push(preStr + errStr + sufStr);
          } else if (pos === myblobs.length - 1) {
            var tmpobj = objects[objects.length - 1];
            if (typeof tmpobj === "string") {
              objects[objects.length - 1] += txt_esc(this.citation.opt.layout_suffix);
            } else if (typeof tmpobj === "object") {
              tmpobj.strings.suffix += txt_esc(this.citation.opt.layout_suffix);
            }
          }
        }
        if (buffer2.length && "string" === typeof composite[0]) {
          composite.reverse();
          var tmpstr = composite.pop();
          if (tmpstr && tmpstr.slice(0, 1) === ",") {
            buffer2.push(tmpstr);
          } else if ("string" == typeof buffer2.slice(-1)[0] && buffer2.slice(-1)[0].slice(-1) === ",") {
            buffer2.push(" " + tmpstr);
          } else if (tmpstr) {
            buffer2.push(txt_esc(this.tmp.splice_delimiter) + tmpstr);
          }
        } else {
          composite.reverse();
          compie = composite.pop();
          if ("undefined" !== typeof compie) {
            if (buffer2.length && "string" === typeof buffer2[buffer2.length - 1]) {
              buffer2[buffer2.length - 1] += compie.successor_prefix;
            }
            buffer2.push(compie);
          }
        }
        llen = composite.length;
        for (ppos = 0; ppos < llen; ppos += 1) {
          obj = composite[ppos];
          if ("string" === typeof obj) {
            buffer2.push(txt_esc(this.tmp.splice_delimiter) + obj);
            continue;
          }
          compie = composite.pop();
          if ("undefined" !== typeof compie) {
            buffer2.push(compie);
          }
        }
        if (buffer2.length === 0 && !inputList[pos][1]["suppress-author"]) {
          empties += 1;
        }
        if (buffer2.length > 1 && typeof buffer2[0] !== "string") {
          buffer2 = [this.output.renderBlobs(buffer2)];
        }
        if (buffer2.length) {
          if ("string" === typeof buffer2[0]) {
            if (pos > 0) {
              buffer2[0] = txt_esc(this.tmp.splice_delimiter) + buffer2[0];
            }
          } else {
            if (pos > 0) {
              buffer2[0].splice_prefix = this.tmp.splice_delimiter;
            } else {
              buffer2[0].splice_prefix = "";
            }
          }
        }
        objects = objects.concat(buffer2);
      }
      result += this.output.renderBlobs(objects);
      if (result) {
        if (!this.tmp.suppress_decorations) {
          len = this.citation.opt.layout_decorations.length;
          for (pos = 0; pos < len; pos += 1) {
            params = this.citation.opt.layout_decorations[pos];
            if (params[1] === "normal") {
              continue;
            }
            if (!item || !item["author-only"]) {
              result = this.fun.decorate[params[0]][params[1]](this, result);
            }
          }
        }
      }
      this.tmp.suppress_decorations = false;
      if (!result) {
        if (this.opt.development_extensions.throw_on_empty) {
          CSL.error("Citation would render no content");
        } else {
          result = "[NO_PRINTED_FORM]";
        }
      }
      return result;
    };
    CSL.getCite = function(Item, item, prevItemID, blockShadowNumberReset) {
      var next, error_object;
      var areaOrig = this.tmp.area;
      if (item && item["author-only"] && this.intext && this.intext.tokens.length > 0) {
        this.tmp.area = "intext";
      }
      this.tmp.cite_renders_content = false;
      this.tmp.probably_rendered_something = false;
      this.tmp.prevItemID = prevItemID;
      CSL.citeStart.call(this, Item, item, blockShadowNumberReset);
      next = 0;
      this.tmp.name_node = {};
      this.nameOutput = new CSL.NameOutput(this, Item, item);
      while (next < this[this.tmp.area].tokens.length) {
        next = CSL.tokenExec.call(this, this[this.tmp.area].tokens[next], Item, item);
      }
      CSL.citeEnd.call(this, Item, item);
      if (!this.tmp.cite_renders_content && !this.tmp.just_looking) {
        if (this.tmp.area === "bibliography") {
          error_object = {
            index: this.tmp.bibliography_pos,
            itemID: "" + Item.id,
            error_code: CSL.ERROR_NO_RENDERED_FORM
          };
          this.tmp.bibliography_errors.push(error_object);
        }
      }
      this.tmp.area = areaOrig;
      return "" + Item.id;
    };
    CSL.citeStart = function(Item, item, blockShadowNumberReset) {
      this.tmp.lang_array = [];
      if (Item.language) {
        var m2 = Item.language.match(/^([a-zA-Z]+).*/);
        if (m2) {
          this.tmp.lang_array.push(m2[1].toLowerCase());
        }
      }
      this.tmp.lang_array.push(this.opt.lang);
      if (!blockShadowNumberReset) {
        this.tmp.shadow_numbers = {};
      }
      this.tmp.disambiguate_count = 0;
      this.tmp.disambiguate_maxMax = 0;
      this.tmp.same_author_as_previous_cite = false;
      if (!this.tmp.suppress_decorations) {
        this.tmp.subsequent_author_substitute_ok = true;
      } else {
        this.tmp.subsequent_author_substitute_ok = false;
      }
      this.tmp.lastchr = "";
      if (this.tmp.area === "citation" && this.citation.opt.collapse && this.citation.opt.collapse.length) {
        this.tmp.have_collapsed = true;
      } else {
        this.tmp.have_collapsed = false;
      }
      this.tmp.render_seen = false;
      if (this.tmp.disambig_request && !this.tmp.disambig_override) {
        this.tmp.disambig_settings = this.tmp.disambig_request;
      } else if (this.registry.registry[Item.id] && !this.tmp.disambig_override) {
        this.tmp.disambig_request = this.registry.registry[Item.id].disambig;
        this.tmp.disambig_settings = this.registry.registry[Item.id].disambig;
      } else {
        this.tmp.disambig_settings = new CSL.AmbigConfig();
      }
      if (this.tmp.area !== "citation") {
        if (!this.registry.registry[Item.id]) {
          this.tmp.disambig_restore = new CSL.AmbigConfig();
        } else {
          this.tmp.disambig_restore = CSL.cloneAmbigConfig(this.registry.registry[Item.id].disambig);
          if (this.tmp.area === "bibliography" && this.tmp.disambig_settings && this.tmp.disambig_override) {
            if (this.opt["disambiguate-add-names"]) {
              this.tmp.disambig_settings.names = this.registry.registry[Item.id].disambig.names.slice();
              if (this.tmp.disambig_request) {
                this.tmp.disambig_request.names = this.registry.registry[Item.id].disambig.names.slice();
              }
            }
            if (this.opt["disambiguate-add-givenname"]) {
              this.tmp.disambig_request = this.tmp.disambig_settings;
              this.tmp.disambig_settings.givens = this.registry.registry[Item.id].disambig.givens.slice();
              this.tmp.disambig_request.givens = this.registry.registry[Item.id].disambig.givens.slice();
              for (var i2 = 0, ilen = this.tmp.disambig_settings.givens.length; i2 < ilen; i2 += 1) {
                this.tmp.disambig_settings.givens[i2] = this.registry.registry[Item.id].disambig.givens[i2].slice();
              }
              for (var i2 = 0, ilen = this.tmp.disambig_request.givens.length; i2 < ilen; i2 += 1) {
                this.tmp.disambig_request.givens[i2] = this.registry.registry[Item.id].disambig.givens[i2].slice();
              }
            }
          }
        }
      }
      this.tmp.names_used = [];
      this.tmp.nameset_counter = 0;
      this.tmp.years_used = [];
      this.tmp.names_max.clear();
      if (!this.tmp.just_looking) {
        if (!item || item.parallel === "first" || !item.parallel) {
          this.tmp.abbrev_trimmer = {
            QUASHES: {}
          };
        }
      }
      this.tmp.splice_delimiter = this[this.tmp.area].opt.layout_delimiter;
      this.bibliography_sort.keys = [];
      this.citation_sort.keys = [];
      this.tmp.has_done_year_suffix = false;
      this.tmp.last_cite_locale = false;
      if (!this.tmp.just_looking && item && !item.position && this.registry.registry[Item.id]) {
        this.tmp.disambig_restore = CSL.cloneAmbigConfig(this.registry.registry[Item.id].disambig);
      }
      this.tmp.first_name_string = false;
      this.tmp.authority_stop_last = 0;
    };
    CSL.citeEnd = function(Item, item) {
      if (this.tmp.disambig_restore && this.registry.registry[Item.id]) {
        this.registry.registry[Item.id].disambig.names = this.tmp.disambig_restore.names.slice();
        this.registry.registry[Item.id].disambig.givens = this.tmp.disambig_restore.givens.slice();
        for (var i2 = 0, ilen = this.registry.registry[Item.id].disambig.givens.length; i2 < ilen; i2 += 1) {
          this.registry.registry[Item.id].disambig.givens[i2] = this.tmp.disambig_restore.givens[i2].slice();
        }
      }
      this.tmp.disambig_restore = false;
      if (item && item.suffix) {
        this.tmp.last_suffix_used = item.suffix;
      } else {
        this.tmp.last_suffix_used = "";
      }
      this.tmp.last_years_used = this.tmp.years_used.slice();
      this.tmp.last_names_used = this.tmp.names_used.slice();
      this.tmp.cut_var = false;
      this.tmp.disambig_request = false;
      this.tmp.cite_locales.push(this.tmp.last_cite_locale);
      if (this.tmp.issued_date && this.tmp.renders_collection_number) {
        var buf = [];
        for (var i2 = this.tmp.issued_date.list.length - 1; i2 > this.tmp.issued_date.pos; i2 += -1) {
          buf.push(this.tmp.issued_date.list.pop());
        }
        this.tmp.issued_date.list.pop();
        for (i2 = buf.length - 1; i2 > -1; i2 += -1) {
          this.tmp.issued_date.list.push(buf.pop());
        }
      }
      this.tmp.issued_date = false;
      this.tmp.renders_collection_number = false;
    };
    CSL.Engine.prototype.makeBibliography = function(bibsection) {
      var debug, ret, params, maxoffset, item, len, pos, tok, tokk, tokkk, entry_ids, entry_strings;
      debug = false;
      if (!bibsection && (this.bibliography.opt.exclude_types || this.bibliography.opt.exclude_with_fields)) {
        bibsection = {
          exclude: []
        };
        if (this.bibliography.opt.exclude_types) {
          for (var i2 in this.bibliography.opt.exclude_types) {
            var val = this.bibliography.opt.exclude_types[i2];
            bibsection.exclude.push({
              field: "type",
              value: val
            });
          }
        }
        if (this.bibliography.opt.exclude_with_fields) {
          for (var i2 in this.bibliography.opt.exclude_with_fields) {
            var field = this.bibliography.opt.exclude_with_fields[i2];
            bibsection.exclude.push({
              field,
              value: true
            });
          }
        }
      }
      if (!this.bibliography.tokens.length) {
        return false;
      }
      if ("string" === typeof bibsection) {
        this.opt.citation_number_slug = bibsection;
        bibsection = false;
      }
      if (debug) {
        len = this.bibliography.tokens.length;
        for (pos = 0; pos < len; pos += 1) {
          tok = this.bibliography.tokens[pos];
          CSL.debug("bibtok: " + tok.name);
        }
        CSL.debug("---");
        len = this.citation.tokens.length;
        for (pos = 0; pos < len; pos += 1) {
          tokk = this.citation.tokens[pos];
          CSL.debug("cittok: " + tok.name);
        }
        CSL.debug("---");
        len = this.bibliography_sort.tokens.length;
        for (pos = 0; pos < len; pos += 1) {
          tokkk = this.bibliography_sort.tokens[pos];
          CSL.debug("bibsorttok: " + tok.name);
        }
      }
      ret = CSL.getBibliographyEntries.call(this, bibsection);
      entry_ids = ret[0];
      entry_strings = ret[1];
      var done = ret[2];
      params = {
        "maxoffset": 0,
        "entryspacing": this.bibliography.opt["entry-spacing"],
        "linespacing": this.bibliography.opt["line-spacing"],
        "second-field-align": false,
        "entry_ids": entry_ids,
        "bibliography_errors": this.tmp.bibliography_errors.slice(),
        "done": done
      };
      if (this.bibliography.opt["second-field-align"]) {
        params["second-field-align"] = this.bibliography.opt["second-field-align"];
      }
      maxoffset = 0;
      len = this.registry.reflist.length;
      for (pos = 0; pos < len; pos += 1) {
        item = this.registry.reflist[pos];
        if (item.offset > params.maxoffset) {
          params.maxoffset = item.offset;
        }
      }
      if (this.bibliography.opt.hangingindent) {
        params.hangingindent = this.bibliography.opt.hangingindent;
      }
      params.bibstart = this.fun.decorate.bibstart;
      params.bibend = this.fun.decorate.bibend;
      this.opt.citation_number_slug = false;
      return [params, entry_strings];
    };
    CSL.getBibliographyEntries = function(bibsection) {
      var ret, input3, include3, anymatch, allmatch, bib_entry, res, item, spec, lllen, pppos, topblobs, entry_item_ids, debug, i2, ilen, siblings2, skips, sortedItems, eyetem, entry_item_data, j, jlen;
      ret = [];
      entry_item_data = [];
      this.tmp.area = "bibliography";
      this.tmp.root = "bibliography";
      this.tmp.last_rendered_name = false;
      this.tmp.bibliography_errors = [];
      this.tmp.bibliography_pos = 0;
      if (bibsection && bibsection.page_start && bibsection.page_length) {
        input3 = this.registry.getSortedIds();
      } else {
        input3 = this.refetchItems(this.registry.getSortedIds());
      }
      this.tmp.disambig_override = true;
      function eval_string(a2, b) {
        if (a2 === b) {
          return true;
        }
        return false;
      }
      function eval_list(a2, lst) {
        lllen = lst.length;
        for (pppos = 0; pppos < lllen; pppos += 1) {
          if (eval_string(a2, lst[pppos])) {
            return true;
          }
        }
        return false;
      }
      function eval_spec(a2, b) {
        if ("boolean" === typeof a2 || !a2) {
          if (a2) {
            return !!b;
          } else {
            return !b;
          }
        } else {
          if ("string" === typeof b) {
            return eval_string(a2, b);
          } else if (!b) {
            return false;
          } else {
            return eval_list(a2, b);
          }
        }
      }
      skips = {};
      var page_item_count;
      if (bibsection && bibsection.page_start && bibsection.page_length) {
        page_item_count = 0;
        if (bibsection.page_start !== true) {
          for (i2 = 0, ilen = input3.length; i2 < ilen; i2 += 1) {
            skips[input3[i2]] = true;
            if (bibsection.page_start == input3[i2]) {
              break;
            }
          }
        }
      }
      var processed_item_ids = [];
      var consolidatedIDs = {};
      this.tmp.container_item_count = {};
      input3 = input3.filter((o) => {
        var ret2 = o;
        if (o.legislation_id) {
          if (consolidatedIDs[o.legislation_id]) {
            ret2 = false;
          } else {
            consolidatedIDs[o.legislation_id] = true;
          }
        } else if (o.container_id) {
          if (!this.tmp.container_item_count[o.container_id]) {
            this.tmp.container_item_count[o.container_id] = 0;
          }
          this.tmp.container_item_count[o.container_id]++;
          if (this.bibliography.opt.consolidate_containers.indexOf(o.type) > -1) {
            if (consolidatedIDs[o.container_id]) {
              ret2 = false;
            } else {
              consolidatedIDs[o.container_id] = true;
            }
          }
        }
        return ret2;
      });
      this.tmp.container_item_pos = {};
      for (i2 = 0, ilen = input3.length; i2 < ilen; i2 += 1) {
        if (bibsection && bibsection.page_start && bibsection.page_length) {
          if (skips[input3[i2]]) {
            continue;
          }
          item = this.refetchItem(input3[i2]);
          if (page_item_count === bibsection.page_length) {
            break;
          }
        } else {
          item = input3[i2];
          if (skips[item.id]) {
            continue;
          }
        }
        if (bibsection) {
          include3 = true;
          if (bibsection.include) {
            include3 = false;
            for (j = 0, jlen = bibsection.include.length; j < jlen; j += 1) {
              spec = bibsection.include[j];
              if (eval_spec(spec.value, item[spec.field])) {
                include3 = true;
                break;
              }
            }
          } else if (bibsection.exclude) {
            anymatch = false;
            for (j = 0, jlen = bibsection.exclude.length; j < jlen; j += 1) {
              spec = bibsection.exclude[j];
              if (eval_spec(spec.value, item[spec.field])) {
                anymatch = true;
                break;
              }
            }
            if (anymatch) {
              include3 = false;
            }
          } else if (bibsection.select) {
            include3 = false;
            allmatch = true;
            for (j = 0, jlen = bibsection.select.length; j < jlen; j += 1) {
              spec = bibsection.select[j];
              if (!eval_spec(spec.value, item[spec.field])) {
                allmatch = false;
              }
            }
            if (allmatch) {
              include3 = true;
            }
          }
          if (bibsection.quash) {
            allmatch = true;
            for (j = 0, jlen = bibsection.quash.length; j < jlen; j += 1) {
              spec = bibsection.quash[j];
              if (!eval_spec(spec.value, item[spec.field])) {
                allmatch = false;
              }
            }
            if (allmatch) {
              include3 = false;
            }
          }
          if (!include3) {
            continue;
          }
        }
        if (debug) {
          CSL.debug("BIB: " + item.id);
        }
        if (item.container_id) {
          if (!this.tmp.container_item_pos[item.container_id]) {
            this.tmp.container_item_pos[item.container_id] = 0;
          }
          this.tmp.container_item_pos[item.container_id]++;
        }
        bib_entry = new CSL.Token("group", CSL.START);
        bib_entry.decorations = [["@bibliography", "entry"]].concat(this.bibliography.opt.layout_decorations);
        this.output.startTag("bib_entry", bib_entry);
        if (item.system_id && this.sys.embedBibliographyEntry) {
          this.output.current.value().item_id = item.system_id;
        } else {
          this.output.current.value().system_id = item.id;
        }
        entry_item_ids = [];
        if (this.registry.registry[item.id].master && !(bibsection && bibsection.page_start && bibsection.page_length)) {
          sortedItems = [[item, { id: item.id }]];
          siblings2 = this.registry.registry[item.id].siblings;
          for (var j = 0, jlen = siblings2.length; j < jlen; j++) {
            sortedItems.push([this.refetchItem(siblings2[j]), { id: siblings2[j] }]);
          }
          this.parallel.StartCitation(sortedItems);
          if (this.registry.registry[item.id].parallel_delimiter_override) {
            this.output.queue[0].strings.delimiter = this.registry.registry[item.id].parallel_delimiter_override;
          } else {
            this.output.queue[0].strings.delimiter = ", ";
          }
          this.tmp.term_predecessor = false;
          this.tmp.cite_index = 0;
          for (j = 0, jlen = sortedItems.length; j < jlen; j += 1) {
            if (j < sortedItems.length - 1) {
              this.tmp.parallel_and_not_last = true;
            } else {
              delete this.tmp.parallel_and_not_last;
            }
            entry_item_ids.push("" + CSL.getCite.call(this, sortedItems[j][0], sortedItems[j][1]));
            this.tmp.cite_index++;
            skips[sortedItems[j][0].id] = true;
          }
        } else if (!this.registry.registry[item.id].siblings) {
          this.tmp.term_predecessor = false;
          this.tmp.cite_index = 0;
          entry_item_ids.push("" + CSL.getCite.call(this, item));
          if (bibsection && bibsection.page_start && bibsection.page_length) {
            page_item_count += 1;
          }
        }
        entry_item_data.push("");
        this.tmp.bibliography_pos += 1;
        processed_item_ids.push(entry_item_ids);
        this.output.endTag("bib_entry");
        if (this.output.queue[0].blobs.length && this.output.queue[0].blobs[0].blobs.length) {
          if (!this.output.queue[0].blobs[0].blobs[0].strings) {
            topblobs = this.output.queue[0].blobs;
          } else {
            topblobs = this.output.queue[0].blobs[0].blobs;
          }
          topblobs[0].strings.prefix = this.bibliography.opt.layout_prefix + topblobs[0].strings.prefix;
        }
        for (j = 0, jlen = this.output.queue.length; j < jlen; j += 1) {
          CSL.Output.Queue.purgeEmptyBlobs(this.output.queue[j]);
        }
        for (j = 0, jlen = this.output.queue.length; j < jlen; j += 1) {
          this.output.adjust.upward(this.output.queue[j]);
          this.output.adjust.leftward(this.output.queue[j]);
          this.output.adjust.downward(this.output.queue[j], true);
          this.output.adjust.fix(this.output.queue[j]);
        }
        res = this.output.string(this, this.output.queue)[0];
        if (!res && this.opt.update_mode === CSL.NUMERIC) {
          var err = ret.length + 1 + ". [CSL STYLE ERROR: reference with no printed form.]";
          res = CSL.Output.Formats[this.opt.mode]["@bibliography/entry"](this, err);
        }
        if (res) {
          ret.push(res);
        }
      }
      var done = false;
      if (bibsection && bibsection.page_start && bibsection.page_length) {
        var last_expected_id = input3.slice(-1)[0];
        var last_seen_id = processed_item_ids.slice(-1)[0];
        if (!last_expected_id || !last_seen_id || last_expected_id == last_seen_id) {
          done = true;
        }
      }
      this.tmp.disambig_override = false;
      return [processed_item_ids, ret, done];
    };
    CSL.Engine.prototype.setCitationId = function(citation, force) {
      var ret, id, direction;
      ret = false;
      if (!citation.citationID || force) {
        id = Math.floor(Math.random() * 1e14);
        while (true) {
          direction = 0;
          if (!this.registry.citationreg.citationById[id]) {
            citation.citationID = "a" + id.toString(32);
            break;
          } else if (!direction && id < 5e13) {
            direction = 1;
          } else {
            direction = -1;
          }
          if (direction === 1) {
            id += 1;
          } else {
            id += -1;
          }
        }
        ret = "" + id;
      }
      this.registry.citationreg.citationById[citation.citationID] = citation;
      return ret;
    };
    CSL.Engine.prototype.rebuildProcessorState = function(citations, mode, uncitedItemIDs) {
      if (!citations) {
        citations = [];
      }
      if (!mode) {
        mode = "html";
      }
      var doneIDs = {};
      var itemIDs = [];
      for (var i2 = 0, ilen = citations.length; i2 < ilen; i2 += 1) {
        for (var j = 0, jlen = citations[i2].citationItems.length; j < jlen; j += 1) {
          var itemID = "" + citations[i2].citationItems[j].id;
          if (!doneIDs[itemID]) {
            itemIDs.push(itemID);
          }
          doneIDs[itemID] = true;
        }
      }
      this.updateItems(itemIDs);
      var pre2 = [];
      var post = [];
      var ret = [];
      var oldMode = this.opt.mode;
      this.setOutputFormat(mode);
      for (var i2 = 0, ilen = citations.length; i2 < ilen; i2 += 1) {
        var res = this.processCitationCluster(citations[i2], pre2, post, CSL.ASSUME_ALL_ITEMS_REGISTERED);
        pre2.push([citations[i2].citationID, citations[i2].properties.noteIndex]);
        for (var j = 0, jlen = res[1].length; j < jlen; j += 1) {
          var index4 = res[1][j][0];
          ret[index4] = [
            pre2[index4][0],
            pre2[index4][1],
            res[1][j][1]
          ];
        }
      }
      this.updateUncitedItems(uncitedItemIDs);
      this.setOutputFormat(oldMode);
      return ret;
    };
    CSL.Engine.prototype.restoreProcessorState = function(citations) {
      var i2, ilen, j, jlen, item, Item, newitem, citationList, itemList, sortedItems;
      citationList = [];
      itemList = [];
      if (!citations) {
        citations = [];
      }
      var indexNumbers = [];
      var citationIds = {};
      for (i2 = 0, ilen = citations.length; i2 < ilen; i2 += 1) {
        if (citationIds[citations[i2].citationID]) {
          this.setCitationId(citations[i2], true);
        }
        citationIds[citations[i2].citationID] = true;
        indexNumbers.push(citations[i2].properties.index);
      }
      var oldCitations = citations.slice();
      oldCitations.sort(
        function(a2, b) {
          if (a2.properties.index < b.properties.index) {
            return -1;
          } else if (a2.properties.index > b.properties.index) {
            return 1;
          } else {
            return 0;
          }
        }
      );
      for (i2 = 0, ilen = oldCitations.length; i2 < ilen; i2 += 1) {
        oldCitations[i2].properties.index = i2;
      }
      for (i2 = 0, ilen = oldCitations.length; i2 < ilen; i2 += 1) {
        sortedItems = [];
        for (j = 0, jlen = oldCitations[i2].citationItems.length; j < jlen; j += 1) {
          item = oldCitations[i2].citationItems[j];
          if ("undefined" === typeof item.sortkeys) {
            item.sortkeys = [];
          }
          Item = this.retrieveItem("" + item.id);
          newitem = [Item, item];
          sortedItems.push(newitem);
          oldCitations[i2].citationItems[j].item = Item;
          itemList.push("" + item.id);
        }
        if (!oldCitations[i2].properties.unsorted) {
          sortedItems.sort(this.citation.srt.compareCompositeKeys);
        }
        oldCitations[i2].sortedItems = sortedItems;
        this.registry.citationreg.citationById[oldCitations[i2].citationID] = oldCitations[i2];
      }
      this.updateItems(itemList);
      for (i2 = 0, ilen = citations.length; i2 < ilen; i2 += 1) {
        citationList.push(["" + citations[i2].citationID, citations[i2].properties.noteIndex]);
      }
      var ret = [];
      if (citations && citations.length) {
        ret = this.processCitationCluster(citations[0], [], citationList.slice(1));
      } else {
        this.registry = new CSL.Registry(this);
        this.tmp = new CSL.Engine.Tmp();
        this.disambiguate = new CSL.Disambiguation(this);
      }
      return ret;
    };
    CSL.Engine.prototype.updateItems = function(idList, nosort, rerun_ambigs, implicitUpdate) {
      var debug = false;
      var oldArea = this.tmp.area;
      var oldRoot = this.tmp.root;
      var oldExtension = this.tmp.extension;
      if (this.bibliography_sort.tokens.length === 0) {
        nosort = true;
      }
      this.tmp.area = "citation";
      this.tmp.root = "citation";
      this.tmp.extension = "";
      if (!implicitUpdate) {
        this.tmp.loadedItemIDs = {};
      }
      if (debug) {
        CSL.debug("--> init <--");
      }
      this.registry.init(idList);
      if (rerun_ambigs) {
        for (var ambig in this.registry.ambigcites) {
          this.registry.ambigsTouched[ambig] = true;
        }
      }
      this.registry.dodeletes(this.registry.myhash);
      this.registry.doinserts(this.registry.mylist);
      this.registry.dorefreshes();
      this.registry.rebuildlist(nosort);
      this.registry.setsortkeys();
      this.registry.setdisambigs();
      this.registry.sorttokens(nosort);
      this.registry.renumber();
      this.tmp.extension = oldExtension;
      this.tmp.area = oldArea;
      this.tmp.root = oldRoot;
      return this.registry.getSortedIds();
    };
    CSL.Engine.prototype.updateUncitedItems = function(idList, nosort) {
      var idHash;
      var oldArea = this.tmp.area;
      var oldRoot = this.tmp.root;
      var oldExtension = this.tmp.extension;
      if (this.bibliography_sort.tokens.length === 0) {
        nosort = true;
      }
      this.tmp.area = "citation";
      this.tmp.root = "citation";
      this.tmp.extension = "";
      this.tmp.loadedItemIDs = {};
      if (!idList) {
        idList = [];
      }
      if ("object" == typeof idList) {
        if ("undefined" == typeof idList.length) {
          idHash = idList;
          idList = [];
          for (var key2 in idHash) {
            idList.push(key2);
          }
        } else if ("number" == typeof idList.length) {
          idHash = {};
          for (var i2 = 0, ilen = idList.length; i2 < ilen; i2 += 1) {
            idHash[idList[i2]] = true;
          }
        }
      }
      this.registry.init(idList, true);
      this.registry.dopurge(idHash);
      this.registry.doinserts(this.registry.mylist);
      this.registry.dorefreshes();
      this.registry.rebuildlist(nosort);
      this.registry.setsortkeys();
      this.registry.setdisambigs();
      this.registry.sorttokens(nosort);
      this.registry.renumber();
      this.tmp.extension = oldExtension;
      this.tmp.area = oldArea;
      this.tmp.root = oldRoot;
      return this.registry.getSortedIds();
    };
    CSL.localeResolve = function(langstr, defaultLocale) {
      var ret, langlst;
      if (!defaultLocale) {
        defaultLocale = "en-US";
      }
      if (!langstr) {
        langstr = defaultLocale;
      }
      ret = {};
      langlst = langstr.split(/[\-_]/);
      ret.base = CSL.LANG_BASES[langlst[0]];
      if ("undefined" === typeof ret.base) {
        return { base: defaultLocale, best: langstr, bare: langlst[0] };
      }
      if (langlst.length === 1) {
        ret.generic = true;
      }
      if (langlst.length === 1 || langlst[1] === "x") {
        ret.best = ret.base.replace("_", "-");
      } else {
        ret.best = langlst.slice(0, 2).join("-");
      }
      ret.base = ret.base.replace("_", "-");
      ret.bare = langlst[0];
      return ret;
    };
    CSL.Engine.prototype.localeConfigure = function(langspec, beShy) {
      var localexml;
      if (beShy && this.locale[langspec.best]) {
        return;
      }
      if (langspec.best === "en-US") {
        localexml = CSL.setupXml(this.sys.retrieveLocale("en-US"));
        this.localeSet(localexml, "en-US", langspec.best);
      } else if (langspec.best !== "en-US") {
        if (langspec.base !== langspec.best) {
          localexml = CSL.setupXml(this.sys.retrieveLocale(langspec.base));
          this.localeSet(localexml, langspec.base, langspec.best);
        }
        localexml = CSL.setupXml(this.sys.retrieveLocale(langspec.best));
        this.localeSet(localexml, langspec.best, langspec.best);
      }
      this.localeSet(this.cslXml, "", langspec.best);
      this.localeSet(this.cslXml, langspec.bare, langspec.best);
      if (langspec.base !== langspec.best) {
        this.localeSet(this.cslXml, langspec.base, langspec.best);
      }
      this.localeSet(this.cslXml, langspec.best, langspec.best);
      if ("undefined" === typeof this.locale[langspec.best].terms["page-range-delimiter"]) {
        if (["fr", "pt"].indexOf(langspec.best.slice(0, 2).toLowerCase()) > -1) {
          this.locale[langspec.best].terms["page-range-delimiter"] = "-";
        } else {
          this.locale[langspec.best].terms["page-range-delimiter"] = "\u2013";
        }
      }
      if ("undefined" === typeof this.locale[langspec.best].terms["year-range-delimiter"]) {
        this.locale[langspec.best].terms["year-range-delimiter"] = "\u2013";
      }
      if ("undefined" === typeof this.locale[langspec.best].terms["citation-range-delimiter"]) {
        this.locale[langspec.best].terms["citation-range-delimiter"] = "\u2013";
      }
      if (this.opt.development_extensions.normalize_lang_keys_to_lowercase) {
        var localeLists = ["default-locale", "locale-sort", "locale-translit", "locale-translat"];
        for (var i2 = 0, ilen = localeLists.length; i2 < ilen; i2 += 1) {
          for (var j = 0, jlen = this.opt[localeLists[i2]].length; j < jlen; j += 1) {
            this.opt[localeLists[i2]][j] = this.opt[localeLists[i2]][j].toLowerCase();
          }
        }
        this.opt.lang = this.opt.lang.toLowerCase();
      }
    };
    CSL.Engine.prototype.localeSet = function(myxml, lang_in, lang_out) {
      var blob, locale, nodes, attributes, pos, term, form, termname, styleopts, date, attrname, len, genderform, target, i2, ilen;
      lang_in = lang_in.replace("_", "-");
      lang_out = lang_out.replace("_", "-");
      if (this.opt.development_extensions.normalize_lang_keys_to_lowercase) {
        lang_in = lang_in.toLowerCase();
        lang_out = lang_out.toLowerCase();
      }
      if (!this.locale[lang_out]) {
        this.locale[lang_out] = {};
        this.locale[lang_out].terms = {};
        this.locale[lang_out].opts = {};
        this.locale[lang_out].opts["skip-words"] = CSL.SKIP_WORDS;
        if (!this.locale[lang_out].opts["leading-noise-words"]) {
          this.locale[lang_out].opts["leading-noise-words"] = [];
        }
        this.locale[lang_out].dates = {};
        this.locale[lang_out].ord = { "1.0.1": false, keys: {} };
        this.locale[lang_out]["noun-genders"] = {};
      }
      locale = myxml.makeXml();
      if (myxml.nodeNameIs(myxml.dataObj, "locale")) {
        locale = myxml.dataObj;
      } else {
        nodes = myxml.getNodesByName(myxml.dataObj, "locale");
        var foundLocale = false;
        for (pos = 0, len = myxml.numberofnodes(nodes); pos < len; pos += 1) {
          blob = nodes[pos];
          if (!foundLocale && myxml.getAttributeValue(blob, "lang", "xml") === lang_in) {
            locale = blob;
            foundLocale = true;
          } else {
            var lang = myxml.getAttributeValue(blob, "lang", "xml");
            var style_options = myxml.getNodesByName(blob, "style-options");
            if (lang && style_options && style_options.length) {
              var jurispref = myxml.getAttributeValue(style_options[0], "jurisdiction-preference");
              if (jurispref) {
                if (!this.locale[lang]) {
                  this.locale[lang] = {
                    opts: {}
                  };
                }
                this.locale[lang].opts["jurisdiction-preference"] = jurispref.split(/\s+/);
              }
            }
          }
        }
      }
      nodes = myxml.getNodesByName(locale, "type");
      for (i2 = 0, ilen = myxml.numberofnodes(nodes); i2 < ilen; i2 += 1) {
        var typenode = nodes[i2];
        var type2 = myxml.getAttributeValue(typenode, "name");
        var gender = myxml.getAttributeValue(typenode, "gender");
        this.opt.gender[type2] = gender;
      }
      var hasCslOrdinals101 = myxml.getNodesByName(locale, "term", "ordinal").length;
      if (hasCslOrdinals101) {
        for (var key2 in this.locale[lang_out].ord.keys) {
          delete this.locale[lang_out].terms[key2];
        }
        this.locale[lang_out].ord = { "1.0.1": false, keys: {} };
      }
      nodes = myxml.getNodesByName(locale, "term");
      var ordinals101 = { "last-digit": {}, "last-two-digits": {}, "whole-number": {} };
      var ordinals101_toggle = false;
      var genderized_terms = {};
      for (pos = 0, len = myxml.numberofnodes(nodes); pos < len; pos += 1) {
        term = nodes[pos];
        termname = myxml.getAttributeValue(term, "name");
        if (termname === "sub verbo") {
          termname = "sub-verbo";
        }
        if (termname.slice(0, 7) === "ordinal") {
          if (termname === "ordinal") {
            ordinals101_toggle = true;
          } else {
            var match3 = myxml.getAttributeValue(term, "match");
            var termstub = termname.slice(8);
            var genderform = myxml.getAttributeValue(term, "gender-form");
            if (!genderform) {
              genderform = "neuter";
            }
            if (!match3) {
              match3 = "last-two-digits";
              if (termstub.slice(0, 1) === "0") {
                match3 = "last-digit";
              }
            }
            if (termstub.slice(0, 1) === "0") {
              termstub = termstub.slice(1);
            }
            if (!ordinals101[match3][termstub]) {
              ordinals101[match3][termstub] = {};
            }
            ordinals101[match3][termstub][genderform] = termname;
          }
          this.locale[lang_out].ord.keys[termname] = true;
        }
        if ("undefined" === typeof this.locale[lang_out].terms[termname]) {
          this.locale[lang_out].terms[termname] = {};
        }
        form = "long";
        genderform = false;
        if (myxml.getAttributeValue(term, "form")) {
          form = myxml.getAttributeValue(term, "form");
        }
        if (myxml.getAttributeValue(term, "gender-form")) {
          genderform = myxml.getAttributeValue(term, "gender-form");
        }
        if (myxml.getAttributeValue(term, "gender")) {
          this.locale[lang_out]["noun-genders"][termname] = myxml.getAttributeValue(term, "gender");
        }
        if (genderform) {
          this.locale[lang_out].terms[termname][genderform] = {};
          this.locale[lang_out].terms[termname][genderform][form] = [];
          target = this.locale[lang_out].terms[termname][genderform];
          genderized_terms[termname] = true;
        } else {
          this.locale[lang_out].terms[termname][form] = [];
          target = this.locale[lang_out].terms[termname];
        }
        if (myxml.numberofnodes(myxml.getNodesByName(term, "multiple"))) {
          target[form][0] = myxml.getNodeValue(term, "single");
          if (target[form][0].indexOf("%s") > -1) {
            this.opt.hasPlaceholderTerm = true;
          }
          target[form][1] = myxml.getNodeValue(term, "multiple");
          if (target[form][1].indexOf("%s") > -1) {
            this.opt.hasPlaceholderTerm = true;
          }
        } else {
          target[form] = myxml.getNodeValue(term);
          if (target[form].indexOf("%s") > -1) {
            this.opt.hasPlaceholderTerm = true;
          }
        }
      }
      if (!this.locale[lang_out].terms.supplement) {
        this.locale[lang_out].terms.supplement = {};
      }
      if (!this.locale[lang_out].terms.supplement["long"]) {
        this.locale[lang_out].terms.supplement["long"] = ["supplement", "supplements"];
      }
      if (ordinals101_toggle) {
        for (var ikey in genderized_terms) {
          var gender_segments = {};
          var form_segments = 0;
          for (var jkey in this.locale[lang_out].terms[ikey]) {
            if (["masculine", "feminine"].indexOf(jkey) > -1) {
              gender_segments[jkey] = this.locale[lang_out].terms[ikey][jkey];
            } else {
              form_segments += 1;
            }
          }
          if (!form_segments) {
            if (gender_segments.feminine) {
              for (var jkey in gender_segments.feminine) {
                this.locale[lang_out].terms[ikey][jkey] = gender_segments.feminine[jkey];
              }
            } else if (gender_segments.masculine) {
              for (var jkey in gender_segments.masculine) {
                this.locale[lang_out].terms[ikey][jkey] = gender_segments.masculine[jkey];
              }
            }
          }
        }
        this.locale[lang_out].ord["1.0.1"] = ordinals101;
      }
      for (termname in this.locale[lang_out].terms) {
        for (i2 = 0, ilen = 2; i2 < ilen; i2 += 1) {
          genderform = CSL.GENDERS[i2];
          if (this.locale[lang_out].terms[termname][genderform]) {
            for (form in this.locale[lang_out].terms[termname]) {
              if (!this.locale[lang_out].terms[termname][genderform][form]) {
                this.locale[lang_out].terms[termname][genderform][form] = this.locale[lang_out].terms[termname][form];
              }
            }
          }
        }
      }
      nodes = myxml.getNodesByName(locale, "style-options");
      for (pos = 0, len = myxml.numberofnodes(nodes); pos < len; pos += 1) {
        if (true) {
          styleopts = nodes[pos];
          attributes = myxml.attributes(styleopts);
          for (attrname in attributes) {
            if (attributes.hasOwnProperty(attrname)) {
              if (attrname === "@punctuation-in-quote" || attrname === "@limit-day-ordinals-to-day-1") {
                if (attributes[attrname] === "true") {
                  this.locale[lang_out].opts[attrname.slice(1)] = true;
                } else {
                  this.locale[lang_out].opts[attrname.slice(1)] = false;
                }
              } else if (attrname === "@jurisdiction-preference") {
                var jurisdiction_preference = attributes[attrname].split(/\s+/);
                this.locale[lang_out].opts[attrname.slice(1)] = jurisdiction_preference;
              } else if (attrname === "@skip-words") {
                var skip_words = attributes[attrname].split(/\s*,\s*/);
                this.locale[lang_out].opts[attrname.slice(1)] = skip_words;
              } else if (attrname === "@leading-noise-words") {
                var val = attributes[attrname].split(/\s*,\s*/);
                this.locale[lang_out].opts["leading-noise-words"] = val;
              } else if (attrname === "@name-as-sort-order") {
                this.locale[lang_out].opts["name-as-sort-order"] = {};
                var lst = attributes[attrname].split(/\s+/);
                for (var i2 = 0, ilen = lst.length; i2 < ilen; i2 += 1) {
                  this.locale[lang_out].opts["name-as-sort-order"][lst[i2]] = true;
                }
              } else if (attrname === "@name-as-reverse-order") {
                this.locale[lang_out].opts["name-as-reverse-order"] = {};
                var lst = attributes[attrname].split(/\s+/);
                for (var i2 = 0, ilen = lst.length; i2 < ilen; i2 += 1) {
                  this.locale[lang_out].opts["name-as-reverse-order"][lst[i2]] = true;
                }
              } else if (attrname === "@name-never-short") {
                this.locale[lang_out].opts["name-never-short"] = {};
                var lst = attributes[attrname].split(/\s+/);
                for (var i2 = 0, ilen = lst.length; i2 < ilen; i2 += 1) {
                  this.locale[lang_out].opts["name-never-short"][lst[i2]] = true;
                }
              }
            }
          }
        }
      }
      nodes = myxml.getNodesByName(locale, "date");
      for (pos = 0, len = myxml.numberofnodes(nodes); pos < len; pos += 1) {
        if (true) {
          var date = nodes[pos];
          this.locale[lang_out].dates[myxml.getAttributeValue(date, "form")] = date;
        }
      }
      CSL.SET_COURT_CLASSES(this, lang_out, myxml, locale);
    };
    CSL.getLocaleNames = function(myxml, preferredLocale) {
      var stylexml = CSL.setupXml(myxml);
      function extendLocaleList(localeList, locale) {
        var forms = ["base", "best"];
        if (locale) {
          var normalizedLocale = CSL.localeResolve(locale);
          for (var i3 = 0, ilen2 = forms.length; i3 < ilen2; i3++) {
            if (normalizedLocale[forms[i3]] && localeList.indexOf(normalizedLocale[forms[i3]]) === -1) {
              localeList.push(normalizedLocale[forms[i3]]);
            }
          }
        }
      }
      var localeIDs = ["en-US"];
      function sniffLocaleOnOneNodeName(nodeName) {
        var nodes = stylexml.getNodesByName(stylexml.dataObj, nodeName);
        for (var i3 = 0, ilen2 = nodes.length; i3 < ilen2; i3++) {
          var nodeLocales = stylexml.getAttributeValue(nodes[i3], "locale");
          if (nodeLocales) {
            nodeLocales = nodeLocales.split(/ +/);
            for (var j = 0, jlen = nodeLocales.length; j < jlen; j++) {
              this.extendLocaleList(localeIDs, nodeLocales[j]);
            }
          }
        }
      }
      extendLocaleList(localeIDs, preferredLocale);
      var styleNode = stylexml.getNodesByName(stylexml.dataObj, "style")[0];
      var defaultLocale = stylexml.getAttributeValue(styleNode, "default-locale");
      extendLocaleList(localeIDs, defaultLocale);
      var nodeNames = ["layout", "if", "else-if", "condition"];
      for (var i2 = 0, ilen = nodeNames.length; i2 < ilen; i2++) {
        sniffLocaleOnOneNodeName(stylexml, localeIDs, nodeNames[i2]);
      }
      return localeIDs;
    };
    CSL.Node = {};
    CSL.Node.bibliography = {
      build: function(state, target) {
        if (this.tokentype === CSL.START) {
          state.build.area = "bibliography";
          state.build.root = "bibliography";
          state.build.extension = "";
          var func = function(state2) {
            state2.tmp.area = "bibliography";
            state2.tmp.root = "bibliography";
            state2.tmp.extension = "";
          };
          this.execs.push(func);
        }
        target.push(this);
      }
    };
    CSL.Node.choose = {
      build: function(state, target) {
        var func;
        if (this.tokentype === CSL.START) {
          func = function(state2) {
            state2.tmp.jump.push(void 0, CSL.LITERAL);
          };
        }
        if (this.tokentype === CSL.END) {
          func = function(state2) {
            state2.tmp.jump.pop();
          };
        }
        this.execs.push(func);
        target.push(this);
      },
      configure: function(state, pos) {
        if (this.tokentype === CSL.END) {
          state.configure.fail.push(pos);
          state.configure.succeed.push(pos);
        } else {
          state.configure.fail.pop();
          state.configure.succeed.pop();
        }
      }
    };
    CSL.Node.citation = {
      build: function(state, target) {
        if (this.tokentype === CSL.START) {
          state.build.area = "citation";
          state.build.root = "citation";
          state.build.extension = "";
          var func = function(state2) {
            state2.tmp.area = "citation";
            state2.tmp.root = "citation";
            state2.tmp.extension = "";
          };
          this.execs.push(func);
        }
        if (this.tokentype === CSL.END) {
          state.opt.grouped_sort = state.opt.xclass === "in-text" && (state.citation.opt.collapse && state.citation.opt.collapse.length) || state.citation.opt.cite_group_delimiter && state.citation.opt.cite_group_delimiter.length && state.opt.update_mode !== CSL.POSITION && state.opt.update_mode !== CSL.NUMERIC;
          if (state.opt.grouped_sort && state.citation_sort.opt.sort_directions.length) {
            var firstkey = state.citation_sort.opt.sort_directions[0].slice();
            state.citation_sort.opt.sort_directions = [firstkey].concat(state.citation_sort.opt.sort_directions);
          }
          state.citation.srt = new CSL.Registry.Comparifier(state, "citation_sort");
        }
        target.push(this);
      }
    };
    CSL.Node["#comment"] = {
      // This is a comment in the CSL file.
      build: function() {
      }
    };
    CSL.Node.date = {
      build: function(state, target) {
        var func, date_obj, len, pos, part, dpx, parts, mypos, start, end;
        if (this.tokentype === CSL.START || this.tokentype === CSL.SINGLETON) {
          state.dateput.string(state, state.dateput.queue);
          state.tmp.date_token = CSL.Util.cloneToken(this);
          state.tmp.date_token.strings.prefix = "";
          state.tmp.date_token.strings.suffix = "";
          state.dateput.openLevel(this);
          state.build.date_parts = [];
          state.build.date_variables = this.variables;
          if (!state.build.extension) {
            CSL.Util.substituteStart.call(this, state, target);
          }
          if (state.build.extension) {
            func = CSL.dateMacroAsSortKey;
          } else {
            func = function(state2, Item, item) {
              var dp;
              state2.tmp.element_rendered_ok = false;
              state2.tmp.donesies = [];
              state2.tmp.dateparts = [];
              dp = [];
              if (this.variables.length && !(state2.tmp.just_looking && this.variables[0] === "accessed")) {
                date_obj = Item[this.variables[0]];
                if ("undefined" === typeof date_obj) {
                  date_obj = { "date-parts": [[0]] };
                  if (state2.opt.development_extensions.locator_date_and_revision) {
                    if (item && this.variables[0] === "locator-date" && item["locator-date"]) {
                      date_obj = item["locator-date"];
                    }
                  }
                }
                state2.tmp.date_object = date_obj;
                len = this.dateparts.length;
                for (pos = 0; pos < len; pos += 1) {
                  part = this.dateparts[pos];
                  if ("undefined" !== typeof state2.tmp.date_object[part + "_end"]) {
                    dp.push(part);
                  } else if (part === "month" && "undefined" !== typeof state2.tmp.date_object.season_end) {
                    dp.push(part);
                  }
                }
                dpx = [];
                parts = ["year", "month", "day"];
                len = parts.length;
                for (pos = 0; pos < len; pos += 1) {
                  if (dp.indexOf(parts[pos]) > -1) {
                    dpx.push(parts[pos]);
                  }
                }
                dp = dpx.slice();
                mypos = 2;
                len = dp.length;
                for (pos = 0; pos < len; pos += 1) {
                  part = dp[pos];
                  start = state2.tmp.date_object[part];
                  end = state2.tmp.date_object[part + "_end"];
                  if (start !== end) {
                    mypos = pos;
                    break;
                  }
                }
                state2.tmp.date_collapse_at = dp.slice(mypos);
              } else {
                state2.tmp.date_object = false;
              }
            };
          }
          this.execs.push(func);
          func = function(state2, Item) {
            if (!Item[this.variables[0]]) {
              return;
            }
            state2.output.startTag("date", this);
            if (this.variables[0] === "issued" && (Item.type === "legal_case" || Item.type === "legislation") && state2.opt.disable_duplicate_year_suppression.indexOf(Item.country) === -1 && !state2.tmp.extension && "" + Item["collection-number"] === "" + state2.tmp.date_object.year && this.dateparts.length === 1 && this.dateparts[0] === "year") {
              for (var key2 in state2.tmp.date_object) {
                if (state2.tmp.date_object.hasOwnProperty(key2)) {
                  if (key2.slice(0, 4) === "year") {
                    state2.tmp.issued_date = {};
                    var lst = state2.output.current.mystack.slice(-2)[0].blobs;
                    state2.tmp.issued_date.list = lst;
                    state2.tmp.issued_date.pos = lst.length - 1;
                  }
                }
              }
            }
          };
          this.execs.push(func);
        }
        if (!state.build.extension && (this.tokentype === CSL.END || this.tokentype === CSL.SINGLETON)) {
          func = function(state2, Item) {
            if (!Item[this.variables[0]]) {
              return;
            }
            state2.output.endTag();
          };
          this.execs.push(func);
        }
        target.push(this);
        if (this.tokentype === CSL.END || this.tokentype === CSL.SINGLETON) {
          if (!state.build.extension) {
            CSL.Util.substituteEnd.call(this, state, target);
          }
        }
      }
    };
    CSL.Node["date-part"] = {
      build: function(state, target) {
        var func, pos, len, first_date, value, value_end, real, have_collapsed, invoked, precondition, known_year, bc, ad, bc_end, ad_end, ready, curr, dcurr, number2, num, formatter, item, blob;
        if (!this.strings.form) {
          this.strings.form = "long";
        }
        state.build.date_parts.push(this.strings.name);
        var date_variable = state.build.date_variables[0];
        function formatAndStrip(myform, gender, val) {
          if (!val) {
            return val;
          }
          val = "" + CSL.Util.Dates[this.strings.name][myform](state, val, gender, this.default_locale);
          if ("month" === this.strings.name) {
            if (state.tmp.strip_periods) {
              val = val.replace(/\./g, "");
            } else {
              for (var i2 = 0, ilen = this.decorations.length; i2 < ilen; i2 += 1) {
                if ("@strip-periods" === this.decorations[i2][0] && "true" === this.decorations[i2][1]) {
                  val = val.replace(/\./g, "");
                  break;
                }
              }
            }
          }
          return val;
        }
        func = function(state2, Item) {
          if (!state2.tmp.date_object) {
            return;
          } else {
            state2.tmp.probably_rendered_something = true;
          }
          var last_string_output = "";
          first_date = true;
          value = "";
          value_end = "";
          state2.tmp.donesies.push(this.strings.name);
          if (state2.tmp.date_object.literal && "year" === this.strings.name) {
            last_string_output = state2.tmp.date_object.literal;
            state2.output.append(state2.tmp.date_object.literal, this);
          }
          if (state2.tmp.date_object) {
            value = state2.tmp.date_object[this.strings.name];
            value_end = state2.tmp.date_object[this.strings.name + "_end"];
          }
          if ("year" === this.strings.name && value === 0 && !state2.tmp.suppress_decorations) {
            value = false;
          }
          real = !state2.tmp.suppress_decorations;
          have_collapsed = state2.tmp.have_collapsed;
          invoked = state2[state2.tmp.area].opt.collapse === "year-suffix" || state2[state2.tmp.area].opt.collapse === "year-suffix-ranged";
          precondition = state2.opt["disambiguate-add-year-suffix"];
          if (real && precondition && invoked) {
            state2.tmp.years_used.push(value);
            known_year = state2.tmp.last_years_used.length >= state2.tmp.years_used.length;
            if (known_year && have_collapsed) {
              if (state2.tmp.last_years_used[state2.tmp.years_used.length - 1] === value) {
                value = false;
              }
            }
          }
          if ("undefined" !== typeof value) {
            bc = false;
            ad = false;
            bc_end = false;
            ad_end = false;
            if ("year" === this.strings.name) {
              if (parseInt(value, 10) < 500 && parseInt(value, 10) > 0) {
                ad = state2.getTerm("ad");
              }
              if (parseInt(value, 10) < 0) {
                bc = state2.getTerm("bc");
                value = parseInt(value, 10) * -1;
              }
              if (value_end) {
                if (parseInt(value_end, 10) < 500 && parseInt(value_end, 10) > 0) {
                  ad_end = state2.getTerm("ad");
                }
                if (parseInt(value_end, 10) < 0) {
                  bc_end = state2.getTerm("bc");
                  value_end = parseInt(value_end, 10) * -1;
                }
              }
            }
            var monthnameid = "" + state2.tmp.date_object.month;
            while (monthnameid.length < 2) {
              monthnameid = "0" + monthnameid;
            }
            monthnameid = "month-" + monthnameid;
            var gender = state2.locale[state2.opt.lang]["noun-genders"][monthnameid];
            if (this.strings.form) {
              var myform = this.strings.form;
              var myform_end = this.strings.form;
              if (this.strings.name === "day") {
                if (myform === "ordinal" && state2.locale[state2.opt.lang].opts["limit-day-ordinals-to-day-1"]) {
                  if (value != 1) {
                    myform = "numeric";
                  }
                  if (value_end != 1) {
                    myform_end = "numeric";
                  }
                }
              }
              value = formatAndStrip.call(this, myform, gender, value);
              value_end = formatAndStrip.call(this, myform_end, gender, value_end);
            }
            state2.output.openLevel("empty");
            if (state2.tmp.date_collapse_at.length) {
              ready = true;
              len = state2.tmp.date_collapse_at.length;
              for (pos = 0; pos < len; pos += 1) {
                item = state2.tmp.date_collapse_at[pos];
                if (state2.tmp.donesies.indexOf(item) === -1) {
                  ready = false;
                  break;
                }
              }
              if (ready) {
                if ("" + value_end !== "0") {
                  if (state2.dateput.queue.length === 0) {
                    first_date = true;
                  }
                  if (state2.opt["year-range-format"] && state2.opt["year-range-format"] !== "expanded" && !state2.tmp.date_object.day && !state2.tmp.date_object.month && !state2.tmp.date_object.season && this.strings.name === "year" && value && value_end) {
                    value_end = state2.fun.year_mangler(value + "-" + value_end, true);
                    var range_delimiter = state2.getTerm("year-range-delimiter");
                    value_end = value_end.slice(value_end.indexOf(range_delimiter) + 1);
                  }
                  last_string_output = value_end;
                  state2.dateput.append(value_end, this);
                  if (first_date) {
                    blob = state2.dateput.current.value().blobs[0];
                    if (blob) {
                      blob.strings.prefix = "";
                    }
                  }
                }
                last_string_output = value;
                state2.output.append(value, this);
                curr = state2.output.current.value();
                blob = curr.blobs[curr.blobs.length - 1];
                if (blob) {
                  blob.strings.suffix = "";
                }
                if (this.strings["range-delimiter"]) {
                  state2.output.append(this.strings["range-delimiter"]);
                } else {
                  state2.output.append(state2.getTerm("year-range-delimiter"), "empty");
                }
                state2.dateput.closeLevel();
                dcurr = state2.dateput.current.value();
                curr.blobs = curr.blobs.concat(dcurr);
                state2.dateput.string(state2, state2.dateput.queue);
                state2.dateput.openLevel(state2.tmp.date_token);
                state2.tmp.date_collapse_at = [];
              } else {
                last_string_output = value;
                state2.output.append(value, this);
                if (state2.tmp.date_collapse_at.indexOf(this.strings.name) > -1) {
                  if ("" + value_end !== "0") {
                    if (state2.dateput.queue.length === 0) {
                      first_date = true;
                    }
                    state2.dateput.openLevel("empty");
                    last_string_output = value_end;
                    state2.dateput.append(value_end, this);
                    if (first_date) {
                      blob = state2.dateput.current.value().blobs[0];
                      if (blob) {
                        blob.strings.prefix = "";
                      }
                    }
                    if (bc) {
                      last_string_output = bc;
                      state2.dateput.append(bc);
                    }
                    if (ad) {
                      last_string_output = ad;
                      state2.dateput.append(ad);
                    }
                    state2.dateput.closeLevel();
                  }
                }
              }
            } else {
              last_string_output = value;
              state2.output.append(value, this);
            }
            if (bc) {
              last_string_output = bc;
              state2.output.append(bc);
            }
            if (ad) {
              last_string_output = ad;
              state2.output.append(ad);
            }
            state2.output.closeLevel();
          } else if ("month" === this.strings.name) {
            if (state2.tmp.date_object.season) {
              value = "" + state2.tmp.date_object.season;
              if (value && value.match(/^[1-4]$/)) {
                state2.tmp.group_context.tip.variable_success = true;
                last_string_output = "winter";
                state2.output.append(state2.getTerm("season-0" + value), this);
              } else if (value) {
                last_string_output = value;
                state2.output.append(value, this);
              }
            }
          }
          state2.tmp.value = [];
          if (Item[date_variable] && (value || state2.tmp.have_collapsed) && !state2.opt.has_year_suffix && "year" === this.strings.name && !state2.tmp.just_looking) {
            if (state2.registry.registry[Item.id] && state2.registry.registry[Item.id].disambig.year_suffix !== false && !state2.tmp.has_done_year_suffix) {
              state2.tmp.has_done_year_suffix = true;
              last_string_output = "x";
              num = parseInt(state2.registry.registry[Item.id].disambig.year_suffix, 10);
              number2 = new CSL.NumericBlob(state2, false, num, this, Item.id);
              this.successor_prefix = state2[state2.build.area].opt.layout_delimiter;
              this.splice_prefix = state2[state2.build.area].opt.layout_delimiter;
              formatter = new CSL.Util.Suffixator(CSL.SUFFIX_CHARS);
              number2.setFormatter(formatter);
              if (state2[state2.tmp.area].opt.collapse === "year-suffix-ranged") {
                number2.range_prefix = state2.getTerm("citation-range-delimiter");
              }
              if (state2[state2.tmp.area].opt.cite_group_delimiter) {
                number2.successor_prefix = state2[state2.tmp.area].opt.cite_group_delimiter;
              } else if (state2[state2.tmp.area].opt["year-suffix-delimiter"]) {
                number2.successor_prefix = state2[state2.tmp.area].opt["year-suffix-delimiter"];
              } else {
                number2.successor_prefix = state2[state2.tmp.area].opt.layout_delimiter;
              }
              number2.UGLY_DELIMITER_SUPPRESS_HACK = true;
              state2.output.append(number2, "literal");
            }
          }
          if (last_string_output && !state2.tmp.group_context.tip.condition) {
            state2.tmp.just_did_number = last_string_output.match(/[0-9]$/);
            if (state2.output.current.tip.strings.suffix) {
              state2.tmp.just_did_number = false;
            }
          }
        };
        this.execs.push(func);
        target.push(this);
      }
    };
    CSL.Node["else-if"] = {
      //
      // these function are the same as those in if, might just clone
      build: function(state, target) {
        CSL.Conditions.TopNode.call(this, state, target);
        target.push(this);
      },
      configure: function(state, pos) {
        CSL.Conditions.Configure.call(this, state, pos);
      }
    };
    CSL.Node["else"] = {
      build: function(state, target) {
        target.push(this);
      },
      configure: function(state, pos) {
        if (this.tokentype === CSL.START) {
          state.configure.fail[state.configure.fail.length - 1] = pos;
        }
      }
    };
    CSL.Node["et-al"] = {
      build: function(state, target) {
        if (state.build.area === "citation" || state.build.area === "bibliography") {
          var func = function(state2) {
            state2.tmp.etal_node = this;
            if ("string" === typeof this.strings.term) {
              state2.tmp.etal_term = this.strings.term;
            }
          };
          this.execs.push(func);
        }
        target.push(this);
      }
    };
    CSL.Node.group = {
      build: function(state, target, realGroup) {
        var func, execs;
        this.realGroup = realGroup;
        if (this.tokentype === CSL.START) {
          CSL.Util.substituteStart.call(this, state, target);
          if (state.build.substitute_level.value()) {
            state.build.substitute_level.replace(state.build.substitute_level.value() + 1);
          }
          if (!this.juris) {
            target.push(this);
          }
          func = function(state2) {
            state2.output.startTag("group", this);
            if (this.strings.label_form_override) {
              if (!state2.tmp.group_context.tip.label_form) {
                state2.tmp.group_context.tip.label_form = this.strings.label_form_override;
              }
            }
            if (this.strings.label_capitalize_if_first_override) {
              if (!state2.tmp.group_context.tip.label_capitalize_if_first) {
                state2.tmp.group_context.tip.label_capitalize_if_first = this.strings.label_capitalize_if_first_override;
              }
            }
            if (this.realGroup) {
              if (state2.tmp.group_context.tip.condition) {
                CSL.UPDATE_GROUP_CONTEXT_CONDITION(state2, this.strings.prefix, null, this);
              }
              var condition = false;
              var force_suppress = false;
              if (state2.tmp.group_context.mystack.length) {
                state2.output.current.value().parent = state2.tmp.group_context.tip.output_tip;
              }
              var label_form = state2.tmp.group_context.tip.label_form;
              if (!label_form) {
                label_form = this.strings.label_form_override;
              }
              var label_capitalize_if_first = state2.tmp.group_context.tip.label_capitalize_if_first;
              if (!label_capitalize_if_first) {
                label_capitalize_if_first = this.strings.label_capitalize_if_first;
              }
              if (state2.tmp.group_context.tip.condition) {
                condition = state2.tmp.group_context.tip.condition;
                force_suppress = state2.tmp.group_context.tip.force_suppress;
              } else if (this.strings.reject) {
                condition = {
                  test: this.strings.reject,
                  not: true
                };
              } else if (this.strings.require) {
                condition = {
                  test: this.strings.require,
                  not: false
                };
              }
              var context = {
                old_term_predecessor: state2.tmp.term_predecessor,
                term_intended: false,
                variable_attempt: false,
                variable_success: false,
                variable_success_parent: state2.tmp.group_context.tip.variable_success,
                output_tip: state2.output.current.tip,
                label_form,
                label_static: state2.tmp.group_context.tip.label_static,
                label_capitalize_if_first,
                parallel_delimiter_override: this.strings.set_parallel_delimiter_override,
                parallel_delimiter_override_on_suppress: this.strings.set_parallel_delimiter_override_on_suppress,
                condition,
                force_suppress,
                done_vars: state2.tmp.group_context.tip.done_vars.slice()
              };
              if (this.non_parallel) {
                var non_parallel = state2.tmp.group_context.tip.non_parallel;
                if (!non_parallel) {
                  non_parallel = {};
                }
                Object.assign(non_parallel, this.non_parallel);
                context.non_parallel = non_parallel;
              }
              if (this.parallel_first) {
                var parallel_first = state2.tmp.group_context.tip.parallel_first;
                if (!parallel_first) {
                  parallel_first = {};
                }
                Object.assign(parallel_first, this.parallel_first);
                context.parallel_first = parallel_first;
              }
              if (this.parallel_last) {
                var parallel_last = state2.tmp.group_context.tip.parallel_last;
                if (!parallel_last) {
                  parallel_last = {};
                }
                Object.assign(parallel_last, this.parallel_last);
                context.parallel_last = parallel_last;
              }
              if (state2.tmp.abbrev_trimmer && state2.tmp.abbrev_trimmer.LAST_TO_FIRST && context.parallel_last) {
                if (!context.parallel_first) {
                  context.parallel_first = {};
                }
                for (var varname in state2.tmp.abbrev_trimmer.LAST_TO_FIRST) {
                  if (context.parallel_last[varname]) {
                    context.parallel_first[varname] = true;
                    delete context.parallel_last[varname];
                  }
                }
              }
              state2.tmp.group_context.push(context);
              if (state2.tmp.abbrev_trimmer && this.parallel_last_to_first) {
                if (!state2.tmp.abbrev_trimmer.LAST_TO_FIRST) {
                  state2.tmp.abbrev_trimmer.LAST_TO_FIRST = {};
                }
                for (var varname in this.parallel_last_to_first) {
                  state2.tmp.abbrev_trimmer.LAST_TO_FIRST[varname] = true;
                }
              }
            }
          };
          execs = [];
          execs.push(func);
          this.execs = execs.concat(this.execs);
          if (this.strings["has-publisher-and-publisher-place"]) {
            state.build["publisher-special"] = true;
            if (this.strings["subgroup-delimiter"]) {
              func = function(state2, Item) {
                if (Item.publisher && Item["publisher-place"]) {
                  var publisher_lst = Item.publisher.split(/;\s*/);
                  var publisher_place_lst = Item["publisher-place"].split(/;\s*/);
                  if (publisher_lst.length > 1 && publisher_lst.length === publisher_place_lst.length) {
                    state2.publisherOutput = new CSL.PublisherOutput(state2, this);
                    state2.publisherOutput["publisher-list"] = publisher_lst;
                    state2.publisherOutput["publisher-place-list"] = publisher_place_lst;
                  }
                }
              };
              this.execs.push(func);
            }
          }
          if (this.juris) {
            var choose_start = new CSL.Token("choose", CSL.START);
            CSL.Node.choose.build.call(choose_start, state, target);
            var if_start = new CSL.Token("if", CSL.START);
            func = /* @__PURE__ */ (function(macroName) {
              return function(Item, item) {
                return CSL.INIT_JURISDICTION_MACROS(state, Item, item, macroName);
              };
            })(this.juris);
            if_start.tests ? {} : if_start.tests = [];
            if_start.tests.push(func);
            if_start.test = state.fun.match.any(if_start, state, if_start.tests);
            target.push(if_start);
            var text_node = new CSL.Token("text", CSL.SINGLETON);
            func = function(state2, Item, item) {
              var itemItem = Item;
              if (item && item["best-jurisdiction"] && this.juris === "juris-locator") {
                itemItem = item;
              }
              var next = 0;
              if (state2.juris[itemItem["best-jurisdiction"]][this.juris]) {
                while (next < state2.juris[itemItem["best-jurisdiction"]][this.juris].length) {
                  next = CSL.tokenExec.call(state2, state2.juris[itemItem["best-jurisdiction"]][this.juris][next], Item, item);
                }
              }
            };
            text_node.juris = this.juris;
            text_node.execs.push(func);
            target.push(text_node);
            var if_end = new CSL.Token("if", CSL.END);
            CSL.Node["if"].build.call(if_end, state, target);
            var else_start = new CSL.Token("else", CSL.START);
            CSL.Node["else"].build.call(else_start, state, target);
          }
        }
        if (this.tokentype === CSL.END) {
          if (state.build["publisher-special"]) {
            state.build["publisher-special"] = false;
            func = function(state2) {
              if (state2.publisherOutput) {
                state2.publisherOutput.render();
                state2.publisherOutput = false;
              }
            };
            this.execs.push(func);
          }
          func = function(state2, Item, item) {
            if (!state2.tmp.group_context.tip.condition) {
              if (state2.output.current.tip.strings.suffix) {
                state2.tmp.just_did_number = false;
              }
            }
            state2.output.endTag();
            if (this.realGroup) {
              var flags = state2.tmp.group_context.pop();
              if (flags.parallel_delimiter_override) {
                state2.tmp.group_context.tip.parallel_delimiter_override = flags.parallel_delimiter_override;
                if (!state2.tmp.just_looking && state2.registry.registry[Item.id].master) {
                  state2.registry.registry[Item.id].parallel_delimiter_override = flags.parallel_delimiter_override;
                }
              }
              if (flags.parallel_delimiter_override_on_suppress) {
                state2.tmp.group_context.tip.parallel_delimiter_override_on_suppress = flags.parallel_delimiter_override_on_suppress;
              }
              if (state2.tmp.area === "bibliography_sort") {
                var citationNumberIdx = flags.done_vars.indexOf("citation-number");
                if (this.strings.sort_direction && citationNumberIdx > -1 && state2.tmp.group_context.length() == 1) {
                  if (this.strings.sort_direction === CSL.DESCENDING) {
                    state2.bibliography_sort.opt.citation_number_sort_direction = CSL.DESCENDING;
                  } else {
                    state2.bibliography_sort.opt.citation_number_sort_direction = CSL.ASCENDING;
                  }
                  flags.done_vars = flags.done_vars.slice(0, citationNumberIdx).concat(flags.done_vars.slice(citationNumberIdx + 1));
                }
              }
              if (flags.condition) {
                flags.force_suppress = CSL.EVALUATE_GROUP_CONDITION(state2, flags);
              }
              if (state2.tmp.group_context.tip.condition) {
                state2.tmp.group_context.tip.force_suppress = flags.force_suppress;
              }
              if (!flags.force_suppress && (flags.variable_success || flags.term_intended && !flags.variable_attempt)) {
                if (!this.isJurisLocatorLabel) {
                  state2.tmp.group_context.tip.variable_success = true;
                }
                var blobs = state2.output.current.value().blobs;
                var pos = state2.output.current.value().blobs.length - 1;
                if (!state2.tmp.just_looking && (flags.non_parallel || flags.parallel_last || flags.parallel_first || flags.parallel_delimiter_override || flags.parallel_delimiter_override_on_suppress)) {
                  var hasRepeat = state2.parallel.checkRepeats(flags);
                  if (hasRepeat) {
                    if (blobs) {
                      blobs.pop();
                    }
                  }
                  if (state2.tmp.cite_index > 0 && (hasRepeat || !flags.parallel_first && !flags.parallel_last && !flags.non_parallel)) {
                    var info = state2.tmp.suppress_repeats[state2.tmp.cite_index - 1];
                    if (hasRepeat && flags.parallel_delimiter_override_on_suppress && (info.SIBLING || info.ORPHAN)) {
                      state2.output.queue.slice(-1)[0].parallel_delimiter = flags.parallel_delimiter_override_on_suppress;
                    } else if (flags.parallel_delimiter_override && info.SIBLING) {
                      state2.output.queue.slice(-1)[0].parallel_delimiter = flags.parallel_delimiter_override;
                    }
                  }
                }
              } else {
                state2.tmp.term_predecessor = flags.old_term_predecessor;
                state2.tmp.group_context.tip.variable_attempt = flags.variable_attempt;
                if (flags.force_suppress && !state2.tmp.group_context.tip.condition) {
                  state2.tmp.group_context.tip.variable_attempt = true;
                  state2.tmp.group_context.tip.variable_success = flags.variable_success_parent;
                }
                if (flags.force_suppress) {
                  for (var i2 = 0, ilen = flags.done_vars.length; i2 < ilen; i2++) {
                    var doneVar = flags.done_vars[i2];
                    for (var j = 0, jlen = state2.tmp.done_vars.length; j < jlen; j++) {
                      if (state2.tmp.done_vars[j] === doneVar) {
                        state2.tmp.done_vars = state2.tmp.done_vars.slice(0, j).concat(state2.tmp.done_vars.slice(j + 1));
                      }
                    }
                  }
                }
                if (state2.output.current.value().blobs) {
                  state2.output.current.value().blobs.pop();
                }
              }
            }
          };
          this.execs.push(func);
          if (this.juris) {
            var else_end = new CSL.Token("else", CSL.END);
            CSL.Node["else"].build.call(else_end, state, target);
            var choose_end = new CSL.Token("choose", CSL.END);
            CSL.Node.choose.build.call(choose_end, state, target);
          }
        }
        if (this.tokentype === CSL.END) {
          if (!this.juris) {
            target.push(this);
          }
          if (state.build.substitute_level.value()) {
            state.build.substitute_level.replace(state.build.substitute_level.value() - 1);
          }
          CSL.Util.substituteEnd.call(this, state, target);
        }
      }
    };
    CSL.Node["if"] = {
      build: function(state, target) {
        CSL.Conditions.TopNode.call(this, state, target);
        target.push(this);
      },
      configure: function(state, pos) {
        CSL.Conditions.Configure.call(this, state, pos);
      }
    };
    CSL.Node["conditions"] = {
      build: function(state) {
        if (this.tokentype === CSL.START) {
          state.tmp.conditions.addMatch(this.match);
        }
        if (this.tokentype === CSL.END) {
          state.tmp.conditions.matchCombine();
        }
      }
    };
    CSL.Node["condition"] = {
      build: function(state) {
        if (this.tokentype === CSL.SINGLETON) {
          var test2 = state.fun.match[this.match](this, state, this.tests);
          state.tmp.conditions.addTest(test2);
        }
      }
    };
    CSL.Conditions = {};
    CSL.Conditions.TopNode = function(state) {
      var func;
      if (this.tokentype === CSL.START || this.tokentype === CSL.SINGLETON) {
        if (this.locale) {
          state.opt.lang = this.locale;
        }
        if (!this.tests || !this.tests.length) {
          state.tmp.conditions = new CSL.Conditions.Engine(state, this);
        } else {
          this.test = state.fun.match[this.match](this, state, this.tests);
        }
        if (state.build.substitute_level.value() === 0) {
          func = function(state2) {
            state2.tmp.condition_counter++;
          };
          this.execs.push(func);
        }
      }
      if (this.tokentype === CSL.END || this.tokentype === CSL.SINGLETON) {
        if (state.build.substitute_level.value() === 0) {
          func = function(state2) {
            state2.tmp.condition_counter--;
            if (state2.tmp.condition_lang_counter_arr.length > 0) {
              var counter = state2.tmp.condition_lang_counter_arr.slice(-1)[0];
              if (counter === state2.tmp.condition_counter) {
                state2.opt.lang = state2.tmp.condition_lang_val_arr.pop();
                state2.tmp.condition_lang_counter_arr.pop();
              }
            }
            if (this.locale_default) {
              state2.output.current.value().old_locale = this.locale_default;
              state2.output.closeLevel("empty");
              state2.opt.lang = this.locale_default;
            }
          };
          this.execs.push(func);
        }
        func = function(state2) {
          var next = this[state2.tmp.jump.value()];
          return next;
        };
        this.execs.push(func);
        if (this.locale_default) {
          state.opt.lang = this.locale_default;
        }
      }
    };
    CSL.Conditions.Configure = function(state, pos) {
      if (this.tokentype === CSL.START) {
        this.fail = state.configure.fail.slice(-1)[0];
        this.succeed = this.next;
        state.configure.fail[state.configure.fail.length - 1] = pos;
      } else if (this.tokentype === CSL.SINGLETON) {
        this.fail = this.next;
        this.succeed = state.configure.succeed.slice(-1)[0];
        state.configure.fail[state.configure.fail.length - 1] = pos;
      } else {
        this.succeed = state.configure.succeed.slice(-1)[0];
        this.fail = this.next;
      }
    };
    CSL.Conditions.Engine = function(state, token) {
      this.token = token;
      this.state = state;
    };
    CSL.Conditions.Engine.prototype.addTest = function(test2) {
      this.token.tests ? {} : this.token.tests = [];
      this.token.tests.push(test2);
    };
    CSL.Conditions.Engine.prototype.addMatch = function(match3) {
      this.token.match = match3;
    };
    CSL.Conditions.Engine.prototype.matchCombine = function() {
      this.token.test = this.state.fun.match[this.token.match](this.token, this.state, this.token.tests);
    };
    CSL.Node.info = {
      build: function(state) {
        if (this.tokentype === CSL.START) {
          state.build.skip = "info";
        } else {
          state.build.skip = false;
        }
      }
    };
    CSL.Node.institution = {
      build: function(state, target) {
        if ([CSL.SINGLETON, CSL.START].indexOf(this.tokentype) > -1) {
          var func = function(state2) {
            if ("string" === typeof this.strings.delimiter) {
              state2.tmp.institution_delimiter = this.strings.delimiter;
            } else {
              state2.tmp.institution_delimiter = state2.tmp.name_delimiter;
            }
            if ("text" === state2.inheritOpt(this, "and")) {
              this.and_term = state2.getTerm("and", "long", 0);
            } else if ("symbol" === state2.inheritOpt(this, "and")) {
              if (state2.opt.development_extensions.expect_and_symbol_form) {
                this.and_term = state2.getTerm("and", "symbol", 0);
              } else {
                this.and_term = "&";
              }
            } else if ("none" === state2.inheritOpt(this, "and")) {
              this.and_term = state2.tmp.institution_delimiter;
            }
            if ("undefined" === typeof this.and_term && state2.tmp.and_term) {
              this.and_term = state2.tmp.and_term;
            }
            if (CSL.STARTSWITH_ROMANESQUE_REGEXP.test(this.and_term)) {
              this.and_prefix_single = " ";
              this.and_prefix_multiple = ", ";
              if ("string" === typeof state2.tmp.institution_delimiter) {
                this.and_prefix_multiple = state2.tmp.institution_delimiter;
              }
              this.and_suffix = " ";
            } else {
              this.and_prefix_single = "";
              this.and_prefix_multiple = "";
              this.and_suffix = "";
            }
            if (state2.inheritOpt(this, "delimiter-precedes-last") === "always") {
              this.and_prefix_single = state2.tmp.institution_delimiter;
            } else if (state2.inheritOpt(this, "delimiter-precedes-last") === "never") {
              if (this.and_prefix_multiple) {
                this.and_prefix_multiple = " ";
              }
            }
            this.and = {};
            if ("undefined" !== typeof this.and_term) {
              state2.output.append(this.and_term, "empty", true);
              this.and.single = state2.output.pop();
              this.and.single.strings.prefix = this.and_prefix_single;
              this.and.single.strings.suffix = this.and_suffix;
              state2.output.append(this.and_term, "empty", true);
              this.and.multiple = state2.output.pop();
              this.and.multiple.strings.prefix = this.and_prefix_multiple;
              this.and.multiple.strings.suffix = this.and_suffix;
            } else if ("undefined" !== this.strings.delimiter) {
              this.and.single = new CSL.Blob(state2.tmp.institution_delimiter);
              this.and.single.strings.prefix = "";
              this.and.single.strings.suffix = "";
              this.and.multiple = new CSL.Blob(state2.tmp.institution_delimiter);
              this.and.multiple.strings.prefix = "";
              this.and.multiple.strings.suffix = "";
            }
            state2.nameOutput.institution = this;
          };
          this.execs.push(func);
        }
        target.push(this);
      },
      configure: function(state) {
        if ([CSL.SINGLETON, CSL.START].indexOf(this.tokentype) > -1) {
          state.build.has_institution = true;
        }
      }
    };
    CSL.Node["institution-part"] = {
      build: function(state, target) {
        var func;
        if ("long" === this.strings.name) {
          if (this.strings["if-short"]) {
            func = function(state2) {
              state2.nameOutput.institutionpart["long-with-short"] = this;
            };
          } else {
            func = function(state2) {
              state2.nameOutput.institutionpart["long"] = this;
            };
          }
        } else if ("short" === this.strings.name) {
          func = function(state2) {
            state2.nameOutput.institutionpart["short"] = this;
          };
        }
        this.execs.push(func);
        target.push(this);
      }
    };
    CSL.Node.key = {
      build: function(state, target) {
        target = state[state.build.root + "_sort"].tokens;
        var func;
        var debug = false;
        var start_key = new CSL.Token("key", CSL.START);
        state.tmp.root = state.build.root;
        start_key.strings["et-al-min"] = state.inheritOpt(this, "et-al-min");
        start_key.strings["et-al-use-first"] = state.inheritOpt(this, "et-al-use-first");
        start_key.strings["et-al-use-last"] = state.inheritOpt(this, "et-al-use-last");
        func = function(state2) {
          state2.tmp.done_vars = [];
        };
        start_key.execs.push(func);
        func = function(state2) {
          state2.output.openLevel("empty");
        };
        start_key.execs.push(func);
        var sort_direction = [];
        if (this.strings.sort_direction === CSL.DESCENDING) {
          sort_direction.push(1);
          sort_direction.push(-1);
        } else {
          sort_direction.push(-1);
          sort_direction.push(1);
        }
        state[state.build.area].opt.sort_directions.push(sort_direction);
        if (CSL.DATE_VARIABLES.indexOf(this.variables[0]) > -1) {
          state.build.date_key = true;
        }
        func = function(state2) {
          state2.tmp.sort_key_flag = true;
          if (state2.inheritOpt(this, "et-al-min")) {
            state2.tmp["et-al-min"] = state2.inheritOpt(this, "et-al-min");
          }
          if (state2.inheritOpt(this, "et-al-use-first")) {
            state2.tmp["et-al-use-first"] = state2.inheritOpt(this, "et-al-use-first");
          }
          if ("boolean" === typeof state2.inheritOpt(this, "et-al-use-last")) {
            state2.tmp["et-al-use-last"] = state2.inheritOpt(this, "et-al-use-last");
          }
        };
        start_key.execs.push(func);
        target.push(start_key);
        if (this.variables.length) {
          var variable = this.variables[0];
          if (CSL.NAME_VARIABLES.indexOf(variable) > -1) {
            var names_start_token = new CSL.Token("names", CSL.START);
            names_start_token.tokentype = CSL.START;
            names_start_token.variables = this.variables;
            CSL.Node.names.build.call(names_start_token, state, target);
            var name_token = new CSL.Token("name", CSL.SINGLETON);
            name_token.tokentype = CSL.SINGLETON;
            name_token.strings["name-as-sort-order"] = "all";
            name_token.strings["sort-separator"] = " ";
            name_token.strings["et-al-use-last"] = state.inheritOpt(this, "et-al-use-last");
            name_token.strings["et-al-min"] = state.inheritOpt(this, "et-al-min");
            name_token.strings["et-al-use-first"] = state.inheritOpt(this, "et-al-use-first");
            CSL.Node.name.build.call(name_token, state, target);
            var institution_token = new CSL.Token("institution", CSL.SINGLETON);
            institution_token.tokentype = CSL.SINGLETON;
            CSL.Node.institution.build.call(institution_token, state, target);
            var names_end_token = new CSL.Token("names", CSL.END);
            names_end_token.tokentype = CSL.END;
            CSL.Node.names.build.call(names_end_token, state, target);
          } else {
            var single_text = new CSL.Token("text", CSL.SINGLETON);
            single_text.strings.sort_direction = this.strings.sort_direction;
            single_text.dateparts = this.dateparts;
            if (CSL.NUMERIC_VARIABLES.indexOf(variable) > -1) {
              if (variable === "citation-number") {
                func = function(state2, Item) {
                  if (state2.tmp.area === "bibliography_sort") {
                    if (this.strings.sort_direction === CSL.DESCENDING) {
                      state2.bibliography_sort.opt.citation_number_sort_direction = CSL.DESCENDING;
                    } else {
                      state2.bibliography_sort.opt.citation_number_sort_direction = CSL.ASCENDING;
                    }
                  }
                  if (state2.tmp.area === "citation_sort" && state2.bibliography_sort.tmp.citation_number_map) {
                    var num = state2.bibliography_sort.tmp.citation_number_map[state2.registry.registry[Item.id].seq];
                  } else {
                    var num = state2.registry.registry[Item.id].seq;
                  }
                  if (num) {
                    num = CSL.Util.padding("" + num);
                  }
                  state2.output.append(num, this);
                };
              } else {
                func = function(state2, Item) {
                  var num = false;
                  num = Item[variable];
                  if (num) {
                    num = CSL.Util.padding(num);
                  }
                  state2.output.append(num, this);
                };
              }
            } else if (variable === "citation-label") {
              func = function(state2, Item) {
                var trigraph = state2.getCitationLabel(Item);
                state2.output.append(trigraph, this);
              };
            } else if (CSL.DATE_VARIABLES.indexOf(variable) > -1) {
              func = CSL.dateAsSortKey;
              single_text.variables = this.variables;
            } else if ("title" === variable) {
              var abbrevfam = "title";
              var abbrfall = false;
              var altvar = false;
              var transfall = true;
              func = state.transform.getOutputFunction(this.variables, abbrevfam, abbrfall, altvar, transfall);
            } else if ("court-class" === variable) {
              func = function(state2, Item, item) {
                CSL.INIT_JURISDICTION_MACROS(state2, Item, item, "juris-main");
                var cls = CSL.GET_COURT_CLASS(state2, Item, true);
                state2.output.append(cls, "empty");
              };
            } else {
              func = function(state2, Item) {
                var varval = Item[variable];
                state2.output.append(varval, "empty");
              };
            }
            single_text.execs.push(func);
            target.push(single_text);
          }
        } else {
          var token = new CSL.Token("text", CSL.SINGLETON);
          token.strings.sort_direction = this.strings.sort_direction;
          token.postponed_macro = this.postponed_macro;
          CSL.expandMacro.call(state, token, target);
        }
        var end_key = new CSL.Token("key", CSL.END);
        func = function(state2) {
          var keystring = state2.output.string(state2, state2.output.queue);
          if (state2.sys.normalizeUnicode) {
            keystring = state2.sys.normalizeUnicode(keystring);
          }
          keystring = keystring ? keystring.split(" ").join(state2.opt.sort_sep) + state2.opt.sort_sep : "";
          if (debug) {
            CSL.debug("keystring: " + keystring + " " + typeof keystring);
          }
          if ("" === keystring) {
            keystring = void 0;
          }
          if ("string" !== typeof keystring) {
            keystring = void 0;
          }
          state2[state2[state2.tmp.area].root + "_sort"].keys.push(keystring);
          state2.tmp.value = [];
        };
        end_key.execs.push(func);
        if (state.build.date_key) {
          if (state.build.area === "citation" && state.build.extension === "_sort") {
            state[state.build.area].opt.sort_directions.push([-1, 1]);
            func = function(state2, Item) {
              var year_suffix = state2.registry.registry[Item.id].disambig.year_suffix;
              if (!year_suffix) {
                year_suffix = 0;
              }
              var key2 = CSL.Util.padding("" + year_suffix);
              state2[state2.tmp.area].keys.push(key2);
            };
            end_key.execs.push(func);
          }
          state.build.date_key = false;
        }
        func = function(state2) {
          state2.tmp["et-al-min"] = void 0;
          state2.tmp["et-al-use-first"] = void 0;
          state2.tmp["et-al-use-last"] = void 0;
          state2.tmp.sort_key_flag = false;
        };
        end_key.execs.push(func);
        target.push(end_key);
      }
    };
    CSL.Node.label = {
      build: function(state, target) {
        if (this.strings.term) {
          var func = function(state2, Item, item) {
            var termtxt = CSL.evaluateLabel(this, state2, Item, item);
            if (item && this.strings.term === "locator") {
              item.section_form_override = this.strings.form;
            }
            if (termtxt) {
              state2.tmp.group_context.tip.term_intended = true;
            }
            CSL.UPDATE_GROUP_CONTEXT_CONDITION(state2, termtxt, null, this);
            if (termtxt.indexOf("%s") === -1) {
              if (this.strings.capitalize_if_first) {
                if (!state2.tmp.term_predecessor && !(state2.opt["class"] === "in-text" && state2.tmp.area === "citation")) {
                  termtxt = CSL.Output.Formatters["capitalize-first"](state2, termtxt);
                }
              }
              state2.output.append(termtxt, this);
            }
          };
          this.execs.push(func);
        } else {
          if (!this.strings.form) {
            this.strings.form = "long";
          }
          var namevars = state.build.names_variables[state.build.names_variables.length - 1];
          var namelabels = state.build.name_label[state.build.name_label.length - 1];
          for (var i2 = 0, ilen = namevars.length; i2 < ilen; i2 += 1) {
            if (!namelabels[namevars[i2]]) {
              namelabels[namevars[i2]] = {};
            }
          }
          if (!state.build.name_flag) {
            for (var i2 = 0, ilen = namevars.length; i2 < ilen; i2 += 1) {
              namelabels[namevars[i2]].before = this;
            }
          } else {
            for (var i2 = 0, ilen = namevars.length; i2 < ilen; i2 += 1) {
              namelabels[namevars[i2]].after = this;
            }
          }
        }
        target.push(this);
      }
    };
    CSL.Node.layout = {
      build: function(state, target) {
        var func, prefix_token, suffix_token, tok;
        function setSuffix() {
          if (state.build.area === "bibliography") {
            suffix_token = new CSL.Token("text", CSL.SINGLETON);
            func = function(state2) {
              if (!state2.tmp.parallel_and_not_last) {
                var suffix;
                if (state2.tmp.cite_affixes[state2.tmp.area][state2.tmp.last_cite_locale]) {
                  suffix = state2.tmp.cite_affixes[state2.tmp.area][state2.tmp.last_cite_locale].suffix;
                } else {
                  suffix = state2.bibliography.opt.layout_suffix;
                }
                var topblob = state2.output.current.value();
                if (state2.opt.using_display) {
                  topblob.blobs[topblob.blobs.length - 1].strings.suffix = suffix;
                } else {
                  topblob.strings.suffix = suffix;
                }
              }
              if (state2.bibliography.opt["second-field-align"]) {
                state2.output.endTag("bib_other");
              }
            };
            suffix_token.execs.push(func);
            target.push(suffix_token);
          }
        }
        if (this.tokentype === CSL.START) {
          if (this.locale_raw) {
            state.build.current_default_locale = this.locale_raw;
          } else {
            state.build.current_default_locale = state.opt["default-locale"];
          }
          func = function(state2, Item, item) {
            if (state2.opt.development_extensions.apply_citation_wrapper && state2.sys.wrapCitationEntry && !state2.tmp.just_looking && Item.system_id && state2.tmp.area === "citation") {
              var cite_entry = new CSL.Token("group", CSL.START);
              cite_entry.decorations = [["@cite", "entry"]];
              state2.output.startTag("cite_entry", cite_entry);
              state2.output.current.value().item_id = Item.system_id;
              if (item) {
                state2.output.current.value().locator_txt = item.locator_txt;
                state2.output.current.value().suffix_txt = item.suffix_txt;
              }
            }
          };
          this.execs.push(func);
        }
        if (this.tokentype === CSL.START && !state.tmp.cite_affixes[state.build.area]) {
          func = function(state2, Item, item) {
            state2.tmp.done_vars = [];
            if (item && item["author-only"]) {
              state2.tmp.done_vars.push("locator");
            }
            if (state2.opt.suppressedJurisdictions[Item["country"]] && Item["country"] && ["treaty", "patent"].indexOf(Item.type) === -1) {
              state2.tmp.done_vars.push("country");
            }
            if (!state2.tmp.just_looking && state2.registry.registry[Item.id] && state2.registry.registry[Item.id].parallel) {
              state2.tmp.done_vars.push("first-reference-note-number");
            }
            if (!state2.tmp.just_looking && state2.tmp.abbrev_trimmer && Item.jurisdiction) {
              for (var field in state2.tmp.abbrev_trimmer.QUASHES[Item.jurisdiction]) {
                state2.tmp.done_vars.push(field);
              }
            }
            state2.tmp.rendered_name = false;
          };
          this.execs.push(func);
          func = function(state2) {
            state2.tmp.sort_key_flag = false;
          };
          this.execs.push(func);
          func = function(state2) {
            state2.tmp.nameset_counter = 0;
          };
          this.execs.push(func);
          func = function(state2, Item) {
            var tok2 = new CSL.Token();
            state2.output.openLevel(tok2);
          };
          this.execs.push(func);
          target.push(this);
          if (state.build.area === "citation") {
            prefix_token = new CSL.Token("text", CSL.SINGLETON);
            func = function(state2, Item, item) {
              if (item && item.prefix) {
                var prefix2 = CSL.checkPrefixSpaceAppend(state2, item.prefix);
                if (!state2.tmp.just_looking) {
                  prefix2 = state2.output.checkNestedBrace.update(prefix2);
                }
                var ignorePredecessor = CSL.checkIgnorePredecessor(state2, prefix2);
                state2.output.append(prefix2, this, false, ignorePredecessor);
              }
            };
            prefix_token.execs.push(func);
            target.push(prefix_token);
          }
        }
        var my_tok;
        if (this.locale_raw) {
          my_tok = new CSL.Token("dummy", CSL.START);
          my_tok.locale = this.locale_raw;
          my_tok.strings.delimiter = this.strings.delimiter;
          my_tok.strings.suffix = this.strings.suffix;
          if (!state.tmp.cite_affixes[state.build.area]) {
            state.tmp.cite_affixes[state.build.area] = {};
          }
        }
        if (this.tokentype === CSL.START) {
          state.build.layout_flag = true;
          if (!this.locale_raw) {
            state[state.tmp.area].opt.topdecor = [this.decorations];
            state[state.tmp.area + "_sort"].opt.topdecor = [this.decorations];
            state[state.build.area].opt.layout_prefix = this.strings.prefix;
            state[state.build.area].opt.layout_suffix = this.strings.suffix;
            state[state.build.area].opt.layout_delimiter = this.strings.delimiter;
            state[state.build.area].opt.layout_decorations = this.decorations;
            if (state.tmp.cite_affixes[state.build.area]) {
              tok = new CSL.Token("else", CSL.START);
              CSL.Node["else"].build.call(tok, state, target);
            }
          }
          if (this.locale_raw) {
            if (!state.build.layout_locale_flag) {
              var choose_tok = new CSL.Token("choose", CSL.START);
              CSL.Node.choose.build.call(choose_tok, state, target);
              my_tok.name = "if";
              CSL.Attributes["@locale-internal"].call(my_tok, state, this.locale_raw);
              CSL.Node["if"].build.call(my_tok, state, target);
            } else {
              my_tok.name = "else-if";
              CSL.Attributes["@locale-internal"].call(my_tok, state, this.locale_raw);
              CSL.Node["else-if"].build.call(my_tok, state, target);
            }
            state.tmp.cite_affixes[state.build.area][my_tok.locale] = {};
            state.tmp.cite_affixes[state.build.area][my_tok.locale].delimiter = this.strings.delimiter;
            state.tmp.cite_affixes[state.build.area][my_tok.locale].suffix = this.strings.suffix;
          }
        }
        if (this.tokentype === CSL.END) {
          if (this.locale_raw) {
            setSuffix();
            if (!state.build.layout_locale_flag) {
              my_tok.name = "if";
              my_tok.tokentype = CSL.END;
              CSL.Attributes["@locale-internal"].call(my_tok, state, this.locale_raw);
              CSL.Node["if"].build.call(my_tok, state, target);
              state.build.layout_locale_flag = true;
            } else {
              my_tok.name = "else-if";
              my_tok.tokentype = CSL.END;
              CSL.Attributes["@locale-internal"].call(my_tok, state, this.locale_raw);
              CSL.Node["else-if"].build.call(my_tok, state, target);
            }
          }
          if (!this.locale_raw) {
            setSuffix();
            if (state.tmp.cite_affixes[state.build.area]) {
              if (state.build.layout_locale_flag) {
                tok = new CSL.Token("else", CSL.END);
                CSL.Node["else"].build.call(tok, state, target);
                tok = new CSL.Token("choose", CSL.END);
                CSL.Node.choose.build.call(tok, state, target);
              }
            }
            state.build_layout_locale_flag = true;
            if (state.build.area === "citation") {
              suffix_token = new CSL.Token("text", CSL.SINGLETON);
              func = function(state2, Item, item) {
                var sp;
                if (item && item.suffix) {
                  var suffix = CSL.checkSuffixSpacePrepend(state2, item.suffix);
                  if (!state2.tmp.just_looking) {
                    suffix = state2.output.checkNestedBrace.update(suffix);
                  }
                  state2.output.append(suffix, this);
                }
              };
              suffix_token.execs.push(func);
              target.push(suffix_token);
            }
            func = function(state2) {
              state2.output.closeLevel();
            };
            this.execs.push(func);
            func = function(state2, Item) {
              if (state2.opt.development_extensions.apply_citation_wrapper && state2.sys.wrapCitationEntry && !state2.tmp.just_looking && Item.system_id && state2.tmp.area === "citation") {
                state2.output.endTag();
              }
            };
            this.execs.push(func);
            target.push(this);
            state.build.layout_flag = false;
            state.build.layout_locale_flag = false;
          }
        }
      }
    };
    CSL.Node.macro = {
      build: function() {
      }
    };
    CSL.Node.alternative = {
      build: function(state, target) {
        if (this.tokentype === CSL.START) {
          var choose_tok = new CSL.Token("choose", CSL.START);
          CSL.Node["choose"].build.call(choose_tok, state, target);
          var if_tok = new CSL.Token("if", CSL.START);
          CSL.Attributes["@alternative-node-internal"].call(if_tok, state);
          CSL.Node["if"].build.call(if_tok, state, target);
          var func = function(state2, Item) {
            state2.tmp.oldItem = Item;
            state2.tmp.oldLang = state2.opt.lang;
            state2.tmp.abort_alternative = true;
            if (Item["language-name"] && Item["language-name-original"]) {
              var newItem = JSON.parse(JSON.stringify(Item));
              newItem.language = newItem["language-name"];
              var langspec = CSL.localeResolve(newItem.language, state2.opt["default-locale"][0]);
              if (state2.opt.multi_layout) {
                for (var i2 in state2.opt.multi_layout) {
                  var locale_list = state2.opt.multi_layout[i2];
                  var gotlang = false;
                  for (var j in locale_list) {
                    var tryspec = locale_list[j];
                    if (langspec.best === tryspec.best || langspec.base === tryspec.base || langspec.bare === tryspec.bare) {
                      gotlang = locale_list[0].best;
                      break;
                    }
                  }
                  if (!gotlang) {
                    gotlang = state2.opt["default-locale"][0];
                  }
                  state2.opt.lang = gotlang;
                }
              }
              for (var key2 in newItem) {
                if (["id", "type", "language", "multi"].indexOf(key2) === -1 && key2.slice(0, 4) !== "alt-") {
                  if (newItem.multi && newItem.multi._keys[key2]) {
                    var deleteme = true;
                    for (var lang in newItem.multi._keys[key2]) {
                      if (langspec.bare === lang.replace(/^([a-zA-Z]+).*/, "$1")) {
                        deleteme = false;
                        break;
                      }
                    }
                    if (deleteme) {
                      delete newItem[key2];
                    }
                  } else {
                    delete newItem[key2];
                  }
                }
              }
              for (var key2 in newItem) {
                if (key2.slice(0, 4) === "alt-") {
                  newItem[key2.slice(4)] = newItem[key2];
                  state2.tmp.abort_alternative = false;
                } else {
                  if (newItem.multi && newItem.multi._keys) {
                    if (!newItem["alt-" + key2] && newItem.multi._keys[key2]) {
                      if (newItem.multi._keys[key2][langspec.best]) {
                        newItem[key2] = newItem.multi._keys[key2][langspec.best];
                        state2.tmp.abort_alternative = false;
                      } else if (newItem.multi._keys[key2][langspec.base]) {
                        newItem[key2] = newItem.multi._keys[key2][langspec.base];
                        state2.tmp.abort_alternative = false;
                      } else if (newItem.multi._keys[key2][langspec.bare]) {
                        newItem[key2] = newItem.multi._keys[key2][langspec.bare];
                        state2.tmp.abort_alternative = false;
                      }
                    }
                  }
                }
              }
            }
            state2.output.openLevel(this);
            state2.registry.refhash[Item.id] = newItem;
            state2.nameOutput = new CSL.NameOutput(state2, newItem);
          };
          this.execs.push(func);
          target.push(this);
          var choose_tok = new CSL.Token("choose", CSL.START);
          CSL.Node["choose"].build.call(choose_tok, state, target);
          var if_tok = new CSL.Token("if", CSL.START);
          CSL.Attributes["@alternative-node-internal"].call(if_tok, state);
          var func = function(state2) {
            state2.tmp.abort_alternative = true;
          };
          if_tok.execs.push(func);
          CSL.Node["if"].build.call(if_tok, state, target);
        } else if (this.tokentype === CSL.END) {
          var if_tok = new CSL.Token("if", CSL.END);
          CSL.Node["if"].build.call(if_tok, state, target);
          var choose_tok = new CSL.Token("choose", CSL.END);
          CSL.Node["choose"].build.call(choose_tok, state, target);
          var func = function(state2, Item) {
            state2.output.closeLevel();
            state2.registry.refhash[Item.id] = state2.tmp.oldItem;
            state2.opt.lang = state2.tmp.oldLang;
            state2.nameOutput = new CSL.NameOutput(state2, state2.tmp.oldItem);
            state2.tmp.abort_alternative = false;
          };
          this.execs.push(func);
          target.push(this);
          var if_tok = new CSL.Token("if", CSL.END);
          CSL.Node["if"].build.call(if_tok, state, target);
          var choose_tok = new CSL.Token("choose", CSL.END);
          CSL.Node["choose"].build.call(choose_tok, state, target);
        }
      }
    };
    CSL.Node["alternative-text"] = {
      build: function(state, target) {
        if (this.tokentype === CSL.SINGLETON) {
          var func = function(state2, Item) {
            var Item = state2.refetchItem(Item.id);
            CSL.getCite.call(state2, Item);
          };
          this.execs.push(func);
        }
        target.push(this);
      }
    };
    CSL.NameOutput = function(state, Item, item) {
      this.debug = false;
      this.state = state;
      if (this.debug) {
        this.state.sys.print("(1)");
      }
      this.Item = Item;
      this.item = item;
      this.nameset_base = 0;
      this.etal_spec = {};
      this._first_creator_variable = false;
      this._please_chop = false;
    };
    CSL.NameOutput.prototype.init = function(names) {
      this.requireMatch = names.requireMatch;
      if (this.state.tmp.term_predecessor) {
        this.state.tmp.subsequent_author_substitute_ok = false;
      }
      if (this.nameset_offset) {
        this.nameset_base = this.nameset_base + this.nameset_offset;
      }
      this.nameset_offset = 0;
      this.names = names;
      this.variables = names.variables;
      this.state.tmp.value = [];
      this.state.tmp.rendered_name = [];
      this.state.tmp.label_blob = false;
      this.state.tmp.etal_node = false;
      this.state.tmp.etal_term = false;
      for (var i2 = 0, ilen = this.variables.length; i2 < ilen; i2 += 1) {
        if (this.Item[this.variables[i2]] && this.Item[this.variables[i2]].length) {
          this.state.tmp.value = this.state.tmp.value.concat(this.Item[this.variables[i2]]);
        }
      }
      this["et-al"] = void 0;
      this["with"] = void 0;
      this.name = void 0;
      this.institutionpart = {};
      this.state.tmp.group_context.tip.variable_attempt = true;
      this.labelVariable = this.variables[0];
      if (!this.state.tmp.value.length) {
        return;
      }
      var checkCommonTerm = this.checkCommonAuthor(this.requireMatch);
      if (checkCommonTerm) {
        this.state.tmp.can_substitute.pop();
        this.state.tmp.can_substitute.push(true);
        for (var i2 in this.variables) {
          var idx = this.state.tmp.done_vars.indexOf(this.variables[i2]);
          if (idx > -1) {
            this.state.tmp.done_vars = this.state.tmp.done_vars.slice(0, idx).concat(this.state.tmp.done_vars.slice(i2 + 1));
          }
        }
        this.state.tmp.common_term_match_fail = true;
        this.variables = [];
      }
    };
    CSL.NameOutput.prototype.reinit = function(names, labelVariable) {
      this.requireMatch = names.requireMatch;
      this.labelVariable = labelVariable;
      if (this.state.tmp.can_substitute.value()) {
        this.nameset_offset = 0;
        this.variables = names.variables;
        var oldval = this.state.tmp.value.slice();
        this.state.tmp.value = [];
        for (var i2 = 0, ilen = this.variables.length; i2 < ilen; i2 += 1) {
          if (this.Item[this.variables[i2]] && this.Item[this.variables[i2]].length) {
            this.state.tmp.value = this.state.tmp.value.concat(this.Item[this.variables[i2]]);
          }
        }
        if (this.state.tmp.value.length) {
          this.state.tmp.can_substitute.replace(false, CSL.LITERAL);
        }
        this.state.tmp.value = oldval;
      }
      var checkCommonTerm = this.checkCommonAuthor(this.requireMatch);
      if (checkCommonTerm) {
        this.state.tmp.can_substitute.pop();
        this.state.tmp.can_substitute.push(true);
        for (var i2 in this.variables) {
          var idx = this.state.tmp.done_vars.indexOf(this.variables[i2]);
          if (idx > -1) {
            this.state.tmp.done_vars = this.state.tmp.done_vars.slice(0, idx).concat(this.state.tmp.done_vars.slice(i2 + 1));
          }
        }
        this.variables = [];
      }
    };
    CSL.NameOutput.prototype.outputNames = function() {
      var i2, ilen;
      var variables = this.variables;
      if (this.institution.and) {
        if (!this.institution.and.single.blobs || !this.institution.and.single.blobs.length) {
          this.institution.and.single.blobs = this.name.and.single.blobs;
        }
        if (!this.institution.and.multiple.blobs || !this.institution.and.multiple.blobs.length) {
          this.institution.and.multiple.blobs = this.name.and.multiple.blobs;
        }
      }
      this.variable_offset = {};
      if (this.family) {
        this.family_decor = CSL.Util.cloneToken(this.family);
        this.family_decor.strings.prefix = "";
        this.family_decor.strings.suffix = "";
        for (i2 = 0, ilen = this.family.execs.length; i2 < ilen; i2 += 1) {
          this.family.execs[i2].call(this.family_decor, this.state, this.Item);
        }
      } else {
        this.family_decor = false;
      }
      if (this.given) {
        this.given_decor = CSL.Util.cloneToken(this.given);
        this.given_decor.strings.prefix = "";
        this.given_decor.strings.suffix = "";
        for (i2 = 0, ilen = this.given.execs.length; i2 < ilen; i2 += 1) {
          this.given.execs[i2].call(this.given_decor, this.state, this.Item);
        }
      } else {
        this.given_decor = false;
      }
      if (this.debug) {
        this.state.sys.print("(2)");
      }
      this.getEtAlConfig();
      if (this.debug) {
        this.state.sys.print("(3)");
      }
      this.divideAndTransliterateNames();
      if (this.debug) {
        this.state.sys.print("(4)");
      }
      this.truncatePersonalNameLists();
      if (this.debug) {
        this.state.sys.print("(5)");
      }
      if (this.debug) {
        this.state.sys.print("(6)");
      }
      this.disambigNames();
      this.constrainNames();
      if (this.debug) {
        this.state.sys.print("(7)");
      }
      if (this.name.strings.form === "count") {
        if (this.state.tmp.extension || this.names_count != 0) {
          this.state.output.append(this.names_count, "empty");
          this.state.tmp.group_context.tip.variable_success = true;
        }
        return;
      }
      if (this.debug) {
        this.state.sys.print("(8)");
      }
      this.setEtAlParameters();
      if (this.debug) {
        this.state.sys.print("(9)");
      }
      this.setCommonTerm(this.requireMatch);
      if (this.debug) {
        this.state.sys.print("(10)");
      }
      this.renderAllNames();
      if (this.debug) {
        this.state.sys.print("(11)");
      }
      var blob_list = [];
      for (i2 = 0, ilen = variables.length; i2 < ilen; i2 += 1) {
        var v = variables[i2];
        var institution_sets = [];
        var institutions = false;
        var varblob = null;
        if (!this.state.opt.development_extensions.spoof_institutional_affiliations) {
          varblob = this._join([this.freeters[v]], "");
        } else {
          if (this.debug) {
            this.state.sys.print("(11a)");
          }
          for (var j = 0, jlen = this.institutions[v].length; j < jlen; j += 1) {
            institution_sets.push(this.joinPersonsAndInstitutions([this.persons[v][j], this.institutions[v][j]]));
          }
          if (this.debug) {
            this.state.sys.print("(11b)");
          }
          if (this.institutions[v].length) {
            var pos = this.nameset_base + this.variable_offset[v];
            if (this.freeters[v].length) {
              pos += 1;
            }
            institutions = this.joinInstitutionSets(institution_sets, pos);
          }
          if (this.debug) {
            this.state.sys.print("(11c)");
          }
          var varblob = this.joinFreetersAndInstitutionSets([this.freeters[v], institutions]);
          if (this.debug) {
            this.state.sys.print("(11d)");
          }
        }
        if (varblob) {
          if (!this.state.tmp.extension) {
            varblob = this._applyLabels(varblob, v);
          }
          blob_list.push(varblob);
        }
        if (this.debug) {
          this.state.sys.print("(11e)");
        }
        if (this.common_term) {
          break;
        }
      }
      if (this.debug) {
        this.state.sys.print("(12)");
      }
      this.state.output.openLevel("empty");
      this.state.output.current.value().strings.delimiter = this.state.inheritOpt(this.names, "delimiter", "names-delimiter");
      if (this.debug) {
        this.state.sys.print("(13)");
      }
      for (i2 = 0, ilen = blob_list.length; i2 < ilen; i2 += 1) {
        this.state.output.append(blob_list[i2], "literal", true);
      }
      if (!this.state.tmp.just_looking && blob_list.length > 0) {
        this.state.tmp.probably_rendered_something = true;
      }
      if (this.debug) {
        this.state.sys.print("(14)");
      }
      this.state.output.closeLevel("empty");
      if (this.debug) {
        this.state.sys.print("(15)");
      }
      var blob = this.state.output.pop();
      this.state.tmp.name_node.top = blob;
      if (this.debug) {
        this.state.sys.print("(16)");
      }
      var namesToken = CSL.Util.cloneToken(this.names);
      if (this.state.tmp.group_context.tip.condition) {
        CSL.UPDATE_GROUP_CONTEXT_CONDITION(this.state, this.names.strings.prefix, null, this.names);
      }
      this.state.output.append(blob, namesToken);
      if (this.state.tmp.term_predecessor_name) {
        this.state.tmp.term_predecessor = true;
      }
      if (this.debug) {
        this.state.sys.print("(17)");
      }
      if (this.debug) {
        this.state.sys.print("(18)");
      }
      if (variables[0] !== "authority") {
        var name_node_string = [];
        var nameobjs = this.Item[variables[0]];
        if (nameobjs) {
          for (var i2 = 0, ilen = nameobjs.length; i2 < ilen; i2 += 1) {
            var substring = CSL.Util.Names.getRawName(nameobjs[i2]);
            if (substring) {
              name_node_string.push(substring);
            }
          }
        }
        name_node_string = name_node_string.join(", ");
        if (name_node_string) {
          this.state.tmp.name_node.string = name_node_string;
        }
      }
      if (this.state.tmp.name_node.string && !this.state.tmp.first_name_string) {
        this.state.tmp.first_name_string = this.state.tmp.name_node.string;
      }
      if ("classic" === this.Item.type) {
        if (this.state.tmp.first_name_string) {
          var author_title = [];
          author_title.push(this.state.tmp.first_name_string);
          if (this.Item.title) {
            author_title.push(this.Item.title);
          }
          author_title = author_title.join(", ");
          if (author_title && this.state.sys.getAbbreviation) {
            if (this.state.sys.normalizeAbbrevsKey) {
              author_title = this.state.sys.normalizeAbbrevsKey("classic", author_title);
            }
            this.state.transform.loadAbbreviation("default", "classic", author_title, this.Item.language);
            if (this.state.transform.abbrevs["default"].classic[author_title]) {
              this.state.tmp.done_vars.push("title");
              this.state.output.append(this.state.transform.abbrevs["default"].classic[author_title], "empty", true);
              blob = this.state.output.pop();
              this.state.tmp.name_node.top.blobs.pop();
              this.state.tmp.name_node.top.blobs.push(blob);
            }
          }
        }
      }
      this._collapseAuthor();
      this.variables = [];
      this.state.tmp.authority_stop_last = 0;
      if (this.debug) {
        this.state.sys.print("(19)");
      }
    };
    CSL.NameOutput.prototype._applyLabels = function(blob, v) {
      var txt;
      if (!this.label || !this.label[this.labelVariable]) {
        return blob;
      }
      var plural2 = 0;
      var num = this.freeters_count[v] + this.institutions_count[v];
      if (num > 1) {
        plural2 = 1;
      } else {
        for (var i2 = 0, ilen = this.persons[v].length; i2 < ilen; i2 += 1) {
          num += this.persons_count[v][i2];
        }
        if (num > 1) {
          plural2 = 1;
        }
      }
      if (this.label[this.labelVariable].before) {
        if ("number" === typeof this.label[this.labelVariable].before.strings.plural) {
          plural2 = this.label[this.labelVariable].before.strings.plural;
        }
        txt = this._buildLabel(v, plural2, "before", this.labelVariable);
        this.state.output.openLevel("empty");
        this.state.output.append(txt, this.label[this.labelVariable].before, true);
        this.state.output.append(blob, "literal", true);
        this.state.output.closeLevel("empty");
        blob = this.state.output.pop();
      } else if (this.label[this.labelVariable].after) {
        if ("number" === typeof this.label[this.labelVariable].after.strings.plural) {
          plural2 = this.label[this.labelVariable].after.strings.plural;
        }
        txt = this._buildLabel(v, plural2, "after", this.labelVariable);
        this.state.output.openLevel("empty");
        this.state.output.append(blob, "literal", true);
        this.state.output.append(txt, this.label[this.labelVariable].after, true);
        this.state.tmp.label_blob = this.state.output.pop();
        this.state.output.append(this.state.tmp.label_blob, "literal", true);
        this.state.output.closeLevel("empty");
        blob = this.state.output.pop();
      }
      return blob;
    };
    CSL.NameOutput.prototype._buildLabel = function(term, plural2, position6, v) {
      if (this.common_term) {
        term = this.common_term;
      }
      var ret = false;
      var node3 = this.label[v][position6];
      if (node3) {
        ret = CSL.castLabel(this.state, node3, term, plural2, CSL.TOLERANT);
      }
      return ret;
    };
    CSL.NameOutput.prototype._collapseAuthor = function() {
      var myqueue, mystr, oldchars;
      if (this.state.tmp.name_node.top.blobs.length === 0) {
        return;
      }
      if (this.nameset_base === 0 && this.Item[this.variables[0]] && !this._first_creator_variable) {
        this._first_creator_variable = this.variables[0];
      }
      if (this.state[this.state.tmp.area].opt.collapse && this.state[this.state.tmp.area].opt.collapse.length || this.state[this.state.tmp.area].opt.cite_group_delimiter && this.state[this.state.tmp.area].opt.cite_group_delimiter.length) {
        if (this.state.tmp.authorstring_request) {
          mystr = "";
          myqueue = this.state.tmp.name_node.top.blobs.slice(-1)[0].blobs;
          oldchars = this.state.tmp.offset_characters;
          if (myqueue) {
            mystr = this.state.output.string(this.state, myqueue, false);
          }
          this.state.tmp.offset_characters = oldchars;
          this.state.registry.authorstrings[this.Item.id] = mystr;
        } else if (!this.state.tmp.just_looking && !this.state.tmp.suppress_decorations && (this.state[this.state.tmp.area].opt.collapse && this.state[this.state.tmp.area].opt.collapse.length || this.state[this.state.tmp.area].opt.cite_group_delimiter && this.state[this.state.tmp.area].opt.cite_group_delimiter)) {
          mystr = "";
          myqueue = this.state.tmp.name_node.top.blobs.slice(-1)[0].blobs;
          oldchars = this.state.tmp.offset_characters;
          if (myqueue) {
            mystr = this.state.output.string(this.state, myqueue, false);
          }
          if (mystr === this.state.tmp.last_primary_names_string) {
            if (this.item["suppress-author"] || this.state[this.state.tmp.area].opt.collapse && this.state[this.state.tmp.area].opt.collapse.length) {
              this.state.tmp.name_node.top.blobs.pop();
              this.state.tmp.name_node.children = [];
              this.state.tmp.offset_characters = oldchars;
            }
            if (this.state[this.state.tmp.area].opt.cite_group_delimiter && this.state[this.state.tmp.area].opt.cite_group_delimiter) {
              this.state.tmp.use_cite_group_delimiter = true;
            }
          } else {
            this.state.tmp.last_primary_names_string = mystr;
            if (this.variables.indexOf(this._first_creator_variable) > -1 && this.item && this.item["suppress-author"] && this.Item.type !== "legal_case") {
              this.state.tmp.name_node.top.blobs.pop();
              this.state.tmp.name_node.children = [];
              this.state.tmp.offset_characters = oldchars;
              this.state.tmp.term_predecessor = false;
            }
            this.state.tmp.have_collapsed = false;
            if (this.state[this.state.tmp.area].opt.cite_group_delimiter && this.state[this.state.tmp.area].opt.cite_group_delimiter) {
              this.state.tmp.use_cite_group_delimiter = false;
            }
          }
        }
      }
    };
    CSL.NameOutput.prototype.isPerson = function(value) {
      if (value.literal || !value.given && value.family && value.isInstitution) {
        return false;
      } else {
        return true;
      }
    };
    CSL.NameOutput.prototype.truncatePersonalNameLists = function() {
      var v, i2, ilen, j, jlen, chopvar, values;
      this.freeters_count = {};
      this.persons_count = {};
      this.institutions_count = {};
      for (v in this.freeters) {
        if (this.freeters.hasOwnProperty(v)) {
          this.freeters_count[v] = this.freeters[v].length;
          this.freeters[v] = this._truncateNameList(this.freeters, v);
        }
      }
      for (v in this.persons) {
        if (this.persons.hasOwnProperty(v)) {
          this.institutions_count[v] = this.institutions[v].length;
          this._truncateNameList(this.institutions, v);
          this.persons[v] = this.persons[v].slice(0, this.institutions[v].length);
          this.persons_count[v] = [];
          for (j = 0, jlen = this.persons[v].length; j < jlen; j += 1) {
            this.persons_count[v][j] = this.persons[v][j].length;
            this.persons[v][j] = this._truncateNameList(this.persons, v, j);
          }
        }
      }
      if (this.state.opt.development_extensions.etal_min_etal_usefirst_hack && this.etal_min === 1 && this.etal_use_first === 1 && !(this.state.tmp.extension || this.state.tmp.just_looking)) {
        chopvar = v;
      } else {
        chopvar = false;
      }
      if (chopvar || this._please_chop) {
        for (i2 = 0, ilen = this.variables.length; i2 < ilen; i2 += 1) {
          v = this.variables[i2];
          if (this.freeters[v].length) {
            if (this._please_chop === v) {
              this.freeters[v] = this.freeters[v].slice(1);
              this.freeters_count[v] += -1;
              this._please_chop = false;
            } else if (chopvar && !this._please_chop) {
              this.freeters[v] = this.freeters[v].slice(0, 1);
              this.freeters_count[v] = 1;
              this.institutions[v] = [];
              this.persons[v] = [];
              this._please_chop = chopvar;
            }
          }
          for (var j = 0, jlen = this.persons[v].length; j < jlen; j++) {
            if (this.persons[v][j].length) {
              if (this._please_chop === v) {
                this.persons[v][j] = this.persons[v][j].slice(1);
                this.persons_count[v][j] += -1;
                this._please_chop = false;
                break;
              } else if (chopvar && !this._please_chop) {
                this.freeters[v] = this.persons[v][j].slice(0, 1);
                this.freeters_count[v] = 1;
                this.institutions[v] = [];
                this.persons[v] = [];
                values = [];
                this._please_chop = chopvar;
                break;
              }
            }
          }
          if (this.institutions[v].length) {
            if (this._please_chop === v) {
              this.institutions[v] = this.institutions[v].slice(1);
              this.institutions_count[v] += -1;
              this._please_chop = false;
            } else if (chopvar && !this._please_chop) {
              this.institutions[v] = this.institutions[v].slice(0, 1);
              this.institutions_count[v] = 1;
              values = [];
              this._please_chop = chopvar;
            }
          }
        }
      }
      for (i2 = 0, ilen = this.variables.length; i2 < ilen; i2 += 1) {
        if (this.institutions[v].length) {
          this.nameset_offset += 1;
        }
        for (var j = 0, jlen = this.persons[v].length; j < jlen; j++) {
          if (this.persons[v][j].length) {
            this.nameset_offset += 1;
          }
        }
      }
    };
    CSL.NameOutput.prototype._truncateNameList = function(container4, variable, index4) {
      var lst;
      if ("undefined" === typeof index4) {
        lst = container4[variable];
      } else {
        lst = container4[variable][index4];
      }
      if (this.state[this.state[this.state.tmp.area].root].opt.max_number_of_names && lst.length > 50 && lst.length > this.state[this.state[this.state.tmp.area].root].opt.max_number_of_names + 2) {
        var limit = this.state[this.state[this.state.tmp.area].root].opt.max_number_of_names;
        lst = lst.slice(0, limit + 1).concat(lst.slice(-1));
      }
      return lst;
    };
    CSL.NameOutput.prototype.divideAndTransliterateNames = function() {
      var i2, ilen, j, jlen;
      var Item = this.Item;
      var variables = this.variables;
      this.varnames = variables.slice();
      this.freeters = {};
      this.persons = {};
      this.institutions = {};
      for (i2 = 0, ilen = variables.length; i2 < ilen; i2 += 1) {
        var v = variables[i2];
        this.variable_offset[v] = this.nameset_offset;
        var values = this._normalizeVariableValue(Item, v);
        if (this.name.strings["suppress-min"] && values.length >= this.name.strings["suppress-min"]) {
          values = [];
        }
        if (this.name.strings["suppress-max"] && values.length <= this.name.strings["suppress-max"]) {
          values = [];
        }
        this._getFreeters(v, values);
        this._getPersonsAndInstitutions(v, values);
        if (this.state.opt.development_extensions.spoof_institutional_affiliations) {
          if (this.name.strings["suppress-min"] === 0) {
            this.freeters[v] = [];
            for (j = 0, jlen = this.persons[v].length; j < jlen; j += 1) {
              this.persons[v][j] = [];
            }
          } else if (this.institution.strings["suppress-min"] === 0) {
            this.institutions[v] = [];
            this.freeters[v] = this.freeters[v].concat(this.persons[v]);
            for (j = 0, jlen = this.persons[v].length; j < jlen; j += 1) {
              for (var k = 0, klen = this.persons[v][j].length; k < klen; k += 1) {
                this.freeters[v].push(this.persons[v][j][k]);
              }
            }
            this.persons[v] = [];
          }
        }
      }
    };
    CSL.NameOutput.prototype._normalizeVariableValue = function(Item, variable) {
      var names;
      if ("string" === typeof Item[variable] || "number" === typeof Item[variable]) {
        CSL.debug('name variable "' + variable + '" is string or number, not array. Attempting to fix.');
        names = [{ literal: Item[variable] + "" }];
      } else if (!Item[variable]) {
        names = [];
      } else if ("number" !== typeof Item[variable].length) {
        CSL.debug('name variable "' + variable + '" is object, not array. Attempting to fix.');
        Item[variable] = [Item[variable]];
        names = Item[variable].slice();
      } else {
        names = Item[variable].slice();
      }
      return names;
    };
    CSL.NameOutput.prototype._getFreeters = function(v, values) {
      this.freeters[v] = [];
      if (this.state.opt.development_extensions.spoof_institutional_affiliations) {
        for (var i2 = values.length - 1; i2 > -1; i2--) {
          if (this.isPerson(values[i2])) {
            var value = this._checkNickname(values.pop());
            if (value) {
              this.freeters[v].push(value);
            }
          } else {
            break;
          }
        }
      } else {
        for (var i2 = values.length - 1; i2 > -1; i2--) {
          var value = values.pop();
          if (this.isPerson(value)) {
            var value = this._checkNickname(value);
          }
          this.freeters[v].push(value);
        }
      }
      this.freeters[v].reverse();
      if (this.freeters[v].length) {
        this.nameset_offset += 1;
      }
    };
    CSL.NameOutput.prototype._getPersonsAndInstitutions = function(v, values) {
      this.persons[v] = [];
      this.institutions[v] = [];
      if (!this.state.opt.development_extensions.spoof_institutional_affiliations) {
        return;
      }
      var persons = [];
      var has_affiliates = false;
      var first2 = true;
      for (var i2 = values.length - 1; i2 > -1; i2 += -1) {
        if (this.isPerson(values[i2])) {
          var value = this._checkNickname(values[i2]);
          if (value) {
            persons.push(value);
          }
        } else {
          has_affiliates = true;
          this.institutions[v].push(values[i2]);
          if (!first2) {
            persons.reverse();
            this.persons[v].push(persons);
            persons = [];
          }
          first2 = false;
        }
      }
      if (has_affiliates) {
        persons.reverse();
        this.persons[v].push(persons);
        this.persons[v].reverse();
        this.institutions[v].reverse();
      }
    };
    CSL.NameOutput.prototype._clearValues = function(values) {
      for (var i2 = values.length - 1; i2 > -1; i2 += -1) {
        values.pop();
      }
    };
    CSL.NameOutput.prototype._checkNickname = function(name3) {
      if (["interview", "personal_communication"].indexOf(this.Item.type) > -1) {
        var author = "";
        author = CSL.Util.Names.getRawName(name3);
        if (author && this.state.sys.getAbbreviation && !(this.item && this.item["suppress-author"])) {
          var normalizedKey = author;
          if (this.state.sys.normalizeAbbrevsKey) {
            normalizedKey = this.state.sys.normalizeAbbrevsKey("author", author);
          }
          this.state.transform.loadAbbreviation("default", "nickname", normalizedKey, this.Item.language);
          var myLocalName = this.state.transform.abbrevs["default"].nickname[normalizedKey];
          if (myLocalName) {
            if (myLocalName === "!here>>>") {
              name3 = false;
            } else {
              name3 = { family: myLocalName, given: "" };
            }
          }
        }
      }
      return name3;
    };
    CSL.NameOutput.prototype._purgeEmptyBlobs = function(blobs) {
      for (var i2 = blobs.length - 1; i2 > -1; i2 += -1) {
        if (!blobs[i2] || blobs[i2].length === 0 || !blobs[i2].blobs.length) {
          blobs = blobs.slice(0, i2).concat(blobs.slice(i2 + 1));
        }
      }
      return blobs;
    };
    CSL.NameOutput.prototype.joinPersons = function(blobs, pos, j, tokenname) {
      var ret;
      blobs = this._purgeEmptyBlobs(blobs);
      if (!tokenname) {
        tokenname = "name";
      }
      if ("undefined" === typeof j) {
        if (this.etal_spec[pos].freeters === 1) {
          ret = this._joinEtAl(blobs);
        } else if (this.etal_spec[pos].freeters === 2) {
          ret = this._joinEllipsis(blobs);
        } else if (!this.state.tmp.sort_key_flag) {
          ret = this._joinAnd(blobs);
        } else {
          ret = this._join(blobs, this.state.inheritOpt(this.name, "delimiter", "name-delimiter", ", "));
        }
      } else {
        if (this.etal_spec[pos].persons[j] === 1) {
          ret = this._joinEtAl(blobs);
        } else if (this.etal_spec[pos].persons[j] === 2) {
          ret = this._joinEllipsis(blobs);
        } else if (!this.state.tmp.sort_key_flag) {
          ret = this._joinAnd(blobs);
        } else {
          ret = this._join(blobs, this.state.inheritOpt(this.name, "delimiter", "name-delimiter", ", "));
        }
      }
      return ret;
    };
    CSL.NameOutput.prototype.joinInstitutionSets = function(blobs, pos) {
      var ret;
      blobs = this._purgeEmptyBlobs(blobs);
      if (this.etal_spec[pos].institutions === 1) {
        ret = this._joinEtAl(blobs, "institution");
      } else if (this.etal_spec[pos].institutions === 2) {
        ret = this._joinEllipsis(blobs, "institution");
      } else {
        ret = this._joinAnd(blobs);
      }
      return ret;
    };
    CSL.NameOutput.prototype.joinPersonsAndInstitutions = function(blobs) {
      blobs = this._purgeEmptyBlobs(blobs);
      var ret = this._join(blobs, this.state.tmp.name_delimiter);
      ret.isInstitution = true;
      return ret;
    };
    CSL.NameOutput.prototype.joinFreetersAndInstitutionSets = function(blobs) {
      blobs = this._purgeEmptyBlobs(blobs);
      var ret = this._join(blobs, "[never here]", this["with"].single, this["with"].multiple);
      return ret;
    };
    CSL.NameOutput.prototype._getAfterInvertedName = function(blobs, delimiter2, finalJoin) {
      if (finalJoin && blobs.length > 1) {
        if (this.state.inheritOpt(this.name, "delimiter-precedes-last") === "after-inverted-name") {
          var prevBlob = blobs[blobs.length - 2];
          if (prevBlob.blobs.length > 0 && prevBlob.blobs[0].isInverted) {
            finalJoin.strings.prefix = delimiter2;
          }
        }
      }
      return finalJoin;
    };
    CSL.NameOutput.prototype._getAndJoin = function(blobs, delimiter2) {
      var finalJoin = false;
      if (blobs.length > 1) {
        var singleOrMultiple = "single";
        if (blobs.length > 2) {
          singleOrMultiple = "multiple";
        }
        if (blobs[blobs.length - 1].isInstitution) {
          finalJoin = this.institution.and[singleOrMultiple];
        } else {
          finalJoin = this.name.and[singleOrMultiple];
        }
        finalJoin = JSON.parse(JSON.stringify(finalJoin));
        finalJoin = this._getAfterInvertedName(blobs, delimiter2, finalJoin);
      }
      return finalJoin;
    };
    CSL.NameOutput.prototype._joinEtAl = function(blobs) {
      var delimiter2 = this.state.inheritOpt(this.name, "delimiter", "name-delimiter", ", ");
      var blob = this._join(blobs, delimiter2);
      this.state.output.openLevel(this._getToken("name"));
      this.state.output.current.value().strings.delimiter = "";
      this.state.output.append(blob, "literal", true);
      if (blobs.length > 1) {
        this.state.output.append(this["et-al"].multiple, "literal", true);
      } else if (blobs.length === 1) {
        this.state.output.append(this["et-al"].single, "literal", true);
      }
      this.state.output.closeLevel();
      return this.state.output.pop();
    };
    CSL.NameOutput.prototype._joinEllipsis = function(blobs) {
      var delimiter2 = this.state.inheritOpt(this.name, "delimiter", "name-delimiter", ", ");
      var finalJoin = false;
      if (blobs.length > 1) {
        var singleOrMultiple = "single";
        if (blobs.length > 2) {
          singleOrMultiple = "multiple";
        }
        finalJoin = JSON.parse(JSON.stringify(this.name.ellipsis[singleOrMultiple]));
        finalJoin = this._getAfterInvertedName(blobs, delimiter2, finalJoin);
      }
      return this._join(blobs, delimiter2, finalJoin);
    };
    CSL.NameOutput.prototype._joinAnd = function(blobs) {
      var delimiter2 = this.state.inheritOpt(this.name, "delimiter", "name-delimiter", ", ");
      var finalJoin = this._getAndJoin(blobs, delimiter2);
      return this._join(blobs, delimiter2, finalJoin);
    };
    CSL.NameOutput.prototype._join = function(blobs, delimiter2, finalJoin) {
      var i2, ilen;
      if (!blobs) {
        return false;
      }
      blobs = this._purgeEmptyBlobs(blobs);
      if (!blobs.length) {
        return false;
      }
      if (blobs.length > 1) {
        if (blobs.length === 2) {
          if (!finalJoin) {
            blobs[0].strings.suffix += delimiter2;
          } else {
            blobs = [blobs[0], finalJoin, blobs[1]];
          }
        } else {
          var offset;
          if (finalJoin) {
            offset = 1;
          } else {
            offset = 0;
          }
          var blob = blobs.pop();
          for (var i2 = 0, ilen = blobs.length - offset; i2 < ilen; i2++) {
            blobs[i2].strings.suffix += delimiter2;
          }
          blobs.push(finalJoin);
          blobs.push(blob);
        }
      }
      this.state.output.openLevel();
      for (i2 = 0, ilen = blobs.length; i2 < ilen; i2 += 1) {
        this.state.output.append(blobs[i2], false, true);
      }
      this.state.output.closeLevel();
      return this.state.output.pop();
    };
    CSL.NameOutput.prototype._getToken = function(tokenname) {
      var token = this[tokenname];
      if (tokenname === "institution") {
        var newtoken = new CSL.Token();
        return newtoken;
      }
      return token;
    };
    CSL.NameOutput.prototype.checkCommonAuthor = function(requireMatch) {
      if (!requireMatch) {
        return false;
      }
      var common_term = false;
      if (this.variables.length === 2) {
        var variables = this.variables;
        var varnames = variables.slice();
        varnames.sort();
        common_term = varnames.join("");
      }
      if (!common_term) {
        return false;
      }
      var has_term = false;
      if (this.state.locale[this.state.opt.lang].terms[common_term]) {
        has_term = true;
      }
      if (!has_term) {
        this.state.tmp.done_vars.push(this.variables[0]);
        this.state.tmp.done_vars.push(this.variables[1]);
        return false;
      }
      var firstSet = this.Item[this.variables[0]];
      var secondSet = this.Item[this.variables[1]];
      var perfectMatch = this._compareNamesets(firstSet, secondSet);
      if (perfectMatch === true) {
        this.state.tmp.done_vars.push(this.variables[0]);
        this.state.tmp.done_vars.push(this.variables[1]);
      }
      return !perfectMatch;
    };
    CSL.NameOutput.prototype.setCommonTerm = function() {
      var variables = this.variables;
      var varnames = variables.slice();
      varnames.sort();
      this.common_term = varnames.join("");
      if (!this.common_term) {
        return;
      }
      var has_term = false;
      if (this.label && this.label[this.variables[0]]) {
        if (this.label[this.variables[0]].before) {
          has_term = this.state.getTerm(this.common_term, this.label[this.variables[0]].before.strings.form, 0);
        } else if (this.label[this.variables[0]].after) {
          has_term = this.state.getTerm(this.common_term, this.label[this.variables[0]].after.strings.form, 0);
        }
      }
      if (!this.state.locale[this.state.opt.lang].terms[this.common_term] || !has_term || this.variables.length < 2) {
        this.common_term = false;
        return;
      }
      var freeters_offset = 0;
      for (var i2 = 0, ilen = this.variables.length - 1; i2 < ilen; i2 += 1) {
        var v = this.variables[i2];
        var vv = this.variables[i2 + 1];
        if (this.freeters[v].length || this.freeters[vv].length) {
          if (this.etal_spec[v].freeters !== this.etal_spec[vv].freeters || !this._compareNamesets(this.freeters[v], this.freeters[vv])) {
            this.common_term = false;
            return;
          }
          freeters_offset += 1;
        }
        if (this.persons[v].length !== this.persons[vv].length) {
          this.common_term = false;
          return;
        }
        for (var j = 0, jlen = this.persons[v].length; j < jlen; j += 1) {
          if (this.etal_spec[v].persons[j] !== this.etal_spec[vv].persons[j] || !this._compareNamesets(this.persons[v][j], this.persons[vv][j])) {
            this.common_term = false;
            return;
          }
        }
      }
    };
    CSL.NameOutput.prototype._compareNamesets = function(base_nameset, nameset) {
      if (!base_nameset || !nameset || base_nameset.length !== nameset.length) {
        return false;
      }
      for (var i2 = 0, ilen = nameset.length; i2 < ilen; i2 += 1) {
        for (var j = 0, jlen = CSL.NAME_PARTS.length; j < jlen; j += 1) {
          var part = CSL.NAME_PARTS[j];
          if (!base_nameset[i2] || base_nameset[i2][part] != nameset[i2][part]) {
            return false;
          }
        }
      }
      return true;
    };
    CSL.NameOutput.prototype.constrainNames = function() {
      this.names_count = 0;
      var pos;
      for (var i2 = 0, ilen = this.variables.length; i2 < ilen; i2 += 1) {
        var v = this.variables[i2];
        pos = this.nameset_base + i2;
        if (this.freeters[v].length) {
          this.state.tmp.names_max.push(this.freeters[v].length, "literal");
          this._imposeNameConstraints(this.freeters, this.freeters_count, v, pos);
          this.names_count += this.freeters[v].length;
        }
        if (this.institutions[v].length) {
          this.state.tmp.names_max.push(this.institutions[v].length, "literal");
          this._imposeNameConstraints(this.institutions, this.institutions_count, v, pos);
          this.persons[v] = this.persons[v].slice(0, this.institutions[v].length);
          this.names_count += this.institutions[v].length;
        }
        for (var j = 0, jlen = this.persons[v].length; j < jlen; j += 1) {
          if (this.persons[v][j].length) {
            this.state.tmp.names_max.push(this.persons[v][j].length, "literal");
            this._imposeNameConstraints(this.persons[v], this.persons_count[v], j, pos);
            this.names_count += this.persons[v][j].length;
          }
        }
      }
    };
    CSL.NameOutput.prototype._imposeNameConstraints = function(lst, count2, key2, pos) {
      var display_names = lst[key2];
      var discretionary_names_length = this.state.tmp["et-al-min"];
      if (this.state.tmp.suppress_decorations) {
        if (this.state.tmp.disambig_request && this.state.tmp.disambig_request.names[pos]) {
          discretionary_names_length = this.state.tmp.disambig_request.names[pos];
        } else if (count2[key2] >= this.etal_min) {
          discretionary_names_length = this.etal_use_first;
        }
      } else {
        if (this.state.tmp.disambig_request && this.state.tmp.disambig_request.names[pos] > this.etal_use_first) {
          if (count2[key2] < this.etal_min) {
            discretionary_names_length = count2[key2];
          } else {
            discretionary_names_length = this.state.tmp.disambig_request.names[pos];
          }
        } else if (count2[key2] >= this.etal_min) {
          discretionary_names_length = this.etal_use_first;
        }
        if (this.etal_use_last && discretionary_names_length > this.etal_min - 2) {
          discretionary_names_length = this.etal_min - 2;
        }
      }
      var sane = this.etal_min >= this.etal_use_first;
      var overlength = count2[key2] > discretionary_names_length;
      if (discretionary_names_length > count2[key2]) {
        discretionary_names_length = display_names.length;
      }
      if (sane && overlength) {
        if (this.etal_use_last) {
          lst[key2] = display_names.slice(0, discretionary_names_length).concat(display_names.slice(-1));
        } else {
          lst[key2] = display_names.slice(0, discretionary_names_length);
        }
      }
      this.state.tmp.disambig_settings.names[pos] = lst[key2].length;
      this.state.disambiguate.padBase(this.state.tmp.disambig_settings);
    };
    CSL.NameOutput.prototype.disambigNames = function() {
      var pos;
      for (var i2 = 0, ilen = this.variables.length; i2 < ilen; i2 += 1) {
        var v = this.variables[i2];
        pos = this.nameset_base + i2;
        if (this.freeters[v].length) {
          this._runDisambigNames(this.freeters[v], pos);
        }
        if (this.institutions[v].length) {
          if ("undefined" === typeof this.state.tmp.disambig_settings.givens[pos]) {
            this.state.tmp.disambig_settings.givens[pos] = [];
          }
          for (var j = 0, jlen = this.institutions[v].length; j < jlen; j += 1) {
            if ("undefined" === typeof this.state.tmp.disambig_settings.givens[pos][j]) {
              this.state.tmp.disambig_settings.givens[pos].push(2);
            }
          }
        }
        for (var j = 0, jlen = this.persons[v].length; j < jlen; j += 1) {
          if (this.persons[v][j].length) {
            this._runDisambigNames(this.persons[v][j], pos);
          }
        }
      }
    };
    CSL.NameOutput.prototype._runDisambigNames = function(lst, pos) {
      var chk, myform, myinitials, param, i2, ilen, paramx;
      for (i2 = 0, ilen = lst.length; i2 < ilen; i2 += 1) {
        if (!lst[i2].given && !lst[i2].family) {
          continue;
        }
        myinitials = this.state.inheritOpt(this.name, "initialize-with");
        this.state.registry.namereg.addname("" + this.Item.id, lst[i2], i2);
        chk = this.state.tmp.disambig_settings.givens[pos];
        if ("undefined" === typeof chk) {
          for (var j = 0, jlen = pos + 1; j < jlen; j += 1) {
            if (!this.state.tmp.disambig_settings.givens[j]) {
              this.state.tmp.disambig_settings.givens[j] = [];
            }
          }
        }
        chk = this.state.tmp.disambig_settings.givens[pos][i2];
        if ("undefined" === typeof chk) {
          myform = this.state.inheritOpt(this.name, "form", "name-form", "long");
          param = this.state.registry.namereg.evalname("" + this.Item.id, lst[i2], i2, 0, myform, myinitials);
          this.state.tmp.disambig_settings.givens[pos].push(param);
        }
        myform = this.state.inheritOpt(this.name, "form", "name-form", "long");
        paramx = this.state.registry.namereg.evalname("" + this.Item.id, lst[i2], i2, 0, myform, myinitials);
        if (this.state.tmp.disambig_request) {
          var val = this.state.tmp.disambig_settings.givens[pos][i2];
          if (val === 1 && this.state.citation.opt["givenname-disambiguation-rule"] === "by-cite" && ("undefined" === typeof this.state.inheritOpt(this.name, "initialize-with") || "undefined" === typeof lst[i2].given)) {
            val = 2;
          }
          param = val;
          if (this.state.opt["disambiguate-add-givenname"] && lst[i2].given) {
            param = this.state.registry.namereg.evalname("" + this.Item.id, lst[i2], i2, param, this.state.inheritOpt(this.name, "form", "name-form", "long"), this.state.inheritOpt(this.name, "initialize-with"));
          }
        } else {
          param = paramx;
        }
        if (!this.state.tmp.just_looking && this.item && this.item.position === CSL.POSITION_FIRST) {
          if (paramx > param) {
            param = paramx;
          }
        }
        if (!this.state.tmp.sort_key_flag) {
          this.state.tmp.disambig_settings.givens[pos][i2] = param;
          if ("string" === typeof myinitials && ("undefined" === typeof this.name.strings["initialize"] || true === this.name.strings["initialize"])) {
            this.state.tmp.disambig_settings.use_initials = true;
          }
        }
      }
    };
    CSL.NameOutput.prototype.getEtAlConfig = function() {
      var item = this.item;
      this["et-al"] = {};
      this.state.output.append(this.etal_term, this.etal_style, true);
      this["et-al"].single = this.state.output.pop();
      this["et-al"].single.strings.suffix = this.etal_suffix;
      this["et-al"].single.strings.prefix = this.etal_prefix_single;
      this.state.output.append(this.etal_term, this.etal_style, true);
      this["et-al"].multiple = this.state.output.pop();
      this["et-al"].multiple.strings.suffix = this.etal_suffix;
      this["et-al"].multiple.strings.prefix = this.etal_prefix_multiple;
      if ("undefined" === typeof item) {
        item = {};
      }
      if (item.position) {
        if (this.state.inheritOpt(this.name, "et-al-subsequent-min")) {
          this.etal_min = this.state.inheritOpt(this.name, "et-al-subsequent-min");
        } else {
          this.etal_min = this.state.inheritOpt(this.name, "et-al-min");
        }
        if (this.state.inheritOpt(this.name, "et-al-subsequent-use-first")) {
          this.etal_use_first = this.state.inheritOpt(this.name, "et-al-subsequent-use-first");
        } else {
          this.etal_use_first = this.state.inheritOpt(this.name, "et-al-use-first");
        }
      } else {
        if (this.state.tmp["et-al-min"]) {
          this.etal_min = this.state.tmp["et-al-min"];
        } else {
          this.etal_min = this.state.inheritOpt(this.name, "et-al-min");
        }
        if (this.state.tmp["et-al-use-first"]) {
          this.etal_use_first = this.state.tmp["et-al-use-first"];
        } else {
          this.etal_use_first = this.state.inheritOpt(this.name, "et-al-use-first");
        }
        if ("boolean" === typeof this.state.tmp["et-al-use-last"]) {
          this.etal_use_last = this.state.tmp["et-al-use-last"];
        } else {
          this.etal_use_last = this.state.inheritOpt(this.name, "et-al-use-last");
        }
      }
      if (!this.state.tmp["et-al-min"]) {
        this.state.tmp["et-al-min"] = this.etal_min;
      }
    };
    CSL.NameOutput.prototype.setEtAlParameters = function() {
      var i2, ilen, j, jlen;
      for (i2 = 0, ilen = this.variables.length; i2 < ilen; i2 += 1) {
        var v = this.variables[i2];
        if ("undefined" === typeof this.etal_spec[v]) {
          this.etal_spec[v] = { freeters: 0, institutions: 0, persons: [] };
        }
        this.etal_spec[this.nameset_base + i2] = this.etal_spec[v];
        if (this.freeters[v].length) {
          this._setEtAlParameter("freeters", v);
        }
        for (j = 0, jlen = this.persons[v].length; j < jlen; j += 1) {
          if ("undefined" === typeof this.etal_spec[v][j]) {
            this.etal_spec[v].persons[j] = 0;
          }
          this._setEtAlParameter("persons", v, j);
        }
        if (this.institutions[v].length) {
          this._setEtAlParameter("institutions", v);
        }
      }
    };
    CSL.NameOutput.prototype._setEtAlParameter = function(type2, v, j) {
      var lst, count2;
      if (type2 === "persons") {
        lst = this.persons[v][j];
        count2 = this.persons_count[v][j];
      } else {
        lst = this[type2][v];
        count2 = this[type2 + "_count"][v];
      }
      if (lst.length < count2 && !this.state.tmp.sort_key_flag) {
        if (this.etal_use_last) {
          if (type2 === "persons") {
            this.etal_spec[v].persons[j] = 2;
          } else {
            this.etal_spec[v][type2] = 2;
          }
        } else {
          if (type2 === "persons") {
            this.etal_spec[v].persons[j] = 1;
          } else {
            this.etal_spec[v][type2] = 1;
          }
        }
      } else {
        if (type2 === "persons") {
          this.etal_spec[v].persons[j] = 0;
        } else {
          this.etal_spec[v][type2] = 0;
        }
      }
    };
    CSL.NameOutput.prototype.renderAllNames = function() {
      var pos;
      for (var i2 = 0, ilen = this.variables.length; i2 < ilen; i2 += 1) {
        var v = this.variables[i2];
        if (this.freeters[v].length || this.institutions[v].length) {
          if (!this.state.tmp.group_context.tip.condition) {
            this.state.tmp.just_did_number = false;
          }
        }
        pos = this.nameset_base + i2;
        if (this.freeters[v].length) {
          this.freeters[v] = this._renderNames(v, this.freeters[v], pos);
        }
        for (var j = 0, jlen = this.institutions[v].length; j < jlen; j += 1) {
          this.persons[v][j] = this._renderNames(v, this.persons[v][j], pos, j);
        }
      }
      this.renderInstitutionNames();
    };
    CSL.NameOutput.prototype.renderInstitutionNames = function() {
      for (var i2 = 0, ilen = this.variables.length; i2 < ilen; i2 += 1) {
        var v = this.variables[i2];
        for (var j = 0, jlen = this.institutions[v].length; j < jlen; j += 1) {
          var institution;
          var name3 = this.institutions[v][j];
          var j, jlen, localesets;
          if (this.state.tmp.extension) {
            localesets = ["sort"];
          } else if (name3.isInstitution || name3.literal) {
            localesets = this.state.opt["cite-lang-prefs"].institutions;
          } else {
            localesets = this.state.opt["cite-lang-prefs"].persons;
          }
          var slot = { primary: "locale-orig", secondary: false, tertiary: false };
          if (localesets) {
            var slotnames = ["primary", "secondary", "tertiary"];
            for (var k = 0, klen = slotnames.length; k < klen; k += 1) {
              if (localesets.length - 1 < k) {
                break;
              }
              if (localesets[k]) {
                slot[slotnames[k]] = "locale-" + localesets[k];
              }
            }
          } else {
            slot.primary = "locale-translat";
          }
          if (this.state.tmp.area !== "bibliography" && !(this.state.tmp.area === "citation" && this.state.opt.xclass === "note" && this.item && !this.item.position)) {
            slot.secondary = false;
            slot.tertiary = false;
          }
          this.setRenderedName(name3);
          var institution = this._renderInstitutionName(v, name3, slot, j);
          this.institutions[v][j] = institution;
        }
      }
    };
    CSL.NameOutput.prototype._renderInstitutionName = function(v, name3, slot, j) {
      var secondary, tertiary, long_style, short_style, institution, institution_short, institution_long;
      var res = this.getName(name3, slot.primary, true);
      var primary = res.name;
      var usedOrig = res.usedOrig;
      if (primary) {
        primary = this.fixupInstitution(primary, v, j);
      }
      secondary = false;
      if (slot.secondary) {
        res = this.getName(name3, slot.secondary, false, usedOrig);
        var secondary = res.name;
        usedOrig = res.usedOrig;
        if (secondary) {
          secondary = this.fixupInstitution(secondary, v, j);
        }
      }
      tertiary = false;
      if (slot.tertiary) {
        res = this.getName(name3, slot.tertiary, false, usedOrig);
        tertiary = res.name;
        if (tertiary) {
          tertiary = this.fixupInstitution(tertiary, v, j);
        }
      }
      var n = {
        l: {
          pri: false,
          sec: false,
          ter: false
        },
        s: {
          pri: false,
          sec: false,
          ter: false
        }
      };
      if (primary) {
        n.l.pri = primary["long"];
        n.s.pri = primary["short"].length ? primary["short"] : primary["long"];
      }
      if (secondary) {
        n.l.sec = secondary["long"];
        n.s.sec = secondary["short"].length ? secondary["short"] : secondary["long"];
      }
      if (tertiary) {
        n.l.ter = tertiary["long"];
        n.s.ter = tertiary["short"].length ? tertiary["short"] : tertiary["long"];
      }
      switch (this.institution.strings["institution-parts"]) {
        case "short":
          if (primary["short"].length) {
            short_style = this._getShortStyle();
            institution = [this._composeOneInstitutionPart([n.s.pri, n.s.sec, n.s.ter], slot, short_style, v)];
          } else {
            long_style = this._getLongStyle(primary, v, j);
            institution = [this._composeOneInstitutionPart([n.l.pri, n.l.sec, n.l.ter], slot, long_style, v)];
          }
          break;
        case "short-long":
          long_style = this._getLongStyle(primary, v, j);
          short_style = this._getShortStyle();
          institution_short = this._renderOneInstitutionPart(primary["short"], short_style);
          institution_long = this._composeOneInstitutionPart([n.l.pri, n.l.sec, n.l.ter], slot, long_style, v);
          institution = [institution_short, institution_long];
          break;
        case "long-short":
          long_style = this._getLongStyle(primary, v, j);
          short_style = this._getShortStyle();
          institution_short = this._renderOneInstitutionPart(primary["short"], short_style);
          institution_long = this._composeOneInstitutionPart([n.l.pri, n.l.sec, n.l.ter], slot, long_style, v);
          institution = [institution_long, institution_short];
          break;
        default:
          long_style = this._getLongStyle(primary, v, j);
          institution = [this._composeOneInstitutionPart([n.l.pri, n.l.sec, n.l.ter], slot, long_style, v)];
          break;
      }
      var blob = this._join(institution, " ");
      if (blob) {
        blob.isInstitution = true;
      }
      this.state.tmp.name_node.children.push(blob);
      return blob;
    };
    CSL.NameOutput.prototype._composeOneInstitutionPart = function(names, slot, style3) {
      var primary = false, secondary = false, tertiary = false, primary_tok, secondary_tok, tertiary_tok;
      if (names[0]) {
        primary_tok = CSL.Util.cloneToken(style3);
        if (this.state.opt.citeAffixes[slot.primary]) {
          if ("<i>" === this.state.opt.citeAffixes.institutions[slot.primary].prefix) {
            var hasItalic = false;
            for (var i2 = 0, ilen = primary_tok.decorations.length; i2 < ilen; i2 += 1) {
              if (style3.decorations[i2][0] === "@font-style" && primary_tok.decorations[i2][1] === "italic") {
                hasItalic = true;
              }
            }
            if (!hasItalic) {
              primary_tok.decorations.push(["@font-style", "italic"]);
            }
          }
        }
        primary = this._renderOneInstitutionPart(names[0], primary_tok);
      }
      if (names[1]) {
        secondary = this._renderOneInstitutionPart(names[1], style3);
      }
      if (names[2]) {
        tertiary = this._renderOneInstitutionPart(names[2], style3);
      }
      var institutionblob;
      if (secondary || tertiary) {
        this.state.output.openLevel("empty");
        this.state.output.append(primary);
        secondary_tok = CSL.Util.cloneToken(style3);
        if (slot.secondary) {
          secondary_tok.strings.prefix = this.state.opt.citeAffixes.institutions[slot.secondary].prefix;
          secondary_tok.strings.suffix = this.state.opt.citeAffixes.institutions[slot.secondary].suffix;
          if (!secondary_tok.strings.prefix) {
            secondary_tok.strings.prefix = " ";
          }
        }
        var secondary_outer = new CSL.Token();
        secondary_outer.decorations.push(["@font-style", "normal"]);
        secondary_outer.decorations.push(["@font-weight", "normal"]);
        this.state.output.openLevel(secondary_outer);
        this.state.output.append(secondary, secondary_tok);
        this.state.output.closeLevel();
        tertiary_tok = CSL.Util.cloneToken(style3);
        if (slot.tertiary) {
          tertiary_tok.strings.prefix = this.state.opt.citeAffixes.institutions[slot.tertiary].prefix;
          tertiary_tok.strings.suffix = this.state.opt.citeAffixes.institutions[slot.tertiary].suffix;
          if (!tertiary_tok.strings.prefix) {
            tertiary_tok.strings.prefix = " ";
          }
        }
        var tertiary_outer = new CSL.Token();
        tertiary_outer.decorations.push(["@font-style", "normal"]);
        tertiary_outer.decorations.push(["@font-weight", "normal"]);
        this.state.output.openLevel(tertiary_outer);
        this.state.output.append(tertiary, tertiary_tok);
        this.state.output.closeLevel();
        this.state.output.closeLevel();
        institutionblob = this.state.output.pop();
      } else {
        institutionblob = primary;
      }
      return institutionblob;
    };
    CSL.NameOutput.prototype._renderOneInstitutionPart = function(blobs, style3) {
      for (var i2 = 0, ilen = blobs.length; i2 < ilen; i2 += 1) {
        if (blobs[i2]) {
          var str2 = blobs[i2];
          if (this.state.tmp.strip_periods) {
            str2 = str2.replace(/\./g, "");
          } else {
            for (var j = 0, jlen = style3.decorations.length; j < jlen; j += 1) {
              if ("@strip-periods" === style3.decorations[j][0] && "true" === style3.decorations[j][1]) {
                str2 = str2.replace(/\./g, "");
                break;
              }
            }
          }
          this.state.tmp.group_context.tip.variable_success = true;
          this.state.tmp.can_substitute.replace(false, CSL.LITERAL);
          if (str2 === "!here>>>") {
            blobs[i2] = false;
          } else {
            this.state.output.append(str2, style3, true);
            blobs[i2] = this.state.output.pop();
          }
        }
      }
      if ("undefined" === typeof this.institution.strings["part-separator"]) {
        this.institution.strings["part-separator"] = this.state.tmp.name_delimiter;
      }
      return this._join(blobs, this.institution.strings["part-separator"]);
    };
    CSL.NameOutput.prototype._renderNames = function(v, values, pos, j) {
      var ret = false;
      if (values.length) {
        var names = [];
        for (var i2 = 0, ilen = values.length; i2 < ilen; i2 += 1) {
          var name3 = values[i2];
          var ret, localesets;
          if (this.state.tmp.extension) {
            localesets = ["sort"];
          } else if (name3.isInstitution || name3.literal) {
            localesets = this.state.opt["cite-lang-prefs"].institutions;
          } else {
            localesets = this.state.opt["cite-lang-prefs"].persons;
          }
          var slot = { primary: "locale-orig", secondary: false, tertiary: false };
          if (localesets) {
            var slotnames = ["primary", "secondary", "tertiary"];
            for (var k = 0, klen = slotnames.length; k < klen; k += 1) {
              if (localesets.length - 1 < k) {
                break;
              }
              slot[slotnames[k]] = "locale-" + localesets[k];
            }
          } else {
            slot.primary = "locale-translat";
          }
          if (this.state.tmp.sort_key_flag || this.state.tmp.area !== "bibliography" && !(this.state.tmp.area === "citation" && this.state.opt.xclass === "note" && this.item && !this.item.position)) {
            slot.secondary = false;
            slot.tertiary = false;
          }
          this.setRenderedName(name3);
          if (!name3.literal && !name3.isInstitution) {
            var nameBlob = this._renderPersonalName(v, name3, slot, pos, i2, j);
            var nameToken = CSL.Util.cloneToken(this.name);
            this.state.output.append(nameBlob, nameToken, true);
            names.push(this.state.output.pop());
          } else {
            names.push(this._renderInstitutionName(v, name3, slot, j));
          }
        }
        ret = this.joinPersons(names, pos, j);
      }
      return ret;
    };
    CSL.NameOutput.prototype._renderPersonalName = function(v, name3, slot, pos, i2, j) {
      var res = this.getName(name3, slot.primary, true);
      var primary = this._renderOnePersonalName(res.name, pos, i2, j);
      var secondary = false;
      if (slot.secondary) {
        res = this.getName(name3, slot.secondary, false, res.usedOrig);
        if (res.name) {
          secondary = this._renderOnePersonalName(res.name, pos, i2, j);
        }
      }
      var tertiary = false;
      if (slot.tertiary) {
        res = this.getName(name3, slot.tertiary, false, res.usedOrig);
        if (res.name) {
          tertiary = this._renderOnePersonalName(res.name, pos, i2, j);
        }
      }
      var personblob;
      if (secondary || tertiary) {
        this.state.output.openLevel("empty");
        this.state.output.append(primary);
        var secondary_tok = new CSL.Token();
        if (slot.secondary) {
          secondary_tok.strings.prefix = this.state.opt.citeAffixes.persons[slot.secondary].prefix;
          secondary_tok.strings.suffix = this.state.opt.citeAffixes.persons[slot.secondary].suffix;
          if (!secondary_tok.strings.prefix) {
            secondary_tok.strings.prefix = " ";
          }
        }
        this.state.output.append(secondary, secondary_tok);
        var tertiary_tok = new CSL.Token();
        if (slot.tertiary) {
          tertiary_tok.strings.prefix = this.state.opt.citeAffixes.persons[slot.tertiary].prefix;
          tertiary_tok.strings.suffix = this.state.opt.citeAffixes.persons[slot.tertiary].suffix;
          if (!tertiary_tok.strings.prefix) {
            tertiary_tok.strings.prefix = " ";
          }
        }
        this.state.output.append(tertiary, tertiary_tok);
        this.state.output.closeLevel();
        personblob = this.state.output.pop();
      } else {
        personblob = primary;
      }
      return personblob;
    };
    CSL.NameOutput.prototype._isRomanesque = function(name3) {
      var ret = 2;
      if (!name3.family.replace(/\"/g, "").match(CSL.ROMANESQUE_REGEXP)) {
        ret = 0;
      }
      if (!ret && name3.given && name3.given.match(CSL.STARTSWITH_ROMANESQUE_REGEXP)) {
        ret = 1;
      }
      var top_locale;
      if (ret == 2) {
        if (name3.multi && name3.multi.main) {
          top_locale = name3.multi.main.slice(0, 2);
        } else if (this.Item.language) {
          top_locale = this.Item.language.slice(0, 2);
        }
        if (["ja", "zh"].indexOf(top_locale) > -1) {
          ret = 1;
        }
      }
      return ret;
    };
    CSL.NameOutput.prototype._renderOnePersonalName = function(value, pos, i2, j) {
      var name3 = value;
      var dropping_particle = this._droppingParticle(name3, pos, j);
      var family = this._familyName(name3);
      var non_dropping_particle = this._nonDroppingParticle(name3);
      var givenInfo = this._givenName(name3, pos, i2);
      var given = givenInfo.blob;
      var suffix = this._nameSuffix(name3);
      if (given === false) {
        dropping_particle = false;
        suffix = false;
      }
      var sort_sep = this.state.inheritOpt(this.name, "sort-separator");
      if (!sort_sep) {
        sort_sep = "";
      }
      var suffix_sep;
      if (name3["comma-suffix"]) {
        suffix_sep = ", ";
      } else {
        suffix_sep = " ";
      }
      var romanesque = this._isRomanesque(name3);
      function hasJoiningPunctuation(blob2) {
        if (!blob2) {
          return false;
        } else if ("string" === typeof blob2.blobs) {
          if (["\u2019", "'", "-", " "].indexOf(blob2.blobs.slice(-1)) > -1) {
            return true;
          } else {
            return false;
          }
        } else {
          return hasJoiningPunctuation(blob2.blobs[blob2.blobs.length - 1]);
        }
      }
      var has_hyphenated_non_dropping_particle = hasJoiningPunctuation(non_dropping_particle);
      var nbspace;
      if (["fr", "ru", "cs"].indexOf(this.state.opt["default-locale"][0].slice(0, 2)) > -1) {
        nbspace = "\xA0";
      } else {
        nbspace = " ";
      }
      var blob, merged, first2, second;
      if (romanesque === 0) {
        blob = this._join([non_dropping_particle, family, given], "");
      } else if (romanesque === 1 || name3["static-ordering"]) {
        merged = this._join([non_dropping_particle, family], nbspace);
        blob = this._join([merged, given], " ");
      } else if (name3["reverse-ordering"]) {
        merged = this._join([non_dropping_particle, family], nbspace);
        blob = this._join([given, merged], " ");
      } else if (this.state.tmp.sort_key_flag) {
        if (this.state.opt["demote-non-dropping-particle"] === "never") {
          merged = this._join([non_dropping_particle, family], nbspace);
          merged = this._join([merged, dropping_particle], " ");
          merged = this._join([merged, given], this.state.opt.sort_sep);
          blob = this._join([merged, suffix], " ");
        } else {
          second = this._join([given, dropping_particle, non_dropping_particle], " ");
          merged = this._join([family, second], this.state.opt.sort_sep);
          blob = this._join([merged, suffix], " ");
        }
      } else if (this.state.inheritOpt(this.name, "name-as-sort-order") === "all" || this.state.inheritOpt(this.name, "name-as-sort-order") === "first" && i2 === 0 && (j === 0 || "undefined" === typeof j)) {
        if (["Lord", "Lady"].indexOf(name3.given) > -1) {
          sort_sep = ", ";
        }
        if (["always", "display-and-sort"].indexOf(this.state.opt["demote-non-dropping-particle"]) > -1) {
          second = this._join([given, dropping_particle], name3["comma-dropping-particle"] + " ");
          second = this._join([second, non_dropping_particle], " ");
          if (second && this.given) {
            second.strings.prefix = this.given.strings.prefix;
            second.strings.suffix = this.given.strings.suffix;
          }
          if (family && this.family) {
            family.strings.prefix = this.family.strings.prefix;
            family.strings.suffix = this.family.strings.suffix;
          }
          merged = this._join([family, second], sort_sep);
          blob = this._join([merged, suffix], sort_sep);
        } else {
          if (has_hyphenated_non_dropping_particle) {
            first2 = this._join([non_dropping_particle, family], "");
          } else {
            first2 = this._join([non_dropping_particle, family], nbspace);
          }
          if (first2 && this.family) {
            first2.strings.prefix = this.family.strings.prefix;
            first2.strings.suffix = this.family.strings.suffix;
          }
          second = this._join([given, dropping_particle], name3["comma-dropping-particle"] + " ");
          if (second && this.given) {
            second.strings.prefix = this.given.strings.prefix;
            second.strings.suffix = this.given.strings.suffix;
          }
          merged = this._join([first2, second], sort_sep);
          blob = this._join([merged, suffix], sort_sep);
        }
        blob.isInverted = true;
      } else {
        if (name3["dropping-particle"] && name3.family && !name3["non-dropping-particle"]) {
          var dp = name3["dropping-particle"];
          var apostrophes = ["'", "\u02BC", "\u2019", "-"];
          if (apostrophes.indexOf(dp.slice(-1)) > -1 && dp.slice(0, -1) !== "de") {
            family = this._join([dropping_particle, family], "");
            dropping_particle = false;
          }
        }
        if (has_hyphenated_non_dropping_particle) {
          second = this._join([non_dropping_particle, family], "");
          second = this._join([dropping_particle, second], nbspace);
        } else {
          second = this._join([dropping_particle, non_dropping_particle, family], nbspace);
        }
        second = this._join([second, suffix], suffix_sep);
        if (second && this.family) {
          second.strings.prefix = this.family.strings.prefix;
          second.strings.suffix = this.family.strings.suffix;
        }
        if (given && this.given) {
          given.strings.prefix = this.given.strings.prefix;
          given.strings.suffix = this.given.strings.suffix;
        }
        if (second.strings.prefix) {
          name3["comma-dropping-particle"] = "";
        }
        var space3;
        if (this.state.inheritOpt(this.name, "initialize-with") && this.state.inheritOpt(this.name, "initialize-with").match(/[\u00a0\ufeff]/) && givenInfo.initializationLevel === 1) {
          space3 = nbspace;
        } else {
          space3 = " ";
        }
        blob = this._join([given, second], name3["comma-dropping-particle"] + space3);
      }
      this.state.tmp.group_context.tip.variable_success = true;
      this.state.tmp.can_substitute.replace(false, CSL.LITERAL);
      this.state.tmp.term_predecessor = true;
      this.state.tmp.name_node.children.push(blob);
      return blob;
    };
    CSL.NameOutput.prototype._normalizeNameInput = function(value) {
      var name3 = {
        literal: value.literal,
        family: value.family,
        isInstitution: value.isInstitution,
        given: value.given,
        suffix: value.suffix,
        "comma-suffix": value["comma-suffix"],
        "non-dropping-particle": value["non-dropping-particle"],
        "dropping-particle": value["dropping-particle"],
        "static-ordering": value["static-ordering"],
        "static-particles": value["static-particles"],
        "reverse-ordering": value["reverse-ordering"],
        "full-form-always": value["full-form-always"],
        "parse-names": value["parse-names"],
        "comma-dropping-particle": "",
        block_initialize: value.block_initialize,
        multi: value.multi
      };
      this._parseName(name3);
      return name3;
    };
    CSL.NameOutput.prototype._stripPeriods = function(tokname, str2) {
      var decor_tok = this[tokname + "_decor"];
      if (str2) {
        if (this.state.tmp.strip_periods) {
          str2 = str2.replace(/\./g, "");
        } else if (decor_tok) {
          for (var i2 = 0, ilen = decor_tok.decorations.length; i2 < ilen; i2 += 1) {
            if ("@strip-periods" === decor_tok.decorations[i2][0] && "true" === decor_tok.decorations[i2][1]) {
              str2 = str2.replace(/\./g, "");
              break;
            }
          }
        }
      }
      return str2;
    };
    CSL.NameOutput.prototype._nonDroppingParticle = function(name3) {
      var ndp = name3["non-dropping-particle"];
      if (ndp && this.state.tmp.sort_key_flag) {
        ndp = ndp.replace(/[\'\u2019]/, "");
      }
      var str2 = this._stripPeriods("family", ndp);
      if (this.state.output.append(str2, this.family_decor, true)) {
        return this.state.output.pop();
      }
      return false;
    };
    CSL.NameOutput.prototype._droppingParticle = function(name3, pos, j) {
      var dp = name3["dropping-particle"];
      if (dp && this.state.tmp.sort_key_flag) {
        dp = dp.replace(/[\'\u2019]/, "");
      }
      var str2 = this._stripPeriods("given", dp);
      if (name3["dropping-particle"] && name3["dropping-particle"].match(/^et.?al[^a-z]$/)) {
        if (this.state.inheritOpt(this.name, "et-al-use-last")) {
          if ("undefined" === typeof j) {
            this.etal_spec[pos].freeters = 2;
          } else {
            this.etal_spec[pos].persons = 2;
          }
        } else {
          if ("undefined" === typeof j) {
            this.etal_spec[pos].freeters = 1;
          } else {
            this.etal_spec[pos].persons = 1;
          }
        }
        name3["comma-dropping-particle"] = "";
      } else if (this.state.output.append(str2, this.given_decor, true)) {
        return this.state.output.pop();
      }
      return false;
    };
    CSL.NameOutput.prototype._familyName = function(name3) {
      var str2 = this._stripPeriods("family", name3.family);
      if (this.state.output.append(str2, this.family_decor, true)) {
        return this.state.output.pop();
      }
      return false;
    };
    CSL.NameOutput.prototype._givenName = function(name3, pos, i2) {
      var ret;
      var formIsShort = this.state.inheritOpt(this.name, "form", "name-form", "long") !== "long";
      var initializeIsTurnedOn = this.state.inheritOpt(this.name, "initialize") !== false;
      var hasInitializeWith = "string" === typeof this.state.inheritOpt(this.name, "initialize-with") && !name3.block_initialize;
      var defaultLevel;
      var useLevel;
      if (name3["full-form-always"]) {
        useLevel = 2;
      } else {
        if (formIsShort) {
          defaultLevel = 0;
        } else if (hasInitializeWith) {
          defaultLevel = 1;
        } else {
          defaultLevel = 2;
        }
        var requestedLevel = this.state.tmp.disambig_settings.givens[pos][i2];
        if (requestedLevel > defaultLevel) {
          useLevel = requestedLevel;
        } else {
          useLevel = defaultLevel;
        }
      }
      var gdropt = this.state.citation.opt["givenname-disambiguation-rule"];
      if (gdropt && gdropt.slice(-14) === "-with-initials") {
        hasInitializeWith = true;
      }
      if (name3.family && useLevel === 1) {
        if (hasInitializeWith) {
          var initialize_with = this.state.inheritOpt(this.name, "initialize-with", false, "");
          name3.given = CSL.Util.Names.initializeWith(this.state, name3.given, initialize_with, !initializeIsTurnedOn);
        } else {
          name3.given = CSL.Util.Names.unInitialize(this.state, name3.given);
        }
      } else if (useLevel === 0) {
        return {
          blob: false
        };
      } else if (useLevel === 2) {
        name3.given = CSL.Util.Names.unInitialize(this.state, name3.given);
      }
      var str2 = this._stripPeriods("given", name3.given);
      var rendered = this.state.output.append(str2, this.given_decor, true);
      if (rendered) {
        ret = this.state.output.pop();
        return {
          blob: ret,
          initializationLevel: useLevel
        };
      }
      return {
        blob: false
      };
    };
    CSL.NameOutput.prototype._nameSuffix = function(name3) {
      var str2 = name3.suffix, ret;
      if (str2 && "string" === typeof this.state.inheritOpt(this.name, "initialize-with")) {
        str2 = CSL.Util.Names.initializeWith(this.state, str2, this.state.inheritOpt(this.name, "initialize-with"), true);
      }
      str2 = this._stripPeriods("family", str2);
      var toSuffix = "";
      if (str2 && str2.slice(-1) === ".") {
        str2 = str2.slice(0, -1);
        toSuffix = ".";
      }
      var rendered = this.state.output.append(str2, "empty", true);
      if (rendered) {
        ret = this.state.output.pop();
        ret.strings.suffix = toSuffix + ret.strings.suffix;
        return ret;
      }
      return false;
    };
    CSL.NameOutput.prototype._getLongStyle = function(name3) {
      var long_style;
      if (name3["short"].length) {
        if (this.institutionpart["long-with-short"]) {
          long_style = this.institutionpart["long-with-short"];
        } else {
          long_style = this.institutionpart["long"];
        }
      } else {
        long_style = this.institutionpart["long"];
      }
      if (!long_style) {
        long_style = new CSL.Token();
      }
      return long_style;
    };
    CSL.NameOutput.prototype._getShortStyle = function() {
      var short_style;
      if (this.institutionpart["short"]) {
        short_style = this.institutionpart["short"];
      } else {
        short_style = new CSL.Token();
      }
      return short_style;
    };
    CSL.NameOutput.prototype._parseName = function(name3) {
      if (!name3["parse-names"] && "undefined" !== typeof name3["parse-names"]) {
        return name3;
      }
      if (name3.family && !name3.given && name3.isInstitution) {
        name3.literal = name3.family;
        name3.family = void 0;
        name3.isInstitution = void 0;
      }
      var noparse;
      if (name3.family && (name3.family.slice(0, 1) === '"' && name3.family.slice(-1) === '"') || !name3["parse-names"] && "undefined" !== typeof name3["parse-names"]) {
        name3.family = name3.family.slice(1, -1);
        noparse = true;
        name3["parse-names"] = 0;
      } else {
        noparse = false;
      }
      if (this.state.opt.development_extensions.parse_names) {
        if (!name3["non-dropping-particle"] && name3.family && !noparse && name3.given) {
          if (!name3["static-particles"]) {
            CSL.parseParticles(name3, true);
          }
        }
      }
    };
    CSL.NameOutput.prototype.getName = function(name3, slotLocaleset, fallback, stopOrig) {
      if (stopOrig && slotLocaleset === "locale-orig") {
        return { name: false, usedOrig: stopOrig };
      }
      if (!name3.family) {
        name3.family = "";
      }
      if (!name3.given) {
        name3.given = "";
      }
      var name_params = {};
      name_params["static-ordering"] = this.getStaticOrder(name3);
      var foundTag = true;
      var langTag;
      if (slotLocaleset !== "locale-orig") {
        foundTag = false;
        if (name3.multi) {
          var langTags = this.state.opt[slotLocaleset];
          for (var i2 = 0, ilen = langTags.length; i2 < ilen; i2 += 1) {
            langTag = langTags[i2];
            if (name3.multi._key[langTag]) {
              foundTag = true;
              var isInstitution = name3.isInstitution;
              name3 = name3.multi._key[langTag];
              name3.isInstitution = isInstitution;
              name_params = this.getNameParams(langTag);
              name_params.transliterated = true;
              break;
            }
          }
        }
      }
      if (!foundTag) {
        langTag = false;
        if (name3.multi && name3.multi.main) {
          langTag = name3.multi.main;
        } else if (this.Item.language) {
          langTag = this.Item.language;
        }
        if (langTag) {
          name_params = this.getNameParams(langTag);
        }
      }
      if (!fallback && !foundTag) {
        return { name: false, usedOrig: stopOrig };
      }
      if (!name3.family) {
        name3.family = "";
      }
      if (!name3.given) {
        name3.given = "";
      }
      if (name3.literal) {
        delete name3.family;
        delete name3.given;
      }
      name3 = {
        family: name3.family,
        given: name3.given,
        "non-dropping-particle": name3["non-dropping-particle"],
        "dropping-particle": name3["dropping-particle"],
        suffix: name3.suffix,
        "static-ordering": name_params["static-ordering"],
        "static-particles": name3["static-particles"],
        "reverse-ordering": name_params["reverse-ordering"],
        "full-form-always": name_params["full-form-always"],
        "parse-names": name3["parse-names"],
        "comma-suffix": name3["comma-suffix"],
        "comma-dropping-particle": name3["comma-dropping-particle"],
        transliterated: name_params.transliterated,
        block_initialize: name_params["block-initialize"],
        literal: name3.literal,
        isInstitution: name3.isInstitution,
        multi: name3.multi
      };
      if (!name3.literal && (!name3.given && name3.family && name3.isInstitution)) {
        name3.literal = name3.family;
      }
      if (name3.literal) {
        delete name3.family;
        delete name3.given;
      }
      name3 = this._normalizeNameInput(name3);
      var usedOrig;
      if (stopOrig) {
        usedOrig = stopOrig;
      } else {
        usedOrig = !foundTag;
      }
      return { name: name3, usedOrig };
    };
    CSL.NameOutput.prototype.getNameParams = function(langTag) {
      var ret = {};
      var langspec = CSL.localeResolve(this.Item.language, this.state.opt["default-locale"][0]);
      var try_locale = this.state.locale[langspec.best] ? langspec.best : this.state.opt["default-locale"][0];
      var name_as_sort_order = this.state.locale[try_locale].opts["name-as-sort-order"];
      var name_as_reverse_order = this.state.locale[try_locale].opts["name-as-reverse-order"];
      var name_never_short = this.state.locale[try_locale].opts["name-never-short"];
      var field_lang_bare = langTag.split("-")[0];
      if (name_as_sort_order && name_as_sort_order[field_lang_bare]) {
        ret["static-ordering"] = true;
        ret["reverse-ordering"] = false;
      }
      if (name_as_reverse_order && name_as_reverse_order[field_lang_bare]) {
        ret["reverse-ordering"] = true;
        ret["static-ordering"] = false;
      }
      if (name_never_short && name_never_short[field_lang_bare]) {
        ret["full-form-always"] = true;
      }
      if (ret["static-ordering"]) {
        ret["block-initialize"] = true;
      }
      return ret;
    };
    CSL.NameOutput.prototype.setRenderedName = function(name3) {
      if (this.state.tmp.area === "bibliography") {
        var strname = "";
        for (var j = 0, jlen = CSL.NAME_PARTS.length; j < jlen; j += 1) {
          if (name3[CSL.NAME_PARTS[j]]) {
            strname += name3[CSL.NAME_PARTS[j]];
          }
        }
        this.state.tmp.rendered_name.push(strname);
      }
    };
    CSL.NameOutput.prototype.fixupInstitution = function(name3, varname, listpos) {
      if (!name3.literal && name3.family) {
        name3.literal = name3.family;
        delete name3.family;
      }
      var longNameStr = name3.literal;
      var shortNameStr = longNameStr;
      var ret = {
        "long": longNameStr.split(/\s*\|\s*/),
        "short": shortNameStr.split(/\s*\|\s*/)
      };
      if (this.state.sys.getAbbreviation) {
        if (this.institution.strings.form === "short") {
          let jurisdiction = this.Item.jurisdiction;
          jurisdiction = this.state.transform.loadAbbreviation(jurisdiction, "institution-entire", longNameStr, this.Item.language);
          if (this.state.transform.abbrevs[jurisdiction]["institution-entire"][longNameStr]) {
            longNameStr = this.state.transform.abbrevs[jurisdiction]["institution-entire"][longNameStr];
          } else {
            jurisdiction = this.Item.jurisdiction;
            jurisdiction = this.state.transform.loadAbbreviation(jurisdiction, "institution-part", longNameStr, this.Item.language);
            if (this.state.transform.abbrevs[jurisdiction]["institution-part"][longNameStr]) {
              longNameStr = this.state.transform.abbrevs[jurisdiction]["institution-part"][longNameStr];
            }
          }
          longNameStr = this._quashChecks(jurisdiction, longNameStr);
        }
        if (["short", "short-long", "long-short"].indexOf(this.institution.strings["institution-parts"]) > -1) {
          let jurisdiction = this.Item.jurisdiction;
          jurisdiction = this.state.transform.loadAbbreviation(jurisdiction, "institution-part", shortNameStr, this.Item.language);
          if (this.state.transform.abbrevs[jurisdiction]["institution-part"][shortNameStr]) {
            shortNameStr = this.state.transform.abbrevs[jurisdiction]["institution-part"][shortNameStr];
          }
          shortNameStr = this._quashChecks(jurisdiction, shortNameStr);
          if (["short-long", "long-short"].indexOf(this.institution.strings["institution-parts"]) > -1) {
            if (shortNameStr === longNameStr) {
              shortNameStr = "";
            }
          }
        }
        ret["long"] = longNameStr.split(/\s*\|\s*/);
        ret["short"] = shortNameStr.split(/\s*\|\s*/);
        if (["short", "short-long", "long-short"].indexOf(this.institution.strings["institution-parts"]) > -1) {
          for (var j = ret["short"].length - 1; j > -1; j--) {
            let jurisdiction = this.Item.jurisdiction;
            var abbrevKey = ret["short"][j];
            jurisdiction = this.state.transform.loadAbbreviation(jurisdiction, "institution-part", abbrevKey, this.Item.language);
            if (this.state.transform.abbrevs[jurisdiction]["institution-part"][abbrevKey]) {
              ret["short"][j] = this.state.transform.abbrevs[jurisdiction]["institution-part"][abbrevKey];
            }
            if (ret["short"][j].indexOf("|") > -1) {
              let retShort = ret["short"];
              let splitShort = retShort[j].split(/\s*\|\s*/);
              ret["short"] = retShort.slice(0, j).concat(splitShort).concat(retShort.slice(j + 1));
            }
          }
        }
        if (this.state.opt.development_extensions.legacy_institution_name_ordering) {
          ret["short"].reverse();
        }
        ret["short"] = this._trimInstitution(ret["short"]);
        if (this.institution.strings["reverse-order"]) {
          ret["short"].reverse();
        }
        if (!this.state.tmp.just_looking) {
          if (this.Item.jurisdiction) {
            let jurisdiction = this.Item.jurisdiction;
            var trimmer = this.state.tmp.abbrev_trimmer;
            if (trimmer && trimmer[jurisdiction] && trimmer[jurisdiction][varname]) {
              for (var i2 = 0, ilen = ret["short"].length; i2 < ilen; i2++) {
                var frag = ret["short"][i2];
                ret["short"][i2] = frag.replace(trimmer[jurisdiction][varname], "").trim();
              }
            }
          }
        }
      }
      if (this.state.opt.development_extensions.legacy_institution_name_ordering) {
        ret["long"].reverse();
      }
      ret["long"] = this._trimInstitution(ret["long"]);
      if (this.institution.strings["reverse-order"]) {
        ret["long"].reverse();
      }
      return ret;
    };
    CSL.NameOutput.prototype.getStaticOrder = function(name3, refresh) {
      var static_ordering_val = false;
      if (!refresh && name3["static-ordering"]) {
        static_ordering_val = true;
      } else if (this._isRomanesque(name3) === 0) {
        static_ordering_val = true;
      } else if ((!name3.multi || !name3.multi.main) && this.Item.language && ["vi", "hu"].indexOf(this.Item.language) > -1) {
        static_ordering_val = true;
      } else if (name3.multi && name3.multi.main && ["vi", "hu"].indexOf(name3.multi.main.slice(0, 2)) > -1) {
        static_ordering_val = true;
      } else {
        if (this.state.opt["auto-vietnamese-names"] && (CSL.VIETNAMESE_NAMES.exec(name3.family + " " + name3.given) && CSL.VIETNAMESE_SPECIALS.exec(name3.family + name3.given))) {
          static_ordering_val = true;
        }
      }
      return static_ordering_val;
    };
    CSL.NameOutput.prototype._quashChecks = function(jurisdiction, str2) {
      var str2 = this.state.transform.quashCheck(jurisdiction, str2);
      var lst = str2.split(/>>[0-9]{4}>>/);
      var m2 = str2.match(/>>([0-9]{4})>>/);
      str2 = lst.pop();
      var date = this.Item["original-date"] ? this.Item["original-date"] : this.Item["issued"];
      if (date) {
        date = parseInt(date.year, 10);
        date = isNaN(date) ? false : date;
      }
      if (date) {
        if (lst.length > 0) {
          for (var k = m2.length - 1; k > 0; k--) {
            if (date >= parseInt(m2[k], 10)) {
              break;
            }
            str2 = lst.pop();
          }
        }
        str2 = str2.replace(/\s*\|\s*/g, "|");
      }
      return str2;
    };
    CSL.NameOutput.prototype._trimInstitution = function(subunits) {
      var use_first = false;
      var stop_last = false;
      var use_last = false;
      var stop_first = false;
      var s5 = subunits.slice();
      if (this.institution) {
        if ("undefined" !== typeof this.institution.strings["use-first"]) {
          use_first = this.institution.strings["use-first"];
        }
        if ("undefined" !== typeof this.institution.strings["use-last"]) {
          use_last = this.institution.strings["use-last"];
        }
        if ("undefined" !== typeof this.institution.strings["stop-first"]) {
          stop_first = this.institution.strings["stop-first"];
        }
        if ("undefined" !== typeof this.institution.strings["stop-last"]) {
          stop_last = this.institution.strings["stop-last"];
        }
        if (use_first) {
          if (stop_last) {
            s5 = s5.slice(0, stop_last * -1);
          }
          s5 = s5.slice(0, use_first);
        }
        if (use_last) {
          var ss = subunits.slice();
          if (use_first) {
            stop_first = use_first;
          } else {
            s5 = [];
          }
          if (stop_first) {
            ss = ss.slice(stop_first);
          }
          ss = ss.slice(use_last * -1);
          s5 = s5.concat(ss);
        }
        subunits = s5;
      }
      return subunits;
    };
    CSL.PublisherOutput = function(state, group_tok) {
      this.state = state;
      this.group_tok = group_tok;
      this.varlist = [];
    };
    CSL.PublisherOutput.prototype.render = function() {
      this.clearVars();
      this.composeAndBlob();
      this.composeElements();
      this.composePublishers();
      this.joinPublishers();
    };
    CSL.PublisherOutput.prototype.composeAndBlob = function() {
      this.and_blob = {};
      var and_term = false;
      if (this.group_tok.strings.and === "text") {
        and_term = this.state.getTerm("and");
      } else if (this.group_tok.strings.and === "symbol") {
        and_term = "&";
      }
      var tok = new CSL.Token();
      tok.strings.suffix = " ";
      tok.strings.prefix = " ";
      this.state.output.append(and_term, tok, true);
      var no_delim = this.state.output.pop();
      tok.strings.prefix = this.group_tok.strings["subgroup-delimiter"];
      this.state.output.append(and_term, tok, true);
      var with_delim = this.state.output.pop();
      this.and_blob.single = false;
      this.and_blob.multiple = false;
      if (and_term) {
        if (this.group_tok.strings["subgroup-delimiter-precedes-last"] === "always") {
          this.and_blob.single = with_delim;
        } else if (this.group_tok.strings["subgroup-delimiter-precedes-last"] === "never") {
          this.and_blob.single = no_delim;
          this.and_blob.multiple = no_delim;
        } else {
          this.and_blob.single = no_delim;
          this.and_blob.multiple = with_delim;
        }
      }
    };
    CSL.PublisherOutput.prototype.composeElements = function() {
      for (var i2 = 0, ilen = 2; i2 < ilen; i2 += 1) {
        var varname = ["publisher", "publisher-place"][i2];
        for (var j = 0, jlen = this["publisher-list"].length; j < jlen; j += 1) {
          var str2 = this[varname + "-list"][j];
          var tok = this[varname + "-token"];
          this.state.output.append(str2, tok, true);
          this[varname + "-list"][j] = this.state.output.pop();
        }
      }
    };
    CSL.PublisherOutput.prototype.composePublishers = function() {
      var blobs;
      for (var i2 = 0, ilen = this["publisher-list"].length; i2 < ilen; i2 += 1) {
        blobs = [this[this.varlist[0] + "-list"][i2], this[this.varlist[1] + "-list"][i2]];
        this["publisher-list"][i2] = this._join(blobs, this.group_tok.strings.delimiter);
      }
    };
    CSL.PublisherOutput.prototype.joinPublishers = function() {
      var blobs = this["publisher-list"];
      var publishers = this._join(blobs, this.group_tok.strings["subgroup-delimiter"], this.and_blob.single, this.and_blob.multiple, this.group_tok);
      this.state.output.append(publishers, "literal");
    };
    CSL.PublisherOutput.prototype._join = CSL.NameOutput.prototype._join;
    CSL.PublisherOutput.prototype._getToken = CSL.NameOutput.prototype._getToken;
    CSL.PublisherOutput.prototype.clearVars = function() {
      this.state.tmp["publisher-list"] = false;
      this.state.tmp["publisher-place-list"] = false;
      this.state.tmp["publisher-group-token"] = false;
      this.state.tmp["publisher-token"] = false;
      this.state.tmp["publisher-place-token"] = false;
    };
    CSL.evaluateLabel = function(node3, state, Item, item) {
      var myterm;
      if ("locator" === node3.strings.term) {
        if (item && item.label) {
          if (item.label === "sub verbo") {
            myterm = "sub-verbo";
          } else {
            myterm = item.label;
          }
        }
        if (!myterm) {
          myterm = "page";
        }
      } else {
        myterm = node3.strings.term;
      }
      var plural2 = node3.strings.plural;
      if ("number" !== typeof plural2) {
        var theItem = item && node3.strings.term === "locator" ? item : Item;
        if (theItem[node3.strings.term]) {
          state.processNumber(false, theItem, node3.strings.term, Item.type);
          plural2 = state.tmp.shadow_numbers[node3.strings.term].plural;
          if (!state.tmp.shadow_numbers[node3.strings.term].labelForm && !state.tmp.shadow_numbers[node3.strings.term].labelDecorations) {
            if (node3.strings.form) {
              state.tmp.shadow_numbers[node3.strings.term].labelForm = node3.strings.form;
            } else if (state.tmp.group_context.tip.label_form) {
              state.tmp.shadow_numbers[node3.strings.term].labelForm = state.tmp.group_context.tip.label_form;
            }
            state.tmp.shadow_numbers[node3.strings.term].labelCapitalizeIfFirst = node3.strings.capitalize_if_first;
            state.tmp.shadow_numbers[node3.strings.term].labelDecorations = node3.decorations.slice();
          }
          if (["locator", "number", "page"].indexOf(node3.strings.term) > -1 && state.tmp.shadow_numbers[node3.strings.term].label) {
            myterm = state.tmp.shadow_numbers[node3.strings.term].label;
          }
          if (node3.decorations && state.opt.development_extensions.csl_reverse_lookup_support) {
            node3.decorations.reverse();
            node3.decorations.push(["@showid", "true", node3.cslid]);
            node3.decorations.reverse();
          }
        }
      }
      return CSL.castLabel(state, node3, myterm, plural2, CSL.TOLERANT);
    };
    CSL.castLabel = function(state, node3, term, plural2, mode) {
      var label_form = node3.strings.form;
      var label_capitalize_if_first = node3.strings.capitalize_if_first;
      if (state.tmp.group_context.tip.label_form) {
        if (label_form === "static") {
          state.tmp.group_context.tip.label_static = true;
        } else {
          label_form = state.tmp.group_context.tip.label_form;
        }
      }
      if (state.tmp.group_context.tip.label_capitalize_if_first) {
        label_capitalize_if_first = state.tmp.group_context.tip.label_capitalize_if_first;
      }
      var ret = state.getTerm(term, label_form, plural2, false, mode, node3.default_locale);
      if (label_capitalize_if_first) {
        ret = CSL.Output.Formatters["capitalize-first"](state, ret);
      }
      if (state.tmp.strip_periods) {
        ret = ret.replace(/\./g, "");
      } else {
        for (var i2 = 0, ilen = node3.decorations.length; i2 < ilen; i2 += 1) {
          if ("@strip-periods" === node3.decorations[i2][0] && "true" === node3.decorations[i2][1]) {
            ret = ret.replace(/\./g, "");
            break;
          }
        }
      }
      return ret;
    };
    CSL.Node.name = {
      build: function(state, target) {
        var func;
        if ([CSL.SINGLETON, CSL.START].indexOf(this.tokentype) > -1) {
          var oldTmpRoot;
          if ("undefined" === typeof state.tmp.root) {
            oldTmpRoot = void 0;
            state.tmp.root = "citation";
          } else {
            oldTmpRoot = state.tmp.root;
          }
          if (state.inheritOpt(this, "et-al-subsequent-min") && state.inheritOpt(this, "et-al-subsequent-min") !== state.inheritOpt(this, "et-al-min")) {
            state.opt.update_mode = CSL.POSITION;
          }
          if (state.inheritOpt(this, "et-al-subsequent-use-first") && state.inheritOpt(this, "et-al-subsequent-use-first") !== state.inheritOpt(this, "et-al-use-first")) {
            state.opt.update_mode = CSL.POSITION;
          }
          state.tmp.root = oldTmpRoot;
          func = function(state2) {
            state2.tmp.etal_term = "et-al";
            state2.tmp.name_delimiter = state2.inheritOpt(this, "delimiter", "name-delimiter", ", ");
            state2.tmp["delimiter-precedes-et-al"] = state2.inheritOpt(this, "delimiter-precedes-et-al");
            if ("text" === state2.inheritOpt(this, "and")) {
              this.and_term = state2.getTerm("and", "long", 0);
            } else if ("symbol" === state2.inheritOpt(this, "and")) {
              if (state2.opt.development_extensions.expect_and_symbol_form) {
                this.and_term = state2.getTerm("and", "symbol", 0);
              } else {
                this.and_term = "&";
              }
            }
            state2.tmp.and_term = this.and_term;
            if (CSL.STARTSWITH_ROMANESQUE_REGEXP.test(this.and_term)) {
              this.and_prefix_single = " ";
              this.and_prefix_multiple = ", ";
              if ("string" === typeof state2.tmp.name_delimiter) {
                this.and_prefix_multiple = state2.tmp.name_delimiter;
              }
              this.and_suffix = " ";
            } else {
              this.and_prefix_single = "";
              this.and_prefix_multiple = "";
              this.and_suffix = "";
            }
            if (state2.inheritOpt(this, "delimiter-precedes-last") === "always") {
              this.and_prefix_single = state2.tmp.name_delimiter;
            } else if (state2.inheritOpt(this, "delimiter-precedes-last") === "never") {
              if (this.and_prefix_multiple) {
                this.and_prefix_multiple = " ";
              }
            } else if (state2.inheritOpt(this, "delimiter-precedes-last") === "after-inverted-name") {
              if (this.and_prefix_single) {
                this.and_prefix_single = state2.tmp.name_delimiter;
              }
              if (this.and_prefix_multiple) {
                this.and_prefix_multiple = " ";
              }
            }
            this.and = {};
            if (state2.inheritOpt(this, "and")) {
              state2.output.append(this.and_term, "empty", true);
              this.and.single = state2.output.pop();
              this.and.single.strings.prefix = this.and_prefix_single;
              this.and.single.strings.suffix = this.and_suffix;
              state2.output.append(this.and_term, "empty", true);
              this.and.multiple = state2.output.pop();
              this.and.multiple.strings.prefix = this.and_prefix_multiple;
              this.and.multiple.strings.suffix = this.and_suffix;
            } else if (state2.tmp.name_delimiter) {
              this.and.single = new CSL.Blob(state2.tmp.name_delimiter);
              this.and.single.strings.prefix = "";
              this.and.single.strings.suffix = "";
              this.and.multiple = new CSL.Blob(state2.tmp.name_delimiter);
              this.and.multiple.strings.prefix = "";
              this.and.multiple.strings.suffix = "";
            }
            this.ellipsis = {};
            if (state2.inheritOpt(this, "et-al-use-last")) {
              this.ellipsis_term = "\u2026";
              this.ellipsis_prefix_single = " ";
              this.ellipsis_prefix_multiple = state2.inheritOpt(this, "delimiter", "name-delimiter", ", ");
              this.ellipsis_suffix = " ";
              this.ellipsis.single = new CSL.Blob(this.ellipsis_term);
              this.ellipsis.single.strings.prefix = this.ellipsis_prefix_single;
              this.ellipsis.single.strings.suffix = this.ellipsis_suffix;
              this.ellipsis.multiple = new CSL.Blob(this.ellipsis_term);
              this.ellipsis.multiple.strings.prefix = this.ellipsis_prefix_multiple;
              this.ellipsis.multiple.strings.suffix = this.ellipsis_suffix;
            }
            if ("undefined" === typeof state2.tmp["et-al-min"]) {
              state2.tmp["et-al-min"] = state2.inheritOpt(this, "et-al-min");
            }
            if ("undefined" === typeof state2.tmp["et-al-use-first"]) {
              state2.tmp["et-al-use-first"] = state2.inheritOpt(this, "et-al-use-first");
            }
            if ("undefined" === typeof state2.tmp["et-al-use-last"]) {
              state2.tmp["et-al-use-last"] = state2.inheritOpt(this, "et-al-use-last");
            }
            state2.nameOutput.name = this;
          };
          state.build.name_flag = true;
          this.execs.push(func);
        }
        target.push(this);
      }
    };
    CSL.Node["name-part"] = {
      build: function(state) {
        state.build[this.strings.name] = this;
      }
    };
    CSL.Node.names = {
      build: function(state, target) {
        var func;
        if (this.tokentype === CSL.START || this.tokentype === CSL.SINGLETON) {
          CSL.Util.substituteStart.call(this, state, target);
          state.build.substitute_level.push(1);
        }
        if (this.tokentype === CSL.SINGLETON) {
          state.build.names_variables[state.build.names_variables.length - 1].concat(this.variables);
          for (var i2 in this.variables) {
            var variable = this.variables[i2];
            var name_labels = state.build.name_label[state.build.name_label.length - 1];
            if (Object.keys(name_labels).length) {
              name_labels[variable] = name_labels[Object.keys(name_labels)[0]];
            }
          }
          func = function(state2) {
            state2.nameOutput.reinit(this, this.variables_real[0]);
          };
          this.execs.push(func);
        }
        if (this.tokentype === CSL.START) {
          state.build.names_flag = true;
          state.build.name_flag = false;
          state.build.names_level += 1;
          state.build.names_variables.push(this.variables);
          state.build.name_label.push({});
          func = function(state2) {
            state2.tmp.can_substitute.push(true);
            state2.tmp.name_node = {};
            state2.tmp.name_node.children = [];
            state2.nameOutput.init(this);
          };
          this.execs.push(func);
        }
        if (this.tokentype === CSL.END) {
          for (var i2 = 0, ilen = 3; i2 < ilen; i2 += 1) {
            var key2 = ["family", "given", "et-al"][i2];
            this[key2] = state.build[key2];
            if (state.build.names_level === 1) {
              state.build[key2] = void 0;
            }
          }
          this.label = state.build.name_label[state.build.name_label.length - 1];
          state.build.names_level += -1;
          state.build.names_variables.pop();
          state.build.name_label.pop();
          func = function(state2) {
            if (state2.tmp.etal_node) {
              this.etal_style = state2.tmp.etal_node;
            } else {
              this.etal_style = "empty";
            }
            this.etal_term = state2.getTerm(state2.tmp.etal_term, "long", 0);
            this.etal_prefix_single = " ";
            this.etal_prefix_multiple = state2.tmp.name_delimiter;
            if (state2.tmp["delimiter-precedes-et-al"] === "always") {
              this.etal_prefix_single = state2.tmp.name_delimiter;
            } else if (state2.tmp["delimiter-precedes-et-al"] === "never") {
              this.etal_prefix_multiple = " ";
            } else if (state2.tmp["delimiter-precedes-et-al"] === "after-inverted-name") {
              this.etal_prefix_single = state2.tmp.name_delimiter;
              this.etal_prefix_multiple = " ";
            }
            this.etal_suffix = "";
            if (!CSL.STARTSWITH_ROMANESQUE_REGEXP.test(this.etal_term)) {
              if (this.etal_prefix_single === " ") {
                this.etal_prefix_single = "";
              }
              if (this.etal_prefix_multiple === " ") {
                this.etal_prefix_multiple = "";
              }
              if (this.etal_suffix === " ") {
                this.etal_suffix = "";
              }
            }
            for (var i3 = 0, ilen2 = 3; i3 < ilen2; i3 += 1) {
              var key3 = ["family", "given"][i3];
              state2.nameOutput[key3] = this[key3];
            }
            state2.nameOutput["with"] = this["with"];
            var mywith = "with";
            var with_default_prefix = "";
            var with_suffix = "";
            if (CSL.STARTSWITH_ROMANESQUE_REGEXP.test(mywith)) {
              with_default_prefix = " ";
              with_suffix = " ";
            }
            var thewith = {};
            thewith.single = new CSL.Blob(mywith);
            thewith.single.strings.suffix = with_suffix;
            thewith.multiple = new CSL.Blob(mywith);
            thewith.multiple.strings.suffix = with_suffix;
            if (state2.inheritOpt(state2.nameOutput.name, "delimiter-precedes-last") === "always") {
              thewith.single.strings.prefix = state2.inheritOpt(this, "delimiter", "names-delimiter");
              thewith.multiple.strings.prefix = state2.inheritOpt(this, "delimiter", "names-delimiter");
            } else if (state2.inheritOpt(state2.nameOutput.name, "delimiter-precedes-last") === "contextual") {
              thewith.single.strings.prefix = with_default_prefix;
              thewith.multiple.strings.prefix = state2.inheritOpt(this, "delimiter", "names-delimiter");
            } else if (state2.inheritOpt(state2.nameOutput.name, "delimiter-precedes-last") === "after-inverted-name") {
              thewith.single.strings.prefix = state2.inheritOpt(this, "delimiter", "names-delimiter");
              thewith.multiple.strings.prefix = with_default_prefix;
            } else {
              thewith.single.strings.prefix = with_default_prefix;
              thewith.multiple.strings.prefix = with_default_prefix;
            }
            state2.nameOutput["with"] = thewith;
            state2.nameOutput.label = this.label;
            state2.nameOutput.etal_style = this.etal_style;
            state2.nameOutput.etal_term = this.etal_term;
            state2.nameOutput.etal_prefix_single = this.etal_prefix_single;
            state2.nameOutput.etal_prefix_multiple = this.etal_prefix_multiple;
            state2.nameOutput.etal_suffix = this.etal_suffix;
            state2.nameOutput.outputNames();
            state2.tmp["et-al-use-first"] = void 0;
            state2.tmp["et-al-min"] = void 0;
            state2.tmp["et-al-use-last"] = void 0;
          };
          this.execs.push(func);
          func = function(state2) {
            if (!state2.tmp.can_substitute.pop()) {
              state2.tmp.can_substitute.replace(false, CSL.LITERAL);
            }
            if (state2.tmp.can_substitute.mystack.length === 1) {
              state2.tmp.can_block_substitute = false;
            }
          };
          this.execs.push(func);
          state.build.name_flag = false;
        }
        target.push(this);
        if (this.tokentype === CSL.END || this.tokentype === CSL.SINGLETON) {
          state.build.substitute_level.pop();
          CSL.Util.substituteEnd.call(this, state, target);
        }
      }
    };
    CSL.Node.number = {
      build: function(state, target) {
        var func;
        CSL.Util.substituteStart.call(this, state, target);
        if (this.strings.form === "roman") {
          this.formatter = state.fun.romanizer;
        } else if (this.strings.form === "ordinal") {
          this.formatter = state.fun.ordinalizer;
        } else if (this.strings.form === "long-ordinal") {
          this.formatter = state.fun.long_ordinalizer;
        }
        if ("undefined" === typeof this.successor_prefix) {
          this.successor_prefix = state[state.build.area].opt.layout_delimiter;
        }
        if ("undefined" === typeof this.splice_prefix) {
          this.splice_prefix = state[state.build.area].opt.layout_delimiter;
        }
        func = function(state2, Item, item) {
          if (this.variables.length === 0) {
            return;
          }
          var varname;
          varname = this.variables[0];
          if ("undefined" === typeof item) {
            var item = {};
          }
          if (["locator", "locator-extra"].indexOf(varname) > -1) {
            if (state2.tmp.just_looking) {
              return;
            }
            if (!item[varname]) {
              return;
            }
          } else {
            if (!Item[varname]) {
              return;
            }
          }
          if (varname === "collection-number" && Item.type === "legal_case") {
            state2.tmp.renders_collection_number = true;
          }
          var node3 = this;
          if (state2.tmp.group_context.tip.force_suppress) {
            return false;
          }
          if (["locator", "locator-extra"].indexOf(varname) > -1) {
            state2.processNumber.call(state2, node3, item, varname, Item.type);
          } else {
            if (!state2.tmp.group_context.tip.condition && Item[varname]) {
              state2.tmp.just_did_number = ("" + Item[varname]).match(/[0-9]$/);
            }
            state2.processNumber.call(state2, node3, Item, varname, Item.type);
          }
          if (this.substring) {
            var val = Item[varname].slice(this.substring);
            state2.output.append(val, node3);
          } else {
            CSL.Util.outputNumericField(state2, varname, Item.id);
          }
          if (["locator", "locator-extra"].indexOf(this.variables_real[0]) > -1 && !state2.tmp.just_looking) {
            state2.tmp.done_vars.push(this.variables_real[0]);
            state2.tmp.group_context.tip.done_vars.push(this.variables_real[0]);
          }
        };
        this.execs.push(func);
        target.push(this);
        CSL.Util.substituteEnd.call(this, state, target);
      }
    };
    CSL.Node.sort = {
      build: function(state, target) {
        target = state[state.build.root + "_sort"].tokens;
        if (this.tokentype === CSL.START) {
          if (state.build.area === "citation") {
            state.opt.sort_citations = true;
          }
          state.build.area = state.build.root + "_sort";
          state.build.extension = "_sort";
          var func = function(state2, Item) {
            if (state2.opt.has_layout_locale) {
              var langspec = CSL.localeResolve(Item.language, state2.opt["default-locale"][0]);
              var sort_locales = state2[state2.tmp.area.slice(0, -5)].opt.sort_locales;
              var langForItem;
              for (var i2 = 0, ilen = sort_locales.length; i2 < ilen; i2 += 1) {
                langForItem = sort_locales[i2][langspec.bare];
                if (!langForItem) {
                  langForItem = sort_locales[i2][langspec.best];
                }
                if (langForItem) {
                  break;
                }
              }
              if (!langForItem) {
                langForItem = state2.opt["default-locale"][0];
              }
              state2.tmp.lang_sort_hold = state2.opt.lang;
              state2.opt.lang = langForItem;
            }
          };
          this.execs.push(func);
        }
        if (this.tokentype === CSL.END) {
          state.build.area = state.build.root;
          state.build.extension = "";
          var func = function(state2) {
            if (state2.opt.has_layout_locale) {
              state2.opt.lang = state2.tmp.lang_sort_hold;
              delete state2.tmp.lang_sort_hold;
            }
          };
          this.execs.push(func);
        }
        target.push(this);
      }
    };
    CSL.Node.substitute = {
      build: function(state, target) {
        var func;
        if (this.tokentype === CSL.START) {
          var choose_start = new CSL.Token("choose", CSL.START);
          CSL.Node.choose.build.call(choose_start, state, target);
          var if_singleton = new CSL.Token("if", CSL.SINGLETON);
          func = function() {
            if (state.tmp.value.length && !state.tmp.common_term_match_fail) {
              return true;
            }
            return false;
          };
          if_singleton.tests = [func];
          if_singleton.test = state.fun.match.any(if_singleton, state, if_singleton.tests);
          target.push(if_singleton);
          func = function(state2) {
            state2.tmp.can_block_substitute = true;
            if (state2.tmp.value.length && !state2.tmp.common_term_match_fail) {
              state2.tmp.can_substitute.replace(false, CSL.LITERAL);
            }
            state2.tmp.common_term_match_fail = false;
          };
          this.execs.push(func);
          target.push(this);
        }
        if (this.tokentype === CSL.END) {
          target.push(this);
          var choose_end = new CSL.Token("choose", CSL.END);
          CSL.Node.choose.build.call(choose_end, state, target);
        }
      }
    };
    CSL.Node.text = {
      build: function(state, target) {
        var func, form, plural2, id, num, number2, formatter, firstoutput, specialdelimiter, label, suffix, term;
        if (this.postponed_macro) {
          var group_start = CSL.Util.cloneToken(this);
          group_start.name = "group";
          group_start.tokentype = CSL.START;
          CSL.Node.group.build.call(group_start, state, target);
          CSL.expandMacro.call(state, this, target);
          var group_end = CSL.Util.cloneToken(this);
          group_end.name = "group";
          group_end.tokentype = CSL.END;
          if (this.postponed_macro === "juris-locator-label") {
            group_end.isJurisLocatorLabel = true;
          }
          CSL.Node.group.build.call(group_end, state, target);
        } else {
          CSL.Util.substituteStart.call(this, state, target);
          if (!this.variables_real) {
            this.variables_real = [];
          }
          if (!this.variables) {
            this.variables = [];
          }
          form = "long";
          plural2 = 0;
          if (this.strings.form) {
            form = this.strings.form;
          }
          if (this.strings.plural) {
            plural2 = this.strings.plural;
          }
          if ("citation-number" === this.variables_real[0] || "year-suffix" === this.variables_real[0] || "citation-label" === this.variables_real[0]) {
            if (this.variables_real[0] === "citation-number") {
              if (state.build.root === "citation") {
                state.opt.update_mode = CSL.NUMERIC;
              }
              if (state.build.root === "bibliography") {
                state.opt.bib_mode = CSL.NUMERIC;
              }
              if ("citation-number" === state[state.tmp.area].opt.collapse) {
                this.range_prefix = state.getTerm("citation-range-delimiter");
              }
              this.successor_prefix = state[state.build.area].opt.layout_delimiter;
              this.splice_prefix = state[state.build.area].opt.layout_delimiter;
              func = function(state2, Item, item) {
                id = "" + Item.id;
                if (!state2.tmp.just_looking) {
                  if (state2.tmp.area.slice(-5) === "_sort" && this.variables[0] === "citation-number") {
                    if (state2.tmp.area === "bibliography_sort") {
                      state2.tmp.group_context.tip.done_vars.push("citation-number");
                    }
                    if (state2.tmp.area === "citation_sort" && state2.bibliography_sort.tmp.citation_number_map) {
                      var num2 = state2.bibliography_sort.tmp.citation_number_map[state2.registry.registry[Item.id].seq];
                    } else {
                      var num2 = state2.registry.registry[Item.id].seq;
                    }
                    if (num2) {
                      num2 = CSL.Util.padding("" + num2);
                    }
                    state2.output.append(num2, this);
                    return;
                  }
                  if (item && item["author-only"]) {
                    state2.tmp.element_trace.replace("suppress-me");
                  }
                  if (state2.tmp.area !== "bibliography_sort" && state2.bibliography_sort.tmp.citation_number_map && state2.bibliography_sort.opt.citation_number_sort_direction === CSL.DESCENDING) {
                    num2 = state2.bibliography_sort.tmp.citation_number_map[state2.registry.registry[id].seq];
                  } else {
                    num2 = state2.registry.registry[id].seq;
                  }
                  if (state2.opt.citation_number_slug) {
                    state2.output.append(state2.opt.citation_number_slug, this);
                  } else {
                    number2 = new CSL.NumericBlob(state2, false, num2, this, Item.id);
                    if (state2.tmp.in_cite_predecessor) {
                      number2.suppress_splice_prefix = true;
                    }
                    state2.output.append(number2, "literal");
                  }
                }
              };
              this.execs.push(func);
            } else if (this.variables_real[0] === "year-suffix") {
              state.opt.has_year_suffix = true;
              if (state[state.tmp.area].opt.collapse === "year-suffix-ranged") {
                this.range_prefix = state.getTerm("citation-range-delimiter");
              }
              this.successor_prefix = state[state.build.area].opt.layout_delimiter;
              if (state[state.tmp.area].opt["year-suffix-delimiter"]) {
                this.successor_prefix = state[state.build.area].opt["year-suffix-delimiter"];
              }
              func = function(state2, Item) {
                if (state2.registry.registry[Item.id] && state2.registry.registry[Item.id].disambig.year_suffix !== false && !state2.tmp.just_looking) {
                  num = parseInt(state2.registry.registry[Item.id].disambig.year_suffix, 10);
                  if (state2[state2.tmp.area].opt.cite_group_delimiter) {
                    this.successor_prefix = state2[state2.tmp.area].opt.cite_group_delimiter;
                  }
                  number2 = new CSL.NumericBlob(state2, false, num, this, Item.id);
                  formatter = new CSL.Util.Suffixator(CSL.SUFFIX_CHARS);
                  number2.setFormatter(formatter);
                  state2.output.append(number2, "literal");
                  firstoutput = false;
                  for (var i2 = 0, ilen = state2.tmp.group_context.mystack.length; i2 < ilen; i2++) {
                    var flags = state2.tmp.group_context.mystack[i2];
                    if (!flags.variable_success && (flags.variable_attempt || !flags.variable_attempt && !flags.term_intended)) {
                      firstoutput = true;
                      break;
                    }
                  }
                  specialdelimiter = state2[state2.tmp.area].opt["year-suffix-delimiter"];
                  if (firstoutput && specialdelimiter && !state2.tmp.sort_key_flag) {
                    state2.tmp.splice_delimiter = state2[state2.tmp.area].opt["year-suffix-delimiter"];
                  }
                }
              };
              this.execs.push(func);
            } else if (this.variables_real[0] === "citation-label") {
              if (state.build.root === "bibliography") {
                state.opt.bib_mode = CSL.TRIGRAPH;
              }
              state.opt.has_year_suffix = true;
              func = function(state2, Item) {
                label = Item["citation-label"];
                if (!label) {
                  label = state2.getCitationLabel(Item);
                }
                if (!state2.tmp.just_looking) {
                  suffix = "";
                  if (state2.registry.registry[Item.id] && state2.registry.registry[Item.id].disambig.year_suffix !== false) {
                    num = parseInt(state2.registry.registry[Item.id].disambig.year_suffix, 10);
                    suffix = state2.fun.suffixator.format(num);
                  }
                  label += suffix;
                }
                state2.output.append(label, this);
              };
              this.execs.push(func);
            }
          } else {
            if (this.strings.term) {
              func = function(state2, Item) {
                var gender = state2.opt.gender[Item.type];
                var term2 = this.strings.term;
                term2 = state2.getTerm(term2, form, plural2, gender, CSL.TOLERANT, this.default_locale);
                var myterm;
                if (term2 !== "") {
                  state2.tmp.group_context.tip.term_intended = true;
                }
                CSL.UPDATE_GROUP_CONTEXT_CONDITION(state2, term2, null, this);
                if (!state2.tmp.term_predecessor && !(state2.opt["class"] === "in-text" && state2.tmp.area === "citation")) {
                  myterm = CSL.Output.Formatters["capitalize-first"](state2, term2);
                } else {
                  myterm = term2;
                }
                if (state2.tmp.strip_periods) {
                  myterm = myterm.replace(/\./g, "");
                } else {
                  for (var i2 = 0, ilen = this.decorations.length; i2 < ilen; i2 += 1) {
                    if ("@strip-periods" === this.decorations[i2][0] && "true" === this.decorations[i2][1]) {
                      myterm = myterm.replace(/\./g, "");
                      break;
                    }
                  }
                }
                state2.output.append(myterm, this);
                if (state2.tmp.can_block_substitute) {
                  state2.tmp.can_substitute.replace(false, CSL.LITERAL);
                }
              };
              this.execs.push(func);
              state.build.term = false;
              state.build.form = false;
              state.build.plural = false;
            } else if (this.variables_real.length) {
              func = function(state2, Item) {
                if (this.variables_real[0] !== "locator") {
                  state2.tmp.have_collapsed = false;
                }
                if (!state2.tmp.group_context.tip.condition && Item[this.variables[0]]) {
                  state2.tmp.just_did_number = false;
                }
                var val = Item[this.variables[0]];
                if (val && !state2.tmp.group_context.tip.condition) {
                  if (("" + val).slice(-1).match(/[0-9]/)) {
                    state2.tmp.just_did_number = true;
                  } else {
                    state2.tmp.just_did_number = false;
                  }
                }
              };
              this.execs.push(func);
              if (CSL.MULTI_FIELDS.indexOf(this.variables_real[0]) > -1 || this.variables_real[0].indexOf("-main") > -1 || this.variables_real[0].indexOf("-sub") > -1 || ["language-name", "language-name-original"].indexOf(this.variables_real[0]) > -1) {
                var abbrevfam = this.variables[0];
                var abbrfall = false;
                var altvar = false;
                var transfall = false;
                if (form === "short") {
                  if (this.variables_real[0].slice(-6) !== "-short") {
                    altvar = this.variables_real[0] + "-short";
                  }
                } else {
                  abbrevfam = false;
                }
                if (state.build.extension) {
                  transfall = true;
                } else {
                  transfall = true;
                  abbrfall = true;
                }
                func = state.transform.getOutputFunction(this.variables, abbrevfam, abbrfall, altvar, transfall);
              } else {
                if (CSL.CITE_FIELDS.indexOf(this.variables_real[0]) > -1) {
                  func = function(state2, Item, item) {
                    if (item && item[this.variables[0]]) {
                      state2.processNumber(this, item, this.variables[0], Item.type);
                      CSL.Util.outputNumericField(state2, this.variables[0], Item.id);
                      if (["locator", "locator-extra"].indexOf(this.variables_real[0]) > -1 && !state2.tmp.just_looking) {
                        state2.tmp.done_vars.push(this.variables_real[0]);
                      }
                    }
                  };
                } else if (["page", "page-first", "chapter-number", "collection-number", "edition", "issue", "number", "number-of-pages", "number-of-volumes", "volume"].indexOf(this.variables_real[0]) > -1) {
                  func = function(state2, Item) {
                    state2.processNumber(this, Item, this.variables[0], Item.type);
                    CSL.Util.outputNumericField(state2, this.variables[0], Item.id);
                  };
                } else if (["URL", "DOI"].indexOf(this.variables_real[0]) > -1) {
                  func = function(state2, Item) {
                    var value;
                    if (this.variables[0]) {
                      value = state2.getVariable(Item, this.variables[0], form);
                      if (value) {
                        if (this.variables[0] === "URL" && form === "short") {
                          value = value.replace(/(.*\.[^\/]+)\/.*/, "$1");
                          if (value.match(/\/\/www\./)) {
                            value = value.replace(/https?:\/\//, "");
                          }
                        }
                        if (state2.opt.development_extensions.wrap_url_and_doi) {
                          if (!this.decorations.length || this.decorations[0][0] !== "@" + this.variables[0]) {
                            var clonetoken = CSL.Util.cloneToken(this);
                            var groupblob = new CSL.Blob(null, null, "url-wrapper");
                            groupblob.decorations.push(["@DOI", "true"]);
                            if (this.variables_real[0] === "DOI") {
                              var prefix2;
                              if (this.strings.prefix && this.strings.prefix.match(/^.*https:\/\/doi\.org\/$/)) {
                                value = value.replace(/^https?:\/\/doi\.org\//, "");
                                if (value.match(/^https?:\/\//)) {
                                  prefix2 = "";
                                } else {
                                  prefix2 = "https://doi.org/";
                                }
                                clonetoken.strings.prefix = this.strings.prefix.slice(0, clonetoken.strings.prefix.length - 16);
                              }
                              var prefixblob = new CSL.Blob(prefix2);
                              var valueblob = new CSL.Blob(value);
                              groupblob.push(prefixblob);
                              groupblob.push(valueblob);
                              state2.output.append(groupblob, clonetoken, false, false, true);
                            } else {
                              var valueblob = new CSL.Blob(value);
                              groupblob.push(valueblob);
                              state2.output.append(groupblob, clonetoken, false, false, true);
                            }
                          } else {
                            state2.output.append(value, this, false, false, true);
                          }
                        } else {
                          if (this.decorations.length) {
                            for (var i2 = this.decorations.length - 1; i2 > -1; i2--) {
                              if (this.decorations[i2][0] === "@" + this.variables[0]) {
                                this.decorations = this.decorations.slice(0, i2).concat(this.decorations.slice(i2 + 1));
                              }
                            }
                          }
                          state2.output.append(value, this, false, false, true);
                        }
                      }
                    }
                  };
                } else if (this.variables_real[0] === "section") {
                  func = function(state2, Item) {
                    var value;
                    value = state2.getVariable(Item, this.variables[0], form);
                    if (value) {
                      state2.output.append(value, this);
                    }
                  };
                } else if (this.variables_real[0] === "hereinafter") {
                  func = function(state2, Item) {
                    var value = state2.transform.abbrevs["default"]["hereinafter"][Item.id];
                    if (value) {
                      state2.output.append(value, this);
                      state2.tmp.group_context.tip.variable_success = true;
                    }
                  };
                } else {
                  func = function(state2, Item) {
                    var value;
                    if (this.variables[0]) {
                      value = state2.getVariable(Item, this.variables[0], form);
                      if (value) {
                        value = "" + value;
                        value = value.split("\\").join("");
                        state2.output.append(value, this);
                      }
                    }
                  };
                }
              }
              this.execs.push(func);
            } else if (this.strings.value) {
              func = function(state2) {
                state2.tmp.group_context.tip.term_intended = true;
                CSL.UPDATE_GROUP_CONTEXT_CONDITION(state2, this.strings.value, true, this);
                state2.output.append(this.strings.value, this);
                if (state2.tmp.can_block_substitute) {
                  state2.tmp.can_substitute.replace(false, CSL.LITERAL);
                }
              };
              this.execs.push(func);
            }
          }
          target.push(this);
          CSL.Util.substituteEnd.call(this, state, target);
        }
      }
    };
    CSL.Node.intext = {
      build: function(state, target) {
        if (this.tokentype === CSL.START) {
          state.build.area = "intext";
          state.build.root = "intext";
          state.build.extension = "";
          var func = function(state2, Item) {
            state2.tmp.area = "intext";
            state2.tmp.root = "intext";
            state2.tmp.extension = "";
          };
          this.execs.push(func);
        }
        if (this.tokentype === CSL.END) {
          state.intext_sort = {
            opt: {
              sort_directions: state.citation_sort.opt.sort_directions
            }
          };
          state.intext.srt = state.citation.srt;
        }
        target.push(this);
      }
    };
    CSL.Attributes = {};
    CSL.Attributes["@disambiguate"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      if (arg2 === "true") {
        state.opt.has_disambiguate = true;
        var func = function(Item) {
          if (state.tmp.area === "bibliography") {
            if (state.tmp.disambiguate_count < state.registry.registry[Item.id].disambig.disambiguate) {
              state.tmp.disambiguate_count += 1;
              return true;
            }
          } else {
            state.tmp.disambiguate_maxMax += 1;
            if (state.tmp.disambig_settings.disambiguate && state.tmp.disambiguate_count < state.tmp.disambig_settings.disambiguate) {
              state.tmp.disambiguate_count += 1;
              return true;
            }
          }
          return false;
        };
        this.tests.push(func);
      } else if (arg2 === "check-ambiguity-and-backreference") {
        var func = function(Item) {
          if (state.registry.registry[Item.id].disambig.disambiguate && state.registry.registry[Item.id]["citation-count"] > 1) {
            return true;
          }
          return false;
        };
        this.tests.push(func);
      }
    };
    CSL.Attributes["@is-numeric"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var variables = arg2.split(/\s+/);
      var maketest = function(variable) {
        return function(Item, item) {
          var myitem = Item;
          if (item && ["locator", "locator-extra"].indexOf(variable) > -1) {
            myitem = item;
          }
          if (!myitem[variable]) {
            return false;
          }
          if (CSL.NUMERIC_VARIABLES.indexOf(variable) > -1) {
            if (!state.tmp.shadow_numbers[variable]) {
              state.processNumber(false, myitem, variable, Item.type);
            }
            if (state.tmp.shadow_numbers[variable].numeric) {
              return true;
            }
          } else if (["title", "version"].indexOf(variable) > -1) {
            if (myitem[variable].slice(-1) === "" + parseInt(myitem[variable].slice(-1), 10)) {
              return true;
            }
          }
          return false;
        };
      };
      for (var i2 = 0; i2 < variables.length; i2 += 1) {
        this.tests.push(maketest(variables[i2]));
      }
    };
    CSL.Attributes["@is-uncertain-date"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var variables = arg2.split(/\s+/);
      var maketest = function(myvariable) {
        return function(Item) {
          if (Item[myvariable] && Item[myvariable].circa) {
            return true;
          } else {
            return false;
          }
        };
      };
      for (var i2 = 0, ilen = variables.length; i2 < ilen; i2 += 1) {
        this.tests.push(maketest(variables[i2]));
      }
    };
    CSL.Attributes["@locator"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var trylabels = arg2.replace("sub verbo", "sub-verbo");
      trylabels = trylabels.split(/\s+/);
      var maketest = function(trylabel) {
        return function(Item, item) {
          var label;
          state.processNumber(false, item, "locator");
          label = state.tmp.shadow_numbers.locator.label;
          if (label && trylabel === label) {
            return true;
          } else {
            return false;
          }
        };
      };
      for (var i2 = 0, ilen = trylabels.length; i2 < ilen; i2 += 1) {
        this.tests.push(maketest(trylabels[i2]));
      }
    };
    CSL.Attributes["@position"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var tryposition;
      state.opt.update_mode = CSL.POSITION;
      var trypositions = arg2.split(/\s+/);
      var testSubsequentNear = function(Item, item) {
        if (item && CSL.POSITION_MAP[item.position] >= CSL.POSITION_MAP[CSL.POSITION_SUBSEQUENT] && item["near-note"]) {
          return true;
        }
        return false;
      };
      var testSubsequentNotNear = function(Item, item) {
        if (item && CSL.POSITION_MAP[item.position] == CSL.POSITION_MAP[CSL.POSITION_SUBSEQUENT] && !item["near-note"]) {
          return true;
        }
        return false;
      };
      var maketest = function(tryposition2) {
        return function(Item, item) {
          if (state.tmp.area === "bibliography") {
            return false;
          }
          if (item && "undefined" === typeof item.position) {
            item.position = 0;
          }
          if (item && typeof item.position === "number") {
            if (item.position === 0 && tryposition2 === 0) {
              return true;
            } else if (tryposition2 > 0 && CSL.POSITION_MAP[item.position] >= CSL.POSITION_MAP[tryposition2]) {
              return true;
            }
          } else if (tryposition2 === 0) {
            return true;
          }
          return false;
        };
      };
      for (var i2 = 0, ilen = trypositions.length; i2 < ilen; i2 += 1) {
        var tryposition = trypositions[i2];
        if (tryposition === "first") {
          tryposition = CSL.POSITION_FIRST;
        } else if (tryposition === "container-subsequent") {
          tryposition = CSL.POSITION_CONTAINER_SUBSEQUENT;
        } else if (tryposition === "subsequent") {
          tryposition = CSL.POSITION_SUBSEQUENT;
        } else if (tryposition === "ibid") {
          tryposition = CSL.POSITION_IBID;
        } else if (tryposition === "ibid-with-locator") {
          tryposition = CSL.POSITION_IBID_WITH_LOCATOR;
        }
        if ("near-note" === tryposition) {
          this.tests.push(testSubsequentNear);
        } else if ("far-note" === tryposition) {
          this.tests.push(testSubsequentNotNear);
        } else {
          this.tests.push(maketest(tryposition));
        }
      }
    };
    CSL.Attributes["@type"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var types6 = arg2.split(/\s+/);
      var maketest = function(mytype) {
        return function(Item) {
          var ret = Item.type === mytype;
          if (ret) {
            return true;
          } else {
            return false;
          }
        };
      };
      var tests = [];
      for (var i2 = 0, ilen = types6.length; i2 < ilen; i2 += 1) {
        tests.push(maketest(types6[i2]));
      }
      this.tests.push(state.fun.match.any(this, state, tests));
    };
    CSL.Attributes["@variable"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var func;
      this.variables = arg2.split(/\s+/);
      this.variables_real = this.variables.slice();
      if ("label" === this.name && this.variables[0]) {
        this.strings.term = this.variables[0];
      } else if (["names", "date", "text", "number"].indexOf(this.name) > -1) {
        func = function(state2, Item, item) {
          for (var i3 = this.variables.length - 1; i3 > -1; i3 += -1) {
            this.variables.pop();
          }
          for (var i3 = 0, ilen2 = this.variables_real.length; i3 < ilen2; i3++) {
            if (state2.tmp.done_vars.indexOf(this.variables_real[i3]) === -1) {
              this.variables.push(this.variables_real[i3]);
            }
            if (state2.tmp.can_block_substitute) {
              state2.tmp.done_vars.push(this.variables_real[i3]);
            }
          }
        };
        this.execs.push(func);
        func = function(state2, Item, item) {
          var output2 = false;
          for (var i3 = 0, ilen2 = this.variables.length; i3 < ilen2; i3++) {
            var variable = this.variables[i3];
            if (["authority", "committee"].indexOf(variable) > -1 && "string" === typeof Item[variable] && "names" === this.name) {
              var isValid4 = true;
              var rawNames = Item[variable].split(/\s*;\s*/);
              var rawMultiNames = {};
              if (Item.multi && Item.multi._keys[variable]) {
                for (var langTag in Item.multi._keys[variable]) {
                  rawMultiNames[langTag] = Item.multi._keys[variable][langTag].split(/\s*;\s*/);
                  if (rawMultiNames[langTag].length !== rawNames.length) {
                    isValid4 = false;
                    break;
                  }
                }
              }
              if (!isValid4) {
                rawNames = [Item[variable]];
                rawMultiNames = Item.multi._keys[variable];
              }
              for (var j = 0, jlen = rawNames.length; j < jlen; j++) {
                var creatorParent = {
                  literal: rawNames[j],
                  multi: {
                    _key: {}
                  }
                };
                for (var langTag in rawMultiNames) {
                  var creatorChild = {
                    literal: rawMultiNames[langTag][j]
                  };
                  creatorParent.multi._key[langTag] = creatorChild;
                }
                rawNames[j] = creatorParent;
              }
              Item[variable] = rawNames;
            }
            if (this.strings.form === "short" && !Item[variable]) {
              if (variable === "title") {
                variable = "title-short";
              } else if (variable === "container-title") {
                variable = "container-title-short";
              }
            }
            if (variable === "year-suffix") {
              output2 = true;
              break;
            } else if (CSL.DATE_VARIABLES.indexOf(variable) > -1) {
              if (state2.opt.development_extensions.locator_date_and_revision && "locator-date" === variable) {
                output2 = true;
                break;
              }
              if (Item[variable]) {
                for (var key2 in Item[variable]) {
                  if (this.dateparts.indexOf(key2) === -1 && "literal" !== key2) {
                    continue;
                  }
                  if (Item[variable][key2]) {
                    output2 = true;
                    break;
                  }
                }
                if (output2) {
                  break;
                }
              }
            } else if ("locator" === variable) {
              if (item && item.locator) {
                output2 = true;
              }
              break;
            } else if ("locator-extra" === variable) {
              if (item && item["locator-extra"]) {
                output2 = true;
              }
              break;
            } else if (["citation-number", "citation-label"].indexOf(variable) > -1) {
              output2 = true;
              break;
            } else if ("first-reference-note-number" === variable) {
              if (item && item["first-reference-note-number"]) {
                output2 = true;
              }
              break;
            } else if ("first-container-reference-note-number" === variable) {
              if (item && item["first-container-reference-note-number"]) {
                output2 = true;
              }
              break;
            } else if ("hereinafter" === variable) {
              if (state2.transform.abbrevs["default"].hereinafter[Item.id] && state2.sys.getAbbreviation && Item.id) {
                output2 = true;
              }
              break;
            } else if ("object" === typeof Item[variable]) {
              break;
            } else if ("string" === typeof Item[variable] && Item[variable]) {
              output2 = true;
              break;
            } else if ("number" === typeof Item[variable]) {
              output2 = true;
              break;
            }
            if (output2) {
              break;
            }
          }
          if (output2) {
            for (var i3 = 0, ilen2 = this.variables_real.length; i3 < ilen2; i3++) {
              var variable = this.variables_real[i3];
              if (variable !== "citation-number" || state2.tmp.area !== "bibliography") {
                state2.tmp.cite_renders_content = true;
              }
              state2.tmp.group_context.tip.variable_success = true;
              if (state2.tmp.can_substitute.value() && state2.tmp.area === "bibliography" && "string" === typeof Item[variable]) {
                state2.tmp.name_node.top = state2.output.current.value();
                state2.tmp.rendered_name.push(Item[variable]);
              }
            }
            state2.tmp.can_substitute.replace(false, CSL.LITERAL);
          } else {
            state2.tmp.group_context.tip.variable_attempt = true;
          }
        };
        this.execs.push(func);
      } else if (["if", "else-if", "condition"].indexOf(this.name) > -1) {
        var maketest = function(variable) {
          return function(Item, item) {
            var myitem = Item;
            if (item && ["locator", "locator-extra", "first-reference-note-number", "first-container-reference-note-number", "locator-date"].indexOf(variable) > -1) {
              myitem = item;
            }
            if (variable === "hereinafter" && state.sys.getAbbreviation && myitem.id) {
              if (state.transform.abbrevs["default"].hereinafter[myitem.id]) {
                return true;
              }
            } else if (myitem[variable]) {
              if ("number" === typeof myitem[variable] || "string" === typeof myitem[variable]) {
                return true;
              } else if ("object" === typeof myitem[variable]) {
                for (var key2 in myitem[variable]) {
                  if (myitem[variable][key2]) {
                    return true;
                  }
                }
              }
            }
            return false;
          };
        };
        for (var i2 = 0, ilen = this.variables.length; i2 < ilen; i2 += 1) {
          this.tests.push(maketest(this.variables[i2]));
        }
      }
    };
    CSL.Attributes["@page"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var trylabels = arg2.replace("sub verbo", "sub-verbo");
      trylabels = trylabels.split(/\s+/);
      var maketest = function(trylabel) {
        return function(Item) {
          var label;
          state.processNumber(false, Item, "page", Item.type);
          if (!state.tmp.shadow_numbers.page.label) {
            label = "page";
          } else if (state.tmp.shadow_numbers.page.label === "sub verbo") {
            label = "sub-verbo";
          } else {
            label = state.tmp.shadow_numbers.page.label;
          }
          if (state.tmp.shadow_numbers.page.values.length > 0) {
            if (state.tmp.shadow_numbers.page.values[0].gotosleepability) {
              state.tmp.shadow_numbers.page.values[0].labelVisibility = false;
            }
          }
          if (trylabel === label) {
            return true;
          } else {
            return false;
          }
        };
      };
      for (var i2 = 0, ilen = trylabels.length; i2 < ilen; i2 += 1) {
        this.tests.push(maketest(trylabels[i2]));
      }
    };
    CSL.Attributes["@number"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var trylabels = arg2.split(/\s+/);
      var maketest = function(trylabel) {
        return function(Item) {
          var label;
          state.processNumber(false, Item, "number", Item.type);
          if (!state.tmp.shadow_numbers.number.label) {
            label = "number";
          } else {
            label = state.tmp.shadow_numbers.number.label;
          }
          if (trylabel === label) {
            return true;
          } else {
            return false;
          }
        };
      };
      for (var i2 = 0, ilen = trylabels.length; i2 < ilen; i2 += 1) {
        this.tests.push(maketest(trylabels[i2]));
      }
    };
    CSL.Attributes["@jurisdiction"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var tryjurisdictions = arg2.split(/\s+/);
      var maketests = function(tryjurisdictions2) {
        return function(Item) {
          if (!Item.jurisdiction) {
            return false;
          }
          var jurisdiction = Item.jurisdiction;
          for (var i2 = 0, ilen = tryjurisdictions2.length; i2 < ilen; i2++) {
            if (jurisdiction === tryjurisdictions2[i2]) {
              return true;
            }
          }
          return false;
        };
      };
      this.tests.push(maketests(tryjurisdictions));
    };
    CSL.Attributes["@country"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var trycountries = arg2.split(/\s+/);
      var maketests = function(trycountries2) {
        return function(Item) {
          if (!Item.country) {
            return false;
          }
          var country = Item.country;
          for (var i2 = 0, ilen = trycountries2.length; i2 < ilen; i2++) {
            if (country === trycountries2[i2]) {
              return true;
            }
          }
          return false;
        };
      };
      this.tests.push(maketests(trycountries));
    };
    CSL.Attributes["@context"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var func = function() {
        if (["bibliography", "citation"].indexOf(arg2) > -1) {
          var area = state.tmp.area.slice(0, arg2.length);
          if (area === arg2) {
            return true;
          }
          return false;
        } else if ("alternative" === arg2) {
          return !!state.tmp.abort_alternative;
        }
      };
      this.tests.push(func);
    };
    CSL.Attributes["@has-year-only"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var trydates = arg2.split(/\s+/);
      var maketest = function(trydate) {
        return function(Item) {
          var date = Item[trydate];
          if (!date || date.month || date.season) {
            return false;
          } else {
            return true;
          }
        };
      };
      for (var i2 = 0, ilen = trydates.length; i2 < ilen; i2 += 1) {
        this.tests.push(maketest(trydates[i2]));
      }
    };
    CSL.Attributes["@has-to-month-or-season"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var trydates = arg2.split(/\s+/);
      var maketest = function(trydate) {
        return function(Item) {
          var date = Item[trydate];
          if (!date || !date.month && !date.season || date.day) {
            return false;
          } else {
            return true;
          }
        };
      };
      for (var i2 = 0, ilen = trydates.length; i2 < ilen; i2 += 1) {
        this.tests.push(maketest(trydates[i2]));
      }
    };
    CSL.Attributes["@has-day"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var trydates = arg2.split(/\s+/);
      var maketest = function(trydate) {
        return function(Item) {
          var date = Item[trydate];
          if (!date || !date.day) {
            return false;
          } else {
            return true;
          }
        };
      };
      for (var i2 = 0, ilen = trydates.length; i2 < ilen; i2 += 1) {
        this.tests.push(maketest(trydates[i2]));
      }
    };
    CSL.Attributes["@is-plural"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var func = function(Item) {
        var nameList = Item[arg2];
        if (nameList && nameList.length) {
          var persons = 0;
          var institutions = 0;
          var last_is_person = false;
          for (var i2 = 0, ilen = nameList.length; i2 < ilen; i2 += 1) {
            if (state.opt.development_extensions.spoof_institutional_affiliations && (nameList[i2].literal || nameList[i2].isInstitution && nameList[i2].family && !nameList[i2].given)) {
              institutions += 1;
              last_is_person = false;
            } else {
              persons += 1;
              last_is_person = true;
            }
          }
          if (persons > 1) {
            return true;
          } else if (institutions > 1) {
            return true;
          } else if (institutions && last_is_person) {
            return true;
          }
        }
        return false;
      };
      this.tests.push(func);
    };
    CSL.Attributes["@is-multiple"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var func = function(Item) {
        var val = "" + Item[arg2];
        var lst = val.split(/(?:,\s|\s(?:tot\sen\smet|līdz|oraz|and|bis|έως|και|och|až|do|en|et|in|ir|ja|og|sa|to|un|und|és|și|i|u|y|à|e|a|и|-|–)\s|—|\&)/);
        if (lst.length > 1) {
          return true;
        }
        return false;
      };
      this.tests.push(func);
    };
    CSL.Attributes["@locale"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var ret, langspec, lang, lst, i2, ilen;
      var locale_default = state.opt["default-locale"][0];
      if (this.name === "layout") {
        this.locale_raw = arg2;
        if (this.tokentype === CSL.START) {
          if (!state.opt.multi_layout) {
            state.opt.multi_layout = [];
          }
          var locale_data = [];
          var locales = arg2.split(/\s+/);
          var sort_locale = {};
          var localeMaster = CSL.localeResolve(locales[0], locale_default);
          locale_data.push(localeMaster);
          if (localeMaster.generic) {
            sort_locale[localeMaster.generic] = localeMaster.best;
          } else {
            sort_locale[localeMaster.best] = localeMaster.best;
          }
          for (var i2 = 1, ilen = locales.length; i2 < ilen; i2 += 1) {
            var localeServant = CSL.localeResolve(locales[i2], locale_default);
            locale_data.push(localeServant);
            if (localeServant.generic) {
              sort_locale[localeServant.generic] = localeMaster.best;
            } else {
              sort_locale[localeServant.best] = localeMaster.best;
            }
          }
          state[state.build.area].opt.sort_locales.push(sort_locale);
          state.opt.multi_layout.push(locale_data);
        }
        state.opt.has_layout_locale = true;
      } else {
        lst = arg2.split(/\s+/);
        var locale_bares = [];
        for (i2 = 0, ilen = lst.length; i2 < ilen; i2 += 1) {
          lang = lst[i2];
          langspec = CSL.localeResolve(lang, locale_default);
          if (lst[i2].length === 2) {
            locale_bares.push(langspec.bare);
          }
          state.localeConfigure(langspec, true);
          lst[i2] = langspec;
        }
        var locale_list = lst.slice();
        var maketest = function(locale_list2, locale_default2, locale_bares2) {
          return function(Item) {
            var res;
            ret = [];
            res = false;
            var langspec2 = false;
            var lang2;
            if (!Item.language) {
              lang2 = locale_default2;
            } else {
              lang2 = Item.language;
            }
            langspec2 = CSL.localeResolve(lang2, locale_default2);
            for (i2 = 0, ilen = locale_list2.length; i2 < ilen; i2 += 1) {
              if (langspec2.best === locale_list2[i2].best) {
                state.tmp.condition_lang_counter_arr.push(state.tmp.condition_counter);
                state.tmp.condition_lang_val_arr.push(state.opt.lang);
                state.opt.lang = locale_list2[0].best;
                res = true;
                break;
              }
            }
            if (!res && locale_bares2.indexOf(langspec2.bare) > -1) {
              state.tmp.condition_lang_counter_arr.push(state.tmp.condition_counter);
              state.tmp.condition_lang_val_arr.push(state.opt.lang);
              state.opt.lang = locale_list2[0].best;
              res = true;
            }
            return res;
          };
        };
        this.tests.push(maketest(locale_list, locale_default, locale_bares));
      }
    };
    CSL.Attributes["@alternative-node-internal"] = function(state) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var maketest = function() {
        return function() {
          return !state.tmp.abort_alternative;
        };
      };
      var me = this;
      this.tests.push(maketest(me));
    };
    CSL.Attributes["@locale-internal"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var langspec, lang, lst, i2, ilen;
      lst = arg2.split(/\s+/);
      this.locale_bares = [];
      for (i2 = 0, ilen = lst.length; i2 < ilen; i2 += 1) {
        lang = lst[i2];
        langspec = CSL.localeResolve(lang, state.opt["default-locale"][0]);
        if (lst[i2].length === 2) {
          this.locale_bares.push(langspec.bare);
        }
        state.localeConfigure(langspec);
        lst[i2] = langspec;
      }
      this.locale_default = state.opt["default-locale"][0];
      this.locale = lst[0].best;
      this.locale_list = lst.slice();
      var maketest = function(me2) {
        return function(Item) {
          var ret, res;
          ret = [];
          res = false;
          var langspec2 = false;
          if (Item.language) {
            lang = Item.language;
            langspec2 = CSL.localeResolve(lang, state.opt["default-locale"][0]);
            if (langspec2.best === state.opt["default-locale"][0]) {
              langspec2 = false;
            }
          }
          if (langspec2) {
            for (i2 = 0, ilen = me2.locale_list.length; i2 < ilen; i2 += 1) {
              if (langspec2.best === me2.locale_list[i2].best) {
                state.opt.lang = me2.locale;
                state.tmp.last_cite_locale = me2.locale;
                state.output.openLevel("empty");
                state.output.current.value().new_locale = me2.locale;
                res = true;
                break;
              }
            }
            if (!res && me2.locale_bares.indexOf(langspec2.bare) > -1) {
              state.opt.lang = me2.locale;
              state.tmp.last_cite_locale = me2.locale;
              state.output.openLevel("empty");
              state.output.current.value().new_locale = me2.locale;
              res = true;
            }
          }
          return res;
        };
      };
      var me = this;
      this.tests.push(maketest(me));
    };
    CSL.Attributes["@court-class"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var tryclasses = arg2.split(/\s+/);
      var maketest = function(tryclass) {
        return function(Item) {
          var cls = CSL.GET_COURT_CLASS(state, Item);
          if (cls === tryclass) {
            return true;
          } else {
            return false;
          }
        };
      };
      for (var i2 = 0, ilen = tryclasses.length; i2 < ilen; i2++) {
        this.tests.push(maketest(tryclasses[i2]));
      }
    };
    CSL.Attributes["@container-multiple"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var retval = "true" === arg2 ? true : false;
      var maketest = function(retval2) {
        return function(Item) {
          if (!state.tmp.container_item_count[Item.container_id]) {
            return !retval2;
          } else if (state.tmp.container_item_count[Item.container_id] > 1) {
            return retval2;
          }
          return !retval2;
        };
      };
      this.tests.push(maketest(retval));
    };
    CSL.Attributes["@container-subsequent"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var retval = "true" === arg2 ? true : false;
      var maketest = function(retval2) {
        return function(Item) {
          if (state.tmp.container_item_pos[Item.container_id] > 1) {
            return retval2;
          }
          return !retval2;
        };
      };
      this.tests.push(maketest(retval));
    };
    CSL.Attributes["@has-subunit"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var maketest = function(namevar) {
        return function(Item) {
          var subunit_count = 0;
          for (var i2 in Item[namevar]) {
            var name3 = Item[namevar][i2];
            if (!name3.given) {
              var institution = name3.literal ? name3.literal : name3.family;
              var length = institution.split("|").length;
              if (subunit_count === 0 || length < subunit_count) {
                subunit_count = length;
              }
            }
          }
          return subunit_count > 1;
        };
      };
      this.tests.push(maketest(arg2));
    };
    CSL.Attributes["@cite-form"] = function(state, arg2) {
      if (!this.tests) {
        this.tests = [];
      }
      ;
      var maketest = function(citeForm) {
        return function(Item) {
          if (Item["cite-form"] === citeForm) {
            return true;
          }
          return false;
        };
      };
      this.tests.push(maketest(arg2));
    };
    CSL.Attributes["@disable-duplicate-year-suppression"] = function(state, arg2) {
      state.opt.disable_duplicate_year_suppression = arg2.split(/\s+/);
    };
    CSL.Attributes["@consolidate-containers"] = function(state, arg2) {
      CSL.Attributes["@track-containers"](state, arg2);
      var args = arg2.split(/\s+/);
      state.bibliography.opt.consolidate_containers = args;
    };
    CSL.Attributes["@track-containers"] = function(state, arg2) {
      var args = arg2.split(/\s+/);
      if (!state.bibliography.opt.track_container_items) {
        state.bibliography.opt.track_container_items = [];
      }
      if (!state.bibliography.opt.consolidate_containers) {
        state.bibliography.opt.consolidate_containers = [];
      }
      state.bibliography.opt.track_container_items = state.bibliography.opt.track_container_items.concat(args);
    };
    CSL.Attributes["@parallel-first"] = function(state, arg2) {
      state.opt.parallel.enable = true;
      var vars = arg2.split(/\s+/);
      if (!state.opt.track_repeat) {
        state.opt.track_repeat = {};
      }
      this.parallel_first = {};
      for (var i2 in vars) {
        var v = vars[i2];
        this.parallel_first[v] = true;
        state.opt.track_repeat[v] = true;
      }
    };
    CSL.Attributes["@parallel-last"] = function(state, arg2) {
      state.opt.parallel.enable = true;
      var vars = arg2.split(/\s+/);
      if (!state.opt.track_repeat) {
        state.opt.track_repeat = {};
      }
      this.parallel_last = {};
      for (var i2 in vars) {
        var v = vars[i2];
        this.parallel_last[v] = true;
        state.opt.track_repeat[v] = true;
      }
    };
    CSL.Attributes["@parallel-last-to-first"] = function(state, arg2) {
      state.opt.parallel.enable = true;
      var vars = arg2.split(/\s+/);
      this.parallel_last_to_first = {};
      for (var i2 = 0, ilen = vars.length; i2 < ilen; i2++) {
        this.parallel_last_to_first[vars[i2]] = true;
      }
    };
    CSL.Attributes["@parallel-delimiter-override"] = function(state, arg2) {
      state.opt.parallel.enable = true;
      this.strings.set_parallel_delimiter_override = arg2;
    };
    CSL.Attributes["@parallel-delimiter-override-on-suppress"] = function(state, arg2) {
      state.opt.parallel.enable = true;
      this.strings.set_parallel_delimiter_override_on_suppress = arg2;
    };
    CSL.Attributes["@no-repeat"] = function(state, arg2) {
      state.opt.parallel.enable = true;
      var vars = arg2.split(/\s+/);
      if (!state.opt.track_repeat) {
        state.opt.track_repeat = {};
      }
      this.non_parallel = {};
      for (var i2 in vars) {
        var v = vars[i2];
        this.non_parallel[v] = true;
        state.opt.track_repeat[v] = true;
      }
    };
    CSL.Attributes["@require"] = function(state, arg2) {
      state.opt.use_context_condition = true;
      this.strings.require = arg2;
    };
    CSL.Attributes["@reject"] = function(state, arg2) {
      state.opt.use_context_condition = true;
      this.strings.reject = arg2;
    };
    CSL.Attributes["@require-comma-on-symbol"] = function(state, arg2) {
      state.opt.require_comma_on_symbol = arg2;
    };
    CSL.Attributes["@gender"] = function(state, arg2) {
      this.gender = arg2;
    };
    CSL.Attributes["@cslid"] = function(state, arg2) {
      this.cslid = parseInt(arg2, 10);
    };
    CSL.Attributes["@capitalize-if-first"] = function(state, arg2) {
      this.strings.capitalize_if_first_override = arg2;
    };
    CSL.Attributes["@label-capitalize-if-first"] = function(state, arg2) {
      this.strings.label_capitalize_if_first_override = arg2;
    };
    CSL.Attributes["@label-form"] = function(state, arg2) {
      this.strings.label_form_override = arg2;
    };
    CSL.Attributes["@part-separator"] = function(state, arg2) {
      this.strings["part-separator"] = arg2;
    };
    CSL.Attributes["@leading-noise-words"] = function(state, arg2) {
      this["leading-noise-words"] = arg2;
    };
    CSL.Attributes["@name-never-short"] = function(state, arg2) {
      this["name-never-short"] = arg2;
    };
    CSL.Attributes["@class"] = function(state, arg2) {
      state.opt["class"] = arg2;
    };
    CSL.Attributes["@version"] = function(state, arg2) {
      state.opt.version = arg2;
    };
    CSL.Attributes["@value"] = function(state, arg2) {
      this.strings.value = arg2;
    };
    CSL.Attributes["@name"] = function(state, arg2) {
      this.strings.name = arg2;
    };
    CSL.Attributes["@form"] = function(state, arg2) {
      this.strings.form = arg2;
    };
    CSL.Attributes["@date-parts"] = function(state, arg2) {
      this.strings["date-parts"] = arg2;
    };
    CSL.Attributes["@range-delimiter"] = function(state, arg2) {
      this.strings["range-delimiter"] = arg2;
    };
    CSL.Attributes["@macro"] = function(state, arg2) {
      this.postponed_macro = arg2;
    };
    CSL.Attributes["@term"] = function(state, arg2) {
      if (arg2 === "sub verbo") {
        this.strings.term = "sub-verbo";
      } else {
        this.strings.term = arg2;
      }
    };
    CSL.Attributes["@xmlns"] = function() {
    };
    CSL.Attributes["@lang"] = function(state, arg2) {
      if (arg2) {
        state.build.lang = arg2;
      }
    };
    CSL.Attributes["@lingo"] = function() {
    };
    CSL.Attributes["@macro-has-date"] = function() {
      this["macro-has-date"] = true;
    };
    CSL.Attributes["@suffix"] = function(state, arg2) {
      this.strings.suffix = arg2;
    };
    CSL.Attributes["@prefix"] = function(state, arg2) {
      this.strings.prefix = arg2;
    };
    CSL.Attributes["@delimiter"] = function(state, arg2) {
      this.strings.delimiter = arg2;
    };
    CSL.Attributes["@match"] = function(state, arg2) {
      this.match = arg2;
    };
    CSL.Attributes["@names-min"] = function(state, arg2) {
      var val = parseInt(arg2, 10);
      if (state[state.build.area].opt.max_number_of_names < val) {
        state[state.build.area].opt.max_number_of_names = val;
      }
      this.strings["et-al-min"] = val;
    };
    CSL.Attributes["@names-use-first"] = function(state, arg2) {
      this.strings["et-al-use-first"] = parseInt(arg2, 10);
    };
    CSL.Attributes["@names-use-last"] = function(state, arg2) {
      if (arg2 === "true") {
        this.strings["et-al-use-last"] = true;
      } else {
        this.strings["et-al-use-last"] = false;
      }
    };
    CSL.Attributes["@sort"] = function(state, arg2) {
      if (arg2 === "descending") {
        this.strings.sort_direction = CSL.DESCENDING;
      }
    };
    CSL.Attributes["@plural"] = function(state, arg2) {
      if ("always" === arg2 || "true" === arg2) {
        this.strings.plural = 1;
      } else if ("never" === arg2 || "false" === arg2) {
        this.strings.plural = 0;
      } else if ("contextual" === arg2) {
        this.strings.plural = false;
      }
    };
    CSL.Attributes["@has-publisher-and-publisher-place"] = function() {
      this.strings["has-publisher-and-publisher-place"] = true;
    };
    CSL.Attributes["@publisher-delimiter-precedes-last"] = function(state, arg2) {
      this.strings["publisher-delimiter-precedes-last"] = arg2;
    };
    CSL.Attributes["@publisher-delimiter"] = function(state, arg2) {
      this.strings["publisher-delimiter"] = arg2;
    };
    CSL.Attributes["@publisher-and"] = function(state, arg2) {
      this.strings["publisher-and"] = arg2;
    };
    CSL.Attributes["@givenname-disambiguation-rule"] = function(state, arg2) {
      if (CSL.GIVENNAME_DISAMBIGUATION_RULES.indexOf(arg2) > -1) {
        state.citation.opt["givenname-disambiguation-rule"] = arg2;
      }
    };
    CSL.Attributes["@collapse"] = function(state, arg2) {
      if (arg2) {
        state[this.name].opt.collapse = arg2;
      }
    };
    CSL.Attributes["@cite-group-delimiter"] = function(state, arg2) {
      if (arg2) {
        state[state.tmp.area].opt.cite_group_delimiter = arg2;
      }
    };
    CSL.Attributes["@names-delimiter"] = function(state, arg2) {
      state.setOpt(this, "names-delimiter", arg2);
    };
    CSL.Attributes["@name-form"] = function(state, arg2) {
      state.setOpt(this, "name-form", arg2);
    };
    CSL.Attributes["@subgroup-delimiter"] = function(state, arg2) {
      this.strings["subgroup-delimiter"] = arg2;
    };
    CSL.Attributes["@subgroup-delimiter-precedes-last"] = function(state, arg2) {
      this.strings["subgroup-delimiter-precedes-last"] = arg2;
    };
    CSL.Attributes["@name-delimiter"] = function(state, arg2) {
      state.setOpt(this, "name-delimiter", arg2);
    };
    CSL.Attributes["@et-al-min"] = function(state, arg2) {
      var val = parseInt(arg2, 10);
      if (state[state.build.area].opt.max_number_of_names < val) {
        state[state.build.area].opt.max_number_of_names = val;
      }
      state.setOpt(this, "et-al-min", val);
    };
    CSL.Attributes["@et-al-use-first"] = function(state, arg2) {
      state.setOpt(this, "et-al-use-first", parseInt(arg2, 10));
    };
    CSL.Attributes["@et-al-use-last"] = function(state, arg2) {
      if (arg2 === "true") {
        state.setOpt(this, "et-al-use-last", true);
      } else {
        state.setOpt(this, "et-al-use-last", false);
      }
    };
    CSL.Attributes["@et-al-subsequent-min"] = function(state, arg2) {
      var val = parseInt(arg2, 10);
      if (state[state.build.area].opt.max_number_of_names < val) {
        state[state.build.area].opt.max_number_of_names = val;
      }
      state.setOpt(this, "et-al-subsequent-min", val);
    };
    CSL.Attributes["@et-al-subsequent-use-first"] = function(state, arg2) {
      state.setOpt(this, "et-al-subsequent-use-first", parseInt(arg2, 10));
    };
    CSL.Attributes["@suppress-min"] = function(state, arg2) {
      this.strings["suppress-min"] = parseInt(arg2, 10);
    };
    CSL.Attributes["@suppress-max"] = function(state, arg2) {
      this.strings["suppress-max"] = parseInt(arg2, 10);
    };
    CSL.Attributes["@and"] = function(state, arg2) {
      state.setOpt(this, "and", arg2);
    };
    CSL.Attributes["@delimiter-precedes-last"] = function(state, arg2) {
      state.setOpt(this, "delimiter-precedes-last", arg2);
    };
    CSL.Attributes["@delimiter-precedes-et-al"] = function(state, arg2) {
      state.setOpt(this, "delimiter-precedes-et-al", arg2);
    };
    CSL.Attributes["@initialize-with"] = function(state, arg2) {
      state.setOpt(this, "initialize-with", arg2);
    };
    CSL.Attributes["@initialize"] = function(state, arg2) {
      if (arg2 === "false") {
        state.setOpt(this, "initialize", false);
      }
    };
    CSL.Attributes["@name-as-reverse-order"] = function(state, arg2) {
      this["name-as-reverse-order"] = arg2;
    };
    CSL.Attributes["@name-as-sort-order"] = function(state, arg2) {
      if (this.name === "style-options") {
        this["name-as-sort-order"] = arg2;
      } else {
        state.setOpt(this, "name-as-sort-order", arg2);
      }
    };
    CSL.Attributes["@sort-separator"] = function(state, arg2) {
      state.setOpt(this, "sort-separator", arg2);
    };
    CSL.Attributes["@require-match"] = function(state, arg2) {
      if (arg2 === "true") {
        this.requireMatch = true;
      }
    };
    CSL.Attributes["@exclude-types"] = function(state, arg2) {
      state.bibliography.opt.exclude_types = arg2.split(/\s+/);
    };
    CSL.Attributes["@exclude-with-fields"] = function(state, arg2) {
      state.bibliography.opt.exclude_with_fields = arg2.split(/\s+/);
    };
    CSL.Attributes["@year-suffix-delimiter"] = function(state, arg2) {
      state[this.name].opt["year-suffix-delimiter"] = arg2;
    };
    CSL.Attributes["@after-collapse-delimiter"] = function(state, arg2) {
      state[this.name].opt["after-collapse-delimiter"] = arg2;
    };
    CSL.Attributes["@subsequent-author-substitute"] = function(state, arg2) {
      state[this.name].opt["subsequent-author-substitute"] = arg2;
    };
    CSL.Attributes["@subsequent-author-substitute-rule"] = function(state, arg2) {
      state[this.name].opt["subsequent-author-substitute-rule"] = arg2;
    };
    CSL.Attributes["@disambiguate-add-names"] = function(state, arg2) {
      if (arg2 === "true") {
        state.opt["disambiguate-add-names"] = true;
      }
    };
    CSL.Attributes["@disambiguate-add-givenname"] = function(state, arg2) {
      if (arg2 === "true") {
        state.opt["disambiguate-add-givenname"] = true;
      }
    };
    CSL.Attributes["@disambiguate-add-year-suffix"] = function(state, arg2) {
      if (arg2 === "true" && state.opt.xclass !== "numeric") {
        state.opt["disambiguate-add-year-suffix"] = true;
      }
    };
    CSL.Attributes["@second-field-align"] = function(state, arg2) {
      if (arg2 === "flush" || arg2 === "margin") {
        state[this.name].opt["second-field-align"] = arg2;
      }
    };
    CSL.Attributes["@hanging-indent"] = function(state, arg2) {
      if (arg2 === "true") {
        if (state.opt.development_extensions.hanging_indent_legacy_number) {
          state[this.name].opt.hangingindent = 2;
        } else {
          state[this.name].opt.hangingindent = true;
        }
      }
    };
    CSL.Attributes["@line-spacing"] = function(state, arg2) {
      if (arg2 && arg2.match(/^[.0-9]+$/)) {
        state[this.name].opt["line-spacing"] = parseFloat(arg2, 10);
      }
    };
    CSL.Attributes["@entry-spacing"] = function(state, arg2) {
      if (arg2 && arg2.match(/^[.0-9]+$/)) {
        state[this.name].opt["entry-spacing"] = parseFloat(arg2, 10);
      }
    };
    CSL.Attributes["@near-note-distance"] = function(state, arg2) {
      state[this.name].opt["near-note-distance"] = parseInt(arg2, 10);
    };
    CSL.Attributes["@substring"] = function(state, arg2) {
      this.substring = parseInt(arg2, 10);
    };
    CSL.Attributes["@text-case"] = function(state, arg2) {
      var func = function(state2, Item) {
        if (arg2 === "normal") {
          this.text_case_normal = true;
        } else {
          this.strings["text-case"] = arg2;
          if (arg2 === "title") {
            if (Item.jurisdiction) {
              this.strings["text-case"] = "passthrough";
            }
          }
        }
      };
      this.execs.push(func);
    };
    CSL.Attributes["@page-range-format"] = function(state, arg2) {
      state.opt["page-range-format"] = arg2;
    };
    CSL.Attributes["@year-range-format"] = function(state, arg2) {
      state.opt["year-range-format"] = arg2;
    };
    CSL.Attributes["@default-locale"] = function(state, arg2) {
      if (this.name === "style") {
        var lst, len, pos, m2, ret;
        var m2 = arg2.match(/-x-(sort|translit|translat)-/g);
        if (m2) {
          for (pos = 0, len = m2.length; pos < len; pos += 1) {
            m2[pos] = m2[pos].replace(/^-x-/, "").replace(/-$/, "");
          }
        }
        lst = arg2.split(/-x-(?:sort|translit|translat)-/);
        ret = [lst[0]];
        for (pos = 1, len = lst.length; pos < len; pos += 1) {
          ret.push(m2[pos - 1]);
          ret.push(lst[pos]);
        }
        lst = ret.slice();
        len = lst.length;
        for (pos = 1; pos < len; pos += 2) {
          state.opt["locale-" + lst[pos]].push(lst[pos + 1].replace(/^\s*/g, "").replace(/\s*$/g, ""));
        }
        if (lst.length) {
          state.opt["default-locale"] = lst.slice(0, 1);
        } else {
          state.opt["default-locale"] = ["en"];
        }
      } else if (arg2 === "true") {
        this.default_locale = true;
      }
    };
    CSL.Attributes["@default-locale-sort"] = function(state, arg2) {
      state.opt["default-locale-sort"] = arg2;
    };
    CSL.Attributes["@demote-non-dropping-particle"] = function(state, arg2) {
      state.opt["demote-non-dropping-particle"] = arg2;
    };
    CSL.Attributes["@initialize-with-hyphen"] = function(state, arg2) {
      if (arg2 === "false") {
        state.opt["initialize-with-hyphen"] = false;
      }
    };
    CSL.Attributes["@institution-parts"] = function(state, arg2) {
      this.strings["institution-parts"] = arg2;
    };
    CSL.Attributes["@if-short"] = function(state, arg2) {
      if (arg2 === "true") {
        this.strings["if-short"] = true;
      }
    };
    CSL.Attributes["@substitute-use-first"] = function(state, arg2) {
      this.strings["substitute-use-first"] = parseInt(arg2, 10);
    };
    CSL.Attributes["@use-first"] = function(state, arg2) {
      this.strings["use-first"] = parseInt(arg2, 10);
    };
    CSL.Attributes["@use-last"] = function(state, arg2) {
      this.strings["use-last"] = parseInt(arg2, 10);
    };
    CSL.Attributes["@stop-first"] = function(state, arg2) {
      this.strings["stop-first"] = parseInt(arg2, 10);
    };
    CSL.Attributes["@stop-last"] = function(state, arg2) {
      this.strings["stop-last"] = parseInt(arg2, 10) * -1;
    };
    CSL.Attributes["@reverse-order"] = function(state, arg2) {
      if ("true" === arg2) {
        this.strings["reverse-order"] = true;
      }
    };
    CSL.Attributes["@display"] = function(state, arg2) {
      if (state.bibliography.tokens.length === 2) {
        state.opt.using_display = true;
      }
      this.strings.cls = arg2;
    };
    CSL.Stack = function(val, literal) {
      this.mystack = [];
      if (literal || val) {
        this.mystack.push(val);
      }
      this.tip = this.mystack[0];
    };
    CSL.Stack.prototype.push = function(val, literal) {
      if (literal || val) {
        this.mystack.push(val);
      } else {
        this.mystack.push("");
      }
      this.tip = this.mystack[this.mystack.length - 1];
    };
    CSL.Stack.prototype.clear = function() {
      this.mystack = [];
      this.tip = {};
    };
    CSL.Stack.prototype.replace = function(val, literal) {
      if (this.mystack.length === 0) {
        CSL.error("Internal CSL processor error: attempt to replace nonexistent stack item with " + val);
      }
      if (literal || val) {
        this.mystack[this.mystack.length - 1] = val;
      } else {
        this.mystack[this.mystack.length - 1] = "";
      }
      this.tip = this.mystack[this.mystack.length - 1];
    };
    CSL.Stack.prototype.pop = function() {
      var ret = this.mystack.pop();
      if (this.mystack.length) {
        this.tip = this.mystack[this.mystack.length - 1];
      } else {
        this.tip = {};
      }
      return ret;
    };
    CSL.Stack.prototype.value = function() {
      return this.mystack.slice(-1)[0];
    };
    CSL.Stack.prototype.length = function() {
      return this.mystack.length;
    };
    CSL.Parallel = function(state) {
      this.state = state;
    };
    CSL.Parallel.prototype.StartCitation = function(sortedItems, out) {
      this.state.tmp.suppress_repeats = [];
      if (sortedItems.length < 2) return;
      var idxEnd = 0;
      var parallelMatchList = false;
      var siblingRanges = [];
      for (var i2 = 0, ilen = sortedItems.length - 1; i2 < ilen; i2++) {
        var currItem = sortedItems[i2][0];
        var nextItem = sortedItems[i2 + 1][0];
        var freshMatchList = false;
        var info = {};
        if (sortedItems[i2][0].seeAlso && sortedItems[i2][0].seeAlso.length > 0 && !parallelMatchList) {
          freshMatchList = true;
          parallelMatchList = [sortedItems[i2][0].id].concat(sortedItems[i2][0].seeAlso);
          var tempMatchList = parallelMatchList.slice();
          var remainder = sortedItems.slice(i2);
          remainder[0][1].parallel = "first";
          for (var j = 0, jlen = remainder.length; j < jlen; j++) {
            var itemID = remainder[j][0].id;
            var ididx = tempMatchList.indexOf(itemID);
            idxEnd = false;
            if (ididx === -1) {
              idxEnd = i2 + j - 1;
            } else if (i2 + j === sortedItems.length - 1) {
              idxEnd = i2 + j;
            }
            if (idxEnd) {
              siblingRanges.push([i2, idxEnd]);
              break;
            } else {
              tempMatchList = tempMatchList.slice(0, ididx).concat(tempMatchList.slice(ididx + 1));
            }
          }
        }
        if (i2 > 0 && freshMatchList) {
          this.state.tmp.suppress_repeats[i2 - 1].START = true;
          freshMatchList = false;
        }
        for (var varname in this.state.opt.track_repeat) {
          if (!currItem[varname] || !nextItem[varname]) {
            info[varname] = false;
          } else if ("string" === typeof nextItem[varname] || "number" === typeof nextItem[varname]) {
            if (varname === "title" && currItem["title-short"] && nextItem["title-short"]) {
              var currVal = currItem["title-short"];
              var nextVal = nextItem["title-short"];
            } else {
              var currVal = currItem[varname];
              var nextVal = nextItem[varname];
            }
            if (currVal == nextVal) {
              info[varname] = true;
            } else {
              info[varname] = false;
            }
          } else if ("undefined" === typeof currItem[varname].length) {
            info[varname] = false;
            var currYear = currItem[varname].year;
            var nextYear = nextItem[varname].year;
            if (currYear && nextYear) {
              if (currYear == nextYear) {
                info[varname] = true;
              }
            }
          } else {
            var currVal = JSON.stringify(currItem[varname]);
            var nextVal = JSON.stringify(nextItem[varname]);
            if (currVal === nextVal) {
              info[varname] = true;
            } else {
              info[varname] = false;
            }
          }
        }
        if (!parallelMatchList) {
          info.ORPHAN = true;
        }
        if (idxEnd === i2) {
          info.END = true;
          parallelMatchList = false;
        }
        this.state.tmp.suppress_repeats.push(info);
      }
      for (var j = 0, jlen = siblingRanges.length; j < jlen; j++) {
        var masterID = sortedItems[siblingRanges[j][0]][0].id;
        this.state.registry.registry[masterID].master = true;
        this.state.registry.registry[masterID].siblings = [];
        var start = siblingRanges[j][0];
        var end = siblingRanges[j][1];
        for (var k = start; k < end; k++) {
          this.state.tmp.suppress_repeats[k].SIBLING = true;
          var siblingID = sortedItems[k + 1][0].id;
          sortedItems[k + 1][1].parallel = "other";
          this.state.registry.registry[masterID].siblings.push(siblingID);
        }
      }
    };
    CSL.Parallel.prototype.checkRepeats = function(params) {
      var idx = this.state.tmp.cite_index;
      if (this.state.tmp.suppress_repeats) {
        if (params.parallel_first && Object.keys(params.parallel_first).length > 0) {
          var arr = [{}].concat(this.state.tmp.suppress_repeats);
          var ret = true;
          for (var varname in params.parallel_first) {
            if (!arr[idx][varname] || arr[idx].START) {
              ret = false;
            }
          }
          return ret;
        }
        if (params.parallel_last && Object.keys(params.parallel_last).length > 0) {
          var arr = this.state.tmp.suppress_repeats.concat([{}]);
          var ret = Object.keys(params.parallel_last).length > 0 ? true : false;
          for (var varname in params.parallel_last) {
            if (!arr[idx][varname] || arr[idx].END) {
              ret = false;
            }
          }
          return ret;
        }
        if (params.non_parallel && Object.keys(params.non_parallel).length > 0) {
          var arr = [{}].concat(this.state.tmp.suppress_repeats);
          var ret = true;
          for (var varname in params.non_parallel) {
            if (!arr[idx][varname]) {
              ret = false;
            }
          }
          return ret;
        }
      }
      return false;
    };
    CSL.Util = {};
    CSL.Util.Match = function() {
      this.any = function(token, state, tests) {
        return function(Item, item) {
          for (var i2 = 0, ilen = tests.length; i2 < ilen; i2 += 1) {
            var result = tests[i2](Item, item);
            if (result) {
              return true;
            }
          }
          return false;
        };
      };
      this.none = function(token, state, tests) {
        return function(Item, item) {
          for (var i2 = 0, ilen = tests.length; i2 < ilen; i2 += 1) {
            var result = tests[i2](Item, item);
            if (result) {
              return false;
            }
          }
          return true;
        };
      };
      this.all = function(token, state, tests) {
        return function(Item, item) {
          for (var i2 = 0, ilen = tests.length; i2 < ilen; i2 += 1) {
            var result = tests[i2](Item, item);
            if (!result) {
              return false;
            }
          }
          return true;
        };
      };
      this[void 0] = this.all;
      this.nand = function(token, state, tests) {
        return function(Item, item) {
          for (var i2 = 0, ilen = tests.length; i2 < ilen; i2 += 1) {
            var result = tests[i2](Item, item);
            if (!result) {
              return true;
            }
          }
          return false;
        };
      };
    };
    CSL.Transform = function(state) {
      this.abbrevs = {};
      this.abbrevs["default"] = new state.sys.AbbreviationSegments();
      function getCountryOrJurisdiction(variable, normalizedKey, quashCountry) {
        var value = "";
        if (state.sys.getHumanForm) {
          if (variable === "country") {
            value = state.sys.getHumanForm(normalizedKey.toLowerCase(), false, true);
            value = value.split("|")[0];
          } else if (variable === "jurisdiction") {
            value = state.sys.getHumanForm(normalizedKey.toLowerCase(), false, true);
            if (!quashCountry) {
              value = value.split("|").slice(1).join(", ");
            } else {
              value = "";
            }
          }
        }
        return value;
      }
      function abbreviate(state2, tok, Item, altvar, basevalue, family_var, use_field) {
        var value = "";
        var myabbrev_family = CSL.FIELD_CATEGORY_REMAP[family_var];
        var preferredJurisdiction;
        if (!myabbrev_family) {
          return basevalue;
        }
        var variable = family_var;
        var normalizedKey = basevalue;
        if (state2.sys.normalizeAbbrevsKey) {
          normalizedKey = state2.sys.normalizeAbbrevsKey(family_var, basevalue);
        }
        var quashCountry = false;
        if (variable === "jurisdiction" && normalizedKey) {
          quashCountry = normalizedKey.indexOf(":") === -1;
        }
        if (["jurisdiction", "country"].indexOf(family_var) > -1 && basevalue === basevalue.toLowerCase()) {
          normalizedKey = basevalue.toUpperCase();
        }
        if (state2.sys.getAbbreviation) {
          if (["jurisdiction", "country", "language-name", "language-name-original"].indexOf(variable) > -1) {
            preferredJurisdiction = "default";
          } else if (Item.jurisdiction) {
            preferredJurisdiction = Item.jurisdiction;
          } else {
            preferredJurisdiction = "default";
          }
          var jurisdiction = state2.transform.loadAbbreviation(preferredJurisdiction, myabbrev_family, normalizedKey, Item.language);
          if (state2.transform.abbrevs[jurisdiction][myabbrev_family] && normalizedKey) {
            var abbrev = state2.transform.abbrevs[jurisdiction][myabbrev_family][normalizedKey];
            if (tok.strings.form === "short" && abbrev) {
              if (quashCountry) {
                value = "";
              } else {
                value = abbrev;
              }
            } else {
              value = getCountryOrJurisdiction(variable, normalizedKey, quashCountry);
            }
          }
        }
        if (!value && (!state2.opt.development_extensions.require_explicit_legal_case_title_short || Item.type !== "legal_case") && altvar && Item[altvar] && use_field) {
          value = Item[altvar];
        }
        if (!value && !state2.sys.getAbbreviation && state2.sys.getHumanForm) {
          value = getCountryOrJurisdiction(variable, normalizedKey, quashCountry);
        }
        if (!value && !quashCountry && (!state2.sys.getHumanForm || variable !== "jurisdiction")) {
          value = basevalue;
        }
        if (state2.opt.development_extensions.force_title_abbrev_fallback) {
          if (variable === "title" && value === basevalue && Item["title-short"]) {
            value = Item["title-short"];
          }
        }
        return value;
      }
      function getFieldLocale(Item, field) {
        var ret = state.opt["default-locale"][0].slice(0, 2);
        var localeRex;
        if (state.opt.development_extensions.strict_text_case_locales) {
          localeRex = new RegExp("^([a-zA-Z]{2})(?:$|-.*| .*)");
        } else {
          localeRex = new RegExp("^([a-zA-Z]{2})(?:$|-.*|.*)");
        }
        if (Item.language) {
          var m2 = ("" + Item.language).match(localeRex);
          if (m2) {
            ret = m2[1];
          } else {
            ret = "tlh";
          }
        }
        if (Item.multi && Item.multi && Item.multi.main && Item.multi.main[field]) {
          ret = Item.multi.main[field];
        }
        if (!state.opt.development_extensions.strict_text_case_locales || state.opt.development_extensions.normalize_lang_keys_to_lowercase) {
          ret = ret.toLowerCase();
        }
        return ret;
      }
      function getTextSubField(Item, field, locale_type, use_default, stopOrig, family_var) {
        var opt, o, ret, opts;
        var usedOrig = stopOrig;
        var usingOrig = false;
        if (!Item[field]) {
          return {
            name: "",
            usedOrig: stopOrig,
            token: CSL.Util.cloneToken(this)
          };
        }
        var stickyLongForm = false;
        if (CSL.VARIABLES_WITH_SHORT_FORM.indexOf(field) > -1 && family_var) {
          field = field + "-short";
          stickyLongForm = true;
        }
        var breakMe = false;
        var firstValue = null;
        var fieldsToTry = [];
        if (field.slice(-6) === "-short") {
          fieldsToTry.push(field);
          fieldsToTry.push(field.slice(0, -6));
        } else {
          fieldsToTry.push(field);
        }
        for (var h4 = 0, hlen = fieldsToTry.length; h4 < hlen; h4++) {
          var variantMatch = false;
          var field = fieldsToTry[h4];
          ret = { name: "", usedOrig: stopOrig, locale: getFieldLocale(Item, field) };
          opts = state.opt[locale_type] ? state.opt[locale_type].slice() : [];
          var hasVal = false;
          if (locale_type === "locale-orig") {
            if (!stopOrig) {
              ret.name = Item[field];
              ret.usedOrig = false;
            }
            hasVal = true;
            usingOrig = true;
          } else if (use_default && ("undefined" === typeof opts || opts.length === 0)) {
            ret.name = Item[field];
            ret.usedOrig = true;
            hasVal = true;
            usingOrig = true;
          }
          if (!hasVal) {
            for (var i2 = 0, ilen = opts.length; i2 < ilen; i2 += 1) {
              opt = opts[i2];
              o = opt.split(/[\-_]/)[0];
              if (opt && Item.multi && Item.multi._keys[field] && Item.multi._keys[field][opt]) {
                ret.name = Item.multi._keys[field][opt];
                ret.locale = opt;
                hasVal = true;
                variantMatch = true;
                usingOrig = false;
                break;
              } else if (o && Item.multi && Item.multi._keys[field] && Item.multi._keys[field][o]) {
                ret.name = Item.multi._keys[field][o];
                ret.locale = o;
                hasVal = true;
                variantMatch = true;
                usingOrig = false;
                break;
              }
            }
            if (!ret.name && use_default) {
              ret = { name: Item[field], usedOrig: true, locale: getFieldLocale(Item, field) };
              usingOrig = true;
            }
          }
          ret.token = CSL.Util.cloneToken(this);
          if (h4 === 0) {
            if (variantMatch) {
              ret.found_variant_ok = true;
            }
            firstValue = ret;
            if (!stickyLongForm && ("undefined" === typeof opts || opts.length === 0)) {
              breakMe = true;
            }
            if (variantMatch) {
              breakMe = true;
            }
          } else {
            if (!stickyLongForm && !variantMatch && firstValue) {
              ret = firstValue;
              field = fieldsToTry[0];
            } else if (variantMatch) {
              ret.found_variant_ok = true;
            }
          }
          if (["title", "container-title"].indexOf(field) > -1) {
            if (!usedOrig && (!ret.token.strings["text-case"] || ret.token.strings["text-case"] === "sentence" || ret.token.strings["text-case"] === "normal")) {
              var locale = state.opt.lang;
              var lang;
              if (usingOrig) {
                lang = false;
              } else {
                lang = ret.locale;
              }
              var seg = field.slice(0, -5);
              var sentenceCase = ret.token.strings["text-case"] === "sentence" ? true : false;
              ret.name = CSL.titlecaseSentenceOrNormal(state, Item, seg, lang, sentenceCase);
              delete ret.token.strings["text-case"];
            }
          }
          if (breakMe) {
            break;
          }
        }
        return ret;
      }
      this.getTextSubField = getTextSubField;
      function loadAbbreviation(jurisdiction, category, orig, lang) {
        if (!jurisdiction) {
          jurisdiction = "default";
        }
        var country = jurisdiction.split(":")[0];
        var domain = CSL.getAbbrevsDomain(state, country, lang);
        if (domain) {
          jurisdiction += "@" + domain;
        }
        if (!orig) {
          if (!state.transform.abbrevs[jurisdiction]) {
            state.transform.abbrevs[jurisdiction] = new state.sys.AbbreviationSegments();
          }
          if (!state.transform.abbrevs[jurisdiction][category]) {
            state.transform.abbrevs[jurisdiction][category] = {};
          }
          return jurisdiction;
        }
        if (state.sys.getAbbreviation) {
          jurisdiction = state.sys.getAbbreviation(state.opt.styleID, state.transform.abbrevs, jurisdiction, category, orig);
          if (!jurisdiction) {
            jurisdiction = "default";
            if (domain) {
              jurisdiction += "@" + domain;
            }
          }
        }
        return jurisdiction;
      }
      this.loadAbbreviation = loadAbbreviation;
      function publisherCheck(tok, Item, primary, family_var) {
        var varname = tok.variables[0];
        if (state.publisherOutput && primary) {
          if (["publisher", "publisher-place"].indexOf(varname) === -1) {
            return false;
          } else {
            state.publisherOutput[varname + "-token"] = tok;
            state.publisherOutput.varlist.push(varname);
            var lst = primary.split(/;\s*/);
            if (lst.length === state.publisherOutput[varname + "-list"].length) {
              state.publisherOutput[varname + "-list"] = lst;
            }
            for (var i2 = 0, ilen = lst.length; i2 < ilen; i2 += 1) {
              lst[i2] = abbreviate(state, tok, Item, false, lst[i2], family_var, true);
            }
            state.tmp[varname + "-token"] = tok;
            return true;
          }
        }
        return false;
      }
      function citeFormCheck(Item, value) {
        var m2 = value.match(/^#([0-9]+).*>>>/);
        if (m2 && m2[1]) {
          Item["cite-form"] = m2[1];
        }
      }
      function quashCheck(jurisdiction, value) {
        var m2 = value.match(/^(?:#[0-9]+)*(?:!((?:[-_a-z]+(?:(?:.*)))(?:,(?:[-_a-z]+(?:(?:.*))))*))*>>>/);
        if (m2) {
          value = value.slice(m2[0].length);
          if (m2[1]) {
            var fields = m2[1].split(",");
            for (var i2 = 0, ilen = fields.length; i2 < ilen; i2 += 1) {
              var rawField = fields[i2];
              var mm = rawField.match(/^([-_a-z]+)(?:\:(.*))*$/);
              var field = mm[1];
              var trimmer = state.tmp.abbrev_trimmer;
              if (mm[2]) {
                if (trimmer && jurisdiction) {
                  if (!trimmer[jurisdiction]) {
                    trimmer[jurisdiction] = {};
                  }
                  trimmer[jurisdiction][field] = mm[2];
                }
              } else if (state.tmp.done_vars.indexOf(field) === -1) {
                if (trimmer && jurisdiction) {
                  if (!trimmer.QUASHES[jurisdiction]) {
                    trimmer.QUASHES[jurisdiction] = {};
                  }
                  trimmer.QUASHES[jurisdiction][field] = true;
                }
                state.tmp.done_vars.push(field);
              }
            }
          }
        }
        return value;
      }
      this.quashCheck = quashCheck;
      function getOutputFunction(variables, family_var, abbreviation_fallback, alternative_varname) {
        var localesets;
        var langPrefs = CSL.LangPrefsMap[variables[0]];
        if (!langPrefs) {
          localesets = false;
        } else {
          localesets = state.opt["cite-lang-prefs"][langPrefs];
        }
        return function(state2, Item, item) {
          var primary, primary_locale, secondary, secondary_locale, tertiary, tertiary_locale, primary_tok;
          if (!variables[0] || !Item[variables[0]] && !Item[alternative_varname]) {
            return null;
          }
          if (!state2.tmp.just_looking && item && item["suppress-author"]) {
            if (!state2.tmp.probably_rendered_something && state2.tmp.can_substitute.length() > 1) {
              return null;
            }
          }
          var slot = { primary: false, secondary: false, tertiary: false };
          if (state2.tmp.area.slice(-5) === "_sort") {
            slot.primary = "locale-sort";
          } else {
            if (localesets && localesets.length === 1 && localesets[0] === "locale-orig") {
              slot.primary = "locale-orig";
              localesets = false;
            } else if (localesets && !state2.tmp.multi_layout) {
              var slotnames = ["primary", "secondary", "tertiary"];
              for (var i2 = 0, ilen = slotnames.length; i2 < ilen; i2 += 1) {
                if (localesets.length - 1 < i2) {
                  break;
                }
                if (localesets[i2]) {
                  slot[slotnames[i2]] = "locale-" + localesets[i2];
                }
              }
            } else {
              slot.primary = "locale-orig";
            }
          }
          if (variables[0] === "title-short" || state2.tmp.area !== "bibliography" && !(state2.tmp.area === "citation" && state2.opt.xclass === "note" && item && !item.position)) {
            slot.secondary = false;
            slot.tertiary = false;
          }
          if (state2.tmp.multi_layout) {
            slot.secondary = false;
            slot.tertiary = false;
          }
          if (state2.tmp["publisher-list"]) {
            if (variables[0] === "publisher") {
              state2.tmp["publisher-token"] = this;
            } else if (variables[0] === "publisher-place") {
              state2.tmp["publisher-place-token"] = this;
            }
            return null;
          }
          var oldLangArray = state2.tmp.lang_array.slice();
          var res = getTextSubField.call(this, Item, variables[0], slot.primary, true, null, family_var);
          primary = res.name;
          primary_locale = res.locale;
          var primary_tok = res.token;
          var primaryUsedOrig = res.usedOrig;
          if (family_var && !res.found_variant_ok) {
            primary = abbreviate(state2, primary_tok, Item, alternative_varname, primary, family_var, true);
            if (primary) {
              citeFormCheck(Item, primary);
              if (!state2.tmp.just_looking) {
                primary = quashCheck(Item.jurisdiction, primary);
              }
            }
          }
          if (publisherCheck(this, Item, primary, family_var)) {
            state2.tmp.lang_array = oldLangArray;
            return null;
          }
          secondary = false;
          tertiary = false;
          var secondary_tok;
          var tertiary_tok;
          if (slot.secondary) {
            res = getTextSubField.call(this, Item, variables[0], slot.secondary, false, res.usedOrig, null, family_var);
            secondary = res.name;
            secondary_locale = res.locale;
            secondary_tok = res.token;
            if (family_var && !res.found_variant_ok) {
              if (secondary) {
                secondary = abbreviate(state2, secondary_tok, Item, false, secondary, family_var, true);
              }
            }
          }
          if (slot.tertiary) {
            res = getTextSubField.call(this, Item, variables[0], slot.tertiary, false, res.usedOrig, null, family_var);
            tertiary = res.name;
            tertiary_locale = res.locale;
            tertiary_tok = res.token;
            if (family_var && !res.found_variant_ok) {
              if (tertiary) {
                tertiary = abbreviate(state2, tertiary_tok, Item, false, tertiary, family_var, true);
              }
            }
          }
          var primaryPrefix;
          if (slot.primary === "locale-translit") {
            primaryPrefix = state2.opt.citeAffixes[langPrefs][slot.primary].prefix;
          }
          if (primaryPrefix === "<i>" && variables[0] === "title" && !primaryUsedOrig) {
            var hasItalic = false;
            for (var i2 = 0, ilen = primary_tok.decorations.length; i2 < ilen; i2 += 1) {
              if (primary_tok.decorations[i2][0] === "@font-style" && primary_tok.decorations[i2][1] === "italic") {
                hasItalic = true;
              }
            }
            if (!hasItalic) {
              primary_tok.decorations.push(["@font-style", "italic"]);
            }
          }
          if (primary_locale !== "en" && primary_tok.strings["text-case"] === "title") {
            primary_tok.strings["text-case"] = "passthrough";
          }
          if ("title" === variables[0]) {
            primary = CSL.demoteNoiseWords(state2, primary, this["leading-noise-words"]);
          }
          if (secondary || tertiary) {
            state2.output.openLevel("empty");
            primary_tok.strings.suffix = primary_tok.strings.suffix.replace(/[ .,]+$/, "");
            if (primary_locale) {
              state2.tmp.lang_array = [primary_locale].concat(oldLangArray);
            }
            CSL.UPDATE_GROUP_CONTEXT_CONDITION(state2, null, null, primary_tok, primary_tok.strings.prefix + primary);
            state2.output.append(primary, primary_tok);
            state2.tmp.probably_rendered_something = true;
            if (primary === secondary) {
              secondary = false;
            }
            if (secondary) {
              secondary_tok.strings.prefix = state2.opt.citeAffixes[langPrefs][slot.secondary].prefix;
              secondary_tok.strings.suffix = state2.opt.citeAffixes[langPrefs][slot.secondary].suffix;
              if (!secondary_tok.strings.prefix) {
                secondary_tok.strings.prefix = " ";
              }
              for (var i2 = secondary_tok.decorations.length - 1; i2 > -1; i2 += -1) {
                if (["@quotes/true", "@font-style/italic", "@font-style/oblique", "@font-weight/bold"].indexOf(secondary_tok.decorations[i2].join("/")) > -1) {
                  secondary_tok.decorations = secondary_tok.decorations.slice(0, i2).concat(secondary_tok.decorations.slice(i2 + 1));
                }
              }
              if (secondary_locale !== "en" && secondary_tok.strings["text-case"] === "title") {
                secondary_tok.strings["text-case"] = "passthrough";
              }
              if (secondary_locale) {
                state2.tmp.lang_array = [secondary_locale].concat(oldLangArray);
              }
              var secondary_outer = new CSL.Token();
              secondary_outer.decorations.push(["@font-style", "normal"]);
              secondary_outer.decorations.push(["@font-weight", "normal"]);
              state2.output.openLevel(secondary_outer);
              state2.output.append(secondary, secondary_tok);
              state2.output.closeLevel();
              var blob_obj = state2.output.current.value();
              var blobs_pos = state2.output.current.value().blobs.length - 1;
            }
            if (primary === tertiary) {
              tertiary = false;
            }
            if (tertiary) {
              tertiary_tok.strings.prefix = state2.opt.citeAffixes[langPrefs][slot.tertiary].prefix;
              tertiary_tok.strings.suffix = state2.opt.citeAffixes[langPrefs][slot.tertiary].suffix;
              if (!tertiary_tok.strings.prefix) {
                tertiary_tok.strings.prefix = " ";
              }
              for (var i2 = tertiary_tok.decorations.length - 1; i2 > -1; i2 += -1) {
                if (["@quotes/true", "@font-style/italic", "@font-style/oblique", "@font-weight/bold"].indexOf(tertiary_tok.decorations[i2].join("/")) > -1) {
                  tertiary_tok.decorations = tertiary_tok.decorations.slice(0, i2).concat(tertiary_tok.decorations.slice(i2 + 1));
                }
              }
              if (tertiary_locale !== "en" && tertiary_tok.strings["text-case"] === "title") {
                tertiary_tok.strings["text-case"] = "passthrough";
              }
              if (tertiary_locale) {
                state2.tmp.lang_array = [tertiary_locale].concat(oldLangArray);
              }
              var tertiary_outer = new CSL.Token();
              tertiary_outer.decorations.push(["@font-style", "normal"]);
              tertiary_outer.decorations.push(["@font-weight", "normal"]);
              state2.output.openLevel(tertiary_outer);
              state2.output.append(tertiary, tertiary_tok);
              state2.output.closeLevel();
              var blob_obj = state2.output.current.value();
              var blobs_pos = state2.output.current.value().blobs.length - 1;
            }
            state2.output.closeLevel();
          } else {
            if (primary_locale) {
              state2.tmp.lang_array = [primary_locale].concat(oldLangArray);
            }
            CSL.UPDATE_GROUP_CONTEXT_CONDITION(state2, null, null, primary_tok, primary_tok.strings.prefix + primary);
            state2.output.append(primary, primary_tok);
            state2.tmp.probably_rendered_something = true;
          }
          state2.tmp.lang_array = oldLangArray;
          if (state2.tmp.can_block_substitute) {
            state2.tmp.name_node.children.push(state2.output.current.value());
          }
          return null;
        };
      }
      this.getOutputFunction = getOutputFunction;
    };
    CSL.Token = function(name3, tokentype, conditional) {
      this.name = name3;
      this.strings = {};
      this.strings.delimiter = void 0;
      this.strings.prefix = "";
      this.strings.suffix = "";
      this.decorations = [];
      this.variables = [];
      this.execs = [];
      this.tokentype = tokentype;
    };
    CSL.Util.cloneToken = function(token) {
      var newtok, key2, pos, len;
      if ("string" === typeof token) {
        return token;
      }
      newtok = new CSL.Token(token.name, token.tokentype);
      for (var key2 in token.strings) {
        if (token.strings.hasOwnProperty(key2)) {
          newtok.strings[key2] = token.strings[key2];
        }
      }
      if (token.decorations) {
        newtok.decorations = [];
        for (pos = 0, len = token.decorations.length; pos < len; pos += 1) {
          newtok.decorations.push(token.decorations[pos].slice());
        }
      }
      if (token.variables) {
        newtok.variables = token.variables.slice();
      }
      if (token.execs) {
        newtok.execs = token.execs.slice();
        if (token.tests) {
          newtok.tests = token.tests.slice();
        }
      }
      return newtok;
    };
    CSL.AmbigConfig = function() {
      this.maxvals = [];
      this.minval = 1;
      this.names = [];
      this.givens = [];
      this.year_suffix = false;
      this.disambiguate = 0;
    };
    CSL.Blob = function(str2, token, levelname) {
      var len, pos, key2;
      this.levelname = levelname;
      if (token) {
        this.strings = { "prefix": "", "suffix": "" };
        for (var key2 in token.strings) {
          if (token.strings.hasOwnProperty(key2)) {
            this.strings[key2] = token.strings[key2];
          }
        }
        this.decorations = [];
        if (token.decorations === void 0) {
          len = 0;
        } else {
          len = token.decorations.length;
        }
        for (pos = 0; pos < len; pos += 1) {
          this.decorations.push(token.decorations[pos].slice());
        }
      } else {
        this.strings = {};
        this.strings.prefix = "";
        this.strings.suffix = "";
        this.strings.delimiter = "";
        this.decorations = [];
      }
      if ("string" === typeof str2) {
        this.blobs = str2;
      } else if (str2) {
        this.blobs = [str2];
      } else {
        this.blobs = [];
      }
      this.alldecor = [this.decorations];
    };
    CSL.Blob.prototype.push = function(blob) {
      if ("string" === typeof this.blobs) {
        CSL.error("Attempt to push blob onto string object");
      } else if (false !== blob) {
        blob.alldecor = blob.alldecor.concat(this.alldecor);
        this.blobs.push(blob);
      }
    };
    CSL.NumericBlob = function(state, particle, num, mother_token, id) {
      this.id = id;
      this.alldecor = [];
      this.num = num;
      this.particle = particle;
      this.blobs = num.toString();
      this.status = CSL.START;
      this.strings = {};
      if (mother_token) {
        if (mother_token.strings["text-case"]) {
          var textCase = mother_token.strings["text-case"];
          this.particle = CSL.Output.Formatters[textCase](state, this.particle);
          this.blobs = CSL.Output.Formatters[textCase](state, this.blobs);
        }
        this.gender = mother_token.gender;
        this.decorations = mother_token.decorations;
        this.strings.prefix = mother_token.strings.prefix;
        this.strings.suffix = mother_token.strings.suffix;
        this.strings["text-case"] = mother_token.strings["text-case"];
        this.successor_prefix = mother_token.successor_prefix;
        this.range_prefix = mother_token.range_prefix;
        this.splice_prefix = mother_token.splice_prefix;
        this.formatter = mother_token.formatter;
        if (!this.formatter) {
          this.formatter = new CSL.Output.DefaultFormatter();
        }
        if (this.formatter) {
          this.type = this.formatter.format(1);
        }
      } else {
        this.decorations = [];
        this.strings.prefix = "";
        this.strings.suffix = "";
        this.successor_prefix = "";
        this.range_prefix = "";
        this.splice_prefix = "";
        this.formatter = new CSL.Output.DefaultFormatter();
      }
    };
    CSL.NumericBlob.prototype.setFormatter = function(formatter) {
      this.formatter = formatter;
      this.type = this.formatter.format(1);
    };
    CSL.Output.DefaultFormatter = function() {
    };
    CSL.Output.DefaultFormatter.prototype.format = function(num) {
      return num.toString();
    };
    CSL.NumericBlob.prototype.checkNext = function(next, start) {
      if (start) {
        this.status = CSL.START;
        if ("object" === typeof next) {
          if (next.num === this.num + 1) {
            next.status = CSL.SUCCESSOR;
          } else {
            next.status = CSL.SEEN;
          }
        }
      } else if (!next || !next.num || this.type !== next.type || next.num !== this.num + 1) {
        if (this.status === CSL.SUCCESSOR_OF_SUCCESSOR) {
          this.status = CSL.END;
        }
        if ("object" === typeof next) {
          next.status = CSL.SEEN;
        }
      } else {
        if (this.status === CSL.START || this.status === CSL.SEEN) {
          next.status = CSL.SUCCESSOR;
        } else if (this.status === CSL.SUCCESSOR || this.status === CSL.SUCCESSOR_OF_SUCCESSOR) {
          if (this.range_prefix) {
            next.status = CSL.SUCCESSOR_OF_SUCCESSOR;
            this.status = CSL.SUPPRESS;
          } else {
            next.status = CSL.SUCCESSOR;
          }
        }
      }
    };
    CSL.NumericBlob.prototype.checkLast = function(last) {
      if (this.status === CSL.SEEN || last.num !== this.num - 1 && this.status === CSL.SUCCESSOR) {
        this.status = CSL.SUCCESSOR;
        return true;
      }
      return false;
    };
    CSL.Util.fixDateNode = function(parent2, pos, node3) {
      var form, variable, datexml, subnode, partname, attr, val, prefix2, suffix, children, subchildren, display, cslid;
      var lingo = this.cslXml.getAttributeValue(node3, "lingo");
      var default_locale = this.cslXml.getAttributeValue(node3, "default-locale");
      this.build.date_key = true;
      form = this.cslXml.getAttributeValue(node3, "form");
      var lingo;
      if (default_locale) {
        lingo = this.opt["default-locale"][0];
      } else {
        lingo = this.cslXml.getAttributeValue(node3, "lingo");
      }
      if (!this.getDate(form, default_locale)) {
        return parent2;
      }
      var dateparts = this.cslXml.getAttributeValue(node3, "date-parts");
      variable = this.cslXml.getAttributeValue(node3, "variable");
      prefix2 = this.cslXml.getAttributeValue(node3, "prefix");
      suffix = this.cslXml.getAttributeValue(node3, "suffix");
      display = this.cslXml.getAttributeValue(node3, "display");
      cslid = this.cslXml.getAttributeValue(node3, "cslid");
      datexml = this.cslXml.nodeCopy(this.getDate(form, default_locale));
      this.cslXml.setAttribute(datexml, "lingo", this.opt.lang);
      this.cslXml.setAttribute(datexml, "form", form);
      this.cslXml.setAttribute(datexml, "date-parts", dateparts);
      this.cslXml.setAttribute(datexml, "cslid", cslid);
      this.cslXml.setAttribute(datexml, "variable", variable);
      this.cslXml.setAttribute(datexml, "default-locale", default_locale);
      if (prefix2) {
        this.cslXml.setAttribute(datexml, "prefix", prefix2);
      }
      if (suffix) {
        this.cslXml.setAttribute(datexml, "suffix", suffix);
      }
      if (display) {
        this.cslXml.setAttribute(datexml, "display", display);
      }
      children = this.cslXml.children(datexml);
      for (var key2 in children) {
        subnode = children[key2];
        if ("date-part" === this.cslXml.nodename(subnode)) {
          partname = this.cslXml.getAttributeValue(subnode, "name");
          if (default_locale) {
            this.cslXml.setAttributeOnNodeIdentifiedByNameAttribute(datexml, "date-part", partname, "@default-locale", "true");
          }
        }
      }
      children = this.cslXml.children(node3);
      for (var key2 in children) {
        subnode = children[key2];
        if ("date-part" === this.cslXml.nodename(subnode)) {
          partname = this.cslXml.getAttributeValue(subnode, "name");
          subchildren = this.cslXml.attributes(subnode);
          for (attr in subchildren) {
            if ("@name" === attr) {
              continue;
            }
            if (lingo && lingo !== this.opt.lang) {
              if (["@suffix", "@prefix", "@form"].indexOf(attr) > -1) {
                continue;
              }
            }
            val = subchildren[attr];
            this.cslXml.setAttributeOnNodeIdentifiedByNameAttribute(datexml, "date-part", partname, attr, val);
          }
        }
      }
      if ("year" === this.cslXml.getAttributeValue(node3, "date-parts")) {
        this.cslXml.deleteNodeByNameAttribute(datexml, "month");
        this.cslXml.deleteNodeByNameAttribute(datexml, "day");
      } else if ("year-month" === this.cslXml.getAttributeValue(node3, "date-parts")) {
        this.cslXml.deleteNodeByNameAttribute(datexml, "day");
      } else if ("month-day" === this.cslXml.getAttributeValue(node3, "date-parts")) {
        var childNodes = this.cslXml.children(datexml);
        for (var i2 = 1, ilen = this.cslXml.numberofnodes(childNodes); i2 < ilen; i2++) {
          if (this.cslXml.getAttributeValue(childNodes[i2], "name") === "year") {
            this.cslXml.setAttribute(childNodes[i2 - 1], "suffix", "");
            break;
          }
        }
        this.cslXml.deleteNodeByNameAttribute(datexml, "year");
      }
      return this.cslXml.insertChildNodeAfter(parent2, node3, pos, datexml);
    };
    CSL.dateMacroAsSortKey = function(state, Item) {
      CSL.dateAsSortKey.call(this, state, Item, true);
    };
    CSL.dateAsSortKey = function(state, Item, isMacro) {
      var dp, elem, value, e2, yr, prefix2, i2, ilen;
      var variable = this.variables[0];
      var macroFlag = "empty";
      if (isMacro && state.tmp.extension) {
        macroFlag = "macro-with-date";
      }
      dp = Item[variable];
      if ("undefined" === typeof dp) {
        dp = { "date-parts": [[0]] };
      }
      if ("undefined" === typeof this.dateparts) {
        this.dateparts = ["year", "month", "day"];
      }
      if (dp.raw) {
        dp = state.fun.dateparser.parseDateToArray(dp.raw);
      } else if (dp["date-parts"]) {
        dp = state.dateParseArray(dp);
      }
      if ("undefined" === typeof dp) {
        dp = {};
      }
      if (dp.year) {
        for (i2 = 0, ilen = CSL.DATE_PARTS_INTERNAL.length; i2 < ilen; i2 += 1) {
          elem = CSL.DATE_PARTS_INTERNAL[i2];
          value = 0;
          e2 = elem;
          if (e2.slice(-4) === "_end") {
            e2 = e2.slice(0, -4);
          }
          if (dp[elem] && this.dateparts.indexOf(e2) > -1) {
            value = dp[elem];
          }
          if (elem.slice(0, 4) === "year") {
            yr = CSL.Util.Dates[e2].numeric(state, value);
            var prefix2 = "1";
            if (yr[0] === "-") {
              prefix2 = "0";
              yr = yr.slice(1);
              yr = 9999 - parseInt(yr, 10);
            }
            state.output.append(CSL.Util.Dates[elem.slice(0, 4)].numeric(state, prefix2 + yr), macroFlag);
          } else {
            value = CSL.Util.Dates[e2]["numeric-leading-zeros"](state, value);
            if (!value) {
              value = "00";
            }
            state.output.append(value, macroFlag);
          }
        }
      }
    };
    CSL.Engine.prototype.dateParseArray = function(date_obj) {
      var ret, field, dp, exts;
      ret = {};
      for (field in date_obj) {
        if (field === "date-parts") {
          dp = date_obj["date-parts"];
          if (dp.length > 1) {
            if (dp[0].length !== dp[1].length) {
              CSL.error("CSL data error: element mismatch in date range input.");
            }
          }
          exts = ["", "_end"];
          for (var i2 = 0, ilen = dp.length; i2 < ilen; i2 += 1) {
            for (var j = 0, jlen = CSL.DATE_PARTS.length; j < jlen; j += 1) {
              if (isNaN(parseInt(dp[i2][j], 10))) {
                ret[CSL.DATE_PARTS[j] + exts[i2]] = void 0;
              } else {
                ret[CSL.DATE_PARTS[j] + exts[i2]] = parseInt(dp[i2][j], 10);
              }
            }
          }
        } else if (date_obj.hasOwnProperty(field)) {
          if (field === "literal" && "object" === typeof date_obj.literal && "string" === typeof date_obj.literal.part) {
            CSL.debug("Warning: fixing up weird literal date value");
            ret.literal = date_obj.literal.part;
          } else {
            ret[field] = date_obj[field];
          }
        }
      }
      return ret;
    };
    CSL.Util.Names = {};
    CSL.Util.Names.compareNamesets = CSL.NameOutput.prototype._compareNamesets;
    CSL.Util.Names.unInitialize = function(state, name3) {
      var i2, ilen, namelist, punctlist, ret;
      if (!name3) {
        return "";
      }
      namelist = name3.split(/(?:\-|\s+)/);
      punctlist = name3.match(/(\-|\s+)/g);
      ret = "";
      for (i2 = 0, ilen = namelist.length; i2 < ilen; i2 += 1) {
        ret += namelist[i2];
        if (i2 < ilen - 1) {
          ret += punctlist[i2];
        }
      }
      return ret;
    };
    CSL.Util.Names.initializeWith = function(state, name3, terminator, normalizeOnly) {
      var i2, ilen, mm, lst, ret;
      if (!name3) {
        return "";
      }
      if (!terminator) {
        terminator = "";
      }
      if (["Lord", "Lady"].indexOf(name3) > -1 || !name3.replace(/^(?:<[^>]+>)*/, "").match(CSL.STARTSWITH_ROMANESQUE_REGEXP) && !terminator.match("%s")) {
        return name3;
      }
      if (state.opt["initialize-with-hyphen"] === false) {
        name3 = name3.replace(/\-/g, " ");
      }
      name3 = name3.replace(/\s*\-\s*/g, "-").replace(/\s+/g, " ");
      name3 = name3.replace(/-([a-z])/g, "\u2013$1");
      for (var i2 = name3.length - 2; i2 > -1; i2 += -1) {
        if (name3.slice(i2, i2 + 1) === "." && name3.slice(i2 + 1, i2 + 2) !== " ") {
          name3 = name3.slice(0, i2) + ". " + name3.slice(i2 + 1);
        }
      }
      var nameSplits = CSL.Output.Formatters.nameDoppel.split(name3);
      var namelist = [];
      namelist = [nameSplits.strings[0]];
      if (nameSplits.tags.length === 0) {
        var mmm = namelist[0].match(/[^\.]+$/);
        if (mmm && mmm[0].length === 1 && mmm[0] !== mmm[0].toLowerCase()) {
          namelist[0] += ".";
        }
      }
      for (i2 = 1, ilen = nameSplits.strings.length; i2 < ilen; i2 += 1) {
        namelist.push(nameSplits.tags[i2 - 1]);
        namelist.push(nameSplits.strings[i2]);
      }
      if (normalizeOnly) {
        ret = this.doNormalize(state, namelist, terminator);
      } else {
        ret = this.doInitialize(state, namelist, terminator);
      }
      ret = ret.replace(/\u2013([a-z])/g, "-$1");
      return ret;
    };
    CSL.Util.Names.notag = function(str2) {
      return str2.replace(/^(?:<[^>]+>)*/, "");
    };
    CSL.Util.Names.mergetag = function(state, tagstr, newstr) {
      var m2 = tagstr.match(/(?:-*<[^>]+>-*)/g);
      if (!m2) {
        return newstr;
      } else {
        tagstr = m2.join("");
      }
      m2 = newstr.match(/^(.*[^\s])*(\s+)$/);
      if (m2) {
        m2[1] = m2[1] ? m2[1] : "";
        newstr = m2[1] + tagstr + m2[2];
      } else {
        newstr = newstr + tagstr;
      }
      return newstr;
    };
    CSL.Util.Names.tagonly = function(state, str2) {
      var m2 = str2.match(/(?:<[^>]+>)+/);
      if (!m2) {
        return str2;
      } else {
        return m2.join("");
      }
    };
    CSL.Util.Names.doNormalize = function(state, namelist, terminator) {
      var i2, ilen;
      terminator = terminator ? terminator : "";
      var isAbbrev = [];
      for (i2 = 0, ilen = namelist.length; i2 < ilen; i2 += 1) {
        if (this.notag(namelist[i2]).length > 1 && this.notag(namelist[i2]).slice(-1) === ".") {
          namelist[i2] = namelist[i2].replace(/^(.*)\.(.*)$/, "$1$2");
          isAbbrev.push(true);
        } else if (namelist[i2].length === 1 && namelist[i2].toUpperCase() === namelist[i2]) {
          isAbbrev.push(true);
        } else {
          isAbbrev.push(false);
        }
      }
      for (i2 = 0, ilen = namelist.length; i2 < ilen; i2 += 2) {
        if (isAbbrev[i2]) {
          if (i2 < namelist.length - 2) {
            namelist[i2 + 1] = this.tagonly(state, namelist[i2 + 1]);
            if (!isAbbrev[i2 + 2]) {
              namelist[i2 + 1] = this.tagonly(state, namelist[i2 + 1]) + " ";
            }
            if (namelist[i2 + 2].length > 1) {
              namelist[i2 + 1] = terminator.replace(/\ufeff$/, "") + namelist[i2 + 1];
            } else {
              namelist[i2 + 1] = this.mergetag(state, namelist[i2 + 1], terminator);
            }
          }
          if (i2 === namelist.length - 1) {
            namelist[i2] = namelist[i2] + terminator;
          }
        }
      }
      return namelist.join("").replace(/[\u0009\u000a\u000b\u000c\u000d\u0020\ufeff\u00a0]+$/, "").replace(/\s*\-\s*/g, "-").replace(/[\u0009\u000a\u000b\u000c\u000d\u0020]+/g, " ");
    };
    CSL.Util.Names.doInitialize = function(state, namelist, terminator) {
      var i2, ilen, m2, j, jlen, lst, n;
      for (i2 = 0, ilen = namelist.length; i2 < ilen; i2 += 2) {
        n = namelist[i2];
        if (!n) {
          continue;
        }
        m2 = n.match(CSL.NAME_INITIAL_REGEXP);
        if (!m2 && (!n.match(CSL.STARTSWITH_ROMANESQUE_REGEXP) && n.length > 1 && terminator.match("%s"))) {
          m2 = n.match(/(.)(.*)/);
        }
        if (m2 && m2[2] && m2[3]) {
          m2[1] = m2[1] + m2[2];
          m2[2] = "";
        }
        if (m2 && m2[1].slice(0, 1) === m2[1].slice(0, 1).toUpperCase()) {
          var extra = "";
          if (m2[2]) {
            var s5 = "";
            lst = m2[2].split("");
            for (j = 0, jlen = lst.length; j < jlen; j += 1) {
              var c = lst[j];
              if (c === c.toUpperCase()) {
                s5 += c;
              } else {
                break;
              }
            }
            if (s5.length < m2[2].length) {
              extra = CSL.toLocaleLowerCase.call(state, s5);
            }
          }
          namelist[i2] = m2[1] + extra;
          if (i2 < ilen - 1) {
            if (terminator.match("%s")) {
              namelist[i2] = terminator.replace("%s", namelist[i2]);
            } else {
              if (namelist[i2 + 1].indexOf("-") > -1) {
                namelist[i2 + 1] = this.mergetag(state, namelist[i2 + 1].replace("-", ""), terminator) + "-";
              } else {
                namelist[i2 + 1] = this.mergetag(state, namelist[i2 + 1], terminator);
              }
            }
          } else {
            if (terminator.match("%s")) {
              namelist[i2] = terminator.replace("%s", namelist[i2]);
            } else {
              namelist.push(terminator);
            }
          }
        } else if (n.match(CSL.ROMANESQUE_REGEXP) && (!m2 || !m2[3])) {
          namelist[i2] = " " + n;
        }
      }
      var ret = namelist.join("");
      ret = ret.replace(/[\u0009\u000a\u000b\u000c\u000d\u0020\ufeff\u00a0]+$/, "").replace(/\s*\-\s*/g, "-").replace(/[\u0009\u000a\u000b\u000c\u000d\u0020]+/g, " ");
      return ret;
    };
    CSL.Util.Names.getRawName = function(name3) {
      var ret = [];
      if (name3.literal) {
        ret.push(name3.literal);
      } else {
        if (name3.given) {
          ret.push(name3.given);
        }
        if (name3.family) {
          ret.push(name3.family);
        }
      }
      return ret.join(" ");
    };
    CSL.Util.Dates = {};
    CSL.Util.Dates.year = {};
    CSL.Util.Dates.year["long"] = function(state, num) {
      if (!num) {
        if ("boolean" === typeof num) {
          num = "";
        } else {
          num = 0;
        }
      }
      return num.toString();
    };
    CSL.Util.Dates.year.imperial = function(state, num, end) {
      var year = "";
      if (!num) {
        if ("boolean" === typeof num) {
          num = "";
        } else {
          num = 0;
        }
      }
      end = end ? "_end" : "";
      var month = state.tmp.date_object["month" + end];
      month = month ? "" + month : "1";
      while (month.length < 2) {
        month = "0" + month;
      }
      var day = state.tmp.date_object["day" + end];
      day = day ? "" + day : "1";
      while (day.length < 2) {
        day = "0" + day;
      }
      var date = parseInt(num + month + day, 10);
      var label;
      var offset;
      if (date >= 18680908 && date < 19120730) {
        label = "\u660E\u6CBB";
        offset = 1867;
      } else if (date >= 19120730 && date < 19261225) {
        label = "\u5927\u6B63";
        offset = 1911;
      } else if (date >= 19261225 && date < 19890108) {
        label = "\u662D\u548C";
        offset = 1925;
      } else if (date >= 19890108) {
        label = "\u5E73\u6210";
        offset = 1988;
      }
      if (label && offset) {
        var normalizedKey = label;
        if (state.sys.normalizeAbbrevsKey) {
          normalizedKey = state.sys.normalizeAbbrevsKey("number", label);
        }
        if (!state.transform.abbrevs["default"]["number"][normalizedKey]) {
          state.transform.loadAbbreviation("default", "number", normalizedKey, null);
        }
        if (state.transform.abbrevs["default"]["number"][normalizedKey]) {
          label = state.transform.abbrevs["default"]["number"][normalizedKey];
        }
        year = label + (num - offset);
      }
      return year;
    };
    CSL.Util.Dates.year["short"] = function(state, num) {
      num = num.toString();
      if (num && num.length === 4) {
        return num.substr(2);
      }
    };
    CSL.Util.Dates.year.numeric = function(state, num) {
      var m2, pre2;
      num = "" + num;
      var m2 = num.match(/([0-9]*)$/);
      if (m2) {
        pre2 = num.slice(0, m2[1].length * -1);
        num = m2[1];
      } else {
        pre2 = num;
        num = "";
      }
      while (num.length < 4) {
        num = "0" + num;
      }
      return pre2 + num;
    };
    CSL.Util.Dates.normalizeMonth = function(num, useSeason) {
      var ret;
      if (!num) {
        num = 0;
      }
      num = "" + num;
      if (!num.match(/^[0-9]+$/)) {
        num = 0;
      }
      num = parseInt(num, 10);
      if (useSeason) {
        var res = { stub: "month-", num };
        if (res.num < 1 || res.num > 24) {
          res.num = 0;
        } else {
          while (res.num > 16) {
            res.num = res.num - 4;
          }
          if (res.num > 12) {
            res.stub = "season-";
            res.num = res.num - 12;
          }
        }
        ret = res;
      } else {
        if (num < 1 || num > 12) {
          num = 0;
        }
        ret = num;
      }
      return ret;
    };
    CSL.Util.Dates.month = {};
    CSL.Util.Dates.month.numeric = function(state, num) {
      var num = CSL.Util.Dates.normalizeMonth(num);
      if (!num) {
        num = "";
      }
      return num;
    };
    CSL.Util.Dates.month["numeric-leading-zeros"] = function(state, num) {
      var num = CSL.Util.Dates.normalizeMonth(num);
      if (!num) {
        num = "";
      } else {
        num = "" + num;
        while (num.length < 2) {
          num = "0" + num;
        }
      }
      return num;
    };
    CSL.Util.Dates.month["long"] = function(state, num, gender, forceDefaultLocale) {
      var res = CSL.Util.Dates.normalizeMonth(num, true);
      var num = res.num;
      if (!num) {
        num = "";
      } else {
        num = "" + num;
        while (num.length < 2) {
          num = "0" + num;
        }
        num = state.getTerm(res.stub + num, "long", 0, 0, false, forceDefaultLocale);
      }
      return num;
    };
    CSL.Util.Dates.month["short"] = function(state, num, gender, forceDefaultLocale) {
      var res = CSL.Util.Dates.normalizeMonth(num, true);
      var num = res.num;
      if (!num) {
        num = "";
      } else {
        num = "" + num;
        while (num.length < 2) {
          num = "0" + num;
        }
        num = state.getTerm(res.stub + num, "short", 0, 0, false, forceDefaultLocale);
      }
      return num;
    };
    CSL.Util.Dates.day = {};
    CSL.Util.Dates.day.numeric = function(state, num) {
      return num.toString();
    };
    CSL.Util.Dates.day["long"] = CSL.Util.Dates.day.numeric;
    CSL.Util.Dates.day["numeric-leading-zeros"] = function(state, num) {
      if (!num) {
        num = 0;
      }
      num = num.toString();
      while (num.length < 2) {
        num = "0" + num;
      }
      return num.toString();
    };
    CSL.Util.Dates.day.ordinal = function(state, num, gender) {
      return state.fun.ordinalizer.format(num, gender);
    };
    CSL.Util.Sort = {};
    CSL.Util.Sort.strip_prepositions = function(str2) {
      var m2;
      if ("string" === typeof str2) {
        m2 = str2.match(/^(([aA]|[aA][nN]|[tT][hH][eE])\s+)/);
      }
      if (m2) {
        str2 = str2.substr(m2[1].length);
      }
      return str2;
    };
    CSL.Util.substituteStart = function(state, target) {
      var element_trace, display, bib_first, func, choose_start, if_start, nodetypes;
      func = function(state2, Item, item) {
        for (var i2 = 0, ilen = this.decorations.length; i2 < ilen; i2 += 1) {
          if ("@strip-periods" === this.decorations[i2][0] && "true" === this.decorations[i2][1]) {
            state2.tmp.strip_periods += 1;
            break;
          }
        }
      };
      this.execs.push(func);
      if (this.decorations && state.opt.development_extensions.csl_reverse_lookup_support) {
        this.decorations.reverse();
        this.decorations.push(["@showid", "true", this.cslid]);
        this.decorations.reverse();
      }
      nodetypes = ["number", "date", "names"];
      if ("text" === this.name && !this.postponed_macro || nodetypes.indexOf(this.name) > -1) {
        element_trace = function(state2, Item, item) {
          if (state2.tmp.element_trace.value() === "author" || "names" === this.name) {
            if (!state2.tmp.just_looking && item && item["author-only"] && state2.tmp.area !== "intext") {
              if (!state2.tmp.probably_rendered_something) {
              } else {
                state2.tmp.element_trace.push("suppress-me");
              }
            }
            if (!state2.tmp.just_looking && item && item["suppress-author"]) {
              if (!state2.tmp.probably_rendered_something) {
                state2.tmp.element_trace.push("suppress-me");
              }
            }
          } else if ("date" === this.name) {
            if (!state2.tmp.just_looking && item && item["author-only"] && state2.tmp.area !== "intext") {
              if (state2.tmp.probably_rendered_something) {
                state2.tmp.element_trace.push("suppress-me");
              }
            }
          } else {
            if (!state2.tmp.just_looking && item && item["author-only"] && state2.tmp.area !== "intext") {
              if (!state2.tmp.probably_rendered_something && state2.tmp.can_block_substitute) {
              } else {
                state2.tmp.element_trace.push("suppress-me");
              }
            } else if (item && item["suppress-author"]) {
              state2.tmp.element_trace.push("do-not-suppress-me");
            }
          }
        };
        this.execs.push(element_trace);
      }
      display = this.strings.cls;
      this.strings.cls = false;
      if (state.build.render_nesting_level === 0) {
        if (state.build.area === "bibliography" && state.bibliography.opt["second-field-align"]) {
          bib_first = new CSL.Token("group", CSL.START);
          bib_first.decorations = [["@display", "left-margin"]];
          func = function(state2, Item) {
            if (!state2.tmp.render_seen) {
              bib_first.strings.first_blob = Item.id;
              state2.output.startTag("bib_first", bib_first);
            }
          };
          bib_first.execs.push(func);
          target.push(bib_first);
        } else if (CSL.DISPLAY_CLASSES.indexOf(display) > -1) {
          bib_first = new CSL.Token("group", CSL.START);
          bib_first.decorations = [["@display", display]];
          func = function(state2, Item) {
            bib_first.strings.first_blob = Item.id;
            state2.output.startTag("bib_first", bib_first);
          };
          bib_first.execs.push(func);
          target.push(bib_first);
        }
        state.build.cls = display;
      }
      state.build.render_nesting_level += 1;
      if (state.build.substitute_level.value() === 1) {
        choose_start = new CSL.Token("choose", CSL.START);
        CSL.Node.choose.build.call(choose_start, state, target);
        if_start = new CSL.Token("if", CSL.START);
        func = function() {
          if (state.tmp.can_substitute.value()) {
            return true;
          }
          return false;
        };
        if_start.tests ? {} : if_start.tests = [];
        if_start.tests.push(func);
        if_start.test = state.fun.match.any(this, state, if_start.tests);
        target.push(if_start);
      }
      if (state.sys.variableWrapper && this.variables_real && this.variables_real.length) {
        func = function(state2, Item, item) {
          if (!state2.tmp.just_looking && !state2.tmp.suppress_decorations) {
            var variable_entry = new CSL.Token("text", CSL.START);
            variable_entry.decorations = [["@showid", "true"]];
            state2.output.startTag("variable_entry", variable_entry);
            var position6 = null;
            if (item) {
              position6 = item.position;
            }
            if (!position6) {
              position6 = 0;
            }
            var positionMap = [
              "first",
              "container-subsequent",
              "subsequent",
              "ibid",
              "ibid-with-locator"
            ];
            var noteNumber = 0;
            if (item && item.noteIndex) {
              noteNumber = item.noteIndex;
            }
            var firstReferenceNoteNumber = 0;
            if (item && item["first-reference-note-number"]) {
              firstReferenceNoteNumber = item["first-reference-note-number"];
            }
            var firstContainerReferenceNoteNumber = 0;
            if (item && item["first-container-reference-note-number"]) {
              firstContainerReferenceNoteNumber = item["first-container-reference-note-number"];
            }
            var citationNumber = 0;
            if (item && item["citation-number"]) {
              citationNumber = item["citation-number"];
            }
            var index4 = 0;
            if (item && item.index) {
              index4 = item.index;
            }
            var params = {
              itemData: Item,
              variableNames: this.variables,
              context: state2.tmp.area,
              xclass: state2.opt.xclass,
              position: positionMap[position6],
              "note-number": noteNumber,
              "first-reference-note-number": firstReferenceNoteNumber,
              "first-container-reference-note-number": firstContainerReferenceNoteNumber,
              "citation-number": citationNumber,
              "index": index4,
              "mode": state2.opt.mode
            };
            state2.output.current.value().params = params;
          }
        };
        this.execs.push(func);
      }
    };
    CSL.Util.substituteEnd = function(state, target) {
      var func, bib_first_end, bib_other, if_end, choose_end, author_substitute, str2;
      if (state.sys.variableWrapper && (this.hasVariable || this.variables_real && this.variables_real.length)) {
        func = function(state2) {
          if (!state2.tmp.just_looking && !state2.tmp.suppress_decorations) {
            state2.output.endTag("variable_entry");
          }
        };
        this.execs.push(func);
      }
      func = function(state2) {
        for (var i2 = 0, ilen = this.decorations.length; i2 < ilen; i2 += 1) {
          if ("@strip-periods" === this.decorations[i2][0] && "true" === this.decorations[i2][1]) {
            state2.tmp.strip_periods += -1;
            break;
          }
        }
      };
      this.execs.push(func);
      state.build.render_nesting_level += -1;
      if (state.build.render_nesting_level === 0) {
        if (state.build.cls) {
          func = function(state2) {
            state2.output.endTag("bib_first");
          };
          this.execs.push(func);
          state.build.cls = false;
        } else if (state.build.area === "bibliography" && state.bibliography.opt["second-field-align"]) {
          bib_first_end = new CSL.Token("group", CSL.END);
          func = function(state2) {
            if (!state2.tmp.render_seen) {
              state2.output.endTag("bib_first");
            }
          };
          bib_first_end.execs.push(func);
          target.push(bib_first_end);
          bib_other = new CSL.Token("group", CSL.START);
          bib_other.decorations = [["@display", "right-inline"]];
          func = function(state2) {
            if (!state2.tmp.render_seen) {
              state2.tmp.render_seen = true;
              state2.output.startTag("bib_other", bib_other);
            }
          };
          bib_other.execs.push(func);
          target.push(bib_other);
        }
      }
      if (state.build.substitute_level.value() === 1) {
        if_end = new CSL.Token("if", CSL.END);
        target.push(if_end);
        choose_end = new CSL.Token("choose", CSL.END);
        CSL.Node.choose.build.call(choose_end, state, target);
      }
      if ("names" === this.name || "text" === this.name && this.variables_real !== "title") {
        author_substitute = new CSL.Token("text", CSL.SINGLETON);
        var substitution_name = this.name;
        func = function(state2, Item) {
          if (state2.tmp.area !== "bibliography") {
            return;
          }
          if ("string" !== typeof state2.bibliography.opt["subsequent-author-substitute"]) {
            return;
          }
          if (this.variables_real && !Item[this.variables_real]) {
            return;
          }
          if (this.variables_real && substitution_name === "names") {
            return;
          }
          var subrule = state2.bibliography.opt["subsequent-author-substitute-rule"];
          var i2, ilen;
          var printing = !state2.tmp.suppress_decorations;
          if (printing && state2.tmp.subsequent_author_substitute_ok) {
            if (state2.tmp.rendered_name) {
              if ("partial-each" === subrule || "partial-first" === subrule) {
                var dosub = true;
                var rendered_name = [];
                for (i2 = 0, ilen = state2.tmp.name_node.children.length; i2 < ilen; i2 += 1) {
                  var name3 = state2.tmp.rendered_name[i2];
                  if (dosub && state2.tmp.last_rendered_name && state2.tmp.last_rendered_name.length > i2 - 1 && name3 && !name3.localeCompare(state2.tmp.last_rendered_name[i2])) {
                    str2 = new CSL.Blob(state2[state2.tmp.area].opt["subsequent-author-substitute"]);
                    state2.tmp.name_node.children[i2].blobs = [str2];
                    if ("partial-first" === subrule) {
                      dosub = false;
                    }
                  } else {
                    dosub = false;
                  }
                  rendered_name.push(name3);
                }
                state2.tmp.last_rendered_name = rendered_name;
              } else if ("complete-each" === subrule) {
                var rendered_name = state2.tmp.rendered_name.join(",");
                if (rendered_name) {
                  if (state2.tmp.last_rendered_name && !rendered_name.localeCompare(state2.tmp.last_rendered_name)) {
                    for (i2 = 0, ilen = state2.tmp.name_node.children.length; i2 < ilen; i2 += 1) {
                      str2 = new CSL.Blob(state2[state2.tmp.area].opt["subsequent-author-substitute"]);
                      state2.tmp.name_node.children[i2].blobs = [str2];
                    }
                  }
                  state2.tmp.last_rendered_name = rendered_name;
                }
              } else {
                var rendered_name = state2.tmp.rendered_name.join(",");
                if (rendered_name) {
                  if (state2.tmp.last_rendered_name && !rendered_name.localeCompare(state2.tmp.last_rendered_name)) {
                    str2 = new CSL.Blob(state2[state2.tmp.area].opt["subsequent-author-substitute"]);
                    if (state2.tmp.label_blob) {
                      state2.tmp.name_node.top.blobs = [str2, state2.tmp.label_blob];
                    } else if (state2.tmp.name_node.top.blobs.length) {
                      state2.tmp.name_node.top.blobs[0].blobs = [str2];
                    } else {
                      state2.tmp.name_node.top.blobs = [str2];
                    }
                    state2.tmp.substituted_variable = substitution_name;
                  }
                  state2.tmp.last_rendered_name = rendered_name;
                }
              }
              state2.tmp.subsequent_author_substitute_ok = false;
            }
          }
        };
        this.execs.push(func);
      }
      if ("text" === this.name && !this.postponed_macro || ["number", "date", "names"].indexOf(this.name) > -1) {
        func = function(state2, Item) {
          if (state2.tmp.element_trace.mystack.length > 1) {
            state2.tmp.element_trace.pop();
          }
        };
        this.execs.push(func);
      }
    };
    CSL.Util.padding = function(num) {
      var m2 = num.match(/\s*(-{0,1}[0-9]+)/);
      if (m2) {
        num = parseInt(m2[1], 10);
        if (num < 0) {
          num = 1e20 + num;
        }
        num = "" + num;
        while (num.length < 20) {
          num = "0" + num;
        }
      }
      return num;
    };
    CSL.Util.LongOrdinalizer = function() {
    };
    CSL.Util.LongOrdinalizer.prototype.init = function(state) {
      this.state = state;
    };
    CSL.Util.LongOrdinalizer.prototype.format = function(num, gender) {
      if (num < 10) {
        num = "0" + num;
      }
      var ret = CSL.Engine.getField(
        CSL.LOOSE,
        this.state.locale[this.state.opt.lang].terms,
        "long-ordinal-" + num,
        "long",
        0,
        gender
      );
      if (!ret) {
        ret = this.state.fun.ordinalizer.format(num, gender);
      }
      this.state.tmp.cite_renders_content = true;
      return ret;
    };
    CSL.Util.Ordinalizer = function(state) {
      this.state = state;
      this.suffixes = {};
    };
    CSL.Util.Ordinalizer.prototype.init = function() {
      if (!this.suffixes[this.state.opt.lang]) {
        this.suffixes[this.state.opt.lang] = {};
        for (var i2 = 0, ilen = 3; i2 < ilen; i2 += 1) {
          var gender = [void 0, "masculine", "feminine"][i2];
          this.suffixes[this.state.opt.lang][gender] = [];
          for (var j = 1; j < 5; j += 1) {
            var ordinal = this.state.getTerm("ordinal-0" + j, "long", false, gender);
            if ("undefined" === typeof ordinal) {
              delete this.suffixes[this.state.opt.lang][gender];
              break;
            }
            this.suffixes[this.state.opt.lang][gender].push(ordinal);
          }
        }
      }
    };
    CSL.Util.Ordinalizer.prototype.format = function(num, gender) {
      var str2;
      num = parseInt(num, 10);
      str2 = "" + num;
      var suffix = "";
      var trygenders = [];
      if (gender) {
        trygenders.push(gender);
      }
      trygenders.push("neuter");
      if (this.state.locale[this.state.opt.lang].ord["1.0.1"]) {
        suffix = this.state.getTerm("ordinal", false, 0, gender);
        var trygender;
        for (var i2 = 0, ilen = trygenders.length; i2 < ilen; i2 += 1) {
          trygender = trygenders[i2];
          var ordinfo = this.state.locale[this.state.opt.lang].ord["1.0.1"];
          if (ordinfo["whole-number"][str2] && ordinfo["whole-number"][str2][trygender]) {
            suffix = this.state.getTerm(this.state.locale[this.state.opt.lang].ord["1.0.1"]["whole-number"][str2][trygender], false, 0, gender);
          } else if (ordinfo["last-two-digits"][str2.slice(str2.length - 2)] && ordinfo["last-two-digits"][str2.slice(str2.length - 2)][trygender]) {
            suffix = this.state.getTerm(this.state.locale[this.state.opt.lang].ord["1.0.1"]["last-two-digits"][str2.slice(str2.length - 2)][trygender], false, 0, gender);
          } else if (ordinfo["last-digit"][str2.slice(str2.length - 1)] && ordinfo["last-digit"][str2.slice(str2.length - 1)][trygender]) {
            suffix = this.state.getTerm(this.state.locale[this.state.opt.lang].ord["1.0.1"]["last-digit"][str2.slice(str2.length - 1)][trygender], false, 0, gender);
          }
          if (suffix) {
            break;
          }
        }
      } else {
        if (!gender) {
          gender = void 0;
        }
        this.state.fun.ordinalizer.init();
        if (num / 10 % 10 === 1 || num > 10 && num < 20) {
          suffix = this.suffixes[this.state.opt.lang][gender][3];
        } else if (num % 10 === 1 && num % 100 !== 11) {
          suffix = this.suffixes[this.state.opt.lang][gender][0];
        } else if (num % 10 === 2 && num % 100 !== 12) {
          suffix = this.suffixes[this.state.opt.lang][gender][1];
        } else if (num % 10 === 3 && num % 100 !== 13) {
          suffix = this.suffixes[this.state.opt.lang][gender][2];
        } else {
          suffix = this.suffixes[this.state.opt.lang][gender][3];
        }
      }
      str2 = str2 += suffix;
      return str2;
    };
    CSL.Util.Romanizer = function() {
    };
    CSL.Util.Romanizer.prototype.format = function(num) {
      var ret, pos, n, numstr, len;
      ret = "";
      if (num < 6e3) {
        numstr = num.toString().split("");
        numstr.reverse();
        pos = 0;
        n = 0;
        len = numstr.length;
        for (pos = 0; pos < len; pos += 1) {
          n = parseInt(numstr[pos], 10);
          ret = CSL.ROMAN_NUMERALS[pos][n] + ret;
        }
      }
      return ret;
    };
    CSL.Util.Suffixator = function(slist) {
      if (!slist) {
        slist = CSL.SUFFIX_CHARS;
      }
      this.slist = slist.split(",");
    };
    CSL.Util.Suffixator.prototype.format = function(N) {
      var X;
      N += 1;
      var key2 = "";
      do {
        X = N % 26 === 0 ? 26 : N % 26;
        var key2 = this.slist[X - 1] + key2;
        N = (N - X) / 26;
      } while (N !== 0);
      return key2;
    };
    CSL.Engine.prototype.processNumber = function(node3, ItemObject, variable) {
      var val;
      var me = this;
      var realVariable = variable;
      variable = variable === "page-first" ? "page" : variable;
      var fullformAnd = ",\\s+and\\s+|\\s+and\\s+";
      if (this.opt.lang.slice(0, 2) !== "en") {
        fullformAnd += "|,\\s+" + this.getTerm("and") + "\\s+|\\s+" + this.getTerm("and") + "\\s+";
      }
      var symbolAnd = "\\s*&\\s*";
      var andRex = new RegExp("^" + symbolAnd + "$");
      var joinerMatchRex = new RegExp("(" + symbolAnd + "|" + fullformAnd + "|;\\s+|,\\s+|\\s*\\\\*[\\-\\u2013]+\\s*)", "g");
      var joinerSplitRex = new RegExp("(?:" + symbolAnd + "|" + fullformAnd + "|;\\s+|,\\s+|\\s*\\\\*[\\-\\u2013]+\\s*)");
      var localeAnd = this.getTerm("and");
      var localeAmpersand = this.getTerm("and", "symbol");
      if (localeAnd === localeAmpersand) {
        localeAmpersand = "&";
      }
      function normalizeFieldValue(str2) {
        str2 = str2.trim();
        var m2 = str2.match(/^([^ ]+)/);
        if (m2 && !CSL.STATUTE_SUBDIV_STRINGS[m2[1]]) {
          var embeddedLabel = null;
          if (["locator", "locator-extra", "page"].indexOf(variable) > -1) {
            if (ItemObject.label) {
              embeddedLabel = CSL.STATUTE_SUBDIV_STRINGS_REVERSE[ItemObject.label];
            } else {
              embeddedLabel = "p.";
            }
          } else {
            embeddedLabel = CSL.STATUTE_SUBDIV_STRINGS_REVERSE[variable];
          }
          if (embeddedLabel) {
            str2 = embeddedLabel + " " + str2;
          }
        }
        return str2;
      }
      function composeNumberInfo(origLabel, label, val2, joiningSuffix, parsePosition) {
        joiningSuffix = joiningSuffix ? joiningSuffix : "";
        var info2 = {};
        if (!label && !CSL.STATUTE_SUBDIV_STRINGS_REVERSE[variable]) {
          label = "var:" + variable;
        }
        if (label) {
          var m2 = label.match(/(\s*)([^\s]+)(\s*)/);
          if (realVariable === "page" && parsePosition === 0 && ["p.", "pp."].indexOf(m2[2]) === -1) {
            info2.gotosleepability = true;
            info2.labelVisibility = true;
          } else {
            info2.labelVisibility = false;
          }
          info2.label = m2[2];
          info2.origLabel = origLabel;
          info2.labelSuffix = m2[3] ? m2[3] : "";
          info2.plural = 0;
        }
        var m2 = val2.match(/^([0-9]*[a-zA-Z]+0*)?([0-9]+(?:[a-zA-Z]*|[-,a-zA-Z]+))$/);
        if (m2) {
          info2.particle = m2[1] ? m2[1] : "";
          info2.value = m2[2];
        } else {
          info2.particle = "";
          info2.value = val2;
        }
        info2.joiningSuffix = joiningSuffix.replace(/\s*-\s*/, "-");
        return info2;
      }
      function fixupSubsections(elems) {
        for (var i2 = elems.length - 2; i2 > -1; i2 -= 2) {
          if (elems[i2] === "-" && elems[i2 - 1].match(/^(?:(?:[a-z]|[a-z][a-z]|[a-z][a-z][a-z]|[a-z][a-z][a-z][a-z])\.  *)*[0-9]+[,a-zA-Z]+$/) && elems[i2 + 1].match(/^[,a-zA-Z]+$/)) {
            elems[i2 - 1] = elems.slice(i2 - 1, i2 + 2).join("");
            elems = elems.slice(0, i2).concat(elems.slice(i2 + 2));
          }
        }
        return elems;
      }
      function parseString(str2, defaultLabel2) {
        defaultLabel2 = defaultLabel2 ? defaultLabel2 : "";
        str2 = normalizeFieldValue(str2, defaultLabel2);
        var jmrex, jsrex, mystr;
        if ("page" === variable) {
          if (str2.indexOf("\u2013") > -1) {
            str2 = str2.replace(/\u2013/g, "-");
          }
        }
        if (str2.indexOf("\\-") > -1) {
          jmrex = new RegExp(joinerMatchRex.source.replace("\\-", ""));
          jsrex = new RegExp(joinerSplitRex.source.replace("\\-", ""));
          var lst = str2.split("\\-");
          for (var i2 = 0, ilen = lst.length; i2 < ilen; i2++) {
            lst[i2] = lst[i2].replace(/\-/g, "\u2013");
          }
          mystr = lst.join("\\-");
          mystr = mystr.replace(/\\/g, "");
        } else {
          jmrex = joinerMatchRex;
          jsrex = joinerSplitRex;
          mystr = str2;
        }
        var elems = [];
        var m2 = mystr.match(jmrex);
        if (m2) {
          var lst = mystr.split(jsrex);
          for (var i2 = 0, ilen = m2.length; i2 < ilen; i2++) {
            if (m2[i2].match(andRex)) {
              if (lst[i2].match(/[a-zA-Z]$/) && lst[i2].match(/^[a-zA-Z]/)) {
                m2[i2] = localeAmpersand;
              } else {
                m2[i2] = " " + localeAmpersand + " ";
              }
            }
          }
          var recombine = false;
          for (var i2 in lst) {
            if (("" + lst[i2]).replace(/^[a-z]\.\s+/, "").match(/[^\s0-9ivxlcmIVXLCM]/)) {
              break;
            }
          }
          if (recombine) {
            elems = [mystr];
          } else {
            for (var i2 = 0, ilen = lst.length - 1; i2 < ilen; i2++) {
              elems.push(lst[i2]);
              elems.push(m2[i2]);
            }
            elems.push(lst[lst.length - 1]);
            elems = fixupSubsections(elems);
          }
        } else {
          var elems = [mystr];
        }
        var values2 = [];
        var label = defaultLabel2;
        var origLabel = "";
        for (var i2 = 0, ilen = elems.length; i2 < ilen; i2 += 2) {
          var m2 = elems[i2].match(/((?:^| )(?:[a-z]|[a-z][a-z]|[a-z][a-z][a-z]|[a-z][a-z][a-z][a-z]|subpara|subch|amend|bibliog|annot|illus|princ|intro|sched|subdiv|subsec)(?:\.| ) *)/g);
          if (m2) {
            var lst = elems[i2].split(/(?:(?:^| )(?:[a-z]|[a-z][a-z]|[a-z][a-z][a-z]|[a-z][a-z][a-z][a-z]|subpara|subch|amend|bibliog|annot|illus|princ|intro|sched|subdiv|subsec)(?:\.| ) *)/);
            for (var j = lst.length - 1; j > 0; j--) {
              if (lst[j - 1] && (!lst[j].match(/^[0-9]+([-;,:a-zA-Z]*)$/) || !lst[j - 1].match(/^[0-9]+([-;,:a-zA-Z]*)$/))) {
                lst[j - 1] = lst[j - 1] + m2[j - 1] + lst[j];
                lst = lst.slice(0, j).concat(lst.slice(j + 1));
                m2 = m2.slice(0, j - 1).concat(m2.slice(j));
              }
            }
            if (m2.length > 0) {
              var slug = m2[0].trim();
              var notAlabel = !CSL.STATUTE_SUBDIV_STRINGS[slug] || "undefined" === typeof me.getTerm(CSL.STATUTE_SUBDIV_STRINGS[slug]) || ["locator", "number", "locator-extra", "page"].indexOf(variable) === -1 && CSL.STATUTE_SUBDIV_STRINGS[slug] !== variable;
              if (notAlabel) {
                if (i2 === 0) {
                  m2 = m2.slice(1);
                  lst[0] = lst[0] + " " + slug + " " + lst[1];
                  lst = lst.slice(0, 1).concat(lst.slice(2));
                }
              } else {
                origLabel = slug;
              }
            }
            for (var j = 0, jlen = lst.length; j < jlen; j++) {
              if (lst[j] || j === lst.length - 1) {
                var filteredOrigLabel;
                label = m2[j - 1] ? m2[j - 1] : label;
                if (origLabel === label.trim()) {
                  filteredOrigLabel = "";
                } else {
                  filteredOrigLabel = origLabel;
                }
                mystr = lst[j] ? lst[j].trim() : "";
                if (j === lst.length - 1) {
                  values2.push(composeNumberInfo(filteredOrigLabel, label, mystr, elems[i2 + 1], i2));
                } else {
                  values2.push(composeNumberInfo(filteredOrigLabel, label, mystr, null, i2));
                }
              }
            }
          } else {
            var filteredOrigLabel;
            if (origLabel === label.trim()) {
              filteredOrigLabel = "";
            } else {
              filteredOrigLabel = origLabel;
            }
            values2.push(composeNumberInfo(filteredOrigLabel, label, elems[i2], elems[i2 + 1]));
          }
        }
        return values2;
      }
      function setSpaces(values2) {
        for (var i2 = 0, ilen = values2.length - 1; i2 < ilen; i2++) {
          if (!values2[i2].joiningSuffix && values2[i2 + 1].label) {
            values2[i2].joiningSuffix = " ";
          }
        }
      }
      function fixNumericAndCount(values2, i2, currentLabelInfo) {
        var master = values2[currentLabelInfo.pos];
        var val2 = values2[i2].value;
        var isEscapedHyphen = master.joiningSuffix === "\\-";
        if (val2.particle && val2.particle !== master.particle) {
          currentLabelInfo.collapsible = false;
        }
        var mVal = val2.match(/^[0-9]+([-,:a-zA-Z]*)$/);
        var mCurrentLabel = master.value.match(/^(?:[0-9]+|[ixv]+)([-,:a-zA-Z]*|\-[\-0-9]+)$/);
        if (!val2 || !mVal || !mCurrentLabel || isEscapedHyphen) {
          currentLabelInfo.collapsible = false;
          if (!val2 || !mCurrentLabel) {
            currentLabelInfo.numeric = false;
          }
          if (isEscapedHyphen) {
            currentLabelInfo.count--;
          }
        }
        if (mVal && mVal[1] || mCurrentLabel && mCurrentLabel[1]) {
          currentLabelInfo.collapsible = false;
        }
        if (void 0 === values2[i2].collapsible) {
          for (var j = i2, jlen = i2 + currentLabelInfo.count; j < jlen; j++) {
            if (isNaN(parseInt(values2[j].value)) && !values2[j].value.match(/^[ivxlcmIVXLCM]+$/)) {
              values2[j].collapsible = false;
            } else {
              values2[j].collapsible = true;
            }
          }
          currentLabelInfo.collapsible = values2[i2].collapsible;
        }
        var isCollapsible = currentLabelInfo.collapsible;
        for (var j = currentLabelInfo.pos, jlen = currentLabelInfo.pos + currentLabelInfo.count; j < jlen; j++) {
          if (currentLabelInfo.count > 1 && isCollapsible) {
            values2[j].plural = 1;
          }
          values2[j].numeric = currentLabelInfo.numeric;
          values2[j].collapsible = currentLabelInfo.collapsible;
        }
      }
      function fixLabelVisibility(values2, groupStartPos, currentLabelInfo) {
        if (currentLabelInfo.label.slice(0, 4) !== "var:") {
          if (currentLabelInfo.pos === 0) {
            if (["locator", "number", "locator-extra", "page"].indexOf(variable) > -1) {
              if ("undefined" === typeof me.getTerm(CSL.STATUTE_SUBDIV_STRINGS[currentLabelInfo.label])) {
                values2[currentLabelInfo.pos].labelVisibility = true;
              }
            }
            if (["locator", "number", "locator-extra", "page"].indexOf(variable) === -1) {
              if (CSL.STATUTE_SUBDIV_STRINGS[currentLabelInfo.label] !== variable) {
                values2[0].labelVisibility = true;
              }
            }
          } else {
            values2[currentLabelInfo.pos].labelVisibility = true;
          }
        }
      }
      function setPluralsAndNumerics(values2) {
        if (values2.length === 0) {
          return;
        }
        var groupStartPos = 0;
        var groupCount = 1;
        for (var i2 = 1, ilen = values2.length; i2 < ilen; i2++) {
          var lastVal = values2[i2 - 1];
          var thisVal = values2[i2];
          if (lastVal.label === thisVal.label && lastVal.particle === lastVal.particle) {
            groupCount++;
          } else {
            var currentLabelInfo = JSON.parse(JSON.stringify(values2[groupStartPos]));
            currentLabelInfo.pos = groupStartPos;
            currentLabelInfo.count = groupCount;
            currentLabelInfo.numeric = true;
            fixNumericAndCount(values2, groupStartPos, currentLabelInfo);
            if (lastVal.label !== thisVal.label) {
              fixLabelVisibility(values2, groupStartPos, currentLabelInfo);
            }
            groupStartPos = i2;
            groupCount = 1;
          }
        }
        var currentLabelInfo = JSON.parse(JSON.stringify(values2[groupStartPos]));
        currentLabelInfo.pos = groupStartPos;
        currentLabelInfo.count = groupCount;
        currentLabelInfo.numeric = true;
        fixNumericAndCount(values2, groupStartPos, currentLabelInfo);
        fixLabelVisibility(values2, groupStartPos, currentLabelInfo);
        if (values2.length && values2[0].numeric && variable.slice(0, 10) === "number-of-") {
          if (parseInt(ItemObject[realVariable], 10) > 1) {
            values2[0].plural = 1;
          }
        }
      }
      function stripHyphenBackslash(joiningSuffix) {
        return joiningSuffix.replace("\\-", "-");
      }
      function setStyling(values2) {
        var masterNode = CSL.Util.cloneToken(node3);
        var masterStyling = new CSL.Token();
        if (!me.tmp.just_looking) {
          masterStyling.decorations = masterNode.decorations;
          masterNode.decorations = [];
          masterStyling.strings.prefix = masterNode.strings.prefix;
          masterNode.strings.prefix = "";
          masterStyling.strings.suffix = masterNode.strings.suffix;
          masterNode.strings.suffix = "";
        }
        var masterLabel = values2.length ? values2[0].label : null;
        if (values2.length) {
          for (var i2 = 0, ilen = values2.length; i2 < ilen; i2++) {
            var val2 = values2[i2];
            var newnode = CSL.Util.cloneToken(masterNode);
            newnode.gender = node3.gender;
            if (masterLabel === val2.label) {
              newnode.formatter = node3.formatter;
            }
            if (val2.numeric) {
              newnode.successor_prefix = val2.successor_prefix;
            }
            newnode.strings.suffix = newnode.strings.suffix + stripHyphenBackslash(val2.joiningSuffix);
            val2.styling = newnode;
          }
          if (!me.tmp.just_looking) {
            if (values2[0].value.slice(0, 1) === '"' && values2[values2.length - 1].value.slice(-1) === '"') {
              values2[0].value = values2[0].value.slice(1);
              values2[values2.length - 1].value = values2[values2.length - 1].value.slice(0, -1);
              masterStyling.decorations.push(["@quotes", true]);
            }
          }
        }
        return masterStyling;
      }
      function checkTerm(variable2, val2) {
        var ret = true;
        if (["locator", "locator-extra", "page"].indexOf(variable2) > -1) {
          var label;
          if (val2.origLabel) {
            label = val2.origLabel;
          } else {
            label = val2.label;
          }
          ret = !!me.getTerm(CSL.STATUTE_SUBDIV_STRINGS[label]);
        }
        return ret;
      }
      function checkPage(variable2, val2) {
        return "page" === variable2 || ["locator", "locator-extra"].indexOf(variable2) > -1 && (["p."].indexOf(val2.label) > -1 || ["p."].indexOf(val2.origLabel) > -1);
      }
      function fixupRangeDelimiter(variable2, val2, rangeDelimiter, isNumeric) {
        var isPage = checkPage(variable2, val2);
        var hasTerm = checkTerm(variable2, val2);
        if (hasTerm && rangeDelimiter === "-") {
          if (isNumeric) {
            if (isPage || ["locator", "locator-extra", "issue", "volume", "edition", "number"].indexOf(variable2) > -1) {
              rangeDelimiter = me.getTerm("page-range-delimiter");
              if (!rangeDelimiter) {
                rangeDelimiter = "\u2013";
              }
            }
            if (variable2 === "collection-number") {
              rangeDelimiter = me.getTerm("year-range-delimiter");
              if (!rangeDelimiter) {
                rangeDelimiter = "\u2013";
              }
            }
          }
        }
        return rangeDelimiter;
      }
      function manglePageNumbers(values2, i2, currentInfo) {
        if (i2 < 1) {
          return;
        }
        if (currentInfo.count !== 2) {
          return;
        }
        if (values2[i2 - 1].particle !== values2[i2].particle) {
          return;
        }
        if (values2[i2 - 1].joiningSuffix !== "-") {
          currentInfo.count = 1;
          return;
        }
        if (!me.opt["page-range-format"] && parseInt(values2[i2 - 1].value, 10) > parseInt(values2[i2].value, 10)) {
          values2[i2 - 1].joiningSuffix = fixupRangeDelimiter(variable, values2[i2], values2[i2 - 1].joiningSuffix, true);
          return;
        }
        var val2 = values2[i2];
        var isPage = checkPage(variable, val2);
        var str2;
        if (isPage && !isNaN(parseInt(values2[i2 - 1].value)) && !isNaN(parseInt(values2[i2].value))) {
          str2 = values2[i2 - 1].particle + values2[i2 - 1].value + " - " + values2[i2].particle + values2[i2].value;
          str2 = me.fun.page_mangler(str2);
        } else {
          if (("" + values2[i2 - 1].value).match(/^([0-9]+|[ivxlcmIVXLCM]+)$/) && ("" + values2[i2].value).match(/^([0-9]+|[ivxlcmIVXLCM]+)$/)) {
            values2[i2 - 1].joiningSuffix = me.getTerm("page-range-delimiter");
          }
          str2 = values2[i2 - 1].value + stripHyphenBackslash(values2[i2 - 1].joiningSuffix) + values2[i2].value;
        }
        var m2 = str2.match(/^((?:[0-9]*[a-zA-Z]+0*))?([0-9]+[a-z]*)(\s*[^0-9]+\s*)([-,a-zA-Z]?0*)([0-9]+[a-z]*)$/);
        if (m2) {
          var rangeDelimiter = m2[3];
          rangeDelimiter = fixupRangeDelimiter(variable, val2, rangeDelimiter, values2[i2].numeric);
          values2[i2 - 1].particle = m2[1];
          values2[i2 - 1].value = m2[2];
          values2[i2 - 1].joiningSuffix = rangeDelimiter;
          values2[i2].particle = m2[4];
          values2[i2].value = m2[5];
        }
        currentInfo.count = 0;
      }
      function fixRanges(values2) {
        if (!node3) {
          return;
        }
        if (["page", "chapter-number", "collection-number", "edition", "issue", "number", "number-of-pages", "number-of-volumes", "volume", "locator", "locator-extra"].indexOf(variable) === -1) {
          return;
        }
        var currentInfo = {
          count: 0,
          label: null,
          lastHadRangeDelimiter: false
        };
        for (var i2 = 0, ilen = values2.length; i2 < ilen; i2++) {
          var val2 = values2[i2];
          if (!val2.collapsible) {
            currentInfo.count = 0;
            currentInfo.label = null;
            var isNumeric = val2.numeric;
            val2.joiningSuffix = fixupRangeDelimiter(variable, val2, val2.joiningSuffix, isNumeric);
          } else if (currentInfo.label === val2.label && val2.joiningSuffix === "-") {
            currentInfo.count = 1;
          } else if (currentInfo.label === val2.label && val2.joiningSuffix !== "-") {
            currentInfo.count++;
            if (currentInfo.count === 2) {
              manglePageNumbers(values2, i2, currentInfo);
            }
          } else if (currentInfo.label !== val2.label) {
            currentInfo.label = val2.label;
            currentInfo.count = 1;
          } else {
            currentInfo.count = 1;
            currentInfo.label = val2.label;
          }
        }
        if (currentInfo.count === 2) {
          manglePageNumbers(values2, values2.length - 1, currentInfo);
        }
      }
      function setVariableParams(shadow_numbers, realVariable2, values2) {
        var obj2 = shadow_numbers[realVariable2];
        if (values2.length) {
          obj2.numeric = values2[0].numeric;
          obj2.collapsible = values2[0].collapsible;
          obj2.plural = values2[0].plural;
          obj2.label = CSL.STATUTE_SUBDIV_STRINGS[values2[0].label];
          if (variable === "number" && obj2.label === "issue" && me.getTerm("number")) {
            obj2.label = "number";
          }
        }
      }
      if (node3 && this.tmp.shadow_numbers[realVariable] && this.tmp.shadow_numbers[realVariable].values.length) {
        var values = this.tmp.shadow_numbers[realVariable].values;
        fixRanges(values);
        this.tmp.shadow_numbers[realVariable].masterStyling = setStyling(values);
        return;
      }
      if (!this.tmp.shadow_numbers[realVariable]) {
        this.tmp.shadow_numbers[realVariable] = {
          values: []
        };
      }
      if (!ItemObject) {
        return;
      }
      var languageRole = CSL.LangPrefsMap[variable];
      if (languageRole) {
        var localeType = this.opt["cite-lang-prefs"][languageRole][0];
        val = this.transform.getTextSubField(ItemObject, realVariable, "locale-" + localeType, true);
        val = val.name;
      } else {
        val = ItemObject[realVariable];
      }
      if (val && realVariable === "number" && ItemObject.type === "legal_case") {
        val = val.replace(/[\\]*-/g, "\\-");
      }
      if (val && this.sys.getAbbreviation) {
        if (this.sys.normalizeAbbrevsKey) {
          var normval = this.sys.normalizeAbbrevsKey(realVariable, val);
        } else {
          var normval = val;
        }
        var jurisdiction = this.transform.loadAbbreviation(ItemObject.jurisdiction, "number", normval, ItemObject.language);
        if (this.transform.abbrevs[jurisdiction].number) {
          if (this.transform.abbrevs[jurisdiction].number[normval]) {
            val = this.transform.abbrevs[jurisdiction].number[normval];
          } else {
            if ("undefined" !== typeof this.transform.abbrevs[jurisdiction].number[normval]) {
              delete this.transform.abbrevs[jurisdiction].number[normval];
            }
          }
        }
      }
      if ("undefined" !== typeof val && ("string" === typeof val || "number" === typeof val)) {
        if ("number" === typeof val) {
          val = "" + val;
        }
        var defaultLabel = CSL.STATUTE_SUBDIV_STRINGS_REVERSE[variable];
        if (this.tmp.shadow_numbers[realVariable].values.length === 0) {
          var values = parseString(val, defaultLabel);
          setSpaces(values);
          setPluralsAndNumerics(values);
          for (var obj of values) {
            if (!obj.numeric) obj.plural = 0;
          }
          this.tmp.shadow_numbers[realVariable].values = values;
          if (node3) {
            fixRanges(values);
            this.tmp.shadow_numbers[realVariable].masterStyling = setStyling(values);
          }
          setVariableParams(this.tmp.shadow_numbers, realVariable, values);
        }
        var info = this.tmp.shadow_numbers[realVariable];
        if (variable === "number") {
          if (info.values.length === 1 && info.values[0].value.indexOf("|") > -1) {
            info.values[0].value = info.values[0].value.replace(/\|/g, ", ");
            info.values[0].numeric = true;
            info.values[0].plural = 1;
            info.values[0].collapsible = false;
            info.numeric = true;
            info.plural = 1;
            info.collapsible = false;
          }
        }
        if (info.values.length === 1) {
          if (info.values[0].value.match(/^[0-9]+(?:\/[0-9]+)+$/)) {
            info.values[0].numeric = true;
            info.values[0].plural = 0;
            info.values[0].collapsible = false;
            info.numeric = true;
            info.plural = 0;
            info.collapsible = false;
          }
        }
        if (variable === "page") {
          if (info.values.length > 0) {
            if (info.values[0].gotosleepability) {
              info.labelForm = "short";
            }
          }
        }
      }
    };
    CSL.Util.outputNumericField = function(state, varname, itemID) {
      state.output.openLevel(state.tmp.shadow_numbers[varname].masterStyling);
      var masterStyling = state.tmp.shadow_numbers[varname].masterStyling;
      var nums = state.tmp.shadow_numbers[varname].values;
      var masterLabel = nums.length ? nums[0].label : null;
      var labelForm = state.tmp.shadow_numbers[varname].labelForm;
      var tryStatic = state.tmp.group_context.tip.label_static;
      var embeddedLabelForm;
      if (labelForm) {
        embeddedLabelForm = labelForm;
      } else {
        embeddedLabelForm = "short";
      }
      var labelCapitalizeIfFirst = state.tmp.shadow_numbers[varname].labelCapitalizeIfFirst;
      var labelDecorations = state.tmp.shadow_numbers[varname].labelDecorations;
      var lastLabelName = null;
      for (var i2 = 0, ilen = nums.length; i2 < ilen; i2++) {
        var num = nums[i2];
        var label = "";
        var labelName;
        if (num.label) {
          if ("var:" === num.label.slice(0, 4)) {
            labelName = num.label.slice(4);
          } else {
            labelName = CSL.STATUTE_SUBDIV_STRINGS[num.label];
          }
          if (labelName) {
            if (num.label === masterLabel) {
              if (tryStatic) {
                label = state.getTerm(labelName, "static", num.plural);
                if (label.indexOf("%s") === -1) {
                  label = "";
                }
              }
              if (!label) {
                label = state.getTerm(labelName, labelForm, num.plural);
              }
            } else {
              if (tryStatic) {
                label = state.getTerm(labelName, "static", num.plural);
                if (label.indexOf("%s") === -1) {
                  label = "";
                }
              }
              if (!label) {
                label = state.getTerm(labelName, embeddedLabelForm, num.plural);
              }
            }
            if (labelCapitalizeIfFirst) {
              label = CSL.Output.Formatters["capitalize-first"](state, label);
            }
          }
        }
        var labelPlaceholderPos = -1;
        if (label) {
          labelPlaceholderPos = label.indexOf("%s");
        }
        var numStyling = CSL.Util.cloneToken(num.styling);
        numStyling.formatter = num.styling.formatter;
        numStyling.type = num.styling.type;
        numStyling.num = num.styling.num;
        numStyling.gender = num.styling.gender;
        if (labelPlaceholderPos > 0 && labelPlaceholderPos < label.length - 2) {
          numStyling.strings.prefix += label.slice(0, labelPlaceholderPos);
          numStyling.strings.suffix = label.slice(labelPlaceholderPos + 2) + numStyling.strings.suffix;
        } else if (num.labelVisibility) {
          if (!label) {
            label = num.label;
            labelName = num.label;
          }
          if (labelPlaceholderPos > 0) {
            var prefixLabelStyling = new CSL.Token();
            prefixLabelStyling.decorations = labelDecorations;
            state.output.append(label.slice(0, labelPlaceholderPos), prefixLabelStyling);
          } else if (labelPlaceholderPos === label.length - 2 || labelPlaceholderPos === -1) {
            state.output.append(label + num.labelSuffix, "empty");
          }
        }
        CSL.UPDATE_GROUP_CONTEXT_CONDITION(state, masterStyling.strings.prefix, null, masterStyling, `${num.particle}${num.value}`);
        if (num.collapsible) {
          var blob;
          if (num.value.match(/^[1-9][0-9]*$/) && Number.isSafeInteger(parseInt(num.value, 10))) {
            blob = new CSL.NumericBlob(state, num.particle, parseInt(num.value, 10), numStyling, itemID);
          } else {
            blob = new CSL.NumericBlob(state, num.particle, num.value, numStyling, itemID);
          }
          if ("undefined" === typeof blob.gender) {
            blob.gender = state.locale[state.opt.lang]["noun-genders"][varname];
          }
          state.output.append(blob, "literal");
        } else {
          state.output.append(num.particle + num.value, numStyling);
        }
        if (labelPlaceholderPos === 0 && labelPlaceholderPos < label.length - 2) {
          if (lastLabelName === null) {
            lastLabelName = labelName;
          }
          if (labelName !== lastLabelName || i2 === nums.length - 1) {
            var suffixLabelStyling = new CSL.Token();
            suffixLabelStyling.decorations = labelDecorations;
            state.output.append(label.slice(labelPlaceholderPos + 2), suffixLabelStyling);
          }
        }
        lastLabelName = labelName;
        state.tmp.term_predecessor = true;
      }
      state.output.closeLevel();
    };
    CSL.Util.PageRangeMangler = {};
    CSL.Util.PageRangeMangler.getFunction = function(state, rangeType) {
      var rangerex, pos, len, stringify4, listify, expand2, minimize, minimize_internal, chicago15, chicago16, lst, m2, b, e2, ret, begin, end, ret_func;
      var range_delimiter = state.getTerm(rangeType + "-range-delimiter");
      rangerex = /([0-9]*[a-zA-Z]+0*)?([0-9]+[a-z]*)\s*(?:\u2013|-)\s*([0-9]*[a-zA-Z]+0*)?([0-9]+[a-z]*)/;
      stringify4 = function(lst2) {
        len = lst2.length;
        for (pos = 1; pos < len; pos += 2) {
          if ("object" === typeof lst2[pos]) {
            lst2[pos] = lst2[pos].join("");
          }
        }
        var ret2 = lst2.join("");
        ret2 = ret2.replace(/([^\\])\-/g, "$1" + state.getTerm(rangeType + "-range-delimiter"));
        return ret2;
      };
      listify = function(str2) {
        var m3, lst2, ret2;
        var hyphens = "\\s+\\-\\s+";
        var this_range_delimiter = range_delimiter === "-" ? "" : range_delimiter;
        var delimRex = new RegExp("([^\\\\])[-" + this_range_delimiter + "\\u2013]", "g");
        str2 = str2.replace(delimRex, "$1 - ").replace(/\s+-\s+/g, " - ");
        var rexm = new RegExp("((?:[0-9]*[a-zA-Z]+0*)?[0-9]+[a-z]*" + hyphens + "(?:[0-9]*[a-zA-Z]+0*)?[0-9]+[a-z]*)", "g");
        var rexlst = new RegExp("(?:[0-9]*[a-zA-Z]+0*)?[0-9]+[a-z]*" + hyphens + "(?:[0-9]*[a-zA-Z]+0*)?[0-9]+[a-z]*");
        m3 = str2.match(rexm);
        lst2 = str2.split(rexlst);
        if (lst2.length === 0) {
          ret2 = m3;
        } else {
          ret2 = [lst2[0]];
          for (pos = 1, len = lst2.length; pos < len; pos += 1) {
            ret2.push(m3[pos - 1].replace(/\s*\-\s*/g, "-"));
            ret2.push(lst2[pos]);
          }
        }
        return ret2;
      };
      expand2 = function(str2) {
        str2 = "" + str2;
        lst = listify(str2);
        len = lst.length;
        for (pos = 1; pos < len; pos += 2) {
          m2 = lst[pos].match(rangerex);
          if (m2) {
            if (!m2[3] || m2[1] === m2[3]) {
              if (m2[4].length < m2[2].length) {
                m2[4] = m2[2].slice(0, m2[2].length - m2[4].length) + m2[4];
              }
              if (parseInt(m2[2], 10) < parseInt(m2[4], 10)) {
                m2[3] = range_delimiter + (m2[1] ? m2[1] : "");
                lst[pos] = m2.slice(1);
              }
            }
          }
          if ("string" === typeof lst[pos]) {
            lst[pos] = lst[pos].replace(/\-/g, range_delimiter);
          }
        }
        return lst;
      };
      minimize = function(lst2, minchars, isyear) {
        len = lst2.length;
        for (var i2 = 1, ilen = lst2.length; i2 < ilen; i2 += 2) {
          if ("object" === typeof lst2[i2]) {
            lst2[i2][3] = minimize_internal(lst2[i2][1], lst2[i2][3], minchars, isyear);
            if (lst2[i2][2].slice(1) === lst2[i2][0]) {
              lst2[i2][2] = range_delimiter;
            }
          }
        }
        return stringify4(lst2);
      };
      minimize_internal = function(begin2, end2, minchars, isyear) {
        if (!minchars) {
          minchars = 0;
        }
        b = ("" + begin2).split("");
        e2 = ("" + end2).split("");
        ret = e2.slice();
        ret.reverse();
        if (b.length === e2.length) {
          for (var i2 = 0, ilen = b.length; i2 < ilen; i2 += 1) {
            if (b[i2] === e2[i2] && ret.length > minchars) {
              ret.pop();
            } else {
              if (minchars && isyear && ret.length === 3) {
                var front = b.slice(0, i2);
                front.reverse();
                ret = ret.concat(front);
              }
              break;
            }
          }
        }
        ret.reverse();
        return ret.join("");
      };
      chicago15 = function(lst2) {
        len = lst2.length;
        for (pos = 1; pos < len; pos += 2) {
          if ("object" === typeof lst2[pos]) {
            m2 = lst2[pos];
            begin = parseInt(m2[1], 10);
            end = parseInt(m2[3], 10);
            if (begin > 100 && begin % 100 && parseInt(begin / 100, 10) === parseInt(end / 100, 10)) {
              m2[3] = "" + end % 100;
            } else if (begin >= 1e4) {
              m2[3] = "" + end % 1e3;
            }
          }
          if (m2[2].slice(1) === m2[0]) {
            m2[2] = range_delimiter;
          }
        }
        return stringify4(lst2);
      };
      chicago16 = function(lst2) {
        len = lst2.length;
        for (pos = 1; pos < len; pos += 2) {
          if ("object" === typeof lst2[pos]) {
            m2 = lst2[pos];
            begin = parseInt(m2[1], 10);
            end = parseInt(m2[3], 10);
            e2 = "" + end;
            if (begin > 100 && begin % 100) {
              for (var i2 = 2; i2 < e2.length; i2++) {
                var divisor = Math.pow(10, i2);
                if (Math.floor(begin / divisor) === Math.floor(end / divisor)) {
                  m2[3] = "" + end % divisor;
                  break;
                }
              }
            }
          }
          if (m2[2].slice(1) === m2[0]) {
            m2[2] = range_delimiter;
          }
        }
        return stringify4(lst2);
      };
      var sniff = function(str2, func, minchars, isyear) {
        var ret2;
        str2 = "" + str2;
        var lst2 = expand2(str2);
        var ret2 = func(lst2, minchars, isyear);
        return ret2;
      };
      if (!state.opt[rangeType + "-range-format"]) {
        ret_func = function(str2) {
          return sniff(str2, stringify4);
        };
      } else if (state.opt[rangeType + "-range-format"] === "expanded") {
        ret_func = function(str2) {
          return sniff(str2, stringify4);
        };
      } else if (state.opt[rangeType + "-range-format"] === "minimal") {
        ret_func = function(str2) {
          return sniff(str2, minimize);
        };
      } else if (state.opt[rangeType + "-range-format"] === "minimal-two") {
        ret_func = function(str2, isyear) {
          return sniff(str2, minimize, 2, isyear);
        };
      } else if (state.opt[rangeType + "-range-format"] === "chicago") {
        ret_func = function(str2) {
          return sniff(str2, chicago15);
        };
      } else if (state.opt[rangeType + "-range-format"] === "chicago-15") {
        ret_func = function(str2) {
          return sniff(str2, chicago15);
        };
      } else if (state.opt[rangeType + "-range-format"] === "chicago-16") {
        ret_func = function(str2) {
          return sniff(str2, chicago16);
        };
      }
      return ret_func;
    };
    CSL.Util.FlipFlopper = function(state) {
      var _nestingState = [];
      var _nestingData = {
        '<span class="nocase">': {
          type: "nocase",
          opener: '<span class="nocase">',
          closer: "</span>",
          attr: null,
          outer: null,
          flipflop: null
        },
        '<span class="nodecor">': {
          type: "nodecor",
          opener: '<span class="nodecor">',
          closer: "</span>",
          attr: "@class",
          outer: "nodecor",
          flipflop: {
            "nodecor": "nodecor"
          }
        },
        '<span style="font-variant:small-caps;">': {
          type: "tag",
          opener: '<span style="font-variant:small-caps;">',
          closer: "</span>",
          attr: "@font-variant",
          outer: "small-caps",
          flipflop: {
            "small-caps": "normal",
            "normal": "small-caps"
          }
        },
        "<sc>": {
          type: "tag",
          opener: "<sc>",
          closer: "</sc>",
          attr: "@font-variant",
          outer: "small-caps",
          flipflop: {
            "small-caps": "normal",
            "normal": "small-caps"
          }
        },
        "<i>": {
          type: "tag",
          opener: "<i>",
          closer: "</i>",
          attr: "@font-style",
          outer: "italic",
          flipflop: {
            "italic": "normal",
            "normal": "italic"
          }
        },
        "<b>": {
          type: "tag",
          opener: "<b>",
          closer: "</b>",
          attr: "@font-weight",
          outer: "bold",
          flipflop: {
            "bold": "normal",
            "normal": "bold"
          }
        },
        "<sup>": {
          type: "tag",
          opener: "<sup>",
          closer: "</sup>",
          attr: "@vertical-align",
          outer: "sup",
          flipflop: {
            "sub": "sup",
            "sup": "sup"
          }
        },
        "<sub>": {
          type: "tag",
          opener: "<sub>",
          closer: "</sub>",
          attr: "@vertical-align",
          outer: "sub",
          flipflop: {
            "sup": "sub",
            "sub": "sub"
          }
        },
        ' "': {
          type: "quote",
          opener: ' "',
          closer: '"',
          attr: "@quotes",
          outer: "true",
          flipflop: {
            "true": "inner",
            "inner": "true",
            "false": "true"
          }
        },
        " '": {
          type: "quote",
          opener: " '",
          closer: "'",
          attr: "@quotes",
          outer: "inner",
          flipflop: {
            "true": "inner",
            "inner": "true",
            "false": "true"
          }
        }
      };
      _nestingData['("'] = _nestingData[' "'];
      _nestingData["('"] = _nestingData[" '"];
      var localeOpenQuote = state.getTerm("open-quote");
      var localeCloseQuote = state.getTerm("close-quote");
      var localeOpenInnerQuote = state.getTerm("open-inner-quote");
      var localeCloseInnerQuote = state.getTerm("close-inner-quote");
      if (localeOpenQuote && localeCloseQuote && [' "', " '", '"', "'"].indexOf(localeOpenQuote) === -1) {
        _nestingData[localeOpenQuote] = JSON.parse(JSON.stringify(_nestingData[' "']));
        _nestingData[localeOpenQuote].opener = localeOpenQuote;
        _nestingData[localeOpenQuote].closer = localeCloseQuote;
      }
      if (localeOpenInnerQuote && localeCloseInnerQuote && [' "', " '", '"', "'"].indexOf(localeOpenInnerQuote) === -1) {
        _nestingData[localeOpenInnerQuote] = JSON.parse(JSON.stringify(_nestingData[" '"]));
        _nestingData[localeOpenInnerQuote].opener = localeOpenInnerQuote;
        _nestingData[localeOpenInnerQuote].closer = localeCloseInnerQuote;
      }
      function _setOuterQuoteForm(quot) {
        var flip = {
          " '": ' "',
          ' "': " '",
          '("': "('",
          "('": '("'
        };
        _nestingData[quot].outer = "true";
        _nestingData[flip[quot]].outer = "inner";
      }
      function _getNestingOpenerParams(opener) {
        var openers = [];
        var keys2 = Object.keys(_nestingData);
        for (var i2 = 0, l = keys2.length; i2 < l; i2++) {
          var key2 = keys2[i2];
          if (_nestingData[opener].type !== "quote" || !_nestingData[opener]) {
            openers.push(key2);
          }
        }
        var ret = _nestingData[opener];
        ret.opener = new RegExp("^(?:" + openers.map(function(str2) {
          return str2.replace("(", "\\(");
        }).join("|") + ")");
        return ret;
      }
      var _nestingParams = (function() {
        var ret = {};
        var keys2 = Object.keys(_nestingData);
        for (var i2 = 0, l = keys2.length; i2 < l; i2++) {
          var key2 = keys2[i2];
          ret[key2] = _getNestingOpenerParams(key2);
        }
        return ret;
      })();
      var _tagRex = (function() {
        var openers = [];
        var closers = [];
        var vals = {};
        for (var opener in _nestingParams) {
          openers.push(opener);
          vals[_nestingParams[opener].closer] = true;
        }
        var keys2 = Object.keys(vals);
        for (var i2 = 0, l = keys2.length; i2 < l; i2++) {
          var closer = keys2[i2];
          closers.push(closer);
        }
        var all10 = openers.concat(closers).map(function(str2) {
          return str2.replace("(", "\\(");
        }).join("|");
        return {
          matchAll: new RegExp("((?:" + all10 + "))", "g"),
          splitAll: new RegExp("(?:" + all10 + ")", "g"),
          open: new RegExp("(^(?:" + openers.map(function(str2) {
            return str2.replace("(", "\\(");
          }).join("|") + ")$)"),
          close: new RegExp("(^(?:" + closers.join("|") + ")$)")
        };
      })();
      function _tryOpen(tag, pos) {
        var params = _nestingState[_nestingState.length - 1];
        if (!params || tag.match(params.opener)) {
          _nestingState.push({
            type: _nestingParams[tag].type,
            opener: _nestingParams[tag].opener,
            closer: _nestingParams[tag].closer,
            pos
          });
          return false;
        } else {
          _nestingState.pop();
          _nestingState.push({
            type: _nestingParams[tag].type,
            opener: _nestingParams[tag].opener,
            closer: _nestingParams[tag].closer,
            pos
          });
          return {
            fixtag: params.pos
          };
        }
      }
      function _tryClose(tag, pos) {
        var params = _nestingState[_nestingState.length - 1];
        if (params && tag === params.closer) {
          _nestingState.pop();
          if (params.type === "nocase") {
            return {
              nocase: {
                open: params.pos,
                close: pos
              }
            };
          } else {
            return false;
          }
        } else {
          if (params) {
            return {
              fixtag: params.pos
            };
          } else {
            return {
              fixtag: pos
            };
          }
        }
      }
      function _pushNestingState(tag, pos) {
        if (tag.match(_tagRex.open)) {
          return _tryOpen(tag, pos);
        } else {
          return _tryClose(tag, pos);
        }
      }
      function _doppelString(str2) {
        var forcedSpaces = [];
        str2 = str2.replace(/(<span)\s+(style=\"font-variant:)\s*(small-caps);?\"[^>]*(>)/g, '$1 $2$3;"$4');
        str2 = str2.replace(/(<span)\s+(class=\"no(?:case|decor)\")[^>]*(>)/g, "$1 $2$3");
        var match3 = str2.match(_tagRex.matchAll);
        if (!match3) {
          return {
            tags: [],
            strings: [str2],
            forcedSpaces: []
          };
        }
        var split2 = str2.split(_tagRex.splitAll);
        for (var i2 = 0, ilen = match3.length - 1; i2 < ilen; i2++) {
          if (_nestingData[match3[i2]]) {
            if (split2[i2 + 1] === "" && ['"', "'"].indexOf(match3[i2 + 1]) > -1) {
              match3[i2 + 1] = " " + match3[i2 + 1];
              forcedSpaces.push(true);
            } else {
              forcedSpaces.push(false);
            }
          }
        }
        return {
          tags: match3,
          strings: split2,
          forcedSpaces
        };
      }
      var TagReg = function(blob) {
        var _stack = [];
        this.set = function(tag) {
          var attr = _nestingData[tag].attr;
          var decor = null;
          for (var i2 = _stack.length - 1; i2 > -1; i2--) {
            var _decor = _stack[i2];
            if (_decor[0] === attr) {
              decor = _decor;
              break;
            }
          }
          if (!decor) {
            var allTheDecor = [state[state.tmp.area].opt.layout_decorations].concat(blob.alldecor);
            outer:
              for (var i2 = allTheDecor.length - 1; i2 > -1; i2--) {
                var decorset = allTheDecor[i2];
                if (!decorset) {
                  continue;
                }
                for (var j = decorset.length - 1; j > -1; j--) {
                  var _decor = decorset[j];
                  if (_decor[0] === attr) {
                    decor = _decor;
                    break outer;
                  }
                }
              }
          }
          if (!decor) {
            decor = [attr, _nestingData[tag].outer];
          } else {
            decor = [attr, _nestingData[tag].flipflop[decor[1]]];
          }
          _stack.push(decor);
        };
        this.pair = function() {
          return _stack[_stack.length - 1];
        };
        this.pop = function() {
          _stack.pop();
        };
      };
      function _apostropheForce(tag, str2) {
        if (tag === "'") {
          if (str2 && str2.match(/^[^\,\.\?\:\;\ ]/)) {
            return "\u2019";
          }
        } else if (tag === " '" && str2 && str2.match(/^[\ ]/)) {
          return " \u2019";
        }
        return false;
      }
      function _undoppelToQueue(blob, doppel, leadingSpace) {
        var firstString = true;
        var tagReg = new TagReg(blob);
        blob.blobs = [];
        function Stack2(blob2) {
          this.stack = [blob2];
          this.latest = blob2;
          this.addStyling = function(str3, decor) {
            if (firstString) {
              if (str3.slice(0, 1) === " ") {
                str3 = str3.slice(1);
              }
              if (str3.slice(0, 1) === " ") {
                str3 = str3.slice(1);
              }
              firstString = false;
            }
            this.latest = this.stack[this.stack.length - 1];
            if (decor) {
              if ("string" === typeof this.latest.blobs) {
                var child = new CSL.Blob();
                child.blobs = this.latest.blobs;
                child.alldecor = this.latest.alldecor.slice();
                this.latest.blobs = [child];
              }
              var tok = new CSL.Token();
              var newblob = new CSL.Blob(null, tok);
              newblob.alldecor = this.latest.alldecor.slice();
              if (decor[0] === "@class" && decor[1] === "nodecor") {
                var newdecorset = [];
                var seen = {};
                var allTheDecor = [state[state.tmp.area].opt.layout_decorations].concat(newblob.alldecor);
                for (var i3 = allTheDecor.length - 1; i3 > -1; i3--) {
                  var _decorset = allTheDecor[i3];
                  if (!_decorset) {
                    continue;
                  }
                  for (var j = _decorset.length - 1; j > -1; j--) {
                    var _olddecor = _decorset[j];
                    if (["@font-weight", "@font-style", "@font-variant"].indexOf(_olddecor[0]) > -1 && !seen[_olddecor[0]]) {
                      if (decor[1] !== "normal") {
                        newblob.decorations.push([_olddecor[0], "normal"]);
                        newdecorset.push([_olddecor[0], "normal"]);
                      }
                      seen[_olddecor[0]] = true;
                    }
                  }
                }
                newblob.alldecor.push(newdecorset);
              } else {
                newblob.decorations.push(decor);
                newblob.alldecor.push([decor]);
              }
              this.latest.blobs.push(newblob);
              this.stack.push(newblob);
              this.latest = newblob;
              if (str3) {
                var tok = new CSL.Token();
                var newblob = new CSL.Blob(null, tok);
                newblob.blobs = str3;
                newblob.alldecor = this.latest.alldecor.slice();
                this.latest.blobs.push(newblob);
              }
            } else {
              if (str3) {
                var child = new CSL.Blob();
                child.blobs = str3;
                child.alldecor = this.latest.alldecor.slice();
                this.latest.blobs.push(child);
              }
            }
          };
          this.popStyling = function() {
            this.stack.pop();
          };
        }
        var stack = new Stack2(blob);
        if (doppel.strings.length) {
          var str2 = doppel.strings[0];
          if (leadingSpace) {
            str2 = " " + str2;
          }
          stack.addStyling(str2);
        }
        for (var i2 = 0, ilen = doppel.tags.length; i2 < ilen; i2++) {
          var tag = doppel.tags[i2];
          var str2 = doppel.strings[i2 + 1];
          if (tag.match(_tagRex.open)) {
            tagReg.set(tag);
            stack.addStyling(str2, tagReg.pair());
          } else {
            tagReg.pop();
            stack.popStyling();
            stack.addStyling(str2);
          }
        }
      }
      this.processTags = function(blob) {
        var str2 = blob.blobs;
        var leadingSpace = false;
        if (str2.slice(0, 1) === " " && !str2.match(/^\s+[\'\"]/)) {
          leadingSpace = true;
        }
        var rex = new RegExp("(" + CSL.ROMANESQUE_REGEXP.source + ")\u2019(" + CSL.ROMANESQUE_REGEXP.source + ")", "g");
        var str2 = " " + str2.replace(rex, "$1'$2");
        var doppel = _doppelString(str2);
        if (doppel.tags.length === 0) {
          return;
        }
        var quoteFormSeen = false;
        for (var i2 = 0, ilen = doppel.tags.length; i2 < ilen; i2++) {
          var tag = doppel.tags[i2];
          var str2 = doppel.strings[i2 + 1];
          var apostrophe = _apostropheForce(tag, str2);
          if (apostrophe) {
            doppel.strings[i2 + 1] = apostrophe + doppel.strings[i2 + 1];
            doppel.tags[i2] = "";
          } else {
            var tagInfo;
            while (true) {
              tagInfo = _pushNestingState(tag, i2);
              if (tagInfo) {
                if (Object.keys(tagInfo).indexOf("fixtag") > -1) {
                  if (tag.match(_tagRex.close) && tag === "'") {
                    doppel.strings[i2 + 1] = "\u2019" + doppel.strings[i2 + 1];
                    doppel.tags[i2] = "";
                  } else {
                    var failedTag = doppel.tags[tagInfo.fixtag];
                    if (doppel.forcedSpaces[tagInfo.fixtag - 1]) {
                      failedTag = failedTag.slice(1);
                    }
                    doppel.strings[tagInfo.fixtag + 1] = failedTag + doppel.strings[tagInfo.fixtag + 1];
                    doppel.tags[tagInfo.fixtag] = "";
                  }
                  if (_nestingState.length > 0) {
                    if (tag !== "'") {
                      _nestingState.pop();
                    } else {
                      break;
                    }
                  } else {
                    break;
                  }
                } else if (tagInfo.nocase) {
                  doppel.tags[tagInfo.nocase.open] = "";
                  doppel.tags[tagInfo.nocase.close] = "";
                  break;
                } else {
                  break;
                }
              } else {
                break;
              }
            }
            if (tagInfo && (tagInfo.fixtag || tagInfo.fixtag === 0)) {
              doppel.strings[i2 + 1] = doppel.tags[i2] + doppel.strings[i2 + 1];
              doppel.tags[i2] = "";
            }
          }
        }
        for (var i2 = _nestingState.length - 1; i2 > -1; i2--) {
          var tagPos = _nestingState[i2].pos;
          var tag = doppel.tags[tagPos];
          if (tag === " '" || tag === "'") {
            doppel.strings[tagPos + 1] = " \u2019" + doppel.strings[tagPos + 1];
          } else {
            doppel.strings[tagPos + 1] = doppel.tags[tagPos] + doppel.strings[tagPos + 1];
          }
          doppel.tags[tagPos] = "";
          _nestingState.pop();
        }
        for (var i2 = doppel.tags.length - 1; i2 > -1; i2--) {
          if (!doppel.tags[i2]) {
            doppel.tags = doppel.tags.slice(0, i2).concat(doppel.tags.slice(i2 + 1));
            doppel.strings[i2] = doppel.strings[i2] + doppel.strings[i2 + 1];
            doppel.strings = doppel.strings.slice(0, i2 + 1).concat(doppel.strings.slice(i2 + 2));
          }
        }
        for (var i2 = 0, ilen = doppel.tags.length; i2 < ilen; i2++) {
          var tag = doppel.tags[i2];
          var forcedSpace = doppel.forcedSpaces[i2 - 1];
          if ([' "', " '", '("', "('"].indexOf(tag) > -1) {
            if (!quoteFormSeen) {
              _setOuterQuoteForm(tag);
              quoteFormSeen = true;
            }
            if (!forcedSpace) {
              doppel.strings[i2] += tag.slice(0, 1);
            }
          }
        }
        _undoppelToQueue(blob, doppel, leadingSpace);
      };
    };
    CSL.Output.Formatters = (function() {
      var rexStr = `(?:\u2018|\u2019|\u201C|\u201D| "| '|"|'|[-\u2013\u2014/.,;?!:]|\\[|\\]|\\(|\\)|<span style="font-variant: small-caps;">|<span class="no(?:case|decor)">|</span>|</?(?:i|sc|b|sub|sup)>)`;
      var tagDoppel = new CSL.Doppeler(rexStr, function(str2) {
        return str2.replace(/(<span)\s+(class=\"no(?:case|decor)\")[^>]*(>)/g, "$1 $2$3").replace(/(<span)\s+(style=\"font-variant:)\s*(small-caps);?(\")[^>]*(>)/g, "$1 $2 $3;$4$5");
      });
      var rexNameStr = '(?:[-\\s]*<\\/*(?:spans+class="no(?:case|decor)"|i|sc|b|sub|sup)>[-\\s]*|[-\\s]+)';
      var nameDoppel = new CSL.Doppeler(rexNameStr);
      var wordDoppel = new CSL.Doppeler("(?:[\xA0 \xA0\u2000-\u200B\u205F\u3000]+)");
      var _tagParams = {
        '<span style="font-variant: small-caps;">': "</span>",
        '<span class="nocase">': "</span>",
        '<span class="nodecor">': "</span>",
        "<sc>": "</sc>",
        "<sub>": "</sub>",
        "<sup>": "</sup>"
      };
      function _capitalise(word) {
        var m2 = word.match(/(^\s*)((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]))(.*)/);
        if (m2 && !(m2[2].match(/^[\u0370-\u03FF]$/) && !m2[3])) {
          return m2[1] + CSL.toLocaleUpperCase.call(this, m2[2]) + m2[3];
        }
        return word;
      }
      function _textcaseEngine(config3, string2) {
        if (!string2) {
          return "";
        }
        config3.doppel = tagDoppel.split(string2);
        var quoteParams = {
          ' "': {
            opener: " '",
            closer: '"'
          },
          " '": {
            opener: ' "',
            closer: "'"
          },
          "\u2018": {
            opener: "\u2018",
            closer: "\u2019"
          },
          "\u201C": {
            opener: "\u201C",
            closer: "\u201D"
          }
        };
        function tryOpen(tag2, pos) {
          if (config3.quoteState.length === 0 || tag2 === config3.quoteState[config3.quoteState.length - 1].opener) {
            config3.quoteState.push({
              opener: quoteParams[tag2].opener,
              closer: quoteParams[tag2].closer,
              pos
            });
            return false;
          } else {
            var prevPos = config3.quoteState[config3.quoteState.length - 1].pos;
            config3.quoteState.pop();
            config3.quoteState.push({
              opener: quoteParams[tag2].opener,
              closer: quoteParams[tag2].closer,
              positions: pos
            });
            return prevPos;
          }
        }
        function tryClose(tag2, pos) {
          if (config3.quoteState.length > 0 && tag2 === config3.quoteState[config3.quoteState.length - 1].closer) {
            config3.quoteState.pop();
          } else {
            return pos;
          }
        }
        function pushQuoteState(tag2, pos) {
          var isOpener = ["\u201C", "\u2018", ' "', " '"].indexOf(tag2) > -1 ? true : false;
          if (isOpener) {
            return tryOpen(tag2, pos);
          } else {
            return tryClose(tag2, pos);
          }
        }
        function quoteFix(tag2, positions) {
          var m2 = tag2.match(/(^(?:\u2018|\u2019|\u201C|\u201D|\"|\')|(?: \"| \')$)/);
          if (m2) {
            return pushQuoteState(m2[1], positions);
          }
        }
        if (config3.doppel.strings.length && config3.doppel.strings[0].trim()) {
          config3.doppel.strings[0] = config3.capitaliseWords(config3.doppel.strings[0], 0, config3.doppel.tags[0]);
        }
        for (var i2 = 0, ilen = config3.doppel.tags.length; i2 < ilen; i2++) {
          var tag = config3.doppel.tags[i2];
          var str2 = config3.doppel.strings[i2 + 1];
          if (config3.tagState !== null) {
            if (_tagParams[tag]) {
              config3.tagState.push(_tagParams[tag]);
            } else if (config3.tagState.length && tag === config3.tagState[config3.tagState.length - 1]) {
              config3.tagState.pop();
            }
          }
          if (config3.afterPunct !== null) {
            if (tag.match(/[\!\?\:]$/)) {
              config3.afterPunct = true;
            }
          }
          if (config3.tagState.length === 0) {
            config3.doppel.strings[i2 + 1] = config3.capitaliseWords(str2, i2 + 1, config3.doppel, config3.doppel.tags[i2 + 1]);
          } else if (config3.doppel.strings[i2 + 1].trim()) {
            config3.lastWordPos = null;
          }
          if (config3.quoteState !== null) {
            var quotePos = quoteFix(tag, i2);
            if (quotePos || quotePos === 0) {
              var origChar = config3.doppel.origStrings[quotePos + 1].slice(0, 1);
              config3.doppel.strings[quotePos + 1] = origChar + config3.doppel.strings[quotePos + 1].slice(1);
              config3.lastWordPos = null;
            }
          }
          if (config3.isFirst) {
            if (str2.trim()) {
              config3.isFirst = false;
            }
          }
          if (config3.afterPunct) {
            if (str2.trim()) {
              config3.afterPunct = false;
            }
          }
        }
        if (config3.quoteState) {
          for (var i2 = 0, ilen = config3.quoteState.length; i2 < ilen; i2++) {
            var quotePos = config3.quoteState[i2].pos;
            if (typeof quotePos !== "undefined") {
              var origChar = config3.doppel.origStrings[quotePos + 1].slice(0, 1);
              config3.doppel.strings[quotePos + 1] = origChar + config3.doppel.strings[quotePos + 1].slice(1);
            }
          }
        }
        if (config3.lastWordPos) {
          var lastWords = wordDoppel.split(config3.doppel.strings[config3.lastWordPos.strings]);
          var lastWord = lastWords.strings[config3.lastWordPos.words];
          if (lastWord.length > 1 && CSL.toLocaleLowerCase.call(this, lastWord).match(config3.skipWordsRex)) {
            lastWord = _capitalise.call(this, lastWord);
            lastWords.strings[config3.lastWordPos.words] = lastWord;
          }
          config3.doppel.strings[config3.lastWordPos.strings] = wordDoppel.join(lastWords);
        }
        return tagDoppel.join(config3.doppel);
      }
      function passthrough(state, str2) {
        return str2;
      }
      function lowercase(state, string2) {
        var config3 = {
          quoteState: null,
          capitaliseWords: function(str2) {
            var words = str2.split(" ");
            for (var i2 = 0, ilen = words.length; i2 < ilen; i2++) {
              var word = words[i2];
              if (word) {
                words[i2] = CSL.toLocaleLowerCase.call(state, word);
              }
            }
            return words.join(" ");
          },
          skipWordsRex: null,
          tagState: [],
          afterPunct: null,
          isFirst: null
        };
        return _textcaseEngine.call(state, config3, string2);
      }
      function uppercase2(state, string2) {
        var config3 = {
          quoteState: null,
          capitaliseWords: function(str2) {
            var words = str2.split(" ");
            for (var i2 = 0, ilen = words.length; i2 < ilen; i2++) {
              var word = words[i2];
              if (word) {
                words[i2] = CSL.toLocaleUpperCase.call(state, word);
              }
            }
            return words.join(" ");
          },
          skipWordsRex: null,
          tagState: [],
          afterPunct: null,
          isFirst: null
        };
        return _textcaseEngine.call(state, config3, string2);
      }
      function sentence(state, string2) {
        var config3 = {
          quoteState: [],
          capitaliseWords: function(str2) {
            var words = str2.split(" ");
            for (var i2 = 0, ilen = words.length; i2 < ilen; i2++) {
              var word = words[i2];
              if (word) {
                if (config3.isFirst) {
                  words[i2] = _capitalise.call(state, word);
                  config3.isFirst = false;
                } else {
                  words[i2] = CSL.toLocaleLowerCase.call(state, word);
                }
              }
            }
            return words.join(" ");
          },
          skipWordsRex: null,
          tagState: [],
          afterPunct: null,
          isFirst: true
        };
        return _textcaseEngine.call(state, config3, string2);
      }
      function title(state, string2) {
        var config3 = {
          quoteState: [],
          capitaliseWords: function(str2, i2, followingTag) {
            if (str2.trim()) {
              var wordle = wordDoppel.split(str2);
              var words = wordle.strings;
              for (var j = 0, jlen = words.length; j < jlen; j++) {
                var word = words[j];
                if (!word) {
                  continue;
                }
                let lcase = CSL.toLocaleLowerCase.call(state, word);
                let capitalize2 = false;
                if (word.length > 1 && !lcase.match(config3.skipWordsRex)) {
                  capitalize2 = true;
                } else if (j === words.length - 1 && followingTag === "-") {
                  capitalize2 = true;
                } else if (config3.isFirst) {
                  capitalize2 = true;
                } else if (config3.afterPunct) {
                  capitalize2 = true;
                }
                if (capitalize2 && word === lcase) {
                  words[j] = _capitalise.call(state, word);
                }
                config3.afterPunct = false;
                config3.isFirst = false;
                config3.lastWordPos = {
                  strings: i2,
                  words: j
                };
              }
              str2 = wordDoppel.join(wordle);
            }
            return str2;
          },
          skipWordsRex: state.locale[state.opt.lang].opts["skip-words-regexp"],
          tagState: [],
          afterPunct: false,
          isFirst: true
        };
        return _textcaseEngine.call(state, config3, string2);
      }
      function capitalizeFirst(state, string2) {
        var config3 = {
          quoteState: [],
          capitaliseWords: function(str2) {
            var wordle = wordDoppel.split(str2);
            var words = wordle.strings;
            for (var i2 = 0, ilen = words.length; i2 < ilen; i2++) {
              var word = words[i2];
              if (word) {
                if (config3.isFirst) {
                  if (word === CSL.toLocaleLowerCase.call(state, word)) {
                    words[i2] = _capitalise.call(state, word);
                  }
                  config3.isFirst = false;
                  break;
                }
              }
            }
            return wordDoppel.join(wordle);
          },
          skipWordsRex: null,
          tagState: [],
          afterPunct: null,
          isFirst: true
        };
        return _textcaseEngine.call(state, config3, string2);
      }
      function capitalizeAll(state, string2) {
        var config3 = {
          quoteState: [],
          capitaliseWords: function(str2) {
            var wordle = wordDoppel.split(str2);
            var words = wordle.strings;
            for (var i2 = 0, ilen = words.length; i2 < ilen; i2++) {
              var word = words[i2];
              if (word) {
                if (word === CSL.toLocaleLowerCase.call(state, word)) {
                  words[i2] = _capitalise.call(state, word);
                }
              }
            }
            return wordDoppel.join(wordle);
          },
          skipWordsRex: null,
          tagState: [],
          afterPunct: null,
          isFirst: null
        };
        return _textcaseEngine.call(state, config3, string2);
      }
      return {
        nameDoppel,
        passthrough,
        lowercase,
        uppercase: uppercase2,
        sentence,
        title,
        "capitalize-first": capitalizeFirst,
        "capitalize-all": capitalizeAll
      };
    })();
    CSL.Output.Formats = function() {
    };
    CSL.Output.Formats.prototype.html = {
      //
      // text_escape: Format-specific function for escaping text destined
      // for output.  Takes the text to be escaped as sole argument.  Function
      // will be run only once across each portion of text to be escaped, it
      // need not be idempotent.
      //
      "text_escape": function(text7) {
        if (!text7) {
          text7 = "";
        }
        return text7.replace(/&/g, "&#38;").replace(/</g, "&#60;").replace(/>/g, "&#62;").replace(/\s\s/g, "\xA0 ").replace(
          CSL.SUPERSCRIPTS_REGEXP,
          function(aChar) {
            return "<sup>" + CSL.SUPERSCRIPTS[aChar] + "</sup>";
          }
        );
      },
      "bibstart": '<div class="csl-bib-body">\n',
      "bibend": "</div>",
      "@font-style/italic": "<i>%%STRING%%</i>",
      "@font-style/oblique": "<em>%%STRING%%</em>",
      "@font-style/normal": '<span style="font-style:normal;">%%STRING%%</span>',
      "@font-variant/small-caps": '<span style="font-variant:small-caps;">%%STRING%%</span>',
      "@passthrough/true": CSL.Output.Formatters.passthrough,
      "@font-variant/normal": '<span style="font-variant:normal;">%%STRING%%</span>',
      "@font-weight/bold": "<b>%%STRING%%</b>",
      "@font-weight/normal": '<span style="font-weight:normal;">%%STRING%%</span>',
      "@font-weight/light": false,
      "@text-decoration/none": '<span style="text-decoration:none;">%%STRING%%</span>',
      "@text-decoration/underline": '<span style="text-decoration:underline;">%%STRING%%</span>',
      "@vertical-align/sup": "<sup>%%STRING%%</sup>",
      "@vertical-align/sub": "<sub>%%STRING%%</sub>",
      "@vertical-align/baseline": '<span style="baseline">%%STRING%%</span>',
      "@strip-periods/true": CSL.Output.Formatters.passthrough,
      "@strip-periods/false": CSL.Output.Formatters.passthrough,
      "@quotes/true": function(state, str2) {
        if ("undefined" === typeof str2) {
          return state.getTerm("open-quote");
        }
        return state.getTerm("open-quote") + str2 + state.getTerm("close-quote");
      },
      "@quotes/inner": function(state, str2) {
        if ("undefined" === typeof str2) {
          return "\u2019";
        }
        return state.getTerm("open-inner-quote") + str2 + state.getTerm("close-inner-quote");
      },
      "@quotes/false": false,
      //"@bibliography/body": function (state,str){
      //    return "<div class=\"csl-bib-body\">\n"+str+"</div>";
      //},
      "@cite/entry": function(state, str2) {
        return state.sys.wrapCitationEntry(str2, this.item_id, this.locator_txt, this.suffix_txt);
      },
      "@bibliography/entry": function(state, str2) {
        var insert = "";
        if (state.sys.embedBibliographyEntry) {
          insert = state.sys.embedBibliographyEntry(this.item_id) + "\n";
        }
        return '  <div class="csl-entry">' + str2 + "</div>\n" + insert;
      },
      "@display/block": function(state, str2) {
        return '\n\n    <div class="csl-block">' + str2 + "</div>\n";
      },
      "@display/left-margin": function(state, str2) {
        return '\n    <div class="csl-left-margin">' + str2 + "</div>";
      },
      "@display/right-inline": function(state, str2) {
        return '<div class="csl-right-inline">' + str2 + "</div>\n  ";
      },
      "@display/indent": function(state, str2) {
        return '<div class="csl-indent">' + str2 + "</div>\n  ";
      },
      "@showid/true": function(state, str2, cslid) {
        if (!state.tmp.just_looking && !state.tmp.suppress_decorations) {
          if (cslid) {
            return '<span class="' + state.opt.nodenames[cslid] + '" cslid="' + cslid + '">' + str2 + "</span>";
          } else if (this.params && "string" === typeof str2) {
            var prePunct = "";
            if (str2) {
              var m2 = str2.match(CSL.VARIABLE_WRAPPER_PREPUNCT_REX);
              prePunct = m2[1];
              str2 = m2[2];
            }
            var postPunct = "";
            if (str2 && CSL.SWAPPING_PUNCTUATION.indexOf(str2.slice(-1)) > -1) {
              postPunct = str2.slice(-1);
              str2 = str2.slice(0, -1);
            }
            return state.sys.variableWrapper(this.params, prePunct, str2, postPunct);
          } else {
            return str2;
          }
        } else {
          return str2;
        }
      },
      "@URL/true": function(state, str2) {
        return '<a href="' + str2 + '">' + str2 + "</a>";
      },
      "@DOI/true": function(state, str2) {
        var doiurl = str2;
        if (!str2.match(/^https?:\/\//)) {
          doiurl = "https://doi.org/" + str2;
        }
        return '<a href="' + doiurl + '">' + str2 + "</a>";
      }
    };
    CSL.Output.Formats.prototype.text = {
      //
      // text_escape: Format-specific function for escaping text destined
      // for output.  Takes the text to be escaped as sole argument.  Function
      // will be run only once across each portion of text to be escaped, it
      // need not be idempotent.
      //
      "text_escape": function(text7) {
        if (!text7) {
          text7 = "";
        }
        return text7;
      },
      "bibstart": "",
      "bibend": "",
      "@font-style/italic": false,
      "@font-style/oblique": false,
      "@font-style/normal": false,
      "@font-variant/small-caps": false,
      "@passthrough/true": CSL.Output.Formatters.passthrough,
      "@font-variant/normal": false,
      "@font-weight/bold": false,
      "@font-weight/normal": false,
      "@font-weight/light": false,
      "@text-decoration/none": false,
      "@text-decoration/underline": false,
      "@vertical-align/baseline": false,
      "@vertical-align/sup": false,
      "@vertical-align/sub": false,
      "@strip-periods/true": CSL.Output.Formatters.passthrough,
      "@strip-periods/false": CSL.Output.Formatters.passthrough,
      "@quotes/true": function(state, str2) {
        if ("undefined" === typeof str2) {
          return state.getTerm("open-quote");
        }
        return state.getTerm("open-quote") + str2 + state.getTerm("close-quote");
      },
      "@quotes/inner": function(state, str2) {
        if ("undefined" === typeof str2) {
          return "\u2019";
        }
        return state.getTerm("open-inner-quote") + str2 + state.getTerm("close-inner-quote");
      },
      "@quotes/false": false,
      //"@bibliography/body": function (state,str){
      //    return "<div class=\"csl-bib-body\">\n"+str+"</div>";
      //},
      "@cite/entry": function(state, str2) {
        return state.sys.wrapCitationEntry(str2, this.item_id, this.locator_txt, this.suffix_txt);
      },
      "@bibliography/entry": function(state, str2) {
        return str2 + "\n";
      },
      "@display/block": function(state, str2) {
        return "\n" + str2;
      },
      "@display/left-margin": function(state, str2) {
        return str2 + " ";
      },
      "@display/right-inline": function(state, str2) {
        return str2;
      },
      "@display/indent": function(state, str2) {
        return "\n    " + str2;
      },
      "@showid/true": function(state, str2) {
        return str2;
      },
      "@URL/true": function(state, str2) {
        return str2;
      },
      "@DOI/true": function(state, str2) {
        return str2;
      }
    };
    CSL.Output.Formats.prototype.rtf = {
      //
      // text_escape: Format-specific function for escaping text destined
      // for output.  Takes the text to be escaped as sole argument.  Function
      // will be run only once across each portion of text to be escaped, it
      // need not be idempotent.
      //
      "text_escape": function(text7) {
        if (!text7) {
          text7 = "";
        }
        return text7.replace(/([\\{}])/g, "\\$1").replace(
          CSL.SUPERSCRIPTS_REGEXP,
          function(aChar) {
            return "\\super " + CSL.SUPERSCRIPTS[aChar] + "\\nosupersub{}";
          }
        ).replace(
          /[\u007F-\uFFFF]/g,
          function(aChar) {
            return "\\uc0\\u" + aChar.charCodeAt(0).toString() + "{}";
          }
        ).split("	").join("\\tab{}");
      },
      "@passthrough/true": CSL.Output.Formatters.passthrough,
      "@font-style/italic": "{\\i{}%%STRING%%}",
      "@font-style/normal": "{\\i0{}%%STRING%%}",
      "@font-style/oblique": "{\\i{}%%STRING%%}",
      "@font-variant/small-caps": "{\\scaps %%STRING%%}",
      "@font-variant/normal": "{\\scaps0{}%%STRING%%}",
      "@font-weight/bold": "{\\b{}%%STRING%%}",
      "@font-weight/normal": "{\\b0{}%%STRING%%}",
      "@font-weight/light": false,
      "@text-decoration/none": false,
      "@text-decoration/underline": "{\\ul{}%%STRING%%}",
      "@vertical-align/baseline": false,
      "@vertical-align/sup": "\\super %%STRING%%\\nosupersub{}",
      "@vertical-align/sub": "\\sub %%STRING%%\\nosupersub{}",
      "@strip-periods/true": CSL.Output.Formatters.passthrough,
      "@strip-periods/false": CSL.Output.Formatters.passthrough,
      "@quotes/true": function(state, str2) {
        if ("undefined" === typeof str2) {
          return CSL.Output.Formats.rtf.text_escape(state.getTerm("open-quote"));
        }
        return CSL.Output.Formats.rtf.text_escape(state.getTerm("open-quote")) + str2 + CSL.Output.Formats.rtf.text_escape(state.getTerm("close-quote"));
      },
      "@quotes/inner": function(state, str2) {
        if ("undefined" === typeof str2) {
          return CSL.Output.Formats.rtf.text_escape("\u2019");
        }
        return CSL.Output.Formats.rtf.text_escape(state.getTerm("open-inner-quote")) + str2 + CSL.Output.Formats.rtf.text_escape(state.getTerm("close-inner-quote"));
      },
      "@quotes/false": false,
      "bibstart": "{\\rtf ",
      "bibend": "}",
      "@display/block": "\\line{}%%STRING%%\\line\r\n",
      "@cite/entry": function(state, str2) {
        return state.sys.wrapCitationEntry(str2, this.item_id, this.locator_txt, this.suffix_txt);
      },
      "@bibliography/entry": function(state, str2) {
        return str2;
      },
      "@display/left-margin": function(state, str2) {
        return str2 + "\\tab ";
      },
      "@display/right-inline": function(state, str2) {
        return str2 + "\r\n";
      },
      "@display/indent": function(state, str2) {
        return "\n\\tab " + str2 + "\\line\r\n";
      },
      "@showid/true": function(state, str2) {
        if (!state.tmp.just_looking && !state.tmp.suppress_decorations) {
          var prePunct = "";
          if (str2) {
            var m2 = str2.match(CSL.VARIABLE_WRAPPER_PREPUNCT_REX);
            prePunct = m2[1];
            str2 = m2[2];
          }
          var postPunct = "";
          if (str2 && CSL.SWAPPING_PUNCTUATION.indexOf(str2.slice(-1)) > -1) {
            postPunct = str2.slice(-1);
            str2 = str2.slice(0, -1);
          }
          return state.sys.variableWrapper(this.params, prePunct, str2, postPunct);
        } else {
          return str2;
        }
      },
      "@URL/true": function(state, str2) {
        return str2;
      },
      "@DOI/true": function(state, str2) {
        return str2;
      }
    };
    CSL.Output.Formats.prototype.asciidoc = {
      "text_escape": function(text7) {
        if (!text7) {
          text7 = "";
        }
        return text7.replace("*", "pass:[*]", "g").replace("_", "pass:[_]", "g").replace("#", "pass:[#]", "g").replace("^", "pass:[^]", "g").replace("~", "pass:[~]", "g").replace("[[", "pass:[[[]", "g").replace("  ", "&#160; ", "g").replace(CSL.SUPERSCRIPTS_REGEXP, function(aChar) {
          return "^" + CSL.SUPERSCRIPTS[aChar] + "^";
        });
      },
      "bibstart": "",
      "bibend": "",
      "@passthrough/true": CSL.Output.Formatters.passthrough,
      "@font-style/italic": "__%%STRING%%__",
      "@font-style/oblique": "__%%STRING%%__",
      "@font-style/normal": false,
      "@font-variant/small-caps": "[small-caps]#%%STRING%%#",
      "@font-variant/normal": false,
      "@font-weight/bold": "**%%STRING%%**",
      "@font-weight/normal": false,
      "@font-weight/light": false,
      "@text-decoration/none": false,
      "@text-decoration/underline": "[underline]##%%STRING%%##",
      "@vertical-align/sup": "^^%%STRING%%^^",
      "@vertical-align/sub": "~~%%STRING%%~~",
      "@vertical-align/baseline": false,
      "@strip-periods/true": CSL.Output.Formatters.passthrough,
      "@strip-periods/false": CSL.Output.Formatters.passthrough,
      "@quotes/true": function(state, str2) {
        if ("undefined" === typeof str2) {
          return "``";
        }
        return "``" + str2 + "''";
      },
      "@quotes/inner": function(state, str2) {
        if ("undefined" === typeof str2) {
          return "`";
        }
        return "`" + str2 + "'";
      },
      "@quotes/false": false,
      "@cite/entry": function(state, str2) {
        return state.sys.wrapCitationEntry(str2, this.item_id, this.locator_txt, this.suffix_txt);
      },
      "@bibliography/entry": function(state, str2) {
        return str2 + "\n";
      },
      "@display/block": function(state, str2) {
        return str2;
      },
      "@display/left-margin": function(state, str2) {
        return str2;
      },
      "@display/right-inline": function(state, str2) {
        return " " + str2;
      },
      "@display/indent": function(state, str2) {
        return " " + str2;
      },
      "@showid/true": function(state, str2) {
        if (!state.tmp.just_looking && !state.tmp.suppress_decorations && this.params && "string" === typeof str2) {
          var prePunct = "";
          if (str2) {
            var m2 = str2.match(CSL.VARIABLE_WRAPPER_PREPUNCT_REX);
            prePunct = m2[1];
            str2 = m2[2];
          }
          var postPunct = "";
          if (str2 && CSL.SWAPPING_PUNCTUATION.indexOf(str2.slice(-1)) > -1) {
            postPunct = str2.slice(-1);
            str2 = str2.slice(0, -1);
          }
          return state.sys.variableWrapper(this.params, prePunct, str2, postPunct);
        } else {
          return str2;
        }
      },
      "@URL/true": function(state, str2) {
        return str2;
      },
      "@DOI/true": function(state, str2) {
        var doiurl = str2;
        if (!str2.match(/^https?:\/\//)) {
          doiurl = "https://doi.org/" + str2;
        }
        return doiurl + "[" + str2 + "]";
      }
    };
    CSL.Output.Formats.prototype.fo = {
      "text_escape": function(text7) {
        if (!text7) {
          text7 = "";
        }
        return text7.replace(/&/g, "&#38;").replace(/</g, "&#60;").replace(/>/g, "&#62;").replace("  ", "&#160; ", "g").replace(CSL.SUPERSCRIPTS_REGEXP, function(aChar) {
          return '<fo:inline vertical-align="super">' + CSL.SUPERSCRIPTS[aChar] + "</fo:inline>";
        });
      },
      "bibstart": "",
      "bibend": "",
      "@passthrough/true": CSL.Output.Formatters.passthrough,
      "@font-style/italic": '<fo:inline font-style="italic">%%STRING%%</fo:inline>',
      "@font-style/oblique": '<fo:inline font-style="oblique">%%STRING%%</fo:inline>',
      "@font-style/normal": '<fo:inline font-style="normal">%%STRING%%</fo:inline>',
      "@font-variant/small-caps": '<fo:inline font-variant="small-caps">%%STRING%%</fo:inline>',
      "@font-variant/normal": '<fo:inline font-variant="normal">%%STRING%%</fo:inline>',
      "@font-weight/bold": '<fo:inline font-weight="bold">%%STRING%%</fo:inline>',
      "@font-weight/normal": '<fo:inline font-weight="normal">%%STRING%%</fo:inline>',
      "@font-weight/light": '<fo:inline font-weight="lighter">%%STRING%%</fo:inline>',
      "@text-decoration/none": '<fo:inline text-decoration="none">%%STRING%%</fo:inline>',
      "@text-decoration/underline": '<fo:inline text-decoration="underline">%%STRING%%</fo:inline>',
      "@vertical-align/sup": '<fo:inline vertical-align="super">%%STRING%%</fo:inline>',
      "@vertical-align/sub": '<fo:inline vertical-align="sub">%%STRING%%</fo:inline>',
      "@vertical-align/baseline": '<fo:inline vertical-align="baseline">%%STRING%%</fo:inline>',
      "@strip-periods/true": CSL.Output.Formatters.passthrough,
      "@strip-periods/false": CSL.Output.Formatters.passthrough,
      "@quotes/true": function(state, str2) {
        if ("undefined" === typeof str2) {
          return state.getTerm("open-quote");
        }
        return state.getTerm("open-quote") + str2 + state.getTerm("close-quote");
      },
      "@quotes/inner": function(state, str2) {
        if ("undefined" === typeof str2) {
          return "\u2019";
        }
        return state.getTerm("open-inner-quote") + str2 + state.getTerm("close-inner-quote");
      },
      "@quotes/false": false,
      "@cite/entry": function(state, str2) {
        return state.sys.wrapCitationEntry(str2, this.item_id, this.locator_txt, this.suffix_txt);
      },
      "@bibliography/entry": function(state, str2) {
        var indent2 = "";
        if (state.bibliography && state.bibliography.opt && state.bibliography.opt.hangingindent) {
          var hi = state.bibliography.opt.hangingindent;
          indent2 = ' start-indent="' + hi + 'em" text-indent="-' + hi + 'em"';
        }
        var insert = "";
        if (state.sys.embedBibliographyEntry) {
          insert = state.sys.embedBibliographyEntry(this.item_id) + "\n";
        }
        return '<fo:block id="' + this.system_id + '"' + indent2 + ">" + str2 + "</fo:block>\n" + insert;
      },
      "@display/block": function(state, str2) {
        return "\n  <fo:block>" + str2 + "</fo:block>\n";
      },
      "@display/left-margin": function(state, str2) {
        return '\n  <fo:table table-layout="fixed" width="100%">\n    <fo:table-column column-number="1" column-width="$$$__COLUMN_WIDTH_1__$$$"/>\n    <fo:table-column column-number="2" column-width="proportional-column-width(1)"/>\n    <fo:table-body>\n      <fo:table-row>\n        <fo:table-cell>\n          <fo:block>' + str2 + "</fo:block>\n        </fo:table-cell>\n        ";
      },
      "@display/right-inline": function(state, str2) {
        return "<fo:table-cell>\n          <fo:block>" + str2 + "</fo:block>\n        </fo:table-cell>\n      </fo:table-row>\n    </fo:table-body>\n  </fo:table>\n";
      },
      "@display/indent": function(state, str2) {
        return '<fo:block margin-left="2em">' + str2 + "</fo:block>\n";
      },
      "@showid/true": function(state, str2) {
        if (!state.tmp.just_looking && !state.tmp.suppress_decorations && this.params && "string" === typeof str2) {
          var prePunct = "";
          if (str2) {
            var m2 = str2.match(CSL.VARIABLE_WRAPPER_PREPUNCT_REX);
            prePunct = m2[1];
            str2 = m2[2];
          }
          var postPunct = "";
          if (str2 && CSL.SWAPPING_PUNCTUATION.indexOf(str2.slice(-1)) > -1) {
            postPunct = str2.slice(-1);
            str2 = str2.slice(0, -1);
          }
          return state.sys.variableWrapper(this.params, prePunct, str2, postPunct);
        } else {
          return str2;
        }
      },
      "@URL/true": function(state, str2) {
        return `<fo:basic-link external-destination="url('` + str2 + `')">` + str2 + "</fo:basic-link>";
      },
      "@DOI/true": function(state, str2) {
        var doiurl = str2;
        if (!str2.match(/^https?:\/\//)) {
          doiurl = "https://doi.org/" + str2;
        }
        return `<fo:basic-link external-destination="url('` + doiurl + `')">` + str2 + "</fo:basic-link>";
      }
    };
    CSL.Output.Formats.prototype.latex = {
      "text_escape": function(text7) {
        if (!text7) {
          text7 = "";
        }
        return text7;
      },
      "bibstart": "\\begin{thebibliography}{4}",
      "bibend": "\\end{thebibliography}",
      "@font-style/italic": "{\\em %%STRING%%}",
      "@font-style/oblique": false,
      "@font-style/normal": false,
      "@font-variant/small-caps": false,
      "@passthrough/true": CSL.Output.Formatters.passthrough,
      "@font-variant/normal": false,
      "@font-weight/bold": "{\\bf %%STRING%%}",
      "@font-weight/normal": false,
      "@font-weight/light": false,
      "@text-decoration/none": false,
      "@text-decoration/underline": false,
      "@vertical-align/baseline": false,
      "@vertical-align/sup": false,
      "@vertical-align/sub": false,
      "@strip-periods/true": CSL.Output.Formatters.passthrough,
      "@strip-periods/false": CSL.Output.Formatters.passthrough,
      "@quotes/true": function(state, str2) {
        if ("undefined" === typeof str2) {
          return state.getTerm("open-quote");
        }
        return state.getTerm("open-quote") + str2 + state.getTerm("close-quote");
      },
      "@quotes/inner": function(state, str2) {
        if ("undefined" === typeof str2) {
          return "\u2019";
        }
        return state.getTerm("open-inner-quote") + str2 + state.getTerm("close-inner-quote");
      },
      "@quotes/false": false,
      //"@bibliography/body": function (state,str){
      //    return "<div class=\"csl-bib-body\">\n"+str+"</div>";
      //},
      "@cite/entry": function(state, str2) {
        return state.sys.wrapCitationEntry(str2, this.item_id, this.locator_txt, this.suffix_txt);
      },
      "@bibliography/entry": function(state, str2) {
        return "\\bibitem{" + state.sys.embedBibliographyEntry(this.item_id) + "}\n";
      },
      "@display/block": function(state, str2) {
        return "\n" + str2;
      },
      "@display/left-margin": function(state, str2) {
        return str2;
      },
      "@display/right-inline": function(state, str2) {
        return str2;
      },
      "@display/indent": function(state, str2) {
        return "\n    " + str2;
      },
      "@showid/true": function(state, str2, cslid) {
        return str2;
      },
      "@URL/true": function(state, str2) {
        return str2;
      },
      "@DOI/true": function(state, str2) {
        return str2;
      }
    };
    CSL.Output.Formats = new CSL.Output.Formats();
    CSL.Registry = function(state) {
      this.debug = false;
      this.state = state;
      this.registry = {};
      this.reflist = [];
      this.refhash = {};
      this.namereg = new CSL.Registry.NameReg(state);
      this.citationreg = new CSL.Registry.CitationReg(state);
      this.authorstrings = {};
      this.masterMap = {};
      this.mylist = [];
      this.myhash = {};
      this.deletes = [];
      this.inserts = [];
      this.uncited = {};
      this.refreshes = {};
      this.akeys = {};
      this.oldseq = {};
      this.return_data = {};
      this.ambigcites = {};
      this.ambigresets = {};
      this.sorter = new CSL.Registry.Comparifier(state, "bibliography_sort");
      this.getSortedIds = function() {
        var ret = [];
        for (var i2 = 0, ilen = this.reflist.length; i2 < ilen; i2 += 1) {
          ret.push("" + this.reflist[i2].id);
        }
        return ret;
      };
      this.getSortedRegistryItems = function() {
        var ret = [];
        for (var i2 = 0, ilen = this.reflist.length; i2 < ilen; i2 += 1) {
          ret.push(this.reflist[i2]);
        }
        return ret;
      };
    };
    CSL.Registry.prototype.init = function(itemIDs, uncited_flag) {
      var i2, ilen;
      this.oldseq = {};
      if (uncited_flag) {
        this.uncited = {};
        for (var i2 = 0, ilen = itemIDs.length; i2 < ilen; i2 += 1) {
          if (!this.myhash[itemIDs[i2]]) {
            this.mylist.push("" + itemIDs[i2]);
          }
          this.uncited[itemIDs[i2]] = true;
          this.myhash[itemIDs[i2]] = true;
        }
      } else {
        for (var key2 in this.uncited) {
          itemIDs.push(key2);
        }
        var myhash = {};
        for (i2 = itemIDs.length - 1; i2 > -1; i2 += -1) {
          if (myhash[itemIDs[i2]]) {
            itemIDs = itemIDs.slice(0, i2).concat(itemIDs.slice(i2 + 1));
          } else {
            myhash[itemIDs[i2]] = true;
          }
        }
        this.mylist = itemIDs;
        this.myhash = myhash;
      }
      this.refreshes = {};
      this.touched = {};
      this.ambigsTouched = {};
      this.ambigresets = {};
    };
    CSL.Registry.prototype.dopurge = function(myhash) {
      for (var i2 = this.mylist.length - 1; i2 > -1; i2 += -1) {
        if (this.citationreg.citationsByItemId) {
          if ((!this.citationreg.citationsByItemId || !this.citationreg.citationsByItemId[this.mylist[i2]]) && !myhash[this.mylist[i2]]) {
            delete this.myhash[this.mylist[i2]];
            delete this.uncited[this.mylist[i2]];
            this.mylist = this.mylist.slice(0, i2).concat(this.mylist.slice(i2 + 1));
          }
        }
      }
      this.dodeletes(this.myhash);
    };
    CSL.Registry.prototype.dodeletes = function(myhash) {
      var otheritems, key2, ambig, pos, len, items, kkey, mypos, id;
      if ("string" === typeof myhash) {
        var key2 = myhash;
        myhash = {};
        myhash[key2] = true;
      }
      for (var key2 in this.registry) {
        if (!myhash[key2]) {
          if (this.uncited[key2]) {
            continue;
          }
          otheritems = this.namereg.delitems(key2);
          for (kkey in otheritems) {
            this.refreshes[kkey] = true;
          }
          ambig = this.registry[key2].ambig;
          mypos = this.ambigcites[ambig].indexOf(key2);
          if (mypos > -1) {
            items = this.ambigcites[ambig].slice();
            this.ambigcites[ambig] = items.slice(0, mypos).concat(items.slice(mypos + 1, items.length));
            this.ambigresets[ambig] = this.ambigcites[ambig].length;
          }
          len = this.ambigcites[ambig].length;
          for (pos = 0; pos < len; pos += 1) {
            id = "" + this.ambigcites[ambig][pos];
            this.refreshes[id] = true;
          }
          if (this.registry[key2].siblings) {
            if (this.registry[key2].siblings.length == 1) {
              var loneSiblingID = this.registry[key2].siblings[0];
              if (this.registry[loneSiblingID].siblings) {
                this.registry[loneSiblingID].siblings.pop();
                this.registry[loneSiblingID].master = true;
              }
            } else if (this.registry[key2].siblings.length > 1) {
              var removeIDs = [key2];
              if (this.registry[key2].master) {
                var newmasterID = this.registry[key2].siblings[0];
                var newmaster = this.registry[newmasterID];
                newmaster.master = true;
                removeIDs.push(newmasterID);
              }
              var buffer2 = [];
              for (var k = this.registry[key2].siblings.length - 1; k > -1; k += -1) {
                var siblingID = this.registry[key2].siblings.pop();
                if (removeIDs.indexOf(siblingID) === -1) {
                  buffer2.push(siblingID);
                }
              }
              for (var k = buffer2.length - 1; k > -1; k += -1) {
                this.registry[key2].siblings.push(buffer2[k]);
              }
            }
          }
          for (var i2 = this.reflist.length - 1; i2 > -1; i2--) {
            if (this.reflist[i2].id === key2) {
              this.reflist = this.reflist.slice(0, i2).concat(this.reflist.slice(i2 + 1));
            }
          }
          delete this.registry[key2];
          delete this.refhash[key2];
          this.return_data.bibchange = true;
        }
      }
    };
    CSL.Registry.prototype.doinserts = function(mylist) {
      var item, Item, akey, newitem, abase, i2, ilen;
      if ("string" === typeof mylist) {
        mylist = [mylist];
      }
      for (var i2 = 0, ilen = mylist.length; i2 < ilen; i2 += 1) {
        item = mylist[i2];
        if (!this.registry[item]) {
          Item = this.state.retrieveItem(item);
          akey = CSL.getAmbiguousCite.call(this.state, Item);
          this.ambigsTouched[akey] = true;
          if (!Item.legislation_id) {
            this.akeys[akey] = true;
          }
          newitem = {
            "id": "" + item,
            "seq": 0,
            "offset": 0,
            "sortkeys": false,
            "ambig": false,
            "rendered": false,
            "disambig": false,
            "ref": Item,
            "newItem": true
          };
          this.registry[item] = newitem;
          if (this.citationreg.citationsByItemId && this.citationreg.citationsByItemId[item]) {
            this.registry[item]["first-reference-note-number"] = this.citationreg.citationsByItemId[item][0].properties.noteIndex;
          }
          abase = CSL.getAmbigConfig.call(this.state);
          this.registerAmbigToken(akey, item, abase);
          this.touched[item] = true;
          this.return_data.bibchange = true;
        }
      }
    };
    CSL.Registry.prototype.rebuildlist = function(nosort) {
      var len, pos, item, Item;
      if (!nosort) {
        this.reflist_inserts = [];
        len = this.mylist.length;
        for (pos = 0; pos < len; pos += 1) {
          item = this.mylist[pos];
          Item = this.registry[item];
          if (Item.newItem) {
            this.reflist_inserts.push(Item);
          }
          this.oldseq[item] = this.registry[item].seq;
          this.registry[item].seq = pos + 1;
        }
      } else {
        this.reflist = [];
        len = this.mylist.length;
        for (pos = 0; pos < len; pos += 1) {
          item = this.mylist[pos];
          Item = this.registry[item];
          this.reflist.push(Item);
          this.oldseq[item] = this.registry[item].seq;
          this.registry[item].seq = pos + 1;
        }
      }
    };
    CSL.Registry.prototype.dorefreshes = function() {
      var key2, regtoken, Item, akey, abase;
      for (var key2 in this.refreshes) {
        regtoken = this.registry[key2];
        if (!regtoken) {
          continue;
        }
        regtoken.sortkeys = void 0;
        Item = this.state.refetchItem(key2);
        var akey = regtoken.ambig;
        if ("undefined" === typeof akey) {
          this.state.tmp.disambig_settings = false;
          akey = CSL.getAmbiguousCite.call(this.state, Item);
          abase = CSL.getAmbigConfig.call(this.state);
          this.registerAmbigToken(akey, key2, abase);
        }
        for (var akkey in this.ambigresets) {
          if (this.ambigresets[akkey] === 1) {
            var loneKey = this.ambigcites[akey][0];
            var Item = this.state.refetchItem(loneKey);
            this.registry[loneKey].disambig = new CSL.AmbigConfig();
            this.state.tmp.disambig_settings = false;
            var akey = CSL.getAmbiguousCite.call(this.state, Item);
            var abase = CSL.getAmbigConfig.call(this.state);
            this.registerAmbigToken(akey, loneKey, abase);
          }
        }
        this.state.tmp.taintedItemIDs[key2] = true;
        this.ambigsTouched[akey] = true;
        if (!Item.legislation_id) {
          this.akeys[akey] = true;
        }
        this.touched[key2] = true;
      }
    };
    CSL.Registry.prototype.setdisambigs = function() {
      for (var akey in this.ambigsTouched) {
        this.state.disambiguate.run(akey);
      }
      this.ambigsTouched = {};
      this.akeys = {};
    };
    CSL.Registry.prototype.renumber = function() {
      var len, pos, item;
      if (this.state.bibliography_sort.opt.citation_number_sort_direction === CSL.DESCENDING) {
        this.state.bibliography_sort.tmp.citation_number_map = {};
      }
      len = this.reflist.length;
      for (pos = 0; pos < len; pos += 1) {
        item = this.reflist[pos];
        item.seq = pos + 1;
        if (this.state.bibliography_sort.opt.citation_number_sort_direction === CSL.DESCENDING) {
          this.state.bibliography_sort.tmp.citation_number_map[item.seq] = this.reflist.length - item.seq + 1;
        }
        if (this.state.opt.update_mode === CSL.NUMERIC && item.seq != this.oldseq[item.id]) {
          this.state.tmp.taintedItemIDs[item.id] = true;
        }
        if (item.seq != this.oldseq[item.id]) {
          this.return_data.bibchange = true;
        }
      }
    };
    CSL.Registry.prototype.setsortkeys = function() {
      var key2;
      for (var i2 = 0, ilen = this.mylist.length; i2 < ilen; i2 += 1) {
        var key2 = this.mylist[i2];
        if (this.touched[key2] || this.state.tmp.taintedItemIDs[key2] || !this.registry[key2].sortkeys) {
          this.registry[key2].sortkeys = CSL.getSortKeys.call(this.state, this.state.retrieveItem(key2), "bibliography_sort");
        }
      }
    };
    CSL.Registry.prototype._insertItem = function(element5, array) {
      array.splice(this._locationOf(element5, array) + 1, 0, element5);
      return array;
    };
    CSL.Registry.prototype._locationOf = function(element5, array, start, end) {
      if (array.length === 0) {
        return -1;
      }
      start = start || 0;
      end = end || array.length;
      var pivot = start + end >> 1;
      var c = this.sorter.compareKeys(element5, array[pivot]);
      if (end - start <= 1) {
        return c == -1 ? pivot - 1 : pivot;
      }
      switch (c) {
        case -1:
          return this._locationOf(element5, array, start, pivot);
        case 0:
          return pivot;
        case 1:
          return this._locationOf(element5, array, pivot, end);
      }
    };
    CSL.Registry.prototype.sorttokens = function(nosort) {
      var len, item, Item, pos;
      if (!nosort) {
        this.reflist_inserts = [];
        len = this.mylist.length;
        for (pos = 0; pos < len; pos += 1) {
          item = this.mylist[pos];
          Item = this.registry[item];
          if (Item.newItem) {
            this.reflist_inserts.push(Item);
          }
        }
        for (var key2 in this.state.tmp.taintedItemIDs) {
          if (this.registry[key2] && !this.registry[key2].newItem) {
            for (var i2 = this.reflist.length - 1; i2 > -1; i2--) {
              if (this.reflist[i2].id === key2) {
                this.reflist_inserts.push(this.reflist[i2]);
                this.reflist = this.reflist.slice(0, i2).concat(this.reflist.slice(i2 + 1));
              }
            }
          }
        }
        for (var i2 = 0, ilen = this.reflist_inserts.length; i2 < ilen; i2++) {
          var Item = this.reflist_inserts[i2];
          delete Item.newItem;
          this.reflist = this._insertItem(Item, this.reflist);
        }
        for (pos = 0; pos < len; pos += 1) {
          item = this.mylist[pos];
          Item = this.registry[item];
          this.registry[item].seq = pos + 1;
        }
      }
    };
    CSL.Registry.Comparifier = function(state, keyset) {
      var sort_directions, len, pos, compareKeys;
      var sortCompare = CSL.getSortCompare.call(state, state.opt["default-locale-sort"]);
      sort_directions = state[keyset].opt.sort_directions;
      this.compareKeys = function(a2, b) {
        len = a2.sortkeys ? a2.sortkeys.length : 0;
        for (pos = 0; pos < len; pos += 1) {
          var cmp = 0;
          if (a2.sortkeys[pos] === b.sortkeys[pos]) {
            cmp = 0;
          } else if ("undefined" === typeof a2.sortkeys[pos]) {
            cmp = sort_directions[pos][1];
          } else if ("undefined" === typeof b.sortkeys[pos]) {
            cmp = sort_directions[pos][0];
          } else {
            cmp = sortCompare(a2.sortkeys[pos], b.sortkeys[pos]);
          }
          if (0 < cmp) {
            return sort_directions[pos][1];
          } else if (0 > cmp) {
            return sort_directions[pos][0];
          }
        }
        if (a2.seq > b.seq) {
          return 1;
        } else if (a2.seq < b.seq) {
          return -1;
        }
        return 0;
      };
      compareKeys = this.compareKeys;
      this.compareCompositeKeys = function(a2, b) {
        return compareKeys(a2[1], b[1]);
      };
    };
    CSL.Registry.prototype.compareRegistryTokens = function(a2, b) {
      if (a2.seq > b.seq) {
        return 1;
      } else if (a2.seq < b.seq) {
        return -1;
      }
      return 0;
    };
    CSL.Registry.prototype.registerAmbigToken = function(akey, id, ambig_config) {
      if (!this.registry[id]) {
        CSL.debug("Warning: unregistered item: itemID=(" + id + "), akey=(" + akey + ")");
      }
      if (this.registry[id] && this.registry[id].disambig && this.registry[id].disambig.names) {
        for (var i2 = 0, ilen = ambig_config.names.length; i2 < ilen; i2 += 1) {
          var new_names_params = ambig_config.names[i2];
          var old_names_params = this.registry[id].disambig.names[i2];
          if (new_names_params !== old_names_params) {
            this.state.tmp.taintedItemIDs[id] = true;
          } else if (ambig_config.givens[i2]) {
            for (var j = 0, jlen = ambig_config.givens[i2].length; j < jlen; j += 1) {
              var new_gnames_params = ambig_config.givens[i2][j];
              var old_gnames_params = this.registry[id].disambig.givens[i2][j];
              if (new_gnames_params !== old_gnames_params) {
                this.state.tmp.taintedItemIDs[id] = true;
              }
            }
          }
        }
      }
      if (!this.ambigcites[akey]) {
        this.ambigcites[akey] = [];
      }
      if (this.ambigcites[akey].indexOf("" + id) === -1) {
        this.ambigcites[akey].push("" + id);
      }
      this.registry[id].ambig = akey;
      this.registry[id].disambig = CSL.cloneAmbigConfig(ambig_config);
    };
    CSL.getSortKeys = function(Item, key_type) {
      var area, root6, extension, strip_prepositions, len, pos;
      if (false) {
        CSL.debug("KEY TYPE: " + key_type);
      }
      area = this.tmp.area;
      root6 = this.tmp.root;
      extension = this.tmp.extension;
      strip_prepositions = CSL.Util.Sort.strip_prepositions;
      this.tmp.area = key_type;
      this.tmp.root = key_type.indexOf("_") > -1 ? key_type.slice(0, -5) : key_type;
      this.tmp.extension = "_sort";
      this.tmp.disambig_override = true;
      this.tmp.disambig_request = false;
      this.tmp.suppress_decorations = true;
      CSL.getCite.call(this, Item);
      this.tmp.suppress_decorations = false;
      this.tmp.disambig_override = false;
      len = this[key_type].keys.length;
      for (pos = 0; pos < len; pos += 1) {
        this[key_type].keys[pos] = strip_prepositions(this[key_type].keys[pos]);
      }
      if (false) {
        CSL.debug("sort keys (" + key_type + "): " + this[key_type].keys);
      }
      this.tmp.area = area;
      this.tmp.root = root6;
      this.tmp.extension = extension;
      return this[key_type].keys;
    };
    CSL.Registry.NameReg = function(state) {
      var pkey, ikey, skey, dagopt, gdropt, items, strip_periods, set_keys, evalname, delitems, addname, myitems;
      this.state = state;
      this.namereg = {};
      this.nameind = {};
      this.nameindpkeys = {};
      this.itemkeyreg = {};
      strip_periods = function(str2) {
        if (!str2) {
          str2 = "";
        }
        return str2.replace(/\./g, " ").replace(/\s+/g, " ").replace(/\s+$/, "");
      };
      set_keys = function(state2, itemid, nameobj) {
        pkey = strip_periods(nameobj.family);
        if (state2.opt["demote-non-dropping-particle"] === "never" && nameobj["non-dropping-particle"] && nameobj["family"]) {
          pkey = `${pkey} ${nameobj["non-dropping-particle"]}`;
        }
        skey = strip_periods(nameobj.given);
        var m2 = skey.match(/[,\!]* ([^,]+)$/);
        if (m2 && m2[1] === m2[1].toLowerCase()) {
          skey = skey.replace(/[,\!]* [^,]+$/, "");
        }
        ikey = CSL.Util.Names.initializeWith(state2, skey, "%s");
        if (state2.citation.opt["givenname-disambiguation-rule"] === "by-cite") {
          pkey = "" + itemid + pkey;
        }
      };
      evalname = function(item_id, nameobj, namenum, request_base, form, initials) {
        var param;
        if (state.tmp.area.slice(0, 12) === "bibliography" && !form) {
          if ("string" === typeof initials) {
            return 1;
          } else {
            return 2;
          }
        }
        var res = state.nameOutput.getName(nameobj, "locale-translit", true);
        nameobj = res.name;
        set_keys(this.state, "" + item_id, nameobj);
        param = 2;
        dagopt = state.opt["disambiguate-add-givenname"];
        gdropt = state.citation.opt["givenname-disambiguation-rule"];
        var gdropt_orig = gdropt;
        if (gdropt === "by-cite") {
          gdropt = "all-names";
        }
        if ("short" === form) {
          param = 0;
        } else if ("string" === typeof initials) {
          param = 1;
        }
        if ("undefined" === typeof this.namereg[pkey] || "undefined" === typeof this.namereg[pkey].ikey[ikey]) {
          return param;
        }
        if (gdropt_orig === "by-cite" && param <= request_base) {
          return request_base;
        }
        if (!dagopt) {
          return param;
        }
        if ("string" === typeof gdropt && gdropt.slice(0, 12) === "primary-name" && namenum > 0) {
          return param;
        }
        if (!gdropt || gdropt === "all-names" || gdropt === "primary-name") {
          if (this.namereg[pkey].count > 1) {
            param = 1;
          }
          if (this.namereg[pkey].ikey && this.namereg[pkey].ikey[ikey].count > 1 || this.namereg[pkey].count > 1 && "string" !== typeof initials) {
            param = 2;
          }
        } else if (gdropt === "all-names-with-initials" || gdropt === "primary-name-with-initials") {
          if (this.namereg[pkey].count > 1) {
            param = 1;
          } else {
            param = 0;
          }
        }
        if (!state.registry.registry[item_id]) {
          if (form == "short") {
            return 0;
          } else if ("string" == typeof initials) {
            return 1;
          }
        } else {
          return param;
        }
      };
      delitems = function(ids) {
        var pos, len, posB, id, fullkey;
        if ("string" === typeof ids || "number" === typeof ids) {
          ids = ["" + ids];
        }
        var ret = {};
        len = ids.length;
        for (pos = 0; pos < len; pos += 1) {
          id = "" + ids[pos];
          if (!this.nameind[id]) {
            continue;
          }
          for (fullkey in this.nameind[id]) {
            if (this.nameind[id].hasOwnProperty(fullkey)) {
              var key2 = fullkey.split("::");
              pkey = key2[0];
              ikey = key2[1];
              skey = key2[2];
              if ("undefined" === typeof this.namereg[pkey]) {
                continue;
              }
              items = this.namereg[pkey].items;
              if (skey && this.namereg[pkey].ikey[ikey] && this.namereg[pkey].ikey[ikey].skey[skey]) {
                myitems = this.namereg[pkey].ikey[ikey].skey[skey].items;
                posB = myitems.indexOf("" + id);
                if (posB > -1) {
                  this.namereg[pkey].ikey[ikey].skey[skey].items = myitems.slice(0, posB).concat(myitems.slice([posB + 1]));
                }
                if (this.namereg[pkey].ikey[ikey].skey[skey].items.length === 0) {
                  delete this.namereg[pkey].ikey[ikey].skey[skey];
                  this.namereg[pkey].ikey[ikey].count += -1;
                  if (this.namereg[pkey].ikey[ikey].count < 2) {
                    for (var i2 = 0, ilen = this.namereg[pkey].ikey[ikey].items.length; i2 < ilen; i2 += 1) {
                      state.tmp.taintedItemIDs[this.namereg[pkey].ikey[ikey].items[i2]] = true;
                    }
                  }
                }
              }
              if (ikey && this.namereg[pkey].ikey[ikey]) {
                posB = this.namereg[pkey].ikey[ikey].items.indexOf("" + id);
                if (posB > -1) {
                  items = this.namereg[pkey].ikey[ikey].items.slice();
                  this.namereg[pkey].ikey[ikey].items = items.slice(0, posB).concat(items.slice([posB + 1]));
                }
                if (this.namereg[pkey].ikey[ikey].items.length === 0) {
                  delete this.namereg[pkey].ikey[ikey];
                  this.namereg[pkey].count += -1;
                  if (this.namereg[pkey].count < 2) {
                    for (var i2 = 0, ilen = this.namereg[pkey].items.length; i2 < ilen; i2 += 1) {
                      state.tmp.taintedItemIDs[this.namereg[pkey].items[i2]] = true;
                    }
                  }
                }
              }
              if (pkey) {
                posB = this.namereg[pkey].items.indexOf("" + id);
                if (posB > -1) {
                  items = this.namereg[pkey].items.slice();
                  this.namereg[pkey].items = items.slice(0, posB).concat(items.slice([posB + 1], items.length));
                }
                if (this.namereg[pkey].items.length < 2) {
                  delete this.namereg[pkey];
                }
              }
              delete this.nameind[id][fullkey];
            }
          }
          delete this.nameind[id];
          delete this.nameindpkeys[id];
        }
        return ret;
      };
      addname = function(item_id, nameobj, pos) {
        var i2, ilen;
        var res = state.nameOutput.getName(nameobj, "locale-translit", true);
        nameobj = res.name;
        if (state.citation.opt["givenname-disambiguation-rule"] && state.citation.opt["givenname-disambiguation-rule"].slice(0, 8) === "primary-" && pos !== 0) {
          return;
        }
        set_keys(this.state, "" + item_id, nameobj);
        if (pkey) {
          if ("undefined" === typeof this.namereg[pkey]) {
            this.namereg[pkey] = {};
            this.namereg[pkey].count = 0;
            this.namereg[pkey].ikey = {};
            this.namereg[pkey].items = [item_id];
          } else if (this.namereg[pkey].items.indexOf(item_id) === -1) {
            this.namereg[pkey].items.push(item_id);
          }
        }
        if (pkey && ikey) {
          if ("undefined" === typeof this.namereg[pkey].ikey[ikey]) {
            this.namereg[pkey].ikey[ikey] = {};
            this.namereg[pkey].ikey[ikey].count = 0;
            this.namereg[pkey].ikey[ikey].skey = {};
            this.namereg[pkey].ikey[ikey].items = [item_id];
            this.namereg[pkey].count += 1;
            if (this.namereg[pkey].count === 2) {
              for (var i2 = 0, ilen = this.namereg[pkey].items.length; i2 < ilen; i2 += 1) {
                state.tmp.taintedItemIDs[this.namereg[pkey].items[i2]] = true;
              }
            }
          } else if (this.namereg[pkey].ikey[ikey].items.indexOf(item_id) === -1) {
            this.namereg[pkey].ikey[ikey].items.push(item_id);
          }
        }
        if (pkey && ikey && skey) {
          if ("undefined" === typeof this.namereg[pkey].ikey[ikey].skey[skey]) {
            this.namereg[pkey].ikey[ikey].skey[skey] = {};
            this.namereg[pkey].ikey[ikey].skey[skey].items = [item_id];
            this.namereg[pkey].ikey[ikey].count += 1;
            if (this.namereg[pkey].ikey[ikey].count === 2) {
              for (var i2 = 0, ilen = this.namereg[pkey].ikey[ikey].items.length; i2 < ilen; i2 += 1) {
                state.tmp.taintedItemIDs[this.namereg[pkey].ikey[ikey].items[i2]] = true;
              }
            }
          } else if (this.namereg[pkey].ikey[ikey].skey[skey].items.indexOf(item_id) === -1) {
            this.namereg[pkey].ikey[ikey].skey[skey].items.push(item_id);
          }
        }
        if ("undefined" === typeof this.nameind[item_id]) {
          this.nameind[item_id] = {};
          this.nameindpkeys[item_id] = {};
        }
        if (pkey) {
          this.nameind[item_id][pkey + "::" + ikey + "::" + skey] = true;
          this.nameindpkeys[item_id][pkey] = this.namereg[pkey];
        }
      };
      this.addname = addname;
      this.delitems = delitems;
      this.evalname = evalname;
    };
    CSL.Registry.CitationReg = function() {
      this.citationById = {};
      this.citationByIndex = [];
    };
    CSL.Disambiguation = function(state) {
      this.state = state;
      this.sys = this.state.sys;
      this.registry = state.registry.registry;
      this.ambigcites = state.registry.ambigcites;
      this.configModes();
      this.debug = false;
    };
    CSL.Disambiguation.prototype.run = function(akey) {
      if (!this.modes.length) {
        return;
      }
      if (this.debug) {
        this.state.sys.print("[A] === RUN ===");
      }
      this.akey = akey;
      if (this.initVars(akey)) {
        this.runDisambig();
      }
    };
    CSL.Disambiguation.prototype.runDisambig = function() {
      var ismax;
      if (this.debug) {
        this.state.sys.print("[C] === runDisambig() ===");
      }
      this.initGivens = true;
      while (this.lists.length) {
        this.gnameset = 0;
        this.gname = 0;
        this.clashes = [1, 0];
        while (this.lists[0][1].length) {
          this.listpos = 0;
          if (!this.base) {
            this.base = this.lists[0][0];
          }
          ismax = this.incrementDisambig();
          this.scanItems(this.lists[0]);
          this.evalScan(ismax);
        }
        this.lists = this.lists.slice(1);
      }
    };
    CSL.Disambiguation.prototype.scanItems = function(list6) {
      var pos, len, otherItem;
      if (this.debug) {
        this.state.sys.print("[2] === scanItems() ===");
      }
      this.Item = list6[1][0];
      this.ItemCite = CSL.getAmbiguousCite.call(this.state, this.Item, this.base, true);
      this.scanlist = list6[1];
      this.partners = [];
      this.partners.push(this.Item);
      this.nonpartners = [];
      var clashes = 0;
      for (var pos = 1, len = list6[1].length; pos < len; pos += 1) {
        otherItem = list6[1][pos];
        var otherItemCite = CSL.getAmbiguousCite.call(this.state, otherItem, this.base, true);
        if (this.debug) {
          if (pos > 1) {
            this.state.sys.print("  -----------");
          }
        }
        if (this.ItemCite === otherItemCite) {
          if (this.debug) {
            this.state.sys.print("  [CLASH]--> " + this.Item.id + ": " + this.ItemCite);
            this.state.sys.print("             " + otherItem.id + ": " + otherItemCite);
          }
          clashes += 1;
          this.partners.push(otherItem);
        } else {
          if (this.debug) {
            this.state.sys.print("  [clear]--> " + this.Item.id + ": " + this.ItemCite);
            this.state.sys.print("             " + otherItem.id + ": " + otherItemCite);
          }
          this.nonpartners.push(otherItem);
        }
      }
      this.clashes[0] = this.clashes[1];
      this.clashes[1] = clashes;
    };
    CSL.Disambiguation.prototype.evalScan = function(maxed) {
      this[this.modes[this.modeindex]](maxed);
      if (maxed) {
        if (this.modeindex < this.modes.length - 1) {
          this.modeindex += 1;
        } else {
          this.lists[this.listpos + 1] = [this.base, []];
        }
      }
    };
    CSL.Disambiguation.prototype.disNames = function(ismax) {
      var i2, ilen;
      if (this.debug) {
        this.state.sys.print("[3] == disNames() ==");
      }
      if (this.clashes[1] === 0 && this.nonpartners.length === 1) {
        this.captureStepToBase();
        if (this.debug) {
          this.state.sys.print("  ** RESOLUTION [a]: lone partner, one nonpartner");
          this.state.sys.print("  registering " + this.partners[0].id + " and " + this.nonpartners[0].id);
        }
        this.state.registry.registerAmbigToken(this.akey, "" + this.nonpartners[0].id, this.betterbase);
        this.state.registry.registerAmbigToken(this.akey, "" + this.partners[0].id, this.betterbase);
        this.lists[this.listpos] = [this.betterbase, []];
      } else if (this.clashes[1] === 0) {
        this.captureStepToBase();
        if (this.debug) {
          this.state.sys.print("  ** RESOLUTION [b]: lone partner, unknown number of remaining nonpartners");
          this.state.sys.print("  registering " + this.partners[0].id);
        }
        this.state.registry.registerAmbigToken(this.akey, "" + this.partners[0].id, this.betterbase);
        this.lists[this.listpos] = [this.betterbase, this.nonpartners];
        if (this.nonpartners.length) {
          this.initGivens = true;
        }
      } else if (this.nonpartners.length === 1) {
        this.captureStepToBase();
        if (this.debug) {
          this.state.sys.print("  ** RESOLUTION [c]: lone nonpartner, unknown number of partners remaining");
          this.state.sys.print("  registering " + this.nonpartners[0].id);
        }
        this.state.registry.registerAmbigToken(this.akey, "" + this.nonpartners[0].id, this.betterbase);
        this.lists[this.listpos] = [this.betterbase, this.partners];
      } else if (this.clashes[1] < this.clashes[0]) {
        this.captureStepToBase();
        if (this.debug) {
          this.state.sys.print("  ** RESOLUTION [d]: better result, but no entries safe to register");
        }
        this.lists[this.listpos] = [this.betterbase, this.partners];
        this.lists.push([this.betterbase, this.nonpartners]);
      } else {
        if (this.debug) {
          this.state.sys.print("  ** RESOLUTION [e]: no improvement, and clashes remain");
        }
        if (ismax) {
          this.lists[this.listpos] = [this.betterbase, this.nonpartners];
          this.lists.push([this.betterbase, this.partners]);
          if (this.modeindex === this.modes.length - 1) {
            if (this.debug) {
              this.state.sys.print("     (registering clashing entries because we've run out of options)");
            }
            for (var i2 = 0, ilen = this.partners.length; i2 < ilen; i2 += 1) {
              this.state.registry.registerAmbigToken(this.akey, "" + this.partners[i2].id, this.betterbase);
            }
            this.lists[this.listpos] = [this.betterbase, []];
          }
        }
      }
    };
    CSL.Disambiguation.prototype.disExtraText = function() {
      if (this.debug) {
        this.state.sys.print("[3] === disExtraText ==");
      }
      var done = false;
      if (this.clashes[1] === 0 && this.nonpartners.length < 2) {
        done = true;
      }
      if (!done && (!this.base.disambiguate || this.state.tmp.disambiguate_count !== this.state.tmp.disambiguate_maxMax)) {
        this.modeindex = 0;
        this.base.disambiguate = this.state.tmp.disambiguate_count;
        this.betterbase.disambiguate = this.state.tmp.disambiguate_count;
        if (!this.base.disambiguate) {
          this.initGivens = true;
          this.base.disambiguate = 1;
          for (var i2 = 0, ilen = this.lists[this.listpos][1].length; i2 < ilen; i2 += 1) {
            this.state.tmp.taintedItemIDs[this.lists[this.listpos][1][i2].id] = true;
          }
        } else {
          this.disNames();
        }
      } else if (done || this.state.tmp.disambiguate_count === this.state.tmp.disambiguate_maxMax) {
        if (done || this.modeindex === this.modes.length - 1) {
          var base5 = this.lists[this.listpos][0];
          for (var i2 = 0, ilen = this.lists[this.listpos][1].length; i2 < ilen; i2 += 1) {
            this.state.tmp.taintedItemIDs[this.lists[this.listpos][1][i2].id] = true;
            this.state.registry.registerAmbigToken(this.akey, "" + this.lists[this.listpos][1][i2].id, base5);
          }
          this.lists[this.listpos] = [this.betterbase, []];
        } else {
          this.modeindex = this.modes.length - 1;
          var base5 = this.lists[this.listpos][0];
          base5.disambiguate = true;
          for (var i2 = 0, ilen = this.lists[this.listpos][1].length; i2 < ilen; i2 += 1) {
            this.state.tmp.taintedItemIDs[this.lists[this.listpos][1][i2].id] = true;
            this.state.registry.registerAmbigToken(this.akey, "" + this.lists[this.listpos][1][i2].id, base5);
          }
        }
      }
    };
    CSL.Disambiguation.prototype.disYears = function() {
      var pos, len, tokens, token;
      if (this.debug) {
        this.state.sys.print("[3] === disYears ==");
      }
      tokens = [];
      var base5 = this.lists[this.listpos][0];
      if (this.clashes[1]) {
        for (var i2 = 0, ilen = this.state.registry.mylist.length; i2 < ilen; i2 += 1) {
          var origid = this.state.registry.mylist[i2];
          for (var j = 0, jlen = this.lists[this.listpos][1].length; j < jlen; j += 1) {
            var token = this.lists[this.listpos][1][j];
            if (token.id == origid) {
              tokens.push(this.registry[token.id]);
              break;
            }
          }
        }
      }
      tokens.sort(this.state.registry.sorter.compareKeys);
      for (var pos = 0, len = tokens.length; pos < len; pos += 1) {
        base5.year_suffix = "" + pos;
        var oldBase = this.state.registry.registry[tokens[pos].id].disambig;
        this.state.registry.registerAmbigToken(this.akey, "" + tokens[pos].id, base5);
        if (CSL.ambigConfigDiff(oldBase, base5)) {
          this.state.tmp.taintedItemIDs[tokens[pos].id] = true;
        }
      }
      this.lists[this.listpos] = [this.betterbase, []];
    };
    CSL.Disambiguation.prototype.incrementDisambig = function() {
      if (this.debug) {
        this.state.sys.print("\n[1] === incrementDisambig() ===");
      }
      if (this.initGivens) {
        this.initGivens = false;
        return false;
      }
      var maxed = false;
      var increment_names = true;
      if ("disNames" === this.modes[this.modeindex]) {
        increment_names = false;
        if ("number" !== typeof this.givensMax) {
          increment_names = true;
        }
        var increment_namesets = false;
        if ("number" !== typeof this.namesMax) {
          increment_namesets = true;
        }
        if ("number" === typeof this.givensMax) {
          if (this.base.givens.length && this.base.givens[this.gnameset][this.gname] < this.givensMax) {
            this.base.givens[this.gnameset][this.gname] += 1;
          } else {
            increment_names = true;
          }
        }
        if ("number" === typeof this.namesMax && increment_names) {
          if (this.state.opt["disambiguate-add-names"]) {
            increment_namesets = false;
            if (this.gname < this.namesMax) {
              this.base.names[this.gnameset] += 1;
              this.gname += 1;
            } else {
              increment_namesets = true;
            }
          } else {
            increment_namesets = true;
          }
        }
        if ("number" === typeof this.namesetsMax && increment_namesets) {
          if (this.gnameset < this.namesetsMax) {
            this.gnameset += 1;
            this.base.names[this.gnameset] = 1;
            this.gname = 0;
          }
        }
        if (this.debug) {
          this.state.sys.print("    ------------------");
          this.state.sys.print("    incremented values");
          this.state.sys.print("    ------------------");
          this.state.sys.print("    | gnameset: " + this.gnameset);
          this.state.sys.print("    | gname: " + this.gname);
          this.state.sys.print("    | names value: " + this.base.names[this.gnameset]);
          if (this.base.givens.length) {
            this.state.sys.print("    | givens value: " + this.base.givens[this.gnameset][this.gname]);
          } else {
            this.state.sys.print("    | givens value: nil");
          }
          this.state.sys.print("    | namesetsMax: " + this.namesetsMax);
          this.state.sys.print("    | namesMax: " + this.namesMax);
          this.state.sys.print("    | givensMax: " + this.givensMax);
        }
        if (("number" !== typeof this.namesetsMax || this.namesetsMax === -1 || this.gnameset === this.namesetsMax) && (!this.state.opt["disambiguate-add-names"] || "number" !== typeof this.namesMax || this.gname === this.namesMax) && ("number" != typeof this.givensMax || "undefined" === typeof this.base.givens[this.gnameset] || "undefined" === typeof this.base.givens[this.gnameset][this.gname] || this.base.givens[this.gnameset][this.gname] === this.givensMax)) {
          maxed = true;
          if (this.debug) {
            this.state.sys.print("    MAXED");
          }
        }
      } else if ("disExtraText" === this.modes[this.modeindex]) {
        this.base.disambiguate += 1;
        this.betterbase.disambiguate += 1;
      }
      return maxed;
    };
    CSL.Disambiguation.prototype.initVars = function(akey) {
      var i2, ilen, myIds, myItemBundles, myItems;
      if (this.debug) {
        this.state.sys.print("[B] === initVars() ===");
      }
      this.lists = [];
      this.base = false;
      this.betterbase = false;
      this.akey = akey;
      this.maxNamesByItemId = {};
      myItemBundles = [];
      myIds = this.ambigcites[akey];
      if (!myIds || !myIds.length) {
        return false;
      }
      var myItem = this.state.refetchItem("" + myIds[0]);
      this.getCiteData(myItem);
      this.base = CSL.getAmbigConfig.call(this.state);
      if (myIds && myIds.length > 1) {
        myItemBundles.push([this.maxNamesByItemId[myItem.id], myItem]);
        for (var i2 = 1, ilen = myIds.length; i2 < ilen; i2 += 1) {
          myItem = this.state.refetchItem("" + myIds[i2]);
          this.getCiteData(myItem, this.base);
          myItemBundles.push([this.maxNamesByItemId[myItem.id], myItem]);
        }
        myItemBundles.sort(
          function(a2, b) {
            if (a2[0] > b[0]) {
              return 1;
            } else if (a2[0] < b[0]) {
              return -1;
            } else {
              if (a2[1].id > b[1].id) {
                return 1;
              } else if (a2[1].id < b[1].id) {
                return -1;
              } else {
                return 0;
              }
            }
          }
        );
        myItems = [];
        for (var i2 = 0, ilen = myItemBundles.length; i2 < ilen; i2 += 1) {
          myItems.push(myItemBundles[i2][1]);
        }
        this.lists.push([this.base, myItems]);
        this.Item = this.lists[0][1][0];
      } else {
        this.Item = this.state.refetchItem("" + myIds[0]);
      }
      this.modeindex = 0;
      if (this.state.citation.opt["disambiguate-add-names"] || true) {
        this.namesMax = this.maxNamesByItemId[this.Item.id][0];
      } else {
        var namesMax = this.base.names[0];
        for (var i2 = 1, ilen = this.base.names.length; i2 < ilen; i2 += 1) {
          namesMax = Math.max(namesMax, this.base.names.names[i2]);
        }
      }
      this.padBase(this.base);
      this.padBase(this.betterbase);
      this.base.year_suffix = false;
      this.base.disambiguate = false;
      this.betterbase.year_suffix = false;
      this.betterbase.disambiguate = false;
      if (this.state.citation.opt["givenname-disambiguation-rule"] === "by-cite" && this.state.opt["disambiguate-add-givenname"]) {
        this.givensMax = 2;
      }
      return true;
    };
    CSL.Disambiguation.prototype.padBase = function(base5) {
      for (var i2 = 0, ilen = base5.names.length; i2 < ilen; i2 += 1) {
        if (!base5.givens[i2]) {
          base5.givens[i2] = [];
        }
        for (var j = 0, jlen = base5.names[i2]; j < jlen; j += 1) {
          if (!base5.givens[i2][j]) {
            base5.givens[i2][j] = 0;
          }
        }
      }
    };
    CSL.Disambiguation.prototype.configModes = function() {
      var dagopt, gdropt;
      this.modes = [];
      dagopt = this.state.opt["disambiguate-add-givenname"];
      gdropt = this.state.citation.opt["givenname-disambiguation-rule"];
      if (this.state.opt["disambiguate-add-names"] || dagopt && gdropt === "by-cite") {
        this.modes.push("disNames");
      }
      if (this.state.opt.development_extensions.prioritize_disambiguate_condition) {
        if (this.state.opt.has_disambiguate) {
          this.modes.push("disExtraText");
        }
        if (this.state.opt["disambiguate-add-year-suffix"]) {
          this.modes.push("disYears");
        }
      } else {
        if (this.state.opt["disambiguate-add-year-suffix"]) {
          this.modes.push("disYears");
        }
        if (this.state.opt.has_disambiguate) {
          this.modes.push("disExtraText");
        }
      }
    };
    CSL.Disambiguation.prototype.getCiteData = function(Item, base5) {
      if (!this.maxNamesByItemId[Item.id]) {
        CSL.getAmbiguousCite.call(this.state, Item, base5);
        base5 = CSL.getAmbigConfig.call(this.state);
        this.maxNamesByItemId[Item.id] = CSL.getMaxVals.call(this.state);
        this.state.registry.registry[Item.id].disambig.givens = this.state.tmp.disambig_settings.givens.slice();
        for (var i2 = 0, ilen = this.state.registry.registry[Item.id].disambig.givens.length; i2 < ilen; i2 += 1) {
          this.state.registry.registry[Item.id].disambig.givens[i2] = this.state.tmp.disambig_settings.givens[i2].slice();
        }
        this.namesetsMax = this.state.registry.registry[Item.id].disambig.names.length - 1;
        if (!this.base) {
          this.base = base5;
          this.betterbase = CSL.cloneAmbigConfig(base5);
        }
        if (base5.names.length < this.base.names.length) {
          this.base = base5;
        }
        for (var i2 = 0, ilen = base5.names.length; i2 < ilen; i2 += 1) {
          if (base5.names[i2] > this.base.names[i2]) {
            this.base.givens[i2] = base5.givens[i2].slice();
            this.base.names[i2] = base5.names[i2];
            this.betterbase.names = this.base.names.slice();
            this.betterbase.givens = this.base.givens.slice();
            this.padBase(this.base);
            this.padBase(this.betterbase);
          }
        }
        this.betterbase.givens = this.base.givens.slice();
        for (var j = 0, jlen = this.base.givens.length; j < jlen; j += 1) {
          this.betterbase.givens[j] = this.base.givens[j].slice();
        }
      }
    };
    CSL.Disambiguation.prototype.captureStepToBase = function() {
      if (this.state.citation.opt["givenname-disambiguation-rule"] === "by-cite" && this.base.givens && this.base.givens.length) {
        if ("undefined" !== typeof this.base.givens[this.gnameset][this.gname]) {
          if (this.betterbase.givens.length < this.base.givens.length) {
            this.betterbase.givens = JSON.parse(JSON.stringify(this.base.givens));
          }
          this.betterbase.givens[this.gnameset][this.gname] = this.base.givens[this.gnameset][this.gname];
        }
      }
      this.betterbase.names[this.gnameset] = this.base.names[this.gnameset];
    };
    CSL.Engine.prototype.getJurisdictionList = function(jurisdiction) {
      var jurisdictionList = [];
      var jurisdictionElems = jurisdiction.split(":");
      for (var j = jurisdictionElems.length; j > 0; j--) {
        var composedID = jurisdictionElems.slice(0, j).join(":");
        jurisdictionList.push(composedID);
        if (this.opt.jurisdiction_fallbacks[composedID]) {
          var fallback = this.opt.jurisdiction_fallbacks[composedID];
          jurisdictionList.push(fallback);
        }
      }
      if (jurisdictionList.indexOf("us") === -1) {
        jurisdictionList.push("us");
      }
      return jurisdictionList;
    };
    CSL.Engine.prototype.loadStyleModule = function(jurisdiction, xmlSource, skipFallback) {
      var myFallback = null;
      var macroCount = 0;
      this.juris[jurisdiction] = {};
      var myXml = CSL.setupXml(xmlSource);
      myXml.addMissingNameNodes(myXml.dataObj);
      myXml.addInstitutionNodes(myXml.dataObj);
      myXml.insertPublisherAndPlace(myXml.dataObj);
      myXml.flagDateMacros(myXml.dataObj);
      var myNodes = myXml.getNodesByName(myXml.dataObj, "law-module");
      for (var i2 = 0, ilen = myNodes.length; i2 < ilen; i2++) {
        var myTypes = myXml.getAttributeValue(myNodes[i2], "types");
        if (myTypes) {
          this.juris[jurisdiction].types = {};
          myTypes = myTypes.split(/\s+/);
          for (var j = 0, jlen = myTypes.length; j < jlen; j++) {
            this.juris[jurisdiction].types[myTypes[j]] = true;
          }
        }
        if (!skipFallback) {
          myFallback = myXml.getAttributeValue(myNodes[i2], "fallback");
          if (myFallback) {
            if (jurisdiction !== "us") {
              this.opt.jurisdiction_fallbacks[jurisdiction] = myFallback;
            }
          }
        }
      }
      var lang = this.opt.lang ? this.opt.lang : this.opt["default-locale"][0];
      CSL.SET_COURT_CLASSES(this, lang, myXml, myXml.dataObj);
      if (!this.juris[jurisdiction].types) {
        this.juris[jurisdiction].types = CSL.MODULE_TYPES;
      }
      var myNodes = myXml.getNodesByName(myXml.dataObj, "macro");
      for (var i2 = 0, ilen = myNodes.length; i2 < ilen; i2++) {
        var myName = myXml.getAttributeValue(myNodes[i2], "name");
        if (!CSL.MODULE_MACROS[myName]) {
          CSL.debug('CSL: skipping non-modular macro name "' + myName + '" in module context');
          continue;
        }
        macroCount++;
        this.juris[jurisdiction][myName] = [];
        this.buildTokenLists(myNodes[i2], this.juris[jurisdiction][myName]);
        this.configureTokenList(this.juris[jurisdiction][myName]);
      }
      return myFallback;
    };
    CSL.Engine.prototype.retrieveAllStyleModules = function(jurisdictionList) {
      var ret = {};
      var preferences = this.locale[this.opt.lang].opts["jurisdiction-preference"];
      preferences = preferences ? preferences : [];
      preferences = [""].concat(preferences);
      for (var i2 = preferences.length - 1; i2 > -1; i2--) {
        var preference = preferences[i2];
        for (var j = 0, jlen = jurisdictionList.length; j < jlen; j++) {
          var jurisdiction = jurisdictionList[j];
          if (this.opt.jurisdictions_seen[jurisdiction]) {
            continue;
          }
          var res = this.sys.retrieveStyleModule(jurisdiction, preference);
          if (!res && !preference || res) {
            this.opt.jurisdictions_seen[jurisdiction] = true;
          }
          if (!res) {
            continue;
          }
          ret[jurisdiction] = res;
        }
      }
      return ret;
    };
    CSL.ParticleList = /* @__PURE__ */ (function() {
      var always_dropping_1 = [[[0, 1], null]];
      var always_dropping_3 = [[[0, 3], null]];
      var always_non_dropping_1 = [[null, [0, 1]]];
      var always_non_dropping_2 = [[null, [0, 2]]];
      var always_non_dropping_3 = [[null, [0, 3]]];
      var either_1 = [[null, [0, 1]], [[0, 1], null]];
      var either_2 = [[null, [0, 2]], [[0, 2], null]];
      var either_1_dropping_best = [[[0, 1], null], [null, [0, 1]]];
      var either_2_dropping_best = [[[0, 2], null], [null, [0, 2]]];
      var either_3_dropping_best = [[[0, 3], null], [null, [0, 3]]];
      var non_dropping_2_alt_dropping_1_non_dropping_1 = [[null, [0, 2]], [[0, 1], [1, 2]]];
      var PARTICLES = [
        ["'s", always_non_dropping_1],
        ["'s-", always_non_dropping_1],
        ["'t", always_non_dropping_1],
        ["a", always_non_dropping_1],
        ["aan 't", always_non_dropping_2],
        ["aan de", always_non_dropping_2],
        ["aan den", always_non_dropping_2],
        ["aan der", always_non_dropping_2],
        ["aan het", always_non_dropping_2],
        ["aan t", always_non_dropping_2],
        ["aan", always_non_dropping_1],
        ["ad-", either_1],
        ["adh-", either_1],
        ["af", either_1],
        ["al", either_1],
        ["al-", either_1],
        ["am de", always_non_dropping_2],
        ["am", always_non_dropping_1],
        ["an-", either_1],
        ["ar-", either_1],
        ["as-", either_1],
        ["ash-", either_1],
        ["at-", either_1],
        ["ath-", either_1],
        ["auf dem", either_2_dropping_best],
        ["auf den", either_2_dropping_best],
        ["auf der", either_2_dropping_best],
        ["auf ter", always_non_dropping_2],
        ["auf", either_1_dropping_best],
        ["aus 'm", either_2_dropping_best],
        ["aus dem", either_2_dropping_best],
        ["aus den", either_2_dropping_best],
        ["aus der", either_2_dropping_best],
        ["aus m", either_2_dropping_best],
        ["aus", either_1_dropping_best],
        ["aus'm", either_2_dropping_best],
        ["az-", either_1],
        ["a\u0161-", either_1],
        ["a\u1E0D-", either_1],
        ["a\u1E0F-", either_1],
        ["a\u1E63-", either_1],
        ["a\u1E6D-", either_1],
        ["a\u1E6F-", either_1],
        ["a\u1E93-", either_1],
        ["ben", always_non_dropping_1],
        ["bij 't", always_non_dropping_2],
        ["bij de", always_non_dropping_2],
        ["bij den", always_non_dropping_2],
        ["bij het", always_non_dropping_2],
        ["bij t", always_non_dropping_2],
        ["bij", always_non_dropping_1],
        ["bin", always_non_dropping_1],
        ["boven d", always_non_dropping_2],
        ["boven d'", always_non_dropping_2],
        ["d", always_non_dropping_1],
        ["d'", either_1],
        ["da", either_1],
        ["dal", always_non_dropping_1],
        ["dal'", always_non_dropping_1],
        ["dall'", always_non_dropping_1],
        ["dalla", always_non_dropping_1],
        ["das", either_1],
        ["de die le", always_non_dropping_3],
        ["de die", always_non_dropping_2],
        ["de l", always_non_dropping_2],
        ["de l'", always_non_dropping_2],
        ["de la", non_dropping_2_alt_dropping_1_non_dropping_1],
        ["de las", non_dropping_2_alt_dropping_1_non_dropping_1],
        ["de le", always_non_dropping_2],
        ["de li", either_2],
        ["de van der", always_non_dropping_3],
        ["de", either_1],
        ["de'", either_1],
        ["deca", always_non_dropping_1],
        ["degli", either_1],
        ["dei", either_1],
        ["del", either_1],
        ["dela", always_dropping_1],
        ["dell'", either_1],
        ["della", either_1],
        ["delle", either_1],
        ["dello", either_1],
        ["den", either_1],
        ["der", either_1],
        ["des", either_1],
        ["di", either_1],
        ["die le", always_non_dropping_2],
        ["do", always_non_dropping_1],
        ["don", always_non_dropping_1],
        ["dos", either_1],
        ["du", either_1],
        ["ed-", either_1],
        ["edh-", either_1],
        ["el", either_1],
        ["el-", either_1],
        ["en-", either_1],
        ["er-", either_1],
        ["es-", either_1],
        ["esh-", either_1],
        ["et-", either_1],
        ["eth-", either_1],
        ["ez-", either_1],
        ["e\u0161-", either_1],
        ["e\u1E0D-", either_1],
        ["e\u1E0F-", either_1],
        ["e\u1E63-", either_1],
        ["e\u1E6D-", either_1],
        ["e\u1E6F-", either_1],
        ["e\u1E93-", either_1],
        ["het", always_non_dropping_1],
        ["i", always_non_dropping_1],
        ["il", always_dropping_1],
        ["im", always_non_dropping_1],
        ["in 't", always_non_dropping_2],
        ["in de", always_non_dropping_2],
        ["in den", always_non_dropping_2],
        ["in der", either_2],
        ["in het", always_non_dropping_2],
        ["in t", always_non_dropping_2],
        ["in", always_non_dropping_1],
        ["l", always_non_dropping_1],
        ["l'", always_non_dropping_1],
        ["la", always_non_dropping_1],
        ["las", always_non_dropping_1],
        ["le", always_non_dropping_1],
        ["les", either_1],
        ["lo", either_1],
        ["los", always_non_dropping_1],
        ["lou", always_non_dropping_1],
        ["of", always_non_dropping_1],
        ["onder 't", always_non_dropping_2],
        ["onder de", always_non_dropping_2],
        ["onder den", always_non_dropping_2],
        ["onder het", always_non_dropping_2],
        ["onder t", always_non_dropping_2],
        ["onder", always_non_dropping_1],
        ["op 't", always_non_dropping_2],
        ["op de", either_2],
        ["op den", always_non_dropping_2],
        ["op der", always_non_dropping_2],
        ["op gen", always_non_dropping_2],
        ["op het", always_non_dropping_2],
        ["op t", always_non_dropping_2],
        ["op ten", always_non_dropping_2],
        ["op", always_non_dropping_1],
        ["over 't", always_non_dropping_2],
        ["over de", always_non_dropping_2],
        ["over den", always_non_dropping_2],
        ["over het", always_non_dropping_2],
        ["over t", always_non_dropping_2],
        ["over", always_non_dropping_1],
        ["s", always_non_dropping_1],
        ["s'", always_non_dropping_1],
        ["sen", always_dropping_1],
        ["t", always_non_dropping_1],
        ["te", always_non_dropping_1],
        ["ten", always_non_dropping_1],
        ["ter", always_non_dropping_1],
        ["tho", always_non_dropping_1],
        ["thoe", always_non_dropping_1],
        ["thor", always_non_dropping_1],
        ["to", always_non_dropping_1],
        ["toe", always_non_dropping_1],
        ["tot", always_non_dropping_1],
        ["uijt 't", always_non_dropping_2],
        ["uijt de", always_non_dropping_2],
        ["uijt den", always_non_dropping_2],
        ["uijt te de", always_non_dropping_3],
        ["uijt ten", always_non_dropping_2],
        ["uijt", always_non_dropping_1],
        ["uit 't", always_non_dropping_2],
        ["uit de", always_non_dropping_2],
        ["uit den", always_non_dropping_2],
        ["uit het", always_non_dropping_2],
        ["uit t", always_non_dropping_2],
        ["uit te de", always_non_dropping_3],
        ["uit ten", always_non_dropping_2],
        ["uit", always_non_dropping_1],
        ["unter", always_non_dropping_1],
        ["v", always_non_dropping_1],
        ["v.", always_non_dropping_1],
        ["v.d.", always_non_dropping_1],
        ["van 't", always_non_dropping_2],
        ["van de l", always_non_dropping_3],
        ["van de l'", always_non_dropping_3],
        ["van de", always_non_dropping_2],
        ["van de", always_non_dropping_2],
        ["van den", always_non_dropping_2],
        ["van der", always_non_dropping_2],
        ["van gen", always_non_dropping_2],
        ["van het", always_non_dropping_2],
        ["van la", always_non_dropping_2],
        ["van t", always_non_dropping_2],
        ["van ter", always_non_dropping_2],
        ["van van de", always_non_dropping_3],
        ["van", either_1],
        ["vander", always_non_dropping_1],
        ["vd", always_non_dropping_1],
        ["ver", always_non_dropping_1],
        ["vom und zum", always_dropping_3],
        ["vom", either_1],
        ["von 't", always_non_dropping_2],
        ["von dem", either_2_dropping_best],
        ["von den", either_2_dropping_best],
        ["von der", either_2_dropping_best],
        ["von t", always_non_dropping_2],
        ["von und zu", either_3_dropping_best],
        ["von zu", either_2_dropping_best],
        ["von", either_1_dropping_best],
        ["voor 't", always_non_dropping_2],
        ["voor de", always_non_dropping_2],
        ["voor den", always_non_dropping_2],
        ["voor in 't", always_non_dropping_3],
        ["voor in t", always_non_dropping_3],
        ["voor", always_non_dropping_1],
        ["vor der", either_2_dropping_best],
        ["vor", either_1_dropping_best],
        ["z", always_dropping_1],
        ["ze", always_dropping_1],
        ["zu", either_1_dropping_best],
        ["zum", either_1],
        ["zur", either_1]
      ];
      return PARTICLES;
    })();
    CSL.parseParticles = /* @__PURE__ */ (function() {
      function splitParticles(nameValue, firstNameFlag, caseOverride) {
        var origNameValue = nameValue;
        nameValue = caseOverride ? nameValue.toLowerCase() : nameValue;
        var particleList = [];
        var rex;
        var hasParticle;
        if (firstNameFlag) {
          nameValue = nameValue.split("").reverse().join("");
          rex = CSL.PARTICLE_GIVEN_REGEXP;
        } else {
          rex = CSL.PARTICLE_FAMILY_REGEXP;
        }
        var m2 = nameValue.match(rex);
        while (m2) {
          var m1 = firstNameFlag ? m2[1].split("").reverse().join("") : m2[1];
          var firstChar = m2 ? m1 : false;
          var firstChar = firstChar ? m1.replace(/^[-\'\u02bb\u2019\s]*(.).*$/, "$1") : false;
          hasParticle = firstChar ? firstChar.toUpperCase() !== firstChar : false;
          if (!hasParticle) {
            break;
          }
          if (firstNameFlag) {
            particleList.push(origNameValue.slice(m1.length * -1));
            origNameValue = origNameValue.slice(0, m1.length * -1);
          } else {
            particleList.push(origNameValue.slice(0, m1.length));
            origNameValue = origNameValue.slice(m1.length);
          }
          nameValue = m2[2];
          m2 = nameValue.match(rex);
        }
        if (firstNameFlag) {
          nameValue = nameValue.split("").reverse().join("");
          particleList.reverse();
          for (var i2 = 1, ilen = particleList.length; i2 < ilen; i2++) {
            if (particleList[i2].slice(0, 1) == " ") {
              particleList[i2 - 1] += " ";
            }
          }
          for (var i2 = 0, ilen = particleList.length; i2 < ilen; i2++) {
            if (particleList[i2].slice(0, 1) == " ") {
              particleList[i2] = particleList[i2].slice(1);
            }
          }
          nameValue = origNameValue.slice(0, nameValue.length);
        } else {
          nameValue = origNameValue.slice(nameValue.length * -1);
        }
        return [hasParticle, nameValue, particleList];
      }
      function trimLast(str2) {
        var lastChar = str2.slice(-1);
        str2 = str2.trim();
        if (lastChar === " " && ["'", "\u2019"].indexOf(str2.slice(-1)) > -1) {
          str2 += " ";
        }
        return str2;
      }
      function parseSuffix(nameObj) {
        if (!nameObj.suffix && nameObj.given) {
          var m2 = nameObj.given.match(/(\s*,!*\s*)/);
          if (m2) {
            var idx = nameObj.given.indexOf(m2[1]);
            var possible_suffix = nameObj.given.slice(idx + m2[1].length);
            var possible_comma = nameObj.given.slice(idx, idx + m2[1].length).replace(/\s*/g, "");
            if (possible_suffix.replace(/\./g, "") === "et al" && !nameObj["dropping-particle"]) {
              nameObj["dropping-particle"] = possible_suffix;
              nameObj["comma-dropping-particle"] = ",";
            } else {
              if (possible_comma.length === 2) {
                nameObj["comma-suffix"] = true;
              }
              nameObj.suffix = possible_suffix;
            }
            nameObj.given = nameObj.given.slice(0, idx);
          }
        }
      }
      return function(nameObj) {
        var res = splitParticles(nameObj.family);
        var lastNameValue = res[1];
        var lastParticleList = res[2];
        nameObj.family = lastNameValue;
        var nonDroppingParticle = trimLast(lastParticleList.join(""));
        if (nonDroppingParticle) {
          nameObj["non-dropping-particle"] = nonDroppingParticle;
        }
        parseSuffix(nameObj);
        var res = splitParticles(nameObj.given, true);
        var firstNameValue = res[1];
        var firstParticleList = res[2];
        nameObj.given = firstNameValue;
        var droppingParticle = firstParticleList.join("").trim();
        if (droppingParticle) {
          nameObj["dropping-particle"] = droppingParticle;
        }
      };
    })();
    module2.exports = CSL;
  }
});

// ../../node_modules/@citation-js/plugin-csl/lib/engines.js
var require_engines = __commonJS({
  "../../node_modules/@citation-js/plugin-csl/lib/engines.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.fetchEngine = exports2.default = void 0;
    var _citeproc = _interopRequireDefault3(require_citeproc_commonjs());
    var _styles2 = require_styles2();
    var _locales2 = require_locales2();
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    var proxied = Symbol.for("proxied");
    var getWrapperProxy = function(original) {
      const proxy = function(state, entry) {
        if (state.sys.wrapBibliographyEntry) {
          const [prefix2, postfix] = state.sys.wrapBibliographyEntry(this.system_id);
          entry = [prefix2, entry, postfix].join("");
        }
        return original.call(this, state, entry);
      };
      proxy[proxied] = true;
      return proxy;
    };
    for (const format in _citeproc.default.Output.Formats) {
      const original = _citeproc.default.Output.Formats[format]["@bibliography/entry"];
      if (!original || original[proxied]) {
        continue;
      }
      _citeproc.default.Output.Formats[format]["@bibliography/entry"] = getWrapperProxy(original);
    }
    function retrieveLocale(locale) {
      if (_locales2.locales.has(locale)) {
        return _locales2.locales.get(locale);
      }
      const unnormalised = locale.replace("-", "_");
      if (_locales2.locales.has(unnormalised)) {
        return _locales2.locales.get(unnormalised);
      }
      return {};
    }
    var engines = {};
    var fetchEngine = function(style3, locale, styleXml, retrieveItem, retrieveLocale2) {
      const engineHash = `${style3}|${locale}`;
      let engine;
      if (engines[engineHash] instanceof _citeproc.default.Engine) {
        engine = engines[engineHash];
        engine.sys.retrieveItem = retrieveItem;
        engine.sys.wrapBibliographyEntry = void 0;
        engine.updateItems([]);
      } else {
        engine = engines[engineHash] = new _citeproc.default.Engine({
          retrieveLocale: retrieveLocale2,
          retrieveItem
        }, styleXml, locale, true);
      }
      return engine;
    };
    exports2.fetchEngine = fetchEngine;
    var prepareEngine = function(data, style3, locale, format) {
      if (!_citeproc.default.Output.Formats[format] || !_citeproc.default.Output.Formats[format]["@bibliography/entry"]) {
        throw new TypeError(`Cannot find format '${format}'`);
      }
      const items = data.reduce((store, entry) => {
        store[entry.id] = entry;
        return store;
      }, {});
      const template = _styles2.templates.get(_styles2.templates.has(style3) ? style3 : "apa");
      locale = _locales2.locales.has(locale) ? locale : void 0;
      const callback = function(key2) {
        if (Object.prototype.hasOwnProperty.call(items, key2)) {
          return items[key2];
        } else {
          throw new Error(`Cannot find entry with id '${key2}'`);
        }
      };
      const engine = fetchEngine(style3, locale, template, callback, retrieveLocale);
      engine.setOutputFormat(format);
      engine.opt.development_extensions.wrap_url_and_doi = false;
      return engine;
    };
    var _default2 = exports2.default = prepareEngine;
  }
});

// ../../node_modules/@citation-js/plugin-csl/lib/attr.js
var require_attr = __commonJS({
  "../../node_modules/@citation-js/plugin-csl/lib/attr.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.getPrefixedEntry = exports2.getAttributedEntry = void 0;
    var getAttributedEntry = (string2, name3, value) => string2.replace(/^\s*<[a-z]+/i, `$& data-${name3}="${value}"`);
    exports2.getAttributedEntry = getAttributedEntry;
    var getPrefixedEntry = (value, id) => getAttributedEntry(value, "csl-entry-id", id);
    exports2.getPrefixedEntry = getPrefixedEntry;
  }
});

// ../../node_modules/@citation-js/plugin-csl/lib/bibliography.js
var require_bibliography = __commonJS({
  "../../node_modules/@citation-js/plugin-csl/lib/bibliography.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = bibliography2;
    var _core3 = require_lib6();
    var _engines2 = _interopRequireDefault3(require_engines());
    var _attr = require_attr();
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    var getAffix = (source2, affix) => typeof affix === "function" ? affix(source2) : affix || "";
    function bibliography2(data, options = {}) {
      const {
        template = "apa",
        lang,
        format = "text",
        nosort = false
      } = options;
      const ids = options.entry ? [].concat(options.entry) : data.map(({
        id
      }) => id);
      data = _core3.util.downgradeCsl(data);
      const citeproc = (0, _engines2.default)(data, template, lang, format);
      const sortedIds = citeproc.updateItems(ids, nosort);
      if (options.append || options.prepend) {
        const items = data.reduce((items2, entry) => {
          items2[entry.id] = entry;
          return items2;
        }, {});
        citeproc.sys.wrapBibliographyEntry = function(id) {
          const entry = items[id];
          return [getAffix(entry, options.prepend), getAffix(entry, options.append)];
        };
      }
      if (options.hyperlinks) {
        citeproc.opt.development_extensions.wrap_url_and_doi = true;
      }
      const bibliography3 = citeproc.makeBibliography();
      const [{
        bibstart,
        bibend
      }, bibBody] = bibliography3;
      const entries2 = bibBody.map((element5, index4) => (0, _attr.getPrefixedEntry)(element5, sortedIds[index4]));
      if (options.asEntryArray) {
        return entries2.map((element5, index4) => [sortedIds[index4], element5]);
      }
      return bibstart + entries2.join("") + bibend;
    }
  }
});

// ../../node_modules/@citation-js/plugin-csl/lib/citation.js
var require_citation = __commonJS({
  "../../node_modules/@citation-js/plugin-csl/lib/citation.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", {
      value: true
    });
    exports2.default = citation;
    var _core3 = require_lib6();
    var _engines2 = _interopRequireDefault3(require_engines());
    function _interopRequireDefault3(e2) {
      return e2 && e2.__esModule ? e2 : { default: e2 };
    }
    function prepareCiteItem(citeItem) {
      return typeof citeItem === "object" ? citeItem : {
        id: citeItem
      };
    }
    function prepareCitation(citation2) {
      if (citation2.citationItems) {
        return citation2;
      }
      return {
        citationItems: [].concat(citation2).map(prepareCiteItem),
        properties: {
          noteIndex: 0
        }
      };
    }
    function prepareCitations(context) {
      if (!context) {
        return [];
      }
      return context.map(prepareCitation);
    }
    function citation(data, options = {}) {
      const {
        template = "apa",
        lang,
        format = "text"
      } = options;
      const ids = data.map(({
        id
      }) => id);
      const entries2 = options.entry ? options.entry : ids;
      data = _core3.util.downgradeCsl(data);
      const citeproc = (0, _engines2.default)(data, template, lang, format);
      const before = prepareCitations(options.citationsPre);
      const citation2 = prepareCitation(entries2);
      const after = prepareCitations(options.citationsPost);
      const output2 = citeproc.rebuildProcessorState([...before, citation2, ...after], format, []);
      return output2[before.length][2];
    }
  }
});

// ../../node_modules/markdown-it-front-matter/index.js
var require_markdown_it_front_matter = __commonJS({
  "../../node_modules/markdown-it-front-matter/index.js"(exports2, module2) {
    "use strict";
    module2.exports = function front_matter_plugin(md, cb) {
      var min_markers = 3, marker_str = "-", marker_char = marker_str.charCodeAt(0), marker_len = marker_str.length;
      function frontMatter(state, startLine, endLine, silent) {
        var pos, nextLine, marker_count, token, old_parent, old_line_max, start_content, auto_closed = false, start = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine];
        if (startLine !== 0 || marker_char !== state.src.charCodeAt(0)) {
          return false;
        }
        for (pos = start + 1; pos <= max; pos++) {
          if (marker_str[(pos - start) % marker_len] !== state.src[pos]) {
            start_content = pos + 1;
            break;
          }
        }
        marker_count = Math.floor((pos - start) / marker_len);
        if (marker_count < min_markers) {
          return false;
        }
        pos -= (pos - start) % marker_len;
        if (silent) {
          return true;
        }
        nextLine = startLine;
        for (; ; ) {
          nextLine++;
          if (nextLine >= endLine) {
            break;
          }
          if (state.src.slice(start, max) === "...") {
            break;
          }
          start = state.bMarks[nextLine] + state.tShift[nextLine];
          max = state.eMarks[nextLine];
          if (start < max && state.sCount[nextLine] < state.blkIndent) {
            break;
          }
          if (marker_char !== state.src.charCodeAt(start)) {
            continue;
          }
          if (state.sCount[nextLine] - state.blkIndent >= 4) {
            continue;
          }
          for (pos = start + 1; pos <= max; pos++) {
            if (marker_str[(pos - start) % marker_len] !== state.src[pos]) {
              break;
            }
          }
          if (Math.floor((pos - start) / marker_len) < marker_count) {
            continue;
          }
          pos -= (pos - start) % marker_len;
          pos = state.skipSpaces(pos);
          if (pos < max) {
            continue;
          }
          auto_closed = true;
          break;
        }
        old_parent = state.parentType;
        old_line_max = state.lineMax;
        state.parentType = "container";
        state.lineMax = nextLine;
        token = state.push("front_matter", null, 0);
        token.hidden = true;
        token.markup = state.src.slice(startLine, pos);
        token.block = true;
        token.map = [startLine, pos];
        token.meta = state.src.slice(start_content, start - 1);
        state.parentType = old_parent;
        state.lineMax = old_line_max;
        state.line = nextLine + (auto_closed ? 1 : 0);
        cb(token.meta);
        return true;
      }
      md.block.ruler.before(
        "table",
        "front_matter",
        frontMatter,
        {
          alt: [
            "paragraph",
            "reference",
            "blockquote",
            "list"
          ]
        }
      );
    };
  }
});

// ../../node_modules/markdown-it-task-lists/index.js
var require_markdown_it_task_lists = __commonJS({
  "../../node_modules/markdown-it-task-lists/index.js"(exports2, module2) {
    var disableCheckboxes = true;
    var useLabelWrapper = false;
    var useLabelAfter = false;
    module2.exports = function(md, options) {
      if (options) {
        disableCheckboxes = !options.enabled;
        useLabelWrapper = !!options.label;
        useLabelAfter = !!options.labelAfter;
      }
      md.core.ruler.after("inline", "github-task-lists", function(state) {
        var tokens = state.tokens;
        for (var i2 = 2; i2 < tokens.length; i2++) {
          if (isTodoItem(tokens, i2)) {
            todoify(tokens[i2], state.Token);
            attrSet(tokens[i2 - 2], "class", "task-list-item" + (!disableCheckboxes ? " enabled" : ""));
            attrSet(tokens[parentToken(tokens, i2 - 2)], "class", "contains-task-list");
          }
        }
      });
    };
    function attrSet(token, name3, value) {
      var index4 = token.attrIndex(name3);
      var attr = [name3, value];
      if (index4 < 0) {
        token.attrPush(attr);
      } else {
        token.attrs[index4] = attr;
      }
    }
    function parentToken(tokens, index4) {
      var targetLevel = tokens[index4].level - 1;
      for (var i2 = index4 - 1; i2 >= 0; i2--) {
        if (tokens[i2].level === targetLevel) {
          return i2;
        }
      }
      return -1;
    }
    function isTodoItem(tokens, index4) {
      return isInline(tokens[index4]) && isParagraph(tokens[index4 - 1]) && isListItem(tokens[index4 - 2]) && startsWithTodoMarkdown(tokens[index4]);
    }
    function todoify(token, TokenConstructor) {
      token.children.unshift(makeCheckbox(token, TokenConstructor));
      token.children[1].content = token.children[1].content.slice(3);
      token.content = token.content.slice(3);
      if (useLabelWrapper) {
        if (useLabelAfter) {
          token.children.pop();
          var id = "task-item-" + Math.ceil(Math.random() * (1e4 * 1e3) - 1e3);
          token.children[0].content = token.children[0].content.slice(0, -1) + ' id="' + id + '">';
          token.children.push(afterLabel(token.content, id, TokenConstructor));
        } else {
          token.children.unshift(beginLabel(TokenConstructor));
          token.children.push(endLabel(TokenConstructor));
        }
      }
    }
    function makeCheckbox(token, TokenConstructor) {
      var checkbox = new TokenConstructor("html_inline", "", 0);
      var disabledAttr = disableCheckboxes ? ' disabled="" ' : "";
      if (token.content.indexOf("[ ] ") === 0) {
        checkbox.content = '<input class="task-list-item-checkbox"' + disabledAttr + 'type="checkbox">';
      } else if (token.content.indexOf("[x] ") === 0 || token.content.indexOf("[X] ") === 0) {
        checkbox.content = '<input class="task-list-item-checkbox" checked=""' + disabledAttr + 'type="checkbox">';
      }
      return checkbox;
    }
    function beginLabel(TokenConstructor) {
      var token = new TokenConstructor("html_inline", "", 0);
      token.content = "<label>";
      return token;
    }
    function endLabel(TokenConstructor) {
      var token = new TokenConstructor("html_inline", "", 0);
      token.content = "</label>";
      return token;
    }
    function afterLabel(content3, id, TokenConstructor) {
      var token = new TokenConstructor("html_inline", "", 0);
      token.content = '<label class="task-list-item-label" for="' + id + '">' + content3 + "</label>";
      token.attrs = [{ for: id }];
      return token;
    }
    function isInline(token) {
      return token.type === "inline";
    }
    function isParagraph(token) {
      return token.type === "paragraph_open";
    }
    function isListItem(token) {
      return token.type === "list_item_open";
    }
    function startsWithTodoMarkdown(token) {
      return token.content.indexOf("[ ] ") === 0 || token.content.indexOf("[x] ") === 0 || token.content.indexOf("[X] ") === 0;
    }
  }
});

// ../../node_modules/markdown-it-deflist/index.js
var require_markdown_it_deflist = __commonJS({
  "../../node_modules/markdown-it-deflist/index.js"(exports2, module2) {
    "use strict";
    module2.exports = function deflist_plugin(md) {
      var isSpace = md.utils.isSpace;
      function skipMarker(state, line2) {
        var pos, marker, start = state.bMarks[line2] + state.tShift[line2], max = state.eMarks[line2];
        if (start >= max) {
          return -1;
        }
        marker = state.src.charCodeAt(start++);
        if (marker !== 126 && marker !== 58) {
          return -1;
        }
        pos = state.skipSpaces(start);
        if (start === pos) {
          return -1;
        }
        if (pos >= max) {
          return -1;
        }
        return start;
      }
      function markTightParagraphs(state, idx) {
        var i2, l, level = state.level + 2;
        for (i2 = idx + 2, l = state.tokens.length - 2; i2 < l; i2++) {
          if (state.tokens[i2].level === level && state.tokens[i2].type === "paragraph_open") {
            state.tokens[i2 + 2].hidden = true;
            state.tokens[i2].hidden = true;
            i2 += 2;
          }
        }
      }
      function deflist(state, startLine, endLine, silent) {
        var ch, contentStart, ddLine, dtLine, itemLines, listLines, listTokIdx, max, nextLine, offset, oldDDIndent, oldIndent, oldParentType, oldSCount, oldTShift, oldTight, pos, prevEmptyEnd, tight, token;
        if (silent) {
          if (state.ddIndent < 0) {
            return false;
          }
          return skipMarker(state, startLine) >= 0;
        }
        nextLine = startLine + 1;
        if (nextLine >= endLine) {
          return false;
        }
        if (state.isEmpty(nextLine)) {
          nextLine++;
          if (nextLine >= endLine) {
            return false;
          }
        }
        if (state.sCount[nextLine] < state.blkIndent) {
          return false;
        }
        contentStart = skipMarker(state, nextLine);
        if (contentStart < 0) {
          return false;
        }
        listTokIdx = state.tokens.length;
        tight = true;
        token = state.push("dl_open", "dl", 1);
        token.map = listLines = [startLine, 0];
        dtLine = startLine;
        ddLine = nextLine;
        OUTER:
          for (; ; ) {
            prevEmptyEnd = false;
            token = state.push("dt_open", "dt", 1);
            token.map = [dtLine, dtLine];
            token = state.push("inline", "", 0);
            token.map = [dtLine, dtLine];
            token.content = state.getLines(dtLine, dtLine + 1, state.blkIndent, false).trim();
            token.children = [];
            token = state.push("dt_close", "dt", -1);
            for (; ; ) {
              token = state.push("dd_open", "dd", 1);
              token.map = itemLines = [nextLine, 0];
              pos = contentStart;
              max = state.eMarks[ddLine];
              offset = state.sCount[ddLine] + contentStart - (state.bMarks[ddLine] + state.tShift[ddLine]);
              while (pos < max) {
                ch = state.src.charCodeAt(pos);
                if (isSpace(ch)) {
                  if (ch === 9) {
                    offset += 4 - offset % 4;
                  } else {
                    offset++;
                  }
                } else {
                  break;
                }
                pos++;
              }
              contentStart = pos;
              oldTight = state.tight;
              oldDDIndent = state.ddIndent;
              oldIndent = state.blkIndent;
              oldTShift = state.tShift[ddLine];
              oldSCount = state.sCount[ddLine];
              oldParentType = state.parentType;
              state.blkIndent = state.ddIndent = state.sCount[ddLine] + 2;
              state.tShift[ddLine] = contentStart - state.bMarks[ddLine];
              state.sCount[ddLine] = offset;
              state.tight = true;
              state.parentType = "deflist";
              state.md.block.tokenize(state, ddLine, endLine, true);
              if (!state.tight || prevEmptyEnd) {
                tight = false;
              }
              prevEmptyEnd = state.line - ddLine > 1 && state.isEmpty(state.line - 1);
              state.tShift[ddLine] = oldTShift;
              state.sCount[ddLine] = oldSCount;
              state.tight = oldTight;
              state.parentType = oldParentType;
              state.blkIndent = oldIndent;
              state.ddIndent = oldDDIndent;
              token = state.push("dd_close", "dd", -1);
              itemLines[1] = nextLine = state.line;
              if (nextLine >= endLine) {
                break OUTER;
              }
              if (state.sCount[nextLine] < state.blkIndent) {
                break OUTER;
              }
              contentStart = skipMarker(state, nextLine);
              if (contentStart < 0) {
                break;
              }
              ddLine = nextLine;
            }
            if (nextLine >= endLine) {
              break;
            }
            dtLine = nextLine;
            if (state.isEmpty(dtLine)) {
              break;
            }
            if (state.sCount[dtLine] < state.blkIndent) {
              break;
            }
            ddLine = dtLine + 1;
            if (ddLine >= endLine) {
              break;
            }
            if (state.isEmpty(ddLine)) {
              ddLine++;
            }
            if (ddLine >= endLine) {
              break;
            }
            if (state.sCount[ddLine] < state.blkIndent) {
              break;
            }
            contentStart = skipMarker(state, ddLine);
            if (contentStart < 0) {
              break;
            }
          }
        token = state.push("dl_close", "dl", -1);
        listLines[1] = nextLine;
        state.line = nextLine;
        if (tight) {
          markTightParagraphs(state, listTokIdx);
        }
        return true;
      }
      md.block.ruler.before("paragraph", "deflist", deflist, { alt: ["paragraph", "reference", "blockquote"] });
    };
  }
});

// ../../node_modules/markdown-it/lib/helpers/parse_link_label.js
var require_parse_link_label = __commonJS({
  "../../node_modules/markdown-it/lib/helpers/parse_link_label.js"(exports2, module2) {
    "use strict";
    module2.exports = function parseLinkLabel(state, start, disableNested) {
      var level, found2, marker, prevPos, labelEnd = -1, max = state.posMax, oldPos = state.pos;
      state.pos = start + 1;
      level = 1;
      while (state.pos < max) {
        marker = state.src.charCodeAt(state.pos);
        if (marker === 93) {
          level--;
          if (level === 0) {
            found2 = true;
            break;
          }
        }
        prevPos = state.pos;
        state.md.inline.skipToken(state);
        if (marker === 91) {
          if (prevPos === state.pos - 1) {
            level++;
          } else if (disableNested) {
            state.pos = oldPos;
            return -1;
          }
        }
      }
      if (found2) {
        labelEnd = state.pos;
      }
      state.pos = oldPos;
      return labelEnd;
    };
  }
});

// ../../node_modules/markdown-it/lib/helpers/parse_link_destination.js
var require_parse_link_destination = __commonJS({
  "../../node_modules/markdown-it/lib/helpers/parse_link_destination.js"(exports2, module2) {
    "use strict";
    var unescapeAll = require_utils2().unescapeAll;
    module2.exports = function parseLinkDestination(str2, start, max) {
      var code7, level, pos = start, result = {
        ok: false,
        pos: 0,
        lines: 0,
        str: ""
      };
      if (str2.charCodeAt(pos) === 60) {
        pos++;
        while (pos < max) {
          code7 = str2.charCodeAt(pos);
          if (code7 === 10) {
            return result;
          }
          if (code7 === 60) {
            return result;
          }
          if (code7 === 62) {
            result.pos = pos + 1;
            result.str = unescapeAll(str2.slice(start + 1, pos));
            result.ok = true;
            return result;
          }
          if (code7 === 92 && pos + 1 < max) {
            pos += 2;
            continue;
          }
          pos++;
        }
        return result;
      }
      level = 0;
      while (pos < max) {
        code7 = str2.charCodeAt(pos);
        if (code7 === 32) {
          break;
        }
        if (code7 < 32 || code7 === 127) {
          break;
        }
        if (code7 === 92 && pos + 1 < max) {
          if (str2.charCodeAt(pos + 1) === 32) {
            break;
          }
          pos += 2;
          continue;
        }
        if (code7 === 40) {
          level++;
          if (level > 32) {
            return result;
          }
        }
        if (code7 === 41) {
          if (level === 0) {
            break;
          }
          level--;
        }
        pos++;
      }
      if (start === pos) {
        return result;
      }
      if (level !== 0) {
        return result;
      }
      result.str = unescapeAll(str2.slice(start, pos));
      result.pos = pos;
      result.ok = true;
      return result;
    };
  }
});

// ../../node_modules/markdown-it/lib/helpers/parse_link_title.js
var require_parse_link_title = __commonJS({
  "../../node_modules/markdown-it/lib/helpers/parse_link_title.js"(exports2, module2) {
    "use strict";
    var unescapeAll = require_utils2().unescapeAll;
    module2.exports = function parseLinkTitle(str2, start, max) {
      var code7, marker, lines = 0, pos = start, result = {
        ok: false,
        pos: 0,
        lines: 0,
        str: ""
      };
      if (pos >= max) {
        return result;
      }
      marker = str2.charCodeAt(pos);
      if (marker !== 34 && marker !== 39 && marker !== 40) {
        return result;
      }
      pos++;
      if (marker === 40) {
        marker = 41;
      }
      while (pos < max) {
        code7 = str2.charCodeAt(pos);
        if (code7 === marker) {
          result.pos = pos + 1;
          result.lines = lines;
          result.str = unescapeAll(str2.slice(start + 1, pos));
          result.ok = true;
          return result;
        } else if (code7 === 40 && marker === 41) {
          return result;
        } else if (code7 === 10) {
          lines++;
        } else if (code7 === 92 && pos + 1 < max) {
          pos++;
          if (str2.charCodeAt(pos) === 10) {
            lines++;
          }
        }
        pos++;
      }
      return result;
    };
  }
});

// ../../node_modules/markdown-it/lib/helpers/index.js
var require_helpers2 = __commonJS({
  "../../node_modules/markdown-it/lib/helpers/index.js"(exports2) {
    "use strict";
    exports2.parseLinkLabel = require_parse_link_label();
    exports2.parseLinkDestination = require_parse_link_destination();
    exports2.parseLinkTitle = require_parse_link_title();
  }
});

// ../../node_modules/markdown-it/lib/renderer.js
var require_renderer = __commonJS({
  "../../node_modules/markdown-it/lib/renderer.js"(exports2, module2) {
    "use strict";
    var assign2 = require_utils2().assign;
    var unescapeAll = require_utils2().unescapeAll;
    var escapeHtml4 = require_utils2().escapeHtml;
    var default_rules = {};
    default_rules.code_inline = function(tokens, idx, options, env6, slf) {
      var token = tokens[idx];
      return "<code" + slf.renderAttrs(token) + ">" + escapeHtml4(token.content) + "</code>";
    };
    default_rules.code_block = function(tokens, idx, options, env6, slf) {
      var token = tokens[idx];
      return "<pre" + slf.renderAttrs(token) + "><code>" + escapeHtml4(tokens[idx].content) + "</code></pre>\n";
    };
    default_rules.fence = function(tokens, idx, options, env6, slf) {
      var token = tokens[idx], info = token.info ? unescapeAll(token.info).trim() : "", langName = "", langAttrs = "", highlighted, i2, arr, tmpAttrs, tmpToken;
      if (info) {
        arr = info.split(/(\s+)/g);
        langName = arr[0];
        langAttrs = arr.slice(2).join("");
      }
      if (options.highlight) {
        highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml4(token.content);
      } else {
        highlighted = escapeHtml4(token.content);
      }
      if (highlighted.indexOf("<pre") === 0) {
        return highlighted + "\n";
      }
      if (info) {
        i2 = token.attrIndex("class");
        tmpAttrs = token.attrs ? token.attrs.slice() : [];
        if (i2 < 0) {
          tmpAttrs.push(["class", options.langPrefix + langName]);
        } else {
          tmpAttrs[i2] = tmpAttrs[i2].slice();
          tmpAttrs[i2][1] += " " + options.langPrefix + langName;
        }
        tmpToken = {
          attrs: tmpAttrs
        };
        return "<pre><code" + slf.renderAttrs(tmpToken) + ">" + highlighted + "</code></pre>\n";
      }
      return "<pre><code" + slf.renderAttrs(token) + ">" + highlighted + "</code></pre>\n";
    };
    default_rules.image = function(tokens, idx, options, env6, slf) {
      var token = tokens[idx];
      token.attrs[token.attrIndex("alt")][1] = slf.renderInlineAsText(token.children, options, env6);
      return slf.renderToken(tokens, idx, options);
    };
    default_rules.hardbreak = function(tokens, idx, options) {
      return options.xhtmlOut ? "<br />\n" : "<br>\n";
    };
    default_rules.softbreak = function(tokens, idx, options) {
      return options.breaks ? options.xhtmlOut ? "<br />\n" : "<br>\n" : "\n";
    };
    default_rules.text = function(tokens, idx) {
      return escapeHtml4(tokens[idx].content);
    };
    default_rules.html_block = function(tokens, idx) {
      return tokens[idx].content;
    };
    default_rules.html_inline = function(tokens, idx) {
      return tokens[idx].content;
    };
    function Renderer() {
      this.rules = assign2({}, default_rules);
    }
    Renderer.prototype.renderAttrs = function renderAttrs(token) {
      var i2, l, result;
      if (!token.attrs) {
        return "";
      }
      result = "";
      for (i2 = 0, l = token.attrs.length; i2 < l; i2++) {
        result += " " + escapeHtml4(token.attrs[i2][0]) + '="' + escapeHtml4(token.attrs[i2][1]) + '"';
      }
      return result;
    };
    Renderer.prototype.renderToken = function renderToken(tokens, idx, options) {
      var nextToken, result = "", needLf = false, token = tokens[idx];
      if (token.hidden) {
        return "";
      }
      if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {
        result += "\n";
      }
      result += (token.nesting === -1 ? "</" : "<") + token.tag;
      result += this.renderAttrs(token);
      if (token.nesting === 0 && options.xhtmlOut) {
        result += " /";
      }
      if (token.block) {
        needLf = true;
        if (token.nesting === 1) {
          if (idx + 1 < tokens.length) {
            nextToken = tokens[idx + 1];
            if (nextToken.type === "inline" || nextToken.hidden) {
              needLf = false;
            } else if (nextToken.nesting === -1 && nextToken.tag === token.tag) {
              needLf = false;
            }
          }
        }
      }
      result += needLf ? ">\n" : ">";
      return result;
    };
    Renderer.prototype.renderInline = function(tokens, options, env6) {
      var type2, result = "", rules = this.rules;
      for (var i2 = 0, len = tokens.length; i2 < len; i2++) {
        type2 = tokens[i2].type;
        if (typeof rules[type2] !== "undefined") {
          result += rules[type2](tokens, i2, options, env6, this);
        } else {
          result += this.renderToken(tokens, i2, options);
        }
      }
      return result;
    };
    Renderer.prototype.renderInlineAsText = function(tokens, options, env6) {
      var result = "";
      for (var i2 = 0, len = tokens.length; i2 < len; i2++) {
        if (tokens[i2].type === "text") {
          result += tokens[i2].content;
        } else if (tokens[i2].type === "image") {
          result += this.renderInlineAsText(tokens[i2].children, options, env6);
        } else if (tokens[i2].type === "softbreak") {
          result += "\n";
        }
      }
      return result;
    };
    Renderer.prototype.render = function(tokens, options, env6) {
      var i2, len, type2, result = "", rules = this.rules;
      for (i2 = 0, len = tokens.length; i2 < len; i2++) {
        type2 = tokens[i2].type;
        if (type2 === "inline") {
          result += this.renderInline(tokens[i2].children, options, env6);
        } else if (typeof rules[type2] !== "undefined") {
          result += rules[type2](tokens, i2, options, env6, this);
        } else {
          result += this.renderToken(tokens, i2, options, env6);
        }
      }
      return result;
    };
    module2.exports = Renderer;
  }
});

// ../../node_modules/markdown-it/lib/ruler.js
var require_ruler = __commonJS({
  "../../node_modules/markdown-it/lib/ruler.js"(exports2, module2) {
    "use strict";
    function Ruler() {
      this.__rules__ = [];
      this.__cache__ = null;
    }
    Ruler.prototype.__find__ = function(name3) {
      for (var i2 = 0; i2 < this.__rules__.length; i2++) {
        if (this.__rules__[i2].name === name3) {
          return i2;
        }
      }
      return -1;
    };
    Ruler.prototype.__compile__ = function() {
      var self2 = this;
      var chains = [""];
      self2.__rules__.forEach(function(rule) {
        if (!rule.enabled) {
          return;
        }
        rule.alt.forEach(function(altName) {
          if (chains.indexOf(altName) < 0) {
            chains.push(altName);
          }
        });
      });
      self2.__cache__ = {};
      chains.forEach(function(chain) {
        self2.__cache__[chain] = [];
        self2.__rules__.forEach(function(rule) {
          if (!rule.enabled) {
            return;
          }
          if (chain && rule.alt.indexOf(chain) < 0) {
            return;
          }
          self2.__cache__[chain].push(rule.fn);
        });
      });
    };
    Ruler.prototype.at = function(name3, fn, options) {
      var index4 = this.__find__(name3);
      var opt = options || {};
      if (index4 === -1) {
        throw new Error("Parser rule not found: " + name3);
      }
      this.__rules__[index4].fn = fn;
      this.__rules__[index4].alt = opt.alt || [];
      this.__cache__ = null;
    };
    Ruler.prototype.before = function(beforeName, ruleName, fn, options) {
      var index4 = this.__find__(beforeName);
      var opt = options || {};
      if (index4 === -1) {
        throw new Error("Parser rule not found: " + beforeName);
      }
      this.__rules__.splice(index4, 0, {
        name: ruleName,
        enabled: true,
        fn,
        alt: opt.alt || []
      });
      this.__cache__ = null;
    };
    Ruler.prototype.after = function(afterName, ruleName, fn, options) {
      var index4 = this.__find__(afterName);
      var opt = options || {};
      if (index4 === -1) {
        throw new Error("Parser rule not found: " + afterName);
      }
      this.__rules__.splice(index4 + 1, 0, {
        name: ruleName,
        enabled: true,
        fn,
        alt: opt.alt || []
      });
      this.__cache__ = null;
    };
    Ruler.prototype.push = function(ruleName, fn, options) {
      var opt = options || {};
      this.__rules__.push({
        name: ruleName,
        enabled: true,
        fn,
        alt: opt.alt || []
      });
      this.__cache__ = null;
    };
    Ruler.prototype.enable = function(list6, ignoreInvalid) {
      if (!Array.isArray(list6)) {
        list6 = [list6];
      }
      var result = [];
      list6.forEach(function(name3) {
        var idx = this.__find__(name3);
        if (idx < 0) {
          if (ignoreInvalid) {
            return;
          }
          throw new Error("Rules manager: invalid rule name " + name3);
        }
        this.__rules__[idx].enabled = true;
        result.push(name3);
      }, this);
      this.__cache__ = null;
      return result;
    };
    Ruler.prototype.enableOnly = function(list6, ignoreInvalid) {
      if (!Array.isArray(list6)) {
        list6 = [list6];
      }
      this.__rules__.forEach(function(rule) {
        rule.enabled = false;
      });
      this.enable(list6, ignoreInvalid);
    };
    Ruler.prototype.disable = function(list6, ignoreInvalid) {
      if (!Array.isArray(list6)) {
        list6 = [list6];
      }
      var result = [];
      list6.forEach(function(name3) {
        var idx = this.__find__(name3);
        if (idx < 0) {
          if (ignoreInvalid) {
            return;
          }
          throw new Error("Rules manager: invalid rule name " + name3);
        }
        this.__rules__[idx].enabled = false;
        result.push(name3);
      }, this);
      this.__cache__ = null;
      return result;
    };
    Ruler.prototype.getRules = function(chainName) {
      if (this.__cache__ === null) {
        this.__compile__();
      }
      return this.__cache__[chainName] || [];
    };
    module2.exports = Ruler;
  }
});

// ../../node_modules/markdown-it/lib/rules_core/normalize.js
var require_normalize = __commonJS({
  "../../node_modules/markdown-it/lib/rules_core/normalize.js"(exports2, module2) {
    "use strict";
    var NEWLINES_RE = /\r\n?|\n/g;
    var NULL_RE = /\0/g;
    module2.exports = function normalize6(state) {
      var str2;
      str2 = state.src.replace(NEWLINES_RE, "\n");
      str2 = str2.replace(NULL_RE, "\uFFFD");
      state.src = str2;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_core/block.js
var require_block = __commonJS({
  "../../node_modules/markdown-it/lib/rules_core/block.js"(exports2, module2) {
    "use strict";
    module2.exports = function block5(state) {
      var token;
      if (state.inlineMode) {
        token = new state.Token("inline", "", 0);
        token.content = state.src;
        token.map = [0, 1];
        token.children = [];
        state.tokens.push(token);
      } else {
        state.md.block.parse(state.src, state.md, state.env, state.tokens);
      }
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_core/inline.js
var require_inline = __commonJS({
  "../../node_modules/markdown-it/lib/rules_core/inline.js"(exports2, module2) {
    "use strict";
    module2.exports = function inline(state) {
      var tokens = state.tokens, tok, i2, l;
      for (i2 = 0, l = tokens.length; i2 < l; i2++) {
        tok = tokens[i2];
        if (tok.type === "inline") {
          state.md.inline.parse(tok.content, state.md, state.env, tok.children);
        }
      }
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_core/linkify.js
var require_linkify = __commonJS({
  "../../node_modules/markdown-it/lib/rules_core/linkify.js"(exports2, module2) {
    "use strict";
    var arrayReplaceAt = require_utils2().arrayReplaceAt;
    function isLinkOpen(str2) {
      return /^<a[>\s]/i.test(str2);
    }
    function isLinkClose(str2) {
      return /^<\/a\s*>/i.test(str2);
    }
    module2.exports = function linkify(state) {
      var i2, j, l, tokens, token, currentToken, nodes, ln, text7, pos, lastPos, level, htmlLinkLevel, url, fullUrl, urlText, blockTokens = state.tokens, links2;
      if (!state.md.options.linkify) {
        return;
      }
      for (j = 0, l = blockTokens.length; j < l; j++) {
        if (blockTokens[j].type !== "inline" || !state.md.linkify.pretest(blockTokens[j].content)) {
          continue;
        }
        tokens = blockTokens[j].children;
        htmlLinkLevel = 0;
        for (i2 = tokens.length - 1; i2 >= 0; i2--) {
          currentToken = tokens[i2];
          if (currentToken.type === "link_close") {
            i2--;
            while (tokens[i2].level !== currentToken.level && tokens[i2].type !== "link_open") {
              i2--;
            }
            continue;
          }
          if (currentToken.type === "html_inline") {
            if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {
              htmlLinkLevel--;
            }
            if (isLinkClose(currentToken.content)) {
              htmlLinkLevel++;
            }
          }
          if (htmlLinkLevel > 0) {
            continue;
          }
          if (currentToken.type === "text" && state.md.linkify.test(currentToken.content)) {
            text7 = currentToken.content;
            links2 = state.md.linkify.match(text7);
            nodes = [];
            level = currentToken.level;
            lastPos = 0;
            if (links2.length > 0 && links2[0].index === 0 && i2 > 0 && tokens[i2 - 1].type === "text_special") {
              links2 = links2.slice(1);
            }
            for (ln = 0; ln < links2.length; ln++) {
              url = links2[ln].url;
              fullUrl = state.md.normalizeLink(url);
              if (!state.md.validateLink(fullUrl)) {
                continue;
              }
              urlText = links2[ln].text;
              if (!links2[ln].schema) {
                urlText = state.md.normalizeLinkText("http://" + urlText).replace(/^http:\/\//, "");
              } else if (links2[ln].schema === "mailto:" && !/^mailto:/i.test(urlText)) {
                urlText = state.md.normalizeLinkText("mailto:" + urlText).replace(/^mailto:/, "");
              } else {
                urlText = state.md.normalizeLinkText(urlText);
              }
              pos = links2[ln].index;
              if (pos > lastPos) {
                token = new state.Token("text", "", 0);
                token.content = text7.slice(lastPos, pos);
                token.level = level;
                nodes.push(token);
              }
              token = new state.Token("link_open", "a", 1);
              token.attrs = [["href", fullUrl]];
              token.level = level++;
              token.markup = "linkify";
              token.info = "auto";
              nodes.push(token);
              token = new state.Token("text", "", 0);
              token.content = urlText;
              token.level = level;
              nodes.push(token);
              token = new state.Token("link_close", "a", -1);
              token.level = --level;
              token.markup = "linkify";
              token.info = "auto";
              nodes.push(token);
              lastPos = links2[ln].lastIndex;
            }
            if (lastPos < text7.length) {
              token = new state.Token("text", "", 0);
              token.content = text7.slice(lastPos);
              token.level = level;
              nodes.push(token);
            }
            blockTokens[j].children = tokens = arrayReplaceAt(tokens, i2, nodes);
          }
        }
      }
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_core/replacements.js
var require_replacements = __commonJS({
  "../../node_modules/markdown-it/lib/rules_core/replacements.js"(exports2, module2) {
    "use strict";
    var RARE_RE = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/;
    var SCOPED_ABBR_TEST_RE = /\((c|tm|r)\)/i;
    var SCOPED_ABBR_RE = /\((c|tm|r)\)/ig;
    var SCOPED_ABBR = {
      c: "\xA9",
      r: "\xAE",
      tm: "\u2122"
    };
    function replaceFn(match3, name3) {
      return SCOPED_ABBR[name3.toLowerCase()];
    }
    function replace_scoped(inlineTokens) {
      var i2, token, inside_autolink = 0;
      for (i2 = inlineTokens.length - 1; i2 >= 0; i2--) {
        token = inlineTokens[i2];
        if (token.type === "text" && !inside_autolink) {
          token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn);
        }
        if (token.type === "link_open" && token.info === "auto") {
          inside_autolink--;
        }
        if (token.type === "link_close" && token.info === "auto") {
          inside_autolink++;
        }
      }
    }
    function replace_rare(inlineTokens) {
      var i2, token, inside_autolink = 0;
      for (i2 = inlineTokens.length - 1; i2 >= 0; i2--) {
        token = inlineTokens[i2];
        if (token.type === "text" && !inside_autolink) {
          if (RARE_RE.test(token.content)) {
            token.content = token.content.replace(/\+-/g, "\xB1").replace(/\.{2,}/g, "\u2026").replace(/([?!])…/g, "$1..").replace(/([?!]){4,}/g, "$1$1$1").replace(/,{2,}/g, ",").replace(/(^|[^-])---(?=[^-]|$)/mg, "$1\u2014").replace(/(^|\s)--(?=\s|$)/mg, "$1\u2013").replace(/(^|[^-\s])--(?=[^-\s]|$)/mg, "$1\u2013");
          }
        }
        if (token.type === "link_open" && token.info === "auto") {
          inside_autolink--;
        }
        if (token.type === "link_close" && token.info === "auto") {
          inside_autolink++;
        }
      }
    }
    module2.exports = function replace(state) {
      var blkIdx;
      if (!state.md.options.typographer) {
        return;
      }
      for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {
        if (state.tokens[blkIdx].type !== "inline") {
          continue;
        }
        if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {
          replace_scoped(state.tokens[blkIdx].children);
        }
        if (RARE_RE.test(state.tokens[blkIdx].content)) {
          replace_rare(state.tokens[blkIdx].children);
        }
      }
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_core/smartquotes.js
var require_smartquotes = __commonJS({
  "../../node_modules/markdown-it/lib/rules_core/smartquotes.js"(exports2, module2) {
    "use strict";
    var isWhiteSpace = require_utils2().isWhiteSpace;
    var isPunctChar = require_utils2().isPunctChar;
    var isMdAsciiPunct = require_utils2().isMdAsciiPunct;
    var QUOTE_TEST_RE = /['"]/;
    var QUOTE_RE = /['"]/g;
    var APOSTROPHE = "\u2019";
    function replaceAt(str2, index4, ch) {
      return str2.slice(0, index4) + ch + str2.slice(index4 + 1);
    }
    function process_inlines(tokens, state) {
      var i2, token, text7, t2, pos, max, thisLevel, item, lastChar, nextChar, isLastPunctChar, isNextPunctChar, isLastWhiteSpace, isNextWhiteSpace, canOpen, canClose, j, isSingle, stack, openQuote, closeQuote;
      stack = [];
      for (i2 = 0; i2 < tokens.length; i2++) {
        token = tokens[i2];
        thisLevel = tokens[i2].level;
        for (j = stack.length - 1; j >= 0; j--) {
          if (stack[j].level <= thisLevel) {
            break;
          }
        }
        stack.length = j + 1;
        if (token.type !== "text") {
          continue;
        }
        text7 = token.content;
        pos = 0;
        max = text7.length;
        OUTER:
          while (pos < max) {
            QUOTE_RE.lastIndex = pos;
            t2 = QUOTE_RE.exec(text7);
            if (!t2) {
              break;
            }
            canOpen = canClose = true;
            pos = t2.index + 1;
            isSingle = t2[0] === "'";
            lastChar = 32;
            if (t2.index - 1 >= 0) {
              lastChar = text7.charCodeAt(t2.index - 1);
            } else {
              for (j = i2 - 1; j >= 0; j--) {
                if (tokens[j].type === "softbreak" || tokens[j].type === "hardbreak") break;
                if (!tokens[j].content) continue;
                lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1);
                break;
              }
            }
            nextChar = 32;
            if (pos < max) {
              nextChar = text7.charCodeAt(pos);
            } else {
              for (j = i2 + 1; j < tokens.length; j++) {
                if (tokens[j].type === "softbreak" || tokens[j].type === "hardbreak") break;
                if (!tokens[j].content) continue;
                nextChar = tokens[j].content.charCodeAt(0);
                break;
              }
            }
            isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));
            isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));
            isLastWhiteSpace = isWhiteSpace(lastChar);
            isNextWhiteSpace = isWhiteSpace(nextChar);
            if (isNextWhiteSpace) {
              canOpen = false;
            } else if (isNextPunctChar) {
              if (!(isLastWhiteSpace || isLastPunctChar)) {
                canOpen = false;
              }
            }
            if (isLastWhiteSpace) {
              canClose = false;
            } else if (isLastPunctChar) {
              if (!(isNextWhiteSpace || isNextPunctChar)) {
                canClose = false;
              }
            }
            if (nextChar === 34 && t2[0] === '"') {
              if (lastChar >= 48 && lastChar <= 57) {
                canClose = canOpen = false;
              }
            }
            if (canOpen && canClose) {
              canOpen = isLastPunctChar;
              canClose = isNextPunctChar;
            }
            if (!canOpen && !canClose) {
              if (isSingle) {
                token.content = replaceAt(token.content, t2.index, APOSTROPHE);
              }
              continue;
            }
            if (canClose) {
              for (j = stack.length - 1; j >= 0; j--) {
                item = stack[j];
                if (stack[j].level < thisLevel) {
                  break;
                }
                if (item.single === isSingle && stack[j].level === thisLevel) {
                  item = stack[j];
                  if (isSingle) {
                    openQuote = state.md.options.quotes[2];
                    closeQuote = state.md.options.quotes[3];
                  } else {
                    openQuote = state.md.options.quotes[0];
                    closeQuote = state.md.options.quotes[1];
                  }
                  token.content = replaceAt(token.content, t2.index, closeQuote);
                  tokens[item.token].content = replaceAt(
                    tokens[item.token].content,
                    item.pos,
                    openQuote
                  );
                  pos += closeQuote.length - 1;
                  if (item.token === i2) {
                    pos += openQuote.length - 1;
                  }
                  text7 = token.content;
                  max = text7.length;
                  stack.length = j;
                  continue OUTER;
                }
              }
            }
            if (canOpen) {
              stack.push({
                token: i2,
                pos: t2.index,
                single: isSingle,
                level: thisLevel
              });
            } else if (canClose && isSingle) {
              token.content = replaceAt(token.content, t2.index, APOSTROPHE);
            }
          }
      }
    }
    module2.exports = function smartquotes(state) {
      var blkIdx;
      if (!state.md.options.typographer) {
        return;
      }
      for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {
        if (state.tokens[blkIdx].type !== "inline" || !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {
          continue;
        }
        process_inlines(state.tokens[blkIdx].children, state);
      }
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_core/text_join.js
var require_text_join = __commonJS({
  "../../node_modules/markdown-it/lib/rules_core/text_join.js"(exports2, module2) {
    "use strict";
    module2.exports = function text_join(state) {
      var j, l, tokens, curr, max, last, blockTokens = state.tokens;
      for (j = 0, l = blockTokens.length; j < l; j++) {
        if (blockTokens[j].type !== "inline") continue;
        tokens = blockTokens[j].children;
        max = tokens.length;
        for (curr = 0; curr < max; curr++) {
          if (tokens[curr].type === "text_special") {
            tokens[curr].type = "text";
          }
        }
        for (curr = last = 0; curr < max; curr++) {
          if (tokens[curr].type === "text" && curr + 1 < max && tokens[curr + 1].type === "text") {
            tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;
          } else {
            if (curr !== last) {
              tokens[last] = tokens[curr];
            }
            last++;
          }
        }
        if (curr !== last) {
          tokens.length = last;
        }
      }
    };
  }
});

// ../../node_modules/markdown-it/lib/token.js
var require_token = __commonJS({
  "../../node_modules/markdown-it/lib/token.js"(exports2, module2) {
    "use strict";
    function Token2(type2, tag, nesting) {
      this.type = type2;
      this.tag = tag;
      this.attrs = null;
      this.map = null;
      this.nesting = nesting;
      this.level = 0;
      this.children = null;
      this.content = "";
      this.markup = "";
      this.info = "";
      this.meta = null;
      this.block = false;
      this.hidden = false;
    }
    Token2.prototype.attrIndex = function attrIndex(name3) {
      var attrs, i2, len;
      if (!this.attrs) {
        return -1;
      }
      attrs = this.attrs;
      for (i2 = 0, len = attrs.length; i2 < len; i2++) {
        if (attrs[i2][0] === name3) {
          return i2;
        }
      }
      return -1;
    };
    Token2.prototype.attrPush = function attrPush(attrData) {
      if (this.attrs) {
        this.attrs.push(attrData);
      } else {
        this.attrs = [attrData];
      }
    };
    Token2.prototype.attrSet = function attrSet(name3, value) {
      var idx = this.attrIndex(name3), attrData = [name3, value];
      if (idx < 0) {
        this.attrPush(attrData);
      } else {
        this.attrs[idx] = attrData;
      }
    };
    Token2.prototype.attrGet = function attrGet(name3) {
      var idx = this.attrIndex(name3), value = null;
      if (idx >= 0) {
        value = this.attrs[idx][1];
      }
      return value;
    };
    Token2.prototype.attrJoin = function attrJoin(name3, value) {
      var idx = this.attrIndex(name3);
      if (idx < 0) {
        this.attrPush([name3, value]);
      } else {
        this.attrs[idx][1] = this.attrs[idx][1] + " " + value;
      }
    };
    module2.exports = Token2;
  }
});

// ../../node_modules/markdown-it/lib/rules_core/state_core.js
var require_state_core = __commonJS({
  "../../node_modules/markdown-it/lib/rules_core/state_core.js"(exports2, module2) {
    "use strict";
    var Token2 = require_token();
    function StateCore(src, md, env6) {
      this.src = src;
      this.env = env6;
      this.tokens = [];
      this.inlineMode = false;
      this.md = md;
    }
    StateCore.prototype.Token = Token2;
    module2.exports = StateCore;
  }
});

// ../../node_modules/markdown-it/lib/parser_core.js
var require_parser_core = __commonJS({
  "../../node_modules/markdown-it/lib/parser_core.js"(exports2, module2) {
    "use strict";
    var Ruler = require_ruler();
    var _rules = [
      ["normalize", require_normalize()],
      ["block", require_block()],
      ["inline", require_inline()],
      ["linkify", require_linkify()],
      ["replacements", require_replacements()],
      ["smartquotes", require_smartquotes()],
      // `text_join` finds `text_special` tokens (for escape sequences)
      // and joins them with the rest of the text
      ["text_join", require_text_join()]
    ];
    function Core() {
      this.ruler = new Ruler();
      for (var i2 = 0; i2 < _rules.length; i2++) {
        this.ruler.push(_rules[i2][0], _rules[i2][1]);
      }
    }
    Core.prototype.process = function(state) {
      var i2, l, rules;
      rules = this.ruler.getRules("");
      for (i2 = 0, l = rules.length; i2 < l; i2++) {
        rules[i2](state);
      }
    };
    Core.prototype.State = require_state_core();
    module2.exports = Core;
  }
});

// ../../node_modules/markdown-it/lib/rules_block/table.js
var require_table = __commonJS({
  "../../node_modules/markdown-it/lib/rules_block/table.js"(exports2, module2) {
    "use strict";
    var isSpace = require_utils2().isSpace;
    function getLine2(state, line2) {
      var pos = state.bMarks[line2] + state.tShift[line2], max = state.eMarks[line2];
      return state.src.slice(pos, max);
    }
    function escapedSplit(str2) {
      var result = [], pos = 0, max = str2.length, ch, isEscaped2 = false, lastPos = 0, current2 = "";
      ch = str2.charCodeAt(pos);
      while (pos < max) {
        if (ch === 124) {
          if (!isEscaped2) {
            result.push(current2 + str2.substring(lastPos, pos));
            current2 = "";
            lastPos = pos + 1;
          } else {
            current2 += str2.substring(lastPos, pos - 1);
            lastPos = pos;
          }
        }
        isEscaped2 = ch === 92;
        pos++;
        ch = str2.charCodeAt(pos);
      }
      result.push(current2 + str2.substring(lastPos));
      return result;
    }
    module2.exports = function table5(state, startLine, endLine, silent) {
      var ch, lineText, pos, i2, l, nextLine, columns, columnCount, token, aligns, t2, tableLines, tbodyLines, oldParentType, terminate, terminatorRules, firstCh, secondCh;
      if (startLine + 2 > endLine) {
        return false;
      }
      nextLine = startLine + 1;
      if (state.sCount[nextLine] < state.blkIndent) {
        return false;
      }
      if (state.sCount[nextLine] - state.blkIndent >= 4) {
        return false;
      }
      pos = state.bMarks[nextLine] + state.tShift[nextLine];
      if (pos >= state.eMarks[nextLine]) {
        return false;
      }
      firstCh = state.src.charCodeAt(pos++);
      if (firstCh !== 124 && firstCh !== 45 && firstCh !== 58) {
        return false;
      }
      if (pos >= state.eMarks[nextLine]) {
        return false;
      }
      secondCh = state.src.charCodeAt(pos++);
      if (secondCh !== 124 && secondCh !== 45 && secondCh !== 58 && !isSpace(secondCh)) {
        return false;
      }
      if (firstCh === 45 && isSpace(secondCh)) {
        return false;
      }
      while (pos < state.eMarks[nextLine]) {
        ch = state.src.charCodeAt(pos);
        if (ch !== 124 && ch !== 45 && ch !== 58 && !isSpace(ch)) {
          return false;
        }
        pos++;
      }
      lineText = getLine2(state, startLine + 1);
      columns = lineText.split("|");
      aligns = [];
      for (i2 = 0; i2 < columns.length; i2++) {
        t2 = columns[i2].trim();
        if (!t2) {
          if (i2 === 0 || i2 === columns.length - 1) {
            continue;
          } else {
            return false;
          }
        }
        if (!/^:?-+:?$/.test(t2)) {
          return false;
        }
        if (t2.charCodeAt(t2.length - 1) === 58) {
          aligns.push(t2.charCodeAt(0) === 58 ? "center" : "right");
        } else if (t2.charCodeAt(0) === 58) {
          aligns.push("left");
        } else {
          aligns.push("");
        }
      }
      lineText = getLine2(state, startLine).trim();
      if (lineText.indexOf("|") === -1) {
        return false;
      }
      if (state.sCount[startLine] - state.blkIndent >= 4) {
        return false;
      }
      columns = escapedSplit(lineText);
      if (columns.length && columns[0] === "") columns.shift();
      if (columns.length && columns[columns.length - 1] === "") columns.pop();
      columnCount = columns.length;
      if (columnCount === 0 || columnCount !== aligns.length) {
        return false;
      }
      if (silent) {
        return true;
      }
      oldParentType = state.parentType;
      state.parentType = "table";
      terminatorRules = state.md.block.ruler.getRules("blockquote");
      token = state.push("table_open", "table", 1);
      token.map = tableLines = [startLine, 0];
      token = state.push("thead_open", "thead", 1);
      token.map = [startLine, startLine + 1];
      token = state.push("tr_open", "tr", 1);
      token.map = [startLine, startLine + 1];
      for (i2 = 0; i2 < columns.length; i2++) {
        token = state.push("th_open", "th", 1);
        if (aligns[i2]) {
          token.attrs = [["style", "text-align:" + aligns[i2]]];
        }
        token = state.push("inline", "", 0);
        token.content = columns[i2].trim();
        token.children = [];
        token = state.push("th_close", "th", -1);
      }
      token = state.push("tr_close", "tr", -1);
      token = state.push("thead_close", "thead", -1);
      for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {
        if (state.sCount[nextLine] < state.blkIndent) {
          break;
        }
        terminate = false;
        for (i2 = 0, l = terminatorRules.length; i2 < l; i2++) {
          if (terminatorRules[i2](state, nextLine, endLine, true)) {
            terminate = true;
            break;
          }
        }
        if (terminate) {
          break;
        }
        lineText = getLine2(state, nextLine).trim();
        if (!lineText) {
          break;
        }
        if (state.sCount[nextLine] - state.blkIndent >= 4) {
          break;
        }
        columns = escapedSplit(lineText);
        if (columns.length && columns[0] === "") columns.shift();
        if (columns.length && columns[columns.length - 1] === "") columns.pop();
        if (nextLine === startLine + 2) {
          token = state.push("tbody_open", "tbody", 1);
          token.map = tbodyLines = [startLine + 2, 0];
        }
        token = state.push("tr_open", "tr", 1);
        token.map = [nextLine, nextLine + 1];
        for (i2 = 0; i2 < columnCount; i2++) {
          token = state.push("td_open", "td", 1);
          if (aligns[i2]) {
            token.attrs = [["style", "text-align:" + aligns[i2]]];
          }
          token = state.push("inline", "", 0);
          token.content = columns[i2] ? columns[i2].trim() : "";
          token.children = [];
          token = state.push("td_close", "td", -1);
        }
        token = state.push("tr_close", "tr", -1);
      }
      if (tbodyLines) {
        token = state.push("tbody_close", "tbody", -1);
        tbodyLines[1] = nextLine;
      }
      token = state.push("table_close", "table", -1);
      tableLines[1] = nextLine;
      state.parentType = oldParentType;
      state.line = nextLine;
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_block/code.js
var require_code = __commonJS({
  "../../node_modules/markdown-it/lib/rules_block/code.js"(exports2, module2) {
    "use strict";
    module2.exports = function code7(state, startLine, endLine) {
      var nextLine, last, token;
      if (state.sCount[startLine] - state.blkIndent < 4) {
        return false;
      }
      last = nextLine = startLine + 1;
      while (nextLine < endLine) {
        if (state.isEmpty(nextLine)) {
          nextLine++;
          continue;
        }
        if (state.sCount[nextLine] - state.blkIndent >= 4) {
          nextLine++;
          last = nextLine;
          continue;
        }
        break;
      }
      state.line = last;
      token = state.push("code_block", "code", 0);
      token.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + "\n";
      token.map = [startLine, state.line];
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_block/fence.js
var require_fence = __commonJS({
  "../../node_modules/markdown-it/lib/rules_block/fence.js"(exports2, module2) {
    "use strict";
    module2.exports = function fence(state, startLine, endLine, silent) {
      var marker, len, params, nextLine, mem, token, markup, haveEndMarker = false, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine];
      if (state.sCount[startLine] - state.blkIndent >= 4) {
        return false;
      }
      if (pos + 3 > max) {
        return false;
      }
      marker = state.src.charCodeAt(pos);
      if (marker !== 126 && marker !== 96) {
        return false;
      }
      mem = pos;
      pos = state.skipChars(pos, marker);
      len = pos - mem;
      if (len < 3) {
        return false;
      }
      markup = state.src.slice(mem, pos);
      params = state.src.slice(pos, max);
      if (marker === 96) {
        if (params.indexOf(String.fromCharCode(marker)) >= 0) {
          return false;
        }
      }
      if (silent) {
        return true;
      }
      nextLine = startLine;
      for (; ; ) {
        nextLine++;
        if (nextLine >= endLine) {
          break;
        }
        pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];
        max = state.eMarks[nextLine];
        if (pos < max && state.sCount[nextLine] < state.blkIndent) {
          break;
        }
        if (state.src.charCodeAt(pos) !== marker) {
          continue;
        }
        if (state.sCount[nextLine] - state.blkIndent >= 4) {
          continue;
        }
        pos = state.skipChars(pos, marker);
        if (pos - mem < len) {
          continue;
        }
        pos = state.skipSpaces(pos);
        if (pos < max) {
          continue;
        }
        haveEndMarker = true;
        break;
      }
      len = state.sCount[startLine];
      state.line = nextLine + (haveEndMarker ? 1 : 0);
      token = state.push("fence", "code", 0);
      token.info = params;
      token.content = state.getLines(startLine + 1, nextLine, len, true);
      token.markup = markup;
      token.map = [startLine, state.line];
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_block/blockquote.js
var require_blockquote = __commonJS({
  "../../node_modules/markdown-it/lib/rules_block/blockquote.js"(exports2, module2) {
    "use strict";
    var isSpace = require_utils2().isSpace;
    module2.exports = function blockquote5(state, startLine, endLine, silent) {
      var adjustTab, ch, i2, initial, l, lastLineEmpty, lines, nextLine, offset, oldBMarks, oldBSCount, oldIndent, oldParentType, oldSCount, oldTShift, spaceAfterMarker, terminate, terminatorRules, token, isOutdented, oldLineMax = state.lineMax, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine];
      if (state.sCount[startLine] - state.blkIndent >= 4) {
        return false;
      }
      if (state.src.charCodeAt(pos) !== 62) {
        return false;
      }
      if (silent) {
        return true;
      }
      oldBMarks = [];
      oldBSCount = [];
      oldSCount = [];
      oldTShift = [];
      terminatorRules = state.md.block.ruler.getRules("blockquote");
      oldParentType = state.parentType;
      state.parentType = "blockquote";
      for (nextLine = startLine; nextLine < endLine; nextLine++) {
        isOutdented = state.sCount[nextLine] < state.blkIndent;
        pos = state.bMarks[nextLine] + state.tShift[nextLine];
        max = state.eMarks[nextLine];
        if (pos >= max) {
          break;
        }
        if (state.src.charCodeAt(pos++) === 62 && !isOutdented) {
          initial = state.sCount[nextLine] + 1;
          if (state.src.charCodeAt(pos) === 32) {
            pos++;
            initial++;
            adjustTab = false;
            spaceAfterMarker = true;
          } else if (state.src.charCodeAt(pos) === 9) {
            spaceAfterMarker = true;
            if ((state.bsCount[nextLine] + initial) % 4 === 3) {
              pos++;
              initial++;
              adjustTab = false;
            } else {
              adjustTab = true;
            }
          } else {
            spaceAfterMarker = false;
          }
          offset = initial;
          oldBMarks.push(state.bMarks[nextLine]);
          state.bMarks[nextLine] = pos;
          while (pos < max) {
            ch = state.src.charCodeAt(pos);
            if (isSpace(ch)) {
              if (ch === 9) {
                offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;
              } else {
                offset++;
              }
            } else {
              break;
            }
            pos++;
          }
          lastLineEmpty = pos >= max;
          oldBSCount.push(state.bsCount[nextLine]);
          state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);
          oldSCount.push(state.sCount[nextLine]);
          state.sCount[nextLine] = offset - initial;
          oldTShift.push(state.tShift[nextLine]);
          state.tShift[nextLine] = pos - state.bMarks[nextLine];
          continue;
        }
        if (lastLineEmpty) {
          break;
        }
        terminate = false;
        for (i2 = 0, l = terminatorRules.length; i2 < l; i2++) {
          if (terminatorRules[i2](state, nextLine, endLine, true)) {
            terminate = true;
            break;
          }
        }
        if (terminate) {
          state.lineMax = nextLine;
          if (state.blkIndent !== 0) {
            oldBMarks.push(state.bMarks[nextLine]);
            oldBSCount.push(state.bsCount[nextLine]);
            oldTShift.push(state.tShift[nextLine]);
            oldSCount.push(state.sCount[nextLine]);
            state.sCount[nextLine] -= state.blkIndent;
          }
          break;
        }
        oldBMarks.push(state.bMarks[nextLine]);
        oldBSCount.push(state.bsCount[nextLine]);
        oldTShift.push(state.tShift[nextLine]);
        oldSCount.push(state.sCount[nextLine]);
        state.sCount[nextLine] = -1;
      }
      oldIndent = state.blkIndent;
      state.blkIndent = 0;
      token = state.push("blockquote_open", "blockquote", 1);
      token.markup = ">";
      token.map = lines = [startLine, 0];
      state.md.block.tokenize(state, startLine, nextLine);
      token = state.push("blockquote_close", "blockquote", -1);
      token.markup = ">";
      state.lineMax = oldLineMax;
      state.parentType = oldParentType;
      lines[1] = state.line;
      for (i2 = 0; i2 < oldTShift.length; i2++) {
        state.bMarks[i2 + startLine] = oldBMarks[i2];
        state.tShift[i2 + startLine] = oldTShift[i2];
        state.sCount[i2 + startLine] = oldSCount[i2];
        state.bsCount[i2 + startLine] = oldBSCount[i2];
      }
      state.blkIndent = oldIndent;
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_block/hr.js
var require_hr = __commonJS({
  "../../node_modules/markdown-it/lib/rules_block/hr.js"(exports2, module2) {
    "use strict";
    var isSpace = require_utils2().isSpace;
    module2.exports = function hr2(state, startLine, endLine, silent) {
      var marker, cnt, ch, token, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine];
      if (state.sCount[startLine] - state.blkIndent >= 4) {
        return false;
      }
      marker = state.src.charCodeAt(pos++);
      if (marker !== 42 && marker !== 45 && marker !== 95) {
        return false;
      }
      cnt = 1;
      while (pos < max) {
        ch = state.src.charCodeAt(pos++);
        if (ch !== marker && !isSpace(ch)) {
          return false;
        }
        if (ch === marker) {
          cnt++;
        }
      }
      if (cnt < 3) {
        return false;
      }
      if (silent) {
        return true;
      }
      state.line = startLine + 1;
      token = state.push("hr", "hr", 0);
      token.map = [startLine, state.line];
      token.markup = Array(cnt + 1).join(String.fromCharCode(marker));
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_block/list.js
var require_list2 = __commonJS({
  "../../node_modules/markdown-it/lib/rules_block/list.js"(exports2, module2) {
    "use strict";
    var isSpace = require_utils2().isSpace;
    function skipBulletListMarker(state, startLine) {
      var marker, pos, max, ch;
      pos = state.bMarks[startLine] + state.tShift[startLine];
      max = state.eMarks[startLine];
      marker = state.src.charCodeAt(pos++);
      if (marker !== 42 && marker !== 45 && marker !== 43) {
        return -1;
      }
      if (pos < max) {
        ch = state.src.charCodeAt(pos);
        if (!isSpace(ch)) {
          return -1;
        }
      }
      return pos;
    }
    function skipOrderedListMarker(state, startLine) {
      var ch, start = state.bMarks[startLine] + state.tShift[startLine], pos = start, max = state.eMarks[startLine];
      if (pos + 1 >= max) {
        return -1;
      }
      ch = state.src.charCodeAt(pos++);
      if (ch < 48 || ch > 57) {
        return -1;
      }
      for (; ; ) {
        if (pos >= max) {
          return -1;
        }
        ch = state.src.charCodeAt(pos++);
        if (ch >= 48 && ch <= 57) {
          if (pos - start >= 10) {
            return -1;
          }
          continue;
        }
        if (ch === 41 || ch === 46) {
          break;
        }
        return -1;
      }
      if (pos < max) {
        ch = state.src.charCodeAt(pos);
        if (!isSpace(ch)) {
          return -1;
        }
      }
      return pos;
    }
    function markTightParagraphs(state, idx) {
      var i2, l, level = state.level + 2;
      for (i2 = idx + 2, l = state.tokens.length - 2; i2 < l; i2++) {
        if (state.tokens[i2].level === level && state.tokens[i2].type === "paragraph_open") {
          state.tokens[i2 + 2].hidden = true;
          state.tokens[i2].hidden = true;
          i2 += 2;
        }
      }
    }
    module2.exports = function list6(state, startLine, endLine, silent) {
      var ch, contentStart, i2, indent2, indentAfterMarker, initial, isOrdered, itemLines, l, listLines, listTokIdx, markerCharCode, markerValue, max, offset, oldListIndent, oldParentType, oldSCount, oldTShift, oldTight, pos, posAfterMarker, prevEmptyEnd, start, terminate, terminatorRules, token, nextLine = startLine, isTerminatingParagraph = false, tight = true;
      if (state.sCount[nextLine] - state.blkIndent >= 4) {
        return false;
      }
      if (state.listIndent >= 0 && state.sCount[nextLine] - state.listIndent >= 4 && state.sCount[nextLine] < state.blkIndent) {
        return false;
      }
      if (silent && state.parentType === "paragraph") {
        if (state.sCount[nextLine] >= state.blkIndent) {
          isTerminatingParagraph = true;
        }
      }
      if ((posAfterMarker = skipOrderedListMarker(state, nextLine)) >= 0) {
        isOrdered = true;
        start = state.bMarks[nextLine] + state.tShift[nextLine];
        markerValue = Number(state.src.slice(start, posAfterMarker - 1));
        if (isTerminatingParagraph && markerValue !== 1) return false;
      } else if ((posAfterMarker = skipBulletListMarker(state, nextLine)) >= 0) {
        isOrdered = false;
      } else {
        return false;
      }
      if (isTerminatingParagraph) {
        if (state.skipSpaces(posAfterMarker) >= state.eMarks[nextLine]) return false;
      }
      if (silent) {
        return true;
      }
      markerCharCode = state.src.charCodeAt(posAfterMarker - 1);
      listTokIdx = state.tokens.length;
      if (isOrdered) {
        token = state.push("ordered_list_open", "ol", 1);
        if (markerValue !== 1) {
          token.attrs = [["start", markerValue]];
        }
      } else {
        token = state.push("bullet_list_open", "ul", 1);
      }
      token.map = listLines = [nextLine, 0];
      token.markup = String.fromCharCode(markerCharCode);
      prevEmptyEnd = false;
      terminatorRules = state.md.block.ruler.getRules("list");
      oldParentType = state.parentType;
      state.parentType = "list";
      while (nextLine < endLine) {
        pos = posAfterMarker;
        max = state.eMarks[nextLine];
        initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[nextLine] + state.tShift[nextLine]);
        while (pos < max) {
          ch = state.src.charCodeAt(pos);
          if (ch === 9) {
            offset += 4 - (offset + state.bsCount[nextLine]) % 4;
          } else if (ch === 32) {
            offset++;
          } else {
            break;
          }
          pos++;
        }
        contentStart = pos;
        if (contentStart >= max) {
          indentAfterMarker = 1;
        } else {
          indentAfterMarker = offset - initial;
        }
        if (indentAfterMarker > 4) {
          indentAfterMarker = 1;
        }
        indent2 = initial + indentAfterMarker;
        token = state.push("list_item_open", "li", 1);
        token.markup = String.fromCharCode(markerCharCode);
        token.map = itemLines = [nextLine, 0];
        if (isOrdered) {
          token.info = state.src.slice(start, posAfterMarker - 1);
        }
        oldTight = state.tight;
        oldTShift = state.tShift[nextLine];
        oldSCount = state.sCount[nextLine];
        oldListIndent = state.listIndent;
        state.listIndent = state.blkIndent;
        state.blkIndent = indent2;
        state.tight = true;
        state.tShift[nextLine] = contentStart - state.bMarks[nextLine];
        state.sCount[nextLine] = offset;
        if (contentStart >= max && state.isEmpty(nextLine + 1)) {
          state.line = Math.min(state.line + 2, endLine);
        } else {
          state.md.block.tokenize(state, nextLine, endLine, true);
        }
        if (!state.tight || prevEmptyEnd) {
          tight = false;
        }
        prevEmptyEnd = state.line - nextLine > 1 && state.isEmpty(state.line - 1);
        state.blkIndent = state.listIndent;
        state.listIndent = oldListIndent;
        state.tShift[nextLine] = oldTShift;
        state.sCount[nextLine] = oldSCount;
        state.tight = oldTight;
        token = state.push("list_item_close", "li", -1);
        token.markup = String.fromCharCode(markerCharCode);
        nextLine = state.line;
        itemLines[1] = nextLine;
        if (nextLine >= endLine) {
          break;
        }
        if (state.sCount[nextLine] < state.blkIndent) {
          break;
        }
        if (state.sCount[nextLine] - state.blkIndent >= 4) {
          break;
        }
        terminate = false;
        for (i2 = 0, l = terminatorRules.length; i2 < l; i2++) {
          if (terminatorRules[i2](state, nextLine, endLine, true)) {
            terminate = true;
            break;
          }
        }
        if (terminate) {
          break;
        }
        if (isOrdered) {
          posAfterMarker = skipOrderedListMarker(state, nextLine);
          if (posAfterMarker < 0) {
            break;
          }
          start = state.bMarks[nextLine] + state.tShift[nextLine];
        } else {
          posAfterMarker = skipBulletListMarker(state, nextLine);
          if (posAfterMarker < 0) {
            break;
          }
        }
        if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) {
          break;
        }
      }
      if (isOrdered) {
        token = state.push("ordered_list_close", "ol", -1);
      } else {
        token = state.push("bullet_list_close", "ul", -1);
      }
      token.markup = String.fromCharCode(markerCharCode);
      listLines[1] = nextLine;
      state.line = nextLine;
      state.parentType = oldParentType;
      if (tight) {
        markTightParagraphs(state, listTokIdx);
      }
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_block/reference.js
var require_reference = __commonJS({
  "../../node_modules/markdown-it/lib/rules_block/reference.js"(exports2, module2) {
    "use strict";
    var normalizeReference = require_utils2().normalizeReference;
    var isSpace = require_utils2().isSpace;
    module2.exports = function reference(state, startLine, _endLine, silent) {
      var ch, destEndPos, destEndLineNo, endLine, href, i2, l, label, labelEnd, oldParentType, res, start, str2, terminate, terminatorRules, title, lines = 0, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine], nextLine = startLine + 1;
      if (state.sCount[startLine] - state.blkIndent >= 4) {
        return false;
      }
      if (state.src.charCodeAt(pos) !== 91) {
        return false;
      }
      while (++pos < max) {
        if (state.src.charCodeAt(pos) === 93 && state.src.charCodeAt(pos - 1) !== 92) {
          if (pos + 1 === max) {
            return false;
          }
          if (state.src.charCodeAt(pos + 1) !== 58) {
            return false;
          }
          break;
        }
      }
      endLine = state.lineMax;
      terminatorRules = state.md.block.ruler.getRules("reference");
      oldParentType = state.parentType;
      state.parentType = "reference";
      for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
        if (state.sCount[nextLine] - state.blkIndent > 3) {
          continue;
        }
        if (state.sCount[nextLine] < 0) {
          continue;
        }
        terminate = false;
        for (i2 = 0, l = terminatorRules.length; i2 < l; i2++) {
          if (terminatorRules[i2](state, nextLine, endLine, true)) {
            terminate = true;
            break;
          }
        }
        if (terminate) {
          break;
        }
      }
      str2 = state.getLines(startLine, nextLine, state.blkIndent, false).trim();
      max = str2.length;
      for (pos = 1; pos < max; pos++) {
        ch = str2.charCodeAt(pos);
        if (ch === 91) {
          return false;
        } else if (ch === 93) {
          labelEnd = pos;
          break;
        } else if (ch === 10) {
          lines++;
        } else if (ch === 92) {
          pos++;
          if (pos < max && str2.charCodeAt(pos) === 10) {
            lines++;
          }
        }
      }
      if (labelEnd < 0 || str2.charCodeAt(labelEnd + 1) !== 58) {
        return false;
      }
      for (pos = labelEnd + 2; pos < max; pos++) {
        ch = str2.charCodeAt(pos);
        if (ch === 10) {
          lines++;
        } else if (isSpace(ch)) {
        } else {
          break;
        }
      }
      res = state.md.helpers.parseLinkDestination(str2, pos, max);
      if (!res.ok) {
        return false;
      }
      href = state.md.normalizeLink(res.str);
      if (!state.md.validateLink(href)) {
        return false;
      }
      pos = res.pos;
      lines += res.lines;
      destEndPos = pos;
      destEndLineNo = lines;
      start = pos;
      for (; pos < max; pos++) {
        ch = str2.charCodeAt(pos);
        if (ch === 10) {
          lines++;
        } else if (isSpace(ch)) {
        } else {
          break;
        }
      }
      res = state.md.helpers.parseLinkTitle(str2, pos, max);
      if (pos < max && start !== pos && res.ok) {
        title = res.str;
        pos = res.pos;
        lines += res.lines;
      } else {
        title = "";
        pos = destEndPos;
        lines = destEndLineNo;
      }
      while (pos < max) {
        ch = str2.charCodeAt(pos);
        if (!isSpace(ch)) {
          break;
        }
        pos++;
      }
      if (pos < max && str2.charCodeAt(pos) !== 10) {
        if (title) {
          title = "";
          pos = destEndPos;
          lines = destEndLineNo;
          while (pos < max) {
            ch = str2.charCodeAt(pos);
            if (!isSpace(ch)) {
              break;
            }
            pos++;
          }
        }
      }
      if (pos < max && str2.charCodeAt(pos) !== 10) {
        return false;
      }
      label = normalizeReference(str2.slice(1, labelEnd));
      if (!label) {
        return false;
      }
      if (silent) {
        return true;
      }
      if (typeof state.env.references === "undefined") {
        state.env.references = {};
      }
      if (typeof state.env.references[label] === "undefined") {
        state.env.references[label] = { title, href };
      }
      state.parentType = oldParentType;
      state.line = startLine + lines + 1;
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/common/html_blocks.js
var require_html_blocks = __commonJS({
  "../../node_modules/markdown-it/lib/common/html_blocks.js"(exports2, module2) {
    "use strict";
    module2.exports = [
      "address",
      "article",
      "aside",
      "base",
      "basefont",
      "blockquote",
      "body",
      "caption",
      "center",
      "col",
      "colgroup",
      "dd",
      "details",
      "dialog",
      "dir",
      "div",
      "dl",
      "dt",
      "fieldset",
      "figcaption",
      "figure",
      "footer",
      "form",
      "frame",
      "frameset",
      "h1",
      "h2",
      "h3",
      "h4",
      "h5",
      "h6",
      "head",
      "header",
      "hr",
      "html",
      "iframe",
      "legend",
      "li",
      "link",
      "main",
      "menu",
      "menuitem",
      "nav",
      "noframes",
      "ol",
      "optgroup",
      "option",
      "p",
      "param",
      "section",
      "source",
      "summary",
      "table",
      "tbody",
      "td",
      "tfoot",
      "th",
      "thead",
      "title",
      "tr",
      "track",
      "ul"
    ];
  }
});

// ../../node_modules/markdown-it/lib/common/html_re.js
var require_html_re = __commonJS({
  "../../node_modules/markdown-it/lib/common/html_re.js"(exports2, module2) {
    "use strict";
    var attr_name = "[a-zA-Z_:][a-zA-Z0-9:._-]*";
    var unquoted = "[^\"'=<>`\\x00-\\x20]+";
    var single_quoted = "'[^']*'";
    var double_quoted = '"[^"]*"';
    var attr_value = "(?:" + unquoted + "|" + single_quoted + "|" + double_quoted + ")";
    var attribute2 = "(?:\\s+" + attr_name + "(?:\\s*=\\s*" + attr_value + ")?)";
    var open_tag = "<[A-Za-z][A-Za-z0-9\\-]*" + attribute2 + "*\\s*\\/?>";
    var close_tag = "<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>";
    var comment7 = "<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->";
    var processing = "<[?][\\s\\S]*?[?]>";
    var declaration = "<![A-Z]+\\s+[^>]*>";
    var cdata = "<!\\[CDATA\\[[\\s\\S]*?\\]\\]>";
    var HTML_TAG_RE = new RegExp("^(?:" + open_tag + "|" + close_tag + "|" + comment7 + "|" + processing + "|" + declaration + "|" + cdata + ")");
    var HTML_OPEN_CLOSE_TAG_RE = new RegExp("^(?:" + open_tag + "|" + close_tag + ")");
    module2.exports.HTML_TAG_RE = HTML_TAG_RE;
    module2.exports.HTML_OPEN_CLOSE_TAG_RE = HTML_OPEN_CLOSE_TAG_RE;
  }
});

// ../../node_modules/markdown-it/lib/rules_block/html_block.js
var require_html_block = __commonJS({
  "../../node_modules/markdown-it/lib/rules_block/html_block.js"(exports2, module2) {
    "use strict";
    var block_names = require_html_blocks();
    var HTML_OPEN_CLOSE_TAG_RE = require_html_re().HTML_OPEN_CLOSE_TAG_RE;
    var HTML_SEQUENCES = [
      [/^<(script|pre|style|textarea)(?=(\s|>|$))/i, /<\/(script|pre|style|textarea)>/i, true],
      [/^<!--/, /-->/, true],
      [/^<\?/, /\?>/, true],
      [/^<![A-Z]/, />/, true],
      [/^<!\[CDATA\[/, /\]\]>/, true],
      [new RegExp("^</?(" + block_names.join("|") + ")(?=(\\s|/?>|$))", "i"), /^$/, true],
      [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + "\\s*$"), /^$/, false]
    ];
    module2.exports = function html_block(state, startLine, endLine, silent) {
      var i2, nextLine, token, lineText, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine];
      if (state.sCount[startLine] - state.blkIndent >= 4) {
        return false;
      }
      if (!state.md.options.html) {
        return false;
      }
      if (state.src.charCodeAt(pos) !== 60) {
        return false;
      }
      lineText = state.src.slice(pos, max);
      for (i2 = 0; i2 < HTML_SEQUENCES.length; i2++) {
        if (HTML_SEQUENCES[i2][0].test(lineText)) {
          break;
        }
      }
      if (i2 === HTML_SEQUENCES.length) {
        return false;
      }
      if (silent) {
        return HTML_SEQUENCES[i2][2];
      }
      nextLine = startLine + 1;
      if (!HTML_SEQUENCES[i2][1].test(lineText)) {
        for (; nextLine < endLine; nextLine++) {
          if (state.sCount[nextLine] < state.blkIndent) {
            break;
          }
          pos = state.bMarks[nextLine] + state.tShift[nextLine];
          max = state.eMarks[nextLine];
          lineText = state.src.slice(pos, max);
          if (HTML_SEQUENCES[i2][1].test(lineText)) {
            if (lineText.length !== 0) {
              nextLine++;
            }
            break;
          }
        }
      }
      state.line = nextLine;
      token = state.push("html_block", "", 0);
      token.map = [startLine, nextLine];
      token.content = state.getLines(startLine, nextLine, state.blkIndent, true);
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_block/heading.js
var require_heading = __commonJS({
  "../../node_modules/markdown-it/lib/rules_block/heading.js"(exports2, module2) {
    "use strict";
    var isSpace = require_utils2().isSpace;
    module2.exports = function heading6(state, startLine, endLine, silent) {
      var ch, level, tmp, token, pos = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine];
      if (state.sCount[startLine] - state.blkIndent >= 4) {
        return false;
      }
      ch = state.src.charCodeAt(pos);
      if (ch !== 35 || pos >= max) {
        return false;
      }
      level = 1;
      ch = state.src.charCodeAt(++pos);
      while (ch === 35 && pos < max && level <= 6) {
        level++;
        ch = state.src.charCodeAt(++pos);
      }
      if (level > 6 || pos < max && !isSpace(ch)) {
        return false;
      }
      if (silent) {
        return true;
      }
      max = state.skipSpacesBack(max, pos);
      tmp = state.skipCharsBack(max, 35, pos);
      if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {
        max = tmp;
      }
      state.line = startLine + 1;
      token = state.push("heading_open", "h" + String(level), 1);
      token.markup = "########".slice(0, level);
      token.map = [startLine, state.line];
      token = state.push("inline", "", 0);
      token.content = state.src.slice(pos, max).trim();
      token.map = [startLine, state.line];
      token.children = [];
      token = state.push("heading_close", "h" + String(level), -1);
      token.markup = "########".slice(0, level);
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_block/lheading.js
var require_lheading = __commonJS({
  "../../node_modules/markdown-it/lib/rules_block/lheading.js"(exports2, module2) {
    "use strict";
    module2.exports = function lheading(state, startLine, endLine) {
      var content3, terminate, i2, l, token, pos, max, level, marker, nextLine = startLine + 1, oldParentType, terminatorRules = state.md.block.ruler.getRules("paragraph");
      if (state.sCount[startLine] - state.blkIndent >= 4) {
        return false;
      }
      oldParentType = state.parentType;
      state.parentType = "paragraph";
      for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
        if (state.sCount[nextLine] - state.blkIndent > 3) {
          continue;
        }
        if (state.sCount[nextLine] >= state.blkIndent) {
          pos = state.bMarks[nextLine] + state.tShift[nextLine];
          max = state.eMarks[nextLine];
          if (pos < max) {
            marker = state.src.charCodeAt(pos);
            if (marker === 45 || marker === 61) {
              pos = state.skipChars(pos, marker);
              pos = state.skipSpaces(pos);
              if (pos >= max) {
                level = marker === 61 ? 1 : 2;
                break;
              }
            }
          }
        }
        if (state.sCount[nextLine] < 0) {
          continue;
        }
        terminate = false;
        for (i2 = 0, l = terminatorRules.length; i2 < l; i2++) {
          if (terminatorRules[i2](state, nextLine, endLine, true)) {
            terminate = true;
            break;
          }
        }
        if (terminate) {
          break;
        }
      }
      if (!level) {
        return false;
      }
      content3 = state.getLines(startLine, nextLine, state.blkIndent, false).trim();
      state.line = nextLine + 1;
      token = state.push("heading_open", "h" + String(level), 1);
      token.markup = String.fromCharCode(marker);
      token.map = [startLine, state.line];
      token = state.push("inline", "", 0);
      token.content = content3;
      token.map = [startLine, state.line - 1];
      token.children = [];
      token = state.push("heading_close", "h" + String(level), -1);
      token.markup = String.fromCharCode(marker);
      state.parentType = oldParentType;
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_block/paragraph.js
var require_paragraph = __commonJS({
  "../../node_modules/markdown-it/lib/rules_block/paragraph.js"(exports2, module2) {
    "use strict";
    module2.exports = function paragraph4(state, startLine, endLine) {
      var content3, terminate, i2, l, token, oldParentType, nextLine = startLine + 1, terminatorRules = state.md.block.ruler.getRules("paragraph");
      oldParentType = state.parentType;
      state.parentType = "paragraph";
      for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
        if (state.sCount[nextLine] - state.blkIndent > 3) {
          continue;
        }
        if (state.sCount[nextLine] < 0) {
          continue;
        }
        terminate = false;
        for (i2 = 0, l = terminatorRules.length; i2 < l; i2++) {
          if (terminatorRules[i2](state, nextLine, endLine, true)) {
            terminate = true;
            break;
          }
        }
        if (terminate) {
          break;
        }
      }
      content3 = state.getLines(startLine, nextLine, state.blkIndent, false).trim();
      state.line = nextLine;
      token = state.push("paragraph_open", "p", 1);
      token.map = [startLine, state.line];
      token = state.push("inline", "", 0);
      token.content = content3;
      token.map = [startLine, state.line];
      token.children = [];
      token = state.push("paragraph_close", "p", -1);
      state.parentType = oldParentType;
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_block/state_block.js
var require_state_block = __commonJS({
  "../../node_modules/markdown-it/lib/rules_block/state_block.js"(exports2, module2) {
    "use strict";
    var Token2 = require_token();
    var isSpace = require_utils2().isSpace;
    function StateBlock(src, md, env6, tokens) {
      var ch, s5, start, pos, len, indent2, offset, indent_found;
      this.src = src;
      this.md = md;
      this.env = env6;
      this.tokens = tokens;
      this.bMarks = [];
      this.eMarks = [];
      this.tShift = [];
      this.sCount = [];
      this.bsCount = [];
      this.blkIndent = 0;
      this.line = 0;
      this.lineMax = 0;
      this.tight = false;
      this.ddIndent = -1;
      this.listIndent = -1;
      this.parentType = "root";
      this.level = 0;
      this.result = "";
      s5 = this.src;
      indent_found = false;
      for (start = pos = indent2 = offset = 0, len = s5.length; pos < len; pos++) {
        ch = s5.charCodeAt(pos);
        if (!indent_found) {
          if (isSpace(ch)) {
            indent2++;
            if (ch === 9) {
              offset += 4 - offset % 4;
            } else {
              offset++;
            }
            continue;
          } else {
            indent_found = true;
          }
        }
        if (ch === 10 || pos === len - 1) {
          if (ch !== 10) {
            pos++;
          }
          this.bMarks.push(start);
          this.eMarks.push(pos);
          this.tShift.push(indent2);
          this.sCount.push(offset);
          this.bsCount.push(0);
          indent_found = false;
          indent2 = 0;
          offset = 0;
          start = pos + 1;
        }
      }
      this.bMarks.push(s5.length);
      this.eMarks.push(s5.length);
      this.tShift.push(0);
      this.sCount.push(0);
      this.bsCount.push(0);
      this.lineMax = this.bMarks.length - 1;
    }
    StateBlock.prototype.push = function(type2, tag, nesting) {
      var token = new Token2(type2, tag, nesting);
      token.block = true;
      if (nesting < 0) this.level--;
      token.level = this.level;
      if (nesting > 0) this.level++;
      this.tokens.push(token);
      return token;
    };
    StateBlock.prototype.isEmpty = function isEmpty(line2) {
      return this.bMarks[line2] + this.tShift[line2] >= this.eMarks[line2];
    };
    StateBlock.prototype.skipEmptyLines = function skipEmptyLines(from4) {
      for (var max = this.lineMax; from4 < max; from4++) {
        if (this.bMarks[from4] + this.tShift[from4] < this.eMarks[from4]) {
          break;
        }
      }
      return from4;
    };
    StateBlock.prototype.skipSpaces = function skipSpaces(pos) {
      var ch;
      for (var max = this.src.length; pos < max; pos++) {
        ch = this.src.charCodeAt(pos);
        if (!isSpace(ch)) {
          break;
        }
      }
      return pos;
    };
    StateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) {
      if (pos <= min) {
        return pos;
      }
      while (pos > min) {
        if (!isSpace(this.src.charCodeAt(--pos))) {
          return pos + 1;
        }
      }
      return pos;
    };
    StateBlock.prototype.skipChars = function skipChars(pos, code7) {
      for (var max = this.src.length; pos < max; pos++) {
        if (this.src.charCodeAt(pos) !== code7) {
          break;
        }
      }
      return pos;
    };
    StateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code7, min) {
      if (pos <= min) {
        return pos;
      }
      while (pos > min) {
        if (code7 !== this.src.charCodeAt(--pos)) {
          return pos + 1;
        }
      }
      return pos;
    };
    StateBlock.prototype.getLines = function getLines(begin, end, indent2, keepLastLF) {
      var i2, lineIndent, ch, first2, last, queue, lineStart, line2 = begin;
      if (begin >= end) {
        return "";
      }
      queue = new Array(end - begin);
      for (i2 = 0; line2 < end; line2++, i2++) {
        lineIndent = 0;
        lineStart = first2 = this.bMarks[line2];
        if (line2 + 1 < end || keepLastLF) {
          last = this.eMarks[line2] + 1;
        } else {
          last = this.eMarks[line2];
        }
        while (first2 < last && lineIndent < indent2) {
          ch = this.src.charCodeAt(first2);
          if (isSpace(ch)) {
            if (ch === 9) {
              lineIndent += 4 - (lineIndent + this.bsCount[line2]) % 4;
            } else {
              lineIndent++;
            }
          } else if (first2 - lineStart < this.tShift[line2]) {
            lineIndent++;
          } else {
            break;
          }
          first2++;
        }
        if (lineIndent > indent2) {
          queue[i2] = new Array(lineIndent - indent2 + 1).join(" ") + this.src.slice(first2, last);
        } else {
          queue[i2] = this.src.slice(first2, last);
        }
      }
      return queue.join("");
    };
    StateBlock.prototype.Token = Token2;
    module2.exports = StateBlock;
  }
});

// ../../node_modules/markdown-it/lib/parser_block.js
var require_parser_block = __commonJS({
  "../../node_modules/markdown-it/lib/parser_block.js"(exports2, module2) {
    "use strict";
    var Ruler = require_ruler();
    var _rules = [
      // First 2 params - rule name & source. Secondary array - list of rules,
      // which can be terminated by this one.
      ["table", require_table(), ["paragraph", "reference"]],
      ["code", require_code()],
      ["fence", require_fence(), ["paragraph", "reference", "blockquote", "list"]],
      ["blockquote", require_blockquote(), ["paragraph", "reference", "blockquote", "list"]],
      ["hr", require_hr(), ["paragraph", "reference", "blockquote", "list"]],
      ["list", require_list2(), ["paragraph", "reference", "blockquote"]],
      ["reference", require_reference()],
      ["html_block", require_html_block(), ["paragraph", "reference", "blockquote"]],
      ["heading", require_heading(), ["paragraph", "reference", "blockquote"]],
      ["lheading", require_lheading()],
      ["paragraph", require_paragraph()]
    ];
    function ParserBlock() {
      this.ruler = new Ruler();
      for (var i2 = 0; i2 < _rules.length; i2++) {
        this.ruler.push(_rules[i2][0], _rules[i2][1], { alt: (_rules[i2][2] || []).slice() });
      }
    }
    ParserBlock.prototype.tokenize = function(state, startLine, endLine) {
      var ok3, i2, prevLine, rules = this.ruler.getRules(""), len = rules.length, line2 = startLine, hasEmptyLines = false, maxNesting = state.md.options.maxNesting;
      while (line2 < endLine) {
        state.line = line2 = state.skipEmptyLines(line2);
        if (line2 >= endLine) {
          break;
        }
        if (state.sCount[line2] < state.blkIndent) {
          break;
        }
        if (state.level >= maxNesting) {
          state.line = endLine;
          break;
        }
        prevLine = state.line;
        for (i2 = 0; i2 < len; i2++) {
          ok3 = rules[i2](state, line2, endLine, false);
          if (ok3) {
            if (prevLine >= state.line) {
              throw new Error("block rule didn't increment state.line");
            }
            break;
          }
        }
        if (!ok3) throw new Error("none of the block rules matched");
        state.tight = !hasEmptyLines;
        if (state.isEmpty(state.line - 1)) {
          hasEmptyLines = true;
        }
        line2 = state.line;
        if (line2 < endLine && state.isEmpty(line2)) {
          hasEmptyLines = true;
          line2++;
          state.line = line2;
        }
      }
    };
    ParserBlock.prototype.parse = function(src, md, env6, outTokens) {
      var state;
      if (!src) {
        return;
      }
      state = new this.State(src, md, env6, outTokens);
      this.tokenize(state, state.line, state.lineMax);
    };
    ParserBlock.prototype.State = require_state_block();
    module2.exports = ParserBlock;
  }
});

// ../../node_modules/markdown-it/lib/rules_inline/text.js
var require_text = __commonJS({
  "../../node_modules/markdown-it/lib/rules_inline/text.js"(exports2, module2) {
    "use strict";
    function isTerminatorChar(ch) {
      switch (ch) {
        case 10:
        case 33:
        case 35:
        case 36:
        case 37:
        case 38:
        case 42:
        case 43:
        case 45:
        case 58:
        case 60:
        case 61:
        case 62:
        case 64:
        case 91:
        case 92:
        case 93:
        case 94:
        case 95:
        case 96:
        case 123:
        case 125:
        case 126:
          return true;
        default:
          return false;
      }
    }
    module2.exports = function text7(state, silent) {
      var pos = state.pos;
      while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {
        pos++;
      }
      if (pos === state.pos) {
        return false;
      }
      if (!silent) {
        state.pending += state.src.slice(state.pos, pos);
      }
      state.pos = pos;
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_inline/linkify.js
var require_linkify2 = __commonJS({
  "../../node_modules/markdown-it/lib/rules_inline/linkify.js"(exports2, module2) {
    "use strict";
    var SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;
    module2.exports = function linkify(state, silent) {
      var pos, max, match3, proto9, link4, url, fullUrl, token;
      if (!state.md.options.linkify) return false;
      if (state.linkLevel > 0) return false;
      pos = state.pos;
      max = state.posMax;
      if (pos + 3 > max) return false;
      if (state.src.charCodeAt(pos) !== 58) return false;
      if (state.src.charCodeAt(pos + 1) !== 47) return false;
      if (state.src.charCodeAt(pos + 2) !== 47) return false;
      match3 = state.pending.match(SCHEME_RE);
      if (!match3) return false;
      proto9 = match3[1];
      link4 = state.md.linkify.matchAtStart(state.src.slice(pos - proto9.length));
      if (!link4) return false;
      url = link4.url;
      if (url.length <= proto9.length) return false;
      url = url.replace(/\*+$/, "");
      fullUrl = state.md.normalizeLink(url);
      if (!state.md.validateLink(fullUrl)) return false;
      if (!silent) {
        state.pending = state.pending.slice(0, -proto9.length);
        token = state.push("link_open", "a", 1);
        token.attrs = [["href", fullUrl]];
        token.markup = "linkify";
        token.info = "auto";
        token = state.push("text", "", 0);
        token.content = state.md.normalizeLinkText(url);
        token = state.push("link_close", "a", -1);
        token.markup = "linkify";
        token.info = "auto";
      }
      state.pos += url.length - proto9.length;
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_inline/newline.js
var require_newline = __commonJS({
  "../../node_modules/markdown-it/lib/rules_inline/newline.js"(exports2, module2) {
    "use strict";
    var isSpace = require_utils2().isSpace;
    module2.exports = function newline(state, silent) {
      var pmax, max, ws, pos = state.pos;
      if (state.src.charCodeAt(pos) !== 10) {
        return false;
      }
      pmax = state.pending.length - 1;
      max = state.posMax;
      if (!silent) {
        if (pmax >= 0 && state.pending.charCodeAt(pmax) === 32) {
          if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 32) {
            ws = pmax - 1;
            while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 32) ws--;
            state.pending = state.pending.slice(0, ws);
            state.push("hardbreak", "br", 0);
          } else {
            state.pending = state.pending.slice(0, -1);
            state.push("softbreak", "br", 0);
          }
        } else {
          state.push("softbreak", "br", 0);
        }
      }
      pos++;
      while (pos < max && isSpace(state.src.charCodeAt(pos))) {
        pos++;
      }
      state.pos = pos;
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_inline/escape.js
var require_escape2 = __commonJS({
  "../../node_modules/markdown-it/lib/rules_inline/escape.js"(exports2, module2) {
    "use strict";
    var isSpace = require_utils2().isSpace;
    var ESCAPED = [];
    for (i2 = 0; i2 < 256; i2++) {
      ESCAPED.push(0);
    }
    var i2;
    "\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(ch) {
      ESCAPED[ch.charCodeAt(0)] = 1;
    });
    module2.exports = function escape5(state, silent) {
      var ch1, ch2, origStr, escapedStr, token, pos = state.pos, max = state.posMax;
      if (state.src.charCodeAt(pos) !== 92) return false;
      pos++;
      if (pos >= max) return false;
      ch1 = state.src.charCodeAt(pos);
      if (ch1 === 10) {
        if (!silent) {
          state.push("hardbreak", "br", 0);
        }
        pos++;
        while (pos < max) {
          ch1 = state.src.charCodeAt(pos);
          if (!isSpace(ch1)) break;
          pos++;
        }
        state.pos = pos;
        return true;
      }
      escapedStr = state.src[pos];
      if (ch1 >= 55296 && ch1 <= 56319 && pos + 1 < max) {
        ch2 = state.src.charCodeAt(pos + 1);
        if (ch2 >= 56320 && ch2 <= 57343) {
          escapedStr += state.src[pos + 1];
          pos++;
        }
      }
      origStr = "\\" + escapedStr;
      if (!silent) {
        token = state.push("text_special", "", 0);
        if (ch1 < 256 && ESCAPED[ch1] !== 0) {
          token.content = escapedStr;
        } else {
          token.content = origStr;
        }
        token.markup = origStr;
        token.info = "escape";
      }
      state.pos = pos + 1;
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_inline/backticks.js
var require_backticks = __commonJS({
  "../../node_modules/markdown-it/lib/rules_inline/backticks.js"(exports2, module2) {
    "use strict";
    module2.exports = function backtick(state, silent) {
      var start, max, marker, token, matchStart, matchEnd, openerLength, closerLength, pos = state.pos, ch = state.src.charCodeAt(pos);
      if (ch !== 96) {
        return false;
      }
      start = pos;
      pos++;
      max = state.posMax;
      while (pos < max && state.src.charCodeAt(pos) === 96) {
        pos++;
      }
      marker = state.src.slice(start, pos);
      openerLength = marker.length;
      if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {
        if (!silent) state.pending += marker;
        state.pos += openerLength;
        return true;
      }
      matchEnd = pos;
      while ((matchStart = state.src.indexOf("`", matchEnd)) !== -1) {
        matchEnd = matchStart + 1;
        while (matchEnd < max && state.src.charCodeAt(matchEnd) === 96) {
          matchEnd++;
        }
        closerLength = matchEnd - matchStart;
        if (closerLength === openerLength) {
          if (!silent) {
            token = state.push("code_inline", "code", 0);
            token.markup = marker;
            token.content = state.src.slice(pos, matchStart).replace(/\n/g, " ").replace(/^ (.+) $/, "$1");
          }
          state.pos = matchEnd;
          return true;
        }
        state.backticks[closerLength] = matchStart;
      }
      state.backticksScanned = true;
      if (!silent) state.pending += marker;
      state.pos += openerLength;
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_inline/strikethrough.js
var require_strikethrough = __commonJS({
  "../../node_modules/markdown-it/lib/rules_inline/strikethrough.js"(exports2, module2) {
    "use strict";
    module2.exports.tokenize = function strikethrough2(state, silent) {
      var i2, scanned, token, len, ch, start = state.pos, marker = state.src.charCodeAt(start);
      if (silent) {
        return false;
      }
      if (marker !== 126) {
        return false;
      }
      scanned = state.scanDelims(state.pos, true);
      len = scanned.length;
      ch = String.fromCharCode(marker);
      if (len < 2) {
        return false;
      }
      if (len % 2) {
        token = state.push("text", "", 0);
        token.content = ch;
        len--;
      }
      for (i2 = 0; i2 < len; i2 += 2) {
        token = state.push("text", "", 0);
        token.content = ch + ch;
        state.delimiters.push({
          marker,
          length: 0,
          // disable "rule of 3" length checks meant for emphasis
          token: state.tokens.length - 1,
          end: -1,
          open: scanned.can_open,
          close: scanned.can_close
        });
      }
      state.pos += scanned.length;
      return true;
    };
    function postProcess3(state, delimiters2) {
      var i2, j, startDelim, endDelim, token, loneMarkers = [], max = delimiters2.length;
      for (i2 = 0; i2 < max; i2++) {
        startDelim = delimiters2[i2];
        if (startDelim.marker !== 126) {
          continue;
        }
        if (startDelim.end === -1) {
          continue;
        }
        endDelim = delimiters2[startDelim.end];
        token = state.tokens[startDelim.token];
        token.type = "s_open";
        token.tag = "s";
        token.nesting = 1;
        token.markup = "~~";
        token.content = "";
        token = state.tokens[endDelim.token];
        token.type = "s_close";
        token.tag = "s";
        token.nesting = -1;
        token.markup = "~~";
        token.content = "";
        if (state.tokens[endDelim.token - 1].type === "text" && state.tokens[endDelim.token - 1].content === "~") {
          loneMarkers.push(endDelim.token - 1);
        }
      }
      while (loneMarkers.length) {
        i2 = loneMarkers.pop();
        j = i2 + 1;
        while (j < state.tokens.length && state.tokens[j].type === "s_close") {
          j++;
        }
        j--;
        if (i2 !== j) {
          token = state.tokens[j];
          state.tokens[j] = state.tokens[i2];
          state.tokens[i2] = token;
        }
      }
    }
    module2.exports.postProcess = function strikethrough2(state) {
      var curr, tokens_meta = state.tokens_meta, max = state.tokens_meta.length;
      postProcess3(state, state.delimiters);
      for (curr = 0; curr < max; curr++) {
        if (tokens_meta[curr] && tokens_meta[curr].delimiters) {
          postProcess3(state, tokens_meta[curr].delimiters);
        }
      }
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_inline/emphasis.js
var require_emphasis = __commonJS({
  "../../node_modules/markdown-it/lib/rules_inline/emphasis.js"(exports2, module2) {
    "use strict";
    module2.exports.tokenize = function emphasis4(state, silent) {
      var i2, scanned, token, start = state.pos, marker = state.src.charCodeAt(start);
      if (silent) {
        return false;
      }
      if (marker !== 95 && marker !== 42) {
        return false;
      }
      scanned = state.scanDelims(state.pos, marker === 42);
      for (i2 = 0; i2 < scanned.length; i2++) {
        token = state.push("text", "", 0);
        token.content = String.fromCharCode(marker);
        state.delimiters.push({
          // Char code of the starting marker (number).
          //
          marker,
          // Total length of these series of delimiters.
          //
          length: scanned.length,
          // A position of the token this delimiter corresponds to.
          //
          token: state.tokens.length - 1,
          // If this delimiter is matched as a valid opener, `end` will be
          // equal to its position, otherwise it's `-1`.
          //
          end: -1,
          // Boolean flags that determine if this delimiter could open or close
          // an emphasis.
          //
          open: scanned.can_open,
          close: scanned.can_close
        });
      }
      state.pos += scanned.length;
      return true;
    };
    function postProcess3(state, delimiters2) {
      var i2, startDelim, endDelim, token, ch, isStrong, max = delimiters2.length;
      for (i2 = max - 1; i2 >= 0; i2--) {
        startDelim = delimiters2[i2];
        if (startDelim.marker !== 95 && startDelim.marker !== 42) {
          continue;
        }
        if (startDelim.end === -1) {
          continue;
        }
        endDelim = delimiters2[startDelim.end];
        isStrong = i2 > 0 && delimiters2[i2 - 1].end === startDelim.end + 1 && // check that first two markers match and adjacent
        delimiters2[i2 - 1].marker === startDelim.marker && delimiters2[i2 - 1].token === startDelim.token - 1 && // check that last two markers are adjacent (we can safely assume they match)
        delimiters2[startDelim.end + 1].token === endDelim.token + 1;
        ch = String.fromCharCode(startDelim.marker);
        token = state.tokens[startDelim.token];
        token.type = isStrong ? "strong_open" : "em_open";
        token.tag = isStrong ? "strong" : "em";
        token.nesting = 1;
        token.markup = isStrong ? ch + ch : ch;
        token.content = "";
        token = state.tokens[endDelim.token];
        token.type = isStrong ? "strong_close" : "em_close";
        token.tag = isStrong ? "strong" : "em";
        token.nesting = -1;
        token.markup = isStrong ? ch + ch : ch;
        token.content = "";
        if (isStrong) {
          state.tokens[delimiters2[i2 - 1].token].content = "";
          state.tokens[delimiters2[startDelim.end + 1].token].content = "";
          i2--;
        }
      }
    }
    module2.exports.postProcess = function emphasis4(state) {
      var curr, tokens_meta = state.tokens_meta, max = state.tokens_meta.length;
      postProcess3(state, state.delimiters);
      for (curr = 0; curr < max; curr++) {
        if (tokens_meta[curr] && tokens_meta[curr].delimiters) {
          postProcess3(state, tokens_meta[curr].delimiters);
        }
      }
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_inline/link.js
var require_link = __commonJS({
  "../../node_modules/markdown-it/lib/rules_inline/link.js"(exports2, module2) {
    "use strict";
    var normalizeReference = require_utils2().normalizeReference;
    var isSpace = require_utils2().isSpace;
    module2.exports = function link4(state, silent) {
      var attrs, code7, label, labelEnd, labelStart, pos, res, ref, token, href = "", title = "", oldPos = state.pos, max = state.posMax, start = state.pos, parseReference = true;
      if (state.src.charCodeAt(state.pos) !== 91) {
        return false;
      }
      labelStart = state.pos + 1;
      labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true);
      if (labelEnd < 0) {
        return false;
      }
      pos = labelEnd + 1;
      if (pos < max && state.src.charCodeAt(pos) === 40) {
        parseReference = false;
        pos++;
        for (; pos < max; pos++) {
          code7 = state.src.charCodeAt(pos);
          if (!isSpace(code7) && code7 !== 10) {
            break;
          }
        }
        if (pos >= max) {
          return false;
        }
        start = pos;
        res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);
        if (res.ok) {
          href = state.md.normalizeLink(res.str);
          if (state.md.validateLink(href)) {
            pos = res.pos;
          } else {
            href = "";
          }
          start = pos;
          for (; pos < max; pos++) {
            code7 = state.src.charCodeAt(pos);
            if (!isSpace(code7) && code7 !== 10) {
              break;
            }
          }
          res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);
          if (pos < max && start !== pos && res.ok) {
            title = res.str;
            pos = res.pos;
            for (; pos < max; pos++) {
              code7 = state.src.charCodeAt(pos);
              if (!isSpace(code7) && code7 !== 10) {
                break;
              }
            }
          }
        }
        if (pos >= max || state.src.charCodeAt(pos) !== 41) {
          parseReference = true;
        }
        pos++;
      }
      if (parseReference) {
        if (typeof state.env.references === "undefined") {
          return false;
        }
        if (pos < max && state.src.charCodeAt(pos) === 91) {
          start = pos + 1;
          pos = state.md.helpers.parseLinkLabel(state, pos);
          if (pos >= 0) {
            label = state.src.slice(start, pos++);
          } else {
            pos = labelEnd + 1;
          }
        } else {
          pos = labelEnd + 1;
        }
        if (!label) {
          label = state.src.slice(labelStart, labelEnd);
        }
        ref = state.env.references[normalizeReference(label)];
        if (!ref) {
          state.pos = oldPos;
          return false;
        }
        href = ref.href;
        title = ref.title;
      }
      if (!silent) {
        state.pos = labelStart;
        state.posMax = labelEnd;
        token = state.push("link_open", "a", 1);
        token.attrs = attrs = [["href", href]];
        if (title) {
          attrs.push(["title", title]);
        }
        state.linkLevel++;
        state.md.inline.tokenize(state);
        state.linkLevel--;
        token = state.push("link_close", "a", -1);
      }
      state.pos = pos;
      state.posMax = max;
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_inline/image.js
var require_image = __commonJS({
  "../../node_modules/markdown-it/lib/rules_inline/image.js"(exports2, module2) {
    "use strict";
    var normalizeReference = require_utils2().normalizeReference;
    var isSpace = require_utils2().isSpace;
    module2.exports = function image6(state, silent) {
      var attrs, code7, content3, label, labelEnd, labelStart, pos, ref, res, title, token, tokens, start, href = "", oldPos = state.pos, max = state.posMax;
      if (state.src.charCodeAt(state.pos) !== 33) {
        return false;
      }
      if (state.src.charCodeAt(state.pos + 1) !== 91) {
        return false;
      }
      labelStart = state.pos + 2;
      labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false);
      if (labelEnd < 0) {
        return false;
      }
      pos = labelEnd + 1;
      if (pos < max && state.src.charCodeAt(pos) === 40) {
        pos++;
        for (; pos < max; pos++) {
          code7 = state.src.charCodeAt(pos);
          if (!isSpace(code7) && code7 !== 10) {
            break;
          }
        }
        if (pos >= max) {
          return false;
        }
        start = pos;
        res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);
        if (res.ok) {
          href = state.md.normalizeLink(res.str);
          if (state.md.validateLink(href)) {
            pos = res.pos;
          } else {
            href = "";
          }
        }
        start = pos;
        for (; pos < max; pos++) {
          code7 = state.src.charCodeAt(pos);
          if (!isSpace(code7) && code7 !== 10) {
            break;
          }
        }
        res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);
        if (pos < max && start !== pos && res.ok) {
          title = res.str;
          pos = res.pos;
          for (; pos < max; pos++) {
            code7 = state.src.charCodeAt(pos);
            if (!isSpace(code7) && code7 !== 10) {
              break;
            }
          }
        } else {
          title = "";
        }
        if (pos >= max || state.src.charCodeAt(pos) !== 41) {
          state.pos = oldPos;
          return false;
        }
        pos++;
      } else {
        if (typeof state.env.references === "undefined") {
          return false;
        }
        if (pos < max && state.src.charCodeAt(pos) === 91) {
          start = pos + 1;
          pos = state.md.helpers.parseLinkLabel(state, pos);
          if (pos >= 0) {
            label = state.src.slice(start, pos++);
          } else {
            pos = labelEnd + 1;
          }
        } else {
          pos = labelEnd + 1;
        }
        if (!label) {
          label = state.src.slice(labelStart, labelEnd);
        }
        ref = state.env.references[normalizeReference(label)];
        if (!ref) {
          state.pos = oldPos;
          return false;
        }
        href = ref.href;
        title = ref.title;
      }
      if (!silent) {
        content3 = state.src.slice(labelStart, labelEnd);
        state.md.inline.parse(
          content3,
          state.md,
          state.env,
          tokens = []
        );
        token = state.push("image", "img", 0);
        token.attrs = attrs = [["src", href], ["alt", ""]];
        token.children = tokens;
        token.content = content3;
        if (title) {
          attrs.push(["title", title]);
        }
      }
      state.pos = pos;
      state.posMax = max;
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_inline/autolink.js
var require_autolink = __commonJS({
  "../../node_modules/markdown-it/lib/rules_inline/autolink.js"(exports2, module2) {
    "use strict";
    var EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/;
    var AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)$/;
    module2.exports = function autolink(state, silent) {
      var url, fullUrl, token, ch, start, max, pos = state.pos;
      if (state.src.charCodeAt(pos) !== 60) {
        return false;
      }
      start = state.pos;
      max = state.posMax;
      for (; ; ) {
        if (++pos >= max) return false;
        ch = state.src.charCodeAt(pos);
        if (ch === 60) return false;
        if (ch === 62) break;
      }
      url = state.src.slice(start + 1, pos);
      if (AUTOLINK_RE.test(url)) {
        fullUrl = state.md.normalizeLink(url);
        if (!state.md.validateLink(fullUrl)) {
          return false;
        }
        if (!silent) {
          token = state.push("link_open", "a", 1);
          token.attrs = [["href", fullUrl]];
          token.markup = "autolink";
          token.info = "auto";
          token = state.push("text", "", 0);
          token.content = state.md.normalizeLinkText(url);
          token = state.push("link_close", "a", -1);
          token.markup = "autolink";
          token.info = "auto";
        }
        state.pos += url.length + 2;
        return true;
      }
      if (EMAIL_RE.test(url)) {
        fullUrl = state.md.normalizeLink("mailto:" + url);
        if (!state.md.validateLink(fullUrl)) {
          return false;
        }
        if (!silent) {
          token = state.push("link_open", "a", 1);
          token.attrs = [["href", fullUrl]];
          token.markup = "autolink";
          token.info = "auto";
          token = state.push("text", "", 0);
          token.content = state.md.normalizeLinkText(url);
          token = state.push("link_close", "a", -1);
          token.markup = "autolink";
          token.info = "auto";
        }
        state.pos += url.length + 2;
        return true;
      }
      return false;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_inline/html_inline.js
var require_html_inline = __commonJS({
  "../../node_modules/markdown-it/lib/rules_inline/html_inline.js"(exports2, module2) {
    "use strict";
    var HTML_TAG_RE = require_html_re().HTML_TAG_RE;
    function isLinkOpen(str2) {
      return /^<a[>\s]/i.test(str2);
    }
    function isLinkClose(str2) {
      return /^<\/a\s*>/i.test(str2);
    }
    function isLetter(ch) {
      var lc = ch | 32;
      return lc >= 97 && lc <= 122;
    }
    module2.exports = function html_inline(state, silent) {
      var ch, match3, max, token, pos = state.pos;
      if (!state.md.options.html) {
        return false;
      }
      max = state.posMax;
      if (state.src.charCodeAt(pos) !== 60 || pos + 2 >= max) {
        return false;
      }
      ch = state.src.charCodeAt(pos + 1);
      if (ch !== 33 && ch !== 63 && ch !== 47 && !isLetter(ch)) {
        return false;
      }
      match3 = state.src.slice(pos).match(HTML_TAG_RE);
      if (!match3) {
        return false;
      }
      if (!silent) {
        token = state.push("html_inline", "", 0);
        token.content = match3[0];
        if (isLinkOpen(token.content)) state.linkLevel++;
        if (isLinkClose(token.content)) state.linkLevel--;
      }
      state.pos += match3[0].length;
      return true;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_inline/entity.js
var require_entity = __commonJS({
  "../../node_modules/markdown-it/lib/rules_inline/entity.js"(exports2, module2) {
    "use strict";
    var entities = require_entities2();
    var has3 = require_utils2().has;
    var isValidEntityCode = require_utils2().isValidEntityCode;
    var fromCodePoint2 = require_utils2().fromCodePoint;
    var DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i;
    var NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;
    module2.exports = function entity(state, silent) {
      var ch, code7, match3, token, pos = state.pos, max = state.posMax;
      if (state.src.charCodeAt(pos) !== 38) return false;
      if (pos + 1 >= max) return false;
      ch = state.src.charCodeAt(pos + 1);
      if (ch === 35) {
        match3 = state.src.slice(pos).match(DIGITAL_RE);
        if (match3) {
          if (!silent) {
            code7 = match3[1][0].toLowerCase() === "x" ? parseInt(match3[1].slice(1), 16) : parseInt(match3[1], 10);
            token = state.push("text_special", "", 0);
            token.content = isValidEntityCode(code7) ? fromCodePoint2(code7) : fromCodePoint2(65533);
            token.markup = match3[0];
            token.info = "entity";
          }
          state.pos += match3[0].length;
          return true;
        }
      } else {
        match3 = state.src.slice(pos).match(NAMED_RE);
        if (match3) {
          if (has3(entities, match3[1])) {
            if (!silent) {
              token = state.push("text_special", "", 0);
              token.content = entities[match3[1]];
              token.markup = match3[0];
              token.info = "entity";
            }
            state.pos += match3[0].length;
            return true;
          }
        }
      }
      return false;
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_inline/balance_pairs.js
var require_balance_pairs = __commonJS({
  "../../node_modules/markdown-it/lib/rules_inline/balance_pairs.js"(exports2, module2) {
    "use strict";
    function processDelimiters(delimiters2) {
      var closerIdx, openerIdx, closer, opener, minOpenerIdx, newMinOpenerIdx, isOddMatch, lastJump, openersBottom = {}, max = delimiters2.length;
      if (!max) return;
      var headerIdx = 0;
      var lastTokenIdx = -2;
      var jumps = [];
      for (closerIdx = 0; closerIdx < max; closerIdx++) {
        closer = delimiters2[closerIdx];
        jumps.push(0);
        if (delimiters2[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) {
          headerIdx = closerIdx;
        }
        lastTokenIdx = closer.token;
        closer.length = closer.length || 0;
        if (!closer.close) continue;
        if (!openersBottom.hasOwnProperty(closer.marker)) {
          openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1];
        }
        minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + closer.length % 3];
        openerIdx = headerIdx - jumps[headerIdx] - 1;
        newMinOpenerIdx = openerIdx;
        for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) {
          opener = delimiters2[openerIdx];
          if (opener.marker !== closer.marker) continue;
          if (opener.open && opener.end < 0) {
            isOddMatch = false;
            if (opener.close || closer.open) {
              if ((opener.length + closer.length) % 3 === 0) {
                if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {
                  isOddMatch = true;
                }
              }
            }
            if (!isOddMatch) {
              lastJump = openerIdx > 0 && !delimiters2[openerIdx - 1].open ? jumps[openerIdx - 1] + 1 : 0;
              jumps[closerIdx] = closerIdx - openerIdx + lastJump;
              jumps[openerIdx] = lastJump;
              closer.open = false;
              opener.end = closerIdx;
              opener.close = false;
              newMinOpenerIdx = -1;
              lastTokenIdx = -2;
              break;
            }
          }
        }
        if (newMinOpenerIdx !== -1) {
          openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length || 0) % 3] = newMinOpenerIdx;
        }
      }
    }
    module2.exports = function link_pairs(state) {
      var curr, tokens_meta = state.tokens_meta, max = state.tokens_meta.length;
      processDelimiters(state.delimiters);
      for (curr = 0; curr < max; curr++) {
        if (tokens_meta[curr] && tokens_meta[curr].delimiters) {
          processDelimiters(tokens_meta[curr].delimiters);
        }
      }
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_inline/fragments_join.js
var require_fragments_join = __commonJS({
  "../../node_modules/markdown-it/lib/rules_inline/fragments_join.js"(exports2, module2) {
    "use strict";
    module2.exports = function fragments_join(state) {
      var curr, last, level = 0, tokens = state.tokens, max = state.tokens.length;
      for (curr = last = 0; curr < max; curr++) {
        if (tokens[curr].nesting < 0) level--;
        tokens[curr].level = level;
        if (tokens[curr].nesting > 0) level++;
        if (tokens[curr].type === "text" && curr + 1 < max && tokens[curr + 1].type === "text") {
          tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;
        } else {
          if (curr !== last) {
            tokens[last] = tokens[curr];
          }
          last++;
        }
      }
      if (curr !== last) {
        tokens.length = last;
      }
    };
  }
});

// ../../node_modules/markdown-it/lib/rules_inline/state_inline.js
var require_state_inline = __commonJS({
  "../../node_modules/markdown-it/lib/rules_inline/state_inline.js"(exports2, module2) {
    "use strict";
    var Token2 = require_token();
    var isWhiteSpace = require_utils2().isWhiteSpace;
    var isPunctChar = require_utils2().isPunctChar;
    var isMdAsciiPunct = require_utils2().isMdAsciiPunct;
    function StateInline(src, md, env6, outTokens) {
      this.src = src;
      this.env = env6;
      this.md = md;
      this.tokens = outTokens;
      this.tokens_meta = Array(outTokens.length);
      this.pos = 0;
      this.posMax = this.src.length;
      this.level = 0;
      this.pending = "";
      this.pendingLevel = 0;
      this.cache = {};
      this.delimiters = [];
      this._prev_delimiters = [];
      this.backticks = {};
      this.backticksScanned = false;
      this.linkLevel = 0;
    }
    StateInline.prototype.pushPending = function() {
      var token = new Token2("text", "", 0);
      token.content = this.pending;
      token.level = this.pendingLevel;
      this.tokens.push(token);
      this.pending = "";
      return token;
    };
    StateInline.prototype.push = function(type2, tag, nesting) {
      if (this.pending) {
        this.pushPending();
      }
      var token = new Token2(type2, tag, nesting);
      var token_meta = null;
      if (nesting < 0) {
        this.level--;
        this.delimiters = this._prev_delimiters.pop();
      }
      token.level = this.level;
      if (nesting > 0) {
        this.level++;
        this._prev_delimiters.push(this.delimiters);
        this.delimiters = [];
        token_meta = { delimiters: this.delimiters };
      }
      this.pendingLevel = this.level;
      this.tokens.push(token);
      this.tokens_meta.push(token_meta);
      return token;
    };
    StateInline.prototype.scanDelims = function(start, canSplitWord) {
      var pos = start, lastChar, nextChar, count2, can_open, can_close, isLastWhiteSpace, isLastPunctChar, isNextWhiteSpace, isNextPunctChar, left_flanking = true, right_flanking = true, max = this.posMax, marker = this.src.charCodeAt(start);
      lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 32;
      while (pos < max && this.src.charCodeAt(pos) === marker) {
        pos++;
      }
      count2 = pos - start;
      nextChar = pos < max ? this.src.charCodeAt(pos) : 32;
      isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));
      isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));
      isLastWhiteSpace = isWhiteSpace(lastChar);
      isNextWhiteSpace = isWhiteSpace(nextChar);
      if (isNextWhiteSpace) {
        left_flanking = false;
      } else if (isNextPunctChar) {
        if (!(isLastWhiteSpace || isLastPunctChar)) {
          left_flanking = false;
        }
      }
      if (isLastWhiteSpace) {
        right_flanking = false;
      } else if (isLastPunctChar) {
        if (!(isNextWhiteSpace || isNextPunctChar)) {
          right_flanking = false;
        }
      }
      if (!canSplitWord) {
        can_open = left_flanking && (!right_flanking || isLastPunctChar);
        can_close = right_flanking && (!left_flanking || isNextPunctChar);
      } else {
        can_open = left_flanking;
        can_close = right_flanking;
      }
      return {
        can_open,
        can_close,
        length: count2
      };
    };
    StateInline.prototype.Token = Token2;
    module2.exports = StateInline;
  }
});

// ../../node_modules/markdown-it/lib/parser_inline.js
var require_parser_inline = __commonJS({
  "../../node_modules/markdown-it/lib/parser_inline.js"(exports2, module2) {
    "use strict";
    var Ruler = require_ruler();
    var _rules = [
      ["text", require_text()],
      ["linkify", require_linkify2()],
      ["newline", require_newline()],
      ["escape", require_escape2()],
      ["backticks", require_backticks()],
      ["strikethrough", require_strikethrough().tokenize],
      ["emphasis", require_emphasis().tokenize],
      ["link", require_link()],
      ["image", require_image()],
      ["autolink", require_autolink()],
      ["html_inline", require_html_inline()],
      ["entity", require_entity()]
    ];
    var _rules2 = [
      ["balance_pairs", require_balance_pairs()],
      ["strikethrough", require_strikethrough().postProcess],
      ["emphasis", require_emphasis().postProcess],
      // rules for pairs separate '**' into its own text tokens, which may be left unused,
      // rule below merges unused segments back with the rest of the text
      ["fragments_join", require_fragments_join()]
    ];
    function ParserInline() {
      var i2;
      this.ruler = new Ruler();
      for (i2 = 0; i2 < _rules.length; i2++) {
        this.ruler.push(_rules[i2][0], _rules[i2][1]);
      }
      this.ruler2 = new Ruler();
      for (i2 = 0; i2 < _rules2.length; i2++) {
        this.ruler2.push(_rules2[i2][0], _rules2[i2][1]);
      }
    }
    ParserInline.prototype.skipToken = function(state) {
      var ok3, i2, pos = state.pos, rules = this.ruler.getRules(""), len = rules.length, maxNesting = state.md.options.maxNesting, cache = state.cache;
      if (typeof cache[pos] !== "undefined") {
        state.pos = cache[pos];
        return;
      }
      if (state.level < maxNesting) {
        for (i2 = 0; i2 < len; i2++) {
          state.level++;
          ok3 = rules[i2](state, true);
          state.level--;
          if (ok3) {
            if (pos >= state.pos) {
              throw new Error("inline rule didn't increment state.pos");
            }
            break;
          }
        }
      } else {
        state.pos = state.posMax;
      }
      if (!ok3) {
        state.pos++;
      }
      cache[pos] = state.pos;
    };
    ParserInline.prototype.tokenize = function(state) {
      var ok3, i2, prevPos, rules = this.ruler.getRules(""), len = rules.length, end = state.posMax, maxNesting = state.md.options.maxNesting;
      while (state.pos < end) {
        prevPos = state.pos;
        if (state.level < maxNesting) {
          for (i2 = 0; i2 < len; i2++) {
            ok3 = rules[i2](state, false);
            if (ok3) {
              if (prevPos >= state.pos) {
                throw new Error("inline rule didn't increment state.pos");
              }
              break;
            }
          }
        }
        if (ok3) {
          if (state.pos >= end) {
            break;
          }
          continue;
        }
        state.pending += state.src[state.pos++];
      }
      if (state.pending) {
        state.pushPending();
      }
    };
    ParserInline.prototype.parse = function(str2, md, env6, outTokens) {
      var i2, rules, len;
      var state = new this.State(str2, md, env6, outTokens);
      this.tokenize(state);
      rules = this.ruler2.getRules("");
      len = rules.length;
      for (i2 = 0; i2 < len; i2++) {
        rules[i2](state);
      }
    };
    ParserInline.prototype.State = require_state_inline();
    module2.exports = ParserInline;
  }
});

// ../../node_modules/linkify-it/lib/re.js
var require_re = __commonJS({
  "../../node_modules/linkify-it/lib/re.js"(exports2, module2) {
    "use strict";
    module2.exports = function(opts) {
      var re = {};
      opts = opts || {};
      re.src_Any = require_regex2().source;
      re.src_Cc = require_regex3().source;
      re.src_Z = require_regex5().source;
      re.src_P = require_regex().source;
      re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join("|");
      re.src_ZCc = [re.src_Z, re.src_Cc].join("|");
      var text_separators = "[><\uFF5C]";
      re.src_pseudo_letter = "(?:(?!" + text_separators + "|" + re.src_ZPCc + ")" + re.src_Any + ")";
      re.src_ip4 = "(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";
      re.src_auth = "(?:(?:(?!" + re.src_ZCc + "|[@/\\[\\]()]).)+@)?";
      re.src_port = "(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?";
      re.src_host_terminator = "(?=$|" + text_separators + "|" + re.src_ZPCc + ")(?!" + (opts["---"] ? "-(?!--)|" : "-|") + "_|:\\d|\\.-|\\.(?!$|" + re.src_ZPCc + "))";
      re.src_path = "(?:[/?#](?:(?!" + re.src_ZCc + "|" + text_separators + `|[()[\\]{}.,"'?!\\-;]).|\\[(?:(?!` + re.src_ZCc + "|\\]).)*\\]|\\((?:(?!" + re.src_ZCc + "|[)]).)*\\)|\\{(?:(?!" + re.src_ZCc + '|[}]).)*\\}|\\"(?:(?!' + re.src_ZCc + `|["]).)+\\"|\\'(?:(?!` + re.src_ZCc + "|[']).)+\\'|\\'(?=" + re.src_pseudo_letter + "|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!" + re.src_ZCc + "|[.]|$)|" + (opts["---"] ? "\\-(?!--(?:[^-]|$))(?:-*)|" : "\\-+|") + ",(?!" + re.src_ZCc + "|$)|;(?!" + re.src_ZCc + "|$)|\\!+(?!" + re.src_ZCc + "|[!]|$)|\\?(?!" + re.src_ZCc + "|[?]|$))+|\\/)?";
      re.src_email_name = '[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*';
      re.src_xn = "xn--[a-z0-9\\-]{1,59}";
      re.src_domain_root = // Allow letters & digits (http://test1)
      "(?:" + re.src_xn + "|" + re.src_pseudo_letter + "{1,63})";
      re.src_domain = "(?:" + re.src_xn + "|(?:" + re.src_pseudo_letter + ")|(?:" + re.src_pseudo_letter + "(?:-|" + re.src_pseudo_letter + "){0,61}" + re.src_pseudo_letter + "))";
      re.src_host = "(?:(?:(?:(?:" + re.src_domain + ")\\.)*" + re.src_domain + "))";
      re.tpl_host_fuzzy = "(?:" + re.src_ip4 + "|(?:(?:(?:" + re.src_domain + ")\\.)+(?:%TLDS%)))";
      re.tpl_host_no_ip_fuzzy = "(?:(?:(?:" + re.src_domain + ")\\.)+(?:%TLDS%))";
      re.src_host_strict = re.src_host + re.src_host_terminator;
      re.tpl_host_fuzzy_strict = re.tpl_host_fuzzy + re.src_host_terminator;
      re.src_host_port_strict = re.src_host + re.src_port + re.src_host_terminator;
      re.tpl_host_port_fuzzy_strict = re.tpl_host_fuzzy + re.src_port + re.src_host_terminator;
      re.tpl_host_port_no_ip_fuzzy_strict = re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator;
      re.tpl_host_fuzzy_test = "localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:" + re.src_ZPCc + "|>|$))";
      re.tpl_email_fuzzy = "(^|" + text_separators + '|"|\\(|' + re.src_ZCc + ")(" + re.src_email_name + "@" + re.tpl_host_fuzzy_strict + ")";
      re.tpl_link_fuzzy = // Fuzzy link can't be prepended with .:/\- and non punctuation.
      // but can start with > (markdown blockquote)
      "(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|" + re.src_ZPCc + "))((?![$+<=>^`|\uFF5C])" + re.tpl_host_port_fuzzy_strict + re.src_path + ")";
      re.tpl_link_no_ip_fuzzy = // Fuzzy link can't be prepended with .:/\- and non punctuation.
      // but can start with > (markdown blockquote)
      "(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|" + re.src_ZPCc + "))((?![$+<=>^`|\uFF5C])" + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ")";
      return re;
    };
  }
});

// ../../node_modules/linkify-it/index.js
var require_linkify_it = __commonJS({
  "../../node_modules/linkify-it/index.js"(exports2, module2) {
    "use strict";
    function assign2(obj) {
      var sources = Array.prototype.slice.call(arguments, 1);
      sources.forEach(function(source2) {
        if (!source2) {
          return;
        }
        Object.keys(source2).forEach(function(key2) {
          obj[key2] = source2[key2];
        });
      });
      return obj;
    }
    function _class2(obj) {
      return Object.prototype.toString.call(obj);
    }
    function isString(obj) {
      return _class2(obj) === "[object String]";
    }
    function isObject2(obj) {
      return _class2(obj) === "[object Object]";
    }
    function isRegExp(obj) {
      return _class2(obj) === "[object RegExp]";
    }
    function isFunction2(obj) {
      return _class2(obj) === "[object Function]";
    }
    function escapeRE(str2) {
      return str2.replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
    }
    var defaultOptions5 = {
      fuzzyLink: true,
      fuzzyEmail: true,
      fuzzyIP: false
    };
    function isOptionsObj(obj) {
      return Object.keys(obj || {}).reduce(function(acc, k) {
        return acc || defaultOptions5.hasOwnProperty(k);
      }, false);
    }
    var defaultSchemas = {
      "http:": {
        validate: function(text7, pos, self2) {
          var tail = text7.slice(pos);
          if (!self2.re.http) {
            self2.re.http = new RegExp(
              "^\\/\\/" + self2.re.src_auth + self2.re.src_host_port_strict + self2.re.src_path,
              "i"
            );
          }
          if (self2.re.http.test(tail)) {
            return tail.match(self2.re.http)[0].length;
          }
          return 0;
        }
      },
      "https:": "http:",
      "ftp:": "http:",
      "//": {
        validate: function(text7, pos, self2) {
          var tail = text7.slice(pos);
          if (!self2.re.no_http) {
            self2.re.no_http = new RegExp(
              "^" + self2.re.src_auth + // Don't allow single-level domains, because of false positives like '//test'
              // with code comments
              "(?:localhost|(?:(?:" + self2.re.src_domain + ")\\.)+" + self2.re.src_domain_root + ")" + self2.re.src_port + self2.re.src_host_terminator + self2.re.src_path,
              "i"
            );
          }
          if (self2.re.no_http.test(tail)) {
            if (pos >= 3 && text7[pos - 3] === ":") {
              return 0;
            }
            if (pos >= 3 && text7[pos - 3] === "/") {
              return 0;
            }
            return tail.match(self2.re.no_http)[0].length;
          }
          return 0;
        }
      },
      "mailto:": {
        validate: function(text7, pos, self2) {
          var tail = text7.slice(pos);
          if (!self2.re.mailto) {
            self2.re.mailto = new RegExp(
              "^" + self2.re.src_email_name + "@" + self2.re.src_host_strict,
              "i"
            );
          }
          if (self2.re.mailto.test(tail)) {
            return tail.match(self2.re.mailto)[0].length;
          }
          return 0;
        }
      }
    };
    var tlds_2ch_src_re = "a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]";
    var tlds_default = "biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");
    function resetScanCache(self2) {
      self2.__index__ = -1;
      self2.__text_cache__ = "";
    }
    function createValidator(re) {
      return function(text7, pos) {
        var tail = text7.slice(pos);
        if (re.test(tail)) {
          return tail.match(re)[0].length;
        }
        return 0;
      };
    }
    function createNormalizer() {
      return function(match3, self2) {
        self2.normalize(match3);
      };
    }
    function compile2(self2) {
      var re = self2.re = require_re()(self2.__opts__);
      var tlds2 = self2.__tlds__.slice();
      self2.onCompile();
      if (!self2.__tlds_replaced__) {
        tlds2.push(tlds_2ch_src_re);
      }
      tlds2.push(re.src_xn);
      re.src_tlds = tlds2.join("|");
      function untpl(tpl) {
        return tpl.replace("%TLDS%", re.src_tlds);
      }
      re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), "i");
      re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), "i");
      re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), "i");
      re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), "i");
      var aliases2 = [];
      self2.__compiled__ = {};
      function schemaError(name3, val) {
        throw new Error('(LinkifyIt) Invalid schema "' + name3 + '": ' + val);
      }
      Object.keys(self2.__schemas__).forEach(function(name3) {
        var val = self2.__schemas__[name3];
        if (val === null) {
          return;
        }
        var compiled = { validate: null, link: null };
        self2.__compiled__[name3] = compiled;
        if (isObject2(val)) {
          if (isRegExp(val.validate)) {
            compiled.validate = createValidator(val.validate);
          } else if (isFunction2(val.validate)) {
            compiled.validate = val.validate;
          } else {
            schemaError(name3, val);
          }
          if (isFunction2(val.normalize)) {
            compiled.normalize = val.normalize;
          } else if (!val.normalize) {
            compiled.normalize = createNormalizer();
          } else {
            schemaError(name3, val);
          }
          return;
        }
        if (isString(val)) {
          aliases2.push(name3);
          return;
        }
        schemaError(name3, val);
      });
      aliases2.forEach(function(alias) {
        if (!self2.__compiled__[self2.__schemas__[alias]]) {
          return;
        }
        self2.__compiled__[alias].validate = self2.__compiled__[self2.__schemas__[alias]].validate;
        self2.__compiled__[alias].normalize = self2.__compiled__[self2.__schemas__[alias]].normalize;
      });
      self2.__compiled__[""] = { validate: null, normalize: createNormalizer() };
      var slist = Object.keys(self2.__compiled__).filter(function(name3) {
        return name3.length > 0 && self2.__compiled__[name3];
      }).map(escapeRE).join("|");
      self2.re.schema_test = RegExp("(^|(?!_)(?:[><\uFF5C]|" + re.src_ZPCc + "))(" + slist + ")", "i");
      self2.re.schema_search = RegExp("(^|(?!_)(?:[><\uFF5C]|" + re.src_ZPCc + "))(" + slist + ")", "ig");
      self2.re.schema_at_start = RegExp("^" + self2.re.schema_search.source, "i");
      self2.re.pretest = RegExp(
        "(" + self2.re.schema_test.source + ")|(" + self2.re.host_fuzzy_test.source + ")|@",
        "i"
      );
      resetScanCache(self2);
    }
    function Match(self2, shift) {
      var start = self2.__index__, end = self2.__last_index__, text7 = self2.__text_cache__.slice(start, end);
      this.schema = self2.__schema__.toLowerCase();
      this.index = start + shift;
      this.lastIndex = end + shift;
      this.raw = text7;
      this.text = text7;
      this.url = text7;
    }
    function createMatch(self2, shift) {
      var match3 = new Match(self2, shift);
      self2.__compiled__[match3.schema].normalize(match3, self2);
      return match3;
    }
    function LinkifyIt(schemas, options) {
      if (!(this instanceof LinkifyIt)) {
        return new LinkifyIt(schemas, options);
      }
      if (!options) {
        if (isOptionsObj(schemas)) {
          options = schemas;
          schemas = {};
        }
      }
      this.__opts__ = assign2({}, defaultOptions5, options);
      this.__index__ = -1;
      this.__last_index__ = -1;
      this.__schema__ = "";
      this.__text_cache__ = "";
      this.__schemas__ = assign2({}, defaultSchemas, schemas);
      this.__compiled__ = {};
      this.__tlds__ = tlds_default;
      this.__tlds_replaced__ = false;
      this.re = {};
      compile2(this);
    }
    LinkifyIt.prototype.add = function add2(schema2, definition2) {
      this.__schemas__[schema2] = definition2;
      compile2(this);
      return this;
    };
    LinkifyIt.prototype.set = function set3(options) {
      this.__opts__ = assign2(this.__opts__, options);
      return this;
    };
    LinkifyIt.prototype.test = function test2(text7) {
      this.__text_cache__ = text7;
      this.__index__ = -1;
      if (!text7.length) {
        return false;
      }
      var m2, ml, me, len, shift, next, re, tld_pos, at_pos;
      if (this.re.schema_test.test(text7)) {
        re = this.re.schema_search;
        re.lastIndex = 0;
        while ((m2 = re.exec(text7)) !== null) {
          len = this.testSchemaAt(text7, m2[2], re.lastIndex);
          if (len) {
            this.__schema__ = m2[2];
            this.__index__ = m2.index + m2[1].length;
            this.__last_index__ = m2.index + m2[0].length + len;
            break;
          }
        }
      }
      if (this.__opts__.fuzzyLink && this.__compiled__["http:"]) {
        tld_pos = text7.search(this.re.host_fuzzy_test);
        if (tld_pos >= 0) {
          if (this.__index__ < 0 || tld_pos < this.__index__) {
            if ((ml = text7.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {
              shift = ml.index + ml[1].length;
              if (this.__index__ < 0 || shift < this.__index__) {
                this.__schema__ = "";
                this.__index__ = shift;
                this.__last_index__ = ml.index + ml[0].length;
              }
            }
          }
        }
      }
      if (this.__opts__.fuzzyEmail && this.__compiled__["mailto:"]) {
        at_pos = text7.indexOf("@");
        if (at_pos >= 0) {
          if ((me = text7.match(this.re.email_fuzzy)) !== null) {
            shift = me.index + me[1].length;
            next = me.index + me[0].length;
            if (this.__index__ < 0 || shift < this.__index__ || shift === this.__index__ && next > this.__last_index__) {
              this.__schema__ = "mailto:";
              this.__index__ = shift;
              this.__last_index__ = next;
            }
          }
        }
      }
      return this.__index__ >= 0;
    };
    LinkifyIt.prototype.pretest = function pretest(text7) {
      return this.re.pretest.test(text7);
    };
    LinkifyIt.prototype.testSchemaAt = function testSchemaAt(text7, schema2, pos) {
      if (!this.__compiled__[schema2.toLowerCase()]) {
        return 0;
      }
      return this.__compiled__[schema2.toLowerCase()].validate(text7, pos, this);
    };
    LinkifyIt.prototype.match = function match3(text7) {
      var shift = 0, result = [];
      if (this.__index__ >= 0 && this.__text_cache__ === text7) {
        result.push(createMatch(this, shift));
        shift = this.__last_index__;
      }
      var tail = shift ? text7.slice(shift) : text7;
      while (this.test(tail)) {
        result.push(createMatch(this, shift));
        tail = tail.slice(this.__last_index__);
        shift += this.__last_index__;
      }
      if (result.length) {
        return result;
      }
      return null;
    };
    LinkifyIt.prototype.matchAtStart = function matchAtStart(text7) {
      this.__text_cache__ = text7;
      this.__index__ = -1;
      if (!text7.length) return null;
      var m2 = this.re.schema_at_start.exec(text7);
      if (!m2) return null;
      var len = this.testSchemaAt(text7, m2[2], m2[0].length);
      if (!len) return null;
      this.__schema__ = m2[2];
      this.__index__ = m2.index + m2[1].length;
      this.__last_index__ = m2.index + m2[0].length + len;
      return createMatch(this, 0);
    };
    LinkifyIt.prototype.tlds = function tlds2(list6, keepOld) {
      list6 = Array.isArray(list6) ? list6 : [list6];
      if (!keepOld) {
        this.__tlds__ = list6.slice();
        this.__tlds_replaced__ = true;
        compile2(this);
        return this;
      }
      this.__tlds__ = this.__tlds__.concat(list6).sort().filter(function(el, idx, arr) {
        return el !== arr[idx - 1];
      }).reverse();
      compile2(this);
      return this;
    };
    LinkifyIt.prototype.normalize = function normalize6(match3) {
      if (!match3.schema) {
        match3.url = "http://" + match3.url;
      }
      if (match3.schema === "mailto:" && !/^mailto:/i.test(match3.url)) {
        match3.url = "mailto:" + match3.url;
      }
    };
    LinkifyIt.prototype.onCompile = function onCompile() {
    };
    module2.exports = LinkifyIt;
  }
});

// ../../node_modules/markdown-it/lib/presets/default.js
var require_default2 = __commonJS({
  "../../node_modules/markdown-it/lib/presets/default.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      options: {
        html: false,
        // Enable HTML tags in source
        xhtmlOut: false,
        // Use '/' to close single tags (<br />)
        breaks: false,
        // Convert '\n' in paragraphs into <br>
        langPrefix: "language-",
        // CSS language prefix for fenced blocks
        linkify: false,
        // autoconvert URL-like texts to links
        // Enable some language-neutral replacements + quotes beautification
        typographer: false,
        // Double + single quotes replacement pairs, when typographer enabled,
        // and smartquotes on. Could be either a String or an Array.
        //
        // For example, you can use '«»„“' for Russian, '„“‚‘' for German,
        // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
        quotes: "\u201C\u201D\u2018\u2019",
        /* “”‘’ */
        // Highlighter function. Should return escaped HTML,
        // or '' if the source string is not changed and should be escaped externaly.
        // If result starts with <pre... internal wrapper is skipped.
        //
        // function (/*str, lang*/) { return ''; }
        //
        highlight: null,
        maxNesting: 100
        // Internal protection, recursion limit
      },
      components: {
        core: {},
        block: {},
        inline: {}
      }
    };
  }
});

// ../../node_modules/markdown-it/lib/presets/zero.js
var require_zero = __commonJS({
  "../../node_modules/markdown-it/lib/presets/zero.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      options: {
        html: false,
        // Enable HTML tags in source
        xhtmlOut: false,
        // Use '/' to close single tags (<br />)
        breaks: false,
        // Convert '\n' in paragraphs into <br>
        langPrefix: "language-",
        // CSS language prefix for fenced blocks
        linkify: false,
        // autoconvert URL-like texts to links
        // Enable some language-neutral replacements + quotes beautification
        typographer: false,
        // Double + single quotes replacement pairs, when typographer enabled,
        // and smartquotes on. Could be either a String or an Array.
        //
        // For example, you can use '«»„“' for Russian, '„“‚‘' for German,
        // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
        quotes: "\u201C\u201D\u2018\u2019",
        /* “”‘’ */
        // Highlighter function. Should return escaped HTML,
        // or '' if the source string is not changed and should be escaped externaly.
        // If result starts with <pre... internal wrapper is skipped.
        //
        // function (/*str, lang*/) { return ''; }
        //
        highlight: null,
        maxNesting: 20
        // Internal protection, recursion limit
      },
      components: {
        core: {
          rules: [
            "normalize",
            "block",
            "inline",
            "text_join"
          ]
        },
        block: {
          rules: [
            "paragraph"
          ]
        },
        inline: {
          rules: [
            "text"
          ],
          rules2: [
            "balance_pairs",
            "fragments_join"
          ]
        }
      }
    };
  }
});

// ../../node_modules/markdown-it/lib/presets/commonmark.js
var require_commonmark = __commonJS({
  "../../node_modules/markdown-it/lib/presets/commonmark.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      options: {
        html: true,
        // Enable HTML tags in source
        xhtmlOut: true,
        // Use '/' to close single tags (<br />)
        breaks: false,
        // Convert '\n' in paragraphs into <br>
        langPrefix: "language-",
        // CSS language prefix for fenced blocks
        linkify: false,
        // autoconvert URL-like texts to links
        // Enable some language-neutral replacements + quotes beautification
        typographer: false,
        // Double + single quotes replacement pairs, when typographer enabled,
        // and smartquotes on. Could be either a String or an Array.
        //
        // For example, you can use '«»„“' for Russian, '„“‚‘' for German,
        // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
        quotes: "\u201C\u201D\u2018\u2019",
        /* “”‘’ */
        // Highlighter function. Should return escaped HTML,
        // or '' if the source string is not changed and should be escaped externaly.
        // If result starts with <pre... internal wrapper is skipped.
        //
        // function (/*str, lang*/) { return ''; }
        //
        highlight: null,
        maxNesting: 20
        // Internal protection, recursion limit
      },
      components: {
        core: {
          rules: [
            "normalize",
            "block",
            "inline",
            "text_join"
          ]
        },
        block: {
          rules: [
            "blockquote",
            "code",
            "fence",
            "heading",
            "hr",
            "html_block",
            "lheading",
            "list",
            "reference",
            "paragraph"
          ]
        },
        inline: {
          rules: [
            "autolink",
            "backticks",
            "emphasis",
            "entity",
            "escape",
            "html_inline",
            "image",
            "link",
            "newline",
            "text"
          ],
          rules2: [
            "balance_pairs",
            "emphasis",
            "fragments_join"
          ]
        }
      }
    };
  }
});

// ../../node_modules/markdown-it/lib/index.js
var require_lib14 = __commonJS({
  "../../node_modules/markdown-it/lib/index.js"(exports2, module2) {
    "use strict";
    var utils2 = require_utils2();
    var helpers = require_helpers2();
    var Renderer = require_renderer();
    var ParserCore = require_parser_core();
    var ParserBlock = require_parser_block();
    var ParserInline = require_parser_inline();
    var LinkifyIt = require_linkify_it();
    var mdurl = require_mdurl();
    var punycode = require("punycode");
    var config3 = {
      default: require_default2(),
      zero: require_zero(),
      commonmark: require_commonmark()
    };
    var BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;
    var GOOD_DATA_RE = /^data:image\/(gif|png|jpeg|webp);/;
    function validateLink(url) {
      var str2 = url.trim().toLowerCase();
      return BAD_PROTO_RE.test(str2) ? GOOD_DATA_RE.test(str2) ? true : false : true;
    }
    var RECODE_HOSTNAME_FOR = ["http:", "https:", "mailto:"];
    function normalizeLink(url) {
      var parsed = mdurl.parse(url, true);
      if (parsed.hostname) {
        if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {
          try {
            parsed.hostname = punycode.toASCII(parsed.hostname);
          } catch (er) {
          }
        }
      }
      return mdurl.encode(mdurl.format(parsed));
    }
    function normalizeLinkText(url) {
      var parsed = mdurl.parse(url, true);
      if (parsed.hostname) {
        if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {
          try {
            parsed.hostname = punycode.toUnicode(parsed.hostname);
          } catch (er) {
          }
        }
      }
      return mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + "%");
    }
    function MarkdownIt2(presetName, options) {
      if (!(this instanceof MarkdownIt2)) {
        return new MarkdownIt2(presetName, options);
      }
      if (!options) {
        if (!utils2.isString(presetName)) {
          options = presetName || {};
          presetName = "default";
        }
      }
      this.inline = new ParserInline();
      this.block = new ParserBlock();
      this.core = new ParserCore();
      this.renderer = new Renderer();
      this.linkify = new LinkifyIt();
      this.validateLink = validateLink;
      this.normalizeLink = normalizeLink;
      this.normalizeLinkText = normalizeLinkText;
      this.utils = utils2;
      this.helpers = utils2.assign({}, helpers);
      this.options = {};
      this.configure(presetName);
      if (options) {
        this.set(options);
      }
    }
    MarkdownIt2.prototype.set = function(options) {
      utils2.assign(this.options, options);
      return this;
    };
    MarkdownIt2.prototype.configure = function(presets) {
      var self2 = this, presetName;
      if (utils2.isString(presets)) {
        presetName = presets;
        presets = config3[presetName];
        if (!presets) {
          throw new Error('Wrong `markdown-it` preset "' + presetName + '", check name');
        }
      }
      if (!presets) {
        throw new Error("Wrong `markdown-it` preset, can't be empty");
      }
      if (presets.options) {
        self2.set(presets.options);
      }
      if (presets.components) {
        Object.keys(presets.components).forEach(function(name3) {
          if (presets.components[name3].rules) {
            self2[name3].ruler.enableOnly(presets.components[name3].rules);
          }
          if (presets.components[name3].rules2) {
            self2[name3].ruler2.enableOnly(presets.components[name3].rules2);
          }
        });
      }
      return this;
    };
    MarkdownIt2.prototype.enable = function(list6, ignoreInvalid) {
      var result = [];
      if (!Array.isArray(list6)) {
        list6 = [list6];
      }
      ["core", "block", "inline"].forEach(function(chain) {
        result = result.concat(this[chain].ruler.enable(list6, true));
      }, this);
      result = result.concat(this.inline.ruler2.enable(list6, true));
      var missed = list6.filter(function(name3) {
        return result.indexOf(name3) < 0;
      });
      if (missed.length && !ignoreInvalid) {
        throw new Error("MarkdownIt. Failed to enable unknown rule(s): " + missed);
      }
      return this;
    };
    MarkdownIt2.prototype.disable = function(list6, ignoreInvalid) {
      var result = [];
      if (!Array.isArray(list6)) {
        list6 = [list6];
      }
      ["core", "block", "inline"].forEach(function(chain) {
        result = result.concat(this[chain].ruler.disable(list6, true));
      }, this);
      result = result.concat(this.inline.ruler2.disable(list6, true));
      var missed = list6.filter(function(name3) {
        return result.indexOf(name3) < 0;
      });
      if (missed.length && !ignoreInvalid) {
        throw new Error("MarkdownIt. Failed to disable unknown rule(s): " + missed);
      }
      return this;
    };
    MarkdownIt2.prototype.use = function(plugin5) {
      var args = [this].concat(Array.prototype.slice.call(arguments, 1));
      plugin5.apply(plugin5, args);
      return this;
    };
    MarkdownIt2.prototype.parse = function(src, env6) {
      if (typeof src !== "string") {
        throw new Error("Input data should be a String");
      }
      var state = new this.core.State(src, this, env6);
      this.core.process(state);
      return state.tokens;
    };
    MarkdownIt2.prototype.render = function(src, env6) {
      env6 = env6 || {};
      return this.renderer.render(this.parse(src, env6), this.options, env6);
    };
    MarkdownIt2.prototype.parseInline = function(src, env6) {
      var state = new this.core.State(src, this, env6);
      state.inlineMode = true;
      this.core.process(state);
      return state.tokens;
    };
    MarkdownIt2.prototype.renderInline = function(src, env6) {
      env6 = env6 || {};
      return this.renderer.render(this.parseInline(src, env6), this.options, env6);
    };
    module2.exports = MarkdownIt2;
  }
});

// ../../node_modules/markdown-it/index.js
var require_markdown_it = __commonJS({
  "../../node_modules/markdown-it/index.js"(exports2, module2) {
    "use strict";
    module2.exports = require_lib14();
  }
});

// ../../node_modules/he/he.js
var require_he = __commonJS({
  "../../node_modules/he/he.js"(exports2, module2) {
    (function(root6) {
      var freeExports = typeof exports2 == "object" && exports2;
      var freeModule = typeof module2 == "object" && module2 && module2.exports == freeExports && module2;
      var freeGlobal = typeof global == "object" && global;
      if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
        root6 = freeGlobal;
      }
      var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
      var regexAsciiWhitelist = /[\x01-\x7F]/g;
      var regexBmpWhitelist = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;
      var regexEncodeNonAscii = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g;
      var encodeMap = { "\xAD": "shy", "\u200C": "zwnj", "\u200D": "zwj", "\u200E": "lrm", "\u2063": "ic", "\u2062": "it", "\u2061": "af", "\u200F": "rlm", "\u200B": "ZeroWidthSpace", "\u2060": "NoBreak", "\u0311": "DownBreve", "\u20DB": "tdot", "\u20DC": "DotDot", "	": "Tab", "\n": "NewLine", "\u2008": "puncsp", "\u205F": "MediumSpace", "\u2009": "thinsp", "\u200A": "hairsp", "\u2004": "emsp13", "\u2002": "ensp", "\u2005": "emsp14", "\u2003": "emsp", "\u2007": "numsp", "\xA0": "nbsp", "\u205F\u200A": "ThickSpace", "\u203E": "oline", "_": "lowbar", "\u2010": "dash", "\u2013": "ndash", "\u2014": "mdash", "\u2015": "horbar", ",": "comma", ";": "semi", "\u204F": "bsemi", ":": "colon", "\u2A74": "Colone", "!": "excl", "\xA1": "iexcl", "?": "quest", "\xBF": "iquest", ".": "period", "\u2025": "nldr", "\u2026": "mldr", "\xB7": "middot", "'": "apos", "\u2018": "lsquo", "\u2019": "rsquo", "\u201A": "sbquo", "\u2039": "lsaquo", "\u203A": "rsaquo", '"': "quot", "\u201C": "ldquo", "\u201D": "rdquo", "\u201E": "bdquo", "\xAB": "laquo", "\xBB": "raquo", "(": "lpar", ")": "rpar", "[": "lsqb", "]": "rsqb", "{": "lcub", "}": "rcub", "\u2308": "lceil", "\u2309": "rceil", "\u230A": "lfloor", "\u230B": "rfloor", "\u2985": "lopar", "\u2986": "ropar", "\u298B": "lbrke", "\u298C": "rbrke", "\u298D": "lbrkslu", "\u298E": "rbrksld", "\u298F": "lbrksld", "\u2990": "rbrkslu", "\u2991": "langd", "\u2992": "rangd", "\u2993": "lparlt", "\u2994": "rpargt", "\u2995": "gtlPar", "\u2996": "ltrPar", "\u27E6": "lobrk", "\u27E7": "robrk", "\u27E8": "lang", "\u27E9": "rang", "\u27EA": "Lang", "\u27EB": "Rang", "\u27EC": "loang", "\u27ED": "roang", "\u2772": "lbbrk", "\u2773": "rbbrk", "\u2016": "Vert", "\xA7": "sect", "\xB6": "para", "@": "commat", "*": "ast", "/": "sol", "undefined": null, "&": "amp", "#": "num", "%": "percnt", "\u2030": "permil", "\u2031": "pertenk", "\u2020": "dagger", "\u2021": "Dagger", "\u2022": "bull", "\u2043": "hybull", "\u2032": "prime", "\u2033": "Prime", "\u2034": "tprime", "\u2057": "qprime", "\u2035": "bprime", "\u2041": "caret", "`": "grave", "\xB4": "acute", "\u02DC": "tilde", "^": "Hat", "\xAF": "macr", "\u02D8": "breve", "\u02D9": "dot", "\xA8": "die", "\u02DA": "ring", "\u02DD": "dblac", "\xB8": "cedil", "\u02DB": "ogon", "\u02C6": "circ", "\u02C7": "caron", "\xB0": "deg", "\xA9": "copy", "\xAE": "reg", "\u2117": "copysr", "\u2118": "wp", "\u211E": "rx", "\u2127": "mho", "\u2129": "iiota", "\u2190": "larr", "\u219A": "nlarr", "\u2192": "rarr", "\u219B": "nrarr", "\u2191": "uarr", "\u2193": "darr", "\u2194": "harr", "\u21AE": "nharr", "\u2195": "varr", "\u2196": "nwarr", "\u2197": "nearr", "\u2198": "searr", "\u2199": "swarr", "\u219D": "rarrw", "\u219D\u0338": "nrarrw", "\u219E": "Larr", "\u219F": "Uarr", "\u21A0": "Rarr", "\u21A1": "Darr", "\u21A2": "larrtl", "\u21A3": "rarrtl", "\u21A4": "mapstoleft", "\u21A5": "mapstoup", "\u21A6": "map", "\u21A7": "mapstodown", "\u21A9": "larrhk", "\u21AA": "rarrhk", "\u21AB": "larrlp", "\u21AC": "rarrlp", "\u21AD": "harrw", "\u21B0": "lsh", "\u21B1": "rsh", "\u21B2": "ldsh", "\u21B3": "rdsh", "\u21B5": "crarr", "\u21B6": "cularr", "\u21B7": "curarr", "\u21BA": "olarr", "\u21BB": "orarr", "\u21BC": "lharu", "\u21BD": "lhard", "\u21BE": "uharr", "\u21BF": "uharl", "\u21C0": "rharu", "\u21C1": "rhard", "\u21C2": "dharr", "\u21C3": "dharl", "\u21C4": "rlarr", "\u21C5": "udarr", "\u21C6": "lrarr", "\u21C7": "llarr", "\u21C8": "uuarr", "\u21C9": "rrarr", "\u21CA": "ddarr", "\u21CB": "lrhar", "\u21CC": "rlhar", "\u21D0": "lArr", "\u21CD": "nlArr", "\u21D1": "uArr", "\u21D2": "rArr", "\u21CF": "nrArr", "\u21D3": "dArr", "\u21D4": "iff", "\u21CE": "nhArr", "\u21D5": "vArr", "\u21D6": "nwArr", "\u21D7": "neArr", "\u21D8": "seArr", "\u21D9": "swArr", "\u21DA": "lAarr", "\u21DB": "rAarr", "\u21DD": "zigrarr", "\u21E4": "larrb", "\u21E5": "rarrb", "\u21F5": "duarr", "\u21FD": "loarr", "\u21FE": "roarr", "\u21FF": "hoarr", "\u2200": "forall", "\u2201": "comp", "\u2202": "part", "\u2202\u0338": "npart", "\u2203": "exist", "\u2204": "nexist", "\u2205": "empty", "\u2207": "Del", "\u2208": "in", "\u2209": "notin", "\u220B": "ni", "\u220C": "notni", "\u03F6": "bepsi", "\u220F": "prod", "\u2210": "coprod", "\u2211": "sum", "+": "plus", "\xB1": "pm", "\xF7": "div", "\xD7": "times", "<": "lt", "\u226E": "nlt", "<\u20D2": "nvlt", "=": "equals", "\u2260": "ne", "=\u20E5": "bne", "\u2A75": "Equal", ">": "gt", "\u226F": "ngt", ">\u20D2": "nvgt", "\xAC": "not", "|": "vert", "\xA6": "brvbar", "\u2212": "minus", "\u2213": "mp", "\u2214": "plusdo", "\u2044": "frasl", "\u2216": "setmn", "\u2217": "lowast", "\u2218": "compfn", "\u221A": "Sqrt", "\u221D": "prop", "\u221E": "infin", "\u221F": "angrt", "\u2220": "ang", "\u2220\u20D2": "nang", "\u2221": "angmsd", "\u2222": "angsph", "\u2223": "mid", "\u2224": "nmid", "\u2225": "par", "\u2226": "npar", "\u2227": "and", "\u2228": "or", "\u2229": "cap", "\u2229\uFE00": "caps", "\u222A": "cup", "\u222A\uFE00": "cups", "\u222B": "int", "\u222C": "Int", "\u222D": "tint", "\u2A0C": "qint", "\u222E": "oint", "\u222F": "Conint", "\u2230": "Cconint", "\u2231": "cwint", "\u2232": "cwconint", "\u2233": "awconint", "\u2234": "there4", "\u2235": "becaus", "\u2236": "ratio", "\u2237": "Colon", "\u2238": "minusd", "\u223A": "mDDot", "\u223B": "homtht", "\u223C": "sim", "\u2241": "nsim", "\u223C\u20D2": "nvsim", "\u223D": "bsim", "\u223D\u0331": "race", "\u223E": "ac", "\u223E\u0333": "acE", "\u223F": "acd", "\u2240": "wr", "\u2242": "esim", "\u2242\u0338": "nesim", "\u2243": "sime", "\u2244": "nsime", "\u2245": "cong", "\u2247": "ncong", "\u2246": "simne", "\u2248": "ap", "\u2249": "nap", "\u224A": "ape", "\u224B": "apid", "\u224B\u0338": "napid", "\u224C": "bcong", "\u224D": "CupCap", "\u226D": "NotCupCap", "\u224D\u20D2": "nvap", "\u224E": "bump", "\u224E\u0338": "nbump", "\u224F": "bumpe", "\u224F\u0338": "nbumpe", "\u2250": "doteq", "\u2250\u0338": "nedot", "\u2251": "eDot", "\u2252": "efDot", "\u2253": "erDot", "\u2254": "colone", "\u2255": "ecolon", "\u2256": "ecir", "\u2257": "cire", "\u2259": "wedgeq", "\u225A": "veeeq", "\u225C": "trie", "\u225F": "equest", "\u2261": "equiv", "\u2262": "nequiv", "\u2261\u20E5": "bnequiv", "\u2264": "le", "\u2270": "nle", "\u2264\u20D2": "nvle", "\u2265": "ge", "\u2271": "nge", "\u2265\u20D2": "nvge", "\u2266": "lE", "\u2266\u0338": "nlE", "\u2267": "gE", "\u2267\u0338": "ngE", "\u2268\uFE00": "lvnE", "\u2268": "lnE", "\u2269": "gnE", "\u2269\uFE00": "gvnE", "\u226A": "ll", "\u226A\u0338": "nLtv", "\u226A\u20D2": "nLt", "\u226B": "gg", "\u226B\u0338": "nGtv", "\u226B\u20D2": "nGt", "\u226C": "twixt", "\u2272": "lsim", "\u2274": "nlsim", "\u2273": "gsim", "\u2275": "ngsim", "\u2276": "lg", "\u2278": "ntlg", "\u2277": "gl", "\u2279": "ntgl", "\u227A": "pr", "\u2280": "npr", "\u227B": "sc", "\u2281": "nsc", "\u227C": "prcue", "\u22E0": "nprcue", "\u227D": "sccue", "\u22E1": "nsccue", "\u227E": "prsim", "\u227F": "scsim", "\u227F\u0338": "NotSucceedsTilde", "\u2282": "sub", "\u2284": "nsub", "\u2282\u20D2": "vnsub", "\u2283": "sup", "\u2285": "nsup", "\u2283\u20D2": "vnsup", "\u2286": "sube", "\u2288": "nsube", "\u2287": "supe", "\u2289": "nsupe", "\u228A\uFE00": "vsubne", "\u228A": "subne", "\u228B\uFE00": "vsupne", "\u228B": "supne", "\u228D": "cupdot", "\u228E": "uplus", "\u228F": "sqsub", "\u228F\u0338": "NotSquareSubset", "\u2290": "sqsup", "\u2290\u0338": "NotSquareSuperset", "\u2291": "sqsube", "\u22E2": "nsqsube", "\u2292": "sqsupe", "\u22E3": "nsqsupe", "\u2293": "sqcap", "\u2293\uFE00": "sqcaps", "\u2294": "sqcup", "\u2294\uFE00": "sqcups", "\u2295": "oplus", "\u2296": "ominus", "\u2297": "otimes", "\u2298": "osol", "\u2299": "odot", "\u229A": "ocir", "\u229B": "oast", "\u229D": "odash", "\u229E": "plusb", "\u229F": "minusb", "\u22A0": "timesb", "\u22A1": "sdotb", "\u22A2": "vdash", "\u22AC": "nvdash", "\u22A3": "dashv", "\u22A4": "top", "\u22A5": "bot", "\u22A7": "models", "\u22A8": "vDash", "\u22AD": "nvDash", "\u22A9": "Vdash", "\u22AE": "nVdash", "\u22AA": "Vvdash", "\u22AB": "VDash", "\u22AF": "nVDash", "\u22B0": "prurel", "\u22B2": "vltri", "\u22EA": "nltri", "\u22B3": "vrtri", "\u22EB": "nrtri", "\u22B4": "ltrie", "\u22EC": "nltrie", "\u22B4\u20D2": "nvltrie", "\u22B5": "rtrie", "\u22ED": "nrtrie", "\u22B5\u20D2": "nvrtrie", "\u22B6": "origof", "\u22B7": "imof", "\u22B8": "mumap", "\u22B9": "hercon", "\u22BA": "intcal", "\u22BB": "veebar", "\u22BD": "barvee", "\u22BE": "angrtvb", "\u22BF": "lrtri", "\u22C0": "Wedge", "\u22C1": "Vee", "\u22C2": "xcap", "\u22C3": "xcup", "\u22C4": "diam", "\u22C5": "sdot", "\u22C6": "Star", "\u22C7": "divonx", "\u22C8": "bowtie", "\u22C9": "ltimes", "\u22CA": "rtimes", "\u22CB": "lthree", "\u22CC": "rthree", "\u22CD": "bsime", "\u22CE": "cuvee", "\u22CF": "cuwed", "\u22D0": "Sub", "\u22D1": "Sup", "\u22D2": "Cap", "\u22D3": "Cup", "\u22D4": "fork", "\u22D5": "epar", "\u22D6": "ltdot", "\u22D7": "gtdot", "\u22D8": "Ll", "\u22D8\u0338": "nLl", "\u22D9": "Gg", "\u22D9\u0338": "nGg", "\u22DA\uFE00": "lesg", "\u22DA": "leg", "\u22DB": "gel", "\u22DB\uFE00": "gesl", "\u22DE": "cuepr", "\u22DF": "cuesc", "\u22E6": "lnsim", "\u22E7": "gnsim", "\u22E8": "prnsim", "\u22E9": "scnsim", "\u22EE": "vellip", "\u22EF": "ctdot", "\u22F0": "utdot", "\u22F1": "dtdot", "\u22F2": "disin", "\u22F3": "isinsv", "\u22F4": "isins", "\u22F5": "isindot", "\u22F5\u0338": "notindot", "\u22F6": "notinvc", "\u22F7": "notinvb", "\u22F9": "isinE", "\u22F9\u0338": "notinE", "\u22FA": "nisd", "\u22FB": "xnis", "\u22FC": "nis", "\u22FD": "notnivc", "\u22FE": "notnivb", "\u2305": "barwed", "\u2306": "Barwed", "\u230C": "drcrop", "\u230D": "dlcrop", "\u230E": "urcrop", "\u230F": "ulcrop", "\u2310": "bnot", "\u2312": "profline", "\u2313": "profsurf", "\u2315": "telrec", "\u2316": "target", "\u231C": "ulcorn", "\u231D": "urcorn", "\u231E": "dlcorn", "\u231F": "drcorn", "\u2322": "frown", "\u2323": "smile", "\u232D": "cylcty", "\u232E": "profalar", "\u2336": "topbot", "\u233D": "ovbar", "\u233F": "solbar", "\u237C": "angzarr", "\u23B0": "lmoust", "\u23B1": "rmoust", "\u23B4": "tbrk", "\u23B5": "bbrk", "\u23B6": "bbrktbrk", "\u23DC": "OverParenthesis", "\u23DD": "UnderParenthesis", "\u23DE": "OverBrace", "\u23DF": "UnderBrace", "\u23E2": "trpezium", "\u23E7": "elinters", "\u2423": "blank", "\u2500": "boxh", "\u2502": "boxv", "\u250C": "boxdr", "\u2510": "boxdl", "\u2514": "boxur", "\u2518": "boxul", "\u251C": "boxvr", "\u2524": "boxvl", "\u252C": "boxhd", "\u2534": "boxhu", "\u253C": "boxvh", "\u2550": "boxH", "\u2551": "boxV", "\u2552": "boxdR", "\u2553": "boxDr", "\u2554": "boxDR", "\u2555": "boxdL", "\u2556": "boxDl", "\u2557": "boxDL", "\u2558": "boxuR", "\u2559": "boxUr", "\u255A": "boxUR", "\u255B": "boxuL", "\u255C": "boxUl", "\u255D": "boxUL", "\u255E": "boxvR", "\u255F": "boxVr", "\u2560": "boxVR", "\u2561": "boxvL", "\u2562": "boxVl", "\u2563": "boxVL", "\u2564": "boxHd", "\u2565": "boxhD", "\u2566": "boxHD", "\u2567": "boxHu", "\u2568": "boxhU", "\u2569": "boxHU", "\u256A": "boxvH", "\u256B": "boxVh", "\u256C": "boxVH", "\u2580": "uhblk", "\u2584": "lhblk", "\u2588": "block", "\u2591": "blk14", "\u2592": "blk12", "\u2593": "blk34", "\u25A1": "squ", "\u25AA": "squf", "\u25AB": "EmptyVerySmallSquare", "\u25AD": "rect", "\u25AE": "marker", "\u25B1": "fltns", "\u25B3": "xutri", "\u25B4": "utrif", "\u25B5": "utri", "\u25B8": "rtrif", "\u25B9": "rtri", "\u25BD": "xdtri", "\u25BE": "dtrif", "\u25BF": "dtri", "\u25C2": "ltrif", "\u25C3": "ltri", "\u25CA": "loz", "\u25CB": "cir", "\u25EC": "tridot", "\u25EF": "xcirc", "\u25F8": "ultri", "\u25F9": "urtri", "\u25FA": "lltri", "\u25FB": "EmptySmallSquare", "\u25FC": "FilledSmallSquare", "\u2605": "starf", "\u2606": "star", "\u260E": "phone", "\u2640": "female", "\u2642": "male", "\u2660": "spades", "\u2663": "clubs", "\u2665": "hearts", "\u2666": "diams", "\u266A": "sung", "\u2713": "check", "\u2717": "cross", "\u2720": "malt", "\u2736": "sext", "\u2758": "VerticalSeparator", "\u27C8": "bsolhsub", "\u27C9": "suphsol", "\u27F5": "xlarr", "\u27F6": "xrarr", "\u27F7": "xharr", "\u27F8": "xlArr", "\u27F9": "xrArr", "\u27FA": "xhArr", "\u27FC": "xmap", "\u27FF": "dzigrarr", "\u2902": "nvlArr", "\u2903": "nvrArr", "\u2904": "nvHarr", "\u2905": "Map", "\u290C": "lbarr", "\u290D": "rbarr", "\u290E": "lBarr", "\u290F": "rBarr", "\u2910": "RBarr", "\u2911": "DDotrahd", "\u2912": "UpArrowBar", "\u2913": "DownArrowBar", "\u2916": "Rarrtl", "\u2919": "latail", "\u291A": "ratail", "\u291B": "lAtail", "\u291C": "rAtail", "\u291D": "larrfs", "\u291E": "rarrfs", "\u291F": "larrbfs", "\u2920": "rarrbfs", "\u2923": "nwarhk", "\u2924": "nearhk", "\u2925": "searhk", "\u2926": "swarhk", "\u2927": "nwnear", "\u2928": "toea", "\u2929": "tosa", "\u292A": "swnwar", "\u2933": "rarrc", "\u2933\u0338": "nrarrc", "\u2935": "cudarrr", "\u2936": "ldca", "\u2937": "rdca", "\u2938": "cudarrl", "\u2939": "larrpl", "\u293C": "curarrm", "\u293D": "cularrp", "\u2945": "rarrpl", "\u2948": "harrcir", "\u2949": "Uarrocir", "\u294A": "lurdshar", "\u294B": "ldrushar", "\u294E": "LeftRightVector", "\u294F": "RightUpDownVector", "\u2950": "DownLeftRightVector", "\u2951": "LeftUpDownVector", "\u2952": "LeftVectorBar", "\u2953": "RightVectorBar", "\u2954": "RightUpVectorBar", "\u2955": "RightDownVectorBar", "\u2956": "DownLeftVectorBar", "\u2957": "DownRightVectorBar", "\u2958": "LeftUpVectorBar", "\u2959": "LeftDownVectorBar", "\u295A": "LeftTeeVector", "\u295B": "RightTeeVector", "\u295C": "RightUpTeeVector", "\u295D": "RightDownTeeVector", "\u295E": "DownLeftTeeVector", "\u295F": "DownRightTeeVector", "\u2960": "LeftUpTeeVector", "\u2961": "LeftDownTeeVector", "\u2962": "lHar", "\u2963": "uHar", "\u2964": "rHar", "\u2965": "dHar", "\u2966": "luruhar", "\u2967": "ldrdhar", "\u2968": "ruluhar", "\u2969": "rdldhar", "\u296A": "lharul", "\u296B": "llhard", "\u296C": "rharul", "\u296D": "lrhard", "\u296E": "udhar", "\u296F": "duhar", "\u2970": "RoundImplies", "\u2971": "erarr", "\u2972": "simrarr", "\u2973": "larrsim", "\u2974": "rarrsim", "\u2975": "rarrap", "\u2976": "ltlarr", "\u2978": "gtrarr", "\u2979": "subrarr", "\u297B": "suplarr", "\u297C": "lfisht", "\u297D": "rfisht", "\u297E": "ufisht", "\u297F": "dfisht", "\u299A": "vzigzag", "\u299C": "vangrt", "\u299D": "angrtvbd", "\u29A4": "ange", "\u29A5": "range", "\u29A6": "dwangle", "\u29A7": "uwangle", "\u29A8": "angmsdaa", "\u29A9": "angmsdab", "\u29AA": "angmsdac", "\u29AB": "angmsdad", "\u29AC": "angmsdae", "\u29AD": "angmsdaf", "\u29AE": "angmsdag", "\u29AF": "angmsdah", "\u29B0": "bemptyv", "\u29B1": "demptyv", "\u29B2": "cemptyv", "\u29B3": "raemptyv", "\u29B4": "laemptyv", "\u29B5": "ohbar", "\u29B6": "omid", "\u29B7": "opar", "\u29B9": "operp", "\u29BB": "olcross", "\u29BC": "odsold", "\u29BE": "olcir", "\u29BF": "ofcir", "\u29C0": "olt", "\u29C1": "ogt", "\u29C2": "cirscir", "\u29C3": "cirE", "\u29C4": "solb", "\u29C5": "bsolb", "\u29C9": "boxbox", "\u29CD": "trisb", "\u29CE": "rtriltri", "\u29CF": "LeftTriangleBar", "\u29CF\u0338": "NotLeftTriangleBar", "\u29D0": "RightTriangleBar", "\u29D0\u0338": "NotRightTriangleBar", "\u29DC": "iinfin", "\u29DD": "infintie", "\u29DE": "nvinfin", "\u29E3": "eparsl", "\u29E4": "smeparsl", "\u29E5": "eqvparsl", "\u29EB": "lozf", "\u29F4": "RuleDelayed", "\u29F6": "dsol", "\u2A00": "xodot", "\u2A01": "xoplus", "\u2A02": "xotime", "\u2A04": "xuplus", "\u2A06": "xsqcup", "\u2A0D": "fpartint", "\u2A10": "cirfnint", "\u2A11": "awint", "\u2A12": "rppolint", "\u2A13": "scpolint", "\u2A14": "npolint", "\u2A15": "pointint", "\u2A16": "quatint", "\u2A17": "intlarhk", "\u2A22": "pluscir", "\u2A23": "plusacir", "\u2A24": "simplus", "\u2A25": "plusdu", "\u2A26": "plussim", "\u2A27": "plustwo", "\u2A29": "mcomma", "\u2A2A": "minusdu", "\u2A2D": "loplus", "\u2A2E": "roplus", "\u2A2F": "Cross", "\u2A30": "timesd", "\u2A31": "timesbar", "\u2A33": "smashp", "\u2A34": "lotimes", "\u2A35": "rotimes", "\u2A36": "otimesas", "\u2A37": "Otimes", "\u2A38": "odiv", "\u2A39": "triplus", "\u2A3A": "triminus", "\u2A3B": "tritime", "\u2A3C": "iprod", "\u2A3F": "amalg", "\u2A40": "capdot", "\u2A42": "ncup", "\u2A43": "ncap", "\u2A44": "capand", "\u2A45": "cupor", "\u2A46": "cupcap", "\u2A47": "capcup", "\u2A48": "cupbrcap", "\u2A49": "capbrcup", "\u2A4A": "cupcup", "\u2A4B": "capcap", "\u2A4C": "ccups", "\u2A4D": "ccaps", "\u2A50": "ccupssm", "\u2A53": "And", "\u2A54": "Or", "\u2A55": "andand", "\u2A56": "oror", "\u2A57": "orslope", "\u2A58": "andslope", "\u2A5A": "andv", "\u2A5B": "orv", "\u2A5C": "andd", "\u2A5D": "ord", "\u2A5F": "wedbar", "\u2A66": "sdote", "\u2A6A": "simdot", "\u2A6D": "congdot", "\u2A6D\u0338": "ncongdot", "\u2A6E": "easter", "\u2A6F": "apacir", "\u2A70": "apE", "\u2A70\u0338": "napE", "\u2A71": "eplus", "\u2A72": "pluse", "\u2A73": "Esim", "\u2A77": "eDDot", "\u2A78": "equivDD", "\u2A79": "ltcir", "\u2A7A": "gtcir", "\u2A7B": "ltquest", "\u2A7C": "gtquest", "\u2A7D": "les", "\u2A7D\u0338": "nles", "\u2A7E": "ges", "\u2A7E\u0338": "nges", "\u2A7F": "lesdot", "\u2A80": "gesdot", "\u2A81": "lesdoto", "\u2A82": "gesdoto", "\u2A83": "lesdotor", "\u2A84": "gesdotol", "\u2A85": "lap", "\u2A86": "gap", "\u2A87": "lne", "\u2A88": "gne", "\u2A89": "lnap", "\u2A8A": "gnap", "\u2A8B": "lEg", "\u2A8C": "gEl", "\u2A8D": "lsime", "\u2A8E": "gsime", "\u2A8F": "lsimg", "\u2A90": "gsiml", "\u2A91": "lgE", "\u2A92": "glE", "\u2A93": "lesges", "\u2A94": "gesles", "\u2A95": "els", "\u2A96": "egs", "\u2A97": "elsdot", "\u2A98": "egsdot", "\u2A99": "el", "\u2A9A": "eg", "\u2A9D": "siml", "\u2A9E": "simg", "\u2A9F": "simlE", "\u2AA0": "simgE", "\u2AA1": "LessLess", "\u2AA1\u0338": "NotNestedLessLess", "\u2AA2": "GreaterGreater", "\u2AA2\u0338": "NotNestedGreaterGreater", "\u2AA4": "glj", "\u2AA5": "gla", "\u2AA6": "ltcc", "\u2AA7": "gtcc", "\u2AA8": "lescc", "\u2AA9": "gescc", "\u2AAA": "smt", "\u2AAB": "lat", "\u2AAC": "smte", "\u2AAC\uFE00": "smtes", "\u2AAD": "late", "\u2AAD\uFE00": "lates", "\u2AAE": "bumpE", "\u2AAF": "pre", "\u2AAF\u0338": "npre", "\u2AB0": "sce", "\u2AB0\u0338": "nsce", "\u2AB3": "prE", "\u2AB4": "scE", "\u2AB5": "prnE", "\u2AB6": "scnE", "\u2AB7": "prap", "\u2AB8": "scap", "\u2AB9": "prnap", "\u2ABA": "scnap", "\u2ABB": "Pr", "\u2ABC": "Sc", "\u2ABD": "subdot", "\u2ABE": "supdot", "\u2ABF": "subplus", "\u2AC0": "supplus", "\u2AC1": "submult", "\u2AC2": "supmult", "\u2AC3": "subedot", "\u2AC4": "supedot", "\u2AC5": "subE", "\u2AC5\u0338": "nsubE", "\u2AC6": "supE", "\u2AC6\u0338": "nsupE", "\u2AC7": "subsim", "\u2AC8": "supsim", "\u2ACB\uFE00": "vsubnE", "\u2ACB": "subnE", "\u2ACC\uFE00": "vsupnE", "\u2ACC": "supnE", "\u2ACF": "csub", "\u2AD0": "csup", "\u2AD1": "csube", "\u2AD2": "csupe", "\u2AD3": "subsup", "\u2AD4": "supsub", "\u2AD5": "subsub", "\u2AD6": "supsup", "\u2AD7": "suphsub", "\u2AD8": "supdsub", "\u2AD9": "forkv", "\u2ADA": "topfork", "\u2ADB": "mlcp", "\u2AE4": "Dashv", "\u2AE6": "Vdashl", "\u2AE7": "Barv", "\u2AE8": "vBar", "\u2AE9": "vBarv", "\u2AEB": "Vbar", "\u2AEC": "Not", "\u2AED": "bNot", "\u2AEE": "rnmid", "\u2AEF": "cirmid", "\u2AF0": "midcir", "\u2AF1": "topcir", "\u2AF2": "nhpar", "\u2AF3": "parsim", "\u2AFD": "parsl", "\u2AFD\u20E5": "nparsl", "\u266D": "flat", "\u266E": "natur", "\u266F": "sharp", "\xA4": "curren", "\xA2": "cent", "$": "dollar", "\xA3": "pound", "\xA5": "yen", "\u20AC": "euro", "\xB9": "sup1", "\xBD": "half", "\u2153": "frac13", "\xBC": "frac14", "\u2155": "frac15", "\u2159": "frac16", "\u215B": "frac18", "\xB2": "sup2", "\u2154": "frac23", "\u2156": "frac25", "\xB3": "sup3", "\xBE": "frac34", "\u2157": "frac35", "\u215C": "frac38", "\u2158": "frac45", "\u215A": "frac56", "\u215D": "frac58", "\u215E": "frac78", "\u{1D4B6}": "ascr", "\u{1D552}": "aopf", "\u{1D51E}": "afr", "\u{1D538}": "Aopf", "\u{1D504}": "Afr", "\u{1D49C}": "Ascr", "\xAA": "ordf", "\xE1": "aacute", "\xC1": "Aacute", "\xE0": "agrave", "\xC0": "Agrave", "\u0103": "abreve", "\u0102": "Abreve", "\xE2": "acirc", "\xC2": "Acirc", "\xE5": "aring", "\xC5": "angst", "\xE4": "auml", "\xC4": "Auml", "\xE3": "atilde", "\xC3": "Atilde", "\u0105": "aogon", "\u0104": "Aogon", "\u0101": "amacr", "\u0100": "Amacr", "\xE6": "aelig", "\xC6": "AElig", "\u{1D4B7}": "bscr", "\u{1D553}": "bopf", "\u{1D51F}": "bfr", "\u{1D539}": "Bopf", "\u212C": "Bscr", "\u{1D505}": "Bfr", "\u{1D520}": "cfr", "\u{1D4B8}": "cscr", "\u{1D554}": "copf", "\u212D": "Cfr", "\u{1D49E}": "Cscr", "\u2102": "Copf", "\u0107": "cacute", "\u0106": "Cacute", "\u0109": "ccirc", "\u0108": "Ccirc", "\u010D": "ccaron", "\u010C": "Ccaron", "\u010B": "cdot", "\u010A": "Cdot", "\xE7": "ccedil", "\xC7": "Ccedil", "\u2105": "incare", "\u{1D521}": "dfr", "\u2146": "dd", "\u{1D555}": "dopf", "\u{1D4B9}": "dscr", "\u{1D49F}": "Dscr", "\u{1D507}": "Dfr", "\u2145": "DD", "\u{1D53B}": "Dopf", "\u010F": "dcaron", "\u010E": "Dcaron", "\u0111": "dstrok", "\u0110": "Dstrok", "\xF0": "eth", "\xD0": "ETH", "\u2147": "ee", "\u212F": "escr", "\u{1D522}": "efr", "\u{1D556}": "eopf", "\u2130": "Escr", "\u{1D508}": "Efr", "\u{1D53C}": "Eopf", "\xE9": "eacute", "\xC9": "Eacute", "\xE8": "egrave", "\xC8": "Egrave", "\xEA": "ecirc", "\xCA": "Ecirc", "\u011B": "ecaron", "\u011A": "Ecaron", "\xEB": "euml", "\xCB": "Euml", "\u0117": "edot", "\u0116": "Edot", "\u0119": "eogon", "\u0118": "Eogon", "\u0113": "emacr", "\u0112": "Emacr", "\u{1D523}": "ffr", "\u{1D557}": "fopf", "\u{1D4BB}": "fscr", "\u{1D509}": "Ffr", "\u{1D53D}": "Fopf", "\u2131": "Fscr", "\uFB00": "fflig", "\uFB03": "ffilig", "\uFB04": "ffllig", "\uFB01": "filig", "fj": "fjlig", "\uFB02": "fllig", "\u0192": "fnof", "\u210A": "gscr", "\u{1D558}": "gopf", "\u{1D524}": "gfr", "\u{1D4A2}": "Gscr", "\u{1D53E}": "Gopf", "\u{1D50A}": "Gfr", "\u01F5": "gacute", "\u011F": "gbreve", "\u011E": "Gbreve", "\u011D": "gcirc", "\u011C": "Gcirc", "\u0121": "gdot", "\u0120": "Gdot", "\u0122": "Gcedil", "\u{1D525}": "hfr", "\u210E": "planckh", "\u{1D4BD}": "hscr", "\u{1D559}": "hopf", "\u210B": "Hscr", "\u210C": "Hfr", "\u210D": "Hopf", "\u0125": "hcirc", "\u0124": "Hcirc", "\u210F": "hbar", "\u0127": "hstrok", "\u0126": "Hstrok", "\u{1D55A}": "iopf", "\u{1D526}": "ifr", "\u{1D4BE}": "iscr", "\u2148": "ii", "\u{1D540}": "Iopf", "\u2110": "Iscr", "\u2111": "Im", "\xED": "iacute", "\xCD": "Iacute", "\xEC": "igrave", "\xCC": "Igrave", "\xEE": "icirc", "\xCE": "Icirc", "\xEF": "iuml", "\xCF": "Iuml", "\u0129": "itilde", "\u0128": "Itilde", "\u0130": "Idot", "\u012F": "iogon", "\u012E": "Iogon", "\u012B": "imacr", "\u012A": "Imacr", "\u0133": "ijlig", "\u0132": "IJlig", "\u0131": "imath", "\u{1D4BF}": "jscr", "\u{1D55B}": "jopf", "\u{1D527}": "jfr", "\u{1D4A5}": "Jscr", "\u{1D50D}": "Jfr", "\u{1D541}": "Jopf", "\u0135": "jcirc", "\u0134": "Jcirc", "\u0237": "jmath", "\u{1D55C}": "kopf", "\u{1D4C0}": "kscr", "\u{1D528}": "kfr", "\u{1D4A6}": "Kscr", "\u{1D542}": "Kopf", "\u{1D50E}": "Kfr", "\u0137": "kcedil", "\u0136": "Kcedil", "\u{1D529}": "lfr", "\u{1D4C1}": "lscr", "\u2113": "ell", "\u{1D55D}": "lopf", "\u2112": "Lscr", "\u{1D50F}": "Lfr", "\u{1D543}": "Lopf", "\u013A": "lacute", "\u0139": "Lacute", "\u013E": "lcaron", "\u013D": "Lcaron", "\u013C": "lcedil", "\u013B": "Lcedil", "\u0142": "lstrok", "\u0141": "Lstrok", "\u0140": "lmidot", "\u013F": "Lmidot", "\u{1D52A}": "mfr", "\u{1D55E}": "mopf", "\u{1D4C2}": "mscr", "\u{1D510}": "Mfr", "\u{1D544}": "Mopf", "\u2133": "Mscr", "\u{1D52B}": "nfr", "\u{1D55F}": "nopf", "\u{1D4C3}": "nscr", "\u2115": "Nopf", "\u{1D4A9}": "Nscr", "\u{1D511}": "Nfr", "\u0144": "nacute", "\u0143": "Nacute", "\u0148": "ncaron", "\u0147": "Ncaron", "\xF1": "ntilde", "\xD1": "Ntilde", "\u0146": "ncedil", "\u0145": "Ncedil", "\u2116": "numero", "\u014B": "eng", "\u014A": "ENG", "\u{1D560}": "oopf", "\u{1D52C}": "ofr", "\u2134": "oscr", "\u{1D4AA}": "Oscr", "\u{1D512}": "Ofr", "\u{1D546}": "Oopf", "\xBA": "ordm", "\xF3": "oacute", "\xD3": "Oacute", "\xF2": "ograve", "\xD2": "Ograve", "\xF4": "ocirc", "\xD4": "Ocirc", "\xF6": "ouml", "\xD6": "Ouml", "\u0151": "odblac", "\u0150": "Odblac", "\xF5": "otilde", "\xD5": "Otilde", "\xF8": "oslash", "\xD8": "Oslash", "\u014D": "omacr", "\u014C": "Omacr", "\u0153": "oelig", "\u0152": "OElig", "\u{1D52D}": "pfr", "\u{1D4C5}": "pscr", "\u{1D561}": "popf", "\u2119": "Popf", "\u{1D513}": "Pfr", "\u{1D4AB}": "Pscr", "\u{1D562}": "qopf", "\u{1D52E}": "qfr", "\u{1D4C6}": "qscr", "\u{1D4AC}": "Qscr", "\u{1D514}": "Qfr", "\u211A": "Qopf", "\u0138": "kgreen", "\u{1D52F}": "rfr", "\u{1D563}": "ropf", "\u{1D4C7}": "rscr", "\u211B": "Rscr", "\u211C": "Re", "\u211D": "Ropf", "\u0155": "racute", "\u0154": "Racute", "\u0159": "rcaron", "\u0158": "Rcaron", "\u0157": "rcedil", "\u0156": "Rcedil", "\u{1D564}": "sopf", "\u{1D4C8}": "sscr", "\u{1D530}": "sfr", "\u{1D54A}": "Sopf", "\u{1D516}": "Sfr", "\u{1D4AE}": "Sscr", "\u24C8": "oS", "\u015B": "sacute", "\u015A": "Sacute", "\u015D": "scirc", "\u015C": "Scirc", "\u0161": "scaron", "\u0160": "Scaron", "\u015F": "scedil", "\u015E": "Scedil", "\xDF": "szlig", "\u{1D531}": "tfr", "\u{1D4C9}": "tscr", "\u{1D565}": "topf", "\u{1D4AF}": "Tscr", "\u{1D517}": "Tfr", "\u{1D54B}": "Topf", "\u0165": "tcaron", "\u0164": "Tcaron", "\u0163": "tcedil", "\u0162": "Tcedil", "\u2122": "trade", "\u0167": "tstrok", "\u0166": "Tstrok", "\u{1D4CA}": "uscr", "\u{1D566}": "uopf", "\u{1D532}": "ufr", "\u{1D54C}": "Uopf", "\u{1D518}": "Ufr", "\u{1D4B0}": "Uscr", "\xFA": "uacute", "\xDA": "Uacute", "\xF9": "ugrave", "\xD9": "Ugrave", "\u016D": "ubreve", "\u016C": "Ubreve", "\xFB": "ucirc", "\xDB": "Ucirc", "\u016F": "uring", "\u016E": "Uring", "\xFC": "uuml", "\xDC": "Uuml", "\u0171": "udblac", "\u0170": "Udblac", "\u0169": "utilde", "\u0168": "Utilde", "\u0173": "uogon", "\u0172": "Uogon", "\u016B": "umacr", "\u016A": "Umacr", "\u{1D533}": "vfr", "\u{1D567}": "vopf", "\u{1D4CB}": "vscr", "\u{1D519}": "Vfr", "\u{1D54D}": "Vopf", "\u{1D4B1}": "Vscr", "\u{1D568}": "wopf", "\u{1D4CC}": "wscr", "\u{1D534}": "wfr", "\u{1D4B2}": "Wscr", "\u{1D54E}": "Wopf", "\u{1D51A}": "Wfr", "\u0175": "wcirc", "\u0174": "Wcirc", "\u{1D535}": "xfr", "\u{1D4CD}": "xscr", "\u{1D569}": "xopf", "\u{1D54F}": "Xopf", "\u{1D51B}": "Xfr", "\u{1D4B3}": "Xscr", "\u{1D536}": "yfr", "\u{1D4CE}": "yscr", "\u{1D56A}": "yopf", "\u{1D4B4}": "Yscr", "\u{1D51C}": "Yfr", "\u{1D550}": "Yopf", "\xFD": "yacute", "\xDD": "Yacute", "\u0177": "ycirc", "\u0176": "Ycirc", "\xFF": "yuml", "\u0178": "Yuml", "\u{1D4CF}": "zscr", "\u{1D537}": "zfr", "\u{1D56B}": "zopf", "\u2128": "Zfr", "\u2124": "Zopf", "\u{1D4B5}": "Zscr", "\u017A": "zacute", "\u0179": "Zacute", "\u017E": "zcaron", "\u017D": "Zcaron", "\u017C": "zdot", "\u017B": "Zdot", "\u01B5": "imped", "\xFE": "thorn", "\xDE": "THORN", "\u0149": "napos", "\u03B1": "alpha", "\u0391": "Alpha", "\u03B2": "beta", "\u0392": "Beta", "\u03B3": "gamma", "\u0393": "Gamma", "\u03B4": "delta", "\u0394": "Delta", "\u03B5": "epsi", "\u03F5": "epsiv", "\u0395": "Epsilon", "\u03DD": "gammad", "\u03DC": "Gammad", "\u03B6": "zeta", "\u0396": "Zeta", "\u03B7": "eta", "\u0397": "Eta", "\u03B8": "theta", "\u03D1": "thetav", "\u0398": "Theta", "\u03B9": "iota", "\u0399": "Iota", "\u03BA": "kappa", "\u03F0": "kappav", "\u039A": "Kappa", "\u03BB": "lambda", "\u039B": "Lambda", "\u03BC": "mu", "\xB5": "micro", "\u039C": "Mu", "\u03BD": "nu", "\u039D": "Nu", "\u03BE": "xi", "\u039E": "Xi", "\u03BF": "omicron", "\u039F": "Omicron", "\u03C0": "pi", "\u03D6": "piv", "\u03A0": "Pi", "\u03C1": "rho", "\u03F1": "rhov", "\u03A1": "Rho", "\u03C3": "sigma", "\u03A3": "Sigma", "\u03C2": "sigmaf", "\u03C4": "tau", "\u03A4": "Tau", "\u03C5": "upsi", "\u03A5": "Upsilon", "\u03D2": "Upsi", "\u03C6": "phi", "\u03D5": "phiv", "\u03A6": "Phi", "\u03C7": "chi", "\u03A7": "Chi", "\u03C8": "psi", "\u03A8": "Psi", "\u03C9": "omega", "\u03A9": "ohm", "\u0430": "acy", "\u0410": "Acy", "\u0431": "bcy", "\u0411": "Bcy", "\u0432": "vcy", "\u0412": "Vcy", "\u0433": "gcy", "\u0413": "Gcy", "\u0453": "gjcy", "\u0403": "GJcy", "\u0434": "dcy", "\u0414": "Dcy", "\u0452": "djcy", "\u0402": "DJcy", "\u0435": "iecy", "\u0415": "IEcy", "\u0451": "iocy", "\u0401": "IOcy", "\u0454": "jukcy", "\u0404": "Jukcy", "\u0436": "zhcy", "\u0416": "ZHcy", "\u0437": "zcy", "\u0417": "Zcy", "\u0455": "dscy", "\u0405": "DScy", "\u0438": "icy", "\u0418": "Icy", "\u0456": "iukcy", "\u0406": "Iukcy", "\u0457": "yicy", "\u0407": "YIcy", "\u0439": "jcy", "\u0419": "Jcy", "\u0458": "jsercy", "\u0408": "Jsercy", "\u043A": "kcy", "\u041A": "Kcy", "\u045C": "kjcy", "\u040C": "KJcy", "\u043B": "lcy", "\u041B": "Lcy", "\u0459": "ljcy", "\u0409": "LJcy", "\u043C": "mcy", "\u041C": "Mcy", "\u043D": "ncy", "\u041D": "Ncy", "\u045A": "njcy", "\u040A": "NJcy", "\u043E": "ocy", "\u041E": "Ocy", "\u043F": "pcy", "\u041F": "Pcy", "\u0440": "rcy", "\u0420": "Rcy", "\u0441": "scy", "\u0421": "Scy", "\u0442": "tcy", "\u0422": "Tcy", "\u045B": "tshcy", "\u040B": "TSHcy", "\u0443": "ucy", "\u0423": "Ucy", "\u045E": "ubrcy", "\u040E": "Ubrcy", "\u0444": "fcy", "\u0424": "Fcy", "\u0445": "khcy", "\u0425": "KHcy", "\u0446": "tscy", "\u0426": "TScy", "\u0447": "chcy", "\u0427": "CHcy", "\u045F": "dzcy", "\u040F": "DZcy", "\u0448": "shcy", "\u0428": "SHcy", "\u0449": "shchcy", "\u0429": "SHCHcy", "\u044A": "hardcy", "\u042A": "HARDcy", "\u044B": "ycy", "\u042B": "Ycy", "\u044C": "softcy", "\u042C": "SOFTcy", "\u044D": "ecy", "\u042D": "Ecy", "\u044E": "yucy", "\u042E": "YUcy", "\u044F": "yacy", "\u042F": "YAcy", "\u2135": "aleph", "\u2136": "beth", "\u2137": "gimel", "\u2138": "daleth" };
      var regexEscape = /["&'<>`]/g;
      var escapeMap = {
        '"': "&quot;",
        "&": "&amp;",
        "'": "&#x27;",
        "<": "&lt;",
        // See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the
        // following is not strictly necessary unless it’s part of a tag or an
        // unquoted attribute value. We’re only escaping it to support those
        // situations, and for XML support.
        ">": "&gt;",
        // In Internet Explorer ≤ 8, the backtick character can be used
        // to break out of (un)quoted attribute values or HTML comments.
        // See http://html5sec.org/#102, http://html5sec.org/#108, and
        // http://html5sec.org/#133.
        "`": "&#x60;"
      };
      var regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;
      var regexInvalidRawCodePoint = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
      var regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g;
      var decodeMap2 = { "aacute": "\xE1", "Aacute": "\xC1", "abreve": "\u0103", "Abreve": "\u0102", "ac": "\u223E", "acd": "\u223F", "acE": "\u223E\u0333", "acirc": "\xE2", "Acirc": "\xC2", "acute": "\xB4", "acy": "\u0430", "Acy": "\u0410", "aelig": "\xE6", "AElig": "\xC6", "af": "\u2061", "afr": "\u{1D51E}", "Afr": "\u{1D504}", "agrave": "\xE0", "Agrave": "\xC0", "alefsym": "\u2135", "aleph": "\u2135", "alpha": "\u03B1", "Alpha": "\u0391", "amacr": "\u0101", "Amacr": "\u0100", "amalg": "\u2A3F", "amp": "&", "AMP": "&", "and": "\u2227", "And": "\u2A53", "andand": "\u2A55", "andd": "\u2A5C", "andslope": "\u2A58", "andv": "\u2A5A", "ang": "\u2220", "ange": "\u29A4", "angle": "\u2220", "angmsd": "\u2221", "angmsdaa": "\u29A8", "angmsdab": "\u29A9", "angmsdac": "\u29AA", "angmsdad": "\u29AB", "angmsdae": "\u29AC", "angmsdaf": "\u29AD", "angmsdag": "\u29AE", "angmsdah": "\u29AF", "angrt": "\u221F", "angrtvb": "\u22BE", "angrtvbd": "\u299D", "angsph": "\u2222", "angst": "\xC5", "angzarr": "\u237C", "aogon": "\u0105", "Aogon": "\u0104", "aopf": "\u{1D552}", "Aopf": "\u{1D538}", "ap": "\u2248", "apacir": "\u2A6F", "ape": "\u224A", "apE": "\u2A70", "apid": "\u224B", "apos": "'", "ApplyFunction": "\u2061", "approx": "\u2248", "approxeq": "\u224A", "aring": "\xE5", "Aring": "\xC5", "ascr": "\u{1D4B6}", "Ascr": "\u{1D49C}", "Assign": "\u2254", "ast": "*", "asymp": "\u2248", "asympeq": "\u224D", "atilde": "\xE3", "Atilde": "\xC3", "auml": "\xE4", "Auml": "\xC4", "awconint": "\u2233", "awint": "\u2A11", "backcong": "\u224C", "backepsilon": "\u03F6", "backprime": "\u2035", "backsim": "\u223D", "backsimeq": "\u22CD", "Backslash": "\u2216", "Barv": "\u2AE7", "barvee": "\u22BD", "barwed": "\u2305", "Barwed": "\u2306", "barwedge": "\u2305", "bbrk": "\u23B5", "bbrktbrk": "\u23B6", "bcong": "\u224C", "bcy": "\u0431", "Bcy": "\u0411", "bdquo": "\u201E", "becaus": "\u2235", "because": "\u2235", "Because": "\u2235", "bemptyv": "\u29B0", "bepsi": "\u03F6", "bernou": "\u212C", "Bernoullis": "\u212C", "beta": "\u03B2", "Beta": "\u0392", "beth": "\u2136", "between": "\u226C", "bfr": "\u{1D51F}", "Bfr": "\u{1D505}", "bigcap": "\u22C2", "bigcirc": "\u25EF", "bigcup": "\u22C3", "bigodot": "\u2A00", "bigoplus": "\u2A01", "bigotimes": "\u2A02", "bigsqcup": "\u2A06", "bigstar": "\u2605", "bigtriangledown": "\u25BD", "bigtriangleup": "\u25B3", "biguplus": "\u2A04", "bigvee": "\u22C1", "bigwedge": "\u22C0", "bkarow": "\u290D", "blacklozenge": "\u29EB", "blacksquare": "\u25AA", "blacktriangle": "\u25B4", "blacktriangledown": "\u25BE", "blacktriangleleft": "\u25C2", "blacktriangleright": "\u25B8", "blank": "\u2423", "blk12": "\u2592", "blk14": "\u2591", "blk34": "\u2593", "block": "\u2588", "bne": "=\u20E5", "bnequiv": "\u2261\u20E5", "bnot": "\u2310", "bNot": "\u2AED", "bopf": "\u{1D553}", "Bopf": "\u{1D539}", "bot": "\u22A5", "bottom": "\u22A5", "bowtie": "\u22C8", "boxbox": "\u29C9", "boxdl": "\u2510", "boxdL": "\u2555", "boxDl": "\u2556", "boxDL": "\u2557", "boxdr": "\u250C", "boxdR": "\u2552", "boxDr": "\u2553", "boxDR": "\u2554", "boxh": "\u2500", "boxH": "\u2550", "boxhd": "\u252C", "boxhD": "\u2565", "boxHd": "\u2564", "boxHD": "\u2566", "boxhu": "\u2534", "boxhU": "\u2568", "boxHu": "\u2567", "boxHU": "\u2569", "boxminus": "\u229F", "boxplus": "\u229E", "boxtimes": "\u22A0", "boxul": "\u2518", "boxuL": "\u255B", "boxUl": "\u255C", "boxUL": "\u255D", "boxur": "\u2514", "boxuR": "\u2558", "boxUr": "\u2559", "boxUR": "\u255A", "boxv": "\u2502", "boxV": "\u2551", "boxvh": "\u253C", "boxvH": "\u256A", "boxVh": "\u256B", "boxVH": "\u256C", "boxvl": "\u2524", "boxvL": "\u2561", "boxVl": "\u2562", "boxVL": "\u2563", "boxvr": "\u251C", "boxvR": "\u255E", "boxVr": "\u255F", "boxVR": "\u2560", "bprime": "\u2035", "breve": "\u02D8", "Breve": "\u02D8", "brvbar": "\xA6", "bscr": "\u{1D4B7}", "Bscr": "\u212C", "bsemi": "\u204F", "bsim": "\u223D", "bsime": "\u22CD", "bsol": "\\", "bsolb": "\u29C5", "bsolhsub": "\u27C8", "bull": "\u2022", "bullet": "\u2022", "bump": "\u224E", "bumpe": "\u224F", "bumpE": "\u2AAE", "bumpeq": "\u224F", "Bumpeq": "\u224E", "cacute": "\u0107", "Cacute": "\u0106", "cap": "\u2229", "Cap": "\u22D2", "capand": "\u2A44", "capbrcup": "\u2A49", "capcap": "\u2A4B", "capcup": "\u2A47", "capdot": "\u2A40", "CapitalDifferentialD": "\u2145", "caps": "\u2229\uFE00", "caret": "\u2041", "caron": "\u02C7", "Cayleys": "\u212D", "ccaps": "\u2A4D", "ccaron": "\u010D", "Ccaron": "\u010C", "ccedil": "\xE7", "Ccedil": "\xC7", "ccirc": "\u0109", "Ccirc": "\u0108", "Cconint": "\u2230", "ccups": "\u2A4C", "ccupssm": "\u2A50", "cdot": "\u010B", "Cdot": "\u010A", "cedil": "\xB8", "Cedilla": "\xB8", "cemptyv": "\u29B2", "cent": "\xA2", "centerdot": "\xB7", "CenterDot": "\xB7", "cfr": "\u{1D520}", "Cfr": "\u212D", "chcy": "\u0447", "CHcy": "\u0427", "check": "\u2713", "checkmark": "\u2713", "chi": "\u03C7", "Chi": "\u03A7", "cir": "\u25CB", "circ": "\u02C6", "circeq": "\u2257", "circlearrowleft": "\u21BA", "circlearrowright": "\u21BB", "circledast": "\u229B", "circledcirc": "\u229A", "circleddash": "\u229D", "CircleDot": "\u2299", "circledR": "\xAE", "circledS": "\u24C8", "CircleMinus": "\u2296", "CirclePlus": "\u2295", "CircleTimes": "\u2297", "cire": "\u2257", "cirE": "\u29C3", "cirfnint": "\u2A10", "cirmid": "\u2AEF", "cirscir": "\u29C2", "ClockwiseContourIntegral": "\u2232", "CloseCurlyDoubleQuote": "\u201D", "CloseCurlyQuote": "\u2019", "clubs": "\u2663", "clubsuit": "\u2663", "colon": ":", "Colon": "\u2237", "colone": "\u2254", "Colone": "\u2A74", "coloneq": "\u2254", "comma": ",", "commat": "@", "comp": "\u2201", "compfn": "\u2218", "complement": "\u2201", "complexes": "\u2102", "cong": "\u2245", "congdot": "\u2A6D", "Congruent": "\u2261", "conint": "\u222E", "Conint": "\u222F", "ContourIntegral": "\u222E", "copf": "\u{1D554}", "Copf": "\u2102", "coprod": "\u2210", "Coproduct": "\u2210", "copy": "\xA9", "COPY": "\xA9", "copysr": "\u2117", "CounterClockwiseContourIntegral": "\u2233", "crarr": "\u21B5", "cross": "\u2717", "Cross": "\u2A2F", "cscr": "\u{1D4B8}", "Cscr": "\u{1D49E}", "csub": "\u2ACF", "csube": "\u2AD1", "csup": "\u2AD0", "csupe": "\u2AD2", "ctdot": "\u22EF", "cudarrl": "\u2938", "cudarrr": "\u2935", "cuepr": "\u22DE", "cuesc": "\u22DF", "cularr": "\u21B6", "cularrp": "\u293D", "cup": "\u222A", "Cup": "\u22D3", "cupbrcap": "\u2A48", "cupcap": "\u2A46", "CupCap": "\u224D", "cupcup": "\u2A4A", "cupdot": "\u228D", "cupor": "\u2A45", "cups": "\u222A\uFE00", "curarr": "\u21B7", "curarrm": "\u293C", "curlyeqprec": "\u22DE", "curlyeqsucc": "\u22DF", "curlyvee": "\u22CE", "curlywedge": "\u22CF", "curren": "\xA4", "curvearrowleft": "\u21B6", "curvearrowright": "\u21B7", "cuvee": "\u22CE", "cuwed": "\u22CF", "cwconint": "\u2232", "cwint": "\u2231", "cylcty": "\u232D", "dagger": "\u2020", "Dagger": "\u2021", "daleth": "\u2138", "darr": "\u2193", "dArr": "\u21D3", "Darr": "\u21A1", "dash": "\u2010", "dashv": "\u22A3", "Dashv": "\u2AE4", "dbkarow": "\u290F", "dblac": "\u02DD", "dcaron": "\u010F", "Dcaron": "\u010E", "dcy": "\u0434", "Dcy": "\u0414", "dd": "\u2146", "DD": "\u2145", "ddagger": "\u2021", "ddarr": "\u21CA", "DDotrahd": "\u2911", "ddotseq": "\u2A77", "deg": "\xB0", "Del": "\u2207", "delta": "\u03B4", "Delta": "\u0394", "demptyv": "\u29B1", "dfisht": "\u297F", "dfr": "\u{1D521}", "Dfr": "\u{1D507}", "dHar": "\u2965", "dharl": "\u21C3", "dharr": "\u21C2", "DiacriticalAcute": "\xB4", "DiacriticalDot": "\u02D9", "DiacriticalDoubleAcute": "\u02DD", "DiacriticalGrave": "`", "DiacriticalTilde": "\u02DC", "diam": "\u22C4", "diamond": "\u22C4", "Diamond": "\u22C4", "diamondsuit": "\u2666", "diams": "\u2666", "die": "\xA8", "DifferentialD": "\u2146", "digamma": "\u03DD", "disin": "\u22F2", "div": "\xF7", "divide": "\xF7", "divideontimes": "\u22C7", "divonx": "\u22C7", "djcy": "\u0452", "DJcy": "\u0402", "dlcorn": "\u231E", "dlcrop": "\u230D", "dollar": "$", "dopf": "\u{1D555}", "Dopf": "\u{1D53B}", "dot": "\u02D9", "Dot": "\xA8", "DotDot": "\u20DC", "doteq": "\u2250", "doteqdot": "\u2251", "DotEqual": "\u2250", "dotminus": "\u2238", "dotplus": "\u2214", "dotsquare": "\u22A1", "doublebarwedge": "\u2306", "DoubleContourIntegral": "\u222F", "DoubleDot": "\xA8", "DoubleDownArrow": "\u21D3", "DoubleLeftArrow": "\u21D0", "DoubleLeftRightArrow": "\u21D4", "DoubleLeftTee": "\u2AE4", "DoubleLongLeftArrow": "\u27F8", "DoubleLongLeftRightArrow": "\u27FA", "DoubleLongRightArrow": "\u27F9", "DoubleRightArrow": "\u21D2", "DoubleRightTee": "\u22A8", "DoubleUpArrow": "\u21D1", "DoubleUpDownArrow": "\u21D5", "DoubleVerticalBar": "\u2225", "downarrow": "\u2193", "Downarrow": "\u21D3", "DownArrow": "\u2193", "DownArrowBar": "\u2913", "DownArrowUpArrow": "\u21F5", "DownBreve": "\u0311", "downdownarrows": "\u21CA", "downharpoonleft": "\u21C3", "downharpoonright": "\u21C2", "DownLeftRightVector": "\u2950", "DownLeftTeeVector": "\u295E", "DownLeftVector": "\u21BD", "DownLeftVectorBar": "\u2956", "DownRightTeeVector": "\u295F", "DownRightVector": "\u21C1", "DownRightVectorBar": "\u2957", "DownTee": "\u22A4", "DownTeeArrow": "\u21A7", "drbkarow": "\u2910", "drcorn": "\u231F", "drcrop": "\u230C", "dscr": "\u{1D4B9}", "Dscr": "\u{1D49F}", "dscy": "\u0455", "DScy": "\u0405", "dsol": "\u29F6", "dstrok": "\u0111", "Dstrok": "\u0110", "dtdot": "\u22F1", "dtri": "\u25BF", "dtrif": "\u25BE", "duarr": "\u21F5", "duhar": "\u296F", "dwangle": "\u29A6", "dzcy": "\u045F", "DZcy": "\u040F", "dzigrarr": "\u27FF", "eacute": "\xE9", "Eacute": "\xC9", "easter": "\u2A6E", "ecaron": "\u011B", "Ecaron": "\u011A", "ecir": "\u2256", "ecirc": "\xEA", "Ecirc": "\xCA", "ecolon": "\u2255", "ecy": "\u044D", "Ecy": "\u042D", "eDDot": "\u2A77", "edot": "\u0117", "eDot": "\u2251", "Edot": "\u0116", "ee": "\u2147", "efDot": "\u2252", "efr": "\u{1D522}", "Efr": "\u{1D508}", "eg": "\u2A9A", "egrave": "\xE8", "Egrave": "\xC8", "egs": "\u2A96", "egsdot": "\u2A98", "el": "\u2A99", "Element": "\u2208", "elinters": "\u23E7", "ell": "\u2113", "els": "\u2A95", "elsdot": "\u2A97", "emacr": "\u0113", "Emacr": "\u0112", "empty": "\u2205", "emptyset": "\u2205", "EmptySmallSquare": "\u25FB", "emptyv": "\u2205", "EmptyVerySmallSquare": "\u25AB", "emsp": "\u2003", "emsp13": "\u2004", "emsp14": "\u2005", "eng": "\u014B", "ENG": "\u014A", "ensp": "\u2002", "eogon": "\u0119", "Eogon": "\u0118", "eopf": "\u{1D556}", "Eopf": "\u{1D53C}", "epar": "\u22D5", "eparsl": "\u29E3", "eplus": "\u2A71", "epsi": "\u03B5", "epsilon": "\u03B5", "Epsilon": "\u0395", "epsiv": "\u03F5", "eqcirc": "\u2256", "eqcolon": "\u2255", "eqsim": "\u2242", "eqslantgtr": "\u2A96", "eqslantless": "\u2A95", "Equal": "\u2A75", "equals": "=", "EqualTilde": "\u2242", "equest": "\u225F", "Equilibrium": "\u21CC", "equiv": "\u2261", "equivDD": "\u2A78", "eqvparsl": "\u29E5", "erarr": "\u2971", "erDot": "\u2253", "escr": "\u212F", "Escr": "\u2130", "esdot": "\u2250", "esim": "\u2242", "Esim": "\u2A73", "eta": "\u03B7", "Eta": "\u0397", "eth": "\xF0", "ETH": "\xD0", "euml": "\xEB", "Euml": "\xCB", "euro": "\u20AC", "excl": "!", "exist": "\u2203", "Exists": "\u2203", "expectation": "\u2130", "exponentiale": "\u2147", "ExponentialE": "\u2147", "fallingdotseq": "\u2252", "fcy": "\u0444", "Fcy": "\u0424", "female": "\u2640", "ffilig": "\uFB03", "fflig": "\uFB00", "ffllig": "\uFB04", "ffr": "\u{1D523}", "Ffr": "\u{1D509}", "filig": "\uFB01", "FilledSmallSquare": "\u25FC", "FilledVerySmallSquare": "\u25AA", "fjlig": "fj", "flat": "\u266D", "fllig": "\uFB02", "fltns": "\u25B1", "fnof": "\u0192", "fopf": "\u{1D557}", "Fopf": "\u{1D53D}", "forall": "\u2200", "ForAll": "\u2200", "fork": "\u22D4", "forkv": "\u2AD9", "Fouriertrf": "\u2131", "fpartint": "\u2A0D", "frac12": "\xBD", "frac13": "\u2153", "frac14": "\xBC", "frac15": "\u2155", "frac16": "\u2159", "frac18": "\u215B", "frac23": "\u2154", "frac25": "\u2156", "frac34": "\xBE", "frac35": "\u2157", "frac38": "\u215C", "frac45": "\u2158", "frac56": "\u215A", "frac58": "\u215D", "frac78": "\u215E", "frasl": "\u2044", "frown": "\u2322", "fscr": "\u{1D4BB}", "Fscr": "\u2131", "gacute": "\u01F5", "gamma": "\u03B3", "Gamma": "\u0393", "gammad": "\u03DD", "Gammad": "\u03DC", "gap": "\u2A86", "gbreve": "\u011F", "Gbreve": "\u011E", "Gcedil": "\u0122", "gcirc": "\u011D", "Gcirc": "\u011C", "gcy": "\u0433", "Gcy": "\u0413", "gdot": "\u0121", "Gdot": "\u0120", "ge": "\u2265", "gE": "\u2267", "gel": "\u22DB", "gEl": "\u2A8C", "geq": "\u2265", "geqq": "\u2267", "geqslant": "\u2A7E", "ges": "\u2A7E", "gescc": "\u2AA9", "gesdot": "\u2A80", "gesdoto": "\u2A82", "gesdotol": "\u2A84", "gesl": "\u22DB\uFE00", "gesles": "\u2A94", "gfr": "\u{1D524}", "Gfr": "\u{1D50A}", "gg": "\u226B", "Gg": "\u22D9", "ggg": "\u22D9", "gimel": "\u2137", "gjcy": "\u0453", "GJcy": "\u0403", "gl": "\u2277", "gla": "\u2AA5", "glE": "\u2A92", "glj": "\u2AA4", "gnap": "\u2A8A", "gnapprox": "\u2A8A", "gne": "\u2A88", "gnE": "\u2269", "gneq": "\u2A88", "gneqq": "\u2269", "gnsim": "\u22E7", "gopf": "\u{1D558}", "Gopf": "\u{1D53E}", "grave": "`", "GreaterEqual": "\u2265", "GreaterEqualLess": "\u22DB", "GreaterFullEqual": "\u2267", "GreaterGreater": "\u2AA2", "GreaterLess": "\u2277", "GreaterSlantEqual": "\u2A7E", "GreaterTilde": "\u2273", "gscr": "\u210A", "Gscr": "\u{1D4A2}", "gsim": "\u2273", "gsime": "\u2A8E", "gsiml": "\u2A90", "gt": ">", "Gt": "\u226B", "GT": ">", "gtcc": "\u2AA7", "gtcir": "\u2A7A", "gtdot": "\u22D7", "gtlPar": "\u2995", "gtquest": "\u2A7C", "gtrapprox": "\u2A86", "gtrarr": "\u2978", "gtrdot": "\u22D7", "gtreqless": "\u22DB", "gtreqqless": "\u2A8C", "gtrless": "\u2277", "gtrsim": "\u2273", "gvertneqq": "\u2269\uFE00", "gvnE": "\u2269\uFE00", "Hacek": "\u02C7", "hairsp": "\u200A", "half": "\xBD", "hamilt": "\u210B", "hardcy": "\u044A", "HARDcy": "\u042A", "harr": "\u2194", "hArr": "\u21D4", "harrcir": "\u2948", "harrw": "\u21AD", "Hat": "^", "hbar": "\u210F", "hcirc": "\u0125", "Hcirc": "\u0124", "hearts": "\u2665", "heartsuit": "\u2665", "hellip": "\u2026", "hercon": "\u22B9", "hfr": "\u{1D525}", "Hfr": "\u210C", "HilbertSpace": "\u210B", "hksearow": "\u2925", "hkswarow": "\u2926", "hoarr": "\u21FF", "homtht": "\u223B", "hookleftarrow": "\u21A9", "hookrightarrow": "\u21AA", "hopf": "\u{1D559}", "Hopf": "\u210D", "horbar": "\u2015", "HorizontalLine": "\u2500", "hscr": "\u{1D4BD}", "Hscr": "\u210B", "hslash": "\u210F", "hstrok": "\u0127", "Hstrok": "\u0126", "HumpDownHump": "\u224E", "HumpEqual": "\u224F", "hybull": "\u2043", "hyphen": "\u2010", "iacute": "\xED", "Iacute": "\xCD", "ic": "\u2063", "icirc": "\xEE", "Icirc": "\xCE", "icy": "\u0438", "Icy": "\u0418", "Idot": "\u0130", "iecy": "\u0435", "IEcy": "\u0415", "iexcl": "\xA1", "iff": "\u21D4", "ifr": "\u{1D526}", "Ifr": "\u2111", "igrave": "\xEC", "Igrave": "\xCC", "ii": "\u2148", "iiiint": "\u2A0C", "iiint": "\u222D", "iinfin": "\u29DC", "iiota": "\u2129", "ijlig": "\u0133", "IJlig": "\u0132", "Im": "\u2111", "imacr": "\u012B", "Imacr": "\u012A", "image": "\u2111", "ImaginaryI": "\u2148", "imagline": "\u2110", "imagpart": "\u2111", "imath": "\u0131", "imof": "\u22B7", "imped": "\u01B5", "Implies": "\u21D2", "in": "\u2208", "incare": "\u2105", "infin": "\u221E", "infintie": "\u29DD", "inodot": "\u0131", "int": "\u222B", "Int": "\u222C", "intcal": "\u22BA", "integers": "\u2124", "Integral": "\u222B", "intercal": "\u22BA", "Intersection": "\u22C2", "intlarhk": "\u2A17", "intprod": "\u2A3C", "InvisibleComma": "\u2063", "InvisibleTimes": "\u2062", "iocy": "\u0451", "IOcy": "\u0401", "iogon": "\u012F", "Iogon": "\u012E", "iopf": "\u{1D55A}", "Iopf": "\u{1D540}", "iota": "\u03B9", "Iota": "\u0399", "iprod": "\u2A3C", "iquest": "\xBF", "iscr": "\u{1D4BE}", "Iscr": "\u2110", "isin": "\u2208", "isindot": "\u22F5", "isinE": "\u22F9", "isins": "\u22F4", "isinsv": "\u22F3", "isinv": "\u2208", "it": "\u2062", "itilde": "\u0129", "Itilde": "\u0128", "iukcy": "\u0456", "Iukcy": "\u0406", "iuml": "\xEF", "Iuml": "\xCF", "jcirc": "\u0135", "Jcirc": "\u0134", "jcy": "\u0439", "Jcy": "\u0419", "jfr": "\u{1D527}", "Jfr": "\u{1D50D}", "jmath": "\u0237", "jopf": "\u{1D55B}", "Jopf": "\u{1D541}", "jscr": "\u{1D4BF}", "Jscr": "\u{1D4A5}", "jsercy": "\u0458", "Jsercy": "\u0408", "jukcy": "\u0454", "Jukcy": "\u0404", "kappa": "\u03BA", "Kappa": "\u039A", "kappav": "\u03F0", "kcedil": "\u0137", "Kcedil": "\u0136", "kcy": "\u043A", "Kcy": "\u041A", "kfr": "\u{1D528}", "Kfr": "\u{1D50E}", "kgreen": "\u0138", "khcy": "\u0445", "KHcy": "\u0425", "kjcy": "\u045C", "KJcy": "\u040C", "kopf": "\u{1D55C}", "Kopf": "\u{1D542}", "kscr": "\u{1D4C0}", "Kscr": "\u{1D4A6}", "lAarr": "\u21DA", "lacute": "\u013A", "Lacute": "\u0139", "laemptyv": "\u29B4", "lagran": "\u2112", "lambda": "\u03BB", "Lambda": "\u039B", "lang": "\u27E8", "Lang": "\u27EA", "langd": "\u2991", "langle": "\u27E8", "lap": "\u2A85", "Laplacetrf": "\u2112", "laquo": "\xAB", "larr": "\u2190", "lArr": "\u21D0", "Larr": "\u219E", "larrb": "\u21E4", "larrbfs": "\u291F", "larrfs": "\u291D", "larrhk": "\u21A9", "larrlp": "\u21AB", "larrpl": "\u2939", "larrsim": "\u2973", "larrtl": "\u21A2", "lat": "\u2AAB", "latail": "\u2919", "lAtail": "\u291B", "late": "\u2AAD", "lates": "\u2AAD\uFE00", "lbarr": "\u290C", "lBarr": "\u290E", "lbbrk": "\u2772", "lbrace": "{", "lbrack": "[", "lbrke": "\u298B", "lbrksld": "\u298F", "lbrkslu": "\u298D", "lcaron": "\u013E", "Lcaron": "\u013D", "lcedil": "\u013C", "Lcedil": "\u013B", "lceil": "\u2308", "lcub": "{", "lcy": "\u043B", "Lcy": "\u041B", "ldca": "\u2936", "ldquo": "\u201C", "ldquor": "\u201E", "ldrdhar": "\u2967", "ldrushar": "\u294B", "ldsh": "\u21B2", "le": "\u2264", "lE": "\u2266", "LeftAngleBracket": "\u27E8", "leftarrow": "\u2190", "Leftarrow": "\u21D0", "LeftArrow": "\u2190", "LeftArrowBar": "\u21E4", "LeftArrowRightArrow": "\u21C6", "leftarrowtail": "\u21A2", "LeftCeiling": "\u2308", "LeftDoubleBracket": "\u27E6", "LeftDownTeeVector": "\u2961", "LeftDownVector": "\u21C3", "LeftDownVectorBar": "\u2959", "LeftFloor": "\u230A", "leftharpoondown": "\u21BD", "leftharpoonup": "\u21BC", "leftleftarrows": "\u21C7", "leftrightarrow": "\u2194", "Leftrightarrow": "\u21D4", "LeftRightArrow": "\u2194", "leftrightarrows": "\u21C6", "leftrightharpoons": "\u21CB", "leftrightsquigarrow": "\u21AD", "LeftRightVector": "\u294E", "LeftTee": "\u22A3", "LeftTeeArrow": "\u21A4", "LeftTeeVector": "\u295A", "leftthreetimes": "\u22CB", "LeftTriangle": "\u22B2", "LeftTriangleBar": "\u29CF", "LeftTriangleEqual": "\u22B4", "LeftUpDownVector": "\u2951", "LeftUpTeeVector": "\u2960", "LeftUpVector": "\u21BF", "LeftUpVectorBar": "\u2958", "LeftVector": "\u21BC", "LeftVectorBar": "\u2952", "leg": "\u22DA", "lEg": "\u2A8B", "leq": "\u2264", "leqq": "\u2266", "leqslant": "\u2A7D", "les": "\u2A7D", "lescc": "\u2AA8", "lesdot": "\u2A7F", "lesdoto": "\u2A81", "lesdotor": "\u2A83", "lesg": "\u22DA\uFE00", "lesges": "\u2A93", "lessapprox": "\u2A85", "lessdot": "\u22D6", "lesseqgtr": "\u22DA", "lesseqqgtr": "\u2A8B", "LessEqualGreater": "\u22DA", "LessFullEqual": "\u2266", "LessGreater": "\u2276", "lessgtr": "\u2276", "LessLess": "\u2AA1", "lesssim": "\u2272", "LessSlantEqual": "\u2A7D", "LessTilde": "\u2272", "lfisht": "\u297C", "lfloor": "\u230A", "lfr": "\u{1D529}", "Lfr": "\u{1D50F}", "lg": "\u2276", "lgE": "\u2A91", "lHar": "\u2962", "lhard": "\u21BD", "lharu": "\u21BC", "lharul": "\u296A", "lhblk": "\u2584", "ljcy": "\u0459", "LJcy": "\u0409", "ll": "\u226A", "Ll": "\u22D8", "llarr": "\u21C7", "llcorner": "\u231E", "Lleftarrow": "\u21DA", "llhard": "\u296B", "lltri": "\u25FA", "lmidot": "\u0140", "Lmidot": "\u013F", "lmoust": "\u23B0", "lmoustache": "\u23B0", "lnap": "\u2A89", "lnapprox": "\u2A89", "lne": "\u2A87", "lnE": "\u2268", "lneq": "\u2A87", "lneqq": "\u2268", "lnsim": "\u22E6", "loang": "\u27EC", "loarr": "\u21FD", "lobrk": "\u27E6", "longleftarrow": "\u27F5", "Longleftarrow": "\u27F8", "LongLeftArrow": "\u27F5", "longleftrightarrow": "\u27F7", "Longleftrightarrow": "\u27FA", "LongLeftRightArrow": "\u27F7", "longmapsto": "\u27FC", "longrightarrow": "\u27F6", "Longrightarrow": "\u27F9", "LongRightArrow": "\u27F6", "looparrowleft": "\u21AB", "looparrowright": "\u21AC", "lopar": "\u2985", "lopf": "\u{1D55D}", "Lopf": "\u{1D543}", "loplus": "\u2A2D", "lotimes": "\u2A34", "lowast": "\u2217", "lowbar": "_", "LowerLeftArrow": "\u2199", "LowerRightArrow": "\u2198", "loz": "\u25CA", "lozenge": "\u25CA", "lozf": "\u29EB", "lpar": "(", "lparlt": "\u2993", "lrarr": "\u21C6", "lrcorner": "\u231F", "lrhar": "\u21CB", "lrhard": "\u296D", "lrm": "\u200E", "lrtri": "\u22BF", "lsaquo": "\u2039", "lscr": "\u{1D4C1}", "Lscr": "\u2112", "lsh": "\u21B0", "Lsh": "\u21B0", "lsim": "\u2272", "lsime": "\u2A8D", "lsimg": "\u2A8F", "lsqb": "[", "lsquo": "\u2018", "lsquor": "\u201A", "lstrok": "\u0142", "Lstrok": "\u0141", "lt": "<", "Lt": "\u226A", "LT": "<", "ltcc": "\u2AA6", "ltcir": "\u2A79", "ltdot": "\u22D6", "lthree": "\u22CB", "ltimes": "\u22C9", "ltlarr": "\u2976", "ltquest": "\u2A7B", "ltri": "\u25C3", "ltrie": "\u22B4", "ltrif": "\u25C2", "ltrPar": "\u2996", "lurdshar": "\u294A", "luruhar": "\u2966", "lvertneqq": "\u2268\uFE00", "lvnE": "\u2268\uFE00", "macr": "\xAF", "male": "\u2642", "malt": "\u2720", "maltese": "\u2720", "map": "\u21A6", "Map": "\u2905", "mapsto": "\u21A6", "mapstodown": "\u21A7", "mapstoleft": "\u21A4", "mapstoup": "\u21A5", "marker": "\u25AE", "mcomma": "\u2A29", "mcy": "\u043C", "Mcy": "\u041C", "mdash": "\u2014", "mDDot": "\u223A", "measuredangle": "\u2221", "MediumSpace": "\u205F", "Mellintrf": "\u2133", "mfr": "\u{1D52A}", "Mfr": "\u{1D510}", "mho": "\u2127", "micro": "\xB5", "mid": "\u2223", "midast": "*", "midcir": "\u2AF0", "middot": "\xB7", "minus": "\u2212", "minusb": "\u229F", "minusd": "\u2238", "minusdu": "\u2A2A", "MinusPlus": "\u2213", "mlcp": "\u2ADB", "mldr": "\u2026", "mnplus": "\u2213", "models": "\u22A7", "mopf": "\u{1D55E}", "Mopf": "\u{1D544}", "mp": "\u2213", "mscr": "\u{1D4C2}", "Mscr": "\u2133", "mstpos": "\u223E", "mu": "\u03BC", "Mu": "\u039C", "multimap": "\u22B8", "mumap": "\u22B8", "nabla": "\u2207", "nacute": "\u0144", "Nacute": "\u0143", "nang": "\u2220\u20D2", "nap": "\u2249", "napE": "\u2A70\u0338", "napid": "\u224B\u0338", "napos": "\u0149", "napprox": "\u2249", "natur": "\u266E", "natural": "\u266E", "naturals": "\u2115", "nbsp": "\xA0", "nbump": "\u224E\u0338", "nbumpe": "\u224F\u0338", "ncap": "\u2A43", "ncaron": "\u0148", "Ncaron": "\u0147", "ncedil": "\u0146", "Ncedil": "\u0145", "ncong": "\u2247", "ncongdot": "\u2A6D\u0338", "ncup": "\u2A42", "ncy": "\u043D", "Ncy": "\u041D", "ndash": "\u2013", "ne": "\u2260", "nearhk": "\u2924", "nearr": "\u2197", "neArr": "\u21D7", "nearrow": "\u2197", "nedot": "\u2250\u0338", "NegativeMediumSpace": "\u200B", "NegativeThickSpace": "\u200B", "NegativeThinSpace": "\u200B", "NegativeVeryThinSpace": "\u200B", "nequiv": "\u2262", "nesear": "\u2928", "nesim": "\u2242\u0338", "NestedGreaterGreater": "\u226B", "NestedLessLess": "\u226A", "NewLine": "\n", "nexist": "\u2204", "nexists": "\u2204", "nfr": "\u{1D52B}", "Nfr": "\u{1D511}", "nge": "\u2271", "ngE": "\u2267\u0338", "ngeq": "\u2271", "ngeqq": "\u2267\u0338", "ngeqslant": "\u2A7E\u0338", "nges": "\u2A7E\u0338", "nGg": "\u22D9\u0338", "ngsim": "\u2275", "ngt": "\u226F", "nGt": "\u226B\u20D2", "ngtr": "\u226F", "nGtv": "\u226B\u0338", "nharr": "\u21AE", "nhArr": "\u21CE", "nhpar": "\u2AF2", "ni": "\u220B", "nis": "\u22FC", "nisd": "\u22FA", "niv": "\u220B", "njcy": "\u045A", "NJcy": "\u040A", "nlarr": "\u219A", "nlArr": "\u21CD", "nldr": "\u2025", "nle": "\u2270", "nlE": "\u2266\u0338", "nleftarrow": "\u219A", "nLeftarrow": "\u21CD", "nleftrightarrow": "\u21AE", "nLeftrightarrow": "\u21CE", "nleq": "\u2270", "nleqq": "\u2266\u0338", "nleqslant": "\u2A7D\u0338", "nles": "\u2A7D\u0338", "nless": "\u226E", "nLl": "\u22D8\u0338", "nlsim": "\u2274", "nlt": "\u226E", "nLt": "\u226A\u20D2", "nltri": "\u22EA", "nltrie": "\u22EC", "nLtv": "\u226A\u0338", "nmid": "\u2224", "NoBreak": "\u2060", "NonBreakingSpace": "\xA0", "nopf": "\u{1D55F}", "Nopf": "\u2115", "not": "\xAC", "Not": "\u2AEC", "NotCongruent": "\u2262", "NotCupCap": "\u226D", "NotDoubleVerticalBar": "\u2226", "NotElement": "\u2209", "NotEqual": "\u2260", "NotEqualTilde": "\u2242\u0338", "NotExists": "\u2204", "NotGreater": "\u226F", "NotGreaterEqual": "\u2271", "NotGreaterFullEqual": "\u2267\u0338", "NotGreaterGreater": "\u226B\u0338", "NotGreaterLess": "\u2279", "NotGreaterSlantEqual": "\u2A7E\u0338", "NotGreaterTilde": "\u2275", "NotHumpDownHump": "\u224E\u0338", "NotHumpEqual": "\u224F\u0338", "notin": "\u2209", "notindot": "\u22F5\u0338", "notinE": "\u22F9\u0338", "notinva": "\u2209", "notinvb": "\u22F7", "notinvc": "\u22F6", "NotLeftTriangle": "\u22EA", "NotLeftTriangleBar": "\u29CF\u0338", "NotLeftTriangleEqual": "\u22EC", "NotLess": "\u226E", "NotLessEqual": "\u2270", "NotLessGreater": "\u2278", "NotLessLess": "\u226A\u0338", "NotLessSlantEqual": "\u2A7D\u0338", "NotLessTilde": "\u2274", "NotNestedGreaterGreater": "\u2AA2\u0338", "NotNestedLessLess": "\u2AA1\u0338", "notni": "\u220C", "notniva": "\u220C", "notnivb": "\u22FE", "notnivc": "\u22FD", "NotPrecedes": "\u2280", "NotPrecedesEqual": "\u2AAF\u0338", "NotPrecedesSlantEqual": "\u22E0", "NotReverseElement": "\u220C", "NotRightTriangle": "\u22EB", "NotRightTriangleBar": "\u29D0\u0338", "NotRightTriangleEqual": "\u22ED", "NotSquareSubset": "\u228F\u0338", "NotSquareSubsetEqual": "\u22E2", "NotSquareSuperset": "\u2290\u0338", "NotSquareSupersetEqual": "\u22E3", "NotSubset": "\u2282\u20D2", "NotSubsetEqual": "\u2288", "NotSucceeds": "\u2281", "NotSucceedsEqual": "\u2AB0\u0338", "NotSucceedsSlantEqual": "\u22E1", "NotSucceedsTilde": "\u227F\u0338", "NotSuperset": "\u2283\u20D2", "NotSupersetEqual": "\u2289", "NotTilde": "\u2241", "NotTildeEqual": "\u2244", "NotTildeFullEqual": "\u2247", "NotTildeTilde": "\u2249", "NotVerticalBar": "\u2224", "npar": "\u2226", "nparallel": "\u2226", "nparsl": "\u2AFD\u20E5", "npart": "\u2202\u0338", "npolint": "\u2A14", "npr": "\u2280", "nprcue": "\u22E0", "npre": "\u2AAF\u0338", "nprec": "\u2280", "npreceq": "\u2AAF\u0338", "nrarr": "\u219B", "nrArr": "\u21CF", "nrarrc": "\u2933\u0338", "nrarrw": "\u219D\u0338", "nrightarrow": "\u219B", "nRightarrow": "\u21CF", "nrtri": "\u22EB", "nrtrie": "\u22ED", "nsc": "\u2281", "nsccue": "\u22E1", "nsce": "\u2AB0\u0338", "nscr": "\u{1D4C3}", "Nscr": "\u{1D4A9}", "nshortmid": "\u2224", "nshortparallel": "\u2226", "nsim": "\u2241", "nsime": "\u2244", "nsimeq": "\u2244", "nsmid": "\u2224", "nspar": "\u2226", "nsqsube": "\u22E2", "nsqsupe": "\u22E3", "nsub": "\u2284", "nsube": "\u2288", "nsubE": "\u2AC5\u0338", "nsubset": "\u2282\u20D2", "nsubseteq": "\u2288", "nsubseteqq": "\u2AC5\u0338", "nsucc": "\u2281", "nsucceq": "\u2AB0\u0338", "nsup": "\u2285", "nsupe": "\u2289", "nsupE": "\u2AC6\u0338", "nsupset": "\u2283\u20D2", "nsupseteq": "\u2289", "nsupseteqq": "\u2AC6\u0338", "ntgl": "\u2279", "ntilde": "\xF1", "Ntilde": "\xD1", "ntlg": "\u2278", "ntriangleleft": "\u22EA", "ntrianglelefteq": "\u22EC", "ntriangleright": "\u22EB", "ntrianglerighteq": "\u22ED", "nu": "\u03BD", "Nu": "\u039D", "num": "#", "numero": "\u2116", "numsp": "\u2007", "nvap": "\u224D\u20D2", "nvdash": "\u22AC", "nvDash": "\u22AD", "nVdash": "\u22AE", "nVDash": "\u22AF", "nvge": "\u2265\u20D2", "nvgt": ">\u20D2", "nvHarr": "\u2904", "nvinfin": "\u29DE", "nvlArr": "\u2902", "nvle": "\u2264\u20D2", "nvlt": "<\u20D2", "nvltrie": "\u22B4\u20D2", "nvrArr": "\u2903", "nvrtrie": "\u22B5\u20D2", "nvsim": "\u223C\u20D2", "nwarhk": "\u2923", "nwarr": "\u2196", "nwArr": "\u21D6", "nwarrow": "\u2196", "nwnear": "\u2927", "oacute": "\xF3", "Oacute": "\xD3", "oast": "\u229B", "ocir": "\u229A", "ocirc": "\xF4", "Ocirc": "\xD4", "ocy": "\u043E", "Ocy": "\u041E", "odash": "\u229D", "odblac": "\u0151", "Odblac": "\u0150", "odiv": "\u2A38", "odot": "\u2299", "odsold": "\u29BC", "oelig": "\u0153", "OElig": "\u0152", "ofcir": "\u29BF", "ofr": "\u{1D52C}", "Ofr": "\u{1D512}", "ogon": "\u02DB", "ograve": "\xF2", "Ograve": "\xD2", "ogt": "\u29C1", "ohbar": "\u29B5", "ohm": "\u03A9", "oint": "\u222E", "olarr": "\u21BA", "olcir": "\u29BE", "olcross": "\u29BB", "oline": "\u203E", "olt": "\u29C0", "omacr": "\u014D", "Omacr": "\u014C", "omega": "\u03C9", "Omega": "\u03A9", "omicron": "\u03BF", "Omicron": "\u039F", "omid": "\u29B6", "ominus": "\u2296", "oopf": "\u{1D560}", "Oopf": "\u{1D546}", "opar": "\u29B7", "OpenCurlyDoubleQuote": "\u201C", "OpenCurlyQuote": "\u2018", "operp": "\u29B9", "oplus": "\u2295", "or": "\u2228", "Or": "\u2A54", "orarr": "\u21BB", "ord": "\u2A5D", "order": "\u2134", "orderof": "\u2134", "ordf": "\xAA", "ordm": "\xBA", "origof": "\u22B6", "oror": "\u2A56", "orslope": "\u2A57", "orv": "\u2A5B", "oS": "\u24C8", "oscr": "\u2134", "Oscr": "\u{1D4AA}", "oslash": "\xF8", "Oslash": "\xD8", "osol": "\u2298", "otilde": "\xF5", "Otilde": "\xD5", "otimes": "\u2297", "Otimes": "\u2A37", "otimesas": "\u2A36", "ouml": "\xF6", "Ouml": "\xD6", "ovbar": "\u233D", "OverBar": "\u203E", "OverBrace": "\u23DE", "OverBracket": "\u23B4", "OverParenthesis": "\u23DC", "par": "\u2225", "para": "\xB6", "parallel": "\u2225", "parsim": "\u2AF3", "parsl": "\u2AFD", "part": "\u2202", "PartialD": "\u2202", "pcy": "\u043F", "Pcy": "\u041F", "percnt": "%", "period": ".", "permil": "\u2030", "perp": "\u22A5", "pertenk": "\u2031", "pfr": "\u{1D52D}", "Pfr": "\u{1D513}", "phi": "\u03C6", "Phi": "\u03A6", "phiv": "\u03D5", "phmmat": "\u2133", "phone": "\u260E", "pi": "\u03C0", "Pi": "\u03A0", "pitchfork": "\u22D4", "piv": "\u03D6", "planck": "\u210F", "planckh": "\u210E", "plankv": "\u210F", "plus": "+", "plusacir": "\u2A23", "plusb": "\u229E", "pluscir": "\u2A22", "plusdo": "\u2214", "plusdu": "\u2A25", "pluse": "\u2A72", "PlusMinus": "\xB1", "plusmn": "\xB1", "plussim": "\u2A26", "plustwo": "\u2A27", "pm": "\xB1", "Poincareplane": "\u210C", "pointint": "\u2A15", "popf": "\u{1D561}", "Popf": "\u2119", "pound": "\xA3", "pr": "\u227A", "Pr": "\u2ABB", "prap": "\u2AB7", "prcue": "\u227C", "pre": "\u2AAF", "prE": "\u2AB3", "prec": "\u227A", "precapprox": "\u2AB7", "preccurlyeq": "\u227C", "Precedes": "\u227A", "PrecedesEqual": "\u2AAF", "PrecedesSlantEqual": "\u227C", "PrecedesTilde": "\u227E", "preceq": "\u2AAF", "precnapprox": "\u2AB9", "precneqq": "\u2AB5", "precnsim": "\u22E8", "precsim": "\u227E", "prime": "\u2032", "Prime": "\u2033", "primes": "\u2119", "prnap": "\u2AB9", "prnE": "\u2AB5", "prnsim": "\u22E8", "prod": "\u220F", "Product": "\u220F", "profalar": "\u232E", "profline": "\u2312", "profsurf": "\u2313", "prop": "\u221D", "Proportion": "\u2237", "Proportional": "\u221D", "propto": "\u221D", "prsim": "\u227E", "prurel": "\u22B0", "pscr": "\u{1D4C5}", "Pscr": "\u{1D4AB}", "psi": "\u03C8", "Psi": "\u03A8", "puncsp": "\u2008", "qfr": "\u{1D52E}", "Qfr": "\u{1D514}", "qint": "\u2A0C", "qopf": "\u{1D562}", "Qopf": "\u211A", "qprime": "\u2057", "qscr": "\u{1D4C6}", "Qscr": "\u{1D4AC}", "quaternions": "\u210D", "quatint": "\u2A16", "quest": "?", "questeq": "\u225F", "quot": '"', "QUOT": '"', "rAarr": "\u21DB", "race": "\u223D\u0331", "racute": "\u0155", "Racute": "\u0154", "radic": "\u221A", "raemptyv": "\u29B3", "rang": "\u27E9", "Rang": "\u27EB", "rangd": "\u2992", "range": "\u29A5", "rangle": "\u27E9", "raquo": "\xBB", "rarr": "\u2192", "rArr": "\u21D2", "Rarr": "\u21A0", "rarrap": "\u2975", "rarrb": "\u21E5", "rarrbfs": "\u2920", "rarrc": "\u2933", "rarrfs": "\u291E", "rarrhk": "\u21AA", "rarrlp": "\u21AC", "rarrpl": "\u2945", "rarrsim": "\u2974", "rarrtl": "\u21A3", "Rarrtl": "\u2916", "rarrw": "\u219D", "ratail": "\u291A", "rAtail": "\u291C", "ratio": "\u2236", "rationals": "\u211A", "rbarr": "\u290D", "rBarr": "\u290F", "RBarr": "\u2910", "rbbrk": "\u2773", "rbrace": "}", "rbrack": "]", "rbrke": "\u298C", "rbrksld": "\u298E", "rbrkslu": "\u2990", "rcaron": "\u0159", "Rcaron": "\u0158", "rcedil": "\u0157", "Rcedil": "\u0156", "rceil": "\u2309", "rcub": "}", "rcy": "\u0440", "Rcy": "\u0420", "rdca": "\u2937", "rdldhar": "\u2969", "rdquo": "\u201D", "rdquor": "\u201D", "rdsh": "\u21B3", "Re": "\u211C", "real": "\u211C", "realine": "\u211B", "realpart": "\u211C", "reals": "\u211D", "rect": "\u25AD", "reg": "\xAE", "REG": "\xAE", "ReverseElement": "\u220B", "ReverseEquilibrium": "\u21CB", "ReverseUpEquilibrium": "\u296F", "rfisht": "\u297D", "rfloor": "\u230B", "rfr": "\u{1D52F}", "Rfr": "\u211C", "rHar": "\u2964", "rhard": "\u21C1", "rharu": "\u21C0", "rharul": "\u296C", "rho": "\u03C1", "Rho": "\u03A1", "rhov": "\u03F1", "RightAngleBracket": "\u27E9", "rightarrow": "\u2192", "Rightarrow": "\u21D2", "RightArrow": "\u2192", "RightArrowBar": "\u21E5", "RightArrowLeftArrow": "\u21C4", "rightarrowtail": "\u21A3", "RightCeiling": "\u2309", "RightDoubleBracket": "\u27E7", "RightDownTeeVector": "\u295D", "RightDownVector": "\u21C2", "RightDownVectorBar": "\u2955", "RightFloor": "\u230B", "rightharpoondown": "\u21C1", "rightharpoonup": "\u21C0", "rightleftarrows": "\u21C4", "rightleftharpoons": "\u21CC", "rightrightarrows": "\u21C9", "rightsquigarrow": "\u219D", "RightTee": "\u22A2", "RightTeeArrow": "\u21A6", "RightTeeVector": "\u295B", "rightthreetimes": "\u22CC", "RightTriangle": "\u22B3", "RightTriangleBar": "\u29D0", "RightTriangleEqual": "\u22B5", "RightUpDownVector": "\u294F", "RightUpTeeVector": "\u295C", "RightUpVector": "\u21BE", "RightUpVectorBar": "\u2954", "RightVector": "\u21C0", "RightVectorBar": "\u2953", "ring": "\u02DA", "risingdotseq": "\u2253", "rlarr": "\u21C4", "rlhar": "\u21CC", "rlm": "\u200F", "rmoust": "\u23B1", "rmoustache": "\u23B1", "rnmid": "\u2AEE", "roang": "\u27ED", "roarr": "\u21FE", "robrk": "\u27E7", "ropar": "\u2986", "ropf": "\u{1D563}", "Ropf": "\u211D", "roplus": "\u2A2E", "rotimes": "\u2A35", "RoundImplies": "\u2970", "rpar": ")", "rpargt": "\u2994", "rppolint": "\u2A12", "rrarr": "\u21C9", "Rrightarrow": "\u21DB", "rsaquo": "\u203A", "rscr": "\u{1D4C7}", "Rscr": "\u211B", "rsh": "\u21B1", "Rsh": "\u21B1", "rsqb": "]", "rsquo": "\u2019", "rsquor": "\u2019", "rthree": "\u22CC", "rtimes": "\u22CA", "rtri": "\u25B9", "rtrie": "\u22B5", "rtrif": "\u25B8", "rtriltri": "\u29CE", "RuleDelayed": "\u29F4", "ruluhar": "\u2968", "rx": "\u211E", "sacute": "\u015B", "Sacute": "\u015A", "sbquo": "\u201A", "sc": "\u227B", "Sc": "\u2ABC", "scap": "\u2AB8", "scaron": "\u0161", "Scaron": "\u0160", "sccue": "\u227D", "sce": "\u2AB0", "scE": "\u2AB4", "scedil": "\u015F", "Scedil": "\u015E", "scirc": "\u015D", "Scirc": "\u015C", "scnap": "\u2ABA", "scnE": "\u2AB6", "scnsim": "\u22E9", "scpolint": "\u2A13", "scsim": "\u227F", "scy": "\u0441", "Scy": "\u0421", "sdot": "\u22C5", "sdotb": "\u22A1", "sdote": "\u2A66", "searhk": "\u2925", "searr": "\u2198", "seArr": "\u21D8", "searrow": "\u2198", "sect": "\xA7", "semi": ";", "seswar": "\u2929", "setminus": "\u2216", "setmn": "\u2216", "sext": "\u2736", "sfr": "\u{1D530}", "Sfr": "\u{1D516}", "sfrown": "\u2322", "sharp": "\u266F", "shchcy": "\u0449", "SHCHcy": "\u0429", "shcy": "\u0448", "SHcy": "\u0428", "ShortDownArrow": "\u2193", "ShortLeftArrow": "\u2190", "shortmid": "\u2223", "shortparallel": "\u2225", "ShortRightArrow": "\u2192", "ShortUpArrow": "\u2191", "shy": "\xAD", "sigma": "\u03C3", "Sigma": "\u03A3", "sigmaf": "\u03C2", "sigmav": "\u03C2", "sim": "\u223C", "simdot": "\u2A6A", "sime": "\u2243", "simeq": "\u2243", "simg": "\u2A9E", "simgE": "\u2AA0", "siml": "\u2A9D", "simlE": "\u2A9F", "simne": "\u2246", "simplus": "\u2A24", "simrarr": "\u2972", "slarr": "\u2190", "SmallCircle": "\u2218", "smallsetminus": "\u2216", "smashp": "\u2A33", "smeparsl": "\u29E4", "smid": "\u2223", "smile": "\u2323", "smt": "\u2AAA", "smte": "\u2AAC", "smtes": "\u2AAC\uFE00", "softcy": "\u044C", "SOFTcy": "\u042C", "sol": "/", "solb": "\u29C4", "solbar": "\u233F", "sopf": "\u{1D564}", "Sopf": "\u{1D54A}", "spades": "\u2660", "spadesuit": "\u2660", "spar": "\u2225", "sqcap": "\u2293", "sqcaps": "\u2293\uFE00", "sqcup": "\u2294", "sqcups": "\u2294\uFE00", "Sqrt": "\u221A", "sqsub": "\u228F", "sqsube": "\u2291", "sqsubset": "\u228F", "sqsubseteq": "\u2291", "sqsup": "\u2290", "sqsupe": "\u2292", "sqsupset": "\u2290", "sqsupseteq": "\u2292", "squ": "\u25A1", "square": "\u25A1", "Square": "\u25A1", "SquareIntersection": "\u2293", "SquareSubset": "\u228F", "SquareSubsetEqual": "\u2291", "SquareSuperset": "\u2290", "SquareSupersetEqual": "\u2292", "SquareUnion": "\u2294", "squarf": "\u25AA", "squf": "\u25AA", "srarr": "\u2192", "sscr": "\u{1D4C8}", "Sscr": "\u{1D4AE}", "ssetmn": "\u2216", "ssmile": "\u2323", "sstarf": "\u22C6", "star": "\u2606", "Star": "\u22C6", "starf": "\u2605", "straightepsilon": "\u03F5", "straightphi": "\u03D5", "strns": "\xAF", "sub": "\u2282", "Sub": "\u22D0", "subdot": "\u2ABD", "sube": "\u2286", "subE": "\u2AC5", "subedot": "\u2AC3", "submult": "\u2AC1", "subne": "\u228A", "subnE": "\u2ACB", "subplus": "\u2ABF", "subrarr": "\u2979", "subset": "\u2282", "Subset": "\u22D0", "subseteq": "\u2286", "subseteqq": "\u2AC5", "SubsetEqual": "\u2286", "subsetneq": "\u228A", "subsetneqq": "\u2ACB", "subsim": "\u2AC7", "subsub": "\u2AD5", "subsup": "\u2AD3", "succ": "\u227B", "succapprox": "\u2AB8", "succcurlyeq": "\u227D", "Succeeds": "\u227B", "SucceedsEqual": "\u2AB0", "SucceedsSlantEqual": "\u227D", "SucceedsTilde": "\u227F", "succeq": "\u2AB0", "succnapprox": "\u2ABA", "succneqq": "\u2AB6", "succnsim": "\u22E9", "succsim": "\u227F", "SuchThat": "\u220B", "sum": "\u2211", "Sum": "\u2211", "sung": "\u266A", "sup": "\u2283", "Sup": "\u22D1", "sup1": "\xB9", "sup2": "\xB2", "sup3": "\xB3", "supdot": "\u2ABE", "supdsub": "\u2AD8", "supe": "\u2287", "supE": "\u2AC6", "supedot": "\u2AC4", "Superset": "\u2283", "SupersetEqual": "\u2287", "suphsol": "\u27C9", "suphsub": "\u2AD7", "suplarr": "\u297B", "supmult": "\u2AC2", "supne": "\u228B", "supnE": "\u2ACC", "supplus": "\u2AC0", "supset": "\u2283", "Supset": "\u22D1", "supseteq": "\u2287", "supseteqq": "\u2AC6", "supsetneq": "\u228B", "supsetneqq": "\u2ACC", "supsim": "\u2AC8", "supsub": "\u2AD4", "supsup": "\u2AD6", "swarhk": "\u2926", "swarr": "\u2199", "swArr": "\u21D9", "swarrow": "\u2199", "swnwar": "\u292A", "szlig": "\xDF", "Tab": "	", "target": "\u2316", "tau": "\u03C4", "Tau": "\u03A4", "tbrk": "\u23B4", "tcaron": "\u0165", "Tcaron": "\u0164", "tcedil": "\u0163", "Tcedil": "\u0162", "tcy": "\u0442", "Tcy": "\u0422", "tdot": "\u20DB", "telrec": "\u2315", "tfr": "\u{1D531}", "Tfr": "\u{1D517}", "there4": "\u2234", "therefore": "\u2234", "Therefore": "\u2234", "theta": "\u03B8", "Theta": "\u0398", "thetasym": "\u03D1", "thetav": "\u03D1", "thickapprox": "\u2248", "thicksim": "\u223C", "ThickSpace": "\u205F\u200A", "thinsp": "\u2009", "ThinSpace": "\u2009", "thkap": "\u2248", "thksim": "\u223C", "thorn": "\xFE", "THORN": "\xDE", "tilde": "\u02DC", "Tilde": "\u223C", "TildeEqual": "\u2243", "TildeFullEqual": "\u2245", "TildeTilde": "\u2248", "times": "\xD7", "timesb": "\u22A0", "timesbar": "\u2A31", "timesd": "\u2A30", "tint": "\u222D", "toea": "\u2928", "top": "\u22A4", "topbot": "\u2336", "topcir": "\u2AF1", "topf": "\u{1D565}", "Topf": "\u{1D54B}", "topfork": "\u2ADA", "tosa": "\u2929", "tprime": "\u2034", "trade": "\u2122", "TRADE": "\u2122", "triangle": "\u25B5", "triangledown": "\u25BF", "triangleleft": "\u25C3", "trianglelefteq": "\u22B4", "triangleq": "\u225C", "triangleright": "\u25B9", "trianglerighteq": "\u22B5", "tridot": "\u25EC", "trie": "\u225C", "triminus": "\u2A3A", "TripleDot": "\u20DB", "triplus": "\u2A39", "trisb": "\u29CD", "tritime": "\u2A3B", "trpezium": "\u23E2", "tscr": "\u{1D4C9}", "Tscr": "\u{1D4AF}", "tscy": "\u0446", "TScy": "\u0426", "tshcy": "\u045B", "TSHcy": "\u040B", "tstrok": "\u0167", "Tstrok": "\u0166", "twixt": "\u226C", "twoheadleftarrow": "\u219E", "twoheadrightarrow": "\u21A0", "uacute": "\xFA", "Uacute": "\xDA", "uarr": "\u2191", "uArr": "\u21D1", "Uarr": "\u219F", "Uarrocir": "\u2949", "ubrcy": "\u045E", "Ubrcy": "\u040E", "ubreve": "\u016D", "Ubreve": "\u016C", "ucirc": "\xFB", "Ucirc": "\xDB", "ucy": "\u0443", "Ucy": "\u0423", "udarr": "\u21C5", "udblac": "\u0171", "Udblac": "\u0170", "udhar": "\u296E", "ufisht": "\u297E", "ufr": "\u{1D532}", "Ufr": "\u{1D518}", "ugrave": "\xF9", "Ugrave": "\xD9", "uHar": "\u2963", "uharl": "\u21BF", "uharr": "\u21BE", "uhblk": "\u2580", "ulcorn": "\u231C", "ulcorner": "\u231C", "ulcrop": "\u230F", "ultri": "\u25F8", "umacr": "\u016B", "Umacr": "\u016A", "uml": "\xA8", "UnderBar": "_", "UnderBrace": "\u23DF", "UnderBracket": "\u23B5", "UnderParenthesis": "\u23DD", "Union": "\u22C3", "UnionPlus": "\u228E", "uogon": "\u0173", "Uogon": "\u0172", "uopf": "\u{1D566}", "Uopf": "\u{1D54C}", "uparrow": "\u2191", "Uparrow": "\u21D1", "UpArrow": "\u2191", "UpArrowBar": "\u2912", "UpArrowDownArrow": "\u21C5", "updownarrow": "\u2195", "Updownarrow": "\u21D5", "UpDownArrow": "\u2195", "UpEquilibrium": "\u296E", "upharpoonleft": "\u21BF", "upharpoonright": "\u21BE", "uplus": "\u228E", "UpperLeftArrow": "\u2196", "UpperRightArrow": "\u2197", "upsi": "\u03C5", "Upsi": "\u03D2", "upsih": "\u03D2", "upsilon": "\u03C5", "Upsilon": "\u03A5", "UpTee": "\u22A5", "UpTeeArrow": "\u21A5", "upuparrows": "\u21C8", "urcorn": "\u231D", "urcorner": "\u231D", "urcrop": "\u230E", "uring": "\u016F", "Uring": "\u016E", "urtri": "\u25F9", "uscr": "\u{1D4CA}", "Uscr": "\u{1D4B0}", "utdot": "\u22F0", "utilde": "\u0169", "Utilde": "\u0168", "utri": "\u25B5", "utrif": "\u25B4", "uuarr": "\u21C8", "uuml": "\xFC", "Uuml": "\xDC", "uwangle": "\u29A7", "vangrt": "\u299C", "varepsilon": "\u03F5", "varkappa": "\u03F0", "varnothing": "\u2205", "varphi": "\u03D5", "varpi": "\u03D6", "varpropto": "\u221D", "varr": "\u2195", "vArr": "\u21D5", "varrho": "\u03F1", "varsigma": "\u03C2", "varsubsetneq": "\u228A\uFE00", "varsubsetneqq": "\u2ACB\uFE00", "varsupsetneq": "\u228B\uFE00", "varsupsetneqq": "\u2ACC\uFE00", "vartheta": "\u03D1", "vartriangleleft": "\u22B2", "vartriangleright": "\u22B3", "vBar": "\u2AE8", "Vbar": "\u2AEB", "vBarv": "\u2AE9", "vcy": "\u0432", "Vcy": "\u0412", "vdash": "\u22A2", "vDash": "\u22A8", "Vdash": "\u22A9", "VDash": "\u22AB", "Vdashl": "\u2AE6", "vee": "\u2228", "Vee": "\u22C1", "veebar": "\u22BB", "veeeq": "\u225A", "vellip": "\u22EE", "verbar": "|", "Verbar": "\u2016", "vert": "|", "Vert": "\u2016", "VerticalBar": "\u2223", "VerticalLine": "|", "VerticalSeparator": "\u2758", "VerticalTilde": "\u2240", "VeryThinSpace": "\u200A", "vfr": "\u{1D533}", "Vfr": "\u{1D519}", "vltri": "\u22B2", "vnsub": "\u2282\u20D2", "vnsup": "\u2283\u20D2", "vopf": "\u{1D567}", "Vopf": "\u{1D54D}", "vprop": "\u221D", "vrtri": "\u22B3", "vscr": "\u{1D4CB}", "Vscr": "\u{1D4B1}", "vsubne": "\u228A\uFE00", "vsubnE": "\u2ACB\uFE00", "vsupne": "\u228B\uFE00", "vsupnE": "\u2ACC\uFE00", "Vvdash": "\u22AA", "vzigzag": "\u299A", "wcirc": "\u0175", "Wcirc": "\u0174", "wedbar": "\u2A5F", "wedge": "\u2227", "Wedge": "\u22C0", "wedgeq": "\u2259", "weierp": "\u2118", "wfr": "\u{1D534}", "Wfr": "\u{1D51A}", "wopf": "\u{1D568}", "Wopf": "\u{1D54E}", "wp": "\u2118", "wr": "\u2240", "wreath": "\u2240", "wscr": "\u{1D4CC}", "Wscr": "\u{1D4B2}", "xcap": "\u22C2", "xcirc": "\u25EF", "xcup": "\u22C3", "xdtri": "\u25BD", "xfr": "\u{1D535}", "Xfr": "\u{1D51B}", "xharr": "\u27F7", "xhArr": "\u27FA", "xi": "\u03BE", "Xi": "\u039E", "xlarr": "\u27F5", "xlArr": "\u27F8", "xmap": "\u27FC", "xnis": "\u22FB", "xodot": "\u2A00", "xopf": "\u{1D569}", "Xopf": "\u{1D54F}", "xoplus": "\u2A01", "xotime": "\u2A02", "xrarr": "\u27F6", "xrArr": "\u27F9", "xscr": "\u{1D4CD}", "Xscr": "\u{1D4B3}", "xsqcup": "\u2A06", "xuplus": "\u2A04", "xutri": "\u25B3", "xvee": "\u22C1", "xwedge": "\u22C0", "yacute": "\xFD", "Yacute": "\xDD", "yacy": "\u044F", "YAcy": "\u042F", "ycirc": "\u0177", "Ycirc": "\u0176", "ycy": "\u044B", "Ycy": "\u042B", "yen": "\xA5", "yfr": "\u{1D536}", "Yfr": "\u{1D51C}", "yicy": "\u0457", "YIcy": "\u0407", "yopf": "\u{1D56A}", "Yopf": "\u{1D550}", "yscr": "\u{1D4CE}", "Yscr": "\u{1D4B4}", "yucy": "\u044E", "YUcy": "\u042E", "yuml": "\xFF", "Yuml": "\u0178", "zacute": "\u017A", "Zacute": "\u0179", "zcaron": "\u017E", "Zcaron": "\u017D", "zcy": "\u0437", "Zcy": "\u0417", "zdot": "\u017C", "Zdot": "\u017B", "zeetrf": "\u2128", "ZeroWidthSpace": "\u200B", "zeta": "\u03B6", "Zeta": "\u0396", "zfr": "\u{1D537}", "Zfr": "\u2128", "zhcy": "\u0436", "ZHcy": "\u0416", "zigrarr": "\u21DD", "zopf": "\u{1D56B}", "Zopf": "\u2124", "zscr": "\u{1D4CF}", "Zscr": "\u{1D4B5}", "zwj": "\u200D", "zwnj": "\u200C" };
      var decodeMapLegacy = { "aacute": "\xE1", "Aacute": "\xC1", "acirc": "\xE2", "Acirc": "\xC2", "acute": "\xB4", "aelig": "\xE6", "AElig": "\xC6", "agrave": "\xE0", "Agrave": "\xC0", "amp": "&", "AMP": "&", "aring": "\xE5", "Aring": "\xC5", "atilde": "\xE3", "Atilde": "\xC3", "auml": "\xE4", "Auml": "\xC4", "brvbar": "\xA6", "ccedil": "\xE7", "Ccedil": "\xC7", "cedil": "\xB8", "cent": "\xA2", "copy": "\xA9", "COPY": "\xA9", "curren": "\xA4", "deg": "\xB0", "divide": "\xF7", "eacute": "\xE9", "Eacute": "\xC9", "ecirc": "\xEA", "Ecirc": "\xCA", "egrave": "\xE8", "Egrave": "\xC8", "eth": "\xF0", "ETH": "\xD0", "euml": "\xEB", "Euml": "\xCB", "frac12": "\xBD", "frac14": "\xBC", "frac34": "\xBE", "gt": ">", "GT": ">", "iacute": "\xED", "Iacute": "\xCD", "icirc": "\xEE", "Icirc": "\xCE", "iexcl": "\xA1", "igrave": "\xEC", "Igrave": "\xCC", "iquest": "\xBF", "iuml": "\xEF", "Iuml": "\xCF", "laquo": "\xAB", "lt": "<", "LT": "<", "macr": "\xAF", "micro": "\xB5", "middot": "\xB7", "nbsp": "\xA0", "not": "\xAC", "ntilde": "\xF1", "Ntilde": "\xD1", "oacute": "\xF3", "Oacute": "\xD3", "ocirc": "\xF4", "Ocirc": "\xD4", "ograve": "\xF2", "Ograve": "\xD2", "ordf": "\xAA", "ordm": "\xBA", "oslash": "\xF8", "Oslash": "\xD8", "otilde": "\xF5", "Otilde": "\xD5", "ouml": "\xF6", "Ouml": "\xD6", "para": "\xB6", "plusmn": "\xB1", "pound": "\xA3", "quot": '"', "QUOT": '"', "raquo": "\xBB", "reg": "\xAE", "REG": "\xAE", "sect": "\xA7", "shy": "\xAD", "sup1": "\xB9", "sup2": "\xB2", "sup3": "\xB3", "szlig": "\xDF", "thorn": "\xFE", "THORN": "\xDE", "times": "\xD7", "uacute": "\xFA", "Uacute": "\xDA", "ucirc": "\xFB", "Ucirc": "\xDB", "ugrave": "\xF9", "Ugrave": "\xD9", "uml": "\xA8", "uuml": "\xFC", "Uuml": "\xDC", "yacute": "\xFD", "Yacute": "\xDD", "yen": "\xA5", "yuml": "\xFF" };
      var decodeMapNumeric = { "0": "\uFFFD", "128": "\u20AC", "130": "\u201A", "131": "\u0192", "132": "\u201E", "133": "\u2026", "134": "\u2020", "135": "\u2021", "136": "\u02C6", "137": "\u2030", "138": "\u0160", "139": "\u2039", "140": "\u0152", "142": "\u017D", "145": "\u2018", "146": "\u2019", "147": "\u201C", "148": "\u201D", "149": "\u2022", "150": "\u2013", "151": "\u2014", "152": "\u02DC", "153": "\u2122", "154": "\u0161", "155": "\u203A", "156": "\u0153", "158": "\u017E", "159": "\u0178" };
      var invalidReferenceCodePoints = [1, 2, 3, 4, 5, 6, 7, 8, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 64976, 64977, 64978, 64979, 64980, 64981, 64982, 64983, 64984, 64985, 64986, 64987, 64988, 64989, 64990, 64991, 64992, 64993, 64994, 64995, 64996, 64997, 64998, 64999, 65e3, 65001, 65002, 65003, 65004, 65005, 65006, 65007, 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214, 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894, 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574, 1048575, 1114110, 1114111];
      var stringFromCharCode = String.fromCharCode;
      var object = {};
      var hasOwnProperty = object.hasOwnProperty;
      var has3 = function(object2, propertyName) {
        return hasOwnProperty.call(object2, propertyName);
      };
      var contains3 = function(array, value) {
        var index4 = -1;
        var length = array.length;
        while (++index4 < length) {
          if (array[index4] == value) {
            return true;
          }
        }
        return false;
      };
      var merge3 = function(options, defaults3) {
        if (!options) {
          return defaults3;
        }
        var result = {};
        var key3;
        for (key3 in defaults3) {
          result[key3] = has3(options, key3) ? options[key3] : defaults3[key3];
        }
        return result;
      };
      var codePointToSymbol = function(codePoint, strict) {
        var output2 = "";
        if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {
          if (strict) {
            parseError("character reference outside the permissible Unicode range");
          }
          return "\uFFFD";
        }
        if (has3(decodeMapNumeric, codePoint)) {
          if (strict) {
            parseError("disallowed character reference");
          }
          return decodeMapNumeric[codePoint];
        }
        if (strict && contains3(invalidReferenceCodePoints, codePoint)) {
          parseError("disallowed character reference");
        }
        if (codePoint > 65535) {
          codePoint -= 65536;
          output2 += stringFromCharCode(codePoint >>> 10 & 1023 | 55296);
          codePoint = 56320 | codePoint & 1023;
        }
        output2 += stringFromCharCode(codePoint);
        return output2;
      };
      var hexEscape = function(codePoint) {
        return "&#x" + codePoint.toString(16).toUpperCase() + ";";
      };
      var decEscape = function(codePoint) {
        return "&#" + codePoint + ";";
      };
      var parseError = function(message) {
        throw Error("Parse error: " + message);
      };
      var encode = function(string2, options) {
        options = merge3(options, encode.options);
        var strict = options.strict;
        if (strict && regexInvalidRawCodePoint.test(string2)) {
          parseError("forbidden code point");
        }
        var encodeEverything = options.encodeEverything;
        var useNamedReferences = options.useNamedReferences;
        var allowUnsafeSymbols = options.allowUnsafeSymbols;
        var escapeCodePoint = options.decimal ? decEscape : hexEscape;
        var escapeBmpSymbol = function(symbol) {
          return escapeCodePoint(symbol.charCodeAt(0));
        };
        if (encodeEverything) {
          string2 = string2.replace(regexAsciiWhitelist, function(symbol) {
            if (useNamedReferences && has3(encodeMap, symbol)) {
              return "&" + encodeMap[symbol] + ";";
            }
            return escapeBmpSymbol(symbol);
          });
          if (useNamedReferences) {
            string2 = string2.replace(/&gt;\u20D2/g, "&nvgt;").replace(/&lt;\u20D2/g, "&nvlt;").replace(/&#x66;&#x6A;/g, "&fjlig;");
          }
          if (useNamedReferences) {
            string2 = string2.replace(regexEncodeNonAscii, function(string3) {
              return "&" + encodeMap[string3] + ";";
            });
          }
        } else if (useNamedReferences) {
          if (!allowUnsafeSymbols) {
            string2 = string2.replace(regexEscape, function(string3) {
              return "&" + encodeMap[string3] + ";";
            });
          }
          string2 = string2.replace(/&gt;\u20D2/g, "&nvgt;").replace(/&lt;\u20D2/g, "&nvlt;");
          string2 = string2.replace(regexEncodeNonAscii, function(string3) {
            return "&" + encodeMap[string3] + ";";
          });
        } else if (!allowUnsafeSymbols) {
          string2 = string2.replace(regexEscape, escapeBmpSymbol);
        }
        return string2.replace(regexAstralSymbols, function($0) {
          var high = $0.charCodeAt(0);
          var low = $0.charCodeAt(1);
          var codePoint = (high - 55296) * 1024 + low - 56320 + 65536;
          return escapeCodePoint(codePoint);
        }).replace(regexBmpWhitelist, escapeBmpSymbol);
      };
      encode.options = {
        "allowUnsafeSymbols": false,
        "encodeEverything": false,
        "strict": false,
        "useNamedReferences": false,
        "decimal": false
      };
      var decode2 = function(html7, options) {
        options = merge3(options, decode2.options);
        var strict = options.strict;
        if (strict && regexInvalidEntity.test(html7)) {
          parseError("malformed character reference");
        }
        return html7.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) {
          var codePoint;
          var semicolon;
          var decDigits;
          var hexDigits;
          var reference;
          var next;
          if ($1) {
            reference = $1;
            return decodeMap2[reference];
          }
          if ($2) {
            reference = $2;
            next = $3;
            if (next && options.isAttributeValue) {
              if (strict && next == "=") {
                parseError("`&` did not start a character reference");
              }
              return $0;
            } else {
              if (strict) {
                parseError(
                  "named character reference was not terminated by a semicolon"
                );
              }
              return decodeMapLegacy[reference] + (next || "");
            }
          }
          if ($4) {
            decDigits = $4;
            semicolon = $5;
            if (strict && !semicolon) {
              parseError("character reference was not terminated by a semicolon");
            }
            codePoint = parseInt(decDigits, 10);
            return codePointToSymbol(codePoint, strict);
          }
          if ($6) {
            hexDigits = $6;
            semicolon = $7;
            if (strict && !semicolon) {
              parseError("character reference was not terminated by a semicolon");
            }
            codePoint = parseInt(hexDigits, 16);
            return codePointToSymbol(codePoint, strict);
          }
          if (strict) {
            parseError(
              "named character reference was not terminated by a semicolon"
            );
          }
          return $0;
        });
      };
      decode2.options = {
        "isAttributeValue": false,
        "strict": false
      };
      var escape5 = function(string2) {
        return string2.replace(regexEscape, function($0) {
          return escapeMap[$0];
        });
      };
      var he2 = {
        "version": "1.2.0",
        "encode": encode,
        "decode": decode2,
        "escape": escape5,
        "unescape": decode2
      };
      if (typeof define == "function" && typeof define.amd == "object" && define.amd) {
        define(function() {
          return he2;
        });
      } else if (freeExports && !freeExports.nodeType) {
        if (freeModule) {
          freeModule.exports = he2;
        } else {
          for (var key2 in he2) {
            has3(he2, key2) && (freeExports[key2] = he2[key2]);
          }
        }
      } else {
        root6.he = he2;
      }
    })(exports2);
  }
});

// ../../node_modules/mime-db/db.json
var require_db = __commonJS({
  "../../node_modules/mime-db/db.json"(exports2, module2) {
    module2.exports = {
      "application/1d-interleaved-parityfec": {
        source: "iana"
      },
      "application/3gpdash-qoe-report+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/3gpp-ims+xml": {
        source: "iana",
        compressible: true
      },
      "application/3gpphal+json": {
        source: "iana",
        compressible: true
      },
      "application/3gpphalforms+json": {
        source: "iana",
        compressible: true
      },
      "application/a2l": {
        source: "iana"
      },
      "application/ace+cbor": {
        source: "iana"
      },
      "application/activemessage": {
        source: "iana"
      },
      "application/activity+json": {
        source: "iana",
        compressible: true
      },
      "application/alto-costmap+json": {
        source: "iana",
        compressible: true
      },
      "application/alto-costmapfilter+json": {
        source: "iana",
        compressible: true
      },
      "application/alto-directory+json": {
        source: "iana",
        compressible: true
      },
      "application/alto-endpointcost+json": {
        source: "iana",
        compressible: true
      },
      "application/alto-endpointcostparams+json": {
        source: "iana",
        compressible: true
      },
      "application/alto-endpointprop+json": {
        source: "iana",
        compressible: true
      },
      "application/alto-endpointpropparams+json": {
        source: "iana",
        compressible: true
      },
      "application/alto-error+json": {
        source: "iana",
        compressible: true
      },
      "application/alto-networkmap+json": {
        source: "iana",
        compressible: true
      },
      "application/alto-networkmapfilter+json": {
        source: "iana",
        compressible: true
      },
      "application/alto-updatestreamcontrol+json": {
        source: "iana",
        compressible: true
      },
      "application/alto-updatestreamparams+json": {
        source: "iana",
        compressible: true
      },
      "application/aml": {
        source: "iana"
      },
      "application/andrew-inset": {
        source: "iana",
        extensions: ["ez"]
      },
      "application/applefile": {
        source: "iana"
      },
      "application/applixware": {
        source: "apache",
        extensions: ["aw"]
      },
      "application/at+jwt": {
        source: "iana"
      },
      "application/atf": {
        source: "iana"
      },
      "application/atfx": {
        source: "iana"
      },
      "application/atom+xml": {
        source: "iana",
        compressible: true,
        extensions: ["atom"]
      },
      "application/atomcat+xml": {
        source: "iana",
        compressible: true,
        extensions: ["atomcat"]
      },
      "application/atomdeleted+xml": {
        source: "iana",
        compressible: true,
        extensions: ["atomdeleted"]
      },
      "application/atomicmail": {
        source: "iana"
      },
      "application/atomsvc+xml": {
        source: "iana",
        compressible: true,
        extensions: ["atomsvc"]
      },
      "application/atsc-dwd+xml": {
        source: "iana",
        compressible: true,
        extensions: ["dwd"]
      },
      "application/atsc-dynamic-event-message": {
        source: "iana"
      },
      "application/atsc-held+xml": {
        source: "iana",
        compressible: true,
        extensions: ["held"]
      },
      "application/atsc-rdt+json": {
        source: "iana",
        compressible: true
      },
      "application/atsc-rsat+xml": {
        source: "iana",
        compressible: true,
        extensions: ["rsat"]
      },
      "application/atxml": {
        source: "iana"
      },
      "application/auth-policy+xml": {
        source: "iana",
        compressible: true
      },
      "application/bacnet-xdd+zip": {
        source: "iana",
        compressible: false
      },
      "application/batch-smtp": {
        source: "iana"
      },
      "application/bdoc": {
        compressible: false,
        extensions: ["bdoc"]
      },
      "application/beep+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/calendar+json": {
        source: "iana",
        compressible: true
      },
      "application/calendar+xml": {
        source: "iana",
        compressible: true,
        extensions: ["xcs"]
      },
      "application/call-completion": {
        source: "iana"
      },
      "application/cals-1840": {
        source: "iana"
      },
      "application/captive+json": {
        source: "iana",
        compressible: true
      },
      "application/cbor": {
        source: "iana"
      },
      "application/cbor-seq": {
        source: "iana"
      },
      "application/cccex": {
        source: "iana"
      },
      "application/ccmp+xml": {
        source: "iana",
        compressible: true
      },
      "application/ccxml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["ccxml"]
      },
      "application/cdfx+xml": {
        source: "iana",
        compressible: true,
        extensions: ["cdfx"]
      },
      "application/cdmi-capability": {
        source: "iana",
        extensions: ["cdmia"]
      },
      "application/cdmi-container": {
        source: "iana",
        extensions: ["cdmic"]
      },
      "application/cdmi-domain": {
        source: "iana",
        extensions: ["cdmid"]
      },
      "application/cdmi-object": {
        source: "iana",
        extensions: ["cdmio"]
      },
      "application/cdmi-queue": {
        source: "iana",
        extensions: ["cdmiq"]
      },
      "application/cdni": {
        source: "iana"
      },
      "application/cea": {
        source: "iana"
      },
      "application/cea-2018+xml": {
        source: "iana",
        compressible: true
      },
      "application/cellml+xml": {
        source: "iana",
        compressible: true
      },
      "application/cfw": {
        source: "iana"
      },
      "application/city+json": {
        source: "iana",
        compressible: true
      },
      "application/clr": {
        source: "iana"
      },
      "application/clue+xml": {
        source: "iana",
        compressible: true
      },
      "application/clue_info+xml": {
        source: "iana",
        compressible: true
      },
      "application/cms": {
        source: "iana"
      },
      "application/cnrp+xml": {
        source: "iana",
        compressible: true
      },
      "application/coap-group+json": {
        source: "iana",
        compressible: true
      },
      "application/coap-payload": {
        source: "iana"
      },
      "application/commonground": {
        source: "iana"
      },
      "application/conference-info+xml": {
        source: "iana",
        compressible: true
      },
      "application/cose": {
        source: "iana"
      },
      "application/cose-key": {
        source: "iana"
      },
      "application/cose-key-set": {
        source: "iana"
      },
      "application/cpl+xml": {
        source: "iana",
        compressible: true,
        extensions: ["cpl"]
      },
      "application/csrattrs": {
        source: "iana"
      },
      "application/csta+xml": {
        source: "iana",
        compressible: true
      },
      "application/cstadata+xml": {
        source: "iana",
        compressible: true
      },
      "application/csvm+json": {
        source: "iana",
        compressible: true
      },
      "application/cu-seeme": {
        source: "apache",
        extensions: ["cu"]
      },
      "application/cwt": {
        source: "iana"
      },
      "application/cybercash": {
        source: "iana"
      },
      "application/dart": {
        compressible: true
      },
      "application/dash+xml": {
        source: "iana",
        compressible: true,
        extensions: ["mpd"]
      },
      "application/dash-patch+xml": {
        source: "iana",
        compressible: true,
        extensions: ["mpp"]
      },
      "application/dashdelta": {
        source: "iana"
      },
      "application/davmount+xml": {
        source: "iana",
        compressible: true,
        extensions: ["davmount"]
      },
      "application/dca-rft": {
        source: "iana"
      },
      "application/dcd": {
        source: "iana"
      },
      "application/dec-dx": {
        source: "iana"
      },
      "application/dialog-info+xml": {
        source: "iana",
        compressible: true
      },
      "application/dicom": {
        source: "iana"
      },
      "application/dicom+json": {
        source: "iana",
        compressible: true
      },
      "application/dicom+xml": {
        source: "iana",
        compressible: true
      },
      "application/dii": {
        source: "iana"
      },
      "application/dit": {
        source: "iana"
      },
      "application/dns": {
        source: "iana"
      },
      "application/dns+json": {
        source: "iana",
        compressible: true
      },
      "application/dns-message": {
        source: "iana"
      },
      "application/docbook+xml": {
        source: "apache",
        compressible: true,
        extensions: ["dbk"]
      },
      "application/dots+cbor": {
        source: "iana"
      },
      "application/dskpp+xml": {
        source: "iana",
        compressible: true
      },
      "application/dssc+der": {
        source: "iana",
        extensions: ["dssc"]
      },
      "application/dssc+xml": {
        source: "iana",
        compressible: true,
        extensions: ["xdssc"]
      },
      "application/dvcs": {
        source: "iana"
      },
      "application/ecmascript": {
        source: "iana",
        compressible: true,
        extensions: ["es", "ecma"]
      },
      "application/edi-consent": {
        source: "iana"
      },
      "application/edi-x12": {
        source: "iana",
        compressible: false
      },
      "application/edifact": {
        source: "iana",
        compressible: false
      },
      "application/efi": {
        source: "iana"
      },
      "application/elm+json": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/elm+xml": {
        source: "iana",
        compressible: true
      },
      "application/emergencycalldata.cap+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/emergencycalldata.comment+xml": {
        source: "iana",
        compressible: true
      },
      "application/emergencycalldata.control+xml": {
        source: "iana",
        compressible: true
      },
      "application/emergencycalldata.deviceinfo+xml": {
        source: "iana",
        compressible: true
      },
      "application/emergencycalldata.ecall.msd": {
        source: "iana"
      },
      "application/emergencycalldata.providerinfo+xml": {
        source: "iana",
        compressible: true
      },
      "application/emergencycalldata.serviceinfo+xml": {
        source: "iana",
        compressible: true
      },
      "application/emergencycalldata.subscriberinfo+xml": {
        source: "iana",
        compressible: true
      },
      "application/emergencycalldata.veds+xml": {
        source: "iana",
        compressible: true
      },
      "application/emma+xml": {
        source: "iana",
        compressible: true,
        extensions: ["emma"]
      },
      "application/emotionml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["emotionml"]
      },
      "application/encaprtp": {
        source: "iana"
      },
      "application/epp+xml": {
        source: "iana",
        compressible: true
      },
      "application/epub+zip": {
        source: "iana",
        compressible: false,
        extensions: ["epub"]
      },
      "application/eshop": {
        source: "iana"
      },
      "application/exi": {
        source: "iana",
        extensions: ["exi"]
      },
      "application/expect-ct-report+json": {
        source: "iana",
        compressible: true
      },
      "application/express": {
        source: "iana",
        extensions: ["exp"]
      },
      "application/fastinfoset": {
        source: "iana"
      },
      "application/fastsoap": {
        source: "iana"
      },
      "application/fdt+xml": {
        source: "iana",
        compressible: true,
        extensions: ["fdt"]
      },
      "application/fhir+json": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/fhir+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/fido.trusted-apps+json": {
        compressible: true
      },
      "application/fits": {
        source: "iana"
      },
      "application/flexfec": {
        source: "iana"
      },
      "application/font-sfnt": {
        source: "iana"
      },
      "application/font-tdpfr": {
        source: "iana",
        extensions: ["pfr"]
      },
      "application/font-woff": {
        source: "iana",
        compressible: false
      },
      "application/framework-attributes+xml": {
        source: "iana",
        compressible: true
      },
      "application/geo+json": {
        source: "iana",
        compressible: true,
        extensions: ["geojson"]
      },
      "application/geo+json-seq": {
        source: "iana"
      },
      "application/geopackage+sqlite3": {
        source: "iana"
      },
      "application/geoxacml+xml": {
        source: "iana",
        compressible: true
      },
      "application/gltf-buffer": {
        source: "iana"
      },
      "application/gml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["gml"]
      },
      "application/gpx+xml": {
        source: "apache",
        compressible: true,
        extensions: ["gpx"]
      },
      "application/gxf": {
        source: "apache",
        extensions: ["gxf"]
      },
      "application/gzip": {
        source: "iana",
        compressible: false,
        extensions: ["gz"]
      },
      "application/h224": {
        source: "iana"
      },
      "application/held+xml": {
        source: "iana",
        compressible: true
      },
      "application/hjson": {
        extensions: ["hjson"]
      },
      "application/http": {
        source: "iana"
      },
      "application/hyperstudio": {
        source: "iana",
        extensions: ["stk"]
      },
      "application/ibe-key-request+xml": {
        source: "iana",
        compressible: true
      },
      "application/ibe-pkg-reply+xml": {
        source: "iana",
        compressible: true
      },
      "application/ibe-pp-data": {
        source: "iana"
      },
      "application/iges": {
        source: "iana"
      },
      "application/im-iscomposing+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/index": {
        source: "iana"
      },
      "application/index.cmd": {
        source: "iana"
      },
      "application/index.obj": {
        source: "iana"
      },
      "application/index.response": {
        source: "iana"
      },
      "application/index.vnd": {
        source: "iana"
      },
      "application/inkml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["ink", "inkml"]
      },
      "application/iotp": {
        source: "iana"
      },
      "application/ipfix": {
        source: "iana",
        extensions: ["ipfix"]
      },
      "application/ipp": {
        source: "iana"
      },
      "application/isup": {
        source: "iana"
      },
      "application/its+xml": {
        source: "iana",
        compressible: true,
        extensions: ["its"]
      },
      "application/java-archive": {
        source: "apache",
        compressible: false,
        extensions: ["jar", "war", "ear"]
      },
      "application/java-serialized-object": {
        source: "apache",
        compressible: false,
        extensions: ["ser"]
      },
      "application/java-vm": {
        source: "apache",
        compressible: false,
        extensions: ["class"]
      },
      "application/javascript": {
        source: "iana",
        charset: "UTF-8",
        compressible: true,
        extensions: ["js", "mjs"]
      },
      "application/jf2feed+json": {
        source: "iana",
        compressible: true
      },
      "application/jose": {
        source: "iana"
      },
      "application/jose+json": {
        source: "iana",
        compressible: true
      },
      "application/jrd+json": {
        source: "iana",
        compressible: true
      },
      "application/jscalendar+json": {
        source: "iana",
        compressible: true
      },
      "application/json": {
        source: "iana",
        charset: "UTF-8",
        compressible: true,
        extensions: ["json", "map"]
      },
      "application/json-patch+json": {
        source: "iana",
        compressible: true
      },
      "application/json-seq": {
        source: "iana"
      },
      "application/json5": {
        extensions: ["json5"]
      },
      "application/jsonml+json": {
        source: "apache",
        compressible: true,
        extensions: ["jsonml"]
      },
      "application/jwk+json": {
        source: "iana",
        compressible: true
      },
      "application/jwk-set+json": {
        source: "iana",
        compressible: true
      },
      "application/jwt": {
        source: "iana"
      },
      "application/kpml-request+xml": {
        source: "iana",
        compressible: true
      },
      "application/kpml-response+xml": {
        source: "iana",
        compressible: true
      },
      "application/ld+json": {
        source: "iana",
        compressible: true,
        extensions: ["jsonld"]
      },
      "application/lgr+xml": {
        source: "iana",
        compressible: true,
        extensions: ["lgr"]
      },
      "application/link-format": {
        source: "iana"
      },
      "application/load-control+xml": {
        source: "iana",
        compressible: true
      },
      "application/lost+xml": {
        source: "iana",
        compressible: true,
        extensions: ["lostxml"]
      },
      "application/lostsync+xml": {
        source: "iana",
        compressible: true
      },
      "application/lpf+zip": {
        source: "iana",
        compressible: false
      },
      "application/lxf": {
        source: "iana"
      },
      "application/mac-binhex40": {
        source: "iana",
        extensions: ["hqx"]
      },
      "application/mac-compactpro": {
        source: "apache",
        extensions: ["cpt"]
      },
      "application/macwriteii": {
        source: "iana"
      },
      "application/mads+xml": {
        source: "iana",
        compressible: true,
        extensions: ["mads"]
      },
      "application/manifest+json": {
        source: "iana",
        charset: "UTF-8",
        compressible: true,
        extensions: ["webmanifest"]
      },
      "application/marc": {
        source: "iana",
        extensions: ["mrc"]
      },
      "application/marcxml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["mrcx"]
      },
      "application/mathematica": {
        source: "iana",
        extensions: ["ma", "nb", "mb"]
      },
      "application/mathml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["mathml"]
      },
      "application/mathml-content+xml": {
        source: "iana",
        compressible: true
      },
      "application/mathml-presentation+xml": {
        source: "iana",
        compressible: true
      },
      "application/mbms-associated-procedure-description+xml": {
        source: "iana",
        compressible: true
      },
      "application/mbms-deregister+xml": {
        source: "iana",
        compressible: true
      },
      "application/mbms-envelope+xml": {
        source: "iana",
        compressible: true
      },
      "application/mbms-msk+xml": {
        source: "iana",
        compressible: true
      },
      "application/mbms-msk-response+xml": {
        source: "iana",
        compressible: true
      },
      "application/mbms-protection-description+xml": {
        source: "iana",
        compressible: true
      },
      "application/mbms-reception-report+xml": {
        source: "iana",
        compressible: true
      },
      "application/mbms-register+xml": {
        source: "iana",
        compressible: true
      },
      "application/mbms-register-response+xml": {
        source: "iana",
        compressible: true
      },
      "application/mbms-schedule+xml": {
        source: "iana",
        compressible: true
      },
      "application/mbms-user-service-description+xml": {
        source: "iana",
        compressible: true
      },
      "application/mbox": {
        source: "iana",
        extensions: ["mbox"]
      },
      "application/media-policy-dataset+xml": {
        source: "iana",
        compressible: true,
        extensions: ["mpf"]
      },
      "application/media_control+xml": {
        source: "iana",
        compressible: true
      },
      "application/mediaservercontrol+xml": {
        source: "iana",
        compressible: true,
        extensions: ["mscml"]
      },
      "application/merge-patch+json": {
        source: "iana",
        compressible: true
      },
      "application/metalink+xml": {
        source: "apache",
        compressible: true,
        extensions: ["metalink"]
      },
      "application/metalink4+xml": {
        source: "iana",
        compressible: true,
        extensions: ["meta4"]
      },
      "application/mets+xml": {
        source: "iana",
        compressible: true,
        extensions: ["mets"]
      },
      "application/mf4": {
        source: "iana"
      },
      "application/mikey": {
        source: "iana"
      },
      "application/mipc": {
        source: "iana"
      },
      "application/missing-blocks+cbor-seq": {
        source: "iana"
      },
      "application/mmt-aei+xml": {
        source: "iana",
        compressible: true,
        extensions: ["maei"]
      },
      "application/mmt-usd+xml": {
        source: "iana",
        compressible: true,
        extensions: ["musd"]
      },
      "application/mods+xml": {
        source: "iana",
        compressible: true,
        extensions: ["mods"]
      },
      "application/moss-keys": {
        source: "iana"
      },
      "application/moss-signature": {
        source: "iana"
      },
      "application/mosskey-data": {
        source: "iana"
      },
      "application/mosskey-request": {
        source: "iana"
      },
      "application/mp21": {
        source: "iana",
        extensions: ["m21", "mp21"]
      },
      "application/mp4": {
        source: "iana",
        extensions: ["mp4s", "m4p"]
      },
      "application/mpeg4-generic": {
        source: "iana"
      },
      "application/mpeg4-iod": {
        source: "iana"
      },
      "application/mpeg4-iod-xmt": {
        source: "iana"
      },
      "application/mrb-consumer+xml": {
        source: "iana",
        compressible: true
      },
      "application/mrb-publish+xml": {
        source: "iana",
        compressible: true
      },
      "application/msc-ivr+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/msc-mixer+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/msword": {
        source: "iana",
        compressible: false,
        extensions: ["doc", "dot"]
      },
      "application/mud+json": {
        source: "iana",
        compressible: true
      },
      "application/multipart-core": {
        source: "iana"
      },
      "application/mxf": {
        source: "iana",
        extensions: ["mxf"]
      },
      "application/n-quads": {
        source: "iana",
        extensions: ["nq"]
      },
      "application/n-triples": {
        source: "iana",
        extensions: ["nt"]
      },
      "application/nasdata": {
        source: "iana"
      },
      "application/news-checkgroups": {
        source: "iana",
        charset: "US-ASCII"
      },
      "application/news-groupinfo": {
        source: "iana",
        charset: "US-ASCII"
      },
      "application/news-transmission": {
        source: "iana"
      },
      "application/nlsml+xml": {
        source: "iana",
        compressible: true
      },
      "application/node": {
        source: "iana",
        extensions: ["cjs"]
      },
      "application/nss": {
        source: "iana"
      },
      "application/oauth-authz-req+jwt": {
        source: "iana"
      },
      "application/oblivious-dns-message": {
        source: "iana"
      },
      "application/ocsp-request": {
        source: "iana"
      },
      "application/ocsp-response": {
        source: "iana"
      },
      "application/octet-stream": {
        source: "iana",
        compressible: false,
        extensions: ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"]
      },
      "application/oda": {
        source: "iana",
        extensions: ["oda"]
      },
      "application/odm+xml": {
        source: "iana",
        compressible: true
      },
      "application/odx": {
        source: "iana"
      },
      "application/oebps-package+xml": {
        source: "iana",
        compressible: true,
        extensions: ["opf"]
      },
      "application/ogg": {
        source: "iana",
        compressible: false,
        extensions: ["ogx"]
      },
      "application/omdoc+xml": {
        source: "apache",
        compressible: true,
        extensions: ["omdoc"]
      },
      "application/onenote": {
        source: "apache",
        extensions: ["onetoc", "onetoc2", "onetmp", "onepkg"]
      },
      "application/opc-nodeset+xml": {
        source: "iana",
        compressible: true
      },
      "application/oscore": {
        source: "iana"
      },
      "application/oxps": {
        source: "iana",
        extensions: ["oxps"]
      },
      "application/p21": {
        source: "iana"
      },
      "application/p21+zip": {
        source: "iana",
        compressible: false
      },
      "application/p2p-overlay+xml": {
        source: "iana",
        compressible: true,
        extensions: ["relo"]
      },
      "application/parityfec": {
        source: "iana"
      },
      "application/passport": {
        source: "iana"
      },
      "application/patch-ops-error+xml": {
        source: "iana",
        compressible: true,
        extensions: ["xer"]
      },
      "application/pdf": {
        source: "iana",
        compressible: false,
        extensions: ["pdf"]
      },
      "application/pdx": {
        source: "iana"
      },
      "application/pem-certificate-chain": {
        source: "iana"
      },
      "application/pgp-encrypted": {
        source: "iana",
        compressible: false,
        extensions: ["pgp"]
      },
      "application/pgp-keys": {
        source: "iana",
        extensions: ["asc"]
      },
      "application/pgp-signature": {
        source: "iana",
        extensions: ["asc", "sig"]
      },
      "application/pics-rules": {
        source: "apache",
        extensions: ["prf"]
      },
      "application/pidf+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/pidf-diff+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/pkcs10": {
        source: "iana",
        extensions: ["p10"]
      },
      "application/pkcs12": {
        source: "iana"
      },
      "application/pkcs7-mime": {
        source: "iana",
        extensions: ["p7m", "p7c"]
      },
      "application/pkcs7-signature": {
        source: "iana",
        extensions: ["p7s"]
      },
      "application/pkcs8": {
        source: "iana",
        extensions: ["p8"]
      },
      "application/pkcs8-encrypted": {
        source: "iana"
      },
      "application/pkix-attr-cert": {
        source: "iana",
        extensions: ["ac"]
      },
      "application/pkix-cert": {
        source: "iana",
        extensions: ["cer"]
      },
      "application/pkix-crl": {
        source: "iana",
        extensions: ["crl"]
      },
      "application/pkix-pkipath": {
        source: "iana",
        extensions: ["pkipath"]
      },
      "application/pkixcmp": {
        source: "iana",
        extensions: ["pki"]
      },
      "application/pls+xml": {
        source: "iana",
        compressible: true,
        extensions: ["pls"]
      },
      "application/poc-settings+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/postscript": {
        source: "iana",
        compressible: true,
        extensions: ["ai", "eps", "ps"]
      },
      "application/ppsp-tracker+json": {
        source: "iana",
        compressible: true
      },
      "application/problem+json": {
        source: "iana",
        compressible: true
      },
      "application/problem+xml": {
        source: "iana",
        compressible: true
      },
      "application/provenance+xml": {
        source: "iana",
        compressible: true,
        extensions: ["provx"]
      },
      "application/prs.alvestrand.titrax-sheet": {
        source: "iana"
      },
      "application/prs.cww": {
        source: "iana",
        extensions: ["cww"]
      },
      "application/prs.cyn": {
        source: "iana",
        charset: "7-BIT"
      },
      "application/prs.hpub+zip": {
        source: "iana",
        compressible: false
      },
      "application/prs.nprend": {
        source: "iana"
      },
      "application/prs.plucker": {
        source: "iana"
      },
      "application/prs.rdf-xml-crypt": {
        source: "iana"
      },
      "application/prs.xsf+xml": {
        source: "iana",
        compressible: true
      },
      "application/pskc+xml": {
        source: "iana",
        compressible: true,
        extensions: ["pskcxml"]
      },
      "application/pvd+json": {
        source: "iana",
        compressible: true
      },
      "application/qsig": {
        source: "iana"
      },
      "application/raml+yaml": {
        compressible: true,
        extensions: ["raml"]
      },
      "application/raptorfec": {
        source: "iana"
      },
      "application/rdap+json": {
        source: "iana",
        compressible: true
      },
      "application/rdf+xml": {
        source: "iana",
        compressible: true,
        extensions: ["rdf", "owl"]
      },
      "application/reginfo+xml": {
        source: "iana",
        compressible: true,
        extensions: ["rif"]
      },
      "application/relax-ng-compact-syntax": {
        source: "iana",
        extensions: ["rnc"]
      },
      "application/remote-printing": {
        source: "iana"
      },
      "application/reputon+json": {
        source: "iana",
        compressible: true
      },
      "application/resource-lists+xml": {
        source: "iana",
        compressible: true,
        extensions: ["rl"]
      },
      "application/resource-lists-diff+xml": {
        source: "iana",
        compressible: true,
        extensions: ["rld"]
      },
      "application/rfc+xml": {
        source: "iana",
        compressible: true
      },
      "application/riscos": {
        source: "iana"
      },
      "application/rlmi+xml": {
        source: "iana",
        compressible: true
      },
      "application/rls-services+xml": {
        source: "iana",
        compressible: true,
        extensions: ["rs"]
      },
      "application/route-apd+xml": {
        source: "iana",
        compressible: true,
        extensions: ["rapd"]
      },
      "application/route-s-tsid+xml": {
        source: "iana",
        compressible: true,
        extensions: ["sls"]
      },
      "application/route-usd+xml": {
        source: "iana",
        compressible: true,
        extensions: ["rusd"]
      },
      "application/rpki-ghostbusters": {
        source: "iana",
        extensions: ["gbr"]
      },
      "application/rpki-manifest": {
        source: "iana",
        extensions: ["mft"]
      },
      "application/rpki-publication": {
        source: "iana"
      },
      "application/rpki-roa": {
        source: "iana",
        extensions: ["roa"]
      },
      "application/rpki-updown": {
        source: "iana"
      },
      "application/rsd+xml": {
        source: "apache",
        compressible: true,
        extensions: ["rsd"]
      },
      "application/rss+xml": {
        source: "apache",
        compressible: true,
        extensions: ["rss"]
      },
      "application/rtf": {
        source: "iana",
        compressible: true,
        extensions: ["rtf"]
      },
      "application/rtploopback": {
        source: "iana"
      },
      "application/rtx": {
        source: "iana"
      },
      "application/samlassertion+xml": {
        source: "iana",
        compressible: true
      },
      "application/samlmetadata+xml": {
        source: "iana",
        compressible: true
      },
      "application/sarif+json": {
        source: "iana",
        compressible: true
      },
      "application/sarif-external-properties+json": {
        source: "iana",
        compressible: true
      },
      "application/sbe": {
        source: "iana"
      },
      "application/sbml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["sbml"]
      },
      "application/scaip+xml": {
        source: "iana",
        compressible: true
      },
      "application/scim+json": {
        source: "iana",
        compressible: true
      },
      "application/scvp-cv-request": {
        source: "iana",
        extensions: ["scq"]
      },
      "application/scvp-cv-response": {
        source: "iana",
        extensions: ["scs"]
      },
      "application/scvp-vp-request": {
        source: "iana",
        extensions: ["spq"]
      },
      "application/scvp-vp-response": {
        source: "iana",
        extensions: ["spp"]
      },
      "application/sdp": {
        source: "iana",
        extensions: ["sdp"]
      },
      "application/secevent+jwt": {
        source: "iana"
      },
      "application/senml+cbor": {
        source: "iana"
      },
      "application/senml+json": {
        source: "iana",
        compressible: true
      },
      "application/senml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["senmlx"]
      },
      "application/senml-etch+cbor": {
        source: "iana"
      },
      "application/senml-etch+json": {
        source: "iana",
        compressible: true
      },
      "application/senml-exi": {
        source: "iana"
      },
      "application/sensml+cbor": {
        source: "iana"
      },
      "application/sensml+json": {
        source: "iana",
        compressible: true
      },
      "application/sensml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["sensmlx"]
      },
      "application/sensml-exi": {
        source: "iana"
      },
      "application/sep+xml": {
        source: "iana",
        compressible: true
      },
      "application/sep-exi": {
        source: "iana"
      },
      "application/session-info": {
        source: "iana"
      },
      "application/set-payment": {
        source: "iana"
      },
      "application/set-payment-initiation": {
        source: "iana",
        extensions: ["setpay"]
      },
      "application/set-registration": {
        source: "iana"
      },
      "application/set-registration-initiation": {
        source: "iana",
        extensions: ["setreg"]
      },
      "application/sgml": {
        source: "iana"
      },
      "application/sgml-open-catalog": {
        source: "iana"
      },
      "application/shf+xml": {
        source: "iana",
        compressible: true,
        extensions: ["shf"]
      },
      "application/sieve": {
        source: "iana",
        extensions: ["siv", "sieve"]
      },
      "application/simple-filter+xml": {
        source: "iana",
        compressible: true
      },
      "application/simple-message-summary": {
        source: "iana"
      },
      "application/simplesymbolcontainer": {
        source: "iana"
      },
      "application/sipc": {
        source: "iana"
      },
      "application/slate": {
        source: "iana"
      },
      "application/smil": {
        source: "iana"
      },
      "application/smil+xml": {
        source: "iana",
        compressible: true,
        extensions: ["smi", "smil"]
      },
      "application/smpte336m": {
        source: "iana"
      },
      "application/soap+fastinfoset": {
        source: "iana"
      },
      "application/soap+xml": {
        source: "iana",
        compressible: true
      },
      "application/sparql-query": {
        source: "iana",
        extensions: ["rq"]
      },
      "application/sparql-results+xml": {
        source: "iana",
        compressible: true,
        extensions: ["srx"]
      },
      "application/spdx+json": {
        source: "iana",
        compressible: true
      },
      "application/spirits-event+xml": {
        source: "iana",
        compressible: true
      },
      "application/sql": {
        source: "iana"
      },
      "application/srgs": {
        source: "iana",
        extensions: ["gram"]
      },
      "application/srgs+xml": {
        source: "iana",
        compressible: true,
        extensions: ["grxml"]
      },
      "application/sru+xml": {
        source: "iana",
        compressible: true,
        extensions: ["sru"]
      },
      "application/ssdl+xml": {
        source: "apache",
        compressible: true,
        extensions: ["ssdl"]
      },
      "application/ssml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["ssml"]
      },
      "application/stix+json": {
        source: "iana",
        compressible: true
      },
      "application/swid+xml": {
        source: "iana",
        compressible: true,
        extensions: ["swidtag"]
      },
      "application/tamp-apex-update": {
        source: "iana"
      },
      "application/tamp-apex-update-confirm": {
        source: "iana"
      },
      "application/tamp-community-update": {
        source: "iana"
      },
      "application/tamp-community-update-confirm": {
        source: "iana"
      },
      "application/tamp-error": {
        source: "iana"
      },
      "application/tamp-sequence-adjust": {
        source: "iana"
      },
      "application/tamp-sequence-adjust-confirm": {
        source: "iana"
      },
      "application/tamp-status-query": {
        source: "iana"
      },
      "application/tamp-status-response": {
        source: "iana"
      },
      "application/tamp-update": {
        source: "iana"
      },
      "application/tamp-update-confirm": {
        source: "iana"
      },
      "application/tar": {
        compressible: true
      },
      "application/taxii+json": {
        source: "iana",
        compressible: true
      },
      "application/td+json": {
        source: "iana",
        compressible: true
      },
      "application/tei+xml": {
        source: "iana",
        compressible: true,
        extensions: ["tei", "teicorpus"]
      },
      "application/tetra_isi": {
        source: "iana"
      },
      "application/thraud+xml": {
        source: "iana",
        compressible: true,
        extensions: ["tfi"]
      },
      "application/timestamp-query": {
        source: "iana"
      },
      "application/timestamp-reply": {
        source: "iana"
      },
      "application/timestamped-data": {
        source: "iana",
        extensions: ["tsd"]
      },
      "application/tlsrpt+gzip": {
        source: "iana"
      },
      "application/tlsrpt+json": {
        source: "iana",
        compressible: true
      },
      "application/tnauthlist": {
        source: "iana"
      },
      "application/token-introspection+jwt": {
        source: "iana"
      },
      "application/toml": {
        compressible: true,
        extensions: ["toml"]
      },
      "application/trickle-ice-sdpfrag": {
        source: "iana"
      },
      "application/trig": {
        source: "iana",
        extensions: ["trig"]
      },
      "application/ttml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["ttml"]
      },
      "application/tve-trigger": {
        source: "iana"
      },
      "application/tzif": {
        source: "iana"
      },
      "application/tzif-leap": {
        source: "iana"
      },
      "application/ubjson": {
        compressible: false,
        extensions: ["ubj"]
      },
      "application/ulpfec": {
        source: "iana"
      },
      "application/urc-grpsheet+xml": {
        source: "iana",
        compressible: true
      },
      "application/urc-ressheet+xml": {
        source: "iana",
        compressible: true,
        extensions: ["rsheet"]
      },
      "application/urc-targetdesc+xml": {
        source: "iana",
        compressible: true,
        extensions: ["td"]
      },
      "application/urc-uisocketdesc+xml": {
        source: "iana",
        compressible: true
      },
      "application/vcard+json": {
        source: "iana",
        compressible: true
      },
      "application/vcard+xml": {
        source: "iana",
        compressible: true
      },
      "application/vemmi": {
        source: "iana"
      },
      "application/vividence.scriptfile": {
        source: "apache"
      },
      "application/vnd.1000minds.decision-model+xml": {
        source: "iana",
        compressible: true,
        extensions: ["1km"]
      },
      "application/vnd.3gpp-prose+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp-prose-pc3ch+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp-v2x-local-service-information": {
        source: "iana"
      },
      "application/vnd.3gpp.5gnas": {
        source: "iana"
      },
      "application/vnd.3gpp.access-transfer-events+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.bsf+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.gmop+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.gtpc": {
        source: "iana"
      },
      "application/vnd.3gpp.interworking-data": {
        source: "iana"
      },
      "application/vnd.3gpp.lpp": {
        source: "iana"
      },
      "application/vnd.3gpp.mc-signalling-ear": {
        source: "iana"
      },
      "application/vnd.3gpp.mcdata-affiliation-command+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcdata-info+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcdata-payload": {
        source: "iana"
      },
      "application/vnd.3gpp.mcdata-service-config+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcdata-signalling": {
        source: "iana"
      },
      "application/vnd.3gpp.mcdata-ue-config+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcdata-user-profile+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcptt-affiliation-command+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcptt-floor-request+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcptt-info+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcptt-location-info+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcptt-mbms-usage-info+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcptt-service-config+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcptt-signed+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcptt-ue-config+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcptt-ue-init-config+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcptt-user-profile+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcvideo-affiliation-command+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcvideo-affiliation-info+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcvideo-info+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcvideo-location-info+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcvideo-service-config+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcvideo-transmission-request+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcvideo-ue-config+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mcvideo-user-profile+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.mid-call+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.ngap": {
        source: "iana"
      },
      "application/vnd.3gpp.pfcp": {
        source: "iana"
      },
      "application/vnd.3gpp.pic-bw-large": {
        source: "iana",
        extensions: ["plb"]
      },
      "application/vnd.3gpp.pic-bw-small": {
        source: "iana",
        extensions: ["psb"]
      },
      "application/vnd.3gpp.pic-bw-var": {
        source: "iana",
        extensions: ["pvb"]
      },
      "application/vnd.3gpp.s1ap": {
        source: "iana"
      },
      "application/vnd.3gpp.sms": {
        source: "iana"
      },
      "application/vnd.3gpp.sms+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.srvcc-ext+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.srvcc-info+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.state-and-event-info+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp.ussd+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp2.bcmcsinfo+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.3gpp2.sms": {
        source: "iana"
      },
      "application/vnd.3gpp2.tcap": {
        source: "iana",
        extensions: ["tcap"]
      },
      "application/vnd.3lightssoftware.imagescal": {
        source: "iana"
      },
      "application/vnd.3m.post-it-notes": {
        source: "iana",
        extensions: ["pwn"]
      },
      "application/vnd.accpac.simply.aso": {
        source: "iana",
        extensions: ["aso"]
      },
      "application/vnd.accpac.simply.imp": {
        source: "iana",
        extensions: ["imp"]
      },
      "application/vnd.acucobol": {
        source: "iana",
        extensions: ["acu"]
      },
      "application/vnd.acucorp": {
        source: "iana",
        extensions: ["atc", "acutc"]
      },
      "application/vnd.adobe.air-application-installer-package+zip": {
        source: "apache",
        compressible: false,
        extensions: ["air"]
      },
      "application/vnd.adobe.flash.movie": {
        source: "iana"
      },
      "application/vnd.adobe.formscentral.fcdt": {
        source: "iana",
        extensions: ["fcdt"]
      },
      "application/vnd.adobe.fxp": {
        source: "iana",
        extensions: ["fxp", "fxpl"]
      },
      "application/vnd.adobe.partial-upload": {
        source: "iana"
      },
      "application/vnd.adobe.xdp+xml": {
        source: "iana",
        compressible: true,
        extensions: ["xdp"]
      },
      "application/vnd.adobe.xfdf": {
        source: "iana",
        extensions: ["xfdf"]
      },
      "application/vnd.aether.imp": {
        source: "iana"
      },
      "application/vnd.afpc.afplinedata": {
        source: "iana"
      },
      "application/vnd.afpc.afplinedata-pagedef": {
        source: "iana"
      },
      "application/vnd.afpc.cmoca-cmresource": {
        source: "iana"
      },
      "application/vnd.afpc.foca-charset": {
        source: "iana"
      },
      "application/vnd.afpc.foca-codedfont": {
        source: "iana"
      },
      "application/vnd.afpc.foca-codepage": {
        source: "iana"
      },
      "application/vnd.afpc.modca": {
        source: "iana"
      },
      "application/vnd.afpc.modca-cmtable": {
        source: "iana"
      },
      "application/vnd.afpc.modca-formdef": {
        source: "iana"
      },
      "application/vnd.afpc.modca-mediummap": {
        source: "iana"
      },
      "application/vnd.afpc.modca-objectcontainer": {
        source: "iana"
      },
      "application/vnd.afpc.modca-overlay": {
        source: "iana"
      },
      "application/vnd.afpc.modca-pagesegment": {
        source: "iana"
      },
      "application/vnd.age": {
        source: "iana",
        extensions: ["age"]
      },
      "application/vnd.ah-barcode": {
        source: "iana"
      },
      "application/vnd.ahead.space": {
        source: "iana",
        extensions: ["ahead"]
      },
      "application/vnd.airzip.filesecure.azf": {
        source: "iana",
        extensions: ["azf"]
      },
      "application/vnd.airzip.filesecure.azs": {
        source: "iana",
        extensions: ["azs"]
      },
      "application/vnd.amadeus+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.amazon.ebook": {
        source: "apache",
        extensions: ["azw"]
      },
      "application/vnd.amazon.mobi8-ebook": {
        source: "iana"
      },
      "application/vnd.americandynamics.acc": {
        source: "iana",
        extensions: ["acc"]
      },
      "application/vnd.amiga.ami": {
        source: "iana",
        extensions: ["ami"]
      },
      "application/vnd.amundsen.maze+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.android.ota": {
        source: "iana"
      },
      "application/vnd.android.package-archive": {
        source: "apache",
        compressible: false,
        extensions: ["apk"]
      },
      "application/vnd.anki": {
        source: "iana"
      },
      "application/vnd.anser-web-certificate-issue-initiation": {
        source: "iana",
        extensions: ["cii"]
      },
      "application/vnd.anser-web-funds-transfer-initiation": {
        source: "apache",
        extensions: ["fti"]
      },
      "application/vnd.antix.game-component": {
        source: "iana",
        extensions: ["atx"]
      },
      "application/vnd.apache.arrow.file": {
        source: "iana"
      },
      "application/vnd.apache.arrow.stream": {
        source: "iana"
      },
      "application/vnd.apache.thrift.binary": {
        source: "iana"
      },
      "application/vnd.apache.thrift.compact": {
        source: "iana"
      },
      "application/vnd.apache.thrift.json": {
        source: "iana"
      },
      "application/vnd.api+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.aplextor.warrp+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.apothekende.reservation+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.apple.installer+xml": {
        source: "iana",
        compressible: true,
        extensions: ["mpkg"]
      },
      "application/vnd.apple.keynote": {
        source: "iana",
        extensions: ["key"]
      },
      "application/vnd.apple.mpegurl": {
        source: "iana",
        extensions: ["m3u8"]
      },
      "application/vnd.apple.numbers": {
        source: "iana",
        extensions: ["numbers"]
      },
      "application/vnd.apple.pages": {
        source: "iana",
        extensions: ["pages"]
      },
      "application/vnd.apple.pkpass": {
        compressible: false,
        extensions: ["pkpass"]
      },
      "application/vnd.arastra.swi": {
        source: "iana"
      },
      "application/vnd.aristanetworks.swi": {
        source: "iana",
        extensions: ["swi"]
      },
      "application/vnd.artisan+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.artsquare": {
        source: "iana"
      },
      "application/vnd.astraea-software.iota": {
        source: "iana",
        extensions: ["iota"]
      },
      "application/vnd.audiograph": {
        source: "iana",
        extensions: ["aep"]
      },
      "application/vnd.autopackage": {
        source: "iana"
      },
      "application/vnd.avalon+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.avistar+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.balsamiq.bmml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["bmml"]
      },
      "application/vnd.balsamiq.bmpr": {
        source: "iana"
      },
      "application/vnd.banana-accounting": {
        source: "iana"
      },
      "application/vnd.bbf.usp.error": {
        source: "iana"
      },
      "application/vnd.bbf.usp.msg": {
        source: "iana"
      },
      "application/vnd.bbf.usp.msg+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.bekitzur-stech+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.bint.med-content": {
        source: "iana"
      },
      "application/vnd.biopax.rdf+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.blink-idb-value-wrapper": {
        source: "iana"
      },
      "application/vnd.blueice.multipass": {
        source: "iana",
        extensions: ["mpm"]
      },
      "application/vnd.bluetooth.ep.oob": {
        source: "iana"
      },
      "application/vnd.bluetooth.le.oob": {
        source: "iana"
      },
      "application/vnd.bmi": {
        source: "iana",
        extensions: ["bmi"]
      },
      "application/vnd.bpf": {
        source: "iana"
      },
      "application/vnd.bpf3": {
        source: "iana"
      },
      "application/vnd.businessobjects": {
        source: "iana",
        extensions: ["rep"]
      },
      "application/vnd.byu.uapi+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.cab-jscript": {
        source: "iana"
      },
      "application/vnd.canon-cpdl": {
        source: "iana"
      },
      "application/vnd.canon-lips": {
        source: "iana"
      },
      "application/vnd.capasystems-pg+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.cendio.thinlinc.clientconf": {
        source: "iana"
      },
      "application/vnd.century-systems.tcp_stream": {
        source: "iana"
      },
      "application/vnd.chemdraw+xml": {
        source: "iana",
        compressible: true,
        extensions: ["cdxml"]
      },
      "application/vnd.chess-pgn": {
        source: "iana"
      },
      "application/vnd.chipnuts.karaoke-mmd": {
        source: "iana",
        extensions: ["mmd"]
      },
      "application/vnd.ciedi": {
        source: "iana"
      },
      "application/vnd.cinderella": {
        source: "iana",
        extensions: ["cdy"]
      },
      "application/vnd.cirpack.isdn-ext": {
        source: "iana"
      },
      "application/vnd.citationstyles.style+xml": {
        source: "iana",
        compressible: true,
        extensions: ["csl"]
      },
      "application/vnd.claymore": {
        source: "iana",
        extensions: ["cla"]
      },
      "application/vnd.cloanto.rp9": {
        source: "iana",
        extensions: ["rp9"]
      },
      "application/vnd.clonk.c4group": {
        source: "iana",
        extensions: ["c4g", "c4d", "c4f", "c4p", "c4u"]
      },
      "application/vnd.cluetrust.cartomobile-config": {
        source: "iana",
        extensions: ["c11amc"]
      },
      "application/vnd.cluetrust.cartomobile-config-pkg": {
        source: "iana",
        extensions: ["c11amz"]
      },
      "application/vnd.coffeescript": {
        source: "iana"
      },
      "application/vnd.collabio.xodocuments.document": {
        source: "iana"
      },
      "application/vnd.collabio.xodocuments.document-template": {
        source: "iana"
      },
      "application/vnd.collabio.xodocuments.presentation": {
        source: "iana"
      },
      "application/vnd.collabio.xodocuments.presentation-template": {
        source: "iana"
      },
      "application/vnd.collabio.xodocuments.spreadsheet": {
        source: "iana"
      },
      "application/vnd.collabio.xodocuments.spreadsheet-template": {
        source: "iana"
      },
      "application/vnd.collection+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.collection.doc+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.collection.next+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.comicbook+zip": {
        source: "iana",
        compressible: false
      },
      "application/vnd.comicbook-rar": {
        source: "iana"
      },
      "application/vnd.commerce-battelle": {
        source: "iana"
      },
      "application/vnd.commonspace": {
        source: "iana",
        extensions: ["csp"]
      },
      "application/vnd.contact.cmsg": {
        source: "iana",
        extensions: ["cdbcmsg"]
      },
      "application/vnd.coreos.ignition+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.cosmocaller": {
        source: "iana",
        extensions: ["cmc"]
      },
      "application/vnd.crick.clicker": {
        source: "iana",
        extensions: ["clkx"]
      },
      "application/vnd.crick.clicker.keyboard": {
        source: "iana",
        extensions: ["clkk"]
      },
      "application/vnd.crick.clicker.palette": {
        source: "iana",
        extensions: ["clkp"]
      },
      "application/vnd.crick.clicker.template": {
        source: "iana",
        extensions: ["clkt"]
      },
      "application/vnd.crick.clicker.wordbank": {
        source: "iana",
        extensions: ["clkw"]
      },
      "application/vnd.criticaltools.wbs+xml": {
        source: "iana",
        compressible: true,
        extensions: ["wbs"]
      },
      "application/vnd.cryptii.pipe+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.crypto-shade-file": {
        source: "iana"
      },
      "application/vnd.cryptomator.encrypted": {
        source: "iana"
      },
      "application/vnd.cryptomator.vault": {
        source: "iana"
      },
      "application/vnd.ctc-posml": {
        source: "iana",
        extensions: ["pml"]
      },
      "application/vnd.ctct.ws+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.cups-pdf": {
        source: "iana"
      },
      "application/vnd.cups-postscript": {
        source: "iana"
      },
      "application/vnd.cups-ppd": {
        source: "iana",
        extensions: ["ppd"]
      },
      "application/vnd.cups-raster": {
        source: "iana"
      },
      "application/vnd.cups-raw": {
        source: "iana"
      },
      "application/vnd.curl": {
        source: "iana"
      },
      "application/vnd.curl.car": {
        source: "apache",
        extensions: ["car"]
      },
      "application/vnd.curl.pcurl": {
        source: "apache",
        extensions: ["pcurl"]
      },
      "application/vnd.cyan.dean.root+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.cybank": {
        source: "iana"
      },
      "application/vnd.cyclonedx+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.cyclonedx+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.d2l.coursepackage1p0+zip": {
        source: "iana",
        compressible: false
      },
      "application/vnd.d3m-dataset": {
        source: "iana"
      },
      "application/vnd.d3m-problem": {
        source: "iana"
      },
      "application/vnd.dart": {
        source: "iana",
        compressible: true,
        extensions: ["dart"]
      },
      "application/vnd.data-vision.rdz": {
        source: "iana",
        extensions: ["rdz"]
      },
      "application/vnd.datapackage+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.dataresource+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.dbf": {
        source: "iana",
        extensions: ["dbf"]
      },
      "application/vnd.debian.binary-package": {
        source: "iana"
      },
      "application/vnd.dece.data": {
        source: "iana",
        extensions: ["uvf", "uvvf", "uvd", "uvvd"]
      },
      "application/vnd.dece.ttml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["uvt", "uvvt"]
      },
      "application/vnd.dece.unspecified": {
        source: "iana",
        extensions: ["uvx", "uvvx"]
      },
      "application/vnd.dece.zip": {
        source: "iana",
        extensions: ["uvz", "uvvz"]
      },
      "application/vnd.denovo.fcselayout-link": {
        source: "iana",
        extensions: ["fe_launch"]
      },
      "application/vnd.desmume.movie": {
        source: "iana"
      },
      "application/vnd.dir-bi.plate-dl-nosuffix": {
        source: "iana"
      },
      "application/vnd.dm.delegation+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.dna": {
        source: "iana",
        extensions: ["dna"]
      },
      "application/vnd.document+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.dolby.mlp": {
        source: "apache",
        extensions: ["mlp"]
      },
      "application/vnd.dolby.mobile.1": {
        source: "iana"
      },
      "application/vnd.dolby.mobile.2": {
        source: "iana"
      },
      "application/vnd.doremir.scorecloud-binary-document": {
        source: "iana"
      },
      "application/vnd.dpgraph": {
        source: "iana",
        extensions: ["dpg"]
      },
      "application/vnd.dreamfactory": {
        source: "iana",
        extensions: ["dfac"]
      },
      "application/vnd.drive+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.ds-keypoint": {
        source: "apache",
        extensions: ["kpxx"]
      },
      "application/vnd.dtg.local": {
        source: "iana"
      },
      "application/vnd.dtg.local.flash": {
        source: "iana"
      },
      "application/vnd.dtg.local.html": {
        source: "iana"
      },
      "application/vnd.dvb.ait": {
        source: "iana",
        extensions: ["ait"]
      },
      "application/vnd.dvb.dvbisl+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.dvb.dvbj": {
        source: "iana"
      },
      "application/vnd.dvb.esgcontainer": {
        source: "iana"
      },
      "application/vnd.dvb.ipdcdftnotifaccess": {
        source: "iana"
      },
      "application/vnd.dvb.ipdcesgaccess": {
        source: "iana"
      },
      "application/vnd.dvb.ipdcesgaccess2": {
        source: "iana"
      },
      "application/vnd.dvb.ipdcesgpdd": {
        source: "iana"
      },
      "application/vnd.dvb.ipdcroaming": {
        source: "iana"
      },
      "application/vnd.dvb.iptv.alfec-base": {
        source: "iana"
      },
      "application/vnd.dvb.iptv.alfec-enhancement": {
        source: "iana"
      },
      "application/vnd.dvb.notif-aggregate-root+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.dvb.notif-container+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.dvb.notif-generic+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.dvb.notif-ia-msglist+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.dvb.notif-ia-registration-request+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.dvb.notif-ia-registration-response+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.dvb.notif-init+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.dvb.pfr": {
        source: "iana"
      },
      "application/vnd.dvb.service": {
        source: "iana",
        extensions: ["svc"]
      },
      "application/vnd.dxr": {
        source: "iana"
      },
      "application/vnd.dynageo": {
        source: "iana",
        extensions: ["geo"]
      },
      "application/vnd.dzr": {
        source: "iana"
      },
      "application/vnd.easykaraoke.cdgdownload": {
        source: "iana"
      },
      "application/vnd.ecdis-update": {
        source: "iana"
      },
      "application/vnd.ecip.rlp": {
        source: "iana"
      },
      "application/vnd.eclipse.ditto+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.ecowin.chart": {
        source: "iana",
        extensions: ["mag"]
      },
      "application/vnd.ecowin.filerequest": {
        source: "iana"
      },
      "application/vnd.ecowin.fileupdate": {
        source: "iana"
      },
      "application/vnd.ecowin.series": {
        source: "iana"
      },
      "application/vnd.ecowin.seriesrequest": {
        source: "iana"
      },
      "application/vnd.ecowin.seriesupdate": {
        source: "iana"
      },
      "application/vnd.efi.img": {
        source: "iana"
      },
      "application/vnd.efi.iso": {
        source: "iana"
      },
      "application/vnd.emclient.accessrequest+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.enliven": {
        source: "iana",
        extensions: ["nml"]
      },
      "application/vnd.enphase.envoy": {
        source: "iana"
      },
      "application/vnd.eprints.data+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.epson.esf": {
        source: "iana",
        extensions: ["esf"]
      },
      "application/vnd.epson.msf": {
        source: "iana",
        extensions: ["msf"]
      },
      "application/vnd.epson.quickanime": {
        source: "iana",
        extensions: ["qam"]
      },
      "application/vnd.epson.salt": {
        source: "iana",
        extensions: ["slt"]
      },
      "application/vnd.epson.ssf": {
        source: "iana",
        extensions: ["ssf"]
      },
      "application/vnd.ericsson.quickcall": {
        source: "iana"
      },
      "application/vnd.espass-espass+zip": {
        source: "iana",
        compressible: false
      },
      "application/vnd.eszigno3+xml": {
        source: "iana",
        compressible: true,
        extensions: ["es3", "et3"]
      },
      "application/vnd.etsi.aoc+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.asic-e+zip": {
        source: "iana",
        compressible: false
      },
      "application/vnd.etsi.asic-s+zip": {
        source: "iana",
        compressible: false
      },
      "application/vnd.etsi.cug+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.iptvcommand+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.iptvdiscovery+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.iptvprofile+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.iptvsad-bc+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.iptvsad-cod+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.iptvsad-npvr+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.iptvservice+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.iptvsync+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.iptvueprofile+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.mcid+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.mheg5": {
        source: "iana"
      },
      "application/vnd.etsi.overload-control-policy-dataset+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.pstn+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.sci+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.simservs+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.timestamp-token": {
        source: "iana"
      },
      "application/vnd.etsi.tsl+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.etsi.tsl.der": {
        source: "iana"
      },
      "application/vnd.eu.kasparian.car+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.eudora.data": {
        source: "iana"
      },
      "application/vnd.evolv.ecig.profile": {
        source: "iana"
      },
      "application/vnd.evolv.ecig.settings": {
        source: "iana"
      },
      "application/vnd.evolv.ecig.theme": {
        source: "iana"
      },
      "application/vnd.exstream-empower+zip": {
        source: "iana",
        compressible: false
      },
      "application/vnd.exstream-package": {
        source: "iana"
      },
      "application/vnd.ezpix-album": {
        source: "iana",
        extensions: ["ez2"]
      },
      "application/vnd.ezpix-package": {
        source: "iana",
        extensions: ["ez3"]
      },
      "application/vnd.f-secure.mobile": {
        source: "iana"
      },
      "application/vnd.familysearch.gedcom+zip": {
        source: "iana",
        compressible: false
      },
      "application/vnd.fastcopy-disk-image": {
        source: "iana"
      },
      "application/vnd.fdf": {
        source: "iana",
        extensions: ["fdf"]
      },
      "application/vnd.fdsn.mseed": {
        source: "iana",
        extensions: ["mseed"]
      },
      "application/vnd.fdsn.seed": {
        source: "iana",
        extensions: ["seed", "dataless"]
      },
      "application/vnd.ffsns": {
        source: "iana"
      },
      "application/vnd.ficlab.flb+zip": {
        source: "iana",
        compressible: false
      },
      "application/vnd.filmit.zfc": {
        source: "iana"
      },
      "application/vnd.fints": {
        source: "iana"
      },
      "application/vnd.firemonkeys.cloudcell": {
        source: "iana"
      },
      "application/vnd.flographit": {
        source: "iana",
        extensions: ["gph"]
      },
      "application/vnd.fluxtime.clip": {
        source: "iana",
        extensions: ["ftc"]
      },
      "application/vnd.font-fontforge-sfd": {
        source: "iana"
      },
      "application/vnd.framemaker": {
        source: "iana",
        extensions: ["fm", "frame", "maker", "book"]
      },
      "application/vnd.frogans.fnc": {
        source: "iana",
        extensions: ["fnc"]
      },
      "application/vnd.frogans.ltf": {
        source: "iana",
        extensions: ["ltf"]
      },
      "application/vnd.fsc.weblaunch": {
        source: "iana",
        extensions: ["fsc"]
      },
      "application/vnd.fujifilm.fb.docuworks": {
        source: "iana"
      },
      "application/vnd.fujifilm.fb.docuworks.binder": {
        source: "iana"
      },
      "application/vnd.fujifilm.fb.docuworks.container": {
        source: "iana"
      },
      "application/vnd.fujifilm.fb.jfi+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.fujitsu.oasys": {
        source: "iana",
        extensions: ["oas"]
      },
      "application/vnd.fujitsu.oasys2": {
        source: "iana",
        extensions: ["oa2"]
      },
      "application/vnd.fujitsu.oasys3": {
        source: "iana",
        extensions: ["oa3"]
      },
      "application/vnd.fujitsu.oasysgp": {
        source: "iana",
        extensions: ["fg5"]
      },
      "application/vnd.fujitsu.oasysprs": {
        source: "iana",
        extensions: ["bh2"]
      },
      "application/vnd.fujixerox.art-ex": {
        source: "iana"
      },
      "application/vnd.fujixerox.art4": {
        source: "iana"
      },
      "application/vnd.fujixerox.ddd": {
        source: "iana",
        extensions: ["ddd"]
      },
      "application/vnd.fujixerox.docuworks": {
        source: "iana",
        extensions: ["xdw"]
      },
      "application/vnd.fujixerox.docuworks.binder": {
        source: "iana",
        extensions: ["xbd"]
      },
      "application/vnd.fujixerox.docuworks.container": {
        source: "iana"
      },
      "application/vnd.fujixerox.hbpl": {
        source: "iana"
      },
      "application/vnd.fut-misnet": {
        source: "iana"
      },
      "application/vnd.futoin+cbor": {
        source: "iana"
      },
      "application/vnd.futoin+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.fuzzysheet": {
        source: "iana",
        extensions: ["fzs"]
      },
      "application/vnd.genomatix.tuxedo": {
        source: "iana",
        extensions: ["txd"]
      },
      "application/vnd.gentics.grd+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.geo+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.geocube+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.geogebra.file": {
        source: "iana",
        extensions: ["ggb"]
      },
      "application/vnd.geogebra.slides": {
        source: "iana"
      },
      "application/vnd.geogebra.tool": {
        source: "iana",
        extensions: ["ggt"]
      },
      "application/vnd.geometry-explorer": {
        source: "iana",
        extensions: ["gex", "gre"]
      },
      "application/vnd.geonext": {
        source: "iana",
        extensions: ["gxt"]
      },
      "application/vnd.geoplan": {
        source: "iana",
        extensions: ["g2w"]
      },
      "application/vnd.geospace": {
        source: "iana",
        extensions: ["g3w"]
      },
      "application/vnd.gerber": {
        source: "iana"
      },
      "application/vnd.globalplatform.card-content-mgt": {
        source: "iana"
      },
      "application/vnd.globalplatform.card-content-mgt-response": {
        source: "iana"
      },
      "application/vnd.gmx": {
        source: "iana",
        extensions: ["gmx"]
      },
      "application/vnd.google-apps.document": {
        compressible: false,
        extensions: ["gdoc"]
      },
      "application/vnd.google-apps.presentation": {
        compressible: false,
        extensions: ["gslides"]
      },
      "application/vnd.google-apps.spreadsheet": {
        compressible: false,
        extensions: ["gsheet"]
      },
      "application/vnd.google-earth.kml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["kml"]
      },
      "application/vnd.google-earth.kmz": {
        source: "iana",
        compressible: false,
        extensions: ["kmz"]
      },
      "application/vnd.gov.sk.e-form+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.gov.sk.e-form+zip": {
        source: "iana",
        compressible: false
      },
      "application/vnd.gov.sk.xmldatacontainer+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.grafeq": {
        source: "iana",
        extensions: ["gqf", "gqs"]
      },
      "application/vnd.gridmp": {
        source: "iana"
      },
      "application/vnd.groove-account": {
        source: "iana",
        extensions: ["gac"]
      },
      "application/vnd.groove-help": {
        source: "iana",
        extensions: ["ghf"]
      },
      "application/vnd.groove-identity-message": {
        source: "iana",
        extensions: ["gim"]
      },
      "application/vnd.groove-injector": {
        source: "iana",
        extensions: ["grv"]
      },
      "application/vnd.groove-tool-message": {
        source: "iana",
        extensions: ["gtm"]
      },
      "application/vnd.groove-tool-template": {
        source: "iana",
        extensions: ["tpl"]
      },
      "application/vnd.groove-vcard": {
        source: "iana",
        extensions: ["vcg"]
      },
      "application/vnd.hal+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.hal+xml": {
        source: "iana",
        compressible: true,
        extensions: ["hal"]
      },
      "application/vnd.handheld-entertainment+xml": {
        source: "iana",
        compressible: true,
        extensions: ["zmm"]
      },
      "application/vnd.hbci": {
        source: "iana",
        extensions: ["hbci"]
      },
      "application/vnd.hc+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.hcl-bireports": {
        source: "iana"
      },
      "application/vnd.hdt": {
        source: "iana"
      },
      "application/vnd.heroku+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.hhe.lesson-player": {
        source: "iana",
        extensions: ["les"]
      },
      "application/vnd.hl7cda+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/vnd.hl7v2+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/vnd.hp-hpgl": {
        source: "iana",
        extensions: ["hpgl"]
      },
      "application/vnd.hp-hpid": {
        source: "iana",
        extensions: ["hpid"]
      },
      "application/vnd.hp-hps": {
        source: "iana",
        extensions: ["hps"]
      },
      "application/vnd.hp-jlyt": {
        source: "iana",
        extensions: ["jlt"]
      },
      "application/vnd.hp-pcl": {
        source: "iana",
        extensions: ["pcl"]
      },
      "application/vnd.hp-pclxl": {
        source: "iana",
        extensions: ["pclxl"]
      },
      "application/vnd.httphone": {
        source: "iana"
      },
      "application/vnd.hydrostatix.sof-data": {
        source: "iana",
        extensions: ["sfd-hdstx"]
      },
      "application/vnd.hyper+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.hyper-item+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.hyperdrive+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.hzn-3d-crossword": {
        source: "iana"
      },
      "application/vnd.ibm.afplinedata": {
        source: "iana"
      },
      "application/vnd.ibm.electronic-media": {
        source: "iana"
      },
      "application/vnd.ibm.minipay": {
        source: "iana",
        extensions: ["mpy"]
      },
      "application/vnd.ibm.modcap": {
        source: "iana",
        extensions: ["afp", "listafp", "list3820"]
      },
      "application/vnd.ibm.rights-management": {
        source: "iana",
        extensions: ["irm"]
      },
      "application/vnd.ibm.secure-container": {
        source: "iana",
        extensions: ["sc"]
      },
      "application/vnd.iccprofile": {
        source: "iana",
        extensions: ["icc", "icm"]
      },
      "application/vnd.ieee.1905": {
        source: "iana"
      },
      "application/vnd.igloader": {
        source: "iana",
        extensions: ["igl"]
      },
      "application/vnd.imagemeter.folder+zip": {
        source: "iana",
        compressible: false
      },
      "application/vnd.imagemeter.image+zip": {
        source: "iana",
        compressible: false
      },
      "application/vnd.immervision-ivp": {
        source: "iana",
        extensions: ["ivp"]
      },
      "application/vnd.immervision-ivu": {
        source: "iana",
        extensions: ["ivu"]
      },
      "application/vnd.ims.imsccv1p1": {
        source: "iana"
      },
      "application/vnd.ims.imsccv1p2": {
        source: "iana"
      },
      "application/vnd.ims.imsccv1p3": {
        source: "iana"
      },
      "application/vnd.ims.lis.v2.result+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.ims.lti.v2.toolconsumerprofile+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.ims.lti.v2.toolproxy+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.ims.lti.v2.toolproxy.id+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.ims.lti.v2.toolsettings+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.ims.lti.v2.toolsettings.simple+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.informedcontrol.rms+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.informix-visionary": {
        source: "iana"
      },
      "application/vnd.infotech.project": {
        source: "iana"
      },
      "application/vnd.infotech.project+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.innopath.wamp.notification": {
        source: "iana"
      },
      "application/vnd.insors.igm": {
        source: "iana",
        extensions: ["igm"]
      },
      "application/vnd.intercon.formnet": {
        source: "iana",
        extensions: ["xpw", "xpx"]
      },
      "application/vnd.intergeo": {
        source: "iana",
        extensions: ["i2g"]
      },
      "application/vnd.intertrust.digibox": {
        source: "iana"
      },
      "application/vnd.intertrust.nncp": {
        source: "iana"
      },
      "application/vnd.intu.qbo": {
        source: "iana",
        extensions: ["qbo"]
      },
      "application/vnd.intu.qfx": {
        source: "iana",
        extensions: ["qfx"]
      },
      "application/vnd.iptc.g2.catalogitem+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.iptc.g2.conceptitem+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.iptc.g2.knowledgeitem+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.iptc.g2.newsitem+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.iptc.g2.newsmessage+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.iptc.g2.packageitem+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.iptc.g2.planningitem+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.ipunplugged.rcprofile": {
        source: "iana",
        extensions: ["rcprofile"]
      },
      "application/vnd.irepository.package+xml": {
        source: "iana",
        compressible: true,
        extensions: ["irp"]
      },
      "application/vnd.is-xpr": {
        source: "iana",
        extensions: ["xpr"]
      },
      "application/vnd.isac.fcs": {
        source: "iana",
        extensions: ["fcs"]
      },
      "application/vnd.iso11783-10+zip": {
        source: "iana",
        compressible: false
      },
      "application/vnd.jam": {
        source: "iana",
        extensions: ["jam"]
      },
      "application/vnd.japannet-directory-service": {
        source: "iana"
      },
      "application/vnd.japannet-jpnstore-wakeup": {
        source: "iana"
      },
      "application/vnd.japannet-payment-wakeup": {
        source: "iana"
      },
      "application/vnd.japannet-registration": {
        source: "iana"
      },
      "application/vnd.japannet-registration-wakeup": {
        source: "iana"
      },
      "application/vnd.japannet-setstore-wakeup": {
        source: "iana"
      },
      "application/vnd.japannet-verification": {
        source: "iana"
      },
      "application/vnd.japannet-verification-wakeup": {
        source: "iana"
      },
      "application/vnd.jcp.javame.midlet-rms": {
        source: "iana",
        extensions: ["rms"]
      },
      "application/vnd.jisp": {
        source: "iana",
        extensions: ["jisp"]
      },
      "application/vnd.joost.joda-archive": {
        source: "iana",
        extensions: ["joda"]
      },
      "application/vnd.jsk.isdn-ngn": {
        source: "iana"
      },
      "application/vnd.kahootz": {
        source: "iana",
        extensions: ["ktz", "ktr"]
      },
      "application/vnd.kde.karbon": {
        source: "iana",
        extensions: ["karbon"]
      },
      "application/vnd.kde.kchart": {
        source: "iana",
        extensions: ["chrt"]
      },
      "application/vnd.kde.kformula": {
        source: "iana",
        extensions: ["kfo"]
      },
      "application/vnd.kde.kivio": {
        source: "iana",
        extensions: ["flw"]
      },
      "application/vnd.kde.kontour": {
        source: "iana",
        extensions: ["kon"]
      },
      "application/vnd.kde.kpresenter": {
        source: "iana",
        extensions: ["kpr", "kpt"]
      },
      "application/vnd.kde.kspread": {
        source: "iana",
        extensions: ["ksp"]
      },
      "application/vnd.kde.kword": {
        source: "iana",
        extensions: ["kwd", "kwt"]
      },
      "application/vnd.kenameaapp": {
        source: "iana",
        extensions: ["htke"]
      },
      "application/vnd.kidspiration": {
        source: "iana",
        extensions: ["kia"]
      },
      "application/vnd.kinar": {
        source: "iana",
        extensions: ["kne", "knp"]
      },
      "application/vnd.koan": {
        source: "iana",
        extensions: ["skp", "skd", "skt", "skm"]
      },
      "application/vnd.kodak-descriptor": {
        source: "iana",
        extensions: ["sse"]
      },
      "application/vnd.las": {
        source: "iana"
      },
      "application/vnd.las.las+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.las.las+xml": {
        source: "iana",
        compressible: true,
        extensions: ["lasxml"]
      },
      "application/vnd.laszip": {
        source: "iana"
      },
      "application/vnd.leap+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.liberty-request+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.llamagraphics.life-balance.desktop": {
        source: "iana",
        extensions: ["lbd"]
      },
      "application/vnd.llamagraphics.life-balance.exchange+xml": {
        source: "iana",
        compressible: true,
        extensions: ["lbe"]
      },
      "application/vnd.logipipe.circuit+zip": {
        source: "iana",
        compressible: false
      },
      "application/vnd.loom": {
        source: "iana"
      },
      "application/vnd.lotus-1-2-3": {
        source: "iana",
        extensions: ["123"]
      },
      "application/vnd.lotus-approach": {
        source: "iana",
        extensions: ["apr"]
      },
      "application/vnd.lotus-freelance": {
        source: "iana",
        extensions: ["pre"]
      },
      "application/vnd.lotus-notes": {
        source: "iana",
        extensions: ["nsf"]
      },
      "application/vnd.lotus-organizer": {
        source: "iana",
        extensions: ["org"]
      },
      "application/vnd.lotus-screencam": {
        source: "iana",
        extensions: ["scm"]
      },
      "application/vnd.lotus-wordpro": {
        source: "iana",
        extensions: ["lwp"]
      },
      "application/vnd.macports.portpkg": {
        source: "iana",
        extensions: ["portpkg"]
      },
      "application/vnd.mapbox-vector-tile": {
        source: "iana",
        extensions: ["mvt"]
      },
      "application/vnd.marlin.drm.actiontoken+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.marlin.drm.conftoken+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.marlin.drm.license+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.marlin.drm.mdcf": {
        source: "iana"
      },
      "application/vnd.mason+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.maxar.archive.3tz+zip": {
        source: "iana",
        compressible: false
      },
      "application/vnd.maxmind.maxmind-db": {
        source: "iana"
      },
      "application/vnd.mcd": {
        source: "iana",
        extensions: ["mcd"]
      },
      "application/vnd.medcalcdata": {
        source: "iana",
        extensions: ["mc1"]
      },
      "application/vnd.mediastation.cdkey": {
        source: "iana",
        extensions: ["cdkey"]
      },
      "application/vnd.meridian-slingshot": {
        source: "iana"
      },
      "application/vnd.mfer": {
        source: "iana",
        extensions: ["mwf"]
      },
      "application/vnd.mfmp": {
        source: "iana",
        extensions: ["mfm"]
      },
      "application/vnd.micro+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.micrografx.flo": {
        source: "iana",
        extensions: ["flo"]
      },
      "application/vnd.micrografx.igx": {
        source: "iana",
        extensions: ["igx"]
      },
      "application/vnd.microsoft.portable-executable": {
        source: "iana"
      },
      "application/vnd.microsoft.windows.thumbnail-cache": {
        source: "iana"
      },
      "application/vnd.miele+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.mif": {
        source: "iana",
        extensions: ["mif"]
      },
      "application/vnd.minisoft-hp3000-save": {
        source: "iana"
      },
      "application/vnd.mitsubishi.misty-guard.trustweb": {
        source: "iana"
      },
      "application/vnd.mobius.daf": {
        source: "iana",
        extensions: ["daf"]
      },
      "application/vnd.mobius.dis": {
        source: "iana",
        extensions: ["dis"]
      },
      "application/vnd.mobius.mbk": {
        source: "iana",
        extensions: ["mbk"]
      },
      "application/vnd.mobius.mqy": {
        source: "iana",
        extensions: ["mqy"]
      },
      "application/vnd.mobius.msl": {
        source: "iana",
        extensions: ["msl"]
      },
      "application/vnd.mobius.plc": {
        source: "iana",
        extensions: ["plc"]
      },
      "application/vnd.mobius.txf": {
        source: "iana",
        extensions: ["txf"]
      },
      "application/vnd.mophun.application": {
        source: "iana",
        extensions: ["mpn"]
      },
      "application/vnd.mophun.certificate": {
        source: "iana",
        extensions: ["mpc"]
      },
      "application/vnd.motorola.flexsuite": {
        source: "iana"
      },
      "application/vnd.motorola.flexsuite.adsi": {
        source: "iana"
      },
      "application/vnd.motorola.flexsuite.fis": {
        source: "iana"
      },
      "application/vnd.motorola.flexsuite.gotap": {
        source: "iana"
      },
      "application/vnd.motorola.flexsuite.kmr": {
        source: "iana"
      },
      "application/vnd.motorola.flexsuite.ttc": {
        source: "iana"
      },
      "application/vnd.motorola.flexsuite.wem": {
        source: "iana"
      },
      "application/vnd.motorola.iprm": {
        source: "iana"
      },
      "application/vnd.mozilla.xul+xml": {
        source: "iana",
        compressible: true,
        extensions: ["xul"]
      },
      "application/vnd.ms-3mfdocument": {
        source: "iana"
      },
      "application/vnd.ms-artgalry": {
        source: "iana",
        extensions: ["cil"]
      },
      "application/vnd.ms-asf": {
        source: "iana"
      },
      "application/vnd.ms-cab-compressed": {
        source: "iana",
        extensions: ["cab"]
      },
      "application/vnd.ms-color.iccprofile": {
        source: "apache"
      },
      "application/vnd.ms-excel": {
        source: "iana",
        compressible: false,
        extensions: ["xls", "xlm", "xla", "xlc", "xlt", "xlw"]
      },
      "application/vnd.ms-excel.addin.macroenabled.12": {
        source: "iana",
        extensions: ["xlam"]
      },
      "application/vnd.ms-excel.sheet.binary.macroenabled.12": {
        source: "iana",
        extensions: ["xlsb"]
      },
      "application/vnd.ms-excel.sheet.macroenabled.12": {
        source: "iana",
        extensions: ["xlsm"]
      },
      "application/vnd.ms-excel.template.macroenabled.12": {
        source: "iana",
        extensions: ["xltm"]
      },
      "application/vnd.ms-fontobject": {
        source: "iana",
        compressible: true,
        extensions: ["eot"]
      },
      "application/vnd.ms-htmlhelp": {
        source: "iana",
        extensions: ["chm"]
      },
      "application/vnd.ms-ims": {
        source: "iana",
        extensions: ["ims"]
      },
      "application/vnd.ms-lrm": {
        source: "iana",
        extensions: ["lrm"]
      },
      "application/vnd.ms-office.activex+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.ms-officetheme": {
        source: "iana",
        extensions: ["thmx"]
      },
      "application/vnd.ms-opentype": {
        source: "apache",
        compressible: true
      },
      "application/vnd.ms-outlook": {
        compressible: false,
        extensions: ["msg"]
      },
      "application/vnd.ms-package.obfuscated-opentype": {
        source: "apache"
      },
      "application/vnd.ms-pki.seccat": {
        source: "apache",
        extensions: ["cat"]
      },
      "application/vnd.ms-pki.stl": {
        source: "apache",
        extensions: ["stl"]
      },
      "application/vnd.ms-playready.initiator+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.ms-powerpoint": {
        source: "iana",
        compressible: false,
        extensions: ["ppt", "pps", "pot"]
      },
      "application/vnd.ms-powerpoint.addin.macroenabled.12": {
        source: "iana",
        extensions: ["ppam"]
      },
      "application/vnd.ms-powerpoint.presentation.macroenabled.12": {
        source: "iana",
        extensions: ["pptm"]
      },
      "application/vnd.ms-powerpoint.slide.macroenabled.12": {
        source: "iana",
        extensions: ["sldm"]
      },
      "application/vnd.ms-powerpoint.slideshow.macroenabled.12": {
        source: "iana",
        extensions: ["ppsm"]
      },
      "application/vnd.ms-powerpoint.template.macroenabled.12": {
        source: "iana",
        extensions: ["potm"]
      },
      "application/vnd.ms-printdevicecapabilities+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.ms-printing.printticket+xml": {
        source: "apache",
        compressible: true
      },
      "application/vnd.ms-printschematicket+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.ms-project": {
        source: "iana",
        extensions: ["mpp", "mpt"]
      },
      "application/vnd.ms-tnef": {
        source: "iana"
      },
      "application/vnd.ms-windows.devicepairing": {
        source: "iana"
      },
      "application/vnd.ms-windows.nwprinting.oob": {
        source: "iana"
      },
      "application/vnd.ms-windows.printerpairing": {
        source: "iana"
      },
      "application/vnd.ms-windows.wsd.oob": {
        source: "iana"
      },
      "application/vnd.ms-wmdrm.lic-chlg-req": {
        source: "iana"
      },
      "application/vnd.ms-wmdrm.lic-resp": {
        source: "iana"
      },
      "application/vnd.ms-wmdrm.meter-chlg-req": {
        source: "iana"
      },
      "application/vnd.ms-wmdrm.meter-resp": {
        source: "iana"
      },
      "application/vnd.ms-word.document.macroenabled.12": {
        source: "iana",
        extensions: ["docm"]
      },
      "application/vnd.ms-word.template.macroenabled.12": {
        source: "iana",
        extensions: ["dotm"]
      },
      "application/vnd.ms-works": {
        source: "iana",
        extensions: ["wps", "wks", "wcm", "wdb"]
      },
      "application/vnd.ms-wpl": {
        source: "iana",
        extensions: ["wpl"]
      },
      "application/vnd.ms-xpsdocument": {
        source: "iana",
        compressible: false,
        extensions: ["xps"]
      },
      "application/vnd.msa-disk-image": {
        source: "iana"
      },
      "application/vnd.mseq": {
        source: "iana",
        extensions: ["mseq"]
      },
      "application/vnd.msign": {
        source: "iana"
      },
      "application/vnd.multiad.creator": {
        source: "iana"
      },
      "application/vnd.multiad.creator.cif": {
        source: "iana"
      },
      "application/vnd.music-niff": {
        source: "iana"
      },
      "application/vnd.musician": {
        source: "iana",
        extensions: ["mus"]
      },
      "application/vnd.muvee.style": {
        source: "iana",
        extensions: ["msty"]
      },
      "application/vnd.mynfc": {
        source: "iana",
        extensions: ["taglet"]
      },
      "application/vnd.nacamar.ybrid+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.ncd.control": {
        source: "iana"
      },
      "application/vnd.ncd.reference": {
        source: "iana"
      },
      "application/vnd.nearst.inv+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.nebumind.line": {
        source: "iana"
      },
      "application/vnd.nervana": {
        source: "iana"
      },
      "application/vnd.netfpx": {
        source: "iana"
      },
      "application/vnd.neurolanguage.nlu": {
        source: "iana",
        extensions: ["nlu"]
      },
      "application/vnd.nimn": {
        source: "iana"
      },
      "application/vnd.nintendo.nitro.rom": {
        source: "iana"
      },
      "application/vnd.nintendo.snes.rom": {
        source: "iana"
      },
      "application/vnd.nitf": {
        source: "iana",
        extensions: ["ntf", "nitf"]
      },
      "application/vnd.noblenet-directory": {
        source: "iana",
        extensions: ["nnd"]
      },
      "application/vnd.noblenet-sealer": {
        source: "iana",
        extensions: ["nns"]
      },
      "application/vnd.noblenet-web": {
        source: "iana",
        extensions: ["nnw"]
      },
      "application/vnd.nokia.catalogs": {
        source: "iana"
      },
      "application/vnd.nokia.conml+wbxml": {
        source: "iana"
      },
      "application/vnd.nokia.conml+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.nokia.iptv.config+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.nokia.isds-radio-presets": {
        source: "iana"
      },
      "application/vnd.nokia.landmark+wbxml": {
        source: "iana"
      },
      "application/vnd.nokia.landmark+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.nokia.landmarkcollection+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.nokia.n-gage.ac+xml": {
        source: "iana",
        compressible: true,
        extensions: ["ac"]
      },
      "application/vnd.nokia.n-gage.data": {
        source: "iana",
        extensions: ["ngdat"]
      },
      "application/vnd.nokia.n-gage.symbian.install": {
        source: "iana",
        extensions: ["n-gage"]
      },
      "application/vnd.nokia.ncd": {
        source: "iana"
      },
      "application/vnd.nokia.pcd+wbxml": {
        source: "iana"
      },
      "application/vnd.nokia.pcd+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.nokia.radio-preset": {
        source: "iana",
        extensions: ["rpst"]
      },
      "application/vnd.nokia.radio-presets": {
        source: "iana",
        extensions: ["rpss"]
      },
      "application/vnd.novadigm.edm": {
        source: "iana",
        extensions: ["edm"]
      },
      "application/vnd.novadigm.edx": {
        source: "iana",
        extensions: ["edx"]
      },
      "application/vnd.novadigm.ext": {
        source: "iana",
        extensions: ["ext"]
      },
      "application/vnd.ntt-local.content-share": {
        source: "iana"
      },
      "application/vnd.ntt-local.file-transfer": {
        source: "iana"
      },
      "application/vnd.ntt-local.ogw_remote-access": {
        source: "iana"
      },
      "application/vnd.ntt-local.sip-ta_remote": {
        source: "iana"
      },
      "application/vnd.ntt-local.sip-ta_tcp_stream": {
        source: "iana"
      },
      "application/vnd.oasis.opendocument.chart": {
        source: "iana",
        extensions: ["odc"]
      },
      "application/vnd.oasis.opendocument.chart-template": {
        source: "iana",
        extensions: ["otc"]
      },
      "application/vnd.oasis.opendocument.database": {
        source: "iana",
        extensions: ["odb"]
      },
      "application/vnd.oasis.opendocument.formula": {
        source: "iana",
        extensions: ["odf"]
      },
      "application/vnd.oasis.opendocument.formula-template": {
        source: "iana",
        extensions: ["odft"]
      },
      "application/vnd.oasis.opendocument.graphics": {
        source: "iana",
        compressible: false,
        extensions: ["odg"]
      },
      "application/vnd.oasis.opendocument.graphics-template": {
        source: "iana",
        extensions: ["otg"]
      },
      "application/vnd.oasis.opendocument.image": {
        source: "iana",
        extensions: ["odi"]
      },
      "application/vnd.oasis.opendocument.image-template": {
        source: "iana",
        extensions: ["oti"]
      },
      "application/vnd.oasis.opendocument.presentation": {
        source: "iana",
        compressible: false,
        extensions: ["odp"]
      },
      "application/vnd.oasis.opendocument.presentation-template": {
        source: "iana",
        extensions: ["otp"]
      },
      "application/vnd.oasis.opendocument.spreadsheet": {
        source: "iana",
        compressible: false,
        extensions: ["ods"]
      },
      "application/vnd.oasis.opendocument.spreadsheet-template": {
        source: "iana",
        extensions: ["ots"]
      },
      "application/vnd.oasis.opendocument.text": {
        source: "iana",
        compressible: false,
        extensions: ["odt"]
      },
      "application/vnd.oasis.opendocument.text-master": {
        source: "iana",
        extensions: ["odm"]
      },
      "application/vnd.oasis.opendocument.text-template": {
        source: "iana",
        extensions: ["ott"]
      },
      "application/vnd.oasis.opendocument.text-web": {
        source: "iana",
        extensions: ["oth"]
      },
      "application/vnd.obn": {
        source: "iana"
      },
      "application/vnd.ocf+cbor": {
        source: "iana"
      },
      "application/vnd.oci.image.manifest.v1+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oftn.l10n+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oipf.contentaccessdownload+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oipf.contentaccessstreaming+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oipf.cspg-hexbinary": {
        source: "iana"
      },
      "application/vnd.oipf.dae.svg+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oipf.dae.xhtml+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oipf.mippvcontrolmessage+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oipf.pae.gem": {
        source: "iana"
      },
      "application/vnd.oipf.spdiscovery+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oipf.spdlist+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oipf.ueprofile+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oipf.userprofile+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.olpc-sugar": {
        source: "iana",
        extensions: ["xo"]
      },
      "application/vnd.oma-scws-config": {
        source: "iana"
      },
      "application/vnd.oma-scws-http-request": {
        source: "iana"
      },
      "application/vnd.oma-scws-http-response": {
        source: "iana"
      },
      "application/vnd.oma.bcast.associated-procedure-parameter+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.bcast.drm-trigger+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.bcast.imd+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.bcast.ltkm": {
        source: "iana"
      },
      "application/vnd.oma.bcast.notification+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.bcast.provisioningtrigger": {
        source: "iana"
      },
      "application/vnd.oma.bcast.sgboot": {
        source: "iana"
      },
      "application/vnd.oma.bcast.sgdd+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.bcast.sgdu": {
        source: "iana"
      },
      "application/vnd.oma.bcast.simple-symbol-container": {
        source: "iana"
      },
      "application/vnd.oma.bcast.smartcard-trigger+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.bcast.sprov+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.bcast.stkm": {
        source: "iana"
      },
      "application/vnd.oma.cab-address-book+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.cab-feature-handler+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.cab-pcc+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.cab-subs-invite+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.cab-user-prefs+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.dcd": {
        source: "iana"
      },
      "application/vnd.oma.dcdc": {
        source: "iana"
      },
      "application/vnd.oma.dd2+xml": {
        source: "iana",
        compressible: true,
        extensions: ["dd2"]
      },
      "application/vnd.oma.drm.risd+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.group-usage-list+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.lwm2m+cbor": {
        source: "iana"
      },
      "application/vnd.oma.lwm2m+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.lwm2m+tlv": {
        source: "iana"
      },
      "application/vnd.oma.pal+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.poc.detailed-progress-report+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.poc.final-report+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.poc.groups+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.poc.invocation-descriptor+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.poc.optimized-progress-report+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.push": {
        source: "iana"
      },
      "application/vnd.oma.scidm.messages+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oma.xcap-directory+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.omads-email+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/vnd.omads-file+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/vnd.omads-folder+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/vnd.omaloc-supl-init": {
        source: "iana"
      },
      "application/vnd.onepager": {
        source: "iana"
      },
      "application/vnd.onepagertamp": {
        source: "iana"
      },
      "application/vnd.onepagertamx": {
        source: "iana"
      },
      "application/vnd.onepagertat": {
        source: "iana"
      },
      "application/vnd.onepagertatp": {
        source: "iana"
      },
      "application/vnd.onepagertatx": {
        source: "iana"
      },
      "application/vnd.openblox.game+xml": {
        source: "iana",
        compressible: true,
        extensions: ["obgx"]
      },
      "application/vnd.openblox.game-binary": {
        source: "iana"
      },
      "application/vnd.openeye.oeb": {
        source: "iana"
      },
      "application/vnd.openofficeorg.extension": {
        source: "apache",
        extensions: ["oxt"]
      },
      "application/vnd.openstreetmap.data+xml": {
        source: "iana",
        compressible: true,
        extensions: ["osm"]
      },
      "application/vnd.opentimestamps.ots": {
        source: "iana"
      },
      "application/vnd.openxmlformats-officedocument.custom-properties+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.drawing+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.extended-properties+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.presentationml.presentation": {
        source: "iana",
        compressible: false,
        extensions: ["pptx"]
      },
      "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.presentationml.slide": {
        source: "iana",
        extensions: ["sldx"]
      },
      "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.presentationml.slideshow": {
        source: "iana",
        extensions: ["ppsx"]
      },
      "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.presentationml.template": {
        source: "iana",
        extensions: ["potx"]
      },
      "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
        source: "iana",
        compressible: false,
        extensions: ["xlsx"]
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.template": {
        source: "iana",
        extensions: ["xltx"]
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.theme+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.themeoverride+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.vmldrawing": {
        source: "iana"
      },
      "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.wordprocessingml.document": {
        source: "iana",
        compressible: false,
        extensions: ["docx"]
      },
      "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.wordprocessingml.template": {
        source: "iana",
        extensions: ["dotx"]
      },
      "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-package.core-properties+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.openxmlformats-package.relationships+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oracle.resource+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.orange.indata": {
        source: "iana"
      },
      "application/vnd.osa.netdeploy": {
        source: "iana"
      },
      "application/vnd.osgeo.mapguide.package": {
        source: "iana",
        extensions: ["mgp"]
      },
      "application/vnd.osgi.bundle": {
        source: "iana"
      },
      "application/vnd.osgi.dp": {
        source: "iana",
        extensions: ["dp"]
      },
      "application/vnd.osgi.subsystem": {
        source: "iana",
        extensions: ["esa"]
      },
      "application/vnd.otps.ct-kip+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.oxli.countgraph": {
        source: "iana"
      },
      "application/vnd.pagerduty+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.palm": {
        source: "iana",
        extensions: ["pdb", "pqa", "oprc"]
      },
      "application/vnd.panoply": {
        source: "iana"
      },
      "application/vnd.paos.xml": {
        source: "iana"
      },
      "application/vnd.patentdive": {
        source: "iana"
      },
      "application/vnd.patientecommsdoc": {
        source: "iana"
      },
      "application/vnd.pawaafile": {
        source: "iana",
        extensions: ["paw"]
      },
      "application/vnd.pcos": {
        source: "iana"
      },
      "application/vnd.pg.format": {
        source: "iana",
        extensions: ["str"]
      },
      "application/vnd.pg.osasli": {
        source: "iana",
        extensions: ["ei6"]
      },
      "application/vnd.piaccess.application-licence": {
        source: "iana"
      },
      "application/vnd.picsel": {
        source: "iana",
        extensions: ["efif"]
      },
      "application/vnd.pmi.widget": {
        source: "iana",
        extensions: ["wg"]
      },
      "application/vnd.poc.group-advertisement+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.pocketlearn": {
        source: "iana",
        extensions: ["plf"]
      },
      "application/vnd.powerbuilder6": {
        source: "iana",
        extensions: ["pbd"]
      },
      "application/vnd.powerbuilder6-s": {
        source: "iana"
      },
      "application/vnd.powerbuilder7": {
        source: "iana"
      },
      "application/vnd.powerbuilder7-s": {
        source: "iana"
      },
      "application/vnd.powerbuilder75": {
        source: "iana"
      },
      "application/vnd.powerbuilder75-s": {
        source: "iana"
      },
      "application/vnd.preminet": {
        source: "iana"
      },
      "application/vnd.previewsystems.box": {
        source: "iana",
        extensions: ["box"]
      },
      "application/vnd.proteus.magazine": {
        source: "iana",
        extensions: ["mgz"]
      },
      "application/vnd.psfs": {
        source: "iana"
      },
      "application/vnd.publishare-delta-tree": {
        source: "iana",
        extensions: ["qps"]
      },
      "application/vnd.pvi.ptid1": {
        source: "iana",
        extensions: ["ptid"]
      },
      "application/vnd.pwg-multiplexed": {
        source: "iana"
      },
      "application/vnd.pwg-xhtml-print+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.qualcomm.brew-app-res": {
        source: "iana"
      },
      "application/vnd.quarantainenet": {
        source: "iana"
      },
      "application/vnd.quark.quarkxpress": {
        source: "iana",
        extensions: ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"]
      },
      "application/vnd.quobject-quoxdocument": {
        source: "iana"
      },
      "application/vnd.radisys.moml+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.radisys.msml+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.radisys.msml-audit+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.radisys.msml-audit-conf+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.radisys.msml-audit-conn+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.radisys.msml-audit-dialog+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.radisys.msml-audit-stream+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.radisys.msml-conf+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.radisys.msml-dialog+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.radisys.msml-dialog-base+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.radisys.msml-dialog-fax-detect+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.radisys.msml-dialog-group+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.radisys.msml-dialog-speech+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.radisys.msml-dialog-transform+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.rainstor.data": {
        source: "iana"
      },
      "application/vnd.rapid": {
        source: "iana"
      },
      "application/vnd.rar": {
        source: "iana",
        extensions: ["rar"]
      },
      "application/vnd.realvnc.bed": {
        source: "iana",
        extensions: ["bed"]
      },
      "application/vnd.recordare.musicxml": {
        source: "iana",
        extensions: ["mxl"]
      },
      "application/vnd.recordare.musicxml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["musicxml"]
      },
      "application/vnd.renlearn.rlprint": {
        source: "iana"
      },
      "application/vnd.resilient.logic": {
        source: "iana"
      },
      "application/vnd.restful+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.rig.cryptonote": {
        source: "iana",
        extensions: ["cryptonote"]
      },
      "application/vnd.rim.cod": {
        source: "apache",
        extensions: ["cod"]
      },
      "application/vnd.rn-realmedia": {
        source: "apache",
        extensions: ["rm"]
      },
      "application/vnd.rn-realmedia-vbr": {
        source: "apache",
        extensions: ["rmvb"]
      },
      "application/vnd.route66.link66+xml": {
        source: "iana",
        compressible: true,
        extensions: ["link66"]
      },
      "application/vnd.rs-274x": {
        source: "iana"
      },
      "application/vnd.ruckus.download": {
        source: "iana"
      },
      "application/vnd.s3sms": {
        source: "iana"
      },
      "application/vnd.sailingtracker.track": {
        source: "iana",
        extensions: ["st"]
      },
      "application/vnd.sar": {
        source: "iana"
      },
      "application/vnd.sbm.cid": {
        source: "iana"
      },
      "application/vnd.sbm.mid2": {
        source: "iana"
      },
      "application/vnd.scribus": {
        source: "iana"
      },
      "application/vnd.sealed.3df": {
        source: "iana"
      },
      "application/vnd.sealed.csf": {
        source: "iana"
      },
      "application/vnd.sealed.doc": {
        source: "iana"
      },
      "application/vnd.sealed.eml": {
        source: "iana"
      },
      "application/vnd.sealed.mht": {
        source: "iana"
      },
      "application/vnd.sealed.net": {
        source: "iana"
      },
      "application/vnd.sealed.ppt": {
        source: "iana"
      },
      "application/vnd.sealed.tiff": {
        source: "iana"
      },
      "application/vnd.sealed.xls": {
        source: "iana"
      },
      "application/vnd.sealedmedia.softseal.html": {
        source: "iana"
      },
      "application/vnd.sealedmedia.softseal.pdf": {
        source: "iana"
      },
      "application/vnd.seemail": {
        source: "iana",
        extensions: ["see"]
      },
      "application/vnd.seis+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.sema": {
        source: "iana",
        extensions: ["sema"]
      },
      "application/vnd.semd": {
        source: "iana",
        extensions: ["semd"]
      },
      "application/vnd.semf": {
        source: "iana",
        extensions: ["semf"]
      },
      "application/vnd.shade-save-file": {
        source: "iana"
      },
      "application/vnd.shana.informed.formdata": {
        source: "iana",
        extensions: ["ifm"]
      },
      "application/vnd.shana.informed.formtemplate": {
        source: "iana",
        extensions: ["itp"]
      },
      "application/vnd.shana.informed.interchange": {
        source: "iana",
        extensions: ["iif"]
      },
      "application/vnd.shana.informed.package": {
        source: "iana",
        extensions: ["ipk"]
      },
      "application/vnd.shootproof+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.shopkick+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.shp": {
        source: "iana"
      },
      "application/vnd.shx": {
        source: "iana"
      },
      "application/vnd.sigrok.session": {
        source: "iana"
      },
      "application/vnd.simtech-mindmapper": {
        source: "iana",
        extensions: ["twd", "twds"]
      },
      "application/vnd.siren+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.smaf": {
        source: "iana",
        extensions: ["mmf"]
      },
      "application/vnd.smart.notebook": {
        source: "iana"
      },
      "application/vnd.smart.teacher": {
        source: "iana",
        extensions: ["teacher"]
      },
      "application/vnd.snesdev-page-table": {
        source: "iana"
      },
      "application/vnd.software602.filler.form+xml": {
        source: "iana",
        compressible: true,
        extensions: ["fo"]
      },
      "application/vnd.software602.filler.form-xml-zip": {
        source: "iana"
      },
      "application/vnd.solent.sdkm+xml": {
        source: "iana",
        compressible: true,
        extensions: ["sdkm", "sdkd"]
      },
      "application/vnd.spotfire.dxp": {
        source: "iana",
        extensions: ["dxp"]
      },
      "application/vnd.spotfire.sfs": {
        source: "iana",
        extensions: ["sfs"]
      },
      "application/vnd.sqlite3": {
        source: "iana"
      },
      "application/vnd.sss-cod": {
        source: "iana"
      },
      "application/vnd.sss-dtf": {
        source: "iana"
      },
      "application/vnd.sss-ntf": {
        source: "iana"
      },
      "application/vnd.stardivision.calc": {
        source: "apache",
        extensions: ["sdc"]
      },
      "application/vnd.stardivision.draw": {
        source: "apache",
        extensions: ["sda"]
      },
      "application/vnd.stardivision.impress": {
        source: "apache",
        extensions: ["sdd"]
      },
      "application/vnd.stardivision.math": {
        source: "apache",
        extensions: ["smf"]
      },
      "application/vnd.stardivision.writer": {
        source: "apache",
        extensions: ["sdw", "vor"]
      },
      "application/vnd.stardivision.writer-global": {
        source: "apache",
        extensions: ["sgl"]
      },
      "application/vnd.stepmania.package": {
        source: "iana",
        extensions: ["smzip"]
      },
      "application/vnd.stepmania.stepchart": {
        source: "iana",
        extensions: ["sm"]
      },
      "application/vnd.street-stream": {
        source: "iana"
      },
      "application/vnd.sun.wadl+xml": {
        source: "iana",
        compressible: true,
        extensions: ["wadl"]
      },
      "application/vnd.sun.xml.calc": {
        source: "apache",
        extensions: ["sxc"]
      },
      "application/vnd.sun.xml.calc.template": {
        source: "apache",
        extensions: ["stc"]
      },
      "application/vnd.sun.xml.draw": {
        source: "apache",
        extensions: ["sxd"]
      },
      "application/vnd.sun.xml.draw.template": {
        source: "apache",
        extensions: ["std"]
      },
      "application/vnd.sun.xml.impress": {
        source: "apache",
        extensions: ["sxi"]
      },
      "application/vnd.sun.xml.impress.template": {
        source: "apache",
        extensions: ["sti"]
      },
      "application/vnd.sun.xml.math": {
        source: "apache",
        extensions: ["sxm"]
      },
      "application/vnd.sun.xml.writer": {
        source: "apache",
        extensions: ["sxw"]
      },
      "application/vnd.sun.xml.writer.global": {
        source: "apache",
        extensions: ["sxg"]
      },
      "application/vnd.sun.xml.writer.template": {
        source: "apache",
        extensions: ["stw"]
      },
      "application/vnd.sus-calendar": {
        source: "iana",
        extensions: ["sus", "susp"]
      },
      "application/vnd.svd": {
        source: "iana",
        extensions: ["svd"]
      },
      "application/vnd.swiftview-ics": {
        source: "iana"
      },
      "application/vnd.sycle+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.syft+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.symbian.install": {
        source: "apache",
        extensions: ["sis", "sisx"]
      },
      "application/vnd.syncml+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true,
        extensions: ["xsm"]
      },
      "application/vnd.syncml.dm+wbxml": {
        source: "iana",
        charset: "UTF-8",
        extensions: ["bdm"]
      },
      "application/vnd.syncml.dm+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true,
        extensions: ["xdm"]
      },
      "application/vnd.syncml.dm.notification": {
        source: "iana"
      },
      "application/vnd.syncml.dmddf+wbxml": {
        source: "iana"
      },
      "application/vnd.syncml.dmddf+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true,
        extensions: ["ddf"]
      },
      "application/vnd.syncml.dmtnds+wbxml": {
        source: "iana"
      },
      "application/vnd.syncml.dmtnds+xml": {
        source: "iana",
        charset: "UTF-8",
        compressible: true
      },
      "application/vnd.syncml.ds.notification": {
        source: "iana"
      },
      "application/vnd.tableschema+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.tao.intent-module-archive": {
        source: "iana",
        extensions: ["tao"]
      },
      "application/vnd.tcpdump.pcap": {
        source: "iana",
        extensions: ["pcap", "cap", "dmp"]
      },
      "application/vnd.think-cell.ppttc+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.tmd.mediaflex.api+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.tml": {
        source: "iana"
      },
      "application/vnd.tmobile-livetv": {
        source: "iana",
        extensions: ["tmo"]
      },
      "application/vnd.tri.onesource": {
        source: "iana"
      },
      "application/vnd.trid.tpt": {
        source: "iana",
        extensions: ["tpt"]
      },
      "application/vnd.triscape.mxs": {
        source: "iana",
        extensions: ["mxs"]
      },
      "application/vnd.trueapp": {
        source: "iana",
        extensions: ["tra"]
      },
      "application/vnd.truedoc": {
        source: "iana"
      },
      "application/vnd.ubisoft.webplayer": {
        source: "iana"
      },
      "application/vnd.ufdl": {
        source: "iana",
        extensions: ["ufd", "ufdl"]
      },
      "application/vnd.uiq.theme": {
        source: "iana",
        extensions: ["utz"]
      },
      "application/vnd.umajin": {
        source: "iana",
        extensions: ["umj"]
      },
      "application/vnd.unity": {
        source: "iana",
        extensions: ["unityweb"]
      },
      "application/vnd.uoml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["uoml"]
      },
      "application/vnd.uplanet.alert": {
        source: "iana"
      },
      "application/vnd.uplanet.alert-wbxml": {
        source: "iana"
      },
      "application/vnd.uplanet.bearer-choice": {
        source: "iana"
      },
      "application/vnd.uplanet.bearer-choice-wbxml": {
        source: "iana"
      },
      "application/vnd.uplanet.cacheop": {
        source: "iana"
      },
      "application/vnd.uplanet.cacheop-wbxml": {
        source: "iana"
      },
      "application/vnd.uplanet.channel": {
        source: "iana"
      },
      "application/vnd.uplanet.channel-wbxml": {
        source: "iana"
      },
      "application/vnd.uplanet.list": {
        source: "iana"
      },
      "application/vnd.uplanet.list-wbxml": {
        source: "iana"
      },
      "application/vnd.uplanet.listcmd": {
        source: "iana"
      },
      "application/vnd.uplanet.listcmd-wbxml": {
        source: "iana"
      },
      "application/vnd.uplanet.signal": {
        source: "iana"
      },
      "application/vnd.uri-map": {
        source: "iana"
      },
      "application/vnd.valve.source.material": {
        source: "iana"
      },
      "application/vnd.vcx": {
        source: "iana",
        extensions: ["vcx"]
      },
      "application/vnd.vd-study": {
        source: "iana"
      },
      "application/vnd.vectorworks": {
        source: "iana"
      },
      "application/vnd.vel+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.verimatrix.vcas": {
        source: "iana"
      },
      "application/vnd.veritone.aion+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.veryant.thin": {
        source: "iana"
      },
      "application/vnd.ves.encrypted": {
        source: "iana"
      },
      "application/vnd.vidsoft.vidconference": {
        source: "iana"
      },
      "application/vnd.visio": {
        source: "iana",
        extensions: ["vsd", "vst", "vss", "vsw"]
      },
      "application/vnd.visionary": {
        source: "iana",
        extensions: ["vis"]
      },
      "application/vnd.vividence.scriptfile": {
        source: "iana"
      },
      "application/vnd.vsf": {
        source: "iana",
        extensions: ["vsf"]
      },
      "application/vnd.wap.sic": {
        source: "iana"
      },
      "application/vnd.wap.slc": {
        source: "iana"
      },
      "application/vnd.wap.wbxml": {
        source: "iana",
        charset: "UTF-8",
        extensions: ["wbxml"]
      },
      "application/vnd.wap.wmlc": {
        source: "iana",
        extensions: ["wmlc"]
      },
      "application/vnd.wap.wmlscriptc": {
        source: "iana",
        extensions: ["wmlsc"]
      },
      "application/vnd.webturbo": {
        source: "iana",
        extensions: ["wtb"]
      },
      "application/vnd.wfa.dpp": {
        source: "iana"
      },
      "application/vnd.wfa.p2p": {
        source: "iana"
      },
      "application/vnd.wfa.wsc": {
        source: "iana"
      },
      "application/vnd.windows.devicepairing": {
        source: "iana"
      },
      "application/vnd.wmc": {
        source: "iana"
      },
      "application/vnd.wmf.bootstrap": {
        source: "iana"
      },
      "application/vnd.wolfram.mathematica": {
        source: "iana"
      },
      "application/vnd.wolfram.mathematica.package": {
        source: "iana"
      },
      "application/vnd.wolfram.player": {
        source: "iana",
        extensions: ["nbp"]
      },
      "application/vnd.wordperfect": {
        source: "iana",
        extensions: ["wpd"]
      },
      "application/vnd.wqd": {
        source: "iana",
        extensions: ["wqd"]
      },
      "application/vnd.wrq-hp3000-labelled": {
        source: "iana"
      },
      "application/vnd.wt.stf": {
        source: "iana",
        extensions: ["stf"]
      },
      "application/vnd.wv.csp+wbxml": {
        source: "iana"
      },
      "application/vnd.wv.csp+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.wv.ssp+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.xacml+json": {
        source: "iana",
        compressible: true
      },
      "application/vnd.xara": {
        source: "iana",
        extensions: ["xar"]
      },
      "application/vnd.xfdl": {
        source: "iana",
        extensions: ["xfdl"]
      },
      "application/vnd.xfdl.webform": {
        source: "iana"
      },
      "application/vnd.xmi+xml": {
        source: "iana",
        compressible: true
      },
      "application/vnd.xmpie.cpkg": {
        source: "iana"
      },
      "application/vnd.xmpie.dpkg": {
        source: "iana"
      },
      "application/vnd.xmpie.plan": {
        source: "iana"
      },
      "application/vnd.xmpie.ppkg": {
        source: "iana"
      },
      "application/vnd.xmpie.xlim": {
        source: "iana"
      },
      "application/vnd.yamaha.hv-dic": {
        source: "iana",
        extensions: ["hvd"]
      },
      "application/vnd.yamaha.hv-script": {
        source: "iana",
        extensions: ["hvs"]
      },
      "application/vnd.yamaha.hv-voice": {
        source: "iana",
        extensions: ["hvp"]
      },
      "application/vnd.yamaha.openscoreformat": {
        source: "iana",
        extensions: ["osf"]
      },
      "application/vnd.yamaha.openscoreformat.osfpvg+xml": {
        source: "iana",
        compressible: true,
        extensions: ["osfpvg"]
      },
      "application/vnd.yamaha.remote-setup": {
        source: "iana"
      },
      "application/vnd.yamaha.smaf-audio": {
        source: "iana",
        extensions: ["saf"]
      },
      "application/vnd.yamaha.smaf-phrase": {
        source: "iana",
        extensions: ["spf"]
      },
      "application/vnd.yamaha.through-ngn": {
        source: "iana"
      },
      "application/vnd.yamaha.tunnel-udpencap": {
        source: "iana"
      },
      "application/vnd.yaoweme": {
        source: "iana"
      },
      "application/vnd.yellowriver-custom-menu": {
        source: "iana",
        extensions: ["cmp"]
      },
      "application/vnd.youtube.yt": {
        source: "iana"
      },
      "application/vnd.zul": {
        source: "iana",
        extensions: ["zir", "zirz"]
      },
      "application/vnd.zzazz.deck+xml": {
        source: "iana",
        compressible: true,
        extensions: ["zaz"]
      },
      "application/voicexml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["vxml"]
      },
      "application/voucher-cms+json": {
        source: "iana",
        compressible: true
      },
      "application/vq-rtcpxr": {
        source: "iana"
      },
      "application/wasm": {
        source: "iana",
        compressible: true,
        extensions: ["wasm"]
      },
      "application/watcherinfo+xml": {
        source: "iana",
        compressible: true,
        extensions: ["wif"]
      },
      "application/webpush-options+json": {
        source: "iana",
        compressible: true
      },
      "application/whoispp-query": {
        source: "iana"
      },
      "application/whoispp-response": {
        source: "iana"
      },
      "application/widget": {
        source: "iana",
        extensions: ["wgt"]
      },
      "application/winhlp": {
        source: "apache",
        extensions: ["hlp"]
      },
      "application/wita": {
        source: "iana"
      },
      "application/wordperfect5.1": {
        source: "iana"
      },
      "application/wsdl+xml": {
        source: "iana",
        compressible: true,
        extensions: ["wsdl"]
      },
      "application/wspolicy+xml": {
        source: "iana",
        compressible: true,
        extensions: ["wspolicy"]
      },
      "application/x-7z-compressed": {
        source: "apache",
        compressible: false,
        extensions: ["7z"]
      },
      "application/x-abiword": {
        source: "apache",
        extensions: ["abw"]
      },
      "application/x-ace-compressed": {
        source: "apache",
        extensions: ["ace"]
      },
      "application/x-amf": {
        source: "apache"
      },
      "application/x-apple-diskimage": {
        source: "apache",
        extensions: ["dmg"]
      },
      "application/x-arj": {
        compressible: false,
        extensions: ["arj"]
      },
      "application/x-authorware-bin": {
        source: "apache",
        extensions: ["aab", "x32", "u32", "vox"]
      },
      "application/x-authorware-map": {
        source: "apache",
        extensions: ["aam"]
      },
      "application/x-authorware-seg": {
        source: "apache",
        extensions: ["aas"]
      },
      "application/x-bcpio": {
        source: "apache",
        extensions: ["bcpio"]
      },
      "application/x-bdoc": {
        compressible: false,
        extensions: ["bdoc"]
      },
      "application/x-bittorrent": {
        source: "apache",
        extensions: ["torrent"]
      },
      "application/x-blorb": {
        source: "apache",
        extensions: ["blb", "blorb"]
      },
      "application/x-bzip": {
        source: "apache",
        compressible: false,
        extensions: ["bz"]
      },
      "application/x-bzip2": {
        source: "apache",
        compressible: false,
        extensions: ["bz2", "boz"]
      },
      "application/x-cbr": {
        source: "apache",
        extensions: ["cbr", "cba", "cbt", "cbz", "cb7"]
      },
      "application/x-cdlink": {
        source: "apache",
        extensions: ["vcd"]
      },
      "application/x-cfs-compressed": {
        source: "apache",
        extensions: ["cfs"]
      },
      "application/x-chat": {
        source: "apache",
        extensions: ["chat"]
      },
      "application/x-chess-pgn": {
        source: "apache",
        extensions: ["pgn"]
      },
      "application/x-chrome-extension": {
        extensions: ["crx"]
      },
      "application/x-cocoa": {
        source: "nginx",
        extensions: ["cco"]
      },
      "application/x-compress": {
        source: "apache"
      },
      "application/x-conference": {
        source: "apache",
        extensions: ["nsc"]
      },
      "application/x-cpio": {
        source: "apache",
        extensions: ["cpio"]
      },
      "application/x-csh": {
        source: "apache",
        extensions: ["csh"]
      },
      "application/x-deb": {
        compressible: false
      },
      "application/x-debian-package": {
        source: "apache",
        extensions: ["deb", "udeb"]
      },
      "application/x-dgc-compressed": {
        source: "apache",
        extensions: ["dgc"]
      },
      "application/x-director": {
        source: "apache",
        extensions: ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"]
      },
      "application/x-doom": {
        source: "apache",
        extensions: ["wad"]
      },
      "application/x-dtbncx+xml": {
        source: "apache",
        compressible: true,
        extensions: ["ncx"]
      },
      "application/x-dtbook+xml": {
        source: "apache",
        compressible: true,
        extensions: ["dtb"]
      },
      "application/x-dtbresource+xml": {
        source: "apache",
        compressible: true,
        extensions: ["res"]
      },
      "application/x-dvi": {
        source: "apache",
        compressible: false,
        extensions: ["dvi"]
      },
      "application/x-envoy": {
        source: "apache",
        extensions: ["evy"]
      },
      "application/x-eva": {
        source: "apache",
        extensions: ["eva"]
      },
      "application/x-font-bdf": {
        source: "apache",
        extensions: ["bdf"]
      },
      "application/x-font-dos": {
        source: "apache"
      },
      "application/x-font-framemaker": {
        source: "apache"
      },
      "application/x-font-ghostscript": {
        source: "apache",
        extensions: ["gsf"]
      },
      "application/x-font-libgrx": {
        source: "apache"
      },
      "application/x-font-linux-psf": {
        source: "apache",
        extensions: ["psf"]
      },
      "application/x-font-pcf": {
        source: "apache",
        extensions: ["pcf"]
      },
      "application/x-font-snf": {
        source: "apache",
        extensions: ["snf"]
      },
      "application/x-font-speedo": {
        source: "apache"
      },
      "application/x-font-sunos-news": {
        source: "apache"
      },
      "application/x-font-type1": {
        source: "apache",
        extensions: ["pfa", "pfb", "pfm", "afm"]
      },
      "application/x-font-vfont": {
        source: "apache"
      },
      "application/x-freearc": {
        source: "apache",
        extensions: ["arc"]
      },
      "application/x-futuresplash": {
        source: "apache",
        extensions: ["spl"]
      },
      "application/x-gca-compressed": {
        source: "apache",
        extensions: ["gca"]
      },
      "application/x-glulx": {
        source: "apache",
        extensions: ["ulx"]
      },
      "application/x-gnumeric": {
        source: "apache",
        extensions: ["gnumeric"]
      },
      "application/x-gramps-xml": {
        source: "apache",
        extensions: ["gramps"]
      },
      "application/x-gtar": {
        source: "apache",
        extensions: ["gtar"]
      },
      "application/x-gzip": {
        source: "apache"
      },
      "application/x-hdf": {
        source: "apache",
        extensions: ["hdf"]
      },
      "application/x-httpd-php": {
        compressible: true,
        extensions: ["php"]
      },
      "application/x-install-instructions": {
        source: "apache",
        extensions: ["install"]
      },
      "application/x-iso9660-image": {
        source: "apache",
        extensions: ["iso"]
      },
      "application/x-iwork-keynote-sffkey": {
        extensions: ["key"]
      },
      "application/x-iwork-numbers-sffnumbers": {
        extensions: ["numbers"]
      },
      "application/x-iwork-pages-sffpages": {
        extensions: ["pages"]
      },
      "application/x-java-archive-diff": {
        source: "nginx",
        extensions: ["jardiff"]
      },
      "application/x-java-jnlp-file": {
        source: "apache",
        compressible: false,
        extensions: ["jnlp"]
      },
      "application/x-javascript": {
        compressible: true
      },
      "application/x-keepass2": {
        extensions: ["kdbx"]
      },
      "application/x-latex": {
        source: "apache",
        compressible: false,
        extensions: ["latex"]
      },
      "application/x-lua-bytecode": {
        extensions: ["luac"]
      },
      "application/x-lzh-compressed": {
        source: "apache",
        extensions: ["lzh", "lha"]
      },
      "application/x-makeself": {
        source: "nginx",
        extensions: ["run"]
      },
      "application/x-mie": {
        source: "apache",
        extensions: ["mie"]
      },
      "application/x-mobipocket-ebook": {
        source: "apache",
        extensions: ["prc", "mobi"]
      },
      "application/x-mpegurl": {
        compressible: false
      },
      "application/x-ms-application": {
        source: "apache",
        extensions: ["application"]
      },
      "application/x-ms-shortcut": {
        source: "apache",
        extensions: ["lnk"]
      },
      "application/x-ms-wmd": {
        source: "apache",
        extensions: ["wmd"]
      },
      "application/x-ms-wmz": {
        source: "apache",
        extensions: ["wmz"]
      },
      "application/x-ms-xbap": {
        source: "apache",
        extensions: ["xbap"]
      },
      "application/x-msaccess": {
        source: "apache",
        extensions: ["mdb"]
      },
      "application/x-msbinder": {
        source: "apache",
        extensions: ["obd"]
      },
      "application/x-mscardfile": {
        source: "apache",
        extensions: ["crd"]
      },
      "application/x-msclip": {
        source: "apache",
        extensions: ["clp"]
      },
      "application/x-msdos-program": {
        extensions: ["exe"]
      },
      "application/x-msdownload": {
        source: "apache",
        extensions: ["exe", "dll", "com", "bat", "msi"]
      },
      "application/x-msmediaview": {
        source: "apache",
        extensions: ["mvb", "m13", "m14"]
      },
      "application/x-msmetafile": {
        source: "apache",
        extensions: ["wmf", "wmz", "emf", "emz"]
      },
      "application/x-msmoney": {
        source: "apache",
        extensions: ["mny"]
      },
      "application/x-mspublisher": {
        source: "apache",
        extensions: ["pub"]
      },
      "application/x-msschedule": {
        source: "apache",
        extensions: ["scd"]
      },
      "application/x-msterminal": {
        source: "apache",
        extensions: ["trm"]
      },
      "application/x-mswrite": {
        source: "apache",
        extensions: ["wri"]
      },
      "application/x-netcdf": {
        source: "apache",
        extensions: ["nc", "cdf"]
      },
      "application/x-ns-proxy-autoconfig": {
        compressible: true,
        extensions: ["pac"]
      },
      "application/x-nzb": {
        source: "apache",
        extensions: ["nzb"]
      },
      "application/x-perl": {
        source: "nginx",
        extensions: ["pl", "pm"]
      },
      "application/x-pilot": {
        source: "nginx",
        extensions: ["prc", "pdb"]
      },
      "application/x-pkcs12": {
        source: "apache",
        compressible: false,
        extensions: ["p12", "pfx"]
      },
      "application/x-pkcs7-certificates": {
        source: "apache",
        extensions: ["p7b", "spc"]
      },
      "application/x-pkcs7-certreqresp": {
        source: "apache",
        extensions: ["p7r"]
      },
      "application/x-pki-message": {
        source: "iana"
      },
      "application/x-rar-compressed": {
        source: "apache",
        compressible: false,
        extensions: ["rar"]
      },
      "application/x-redhat-package-manager": {
        source: "nginx",
        extensions: ["rpm"]
      },
      "application/x-research-info-systems": {
        source: "apache",
        extensions: ["ris"]
      },
      "application/x-sea": {
        source: "nginx",
        extensions: ["sea"]
      },
      "application/x-sh": {
        source: "apache",
        compressible: true,
        extensions: ["sh"]
      },
      "application/x-shar": {
        source: "apache",
        extensions: ["shar"]
      },
      "application/x-shockwave-flash": {
        source: "apache",
        compressible: false,
        extensions: ["swf"]
      },
      "application/x-silverlight-app": {
        source: "apache",
        extensions: ["xap"]
      },
      "application/x-sql": {
        source: "apache",
        extensions: ["sql"]
      },
      "application/x-stuffit": {
        source: "apache",
        compressible: false,
        extensions: ["sit"]
      },
      "application/x-stuffitx": {
        source: "apache",
        extensions: ["sitx"]
      },
      "application/x-subrip": {
        source: "apache",
        extensions: ["srt"]
      },
      "application/x-sv4cpio": {
        source: "apache",
        extensions: ["sv4cpio"]
      },
      "application/x-sv4crc": {
        source: "apache",
        extensions: ["sv4crc"]
      },
      "application/x-t3vm-image": {
        source: "apache",
        extensions: ["t3"]
      },
      "application/x-tads": {
        source: "apache",
        extensions: ["gam"]
      },
      "application/x-tar": {
        source: "apache",
        compressible: true,
        extensions: ["tar"]
      },
      "application/x-tcl": {
        source: "apache",
        extensions: ["tcl", "tk"]
      },
      "application/x-tex": {
        source: "apache",
        extensions: ["tex"]
      },
      "application/x-tex-tfm": {
        source: "apache",
        extensions: ["tfm"]
      },
      "application/x-texinfo": {
        source: "apache",
        extensions: ["texinfo", "texi"]
      },
      "application/x-tgif": {
        source: "apache",
        extensions: ["obj"]
      },
      "application/x-ustar": {
        source: "apache",
        extensions: ["ustar"]
      },
      "application/x-virtualbox-hdd": {
        compressible: true,
        extensions: ["hdd"]
      },
      "application/x-virtualbox-ova": {
        compressible: true,
        extensions: ["ova"]
      },
      "application/x-virtualbox-ovf": {
        compressible: true,
        extensions: ["ovf"]
      },
      "application/x-virtualbox-vbox": {
        compressible: true,
        extensions: ["vbox"]
      },
      "application/x-virtualbox-vbox-extpack": {
        compressible: false,
        extensions: ["vbox-extpack"]
      },
      "application/x-virtualbox-vdi": {
        compressible: true,
        extensions: ["vdi"]
      },
      "application/x-virtualbox-vhd": {
        compressible: true,
        extensions: ["vhd"]
      },
      "application/x-virtualbox-vmdk": {
        compressible: true,
        extensions: ["vmdk"]
      },
      "application/x-wais-source": {
        source: "apache",
        extensions: ["src"]
      },
      "application/x-web-app-manifest+json": {
        compressible: true,
        extensions: ["webapp"]
      },
      "application/x-www-form-urlencoded": {
        source: "iana",
        compressible: true
      },
      "application/x-x509-ca-cert": {
        source: "iana",
        extensions: ["der", "crt", "pem"]
      },
      "application/x-x509-ca-ra-cert": {
        source: "iana"
      },
      "application/x-x509-next-ca-cert": {
        source: "iana"
      },
      "application/x-xfig": {
        source: "apache",
        extensions: ["fig"]
      },
      "application/x-xliff+xml": {
        source: "apache",
        compressible: true,
        extensions: ["xlf"]
      },
      "application/x-xpinstall": {
        source: "apache",
        compressible: false,
        extensions: ["xpi"]
      },
      "application/x-xz": {
        source: "apache",
        extensions: ["xz"]
      },
      "application/x-zmachine": {
        source: "apache",
        extensions: ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"]
      },
      "application/x400-bp": {
        source: "iana"
      },
      "application/xacml+xml": {
        source: "iana",
        compressible: true
      },
      "application/xaml+xml": {
        source: "apache",
        compressible: true,
        extensions: ["xaml"]
      },
      "application/xcap-att+xml": {
        source: "iana",
        compressible: true,
        extensions: ["xav"]
      },
      "application/xcap-caps+xml": {
        source: "iana",
        compressible: true,
        extensions: ["xca"]
      },
      "application/xcap-diff+xml": {
        source: "iana",
        compressible: true,
        extensions: ["xdf"]
      },
      "application/xcap-el+xml": {
        source: "iana",
        compressible: true,
        extensions: ["xel"]
      },
      "application/xcap-error+xml": {
        source: "iana",
        compressible: true
      },
      "application/xcap-ns+xml": {
        source: "iana",
        compressible: true,
        extensions: ["xns"]
      },
      "application/xcon-conference-info+xml": {
        source: "iana",
        compressible: true
      },
      "application/xcon-conference-info-diff+xml": {
        source: "iana",
        compressible: true
      },
      "application/xenc+xml": {
        source: "iana",
        compressible: true,
        extensions: ["xenc"]
      },
      "application/xhtml+xml": {
        source: "iana",
        compressible: true,
        extensions: ["xhtml", "xht"]
      },
      "application/xhtml-voice+xml": {
        source: "apache",
        compressible: true
      },
      "application/xliff+xml": {
        source: "iana",
        compressible: true,
        extensions: ["xlf"]
      },
      "application/xml": {
        source: "iana",
        compressible: true,
        extensions: ["xml", "xsl", "xsd", "rng"]
      },
      "application/xml-dtd": {
        source: "iana",
        compressible: true,
        extensions: ["dtd"]
      },
      "application/xml-external-parsed-entity": {
        source: "iana"
      },
      "application/xml-patch+xml": {
        source: "iana",
        compressible: true
      },
      "application/xmpp+xml": {
        source: "iana",
        compressible: true
      },
      "application/xop+xml": {
        source: "iana",
        compressible: true,
        extensions: ["xop"]
      },
      "application/xproc+xml": {
        source: "apache",
        compressible: true,
        extensions: ["xpl"]
      },
      "application/xslt+xml": {
        source: "iana",
        compressible: true,
        extensions: ["xsl", "xslt"]
      },
      "application/xspf+xml": {
        source: "apache",
        compressible: true,
        extensions: ["xspf"]
      },
      "application/xv+xml": {
        source: "iana",
        compressible: true,
        extensions: ["mxml", "xhvml", "xvml", "xvm"]
      },
      "application/yang": {
        source: "iana",
        extensions: ["yang"]
      },
      "application/yang-data+json": {
        source: "iana",
        compressible: true
      },
      "application/yang-data+xml": {
        source: "iana",
        compressible: true
      },
      "application/yang-patch+json": {
        source: "iana",
        compressible: true
      },
      "application/yang-patch+xml": {
        source: "iana",
        compressible: true
      },
      "application/yin+xml": {
        source: "iana",
        compressible: true,
        extensions: ["yin"]
      },
      "application/zip": {
        source: "iana",
        compressible: false,
        extensions: ["zip"]
      },
      "application/zlib": {
        source: "iana"
      },
      "application/zstd": {
        source: "iana"
      },
      "audio/1d-interleaved-parityfec": {
        source: "iana"
      },
      "audio/32kadpcm": {
        source: "iana"
      },
      "audio/3gpp": {
        source: "iana",
        compressible: false,
        extensions: ["3gpp"]
      },
      "audio/3gpp2": {
        source: "iana"
      },
      "audio/aac": {
        source: "iana"
      },
      "audio/ac3": {
        source: "iana"
      },
      "audio/adpcm": {
        source: "apache",
        extensions: ["adp"]
      },
      "audio/amr": {
        source: "iana",
        extensions: ["amr"]
      },
      "audio/amr-wb": {
        source: "iana"
      },
      "audio/amr-wb+": {
        source: "iana"
      },
      "audio/aptx": {
        source: "iana"
      },
      "audio/asc": {
        source: "iana"
      },
      "audio/atrac-advanced-lossless": {
        source: "iana"
      },
      "audio/atrac-x": {
        source: "iana"
      },
      "audio/atrac3": {
        source: "iana"
      },
      "audio/basic": {
        source: "iana",
        compressible: false,
        extensions: ["au", "snd"]
      },
      "audio/bv16": {
        source: "iana"
      },
      "audio/bv32": {
        source: "iana"
      },
      "audio/clearmode": {
        source: "iana"
      },
      "audio/cn": {
        source: "iana"
      },
      "audio/dat12": {
        source: "iana"
      },
      "audio/dls": {
        source: "iana"
      },
      "audio/dsr-es201108": {
        source: "iana"
      },
      "audio/dsr-es202050": {
        source: "iana"
      },
      "audio/dsr-es202211": {
        source: "iana"
      },
      "audio/dsr-es202212": {
        source: "iana"
      },
      "audio/dv": {
        source: "iana"
      },
      "audio/dvi4": {
        source: "iana"
      },
      "audio/eac3": {
        source: "iana"
      },
      "audio/encaprtp": {
        source: "iana"
      },
      "audio/evrc": {
        source: "iana"
      },
      "audio/evrc-qcp": {
        source: "iana"
      },
      "audio/evrc0": {
        source: "iana"
      },
      "audio/evrc1": {
        source: "iana"
      },
      "audio/evrcb": {
        source: "iana"
      },
      "audio/evrcb0": {
        source: "iana"
      },
      "audio/evrcb1": {
        source: "iana"
      },
      "audio/evrcnw": {
        source: "iana"
      },
      "audio/evrcnw0": {
        source: "iana"
      },
      "audio/evrcnw1": {
        source: "iana"
      },
      "audio/evrcwb": {
        source: "iana"
      },
      "audio/evrcwb0": {
        source: "iana"
      },
      "audio/evrcwb1": {
        source: "iana"
      },
      "audio/evs": {
        source: "iana"
      },
      "audio/flexfec": {
        source: "iana"
      },
      "audio/fwdred": {
        source: "iana"
      },
      "audio/g711-0": {
        source: "iana"
      },
      "audio/g719": {
        source: "iana"
      },
      "audio/g722": {
        source: "iana"
      },
      "audio/g7221": {
        source: "iana"
      },
      "audio/g723": {
        source: "iana"
      },
      "audio/g726-16": {
        source: "iana"
      },
      "audio/g726-24": {
        source: "iana"
      },
      "audio/g726-32": {
        source: "iana"
      },
      "audio/g726-40": {
        source: "iana"
      },
      "audio/g728": {
        source: "iana"
      },
      "audio/g729": {
        source: "iana"
      },
      "audio/g7291": {
        source: "iana"
      },
      "audio/g729d": {
        source: "iana"
      },
      "audio/g729e": {
        source: "iana"
      },
      "audio/gsm": {
        source: "iana"
      },
      "audio/gsm-efr": {
        source: "iana"
      },
      "audio/gsm-hr-08": {
        source: "iana"
      },
      "audio/ilbc": {
        source: "iana"
      },
      "audio/ip-mr_v2.5": {
        source: "iana"
      },
      "audio/isac": {
        source: "apache"
      },
      "audio/l16": {
        source: "iana"
      },
      "audio/l20": {
        source: "iana"
      },
      "audio/l24": {
        source: "iana",
        compressible: false
      },
      "audio/l8": {
        source: "iana"
      },
      "audio/lpc": {
        source: "iana"
      },
      "audio/melp": {
        source: "iana"
      },
      "audio/melp1200": {
        source: "iana"
      },
      "audio/melp2400": {
        source: "iana"
      },
      "audio/melp600": {
        source: "iana"
      },
      "audio/mhas": {
        source: "iana"
      },
      "audio/midi": {
        source: "apache",
        extensions: ["mid", "midi", "kar", "rmi"]
      },
      "audio/mobile-xmf": {
        source: "iana",
        extensions: ["mxmf"]
      },
      "audio/mp3": {
        compressible: false,
        extensions: ["mp3"]
      },
      "audio/mp4": {
        source: "iana",
        compressible: false,
        extensions: ["m4a", "mp4a"]
      },
      "audio/mp4a-latm": {
        source: "iana"
      },
      "audio/mpa": {
        source: "iana"
      },
      "audio/mpa-robust": {
        source: "iana"
      },
      "audio/mpeg": {
        source: "iana",
        compressible: false,
        extensions: ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"]
      },
      "audio/mpeg4-generic": {
        source: "iana"
      },
      "audio/musepack": {
        source: "apache"
      },
      "audio/ogg": {
        source: "iana",
        compressible: false,
        extensions: ["oga", "ogg", "spx", "opus"]
      },
      "audio/opus": {
        source: "iana"
      },
      "audio/parityfec": {
        source: "iana"
      },
      "audio/pcma": {
        source: "iana"
      },
      "audio/pcma-wb": {
        source: "iana"
      },
      "audio/pcmu": {
        source: "iana"
      },
      "audio/pcmu-wb": {
        source: "iana"
      },
      "audio/prs.sid": {
        source: "iana"
      },
      "audio/qcelp": {
        source: "iana"
      },
      "audio/raptorfec": {
        source: "iana"
      },
      "audio/red": {
        source: "iana"
      },
      "audio/rtp-enc-aescm128": {
        source: "iana"
      },
      "audio/rtp-midi": {
        source: "iana"
      },
      "audio/rtploopback": {
        source: "iana"
      },
      "audio/rtx": {
        source: "iana"
      },
      "audio/s3m": {
        source: "apache",
        extensions: ["s3m"]
      },
      "audio/scip": {
        source: "iana"
      },
      "audio/silk": {
        source: "apache",
        extensions: ["sil"]
      },
      "audio/smv": {
        source: "iana"
      },
      "audio/smv-qcp": {
        source: "iana"
      },
      "audio/smv0": {
        source: "iana"
      },
      "audio/sofa": {
        source: "iana"
      },
      "audio/sp-midi": {
        source: "iana"
      },
      "audio/speex": {
        source: "iana"
      },
      "audio/t140c": {
        source: "iana"
      },
      "audio/t38": {
        source: "iana"
      },
      "audio/telephone-event": {
        source: "iana"
      },
      "audio/tetra_acelp": {
        source: "iana"
      },
      "audio/tetra_acelp_bb": {
        source: "iana"
      },
      "audio/tone": {
        source: "iana"
      },
      "audio/tsvcis": {
        source: "iana"
      },
      "audio/uemclip": {
        source: "iana"
      },
      "audio/ulpfec": {
        source: "iana"
      },
      "audio/usac": {
        source: "iana"
      },
      "audio/vdvi": {
        source: "iana"
      },
      "audio/vmr-wb": {
        source: "iana"
      },
      "audio/vnd.3gpp.iufp": {
        source: "iana"
      },
      "audio/vnd.4sb": {
        source: "iana"
      },
      "audio/vnd.audiokoz": {
        source: "iana"
      },
      "audio/vnd.celp": {
        source: "iana"
      },
      "audio/vnd.cisco.nse": {
        source: "iana"
      },
      "audio/vnd.cmles.radio-events": {
        source: "iana"
      },
      "audio/vnd.cns.anp1": {
        source: "iana"
      },
      "audio/vnd.cns.inf1": {
        source: "iana"
      },
      "audio/vnd.dece.audio": {
        source: "iana",
        extensions: ["uva", "uvva"]
      },
      "audio/vnd.digital-winds": {
        source: "iana",
        extensions: ["eol"]
      },
      "audio/vnd.dlna.adts": {
        source: "iana"
      },
      "audio/vnd.dolby.heaac.1": {
        source: "iana"
      },
      "audio/vnd.dolby.heaac.2": {
        source: "iana"
      },
      "audio/vnd.dolby.mlp": {
        source: "iana"
      },
      "audio/vnd.dolby.mps": {
        source: "iana"
      },
      "audio/vnd.dolby.pl2": {
        source: "iana"
      },
      "audio/vnd.dolby.pl2x": {
        source: "iana"
      },
      "audio/vnd.dolby.pl2z": {
        source: "iana"
      },
      "audio/vnd.dolby.pulse.1": {
        source: "iana"
      },
      "audio/vnd.dra": {
        source: "iana",
        extensions: ["dra"]
      },
      "audio/vnd.dts": {
        source: "iana",
        extensions: ["dts"]
      },
      "audio/vnd.dts.hd": {
        source: "iana",
        extensions: ["dtshd"]
      },
      "audio/vnd.dts.uhd": {
        source: "iana"
      },
      "audio/vnd.dvb.file": {
        source: "iana"
      },
      "audio/vnd.everad.plj": {
        source: "iana"
      },
      "audio/vnd.hns.audio": {
        source: "iana"
      },
      "audio/vnd.lucent.voice": {
        source: "iana",
        extensions: ["lvp"]
      },
      "audio/vnd.ms-playready.media.pya": {
        source: "iana",
        extensions: ["pya"]
      },
      "audio/vnd.nokia.mobile-xmf": {
        source: "iana"
      },
      "audio/vnd.nortel.vbk": {
        source: "iana"
      },
      "audio/vnd.nuera.ecelp4800": {
        source: "iana",
        extensions: ["ecelp4800"]
      },
      "audio/vnd.nuera.ecelp7470": {
        source: "iana",
        extensions: ["ecelp7470"]
      },
      "audio/vnd.nuera.ecelp9600": {
        source: "iana",
        extensions: ["ecelp9600"]
      },
      "audio/vnd.octel.sbc": {
        source: "iana"
      },
      "audio/vnd.presonus.multitrack": {
        source: "iana"
      },
      "audio/vnd.qcelp": {
        source: "iana"
      },
      "audio/vnd.rhetorex.32kadpcm": {
        source: "iana"
      },
      "audio/vnd.rip": {
        source: "iana",
        extensions: ["rip"]
      },
      "audio/vnd.rn-realaudio": {
        compressible: false
      },
      "audio/vnd.sealedmedia.softseal.mpeg": {
        source: "iana"
      },
      "audio/vnd.vmx.cvsd": {
        source: "iana"
      },
      "audio/vnd.wave": {
        compressible: false
      },
      "audio/vorbis": {
        source: "iana",
        compressible: false
      },
      "audio/vorbis-config": {
        source: "iana"
      },
      "audio/wav": {
        compressible: false,
        extensions: ["wav"]
      },
      "audio/wave": {
        compressible: false,
        extensions: ["wav"]
      },
      "audio/webm": {
        source: "apache",
        compressible: false,
        extensions: ["weba"]
      },
      "audio/x-aac": {
        source: "apache",
        compressible: false,
        extensions: ["aac"]
      },
      "audio/x-aiff": {
        source: "apache",
        extensions: ["aif", "aiff", "aifc"]
      },
      "audio/x-caf": {
        source: "apache",
        compressible: false,
        extensions: ["caf"]
      },
      "audio/x-flac": {
        source: "apache",
        extensions: ["flac"]
      },
      "audio/x-m4a": {
        source: "nginx",
        extensions: ["m4a"]
      },
      "audio/x-matroska": {
        source: "apache",
        extensions: ["mka"]
      },
      "audio/x-mpegurl": {
        source: "apache",
        extensions: ["m3u"]
      },
      "audio/x-ms-wax": {
        source: "apache",
        extensions: ["wax"]
      },
      "audio/x-ms-wma": {
        source: "apache",
        extensions: ["wma"]
      },
      "audio/x-pn-realaudio": {
        source: "apache",
        extensions: ["ram", "ra"]
      },
      "audio/x-pn-realaudio-plugin": {
        source: "apache",
        extensions: ["rmp"]
      },
      "audio/x-realaudio": {
        source: "nginx",
        extensions: ["ra"]
      },
      "audio/x-tta": {
        source: "apache"
      },
      "audio/x-wav": {
        source: "apache",
        extensions: ["wav"]
      },
      "audio/xm": {
        source: "apache",
        extensions: ["xm"]
      },
      "chemical/x-cdx": {
        source: "apache",
        extensions: ["cdx"]
      },
      "chemical/x-cif": {
        source: "apache",
        extensions: ["cif"]
      },
      "chemical/x-cmdf": {
        source: "apache",
        extensions: ["cmdf"]
      },
      "chemical/x-cml": {
        source: "apache",
        extensions: ["cml"]
      },
      "chemical/x-csml": {
        source: "apache",
        extensions: ["csml"]
      },
      "chemical/x-pdb": {
        source: "apache"
      },
      "chemical/x-xyz": {
        source: "apache",
        extensions: ["xyz"]
      },
      "font/collection": {
        source: "iana",
        extensions: ["ttc"]
      },
      "font/otf": {
        source: "iana",
        compressible: true,
        extensions: ["otf"]
      },
      "font/sfnt": {
        source: "iana"
      },
      "font/ttf": {
        source: "iana",
        compressible: true,
        extensions: ["ttf"]
      },
      "font/woff": {
        source: "iana",
        extensions: ["woff"]
      },
      "font/woff2": {
        source: "iana",
        extensions: ["woff2"]
      },
      "image/aces": {
        source: "iana",
        extensions: ["exr"]
      },
      "image/apng": {
        compressible: false,
        extensions: ["apng"]
      },
      "image/avci": {
        source: "iana",
        extensions: ["avci"]
      },
      "image/avcs": {
        source: "iana",
        extensions: ["avcs"]
      },
      "image/avif": {
        source: "iana",
        compressible: false,
        extensions: ["avif"]
      },
      "image/bmp": {
        source: "iana",
        compressible: true,
        extensions: ["bmp"]
      },
      "image/cgm": {
        source: "iana",
        extensions: ["cgm"]
      },
      "image/dicom-rle": {
        source: "iana",
        extensions: ["drle"]
      },
      "image/emf": {
        source: "iana",
        extensions: ["emf"]
      },
      "image/fits": {
        source: "iana",
        extensions: ["fits"]
      },
      "image/g3fax": {
        source: "iana",
        extensions: ["g3"]
      },
      "image/gif": {
        source: "iana",
        compressible: false,
        extensions: ["gif"]
      },
      "image/heic": {
        source: "iana",
        extensions: ["heic"]
      },
      "image/heic-sequence": {
        source: "iana",
        extensions: ["heics"]
      },
      "image/heif": {
        source: "iana",
        extensions: ["heif"]
      },
      "image/heif-sequence": {
        source: "iana",
        extensions: ["heifs"]
      },
      "image/hej2k": {
        source: "iana",
        extensions: ["hej2"]
      },
      "image/hsj2": {
        source: "iana",
        extensions: ["hsj2"]
      },
      "image/ief": {
        source: "iana",
        extensions: ["ief"]
      },
      "image/jls": {
        source: "iana",
        extensions: ["jls"]
      },
      "image/jp2": {
        source: "iana",
        compressible: false,
        extensions: ["jp2", "jpg2"]
      },
      "image/jpeg": {
        source: "iana",
        compressible: false,
        extensions: ["jpeg", "jpg", "jpe"]
      },
      "image/jph": {
        source: "iana",
        extensions: ["jph"]
      },
      "image/jphc": {
        source: "iana",
        extensions: ["jhc"]
      },
      "image/jpm": {
        source: "iana",
        compressible: false,
        extensions: ["jpm"]
      },
      "image/jpx": {
        source: "iana",
        compressible: false,
        extensions: ["jpx", "jpf"]
      },
      "image/jxr": {
        source: "iana",
        extensions: ["jxr"]
      },
      "image/jxra": {
        source: "iana",
        extensions: ["jxra"]
      },
      "image/jxrs": {
        source: "iana",
        extensions: ["jxrs"]
      },
      "image/jxs": {
        source: "iana",
        extensions: ["jxs"]
      },
      "image/jxsc": {
        source: "iana",
        extensions: ["jxsc"]
      },
      "image/jxsi": {
        source: "iana",
        extensions: ["jxsi"]
      },
      "image/jxss": {
        source: "iana",
        extensions: ["jxss"]
      },
      "image/ktx": {
        source: "iana",
        extensions: ["ktx"]
      },
      "image/ktx2": {
        source: "iana",
        extensions: ["ktx2"]
      },
      "image/naplps": {
        source: "iana"
      },
      "image/pjpeg": {
        compressible: false
      },
      "image/png": {
        source: "iana",
        compressible: false,
        extensions: ["png"]
      },
      "image/prs.btif": {
        source: "iana",
        extensions: ["btif"]
      },
      "image/prs.pti": {
        source: "iana",
        extensions: ["pti"]
      },
      "image/pwg-raster": {
        source: "iana"
      },
      "image/sgi": {
        source: "apache",
        extensions: ["sgi"]
      },
      "image/svg+xml": {
        source: "iana",
        compressible: true,
        extensions: ["svg", "svgz"]
      },
      "image/t38": {
        source: "iana",
        extensions: ["t38"]
      },
      "image/tiff": {
        source: "iana",
        compressible: false,
        extensions: ["tif", "tiff"]
      },
      "image/tiff-fx": {
        source: "iana",
        extensions: ["tfx"]
      },
      "image/vnd.adobe.photoshop": {
        source: "iana",
        compressible: true,
        extensions: ["psd"]
      },
      "image/vnd.airzip.accelerator.azv": {
        source: "iana",
        extensions: ["azv"]
      },
      "image/vnd.cns.inf2": {
        source: "iana"
      },
      "image/vnd.dece.graphic": {
        source: "iana",
        extensions: ["uvi", "uvvi", "uvg", "uvvg"]
      },
      "image/vnd.djvu": {
        source: "iana",
        extensions: ["djvu", "djv"]
      },
      "image/vnd.dvb.subtitle": {
        source: "iana",
        extensions: ["sub"]
      },
      "image/vnd.dwg": {
        source: "iana",
        extensions: ["dwg"]
      },
      "image/vnd.dxf": {
        source: "iana",
        extensions: ["dxf"]
      },
      "image/vnd.fastbidsheet": {
        source: "iana",
        extensions: ["fbs"]
      },
      "image/vnd.fpx": {
        source: "iana",
        extensions: ["fpx"]
      },
      "image/vnd.fst": {
        source: "iana",
        extensions: ["fst"]
      },
      "image/vnd.fujixerox.edmics-mmr": {
        source: "iana",
        extensions: ["mmr"]
      },
      "image/vnd.fujixerox.edmics-rlc": {
        source: "iana",
        extensions: ["rlc"]
      },
      "image/vnd.globalgraphics.pgb": {
        source: "iana"
      },
      "image/vnd.microsoft.icon": {
        source: "iana",
        compressible: true,
        extensions: ["ico"]
      },
      "image/vnd.mix": {
        source: "iana"
      },
      "image/vnd.mozilla.apng": {
        source: "iana"
      },
      "image/vnd.ms-dds": {
        compressible: true,
        extensions: ["dds"]
      },
      "image/vnd.ms-modi": {
        source: "iana",
        extensions: ["mdi"]
      },
      "image/vnd.ms-photo": {
        source: "apache",
        extensions: ["wdp"]
      },
      "image/vnd.net-fpx": {
        source: "iana",
        extensions: ["npx"]
      },
      "image/vnd.pco.b16": {
        source: "iana",
        extensions: ["b16"]
      },
      "image/vnd.radiance": {
        source: "iana"
      },
      "image/vnd.sealed.png": {
        source: "iana"
      },
      "image/vnd.sealedmedia.softseal.gif": {
        source: "iana"
      },
      "image/vnd.sealedmedia.softseal.jpg": {
        source: "iana"
      },
      "image/vnd.svf": {
        source: "iana"
      },
      "image/vnd.tencent.tap": {
        source: "iana",
        extensions: ["tap"]
      },
      "image/vnd.valve.source.texture": {
        source: "iana",
        extensions: ["vtf"]
      },
      "image/vnd.wap.wbmp": {
        source: "iana",
        extensions: ["wbmp"]
      },
      "image/vnd.xiff": {
        source: "iana",
        extensions: ["xif"]
      },
      "image/vnd.zbrush.pcx": {
        source: "iana",
        extensions: ["pcx"]
      },
      "image/webp": {
        source: "apache",
        extensions: ["webp"]
      },
      "image/wmf": {
        source: "iana",
        extensions: ["wmf"]
      },
      "image/x-3ds": {
        source: "apache",
        extensions: ["3ds"]
      },
      "image/x-cmu-raster": {
        source: "apache",
        extensions: ["ras"]
      },
      "image/x-cmx": {
        source: "apache",
        extensions: ["cmx"]
      },
      "image/x-freehand": {
        source: "apache",
        extensions: ["fh", "fhc", "fh4", "fh5", "fh7"]
      },
      "image/x-icon": {
        source: "apache",
        compressible: true,
        extensions: ["ico"]
      },
      "image/x-jng": {
        source: "nginx",
        extensions: ["jng"]
      },
      "image/x-mrsid-image": {
        source: "apache",
        extensions: ["sid"]
      },
      "image/x-ms-bmp": {
        source: "nginx",
        compressible: true,
        extensions: ["bmp"]
      },
      "image/x-pcx": {
        source: "apache",
        extensions: ["pcx"]
      },
      "image/x-pict": {
        source: "apache",
        extensions: ["pic", "pct"]
      },
      "image/x-portable-anymap": {
        source: "apache",
        extensions: ["pnm"]
      },
      "image/x-portable-bitmap": {
        source: "apache",
        extensions: ["pbm"]
      },
      "image/x-portable-graymap": {
        source: "apache",
        extensions: ["pgm"]
      },
      "image/x-portable-pixmap": {
        source: "apache",
        extensions: ["ppm"]
      },
      "image/x-rgb": {
        source: "apache",
        extensions: ["rgb"]
      },
      "image/x-tga": {
        source: "apache",
        extensions: ["tga"]
      },
      "image/x-xbitmap": {
        source: "apache",
        extensions: ["xbm"]
      },
      "image/x-xcf": {
        compressible: false
      },
      "image/x-xpixmap": {
        source: "apache",
        extensions: ["xpm"]
      },
      "image/x-xwindowdump": {
        source: "apache",
        extensions: ["xwd"]
      },
      "message/cpim": {
        source: "iana"
      },
      "message/delivery-status": {
        source: "iana"
      },
      "message/disposition-notification": {
        source: "iana",
        extensions: [
          "disposition-notification"
        ]
      },
      "message/external-body": {
        source: "iana"
      },
      "message/feedback-report": {
        source: "iana"
      },
      "message/global": {
        source: "iana",
        extensions: ["u8msg"]
      },
      "message/global-delivery-status": {
        source: "iana",
        extensions: ["u8dsn"]
      },
      "message/global-disposition-notification": {
        source: "iana",
        extensions: ["u8mdn"]
      },
      "message/global-headers": {
        source: "iana",
        extensions: ["u8hdr"]
      },
      "message/http": {
        source: "iana",
        compressible: false
      },
      "message/imdn+xml": {
        source: "iana",
        compressible: true
      },
      "message/news": {
        source: "iana"
      },
      "message/partial": {
        source: "iana",
        compressible: false
      },
      "message/rfc822": {
        source: "iana",
        compressible: true,
        extensions: ["eml", "mime"]
      },
      "message/s-http": {
        source: "iana"
      },
      "message/sip": {
        source: "iana"
      },
      "message/sipfrag": {
        source: "iana"
      },
      "message/tracking-status": {
        source: "iana"
      },
      "message/vnd.si.simp": {
        source: "iana"
      },
      "message/vnd.wfa.wsc": {
        source: "iana",
        extensions: ["wsc"]
      },
      "model/3mf": {
        source: "iana",
        extensions: ["3mf"]
      },
      "model/e57": {
        source: "iana"
      },
      "model/gltf+json": {
        source: "iana",
        compressible: true,
        extensions: ["gltf"]
      },
      "model/gltf-binary": {
        source: "iana",
        compressible: true,
        extensions: ["glb"]
      },
      "model/iges": {
        source: "iana",
        compressible: false,
        extensions: ["igs", "iges"]
      },
      "model/mesh": {
        source: "iana",
        compressible: false,
        extensions: ["msh", "mesh", "silo"]
      },
      "model/mtl": {
        source: "iana",
        extensions: ["mtl"]
      },
      "model/obj": {
        source: "iana",
        extensions: ["obj"]
      },
      "model/step": {
        source: "iana"
      },
      "model/step+xml": {
        source: "iana",
        compressible: true,
        extensions: ["stpx"]
      },
      "model/step+zip": {
        source: "iana",
        compressible: false,
        extensions: ["stpz"]
      },
      "model/step-xml+zip": {
        source: "iana",
        compressible: false,
        extensions: ["stpxz"]
      },
      "model/stl": {
        source: "iana",
        extensions: ["stl"]
      },
      "model/vnd.collada+xml": {
        source: "iana",
        compressible: true,
        extensions: ["dae"]
      },
      "model/vnd.dwf": {
        source: "iana",
        extensions: ["dwf"]
      },
      "model/vnd.flatland.3dml": {
        source: "iana"
      },
      "model/vnd.gdl": {
        source: "iana",
        extensions: ["gdl"]
      },
      "model/vnd.gs-gdl": {
        source: "apache"
      },
      "model/vnd.gs.gdl": {
        source: "iana"
      },
      "model/vnd.gtw": {
        source: "iana",
        extensions: ["gtw"]
      },
      "model/vnd.moml+xml": {
        source: "iana",
        compressible: true
      },
      "model/vnd.mts": {
        source: "iana",
        extensions: ["mts"]
      },
      "model/vnd.opengex": {
        source: "iana",
        extensions: ["ogex"]
      },
      "model/vnd.parasolid.transmit.binary": {
        source: "iana",
        extensions: ["x_b"]
      },
      "model/vnd.parasolid.transmit.text": {
        source: "iana",
        extensions: ["x_t"]
      },
      "model/vnd.pytha.pyox": {
        source: "iana"
      },
      "model/vnd.rosette.annotated-data-model": {
        source: "iana"
      },
      "model/vnd.sap.vds": {
        source: "iana",
        extensions: ["vds"]
      },
      "model/vnd.usdz+zip": {
        source: "iana",
        compressible: false,
        extensions: ["usdz"]
      },
      "model/vnd.valve.source.compiled-map": {
        source: "iana",
        extensions: ["bsp"]
      },
      "model/vnd.vtu": {
        source: "iana",
        extensions: ["vtu"]
      },
      "model/vrml": {
        source: "iana",
        compressible: false,
        extensions: ["wrl", "vrml"]
      },
      "model/x3d+binary": {
        source: "apache",
        compressible: false,
        extensions: ["x3db", "x3dbz"]
      },
      "model/x3d+fastinfoset": {
        source: "iana",
        extensions: ["x3db"]
      },
      "model/x3d+vrml": {
        source: "apache",
        compressible: false,
        extensions: ["x3dv", "x3dvz"]
      },
      "model/x3d+xml": {
        source: "iana",
        compressible: true,
        extensions: ["x3d", "x3dz"]
      },
      "model/x3d-vrml": {
        source: "iana",
        extensions: ["x3dv"]
      },
      "multipart/alternative": {
        source: "iana",
        compressible: false
      },
      "multipart/appledouble": {
        source: "iana"
      },
      "multipart/byteranges": {
        source: "iana"
      },
      "multipart/digest": {
        source: "iana"
      },
      "multipart/encrypted": {
        source: "iana",
        compressible: false
      },
      "multipart/form-data": {
        source: "iana",
        compressible: false
      },
      "multipart/header-set": {
        source: "iana"
      },
      "multipart/mixed": {
        source: "iana"
      },
      "multipart/multilingual": {
        source: "iana"
      },
      "multipart/parallel": {
        source: "iana"
      },
      "multipart/related": {
        source: "iana",
        compressible: false
      },
      "multipart/report": {
        source: "iana"
      },
      "multipart/signed": {
        source: "iana",
        compressible: false
      },
      "multipart/vnd.bint.med-plus": {
        source: "iana"
      },
      "multipart/voice-message": {
        source: "iana"
      },
      "multipart/x-mixed-replace": {
        source: "iana"
      },
      "text/1d-interleaved-parityfec": {
        source: "iana"
      },
      "text/cache-manifest": {
        source: "iana",
        compressible: true,
        extensions: ["appcache", "manifest"]
      },
      "text/calendar": {
        source: "iana",
        extensions: ["ics", "ifb"]
      },
      "text/calender": {
        compressible: true
      },
      "text/cmd": {
        compressible: true
      },
      "text/coffeescript": {
        extensions: ["coffee", "litcoffee"]
      },
      "text/cql": {
        source: "iana"
      },
      "text/cql-expression": {
        source: "iana"
      },
      "text/cql-identifier": {
        source: "iana"
      },
      "text/css": {
        source: "iana",
        charset: "UTF-8",
        compressible: true,
        extensions: ["css"]
      },
      "text/csv": {
        source: "iana",
        compressible: true,
        extensions: ["csv"]
      },
      "text/csv-schema": {
        source: "iana"
      },
      "text/directory": {
        source: "iana"
      },
      "text/dns": {
        source: "iana"
      },
      "text/ecmascript": {
        source: "iana"
      },
      "text/encaprtp": {
        source: "iana"
      },
      "text/enriched": {
        source: "iana"
      },
      "text/fhirpath": {
        source: "iana"
      },
      "text/flexfec": {
        source: "iana"
      },
      "text/fwdred": {
        source: "iana"
      },
      "text/gff3": {
        source: "iana"
      },
      "text/grammar-ref-list": {
        source: "iana"
      },
      "text/html": {
        source: "iana",
        compressible: true,
        extensions: ["html", "htm", "shtml"]
      },
      "text/jade": {
        extensions: ["jade"]
      },
      "text/javascript": {
        source: "iana",
        compressible: true
      },
      "text/jcr-cnd": {
        source: "iana"
      },
      "text/jsx": {
        compressible: true,
        extensions: ["jsx"]
      },
      "text/less": {
        compressible: true,
        extensions: ["less"]
      },
      "text/markdown": {
        source: "iana",
        compressible: true,
        extensions: ["markdown", "md"]
      },
      "text/mathml": {
        source: "nginx",
        extensions: ["mml"]
      },
      "text/mdx": {
        compressible: true,
        extensions: ["mdx"]
      },
      "text/mizar": {
        source: "iana"
      },
      "text/n3": {
        source: "iana",
        charset: "UTF-8",
        compressible: true,
        extensions: ["n3"]
      },
      "text/parameters": {
        source: "iana",
        charset: "UTF-8"
      },
      "text/parityfec": {
        source: "iana"
      },
      "text/plain": {
        source: "iana",
        compressible: true,
        extensions: ["txt", "text", "conf", "def", "list", "log", "in", "ini"]
      },
      "text/provenance-notation": {
        source: "iana",
        charset: "UTF-8"
      },
      "text/prs.fallenstein.rst": {
        source: "iana"
      },
      "text/prs.lines.tag": {
        source: "iana",
        extensions: ["dsc"]
      },
      "text/prs.prop.logic": {
        source: "iana"
      },
      "text/raptorfec": {
        source: "iana"
      },
      "text/red": {
        source: "iana"
      },
      "text/rfc822-headers": {
        source: "iana"
      },
      "text/richtext": {
        source: "iana",
        compressible: true,
        extensions: ["rtx"]
      },
      "text/rtf": {
        source: "iana",
        compressible: true,
        extensions: ["rtf"]
      },
      "text/rtp-enc-aescm128": {
        source: "iana"
      },
      "text/rtploopback": {
        source: "iana"
      },
      "text/rtx": {
        source: "iana"
      },
      "text/sgml": {
        source: "iana",
        extensions: ["sgml", "sgm"]
      },
      "text/shaclc": {
        source: "iana"
      },
      "text/shex": {
        source: "iana",
        extensions: ["shex"]
      },
      "text/slim": {
        extensions: ["slim", "slm"]
      },
      "text/spdx": {
        source: "iana",
        extensions: ["spdx"]
      },
      "text/strings": {
        source: "iana"
      },
      "text/stylus": {
        extensions: ["stylus", "styl"]
      },
      "text/t140": {
        source: "iana"
      },
      "text/tab-separated-values": {
        source: "iana",
        compressible: true,
        extensions: ["tsv"]
      },
      "text/troff": {
        source: "iana",
        extensions: ["t", "tr", "roff", "man", "me", "ms"]
      },
      "text/turtle": {
        source: "iana",
        charset: "UTF-8",
        extensions: ["ttl"]
      },
      "text/ulpfec": {
        source: "iana"
      },
      "text/uri-list": {
        source: "iana",
        compressible: true,
        extensions: ["uri", "uris", "urls"]
      },
      "text/vcard": {
        source: "iana",
        compressible: true,
        extensions: ["vcard"]
      },
      "text/vnd.a": {
        source: "iana"
      },
      "text/vnd.abc": {
        source: "iana"
      },
      "text/vnd.ascii-art": {
        source: "iana"
      },
      "text/vnd.curl": {
        source: "iana",
        extensions: ["curl"]
      },
      "text/vnd.curl.dcurl": {
        source: "apache",
        extensions: ["dcurl"]
      },
      "text/vnd.curl.mcurl": {
        source: "apache",
        extensions: ["mcurl"]
      },
      "text/vnd.curl.scurl": {
        source: "apache",
        extensions: ["scurl"]
      },
      "text/vnd.debian.copyright": {
        source: "iana",
        charset: "UTF-8"
      },
      "text/vnd.dmclientscript": {
        source: "iana"
      },
      "text/vnd.dvb.subtitle": {
        source: "iana",
        extensions: ["sub"]
      },
      "text/vnd.esmertec.theme-descriptor": {
        source: "iana",
        charset: "UTF-8"
      },
      "text/vnd.familysearch.gedcom": {
        source: "iana",
        extensions: ["ged"]
      },
      "text/vnd.ficlab.flt": {
        source: "iana"
      },
      "text/vnd.fly": {
        source: "iana",
        extensions: ["fly"]
      },
      "text/vnd.fmi.flexstor": {
        source: "iana",
        extensions: ["flx"]
      },
      "text/vnd.gml": {
        source: "iana"
      },
      "text/vnd.graphviz": {
        source: "iana",
        extensions: ["gv"]
      },
      "text/vnd.hans": {
        source: "iana"
      },
      "text/vnd.hgl": {
        source: "iana"
      },
      "text/vnd.in3d.3dml": {
        source: "iana",
        extensions: ["3dml"]
      },
      "text/vnd.in3d.spot": {
        source: "iana",
        extensions: ["spot"]
      },
      "text/vnd.iptc.newsml": {
        source: "iana"
      },
      "text/vnd.iptc.nitf": {
        source: "iana"
      },
      "text/vnd.latex-z": {
        source: "iana"
      },
      "text/vnd.motorola.reflex": {
        source: "iana"
      },
      "text/vnd.ms-mediapackage": {
        source: "iana"
      },
      "text/vnd.net2phone.commcenter.command": {
        source: "iana"
      },
      "text/vnd.radisys.msml-basic-layout": {
        source: "iana"
      },
      "text/vnd.senx.warpscript": {
        source: "iana"
      },
      "text/vnd.si.uricatalogue": {
        source: "iana"
      },
      "text/vnd.sosi": {
        source: "iana"
      },
      "text/vnd.sun.j2me.app-descriptor": {
        source: "iana",
        charset: "UTF-8",
        extensions: ["jad"]
      },
      "text/vnd.trolltech.linguist": {
        source: "iana",
        charset: "UTF-8"
      },
      "text/vnd.wap.si": {
        source: "iana"
      },
      "text/vnd.wap.sl": {
        source: "iana"
      },
      "text/vnd.wap.wml": {
        source: "iana",
        extensions: ["wml"]
      },
      "text/vnd.wap.wmlscript": {
        source: "iana",
        extensions: ["wmls"]
      },
      "text/vtt": {
        source: "iana",
        charset: "UTF-8",
        compressible: true,
        extensions: ["vtt"]
      },
      "text/x-asm": {
        source: "apache",
        extensions: ["s", "asm"]
      },
      "text/x-c": {
        source: "apache",
        extensions: ["c", "cc", "cxx", "cpp", "h", "hh", "dic"]
      },
      "text/x-component": {
        source: "nginx",
        extensions: ["htc"]
      },
      "text/x-fortran": {
        source: "apache",
        extensions: ["f", "for", "f77", "f90"]
      },
      "text/x-gwt-rpc": {
        compressible: true
      },
      "text/x-handlebars-template": {
        extensions: ["hbs"]
      },
      "text/x-java-source": {
        source: "apache",
        extensions: ["java"]
      },
      "text/x-jquery-tmpl": {
        compressible: true
      },
      "text/x-lua": {
        extensions: ["lua"]
      },
      "text/x-markdown": {
        compressible: true,
        extensions: ["mkd"]
      },
      "text/x-nfo": {
        source: "apache",
        extensions: ["nfo"]
      },
      "text/x-opml": {
        source: "apache",
        extensions: ["opml"]
      },
      "text/x-org": {
        compressible: true,
        extensions: ["org"]
      },
      "text/x-pascal": {
        source: "apache",
        extensions: ["p", "pas"]
      },
      "text/x-processing": {
        compressible: true,
        extensions: ["pde"]
      },
      "text/x-sass": {
        extensions: ["sass"]
      },
      "text/x-scss": {
        extensions: ["scss"]
      },
      "text/x-setext": {
        source: "apache",
        extensions: ["etx"]
      },
      "text/x-sfv": {
        source: "apache",
        extensions: ["sfv"]
      },
      "text/x-suse-ymp": {
        compressible: true,
        extensions: ["ymp"]
      },
      "text/x-uuencode": {
        source: "apache",
        extensions: ["uu"]
      },
      "text/x-vcalendar": {
        source: "apache",
        extensions: ["vcs"]
      },
      "text/x-vcard": {
        source: "apache",
        extensions: ["vcf"]
      },
      "text/xml": {
        source: "iana",
        compressible: true,
        extensions: ["xml"]
      },
      "text/xml-external-parsed-entity": {
        source: "iana"
      },
      "text/yaml": {
        compressible: true,
        extensions: ["yaml", "yml"]
      },
      "video/1d-interleaved-parityfec": {
        source: "iana"
      },
      "video/3gpp": {
        source: "iana",
        extensions: ["3gp", "3gpp"]
      },
      "video/3gpp-tt": {
        source: "iana"
      },
      "video/3gpp2": {
        source: "iana",
        extensions: ["3g2"]
      },
      "video/av1": {
        source: "iana"
      },
      "video/bmpeg": {
        source: "iana"
      },
      "video/bt656": {
        source: "iana"
      },
      "video/celb": {
        source: "iana"
      },
      "video/dv": {
        source: "iana"
      },
      "video/encaprtp": {
        source: "iana"
      },
      "video/ffv1": {
        source: "iana"
      },
      "video/flexfec": {
        source: "iana"
      },
      "video/h261": {
        source: "iana",
        extensions: ["h261"]
      },
      "video/h263": {
        source: "iana",
        extensions: ["h263"]
      },
      "video/h263-1998": {
        source: "iana"
      },
      "video/h263-2000": {
        source: "iana"
      },
      "video/h264": {
        source: "iana",
        extensions: ["h264"]
      },
      "video/h264-rcdo": {
        source: "iana"
      },
      "video/h264-svc": {
        source: "iana"
      },
      "video/h265": {
        source: "iana"
      },
      "video/iso.segment": {
        source: "iana",
        extensions: ["m4s"]
      },
      "video/jpeg": {
        source: "iana",
        extensions: ["jpgv"]
      },
      "video/jpeg2000": {
        source: "iana"
      },
      "video/jpm": {
        source: "apache",
        extensions: ["jpm", "jpgm"]
      },
      "video/jxsv": {
        source: "iana"
      },
      "video/mj2": {
        source: "iana",
        extensions: ["mj2", "mjp2"]
      },
      "video/mp1s": {
        source: "iana"
      },
      "video/mp2p": {
        source: "iana"
      },
      "video/mp2t": {
        source: "iana",
        extensions: ["ts"]
      },
      "video/mp4": {
        source: "iana",
        compressible: false,
        extensions: ["mp4", "mp4v", "mpg4"]
      },
      "video/mp4v-es": {
        source: "iana"
      },
      "video/mpeg": {
        source: "iana",
        compressible: false,
        extensions: ["mpeg", "mpg", "mpe", "m1v", "m2v"]
      },
      "video/mpeg4-generic": {
        source: "iana"
      },
      "video/mpv": {
        source: "iana"
      },
      "video/nv": {
        source: "iana"
      },
      "video/ogg": {
        source: "iana",
        compressible: false,
        extensions: ["ogv"]
      },
      "video/parityfec": {
        source: "iana"
      },
      "video/pointer": {
        source: "iana"
      },
      "video/quicktime": {
        source: "iana",
        compressible: false,
        extensions: ["qt", "mov"]
      },
      "video/raptorfec": {
        source: "iana"
      },
      "video/raw": {
        source: "iana"
      },
      "video/rtp-enc-aescm128": {
        source: "iana"
      },
      "video/rtploopback": {
        source: "iana"
      },
      "video/rtx": {
        source: "iana"
      },
      "video/scip": {
        source: "iana"
      },
      "video/smpte291": {
        source: "iana"
      },
      "video/smpte292m": {
        source: "iana"
      },
      "video/ulpfec": {
        source: "iana"
      },
      "video/vc1": {
        source: "iana"
      },
      "video/vc2": {
        source: "iana"
      },
      "video/vnd.cctv": {
        source: "iana"
      },
      "video/vnd.dece.hd": {
        source: "iana",
        extensions: ["uvh", "uvvh"]
      },
      "video/vnd.dece.mobile": {
        source: "iana",
        extensions: ["uvm", "uvvm"]
      },
      "video/vnd.dece.mp4": {
        source: "iana"
      },
      "video/vnd.dece.pd": {
        source: "iana",
        extensions: ["uvp", "uvvp"]
      },
      "video/vnd.dece.sd": {
        source: "iana",
        extensions: ["uvs", "uvvs"]
      },
      "video/vnd.dece.video": {
        source: "iana",
        extensions: ["uvv", "uvvv"]
      },
      "video/vnd.directv.mpeg": {
        source: "iana"
      },
      "video/vnd.directv.mpeg-tts": {
        source: "iana"
      },
      "video/vnd.dlna.mpeg-tts": {
        source: "iana"
      },
      "video/vnd.dvb.file": {
        source: "iana",
        extensions: ["dvb"]
      },
      "video/vnd.fvt": {
        source: "iana",
        extensions: ["fvt"]
      },
      "video/vnd.hns.video": {
        source: "iana"
      },
      "video/vnd.iptvforum.1dparityfec-1010": {
        source: "iana"
      },
      "video/vnd.iptvforum.1dparityfec-2005": {
        source: "iana"
      },
      "video/vnd.iptvforum.2dparityfec-1010": {
        source: "iana"
      },
      "video/vnd.iptvforum.2dparityfec-2005": {
        source: "iana"
      },
      "video/vnd.iptvforum.ttsavc": {
        source: "iana"
      },
      "video/vnd.iptvforum.ttsmpeg2": {
        source: "iana"
      },
      "video/vnd.motorola.video": {
        source: "iana"
      },
      "video/vnd.motorola.videop": {
        source: "iana"
      },
      "video/vnd.mpegurl": {
        source: "iana",
        extensions: ["mxu", "m4u"]
      },
      "video/vnd.ms-playready.media.pyv": {
        source: "iana",
        extensions: ["pyv"]
      },
      "video/vnd.nokia.interleaved-multimedia": {
        source: "iana"
      },
      "video/vnd.nokia.mp4vr": {
        source: "iana"
      },
      "video/vnd.nokia.videovoip": {
        source: "iana"
      },
      "video/vnd.objectvideo": {
        source: "iana"
      },
      "video/vnd.radgamettools.bink": {
        source: "iana"
      },
      "video/vnd.radgamettools.smacker": {
        source: "iana"
      },
      "video/vnd.sealed.mpeg1": {
        source: "iana"
      },
      "video/vnd.sealed.mpeg4": {
        source: "iana"
      },
      "video/vnd.sealed.swf": {
        source: "iana"
      },
      "video/vnd.sealedmedia.softseal.mov": {
        source: "iana"
      },
      "video/vnd.uvvu.mp4": {
        source: "iana",
        extensions: ["uvu", "uvvu"]
      },
      "video/vnd.vivo": {
        source: "iana",
        extensions: ["viv"]
      },
      "video/vnd.youtube.yt": {
        source: "iana"
      },
      "video/vp8": {
        source: "iana"
      },
      "video/vp9": {
        source: "iana"
      },
      "video/webm": {
        source: "apache",
        compressible: false,
        extensions: ["webm"]
      },
      "video/x-f4v": {
        source: "apache",
        extensions: ["f4v"]
      },
      "video/x-fli": {
        source: "apache",
        extensions: ["fli"]
      },
      "video/x-flv": {
        source: "apache",
        compressible: false,
        extensions: ["flv"]
      },
      "video/x-m4v": {
        source: "apache",
        extensions: ["m4v"]
      },
      "video/x-matroska": {
        source: "apache",
        compressible: false,
        extensions: ["mkv", "mk3d", "mks"]
      },
      "video/x-mng": {
        source: "apache",
        extensions: ["mng"]
      },
      "video/x-ms-asf": {
        source: "apache",
        extensions: ["asf", "asx"]
      },
      "video/x-ms-vob": {
        source: "apache",
        extensions: ["vob"]
      },
      "video/x-ms-wm": {
        source: "apache",
        extensions: ["wm"]
      },
      "video/x-ms-wmv": {
        source: "apache",
        compressible: false,
        extensions: ["wmv"]
      },
      "video/x-ms-wmx": {
        source: "apache",
        extensions: ["wmx"]
      },
      "video/x-ms-wvx": {
        source: "apache",
        extensions: ["wvx"]
      },
      "video/x-msvideo": {
        source: "apache",
        extensions: ["avi"]
      },
      "video/x-sgi-movie": {
        source: "apache",
        extensions: ["movie"]
      },
      "video/x-smv": {
        source: "apache",
        extensions: ["smv"]
      },
      "x-conference/x-cooltalk": {
        source: "apache",
        extensions: ["ice"]
      },
      "x-shader/x-fragment": {
        compressible: true
      },
      "x-shader/x-vertex": {
        compressible: true
      }
    };
  }
});

// ../../node_modules/mime-db/index.js
var require_mime_db = __commonJS({
  "../../node_modules/mime-db/index.js"(exports2, module2) {
    module2.exports = require_db();
  }
});

// ../../node_modules/mime-types/index.js
var require_mime_types = __commonJS({
  "../../node_modules/mime-types/index.js"(exports2) {
    "use strict";
    var db = require_mime_db();
    var extname8 = require("path").extname;
    var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/;
    var TEXT_TYPE_REGEXP = /^text\//i;
    exports2.charset = charset;
    exports2.charsets = { lookup: charset };
    exports2.contentType = contentType;
    exports2.extension = extension;
    exports2.extensions = /* @__PURE__ */ Object.create(null);
    exports2.lookup = lookup2;
    exports2.types = /* @__PURE__ */ Object.create(null);
    populateMaps(exports2.extensions, exports2.types);
    function charset(type2) {
      if (!type2 || typeof type2 !== "string") {
        return false;
      }
      var match3 = EXTRACT_TYPE_REGEXP.exec(type2);
      var mime3 = match3 && db[match3[1].toLowerCase()];
      if (mime3 && mime3.charset) {
        return mime3.charset;
      }
      if (match3 && TEXT_TYPE_REGEXP.test(match3[1])) {
        return "UTF-8";
      }
      return false;
    }
    function contentType(str2) {
      if (!str2 || typeof str2 !== "string") {
        return false;
      }
      var mime3 = str2.indexOf("/") === -1 ? exports2.lookup(str2) : str2;
      if (!mime3) {
        return false;
      }
      if (mime3.indexOf("charset") === -1) {
        var charset2 = exports2.charset(mime3);
        if (charset2) mime3 += "; charset=" + charset2.toLowerCase();
      }
      return mime3;
    }
    function extension(type2) {
      if (!type2 || typeof type2 !== "string") {
        return false;
      }
      var match3 = EXTRACT_TYPE_REGEXP.exec(type2);
      var exts = match3 && exports2.extensions[match3[1].toLowerCase()];
      if (!exts || !exts.length) {
        return false;
      }
      return exts[0];
    }
    function lookup2(path45) {
      if (!path45 || typeof path45 !== "string") {
        return false;
      }
      var extension2 = extname8("x." + path45).toLowerCase().substr(1);
      if (!extension2) {
        return false;
      }
      return exports2.types[extension2] || false;
    }
    function populateMaps(extensions, types6) {
      var preference = ["nginx", "apache", void 0, "iana"];
      Object.keys(db).forEach(function forEachMimeType(type2) {
        var mime3 = db[type2];
        var exts = mime3.extensions;
        if (!exts || !exts.length) {
          return;
        }
        extensions[type2] = exts;
        for (var i2 = 0; i2 < exts.length; i2++) {
          var extension2 = exts[i2];
          if (types6[extension2]) {
            var from4 = preference.indexOf(db[types6[extension2]].source);
            var to = preference.indexOf(mime3.source);
            if (types6[extension2] !== "application/octet-stream" && (from4 > to || from4 === to && types6[extension2].substr(0, 12) === "application/")) {
              continue;
            }
          }
          types6[extension2] = type2;
        }
      });
    }
  }
});

// ../../node_modules/object-filter/index.js
var require_object_filter = __commonJS({
  "../../node_modules/object-filter/index.js"(exports2, module2) {
    module2.exports = function objfilter(o, f3, t2) {
      if (typeof f3 !== "function") {
        throw new TypeError("`f` has to be a function");
      }
      var ret = {};
      Object.keys(o).forEach(function(k) {
        if (f3.call(t2 || this, o[k], k, o)) {
          ret[k] = o[k];
        }
      });
      return ret;
    };
  }
});

// ../../node_modules/map-values/index.js
var require_map_values = __commonJS({
  "../../node_modules/map-values/index.js"(exports2, module2) {
    "use strict";
    var hasOwnProperty = Object.prototype.hasOwnProperty;
    module2.exports = function(obj, map13) {
      var result = {};
      for (var key2 in obj) {
        if (hasOwnProperty.call(obj, key2)) {
          result[key2] = map13(obj[key2], key2, obj);
        }
      }
      return result;
    };
  }
});

// ../../node_modules/queue-microtask/index.js
var require_queue_microtask = __commonJS({
  "../../node_modules/queue-microtask/index.js"(exports2, module2) {
    var promise;
    module2.exports = typeof queueMicrotask === "function" ? queueMicrotask.bind(typeof window !== "undefined" ? window : global) : (cb) => (promise || (promise = Promise.resolve())).then(cb).catch((err) => setTimeout(() => {
      throw err;
    }, 0));
  }
});

// ../../node_modules/run-parallel/index.js
var require_run_parallel = __commonJS({
  "../../node_modules/run-parallel/index.js"(exports2, module2) {
    module2.exports = runParallel;
    var queueMicrotask2 = require_queue_microtask();
    function runParallel(tasks, cb) {
      let results, pending, keys2;
      let isSync = true;
      if (Array.isArray(tasks)) {
        results = [];
        pending = tasks.length;
      } else {
        keys2 = Object.keys(tasks);
        results = {};
        pending = keys2.length;
      }
      function done(err) {
        function end() {
          if (cb) cb(err, results);
          cb = null;
        }
        if (isSync) queueMicrotask2(end);
        else end();
      }
      function each2(i2, err, result) {
        results[i2] = result;
        if (--pending === 0 || err) {
          done(err);
        }
      }
      if (!pending) {
        done(null);
      } else if (keys2) {
        keys2.forEach(function(key2) {
          tasks[key2](function(err, result) {
            each2(key2, err, result);
          });
        });
      } else {
        tasks.forEach(function(task, i2) {
          task(function(err, result) {
            each2(i2, err, result);
          });
        });
      }
      isSync = false;
    }
  }
});

// ../../node_modules/check-node-version/node_modules/semver/semver.js
var require_semver = __commonJS({
  "../../node_modules/check-node-version/node_modules/semver/semver.js"(exports2, module2) {
    exports2 = module2.exports = SemVer;
    var debug;
    if (typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
      debug = function() {
        var args = Array.prototype.slice.call(arguments, 0);
        args.unshift("SEMVER");
        console.log.apply(console, args);
      };
    } else {
      debug = function() {
      };
    }
    exports2.SEMVER_SPEC_VERSION = "2.0.0";
    var MAX_LENGTH = 256;
    var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
    9007199254740991;
    var MAX_SAFE_COMPONENT_LENGTH = 16;
    var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;
    var re = exports2.re = [];
    var safeRe = exports2.safeRe = [];
    var src = exports2.src = [];
    var t2 = exports2.tokens = {};
    var R = 0;
    function tok(n) {
      t2[n] = R++;
    }
    var LETTERDASHNUMBER = "[a-zA-Z0-9-]";
    var safeRegexReplacements = [
      ["\\s", 1],
      ["\\d", MAX_LENGTH],
      [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]
    ];
    function makeSafeRe(value) {
      for (var i3 = 0; i3 < safeRegexReplacements.length; i3++) {
        var token = safeRegexReplacements[i3][0];
        var max = safeRegexReplacements[i3][1];
        value = value.split(token + "*").join(token + "{0," + max + "}").split(token + "+").join(token + "{1," + max + "}");
      }
      return value;
    }
    tok("NUMERICIDENTIFIER");
    src[t2.NUMERICIDENTIFIER] = "0|[1-9]\\d*";
    tok("NUMERICIDENTIFIERLOOSE");
    src[t2.NUMERICIDENTIFIERLOOSE] = "\\d+";
    tok("NONNUMERICIDENTIFIER");
    src[t2.NONNUMERICIDENTIFIER] = "\\d*[a-zA-Z-]" + LETTERDASHNUMBER + "*";
    tok("MAINVERSION");
    src[t2.MAINVERSION] = "(" + src[t2.NUMERICIDENTIFIER] + ")\\.(" + src[t2.NUMERICIDENTIFIER] + ")\\.(" + src[t2.NUMERICIDENTIFIER] + ")";
    tok("MAINVERSIONLOOSE");
    src[t2.MAINVERSIONLOOSE] = "(" + src[t2.NUMERICIDENTIFIERLOOSE] + ")\\.(" + src[t2.NUMERICIDENTIFIERLOOSE] + ")\\.(" + src[t2.NUMERICIDENTIFIERLOOSE] + ")";
    tok("PRERELEASEIDENTIFIER");
    src[t2.PRERELEASEIDENTIFIER] = "(?:" + src[t2.NUMERICIDENTIFIER] + "|" + src[t2.NONNUMERICIDENTIFIER] + ")";
    tok("PRERELEASEIDENTIFIERLOOSE");
    src[t2.PRERELEASEIDENTIFIERLOOSE] = "(?:" + src[t2.NUMERICIDENTIFIERLOOSE] + "|" + src[t2.NONNUMERICIDENTIFIER] + ")";
    tok("PRERELEASE");
    src[t2.PRERELEASE] = "(?:-(" + src[t2.PRERELEASEIDENTIFIER] + "(?:\\." + src[t2.PRERELEASEIDENTIFIER] + ")*))";
    tok("PRERELEASELOOSE");
    src[t2.PRERELEASELOOSE] = "(?:-?(" + src[t2.PRERELEASEIDENTIFIERLOOSE] + "(?:\\." + src[t2.PRERELEASEIDENTIFIERLOOSE] + ")*))";
    tok("BUILDIDENTIFIER");
    src[t2.BUILDIDENTIFIER] = LETTERDASHNUMBER + "+";
    tok("BUILD");
    src[t2.BUILD] = "(?:\\+(" + src[t2.BUILDIDENTIFIER] + "(?:\\." + src[t2.BUILDIDENTIFIER] + ")*))";
    tok("FULL");
    tok("FULLPLAIN");
    src[t2.FULLPLAIN] = "v?" + src[t2.MAINVERSION] + src[t2.PRERELEASE] + "?" + src[t2.BUILD] + "?";
    src[t2.FULL] = "^" + src[t2.FULLPLAIN] + "$";
    tok("LOOSEPLAIN");
    src[t2.LOOSEPLAIN] = "[v=\\s]*" + src[t2.MAINVERSIONLOOSE] + src[t2.PRERELEASELOOSE] + "?" + src[t2.BUILD] + "?";
    tok("LOOSE");
    src[t2.LOOSE] = "^" + src[t2.LOOSEPLAIN] + "$";
    tok("GTLT");
    src[t2.GTLT] = "((?:<|>)?=?)";
    tok("XRANGEIDENTIFIERLOOSE");
    src[t2.XRANGEIDENTIFIERLOOSE] = src[t2.NUMERICIDENTIFIERLOOSE] + "|x|X|\\*";
    tok("XRANGEIDENTIFIER");
    src[t2.XRANGEIDENTIFIER] = src[t2.NUMERICIDENTIFIER] + "|x|X|\\*";
    tok("XRANGEPLAIN");
    src[t2.XRANGEPLAIN] = "[v=\\s]*(" + src[t2.XRANGEIDENTIFIER] + ")(?:\\.(" + src[t2.XRANGEIDENTIFIER] + ")(?:\\.(" + src[t2.XRANGEIDENTIFIER] + ")(?:" + src[t2.PRERELEASE] + ")?" + src[t2.BUILD] + "?)?)?";
    tok("XRANGEPLAINLOOSE");
    src[t2.XRANGEPLAINLOOSE] = "[v=\\s]*(" + src[t2.XRANGEIDENTIFIERLOOSE] + ")(?:\\.(" + src[t2.XRANGEIDENTIFIERLOOSE] + ")(?:\\.(" + src[t2.XRANGEIDENTIFIERLOOSE] + ")(?:" + src[t2.PRERELEASELOOSE] + ")?" + src[t2.BUILD] + "?)?)?";
    tok("XRANGE");
    src[t2.XRANGE] = "^" + src[t2.GTLT] + "\\s*" + src[t2.XRANGEPLAIN] + "$";
    tok("XRANGELOOSE");
    src[t2.XRANGELOOSE] = "^" + src[t2.GTLT] + "\\s*" + src[t2.XRANGEPLAINLOOSE] + "$";
    tok("COERCE");
    src[t2.COERCE] = "(^|[^\\d])(\\d{1," + MAX_SAFE_COMPONENT_LENGTH + "})(?:\\.(\\d{1," + MAX_SAFE_COMPONENT_LENGTH + "}))?(?:\\.(\\d{1," + MAX_SAFE_COMPONENT_LENGTH + "}))?(?:$|[^\\d])";
    tok("COERCERTL");
    re[t2.COERCERTL] = new RegExp(src[t2.COERCE], "g");
    safeRe[t2.COERCERTL] = new RegExp(makeSafeRe(src[t2.COERCE]), "g");
    tok("LONETILDE");
    src[t2.LONETILDE] = "(?:~>?)";
    tok("TILDETRIM");
    src[t2.TILDETRIM] = "(\\s*)" + src[t2.LONETILDE] + "\\s+";
    re[t2.TILDETRIM] = new RegExp(src[t2.TILDETRIM], "g");
    safeRe[t2.TILDETRIM] = new RegExp(makeSafeRe(src[t2.TILDETRIM]), "g");
    var tildeTrimReplace = "$1~";
    tok("TILDE");
    src[t2.TILDE] = "^" + src[t2.LONETILDE] + src[t2.XRANGEPLAIN] + "$";
    tok("TILDELOOSE");
    src[t2.TILDELOOSE] = "^" + src[t2.LONETILDE] + src[t2.XRANGEPLAINLOOSE] + "$";
    tok("LONECARET");
    src[t2.LONECARET] = "(?:\\^)";
    tok("CARETTRIM");
    src[t2.CARETTRIM] = "(\\s*)" + src[t2.LONECARET] + "\\s+";
    re[t2.CARETTRIM] = new RegExp(src[t2.CARETTRIM], "g");
    safeRe[t2.CARETTRIM] = new RegExp(makeSafeRe(src[t2.CARETTRIM]), "g");
    var caretTrimReplace = "$1^";
    tok("CARET");
    src[t2.CARET] = "^" + src[t2.LONECARET] + src[t2.XRANGEPLAIN] + "$";
    tok("CARETLOOSE");
    src[t2.CARETLOOSE] = "^" + src[t2.LONECARET] + src[t2.XRANGEPLAINLOOSE] + "$";
    tok("COMPARATORLOOSE");
    src[t2.COMPARATORLOOSE] = "^" + src[t2.GTLT] + "\\s*(" + src[t2.LOOSEPLAIN] + ")$|^$";
    tok("COMPARATOR");
    src[t2.COMPARATOR] = "^" + src[t2.GTLT] + "\\s*(" + src[t2.FULLPLAIN] + ")$|^$";
    tok("COMPARATORTRIM");
    src[t2.COMPARATORTRIM] = "(\\s*)" + src[t2.GTLT] + "\\s*(" + src[t2.LOOSEPLAIN] + "|" + src[t2.XRANGEPLAIN] + ")";
    re[t2.COMPARATORTRIM] = new RegExp(src[t2.COMPARATORTRIM], "g");
    safeRe[t2.COMPARATORTRIM] = new RegExp(makeSafeRe(src[t2.COMPARATORTRIM]), "g");
    var comparatorTrimReplace = "$1$2$3";
    tok("HYPHENRANGE");
    src[t2.HYPHENRANGE] = "^\\s*(" + src[t2.XRANGEPLAIN] + ")\\s+-\\s+(" + src[t2.XRANGEPLAIN] + ")\\s*$";
    tok("HYPHENRANGELOOSE");
    src[t2.HYPHENRANGELOOSE] = "^\\s*(" + src[t2.XRANGEPLAINLOOSE] + ")\\s+-\\s+(" + src[t2.XRANGEPLAINLOOSE] + ")\\s*$";
    tok("STAR");
    src[t2.STAR] = "(<|>)?=?\\s*\\*";
    for (i2 = 0; i2 < R; i2++) {
      debug(i2, src[i2]);
      if (!re[i2]) {
        re[i2] = new RegExp(src[i2]);
        safeRe[i2] = new RegExp(makeSafeRe(src[i2]));
      }
    }
    var i2;
    exports2.parse = parse16;
    function parse16(version4, options) {
      if (!options || typeof options !== "object") {
        options = {
          loose: !!options,
          includePrerelease: false
        };
      }
      if (version4 instanceof SemVer) {
        return version4;
      }
      if (typeof version4 !== "string") {
        return null;
      }
      if (version4.length > MAX_LENGTH) {
        return null;
      }
      var r2 = options.loose ? safeRe[t2.LOOSE] : safeRe[t2.FULL];
      if (!r2.test(version4)) {
        return null;
      }
      try {
        return new SemVer(version4, options);
      } catch (er) {
        return null;
      }
    }
    exports2.valid = valid2;
    function valid2(version4, options) {
      var v = parse16(version4, options);
      return v ? v.version : null;
    }
    exports2.clean = clean3;
    function clean3(version4, options) {
      var s5 = parse16(version4.trim().replace(/^[=v]+/, ""), options);
      return s5 ? s5.version : null;
    }
    exports2.SemVer = SemVer;
    function SemVer(version4, options) {
      if (!options || typeof options !== "object") {
        options = {
          loose: !!options,
          includePrerelease: false
        };
      }
      if (version4 instanceof SemVer) {
        if (version4.loose === options.loose) {
          return version4;
        } else {
          version4 = version4.version;
        }
      } else if (typeof version4 !== "string") {
        throw new TypeError("Invalid Version: " + version4);
      }
      if (version4.length > MAX_LENGTH) {
        throw new TypeError("version is longer than " + MAX_LENGTH + " characters");
      }
      if (!(this instanceof SemVer)) {
        return new SemVer(version4, options);
      }
      debug("SemVer", version4, options);
      this.options = options;
      this.loose = !!options.loose;
      var m2 = version4.trim().match(options.loose ? safeRe[t2.LOOSE] : safeRe[t2.FULL]);
      if (!m2) {
        throw new TypeError("Invalid Version: " + version4);
      }
      this.raw = version4;
      this.major = +m2[1];
      this.minor = +m2[2];
      this.patch = +m2[3];
      if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
        throw new TypeError("Invalid major version");
      }
      if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
        throw new TypeError("Invalid minor version");
      }
      if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
        throw new TypeError("Invalid patch version");
      }
      if (!m2[4]) {
        this.prerelease = [];
      } else {
        this.prerelease = m2[4].split(".").map(function(id) {
          if (/^[0-9]+$/.test(id)) {
            var num = +id;
            if (num >= 0 && num < MAX_SAFE_INTEGER) {
              return num;
            }
          }
          return id;
        });
      }
      this.build = m2[5] ? m2[5].split(".") : [];
      this.format();
    }
    SemVer.prototype.format = function() {
      this.version = this.major + "." + this.minor + "." + this.patch;
      if (this.prerelease.length) {
        this.version += "-" + this.prerelease.join(".");
      }
      return this.version;
    };
    SemVer.prototype.toString = function() {
      return this.version;
    };
    SemVer.prototype.compare = function(other) {
      debug("SemVer.compare", this.version, this.options, other);
      if (!(other instanceof SemVer)) {
        other = new SemVer(other, this.options);
      }
      return this.compareMain(other) || this.comparePre(other);
    };
    SemVer.prototype.compareMain = function(other) {
      if (!(other instanceof SemVer)) {
        other = new SemVer(other, this.options);
      }
      return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
    };
    SemVer.prototype.comparePre = function(other) {
      if (!(other instanceof SemVer)) {
        other = new SemVer(other, this.options);
      }
      if (this.prerelease.length && !other.prerelease.length) {
        return -1;
      } else if (!this.prerelease.length && other.prerelease.length) {
        return 1;
      } else if (!this.prerelease.length && !other.prerelease.length) {
        return 0;
      }
      var i3 = 0;
      do {
        var a2 = this.prerelease[i3];
        var b = other.prerelease[i3];
        debug("prerelease compare", i3, a2, b);
        if (a2 === void 0 && b === void 0) {
          return 0;
        } else if (b === void 0) {
          return 1;
        } else if (a2 === void 0) {
          return -1;
        } else if (a2 === b) {
          continue;
        } else {
          return compareIdentifiers(a2, b);
        }
      } while (++i3);
    };
    SemVer.prototype.compareBuild = function(other) {
      if (!(other instanceof SemVer)) {
        other = new SemVer(other, this.options);
      }
      var i3 = 0;
      do {
        var a2 = this.build[i3];
        var b = other.build[i3];
        debug("prerelease compare", i3, a2, b);
        if (a2 === void 0 && b === void 0) {
          return 0;
        } else if (b === void 0) {
          return 1;
        } else if (a2 === void 0) {
          return -1;
        } else if (a2 === b) {
          continue;
        } else {
          return compareIdentifiers(a2, b);
        }
      } while (++i3);
    };
    SemVer.prototype.inc = function(release, identifier) {
      switch (release) {
        case "premajor":
          this.prerelease.length = 0;
          this.patch = 0;
          this.minor = 0;
          this.major++;
          this.inc("pre", identifier);
          break;
        case "preminor":
          this.prerelease.length = 0;
          this.patch = 0;
          this.minor++;
          this.inc("pre", identifier);
          break;
        case "prepatch":
          this.prerelease.length = 0;
          this.inc("patch", identifier);
          this.inc("pre", identifier);
          break;
        // If the input is a non-prerelease version, this acts the same as
        // prepatch.
        case "prerelease":
          if (this.prerelease.length === 0) {
            this.inc("patch", identifier);
          }
          this.inc("pre", identifier);
          break;
        case "major":
          if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
            this.major++;
          }
          this.minor = 0;
          this.patch = 0;
          this.prerelease = [];
          break;
        case "minor":
          if (this.patch !== 0 || this.prerelease.length === 0) {
            this.minor++;
          }
          this.patch = 0;
          this.prerelease = [];
          break;
        case "patch":
          if (this.prerelease.length === 0) {
            this.patch++;
          }
          this.prerelease = [];
          break;
        // This probably shouldn't be used publicly.
        // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
        case "pre":
          if (this.prerelease.length === 0) {
            this.prerelease = [0];
          } else {
            var i3 = this.prerelease.length;
            while (--i3 >= 0) {
              if (typeof this.prerelease[i3] === "number") {
                this.prerelease[i3]++;
                i3 = -2;
              }
            }
            if (i3 === -1) {
              this.prerelease.push(0);
            }
          }
          if (identifier) {
            if (this.prerelease[0] === identifier) {
              if (isNaN(this.prerelease[1])) {
                this.prerelease = [identifier, 0];
              }
            } else {
              this.prerelease = [identifier, 0];
            }
          }
          break;
        default:
          throw new Error("invalid increment argument: " + release);
      }
      this.format();
      this.raw = this.version;
      return this;
    };
    exports2.inc = inc;
    function inc(version4, release, loose, identifier) {
      if (typeof loose === "string") {
        identifier = loose;
        loose = void 0;
      }
      try {
        return new SemVer(version4, loose).inc(release, identifier).version;
      } catch (er) {
        return null;
      }
    }
    exports2.diff = diff;
    function diff(version1, version22) {
      if (eq(version1, version22)) {
        return null;
      } else {
        var v1 = parse16(version1);
        var v2 = parse16(version22);
        var prefix2 = "";
        if (v1.prerelease.length || v2.prerelease.length) {
          prefix2 = "pre";
          var defaultResult = "prerelease";
        }
        for (var key2 in v1) {
          if (key2 === "major" || key2 === "minor" || key2 === "patch") {
            if (v1[key2] !== v2[key2]) {
              return prefix2 + key2;
            }
          }
        }
        return defaultResult;
      }
    }
    exports2.compareIdentifiers = compareIdentifiers;
    var numeric = /^[0-9]+$/;
    function compareIdentifiers(a2, b) {
      var anum = numeric.test(a2);
      var bnum = numeric.test(b);
      if (anum && bnum) {
        a2 = +a2;
        b = +b;
      }
      return a2 === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b ? -1 : 1;
    }
    exports2.rcompareIdentifiers = rcompareIdentifiers;
    function rcompareIdentifiers(a2, b) {
      return compareIdentifiers(b, a2);
    }
    exports2.major = major2;
    function major2(a2, loose) {
      return new SemVer(a2, loose).major;
    }
    exports2.minor = minor2;
    function minor2(a2, loose) {
      return new SemVer(a2, loose).minor;
    }
    exports2.patch = patch4;
    function patch4(a2, loose) {
      return new SemVer(a2, loose).patch;
    }
    exports2.compare = compare3;
    function compare3(a2, b, loose) {
      return new SemVer(a2, loose).compare(new SemVer(b, loose));
    }
    exports2.compareLoose = compareLoose;
    function compareLoose(a2, b) {
      return compare3(a2, b, true);
    }
    exports2.compareBuild = compareBuild;
    function compareBuild(a2, b, loose) {
      var versionA = new SemVer(a2, loose);
      var versionB = new SemVer(b, loose);
      return versionA.compare(versionB) || versionA.compareBuild(versionB);
    }
    exports2.rcompare = rcompare;
    function rcompare(a2, b, loose) {
      return compare3(b, a2, loose);
    }
    exports2.sort = sort;
    function sort(list6, loose) {
      return list6.sort(function(a2, b) {
        return exports2.compareBuild(a2, b, loose);
      });
    }
    exports2.rsort = rsort;
    function rsort(list6, loose) {
      return list6.sort(function(a2, b) {
        return exports2.compareBuild(b, a2, loose);
      });
    }
    exports2.gt = gt;
    function gt(a2, b, loose) {
      return compare3(a2, b, loose) > 0;
    }
    exports2.lt = lt;
    function lt(a2, b, loose) {
      return compare3(a2, b, loose) < 0;
    }
    exports2.eq = eq;
    function eq(a2, b, loose) {
      return compare3(a2, b, loose) === 0;
    }
    exports2.neq = neq;
    function neq(a2, b, loose) {
      return compare3(a2, b, loose) !== 0;
    }
    exports2.gte = gte;
    function gte(a2, b, loose) {
      return compare3(a2, b, loose) >= 0;
    }
    exports2.lte = lte;
    function lte(a2, b, loose) {
      return compare3(a2, b, loose) <= 0;
    }
    exports2.cmp = cmp;
    function cmp(a2, op2, b, loose) {
      switch (op2) {
        case "===":
          if (typeof a2 === "object")
            a2 = a2.version;
          if (typeof b === "object")
            b = b.version;
          return a2 === b;
        case "!==":
          if (typeof a2 === "object")
            a2 = a2.version;
          if (typeof b === "object")
            b = b.version;
          return a2 !== b;
        case "":
        case "=":
        case "==":
          return eq(a2, b, loose);
        case "!=":
          return neq(a2, b, loose);
        case ">":
          return gt(a2, b, loose);
        case ">=":
          return gte(a2, b, loose);
        case "<":
          return lt(a2, b, loose);
        case "<=":
          return lte(a2, b, loose);
        default:
          throw new TypeError("Invalid operator: " + op2);
      }
    }
    exports2.Comparator = Comparator;
    function Comparator(comp, options) {
      if (!options || typeof options !== "object") {
        options = {
          loose: !!options,
          includePrerelease: false
        };
      }
      if (comp instanceof Comparator) {
        if (comp.loose === !!options.loose) {
          return comp;
        } else {
          comp = comp.value;
        }
      }
      if (!(this instanceof Comparator)) {
        return new Comparator(comp, options);
      }
      comp = comp.trim().split(/\s+/).join(" ");
      debug("comparator", comp, options);
      this.options = options;
      this.loose = !!options.loose;
      this.parse(comp);
      if (this.semver === ANY) {
        this.value = "";
      } else {
        this.value = this.operator + this.semver.version;
      }
      debug("comp", this);
    }
    var ANY = {};
    Comparator.prototype.parse = function(comp) {
      var r2 = this.options.loose ? safeRe[t2.COMPARATORLOOSE] : safeRe[t2.COMPARATOR];
      var m2 = comp.match(r2);
      if (!m2) {
        throw new TypeError("Invalid comparator: " + comp);
      }
      this.operator = m2[1] !== void 0 ? m2[1] : "";
      if (this.operator === "=") {
        this.operator = "";
      }
      if (!m2[2]) {
        this.semver = ANY;
      } else {
        this.semver = new SemVer(m2[2], this.options.loose);
      }
    };
    Comparator.prototype.toString = function() {
      return this.value;
    };
    Comparator.prototype.test = function(version4) {
      debug("Comparator.test", version4, this.options.loose);
      if (this.semver === ANY || version4 === ANY) {
        return true;
      }
      if (typeof version4 === "string") {
        try {
          version4 = new SemVer(version4, this.options);
        } catch (er) {
          return false;
        }
      }
      return cmp(version4, this.operator, this.semver, this.options);
    };
    Comparator.prototype.intersects = function(comp, options) {
      if (!(comp instanceof Comparator)) {
        throw new TypeError("a Comparator is required");
      }
      if (!options || typeof options !== "object") {
        options = {
          loose: !!options,
          includePrerelease: false
        };
      }
      var rangeTmp;
      if (this.operator === "") {
        if (this.value === "") {
          return true;
        }
        rangeTmp = new Range(comp.value, options);
        return satisfies(this.value, rangeTmp, options);
      } else if (comp.operator === "") {
        if (comp.value === "") {
          return true;
        }
        rangeTmp = new Range(this.value, options);
        return satisfies(comp.semver, rangeTmp, options);
      }
      var sameDirectionIncreasing = (this.operator === ">=" || this.operator === ">") && (comp.operator === ">=" || comp.operator === ">");
      var sameDirectionDecreasing = (this.operator === "<=" || this.operator === "<") && (comp.operator === "<=" || comp.operator === "<");
      var sameSemVer = this.semver.version === comp.semver.version;
      var differentDirectionsInclusive = (this.operator === ">=" || this.operator === "<=") && (comp.operator === ">=" || comp.operator === "<=");
      var oppositeDirectionsLessThan = cmp(this.semver, "<", comp.semver, options) && ((this.operator === ">=" || this.operator === ">") && (comp.operator === "<=" || comp.operator === "<"));
      var oppositeDirectionsGreaterThan = cmp(this.semver, ">", comp.semver, options) && ((this.operator === "<=" || this.operator === "<") && (comp.operator === ">=" || comp.operator === ">"));
      return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
    };
    exports2.Range = Range;
    function Range(range, options) {
      if (!options || typeof options !== "object") {
        options = {
          loose: !!options,
          includePrerelease: false
        };
      }
      if (range instanceof Range) {
        if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
          return range;
        } else {
          return new Range(range.raw, options);
        }
      }
      if (range instanceof Comparator) {
        return new Range(range.value, options);
      }
      if (!(this instanceof Range)) {
        return new Range(range, options);
      }
      this.options = options;
      this.loose = !!options.loose;
      this.includePrerelease = !!options.includePrerelease;
      this.raw = range.trim().split(/\s+/).join(" ");
      this.set = this.raw.split("||").map(function(range2) {
        return this.parseRange(range2.trim());
      }, this).filter(function(c) {
        return c.length;
      });
      if (!this.set.length) {
        throw new TypeError("Invalid SemVer Range: " + this.raw);
      }
      this.format();
    }
    Range.prototype.format = function() {
      this.range = this.set.map(function(comps) {
        return comps.join(" ").trim();
      }).join("||").trim();
      return this.range;
    };
    Range.prototype.toString = function() {
      return this.range;
    };
    Range.prototype.parseRange = function(range) {
      var loose = this.options.loose;
      var hr2 = loose ? safeRe[t2.HYPHENRANGELOOSE] : safeRe[t2.HYPHENRANGE];
      range = range.replace(hr2, hyphenReplace);
      debug("hyphen replace", range);
      range = range.replace(safeRe[t2.COMPARATORTRIM], comparatorTrimReplace);
      debug("comparator trim", range, safeRe[t2.COMPARATORTRIM]);
      range = range.replace(safeRe[t2.TILDETRIM], tildeTrimReplace);
      range = range.replace(safeRe[t2.CARETTRIM], caretTrimReplace);
      range = range.split(/\s+/).join(" ");
      var compRe = loose ? safeRe[t2.COMPARATORLOOSE] : safeRe[t2.COMPARATOR];
      var set3 = range.split(" ").map(function(comp) {
        return parseComparator(comp, this.options);
      }, this).join(" ").split(/\s+/);
      if (this.options.loose) {
        set3 = set3.filter(function(comp) {
          return !!comp.match(compRe);
        });
      }
      set3 = set3.map(function(comp) {
        return new Comparator(comp, this.options);
      }, this);
      return set3;
    };
    Range.prototype.intersects = function(range, options) {
      if (!(range instanceof Range)) {
        throw new TypeError("a Range is required");
      }
      return this.set.some(function(thisComparators) {
        return isSatisfiable(thisComparators, options) && range.set.some(function(rangeComparators) {
          return isSatisfiable(rangeComparators, options) && thisComparators.every(function(thisComparator) {
            return rangeComparators.every(function(rangeComparator) {
              return thisComparator.intersects(rangeComparator, options);
            });
          });
        });
      });
    };
    function isSatisfiable(comparators, options) {
      var result = true;
      var remainingComparators = comparators.slice();
      var testComparator = remainingComparators.pop();
      while (result && remainingComparators.length) {
        result = remainingComparators.every(function(otherComparator) {
          return testComparator.intersects(otherComparator, options);
        });
        testComparator = remainingComparators.pop();
      }
      return result;
    }
    exports2.toComparators = toComparators;
    function toComparators(range, options) {
      return new Range(range, options).set.map(function(comp) {
        return comp.map(function(c) {
          return c.value;
        }).join(" ").trim().split(" ");
      });
    }
    function parseComparator(comp, options) {
      debug("comp", comp, options);
      comp = replaceCarets(comp, options);
      debug("caret", comp);
      comp = replaceTildes(comp, options);
      debug("tildes", comp);
      comp = replaceXRanges(comp, options);
      debug("xrange", comp);
      comp = replaceStars(comp, options);
      debug("stars", comp);
      return comp;
    }
    function isX(id) {
      return !id || id.toLowerCase() === "x" || id === "*";
    }
    function replaceTildes(comp, options) {
      return comp.trim().split(/\s+/).map(function(comp2) {
        return replaceTilde(comp2, options);
      }).join(" ");
    }
    function replaceTilde(comp, options) {
      var r2 = options.loose ? safeRe[t2.TILDELOOSE] : safeRe[t2.TILDE];
      return comp.replace(r2, function(_2, M, m2, p5, pr) {
        debug("tilde", comp, _2, M, m2, p5, pr);
        var ret;
        if (isX(M)) {
          ret = "";
        } else if (isX(m2)) {
          ret = ">=" + M + ".0.0 <" + (+M + 1) + ".0.0";
        } else if (isX(p5)) {
          ret = ">=" + M + "." + m2 + ".0 <" + M + "." + (+m2 + 1) + ".0";
        } else if (pr) {
          debug("replaceTilde pr", pr);
          ret = ">=" + M + "." + m2 + "." + p5 + "-" + pr + " <" + M + "." + (+m2 + 1) + ".0";
        } else {
          ret = ">=" + M + "." + m2 + "." + p5 + " <" + M + "." + (+m2 + 1) + ".0";
        }
        debug("tilde return", ret);
        return ret;
      });
    }
    function replaceCarets(comp, options) {
      return comp.trim().split(/\s+/).map(function(comp2) {
        return replaceCaret(comp2, options);
      }).join(" ");
    }
    function replaceCaret(comp, options) {
      debug("caret", comp, options);
      var r2 = options.loose ? safeRe[t2.CARETLOOSE] : safeRe[t2.CARET];
      return comp.replace(r2, function(_2, M, m2, p5, pr) {
        debug("caret", comp, _2, M, m2, p5, pr);
        var ret;
        if (isX(M)) {
          ret = "";
        } else if (isX(m2)) {
          ret = ">=" + M + ".0.0 <" + (+M + 1) + ".0.0";
        } else if (isX(p5)) {
          if (M === "0") {
            ret = ">=" + M + "." + m2 + ".0 <" + M + "." + (+m2 + 1) + ".0";
          } else {
            ret = ">=" + M + "." + m2 + ".0 <" + (+M + 1) + ".0.0";
          }
        } else if (pr) {
          debug("replaceCaret pr", pr);
          if (M === "0") {
            if (m2 === "0") {
              ret = ">=" + M + "." + m2 + "." + p5 + "-" + pr + " <" + M + "." + m2 + "." + (+p5 + 1);
            } else {
              ret = ">=" + M + "." + m2 + "." + p5 + "-" + pr + " <" + M + "." + (+m2 + 1) + ".0";
            }
          } else {
            ret = ">=" + M + "." + m2 + "." + p5 + "-" + pr + " <" + (+M + 1) + ".0.0";
          }
        } else {
          debug("no pr");
          if (M === "0") {
            if (m2 === "0") {
              ret = ">=" + M + "." + m2 + "." + p5 + " <" + M + "." + m2 + "." + (+p5 + 1);
            } else {
              ret = ">=" + M + "." + m2 + "." + p5 + " <" + M + "." + (+m2 + 1) + ".0";
            }
          } else {
            ret = ">=" + M + "." + m2 + "." + p5 + " <" + (+M + 1) + ".0.0";
          }
        }
        debug("caret return", ret);
        return ret;
      });
    }
    function replaceXRanges(comp, options) {
      debug("replaceXRanges", comp, options);
      return comp.split(/\s+/).map(function(comp2) {
        return replaceXRange(comp2, options);
      }).join(" ");
    }
    function replaceXRange(comp, options) {
      comp = comp.trim();
      var r2 = options.loose ? safeRe[t2.XRANGELOOSE] : safeRe[t2.XRANGE];
      return comp.replace(r2, function(ret, gtlt, M, m2, p5, pr) {
        debug("xRange", comp, ret, gtlt, M, m2, p5, pr);
        var xM = isX(M);
        var xm = xM || isX(m2);
        var xp = xm || isX(p5);
        var anyX = xp;
        if (gtlt === "=" && anyX) {
          gtlt = "";
        }
        pr = options.includePrerelease ? "-0" : "";
        if (xM) {
          if (gtlt === ">" || gtlt === "<") {
            ret = "<0.0.0-0";
          } else {
            ret = "*";
          }
        } else if (gtlt && anyX) {
          if (xm) {
            m2 = 0;
          }
          p5 = 0;
          if (gtlt === ">") {
            gtlt = ">=";
            if (xm) {
              M = +M + 1;
              m2 = 0;
              p5 = 0;
            } else {
              m2 = +m2 + 1;
              p5 = 0;
            }
          } else if (gtlt === "<=") {
            gtlt = "<";
            if (xm) {
              M = +M + 1;
            } else {
              m2 = +m2 + 1;
            }
          }
          ret = gtlt + M + "." + m2 + "." + p5 + pr;
        } else if (xm) {
          ret = ">=" + M + ".0.0" + pr + " <" + (+M + 1) + ".0.0" + pr;
        } else if (xp) {
          ret = ">=" + M + "." + m2 + ".0" + pr + " <" + M + "." + (+m2 + 1) + ".0" + pr;
        }
        debug("xRange return", ret);
        return ret;
      });
    }
    function replaceStars(comp, options) {
      debug("replaceStars", comp, options);
      return comp.trim().replace(safeRe[t2.STAR], "");
    }
    function hyphenReplace($0, from4, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {
      if (isX(fM)) {
        from4 = "";
      } else if (isX(fm)) {
        from4 = ">=" + fM + ".0.0";
      } else if (isX(fp)) {
        from4 = ">=" + fM + "." + fm + ".0";
      } else {
        from4 = ">=" + from4;
      }
      if (isX(tM)) {
        to = "";
      } else if (isX(tm)) {
        to = "<" + (+tM + 1) + ".0.0";
      } else if (isX(tp)) {
        to = "<" + tM + "." + (+tm + 1) + ".0";
      } else if (tpr) {
        to = "<=" + tM + "." + tm + "." + tp + "-" + tpr;
      } else {
        to = "<=" + to;
      }
      return (from4 + " " + to).trim();
    }
    Range.prototype.test = function(version4) {
      if (!version4) {
        return false;
      }
      if (typeof version4 === "string") {
        try {
          version4 = new SemVer(version4, this.options);
        } catch (er) {
          return false;
        }
      }
      for (var i3 = 0; i3 < this.set.length; i3++) {
        if (testSet(this.set[i3], version4, this.options)) {
          return true;
        }
      }
      return false;
    };
    function testSet(set3, version4, options) {
      for (var i3 = 0; i3 < set3.length; i3++) {
        if (!set3[i3].test(version4)) {
          return false;
        }
      }
      if (version4.prerelease.length && !options.includePrerelease) {
        for (i3 = 0; i3 < set3.length; i3++) {
          debug(set3[i3].semver);
          if (set3[i3].semver === ANY) {
            continue;
          }
          if (set3[i3].semver.prerelease.length > 0) {
            var allowed = set3[i3].semver;
            if (allowed.major === version4.major && allowed.minor === version4.minor && allowed.patch === version4.patch) {
              return true;
            }
          }
        }
        return false;
      }
      return true;
    }
    exports2.satisfies = satisfies;
    function satisfies(version4, range, options) {
      try {
        range = new Range(range, options);
      } catch (er) {
        return false;
      }
      return range.test(version4);
    }
    exports2.maxSatisfying = maxSatisfying;
    function maxSatisfying(versions, range, options) {
      var max = null;
      var maxSV = null;
      try {
        var rangeObj = new Range(range, options);
      } catch (er) {
        return null;
      }
      versions.forEach(function(v) {
        if (rangeObj.test(v)) {
          if (!max || maxSV.compare(v) === -1) {
            max = v;
            maxSV = new SemVer(max, options);
          }
        }
      });
      return max;
    }
    exports2.minSatisfying = minSatisfying;
    function minSatisfying(versions, range, options) {
      var min = null;
      var minSV = null;
      try {
        var rangeObj = new Range(range, options);
      } catch (er) {
        return null;
      }
      versions.forEach(function(v) {
        if (rangeObj.test(v)) {
          if (!min || minSV.compare(v) === 1) {
            min = v;
            minSV = new SemVer(min, options);
          }
        }
      });
      return min;
    }
    exports2.minVersion = minVersion;
    function minVersion(range, loose) {
      range = new Range(range, loose);
      var minver = new SemVer("0.0.0");
      if (range.test(minver)) {
        return minver;
      }
      minver = new SemVer("0.0.0-0");
      if (range.test(minver)) {
        return minver;
      }
      minver = null;
      for (var i3 = 0; i3 < range.set.length; ++i3) {
        var comparators = range.set[i3];
        comparators.forEach(function(comparator) {
          var compver = new SemVer(comparator.semver.version);
          switch (comparator.operator) {
            case ">":
              if (compver.prerelease.length === 0) {
                compver.patch++;
              } else {
                compver.prerelease.push(0);
              }
              compver.raw = compver.format();
            /* fallthrough */
            case "":
            case ">=":
              if (!minver || gt(minver, compver)) {
                minver = compver;
              }
              break;
            case "<":
            case "<=":
              break;
            /* istanbul ignore next */
            default:
              throw new Error("Unexpected operation: " + comparator.operator);
          }
        });
      }
      if (minver && range.test(minver)) {
        return minver;
      }
      return null;
    }
    exports2.validRange = validRange;
    function validRange(range, options) {
      try {
        return new Range(range, options).range || "*";
      } catch (er) {
        return null;
      }
    }
    exports2.ltr = ltr;
    function ltr(version4, range, options) {
      return outside(version4, range, "<", options);
    }
    exports2.gtr = gtr;
    function gtr(version4, range, options) {
      return outside(version4, range, ">", options);
    }
    exports2.outside = outside;
    function outside(version4, range, hilo, options) {
      version4 = new SemVer(version4, options);
      range = new Range(range, options);
      var gtfn, ltefn, ltfn, comp, ecomp;
      switch (hilo) {
        case ">":
          gtfn = gt;
          ltefn = lte;
          ltfn = lt;
          comp = ">";
          ecomp = ">=";
          break;
        case "<":
          gtfn = lt;
          ltefn = gte;
          ltfn = gt;
          comp = "<";
          ecomp = "<=";
          break;
        default:
          throw new TypeError('Must provide a hilo val of "<" or ">"');
      }
      if (satisfies(version4, range, options)) {
        return false;
      }
      for (var i3 = 0; i3 < range.set.length; ++i3) {
        var comparators = range.set[i3];
        var high = null;
        var low = null;
        comparators.forEach(function(comparator) {
          if (comparator.semver === ANY) {
            comparator = new Comparator(">=0.0.0");
          }
          high = high || comparator;
          low = low || comparator;
          if (gtfn(comparator.semver, high.semver, options)) {
            high = comparator;
          } else if (ltfn(comparator.semver, low.semver, options)) {
            low = comparator;
          }
        });
        if (high.operator === comp || high.operator === ecomp) {
          return false;
        }
        if ((!low.operator || low.operator === comp) && ltefn(version4, low.semver)) {
          return false;
        } else if (low.operator === ecomp && ltfn(version4, low.semver)) {
          return false;
        }
      }
      return true;
    }
    exports2.prerelease = prerelease;
    function prerelease(version4, options) {
      var parsed = parse16(version4, options);
      return parsed && parsed.prerelease.length ? parsed.prerelease : null;
    }
    exports2.intersects = intersects;
    function intersects(r1, r2, options) {
      r1 = new Range(r1, options);
      r2 = new Range(r2, options);
      return r1.intersects(r2);
    }
    exports2.coerce = coerce2;
    function coerce2(version4, options) {
      if (version4 instanceof SemVer) {
        return version4;
      }
      if (typeof version4 === "number") {
        version4 = String(version4);
      }
      if (typeof version4 !== "string") {
        return null;
      }
      options = options || {};
      var match3 = null;
      if (!options.rtl) {
        match3 = version4.match(safeRe[t2.COERCE]);
      } else {
        var next;
        while ((next = safeRe[t2.COERCERTL].exec(version4)) && (!match3 || match3.index + match3[0].length !== version4.length)) {
          if (!match3 || next.index + next[0].length !== match3.index + match3[0].length) {
            match3 = next;
          }
          safeRe[t2.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
        }
        safeRe[t2.COERCERTL].lastIndex = -1;
      }
      if (match3 === null) {
        return null;
      }
      return parse16(match3[2] + "." + (match3[3] || "0") + "." + (match3[4] || "0"), options);
    }
  }
});

// ../../node_modules/check-node-version/tools.js
var require_tools = __commonJS({
  "../../node_modules/check-node-version/tools.js"(exports2, module2) {
    var { execSync } = require("child_process");
    module2.exports = {
      node: {
        getVersion: "node --version",
        getInstallInstructions(v) {
          if (hasNvm()) {
            return `To install node, run \`nvm install ${v}\``;
          }
          return `To install node, see https://nodejs.org/download/release/v${v}/`;
        }
      },
      npm: {
        getVersion: "npm --version",
        getInstallInstructions(v) {
          return `To install npm, run \`npm install -g npm@${v}\``;
        }
      },
      npx: {
        getVersion: "npx --version",
        getInstallInstructions(v) {
          return `To install npx, run \`npm install -g npx@${v}\``;
        }
      },
      yarn: {
        getVersion: "yarn --version",
        getInstallInstructions(v) {
          return `To install yarn, see https://github.com/yarnpkg/yarn/releases/tag/v${v}`;
        }
      },
      pnpm: {
        getVersion: "pnpm --version",
        getInstallInstructions(v) {
          return `To install pnpm, run \`npm install -g pnpm@${v}\``;
        }
      }
    };
    function hasNvm() {
      try {
        execSync(
          "nvm",
          { stdio: [] }
          // don't care about output
        );
      } catch (e2) {
        return false;
      }
      return true;
    }
  }
});

// ../../node_modules/check-node-version/index.js
var require_check_node_version = __commonJS({
  "../../node_modules/check-node-version/index.js"(exports2, module2) {
    "use strict";
    var { exec: exec3 } = require("child_process");
    var path45 = require("path");
    var filterObject = require_object_filter();
    var mapValues = require_map_values();
    var parallel = require_run_parallel();
    var semver2 = require_semver();
    var tools = require_tools();
    var runningOnWindows = process.platform === "win32";
    var originalPath = process.env.PATH;
    var pathSeparator = runningOnWindows ? ";" : ":";
    var localBinPath = path45.resolve("node_modules/.bin");
    var globalPath = originalPath.split(pathSeparator).filter((p5) => path45.resolve(p5) !== localBinPath).join(pathSeparator);
    module2.exports = function check2(wanted, callback) {
      if (typeof wanted === "function") {
        callback = wanted;
        wanted = null;
      }
      const options = { callback };
      options.wanted = normalizeWanted(wanted);
      options.commands = mapValues(
        Object.keys(options.wanted).length ? filterObject(tools, (_2, key2) => options.wanted[key2]) : tools,
        ({ getVersion }) => runVersionCommand.bind(null, getVersion)
      );
      if (runningOnWindows) {
        runForWindows(options);
      } else {
        run(options);
      }
    };
    function runForWindows(options) {
      exec3("chcp", (error, stdout) => {
        const finalCallback = options.callback;
        if (error) {
          finalCallback(chcpError(error, 1));
          return;
        }
        const codepage = stdout.match(/\d+/)[0];
        if (codepage === "65001" || codepage === "437") {
          return run(options);
        }
        options.callback = (...args) => exec3(`chcp ${codepage}`, (error2) => {
          if (error2) {
            finalCallback(chcpError(error2, 3));
            return;
          }
          finalCallback(...args);
        });
        exec3("chcp 65001", (error2) => {
          if (error2) {
            finalCallback(chcpError(error2, 2));
            return;
          }
          run(options);
        });
        function chcpError(error2, step) {
          switch (step) {
            case 1:
              error2.message = `[CHCP] error while getting current codepage:
${error2.message}`;
              break;
            case 2:
              error2.message = `[CHCP] error while switching to Unicode codepage:
${error2.message}`;
              break;
            case 3:
              error2.message = `
            [CHCP] error while resetting current codepage:
            ${error2.message}

            Please note that your terminal is now using the Unicode codepage.
            Therefore, codepage-dependent actions may work in an unusual manner.
            You can run \`chcp ${codepage}\` yourself in order to reset your codepage,
            or just close this terminal and work in another.
          `.trim().replace(/^ +/gm, "");
              break;
          }
          return error2;
        }
      });
    }
    function run({ commands, callback, wanted }) {
      parallel(commands, (err, versionsResult) => {
        if (err) {
          callback(err);
          return;
        }
        const versions = mapValues(versionsResult, ({ version: version4, notfound, invalid: invalid3 }, name3) => {
          const programInfo = {
            isSatisfied: true
          };
          if (version4) {
            programInfo.version = semver2(version4);
          }
          if (invalid3) {
            programInfo.invalid = invalid3;
          }
          if (notfound) {
            programInfo.notfound = notfound;
          }
          if (wanted[name3]) {
            programInfo.wanted = new semver2.Range(wanted[name3]);
            programInfo.isSatisfied = Boolean(
              programInfo.version && semver2.satisfies(programInfo.version, programInfo.wanted)
            );
          }
          return programInfo;
        });
        callback(null, {
          versions,
          isSatisfied: Object.keys(wanted).every((name3) => versions[name3].isSatisfied)
        });
      });
    }
    function normalizeWanted(wanted) {
      if (!wanted) {
        return {};
      }
      wanted = filterObject(wanted, Boolean);
      wanted = mapValues(wanted, String);
      wanted = filterObject(wanted, (_2, key2) => tools[key2]);
      return wanted;
    }
    function runVersionCommand(command, callback) {
      process.env.PATH = globalPath;
      exec3(command, (execError, stdout, stderr) => {
        const commandDescription = JSON.stringify(command);
        if (!execError) {
          const version4 = stdout.trim();
          if (semver2.valid(version4)) {
            return callback(null, {
              version: version4
            });
          } else {
            return callback(null, {
              invalid: true
            });
          }
        }
        if (toolNotFound(execError)) {
          return callback(null, {
            notfound: true
          });
        }
        let errorMessage = `Command failed: ${commandDescription}`;
        if (stderr) {
          errorMessage += `

stderr:
${stderr.toString().trim()}
`;
        }
        errorMessage += `

original error message:
${execError.message}
`;
        return callback(new Error(errorMessage));
      });
      process.env.PATH = originalPath;
    }
    function toolNotFound(execError) {
      if (runningOnWindows) {
        return execError.message.includes("is not recognized");
      }
      return execError.code === 127;
    }
  }
});

// ../../node_modules/isexe/windows.js
var require_windows = __commonJS({
  "../../node_modules/isexe/windows.js"(exports2, module2) {
    module2.exports = isexe;
    isexe.sync = sync2;
    var fs50 = require("fs");
    function checkPathExt(path45, options) {
      var pathext = options.pathExt !== void 0 ? options.pathExt : process.env.PATHEXT;
      if (!pathext) {
        return true;
      }
      pathext = pathext.split(";");
      if (pathext.indexOf("") !== -1) {
        return true;
      }
      for (var i2 = 0; i2 < pathext.length; i2++) {
        var p5 = pathext[i2].toLowerCase();
        if (p5 && path45.substr(-p5.length).toLowerCase() === p5) {
          return true;
        }
      }
      return false;
    }
    function checkStat(stat2, path45, options) {
      if (!stat2.isSymbolicLink() && !stat2.isFile()) {
        return false;
      }
      return checkPathExt(path45, options);
    }
    function isexe(path45, options, cb) {
      fs50.stat(path45, function(er, stat2) {
        cb(er, er ? false : checkStat(stat2, path45, options));
      });
    }
    function sync2(path45, options) {
      return checkStat(fs50.statSync(path45), path45, options);
    }
  }
});

// ../../node_modules/isexe/mode.js
var require_mode = __commonJS({
  "../../node_modules/isexe/mode.js"(exports2, module2) {
    module2.exports = isexe;
    isexe.sync = sync2;
    var fs50 = require("fs");
    function isexe(path45, options, cb) {
      fs50.stat(path45, function(er, stat2) {
        cb(er, er ? false : checkStat(stat2, options));
      });
    }
    function sync2(path45, options) {
      return checkStat(fs50.statSync(path45), options);
    }
    function checkStat(stat2, options) {
      return stat2.isFile() && checkMode(stat2, options);
    }
    function checkMode(stat2, options) {
      var mod = stat2.mode;
      var uid = stat2.uid;
      var gid = stat2.gid;
      var myUid = options.uid !== void 0 ? options.uid : process.getuid && process.getuid();
      var myGid = options.gid !== void 0 ? options.gid : process.getgid && process.getgid();
      var u3 = parseInt("100", 8);
      var g = parseInt("010", 8);
      var o = parseInt("001", 8);
      var ug = u3 | g;
      var ret = mod & o || mod & g && gid === myGid || mod & u3 && uid === myUid || mod & ug && myUid === 0;
      return ret;
    }
  }
});

// ../../node_modules/isexe/index.js
var require_isexe = __commonJS({
  "../../node_modules/isexe/index.js"(exports2, module2) {
    var fs50 = require("fs");
    var core4;
    if (process.platform === "win32" || global.TESTING_WINDOWS) {
      core4 = require_windows();
    } else {
      core4 = require_mode();
    }
    module2.exports = isexe;
    isexe.sync = sync2;
    function isexe(path45, options, cb) {
      if (typeof options === "function") {
        cb = options;
        options = {};
      }
      if (!cb) {
        if (typeof Promise !== "function") {
          throw new TypeError("callback not provided");
        }
        return new Promise(function(resolve9, reject) {
          isexe(path45, options || {}, function(er, is4) {
            if (er) {
              reject(er);
            } else {
              resolve9(is4);
            }
          });
        });
      }
      core4(path45, options || {}, function(er, is4) {
        if (er) {
          if (er.code === "EACCES" || options && options.ignoreErrors) {
            er = null;
            is4 = false;
          }
        }
        cb(er, is4);
      });
    }
    function sync2(path45, options) {
      try {
        return core4.sync(path45, options || {});
      } catch (er) {
        if (options && options.ignoreErrors || er.code === "EACCES") {
          return false;
        } else {
          throw er;
        }
      }
    }
  }
});

// ../../node_modules/which/lib/index.js
var require_lib15 = __commonJS({
  "../../node_modules/which/lib/index.js"(exports2, module2) {
    var isexe = require_isexe();
    var { join: join19, delimiter: delimiter2, sep: sep5, posix: posix2 } = require("path");
    var isWindows = process.platform === "win32";
    var rSlash = new RegExp(`[${posix2.sep}${sep5 === posix2.sep ? "" : sep5}]`.replace(/(\\)/g, "\\$1"));
    var rRel = new RegExp(`^\\.${rSlash.source}`);
    var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" });
    var getPathInfo = (cmd, {
      path: optPath = process.env.PATH,
      pathExt: optPathExt = process.env.PATHEXT,
      delimiter: optDelimiter = delimiter2
    }) => {
      const pathEnv = cmd.match(rSlash) ? [""] : [
        // windows always checks the cwd first
        ...isWindows ? [process.cwd()] : [],
        ...(optPath || /* istanbul ignore next: very unusual */
        "").split(optDelimiter)
      ];
      if (isWindows) {
        const pathExtExe = optPathExt || [".EXE", ".CMD", ".BAT", ".COM"].join(optDelimiter);
        const pathExt = pathExtExe.split(optDelimiter).reduce((acc, item) => {
          acc.push(item);
          acc.push(item.toLowerCase());
          return acc;
        }, []);
        if (cmd.includes(".") && pathExt[0] !== "") {
          pathExt.unshift("");
        }
        return { pathEnv, pathExt, pathExtExe };
      }
      return { pathEnv, pathExt: [""] };
    };
    var getPathPart = (raw2, cmd) => {
      const pathPart = /^".*"$/.test(raw2) ? raw2.slice(1, -1) : raw2;
      const prefix2 = !pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : "";
      return prefix2 + join19(pathPart, cmd);
    };
    var which8 = async (cmd, opt = {}) => {
      const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
      const found2 = [];
      for (const envPart of pathEnv) {
        const p5 = getPathPart(envPart, cmd);
        for (const ext2 of pathExt) {
          const withExt = p5 + ext2;
          const is4 = await isexe(withExt, { pathExt: pathExtExe, ignoreErrors: true });
          if (is4) {
            if (!opt.all) {
              return withExt;
            }
            found2.push(withExt);
          }
        }
      }
      if (opt.all && found2.length) {
        return found2;
      }
      if (opt.nothrow) {
        return null;
      }
      throw getNotFoundError(cmd);
    };
    var whichSync = (cmd, opt = {}) => {
      const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
      const found2 = [];
      for (const pathEnvPart of pathEnv) {
        const p5 = getPathPart(pathEnvPart, cmd);
        for (const ext2 of pathExt) {
          const withExt = p5 + ext2;
          const is4 = isexe.sync(withExt, { pathExt: pathExtExe, ignoreErrors: true });
          if (is4) {
            if (!opt.all) {
              return withExt;
            }
            found2.push(withExt);
          }
        }
      }
      if (opt.all && found2.length) {
        return found2;
      }
      if (opt.nothrow) {
        return null;
      }
      throw getNotFoundError(cmd);
    };
    module2.exports = which8;
    which8.sync = whichSync;
  }
});

// ../../node_modules/yocto-queue/index.js
var require_yocto_queue = __commonJS({
  "../../node_modules/yocto-queue/index.js"(exports2, module2) {
    var Node = class {
      /// value;
      /// next;
      constructor(value) {
        this.value = value;
        this.next = void 0;
      }
    };
    var Queue = class {
      // TODO: Use private class fields when targeting Node.js 12.
      // #_head;
      // #_tail;
      // #_size;
      constructor() {
        this.clear();
      }
      enqueue(value) {
        const node3 = new Node(value);
        if (this._head) {
          this._tail.next = node3;
          this._tail = node3;
        } else {
          this._head = node3;
          this._tail = node3;
        }
        this._size++;
      }
      dequeue() {
        const current2 = this._head;
        if (!current2) {
          return;
        }
        this._head = this._head.next;
        this._size--;
        return current2.value;
      }
      clear() {
        this._head = void 0;
        this._tail = void 0;
        this._size = 0;
      }
      get size() {
        return this._size;
      }
      *[Symbol.iterator]() {
        let current2 = this._head;
        while (current2) {
          yield current2.value;
          current2 = current2.next;
        }
      }
    };
    module2.exports = Queue;
  }
});

// ../myst-cli/node_modules/p-limit/index.js
var require_p_limit = __commonJS({
  "../myst-cli/node_modules/p-limit/index.js"(exports2, module2) {
    "use strict";
    var Queue = require_yocto_queue();
    var pLimit4 = (concurrency) => {
      if (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) {
        throw new TypeError("Expected `concurrency` to be a number from 1 and up");
      }
      const queue = new Queue();
      let activeCount = 0;
      const next = () => {
        activeCount--;
        if (queue.size > 0) {
          queue.dequeue()();
        }
      };
      const run = async (fn, resolve9, ...args) => {
        activeCount++;
        const result = (async () => fn(...args))();
        resolve9(result);
        try {
          await result;
        } catch {
        }
        next();
      };
      const enqueue = (fn, resolve9, ...args) => {
        queue.enqueue(run.bind(null, fn, resolve9, ...args));
        (async () => {
          await Promise.resolve();
          if (activeCount < concurrency && queue.size > 0) {
            queue.dequeue()();
          }
        })();
      };
      const generator = (fn, ...args) => new Promise((resolve9) => {
        enqueue(fn, resolve9, ...args);
      });
      Object.defineProperties(generator, {
        activeCount: {
          get: () => activeCount
        },
        pendingCount: {
          get: () => queue.size
        },
        clearQueue: {
          value: () => {
            queue.clear();
          }
        }
      });
      return generator;
    };
    module2.exports = pLimit4;
  }
});

// ../../node_modules/balanced-match/index.js
var require_balanced_match = __commonJS({
  "../../node_modules/balanced-match/index.js"(exports2, module2) {
    "use strict";
    module2.exports = balanced;
    function balanced(a2, b, str2) {
      if (a2 instanceof RegExp) a2 = maybeMatch(a2, str2);
      if (b instanceof RegExp) b = maybeMatch(b, str2);
      var r2 = range(a2, b, str2);
      return r2 && {
        start: r2[0],
        end: r2[1],
        pre: str2.slice(0, r2[0]),
        body: str2.slice(r2[0] + a2.length, r2[1]),
        post: str2.slice(r2[1] + b.length)
      };
    }
    function maybeMatch(reg, str2) {
      var m2 = str2.match(reg);
      return m2 ? m2[0] : null;
    }
    balanced.range = range;
    function range(a2, b, str2) {
      var begs, beg, left2, right2, result;
      var ai = str2.indexOf(a2);
      var bi = str2.indexOf(b, ai + 1);
      var i2 = ai;
      if (ai >= 0 && bi > 0) {
        if (a2 === b) {
          return [ai, bi];
        }
        begs = [];
        left2 = str2.length;
        while (i2 >= 0 && !result) {
          if (i2 == ai) {
            begs.push(i2);
            ai = str2.indexOf(a2, i2 + 1);
          } else if (begs.length == 1) {
            result = [begs.pop(), bi];
          } else {
            beg = begs.pop();
            if (beg < left2) {
              left2 = beg;
              right2 = bi;
            }
            bi = str2.indexOf(b, i2 + 1);
          }
          i2 = ai < bi && ai >= 0 ? ai : bi;
        }
        if (begs.length) {
          result = [left2, right2];
        }
      }
      return result;
    }
  }
});

// ../../node_modules/glob/node_modules/brace-expansion/index.js
var require_brace_expansion = __commonJS({
  "../../node_modules/glob/node_modules/brace-expansion/index.js"(exports2, module2) {
    var balanced = require_balanced_match();
    module2.exports = expandTop;
    var escSlash = "\0SLASH" + Math.random() + "\0";
    var escOpen = "\0OPEN" + Math.random() + "\0";
    var escClose = "\0CLOSE" + Math.random() + "\0";
    var escComma = "\0COMMA" + Math.random() + "\0";
    var escPeriod = "\0PERIOD" + Math.random() + "\0";
    function numeric(str2) {
      return parseInt(str2, 10) == str2 ? parseInt(str2, 10) : str2.charCodeAt(0);
    }
    function escapeBraces(str2) {
      return str2.split("\\\\").join(escSlash).split("\\{").join(escOpen).split("\\}").join(escClose).split("\\,").join(escComma).split("\\.").join(escPeriod);
    }
    function unescapeBraces(str2) {
      return str2.split(escSlash).join("\\").split(escOpen).join("{").split(escClose).join("}").split(escComma).join(",").split(escPeriod).join(".");
    }
    function parseCommaParts(str2) {
      if (!str2)
        return [""];
      var parts = [];
      var m2 = balanced("{", "}", str2);
      if (!m2)
        return str2.split(",");
      var pre2 = m2.pre;
      var body3 = m2.body;
      var post = m2.post;
      var p5 = pre2.split(",");
      p5[p5.length - 1] += "{" + body3 + "}";
      var postParts = parseCommaParts(post);
      if (post.length) {
        p5[p5.length - 1] += postParts.shift();
        p5.push.apply(p5, postParts);
      }
      parts.push.apply(parts, p5);
      return parts;
    }
    function expandTop(str2) {
      if (!str2)
        return [];
      if (str2.substr(0, 2) === "{}") {
        str2 = "\\{\\}" + str2.substr(2);
      }
      return expand2(escapeBraces(str2), true).map(unescapeBraces);
    }
    function embrace(str2) {
      return "{" + str2 + "}";
    }
    function isPadded(el) {
      return /^-?0\d/.test(el);
    }
    function lte(i2, y) {
      return i2 <= y;
    }
    function gte(i2, y) {
      return i2 >= y;
    }
    function expand2(str2, isTop) {
      var expansions = [];
      var m2 = balanced("{", "}", str2);
      if (!m2) return [str2];
      var pre2 = m2.pre;
      var post = m2.post.length ? expand2(m2.post, false) : [""];
      if (/\$$/.test(m2.pre)) {
        for (var k = 0; k < post.length; k++) {
          var expansion = pre2 + "{" + m2.body + "}" + post[k];
          expansions.push(expansion);
        }
      } else {
        var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m2.body);
        var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m2.body);
        var isSequence = isNumericSequence || isAlphaSequence;
        var isOptions = m2.body.indexOf(",") >= 0;
        if (!isSequence && !isOptions) {
          if (m2.post.match(/,(?!,).*\}/)) {
            str2 = m2.pre + "{" + m2.body + escClose + m2.post;
            return expand2(str2);
          }
          return [str2];
        }
        var n;
        if (isSequence) {
          n = m2.body.split(/\.\./);
        } else {
          n = parseCommaParts(m2.body);
          if (n.length === 1) {
            n = expand2(n[0], false).map(embrace);
            if (n.length === 1) {
              return post.map(function(p5) {
                return m2.pre + n[0] + p5;
              });
            }
          }
        }
        var N;
        if (isSequence) {
          var x2 = numeric(n[0]);
          var y = numeric(n[1]);
          var width = Math.max(n[0].length, n[1].length);
          var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1;
          var test2 = lte;
          var reverse = y < x2;
          if (reverse) {
            incr *= -1;
            test2 = gte;
          }
          var pad2 = n.some(isPadded);
          N = [];
          for (var i2 = x2; test2(i2, y); i2 += incr) {
            var c;
            if (isAlphaSequence) {
              c = String.fromCharCode(i2);
              if (c === "\\")
                c = "";
            } else {
              c = String(i2);
              if (pad2) {
                var need = width - c.length;
                if (need > 0) {
                  var z2 = new Array(need + 1).join("0");
                  if (i2 < 0)
                    c = "-" + z2 + c.slice(1);
                  else
                    c = z2 + c;
                }
              }
            }
            N.push(c);
          }
        } else {
          N = [];
          for (var j = 0; j < n.length; j++) {
            N.push.apply(N, expand2(n[j], false));
          }
        }
        for (var j = 0; j < N.length; j++) {
          for (var k = 0; k < post.length; k++) {
            var expansion = pre2 + N[j] + post[k];
            if (!isTop || isSequence || expansion)
              expansions.push(expansion);
          }
        }
      }
      return expansions;
    }
  }
});

// ../../node_modules/web-streams-polyfill/dist/ponyfill.es2018.js
var require_ponyfill_es2018 = __commonJS({
  "../../node_modules/web-streams-polyfill/dist/ponyfill.es2018.js"(exports2, module2) {
    (function(global2, factory) {
      typeof exports2 === "object" && typeof module2 !== "undefined" ? factory(exports2) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.WebStreamsPolyfill = {}));
    })(exports2, (function(exports3) {
      "use strict";
      const SymbolPolyfill = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? Symbol : (description) => `Symbol(${description})`;
      function noop5() {
        return void 0;
      }
      function getGlobals() {
        if (typeof self !== "undefined") {
          return self;
        } else if (typeof window !== "undefined") {
          return window;
        } else if (typeof global !== "undefined") {
          return global;
        }
        return void 0;
      }
      const globals = getGlobals();
      function typeIsObject(x2) {
        return typeof x2 === "object" && x2 !== null || typeof x2 === "function";
      }
      const rethrowAssertionErrorRejection = noop5;
      const originalPromise = Promise;
      const originalPromiseThen = Promise.prototype.then;
      const originalPromiseResolve = Promise.resolve.bind(originalPromise);
      const originalPromiseReject = Promise.reject.bind(originalPromise);
      function newPromise(executor) {
        return new originalPromise(executor);
      }
      function promiseResolvedWith(value) {
        return originalPromiseResolve(value);
      }
      function promiseRejectedWith(reason) {
        return originalPromiseReject(reason);
      }
      function PerformPromiseThen(promise, onFulfilled, onRejected) {
        return originalPromiseThen.call(promise, onFulfilled, onRejected);
      }
      function uponPromise(promise, onFulfilled, onRejected) {
        PerformPromiseThen(PerformPromiseThen(promise, onFulfilled, onRejected), void 0, rethrowAssertionErrorRejection);
      }
      function uponFulfillment(promise, onFulfilled) {
        uponPromise(promise, onFulfilled);
      }
      function uponRejection(promise, onRejected) {
        uponPromise(promise, void 0, onRejected);
      }
      function transformPromiseWith(promise, fulfillmentHandler, rejectionHandler) {
        return PerformPromiseThen(promise, fulfillmentHandler, rejectionHandler);
      }
      function setPromiseIsHandledToTrue(promise) {
        PerformPromiseThen(promise, void 0, rethrowAssertionErrorRejection);
      }
      const queueMicrotask2 = (() => {
        const globalQueueMicrotask = globals && globals.queueMicrotask;
        if (typeof globalQueueMicrotask === "function") {
          return globalQueueMicrotask;
        }
        const resolvedPromise = promiseResolvedWith(void 0);
        return (fn) => PerformPromiseThen(resolvedPromise, fn);
      })();
      function reflectCall(F2, V, args) {
        if (typeof F2 !== "function") {
          throw new TypeError("Argument is not a function");
        }
        return Function.prototype.apply.call(F2, V, args);
      }
      function promiseCall(F2, V, args) {
        try {
          return promiseResolvedWith(reflectCall(F2, V, args));
        } catch (value) {
          return promiseRejectedWith(value);
        }
      }
      const QUEUE_MAX_ARRAY_SIZE = 16384;
      class SimpleQueue {
        constructor() {
          this._cursor = 0;
          this._size = 0;
          this._front = {
            _elements: [],
            _next: void 0
          };
          this._back = this._front;
          this._cursor = 0;
          this._size = 0;
        }
        get length() {
          return this._size;
        }
        // For exception safety, this method is structured in order:
        // 1. Read state
        // 2. Calculate required state mutations
        // 3. Perform state mutations
        push(element5) {
          const oldBack = this._back;
          let newBack = oldBack;
          if (oldBack._elements.length === QUEUE_MAX_ARRAY_SIZE - 1) {
            newBack = {
              _elements: [],
              _next: void 0
            };
          }
          oldBack._elements.push(element5);
          if (newBack !== oldBack) {
            this._back = newBack;
            oldBack._next = newBack;
          }
          ++this._size;
        }
        // Like push(), shift() follows the read -> calculate -> mutate pattern for
        // exception safety.
        shift() {
          const oldFront = this._front;
          let newFront = oldFront;
          const oldCursor = this._cursor;
          let newCursor = oldCursor + 1;
          const elements = oldFront._elements;
          const element5 = elements[oldCursor];
          if (newCursor === QUEUE_MAX_ARRAY_SIZE) {
            newFront = oldFront._next;
            newCursor = 0;
          }
          --this._size;
          this._cursor = newCursor;
          if (oldFront !== newFront) {
            this._front = newFront;
          }
          elements[oldCursor] = void 0;
          return element5;
        }
        // The tricky thing about forEach() is that it can be called
        // re-entrantly. The queue may be mutated inside the callback. It is easy to
        // see that push() within the callback has no negative effects since the end
        // of the queue is checked for on every iteration. If shift() is called
        // repeatedly within the callback then the next iteration may return an
        // element that has been removed. In this case the callback will be called
        // with undefined values until we either "catch up" with elements that still
        // exist or reach the back of the queue.
        forEach(callback) {
          let i2 = this._cursor;
          let node3 = this._front;
          let elements = node3._elements;
          while (i2 !== elements.length || node3._next !== void 0) {
            if (i2 === elements.length) {
              node3 = node3._next;
              elements = node3._elements;
              i2 = 0;
              if (elements.length === 0) {
                break;
              }
            }
            callback(elements[i2]);
            ++i2;
          }
        }
        // Return the element that would be returned if shift() was called now,
        // without modifying the queue.
        peek() {
          const front = this._front;
          const cursor = this._cursor;
          return front._elements[cursor];
        }
      }
      function ReadableStreamReaderGenericInitialize(reader, stream3) {
        reader._ownerReadableStream = stream3;
        stream3._reader = reader;
        if (stream3._state === "readable") {
          defaultReaderClosedPromiseInitialize(reader);
        } else if (stream3._state === "closed") {
          defaultReaderClosedPromiseInitializeAsResolved(reader);
        } else {
          defaultReaderClosedPromiseInitializeAsRejected(reader, stream3._storedError);
        }
      }
      function ReadableStreamReaderGenericCancel(reader, reason) {
        const stream3 = reader._ownerReadableStream;
        return ReadableStreamCancel(stream3, reason);
      }
      function ReadableStreamReaderGenericRelease(reader) {
        if (reader._ownerReadableStream._state === "readable") {
          defaultReaderClosedPromiseReject(reader, new TypeError(`Reader was released and can no longer be used to monitor the stream's closedness`));
        } else {
          defaultReaderClosedPromiseResetToRejected(reader, new TypeError(`Reader was released and can no longer be used to monitor the stream's closedness`));
        }
        reader._ownerReadableStream._reader = void 0;
        reader._ownerReadableStream = void 0;
      }
      function readerLockException(name3) {
        return new TypeError("Cannot " + name3 + " a stream using a released reader");
      }
      function defaultReaderClosedPromiseInitialize(reader) {
        reader._closedPromise = newPromise((resolve9, reject) => {
          reader._closedPromise_resolve = resolve9;
          reader._closedPromise_reject = reject;
        });
      }
      function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {
        defaultReaderClosedPromiseInitialize(reader);
        defaultReaderClosedPromiseReject(reader, reason);
      }
      function defaultReaderClosedPromiseInitializeAsResolved(reader) {
        defaultReaderClosedPromiseInitialize(reader);
        defaultReaderClosedPromiseResolve(reader);
      }
      function defaultReaderClosedPromiseReject(reader, reason) {
        if (reader._closedPromise_reject === void 0) {
          return;
        }
        setPromiseIsHandledToTrue(reader._closedPromise);
        reader._closedPromise_reject(reason);
        reader._closedPromise_resolve = void 0;
        reader._closedPromise_reject = void 0;
      }
      function defaultReaderClosedPromiseResetToRejected(reader, reason) {
        defaultReaderClosedPromiseInitializeAsRejected(reader, reason);
      }
      function defaultReaderClosedPromiseResolve(reader) {
        if (reader._closedPromise_resolve === void 0) {
          return;
        }
        reader._closedPromise_resolve(void 0);
        reader._closedPromise_resolve = void 0;
        reader._closedPromise_reject = void 0;
      }
      const AbortSteps = SymbolPolyfill("[[AbortSteps]]");
      const ErrorSteps = SymbolPolyfill("[[ErrorSteps]]");
      const CancelSteps = SymbolPolyfill("[[CancelSteps]]");
      const PullSteps = SymbolPolyfill("[[PullSteps]]");
      const NumberIsFinite = Number.isFinite || function(x2) {
        return typeof x2 === "number" && isFinite(x2);
      };
      const MathTrunc = Math.trunc || function(v) {
        return v < 0 ? Math.ceil(v) : Math.floor(v);
      };
      function isDictionary(x2) {
        return typeof x2 === "object" || typeof x2 === "function";
      }
      function assertDictionary(obj, context) {
        if (obj !== void 0 && !isDictionary(obj)) {
          throw new TypeError(`${context} is not an object.`);
        }
      }
      function assertFunction2(x2, context) {
        if (typeof x2 !== "function") {
          throw new TypeError(`${context} is not a function.`);
        }
      }
      function isObject2(x2) {
        return typeof x2 === "object" && x2 !== null || typeof x2 === "function";
      }
      function assertObject(x2, context) {
        if (!isObject2(x2)) {
          throw new TypeError(`${context} is not an object.`);
        }
      }
      function assertRequiredArgument(x2, position6, context) {
        if (x2 === void 0) {
          throw new TypeError(`Parameter ${position6} is required in '${context}'.`);
        }
      }
      function assertRequiredField(x2, field, context) {
        if (x2 === void 0) {
          throw new TypeError(`${field} is required in '${context}'.`);
        }
      }
      function convertUnrestrictedDouble(value) {
        return Number(value);
      }
      function censorNegativeZero(x2) {
        return x2 === 0 ? 0 : x2;
      }
      function integerPart(x2) {
        return censorNegativeZero(MathTrunc(x2));
      }
      function convertUnsignedLongLongWithEnforceRange(value, context) {
        const lowerBound = 0;
        const upperBound = Number.MAX_SAFE_INTEGER;
        let x2 = Number(value);
        x2 = censorNegativeZero(x2);
        if (!NumberIsFinite(x2)) {
          throw new TypeError(`${context} is not a finite number`);
        }
        x2 = integerPart(x2);
        if (x2 < lowerBound || x2 > upperBound) {
          throw new TypeError(`${context} is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`);
        }
        if (!NumberIsFinite(x2) || x2 === 0) {
          return 0;
        }
        return x2;
      }
      function assertReadableStream(x2, context) {
        if (!IsReadableStream(x2)) {
          throw new TypeError(`${context} is not a ReadableStream.`);
        }
      }
      function AcquireReadableStreamDefaultReader(stream3) {
        return new ReadableStreamDefaultReader(stream3);
      }
      function ReadableStreamAddReadRequest(stream3, readRequest) {
        stream3._reader._readRequests.push(readRequest);
      }
      function ReadableStreamFulfillReadRequest(stream3, chunk, done) {
        const reader = stream3._reader;
        const readRequest = reader._readRequests.shift();
        if (done) {
          readRequest._closeSteps();
        } else {
          readRequest._chunkSteps(chunk);
        }
      }
      function ReadableStreamGetNumReadRequests(stream3) {
        return stream3._reader._readRequests.length;
      }
      function ReadableStreamHasDefaultReader(stream3) {
        const reader = stream3._reader;
        if (reader === void 0) {
          return false;
        }
        if (!IsReadableStreamDefaultReader(reader)) {
          return false;
        }
        return true;
      }
      class ReadableStreamDefaultReader {
        constructor(stream3) {
          assertRequiredArgument(stream3, 1, "ReadableStreamDefaultReader");
          assertReadableStream(stream3, "First parameter");
          if (IsReadableStreamLocked(stream3)) {
            throw new TypeError("This stream has already been locked for exclusive reading by another reader");
          }
          ReadableStreamReaderGenericInitialize(this, stream3);
          this._readRequests = new SimpleQueue();
        }
        /**
         * Returns a promise that will be fulfilled when the stream becomes closed,
         * or rejected if the stream ever errors or the reader's lock is released before the stream finishes closing.
         */
        get closed() {
          if (!IsReadableStreamDefaultReader(this)) {
            return promiseRejectedWith(defaultReaderBrandCheckException("closed"));
          }
          return this._closedPromise;
        }
        /**
         * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}.
         */
        cancel(reason = void 0) {
          if (!IsReadableStreamDefaultReader(this)) {
            return promiseRejectedWith(defaultReaderBrandCheckException("cancel"));
          }
          if (this._ownerReadableStream === void 0) {
            return promiseRejectedWith(readerLockException("cancel"));
          }
          return ReadableStreamReaderGenericCancel(this, reason);
        }
        /**
         * Returns a promise that allows access to the next chunk from the stream's internal queue, if available.
         *
         * If reading a chunk causes the queue to become empty, more data will be pulled from the underlying source.
         */
        read() {
          if (!IsReadableStreamDefaultReader(this)) {
            return promiseRejectedWith(defaultReaderBrandCheckException("read"));
          }
          if (this._ownerReadableStream === void 0) {
            return promiseRejectedWith(readerLockException("read from"));
          }
          let resolvePromise;
          let rejectPromise;
          const promise = newPromise((resolve9, reject) => {
            resolvePromise = resolve9;
            rejectPromise = reject;
          });
          const readRequest = {
            _chunkSteps: (chunk) => resolvePromise({ value: chunk, done: false }),
            _closeSteps: () => resolvePromise({ value: void 0, done: true }),
            _errorSteps: (e2) => rejectPromise(e2)
          };
          ReadableStreamDefaultReaderRead(this, readRequest);
          return promise;
        }
        /**
         * Releases the reader's lock on the corresponding stream. After the lock is released, the reader is no longer active.
         * If the associated stream is errored when the lock is released, the reader will appear errored in the same way
         * from now on; otherwise, the reader will appear closed.
         *
         * A reader's lock cannot be released while it still has a pending read request, i.e., if a promise returned by
         * the reader's {@link ReadableStreamDefaultReader.read | read()} method has not yet been settled. Attempting to
         * do so will throw a `TypeError` and leave the reader locked to the stream.
         */
        releaseLock() {
          if (!IsReadableStreamDefaultReader(this)) {
            throw defaultReaderBrandCheckException("releaseLock");
          }
          if (this._ownerReadableStream === void 0) {
            return;
          }
          if (this._readRequests.length > 0) {
            throw new TypeError("Tried to release a reader lock when that reader has pending read() calls un-settled");
          }
          ReadableStreamReaderGenericRelease(this);
        }
      }
      Object.defineProperties(ReadableStreamDefaultReader.prototype, {
        cancel: { enumerable: true },
        read: { enumerable: true },
        releaseLock: { enumerable: true },
        closed: { enumerable: true }
      });
      if (typeof SymbolPolyfill.toStringTag === "symbol") {
        Object.defineProperty(ReadableStreamDefaultReader.prototype, SymbolPolyfill.toStringTag, {
          value: "ReadableStreamDefaultReader",
          configurable: true
        });
      }
      function IsReadableStreamDefaultReader(x2) {
        if (!typeIsObject(x2)) {
          return false;
        }
        if (!Object.prototype.hasOwnProperty.call(x2, "_readRequests")) {
          return false;
        }
        return x2 instanceof ReadableStreamDefaultReader;
      }
      function ReadableStreamDefaultReaderRead(reader, readRequest) {
        const stream3 = reader._ownerReadableStream;
        stream3._disturbed = true;
        if (stream3._state === "closed") {
          readRequest._closeSteps();
        } else if (stream3._state === "errored") {
          readRequest._errorSteps(stream3._storedError);
        } else {
          stream3._readableStreamController[PullSteps](readRequest);
        }
      }
      function defaultReaderBrandCheckException(name3) {
        return new TypeError(`ReadableStreamDefaultReader.prototype.${name3} can only be used on a ReadableStreamDefaultReader`);
      }
      const AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () {
      }).prototype);
      class ReadableStreamAsyncIteratorImpl {
        constructor(reader, preventCancel) {
          this._ongoingPromise = void 0;
          this._isFinished = false;
          this._reader = reader;
          this._preventCancel = preventCancel;
        }
        next() {
          const nextSteps = () => this._nextSteps();
          this._ongoingPromise = this._ongoingPromise ? transformPromiseWith(this._ongoingPromise, nextSteps, nextSteps) : nextSteps();
          return this._ongoingPromise;
        }
        return(value) {
          const returnSteps = () => this._returnSteps(value);
          return this._ongoingPromise ? transformPromiseWith(this._ongoingPromise, returnSteps, returnSteps) : returnSteps();
        }
        _nextSteps() {
          if (this._isFinished) {
            return Promise.resolve({ value: void 0, done: true });
          }
          const reader = this._reader;
          if (reader._ownerReadableStream === void 0) {
            return promiseRejectedWith(readerLockException("iterate"));
          }
          let resolvePromise;
          let rejectPromise;
          const promise = newPromise((resolve9, reject) => {
            resolvePromise = resolve9;
            rejectPromise = reject;
          });
          const readRequest = {
            _chunkSteps: (chunk) => {
              this._ongoingPromise = void 0;
              queueMicrotask2(() => resolvePromise({ value: chunk, done: false }));
            },
            _closeSteps: () => {
              this._ongoingPromise = void 0;
              this._isFinished = true;
              ReadableStreamReaderGenericRelease(reader);
              resolvePromise({ value: void 0, done: true });
            },
            _errorSteps: (reason) => {
              this._ongoingPromise = void 0;
              this._isFinished = true;
              ReadableStreamReaderGenericRelease(reader);
              rejectPromise(reason);
            }
          };
          ReadableStreamDefaultReaderRead(reader, readRequest);
          return promise;
        }
        _returnSteps(value) {
          if (this._isFinished) {
            return Promise.resolve({ value, done: true });
          }
          this._isFinished = true;
          const reader = this._reader;
          if (reader._ownerReadableStream === void 0) {
            return promiseRejectedWith(readerLockException("finish iterating"));
          }
          if (!this._preventCancel) {
            const result = ReadableStreamReaderGenericCancel(reader, value);
            ReadableStreamReaderGenericRelease(reader);
            return transformPromiseWith(result, () => ({ value, done: true }));
          }
          ReadableStreamReaderGenericRelease(reader);
          return promiseResolvedWith({ value, done: true });
        }
      }
      const ReadableStreamAsyncIteratorPrototype = {
        next() {
          if (!IsReadableStreamAsyncIterator(this)) {
            return promiseRejectedWith(streamAsyncIteratorBrandCheckException("next"));
          }
          return this._asyncIteratorImpl.next();
        },
        return(value) {
          if (!IsReadableStreamAsyncIterator(this)) {
            return promiseRejectedWith(streamAsyncIteratorBrandCheckException("return"));
          }
          return this._asyncIteratorImpl.return(value);
        }
      };
      if (AsyncIteratorPrototype !== void 0) {
        Object.setPrototypeOf(ReadableStreamAsyncIteratorPrototype, AsyncIteratorPrototype);
      }
      function AcquireReadableStreamAsyncIterator(stream3, preventCancel) {
        const reader = AcquireReadableStreamDefaultReader(stream3);
        const impl = new ReadableStreamAsyncIteratorImpl(reader, preventCancel);
        const iterator = Object.create(ReadableStreamAsyncIteratorPrototype);
        iterator._asyncIteratorImpl = impl;
        return iterator;
      }
      function IsReadableStreamAsyncIterator(x2) {
        if (!typeIsObject(x2)) {
          return false;
        }
        if (!Object.prototype.hasOwnProperty.call(x2, "_asyncIteratorImpl")) {
          return false;
        }
        try {
          return x2._asyncIteratorImpl instanceof ReadableStreamAsyncIteratorImpl;
        } catch (_a6) {
          return false;
        }
      }
      function streamAsyncIteratorBrandCheckException(name3) {
        return new TypeError(`ReadableStreamAsyncIterator.${name3} can only be used on a ReadableSteamAsyncIterator`);
      }
      const NumberIsNaN = Number.isNaN || function(x2) {
        return x2 !== x2;
      };
      function CreateArrayFromList(elements) {
        return elements.slice();
      }
      function CopyDataBlockBytes(dest, destOffset, src, srcOffset, n) {
        new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);
      }
      function TransferArrayBuffer(O) {
        return O;
      }
      function IsDetachedBuffer(O) {
        return false;
      }
      function ArrayBufferSlice(buffer2, begin, end) {
        if (buffer2.slice) {
          return buffer2.slice(begin, end);
        }
        const length = end - begin;
        const slice2 = new ArrayBuffer(length);
        CopyDataBlockBytes(slice2, 0, buffer2, begin, length);
        return slice2;
      }
      function IsNonNegativeNumber(v) {
        if (typeof v !== "number") {
          return false;
        }
        if (NumberIsNaN(v)) {
          return false;
        }
        if (v < 0) {
          return false;
        }
        return true;
      }
      function CloneAsUint8Array(O) {
        const buffer2 = ArrayBufferSlice(O.buffer, O.byteOffset, O.byteOffset + O.byteLength);
        return new Uint8Array(buffer2);
      }
      function DequeueValue(container4) {
        const pair = container4._queue.shift();
        container4._queueTotalSize -= pair.size;
        if (container4._queueTotalSize < 0) {
          container4._queueTotalSize = 0;
        }
        return pair.value;
      }
      function EnqueueValueWithSize(container4, value, size) {
        if (!IsNonNegativeNumber(size) || size === Infinity) {
          throw new RangeError("Size must be a finite, non-NaN, non-negative number.");
        }
        container4._queue.push({ value, size });
        container4._queueTotalSize += size;
      }
      function PeekQueueValue(container4) {
        const pair = container4._queue.peek();
        return pair.value;
      }
      function ResetQueue(container4) {
        container4._queue = new SimpleQueue();
        container4._queueTotalSize = 0;
      }
      class ReadableStreamBYOBRequest {
        constructor() {
          throw new TypeError("Illegal constructor");
        }
        /**
         * Returns the view for writing in to, or `null` if the BYOB request has already been responded to.
         */
        get view() {
          if (!IsReadableStreamBYOBRequest(this)) {
            throw byobRequestBrandCheckException("view");
          }
          return this._view;
        }
        respond(bytesWritten) {
          if (!IsReadableStreamBYOBRequest(this)) {
            throw byobRequestBrandCheckException("respond");
          }
          assertRequiredArgument(bytesWritten, 1, "respond");
          bytesWritten = convertUnsignedLongLongWithEnforceRange(bytesWritten, "First parameter");
          if (this._associatedReadableByteStreamController === void 0) {
            throw new TypeError("This BYOB request has been invalidated");
          }
          if (IsDetachedBuffer(this._view.buffer)) ;
          ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);
        }
        respondWithNewView(view) {
          if (!IsReadableStreamBYOBRequest(this)) {
            throw byobRequestBrandCheckException("respondWithNewView");
          }
          assertRequiredArgument(view, 1, "respondWithNewView");
          if (!ArrayBuffer.isView(view)) {
            throw new TypeError("You can only respond with array buffer views");
          }
          if (this._associatedReadableByteStreamController === void 0) {
            throw new TypeError("This BYOB request has been invalidated");
          }
          if (IsDetachedBuffer(view.buffer)) ;
          ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);
        }
      }
      Object.defineProperties(ReadableStreamBYOBRequest.prototype, {
        respond: { enumerable: true },
        respondWithNewView: { enumerable: true },
        view: { enumerable: true }
      });
      if (typeof SymbolPolyfill.toStringTag === "symbol") {
        Object.defineProperty(ReadableStreamBYOBRequest.prototype, SymbolPolyfill.toStringTag, {
          value: "ReadableStreamBYOBRequest",
          configurable: true
        });
      }
      class ReadableByteStreamController {
        constructor() {
          throw new TypeError("Illegal constructor");
        }
        /**
         * Returns the current BYOB pull request, or `null` if there isn't one.
         */
        get byobRequest() {
          if (!IsReadableByteStreamController(this)) {
            throw byteStreamControllerBrandCheckException("byobRequest");
          }
          return ReadableByteStreamControllerGetBYOBRequest(this);
        }
        /**
         * Returns the desired size to fill the controlled stream's internal queue. It can be negative, if the queue is
         * over-full. An underlying byte source ought to use this information to determine when and how to apply backpressure.
         */
        get desiredSize() {
          if (!IsReadableByteStreamController(this)) {
            throw byteStreamControllerBrandCheckException("desiredSize");
          }
          return ReadableByteStreamControllerGetDesiredSize(this);
        }
        /**
         * Closes the controlled readable stream. Consumers will still be able to read any previously-enqueued chunks from
         * the stream, but once those are read, the stream will become closed.
         */
        close() {
          if (!IsReadableByteStreamController(this)) {
            throw byteStreamControllerBrandCheckException("close");
          }
          if (this._closeRequested) {
            throw new TypeError("The stream has already been closed; do not close it again!");
          }
          const state = this._controlledReadableByteStream._state;
          if (state !== "readable") {
            throw new TypeError(`The stream (in ${state} state) is not in the readable state and cannot be closed`);
          }
          ReadableByteStreamControllerClose(this);
        }
        enqueue(chunk) {
          if (!IsReadableByteStreamController(this)) {
            throw byteStreamControllerBrandCheckException("enqueue");
          }
          assertRequiredArgument(chunk, 1, "enqueue");
          if (!ArrayBuffer.isView(chunk)) {
            throw new TypeError("chunk must be an array buffer view");
          }
          if (chunk.byteLength === 0) {
            throw new TypeError("chunk must have non-zero byteLength");
          }
          if (chunk.buffer.byteLength === 0) {
            throw new TypeError(`chunk's buffer must have non-zero byteLength`);
          }
          if (this._closeRequested) {
            throw new TypeError("stream is closed or draining");
          }
          const state = this._controlledReadableByteStream._state;
          if (state !== "readable") {
            throw new TypeError(`The stream (in ${state} state) is not in the readable state and cannot be enqueued to`);
          }
          ReadableByteStreamControllerEnqueue(this, chunk);
        }
        /**
         * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`.
         */
        error(e2 = void 0) {
          if (!IsReadableByteStreamController(this)) {
            throw byteStreamControllerBrandCheckException("error");
          }
          ReadableByteStreamControllerError(this, e2);
        }
        /** @internal */
        [CancelSteps](reason) {
          ReadableByteStreamControllerClearPendingPullIntos(this);
          ResetQueue(this);
          const result = this._cancelAlgorithm(reason);
          ReadableByteStreamControllerClearAlgorithms(this);
          return result;
        }
        /** @internal */
        [PullSteps](readRequest) {
          const stream3 = this._controlledReadableByteStream;
          if (this._queueTotalSize > 0) {
            const entry = this._queue.shift();
            this._queueTotalSize -= entry.byteLength;
            ReadableByteStreamControllerHandleQueueDrain(this);
            const view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);
            readRequest._chunkSteps(view);
            return;
          }
          const autoAllocateChunkSize = this._autoAllocateChunkSize;
          if (autoAllocateChunkSize !== void 0) {
            let buffer2;
            try {
              buffer2 = new ArrayBuffer(autoAllocateChunkSize);
            } catch (bufferE) {
              readRequest._errorSteps(bufferE);
              return;
            }
            const pullIntoDescriptor = {
              buffer: buffer2,
              bufferByteLength: autoAllocateChunkSize,
              byteOffset: 0,
              byteLength: autoAllocateChunkSize,
              bytesFilled: 0,
              elementSize: 1,
              viewConstructor: Uint8Array,
              readerType: "default"
            };
            this._pendingPullIntos.push(pullIntoDescriptor);
          }
          ReadableStreamAddReadRequest(stream3, readRequest);
          ReadableByteStreamControllerCallPullIfNeeded(this);
        }
      }
      Object.defineProperties(ReadableByteStreamController.prototype, {
        close: { enumerable: true },
        enqueue: { enumerable: true },
        error: { enumerable: true },
        byobRequest: { enumerable: true },
        desiredSize: { enumerable: true }
      });
      if (typeof SymbolPolyfill.toStringTag === "symbol") {
        Object.defineProperty(ReadableByteStreamController.prototype, SymbolPolyfill.toStringTag, {
          value: "ReadableByteStreamController",
          configurable: true
        });
      }
      function IsReadableByteStreamController(x2) {
        if (!typeIsObject(x2)) {
          return false;
        }
        if (!Object.prototype.hasOwnProperty.call(x2, "_controlledReadableByteStream")) {
          return false;
        }
        return x2 instanceof ReadableByteStreamController;
      }
      function IsReadableStreamBYOBRequest(x2) {
        if (!typeIsObject(x2)) {
          return false;
        }
        if (!Object.prototype.hasOwnProperty.call(x2, "_associatedReadableByteStreamController")) {
          return false;
        }
        return x2 instanceof ReadableStreamBYOBRequest;
      }
      function ReadableByteStreamControllerCallPullIfNeeded(controller) {
        const shouldPull = ReadableByteStreamControllerShouldCallPull(controller);
        if (!shouldPull) {
          return;
        }
        if (controller._pulling) {
          controller._pullAgain = true;
          return;
        }
        controller._pulling = true;
        const pullPromise = controller._pullAlgorithm();
        uponPromise(pullPromise, () => {
          controller._pulling = false;
          if (controller._pullAgain) {
            controller._pullAgain = false;
            ReadableByteStreamControllerCallPullIfNeeded(controller);
          }
        }, (e2) => {
          ReadableByteStreamControllerError(controller, e2);
        });
      }
      function ReadableByteStreamControllerClearPendingPullIntos(controller) {
        ReadableByteStreamControllerInvalidateBYOBRequest(controller);
        controller._pendingPullIntos = new SimpleQueue();
      }
      function ReadableByteStreamControllerCommitPullIntoDescriptor(stream3, pullIntoDescriptor) {
        let done = false;
        if (stream3._state === "closed") {
          done = true;
        }
        const filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);
        if (pullIntoDescriptor.readerType === "default") {
          ReadableStreamFulfillReadRequest(stream3, filledView, done);
        } else {
          ReadableStreamFulfillReadIntoRequest(stream3, filledView, done);
        }
      }
      function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {
        const bytesFilled = pullIntoDescriptor.bytesFilled;
        const elementSize = pullIntoDescriptor.elementSize;
        return new pullIntoDescriptor.viewConstructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);
      }
      function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer2, byteOffset, byteLength2) {
        controller._queue.push({ buffer: buffer2, byteOffset, byteLength: byteLength2 });
        controller._queueTotalSize += byteLength2;
      }
      function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {
        const elementSize = pullIntoDescriptor.elementSize;
        const currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;
        const maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);
        const maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;
        const maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;
        let totalBytesToCopyRemaining = maxBytesToCopy;
        let ready = false;
        if (maxAlignedBytes > currentAlignedBytes) {
          totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;
          ready = true;
        }
        const queue = controller._queue;
        while (totalBytesToCopyRemaining > 0) {
          const headOfQueue = queue.peek();
          const bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);
          const destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;
          CopyDataBlockBytes(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);
          if (headOfQueue.byteLength === bytesToCopy) {
            queue.shift();
          } else {
            headOfQueue.byteOffset += bytesToCopy;
            headOfQueue.byteLength -= bytesToCopy;
          }
          controller._queueTotalSize -= bytesToCopy;
          ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);
          totalBytesToCopyRemaining -= bytesToCopy;
        }
        return ready;
      }
      function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {
        pullIntoDescriptor.bytesFilled += size;
      }
      function ReadableByteStreamControllerHandleQueueDrain(controller) {
        if (controller._queueTotalSize === 0 && controller._closeRequested) {
          ReadableByteStreamControllerClearAlgorithms(controller);
          ReadableStreamClose(controller._controlledReadableByteStream);
        } else {
          ReadableByteStreamControllerCallPullIfNeeded(controller);
        }
      }
      function ReadableByteStreamControllerInvalidateBYOBRequest(controller) {
        if (controller._byobRequest === null) {
          return;
        }
        controller._byobRequest._associatedReadableByteStreamController = void 0;
        controller._byobRequest._view = null;
        controller._byobRequest = null;
      }
      function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {
        while (controller._pendingPullIntos.length > 0) {
          if (controller._queueTotalSize === 0) {
            return;
          }
          const pullIntoDescriptor = controller._pendingPullIntos.peek();
          if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) {
            ReadableByteStreamControllerShiftPendingPullInto(controller);
            ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);
          }
        }
      }
      function ReadableByteStreamControllerPullInto(controller, view, readIntoRequest) {
        const stream3 = controller._controlledReadableByteStream;
        let elementSize = 1;
        if (view.constructor !== DataView) {
          elementSize = view.constructor.BYTES_PER_ELEMENT;
        }
        const ctor = view.constructor;
        const buffer2 = TransferArrayBuffer(view.buffer);
        const pullIntoDescriptor = {
          buffer: buffer2,
          bufferByteLength: buffer2.byteLength,
          byteOffset: view.byteOffset,
          byteLength: view.byteLength,
          bytesFilled: 0,
          elementSize,
          viewConstructor: ctor,
          readerType: "byob"
        };
        if (controller._pendingPullIntos.length > 0) {
          controller._pendingPullIntos.push(pullIntoDescriptor);
          ReadableStreamAddReadIntoRequest(stream3, readIntoRequest);
          return;
        }
        if (stream3._state === "closed") {
          const emptyView = new ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);
          readIntoRequest._closeSteps(emptyView);
          return;
        }
        if (controller._queueTotalSize > 0) {
          if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) {
            const filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);
            ReadableByteStreamControllerHandleQueueDrain(controller);
            readIntoRequest._chunkSteps(filledView);
            return;
          }
          if (controller._closeRequested) {
            const e2 = new TypeError("Insufficient bytes to fill elements in the given buffer");
            ReadableByteStreamControllerError(controller, e2);
            readIntoRequest._errorSteps(e2);
            return;
          }
        }
        controller._pendingPullIntos.push(pullIntoDescriptor);
        ReadableStreamAddReadIntoRequest(stream3, readIntoRequest);
        ReadableByteStreamControllerCallPullIfNeeded(controller);
      }
      function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {
        const stream3 = controller._controlledReadableByteStream;
        if (ReadableStreamHasBYOBReader(stream3)) {
          while (ReadableStreamGetNumReadIntoRequests(stream3) > 0) {
            const pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);
            ReadableByteStreamControllerCommitPullIntoDescriptor(stream3, pullIntoDescriptor);
          }
        }
      }
      function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {
        ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);
        if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {
          return;
        }
        ReadableByteStreamControllerShiftPendingPullInto(controller);
        const remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;
        if (remainderSize > 0) {
          const end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;
          const remainder = ArrayBufferSlice(pullIntoDescriptor.buffer, end - remainderSize, end);
          ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);
        }
        pullIntoDescriptor.bytesFilled -= remainderSize;
        ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);
        ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);
      }
      function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {
        const firstDescriptor = controller._pendingPullIntos.peek();
        ReadableByteStreamControllerInvalidateBYOBRequest(controller);
        const state = controller._controlledReadableByteStream._state;
        if (state === "closed") {
          ReadableByteStreamControllerRespondInClosedState(controller);
        } else {
          ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);
        }
        ReadableByteStreamControllerCallPullIfNeeded(controller);
      }
      function ReadableByteStreamControllerShiftPendingPullInto(controller) {
        const descriptor = controller._pendingPullIntos.shift();
        return descriptor;
      }
      function ReadableByteStreamControllerShouldCallPull(controller) {
        const stream3 = controller._controlledReadableByteStream;
        if (stream3._state !== "readable") {
          return false;
        }
        if (controller._closeRequested) {
          return false;
        }
        if (!controller._started) {
          return false;
        }
        if (ReadableStreamHasDefaultReader(stream3) && ReadableStreamGetNumReadRequests(stream3) > 0) {
          return true;
        }
        if (ReadableStreamHasBYOBReader(stream3) && ReadableStreamGetNumReadIntoRequests(stream3) > 0) {
          return true;
        }
        const desiredSize = ReadableByteStreamControllerGetDesiredSize(controller);
        if (desiredSize > 0) {
          return true;
        }
        return false;
      }
      function ReadableByteStreamControllerClearAlgorithms(controller) {
        controller._pullAlgorithm = void 0;
        controller._cancelAlgorithm = void 0;
      }
      function ReadableByteStreamControllerClose(controller) {
        const stream3 = controller._controlledReadableByteStream;
        if (controller._closeRequested || stream3._state !== "readable") {
          return;
        }
        if (controller._queueTotalSize > 0) {
          controller._closeRequested = true;
          return;
        }
        if (controller._pendingPullIntos.length > 0) {
          const firstPendingPullInto = controller._pendingPullIntos.peek();
          if (firstPendingPullInto.bytesFilled > 0) {
            const e2 = new TypeError("Insufficient bytes to fill elements in the given buffer");
            ReadableByteStreamControllerError(controller, e2);
            throw e2;
          }
        }
        ReadableByteStreamControllerClearAlgorithms(controller);
        ReadableStreamClose(stream3);
      }
      function ReadableByteStreamControllerEnqueue(controller, chunk) {
        const stream3 = controller._controlledReadableByteStream;
        if (controller._closeRequested || stream3._state !== "readable") {
          return;
        }
        const buffer2 = chunk.buffer;
        const byteOffset = chunk.byteOffset;
        const byteLength2 = chunk.byteLength;
        const transferredBuffer = TransferArrayBuffer(buffer2);
        if (controller._pendingPullIntos.length > 0) {
          const firstPendingPullInto = controller._pendingPullIntos.peek();
          if (IsDetachedBuffer(firstPendingPullInto.buffer)) ;
          firstPendingPullInto.buffer = TransferArrayBuffer(firstPendingPullInto.buffer);
        }
        ReadableByteStreamControllerInvalidateBYOBRequest(controller);
        if (ReadableStreamHasDefaultReader(stream3)) {
          if (ReadableStreamGetNumReadRequests(stream3) === 0) {
            ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength2);
          } else {
            if (controller._pendingPullIntos.length > 0) {
              ReadableByteStreamControllerShiftPendingPullInto(controller);
            }
            const transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength2);
            ReadableStreamFulfillReadRequest(stream3, transferredView, false);
          }
        } else if (ReadableStreamHasBYOBReader(stream3)) {
          ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength2);
          ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);
        } else {
          ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength2);
        }
        ReadableByteStreamControllerCallPullIfNeeded(controller);
      }
      function ReadableByteStreamControllerError(controller, e2) {
        const stream3 = controller._controlledReadableByteStream;
        if (stream3._state !== "readable") {
          return;
        }
        ReadableByteStreamControllerClearPendingPullIntos(controller);
        ResetQueue(controller);
        ReadableByteStreamControllerClearAlgorithms(controller);
        ReadableStreamError(stream3, e2);
      }
      function ReadableByteStreamControllerGetBYOBRequest(controller) {
        if (controller._byobRequest === null && controller._pendingPullIntos.length > 0) {
          const firstDescriptor = controller._pendingPullIntos.peek();
          const view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);
          const byobRequest = Object.create(ReadableStreamBYOBRequest.prototype);
          SetUpReadableStreamBYOBRequest(byobRequest, controller, view);
          controller._byobRequest = byobRequest;
        }
        return controller._byobRequest;
      }
      function ReadableByteStreamControllerGetDesiredSize(controller) {
        const state = controller._controlledReadableByteStream._state;
        if (state === "errored") {
          return null;
        }
        if (state === "closed") {
          return 0;
        }
        return controller._strategyHWM - controller._queueTotalSize;
      }
      function ReadableByteStreamControllerRespond(controller, bytesWritten) {
        const firstDescriptor = controller._pendingPullIntos.peek();
        const state = controller._controlledReadableByteStream._state;
        if (state === "closed") {
          if (bytesWritten !== 0) {
            throw new TypeError("bytesWritten must be 0 when calling respond() on a closed stream");
          }
        } else {
          if (bytesWritten === 0) {
            throw new TypeError("bytesWritten must be greater than 0 when calling respond() on a readable stream");
          }
          if (firstDescriptor.bytesFilled + bytesWritten > firstDescriptor.byteLength) {
            throw new RangeError("bytesWritten out of range");
          }
        }
        firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);
        ReadableByteStreamControllerRespondInternal(controller, bytesWritten);
      }
      function ReadableByteStreamControllerRespondWithNewView(controller, view) {
        const firstDescriptor = controller._pendingPullIntos.peek();
        const state = controller._controlledReadableByteStream._state;
        if (state === "closed") {
          if (view.byteLength !== 0) {
            throw new TypeError("The view's length must be 0 when calling respondWithNewView() on a closed stream");
          }
        } else {
          if (view.byteLength === 0) {
            throw new TypeError("The view's length must be greater than 0 when calling respondWithNewView() on a readable stream");
          }
        }
        if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {
          throw new RangeError("The region specified by view does not match byobRequest");
        }
        if (firstDescriptor.bufferByteLength !== view.buffer.byteLength) {
          throw new RangeError("The buffer of view has different capacity than byobRequest");
        }
        if (firstDescriptor.bytesFilled + view.byteLength > firstDescriptor.byteLength) {
          throw new RangeError("The region specified by view is larger than byobRequest");
        }
        const viewByteLength = view.byteLength;
        firstDescriptor.buffer = TransferArrayBuffer(view.buffer);
        ReadableByteStreamControllerRespondInternal(controller, viewByteLength);
      }
      function SetUpReadableByteStreamController(stream3, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize) {
        controller._controlledReadableByteStream = stream3;
        controller._pullAgain = false;
        controller._pulling = false;
        controller._byobRequest = null;
        controller._queue = controller._queueTotalSize = void 0;
        ResetQueue(controller);
        controller._closeRequested = false;
        controller._started = false;
        controller._strategyHWM = highWaterMark;
        controller._pullAlgorithm = pullAlgorithm;
        controller._cancelAlgorithm = cancelAlgorithm;
        controller._autoAllocateChunkSize = autoAllocateChunkSize;
        controller._pendingPullIntos = new SimpleQueue();
        stream3._readableStreamController = controller;
        const startResult = startAlgorithm();
        uponPromise(promiseResolvedWith(startResult), () => {
          controller._started = true;
          ReadableByteStreamControllerCallPullIfNeeded(controller);
        }, (r2) => {
          ReadableByteStreamControllerError(controller, r2);
        });
      }
      function SetUpReadableByteStreamControllerFromUnderlyingSource(stream3, underlyingByteSource, highWaterMark) {
        const controller = Object.create(ReadableByteStreamController.prototype);
        let startAlgorithm = () => void 0;
        let pullAlgorithm = () => promiseResolvedWith(void 0);
        let cancelAlgorithm = () => promiseResolvedWith(void 0);
        if (underlyingByteSource.start !== void 0) {
          startAlgorithm = () => underlyingByteSource.start(controller);
        }
        if (underlyingByteSource.pull !== void 0) {
          pullAlgorithm = () => underlyingByteSource.pull(controller);
        }
        if (underlyingByteSource.cancel !== void 0) {
          cancelAlgorithm = (reason) => underlyingByteSource.cancel(reason);
        }
        const autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;
        if (autoAllocateChunkSize === 0) {
          throw new TypeError("autoAllocateChunkSize must be greater than 0");
        }
        SetUpReadableByteStreamController(stream3, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize);
      }
      function SetUpReadableStreamBYOBRequest(request, controller, view) {
        request._associatedReadableByteStreamController = controller;
        request._view = view;
      }
      function byobRequestBrandCheckException(name3) {
        return new TypeError(`ReadableStreamBYOBRequest.prototype.${name3} can only be used on a ReadableStreamBYOBRequest`);
      }
      function byteStreamControllerBrandCheckException(name3) {
        return new TypeError(`ReadableByteStreamController.prototype.${name3} can only be used on a ReadableByteStreamController`);
      }
      function AcquireReadableStreamBYOBReader(stream3) {
        return new ReadableStreamBYOBReader(stream3);
      }
      function ReadableStreamAddReadIntoRequest(stream3, readIntoRequest) {
        stream3._reader._readIntoRequests.push(readIntoRequest);
      }
      function ReadableStreamFulfillReadIntoRequest(stream3, chunk, done) {
        const reader = stream3._reader;
        const readIntoRequest = reader._readIntoRequests.shift();
        if (done) {
          readIntoRequest._closeSteps(chunk);
        } else {
          readIntoRequest._chunkSteps(chunk);
        }
      }
      function ReadableStreamGetNumReadIntoRequests(stream3) {
        return stream3._reader._readIntoRequests.length;
      }
      function ReadableStreamHasBYOBReader(stream3) {
        const reader = stream3._reader;
        if (reader === void 0) {
          return false;
        }
        if (!IsReadableStreamBYOBReader(reader)) {
          return false;
        }
        return true;
      }
      class ReadableStreamBYOBReader {
        constructor(stream3) {
          assertRequiredArgument(stream3, 1, "ReadableStreamBYOBReader");
          assertReadableStream(stream3, "First parameter");
          if (IsReadableStreamLocked(stream3)) {
            throw new TypeError("This stream has already been locked for exclusive reading by another reader");
          }
          if (!IsReadableByteStreamController(stream3._readableStreamController)) {
            throw new TypeError("Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source");
          }
          ReadableStreamReaderGenericInitialize(this, stream3);
          this._readIntoRequests = new SimpleQueue();
        }
        /**
         * Returns a promise that will be fulfilled when the stream becomes closed, or rejected if the stream ever errors or
         * the reader's lock is released before the stream finishes closing.
         */
        get closed() {
          if (!IsReadableStreamBYOBReader(this)) {
            return promiseRejectedWith(byobReaderBrandCheckException("closed"));
          }
          return this._closedPromise;
        }
        /**
         * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}.
         */
        cancel(reason = void 0) {
          if (!IsReadableStreamBYOBReader(this)) {
            return promiseRejectedWith(byobReaderBrandCheckException("cancel"));
          }
          if (this._ownerReadableStream === void 0) {
            return promiseRejectedWith(readerLockException("cancel"));
          }
          return ReadableStreamReaderGenericCancel(this, reason);
        }
        /**
         * Attempts to reads bytes into view, and returns a promise resolved with the result.
         *
         * If reading a chunk causes the queue to become empty, more data will be pulled from the underlying source.
         */
        read(view) {
          if (!IsReadableStreamBYOBReader(this)) {
            return promiseRejectedWith(byobReaderBrandCheckException("read"));
          }
          if (!ArrayBuffer.isView(view)) {
            return promiseRejectedWith(new TypeError("view must be an array buffer view"));
          }
          if (view.byteLength === 0) {
            return promiseRejectedWith(new TypeError("view must have non-zero byteLength"));
          }
          if (view.buffer.byteLength === 0) {
            return promiseRejectedWith(new TypeError(`view's buffer must have non-zero byteLength`));
          }
          if (IsDetachedBuffer(view.buffer)) ;
          if (this._ownerReadableStream === void 0) {
            return promiseRejectedWith(readerLockException("read from"));
          }
          let resolvePromise;
          let rejectPromise;
          const promise = newPromise((resolve9, reject) => {
            resolvePromise = resolve9;
            rejectPromise = reject;
          });
          const readIntoRequest = {
            _chunkSteps: (chunk) => resolvePromise({ value: chunk, done: false }),
            _closeSteps: (chunk) => resolvePromise({ value: chunk, done: true }),
            _errorSteps: (e2) => rejectPromise(e2)
          };
          ReadableStreamBYOBReaderRead(this, view, readIntoRequest);
          return promise;
        }
        /**
         * Releases the reader's lock on the corresponding stream. After the lock is released, the reader is no longer active.
         * If the associated stream is errored when the lock is released, the reader will appear errored in the same way
         * from now on; otherwise, the reader will appear closed.
         *
         * A reader's lock cannot be released while it still has a pending read request, i.e., if a promise returned by
         * the reader's {@link ReadableStreamBYOBReader.read | read()} method has not yet been settled. Attempting to
         * do so will throw a `TypeError` and leave the reader locked to the stream.
         */
        releaseLock() {
          if (!IsReadableStreamBYOBReader(this)) {
            throw byobReaderBrandCheckException("releaseLock");
          }
          if (this._ownerReadableStream === void 0) {
            return;
          }
          if (this._readIntoRequests.length > 0) {
            throw new TypeError("Tried to release a reader lock when that reader has pending read() calls un-settled");
          }
          ReadableStreamReaderGenericRelease(this);
        }
      }
      Object.defineProperties(ReadableStreamBYOBReader.prototype, {
        cancel: { enumerable: true },
        read: { enumerable: true },
        releaseLock: { enumerable: true },
        closed: { enumerable: true }
      });
      if (typeof SymbolPolyfill.toStringTag === "symbol") {
        Object.defineProperty(ReadableStreamBYOBReader.prototype, SymbolPolyfill.toStringTag, {
          value: "ReadableStreamBYOBReader",
          configurable: true
        });
      }
      function IsReadableStreamBYOBReader(x2) {
        if (!typeIsObject(x2)) {
          return false;
        }
        if (!Object.prototype.hasOwnProperty.call(x2, "_readIntoRequests")) {
          return false;
        }
        return x2 instanceof ReadableStreamBYOBReader;
      }
      function ReadableStreamBYOBReaderRead(reader, view, readIntoRequest) {
        const stream3 = reader._ownerReadableStream;
        stream3._disturbed = true;
        if (stream3._state === "errored") {
          readIntoRequest._errorSteps(stream3._storedError);
        } else {
          ReadableByteStreamControllerPullInto(stream3._readableStreamController, view, readIntoRequest);
        }
      }
      function byobReaderBrandCheckException(name3) {
        return new TypeError(`ReadableStreamBYOBReader.prototype.${name3} can only be used on a ReadableStreamBYOBReader`);
      }
      function ExtractHighWaterMark(strategy, defaultHWM) {
        const { highWaterMark } = strategy;
        if (highWaterMark === void 0) {
          return defaultHWM;
        }
        if (NumberIsNaN(highWaterMark) || highWaterMark < 0) {
          throw new RangeError("Invalid highWaterMark");
        }
        return highWaterMark;
      }
      function ExtractSizeAlgorithm(strategy) {
        const { size } = strategy;
        if (!size) {
          return () => 1;
        }
        return size;
      }
      function convertQueuingStrategy(init4, context) {
        assertDictionary(init4, context);
        const highWaterMark = init4 === null || init4 === void 0 ? void 0 : init4.highWaterMark;
        const size = init4 === null || init4 === void 0 ? void 0 : init4.size;
        return {
          highWaterMark: highWaterMark === void 0 ? void 0 : convertUnrestrictedDouble(highWaterMark),
          size: size === void 0 ? void 0 : convertQueuingStrategySize(size, `${context} has member 'size' that`)
        };
      }
      function convertQueuingStrategySize(fn, context) {
        assertFunction2(fn, context);
        return (chunk) => convertUnrestrictedDouble(fn(chunk));
      }
      function convertUnderlyingSink(original, context) {
        assertDictionary(original, context);
        const abort = original === null || original === void 0 ? void 0 : original.abort;
        const close2 = original === null || original === void 0 ? void 0 : original.close;
        const start = original === null || original === void 0 ? void 0 : original.start;
        const type2 = original === null || original === void 0 ? void 0 : original.type;
        const write3 = original === null || original === void 0 ? void 0 : original.write;
        return {
          abort: abort === void 0 ? void 0 : convertUnderlyingSinkAbortCallback(abort, original, `${context} has member 'abort' that`),
          close: close2 === void 0 ? void 0 : convertUnderlyingSinkCloseCallback(close2, original, `${context} has member 'close' that`),
          start: start === void 0 ? void 0 : convertUnderlyingSinkStartCallback(start, original, `${context} has member 'start' that`),
          write: write3 === void 0 ? void 0 : convertUnderlyingSinkWriteCallback(write3, original, `${context} has member 'write' that`),
          type: type2
        };
      }
      function convertUnderlyingSinkAbortCallback(fn, original, context) {
        assertFunction2(fn, context);
        return (reason) => promiseCall(fn, original, [reason]);
      }
      function convertUnderlyingSinkCloseCallback(fn, original, context) {
        assertFunction2(fn, context);
        return () => promiseCall(fn, original, []);
      }
      function convertUnderlyingSinkStartCallback(fn, original, context) {
        assertFunction2(fn, context);
        return (controller) => reflectCall(fn, original, [controller]);
      }
      function convertUnderlyingSinkWriteCallback(fn, original, context) {
        assertFunction2(fn, context);
        return (chunk, controller) => promiseCall(fn, original, [chunk, controller]);
      }
      function assertWritableStream(x2, context) {
        if (!IsWritableStream(x2)) {
          throw new TypeError(`${context} is not a WritableStream.`);
        }
      }
      function isAbortSignal2(value) {
        if (typeof value !== "object" || value === null) {
          return false;
        }
        try {
          return typeof value.aborted === "boolean";
        } catch (_a6) {
          return false;
        }
      }
      const supportsAbortController = typeof AbortController === "function";
      function createAbortController() {
        if (supportsAbortController) {
          return new AbortController();
        }
        return void 0;
      }
      class WritableStream {
        constructor(rawUnderlyingSink = {}, rawStrategy = {}) {
          if (rawUnderlyingSink === void 0) {
            rawUnderlyingSink = null;
          } else {
            assertObject(rawUnderlyingSink, "First parameter");
          }
          const strategy = convertQueuingStrategy(rawStrategy, "Second parameter");
          const underlyingSink = convertUnderlyingSink(rawUnderlyingSink, "First parameter");
          InitializeWritableStream(this);
          const type2 = underlyingSink.type;
          if (type2 !== void 0) {
            throw new RangeError("Invalid type is specified");
          }
          const sizeAlgorithm = ExtractSizeAlgorithm(strategy);
          const highWaterMark = ExtractHighWaterMark(strategy, 1);
          SetUpWritableStreamDefaultControllerFromUnderlyingSink(this, underlyingSink, highWaterMark, sizeAlgorithm);
        }
        /**
         * Returns whether or not the writable stream is locked to a writer.
         */
        get locked() {
          if (!IsWritableStream(this)) {
            throw streamBrandCheckException$2("locked");
          }
          return IsWritableStreamLocked(this);
        }
        /**
         * Aborts the stream, signaling that the producer can no longer successfully write to the stream and it is to be
         * immediately moved to an errored state, with any queued-up writes discarded. This will also execute any abort
         * mechanism of the underlying sink.
         *
         * The returned promise will fulfill if the stream shuts down successfully, or reject if the underlying sink signaled
         * that there was an error doing so. Additionally, it will reject with a `TypeError` (without attempting to cancel
         * the stream) if the stream is currently locked.
         */
        abort(reason = void 0) {
          if (!IsWritableStream(this)) {
            return promiseRejectedWith(streamBrandCheckException$2("abort"));
          }
          if (IsWritableStreamLocked(this)) {
            return promiseRejectedWith(new TypeError("Cannot abort a stream that already has a writer"));
          }
          return WritableStreamAbort(this, reason);
        }
        /**
         * Closes the stream. The underlying sink will finish processing any previously-written chunks, before invoking its
         * close behavior. During this time any further attempts to write will fail (without erroring the stream).
         *
         * The method returns a promise that will fulfill if all remaining chunks are successfully written and the stream
         * successfully closes, or rejects if an error is encountered during this process. Additionally, it will reject with
         * a `TypeError` (without attempting to cancel the stream) if the stream is currently locked.
         */
        close() {
          if (!IsWritableStream(this)) {
            return promiseRejectedWith(streamBrandCheckException$2("close"));
          }
          if (IsWritableStreamLocked(this)) {
            return promiseRejectedWith(new TypeError("Cannot close a stream that already has a writer"));
          }
          if (WritableStreamCloseQueuedOrInFlight(this)) {
            return promiseRejectedWith(new TypeError("Cannot close an already-closing stream"));
          }
          return WritableStreamClose(this);
        }
        /**
         * Creates a {@link WritableStreamDefaultWriter | writer} and locks the stream to the new writer. While the stream
         * is locked, no other writer can be acquired until this one is released.
         *
         * This functionality is especially useful for creating abstractions that desire the ability to write to a stream
         * without interruption or interleaving. By getting a writer for the stream, you can ensure nobody else can write at
         * the same time, which would cause the resulting written data to be unpredictable and probably useless.
         */
        getWriter() {
          if (!IsWritableStream(this)) {
            throw streamBrandCheckException$2("getWriter");
          }
          return AcquireWritableStreamDefaultWriter(this);
        }
      }
      Object.defineProperties(WritableStream.prototype, {
        abort: { enumerable: true },
        close: { enumerable: true },
        getWriter: { enumerable: true },
        locked: { enumerable: true }
      });
      if (typeof SymbolPolyfill.toStringTag === "symbol") {
        Object.defineProperty(WritableStream.prototype, SymbolPolyfill.toStringTag, {
          value: "WritableStream",
          configurable: true
        });
      }
      function AcquireWritableStreamDefaultWriter(stream3) {
        return new WritableStreamDefaultWriter(stream3);
      }
      function CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark = 1, sizeAlgorithm = () => 1) {
        const stream3 = Object.create(WritableStream.prototype);
        InitializeWritableStream(stream3);
        const controller = Object.create(WritableStreamDefaultController.prototype);
        SetUpWritableStreamDefaultController(stream3, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm);
        return stream3;
      }
      function InitializeWritableStream(stream3) {
        stream3._state = "writable";
        stream3._storedError = void 0;
        stream3._writer = void 0;
        stream3._writableStreamController = void 0;
        stream3._writeRequests = new SimpleQueue();
        stream3._inFlightWriteRequest = void 0;
        stream3._closeRequest = void 0;
        stream3._inFlightCloseRequest = void 0;
        stream3._pendingAbortRequest = void 0;
        stream3._backpressure = false;
      }
      function IsWritableStream(x2) {
        if (!typeIsObject(x2)) {
          return false;
        }
        if (!Object.prototype.hasOwnProperty.call(x2, "_writableStreamController")) {
          return false;
        }
        return x2 instanceof WritableStream;
      }
      function IsWritableStreamLocked(stream3) {
        if (stream3._writer === void 0) {
          return false;
        }
        return true;
      }
      function WritableStreamAbort(stream3, reason) {
        var _a6;
        if (stream3._state === "closed" || stream3._state === "errored") {
          return promiseResolvedWith(void 0);
        }
        stream3._writableStreamController._abortReason = reason;
        (_a6 = stream3._writableStreamController._abortController) === null || _a6 === void 0 ? void 0 : _a6.abort();
        const state = stream3._state;
        if (state === "closed" || state === "errored") {
          return promiseResolvedWith(void 0);
        }
        if (stream3._pendingAbortRequest !== void 0) {
          return stream3._pendingAbortRequest._promise;
        }
        let wasAlreadyErroring = false;
        if (state === "erroring") {
          wasAlreadyErroring = true;
          reason = void 0;
        }
        const promise = newPromise((resolve9, reject) => {
          stream3._pendingAbortRequest = {
            _promise: void 0,
            _resolve: resolve9,
            _reject: reject,
            _reason: reason,
            _wasAlreadyErroring: wasAlreadyErroring
          };
        });
        stream3._pendingAbortRequest._promise = promise;
        if (!wasAlreadyErroring) {
          WritableStreamStartErroring(stream3, reason);
        }
        return promise;
      }
      function WritableStreamClose(stream3) {
        const state = stream3._state;
        if (state === "closed" || state === "errored") {
          return promiseRejectedWith(new TypeError(`The stream (in ${state} state) is not in the writable state and cannot be closed`));
        }
        const promise = newPromise((resolve9, reject) => {
          const closeRequest = {
            _resolve: resolve9,
            _reject: reject
          };
          stream3._closeRequest = closeRequest;
        });
        const writer = stream3._writer;
        if (writer !== void 0 && stream3._backpressure && state === "writable") {
          defaultWriterReadyPromiseResolve(writer);
        }
        WritableStreamDefaultControllerClose(stream3._writableStreamController);
        return promise;
      }
      function WritableStreamAddWriteRequest(stream3) {
        const promise = newPromise((resolve9, reject) => {
          const writeRequest = {
            _resolve: resolve9,
            _reject: reject
          };
          stream3._writeRequests.push(writeRequest);
        });
        return promise;
      }
      function WritableStreamDealWithRejection(stream3, error) {
        const state = stream3._state;
        if (state === "writable") {
          WritableStreamStartErroring(stream3, error);
          return;
        }
        WritableStreamFinishErroring(stream3);
      }
      function WritableStreamStartErroring(stream3, reason) {
        const controller = stream3._writableStreamController;
        stream3._state = "erroring";
        stream3._storedError = reason;
        const writer = stream3._writer;
        if (writer !== void 0) {
          WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);
        }
        if (!WritableStreamHasOperationMarkedInFlight(stream3) && controller._started) {
          WritableStreamFinishErroring(stream3);
        }
      }
      function WritableStreamFinishErroring(stream3) {
        stream3._state = "errored";
        stream3._writableStreamController[ErrorSteps]();
        const storedError = stream3._storedError;
        stream3._writeRequests.forEach((writeRequest) => {
          writeRequest._reject(storedError);
        });
        stream3._writeRequests = new SimpleQueue();
        if (stream3._pendingAbortRequest === void 0) {
          WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream3);
          return;
        }
        const abortRequest = stream3._pendingAbortRequest;
        stream3._pendingAbortRequest = void 0;
        if (abortRequest._wasAlreadyErroring) {
          abortRequest._reject(storedError);
          WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream3);
          return;
        }
        const promise = stream3._writableStreamController[AbortSteps](abortRequest._reason);
        uponPromise(promise, () => {
          abortRequest._resolve();
          WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream3);
        }, (reason) => {
          abortRequest._reject(reason);
          WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream3);
        });
      }
      function WritableStreamFinishInFlightWrite(stream3) {
        stream3._inFlightWriteRequest._resolve(void 0);
        stream3._inFlightWriteRequest = void 0;
      }
      function WritableStreamFinishInFlightWriteWithError(stream3, error) {
        stream3._inFlightWriteRequest._reject(error);
        stream3._inFlightWriteRequest = void 0;
        WritableStreamDealWithRejection(stream3, error);
      }
      function WritableStreamFinishInFlightClose(stream3) {
        stream3._inFlightCloseRequest._resolve(void 0);
        stream3._inFlightCloseRequest = void 0;
        const state = stream3._state;
        if (state === "erroring") {
          stream3._storedError = void 0;
          if (stream3._pendingAbortRequest !== void 0) {
            stream3._pendingAbortRequest._resolve();
            stream3._pendingAbortRequest = void 0;
          }
        }
        stream3._state = "closed";
        const writer = stream3._writer;
        if (writer !== void 0) {
          defaultWriterClosedPromiseResolve(writer);
        }
      }
      function WritableStreamFinishInFlightCloseWithError(stream3, error) {
        stream3._inFlightCloseRequest._reject(error);
        stream3._inFlightCloseRequest = void 0;
        if (stream3._pendingAbortRequest !== void 0) {
          stream3._pendingAbortRequest._reject(error);
          stream3._pendingAbortRequest = void 0;
        }
        WritableStreamDealWithRejection(stream3, error);
      }
      function WritableStreamCloseQueuedOrInFlight(stream3) {
        if (stream3._closeRequest === void 0 && stream3._inFlightCloseRequest === void 0) {
          return false;
        }
        return true;
      }
      function WritableStreamHasOperationMarkedInFlight(stream3) {
        if (stream3._inFlightWriteRequest === void 0 && stream3._inFlightCloseRequest === void 0) {
          return false;
        }
        return true;
      }
      function WritableStreamMarkCloseRequestInFlight(stream3) {
        stream3._inFlightCloseRequest = stream3._closeRequest;
        stream3._closeRequest = void 0;
      }
      function WritableStreamMarkFirstWriteRequestInFlight(stream3) {
        stream3._inFlightWriteRequest = stream3._writeRequests.shift();
      }
      function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream3) {
        if (stream3._closeRequest !== void 0) {
          stream3._closeRequest._reject(stream3._storedError);
          stream3._closeRequest = void 0;
        }
        const writer = stream3._writer;
        if (writer !== void 0) {
          defaultWriterClosedPromiseReject(writer, stream3._storedError);
        }
      }
      function WritableStreamUpdateBackpressure(stream3, backpressure) {
        const writer = stream3._writer;
        if (writer !== void 0 && backpressure !== stream3._backpressure) {
          if (backpressure) {
            defaultWriterReadyPromiseReset(writer);
          } else {
            defaultWriterReadyPromiseResolve(writer);
          }
        }
        stream3._backpressure = backpressure;
      }
      class WritableStreamDefaultWriter {
        constructor(stream3) {
          assertRequiredArgument(stream3, 1, "WritableStreamDefaultWriter");
          assertWritableStream(stream3, "First parameter");
          if (IsWritableStreamLocked(stream3)) {
            throw new TypeError("This stream has already been locked for exclusive writing by another writer");
          }
          this._ownerWritableStream = stream3;
          stream3._writer = this;
          const state = stream3._state;
          if (state === "writable") {
            if (!WritableStreamCloseQueuedOrInFlight(stream3) && stream3._backpressure) {
              defaultWriterReadyPromiseInitialize(this);
            } else {
              defaultWriterReadyPromiseInitializeAsResolved(this);
            }
            defaultWriterClosedPromiseInitialize(this);
          } else if (state === "erroring") {
            defaultWriterReadyPromiseInitializeAsRejected(this, stream3._storedError);
            defaultWriterClosedPromiseInitialize(this);
          } else if (state === "closed") {
            defaultWriterReadyPromiseInitializeAsResolved(this);
            defaultWriterClosedPromiseInitializeAsResolved(this);
          } else {
            const storedError = stream3._storedError;
            defaultWriterReadyPromiseInitializeAsRejected(this, storedError);
            defaultWriterClosedPromiseInitializeAsRejected(this, storedError);
          }
        }
        /**
         * Returns a promise that will be fulfilled when the stream becomes closed, or rejected if the stream ever errors or
         * the writer’s lock is released before the stream finishes closing.
         */
        get closed() {
          if (!IsWritableStreamDefaultWriter(this)) {
            return promiseRejectedWith(defaultWriterBrandCheckException("closed"));
          }
          return this._closedPromise;
        }
        /**
         * Returns the desired size to fill the stream’s internal queue. It can be negative, if the queue is over-full.
         * A producer can use this information to determine the right amount of data to write.
         *
         * It will be `null` if the stream cannot be successfully written to (due to either being errored, or having an abort
         * queued up). It will return zero if the stream is closed. And the getter will throw an exception if invoked when
         * the writer’s lock is released.
         */
        get desiredSize() {
          if (!IsWritableStreamDefaultWriter(this)) {
            throw defaultWriterBrandCheckException("desiredSize");
          }
          if (this._ownerWritableStream === void 0) {
            throw defaultWriterLockException("desiredSize");
          }
          return WritableStreamDefaultWriterGetDesiredSize(this);
        }
        /**
         * Returns a promise that will be fulfilled when the desired size to fill the stream’s internal queue transitions
         * from non-positive to positive, signaling that it is no longer applying backpressure. Once the desired size dips
         * back to zero or below, the getter will return a new promise that stays pending until the next transition.
         *
         * If the stream becomes errored or aborted, or the writer’s lock is released, the returned promise will become
         * rejected.
         */
        get ready() {
          if (!IsWritableStreamDefaultWriter(this)) {
            return promiseRejectedWith(defaultWriterBrandCheckException("ready"));
          }
          return this._readyPromise;
        }
        /**
         * If the reader is active, behaves the same as {@link WritableStream.abort | stream.abort(reason)}.
         */
        abort(reason = void 0) {
          if (!IsWritableStreamDefaultWriter(this)) {
            return promiseRejectedWith(defaultWriterBrandCheckException("abort"));
          }
          if (this._ownerWritableStream === void 0) {
            return promiseRejectedWith(defaultWriterLockException("abort"));
          }
          return WritableStreamDefaultWriterAbort(this, reason);
        }
        /**
         * If the reader is active, behaves the same as {@link WritableStream.close | stream.close()}.
         */
        close() {
          if (!IsWritableStreamDefaultWriter(this)) {
            return promiseRejectedWith(defaultWriterBrandCheckException("close"));
          }
          const stream3 = this._ownerWritableStream;
          if (stream3 === void 0) {
            return promiseRejectedWith(defaultWriterLockException("close"));
          }
          if (WritableStreamCloseQueuedOrInFlight(stream3)) {
            return promiseRejectedWith(new TypeError("Cannot close an already-closing stream"));
          }
          return WritableStreamDefaultWriterClose(this);
        }
        /**
         * Releases the writer’s lock on the corresponding stream. After the lock is released, the writer is no longer active.
         * If the associated stream is errored when the lock is released, the writer will appear errored in the same way from
         * now on; otherwise, the writer will appear closed.
         *
         * Note that the lock can still be released even if some ongoing writes have not yet finished (i.e. even if the
         * promises returned from previous calls to {@link WritableStreamDefaultWriter.write | write()} have not yet settled).
         * It’s not necessary to hold the lock on the writer for the duration of the write; the lock instead simply prevents
         * other producers from writing in an interleaved manner.
         */
        releaseLock() {
          if (!IsWritableStreamDefaultWriter(this)) {
            throw defaultWriterBrandCheckException("releaseLock");
          }
          const stream3 = this._ownerWritableStream;
          if (stream3 === void 0) {
            return;
          }
          WritableStreamDefaultWriterRelease(this);
        }
        write(chunk = void 0) {
          if (!IsWritableStreamDefaultWriter(this)) {
            return promiseRejectedWith(defaultWriterBrandCheckException("write"));
          }
          if (this._ownerWritableStream === void 0) {
            return promiseRejectedWith(defaultWriterLockException("write to"));
          }
          return WritableStreamDefaultWriterWrite(this, chunk);
        }
      }
      Object.defineProperties(WritableStreamDefaultWriter.prototype, {
        abort: { enumerable: true },
        close: { enumerable: true },
        releaseLock: { enumerable: true },
        write: { enumerable: true },
        closed: { enumerable: true },
        desiredSize: { enumerable: true },
        ready: { enumerable: true }
      });
      if (typeof SymbolPolyfill.toStringTag === "symbol") {
        Object.defineProperty(WritableStreamDefaultWriter.prototype, SymbolPolyfill.toStringTag, {
          value: "WritableStreamDefaultWriter",
          configurable: true
        });
      }
      function IsWritableStreamDefaultWriter(x2) {
        if (!typeIsObject(x2)) {
          return false;
        }
        if (!Object.prototype.hasOwnProperty.call(x2, "_ownerWritableStream")) {
          return false;
        }
        return x2 instanceof WritableStreamDefaultWriter;
      }
      function WritableStreamDefaultWriterAbort(writer, reason) {
        const stream3 = writer._ownerWritableStream;
        return WritableStreamAbort(stream3, reason);
      }
      function WritableStreamDefaultWriterClose(writer) {
        const stream3 = writer._ownerWritableStream;
        return WritableStreamClose(stream3);
      }
      function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {
        const stream3 = writer._ownerWritableStream;
        const state = stream3._state;
        if (WritableStreamCloseQueuedOrInFlight(stream3) || state === "closed") {
          return promiseResolvedWith(void 0);
        }
        if (state === "errored") {
          return promiseRejectedWith(stream3._storedError);
        }
        return WritableStreamDefaultWriterClose(writer);
      }
      function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {
        if (writer._closedPromiseState === "pending") {
          defaultWriterClosedPromiseReject(writer, error);
        } else {
          defaultWriterClosedPromiseResetToRejected(writer, error);
        }
      }
      function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {
        if (writer._readyPromiseState === "pending") {
          defaultWriterReadyPromiseReject(writer, error);
        } else {
          defaultWriterReadyPromiseResetToRejected(writer, error);
        }
      }
      function WritableStreamDefaultWriterGetDesiredSize(writer) {
        const stream3 = writer._ownerWritableStream;
        const state = stream3._state;
        if (state === "errored" || state === "erroring") {
          return null;
        }
        if (state === "closed") {
          return 0;
        }
        return WritableStreamDefaultControllerGetDesiredSize(stream3._writableStreamController);
      }
      function WritableStreamDefaultWriterRelease(writer) {
        const stream3 = writer._ownerWritableStream;
        const releasedError = new TypeError(`Writer was released and can no longer be used to monitor the stream's closedness`);
        WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);
        WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);
        stream3._writer = void 0;
        writer._ownerWritableStream = void 0;
      }
      function WritableStreamDefaultWriterWrite(writer, chunk) {
        const stream3 = writer._ownerWritableStream;
        const controller = stream3._writableStreamController;
        const chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);
        if (stream3 !== writer._ownerWritableStream) {
          return promiseRejectedWith(defaultWriterLockException("write to"));
        }
        const state = stream3._state;
        if (state === "errored") {
          return promiseRejectedWith(stream3._storedError);
        }
        if (WritableStreamCloseQueuedOrInFlight(stream3) || state === "closed") {
          return promiseRejectedWith(new TypeError("The stream is closing or closed and cannot be written to"));
        }
        if (state === "erroring") {
          return promiseRejectedWith(stream3._storedError);
        }
        const promise = WritableStreamAddWriteRequest(stream3);
        WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);
        return promise;
      }
      const closeSentinel = {};
      class WritableStreamDefaultController {
        constructor() {
          throw new TypeError("Illegal constructor");
        }
        /**
         * The reason which was passed to `WritableStream.abort(reason)` when the stream was aborted.
         *
         * @deprecated
         *  This property has been removed from the specification, see https://github.com/whatwg/streams/pull/1177.
         *  Use {@link WritableStreamDefaultController.signal}'s `reason` instead.
         */
        get abortReason() {
          if (!IsWritableStreamDefaultController(this)) {
            throw defaultControllerBrandCheckException$2("abortReason");
          }
          return this._abortReason;
        }
        /**
         * An `AbortSignal` that can be used to abort the pending write or close operation when the stream is aborted.
         */
        get signal() {
          if (!IsWritableStreamDefaultController(this)) {
            throw defaultControllerBrandCheckException$2("signal");
          }
          if (this._abortController === void 0) {
            throw new TypeError("WritableStreamDefaultController.prototype.signal is not supported");
          }
          return this._abortController.signal;
        }
        /**
         * Closes the controlled writable stream, making all future interactions with it fail with the given error `e`.
         *
         * This method is rarely used, since usually it suffices to return a rejected promise from one of the underlying
         * sink's methods. However, it can be useful for suddenly shutting down a stream in response to an event outside the
         * normal lifecycle of interactions with the underlying sink.
         */
        error(e2 = void 0) {
          if (!IsWritableStreamDefaultController(this)) {
            throw defaultControllerBrandCheckException$2("error");
          }
          const state = this._controlledWritableStream._state;
          if (state !== "writable") {
            return;
          }
          WritableStreamDefaultControllerError(this, e2);
        }
        /** @internal */
        [AbortSteps](reason) {
          const result = this._abortAlgorithm(reason);
          WritableStreamDefaultControllerClearAlgorithms(this);
          return result;
        }
        /** @internal */
        [ErrorSteps]() {
          ResetQueue(this);
        }
      }
      Object.defineProperties(WritableStreamDefaultController.prototype, {
        abortReason: { enumerable: true },
        signal: { enumerable: true },
        error: { enumerable: true }
      });
      if (typeof SymbolPolyfill.toStringTag === "symbol") {
        Object.defineProperty(WritableStreamDefaultController.prototype, SymbolPolyfill.toStringTag, {
          value: "WritableStreamDefaultController",
          configurable: true
        });
      }
      function IsWritableStreamDefaultController(x2) {
        if (!typeIsObject(x2)) {
          return false;
        }
        if (!Object.prototype.hasOwnProperty.call(x2, "_controlledWritableStream")) {
          return false;
        }
        return x2 instanceof WritableStreamDefaultController;
      }
      function SetUpWritableStreamDefaultController(stream3, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) {
        controller._controlledWritableStream = stream3;
        stream3._writableStreamController = controller;
        controller._queue = void 0;
        controller._queueTotalSize = void 0;
        ResetQueue(controller);
        controller._abortReason = void 0;
        controller._abortController = createAbortController();
        controller._started = false;
        controller._strategySizeAlgorithm = sizeAlgorithm;
        controller._strategyHWM = highWaterMark;
        controller._writeAlgorithm = writeAlgorithm;
        controller._closeAlgorithm = closeAlgorithm;
        controller._abortAlgorithm = abortAlgorithm;
        const backpressure = WritableStreamDefaultControllerGetBackpressure(controller);
        WritableStreamUpdateBackpressure(stream3, backpressure);
        const startResult = startAlgorithm();
        const startPromise = promiseResolvedWith(startResult);
        uponPromise(startPromise, () => {
          controller._started = true;
          WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
        }, (r2) => {
          controller._started = true;
          WritableStreamDealWithRejection(stream3, r2);
        });
      }
      function SetUpWritableStreamDefaultControllerFromUnderlyingSink(stream3, underlyingSink, highWaterMark, sizeAlgorithm) {
        const controller = Object.create(WritableStreamDefaultController.prototype);
        let startAlgorithm = () => void 0;
        let writeAlgorithm = () => promiseResolvedWith(void 0);
        let closeAlgorithm = () => promiseResolvedWith(void 0);
        let abortAlgorithm = () => promiseResolvedWith(void 0);
        if (underlyingSink.start !== void 0) {
          startAlgorithm = () => underlyingSink.start(controller);
        }
        if (underlyingSink.write !== void 0) {
          writeAlgorithm = (chunk) => underlyingSink.write(chunk, controller);
        }
        if (underlyingSink.close !== void 0) {
          closeAlgorithm = () => underlyingSink.close();
        }
        if (underlyingSink.abort !== void 0) {
          abortAlgorithm = (reason) => underlyingSink.abort(reason);
        }
        SetUpWritableStreamDefaultController(stream3, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm);
      }
      function WritableStreamDefaultControllerClearAlgorithms(controller) {
        controller._writeAlgorithm = void 0;
        controller._closeAlgorithm = void 0;
        controller._abortAlgorithm = void 0;
        controller._strategySizeAlgorithm = void 0;
      }
      function WritableStreamDefaultControllerClose(controller) {
        EnqueueValueWithSize(controller, closeSentinel, 0);
        WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
      }
      function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {
        try {
          return controller._strategySizeAlgorithm(chunk);
        } catch (chunkSizeE) {
          WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);
          return 1;
        }
      }
      function WritableStreamDefaultControllerGetDesiredSize(controller) {
        return controller._strategyHWM - controller._queueTotalSize;
      }
      function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {
        try {
          EnqueueValueWithSize(controller, chunk, chunkSize);
        } catch (enqueueE) {
          WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);
          return;
        }
        const stream3 = controller._controlledWritableStream;
        if (!WritableStreamCloseQueuedOrInFlight(stream3) && stream3._state === "writable") {
          const backpressure = WritableStreamDefaultControllerGetBackpressure(controller);
          WritableStreamUpdateBackpressure(stream3, backpressure);
        }
        WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
      }
      function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {
        const stream3 = controller._controlledWritableStream;
        if (!controller._started) {
          return;
        }
        if (stream3._inFlightWriteRequest !== void 0) {
          return;
        }
        const state = stream3._state;
        if (state === "erroring") {
          WritableStreamFinishErroring(stream3);
          return;
        }
        if (controller._queue.length === 0) {
          return;
        }
        const value = PeekQueueValue(controller);
        if (value === closeSentinel) {
          WritableStreamDefaultControllerProcessClose(controller);
        } else {
          WritableStreamDefaultControllerProcessWrite(controller, value);
        }
      }
      function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {
        if (controller._controlledWritableStream._state === "writable") {
          WritableStreamDefaultControllerError(controller, error);
        }
      }
      function WritableStreamDefaultControllerProcessClose(controller) {
        const stream3 = controller._controlledWritableStream;
        WritableStreamMarkCloseRequestInFlight(stream3);
        DequeueValue(controller);
        const sinkClosePromise = controller._closeAlgorithm();
        WritableStreamDefaultControllerClearAlgorithms(controller);
        uponPromise(sinkClosePromise, () => {
          WritableStreamFinishInFlightClose(stream3);
        }, (reason) => {
          WritableStreamFinishInFlightCloseWithError(stream3, reason);
        });
      }
      function WritableStreamDefaultControllerProcessWrite(controller, chunk) {
        const stream3 = controller._controlledWritableStream;
        WritableStreamMarkFirstWriteRequestInFlight(stream3);
        const sinkWritePromise = controller._writeAlgorithm(chunk);
        uponPromise(sinkWritePromise, () => {
          WritableStreamFinishInFlightWrite(stream3);
          const state = stream3._state;
          DequeueValue(controller);
          if (!WritableStreamCloseQueuedOrInFlight(stream3) && state === "writable") {
            const backpressure = WritableStreamDefaultControllerGetBackpressure(controller);
            WritableStreamUpdateBackpressure(stream3, backpressure);
          }
          WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
        }, (reason) => {
          if (stream3._state === "writable") {
            WritableStreamDefaultControllerClearAlgorithms(controller);
          }
          WritableStreamFinishInFlightWriteWithError(stream3, reason);
        });
      }
      function WritableStreamDefaultControllerGetBackpressure(controller) {
        const desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);
        return desiredSize <= 0;
      }
      function WritableStreamDefaultControllerError(controller, error) {
        const stream3 = controller._controlledWritableStream;
        WritableStreamDefaultControllerClearAlgorithms(controller);
        WritableStreamStartErroring(stream3, error);
      }
      function streamBrandCheckException$2(name3) {
        return new TypeError(`WritableStream.prototype.${name3} can only be used on a WritableStream`);
      }
      function defaultControllerBrandCheckException$2(name3) {
        return new TypeError(`WritableStreamDefaultController.prototype.${name3} can only be used on a WritableStreamDefaultController`);
      }
      function defaultWriterBrandCheckException(name3) {
        return new TypeError(`WritableStreamDefaultWriter.prototype.${name3} can only be used on a WritableStreamDefaultWriter`);
      }
      function defaultWriterLockException(name3) {
        return new TypeError("Cannot " + name3 + " a stream using a released writer");
      }
      function defaultWriterClosedPromiseInitialize(writer) {
        writer._closedPromise = newPromise((resolve9, reject) => {
          writer._closedPromise_resolve = resolve9;
          writer._closedPromise_reject = reject;
          writer._closedPromiseState = "pending";
        });
      }
      function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {
        defaultWriterClosedPromiseInitialize(writer);
        defaultWriterClosedPromiseReject(writer, reason);
      }
      function defaultWriterClosedPromiseInitializeAsResolved(writer) {
        defaultWriterClosedPromiseInitialize(writer);
        defaultWriterClosedPromiseResolve(writer);
      }
      function defaultWriterClosedPromiseReject(writer, reason) {
        if (writer._closedPromise_reject === void 0) {
          return;
        }
        setPromiseIsHandledToTrue(writer._closedPromise);
        writer._closedPromise_reject(reason);
        writer._closedPromise_resolve = void 0;
        writer._closedPromise_reject = void 0;
        writer._closedPromiseState = "rejected";
      }
      function defaultWriterClosedPromiseResetToRejected(writer, reason) {
        defaultWriterClosedPromiseInitializeAsRejected(writer, reason);
      }
      function defaultWriterClosedPromiseResolve(writer) {
        if (writer._closedPromise_resolve === void 0) {
          return;
        }
        writer._closedPromise_resolve(void 0);
        writer._closedPromise_resolve = void 0;
        writer._closedPromise_reject = void 0;
        writer._closedPromiseState = "resolved";
      }
      function defaultWriterReadyPromiseInitialize(writer) {
        writer._readyPromise = newPromise((resolve9, reject) => {
          writer._readyPromise_resolve = resolve9;
          writer._readyPromise_reject = reject;
        });
        writer._readyPromiseState = "pending";
      }
      function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {
        defaultWriterReadyPromiseInitialize(writer);
        defaultWriterReadyPromiseReject(writer, reason);
      }
      function defaultWriterReadyPromiseInitializeAsResolved(writer) {
        defaultWriterReadyPromiseInitialize(writer);
        defaultWriterReadyPromiseResolve(writer);
      }
      function defaultWriterReadyPromiseReject(writer, reason) {
        if (writer._readyPromise_reject === void 0) {
          return;
        }
        setPromiseIsHandledToTrue(writer._readyPromise);
        writer._readyPromise_reject(reason);
        writer._readyPromise_resolve = void 0;
        writer._readyPromise_reject = void 0;
        writer._readyPromiseState = "rejected";
      }
      function defaultWriterReadyPromiseReset(writer) {
        defaultWriterReadyPromiseInitialize(writer);
      }
      function defaultWriterReadyPromiseResetToRejected(writer, reason) {
        defaultWriterReadyPromiseInitializeAsRejected(writer, reason);
      }
      function defaultWriterReadyPromiseResolve(writer) {
        if (writer._readyPromise_resolve === void 0) {
          return;
        }
        writer._readyPromise_resolve(void 0);
        writer._readyPromise_resolve = void 0;
        writer._readyPromise_reject = void 0;
        writer._readyPromiseState = "fulfilled";
      }
      const NativeDOMException = typeof DOMException !== "undefined" ? DOMException : void 0;
      function isDOMExceptionConstructor(ctor) {
        if (!(typeof ctor === "function" || typeof ctor === "object")) {
          return false;
        }
        try {
          new ctor();
          return true;
        } catch (_a6) {
          return false;
        }
      }
      function createDOMExceptionPolyfill() {
        const ctor = function DOMException3(message, name3) {
          this.message = message || "";
          this.name = name3 || "Error";
          if (Error.captureStackTrace) {
            Error.captureStackTrace(this, this.constructor);
          }
        };
        ctor.prototype = Object.create(Error.prototype);
        Object.defineProperty(ctor.prototype, "constructor", { value: ctor, writable: true, configurable: true });
        return ctor;
      }
      const DOMException$1 = isDOMExceptionConstructor(NativeDOMException) ? NativeDOMException : createDOMExceptionPolyfill();
      function ReadableStreamPipeTo(source2, dest, preventClose, preventAbort, preventCancel, signal) {
        const reader = AcquireReadableStreamDefaultReader(source2);
        const writer = AcquireWritableStreamDefaultWriter(dest);
        source2._disturbed = true;
        let shuttingDown = false;
        let currentWrite = promiseResolvedWith(void 0);
        return newPromise((resolve9, reject) => {
          let abortAlgorithm;
          if (signal !== void 0) {
            abortAlgorithm = () => {
              const error = new DOMException$1("Aborted", "AbortError");
              const actions = [];
              if (!preventAbort) {
                actions.push(() => {
                  if (dest._state === "writable") {
                    return WritableStreamAbort(dest, error);
                  }
                  return promiseResolvedWith(void 0);
                });
              }
              if (!preventCancel) {
                actions.push(() => {
                  if (source2._state === "readable") {
                    return ReadableStreamCancel(source2, error);
                  }
                  return promiseResolvedWith(void 0);
                });
              }
              shutdownWithAction(() => Promise.all(actions.map((action) => action())), true, error);
            };
            if (signal.aborted) {
              abortAlgorithm();
              return;
            }
            signal.addEventListener("abort", abortAlgorithm);
          }
          function pipeLoop() {
            return newPromise((resolveLoop, rejectLoop) => {
              function next(done) {
                if (done) {
                  resolveLoop();
                } else {
                  PerformPromiseThen(pipeStep(), next, rejectLoop);
                }
              }
              next(false);
            });
          }
          function pipeStep() {
            if (shuttingDown) {
              return promiseResolvedWith(true);
            }
            return PerformPromiseThen(writer._readyPromise, () => {
              return newPromise((resolveRead, rejectRead) => {
                ReadableStreamDefaultReaderRead(reader, {
                  _chunkSteps: (chunk) => {
                    currentWrite = PerformPromiseThen(WritableStreamDefaultWriterWrite(writer, chunk), void 0, noop5);
                    resolveRead(false);
                  },
                  _closeSteps: () => resolveRead(true),
                  _errorSteps: rejectRead
                });
              });
            });
          }
          isOrBecomesErrored(source2, reader._closedPromise, (storedError) => {
            if (!preventAbort) {
              shutdownWithAction(() => WritableStreamAbort(dest, storedError), true, storedError);
            } else {
              shutdown(true, storedError);
            }
          });
          isOrBecomesErrored(dest, writer._closedPromise, (storedError) => {
            if (!preventCancel) {
              shutdownWithAction(() => ReadableStreamCancel(source2, storedError), true, storedError);
            } else {
              shutdown(true, storedError);
            }
          });
          isOrBecomesClosed(source2, reader._closedPromise, () => {
            if (!preventClose) {
              shutdownWithAction(() => WritableStreamDefaultWriterCloseWithErrorPropagation(writer));
            } else {
              shutdown();
            }
          });
          if (WritableStreamCloseQueuedOrInFlight(dest) || dest._state === "closed") {
            const destClosed = new TypeError("the destination writable stream closed before all data could be piped to it");
            if (!preventCancel) {
              shutdownWithAction(() => ReadableStreamCancel(source2, destClosed), true, destClosed);
            } else {
              shutdown(true, destClosed);
            }
          }
          setPromiseIsHandledToTrue(pipeLoop());
          function waitForWritesToFinish() {
            const oldCurrentWrite = currentWrite;
            return PerformPromiseThen(currentWrite, () => oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : void 0);
          }
          function isOrBecomesErrored(stream3, promise, action) {
            if (stream3._state === "errored") {
              action(stream3._storedError);
            } else {
              uponRejection(promise, action);
            }
          }
          function isOrBecomesClosed(stream3, promise, action) {
            if (stream3._state === "closed") {
              action();
            } else {
              uponFulfillment(promise, action);
            }
          }
          function shutdownWithAction(action, originalIsError, originalError) {
            if (shuttingDown) {
              return;
            }
            shuttingDown = true;
            if (dest._state === "writable" && !WritableStreamCloseQueuedOrInFlight(dest)) {
              uponFulfillment(waitForWritesToFinish(), doTheRest);
            } else {
              doTheRest();
            }
            function doTheRest() {
              uponPromise(action(), () => finalize2(originalIsError, originalError), (newError) => finalize2(true, newError));
            }
          }
          function shutdown(isError2, error) {
            if (shuttingDown) {
              return;
            }
            shuttingDown = true;
            if (dest._state === "writable" && !WritableStreamCloseQueuedOrInFlight(dest)) {
              uponFulfillment(waitForWritesToFinish(), () => finalize2(isError2, error));
            } else {
              finalize2(isError2, error);
            }
          }
          function finalize2(isError2, error) {
            WritableStreamDefaultWriterRelease(writer);
            ReadableStreamReaderGenericRelease(reader);
            if (signal !== void 0) {
              signal.removeEventListener("abort", abortAlgorithm);
            }
            if (isError2) {
              reject(error);
            } else {
              resolve9(void 0);
            }
          }
        });
      }
      class ReadableStreamDefaultController {
        constructor() {
          throw new TypeError("Illegal constructor");
        }
        /**
         * Returns the desired size to fill the controlled stream's internal queue. It can be negative, if the queue is
         * over-full. An underlying source ought to use this information to determine when and how to apply backpressure.
         */
        get desiredSize() {
          if (!IsReadableStreamDefaultController(this)) {
            throw defaultControllerBrandCheckException$1("desiredSize");
          }
          return ReadableStreamDefaultControllerGetDesiredSize(this);
        }
        /**
         * Closes the controlled readable stream. Consumers will still be able to read any previously-enqueued chunks from
         * the stream, but once those are read, the stream will become closed.
         */
        close() {
          if (!IsReadableStreamDefaultController(this)) {
            throw defaultControllerBrandCheckException$1("close");
          }
          if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {
            throw new TypeError("The stream is not in a state that permits close");
          }
          ReadableStreamDefaultControllerClose(this);
        }
        enqueue(chunk = void 0) {
          if (!IsReadableStreamDefaultController(this)) {
            throw defaultControllerBrandCheckException$1("enqueue");
          }
          if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {
            throw new TypeError("The stream is not in a state that permits enqueue");
          }
          return ReadableStreamDefaultControllerEnqueue(this, chunk);
        }
        /**
         * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`.
         */
        error(e2 = void 0) {
          if (!IsReadableStreamDefaultController(this)) {
            throw defaultControllerBrandCheckException$1("error");
          }
          ReadableStreamDefaultControllerError(this, e2);
        }
        /** @internal */
        [CancelSteps](reason) {
          ResetQueue(this);
          const result = this._cancelAlgorithm(reason);
          ReadableStreamDefaultControllerClearAlgorithms(this);
          return result;
        }
        /** @internal */
        [PullSteps](readRequest) {
          const stream3 = this._controlledReadableStream;
          if (this._queue.length > 0) {
            const chunk = DequeueValue(this);
            if (this._closeRequested && this._queue.length === 0) {
              ReadableStreamDefaultControllerClearAlgorithms(this);
              ReadableStreamClose(stream3);
            } else {
              ReadableStreamDefaultControllerCallPullIfNeeded(this);
            }
            readRequest._chunkSteps(chunk);
          } else {
            ReadableStreamAddReadRequest(stream3, readRequest);
            ReadableStreamDefaultControllerCallPullIfNeeded(this);
          }
        }
      }
      Object.defineProperties(ReadableStreamDefaultController.prototype, {
        close: { enumerable: true },
        enqueue: { enumerable: true },
        error: { enumerable: true },
        desiredSize: { enumerable: true }
      });
      if (typeof SymbolPolyfill.toStringTag === "symbol") {
        Object.defineProperty(ReadableStreamDefaultController.prototype, SymbolPolyfill.toStringTag, {
          value: "ReadableStreamDefaultController",
          configurable: true
        });
      }
      function IsReadableStreamDefaultController(x2) {
        if (!typeIsObject(x2)) {
          return false;
        }
        if (!Object.prototype.hasOwnProperty.call(x2, "_controlledReadableStream")) {
          return false;
        }
        return x2 instanceof ReadableStreamDefaultController;
      }
      function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {
        const shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);
        if (!shouldPull) {
          return;
        }
        if (controller._pulling) {
          controller._pullAgain = true;
          return;
        }
        controller._pulling = true;
        const pullPromise = controller._pullAlgorithm();
        uponPromise(pullPromise, () => {
          controller._pulling = false;
          if (controller._pullAgain) {
            controller._pullAgain = false;
            ReadableStreamDefaultControllerCallPullIfNeeded(controller);
          }
        }, (e2) => {
          ReadableStreamDefaultControllerError(controller, e2);
        });
      }
      function ReadableStreamDefaultControllerShouldCallPull(controller) {
        const stream3 = controller._controlledReadableStream;
        if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {
          return false;
        }
        if (!controller._started) {
          return false;
        }
        if (IsReadableStreamLocked(stream3) && ReadableStreamGetNumReadRequests(stream3) > 0) {
          return true;
        }
        const desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);
        if (desiredSize > 0) {
          return true;
        }
        return false;
      }
      function ReadableStreamDefaultControllerClearAlgorithms(controller) {
        controller._pullAlgorithm = void 0;
        controller._cancelAlgorithm = void 0;
        controller._strategySizeAlgorithm = void 0;
      }
      function ReadableStreamDefaultControllerClose(controller) {
        if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {
          return;
        }
        const stream3 = controller._controlledReadableStream;
        controller._closeRequested = true;
        if (controller._queue.length === 0) {
          ReadableStreamDefaultControllerClearAlgorithms(controller);
          ReadableStreamClose(stream3);
        }
      }
      function ReadableStreamDefaultControllerEnqueue(controller, chunk) {
        if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {
          return;
        }
        const stream3 = controller._controlledReadableStream;
        if (IsReadableStreamLocked(stream3) && ReadableStreamGetNumReadRequests(stream3) > 0) {
          ReadableStreamFulfillReadRequest(stream3, chunk, false);
        } else {
          let chunkSize;
          try {
            chunkSize = controller._strategySizeAlgorithm(chunk);
          } catch (chunkSizeE) {
            ReadableStreamDefaultControllerError(controller, chunkSizeE);
            throw chunkSizeE;
          }
          try {
            EnqueueValueWithSize(controller, chunk, chunkSize);
          } catch (enqueueE) {
            ReadableStreamDefaultControllerError(controller, enqueueE);
            throw enqueueE;
          }
        }
        ReadableStreamDefaultControllerCallPullIfNeeded(controller);
      }
      function ReadableStreamDefaultControllerError(controller, e2) {
        const stream3 = controller._controlledReadableStream;
        if (stream3._state !== "readable") {
          return;
        }
        ResetQueue(controller);
        ReadableStreamDefaultControllerClearAlgorithms(controller);
        ReadableStreamError(stream3, e2);
      }
      function ReadableStreamDefaultControllerGetDesiredSize(controller) {
        const state = controller._controlledReadableStream._state;
        if (state === "errored") {
          return null;
        }
        if (state === "closed") {
          return 0;
        }
        return controller._strategyHWM - controller._queueTotalSize;
      }
      function ReadableStreamDefaultControllerHasBackpressure(controller) {
        if (ReadableStreamDefaultControllerShouldCallPull(controller)) {
          return false;
        }
        return true;
      }
      function ReadableStreamDefaultControllerCanCloseOrEnqueue(controller) {
        const state = controller._controlledReadableStream._state;
        if (!controller._closeRequested && state === "readable") {
          return true;
        }
        return false;
      }
      function SetUpReadableStreamDefaultController(stream3, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) {
        controller._controlledReadableStream = stream3;
        controller._queue = void 0;
        controller._queueTotalSize = void 0;
        ResetQueue(controller);
        controller._started = false;
        controller._closeRequested = false;
        controller._pullAgain = false;
        controller._pulling = false;
        controller._strategySizeAlgorithm = sizeAlgorithm;
        controller._strategyHWM = highWaterMark;
        controller._pullAlgorithm = pullAlgorithm;
        controller._cancelAlgorithm = cancelAlgorithm;
        stream3._readableStreamController = controller;
        const startResult = startAlgorithm();
        uponPromise(promiseResolvedWith(startResult), () => {
          controller._started = true;
          ReadableStreamDefaultControllerCallPullIfNeeded(controller);
        }, (r2) => {
          ReadableStreamDefaultControllerError(controller, r2);
        });
      }
      function SetUpReadableStreamDefaultControllerFromUnderlyingSource(stream3, underlyingSource, highWaterMark, sizeAlgorithm) {
        const controller = Object.create(ReadableStreamDefaultController.prototype);
        let startAlgorithm = () => void 0;
        let pullAlgorithm = () => promiseResolvedWith(void 0);
        let cancelAlgorithm = () => promiseResolvedWith(void 0);
        if (underlyingSource.start !== void 0) {
          startAlgorithm = () => underlyingSource.start(controller);
        }
        if (underlyingSource.pull !== void 0) {
          pullAlgorithm = () => underlyingSource.pull(controller);
        }
        if (underlyingSource.cancel !== void 0) {
          cancelAlgorithm = (reason) => underlyingSource.cancel(reason);
        }
        SetUpReadableStreamDefaultController(stream3, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);
      }
      function defaultControllerBrandCheckException$1(name3) {
        return new TypeError(`ReadableStreamDefaultController.prototype.${name3} can only be used on a ReadableStreamDefaultController`);
      }
      function ReadableStreamTee(stream3, cloneForBranch2) {
        if (IsReadableByteStreamController(stream3._readableStreamController)) {
          return ReadableByteStreamTee(stream3);
        }
        return ReadableStreamDefaultTee(stream3);
      }
      function ReadableStreamDefaultTee(stream3, cloneForBranch2) {
        const reader = AcquireReadableStreamDefaultReader(stream3);
        let reading = false;
        let readAgain = false;
        let canceled1 = false;
        let canceled2 = false;
        let reason1;
        let reason2;
        let branch1;
        let branch2;
        let resolveCancelPromise;
        const cancelPromise = newPromise((resolve9) => {
          resolveCancelPromise = resolve9;
        });
        function pullAlgorithm() {
          if (reading) {
            readAgain = true;
            return promiseResolvedWith(void 0);
          }
          reading = true;
          const readRequest = {
            _chunkSteps: (chunk) => {
              queueMicrotask2(() => {
                readAgain = false;
                const chunk1 = chunk;
                const chunk2 = chunk;
                if (!canceled1) {
                  ReadableStreamDefaultControllerEnqueue(branch1._readableStreamController, chunk1);
                }
                if (!canceled2) {
                  ReadableStreamDefaultControllerEnqueue(branch2._readableStreamController, chunk2);
                }
                reading = false;
                if (readAgain) {
                  pullAlgorithm();
                }
              });
            },
            _closeSteps: () => {
              reading = false;
              if (!canceled1) {
                ReadableStreamDefaultControllerClose(branch1._readableStreamController);
              }
              if (!canceled2) {
                ReadableStreamDefaultControllerClose(branch2._readableStreamController);
              }
              if (!canceled1 || !canceled2) {
                resolveCancelPromise(void 0);
              }
            },
            _errorSteps: () => {
              reading = false;
            }
          };
          ReadableStreamDefaultReaderRead(reader, readRequest);
          return promiseResolvedWith(void 0);
        }
        function cancel1Algorithm(reason) {
          canceled1 = true;
          reason1 = reason;
          if (canceled2) {
            const compositeReason = CreateArrayFromList([reason1, reason2]);
            const cancelResult = ReadableStreamCancel(stream3, compositeReason);
            resolveCancelPromise(cancelResult);
          }
          return cancelPromise;
        }
        function cancel2Algorithm(reason) {
          canceled2 = true;
          reason2 = reason;
          if (canceled1) {
            const compositeReason = CreateArrayFromList([reason1, reason2]);
            const cancelResult = ReadableStreamCancel(stream3, compositeReason);
            resolveCancelPromise(cancelResult);
          }
          return cancelPromise;
        }
        function startAlgorithm() {
        }
        branch1 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel1Algorithm);
        branch2 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel2Algorithm);
        uponRejection(reader._closedPromise, (r2) => {
          ReadableStreamDefaultControllerError(branch1._readableStreamController, r2);
          ReadableStreamDefaultControllerError(branch2._readableStreamController, r2);
          if (!canceled1 || !canceled2) {
            resolveCancelPromise(void 0);
          }
        });
        return [branch1, branch2];
      }
      function ReadableByteStreamTee(stream3) {
        let reader = AcquireReadableStreamDefaultReader(stream3);
        let reading = false;
        let readAgainForBranch1 = false;
        let readAgainForBranch2 = false;
        let canceled1 = false;
        let canceled2 = false;
        let reason1;
        let reason2;
        let branch1;
        let branch2;
        let resolveCancelPromise;
        const cancelPromise = newPromise((resolve9) => {
          resolveCancelPromise = resolve9;
        });
        function forwardReaderError(thisReader) {
          uponRejection(thisReader._closedPromise, (r2) => {
            if (thisReader !== reader) {
              return;
            }
            ReadableByteStreamControllerError(branch1._readableStreamController, r2);
            ReadableByteStreamControllerError(branch2._readableStreamController, r2);
            if (!canceled1 || !canceled2) {
              resolveCancelPromise(void 0);
            }
          });
        }
        function pullWithDefaultReader() {
          if (IsReadableStreamBYOBReader(reader)) {
            ReadableStreamReaderGenericRelease(reader);
            reader = AcquireReadableStreamDefaultReader(stream3);
            forwardReaderError(reader);
          }
          const readRequest = {
            _chunkSteps: (chunk) => {
              queueMicrotask2(() => {
                readAgainForBranch1 = false;
                readAgainForBranch2 = false;
                const chunk1 = chunk;
                let chunk2 = chunk;
                if (!canceled1 && !canceled2) {
                  try {
                    chunk2 = CloneAsUint8Array(chunk);
                  } catch (cloneE) {
                    ReadableByteStreamControllerError(branch1._readableStreamController, cloneE);
                    ReadableByteStreamControllerError(branch2._readableStreamController, cloneE);
                    resolveCancelPromise(ReadableStreamCancel(stream3, cloneE));
                    return;
                  }
                }
                if (!canceled1) {
                  ReadableByteStreamControllerEnqueue(branch1._readableStreamController, chunk1);
                }
                if (!canceled2) {
                  ReadableByteStreamControllerEnqueue(branch2._readableStreamController, chunk2);
                }
                reading = false;
                if (readAgainForBranch1) {
                  pull1Algorithm();
                } else if (readAgainForBranch2) {
                  pull2Algorithm();
                }
              });
            },
            _closeSteps: () => {
              reading = false;
              if (!canceled1) {
                ReadableByteStreamControllerClose(branch1._readableStreamController);
              }
              if (!canceled2) {
                ReadableByteStreamControllerClose(branch2._readableStreamController);
              }
              if (branch1._readableStreamController._pendingPullIntos.length > 0) {
                ReadableByteStreamControllerRespond(branch1._readableStreamController, 0);
              }
              if (branch2._readableStreamController._pendingPullIntos.length > 0) {
                ReadableByteStreamControllerRespond(branch2._readableStreamController, 0);
              }
              if (!canceled1 || !canceled2) {
                resolveCancelPromise(void 0);
              }
            },
            _errorSteps: () => {
              reading = false;
            }
          };
          ReadableStreamDefaultReaderRead(reader, readRequest);
        }
        function pullWithBYOBReader(view, forBranch2) {
          if (IsReadableStreamDefaultReader(reader)) {
            ReadableStreamReaderGenericRelease(reader);
            reader = AcquireReadableStreamBYOBReader(stream3);
            forwardReaderError(reader);
          }
          const byobBranch = forBranch2 ? branch2 : branch1;
          const otherBranch = forBranch2 ? branch1 : branch2;
          const readIntoRequest = {
            _chunkSteps: (chunk) => {
              queueMicrotask2(() => {
                readAgainForBranch1 = false;
                readAgainForBranch2 = false;
                const byobCanceled = forBranch2 ? canceled2 : canceled1;
                const otherCanceled = forBranch2 ? canceled1 : canceled2;
                if (!otherCanceled) {
                  let clonedChunk;
                  try {
                    clonedChunk = CloneAsUint8Array(chunk);
                  } catch (cloneE) {
                    ReadableByteStreamControllerError(byobBranch._readableStreamController, cloneE);
                    ReadableByteStreamControllerError(otherBranch._readableStreamController, cloneE);
                    resolveCancelPromise(ReadableStreamCancel(stream3, cloneE));
                    return;
                  }
                  if (!byobCanceled) {
                    ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk);
                  }
                  ReadableByteStreamControllerEnqueue(otherBranch._readableStreamController, clonedChunk);
                } else if (!byobCanceled) {
                  ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk);
                }
                reading = false;
                if (readAgainForBranch1) {
                  pull1Algorithm();
                } else if (readAgainForBranch2) {
                  pull2Algorithm();
                }
              });
            },
            _closeSteps: (chunk) => {
              reading = false;
              const byobCanceled = forBranch2 ? canceled2 : canceled1;
              const otherCanceled = forBranch2 ? canceled1 : canceled2;
              if (!byobCanceled) {
                ReadableByteStreamControllerClose(byobBranch._readableStreamController);
              }
              if (!otherCanceled) {
                ReadableByteStreamControllerClose(otherBranch._readableStreamController);
              }
              if (chunk !== void 0) {
                if (!byobCanceled) {
                  ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk);
                }
                if (!otherCanceled && otherBranch._readableStreamController._pendingPullIntos.length > 0) {
                  ReadableByteStreamControllerRespond(otherBranch._readableStreamController, 0);
                }
              }
              if (!byobCanceled || !otherCanceled) {
                resolveCancelPromise(void 0);
              }
            },
            _errorSteps: () => {
              reading = false;
            }
          };
          ReadableStreamBYOBReaderRead(reader, view, readIntoRequest);
        }
        function pull1Algorithm() {
          if (reading) {
            readAgainForBranch1 = true;
            return promiseResolvedWith(void 0);
          }
          reading = true;
          const byobRequest = ReadableByteStreamControllerGetBYOBRequest(branch1._readableStreamController);
          if (byobRequest === null) {
            pullWithDefaultReader();
          } else {
            pullWithBYOBReader(byobRequest._view, false);
          }
          return promiseResolvedWith(void 0);
        }
        function pull2Algorithm() {
          if (reading) {
            readAgainForBranch2 = true;
            return promiseResolvedWith(void 0);
          }
          reading = true;
          const byobRequest = ReadableByteStreamControllerGetBYOBRequest(branch2._readableStreamController);
          if (byobRequest === null) {
            pullWithDefaultReader();
          } else {
            pullWithBYOBReader(byobRequest._view, true);
          }
          return promiseResolvedWith(void 0);
        }
        function cancel1Algorithm(reason) {
          canceled1 = true;
          reason1 = reason;
          if (canceled2) {
            const compositeReason = CreateArrayFromList([reason1, reason2]);
            const cancelResult = ReadableStreamCancel(stream3, compositeReason);
            resolveCancelPromise(cancelResult);
          }
          return cancelPromise;
        }
        function cancel2Algorithm(reason) {
          canceled2 = true;
          reason2 = reason;
          if (canceled1) {
            const compositeReason = CreateArrayFromList([reason1, reason2]);
            const cancelResult = ReadableStreamCancel(stream3, compositeReason);
            resolveCancelPromise(cancelResult);
          }
          return cancelPromise;
        }
        function startAlgorithm() {
          return;
        }
        branch1 = CreateReadableByteStream(startAlgorithm, pull1Algorithm, cancel1Algorithm);
        branch2 = CreateReadableByteStream(startAlgorithm, pull2Algorithm, cancel2Algorithm);
        forwardReaderError(reader);
        return [branch1, branch2];
      }
      function convertUnderlyingDefaultOrByteSource(source2, context) {
        assertDictionary(source2, context);
        const original = source2;
        const autoAllocateChunkSize = original === null || original === void 0 ? void 0 : original.autoAllocateChunkSize;
        const cancel = original === null || original === void 0 ? void 0 : original.cancel;
        const pull = original === null || original === void 0 ? void 0 : original.pull;
        const start = original === null || original === void 0 ? void 0 : original.start;
        const type2 = original === null || original === void 0 ? void 0 : original.type;
        return {
          autoAllocateChunkSize: autoAllocateChunkSize === void 0 ? void 0 : convertUnsignedLongLongWithEnforceRange(autoAllocateChunkSize, `${context} has member 'autoAllocateChunkSize' that`),
          cancel: cancel === void 0 ? void 0 : convertUnderlyingSourceCancelCallback(cancel, original, `${context} has member 'cancel' that`),
          pull: pull === void 0 ? void 0 : convertUnderlyingSourcePullCallback(pull, original, `${context} has member 'pull' that`),
          start: start === void 0 ? void 0 : convertUnderlyingSourceStartCallback(start, original, `${context} has member 'start' that`),
          type: type2 === void 0 ? void 0 : convertReadableStreamType(type2, `${context} has member 'type' that`)
        };
      }
      function convertUnderlyingSourceCancelCallback(fn, original, context) {
        assertFunction2(fn, context);
        return (reason) => promiseCall(fn, original, [reason]);
      }
      function convertUnderlyingSourcePullCallback(fn, original, context) {
        assertFunction2(fn, context);
        return (controller) => promiseCall(fn, original, [controller]);
      }
      function convertUnderlyingSourceStartCallback(fn, original, context) {
        assertFunction2(fn, context);
        return (controller) => reflectCall(fn, original, [controller]);
      }
      function convertReadableStreamType(type2, context) {
        type2 = `${type2}`;
        if (type2 !== "bytes") {
          throw new TypeError(`${context} '${type2}' is not a valid enumeration value for ReadableStreamType`);
        }
        return type2;
      }
      function convertReaderOptions(options, context) {
        assertDictionary(options, context);
        const mode = options === null || options === void 0 ? void 0 : options.mode;
        return {
          mode: mode === void 0 ? void 0 : convertReadableStreamReaderMode(mode, `${context} has member 'mode' that`)
        };
      }
      function convertReadableStreamReaderMode(mode, context) {
        mode = `${mode}`;
        if (mode !== "byob") {
          throw new TypeError(`${context} '${mode}' is not a valid enumeration value for ReadableStreamReaderMode`);
        }
        return mode;
      }
      function convertIteratorOptions(options, context) {
        assertDictionary(options, context);
        const preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel;
        return { preventCancel: Boolean(preventCancel) };
      }
      function convertPipeOptions(options, context) {
        assertDictionary(options, context);
        const preventAbort = options === null || options === void 0 ? void 0 : options.preventAbort;
        const preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel;
        const preventClose = options === null || options === void 0 ? void 0 : options.preventClose;
        const signal = options === null || options === void 0 ? void 0 : options.signal;
        if (signal !== void 0) {
          assertAbortSignal(signal, `${context} has member 'signal' that`);
        }
        return {
          preventAbort: Boolean(preventAbort),
          preventCancel: Boolean(preventCancel),
          preventClose: Boolean(preventClose),
          signal
        };
      }
      function assertAbortSignal(signal, context) {
        if (!isAbortSignal2(signal)) {
          throw new TypeError(`${context} is not an AbortSignal.`);
        }
      }
      function convertReadableWritablePair(pair, context) {
        assertDictionary(pair, context);
        const readable = pair === null || pair === void 0 ? void 0 : pair.readable;
        assertRequiredField(readable, "readable", "ReadableWritablePair");
        assertReadableStream(readable, `${context} has member 'readable' that`);
        const writable = pair === null || pair === void 0 ? void 0 : pair.writable;
        assertRequiredField(writable, "writable", "ReadableWritablePair");
        assertWritableStream(writable, `${context} has member 'writable' that`);
        return { readable, writable };
      }
      class ReadableStream3 {
        constructor(rawUnderlyingSource = {}, rawStrategy = {}) {
          if (rawUnderlyingSource === void 0) {
            rawUnderlyingSource = null;
          } else {
            assertObject(rawUnderlyingSource, "First parameter");
          }
          const strategy = convertQueuingStrategy(rawStrategy, "Second parameter");
          const underlyingSource = convertUnderlyingDefaultOrByteSource(rawUnderlyingSource, "First parameter");
          InitializeReadableStream(this);
          if (underlyingSource.type === "bytes") {
            if (strategy.size !== void 0) {
              throw new RangeError("The strategy for a byte stream cannot have a size function");
            }
            const highWaterMark = ExtractHighWaterMark(strategy, 0);
            SetUpReadableByteStreamControllerFromUnderlyingSource(this, underlyingSource, highWaterMark);
          } else {
            const sizeAlgorithm = ExtractSizeAlgorithm(strategy);
            const highWaterMark = ExtractHighWaterMark(strategy, 1);
            SetUpReadableStreamDefaultControllerFromUnderlyingSource(this, underlyingSource, highWaterMark, sizeAlgorithm);
          }
        }
        /**
         * Whether or not the readable stream is locked to a {@link ReadableStreamDefaultReader | reader}.
         */
        get locked() {
          if (!IsReadableStream(this)) {
            throw streamBrandCheckException$1("locked");
          }
          return IsReadableStreamLocked(this);
        }
        /**
         * Cancels the stream, signaling a loss of interest in the stream by a consumer.
         *
         * The supplied `reason` argument will be given to the underlying source's {@link UnderlyingSource.cancel | cancel()}
         * method, which might or might not use it.
         */
        cancel(reason = void 0) {
          if (!IsReadableStream(this)) {
            return promiseRejectedWith(streamBrandCheckException$1("cancel"));
          }
          if (IsReadableStreamLocked(this)) {
            return promiseRejectedWith(new TypeError("Cannot cancel a stream that already has a reader"));
          }
          return ReadableStreamCancel(this, reason);
        }
        getReader(rawOptions = void 0) {
          if (!IsReadableStream(this)) {
            throw streamBrandCheckException$1("getReader");
          }
          const options = convertReaderOptions(rawOptions, "First parameter");
          if (options.mode === void 0) {
            return AcquireReadableStreamDefaultReader(this);
          }
          return AcquireReadableStreamBYOBReader(this);
        }
        pipeThrough(rawTransform, rawOptions = {}) {
          if (!IsReadableStream(this)) {
            throw streamBrandCheckException$1("pipeThrough");
          }
          assertRequiredArgument(rawTransform, 1, "pipeThrough");
          const transform3 = convertReadableWritablePair(rawTransform, "First parameter");
          const options = convertPipeOptions(rawOptions, "Second parameter");
          if (IsReadableStreamLocked(this)) {
            throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream");
          }
          if (IsWritableStreamLocked(transform3.writable)) {
            throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream");
          }
          const promise = ReadableStreamPipeTo(this, transform3.writable, options.preventClose, options.preventAbort, options.preventCancel, options.signal);
          setPromiseIsHandledToTrue(promise);
          return transform3.readable;
        }
        pipeTo(destination, rawOptions = {}) {
          if (!IsReadableStream(this)) {
            return promiseRejectedWith(streamBrandCheckException$1("pipeTo"));
          }
          if (destination === void 0) {
            return promiseRejectedWith(`Parameter 1 is required in 'pipeTo'.`);
          }
          if (!IsWritableStream(destination)) {
            return promiseRejectedWith(new TypeError(`ReadableStream.prototype.pipeTo's first argument must be a WritableStream`));
          }
          let options;
          try {
            options = convertPipeOptions(rawOptions, "Second parameter");
          } catch (e2) {
            return promiseRejectedWith(e2);
          }
          if (IsReadableStreamLocked(this)) {
            return promiseRejectedWith(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream"));
          }
          if (IsWritableStreamLocked(destination)) {
            return promiseRejectedWith(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream"));
          }
          return ReadableStreamPipeTo(this, destination, options.preventClose, options.preventAbort, options.preventCancel, options.signal);
        }
        /**
         * Tees this readable stream, returning a two-element array containing the two resulting branches as
         * new {@link ReadableStream} instances.
         *
         * Teeing a stream will lock it, preventing any other consumer from acquiring a reader.
         * To cancel the stream, cancel both of the resulting branches; a composite cancellation reason will then be
         * propagated to the stream's underlying source.
         *
         * Note that the chunks seen in each branch will be the same object. If the chunks are not immutable,
         * this could allow interference between the two branches.
         */
        tee() {
          if (!IsReadableStream(this)) {
            throw streamBrandCheckException$1("tee");
          }
          const branches = ReadableStreamTee(this);
          return CreateArrayFromList(branches);
        }
        values(rawOptions = void 0) {
          if (!IsReadableStream(this)) {
            throw streamBrandCheckException$1("values");
          }
          const options = convertIteratorOptions(rawOptions, "First parameter");
          return AcquireReadableStreamAsyncIterator(this, options.preventCancel);
        }
      }
      Object.defineProperties(ReadableStream3.prototype, {
        cancel: { enumerable: true },
        getReader: { enumerable: true },
        pipeThrough: { enumerable: true },
        pipeTo: { enumerable: true },
        tee: { enumerable: true },
        values: { enumerable: true },
        locked: { enumerable: true }
      });
      if (typeof SymbolPolyfill.toStringTag === "symbol") {
        Object.defineProperty(ReadableStream3.prototype, SymbolPolyfill.toStringTag, {
          value: "ReadableStream",
          configurable: true
        });
      }
      if (typeof SymbolPolyfill.asyncIterator === "symbol") {
        Object.defineProperty(ReadableStream3.prototype, SymbolPolyfill.asyncIterator, {
          value: ReadableStream3.prototype.values,
          writable: true,
          configurable: true
        });
      }
      function CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark = 1, sizeAlgorithm = () => 1) {
        const stream3 = Object.create(ReadableStream3.prototype);
        InitializeReadableStream(stream3);
        const controller = Object.create(ReadableStreamDefaultController.prototype);
        SetUpReadableStreamDefaultController(stream3, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);
        return stream3;
      }
      function CreateReadableByteStream(startAlgorithm, pullAlgorithm, cancelAlgorithm) {
        const stream3 = Object.create(ReadableStream3.prototype);
        InitializeReadableStream(stream3);
        const controller = Object.create(ReadableByteStreamController.prototype);
        SetUpReadableByteStreamController(stream3, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, 0, void 0);
        return stream3;
      }
      function InitializeReadableStream(stream3) {
        stream3._state = "readable";
        stream3._reader = void 0;
        stream3._storedError = void 0;
        stream3._disturbed = false;
      }
      function IsReadableStream(x2) {
        if (!typeIsObject(x2)) {
          return false;
        }
        if (!Object.prototype.hasOwnProperty.call(x2, "_readableStreamController")) {
          return false;
        }
        return x2 instanceof ReadableStream3;
      }
      function IsReadableStreamLocked(stream3) {
        if (stream3._reader === void 0) {
          return false;
        }
        return true;
      }
      function ReadableStreamCancel(stream3, reason) {
        stream3._disturbed = true;
        if (stream3._state === "closed") {
          return promiseResolvedWith(void 0);
        }
        if (stream3._state === "errored") {
          return promiseRejectedWith(stream3._storedError);
        }
        ReadableStreamClose(stream3);
        const reader = stream3._reader;
        if (reader !== void 0 && IsReadableStreamBYOBReader(reader)) {
          reader._readIntoRequests.forEach((readIntoRequest) => {
            readIntoRequest._closeSteps(void 0);
          });
          reader._readIntoRequests = new SimpleQueue();
        }
        const sourceCancelPromise = stream3._readableStreamController[CancelSteps](reason);
        return transformPromiseWith(sourceCancelPromise, noop5);
      }
      function ReadableStreamClose(stream3) {
        stream3._state = "closed";
        const reader = stream3._reader;
        if (reader === void 0) {
          return;
        }
        defaultReaderClosedPromiseResolve(reader);
        if (IsReadableStreamDefaultReader(reader)) {
          reader._readRequests.forEach((readRequest) => {
            readRequest._closeSteps();
          });
          reader._readRequests = new SimpleQueue();
        }
      }
      function ReadableStreamError(stream3, e2) {
        stream3._state = "errored";
        stream3._storedError = e2;
        const reader = stream3._reader;
        if (reader === void 0) {
          return;
        }
        defaultReaderClosedPromiseReject(reader, e2);
        if (IsReadableStreamDefaultReader(reader)) {
          reader._readRequests.forEach((readRequest) => {
            readRequest._errorSteps(e2);
          });
          reader._readRequests = new SimpleQueue();
        } else {
          reader._readIntoRequests.forEach((readIntoRequest) => {
            readIntoRequest._errorSteps(e2);
          });
          reader._readIntoRequests = new SimpleQueue();
        }
      }
      function streamBrandCheckException$1(name3) {
        return new TypeError(`ReadableStream.prototype.${name3} can only be used on a ReadableStream`);
      }
      function convertQueuingStrategyInit(init4, context) {
        assertDictionary(init4, context);
        const highWaterMark = init4 === null || init4 === void 0 ? void 0 : init4.highWaterMark;
        assertRequiredField(highWaterMark, "highWaterMark", "QueuingStrategyInit");
        return {
          highWaterMark: convertUnrestrictedDouble(highWaterMark)
        };
      }
      const byteLengthSizeFunction = (chunk) => {
        return chunk.byteLength;
      };
      try {
        Object.defineProperty(byteLengthSizeFunction, "name", {
          value: "size",
          configurable: true
        });
      } catch (_a6) {
      }
      class ByteLengthQueuingStrategy {
        constructor(options) {
          assertRequiredArgument(options, 1, "ByteLengthQueuingStrategy");
          options = convertQueuingStrategyInit(options, "First parameter");
          this._byteLengthQueuingStrategyHighWaterMark = options.highWaterMark;
        }
        /**
         * Returns the high water mark provided to the constructor.
         */
        get highWaterMark() {
          if (!IsByteLengthQueuingStrategy(this)) {
            throw byteLengthBrandCheckException("highWaterMark");
          }
          return this._byteLengthQueuingStrategyHighWaterMark;
        }
        /**
         * Measures the size of `chunk` by returning the value of its `byteLength` property.
         */
        get size() {
          if (!IsByteLengthQueuingStrategy(this)) {
            throw byteLengthBrandCheckException("size");
          }
          return byteLengthSizeFunction;
        }
      }
      Object.defineProperties(ByteLengthQueuingStrategy.prototype, {
        highWaterMark: { enumerable: true },
        size: { enumerable: true }
      });
      if (typeof SymbolPolyfill.toStringTag === "symbol") {
        Object.defineProperty(ByteLengthQueuingStrategy.prototype, SymbolPolyfill.toStringTag, {
          value: "ByteLengthQueuingStrategy",
          configurable: true
        });
      }
      function byteLengthBrandCheckException(name3) {
        return new TypeError(`ByteLengthQueuingStrategy.prototype.${name3} can only be used on a ByteLengthQueuingStrategy`);
      }
      function IsByteLengthQueuingStrategy(x2) {
        if (!typeIsObject(x2)) {
          return false;
        }
        if (!Object.prototype.hasOwnProperty.call(x2, "_byteLengthQueuingStrategyHighWaterMark")) {
          return false;
        }
        return x2 instanceof ByteLengthQueuingStrategy;
      }
      const countSizeFunction = () => {
        return 1;
      };
      try {
        Object.defineProperty(countSizeFunction, "name", {
          value: "size",
          configurable: true
        });
      } catch (_a6) {
      }
      class CountQueuingStrategy {
        constructor(options) {
          assertRequiredArgument(options, 1, "CountQueuingStrategy");
          options = convertQueuingStrategyInit(options, "First parameter");
          this._countQueuingStrategyHighWaterMark = options.highWaterMark;
        }
        /**
         * Returns the high water mark provided to the constructor.
         */
        get highWaterMark() {
          if (!IsCountQueuingStrategy(this)) {
            throw countBrandCheckException("highWaterMark");
          }
          return this._countQueuingStrategyHighWaterMark;
        }
        /**
         * Measures the size of `chunk` by always returning 1.
         * This ensures that the total queue size is a count of the number of chunks in the queue.
         */
        get size() {
          if (!IsCountQueuingStrategy(this)) {
            throw countBrandCheckException("size");
          }
          return countSizeFunction;
        }
      }
      Object.defineProperties(CountQueuingStrategy.prototype, {
        highWaterMark: { enumerable: true },
        size: { enumerable: true }
      });
      if (typeof SymbolPolyfill.toStringTag === "symbol") {
        Object.defineProperty(CountQueuingStrategy.prototype, SymbolPolyfill.toStringTag, {
          value: "CountQueuingStrategy",
          configurable: true
        });
      }
      function countBrandCheckException(name3) {
        return new TypeError(`CountQueuingStrategy.prototype.${name3} can only be used on a CountQueuingStrategy`);
      }
      function IsCountQueuingStrategy(x2) {
        if (!typeIsObject(x2)) {
          return false;
        }
        if (!Object.prototype.hasOwnProperty.call(x2, "_countQueuingStrategyHighWaterMark")) {
          return false;
        }
        return x2 instanceof CountQueuingStrategy;
      }
      function convertTransformer(original, context) {
        assertDictionary(original, context);
        const flush = original === null || original === void 0 ? void 0 : original.flush;
        const readableType = original === null || original === void 0 ? void 0 : original.readableType;
        const start = original === null || original === void 0 ? void 0 : original.start;
        const transform3 = original === null || original === void 0 ? void 0 : original.transform;
        const writableType = original === null || original === void 0 ? void 0 : original.writableType;
        return {
          flush: flush === void 0 ? void 0 : convertTransformerFlushCallback(flush, original, `${context} has member 'flush' that`),
          readableType,
          start: start === void 0 ? void 0 : convertTransformerStartCallback(start, original, `${context} has member 'start' that`),
          transform: transform3 === void 0 ? void 0 : convertTransformerTransformCallback(transform3, original, `${context} has member 'transform' that`),
          writableType
        };
      }
      function convertTransformerFlushCallback(fn, original, context) {
        assertFunction2(fn, context);
        return (controller) => promiseCall(fn, original, [controller]);
      }
      function convertTransformerStartCallback(fn, original, context) {
        assertFunction2(fn, context);
        return (controller) => reflectCall(fn, original, [controller]);
      }
      function convertTransformerTransformCallback(fn, original, context) {
        assertFunction2(fn, context);
        return (chunk, controller) => promiseCall(fn, original, [chunk, controller]);
      }
      class TransformStream {
        constructor(rawTransformer = {}, rawWritableStrategy = {}, rawReadableStrategy = {}) {
          if (rawTransformer === void 0) {
            rawTransformer = null;
          }
          const writableStrategy = convertQueuingStrategy(rawWritableStrategy, "Second parameter");
          const readableStrategy = convertQueuingStrategy(rawReadableStrategy, "Third parameter");
          const transformer = convertTransformer(rawTransformer, "First parameter");
          if (transformer.readableType !== void 0) {
            throw new RangeError("Invalid readableType specified");
          }
          if (transformer.writableType !== void 0) {
            throw new RangeError("Invalid writableType specified");
          }
          const readableHighWaterMark = ExtractHighWaterMark(readableStrategy, 0);
          const readableSizeAlgorithm = ExtractSizeAlgorithm(readableStrategy);
          const writableHighWaterMark = ExtractHighWaterMark(writableStrategy, 1);
          const writableSizeAlgorithm = ExtractSizeAlgorithm(writableStrategy);
          let startPromise_resolve;
          const startPromise = newPromise((resolve9) => {
            startPromise_resolve = resolve9;
          });
          InitializeTransformStream(this, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm);
          SetUpTransformStreamDefaultControllerFromTransformer(this, transformer);
          if (transformer.start !== void 0) {
            startPromise_resolve(transformer.start(this._transformStreamController));
          } else {
            startPromise_resolve(void 0);
          }
        }
        /**
         * The readable side of the transform stream.
         */
        get readable() {
          if (!IsTransformStream(this)) {
            throw streamBrandCheckException("readable");
          }
          return this._readable;
        }
        /**
         * The writable side of the transform stream.
         */
        get writable() {
          if (!IsTransformStream(this)) {
            throw streamBrandCheckException("writable");
          }
          return this._writable;
        }
      }
      Object.defineProperties(TransformStream.prototype, {
        readable: { enumerable: true },
        writable: { enumerable: true }
      });
      if (typeof SymbolPolyfill.toStringTag === "symbol") {
        Object.defineProperty(TransformStream.prototype, SymbolPolyfill.toStringTag, {
          value: "TransformStream",
          configurable: true
        });
      }
      function InitializeTransformStream(stream3, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm) {
        function startAlgorithm() {
          return startPromise;
        }
        function writeAlgorithm(chunk) {
          return TransformStreamDefaultSinkWriteAlgorithm(stream3, chunk);
        }
        function abortAlgorithm(reason) {
          return TransformStreamDefaultSinkAbortAlgorithm(stream3, reason);
        }
        function closeAlgorithm() {
          return TransformStreamDefaultSinkCloseAlgorithm(stream3);
        }
        stream3._writable = CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, writableHighWaterMark, writableSizeAlgorithm);
        function pullAlgorithm() {
          return TransformStreamDefaultSourcePullAlgorithm(stream3);
        }
        function cancelAlgorithm(reason) {
          TransformStreamErrorWritableAndUnblockWrite(stream3, reason);
          return promiseResolvedWith(void 0);
        }
        stream3._readable = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, readableHighWaterMark, readableSizeAlgorithm);
        stream3._backpressure = void 0;
        stream3._backpressureChangePromise = void 0;
        stream3._backpressureChangePromise_resolve = void 0;
        TransformStreamSetBackpressure(stream3, true);
        stream3._transformStreamController = void 0;
      }
      function IsTransformStream(x2) {
        if (!typeIsObject(x2)) {
          return false;
        }
        if (!Object.prototype.hasOwnProperty.call(x2, "_transformStreamController")) {
          return false;
        }
        return x2 instanceof TransformStream;
      }
      function TransformStreamError(stream3, e2) {
        ReadableStreamDefaultControllerError(stream3._readable._readableStreamController, e2);
        TransformStreamErrorWritableAndUnblockWrite(stream3, e2);
      }
      function TransformStreamErrorWritableAndUnblockWrite(stream3, e2) {
        TransformStreamDefaultControllerClearAlgorithms(stream3._transformStreamController);
        WritableStreamDefaultControllerErrorIfNeeded(stream3._writable._writableStreamController, e2);
        if (stream3._backpressure) {
          TransformStreamSetBackpressure(stream3, false);
        }
      }
      function TransformStreamSetBackpressure(stream3, backpressure) {
        if (stream3._backpressureChangePromise !== void 0) {
          stream3._backpressureChangePromise_resolve();
        }
        stream3._backpressureChangePromise = newPromise((resolve9) => {
          stream3._backpressureChangePromise_resolve = resolve9;
        });
        stream3._backpressure = backpressure;
      }
      class TransformStreamDefaultController {
        constructor() {
          throw new TypeError("Illegal constructor");
        }
        /**
         * Returns the desired size to fill the readable side’s internal queue. It can be negative, if the queue is over-full.
         */
        get desiredSize() {
          if (!IsTransformStreamDefaultController(this)) {
            throw defaultControllerBrandCheckException("desiredSize");
          }
          const readableController = this._controlledTransformStream._readable._readableStreamController;
          return ReadableStreamDefaultControllerGetDesiredSize(readableController);
        }
        enqueue(chunk = void 0) {
          if (!IsTransformStreamDefaultController(this)) {
            throw defaultControllerBrandCheckException("enqueue");
          }
          TransformStreamDefaultControllerEnqueue(this, chunk);
        }
        /**
         * Errors both the readable side and the writable side of the controlled transform stream, making all future
         * interactions with it fail with the given error `e`. Any chunks queued for transformation will be discarded.
         */
        error(reason = void 0) {
          if (!IsTransformStreamDefaultController(this)) {
            throw defaultControllerBrandCheckException("error");
          }
          TransformStreamDefaultControllerError(this, reason);
        }
        /**
         * Closes the readable side and errors the writable side of the controlled transform stream. This is useful when the
         * transformer only needs to consume a portion of the chunks written to the writable side.
         */
        terminate() {
          if (!IsTransformStreamDefaultController(this)) {
            throw defaultControllerBrandCheckException("terminate");
          }
          TransformStreamDefaultControllerTerminate(this);
        }
      }
      Object.defineProperties(TransformStreamDefaultController.prototype, {
        enqueue: { enumerable: true },
        error: { enumerable: true },
        terminate: { enumerable: true },
        desiredSize: { enumerable: true }
      });
      if (typeof SymbolPolyfill.toStringTag === "symbol") {
        Object.defineProperty(TransformStreamDefaultController.prototype, SymbolPolyfill.toStringTag, {
          value: "TransformStreamDefaultController",
          configurable: true
        });
      }
      function IsTransformStreamDefaultController(x2) {
        if (!typeIsObject(x2)) {
          return false;
        }
        if (!Object.prototype.hasOwnProperty.call(x2, "_controlledTransformStream")) {
          return false;
        }
        return x2 instanceof TransformStreamDefaultController;
      }
      function SetUpTransformStreamDefaultController(stream3, controller, transformAlgorithm, flushAlgorithm) {
        controller._controlledTransformStream = stream3;
        stream3._transformStreamController = controller;
        controller._transformAlgorithm = transformAlgorithm;
        controller._flushAlgorithm = flushAlgorithm;
      }
      function SetUpTransformStreamDefaultControllerFromTransformer(stream3, transformer) {
        const controller = Object.create(TransformStreamDefaultController.prototype);
        let transformAlgorithm = (chunk) => {
          try {
            TransformStreamDefaultControllerEnqueue(controller, chunk);
            return promiseResolvedWith(void 0);
          } catch (transformResultE) {
            return promiseRejectedWith(transformResultE);
          }
        };
        let flushAlgorithm = () => promiseResolvedWith(void 0);
        if (transformer.transform !== void 0) {
          transformAlgorithm = (chunk) => transformer.transform(chunk, controller);
        }
        if (transformer.flush !== void 0) {
          flushAlgorithm = () => transformer.flush(controller);
        }
        SetUpTransformStreamDefaultController(stream3, controller, transformAlgorithm, flushAlgorithm);
      }
      function TransformStreamDefaultControllerClearAlgorithms(controller) {
        controller._transformAlgorithm = void 0;
        controller._flushAlgorithm = void 0;
      }
      function TransformStreamDefaultControllerEnqueue(controller, chunk) {
        const stream3 = controller._controlledTransformStream;
        const readableController = stream3._readable._readableStreamController;
        if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController)) {
          throw new TypeError("Readable side is not in a state that permits enqueue");
        }
        try {
          ReadableStreamDefaultControllerEnqueue(readableController, chunk);
        } catch (e2) {
          TransformStreamErrorWritableAndUnblockWrite(stream3, e2);
          throw stream3._readable._storedError;
        }
        const backpressure = ReadableStreamDefaultControllerHasBackpressure(readableController);
        if (backpressure !== stream3._backpressure) {
          TransformStreamSetBackpressure(stream3, true);
        }
      }
      function TransformStreamDefaultControllerError(controller, e2) {
        TransformStreamError(controller._controlledTransformStream, e2);
      }
      function TransformStreamDefaultControllerPerformTransform(controller, chunk) {
        const transformPromise = controller._transformAlgorithm(chunk);
        return transformPromiseWith(transformPromise, void 0, (r2) => {
          TransformStreamError(controller._controlledTransformStream, r2);
          throw r2;
        });
      }
      function TransformStreamDefaultControllerTerminate(controller) {
        const stream3 = controller._controlledTransformStream;
        const readableController = stream3._readable._readableStreamController;
        ReadableStreamDefaultControllerClose(readableController);
        const error = new TypeError("TransformStream terminated");
        TransformStreamErrorWritableAndUnblockWrite(stream3, error);
      }
      function TransformStreamDefaultSinkWriteAlgorithm(stream3, chunk) {
        const controller = stream3._transformStreamController;
        if (stream3._backpressure) {
          const backpressureChangePromise = stream3._backpressureChangePromise;
          return transformPromiseWith(backpressureChangePromise, () => {
            const writable = stream3._writable;
            const state = writable._state;
            if (state === "erroring") {
              throw writable._storedError;
            }
            return TransformStreamDefaultControllerPerformTransform(controller, chunk);
          });
        }
        return TransformStreamDefaultControllerPerformTransform(controller, chunk);
      }
      function TransformStreamDefaultSinkAbortAlgorithm(stream3, reason) {
        TransformStreamError(stream3, reason);
        return promiseResolvedWith(void 0);
      }
      function TransformStreamDefaultSinkCloseAlgorithm(stream3) {
        const readable = stream3._readable;
        const controller = stream3._transformStreamController;
        const flushPromise = controller._flushAlgorithm();
        TransformStreamDefaultControllerClearAlgorithms(controller);
        return transformPromiseWith(flushPromise, () => {
          if (readable._state === "errored") {
            throw readable._storedError;
          }
          ReadableStreamDefaultControllerClose(readable._readableStreamController);
        }, (r2) => {
          TransformStreamError(stream3, r2);
          throw readable._storedError;
        });
      }
      function TransformStreamDefaultSourcePullAlgorithm(stream3) {
        TransformStreamSetBackpressure(stream3, false);
        return stream3._backpressureChangePromise;
      }
      function defaultControllerBrandCheckException(name3) {
        return new TypeError(`TransformStreamDefaultController.prototype.${name3} can only be used on a TransformStreamDefaultController`);
      }
      function streamBrandCheckException(name3) {
        return new TypeError(`TransformStream.prototype.${name3} can only be used on a TransformStream`);
      }
      exports3.ByteLengthQueuingStrategy = ByteLengthQueuingStrategy;
      exports3.CountQueuingStrategy = CountQueuingStrategy;
      exports3.ReadableByteStreamController = ReadableByteStreamController;
      exports3.ReadableStream = ReadableStream3;
      exports3.ReadableStreamBYOBReader = ReadableStreamBYOBReader;
      exports3.ReadableStreamBYOBRequest = ReadableStreamBYOBRequest;
      exports3.ReadableStreamDefaultController = ReadableStreamDefaultController;
      exports3.ReadableStreamDefaultReader = ReadableStreamDefaultReader;
      exports3.TransformStream = TransformStream;
      exports3.TransformStreamDefaultController = TransformStreamDefaultController;
      exports3.WritableStream = WritableStream;
      exports3.WritableStreamDefaultController = WritableStreamDefaultController;
      exports3.WritableStreamDefaultWriter = WritableStreamDefaultWriter;
      Object.defineProperty(exports3, "__esModule", { value: true });
    }));
  }
});

// ../../node_modules/fetch-blob/streams.cjs
var require_streams = __commonJS({
  "../../node_modules/fetch-blob/streams.cjs"() {
    var POOL_SIZE2 = 65536;
    if (!globalThis.ReadableStream) {
      try {
        const process11 = require("process");
        const { emitWarning: emitWarning2 } = process11;
        try {
          process11.emitWarning = () => {
          };
          Object.assign(globalThis, require("stream/web"));
          process11.emitWarning = emitWarning2;
        } catch (error) {
          process11.emitWarning = emitWarning2;
          throw error;
        }
      } catch (error) {
        Object.assign(globalThis, require_ponyfill_es2018());
      }
    }
    try {
      const { Blob: Blob3 } = require("buffer");
      if (Blob3 && !Blob3.prototype.stream) {
        Blob3.prototype.stream = function name3(params) {
          let position6 = 0;
          const blob = this;
          return new ReadableStream({
            type: "bytes",
            async pull(ctrl) {
              const chunk = blob.slice(position6, Math.min(blob.size, position6 + POOL_SIZE2));
              const buffer2 = await chunk.arrayBuffer();
              position6 += buffer2.byteLength;
              ctrl.enqueue(new Uint8Array(buffer2));
              if (position6 === blob.size) {
                ctrl.close();
              }
            }
          });
        };
      }
    } catch (error) {
    }
  }
});

// ../../node_modules/fetch-blob/index.js
async function* toIterator(parts, clone3 = true) {
  for (const part of parts) {
    if ("stream" in part) {
      yield* (
        /** @type {AsyncIterableIterator<Uint8Array>} */
        part.stream()
      );
    } else if (ArrayBuffer.isView(part)) {
      if (clone3) {
        let position6 = part.byteOffset;
        const end = part.byteOffset + part.byteLength;
        while (position6 !== end) {
          const size = Math.min(end - position6, POOL_SIZE);
          const chunk = part.buffer.slice(position6, position6 + size);
          position6 += chunk.byteLength;
          yield new Uint8Array(chunk);
        }
      } else {
        yield part;
      }
    } else {
      let position6 = 0, b = (
        /** @type {Blob} */
        part
      );
      while (position6 !== b.size) {
        const chunk = b.slice(position6, Math.min(b.size, position6 + POOL_SIZE));
        const buffer2 = await chunk.arrayBuffer();
        position6 += buffer2.byteLength;
        yield new Uint8Array(buffer2);
      }
    }
  }
}
var import_streams, POOL_SIZE, _parts2, _type2, _size3, _endings, _a3, _Blob, Blob2, fetch_blob_default;
var init_fetch_blob = __esm({
  "../../node_modules/fetch-blob/index.js"() {
    import_streams = __toESM(require_streams(), 1);
    POOL_SIZE = 65536;
    _Blob = (_a3 = class {
      /**
       * The Blob() constructor returns a new Blob object. The content
       * of the blob consists of the concatenation of the values given
       * in the parameter array.
       *
       * @param {*} blobParts
       * @param {{ type?: string, endings?: string }} [options]
       */
      constructor(blobParts = [], options = {}) {
        /** @type {Array.<(Blob|Uint8Array)>} */
        __privateAdd(this, _parts2, []);
        __privateAdd(this, _type2, "");
        __privateAdd(this, _size3, 0);
        __privateAdd(this, _endings, "transparent");
        if (typeof blobParts !== "object" || blobParts === null) {
          throw new TypeError("Failed to construct 'Blob': The provided value cannot be converted to a sequence.");
        }
        if (typeof blobParts[Symbol.iterator] !== "function") {
          throw new TypeError("Failed to construct 'Blob': The object must have a callable @@iterator property.");
        }
        if (typeof options !== "object" && typeof options !== "function") {
          throw new TypeError("Failed to construct 'Blob': parameter 2 cannot convert to dictionary.");
        }
        if (options === null) options = {};
        const encoder = new TextEncoder();
        for (const element5 of blobParts) {
          let part;
          if (ArrayBuffer.isView(element5)) {
            part = new Uint8Array(element5.buffer.slice(element5.byteOffset, element5.byteOffset + element5.byteLength));
          } else if (element5 instanceof ArrayBuffer) {
            part = new Uint8Array(element5.slice(0));
          } else if (element5 instanceof _a3) {
            part = element5;
          } else {
            part = encoder.encode(`${element5}`);
          }
          __privateSet(this, _size3, __privateGet(this, _size3) + (ArrayBuffer.isView(part) ? part.byteLength : part.size));
          __privateGet(this, _parts2).push(part);
        }
        __privateSet(this, _endings, `${options.endings === void 0 ? "transparent" : options.endings}`);
        const type2 = options.type === void 0 ? "" : String(options.type);
        __privateSet(this, _type2, /^[\x20-\x7E]*$/.test(type2) ? type2 : "");
      }
      /**
       * The Blob interface's size property returns the
       * size of the Blob in bytes.
       */
      get size() {
        return __privateGet(this, _size3);
      }
      /**
       * The type property of a Blob object returns the MIME type of the file.
       */
      get type() {
        return __privateGet(this, _type2);
      }
      /**
       * The text() method in the Blob interface returns a Promise
       * that resolves with a string containing the contents of
       * the blob, interpreted as UTF-8.
       *
       * @return {Promise<string>}
       */
      async text() {
        const decoder = new TextDecoder();
        let str2 = "";
        for await (const part of toIterator(__privateGet(this, _parts2), false)) {
          str2 += decoder.decode(part, { stream: true });
        }
        str2 += decoder.decode();
        return str2;
      }
      /**
       * The arrayBuffer() method in the Blob interface returns a
       * Promise that resolves with the contents of the blob as
       * binary data contained in an ArrayBuffer.
       *
       * @return {Promise<ArrayBuffer>}
       */
      async arrayBuffer() {
        const data = new Uint8Array(this.size);
        let offset = 0;
        for await (const chunk of toIterator(__privateGet(this, _parts2), false)) {
          data.set(chunk, offset);
          offset += chunk.length;
        }
        return data.buffer;
      }
      stream() {
        const it = toIterator(__privateGet(this, _parts2), true);
        return new globalThis.ReadableStream({
          // @ts-ignore
          type: "bytes",
          async pull(ctrl) {
            const chunk = await it.next();
            chunk.done ? ctrl.close() : ctrl.enqueue(chunk.value);
          },
          async cancel() {
            await it.return();
          }
        });
      }
      /**
       * The Blob interface's slice() method creates and returns a
       * new Blob object which contains data from a subset of the
       * blob on which it's called.
       *
       * @param {number} [start]
       * @param {number} [end]
       * @param {string} [type]
       */
      slice(start = 0, end = this.size, type2 = "") {
        const { size } = this;
        let relativeStart = start < 0 ? Math.max(size + start, 0) : Math.min(start, size);
        let relativeEnd = end < 0 ? Math.max(size + end, 0) : Math.min(end, size);
        const span = Math.max(relativeEnd - relativeStart, 0);
        const parts = __privateGet(this, _parts2);
        const blobParts = [];
        let added = 0;
        for (const part of parts) {
          if (added >= span) {
            break;
          }
          const size2 = ArrayBuffer.isView(part) ? part.byteLength : part.size;
          if (relativeStart && size2 <= relativeStart) {
            relativeStart -= size2;
            relativeEnd -= size2;
          } else {
            let chunk;
            if (ArrayBuffer.isView(part)) {
              chunk = part.subarray(relativeStart, Math.min(size2, relativeEnd));
              added += chunk.byteLength;
            } else {
              chunk = part.slice(relativeStart, Math.min(size2, relativeEnd));
              added += chunk.size;
            }
            relativeEnd -= size2;
            blobParts.push(chunk);
            relativeStart = 0;
          }
        }
        const blob = new _a3([], { type: String(type2).toLowerCase() });
        __privateSet(blob, _size3, span);
        __privateSet(blob, _parts2, blobParts);
        return blob;
      }
      get [Symbol.toStringTag]() {
        return "Blob";
      }
      static [Symbol.hasInstance](object) {
        return object && typeof object === "object" && typeof object.constructor === "function" && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && /^(Blob|File)$/.test(object[Symbol.toStringTag]);
      }
    }, _parts2 = new WeakMap(), _type2 = new WeakMap(), _size3 = new WeakMap(), _endings = new WeakMap(), _a3);
    Object.defineProperties(_Blob.prototype, {
      size: { enumerable: true },
      type: { enumerable: true },
      slice: { enumerable: true }
    });
    Blob2 = _Blob;
    fetch_blob_default = Blob2;
  }
});

// ../../node_modules/fetch-blob/file.js
var _lastModified, _name, _a4, _File, File2, file_default;
var init_file = __esm({
  "../../node_modules/fetch-blob/file.js"() {
    init_fetch_blob();
    _File = (_a4 = class extends fetch_blob_default {
      /**
       * @param {*[]} fileBits
       * @param {string} fileName
       * @param {{lastModified?: number, type?: string}} options
       */
      // @ts-ignore
      constructor(fileBits, fileName, options = {}) {
        if (arguments.length < 2) {
          throw new TypeError(`Failed to construct 'File': 2 arguments required, but only ${arguments.length} present.`);
        }
        super(fileBits, options);
        __privateAdd(this, _lastModified, 0);
        __privateAdd(this, _name, "");
        if (options === null) options = {};
        const lastModified = options.lastModified === void 0 ? Date.now() : Number(options.lastModified);
        if (!Number.isNaN(lastModified)) {
          __privateSet(this, _lastModified, lastModified);
        }
        __privateSet(this, _name, String(fileName));
      }
      get name() {
        return __privateGet(this, _name);
      }
      get lastModified() {
        return __privateGet(this, _lastModified);
      }
      get [Symbol.toStringTag]() {
        return "File";
      }
      static [Symbol.hasInstance](object) {
        return !!object && object instanceof fetch_blob_default && /^(File)$/.test(object[Symbol.toStringTag]);
      }
    }, _lastModified = new WeakMap(), _name = new WeakMap(), _a4);
    File2 = _File;
    file_default = File2;
  }
});

// ../../node_modules/formdata-polyfill/esm.min.js
function formDataToBlob(F2, B = fetch_blob_default) {
  var b = `${r()}${r()}`.replace(/\./g, "").slice(-28).padStart(32, "-"), c = [], p5 = `--${b}\r
Content-Disposition: form-data; name="`;
  F2.forEach((v, n) => typeof v == "string" ? c.push(p5 + e(n) + `"\r
\r
${v.replace(/\r(?!\n)|(?<!\r)\n/g, "\r\n")}\r
`) : c.push(p5 + e(n) + `"; filename="${e(v.name, 1)}"\r
Content-Type: ${v.type || "application/octet-stream"}\r
\r
`, v, "\r\n"));
  c.push(`--${b}--`);
  return new B(c, { type: "multipart/form-data; boundary=" + b });
}
var t, i, h3, r, m, f, e, x, _d, _a5, FormData;
var init_esm_min = __esm({
  "../../node_modules/formdata-polyfill/esm.min.js"() {
    init_fetch_blob();
    init_file();
    ({ toStringTag: t, iterator: i, hasInstance: h3 } = Symbol);
    r = Math.random;
    m = "append,set,get,getAll,delete,keys,values,entries,forEach,constructor".split(",");
    f = (a2, b, c) => (a2 += "", /^(Blob|File)$/.test(b && b[t]) ? [(c = c !== void 0 ? c + "" : b[t] == "File" ? b.name : "blob", a2), b.name !== c || b[t] == "blob" ? new file_default([b], c, b) : b] : [a2, b + ""]);
    e = (c, f3) => (f3 ? c : c.replace(/\r?\n|\r/g, "\r\n")).replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22");
    x = (n, a2, e2) => {
      if (a2.length < e2) {
        throw new TypeError(`Failed to execute '${n}' on 'FormData': ${e2} arguments required, but only ${a2.length} present.`);
      }
    };
    FormData = (_a5 = class {
      constructor(...a2) {
        __privateAdd(this, _d, []);
        if (a2.length) throw new TypeError(`Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'.`);
      }
      get [t]() {
        return "FormData";
      }
      [i]() {
        return this.entries();
      }
      static [h3](o) {
        return o && typeof o === "object" && o[t] === "FormData" && !m.some((m2) => typeof o[m2] != "function");
      }
      append(...a2) {
        x("append", arguments, 2);
        __privateGet(this, _d).push(f(...a2));
      }
      delete(a2) {
        x("delete", arguments, 1);
        a2 += "";
        __privateSet(this, _d, __privateGet(this, _d).filter(([b]) => b !== a2));
      }
      get(a2) {
        x("get", arguments, 1);
        a2 += "";
        for (var b = __privateGet(this, _d), l = b.length, c = 0; c < l; c++) if (b[c][0] === a2) return b[c][1];
        return null;
      }
      getAll(a2, b) {
        x("getAll", arguments, 1);
        b = [];
        a2 += "";
        __privateGet(this, _d).forEach((c) => c[0] === a2 && b.push(c[1]));
        return b;
      }
      has(a2) {
        x("has", arguments, 1);
        a2 += "";
        return __privateGet(this, _d).some((b) => b[0] === a2);
      }
      forEach(a2, b) {
        x("forEach", arguments, 1);
        for (var [c, d] of this) a2.call(b, d, c, this);
      }
      set(...a2) {
        x("set", arguments, 2);
        var b = [], c = true;
        a2 = f(...a2);
        __privateGet(this, _d).forEach((d) => {
          d[0] === a2[0] ? c && (c = !b.push(a2)) : b.push(d);
        });
        c && b.push(a2);
        __privateSet(this, _d, b);
      }
      *entries() {
        yield* __privateGet(this, _d);
      }
      *keys() {
        for (var [a2] of this) yield a2;
      }
      *values() {
        for (var [, a2] of this) yield a2;
      }
    }, _d = new WeakMap(), _a5);
  }
});

// ../../node_modules/node-domexception/index.js
var require_node_domexception = __commonJS({
  "../../node_modules/node-domexception/index.js"(exports2, module2) {
    if (!globalThis.DOMException) {
      try {
        const { MessageChannel: MessageChannel2 } = require("worker_threads"), port = new MessageChannel2().port1, ab = new ArrayBuffer();
        port.postMessage(ab, [ab, ab]);
      } catch (err) {
        err.constructor.name === "DOMException" && (globalThis.DOMException = err.constructor);
      }
    }
    module2.exports = globalThis.DOMException;
  }
});

// ../../node_modules/fetch-blob/from.js
var import_node_fs19, import_node_domexception, stat;
var init_from = __esm({
  "../../node_modules/fetch-blob/from.js"() {
    import_node_fs19 = require("fs");
    import_node_domexception = __toESM(require_node_domexception(), 1);
    init_file();
    init_fetch_blob();
    ({ stat } = import_node_fs19.promises);
  }
});

// ../../node_modules/node-fetch/src/utils/multipart-parser.js
var multipart_parser_exports = {};
__export(multipart_parser_exports, {
  toFormData: () => toFormData
});
function _fileName(headerValue) {
  const m2 = headerValue.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);
  if (!m2) {
    return;
  }
  const match3 = m2[2] || m2[3] || "";
  let filename = match3.slice(match3.lastIndexOf("\\") + 1);
  filename = filename.replace(/%22/g, '"');
  filename = filename.replace(/&#(\d{4});/g, (m3, code7) => {
    return String.fromCharCode(code7);
  });
  return filename;
}
async function toFormData(Body2, ct) {
  if (!/multipart/i.test(ct)) {
    throw new TypeError("Failed to fetch");
  }
  const m2 = ct.match(/boundary=(?:"([^"]+)"|([^;]+))/i);
  if (!m2) {
    throw new TypeError("no or bad content-type header, no multipart boundary");
  }
  const parser3 = new MultipartParser(m2[1] || m2[2]);
  let headerField;
  let headerValue;
  let entryValue;
  let entryName;
  let contentType;
  let filename;
  const entryChunks = [];
  const formData = new FormData();
  const onPartData = (ui8a) => {
    entryValue += decoder.decode(ui8a, { stream: true });
  };
  const appendToFile = (ui8a) => {
    entryChunks.push(ui8a);
  };
  const appendFileToFormData = () => {
    const file = new file_default(entryChunks, filename, { type: contentType });
    formData.append(entryName, file);
  };
  const appendEntryToFormData = () => {
    formData.append(entryName, entryValue);
  };
  const decoder = new TextDecoder("utf-8");
  decoder.decode();
  parser3.onPartBegin = function() {
    parser3.onPartData = onPartData;
    parser3.onPartEnd = appendEntryToFormData;
    headerField = "";
    headerValue = "";
    entryValue = "";
    entryName = "";
    contentType = "";
    filename = null;
    entryChunks.length = 0;
  };
  parser3.onHeaderField = function(ui8a) {
    headerField += decoder.decode(ui8a, { stream: true });
  };
  parser3.onHeaderValue = function(ui8a) {
    headerValue += decoder.decode(ui8a, { stream: true });
  };
  parser3.onHeaderEnd = function() {
    headerValue += decoder.decode();
    headerField = headerField.toLowerCase();
    if (headerField === "content-disposition") {
      const m3 = headerValue.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);
      if (m3) {
        entryName = m3[2] || m3[3] || "";
      }
      filename = _fileName(headerValue);
      if (filename) {
        parser3.onPartData = appendToFile;
        parser3.onPartEnd = appendFileToFormData;
      }
    } else if (headerField === "content-type") {
      contentType = headerValue;
    }
    headerValue = "";
    headerField = "";
  };
  for await (const chunk of Body2) {
    parser3.write(chunk);
  }
  parser3.end();
  return formData;
}
var s4, S2, f2, F, LF, CR, SPACE, HYPHEN, COLON, A, Z, lower, noop2, MultipartParser;
var init_multipart_parser = __esm({
  "../../node_modules/node-fetch/src/utils/multipart-parser.js"() {
    init_from();
    init_esm_min();
    s4 = 0;
    S2 = {
      START_BOUNDARY: s4++,
      HEADER_FIELD_START: s4++,
      HEADER_FIELD: s4++,
      HEADER_VALUE_START: s4++,
      HEADER_VALUE: s4++,
      HEADER_VALUE_ALMOST_DONE: s4++,
      HEADERS_ALMOST_DONE: s4++,
      PART_DATA_START: s4++,
      PART_DATA: s4++,
      END: s4++
    };
    f2 = 1;
    F = {
      PART_BOUNDARY: f2,
      LAST_BOUNDARY: f2 *= 2
    };
    LF = 10;
    CR = 13;
    SPACE = 32;
    HYPHEN = 45;
    COLON = 58;
    A = 97;
    Z = 122;
    lower = (c) => c | 32;
    noop2 = () => {
    };
    MultipartParser = class {
      /**
       * @param {string} boundary
       */
      constructor(boundary) {
        this.index = 0;
        this.flags = 0;
        this.onHeaderEnd = noop2;
        this.onHeaderField = noop2;
        this.onHeadersEnd = noop2;
        this.onHeaderValue = noop2;
        this.onPartBegin = noop2;
        this.onPartData = noop2;
        this.onPartEnd = noop2;
        this.boundaryChars = {};
        boundary = "\r\n--" + boundary;
        const ui8a = new Uint8Array(boundary.length);
        for (let i2 = 0; i2 < boundary.length; i2++) {
          ui8a[i2] = boundary.charCodeAt(i2);
          this.boundaryChars[ui8a[i2]] = true;
        }
        this.boundary = ui8a;
        this.lookbehind = new Uint8Array(this.boundary.length + 8);
        this.state = S2.START_BOUNDARY;
      }
      /**
       * @param {Uint8Array} data
       */
      write(data) {
        let i2 = 0;
        const length_ = data.length;
        let previousIndex = this.index;
        let { lookbehind, boundary, boundaryChars, index: index4, state, flags } = this;
        const boundaryLength = this.boundary.length;
        const boundaryEnd = boundaryLength - 1;
        const bufferLength = data.length;
        let c;
        let cl;
        const mark2 = (name3) => {
          this[name3 + "Mark"] = i2;
        };
        const clear = (name3) => {
          delete this[name3 + "Mark"];
        };
        const callback = (callbackSymbol, start, end, ui8a) => {
          if (start === void 0 || start !== end) {
            this[callbackSymbol](ui8a && ui8a.subarray(start, end));
          }
        };
        const dataCallback = (name3, clear2) => {
          const markSymbol = name3 + "Mark";
          if (!(markSymbol in this)) {
            return;
          }
          if (clear2) {
            callback(name3, this[markSymbol], i2, data);
            delete this[markSymbol];
          } else {
            callback(name3, this[markSymbol], data.length, data);
            this[markSymbol] = 0;
          }
        };
        for (i2 = 0; i2 < length_; i2++) {
          c = data[i2];
          switch (state) {
            case S2.START_BOUNDARY:
              if (index4 === boundary.length - 2) {
                if (c === HYPHEN) {
                  flags |= F.LAST_BOUNDARY;
                } else if (c !== CR) {
                  return;
                }
                index4++;
                break;
              } else if (index4 - 1 === boundary.length - 2) {
                if (flags & F.LAST_BOUNDARY && c === HYPHEN) {
                  state = S2.END;
                  flags = 0;
                } else if (!(flags & F.LAST_BOUNDARY) && c === LF) {
                  index4 = 0;
                  callback("onPartBegin");
                  state = S2.HEADER_FIELD_START;
                } else {
                  return;
                }
                break;
              }
              if (c !== boundary[index4 + 2]) {
                index4 = -2;
              }
              if (c === boundary[index4 + 2]) {
                index4++;
              }
              break;
            case S2.HEADER_FIELD_START:
              state = S2.HEADER_FIELD;
              mark2("onHeaderField");
              index4 = 0;
            // falls through
            case S2.HEADER_FIELD:
              if (c === CR) {
                clear("onHeaderField");
                state = S2.HEADERS_ALMOST_DONE;
                break;
              }
              index4++;
              if (c === HYPHEN) {
                break;
              }
              if (c === COLON) {
                if (index4 === 1) {
                  return;
                }
                dataCallback("onHeaderField", true);
                state = S2.HEADER_VALUE_START;
                break;
              }
              cl = lower(c);
              if (cl < A || cl > Z) {
                return;
              }
              break;
            case S2.HEADER_VALUE_START:
              if (c === SPACE) {
                break;
              }
              mark2("onHeaderValue");
              state = S2.HEADER_VALUE;
            // falls through
            case S2.HEADER_VALUE:
              if (c === CR) {
                dataCallback("onHeaderValue", true);
                callback("onHeaderEnd");
                state = S2.HEADER_VALUE_ALMOST_DONE;
              }
              break;
            case S2.HEADER_VALUE_ALMOST_DONE:
              if (c !== LF) {
                return;
              }
              state = S2.HEADER_FIELD_START;
              break;
            case S2.HEADERS_ALMOST_DONE:
              if (c !== LF) {
                return;
              }
              callback("onHeadersEnd");
              state = S2.PART_DATA_START;
              break;
            case S2.PART_DATA_START:
              state = S2.PART_DATA;
              mark2("onPartData");
            // falls through
            case S2.PART_DATA:
              previousIndex = index4;
              if (index4 === 0) {
                i2 += boundaryEnd;
                while (i2 < bufferLength && !(data[i2] in boundaryChars)) {
                  i2 += boundaryLength;
                }
                i2 -= boundaryEnd;
                c = data[i2];
              }
              if (index4 < boundary.length) {
                if (boundary[index4] === c) {
                  if (index4 === 0) {
                    dataCallback("onPartData", true);
                  }
                  index4++;
                } else {
                  index4 = 0;
                }
              } else if (index4 === boundary.length) {
                index4++;
                if (c === CR) {
                  flags |= F.PART_BOUNDARY;
                } else if (c === HYPHEN) {
                  flags |= F.LAST_BOUNDARY;
                } else {
                  index4 = 0;
                }
              } else if (index4 - 1 === boundary.length) {
                if (flags & F.PART_BOUNDARY) {
                  index4 = 0;
                  if (c === LF) {
                    flags &= ~F.PART_BOUNDARY;
                    callback("onPartEnd");
                    callback("onPartBegin");
                    state = S2.HEADER_FIELD_START;
                    break;
                  }
                } else if (flags & F.LAST_BOUNDARY) {
                  if (c === HYPHEN) {
                    callback("onPartEnd");
                    state = S2.END;
                    flags = 0;
                  } else {
                    index4 = 0;
                  }
                } else {
                  index4 = 0;
                }
              }
              if (index4 > 0) {
                lookbehind[index4 - 1] = c;
              } else if (previousIndex > 0) {
                const _lookbehind = new Uint8Array(lookbehind.buffer, lookbehind.byteOffset, lookbehind.byteLength);
                callback("onPartData", 0, previousIndex, _lookbehind);
                previousIndex = 0;
                mark2("onPartData");
                i2--;
              }
              break;
            case S2.END:
              break;
            default:
              throw new Error(`Unexpected state entered: ${state}`);
          }
        }
        dataCallback("onHeaderField");
        dataCallback("onHeaderValue");
        dataCallback("onPartData");
        this.index = index4;
        this.state = state;
        this.flags = flags;
      }
      end() {
        if (this.state === S2.HEADER_FIELD_START && this.index === 0 || this.state === S2.PART_DATA && this.index === this.boundary.length) {
          this.onPartEnd();
        } else if (this.state !== S2.END) {
          throw new Error("MultipartParser.end(): stream ended unexpectedly");
        }
      }
    };
  }
});

// ../../node_modules/adm-zip/util/fileSystem.js
var require_fileSystem = __commonJS({
  "../../node_modules/adm-zip/util/fileSystem.js"(exports2) {
    exports2.require = function() {
      if (typeof process === "object" && process.versions && process.versions["electron"]) {
        try {
          const originalFs = require("original-fs");
          if (Object.keys(originalFs).length > 0) {
            return originalFs;
          }
        } catch (e2) {
        }
      }
      return require("fs");
    };
  }
});

// ../../node_modules/adm-zip/util/constants.js
var require_constants3 = __commonJS({
  "../../node_modules/adm-zip/util/constants.js"(exports2, module2) {
    module2.exports = {
      /* The local file header */
      LOCHDR: 30,
      // LOC header size
      LOCSIG: 67324752,
      // "PK\003\004"
      LOCVER: 4,
      // version needed to extract
      LOCFLG: 6,
      // general purpose bit flag
      LOCHOW: 8,
      // compression method
      LOCTIM: 10,
      // modification time (2 bytes time, 2 bytes date)
      LOCCRC: 14,
      // uncompressed file crc-32 value
      LOCSIZ: 18,
      // compressed size
      LOCLEN: 22,
      // uncompressed size
      LOCNAM: 26,
      // filename length
      LOCEXT: 28,
      // extra field length
      /* The Data descriptor */
      EXTSIG: 134695760,
      // "PK\007\008"
      EXTHDR: 16,
      // EXT header size
      EXTCRC: 4,
      // uncompressed file crc-32 value
      EXTSIZ: 8,
      // compressed size
      EXTLEN: 12,
      // uncompressed size
      /* The central directory file header */
      CENHDR: 46,
      // CEN header size
      CENSIG: 33639248,
      // "PK\001\002"
      CENVEM: 4,
      // version made by
      CENVER: 6,
      // version needed to extract
      CENFLG: 8,
      // encrypt, decrypt flags
      CENHOW: 10,
      // compression method
      CENTIM: 12,
      // modification time (2 bytes time, 2 bytes date)
      CENCRC: 16,
      // uncompressed file crc-32 value
      CENSIZ: 20,
      // compressed size
      CENLEN: 24,
      // uncompressed size
      CENNAM: 28,
      // filename length
      CENEXT: 30,
      // extra field length
      CENCOM: 32,
      // file comment length
      CENDSK: 34,
      // volume number start
      CENATT: 36,
      // internal file attributes
      CENATX: 38,
      // external file attributes (host system dependent)
      CENOFF: 42,
      // LOC header offset
      /* The entries in the end of central directory */
      ENDHDR: 22,
      // END header size
      ENDSIG: 101010256,
      // "PK\005\006"
      ENDSUB: 8,
      // number of entries on this disk
      ENDTOT: 10,
      // total number of entries
      ENDSIZ: 12,
      // central directory size in bytes
      ENDOFF: 16,
      // offset of first CEN header
      ENDCOM: 20,
      // zip file comment length
      END64HDR: 20,
      // zip64 END header size
      END64SIG: 117853008,
      // zip64 Locator signature, "PK\006\007"
      END64START: 4,
      // number of the disk with the start of the zip64
      END64OFF: 8,
      // relative offset of the zip64 end of central directory
      END64NUMDISKS: 16,
      // total number of disks
      ZIP64SIG: 101075792,
      // zip64 signature, "PK\006\006"
      ZIP64HDR: 56,
      // zip64 record minimum size
      ZIP64LEAD: 12,
      // leading bytes at the start of the record, not counted by the value stored in ZIP64SIZE
      ZIP64SIZE: 4,
      // zip64 size of the central directory record
      ZIP64VEM: 12,
      // zip64 version made by
      ZIP64VER: 14,
      // zip64 version needed to extract
      ZIP64DSK: 16,
      // zip64 number of this disk
      ZIP64DSKDIR: 20,
      // number of the disk with the start of the record directory
      ZIP64SUB: 24,
      // number of entries on this disk
      ZIP64TOT: 32,
      // total number of entries
      ZIP64SIZB: 40,
      // zip64 central directory size in bytes
      ZIP64OFF: 48,
      // offset of start of central directory with respect to the starting disk number
      ZIP64EXTRA: 56,
      // extensible data sector
      /* Compression methods */
      STORED: 0,
      // no compression
      SHRUNK: 1,
      // shrunk
      REDUCED1: 2,
      // reduced with compression factor 1
      REDUCED2: 3,
      // reduced with compression factor 2
      REDUCED3: 4,
      // reduced with compression factor 3
      REDUCED4: 5,
      // reduced with compression factor 4
      IMPLODED: 6,
      // imploded
      // 7 reserved for Tokenizing compression algorithm
      DEFLATED: 8,
      // deflated
      ENHANCED_DEFLATED: 9,
      // enhanced deflated
      PKWARE: 10,
      // PKWare DCL imploded
      // 11 reserved by PKWARE
      BZIP2: 12,
      //  compressed using BZIP2
      // 13 reserved by PKWARE
      LZMA: 14,
      // LZMA
      // 15-17 reserved by PKWARE
      IBM_TERSE: 18,
      // compressed using IBM TERSE
      IBM_LZ77: 19,
      // IBM LZ77 z
      AES_ENCRYPT: 99,
      // WinZIP AES encryption method
      /* General purpose bit flag */
      // values can obtained with expression 2**bitnr
      FLG_ENC: 1,
      // Bit 0: encrypted file
      FLG_COMP1: 2,
      // Bit 1, compression option
      FLG_COMP2: 4,
      // Bit 2, compression option
      FLG_DESC: 8,
      // Bit 3, data descriptor
      FLG_ENH: 16,
      // Bit 4, enhanced deflating
      FLG_PATCH: 32,
      // Bit 5, indicates that the file is compressed patched data.
      FLG_STR: 64,
      // Bit 6, strong encryption (patented)
      // Bits 7-10: Currently unused.
      FLG_EFS: 2048,
      // Bit 11: Language encoding flag (EFS)
      // Bit 12: Reserved by PKWARE for enhanced compression.
      // Bit 13: encrypted the Central Directory (patented).
      // Bits 14-15: Reserved by PKWARE.
      FLG_MSK: 4096,
      // mask header values
      /* Load type */
      FILE: 2,
      BUFFER: 1,
      NONE: 0,
      /* 4.5 Extensible data fields */
      EF_ID: 0,
      EF_SIZE: 2,
      /* Header IDs */
      ID_ZIP64: 1,
      ID_AVINFO: 7,
      ID_PFS: 8,
      ID_OS2: 9,
      ID_NTFS: 10,
      ID_OPENVMS: 12,
      ID_UNIX: 13,
      ID_FORK: 14,
      ID_PATCH: 15,
      ID_X509_PKCS7: 20,
      ID_X509_CERTID_F: 21,
      ID_X509_CERTID_C: 22,
      ID_STRONGENC: 23,
      ID_RECORD_MGT: 24,
      ID_X509_PKCS7_RL: 25,
      ID_IBM1: 101,
      ID_IBM2: 102,
      ID_POSZIP: 18064,
      EF_ZIP64_OR_32: 4294967295,
      EF_ZIP64_OR_16: 65535,
      EF_ZIP64_SUNCOMP: 0,
      EF_ZIP64_SCOMP: 8,
      EF_ZIP64_RHO: 16,
      EF_ZIP64_DSN: 24
    };
  }
});

// ../../node_modules/adm-zip/util/errors.js
var require_errors = __commonJS({
  "../../node_modules/adm-zip/util/errors.js"(exports2, module2) {
    module2.exports = {
      /* Header error messages */
      INVALID_LOC: "Invalid LOC header (bad signature)",
      INVALID_CEN: "Invalid CEN header (bad signature)",
      INVALID_END: "Invalid END header (bad signature)",
      /* ZipEntry error messages*/
      NO_DATA: "Nothing to decompress",
      BAD_CRC: "CRC32 checksum failed",
      FILE_IN_THE_WAY: "There is a file in the way: %s",
      UNKNOWN_METHOD: "Invalid/unsupported compression method",
      /* Inflater error messages */
      AVAIL_DATA: "inflate::Available inflate data did not terminate",
      INVALID_DISTANCE: "inflate::Invalid literal/length or distance code in fixed or dynamic block",
      TO_MANY_CODES: "inflate::Dynamic block code description: too many length or distance codes",
      INVALID_REPEAT_LEN: "inflate::Dynamic block code description: repeat more than specified lengths",
      INVALID_REPEAT_FIRST: "inflate::Dynamic block code description: repeat lengths with no first length",
      INCOMPLETE_CODES: "inflate::Dynamic block code description: code lengths codes incomplete",
      INVALID_DYN_DISTANCE: "inflate::Dynamic block code description: invalid distance code lengths",
      INVALID_CODES_LEN: "inflate::Dynamic block code description: invalid literal/length code lengths",
      INVALID_STORE_BLOCK: "inflate::Stored block length did not match one's complement",
      INVALID_BLOCK_TYPE: "inflate::Invalid block type (type == 3)",
      /* ADM-ZIP error messages */
      CANT_EXTRACT_FILE: "Could not extract the file",
      CANT_OVERRIDE: "Target file already exists",
      NO_ZIP: "No zip file was loaded",
      NO_ENTRY: "Entry doesn't exist",
      DIRECTORY_CONTENT_ERROR: "A directory cannot have content",
      FILE_NOT_FOUND: "File not found: %s",
      NOT_IMPLEMENTED: "Not implemented",
      INVALID_FILENAME: "Invalid filename",
      INVALID_FORMAT: "Invalid or unsupported zip format. No END header found"
    };
  }
});

// ../../node_modules/adm-zip/util/utils.js
var require_utils6 = __commonJS({
  "../../node_modules/adm-zip/util/utils.js"(exports2, module2) {
    var fsystem = require_fileSystem().require();
    var pth = require("path");
    var Constants = require_constants3();
    var Errors = require_errors();
    var isWin = typeof process === "object" && "win32" === process.platform;
    var is_Obj = (obj) => obj && typeof obj === "object";
    var crcTable = new Uint32Array(256).map((t2, c) => {
      for (let k = 0; k < 8; k++) {
        if ((c & 1) !== 0) {
          c = 3988292384 ^ c >>> 1;
        } else {
          c >>>= 1;
        }
      }
      return c >>> 0;
    });
    function Utils(opts) {
      this.sep = pth.sep;
      this.fs = fsystem;
      if (is_Obj(opts)) {
        if (is_Obj(opts.fs) && typeof opts.fs.statSync === "function") {
          this.fs = opts.fs;
        }
      }
    }
    module2.exports = Utils;
    Utils.prototype.makeDir = function(folder) {
      const self2 = this;
      function mkdirSync3(fpath) {
        let resolvedPath = fpath.split(self2.sep)[0];
        fpath.split(self2.sep).forEach(function(name3) {
          if (!name3 || name3.substr(-1, 1) === ":") return;
          resolvedPath += self2.sep + name3;
          var stat2;
          try {
            stat2 = self2.fs.statSync(resolvedPath);
          } catch (e2) {
            self2.fs.mkdirSync(resolvedPath);
          }
          if (stat2 && stat2.isFile()) throw Errors.FILE_IN_THE_WAY.replace("%s", resolvedPath);
        });
      }
      mkdirSync3(folder);
    };
    Utils.prototype.writeFileTo = function(path45, content3, overwrite, attr) {
      const self2 = this;
      if (self2.fs.existsSync(path45)) {
        if (!overwrite) return false;
        var stat2 = self2.fs.statSync(path45);
        if (stat2.isDirectory()) {
          return false;
        }
      }
      var folder = pth.dirname(path45);
      if (!self2.fs.existsSync(folder)) {
        self2.makeDir(folder);
      }
      var fd;
      try {
        fd = self2.fs.openSync(path45, "w", 438);
      } catch (e2) {
        self2.fs.chmodSync(path45, 438);
        fd = self2.fs.openSync(path45, "w", 438);
      }
      if (fd) {
        try {
          self2.fs.writeSync(fd, content3, 0, content3.length, 0);
        } finally {
          self2.fs.closeSync(fd);
        }
      }
      self2.fs.chmodSync(path45, attr || 438);
      return true;
    };
    Utils.prototype.writeFileToAsync = function(path45, content3, overwrite, attr, callback) {
      if (typeof attr === "function") {
        callback = attr;
        attr = void 0;
      }
      const self2 = this;
      self2.fs.exists(path45, function(exist) {
        if (exist && !overwrite) return callback(false);
        self2.fs.stat(path45, function(err, stat2) {
          if (exist && stat2.isDirectory()) {
            return callback(false);
          }
          var folder = pth.dirname(path45);
          self2.fs.exists(folder, function(exists2) {
            if (!exists2) self2.makeDir(folder);
            self2.fs.open(path45, "w", 438, function(err2, fd) {
              if (err2) {
                self2.fs.chmod(path45, 438, function() {
                  self2.fs.open(path45, "w", 438, function(err3, fd2) {
                    self2.fs.write(fd2, content3, 0, content3.length, 0, function() {
                      self2.fs.close(fd2, function() {
                        self2.fs.chmod(path45, attr || 438, function() {
                          callback(true);
                        });
                      });
                    });
                  });
                });
              } else if (fd) {
                self2.fs.write(fd, content3, 0, content3.length, 0, function() {
                  self2.fs.close(fd, function() {
                    self2.fs.chmod(path45, attr || 438, function() {
                      callback(true);
                    });
                  });
                });
              } else {
                self2.fs.chmod(path45, attr || 438, function() {
                  callback(true);
                });
              }
            });
          });
        });
      });
    };
    Utils.prototype.findFiles = function(path45) {
      const self2 = this;
      function findSync(dir, pattern, recursive) {
        if (typeof pattern === "boolean") {
          recursive = pattern;
          pattern = void 0;
        }
        let files = [];
        self2.fs.readdirSync(dir).forEach(function(file) {
          var path46 = pth.join(dir, file);
          if (self2.fs.statSync(path46).isDirectory() && recursive) files = files.concat(findSync(path46, pattern, recursive));
          if (!pattern || pattern.test(path46)) {
            files.push(pth.normalize(path46) + (self2.fs.statSync(path46).isDirectory() ? self2.sep : ""));
          }
        });
        return files;
      }
      return findSync(path45, void 0, true);
    };
    Utils.prototype.getAttributes = function() {
    };
    Utils.prototype.setAttributes = function() {
    };
    Utils.crc32update = function(crc, byte) {
      return crcTable[(crc ^ byte) & 255] ^ crc >>> 8;
    };
    Utils.crc32 = function(buf) {
      if (typeof buf === "string") {
        buf = Buffer.from(buf, "utf8");
      }
      if (!crcTable.length) genCRCTable();
      let len = buf.length;
      let crc = ~0;
      for (let off = 0; off < len; ) crc = Utils.crc32update(crc, buf[off++]);
      return ~crc >>> 0;
    };
    Utils.methodToString = function(method) {
      switch (method) {
        case Constants.STORED:
          return "STORED (" + method + ")";
        case Constants.DEFLATED:
          return "DEFLATED (" + method + ")";
        default:
          return "UNSUPPORTED (" + method + ")";
      }
    };
    Utils.canonical = function(path45) {
      if (!path45) return "";
      var safeSuffix = pth.posix.normalize("/" + path45.split("\\").join("/"));
      return pth.join(".", safeSuffix);
    };
    Utils.sanitize = function(prefix2, name3) {
      prefix2 = pth.resolve(pth.normalize(prefix2));
      var parts = name3.split("/");
      for (var i2 = 0, l = parts.length; i2 < l; i2++) {
        var path45 = pth.normalize(pth.join(prefix2, parts.slice(i2, l).join(pth.sep)));
        if (path45.indexOf(prefix2) === 0) {
          return path45;
        }
      }
      return pth.normalize(pth.join(prefix2, pth.basename(name3)));
    };
    Utils.toBuffer = function toBuffer(input3) {
      if (Buffer.isBuffer(input3)) {
        return input3;
      } else if (input3 instanceof Uint8Array) {
        return Buffer.from(input3);
      } else {
        return typeof input3 === "string" ? Buffer.from(input3, "utf8") : Buffer.alloc(0);
      }
    };
    Utils.readBigUInt64LE = function(buffer2, index4) {
      var slice2 = Buffer.from(buffer2.slice(index4, index4 + 8));
      slice2.swap64();
      return parseInt(`0x${slice2.toString("hex")}`);
    };
    Utils.isWin = isWin;
    Utils.crcTable = crcTable;
  }
});

// ../../node_modules/adm-zip/util/fattr.js
var require_fattr = __commonJS({
  "../../node_modules/adm-zip/util/fattr.js"(exports2, module2) {
    var fs50 = require_fileSystem().require();
    var pth = require("path");
    fs50.existsSync = fs50.existsSync || pth.existsSync;
    module2.exports = function(path45) {
      var _path2 = path45 || "", _obj = newAttr(), _stat = null;
      function newAttr() {
        return {
          directory: false,
          readonly: false,
          hidden: false,
          executable: false,
          mtime: 0,
          atime: 0
        };
      }
      if (_path2 && fs50.existsSync(_path2)) {
        _stat = fs50.statSync(_path2);
        _obj.directory = _stat.isDirectory();
        _obj.mtime = _stat.mtime;
        _obj.atime = _stat.atime;
        _obj.executable = (73 & _stat.mode) !== 0;
        _obj.readonly = (128 & _stat.mode) === 0;
        _obj.hidden = pth.basename(_path2)[0] === ".";
      } else {
        console.warn("Invalid path: " + _path2);
      }
      return {
        get directory() {
          return _obj.directory;
        },
        get readOnly() {
          return _obj.readonly;
        },
        get hidden() {
          return _obj.hidden;
        },
        get mtime() {
          return _obj.mtime;
        },
        get atime() {
          return _obj.atime;
        },
        get executable() {
          return _obj.executable;
        },
        decodeAttributes: function() {
        },
        encodeAttributes: function() {
        },
        toJSON: function() {
          return {
            path: _path2,
            isDirectory: _obj.directory,
            isReadOnly: _obj.readonly,
            isHidden: _obj.hidden,
            isExecutable: _obj.executable,
            mTime: _obj.mtime,
            aTime: _obj.atime
          };
        },
        toString: function() {
          return JSON.stringify(this.toJSON(), null, "	");
        }
      };
    };
  }
});

// ../../node_modules/adm-zip/util/index.js
var require_util3 = __commonJS({
  "../../node_modules/adm-zip/util/index.js"(exports2, module2) {
    module2.exports = require_utils6();
    module2.exports.Constants = require_constants3();
    module2.exports.Errors = require_errors();
    module2.exports.FileAttr = require_fattr();
  }
});

// ../../node_modules/adm-zip/headers/entryHeader.js
var require_entryHeader = __commonJS({
  "../../node_modules/adm-zip/headers/entryHeader.js"(exports2, module2) {
    var Utils = require_util3();
    var Constants = Utils.Constants;
    module2.exports = function() {
      var _verMade = 20, _version = 10, _flags = 0, _method = 0, _time = 0, _crc = 0, _compressedSize = 0, _size4 = 0, _fnameLen = 0, _extraLen = 0, _comLen = 0, _diskStart = 0, _inattr = 0, _attr = 0, _offset = 0;
      _verMade |= Utils.isWin ? 2560 : 768;
      _flags |= Constants.FLG_EFS;
      var _dataHeader = {};
      function setTime(val) {
        val = new Date(val);
        _time = (val.getFullYear() - 1980 & 127) << 25 | // b09-16 years from 1980
        val.getMonth() + 1 << 21 | // b05-08 month
        val.getDate() << 16 | // b00-04 hour
        // 2 bytes time
        val.getHours() << 11 | // b11-15 hour
        val.getMinutes() << 5 | // b05-10 minute
        val.getSeconds() >> 1;
      }
      setTime(+/* @__PURE__ */ new Date());
      return {
        get made() {
          return _verMade;
        },
        set made(val) {
          _verMade = val;
        },
        get version() {
          return _version;
        },
        set version(val) {
          _version = val;
        },
        get flags() {
          return _flags;
        },
        set flags(val) {
          _flags = val;
        },
        get method() {
          return _method;
        },
        set method(val) {
          switch (val) {
            case Constants.STORED:
              this.version = 10;
            case Constants.DEFLATED:
            default:
              this.version = 20;
          }
          _method = val;
        },
        get time() {
          return new Date((_time >> 25 & 127) + 1980, (_time >> 21 & 15) - 1, _time >> 16 & 31, _time >> 11 & 31, _time >> 5 & 63, (_time & 31) << 1);
        },
        set time(val) {
          setTime(val);
        },
        get crc() {
          return _crc;
        },
        set crc(val) {
          _crc = Math.max(0, val) >>> 0;
        },
        get compressedSize() {
          return _compressedSize;
        },
        set compressedSize(val) {
          _compressedSize = Math.max(0, val) >>> 0;
        },
        get size() {
          return _size4;
        },
        set size(val) {
          _size4 = Math.max(0, val) >>> 0;
        },
        get fileNameLength() {
          return _fnameLen;
        },
        set fileNameLength(val) {
          _fnameLen = val;
        },
        get extraLength() {
          return _extraLen;
        },
        set extraLength(val) {
          _extraLen = val;
        },
        get commentLength() {
          return _comLen;
        },
        set commentLength(val) {
          _comLen = val;
        },
        get diskNumStart() {
          return _diskStart;
        },
        set diskNumStart(val) {
          _diskStart = Math.max(0, val) >>> 0;
        },
        get inAttr() {
          return _inattr;
        },
        set inAttr(val) {
          _inattr = Math.max(0, val) >>> 0;
        },
        get attr() {
          return _attr;
        },
        set attr(val) {
          _attr = Math.max(0, val) >>> 0;
        },
        // get Unix file permissions
        get fileAttr() {
          return _attr ? (_attr >>> 0 | 0) >> 16 & 4095 : 0;
        },
        get offset() {
          return _offset;
        },
        set offset(val) {
          _offset = Math.max(0, val) >>> 0;
        },
        get encripted() {
          return (_flags & 1) === 1;
        },
        get entryHeaderSize() {
          return Constants.CENHDR + _fnameLen + _extraLen + _comLen;
        },
        get realDataOffset() {
          return _offset + Constants.LOCHDR + _dataHeader.fnameLen + _dataHeader.extraLen;
        },
        get dataHeader() {
          return _dataHeader;
        },
        loadDataHeaderFromBinary: function(input3) {
          var data = input3.slice(_offset, _offset + Constants.LOCHDR);
          if (data.readUInt32LE(0) !== Constants.LOCSIG) {
            throw new Error(Utils.Errors.INVALID_LOC);
          }
          _dataHeader = {
            // version needed to extract
            version: data.readUInt16LE(Constants.LOCVER),
            // general purpose bit flag
            flags: data.readUInt16LE(Constants.LOCFLG),
            // compression method
            method: data.readUInt16LE(Constants.LOCHOW),
            // modification time (2 bytes time, 2 bytes date)
            time: data.readUInt32LE(Constants.LOCTIM),
            // uncompressed file crc-32 value
            crc: data.readUInt32LE(Constants.LOCCRC),
            // compressed size
            compressedSize: data.readUInt32LE(Constants.LOCSIZ),
            // uncompressed size
            size: data.readUInt32LE(Constants.LOCLEN),
            // filename length
            fnameLen: data.readUInt16LE(Constants.LOCNAM),
            // extra field length
            extraLen: data.readUInt16LE(Constants.LOCEXT)
          };
        },
        loadFromBinary: function(data) {
          if (data.length !== Constants.CENHDR || data.readUInt32LE(0) !== Constants.CENSIG) {
            throw new Error(Utils.Errors.INVALID_CEN);
          }
          _verMade = data.readUInt16LE(Constants.CENVEM);
          _version = data.readUInt16LE(Constants.CENVER);
          _flags = data.readUInt16LE(Constants.CENFLG);
          _method = data.readUInt16LE(Constants.CENHOW);
          _time = data.readUInt32LE(Constants.CENTIM);
          _crc = data.readUInt32LE(Constants.CENCRC);
          _compressedSize = data.readUInt32LE(Constants.CENSIZ);
          _size4 = data.readUInt32LE(Constants.CENLEN);
          _fnameLen = data.readUInt16LE(Constants.CENNAM);
          _extraLen = data.readUInt16LE(Constants.CENEXT);
          _comLen = data.readUInt16LE(Constants.CENCOM);
          _diskStart = data.readUInt16LE(Constants.CENDSK);
          _inattr = data.readUInt16LE(Constants.CENATT);
          _attr = data.readUInt32LE(Constants.CENATX);
          _offset = data.readUInt32LE(Constants.CENOFF);
        },
        dataHeaderToBinary: function() {
          var data = Buffer.alloc(Constants.LOCHDR);
          data.writeUInt32LE(Constants.LOCSIG, 0);
          data.writeUInt16LE(_version, Constants.LOCVER);
          data.writeUInt16LE(_flags, Constants.LOCFLG);
          data.writeUInt16LE(_method, Constants.LOCHOW);
          data.writeUInt32LE(_time, Constants.LOCTIM);
          data.writeUInt32LE(_crc, Constants.LOCCRC);
          data.writeUInt32LE(_compressedSize, Constants.LOCSIZ);
          data.writeUInt32LE(_size4, Constants.LOCLEN);
          data.writeUInt16LE(_fnameLen, Constants.LOCNAM);
          data.writeUInt16LE(_extraLen, Constants.LOCEXT);
          return data;
        },
        entryHeaderToBinary: function() {
          var data = Buffer.alloc(Constants.CENHDR + _fnameLen + _extraLen + _comLen);
          data.writeUInt32LE(Constants.CENSIG, 0);
          data.writeUInt16LE(_verMade, Constants.CENVEM);
          data.writeUInt16LE(_version, Constants.CENVER);
          data.writeUInt16LE(_flags, Constants.CENFLG);
          data.writeUInt16LE(_method, Constants.CENHOW);
          data.writeUInt32LE(_time, Constants.CENTIM);
          data.writeUInt32LE(_crc, Constants.CENCRC);
          data.writeUInt32LE(_compressedSize, Constants.CENSIZ);
          data.writeUInt32LE(_size4, Constants.CENLEN);
          data.writeUInt16LE(_fnameLen, Constants.CENNAM);
          data.writeUInt16LE(_extraLen, Constants.CENEXT);
          data.writeUInt16LE(_comLen, Constants.CENCOM);
          data.writeUInt16LE(_diskStart, Constants.CENDSK);
          data.writeUInt16LE(_inattr, Constants.CENATT);
          data.writeUInt32LE(_attr, Constants.CENATX);
          data.writeUInt32LE(_offset, Constants.CENOFF);
          data.fill(0, Constants.CENHDR);
          return data;
        },
        toJSON: function() {
          const bytes = function(nr) {
            return nr + " bytes";
          };
          return {
            made: _verMade,
            version: _version,
            flags: _flags,
            method: Utils.methodToString(_method),
            time: this.time,
            crc: "0x" + _crc.toString(16).toUpperCase(),
            compressedSize: bytes(_compressedSize),
            size: bytes(_size4),
            fileNameLength: bytes(_fnameLen),
            extraLength: bytes(_extraLen),
            commentLength: bytes(_comLen),
            diskNumStart: _diskStart,
            inAttr: _inattr,
            attr: _attr,
            offset: _offset,
            entryHeaderSize: bytes(Constants.CENHDR + _fnameLen + _extraLen + _comLen)
          };
        },
        toString: function() {
          return JSON.stringify(this.toJSON(), null, "	");
        }
      };
    };
  }
});

// ../../node_modules/adm-zip/headers/mainHeader.js
var require_mainHeader = __commonJS({
  "../../node_modules/adm-zip/headers/mainHeader.js"(exports2, module2) {
    var Utils = require_util3();
    var Constants = Utils.Constants;
    module2.exports = function() {
      var _volumeEntries = 0, _totalEntries = 0, _size4 = 0, _offset = 0, _commentLength = 0;
      return {
        get diskEntries() {
          return _volumeEntries;
        },
        set diskEntries(val) {
          _volumeEntries = _totalEntries = val;
        },
        get totalEntries() {
          return _totalEntries;
        },
        set totalEntries(val) {
          _totalEntries = _volumeEntries = val;
        },
        get size() {
          return _size4;
        },
        set size(val) {
          _size4 = val;
        },
        get offset() {
          return _offset;
        },
        set offset(val) {
          _offset = val;
        },
        get commentLength() {
          return _commentLength;
        },
        set commentLength(val) {
          _commentLength = val;
        },
        get mainHeaderSize() {
          return Constants.ENDHDR + _commentLength;
        },
        loadFromBinary: function(data) {
          if ((data.length !== Constants.ENDHDR || data.readUInt32LE(0) !== Constants.ENDSIG) && (data.length < Constants.ZIP64HDR || data.readUInt32LE(0) !== Constants.ZIP64SIG)) {
            throw new Error(Utils.Errors.INVALID_END);
          }
          if (data.readUInt32LE(0) === Constants.ENDSIG) {
            _volumeEntries = data.readUInt16LE(Constants.ENDSUB);
            _totalEntries = data.readUInt16LE(Constants.ENDTOT);
            _size4 = data.readUInt32LE(Constants.ENDSIZ);
            _offset = data.readUInt32LE(Constants.ENDOFF);
            _commentLength = data.readUInt16LE(Constants.ENDCOM);
          } else {
            _volumeEntries = Utils.readBigUInt64LE(data, Constants.ZIP64SUB);
            _totalEntries = Utils.readBigUInt64LE(data, Constants.ZIP64TOT);
            _size4 = Utils.readBigUInt64LE(data, Constants.ZIP64SIZE);
            _offset = Utils.readBigUInt64LE(data, Constants.ZIP64OFF);
            _commentLength = 0;
          }
        },
        toBinary: function() {
          var b = Buffer.alloc(Constants.ENDHDR + _commentLength);
          b.writeUInt32LE(Constants.ENDSIG, 0);
          b.writeUInt32LE(0, 4);
          b.writeUInt16LE(_volumeEntries, Constants.ENDSUB);
          b.writeUInt16LE(_totalEntries, Constants.ENDTOT);
          b.writeUInt32LE(_size4, Constants.ENDSIZ);
          b.writeUInt32LE(_offset, Constants.ENDOFF);
          b.writeUInt16LE(_commentLength, Constants.ENDCOM);
          b.fill(" ", Constants.ENDHDR);
          return b;
        },
        toJSON: function() {
          const offset = function(nr, len) {
            let offs = nr.toString(16).toUpperCase();
            while (offs.length < len) offs = "0" + offs;
            return "0x" + offs;
          };
          return {
            diskEntries: _volumeEntries,
            totalEntries: _totalEntries,
            size: _size4 + " bytes",
            offset: offset(_offset, 4),
            commentLength: _commentLength
          };
        },
        toString: function() {
          return JSON.stringify(this.toJSON(), null, "	");
        }
      };
    };
  }
});

// ../../node_modules/adm-zip/headers/index.js
var require_headers = __commonJS({
  "../../node_modules/adm-zip/headers/index.js"(exports2) {
    exports2.EntryHeader = require_entryHeader();
    exports2.MainHeader = require_mainHeader();
  }
});

// ../../node_modules/adm-zip/methods/deflater.js
var require_deflater = __commonJS({
  "../../node_modules/adm-zip/methods/deflater.js"(exports2, module2) {
    module2.exports = function(inbuf) {
      var zlib3 = require("zlib");
      var opts = { chunkSize: (parseInt(inbuf.length / 1024) + 1) * 1024 };
      return {
        deflate: function() {
          return zlib3.deflateRawSync(inbuf, opts);
        },
        deflateAsync: function(callback) {
          var tmp = zlib3.createDeflateRaw(opts), parts = [], total = 0;
          tmp.on("data", function(data) {
            parts.push(data);
            total += data.length;
          });
          tmp.on("end", function() {
            var buf = Buffer.alloc(total), written = 0;
            buf.fill(0);
            for (var i2 = 0; i2 < parts.length; i2++) {
              var part = parts[i2];
              part.copy(buf, written);
              written += part.length;
            }
            callback && callback(buf);
          });
          tmp.end(inbuf);
        }
      };
    };
  }
});

// ../../node_modules/adm-zip/methods/inflater.js
var require_inflater = __commonJS({
  "../../node_modules/adm-zip/methods/inflater.js"(exports2, module2) {
    module2.exports = function(inbuf) {
      var zlib3 = require("zlib");
      return {
        inflate: function() {
          return zlib3.inflateRawSync(inbuf);
        },
        inflateAsync: function(callback) {
          var tmp = zlib3.createInflateRaw(), parts = [], total = 0;
          tmp.on("data", function(data) {
            parts.push(data);
            total += data.length;
          });
          tmp.on("end", function() {
            var buf = Buffer.alloc(total), written = 0;
            buf.fill(0);
            for (var i2 = 0; i2 < parts.length; i2++) {
              var part = parts[i2];
              part.copy(buf, written);
              written += part.length;
            }
            callback && callback(buf);
          });
          tmp.end(inbuf);
        }
      };
    };
  }
});

// ../../node_modules/adm-zip/methods/zipcrypto.js
var require_zipcrypto = __commonJS({
  "../../node_modules/adm-zip/methods/zipcrypto.js"(exports2, module2) {
    "use strict";
    var { randomFillSync } = require("crypto");
    var crctable = new Uint32Array(256).map((t2, crc) => {
      for (let j = 0; j < 8; j++) {
        if (0 !== (crc & 1)) {
          crc = crc >>> 1 ^ 3988292384;
        } else {
          crc >>>= 1;
        }
      }
      return crc >>> 0;
    });
    var uMul = (a2, b) => Math.imul(a2, b) >>> 0;
    var crc32update = (pCrc32, bval) => {
      return crctable[(pCrc32 ^ bval) & 255] ^ pCrc32 >>> 8;
    };
    var genSalt = () => {
      if ("function" === typeof randomFillSync) {
        return randomFillSync(Buffer.alloc(12));
      } else {
        return genSalt.node();
      }
    };
    genSalt.node = () => {
      const salt = Buffer.alloc(12);
      const len = salt.length;
      for (let i2 = 0; i2 < len; i2++) salt[i2] = Math.random() * 256 & 255;
      return salt;
    };
    var config3 = {
      genSalt
    };
    function Initkeys(pw) {
      const pass2 = Buffer.isBuffer(pw) ? pw : Buffer.from(pw);
      this.keys = new Uint32Array([305419896, 591751049, 878082192]);
      for (let i2 = 0; i2 < pass2.length; i2++) {
        this.updateKeys(pass2[i2]);
      }
    }
    Initkeys.prototype.updateKeys = function(byteValue) {
      const keys2 = this.keys;
      keys2[0] = crc32update(keys2[0], byteValue);
      keys2[1] += keys2[0] & 255;
      keys2[1] = uMul(keys2[1], 134775813) + 1;
      keys2[2] = crc32update(keys2[2], keys2[1] >>> 24);
      return byteValue;
    };
    Initkeys.prototype.next = function() {
      const k = (this.keys[2] | 2) >>> 0;
      return uMul(k, k ^ 1) >> 8 & 255;
    };
    function make_decrypter(pwd) {
      const keys2 = new Initkeys(pwd);
      return function(data) {
        const result = Buffer.alloc(data.length);
        let pos = 0;
        for (let c of data) {
          result[pos++] = keys2.updateKeys(c ^ keys2.next());
        }
        return result;
      };
    }
    function make_encrypter(pwd) {
      const keys2 = new Initkeys(pwd);
      return function(data, result, pos = 0) {
        if (!result) result = Buffer.alloc(data.length);
        for (let c of data) {
          const k = keys2.next();
          result[pos++] = c ^ k;
          keys2.updateKeys(c);
        }
        return result;
      };
    }
    function decrypt(data, header, pwd) {
      if (!data || !Buffer.isBuffer(data) || data.length < 12) {
        return Buffer.alloc(0);
      }
      const decrypter = make_decrypter(pwd);
      const salt = decrypter(data.slice(0, 12));
      if (salt[11] !== header.crc >>> 24) {
        throw "ADM-ZIP: Wrong Password";
      }
      return decrypter(data.slice(12));
    }
    function _salter(data) {
      if (Buffer.isBuffer(data) && data.length >= 12) {
        config3.genSalt = function() {
          return data.slice(0, 12);
        };
      } else if (data === "node") {
        config3.genSalt = genSalt.node;
      } else {
        config3.genSalt = genSalt;
      }
    }
    function encrypt(data, header, pwd, oldlike = false) {
      if (data == null) data = Buffer.alloc(0);
      if (!Buffer.isBuffer(data)) data = Buffer.from(data.toString());
      const encrypter = make_encrypter(pwd);
      const salt = config3.genSalt();
      salt[11] = header.crc >>> 24 & 255;
      if (oldlike) salt[10] = header.crc >>> 16 & 255;
      const result = Buffer.alloc(data.length + 12);
      encrypter(salt, result);
      return encrypter(data, result, 12);
    }
    module2.exports = { decrypt, encrypt, _salter };
  }
});

// ../../node_modules/adm-zip/methods/index.js
var require_methods = __commonJS({
  "../../node_modules/adm-zip/methods/index.js"(exports2) {
    exports2.Deflater = require_deflater();
    exports2.Inflater = require_inflater();
    exports2.ZipCrypto = require_zipcrypto();
  }
});

// ../../node_modules/adm-zip/zipEntry.js
var require_zipEntry = __commonJS({
  "../../node_modules/adm-zip/zipEntry.js"(exports2, module2) {
    var Utils = require_util3();
    var Headers3 = require_headers();
    var Constants = Utils.Constants;
    var Methods = require_methods();
    module2.exports = function(input3) {
      var _entryHeader = new Headers3.EntryHeader(), _entryName = Buffer.alloc(0), _comment = Buffer.alloc(0), _isDirectory = false, uncompressedData = null, _extra = Buffer.alloc(0);
      function getCompressedDataFromZip() {
        if (!input3 || !Buffer.isBuffer(input3)) {
          return Buffer.alloc(0);
        }
        _entryHeader.loadDataHeaderFromBinary(input3);
        return input3.slice(_entryHeader.realDataOffset, _entryHeader.realDataOffset + _entryHeader.compressedSize);
      }
      function crc32OK(data) {
        if ((_entryHeader.flags & 8) !== 8) {
          if (Utils.crc32(data) !== _entryHeader.dataHeader.crc) {
            return false;
          }
        } else {
        }
        return true;
      }
      function decompress(async, callback, pass2) {
        if (typeof callback === "undefined" && typeof async === "string") {
          pass2 = async;
          async = void 0;
        }
        if (_isDirectory) {
          if (async && callback) {
            callback(Buffer.alloc(0), Utils.Errors.DIRECTORY_CONTENT_ERROR);
          }
          return Buffer.alloc(0);
        }
        var compressedData = getCompressedDataFromZip();
        if (compressedData.length === 0) {
          if (async && callback) callback(compressedData);
          return compressedData;
        }
        if (_entryHeader.encripted) {
          if ("string" !== typeof pass2 && !Buffer.isBuffer(pass2)) {
            throw new Error("ADM-ZIP: Incompatible password parameter");
          }
          compressedData = Methods.ZipCrypto.decrypt(compressedData, _entryHeader, pass2);
        }
        var data = Buffer.alloc(_entryHeader.size);
        switch (_entryHeader.method) {
          case Utils.Constants.STORED:
            compressedData.copy(data);
            if (!crc32OK(data)) {
              if (async && callback) callback(data, Utils.Errors.BAD_CRC);
              throw new Error(Utils.Errors.BAD_CRC);
            } else {
              if (async && callback) callback(data);
              return data;
            }
          case Utils.Constants.DEFLATED:
            var inflater = new Methods.Inflater(compressedData);
            if (!async) {
              const result = inflater.inflate(data);
              result.copy(data, 0);
              if (!crc32OK(data)) {
                throw new Error(Utils.Errors.BAD_CRC + " " + _entryName.toString());
              }
              return data;
            } else {
              inflater.inflateAsync(function(result) {
                result.copy(result, 0);
                if (callback) {
                  if (!crc32OK(result)) {
                    callback(result, Utils.Errors.BAD_CRC);
                  } else {
                    callback(result);
                  }
                }
              });
            }
            break;
          default:
            if (async && callback) callback(Buffer.alloc(0), Utils.Errors.UNKNOWN_METHOD);
            throw new Error(Utils.Errors.UNKNOWN_METHOD);
        }
      }
      function compress(async, callback) {
        if ((!uncompressedData || !uncompressedData.length) && Buffer.isBuffer(input3)) {
          if (async && callback) callback(getCompressedDataFromZip());
          return getCompressedDataFromZip();
        }
        if (uncompressedData.length && !_isDirectory) {
          var compressedData;
          switch (_entryHeader.method) {
            case Utils.Constants.STORED:
              _entryHeader.compressedSize = _entryHeader.size;
              compressedData = Buffer.alloc(uncompressedData.length);
              uncompressedData.copy(compressedData);
              if (async && callback) callback(compressedData);
              return compressedData;
            default:
            case Utils.Constants.DEFLATED:
              var deflater = new Methods.Deflater(uncompressedData);
              if (!async) {
                var deflated = deflater.deflate();
                _entryHeader.compressedSize = deflated.length;
                return deflated;
              } else {
                deflater.deflateAsync(function(data) {
                  compressedData = Buffer.alloc(data.length);
                  _entryHeader.compressedSize = data.length;
                  data.copy(compressedData);
                  callback && callback(compressedData);
                });
              }
              deflater = null;
              break;
          }
        } else if (async && callback) {
          callback(Buffer.alloc(0));
        } else {
          return Buffer.alloc(0);
        }
      }
      function readUInt64LE(buffer2, offset) {
        return (buffer2.readUInt32LE(offset + 4) << 4) + buffer2.readUInt32LE(offset);
      }
      function parseExtra(data) {
        var offset = 0;
        var signature, size, part;
        while (offset < data.length) {
          signature = data.readUInt16LE(offset);
          offset += 2;
          size = data.readUInt16LE(offset);
          offset += 2;
          part = data.slice(offset, offset + size);
          offset += size;
          if (Constants.ID_ZIP64 === signature) {
            parseZip64ExtendedInformation(part);
          }
        }
      }
      function parseZip64ExtendedInformation(data) {
        var size, compressedSize, offset, diskNumStart;
        if (data.length >= Constants.EF_ZIP64_SCOMP) {
          size = readUInt64LE(data, Constants.EF_ZIP64_SUNCOMP);
          if (_entryHeader.size === Constants.EF_ZIP64_OR_32) {
            _entryHeader.size = size;
          }
        }
        if (data.length >= Constants.EF_ZIP64_RHO) {
          compressedSize = readUInt64LE(data, Constants.EF_ZIP64_SCOMP);
          if (_entryHeader.compressedSize === Constants.EF_ZIP64_OR_32) {
            _entryHeader.compressedSize = compressedSize;
          }
        }
        if (data.length >= Constants.EF_ZIP64_DSN) {
          offset = readUInt64LE(data, Constants.EF_ZIP64_RHO);
          if (_entryHeader.offset === Constants.EF_ZIP64_OR_32) {
            _entryHeader.offset = offset;
          }
        }
        if (data.length >= Constants.EF_ZIP64_DSN + 4) {
          diskNumStart = data.readUInt32LE(Constants.EF_ZIP64_DSN);
          if (_entryHeader.diskNumStart === Constants.EF_ZIP64_OR_16) {
            _entryHeader.diskNumStart = diskNumStart;
          }
        }
      }
      return {
        get entryName() {
          return _entryName.toString();
        },
        get rawEntryName() {
          return _entryName;
        },
        set entryName(val) {
          _entryName = Utils.toBuffer(val);
          var lastChar = _entryName[_entryName.length - 1];
          _isDirectory = lastChar === 47 || lastChar === 92;
          _entryHeader.fileNameLength = _entryName.length;
        },
        get extra() {
          return _extra;
        },
        set extra(val) {
          _extra = val;
          _entryHeader.extraLength = val.length;
          parseExtra(val);
        },
        get comment() {
          return _comment.toString();
        },
        set comment(val) {
          _comment = Utils.toBuffer(val);
          _entryHeader.commentLength = _comment.length;
        },
        get name() {
          var n = _entryName.toString();
          return _isDirectory ? n.substr(n.length - 1).split("/").pop() : n.split("/").pop();
        },
        get isDirectory() {
          return _isDirectory;
        },
        getCompressedData: function() {
          return compress(false, null);
        },
        getCompressedDataAsync: function(callback) {
          compress(true, callback);
        },
        setData: function(value) {
          uncompressedData = Utils.toBuffer(value);
          if (!_isDirectory && uncompressedData.length) {
            _entryHeader.size = uncompressedData.length;
            _entryHeader.method = Utils.Constants.DEFLATED;
            _entryHeader.crc = Utils.crc32(value);
            _entryHeader.changed = true;
          } else {
            _entryHeader.method = Utils.Constants.STORED;
          }
        },
        getData: function(pass2) {
          if (_entryHeader.changed) {
            return uncompressedData;
          } else {
            return decompress(false, null, pass2);
          }
        },
        getDataAsync: function(callback, pass2) {
          if (_entryHeader.changed) {
            callback(uncompressedData);
          } else {
            decompress(true, callback, pass2);
          }
        },
        set attr(attr) {
          _entryHeader.attr = attr;
        },
        get attr() {
          return _entryHeader.attr;
        },
        set header(data) {
          _entryHeader.loadFromBinary(data);
        },
        get header() {
          return _entryHeader;
        },
        packHeader: function() {
          var header = _entryHeader.entryHeaderToBinary();
          var addpos = Utils.Constants.CENHDR;
          _entryName.copy(header, addpos);
          addpos += _entryName.length;
          if (_entryHeader.extraLength) {
            _extra.copy(header, addpos);
            addpos += _entryHeader.extraLength;
          }
          if (_entryHeader.commentLength) {
            _comment.copy(header, addpos);
          }
          return header;
        },
        toJSON: function() {
          const bytes = function(nr) {
            return "<" + (nr && nr.length + " bytes buffer" || "null") + ">";
          };
          return {
            entryName: this.entryName,
            name: this.name,
            comment: this.comment,
            isDirectory: this.isDirectory,
            header: _entryHeader.toJSON(),
            compressedData: bytes(input3),
            data: bytes(uncompressedData)
          };
        },
        toString: function() {
          return JSON.stringify(this.toJSON(), null, "	");
        }
      };
    };
  }
});

// ../../node_modules/adm-zip/zipFile.js
var require_zipFile = __commonJS({
  "../../node_modules/adm-zip/zipFile.js"(exports2, module2) {
    var ZipEntry = require_zipEntry();
    var Headers3 = require_headers();
    var Utils = require_util3();
    module2.exports = function(inBuffer, options) {
      var entryList = [], entryTable = {}, _comment = Buffer.alloc(0), mainHeader = new Headers3.MainHeader(), loadedEntries = false;
      const opts = Object.assign(/* @__PURE__ */ Object.create(null), options);
      const { noSort } = opts;
      if (inBuffer) {
        readMainHeader(opts.readEntries);
      } else {
        loadedEntries = true;
      }
      function iterateEntries(callback) {
        const totalEntries = mainHeader.diskEntries;
        let index4 = mainHeader.offset;
        for (let i2 = 0; i2 < totalEntries; i2++) {
          let tmp = index4;
          const entry = new ZipEntry(inBuffer);
          entry.header = inBuffer.slice(tmp, tmp += Utils.Constants.CENHDR);
          entry.entryName = inBuffer.slice(tmp, tmp += entry.header.fileNameLength);
          index4 += entry.header.entryHeaderSize;
          callback(entry);
        }
      }
      function readEntries() {
        loadedEntries = true;
        entryTable = {};
        entryList = new Array(mainHeader.diskEntries);
        var index4 = mainHeader.offset;
        for (var i2 = 0; i2 < entryList.length; i2++) {
          var tmp = index4, entry = new ZipEntry(inBuffer);
          entry.header = inBuffer.slice(tmp, tmp += Utils.Constants.CENHDR);
          entry.entryName = inBuffer.slice(tmp, tmp += entry.header.fileNameLength);
          if (entry.header.extraLength) {
            entry.extra = inBuffer.slice(tmp, tmp += entry.header.extraLength);
          }
          if (entry.header.commentLength) entry.comment = inBuffer.slice(tmp, tmp + entry.header.commentLength);
          index4 += entry.header.entryHeaderSize;
          entryList[i2] = entry;
          entryTable[entry.entryName] = entry;
        }
      }
      function readMainHeader(readNow) {
        var i2 = inBuffer.length - Utils.Constants.ENDHDR, max = Math.max(0, i2 - 65535), n = max, endStart = inBuffer.length, endOffset = -1, commentEnd = 0;
        for (i2; i2 >= n; i2--) {
          if (inBuffer[i2] !== 80) continue;
          if (inBuffer.readUInt32LE(i2) === Utils.Constants.ENDSIG) {
            endOffset = i2;
            commentEnd = i2;
            endStart = i2 + Utils.Constants.ENDHDR;
            n = i2 - Utils.Constants.END64HDR;
            continue;
          }
          if (inBuffer.readUInt32LE(i2) === Utils.Constants.END64SIG) {
            n = max;
            continue;
          }
          if (inBuffer.readUInt32LE(i2) === Utils.Constants.ZIP64SIG) {
            endOffset = i2;
            endStart = i2 + Utils.readBigUInt64LE(inBuffer, i2 + Utils.Constants.ZIP64SIZE) + Utils.Constants.ZIP64LEAD;
            break;
          }
        }
        if (!~endOffset) throw new Error(Utils.Errors.INVALID_FORMAT);
        mainHeader.loadFromBinary(inBuffer.slice(endOffset, endStart));
        if (mainHeader.commentLength) {
          _comment = inBuffer.slice(commentEnd + Utils.Constants.ENDHDR);
        }
        if (readNow) readEntries();
      }
      function sortEntries() {
        if (entryList.length > 1 && !noSort) {
          entryList.sort((a2, b) => a2.entryName.toLowerCase().localeCompare(b.entryName.toLowerCase()));
        }
      }
      return {
        /**
         * Returns an array of ZipEntry objects existent in the current opened archive
         * @return Array
         */
        get entries() {
          if (!loadedEntries) {
            readEntries();
          }
          return entryList;
        },
        /**
         * Archive comment
         * @return {String}
         */
        get comment() {
          return _comment.toString();
        },
        set comment(val) {
          _comment = Utils.toBuffer(val);
          mainHeader.commentLength = _comment.length;
        },
        getEntryCount: function() {
          if (!loadedEntries) {
            return mainHeader.diskEntries;
          }
          return entryList.length;
        },
        forEach: function(callback) {
          if (!loadedEntries) {
            iterateEntries(callback);
            return;
          }
          entryList.forEach(callback);
        },
        /**
         * Returns a reference to the entry with the given name or null if entry is inexistent
         *
         * @param entryName
         * @return ZipEntry
         */
        getEntry: function(entryName) {
          if (!loadedEntries) {
            readEntries();
          }
          return entryTable[entryName] || null;
        },
        /**
         * Adds the given entry to the entry list
         *
         * @param entry
         */
        setEntry: function(entry) {
          if (!loadedEntries) {
            readEntries();
          }
          entryList.push(entry);
          entryTable[entry.entryName] = entry;
          mainHeader.totalEntries = entryList.length;
        },
        /**
         * Removes the entry with the given name from the entry list.
         *
         * If the entry is a directory, then all nested files and directories will be removed
         * @param entryName
         */
        deleteEntry: function(entryName) {
          if (!loadedEntries) {
            readEntries();
          }
          var entry = entryTable[entryName];
          if (entry && entry.isDirectory) {
            var _self = this;
            this.getEntryChildren(entry).forEach(function(child) {
              if (child.entryName !== entryName) {
                _self.deleteEntry(child.entryName);
              }
            });
          }
          entryList.splice(entryList.indexOf(entry), 1);
          delete entryTable[entryName];
          mainHeader.totalEntries = entryList.length;
        },
        /**
         *  Iterates and returns all nested files and directories of the given entry
         *
         * @param entry
         * @return Array
         */
        getEntryChildren: function(entry) {
          if (!loadedEntries) {
            readEntries();
          }
          if (entry && entry.isDirectory) {
            const list6 = [];
            const name3 = entry.entryName;
            const len = name3.length;
            entryList.forEach(function(zipEntry) {
              if (zipEntry.entryName.substr(0, len) === name3) {
                list6.push(zipEntry);
              }
            });
            return list6;
          }
          return [];
        },
        /**
         * Returns the zip file
         *
         * @return Buffer
         */
        compressToBuffer: function() {
          if (!loadedEntries) {
            readEntries();
          }
          sortEntries();
          const dataBlock = [];
          const entryHeaders = [];
          let totalSize = 0;
          let dindex = 0;
          mainHeader.size = 0;
          mainHeader.offset = 0;
          for (const entry of entryList) {
            const compressedData = entry.getCompressedData();
            entry.header.offset = dindex;
            const dataHeader = entry.header.dataHeaderToBinary();
            const entryNameLen = entry.rawEntryName.length;
            const postHeader = Buffer.alloc(entryNameLen + entry.extra.length);
            entry.rawEntryName.copy(postHeader, 0);
            postHeader.copy(entry.extra, entryNameLen);
            const dataLength = dataHeader.length + postHeader.length + compressedData.length;
            dindex += dataLength;
            dataBlock.push(dataHeader);
            dataBlock.push(postHeader);
            dataBlock.push(compressedData);
            const entryHeader = entry.packHeader();
            entryHeaders.push(entryHeader);
            mainHeader.size += entryHeader.length;
            totalSize += dataLength + entryHeader.length;
          }
          totalSize += mainHeader.mainHeaderSize;
          mainHeader.offset = dindex;
          dindex = 0;
          const outBuffer = Buffer.alloc(totalSize);
          for (const content3 of dataBlock) {
            content3.copy(outBuffer, dindex);
            dindex += content3.length;
          }
          for (const content3 of entryHeaders) {
            content3.copy(outBuffer, dindex);
            dindex += content3.length;
          }
          const mh = mainHeader.toBinary();
          if (_comment) {
            _comment.copy(mh, Utils.Constants.ENDHDR);
          }
          mh.copy(outBuffer, dindex);
          return outBuffer;
        },
        toAsyncBuffer: function(onSuccess, onFail, onItemStart, onItemEnd) {
          try {
            if (!loadedEntries) {
              readEntries();
            }
            sortEntries();
            const dataBlock = [];
            const entryHeaders = [];
            let totalSize = 0;
            let dindex = 0;
            mainHeader.size = 0;
            mainHeader.offset = 0;
            const compress2Buffer = function(entryLists) {
              if (entryLists.length) {
                const entry = entryLists.pop();
                const name3 = entry.entryName + entry.extra.toString();
                if (onItemStart) onItemStart(name3);
                entry.getCompressedDataAsync(function(compressedData) {
                  if (onItemEnd) onItemEnd(name3);
                  entry.header.offset = dindex;
                  const dataHeader = entry.header.dataHeaderToBinary();
                  const postHeader = Buffer.alloc(name3.length, name3);
                  const dataLength = dataHeader.length + postHeader.length + compressedData.length;
                  dindex += dataLength;
                  dataBlock.push(dataHeader);
                  dataBlock.push(postHeader);
                  dataBlock.push(compressedData);
                  const entryHeader = entry.packHeader();
                  entryHeaders.push(entryHeader);
                  mainHeader.size += entryHeader.length;
                  totalSize += dataLength + entryHeader.length;
                  compress2Buffer(entryLists);
                });
              } else {
                totalSize += mainHeader.mainHeaderSize;
                mainHeader.offset = dindex;
                dindex = 0;
                const outBuffer = Buffer.alloc(totalSize);
                dataBlock.forEach(function(content3) {
                  content3.copy(outBuffer, dindex);
                  dindex += content3.length;
                });
                entryHeaders.forEach(function(content3) {
                  content3.copy(outBuffer, dindex);
                  dindex += content3.length;
                });
                const mh = mainHeader.toBinary();
                if (_comment) {
                  _comment.copy(mh, Utils.Constants.ENDHDR);
                }
                mh.copy(outBuffer, dindex);
                onSuccess(outBuffer);
              }
            };
            compress2Buffer(entryList);
          } catch (e2) {
            onFail(e2);
          }
        }
      };
    };
  }
});

// ../../node_modules/adm-zip/adm-zip.js
var require_adm_zip = __commonJS({
  "../../node_modules/adm-zip/adm-zip.js"(exports2, module2) {
    var Utils = require_util3();
    var pth = require("path");
    var ZipEntry = require_zipEntry();
    var ZipFile = require_zipFile();
    var get_Bool = (val, def) => typeof val === "boolean" ? val : def;
    var get_Str = (val, def) => typeof val === "string" ? val : def;
    var defaultOptions5 = {
      // option "noSort" : if true it disables files sorting
      noSort: false,
      // read entries during load (initial loading may be slower)
      readEntries: false,
      // default method is none
      method: Utils.Constants.NONE,
      // file system
      fs: null
    };
    module2.exports = function(input3, options) {
      let inBuffer = null;
      const opts = Object.assign(/* @__PURE__ */ Object.create(null), defaultOptions5);
      if (input3 && "object" === typeof input3) {
        if (!(input3 instanceof Uint8Array)) {
          Object.assign(opts, input3);
          input3 = opts.input ? opts.input : void 0;
          if (opts.input) delete opts.input;
        }
        if (Buffer.isBuffer(input3)) {
          inBuffer = input3;
          opts.method = Utils.Constants.BUFFER;
          input3 = void 0;
        }
      }
      Object.assign(opts, options);
      const filetools = new Utils(opts);
      if (input3 && "string" === typeof input3) {
        if (filetools.fs.existsSync(input3)) {
          opts.method = Utils.Constants.FILE;
          opts.filename = input3;
          inBuffer = filetools.fs.readFileSync(input3);
        } else {
          throw new Error(Utils.Errors.INVALID_FILENAME);
        }
      }
      const _zip = new ZipFile(inBuffer, opts);
      const { canonical, sanitize } = Utils;
      function getEntry(entry) {
        if (entry && _zip) {
          var item;
          if (typeof entry === "string") item = _zip.getEntry(entry);
          if (typeof entry === "object" && typeof entry.entryName !== "undefined" && typeof entry.header !== "undefined") item = _zip.getEntry(entry.entryName);
          if (item) {
            return item;
          }
        }
        return null;
      }
      function fixPath(zipPath) {
        const { join: join19, normalize: normalize6, sep: sep5 } = pth.posix;
        return join19(".", normalize6(sep5 + zipPath.split("\\").join(sep5) + sep5));
      }
      return {
        /**
         * Extracts the given entry from the archive and returns the content as a Buffer object
         * @param entry ZipEntry object or String with the full path of the entry
         *
         * @return Buffer or Null in case of error
         */
        readFile: function(entry, pass2) {
          var item = getEntry(entry);
          return item && item.getData(pass2) || null;
        },
        /**
         * Asynchronous readFile
         * @param entry ZipEntry object or String with the full path of the entry
         * @param callback
         *
         * @return Buffer or Null in case of error
         */
        readFileAsync: function(entry, callback) {
          var item = getEntry(entry);
          if (item) {
            item.getDataAsync(callback);
          } else {
            callback(null, "getEntry failed for:" + entry);
          }
        },
        /**
         * Extracts the given entry from the archive and returns the content as plain text in the given encoding
         * @param entry ZipEntry object or String with the full path of the entry
         * @param encoding Optional. If no encoding is specified utf8 is used
         *
         * @return String
         */
        readAsText: function(entry, encoding) {
          var item = getEntry(entry);
          if (item) {
            var data = item.getData();
            if (data && data.length) {
              return data.toString(encoding || "utf8");
            }
          }
          return "";
        },
        /**
         * Asynchronous readAsText
         * @param entry ZipEntry object or String with the full path of the entry
         * @param callback
         * @param encoding Optional. If no encoding is specified utf8 is used
         *
         * @return String
         */
        readAsTextAsync: function(entry, callback, encoding) {
          var item = getEntry(entry);
          if (item) {
            item.getDataAsync(function(data, err) {
              if (err) {
                callback(data, err);
                return;
              }
              if (data && data.length) {
                callback(data.toString(encoding || "utf8"));
              } else {
                callback("");
              }
            });
          } else {
            callback("");
          }
        },
        /**
         * Remove the entry from the file or the entry and all it's nested directories and files if the given entry is a directory
         *
         * @param entry
         */
        deleteFile: function(entry) {
          var item = getEntry(entry);
          if (item) {
            _zip.deleteEntry(item.entryName);
          }
        },
        /**
         * Adds a comment to the zip. The zip must be rewritten after adding the comment.
         *
         * @param comment
         */
        addZipComment: function(comment7) {
          _zip.comment = comment7;
        },
        /**
         * Returns the zip comment
         *
         * @return String
         */
        getZipComment: function() {
          return _zip.comment || "";
        },
        /**
         * Adds a comment to a specified zipEntry. The zip must be rewritten after adding the comment
         * The comment cannot exceed 65535 characters in length
         *
         * @param entry
         * @param comment
         */
        addZipEntryComment: function(entry, comment7) {
          var item = getEntry(entry);
          if (item) {
            item.comment = comment7;
          }
        },
        /**
         * Returns the comment of the specified entry
         *
         * @param entry
         * @return String
         */
        getZipEntryComment: function(entry) {
          var item = getEntry(entry);
          if (item) {
            return item.comment || "";
          }
          return "";
        },
        /**
         * Updates the content of an existing entry inside the archive. The zip must be rewritten after updating the content
         *
         * @param entry
         * @param content
         */
        updateFile: function(entry, content3) {
          var item = getEntry(entry);
          if (item) {
            item.setData(content3);
          }
        },
        /**
         * Adds a file from the disk to the archive
         *
         * @param localPath File to add to zip
         * @param zipPath Optional path inside the zip
         * @param zipName Optional name for the file
         */
        addLocalFile: function(localPath, zipPath, zipName, comment7) {
          if (filetools.fs.existsSync(localPath)) {
            zipPath = zipPath ? fixPath(zipPath) : "";
            var p5 = localPath.split("\\").join("/").split("/").pop();
            zipPath += zipName ? zipName : p5;
            const _attr = filetools.fs.statSync(localPath);
            this.addFile(zipPath, filetools.fs.readFileSync(localPath), comment7, _attr);
          } else {
            throw new Error(Utils.Errors.FILE_NOT_FOUND.replace("%s", localPath));
          }
        },
        /**
         * Adds a local directory and all its nested files and directories to the archive
         *
         * @param localPath
         * @param zipPath optional path inside zip
         * @param filter optional RegExp or Function if files match will
         *               be included.
         * @param {number | object} attr - number as unix file permissions, object as filesystem Stats object
         */
        addLocalFolder: function(localPath, zipPath, filter6, attr) {
          if (filter6 instanceof RegExp) {
            filter6 = /* @__PURE__ */ (function(rx) {
              return function(filename) {
                return rx.test(filename);
              };
            })(filter6);
          } else if ("function" !== typeof filter6) {
            filter6 = function() {
              return true;
            };
          }
          zipPath = zipPath ? fixPath(zipPath) : "";
          localPath = pth.normalize(localPath);
          if (filetools.fs.existsSync(localPath)) {
            const items = filetools.findFiles(localPath);
            const self2 = this;
            if (items.length) {
              items.forEach(function(filepath) {
                var p5 = pth.relative(localPath, filepath).split("\\").join("/");
                if (filter6(p5)) {
                  var stats = filetools.fs.statSync(filepath);
                  if (stats.isFile()) {
                    self2.addFile(zipPath + p5, filetools.fs.readFileSync(filepath), "", attr ? attr : stats);
                  } else {
                    self2.addFile(zipPath + p5 + "/", Buffer.alloc(0), "", attr ? attr : stats);
                  }
                }
              });
            }
          } else {
            throw new Error(Utils.Errors.FILE_NOT_FOUND.replace("%s", localPath));
          }
        },
        /**
         * Asynchronous addLocalFile
         * @param localPath
         * @param callback
         * @param zipPath optional path inside zip
         * @param filter optional RegExp or Function if files match will
         *               be included.
         */
        addLocalFolderAsync: function(localPath, callback, zipPath, filter6) {
          if (filter6 instanceof RegExp) {
            filter6 = /* @__PURE__ */ (function(rx) {
              return function(filename) {
                return rx.test(filename);
              };
            })(filter6);
          } else if ("function" !== typeof filter6) {
            filter6 = function() {
              return true;
            };
          }
          zipPath = zipPath ? fixPath(zipPath) : "";
          localPath = pth.normalize(localPath);
          var self2 = this;
          filetools.fs.open(localPath, "r", function(err) {
            if (err && err.code === "ENOENT") {
              callback(void 0, Utils.Errors.FILE_NOT_FOUND.replace("%s", localPath));
            } else if (err) {
              callback(void 0, err);
            } else {
              var items = filetools.findFiles(localPath);
              var i2 = -1;
              var next = function() {
                i2 += 1;
                if (i2 < items.length) {
                  var filepath = items[i2];
                  var p5 = pth.relative(localPath, filepath).split("\\").join("/");
                  p5 = p5.normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^\x20-\x7E]/g, "");
                  if (filter6(p5)) {
                    filetools.fs.stat(filepath, function(er0, stats) {
                      if (er0) callback(void 0, er0);
                      if (stats.isFile()) {
                        filetools.fs.readFile(filepath, function(er1, data) {
                          if (er1) {
                            callback(void 0, er1);
                          } else {
                            self2.addFile(zipPath + p5, data, "", stats);
                            next();
                          }
                        });
                      } else {
                        self2.addFile(zipPath + p5 + "/", Buffer.alloc(0), "", stats);
                        next();
                      }
                    });
                  } else {
                    process.nextTick(() => {
                      next();
                    });
                  }
                } else {
                  callback(true, void 0);
                }
              };
              next();
            }
          });
        },
        /**
         *
         * @param {string} localPath - path where files will be extracted
         * @param {object} props - optional properties
         * @param {string} props.zipPath - optional path inside zip
         * @param {regexp, function} props.filter - RegExp or Function if files match will be included.
         */
        addLocalFolderPromise: function(localPath, props) {
          return new Promise((resolve9, reject) => {
            const { filter: filter6, zipPath } = Object.assign({}, props);
            this.addLocalFolderAsync(
              localPath,
              (done, err) => {
                if (err) reject(err);
                if (done) resolve9(this);
              },
              zipPath,
              filter6
            );
          });
        },
        /**
         * Allows you to create a entry (file or directory) in the zip file.
         * If you want to create a directory the entryName must end in / and a null buffer should be provided.
         * Comment and attributes are optional
         *
         * @param {string} entryName
         * @param {Buffer | string} content - file content as buffer or utf8 coded string
         * @param {string} comment - file comment
         * @param {number | object} attr - number as unix file permissions, object as filesystem Stats object
         */
        addFile: function(entryName, content3, comment7, attr) {
          let entry = getEntry(entryName);
          const update = entry != null;
          if (!update) {
            entry = new ZipEntry();
            entry.entryName = entryName;
          }
          entry.comment = comment7 || "";
          const isStat = "object" === typeof attr && attr instanceof filetools.fs.Stats;
          if (isStat) {
            entry.header.time = attr.mtime;
          }
          var fileattr = entry.isDirectory ? 16 : 0;
          let unix = entry.isDirectory ? 16384 : 32768;
          if (isStat) {
            unix |= 4095 & attr.mode;
          } else if ("number" === typeof attr) {
            unix |= 4095 & attr;
          } else {
            unix |= entry.isDirectory ? 493 : 420;
          }
          fileattr = (fileattr | unix << 16) >>> 0;
          entry.attr = fileattr;
          entry.setData(content3);
          if (!update) _zip.setEntry(entry);
        },
        /**
         * Returns an array of ZipEntry objects representing the files and folders inside the archive
         *
         * @return Array
         */
        getEntries: function() {
          return _zip ? _zip.entries : [];
        },
        /**
         * Returns a ZipEntry object representing the file or folder specified by ``name``.
         *
         * @param name
         * @return ZipEntry
         */
        getEntry: function(name3) {
          return getEntry(name3);
        },
        getEntryCount: function() {
          return _zip.getEntryCount();
        },
        forEach: function(callback) {
          return _zip.forEach(callback);
        },
        /**
         * Extracts the given entry to the given targetPath
         * If the entry is a directory inside the archive, the entire directory and it's subdirectories will be extracted
         *
         * @param entry ZipEntry object or String with the full path of the entry
         * @param targetPath Target folder where to write the file
         * @param maintainEntryPath If maintainEntryPath is true and the entry is inside a folder, the entry folder
         *                          will be created in targetPath as well. Default is TRUE
         * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true.
         *                  Default is FALSE
         * @param keepOriginalPermission The file will be set as the permission from the entry if this is true.
         *                  Default is FALSE
         * @param outFileName String If set will override the filename of the extracted file (Only works if the entry is a file)
         *
         * @return Boolean
         */
        extractEntryTo: function(entry, targetPath, maintainEntryPath, overwrite, keepOriginalPermission, outFileName) {
          overwrite = get_Bool(overwrite, false);
          keepOriginalPermission = get_Bool(keepOriginalPermission, false);
          maintainEntryPath = get_Bool(maintainEntryPath, true);
          outFileName = get_Str(outFileName, get_Str(keepOriginalPermission, void 0));
          var item = getEntry(entry);
          if (!item) {
            throw new Error(Utils.Errors.NO_ENTRY);
          }
          var entryName = canonical(item.entryName);
          var target = sanitize(targetPath, outFileName && !item.isDirectory ? outFileName : maintainEntryPath ? entryName : pth.basename(entryName));
          if (item.isDirectory) {
            var children = _zip.getEntryChildren(item);
            children.forEach(function(child) {
              if (child.isDirectory) return;
              var content4 = child.getData();
              if (!content4) {
                throw new Error(Utils.Errors.CANT_EXTRACT_FILE);
              }
              var name3 = canonical(child.entryName);
              var childName = sanitize(targetPath, maintainEntryPath ? name3 : pth.basename(name3));
              const fileAttr2 = keepOriginalPermission ? child.header.fileAttr : void 0;
              filetools.writeFileTo(childName, content4, overwrite, fileAttr2);
            });
            return true;
          }
          var content3 = item.getData();
          if (!content3) throw new Error(Utils.Errors.CANT_EXTRACT_FILE);
          if (filetools.fs.existsSync(target) && !overwrite) {
            throw new Error(Utils.Errors.CANT_OVERRIDE);
          }
          const fileAttr = keepOriginalPermission ? entry.header.fileAttr : void 0;
          filetools.writeFileTo(target, content3, overwrite, fileAttr);
          return true;
        },
        /**
         * Test the archive
         *
         */
        test: function(pass2) {
          if (!_zip) {
            return false;
          }
          for (var entry in _zip.entries) {
            try {
              if (entry.isDirectory) {
                continue;
              }
              var content3 = _zip.entries[entry].getData(pass2);
              if (!content3) {
                return false;
              }
            } catch (err) {
              return false;
            }
          }
          return true;
        },
        /**
         * Extracts the entire archive to the given location
         *
         * @param targetPath Target location
         * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true.
         *                  Default is FALSE
         * @param keepOriginalPermission The file will be set as the permission from the entry if this is true.
         *                  Default is FALSE
         */
        extractAllTo: function(targetPath, overwrite, keepOriginalPermission, pass2) {
          overwrite = get_Bool(overwrite, false);
          pass2 = get_Str(keepOriginalPermission, pass2);
          keepOriginalPermission = get_Bool(keepOriginalPermission, false);
          if (!_zip) {
            throw new Error(Utils.Errors.NO_ZIP);
          }
          _zip.entries.forEach(function(entry) {
            var entryName = sanitize(targetPath, canonical(entry.entryName.toString()));
            if (entry.isDirectory) {
              filetools.makeDir(entryName);
              return;
            }
            var content3 = entry.getData(pass2);
            if (!content3) {
              throw new Error(Utils.Errors.CANT_EXTRACT_FILE);
            }
            const fileAttr = keepOriginalPermission ? entry.header.fileAttr : void 0;
            filetools.writeFileTo(entryName, content3, overwrite, fileAttr);
            try {
              filetools.fs.utimesSync(entryName, entry.header.time, entry.header.time);
            } catch (err) {
              throw new Error(Utils.Errors.CANT_EXTRACT_FILE);
            }
          });
        },
        /**
         * Asynchronous extractAllTo
         *
         * @param targetPath Target location
         * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true.
         *                  Default is FALSE
         * @param keepOriginalPermission The file will be set as the permission from the entry if this is true.
         *                  Default is FALSE
         * @param callback The callback will be executed when all entries are extracted successfully or any error is thrown.
         */
        extractAllToAsync: function(targetPath, overwrite, keepOriginalPermission, callback) {
          overwrite = get_Bool(overwrite, false);
          if (typeof keepOriginalPermission === "function" && !callback) callback = keepOriginalPermission;
          keepOriginalPermission = get_Bool(keepOriginalPermission, false);
          if (!callback) {
            callback = function(err) {
              throw new Error(err);
            };
          }
          if (!_zip) {
            callback(new Error(Utils.Errors.NO_ZIP));
            return;
          }
          targetPath = pth.resolve(targetPath);
          const getPath = (entry) => sanitize(targetPath, pth.normalize(canonical(entry.entryName.toString())));
          const getError = (msg, file) => new Error(msg + ': "' + file + '"');
          const dirEntries = [];
          const fileEntries = /* @__PURE__ */ new Set();
          _zip.entries.forEach((e2) => {
            if (e2.isDirectory) {
              dirEntries.push(e2);
            } else {
              fileEntries.add(e2);
            }
          });
          for (const entry of dirEntries) {
            const dirPath = getPath(entry);
            const dirAttr = keepOriginalPermission ? entry.header.fileAttr : void 0;
            try {
              filetools.makeDir(dirPath);
              if (dirAttr) filetools.fs.chmodSync(dirPath, dirAttr);
              filetools.fs.utimesSync(dirPath, entry.header.time, entry.header.time);
            } catch (er) {
              callback(getError("Unable to create folder", dirPath));
            }
          }
          const done = () => {
            if (fileEntries.size === 0) {
              callback();
            }
          };
          for (const entry of fileEntries.values()) {
            const entryName = pth.normalize(canonical(entry.entryName.toString()));
            const filePath = sanitize(targetPath, entryName);
            entry.getDataAsync(function(content3, err_1) {
              if (err_1) {
                callback(new Error(err_1));
                return;
              }
              if (!content3) {
                callback(new Error(Utils.Errors.CANT_EXTRACT_FILE));
              } else {
                const fileAttr = keepOriginalPermission ? entry.header.fileAttr : void 0;
                filetools.writeFileToAsync(filePath, content3, overwrite, fileAttr, function(succ) {
                  if (!succ) {
                    callback(getError("Unable to write file", filePath));
                    return;
                  }
                  filetools.fs.utimes(filePath, entry.header.time, entry.header.time, function(err_2) {
                    if (err_2) {
                      callback(getError("Unable to set times", filePath));
                      return;
                    }
                    fileEntries.delete(entry);
                    done();
                  });
                });
              }
            });
          }
          done();
        },
        /**
         * Writes the newly created zip file to disk at the specified location or if a zip was opened and no ``targetFileName`` is provided, it will overwrite the opened zip
         *
         * @param targetFileName
         * @param callback
         */
        writeZip: function(targetFileName, callback) {
          if (arguments.length === 1) {
            if (typeof targetFileName === "function") {
              callback = targetFileName;
              targetFileName = "";
            }
          }
          if (!targetFileName && opts.filename) {
            targetFileName = opts.filename;
          }
          if (!targetFileName) return;
          var zipData = _zip.compressToBuffer();
          if (zipData) {
            var ok3 = filetools.writeFileTo(targetFileName, zipData, true);
            if (typeof callback === "function") callback(!ok3 ? new Error("failed") : null, "");
          }
        },
        writeZipPromise: function(targetFileName, props) {
          const { overwrite, perm } = Object.assign({ overwrite: true }, props);
          return new Promise((resolve9, reject) => {
            if (!targetFileName && opts.filename) targetFileName = opts.filename;
            if (!targetFileName) reject("ADM-ZIP: ZIP File Name Missing");
            this.toBufferPromise().then((zipData) => {
              const ret = (done) => done ? resolve9(done) : reject("ADM-ZIP: Wasn't able to write zip file");
              filetools.writeFileToAsync(targetFileName, zipData, overwrite, perm, ret);
            }, reject);
          });
        },
        toBufferPromise: function() {
          return new Promise((resolve9, reject) => {
            _zip.toAsyncBuffer(resolve9, reject);
          });
        },
        /**
         * Returns the content of the entire zip file as a Buffer object
         *
         * @return Buffer
         */
        toBuffer: function(onSuccess, onFail, onItemStart, onItemEnd) {
          this.valueOf = 2;
          if (typeof onSuccess === "function") {
            _zip.toAsyncBuffer(onSuccess, onFail, onItemStart, onItemEnd);
            return null;
          }
          return _zip.compressToBuffer();
        }
      };
    };
  }
});

// ../myst-execute/node_modules/isexe/dist/cjs/posix.js
var require_posix = __commonJS({
  "../myst-execute/node_modules/isexe/dist/cjs/posix.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.sync = exports2.isexe = void 0;
    var fs_1 = require("fs");
    var promises_1 = require("fs/promises");
    var isexe = async (path45, options = {}) => {
      const { ignoreErrors = false } = options;
      try {
        return checkStat(await (0, promises_1.stat)(path45), options);
      } catch (e2) {
        const er = e2;
        if (ignoreErrors || er.code === "EACCES")
          return false;
        throw er;
      }
    };
    exports2.isexe = isexe;
    var sync2 = (path45, options = {}) => {
      const { ignoreErrors = false } = options;
      try {
        return checkStat((0, fs_1.statSync)(path45), options);
      } catch (e2) {
        const er = e2;
        if (ignoreErrors || er.code === "EACCES")
          return false;
        throw er;
      }
    };
    exports2.sync = sync2;
    var checkStat = (stat2, options) => stat2.isFile() && checkMode(stat2, options);
    var checkMode = (stat2, options) => {
      var _a6, _b, _c;
      const myUid = options.uid ?? ((_a6 = process.getuid) == null ? void 0 : _a6.call(process));
      const myGroups = options.groups ?? ((_b = process.getgroups) == null ? void 0 : _b.call(process)) ?? [];
      const myGid = options.gid ?? ((_c = process.getgid) == null ? void 0 : _c.call(process)) ?? myGroups[0];
      if (myUid === void 0 || myGid === void 0) {
        throw new Error("cannot get uid or gid");
      }
      const groups = /* @__PURE__ */ new Set([myGid, ...myGroups]);
      const mod = stat2.mode;
      const uid = stat2.uid;
      const gid = stat2.gid;
      const u3 = parseInt("100", 8);
      const g = parseInt("010", 8);
      const o = parseInt("001", 8);
      const ug = u3 | g;
      return !!(mod & o || mod & g && groups.has(gid) || mod & u3 && uid === myUid || mod & ug && myUid === 0);
    };
  }
});

// ../myst-execute/node_modules/isexe/dist/cjs/win32.js
var require_win32 = __commonJS({
  "../myst-execute/node_modules/isexe/dist/cjs/win32.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.sync = exports2.isexe = void 0;
    var fs_1 = require("fs");
    var promises_1 = require("fs/promises");
    var isexe = async (path45, options = {}) => {
      const { ignoreErrors = false } = options;
      try {
        return checkStat(await (0, promises_1.stat)(path45), path45, options);
      } catch (e2) {
        const er = e2;
        if (ignoreErrors || er.code === "EACCES")
          return false;
        throw er;
      }
    };
    exports2.isexe = isexe;
    var sync2 = (path45, options = {}) => {
      const { ignoreErrors = false } = options;
      try {
        return checkStat((0, fs_1.statSync)(path45), path45, options);
      } catch (e2) {
        const er = e2;
        if (ignoreErrors || er.code === "EACCES")
          return false;
        throw er;
      }
    };
    exports2.sync = sync2;
    var checkPathExt = (path45, options) => {
      const { pathExt = process.env.PATHEXT || "" } = options;
      const peSplit = pathExt.split(";");
      if (peSplit.indexOf("") !== -1) {
        return true;
      }
      for (let i2 = 0; i2 < peSplit.length; i2++) {
        const p5 = peSplit[i2].toLowerCase();
        const ext2 = path45.substring(path45.length - p5.length).toLowerCase();
        if (p5 && ext2 === p5) {
          return true;
        }
      }
      return false;
    };
    var checkStat = (stat2, path45, options) => stat2.isFile() && checkPathExt(path45, options);
  }
});

// ../myst-execute/node_modules/isexe/dist/cjs/options.js
var require_options2 = __commonJS({
  "../myst-execute/node_modules/isexe/dist/cjs/options.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
  }
});

// ../myst-execute/node_modules/isexe/dist/cjs/index.js
var require_cjs2 = __commonJS({
  "../myst-execute/node_modules/isexe/dist/cjs/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    var __exportStar = exports2 && exports2.__exportStar || function(m2, exports3) {
      for (var p5 in m2) if (p5 !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p5)) __createBinding(exports3, m2, p5);
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.sync = exports2.isexe = exports2.posix = exports2.win32 = void 0;
    var posix2 = __importStar(require_posix());
    exports2.posix = posix2;
    var win322 = __importStar(require_win32());
    exports2.win32 = win322;
    __exportStar(require_options2(), exports2);
    var platform = process.env._ISEXE_TEST_PLATFORM_ || process.platform;
    var impl = platform === "win32" ? win322 : posix2;
    exports2.isexe = impl.isexe;
    exports2.sync = impl.sync;
  }
});

// ../myst-execute/node_modules/which/lib/index.js
var require_lib16 = __commonJS({
  "../myst-execute/node_modules/which/lib/index.js"(exports2, module2) {
    var { isexe, sync: isexeSync } = require_cjs2();
    var { join: join19, delimiter: delimiter2, sep: sep5, posix: posix2 } = require("path");
    var isWindows = process.platform === "win32";
    var rSlash = new RegExp(`[${posix2.sep}${sep5 === posix2.sep ? "" : sep5}]`.replace(/(\\)/g, "\\$1"));
    var rRel = new RegExp(`^\\.${rSlash.source}`);
    var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" });
    var getPathInfo = (cmd, {
      path: optPath = process.env.PATH,
      pathExt: optPathExt = process.env.PATHEXT,
      delimiter: optDelimiter = delimiter2
    }) => {
      const pathEnv = cmd.match(rSlash) ? [""] : [
        // windows always checks the cwd first
        ...isWindows ? [process.cwd()] : [],
        ...(optPath || /* istanbul ignore next: very unusual */
        "").split(optDelimiter)
      ];
      if (isWindows) {
        const pathExtExe = optPathExt || [".EXE", ".CMD", ".BAT", ".COM"].join(optDelimiter);
        const pathExt = pathExtExe.split(optDelimiter).flatMap((item) => [item, item.toLowerCase()]);
        if (cmd.includes(".") && pathExt[0] !== "") {
          pathExt.unshift("");
        }
        return { pathEnv, pathExt, pathExtExe };
      }
      return { pathEnv, pathExt: [""] };
    };
    var getPathPart = (raw2, cmd) => {
      const pathPart = /^".*"$/.test(raw2) ? raw2.slice(1, -1) : raw2;
      const prefix2 = !pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : "";
      return prefix2 + join19(pathPart, cmd);
    };
    var which8 = async (cmd, opt = {}) => {
      const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
      const found2 = [];
      for (const envPart of pathEnv) {
        const p5 = getPathPart(envPart, cmd);
        for (const ext2 of pathExt) {
          const withExt = p5 + ext2;
          const is4 = await isexe(withExt, { pathExt: pathExtExe, ignoreErrors: true });
          if (is4) {
            if (!opt.all) {
              return withExt;
            }
            found2.push(withExt);
          }
        }
      }
      if (opt.all && found2.length) {
        return found2;
      }
      if (opt.nothrow) {
        return null;
      }
      throw getNotFoundError(cmd);
    };
    var whichSync = (cmd, opt = {}) => {
      const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
      const found2 = [];
      for (const pathEnvPart of pathEnv) {
        const p5 = getPathPart(pathEnvPart, cmd);
        for (const ext2 of pathExt) {
          const withExt = p5 + ext2;
          const is4 = isexeSync(withExt, { pathExt: pathExtExe, ignoreErrors: true });
          if (is4) {
            if (!opt.all) {
              return withExt;
            }
            found2.push(withExt);
          }
        }
      }
      if (opt.all && found2.length) {
        return found2;
      }
      if (opt.nothrow) {
        return null;
      }
      throw getNotFoundError(cmd);
    };
    module2.exports = which8;
    which8.sync = whichSync;
  }
});

// ../../node_modules/readdirp/index.js
var require_readdirp = __commonJS({
  "../../node_modules/readdirp/index.js"(exports2, module2) {
    "use strict";
    var fs50 = require("fs");
    var { Readable } = require("stream");
    var sysPath = require("path");
    var { promisify: promisify5 } = require("util");
    var picomatch2 = require_picomatch2();
    var readdir2 = promisify5(fs50.readdir);
    var stat2 = promisify5(fs50.stat);
    var lstat2 = promisify5(fs50.lstat);
    var realpath2 = promisify5(fs50.realpath);
    var BANG = "!";
    var RECURSIVE_ERROR_CODE = "READDIRP_RECURSIVE_ERROR";
    var NORMAL_FLOW_ERRORS = /* @__PURE__ */ new Set(["ENOENT", "EPERM", "EACCES", "ELOOP", RECURSIVE_ERROR_CODE]);
    var FILE_TYPE = "files";
    var DIR_TYPE = "directories";
    var FILE_DIR_TYPE = "files_directories";
    var EVERYTHING_TYPE = "all";
    var ALL_TYPES = [FILE_TYPE, DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE];
    var isNormalFlowError = (error) => NORMAL_FLOW_ERRORS.has(error.code);
    var [maj, min] = process.versions.node.split(".").slice(0, 2).map((n) => Number.parseInt(n, 10));
    var wantBigintFsStats = process.platform === "win32" && (maj > 10 || maj === 10 && min >= 5);
    var normalizeFilter = (filter6) => {
      if (filter6 === void 0) return;
      if (typeof filter6 === "function") return filter6;
      if (typeof filter6 === "string") {
        const glob2 = picomatch2(filter6.trim());
        return (entry) => glob2(entry.basename);
      }
      if (Array.isArray(filter6)) {
        const positive = [];
        const negative = [];
        for (const item of filter6) {
          const trimmed = item.trim();
          if (trimmed.charAt(0) === BANG) {
            negative.push(picomatch2(trimmed.slice(1)));
          } else {
            positive.push(picomatch2(trimmed));
          }
        }
        if (negative.length > 0) {
          if (positive.length > 0) {
            return (entry) => positive.some((f3) => f3(entry.basename)) && !negative.some((f3) => f3(entry.basename));
          }
          return (entry) => !negative.some((f3) => f3(entry.basename));
        }
        return (entry) => positive.some((f3) => f3(entry.basename));
      }
    };
    var ReaddirpStream = class _ReaddirpStream extends Readable {
      static get defaultOptions() {
        return {
          root: ".",
          /* eslint-disable no-unused-vars */
          fileFilter: (path45) => true,
          directoryFilter: (path45) => true,
          /* eslint-enable no-unused-vars */
          type: FILE_TYPE,
          lstat: false,
          depth: 2147483648,
          alwaysStat: false
        };
      }
      constructor(options = {}) {
        super({
          objectMode: true,
          autoDestroy: true,
          highWaterMark: options.highWaterMark || 4096
        });
        const opts = { ..._ReaddirpStream.defaultOptions, ...options };
        const { root: root6, type: type2 } = opts;
        this._fileFilter = normalizeFilter(opts.fileFilter);
        this._directoryFilter = normalizeFilter(opts.directoryFilter);
        const statMethod = opts.lstat ? lstat2 : stat2;
        if (wantBigintFsStats) {
          this._stat = (path45) => statMethod(path45, { bigint: true });
        } else {
          this._stat = statMethod;
        }
        this._maxDepth = opts.depth;
        this._wantsDir = [DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type2);
        this._wantsFile = [FILE_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type2);
        this._wantsEverything = type2 === EVERYTHING_TYPE;
        this._root = sysPath.resolve(root6);
        this._isDirent = "Dirent" in fs50 && !opts.alwaysStat;
        this._statsProp = this._isDirent ? "dirent" : "stats";
        this._rdOptions = { encoding: "utf8", withFileTypes: this._isDirent };
        this.parents = [this._exploreDir(root6, 1)];
        this.reading = false;
        this.parent = void 0;
      }
      async _read(batch) {
        if (this.reading) return;
        this.reading = true;
        try {
          while (!this.destroyed && batch > 0) {
            const { path: path45, depth, files = [] } = this.parent || {};
            if (files.length > 0) {
              const slice2 = files.splice(0, batch).map((dirent) => this._formatEntry(dirent, path45));
              for (const entry of await Promise.all(slice2)) {
                if (this.destroyed) return;
                const entryType = await this._getEntryType(entry);
                if (entryType === "directory" && this._directoryFilter(entry)) {
                  if (depth <= this._maxDepth) {
                    this.parents.push(this._exploreDir(entry.fullPath, depth + 1));
                  }
                  if (this._wantsDir) {
                    this.push(entry);
                    batch--;
                  }
                } else if ((entryType === "file" || this._includeAsFile(entry)) && this._fileFilter(entry)) {
                  if (this._wantsFile) {
                    this.push(entry);
                    batch--;
                  }
                }
              }
            } else {
              const parent2 = this.parents.pop();
              if (!parent2) {
                this.push(null);
                break;
              }
              this.parent = await parent2;
              if (this.destroyed) return;
            }
          }
        } catch (error) {
          this.destroy(error);
        } finally {
          this.reading = false;
        }
      }
      async _exploreDir(path45, depth) {
        let files;
        try {
          files = await readdir2(path45, this._rdOptions);
        } catch (error) {
          this._onError(error);
        }
        return { files, depth, path: path45 };
      }
      async _formatEntry(dirent, path45) {
        let entry;
        try {
          const basename4 = this._isDirent ? dirent.name : dirent;
          const fullPath2 = sysPath.resolve(sysPath.join(path45, basename4));
          entry = { path: sysPath.relative(this._root, fullPath2), fullPath: fullPath2, basename: basename4 };
          entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath2);
        } catch (err) {
          this._onError(err);
        }
        return entry;
      }
      _onError(err) {
        if (isNormalFlowError(err) && !this.destroyed) {
          this.emit("warn", err);
        } else {
          this.destroy(err);
        }
      }
      async _getEntryType(entry) {
        const stats = entry && entry[this._statsProp];
        if (!stats) {
          return;
        }
        if (stats.isFile()) {
          return "file";
        }
        if (stats.isDirectory()) {
          return "directory";
        }
        if (stats && stats.isSymbolicLink()) {
          const full = entry.fullPath;
          try {
            const entryRealPath = await realpath2(full);
            const entryRealPathStats = await lstat2(entryRealPath);
            if (entryRealPathStats.isFile()) {
              return "file";
            }
            if (entryRealPathStats.isDirectory()) {
              const len = entryRealPath.length;
              if (full.startsWith(entryRealPath) && full.substr(len, 1) === sysPath.sep) {
                const recursiveError = new Error(
                  `Circular symlink detected: "${full}" points to "${entryRealPath}"`
                );
                recursiveError.code = RECURSIVE_ERROR_CODE;
                return this._onError(recursiveError);
              }
              return "directory";
            }
          } catch (error) {
            this._onError(error);
          }
        }
      }
      _includeAsFile(entry) {
        const stats = entry && entry[this._statsProp];
        return stats && this._wantsEverything && !stats.isDirectory();
      }
    };
    var readdirp = (root6, options = {}) => {
      let type2 = options.entryType || options.type;
      if (type2 === "both") type2 = FILE_DIR_TYPE;
      if (type2) options.type = type2;
      if (!root6) {
        throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");
      } else if (typeof root6 !== "string") {
        throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");
      } else if (type2 && !ALL_TYPES.includes(type2)) {
        throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(", ")}`);
      }
      options.root = root6;
      return new ReaddirpStream(options);
    };
    var readdirpPromise = (root6, options = {}) => {
      return new Promise((resolve9, reject) => {
        const files = [];
        readdirp(root6, options).on("data", (entry) => files.push(entry)).on("end", () => resolve9(files)).on("error", (error) => reject(error));
      });
    };
    readdirp.promise = readdirpPromise;
    readdirp.ReaddirpStream = ReaddirpStream;
    readdirp.default = readdirp;
    module2.exports = readdirp;
  }
});

// ../../node_modules/normalize-path/index.js
var require_normalize_path = __commonJS({
  "../../node_modules/normalize-path/index.js"(exports2, module2) {
    module2.exports = function(path45, stripTrailing) {
      if (typeof path45 !== "string") {
        throw new TypeError("expected path to be a string");
      }
      if (path45 === "\\" || path45 === "/") return "/";
      var len = path45.length;
      if (len <= 1) return path45;
      var prefix2 = "";
      if (len > 4 && path45[3] === "\\") {
        var ch = path45[2];
        if ((ch === "?" || ch === ".") && path45.slice(0, 2) === "\\\\") {
          path45 = path45.slice(2);
          prefix2 = "//";
        }
      }
      var segs = path45.split(/[/\\]+/);
      if (stripTrailing !== false && segs[segs.length - 1] === "") {
        segs.pop();
      }
      return prefix2 + segs.join("/");
    };
  }
});

// ../../node_modules/anymatch/index.js
var require_anymatch = __commonJS({
  "../../node_modules/anymatch/index.js"(exports2, module2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var picomatch2 = require_picomatch2();
    var normalizePath = require_normalize_path();
    var BANG = "!";
    var DEFAULT_OPTIONS = { returnIndex: false };
    var arrify = (item) => Array.isArray(item) ? item : [item];
    var createPattern = (matcher, options) => {
      if (typeof matcher === "function") {
        return matcher;
      }
      if (typeof matcher === "string") {
        const glob2 = picomatch2(matcher, options);
        return (string2) => matcher === string2 || glob2(string2);
      }
      if (matcher instanceof RegExp) {
        return (string2) => matcher.test(string2);
      }
      return (string2) => false;
    };
    var matchPatterns = (patterns, negPatterns, args, returnIndex) => {
      const isList = Array.isArray(args);
      const _path2 = isList ? args[0] : args;
      if (!isList && typeof _path2 !== "string") {
        throw new TypeError("anymatch: second argument must be a string: got " + Object.prototype.toString.call(_path2));
      }
      const path45 = normalizePath(_path2, false);
      for (let index4 = 0; index4 < negPatterns.length; index4++) {
        const nglob = negPatterns[index4];
        if (nglob(path45)) {
          return returnIndex ? -1 : false;
        }
      }
      const applied = isList && [path45].concat(args.slice(1));
      for (let index4 = 0; index4 < patterns.length; index4++) {
        const pattern = patterns[index4];
        if (isList ? pattern(...applied) : pattern(path45)) {
          return returnIndex ? index4 : true;
        }
      }
      return returnIndex ? -1 : false;
    };
    var anymatch = (matchers3, testString, options = DEFAULT_OPTIONS) => {
      if (matchers3 == null) {
        throw new TypeError("anymatch: specify first argument");
      }
      const opts = typeof options === "boolean" ? { returnIndex: options } : options;
      const returnIndex = opts.returnIndex || false;
      const mtchers = arrify(matchers3);
      const negatedGlobs = mtchers.filter((item) => typeof item === "string" && item.charAt(0) === BANG).map((item) => item.slice(1)).map((item) => picomatch2(item, opts));
      const patterns = mtchers.filter((item) => typeof item !== "string" || typeof item === "string" && item.charAt(0) !== BANG).map((matcher) => createPattern(matcher, opts));
      if (testString == null) {
        return (testString2, ri = false) => {
          const returnIndex2 = typeof ri === "boolean" ? ri : false;
          return matchPatterns(patterns, negatedGlobs, testString2, returnIndex2);
        };
      }
      return matchPatterns(patterns, negatedGlobs, testString, returnIndex);
    };
    anymatch.default = anymatch;
    module2.exports = anymatch;
  }
});

// ../../node_modules/is-extglob/index.js
var require_is_extglob = __commonJS({
  "../../node_modules/is-extglob/index.js"(exports2, module2) {
    module2.exports = function isExtglob(str2) {
      if (typeof str2 !== "string" || str2 === "") {
        return false;
      }
      var match3;
      while (match3 = /(\\).|([@?!+*]\(.*\))/g.exec(str2)) {
        if (match3[2]) return true;
        str2 = str2.slice(match3.index + match3[0].length);
      }
      return false;
    };
  }
});

// ../../node_modules/is-glob/index.js
var require_is_glob = __commonJS({
  "../../node_modules/is-glob/index.js"(exports2, module2) {
    var isExtglob = require_is_extglob();
    var chars = { "{": "}", "(": ")", "[": "]" };
    var strictCheck = function(str2) {
      if (str2[0] === "!") {
        return true;
      }
      var index4 = 0;
      var pipeIndex = -2;
      var closeSquareIndex = -2;
      var closeCurlyIndex = -2;
      var closeParenIndex = -2;
      var backSlashIndex = -2;
      while (index4 < str2.length) {
        if (str2[index4] === "*") {
          return true;
        }
        if (str2[index4 + 1] === "?" && /[\].+)]/.test(str2[index4])) {
          return true;
        }
        if (closeSquareIndex !== -1 && str2[index4] === "[" && str2[index4 + 1] !== "]") {
          if (closeSquareIndex < index4) {
            closeSquareIndex = str2.indexOf("]", index4);
          }
          if (closeSquareIndex > index4) {
            if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {
              return true;
            }
            backSlashIndex = str2.indexOf("\\", index4);
            if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {
              return true;
            }
          }
        }
        if (closeCurlyIndex !== -1 && str2[index4] === "{" && str2[index4 + 1] !== "}") {
          closeCurlyIndex = str2.indexOf("}", index4);
          if (closeCurlyIndex > index4) {
            backSlashIndex = str2.indexOf("\\", index4);
            if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) {
              return true;
            }
          }
        }
        if (closeParenIndex !== -1 && str2[index4] === "(" && str2[index4 + 1] === "?" && /[:!=]/.test(str2[index4 + 2]) && str2[index4 + 3] !== ")") {
          closeParenIndex = str2.indexOf(")", index4);
          if (closeParenIndex > index4) {
            backSlashIndex = str2.indexOf("\\", index4);
            if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {
              return true;
            }
          }
        }
        if (pipeIndex !== -1 && str2[index4] === "(" && str2[index4 + 1] !== "|") {
          if (pipeIndex < index4) {
            pipeIndex = str2.indexOf("|", index4);
          }
          if (pipeIndex !== -1 && str2[pipeIndex + 1] !== ")") {
            closeParenIndex = str2.indexOf(")", pipeIndex);
            if (closeParenIndex > pipeIndex) {
              backSlashIndex = str2.indexOf("\\", pipeIndex);
              if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {
                return true;
              }
            }
          }
        }
        if (str2[index4] === "\\") {
          var open2 = str2[index4 + 1];
          index4 += 2;
          var close2 = chars[open2];
          if (close2) {
            var n = str2.indexOf(close2, index4);
            if (n !== -1) {
              index4 = n + 1;
            }
          }
          if (str2[index4] === "!") {
            return true;
          }
        } else {
          index4++;
        }
      }
      return false;
    };
    var relaxedCheck = function(str2) {
      if (str2[0] === "!") {
        return true;
      }
      var index4 = 0;
      while (index4 < str2.length) {
        if (/[*?{}()[\]]/.test(str2[index4])) {
          return true;
        }
        if (str2[index4] === "\\") {
          var open2 = str2[index4 + 1];
          index4 += 2;
          var close2 = chars[open2];
          if (close2) {
            var n = str2.indexOf(close2, index4);
            if (n !== -1) {
              index4 = n + 1;
            }
          }
          if (str2[index4] === "!") {
            return true;
          }
        } else {
          index4++;
        }
      }
      return false;
    };
    module2.exports = function isGlob(str2, options) {
      if (typeof str2 !== "string" || str2 === "") {
        return false;
      }
      if (isExtglob(str2)) {
        return true;
      }
      var check2 = strictCheck;
      if (options && options.strict === false) {
        check2 = relaxedCheck;
      }
      return check2(str2);
    };
  }
});

// ../../node_modules/glob-parent/index.js
var require_glob_parent = __commonJS({
  "../../node_modules/glob-parent/index.js"(exports2, module2) {
    "use strict";
    var isGlob = require_is_glob();
    var pathPosixDirname = require("path").posix.dirname;
    var isWin32 = require("os").platform() === "win32";
    var slash = "/";
    var backslash = /\\/g;
    var enclosure = /[\{\[].*[\}\]]$/;
    var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/;
    var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g;
    module2.exports = function globParent(str2, opts) {
      var options = Object.assign({ flipBackslashes: true }, opts);
      if (options.flipBackslashes && isWin32 && str2.indexOf(slash) < 0) {
        str2 = str2.replace(backslash, slash);
      }
      if (enclosure.test(str2)) {
        str2 += slash;
      }
      str2 += "a";
      do {
        str2 = pathPosixDirname(str2);
      } while (isGlob(str2) || globby.test(str2));
      return str2.replace(escaped, "$1");
    };
  }
});

// ../../node_modules/braces/lib/utils.js
var require_utils7 = __commonJS({
  "../../node_modules/braces/lib/utils.js"(exports2) {
    "use strict";
    exports2.isInteger = (num) => {
      if (typeof num === "number") {
        return Number.isInteger(num);
      }
      if (typeof num === "string" && num.trim() !== "") {
        return Number.isInteger(Number(num));
      }
      return false;
    };
    exports2.find = (node3, type2) => node3.nodes.find((node4) => node4.type === type2);
    exports2.exceedsLimit = (min, max, step = 1, limit) => {
      if (limit === false) return false;
      if (!exports2.isInteger(min) || !exports2.isInteger(max)) return false;
      return (Number(max) - Number(min)) / Number(step) >= limit;
    };
    exports2.escapeNode = (block5, n = 0, type2) => {
      const node3 = block5.nodes[n];
      if (!node3) return;
      if (type2 && node3.type === type2 || node3.type === "open" || node3.type === "close") {
        if (node3.escaped !== true) {
          node3.value = "\\" + node3.value;
          node3.escaped = true;
        }
      }
    };
    exports2.encloseBrace = (node3) => {
      if (node3.type !== "brace") return false;
      if (node3.commas >> 0 + node3.ranges >> 0 === 0) {
        node3.invalid = true;
        return true;
      }
      return false;
    };
    exports2.isInvalidBrace = (block5) => {
      if (block5.type !== "brace") return false;
      if (block5.invalid === true || block5.dollar) return true;
      if (block5.commas >> 0 + block5.ranges >> 0 === 0) {
        block5.invalid = true;
        return true;
      }
      if (block5.open !== true || block5.close !== true) {
        block5.invalid = true;
        return true;
      }
      return false;
    };
    exports2.isOpenOrClose = (node3) => {
      if (node3.type === "open" || node3.type === "close") {
        return true;
      }
      return node3.open === true || node3.close === true;
    };
    exports2.reduce = (nodes) => nodes.reduce((acc, node3) => {
      if (node3.type === "text") acc.push(node3.value);
      if (node3.type === "range") node3.type = "text";
      return acc;
    }, []);
    exports2.flatten = (...args) => {
      const result = [];
      const flat = (arr) => {
        for (let i2 = 0; i2 < arr.length; i2++) {
          const ele = arr[i2];
          if (Array.isArray(ele)) {
            flat(ele);
            continue;
          }
          if (ele !== void 0) {
            result.push(ele);
          }
        }
        return result;
      };
      flat(args);
      return result;
    };
  }
});

// ../../node_modules/braces/lib/stringify.js
var require_stringify3 = __commonJS({
  "../../node_modules/braces/lib/stringify.js"(exports2, module2) {
    "use strict";
    var utils2 = require_utils7();
    module2.exports = (ast, options = {}) => {
      const stringify4 = (node3, parent2 = {}) => {
        const invalidBlock = options.escapeInvalid && utils2.isInvalidBrace(parent2);
        const invalidNode = node3.invalid === true && options.escapeInvalid === true;
        let output2 = "";
        if (node3.value) {
          if ((invalidBlock || invalidNode) && utils2.isOpenOrClose(node3)) {
            return "\\" + node3.value;
          }
          return node3.value;
        }
        if (node3.value) {
          return node3.value;
        }
        if (node3.nodes) {
          for (const child of node3.nodes) {
            output2 += stringify4(child);
          }
        }
        return output2;
      };
      return stringify4(ast);
    };
  }
});

// ../../node_modules/is-number/index.js
var require_is_number = __commonJS({
  "../../node_modules/is-number/index.js"(exports2, module2) {
    "use strict";
    module2.exports = function(num) {
      if (typeof num === "number") {
        return num - num === 0;
      }
      if (typeof num === "string" && num.trim() !== "") {
        return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);
      }
      return false;
    };
  }
});

// ../../node_modules/to-regex-range/index.js
var require_to_regex_range = __commonJS({
  "../../node_modules/to-regex-range/index.js"(exports2, module2) {
    "use strict";
    var isNumber2 = require_is_number();
    var toRegexRange = (min, max, options) => {
      if (isNumber2(min) === false) {
        throw new TypeError("toRegexRange: expected the first argument to be a number");
      }
      if (max === void 0 || min === max) {
        return String(min);
      }
      if (isNumber2(max) === false) {
        throw new TypeError("toRegexRange: expected the second argument to be a number.");
      }
      let opts = { relaxZeros: true, ...options };
      if (typeof opts.strictZeros === "boolean") {
        opts.relaxZeros = opts.strictZeros === false;
      }
      let relax = String(opts.relaxZeros);
      let shorthand = String(opts.shorthand);
      let capture = String(opts.capture);
      let wrap4 = String(opts.wrap);
      let cacheKey = min + ":" + max + "=" + relax + shorthand + capture + wrap4;
      if (toRegexRange.cache.hasOwnProperty(cacheKey)) {
        return toRegexRange.cache[cacheKey].result;
      }
      let a2 = Math.min(min, max);
      let b = Math.max(min, max);
      if (Math.abs(a2 - b) === 1) {
        let result = min + "|" + max;
        if (opts.capture) {
          return `(${result})`;
        }
        if (opts.wrap === false) {
          return result;
        }
        return `(?:${result})`;
      }
      let isPadded = hasPadding(min) || hasPadding(max);
      let state = { min, max, a: a2, b };
      let positives = [];
      let negatives = [];
      if (isPadded) {
        state.isPadded = isPadded;
        state.maxLen = String(state.max).length;
      }
      if (a2 < 0) {
        let newMin = b < 0 ? Math.abs(b) : 1;
        negatives = splitToPatterns(newMin, Math.abs(a2), state, opts);
        a2 = state.a = 0;
      }
      if (b >= 0) {
        positives = splitToPatterns(a2, b, state, opts);
      }
      state.negatives = negatives;
      state.positives = positives;
      state.result = collatePatterns(negatives, positives, opts);
      if (opts.capture === true) {
        state.result = `(${state.result})`;
      } else if (opts.wrap !== false && positives.length + negatives.length > 1) {
        state.result = `(?:${state.result})`;
      }
      toRegexRange.cache[cacheKey] = state;
      return state.result;
    };
    function collatePatterns(neg, pos, options) {
      let onlyNegative = filterPatterns(neg, pos, "-", false, options) || [];
      let onlyPositive = filterPatterns(pos, neg, "", false, options) || [];
      let intersected = filterPatterns(neg, pos, "-?", true, options) || [];
      let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);
      return subpatterns.join("|");
    }
    function splitToRanges(min, max) {
      let nines = 1;
      let zeros = 1;
      let stop = countNines(min, nines);
      let stops = /* @__PURE__ */ new Set([max]);
      while (min <= stop && stop <= max) {
        stops.add(stop);
        nines += 1;
        stop = countNines(min, nines);
      }
      stop = countZeros(max + 1, zeros) - 1;
      while (min < stop && stop <= max) {
        stops.add(stop);
        zeros += 1;
        stop = countZeros(max + 1, zeros) - 1;
      }
      stops = [...stops];
      stops.sort(compare3);
      return stops;
    }
    function rangeToPattern(start, stop, options) {
      if (start === stop) {
        return { pattern: start, count: [], digits: 0 };
      }
      let zipped = zip2(start, stop);
      let digits = zipped.length;
      let pattern = "";
      let count2 = 0;
      for (let i2 = 0; i2 < digits; i2++) {
        let [startDigit, stopDigit] = zipped[i2];
        if (startDigit === stopDigit) {
          pattern += startDigit;
        } else if (startDigit !== "0" || stopDigit !== "9") {
          pattern += toCharacterClass(startDigit, stopDigit, options);
        } else {
          count2++;
        }
      }
      if (count2) {
        pattern += options.shorthand === true ? "\\d" : "[0-9]";
      }
      return { pattern, count: [count2], digits };
    }
    function splitToPatterns(min, max, tok, options) {
      let ranges = splitToRanges(min, max);
      let tokens = [];
      let start = min;
      let prev;
      for (let i2 = 0; i2 < ranges.length; i2++) {
        let max2 = ranges[i2];
        let obj = rangeToPattern(String(start), String(max2), options);
        let zeros = "";
        if (!tok.isPadded && prev && prev.pattern === obj.pattern) {
          if (prev.count.length > 1) {
            prev.count.pop();
          }
          prev.count.push(obj.count[0]);
          prev.string = prev.pattern + toQuantifier(prev.count);
          start = max2 + 1;
          continue;
        }
        if (tok.isPadded) {
          zeros = padZeros(max2, tok, options);
        }
        obj.string = zeros + obj.pattern + toQuantifier(obj.count);
        tokens.push(obj);
        start = max2 + 1;
        prev = obj;
      }
      return tokens;
    }
    function filterPatterns(arr, comparison, prefix2, intersection, options) {
      let result = [];
      for (let ele of arr) {
        let { string: string2 } = ele;
        if (!intersection && !contains3(comparison, "string", string2)) {
          result.push(prefix2 + string2);
        }
        if (intersection && contains3(comparison, "string", string2)) {
          result.push(prefix2 + string2);
        }
      }
      return result;
    }
    function zip2(a2, b) {
      let arr = [];
      for (let i2 = 0; i2 < a2.length; i2++) arr.push([a2[i2], b[i2]]);
      return arr;
    }
    function compare3(a2, b) {
      return a2 > b ? 1 : b > a2 ? -1 : 0;
    }
    function contains3(arr, key2, val) {
      return arr.some((ele) => ele[key2] === val);
    }
    function countNines(min, len) {
      return Number(String(min).slice(0, -len) + "9".repeat(len));
    }
    function countZeros(integer, zeros) {
      return integer - integer % Math.pow(10, zeros);
    }
    function toQuantifier(digits) {
      let [start = 0, stop = ""] = digits;
      if (stop || start > 1) {
        return `{${start + (stop ? "," + stop : "")}}`;
      }
      return "";
    }
    function toCharacterClass(a2, b, options) {
      return `[${a2}${b - a2 === 1 ? "" : "-"}${b}]`;
    }
    function hasPadding(str2) {
      return /^-?(0+)\d/.test(str2);
    }
    function padZeros(value, tok, options) {
      if (!tok.isPadded) {
        return value;
      }
      let diff = Math.abs(tok.maxLen - String(value).length);
      let relax = options.relaxZeros !== false;
      switch (diff) {
        case 0:
          return "";
        case 1:
          return relax ? "0?" : "0";
        case 2:
          return relax ? "0{0,2}" : "00";
        default: {
          return relax ? `0{0,${diff}}` : `0{${diff}}`;
        }
      }
    }
    toRegexRange.cache = {};
    toRegexRange.clearCache = () => toRegexRange.cache = {};
    module2.exports = toRegexRange;
  }
});

// ../../node_modules/fill-range/index.js
var require_fill_range = __commonJS({
  "../../node_modules/fill-range/index.js"(exports2, module2) {
    "use strict";
    var util4 = require("util");
    var toRegexRange = require_to_regex_range();
    var isObject2 = (val) => val !== null && typeof val === "object" && !Array.isArray(val);
    var transform3 = (toNumber) => {
      return (value) => toNumber === true ? Number(value) : String(value);
    };
    var isValidValue = (value) => {
      return typeof value === "number" || typeof value === "string" && value !== "";
    };
    var isNumber2 = (num) => Number.isInteger(+num);
    var zeros = (input3) => {
      let value = `${input3}`;
      let index4 = -1;
      if (value[0] === "-") value = value.slice(1);
      if (value === "0") return false;
      while (value[++index4] === "0") ;
      return index4 > 0;
    };
    var stringify4 = (start, end, options) => {
      if (typeof start === "string" || typeof end === "string") {
        return true;
      }
      return options.stringify === true;
    };
    var pad2 = (input3, maxLength, toNumber) => {
      if (maxLength > 0) {
        let dash2 = input3[0] === "-" ? "-" : "";
        if (dash2) input3 = input3.slice(1);
        input3 = dash2 + input3.padStart(dash2 ? maxLength - 1 : maxLength, "0");
      }
      if (toNumber === false) {
        return String(input3);
      }
      return input3;
    };
    var toMaxLen = (input3, maxLength) => {
      let negative = input3[0] === "-" ? "-" : "";
      if (negative) {
        input3 = input3.slice(1);
        maxLength--;
      }
      while (input3.length < maxLength) input3 = "0" + input3;
      return negative ? "-" + input3 : input3;
    };
    var toSequence = (parts, options, maxLen) => {
      parts.negatives.sort((a2, b) => a2 < b ? -1 : a2 > b ? 1 : 0);
      parts.positives.sort((a2, b) => a2 < b ? -1 : a2 > b ? 1 : 0);
      let prefix2 = options.capture ? "" : "?:";
      let positives = "";
      let negatives = "";
      let result;
      if (parts.positives.length) {
        positives = parts.positives.map((v) => toMaxLen(String(v), maxLen)).join("|");
      }
      if (parts.negatives.length) {
        negatives = `-(${prefix2}${parts.negatives.map((v) => toMaxLen(String(v), maxLen)).join("|")})`;
      }
      if (positives && negatives) {
        result = `${positives}|${negatives}`;
      } else {
        result = positives || negatives;
      }
      if (options.wrap) {
        return `(${prefix2}${result})`;
      }
      return result;
    };
    var toRange = (a2, b, isNumbers, options) => {
      if (isNumbers) {
        return toRegexRange(a2, b, { wrap: false, ...options });
      }
      let start = String.fromCharCode(a2);
      if (a2 === b) return start;
      let stop = String.fromCharCode(b);
      return `[${start}-${stop}]`;
    };
    var toRegex = (start, end, options) => {
      if (Array.isArray(start)) {
        let wrap4 = options.wrap === true;
        let prefix2 = options.capture ? "" : "?:";
        return wrap4 ? `(${prefix2}${start.join("|")})` : start.join("|");
      }
      return toRegexRange(start, end, options);
    };
    var rangeError = (...args) => {
      return new RangeError("Invalid range arguments: " + util4.inspect(...args));
    };
    var invalidRange = (start, end, options) => {
      if (options.strictRanges === true) throw rangeError([start, end]);
      return [];
    };
    var invalidStep = (step, options) => {
      if (options.strictRanges === true) {
        throw new TypeError(`Expected step "${step}" to be a number`);
      }
      return [];
    };
    var fillNumbers = (start, end, step = 1, options = {}) => {
      let a2 = Number(start);
      let b = Number(end);
      if (!Number.isInteger(a2) || !Number.isInteger(b)) {
        if (options.strictRanges === true) throw rangeError([start, end]);
        return [];
      }
      if (a2 === 0) a2 = 0;
      if (b === 0) b = 0;
      let descending = a2 > b;
      let startString = String(start);
      let endString = String(end);
      let stepString = String(step);
      step = Math.max(Math.abs(step), 1);
      let padded = zeros(startString) || zeros(endString) || zeros(stepString);
      let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;
      let toNumber = padded === false && stringify4(start, end, options) === false;
      let format = options.transform || transform3(toNumber);
      if (options.toRegex && step === 1) {
        return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);
      }
      let parts = { negatives: [], positives: [] };
      let push = (num) => parts[num < 0 ? "negatives" : "positives"].push(Math.abs(num));
      let range = [];
      let index4 = 0;
      while (descending ? a2 >= b : a2 <= b) {
        if (options.toRegex === true && step > 1) {
          push(a2);
        } else {
          range.push(pad2(format(a2, index4), maxLen, toNumber));
        }
        a2 = descending ? a2 - step : a2 + step;
        index4++;
      }
      if (options.toRegex === true) {
        return step > 1 ? toSequence(parts, options, maxLen) : toRegex(range, null, { wrap: false, ...options });
      }
      return range;
    };
    var fillLetters = (start, end, step = 1, options = {}) => {
      if (!isNumber2(start) && start.length > 1 || !isNumber2(end) && end.length > 1) {
        return invalidRange(start, end, options);
      }
      let format = options.transform || ((val) => String.fromCharCode(val));
      let a2 = `${start}`.charCodeAt(0);
      let b = `${end}`.charCodeAt(0);
      let descending = a2 > b;
      let min = Math.min(a2, b);
      let max = Math.max(a2, b);
      if (options.toRegex && step === 1) {
        return toRange(min, max, false, options);
      }
      let range = [];
      let index4 = 0;
      while (descending ? a2 >= b : a2 <= b) {
        range.push(format(a2, index4));
        a2 = descending ? a2 - step : a2 + step;
        index4++;
      }
      if (options.toRegex === true) {
        return toRegex(range, null, { wrap: false, options });
      }
      return range;
    };
    var fill3 = (start, end, step, options = {}) => {
      if (end == null && isValidValue(start)) {
        return [start];
      }
      if (!isValidValue(start) || !isValidValue(end)) {
        return invalidRange(start, end, options);
      }
      if (typeof step === "function") {
        return fill3(start, end, 1, { transform: step });
      }
      if (isObject2(step)) {
        return fill3(start, end, 0, step);
      }
      let opts = { ...options };
      if (opts.capture === true) opts.wrap = true;
      step = step || opts.step || 1;
      if (!isNumber2(step)) {
        if (step != null && !isObject2(step)) return invalidStep(step, opts);
        return fill3(start, end, 1, step);
      }
      if (isNumber2(start) && isNumber2(end)) {
        return fillNumbers(start, end, step, opts);
      }
      return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);
    };
    module2.exports = fill3;
  }
});

// ../../node_modules/braces/lib/compile.js
var require_compile = __commonJS({
  "../../node_modules/braces/lib/compile.js"(exports2, module2) {
    "use strict";
    var fill3 = require_fill_range();
    var utils2 = require_utils7();
    var compile2 = (ast, options = {}) => {
      const walk2 = (node3, parent2 = {}) => {
        const invalidBlock = utils2.isInvalidBrace(parent2);
        const invalidNode = node3.invalid === true && options.escapeInvalid === true;
        const invalid3 = invalidBlock === true || invalidNode === true;
        const prefix2 = options.escapeInvalid === true ? "\\" : "";
        let output2 = "";
        if (node3.isOpen === true) {
          return prefix2 + node3.value;
        }
        if (node3.isClose === true) {
          console.log("node.isClose", prefix2, node3.value);
          return prefix2 + node3.value;
        }
        if (node3.type === "open") {
          return invalid3 ? prefix2 + node3.value : "(";
        }
        if (node3.type === "close") {
          return invalid3 ? prefix2 + node3.value : ")";
        }
        if (node3.type === "comma") {
          return node3.prev.type === "comma" ? "" : invalid3 ? node3.value : "|";
        }
        if (node3.value) {
          return node3.value;
        }
        if (node3.nodes && node3.ranges > 0) {
          const args = utils2.reduce(node3.nodes);
          const range = fill3(...args, { ...options, wrap: false, toRegex: true, strictZeros: true });
          if (range.length !== 0) {
            return args.length > 1 && range.length > 1 ? `(${range})` : range;
          }
        }
        if (node3.nodes) {
          for (const child of node3.nodes) {
            output2 += walk2(child, node3);
          }
        }
        return output2;
      };
      return walk2(ast);
    };
    module2.exports = compile2;
  }
});

// ../../node_modules/braces/lib/expand.js
var require_expand = __commonJS({
  "../../node_modules/braces/lib/expand.js"(exports2, module2) {
    "use strict";
    var fill3 = require_fill_range();
    var stringify4 = require_stringify3();
    var utils2 = require_utils7();
    var append = (queue = "", stash = "", enclose = false) => {
      const result = [];
      queue = [].concat(queue);
      stash = [].concat(stash);
      if (!stash.length) return queue;
      if (!queue.length) {
        return enclose ? utils2.flatten(stash).map((ele) => `{${ele}}`) : stash;
      }
      for (const item of queue) {
        if (Array.isArray(item)) {
          for (const value of item) {
            result.push(append(value, stash, enclose));
          }
        } else {
          for (let ele of stash) {
            if (enclose === true && typeof ele === "string") ele = `{${ele}}`;
            result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele);
          }
        }
      }
      return utils2.flatten(result);
    };
    var expand2 = (ast, options = {}) => {
      const rangeLimit = options.rangeLimit === void 0 ? 1e3 : options.rangeLimit;
      const walk2 = (node3, parent2 = {}) => {
        node3.queue = [];
        let p5 = parent2;
        let q2 = parent2.queue;
        while (p5.type !== "brace" && p5.type !== "root" && p5.parent) {
          p5 = p5.parent;
          q2 = p5.queue;
        }
        if (node3.invalid || node3.dollar) {
          q2.push(append(q2.pop(), stringify4(node3, options)));
          return;
        }
        if (node3.type === "brace" && node3.invalid !== true && node3.nodes.length === 2) {
          q2.push(append(q2.pop(), ["{}"]));
          return;
        }
        if (node3.nodes && node3.ranges > 0) {
          const args = utils2.reduce(node3.nodes);
          if (utils2.exceedsLimit(...args, options.step, rangeLimit)) {
            throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");
          }
          let range = fill3(...args, options);
          if (range.length === 0) {
            range = stringify4(node3, options);
          }
          q2.push(append(q2.pop(), range));
          node3.nodes = [];
          return;
        }
        const enclose = utils2.encloseBrace(node3);
        let queue = node3.queue;
        let block5 = node3;
        while (block5.type !== "brace" && block5.type !== "root" && block5.parent) {
          block5 = block5.parent;
          queue = block5.queue;
        }
        for (let i2 = 0; i2 < node3.nodes.length; i2++) {
          const child = node3.nodes[i2];
          if (child.type === "comma" && node3.type === "brace") {
            if (i2 === 1) queue.push("");
            queue.push("");
            continue;
          }
          if (child.type === "close") {
            q2.push(append(q2.pop(), queue, enclose));
            continue;
          }
          if (child.value && child.type !== "open") {
            queue.push(append(queue.pop(), child.value));
            continue;
          }
          if (child.nodes) {
            walk2(child, node3);
          }
        }
        return queue;
      };
      return utils2.flatten(walk2(ast));
    };
    module2.exports = expand2;
  }
});

// ../../node_modules/braces/lib/constants.js
var require_constants4 = __commonJS({
  "../../node_modules/braces/lib/constants.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      MAX_LENGTH: 1e4,
      // Digits
      CHAR_0: "0",
      /* 0 */
      CHAR_9: "9",
      /* 9 */
      // Alphabet chars.
      CHAR_UPPERCASE_A: "A",
      /* A */
      CHAR_LOWERCASE_A: "a",
      /* a */
      CHAR_UPPERCASE_Z: "Z",
      /* Z */
      CHAR_LOWERCASE_Z: "z",
      /* z */
      CHAR_LEFT_PARENTHESES: "(",
      /* ( */
      CHAR_RIGHT_PARENTHESES: ")",
      /* ) */
      CHAR_ASTERISK: "*",
      /* * */
      // Non-alphabetic chars.
      CHAR_AMPERSAND: "&",
      /* & */
      CHAR_AT: "@",
      /* @ */
      CHAR_BACKSLASH: "\\",
      /* \ */
      CHAR_BACKTICK: "`",
      /* ` */
      CHAR_CARRIAGE_RETURN: "\r",
      /* \r */
      CHAR_CIRCUMFLEX_ACCENT: "^",
      /* ^ */
      CHAR_COLON: ":",
      /* : */
      CHAR_COMMA: ",",
      /* , */
      CHAR_DOLLAR: "$",
      /* . */
      CHAR_DOT: ".",
      /* . */
      CHAR_DOUBLE_QUOTE: '"',
      /* " */
      CHAR_EQUAL: "=",
      /* = */
      CHAR_EXCLAMATION_MARK: "!",
      /* ! */
      CHAR_FORM_FEED: "\f",
      /* \f */
      CHAR_FORWARD_SLASH: "/",
      /* / */
      CHAR_HASH: "#",
      /* # */
      CHAR_HYPHEN_MINUS: "-",
      /* - */
      CHAR_LEFT_ANGLE_BRACKET: "<",
      /* < */
      CHAR_LEFT_CURLY_BRACE: "{",
      /* { */
      CHAR_LEFT_SQUARE_BRACKET: "[",
      /* [ */
      CHAR_LINE_FEED: "\n",
      /* \n */
      CHAR_NO_BREAK_SPACE: "\xA0",
      /* \u00A0 */
      CHAR_PERCENT: "%",
      /* % */
      CHAR_PLUS: "+",
      /* + */
      CHAR_QUESTION_MARK: "?",
      /* ? */
      CHAR_RIGHT_ANGLE_BRACKET: ">",
      /* > */
      CHAR_RIGHT_CURLY_BRACE: "}",
      /* } */
      CHAR_RIGHT_SQUARE_BRACKET: "]",
      /* ] */
      CHAR_SEMICOLON: ";",
      /* ; */
      CHAR_SINGLE_QUOTE: "'",
      /* ' */
      CHAR_SPACE: " ",
      /*   */
      CHAR_TAB: "	",
      /* \t */
      CHAR_UNDERSCORE: "_",
      /* _ */
      CHAR_VERTICAL_LINE: "|",
      /* | */
      CHAR_ZERO_WIDTH_NOBREAK_SPACE: "\uFEFF"
      /* \uFEFF */
    };
  }
});

// ../../node_modules/braces/lib/parse.js
var require_parse5 = __commonJS({
  "../../node_modules/braces/lib/parse.js"(exports2, module2) {
    "use strict";
    var stringify4 = require_stringify3();
    var {
      MAX_LENGTH,
      CHAR_BACKSLASH,
      /* \ */
      CHAR_BACKTICK,
      /* ` */
      CHAR_COMMA: CHAR_COMMA2,
      /* , */
      CHAR_DOT,
      /* . */
      CHAR_LEFT_PARENTHESES,
      /* ( */
      CHAR_RIGHT_PARENTHESES,
      /* ) */
      CHAR_LEFT_CURLY_BRACE,
      /* { */
      CHAR_RIGHT_CURLY_BRACE,
      /* } */
      CHAR_LEFT_SQUARE_BRACKET: CHAR_LEFT_SQUARE_BRACKET2,
      /* [ */
      CHAR_RIGHT_SQUARE_BRACKET: CHAR_RIGHT_SQUARE_BRACKET2,
      /* ] */
      CHAR_DOUBLE_QUOTE: CHAR_DOUBLE_QUOTE2,
      /* " */
      CHAR_SINGLE_QUOTE: CHAR_SINGLE_QUOTE2,
      /* ' */
      CHAR_NO_BREAK_SPACE,
      CHAR_ZERO_WIDTH_NOBREAK_SPACE
    } = require_constants4();
    var parse16 = (input3, options = {}) => {
      if (typeof input3 !== "string") {
        throw new TypeError("Expected a string");
      }
      const opts = options || {};
      const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
      if (input3.length > max) {
        throw new SyntaxError(`Input length (${input3.length}), exceeds max characters (${max})`);
      }
      const ast = { type: "root", input: input3, nodes: [] };
      const stack = [ast];
      let block5 = ast;
      let prev = ast;
      let brackets = 0;
      const length = input3.length;
      let index4 = 0;
      let depth = 0;
      let value;
      const advance = () => input3[index4++];
      const push = (node3) => {
        if (node3.type === "text" && prev.type === "dot") {
          prev.type = "text";
        }
        if (prev && prev.type === "text" && node3.type === "text") {
          prev.value += node3.value;
          return;
        }
        block5.nodes.push(node3);
        node3.parent = block5;
        node3.prev = prev;
        prev = node3;
        return node3;
      };
      push({ type: "bos" });
      while (index4 < length) {
        block5 = stack[stack.length - 1];
        value = advance();
        if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {
          continue;
        }
        if (value === CHAR_BACKSLASH) {
          push({ type: "text", value: (options.keepEscaping ? value : "") + advance() });
          continue;
        }
        if (value === CHAR_RIGHT_SQUARE_BRACKET2) {
          push({ type: "text", value: "\\" + value });
          continue;
        }
        if (value === CHAR_LEFT_SQUARE_BRACKET2) {
          brackets++;
          let next;
          while (index4 < length && (next = advance())) {
            value += next;
            if (next === CHAR_LEFT_SQUARE_BRACKET2) {
              brackets++;
              continue;
            }
            if (next === CHAR_BACKSLASH) {
              value += advance();
              continue;
            }
            if (next === CHAR_RIGHT_SQUARE_BRACKET2) {
              brackets--;
              if (brackets === 0) {
                break;
              }
            }
          }
          push({ type: "text", value });
          continue;
        }
        if (value === CHAR_LEFT_PARENTHESES) {
          block5 = push({ type: "paren", nodes: [] });
          stack.push(block5);
          push({ type: "text", value });
          continue;
        }
        if (value === CHAR_RIGHT_PARENTHESES) {
          if (block5.type !== "paren") {
            push({ type: "text", value });
            continue;
          }
          block5 = stack.pop();
          push({ type: "text", value });
          block5 = stack[stack.length - 1];
          continue;
        }
        if (value === CHAR_DOUBLE_QUOTE2 || value === CHAR_SINGLE_QUOTE2 || value === CHAR_BACKTICK) {
          const open2 = value;
          let next;
          if (options.keepQuotes !== true) {
            value = "";
          }
          while (index4 < length && (next = advance())) {
            if (next === CHAR_BACKSLASH) {
              value += next + advance();
              continue;
            }
            if (next === open2) {
              if (options.keepQuotes === true) value += next;
              break;
            }
            value += next;
          }
          push({ type: "text", value });
          continue;
        }
        if (value === CHAR_LEFT_CURLY_BRACE) {
          depth++;
          const dollar = prev.value && prev.value.slice(-1) === "$" || block5.dollar === true;
          const brace = {
            type: "brace",
            open: true,
            close: false,
            dollar,
            depth,
            commas: 0,
            ranges: 0,
            nodes: []
          };
          block5 = push(brace);
          stack.push(block5);
          push({ type: "open", value });
          continue;
        }
        if (value === CHAR_RIGHT_CURLY_BRACE) {
          if (block5.type !== "brace") {
            push({ type: "text", value });
            continue;
          }
          const type2 = "close";
          block5 = stack.pop();
          block5.close = true;
          push({ type: type2, value });
          depth--;
          block5 = stack[stack.length - 1];
          continue;
        }
        if (value === CHAR_COMMA2 && depth > 0) {
          if (block5.ranges > 0) {
            block5.ranges = 0;
            const open2 = block5.nodes.shift();
            block5.nodes = [open2, { type: "text", value: stringify4(block5) }];
          }
          push({ type: "comma", value });
          block5.commas++;
          continue;
        }
        if (value === CHAR_DOT && depth > 0 && block5.commas === 0) {
          const siblings2 = block5.nodes;
          if (depth === 0 || siblings2.length === 0) {
            push({ type: "text", value });
            continue;
          }
          if (prev.type === "dot") {
            block5.range = [];
            prev.value += value;
            prev.type = "range";
            if (block5.nodes.length !== 3 && block5.nodes.length !== 5) {
              block5.invalid = true;
              block5.ranges = 0;
              prev.type = "text";
              continue;
            }
            block5.ranges++;
            block5.args = [];
            continue;
          }
          if (prev.type === "range") {
            siblings2.pop();
            const before = siblings2[siblings2.length - 1];
            before.value += prev.value + value;
            prev = before;
            block5.ranges--;
            continue;
          }
          push({ type: "dot", value });
          continue;
        }
        push({ type: "text", value });
      }
      do {
        block5 = stack.pop();
        if (block5.type !== "root") {
          block5.nodes.forEach((node3) => {
            if (!node3.nodes) {
              if (node3.type === "open") node3.isOpen = true;
              if (node3.type === "close") node3.isClose = true;
              if (!node3.nodes) node3.type = "text";
              node3.invalid = true;
            }
          });
          const parent2 = stack[stack.length - 1];
          const index5 = parent2.nodes.indexOf(block5);
          parent2.nodes.splice(index5, 1, ...block5.nodes);
        }
      } while (stack.length > 0);
      push({ type: "eos" });
      return ast;
    };
    module2.exports = parse16;
  }
});

// ../../node_modules/braces/index.js
var require_braces = __commonJS({
  "../../node_modules/braces/index.js"(exports2, module2) {
    "use strict";
    var stringify4 = require_stringify3();
    var compile2 = require_compile();
    var expand2 = require_expand();
    var parse16 = require_parse5();
    var braces = (input3, options = {}) => {
      let output2 = [];
      if (Array.isArray(input3)) {
        for (const pattern of input3) {
          const result = braces.create(pattern, options);
          if (Array.isArray(result)) {
            output2.push(...result);
          } else {
            output2.push(result);
          }
        }
      } else {
        output2 = [].concat(braces.create(input3, options));
      }
      if (options && options.expand === true && options.nodupes === true) {
        output2 = [...new Set(output2)];
      }
      return output2;
    };
    braces.parse = (input3, options = {}) => parse16(input3, options);
    braces.stringify = (input3, options = {}) => {
      if (typeof input3 === "string") {
        return stringify4(braces.parse(input3, options), options);
      }
      return stringify4(input3, options);
    };
    braces.compile = (input3, options = {}) => {
      if (typeof input3 === "string") {
        input3 = braces.parse(input3, options);
      }
      return compile2(input3, options);
    };
    braces.expand = (input3, options = {}) => {
      if (typeof input3 === "string") {
        input3 = braces.parse(input3, options);
      }
      let result = expand2(input3, options);
      if (options.noempty === true) {
        result = result.filter(Boolean);
      }
      if (options.nodupes === true) {
        result = [...new Set(result)];
      }
      return result;
    };
    braces.create = (input3, options = {}) => {
      if (input3 === "" || input3.length < 3) {
        return [input3];
      }
      return options.expand !== true ? braces.compile(input3, options) : braces.expand(input3, options);
    };
    module2.exports = braces;
  }
});

// ../../node_modules/binary-extensions/binary-extensions.json
var require_binary_extensions = __commonJS({
  "../../node_modules/binary-extensions/binary-extensions.json"(exports2, module2) {
    module2.exports = [
      "3dm",
      "3ds",
      "3g2",
      "3gp",
      "7z",
      "a",
      "aac",
      "adp",
      "ai",
      "aif",
      "aiff",
      "alz",
      "ape",
      "apk",
      "appimage",
      "ar",
      "arj",
      "asf",
      "au",
      "avi",
      "bak",
      "baml",
      "bh",
      "bin",
      "bk",
      "bmp",
      "btif",
      "bz2",
      "bzip2",
      "cab",
      "caf",
      "cgm",
      "class",
      "cmx",
      "cpio",
      "cr2",
      "cur",
      "dat",
      "dcm",
      "deb",
      "dex",
      "djvu",
      "dll",
      "dmg",
      "dng",
      "doc",
      "docm",
      "docx",
      "dot",
      "dotm",
      "dra",
      "DS_Store",
      "dsk",
      "dts",
      "dtshd",
      "dvb",
      "dwg",
      "dxf",
      "ecelp4800",
      "ecelp7470",
      "ecelp9600",
      "egg",
      "eol",
      "eot",
      "epub",
      "exe",
      "f4v",
      "fbs",
      "fh",
      "fla",
      "flac",
      "flatpak",
      "fli",
      "flv",
      "fpx",
      "fst",
      "fvt",
      "g3",
      "gh",
      "gif",
      "graffle",
      "gz",
      "gzip",
      "h261",
      "h263",
      "h264",
      "icns",
      "ico",
      "ief",
      "img",
      "ipa",
      "iso",
      "jar",
      "jpeg",
      "jpg",
      "jpgv",
      "jpm",
      "jxr",
      "key",
      "ktx",
      "lha",
      "lib",
      "lvp",
      "lz",
      "lzh",
      "lzma",
      "lzo",
      "m3u",
      "m4a",
      "m4v",
      "mar",
      "mdi",
      "mht",
      "mid",
      "midi",
      "mj2",
      "mka",
      "mkv",
      "mmr",
      "mng",
      "mobi",
      "mov",
      "movie",
      "mp3",
      "mp4",
      "mp4a",
      "mpeg",
      "mpg",
      "mpga",
      "mxu",
      "nef",
      "npx",
      "numbers",
      "nupkg",
      "o",
      "odp",
      "ods",
      "odt",
      "oga",
      "ogg",
      "ogv",
      "otf",
      "ott",
      "pages",
      "pbm",
      "pcx",
      "pdb",
      "pdf",
      "pea",
      "pgm",
      "pic",
      "png",
      "pnm",
      "pot",
      "potm",
      "potx",
      "ppa",
      "ppam",
      "ppm",
      "pps",
      "ppsm",
      "ppsx",
      "ppt",
      "pptm",
      "pptx",
      "psd",
      "pya",
      "pyc",
      "pyo",
      "pyv",
      "qt",
      "rar",
      "ras",
      "raw",
      "resources",
      "rgb",
      "rip",
      "rlc",
      "rmf",
      "rmvb",
      "rpm",
      "rtf",
      "rz",
      "s3m",
      "s7z",
      "scpt",
      "sgi",
      "shar",
      "snap",
      "sil",
      "sketch",
      "slk",
      "smv",
      "snk",
      "so",
      "stl",
      "suo",
      "sub",
      "swf",
      "tar",
      "tbz",
      "tbz2",
      "tga",
      "tgz",
      "thmx",
      "tif",
      "tiff",
      "tlz",
      "ttc",
      "ttf",
      "txz",
      "udf",
      "uvh",
      "uvi",
      "uvm",
      "uvp",
      "uvs",
      "uvu",
      "viv",
      "vob",
      "war",
      "wav",
      "wax",
      "wbmp",
      "wdp",
      "weba",
      "webm",
      "webp",
      "whl",
      "wim",
      "wm",
      "wma",
      "wmv",
      "wmx",
      "woff",
      "woff2",
      "wrm",
      "wvx",
      "xbm",
      "xif",
      "xla",
      "xlam",
      "xls",
      "xlsb",
      "xlsm",
      "xlsx",
      "xlt",
      "xltm",
      "xltx",
      "xm",
      "xmind",
      "xpi",
      "xpm",
      "xwd",
      "xz",
      "z",
      "zip",
      "zipx"
    ];
  }
});

// ../../node_modules/binary-extensions/index.js
var require_binary_extensions2 = __commonJS({
  "../../node_modules/binary-extensions/index.js"(exports2, module2) {
    module2.exports = require_binary_extensions();
  }
});

// ../../node_modules/is-binary-path/index.js
var require_is_binary_path = __commonJS({
  "../../node_modules/is-binary-path/index.js"(exports2, module2) {
    "use strict";
    var path45 = require("path");
    var binaryExtensions = require_binary_extensions2();
    var extensions = new Set(binaryExtensions);
    module2.exports = (filePath) => extensions.has(path45.extname(filePath).slice(1).toLowerCase());
  }
});

// ../../node_modules/chokidar/lib/constants.js
var require_constants5 = __commonJS({
  "../../node_modules/chokidar/lib/constants.js"(exports2) {
    "use strict";
    var { sep: sep5 } = require("path");
    var { platform } = process;
    var os10 = require("os");
    exports2.EV_ALL = "all";
    exports2.EV_READY = "ready";
    exports2.EV_ADD = "add";
    exports2.EV_CHANGE = "change";
    exports2.EV_ADD_DIR = "addDir";
    exports2.EV_UNLINK = "unlink";
    exports2.EV_UNLINK_DIR = "unlinkDir";
    exports2.EV_RAW = "raw";
    exports2.EV_ERROR = "error";
    exports2.STR_DATA = "data";
    exports2.STR_END = "end";
    exports2.STR_CLOSE = "close";
    exports2.FSEVENT_CREATED = "created";
    exports2.FSEVENT_MODIFIED = "modified";
    exports2.FSEVENT_DELETED = "deleted";
    exports2.FSEVENT_MOVED = "moved";
    exports2.FSEVENT_CLONED = "cloned";
    exports2.FSEVENT_UNKNOWN = "unknown";
    exports2.FSEVENT_TYPE_FILE = "file";
    exports2.FSEVENT_TYPE_DIRECTORY = "directory";
    exports2.FSEVENT_TYPE_SYMLINK = "symlink";
    exports2.KEY_LISTENERS = "listeners";
    exports2.KEY_ERR = "errHandlers";
    exports2.KEY_RAW = "rawEmitters";
    exports2.HANDLER_KEYS = [exports2.KEY_LISTENERS, exports2.KEY_ERR, exports2.KEY_RAW];
    exports2.DOT_SLASH = `.${sep5}`;
    exports2.BACK_SLASH_RE = /\\/g;
    exports2.DOUBLE_SLASH_RE = /\/\//;
    exports2.SLASH_OR_BACK_SLASH_RE = /[/\\]/;
    exports2.DOT_RE = /\..*\.(sw[px])$|~$|\.subl.*\.tmp/;
    exports2.REPLACER_RE = /^\.[/\\]/;
    exports2.SLASH = "/";
    exports2.SLASH_SLASH = "//";
    exports2.BRACE_START = "{";
    exports2.BANG = "!";
    exports2.ONE_DOT = ".";
    exports2.TWO_DOTS = "..";
    exports2.STAR = "*";
    exports2.GLOBSTAR = "**";
    exports2.ROOT_GLOBSTAR = "/**/*";
    exports2.SLASH_GLOBSTAR = "/**";
    exports2.DIR_SUFFIX = "Dir";
    exports2.ANYMATCH_OPTS = { dot: true };
    exports2.STRING_TYPE = "string";
    exports2.FUNCTION_TYPE = "function";
    exports2.EMPTY_STR = "";
    exports2.EMPTY_FN = () => {
    };
    exports2.IDENTITY_FN = (val) => val;
    exports2.isWindows = platform === "win32";
    exports2.isMacos = platform === "darwin";
    exports2.isLinux = platform === "linux";
    exports2.isIBMi = os10.type() === "OS400";
  }
});

// ../../node_modules/chokidar/lib/nodefs-handler.js
var require_nodefs_handler = __commonJS({
  "../../node_modules/chokidar/lib/nodefs-handler.js"(exports2, module2) {
    "use strict";
    var fs50 = require("fs");
    var sysPath = require("path");
    var { promisify: promisify5 } = require("util");
    var isBinaryPath = require_is_binary_path();
    var {
      isWindows,
      isLinux,
      EMPTY_FN,
      EMPTY_STR,
      KEY_LISTENERS,
      KEY_ERR,
      KEY_RAW,
      HANDLER_KEYS,
      EV_CHANGE,
      EV_ADD,
      EV_ADD_DIR,
      EV_ERROR,
      STR_DATA,
      STR_END,
      BRACE_START,
      STAR
    } = require_constants5();
    var THROTTLE_MODE_WATCH = "watch";
    var open2 = promisify5(fs50.open);
    var stat2 = promisify5(fs50.stat);
    var lstat2 = promisify5(fs50.lstat);
    var close2 = promisify5(fs50.close);
    var fsrealpath = promisify5(fs50.realpath);
    var statMethods = { lstat: lstat2, stat: stat2 };
    var foreach = (val, fn) => {
      if (val instanceof Set) {
        val.forEach(fn);
      } else {
        fn(val);
      }
    };
    var addAndConvert = (main2, prop, item) => {
      let container4 = main2[prop];
      if (!(container4 instanceof Set)) {
        main2[prop] = container4 = /* @__PURE__ */ new Set([container4]);
      }
      container4.add(item);
    };
    var clearItem = (cont) => (key2) => {
      const set3 = cont[key2];
      if (set3 instanceof Set) {
        set3.clear();
      } else {
        delete cont[key2];
      }
    };
    var delFromSet = (main2, prop, item) => {
      const container4 = main2[prop];
      if (container4 instanceof Set) {
        container4.delete(item);
      } else if (container4 === item) {
        delete main2[prop];
      }
    };
    var isEmptySet = (val) => val instanceof Set ? val.size === 0 : !val;
    var FsWatchInstances = /* @__PURE__ */ new Map();
    function createFsWatchInstance(path45, options, listener2, errHandler, emitRaw) {
      const handleEvent = (rawEvent, evPath) => {
        listener2(path45);
        emitRaw(rawEvent, evPath, { watchedPath: path45 });
        if (evPath && path45 !== evPath) {
          fsWatchBroadcast(
            sysPath.resolve(path45, evPath),
            KEY_LISTENERS,
            sysPath.join(path45, evPath)
          );
        }
      };
      try {
        return fs50.watch(path45, options, handleEvent);
      } catch (error) {
        errHandler(error);
      }
    }
    var fsWatchBroadcast = (fullPath2, type2, val1, val2, val3) => {
      const cont = FsWatchInstances.get(fullPath2);
      if (!cont) return;
      foreach(cont[type2], (listener2) => {
        listener2(val1, val2, val3);
      });
    };
    var setFsWatchListener = (path45, fullPath2, options, handlers6) => {
      const { listener: listener2, errHandler, rawEmitter } = handlers6;
      let cont = FsWatchInstances.get(fullPath2);
      let watcher;
      if (!options.persistent) {
        watcher = createFsWatchInstance(
          path45,
          options,
          listener2,
          errHandler,
          rawEmitter
        );
        return watcher.close.bind(watcher);
      }
      if (cont) {
        addAndConvert(cont, KEY_LISTENERS, listener2);
        addAndConvert(cont, KEY_ERR, errHandler);
        addAndConvert(cont, KEY_RAW, rawEmitter);
      } else {
        watcher = createFsWatchInstance(
          path45,
          options,
          fsWatchBroadcast.bind(null, fullPath2, KEY_LISTENERS),
          errHandler,
          // no need to use broadcast here
          fsWatchBroadcast.bind(null, fullPath2, KEY_RAW)
        );
        if (!watcher) return;
        watcher.on(EV_ERROR, async (error) => {
          const broadcastErr = fsWatchBroadcast.bind(null, fullPath2, KEY_ERR);
          cont.watcherUnusable = true;
          if (isWindows && error.code === "EPERM") {
            try {
              const fd = await open2(path45, "r");
              await close2(fd);
              broadcastErr(error);
            } catch (err) {
            }
          } else {
            broadcastErr(error);
          }
        });
        cont = {
          listeners: listener2,
          errHandlers: errHandler,
          rawEmitters: rawEmitter,
          watcher
        };
        FsWatchInstances.set(fullPath2, cont);
      }
      return () => {
        delFromSet(cont, KEY_LISTENERS, listener2);
        delFromSet(cont, KEY_ERR, errHandler);
        delFromSet(cont, KEY_RAW, rawEmitter);
        if (isEmptySet(cont.listeners)) {
          cont.watcher.close();
          FsWatchInstances.delete(fullPath2);
          HANDLER_KEYS.forEach(clearItem(cont));
          cont.watcher = void 0;
          Object.freeze(cont);
        }
      };
    };
    var FsWatchFileInstances = /* @__PURE__ */ new Map();
    var setFsWatchFileListener = (path45, fullPath2, options, handlers6) => {
      const { listener: listener2, rawEmitter } = handlers6;
      let cont = FsWatchFileInstances.get(fullPath2);
      let listeners = /* @__PURE__ */ new Set();
      let rawEmitters = /* @__PURE__ */ new Set();
      const copts = cont && cont.options;
      if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) {
        listeners = cont.listeners;
        rawEmitters = cont.rawEmitters;
        fs50.unwatchFile(fullPath2);
        cont = void 0;
      }
      if (cont) {
        addAndConvert(cont, KEY_LISTENERS, listener2);
        addAndConvert(cont, KEY_RAW, rawEmitter);
      } else {
        cont = {
          listeners: listener2,
          rawEmitters: rawEmitter,
          options,
          watcher: fs50.watchFile(fullPath2, options, (curr, prev) => {
            foreach(cont.rawEmitters, (rawEmitter2) => {
              rawEmitter2(EV_CHANGE, fullPath2, { curr, prev });
            });
            const currmtime = curr.mtimeMs;
            if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) {
              foreach(cont.listeners, (listener3) => listener3(path45, curr));
            }
          })
        };
        FsWatchFileInstances.set(fullPath2, cont);
      }
      return () => {
        delFromSet(cont, KEY_LISTENERS, listener2);
        delFromSet(cont, KEY_RAW, rawEmitter);
        if (isEmptySet(cont.listeners)) {
          FsWatchFileInstances.delete(fullPath2);
          fs50.unwatchFile(fullPath2);
          cont.options = cont.watcher = void 0;
          Object.freeze(cont);
        }
      };
    };
    var NodeFsHandler = class {
      /**
       * @param {import("../index").FSWatcher} fsW
       */
      constructor(fsW) {
        this.fsw = fsW;
        this._boundHandleError = (error) => fsW._handleError(error);
      }
      /**
       * Watch file for changes with fs_watchFile or fs_watch.
       * @param {String} path to file or dir
       * @param {Function} listener on fs change
       * @returns {Function} closer for the watcher instance
       */
      _watchWithNodeFs(path45, listener2) {
        const opts = this.fsw.options;
        const directory = sysPath.dirname(path45);
        const basename4 = sysPath.basename(path45);
        const parent2 = this.fsw._getWatchedDir(directory);
        parent2.add(basename4);
        const absolutePath = sysPath.resolve(path45);
        const options = { persistent: opts.persistent };
        if (!listener2) listener2 = EMPTY_FN;
        let closer;
        if (opts.usePolling) {
          options.interval = opts.enableBinaryInterval && isBinaryPath(basename4) ? opts.binaryInterval : opts.interval;
          closer = setFsWatchFileListener(path45, absolutePath, options, {
            listener: listener2,
            rawEmitter: this.fsw._emitRaw
          });
        } else {
          closer = setFsWatchListener(path45, absolutePath, options, {
            listener: listener2,
            errHandler: this._boundHandleError,
            rawEmitter: this.fsw._emitRaw
          });
        }
        return closer;
      }
      /**
       * Watch a file and emit add event if warranted.
       * @param {Path} file Path
       * @param {fs.Stats} stats result of fs_stat
       * @param {Boolean} initialAdd was the file added at watch instantiation?
       * @returns {Function} closer for the watcher instance
       */
      _handleFile(file, stats, initialAdd) {
        if (this.fsw.closed) {
          return;
        }
        const dirname8 = sysPath.dirname(file);
        const basename4 = sysPath.basename(file);
        const parent2 = this.fsw._getWatchedDir(dirname8);
        let prevStats = stats;
        if (parent2.has(basename4)) return;
        const listener2 = async (path45, newStats) => {
          if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5)) return;
          if (!newStats || newStats.mtimeMs === 0) {
            try {
              const newStats2 = await stat2(file);
              if (this.fsw.closed) return;
              const at = newStats2.atimeMs;
              const mt = newStats2.mtimeMs;
              if (!at || at <= mt || mt !== prevStats.mtimeMs) {
                this.fsw._emit(EV_CHANGE, file, newStats2);
              }
              if (isLinux && prevStats.ino !== newStats2.ino) {
                this.fsw._closeFile(path45);
                prevStats = newStats2;
                this.fsw._addPathCloser(path45, this._watchWithNodeFs(file, listener2));
              } else {
                prevStats = newStats2;
              }
            } catch (error) {
              this.fsw._remove(dirname8, basename4);
            }
          } else if (parent2.has(basename4)) {
            const at = newStats.atimeMs;
            const mt = newStats.mtimeMs;
            if (!at || at <= mt || mt !== prevStats.mtimeMs) {
              this.fsw._emit(EV_CHANGE, file, newStats);
            }
            prevStats = newStats;
          }
        };
        const closer = this._watchWithNodeFs(file, listener2);
        if (!(initialAdd && this.fsw.options.ignoreInitial) && this.fsw._isntIgnored(file)) {
          if (!this.fsw._throttle(EV_ADD, file, 0)) return;
          this.fsw._emit(EV_ADD, file, stats);
        }
        return closer;
      }
      /**
       * Handle symlinks encountered while reading a dir.
       * @param {Object} entry returned by readdirp
       * @param {String} directory path of dir being read
       * @param {String} path of this item
       * @param {String} item basename of this item
       * @returns {Promise<Boolean>} true if no more processing is needed for this entry.
       */
      async _handleSymlink(entry, directory, path45, item) {
        if (this.fsw.closed) {
          return;
        }
        const full = entry.fullPath;
        const dir = this.fsw._getWatchedDir(directory);
        if (!this.fsw.options.followSymlinks) {
          this.fsw._incrReadyCount();
          let linkPath;
          try {
            linkPath = await fsrealpath(path45);
          } catch (e2) {
            this.fsw._emitReady();
            return true;
          }
          if (this.fsw.closed) return;
          if (dir.has(item)) {
            if (this.fsw._symlinkPaths.get(full) !== linkPath) {
              this.fsw._symlinkPaths.set(full, linkPath);
              this.fsw._emit(EV_CHANGE, path45, entry.stats);
            }
          } else {
            dir.add(item);
            this.fsw._symlinkPaths.set(full, linkPath);
            this.fsw._emit(EV_ADD, path45, entry.stats);
          }
          this.fsw._emitReady();
          return true;
        }
        if (this.fsw._symlinkPaths.has(full)) {
          return true;
        }
        this.fsw._symlinkPaths.set(full, true);
      }
      _handleRead(directory, initialAdd, wh, target, dir, depth, throttler) {
        directory = sysPath.join(directory, EMPTY_STR);
        if (!wh.hasGlob) {
          throttler = this.fsw._throttle("readdir", directory, 1e3);
          if (!throttler) return;
        }
        const previous = this.fsw._getWatchedDir(wh.path);
        const current2 = /* @__PURE__ */ new Set();
        let stream3 = this.fsw._readdirp(directory, {
          fileFilter: (entry) => wh.filterPath(entry),
          directoryFilter: (entry) => wh.filterDir(entry),
          depth: 0
        }).on(STR_DATA, async (entry) => {
          if (this.fsw.closed) {
            stream3 = void 0;
            return;
          }
          const item = entry.path;
          let path45 = sysPath.join(directory, item);
          current2.add(item);
          if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path45, item)) {
            return;
          }
          if (this.fsw.closed) {
            stream3 = void 0;
            return;
          }
          if (item === target || !target && !previous.has(item)) {
            this.fsw._incrReadyCount();
            path45 = sysPath.join(dir, sysPath.relative(dir, path45));
            this._addToNodeFs(path45, initialAdd, wh, depth + 1);
          }
        }).on(EV_ERROR, this._boundHandleError);
        return new Promise(
          (resolve9) => stream3.once(STR_END, () => {
            if (this.fsw.closed) {
              stream3 = void 0;
              return;
            }
            const wasThrottled = throttler ? throttler.clear() : false;
            resolve9();
            previous.getChildren().filter((item) => {
              return item !== directory && !current2.has(item) && // in case of intersecting globs;
              // a path may have been filtered out of this readdir, but
              // shouldn't be removed because it matches a different glob
              (!wh.hasGlob || wh.filterPath({
                fullPath: sysPath.resolve(directory, item)
              }));
            }).forEach((item) => {
              this.fsw._remove(directory, item);
            });
            stream3 = void 0;
            if (wasThrottled) this._handleRead(directory, false, wh, target, dir, depth, throttler);
          })
        );
      }
      /**
       * Read directory to add / remove files from `@watched` list and re-read it on change.
       * @param {String} dir fs path
       * @param {fs.Stats} stats
       * @param {Boolean} initialAdd
       * @param {Number} depth relative to user-supplied path
       * @param {String} target child path targeted for watch
       * @param {Object} wh Common watch helpers for this path
       * @param {String} realpath
       * @returns {Promise<Function>} closer for the watcher instance.
       */
      async _handleDir(dir, stats, initialAdd, depth, target, wh, realpath2) {
        const parentDir = this.fsw._getWatchedDir(sysPath.dirname(dir));
        const tracked = parentDir.has(sysPath.basename(dir));
        if (!(initialAdd && this.fsw.options.ignoreInitial) && !target && !tracked) {
          if (!wh.hasGlob || wh.globFilter(dir)) this.fsw._emit(EV_ADD_DIR, dir, stats);
        }
        parentDir.add(sysPath.basename(dir));
        this.fsw._getWatchedDir(dir);
        let throttler;
        let closer;
        const oDepth = this.fsw.options.depth;
        if ((oDepth == null || depth <= oDepth) && !this.fsw._symlinkPaths.has(realpath2)) {
          if (!target) {
            await this._handleRead(dir, initialAdd, wh, target, dir, depth, throttler);
            if (this.fsw.closed) return;
          }
          closer = this._watchWithNodeFs(dir, (dirPath, stats2) => {
            if (stats2 && stats2.mtimeMs === 0) return;
            this._handleRead(dirPath, false, wh, target, dir, depth, throttler);
          });
        }
        return closer;
      }
      /**
       * Handle added file, directory, or glob pattern.
       * Delegates call to _handleFile / _handleDir after checks.
       * @param {String} path to file or ir
       * @param {Boolean} initialAdd was the file added at watch instantiation?
       * @param {Object} priorWh depth relative to user-supplied path
       * @param {Number} depth Child path actually targeted for watch
       * @param {String=} target Child path actually targeted for watch
       * @returns {Promise}
       */
      async _addToNodeFs(path45, initialAdd, priorWh, depth, target) {
        const ready = this.fsw._emitReady;
        if (this.fsw._isIgnored(path45) || this.fsw.closed) {
          ready();
          return false;
        }
        const wh = this.fsw._getWatchHelpers(path45, depth);
        if (!wh.hasGlob && priorWh) {
          wh.hasGlob = priorWh.hasGlob;
          wh.globFilter = priorWh.globFilter;
          wh.filterPath = (entry) => priorWh.filterPath(entry);
          wh.filterDir = (entry) => priorWh.filterDir(entry);
        }
        try {
          const stats = await statMethods[wh.statMethod](wh.watchPath);
          if (this.fsw.closed) return;
          if (this.fsw._isIgnored(wh.watchPath, stats)) {
            ready();
            return false;
          }
          const follow = this.fsw.options.followSymlinks && !path45.includes(STAR) && !path45.includes(BRACE_START);
          let closer;
          if (stats.isDirectory()) {
            const absPath = sysPath.resolve(path45);
            const targetPath = follow ? await fsrealpath(path45) : path45;
            if (this.fsw.closed) return;
            closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath);
            if (this.fsw.closed) return;
            if (absPath !== targetPath && targetPath !== void 0) {
              this.fsw._symlinkPaths.set(absPath, targetPath);
            }
          } else if (stats.isSymbolicLink()) {
            const targetPath = follow ? await fsrealpath(path45) : path45;
            if (this.fsw.closed) return;
            const parent2 = sysPath.dirname(wh.watchPath);
            this.fsw._getWatchedDir(parent2).add(wh.watchPath);
            this.fsw._emit(EV_ADD, wh.watchPath, stats);
            closer = await this._handleDir(parent2, stats, initialAdd, depth, path45, wh, targetPath);
            if (this.fsw.closed) return;
            if (targetPath !== void 0) {
              this.fsw._symlinkPaths.set(sysPath.resolve(path45), targetPath);
            }
          } else {
            closer = this._handleFile(wh.watchPath, stats, initialAdd);
          }
          ready();
          this.fsw._addPathCloser(path45, closer);
          return false;
        } catch (error) {
          if (this.fsw._handleError(error)) {
            ready();
            return path45;
          }
        }
      }
    };
    module2.exports = NodeFsHandler;
  }
});

// ../../node_modules/chokidar/lib/fsevents-handler.js
var require_fsevents_handler = __commonJS({
  "../../node_modules/chokidar/lib/fsevents-handler.js"(exports2, module2) {
    "use strict";
    var fs50 = require("fs");
    var sysPath = require("path");
    var { promisify: promisify5 } = require("util");
    var fsevents;
    try {
      fsevents = require("fsevents");
    } catch (error) {
      if (process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR) console.error(error);
    }
    if (fsevents) {
      const mtch = process.version.match(/v(\d+)\.(\d+)/);
      if (mtch && mtch[1] && mtch[2]) {
        const maj = Number.parseInt(mtch[1], 10);
        const min = Number.parseInt(mtch[2], 10);
        if (maj === 8 && min < 16) {
          fsevents = void 0;
        }
      }
    }
    var {
      EV_ADD,
      EV_CHANGE,
      EV_ADD_DIR,
      EV_UNLINK,
      EV_ERROR,
      STR_DATA,
      STR_END,
      FSEVENT_CREATED,
      FSEVENT_MODIFIED,
      FSEVENT_DELETED,
      FSEVENT_MOVED,
      // FSEVENT_CLONED,
      FSEVENT_UNKNOWN,
      FSEVENT_TYPE_FILE,
      FSEVENT_TYPE_DIRECTORY,
      FSEVENT_TYPE_SYMLINK,
      ROOT_GLOBSTAR,
      DIR_SUFFIX,
      DOT_SLASH,
      FUNCTION_TYPE,
      EMPTY_FN,
      IDENTITY_FN
    } = require_constants5();
    var Depth = (value) => isNaN(value) ? {} : { depth: value };
    var stat2 = promisify5(fs50.stat);
    var lstat2 = promisify5(fs50.lstat);
    var realpath2 = promisify5(fs50.realpath);
    var statMethods = { stat: stat2, lstat: lstat2 };
    var FSEventsWatchers = /* @__PURE__ */ new Map();
    var consolidateThreshhold = 10;
    var wrongEventFlags = /* @__PURE__ */ new Set([
      69888,
      70400,
      71424,
      72704,
      73472,
      131328,
      131840,
      262912
    ]);
    var createFSEventsInstance = (path45, callback) => {
      const stop = fsevents.watch(path45, callback);
      return { stop };
    };
    function setFSEventsListener(path45, realPath, listener2, rawEmitter) {
      let watchPath = sysPath.extname(realPath) ? sysPath.dirname(realPath) : realPath;
      const parentPath = sysPath.dirname(watchPath);
      let cont = FSEventsWatchers.get(watchPath);
      if (couldConsolidate(parentPath)) {
        watchPath = parentPath;
      }
      const resolvedPath = sysPath.resolve(path45);
      const hasSymlink = resolvedPath !== realPath;
      const filteredListener = (fullPath2, flags, info) => {
        if (hasSymlink) fullPath2 = fullPath2.replace(realPath, resolvedPath);
        if (fullPath2 === resolvedPath || !fullPath2.indexOf(resolvedPath + sysPath.sep)) listener2(fullPath2, flags, info);
      };
      let watchedParent = false;
      for (const watchedPath of FSEventsWatchers.keys()) {
        if (realPath.indexOf(sysPath.resolve(watchedPath) + sysPath.sep) === 0) {
          watchPath = watchedPath;
          cont = FSEventsWatchers.get(watchPath);
          watchedParent = true;
          break;
        }
      }
      if (cont || watchedParent) {
        cont.listeners.add(filteredListener);
      } else {
        cont = {
          listeners: /* @__PURE__ */ new Set([filteredListener]),
          rawEmitter,
          watcher: createFSEventsInstance(watchPath, (fullPath2, flags) => {
            if (!cont.listeners.size) return;
            const info = fsevents.getInfo(fullPath2, flags);
            cont.listeners.forEach((list6) => {
              list6(fullPath2, flags, info);
            });
            cont.rawEmitter(info.event, fullPath2, info);
          })
        };
        FSEventsWatchers.set(watchPath, cont);
      }
      return () => {
        const lst = cont.listeners;
        lst.delete(filteredListener);
        if (!lst.size) {
          FSEventsWatchers.delete(watchPath);
          if (cont.watcher) return cont.watcher.stop().then(() => {
            cont.rawEmitter = cont.watcher = void 0;
            Object.freeze(cont);
          });
        }
      };
    }
    var couldConsolidate = (path45) => {
      let count2 = 0;
      for (const watchPath of FSEventsWatchers.keys()) {
        if (watchPath.indexOf(path45) === 0) {
          count2++;
          if (count2 >= consolidateThreshhold) {
            return true;
          }
        }
      }
      return false;
    };
    var canUse = () => fsevents && FSEventsWatchers.size < 128;
    var calcDepth = (path45, root6) => {
      let i2 = 0;
      while (!path45.indexOf(root6) && (path45 = sysPath.dirname(path45)) !== root6) i2++;
      return i2;
    };
    var sameTypes = (info, stats) => info.type === FSEVENT_TYPE_DIRECTORY && stats.isDirectory() || info.type === FSEVENT_TYPE_SYMLINK && stats.isSymbolicLink() || info.type === FSEVENT_TYPE_FILE && stats.isFile();
    var FsEventsHandler = class {
      /**
       * @param {import('../index').FSWatcher} fsw
       */
      constructor(fsw) {
        this.fsw = fsw;
      }
      checkIgnored(path45, stats) {
        const ipaths = this.fsw._ignoredPaths;
        if (this.fsw._isIgnored(path45, stats)) {
          ipaths.add(path45);
          if (stats && stats.isDirectory()) {
            ipaths.add(path45 + ROOT_GLOBSTAR);
          }
          return true;
        }
        ipaths.delete(path45);
        ipaths.delete(path45 + ROOT_GLOBSTAR);
      }
      addOrChange(path45, fullPath2, realPath, parent2, watchedDir, item, info, opts) {
        const event = watchedDir.has(item) ? EV_CHANGE : EV_ADD;
        this.handleEvent(event, path45, fullPath2, realPath, parent2, watchedDir, item, info, opts);
      }
      async checkExists(path45, fullPath2, realPath, parent2, watchedDir, item, info, opts) {
        try {
          const stats = await stat2(path45);
          if (this.fsw.closed) return;
          if (sameTypes(info, stats)) {
            this.addOrChange(path45, fullPath2, realPath, parent2, watchedDir, item, info, opts);
          } else {
            this.handleEvent(EV_UNLINK, path45, fullPath2, realPath, parent2, watchedDir, item, info, opts);
          }
        } catch (error) {
          if (error.code === "EACCES") {
            this.addOrChange(path45, fullPath2, realPath, parent2, watchedDir, item, info, opts);
          } else {
            this.handleEvent(EV_UNLINK, path45, fullPath2, realPath, parent2, watchedDir, item, info, opts);
          }
        }
      }
      handleEvent(event, path45, fullPath2, realPath, parent2, watchedDir, item, info, opts) {
        if (this.fsw.closed || this.checkIgnored(path45)) return;
        if (event === EV_UNLINK) {
          const isDirectory2 = info.type === FSEVENT_TYPE_DIRECTORY;
          if (isDirectory2 || watchedDir.has(item)) {
            this.fsw._remove(parent2, item, isDirectory2);
          }
        } else {
          if (event === EV_ADD) {
            if (info.type === FSEVENT_TYPE_DIRECTORY) this.fsw._getWatchedDir(path45);
            if (info.type === FSEVENT_TYPE_SYMLINK && opts.followSymlinks) {
              const curDepth = opts.depth === void 0 ? void 0 : calcDepth(fullPath2, realPath) + 1;
              return this._addToFsEvents(path45, false, true, curDepth);
            }
            this.fsw._getWatchedDir(parent2).add(item);
          }
          const eventName = info.type === FSEVENT_TYPE_DIRECTORY ? event + DIR_SUFFIX : event;
          this.fsw._emit(eventName, path45);
          if (eventName === EV_ADD_DIR) this._addToFsEvents(path45, false, true);
        }
      }
      /**
       * Handle symlinks encountered during directory scan
       * @param {String} watchPath  - file/dir path to be watched with fsevents
       * @param {String} realPath   - real path (in case of symlinks)
       * @param {Function} transform  - path transformer
       * @param {Function} globFilter - path filter in case a glob pattern was provided
       * @returns {Function} closer for the watcher instance
      */
      _watchWithFsEvents(watchPath, realPath, transform3, globFilter) {
        if (this.fsw.closed || this.fsw._isIgnored(watchPath)) return;
        const opts = this.fsw.options;
        const watchCallback = async (fullPath2, flags, info) => {
          if (this.fsw.closed) return;
          if (opts.depth !== void 0 && calcDepth(fullPath2, realPath) > opts.depth) return;
          const path45 = transform3(sysPath.join(
            watchPath,
            sysPath.relative(watchPath, fullPath2)
          ));
          if (globFilter && !globFilter(path45)) return;
          const parent2 = sysPath.dirname(path45);
          const item = sysPath.basename(path45);
          const watchedDir = this.fsw._getWatchedDir(
            info.type === FSEVENT_TYPE_DIRECTORY ? path45 : parent2
          );
          if (wrongEventFlags.has(flags) || info.event === FSEVENT_UNKNOWN) {
            if (typeof opts.ignored === FUNCTION_TYPE) {
              let stats;
              try {
                stats = await stat2(path45);
              } catch (error) {
              }
              if (this.fsw.closed) return;
              if (this.checkIgnored(path45, stats)) return;
              if (sameTypes(info, stats)) {
                this.addOrChange(path45, fullPath2, realPath, parent2, watchedDir, item, info, opts);
              } else {
                this.handleEvent(EV_UNLINK, path45, fullPath2, realPath, parent2, watchedDir, item, info, opts);
              }
            } else {
              this.checkExists(path45, fullPath2, realPath, parent2, watchedDir, item, info, opts);
            }
          } else {
            switch (info.event) {
              case FSEVENT_CREATED:
              case FSEVENT_MODIFIED:
                return this.addOrChange(path45, fullPath2, realPath, parent2, watchedDir, item, info, opts);
              case FSEVENT_DELETED:
              case FSEVENT_MOVED:
                return this.checkExists(path45, fullPath2, realPath, parent2, watchedDir, item, info, opts);
            }
          }
        };
        const closer = setFSEventsListener(
          watchPath,
          realPath,
          watchCallback,
          this.fsw._emitRaw
        );
        this.fsw._emitReady();
        return closer;
      }
      /**
       * Handle symlinks encountered during directory scan
       * @param {String} linkPath path to symlink
       * @param {String} fullPath absolute path to the symlink
       * @param {Function} transform pre-existing path transformer
       * @param {Number} curDepth level of subdirectories traversed to where symlink is
       * @returns {Promise<void>}
       */
      async _handleFsEventsSymlink(linkPath, fullPath2, transform3, curDepth) {
        if (this.fsw.closed || this.fsw._symlinkPaths.has(fullPath2)) return;
        this.fsw._symlinkPaths.set(fullPath2, true);
        this.fsw._incrReadyCount();
        try {
          const linkTarget = await realpath2(linkPath);
          if (this.fsw.closed) return;
          if (this.fsw._isIgnored(linkTarget)) {
            return this.fsw._emitReady();
          }
          this.fsw._incrReadyCount();
          this._addToFsEvents(linkTarget || linkPath, (path45) => {
            let aliasedPath = linkPath;
            if (linkTarget && linkTarget !== DOT_SLASH) {
              aliasedPath = path45.replace(linkTarget, linkPath);
            } else if (path45 !== DOT_SLASH) {
              aliasedPath = sysPath.join(linkPath, path45);
            }
            return transform3(aliasedPath);
          }, false, curDepth);
        } catch (error) {
          if (this.fsw._handleError(error)) {
            return this.fsw._emitReady();
          }
        }
      }
      /**
       *
       * @param {Path} newPath
       * @param {fs.Stats} stats
       */
      emitAdd(newPath, stats, processPath, opts, forceAdd) {
        const pp = processPath(newPath);
        const isDir = stats.isDirectory();
        const dirObj = this.fsw._getWatchedDir(sysPath.dirname(pp));
        const base5 = sysPath.basename(pp);
        if (isDir) this.fsw._getWatchedDir(pp);
        if (dirObj.has(base5)) return;
        dirObj.add(base5);
        if (!opts.ignoreInitial || forceAdd === true) {
          this.fsw._emit(isDir ? EV_ADD_DIR : EV_ADD, pp, stats);
        }
      }
      initWatch(realPath, path45, wh, processPath) {
        if (this.fsw.closed) return;
        const closer = this._watchWithFsEvents(
          wh.watchPath,
          sysPath.resolve(realPath || wh.watchPath),
          processPath,
          wh.globFilter
        );
        this.fsw._addPathCloser(path45, closer);
      }
      /**
       * Handle added path with fsevents
       * @param {String} path file/dir path or glob pattern
       * @param {Function|Boolean=} transform converts working path to what the user expects
       * @param {Boolean=} forceAdd ensure add is emitted
       * @param {Number=} priorDepth Level of subdirectories already traversed.
       * @returns {Promise<void>}
       */
      async _addToFsEvents(path45, transform3, forceAdd, priorDepth) {
        if (this.fsw.closed) {
          return;
        }
        const opts = this.fsw.options;
        const processPath = typeof transform3 === FUNCTION_TYPE ? transform3 : IDENTITY_FN;
        const wh = this.fsw._getWatchHelpers(path45);
        try {
          const stats = await statMethods[wh.statMethod](wh.watchPath);
          if (this.fsw.closed) return;
          if (this.fsw._isIgnored(wh.watchPath, stats)) {
            throw null;
          }
          if (stats.isDirectory()) {
            if (!wh.globFilter) this.emitAdd(processPath(path45), stats, processPath, opts, forceAdd);
            if (priorDepth && priorDepth > opts.depth) return;
            this.fsw._readdirp(wh.watchPath, {
              fileFilter: (entry) => wh.filterPath(entry),
              directoryFilter: (entry) => wh.filterDir(entry),
              ...Depth(opts.depth - (priorDepth || 0))
            }).on(STR_DATA, (entry) => {
              if (this.fsw.closed) {
                return;
              }
              if (entry.stats.isDirectory() && !wh.filterPath(entry)) return;
              const joinedPath = sysPath.join(wh.watchPath, entry.path);
              const { fullPath: fullPath2 } = entry;
              if (wh.followSymlinks && entry.stats.isSymbolicLink()) {
                const curDepth = opts.depth === void 0 ? void 0 : calcDepth(joinedPath, sysPath.resolve(wh.watchPath)) + 1;
                this._handleFsEventsSymlink(joinedPath, fullPath2, processPath, curDepth);
              } else {
                this.emitAdd(joinedPath, entry.stats, processPath, opts, forceAdd);
              }
            }).on(EV_ERROR, EMPTY_FN).on(STR_END, () => {
              this.fsw._emitReady();
            });
          } else {
            this.emitAdd(wh.watchPath, stats, processPath, opts, forceAdd);
            this.fsw._emitReady();
          }
        } catch (error) {
          if (!error || this.fsw._handleError(error)) {
            this.fsw._emitReady();
            this.fsw._emitReady();
          }
        }
        if (opts.persistent && forceAdd !== true) {
          if (typeof transform3 === FUNCTION_TYPE) {
            this.initWatch(void 0, path45, wh, processPath);
          } else {
            let realPath;
            try {
              realPath = await realpath2(wh.watchPath);
            } catch (e2) {
            }
            this.initWatch(realPath, path45, wh, processPath);
          }
        }
      }
    };
    module2.exports = FsEventsHandler;
    module2.exports.canUse = canUse;
  }
});

// ../../node_modules/chokidar/index.js
var require_chokidar = __commonJS({
  "../../node_modules/chokidar/index.js"(exports2) {
    "use strict";
    var { EventEmitter: EventEmitter4 } = require("events");
    var fs50 = require("fs");
    var sysPath = require("path");
    var { promisify: promisify5 } = require("util");
    var readdirp = require_readdirp();
    var anymatch = require_anymatch().default;
    var globParent = require_glob_parent();
    var isGlob = require_is_glob();
    var braces = require_braces();
    var normalizePath = require_normalize_path();
    var NodeFsHandler = require_nodefs_handler();
    var FsEventsHandler = require_fsevents_handler();
    var {
      EV_ALL,
      EV_READY,
      EV_ADD,
      EV_CHANGE,
      EV_UNLINK,
      EV_ADD_DIR,
      EV_UNLINK_DIR,
      EV_RAW,
      EV_ERROR,
      STR_CLOSE,
      STR_END,
      BACK_SLASH_RE,
      DOUBLE_SLASH_RE,
      SLASH_OR_BACK_SLASH_RE,
      DOT_RE,
      REPLACER_RE,
      SLASH,
      SLASH_SLASH,
      BRACE_START,
      BANG,
      ONE_DOT,
      TWO_DOTS,
      GLOBSTAR: GLOBSTAR2,
      SLASH_GLOBSTAR,
      ANYMATCH_OPTS,
      STRING_TYPE,
      FUNCTION_TYPE,
      EMPTY_STR,
      EMPTY_FN,
      isWindows,
      isMacos,
      isIBMi
    } = require_constants5();
    var stat2 = promisify5(fs50.stat);
    var readdir2 = promisify5(fs50.readdir);
    var arrify = (value = []) => Array.isArray(value) ? value : [value];
    var flatten2 = (list6, result = []) => {
      list6.forEach((item) => {
        if (Array.isArray(item)) {
          flatten2(item, result);
        } else {
          result.push(item);
        }
      });
      return result;
    };
    var unifyPaths = (paths_) => {
      const paths = flatten2(arrify(paths_));
      if (!paths.every((p5) => typeof p5 === STRING_TYPE)) {
        throw new TypeError(`Non-string provided as watch path: ${paths}`);
      }
      return paths.map(normalizePathToUnix);
    };
    var toUnix = (string2) => {
      let str2 = string2.replace(BACK_SLASH_RE, SLASH);
      let prepend = false;
      if (str2.startsWith(SLASH_SLASH)) {
        prepend = true;
      }
      while (str2.match(DOUBLE_SLASH_RE)) {
        str2 = str2.replace(DOUBLE_SLASH_RE, SLASH);
      }
      if (prepend) {
        str2 = SLASH + str2;
      }
      return str2;
    };
    var normalizePathToUnix = (path45) => toUnix(sysPath.normalize(toUnix(path45)));
    var normalizeIgnored = (cwd2 = EMPTY_STR) => (path45) => {
      if (typeof path45 !== STRING_TYPE) return path45;
      return normalizePathToUnix(sysPath.isAbsolute(path45) ? path45 : sysPath.join(cwd2, path45));
    };
    var getAbsolutePath = (path45, cwd2) => {
      if (sysPath.isAbsolute(path45)) {
        return path45;
      }
      if (path45.startsWith(BANG)) {
        return BANG + sysPath.join(cwd2, path45.slice(1));
      }
      return sysPath.join(cwd2, path45);
    };
    var undef = (opts, key2) => opts[key2] === void 0;
    var DirEntry = class {
      /**
       * @param {Path} dir
       * @param {Function} removeWatcher
       */
      constructor(dir, removeWatcher) {
        this.path = dir;
        this._removeWatcher = removeWatcher;
        this.items = /* @__PURE__ */ new Set();
      }
      add(item) {
        const { items } = this;
        if (!items) return;
        if (item !== ONE_DOT && item !== TWO_DOTS) items.add(item);
      }
      async remove(item) {
        const { items } = this;
        if (!items) return;
        items.delete(item);
        if (items.size > 0) return;
        const dir = this.path;
        try {
          await readdir2(dir);
        } catch (err) {
          if (this._removeWatcher) {
            this._removeWatcher(sysPath.dirname(dir), sysPath.basename(dir));
          }
        }
      }
      has(item) {
        const { items } = this;
        if (!items) return;
        return items.has(item);
      }
      /**
       * @returns {Array<String>}
       */
      getChildren() {
        const { items } = this;
        if (!items) return;
        return [...items.values()];
      }
      dispose() {
        this.items.clear();
        delete this.path;
        delete this._removeWatcher;
        delete this.items;
        Object.freeze(this);
      }
    };
    var STAT_METHOD_F = "stat";
    var STAT_METHOD_L = "lstat";
    var WatchHelper = class {
      constructor(path45, watchPath, follow, fsw) {
        this.fsw = fsw;
        this.path = path45 = path45.replace(REPLACER_RE, EMPTY_STR);
        this.watchPath = watchPath;
        this.fullWatchPath = sysPath.resolve(watchPath);
        this.hasGlob = watchPath !== path45;
        if (path45 === EMPTY_STR) this.hasGlob = false;
        this.globSymlink = this.hasGlob && follow ? void 0 : false;
        this.globFilter = this.hasGlob ? anymatch(path45, void 0, ANYMATCH_OPTS) : false;
        this.dirParts = this.getDirParts(path45);
        this.dirParts.forEach((parts) => {
          if (parts.length > 1) parts.pop();
        });
        this.followSymlinks = follow;
        this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L;
      }
      checkGlobSymlink(entry) {
        if (this.globSymlink === void 0) {
          this.globSymlink = entry.fullParentDir === this.fullWatchPath ? false : { realPath: entry.fullParentDir, linkPath: this.fullWatchPath };
        }
        if (this.globSymlink) {
          return entry.fullPath.replace(this.globSymlink.realPath, this.globSymlink.linkPath);
        }
        return entry.fullPath;
      }
      entryPath(entry) {
        return sysPath.join(
          this.watchPath,
          sysPath.relative(this.watchPath, this.checkGlobSymlink(entry))
        );
      }
      filterPath(entry) {
        const { stats } = entry;
        if (stats && stats.isSymbolicLink()) return this.filterDir(entry);
        const resolvedPath = this.entryPath(entry);
        const matchesGlob = this.hasGlob && typeof this.globFilter === FUNCTION_TYPE ? this.globFilter(resolvedPath) : true;
        return matchesGlob && this.fsw._isntIgnored(resolvedPath, stats) && this.fsw._hasReadPermissions(stats);
      }
      getDirParts(path45) {
        if (!this.hasGlob) return [];
        const parts = [];
        const expandedPath = path45.includes(BRACE_START) ? braces.expand(path45) : [path45];
        expandedPath.forEach((path46) => {
          parts.push(sysPath.relative(this.watchPath, path46).split(SLASH_OR_BACK_SLASH_RE));
        });
        return parts;
      }
      filterDir(entry) {
        if (this.hasGlob) {
          const entryParts = this.getDirParts(this.checkGlobSymlink(entry));
          let globstar = false;
          this.unmatchedGlob = !this.dirParts.some((parts) => {
            return parts.every((part, i2) => {
              if (part === GLOBSTAR2) globstar = true;
              return globstar || !entryParts[0][i2] || anymatch(part, entryParts[0][i2], ANYMATCH_OPTS);
            });
          });
        }
        return !this.unmatchedGlob && this.fsw._isntIgnored(this.entryPath(entry), entry.stats);
      }
    };
    var FSWatcher = class extends EventEmitter4 {
      // Not indenting methods for history sake; for now.
      constructor(_opts) {
        super();
        const opts = {};
        if (_opts) Object.assign(opts, _opts);
        this._watched = /* @__PURE__ */ new Map();
        this._closers = /* @__PURE__ */ new Map();
        this._ignoredPaths = /* @__PURE__ */ new Set();
        this._throttled = /* @__PURE__ */ new Map();
        this._symlinkPaths = /* @__PURE__ */ new Map();
        this._streams = /* @__PURE__ */ new Set();
        this.closed = false;
        if (undef(opts, "persistent")) opts.persistent = true;
        if (undef(opts, "ignoreInitial")) opts.ignoreInitial = false;
        if (undef(opts, "ignorePermissionErrors")) opts.ignorePermissionErrors = false;
        if (undef(opts, "interval")) opts.interval = 100;
        if (undef(opts, "binaryInterval")) opts.binaryInterval = 300;
        if (undef(opts, "disableGlobbing")) opts.disableGlobbing = false;
        opts.enableBinaryInterval = opts.binaryInterval !== opts.interval;
        if (undef(opts, "useFsEvents")) opts.useFsEvents = !opts.usePolling;
        const canUseFsEvents = FsEventsHandler.canUse();
        if (!canUseFsEvents) opts.useFsEvents = false;
        if (undef(opts, "usePolling") && !opts.useFsEvents) {
          opts.usePolling = isMacos;
        }
        if (isIBMi) {
          opts.usePolling = true;
        }
        const envPoll = process.env.CHOKIDAR_USEPOLLING;
        if (envPoll !== void 0) {
          const envLower = envPoll.toLowerCase();
          if (envLower === "false" || envLower === "0") {
            opts.usePolling = false;
          } else if (envLower === "true" || envLower === "1") {
            opts.usePolling = true;
          } else {
            opts.usePolling = !!envLower;
          }
        }
        const envInterval = process.env.CHOKIDAR_INTERVAL;
        if (envInterval) {
          opts.interval = Number.parseInt(envInterval, 10);
        }
        if (undef(opts, "atomic")) opts.atomic = !opts.usePolling && !opts.useFsEvents;
        if (opts.atomic) this._pendingUnlinks = /* @__PURE__ */ new Map();
        if (undef(opts, "followSymlinks")) opts.followSymlinks = true;
        if (undef(opts, "awaitWriteFinish")) opts.awaitWriteFinish = false;
        if (opts.awaitWriteFinish === true) opts.awaitWriteFinish = {};
        const awf = opts.awaitWriteFinish;
        if (awf) {
          if (!awf.stabilityThreshold) awf.stabilityThreshold = 2e3;
          if (!awf.pollInterval) awf.pollInterval = 100;
          this._pendingWrites = /* @__PURE__ */ new Map();
        }
        if (opts.ignored) opts.ignored = arrify(opts.ignored);
        let readyCalls = 0;
        this._emitReady = () => {
          readyCalls++;
          if (readyCalls >= this._readyCount) {
            this._emitReady = EMPTY_FN;
            this._readyEmitted = true;
            process.nextTick(() => this.emit(EV_READY));
          }
        };
        this._emitRaw = (...args) => this.emit(EV_RAW, ...args);
        this._readyEmitted = false;
        this.options = opts;
        if (opts.useFsEvents) {
          this._fsEventsHandler = new FsEventsHandler(this);
        } else {
          this._nodeFsHandler = new NodeFsHandler(this);
        }
        Object.freeze(opts);
      }
      // Public methods
      /**
       * Adds paths to be watched on an existing FSWatcher instance
       * @param {Path|Array<Path>} paths_
       * @param {String=} _origAdd private; for handling non-existent paths to be watched
       * @param {Boolean=} _internal private; indicates a non-user add
       * @returns {FSWatcher} for chaining
       */
      add(paths_, _origAdd, _internal) {
        const { cwd: cwd2, disableGlobbing } = this.options;
        this.closed = false;
        let paths = unifyPaths(paths_);
        if (cwd2) {
          paths = paths.map((path45) => {
            const absPath = getAbsolutePath(path45, cwd2);
            if (disableGlobbing || !isGlob(path45)) {
              return absPath;
            }
            return normalizePath(absPath);
          });
        }
        paths = paths.filter((path45) => {
          if (path45.startsWith(BANG)) {
            this._ignoredPaths.add(path45.slice(1));
            return false;
          }
          this._ignoredPaths.delete(path45);
          this._ignoredPaths.delete(path45 + SLASH_GLOBSTAR);
          this._userIgnored = void 0;
          return true;
        });
        if (this.options.useFsEvents && this._fsEventsHandler) {
          if (!this._readyCount) this._readyCount = paths.length;
          if (this.options.persistent) this._readyCount *= 2;
          paths.forEach((path45) => this._fsEventsHandler._addToFsEvents(path45));
        } else {
          if (!this._readyCount) this._readyCount = 0;
          this._readyCount += paths.length;
          Promise.all(
            paths.map(async (path45) => {
              const res = await this._nodeFsHandler._addToNodeFs(path45, !_internal, 0, 0, _origAdd);
              if (res) this._emitReady();
              return res;
            })
          ).then((results) => {
            if (this.closed) return;
            results.filter((item) => item).forEach((item) => {
              this.add(sysPath.dirname(item), sysPath.basename(_origAdd || item));
            });
          });
        }
        return this;
      }
      /**
       * Close watchers or start ignoring events from specified paths.
       * @param {Path|Array<Path>} paths_ - string or array of strings, file/directory paths and/or globs
       * @returns {FSWatcher} for chaining
      */
      unwatch(paths_) {
        if (this.closed) return this;
        const paths = unifyPaths(paths_);
        const { cwd: cwd2 } = this.options;
        paths.forEach((path45) => {
          if (!sysPath.isAbsolute(path45) && !this._closers.has(path45)) {
            if (cwd2) path45 = sysPath.join(cwd2, path45);
            path45 = sysPath.resolve(path45);
          }
          this._closePath(path45);
          this._ignoredPaths.add(path45);
          if (this._watched.has(path45)) {
            this._ignoredPaths.add(path45 + SLASH_GLOBSTAR);
          }
          this._userIgnored = void 0;
        });
        return this;
      }
      /**
       * Close watchers and remove all listeners from watched paths.
       * @returns {Promise<void>}.
      */
      close() {
        if (this.closed) return this._closePromise;
        this.closed = true;
        this.removeAllListeners();
        const closers = [];
        this._closers.forEach((closerList) => closerList.forEach((closer) => {
          const promise = closer();
          if (promise instanceof Promise) closers.push(promise);
        }));
        this._streams.forEach((stream3) => stream3.destroy());
        this._userIgnored = void 0;
        this._readyCount = 0;
        this._readyEmitted = false;
        this._watched.forEach((dirent) => dirent.dispose());
        ["closers", "watched", "streams", "symlinkPaths", "throttled"].forEach((key2) => {
          this[`_${key2}`].clear();
        });
        this._closePromise = closers.length ? Promise.all(closers).then(() => void 0) : Promise.resolve();
        return this._closePromise;
      }
      /**
       * Expose list of watched paths
       * @returns {Object} for chaining
      */
      getWatched() {
        const watchList = {};
        this._watched.forEach((entry, dir) => {
          const key2 = this.options.cwd ? sysPath.relative(this.options.cwd, dir) : dir;
          watchList[key2 || ONE_DOT] = entry.getChildren().sort();
        });
        return watchList;
      }
      emitWithAll(event, args) {
        this.emit(...args);
        if (event !== EV_ERROR) this.emit(EV_ALL, ...args);
      }
      // Common helpers
      // --------------
      /**
       * Normalize and emit events.
       * Calling _emit DOES NOT MEAN emit() would be called!
       * @param {EventName} event Type of event
       * @param {Path} path File or directory path
       * @param {*=} val1 arguments to be passed with event
       * @param {*=} val2
       * @param {*=} val3
       * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag
       */
      async _emit(event, path45, val1, val2, val3) {
        if (this.closed) return;
        const opts = this.options;
        if (isWindows) path45 = sysPath.normalize(path45);
        if (opts.cwd) path45 = sysPath.relative(opts.cwd, path45);
        const args = [event, path45];
        if (val3 !== void 0) args.push(val1, val2, val3);
        else if (val2 !== void 0) args.push(val1, val2);
        else if (val1 !== void 0) args.push(val1);
        const awf = opts.awaitWriteFinish;
        let pw;
        if (awf && (pw = this._pendingWrites.get(path45))) {
          pw.lastChange = /* @__PURE__ */ new Date();
          return this;
        }
        if (opts.atomic) {
          if (event === EV_UNLINK) {
            this._pendingUnlinks.set(path45, args);
            setTimeout(() => {
              this._pendingUnlinks.forEach((entry, path46) => {
                this.emit(...entry);
                this.emit(EV_ALL, ...entry);
                this._pendingUnlinks.delete(path46);
              });
            }, typeof opts.atomic === "number" ? opts.atomic : 100);
            return this;
          }
          if (event === EV_ADD && this._pendingUnlinks.has(path45)) {
            event = args[0] = EV_CHANGE;
            this._pendingUnlinks.delete(path45);
          }
        }
        if (awf && (event === EV_ADD || event === EV_CHANGE) && this._readyEmitted) {
          const awfEmit = (err, stats) => {
            if (err) {
              event = args[0] = EV_ERROR;
              args[1] = err;
              this.emitWithAll(event, args);
            } else if (stats) {
              if (args.length > 2) {
                args[2] = stats;
              } else {
                args.push(stats);
              }
              this.emitWithAll(event, args);
            }
          };
          this._awaitWriteFinish(path45, awf.stabilityThreshold, event, awfEmit);
          return this;
        }
        if (event === EV_CHANGE) {
          const isThrottled = !this._throttle(EV_CHANGE, path45, 50);
          if (isThrottled) return this;
        }
        if (opts.alwaysStat && val1 === void 0 && (event === EV_ADD || event === EV_ADD_DIR || event === EV_CHANGE)) {
          const fullPath2 = opts.cwd ? sysPath.join(opts.cwd, path45) : path45;
          let stats;
          try {
            stats = await stat2(fullPath2);
          } catch (err) {
          }
          if (!stats || this.closed) return;
          args.push(stats);
        }
        this.emitWithAll(event, args);
        return this;
      }
      /**
       * Common handler for errors
       * @param {Error} error
       * @returns {Error|Boolean} The error if defined, otherwise the value of the FSWatcher instance's `closed` flag
       */
      _handleError(error) {
        const code7 = error && error.code;
        if (error && code7 !== "ENOENT" && code7 !== "ENOTDIR" && (!this.options.ignorePermissionErrors || code7 !== "EPERM" && code7 !== "EACCES")) {
          this.emit(EV_ERROR, error);
        }
        return error || this.closed;
      }
      /**
       * Helper utility for throttling
       * @param {ThrottleType} actionType type being throttled
       * @param {Path} path being acted upon
       * @param {Number} timeout duration of time to suppress duplicate actions
       * @returns {Object|false} tracking object or false if action should be suppressed
       */
      _throttle(actionType, path45, timeout) {
        if (!this._throttled.has(actionType)) {
          this._throttled.set(actionType, /* @__PURE__ */ new Map());
        }
        const action = this._throttled.get(actionType);
        const actionPath = action.get(path45);
        if (actionPath) {
          actionPath.count++;
          return false;
        }
        let timeoutObject;
        const clear = () => {
          const item = action.get(path45);
          const count2 = item ? item.count : 0;
          action.delete(path45);
          clearTimeout(timeoutObject);
          if (item) clearTimeout(item.timeoutObject);
          return count2;
        };
        timeoutObject = setTimeout(clear, timeout);
        const thr = { timeoutObject, clear, count: 0 };
        action.set(path45, thr);
        return thr;
      }
      _incrReadyCount() {
        return this._readyCount++;
      }
      /**
       * Awaits write operation to finish.
       * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback.
       * @param {Path} path being acted upon
       * @param {Number} threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished
       * @param {EventName} event
       * @param {Function} awfEmit Callback to be called when ready for event to be emitted.
       */
      _awaitWriteFinish(path45, threshold, event, awfEmit) {
        let timeoutHandler;
        let fullPath2 = path45;
        if (this.options.cwd && !sysPath.isAbsolute(path45)) {
          fullPath2 = sysPath.join(this.options.cwd, path45);
        }
        const now = /* @__PURE__ */ new Date();
        const awaitWriteFinish = (prevStat) => {
          fs50.stat(fullPath2, (err, curStat) => {
            if (err || !this._pendingWrites.has(path45)) {
              if (err && err.code !== "ENOENT") awfEmit(err);
              return;
            }
            const now2 = Number(/* @__PURE__ */ new Date());
            if (prevStat && curStat.size !== prevStat.size) {
              this._pendingWrites.get(path45).lastChange = now2;
            }
            const pw = this._pendingWrites.get(path45);
            const df = now2 - pw.lastChange;
            if (df >= threshold) {
              this._pendingWrites.delete(path45);
              awfEmit(void 0, curStat);
            } else {
              timeoutHandler = setTimeout(
                awaitWriteFinish,
                this.options.awaitWriteFinish.pollInterval,
                curStat
              );
            }
          });
        };
        if (!this._pendingWrites.has(path45)) {
          this._pendingWrites.set(path45, {
            lastChange: now,
            cancelWait: () => {
              this._pendingWrites.delete(path45);
              clearTimeout(timeoutHandler);
              return event;
            }
          });
          timeoutHandler = setTimeout(
            awaitWriteFinish,
            this.options.awaitWriteFinish.pollInterval
          );
        }
      }
      _getGlobIgnored() {
        return [...this._ignoredPaths.values()];
      }
      /**
       * Determines whether user has asked to ignore this path.
       * @param {Path} path filepath or dir
       * @param {fs.Stats=} stats result of fs.stat
       * @returns {Boolean}
       */
      _isIgnored(path45, stats) {
        if (this.options.atomic && DOT_RE.test(path45)) return true;
        if (!this._userIgnored) {
          const { cwd: cwd2 } = this.options;
          const ign = this.options.ignored;
          const ignored = ign && ign.map(normalizeIgnored(cwd2));
          const paths = arrify(ignored).filter((path46) => typeof path46 === STRING_TYPE && !isGlob(path46)).map((path46) => path46 + SLASH_GLOBSTAR);
          const list6 = this._getGlobIgnored().map(normalizeIgnored(cwd2)).concat(ignored, paths);
          this._userIgnored = anymatch(list6, void 0, ANYMATCH_OPTS);
        }
        return this._userIgnored([path45, stats]);
      }
      _isntIgnored(path45, stat3) {
        return !this._isIgnored(path45, stat3);
      }
      /**
       * Provides a set of common helpers and properties relating to symlink and glob handling.
       * @param {Path} path file, directory, or glob pattern being watched
       * @param {Number=} depth at any depth > 0, this isn't a glob
       * @returns {WatchHelper} object containing helpers for this path
       */
      _getWatchHelpers(path45, depth) {
        const watchPath = depth || this.options.disableGlobbing || !isGlob(path45) ? path45 : globParent(path45);
        const follow = this.options.followSymlinks;
        return new WatchHelper(path45, watchPath, follow, this);
      }
      // Directory helpers
      // -----------------
      /**
       * Provides directory tracking objects
       * @param {String} directory path of the directory
       * @returns {DirEntry} the directory's tracking object
       */
      _getWatchedDir(directory) {
        if (!this._boundRemove) this._boundRemove = this._remove.bind(this);
        const dir = sysPath.resolve(directory);
        if (!this._watched.has(dir)) this._watched.set(dir, new DirEntry(dir, this._boundRemove));
        return this._watched.get(dir);
      }
      // File helpers
      // ------------
      /**
       * Check for read permissions.
       * Based on this answer on SO: https://stackoverflow.com/a/11781404/1358405
       * @param {fs.Stats} stats - object, result of fs_stat
       * @returns {Boolean} indicates whether the file can be read
      */
      _hasReadPermissions(stats) {
        if (this.options.ignorePermissionErrors) return true;
        const md = stats && Number.parseInt(stats.mode, 10);
        const st = md & 511;
        const it = Number.parseInt(st.toString(8)[0], 10);
        return Boolean(4 & it);
      }
      /**
       * Handles emitting unlink events for
       * files and directories, and via recursion, for
       * files and directories within directories that are unlinked
       * @param {String} directory within which the following item is located
       * @param {String} item      base path of item/directory
       * @returns {void}
      */
      _remove(directory, item, isDirectory2) {
        const path45 = sysPath.join(directory, item);
        const fullPath2 = sysPath.resolve(path45);
        isDirectory2 = isDirectory2 != null ? isDirectory2 : this._watched.has(path45) || this._watched.has(fullPath2);
        if (!this._throttle("remove", path45, 100)) return;
        if (!isDirectory2 && !this.options.useFsEvents && this._watched.size === 1) {
          this.add(directory, item, true);
        }
        const wp = this._getWatchedDir(path45);
        const nestedDirectoryChildren = wp.getChildren();
        nestedDirectoryChildren.forEach((nested) => this._remove(path45, nested));
        const parent2 = this._getWatchedDir(directory);
        const wasTracked = parent2.has(item);
        parent2.remove(item);
        if (this._symlinkPaths.has(fullPath2)) {
          this._symlinkPaths.delete(fullPath2);
        }
        let relPath = path45;
        if (this.options.cwd) relPath = sysPath.relative(this.options.cwd, path45);
        if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) {
          const event = this._pendingWrites.get(relPath).cancelWait();
          if (event === EV_ADD) return;
        }
        this._watched.delete(path45);
        this._watched.delete(fullPath2);
        const eventName = isDirectory2 ? EV_UNLINK_DIR : EV_UNLINK;
        if (wasTracked && !this._isIgnored(path45)) this._emit(eventName, path45);
        if (!this.options.useFsEvents) {
          this._closePath(path45);
        }
      }
      /**
       * Closes all watchers for a path
       * @param {Path} path
       */
      _closePath(path45) {
        this._closeFile(path45);
        const dir = sysPath.dirname(path45);
        this._getWatchedDir(dir).remove(sysPath.basename(path45));
      }
      /**
       * Closes only file-specific watchers
       * @param {Path} path
       */
      _closeFile(path45) {
        const closers = this._closers.get(path45);
        if (!closers) return;
        closers.forEach((closer) => closer());
        this._closers.delete(path45);
      }
      /**
       *
       * @param {Path} path
       * @param {Function} closer
       */
      _addPathCloser(path45, closer) {
        if (!closer) return;
        let list6 = this._closers.get(path45);
        if (!list6) {
          list6 = [];
          this._closers.set(path45, list6);
        }
        list6.push(closer);
      }
      _readdirp(root6, opts) {
        if (this.closed) return;
        const options = { type: EV_ALL, alwaysStat: true, lstat: true, ...opts };
        let stream3 = readdirp(root6, options);
        this._streams.add(stream3);
        stream3.once(STR_CLOSE, () => {
          stream3 = void 0;
        });
        stream3.once(STR_END, () => {
          if (stream3) {
            this._streams.delete(stream3);
            stream3 = void 0;
          }
        });
        return stream3;
      }
    };
    exports2.FSWatcher = FSWatcher;
    var watch2 = (paths, options) => {
      const watcher = new FSWatcher(options);
      watcher.add(paths);
      return watcher;
    };
    exports2.watch = watch2;
  }
});

// ../../node_modules/nunjucks/src/lib.js
var require_lib17 = __commonJS({
  "../../node_modules/nunjucks/src/lib.js"(exports2, module2) {
    "use strict";
    var ArrayProto = Array.prototype;
    var ObjProto = Object.prototype;
    var escapeMap = {
      "&": "&amp;",
      '"': "&quot;",
      "'": "&#39;",
      "<": "&lt;",
      ">": "&gt;",
      "\\": "&#92;"
    };
    var escapeRegex = /[&"'<>\\]/g;
    var _exports = module2.exports = {};
    function hasOwnProp(obj, k) {
      return ObjProto.hasOwnProperty.call(obj, k);
    }
    _exports.hasOwnProp = hasOwnProp;
    function lookupEscape(ch) {
      return escapeMap[ch];
    }
    function _prettifyError(path45, withInternals, err) {
      if (!err.Update) {
        err = new _exports.TemplateError(err);
      }
      err.Update(path45);
      if (!withInternals) {
        var old = err;
        err = new Error(old.message);
        err.name = old.name;
      }
      return err;
    }
    _exports._prettifyError = _prettifyError;
    function TemplateError(message, lineno, colno) {
      var err;
      var cause;
      if (message instanceof Error) {
        cause = message;
        message = cause.name + ": " + cause.message;
      }
      if (Object.setPrototypeOf) {
        err = new Error(message);
        Object.setPrototypeOf(err, TemplateError.prototype);
      } else {
        err = this;
        Object.defineProperty(err, "message", {
          enumerable: false,
          writable: true,
          value: message
        });
      }
      Object.defineProperty(err, "name", {
        value: "Template render error"
      });
      if (Error.captureStackTrace) {
        Error.captureStackTrace(err, this.constructor);
      }
      var getStack;
      if (cause) {
        var stackDescriptor = Object.getOwnPropertyDescriptor(cause, "stack");
        getStack = stackDescriptor && (stackDescriptor.get || function() {
          return stackDescriptor.value;
        });
        if (!getStack) {
          getStack = function getStack2() {
            return cause.stack;
          };
        }
      } else {
        var stack = new Error(message).stack;
        getStack = function getStack2() {
          return stack;
        };
      }
      Object.defineProperty(err, "stack", {
        get: function get() {
          return getStack.call(err);
        }
      });
      Object.defineProperty(err, "cause", {
        value: cause
      });
      err.lineno = lineno;
      err.colno = colno;
      err.firstUpdate = true;
      err.Update = function Update(path45) {
        var msg = "(" + (path45 || "unknown path") + ")";
        if (this.firstUpdate) {
          if (this.lineno && this.colno) {
            msg += " [Line " + this.lineno + ", Column " + this.colno + "]";
          } else if (this.lineno) {
            msg += " [Line " + this.lineno + "]";
          }
        }
        msg += "\n ";
        if (this.firstUpdate) {
          msg += " ";
        }
        this.message = msg + (this.message || "");
        this.firstUpdate = false;
        return this;
      };
      return err;
    }
    if (Object.setPrototypeOf) {
      Object.setPrototypeOf(TemplateError.prototype, Error.prototype);
    } else {
      TemplateError.prototype = Object.create(Error.prototype, {
        constructor: {
          value: TemplateError
        }
      });
    }
    _exports.TemplateError = TemplateError;
    function escape5(val) {
      return val.replace(escapeRegex, lookupEscape);
    }
    _exports.escape = escape5;
    function isFunction2(obj) {
      return ObjProto.toString.call(obj) === "[object Function]";
    }
    _exports.isFunction = isFunction2;
    function isArray2(obj) {
      return ObjProto.toString.call(obj) === "[object Array]";
    }
    _exports.isArray = isArray2;
    function isString(obj) {
      return ObjProto.toString.call(obj) === "[object String]";
    }
    _exports.isString = isString;
    function isObject2(obj) {
      return ObjProto.toString.call(obj) === "[object Object]";
    }
    _exports.isObject = isObject2;
    function _prepareAttributeParts(attr) {
      if (!attr) {
        return [];
      }
      if (typeof attr === "string") {
        return attr.split(".");
      }
      return [attr];
    }
    function getAttrGetter(attribute2) {
      var parts = _prepareAttributeParts(attribute2);
      return function attrGetter(item) {
        var _item = item;
        for (var i2 = 0; i2 < parts.length; i2++) {
          var part = parts[i2];
          if (hasOwnProp(_item, part)) {
            _item = _item[part];
          } else {
            return void 0;
          }
        }
        return _item;
      };
    }
    _exports.getAttrGetter = getAttrGetter;
    function groupBy(obj, val, throwOnUndefined) {
      var result = {};
      var iterator = isFunction2(val) ? val : getAttrGetter(val);
      for (var i2 = 0; i2 < obj.length; i2++) {
        var value = obj[i2];
        var key2 = iterator(value, i2);
        if (key2 === void 0 && throwOnUndefined === true) {
          throw new TypeError('groupby: attribute "' + val + '" resolved to undefined');
        }
        (result[key2] || (result[key2] = [])).push(value);
      }
      return result;
    }
    _exports.groupBy = groupBy;
    function toArray2(obj) {
      return Array.prototype.slice.call(obj);
    }
    _exports.toArray = toArray2;
    function without(array) {
      var result = [];
      if (!array) {
        return result;
      }
      var length = array.length;
      var contains3 = toArray2(arguments).slice(1);
      var index4 = -1;
      while (++index4 < length) {
        if (indexOf2(contains3, array[index4]) === -1) {
          result.push(array[index4]);
        }
      }
      return result;
    }
    _exports.without = without;
    function repeat2(char_, n) {
      var str2 = "";
      for (var i2 = 0; i2 < n; i2++) {
        str2 += char_;
      }
      return str2;
    }
    _exports.repeat = repeat2;
    function each2(obj, func, context) {
      if (obj == null) {
        return;
      }
      if (ArrayProto.forEach && obj.forEach === ArrayProto.forEach) {
        obj.forEach(func, context);
      } else if (obj.length === +obj.length) {
        for (var i2 = 0, l = obj.length; i2 < l; i2++) {
          func.call(context, obj[i2], i2, obj);
        }
      }
    }
    _exports.each = each2;
    function map13(obj, func) {
      var results = [];
      if (obj == null) {
        return results;
      }
      if (ArrayProto.map && obj.map === ArrayProto.map) {
        return obj.map(func);
      }
      for (var i2 = 0; i2 < obj.length; i2++) {
        results[results.length] = func(obj[i2], i2);
      }
      if (obj.length === +obj.length) {
        results.length = obj.length;
      }
      return results;
    }
    _exports.map = map13;
    function asyncIter(arr, iter, cb) {
      var i2 = -1;
      function next() {
        i2++;
        if (i2 < arr.length) {
          iter(arr[i2], i2, next, cb);
        } else {
          cb();
        }
      }
      next();
    }
    _exports.asyncIter = asyncIter;
    function asyncFor(obj, iter, cb) {
      var keys2 = keys_(obj || {});
      var len = keys2.length;
      var i2 = -1;
      function next() {
        i2++;
        var k = keys2[i2];
        if (i2 < len) {
          iter(k, obj[k], i2, len, next);
        } else {
          cb();
        }
      }
      next();
    }
    _exports.asyncFor = asyncFor;
    function indexOf2(arr, searchElement, fromIndex) {
      return Array.prototype.indexOf.call(arr || [], searchElement, fromIndex);
    }
    _exports.indexOf = indexOf2;
    function keys_(obj) {
      var arr = [];
      for (var k in obj) {
        if (hasOwnProp(obj, k)) {
          arr.push(k);
        }
      }
      return arr;
    }
    _exports.keys = keys_;
    function _entries(obj) {
      return keys_(obj).map(function(k) {
        return [k, obj[k]];
      });
    }
    _exports._entries = _entries;
    function _values(obj) {
      return keys_(obj).map(function(k) {
        return obj[k];
      });
    }
    _exports._values = _values;
    function extend5(obj1, obj2) {
      obj1 = obj1 || {};
      keys_(obj2).forEach(function(k) {
        obj1[k] = obj2[k];
      });
      return obj1;
    }
    _exports._assign = _exports.extend = extend5;
    function inOperator(key2, val) {
      if (isArray2(val) || isString(val)) {
        return val.indexOf(key2) !== -1;
      } else if (isObject2(val)) {
        return key2 in val;
      }
      throw new Error('Cannot use "in" operator to search for "' + key2 + '" in unexpected types.');
    }
    _exports.inOperator = inOperator;
  }
});

// ../../node_modules/asap/raw.js
var require_raw = __commonJS({
  "../../node_modules/asap/raw.js"(exports2, module2) {
    "use strict";
    var domain;
    var hasSetImmediate = typeof setImmediate === "function";
    module2.exports = rawAsap;
    function rawAsap(task) {
      if (!queue.length) {
        requestFlush();
        flushing = true;
      }
      queue[queue.length] = task;
    }
    var queue = [];
    var flushing = false;
    var index4 = 0;
    var capacity = 1024;
    function flush() {
      while (index4 < queue.length) {
        var currentIndex = index4;
        index4 = index4 + 1;
        queue[currentIndex].call();
        if (index4 > capacity) {
          for (var scan2 = 0, newLength = queue.length - index4; scan2 < newLength; scan2++) {
            queue[scan2] = queue[scan2 + index4];
          }
          queue.length -= index4;
          index4 = 0;
        }
      }
      queue.length = 0;
      index4 = 0;
      flushing = false;
    }
    rawAsap.requestFlush = requestFlush;
    function requestFlush() {
      var parentDomain = process.domain;
      if (parentDomain) {
        if (!domain) {
          domain = require("domain");
        }
        domain.active = process.domain = null;
      }
      if (flushing && hasSetImmediate) {
        setImmediate(flush);
      } else {
        process.nextTick(flush);
      }
      if (parentDomain) {
        domain.active = process.domain = parentDomain;
      }
    }
  }
});

// ../../node_modules/asap/asap.js
var require_asap = __commonJS({
  "../../node_modules/asap/asap.js"(exports2, module2) {
    "use strict";
    var rawAsap = require_raw();
    var freeTasks = [];
    module2.exports = asap;
    function asap(task) {
      var rawTask;
      if (freeTasks.length) {
        rawTask = freeTasks.pop();
      } else {
        rawTask = new RawTask();
      }
      rawTask.task = task;
      rawTask.domain = process.domain;
      rawAsap(rawTask);
    }
    function RawTask() {
      this.task = null;
      this.domain = null;
    }
    RawTask.prototype.call = function() {
      if (this.domain) {
        this.domain.enter();
      }
      var threw = true;
      try {
        this.task.call();
        threw = false;
        if (this.domain) {
          this.domain.exit();
        }
      } finally {
        if (threw) {
          rawAsap.requestFlush();
        }
        this.task = null;
        this.domain = null;
        freeTasks.push(this);
      }
    };
  }
});

// ../../node_modules/a-sync-waterfall/index.js
var require_a_sync_waterfall = __commonJS({
  "../../node_modules/a-sync-waterfall/index.js"(exports2, module2) {
    (function(globals) {
      "use strict";
      var executeSync = function() {
        var args = Array.prototype.slice.call(arguments);
        if (typeof args[0] === "function") {
          args[0].apply(null, args.splice(1));
        }
      };
      var executeAsync = function(fn) {
        if (typeof setImmediate === "function") {
          setImmediate(fn);
        } else if (typeof process !== "undefined" && process.nextTick) {
          process.nextTick(fn);
        } else {
          setTimeout(fn, 0);
        }
      };
      var makeIterator = function(tasks) {
        var makeCallback = function(index4) {
          var fn = function() {
            if (tasks.length) {
              tasks[index4].apply(null, arguments);
            }
            return fn.next();
          };
          fn.next = function() {
            return index4 < tasks.length - 1 ? makeCallback(index4 + 1) : null;
          };
          return fn;
        };
        return makeCallback(0);
      };
      var _isArray = Array.isArray || function(maybeArray) {
        return Object.prototype.toString.call(maybeArray) === "[object Array]";
      };
      var waterfall = function(tasks, callback, forceAsync) {
        var nextTick = forceAsync ? executeAsync : executeSync;
        callback = callback || function() {
        };
        if (!_isArray(tasks)) {
          var err = new Error("First argument to waterfall must be an array of functions");
          return callback(err);
        }
        if (!tasks.length) {
          return callback();
        }
        var wrapIterator = function(iterator) {
          return function(err2) {
            if (err2) {
              callback.apply(null, arguments);
              callback = function() {
              };
            } else {
              var args = Array.prototype.slice.call(arguments, 1);
              var next = iterator.next();
              if (next) {
                args.push(wrapIterator(next));
              } else {
                args.push(callback);
              }
              nextTick(function() {
                iterator.apply(null, args);
              });
            }
          };
        };
        wrapIterator(makeIterator(tasks))();
      };
      if (typeof define !== "undefined" && define.amd) {
        define([], function() {
          return waterfall;
        });
      } else if (typeof module2 !== "undefined" && module2.exports) {
        module2.exports = waterfall;
      } else {
        globals.waterfall = waterfall;
      }
    })(exports2);
  }
});

// ../../node_modules/nunjucks/src/lexer.js
var require_lexer = __commonJS({
  "../../node_modules/nunjucks/src/lexer.js"(exports2, module2) {
    "use strict";
    var lib = require_lib17();
    var whitespaceChars = " \n	\r\xA0";
    var delimChars = "()[]{}%*-+~/#,:|.<>=!";
    var intChars = "0123456789";
    var BLOCK_START = "{%";
    var BLOCK_END = "%}";
    var VARIABLE_START = "{{";
    var VARIABLE_END = "}}";
    var COMMENT_START = "{#";
    var COMMENT_END = "#}";
    var TOKEN_STRING = "string";
    var TOKEN_WHITESPACE = "whitespace";
    var TOKEN_DATA = "data";
    var TOKEN_BLOCK_START = "block-start";
    var TOKEN_BLOCK_END = "block-end";
    var TOKEN_VARIABLE_START = "variable-start";
    var TOKEN_VARIABLE_END = "variable-end";
    var TOKEN_COMMENT = "comment";
    var TOKEN_LEFT_PAREN = "left-paren";
    var TOKEN_RIGHT_PAREN = "right-paren";
    var TOKEN_LEFT_BRACKET = "left-bracket";
    var TOKEN_RIGHT_BRACKET = "right-bracket";
    var TOKEN_LEFT_CURLY = "left-curly";
    var TOKEN_RIGHT_CURLY = "right-curly";
    var TOKEN_OPERATOR = "operator";
    var TOKEN_COMMA = "comma";
    var TOKEN_COLON = "colon";
    var TOKEN_TILDE = "tilde";
    var TOKEN_PIPE = "pipe";
    var TOKEN_INT = "int";
    var TOKEN_FLOAT = "float";
    var TOKEN_BOOLEAN = "boolean";
    var TOKEN_NONE = "none";
    var TOKEN_SYMBOL = "symbol";
    var TOKEN_SPECIAL = "special";
    var TOKEN_REGEX = "regex";
    function token(type2, value, lineno, colno) {
      return {
        type: type2,
        value,
        lineno,
        colno
      };
    }
    var Tokenizer2 = /* @__PURE__ */ (function() {
      function Tokenizer3(str2, opts) {
        this.str = str2;
        this.index = 0;
        this.len = str2.length;
        this.lineno = 0;
        this.colno = 0;
        this.in_code = false;
        opts = opts || {};
        var tags = opts.tags || {};
        this.tags = {
          BLOCK_START: tags.blockStart || BLOCK_START,
          BLOCK_END: tags.blockEnd || BLOCK_END,
          VARIABLE_START: tags.variableStart || VARIABLE_START,
          VARIABLE_END: tags.variableEnd || VARIABLE_END,
          COMMENT_START: tags.commentStart || COMMENT_START,
          COMMENT_END: tags.commentEnd || COMMENT_END
        };
        this.trimBlocks = !!opts.trimBlocks;
        this.lstripBlocks = !!opts.lstripBlocks;
      }
      var _proto = Tokenizer3.prototype;
      _proto.nextToken = function nextToken() {
        var lineno = this.lineno;
        var colno = this.colno;
        var tok;
        if (this.in_code) {
          var cur = this.current();
          if (this.isFinished()) {
            return null;
          } else if (cur === '"' || cur === "'") {
            return token(TOKEN_STRING, this._parseString(cur), lineno, colno);
          } else if (tok = this._extract(whitespaceChars)) {
            return token(TOKEN_WHITESPACE, tok, lineno, colno);
          } else if ((tok = this._extractString(this.tags.BLOCK_END)) || (tok = this._extractString("-" + this.tags.BLOCK_END))) {
            this.in_code = false;
            if (this.trimBlocks) {
              cur = this.current();
              if (cur === "\n") {
                this.forward();
              } else if (cur === "\r") {
                this.forward();
                cur = this.current();
                if (cur === "\n") {
                  this.forward();
                } else {
                  this.back();
                }
              }
            }
            return token(TOKEN_BLOCK_END, tok, lineno, colno);
          } else if ((tok = this._extractString(this.tags.VARIABLE_END)) || (tok = this._extractString("-" + this.tags.VARIABLE_END))) {
            this.in_code = false;
            return token(TOKEN_VARIABLE_END, tok, lineno, colno);
          } else if (cur === "r" && this.str.charAt(this.index + 1) === "/") {
            this.forwardN(2);
            var regexBody = "";
            while (!this.isFinished()) {
              if (this.current() === "/" && this.previous() !== "\\") {
                this.forward();
                break;
              } else {
                regexBody += this.current();
                this.forward();
              }
            }
            var POSSIBLE_FLAGS = ["g", "i", "m", "y"];
            var regexFlags = "";
            while (!this.isFinished()) {
              var isCurrentAFlag = POSSIBLE_FLAGS.indexOf(this.current()) !== -1;
              if (isCurrentAFlag) {
                regexFlags += this.current();
                this.forward();
              } else {
                break;
              }
            }
            return token(TOKEN_REGEX, {
              body: regexBody,
              flags: regexFlags
            }, lineno, colno);
          } else if (delimChars.indexOf(cur) !== -1) {
            this.forward();
            var complexOps = ["==", "===", "!=", "!==", "<=", ">=", "//", "**"];
            var curComplex = cur + this.current();
            var type2;
            if (lib.indexOf(complexOps, curComplex) !== -1) {
              this.forward();
              cur = curComplex;
              if (lib.indexOf(complexOps, curComplex + this.current()) !== -1) {
                cur = curComplex + this.current();
                this.forward();
              }
            }
            switch (cur) {
              case "(":
                type2 = TOKEN_LEFT_PAREN;
                break;
              case ")":
                type2 = TOKEN_RIGHT_PAREN;
                break;
              case "[":
                type2 = TOKEN_LEFT_BRACKET;
                break;
              case "]":
                type2 = TOKEN_RIGHT_BRACKET;
                break;
              case "{":
                type2 = TOKEN_LEFT_CURLY;
                break;
              case "}":
                type2 = TOKEN_RIGHT_CURLY;
                break;
              case ",":
                type2 = TOKEN_COMMA;
                break;
              case ":":
                type2 = TOKEN_COLON;
                break;
              case "~":
                type2 = TOKEN_TILDE;
                break;
              case "|":
                type2 = TOKEN_PIPE;
                break;
              default:
                type2 = TOKEN_OPERATOR;
            }
            return token(type2, cur, lineno, colno);
          } else {
            tok = this._extractUntil(whitespaceChars + delimChars);
            if (tok.match(/^[-+]?[0-9]+$/)) {
              if (this.current() === ".") {
                this.forward();
                var dec = this._extract(intChars);
                return token(TOKEN_FLOAT, tok + "." + dec, lineno, colno);
              } else {
                return token(TOKEN_INT, tok, lineno, colno);
              }
            } else if (tok.match(/^(true|false)$/)) {
              return token(TOKEN_BOOLEAN, tok, lineno, colno);
            } else if (tok === "none") {
              return token(TOKEN_NONE, tok, lineno, colno);
            } else if (tok === "null") {
              return token(TOKEN_NONE, tok, lineno, colno);
            } else if (tok) {
              return token(TOKEN_SYMBOL, tok, lineno, colno);
            } else {
              throw new Error("Unexpected value while parsing: " + tok);
            }
          }
        } else {
          var beginChars = this.tags.BLOCK_START.charAt(0) + this.tags.VARIABLE_START.charAt(0) + this.tags.COMMENT_START.charAt(0) + this.tags.COMMENT_END.charAt(0);
          if (this.isFinished()) {
            return null;
          } else if ((tok = this._extractString(this.tags.BLOCK_START + "-")) || (tok = this._extractString(this.tags.BLOCK_START))) {
            this.in_code = true;
            return token(TOKEN_BLOCK_START, tok, lineno, colno);
          } else if ((tok = this._extractString(this.tags.VARIABLE_START + "-")) || (tok = this._extractString(this.tags.VARIABLE_START))) {
            this.in_code = true;
            return token(TOKEN_VARIABLE_START, tok, lineno, colno);
          } else {
            tok = "";
            var data;
            var inComment = false;
            if (this._matches(this.tags.COMMENT_START)) {
              inComment = true;
              tok = this._extractString(this.tags.COMMENT_START);
            }
            while ((data = this._extractUntil(beginChars)) !== null) {
              tok += data;
              if ((this._matches(this.tags.BLOCK_START) || this._matches(this.tags.VARIABLE_START) || this._matches(this.tags.COMMENT_START)) && !inComment) {
                if (this.lstripBlocks && this._matches(this.tags.BLOCK_START) && this.colno > 0 && this.colno <= tok.length) {
                  var lastLine2 = tok.slice(-this.colno);
                  if (/^\s+$/.test(lastLine2)) {
                    tok = tok.slice(0, -this.colno);
                    if (!tok.length) {
                      return this.nextToken();
                    }
                  }
                }
                break;
              } else if (this._matches(this.tags.COMMENT_END)) {
                if (!inComment) {
                  throw new Error("unexpected end of comment");
                }
                tok += this._extractString(this.tags.COMMENT_END);
                break;
              } else {
                tok += this.current();
                this.forward();
              }
            }
            if (data === null && inComment) {
              throw new Error("expected end of comment, got end of file");
            }
            return token(inComment ? TOKEN_COMMENT : TOKEN_DATA, tok, lineno, colno);
          }
        }
      };
      _proto._parseString = function _parseString(delimiter2) {
        this.forward();
        var str2 = "";
        while (!this.isFinished() && this.current() !== delimiter2) {
          var cur = this.current();
          if (cur === "\\") {
            this.forward();
            switch (this.current()) {
              case "n":
                str2 += "\n";
                break;
              case "t":
                str2 += "	";
                break;
              case "r":
                str2 += "\r";
                break;
              default:
                str2 += this.current();
            }
            this.forward();
          } else {
            str2 += cur;
            this.forward();
          }
        }
        this.forward();
        return str2;
      };
      _proto._matches = function _matches(str2) {
        if (this.index + str2.length > this.len) {
          return null;
        }
        var m2 = this.str.slice(this.index, this.index + str2.length);
        return m2 === str2;
      };
      _proto._extractString = function _extractString(str2) {
        if (this._matches(str2)) {
          this.forwardN(str2.length);
          return str2;
        }
        return null;
      };
      _proto._extractUntil = function _extractUntil(charString) {
        return this._extractMatching(true, charString || "");
      };
      _proto._extract = function _extract(charString) {
        return this._extractMatching(false, charString);
      };
      _proto._extractMatching = function _extractMatching(breakOnMatch, charString) {
        if (this.isFinished()) {
          return null;
        }
        var first2 = charString.indexOf(this.current());
        if (breakOnMatch && first2 === -1 || !breakOnMatch && first2 !== -1) {
          var t2 = this.current();
          this.forward();
          var idx = charString.indexOf(this.current());
          while ((breakOnMatch && idx === -1 || !breakOnMatch && idx !== -1) && !this.isFinished()) {
            t2 += this.current();
            this.forward();
            idx = charString.indexOf(this.current());
          }
          return t2;
        }
        return "";
      };
      _proto._extractRegex = function _extractRegex(regex2) {
        var matches4 = this.currentStr().match(regex2);
        if (!matches4) {
          return null;
        }
        this.forwardN(matches4[0].length);
        return matches4;
      };
      _proto.isFinished = function isFinished() {
        return this.index >= this.len;
      };
      _proto.forwardN = function forwardN(n) {
        for (var i2 = 0; i2 < n; i2++) {
          this.forward();
        }
      };
      _proto.forward = function forward() {
        this.index++;
        if (this.previous() === "\n") {
          this.lineno++;
          this.colno = 0;
        } else {
          this.colno++;
        }
      };
      _proto.backN = function backN(n) {
        for (var i2 = 0; i2 < n; i2++) {
          this.back();
        }
      };
      _proto.back = function back() {
        this.index--;
        if (this.current() === "\n") {
          this.lineno--;
          var idx = this.src.lastIndexOf("\n", this.index - 1);
          if (idx === -1) {
            this.colno = this.index;
          } else {
            this.colno = this.index - idx;
          }
        } else {
          this.colno--;
        }
      };
      _proto.current = function current2() {
        if (!this.isFinished()) {
          return this.str.charAt(this.index);
        }
        return "";
      };
      _proto.currentStr = function currentStr() {
        if (!this.isFinished()) {
          return this.str.substr(this.index);
        }
        return "";
      };
      _proto.previous = function previous() {
        return this.str.charAt(this.index - 1);
      };
      return Tokenizer3;
    })();
    module2.exports = {
      lex: function lex(src, opts) {
        return new Tokenizer2(src, opts);
      },
      TOKEN_STRING,
      TOKEN_WHITESPACE,
      TOKEN_DATA,
      TOKEN_BLOCK_START,
      TOKEN_BLOCK_END,
      TOKEN_VARIABLE_START,
      TOKEN_VARIABLE_END,
      TOKEN_COMMENT,
      TOKEN_LEFT_PAREN,
      TOKEN_RIGHT_PAREN,
      TOKEN_LEFT_BRACKET,
      TOKEN_RIGHT_BRACKET,
      TOKEN_LEFT_CURLY,
      TOKEN_RIGHT_CURLY,
      TOKEN_OPERATOR,
      TOKEN_COMMA,
      TOKEN_COLON,
      TOKEN_TILDE,
      TOKEN_PIPE,
      TOKEN_INT,
      TOKEN_FLOAT,
      TOKEN_BOOLEAN,
      TOKEN_NONE,
      TOKEN_SYMBOL,
      TOKEN_SPECIAL,
      TOKEN_REGEX
    };
  }
});

// ../../node_modules/nunjucks/src/object.js
var require_object = __commonJS({
  "../../node_modules/nunjucks/src/object.js"(exports2, module2) {
    "use strict";
    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, _toPropertyKey(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 _toPropertyKey(arg2) {
      var key2 = _toPrimitive(arg2, "string");
      return typeof key2 === "symbol" ? key2 : String(key2);
    }
    function _toPrimitive(input3, hint) {
      if (typeof input3 !== "object" || input3 === null) return input3;
      var prim = input3[Symbol.toPrimitive];
      if (prim !== void 0) {
        var res = prim.call(input3, hint || "default");
        if (typeof res !== "object") return res;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return (hint === "string" ? String : Number)(input3);
    }
    function _inheritsLoose(subClass, superClass) {
      subClass.prototype = Object.create(superClass.prototype);
      subClass.prototype.constructor = subClass;
      _setPrototypeOf(subClass, superClass);
    }
    function _setPrototypeOf(o, p5) {
      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p6) {
        o2.__proto__ = p6;
        return o2;
      };
      return _setPrototypeOf(o, p5);
    }
    var EventEmitter4 = require("events");
    var lib = require_lib17();
    function parentWrap(parent2, prop) {
      if (typeof parent2 !== "function" || typeof prop !== "function") {
        return prop;
      }
      return function wrap4() {
        var tmp = this.parent;
        this.parent = parent2;
        var res = prop.apply(this, arguments);
        this.parent = tmp;
        return res;
      };
    }
    function extendClass(cls, name3, props) {
      props = props || {};
      lib.keys(props).forEach(function(k) {
        props[k] = parentWrap(cls.prototype[k], props[k]);
      });
      var subclass = /* @__PURE__ */ (function(_cls) {
        _inheritsLoose(subclass2, _cls);
        function subclass2() {
          return _cls.apply(this, arguments) || this;
        }
        _createClass(subclass2, [{
          key: "typename",
          get: function get() {
            return name3;
          }
        }]);
        return subclass2;
      })(cls);
      lib._assign(subclass.prototype, props);
      return subclass;
    }
    var Obj = /* @__PURE__ */ (function() {
      function Obj2() {
        this.init.apply(this, arguments);
      }
      var _proto = Obj2.prototype;
      _proto.init = function init4() {
      };
      Obj2.extend = function extend5(name3, props) {
        if (typeof name3 === "object") {
          props = name3;
          name3 = "anonymous";
        }
        return extendClass(this, name3, props);
      };
      _createClass(Obj2, [{
        key: "typename",
        get: function get() {
          return this.constructor.name;
        }
      }]);
      return Obj2;
    })();
    var EmitterObj = /* @__PURE__ */ (function(_EventEmitter) {
      _inheritsLoose(EmitterObj2, _EventEmitter);
      function EmitterObj2() {
        var _this2;
        var _this;
        _this = _EventEmitter.call(this) || this;
        (_this2 = _this).init.apply(_this2, arguments);
        return _this;
      }
      var _proto2 = EmitterObj2.prototype;
      _proto2.init = function init4() {
      };
      EmitterObj2.extend = function extend5(name3, props) {
        if (typeof name3 === "object") {
          props = name3;
          name3 = "anonymous";
        }
        return extendClass(this, name3, props);
      };
      _createClass(EmitterObj2, [{
        key: "typename",
        get: function get() {
          return this.constructor.name;
        }
      }]);
      return EmitterObj2;
    })(EventEmitter4);
    module2.exports = {
      Obj,
      EmitterObj
    };
  }
});

// ../../node_modules/nunjucks/src/nodes.js
var require_nodes = __commonJS({
  "../../node_modules/nunjucks/src/nodes.js"(exports2, module2) {
    "use strict";
    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, _toPropertyKey(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 _toPropertyKey(arg2) {
      var key2 = _toPrimitive(arg2, "string");
      return typeof key2 === "symbol" ? key2 : String(key2);
    }
    function _toPrimitive(input3, hint) {
      if (typeof input3 !== "object" || input3 === null) return input3;
      var prim = input3[Symbol.toPrimitive];
      if (prim !== void 0) {
        var res = prim.call(input3, hint || "default");
        if (typeof res !== "object") return res;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return (hint === "string" ? String : Number)(input3);
    }
    function _inheritsLoose(subClass, superClass) {
      subClass.prototype = Object.create(superClass.prototype);
      subClass.prototype.constructor = subClass;
      _setPrototypeOf(subClass, superClass);
    }
    function _setPrototypeOf(o, p5) {
      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p6) {
        o2.__proto__ = p6;
        return o2;
      };
      return _setPrototypeOf(o, p5);
    }
    var _require = require_object();
    var Obj = _require.Obj;
    function traverseAndCheck(obj, type2, results) {
      if (obj instanceof type2) {
        results.push(obj);
      }
      if (obj instanceof Node) {
        obj.findAll(type2, results);
      }
    }
    var Node = /* @__PURE__ */ (function(_Obj) {
      _inheritsLoose(Node2, _Obj);
      function Node2() {
        return _Obj.apply(this, arguments) || this;
      }
      var _proto = Node2.prototype;
      _proto.init = function init4(lineno, colno) {
        var _arguments = arguments, _this = this;
        for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
          args[_key - 2] = arguments[_key];
        }
        this.lineno = lineno;
        this.colno = colno;
        this.fields.forEach(function(field, i2) {
          var val = _arguments[i2 + 2];
          if (val === void 0) {
            val = null;
          }
          _this[field] = val;
        });
      };
      _proto.findAll = function findAll(type2, results) {
        var _this2 = this;
        results = results || [];
        if (this instanceof NodeList) {
          this.children.forEach(function(child) {
            return traverseAndCheck(child, type2, results);
          });
        } else {
          this.fields.forEach(function(field) {
            return traverseAndCheck(_this2[field], type2, results);
          });
        }
        return results;
      };
      _proto.iterFields = function iterFields(func) {
        var _this3 = this;
        this.fields.forEach(function(field) {
          func(_this3[field], field);
        });
      };
      return Node2;
    })(Obj);
    var Value = /* @__PURE__ */ (function(_Node) {
      _inheritsLoose(Value2, _Node);
      function Value2() {
        return _Node.apply(this, arguments) || this;
      }
      _createClass(Value2, [{
        key: "typename",
        get: function get() {
          return "Value";
        }
      }, {
        key: "fields",
        get: function get() {
          return ["value"];
        }
      }]);
      return Value2;
    })(Node);
    var NodeList = /* @__PURE__ */ (function(_Node2) {
      _inheritsLoose(NodeList2, _Node2);
      function NodeList2() {
        return _Node2.apply(this, arguments) || this;
      }
      var _proto2 = NodeList2.prototype;
      _proto2.init = function init4(lineno, colno, nodes) {
        _Node2.prototype.init.call(this, lineno, colno, nodes || []);
      };
      _proto2.addChild = function addChild3(node3) {
        this.children.push(node3);
      };
      _createClass(NodeList2, [{
        key: "typename",
        get: function get() {
          return "NodeList";
        }
      }, {
        key: "fields",
        get: function get() {
          return ["children"];
        }
      }]);
      return NodeList2;
    })(Node);
    var Root = NodeList.extend("Root");
    var Literal = Value.extend("Literal");
    var _Symbol = Value.extend("Symbol");
    var Group = NodeList.extend("Group");
    var ArrayNode = NodeList.extend("Array");
    var Pair = Node.extend("Pair", {
      fields: ["key", "value"]
    });
    var Dict = NodeList.extend("Dict");
    var LookupVal = Node.extend("LookupVal", {
      fields: ["target", "val"]
    });
    var If = Node.extend("If", {
      fields: ["cond", "body", "else_"]
    });
    var IfAsync = If.extend("IfAsync");
    var InlineIf = Node.extend("InlineIf", {
      fields: ["cond", "body", "else_"]
    });
    var For = Node.extend("For", {
      fields: ["arr", "name", "body", "else_"]
    });
    var AsyncEach = For.extend("AsyncEach");
    var AsyncAll = For.extend("AsyncAll");
    var Macro = Node.extend("Macro", {
      fields: ["name", "args", "body"]
    });
    var Caller = Macro.extend("Caller");
    var Import = Node.extend("Import", {
      fields: ["template", "target", "withContext"]
    });
    var FromImport = /* @__PURE__ */ (function(_Node3) {
      _inheritsLoose(FromImport2, _Node3);
      function FromImport2() {
        return _Node3.apply(this, arguments) || this;
      }
      var _proto3 = FromImport2.prototype;
      _proto3.init = function init4(lineno, colno, template, names, withContext) {
        _Node3.prototype.init.call(this, lineno, colno, template, names || new NodeList(), withContext);
      };
      _createClass(FromImport2, [{
        key: "typename",
        get: function get() {
          return "FromImport";
        }
      }, {
        key: "fields",
        get: function get() {
          return ["template", "names", "withContext"];
        }
      }]);
      return FromImport2;
    })(Node);
    var FunCall = Node.extend("FunCall", {
      fields: ["name", "args"]
    });
    var Filter = FunCall.extend("Filter");
    var FilterAsync = Filter.extend("FilterAsync", {
      fields: ["name", "args", "symbol"]
    });
    var KeywordArgs = Dict.extend("KeywordArgs");
    var Block = Node.extend("Block", {
      fields: ["name", "body"]
    });
    var Super = Node.extend("Super", {
      fields: ["blockName", "symbol"]
    });
    var TemplateRef = Node.extend("TemplateRef", {
      fields: ["template"]
    });
    var Extends = TemplateRef.extend("Extends");
    var Include = Node.extend("Include", {
      fields: ["template", "ignoreMissing"]
    });
    var Set2 = Node.extend("Set", {
      fields: ["targets", "value"]
    });
    var Switch = Node.extend("Switch", {
      fields: ["expr", "cases", "default"]
    });
    var Case = Node.extend("Case", {
      fields: ["cond", "body"]
    });
    var Output = NodeList.extend("Output");
    var Capture = Node.extend("Capture", {
      fields: ["body"]
    });
    var TemplateData = Literal.extend("TemplateData");
    var UnaryOp = Node.extend("UnaryOp", {
      fields: ["target"]
    });
    var BinOp = Node.extend("BinOp", {
      fields: ["left", "right"]
    });
    var In = BinOp.extend("In");
    var Is = BinOp.extend("Is");
    var Or = BinOp.extend("Or");
    var And = BinOp.extend("And");
    var Not = UnaryOp.extend("Not");
    var Add = BinOp.extend("Add");
    var Concat = BinOp.extend("Concat");
    var Sub = BinOp.extend("Sub");
    var Mul = BinOp.extend("Mul");
    var Div = BinOp.extend("Div");
    var FloorDiv = BinOp.extend("FloorDiv");
    var Mod = BinOp.extend("Mod");
    var Pow = BinOp.extend("Pow");
    var Neg = UnaryOp.extend("Neg");
    var Pos = UnaryOp.extend("Pos");
    var Compare = Node.extend("Compare", {
      fields: ["expr", "ops"]
    });
    var CompareOperand = Node.extend("CompareOperand", {
      fields: ["expr", "type"]
    });
    var CallExtension = Node.extend("CallExtension", {
      init: function init4(ext2, prop, args, contentArgs) {
        this.parent();
        this.extName = ext2.__name || ext2;
        this.prop = prop;
        this.args = args || new NodeList();
        this.contentArgs = contentArgs || [];
        this.autoescape = ext2.autoescape;
      },
      fields: ["extName", "prop", "args", "contentArgs"]
    });
    var CallExtensionAsync = CallExtension.extend("CallExtensionAsync");
    function print(str2, indent2, inline) {
      var lines = str2.split("\n");
      lines.forEach(function(line2, i2) {
        if (line2 && (inline && i2 > 0 || !inline)) {
          process.stdout.write(" ".repeat(indent2));
        }
        var nl2 = i2 === lines.length - 1 ? "" : "\n";
        process.stdout.write("" + line2 + nl2);
      });
    }
    function printNodes(node3, indent2) {
      indent2 = indent2 || 0;
      print(node3.typename + ": ", indent2);
      if (node3 instanceof NodeList) {
        print("\n");
        node3.children.forEach(function(n) {
          printNodes(n, indent2 + 2);
        });
      } else if (node3 instanceof CallExtension) {
        print(node3.extName + "." + node3.prop + "\n");
        if (node3.args) {
          printNodes(node3.args, indent2 + 2);
        }
        if (node3.contentArgs) {
          node3.contentArgs.forEach(function(n) {
            printNodes(n, indent2 + 2);
          });
        }
      } else {
        var nodes = [];
        var props = null;
        node3.iterFields(function(val, fieldName) {
          if (val instanceof Node) {
            nodes.push([fieldName, val]);
          } else {
            props = props || {};
            props[fieldName] = val;
          }
        });
        if (props) {
          print(JSON.stringify(props, null, 2) + "\n", null, true);
        } else {
          print("\n");
        }
        nodes.forEach(function(_ref) {
          var fieldName = _ref[0], n = _ref[1];
          print("[" + fieldName + "] =>", indent2 + 2);
          printNodes(n, indent2 + 4);
        });
      }
    }
    module2.exports = {
      Node,
      Root,
      NodeList,
      Value,
      Literal,
      Symbol: _Symbol,
      Group,
      Array: ArrayNode,
      Pair,
      Dict,
      Output,
      Capture,
      TemplateData,
      If,
      IfAsync,
      InlineIf,
      For,
      AsyncEach,
      AsyncAll,
      Macro,
      Caller,
      Import,
      FromImport,
      FunCall,
      Filter,
      FilterAsync,
      KeywordArgs,
      Block,
      Super,
      Extends,
      Include,
      Set: Set2,
      Switch,
      Case,
      LookupVal,
      BinOp,
      In,
      Is,
      Or,
      And,
      Not,
      Add,
      Concat,
      Sub,
      Mul,
      Div,
      FloorDiv,
      Mod,
      Pow,
      Neg,
      Pos,
      Compare,
      CompareOperand,
      CallExtension,
      CallExtensionAsync,
      printNodes
    };
  }
});

// ../../node_modules/nunjucks/src/parser.js
var require_parser4 = __commonJS({
  "../../node_modules/nunjucks/src/parser.js"(exports2, module2) {
    "use strict";
    function _inheritsLoose(subClass, superClass) {
      subClass.prototype = Object.create(superClass.prototype);
      subClass.prototype.constructor = subClass;
      _setPrototypeOf(subClass, superClass);
    }
    function _setPrototypeOf(o, p5) {
      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p6) {
        o2.__proto__ = p6;
        return o2;
      };
      return _setPrototypeOf(o, p5);
    }
    var lexer = require_lexer();
    var nodes = require_nodes();
    var Obj = require_object().Obj;
    var lib = require_lib17();
    var Parser3 = /* @__PURE__ */ (function(_Obj) {
      _inheritsLoose(Parser4, _Obj);
      function Parser4() {
        return _Obj.apply(this, arguments) || this;
      }
      var _proto = Parser4.prototype;
      _proto.init = function init4(tokens) {
        this.tokens = tokens;
        this.peeked = null;
        this.breakOnBlocks = null;
        this.dropLeadingWhitespace = false;
        this.extensions = [];
      };
      _proto.nextToken = function nextToken(withWhitespace) {
        var tok;
        if (this.peeked) {
          if (!withWhitespace && this.peeked.type === lexer.TOKEN_WHITESPACE) {
            this.peeked = null;
          } else {
            tok = this.peeked;
            this.peeked = null;
            return tok;
          }
        }
        tok = this.tokens.nextToken();
        if (!withWhitespace) {
          while (tok && tok.type === lexer.TOKEN_WHITESPACE) {
            tok = this.tokens.nextToken();
          }
        }
        return tok;
      };
      _proto.peekToken = function peekToken() {
        this.peeked = this.peeked || this.nextToken();
        return this.peeked;
      };
      _proto.pushToken = function pushToken(tok) {
        if (this.peeked) {
          throw new Error("pushToken: can only push one token on between reads");
        }
        this.peeked = tok;
      };
      _proto.error = function error(msg, lineno, colno) {
        if (lineno === void 0 || colno === void 0) {
          var tok = this.peekToken() || {};
          lineno = tok.lineno;
          colno = tok.colno;
        }
        if (lineno !== void 0) {
          lineno += 1;
        }
        if (colno !== void 0) {
          colno += 1;
        }
        return new lib.TemplateError(msg, lineno, colno);
      };
      _proto.fail = function fail(msg, lineno, colno) {
        throw this.error(msg, lineno, colno);
      };
      _proto.skip = function skip(type2) {
        var tok = this.nextToken();
        if (!tok || tok.type !== type2) {
          this.pushToken(tok);
          return false;
        }
        return true;
      };
      _proto.expect = function expect(type2) {
        var tok = this.nextToken();
        if (tok.type !== type2) {
          this.fail("expected " + type2 + ", got " + tok.type, tok.lineno, tok.colno);
        }
        return tok;
      };
      _proto.skipValue = function skipValue(type2, val) {
        var tok = this.nextToken();
        if (!tok || tok.type !== type2 || tok.value !== val) {
          this.pushToken(tok);
          return false;
        }
        return true;
      };
      _proto.skipSymbol = function skipSymbol(val) {
        return this.skipValue(lexer.TOKEN_SYMBOL, val);
      };
      _proto.advanceAfterBlockEnd = function advanceAfterBlockEnd(name3) {
        var tok;
        if (!name3) {
          tok = this.peekToken();
          if (!tok) {
            this.fail("unexpected end of file");
          }
          if (tok.type !== lexer.TOKEN_SYMBOL) {
            this.fail("advanceAfterBlockEnd: expected symbol token or explicit name to be passed");
          }
          name3 = this.nextToken().value;
        }
        tok = this.nextToken();
        if (tok && tok.type === lexer.TOKEN_BLOCK_END) {
          if (tok.value.charAt(0) === "-") {
            this.dropLeadingWhitespace = true;
          }
        } else {
          this.fail("expected block end in " + name3 + " statement");
        }
        return tok;
      };
      _proto.advanceAfterVariableEnd = function advanceAfterVariableEnd() {
        var tok = this.nextToken();
        if (tok && tok.type === lexer.TOKEN_VARIABLE_END) {
          this.dropLeadingWhitespace = tok.value.charAt(tok.value.length - this.tokens.tags.VARIABLE_END.length - 1) === "-";
        } else {
          this.pushToken(tok);
          this.fail("expected variable end");
        }
      };
      _proto.parseFor = function parseFor() {
        var forTok = this.peekToken();
        var node3;
        var endBlock;
        if (this.skipSymbol("for")) {
          node3 = new nodes.For(forTok.lineno, forTok.colno);
          endBlock = "endfor";
        } else if (this.skipSymbol("asyncEach")) {
          node3 = new nodes.AsyncEach(forTok.lineno, forTok.colno);
          endBlock = "endeach";
        } else if (this.skipSymbol("asyncAll")) {
          node3 = new nodes.AsyncAll(forTok.lineno, forTok.colno);
          endBlock = "endall";
        } else {
          this.fail("parseFor: expected for{Async}", forTok.lineno, forTok.colno);
        }
        node3.name = this.parsePrimary();
        if (!(node3.name instanceof nodes.Symbol)) {
          this.fail("parseFor: variable name expected for loop");
        }
        var type2 = this.peekToken().type;
        if (type2 === lexer.TOKEN_COMMA) {
          var key2 = node3.name;
          node3.name = new nodes.Array(key2.lineno, key2.colno);
          node3.name.addChild(key2);
          while (this.skip(lexer.TOKEN_COMMA)) {
            var prim = this.parsePrimary();
            node3.name.addChild(prim);
          }
        }
        if (!this.skipSymbol("in")) {
          this.fail('parseFor: expected "in" keyword for loop', forTok.lineno, forTok.colno);
        }
        node3.arr = this.parseExpression();
        this.advanceAfterBlockEnd(forTok.value);
        node3.body = this.parseUntilBlocks(endBlock, "else");
        if (this.skipSymbol("else")) {
          this.advanceAfterBlockEnd("else");
          node3.else_ = this.parseUntilBlocks(endBlock);
        }
        this.advanceAfterBlockEnd();
        return node3;
      };
      _proto.parseMacro = function parseMacro() {
        var macroTok = this.peekToken();
        if (!this.skipSymbol("macro")) {
          this.fail("expected macro");
        }
        var name3 = this.parsePrimary(true);
        var args = this.parseSignature();
        var node3 = new nodes.Macro(macroTok.lineno, macroTok.colno, name3, args);
        this.advanceAfterBlockEnd(macroTok.value);
        node3.body = this.parseUntilBlocks("endmacro");
        this.advanceAfterBlockEnd();
        return node3;
      };
      _proto.parseCall = function parseCall() {
        var callTok = this.peekToken();
        if (!this.skipSymbol("call")) {
          this.fail("expected call");
        }
        var callerArgs = this.parseSignature(true) || new nodes.NodeList();
        var macroCall = this.parsePrimary();
        this.advanceAfterBlockEnd(callTok.value);
        var body3 = this.parseUntilBlocks("endcall");
        this.advanceAfterBlockEnd();
        var callerName = new nodes.Symbol(callTok.lineno, callTok.colno, "caller");
        var callerNode = new nodes.Caller(callTok.lineno, callTok.colno, callerName, callerArgs, body3);
        var args = macroCall.args.children;
        if (!(args[args.length - 1] instanceof nodes.KeywordArgs)) {
          args.push(new nodes.KeywordArgs());
        }
        var kwargs = args[args.length - 1];
        kwargs.addChild(new nodes.Pair(callTok.lineno, callTok.colno, callerName, callerNode));
        return new nodes.Output(callTok.lineno, callTok.colno, [macroCall]);
      };
      _proto.parseWithContext = function parseWithContext() {
        var tok = this.peekToken();
        var withContext = null;
        if (this.skipSymbol("with")) {
          withContext = true;
        } else if (this.skipSymbol("without")) {
          withContext = false;
        }
        if (withContext !== null) {
          if (!this.skipSymbol("context")) {
            this.fail("parseFrom: expected context after with/without", tok.lineno, tok.colno);
          }
        }
        return withContext;
      };
      _proto.parseImport = function parseImport() {
        var importTok = this.peekToken();
        if (!this.skipSymbol("import")) {
          this.fail("parseImport: expected import", importTok.lineno, importTok.colno);
        }
        var template = this.parseExpression();
        if (!this.skipSymbol("as")) {
          this.fail('parseImport: expected "as" keyword', importTok.lineno, importTok.colno);
        }
        var target = this.parseExpression();
        var withContext = this.parseWithContext();
        var node3 = new nodes.Import(importTok.lineno, importTok.colno, template, target, withContext);
        this.advanceAfterBlockEnd(importTok.value);
        return node3;
      };
      _proto.parseFrom = function parseFrom() {
        var fromTok = this.peekToken();
        if (!this.skipSymbol("from")) {
          this.fail("parseFrom: expected from");
        }
        var template = this.parseExpression();
        if (!this.skipSymbol("import")) {
          this.fail("parseFrom: expected import", fromTok.lineno, fromTok.colno);
        }
        var names = new nodes.NodeList();
        var withContext;
        while (1) {
          var nextTok = this.peekToken();
          if (nextTok.type === lexer.TOKEN_BLOCK_END) {
            if (!names.children.length) {
              this.fail("parseFrom: Expected at least one import name", fromTok.lineno, fromTok.colno);
            }
            if (nextTok.value.charAt(0) === "-") {
              this.dropLeadingWhitespace = true;
            }
            this.nextToken();
            break;
          }
          if (names.children.length > 0 && !this.skip(lexer.TOKEN_COMMA)) {
            this.fail("parseFrom: expected comma", fromTok.lineno, fromTok.colno);
          }
          var name3 = this.parsePrimary();
          if (name3.value.charAt(0) === "_") {
            this.fail("parseFrom: names starting with an underscore cannot be imported", name3.lineno, name3.colno);
          }
          if (this.skipSymbol("as")) {
            var alias = this.parsePrimary();
            names.addChild(new nodes.Pair(name3.lineno, name3.colno, name3, alias));
          } else {
            names.addChild(name3);
          }
          withContext = this.parseWithContext();
        }
        return new nodes.FromImport(fromTok.lineno, fromTok.colno, template, names, withContext);
      };
      _proto.parseBlock = function parseBlock() {
        var tag = this.peekToken();
        if (!this.skipSymbol("block")) {
          this.fail("parseBlock: expected block", tag.lineno, tag.colno);
        }
        var node3 = new nodes.Block(tag.lineno, tag.colno);
        node3.name = this.parsePrimary();
        if (!(node3.name instanceof nodes.Symbol)) {
          this.fail("parseBlock: variable name expected", tag.lineno, tag.colno);
        }
        this.advanceAfterBlockEnd(tag.value);
        node3.body = this.parseUntilBlocks("endblock");
        this.skipSymbol("endblock");
        this.skipSymbol(node3.name.value);
        var tok = this.peekToken();
        if (!tok) {
          this.fail("parseBlock: expected endblock, got end of file");
        }
        this.advanceAfterBlockEnd(tok.value);
        return node3;
      };
      _proto.parseExtends = function parseExtends() {
        var tagName = "extends";
        var tag = this.peekToken();
        if (!this.skipSymbol(tagName)) {
          this.fail("parseTemplateRef: expected " + tagName);
        }
        var node3 = new nodes.Extends(tag.lineno, tag.colno);
        node3.template = this.parseExpression();
        this.advanceAfterBlockEnd(tag.value);
        return node3;
      };
      _proto.parseInclude = function parseInclude() {
        var tagName = "include";
        var tag = this.peekToken();
        if (!this.skipSymbol(tagName)) {
          this.fail("parseInclude: expected " + tagName);
        }
        var node3 = new nodes.Include(tag.lineno, tag.colno);
        node3.template = this.parseExpression();
        if (this.skipSymbol("ignore") && this.skipSymbol("missing")) {
          node3.ignoreMissing = true;
        }
        this.advanceAfterBlockEnd(tag.value);
        return node3;
      };
      _proto.parseIf = function parseIf() {
        var tag = this.peekToken();
        var node3;
        if (this.skipSymbol("if") || this.skipSymbol("elif") || this.skipSymbol("elseif")) {
          node3 = new nodes.If(tag.lineno, tag.colno);
        } else if (this.skipSymbol("ifAsync")) {
          node3 = new nodes.IfAsync(tag.lineno, tag.colno);
        } else {
          this.fail("parseIf: expected if, elif, or elseif", tag.lineno, tag.colno);
        }
        node3.cond = this.parseExpression();
        this.advanceAfterBlockEnd(tag.value);
        node3.body = this.parseUntilBlocks("elif", "elseif", "else", "endif");
        var tok = this.peekToken();
        switch (tok && tok.value) {
          case "elseif":
          case "elif":
            node3.else_ = this.parseIf();
            break;
          case "else":
            this.advanceAfterBlockEnd();
            node3.else_ = this.parseUntilBlocks("endif");
            this.advanceAfterBlockEnd();
            break;
          case "endif":
            node3.else_ = null;
            this.advanceAfterBlockEnd();
            break;
          default:
            this.fail("parseIf: expected elif, else, or endif, got end of file");
        }
        return node3;
      };
      _proto.parseSet = function parseSet() {
        var tag = this.peekToken();
        if (!this.skipSymbol("set")) {
          this.fail("parseSet: expected set", tag.lineno, tag.colno);
        }
        var node3 = new nodes.Set(tag.lineno, tag.colno, []);
        var target;
        while (target = this.parsePrimary()) {
          node3.targets.push(target);
          if (!this.skip(lexer.TOKEN_COMMA)) {
            break;
          }
        }
        if (!this.skipValue(lexer.TOKEN_OPERATOR, "=")) {
          if (!this.skip(lexer.TOKEN_BLOCK_END)) {
            this.fail("parseSet: expected = or block end in set tag", tag.lineno, tag.colno);
          } else {
            node3.body = new nodes.Capture(tag.lineno, tag.colno, this.parseUntilBlocks("endset"));
            node3.value = null;
            this.advanceAfterBlockEnd();
          }
        } else {
          node3.value = this.parseExpression();
          this.advanceAfterBlockEnd(tag.value);
        }
        return node3;
      };
      _proto.parseSwitch = function parseSwitch() {
        var switchStart = "switch";
        var switchEnd = "endswitch";
        var caseStart = "case";
        var caseDefault = "default";
        var tag = this.peekToken();
        if (!this.skipSymbol(switchStart) && !this.skipSymbol(caseStart) && !this.skipSymbol(caseDefault)) {
          this.fail('parseSwitch: expected "switch," "case" or "default"', tag.lineno, tag.colno);
        }
        var expr = this.parseExpression();
        this.advanceAfterBlockEnd(switchStart);
        this.parseUntilBlocks(caseStart, caseDefault, switchEnd);
        var tok = this.peekToken();
        var cases = [];
        var defaultCase;
        do {
          this.skipSymbol(caseStart);
          var cond = this.parseExpression();
          this.advanceAfterBlockEnd(switchStart);
          var body3 = this.parseUntilBlocks(caseStart, caseDefault, switchEnd);
          cases.push(new nodes.Case(tok.line, tok.col, cond, body3));
          tok = this.peekToken();
        } while (tok && tok.value === caseStart);
        switch (tok.value) {
          case caseDefault:
            this.advanceAfterBlockEnd();
            defaultCase = this.parseUntilBlocks(switchEnd);
            this.advanceAfterBlockEnd();
            break;
          case switchEnd:
            this.advanceAfterBlockEnd();
            break;
          default:
            this.fail('parseSwitch: expected "case," "default" or "endswitch," got EOF.');
        }
        return new nodes.Switch(tag.lineno, tag.colno, expr, cases, defaultCase);
      };
      _proto.parseStatement = function parseStatement() {
        var tok = this.peekToken();
        var node3;
        if (tok.type !== lexer.TOKEN_SYMBOL) {
          this.fail("tag name expected", tok.lineno, tok.colno);
        }
        if (this.breakOnBlocks && lib.indexOf(this.breakOnBlocks, tok.value) !== -1) {
          return null;
        }
        switch (tok.value) {
          case "raw":
            return this.parseRaw();
          case "verbatim":
            return this.parseRaw("verbatim");
          case "if":
          case "ifAsync":
            return this.parseIf();
          case "for":
          case "asyncEach":
          case "asyncAll":
            return this.parseFor();
          case "block":
            return this.parseBlock();
          case "extends":
            return this.parseExtends();
          case "include":
            return this.parseInclude();
          case "set":
            return this.parseSet();
          case "macro":
            return this.parseMacro();
          case "call":
            return this.parseCall();
          case "import":
            return this.parseImport();
          case "from":
            return this.parseFrom();
          case "filter":
            return this.parseFilterStatement();
          case "switch":
            return this.parseSwitch();
          default:
            if (this.extensions.length) {
              for (var i2 = 0; i2 < this.extensions.length; i2++) {
                var ext2 = this.extensions[i2];
                if (lib.indexOf(ext2.tags || [], tok.value) !== -1) {
                  return ext2.parse(this, nodes, lexer);
                }
              }
            }
            this.fail("unknown block tag: " + tok.value, tok.lineno, tok.colno);
        }
        return node3;
      };
      _proto.parseRaw = function parseRaw(tagName) {
        tagName = tagName || "raw";
        var endTagName = "end" + tagName;
        var rawBlockRegex = new RegExp("([\\s\\S]*?){%\\s*(" + tagName + "|" + endTagName + ")\\s*(?=%})%}");
        var rawLevel = 1;
        var str2 = "";
        var matches4 = null;
        var begun = this.advanceAfterBlockEnd();
        while ((matches4 = this.tokens._extractRegex(rawBlockRegex)) && rawLevel > 0) {
          var all10 = matches4[0];
          var pre2 = matches4[1];
          var blockName = matches4[2];
          if (blockName === tagName) {
            rawLevel += 1;
          } else if (blockName === endTagName) {
            rawLevel -= 1;
          }
          if (rawLevel === 0) {
            str2 += pre2;
            this.tokens.backN(all10.length - pre2.length);
          } else {
            str2 += all10;
          }
        }
        return new nodes.Output(begun.lineno, begun.colno, [new nodes.TemplateData(begun.lineno, begun.colno, str2)]);
      };
      _proto.parsePostfix = function parsePostfix(node3) {
        var lookup2;
        var tok = this.peekToken();
        while (tok) {
          if (tok.type === lexer.TOKEN_LEFT_PAREN) {
            node3 = new nodes.FunCall(tok.lineno, tok.colno, node3, this.parseSignature());
          } else if (tok.type === lexer.TOKEN_LEFT_BRACKET) {
            lookup2 = this.parseAggregate();
            if (lookup2.children.length > 1) {
              this.fail("invalid index");
            }
            node3 = new nodes.LookupVal(tok.lineno, tok.colno, node3, lookup2.children[0]);
          } else if (tok.type === lexer.TOKEN_OPERATOR && tok.value === ".") {
            this.nextToken();
            var val = this.nextToken();
            if (val.type !== lexer.TOKEN_SYMBOL) {
              this.fail("expected name as lookup value, got " + val.value, val.lineno, val.colno);
            }
            lookup2 = new nodes.Literal(val.lineno, val.colno, val.value);
            node3 = new nodes.LookupVal(tok.lineno, tok.colno, node3, lookup2);
          } else {
            break;
          }
          tok = this.peekToken();
        }
        return node3;
      };
      _proto.parseExpression = function parseExpression() {
        var node3 = this.parseInlineIf();
        return node3;
      };
      _proto.parseInlineIf = function parseInlineIf() {
        var node3 = this.parseOr();
        if (this.skipSymbol("if")) {
          var condNode = this.parseOr();
          var bodyNode = node3;
          node3 = new nodes.InlineIf(node3.lineno, node3.colno);
          node3.body = bodyNode;
          node3.cond = condNode;
          if (this.skipSymbol("else")) {
            node3.else_ = this.parseOr();
          } else {
            node3.else_ = null;
          }
        }
        return node3;
      };
      _proto.parseOr = function parseOr() {
        var node3 = this.parseAnd();
        while (this.skipSymbol("or")) {
          var node22 = this.parseAnd();
          node3 = new nodes.Or(node3.lineno, node3.colno, node3, node22);
        }
        return node3;
      };
      _proto.parseAnd = function parseAnd() {
        var node3 = this.parseNot();
        while (this.skipSymbol("and")) {
          var node22 = this.parseNot();
          node3 = new nodes.And(node3.lineno, node3.colno, node3, node22);
        }
        return node3;
      };
      _proto.parseNot = function parseNot() {
        var tok = this.peekToken();
        if (this.skipSymbol("not")) {
          return new nodes.Not(tok.lineno, tok.colno, this.parseNot());
        }
        return this.parseIn();
      };
      _proto.parseIn = function parseIn() {
        var node3 = this.parseIs();
        while (1) {
          var tok = this.nextToken();
          if (!tok) {
            break;
          }
          var invert = tok.type === lexer.TOKEN_SYMBOL && tok.value === "not";
          if (!invert) {
            this.pushToken(tok);
          }
          if (this.skipSymbol("in")) {
            var node22 = this.parseIs();
            node3 = new nodes.In(node3.lineno, node3.colno, node3, node22);
            if (invert) {
              node3 = new nodes.Not(node3.lineno, node3.colno, node3);
            }
          } else {
            if (invert) {
              this.pushToken(tok);
            }
            break;
          }
        }
        return node3;
      };
      _proto.parseIs = function parseIs() {
        var node3 = this.parseCompare();
        if (this.skipSymbol("is")) {
          var not2 = this.skipSymbol("not");
          var node22 = this.parseCompare();
          node3 = new nodes.Is(node3.lineno, node3.colno, node3, node22);
          if (not2) {
            node3 = new nodes.Not(node3.lineno, node3.colno, node3);
          }
        }
        return node3;
      };
      _proto.parseCompare = function parseCompare() {
        var compareOps = ["==", "===", "!=", "!==", "<", ">", "<=", ">="];
        var expr = this.parseConcat();
        var ops = [];
        while (1) {
          var tok = this.nextToken();
          if (!tok) {
            break;
          } else if (compareOps.indexOf(tok.value) !== -1) {
            ops.push(new nodes.CompareOperand(tok.lineno, tok.colno, this.parseConcat(), tok.value));
          } else {
            this.pushToken(tok);
            break;
          }
        }
        if (ops.length) {
          return new nodes.Compare(ops[0].lineno, ops[0].colno, expr, ops);
        } else {
          return expr;
        }
      };
      _proto.parseConcat = function parseConcat() {
        var node3 = this.parseAdd();
        while (this.skipValue(lexer.TOKEN_TILDE, "~")) {
          var node22 = this.parseAdd();
          node3 = new nodes.Concat(node3.lineno, node3.colno, node3, node22);
        }
        return node3;
      };
      _proto.parseAdd = function parseAdd() {
        var node3 = this.parseSub();
        while (this.skipValue(lexer.TOKEN_OPERATOR, "+")) {
          var node22 = this.parseSub();
          node3 = new nodes.Add(node3.lineno, node3.colno, node3, node22);
        }
        return node3;
      };
      _proto.parseSub = function parseSub() {
        var node3 = this.parseMul();
        while (this.skipValue(lexer.TOKEN_OPERATOR, "-")) {
          var node22 = this.parseMul();
          node3 = new nodes.Sub(node3.lineno, node3.colno, node3, node22);
        }
        return node3;
      };
      _proto.parseMul = function parseMul() {
        var node3 = this.parseDiv();
        while (this.skipValue(lexer.TOKEN_OPERATOR, "*")) {
          var node22 = this.parseDiv();
          node3 = new nodes.Mul(node3.lineno, node3.colno, node3, node22);
        }
        return node3;
      };
      _proto.parseDiv = function parseDiv() {
        var node3 = this.parseFloorDiv();
        while (this.skipValue(lexer.TOKEN_OPERATOR, "/")) {
          var node22 = this.parseFloorDiv();
          node3 = new nodes.Div(node3.lineno, node3.colno, node3, node22);
        }
        return node3;
      };
      _proto.parseFloorDiv = function parseFloorDiv() {
        var node3 = this.parseMod();
        while (this.skipValue(lexer.TOKEN_OPERATOR, "//")) {
          var node22 = this.parseMod();
          node3 = new nodes.FloorDiv(node3.lineno, node3.colno, node3, node22);
        }
        return node3;
      };
      _proto.parseMod = function parseMod() {
        var node3 = this.parsePow();
        while (this.skipValue(lexer.TOKEN_OPERATOR, "%")) {
          var node22 = this.parsePow();
          node3 = new nodes.Mod(node3.lineno, node3.colno, node3, node22);
        }
        return node3;
      };
      _proto.parsePow = function parsePow() {
        var node3 = this.parseUnary();
        while (this.skipValue(lexer.TOKEN_OPERATOR, "**")) {
          var node22 = this.parseUnary();
          node3 = new nodes.Pow(node3.lineno, node3.colno, node3, node22);
        }
        return node3;
      };
      _proto.parseUnary = function parseUnary(noFilters) {
        var tok = this.peekToken();
        var node3;
        if (this.skipValue(lexer.TOKEN_OPERATOR, "-")) {
          node3 = new nodes.Neg(tok.lineno, tok.colno, this.parseUnary(true));
        } else if (this.skipValue(lexer.TOKEN_OPERATOR, "+")) {
          node3 = new nodes.Pos(tok.lineno, tok.colno, this.parseUnary(true));
        } else {
          node3 = this.parsePrimary();
        }
        if (!noFilters) {
          node3 = this.parseFilter(node3);
        }
        return node3;
      };
      _proto.parsePrimary = function parsePrimary(noPostfix) {
        var tok = this.nextToken();
        var val;
        var node3 = null;
        if (!tok) {
          this.fail("expected expression, got end of file");
        } else if (tok.type === lexer.TOKEN_STRING) {
          val = tok.value;
        } else if (tok.type === lexer.TOKEN_INT) {
          val = parseInt(tok.value, 10);
        } else if (tok.type === lexer.TOKEN_FLOAT) {
          val = parseFloat(tok.value);
        } else if (tok.type === lexer.TOKEN_BOOLEAN) {
          if (tok.value === "true") {
            val = true;
          } else if (tok.value === "false") {
            val = false;
          } else {
            this.fail("invalid boolean: " + tok.value, tok.lineno, tok.colno);
          }
        } else if (tok.type === lexer.TOKEN_NONE) {
          val = null;
        } else if (tok.type === lexer.TOKEN_REGEX) {
          val = new RegExp(tok.value.body, tok.value.flags);
        }
        if (val !== void 0) {
          node3 = new nodes.Literal(tok.lineno, tok.colno, val);
        } else if (tok.type === lexer.TOKEN_SYMBOL) {
          node3 = new nodes.Symbol(tok.lineno, tok.colno, tok.value);
        } else {
          this.pushToken(tok);
          node3 = this.parseAggregate();
        }
        if (!noPostfix) {
          node3 = this.parsePostfix(node3);
        }
        if (node3) {
          return node3;
        } else {
          throw this.error("unexpected token: " + tok.value, tok.lineno, tok.colno);
        }
      };
      _proto.parseFilterName = function parseFilterName() {
        var tok = this.expect(lexer.TOKEN_SYMBOL);
        var name3 = tok.value;
        while (this.skipValue(lexer.TOKEN_OPERATOR, ".")) {
          name3 += "." + this.expect(lexer.TOKEN_SYMBOL).value;
        }
        return new nodes.Symbol(tok.lineno, tok.colno, name3);
      };
      _proto.parseFilterArgs = function parseFilterArgs(node3) {
        if (this.peekToken().type === lexer.TOKEN_LEFT_PAREN) {
          var call = this.parsePostfix(node3);
          return call.args.children;
        }
        return [];
      };
      _proto.parseFilter = function parseFilter(node3) {
        while (this.skip(lexer.TOKEN_PIPE)) {
          var name3 = this.parseFilterName();
          node3 = new nodes.Filter(name3.lineno, name3.colno, name3, new nodes.NodeList(name3.lineno, name3.colno, [node3].concat(this.parseFilterArgs(node3))));
        }
        return node3;
      };
      _proto.parseFilterStatement = function parseFilterStatement() {
        var filterTok = this.peekToken();
        if (!this.skipSymbol("filter")) {
          this.fail("parseFilterStatement: expected filter");
        }
        var name3 = this.parseFilterName();
        var args = this.parseFilterArgs(name3);
        this.advanceAfterBlockEnd(filterTok.value);
        var body3 = new nodes.Capture(name3.lineno, name3.colno, this.parseUntilBlocks("endfilter"));
        this.advanceAfterBlockEnd();
        var node3 = new nodes.Filter(name3.lineno, name3.colno, name3, new nodes.NodeList(name3.lineno, name3.colno, [body3].concat(args)));
        return new nodes.Output(name3.lineno, name3.colno, [node3]);
      };
      _proto.parseAggregate = function parseAggregate() {
        var tok = this.nextToken();
        var node3;
        switch (tok.type) {
          case lexer.TOKEN_LEFT_PAREN:
            node3 = new nodes.Group(tok.lineno, tok.colno);
            break;
          case lexer.TOKEN_LEFT_BRACKET:
            node3 = new nodes.Array(tok.lineno, tok.colno);
            break;
          case lexer.TOKEN_LEFT_CURLY:
            node3 = new nodes.Dict(tok.lineno, tok.colno);
            break;
          default:
            return null;
        }
        while (1) {
          var type2 = this.peekToken().type;
          if (type2 === lexer.TOKEN_RIGHT_PAREN || type2 === lexer.TOKEN_RIGHT_BRACKET || type2 === lexer.TOKEN_RIGHT_CURLY) {
            this.nextToken();
            break;
          }
          if (node3.children.length > 0) {
            if (!this.skip(lexer.TOKEN_COMMA)) {
              this.fail("parseAggregate: expected comma after expression", tok.lineno, tok.colno);
            }
          }
          if (node3 instanceof nodes.Dict) {
            var key2 = this.parsePrimary();
            if (!this.skip(lexer.TOKEN_COLON)) {
              this.fail("parseAggregate: expected colon after dict key", tok.lineno, tok.colno);
            }
            var value = this.parseExpression();
            node3.addChild(new nodes.Pair(key2.lineno, key2.colno, key2, value));
          } else {
            var expr = this.parseExpression();
            node3.addChild(expr);
          }
        }
        return node3;
      };
      _proto.parseSignature = function parseSignature(tolerant, noParens) {
        var tok = this.peekToken();
        if (!noParens && tok.type !== lexer.TOKEN_LEFT_PAREN) {
          if (tolerant) {
            return null;
          } else {
            this.fail("expected arguments", tok.lineno, tok.colno);
          }
        }
        if (tok.type === lexer.TOKEN_LEFT_PAREN) {
          tok = this.nextToken();
        }
        var args = new nodes.NodeList(tok.lineno, tok.colno);
        var kwargs = new nodes.KeywordArgs(tok.lineno, tok.colno);
        var checkComma = false;
        while (1) {
          tok = this.peekToken();
          if (!noParens && tok.type === lexer.TOKEN_RIGHT_PAREN) {
            this.nextToken();
            break;
          } else if (noParens && tok.type === lexer.TOKEN_BLOCK_END) {
            break;
          }
          if (checkComma && !this.skip(lexer.TOKEN_COMMA)) {
            this.fail("parseSignature: expected comma after expression", tok.lineno, tok.colno);
          } else {
            var arg2 = this.parseExpression();
            if (this.skipValue(lexer.TOKEN_OPERATOR, "=")) {
              kwargs.addChild(new nodes.Pair(arg2.lineno, arg2.colno, arg2, this.parseExpression()));
            } else {
              args.addChild(arg2);
            }
          }
          checkComma = true;
        }
        if (kwargs.children.length) {
          args.addChild(kwargs);
        }
        return args;
      };
      _proto.parseUntilBlocks = function parseUntilBlocks() {
        var prev = this.breakOnBlocks;
        for (var _len = arguments.length, blockNames = new Array(_len), _key = 0; _key < _len; _key++) {
          blockNames[_key] = arguments[_key];
        }
        this.breakOnBlocks = blockNames;
        var ret = this.parse();
        this.breakOnBlocks = prev;
        return ret;
      };
      _proto.parseNodes = function parseNodes() {
        var tok;
        var buf = [];
        while (tok = this.nextToken()) {
          if (tok.type === lexer.TOKEN_DATA) {
            var data = tok.value;
            var nextToken = this.peekToken();
            var nextVal = nextToken && nextToken.value;
            if (this.dropLeadingWhitespace) {
              data = data.replace(/^\s*/, "");
              this.dropLeadingWhitespace = false;
            }
            if (nextToken && (nextToken.type === lexer.TOKEN_BLOCK_START && nextVal.charAt(nextVal.length - 1) === "-" || nextToken.type === lexer.TOKEN_VARIABLE_START && nextVal.charAt(this.tokens.tags.VARIABLE_START.length) === "-" || nextToken.type === lexer.TOKEN_COMMENT && nextVal.charAt(this.tokens.tags.COMMENT_START.length) === "-")) {
              data = data.replace(/\s*$/, "");
            }
            buf.push(new nodes.Output(tok.lineno, tok.colno, [new nodes.TemplateData(tok.lineno, tok.colno, data)]));
          } else if (tok.type === lexer.TOKEN_BLOCK_START) {
            this.dropLeadingWhitespace = false;
            var n = this.parseStatement();
            if (!n) {
              break;
            }
            buf.push(n);
          } else if (tok.type === lexer.TOKEN_VARIABLE_START) {
            var e2 = this.parseExpression();
            this.dropLeadingWhitespace = false;
            this.advanceAfterVariableEnd();
            buf.push(new nodes.Output(tok.lineno, tok.colno, [e2]));
          } else if (tok.type === lexer.TOKEN_COMMENT) {
            this.dropLeadingWhitespace = tok.value.charAt(tok.value.length - this.tokens.tags.COMMENT_END.length - 1) === "-";
          } else {
            this.fail("Unexpected token at top-level: " + tok.type, tok.lineno, tok.colno);
          }
        }
        return buf;
      };
      _proto.parse = function parse16() {
        return new nodes.NodeList(0, 0, this.parseNodes());
      };
      _proto.parseAsRoot = function parseAsRoot() {
        return new nodes.Root(0, 0, this.parseNodes());
      };
      return Parser4;
    })(Obj);
    module2.exports = {
      parse: function parse16(src, extensions, opts) {
        var p5 = new Parser3(lexer.lex(src, opts));
        if (extensions !== void 0) {
          p5.extensions = extensions;
        }
        return p5.parseAsRoot();
      },
      Parser: Parser3
    };
  }
});

// ../../node_modules/nunjucks/src/transformer.js
var require_transformer = __commonJS({
  "../../node_modules/nunjucks/src/transformer.js"(exports2, module2) {
    "use strict";
    var nodes = require_nodes();
    var lib = require_lib17();
    var sym = 0;
    function gensym() {
      return "hole_" + sym++;
    }
    function mapCOW(arr, func) {
      var res = null;
      for (var i2 = 0; i2 < arr.length; i2++) {
        var item = func(arr[i2]);
        if (item !== arr[i2]) {
          if (!res) {
            res = arr.slice();
          }
          res[i2] = item;
        }
      }
      return res || arr;
    }
    function walk2(ast, func, depthFirst) {
      if (!(ast instanceof nodes.Node)) {
        return ast;
      }
      if (!depthFirst) {
        var astT = func(ast);
        if (astT && astT !== ast) {
          return astT;
        }
      }
      if (ast instanceof nodes.NodeList) {
        var children = mapCOW(ast.children, function(node3) {
          return walk2(node3, func, depthFirst);
        });
        if (children !== ast.children) {
          ast = new nodes[ast.typename](ast.lineno, ast.colno, children);
        }
      } else if (ast instanceof nodes.CallExtension) {
        var args = walk2(ast.args, func, depthFirst);
        var contentArgs = mapCOW(ast.contentArgs, function(node3) {
          return walk2(node3, func, depthFirst);
        });
        if (args !== ast.args || contentArgs !== ast.contentArgs) {
          ast = new nodes[ast.typename](ast.extName, ast.prop, args, contentArgs);
        }
      } else {
        var props = ast.fields.map(function(field) {
          return ast[field];
        });
        var propsT = mapCOW(props, function(prop) {
          return walk2(prop, func, depthFirst);
        });
        if (propsT !== props) {
          ast = new nodes[ast.typename](ast.lineno, ast.colno);
          propsT.forEach(function(prop, i2) {
            ast[ast.fields[i2]] = prop;
          });
        }
      }
      return depthFirst ? func(ast) || ast : ast;
    }
    function depthWalk(ast, func) {
      return walk2(ast, func, true);
    }
    function _liftFilters(node3, asyncFilters, prop) {
      var children = [];
      var walked = depthWalk(prop ? node3[prop] : node3, function(descNode) {
        var symbol;
        if (descNode instanceof nodes.Block) {
          return descNode;
        } else if (descNode instanceof nodes.Filter && lib.indexOf(asyncFilters, descNode.name.value) !== -1 || descNode instanceof nodes.CallExtensionAsync) {
          symbol = new nodes.Symbol(descNode.lineno, descNode.colno, gensym());
          children.push(new nodes.FilterAsync(descNode.lineno, descNode.colno, descNode.name, descNode.args, symbol));
        }
        return symbol;
      });
      if (prop) {
        node3[prop] = walked;
      } else {
        node3 = walked;
      }
      if (children.length) {
        children.push(node3);
        return new nodes.NodeList(node3.lineno, node3.colno, children);
      } else {
        return node3;
      }
    }
    function liftFilters(ast, asyncFilters) {
      return depthWalk(ast, function(node3) {
        if (node3 instanceof nodes.Output) {
          return _liftFilters(node3, asyncFilters);
        } else if (node3 instanceof nodes.Set) {
          return _liftFilters(node3, asyncFilters, "value");
        } else if (node3 instanceof nodes.For) {
          return _liftFilters(node3, asyncFilters, "arr");
        } else if (node3 instanceof nodes.If) {
          return _liftFilters(node3, asyncFilters, "cond");
        } else if (node3 instanceof nodes.CallExtension) {
          return _liftFilters(node3, asyncFilters, "args");
        } else {
          return void 0;
        }
      });
    }
    function liftSuper(ast) {
      return walk2(ast, function(blockNode) {
        if (!(blockNode instanceof nodes.Block)) {
          return;
        }
        var hasSuper = false;
        var symbol = gensym();
        blockNode.body = walk2(blockNode.body, function(node3) {
          if (node3 instanceof nodes.FunCall && node3.name.value === "super") {
            hasSuper = true;
            return new nodes.Symbol(node3.lineno, node3.colno, symbol);
          }
        });
        if (hasSuper) {
          blockNode.body.children.unshift(new nodes.Super(0, 0, blockNode.name, new nodes.Symbol(0, 0, symbol)));
        }
      });
    }
    function convertStatements(ast) {
      return depthWalk(ast, function(node3) {
        if (!(node3 instanceof nodes.If) && !(node3 instanceof nodes.For)) {
          return void 0;
        }
        var async = false;
        walk2(node3, function(child) {
          if (child instanceof nodes.FilterAsync || child instanceof nodes.IfAsync || child instanceof nodes.AsyncEach || child instanceof nodes.AsyncAll || child instanceof nodes.CallExtensionAsync) {
            async = true;
            return child;
          }
          return void 0;
        });
        if (async) {
          if (node3 instanceof nodes.If) {
            return new nodes.IfAsync(node3.lineno, node3.colno, node3.cond, node3.body, node3.else_);
          } else if (node3 instanceof nodes.For && !(node3 instanceof nodes.AsyncAll)) {
            return new nodes.AsyncEach(node3.lineno, node3.colno, node3.arr, node3.name, node3.body, node3.else_);
          }
        }
        return void 0;
      });
    }
    function cps(ast, asyncFilters) {
      return convertStatements(liftSuper(liftFilters(ast, asyncFilters)));
    }
    function transform3(ast, asyncFilters) {
      return cps(ast, asyncFilters || []);
    }
    module2.exports = {
      transform: transform3
    };
  }
});

// ../../node_modules/nunjucks/src/runtime.js
var require_runtime = __commonJS({
  "../../node_modules/nunjucks/src/runtime.js"(exports2, module2) {
    "use strict";
    var lib = require_lib17();
    var arrayFrom = Array.from;
    var supportsIterators = typeof Symbol === "function" && Symbol.iterator && typeof arrayFrom === "function";
    var Frame = /* @__PURE__ */ (function() {
      function Frame2(parent2, isolateWrites) {
        this.variables = /* @__PURE__ */ Object.create(null);
        this.parent = parent2;
        this.topLevel = false;
        this.isolateWrites = isolateWrites;
      }
      var _proto = Frame2.prototype;
      _proto.set = function set3(name3, val, resolveUp) {
        var parts = name3.split(".");
        var obj = this.variables;
        var frame = this;
        if (resolveUp) {
          if (frame = this.resolve(parts[0], true)) {
            frame.set(name3, val);
            return;
          }
        }
        for (var i2 = 0; i2 < parts.length - 1; i2++) {
          var id = parts[i2];
          if (!obj[id]) {
            obj[id] = {};
          }
          obj = obj[id];
        }
        obj[parts[parts.length - 1]] = val;
      };
      _proto.get = function get(name3) {
        var val = this.variables[name3];
        if (val !== void 0) {
          return val;
        }
        return null;
      };
      _proto.lookup = function lookup2(name3) {
        var p5 = this.parent;
        var val = this.variables[name3];
        if (val !== void 0) {
          return val;
        }
        return p5 && p5.lookup(name3);
      };
      _proto.resolve = function resolve9(name3, forWrite) {
        var p5 = forWrite && this.isolateWrites ? void 0 : this.parent;
        var val = this.variables[name3];
        if (val !== void 0) {
          return this;
        }
        return p5 && p5.resolve(name3);
      };
      _proto.push = function push(isolateWrites) {
        return new Frame2(this, isolateWrites);
      };
      _proto.pop = function pop() {
        return this.parent;
      };
      return Frame2;
    })();
    function makeMacro(argNames, kwargNames, func) {
      return function macro2() {
        for (var _len = arguments.length, macroArgs = new Array(_len), _key = 0; _key < _len; _key++) {
          macroArgs[_key] = arguments[_key];
        }
        var argCount = numArgs(macroArgs);
        var args;
        var kwargs = getKeywordArgs(macroArgs);
        if (argCount > argNames.length) {
          args = macroArgs.slice(0, argNames.length);
          macroArgs.slice(args.length, argCount).forEach(function(val, i3) {
            if (i3 < kwargNames.length) {
              kwargs[kwargNames[i3]] = val;
            }
          });
          args.push(kwargs);
        } else if (argCount < argNames.length) {
          args = macroArgs.slice(0, argCount);
          for (var i2 = argCount; i2 < argNames.length; i2++) {
            var arg2 = argNames[i2];
            args.push(kwargs[arg2]);
            delete kwargs[arg2];
          }
          args.push(kwargs);
        } else {
          args = macroArgs;
        }
        return func.apply(this, args);
      };
    }
    function makeKeywordArgs(obj) {
      obj.__keywords = true;
      return obj;
    }
    function isKeywordArgs(obj) {
      return obj && Object.prototype.hasOwnProperty.call(obj, "__keywords");
    }
    function getKeywordArgs(args) {
      var len = args.length;
      if (len) {
        var lastArg = args[len - 1];
        if (isKeywordArgs(lastArg)) {
          return lastArg;
        }
      }
      return {};
    }
    function numArgs(args) {
      var len = args.length;
      if (len === 0) {
        return 0;
      }
      var lastArg = args[len - 1];
      if (isKeywordArgs(lastArg)) {
        return len - 1;
      } else {
        return len;
      }
    }
    function SafeString(val) {
      if (typeof val !== "string") {
        return val;
      }
      this.val = val;
      this.length = val.length;
    }
    SafeString.prototype = Object.create(String.prototype, {
      length: {
        writable: true,
        configurable: true,
        value: 0
      }
    });
    SafeString.prototype.valueOf = function valueOf() {
      return this.val;
    };
    SafeString.prototype.toString = function toString6() {
      return this.val;
    };
    function copySafeness(dest, target) {
      if (dest instanceof SafeString) {
        return new SafeString(target);
      }
      return target.toString();
    }
    function markSafe(val) {
      var type2 = typeof val;
      if (type2 === "string") {
        return new SafeString(val);
      } else if (type2 !== "function") {
        return val;
      } else {
        return function wrapSafe(args) {
          var ret = val.apply(this, arguments);
          if (typeof ret === "string") {
            return new SafeString(ret);
          }
          return ret;
        };
      }
    }
    function suppressValue(val, autoescape) {
      val = val !== void 0 && val !== null ? val : "";
      if (autoescape && !(val instanceof SafeString)) {
        val = lib.escape(val.toString());
      }
      return val;
    }
    function ensureDefined(val, lineno, colno) {
      if (val === null || val === void 0) {
        throw new lib.TemplateError("attempted to output null or undefined value", lineno + 1, colno + 1);
      }
      return val;
    }
    function memberLookup(obj, val) {
      if (obj === void 0 || obj === null) {
        return void 0;
      }
      if (typeof obj[val] === "function") {
        return function() {
          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
            args[_key2] = arguments[_key2];
          }
          return obj[val].apply(obj, args);
        };
      }
      return obj[val];
    }
    function callWrap(obj, name3, context, args) {
      if (!obj) {
        throw new Error("Unable to call `" + name3 + "`, which is undefined or falsey");
      } else if (typeof obj !== "function") {
        throw new Error("Unable to call `" + name3 + "`, which is not a function");
      }
      return obj.apply(context, args);
    }
    function contextOrFrameLookup(context, frame, name3) {
      var val = frame.lookup(name3);
      return val !== void 0 ? val : context.lookup(name3);
    }
    function handleError(error, lineno, colno) {
      if (error.lineno) {
        return error;
      } else {
        return new lib.TemplateError(error, lineno, colno);
      }
    }
    function asyncEach(arr, dimen, iter, cb) {
      if (lib.isArray(arr)) {
        var len = arr.length;
        lib.asyncIter(arr, function iterCallback(item, i2, next) {
          switch (dimen) {
            case 1:
              iter(item, i2, len, next);
              break;
            case 2:
              iter(item[0], item[1], i2, len, next);
              break;
            case 3:
              iter(item[0], item[1], item[2], i2, len, next);
              break;
            default:
              item.push(i2, len, next);
              iter.apply(this, item);
          }
        }, cb);
      } else {
        lib.asyncFor(arr, function iterCallback(key2, val, i2, len2, next) {
          iter(key2, val, i2, len2, next);
        }, cb);
      }
    }
    function asyncAll(arr, dimen, func, cb) {
      var finished = 0;
      var len;
      var outputArr;
      function done(i3, output2) {
        finished++;
        outputArr[i3] = output2;
        if (finished === len) {
          cb(null, outputArr.join(""));
        }
      }
      if (lib.isArray(arr)) {
        len = arr.length;
        outputArr = new Array(len);
        if (len === 0) {
          cb(null, "");
        } else {
          for (var i2 = 0; i2 < arr.length; i2++) {
            var item = arr[i2];
            switch (dimen) {
              case 1:
                func(item, i2, len, done);
                break;
              case 2:
                func(item[0], item[1], i2, len, done);
                break;
              case 3:
                func(item[0], item[1], item[2], i2, len, done);
                break;
              default:
                item.push(i2, len, done);
                func.apply(this, item);
            }
          }
        }
      } else {
        var keys2 = lib.keys(arr || {});
        len = keys2.length;
        outputArr = new Array(len);
        if (len === 0) {
          cb(null, "");
        } else {
          for (var _i = 0; _i < keys2.length; _i++) {
            var k = keys2[_i];
            func(k, arr[k], _i, len, done);
          }
        }
      }
    }
    function fromIterator(arr) {
      if (typeof arr !== "object" || arr === null || lib.isArray(arr)) {
        return arr;
      } else if (supportsIterators && Symbol.iterator in arr) {
        return arrayFrom(arr);
      } else {
        return arr;
      }
    }
    module2.exports = {
      Frame,
      makeMacro,
      makeKeywordArgs,
      numArgs,
      suppressValue,
      ensureDefined,
      memberLookup,
      contextOrFrameLookup,
      callWrap,
      handleError,
      isArray: lib.isArray,
      keys: lib.keys,
      SafeString,
      copySafeness,
      markSafe,
      asyncEach,
      asyncAll,
      inOperator: lib.inOperator,
      fromIterator
    };
  }
});

// ../../node_modules/nunjucks/src/compiler.js
var require_compiler = __commonJS({
  "../../node_modules/nunjucks/src/compiler.js"(exports2, module2) {
    "use strict";
    function _inheritsLoose(subClass, superClass) {
      subClass.prototype = Object.create(superClass.prototype);
      subClass.prototype.constructor = subClass;
      _setPrototypeOf(subClass, superClass);
    }
    function _setPrototypeOf(o, p5) {
      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p6) {
        o2.__proto__ = p6;
        return o2;
      };
      return _setPrototypeOf(o, p5);
    }
    var parser3 = require_parser4();
    var transformer = require_transformer();
    var nodes = require_nodes();
    var _require = require_lib17();
    var TemplateError = _require.TemplateError;
    var _require2 = require_runtime();
    var Frame = _require2.Frame;
    var _require3 = require_object();
    var Obj = _require3.Obj;
    var compareOps = {
      "==": "==",
      "===": "===",
      "!=": "!=",
      "!==": "!==",
      "<": "<",
      ">": ">",
      "<=": "<=",
      ">=": ">="
    };
    var Compiler = /* @__PURE__ */ (function(_Obj) {
      _inheritsLoose(Compiler2, _Obj);
      function Compiler2() {
        return _Obj.apply(this, arguments) || this;
      }
      var _proto = Compiler2.prototype;
      _proto.init = function init4(templateName, throwOnUndefined) {
        this.templateName = templateName;
        this.codebuf = [];
        this.lastId = 0;
        this.buffer = null;
        this.bufferStack = [];
        this._scopeClosers = "";
        this.inBlock = false;
        this.throwOnUndefined = throwOnUndefined;
      };
      _proto.fail = function fail(msg, lineno, colno) {
        if (lineno !== void 0) {
          lineno += 1;
        }
        if (colno !== void 0) {
          colno += 1;
        }
        throw new TemplateError(msg, lineno, colno);
      };
      _proto._pushBuffer = function _pushBuffer() {
        var id = this._tmpid();
        this.bufferStack.push(this.buffer);
        this.buffer = id;
        this._emit("var " + this.buffer + ' = "";');
        return id;
      };
      _proto._popBuffer = function _popBuffer() {
        this.buffer = this.bufferStack.pop();
      };
      _proto._emit = function _emit(code7) {
        this.codebuf.push(code7);
      };
      _proto._emitLine = function _emitLine(code7) {
        this._emit(code7 + "\n");
      };
      _proto._emitLines = function _emitLines() {
        var _this = this;
        for (var _len = arguments.length, lines = new Array(_len), _key = 0; _key < _len; _key++) {
          lines[_key] = arguments[_key];
        }
        lines.forEach(function(line2) {
          return _this._emitLine(line2);
        });
      };
      _proto._emitFuncBegin = function _emitFuncBegin(node3, name3) {
        this.buffer = "output";
        this._scopeClosers = "";
        this._emitLine("function " + name3 + "(env, context, frame, runtime, cb) {");
        this._emitLine("var lineno = " + node3.lineno + ";");
        this._emitLine("var colno = " + node3.colno + ";");
        this._emitLine("var " + this.buffer + ' = "";');
        this._emitLine("try {");
      };
      _proto._emitFuncEnd = function _emitFuncEnd(noReturn) {
        if (!noReturn) {
          this._emitLine("cb(null, " + this.buffer + ");");
        }
        this._closeScopeLevels();
        this._emitLine("} catch (e) {");
        this._emitLine("  cb(runtime.handleError(e, lineno, colno));");
        this._emitLine("}");
        this._emitLine("}");
        this.buffer = null;
      };
      _proto._addScopeLevel = function _addScopeLevel() {
        this._scopeClosers += "})";
      };
      _proto._closeScopeLevels = function _closeScopeLevels() {
        this._emitLine(this._scopeClosers + ";");
        this._scopeClosers = "";
      };
      _proto._withScopedSyntax = function _withScopedSyntax(func) {
        var _scopeClosers = this._scopeClosers;
        this._scopeClosers = "";
        func.call(this);
        this._closeScopeLevels();
        this._scopeClosers = _scopeClosers;
      };
      _proto._makeCallback = function _makeCallback(res) {
        var err = this._tmpid();
        return "function(" + err + (res ? "," + res : "") + ") {\nif(" + err + ") { cb(" + err + "); return; }";
      };
      _proto._tmpid = function _tmpid() {
        this.lastId++;
        return "t_" + this.lastId;
      };
      _proto._templateName = function _templateName() {
        return this.templateName == null ? "undefined" : JSON.stringify(this.templateName);
      };
      _proto._compileChildren = function _compileChildren(node3, frame) {
        var _this2 = this;
        node3.children.forEach(function(child) {
          _this2.compile(child, frame);
        });
      };
      _proto._compileAggregate = function _compileAggregate(node3, frame, startChar, endChar) {
        var _this3 = this;
        if (startChar) {
          this._emit(startChar);
        }
        node3.children.forEach(function(child, i2) {
          if (i2 > 0) {
            _this3._emit(",");
          }
          _this3.compile(child, frame);
        });
        if (endChar) {
          this._emit(endChar);
        }
      };
      _proto._compileExpression = function _compileExpression(node3, frame) {
        this.assertType(node3, nodes.Literal, nodes.Symbol, nodes.Group, nodes.Array, nodes.Dict, nodes.FunCall, nodes.Caller, nodes.Filter, nodes.LookupVal, nodes.Compare, nodes.InlineIf, nodes.In, nodes.Is, nodes.And, nodes.Or, nodes.Not, nodes.Add, nodes.Concat, nodes.Sub, nodes.Mul, nodes.Div, nodes.FloorDiv, nodes.Mod, nodes.Pow, nodes.Neg, nodes.Pos, nodes.Compare, nodes.NodeList);
        this.compile(node3, frame);
      };
      _proto.assertType = function assertType2(node3) {
        for (var _len2 = arguments.length, types6 = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
          types6[_key2 - 1] = arguments[_key2];
        }
        if (!types6.some(function(t2) {
          return node3 instanceof t2;
        })) {
          this.fail("assertType: invalid type: " + node3.typename, node3.lineno, node3.colno);
        }
      };
      _proto.compileCallExtension = function compileCallExtension(node3, frame, async) {
        var _this4 = this;
        var args = node3.args;
        var contentArgs = node3.contentArgs;
        var autoescape = typeof node3.autoescape === "boolean" ? node3.autoescape : true;
        if (!async) {
          this._emit(this.buffer + " += runtime.suppressValue(");
        }
        this._emit('env.getExtension("' + node3.extName + '")["' + node3.prop + '"](');
        this._emit("context");
        if (args || contentArgs) {
          this._emit(",");
        }
        if (args) {
          if (!(args instanceof nodes.NodeList)) {
            this.fail("compileCallExtension: arguments must be a NodeList, use `parser.parseSignature`");
          }
          args.children.forEach(function(arg2, i2) {
            _this4._compileExpression(arg2, frame);
            if (i2 !== args.children.length - 1 || contentArgs.length) {
              _this4._emit(",");
            }
          });
        }
        if (contentArgs.length) {
          contentArgs.forEach(function(arg2, i2) {
            if (i2 > 0) {
              _this4._emit(",");
            }
            if (arg2) {
              _this4._emitLine("function(cb) {");
              _this4._emitLine("if(!cb) { cb = function(err) { if(err) { throw err; }}}");
              var id = _this4._pushBuffer();
              _this4._withScopedSyntax(function() {
                _this4.compile(arg2, frame);
                _this4._emitLine("cb(null, " + id + ");");
              });
              _this4._popBuffer();
              _this4._emitLine("return " + id + ";");
              _this4._emitLine("}");
            } else {
              _this4._emit("null");
            }
          });
        }
        if (async) {
          var res = this._tmpid();
          this._emitLine(", " + this._makeCallback(res));
          this._emitLine(this.buffer + " += runtime.suppressValue(" + res + ", " + autoescape + " && env.opts.autoescape);");
          this._addScopeLevel();
        } else {
          this._emit(")");
          this._emit(", " + autoescape + " && env.opts.autoescape);\n");
        }
      };
      _proto.compileCallExtensionAsync = function compileCallExtensionAsync(node3, frame) {
        this.compileCallExtension(node3, frame, true);
      };
      _proto.compileNodeList = function compileNodeList(node3, frame) {
        this._compileChildren(node3, frame);
      };
      _proto.compileLiteral = function compileLiteral(node3) {
        if (typeof node3.value === "string") {
          var val = node3.value.replace(/\\/g, "\\\\");
          val = val.replace(/"/g, '\\"');
          val = val.replace(/\n/g, "\\n");
          val = val.replace(/\r/g, "\\r");
          val = val.replace(/\t/g, "\\t");
          val = val.replace(/\u2028/g, "\\u2028");
          this._emit('"' + val + '"');
        } else if (node3.value === null) {
          this._emit("null");
        } else {
          this._emit(node3.value.toString());
        }
      };
      _proto.compileSymbol = function compileSymbol(node3, frame) {
        var name3 = node3.value;
        var v = frame.lookup(name3);
        if (v) {
          this._emit(v);
        } else {
          this._emit('runtime.contextOrFrameLookup(context, frame, "' + name3 + '")');
        }
      };
      _proto.compileGroup = function compileGroup(node3, frame) {
        this._compileAggregate(node3, frame, "(", ")");
      };
      _proto.compileArray = function compileArray(node3, frame) {
        this._compileAggregate(node3, frame, "[", "]");
      };
      _proto.compileDict = function compileDict(node3, frame) {
        this._compileAggregate(node3, frame, "{", "}");
      };
      _proto.compilePair = function compilePair(node3, frame) {
        var key2 = node3.key;
        var val = node3.value;
        if (key2 instanceof nodes.Symbol) {
          key2 = new nodes.Literal(key2.lineno, key2.colno, key2.value);
        } else if (!(key2 instanceof nodes.Literal && typeof key2.value === "string")) {
          this.fail("compilePair: Dict keys must be strings or names", key2.lineno, key2.colno);
        }
        this.compile(key2, frame);
        this._emit(": ");
        this._compileExpression(val, frame);
      };
      _proto.compileInlineIf = function compileInlineIf(node3, frame) {
        this._emit("(");
        this.compile(node3.cond, frame);
        this._emit("?");
        this.compile(node3.body, frame);
        this._emit(":");
        if (node3.else_ !== null) {
          this.compile(node3.else_, frame);
        } else {
          this._emit('""');
        }
        this._emit(")");
      };
      _proto.compileIn = function compileIn(node3, frame) {
        this._emit("runtime.inOperator(");
        this.compile(node3.left, frame);
        this._emit(",");
        this.compile(node3.right, frame);
        this._emit(")");
      };
      _proto.compileIs = function compileIs(node3, frame) {
        var right2 = node3.right.name ? node3.right.name.value : node3.right.value;
        this._emit('env.getTest("' + right2 + '").call(context, ');
        this.compile(node3.left, frame);
        if (node3.right.args) {
          this._emit(",");
          this.compile(node3.right.args, frame);
        }
        this._emit(") === true");
      };
      _proto._binOpEmitter = function _binOpEmitter(node3, frame, str2) {
        this.compile(node3.left, frame);
        this._emit(str2);
        this.compile(node3.right, frame);
      };
      _proto.compileOr = function compileOr(node3, frame) {
        return this._binOpEmitter(node3, frame, " || ");
      };
      _proto.compileAnd = function compileAnd(node3, frame) {
        return this._binOpEmitter(node3, frame, " && ");
      };
      _proto.compileAdd = function compileAdd(node3, frame) {
        return this._binOpEmitter(node3, frame, " + ");
      };
      _proto.compileConcat = function compileConcat(node3, frame) {
        return this._binOpEmitter(node3, frame, ' + "" + ');
      };
      _proto.compileSub = function compileSub(node3, frame) {
        return this._binOpEmitter(node3, frame, " - ");
      };
      _proto.compileMul = function compileMul(node3, frame) {
        return this._binOpEmitter(node3, frame, " * ");
      };
      _proto.compileDiv = function compileDiv(node3, frame) {
        return this._binOpEmitter(node3, frame, " / ");
      };
      _proto.compileMod = function compileMod(node3, frame) {
        return this._binOpEmitter(node3, frame, " % ");
      };
      _proto.compileNot = function compileNot(node3, frame) {
        this._emit("!");
        this.compile(node3.target, frame);
      };
      _proto.compileFloorDiv = function compileFloorDiv(node3, frame) {
        this._emit("Math.floor(");
        this.compile(node3.left, frame);
        this._emit(" / ");
        this.compile(node3.right, frame);
        this._emit(")");
      };
      _proto.compilePow = function compilePow(node3, frame) {
        this._emit("Math.pow(");
        this.compile(node3.left, frame);
        this._emit(", ");
        this.compile(node3.right, frame);
        this._emit(")");
      };
      _proto.compileNeg = function compileNeg(node3, frame) {
        this._emit("-");
        this.compile(node3.target, frame);
      };
      _proto.compilePos = function compilePos(node3, frame) {
        this._emit("+");
        this.compile(node3.target, frame);
      };
      _proto.compileCompare = function compileCompare(node3, frame) {
        var _this5 = this;
        this.compile(node3.expr, frame);
        node3.ops.forEach(function(op2) {
          _this5._emit(" " + compareOps[op2.type] + " ");
          _this5.compile(op2.expr, frame);
        });
      };
      _proto.compileLookupVal = function compileLookupVal(node3, frame) {
        this._emit("runtime.memberLookup((");
        this._compileExpression(node3.target, frame);
        this._emit("),");
        this._compileExpression(node3.val, frame);
        this._emit(")");
      };
      _proto._getNodeName = function _getNodeName(node3) {
        switch (node3.typename) {
          case "Symbol":
            return node3.value;
          case "FunCall":
            return "the return value of (" + this._getNodeName(node3.name) + ")";
          case "LookupVal":
            return this._getNodeName(node3.target) + '["' + this._getNodeName(node3.val) + '"]';
          case "Literal":
            return node3.value.toString();
          default:
            return "--expression--";
        }
      };
      _proto.compileFunCall = function compileFunCall(node3, frame) {
        this._emit("(lineno = " + node3.lineno + ", colno = " + node3.colno + ", ");
        this._emit("runtime.callWrap(");
        this._compileExpression(node3.name, frame);
        this._emit(', "' + this._getNodeName(node3.name).replace(/"/g, '\\"') + '", context, ');
        this._compileAggregate(node3.args, frame, "[", "])");
        this._emit(")");
      };
      _proto.compileFilter = function compileFilter(node3, frame) {
        var name3 = node3.name;
        this.assertType(name3, nodes.Symbol);
        this._emit('env.getFilter("' + name3.value + '").call(context, ');
        this._compileAggregate(node3.args, frame);
        this._emit(")");
      };
      _proto.compileFilterAsync = function compileFilterAsync(node3, frame) {
        var name3 = node3.name;
        var symbol = node3.symbol.value;
        this.assertType(name3, nodes.Symbol);
        frame.set(symbol, symbol);
        this._emit('env.getFilter("' + name3.value + '").call(context, ');
        this._compileAggregate(node3.args, frame);
        this._emitLine(", " + this._makeCallback(symbol));
        this._addScopeLevel();
      };
      _proto.compileKeywordArgs = function compileKeywordArgs(node3, frame) {
        this._emit("runtime.makeKeywordArgs(");
        this.compileDict(node3, frame);
        this._emit(")");
      };
      _proto.compileSet = function compileSet(node3, frame) {
        var _this6 = this;
        var ids = [];
        node3.targets.forEach(function(target) {
          var name3 = target.value;
          var id = frame.lookup(name3);
          if (id === null || id === void 0) {
            id = _this6._tmpid();
            _this6._emitLine("var " + id + ";");
          }
          ids.push(id);
        });
        if (node3.value) {
          this._emit(ids.join(" = ") + " = ");
          this._compileExpression(node3.value, frame);
          this._emitLine(";");
        } else {
          this._emit(ids.join(" = ") + " = ");
          this.compile(node3.body, frame);
          this._emitLine(";");
        }
        node3.targets.forEach(function(target, i2) {
          var id = ids[i2];
          var name3 = target.value;
          _this6._emitLine('frame.set("' + name3 + '", ' + id + ", true);");
          _this6._emitLine("if(frame.topLevel) {");
          _this6._emitLine('context.setVariable("' + name3 + '", ' + id + ");");
          _this6._emitLine("}");
          if (name3.charAt(0) !== "_") {
            _this6._emitLine("if(frame.topLevel) {");
            _this6._emitLine('context.addExport("' + name3 + '", ' + id + ");");
            _this6._emitLine("}");
          }
        });
      };
      _proto.compileSwitch = function compileSwitch(node3, frame) {
        var _this7 = this;
        this._emit("switch (");
        this.compile(node3.expr, frame);
        this._emit(") {");
        node3.cases.forEach(function(c, i2) {
          _this7._emit("case ");
          _this7.compile(c.cond, frame);
          _this7._emit(": ");
          _this7.compile(c.body, frame);
          if (c.body.children.length) {
            _this7._emitLine("break;");
          }
        });
        if (node3.default) {
          this._emit("default:");
          this.compile(node3.default, frame);
        }
        this._emit("}");
      };
      _proto.compileIf = function compileIf(node3, frame, async) {
        var _this8 = this;
        this._emit("if(");
        this._compileExpression(node3.cond, frame);
        this._emitLine(") {");
        this._withScopedSyntax(function() {
          _this8.compile(node3.body, frame);
          if (async) {
            _this8._emit("cb()");
          }
        });
        if (node3.else_) {
          this._emitLine("}\nelse {");
          this._withScopedSyntax(function() {
            _this8.compile(node3.else_, frame);
            if (async) {
              _this8._emit("cb()");
            }
          });
        } else if (async) {
          this._emitLine("}\nelse {");
          this._emit("cb()");
        }
        this._emitLine("}");
      };
      _proto.compileIfAsync = function compileIfAsync(node3, frame) {
        this._emit("(function(cb) {");
        this.compileIf(node3, frame, true);
        this._emit("})(" + this._makeCallback());
        this._addScopeLevel();
      };
      _proto._emitLoopBindings = function _emitLoopBindings(node3, arr, i2, len) {
        var _this9 = this;
        var bindings = [{
          name: "index",
          val: i2 + " + 1"
        }, {
          name: "index0",
          val: i2
        }, {
          name: "revindex",
          val: len + " - " + i2
        }, {
          name: "revindex0",
          val: len + " - " + i2 + " - 1"
        }, {
          name: "first",
          val: i2 + " === 0"
        }, {
          name: "last",
          val: i2 + " === " + len + " - 1"
        }, {
          name: "length",
          val: len
        }];
        bindings.forEach(function(b) {
          _this9._emitLine('frame.set("loop.' + b.name + '", ' + b.val + ");");
        });
      };
      _proto.compileFor = function compileFor(node3, frame) {
        var _this10 = this;
        var i2 = this._tmpid();
        var len = this._tmpid();
        var arr = this._tmpid();
        frame = frame.push();
        this._emitLine("frame = frame.push();");
        this._emit("var " + arr + " = ");
        this._compileExpression(node3.arr, frame);
        this._emitLine(";");
        this._emit("if(" + arr + ") {");
        this._emitLine(arr + " = runtime.fromIterator(" + arr + ");");
        if (node3.name instanceof nodes.Array) {
          this._emitLine("var " + i2 + ";");
          this._emitLine("if(runtime.isArray(" + arr + ")) {");
          this._emitLine("var " + len + " = " + arr + ".length;");
          this._emitLine("for(" + i2 + "=0; " + i2 + " < " + arr + ".length; " + i2 + "++) {");
          node3.name.children.forEach(function(child, u3) {
            var tid = _this10._tmpid();
            _this10._emitLine("var " + tid + " = " + arr + "[" + i2 + "][" + u3 + "];");
            _this10._emitLine('frame.set("' + child + '", ' + arr + "[" + i2 + "][" + u3 + "]);");
            frame.set(node3.name.children[u3].value, tid);
          });
          this._emitLoopBindings(node3, arr, i2, len);
          this._withScopedSyntax(function() {
            _this10.compile(node3.body, frame);
          });
          this._emitLine("}");
          this._emitLine("} else {");
          var _node$name$children = node3.name.children, key2 = _node$name$children[0], val = _node$name$children[1];
          var k = this._tmpid();
          var v = this._tmpid();
          frame.set(key2.value, k);
          frame.set(val.value, v);
          this._emitLine(i2 + " = -1;");
          this._emitLine("var " + len + " = runtime.keys(" + arr + ").length;");
          this._emitLine("for(var " + k + " in " + arr + ") {");
          this._emitLine(i2 + "++;");
          this._emitLine("var " + v + " = " + arr + "[" + k + "];");
          this._emitLine('frame.set("' + key2.value + '", ' + k + ");");
          this._emitLine('frame.set("' + val.value + '", ' + v + ");");
          this._emitLoopBindings(node3, arr, i2, len);
          this._withScopedSyntax(function() {
            _this10.compile(node3.body, frame);
          });
          this._emitLine("}");
          this._emitLine("}");
        } else {
          var _v = this._tmpid();
          frame.set(node3.name.value, _v);
          this._emitLine("var " + len + " = " + arr + ".length;");
          this._emitLine("for(var " + i2 + "=0; " + i2 + " < " + arr + ".length; " + i2 + "++) {");
          this._emitLine("var " + _v + " = " + arr + "[" + i2 + "];");
          this._emitLine('frame.set("' + node3.name.value + '", ' + _v + ");");
          this._emitLoopBindings(node3, arr, i2, len);
          this._withScopedSyntax(function() {
            _this10.compile(node3.body, frame);
          });
          this._emitLine("}");
        }
        this._emitLine("}");
        if (node3.else_) {
          this._emitLine("if (!" + len + ") {");
          this.compile(node3.else_, frame);
          this._emitLine("}");
        }
        this._emitLine("frame = frame.pop();");
      };
      _proto._compileAsyncLoop = function _compileAsyncLoop(node3, frame, parallel) {
        var _this11 = this;
        var i2 = this._tmpid();
        var len = this._tmpid();
        var arr = this._tmpid();
        var asyncMethod = parallel ? "asyncAll" : "asyncEach";
        frame = frame.push();
        this._emitLine("frame = frame.push();");
        this._emit("var " + arr + " = runtime.fromIterator(");
        this._compileExpression(node3.arr, frame);
        this._emitLine(");");
        if (node3.name instanceof nodes.Array) {
          var arrayLen = node3.name.children.length;
          this._emit("runtime." + asyncMethod + "(" + arr + ", " + arrayLen + ", function(");
          node3.name.children.forEach(function(name3) {
            _this11._emit(name3.value + ",");
          });
          this._emit(i2 + "," + len + ",next) {");
          node3.name.children.forEach(function(name3) {
            var id2 = name3.value;
            frame.set(id2, id2);
            _this11._emitLine('frame.set("' + id2 + '", ' + id2 + ");");
          });
        } else {
          var id = node3.name.value;
          this._emitLine("runtime." + asyncMethod + "(" + arr + ", 1, function(" + id + ", " + i2 + ", " + len + ",next) {");
          this._emitLine('frame.set("' + id + '", ' + id + ");");
          frame.set(id, id);
        }
        this._emitLoopBindings(node3, arr, i2, len);
        this._withScopedSyntax(function() {
          var buf;
          if (parallel) {
            buf = _this11._pushBuffer();
          }
          _this11.compile(node3.body, frame);
          _this11._emitLine("next(" + i2 + (buf ? "," + buf : "") + ");");
          if (parallel) {
            _this11._popBuffer();
          }
        });
        var output2 = this._tmpid();
        this._emitLine("}, " + this._makeCallback(output2));
        this._addScopeLevel();
        if (parallel) {
          this._emitLine(this.buffer + " += " + output2 + ";");
        }
        if (node3.else_) {
          this._emitLine("if (!" + arr + ".length) {");
          this.compile(node3.else_, frame);
          this._emitLine("}");
        }
        this._emitLine("frame = frame.pop();");
      };
      _proto.compileAsyncEach = function compileAsyncEach(node3, frame) {
        this._compileAsyncLoop(node3, frame);
      };
      _proto.compileAsyncAll = function compileAsyncAll(node3, frame) {
        this._compileAsyncLoop(node3, frame, true);
      };
      _proto._compileMacro = function _compileMacro(node3, frame) {
        var _this12 = this;
        var args = [];
        var kwargs = null;
        var funcId = "macro_" + this._tmpid();
        var keepFrame = frame !== void 0;
        node3.args.children.forEach(function(arg2, i2) {
          if (i2 === node3.args.children.length - 1 && arg2 instanceof nodes.Dict) {
            kwargs = arg2;
          } else {
            _this12.assertType(arg2, nodes.Symbol);
            args.push(arg2);
          }
        });
        var realNames = [].concat(args.map(function(n) {
          return "l_" + n.value;
        }), ["kwargs"]);
        var argNames = args.map(function(n) {
          return '"' + n.value + '"';
        });
        var kwargNames = (kwargs && kwargs.children || []).map(function(n) {
          return '"' + n.key.value + '"';
        });
        var currFrame;
        if (keepFrame) {
          currFrame = frame.push(true);
        } else {
          currFrame = new Frame();
        }
        this._emitLines("var " + funcId + " = runtime.makeMacro(", "[" + argNames.join(", ") + "], ", "[" + kwargNames.join(", ") + "], ", "function (" + realNames.join(", ") + ") {", "var callerFrame = frame;", "frame = " + (keepFrame ? "frame.push(true);" : "new runtime.Frame();"), "kwargs = kwargs || {};", 'if (Object.prototype.hasOwnProperty.call(kwargs, "caller")) {', 'frame.set("caller", kwargs.caller); }');
        args.forEach(function(arg2) {
          _this12._emitLine('frame.set("' + arg2.value + '", l_' + arg2.value + ");");
          currFrame.set(arg2.value, "l_" + arg2.value);
        });
        if (kwargs) {
          kwargs.children.forEach(function(pair) {
            var name3 = pair.key.value;
            _this12._emit('frame.set("' + name3 + '", ');
            _this12._emit('Object.prototype.hasOwnProperty.call(kwargs, "' + name3 + '")');
            _this12._emit(' ? kwargs["' + name3 + '"] : ');
            _this12._compileExpression(pair.value, currFrame);
            _this12._emit(");");
          });
        }
        var bufferId = this._pushBuffer();
        this._withScopedSyntax(function() {
          _this12.compile(node3.body, currFrame);
        });
        this._emitLine("frame = " + (keepFrame ? "frame.pop();" : "callerFrame;"));
        this._emitLine("return new runtime.SafeString(" + bufferId + ");");
        this._emitLine("});");
        this._popBuffer();
        return funcId;
      };
      _proto.compileMacro = function compileMacro(node3, frame) {
        var funcId = this._compileMacro(node3);
        var name3 = node3.name.value;
        frame.set(name3, funcId);
        if (frame.parent) {
          this._emitLine('frame.set("' + name3 + '", ' + funcId + ");");
        } else {
          if (node3.name.value.charAt(0) !== "_") {
            this._emitLine('context.addExport("' + name3 + '");');
          }
          this._emitLine('context.setVariable("' + name3 + '", ' + funcId + ");");
        }
      };
      _proto.compileCaller = function compileCaller(node3, frame) {
        this._emit("(function (){");
        var funcId = this._compileMacro(node3, frame);
        this._emit("return " + funcId + ";})()");
      };
      _proto._compileGetTemplate = function _compileGetTemplate(node3, frame, eagerCompile, ignoreMissing) {
        var parentTemplateId = this._tmpid();
        var parentName = this._templateName();
        var cb = this._makeCallback(parentTemplateId);
        var eagerCompileArg = eagerCompile ? "true" : "false";
        var ignoreMissingArg = ignoreMissing ? "true" : "false";
        this._emit("env.getTemplate(");
        this._compileExpression(node3.template, frame);
        this._emitLine(", " + eagerCompileArg + ", " + parentName + ", " + ignoreMissingArg + ", " + cb);
        return parentTemplateId;
      };
      _proto.compileImport = function compileImport(node3, frame) {
        var target = node3.target.value;
        var id = this._compileGetTemplate(node3, frame, false, false);
        this._addScopeLevel();
        this._emitLine(id + ".getExported(" + (node3.withContext ? "context.getVariables(), frame, " : "") + this._makeCallback(id));
        this._addScopeLevel();
        frame.set(target, id);
        if (frame.parent) {
          this._emitLine('frame.set("' + target + '", ' + id + ");");
        } else {
          this._emitLine('context.setVariable("' + target + '", ' + id + ");");
        }
      };
      _proto.compileFromImport = function compileFromImport(node3, frame) {
        var _this13 = this;
        var importedId = this._compileGetTemplate(node3, frame, false, false);
        this._addScopeLevel();
        this._emitLine(importedId + ".getExported(" + (node3.withContext ? "context.getVariables(), frame, " : "") + this._makeCallback(importedId));
        this._addScopeLevel();
        node3.names.children.forEach(function(nameNode) {
          var name3;
          var alias;
          var id = _this13._tmpid();
          if (nameNode instanceof nodes.Pair) {
            name3 = nameNode.key.value;
            alias = nameNode.value.value;
          } else {
            name3 = nameNode.value;
            alias = name3;
          }
          _this13._emitLine("if(Object.prototype.hasOwnProperty.call(" + importedId + ', "' + name3 + '")) {');
          _this13._emitLine("var " + id + " = " + importedId + "." + name3 + ";");
          _this13._emitLine("} else {");
          _this13._emitLine(`cb(new Error("cannot import '` + name3 + `'")); return;`);
          _this13._emitLine("}");
          frame.set(alias, id);
          if (frame.parent) {
            _this13._emitLine('frame.set("' + alias + '", ' + id + ");");
          } else {
            _this13._emitLine('context.setVariable("' + alias + '", ' + id + ");");
          }
        });
      };
      _proto.compileBlock = function compileBlock(node3) {
        var id = this._tmpid();
        if (!this.inBlock) {
          this._emit('(parentTemplate ? function(e, c, f, r, cb) { cb(""); } : ');
        }
        this._emit('context.getBlock("' + node3.name.value + '")');
        if (!this.inBlock) {
          this._emit(")");
        }
        this._emitLine("(env, context, frame, runtime, " + this._makeCallback(id));
        this._emitLine(this.buffer + " += " + id + ";");
        this._addScopeLevel();
      };
      _proto.compileSuper = function compileSuper(node3, frame) {
        var name3 = node3.blockName.value;
        var id = node3.symbol.value;
        var cb = this._makeCallback(id);
        this._emitLine('context.getSuper(env, "' + name3 + '", b_' + name3 + ", frame, runtime, " + cb);
        this._emitLine(id + " = runtime.markSafe(" + id + ");");
        this._addScopeLevel();
        frame.set(id, id);
      };
      _proto.compileExtends = function compileExtends(node3, frame) {
        var k = this._tmpid();
        var parentTemplateId = this._compileGetTemplate(node3, frame, true, false);
        this._emitLine("parentTemplate = " + parentTemplateId);
        this._emitLine("for(var " + k + " in parentTemplate.blocks) {");
        this._emitLine("context.addBlock(" + k + ", parentTemplate.blocks[" + k + "]);");
        this._emitLine("}");
        this._addScopeLevel();
      };
      _proto.compileInclude = function compileInclude(node3, frame) {
        this._emitLine("var tasks = [];");
        this._emitLine("tasks.push(");
        this._emitLine("function(callback) {");
        var id = this._compileGetTemplate(node3, frame, false, node3.ignoreMissing);
        this._emitLine("callback(null," + id + ");});");
        this._emitLine("});");
        var id2 = this._tmpid();
        this._emitLine("tasks.push(");
        this._emitLine("function(template, callback){");
        this._emitLine("template.render(context.getVariables(), frame, " + this._makeCallback(id2));
        this._emitLine("callback(null," + id2 + ");});");
        this._emitLine("});");
        this._emitLine("tasks.push(");
        this._emitLine("function(result, callback){");
        this._emitLine(this.buffer + " += result;");
        this._emitLine("callback(null);");
        this._emitLine("});");
        this._emitLine("env.waterfall(tasks, function(){");
        this._addScopeLevel();
      };
      _proto.compileTemplateData = function compileTemplateData(node3, frame) {
        this.compileLiteral(node3, frame);
      };
      _proto.compileCapture = function compileCapture(node3, frame) {
        var _this14 = this;
        var buffer2 = this.buffer;
        this.buffer = "output";
        this._emitLine("(function() {");
        this._emitLine('var output = "";');
        this._withScopedSyntax(function() {
          _this14.compile(node3.body, frame);
        });
        this._emitLine("return output;");
        this._emitLine("})()");
        this.buffer = buffer2;
      };
      _proto.compileOutput = function compileOutput(node3, frame) {
        var _this15 = this;
        var children = node3.children;
        children.forEach(function(child) {
          if (child instanceof nodes.TemplateData) {
            if (child.value) {
              _this15._emit(_this15.buffer + " += ");
              _this15.compileLiteral(child, frame);
              _this15._emitLine(";");
            }
          } else {
            _this15._emit(_this15.buffer + " += runtime.suppressValue(");
            if (_this15.throwOnUndefined) {
              _this15._emit("runtime.ensureDefined(");
            }
            _this15.compile(child, frame);
            if (_this15.throwOnUndefined) {
              _this15._emit("," + node3.lineno + "," + node3.colno + ")");
            }
            _this15._emit(", env.opts.autoescape);\n");
          }
        });
      };
      _proto.compileRoot = function compileRoot(node3, frame) {
        var _this16 = this;
        if (frame) {
          this.fail("compileRoot: root node can't have frame");
        }
        frame = new Frame();
        this._emitFuncBegin(node3, "root");
        this._emitLine("var parentTemplate = null;");
        this._compileChildren(node3, frame);
        this._emitLine("if(parentTemplate) {");
        this._emitLine("parentTemplate.rootRenderFunc(env, context, frame, runtime, cb);");
        this._emitLine("} else {");
        this._emitLine("cb(null, " + this.buffer + ");");
        this._emitLine("}");
        this._emitFuncEnd(true);
        this.inBlock = true;
        var blockNames = [];
        var blocks2 = node3.findAll(nodes.Block);
        blocks2.forEach(function(block5, i2) {
          var name3 = block5.name.value;
          if (blockNames.indexOf(name3) !== -1) {
            throw new Error('Block "' + name3 + '" defined more than once.');
          }
          blockNames.push(name3);
          _this16._emitFuncBegin(block5, "b_" + name3);
          var tmpFrame = new Frame();
          _this16._emitLine("var frame = frame.push(true);");
          _this16.compile(block5.body, tmpFrame);
          _this16._emitFuncEnd();
        });
        this._emitLine("return {");
        blocks2.forEach(function(block5, i2) {
          var blockName = "b_" + block5.name.value;
          _this16._emitLine(blockName + ": " + blockName + ",");
        });
        this._emitLine("root: root\n};");
      };
      _proto.compile = function compile2(node3, frame) {
        var _compile = this["compile" + node3.typename];
        if (_compile) {
          _compile.call(this, node3, frame);
        } else {
          this.fail("compile: Cannot compile node: " + node3.typename, node3.lineno, node3.colno);
        }
      };
      _proto.getCode = function getCode() {
        return this.codebuf.join("");
      };
      return Compiler2;
    })(Obj);
    module2.exports = {
      compile: function compile2(src, asyncFilters, extensions, name3, opts) {
        if (opts === void 0) {
          opts = {};
        }
        var c = new Compiler(name3, opts.throwOnUndefined);
        var preprocessors = (extensions || []).map(function(ext2) {
          return ext2.preprocess;
        }).filter(function(f3) {
          return !!f3;
        });
        var processedSrc = preprocessors.reduce(function(s5, processor2) {
          return processor2(s5);
        }, src);
        c.compile(transformer.transform(parser3.parse(processedSrc, extensions, opts), asyncFilters, name3));
        return c.getCode();
      },
      Compiler
    };
  }
});

// ../../node_modules/nunjucks/src/filters.js
var require_filters = __commonJS({
  "../../node_modules/nunjucks/src/filters.js"(exports2, module2) {
    "use strict";
    var lib = require_lib17();
    var r2 = require_runtime();
    var _exports = module2.exports = {};
    function normalize6(value, defaultValue) {
      if (value === null || value === void 0 || value === false) {
        return defaultValue;
      }
      return value;
    }
    _exports.abs = Math.abs;
    function isNaN2(num) {
      return num !== num;
    }
    function batch(arr, linecount, fillWith) {
      var i2;
      var res = [];
      var tmp = [];
      for (i2 = 0; i2 < arr.length; i2++) {
        if (i2 % linecount === 0 && tmp.length) {
          res.push(tmp);
          tmp = [];
        }
        tmp.push(arr[i2]);
      }
      if (tmp.length) {
        if (fillWith) {
          for (i2 = tmp.length; i2 < linecount; i2++) {
            tmp.push(fillWith);
          }
        }
        res.push(tmp);
      }
      return res;
    }
    _exports.batch = batch;
    function capitalize2(str2) {
      str2 = normalize6(str2, "");
      var ret = str2.toLowerCase();
      return r2.copySafeness(str2, ret.charAt(0).toUpperCase() + ret.slice(1));
    }
    _exports.capitalize = capitalize2;
    function center(str2, width) {
      str2 = normalize6(str2, "");
      width = width || 80;
      if (str2.length >= width) {
        return str2;
      }
      var spaces = width - str2.length;
      var pre2 = lib.repeat(" ", spaces / 2 - spaces % 2);
      var post = lib.repeat(" ", spaces / 2);
      return r2.copySafeness(str2, pre2 + str2 + post);
    }
    _exports.center = center;
    function default_(val, def, bool2) {
      if (bool2) {
        return val || def;
      } else {
        return val !== void 0 ? val : def;
      }
    }
    _exports["default"] = default_;
    function dictsort(val, caseSensitive, by) {
      if (!lib.isObject(val)) {
        throw new lib.TemplateError("dictsort filter: val must be an object");
      }
      var array = [];
      for (var k in val) {
        array.push([k, val[k]]);
      }
      var si;
      if (by === void 0 || by === "key") {
        si = 0;
      } else if (by === "value") {
        si = 1;
      } else {
        throw new lib.TemplateError("dictsort filter: You can only sort by either key or value");
      }
      array.sort(function(t1, t2) {
        var a2 = t1[si];
        var b = t2[si];
        if (!caseSensitive) {
          if (lib.isString(a2)) {
            a2 = a2.toUpperCase();
          }
          if (lib.isString(b)) {
            b = b.toUpperCase();
          }
        }
        return a2 > b ? 1 : a2 === b ? 0 : -1;
      });
      return array;
    }
    _exports.dictsort = dictsort;
    function dump3(obj, spaces) {
      return JSON.stringify(obj, null, spaces);
    }
    _exports.dump = dump3;
    function escape5(str2) {
      if (str2 instanceof r2.SafeString) {
        return str2;
      }
      str2 = str2 === null || str2 === void 0 ? "" : str2;
      return r2.markSafe(lib.escape(str2.toString()));
    }
    _exports.escape = escape5;
    function safe2(str2) {
      if (str2 instanceof r2.SafeString) {
        return str2;
      }
      str2 = str2 === null || str2 === void 0 ? "" : str2;
      return r2.markSafe(str2.toString());
    }
    _exports.safe = safe2;
    function first2(arr) {
      return arr[0];
    }
    _exports.first = first2;
    function forceescape(str2) {
      str2 = str2 === null || str2 === void 0 ? "" : str2;
      return r2.markSafe(lib.escape(str2.toString()));
    }
    _exports.forceescape = forceescape;
    function groupby(arr, attr) {
      return lib.groupBy(arr, attr, this.env.opts.throwOnUndefined);
    }
    _exports.groupby = groupby;
    function indent2(str2, width, indentfirst) {
      str2 = normalize6(str2, "");
      if (str2 === "") {
        return "";
      }
      width = width || 4;
      var lines = str2.split("\n");
      var sp = lib.repeat(" ", width);
      var res = lines.map(function(l, i2) {
        return i2 === 0 && !indentfirst ? l : "" + sp + l;
      }).join("\n");
      return r2.copySafeness(str2, res);
    }
    _exports.indent = indent2;
    function join19(arr, del2, attr) {
      del2 = del2 || "";
      if (attr) {
        arr = lib.map(arr, function(v) {
          return v[attr];
        });
      }
      return arr.join(del2);
    }
    _exports.join = join19;
    function last(arr) {
      return arr[arr.length - 1];
    }
    _exports.last = last;
    function lengthFilter(val) {
      var value = normalize6(val, "");
      if (value !== void 0) {
        if (typeof Map === "function" && value instanceof Map || typeof Set === "function" && value instanceof Set) {
          return value.size;
        }
        if (lib.isObject(value) && !(value instanceof r2.SafeString)) {
          return lib.keys(value).length;
        }
        return value.length;
      }
      return 0;
    }
    _exports.length = lengthFilter;
    function list6(val) {
      if (lib.isString(val)) {
        return val.split("");
      } else if (lib.isObject(val)) {
        return lib._entries(val || {}).map(function(_ref) {
          var key2 = _ref[0], value = _ref[1];
          return {
            key: key2,
            value
          };
        });
      } else if (lib.isArray(val)) {
        return val;
      } else {
        throw new lib.TemplateError("list filter: type not iterable");
      }
    }
    _exports.list = list6;
    function lower2(str2) {
      str2 = normalize6(str2, "");
      return str2.toLowerCase();
    }
    _exports.lower = lower2;
    function nl2br(str2) {
      if (str2 === null || str2 === void 0) {
        return "";
      }
      return r2.copySafeness(str2, str2.replace(/\r\n|\n/g, "<br />\n"));
    }
    _exports.nl2br = nl2br;
    function random2(arr) {
      return arr[Math.floor(Math.random() * arr.length)];
    }
    _exports.random = random2;
    function getSelectOrReject(expectedTestResult) {
      function filter6(arr, testName, secondArg) {
        if (testName === void 0) {
          testName = "truthy";
        }
        var context = this;
        var test2 = context.env.getTest(testName);
        return lib.toArray(arr).filter(function examineTestResult(item) {
          return test2.call(context, item, secondArg) === expectedTestResult;
        });
      }
      return filter6;
    }
    _exports.reject = getSelectOrReject(false);
    function rejectattr(arr, attr) {
      return arr.filter(function(item) {
        return !item[attr];
      });
    }
    _exports.rejectattr = rejectattr;
    _exports.select = getSelectOrReject(true);
    function selectattr(arr, attr) {
      return arr.filter(function(item) {
        return !!item[attr];
      });
    }
    _exports.selectattr = selectattr;
    function replace(str2, old, new_, maxCount) {
      var originalStr = str2;
      if (old instanceof RegExp) {
        return str2.replace(old, new_);
      }
      if (typeof maxCount === "undefined") {
        maxCount = -1;
      }
      var res = "";
      if (typeof old === "number") {
        old = "" + old;
      } else if (typeof old !== "string") {
        return str2;
      }
      if (typeof str2 === "number") {
        str2 = "" + str2;
      }
      if (typeof str2 !== "string" && !(str2 instanceof r2.SafeString)) {
        return str2;
      }
      if (old === "") {
        res = new_ + str2.split("").join(new_) + new_;
        return r2.copySafeness(str2, res);
      }
      var nextIndex = str2.indexOf(old);
      if (maxCount === 0 || nextIndex === -1) {
        return str2;
      }
      var pos = 0;
      var count2 = 0;
      while (nextIndex > -1 && (maxCount === -1 || count2 < maxCount)) {
        res += str2.substring(pos, nextIndex) + new_;
        pos = nextIndex + old.length;
        count2++;
        nextIndex = str2.indexOf(old, pos);
      }
      if (pos < str2.length) {
        res += str2.substring(pos);
      }
      return r2.copySafeness(originalStr, res);
    }
    _exports.replace = replace;
    function reverse(val) {
      var arr;
      if (lib.isString(val)) {
        arr = list6(val);
      } else {
        arr = lib.map(val, function(v) {
          return v;
        });
      }
      arr.reverse();
      if (lib.isString(val)) {
        return r2.copySafeness(val, arr.join(""));
      }
      return arr;
    }
    _exports.reverse = reverse;
    function round(val, precision, method) {
      precision = precision || 0;
      var factor = Math.pow(10, precision);
      var rounder;
      if (method === "ceil") {
        rounder = Math.ceil;
      } else if (method === "floor") {
        rounder = Math.floor;
      } else {
        rounder = Math.round;
      }
      return rounder(val * factor) / factor;
    }
    _exports.round = round;
    function slice2(arr, slices, fillWith) {
      var sliceLength = Math.floor(arr.length / slices);
      var extra = arr.length % slices;
      var res = [];
      var offset = 0;
      for (var i2 = 0; i2 < slices; i2++) {
        var start = offset + i2 * sliceLength;
        if (i2 < extra) {
          offset++;
        }
        var end = offset + (i2 + 1) * sliceLength;
        var currSlice = arr.slice(start, end);
        if (fillWith && i2 >= extra) {
          currSlice.push(fillWith);
        }
        res.push(currSlice);
      }
      return res;
    }
    _exports.slice = slice2;
    function sum(arr, attr, start) {
      if (start === void 0) {
        start = 0;
      }
      if (attr) {
        arr = lib.map(arr, function(v) {
          return v[attr];
        });
      }
      return start + arr.reduce(function(a2, b) {
        return a2 + b;
      }, 0);
    }
    _exports.sum = sum;
    _exports.sort = r2.makeMacro(["value", "reverse", "case_sensitive", "attribute"], [], function sortFilter(arr, reversed, caseSens, attr) {
      var _this = this;
      var array = lib.map(arr, function(v) {
        return v;
      });
      var getAttribute = lib.getAttrGetter(attr);
      array.sort(function(a2, b) {
        var x2 = attr ? getAttribute(a2) : a2;
        var y = attr ? getAttribute(b) : b;
        if (_this.env.opts.throwOnUndefined && attr && (x2 === void 0 || y === void 0)) {
          throw new TypeError('sort: attribute "' + attr + '" resolved to undefined');
        }
        if (!caseSens && lib.isString(x2) && lib.isString(y)) {
          x2 = x2.toLowerCase();
          y = y.toLowerCase();
        }
        if (x2 < y) {
          return reversed ? 1 : -1;
        } else if (x2 > y) {
          return reversed ? -1 : 1;
        } else {
          return 0;
        }
      });
      return array;
    });
    function string2(obj) {
      return r2.copySafeness(obj, obj);
    }
    _exports.string = string2;
    function striptags(input3, preserveLinebreaks) {
      input3 = normalize6(input3, "");
      var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>|<!--[\s\S]*?-->/gi;
      var trimmedInput = trim2(input3.replace(tags, ""));
      var res = "";
      if (preserveLinebreaks) {
        res = trimmedInput.replace(/^ +| +$/gm, "").replace(/ +/g, " ").replace(/(\r\n)/g, "\n").replace(/\n\n\n+/g, "\n\n");
      } else {
        res = trimmedInput.replace(/\s+/gi, " ");
      }
      return r2.copySafeness(input3, res);
    }
    _exports.striptags = striptags;
    function title(str2) {
      str2 = normalize6(str2, "");
      var words = str2.split(" ").map(function(word) {
        return capitalize2(word);
      });
      return r2.copySafeness(str2, words.join(" "));
    }
    _exports.title = title;
    function trim2(str2) {
      return r2.copySafeness(str2, str2.replace(/^\s*|\s*$/g, ""));
    }
    _exports.trim = trim2;
    function truncate(input3, length, killwords, end) {
      var orig = input3;
      input3 = normalize6(input3, "");
      length = length || 255;
      if (input3.length <= length) {
        return input3;
      }
      if (killwords) {
        input3 = input3.substring(0, length);
      } else {
        var idx = input3.lastIndexOf(" ", length);
        if (idx === -1) {
          idx = length;
        }
        input3 = input3.substring(0, idx);
      }
      input3 += end !== void 0 && end !== null ? end : "...";
      return r2.copySafeness(orig, input3);
    }
    _exports.truncate = truncate;
    function upper(str2) {
      str2 = normalize6(str2, "");
      return str2.toUpperCase();
    }
    _exports.upper = upper;
    function urlencode(obj) {
      var enc = encodeURIComponent;
      if (lib.isString(obj)) {
        return enc(obj);
      } else {
        var keyvals = lib.isArray(obj) ? obj : lib._entries(obj);
        return keyvals.map(function(_ref2) {
          var k = _ref2[0], v = _ref2[1];
          return enc(k) + "=" + enc(v);
        }).join("&");
      }
    }
    _exports.urlencode = urlencode;
    var puncRe = /^(?:\(|<|&lt;)?(.*?)(?:\.|,|\)|\n|&gt;)?$/;
    var emailRe = /^[\w.!#$%&'*+\-\/=?\^`{|}~]+@[a-z\d\-]+(\.[a-z\d\-]+)+$/i;
    var httpHttpsRe = /^https?:\/\/.*$/;
    var wwwRe = /^www\./;
    var tldRe = /\.(?:org|net|com)(?:\:|\/|$)/;
    function urlize(str2, length, nofollow) {
      if (isNaN2(length)) {
        length = Infinity;
      }
      var noFollowAttr = nofollow === true ? ' rel="nofollow"' : "";
      var words = str2.split(/(\s+)/).filter(function(word) {
        return word && word.length;
      }).map(function(word) {
        var matches4 = word.match(puncRe);
        var possibleUrl = matches4 ? matches4[1] : word;
        var shortUrl = possibleUrl.substr(0, length);
        if (httpHttpsRe.test(possibleUrl)) {
          return '<a href="' + possibleUrl + '"' + noFollowAttr + ">" + shortUrl + "</a>";
        }
        if (wwwRe.test(possibleUrl)) {
          return '<a href="http://' + possibleUrl + '"' + noFollowAttr + ">" + shortUrl + "</a>";
        }
        if (emailRe.test(possibleUrl)) {
          return '<a href="mailto:' + possibleUrl + '">' + possibleUrl + "</a>";
        }
        if (tldRe.test(possibleUrl)) {
          return '<a href="http://' + possibleUrl + '"' + noFollowAttr + ">" + shortUrl + "</a>";
        }
        return word;
      });
      return words.join("");
    }
    _exports.urlize = urlize;
    function wordcount(str2) {
      str2 = normalize6(str2, "");
      var words = str2 ? str2.match(/\w+/g) : null;
      return words ? words.length : null;
    }
    _exports.wordcount = wordcount;
    function float2(val, def) {
      var res = parseFloat(val);
      return isNaN2(res) ? def : res;
    }
    _exports.float = float2;
    var intFilter = r2.makeMacro(["value", "default", "base"], [], function doInt(value, defaultValue, base5) {
      if (base5 === void 0) {
        base5 = 10;
      }
      var res = parseInt(value, base5);
      return isNaN2(res) ? defaultValue : res;
    });
    _exports.int = intFilter;
    _exports.d = _exports.default;
    _exports.e = _exports.escape;
  }
});

// ../../node_modules/nunjucks/src/loader.js
var require_loader = __commonJS({
  "../../node_modules/nunjucks/src/loader.js"(exports2, module2) {
    "use strict";
    function _inheritsLoose(subClass, superClass) {
      subClass.prototype = Object.create(superClass.prototype);
      subClass.prototype.constructor = subClass;
      _setPrototypeOf(subClass, superClass);
    }
    function _setPrototypeOf(o, p5) {
      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p6) {
        o2.__proto__ = p6;
        return o2;
      };
      return _setPrototypeOf(o, p5);
    }
    var path45 = require("path");
    var _require = require_object();
    var EmitterObj = _require.EmitterObj;
    module2.exports = /* @__PURE__ */ (function(_EmitterObj) {
      _inheritsLoose(Loader, _EmitterObj);
      function Loader() {
        return _EmitterObj.apply(this, arguments) || this;
      }
      var _proto = Loader.prototype;
      _proto.resolve = function resolve9(from4, to) {
        return path45.resolve(path45.dirname(from4), to);
      };
      _proto.isRelative = function isRelative(filename) {
        return filename.indexOf("./") === 0 || filename.indexOf("../") === 0;
      };
      return Loader;
    })(EmitterObj);
  }
});

// ../../node_modules/nunjucks/src/precompiled-loader.js
var require_precompiled_loader = __commonJS({
  "../../node_modules/nunjucks/src/precompiled-loader.js"(exports2, module2) {
    "use strict";
    function _inheritsLoose(subClass, superClass) {
      subClass.prototype = Object.create(superClass.prototype);
      subClass.prototype.constructor = subClass;
      _setPrototypeOf(subClass, superClass);
    }
    function _setPrototypeOf(o, p5) {
      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p6) {
        o2.__proto__ = p6;
        return o2;
      };
      return _setPrototypeOf(o, p5);
    }
    var Loader = require_loader();
    var PrecompiledLoader = /* @__PURE__ */ (function(_Loader) {
      _inheritsLoose(PrecompiledLoader2, _Loader);
      function PrecompiledLoader2(compiledTemplates) {
        var _this;
        _this = _Loader.call(this) || this;
        _this.precompiled = compiledTemplates || {};
        return _this;
      }
      var _proto = PrecompiledLoader2.prototype;
      _proto.getSource = function getSource(name3) {
        if (this.precompiled[name3]) {
          return {
            src: {
              type: "code",
              obj: this.precompiled[name3]
            },
            path: name3
          };
        }
        return null;
      };
      return PrecompiledLoader2;
    })(Loader);
    module2.exports = {
      PrecompiledLoader
    };
  }
});

// ../../node_modules/nunjucks/src/node-loaders.js
var require_node_loaders = __commonJS({
  "../../node_modules/nunjucks/src/node-loaders.js"(exports2, module2) {
    "use strict";
    function _inheritsLoose(subClass, superClass) {
      subClass.prototype = Object.create(superClass.prototype);
      subClass.prototype.constructor = subClass;
      _setPrototypeOf(subClass, superClass);
    }
    function _setPrototypeOf(o, p5) {
      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p6) {
        o2.__proto__ = p6;
        return o2;
      };
      return _setPrototypeOf(o, p5);
    }
    var fs50 = require("fs");
    var path45 = require("path");
    var Loader = require_loader();
    var _require = require_precompiled_loader();
    var PrecompiledLoader = _require.PrecompiledLoader;
    var chokidar3;
    var FileSystemLoader = /* @__PURE__ */ (function(_Loader) {
      _inheritsLoose(FileSystemLoader2, _Loader);
      function FileSystemLoader2(searchPaths, opts) {
        var _this;
        _this = _Loader.call(this) || this;
        if (typeof opts === "boolean") {
          console.log("[nunjucks] Warning: you passed a boolean as the second argument to FileSystemLoader, but it now takes an options object. See http://mozilla.github.io/nunjucks/api.html#filesystemloader");
        }
        opts = opts || {};
        _this.pathsToNames = {};
        _this.noCache = !!opts.noCache;
        if (searchPaths) {
          searchPaths = Array.isArray(searchPaths) ? searchPaths : [searchPaths];
          _this.searchPaths = searchPaths.map(path45.normalize);
        } else {
          _this.searchPaths = ["."];
        }
        if (opts.watch) {
          try {
            chokidar3 = require_chokidar();
          } catch (e2) {
            throw new Error("watch requires chokidar to be installed");
          }
          var paths = _this.searchPaths.filter(fs50.existsSync);
          var watcher = chokidar3.watch(paths);
          watcher.on("all", function(event, fullname) {
            fullname = path45.resolve(fullname);
            if (event === "change" && fullname in _this.pathsToNames) {
              _this.emit("update", _this.pathsToNames[fullname], fullname);
            }
          });
          watcher.on("error", function(error) {
            console.log("Watcher error: " + error);
          });
        }
        return _this;
      }
      var _proto = FileSystemLoader2.prototype;
      _proto.getSource = function getSource(name3) {
        var fullpath = null;
        var paths = this.searchPaths;
        for (var i2 = 0; i2 < paths.length; i2++) {
          var basePath = path45.resolve(paths[i2]);
          var p5 = path45.resolve(paths[i2], name3);
          if (p5.indexOf(basePath) === 0 && fs50.existsSync(p5)) {
            fullpath = p5;
            break;
          }
        }
        if (!fullpath) {
          return null;
        }
        this.pathsToNames[fullpath] = name3;
        var source2 = {
          src: fs50.readFileSync(fullpath, "utf-8"),
          path: fullpath,
          noCache: this.noCache
        };
        this.emit("load", name3, source2);
        return source2;
      };
      return FileSystemLoader2;
    })(Loader);
    var NodeResolveLoader = /* @__PURE__ */ (function(_Loader2) {
      _inheritsLoose(NodeResolveLoader2, _Loader2);
      function NodeResolveLoader2(opts) {
        var _this2;
        _this2 = _Loader2.call(this) || this;
        opts = opts || {};
        _this2.pathsToNames = {};
        _this2.noCache = !!opts.noCache;
        if (opts.watch) {
          try {
            chokidar3 = require_chokidar();
          } catch (e2) {
            throw new Error("watch requires chokidar to be installed");
          }
          _this2.watcher = chokidar3.watch();
          _this2.watcher.on("change", function(fullname) {
            _this2.emit("update", _this2.pathsToNames[fullname], fullname);
          });
          _this2.watcher.on("error", function(error) {
            console.log("Watcher error: " + error);
          });
          _this2.on("load", function(name3, source2) {
            _this2.watcher.add(source2.path);
          });
        }
        return _this2;
      }
      var _proto2 = NodeResolveLoader2.prototype;
      _proto2.getSource = function getSource(name3) {
        if (/^\.?\.?(\/|\\)/.test(name3)) {
          return null;
        }
        if (/^[A-Z]:/.test(name3)) {
          return null;
        }
        var fullpath;
        try {
          fullpath = require.resolve(name3);
        } catch (e2) {
          return null;
        }
        this.pathsToNames[fullpath] = name3;
        var source2 = {
          src: fs50.readFileSync(fullpath, "utf-8"),
          path: fullpath,
          noCache: this.noCache
        };
        this.emit("load", name3, source2);
        return source2;
      };
      return NodeResolveLoader2;
    })(Loader);
    module2.exports = {
      FileSystemLoader,
      PrecompiledLoader,
      NodeResolveLoader
    };
  }
});

// ../../node_modules/nunjucks/src/loaders.js
var require_loaders = __commonJS({
  "../../node_modules/nunjucks/src/loaders.js"(exports2, module2) {
    "use strict";
    module2.exports = require_node_loaders();
  }
});

// ../../node_modules/nunjucks/src/tests.js
var require_tests = __commonJS({
  "../../node_modules/nunjucks/src/tests.js"(exports2) {
    "use strict";
    var SafeString = require_runtime().SafeString;
    function callable(value) {
      return typeof value === "function";
    }
    exports2.callable = callable;
    function defined3(value) {
      return value !== void 0;
    }
    exports2.defined = defined3;
    function divisibleby(one8, two) {
      return one8 % two === 0;
    }
    exports2.divisibleby = divisibleby;
    function escaped(value) {
      return value instanceof SafeString;
    }
    exports2.escaped = escaped;
    function equalto(one8, two) {
      return one8 === two;
    }
    exports2.equalto = equalto;
    exports2.eq = exports2.equalto;
    exports2.sameas = exports2.equalto;
    function even(value) {
      return value % 2 === 0;
    }
    exports2.even = even;
    function falsy(value) {
      return !value;
    }
    exports2.falsy = falsy;
    function ge(one8, two) {
      return one8 >= two;
    }
    exports2.ge = ge;
    function greaterthan(one8, two) {
      return one8 > two;
    }
    exports2.greaterthan = greaterthan;
    exports2.gt = exports2.greaterthan;
    function le(one8, two) {
      return one8 <= two;
    }
    exports2.le = le;
    function lessthan(one8, two) {
      return one8 < two;
    }
    exports2.lessthan = lessthan;
    exports2.lt = exports2.lessthan;
    function lower2(value) {
      return value.toLowerCase() === value;
    }
    exports2.lower = lower2;
    function ne(one8, two) {
      return one8 !== two;
    }
    exports2.ne = ne;
    function nullTest(value) {
      return value === null;
    }
    exports2.null = nullTest;
    function number2(value) {
      return typeof value === "number";
    }
    exports2.number = number2;
    function odd(value) {
      return value % 2 === 1;
    }
    exports2.odd = odd;
    function string2(value) {
      return typeof value === "string";
    }
    exports2.string = string2;
    function truthy(value) {
      return !!value;
    }
    exports2.truthy = truthy;
    function undefinedTest(value) {
      return value === void 0;
    }
    exports2.undefined = undefinedTest;
    function upper(value) {
      return value.toUpperCase() === value;
    }
    exports2.upper = upper;
    function iterable(value) {
      if (typeof Symbol !== "undefined") {
        return !!value[Symbol.iterator];
      } else {
        return Array.isArray(value) || typeof value === "string";
      }
    }
    exports2.iterable = iterable;
    function mapping(value) {
      var bool2 = value !== null && value !== void 0 && typeof value === "object" && !Array.isArray(value);
      if (Set) {
        return bool2 && !(value instanceof Set);
      } else {
        return bool2;
      }
    }
    exports2.mapping = mapping;
  }
});

// ../../node_modules/nunjucks/src/globals.js
var require_globals = __commonJS({
  "../../node_modules/nunjucks/src/globals.js"(exports2, module2) {
    "use strict";
    function _cycler(items) {
      var index4 = -1;
      return {
        current: null,
        reset: function reset() {
          index4 = -1;
          this.current = null;
        },
        next: function next() {
          index4++;
          if (index4 >= items.length) {
            index4 = 0;
          }
          this.current = items[index4];
          return this.current;
        }
      };
    }
    function _joiner(sep5) {
      sep5 = sep5 || ",";
      var first2 = true;
      return function() {
        var val = first2 ? "" : sep5;
        first2 = false;
        return val;
      };
    }
    function globals() {
      return {
        range: function range(start, stop, step) {
          if (typeof stop === "undefined") {
            stop = start;
            start = 0;
            step = 1;
          } else if (!step) {
            step = 1;
          }
          var arr = [];
          if (step > 0) {
            for (var i2 = start; i2 < stop; i2 += step) {
              arr.push(i2);
            }
          } else {
            for (var _i = start; _i > stop; _i += step) {
              arr.push(_i);
            }
          }
          return arr;
        },
        cycler: function cycler() {
          return _cycler(Array.prototype.slice.call(arguments));
        },
        joiner: function joiner(sep5) {
          return _joiner(sep5);
        }
      };
    }
    module2.exports = globals;
  }
});

// ../../node_modules/nunjucks/src/express-app.js
var require_express_app = __commonJS({
  "../../node_modules/nunjucks/src/express-app.js"(exports2, module2) {
    "use strict";
    var path45 = require("path");
    module2.exports = function express2(env6, app) {
      function NunjucksView(name3, opts) {
        this.name = name3;
        this.path = name3;
        this.defaultEngine = opts.defaultEngine;
        this.ext = path45.extname(name3);
        if (!this.ext && !this.defaultEngine) {
          throw new Error("No default engine was specified and no extension was provided.");
        }
        if (!this.ext) {
          this.name += this.ext = (this.defaultEngine[0] !== "." ? "." : "") + this.defaultEngine;
        }
      }
      NunjucksView.prototype.render = function render3(opts, cb) {
        env6.render(this.name, opts, cb);
      };
      app.set("view", NunjucksView);
      app.set("nunjucksEnv", env6);
      return env6;
    };
  }
});

// ../../node_modules/nunjucks/src/environment.js
var require_environment = __commonJS({
  "../../node_modules/nunjucks/src/environment.js"(exports2, module2) {
    "use strict";
    function _inheritsLoose(subClass, superClass) {
      subClass.prototype = Object.create(superClass.prototype);
      subClass.prototype.constructor = subClass;
      _setPrototypeOf(subClass, superClass);
    }
    function _setPrototypeOf(o, p5) {
      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p6) {
        o2.__proto__ = p6;
        return o2;
      };
      return _setPrototypeOf(o, p5);
    }
    var asap = require_asap();
    var _waterfall = require_a_sync_waterfall();
    var lib = require_lib17();
    var compiler = require_compiler();
    var filters = require_filters();
    var _require = require_loaders();
    var FileSystemLoader = _require.FileSystemLoader;
    var WebLoader = _require.WebLoader;
    var PrecompiledLoader = _require.PrecompiledLoader;
    var tests = require_tests();
    var globals = require_globals();
    var _require2 = require_object();
    var Obj = _require2.Obj;
    var EmitterObj = _require2.EmitterObj;
    var globalRuntime = require_runtime();
    var handleError = globalRuntime.handleError;
    var Frame = globalRuntime.Frame;
    var expressApp = require_express_app();
    function callbackAsap(cb, err, res) {
      asap(function() {
        cb(err, res);
      });
    }
    var noopTmplSrc = {
      type: "code",
      obj: {
        root: function root6(env6, context, frame, runtime, cb) {
          try {
            cb(null, "");
          } catch (e2) {
            cb(handleError(e2, null, null));
          }
        }
      }
    };
    var Environment = /* @__PURE__ */ (function(_EmitterObj) {
      _inheritsLoose(Environment2, _EmitterObj);
      function Environment2() {
        return _EmitterObj.apply(this, arguments) || this;
      }
      var _proto = Environment2.prototype;
      _proto.init = function init4(loaders, opts) {
        var _this = this;
        opts = this.opts = opts || {};
        this.opts.dev = !!opts.dev;
        this.opts.autoescape = opts.autoescape != null ? opts.autoescape : true;
        this.opts.throwOnUndefined = !!opts.throwOnUndefined;
        this.opts.trimBlocks = !!opts.trimBlocks;
        this.opts.lstripBlocks = !!opts.lstripBlocks;
        this.loaders = [];
        if (!loaders) {
          if (FileSystemLoader) {
            this.loaders = [new FileSystemLoader("views")];
          } else if (WebLoader) {
            this.loaders = [new WebLoader("/views")];
          }
        } else {
          this.loaders = lib.isArray(loaders) ? loaders : [loaders];
        }
        if (typeof window !== "undefined" && window.nunjucksPrecompiled) {
          this.loaders.unshift(new PrecompiledLoader(window.nunjucksPrecompiled));
        }
        this._initLoaders();
        this.globals = globals();
        this.filters = {};
        this.tests = {};
        this.asyncFilters = [];
        this.extensions = {};
        this.extensionsList = [];
        lib._entries(filters).forEach(function(_ref) {
          var name3 = _ref[0], filter6 = _ref[1];
          return _this.addFilter(name3, filter6);
        });
        lib._entries(tests).forEach(function(_ref2) {
          var name3 = _ref2[0], test2 = _ref2[1];
          return _this.addTest(name3, test2);
        });
      };
      _proto._initLoaders = function _initLoaders() {
        var _this2 = this;
        this.loaders.forEach(function(loader2) {
          loader2.cache = {};
          if (typeof loader2.on === "function") {
            loader2.on("update", function(name3, fullname) {
              loader2.cache[name3] = null;
              _this2.emit("update", name3, fullname, loader2);
            });
            loader2.on("load", function(name3, source2) {
              _this2.emit("load", name3, source2, loader2);
            });
          }
        });
      };
      _proto.invalidateCache = function invalidateCache() {
        this.loaders.forEach(function(loader2) {
          loader2.cache = {};
        });
      };
      _proto.addExtension = function addExtension(name3, extension) {
        extension.__name = name3;
        this.extensions[name3] = extension;
        this.extensionsList.push(extension);
        return this;
      };
      _proto.removeExtension = function removeExtension(name3) {
        var extension = this.getExtension(name3);
        if (!extension) {
          return;
        }
        this.extensionsList = lib.without(this.extensionsList, extension);
        delete this.extensions[name3];
      };
      _proto.getExtension = function getExtension(name3) {
        return this.extensions[name3];
      };
      _proto.hasExtension = function hasExtension(name3) {
        return !!this.extensions[name3];
      };
      _proto.addGlobal = function addGlobal(name3, value) {
        this.globals[name3] = value;
        return this;
      };
      _proto.getGlobal = function getGlobal(name3) {
        if (typeof this.globals[name3] === "undefined") {
          throw new Error("global not found: " + name3);
        }
        return this.globals[name3];
      };
      _proto.addFilter = function addFilter(name3, func, async) {
        var wrapped = func;
        if (async) {
          this.asyncFilters.push(name3);
        }
        this.filters[name3] = wrapped;
        return this;
      };
      _proto.getFilter = function getFilter(name3) {
        if (!this.filters[name3]) {
          throw new Error("filter not found: " + name3);
        }
        return this.filters[name3];
      };
      _proto.addTest = function addTest(name3, func) {
        this.tests[name3] = func;
        return this;
      };
      _proto.getTest = function getTest(name3) {
        if (!this.tests[name3]) {
          throw new Error("test not found: " + name3);
        }
        return this.tests[name3];
      };
      _proto.resolveTemplate = function resolveTemplate2(loader2, parentName, filename) {
        var isRelative = loader2.isRelative && parentName ? loader2.isRelative(filename) : false;
        return isRelative && loader2.resolve ? loader2.resolve(parentName, filename) : filename;
      };
      _proto.getTemplate = function getTemplate(name3, eagerCompile, parentName, ignoreMissing, cb) {
        var _this3 = this;
        var that = this;
        var tmpl = null;
        if (name3 && name3.raw) {
          name3 = name3.raw;
        }
        if (lib.isFunction(parentName)) {
          cb = parentName;
          parentName = null;
          eagerCompile = eagerCompile || false;
        }
        if (lib.isFunction(eagerCompile)) {
          cb = eagerCompile;
          eagerCompile = false;
        }
        if (name3 instanceof Template) {
          tmpl = name3;
        } else if (typeof name3 !== "string") {
          throw new Error("template names must be a string: " + name3);
        } else {
          for (var i2 = 0; i2 < this.loaders.length; i2++) {
            var loader2 = this.loaders[i2];
            tmpl = loader2.cache[this.resolveTemplate(loader2, parentName, name3)];
            if (tmpl) {
              break;
            }
          }
        }
        if (tmpl) {
          if (eagerCompile) {
            tmpl.compile();
          }
          if (cb) {
            cb(null, tmpl);
            return void 0;
          } else {
            return tmpl;
          }
        }
        var syncResult;
        var createTemplate = function createTemplate2(err, info) {
          if (!info && !err && !ignoreMissing) {
            err = new Error("template not found: " + name3);
          }
          if (err) {
            if (cb) {
              cb(err);
              return;
            } else {
              throw err;
            }
          }
          var newTmpl;
          if (!info) {
            newTmpl = new Template(noopTmplSrc, _this3, "", eagerCompile);
          } else {
            newTmpl = new Template(info.src, _this3, info.path, eagerCompile);
            if (!info.noCache) {
              info.loader.cache[name3] = newTmpl;
            }
          }
          if (cb) {
            cb(null, newTmpl);
          } else {
            syncResult = newTmpl;
          }
        };
        lib.asyncIter(this.loaders, function(loader3, i3, next, done) {
          function handle6(err, src) {
            if (err) {
              done(err);
            } else if (src) {
              src.loader = loader3;
              done(null, src);
            } else {
              next();
            }
          }
          name3 = that.resolveTemplate(loader3, parentName, name3);
          if (loader3.async) {
            loader3.getSource(name3, handle6);
          } else {
            handle6(null, loader3.getSource(name3));
          }
        }, createTemplate);
        return syncResult;
      };
      _proto.express = function express2(app) {
        return expressApp(this, app);
      };
      _proto.render = function render3(name3, ctx, cb) {
        if (lib.isFunction(ctx)) {
          cb = ctx;
          ctx = null;
        }
        var syncResult = null;
        this.getTemplate(name3, function(err, tmpl) {
          if (err && cb) {
            callbackAsap(cb, err);
          } else if (err) {
            throw err;
          } else {
            syncResult = tmpl.render(ctx, cb);
          }
        });
        return syncResult;
      };
      _proto.renderString = function renderString(src, ctx, opts, cb) {
        if (lib.isFunction(opts)) {
          cb = opts;
          opts = {};
        }
        opts = opts || {};
        var tmpl = new Template(src, this, opts.path);
        return tmpl.render(ctx, cb);
      };
      _proto.waterfall = function waterfall(tasks, callback, forceAsync) {
        return _waterfall(tasks, callback, forceAsync);
      };
      return Environment2;
    })(EmitterObj);
    var Context = /* @__PURE__ */ (function(_Obj) {
      _inheritsLoose(Context2, _Obj);
      function Context2() {
        return _Obj.apply(this, arguments) || this;
      }
      var _proto2 = Context2.prototype;
      _proto2.init = function init4(ctx, blocks2, env6) {
        var _this4 = this;
        this.env = env6 || new Environment();
        this.ctx = lib.extend({}, ctx);
        this.blocks = {};
        this.exported = [];
        lib.keys(blocks2).forEach(function(name3) {
          _this4.addBlock(name3, blocks2[name3]);
        });
      };
      _proto2.lookup = function lookup2(name3) {
        if (name3 in this.env.globals && !(name3 in this.ctx)) {
          return this.env.globals[name3];
        } else {
          return this.ctx[name3];
        }
      };
      _proto2.setVariable = function setVariable(name3, val) {
        this.ctx[name3] = val;
      };
      _proto2.getVariables = function getVariables() {
        return this.ctx;
      };
      _proto2.addBlock = function addBlock(name3, block5) {
        this.blocks[name3] = this.blocks[name3] || [];
        this.blocks[name3].push(block5);
        return this;
      };
      _proto2.getBlock = function getBlock(name3) {
        if (!this.blocks[name3]) {
          throw new Error('unknown block "' + name3 + '"');
        }
        return this.blocks[name3][0];
      };
      _proto2.getSuper = function getSuper(env6, name3, block5, frame, runtime, cb) {
        var idx = lib.indexOf(this.blocks[name3] || [], block5);
        var blk = this.blocks[name3][idx + 1];
        var context = this;
        if (idx === -1 || !blk) {
          throw new Error('no super block available for "' + name3 + '"');
        }
        blk(env6, context, frame, runtime, cb);
      };
      _proto2.addExport = function addExport(name3) {
        this.exported.push(name3);
      };
      _proto2.getExported = function getExported() {
        var _this5 = this;
        var exported = {};
        this.exported.forEach(function(name3) {
          exported[name3] = _this5.ctx[name3];
        });
        return exported;
      };
      return Context2;
    })(Obj);
    var Template = /* @__PURE__ */ (function(_Obj2) {
      _inheritsLoose(Template2, _Obj2);
      function Template2() {
        return _Obj2.apply(this, arguments) || this;
      }
      var _proto3 = Template2.prototype;
      _proto3.init = function init4(src, env6, path45, eagerCompile) {
        this.env = env6 || new Environment();
        if (lib.isObject(src)) {
          switch (src.type) {
            case "code":
              this.tmplProps = src.obj;
              break;
            case "string":
              this.tmplStr = src.obj;
              break;
            default:
              throw new Error("Unexpected template object type " + src.type + "; expected 'code', or 'string'");
          }
        } else if (lib.isString(src)) {
          this.tmplStr = src;
        } else {
          throw new Error("src must be a string or an object describing the source");
        }
        this.path = path45;
        if (eagerCompile) {
          try {
            this._compile();
          } catch (err) {
            throw lib._prettifyError(this.path, this.env.opts.dev, err);
          }
        } else {
          this.compiled = false;
        }
      };
      _proto3.render = function render3(ctx, parentFrame, cb) {
        var _this6 = this;
        if (typeof ctx === "function") {
          cb = ctx;
          ctx = {};
        } else if (typeof parentFrame === "function") {
          cb = parentFrame;
          parentFrame = null;
        }
        var forceAsync = !parentFrame;
        try {
          this.compile();
        } catch (e2) {
          var err = lib._prettifyError(this.path, this.env.opts.dev, e2);
          if (cb) {
            return callbackAsap(cb, err);
          } else {
            throw err;
          }
        }
        var context = new Context(ctx || {}, this.blocks, this.env);
        var frame = parentFrame ? parentFrame.push(true) : new Frame();
        frame.topLevel = true;
        var syncResult = null;
        var didError = false;
        this.rootRenderFunc(this.env, context, frame, globalRuntime, function(err2, res) {
          if (didError && cb && typeof res !== "undefined") {
            return;
          }
          if (err2) {
            err2 = lib._prettifyError(_this6.path, _this6.env.opts.dev, err2);
            didError = true;
          }
          if (cb) {
            if (forceAsync) {
              callbackAsap(cb, err2, res);
            } else {
              cb(err2, res);
            }
          } else {
            if (err2) {
              throw err2;
            }
            syncResult = res;
          }
        });
        return syncResult;
      };
      _proto3.getExported = function getExported(ctx, parentFrame, cb) {
        if (typeof ctx === "function") {
          cb = ctx;
          ctx = {};
        }
        if (typeof parentFrame === "function") {
          cb = parentFrame;
          parentFrame = null;
        }
        try {
          this.compile();
        } catch (e2) {
          if (cb) {
            return cb(e2);
          } else {
            throw e2;
          }
        }
        var frame = parentFrame ? parentFrame.push() : new Frame();
        frame.topLevel = true;
        var context = new Context(ctx || {}, this.blocks, this.env);
        this.rootRenderFunc(this.env, context, frame, globalRuntime, function(err) {
          if (err) {
            cb(err, null);
          } else {
            cb(null, context.getExported());
          }
        });
      };
      _proto3.compile = function compile2() {
        if (!this.compiled) {
          this._compile();
        }
      };
      _proto3._compile = function _compile() {
        var props;
        if (this.tmplProps) {
          props = this.tmplProps;
        } else {
          var source2 = compiler.compile(this.tmplStr, this.env.asyncFilters, this.env.extensionsList, this.path, this.env.opts);
          var func = new Function(source2);
          props = func();
        }
        this.blocks = this._getBlocks(props);
        this.rootRenderFunc = props.root;
        this.compiled = true;
      };
      _proto3._getBlocks = function _getBlocks(props) {
        var blocks2 = {};
        lib.keys(props).forEach(function(k) {
          if (k.slice(0, 2) === "b_") {
            blocks2[k.slice(2)] = props[k];
          }
        });
        return blocks2;
      };
      return Template2;
    })(Obj);
    module2.exports = {
      Environment,
      Template
    };
  }
});

// ../../node_modules/nunjucks/src/precompile-global.js
var require_precompile_global = __commonJS({
  "../../node_modules/nunjucks/src/precompile-global.js"(exports2, module2) {
    "use strict";
    function precompileGlobal(templates, opts) {
      var out = "";
      opts = opts || {};
      for (var i2 = 0; i2 < templates.length; i2++) {
        var name3 = JSON.stringify(templates[i2].name);
        var template = templates[i2].template;
        out += "(function() {(window.nunjucksPrecompiled = window.nunjucksPrecompiled || {})[" + name3 + "] = (function() {\n" + template + "\n})();\n";
        if (opts.asFunction) {
          out += "return function(ctx, cb) { return nunjucks.render(" + name3 + ", ctx, cb); }\n";
        }
        out += "})();\n";
      }
      return out;
    }
    module2.exports = precompileGlobal;
  }
});

// ../../node_modules/nunjucks/src/precompile.js
var require_precompile = __commonJS({
  "../../node_modules/nunjucks/src/precompile.js"(exports2, module2) {
    "use strict";
    var fs50 = require("fs");
    var path45 = require("path");
    var _require = require_lib17();
    var _prettifyError = _require._prettifyError;
    var compiler = require_compiler();
    var _require2 = require_environment();
    var Environment = _require2.Environment;
    var precompileGlobal = require_precompile_global();
    function match3(filename, patterns) {
      if (!Array.isArray(patterns)) {
        return false;
      }
      return patterns.some(function(pattern) {
        return filename.match(pattern);
      });
    }
    function precompileString(str2, opts) {
      opts = opts || {};
      opts.isString = true;
      var env6 = opts.env || new Environment([]);
      var wrapper = opts.wrapper || precompileGlobal;
      if (!opts.name) {
        throw new Error('the "name" option is required when compiling a string');
      }
      return wrapper([_precompile(str2, opts.name, env6)], opts);
    }
    function precompile(input3, opts) {
      opts = opts || {};
      var env6 = opts.env || new Environment([]);
      var wrapper = opts.wrapper || precompileGlobal;
      if (opts.isString) {
        return precompileString(input3, opts);
      }
      var pathStats = fs50.existsSync(input3) && fs50.statSync(input3);
      var precompiled = [];
      var templates = [];
      function addTemplates(dir) {
        fs50.readdirSync(dir).forEach(function(file) {
          var filepath = path45.join(dir, file);
          var subpath = filepath.substr(path45.join(input3, "/").length);
          var stat2 = fs50.statSync(filepath);
          if (stat2 && stat2.isDirectory()) {
            subpath += "/";
            if (!match3(subpath, opts.exclude)) {
              addTemplates(filepath);
            }
          } else if (match3(subpath, opts.include)) {
            templates.push(filepath);
          }
        });
      }
      if (pathStats.isFile()) {
        precompiled.push(_precompile(fs50.readFileSync(input3, "utf-8"), opts.name || input3, env6));
      } else if (pathStats.isDirectory()) {
        addTemplates(input3);
        for (var i2 = 0; i2 < templates.length; i2++) {
          var name3 = templates[i2].replace(path45.join(input3, "/"), "");
          try {
            precompiled.push(_precompile(fs50.readFileSync(templates[i2], "utf-8"), name3, env6));
          } catch (e2) {
            if (opts.force) {
              console.error(e2);
            } else {
              throw e2;
            }
          }
        }
      }
      return wrapper(precompiled, opts);
    }
    function _precompile(str2, name3, env6) {
      env6 = env6 || new Environment([]);
      var asyncFilters = env6.asyncFilters;
      var extensions = env6.extensionsList;
      var template;
      name3 = name3.replace(/\\/g, "/");
      try {
        template = compiler.compile(str2, asyncFilters, extensions, name3, env6.opts);
      } catch (err) {
        throw _prettifyError(name3, false, err);
      }
      return {
        name: name3,
        template
      };
    }
    module2.exports = {
      precompile,
      precompileString
    };
  }
});

// ../../node_modules/nunjucks/src/jinja-compat.js
var require_jinja_compat = __commonJS({
  "../../node_modules/nunjucks/src/jinja-compat.js"(exports2, module2) {
    "use strict";
    function installCompat() {
      "use strict";
      var runtime = this.runtime;
      var lib = this.lib;
      var Compiler = this.compiler.Compiler;
      var Parser3 = this.parser.Parser;
      var nodes = this.nodes;
      var lexer = this.lexer;
      var orig_contextOrFrameLookup = runtime.contextOrFrameLookup;
      var orig_memberLookup = runtime.memberLookup;
      var orig_Compiler_assertType;
      var orig_Parser_parseAggregate;
      if (Compiler) {
        orig_Compiler_assertType = Compiler.prototype.assertType;
      }
      if (Parser3) {
        orig_Parser_parseAggregate = Parser3.prototype.parseAggregate;
      }
      function uninstall() {
        runtime.contextOrFrameLookup = orig_contextOrFrameLookup;
        runtime.memberLookup = orig_memberLookup;
        if (Compiler) {
          Compiler.prototype.assertType = orig_Compiler_assertType;
        }
        if (Parser3) {
          Parser3.prototype.parseAggregate = orig_Parser_parseAggregate;
        }
      }
      runtime.contextOrFrameLookup = function contextOrFrameLookup(context, frame, key2) {
        var val = orig_contextOrFrameLookup.apply(this, arguments);
        if (val !== void 0) {
          return val;
        }
        switch (key2) {
          case "True":
            return true;
          case "False":
            return false;
          case "None":
            return null;
          default:
            return void 0;
        }
      };
      function getTokensState(tokens) {
        return {
          index: tokens.index,
          lineno: tokens.lineno,
          colno: tokens.colno
        };
      }
      if (process.env.BUILD_TYPE !== "SLIM" && nodes && Compiler && Parser3) {
        var Slice = nodes.Node.extend("Slice", {
          fields: ["start", "stop", "step"],
          init: function init4(lineno, colno, start, stop, step) {
            start = start || new nodes.Literal(lineno, colno, null);
            stop = stop || new nodes.Literal(lineno, colno, null);
            step = step || new nodes.Literal(lineno, colno, 1);
            this.parent(lineno, colno, start, stop, step);
          }
        });
        Compiler.prototype.assertType = function assertType2(node3) {
          if (node3 instanceof Slice) {
            return;
          }
          orig_Compiler_assertType.apply(this, arguments);
        };
        Compiler.prototype.compileSlice = function compileSlice(node3, frame) {
          this._emit("(");
          this._compileExpression(node3.start, frame);
          this._emit("),(");
          this._compileExpression(node3.stop, frame);
          this._emit("),(");
          this._compileExpression(node3.step, frame);
          this._emit(")");
        };
        Parser3.prototype.parseAggregate = function parseAggregate() {
          var _this = this;
          var origState = getTokensState(this.tokens);
          origState.colno--;
          origState.index--;
          try {
            return orig_Parser_parseAggregate.apply(this);
          } catch (e2) {
            var errState = getTokensState(this.tokens);
            var rethrow = function rethrow2() {
              lib._assign(_this.tokens, errState);
              return e2;
            };
            lib._assign(this.tokens, origState);
            this.peeked = false;
            var tok = this.peekToken();
            if (tok.type !== lexer.TOKEN_LEFT_BRACKET) {
              throw rethrow();
            } else {
              this.nextToken();
            }
            var node3 = new Slice(tok.lineno, tok.colno);
            var isSlice = false;
            for (var i2 = 0; i2 <= node3.fields.length; i2++) {
              if (this.skip(lexer.TOKEN_RIGHT_BRACKET)) {
                break;
              }
              if (i2 === node3.fields.length) {
                if (isSlice) {
                  this.fail("parseSlice: too many slice components", tok.lineno, tok.colno);
                } else {
                  break;
                }
              }
              if (this.skip(lexer.TOKEN_COLON)) {
                isSlice = true;
              } else {
                var field = node3.fields[i2];
                node3[field] = this.parseExpression();
                isSlice = this.skip(lexer.TOKEN_COLON) || isSlice;
              }
            }
            if (!isSlice) {
              throw rethrow();
            }
            return new nodes.Array(tok.lineno, tok.colno, [node3]);
          }
        };
      }
      function sliceLookup(obj, start, stop, step) {
        obj = obj || [];
        if (start === null) {
          start = step < 0 ? obj.length - 1 : 0;
        }
        if (stop === null) {
          stop = step < 0 ? -1 : obj.length;
        } else if (stop < 0) {
          stop += obj.length;
        }
        if (start < 0) {
          start += obj.length;
        }
        var results = [];
        for (var i2 = start; ; i2 += step) {
          if (i2 < 0 || i2 > obj.length) {
            break;
          }
          if (step > 0 && i2 >= stop) {
            break;
          }
          if (step < 0 && i2 <= stop) {
            break;
          }
          results.push(runtime.memberLookup(obj, i2));
        }
        return results;
      }
      function hasOwnProp(obj, key2) {
        return Object.prototype.hasOwnProperty.call(obj, key2);
      }
      var ARRAY_MEMBERS = {
        pop: function pop(index4) {
          if (index4 === void 0) {
            return this.pop();
          }
          if (index4 >= this.length || index4 < 0) {
            throw new Error("KeyError");
          }
          return this.splice(index4, 1);
        },
        append: function append(element5) {
          return this.push(element5);
        },
        remove: function remove3(element5) {
          for (var i2 = 0; i2 < this.length; i2++) {
            if (this[i2] === element5) {
              return this.splice(i2, 1);
            }
          }
          throw new Error("ValueError");
        },
        count: function count2(element5) {
          var count3 = 0;
          for (var i2 = 0; i2 < this.length; i2++) {
            if (this[i2] === element5) {
              count3++;
            }
          }
          return count3;
        },
        index: function index4(element5) {
          var i2;
          if ((i2 = this.indexOf(element5)) === -1) {
            throw new Error("ValueError");
          }
          return i2;
        },
        find: function find2(element5) {
          return this.indexOf(element5);
        },
        insert: function insert(index4, elem) {
          return this.splice(index4, 0, elem);
        }
      };
      var OBJECT_MEMBERS = {
        items: function items() {
          return lib._entries(this);
        },
        values: function values() {
          return lib._values(this);
        },
        keys: function keys2() {
          return lib.keys(this);
        },
        get: function get(key2, def) {
          var output2 = this[key2];
          if (output2 === void 0) {
            output2 = def;
          }
          return output2;
        },
        has_key: function has_key(key2) {
          return hasOwnProp(this, key2);
        },
        pop: function pop(key2, def) {
          var output2 = this[key2];
          if (output2 === void 0 && def !== void 0) {
            output2 = def;
          } else if (output2 === void 0) {
            throw new Error("KeyError");
          } else {
            delete this[key2];
          }
          return output2;
        },
        popitem: function popitem() {
          var keys2 = lib.keys(this);
          if (!keys2.length) {
            throw new Error("KeyError");
          }
          var k = keys2[0];
          var val = this[k];
          delete this[k];
          return [k, val];
        },
        setdefault: function setdefault(key2, def) {
          if (def === void 0) {
            def = null;
          }
          if (!(key2 in this)) {
            this[key2] = def;
          }
          return this[key2];
        },
        update: function update(kwargs) {
          lib._assign(this, kwargs);
          return null;
        }
      };
      OBJECT_MEMBERS.iteritems = OBJECT_MEMBERS.items;
      OBJECT_MEMBERS.itervalues = OBJECT_MEMBERS.values;
      OBJECT_MEMBERS.iterkeys = OBJECT_MEMBERS.keys;
      runtime.memberLookup = function memberLookup(obj, val, autoescape) {
        if (arguments.length === 4) {
          return sliceLookup.apply(this, arguments);
        }
        obj = obj || {};
        if (lib.isArray(obj) && hasOwnProp(ARRAY_MEMBERS, val)) {
          return ARRAY_MEMBERS[val].bind(obj);
        }
        if (lib.isObject(obj) && hasOwnProp(OBJECT_MEMBERS, val)) {
          return OBJECT_MEMBERS[val].bind(obj);
        }
        return orig_memberLookup.apply(this, arguments);
      };
      return uninstall;
    }
    module2.exports = installCompat;
  }
});

// ../../node_modules/nunjucks/index.js
var require_nunjucks = __commonJS({
  "../../node_modules/nunjucks/index.js"(exports2, module2) {
    "use strict";
    var lib = require_lib17();
    var _require = require_environment();
    var Environment = _require.Environment;
    var Template = _require.Template;
    var Loader = require_loader();
    var loaders = require_loaders();
    var precompile = require_precompile();
    var compiler = require_compiler();
    var parser3 = require_parser4();
    var lexer = require_lexer();
    var runtime = require_runtime();
    var nodes = require_nodes();
    var installJinjaCompat = require_jinja_compat();
    var e2;
    function configure2(templatesPath, opts) {
      opts = opts || {};
      if (lib.isObject(templatesPath)) {
        opts = templatesPath;
        templatesPath = null;
      }
      var TemplateLoader;
      if (loaders.FileSystemLoader) {
        TemplateLoader = new loaders.FileSystemLoader(templatesPath, {
          watch: opts.watch,
          noCache: opts.noCache
        });
      } else if (loaders.WebLoader) {
        TemplateLoader = new loaders.WebLoader(templatesPath, {
          useCache: opts.web && opts.web.useCache,
          async: opts.web && opts.web.async
        });
      }
      e2 = new Environment(TemplateLoader, opts);
      if (opts && opts.express) {
        e2.express(opts.express);
      }
      return e2;
    }
    module2.exports = {
      Environment,
      Template,
      Loader,
      FileSystemLoader: loaders.FileSystemLoader,
      NodeResolveLoader: loaders.NodeResolveLoader,
      PrecompiledLoader: loaders.PrecompiledLoader,
      WebLoader: loaders.WebLoader,
      compiler,
      parser: parser3,
      lexer,
      runtime,
      lib,
      nodes,
      installJinjaCompat,
      configure: configure2,
      reset: function reset() {
        e2 = void 0;
      },
      compile: function compile2(src, env6, path45, eagerCompile) {
        if (!e2) {
          configure2();
        }
        return new Template(src, env6, path45, eagerCompile);
      },
      render: function render3(name3, ctx, cb) {
        if (!e2) {
          configure2();
        }
        return e2.render(name3, ctx, cb);
      },
      renderString: function renderString(src, ctx, cb) {
        if (!e2) {
          configure2();
        }
        return e2.renderString(src, ctx, cb);
      },
      precompile: precompile ? precompile.precompile : void 0,
      precompileString: precompile ? precompile.precompileString : void 0
    };
  }
});

// ../../node_modules/docx/build/index.js
var require_build = __commonJS({
  "../../node_modules/docx/build/index.js"(exports2, module2) {
    !(function(e2, t2) {
      "object" == typeof exports2 && "object" == typeof module2 ? module2.exports = t2() : "function" == typeof define && define.amd ? define([], t2) : "object" == typeof exports2 ? exports2.docx = t2() : e2.docx = t2();
    })(globalThis, (() => (() => {
      var e2 = { 9742: (e3, t3) => {
        "use strict";
        t3.byteLength = function(e4) {
          var t4 = c(e4), r4 = t4[0], n3 = t4[1];
          return 3 * (r4 + n3) / 4 - n3;
        }, t3.toByteArray = function(e4) {
          var t4, r4, i3 = c(e4), o2 = i3[0], a3 = i3[1], u4 = new s5((function(e5, t5, r5) {
            return 3 * (t5 + r5) / 4 - r5;
          })(0, o2, a3)), l = 0, h4 = a3 > 0 ? o2 - 4 : o2;
          for (r4 = 0; r4 < h4; r4 += 4) t4 = n2[e4.charCodeAt(r4)] << 18 | n2[e4.charCodeAt(r4 + 1)] << 12 | n2[e4.charCodeAt(r4 + 2)] << 6 | n2[e4.charCodeAt(r4 + 3)], u4[l++] = t4 >> 16 & 255, u4[l++] = t4 >> 8 & 255, u4[l++] = 255 & t4;
          return 2 === a3 && (t4 = n2[e4.charCodeAt(r4)] << 2 | n2[e4.charCodeAt(r4 + 1)] >> 4, u4[l++] = 255 & t4), 1 === a3 && (t4 = n2[e4.charCodeAt(r4)] << 10 | n2[e4.charCodeAt(r4 + 1)] << 4 | n2[e4.charCodeAt(r4 + 2)] >> 2, u4[l++] = t4 >> 8 & 255, u4[l++] = 255 & t4), u4;
        }, t3.fromByteArray = function(e4) {
          for (var t4, n3 = e4.length, s6 = n3 % 3, i3 = [], o2 = 16383, a3 = 0, c2 = n3 - s6; a3 < c2; a3 += o2) i3.push(u3(e4, a3, a3 + o2 > c2 ? c2 : a3 + o2));
          return 1 === s6 ? (t4 = e4[n3 - 1], i3.push(r3[t4 >> 2] + r3[t4 << 4 & 63] + "==")) : 2 === s6 && (t4 = (e4[n3 - 2] << 8) + e4[n3 - 1], i3.push(r3[t4 >> 10] + r3[t4 >> 4 & 63] + r3[t4 << 2 & 63] + "=")), i3.join("");
        };
        for (var r3 = [], n2 = [], s5 = "undefined" != typeof Uint8Array ? Uint8Array : Array, i2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", o = 0, a2 = i2.length; o < a2; ++o) r3[o] = i2[o], n2[i2.charCodeAt(o)] = o;
        function c(e4) {
          var t4 = e4.length;
          if (t4 % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4");
          var r4 = e4.indexOf("=");
          return -1 === r4 && (r4 = t4), [r4, r4 === t4 ? 0 : 4 - r4 % 4];
        }
        function u3(e4, t4, n3) {
          for (var s6, i3, o2 = [], a3 = t4; a3 < n3; a3 += 3) s6 = (e4[a3] << 16 & 16711680) + (e4[a3 + 1] << 8 & 65280) + (255 & e4[a3 + 2]), o2.push(r3[(i3 = s6) >> 18 & 63] + r3[i3 >> 12 & 63] + r3[i3 >> 6 & 63] + r3[63 & i3]);
          return o2.join("");
        }
        n2["-".charCodeAt(0)] = 62, n2["_".charCodeAt(0)] = 63;
      }, 8764: (e3, t3, r3) => {
        "use strict";
        const n2 = r3(9742), s5 = r3(645), i2 = "function" == typeof Symbol && "function" == typeof Symbol.for ? Symbol.for("nodejs.util.inspect.custom") : null;
        t3.Buffer = c, t3.SlowBuffer = function(e4) {
          return +e4 != e4 && (e4 = 0), c.alloc(+e4);
        }, t3.INSPECT_MAX_BYTES = 50;
        const o = 2147483647;
        function a2(e4) {
          if (e4 > o) throw new RangeError('The value "' + e4 + '" is invalid for option "size"');
          const t4 = new Uint8Array(e4);
          return Object.setPrototypeOf(t4, c.prototype), t4;
        }
        function c(e4, t4, r4) {
          if ("number" == typeof e4) {
            if ("string" == typeof t4) throw new TypeError('The "string" argument must be of type string. Received type number');
            return h4(e4);
          }
          return u3(e4, t4, r4);
        }
        function u3(e4, t4, r4) {
          if ("string" == typeof e4) return (function(e5, t5) {
            if ("string" == typeof t5 && "" !== t5 || (t5 = "utf8"), !c.isEncoding(t5)) throw new TypeError("Unknown encoding: " + t5);
            const r5 = 0 | m2(e5, t5);
            let n4 = a2(r5);
            const s7 = n4.write(e5, t5);
            return s7 !== r5 && (n4 = n4.slice(0, s7)), n4;
          })(e4, t4);
          if (ArrayBuffer.isView(e4)) return (function(e5) {
            if (q2(e5, Uint8Array)) {
              const t5 = new Uint8Array(e5);
              return d(t5.buffer, t5.byteOffset, t5.byteLength);
            }
            return p5(e5);
          })(e4);
          if (null == e4) throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof e4);
          if (q2(e4, ArrayBuffer) || e4 && q2(e4.buffer, ArrayBuffer)) return d(e4, t4, r4);
          if ("undefined" != typeof SharedArrayBuffer && (q2(e4, SharedArrayBuffer) || e4 && q2(e4.buffer, SharedArrayBuffer))) return d(e4, t4, r4);
          if ("number" == typeof e4) throw new TypeError('The "value" argument must not be of type number. Received type number');
          const n3 = e4.valueOf && e4.valueOf();
          if (null != n3 && n3 !== e4) return c.from(n3, t4, r4);
          const s6 = (function(e5) {
            if (c.isBuffer(e5)) {
              const t5 = 0 | f3(e5.length), r5 = a2(t5);
              return 0 === r5.length || e5.copy(r5, 0, 0, t5), r5;
            }
            return void 0 !== e5.length ? "number" != typeof e5.length || Z2(e5.length) ? a2(0) : p5(e5) : "Buffer" === e5.type && Array.isArray(e5.data) ? p5(e5.data) : void 0;
          })(e4);
          if (s6) return s6;
          if ("undefined" != typeof Symbol && null != Symbol.toPrimitive && "function" == typeof e4[Symbol.toPrimitive]) return c.from(e4[Symbol.toPrimitive]("string"), t4, r4);
          throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof e4);
        }
        function l(e4) {
          if ("number" != typeof e4) throw new TypeError('"size" argument must be of type number');
          if (e4 < 0) throw new RangeError('The value "' + e4 + '" is invalid for option "size"');
        }
        function h4(e4) {
          return l(e4), a2(e4 < 0 ? 0 : 0 | f3(e4));
        }
        function p5(e4) {
          const t4 = e4.length < 0 ? 0 : 0 | f3(e4.length), r4 = a2(t4);
          for (let n3 = 0; n3 < t4; n3 += 1) r4[n3] = 255 & e4[n3];
          return r4;
        }
        function d(e4, t4, r4) {
          if (t4 < 0 || e4.byteLength < t4) throw new RangeError('"offset" is outside of buffer bounds');
          if (e4.byteLength < t4 + (r4 || 0)) throw new RangeError('"length" is outside of buffer bounds');
          let n3;
          return n3 = void 0 === t4 && void 0 === r4 ? new Uint8Array(e4) : void 0 === r4 ? new Uint8Array(e4, t4) : new Uint8Array(e4, t4, r4), Object.setPrototypeOf(n3, c.prototype), n3;
        }
        function f3(e4) {
          if (e4 >= o) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + o.toString(16) + " bytes");
          return 0 | e4;
        }
        function m2(e4, t4) {
          if (c.isBuffer(e4)) return e4.length;
          if (ArrayBuffer.isView(e4) || q2(e4, ArrayBuffer)) return e4.byteLength;
          if ("string" != typeof e4) throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof e4);
          const r4 = e4.length, n3 = arguments.length > 2 && true === arguments[2];
          if (!n3 && 0 === r4) return 0;
          let s6 = false;
          for (; ; ) switch (t4) {
            case "ascii":
            case "latin1":
            case "binary":
              return r4;
            case "utf8":
            case "utf-8":
              return V(e4).length;
            case "ucs2":
            case "ucs-2":
            case "utf16le":
            case "utf-16le":
              return 2 * r4;
            case "hex":
              return r4 >>> 1;
            case "base64":
              return $2(e4).length;
            default:
              if (s6) return n3 ? -1 : V(e4).length;
              t4 = ("" + t4).toLowerCase(), s6 = true;
          }
        }
        function w(e4, t4, r4) {
          let n3 = false;
          if ((void 0 === t4 || t4 < 0) && (t4 = 0), t4 > this.length) return "";
          if ((void 0 === r4 || r4 > this.length) && (r4 = this.length), r4 <= 0) return "";
          if ((r4 >>>= 0) <= (t4 >>>= 0)) return "";
          for (e4 || (e4 = "utf8"); ; ) switch (e4) {
            case "hex":
              return C(this, t4, r4);
            case "utf8":
            case "utf-8":
              return S3(this, t4, r4);
            case "ascii":
              return R(this, t4, r4);
            case "latin1":
            case "binary":
              return N(this, t4, r4);
            case "base64":
              return A2(this, t4, r4);
            case "ucs2":
            case "ucs-2":
            case "utf16le":
            case "utf-16le":
              return O(this, t4, r4);
            default:
              if (n3) throw new TypeError("Unknown encoding: " + e4);
              e4 = (e4 + "").toLowerCase(), n3 = true;
          }
        }
        function g(e4, t4, r4) {
          const n3 = e4[t4];
          e4[t4] = e4[r4], e4[r4] = n3;
        }
        function y(e4, t4, r4, n3, s6) {
          if (0 === e4.length) return -1;
          if ("string" == typeof r4 ? (n3 = r4, r4 = 0) : r4 > 2147483647 ? r4 = 2147483647 : r4 < -2147483648 && (r4 = -2147483648), Z2(r4 = +r4) && (r4 = s6 ? 0 : e4.length - 1), r4 < 0 && (r4 = e4.length + r4), r4 >= e4.length) {
            if (s6) return -1;
            r4 = e4.length - 1;
          } else if (r4 < 0) {
            if (!s6) return -1;
            r4 = 0;
          }
          if ("string" == typeof t4 && (t4 = c.from(t4, n3)), c.isBuffer(t4)) return 0 === t4.length ? -1 : b(e4, t4, r4, n3, s6);
          if ("number" == typeof t4) return t4 &= 255, "function" == typeof Uint8Array.prototype.indexOf ? s6 ? Uint8Array.prototype.indexOf.call(e4, t4, r4) : Uint8Array.prototype.lastIndexOf.call(e4, t4, r4) : b(e4, [t4], r4, n3, s6);
          throw new TypeError("val must be string, number or Buffer");
        }
        function b(e4, t4, r4, n3, s6) {
          let i3, o2 = 1, a3 = e4.length, c2 = t4.length;
          if (void 0 !== n3 && ("ucs2" === (n3 = String(n3).toLowerCase()) || "ucs-2" === n3 || "utf16le" === n3 || "utf-16le" === n3)) {
            if (e4.length < 2 || t4.length < 2) return -1;
            o2 = 2, a3 /= 2, c2 /= 2, r4 /= 2;
          }
          function u4(e5, t5) {
            return 1 === o2 ? e5[t5] : e5.readUInt16BE(t5 * o2);
          }
          if (s6) {
            let n4 = -1;
            for (i3 = r4; i3 < a3; i3++) if (u4(e4, i3) === u4(t4, -1 === n4 ? 0 : i3 - n4)) {
              if (-1 === n4 && (n4 = i3), i3 - n4 + 1 === c2) return n4 * o2;
            } else -1 !== n4 && (i3 -= i3 - n4), n4 = -1;
          } else for (r4 + c2 > a3 && (r4 = a3 - c2), i3 = r4; i3 >= 0; i3--) {
            let r5 = true;
            for (let n4 = 0; n4 < c2; n4++) if (u4(e4, i3 + n4) !== u4(t4, n4)) {
              r5 = false;
              break;
            }
            if (r5) return i3;
          }
          return -1;
        }
        function x2(e4, t4, r4, n3) {
          r4 = Number(r4) || 0;
          const s6 = e4.length - r4;
          n3 ? (n3 = Number(n3)) > s6 && (n3 = s6) : n3 = s6;
          const i3 = t4.length;
          let o2;
          for (n3 > i3 / 2 && (n3 = i3 / 2), o2 = 0; o2 < n3; ++o2) {
            const n4 = parseInt(t4.substr(2 * o2, 2), 16);
            if (Z2(n4)) return o2;
            e4[r4 + o2] = n4;
          }
          return o2;
        }
        function v(e4, t4, r4, n3) {
          return X(V(t4, e4.length - r4), e4, r4, n3);
        }
        function _2(e4, t4, r4, n3) {
          return X((function(e5) {
            const t5 = [];
            for (let r5 = 0; r5 < e5.length; ++r5) t5.push(255 & e5.charCodeAt(r5));
            return t5;
          })(t4), e4, r4, n3);
        }
        function E(e4, t4, r4, n3) {
          return X($2(t4), e4, r4, n3);
        }
        function T2(e4, t4, r4, n3) {
          return X((function(e5, t5) {
            let r5, n4, s6;
            const i3 = [];
            for (let o2 = 0; o2 < e5.length && !((t5 -= 2) < 0); ++o2) r5 = e5.charCodeAt(o2), n4 = r5 >> 8, s6 = r5 % 256, i3.push(s6), i3.push(n4);
            return i3;
          })(t4, e4.length - r4), e4, r4, n3);
        }
        function A2(e4, t4, r4) {
          return 0 === t4 && r4 === e4.length ? n2.fromByteArray(e4) : n2.fromByteArray(e4.slice(t4, r4));
        }
        function S3(e4, t4, r4) {
          r4 = Math.min(e4.length, r4);
          const n3 = [];
          let s6 = t4;
          for (; s6 < r4; ) {
            const t5 = e4[s6];
            let i3 = null, o2 = t5 > 239 ? 4 : t5 > 223 ? 3 : t5 > 191 ? 2 : 1;
            if (s6 + o2 <= r4) {
              let r5, n4, a3, c2;
              switch (o2) {
                case 1:
                  t5 < 128 && (i3 = t5);
                  break;
                case 2:
                  r5 = e4[s6 + 1], 128 == (192 & r5) && (c2 = (31 & t5) << 6 | 63 & r5, c2 > 127 && (i3 = c2));
                  break;
                case 3:
                  r5 = e4[s6 + 1], n4 = e4[s6 + 2], 128 == (192 & r5) && 128 == (192 & n4) && (c2 = (15 & t5) << 12 | (63 & r5) << 6 | 63 & n4, c2 > 2047 && (c2 < 55296 || c2 > 57343) && (i3 = c2));
                  break;
                case 4:
                  r5 = e4[s6 + 1], n4 = e4[s6 + 2], a3 = e4[s6 + 3], 128 == (192 & r5) && 128 == (192 & n4) && 128 == (192 & a3) && (c2 = (15 & t5) << 18 | (63 & r5) << 12 | (63 & n4) << 6 | 63 & a3, c2 > 65535 && c2 < 1114112 && (i3 = c2));
              }
            }
            null === i3 ? (i3 = 65533, o2 = 1) : i3 > 65535 && (i3 -= 65536, n3.push(i3 >>> 10 & 1023 | 55296), i3 = 56320 | 1023 & i3), n3.push(i3), s6 += o2;
          }
          return (function(e5) {
            const t5 = e5.length;
            if (t5 <= I) return String.fromCharCode.apply(String, e5);
            let r5 = "", n4 = 0;
            for (; n4 < t5; ) r5 += String.fromCharCode.apply(String, e5.slice(n4, n4 += I));
            return r5;
          })(n3);
        }
        t3.kMaxLength = o, c.TYPED_ARRAY_SUPPORT = (function() {
          try {
            const e4 = new Uint8Array(1), t4 = { foo: function() {
              return 42;
            } };
            return Object.setPrototypeOf(t4, Uint8Array.prototype), Object.setPrototypeOf(e4, t4), 42 === e4.foo();
          } catch (e4) {
            return false;
          }
        })(), c.TYPED_ARRAY_SUPPORT || "undefined" == typeof console || "function" != typeof console.error || console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."), Object.defineProperty(c.prototype, "parent", { enumerable: true, get: function() {
          if (c.isBuffer(this)) return this.buffer;
        } }), Object.defineProperty(c.prototype, "offset", { enumerable: true, get: function() {
          if (c.isBuffer(this)) return this.byteOffset;
        } }), c.poolSize = 8192, c.from = function(e4, t4, r4) {
          return u3(e4, t4, r4);
        }, Object.setPrototypeOf(c.prototype, Uint8Array.prototype), Object.setPrototypeOf(c, Uint8Array), c.alloc = function(e4, t4, r4) {
          return (function(e5, t5, r5) {
            return l(e5), e5 <= 0 ? a2(e5) : void 0 !== t5 ? "string" == typeof r5 ? a2(e5).fill(t5, r5) : a2(e5).fill(t5) : a2(e5);
          })(e4, t4, r4);
        }, c.allocUnsafe = function(e4) {
          return h4(e4);
        }, c.allocUnsafeSlow = function(e4) {
          return h4(e4);
        }, c.isBuffer = function(e4) {
          return null != e4 && true === e4._isBuffer && e4 !== c.prototype;
        }, c.compare = function(e4, t4) {
          if (q2(e4, Uint8Array) && (e4 = c.from(e4, e4.offset, e4.byteLength)), q2(t4, Uint8Array) && (t4 = c.from(t4, t4.offset, t4.byteLength)), !c.isBuffer(e4) || !c.isBuffer(t4)) throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');
          if (e4 === t4) return 0;
          let r4 = e4.length, n3 = t4.length;
          for (let s6 = 0, i3 = Math.min(r4, n3); s6 < i3; ++s6) if (e4[s6] !== t4[s6]) {
            r4 = e4[s6], n3 = t4[s6];
            break;
          }
          return r4 < n3 ? -1 : n3 < r4 ? 1 : 0;
        }, c.isEncoding = function(e4) {
          switch (String(e4).toLowerCase()) {
            case "hex":
            case "utf8":
            case "utf-8":
            case "ascii":
            case "latin1":
            case "binary":
            case "base64":
            case "ucs2":
            case "ucs-2":
            case "utf16le":
            case "utf-16le":
              return true;
            default:
              return false;
          }
        }, c.concat = function(e4, t4) {
          if (!Array.isArray(e4)) throw new TypeError('"list" argument must be an Array of Buffers');
          if (0 === e4.length) return c.alloc(0);
          let r4;
          if (void 0 === t4) for (t4 = 0, r4 = 0; r4 < e4.length; ++r4) t4 += e4[r4].length;
          const n3 = c.allocUnsafe(t4);
          let s6 = 0;
          for (r4 = 0; r4 < e4.length; ++r4) {
            let t5 = e4[r4];
            if (q2(t5, Uint8Array)) s6 + t5.length > n3.length ? (c.isBuffer(t5) || (t5 = c.from(t5)), t5.copy(n3, s6)) : Uint8Array.prototype.set.call(n3, t5, s6);
            else {
              if (!c.isBuffer(t5)) throw new TypeError('"list" argument must be an Array of Buffers');
              t5.copy(n3, s6);
            }
            s6 += t5.length;
          }
          return n3;
        }, c.byteLength = m2, c.prototype._isBuffer = true, c.prototype.swap16 = function() {
          const e4 = this.length;
          if (e4 % 2 != 0) throw new RangeError("Buffer size must be a multiple of 16-bits");
          for (let t4 = 0; t4 < e4; t4 += 2) g(this, t4, t4 + 1);
          return this;
        }, c.prototype.swap32 = function() {
          const e4 = this.length;
          if (e4 % 4 != 0) throw new RangeError("Buffer size must be a multiple of 32-bits");
          for (let t4 = 0; t4 < e4; t4 += 4) g(this, t4, t4 + 3), g(this, t4 + 1, t4 + 2);
          return this;
        }, c.prototype.swap64 = function() {
          const e4 = this.length;
          if (e4 % 8 != 0) throw new RangeError("Buffer size must be a multiple of 64-bits");
          for (let t4 = 0; t4 < e4; t4 += 8) g(this, t4, t4 + 7), g(this, t4 + 1, t4 + 6), g(this, t4 + 2, t4 + 5), g(this, t4 + 3, t4 + 4);
          return this;
        }, c.prototype.toString = function() {
          const e4 = this.length;
          return 0 === e4 ? "" : 0 === arguments.length ? S3(this, 0, e4) : w.apply(this, arguments);
        }, c.prototype.toLocaleString = c.prototype.toString, c.prototype.equals = function(e4) {
          if (!c.isBuffer(e4)) throw new TypeError("Argument must be a Buffer");
          return this === e4 || 0 === c.compare(this, e4);
        }, c.prototype.inspect = function() {
          let e4 = "";
          const r4 = t3.INSPECT_MAX_BYTES;
          return e4 = this.toString("hex", 0, r4).replace(/(.{2})/g, "$1 ").trim(), this.length > r4 && (e4 += " ... "), "<Buffer " + e4 + ">";
        }, i2 && (c.prototype[i2] = c.prototype.inspect), c.prototype.compare = function(e4, t4, r4, n3, s6) {
          if (q2(e4, Uint8Array) && (e4 = c.from(e4, e4.offset, e4.byteLength)), !c.isBuffer(e4)) throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof e4);
          if (void 0 === t4 && (t4 = 0), void 0 === r4 && (r4 = e4 ? e4.length : 0), void 0 === n3 && (n3 = 0), void 0 === s6 && (s6 = this.length), t4 < 0 || r4 > e4.length || n3 < 0 || s6 > this.length) throw new RangeError("out of range index");
          if (n3 >= s6 && t4 >= r4) return 0;
          if (n3 >= s6) return -1;
          if (t4 >= r4) return 1;
          if (this === e4) return 0;
          let i3 = (s6 >>>= 0) - (n3 >>>= 0), o2 = (r4 >>>= 0) - (t4 >>>= 0);
          const a3 = Math.min(i3, o2), u4 = this.slice(n3, s6), l2 = e4.slice(t4, r4);
          for (let e5 = 0; e5 < a3; ++e5) if (u4[e5] !== l2[e5]) {
            i3 = u4[e5], o2 = l2[e5];
            break;
          }
          return i3 < o2 ? -1 : o2 < i3 ? 1 : 0;
        }, c.prototype.includes = function(e4, t4, r4) {
          return -1 !== this.indexOf(e4, t4, r4);
        }, c.prototype.indexOf = function(e4, t4, r4) {
          return y(this, e4, t4, r4, true);
        }, c.prototype.lastIndexOf = function(e4, t4, r4) {
          return y(this, e4, t4, r4, false);
        }, c.prototype.write = function(e4, t4, r4, n3) {
          if (void 0 === t4) n3 = "utf8", r4 = this.length, t4 = 0;
          else if (void 0 === r4 && "string" == typeof t4) n3 = t4, r4 = this.length, t4 = 0;
          else {
            if (!isFinite(t4)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
            t4 >>>= 0, isFinite(r4) ? (r4 >>>= 0, void 0 === n3 && (n3 = "utf8")) : (n3 = r4, r4 = void 0);
          }
          const s6 = this.length - t4;
          if ((void 0 === r4 || r4 > s6) && (r4 = s6), e4.length > 0 && (r4 < 0 || t4 < 0) || t4 > this.length) throw new RangeError("Attempt to write outside buffer bounds");
          n3 || (n3 = "utf8");
          let i3 = false;
          for (; ; ) switch (n3) {
            case "hex":
              return x2(this, e4, t4, r4);
            case "utf8":
            case "utf-8":
              return v(this, e4, t4, r4);
            case "ascii":
            case "latin1":
            case "binary":
              return _2(this, e4, t4, r4);
            case "base64":
              return E(this, e4, t4, r4);
            case "ucs2":
            case "ucs-2":
            case "utf16le":
            case "utf-16le":
              return T2(this, e4, t4, r4);
            default:
              if (i3) throw new TypeError("Unknown encoding: " + n3);
              n3 = ("" + n3).toLowerCase(), i3 = true;
          }
        }, c.prototype.toJSON = function() {
          return { type: "Buffer", data: Array.prototype.slice.call(this._arr || this, 0) };
        };
        const I = 4096;
        function R(e4, t4, r4) {
          let n3 = "";
          r4 = Math.min(e4.length, r4);
          for (let s6 = t4; s6 < r4; ++s6) n3 += String.fromCharCode(127 & e4[s6]);
          return n3;
        }
        function N(e4, t4, r4) {
          let n3 = "";
          r4 = Math.min(e4.length, r4);
          for (let s6 = t4; s6 < r4; ++s6) n3 += String.fromCharCode(e4[s6]);
          return n3;
        }
        function C(e4, t4, r4) {
          const n3 = e4.length;
          (!t4 || t4 < 0) && (t4 = 0), (!r4 || r4 < 0 || r4 > n3) && (r4 = n3);
          let s6 = "";
          for (let n4 = t4; n4 < r4; ++n4) s6 += Y[e4[n4]];
          return s6;
        }
        function O(e4, t4, r4) {
          const n3 = e4.slice(t4, r4);
          let s6 = "";
          for (let e5 = 0; e5 < n3.length - 1; e5 += 2) s6 += String.fromCharCode(n3[e5] + 256 * n3[e5 + 1]);
          return s6;
        }
        function k(e4, t4, r4) {
          if (e4 % 1 != 0 || e4 < 0) throw new RangeError("offset is not uint");
          if (e4 + t4 > r4) throw new RangeError("Trying to access beyond buffer length");
        }
        function L(e4, t4, r4, n3, s6, i3) {
          if (!c.isBuffer(e4)) throw new TypeError('"buffer" argument must be a Buffer instance');
          if (t4 > s6 || t4 < i3) throw new RangeError('"value" argument is out of bounds');
          if (r4 + n3 > e4.length) throw new RangeError("Index out of range");
        }
        function D2(e4, t4, r4, n3, s6) {
          j(t4, n3, s6, e4, r4, 7);
          let i3 = Number(t4 & BigInt(4294967295));
          e4[r4++] = i3, i3 >>= 8, e4[r4++] = i3, i3 >>= 8, e4[r4++] = i3, i3 >>= 8, e4[r4++] = i3;
          let o2 = Number(t4 >> BigInt(32) & BigInt(4294967295));
          return e4[r4++] = o2, o2 >>= 8, e4[r4++] = o2, o2 >>= 8, e4[r4++] = o2, o2 >>= 8, e4[r4++] = o2, r4;
        }
        function P(e4, t4, r4, n3, s6) {
          j(t4, n3, s6, e4, r4, 7);
          let i3 = Number(t4 & BigInt(4294967295));
          e4[r4 + 7] = i3, i3 >>= 8, e4[r4 + 6] = i3, i3 >>= 8, e4[r4 + 5] = i3, i3 >>= 8, e4[r4 + 4] = i3;
          let o2 = Number(t4 >> BigInt(32) & BigInt(4294967295));
          return e4[r4 + 3] = o2, o2 >>= 8, e4[r4 + 2] = o2, o2 >>= 8, e4[r4 + 1] = o2, o2 >>= 8, e4[r4] = o2, r4 + 8;
        }
        function F2(e4, t4, r4, n3, s6, i3) {
          if (r4 + n3 > e4.length) throw new RangeError("Index out of range");
          if (r4 < 0) throw new RangeError("Index out of range");
        }
        function B(e4, t4, r4, n3, i3) {
          return t4 = +t4, r4 >>>= 0, i3 || F2(e4, 0, r4, 4), s5.write(e4, t4, r4, n3, 23, 4), r4 + 4;
        }
        function M(e4, t4, r4, n3, i3) {
          return t4 = +t4, r4 >>>= 0, i3 || F2(e4, 0, r4, 8), s5.write(e4, t4, r4, n3, 52, 8), r4 + 8;
        }
        c.prototype.slice = function(e4, t4) {
          const r4 = this.length;
          (e4 = ~~e4) < 0 ? (e4 += r4) < 0 && (e4 = 0) : e4 > r4 && (e4 = r4), (t4 = void 0 === t4 ? r4 : ~~t4) < 0 ? (t4 += r4) < 0 && (t4 = 0) : t4 > r4 && (t4 = r4), t4 < e4 && (t4 = e4);
          const n3 = this.subarray(e4, t4);
          return Object.setPrototypeOf(n3, c.prototype), n3;
        }, c.prototype.readUintLE = c.prototype.readUIntLE = function(e4, t4, r4) {
          e4 >>>= 0, t4 >>>= 0, r4 || k(e4, t4, this.length);
          let n3 = this[e4], s6 = 1, i3 = 0;
          for (; ++i3 < t4 && (s6 *= 256); ) n3 += this[e4 + i3] * s6;
          return n3;
        }, c.prototype.readUintBE = c.prototype.readUIntBE = function(e4, t4, r4) {
          e4 >>>= 0, t4 >>>= 0, r4 || k(e4, t4, this.length);
          let n3 = this[e4 + --t4], s6 = 1;
          for (; t4 > 0 && (s6 *= 256); ) n3 += this[e4 + --t4] * s6;
          return n3;
        }, c.prototype.readUint8 = c.prototype.readUInt8 = function(e4, t4) {
          return e4 >>>= 0, t4 || k(e4, 1, this.length), this[e4];
        }, c.prototype.readUint16LE = c.prototype.readUInt16LE = function(e4, t4) {
          return e4 >>>= 0, t4 || k(e4, 2, this.length), this[e4] | this[e4 + 1] << 8;
        }, c.prototype.readUint16BE = c.prototype.readUInt16BE = function(e4, t4) {
          return e4 >>>= 0, t4 || k(e4, 2, this.length), this[e4] << 8 | this[e4 + 1];
        }, c.prototype.readUint32LE = c.prototype.readUInt32LE = function(e4, t4) {
          return e4 >>>= 0, t4 || k(e4, 4, this.length), (this[e4] | this[e4 + 1] << 8 | this[e4 + 2] << 16) + 16777216 * this[e4 + 3];
        }, c.prototype.readUint32BE = c.prototype.readUInt32BE = function(e4, t4) {
          return e4 >>>= 0, t4 || k(e4, 4, this.length), 16777216 * this[e4] + (this[e4 + 1] << 16 | this[e4 + 2] << 8 | this[e4 + 3]);
        }, c.prototype.readBigUInt64LE = J((function(e4) {
          W(e4 >>>= 0, "offset");
          const t4 = this[e4], r4 = this[e4 + 7];
          void 0 !== t4 && void 0 !== r4 || K(e4, this.length - 8);
          const n3 = t4 + 256 * this[++e4] + 65536 * this[++e4] + this[++e4] * 2 ** 24, s6 = this[++e4] + 256 * this[++e4] + 65536 * this[++e4] + r4 * 2 ** 24;
          return BigInt(n3) + (BigInt(s6) << BigInt(32));
        })), c.prototype.readBigUInt64BE = J((function(e4) {
          W(e4 >>>= 0, "offset");
          const t4 = this[e4], r4 = this[e4 + 7];
          void 0 !== t4 && void 0 !== r4 || K(e4, this.length - 8);
          const n3 = t4 * 2 ** 24 + 65536 * this[++e4] + 256 * this[++e4] + this[++e4], s6 = this[++e4] * 2 ** 24 + 65536 * this[++e4] + 256 * this[++e4] + r4;
          return (BigInt(n3) << BigInt(32)) + BigInt(s6);
        })), c.prototype.readIntLE = function(e4, t4, r4) {
          e4 >>>= 0, t4 >>>= 0, r4 || k(e4, t4, this.length);
          let n3 = this[e4], s6 = 1, i3 = 0;
          for (; ++i3 < t4 && (s6 *= 256); ) n3 += this[e4 + i3] * s6;
          return s6 *= 128, n3 >= s6 && (n3 -= Math.pow(2, 8 * t4)), n3;
        }, c.prototype.readIntBE = function(e4, t4, r4) {
          e4 >>>= 0, t4 >>>= 0, r4 || k(e4, t4, this.length);
          let n3 = t4, s6 = 1, i3 = this[e4 + --n3];
          for (; n3 > 0 && (s6 *= 256); ) i3 += this[e4 + --n3] * s6;
          return s6 *= 128, i3 >= s6 && (i3 -= Math.pow(2, 8 * t4)), i3;
        }, c.prototype.readInt8 = function(e4, t4) {
          return e4 >>>= 0, t4 || k(e4, 1, this.length), 128 & this[e4] ? -1 * (255 - this[e4] + 1) : this[e4];
        }, c.prototype.readInt16LE = function(e4, t4) {
          e4 >>>= 0, t4 || k(e4, 2, this.length);
          const r4 = this[e4] | this[e4 + 1] << 8;
          return 32768 & r4 ? 4294901760 | r4 : r4;
        }, c.prototype.readInt16BE = function(e4, t4) {
          e4 >>>= 0, t4 || k(e4, 2, this.length);
          const r4 = this[e4 + 1] | this[e4] << 8;
          return 32768 & r4 ? 4294901760 | r4 : r4;
        }, c.prototype.readInt32LE = function(e4, t4) {
          return e4 >>>= 0, t4 || k(e4, 4, this.length), this[e4] | this[e4 + 1] << 8 | this[e4 + 2] << 16 | this[e4 + 3] << 24;
        }, c.prototype.readInt32BE = function(e4, t4) {
          return e4 >>>= 0, t4 || k(e4, 4, this.length), this[e4] << 24 | this[e4 + 1] << 16 | this[e4 + 2] << 8 | this[e4 + 3];
        }, c.prototype.readBigInt64LE = J((function(e4) {
          W(e4 >>>= 0, "offset");
          const t4 = this[e4], r4 = this[e4 + 7];
          void 0 !== t4 && void 0 !== r4 || K(e4, this.length - 8);
          const n3 = this[e4 + 4] + 256 * this[e4 + 5] + 65536 * this[e4 + 6] + (r4 << 24);
          return (BigInt(n3) << BigInt(32)) + BigInt(t4 + 256 * this[++e4] + 65536 * this[++e4] + this[++e4] * 2 ** 24);
        })), c.prototype.readBigInt64BE = J((function(e4) {
          W(e4 >>>= 0, "offset");
          const t4 = this[e4], r4 = this[e4 + 7];
          void 0 !== t4 && void 0 !== r4 || K(e4, this.length - 8);
          const n3 = (t4 << 24) + 65536 * this[++e4] + 256 * this[++e4] + this[++e4];
          return (BigInt(n3) << BigInt(32)) + BigInt(this[++e4] * 2 ** 24 + 65536 * this[++e4] + 256 * this[++e4] + r4);
        })), c.prototype.readFloatLE = function(e4, t4) {
          return e4 >>>= 0, t4 || k(e4, 4, this.length), s5.read(this, e4, true, 23, 4);
        }, c.prototype.readFloatBE = function(e4, t4) {
          return e4 >>>= 0, t4 || k(e4, 4, this.length), s5.read(this, e4, false, 23, 4);
        }, c.prototype.readDoubleLE = function(e4, t4) {
          return e4 >>>= 0, t4 || k(e4, 8, this.length), s5.read(this, e4, true, 52, 8);
        }, c.prototype.readDoubleBE = function(e4, t4) {
          return e4 >>>= 0, t4 || k(e4, 8, this.length), s5.read(this, e4, false, 52, 8);
        }, c.prototype.writeUintLE = c.prototype.writeUIntLE = function(e4, t4, r4, n3) {
          e4 = +e4, t4 >>>= 0, r4 >>>= 0, n3 || L(this, e4, t4, r4, Math.pow(2, 8 * r4) - 1, 0);
          let s6 = 1, i3 = 0;
          for (this[t4] = 255 & e4; ++i3 < r4 && (s6 *= 256); ) this[t4 + i3] = e4 / s6 & 255;
          return t4 + r4;
        }, c.prototype.writeUintBE = c.prototype.writeUIntBE = function(e4, t4, r4, n3) {
          e4 = +e4, t4 >>>= 0, r4 >>>= 0, n3 || L(this, e4, t4, r4, Math.pow(2, 8 * r4) - 1, 0);
          let s6 = r4 - 1, i3 = 1;
          for (this[t4 + s6] = 255 & e4; --s6 >= 0 && (i3 *= 256); ) this[t4 + s6] = e4 / i3 & 255;
          return t4 + r4;
        }, c.prototype.writeUint8 = c.prototype.writeUInt8 = function(e4, t4, r4) {
          return e4 = +e4, t4 >>>= 0, r4 || L(this, e4, t4, 1, 255, 0), this[t4] = 255 & e4, t4 + 1;
        }, c.prototype.writeUint16LE = c.prototype.writeUInt16LE = function(e4, t4, r4) {
          return e4 = +e4, t4 >>>= 0, r4 || L(this, e4, t4, 2, 65535, 0), this[t4] = 255 & e4, this[t4 + 1] = e4 >>> 8, t4 + 2;
        }, c.prototype.writeUint16BE = c.prototype.writeUInt16BE = function(e4, t4, r4) {
          return e4 = +e4, t4 >>>= 0, r4 || L(this, e4, t4, 2, 65535, 0), this[t4] = e4 >>> 8, this[t4 + 1] = 255 & e4, t4 + 2;
        }, c.prototype.writeUint32LE = c.prototype.writeUInt32LE = function(e4, t4, r4) {
          return e4 = +e4, t4 >>>= 0, r4 || L(this, e4, t4, 4, 4294967295, 0), this[t4 + 3] = e4 >>> 24, this[t4 + 2] = e4 >>> 16, this[t4 + 1] = e4 >>> 8, this[t4] = 255 & e4, t4 + 4;
        }, c.prototype.writeUint32BE = c.prototype.writeUInt32BE = function(e4, t4, r4) {
          return e4 = +e4, t4 >>>= 0, r4 || L(this, e4, t4, 4, 4294967295, 0), this[t4] = e4 >>> 24, this[t4 + 1] = e4 >>> 16, this[t4 + 2] = e4 >>> 8, this[t4 + 3] = 255 & e4, t4 + 4;
        }, c.prototype.writeBigUInt64LE = J((function(e4, t4 = 0) {
          return D2(this, e4, t4, BigInt(0), BigInt("0xffffffffffffffff"));
        })), c.prototype.writeBigUInt64BE = J((function(e4, t4 = 0) {
          return P(this, e4, t4, BigInt(0), BigInt("0xffffffffffffffff"));
        })), c.prototype.writeIntLE = function(e4, t4, r4, n3) {
          if (e4 = +e4, t4 >>>= 0, !n3) {
            const n4 = Math.pow(2, 8 * r4 - 1);
            L(this, e4, t4, r4, n4 - 1, -n4);
          }
          let s6 = 0, i3 = 1, o2 = 0;
          for (this[t4] = 255 & e4; ++s6 < r4 && (i3 *= 256); ) e4 < 0 && 0 === o2 && 0 !== this[t4 + s6 - 1] && (o2 = 1), this[t4 + s6] = (e4 / i3 >> 0) - o2 & 255;
          return t4 + r4;
        }, c.prototype.writeIntBE = function(e4, t4, r4, n3) {
          if (e4 = +e4, t4 >>>= 0, !n3) {
            const n4 = Math.pow(2, 8 * r4 - 1);
            L(this, e4, t4, r4, n4 - 1, -n4);
          }
          let s6 = r4 - 1, i3 = 1, o2 = 0;
          for (this[t4 + s6] = 255 & e4; --s6 >= 0 && (i3 *= 256); ) e4 < 0 && 0 === o2 && 0 !== this[t4 + s6 + 1] && (o2 = 1), this[t4 + s6] = (e4 / i3 >> 0) - o2 & 255;
          return t4 + r4;
        }, c.prototype.writeInt8 = function(e4, t4, r4) {
          return e4 = +e4, t4 >>>= 0, r4 || L(this, e4, t4, 1, 127, -128), e4 < 0 && (e4 = 255 + e4 + 1), this[t4] = 255 & e4, t4 + 1;
        }, c.prototype.writeInt16LE = function(e4, t4, r4) {
          return e4 = +e4, t4 >>>= 0, r4 || L(this, e4, t4, 2, 32767, -32768), this[t4] = 255 & e4, this[t4 + 1] = e4 >>> 8, t4 + 2;
        }, c.prototype.writeInt16BE = function(e4, t4, r4) {
          return e4 = +e4, t4 >>>= 0, r4 || L(this, e4, t4, 2, 32767, -32768), this[t4] = e4 >>> 8, this[t4 + 1] = 255 & e4, t4 + 2;
        }, c.prototype.writeInt32LE = function(e4, t4, r4) {
          return e4 = +e4, t4 >>>= 0, r4 || L(this, e4, t4, 4, 2147483647, -2147483648), this[t4] = 255 & e4, this[t4 + 1] = e4 >>> 8, this[t4 + 2] = e4 >>> 16, this[t4 + 3] = e4 >>> 24, t4 + 4;
        }, c.prototype.writeInt32BE = function(e4, t4, r4) {
          return e4 = +e4, t4 >>>= 0, r4 || L(this, e4, t4, 4, 2147483647, -2147483648), e4 < 0 && (e4 = 4294967295 + e4 + 1), this[t4] = e4 >>> 24, this[t4 + 1] = e4 >>> 16, this[t4 + 2] = e4 >>> 8, this[t4 + 3] = 255 & e4, t4 + 4;
        }, c.prototype.writeBigInt64LE = J((function(e4, t4 = 0) {
          return D2(this, e4, t4, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"));
        })), c.prototype.writeBigInt64BE = J((function(e4, t4 = 0) {
          return P(this, e4, t4, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"));
        })), c.prototype.writeFloatLE = function(e4, t4, r4) {
          return B(this, e4, t4, true, r4);
        }, c.prototype.writeFloatBE = function(e4, t4, r4) {
          return B(this, e4, t4, false, r4);
        }, c.prototype.writeDoubleLE = function(e4, t4, r4) {
          return M(this, e4, t4, true, r4);
        }, c.prototype.writeDoubleBE = function(e4, t4, r4) {
          return M(this, e4, t4, false, r4);
        }, c.prototype.copy = function(e4, t4, r4, n3) {
          if (!c.isBuffer(e4)) throw new TypeError("argument should be a Buffer");
          if (r4 || (r4 = 0), n3 || 0 === n3 || (n3 = this.length), t4 >= e4.length && (t4 = e4.length), t4 || (t4 = 0), n3 > 0 && n3 < r4 && (n3 = r4), n3 === r4) return 0;
          if (0 === e4.length || 0 === this.length) return 0;
          if (t4 < 0) throw new RangeError("targetStart out of bounds");
          if (r4 < 0 || r4 >= this.length) throw new RangeError("Index out of range");
          if (n3 < 0) throw new RangeError("sourceEnd out of bounds");
          n3 > this.length && (n3 = this.length), e4.length - t4 < n3 - r4 && (n3 = e4.length - t4 + r4);
          const s6 = n3 - r4;
          return this === e4 && "function" == typeof Uint8Array.prototype.copyWithin ? this.copyWithin(t4, r4, n3) : Uint8Array.prototype.set.call(e4, this.subarray(r4, n3), t4), s6;
        }, c.prototype.fill = function(e4, t4, r4, n3) {
          if ("string" == typeof e4) {
            if ("string" == typeof t4 ? (n3 = t4, t4 = 0, r4 = this.length) : "string" == typeof r4 && (n3 = r4, r4 = this.length), void 0 !== n3 && "string" != typeof n3) throw new TypeError("encoding must be a string");
            if ("string" == typeof n3 && !c.isEncoding(n3)) throw new TypeError("Unknown encoding: " + n3);
            if (1 === e4.length) {
              const t5 = e4.charCodeAt(0);
              ("utf8" === n3 && t5 < 128 || "latin1" === n3) && (e4 = t5);
            }
          } else "number" == typeof e4 ? e4 &= 255 : "boolean" == typeof e4 && (e4 = Number(e4));
          if (t4 < 0 || this.length < t4 || this.length < r4) throw new RangeError("Out of range index");
          if (r4 <= t4) return this;
          let s6;
          if (t4 >>>= 0, r4 = void 0 === r4 ? this.length : r4 >>> 0, e4 || (e4 = 0), "number" == typeof e4) for (s6 = t4; s6 < r4; ++s6) this[s6] = e4;
          else {
            const i3 = c.isBuffer(e4) ? e4 : c.from(e4, n3), o2 = i3.length;
            if (0 === o2) throw new TypeError('The value "' + e4 + '" is invalid for argument "value"');
            for (s6 = 0; s6 < r4 - t4; ++s6) this[s6 + t4] = i3[s6 % o2];
          }
          return this;
        };
        const U = {};
        function H(e4, t4, r4) {
          U[e4] = class extends r4 {
            constructor() {
              super(), Object.defineProperty(this, "message", { value: t4.apply(this, arguments), writable: true, configurable: true }), this.name = `${this.name} [${e4}]`, this.stack, delete this.name;
            }
            get code() {
              return e4;
            }
            set code(e5) {
              Object.defineProperty(this, "code", { configurable: true, enumerable: true, value: e5, writable: true });
            }
            toString() {
              return `${this.name} [${e4}]: ${this.message}`;
            }
          };
        }
        function z2(e4) {
          let t4 = "", r4 = e4.length;
          const n3 = "-" === e4[0] ? 1 : 0;
          for (; r4 >= n3 + 4; r4 -= 3) t4 = `_${e4.slice(r4 - 3, r4)}${t4}`;
          return `${e4.slice(0, r4)}${t4}`;
        }
        function j(e4, t4, r4, n3, s6, i3) {
          if (e4 > r4 || e4 < t4) {
            const n4 = "bigint" == typeof t4 ? "n" : "";
            let s7;
            throw s7 = i3 > 3 ? 0 === t4 || t4 === BigInt(0) ? `>= 0${n4} and < 2${n4} ** ${8 * (i3 + 1)}${n4}` : `>= -(2${n4} ** ${8 * (i3 + 1) - 1}${n4}) and < 2 ** ${8 * (i3 + 1) - 1}${n4}` : `>= ${t4}${n4} and <= ${r4}${n4}`, new U.ERR_OUT_OF_RANGE("value", s7, e4);
          }
          !(function(e5, t5, r5) {
            W(t5, "offset"), void 0 !== e5[t5] && void 0 !== e5[t5 + r5] || K(t5, e5.length - (r5 + 1));
          })(n3, s6, i3);
        }
        function W(e4, t4) {
          if ("number" != typeof e4) throw new U.ERR_INVALID_ARG_TYPE(t4, "number", e4);
        }
        function K(e4, t4, r4) {
          if (Math.floor(e4) !== e4) throw W(e4, r4), new U.ERR_OUT_OF_RANGE(r4 || "offset", "an integer", e4);
          if (t4 < 0) throw new U.ERR_BUFFER_OUT_OF_BOUNDS();
          throw new U.ERR_OUT_OF_RANGE(r4 || "offset", `>= ${r4 ? 1 : 0} and <= ${t4}`, e4);
        }
        H("ERR_BUFFER_OUT_OF_BOUNDS", (function(e4) {
          return e4 ? `${e4} is outside of buffer bounds` : "Attempt to access memory outside buffer bounds";
        }), RangeError), H("ERR_INVALID_ARG_TYPE", (function(e4, t4) {
          return `The "${e4}" argument must be of type number. Received type ${typeof t4}`;
        }), TypeError), H("ERR_OUT_OF_RANGE", (function(e4, t4, r4) {
          let n3 = `The value of "${e4}" is out of range.`, s6 = r4;
          return Number.isInteger(r4) && Math.abs(r4) > 2 ** 32 ? s6 = z2(String(r4)) : "bigint" == typeof r4 && (s6 = String(r4), (r4 > BigInt(2) ** BigInt(32) || r4 < -(BigInt(2) ** BigInt(32))) && (s6 = z2(s6)), s6 += "n"), n3 += ` It must be ${t4}. Received ${s6}`, n3;
        }), RangeError);
        const G = /[^+/0-9A-Za-z-_]/g;
        function V(e4, t4) {
          let r4;
          t4 = t4 || 1 / 0;
          const n3 = e4.length;
          let s6 = null;
          const i3 = [];
          for (let o2 = 0; o2 < n3; ++o2) {
            if (r4 = e4.charCodeAt(o2), r4 > 55295 && r4 < 57344) {
              if (!s6) {
                if (r4 > 56319) {
                  (t4 -= 3) > -1 && i3.push(239, 191, 189);
                  continue;
                }
                if (o2 + 1 === n3) {
                  (t4 -= 3) > -1 && i3.push(239, 191, 189);
                  continue;
                }
                s6 = r4;
                continue;
              }
              if (r4 < 56320) {
                (t4 -= 3) > -1 && i3.push(239, 191, 189), s6 = r4;
                continue;
              }
              r4 = 65536 + (s6 - 55296 << 10 | r4 - 56320);
            } else s6 && (t4 -= 3) > -1 && i3.push(239, 191, 189);
            if (s6 = null, r4 < 128) {
              if ((t4 -= 1) < 0) break;
              i3.push(r4);
            } else if (r4 < 2048) {
              if ((t4 -= 2) < 0) break;
              i3.push(r4 >> 6 | 192, 63 & r4 | 128);
            } else if (r4 < 65536) {
              if ((t4 -= 3) < 0) break;
              i3.push(r4 >> 12 | 224, r4 >> 6 & 63 | 128, 63 & r4 | 128);
            } else {
              if (!(r4 < 1114112)) throw new Error("Invalid code point");
              if ((t4 -= 4) < 0) break;
              i3.push(r4 >> 18 | 240, r4 >> 12 & 63 | 128, r4 >> 6 & 63 | 128, 63 & r4 | 128);
            }
          }
          return i3;
        }
        function $2(e4) {
          return n2.toByteArray((function(e5) {
            if ((e5 = (e5 = e5.split("=")[0]).trim().replace(G, "")).length < 2) return "";
            for (; e5.length % 4 != 0; ) e5 += "=";
            return e5;
          })(e4));
        }
        function X(e4, t4, r4, n3) {
          let s6;
          for (s6 = 0; s6 < n3 && !(s6 + r4 >= t4.length || s6 >= e4.length); ++s6) t4[s6 + r4] = e4[s6];
          return s6;
        }
        function q2(e4, t4) {
          return e4 instanceof t4 || null != e4 && null != e4.constructor && null != e4.constructor.name && e4.constructor.name === t4.name;
        }
        function Z2(e4) {
          return e4 != e4;
        }
        const Y = (function() {
          const e4 = "0123456789abcdef", t4 = new Array(256);
          for (let r4 = 0; r4 < 16; ++r4) {
            const n3 = 16 * r4;
            for (let s6 = 0; s6 < 16; ++s6) t4[n3 + s6] = e4[r4] + e4[s6];
          }
          return t4;
        })();
        function J(e4) {
          return "undefined" == typeof BigInt ? Q : e4;
        }
        function Q() {
          throw new Error("BigInt not supported");
        }
      }, 7187: (e3) => {
        "use strict";
        var t3, r3 = "object" == typeof Reflect ? Reflect : null, n2 = r3 && "function" == typeof r3.apply ? r3.apply : function(e4, t4, r4) {
          return Function.prototype.apply.call(e4, t4, r4);
        };
        t3 = r3 && "function" == typeof r3.ownKeys ? r3.ownKeys : Object.getOwnPropertySymbols ? function(e4) {
          return Object.getOwnPropertyNames(e4).concat(Object.getOwnPropertySymbols(e4));
        } : function(e4) {
          return Object.getOwnPropertyNames(e4);
        };
        var s5 = Number.isNaN || function(e4) {
          return e4 != e4;
        };
        function i2() {
          i2.init.call(this);
        }
        e3.exports = i2, e3.exports.once = function(e4, t4) {
          return new Promise((function(r4, n3) {
            function s6(r5) {
              e4.removeListener(t4, i3), n3(r5);
            }
            function i3() {
              "function" == typeof e4.removeListener && e4.removeListener("error", s6), r4([].slice.call(arguments));
            }
            m2(e4, t4, i3, { once: true }), "error" !== t4 && (function(e5, t5, r5) {
              "function" == typeof e5.on && m2(e5, "error", t5, { once: true });
            })(e4, s6);
          }));
        }, i2.EventEmitter = i2, i2.prototype._events = void 0, i2.prototype._eventsCount = 0, i2.prototype._maxListeners = void 0;
        var o = 10;
        function a2(e4) {
          if ("function" != typeof e4) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e4);
        }
        function c(e4) {
          return void 0 === e4._maxListeners ? i2.defaultMaxListeners : e4._maxListeners;
        }
        function u3(e4, t4, r4, n3) {
          var s6, i3, o2, u4;
          if (a2(r4), void 0 === (i3 = e4._events) ? (i3 = e4._events = /* @__PURE__ */ Object.create(null), e4._eventsCount = 0) : (void 0 !== i3.newListener && (e4.emit("newListener", t4, r4.listener ? r4.listener : r4), i3 = e4._events), o2 = i3[t4]), void 0 === o2) o2 = i3[t4] = r4, ++e4._eventsCount;
          else if ("function" == typeof o2 ? o2 = i3[t4] = n3 ? [r4, o2] : [o2, r4] : n3 ? o2.unshift(r4) : o2.push(r4), (s6 = c(e4)) > 0 && o2.length > s6 && !o2.warned) {
            o2.warned = true;
            var l2 = new Error("Possible EventEmitter memory leak detected. " + o2.length + " " + String(t4) + " listeners added. Use emitter.setMaxListeners() to increase limit");
            l2.name = "MaxListenersExceededWarning", l2.emitter = e4, l2.type = t4, l2.count = o2.length, u4 = l2, console && console.warn && console.warn(u4);
          }
          return e4;
        }
        function l() {
          if (!this.fired) return this.target.removeListener(this.type, this.wrapFn), this.fired = true, 0 === arguments.length ? this.listener.call(this.target) : this.listener.apply(this.target, arguments);
        }
        function h4(e4, t4, r4) {
          var n3 = { fired: false, wrapFn: void 0, target: e4, type: t4, listener: r4 }, s6 = l.bind(n3);
          return s6.listener = r4, n3.wrapFn = s6, s6;
        }
        function p5(e4, t4, r4) {
          var n3 = e4._events;
          if (void 0 === n3) return [];
          var s6 = n3[t4];
          return void 0 === s6 ? [] : "function" == typeof s6 ? r4 ? [s6.listener || s6] : [s6] : r4 ? (function(e5) {
            for (var t5 = new Array(e5.length), r5 = 0; r5 < t5.length; ++r5) t5[r5] = e5[r5].listener || e5[r5];
            return t5;
          })(s6) : f3(s6, s6.length);
        }
        function d(e4) {
          var t4 = this._events;
          if (void 0 !== t4) {
            var r4 = t4[e4];
            if ("function" == typeof r4) return 1;
            if (void 0 !== r4) return r4.length;
          }
          return 0;
        }
        function f3(e4, t4) {
          for (var r4 = new Array(t4), n3 = 0; n3 < t4; ++n3) r4[n3] = e4[n3];
          return r4;
        }
        function m2(e4, t4, r4, n3) {
          if ("function" == typeof e4.on) n3.once ? e4.once(t4, r4) : e4.on(t4, r4);
          else {
            if ("function" != typeof e4.addEventListener) throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof e4);
            e4.addEventListener(t4, (function s6(i3) {
              n3.once && e4.removeEventListener(t4, s6), r4(i3);
            }));
          }
        }
        Object.defineProperty(i2, "defaultMaxListeners", { enumerable: true, get: function() {
          return o;
        }, set: function(e4) {
          if ("number" != typeof e4 || e4 < 0 || s5(e4)) throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + e4 + ".");
          o = e4;
        } }), i2.init = function() {
          void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0;
        }, i2.prototype.setMaxListeners = function(e4) {
          if ("number" != typeof e4 || e4 < 0 || s5(e4)) throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + e4 + ".");
          return this._maxListeners = e4, this;
        }, i2.prototype.getMaxListeners = function() {
          return c(this);
        }, i2.prototype.emit = function(e4) {
          for (var t4 = [], r4 = 1; r4 < arguments.length; r4++) t4.push(arguments[r4]);
          var s6 = "error" === e4, i3 = this._events;
          if (void 0 !== i3) s6 = s6 && void 0 === i3.error;
          else if (!s6) return false;
          if (s6) {
            var o2;
            if (t4.length > 0 && (o2 = t4[0]), o2 instanceof Error) throw o2;
            var a3 = new Error("Unhandled error." + (o2 ? " (" + o2.message + ")" : ""));
            throw a3.context = o2, a3;
          }
          var c2 = i3[e4];
          if (void 0 === c2) return false;
          if ("function" == typeof c2) n2(c2, this, t4);
          else {
            var u4 = c2.length, l2 = f3(c2, u4);
            for (r4 = 0; r4 < u4; ++r4) n2(l2[r4], this, t4);
          }
          return true;
        }, i2.prototype.addListener = function(e4, t4) {
          return u3(this, e4, t4, false);
        }, i2.prototype.on = i2.prototype.addListener, i2.prototype.prependListener = function(e4, t4) {
          return u3(this, e4, t4, true);
        }, i2.prototype.once = function(e4, t4) {
          return a2(t4), this.on(e4, h4(this, e4, t4)), this;
        }, i2.prototype.prependOnceListener = function(e4, t4) {
          return a2(t4), this.prependListener(e4, h4(this, e4, t4)), this;
        }, i2.prototype.removeListener = function(e4, t4) {
          var r4, n3, s6, i3, o2;
          if (a2(t4), void 0 === (n3 = this._events)) return this;
          if (void 0 === (r4 = n3[e4])) return this;
          if (r4 === t4 || r4.listener === t4) 0 == --this._eventsCount ? this._events = /* @__PURE__ */ Object.create(null) : (delete n3[e4], n3.removeListener && this.emit("removeListener", e4, r4.listener || t4));
          else if ("function" != typeof r4) {
            for (s6 = -1, i3 = r4.length - 1; i3 >= 0; i3--) if (r4[i3] === t4 || r4[i3].listener === t4) {
              o2 = r4[i3].listener, s6 = i3;
              break;
            }
            if (s6 < 0) return this;
            0 === s6 ? r4.shift() : (function(e5, t5) {
              for (; t5 + 1 < e5.length; t5++) e5[t5] = e5[t5 + 1];
              e5.pop();
            })(r4, s6), 1 === r4.length && (n3[e4] = r4[0]), void 0 !== n3.removeListener && this.emit("removeListener", e4, o2 || t4);
          }
          return this;
        }, i2.prototype.off = i2.prototype.removeListener, i2.prototype.removeAllListeners = function(e4) {
          var t4, r4, n3;
          if (void 0 === (r4 = this._events)) return this;
          if (void 0 === r4.removeListener) return 0 === arguments.length ? (this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0) : void 0 !== r4[e4] && (0 == --this._eventsCount ? this._events = /* @__PURE__ */ Object.create(null) : delete r4[e4]), this;
          if (0 === arguments.length) {
            var s6, i3 = Object.keys(r4);
            for (n3 = 0; n3 < i3.length; ++n3) "removeListener" !== (s6 = i3[n3]) && this.removeAllListeners(s6);
            return this.removeAllListeners("removeListener"), this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0, this;
          }
          if ("function" == typeof (t4 = r4[e4])) this.removeListener(e4, t4);
          else if (void 0 !== t4) for (n3 = t4.length - 1; n3 >= 0; n3--) this.removeListener(e4, t4[n3]);
          return this;
        }, i2.prototype.listeners = function(e4) {
          return p5(this, e4, true);
        }, i2.prototype.rawListeners = function(e4) {
          return p5(this, e4, false);
        }, i2.listenerCount = function(e4, t4) {
          return "function" == typeof e4.listenerCount ? e4.listenerCount(t4) : d.call(e4, t4);
        }, i2.prototype.listenerCount = d, i2.prototype.eventNames = function() {
          return this._eventsCount > 0 ? t3(this._events) : [];
        };
      }, 645: (e3, t3) => {
        t3.read = function(e4, t4, r3, n2, s5) {
          var i2, o, a2 = 8 * s5 - n2 - 1, c = (1 << a2) - 1, u3 = c >> 1, l = -7, h4 = r3 ? s5 - 1 : 0, p5 = r3 ? -1 : 1, d = e4[t4 + h4];
          for (h4 += p5, i2 = d & (1 << -l) - 1, d >>= -l, l += a2; l > 0; i2 = 256 * i2 + e4[t4 + h4], h4 += p5, l -= 8) ;
          for (o = i2 & (1 << -l) - 1, i2 >>= -l, l += n2; l > 0; o = 256 * o + e4[t4 + h4], h4 += p5, l -= 8) ;
          if (0 === i2) i2 = 1 - u3;
          else {
            if (i2 === c) return o ? NaN : 1 / 0 * (d ? -1 : 1);
            o += Math.pow(2, n2), i2 -= u3;
          }
          return (d ? -1 : 1) * o * Math.pow(2, i2 - n2);
        }, t3.write = function(e4, t4, r3, n2, s5, i2) {
          var o, a2, c, u3 = 8 * i2 - s5 - 1, l = (1 << u3) - 1, h4 = l >> 1, p5 = 23 === s5 ? Math.pow(2, -24) - Math.pow(2, -77) : 0, d = n2 ? 0 : i2 - 1, f3 = n2 ? 1 : -1, m2 = t4 < 0 || 0 === t4 && 1 / t4 < 0 ? 1 : 0;
          for (t4 = Math.abs(t4), isNaN(t4) || t4 === 1 / 0 ? (a2 = isNaN(t4) ? 1 : 0, o = l) : (o = Math.floor(Math.log(t4) / Math.LN2), t4 * (c = Math.pow(2, -o)) < 1 && (o--, c *= 2), (t4 += o + h4 >= 1 ? p5 / c : p5 * Math.pow(2, 1 - h4)) * c >= 2 && (o++, c /= 2), o + h4 >= l ? (a2 = 0, o = l) : o + h4 >= 1 ? (a2 = (t4 * c - 1) * Math.pow(2, s5), o += h4) : (a2 = t4 * Math.pow(2, h4 - 1) * Math.pow(2, s5), o = 0)); s5 >= 8; e4[r3 + d] = 255 & a2, d += f3, a2 /= 256, s5 -= 8) ;
          for (o = o << s5 | a2, u3 += s5; u3 > 0; e4[r3 + d] = 255 & o, d += f3, o /= 256, u3 -= 8) ;
          e4[r3 + d - f3] |= 128 * m2;
        };
      }, 5705: (e3, t3, r3) => {
        "use strict";
        var n2, s5, i2 = r3.g.MutationObserver || r3.g.WebKitMutationObserver;
        if (i2) {
          var o = 0, a2 = new i2(h4), c = r3.g.document.createTextNode("");
          a2.observe(c, { characterData: true }), n2 = function() {
            c.data = o = ++o % 2;
          };
        } else if (r3.g.setImmediate || void 0 === r3.g.MessageChannel) n2 = "document" in r3.g && "onreadystatechange" in r3.g.document.createElement("script") ? function() {
          var e4 = r3.g.document.createElement("script");
          e4.onreadystatechange = function() {
            h4(), e4.onreadystatechange = null, e4.parentNode.removeChild(e4), e4 = null;
          }, r3.g.document.documentElement.appendChild(e4);
        } : function() {
          setTimeout(h4, 0);
        };
        else {
          var u3 = new r3.g.MessageChannel();
          u3.port1.onmessage = h4, n2 = function() {
            u3.port2.postMessage(0);
          };
        }
        var l = [];
        function h4() {
          var e4, t4;
          s5 = true;
          for (var r4 = l.length; r4; ) {
            for (t4 = l, l = [], e4 = -1; ++e4 < r4; ) t4[e4]();
            r4 = l.length;
          }
          s5 = false;
        }
        e3.exports = function(e4) {
          1 !== l.push(e4) || s5 || n2();
        };
      }, 5717: (e3) => {
        "function" == typeof Object.create ? e3.exports = function(e4, t3) {
          t3 && (e4.super_ = t3, e4.prototype = Object.create(t3.prototype, { constructor: { value: e4, enumerable: false, writable: true, configurable: true } }));
        } : e3.exports = function(e4, t3) {
          if (t3) {
            e4.super_ = t3;
            var r3 = function() {
            };
            r3.prototype = t3.prototype, e4.prototype = new r3(), e4.prototype.constructor = e4;
          }
        };
      }, 8458: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8910), s5 = r3(3790), i2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
        t3.encode = function(e4) {
          for (var t4, r4, s6, o, a2, c, u3, l = [], h4 = 0, p5 = e4.length, d = p5, f3 = "string" !== n2.getTypeOf(e4); h4 < e4.length; ) d = p5 - h4, f3 ? (t4 = e4[h4++], r4 = h4 < p5 ? e4[h4++] : 0, s6 = h4 < p5 ? e4[h4++] : 0) : (t4 = e4.charCodeAt(h4++), r4 = h4 < p5 ? e4.charCodeAt(h4++) : 0, s6 = h4 < p5 ? e4.charCodeAt(h4++) : 0), o = t4 >> 2, a2 = (3 & t4) << 4 | r4 >> 4, c = d > 1 ? (15 & r4) << 2 | s6 >> 6 : 64, u3 = d > 2 ? 63 & s6 : 64, l.push(i2.charAt(o) + i2.charAt(a2) + i2.charAt(c) + i2.charAt(u3));
          return l.join("");
        }, t3.decode = function(e4) {
          var t4, r4, n3, o, a2, c, u3 = 0, l = 0, h4 = "data:";
          if (e4.substr(0, h4.length) === h4) throw new Error("Invalid base64 input, it looks like a data url.");
          var p5, d = 3 * (e4 = e4.replace(/[^A-Za-z0-9+/=]/g, "")).length / 4;
          if (e4.charAt(e4.length - 1) === i2.charAt(64) && d--, e4.charAt(e4.length - 2) === i2.charAt(64) && d--, d % 1 != 0) throw new Error("Invalid base64 input, bad content length.");
          for (p5 = s5.uint8array ? new Uint8Array(0 | d) : new Array(0 | d); u3 < e4.length; ) t4 = i2.indexOf(e4.charAt(u3++)) << 2 | (o = i2.indexOf(e4.charAt(u3++))) >> 4, r4 = (15 & o) << 4 | (a2 = i2.indexOf(e4.charAt(u3++))) >> 2, n3 = (3 & a2) << 6 | (c = i2.indexOf(e4.charAt(u3++))), p5[l++] = t4, 64 !== a2 && (p5[l++] = r4), 64 !== c && (p5[l++] = n3);
          return p5;
        };
      }, 7326: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8565), s5 = r3(5301), i2 = r3(2541), o = r3(5977);
        function a2(e4, t4, r4, n3, s6) {
          this.compressedSize = e4, this.uncompressedSize = t4, this.crc32 = r4, this.compression = n3, this.compressedContent = s6;
        }
        a2.prototype = { getContentWorker: function() {
          var e4 = new s5(n2.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new o("data_length")), t4 = this;
          return e4.on("end", (function() {
            if (this.streamInfo.data_length !== t4.uncompressedSize) throw new Error("Bug : uncompressed data size mismatch");
          })), e4;
        }, getCompressedWorker: function() {
          return new s5(n2.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize", this.compressedSize).withStreamInfo("uncompressedSize", this.uncompressedSize).withStreamInfo("crc32", this.crc32).withStreamInfo("compression", this.compression);
        } }, a2.createWorkerFrom = function(e4, t4, r4) {
          return e4.pipe(new i2()).pipe(new o("uncompressedSize")).pipe(t4.compressWorker(r4)).pipe(new o("compressedSize")).withStreamInfo("compression", t4);
        }, e3.exports = a2;
      }, 1678: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(3718);
        t3.STORE = { magic: "\0\0", compressWorker: function() {
          return new n2("STORE compression");
        }, uncompressWorker: function() {
          return new n2("STORE decompression");
        } }, t3.DEFLATE = r3(1033);
      }, 6988: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8910), s5 = (function() {
          for (var e4, t4 = [], r4 = 0; r4 < 256; r4++) {
            e4 = r4;
            for (var n3 = 0; n3 < 8; n3++) e4 = 1 & e4 ? 3988292384 ^ e4 >>> 1 : e4 >>> 1;
            t4[r4] = e4;
          }
          return t4;
        })();
        e3.exports = function(e4, t4) {
          return void 0 !== e4 && e4.length ? "string" !== n2.getTypeOf(e4) ? (function(e5, t5, r4, n3) {
            var i2 = s5, o = 0 + r4;
            e5 ^= -1;
            for (var a2 = 0; a2 < o; a2++) e5 = e5 >>> 8 ^ i2[255 & (e5 ^ t5[a2])];
            return -1 ^ e5;
          })(0 | t4, e4, e4.length) : (function(e5, t5, r4, n3) {
            var i2 = s5, o = 0 + r4;
            e5 ^= -1;
            for (var a2 = 0; a2 < o; a2++) e5 = e5 >>> 8 ^ i2[255 & (e5 ^ t5.charCodeAt(a2))];
            return -1 ^ e5;
          })(0 | t4, e4, e4.length) : 0;
        };
      }, 6032: (e3, t3) => {
        "use strict";
        t3.base64 = false, t3.binary = false, t3.dir = false, t3.createFolders = true, t3.date = null, t3.compression = null, t3.compressionOptions = null, t3.comment = null, t3.unixPermissions = null, t3.dosPermissions = null;
      }, 8565: (e3, t3, r3) => {
        "use strict";
        var n2;
        n2 = "undefined" != typeof Promise ? Promise : r3(3389), e3.exports = { Promise: n2 };
      }, 1033: (e3, t3, r3) => {
        "use strict";
        var n2 = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array, s5 = r3(9591), i2 = r3(8910), o = r3(3718), a2 = n2 ? "uint8array" : "array";
        function c(e4, t4) {
          o.call(this, "FlateWorker/" + e4), this._pako = null, this._pakoAction = e4, this._pakoOptions = t4, this.meta = {};
        }
        t3.magic = "\b\0", i2.inherits(c, o), c.prototype.processChunk = function(e4) {
          this.meta = e4.meta, null === this._pako && this._createPako(), this._pako.push(i2.transformTo(a2, e4.data), false);
        }, c.prototype.flush = function() {
          o.prototype.flush.call(this), null === this._pako && this._createPako(), this._pako.push([], true);
        }, c.prototype.cleanUp = function() {
          o.prototype.cleanUp.call(this), this._pako = null;
        }, c.prototype._createPako = function() {
          this._pako = new s5[this._pakoAction]({ raw: true, level: this._pakoOptions.level || -1 });
          var e4 = this;
          this._pako.onData = function(t4) {
            e4.push({ data: t4, meta: e4.meta });
          };
        }, t3.compressWorker = function(e4) {
          return new c("Deflate", e4);
        }, t3.uncompressWorker = function() {
          return new c("Inflate", {});
        };
      }, 4979: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8910), s5 = r3(3718), i2 = r3(3600), o = r3(6988), a2 = r3(1141), c = function(e4, t4) {
          var r4, n3 = "";
          for (r4 = 0; r4 < t4; r4++) n3 += String.fromCharCode(255 & e4), e4 >>>= 8;
          return n3;
        }, u3 = function(e4, t4, r4, s6, u4, l2) {
          var h5, p5, d = e4.file, f3 = e4.compression, m2 = l2 !== i2.utf8encode, w = n2.transformTo("string", l2(d.name)), g = n2.transformTo("string", i2.utf8encode(d.name)), y = d.comment, b = n2.transformTo("string", l2(y)), x2 = n2.transformTo("string", i2.utf8encode(y)), v = g.length !== d.name.length, _2 = x2.length !== y.length, E = "", T2 = "", A2 = "", S3 = d.dir, I = d.date, R = { crc32: 0, compressedSize: 0, uncompressedSize: 0 };
          t4 && !r4 || (R.crc32 = e4.crc32, R.compressedSize = e4.compressedSize, R.uncompressedSize = e4.uncompressedSize);
          var N = 0;
          t4 && (N |= 8), m2 || !v && !_2 || (N |= 2048);
          var C, O, k = 0, L = 0;
          S3 && (k |= 16), "UNIX" === u4 ? (L = 798, k |= (O = C = d.unixPermissions, C || (O = S3 ? 16893 : 33204), (65535 & O) << 16)) : (L = 20, k |= 63 & (d.dosPermissions || 0)), h5 = I.getUTCHours(), h5 <<= 6, h5 |= I.getUTCMinutes(), h5 <<= 5, h5 |= I.getUTCSeconds() / 2, p5 = I.getUTCFullYear() - 1980, p5 <<= 4, p5 |= I.getUTCMonth() + 1, p5 <<= 5, p5 |= I.getUTCDate(), v && (T2 = c(1, 1) + c(o(w), 4) + g, E += "up" + c(T2.length, 2) + T2), _2 && (A2 = c(1, 1) + c(o(b), 4) + x2, E += "uc" + c(A2.length, 2) + A2);
          var D2 = "";
          return D2 += "\n\0", D2 += c(N, 2), D2 += f3.magic, D2 += c(h5, 2), D2 += c(p5, 2), D2 += c(R.crc32, 4), D2 += c(R.compressedSize, 4), D2 += c(R.uncompressedSize, 4), D2 += c(w.length, 2), D2 += c(E.length, 2), { fileRecord: a2.LOCAL_FILE_HEADER + D2 + w + E, dirRecord: a2.CENTRAL_FILE_HEADER + c(L, 2) + D2 + c(b.length, 2) + "\0\0\0\0" + c(k, 4) + c(s6, 4) + w + E + b };
        }, l = function(e4) {
          return a2.DATA_DESCRIPTOR + c(e4.crc32, 4) + c(e4.compressedSize, 4) + c(e4.uncompressedSize, 4);
        };
        function h4(e4, t4, r4, n3) {
          s5.call(this, "ZipFileWorker"), this.bytesWritten = 0, this.zipComment = t4, this.zipPlatform = r4, this.encodeFileName = n3, this.streamFiles = e4, this.accumulate = false, this.contentBuffer = [], this.dirRecords = [], this.currentSourceOffset = 0, this.entriesCount = 0, this.currentFile = null, this._sources = [];
        }
        n2.inherits(h4, s5), h4.prototype.push = function(e4) {
          var t4 = e4.meta.percent || 0, r4 = this.entriesCount, n3 = this._sources.length;
          this.accumulate ? this.contentBuffer.push(e4) : (this.bytesWritten += e4.data.length, s5.prototype.push.call(this, { data: e4.data, meta: { currentFile: this.currentFile, percent: r4 ? (t4 + 100 * (r4 - n3 - 1)) / r4 : 100 } }));
        }, h4.prototype.openedSource = function(e4) {
          this.currentSourceOffset = this.bytesWritten, this.currentFile = e4.file.name;
          var t4 = this.streamFiles && !e4.file.dir;
          if (t4) {
            var r4 = u3(e4, t4, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);
            this.push({ data: r4.fileRecord, meta: { percent: 0 } });
          } else this.accumulate = true;
        }, h4.prototype.closedSource = function(e4) {
          this.accumulate = false;
          var t4 = this.streamFiles && !e4.file.dir, r4 = u3(e4, t4, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);
          if (this.dirRecords.push(r4.dirRecord), t4) this.push({ data: l(e4), meta: { percent: 100 } });
          else for (this.push({ data: r4.fileRecord, meta: { percent: 0 } }); this.contentBuffer.length; ) this.push(this.contentBuffer.shift());
          this.currentFile = null;
        }, h4.prototype.flush = function() {
          for (var e4 = this.bytesWritten, t4 = 0; t4 < this.dirRecords.length; t4++) this.push({ data: this.dirRecords[t4], meta: { percent: 100 } });
          var r4 = this.bytesWritten - e4, s6 = (function(e5, t5, r5, s7, i3) {
            var o2 = n2.transformTo("string", i3(s7));
            return a2.CENTRAL_DIRECTORY_END + "\0\0\0\0" + c(e5, 2) + c(e5, 2) + c(t5, 4) + c(r5, 4) + c(o2.length, 2) + o2;
          })(this.dirRecords.length, r4, e4, this.zipComment, this.encodeFileName);
          this.push({ data: s6, meta: { percent: 100 } });
        }, h4.prototype.prepareNextSource = function() {
          this.previous = this._sources.shift(), this.openedSource(this.previous.streamInfo), this.isPaused ? this.previous.pause() : this.previous.resume();
        }, h4.prototype.registerPrevious = function(e4) {
          this._sources.push(e4);
          var t4 = this;
          return e4.on("data", (function(e5) {
            t4.processChunk(e5);
          })), e4.on("end", (function() {
            t4.closedSource(t4.previous.streamInfo), t4._sources.length ? t4.prepareNextSource() : t4.end();
          })), e4.on("error", (function(e5) {
            t4.error(e5);
          })), this;
        }, h4.prototype.resume = function() {
          return !!s5.prototype.resume.call(this) && (!this.previous && this._sources.length ? (this.prepareNextSource(), true) : this.previous || this._sources.length || this.generatedError ? void 0 : (this.end(), true));
        }, h4.prototype.error = function(e4) {
          var t4 = this._sources;
          if (!s5.prototype.error.call(this, e4)) return false;
          for (var r4 = 0; r4 < t4.length; r4++) try {
            t4[r4].error(e4);
          } catch (e5) {
          }
          return true;
        }, h4.prototype.lock = function() {
          s5.prototype.lock.call(this);
          for (var e4 = this._sources, t4 = 0; t4 < e4.length; t4++) e4[t4].lock();
        }, e3.exports = h4;
      }, 7834: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(1678), s5 = r3(4979);
        t3.generateWorker = function(e4, t4, r4) {
          var i2 = new s5(t4.streamFiles, r4, t4.platform, t4.encodeFileName), o = 0;
          try {
            e4.forEach((function(e5, r5) {
              o++;
              var s6 = (function(e6, t5) {
                var r6 = e6 || t5, s7 = n2[r6];
                if (!s7) throw new Error(r6 + " is not a valid compression method !");
                return s7;
              })(r5.options.compression, t4.compression), a2 = r5.options.compressionOptions || t4.compressionOptions || {}, c = r5.dir, u3 = r5.date;
              r5._compressWorker(s6, a2).withStreamInfo("file", { name: e5, dir: c, date: u3, comment: r5.comment || "", unixPermissions: r5.unixPermissions, dosPermissions: r5.dosPermissions }).pipe(i2);
            })), i2.entriesCount = o;
          } catch (e5) {
            i2.error(e5);
          }
          return i2;
        };
      }, 6085: (e3, t3, r3) => {
        "use strict";
        function n2() {
          if (!(this instanceof n2)) return new n2();
          if (arguments.length) throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");
          this.files = /* @__PURE__ */ Object.create(null), this.comment = null, this.root = "", this.clone = function() {
            var e4 = new n2();
            for (var t4 in this) "function" != typeof this[t4] && (e4[t4] = this[t4]);
            return e4;
          };
        }
        n2.prototype = r3(7132), n2.prototype.loadAsync = r3(1062), n2.support = r3(3790), n2.defaults = r3(6032), n2.version = "3.10.1", n2.loadAsync = function(e4, t4) {
          return new n2().loadAsync(e4, t4);
        }, n2.external = r3(8565), e3.exports = n2;
      }, 1062: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8910), s5 = r3(8565), i2 = r3(3600), o = r3(6624), a2 = r3(2541), c = r3(2182);
        function u3(e4) {
          return new s5.Promise((function(t4, r4) {
            var n3 = e4.decompressed.getContentWorker().pipe(new a2());
            n3.on("error", (function(e5) {
              r4(e5);
            })).on("end", (function() {
              n3.streamInfo.crc32 !== e4.decompressed.crc32 ? r4(new Error("Corrupted zip : CRC32 mismatch")) : t4();
            })).resume();
          }));
        }
        e3.exports = function(e4, t4) {
          var r4 = this;
          return t4 = n2.extend(t4 || {}, { base64: false, checkCRC32: false, optimizedBinaryString: false, createFolders: false, decodeFileName: i2.utf8decode }), c.isNode && c.isStream(e4) ? s5.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")) : n2.prepareContent("the loaded zip file", e4, true, t4.optimizedBinaryString, t4.base64).then((function(e5) {
            var r5 = new o(t4);
            return r5.load(e5), r5;
          })).then((function(e5) {
            var r5 = [s5.Promise.resolve(e5)], n3 = e5.files;
            if (t4.checkCRC32) for (var i3 = 0; i3 < n3.length; i3++) r5.push(u3(n3[i3]));
            return s5.Promise.all(r5);
          })).then((function(e5) {
            for (var s6 = e5.shift(), i3 = s6.files, o2 = 0; o2 < i3.length; o2++) {
              var a3 = i3[o2], c2 = a3.fileNameStr, u4 = n2.resolve(a3.fileNameStr);
              r4.file(u4, a3.decompressed, { binary: true, optimizedBinaryString: true, date: a3.date, dir: a3.dir, comment: a3.fileCommentStr.length ? a3.fileCommentStr : null, unixPermissions: a3.unixPermissions, dosPermissions: a3.dosPermissions, createFolders: t4.createFolders }), a3.dir || (r4.file(u4).unsafeOriginalName = c2);
            }
            return s6.zipComment.length && (r4.comment = s6.zipComment), r4;
          }));
        };
      }, 2182: (e3) => {
        "use strict";
        e3.exports = { isNode: "undefined" != typeof Buffer, newBufferFrom: function(e4, t3) {
          if (Buffer.from && Buffer.from !== Uint8Array.from) return Buffer.from(e4, t3);
          if ("number" == typeof e4) throw new Error('The "data" argument must not be a number');
          return new Buffer(e4, t3);
        }, allocBuffer: function(e4) {
          if (Buffer.alloc) return Buffer.alloc(e4);
          var t3 = new Buffer(e4);
          return t3.fill(0), t3;
        }, isBuffer: function(e4) {
          return Buffer.isBuffer(e4);
        }, isStream: function(e4) {
          return e4 && "function" == typeof e4.on && "function" == typeof e4.pause && "function" == typeof e4.resume;
        } };
      }, 660: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8910), s5 = r3(3718);
        function i2(e4, t4) {
          s5.call(this, "Nodejs stream input adapter for " + e4), this._upstreamEnded = false, this._bindStream(t4);
        }
        n2.inherits(i2, s5), i2.prototype._bindStream = function(e4) {
          var t4 = this;
          this._stream = e4, e4.pause(), e4.on("data", (function(e5) {
            t4.push({ data: e5, meta: { percent: 0 } });
          })).on("error", (function(e5) {
            t4.isPaused ? this.generatedError = e5 : t4.error(e5);
          })).on("end", (function() {
            t4.isPaused ? t4._upstreamEnded = true : t4.end();
          }));
        }, i2.prototype.pause = function() {
          return !!s5.prototype.pause.call(this) && (this._stream.pause(), true);
        }, i2.prototype.resume = function() {
          return !!s5.prototype.resume.call(this) && (this._upstreamEnded ? this.end() : this._stream.resume(), true);
        }, e3.exports = i2;
      }, 1220: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(749).Readable;
        function s5(e4, t4, r4) {
          n2.call(this, t4), this._helper = e4;
          var s6 = this;
          e4.on("data", (function(e5, t5) {
            s6.push(e5) || s6._helper.pause(), r4 && r4(t5);
          })).on("error", (function(e5) {
            s6.emit("error", e5);
          })).on("end", (function() {
            s6.push(null);
          }));
        }
        r3(8910).inherits(s5, n2), s5.prototype._read = function() {
          this._helper.resume();
        }, e3.exports = s5;
      }, 7132: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(3600), s5 = r3(8910), i2 = r3(3718), o = r3(1285), a2 = r3(6032), c = r3(7326), u3 = r3(6859), l = r3(7834), h4 = r3(2182), p5 = r3(660), d = function(e4, t4, r4) {
          var n3, o2 = s5.getTypeOf(t4), l2 = s5.extend(r4 || {}, a2);
          l2.date = l2.date || /* @__PURE__ */ new Date(), null !== l2.compression && (l2.compression = l2.compression.toUpperCase()), "string" == typeof l2.unixPermissions && (l2.unixPermissions = parseInt(l2.unixPermissions, 8)), l2.unixPermissions && 16384 & l2.unixPermissions && (l2.dir = true), l2.dosPermissions && 16 & l2.dosPermissions && (l2.dir = true), l2.dir && (e4 = m2(e4)), l2.createFolders && (n3 = f3(e4)) && w.call(this, n3, true);
          var d2 = "string" === o2 && false === l2.binary && false === l2.base64;
          r4 && void 0 !== r4.binary || (l2.binary = !d2), (t4 instanceof c && 0 === t4.uncompressedSize || l2.dir || !t4 || 0 === t4.length) && (l2.base64 = false, l2.binary = true, t4 = "", l2.compression = "STORE", o2 = "string");
          var g2;
          g2 = t4 instanceof c || t4 instanceof i2 ? t4 : h4.isNode && h4.isStream(t4) ? new p5(e4, t4) : s5.prepareContent(e4, t4, l2.binary, l2.optimizedBinaryString, l2.base64);
          var y2 = new u3(e4, g2, l2);
          this.files[e4] = y2;
        }, f3 = function(e4) {
          "/" === e4.slice(-1) && (e4 = e4.substring(0, e4.length - 1));
          var t4 = e4.lastIndexOf("/");
          return t4 > 0 ? e4.substring(0, t4) : "";
        }, m2 = function(e4) {
          return "/" !== e4.slice(-1) && (e4 += "/"), e4;
        }, w = function(e4, t4) {
          return t4 = void 0 !== t4 ? t4 : a2.createFolders, e4 = m2(e4), this.files[e4] || d.call(this, e4, null, { dir: true, createFolders: t4 }), this.files[e4];
        };
        function g(e4) {
          return "[object RegExp]" === Object.prototype.toString.call(e4);
        }
        var y = { load: function() {
          throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");
        }, forEach: function(e4) {
          var t4, r4, n3;
          for (t4 in this.files) n3 = this.files[t4], (r4 = t4.slice(this.root.length, t4.length)) && t4.slice(0, this.root.length) === this.root && e4(r4, n3);
        }, filter: function(e4) {
          var t4 = [];
          return this.forEach((function(r4, n3) {
            e4(r4, n3) && t4.push(n3);
          })), t4;
        }, file: function(e4, t4, r4) {
          if (1 === arguments.length) {
            if (g(e4)) {
              var n3 = e4;
              return this.filter((function(e5, t5) {
                return !t5.dir && n3.test(e5);
              }));
            }
            var s6 = this.files[this.root + e4];
            return s6 && !s6.dir ? s6 : null;
          }
          return e4 = this.root + e4, d.call(this, e4, t4, r4), this;
        }, folder: function(e4) {
          if (!e4) return this;
          if (g(e4)) return this.filter((function(t5, r5) {
            return r5.dir && e4.test(t5);
          }));
          var t4 = this.root + e4, r4 = w.call(this, t4), n3 = this.clone();
          return n3.root = r4.name, n3;
        }, remove: function(e4) {
          e4 = this.root + e4;
          var t4 = this.files[e4];
          if (t4 || ("/" !== e4.slice(-1) && (e4 += "/"), t4 = this.files[e4]), t4 && !t4.dir) delete this.files[e4];
          else for (var r4 = this.filter((function(t5, r5) {
            return r5.name.slice(0, e4.length) === e4;
          })), n3 = 0; n3 < r4.length; n3++) delete this.files[r4[n3].name];
          return this;
        }, generate: function() {
          throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");
        }, generateInternalStream: function(e4) {
          var t4, r4 = {};
          try {
            if ((r4 = s5.extend(e4 || {}, { streamFiles: false, compression: "STORE", compressionOptions: null, type: "", platform: "DOS", comment: null, mimeType: "application/zip", encodeFileName: n2.utf8encode })).type = r4.type.toLowerCase(), r4.compression = r4.compression.toUpperCase(), "binarystring" === r4.type && (r4.type = "string"), !r4.type) throw new Error("No output type specified.");
            s5.checkSupport(r4.type), "darwin" !== r4.platform && "freebsd" !== r4.platform && "linux" !== r4.platform && "sunos" !== r4.platform || (r4.platform = "UNIX"), "win32" === r4.platform && (r4.platform = "DOS");
            var a3 = r4.comment || this.comment || "";
            t4 = l.generateWorker(this, r4, a3);
          } catch (e5) {
            (t4 = new i2("error")).error(e5);
          }
          return new o(t4, r4.type || "string", r4.mimeType);
        }, generateAsync: function(e4, t4) {
          return this.generateInternalStream(e4).accumulate(t4);
        }, generateNodeStream: function(e4, t4) {
          return (e4 = e4 || {}).type || (e4.type = "nodebuffer"), this.generateInternalStream(e4).toNodejsStream(t4);
        } };
        e3.exports = y;
      }, 749: (e3, t3, r3) => {
        "use strict";
        e3.exports = r3(2830);
      }, 2370: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8542);
        function s5(e4) {
          n2.call(this, e4);
          for (var t4 = 0; t4 < this.data.length; t4++) e4[t4] = 255 & e4[t4];
        }
        r3(8910).inherits(s5, n2), s5.prototype.byteAt = function(e4) {
          return this.data[this.zero + e4];
        }, s5.prototype.lastIndexOfSignature = function(e4) {
          for (var t4 = e4.charCodeAt(0), r4 = e4.charCodeAt(1), n3 = e4.charCodeAt(2), s6 = e4.charCodeAt(3), i2 = this.length - 4; i2 >= 0; --i2) if (this.data[i2] === t4 && this.data[i2 + 1] === r4 && this.data[i2 + 2] === n3 && this.data[i2 + 3] === s6) return i2 - this.zero;
          return -1;
        }, s5.prototype.readAndCheckSignature = function(e4) {
          var t4 = e4.charCodeAt(0), r4 = e4.charCodeAt(1), n3 = e4.charCodeAt(2), s6 = e4.charCodeAt(3), i2 = this.readData(4);
          return t4 === i2[0] && r4 === i2[1] && n3 === i2[2] && s6 === i2[3];
        }, s5.prototype.readData = function(e4) {
          if (this.checkOffset(e4), 0 === e4) return [];
          var t4 = this.data.slice(this.zero + this.index, this.zero + this.index + e4);
          return this.index += e4, t4;
        }, e3.exports = s5;
      }, 8542: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8910);
        function s5(e4) {
          this.data = e4, this.length = e4.length, this.index = 0, this.zero = 0;
        }
        s5.prototype = { checkOffset: function(e4) {
          this.checkIndex(this.index + e4);
        }, checkIndex: function(e4) {
          if (this.length < this.zero + e4 || e4 < 0) throw new Error("End of data reached (data length = " + this.length + ", asked index = " + e4 + "). Corrupted zip ?");
        }, setIndex: function(e4) {
          this.checkIndex(e4), this.index = e4;
        }, skip: function(e4) {
          this.setIndex(this.index + e4);
        }, byteAt: function() {
        }, readInt: function(e4) {
          var t4, r4 = 0;
          for (this.checkOffset(e4), t4 = this.index + e4 - 1; t4 >= this.index; t4--) r4 = (r4 << 8) + this.byteAt(t4);
          return this.index += e4, r4;
        }, readString: function(e4) {
          return n2.transformTo("string", this.readData(e4));
        }, readData: function() {
        }, lastIndexOfSignature: function() {
        }, readAndCheckSignature: function() {
        }, readDate: function() {
          var e4 = this.readInt(4);
          return new Date(Date.UTC(1980 + (e4 >> 25 & 127), (e4 >> 21 & 15) - 1, e4 >> 16 & 31, e4 >> 11 & 31, e4 >> 5 & 63, (31 & e4) << 1));
        } }, e3.exports = s5;
      }, 9583: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(414);
        function s5(e4) {
          n2.call(this, e4);
        }
        r3(8910).inherits(s5, n2), s5.prototype.readData = function(e4) {
          this.checkOffset(e4);
          var t4 = this.data.slice(this.zero + this.index, this.zero + this.index + e4);
          return this.index += e4, t4;
        }, e3.exports = s5;
      }, 9226: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8542);
        function s5(e4) {
          n2.call(this, e4);
        }
        r3(8910).inherits(s5, n2), s5.prototype.byteAt = function(e4) {
          return this.data.charCodeAt(this.zero + e4);
        }, s5.prototype.lastIndexOfSignature = function(e4) {
          return this.data.lastIndexOf(e4) - this.zero;
        }, s5.prototype.readAndCheckSignature = function(e4) {
          return e4 === this.readData(4);
        }, s5.prototype.readData = function(e4) {
          this.checkOffset(e4);
          var t4 = this.data.slice(this.zero + this.index, this.zero + this.index + e4);
          return this.index += e4, t4;
        }, e3.exports = s5;
      }, 414: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(2370);
        function s5(e4) {
          n2.call(this, e4);
        }
        r3(8910).inherits(s5, n2), s5.prototype.readData = function(e4) {
          if (this.checkOffset(e4), 0 === e4) return new Uint8Array(0);
          var t4 = this.data.subarray(this.zero + this.index, this.zero + this.index + e4);
          return this.index += e4, t4;
        }, e3.exports = s5;
      }, 8435: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8910), s5 = r3(3790), i2 = r3(2370), o = r3(9226), a2 = r3(9583), c = r3(414);
        e3.exports = function(e4) {
          var t4 = n2.getTypeOf(e4);
          return n2.checkSupport(t4), "string" !== t4 || s5.uint8array ? "nodebuffer" === t4 ? new a2(e4) : s5.uint8array ? new c(n2.transformTo("uint8array", e4)) : new i2(n2.transformTo("array", e4)) : new o(e4);
        };
      }, 1141: (e3, t3) => {
        "use strict";
        t3.LOCAL_FILE_HEADER = "PK", t3.CENTRAL_FILE_HEADER = "PK", t3.CENTRAL_DIRECTORY_END = "PK", t3.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x07", t3.ZIP64_CENTRAL_DIRECTORY_END = "PK", t3.DATA_DESCRIPTOR = "PK\x07\b";
      }, 4293: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(3718), s5 = r3(8910);
        function i2(e4) {
          n2.call(this, "ConvertWorker to " + e4), this.destType = e4;
        }
        s5.inherits(i2, n2), i2.prototype.processChunk = function(e4) {
          this.push({ data: s5.transformTo(this.destType, e4.data), meta: e4.meta });
        }, e3.exports = i2;
      }, 2541: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(3718), s5 = r3(6988);
        function i2() {
          n2.call(this, "Crc32Probe"), this.withStreamInfo("crc32", 0);
        }
        r3(8910).inherits(i2, n2), i2.prototype.processChunk = function(e4) {
          this.streamInfo.crc32 = s5(e4.data, this.streamInfo.crc32 || 0), this.push(e4);
        }, e3.exports = i2;
      }, 5977: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8910), s5 = r3(3718);
        function i2(e4) {
          s5.call(this, "DataLengthProbe for " + e4), this.propName = e4, this.withStreamInfo(e4, 0);
        }
        n2.inherits(i2, s5), i2.prototype.processChunk = function(e4) {
          if (e4) {
            var t4 = this.streamInfo[this.propName] || 0;
            this.streamInfo[this.propName] = t4 + e4.data.length;
          }
          s5.prototype.processChunk.call(this, e4);
        }, e3.exports = i2;
      }, 5301: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8910), s5 = r3(3718);
        function i2(e4) {
          s5.call(this, "DataWorker");
          var t4 = this;
          this.dataIsReady = false, this.index = 0, this.max = 0, this.data = null, this.type = "", this._tickScheduled = false, e4.then((function(e5) {
            t4.dataIsReady = true, t4.data = e5, t4.max = e5 && e5.length || 0, t4.type = n2.getTypeOf(e5), t4.isPaused || t4._tickAndRepeat();
          }), (function(e5) {
            t4.error(e5);
          }));
        }
        n2.inherits(i2, s5), i2.prototype.cleanUp = function() {
          s5.prototype.cleanUp.call(this), this.data = null;
        }, i2.prototype.resume = function() {
          return !!s5.prototype.resume.call(this) && (!this._tickScheduled && this.dataIsReady && (this._tickScheduled = true, n2.delay(this._tickAndRepeat, [], this)), true);
        }, i2.prototype._tickAndRepeat = function() {
          this._tickScheduled = false, this.isPaused || this.isFinished || (this._tick(), this.isFinished || (n2.delay(this._tickAndRepeat, [], this), this._tickScheduled = true));
        }, i2.prototype._tick = function() {
          if (this.isPaused || this.isFinished) return false;
          var e4 = null, t4 = Math.min(this.max, this.index + 16384);
          if (this.index >= this.max) return this.end();
          switch (this.type) {
            case "string":
              e4 = this.data.substring(this.index, t4);
              break;
            case "uint8array":
              e4 = this.data.subarray(this.index, t4);
              break;
            case "array":
            case "nodebuffer":
              e4 = this.data.slice(this.index, t4);
          }
          return this.index = t4, this.push({ data: e4, meta: { percent: this.max ? this.index / this.max * 100 : 0 } });
        }, e3.exports = i2;
      }, 3718: (e3) => {
        "use strict";
        function t3(e4) {
          this.name = e4 || "default", this.streamInfo = {}, this.generatedError = null, this.extraStreamInfo = {}, this.isPaused = true, this.isFinished = false, this.isLocked = false, this._listeners = { data: [], end: [], error: [] }, this.previous = null;
        }
        t3.prototype = { push: function(e4) {
          this.emit("data", e4);
        }, end: function() {
          if (this.isFinished) return false;
          this.flush();
          try {
            this.emit("end"), this.cleanUp(), this.isFinished = true;
          } catch (e4) {
            this.emit("error", e4);
          }
          return true;
        }, error: function(e4) {
          return !this.isFinished && (this.isPaused ? this.generatedError = e4 : (this.isFinished = true, this.emit("error", e4), this.previous && this.previous.error(e4), this.cleanUp()), true);
        }, on: function(e4, t4) {
          return this._listeners[e4].push(t4), this;
        }, cleanUp: function() {
          this.streamInfo = this.generatedError = this.extraStreamInfo = null, this._listeners = [];
        }, emit: function(e4, t4) {
          if (this._listeners[e4]) for (var r3 = 0; r3 < this._listeners[e4].length; r3++) this._listeners[e4][r3].call(this, t4);
        }, pipe: function(e4) {
          return e4.registerPrevious(this);
        }, registerPrevious: function(e4) {
          if (this.isLocked) throw new Error("The stream '" + this + "' has already been used.");
          this.streamInfo = e4.streamInfo, this.mergeStreamInfo(), this.previous = e4;
          var t4 = this;
          return e4.on("data", (function(e5) {
            t4.processChunk(e5);
          })), e4.on("end", (function() {
            t4.end();
          })), e4.on("error", (function(e5) {
            t4.error(e5);
          })), this;
        }, pause: function() {
          return !this.isPaused && !this.isFinished && (this.isPaused = true, this.previous && this.previous.pause(), true);
        }, resume: function() {
          if (!this.isPaused || this.isFinished) return false;
          this.isPaused = false;
          var e4 = false;
          return this.generatedError && (this.error(this.generatedError), e4 = true), this.previous && this.previous.resume(), !e4;
        }, flush: function() {
        }, processChunk: function(e4) {
          this.push(e4);
        }, withStreamInfo: function(e4, t4) {
          return this.extraStreamInfo[e4] = t4, this.mergeStreamInfo(), this;
        }, mergeStreamInfo: function() {
          for (var e4 in this.extraStreamInfo) Object.prototype.hasOwnProperty.call(this.extraStreamInfo, e4) && (this.streamInfo[e4] = this.extraStreamInfo[e4]);
        }, lock: function() {
          if (this.isLocked) throw new Error("The stream '" + this + "' has already been used.");
          this.isLocked = true, this.previous && this.previous.lock();
        }, toString: function() {
          var e4 = "Worker " + this.name;
          return this.previous ? this.previous + " -> " + e4 : e4;
        } }, e3.exports = t3;
      }, 1285: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8910), s5 = r3(4293), i2 = r3(3718), o = r3(8458), a2 = r3(3790), c = r3(8565), u3 = null;
        if (a2.nodestream) try {
          u3 = r3(1220);
        } catch (e4) {
        }
        function l(e4, t4, r4) {
          var o2 = t4;
          switch (t4) {
            case "blob":
            case "arraybuffer":
              o2 = "uint8array";
              break;
            case "base64":
              o2 = "string";
          }
          try {
            this._internalType = o2, this._outputType = t4, this._mimeType = r4, n2.checkSupport(o2), this._worker = e4.pipe(new s5(o2)), e4.lock();
          } catch (e5) {
            this._worker = new i2("error"), this._worker.error(e5);
          }
        }
        l.prototype = { accumulate: function(e4) {
          return t4 = this, r4 = e4, new c.Promise((function(e5, s6) {
            var i3 = [], a3 = t4._internalType, c2 = t4._outputType, u4 = t4._mimeType;
            t4.on("data", (function(e6, t5) {
              i3.push(e6), r4 && r4(t5);
            })).on("error", (function(e6) {
              i3 = [], s6(e6);
            })).on("end", (function() {
              try {
                var t5 = (function(e6, t6, r5) {
                  switch (e6) {
                    case "blob":
                      return n2.newBlob(n2.transformTo("arraybuffer", t6), r5);
                    case "base64":
                      return o.encode(t6);
                    default:
                      return n2.transformTo(e6, t6);
                  }
                })(c2, (function(e6, t6) {
                  var r5, n3 = 0, s7 = null, i4 = 0;
                  for (r5 = 0; r5 < t6.length; r5++) i4 += t6[r5].length;
                  switch (e6) {
                    case "string":
                      return t6.join("");
                    case "array":
                      return Array.prototype.concat.apply([], t6);
                    case "uint8array":
                      for (s7 = new Uint8Array(i4), r5 = 0; r5 < t6.length; r5++) s7.set(t6[r5], n3), n3 += t6[r5].length;
                      return s7;
                    case "nodebuffer":
                      return Buffer.concat(t6);
                    default:
                      throw new Error("concat : unsupported type '" + e6 + "'");
                  }
                })(a3, i3), u4);
                e5(t5);
              } catch (e6) {
                s6(e6);
              }
              i3 = [];
            })).resume();
          }));
          var t4, r4;
        }, on: function(e4, t4) {
          var r4 = this;
          return "data" === e4 ? this._worker.on(e4, (function(e5) {
            t4.call(r4, e5.data, e5.meta);
          })) : this._worker.on(e4, (function() {
            n2.delay(t4, arguments, r4);
          })), this;
        }, resume: function() {
          return n2.delay(this._worker.resume, [], this._worker), this;
        }, pause: function() {
          return this._worker.pause(), this;
        }, toNodejsStream: function(e4) {
          if (n2.checkSupport("nodestream"), "nodebuffer" !== this._outputType) throw new Error(this._outputType + " is not supported by this method");
          return new u3(this, { objectMode: "nodebuffer" !== this._outputType }, e4);
        } }, e3.exports = l;
      }, 3790: (e3, t3, r3) => {
        "use strict";
        if (t3.base64 = true, t3.array = true, t3.string = true, t3.arraybuffer = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array, t3.nodebuffer = "undefined" != typeof Buffer, t3.uint8array = "undefined" != typeof Uint8Array, "undefined" == typeof ArrayBuffer) t3.blob = false;
        else {
          var n2 = new ArrayBuffer(0);
          try {
            t3.blob = 0 === new Blob([n2], { type: "application/zip" }).size;
          } catch (e4) {
            try {
              var s5 = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)();
              s5.append(n2), t3.blob = 0 === s5.getBlob("application/zip").size;
            } catch (e5) {
              t3.blob = false;
            }
          }
        }
        try {
          t3.nodestream = !!r3(749).Readable;
        } catch (e4) {
          t3.nodestream = false;
        }
      }, 3600: (e3, t3, r3) => {
        "use strict";
        for (var n2 = r3(8910), s5 = r3(3790), i2 = r3(2182), o = r3(3718), a2 = new Array(256), c = 0; c < 256; c++) a2[c] = c >= 252 ? 6 : c >= 248 ? 5 : c >= 240 ? 4 : c >= 224 ? 3 : c >= 192 ? 2 : 1;
        function u3() {
          o.call(this, "utf-8 decode"), this.leftOver = null;
        }
        function l() {
          o.call(this, "utf-8 encode");
        }
        a2[254] = a2[254] = 1, t3.utf8encode = function(e4) {
          return s5.nodebuffer ? i2.newBufferFrom(e4, "utf-8") : (function(e5) {
            var t4, r4, n3, i3, o2, a3 = e5.length, c2 = 0;
            for (i3 = 0; i3 < a3; i3++) 55296 == (64512 & (r4 = e5.charCodeAt(i3))) && i3 + 1 < a3 && 56320 == (64512 & (n3 = e5.charCodeAt(i3 + 1))) && (r4 = 65536 + (r4 - 55296 << 10) + (n3 - 56320), i3++), c2 += r4 < 128 ? 1 : r4 < 2048 ? 2 : r4 < 65536 ? 3 : 4;
            for (t4 = s5.uint8array ? new Uint8Array(c2) : new Array(c2), o2 = 0, i3 = 0; o2 < c2; i3++) 55296 == (64512 & (r4 = e5.charCodeAt(i3))) && i3 + 1 < a3 && 56320 == (64512 & (n3 = e5.charCodeAt(i3 + 1))) && (r4 = 65536 + (r4 - 55296 << 10) + (n3 - 56320), i3++), r4 < 128 ? t4[o2++] = r4 : r4 < 2048 ? (t4[o2++] = 192 | r4 >>> 6, t4[o2++] = 128 | 63 & r4) : r4 < 65536 ? (t4[o2++] = 224 | r4 >>> 12, t4[o2++] = 128 | r4 >>> 6 & 63, t4[o2++] = 128 | 63 & r4) : (t4[o2++] = 240 | r4 >>> 18, t4[o2++] = 128 | r4 >>> 12 & 63, t4[o2++] = 128 | r4 >>> 6 & 63, t4[o2++] = 128 | 63 & r4);
            return t4;
          })(e4);
        }, t3.utf8decode = function(e4) {
          return s5.nodebuffer ? n2.transformTo("nodebuffer", e4).toString("utf-8") : (function(e5) {
            var t4, r4, s6, i3, o2 = e5.length, c2 = new Array(2 * o2);
            for (r4 = 0, t4 = 0; t4 < o2; ) if ((s6 = e5[t4++]) < 128) c2[r4++] = s6;
            else if ((i3 = a2[s6]) > 4) c2[r4++] = 65533, t4 += i3 - 1;
            else {
              for (s6 &= 2 === i3 ? 31 : 3 === i3 ? 15 : 7; i3 > 1 && t4 < o2; ) s6 = s6 << 6 | 63 & e5[t4++], i3--;
              i3 > 1 ? c2[r4++] = 65533 : s6 < 65536 ? c2[r4++] = s6 : (s6 -= 65536, c2[r4++] = 55296 | s6 >> 10 & 1023, c2[r4++] = 56320 | 1023 & s6);
            }
            return c2.length !== r4 && (c2.subarray ? c2 = c2.subarray(0, r4) : c2.length = r4), n2.applyFromCharCode(c2);
          })(e4 = n2.transformTo(s5.uint8array ? "uint8array" : "array", e4));
        }, n2.inherits(u3, o), u3.prototype.processChunk = function(e4) {
          var r4 = n2.transformTo(s5.uint8array ? "uint8array" : "array", e4.data);
          if (this.leftOver && this.leftOver.length) {
            if (s5.uint8array) {
              var i3 = r4;
              (r4 = new Uint8Array(i3.length + this.leftOver.length)).set(this.leftOver, 0), r4.set(i3, this.leftOver.length);
            } else r4 = this.leftOver.concat(r4);
            this.leftOver = null;
          }
          var o2 = (function(e5, t4) {
            var r5;
            for ((t4 = t4 || e5.length) > e5.length && (t4 = e5.length), r5 = t4 - 1; r5 >= 0 && 128 == (192 & e5[r5]); ) r5--;
            return r5 < 0 || 0 === r5 ? t4 : r5 + a2[e5[r5]] > t4 ? r5 : t4;
          })(r4), c2 = r4;
          o2 !== r4.length && (s5.uint8array ? (c2 = r4.subarray(0, o2), this.leftOver = r4.subarray(o2, r4.length)) : (c2 = r4.slice(0, o2), this.leftOver = r4.slice(o2, r4.length))), this.push({ data: t3.utf8decode(c2), meta: e4.meta });
        }, u3.prototype.flush = function() {
          this.leftOver && this.leftOver.length && (this.push({ data: t3.utf8decode(this.leftOver), meta: {} }), this.leftOver = null);
        }, t3.Utf8DecodeWorker = u3, n2.inherits(l, o), l.prototype.processChunk = function(e4) {
          this.push({ data: t3.utf8encode(e4.data), meta: e4.meta });
        }, t3.Utf8EncodeWorker = l;
      }, 8910: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(3790), s5 = r3(8458), i2 = r3(2182), o = r3(8565);
        function a2(e4) {
          return e4;
        }
        function c(e4, t4) {
          for (var r4 = 0; r4 < e4.length; ++r4) t4[r4] = 255 & e4.charCodeAt(r4);
          return t4;
        }
        r3(4889), t3.newBlob = function(e4, r4) {
          t3.checkSupport("blob");
          try {
            return new Blob([e4], { type: r4 });
          } catch (t4) {
            try {
              var n3 = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)();
              return n3.append(e4), n3.getBlob(r4);
            } catch (e5) {
              throw new Error("Bug : can't construct the Blob.");
            }
          }
        };
        var u3 = { stringifyByChunk: function(e4, t4, r4) {
          var n3 = [], s6 = 0, i3 = e4.length;
          if (i3 <= r4) return String.fromCharCode.apply(null, e4);
          for (; s6 < i3; ) "array" === t4 || "nodebuffer" === t4 ? n3.push(String.fromCharCode.apply(null, e4.slice(s6, Math.min(s6 + r4, i3)))) : n3.push(String.fromCharCode.apply(null, e4.subarray(s6, Math.min(s6 + r4, i3)))), s6 += r4;
          return n3.join("");
        }, stringifyByChar: function(e4) {
          for (var t4 = "", r4 = 0; r4 < e4.length; r4++) t4 += String.fromCharCode(e4[r4]);
          return t4;
        }, applyCanBeUsed: { uint8array: (function() {
          try {
            return n2.uint8array && 1 === String.fromCharCode.apply(null, new Uint8Array(1)).length;
          } catch (e4) {
            return false;
          }
        })(), nodebuffer: (function() {
          try {
            return n2.nodebuffer && 1 === String.fromCharCode.apply(null, i2.allocBuffer(1)).length;
          } catch (e4) {
            return false;
          }
        })() } };
        function l(e4) {
          var r4 = 65536, n3 = t3.getTypeOf(e4), s6 = true;
          if ("uint8array" === n3 ? s6 = u3.applyCanBeUsed.uint8array : "nodebuffer" === n3 && (s6 = u3.applyCanBeUsed.nodebuffer), s6) for (; r4 > 1; ) try {
            return u3.stringifyByChunk(e4, n3, r4);
          } catch (e5) {
            r4 = Math.floor(r4 / 2);
          }
          return u3.stringifyByChar(e4);
        }
        function h4(e4, t4) {
          for (var r4 = 0; r4 < e4.length; r4++) t4[r4] = e4[r4];
          return t4;
        }
        t3.applyFromCharCode = l;
        var p5 = {};
        p5.string = { string: a2, array: function(e4) {
          return c(e4, new Array(e4.length));
        }, arraybuffer: function(e4) {
          return p5.string.uint8array(e4).buffer;
        }, uint8array: function(e4) {
          return c(e4, new Uint8Array(e4.length));
        }, nodebuffer: function(e4) {
          return c(e4, i2.allocBuffer(e4.length));
        } }, p5.array = { string: l, array: a2, arraybuffer: function(e4) {
          return new Uint8Array(e4).buffer;
        }, uint8array: function(e4) {
          return new Uint8Array(e4);
        }, nodebuffer: function(e4) {
          return i2.newBufferFrom(e4);
        } }, p5.arraybuffer = { string: function(e4) {
          return l(new Uint8Array(e4));
        }, array: function(e4) {
          return h4(new Uint8Array(e4), new Array(e4.byteLength));
        }, arraybuffer: a2, uint8array: function(e4) {
          return new Uint8Array(e4);
        }, nodebuffer: function(e4) {
          return i2.newBufferFrom(new Uint8Array(e4));
        } }, p5.uint8array = { string: l, array: function(e4) {
          return h4(e4, new Array(e4.length));
        }, arraybuffer: function(e4) {
          return e4.buffer;
        }, uint8array: a2, nodebuffer: function(e4) {
          return i2.newBufferFrom(e4);
        } }, p5.nodebuffer = { string: l, array: function(e4) {
          return h4(e4, new Array(e4.length));
        }, arraybuffer: function(e4) {
          return p5.nodebuffer.uint8array(e4).buffer;
        }, uint8array: function(e4) {
          return h4(e4, new Uint8Array(e4.length));
        }, nodebuffer: a2 }, t3.transformTo = function(e4, r4) {
          if (r4 || (r4 = ""), !e4) return r4;
          t3.checkSupport(e4);
          var n3 = t3.getTypeOf(r4);
          return p5[n3][e4](r4);
        }, t3.resolve = function(e4) {
          for (var t4 = e4.split("/"), r4 = [], n3 = 0; n3 < t4.length; n3++) {
            var s6 = t4[n3];
            "." === s6 || "" === s6 && 0 !== n3 && n3 !== t4.length - 1 || (".." === s6 ? r4.pop() : r4.push(s6));
          }
          return r4.join("/");
        }, t3.getTypeOf = function(e4) {
          return "string" == typeof e4 ? "string" : "[object Array]" === Object.prototype.toString.call(e4) ? "array" : n2.nodebuffer && i2.isBuffer(e4) ? "nodebuffer" : n2.uint8array && e4 instanceof Uint8Array ? "uint8array" : n2.arraybuffer && e4 instanceof ArrayBuffer ? "arraybuffer" : void 0;
        }, t3.checkSupport = function(e4) {
          if (!n2[e4.toLowerCase()]) throw new Error(e4 + " is not supported by this platform");
        }, t3.MAX_VALUE_16BITS = 65535, t3.MAX_VALUE_32BITS = -1, t3.pretty = function(e4) {
          var t4, r4, n3 = "";
          for (r4 = 0; r4 < (e4 || "").length; r4++) n3 += "\\x" + ((t4 = e4.charCodeAt(r4)) < 16 ? "0" : "") + t4.toString(16).toUpperCase();
          return n3;
        }, t3.delay = function(e4, t4, r4) {
          setImmediate((function() {
            e4.apply(r4 || null, t4 || []);
          }));
        }, t3.inherits = function(e4, t4) {
          var r4 = function() {
          };
          r4.prototype = t4.prototype, e4.prototype = new r4();
        }, t3.extend = function() {
          var e4, t4, r4 = {};
          for (e4 = 0; e4 < arguments.length; e4++) for (t4 in arguments[e4]) Object.prototype.hasOwnProperty.call(arguments[e4], t4) && void 0 === r4[t4] && (r4[t4] = arguments[e4][t4]);
          return r4;
        }, t3.prepareContent = function(e4, r4, i3, a3, u4) {
          return o.Promise.resolve(r4).then((function(e5) {
            return n2.blob && (e5 instanceof Blob || -1 !== ["[object File]", "[object Blob]"].indexOf(Object.prototype.toString.call(e5))) && "undefined" != typeof FileReader ? new o.Promise((function(t4, r5) {
              var n3 = new FileReader();
              n3.onload = function(e6) {
                t4(e6.target.result);
              }, n3.onerror = function(e6) {
                r5(e6.target.error);
              }, n3.readAsArrayBuffer(e5);
            })) : e5;
          })).then((function(r5) {
            var l2, h5 = t3.getTypeOf(r5);
            return h5 ? ("arraybuffer" === h5 ? r5 = t3.transformTo("uint8array", r5) : "string" === h5 && (u4 ? r5 = s5.decode(r5) : i3 && true !== a3 && (r5 = c(l2 = r5, n2.uint8array ? new Uint8Array(l2.length) : new Array(l2.length)))), r5) : o.Promise.reject(new Error("Can't read the data of '" + e4 + "'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"));
          }));
        };
      }, 6624: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8435), s5 = r3(8910), i2 = r3(1141), o = r3(9392), a2 = r3(3790);
        function c(e4) {
          this.files = [], this.loadOptions = e4;
        }
        c.prototype = { checkSignature: function(e4) {
          if (!this.reader.readAndCheckSignature(e4)) {
            this.reader.index -= 4;
            var t4 = this.reader.readString(4);
            throw new Error("Corrupted zip or bug: unexpected signature (" + s5.pretty(t4) + ", expected " + s5.pretty(e4) + ")");
          }
        }, isSignature: function(e4, t4) {
          var r4 = this.reader.index;
          this.reader.setIndex(e4);
          var n3 = this.reader.readString(4) === t4;
          return this.reader.setIndex(r4), n3;
        }, readBlockEndOfCentral: function() {
          this.diskNumber = this.reader.readInt(2), this.diskWithCentralDirStart = this.reader.readInt(2), this.centralDirRecordsOnThisDisk = this.reader.readInt(2), this.centralDirRecords = this.reader.readInt(2), this.centralDirSize = this.reader.readInt(4), this.centralDirOffset = this.reader.readInt(4), this.zipCommentLength = this.reader.readInt(2);
          var e4 = this.reader.readData(this.zipCommentLength), t4 = a2.uint8array ? "uint8array" : "array", r4 = s5.transformTo(t4, e4);
          this.zipComment = this.loadOptions.decodeFileName(r4);
        }, readBlockZip64EndOfCentral: function() {
          this.zip64EndOfCentralSize = this.reader.readInt(8), this.reader.skip(4), this.diskNumber = this.reader.readInt(4), this.diskWithCentralDirStart = this.reader.readInt(4), this.centralDirRecordsOnThisDisk = this.reader.readInt(8), this.centralDirRecords = this.reader.readInt(8), this.centralDirSize = this.reader.readInt(8), this.centralDirOffset = this.reader.readInt(8), this.zip64ExtensibleData = {};
          for (var e4, t4, r4, n3 = this.zip64EndOfCentralSize - 44; 0 < n3; ) e4 = this.reader.readInt(2), t4 = this.reader.readInt(4), r4 = this.reader.readData(t4), this.zip64ExtensibleData[e4] = { id: e4, length: t4, value: r4 };
        }, readBlockZip64EndOfCentralLocator: function() {
          if (this.diskWithZip64CentralDirStart = this.reader.readInt(4), this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8), this.disksCount = this.reader.readInt(4), this.disksCount > 1) throw new Error("Multi-volumes zip are not supported");
        }, readLocalFiles: function() {
          var e4, t4;
          for (e4 = 0; e4 < this.files.length; e4++) t4 = this.files[e4], this.reader.setIndex(t4.localHeaderOffset), this.checkSignature(i2.LOCAL_FILE_HEADER), t4.readLocalPart(this.reader), t4.handleUTF8(), t4.processAttributes();
        }, readCentralDir: function() {
          var e4;
          for (this.reader.setIndex(this.centralDirOffset); this.reader.readAndCheckSignature(i2.CENTRAL_FILE_HEADER); ) (e4 = new o({ zip64: this.zip64 }, this.loadOptions)).readCentralPart(this.reader), this.files.push(e4);
          if (this.centralDirRecords !== this.files.length && 0 !== this.centralDirRecords && 0 === this.files.length) throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length);
        }, readEndOfCentral: function() {
          var e4 = this.reader.lastIndexOfSignature(i2.CENTRAL_DIRECTORY_END);
          if (e4 < 0) throw this.isSignature(0, i2.LOCAL_FILE_HEADER) ? new Error("Corrupted zip: can't find end of central directory") : new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");
          this.reader.setIndex(e4);
          var t4 = e4;
          if (this.checkSignature(i2.CENTRAL_DIRECTORY_END), this.readBlockEndOfCentral(), this.diskNumber === s5.MAX_VALUE_16BITS || this.diskWithCentralDirStart === s5.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === s5.MAX_VALUE_16BITS || this.centralDirRecords === s5.MAX_VALUE_16BITS || this.centralDirSize === s5.MAX_VALUE_32BITS || this.centralDirOffset === s5.MAX_VALUE_32BITS) {
            if (this.zip64 = true, (e4 = this.reader.lastIndexOfSignature(i2.ZIP64_CENTRAL_DIRECTORY_LOCATOR)) < 0) throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");
            if (this.reader.setIndex(e4), this.checkSignature(i2.ZIP64_CENTRAL_DIRECTORY_LOCATOR), this.readBlockZip64EndOfCentralLocator(), !this.isSignature(this.relativeOffsetEndOfZip64CentralDir, i2.ZIP64_CENTRAL_DIRECTORY_END) && (this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(i2.ZIP64_CENTRAL_DIRECTORY_END), this.relativeOffsetEndOfZip64CentralDir < 0)) throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");
            this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir), this.checkSignature(i2.ZIP64_CENTRAL_DIRECTORY_END), this.readBlockZip64EndOfCentral();
          }
          var r4 = this.centralDirOffset + this.centralDirSize;
          this.zip64 && (r4 += 20, r4 += 12 + this.zip64EndOfCentralSize);
          var n3 = t4 - r4;
          if (n3 > 0) this.isSignature(t4, i2.CENTRAL_FILE_HEADER) || (this.reader.zero = n3);
          else if (n3 < 0) throw new Error("Corrupted zip: missing " + Math.abs(n3) + " bytes.");
        }, prepareReader: function(e4) {
          this.reader = n2(e4);
        }, load: function(e4) {
          this.prepareReader(e4), this.readEndOfCentral(), this.readCentralDir(), this.readLocalFiles();
        } }, e3.exports = c;
      }, 9392: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8435), s5 = r3(8910), i2 = r3(7326), o = r3(6988), a2 = r3(3600), c = r3(1678), u3 = r3(3790);
        function l(e4, t4) {
          this.options = e4, this.loadOptions = t4;
        }
        l.prototype = { isEncrypted: function() {
          return 1 == (1 & this.bitFlag);
        }, useUTF8: function() {
          return 2048 == (2048 & this.bitFlag);
        }, readLocalPart: function(e4) {
          var t4, r4;
          if (e4.skip(22), this.fileNameLength = e4.readInt(2), r4 = e4.readInt(2), this.fileName = e4.readData(this.fileNameLength), e4.skip(r4), -1 === this.compressedSize || -1 === this.uncompressedSize) throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");
          if (null === (t4 = (function(e5) {
            for (var t5 in c) if (Object.prototype.hasOwnProperty.call(c, t5) && c[t5].magic === e5) return c[t5];
            return null;
          })(this.compressionMethod))) throw new Error("Corrupted zip : compression " + s5.pretty(this.compressionMethod) + " unknown (inner file : " + s5.transformTo("string", this.fileName) + ")");
          this.decompressed = new i2(this.compressedSize, this.uncompressedSize, this.crc32, t4, e4.readData(this.compressedSize));
        }, readCentralPart: function(e4) {
          this.versionMadeBy = e4.readInt(2), e4.skip(2), this.bitFlag = e4.readInt(2), this.compressionMethod = e4.readString(2), this.date = e4.readDate(), this.crc32 = e4.readInt(4), this.compressedSize = e4.readInt(4), this.uncompressedSize = e4.readInt(4);
          var t4 = e4.readInt(2);
          if (this.extraFieldsLength = e4.readInt(2), this.fileCommentLength = e4.readInt(2), this.diskNumberStart = e4.readInt(2), this.internalFileAttributes = e4.readInt(2), this.externalFileAttributes = e4.readInt(4), this.localHeaderOffset = e4.readInt(4), this.isEncrypted()) throw new Error("Encrypted zip are not supported");
          e4.skip(t4), this.readExtraFields(e4), this.parseZIP64ExtraField(e4), this.fileComment = e4.readData(this.fileCommentLength);
        }, processAttributes: function() {
          this.unixPermissions = null, this.dosPermissions = null;
          var e4 = this.versionMadeBy >> 8;
          this.dir = !!(16 & this.externalFileAttributes), 0 === e4 && (this.dosPermissions = 63 & this.externalFileAttributes), 3 === e4 && (this.unixPermissions = this.externalFileAttributes >> 16 & 65535), this.dir || "/" !== this.fileNameStr.slice(-1) || (this.dir = true);
        }, parseZIP64ExtraField: function() {
          if (this.extraFields[1]) {
            var e4 = n2(this.extraFields[1].value);
            this.uncompressedSize === s5.MAX_VALUE_32BITS && (this.uncompressedSize = e4.readInt(8)), this.compressedSize === s5.MAX_VALUE_32BITS && (this.compressedSize = e4.readInt(8)), this.localHeaderOffset === s5.MAX_VALUE_32BITS && (this.localHeaderOffset = e4.readInt(8)), this.diskNumberStart === s5.MAX_VALUE_32BITS && (this.diskNumberStart = e4.readInt(4));
          }
        }, readExtraFields: function(e4) {
          var t4, r4, n3, s6 = e4.index + this.extraFieldsLength;
          for (this.extraFields || (this.extraFields = {}); e4.index + 4 < s6; ) t4 = e4.readInt(2), r4 = e4.readInt(2), n3 = e4.readData(r4), this.extraFields[t4] = { id: t4, length: r4, value: n3 };
          e4.setIndex(s6);
        }, handleUTF8: function() {
          var e4 = u3.uint8array ? "uint8array" : "array";
          if (this.useUTF8()) this.fileNameStr = a2.utf8decode(this.fileName), this.fileCommentStr = a2.utf8decode(this.fileComment);
          else {
            var t4 = this.findExtraFieldUnicodePath();
            if (null !== t4) this.fileNameStr = t4;
            else {
              var r4 = s5.transformTo(e4, this.fileName);
              this.fileNameStr = this.loadOptions.decodeFileName(r4);
            }
            var n3 = this.findExtraFieldUnicodeComment();
            if (null !== n3) this.fileCommentStr = n3;
            else {
              var i3 = s5.transformTo(e4, this.fileComment);
              this.fileCommentStr = this.loadOptions.decodeFileName(i3);
            }
          }
        }, findExtraFieldUnicodePath: function() {
          var e4 = this.extraFields[28789];
          if (e4) {
            var t4 = n2(e4.value);
            return 1 !== t4.readInt(1) || o(this.fileName) !== t4.readInt(4) ? null : a2.utf8decode(t4.readData(e4.length - 5));
          }
          return null;
        }, findExtraFieldUnicodeComment: function() {
          var e4 = this.extraFields[25461];
          if (e4) {
            var t4 = n2(e4.value);
            return 1 !== t4.readInt(1) || o(this.fileComment) !== t4.readInt(4) ? null : a2.utf8decode(t4.readData(e4.length - 5));
          }
          return null;
        } }, e3.exports = l;
      }, 6859: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(1285), s5 = r3(5301), i2 = r3(3600), o = r3(7326), a2 = r3(3718), c = function(e4, t4, r4) {
          this.name = e4, this.dir = r4.dir, this.date = r4.date, this.comment = r4.comment, this.unixPermissions = r4.unixPermissions, this.dosPermissions = r4.dosPermissions, this._data = t4, this._dataBinary = r4.binary, this.options = { compression: r4.compression, compressionOptions: r4.compressionOptions };
        };
        c.prototype = { internalStream: function(e4) {
          var t4 = null, r4 = "string";
          try {
            if (!e4) throw new Error("No output type specified.");
            var s6 = "string" === (r4 = e4.toLowerCase()) || "text" === r4;
            "binarystring" !== r4 && "text" !== r4 || (r4 = "string"), t4 = this._decompressWorker();
            var o2 = !this._dataBinary;
            o2 && !s6 && (t4 = t4.pipe(new i2.Utf8EncodeWorker())), !o2 && s6 && (t4 = t4.pipe(new i2.Utf8DecodeWorker()));
          } catch (e5) {
            (t4 = new a2("error")).error(e5);
          }
          return new n2(t4, r4, "");
        }, async: function(e4, t4) {
          return this.internalStream(e4).accumulate(t4);
        }, nodeStream: function(e4, t4) {
          return this.internalStream(e4 || "nodebuffer").toNodejsStream(t4);
        }, _compressWorker: function(e4, t4) {
          if (this._data instanceof o && this._data.compression.magic === e4.magic) return this._data.getCompressedWorker();
          var r4 = this._decompressWorker();
          return this._dataBinary || (r4 = r4.pipe(new i2.Utf8EncodeWorker())), o.createWorkerFrom(r4, e4, t4);
        }, _decompressWorker: function() {
          return this._data instanceof o ? this._data.getContentWorker() : this._data instanceof a2 ? this._data : new s5(this._data);
        } };
        for (var u3 = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"], l = function() {
          throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");
        }, h4 = 0; h4 < u3.length; h4++) c.prototype[u3[h4]] = l;
        e3.exports = c;
      }, 3389: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(5705);
        function s5() {
        }
        var i2 = {}, o = ["REJECTED"], a2 = ["FULFILLED"], c = ["PENDING"];
        function u3(e4) {
          if ("function" != typeof e4) throw new TypeError("resolver must be a function");
          this.state = c, this.queue = [], this.outcome = void 0, e4 !== s5 && d(this, e4);
        }
        function l(e4, t4, r4) {
          this.promise = e4, "function" == typeof t4 && (this.onFulfilled = t4, this.callFulfilled = this.otherCallFulfilled), "function" == typeof r4 && (this.onRejected = r4, this.callRejected = this.otherCallRejected);
        }
        function h4(e4, t4, r4) {
          n2((function() {
            var n3;
            try {
              n3 = t4(r4);
            } catch (t5) {
              return i2.reject(e4, t5);
            }
            n3 === e4 ? i2.reject(e4, new TypeError("Cannot resolve promise with itself")) : i2.resolve(e4, n3);
          }));
        }
        function p5(e4) {
          var t4 = e4 && e4.then;
          if (e4 && ("object" == typeof e4 || "function" == typeof e4) && "function" == typeof t4) return function() {
            t4.apply(e4, arguments);
          };
        }
        function d(e4, t4) {
          var r4 = false;
          function n3(t5) {
            r4 || (r4 = true, i2.reject(e4, t5));
          }
          function s6(t5) {
            r4 || (r4 = true, i2.resolve(e4, t5));
          }
          var o2 = f3((function() {
            t4(s6, n3);
          }));
          "error" === o2.status && n3(o2.value);
        }
        function f3(e4, t4) {
          var r4 = {};
          try {
            r4.value = e4(t4), r4.status = "success";
          } catch (e5) {
            r4.status = "error", r4.value = e5;
          }
          return r4;
        }
        e3.exports = u3, u3.prototype.finally = function(e4) {
          if ("function" != typeof e4) return this;
          var t4 = this.constructor;
          return this.then((function(r4) {
            return t4.resolve(e4()).then((function() {
              return r4;
            }));
          }), (function(r4) {
            return t4.resolve(e4()).then((function() {
              throw r4;
            }));
          }));
        }, u3.prototype.catch = function(e4) {
          return this.then(null, e4);
        }, u3.prototype.then = function(e4, t4) {
          if ("function" != typeof e4 && this.state === a2 || "function" != typeof t4 && this.state === o) return this;
          var r4 = new this.constructor(s5);
          return this.state !== c ? h4(r4, this.state === a2 ? e4 : t4, this.outcome) : this.queue.push(new l(r4, e4, t4)), r4;
        }, l.prototype.callFulfilled = function(e4) {
          i2.resolve(this.promise, e4);
        }, l.prototype.otherCallFulfilled = function(e4) {
          h4(this.promise, this.onFulfilled, e4);
        }, l.prototype.callRejected = function(e4) {
          i2.reject(this.promise, e4);
        }, l.prototype.otherCallRejected = function(e4) {
          h4(this.promise, this.onRejected, e4);
        }, i2.resolve = function(e4, t4) {
          var r4 = f3(p5, t4);
          if ("error" === r4.status) return i2.reject(e4, r4.value);
          var n3 = r4.value;
          if (n3) d(e4, n3);
          else {
            e4.state = a2, e4.outcome = t4;
            for (var s6 = -1, o2 = e4.queue.length; ++s6 < o2; ) e4.queue[s6].callFulfilled(t4);
          }
          return e4;
        }, i2.reject = function(e4, t4) {
          e4.state = o, e4.outcome = t4;
          for (var r4 = -1, n3 = e4.queue.length; ++r4 < n3; ) e4.queue[r4].callRejected(t4);
          return e4;
        }, u3.resolve = function(e4) {
          return e4 instanceof this ? e4 : i2.resolve(new this(s5), e4);
        }, u3.reject = function(e4) {
          var t4 = new this(s5);
          return i2.reject(t4, e4);
        }, u3.all = function(e4) {
          var t4 = this;
          if ("[object Array]" !== Object.prototype.toString.call(e4)) return this.reject(new TypeError("must be an array"));
          var r4 = e4.length, n3 = false;
          if (!r4) return this.resolve([]);
          for (var o2 = new Array(r4), a3 = 0, c2 = -1, u4 = new this(s5); ++c2 < r4; ) l2(e4[c2], c2);
          return u4;
          function l2(e5, s6) {
            t4.resolve(e5).then((function(e6) {
              o2[s6] = e6, ++a3 !== r4 || n3 || (n3 = true, i2.resolve(u4, o2));
            }), (function(e6) {
              n3 || (n3 = true, i2.reject(u4, e6));
            }));
          }
        }, u3.race = function(e4) {
          if ("[object Array]" !== Object.prototype.toString.call(e4)) return this.reject(new TypeError("must be an array"));
          var t4 = e4.length, r4 = false;
          if (!t4) return this.resolve([]);
          for (var n3, o2 = -1, a3 = new this(s5); ++o2 < t4; ) n3 = e4[o2], this.resolve(n3).then((function(e5) {
            r4 || (r4 = true, i2.resolve(a3, e5));
          }), (function(e5) {
            r4 || (r4 = true, i2.reject(a3, e5));
          }));
          return a3;
        };
      }, 9591: (e3, t3, r3) => {
        "use strict";
        var n2 = {};
        (0, r3(4236).assign)(n2, r3(4555), r3(8843), r3(1619)), e3.exports = n2;
      }, 4555: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(405), s5 = r3(4236), i2 = r3(9373), o = r3(8898), a2 = r3(2292), c = Object.prototype.toString;
        function u3(e4) {
          if (!(this instanceof u3)) return new u3(e4);
          this.options = s5.assign({ level: -1, method: 8, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: 0, to: "" }, e4 || {});
          var t4 = this.options;
          t4.raw && t4.windowBits > 0 ? t4.windowBits = -t4.windowBits : t4.gzip && t4.windowBits > 0 && t4.windowBits < 16 && (t4.windowBits += 16), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new a2(), this.strm.avail_out = 0;
          var r4 = n2.deflateInit2(this.strm, t4.level, t4.method, t4.windowBits, t4.memLevel, t4.strategy);
          if (0 !== r4) throw new Error(o[r4]);
          if (t4.header && n2.deflateSetHeader(this.strm, t4.header), t4.dictionary) {
            var l2;
            if (l2 = "string" == typeof t4.dictionary ? i2.string2buf(t4.dictionary) : "[object ArrayBuffer]" === c.call(t4.dictionary) ? new Uint8Array(t4.dictionary) : t4.dictionary, 0 !== (r4 = n2.deflateSetDictionary(this.strm, l2))) throw new Error(o[r4]);
            this._dict_set = true;
          }
        }
        function l(e4, t4) {
          var r4 = new u3(t4);
          if (r4.push(e4, true), r4.err) throw r4.msg || o[r4.err];
          return r4.result;
        }
        u3.prototype.push = function(e4, t4) {
          var r4, o2, a3 = this.strm, u4 = this.options.chunkSize;
          if (this.ended) return false;
          o2 = t4 === ~~t4 ? t4 : true === t4 ? 4 : 0, "string" == typeof e4 ? a3.input = i2.string2buf(e4) : "[object ArrayBuffer]" === c.call(e4) ? a3.input = new Uint8Array(e4) : a3.input = e4, a3.next_in = 0, a3.avail_in = a3.input.length;
          do {
            if (0 === a3.avail_out && (a3.output = new s5.Buf8(u4), a3.next_out = 0, a3.avail_out = u4), 1 !== (r4 = n2.deflate(a3, o2)) && 0 !== r4) return this.onEnd(r4), this.ended = true, false;
            0 !== a3.avail_out && (0 !== a3.avail_in || 4 !== o2 && 2 !== o2) || ("string" === this.options.to ? this.onData(i2.buf2binstring(s5.shrinkBuf(a3.output, a3.next_out))) : this.onData(s5.shrinkBuf(a3.output, a3.next_out)));
          } while ((a3.avail_in > 0 || 0 === a3.avail_out) && 1 !== r4);
          return 4 === o2 ? (r4 = n2.deflateEnd(this.strm), this.onEnd(r4), this.ended = true, 0 === r4) : 2 !== o2 || (this.onEnd(0), a3.avail_out = 0, true);
        }, u3.prototype.onData = function(e4) {
          this.chunks.push(e4);
        }, u3.prototype.onEnd = function(e4) {
          0 === e4 && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = s5.flattenChunks(this.chunks)), this.chunks = [], this.err = e4, this.msg = this.strm.msg;
        }, t3.Deflate = u3, t3.deflate = l, t3.deflateRaw = function(e4, t4) {
          return (t4 = t4 || {}).raw = true, l(e4, t4);
        }, t3.gzip = function(e4, t4) {
          return (t4 = t4 || {}).gzip = true, l(e4, t4);
        };
      }, 8843: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(7948), s5 = r3(4236), i2 = r3(9373), o = r3(1619), a2 = r3(8898), c = r3(2292), u3 = r3(2401), l = Object.prototype.toString;
        function h4(e4) {
          if (!(this instanceof h4)) return new h4(e4);
          this.options = s5.assign({ chunkSize: 16384, windowBits: 0, to: "" }, e4 || {});
          var t4 = this.options;
          t4.raw && t4.windowBits >= 0 && t4.windowBits < 16 && (t4.windowBits = -t4.windowBits, 0 === t4.windowBits && (t4.windowBits = -15)), !(t4.windowBits >= 0 && t4.windowBits < 16) || e4 && e4.windowBits || (t4.windowBits += 32), t4.windowBits > 15 && t4.windowBits < 48 && 0 == (15 & t4.windowBits) && (t4.windowBits |= 15), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new c(), this.strm.avail_out = 0;
          var r4 = n2.inflateInit2(this.strm, t4.windowBits);
          if (r4 !== o.Z_OK) throw new Error(a2[r4]);
          if (this.header = new u3(), n2.inflateGetHeader(this.strm, this.header), t4.dictionary && ("string" == typeof t4.dictionary ? t4.dictionary = i2.string2buf(t4.dictionary) : "[object ArrayBuffer]" === l.call(t4.dictionary) && (t4.dictionary = new Uint8Array(t4.dictionary)), t4.raw && (r4 = n2.inflateSetDictionary(this.strm, t4.dictionary)) !== o.Z_OK)) throw new Error(a2[r4]);
        }
        function p5(e4, t4) {
          var r4 = new h4(t4);
          if (r4.push(e4, true), r4.err) throw r4.msg || a2[r4.err];
          return r4.result;
        }
        h4.prototype.push = function(e4, t4) {
          var r4, a3, c2, u4, h5, p6 = this.strm, d = this.options.chunkSize, f3 = this.options.dictionary, m2 = false;
          if (this.ended) return false;
          a3 = t4 === ~~t4 ? t4 : true === t4 ? o.Z_FINISH : o.Z_NO_FLUSH, "string" == typeof e4 ? p6.input = i2.binstring2buf(e4) : "[object ArrayBuffer]" === l.call(e4) ? p6.input = new Uint8Array(e4) : p6.input = e4, p6.next_in = 0, p6.avail_in = p6.input.length;
          do {
            if (0 === p6.avail_out && (p6.output = new s5.Buf8(d), p6.next_out = 0, p6.avail_out = d), (r4 = n2.inflate(p6, o.Z_NO_FLUSH)) === o.Z_NEED_DICT && f3 && (r4 = n2.inflateSetDictionary(this.strm, f3)), r4 === o.Z_BUF_ERROR && true === m2 && (r4 = o.Z_OK, m2 = false), r4 !== o.Z_STREAM_END && r4 !== o.Z_OK) return this.onEnd(r4), this.ended = true, false;
            p6.next_out && (0 !== p6.avail_out && r4 !== o.Z_STREAM_END && (0 !== p6.avail_in || a3 !== o.Z_FINISH && a3 !== o.Z_SYNC_FLUSH) || ("string" === this.options.to ? (c2 = i2.utf8border(p6.output, p6.next_out), u4 = p6.next_out - c2, h5 = i2.buf2string(p6.output, c2), p6.next_out = u4, p6.avail_out = d - u4, u4 && s5.arraySet(p6.output, p6.output, c2, u4, 0), this.onData(h5)) : this.onData(s5.shrinkBuf(p6.output, p6.next_out)))), 0 === p6.avail_in && 0 === p6.avail_out && (m2 = true);
          } while ((p6.avail_in > 0 || 0 === p6.avail_out) && r4 !== o.Z_STREAM_END);
          return r4 === o.Z_STREAM_END && (a3 = o.Z_FINISH), a3 === o.Z_FINISH ? (r4 = n2.inflateEnd(this.strm), this.onEnd(r4), this.ended = true, r4 === o.Z_OK) : a3 !== o.Z_SYNC_FLUSH || (this.onEnd(o.Z_OK), p6.avail_out = 0, true);
        }, h4.prototype.onData = function(e4) {
          this.chunks.push(e4);
        }, h4.prototype.onEnd = function(e4) {
          e4 === o.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = s5.flattenChunks(this.chunks)), this.chunks = [], this.err = e4, this.msg = this.strm.msg;
        }, t3.Inflate = h4, t3.inflate = p5, t3.inflateRaw = function(e4, t4) {
          return (t4 = t4 || {}).raw = true, p5(e4, t4);
        }, t3.ungzip = p5;
      }, 4236: (e3, t3) => {
        "use strict";
        var r3 = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array;
        function n2(e4, t4) {
          return Object.prototype.hasOwnProperty.call(e4, t4);
        }
        t3.assign = function(e4) {
          for (var t4 = Array.prototype.slice.call(arguments, 1); t4.length; ) {
            var r4 = t4.shift();
            if (r4) {
              if ("object" != typeof r4) throw new TypeError(r4 + "must be non-object");
              for (var s6 in r4) n2(r4, s6) && (e4[s6] = r4[s6]);
            }
          }
          return e4;
        }, t3.shrinkBuf = function(e4, t4) {
          return e4.length === t4 ? e4 : e4.subarray ? e4.subarray(0, t4) : (e4.length = t4, e4);
        };
        var s5 = { arraySet: function(e4, t4, r4, n3, s6) {
          if (t4.subarray && e4.subarray) e4.set(t4.subarray(r4, r4 + n3), s6);
          else for (var i3 = 0; i3 < n3; i3++) e4[s6 + i3] = t4[r4 + i3];
        }, flattenChunks: function(e4) {
          var t4, r4, n3, s6, i3, o;
          for (n3 = 0, t4 = 0, r4 = e4.length; t4 < r4; t4++) n3 += e4[t4].length;
          for (o = new Uint8Array(n3), s6 = 0, t4 = 0, r4 = e4.length; t4 < r4; t4++) i3 = e4[t4], o.set(i3, s6), s6 += i3.length;
          return o;
        } }, i2 = { arraySet: function(e4, t4, r4, n3, s6) {
          for (var i3 = 0; i3 < n3; i3++) e4[s6 + i3] = t4[r4 + i3];
        }, flattenChunks: function(e4) {
          return [].concat.apply([], e4);
        } };
        t3.setTyped = function(e4) {
          e4 ? (t3.Buf8 = Uint8Array, t3.Buf16 = Uint16Array, t3.Buf32 = Int32Array, t3.assign(t3, s5)) : (t3.Buf8 = Array, t3.Buf16 = Array, t3.Buf32 = Array, t3.assign(t3, i2));
        }, t3.setTyped(r3);
      }, 9373: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(4236), s5 = true, i2 = true;
        try {
          String.fromCharCode.apply(null, [0]);
        } catch (e4) {
          s5 = false;
        }
        try {
          String.fromCharCode.apply(null, new Uint8Array(1));
        } catch (e4) {
          i2 = false;
        }
        for (var o = new n2.Buf8(256), a2 = 0; a2 < 256; a2++) o[a2] = a2 >= 252 ? 6 : a2 >= 248 ? 5 : a2 >= 240 ? 4 : a2 >= 224 ? 3 : a2 >= 192 ? 2 : 1;
        function c(e4, t4) {
          if (t4 < 65534 && (e4.subarray && i2 || !e4.subarray && s5)) return String.fromCharCode.apply(null, n2.shrinkBuf(e4, t4));
          for (var r4 = "", o2 = 0; o2 < t4; o2++) r4 += String.fromCharCode(e4[o2]);
          return r4;
        }
        o[254] = o[254] = 1, t3.string2buf = function(e4) {
          var t4, r4, s6, i3, o2, a3 = e4.length, c2 = 0;
          for (i3 = 0; i3 < a3; i3++) 55296 == (64512 & (r4 = e4.charCodeAt(i3))) && i3 + 1 < a3 && 56320 == (64512 & (s6 = e4.charCodeAt(i3 + 1))) && (r4 = 65536 + (r4 - 55296 << 10) + (s6 - 56320), i3++), c2 += r4 < 128 ? 1 : r4 < 2048 ? 2 : r4 < 65536 ? 3 : 4;
          for (t4 = new n2.Buf8(c2), o2 = 0, i3 = 0; o2 < c2; i3++) 55296 == (64512 & (r4 = e4.charCodeAt(i3))) && i3 + 1 < a3 && 56320 == (64512 & (s6 = e4.charCodeAt(i3 + 1))) && (r4 = 65536 + (r4 - 55296 << 10) + (s6 - 56320), i3++), r4 < 128 ? t4[o2++] = r4 : r4 < 2048 ? (t4[o2++] = 192 | r4 >>> 6, t4[o2++] = 128 | 63 & r4) : r4 < 65536 ? (t4[o2++] = 224 | r4 >>> 12, t4[o2++] = 128 | r4 >>> 6 & 63, t4[o2++] = 128 | 63 & r4) : (t4[o2++] = 240 | r4 >>> 18, t4[o2++] = 128 | r4 >>> 12 & 63, t4[o2++] = 128 | r4 >>> 6 & 63, t4[o2++] = 128 | 63 & r4);
          return t4;
        }, t3.buf2binstring = function(e4) {
          return c(e4, e4.length);
        }, t3.binstring2buf = function(e4) {
          for (var t4 = new n2.Buf8(e4.length), r4 = 0, s6 = t4.length; r4 < s6; r4++) t4[r4] = e4.charCodeAt(r4);
          return t4;
        }, t3.buf2string = function(e4, t4) {
          var r4, n3, s6, i3, a3 = t4 || e4.length, u3 = new Array(2 * a3);
          for (n3 = 0, r4 = 0; r4 < a3; ) if ((s6 = e4[r4++]) < 128) u3[n3++] = s6;
          else if ((i3 = o[s6]) > 4) u3[n3++] = 65533, r4 += i3 - 1;
          else {
            for (s6 &= 2 === i3 ? 31 : 3 === i3 ? 15 : 7; i3 > 1 && r4 < a3; ) s6 = s6 << 6 | 63 & e4[r4++], i3--;
            i3 > 1 ? u3[n3++] = 65533 : s6 < 65536 ? u3[n3++] = s6 : (s6 -= 65536, u3[n3++] = 55296 | s6 >> 10 & 1023, u3[n3++] = 56320 | 1023 & s6);
          }
          return c(u3, n3);
        }, t3.utf8border = function(e4, t4) {
          var r4;
          for ((t4 = t4 || e4.length) > e4.length && (t4 = e4.length), r4 = t4 - 1; r4 >= 0 && 128 == (192 & e4[r4]); ) r4--;
          return r4 < 0 || 0 === r4 ? t4 : r4 + o[e4[r4]] > t4 ? r4 : t4;
        };
      }, 6069: (e3) => {
        "use strict";
        e3.exports = function(e4, t3, r3, n2) {
          for (var s5 = 65535 & e4 | 0, i2 = e4 >>> 16 & 65535 | 0, o = 0; 0 !== r3; ) {
            r3 -= o = r3 > 2e3 ? 2e3 : r3;
            do {
              i2 = i2 + (s5 = s5 + t3[n2++] | 0) | 0;
            } while (--o);
            s5 %= 65521, i2 %= 65521;
          }
          return s5 | i2 << 16 | 0;
        };
      }, 1619: (e3) => {
        "use strict";
        e3.exports = { Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_BUF_ERROR: -5, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, Z_BINARY: 0, Z_TEXT: 1, Z_UNKNOWN: 2, Z_DEFLATED: 8 };
      }, 2869: (e3) => {
        "use strict";
        var t3 = (function() {
          for (var e4, t4 = [], r3 = 0; r3 < 256; r3++) {
            e4 = r3;
            for (var n2 = 0; n2 < 8; n2++) e4 = 1 & e4 ? 3988292384 ^ e4 >>> 1 : e4 >>> 1;
            t4[r3] = e4;
          }
          return t4;
        })();
        e3.exports = function(e4, r3, n2, s5) {
          var i2 = t3, o = s5 + n2;
          e4 ^= -1;
          for (var a2 = s5; a2 < o; a2++) e4 = e4 >>> 8 ^ i2[255 & (e4 ^ r3[a2])];
          return -1 ^ e4;
        };
      }, 405: (e3, t3, r3) => {
        "use strict";
        var n2, s5 = r3(4236), i2 = r3(342), o = r3(6069), a2 = r3(2869), c = r3(8898), u3 = -2, l = 258, h4 = 262, p5 = 103, d = 113, f3 = 666;
        function m2(e4, t4) {
          return e4.msg = c[t4], t4;
        }
        function w(e4) {
          return (e4 << 1) - (e4 > 4 ? 9 : 0);
        }
        function g(e4) {
          for (var t4 = e4.length; --t4 >= 0; ) e4[t4] = 0;
        }
        function y(e4) {
          var t4 = e4.state, r4 = t4.pending;
          r4 > e4.avail_out && (r4 = e4.avail_out), 0 !== r4 && (s5.arraySet(e4.output, t4.pending_buf, t4.pending_out, r4, e4.next_out), e4.next_out += r4, t4.pending_out += r4, e4.total_out += r4, e4.avail_out -= r4, t4.pending -= r4, 0 === t4.pending && (t4.pending_out = 0));
        }
        function b(e4, t4) {
          i2._tr_flush_block(e4, e4.block_start >= 0 ? e4.block_start : -1, e4.strstart - e4.block_start, t4), e4.block_start = e4.strstart, y(e4.strm);
        }
        function x2(e4, t4) {
          e4.pending_buf[e4.pending++] = t4;
        }
        function v(e4, t4) {
          e4.pending_buf[e4.pending++] = t4 >>> 8 & 255, e4.pending_buf[e4.pending++] = 255 & t4;
        }
        function _2(e4, t4) {
          var r4, n3, s6 = e4.max_chain_length, i3 = e4.strstart, o2 = e4.prev_length, a3 = e4.nice_match, c2 = e4.strstart > e4.w_size - h4 ? e4.strstart - (e4.w_size - h4) : 0, u4 = e4.window, p6 = e4.w_mask, d2 = e4.prev, f4 = e4.strstart + l, m3 = u4[i3 + o2 - 1], w2 = u4[i3 + o2];
          e4.prev_length >= e4.good_match && (s6 >>= 2), a3 > e4.lookahead && (a3 = e4.lookahead);
          do {
            if (u4[(r4 = t4) + o2] === w2 && u4[r4 + o2 - 1] === m3 && u4[r4] === u4[i3] && u4[++r4] === u4[i3 + 1]) {
              i3 += 2, r4++;
              do {
              } while (u4[++i3] === u4[++r4] && u4[++i3] === u4[++r4] && u4[++i3] === u4[++r4] && u4[++i3] === u4[++r4] && u4[++i3] === u4[++r4] && u4[++i3] === u4[++r4] && u4[++i3] === u4[++r4] && u4[++i3] === u4[++r4] && i3 < f4);
              if (n3 = l - (f4 - i3), i3 = f4 - l, n3 > o2) {
                if (e4.match_start = t4, o2 = n3, n3 >= a3) break;
                m3 = u4[i3 + o2 - 1], w2 = u4[i3 + o2];
              }
            }
          } while ((t4 = d2[t4 & p6]) > c2 && 0 != --s6);
          return o2 <= e4.lookahead ? o2 : e4.lookahead;
        }
        function E(e4) {
          var t4, r4, n3, i3, c2, u4, l2, p6, d2, f4, m3 = e4.w_size;
          do {
            if (i3 = e4.window_size - e4.lookahead - e4.strstart, e4.strstart >= m3 + (m3 - h4)) {
              s5.arraySet(e4.window, e4.window, m3, m3, 0), e4.match_start -= m3, e4.strstart -= m3, e4.block_start -= m3, t4 = r4 = e4.hash_size;
              do {
                n3 = e4.head[--t4], e4.head[t4] = n3 >= m3 ? n3 - m3 : 0;
              } while (--r4);
              t4 = r4 = m3;
              do {
                n3 = e4.prev[--t4], e4.prev[t4] = n3 >= m3 ? n3 - m3 : 0;
              } while (--r4);
              i3 += m3;
            }
            if (0 === e4.strm.avail_in) break;
            if (u4 = e4.strm, l2 = e4.window, p6 = e4.strstart + e4.lookahead, d2 = i3, f4 = void 0, (f4 = u4.avail_in) > d2 && (f4 = d2), r4 = 0 === f4 ? 0 : (u4.avail_in -= f4, s5.arraySet(l2, u4.input, u4.next_in, f4, p6), 1 === u4.state.wrap ? u4.adler = o(u4.adler, l2, f4, p6) : 2 === u4.state.wrap && (u4.adler = a2(u4.adler, l2, f4, p6)), u4.next_in += f4, u4.total_in += f4, f4), e4.lookahead += r4, e4.lookahead + e4.insert >= 3) for (c2 = e4.strstart - e4.insert, e4.ins_h = e4.window[c2], e4.ins_h = (e4.ins_h << e4.hash_shift ^ e4.window[c2 + 1]) & e4.hash_mask; e4.insert && (e4.ins_h = (e4.ins_h << e4.hash_shift ^ e4.window[c2 + 3 - 1]) & e4.hash_mask, e4.prev[c2 & e4.w_mask] = e4.head[e4.ins_h], e4.head[e4.ins_h] = c2, c2++, e4.insert--, !(e4.lookahead + e4.insert < 3)); ) ;
          } while (e4.lookahead < h4 && 0 !== e4.strm.avail_in);
        }
        function T2(e4, t4) {
          for (var r4, n3; ; ) {
            if (e4.lookahead < h4) {
              if (E(e4), e4.lookahead < h4 && 0 === t4) return 1;
              if (0 === e4.lookahead) break;
            }
            if (r4 = 0, e4.lookahead >= 3 && (e4.ins_h = (e4.ins_h << e4.hash_shift ^ e4.window[e4.strstart + 3 - 1]) & e4.hash_mask, r4 = e4.prev[e4.strstart & e4.w_mask] = e4.head[e4.ins_h], e4.head[e4.ins_h] = e4.strstart), 0 !== r4 && e4.strstart - r4 <= e4.w_size - h4 && (e4.match_length = _2(e4, r4)), e4.match_length >= 3) if (n3 = i2._tr_tally(e4, e4.strstart - e4.match_start, e4.match_length - 3), e4.lookahead -= e4.match_length, e4.match_length <= e4.max_lazy_match && e4.lookahead >= 3) {
              e4.match_length--;
              do {
                e4.strstart++, e4.ins_h = (e4.ins_h << e4.hash_shift ^ e4.window[e4.strstart + 3 - 1]) & e4.hash_mask, r4 = e4.prev[e4.strstart & e4.w_mask] = e4.head[e4.ins_h], e4.head[e4.ins_h] = e4.strstart;
              } while (0 != --e4.match_length);
              e4.strstart++;
            } else e4.strstart += e4.match_length, e4.match_length = 0, e4.ins_h = e4.window[e4.strstart], e4.ins_h = (e4.ins_h << e4.hash_shift ^ e4.window[e4.strstart + 1]) & e4.hash_mask;
            else n3 = i2._tr_tally(e4, 0, e4.window[e4.strstart]), e4.lookahead--, e4.strstart++;
            if (n3 && (b(e4, false), 0 === e4.strm.avail_out)) return 1;
          }
          return e4.insert = e4.strstart < 2 ? e4.strstart : 2, 4 === t4 ? (b(e4, true), 0 === e4.strm.avail_out ? 3 : 4) : e4.last_lit && (b(e4, false), 0 === e4.strm.avail_out) ? 1 : 2;
        }
        function A2(e4, t4) {
          for (var r4, n3, s6; ; ) {
            if (e4.lookahead < h4) {
              if (E(e4), e4.lookahead < h4 && 0 === t4) return 1;
              if (0 === e4.lookahead) break;
            }
            if (r4 = 0, e4.lookahead >= 3 && (e4.ins_h = (e4.ins_h << e4.hash_shift ^ e4.window[e4.strstart + 3 - 1]) & e4.hash_mask, r4 = e4.prev[e4.strstart & e4.w_mask] = e4.head[e4.ins_h], e4.head[e4.ins_h] = e4.strstart), e4.prev_length = e4.match_length, e4.prev_match = e4.match_start, e4.match_length = 2, 0 !== r4 && e4.prev_length < e4.max_lazy_match && e4.strstart - r4 <= e4.w_size - h4 && (e4.match_length = _2(e4, r4), e4.match_length <= 5 && (1 === e4.strategy || 3 === e4.match_length && e4.strstart - e4.match_start > 4096) && (e4.match_length = 2)), e4.prev_length >= 3 && e4.match_length <= e4.prev_length) {
              s6 = e4.strstart + e4.lookahead - 3, n3 = i2._tr_tally(e4, e4.strstart - 1 - e4.prev_match, e4.prev_length - 3), e4.lookahead -= e4.prev_length - 1, e4.prev_length -= 2;
              do {
                ++e4.strstart <= s6 && (e4.ins_h = (e4.ins_h << e4.hash_shift ^ e4.window[e4.strstart + 3 - 1]) & e4.hash_mask, r4 = e4.prev[e4.strstart & e4.w_mask] = e4.head[e4.ins_h], e4.head[e4.ins_h] = e4.strstart);
              } while (0 != --e4.prev_length);
              if (e4.match_available = 0, e4.match_length = 2, e4.strstart++, n3 && (b(e4, false), 0 === e4.strm.avail_out)) return 1;
            } else if (e4.match_available) {
              if ((n3 = i2._tr_tally(e4, 0, e4.window[e4.strstart - 1])) && b(e4, false), e4.strstart++, e4.lookahead--, 0 === e4.strm.avail_out) return 1;
            } else e4.match_available = 1, e4.strstart++, e4.lookahead--;
          }
          return e4.match_available && (n3 = i2._tr_tally(e4, 0, e4.window[e4.strstart - 1]), e4.match_available = 0), e4.insert = e4.strstart < 2 ? e4.strstart : 2, 4 === t4 ? (b(e4, true), 0 === e4.strm.avail_out ? 3 : 4) : e4.last_lit && (b(e4, false), 0 === e4.strm.avail_out) ? 1 : 2;
        }
        function S3(e4, t4, r4, n3, s6) {
          this.good_length = e4, this.max_lazy = t4, this.nice_length = r4, this.max_chain = n3, this.func = s6;
        }
        function I() {
          this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = 8, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new s5.Buf16(1146), this.dyn_dtree = new s5.Buf16(122), this.bl_tree = new s5.Buf16(78), g(this.dyn_ltree), g(this.dyn_dtree), g(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new s5.Buf16(16), this.heap = new s5.Buf16(573), g(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new s5.Buf16(573), g(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0;
        }
        function R(e4) {
          var t4;
          return e4 && e4.state ? (e4.total_in = e4.total_out = 0, e4.data_type = 2, (t4 = e4.state).pending = 0, t4.pending_out = 0, t4.wrap < 0 && (t4.wrap = -t4.wrap), t4.status = t4.wrap ? 42 : d, e4.adler = 2 === t4.wrap ? 0 : 1, t4.last_flush = 0, i2._tr_init(t4), 0) : m2(e4, u3);
        }
        function N(e4) {
          var t4, r4 = R(e4);
          return 0 === r4 && ((t4 = e4.state).window_size = 2 * t4.w_size, g(t4.head), t4.max_lazy_match = n2[t4.level].max_lazy, t4.good_match = n2[t4.level].good_length, t4.nice_match = n2[t4.level].nice_length, t4.max_chain_length = n2[t4.level].max_chain, t4.strstart = 0, t4.block_start = 0, t4.lookahead = 0, t4.insert = 0, t4.match_length = t4.prev_length = 2, t4.match_available = 0, t4.ins_h = 0), r4;
        }
        function C(e4, t4, r4, n3, i3, o2) {
          if (!e4) return u3;
          var a3 = 1;
          if (-1 === t4 && (t4 = 6), n3 < 0 ? (a3 = 0, n3 = -n3) : n3 > 15 && (a3 = 2, n3 -= 16), i3 < 1 || i3 > 9 || 8 !== r4 || n3 < 8 || n3 > 15 || t4 < 0 || t4 > 9 || o2 < 0 || o2 > 4) return m2(e4, u3);
          8 === n3 && (n3 = 9);
          var c2 = new I();
          return e4.state = c2, c2.strm = e4, c2.wrap = a3, c2.gzhead = null, c2.w_bits = n3, c2.w_size = 1 << c2.w_bits, c2.w_mask = c2.w_size - 1, c2.hash_bits = i3 + 7, c2.hash_size = 1 << c2.hash_bits, c2.hash_mask = c2.hash_size - 1, c2.hash_shift = ~~((c2.hash_bits + 3 - 1) / 3), c2.window = new s5.Buf8(2 * c2.w_size), c2.head = new s5.Buf16(c2.hash_size), c2.prev = new s5.Buf16(c2.w_size), c2.lit_bufsize = 1 << i3 + 6, c2.pending_buf_size = 4 * c2.lit_bufsize, c2.pending_buf = new s5.Buf8(c2.pending_buf_size), c2.d_buf = 1 * c2.lit_bufsize, c2.l_buf = 3 * c2.lit_bufsize, c2.level = t4, c2.strategy = o2, c2.method = r4, N(e4);
        }
        n2 = [new S3(0, 0, 0, 0, (function(e4, t4) {
          var r4 = 65535;
          for (r4 > e4.pending_buf_size - 5 && (r4 = e4.pending_buf_size - 5); ; ) {
            if (e4.lookahead <= 1) {
              if (E(e4), 0 === e4.lookahead && 0 === t4) return 1;
              if (0 === e4.lookahead) break;
            }
            e4.strstart += e4.lookahead, e4.lookahead = 0;
            var n3 = e4.block_start + r4;
            if ((0 === e4.strstart || e4.strstart >= n3) && (e4.lookahead = e4.strstart - n3, e4.strstart = n3, b(e4, false), 0 === e4.strm.avail_out)) return 1;
            if (e4.strstart - e4.block_start >= e4.w_size - h4 && (b(e4, false), 0 === e4.strm.avail_out)) return 1;
          }
          return e4.insert = 0, 4 === t4 ? (b(e4, true), 0 === e4.strm.avail_out ? 3 : 4) : (e4.strstart > e4.block_start && (b(e4, false), e4.strm.avail_out), 1);
        })), new S3(4, 4, 8, 4, T2), new S3(4, 5, 16, 8, T2), new S3(4, 6, 32, 32, T2), new S3(4, 4, 16, 16, A2), new S3(8, 16, 32, 32, A2), new S3(8, 16, 128, 128, A2), new S3(8, 32, 128, 256, A2), new S3(32, 128, 258, 1024, A2), new S3(32, 258, 258, 4096, A2)], t3.deflateInit = function(e4, t4) {
          return C(e4, t4, 8, 15, 8, 0);
        }, t3.deflateInit2 = C, t3.deflateReset = N, t3.deflateResetKeep = R, t3.deflateSetHeader = function(e4, t4) {
          return e4 && e4.state ? 2 !== e4.state.wrap ? u3 : (e4.state.gzhead = t4, 0) : u3;
        }, t3.deflate = function(e4, t4) {
          var r4, s6, o2, c2;
          if (!e4 || !e4.state || t4 > 5 || t4 < 0) return e4 ? m2(e4, u3) : u3;
          if (s6 = e4.state, !e4.output || !e4.input && 0 !== e4.avail_in || s6.status === f3 && 4 !== t4) return m2(e4, 0 === e4.avail_out ? -5 : u3);
          if (s6.strm = e4, r4 = s6.last_flush, s6.last_flush = t4, 42 === s6.status) if (2 === s6.wrap) e4.adler = 0, x2(s6, 31), x2(s6, 139), x2(s6, 8), s6.gzhead ? (x2(s6, (s6.gzhead.text ? 1 : 0) + (s6.gzhead.hcrc ? 2 : 0) + (s6.gzhead.extra ? 4 : 0) + (s6.gzhead.name ? 8 : 0) + (s6.gzhead.comment ? 16 : 0)), x2(s6, 255 & s6.gzhead.time), x2(s6, s6.gzhead.time >> 8 & 255), x2(s6, s6.gzhead.time >> 16 & 255), x2(s6, s6.gzhead.time >> 24 & 255), x2(s6, 9 === s6.level ? 2 : s6.strategy >= 2 || s6.level < 2 ? 4 : 0), x2(s6, 255 & s6.gzhead.os), s6.gzhead.extra && s6.gzhead.extra.length && (x2(s6, 255 & s6.gzhead.extra.length), x2(s6, s6.gzhead.extra.length >> 8 & 255)), s6.gzhead.hcrc && (e4.adler = a2(e4.adler, s6.pending_buf, s6.pending, 0)), s6.gzindex = 0, s6.status = 69) : (x2(s6, 0), x2(s6, 0), x2(s6, 0), x2(s6, 0), x2(s6, 0), x2(s6, 9 === s6.level ? 2 : s6.strategy >= 2 || s6.level < 2 ? 4 : 0), x2(s6, 3), s6.status = d);
          else {
            var h5 = 8 + (s6.w_bits - 8 << 4) << 8;
            h5 |= (s6.strategy >= 2 || s6.level < 2 ? 0 : s6.level < 6 ? 1 : 6 === s6.level ? 2 : 3) << 6, 0 !== s6.strstart && (h5 |= 32), h5 += 31 - h5 % 31, s6.status = d, v(s6, h5), 0 !== s6.strstart && (v(s6, e4.adler >>> 16), v(s6, 65535 & e4.adler)), e4.adler = 1;
          }
          if (69 === s6.status) if (s6.gzhead.extra) {
            for (o2 = s6.pending; s6.gzindex < (65535 & s6.gzhead.extra.length) && (s6.pending !== s6.pending_buf_size || (s6.gzhead.hcrc && s6.pending > o2 && (e4.adler = a2(e4.adler, s6.pending_buf, s6.pending - o2, o2)), y(e4), o2 = s6.pending, s6.pending !== s6.pending_buf_size)); ) x2(s6, 255 & s6.gzhead.extra[s6.gzindex]), s6.gzindex++;
            s6.gzhead.hcrc && s6.pending > o2 && (e4.adler = a2(e4.adler, s6.pending_buf, s6.pending - o2, o2)), s6.gzindex === s6.gzhead.extra.length && (s6.gzindex = 0, s6.status = 73);
          } else s6.status = 73;
          if (73 === s6.status) if (s6.gzhead.name) {
            o2 = s6.pending;
            do {
              if (s6.pending === s6.pending_buf_size && (s6.gzhead.hcrc && s6.pending > o2 && (e4.adler = a2(e4.adler, s6.pending_buf, s6.pending - o2, o2)), y(e4), o2 = s6.pending, s6.pending === s6.pending_buf_size)) {
                c2 = 1;
                break;
              }
              c2 = s6.gzindex < s6.gzhead.name.length ? 255 & s6.gzhead.name.charCodeAt(s6.gzindex++) : 0, x2(s6, c2);
            } while (0 !== c2);
            s6.gzhead.hcrc && s6.pending > o2 && (e4.adler = a2(e4.adler, s6.pending_buf, s6.pending - o2, o2)), 0 === c2 && (s6.gzindex = 0, s6.status = 91);
          } else s6.status = 91;
          if (91 === s6.status) if (s6.gzhead.comment) {
            o2 = s6.pending;
            do {
              if (s6.pending === s6.pending_buf_size && (s6.gzhead.hcrc && s6.pending > o2 && (e4.adler = a2(e4.adler, s6.pending_buf, s6.pending - o2, o2)), y(e4), o2 = s6.pending, s6.pending === s6.pending_buf_size)) {
                c2 = 1;
                break;
              }
              c2 = s6.gzindex < s6.gzhead.comment.length ? 255 & s6.gzhead.comment.charCodeAt(s6.gzindex++) : 0, x2(s6, c2);
            } while (0 !== c2);
            s6.gzhead.hcrc && s6.pending > o2 && (e4.adler = a2(e4.adler, s6.pending_buf, s6.pending - o2, o2)), 0 === c2 && (s6.status = p5);
          } else s6.status = p5;
          if (s6.status === p5 && (s6.gzhead.hcrc ? (s6.pending + 2 > s6.pending_buf_size && y(e4), s6.pending + 2 <= s6.pending_buf_size && (x2(s6, 255 & e4.adler), x2(s6, e4.adler >> 8 & 255), e4.adler = 0, s6.status = d)) : s6.status = d), 0 !== s6.pending) {
            if (y(e4), 0 === e4.avail_out) return s6.last_flush = -1, 0;
          } else if (0 === e4.avail_in && w(t4) <= w(r4) && 4 !== t4) return m2(e4, -5);
          if (s6.status === f3 && 0 !== e4.avail_in) return m2(e4, -5);
          if (0 !== e4.avail_in || 0 !== s6.lookahead || 0 !== t4 && s6.status !== f3) {
            var _3 = 2 === s6.strategy ? (function(e5, t5) {
              for (var r5; ; ) {
                if (0 === e5.lookahead && (E(e5), 0 === e5.lookahead)) {
                  if (0 === t5) return 1;
                  break;
                }
                if (e5.match_length = 0, r5 = i2._tr_tally(e5, 0, e5.window[e5.strstart]), e5.lookahead--, e5.strstart++, r5 && (b(e5, false), 0 === e5.strm.avail_out)) return 1;
              }
              return e5.insert = 0, 4 === t5 ? (b(e5, true), 0 === e5.strm.avail_out ? 3 : 4) : e5.last_lit && (b(e5, false), 0 === e5.strm.avail_out) ? 1 : 2;
            })(s6, t4) : 3 === s6.strategy ? (function(e5, t5) {
              for (var r5, n3, s7, o3, a3 = e5.window; ; ) {
                if (e5.lookahead <= l) {
                  if (E(e5), e5.lookahead <= l && 0 === t5) return 1;
                  if (0 === e5.lookahead) break;
                }
                if (e5.match_length = 0, e5.lookahead >= 3 && e5.strstart > 0 && (n3 = a3[s7 = e5.strstart - 1]) === a3[++s7] && n3 === a3[++s7] && n3 === a3[++s7]) {
                  o3 = e5.strstart + l;
                  do {
                  } while (n3 === a3[++s7] && n3 === a3[++s7] && n3 === a3[++s7] && n3 === a3[++s7] && n3 === a3[++s7] && n3 === a3[++s7] && n3 === a3[++s7] && n3 === a3[++s7] && s7 < o3);
                  e5.match_length = l - (o3 - s7), e5.match_length > e5.lookahead && (e5.match_length = e5.lookahead);
                }
                if (e5.match_length >= 3 ? (r5 = i2._tr_tally(e5, 1, e5.match_length - 3), e5.lookahead -= e5.match_length, e5.strstart += e5.match_length, e5.match_length = 0) : (r5 = i2._tr_tally(e5, 0, e5.window[e5.strstart]), e5.lookahead--, e5.strstart++), r5 && (b(e5, false), 0 === e5.strm.avail_out)) return 1;
              }
              return e5.insert = 0, 4 === t5 ? (b(e5, true), 0 === e5.strm.avail_out ? 3 : 4) : e5.last_lit && (b(e5, false), 0 === e5.strm.avail_out) ? 1 : 2;
            })(s6, t4) : n2[s6.level].func(s6, t4);
            if (3 !== _3 && 4 !== _3 || (s6.status = f3), 1 === _3 || 3 === _3) return 0 === e4.avail_out && (s6.last_flush = -1), 0;
            if (2 === _3 && (1 === t4 ? i2._tr_align(s6) : 5 !== t4 && (i2._tr_stored_block(s6, 0, 0, false), 3 === t4 && (g(s6.head), 0 === s6.lookahead && (s6.strstart = 0, s6.block_start = 0, s6.insert = 0))), y(e4), 0 === e4.avail_out)) return s6.last_flush = -1, 0;
          }
          return 4 !== t4 ? 0 : s6.wrap <= 0 ? 1 : (2 === s6.wrap ? (x2(s6, 255 & e4.adler), x2(s6, e4.adler >> 8 & 255), x2(s6, e4.adler >> 16 & 255), x2(s6, e4.adler >> 24 & 255), x2(s6, 255 & e4.total_in), x2(s6, e4.total_in >> 8 & 255), x2(s6, e4.total_in >> 16 & 255), x2(s6, e4.total_in >> 24 & 255)) : (v(s6, e4.adler >>> 16), v(s6, 65535 & e4.adler)), y(e4), s6.wrap > 0 && (s6.wrap = -s6.wrap), 0 !== s6.pending ? 0 : 1);
        }, t3.deflateEnd = function(e4) {
          var t4;
          return e4 && e4.state ? 42 !== (t4 = e4.state.status) && 69 !== t4 && 73 !== t4 && 91 !== t4 && t4 !== p5 && t4 !== d && t4 !== f3 ? m2(e4, u3) : (e4.state = null, t4 === d ? m2(e4, -3) : 0) : u3;
        }, t3.deflateSetDictionary = function(e4, t4) {
          var r4, n3, i3, a3, c2, l2, h5, p6, d2 = t4.length;
          if (!e4 || !e4.state) return u3;
          if (2 === (a3 = (r4 = e4.state).wrap) || 1 === a3 && 42 !== r4.status || r4.lookahead) return u3;
          for (1 === a3 && (e4.adler = o(e4.adler, t4, d2, 0)), r4.wrap = 0, d2 >= r4.w_size && (0 === a3 && (g(r4.head), r4.strstart = 0, r4.block_start = 0, r4.insert = 0), p6 = new s5.Buf8(r4.w_size), s5.arraySet(p6, t4, d2 - r4.w_size, r4.w_size, 0), t4 = p6, d2 = r4.w_size), c2 = e4.avail_in, l2 = e4.next_in, h5 = e4.input, e4.avail_in = d2, e4.next_in = 0, e4.input = t4, E(r4); r4.lookahead >= 3; ) {
            n3 = r4.strstart, i3 = r4.lookahead - 2;
            do {
              r4.ins_h = (r4.ins_h << r4.hash_shift ^ r4.window[n3 + 3 - 1]) & r4.hash_mask, r4.prev[n3 & r4.w_mask] = r4.head[r4.ins_h], r4.head[r4.ins_h] = n3, n3++;
            } while (--i3);
            r4.strstart = n3, r4.lookahead = 2, E(r4);
          }
          return r4.strstart += r4.lookahead, r4.block_start = r4.strstart, r4.insert = r4.lookahead, r4.lookahead = 0, r4.match_length = r4.prev_length = 2, r4.match_available = 0, e4.next_in = l2, e4.input = h5, e4.avail_in = c2, r4.wrap = a3, 0;
        }, t3.deflateInfo = "pako deflate (from Nodeca project)";
      }, 2401: (e3) => {
        "use strict";
        e3.exports = function() {
          this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = false;
        };
      }, 4264: (e3) => {
        "use strict";
        e3.exports = function(e4, t3) {
          var r3, n2, s5, i2, o, a2, c, u3, l, h4, p5, d, f3, m2, w, g, y, b, x2, v, _2, E, T2, A2, S3;
          r3 = e4.state, n2 = e4.next_in, A2 = e4.input, s5 = n2 + (e4.avail_in - 5), i2 = e4.next_out, S3 = e4.output, o = i2 - (t3 - e4.avail_out), a2 = i2 + (e4.avail_out - 257), c = r3.dmax, u3 = r3.wsize, l = r3.whave, h4 = r3.wnext, p5 = r3.window, d = r3.hold, f3 = r3.bits, m2 = r3.lencode, w = r3.distcode, g = (1 << r3.lenbits) - 1, y = (1 << r3.distbits) - 1;
          e: do {
            f3 < 15 && (d += A2[n2++] << f3, f3 += 8, d += A2[n2++] << f3, f3 += 8), b = m2[d & g];
            t: for (; ; ) {
              if (d >>>= x2 = b >>> 24, f3 -= x2, 0 == (x2 = b >>> 16 & 255)) S3[i2++] = 65535 & b;
              else {
                if (!(16 & x2)) {
                  if (0 == (64 & x2)) {
                    b = m2[(65535 & b) + (d & (1 << x2) - 1)];
                    continue t;
                  }
                  if (32 & x2) {
                    r3.mode = 12;
                    break e;
                  }
                  e4.msg = "invalid literal/length code", r3.mode = 30;
                  break e;
                }
                v = 65535 & b, (x2 &= 15) && (f3 < x2 && (d += A2[n2++] << f3, f3 += 8), v += d & (1 << x2) - 1, d >>>= x2, f3 -= x2), f3 < 15 && (d += A2[n2++] << f3, f3 += 8, d += A2[n2++] << f3, f3 += 8), b = w[d & y];
                r: for (; ; ) {
                  if (d >>>= x2 = b >>> 24, f3 -= x2, !(16 & (x2 = b >>> 16 & 255))) {
                    if (0 == (64 & x2)) {
                      b = w[(65535 & b) + (d & (1 << x2) - 1)];
                      continue r;
                    }
                    e4.msg = "invalid distance code", r3.mode = 30;
                    break e;
                  }
                  if (_2 = 65535 & b, f3 < (x2 &= 15) && (d += A2[n2++] << f3, (f3 += 8) < x2 && (d += A2[n2++] << f3, f3 += 8)), (_2 += d & (1 << x2) - 1) > c) {
                    e4.msg = "invalid distance too far back", r3.mode = 30;
                    break e;
                  }
                  if (d >>>= x2, f3 -= x2, _2 > (x2 = i2 - o)) {
                    if ((x2 = _2 - x2) > l && r3.sane) {
                      e4.msg = "invalid distance too far back", r3.mode = 30;
                      break e;
                    }
                    if (E = 0, T2 = p5, 0 === h4) {
                      if (E += u3 - x2, x2 < v) {
                        v -= x2;
                        do {
                          S3[i2++] = p5[E++];
                        } while (--x2);
                        E = i2 - _2, T2 = S3;
                      }
                    } else if (h4 < x2) {
                      if (E += u3 + h4 - x2, (x2 -= h4) < v) {
                        v -= x2;
                        do {
                          S3[i2++] = p5[E++];
                        } while (--x2);
                        if (E = 0, h4 < v) {
                          v -= x2 = h4;
                          do {
                            S3[i2++] = p5[E++];
                          } while (--x2);
                          E = i2 - _2, T2 = S3;
                        }
                      }
                    } else if (E += h4 - x2, x2 < v) {
                      v -= x2;
                      do {
                        S3[i2++] = p5[E++];
                      } while (--x2);
                      E = i2 - _2, T2 = S3;
                    }
                    for (; v > 2; ) S3[i2++] = T2[E++], S3[i2++] = T2[E++], S3[i2++] = T2[E++], v -= 3;
                    v && (S3[i2++] = T2[E++], v > 1 && (S3[i2++] = T2[E++]));
                  } else {
                    E = i2 - _2;
                    do {
                      S3[i2++] = S3[E++], S3[i2++] = S3[E++], S3[i2++] = S3[E++], v -= 3;
                    } while (v > 2);
                    v && (S3[i2++] = S3[E++], v > 1 && (S3[i2++] = S3[E++]));
                  }
                  break;
                }
              }
              break;
            }
          } while (n2 < s5 && i2 < a2);
          n2 -= v = f3 >> 3, d &= (1 << (f3 -= v << 3)) - 1, e4.next_in = n2, e4.next_out = i2, e4.avail_in = n2 < s5 ? s5 - n2 + 5 : 5 - (n2 - s5), e4.avail_out = i2 < a2 ? a2 - i2 + 257 : 257 - (i2 - a2), r3.hold = d, r3.bits = f3;
        };
      }, 7948: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(4236), s5 = r3(6069), i2 = r3(2869), o = r3(4264), a2 = r3(9241), c = -2, u3 = 12, l = 30;
        function h4(e4) {
          return (e4 >>> 24 & 255) + (e4 >>> 8 & 65280) + ((65280 & e4) << 8) + ((255 & e4) << 24);
        }
        function p5() {
          this.mode = 0, this.last = false, this.wrap = 0, this.havedict = false, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new n2.Buf16(320), this.work = new n2.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0;
        }
        function d(e4) {
          var t4;
          return e4 && e4.state ? (t4 = e4.state, e4.total_in = e4.total_out = t4.total = 0, e4.msg = "", t4.wrap && (e4.adler = 1 & t4.wrap), t4.mode = 1, t4.last = 0, t4.havedict = 0, t4.dmax = 32768, t4.head = null, t4.hold = 0, t4.bits = 0, t4.lencode = t4.lendyn = new n2.Buf32(852), t4.distcode = t4.distdyn = new n2.Buf32(592), t4.sane = 1, t4.back = -1, 0) : c;
        }
        function f3(e4) {
          var t4;
          return e4 && e4.state ? ((t4 = e4.state).wsize = 0, t4.whave = 0, t4.wnext = 0, d(e4)) : c;
        }
        function m2(e4, t4) {
          var r4, n3;
          return e4 && e4.state ? (n3 = e4.state, t4 < 0 ? (r4 = 0, t4 = -t4) : (r4 = 1 + (t4 >> 4), t4 < 48 && (t4 &= 15)), t4 && (t4 < 8 || t4 > 15) ? c : (null !== n3.window && n3.wbits !== t4 && (n3.window = null), n3.wrap = r4, n3.wbits = t4, f3(e4))) : c;
        }
        function w(e4, t4) {
          var r4, n3;
          return e4 ? (n3 = new p5(), e4.state = n3, n3.window = null, 0 !== (r4 = m2(e4, t4)) && (e4.state = null), r4) : c;
        }
        var g, y, b = true;
        function x2(e4) {
          if (b) {
            var t4;
            for (g = new n2.Buf32(512), y = new n2.Buf32(32), t4 = 0; t4 < 144; ) e4.lens[t4++] = 8;
            for (; t4 < 256; ) e4.lens[t4++] = 9;
            for (; t4 < 280; ) e4.lens[t4++] = 7;
            for (; t4 < 288; ) e4.lens[t4++] = 8;
            for (a2(1, e4.lens, 0, 288, g, 0, e4.work, { bits: 9 }), t4 = 0; t4 < 32; ) e4.lens[t4++] = 5;
            a2(2, e4.lens, 0, 32, y, 0, e4.work, { bits: 5 }), b = false;
          }
          e4.lencode = g, e4.lenbits = 9, e4.distcode = y, e4.distbits = 5;
        }
        function v(e4, t4, r4, s6) {
          var i3, o2 = e4.state;
          return null === o2.window && (o2.wsize = 1 << o2.wbits, o2.wnext = 0, o2.whave = 0, o2.window = new n2.Buf8(o2.wsize)), s6 >= o2.wsize ? (n2.arraySet(o2.window, t4, r4 - o2.wsize, o2.wsize, 0), o2.wnext = 0, o2.whave = o2.wsize) : ((i3 = o2.wsize - o2.wnext) > s6 && (i3 = s6), n2.arraySet(o2.window, t4, r4 - s6, i3, o2.wnext), (s6 -= i3) ? (n2.arraySet(o2.window, t4, r4 - s6, s6, 0), o2.wnext = s6, o2.whave = o2.wsize) : (o2.wnext += i3, o2.wnext === o2.wsize && (o2.wnext = 0), o2.whave < o2.wsize && (o2.whave += i3))), 0;
        }
        t3.inflateReset = f3, t3.inflateReset2 = m2, t3.inflateResetKeep = d, t3.inflateInit = function(e4) {
          return w(e4, 15);
        }, t3.inflateInit2 = w, t3.inflate = function(e4, t4) {
          var r4, p6, d2, f4, m3, w2, g2, y2, b2, _2, E, T2, A2, S3, I, R, N, C, O, k, L, D2, P, F2, B = 0, M = new n2.Buf8(4), U = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
          if (!e4 || !e4.state || !e4.output || !e4.input && 0 !== e4.avail_in) return c;
          (r4 = e4.state).mode === u3 && (r4.mode = 13), m3 = e4.next_out, d2 = e4.output, g2 = e4.avail_out, f4 = e4.next_in, p6 = e4.input, w2 = e4.avail_in, y2 = r4.hold, b2 = r4.bits, _2 = w2, E = g2, D2 = 0;
          e: for (; ; ) switch (r4.mode) {
            case 1:
              if (0 === r4.wrap) {
                r4.mode = 13;
                break;
              }
              for (; b2 < 16; ) {
                if (0 === w2) break e;
                w2--, y2 += p6[f4++] << b2, b2 += 8;
              }
              if (2 & r4.wrap && 35615 === y2) {
                r4.check = 0, M[0] = 255 & y2, M[1] = y2 >>> 8 & 255, r4.check = i2(r4.check, M, 2, 0), y2 = 0, b2 = 0, r4.mode = 2;
                break;
              }
              if (r4.flags = 0, r4.head && (r4.head.done = false), !(1 & r4.wrap) || (((255 & y2) << 8) + (y2 >> 8)) % 31) {
                e4.msg = "incorrect header check", r4.mode = l;
                break;
              }
              if (8 != (15 & y2)) {
                e4.msg = "unknown compression method", r4.mode = l;
                break;
              }
              if (b2 -= 4, L = 8 + (15 & (y2 >>>= 4)), 0 === r4.wbits) r4.wbits = L;
              else if (L > r4.wbits) {
                e4.msg = "invalid window size", r4.mode = l;
                break;
              }
              r4.dmax = 1 << L, e4.adler = r4.check = 1, r4.mode = 512 & y2 ? 10 : u3, y2 = 0, b2 = 0;
              break;
            case 2:
              for (; b2 < 16; ) {
                if (0 === w2) break e;
                w2--, y2 += p6[f4++] << b2, b2 += 8;
              }
              if (r4.flags = y2, 8 != (255 & r4.flags)) {
                e4.msg = "unknown compression method", r4.mode = l;
                break;
              }
              if (57344 & r4.flags) {
                e4.msg = "unknown header flags set", r4.mode = l;
                break;
              }
              r4.head && (r4.head.text = y2 >> 8 & 1), 512 & r4.flags && (M[0] = 255 & y2, M[1] = y2 >>> 8 & 255, r4.check = i2(r4.check, M, 2, 0)), y2 = 0, b2 = 0, r4.mode = 3;
            case 3:
              for (; b2 < 32; ) {
                if (0 === w2) break e;
                w2--, y2 += p6[f4++] << b2, b2 += 8;
              }
              r4.head && (r4.head.time = y2), 512 & r4.flags && (M[0] = 255 & y2, M[1] = y2 >>> 8 & 255, M[2] = y2 >>> 16 & 255, M[3] = y2 >>> 24 & 255, r4.check = i2(r4.check, M, 4, 0)), y2 = 0, b2 = 0, r4.mode = 4;
            case 4:
              for (; b2 < 16; ) {
                if (0 === w2) break e;
                w2--, y2 += p6[f4++] << b2, b2 += 8;
              }
              r4.head && (r4.head.xflags = 255 & y2, r4.head.os = y2 >> 8), 512 & r4.flags && (M[0] = 255 & y2, M[1] = y2 >>> 8 & 255, r4.check = i2(r4.check, M, 2, 0)), y2 = 0, b2 = 0, r4.mode = 5;
            case 5:
              if (1024 & r4.flags) {
                for (; b2 < 16; ) {
                  if (0 === w2) break e;
                  w2--, y2 += p6[f4++] << b2, b2 += 8;
                }
                r4.length = y2, r4.head && (r4.head.extra_len = y2), 512 & r4.flags && (M[0] = 255 & y2, M[1] = y2 >>> 8 & 255, r4.check = i2(r4.check, M, 2, 0)), y2 = 0, b2 = 0;
              } else r4.head && (r4.head.extra = null);
              r4.mode = 6;
            case 6:
              if (1024 & r4.flags && ((T2 = r4.length) > w2 && (T2 = w2), T2 && (r4.head && (L = r4.head.extra_len - r4.length, r4.head.extra || (r4.head.extra = new Array(r4.head.extra_len)), n2.arraySet(r4.head.extra, p6, f4, T2, L)), 512 & r4.flags && (r4.check = i2(r4.check, p6, T2, f4)), w2 -= T2, f4 += T2, r4.length -= T2), r4.length)) break e;
              r4.length = 0, r4.mode = 7;
            case 7:
              if (2048 & r4.flags) {
                if (0 === w2) break e;
                T2 = 0;
                do {
                  L = p6[f4 + T2++], r4.head && L && r4.length < 65536 && (r4.head.name += String.fromCharCode(L));
                } while (L && T2 < w2);
                if (512 & r4.flags && (r4.check = i2(r4.check, p6, T2, f4)), w2 -= T2, f4 += T2, L) break e;
              } else r4.head && (r4.head.name = null);
              r4.length = 0, r4.mode = 8;
            case 8:
              if (4096 & r4.flags) {
                if (0 === w2) break e;
                T2 = 0;
                do {
                  L = p6[f4 + T2++], r4.head && L && r4.length < 65536 && (r4.head.comment += String.fromCharCode(L));
                } while (L && T2 < w2);
                if (512 & r4.flags && (r4.check = i2(r4.check, p6, T2, f4)), w2 -= T2, f4 += T2, L) break e;
              } else r4.head && (r4.head.comment = null);
              r4.mode = 9;
            case 9:
              if (512 & r4.flags) {
                for (; b2 < 16; ) {
                  if (0 === w2) break e;
                  w2--, y2 += p6[f4++] << b2, b2 += 8;
                }
                if (y2 !== (65535 & r4.check)) {
                  e4.msg = "header crc mismatch", r4.mode = l;
                  break;
                }
                y2 = 0, b2 = 0;
              }
              r4.head && (r4.head.hcrc = r4.flags >> 9 & 1, r4.head.done = true), e4.adler = r4.check = 0, r4.mode = u3;
              break;
            case 10:
              for (; b2 < 32; ) {
                if (0 === w2) break e;
                w2--, y2 += p6[f4++] << b2, b2 += 8;
              }
              e4.adler = r4.check = h4(y2), y2 = 0, b2 = 0, r4.mode = 11;
            case 11:
              if (0 === r4.havedict) return e4.next_out = m3, e4.avail_out = g2, e4.next_in = f4, e4.avail_in = w2, r4.hold = y2, r4.bits = b2, 2;
              e4.adler = r4.check = 1, r4.mode = u3;
            case u3:
              if (5 === t4 || 6 === t4) break e;
            case 13:
              if (r4.last) {
                y2 >>>= 7 & b2, b2 -= 7 & b2, r4.mode = 27;
                break;
              }
              for (; b2 < 3; ) {
                if (0 === w2) break e;
                w2--, y2 += p6[f4++] << b2, b2 += 8;
              }
              switch (r4.last = 1 & y2, b2 -= 1, 3 & (y2 >>>= 1)) {
                case 0:
                  r4.mode = 14;
                  break;
                case 1:
                  if (x2(r4), r4.mode = 20, 6 === t4) {
                    y2 >>>= 2, b2 -= 2;
                    break e;
                  }
                  break;
                case 2:
                  r4.mode = 17;
                  break;
                case 3:
                  e4.msg = "invalid block type", r4.mode = l;
              }
              y2 >>>= 2, b2 -= 2;
              break;
            case 14:
              for (y2 >>>= 7 & b2, b2 -= 7 & b2; b2 < 32; ) {
                if (0 === w2) break e;
                w2--, y2 += p6[f4++] << b2, b2 += 8;
              }
              if ((65535 & y2) != (y2 >>> 16 ^ 65535)) {
                e4.msg = "invalid stored block lengths", r4.mode = l;
                break;
              }
              if (r4.length = 65535 & y2, y2 = 0, b2 = 0, r4.mode = 15, 6 === t4) break e;
            case 15:
              r4.mode = 16;
            case 16:
              if (T2 = r4.length) {
                if (T2 > w2 && (T2 = w2), T2 > g2 && (T2 = g2), 0 === T2) break e;
                n2.arraySet(d2, p6, f4, T2, m3), w2 -= T2, f4 += T2, g2 -= T2, m3 += T2, r4.length -= T2;
                break;
              }
              r4.mode = u3;
              break;
            case 17:
              for (; b2 < 14; ) {
                if (0 === w2) break e;
                w2--, y2 += p6[f4++] << b2, b2 += 8;
              }
              if (r4.nlen = 257 + (31 & y2), y2 >>>= 5, b2 -= 5, r4.ndist = 1 + (31 & y2), y2 >>>= 5, b2 -= 5, r4.ncode = 4 + (15 & y2), y2 >>>= 4, b2 -= 4, r4.nlen > 286 || r4.ndist > 30) {
                e4.msg = "too many length or distance symbols", r4.mode = l;
                break;
              }
              r4.have = 0, r4.mode = 18;
            case 18:
              for (; r4.have < r4.ncode; ) {
                for (; b2 < 3; ) {
                  if (0 === w2) break e;
                  w2--, y2 += p6[f4++] << b2, b2 += 8;
                }
                r4.lens[U[r4.have++]] = 7 & y2, y2 >>>= 3, b2 -= 3;
              }
              for (; r4.have < 19; ) r4.lens[U[r4.have++]] = 0;
              if (r4.lencode = r4.lendyn, r4.lenbits = 7, P = { bits: r4.lenbits }, D2 = a2(0, r4.lens, 0, 19, r4.lencode, 0, r4.work, P), r4.lenbits = P.bits, D2) {
                e4.msg = "invalid code lengths set", r4.mode = l;
                break;
              }
              r4.have = 0, r4.mode = 19;
            case 19:
              for (; r4.have < r4.nlen + r4.ndist; ) {
                for (; R = (B = r4.lencode[y2 & (1 << r4.lenbits) - 1]) >>> 16 & 255, N = 65535 & B, !((I = B >>> 24) <= b2); ) {
                  if (0 === w2) break e;
                  w2--, y2 += p6[f4++] << b2, b2 += 8;
                }
                if (N < 16) y2 >>>= I, b2 -= I, r4.lens[r4.have++] = N;
                else {
                  if (16 === N) {
                    for (F2 = I + 2; b2 < F2; ) {
                      if (0 === w2) break e;
                      w2--, y2 += p6[f4++] << b2, b2 += 8;
                    }
                    if (y2 >>>= I, b2 -= I, 0 === r4.have) {
                      e4.msg = "invalid bit length repeat", r4.mode = l;
                      break;
                    }
                    L = r4.lens[r4.have - 1], T2 = 3 + (3 & y2), y2 >>>= 2, b2 -= 2;
                  } else if (17 === N) {
                    for (F2 = I + 3; b2 < F2; ) {
                      if (0 === w2) break e;
                      w2--, y2 += p6[f4++] << b2, b2 += 8;
                    }
                    b2 -= I, L = 0, T2 = 3 + (7 & (y2 >>>= I)), y2 >>>= 3, b2 -= 3;
                  } else {
                    for (F2 = I + 7; b2 < F2; ) {
                      if (0 === w2) break e;
                      w2--, y2 += p6[f4++] << b2, b2 += 8;
                    }
                    b2 -= I, L = 0, T2 = 11 + (127 & (y2 >>>= I)), y2 >>>= 7, b2 -= 7;
                  }
                  if (r4.have + T2 > r4.nlen + r4.ndist) {
                    e4.msg = "invalid bit length repeat", r4.mode = l;
                    break;
                  }
                  for (; T2--; ) r4.lens[r4.have++] = L;
                }
              }
              if (r4.mode === l) break;
              if (0 === r4.lens[256]) {
                e4.msg = "invalid code -- missing end-of-block", r4.mode = l;
                break;
              }
              if (r4.lenbits = 9, P = { bits: r4.lenbits }, D2 = a2(1, r4.lens, 0, r4.nlen, r4.lencode, 0, r4.work, P), r4.lenbits = P.bits, D2) {
                e4.msg = "invalid literal/lengths set", r4.mode = l;
                break;
              }
              if (r4.distbits = 6, r4.distcode = r4.distdyn, P = { bits: r4.distbits }, D2 = a2(2, r4.lens, r4.nlen, r4.ndist, r4.distcode, 0, r4.work, P), r4.distbits = P.bits, D2) {
                e4.msg = "invalid distances set", r4.mode = l;
                break;
              }
              if (r4.mode = 20, 6 === t4) break e;
            case 20:
              r4.mode = 21;
            case 21:
              if (w2 >= 6 && g2 >= 258) {
                e4.next_out = m3, e4.avail_out = g2, e4.next_in = f4, e4.avail_in = w2, r4.hold = y2, r4.bits = b2, o(e4, E), m3 = e4.next_out, d2 = e4.output, g2 = e4.avail_out, f4 = e4.next_in, p6 = e4.input, w2 = e4.avail_in, y2 = r4.hold, b2 = r4.bits, r4.mode === u3 && (r4.back = -1);
                break;
              }
              for (r4.back = 0; R = (B = r4.lencode[y2 & (1 << r4.lenbits) - 1]) >>> 16 & 255, N = 65535 & B, !((I = B >>> 24) <= b2); ) {
                if (0 === w2) break e;
                w2--, y2 += p6[f4++] << b2, b2 += 8;
              }
              if (R && 0 == (240 & R)) {
                for (C = I, O = R, k = N; R = (B = r4.lencode[k + ((y2 & (1 << C + O) - 1) >> C)]) >>> 16 & 255, N = 65535 & B, !(C + (I = B >>> 24) <= b2); ) {
                  if (0 === w2) break e;
                  w2--, y2 += p6[f4++] << b2, b2 += 8;
                }
                y2 >>>= C, b2 -= C, r4.back += C;
              }
              if (y2 >>>= I, b2 -= I, r4.back += I, r4.length = N, 0 === R) {
                r4.mode = 26;
                break;
              }
              if (32 & R) {
                r4.back = -1, r4.mode = u3;
                break;
              }
              if (64 & R) {
                e4.msg = "invalid literal/length code", r4.mode = l;
                break;
              }
              r4.extra = 15 & R, r4.mode = 22;
            case 22:
              if (r4.extra) {
                for (F2 = r4.extra; b2 < F2; ) {
                  if (0 === w2) break e;
                  w2--, y2 += p6[f4++] << b2, b2 += 8;
                }
                r4.length += y2 & (1 << r4.extra) - 1, y2 >>>= r4.extra, b2 -= r4.extra, r4.back += r4.extra;
              }
              r4.was = r4.length, r4.mode = 23;
            case 23:
              for (; R = (B = r4.distcode[y2 & (1 << r4.distbits) - 1]) >>> 16 & 255, N = 65535 & B, !((I = B >>> 24) <= b2); ) {
                if (0 === w2) break e;
                w2--, y2 += p6[f4++] << b2, b2 += 8;
              }
              if (0 == (240 & R)) {
                for (C = I, O = R, k = N; R = (B = r4.distcode[k + ((y2 & (1 << C + O) - 1) >> C)]) >>> 16 & 255, N = 65535 & B, !(C + (I = B >>> 24) <= b2); ) {
                  if (0 === w2) break e;
                  w2--, y2 += p6[f4++] << b2, b2 += 8;
                }
                y2 >>>= C, b2 -= C, r4.back += C;
              }
              if (y2 >>>= I, b2 -= I, r4.back += I, 64 & R) {
                e4.msg = "invalid distance code", r4.mode = l;
                break;
              }
              r4.offset = N, r4.extra = 15 & R, r4.mode = 24;
            case 24:
              if (r4.extra) {
                for (F2 = r4.extra; b2 < F2; ) {
                  if (0 === w2) break e;
                  w2--, y2 += p6[f4++] << b2, b2 += 8;
                }
                r4.offset += y2 & (1 << r4.extra) - 1, y2 >>>= r4.extra, b2 -= r4.extra, r4.back += r4.extra;
              }
              if (r4.offset > r4.dmax) {
                e4.msg = "invalid distance too far back", r4.mode = l;
                break;
              }
              r4.mode = 25;
            case 25:
              if (0 === g2) break e;
              if (T2 = E - g2, r4.offset > T2) {
                if ((T2 = r4.offset - T2) > r4.whave && r4.sane) {
                  e4.msg = "invalid distance too far back", r4.mode = l;
                  break;
                }
                T2 > r4.wnext ? (T2 -= r4.wnext, A2 = r4.wsize - T2) : A2 = r4.wnext - T2, T2 > r4.length && (T2 = r4.length), S3 = r4.window;
              } else S3 = d2, A2 = m3 - r4.offset, T2 = r4.length;
              T2 > g2 && (T2 = g2), g2 -= T2, r4.length -= T2;
              do {
                d2[m3++] = S3[A2++];
              } while (--T2);
              0 === r4.length && (r4.mode = 21);
              break;
            case 26:
              if (0 === g2) break e;
              d2[m3++] = r4.length, g2--, r4.mode = 21;
              break;
            case 27:
              if (r4.wrap) {
                for (; b2 < 32; ) {
                  if (0 === w2) break e;
                  w2--, y2 |= p6[f4++] << b2, b2 += 8;
                }
                if (E -= g2, e4.total_out += E, r4.total += E, E && (e4.adler = r4.check = r4.flags ? i2(r4.check, d2, E, m3 - E) : s5(r4.check, d2, E, m3 - E)), E = g2, (r4.flags ? y2 : h4(y2)) !== r4.check) {
                  e4.msg = "incorrect data check", r4.mode = l;
                  break;
                }
                y2 = 0, b2 = 0;
              }
              r4.mode = 28;
            case 28:
              if (r4.wrap && r4.flags) {
                for (; b2 < 32; ) {
                  if (0 === w2) break e;
                  w2--, y2 += p6[f4++] << b2, b2 += 8;
                }
                if (y2 !== (4294967295 & r4.total)) {
                  e4.msg = "incorrect length check", r4.mode = l;
                  break;
                }
                y2 = 0, b2 = 0;
              }
              r4.mode = 29;
            case 29:
              D2 = 1;
              break e;
            case l:
              D2 = -3;
              break e;
            case 31:
              return -4;
            default:
              return c;
          }
          return e4.next_out = m3, e4.avail_out = g2, e4.next_in = f4, e4.avail_in = w2, r4.hold = y2, r4.bits = b2, (r4.wsize || E !== e4.avail_out && r4.mode < l && (r4.mode < 27 || 4 !== t4)) && v(e4, e4.output, e4.next_out, E - e4.avail_out) ? (r4.mode = 31, -4) : (_2 -= e4.avail_in, E -= e4.avail_out, e4.total_in += _2, e4.total_out += E, r4.total += E, r4.wrap && E && (e4.adler = r4.check = r4.flags ? i2(r4.check, d2, E, e4.next_out - E) : s5(r4.check, d2, E, e4.next_out - E)), e4.data_type = r4.bits + (r4.last ? 64 : 0) + (r4.mode === u3 ? 128 : 0) + (20 === r4.mode || 15 === r4.mode ? 256 : 0), (0 === _2 && 0 === E || 4 === t4) && 0 === D2 && (D2 = -5), D2);
        }, t3.inflateEnd = function(e4) {
          if (!e4 || !e4.state) return c;
          var t4 = e4.state;
          return t4.window && (t4.window = null), e4.state = null, 0;
        }, t3.inflateGetHeader = function(e4, t4) {
          var r4;
          return e4 && e4.state ? 0 == (2 & (r4 = e4.state).wrap) ? c : (r4.head = t4, t4.done = false, 0) : c;
        }, t3.inflateSetDictionary = function(e4, t4) {
          var r4, n3 = t4.length;
          return e4 && e4.state ? 0 !== (r4 = e4.state).wrap && 11 !== r4.mode ? c : 11 === r4.mode && s5(1, t4, n3, 0) !== r4.check ? -3 : v(e4, t4, n3, n3) ? (r4.mode = 31, -4) : (r4.havedict = 1, 0) : c;
        }, t3.inflateInfo = "pako inflate (from Nodeca project)";
      }, 9241: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(4236), s5 = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0], i2 = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78], o = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0], a2 = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64];
        e3.exports = function(e4, t4, r4, c, u3, l, h4, p5) {
          var d, f3, m2, w, g, y, b, x2, v, _2 = p5.bits, E = 0, T2 = 0, A2 = 0, S3 = 0, I = 0, R = 0, N = 0, C = 0, O = 0, k = 0, L = null, D2 = 0, P = new n2.Buf16(16), F2 = new n2.Buf16(16), B = null, M = 0;
          for (E = 0; E <= 15; E++) P[E] = 0;
          for (T2 = 0; T2 < c; T2++) P[t4[r4 + T2]]++;
          for (I = _2, S3 = 15; S3 >= 1 && 0 === P[S3]; S3--) ;
          if (I > S3 && (I = S3), 0 === S3) return u3[l++] = 20971520, u3[l++] = 20971520, p5.bits = 1, 0;
          for (A2 = 1; A2 < S3 && 0 === P[A2]; A2++) ;
          for (I < A2 && (I = A2), C = 1, E = 1; E <= 15; E++) if (C <<= 1, (C -= P[E]) < 0) return -1;
          if (C > 0 && (0 === e4 || 1 !== S3)) return -1;
          for (F2[1] = 0, E = 1; E < 15; E++) F2[E + 1] = F2[E] + P[E];
          for (T2 = 0; T2 < c; T2++) 0 !== t4[r4 + T2] && (h4[F2[t4[r4 + T2]]++] = T2);
          if (0 === e4 ? (L = B = h4, y = 19) : 1 === e4 ? (L = s5, D2 -= 257, B = i2, M -= 257, y = 256) : (L = o, B = a2, y = -1), k = 0, T2 = 0, E = A2, g = l, R = I, N = 0, m2 = -1, w = (O = 1 << I) - 1, 1 === e4 && O > 852 || 2 === e4 && O > 592) return 1;
          for (; ; ) {
            b = E - N, h4[T2] < y ? (x2 = 0, v = h4[T2]) : h4[T2] > y ? (x2 = B[M + h4[T2]], v = L[D2 + h4[T2]]) : (x2 = 96, v = 0), d = 1 << E - N, A2 = f3 = 1 << R;
            do {
              u3[g + (k >> N) + (f3 -= d)] = b << 24 | x2 << 16 | v | 0;
            } while (0 !== f3);
            for (d = 1 << E - 1; k & d; ) d >>= 1;
            if (0 !== d ? (k &= d - 1, k += d) : k = 0, T2++, 0 == --P[E]) {
              if (E === S3) break;
              E = t4[r4 + h4[T2]];
            }
            if (E > I && (k & w) !== m2) {
              for (0 === N && (N = I), g += A2, C = 1 << (R = E - N); R + N < S3 && !((C -= P[R + N]) <= 0); ) R++, C <<= 1;
              if (O += 1 << R, 1 === e4 && O > 852 || 2 === e4 && O > 592) return 1;
              u3[m2 = k & w] = I << 24 | R << 16 | g - l | 0;
            }
          }
          return 0 !== k && (u3[g + k] = E - N << 24 | 64 << 16 | 0), p5.bits = I, 0;
        };
      }, 8898: (e3) => {
        "use strict";
        e3.exports = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" };
      }, 342: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(4236);
        function s5(e4) {
          for (var t4 = e4.length; --t4 >= 0; ) e4[t4] = 0;
        }
        var i2 = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], o = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], a2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], c = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], u3 = new Array(576);
        s5(u3);
        var l = new Array(60);
        s5(l);
        var h4 = new Array(512);
        s5(h4);
        var p5 = new Array(256);
        s5(p5);
        var d = new Array(29);
        s5(d);
        var f3, m2, w, g = new Array(30);
        function y(e4, t4, r4, n3, s6) {
          this.static_tree = e4, this.extra_bits = t4, this.extra_base = r4, this.elems = n3, this.max_length = s6, this.has_stree = e4 && e4.length;
        }
        function b(e4, t4) {
          this.dyn_tree = e4, this.max_code = 0, this.stat_desc = t4;
        }
        function x2(e4) {
          return e4 < 256 ? h4[e4] : h4[256 + (e4 >>> 7)];
        }
        function v(e4, t4) {
          e4.pending_buf[e4.pending++] = 255 & t4, e4.pending_buf[e4.pending++] = t4 >>> 8 & 255;
        }
        function _2(e4, t4, r4) {
          e4.bi_valid > 16 - r4 ? (e4.bi_buf |= t4 << e4.bi_valid & 65535, v(e4, e4.bi_buf), e4.bi_buf = t4 >> 16 - e4.bi_valid, e4.bi_valid += r4 - 16) : (e4.bi_buf |= t4 << e4.bi_valid & 65535, e4.bi_valid += r4);
        }
        function E(e4, t4, r4) {
          _2(e4, r4[2 * t4], r4[2 * t4 + 1]);
        }
        function T2(e4, t4) {
          var r4 = 0;
          do {
            r4 |= 1 & e4, e4 >>>= 1, r4 <<= 1;
          } while (--t4 > 0);
          return r4 >>> 1;
        }
        function A2(e4, t4, r4) {
          var n3, s6, i3 = new Array(16), o2 = 0;
          for (n3 = 1; n3 <= 15; n3++) i3[n3] = o2 = o2 + r4[n3 - 1] << 1;
          for (s6 = 0; s6 <= t4; s6++) {
            var a3 = e4[2 * s6 + 1];
            0 !== a3 && (e4[2 * s6] = T2(i3[a3]++, a3));
          }
        }
        function S3(e4) {
          var t4;
          for (t4 = 0; t4 < 286; t4++) e4.dyn_ltree[2 * t4] = 0;
          for (t4 = 0; t4 < 30; t4++) e4.dyn_dtree[2 * t4] = 0;
          for (t4 = 0; t4 < 19; t4++) e4.bl_tree[2 * t4] = 0;
          e4.dyn_ltree[512] = 1, e4.opt_len = e4.static_len = 0, e4.last_lit = e4.matches = 0;
        }
        function I(e4) {
          e4.bi_valid > 8 ? v(e4, e4.bi_buf) : e4.bi_valid > 0 && (e4.pending_buf[e4.pending++] = e4.bi_buf), e4.bi_buf = 0, e4.bi_valid = 0;
        }
        function R(e4, t4, r4, n3) {
          var s6 = 2 * t4, i3 = 2 * r4;
          return e4[s6] < e4[i3] || e4[s6] === e4[i3] && n3[t4] <= n3[r4];
        }
        function N(e4, t4, r4) {
          for (var n3 = e4.heap[r4], s6 = r4 << 1; s6 <= e4.heap_len && (s6 < e4.heap_len && R(t4, e4.heap[s6 + 1], e4.heap[s6], e4.depth) && s6++, !R(t4, n3, e4.heap[s6], e4.depth)); ) e4.heap[r4] = e4.heap[s6], r4 = s6, s6 <<= 1;
          e4.heap[r4] = n3;
        }
        function C(e4, t4, r4) {
          var n3, s6, a3, c2, u4 = 0;
          if (0 !== e4.last_lit) do {
            n3 = e4.pending_buf[e4.d_buf + 2 * u4] << 8 | e4.pending_buf[e4.d_buf + 2 * u4 + 1], s6 = e4.pending_buf[e4.l_buf + u4], u4++, 0 === n3 ? E(e4, s6, t4) : (E(e4, (a3 = p5[s6]) + 256 + 1, t4), 0 !== (c2 = i2[a3]) && _2(e4, s6 -= d[a3], c2), E(e4, a3 = x2(--n3), r4), 0 !== (c2 = o[a3]) && _2(e4, n3 -= g[a3], c2));
          } while (u4 < e4.last_lit);
          E(e4, 256, t4);
        }
        function O(e4, t4) {
          var r4, n3, s6, i3 = t4.dyn_tree, o2 = t4.stat_desc.static_tree, a3 = t4.stat_desc.has_stree, c2 = t4.stat_desc.elems, u4 = -1;
          for (e4.heap_len = 0, e4.heap_max = 573, r4 = 0; r4 < c2; r4++) 0 !== i3[2 * r4] ? (e4.heap[++e4.heap_len] = u4 = r4, e4.depth[r4] = 0) : i3[2 * r4 + 1] = 0;
          for (; e4.heap_len < 2; ) i3[2 * (s6 = e4.heap[++e4.heap_len] = u4 < 2 ? ++u4 : 0)] = 1, e4.depth[s6] = 0, e4.opt_len--, a3 && (e4.static_len -= o2[2 * s6 + 1]);
          for (t4.max_code = u4, r4 = e4.heap_len >> 1; r4 >= 1; r4--) N(e4, i3, r4);
          s6 = c2;
          do {
            r4 = e4.heap[1], e4.heap[1] = e4.heap[e4.heap_len--], N(e4, i3, 1), n3 = e4.heap[1], e4.heap[--e4.heap_max] = r4, e4.heap[--e4.heap_max] = n3, i3[2 * s6] = i3[2 * r4] + i3[2 * n3], e4.depth[s6] = (e4.depth[r4] >= e4.depth[n3] ? e4.depth[r4] : e4.depth[n3]) + 1, i3[2 * r4 + 1] = i3[2 * n3 + 1] = s6, e4.heap[1] = s6++, N(e4, i3, 1);
          } while (e4.heap_len >= 2);
          e4.heap[--e4.heap_max] = e4.heap[1], (function(e5, t5) {
            var r5, n4, s7, i4, o3, a4, c3 = t5.dyn_tree, u5 = t5.max_code, l2 = t5.stat_desc.static_tree, h5 = t5.stat_desc.has_stree, p6 = t5.stat_desc.extra_bits, d2 = t5.stat_desc.extra_base, f4 = t5.stat_desc.max_length, m3 = 0;
            for (i4 = 0; i4 <= 15; i4++) e5.bl_count[i4] = 0;
            for (c3[2 * e5.heap[e5.heap_max] + 1] = 0, r5 = e5.heap_max + 1; r5 < 573; r5++) (i4 = c3[2 * c3[2 * (n4 = e5.heap[r5]) + 1] + 1] + 1) > f4 && (i4 = f4, m3++), c3[2 * n4 + 1] = i4, n4 > u5 || (e5.bl_count[i4]++, o3 = 0, n4 >= d2 && (o3 = p6[n4 - d2]), a4 = c3[2 * n4], e5.opt_len += a4 * (i4 + o3), h5 && (e5.static_len += a4 * (l2[2 * n4 + 1] + o3)));
            if (0 !== m3) {
              do {
                for (i4 = f4 - 1; 0 === e5.bl_count[i4]; ) i4--;
                e5.bl_count[i4]--, e5.bl_count[i4 + 1] += 2, e5.bl_count[f4]--, m3 -= 2;
              } while (m3 > 0);
              for (i4 = f4; 0 !== i4; i4--) for (n4 = e5.bl_count[i4]; 0 !== n4; ) (s7 = e5.heap[--r5]) > u5 || (c3[2 * s7 + 1] !== i4 && (e5.opt_len += (i4 - c3[2 * s7 + 1]) * c3[2 * s7], c3[2 * s7 + 1] = i4), n4--);
            }
          })(e4, t4), A2(i3, u4, e4.bl_count);
        }
        function k(e4, t4, r4) {
          var n3, s6, i3 = -1, o2 = t4[1], a3 = 0, c2 = 7, u4 = 4;
          for (0 === o2 && (c2 = 138, u4 = 3), t4[2 * (r4 + 1) + 1] = 65535, n3 = 0; n3 <= r4; n3++) s6 = o2, o2 = t4[2 * (n3 + 1) + 1], ++a3 < c2 && s6 === o2 || (a3 < u4 ? e4.bl_tree[2 * s6] += a3 : 0 !== s6 ? (s6 !== i3 && e4.bl_tree[2 * s6]++, e4.bl_tree[32]++) : a3 <= 10 ? e4.bl_tree[34]++ : e4.bl_tree[36]++, a3 = 0, i3 = s6, 0 === o2 ? (c2 = 138, u4 = 3) : s6 === o2 ? (c2 = 6, u4 = 3) : (c2 = 7, u4 = 4));
        }
        function L(e4, t4, r4) {
          var n3, s6, i3 = -1, o2 = t4[1], a3 = 0, c2 = 7, u4 = 4;
          for (0 === o2 && (c2 = 138, u4 = 3), n3 = 0; n3 <= r4; n3++) if (s6 = o2, o2 = t4[2 * (n3 + 1) + 1], !(++a3 < c2 && s6 === o2)) {
            if (a3 < u4) do {
              E(e4, s6, e4.bl_tree);
            } while (0 != --a3);
            else 0 !== s6 ? (s6 !== i3 && (E(e4, s6, e4.bl_tree), a3--), E(e4, 16, e4.bl_tree), _2(e4, a3 - 3, 2)) : a3 <= 10 ? (E(e4, 17, e4.bl_tree), _2(e4, a3 - 3, 3)) : (E(e4, 18, e4.bl_tree), _2(e4, a3 - 11, 7));
            a3 = 0, i3 = s6, 0 === o2 ? (c2 = 138, u4 = 3) : s6 === o2 ? (c2 = 6, u4 = 3) : (c2 = 7, u4 = 4);
          }
        }
        s5(g);
        var D2 = false;
        function P(e4, t4, r4, s6) {
          _2(e4, 0 + (s6 ? 1 : 0), 3), (function(e5, t5, r5, s7) {
            I(e5), v(e5, r5), v(e5, ~r5), n2.arraySet(e5.pending_buf, e5.window, t5, r5, e5.pending), e5.pending += r5;
          })(e4, t4, r4);
        }
        t3._tr_init = function(e4) {
          D2 || ((function() {
            var e5, t4, r4, n3, s6, c2 = new Array(16);
            for (r4 = 0, n3 = 0; n3 < 28; n3++) for (d[n3] = r4, e5 = 0; e5 < 1 << i2[n3]; e5++) p5[r4++] = n3;
            for (p5[r4 - 1] = n3, s6 = 0, n3 = 0; n3 < 16; n3++) for (g[n3] = s6, e5 = 0; e5 < 1 << o[n3]; e5++) h4[s6++] = n3;
            for (s6 >>= 7; n3 < 30; n3++) for (g[n3] = s6 << 7, e5 = 0; e5 < 1 << o[n3] - 7; e5++) h4[256 + s6++] = n3;
            for (t4 = 0; t4 <= 15; t4++) c2[t4] = 0;
            for (e5 = 0; e5 <= 143; ) u3[2 * e5 + 1] = 8, e5++, c2[8]++;
            for (; e5 <= 255; ) u3[2 * e5 + 1] = 9, e5++, c2[9]++;
            for (; e5 <= 279; ) u3[2 * e5 + 1] = 7, e5++, c2[7]++;
            for (; e5 <= 287; ) u3[2 * e5 + 1] = 8, e5++, c2[8]++;
            for (A2(u3, 287, c2), e5 = 0; e5 < 30; e5++) l[2 * e5 + 1] = 5, l[2 * e5] = T2(e5, 5);
            f3 = new y(u3, i2, 257, 286, 15), m2 = new y(l, o, 0, 30, 15), w = new y(new Array(0), a2, 0, 19, 7);
          })(), D2 = true), e4.l_desc = new b(e4.dyn_ltree, f3), e4.d_desc = new b(e4.dyn_dtree, m2), e4.bl_desc = new b(e4.bl_tree, w), e4.bi_buf = 0, e4.bi_valid = 0, S3(e4);
        }, t3._tr_stored_block = P, t3._tr_flush_block = function(e4, t4, r4, n3) {
          var s6, i3, o2 = 0;
          e4.level > 0 ? (2 === e4.strm.data_type && (e4.strm.data_type = (function(e5) {
            var t5, r5 = 4093624447;
            for (t5 = 0; t5 <= 31; t5++, r5 >>>= 1) if (1 & r5 && 0 !== e5.dyn_ltree[2 * t5]) return 0;
            if (0 !== e5.dyn_ltree[18] || 0 !== e5.dyn_ltree[20] || 0 !== e5.dyn_ltree[26]) return 1;
            for (t5 = 32; t5 < 256; t5++) if (0 !== e5.dyn_ltree[2 * t5]) return 1;
            return 0;
          })(e4)), O(e4, e4.l_desc), O(e4, e4.d_desc), o2 = (function(e5) {
            var t5;
            for (k(e5, e5.dyn_ltree, e5.l_desc.max_code), k(e5, e5.dyn_dtree, e5.d_desc.max_code), O(e5, e5.bl_desc), t5 = 18; t5 >= 3 && 0 === e5.bl_tree[2 * c[t5] + 1]; t5--) ;
            return e5.opt_len += 3 * (t5 + 1) + 5 + 5 + 4, t5;
          })(e4), s6 = e4.opt_len + 3 + 7 >>> 3, (i3 = e4.static_len + 3 + 7 >>> 3) <= s6 && (s6 = i3)) : s6 = i3 = r4 + 5, r4 + 4 <= s6 && -1 !== t4 ? P(e4, t4, r4, n3) : 4 === e4.strategy || i3 === s6 ? (_2(e4, 2 + (n3 ? 1 : 0), 3), C(e4, u3, l)) : (_2(e4, 4 + (n3 ? 1 : 0), 3), (function(e5, t5, r5, n4) {
            var s7;
            for (_2(e5, t5 - 257, 5), _2(e5, r5 - 1, 5), _2(e5, n4 - 4, 4), s7 = 0; s7 < n4; s7++) _2(e5, e5.bl_tree[2 * c[s7] + 1], 3);
            L(e5, e5.dyn_ltree, t5 - 1), L(e5, e5.dyn_dtree, r5 - 1);
          })(e4, e4.l_desc.max_code + 1, e4.d_desc.max_code + 1, o2 + 1), C(e4, e4.dyn_ltree, e4.dyn_dtree)), S3(e4), n3 && I(e4);
        }, t3._tr_tally = function(e4, t4, r4) {
          return e4.pending_buf[e4.d_buf + 2 * e4.last_lit] = t4 >>> 8 & 255, e4.pending_buf[e4.d_buf + 2 * e4.last_lit + 1] = 255 & t4, e4.pending_buf[e4.l_buf + e4.last_lit] = 255 & r4, e4.last_lit++, 0 === t4 ? e4.dyn_ltree[2 * r4]++ : (e4.matches++, t4--, e4.dyn_ltree[2 * (p5[r4] + 256 + 1)]++, e4.dyn_dtree[2 * x2(t4)]++), e4.last_lit === e4.lit_bufsize - 1;
        }, t3._tr_align = function(e4) {
          _2(e4, 2, 3), E(e4, 256, u3), (function(e5) {
            16 === e5.bi_valid ? (v(e5, e5.bi_buf), e5.bi_buf = 0, e5.bi_valid = 0) : e5.bi_valid >= 8 && (e5.pending_buf[e5.pending++] = 255 & e5.bi_buf, e5.bi_buf >>= 8, e5.bi_valid -= 8);
          })(e4);
        };
      }, 2292: (e3) => {
        "use strict";
        e3.exports = function() {
          this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0;
        };
      }, 4155: (e3) => {
        var t3, r3, n2 = e3.exports = {};
        function s5() {
          throw new Error("setTimeout has not been defined");
        }
        function i2() {
          throw new Error("clearTimeout has not been defined");
        }
        function o(e4) {
          if (t3 === setTimeout) return setTimeout(e4, 0);
          if ((t3 === s5 || !t3) && setTimeout) return t3 = setTimeout, setTimeout(e4, 0);
          try {
            return t3(e4, 0);
          } catch (r4) {
            try {
              return t3.call(null, e4, 0);
            } catch (r5) {
              return t3.call(this, e4, 0);
            }
          }
        }
        !(function() {
          try {
            t3 = "function" == typeof setTimeout ? setTimeout : s5;
          } catch (e4) {
            t3 = s5;
          }
          try {
            r3 = "function" == typeof clearTimeout ? clearTimeout : i2;
          } catch (e4) {
            r3 = i2;
          }
        })();
        var a2, c = [], u3 = false, l = -1;
        function h4() {
          u3 && a2 && (u3 = false, a2.length ? c = a2.concat(c) : l = -1, c.length && p5());
        }
        function p5() {
          if (!u3) {
            var e4 = o(h4);
            u3 = true;
            for (var t4 = c.length; t4; ) {
              for (a2 = c, c = []; ++l < t4; ) a2 && a2[l].run();
              l = -1, t4 = c.length;
            }
            a2 = null, u3 = false, (function(e5) {
              if (r3 === clearTimeout) return clearTimeout(e5);
              if ((r3 === i2 || !r3) && clearTimeout) return r3 = clearTimeout, clearTimeout(e5);
              try {
                r3(e5);
              } catch (t5) {
                try {
                  return r3.call(null, e5);
                } catch (t6) {
                  return r3.call(this, e5);
                }
              }
            })(e4);
          }
        }
        function d(e4, t4) {
          this.fun = e4, this.array = t4;
        }
        function f3() {
        }
        n2.nextTick = function(e4) {
          var t4 = new Array(arguments.length - 1);
          if (arguments.length > 1) for (var r4 = 1; r4 < arguments.length; r4++) t4[r4 - 1] = arguments[r4];
          c.push(new d(e4, t4)), 1 !== c.length || u3 || o(p5);
        }, d.prototype.run = function() {
          this.fun.apply(null, this.array);
        }, n2.title = "browser", n2.browser = true, n2.env = {}, n2.argv = [], n2.version = "", n2.versions = {}, n2.on = f3, n2.addListener = f3, n2.once = f3, n2.off = f3, n2.removeListener = f3, n2.removeAllListeners = f3, n2.emit = f3, n2.prependListener = f3, n2.prependOnceListener = f3, n2.listeners = function(e4) {
          return [];
        }, n2.binding = function(e4) {
          throw new Error("process.binding is not supported");
        }, n2.cwd = function() {
          return "/";
        }, n2.chdir = function(e4) {
          throw new Error("process.chdir is not supported");
        }, n2.umask = function() {
          return 0;
        };
      }, 9509: (e3, t3, r3) => {
        var n2 = r3(8764), s5 = n2.Buffer;
        function i2(e4, t4) {
          for (var r4 in e4) t4[r4] = e4[r4];
        }
        function o(e4, t4, r4) {
          return s5(e4, t4, r4);
        }
        s5.from && s5.alloc && s5.allocUnsafe && s5.allocUnsafeSlow ? e3.exports = n2 : (i2(n2, t3), t3.Buffer = o), i2(s5, o), o.from = function(e4, t4, r4) {
          if ("number" == typeof e4) throw new TypeError("Argument must not be a number");
          return s5(e4, t4, r4);
        }, o.alloc = function(e4, t4, r4) {
          if ("number" != typeof e4) throw new TypeError("Argument must be a number");
          var n3 = s5(e4);
          return void 0 !== t4 ? "string" == typeof r4 ? n3.fill(t4, r4) : n3.fill(t4) : n3.fill(0), n3;
        }, o.allocUnsafe = function(e4) {
          if ("number" != typeof e4) throw new TypeError("Argument must be a number");
          return s5(e4);
        }, o.allocUnsafeSlow = function(e4) {
          if ("number" != typeof e4) throw new TypeError("Argument must be a number");
          return n2.SlowBuffer(e4);
        };
      }, 6099: (e3, t3, r3) => {
        !(function(e4) {
          e4.parser = function(e5, t5) {
            return new s5(e5, t5);
          }, e4.SAXParser = s5, e4.SAXStream = o, e4.createStream = function(e5, t5) {
            return new o(e5, t5);
          }, e4.MAX_BUFFER_LENGTH = 65536;
          var t4, n2 = ["comment", "sgmlDecl", "textNode", "tagName", "doctype", "procInstName", "procInstBody", "entity", "attribName", "attribValue", "cdata", "script"];
          function s5(t5, r4) {
            if (!(this instanceof s5)) return new s5(t5, r4);
            var i3 = this;
            !(function(e5) {
              for (var t6 = 0, r5 = n2.length; t6 < r5; t6++) e5[n2[t6]] = "";
            })(i3), i3.q = i3.c = "", i3.bufferCheckPosition = e4.MAX_BUFFER_LENGTH, i3.opt = r4 || {}, i3.opt.lowercase = i3.opt.lowercase || i3.opt.lowercasetags, i3.looseCase = i3.opt.lowercase ? "toLowerCase" : "toUpperCase", i3.tags = [], i3.closed = i3.closedRoot = i3.sawRoot = false, i3.tag = i3.error = null, i3.strict = !!t5, i3.noscript = !(!t5 && !i3.opt.noscript), i3.state = _2.BEGIN, i3.strictEntities = i3.opt.strictEntities, i3.ENTITIES = i3.strictEntities ? Object.create(e4.XML_ENTITIES) : Object.create(e4.ENTITIES), i3.attribList = [], i3.opt.xmlns && (i3.ns = Object.create(u3)), i3.trackPosition = false !== i3.opt.position, i3.trackPosition && (i3.position = i3.line = i3.column = 0), T2(i3, "onready");
          }
          e4.EVENTS = ["text", "processinginstruction", "sgmldeclaration", "doctype", "comment", "opentagstart", "attribute", "opentag", "closetag", "opencdata", "cdata", "closecdata", "error", "end", "ready", "script", "opennamespace", "closenamespace"], Object.create || (Object.create = function(e5) {
            function t5() {
            }
            return t5.prototype = e5, new t5();
          }), Object.keys || (Object.keys = function(e5) {
            var t5 = [];
            for (var r4 in e5) e5.hasOwnProperty(r4) && t5.push(r4);
            return t5;
          }), s5.prototype = { end: function() {
            N(this);
          }, write: function(t5) {
            var r4 = this;
            if (this.error) throw this.error;
            if (r4.closed) return R(r4, "Cannot write after close. Assign an onready handler.");
            if (null === t5) return N(r4);
            "object" == typeof t5 && (t5 = t5.toString());
            for (var s6 = 0, i3 = ""; i3 = M(t5, s6++), r4.c = i3, i3; ) switch (r4.trackPosition && (r4.position++, "\n" === i3 ? (r4.line++, r4.column = 0) : r4.column++), r4.state) {
              case _2.BEGIN:
                if (r4.state = _2.BEGIN_WHITESPACE, "\uFEFF" === i3) continue;
                B(r4, i3);
                continue;
              case _2.BEGIN_WHITESPACE:
                B(r4, i3);
                continue;
              case _2.TEXT:
                if (r4.sawRoot && !r4.closedRoot) {
                  for (var o2 = s6 - 1; i3 && "<" !== i3 && "&" !== i3; ) (i3 = M(t5, s6++)) && r4.trackPosition && (r4.position++, "\n" === i3 ? (r4.line++, r4.column = 0) : r4.column++);
                  r4.textNode += t5.substring(o2, s6 - 1);
                }
                "<" !== i3 || r4.sawRoot && r4.closedRoot && !r4.strict ? (f3(i3) || r4.sawRoot && !r4.closedRoot || C(r4, "Text data outside of root node."), "&" === i3 ? r4.state = _2.TEXT_ENTITY : r4.textNode += i3) : (r4.state = _2.OPEN_WAKA, r4.startTagPosition = r4.position);
                continue;
              case _2.SCRIPT:
                "<" === i3 ? r4.state = _2.SCRIPT_ENDING : r4.script += i3;
                continue;
              case _2.SCRIPT_ENDING:
                "/" === i3 ? r4.state = _2.CLOSE_TAG : (r4.script += "<" + i3, r4.state = _2.SCRIPT);
                continue;
              case _2.OPEN_WAKA:
                if ("!" === i3) r4.state = _2.SGML_DECL, r4.sgmlDecl = "";
                else if (f3(i3)) ;
                else if (g(l, i3)) r4.state = _2.OPEN_TAG, r4.tagName = i3;
                else if ("/" === i3) r4.state = _2.CLOSE_TAG, r4.tagName = "";
                else if ("?" === i3) r4.state = _2.PROC_INST, r4.procInstName = r4.procInstBody = "";
                else {
                  if (C(r4, "Unencoded <"), r4.startTagPosition + 1 < r4.position) {
                    var a3 = r4.position - r4.startTagPosition;
                    i3 = new Array(a3).join(" ") + i3;
                  }
                  r4.textNode += "<" + i3, r4.state = _2.TEXT;
                }
                continue;
              case _2.SGML_DECL:
                "[CDATA[" === (r4.sgmlDecl + i3).toUpperCase() ? (A2(r4, "onopencdata"), r4.state = _2.CDATA, r4.sgmlDecl = "", r4.cdata = "") : r4.sgmlDecl + i3 === "--" ? (r4.state = _2.COMMENT, r4.comment = "", r4.sgmlDecl = "") : "DOCTYPE" === (r4.sgmlDecl + i3).toUpperCase() ? (r4.state = _2.DOCTYPE, (r4.doctype || r4.sawRoot) && C(r4, "Inappropriately located doctype declaration"), r4.doctype = "", r4.sgmlDecl = "") : ">" === i3 ? (A2(r4, "onsgmldeclaration", r4.sgmlDecl), r4.sgmlDecl = "", r4.state = _2.TEXT) : m2(i3) ? (r4.state = _2.SGML_DECL_QUOTED, r4.sgmlDecl += i3) : r4.sgmlDecl += i3;
                continue;
              case _2.SGML_DECL_QUOTED:
                i3 === r4.q && (r4.state = _2.SGML_DECL, r4.q = ""), r4.sgmlDecl += i3;
                continue;
              case _2.DOCTYPE:
                ">" === i3 ? (r4.state = _2.TEXT, A2(r4, "ondoctype", r4.doctype), r4.doctype = true) : (r4.doctype += i3, "[" === i3 ? r4.state = _2.DOCTYPE_DTD : m2(i3) && (r4.state = _2.DOCTYPE_QUOTED, r4.q = i3));
                continue;
              case _2.DOCTYPE_QUOTED:
                r4.doctype += i3, i3 === r4.q && (r4.q = "", r4.state = _2.DOCTYPE);
                continue;
              case _2.DOCTYPE_DTD:
                r4.doctype += i3, "]" === i3 ? r4.state = _2.DOCTYPE : m2(i3) && (r4.state = _2.DOCTYPE_DTD_QUOTED, r4.q = i3);
                continue;
              case _2.DOCTYPE_DTD_QUOTED:
                r4.doctype += i3, i3 === r4.q && (r4.state = _2.DOCTYPE_DTD, r4.q = "");
                continue;
              case _2.COMMENT:
                "-" === i3 ? r4.state = _2.COMMENT_ENDING : r4.comment += i3;
                continue;
              case _2.COMMENT_ENDING:
                "-" === i3 ? (r4.state = _2.COMMENT_ENDED, r4.comment = I(r4.opt, r4.comment), r4.comment && A2(r4, "oncomment", r4.comment), r4.comment = "") : (r4.comment += "-" + i3, r4.state = _2.COMMENT);
                continue;
              case _2.COMMENT_ENDED:
                ">" !== i3 ? (C(r4, "Malformed comment"), r4.comment += "--" + i3, r4.state = _2.COMMENT) : r4.state = _2.TEXT;
                continue;
              case _2.CDATA:
                "]" === i3 ? r4.state = _2.CDATA_ENDING : r4.cdata += i3;
                continue;
              case _2.CDATA_ENDING:
                "]" === i3 ? r4.state = _2.CDATA_ENDING_2 : (r4.cdata += "]" + i3, r4.state = _2.CDATA);
                continue;
              case _2.CDATA_ENDING_2:
                ">" === i3 ? (r4.cdata && A2(r4, "oncdata", r4.cdata), A2(r4, "onclosecdata"), r4.cdata = "", r4.state = _2.TEXT) : "]" === i3 ? r4.cdata += "]" : (r4.cdata += "]]" + i3, r4.state = _2.CDATA);
                continue;
              case _2.PROC_INST:
                "?" === i3 ? r4.state = _2.PROC_INST_ENDING : f3(i3) ? r4.state = _2.PROC_INST_BODY : r4.procInstName += i3;
                continue;
              case _2.PROC_INST_BODY:
                if (!r4.procInstBody && f3(i3)) continue;
                "?" === i3 ? r4.state = _2.PROC_INST_ENDING : r4.procInstBody += i3;
                continue;
              case _2.PROC_INST_ENDING:
                ">" === i3 ? (A2(r4, "onprocessinginstruction", { name: r4.procInstName, body: r4.procInstBody }), r4.procInstName = r4.procInstBody = "", r4.state = _2.TEXT) : (r4.procInstBody += "?" + i3, r4.state = _2.PROC_INST_BODY);
                continue;
              case _2.OPEN_TAG:
                g(h4, i3) ? r4.tagName += i3 : (O(r4), ">" === i3 ? D2(r4) : "/" === i3 ? r4.state = _2.OPEN_TAG_SLASH : (f3(i3) || C(r4, "Invalid character in tag name"), r4.state = _2.ATTRIB));
                continue;
              case _2.OPEN_TAG_SLASH:
                ">" === i3 ? (D2(r4, true), P(r4)) : (C(r4, "Forward-slash in opening tag not followed by >"), r4.state = _2.ATTRIB);
                continue;
              case _2.ATTRIB:
                if (f3(i3)) continue;
                ">" === i3 ? D2(r4) : "/" === i3 ? r4.state = _2.OPEN_TAG_SLASH : g(l, i3) ? (r4.attribName = i3, r4.attribValue = "", r4.state = _2.ATTRIB_NAME) : C(r4, "Invalid attribute name");
                continue;
              case _2.ATTRIB_NAME:
                "=" === i3 ? r4.state = _2.ATTRIB_VALUE : ">" === i3 ? (C(r4, "Attribute without value"), r4.attribValue = r4.attribName, L(r4), D2(r4)) : f3(i3) ? r4.state = _2.ATTRIB_NAME_SAW_WHITE : g(h4, i3) ? r4.attribName += i3 : C(r4, "Invalid attribute name");
                continue;
              case _2.ATTRIB_NAME_SAW_WHITE:
                if ("=" === i3) r4.state = _2.ATTRIB_VALUE;
                else {
                  if (f3(i3)) continue;
                  C(r4, "Attribute without value"), r4.tag.attributes[r4.attribName] = "", r4.attribValue = "", A2(r4, "onattribute", { name: r4.attribName, value: "" }), r4.attribName = "", ">" === i3 ? D2(r4) : g(l, i3) ? (r4.attribName = i3, r4.state = _2.ATTRIB_NAME) : (C(r4, "Invalid attribute name"), r4.state = _2.ATTRIB);
                }
                continue;
              case _2.ATTRIB_VALUE:
                if (f3(i3)) continue;
                m2(i3) ? (r4.q = i3, r4.state = _2.ATTRIB_VALUE_QUOTED) : (C(r4, "Unquoted attribute value"), r4.state = _2.ATTRIB_VALUE_UNQUOTED, r4.attribValue = i3);
                continue;
              case _2.ATTRIB_VALUE_QUOTED:
                if (i3 !== r4.q) {
                  "&" === i3 ? r4.state = _2.ATTRIB_VALUE_ENTITY_Q : r4.attribValue += i3;
                  continue;
                }
                L(r4), r4.q = "", r4.state = _2.ATTRIB_VALUE_CLOSED;
                continue;
              case _2.ATTRIB_VALUE_CLOSED:
                f3(i3) ? r4.state = _2.ATTRIB : ">" === i3 ? D2(r4) : "/" === i3 ? r4.state = _2.OPEN_TAG_SLASH : g(l, i3) ? (C(r4, "No whitespace between attributes"), r4.attribName = i3, r4.attribValue = "", r4.state = _2.ATTRIB_NAME) : C(r4, "Invalid attribute name");
                continue;
              case _2.ATTRIB_VALUE_UNQUOTED:
                if (!w(i3)) {
                  "&" === i3 ? r4.state = _2.ATTRIB_VALUE_ENTITY_U : r4.attribValue += i3;
                  continue;
                }
                L(r4), ">" === i3 ? D2(r4) : r4.state = _2.ATTRIB;
                continue;
              case _2.CLOSE_TAG:
                if (r4.tagName) ">" === i3 ? P(r4) : g(h4, i3) ? r4.tagName += i3 : r4.script ? (r4.script += "</" + r4.tagName, r4.tagName = "", r4.state = _2.SCRIPT) : (f3(i3) || C(r4, "Invalid tagname in closing tag"), r4.state = _2.CLOSE_TAG_SAW_WHITE);
                else {
                  if (f3(i3)) continue;
                  y(l, i3) ? r4.script ? (r4.script += "</" + i3, r4.state = _2.SCRIPT) : C(r4, "Invalid tagname in closing tag.") : r4.tagName = i3;
                }
                continue;
              case _2.CLOSE_TAG_SAW_WHITE:
                if (f3(i3)) continue;
                ">" === i3 ? P(r4) : C(r4, "Invalid characters in closing tag");
                continue;
              case _2.TEXT_ENTITY:
              case _2.ATTRIB_VALUE_ENTITY_Q:
              case _2.ATTRIB_VALUE_ENTITY_U:
                var c2, u4;
                switch (r4.state) {
                  case _2.TEXT_ENTITY:
                    c2 = _2.TEXT, u4 = "textNode";
                    break;
                  case _2.ATTRIB_VALUE_ENTITY_Q:
                    c2 = _2.ATTRIB_VALUE_QUOTED, u4 = "attribValue";
                    break;
                  case _2.ATTRIB_VALUE_ENTITY_U:
                    c2 = _2.ATTRIB_VALUE_UNQUOTED, u4 = "attribValue";
                }
                ";" === i3 ? (r4[u4] += F2(r4), r4.entity = "", r4.state = c2) : g(r4.entity.length ? d : p5, i3) ? r4.entity += i3 : (C(r4, "Invalid character in entity name"), r4[u4] += "&" + r4.entity + i3, r4.entity = "", r4.state = c2);
                continue;
              default:
                throw new Error(r4, "Unknown state: " + r4.state);
            }
            return r4.position >= r4.bufferCheckPosition && (function(t6) {
              for (var r5 = Math.max(e4.MAX_BUFFER_LENGTH, 10), s7 = 0, i4 = 0, o3 = n2.length; i4 < o3; i4++) {
                var a4 = t6[n2[i4]].length;
                if (a4 > r5) switch (n2[i4]) {
                  case "textNode":
                    S3(t6);
                    break;
                  case "cdata":
                    A2(t6, "oncdata", t6.cdata), t6.cdata = "";
                    break;
                  case "script":
                    A2(t6, "onscript", t6.script), t6.script = "";
                    break;
                  default:
                    R(t6, "Max buffer length exceeded: " + n2[i4]);
                }
                s7 = Math.max(s7, a4);
              }
              var c3 = e4.MAX_BUFFER_LENGTH - s7;
              t6.bufferCheckPosition = c3 + t6.position;
            })(r4), r4;
          }, resume: function() {
            return this.error = null, this;
          }, close: function() {
            return this.write(null);
          }, flush: function() {
            var e5;
            S3(e5 = this), "" !== e5.cdata && (A2(e5, "oncdata", e5.cdata), e5.cdata = ""), "" !== e5.script && (A2(e5, "onscript", e5.script), e5.script = "");
          } };
          try {
            t4 = r3(2830).Stream;
          } catch (e5) {
            t4 = function() {
            };
          }
          var i2 = e4.EVENTS.filter((function(e5) {
            return "error" !== e5 && "end" !== e5;
          }));
          function o(e5, r4) {
            if (!(this instanceof o)) return new o(e5, r4);
            t4.apply(this), this._parser = new s5(e5, r4), this.writable = true, this.readable = true;
            var n3 = this;
            this._parser.onend = function() {
              n3.emit("end");
            }, this._parser.onerror = function(e6) {
              n3.emit("error", e6), n3._parser.error = null;
            }, this._decoder = null, i2.forEach((function(e6) {
              Object.defineProperty(n3, "on" + e6, { get: function() {
                return n3._parser["on" + e6];
              }, set: function(t5) {
                if (!t5) return n3.removeAllListeners(e6), n3._parser["on" + e6] = t5, t5;
                n3.on(e6, t5);
              }, enumerable: true, configurable: false });
            }));
          }
          o.prototype = Object.create(t4.prototype, { constructor: { value: o } }), o.prototype.write = function(e5) {
            if ("function" == typeof Buffer && "function" == typeof Buffer.isBuffer && Buffer.isBuffer(e5)) {
              if (!this._decoder) {
                var t5 = r3(2553).s;
                this._decoder = new t5("utf8");
              }
              e5 = this._decoder.write(e5);
            }
            return this._parser.write(e5.toString()), this.emit("data", e5), true;
          }, o.prototype.end = function(e5) {
            return e5 && e5.length && this.write(e5), this._parser.end(), true;
          }, o.prototype.on = function(e5, r4) {
            var n3 = this;
            return n3._parser["on" + e5] || -1 === i2.indexOf(e5) || (n3._parser["on" + e5] = function() {
              var t5 = 1 === arguments.length ? [arguments[0]] : Array.apply(null, arguments);
              t5.splice(0, 0, e5), n3.emit.apply(n3, t5);
            }), t4.prototype.on.call(n3, e5, r4);
          };
          var a2 = "http://www.w3.org/XML/1998/namespace", c = "http://www.w3.org/2000/xmlns/", u3 = { xml: a2, xmlns: c }, l = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/, h4 = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/, p5 = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/, d = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/;
          function f3(e5) {
            return " " === e5 || "\n" === e5 || "\r" === e5 || "	" === e5;
          }
          function m2(e5) {
            return '"' === e5 || "'" === e5;
          }
          function w(e5) {
            return ">" === e5 || f3(e5);
          }
          function g(e5, t5) {
            return e5.test(t5);
          }
          function y(e5, t5) {
            return !g(e5, t5);
          }
          var b, x2, v, _2 = 0;
          for (var E in e4.STATE = { BEGIN: _2++, BEGIN_WHITESPACE: _2++, TEXT: _2++, TEXT_ENTITY: _2++, OPEN_WAKA: _2++, SGML_DECL: _2++, SGML_DECL_QUOTED: _2++, DOCTYPE: _2++, DOCTYPE_QUOTED: _2++, DOCTYPE_DTD: _2++, DOCTYPE_DTD_QUOTED: _2++, COMMENT_STARTING: _2++, COMMENT: _2++, COMMENT_ENDING: _2++, COMMENT_ENDED: _2++, CDATA: _2++, CDATA_ENDING: _2++, CDATA_ENDING_2: _2++, PROC_INST: _2++, PROC_INST_BODY: _2++, PROC_INST_ENDING: _2++, OPEN_TAG: _2++, OPEN_TAG_SLASH: _2++, ATTRIB: _2++, ATTRIB_NAME: _2++, ATTRIB_NAME_SAW_WHITE: _2++, ATTRIB_VALUE: _2++, ATTRIB_VALUE_QUOTED: _2++, ATTRIB_VALUE_CLOSED: _2++, ATTRIB_VALUE_UNQUOTED: _2++, ATTRIB_VALUE_ENTITY_Q: _2++, ATTRIB_VALUE_ENTITY_U: _2++, CLOSE_TAG: _2++, CLOSE_TAG_SAW_WHITE: _2++, SCRIPT: _2++, SCRIPT_ENDING: _2++ }, e4.XML_ENTITIES = { amp: "&", gt: ">", lt: "<", quot: '"', apos: "'" }, e4.ENTITIES = { amp: "&", gt: ">", lt: "<", quot: '"', apos: "'", AElig: 198, Aacute: 193, Acirc: 194, Agrave: 192, Aring: 197, Atilde: 195, Auml: 196, Ccedil: 199, ETH: 208, Eacute: 201, Ecirc: 202, Egrave: 200, Euml: 203, Iacute: 205, Icirc: 206, Igrave: 204, Iuml: 207, Ntilde: 209, Oacute: 211, Ocirc: 212, Ograve: 210, Oslash: 216, Otilde: 213, Ouml: 214, THORN: 222, Uacute: 218, Ucirc: 219, Ugrave: 217, Uuml: 220, Yacute: 221, aacute: 225, acirc: 226, aelig: 230, agrave: 224, aring: 229, atilde: 227, auml: 228, ccedil: 231, eacute: 233, ecirc: 234, egrave: 232, eth: 240, euml: 235, iacute: 237, icirc: 238, igrave: 236, iuml: 239, ntilde: 241, oacute: 243, ocirc: 244, ograve: 242, oslash: 248, otilde: 245, ouml: 246, szlig: 223, thorn: 254, uacute: 250, ucirc: 251, ugrave: 249, uuml: 252, yacute: 253, yuml: 255, copy: 169, reg: 174, nbsp: 160, iexcl: 161, cent: 162, pound: 163, curren: 164, yen: 165, brvbar: 166, sect: 167, uml: 168, ordf: 170, laquo: 171, not: 172, shy: 173, macr: 175, deg: 176, plusmn: 177, sup1: 185, sup2: 178, sup3: 179, acute: 180, micro: 181, para: 182, middot: 183, cedil: 184, ordm: 186, raquo: 187, frac14: 188, frac12: 189, frac34: 190, iquest: 191, times: 215, divide: 247, OElig: 338, oelig: 339, Scaron: 352, scaron: 353, Yuml: 376, fnof: 402, circ: 710, tilde: 732, Alpha: 913, Beta: 914, Gamma: 915, Delta: 916, Epsilon: 917, Zeta: 918, Eta: 919, Theta: 920, Iota: 921, Kappa: 922, Lambda: 923, Mu: 924, Nu: 925, Xi: 926, Omicron: 927, Pi: 928, Rho: 929, Sigma: 931, Tau: 932, Upsilon: 933, Phi: 934, Chi: 935, Psi: 936, Omega: 937, alpha: 945, beta: 946, gamma: 947, delta: 948, epsilon: 949, zeta: 950, eta: 951, theta: 952, iota: 953, kappa: 954, lambda: 955, mu: 956, nu: 957, xi: 958, omicron: 959, pi: 960, rho: 961, sigmaf: 962, sigma: 963, tau: 964, upsilon: 965, phi: 966, chi: 967, psi: 968, omega: 969, thetasym: 977, upsih: 978, piv: 982, ensp: 8194, emsp: 8195, thinsp: 8201, zwnj: 8204, zwj: 8205, lrm: 8206, rlm: 8207, ndash: 8211, mdash: 8212, lsquo: 8216, rsquo: 8217, sbquo: 8218, ldquo: 8220, rdquo: 8221, bdquo: 8222, dagger: 8224, Dagger: 8225, bull: 8226, hellip: 8230, permil: 8240, prime: 8242, Prime: 8243, lsaquo: 8249, rsaquo: 8250, oline: 8254, frasl: 8260, euro: 8364, image: 8465, weierp: 8472, real: 8476, trade: 8482, alefsym: 8501, larr: 8592, uarr: 8593, rarr: 8594, darr: 8595, harr: 8596, crarr: 8629, lArr: 8656, uArr: 8657, rArr: 8658, dArr: 8659, hArr: 8660, forall: 8704, part: 8706, exist: 8707, empty: 8709, nabla: 8711, isin: 8712, notin: 8713, ni: 8715, prod: 8719, sum: 8721, minus: 8722, lowast: 8727, radic: 8730, prop: 8733, infin: 8734, ang: 8736, and: 8743, or: 8744, cap: 8745, cup: 8746, int: 8747, there4: 8756, sim: 8764, cong: 8773, asymp: 8776, ne: 8800, equiv: 8801, le: 8804, ge: 8805, sub: 8834, sup: 8835, nsub: 8836, sube: 8838, supe: 8839, oplus: 8853, otimes: 8855, perp: 8869, sdot: 8901, lceil: 8968, rceil: 8969, lfloor: 8970, rfloor: 8971, lang: 9001, rang: 9002, loz: 9674, spades: 9824, clubs: 9827, hearts: 9829, diams: 9830 }, Object.keys(e4.ENTITIES).forEach((function(t5) {
            var r4 = e4.ENTITIES[t5], n3 = "number" == typeof r4 ? String.fromCharCode(r4) : r4;
            e4.ENTITIES[t5] = n3;
          })), e4.STATE) e4.STATE[e4.STATE[E]] = E;
          function T2(e5, t5, r4) {
            e5[t5] && e5[t5](r4);
          }
          function A2(e5, t5, r4) {
            e5.textNode && S3(e5), T2(e5, t5, r4);
          }
          function S3(e5) {
            e5.textNode = I(e5.opt, e5.textNode), e5.textNode && T2(e5, "ontext", e5.textNode), e5.textNode = "";
          }
          function I(e5, t5) {
            return e5.trim && (t5 = t5.trim()), e5.normalize && (t5 = t5.replace(/\s+/g, " ")), t5;
          }
          function R(e5, t5) {
            return S3(e5), e5.trackPosition && (t5 += "\nLine: " + e5.line + "\nColumn: " + e5.column + "\nChar: " + e5.c), t5 = new Error(t5), e5.error = t5, T2(e5, "onerror", t5), e5;
          }
          function N(e5) {
            return e5.sawRoot && !e5.closedRoot && C(e5, "Unclosed root tag"), e5.state !== _2.BEGIN && e5.state !== _2.BEGIN_WHITESPACE && e5.state !== _2.TEXT && R(e5, "Unexpected end"), S3(e5), e5.c = "", e5.closed = true, T2(e5, "onend"), s5.call(e5, e5.strict, e5.opt), e5;
          }
          function C(e5, t5) {
            if ("object" != typeof e5 || !(e5 instanceof s5)) throw new Error("bad call to strictFail");
            e5.strict && R(e5, t5);
          }
          function O(e5) {
            e5.strict || (e5.tagName = e5.tagName[e5.looseCase]());
            var t5 = e5.tags[e5.tags.length - 1] || e5, r4 = e5.tag = { name: e5.tagName, attributes: {} };
            e5.opt.xmlns && (r4.ns = t5.ns), e5.attribList.length = 0, A2(e5, "onopentagstart", r4);
          }
          function k(e5, t5) {
            var r4 = e5.indexOf(":") < 0 ? ["", e5] : e5.split(":"), n3 = r4[0], s6 = r4[1];
            return t5 && "xmlns" === e5 && (n3 = "xmlns", s6 = ""), { prefix: n3, local: s6 };
          }
          function L(e5) {
            if (e5.strict || (e5.attribName = e5.attribName[e5.looseCase]()), -1 !== e5.attribList.indexOf(e5.attribName) || e5.tag.attributes.hasOwnProperty(e5.attribName)) e5.attribName = e5.attribValue = "";
            else {
              if (e5.opt.xmlns) {
                var t5 = k(e5.attribName, true), r4 = t5.prefix, n3 = t5.local;
                if ("xmlns" === r4) if ("xml" === n3 && e5.attribValue !== a2) C(e5, "xml: prefix must be bound to " + a2 + "\nActual: " + e5.attribValue);
                else if ("xmlns" === n3 && e5.attribValue !== c) C(e5, "xmlns: prefix must be bound to " + c + "\nActual: " + e5.attribValue);
                else {
                  var s6 = e5.tag, i3 = e5.tags[e5.tags.length - 1] || e5;
                  s6.ns === i3.ns && (s6.ns = Object.create(i3.ns)), s6.ns[n3] = e5.attribValue;
                }
                e5.attribList.push([e5.attribName, e5.attribValue]);
              } else e5.tag.attributes[e5.attribName] = e5.attribValue, A2(e5, "onattribute", { name: e5.attribName, value: e5.attribValue });
              e5.attribName = e5.attribValue = "";
            }
          }
          function D2(e5, t5) {
            if (e5.opt.xmlns) {
              var r4 = e5.tag, n3 = k(e5.tagName);
              r4.prefix = n3.prefix, r4.local = n3.local, r4.uri = r4.ns[n3.prefix] || "", r4.prefix && !r4.uri && (C(e5, "Unbound namespace prefix: " + JSON.stringify(e5.tagName)), r4.uri = n3.prefix);
              var s6 = e5.tags[e5.tags.length - 1] || e5;
              r4.ns && s6.ns !== r4.ns && Object.keys(r4.ns).forEach((function(t6) {
                A2(e5, "onopennamespace", { prefix: t6, uri: r4.ns[t6] });
              }));
              for (var i3 = 0, o2 = e5.attribList.length; i3 < o2; i3++) {
                var a3 = e5.attribList[i3], c2 = a3[0], u4 = a3[1], l2 = k(c2, true), h5 = l2.prefix, p6 = l2.local, d2 = "" === h5 ? "" : r4.ns[h5] || "", f4 = { name: c2, value: u4, prefix: h5, local: p6, uri: d2 };
                h5 && "xmlns" !== h5 && !d2 && (C(e5, "Unbound namespace prefix: " + JSON.stringify(h5)), f4.uri = h5), e5.tag.attributes[c2] = f4, A2(e5, "onattribute", f4);
              }
              e5.attribList.length = 0;
            }
            e5.tag.isSelfClosing = !!t5, e5.sawRoot = true, e5.tags.push(e5.tag), A2(e5, "onopentag", e5.tag), t5 || (e5.noscript || "script" !== e5.tagName.toLowerCase() ? e5.state = _2.TEXT : e5.state = _2.SCRIPT, e5.tag = null, e5.tagName = ""), e5.attribName = e5.attribValue = "", e5.attribList.length = 0;
          }
          function P(e5) {
            if (!e5.tagName) return C(e5, "Weird empty close tag."), e5.textNode += "</>", void (e5.state = _2.TEXT);
            if (e5.script) {
              if ("script" !== e5.tagName) return e5.script += "</" + e5.tagName + ">", e5.tagName = "", void (e5.state = _2.SCRIPT);
              A2(e5, "onscript", e5.script), e5.script = "";
            }
            var t5 = e5.tags.length, r4 = e5.tagName;
            e5.strict || (r4 = r4[e5.looseCase]());
            for (var n3 = r4; t5-- && e5.tags[t5].name !== n3; ) C(e5, "Unexpected close tag");
            if (t5 < 0) return C(e5, "Unmatched closing tag: " + e5.tagName), e5.textNode += "</" + e5.tagName + ">", void (e5.state = _2.TEXT);
            e5.tagName = r4;
            for (var s6 = e5.tags.length; s6-- > t5; ) {
              var i3 = e5.tag = e5.tags.pop();
              e5.tagName = e5.tag.name, A2(e5, "onclosetag", e5.tagName);
              var o2 = {};
              for (var a3 in i3.ns) o2[a3] = i3.ns[a3];
              var c2 = e5.tags[e5.tags.length - 1] || e5;
              e5.opt.xmlns && i3.ns !== c2.ns && Object.keys(i3.ns).forEach((function(t6) {
                var r5 = i3.ns[t6];
                A2(e5, "onclosenamespace", { prefix: t6, uri: r5 });
              }));
            }
            0 === t5 && (e5.closedRoot = true), e5.tagName = e5.attribValue = e5.attribName = "", e5.attribList.length = 0, e5.state = _2.TEXT;
          }
          function F2(e5) {
            var t5, r4 = e5.entity, n3 = r4.toLowerCase(), s6 = "";
            return e5.ENTITIES[r4] ? e5.ENTITIES[r4] : e5.ENTITIES[n3] ? e5.ENTITIES[n3] : ("#" === (r4 = n3).charAt(0) && ("x" === r4.charAt(1) ? (r4 = r4.slice(2), s6 = (t5 = parseInt(r4, 16)).toString(16)) : (r4 = r4.slice(1), s6 = (t5 = parseInt(r4, 10)).toString(10))), r4 = r4.replace(/^0+/, ""), isNaN(t5) || s6.toLowerCase() !== r4 ? (C(e5, "Invalid character entity"), "&" + e5.entity + ";") : String.fromCodePoint(t5));
          }
          function B(e5, t5) {
            "<" === t5 ? (e5.state = _2.OPEN_WAKA, e5.startTagPosition = e5.position) : f3(t5) || (C(e5, "Non-whitespace before first tag."), e5.textNode = t5, e5.state = _2.TEXT);
          }
          function M(e5, t5) {
            var r4 = "";
            return t5 < e5.length && (r4 = e5.charAt(t5)), r4;
          }
          _2 = e4.STATE, String.fromCodePoint || (b = String.fromCharCode, x2 = Math.floor, v = function() {
            var e5, t5, r4 = 16384, n3 = [], s6 = -1, i3 = arguments.length;
            if (!i3) return "";
            for (var o2 = ""; ++s6 < i3; ) {
              var a3 = Number(arguments[s6]);
              if (!isFinite(a3) || a3 < 0 || a3 > 1114111 || x2(a3) !== a3) throw RangeError("Invalid code point: " + a3);
              a3 <= 65535 ? n3.push(a3) : (e5 = 55296 + ((a3 -= 65536) >> 10), t5 = a3 % 1024 + 56320, n3.push(e5, t5)), (s6 + 1 === i3 || n3.length > r4) && (o2 += b.apply(null, n3), n3.length = 0);
            }
            return o2;
          }, Object.defineProperty ? Object.defineProperty(String, "fromCodePoint", { value: v, configurable: true, writable: true }) : String.fromCodePoint = v);
        })(t3);
      }, 4889: function(e3, t3, r3) {
        var n2 = r3(4155);
        !(function(e4, t4) {
          "use strict";
          if (!e4.setImmediate) {
            var r4, s5, i2, o, a2, c = 1, u3 = {}, l = false, h4 = e4.document, p5 = Object.getPrototypeOf && Object.getPrototypeOf(e4);
            p5 = p5 && p5.setTimeout ? p5 : e4, "[object process]" === {}.toString.call(e4.process) ? r4 = function(e5) {
              n2.nextTick((function() {
                f3(e5);
              }));
            } : (function() {
              if (e4.postMessage && !e4.importScripts) {
                var t5 = true, r5 = e4.onmessage;
                return e4.onmessage = function() {
                  t5 = false;
                }, e4.postMessage("", "*"), e4.onmessage = r5, t5;
              }
            })() ? (o = "setImmediate$" + Math.random() + "$", a2 = function(t5) {
              t5.source === e4 && "string" == typeof t5.data && 0 === t5.data.indexOf(o) && f3(+t5.data.slice(o.length));
            }, e4.addEventListener ? e4.addEventListener("message", a2, false) : e4.attachEvent("onmessage", a2), r4 = function(t5) {
              e4.postMessage(o + t5, "*");
            }) : e4.MessageChannel ? ((i2 = new MessageChannel()).port1.onmessage = function(e5) {
              f3(e5.data);
            }, r4 = function(e5) {
              i2.port2.postMessage(e5);
            }) : h4 && "onreadystatechange" in h4.createElement("script") ? (s5 = h4.documentElement, r4 = function(e5) {
              var t5 = h4.createElement("script");
              t5.onreadystatechange = function() {
                f3(e5), t5.onreadystatechange = null, s5.removeChild(t5), t5 = null;
              }, s5.appendChild(t5);
            }) : r4 = function(e5) {
              setTimeout(f3, 0, e5);
            }, p5.setImmediate = function(e5) {
              "function" != typeof e5 && (e5 = new Function("" + e5));
              for (var t5 = new Array(arguments.length - 1), n3 = 0; n3 < t5.length; n3++) t5[n3] = arguments[n3 + 1];
              var s6 = { callback: e5, args: t5 };
              return u3[c] = s6, r4(c), c++;
            }, p5.clearImmediate = d;
          }
          function d(e5) {
            delete u3[e5];
          }
          function f3(e5) {
            if (l) setTimeout(f3, 0, e5);
            else {
              var t5 = u3[e5];
              if (t5) {
                l = true;
                try {
                  !(function(e6) {
                    var t6 = e6.callback, r5 = e6.args;
                    switch (r5.length) {
                      case 0:
                        t6();
                        break;
                      case 1:
                        t6(r5[0]);
                        break;
                      case 2:
                        t6(r5[0], r5[1]);
                        break;
                      case 3:
                        t6(r5[0], r5[1], r5[2]);
                        break;
                      default:
                        t6.apply(void 0, r5);
                    }
                  })(t5);
                } finally {
                  d(e5), l = false;
                }
              }
            }
          }
        })("undefined" == typeof self ? void 0 === r3.g ? this : r3.g : self);
      }, 2830: (e3, t3, r3) => {
        e3.exports = s5;
        var n2 = r3(7187).EventEmitter;
        function s5() {
          n2.call(this);
        }
        r3(5717)(s5, n2), s5.Readable = r3(6577), s5.Writable = r3(323), s5.Duplex = r3(8656), s5.Transform = r3(4473), s5.PassThrough = r3(2366), s5.finished = r3(1086), s5.pipeline = r3(6472), s5.Stream = s5, s5.prototype.pipe = function(e4, t4) {
          var r4 = this;
          function s6(t5) {
            e4.writable && false === e4.write(t5) && r4.pause && r4.pause();
          }
          function i2() {
            r4.readable && r4.resume && r4.resume();
          }
          r4.on("data", s6), e4.on("drain", i2), e4._isStdio || t4 && false === t4.end || (r4.on("end", a2), r4.on("close", c));
          var o = false;
          function a2() {
            o || (o = true, e4.end());
          }
          function c() {
            o || (o = true, "function" == typeof e4.destroy && e4.destroy());
          }
          function u3(e5) {
            if (l(), 0 === n2.listenerCount(this, "error")) throw e5;
          }
          function l() {
            r4.removeListener("data", s6), e4.removeListener("drain", i2), r4.removeListener("end", a2), r4.removeListener("close", c), r4.removeListener("error", u3), e4.removeListener("error", u3), r4.removeListener("end", l), r4.removeListener("close", l), e4.removeListener("close", l);
          }
          return r4.on("error", u3), e4.on("error", u3), r4.on("end", l), r4.on("close", l), e4.on("close", l), e4.emit("pipe", r4), e4;
        };
      }, 8106: (e3) => {
        "use strict";
        var t3 = {};
        function r3(e4, r4, n3) {
          n3 || (n3 = Error);
          var s5 = (function(e5) {
            var t4, n4;
            function s6(t5, n5, s7) {
              return e5.call(this, (function(e6, t6, n6) {
                return "string" == typeof r4 ? r4 : r4(e6, t6, n6);
              })(t5, n5, s7)) || this;
            }
            return n4 = e5, (t4 = s6).prototype = Object.create(n4.prototype), t4.prototype.constructor = t4, t4.__proto__ = n4, s6;
          })(n3);
          s5.prototype.name = n3.name, s5.prototype.code = e4, t3[e4] = s5;
        }
        function n2(e4, t4) {
          if (Array.isArray(e4)) {
            var r4 = e4.length;
            return e4 = e4.map((function(e5) {
              return String(e5);
            })), r4 > 2 ? "one of ".concat(t4, " ").concat(e4.slice(0, r4 - 1).join(", "), ", or ") + e4[r4 - 1] : 2 === r4 ? "one of ".concat(t4, " ").concat(e4[0], " or ").concat(e4[1]) : "of ".concat(t4, " ").concat(e4[0]);
          }
          return "of ".concat(t4, " ").concat(String(e4));
        }
        r3("ERR_INVALID_OPT_VALUE", (function(e4, t4) {
          return 'The value "' + t4 + '" is invalid for option "' + e4 + '"';
        }), TypeError), r3("ERR_INVALID_ARG_TYPE", (function(e4, t4, r4) {
          var s5, i2, o, a2, c;
          if ("string" == typeof t4 && (i2 = "not ", t4.substr(0, i2.length) === i2) ? (s5 = "must not be", t4 = t4.replace(/^not /, "")) : s5 = "must be", (function(e5, t5, r5) {
            return (void 0 === r5 || r5 > e5.length) && (r5 = e5.length), e5.substring(r5 - t5.length, r5) === t5;
          })(e4, " argument")) o = "The ".concat(e4, " ").concat(s5, " ").concat(n2(t4, "type"));
          else {
            var u3 = ("number" != typeof c && (c = 0), c + ".".length > (a2 = e4).length || -1 === a2.indexOf(".", c) ? "argument" : "property");
            o = 'The "'.concat(e4, '" ').concat(u3, " ").concat(s5, " ").concat(n2(t4, "type"));
          }
          return o + ". Received type ".concat(typeof r4);
        }), TypeError), r3("ERR_STREAM_PUSH_AFTER_EOF", "stream.push() after EOF"), r3("ERR_METHOD_NOT_IMPLEMENTED", (function(e4) {
          return "The " + e4 + " method is not implemented";
        })), r3("ERR_STREAM_PREMATURE_CLOSE", "Premature close"), r3("ERR_STREAM_DESTROYED", (function(e4) {
          return "Cannot call " + e4 + " after a stream was destroyed";
        })), r3("ERR_MULTIPLE_CALLBACK", "Callback called multiple times"), r3("ERR_STREAM_CANNOT_PIPE", "Cannot pipe, not readable"), r3("ERR_STREAM_WRITE_AFTER_END", "write after end"), r3("ERR_STREAM_NULL_VALUES", "May not write null values to stream", TypeError), r3("ERR_UNKNOWN_ENCODING", (function(e4) {
          return "Unknown encoding: " + e4;
        }), TypeError), r3("ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "stream.unshift() after end event"), e3.exports.q = t3;
      }, 8656: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(4155), s5 = Object.keys || function(e4) {
          var t4 = [];
          for (var r4 in e4) t4.push(r4);
          return t4;
        };
        e3.exports = l;
        var i2 = r3(6577), o = r3(323);
        r3(5717)(l, i2);
        for (var a2 = s5(o.prototype), c = 0; c < a2.length; c++) {
          var u3 = a2[c];
          l.prototype[u3] || (l.prototype[u3] = o.prototype[u3]);
        }
        function l(e4) {
          if (!(this instanceof l)) return new l(e4);
          i2.call(this, e4), o.call(this, e4), this.allowHalfOpen = true, e4 && (false === e4.readable && (this.readable = false), false === e4.writable && (this.writable = false), false === e4.allowHalfOpen && (this.allowHalfOpen = false, this.once("end", h4)));
        }
        function h4() {
          this._writableState.ended || n2.nextTick(p5, this);
        }
        function p5(e4) {
          e4.end();
        }
        Object.defineProperty(l.prototype, "writableHighWaterMark", { enumerable: false, get: function() {
          return this._writableState.highWaterMark;
        } }), Object.defineProperty(l.prototype, "writableBuffer", { enumerable: false, get: function() {
          return this._writableState && this._writableState.getBuffer();
        } }), Object.defineProperty(l.prototype, "writableLength", { enumerable: false, get: function() {
          return this._writableState.length;
        } }), Object.defineProperty(l.prototype, "destroyed", { enumerable: false, get: function() {
          return void 0 !== this._readableState && void 0 !== this._writableState && this._readableState.destroyed && this._writableState.destroyed;
        }, set: function(e4) {
          void 0 !== this._readableState && void 0 !== this._writableState && (this._readableState.destroyed = e4, this._writableState.destroyed = e4);
        } });
      }, 2366: (e3, t3, r3) => {
        "use strict";
        e3.exports = s5;
        var n2 = r3(4473);
        function s5(e4) {
          if (!(this instanceof s5)) return new s5(e4);
          n2.call(this, e4);
        }
        r3(5717)(s5, n2), s5.prototype._transform = function(e4, t4, r4) {
          r4(null, e4);
        };
      }, 6577: (e3, t3, r3) => {
        "use strict";
        var n2, s5 = r3(4155);
        e3.exports = A2, A2.ReadableState = T2, r3(7187).EventEmitter;
        var i2, o = function(e4, t4) {
          return e4.listeners(t4).length;
        }, a2 = r3(3194), c = r3(8764).Buffer, u3 = r3.g.Uint8Array || function() {
        }, l = r3(5575);
        i2 = l && l.debuglog ? l.debuglog("stream") : function() {
        };
        var h4, p5, d, f3 = r3(9686), m2 = r3(1029), w = r3(94).getHighWaterMark, g = r3(8106).q, y = g.ERR_INVALID_ARG_TYPE, b = g.ERR_STREAM_PUSH_AFTER_EOF, x2 = g.ERR_METHOD_NOT_IMPLEMENTED, v = g.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;
        r3(5717)(A2, a2);
        var _2 = m2.errorOrDestroy, E = ["error", "close", "destroy", "pause", "resume"];
        function T2(e4, t4, s6) {
          n2 = n2 || r3(8656), e4 = e4 || {}, "boolean" != typeof s6 && (s6 = t4 instanceof n2), this.objectMode = !!e4.objectMode, s6 && (this.objectMode = this.objectMode || !!e4.readableObjectMode), this.highWaterMark = w(this, e4, "readableHighWaterMark", s6), this.buffer = new f3(), this.length = 0, this.pipes = null, this.pipesCount = 0, this.flowing = null, this.ended = false, this.endEmitted = false, this.reading = false, this.sync = true, this.needReadable = false, this.emittedReadable = false, this.readableListening = false, this.resumeScheduled = false, this.paused = true, this.emitClose = false !== e4.emitClose, this.autoDestroy = !!e4.autoDestroy, this.destroyed = false, this.defaultEncoding = e4.defaultEncoding || "utf8", this.awaitDrain = 0, this.readingMore = false, this.decoder = null, this.encoding = null, e4.encoding && (h4 || (h4 = r3(2553).s), this.decoder = new h4(e4.encoding), this.encoding = e4.encoding);
        }
        function A2(e4) {
          if (n2 = n2 || r3(8656), !(this instanceof A2)) return new A2(e4);
          var t4 = this instanceof n2;
          this._readableState = new T2(e4, this, t4), this.readable = true, e4 && ("function" == typeof e4.read && (this._read = e4.read), "function" == typeof e4.destroy && (this._destroy = e4.destroy)), a2.call(this);
        }
        function S3(e4, t4, r4, n3, s6) {
          i2("readableAddChunk", t4);
          var o2, a3 = e4._readableState;
          if (null === t4) a3.reading = false, (function(e5, t5) {
            if (i2("onEofChunk"), !t5.ended) {
              if (t5.decoder) {
                var r5 = t5.decoder.end();
                r5 && r5.length && (t5.buffer.push(r5), t5.length += t5.objectMode ? 1 : r5.length);
              }
              t5.ended = true, t5.sync ? C(e5) : (t5.needReadable = false, t5.emittedReadable || (t5.emittedReadable = true, O(e5)));
            }
          })(e4, a3);
          else if (s6 || (o2 = (function(e5, t5) {
            var r5, n4;
            return n4 = t5, c.isBuffer(n4) || n4 instanceof u3 || "string" == typeof t5 || void 0 === t5 || e5.objectMode || (r5 = new y("chunk", ["string", "Buffer", "Uint8Array"], t5)), r5;
          })(a3, t4)), o2) _2(e4, o2);
          else if (a3.objectMode || t4 && t4.length > 0) if ("string" == typeof t4 || a3.objectMode || Object.getPrototypeOf(t4) === c.prototype || (t4 = (function(e5) {
            return c.from(e5);
          })(t4)), n3) a3.endEmitted ? _2(e4, new v()) : I(e4, a3, t4, true);
          else if (a3.ended) _2(e4, new b());
          else {
            if (a3.destroyed) return false;
            a3.reading = false, a3.decoder && !r4 ? (t4 = a3.decoder.write(t4), a3.objectMode || 0 !== t4.length ? I(e4, a3, t4, false) : k(e4, a3)) : I(e4, a3, t4, false);
          }
          else n3 || (a3.reading = false, k(e4, a3));
          return !a3.ended && (a3.length < a3.highWaterMark || 0 === a3.length);
        }
        function I(e4, t4, r4, n3) {
          t4.flowing && 0 === t4.length && !t4.sync ? (t4.awaitDrain = 0, e4.emit("data", r4)) : (t4.length += t4.objectMode ? 1 : r4.length, n3 ? t4.buffer.unshift(r4) : t4.buffer.push(r4), t4.needReadable && C(e4)), k(e4, t4);
        }
        Object.defineProperty(A2.prototype, "destroyed", { enumerable: false, get: function() {
          return void 0 !== this._readableState && this._readableState.destroyed;
        }, set: function(e4) {
          this._readableState && (this._readableState.destroyed = e4);
        } }), A2.prototype.destroy = m2.destroy, A2.prototype._undestroy = m2.undestroy, A2.prototype._destroy = function(e4, t4) {
          t4(e4);
        }, A2.prototype.push = function(e4, t4) {
          var r4, n3 = this._readableState;
          return n3.objectMode ? r4 = true : "string" == typeof e4 && ((t4 = t4 || n3.defaultEncoding) !== n3.encoding && (e4 = c.from(e4, t4), t4 = ""), r4 = true), S3(this, e4, t4, false, r4);
        }, A2.prototype.unshift = function(e4) {
          return S3(this, e4, null, true, false);
        }, A2.prototype.isPaused = function() {
          return false === this._readableState.flowing;
        }, A2.prototype.setEncoding = function(e4) {
          h4 || (h4 = r3(2553).s);
          var t4 = new h4(e4);
          this._readableState.decoder = t4, this._readableState.encoding = this._readableState.decoder.encoding;
          for (var n3 = this._readableState.buffer.head, s6 = ""; null !== n3; ) s6 += t4.write(n3.data), n3 = n3.next;
          return this._readableState.buffer.clear(), "" !== s6 && this._readableState.buffer.push(s6), this._readableState.length = s6.length, this;
        };
        var R = 1073741824;
        function N(e4, t4) {
          return e4 <= 0 || 0 === t4.length && t4.ended ? 0 : t4.objectMode ? 1 : e4 != e4 ? t4.flowing && t4.length ? t4.buffer.head.data.length : t4.length : (e4 > t4.highWaterMark && (t4.highWaterMark = (function(e5) {
            return e5 >= R ? e5 = R : (e5--, e5 |= e5 >>> 1, e5 |= e5 >>> 2, e5 |= e5 >>> 4, e5 |= e5 >>> 8, e5 |= e5 >>> 16, e5++), e5;
          })(e4)), e4 <= t4.length ? e4 : t4.ended ? t4.length : (t4.needReadable = true, 0));
        }
        function C(e4) {
          var t4 = e4._readableState;
          i2("emitReadable", t4.needReadable, t4.emittedReadable), t4.needReadable = false, t4.emittedReadable || (i2("emitReadable", t4.flowing), t4.emittedReadable = true, s5.nextTick(O, e4));
        }
        function O(e4) {
          var t4 = e4._readableState;
          i2("emitReadable_", t4.destroyed, t4.length, t4.ended), t4.destroyed || !t4.length && !t4.ended || (e4.emit("readable"), t4.emittedReadable = false), t4.needReadable = !t4.flowing && !t4.ended && t4.length <= t4.highWaterMark, B(e4);
        }
        function k(e4, t4) {
          t4.readingMore || (t4.readingMore = true, s5.nextTick(L, e4, t4));
        }
        function L(e4, t4) {
          for (; !t4.reading && !t4.ended && (t4.length < t4.highWaterMark || t4.flowing && 0 === t4.length); ) {
            var r4 = t4.length;
            if (i2("maybeReadMore read 0"), e4.read(0), r4 === t4.length) break;
          }
          t4.readingMore = false;
        }
        function D2(e4) {
          var t4 = e4._readableState;
          t4.readableListening = e4.listenerCount("readable") > 0, t4.resumeScheduled && !t4.paused ? t4.flowing = true : e4.listenerCount("data") > 0 && e4.resume();
        }
        function P(e4) {
          i2("readable nexttick read 0"), e4.read(0);
        }
        function F2(e4, t4) {
          i2("resume", t4.reading), t4.reading || e4.read(0), t4.resumeScheduled = false, e4.emit("resume"), B(e4), t4.flowing && !t4.reading && e4.read(0);
        }
        function B(e4) {
          var t4 = e4._readableState;
          for (i2("flow", t4.flowing); t4.flowing && null !== e4.read(); ) ;
        }
        function M(e4, t4) {
          return 0 === t4.length ? null : (t4.objectMode ? r4 = t4.buffer.shift() : !e4 || e4 >= t4.length ? (r4 = t4.decoder ? t4.buffer.join("") : 1 === t4.buffer.length ? t4.buffer.first() : t4.buffer.concat(t4.length), t4.buffer.clear()) : r4 = t4.buffer.consume(e4, t4.decoder), r4);
          var r4;
        }
        function U(e4) {
          var t4 = e4._readableState;
          i2("endReadable", t4.endEmitted), t4.endEmitted || (t4.ended = true, s5.nextTick(H, t4, e4));
        }
        function H(e4, t4) {
          if (i2("endReadableNT", e4.endEmitted, e4.length), !e4.endEmitted && 0 === e4.length && (e4.endEmitted = true, t4.readable = false, t4.emit("end"), e4.autoDestroy)) {
            var r4 = t4._writableState;
            (!r4 || r4.autoDestroy && r4.finished) && t4.destroy();
          }
        }
        function z2(e4, t4) {
          for (var r4 = 0, n3 = e4.length; r4 < n3; r4++) if (e4[r4] === t4) return r4;
          return -1;
        }
        A2.prototype.read = function(e4) {
          i2("read", e4), e4 = parseInt(e4, 10);
          var t4 = this._readableState, r4 = e4;
          if (0 !== e4 && (t4.emittedReadable = false), 0 === e4 && t4.needReadable && ((0 !== t4.highWaterMark ? t4.length >= t4.highWaterMark : t4.length > 0) || t4.ended)) return i2("read: emitReadable", t4.length, t4.ended), 0 === t4.length && t4.ended ? U(this) : C(this), null;
          if (0 === (e4 = N(e4, t4)) && t4.ended) return 0 === t4.length && U(this), null;
          var n3, s6 = t4.needReadable;
          return i2("need readable", s6), (0 === t4.length || t4.length - e4 < t4.highWaterMark) && i2("length less than watermark", s6 = true), t4.ended || t4.reading ? i2("reading or ended", s6 = false) : s6 && (i2("do read"), t4.reading = true, t4.sync = true, 0 === t4.length && (t4.needReadable = true), this._read(t4.highWaterMark), t4.sync = false, t4.reading || (e4 = N(r4, t4))), null === (n3 = e4 > 0 ? M(e4, t4) : null) ? (t4.needReadable = t4.length <= t4.highWaterMark, e4 = 0) : (t4.length -= e4, t4.awaitDrain = 0), 0 === t4.length && (t4.ended || (t4.needReadable = true), r4 !== e4 && t4.ended && U(this)), null !== n3 && this.emit("data", n3), n3;
        }, A2.prototype._read = function(e4) {
          _2(this, new x2("_read()"));
        }, A2.prototype.pipe = function(e4, t4) {
          var r4 = this, n3 = this._readableState;
          switch (n3.pipesCount) {
            case 0:
              n3.pipes = e4;
              break;
            case 1:
              n3.pipes = [n3.pipes, e4];
              break;
            default:
              n3.pipes.push(e4);
          }
          n3.pipesCount += 1, i2("pipe count=%d opts=%j", n3.pipesCount, t4);
          var a3 = t4 && false === t4.end || e4 === s5.stdout || e4 === s5.stderr ? m3 : c2;
          function c2() {
            i2("onend"), e4.end();
          }
          n3.endEmitted ? s5.nextTick(a3) : r4.once("end", a3), e4.on("unpipe", (function t5(s6, o2) {
            i2("onunpipe"), s6 === r4 && o2 && false === o2.hasUnpiped && (o2.hasUnpiped = true, i2("cleanup"), e4.removeListener("close", d2), e4.removeListener("finish", f4), e4.removeListener("drain", u4), e4.removeListener("error", p6), e4.removeListener("unpipe", t5), r4.removeListener("end", c2), r4.removeListener("end", m3), r4.removeListener("data", h5), l2 = true, !n3.awaitDrain || e4._writableState && !e4._writableState.needDrain || u4());
          }));
          var u4 = /* @__PURE__ */ (function(e5) {
            return function() {
              var t5 = e5._readableState;
              i2("pipeOnDrain", t5.awaitDrain), t5.awaitDrain && t5.awaitDrain--, 0 === t5.awaitDrain && o(e5, "data") && (t5.flowing = true, B(e5));
            };
          })(r4);
          e4.on("drain", u4);
          var l2 = false;
          function h5(t5) {
            i2("ondata");
            var s6 = e4.write(t5);
            i2("dest.write", s6), false === s6 && ((1 === n3.pipesCount && n3.pipes === e4 || n3.pipesCount > 1 && -1 !== z2(n3.pipes, e4)) && !l2 && (i2("false write response, pause", n3.awaitDrain), n3.awaitDrain++), r4.pause());
          }
          function p6(t5) {
            i2("onerror", t5), m3(), e4.removeListener("error", p6), 0 === o(e4, "error") && _2(e4, t5);
          }
          function d2() {
            e4.removeListener("finish", f4), m3();
          }
          function f4() {
            i2("onfinish"), e4.removeListener("close", d2), m3();
          }
          function m3() {
            i2("unpipe"), r4.unpipe(e4);
          }
          return r4.on("data", h5), (function(e5, t5, r5) {
            if ("function" == typeof e5.prependListener) return e5.prependListener(t5, r5);
            e5._events && e5._events.error ? Array.isArray(e5._events.error) ? e5._events.error.unshift(r5) : e5._events.error = [r5, e5._events.error] : e5.on(t5, r5);
          })(e4, "error", p6), e4.once("close", d2), e4.once("finish", f4), e4.emit("pipe", r4), n3.flowing || (i2("pipe resume"), r4.resume()), e4;
        }, A2.prototype.unpipe = function(e4) {
          var t4 = this._readableState, r4 = { hasUnpiped: false };
          if (0 === t4.pipesCount) return this;
          if (1 === t4.pipesCount) return e4 && e4 !== t4.pipes || (e4 || (e4 = t4.pipes), t4.pipes = null, t4.pipesCount = 0, t4.flowing = false, e4 && e4.emit("unpipe", this, r4)), this;
          if (!e4) {
            var n3 = t4.pipes, s6 = t4.pipesCount;
            t4.pipes = null, t4.pipesCount = 0, t4.flowing = false;
            for (var i3 = 0; i3 < s6; i3++) n3[i3].emit("unpipe", this, { hasUnpiped: false });
            return this;
          }
          var o2 = z2(t4.pipes, e4);
          return -1 === o2 || (t4.pipes.splice(o2, 1), t4.pipesCount -= 1, 1 === t4.pipesCount && (t4.pipes = t4.pipes[0]), e4.emit("unpipe", this, r4)), this;
        }, A2.prototype.on = function(e4, t4) {
          var r4 = a2.prototype.on.call(this, e4, t4), n3 = this._readableState;
          return "data" === e4 ? (n3.readableListening = this.listenerCount("readable") > 0, false !== n3.flowing && this.resume()) : "readable" === e4 && (n3.endEmitted || n3.readableListening || (n3.readableListening = n3.needReadable = true, n3.flowing = false, n3.emittedReadable = false, i2("on readable", n3.length, n3.reading), n3.length ? C(this) : n3.reading || s5.nextTick(P, this))), r4;
        }, A2.prototype.addListener = A2.prototype.on, A2.prototype.removeListener = function(e4, t4) {
          var r4 = a2.prototype.removeListener.call(this, e4, t4);
          return "readable" === e4 && s5.nextTick(D2, this), r4;
        }, A2.prototype.removeAllListeners = function(e4) {
          var t4 = a2.prototype.removeAllListeners.apply(this, arguments);
          return "readable" !== e4 && void 0 !== e4 || s5.nextTick(D2, this), t4;
        }, A2.prototype.resume = function() {
          var e4 = this._readableState;
          return e4.flowing || (i2("resume"), e4.flowing = !e4.readableListening, (function(e5, t4) {
            t4.resumeScheduled || (t4.resumeScheduled = true, s5.nextTick(F2, e5, t4));
          })(this, e4)), e4.paused = false, this;
        }, A2.prototype.pause = function() {
          return i2("call pause flowing=%j", this._readableState.flowing), false !== this._readableState.flowing && (i2("pause"), this._readableState.flowing = false, this.emit("pause")), this._readableState.paused = true, this;
        }, A2.prototype.wrap = function(e4) {
          var t4 = this, r4 = this._readableState, n3 = false;
          for (var s6 in e4.on("end", (function() {
            if (i2("wrapped end"), r4.decoder && !r4.ended) {
              var e5 = r4.decoder.end();
              e5 && e5.length && t4.push(e5);
            }
            t4.push(null);
          })), e4.on("data", (function(s7) {
            i2("wrapped data"), r4.decoder && (s7 = r4.decoder.write(s7)), r4.objectMode && null == s7 || (r4.objectMode || s7 && s7.length) && (t4.push(s7) || (n3 = true, e4.pause()));
          })), e4) void 0 === this[s6] && "function" == typeof e4[s6] && (this[s6] = /* @__PURE__ */ (function(t5) {
            return function() {
              return e4[t5].apply(e4, arguments);
            };
          })(s6));
          for (var o2 = 0; o2 < E.length; o2++) e4.on(E[o2], this.emit.bind(this, E[o2]));
          return this._read = function(t5) {
            i2("wrapped _read", t5), n3 && (n3 = false, e4.resume());
          }, this;
        }, "function" == typeof Symbol && (A2.prototype[Symbol.asyncIterator] = function() {
          return void 0 === p5 && (p5 = r3(828)), p5(this);
        }), Object.defineProperty(A2.prototype, "readableHighWaterMark", { enumerable: false, get: function() {
          return this._readableState.highWaterMark;
        } }), Object.defineProperty(A2.prototype, "readableBuffer", { enumerable: false, get: function() {
          return this._readableState && this._readableState.buffer;
        } }), Object.defineProperty(A2.prototype, "readableFlowing", { enumerable: false, get: function() {
          return this._readableState.flowing;
        }, set: function(e4) {
          this._readableState && (this._readableState.flowing = e4);
        } }), A2._fromList = M, Object.defineProperty(A2.prototype, "readableLength", { enumerable: false, get: function() {
          return this._readableState.length;
        } }), "function" == typeof Symbol && (A2.from = function(e4, t4) {
          return void 0 === d && (d = r3(1265)), d(A2, e4, t4);
        });
      }, 4473: (e3, t3, r3) => {
        "use strict";
        e3.exports = l;
        var n2 = r3(8106).q, s5 = n2.ERR_METHOD_NOT_IMPLEMENTED, i2 = n2.ERR_MULTIPLE_CALLBACK, o = n2.ERR_TRANSFORM_ALREADY_TRANSFORMING, a2 = n2.ERR_TRANSFORM_WITH_LENGTH_0, c = r3(8656);
        function u3(e4, t4) {
          var r4 = this._transformState;
          r4.transforming = false;
          var n3 = r4.writecb;
          if (null === n3) return this.emit("error", new i2());
          r4.writechunk = null, r4.writecb = null, null != t4 && this.push(t4), n3(e4);
          var s6 = this._readableState;
          s6.reading = false, (s6.needReadable || s6.length < s6.highWaterMark) && this._read(s6.highWaterMark);
        }
        function l(e4) {
          if (!(this instanceof l)) return new l(e4);
          c.call(this, e4), this._transformState = { afterTransform: u3.bind(this), needTransform: false, transforming: false, writecb: null, writechunk: null, writeencoding: null }, this._readableState.needReadable = true, this._readableState.sync = false, e4 && ("function" == typeof e4.transform && (this._transform = e4.transform), "function" == typeof e4.flush && (this._flush = e4.flush)), this.on("prefinish", h4);
        }
        function h4() {
          var e4 = this;
          "function" != typeof this._flush || this._readableState.destroyed ? p5(this, null, null) : this._flush((function(t4, r4) {
            p5(e4, t4, r4);
          }));
        }
        function p5(e4, t4, r4) {
          if (t4) return e4.emit("error", t4);
          if (null != r4 && e4.push(r4), e4._writableState.length) throw new a2();
          if (e4._transformState.transforming) throw new o();
          return e4.push(null);
        }
        r3(5717)(l, c), l.prototype.push = function(e4, t4) {
          return this._transformState.needTransform = false, c.prototype.push.call(this, e4, t4);
        }, l.prototype._transform = function(e4, t4, r4) {
          r4(new s5("_transform()"));
        }, l.prototype._write = function(e4, t4, r4) {
          var n3 = this._transformState;
          if (n3.writecb = r4, n3.writechunk = e4, n3.writeencoding = t4, !n3.transforming) {
            var s6 = this._readableState;
            (n3.needTransform || s6.needReadable || s6.length < s6.highWaterMark) && this._read(s6.highWaterMark);
          }
        }, l.prototype._read = function(e4) {
          var t4 = this._transformState;
          null === t4.writechunk || t4.transforming ? t4.needTransform = true : (t4.transforming = true, this._transform(t4.writechunk, t4.writeencoding, t4.afterTransform));
        }, l.prototype._destroy = function(e4, t4) {
          c.prototype._destroy.call(this, e4, (function(e5) {
            t4(e5);
          }));
        };
      }, 323: (e3, t3, r3) => {
        "use strict";
        var n2, s5 = r3(4155);
        function i2(e4) {
          var t4 = this;
          this.next = null, this.entry = null, this.finish = function() {
            !(function(e5, t5, r4) {
              var n3 = e5.entry;
              for (e5.entry = null; n3; ) {
                var s6 = n3.callback;
                t5.pendingcb--, s6(void 0), n3 = n3.next;
              }
              t5.corkedRequestsFree.next = e5;
            })(t4, e4);
          };
        }
        e3.exports = A2, A2.WritableState = T2;
        var o, a2 = { deprecate: r3(4927) }, c = r3(3194), u3 = r3(8764).Buffer, l = r3.g.Uint8Array || function() {
        }, h4 = r3(1029), p5 = r3(94).getHighWaterMark, d = r3(8106).q, f3 = d.ERR_INVALID_ARG_TYPE, m2 = d.ERR_METHOD_NOT_IMPLEMENTED, w = d.ERR_MULTIPLE_CALLBACK, g = d.ERR_STREAM_CANNOT_PIPE, y = d.ERR_STREAM_DESTROYED, b = d.ERR_STREAM_NULL_VALUES, x2 = d.ERR_STREAM_WRITE_AFTER_END, v = d.ERR_UNKNOWN_ENCODING, _2 = h4.errorOrDestroy;
        function E() {
        }
        function T2(e4, t4, o2) {
          n2 = n2 || r3(8656), e4 = e4 || {}, "boolean" != typeof o2 && (o2 = t4 instanceof n2), this.objectMode = !!e4.objectMode, o2 && (this.objectMode = this.objectMode || !!e4.writableObjectMode), this.highWaterMark = p5(this, e4, "writableHighWaterMark", o2), this.finalCalled = false, this.needDrain = false, this.ending = false, this.ended = false, this.finished = false, this.destroyed = false;
          var a3 = false === e4.decodeStrings;
          this.decodeStrings = !a3, this.defaultEncoding = e4.defaultEncoding || "utf8", this.length = 0, this.writing = false, this.corked = 0, this.sync = true, this.bufferProcessing = false, this.onwrite = function(e5) {
            !(function(e6, t5) {
              var r4 = e6._writableState, n3 = r4.sync, i3 = r4.writecb;
              if ("function" != typeof i3) throw new w();
              if ((function(e7) {
                e7.writing = false, e7.writecb = null, e7.length -= e7.writelen, e7.writelen = 0;
              })(r4), t5) !(function(e7, t6, r5, n4, i4) {
                --t6.pendingcb, r5 ? (s5.nextTick(i4, n4), s5.nextTick(O, e7, t6), e7._writableState.errorEmitted = true, _2(e7, n4)) : (i4(n4), e7._writableState.errorEmitted = true, _2(e7, n4), O(e7, t6));
              })(e6, r4, n3, t5, i3);
              else {
                var o3 = N(r4) || e6.destroyed;
                o3 || r4.corked || r4.bufferProcessing || !r4.bufferedRequest || R(e6, r4), n3 ? s5.nextTick(I, e6, r4, o3, i3) : I(e6, r4, o3, i3);
              }
            })(t4, e5);
          }, this.writecb = null, this.writelen = 0, this.bufferedRequest = null, this.lastBufferedRequest = null, this.pendingcb = 0, this.prefinished = false, this.errorEmitted = false, this.emitClose = false !== e4.emitClose, this.autoDestroy = !!e4.autoDestroy, this.bufferedRequestCount = 0, this.corkedRequestsFree = new i2(this);
        }
        function A2(e4) {
          var t4 = this instanceof (n2 = n2 || r3(8656));
          if (!t4 && !o.call(A2, this)) return new A2(e4);
          this._writableState = new T2(e4, this, t4), this.writable = true, e4 && ("function" == typeof e4.write && (this._write = e4.write), "function" == typeof e4.writev && (this._writev = e4.writev), "function" == typeof e4.destroy && (this._destroy = e4.destroy), "function" == typeof e4.final && (this._final = e4.final)), c.call(this);
        }
        function S3(e4, t4, r4, n3, s6, i3, o2) {
          t4.writelen = n3, t4.writecb = o2, t4.writing = true, t4.sync = true, t4.destroyed ? t4.onwrite(new y("write")) : r4 ? e4._writev(s6, t4.onwrite) : e4._write(s6, i3, t4.onwrite), t4.sync = false;
        }
        function I(e4, t4, r4, n3) {
          r4 || (function(e5, t5) {
            0 === t5.length && t5.needDrain && (t5.needDrain = false, e5.emit("drain"));
          })(e4, t4), t4.pendingcb--, n3(), O(e4, t4);
        }
        function R(e4, t4) {
          t4.bufferProcessing = true;
          var r4 = t4.bufferedRequest;
          if (e4._writev && r4 && r4.next) {
            var n3 = t4.bufferedRequestCount, s6 = new Array(n3), o2 = t4.corkedRequestsFree;
            o2.entry = r4;
            for (var a3 = 0, c2 = true; r4; ) s6[a3] = r4, r4.isBuf || (c2 = false), r4 = r4.next, a3 += 1;
            s6.allBuffers = c2, S3(e4, t4, true, t4.length, s6, "", o2.finish), t4.pendingcb++, t4.lastBufferedRequest = null, o2.next ? (t4.corkedRequestsFree = o2.next, o2.next = null) : t4.corkedRequestsFree = new i2(t4), t4.bufferedRequestCount = 0;
          } else {
            for (; r4; ) {
              var u4 = r4.chunk, l2 = r4.encoding, h5 = r4.callback;
              if (S3(e4, t4, false, t4.objectMode ? 1 : u4.length, u4, l2, h5), r4 = r4.next, t4.bufferedRequestCount--, t4.writing) break;
            }
            null === r4 && (t4.lastBufferedRequest = null);
          }
          t4.bufferedRequest = r4, t4.bufferProcessing = false;
        }
        function N(e4) {
          return e4.ending && 0 === e4.length && null === e4.bufferedRequest && !e4.finished && !e4.writing;
        }
        function C(e4, t4) {
          e4._final((function(r4) {
            t4.pendingcb--, r4 && _2(e4, r4), t4.prefinished = true, e4.emit("prefinish"), O(e4, t4);
          }));
        }
        function O(e4, t4) {
          var r4 = N(t4);
          if (r4 && ((function(e5, t5) {
            t5.prefinished || t5.finalCalled || ("function" != typeof e5._final || t5.destroyed ? (t5.prefinished = true, e5.emit("prefinish")) : (t5.pendingcb++, t5.finalCalled = true, s5.nextTick(C, e5, t5)));
          })(e4, t4), 0 === t4.pendingcb && (t4.finished = true, e4.emit("finish"), t4.autoDestroy))) {
            var n3 = e4._readableState;
            (!n3 || n3.autoDestroy && n3.endEmitted) && e4.destroy();
          }
          return r4;
        }
        r3(5717)(A2, c), T2.prototype.getBuffer = function() {
          for (var e4 = this.bufferedRequest, t4 = []; e4; ) t4.push(e4), e4 = e4.next;
          return t4;
        }, (function() {
          try {
            Object.defineProperty(T2.prototype, "buffer", { get: a2.deprecate((function() {
              return this.getBuffer();
            }), "_writableState.buffer is deprecated. Use _writableState.getBuffer instead.", "DEP0003") });
          } catch (e4) {
          }
        })(), "function" == typeof Symbol && Symbol.hasInstance && "function" == typeof Function.prototype[Symbol.hasInstance] ? (o = Function.prototype[Symbol.hasInstance], Object.defineProperty(A2, Symbol.hasInstance, { value: function(e4) {
          return !!o.call(this, e4) || this === A2 && e4 && e4._writableState instanceof T2;
        } })) : o = function(e4) {
          return e4 instanceof this;
        }, A2.prototype.pipe = function() {
          _2(this, new g());
        }, A2.prototype.write = function(e4, t4, r4) {
          var n3, i3 = this._writableState, o2 = false, a3 = !i3.objectMode && (n3 = e4, u3.isBuffer(n3) || n3 instanceof l);
          return a3 && !u3.isBuffer(e4) && (e4 = (function(e5) {
            return u3.from(e5);
          })(e4)), "function" == typeof t4 && (r4 = t4, t4 = null), a3 ? t4 = "buffer" : t4 || (t4 = i3.defaultEncoding), "function" != typeof r4 && (r4 = E), i3.ending ? (function(e5, t5) {
            var r5 = new x2();
            _2(e5, r5), s5.nextTick(t5, r5);
          })(this, r4) : (a3 || (function(e5, t5, r5, n4) {
            var i4;
            return null === r5 ? i4 = new b() : "string" == typeof r5 || t5.objectMode || (i4 = new f3("chunk", ["string", "Buffer"], r5)), !i4 || (_2(e5, i4), s5.nextTick(n4, i4), false);
          })(this, i3, e4, r4)) && (i3.pendingcb++, o2 = (function(e5, t5, r5, n4, s6, i4) {
            if (!r5) {
              var o3 = (function(e6, t6, r6) {
                return e6.objectMode || false === e6.decodeStrings || "string" != typeof t6 || (t6 = u3.from(t6, r6)), t6;
              })(t5, n4, s6);
              n4 !== o3 && (r5 = true, s6 = "buffer", n4 = o3);
            }
            var a4 = t5.objectMode ? 1 : n4.length;
            t5.length += a4;
            var c2 = t5.length < t5.highWaterMark;
            if (c2 || (t5.needDrain = true), t5.writing || t5.corked) {
              var l2 = t5.lastBufferedRequest;
              t5.lastBufferedRequest = { chunk: n4, encoding: s6, isBuf: r5, callback: i4, next: null }, l2 ? l2.next = t5.lastBufferedRequest : t5.bufferedRequest = t5.lastBufferedRequest, t5.bufferedRequestCount += 1;
            } else S3(e5, t5, false, a4, n4, s6, i4);
            return c2;
          })(this, i3, a3, e4, t4, r4)), o2;
        }, A2.prototype.cork = function() {
          this._writableState.corked++;
        }, A2.prototype.uncork = function() {
          var e4 = this._writableState;
          e4.corked && (e4.corked--, e4.writing || e4.corked || e4.bufferProcessing || !e4.bufferedRequest || R(this, e4));
        }, A2.prototype.setDefaultEncoding = function(e4) {
          if ("string" == typeof e4 && (e4 = e4.toLowerCase()), !(["hex", "utf8", "utf-8", "ascii", "binary", "base64", "ucs2", "ucs-2", "utf16le", "utf-16le", "raw"].indexOf((e4 + "").toLowerCase()) > -1)) throw new v(e4);
          return this._writableState.defaultEncoding = e4, this;
        }, Object.defineProperty(A2.prototype, "writableBuffer", { enumerable: false, get: function() {
          return this._writableState && this._writableState.getBuffer();
        } }), Object.defineProperty(A2.prototype, "writableHighWaterMark", { enumerable: false, get: function() {
          return this._writableState.highWaterMark;
        } }), A2.prototype._write = function(e4, t4, r4) {
          r4(new m2("_write()"));
        }, A2.prototype._writev = null, A2.prototype.end = function(e4, t4, r4) {
          var n3 = this._writableState;
          return "function" == typeof e4 ? (r4 = e4, e4 = null, t4 = null) : "function" == typeof t4 && (r4 = t4, t4 = null), null != e4 && this.write(e4, t4), n3.corked && (n3.corked = 1, this.uncork()), n3.ending || (function(e5, t5, r5) {
            t5.ending = true, O(e5, t5), r5 && (t5.finished ? s5.nextTick(r5) : e5.once("finish", r5)), t5.ended = true, e5.writable = false;
          })(this, n3, r4), this;
        }, Object.defineProperty(A2.prototype, "writableLength", { enumerable: false, get: function() {
          return this._writableState.length;
        } }), Object.defineProperty(A2.prototype, "destroyed", { enumerable: false, get: function() {
          return void 0 !== this._writableState && this._writableState.destroyed;
        }, set: function(e4) {
          this._writableState && (this._writableState.destroyed = e4);
        } }), A2.prototype.destroy = h4.destroy, A2.prototype._undestroy = h4.undestroy, A2.prototype._destroy = function(e4, t4) {
          t4(e4);
        };
      }, 828: (e3, t3, r3) => {
        "use strict";
        var n2, s5 = r3(4155);
        function i2(e4, t4, r4) {
          return t4 in e4 ? Object.defineProperty(e4, t4, { value: r4, enumerable: true, configurable: true, writable: true }) : e4[t4] = r4, e4;
        }
        var o = r3(1086), a2 = Symbol("lastResolve"), c = Symbol("lastReject"), u3 = Symbol("error"), l = Symbol("ended"), h4 = Symbol("lastPromise"), p5 = Symbol("handlePromise"), d = Symbol("stream");
        function f3(e4, t4) {
          return { value: e4, done: t4 };
        }
        function m2(e4) {
          var t4 = e4[a2];
          if (null !== t4) {
            var r4 = e4[d].read();
            null !== r4 && (e4[h4] = null, e4[a2] = null, e4[c] = null, t4(f3(r4, false)));
          }
        }
        function w(e4) {
          s5.nextTick(m2, e4);
        }
        var g = Object.getPrototypeOf((function() {
        })), y = Object.setPrototypeOf((i2(n2 = { get stream() {
          return this[d];
        }, next: function() {
          var e4 = this, t4 = this[u3];
          if (null !== t4) return Promise.reject(t4);
          if (this[l]) return Promise.resolve(f3(void 0, true));
          if (this[d].destroyed) return new Promise((function(t5, r5) {
            s5.nextTick((function() {
              e4[u3] ? r5(e4[u3]) : t5(f3(void 0, true));
            }));
          }));
          var r4, n3 = this[h4];
          if (n3) r4 = new Promise(/* @__PURE__ */ (function(e5, t5) {
            return function(r5, n4) {
              e5.then((function() {
                t5[l] ? r5(f3(void 0, true)) : t5[p5](r5, n4);
              }), n4);
            };
          })(n3, this));
          else {
            var i3 = this[d].read();
            if (null !== i3) return Promise.resolve(f3(i3, false));
            r4 = new Promise(this[p5]);
          }
          return this[h4] = r4, r4;
        } }, Symbol.asyncIterator, (function() {
          return this;
        })), i2(n2, "return", (function() {
          var e4 = this;
          return new Promise((function(t4, r4) {
            e4[d].destroy(null, (function(e5) {
              e5 ? r4(e5) : t4(f3(void 0, true));
            }));
          }));
        })), n2), g);
        e3.exports = function(e4) {
          var t4, r4 = Object.create(y, (i2(t4 = {}, d, { value: e4, writable: true }), i2(t4, a2, { value: null, writable: true }), i2(t4, c, { value: null, writable: true }), i2(t4, u3, { value: null, writable: true }), i2(t4, l, { value: e4._readableState.endEmitted, writable: true }), i2(t4, p5, { value: function(e5, t5) {
            var n3 = r4[d].read();
            n3 ? (r4[h4] = null, r4[a2] = null, r4[c] = null, e5(f3(n3, false))) : (r4[a2] = e5, r4[c] = t5);
          }, writable: true }), t4));
          return r4[h4] = null, o(e4, (function(e5) {
            if (e5 && "ERR_STREAM_PREMATURE_CLOSE" !== e5.code) {
              var t5 = r4[c];
              return null !== t5 && (r4[h4] = null, r4[a2] = null, r4[c] = null, t5(e5)), void (r4[u3] = e5);
            }
            var n3 = r4[a2];
            null !== n3 && (r4[h4] = null, r4[a2] = null, r4[c] = null, n3(f3(void 0, true))), r4[l] = true;
          })), e4.on("readable", w.bind(null, r4)), r4;
        };
      }, 9686: (e3, t3, r3) => {
        "use strict";
        function n2(e4, t4) {
          var r4 = Object.keys(e4);
          if (Object.getOwnPropertySymbols) {
            var n3 = Object.getOwnPropertySymbols(e4);
            t4 && (n3 = n3.filter((function(t5) {
              return Object.getOwnPropertyDescriptor(e4, t5).enumerable;
            }))), r4.push.apply(r4, n3);
          }
          return r4;
        }
        function s5(e4, t4, r4) {
          return t4 in e4 ? Object.defineProperty(e4, t4, { value: r4, enumerable: true, configurable: true, writable: true }) : e4[t4] = r4, e4;
        }
        function i2(e4, t4) {
          for (var r4 = 0; r4 < t4.length; r4++) {
            var n3 = t4[r4];
            n3.enumerable = n3.enumerable || false, n3.configurable = true, "value" in n3 && (n3.writable = true), Object.defineProperty(e4, n3.key, n3);
          }
        }
        var o = r3(8764).Buffer, a2 = r3(5575).inspect, c = a2 && a2.custom || "inspect";
        e3.exports = (function() {
          function e4() {
            !(function(e5, t5) {
              if (!(e5 instanceof t5)) throw new TypeError("Cannot call a class as a function");
            })(this, e4), this.head = null, this.tail = null, this.length = 0;
          }
          var t4, r4;
          return t4 = e4, r4 = [{ key: "push", value: function(e5) {
            var t5 = { data: e5, next: null };
            this.length > 0 ? this.tail.next = t5 : this.head = t5, this.tail = t5, ++this.length;
          } }, { key: "unshift", value: function(e5) {
            var t5 = { data: e5, next: this.head };
            0 === this.length && (this.tail = t5), this.head = t5, ++this.length;
          } }, { key: "shift", value: function() {
            if (0 !== this.length) {
              var e5 = this.head.data;
              return 1 === this.length ? this.head = this.tail = null : this.head = this.head.next, --this.length, e5;
            }
          } }, { key: "clear", value: function() {
            this.head = this.tail = null, this.length = 0;
          } }, { key: "join", value: function(e5) {
            if (0 === this.length) return "";
            for (var t5 = this.head, r5 = "" + t5.data; t5 = t5.next; ) r5 += e5 + t5.data;
            return r5;
          } }, { key: "concat", value: function(e5) {
            if (0 === this.length) return o.alloc(0);
            for (var t5, r5, n3, s6 = o.allocUnsafe(e5 >>> 0), i3 = this.head, a3 = 0; i3; ) t5 = i3.data, r5 = s6, n3 = a3, o.prototype.copy.call(t5, r5, n3), a3 += i3.data.length, i3 = i3.next;
            return s6;
          } }, { key: "consume", value: function(e5, t5) {
            var r5;
            return e5 < this.head.data.length ? (r5 = this.head.data.slice(0, e5), this.head.data = this.head.data.slice(e5)) : r5 = e5 === this.head.data.length ? this.shift() : t5 ? this._getString(e5) : this._getBuffer(e5), r5;
          } }, { key: "first", value: function() {
            return this.head.data;
          } }, { key: "_getString", value: function(e5) {
            var t5 = this.head, r5 = 1, n3 = t5.data;
            for (e5 -= n3.length; t5 = t5.next; ) {
              var s6 = t5.data, i3 = e5 > s6.length ? s6.length : e5;
              if (i3 === s6.length ? n3 += s6 : n3 += s6.slice(0, e5), 0 == (e5 -= i3)) {
                i3 === s6.length ? (++r5, t5.next ? this.head = t5.next : this.head = this.tail = null) : (this.head = t5, t5.data = s6.slice(i3));
                break;
              }
              ++r5;
            }
            return this.length -= r5, n3;
          } }, { key: "_getBuffer", value: function(e5) {
            var t5 = o.allocUnsafe(e5), r5 = this.head, n3 = 1;
            for (r5.data.copy(t5), e5 -= r5.data.length; r5 = r5.next; ) {
              var s6 = r5.data, i3 = e5 > s6.length ? s6.length : e5;
              if (s6.copy(t5, t5.length - e5, 0, i3), 0 == (e5 -= i3)) {
                i3 === s6.length ? (++n3, r5.next ? this.head = r5.next : this.head = this.tail = null) : (this.head = r5, r5.data = s6.slice(i3));
                break;
              }
              ++n3;
            }
            return this.length -= n3, t5;
          } }, { key: c, value: function(e5, t5) {
            return a2(this, (function(e6) {
              for (var t6 = 1; t6 < arguments.length; t6++) {
                var r5 = null != arguments[t6] ? arguments[t6] : {};
                t6 % 2 ? n2(Object(r5), true).forEach((function(t7) {
                  s5(e6, t7, r5[t7]);
                })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e6, Object.getOwnPropertyDescriptors(r5)) : n2(Object(r5)).forEach((function(t7) {
                  Object.defineProperty(e6, t7, Object.getOwnPropertyDescriptor(r5, t7));
                }));
              }
              return e6;
            })({}, t5, { depth: 0, customInspect: false }));
          } }], r4 && i2(t4.prototype, r4), e4;
        })();
      }, 1029: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(4155);
        function s5(e4, t4) {
          o(e4, t4), i2(e4);
        }
        function i2(e4) {
          e4._writableState && !e4._writableState.emitClose || e4._readableState && !e4._readableState.emitClose || e4.emit("close");
        }
        function o(e4, t4) {
          e4.emit("error", t4);
        }
        e3.exports = { destroy: function(e4, t4) {
          var r4 = this, a2 = this._readableState && this._readableState.destroyed, c = this._writableState && this._writableState.destroyed;
          return a2 || c ? (t4 ? t4(e4) : e4 && (this._writableState ? this._writableState.errorEmitted || (this._writableState.errorEmitted = true, n2.nextTick(o, this, e4)) : n2.nextTick(o, this, e4)), this) : (this._readableState && (this._readableState.destroyed = true), this._writableState && (this._writableState.destroyed = true), this._destroy(e4 || null, (function(e5) {
            !t4 && e5 ? r4._writableState ? r4._writableState.errorEmitted ? n2.nextTick(i2, r4) : (r4._writableState.errorEmitted = true, n2.nextTick(s5, r4, e5)) : n2.nextTick(s5, r4, e5) : t4 ? (n2.nextTick(i2, r4), t4(e5)) : n2.nextTick(i2, r4);
          })), this);
        }, undestroy: function() {
          this._readableState && (this._readableState.destroyed = false, this._readableState.reading = false, this._readableState.ended = false, this._readableState.endEmitted = false), this._writableState && (this._writableState.destroyed = false, this._writableState.ended = false, this._writableState.ending = false, this._writableState.finalCalled = false, this._writableState.prefinished = false, this._writableState.finished = false, this._writableState.errorEmitted = false);
        }, errorOrDestroy: function(e4, t4) {
          var r4 = e4._readableState, n3 = e4._writableState;
          r4 && r4.autoDestroy || n3 && n3.autoDestroy ? e4.destroy(t4) : e4.emit("error", t4);
        } };
      }, 1086: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8106).q.ERR_STREAM_PREMATURE_CLOSE;
        function s5() {
        }
        e3.exports = function e4(t4, r4, i2) {
          if ("function" == typeof r4) return e4(t4, null, r4);
          r4 || (r4 = {}), i2 = /* @__PURE__ */ (function(e5) {
            var t5 = false;
            return function() {
              if (!t5) {
                t5 = true;
                for (var r5 = arguments.length, n3 = new Array(r5), s6 = 0; s6 < r5; s6++) n3[s6] = arguments[s6];
                e5.apply(this, n3);
              }
            };
          })(i2 || s5);
          var o = r4.readable || false !== r4.readable && t4.readable, a2 = r4.writable || false !== r4.writable && t4.writable, c = function() {
            t4.writable || l();
          }, u3 = t4._writableState && t4._writableState.finished, l = function() {
            a2 = false, u3 = true, o || i2.call(t4);
          }, h4 = t4._readableState && t4._readableState.endEmitted, p5 = function() {
            o = false, h4 = true, a2 || i2.call(t4);
          }, d = function(e5) {
            i2.call(t4, e5);
          }, f3 = function() {
            var e5;
            return o && !h4 ? (t4._readableState && t4._readableState.ended || (e5 = new n2()), i2.call(t4, e5)) : a2 && !u3 ? (t4._writableState && t4._writableState.ended || (e5 = new n2()), i2.call(t4, e5)) : void 0;
          }, m2 = function() {
            t4.req.on("finish", l);
          };
          return (function(e5) {
            return e5.setHeader && "function" == typeof e5.abort;
          })(t4) ? (t4.on("complete", l), t4.on("abort", f3), t4.req ? m2() : t4.on("request", m2)) : a2 && !t4._writableState && (t4.on("end", c), t4.on("close", c)), t4.on("end", p5), t4.on("finish", l), false !== r4.error && t4.on("error", d), t4.on("close", f3), function() {
            t4.removeListener("complete", l), t4.removeListener("abort", f3), t4.removeListener("request", m2), t4.req && t4.req.removeListener("finish", l), t4.removeListener("end", c), t4.removeListener("close", c), t4.removeListener("finish", l), t4.removeListener("end", p5), t4.removeListener("error", d), t4.removeListener("close", f3);
          };
        };
      }, 1265: (e3) => {
        e3.exports = function() {
          throw new Error("Readable.from is not available in the browser");
        };
      }, 6472: (e3, t3, r3) => {
        "use strict";
        var n2, s5 = r3(8106).q, i2 = s5.ERR_MISSING_ARGS, o = s5.ERR_STREAM_DESTROYED;
        function a2(e4) {
          if (e4) throw e4;
        }
        function c(e4, t4, s6, i3) {
          i3 = /* @__PURE__ */ (function(e5) {
            var t5 = false;
            return function() {
              t5 || (t5 = true, e5.apply(void 0, arguments));
            };
          })(i3);
          var a3 = false;
          e4.on("close", (function() {
            a3 = true;
          })), void 0 === n2 && (n2 = r3(1086)), n2(e4, { readable: t4, writable: s6 }, (function(e5) {
            if (e5) return i3(e5);
            a3 = true, i3();
          }));
          var c2 = false;
          return function(t5) {
            if (!a3 && !c2) return c2 = true, (function(e5) {
              return e5.setHeader && "function" == typeof e5.abort;
            })(e4) ? e4.abort() : "function" == typeof e4.destroy ? e4.destroy() : void i3(t5 || new o("pipe"));
          };
        }
        function u3(e4) {
          e4();
        }
        function l(e4, t4) {
          return e4.pipe(t4);
        }
        function h4(e4) {
          return e4.length ? "function" != typeof e4[e4.length - 1] ? a2 : e4.pop() : a2;
        }
        e3.exports = function() {
          for (var e4 = arguments.length, t4 = new Array(e4), r4 = 0; r4 < e4; r4++) t4[r4] = arguments[r4];
          var n3, s6 = h4(t4);
          if (Array.isArray(t4[0]) && (t4 = t4[0]), t4.length < 2) throw new i2("streams");
          var o2 = t4.map((function(e5, r5) {
            var i3 = r5 < t4.length - 1;
            return c(e5, i3, r5 > 0, (function(e6) {
              n3 || (n3 = e6), e6 && o2.forEach(u3), i3 || (o2.forEach(u3), s6(n3));
            }));
          }));
          return t4.reduce(l);
        };
      }, 94: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(8106).q.ERR_INVALID_OPT_VALUE;
        e3.exports = { getHighWaterMark: function(e4, t4, r4, s5) {
          var i2 = (function(e5, t5, r5) {
            return null != e5.highWaterMark ? e5.highWaterMark : t5 ? e5[r5] : null;
          })(t4, s5, r4);
          if (null != i2) {
            if (!isFinite(i2) || Math.floor(i2) !== i2 || i2 < 0) throw new n2(s5 ? r4 : "highWaterMark", i2);
            return Math.floor(i2);
          }
          return e4.objectMode ? 16 : 16384;
        } };
      }, 3194: (e3, t3, r3) => {
        e3.exports = r3(7187).EventEmitter;
      }, 2553: (e3, t3, r3) => {
        "use strict";
        var n2 = r3(9509).Buffer, s5 = n2.isEncoding || function(e4) {
          switch ((e4 = "" + e4) && e4.toLowerCase()) {
            case "hex":
            case "utf8":
            case "utf-8":
            case "ascii":
            case "binary":
            case "base64":
            case "ucs2":
            case "ucs-2":
            case "utf16le":
            case "utf-16le":
            case "raw":
              return true;
            default:
              return false;
          }
        };
        function i2(e4) {
          var t4;
          switch (this.encoding = (function(e5) {
            var t5 = (function(e6) {
              if (!e6) return "utf8";
              for (var t6; ; ) switch (e6) {
                case "utf8":
                case "utf-8":
                  return "utf8";
                case "ucs2":
                case "ucs-2":
                case "utf16le":
                case "utf-16le":
                  return "utf16le";
                case "latin1":
                case "binary":
                  return "latin1";
                case "base64":
                case "ascii":
                case "hex":
                  return e6;
                default:
                  if (t6) return;
                  e6 = ("" + e6).toLowerCase(), t6 = true;
              }
            })(e5);
            if ("string" != typeof t5 && (n2.isEncoding === s5 || !s5(e5))) throw new Error("Unknown encoding: " + e5);
            return t5 || e5;
          })(e4), this.encoding) {
            case "utf16le":
              this.text = c, this.end = u3, t4 = 4;
              break;
            case "utf8":
              this.fillLast = a2, t4 = 4;
              break;
            case "base64":
              this.text = l, this.end = h4, t4 = 3;
              break;
            default:
              return this.write = p5, void (this.end = d);
          }
          this.lastNeed = 0, this.lastTotal = 0, this.lastChar = n2.allocUnsafe(t4);
        }
        function o(e4) {
          return e4 <= 127 ? 0 : e4 >> 5 == 6 ? 2 : e4 >> 4 == 14 ? 3 : e4 >> 3 == 30 ? 4 : e4 >> 6 == 2 ? -1 : -2;
        }
        function a2(e4) {
          var t4 = this.lastTotal - this.lastNeed, r4 = (function(e5, t5, r5) {
            if (128 != (192 & t5[0])) return e5.lastNeed = 0, "\uFFFD";
            if (e5.lastNeed > 1 && t5.length > 1) {
              if (128 != (192 & t5[1])) return e5.lastNeed = 1, "\uFFFD";
              if (e5.lastNeed > 2 && t5.length > 2 && 128 != (192 & t5[2])) return e5.lastNeed = 2, "\uFFFD";
            }
          })(this, e4);
          return void 0 !== r4 ? r4 : this.lastNeed <= e4.length ? (e4.copy(this.lastChar, t4, 0, this.lastNeed), this.lastChar.toString(this.encoding, 0, this.lastTotal)) : (e4.copy(this.lastChar, t4, 0, e4.length), void (this.lastNeed -= e4.length));
        }
        function c(e4, t4) {
          if ((e4.length - t4) % 2 == 0) {
            var r4 = e4.toString("utf16le", t4);
            if (r4) {
              var n3 = r4.charCodeAt(r4.length - 1);
              if (n3 >= 55296 && n3 <= 56319) return this.lastNeed = 2, this.lastTotal = 4, this.lastChar[0] = e4[e4.length - 2], this.lastChar[1] = e4[e4.length - 1], r4.slice(0, -1);
            }
            return r4;
          }
          return this.lastNeed = 1, this.lastTotal = 2, this.lastChar[0] = e4[e4.length - 1], e4.toString("utf16le", t4, e4.length - 1);
        }
        function u3(e4) {
          var t4 = e4 && e4.length ? this.write(e4) : "";
          if (this.lastNeed) {
            var r4 = this.lastTotal - this.lastNeed;
            return t4 + this.lastChar.toString("utf16le", 0, r4);
          }
          return t4;
        }
        function l(e4, t4) {
          var r4 = (e4.length - t4) % 3;
          return 0 === r4 ? e4.toString("base64", t4) : (this.lastNeed = 3 - r4, this.lastTotal = 3, 1 === r4 ? this.lastChar[0] = e4[e4.length - 1] : (this.lastChar[0] = e4[e4.length - 2], this.lastChar[1] = e4[e4.length - 1]), e4.toString("base64", t4, e4.length - r4));
        }
        function h4(e4) {
          var t4 = e4 && e4.length ? this.write(e4) : "";
          return this.lastNeed ? t4 + this.lastChar.toString("base64", 0, 3 - this.lastNeed) : t4;
        }
        function p5(e4) {
          return e4.toString(this.encoding);
        }
        function d(e4) {
          return e4 && e4.length ? this.write(e4) : "";
        }
        t3.s = i2, i2.prototype.write = function(e4) {
          if (0 === e4.length) return "";
          var t4, r4;
          if (this.lastNeed) {
            if (void 0 === (t4 = this.fillLast(e4))) return "";
            r4 = this.lastNeed, this.lastNeed = 0;
          } else r4 = 0;
          return r4 < e4.length ? t4 ? t4 + this.text(e4, r4) : this.text(e4, r4) : t4 || "";
        }, i2.prototype.end = function(e4) {
          var t4 = e4 && e4.length ? this.write(e4) : "";
          return this.lastNeed ? t4 + "\uFFFD" : t4;
        }, i2.prototype.text = function(e4, t4) {
          var r4 = (function(e5, t5, r5) {
            var n4 = t5.length - 1;
            if (n4 < r5) return 0;
            var s6 = o(t5[n4]);
            return s6 >= 0 ? (s6 > 0 && (e5.lastNeed = s6 - 1), s6) : --n4 < r5 || -2 === s6 ? 0 : (s6 = o(t5[n4])) >= 0 ? (s6 > 0 && (e5.lastNeed = s6 - 2), s6) : --n4 < r5 || -2 === s6 ? 0 : (s6 = o(t5[n4])) >= 0 ? (s6 > 0 && (2 === s6 ? s6 = 0 : e5.lastNeed = s6 - 3), s6) : 0;
          })(this, e4, t4);
          if (!this.lastNeed) return e4.toString("utf8", t4);
          this.lastTotal = r4;
          var n3 = e4.length - (r4 - this.lastNeed);
          return e4.copy(this.lastChar, 0, n3), e4.toString("utf8", t4, n3);
        }, i2.prototype.fillLast = function(e4) {
          if (this.lastNeed <= e4.length) return e4.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed), this.lastChar.toString(this.encoding, 0, this.lastTotal);
          e4.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, e4.length), this.lastNeed -= e4.length;
        };
      }, 5457: (e3, t3, r3) => {
        "use strict";
        r3.d(t3, { vw: () => i2, rq: () => s5, EL: () => a2, NY: () => o });
        let n2 = 0;
        const s5 = (e4) => Math.floor(e4 / 25.4 * 72 * 20), i2 = (e4) => Math.floor(72 * e4 * 20), o = () => ++n2, a2 = () => ((e4 = 21) => {
          let t4 = "", r4 = e4;
          for (; r4--; ) t4 += "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64 * Math.random() | 0];
          return t4;
        })().toLowerCase();
      }, 5575: (e3, t3, r3) => {
        "use strict";
        r3.r(t3), r3.d(t3, { convertInchesToTwip: () => n2.vw, convertMillimetersToTwip: () => n2.rq, dateTimeValue: () => s5.sF, decimalNumber: () => s5.vH, eighthPointMeasureValue: () => s5.LV, hexColorValue: () => s5.dg, hpsMeasureValue: () => s5.KR, longHexNumber: () => s5.mA, measurementOrPercentValue: () => s5.aB, percentageValue: () => s5.wp, pointMeasureValue: () => s5.gg, positiveUniversalMeasureValue: () => s5._p, shortHexNumber: () => s5.G0, signedHpsMeasureValue: () => s5.Rg, signedTwipsMeasureValue: () => s5.xb, twipsMeasureValue: () => s5.Jd, uCharHexNumber: () => s5.xD, uniqueId: () => n2.EL, uniqueNumericId: () => n2.NY, universalMeasureValue: () => s5.KC, unsignedDecimalNumber: () => s5.f$ });
        var n2 = r3(5457), s5 = r3(6595);
      }, 6595: (e3, t3, r3) => {
        "use strict";
        r3.d(t3, { G0: () => a2, Jd: () => w, KC: () => u3, KR: () => f3, LV: () => b, Rg: () => m2, _p: () => h4, aB: () => y, dg: () => p5, f$: () => s5, gg: () => x2, mA: () => o, sF: () => v, vH: () => n2, wp: () => g, xD: () => c, xb: () => d });
        const n2 = (e4) => {
          if (isNaN(e4)) throw new Error(`Invalid value '${e4}' specified. Must be an integer.`);
          return Math.floor(e4);
        }, s5 = (e4) => {
          const t4 = n2(e4);
          if (t4 < 0) throw new Error(`Invalid value '${e4}' specified. Must be a positive integer.`);
          return t4;
        }, i2 = (e4, t4) => {
          const r4 = 2 * t4;
          if (e4.length !== r4 || isNaN(Number(`0x${e4}`))) throw new Error(`Invalid hex value '${e4}'. Expected ${r4} digit hex value`);
          return e4;
        }, o = (e4) => i2(e4, 4), a2 = (e4) => i2(e4, 2), c = (e4) => i2(e4, 1), u3 = (e4) => {
          const t4 = e4.slice(-2);
          if (!l.includes(t4)) throw new Error(`Invalid unit '${t4}' specified. Valid units are ${l.join(", ")}`);
          const r4 = e4.substring(0, e4.length - 2);
          if (isNaN(Number(r4))) throw new Error(`Invalid value '${r4}' specified. Expected a valid number.`);
          return `${Number(r4)}${t4}`;
        }, l = ["mm", "cm", "in", "pt", "pc", "pi"], h4 = (e4) => {
          const t4 = u3(e4);
          if (parseFloat(t4) < 0) throw new Error(`Invalid value '${t4}' specified. Expected a positive number.`);
          return t4;
        }, p5 = (e4) => {
          if ("auto" === e4) return e4;
          const t4 = "#" === e4.charAt(0) ? e4.substring(1) : e4;
          return i2(t4, 3);
        }, d = (e4) => "string" == typeof e4 ? u3(e4) : n2(e4), f3 = (e4) => "string" == typeof e4 ? h4(e4) : s5(e4), m2 = (e4) => "string" == typeof e4 ? u3(e4) : n2(e4), w = (e4) => "string" == typeof e4 ? h4(e4) : s5(e4), g = (e4) => {
          if ("%" !== e4.slice(-1)) throw new Error(`Invalid value '${e4}'. Expected percentage value (eg '55%')`);
          const t4 = e4.substring(0, e4.length - 1);
          if (isNaN(Number(t4))) throw new Error(`Invalid value '${t4}' specified. Expected a valid number.`);
          return `${Number(t4)}%`;
        }, y = (e4) => "number" == typeof e4 ? n2(e4) : "%" === e4.slice(-1) ? g(e4) : u3(e4), b = s5, x2 = s5, v = (e4) => e4.toISOString();
      }, 4927: (e3, t3, r3) => {
        function n2(e4) {
          try {
            if (!r3.g.localStorage) return false;
          } catch (e5) {
            return false;
          }
          var t4 = r3.g.localStorage[e4];
          return null != t4 && "true" === String(t4).toLowerCase();
        }
        e3.exports = function(e4, t4) {
          if (n2("noDeprecation")) return e4;
          var r4 = false;
          return function() {
            if (!r4) {
              if (n2("throwDeprecation")) throw new Error(t4);
              n2("traceDeprecation") ? console.trace(t4) : console.warn(t4), r4 = true;
            }
            return e4.apply(this, arguments);
          };
        };
      }, 9881: (e3) => {
        e3.exports = { isArray: function(e4) {
          return Array.isArray ? Array.isArray(e4) : "[object Array]" === Object.prototype.toString.call(e4);
        } };
      }, 7888: (e3, t3, r3) => {
        var n2 = r3(1229), s5 = r3(1388), i2 = r3(6501), o = r3(4673);
        e3.exports = { xml2js: n2, xml2json: s5, js2xml: i2, json2xml: o };
      }, 6501: (e3, t3, r3) => {
        var n2, s5, i2 = r3(4740), o = r3(9881).isArray;
        function a2(e4, t4, r4) {
          return (!r4 && e4.spaces ? "\n" : "") + Array(t4 + 1).join(e4.spaces);
        }
        function c(e4, t4, r4) {
          if (t4.ignoreAttributes) return "";
          "attributesFn" in t4 && (e4 = t4.attributesFn(e4, s5, n2));
          var i3, o2, c2, u4, l2 = [];
          for (i3 in e4) e4.hasOwnProperty(i3) && null !== e4[i3] && void 0 !== e4[i3] && (u4 = t4.noQuotesForNativeAttributes && "string" != typeof e4[i3] ? "" : '"', o2 = (o2 = "" + e4[i3]).replace(/"/g, "&quot;"), c2 = "attributeNameFn" in t4 ? t4.attributeNameFn(i3, o2, s5, n2) : i3, l2.push(t4.spaces && t4.indentAttributes ? a2(t4, r4 + 1, false) : " "), l2.push(c2 + "=" + u4 + ("attributeValueFn" in t4 ? t4.attributeValueFn(o2, i3, s5, n2) : o2) + u4));
          return e4 && Object.keys(e4).length && t4.spaces && t4.indentAttributes && l2.push(a2(t4, r4, false)), l2.join("");
        }
        function u3(e4, t4, r4) {
          return n2 = e4, s5 = "xml", t4.ignoreDeclaration ? "" : "<?xml" + c(e4[t4.attributesKey], t4, r4) + "?>";
        }
        function l(e4, t4, r4) {
          if (t4.ignoreInstruction) return "";
          var i3;
          for (i3 in e4) if (e4.hasOwnProperty(i3)) break;
          var o2 = "instructionNameFn" in t4 ? t4.instructionNameFn(i3, e4[i3], s5, n2) : i3;
          if ("object" == typeof e4[i3]) return n2 = e4, s5 = o2, "<?" + o2 + c(e4[i3][t4.attributesKey], t4, r4) + "?>";
          var a3 = e4[i3] ? e4[i3] : "";
          return "instructionFn" in t4 && (a3 = t4.instructionFn(a3, i3, s5, n2)), "<?" + o2 + (a3 ? " " + a3 : "") + "?>";
        }
        function h4(e4, t4) {
          return t4.ignoreComment ? "" : "<!--" + ("commentFn" in t4 ? t4.commentFn(e4, s5, n2) : e4) + "-->";
        }
        function p5(e4, t4) {
          return t4.ignoreCdata ? "" : "<![CDATA[" + ("cdataFn" in t4 ? t4.cdataFn(e4, s5, n2) : e4.replace("]]>", "]]]]><![CDATA[>")) + "]]>";
        }
        function d(e4, t4) {
          return t4.ignoreDoctype ? "" : "<!DOCTYPE " + ("doctypeFn" in t4 ? t4.doctypeFn(e4, s5, n2) : e4) + ">";
        }
        function f3(e4, t4) {
          return t4.ignoreText ? "" : (e4 = (e4 = (e4 = "" + e4).replace(/&amp;/g, "&")).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"), "textFn" in t4 ? t4.textFn(e4, s5, n2) : e4);
        }
        function m2(e4, t4, r4, i3) {
          return e4.reduce((function(e5, o2) {
            var u4 = a2(t4, r4, i3 && !e5);
            switch (o2.type) {
              case "element":
                return e5 + u4 + (function(e6, t5, r5) {
                  n2 = e6, s5 = e6.name;
                  var i4 = [], o3 = "elementNameFn" in t5 ? t5.elementNameFn(e6.name, e6) : e6.name;
                  i4.push("<" + o3), e6[t5.attributesKey] && i4.push(c(e6[t5.attributesKey], t5, r5));
                  var a3 = e6[t5.elementsKey] && e6[t5.elementsKey].length || e6[t5.attributesKey] && "preserve" === e6[t5.attributesKey]["xml:space"];
                  return a3 || (a3 = "fullTagEmptyElementFn" in t5 ? t5.fullTagEmptyElementFn(e6.name, e6) : t5.fullTagEmptyElement), a3 ? (i4.push(">"), e6[t5.elementsKey] && e6[t5.elementsKey].length && (i4.push(m2(e6[t5.elementsKey], t5, r5 + 1)), n2 = e6, s5 = e6.name), i4.push(t5.spaces && (function(e7, t6) {
                    var r6;
                    if (e7.elements && e7.elements.length) for (r6 = 0; r6 < e7.elements.length; ++r6) switch (e7.elements[r6][t6.typeKey]) {
                      case "text":
                        if (t6.indentText) return true;
                        break;
                      case "cdata":
                        if (t6.indentCdata) return true;
                        break;
                      case "instruction":
                        if (t6.indentInstruction) return true;
                        break;
                      default:
                        return true;
                    }
                    return false;
                  })(e6, t5) ? "\n" + Array(r5 + 1).join(t5.spaces) : ""), i4.push("</" + o3 + ">")) : i4.push("/>"), i4.join("");
                })(o2, t4, r4);
              case "comment":
                return e5 + u4 + h4(o2[t4.commentKey], t4);
              case "doctype":
                return e5 + u4 + d(o2[t4.doctypeKey], t4);
              case "cdata":
                return e5 + (t4.indentCdata ? u4 : "") + p5(o2[t4.cdataKey], t4);
              case "text":
                return e5 + (t4.indentText ? u4 : "") + f3(o2[t4.textKey], t4);
              case "instruction":
                var w2 = {};
                return w2[o2[t4.nameKey]] = o2[t4.attributesKey] ? o2 : o2[t4.instructionKey], e5 + (t4.indentInstruction ? u4 : "") + l(w2, t4, r4);
            }
          }), "");
        }
        function w(e4, t4, r4) {
          var n3;
          for (n3 in e4) if (e4.hasOwnProperty(n3)) switch (n3) {
            case t4.parentKey:
            case t4.attributesKey:
              break;
            case t4.textKey:
              if (t4.indentText || r4) return true;
              break;
            case t4.cdataKey:
              if (t4.indentCdata || r4) return true;
              break;
            case t4.instructionKey:
              if (t4.indentInstruction || r4) return true;
              break;
            case t4.doctypeKey:
            case t4.commentKey:
            default:
              return true;
          }
          return false;
        }
        function g(e4, t4, r4, i3, o2) {
          n2 = e4, s5 = t4;
          var u4 = "elementNameFn" in r4 ? r4.elementNameFn(t4, e4) : t4;
          if (null == e4 || "" === e4) return "fullTagEmptyElementFn" in r4 && r4.fullTagEmptyElementFn(t4, e4) || r4.fullTagEmptyElement ? "<" + u4 + "></" + u4 + ">" : "<" + u4 + "/>";
          var l2 = [];
          if (t4) {
            if (l2.push("<" + u4), "object" != typeof e4) return l2.push(">" + f3(e4, r4) + "</" + u4 + ">"), l2.join("");
            e4[r4.attributesKey] && l2.push(c(e4[r4.attributesKey], r4, i3));
            var h5 = w(e4, r4, true) || e4[r4.attributesKey] && "preserve" === e4[r4.attributesKey]["xml:space"];
            if (h5 || (h5 = "fullTagEmptyElementFn" in r4 ? r4.fullTagEmptyElementFn(t4, e4) : r4.fullTagEmptyElement), !h5) return l2.push("/>"), l2.join("");
            l2.push(">");
          }
          return l2.push(y(e4, r4, i3 + 1, false)), n2 = e4, s5 = t4, t4 && l2.push((o2 ? a2(r4, i3, false) : "") + "</" + u4 + ">"), l2.join("");
        }
        function y(e4, t4, r4, n3) {
          var s6, i3, c2, m3 = [];
          for (i3 in e4) if (e4.hasOwnProperty(i3)) for (c2 = o(e4[i3]) ? e4[i3] : [e4[i3]], s6 = 0; s6 < c2.length; ++s6) {
            switch (i3) {
              case t4.declarationKey:
                m3.push(u3(c2[s6], t4, r4));
                break;
              case t4.instructionKey:
                m3.push((t4.indentInstruction ? a2(t4, r4, n3) : "") + l(c2[s6], t4, r4));
                break;
              case t4.attributesKey:
              case t4.parentKey:
                break;
              case t4.textKey:
                m3.push((t4.indentText ? a2(t4, r4, n3) : "") + f3(c2[s6], t4));
                break;
              case t4.cdataKey:
                m3.push((t4.indentCdata ? a2(t4, r4, n3) : "") + p5(c2[s6], t4));
                break;
              case t4.doctypeKey:
                m3.push(a2(t4, r4, n3) + d(c2[s6], t4));
                break;
              case t4.commentKey:
                m3.push(a2(t4, r4, n3) + h4(c2[s6], t4));
                break;
              default:
                m3.push(a2(t4, r4, n3) + g(c2[s6], i3, t4, r4, w(c2[s6], t4)));
            }
            n3 = n3 && !m3.length;
          }
          return m3.join("");
        }
        e3.exports = function(e4, t4) {
          t4 = (function(e5) {
            var t5 = i2.copyOptions(e5);
            return i2.ensureFlagExists("ignoreDeclaration", t5), i2.ensureFlagExists("ignoreInstruction", t5), i2.ensureFlagExists("ignoreAttributes", t5), i2.ensureFlagExists("ignoreText", t5), i2.ensureFlagExists("ignoreComment", t5), i2.ensureFlagExists("ignoreCdata", t5), i2.ensureFlagExists("ignoreDoctype", t5), i2.ensureFlagExists("compact", t5), i2.ensureFlagExists("indentText", t5), i2.ensureFlagExists("indentCdata", t5), i2.ensureFlagExists("indentAttributes", t5), i2.ensureFlagExists("indentInstruction", t5), i2.ensureFlagExists("fullTagEmptyElement", t5), i2.ensureFlagExists("noQuotesForNativeAttributes", t5), i2.ensureSpacesExists(t5), "number" == typeof t5.spaces && (t5.spaces = Array(t5.spaces + 1).join(" ")), i2.ensureKeyExists("declaration", t5), i2.ensureKeyExists("instruction", t5), i2.ensureKeyExists("attributes", t5), i2.ensureKeyExists("text", t5), i2.ensureKeyExists("comment", t5), i2.ensureKeyExists("cdata", t5), i2.ensureKeyExists("doctype", t5), i2.ensureKeyExists("type", t5), i2.ensureKeyExists("name", t5), i2.ensureKeyExists("elements", t5), i2.checkFnExists("doctype", t5), i2.checkFnExists("instruction", t5), i2.checkFnExists("cdata", t5), i2.checkFnExists("comment", t5), i2.checkFnExists("text", t5), i2.checkFnExists("instructionName", t5), i2.checkFnExists("elementName", t5), i2.checkFnExists("attributeName", t5), i2.checkFnExists("attributeValue", t5), i2.checkFnExists("attributes", t5), i2.checkFnExists("fullTagEmptyElement", t5), t5;
          })(t4);
          var r4 = [];
          return n2 = e4, s5 = "_root_", t4.compact ? r4.push(y(e4, t4, 0, true)) : (e4[t4.declarationKey] && r4.push(u3(e4[t4.declarationKey], t4, 0)), e4[t4.elementsKey] && e4[t4.elementsKey].length && r4.push(m2(e4[t4.elementsKey], t4, 0, !r4.length))), r4.join("");
        };
      }, 4673: (e3, t3, r3) => {
        var n2 = r3(6501);
        e3.exports = function(e4, t4) {
          e4 instanceof Buffer && (e4 = e4.toString());
          var r4 = null;
          if ("string" == typeof e4) try {
            r4 = JSON.parse(e4);
          } catch (e5) {
            throw new Error("The JSON structure is invalid");
          }
          else r4 = e4;
          return n2(r4, t4);
        };
      }, 4740: (e3, t3, r3) => {
        var n2 = r3(9881).isArray;
        e3.exports = { copyOptions: function(e4) {
          var t4, r4 = {};
          for (t4 in e4) e4.hasOwnProperty(t4) && (r4[t4] = e4[t4]);
          return r4;
        }, ensureFlagExists: function(e4, t4) {
          e4 in t4 && "boolean" == typeof t4[e4] || (t4[e4] = false);
        }, ensureSpacesExists: function(e4) {
          (!("spaces" in e4) || "number" != typeof e4.spaces && "string" != typeof e4.spaces) && (e4.spaces = 0);
        }, ensureAlwaysArrayExists: function(e4) {
          "alwaysArray" in e4 && ("boolean" == typeof e4.alwaysArray || n2(e4.alwaysArray)) || (e4.alwaysArray = false);
        }, ensureKeyExists: function(e4, t4) {
          e4 + "Key" in t4 && "string" == typeof t4[e4 + "Key"] || (t4[e4 + "Key"] = t4.compact ? "_" + e4 : e4);
        }, checkFnExists: function(e4, t4) {
          return e4 + "Fn" in t4;
        } };
      }, 1229: (e3, t3, r3) => {
        var n2, s5, i2 = r3(6099), o = r3(4740), a2 = r3(9881).isArray;
        function c(e4) {
          var t4 = Number(e4);
          if (!isNaN(t4)) return t4;
          var r4 = e4.toLowerCase();
          return "true" === r4 || "false" !== r4 && e4;
        }
        function u3(e4, t4) {
          var r4;
          if (n2.compact) {
            if (!s5[n2[e4 + "Key"]] && (a2(n2.alwaysArray) ? -1 !== n2.alwaysArray.indexOf(n2[e4 + "Key"]) : n2.alwaysArray) && (s5[n2[e4 + "Key"]] = []), s5[n2[e4 + "Key"]] && !a2(s5[n2[e4 + "Key"]]) && (s5[n2[e4 + "Key"]] = [s5[n2[e4 + "Key"]]]), e4 + "Fn" in n2 && "string" == typeof t4 && (t4 = n2[e4 + "Fn"](t4, s5)), "instruction" === e4 && ("instructionFn" in n2 || "instructionNameFn" in n2)) {
              for (r4 in t4) if (t4.hasOwnProperty(r4)) if ("instructionFn" in n2) t4[r4] = n2.instructionFn(t4[r4], r4, s5);
              else {
                var i3 = t4[r4];
                delete t4[r4], t4[n2.instructionNameFn(r4, i3, s5)] = i3;
              }
            }
            a2(s5[n2[e4 + "Key"]]) ? s5[n2[e4 + "Key"]].push(t4) : s5[n2[e4 + "Key"]] = t4;
          } else {
            s5[n2.elementsKey] || (s5[n2.elementsKey] = []);
            var o2 = {};
            if (o2[n2.typeKey] = e4, "instruction" === e4) {
              for (r4 in t4) if (t4.hasOwnProperty(r4)) break;
              o2[n2.nameKey] = "instructionNameFn" in n2 ? n2.instructionNameFn(r4, t4, s5) : r4, n2.instructionHasAttributes ? (o2[n2.attributesKey] = t4[r4][n2.attributesKey], "instructionFn" in n2 && (o2[n2.attributesKey] = n2.instructionFn(o2[n2.attributesKey], r4, s5))) : ("instructionFn" in n2 && (t4[r4] = n2.instructionFn(t4[r4], r4, s5)), o2[n2.instructionKey] = t4[r4]);
            } else e4 + "Fn" in n2 && (t4 = n2[e4 + "Fn"](t4, s5)), o2[n2[e4 + "Key"]] = t4;
            n2.addParent && (o2[n2.parentKey] = s5), s5[n2.elementsKey].push(o2);
          }
        }
        function l(e4) {
          var t4;
          if ("attributesFn" in n2 && e4 && (e4 = n2.attributesFn(e4, s5)), (n2.trim || "attributeValueFn" in n2 || "attributeNameFn" in n2 || n2.nativeTypeAttributes) && e4) {
            for (t4 in e4) if (e4.hasOwnProperty(t4) && (n2.trim && (e4[t4] = e4[t4].trim()), n2.nativeTypeAttributes && (e4[t4] = c(e4[t4])), "attributeValueFn" in n2 && (e4[t4] = n2.attributeValueFn(e4[t4], t4, s5)), "attributeNameFn" in n2)) {
              var r4 = e4[t4];
              delete e4[t4], e4[n2.attributeNameFn(t4, e4[t4], s5)] = r4;
            }
          }
          return e4;
        }
        function h4(e4) {
          var t4 = {};
          if (e4.body && ("xml" === e4.name.toLowerCase() || n2.instructionHasAttributes)) {
            for (var r4, i3 = /([\w:-]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|(\w+))\s*/g; null !== (r4 = i3.exec(e4.body)); ) t4[r4[1]] = r4[2] || r4[3] || r4[4];
            t4 = l(t4);
          }
          if ("xml" === e4.name.toLowerCase()) {
            if (n2.ignoreDeclaration) return;
            s5[n2.declarationKey] = {}, Object.keys(t4).length && (s5[n2.declarationKey][n2.attributesKey] = t4), n2.addParent && (s5[n2.declarationKey][n2.parentKey] = s5);
          } else {
            if (n2.ignoreInstruction) return;
            n2.trim && (e4.body = e4.body.trim());
            var o2 = {};
            n2.instructionHasAttributes && Object.keys(t4).length ? (o2[e4.name] = {}, o2[e4.name][n2.attributesKey] = t4) : o2[e4.name] = e4.body, u3("instruction", o2);
          }
        }
        function p5(e4, t4) {
          var r4;
          if ("object" == typeof e4 && (t4 = e4.attributes, e4 = e4.name), t4 = l(t4), "elementNameFn" in n2 && (e4 = n2.elementNameFn(e4, s5)), n2.compact) {
            var i3;
            if (r4 = {}, !n2.ignoreAttributes && t4 && Object.keys(t4).length) for (i3 in r4[n2.attributesKey] = {}, t4) t4.hasOwnProperty(i3) && (r4[n2.attributesKey][i3] = t4[i3]);
            !(e4 in s5) && (a2(n2.alwaysArray) ? -1 !== n2.alwaysArray.indexOf(e4) : n2.alwaysArray) && (s5[e4] = []), s5[e4] && !a2(s5[e4]) && (s5[e4] = [s5[e4]]), a2(s5[e4]) ? s5[e4].push(r4) : s5[e4] = r4;
          } else s5[n2.elementsKey] || (s5[n2.elementsKey] = []), (r4 = {})[n2.typeKey] = "element", r4[n2.nameKey] = e4, !n2.ignoreAttributes && t4 && Object.keys(t4).length && (r4[n2.attributesKey] = t4), n2.alwaysChildren && (r4[n2.elementsKey] = []), s5[n2.elementsKey].push(r4);
          r4[n2.parentKey] = s5, s5 = r4;
        }
        function d(e4) {
          n2.ignoreText || (e4.trim() || n2.captureSpacesBetweenElements) && (n2.trim && (e4 = e4.trim()), n2.nativeType && (e4 = c(e4)), n2.sanitize && (e4 = e4.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")), u3("text", e4));
        }
        function f3(e4) {
          n2.ignoreComment || (n2.trim && (e4 = e4.trim()), u3("comment", e4));
        }
        function m2(e4) {
          var t4 = s5[n2.parentKey];
          n2.addParent || delete s5[n2.parentKey], s5 = t4;
        }
        function w(e4) {
          n2.ignoreCdata || (n2.trim && (e4 = e4.trim()), u3("cdata", e4));
        }
        function g(e4) {
          n2.ignoreDoctype || (e4 = e4.replace(/^ /, ""), n2.trim && (e4 = e4.trim()), u3("doctype", e4));
        }
        function y(e4) {
          e4.note = e4;
        }
        e3.exports = function(e4, t4) {
          var r4 = i2.parser(true, {}), a3 = {};
          if (s5 = a3, n2 = (function(e5) {
            return n2 = o.copyOptions(e5), o.ensureFlagExists("ignoreDeclaration", n2), o.ensureFlagExists("ignoreInstruction", n2), o.ensureFlagExists("ignoreAttributes", n2), o.ensureFlagExists("ignoreText", n2), o.ensureFlagExists("ignoreComment", n2), o.ensureFlagExists("ignoreCdata", n2), o.ensureFlagExists("ignoreDoctype", n2), o.ensureFlagExists("compact", n2), o.ensureFlagExists("alwaysChildren", n2), o.ensureFlagExists("addParent", n2), o.ensureFlagExists("trim", n2), o.ensureFlagExists("nativeType", n2), o.ensureFlagExists("nativeTypeAttributes", n2), o.ensureFlagExists("sanitize", n2), o.ensureFlagExists("instructionHasAttributes", n2), o.ensureFlagExists("captureSpacesBetweenElements", n2), o.ensureAlwaysArrayExists(n2), o.ensureKeyExists("declaration", n2), o.ensureKeyExists("instruction", n2), o.ensureKeyExists("attributes", n2), o.ensureKeyExists("text", n2), o.ensureKeyExists("comment", n2), o.ensureKeyExists("cdata", n2), o.ensureKeyExists("doctype", n2), o.ensureKeyExists("type", n2), o.ensureKeyExists("name", n2), o.ensureKeyExists("elements", n2), o.ensureKeyExists("parent", n2), o.checkFnExists("doctype", n2), o.checkFnExists("instruction", n2), o.checkFnExists("cdata", n2), o.checkFnExists("comment", n2), o.checkFnExists("text", n2), o.checkFnExists("instructionName", n2), o.checkFnExists("elementName", n2), o.checkFnExists("attributeName", n2), o.checkFnExists("attributeValue", n2), o.checkFnExists("attributes", n2), n2;
          })(t4), r4.opt = { strictEntities: true }, r4.onopentag = p5, r4.ontext = d, r4.oncomment = f3, r4.onclosetag = m2, r4.onerror = y, r4.oncdata = w, r4.ondoctype = g, r4.onprocessinginstruction = h4, r4.write(e4).close(), a3[n2.elementsKey]) {
            var c2 = a3[n2.elementsKey];
            delete a3[n2.elementsKey], a3[n2.elementsKey] = c2, delete a3.text;
          }
          return a3;
        };
      }, 1388: (e3, t3, r3) => {
        var n2 = r3(4740), s5 = r3(1229);
        e3.exports = function(e4, t4) {
          var r4, i2, o;
          return r4 = (function(e5) {
            var t5 = n2.copyOptions(e5);
            return n2.ensureSpacesExists(t5), t5;
          })(t4), i2 = s5(e4, r4), o = "compact" in r4 && r4.compact ? "_parent" : "parent", ("addParent" in r4 && r4.addParent ? JSON.stringify(i2, (function(e5, t5) {
            return e5 === o ? "_" : t5;
          }), r4.spaces) : JSON.stringify(i2, null, r4.spaces)).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
        };
      }, 255: (e3) => {
        var t3 = { "&": "&amp;", '"': "&quot;", "'": "&apos;", "<": "&lt;", ">": "&gt;" };
        e3.exports = function(e4) {
          return e4 && e4.replace ? e4.replace(/([&"<>'])/g, (function(e5, r3) {
            return t3[r3];
          })) : e4;
        };
      }, 3479: (e3, t3, r3) => {
        var n2 = r3(4155), s5 = r3(255), i2 = r3(2830).Stream;
        function o(e4, t4, r4) {
          r4 = r4 || 0;
          var n3, i3, a3 = (n3 = t4, new Array(r4 || 0).join(n3 || "")), c = e4;
          if ("object" == typeof e4 && (c = e4[i3 = Object.keys(e4)[0]]) && c._elem) return c._elem.name = i3, c._elem.icount = r4, c._elem.indent = t4, c._elem.indents = a3, c._elem.interrupt = c, c._elem;
          var u3, l = [], h4 = [];
          function p5(e5) {
            Object.keys(e5).forEach((function(t5) {
              l.push((function(e6, t6) {
                return e6 + '="' + s5(t6) + '"';
              })(t5, e5[t5]));
            }));
          }
          switch (typeof c) {
            case "object":
              if (null === c) break;
              c._attr && p5(c._attr), c._cdata && h4.push(("<![CDATA[" + c._cdata).replace(/\]\]>/g, "]]]]><![CDATA[>") + "]]>"), c.forEach && (u3 = false, h4.push(""), c.forEach((function(e5) {
                "object" == typeof e5 ? "_attr" == Object.keys(e5)[0] ? p5(e5._attr) : h4.push(o(e5, t4, r4 + 1)) : (h4.pop(), u3 = true, h4.push(s5(e5)));
              })), u3 || h4.push(""));
              break;
            default:
              h4.push(s5(c));
          }
          return { name: i3, interrupt: false, attributes: l, content: h4, icount: r4, indents: a3, indent: t4 };
        }
        function a2(e4, t4, r4) {
          if ("object" != typeof t4) return e4(false, t4);
          var n3 = t4.interrupt ? 1 : t4.content.length;
          function s6() {
            for (; t4.content.length; ) {
              var s7 = t4.content.shift();
              if (void 0 !== s7) {
                if (i3(s7)) return;
                a2(e4, s7);
              }
            }
            e4(false, (n3 > 1 ? t4.indents : "") + (t4.name ? "</" + t4.name + ">" : "") + (t4.indent && !r4 ? "\n" : "")), r4 && r4();
          }
          function i3(t5) {
            return !!t5.interrupt && (t5.interrupt.append = e4, t5.interrupt.end = s6, t5.interrupt = false, e4(true), true);
          }
          if (e4(false, t4.indents + (t4.name ? "<" + t4.name : "") + (t4.attributes.length ? " " + t4.attributes.join(" ") : "") + (n3 ? t4.name ? ">" : "" : t4.name ? "/>" : "") + (t4.indent && n3 > 1 ? "\n" : "")), !n3) return e4(false, t4.indent ? "\n" : "");
          i3(t4) || s6();
        }
        e3.exports = function(e4, t4) {
          "object" != typeof t4 && (t4 = { indent: t4 });
          var r4, s6, c = t4.stream ? new i2() : null, u3 = "", l = false, h4 = t4.indent ? true === t4.indent ? "    " : t4.indent : "", p5 = true;
          function d(e5) {
            p5 ? n2.nextTick(e5) : e5();
          }
          function f3(e5, t5) {
            if (void 0 !== t5 && (u3 += t5), e5 && !l && (c = c || new i2(), l = true), e5 && l) {
              var r5 = u3;
              d((function() {
                c.emit("data", r5);
              })), u3 = "";
            }
          }
          function m2(e5, t5) {
            a2(f3, o(e5, h4, h4 ? 1 : 0), t5);
          }
          function w() {
            if (c) {
              var e5 = u3;
              d((function() {
                c.emit("data", e5), c.emit("end"), c.readable = false, c.emit("close");
              }));
            }
          }
          return d((function() {
            p5 = false;
          })), t4.declaration && (s6 = { version: "1.0", encoding: (r4 = t4.declaration).encoding || "UTF-8" }, r4.standalone && (s6.standalone = r4.standalone), m2({ "?xml": { _attr: s6 } }), u3 = u3.replace("/>", "?>")), e4 && e4.forEach ? e4.forEach((function(t5, r5) {
            var n3;
            r5 + 1 === e4.length && (n3 = w), m2(t5, n3);
          })) : m2(e4, w), c ? (c.readable = true, c) : u3;
        }, e3.exports.element = e3.exports.Element = function() {
          var e4 = Array.prototype.slice.call(arguments), t4 = { _elem: o(e4), push: function(e5) {
            if (!this.append) throw new Error("not assigned to a parent!");
            var t5 = this, r4 = this._elem.indent;
            a2(this.append, o(e5, r4, this._elem.icount + (r4 ? 1 : 0)), (function() {
              t5.append(true);
            }));
          }, close: function(e5) {
            void 0 !== e5 && this.push(e5), this.end && this.end();
          } };
          return t4;
        };
      } }, t2 = {};
      function r2(n2) {
        var s5 = t2[n2];
        if (void 0 !== s5) return s5.exports;
        var i2 = t2[n2] = { exports: {} };
        return e2[n2].call(i2.exports, i2, i2.exports, r2), i2.exports;
      }
      r2.d = (e3, t3) => {
        for (var n2 in t3) r2.o(t3, n2) && !r2.o(e3, n2) && Object.defineProperty(e3, n2, { enumerable: true, get: t3[n2] });
      }, r2.g = (function() {
        if ("object" == typeof globalThis) return globalThis;
        try {
          return this || new Function("return this")();
        } catch (e3) {
          if ("object" == typeof window) return window;
        }
      })(), r2.o = (e3, t3) => Object.prototype.hasOwnProperty.call(e3, t3), r2.r = (e3) => {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e3, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e3, "__esModule", { value: true });
      };
      var n = {};
      return (() => {
        "use strict";
        r2.r(n), r2.d(n, { AbstractNumbering: () => Ji, Alignment: () => D2, AlignmentAttributes: () => L, AlignmentType: () => m2, Attributes: () => a2, BaseEmphasisMark: () => Q, BaseXmlComponent: () => e3, Body: () => un, Bookmark: () => Or, BookmarkEnd: () => Lr, BookmarkStart: () => kr, Border: () => B, BorderElement: () => P, BorderStyle: () => w, Column: () => hn, ColumnAttributes: () => ln, ColumnBreak: () => pr, Columns: () => jr, ColumnsAttributes: () => zr, Comment: () => cr2, CommentRangeEnd: () => or, CommentRangeStart: () => ir, CommentReference: () => ar, Comments: () => ur, ConcreteHyperlink: () => Sr, ConcreteNumbering: () => to, DeletedTextRun: () => na, DocGridAttributes: () => Wr, Document: () => Ho, DocumentAttributes: () => pn, DocumentBackground: () => fn, DocumentBackgroundAttributes: () => dn, DocumentDefaults: () => Bo, DocumentGrid: () => Kr, DocumentGridType: () => Pe, DotEmphasisMark: () => te, Drawing: () => Xt, DropCapType: () => vn, EMPTY_OBJECT: () => t3, EmphasisMark: () => ee, EmphasisMarkType: () => E, ExternalHyperlink: () => Rr, File: () => Ho, FootNoteReferenceRunAttributes: () => qo, FootNotes: () => ki, Footer: () => Xo, FooterWrapper: () => _i, FootnoteReference: () => Zo, FootnoteReferenceRun: () => Yo, FrameAnchorType: () => _n, FrameProperties: () => An, FramePropertiesAttributes: () => Tn, FrameWrap: () => En, GridSpan: () => ks, Header: () => $o, HeaderFooterReference: () => Hr, HeaderFooterReferenceType: () => Le, HeaderFooterType: () => De, HeaderWrapper: () => Fi, HeadingLevel: () => Se, HeightRule: () => $s, HorizontalPosition: () => Ze, HorizontalPositionAlign: () => y, HorizontalPositionRelativeFrom: () => xe, HpsMeasureElement: () => R, HyperlinkType: () => Oe, IgnoreIfEmptyXmlComponent: () => i2, ImageRun: () => qt, ImportDotx: () => wa, ImportedRootElementAttributes: () => p5, ImportedXmlComponent: () => h4, Indent: () => H, InitializableXmlComponent: () => f3, InsertedTextRun: () => Jo, InternalHyperlink: () => Ir, LeaderType: () => Re, Level: () => Xi, LevelBase: () => $i, LevelForOverride: () => qi, LevelFormat: () => Ui, LevelOverride: () => no, LevelSuffix: () => Hi, LineNumberAttributes: () => Gr, LineNumberRestartFormat: () => Fe, LineNumberType: () => Vr, LineRuleType: () => Ae, Math: () => Rn, MathAccentCharacter: () => Pn, MathAngledBrackets: () => bs, MathBase: () => Fn, MathCurlyBrackets: () => ys, MathDegree: () => ns, MathDenominator: () => On, MathFraction: () => Ln, MathFunction: () => ls, MathFunctionName: () => cs, MathFunctionProperties: () => us, MathIntegral: () => $n, MathLimitLocation: () => Mn, MathNAryProperties: () => Wn, MathNumerator: () => kn, MathPreSubSuperScript: () => ts, MathPreSubSuperScriptProperties: () => es, MathRadical: () => as, MathRadicalProperties: () => os10, MathRoundBrackets: () => ws, MathRun: () => Cn, MathSquareBrackets: () => gs, MathSubScript: () => Yn, MathSubScriptElement: () => Kn, MathSubScriptProperties: () => Zn, MathSubSuperScript: () => Qn, MathSubSuperScriptProperties: () => Jn, MathSum: () => Vn, MathSuperScript: () => qn, MathSuperScriptElement: () => Gn, MathSuperScriptProperties: () => Xn, Media: () => Bi, NumberFormat: () => x2, NumberProperties: () => xr, NumberValueElement: () => C, Numbering: () => oo, OnOffElement: () => I, OutlineLevel: () => Dr, OverlapType: () => Gs, Packer: () => pa, PageBorderDisplay: () => Be, PageBorderOffsetFrom: () => Me, PageBorderZOrder: () => Ue, PageBorders: () => Xr, PageBreak: () => hr2, PageBreakBefore: () => dr, PageMargin: () => Zr, PageMarginAttributes: () => qr, PageNumber: () => A2, PageNumberSeparator: () => He, PageNumberType: () => Jr, PageNumberTypeAttributes: () => Yr, PageOrientation: () => ze, PageReference: () => Fr, PageSize: () => en, PageSizeAttributes: () => Qr, PageTextDirection: () => rn, PageTextDirectionType: () => je, Paragraph: () => In, ParagraphProperties: () => Sn, ParagraphPropertiesDefaults: () => Po, PrettifyType: () => la, RelativeHorizontalPosition: () => Ws, RelativeVerticalPosition: () => Ks, Run: () => me, RunFonts: () => ae, RunProperties: () => pe, RunPropertiesChange: () => de, RunPropertiesDefaults: () => Fo, SectionProperties: () => cn, SectionType: () => We, SectionTypeAttributes: () => nn, SequentialIdentifier: () => Yt, Shading: () => Y, ShadingType: () => _2, SimpleField: () => er, SimpleMailMergeField: () => tr3, SimplePos: () => Ve, SpaceType: () => v, Spacing: () => mr, StringContainer: () => k, StringEnumValueElement: () => O, StringValueElement: () => N, Style: () => wr, StyleForCharacter: () => bo, StyleForParagraph: () => yo, StyleLevel: () => Vo, Styles: () => Do, SymbolRun: () => be, TDirection: () => Fs, Tab: () => Jt, TabAttributes: () => yr, TabStop: () => gr, TabStopItem: () => br3, TabStopPosition: () => Ne, TabStopType: () => Ie, Table: () => ei, TableAnchorType: () => js, TableBorders: () => zs, TableCell: () => Ms, TableCellBorders: () => Cs, TableFloatOptionsAttributes: () => qs, TableFloatProperties: () => Zs, TableLayout: () => Js, TableLayoutType: () => Vs, TableOfContents: () => Go, TableProperties: () => Qs, TableRow: () => si, TableRowHeight: () => ri, TableRowHeightAttributes: () => ti, TableRowProperties: () => ni, TableWidthElement: () => Rs, TextDirection: () => Ss, TextRun: () => we, TextWrappingSide: () => Ee, TextWrappingType: () => _e, ThematicBreak: () => M, Type: () => sn, Underline: () => he2, UnderlineType: () => T2, VerticalAlign: () => ke, VerticalAlignAttributes: () => Br, VerticalAlignElement: () => Mr, VerticalMerge: () => Ds, VerticalMergeType: () => As, VerticalPosition: () => Je, VerticalPositionAlign: () => b, VerticalPositionRelativeFrom: () => ve, WORKAROUND: () => zo, WORKAROUND2: () => Mi, WORKAROUND3: () => d, WORKAROUND4: () => rs, WidthType: () => Es, WrapNone: () => Rt, WrapSquare: () => Ct, WrapTight: () => kt, WrapTopAndBottom: () => Dt, XmlAttributeComponent: () => o, XmlComponent: () => s5, convertInchesToTwip: () => ga.convertInchesToTwip, convertMillimetersToTwip: () => ga.convertMillimetersToTwip, convertToXmlComponent: () => u3, dateTimeValue: () => ga.dateTimeValue, decimalNumber: () => ga.decimalNumber, eighthPointMeasureValue: () => ga.eighthPointMeasureValue, hexColorValue: () => ga.hexColorValue, hpsMeasureValue: () => ga.hpsMeasureValue, longHexNumber: () => ga.longHexNumber, measurementOrPercentValue: () => ga.measurementOrPercentValue, percentageValue: () => ga.percentageValue, pointMeasureValue: () => ga.pointMeasureValue, positiveUniversalMeasureValue: () => ga.positiveUniversalMeasureValue, sectionMarginDefaults: () => on, sectionPageSizeDefaults: () => an, shortHexNumber: () => ga.shortHexNumber, signedHpsMeasureValue: () => ga.signedHpsMeasureValue, signedTwipsMeasureValue: () => ga.signedTwipsMeasureValue, twipsMeasureValue: () => ga.twipsMeasureValue, uCharHexNumber: () => ga.uCharHexNumber, uniqueId: () => ga.uniqueId, uniqueNumericId: () => ga.uniqueNumericId, universalMeasureValue: () => ga.universalMeasureValue, unsignedDecimalNumber: () => ga.unsignedDecimalNumber });
        class e3 {
          constructor(e4) {
            this.rootKey = e4;
          }
        }
        const t3 = Object.seal({});
        class s5 extends e3 {
          constructor(e4) {
            super(e4), this.root = new Array();
          }
          prepForXml(r3) {
            var n2;
            const s6 = this.root.map(((t4) => t4 instanceof e3 ? t4.prepForXml(r3) : t4)).filter(((e4) => void 0 !== e4));
            return { [this.rootKey]: s6.length ? 1 === s6.length && (null === (n2 = s6[0]) || void 0 === n2 ? void 0 : n2._attr) ? s6[0] : s6 : t3 };
          }
          addChildElement(e4) {
            return this.root.push(e4), this;
          }
        }
        class i2 extends s5 {
          prepForXml(e4) {
            const t4 = super.prepForXml(e4);
            if (t4 && ("object" != typeof t4[this.rootKey] || Object.keys(t4[this.rootKey]).length)) return t4;
          }
        }
        class o extends e3 {
          constructor(e4) {
            super("_attr"), this.root = e4;
          }
          prepForXml(e4) {
            const t4 = {};
            return Object.keys(this.root).forEach(((e5) => {
              const r3 = this.root[e5];
              if (void 0 !== r3) {
                const n2 = this.xmlKeys && this.xmlKeys[e5] || e5;
                t4[n2] = r3;
              }
            })), { _attr: t4 };
          }
        }
        class a2 extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { val: "w:val", color: "w:color", fill: "w:fill", space: "w:space", sz: "w:sz", type: "w:type", rsidR: "w:rsidR", rsidRPr: "w:rsidRPr", rsidSect: "w:rsidSect", w: "w:w", h: "w:h", top: "w:top", right: "w:right", bottom: "w:bottom", left: "w:left", header: "w:header", footer: "w:footer", gutter: "w:gutter", linePitch: "w:linePitch", pos: "w:pos" };
          }
        }
        var c = r2(7888);
        const u3 = (e4) => {
          switch (e4.type) {
            case void 0:
            case "element":
              const t4 = new h4(e4.name, e4.attributes), r3 = e4.elements || [];
              for (const e5 of r3) {
                const r4 = u3(e5);
                void 0 !== r4 && t4.push(r4);
              }
              return t4;
            case "text":
              return e4.text;
            default:
              return;
          }
        };
        class l extends o {
        }
        class h4 extends s5 {
          static fromXmlString(e4) {
            const t4 = (0, c.xml2js)(e4, { compact: false });
            return u3(t4);
          }
          constructor(e4, t4) {
            super(e4), t4 && this.root.push(new l(t4));
          }
          push(e4) {
            this.root.push(e4);
          }
        }
        class p5 extends s5 {
          constructor(e4) {
            super(""), this._attr = e4;
          }
          prepForXml(e4) {
            return { _attr: this._attr };
          }
        }
        const d = "";
        class f3 extends s5 {
          constructor(e4, t4) {
            super(e4), t4 && (this.root = t4.root);
          }
        }
        var m2, w, g, y, b, x2, v, _2, E, T2, A2, S3 = r2(6595);
        class I extends s5 {
          constructor(e4, t4 = true) {
            super(e4), true !== t4 && this.root.push(new a2({ val: t4 }));
          }
        }
        class R extends s5 {
          constructor(e4, t4) {
            super(e4), this.root.push(new a2({ val: (0, S3.KR)(t4) }));
          }
        }
        class N extends s5 {
          constructor(e4, t4) {
            super(e4), this.root.push(new a2({ val: t4 }));
          }
        }
        class C extends s5 {
          constructor(e4, t4) {
            super(e4), this.root.push(new a2({ val: t4 }));
          }
        }
        class O extends s5 {
          constructor(e4, t4) {
            super(e4), this.root.push(new a2({ val: t4 }));
          }
        }
        class k extends s5 {
          constructor(e4, t4) {
            super(e4), this.root.push(t4);
          }
        }
        !(function(e4) {
          e4.START = "start", e4.CENTER = "center", e4.END = "end", e4.BOTH = "both", e4.MEDIUM_KASHIDA = "mediumKashida", e4.DISTRIBUTE = "distribute", e4.NUM_TAB = "numTab", e4.HIGH_KASHIDA = "highKashida", e4.LOW_KASHIDA = "lowKashida", e4.THAI_DISTRIBUTE = "thaiDistribute", e4.LEFT = "left", e4.RIGHT = "right", e4.JUSTIFIED = "both";
        })(m2 || (m2 = {}));
        class L extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { val: "w:val" };
          }
        }
        class D2 extends s5 {
          constructor(e4) {
            super("w:jc"), this.root.push(new L({ val: e4 }));
          }
        }
        class P extends s5 {
          constructor(e4, { color: t4, size: r3, space: n2, style: s6 }) {
            super(e4), this.root.push(new F2({ style: s6, color: void 0 === t4 ? void 0 : (0, S3.dg)(t4), size: void 0 === r3 ? void 0 : (0, S3.LV)(r3), space: void 0 === n2 ? void 0 : (0, S3.gg)(n2) }));
          }
        }
        class F2 extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { style: "w:val", color: "w:color", size: "w:sz", space: "w:space" };
          }
        }
        !(function(e4) {
          e4.SINGLE = "single", e4.DASH_DOT_STROKED = "dashDotStroked", e4.DASHED = "dashed", e4.DASH_SMALL_GAP = "dashSmallGap", e4.DOT_DASH = "dotDash", e4.DOT_DOT_DASH = "dotDotDash", e4.DOTTED = "dotted", e4.DOUBLE = "double", e4.DOUBLE_WAVE = "doubleWave", e4.INSET = "inset", e4.NIL = "nil", e4.NONE = "none", e4.OUTSET = "outset", e4.THICK = "thick", e4.THICK_THIN_LARGE_GAP = "thickThinLargeGap", e4.THICK_THIN_MEDIUM_GAP = "thickThinMediumGap", e4.THICK_THIN_SMALL_GAP = "thickThinSmallGap", e4.THIN_THICK_LARGE_GAP = "thinThickLargeGap", e4.THIN_THICK_MEDIUM_GAP = "thinThickMediumGap", e4.THIN_THICK_SMALL_GAP = "thinThickSmallGap", e4.THIN_THICK_THIN_LARGE_GAP = "thinThickThinLargeGap", e4.THIN_THICK_THIN_MEDIUM_GAP = "thinThickThinMediumGap", e4.THIN_THICK_THIN_SMALL_GAP = "thinThickThinSmallGap", e4.THREE_D_EMBOSS = "threeDEmboss", e4.THREE_D_ENGRAVE = "threeDEngrave", e4.TRIPLE = "triple", e4.WAVE = "wave";
        })(w || (w = {}));
        class B extends i2 {
          constructor(e4) {
            super("w:pBdr"), e4.top && this.root.push(new P("w:top", e4.top)), e4.bottom && this.root.push(new P("w:bottom", e4.bottom)), e4.left && this.root.push(new P("w:left", e4.left)), e4.right && this.root.push(new P("w:right", e4.right));
          }
        }
        class M extends s5 {
          constructor() {
            super("w:pBdr");
            const e4 = new P("w:bottom", { color: "auto", space: 1, style: w.SINGLE, size: 6 });
            this.root.push(e4);
          }
        }
        class U extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { start: "w:start", end: "w:end", left: "w:left", right: "w:right", hanging: "w:hanging", firstLine: "w:firstLine" };
          }
        }
        class H extends s5 {
          constructor({ start: e4, end: t4, left: r3, right: n2, hanging: s6, firstLine: i3 }) {
            super("w:ind"), this.root.push(new U({ start: void 0 === e4 ? void 0 : (0, S3.xb)(e4), end: void 0 === t4 ? void 0 : (0, S3.xb)(t4), left: void 0 === r3 ? void 0 : (0, S3.xb)(r3), right: void 0 === n2 ? void 0 : (0, S3.xb)(n2), hanging: void 0 === s6 ? void 0 : (0, S3.Jd)(s6), firstLine: void 0 === i3 ? void 0 : (0, S3.Jd)(i3) }));
          }
        }
        class z2 extends s5 {
          constructor() {
            super("w:br");
          }
        }
        !(function(e4) {
          e4.BEGIN = "begin", e4.END = "end", e4.SEPARATE = "separate";
        })(g || (g = {}));
        class j extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { type: "w:fldCharType", dirty: "w:dirty" };
          }
        }
        class W extends s5 {
          constructor(e4) {
            super("w:fldChar"), this.root.push(new j({ type: g.BEGIN, dirty: e4 }));
          }
        }
        class K extends s5 {
          constructor(e4) {
            super("w:fldChar"), this.root.push(new j({ type: g.SEPARATE, dirty: e4 }));
          }
        }
        class G extends s5 {
          constructor(e4) {
            super("w:fldChar"), this.root.push(new j({ type: g.END, dirty: e4 }));
          }
        }
        !(function(e4) {
          e4.CENTER = "center", e4.INSIDE = "inside", e4.LEFT = "left", e4.OUTSIDE = "outside", e4.RIGHT = "right";
        })(y || (y = {})), (function(e4) {
          e4.BOTTOM = "bottom", e4.CENTER = "center", e4.INSIDE = "inside", e4.OUTSIDE = "outside", e4.TOP = "top";
        })(b || (b = {})), (function(e4) {
          e4.DECIMAL = "decimal", e4.UPPER_ROMAN = "upperRoman", e4.LOWER_ROMAN = "lowerRoman", e4.UPPER_LETTER = "upperLetter", e4.LOWER_LETTER = "lowerLetter", e4.ORDINAL = "ordinal", e4.CARDINAL_TEXT = "cardinalText", e4.ORDINAL_TEXT = "ordinalText", e4.HEX = "hex", e4.CHICAGO = "chicago", e4.IDEOGRAPH_DIGITAL = "ideographDigital", e4.JAPANESE_COUNTING = "japaneseCounting", e4.AIUEO = "aiueo", e4.IROHA = "iroha", e4.DECIMAL_FULL_WIDTH = "decimalFullWidth", e4.DECIMAL_HALF_WIDTH = "decimalHalfWidth", e4.JAPANESE_LEGAL = "japaneseLegal", e4.JAPANESE_DIGITAL_TEN_THOUSAND = "japaneseDigitalTenThousand", e4.DECIMAL_ENCLOSED_CIRCLE = "decimalEnclosedCircle", e4.DECIMAL_FULL_WIDTH_2 = "decimalFullWidth2", e4.AIUEO_FULL_WIDTH = "aiueoFullWidth", e4.IROHA_FULL_WIDTH = "irohaFullWidth", e4.DECIMAL_ZERO = "decimalZero", e4.BULLET = "bullet", e4.GANADA = "ganada", e4.CHOSUNG = "chosung", e4.DECIMAL_ENCLOSED_FULL_STOP = "decimalEnclosedFullstop", e4.DECIMAL_ENCLOSED_PAREN = "decimalEnclosedParen", e4.DECIMAL_ENCLOSED_CIRCLE_CHINESE = "decimalEnclosedCircleChinese", e4.IDEOGRAPH_ENCLOSED_CIRCLE = "ideographEnclosedCircle", e4.IDEOGRAPH_TRADITIONAL = "ideographTraditional", e4.IDEOGRAPH_ZODIAC = "ideographZodiac", e4.IDEOGRAPH_ZODIAC_TRADITIONAL = "ideographZodiacTraditional", e4.TAIWANESE_COUNTING = "taiwaneseCounting", e4.IDEOGRAPH_LEGAL_TRADITIONAL = "ideographLegalTraditional", e4.TAIWANESE_COUNTING_THOUSAND = "taiwaneseCountingThousand", e4.TAIWANESE_DIGITAL = "taiwaneseDigital", e4.CHINESE_COUNTING = "chineseCounting", e4.CHINESE_LEGAL_SIMPLIFIED = "chineseLegalSimplified", e4.CHINESE_COUNTING_TEN_THOUSAND = "chineseCountingThousand", e4.KOREAN_DIGITAL = "koreanDigital", e4.KOREAN_COUNTING = "koreanCounting", e4.KOREAN_LEGAL = "koreanLegal", e4.KOREAN_DIGITAL_2 = "koreanDigital2", e4.VIETNAMESE_COUNTING = "vietnameseCounting", e4.RUSSIAN_LOWER = "russianLower", e4.RUSSIAN_UPPER = "russianUpper", e4.NONE = "none", e4.NUMBER_IN_DASH = "numberInDash", e4.HEBREW_1 = "hebrew1", e4.HEBREW_2 = "hebrew2", e4.ARABIC_ALPHA = "arabicAlpha", e4.ARABIC_ABJAD = "arabicAbjad", e4.HINDI_VOWELS = "hindiVowels", e4.HINDI_CONSONANTS = "hindiConsonants", e4.HINDI_NUMBERS = "hindiNumbers", e4.HINDI_COUNTING = "hindiCounting", e4.THAI_LETTERS = "thaiLetters", e4.THAI_NUMBERS = "thaiNumbers", e4.THAI_COUNTING = "thaiCounting", e4.BAHT_TEXT = "bahtText", e4.DOLLAR_TEXT = "dollarText";
        })(x2 || (x2 = {})), (function(e4) {
          e4.DEFAULT = "default", e4.PRESERVE = "preserve";
        })(v || (v = {}));
        class V extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { space: "xml:space" };
          }
        }
        class $2 extends s5 {
          constructor() {
            super("w:instrText"), this.root.push(new V({ space: v.PRESERVE })), this.root.push("PAGE");
          }
        }
        class X extends s5 {
          constructor() {
            super("w:instrText"), this.root.push(new V({ space: v.PRESERVE })), this.root.push("NUMPAGES");
          }
        }
        class q2 extends s5 {
          constructor() {
            super("w:instrText"), this.root.push(new V({ space: v.PRESERVE })), this.root.push("SECTIONPAGES");
          }
        }
        class Z2 extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { fill: "w:fill", color: "w:color", type: "w:val" };
          }
        }
        class Y extends s5 {
          constructor({ fill: e4, color: t4, type: r3 }) {
            super("w:shd"), this.root.push(new Z2({ fill: void 0 === e4 ? void 0 : (0, S3.dg)(e4), color: void 0 === t4 ? void 0 : (0, S3.dg)(t4), type: r3 }));
          }
        }
        !(function(e4) {
          e4.CLEAR = "clear", e4.DIAGONAL_CROSS = "diagCross", e4.DIAGONAL_STRIPE = "diagStripe", e4.HORIZONTAL_CROSS = "horzCross", e4.HORIZONTAL_STRIPE = "horzStripe", e4.NIL = "nil", e4.PERCENT_5 = "pct5", e4.PERCENT_10 = "pct10", e4.PERCENT_12 = "pct12", e4.PERCENT_15 = "pct15", e4.PERCENT_20 = "pct20", e4.PERCENT_25 = "pct25", e4.PERCENT_30 = "pct30", e4.PERCENT_35 = "pct35", e4.PERCENT_37 = "pct37", e4.PERCENT_40 = "pct40", e4.PERCENT_45 = "pct45", e4.PERCENT_50 = "pct50", e4.PERCENT_55 = "pct55", e4.PERCENT_60 = "pct60", e4.PERCENT_62 = "pct62", e4.PERCENT_65 = "pct65", e4.PERCENT_70 = "pct70", e4.PERCENT_75 = "pct75", e4.PERCENT_80 = "pct80", e4.PERCENT_85 = "pct85", e4.PERCENT_87 = "pct87", e4.PERCENT_90 = "pct90", e4.PERCENT_95 = "pct95", e4.REVERSE_DIAGONAL_STRIPE = "reverseDiagStripe", e4.SOLID = "solid", e4.THIN_DIAGONAL_CROSS = "thinDiagCross", e4.THIN_DIAGONAL_STRIPE = "thinDiagStripe", e4.THIN_HORIZONTAL_CROSS = "thinHorzCross", e4.THIN_REVERSE_DIAGONAL_STRIPE = "thinReverseDiagStripe", e4.THIN_VERTICAL_STRIPE = "thinVertStripe", e4.VERTICAL_STRIPE = "vertStripe";
        })(_2 || (_2 = {}));
        class J extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { id: "w:id", author: "w:author", date: "w:date" };
          }
        }
        !(function(e4) {
          e4.DOT = "dot";
        })(E || (E = {}));
        class Q extends s5 {
          constructor(e4) {
            super("w:em"), this.root.push(new a2({ val: e4 }));
          }
        }
        class ee extends Q {
          constructor(e4 = E.DOT) {
            super(e4);
          }
        }
        class te extends Q {
          constructor() {
            super(E.DOT);
          }
        }
        class re extends s5 {
          constructor(e4) {
            super("w:spacing"), this.root.push(new a2({ val: (0, S3.xb)(e4) }));
          }
        }
        class ne extends s5 {
          constructor(e4) {
            super("w:color"), this.root.push(new a2({ val: (0, S3.dg)(e4) }));
          }
        }
        class se extends s5 {
          constructor(e4) {
            super("w:highlight"), this.root.push(new a2({ val: e4 }));
          }
        }
        class ie extends s5 {
          constructor(e4) {
            super("w:highlightCs"), this.root.push(new a2({ val: e4 }));
          }
        }
        class oe extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { ascii: "w:ascii", cs: "w:cs", eastAsia: "w:eastAsia", hAnsi: "w:hAnsi", hint: "w:hint" };
          }
        }
        class ae extends s5 {
          constructor(e4, t4) {
            if (super("w:rFonts"), "string" == typeof e4) {
              const r3 = e4;
              this.root.push(new oe({ ascii: r3, cs: r3, eastAsia: r3, hAnsi: r3, hint: t4 }));
            } else {
              const t5 = e4;
              this.root.push(new oe(t5));
            }
          }
        }
        class ce extends s5 {
          constructor(e4) {
            super("w:vertAlign"), this.root.push(new a2({ val: e4 }));
          }
        }
        class ue extends ce {
          constructor() {
            super("superscript");
          }
        }
        class le extends ce {
          constructor() {
            super("subscript");
          }
        }
        !(function(e4) {
          e4.SINGLE = "single", e4.WORDS = "words", e4.DOUBLE = "double", e4.THICK = "thick", e4.DOTTED = "dotted", e4.DOTTEDHEAVY = "dottedHeavy", e4.DASH = "dash", e4.DASHEDHEAVY = "dashedHeavy", e4.DASHLONG = "dashLong", e4.DASHLONGHEAVY = "dashLongHeavy", e4.DOTDASH = "dotDash", e4.DASHDOTHEAVY = "dashDotHeavy", e4.DOTDOTDASH = "dotDotDash", e4.DASHDOTDOTHEAVY = "dashDotDotHeavy", e4.WAVE = "wave", e4.WAVYHEAVY = "wavyHeavy", e4.WAVYDOUBLE = "wavyDouble", e4.NONE = "none";
        })(T2 || (T2 = {}));
        class he2 extends s5 {
          constructor(e4 = T2.SINGLE, t4) {
            super("w:u"), this.root.push(new a2({ val: e4, color: void 0 === t4 ? void 0 : (0, S3.dg)(t4) }));
          }
        }
        class pe extends i2 {
          constructor(e4) {
            var t4, r3;
            if (super("w:rPr"), !e4) return;
            void 0 !== e4.bold && this.push(new I("w:b", e4.bold)), (void 0 === e4.boldComplexScript && void 0 !== e4.bold || e4.boldComplexScript) && this.push(new I("w:bCs", null !== (t4 = e4.boldComplexScript) && void 0 !== t4 ? t4 : e4.bold)), void 0 !== e4.italics && this.push(new I("w:i", e4.italics)), (void 0 === e4.italicsComplexScript && void 0 !== e4.italics || e4.italicsComplexScript) && this.push(new I("w:iCs", null !== (r3 = e4.italicsComplexScript) && void 0 !== r3 ? r3 : e4.italics)), e4.underline && this.push(new he2(e4.underline.type, e4.underline.color)), e4.emphasisMark && this.push(new ee(e4.emphasisMark.type)), e4.color && this.push(new ne(e4.color)), void 0 !== e4.size && this.push(new R("w:sz", e4.size));
            const n2 = void 0 === e4.sizeComplexScript || true === e4.sizeComplexScript ? e4.size : e4.sizeComplexScript;
            n2 && this.push(new R("w:szCs", n2)), void 0 !== e4.rightToLeft && this.push(new I("w:rtl", e4.rightToLeft)), void 0 !== e4.smallCaps ? this.push(new I("w:smallCaps", e4.smallCaps)) : void 0 !== e4.allCaps && this.push(new I("w:caps", e4.allCaps)), void 0 !== e4.strike && this.push(new I("w:strike", e4.strike)), void 0 !== e4.doubleStrike && this.push(new I("w:dstrike", e4.doubleStrike)), e4.subScript && this.push(new le()), e4.superScript && this.push(new ue()), e4.style && this.push(new N("w:rStyle", e4.style)), e4.font && ("string" == typeof e4.font ? this.push(new ae(e4.font)) : "name" in e4.font ? this.push(new ae(e4.font.name, e4.font.hint)) : this.push(new ae(e4.font))), e4.highlight && this.push(new se(e4.highlight));
            const s6 = void 0 === e4.highlightComplexScript || true === e4.highlightComplexScript ? e4.highlight : e4.highlightComplexScript;
            s6 && this.push(new ie(s6)), e4.characterSpacing && this.push(new re(e4.characterSpacing)), void 0 !== e4.emboss && this.push(new I("w:emboss", e4.emboss)), void 0 !== e4.imprint && this.push(new I("w:imprint", e4.imprint)), e4.shading && this.push(new Y(e4.shading)), e4.revision && this.push(new de(e4.revision)), e4.border && this.push(new P("w:bdr", e4.border)), e4.vanish && this.push(new I("w:vanish", e4.vanish)), e4.specVanish && this.push(new I("w:specVanish", e4.vanish)), void 0 !== e4.scale && this.push(new C("w:w", e4.scale));
          }
          push(e4) {
            this.root.push(e4);
          }
        }
        class de extends s5 {
          constructor(e4) {
            super("w:rPrChange"), this.root.push(new J({ id: e4.id, author: e4.author, date: e4.date })), this.addChildElement(new pe(e4));
          }
        }
        class fe extends s5 {
          constructor(e4) {
            var t4;
            return super("w:t"), "string" == typeof e4 ? (this.root.push(new V({ space: v.PRESERVE })), this.root.push(e4), this) : (this.root.push(new V({ space: null !== (t4 = e4.space) && void 0 !== t4 ? t4 : v.DEFAULT })), this.root.push(e4.text), this);
          }
        }
        !(function(e4) {
          e4.CURRENT = "CURRENT", e4.TOTAL_PAGES = "TOTAL_PAGES", e4.TOTAL_PAGES_IN_SECTION = "TOTAL_PAGES_IN_SECTION";
        })(A2 || (A2 = {}));
        class me extends s5 {
          constructor(e4) {
            if (super("w:r"), this.properties = new pe(e4), this.root.push(this.properties), e4.break) for (let t4 = 0; t4 < e4.break; t4++) this.root.push(new z2());
            if (e4.children) for (const t4 of e4.children) if ("string" != typeof t4) this.root.push(t4);
            else switch (t4) {
              case A2.CURRENT:
                this.root.push(new W()), this.root.push(new $2()), this.root.push(new K()), this.root.push(new G());
                break;
              case A2.TOTAL_PAGES:
                this.root.push(new W()), this.root.push(new X()), this.root.push(new K()), this.root.push(new G());
                break;
              case A2.TOTAL_PAGES_IN_SECTION:
                this.root.push(new W()), this.root.push(new q2()), this.root.push(new K()), this.root.push(new G());
                break;
              default:
                this.root.push(new fe(t4));
            }
            else e4.text && this.root.push(new fe(e4.text));
          }
        }
        class we extends me {
          constructor(e4) {
            if ("string" == typeof e4) return super({}), this.root.push(new fe(e4)), this;
            super(e4);
          }
        }
        class ge extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { char: "w:char", symbolfont: "w:font" };
          }
        }
        class ye extends s5 {
          constructor(e4 = "", t4 = "Wingdings") {
            super("w:sym"), this.root.push(new ge({ char: e4, symbolfont: t4 }));
          }
        }
        class be extends me {
          constructor(e4) {
            if ("string" == typeof e4) return super({}), this.root.push(new ye(e4)), this;
            super(e4), this.root.push(new ye(e4.char, e4.symbolfont));
          }
        }
        var xe, ve, _e, Ee, Te, Ae, Se, Ie, Re, Ne, Ce, Oe, ke, Le, De, Pe, Fe, Be, Me, Ue, He, ze, je, We, Ke = r2(5457);
        !(function(e4) {
          e4.CHARACTER = "character", e4.COLUMN = "column", e4.INSIDE_MARGIN = "insideMargin", e4.LEFT_MARGIN = "leftMargin", e4.MARGIN = "margin", e4.OUTSIDE_MARGIN = "outsideMargin", e4.PAGE = "page", e4.RIGHT_MARGIN = "rightMargin";
        })(xe || (xe = {})), (function(e4) {
          e4.BOTTOM_MARGIN = "bottomMargin", e4.INSIDE_MARGIN = "insideMargin", e4.LINE = "line", e4.MARGIN = "margin", e4.OUTSIDE_MARGIN = "outsideMargin", e4.PAGE = "page", e4.PARAGRAPH = "paragraph", e4.TOP_MARGIN = "topMargin";
        })(ve || (ve = {}));
        class Ge extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { x: "x", y: "y" };
          }
        }
        class Ve extends s5 {
          constructor() {
            super("wp:simplePos"), this.root.push(new Ge({ x: 0, y: 0 }));
          }
        }
        class $e extends s5 {
          constructor(e4) {
            super("wp:align"), this.root.push(e4);
          }
        }
        class Xe extends s5 {
          constructor(e4) {
            super("wp:posOffset"), this.root.push(e4.toString());
          }
        }
        class qe extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { relativeFrom: "relativeFrom" };
          }
        }
        class Ze extends s5 {
          constructor(e4) {
            if (super("wp:positionH"), this.root.push(new qe({ relativeFrom: e4.relative || xe.PAGE })), e4.align) this.root.push(new $e(e4.align));
            else {
              if (void 0 === e4.offset) throw new Error("There is no configuration provided for floating position (Align or offset)");
              this.root.push(new Xe(e4.offset));
            }
          }
        }
        class Ye extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { relativeFrom: "relativeFrom" };
          }
        }
        class Je extends s5 {
          constructor(e4) {
            if (super("wp:positionV"), this.root.push(new Ye({ relativeFrom: e4.relative || ve.PAGE })), e4.align) this.root.push(new $e(e4.align));
            else {
              if (void 0 === e4.offset) throw new Error("There is no configuration provided for floating position (Align or offset)");
              this.root.push(new Xe(e4.offset));
            }
          }
        }
        class Qe extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { uri: "uri" };
          }
        }
        class et extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { embed: "r:embed", cstate: "cstate" };
          }
        }
        class tt extends s5 {
          constructor(e4) {
            super("a:blip"), this.root.push(new et({ embed: `rId{${e4.fileName}}`, cstate: "none" }));
          }
        }
        class rt extends s5 {
          constructor() {
            super("a:srcRect");
          }
        }
        class nt extends s5 {
          constructor() {
            super("a:fillRect");
          }
        }
        class st extends s5 {
          constructor() {
            super("a:stretch"), this.root.push(new nt());
          }
        }
        class it extends s5 {
          constructor(e4) {
            super("pic:blipFill"), this.root.push(new tt(e4)), this.root.push(new rt()), this.root.push(new st());
          }
        }
        class ot extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { noChangeAspect: "noChangeAspect", noChangeArrowheads: "noChangeArrowheads" };
          }
        }
        class at extends s5 {
          constructor() {
            super("a:picLocks"), this.root.push(new ot({ noChangeAspect: 1, noChangeArrowheads: 1 }));
          }
        }
        class ct extends s5 {
          constructor() {
            super("pic:cNvPicPr"), this.root.push(new at());
          }
        }
        class ut extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { id: "id", name: "name", descr: "descr" };
          }
        }
        class lt extends s5 {
          constructor() {
            super("pic:cNvPr"), this.root.push(new ut({ id: 0, name: "", descr: "" }));
          }
        }
        class ht extends s5 {
          constructor() {
            super("pic:nvPicPr"), this.root.push(new lt()), this.root.push(new ct());
          }
        }
        class pt extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { xmlns: "xmlns:pic" };
          }
        }
        class dt3 extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { cx: "cx", cy: "cy" };
          }
        }
        class ft extends s5 {
          constructor(e4, t4) {
            super("a:ext"), this.attributes = new dt3({ cx: e4, cy: t4 }), this.root.push(this.attributes);
          }
        }
        class mt extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { x: "x", y: "y" };
          }
        }
        class wt extends s5 {
          constructor() {
            super("a:off"), this.root.push(new mt({ x: 0, y: 0 }));
          }
        }
        class gt extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { flipVertical: "flipV", flipHorizontal: "flipH", rotation: "rot" };
          }
        }
        class yt extends s5 {
          constructor(e4) {
            var t4, r3;
            super("a:xfrm"), this.root.push(new gt({ flipVertical: null === (t4 = e4.flip) || void 0 === t4 ? void 0 : t4.vertical, flipHorizontal: null === (r3 = e4.flip) || void 0 === r3 ? void 0 : r3.horizontal, rotation: e4.rotation })), this.extents = new ft(e4.emus.x, e4.emus.y), this.root.push(new wt()), this.root.push(this.extents);
          }
        }
        class bt extends s5 {
          constructor() {
            super("a:avLst");
          }
        }
        class xt extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { prst: "prst" };
          }
        }
        class vt extends s5 {
          constructor() {
            super("a:prstGeom"), this.root.push(new xt({ prst: "rect" })), this.root.push(new bt());
          }
        }
        class _t extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { bwMode: "bwMode" };
          }
        }
        class Et extends s5 {
          constructor(e4) {
            super("pic:spPr"), this.root.push(new _t({ bwMode: "auto" })), this.form = new yt(e4), this.root.push(this.form), this.root.push(new vt());
          }
        }
        class Tt extends s5 {
          constructor(e4, t4) {
            super("pic:pic"), this.root.push(new pt({ xmlns: "http://schemas.openxmlformats.org/drawingml/2006/picture" })), this.root.push(new ht()), this.root.push(new it(e4)), this.root.push(new Et(t4));
          }
        }
        class At extends s5 {
          constructor(e4, t4) {
            super("a:graphicData"), this.root.push(new Qe({ uri: "http://schemas.openxmlformats.org/drawingml/2006/picture" })), this.pic = new Tt(e4, t4), this.root.push(this.pic);
          }
        }
        class St extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { a: "xmlns:a" };
          }
        }
        class It extends s5 {
          constructor(e4, t4) {
            super("a:graphic"), this.root.push(new St({ a: "http://schemas.openxmlformats.org/drawingml/2006/main" })), this.data = new At(e4, t4), this.root.push(this.data);
          }
        }
        !(function(e4) {
          e4[e4.NONE = 0] = "NONE", e4[e4.SQUARE = 1] = "SQUARE", e4[e4.TIGHT = 2] = "TIGHT", e4[e4.TOP_AND_BOTTOM = 3] = "TOP_AND_BOTTOM";
        })(_e || (_e = {})), (function(e4) {
          e4.BOTH_SIDES = "bothSides", e4.LEFT = "left", e4.RIGHT = "right", e4.LARGEST = "largest";
        })(Ee || (Ee = {}));
        class Rt extends s5 {
          constructor() {
            super("wp:wrapNone");
          }
        }
        class Nt extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { distT: "distT", distB: "distB", distL: "distL", distR: "distR", wrapText: "wrapText" };
          }
        }
        class Ct extends s5 {
          constructor(e4, t4 = { top: 0, bottom: 0, left: 0, right: 0 }) {
            super("wp:wrapSquare"), this.root.push(new Nt({ wrapText: e4.side || Ee.BOTH_SIDES, distT: t4.top, distB: t4.bottom, distL: t4.left, distR: t4.right }));
          }
        }
        class Ot extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { distT: "distT", distB: "distB" };
          }
        }
        class kt extends s5 {
          constructor(e4 = { top: 0, bottom: 0 }) {
            super("wp:wrapTight"), this.root.push(new Ot({ distT: e4.top, distB: e4.bottom }));
          }
        }
        class Lt extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { distT: "distT", distB: "distB" };
          }
        }
        class Dt extends s5 {
          constructor(e4 = { top: 0, bottom: 0 }) {
            super("wp:wrapTopAndBottom"), this.root.push(new Lt({ distT: e4.top, distB: e4.bottom }));
          }
        }
        class Pt extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { id: "id", name: "name", description: "descr", title: "title" };
          }
        }
        class Ft extends s5 {
          constructor({ name: e4, description: t4, title: r3 } = { name: "", description: "", title: "" }) {
            super("wp:docPr"), this.root.push(new Pt({ id: (0, Ke.NY)(), name: e4, description: t4, title: r3 }));
          }
        }
        class Bt extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { b: "b", l: "l", r: "r", t: "t" };
          }
        }
        class Mt extends s5 {
          constructor() {
            super("wp:effectExtent"), this.root.push(new Bt({ b: 0, l: 0, r: 0, t: 0 }));
          }
        }
        class Ut extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { cx: "cx", cy: "cy" };
          }
        }
        class Ht extends s5 {
          constructor(e4, t4) {
            super("wp:extent"), this.attributes = new Ut({ cx: e4, cy: t4 }), this.root.push(this.attributes);
          }
        }
        class zt extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { xmlns: "xmlns:a", noChangeAspect: "noChangeAspect" };
          }
        }
        class jt extends s5 {
          constructor() {
            super("a:graphicFrameLocks"), this.root.push(new zt({ xmlns: "http://schemas.openxmlformats.org/drawingml/2006/main", noChangeAspect: 1 }));
          }
        }
        class Wt extends s5 {
          constructor() {
            super("wp:cNvGraphicFramePr"), this.root.push(new jt());
          }
        }
        class Kt extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { distT: "distT", distB: "distB", distL: "distL", distR: "distR", allowOverlap: "allowOverlap", behindDoc: "behindDoc", layoutInCell: "layoutInCell", locked: "locked", relativeHeight: "relativeHeight", simplePos: "simplePos" };
          }
        }
        class Gt extends s5 {
          constructor(e4, t4, r3) {
            super("wp:anchor");
            const n2 = Object.assign({ allowOverlap: true, behindDocument: false, lockAnchor: false, layoutInCell: true, verticalPosition: {}, horizontalPosition: {} }, r3.floating);
            if (this.root.push(new Kt({ distT: n2.margins && n2.margins.top || 0, distB: n2.margins && n2.margins.bottom || 0, distL: n2.margins && n2.margins.left || 0, distR: n2.margins && n2.margins.right || 0, simplePos: "0", allowOverlap: true === n2.allowOverlap ? "1" : "0", behindDoc: true === n2.behindDocument ? "1" : "0", locked: true === n2.lockAnchor ? "1" : "0", layoutInCell: true === n2.layoutInCell ? "1" : "0", relativeHeight: n2.zIndex ? n2.zIndex : t4.emus.y })), this.root.push(new Ve()), this.root.push(new Ze(n2.horizontalPosition)), this.root.push(new Je(n2.verticalPosition)), this.root.push(new Ht(t4.emus.x, t4.emus.y)), this.root.push(new Mt()), void 0 !== r3.floating && void 0 !== r3.floating.wrap) switch (r3.floating.wrap.type) {
              case _e.SQUARE:
                this.root.push(new Ct(r3.floating.wrap, r3.floating.margins));
                break;
              case _e.TIGHT:
                this.root.push(new kt(r3.floating.margins));
                break;
              case _e.TOP_AND_BOTTOM:
                this.root.push(new Dt(r3.floating.margins));
                break;
              case _e.NONE:
              default:
                this.root.push(new Rt());
            }
            else this.root.push(new Rt());
            this.root.push(new Ft(r3.docProperties)), this.root.push(new Wt()), this.root.push(new It(e4, t4));
          }
        }
        class Vt extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { distT: "distT", distB: "distB", distL: "distL", distR: "distR" };
          }
        }
        class $t extends s5 {
          constructor({ mediaData: e4, transform: t4, docProperties: r3 }) {
            super("wp:inline"), this.root.push(new Vt({ distT: 0, distB: 0, distL: 0, distR: 0 })), this.extent = new Ht(t4.emus.x, t4.emus.y), this.graphic = new It(e4, t4), this.root.push(this.extent), this.root.push(new Mt()), this.root.push(new Ft(r3)), this.root.push(new Wt()), this.root.push(this.graphic);
          }
        }
        class Xt extends s5 {
          constructor(e4, t4 = {}) {
            super("w:drawing"), t4.floating ? this.root.push(new Gt(e4, e4.transformation, t4)) : (this.inline = new $t({ mediaData: e4, transform: e4.transformation, docProperties: t4.docProperties }), this.root.push(this.inline));
          }
        }
        class qt extends me {
          constructor(e4) {
            super({}), this.key = `${(0, Ke.EL)()}.png`;
            const t4 = "string" == typeof e4.data ? this.convertDataURIToBinary(e4.data) : e4.data;
            this.imageData = { stream: t4, fileName: this.key, transformation: { pixels: { x: Math.round(e4.transformation.width), y: Math.round(e4.transformation.height) }, emus: { x: Math.round(9525 * e4.transformation.width), y: Math.round(9525 * e4.transformation.height) }, flip: e4.transformation.flip, rotation: e4.transformation.rotation ? 6e4 * e4.transformation.rotation : void 0 } };
            const r3 = new Xt(this.imageData, { floating: e4.floating, docProperties: e4.altText });
            this.root.push(r3);
          }
          prepForXml(e4) {
            return e4.file.Media.addImage(this.key, this.imageData), super.prepForXml(e4);
          }
          convertDataURIToBinary(e4) {
            if ("function" == typeof atob) {
              const t4 = ";base64,", r3 = e4.indexOf(t4), n2 = -1 === r3 ? 0 : r3 + t4.length;
              return new Uint8Array(atob(e4.substring(n2)).split("").map(((e5) => e5.charCodeAt(0))));
            }
            return new (r2(8764)).Buffer(e4, "base64");
          }
        }
        class Zt extends s5 {
          constructor(e4) {
            super("w:instrText"), this.root.push(new V({ space: v.PRESERVE })), this.root.push(`SEQ ${e4}`);
          }
        }
        class Yt extends me {
          constructor(e4) {
            super({}), this.root.push(new W(true)), this.root.push(new Zt(e4)), this.root.push(new K()), this.root.push(new G());
          }
        }
        class Jt extends s5 {
          constructor() {
            super("w:tab");
          }
        }
        class Qt extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { instr: "w:instr" };
          }
        }
        class er extends s5 {
          constructor(e4, t4) {
            super("w:fldSimple"), this.root.push(new Qt({ instr: e4 })), void 0 !== t4 && this.root.push(new we(t4));
          }
        }
        class tr3 extends er {
          constructor(e4) {
            super(` MERGEFIELD ${e4} `, `\xAB${e4}\xBB`);
          }
        }
        class rr extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { id: "w:id", initials: "w:initials", author: "w:author", date: "w:date" };
          }
        }
        class nr extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { id: "w:id" };
          }
        }
        class sr extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { "xmlns:cx": "xmlns:cx", "xmlns:cx1": "xmlns:cx1", "xmlns:cx2": "xmlns:cx2", "xmlns:cx3": "xmlns:cx3", "xmlns:cx4": "xmlns:cx4", "xmlns:cx5": "xmlns:cx5", "xmlns:cx6": "xmlns:cx6", "xmlns:cx7": "xmlns:cx7", "xmlns:cx8": "xmlns:cx8", "xmlns:mc": "xmlns:mc", "xmlns:aink": "xmlns:aink", "xmlns:am3d": "xmlns:am3d", "xmlns:o": "xmlns:o", "xmlns:r": "xmlns:r", "xmlns:m": "xmlns:m", "xmlns:v": "xmlns:v", "xmlns:wp14": "xmlns:wp14", "xmlns:wp": "xmlns:wp", "xmlns:w10": "xmlns:w10", "xmlns:w": "xmlns:w", "xmlns:w14": "xmlns:w14", "xmlns:w15": "xmlns:w15", "xmlns:w16cex": "xmlns:w16cex", "xmlns:w16cid": "xmlns:w16cid", "xmlns:w16": "xmlns:w16", "xmlns:w16sdtdh": "xmlns:w16sdtdh", "xmlns:w16se": "xmlns:w16se", "xmlns:wpg": "xmlns:wpg", "xmlns:wpi": "xmlns:wpi", "xmlns:wne": "xmlns:wne", "xmlns:wps": "xmlns:wps" };
          }
        }
        class ir extends s5 {
          constructor(e4) {
            super("w:commentRangeStart"), this.root.push(new nr({ id: e4 }));
          }
        }
        class or extends s5 {
          constructor(e4) {
            super("w:commentRangeEnd"), this.root.push(new nr({ id: e4 }));
          }
        }
        class ar extends s5 {
          constructor(e4) {
            super("w:commentReference"), this.root.push(new nr({ id: e4 }));
          }
        }
        class cr2 extends s5 {
          constructor({ id: e4, initials: t4, author: r3, date: n2 = /* @__PURE__ */ new Date(), text: s6 }) {
            super("w:comment"), this.root.push(new rr({ id: e4, initials: t4, author: r3, date: n2.toISOString() })), this.root.push(new In({ children: [new we(s6)] }));
          }
        }
        class ur extends s5 {
          constructor({ children: e4 }) {
            super("w:comments"), this.root.push(new sr({ "xmlns:cx": "http://schemas.microsoft.com/office/drawing/2014/chartex", "xmlns:cx1": "http://schemas.microsoft.com/office/drawing/2015/9/8/chartex", "xmlns:cx2": "http://schemas.microsoft.com/office/drawing/2015/10/21/chartex", "xmlns:cx3": "http://schemas.microsoft.com/office/drawing/2016/5/9/chartex", "xmlns:cx4": "http://schemas.microsoft.com/office/drawing/2016/5/10/chartex", "xmlns:cx5": "http://schemas.microsoft.com/office/drawing/2016/5/11/chartex", "xmlns:cx6": "http://schemas.microsoft.com/office/drawing/2016/5/12/chartex", "xmlns:cx7": "http://schemas.microsoft.com/office/drawing/2016/5/13/chartex", "xmlns:cx8": "http://schemas.microsoft.com/office/drawing/2016/5/14/chartex", "xmlns:mc": "http://schemas.openxmlformats.org/markup-compatibility/2006", "xmlns:aink": "http://schemas.microsoft.com/office/drawing/2016/ink", "xmlns:am3d": "http://schemas.microsoft.com/office/drawing/2017/model3d", "xmlns:o": "urn:schemas-microsoft-com:office:office", "xmlns:r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships", "xmlns:m": "http://schemas.openxmlformats.org/officeDocument/2006/math", "xmlns:v": "urn:schemas-microsoft-com:vml", "xmlns:wp14": "http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing", "xmlns:wp": "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", "xmlns:w10": "urn:schemas-microsoft-com:office:word", "xmlns:w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main", "xmlns:w14": "http://schemas.microsoft.com/office/word/2010/wordml", "xmlns:w15": "http://schemas.microsoft.com/office/word/2012/wordml", "xmlns:w16cex": "http://schemas.microsoft.com/office/word/2018/wordml/cex", "xmlns:w16cid": "http://schemas.microsoft.com/office/word/2016/wordml/cid", "xmlns:w16": "http://schemas.microsoft.com/office/word/2018/wordml", "xmlns:w16sdtdh": "http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash", "xmlns:w16se": "http://schemas.microsoft.com/office/word/2015/wordml/symex", "xmlns:wpg": "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup", "xmlns:wpi": "http://schemas.microsoft.com/office/word/2010/wordprocessingInk", "xmlns:wne": "http://schemas.microsoft.com/office/word/2006/wordml", "xmlns:wps": "http://schemas.microsoft.com/office/word/2010/wordprocessingShape" }));
            for (const t4 of e4) this.root.push(new cr2(t4));
          }
        }
        !(function(e4) {
          e4.COLUMN = "column", e4.PAGE = "page";
        })(Te || (Te = {}));
        class lr extends s5 {
          constructor(e4) {
            super("w:br"), this.root.push(new a2({ type: e4 }));
          }
        }
        class hr2 extends me {
          constructor() {
            super({}), this.root.push(new lr(Te.PAGE));
          }
        }
        class pr extends me {
          constructor() {
            super({}), this.root.push(new lr(Te.COLUMN));
          }
        }
        class dr extends s5 {
          constructor() {
            super("w:pageBreakBefore");
          }
        }
        !(function(e4) {
          e4.AT_LEAST = "atLeast", e4.EXACTLY = "exactly", e4.EXACT = "exact", e4.AUTO = "auto";
        })(Ae || (Ae = {}));
        class fr extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { after: "w:after", before: "w:before", line: "w:line", lineRule: "w:lineRule" };
          }
        }
        class mr extends s5 {
          constructor(e4) {
            super("w:spacing"), this.root.push(new fr(e4));
          }
        }
        !(function(e4) {
          e4.HEADING_1 = "Heading1", e4.HEADING_2 = "Heading2", e4.HEADING_3 = "Heading3", e4.HEADING_4 = "Heading4", e4.HEADING_5 = "Heading5", e4.HEADING_6 = "Heading6", e4.TITLE = "Title";
        })(Se || (Se = {}));
        class wr extends s5 {
          constructor(e4) {
            super("w:pStyle"), this.root.push(new a2({ val: e4 }));
          }
        }
        class gr extends s5 {
          constructor(e4) {
            super("w:tabs");
            for (const t4 of e4) this.root.push(new br3(t4));
          }
        }
        !(function(e4) {
          e4.LEFT = "left", e4.RIGHT = "right", e4.CENTER = "center", e4.BAR = "bar", e4.CLEAR = "clear", e4.DECIMAL = "decimal", e4.END = "end", e4.NUM = "num", e4.START = "start";
        })(Ie || (Ie = {})), (function(e4) {
          e4.DOT = "dot", e4.HYPHEN = "hyphen", e4.MIDDLE_DOT = "middleDot", e4.NONE = "none", e4.UNDERSCORE = "underscore";
        })(Re || (Re = {})), (function(e4) {
          e4[e4.MAX = 9026] = "MAX";
        })(Ne || (Ne = {}));
        class yr extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { val: "w:val", pos: "w:pos", leader: "w:leader" };
          }
        }
        class br3 extends s5 {
          constructor({ type: e4, position: t4, leader: r3 }) {
            super("w:tab"), this.root.push(new yr({ val: e4, pos: t4, leader: r3 }));
          }
        }
        class xr extends s5 {
          constructor(e4, t4) {
            super("w:numPr"), this.root.push(new vr(t4)), this.root.push(new _r(e4));
          }
        }
        class vr extends s5 {
          constructor(e4) {
            if (super("w:ilvl"), e4 > 9) throw new Error("Level cannot be greater than 9. Read more here: https://answers.microsoft.com/en-us/msoffice/forum/all/does-word-support-more-than-9-list-levels/d130fdcd-1781-446d-8c84-c6c79124e4d7");
            this.root.push(new a2({ val: e4 }));
          }
        }
        class _r extends s5 {
          constructor(e4) {
            super("w:numId"), this.root.push(new a2({ val: "string" == typeof e4 ? `{${e4}}` : e4 }));
          }
        }
        class Er extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { id: "Id", type: "Type", target: "Target", targetMode: "TargetMode" };
          }
        }
        !(function(e4) {
          e4.EXTERNAL = "External";
        })(Ce || (Ce = {}));
        class Tr extends s5 {
          constructor(e4, t4, r3, n2) {
            super("Relationship"), this.root.push(new Er({ id: e4, type: t4, target: r3, targetMode: n2 }));
          }
        }
        class Ar extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { id: "r:id", history: "w:history", anchor: "w:anchor" };
          }
        }
        !(function(e4) {
          e4.INTERNAL = "INTERNAL", e4.EXTERNAL = "EXTERNAL";
        })(Oe || (Oe = {}));
        class Sr extends s5 {
          constructor(e4, t4, r3) {
            super("w:hyperlink"), this.linkId = t4;
            const n2 = { history: 1, anchor: r3 || void 0, id: r3 ? void 0 : `rId${this.linkId}` }, s6 = new Ar(n2);
            this.root.push(s6), e4.forEach(((e5) => {
              this.root.push(e5);
            }));
          }
        }
        class Ir extends Sr {
          constructor(e4) {
            super(e4.children, (0, Ke.EL)(), e4.anchor);
          }
        }
        class Rr extends s5 {
          constructor(e4) {
            super("w:externalHyperlink"), this.options = e4;
          }
        }
        class Nr extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { id: "w:id", name: "w:name" };
          }
        }
        class Cr extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { id: "w:id" };
          }
        }
        class Or {
          constructor(e4) {
            const t4 = (0, Ke.NY)();
            this.start = new kr(e4.id, t4), this.children = e4.children, this.end = new Lr(t4);
          }
        }
        class kr extends s5 {
          constructor(e4, t4) {
            super("w:bookmarkStart");
            const r3 = new Nr({ name: e4, id: t4 });
            this.root.push(r3);
          }
        }
        class Lr extends s5 {
          constructor(e4) {
            super("w:bookmarkEnd");
            const t4 = new Cr({ id: e4 });
            this.root.push(t4);
          }
        }
        class Dr extends s5 {
          constructor(e4) {
            super("w:outlineLvl"), this.level = e4, this.root.push(new a2({ val: e4 }));
          }
        }
        class Pr extends s5 {
          constructor(e4, t4 = {}) {
            super("w:instrText"), this.root.push(new V({ space: v.PRESERVE }));
            let r3 = `PAGEREF ${e4}`;
            t4.hyperlink && (r3 = `${r3} \\h`), t4.useRelativePosition && (r3 = `${r3} \\p`), this.root.push(r3);
          }
        }
        class Fr extends me {
          constructor(e4, t4 = {}) {
            super({ children: [new W(true), new Pr(e4, t4), new G()] });
          }
        }
        !(function(e4) {
          e4.BOTTOM = "bottom", e4.CENTER = "center", e4.TOP = "top";
        })(ke || (ke = {}));
        class Br extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { verticalAlign: "w:val" };
          }
        }
        class Mr extends s5 {
          constructor(e4) {
            super("w:vAlign"), this.root.push(new Br({ verticalAlign: e4 }));
          }
        }
        !(function(e4) {
          e4.DEFAULT = "default", e4.FIRST = "first", e4.EVEN = "even";
        })(Le || (Le = {}));
        class Ur extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { type: "w:type", id: "r:id" };
          }
        }
        !(function(e4) {
          e4.HEADER = "w:headerReference", e4.FOOTER = "w:footerReference";
        })(De || (De = {}));
        class Hr extends s5 {
          constructor(e4, t4) {
            super(e4), this.root.push(new Ur({ type: t4.type || Le.DEFAULT, id: `rId${t4.id}` }));
          }
        }
        class zr extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { space: "w:space", count: "w:num", separate: "w:sep", equalWidth: "w:equalWidth" };
          }
        }
        class jr extends s5 {
          constructor({ space: e4, count: t4, separate: r3, equalWidth: n2, children: s6 }) {
            super("w:cols"), this.root.push(new zr({ space: void 0 === e4 ? void 0 : (0, S3.Jd)(e4), count: void 0 === t4 ? void 0 : (0, S3.vH)(t4), separate: r3, equalWidth: n2 })), !n2 && s6 && s6.forEach(((e5) => this.addChildElement(e5)));
          }
        }
        !(function(e4) {
          e4.DEFAULT = "default", e4.LINES = "lines", e4.LINES_AND_CHARS = "linesAndChars", e4.SNAP_TO_CHARS = "snapToChars";
        })(Pe || (Pe = {}));
        class Wr extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { type: "w:type", linePitch: "w:linePitch", charSpace: "w:charSpace" };
          }
        }
        class Kr extends s5 {
          constructor(e4, t4, r3) {
            super("w:docGrid"), this.root.push(new Wr({ type: r3, linePitch: (0, S3.vH)(e4), charSpace: t4 ? (0, S3.vH)(t4) : void 0 }));
          }
        }
        !(function(e4) {
          e4.NEW_PAGE = "newPage", e4.NEW_SECTION = "newSection", e4.CONTINUOUS = "continuous";
        })(Fe || (Fe = {}));
        class Gr extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { countBy: "w:countBy", start: "w:start", restart: "w:restart", distance: "w:distance" };
          }
        }
        class Vr extends s5 {
          constructor({ countBy: e4, start: t4, restart: r3, distance: n2 }) {
            super("w:lnNumType"), this.root.push(new Gr({ countBy: void 0 === e4 ? void 0 : (0, S3.vH)(e4), start: void 0 === t4 ? void 0 : (0, S3.vH)(t4), restart: r3, distance: void 0 === n2 ? void 0 : (0, S3.Jd)(n2) }));
          }
        }
        !(function(e4) {
          e4.ALL_PAGES = "allPages", e4.FIRST_PAGE = "firstPage", e4.NOT_FIRST_PAGE = "notFirstPage";
        })(Be || (Be = {})), (function(e4) {
          e4.PAGE = "page", e4.TEXT = "text";
        })(Me || (Me = {})), (function(e4) {
          e4.BACK = "back", e4.FRONT = "front";
        })(Ue || (Ue = {}));
        class $r extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { display: "w:display", offsetFrom: "w:offsetFrom", zOrder: "w:zOrder" };
          }
        }
        class Xr extends i2 {
          constructor(e4) {
            if (super("w:pgBorders"), !e4) return this;
            e4.pageBorders ? this.root.push(new $r({ display: e4.pageBorders.display, offsetFrom: e4.pageBorders.offsetFrom, zOrder: e4.pageBorders.zOrder })) : this.root.push(new $r({})), e4.pageBorderTop && this.root.push(new P("w:top", e4.pageBorderTop)), e4.pageBorderLeft && this.root.push(new P("w:left", e4.pageBorderLeft)), e4.pageBorderBottom && this.root.push(new P("w:bottom", e4.pageBorderBottom)), e4.pageBorderRight && this.root.push(new P("w:right", e4.pageBorderRight));
          }
        }
        class qr extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { top: "w:top", right: "w:right", bottom: "w:bottom", left: "w:left", header: "w:header", footer: "w:footer", gutter: "w:gutter" };
          }
        }
        class Zr extends s5 {
          constructor(e4, t4, r3, n2, s6, i3, o2) {
            super("w:pgMar"), this.root.push(new qr({ top: (0, S3.xb)(e4), right: (0, S3.Jd)(t4), bottom: (0, S3.xb)(r3), left: (0, S3.Jd)(n2), header: (0, S3.Jd)(s6), footer: (0, S3.Jd)(i3), gutter: (0, S3.Jd)(o2) }));
          }
        }
        !(function(e4) {
          e4.HYPHEN = "hyphen", e4.PERIOD = "period", e4.COLON = "colon", e4.EM_DASH = "emDash", e4.EN_DASH = "endash";
        })(He || (He = {}));
        class Yr extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { start: "w:start", formatType: "w:fmt", separator: "w:chapSep" };
          }
        }
        class Jr extends s5 {
          constructor({ start: e4, formatType: t4, separator: r3 }) {
            super("w:pgNumType"), this.root.push(new Yr({ start: void 0 === e4 ? void 0 : (0, S3.vH)(e4), formatType: t4, separator: r3 }));
          }
        }
        !(function(e4) {
          e4.PORTRAIT = "portrait", e4.LANDSCAPE = "landscape";
        })(ze || (ze = {}));
        class Qr extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { width: "w:w", height: "w:h", orientation: "w:orient" };
          }
        }
        class en extends s5 {
          constructor(e4, t4, r3) {
            super("w:pgSz");
            const n2 = r3 === ze.LANDSCAPE, s6 = (0, S3.Jd)(e4), i3 = (0, S3.Jd)(t4);
            this.root.push(new Qr({ width: n2 ? i3 : s6, height: n2 ? s6 : i3, orientation: r3 }));
          }
        }
        !(function(e4) {
          e4.LEFT_TO_RIGHT_TOP_TO_BOTTOM = "lrTb", e4.TOP_TO_BOTTOM_RIGHT_TO_LEFT = "tbRl";
        })(je || (je = {}));
        class tn extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { val: "w:val" };
          }
        }
        class rn extends s5 {
          constructor(e4) {
            super("w:textDirection"), this.root.push(new tn({ val: e4 }));
          }
        }
        !(function(e4) {
          e4.NEXT_PAGE = "nextPage", e4.NEXT_COLUMN = "nextColumn", e4.CONTINUOUS = "continuous", e4.EVEN_PAGE = "evenPage", e4.ODD_PAGE = "oddPage";
        })(We || (We = {}));
        class nn extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { val: "w:val" };
          }
        }
        class sn extends s5 {
          constructor(e4) {
            super("w:type"), this.root.push(new nn({ val: e4 }));
          }
        }
        const on = { TOP: "1in", RIGHT: "1in", BOTTOM: "1in", LEFT: "1in", HEADER: 708, FOOTER: 708, GUTTER: 0 }, an = { WIDTH: 11906, HEIGHT: 16838, ORIENTATION: ze.PORTRAIT };
        class cn extends s5 {
          constructor({ page: { size: { width: e4 = an.WIDTH, height: t4 = an.HEIGHT, orientation: r3 = an.ORIENTATION } = {}, margin: { top: n2 = on.TOP, right: s6 = on.RIGHT, bottom: i3 = on.BOTTOM, left: o2 = on.LEFT, header: a3 = on.HEADER, footer: c2 = on.FOOTER, gutter: u4 = on.GUTTER } = {}, pageNumbers: l2 = {}, borders: h5, textDirection: p6 } = {}, grid: { linePitch: d2 = 360, charSpace: f4, type: m3 } = {}, headerWrapperGroup: w2 = {}, footerWrapperGroup: g2 = {}, lineNumbers: y2, titlePage: b2, verticalAlign: x3, column: v2, type: _3 } = {}) {
            super("w:sectPr"), this.addHeaderFooterGroup(De.HEADER, w2), this.addHeaderFooterGroup(De.FOOTER, g2), _3 && this.root.push(new sn(_3)), this.root.push(new en(e4, t4, r3)), this.root.push(new Zr(n2, s6, i3, o2, a3, c2, u4)), h5 && this.root.push(new Xr(h5)), y2 && this.root.push(new Vr(y2)), this.root.push(new Jr(l2)), v2 && this.root.push(new jr(v2)), x3 && this.root.push(new Mr(x3)), void 0 !== b2 && this.root.push(new I("w:titlePg", b2)), p6 && this.root.push(new rn(p6)), this.root.push(new Kr(d2, f4, m3));
          }
          addHeaderFooterGroup(e4, t4) {
            t4.default && this.root.push(new Hr(e4, { type: Le.DEFAULT, id: t4.default.View.ReferenceId })), t4.first && this.root.push(new Hr(e4, { type: Le.FIRST, id: t4.first.View.ReferenceId })), t4.even && this.root.push(new Hr(e4, { type: Le.EVEN, id: t4.even.View.ReferenceId }));
          }
        }
        class un extends s5 {
          constructor() {
            super("w:body"), this.sections = [];
          }
          addSection(e4) {
            const t4 = this.sections.pop();
            this.root.push(this.createSectionParagraph(t4)), this.sections.push(new cn(e4));
          }
          prepForXml(e4) {
            return 1 === this.sections.length && (this.root.splice(0, 1), this.root.push(this.sections.pop())), super.prepForXml(e4);
          }
          push(e4) {
            this.root.push(e4);
          }
          createSectionParagraph(e4) {
            const t4 = new In({}), r3 = new Sn({});
            return r3.push(e4), t4.addChildElement(r3), t4;
          }
        }
        class ln extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { width: "w:w", space: "w:space" };
          }
        }
        class hn extends s5 {
          constructor({ width: e4, space: t4 }) {
            super("w:col"), this.root.push(new ln({ width: (0, S3.Jd)(e4), space: void 0 === t4 ? void 0 : (0, S3.Jd)(t4) }));
          }
        }
        class pn extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { wpc: "xmlns:wpc", mc: "xmlns:mc", o: "xmlns:o", r: "xmlns:r", m: "xmlns:m", v: "xmlns:v", wp14: "xmlns:wp14", wp: "xmlns:wp", w10: "xmlns:w10", w: "xmlns:w", w14: "xmlns:w14", w15: "xmlns:w15", wpg: "xmlns:wpg", wpi: "xmlns:wpi", wne: "xmlns:wne", wps: "xmlns:wps", Ignorable: "mc:Ignorable", cp: "xmlns:cp", dc: "xmlns:dc", dcterms: "xmlns:dcterms", dcmitype: "xmlns:dcmitype", xsi: "xmlns:xsi", type: "xsi:type", cx: "xmlns:cx", cx1: "xmlns:cx1", cx2: "xmlns:cx2", cx3: "xmlns:cx3", cx4: "xmlns:cx4", cx5: "xmlns:cx5", cx6: "xmlns:cx6", cx7: "xmlns:cx7", cx8: "xmlns:cx8", aink: "xmlns:aink", am3d: "xmlns:am3d", w16cex: "xmlns:w16cex", w16cid: "xmlns:w16cid", w16: "xmlns:w16", w16sdtdh: "xmlns:w16sdtdh", w16se: "xmlns:w16se" };
          }
        }
        class dn extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { color: "w:color", themeColor: "w:themeColor", themeShade: "w:themeShade", themeTint: "w:themeTint" };
          }
        }
        class fn extends s5 {
          constructor(e4) {
            super("w:background"), this.root.push(new dn({ color: void 0 === e4.color ? void 0 : (0, S3.dg)(e4.color), themeColor: e4.themeColor, themeShade: void 0 === e4.themeShade ? void 0 : (0, S3.xD)(e4.themeShade), themeTint: void 0 === e4.themeTint ? void 0 : (0, S3.xD)(e4.themeTint) }));
          }
        }
        class mn extends s5 {
          constructor(e4) {
            super("w:document"), this.root.push(new pn({ wpc: "http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas", mc: "http://schemas.openxmlformats.org/markup-compatibility/2006", o: "urn:schemas-microsoft-com:office:office", r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships", m: "http://schemas.openxmlformats.org/officeDocument/2006/math", v: "urn:schemas-microsoft-com:vml", wp14: "http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing", wp: "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", w10: "urn:schemas-microsoft-com:office:word", w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main", w14: "http://schemas.microsoft.com/office/word/2010/wordml", w15: "http://schemas.microsoft.com/office/word/2012/wordml", wpg: "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup", wpi: "http://schemas.microsoft.com/office/word/2010/wordprocessingInk", wne: "http://schemas.microsoft.com/office/word/2006/wordml", wps: "http://schemas.microsoft.com/office/word/2010/wordprocessingShape", cx: "http://schemas.microsoft.com/office/drawing/2014/chartex", cx1: "http://schemas.microsoft.com/office/drawing/2015/9/8/chartex", cx2: "http://schemas.microsoft.com/office/drawing/2015/10/21/chartex", cx3: "http://schemas.microsoft.com/office/drawing/2016/5/9/chartex", cx4: "http://schemas.microsoft.com/office/drawing/2016/5/10/chartex", cx5: "http://schemas.microsoft.com/office/drawing/2016/5/11/chartex", cx6: "http://schemas.microsoft.com/office/drawing/2016/5/12/chartex", cx7: "http://schemas.microsoft.com/office/drawing/2016/5/13/chartex", cx8: "http://schemas.microsoft.com/office/drawing/2016/5/14/chartex", aink: "http://schemas.microsoft.com/office/drawing/2016/ink", am3d: "http://schemas.microsoft.com/office/drawing/2017/model3d", w16cex: "http://schemas.microsoft.com/office/word/2018/wordml/cex", w16cid: "http://schemas.microsoft.com/office/word/2016/wordml/cid", w16: "http://schemas.microsoft.com/office/word/2018/wordml", w16sdtdh: "http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash", w16se: "http://schemas.microsoft.com/office/word/2015/wordml/symex", Ignorable: "w14 w15 wp14" })), this.body = new un(), e4.background && this.root.push(new fn(e4.background)), this.root.push(this.body);
          }
          add(e4) {
            return this.body.push(e4), this;
          }
          get Body() {
            return this.body;
          }
        }
        class wn extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { xmlns: "xmlns" };
          }
        }
        class gn extends s5 {
          constructor() {
            super("Relationships"), this.root.push(new wn({ xmlns: "http://schemas.openxmlformats.org/package/2006/relationships" }));
          }
          addRelationship(e4) {
            this.root.push(e4);
          }
          createRelationship(e4, t4, r3, n2) {
            const s6 = new Tr(`rId${e4}`, t4, r3, n2);
            return this.addRelationship(s6), s6;
          }
          get RelationshipCount() {
            return this.root.length - 1;
          }
        }
        class yn {
          constructor(e4) {
            this.document = new mn(e4), this.relationships = new gn();
          }
          get View() {
            return this.document;
          }
          get Relationships() {
            return this.relationships;
          }
        }
        class bn extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { val: "w:val" };
          }
        }
        class xn extends s5 {
          constructor() {
            super("w:wordWrap"), this.root.push(new bn({ val: 0 }));
          }
        }
        var vn, _n, En;
        !(function(e4) {
          e4.NONE = "none", e4.DROP = "drop", e4.MARGIN = "margin";
        })(vn || (vn = {})), (function(e4) {
          e4.MARGIN = "margin", e4.PAGE = "page", e4.TEXT = "text";
        })(_n || (_n = {})), (function(e4) {
          e4.AROUND = "around", e4.AUTO = "auto", e4.NONE = "none", e4.NOT_BESIDE = "notBeside", e4.THROUGH = "through", e4.TIGHT = "tight";
        })(En || (En = {}));
        class Tn extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { anchorLock: "w:anchorLock", dropCap: "w:dropCap", width: "w:w", height: "w:h", x: "w:x", y: "w:y", anchorHorizontal: "w:hAnchor", anchorVertical: "w:vAnchor", spaceHorizontal: "w:hSpace", spaceVertical: "w:vSpace", rule: "w:hRule", alignmentX: "w:xAlign", alignmentY: "w:yAlign", lines: "w:lines", wrap: "w:wrap" };
          }
        }
        class An extends s5 {
          constructor(e4) {
            var t4, r3;
            super("w:framePr"), this.root.push(new Tn({ anchorLock: e4.anchorLock, dropCap: e4.dropCap, width: e4.width, height: e4.height, x: e4.position ? e4.position.x : void 0, y: e4.position ? e4.position.y : void 0, anchorHorizontal: e4.anchor.horizontal, anchorVertical: e4.anchor.vertical, spaceHorizontal: null === (t4 = e4.space) || void 0 === t4 ? void 0 : t4.horizontal, spaceVertical: null === (r3 = e4.space) || void 0 === r3 ? void 0 : r3.vertical, rule: e4.rule, alignmentX: e4.alignment ? e4.alignment.x : void 0, alignmentY: e4.alignment ? e4.alignment.y : void 0, lines: e4.lines, wrap: e4.wrap }));
          }
        }
        class Sn extends i2 {
          constructor(e4) {
            var t4, r3;
            if (super("w:pPr"), this.numberingReferences = [], !e4) return this;
            e4.heading && this.push(new wr(e4.heading)), e4.bullet && this.push(new wr("ListParagraph")), e4.numbering && (e4.style || e4.heading || e4.numbering.custom || this.push(new wr("ListParagraph"))), e4.style && this.push(new wr(e4.style)), void 0 !== e4.keepNext && this.push(new I("w:keepNext", e4.keepNext)), void 0 !== e4.keepLines && this.push(new I("w:keepLines", e4.keepLines)), e4.pageBreakBefore && this.push(new dr()), e4.frame && this.push(new An(e4.frame)), void 0 !== e4.widowControl && this.push(new I("w:widowControl", e4.widowControl)), e4.bullet && this.push(new xr(1, e4.bullet.level)), e4.numbering && (this.numberingReferences.push({ reference: e4.numbering.reference, instance: null !== (t4 = e4.numbering.instance) && void 0 !== t4 ? t4 : 0 }), this.push(new xr(`${e4.numbering.reference}-${null !== (r3 = e4.numbering.instance) && void 0 !== r3 ? r3 : 0}`, e4.numbering.level))), e4.border && this.push(new B(e4.border)), e4.thematicBreak && this.push(new M()), e4.shading && this.push(new Y(e4.shading)), e4.wordWrap && this.push(new xn());
            const n2 = [...e4.rightTabStop ? [{ type: Ie.RIGHT, position: e4.rightTabStop }] : [], ...e4.tabStops ? e4.tabStops : [], ...e4.leftTabStop ? [{ type: Ie.LEFT, position: e4.leftTabStop }] : []];
            n2.length > 0 && this.push(new gr(n2)), void 0 !== e4.bidirectional && this.push(new I("w:bidi", e4.bidirectional)), e4.spacing && this.push(new mr(e4.spacing)), e4.indent && this.push(new H(e4.indent)), void 0 !== e4.contextualSpacing && this.push(new I("w:contextualSpacing", e4.contextualSpacing)), e4.alignment && this.push(new D2(e4.alignment)), void 0 !== e4.outlineLevel && this.push(new Dr(e4.outlineLevel)), void 0 !== e4.suppressLineNumbers && this.push(new I("w:suppressLineNumbers", e4.suppressLineNumbers));
          }
          push(e4) {
            this.root.push(e4);
          }
          prepForXml(e4) {
            if (e4.viewWrapper instanceof yn) for (const t4 of this.numberingReferences) e4.file.Numbering.createConcreteNumberingInstance(t4.reference, t4.instance);
            return super.prepForXml(e4);
          }
        }
        class In extends s5 {
          constructor(e4) {
            if (super("w:p"), "string" == typeof e4) return this.properties = new Sn({}), this.root.push(this.properties), this.root.push(new we(e4)), this;
            if (this.properties = new Sn(e4), this.root.push(this.properties), e4.text && this.root.push(new we(e4.text)), e4.children) for (const t4 of e4.children) if (t4 instanceof Or) {
              this.root.push(t4.start);
              for (const e5 of t4.children) this.root.push(e5);
              this.root.push(t4.end);
            } else this.root.push(t4);
          }
          prepForXml(e4) {
            for (const t4 of this.root) if (t4 instanceof Rr) {
              const r3 = this.root.indexOf(t4), n2 = new Sr(t4.options.children, (0, Ke.EL)());
              e4.viewWrapper.Relationships.createRelationship(n2.linkId, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink", t4.options.link, Ce.EXTERNAL), this.root[r3] = n2;
            }
            return super.prepForXml(e4);
          }
          addRunToFront(e4) {
            return this.root.splice(1, 0, e4), this;
          }
        }
        class Rn extends s5 {
          constructor(e4) {
            super("m:oMath");
            for (const t4 of e4.children) this.root.push(t4);
          }
        }
        class Nn extends s5 {
          constructor(e4) {
            super("m:t"), this.root.push(e4);
          }
        }
        class Cn extends s5 {
          constructor(e4) {
            super("m:r"), this.root.push(new Nn(e4));
          }
        }
        class On extends s5 {
          constructor(e4) {
            super("m:den");
            for (const t4 of e4) this.root.push(t4);
          }
        }
        class kn extends s5 {
          constructor(e4) {
            super("m:num");
            for (const t4 of e4) this.root.push(t4);
          }
        }
        class Ln extends s5 {
          constructor(e4) {
            super("m:f"), this.root.push(new kn(e4.numerator)), this.root.push(new On(e4.denominator));
          }
        }
        class Dn extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { accent: "m:val" };
          }
        }
        class Pn extends s5 {
          constructor(e4) {
            super("m:chr"), this.root.push(new Dn({ accent: e4 }));
          }
        }
        class Fn extends s5 {
          constructor(e4) {
            super("m:e");
            for (const t4 of e4) this.root.push(t4);
          }
        }
        class Bn extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { value: "m:val" };
          }
        }
        class Mn extends s5 {
          constructor() {
            super("m:limLoc"), this.root.push(new Bn({ value: "undOvr" }));
          }
        }
        class Un extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { hide: "m:val" };
          }
        }
        class Hn extends s5 {
          constructor() {
            super("m:subHide"), this.root.push(new Un({ hide: 1 }));
          }
        }
        class zn extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { hide: "m:val" };
          }
        }
        class jn extends s5 {
          constructor() {
            super("m:supHide"), this.root.push(new zn({ hide: 1 }));
          }
        }
        class Wn extends s5 {
          constructor(e4, t4, r3) {
            super("m:naryPr"), e4 && this.root.push(new Pn(e4)), this.root.push(new Mn()), t4 || this.root.push(new jn()), r3 || this.root.push(new Hn());
          }
        }
        class Kn extends s5 {
          constructor(e4) {
            super("m:sub");
            for (const t4 of e4) this.root.push(t4);
          }
        }
        class Gn extends s5 {
          constructor(e4) {
            super("m:sup");
            for (const t4 of e4) this.root.push(t4);
          }
        }
        class Vn extends s5 {
          constructor(e4) {
            super("m:nary"), this.root.push(new Wn("\u2211", !!e4.superScript, !!e4.subScript)), e4.subScript && this.root.push(new Kn(e4.subScript)), e4.superScript && this.root.push(new Gn(e4.superScript)), this.root.push(new Fn(e4.children));
          }
        }
        class $n extends s5 {
          constructor(e4) {
            super("m:nary"), this.root.push(new Wn("", !!e4.superScript, !!e4.subScript)), e4.subScript && this.root.push(new Kn(e4.subScript)), e4.superScript && this.root.push(new Gn(e4.superScript)), this.root.push(new Fn(e4.children));
          }
        }
        class Xn extends s5 {
          constructor() {
            super("m:sSupPr");
          }
        }
        class qn extends s5 {
          constructor(e4) {
            super("m:sSup"), this.root.push(new Xn()), this.root.push(new Fn(e4.children)), this.root.push(new Gn(e4.superScript));
          }
        }
        class Zn extends s5 {
          constructor() {
            super("m:sSubPr");
          }
        }
        class Yn extends s5 {
          constructor(e4) {
            super("m:sSub"), this.root.push(new Zn()), this.root.push(new Fn(e4.children)), this.root.push(new Kn(e4.subScript));
          }
        }
        class Jn extends s5 {
          constructor() {
            super("m:sSubSupPr");
          }
        }
        class Qn extends s5 {
          constructor(e4) {
            super("m:sSubSup"), this.root.push(new Jn()), this.root.push(new Fn(e4.children)), this.root.push(new Kn(e4.subScript)), this.root.push(new Gn(e4.superScript));
          }
        }
        class es extends s5 {
          constructor() {
            super("m:sPrePr");
          }
        }
        class ts extends s5 {
          constructor(e4) {
            super("m:sPre"), this.root.push(new es()), this.root.push(new Fn(e4.children)), this.root.push(new Kn(e4.subScript)), this.root.push(new Gn(e4.superScript));
          }
        }
        const rs = "";
        class ns extends s5 {
          constructor(e4) {
            if (super("m:deg"), e4) for (const t4 of e4) this.root.push(t4);
          }
        }
        class ss extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { hide: "m:val" };
          }
        }
        class is4 extends s5 {
          constructor() {
            super("m:degHide"), this.root.push(new ss({ hide: 1 }));
          }
        }
        class os10 extends s5 {
          constructor(e4) {
            super("m:radPr"), e4 || this.root.push(new is4());
          }
        }
        class as extends s5 {
          constructor(e4) {
            super("m:rad"), this.root.push(new os10(!!e4.degree)), this.root.push(new ns(e4.degree)), this.root.push(new Fn(e4.children));
          }
        }
        class cs extends s5 {
          constructor(e4) {
            super("m:fName");
            for (const t4 of e4) this.root.push(t4);
          }
        }
        class us extends s5 {
          constructor() {
            super("m:funcPr");
          }
        }
        class ls extends s5 {
          constructor(e4) {
            super("m:func"), this.root.push(new us()), this.root.push(new cs(e4.name)), this.root.push(new Fn(e4.children));
          }
        }
        class hs extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { character: "m:val" };
          }
        }
        class ps extends s5 {
          constructor(e4) {
            super("m:begChr"), this.root.push(new hs({ character: e4 }));
          }
        }
        class ds extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { character: "m:val" };
          }
        }
        class fs50 extends s5 {
          constructor(e4) {
            super("m:endChr"), this.root.push(new ds({ character: e4 }));
          }
        }
        class ms extends s5 {
          constructor(e4) {
            super("m:dPr"), e4 && (this.root.push(new ps(e4.beginningCharacter)), this.root.push(new fs50(e4.endingCharacter)));
          }
        }
        class ws extends s5 {
          constructor(e4) {
            super("m:d"), this.root.push(new ms()), this.root.push(new Fn(e4.children));
          }
        }
        class gs extends s5 {
          constructor(e4) {
            super("m:d"), this.root.push(new ms({ beginningCharacter: "[", endingCharacter: "]" })), this.root.push(new Fn(e4.children));
          }
        }
        class ys extends s5 {
          constructor(e4) {
            super("m:d"), this.root.push(new ms({ beginningCharacter: "{", endingCharacter: "}" })), this.root.push(new Fn(e4.children));
          }
        }
        class bs extends s5 {
          constructor(e4) {
            super("m:d"), this.root.push(new ms({ beginningCharacter: "\u2329", endingCharacter: "\u232A" })), this.root.push(new Fn(e4.children));
          }
        }
        class xs extends s5 {
          constructor(e4) {
            super("w:tblGrid");
            for (const t4 of e4) this.root.push(new _s(t4));
          }
        }
        class vs extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { w: "w:w" };
          }
        }
        class _s extends s5 {
          constructor(e4) {
            super("w:gridCol"), void 0 !== e4 && this.root.push(new vs({ w: (0, S3.Jd)(e4) }));
          }
        }
        var Es, Ts, As, Ss;
        !(function(e4) {
          e4.AUTO = "auto", e4.DXA = "dxa", e4.NIL = "nil", e4.PERCENTAGE = "pct";
        })(Es || (Es = {}));
        class Is extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { type: "w:type", size: "w:w" };
          }
        }
        class Rs extends s5 {
          constructor(e4, { type: t4 = Es.AUTO, size: r3 }) {
            super(e4);
            let n2 = r3;
            t4 === Es.PERCENTAGE && "number" == typeof r3 && (n2 = `${r3}%`), this.root.push(new Is({ type: t4, size: (0, S3.aB)(n2) }));
          }
        }
        !(function(e4) {
          e4.TABLE = "w:tblCellMar", e4.TABLE_CELL = "w:tcMar";
        })(Ts || (Ts = {}));
        class Ns extends i2 {
          constructor(e4, { marginUnitType: t4 = Es.DXA, top: r3, left: n2, bottom: s6, right: i3 }) {
            super(e4), void 0 !== r3 && this.root.push(new Rs("w:top", { type: t4, size: r3 })), void 0 !== n2 && this.root.push(new Rs("w:left", { type: t4, size: n2 })), void 0 !== s6 && this.root.push(new Rs("w:bottom", { type: t4, size: s6 })), void 0 !== i3 && this.root.push(new Rs("w:right", { type: t4, size: i3 }));
          }
        }
        class Cs extends i2 {
          constructor(e4) {
            super("w:tcBorders"), e4.top && this.root.push(new P("w:top", e4.top)), e4.start && this.root.push(new P("w:start", e4.start)), e4.left && this.root.push(new P("w:left", e4.left)), e4.bottom && this.root.push(new P("w:bottom", e4.bottom)), e4.end && this.root.push(new P("w:end", e4.end)), e4.right && this.root.push(new P("w:right", e4.right));
          }
        }
        class Os extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { val: "w:val" };
          }
        }
        class ks extends s5 {
          constructor(e4) {
            super("w:gridSpan"), this.root.push(new Os({ val: (0, S3.vH)(e4) }));
          }
        }
        !(function(e4) {
          e4.CONTINUE = "continue", e4.RESTART = "restart";
        })(As || (As = {}));
        class Ls extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { val: "w:val" };
          }
        }
        class Ds extends s5 {
          constructor(e4) {
            super("w:vMerge"), this.root.push(new Ls({ val: e4 }));
          }
        }
        !(function(e4) {
          e4.BOTTOM_TO_TOP_LEFT_TO_RIGHT = "btLr", e4.LEFT_TO_RIGHT_TOP_TO_BOTTOM = "lrTb", e4.TOP_TO_BOTTOM_RIGHT_TO_LEFT = "tbRl";
        })(Ss || (Ss = {}));
        class Ps extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { val: "w:val" };
          }
        }
        class Fs extends s5 {
          constructor(e4) {
            super("w:textDirection"), this.root.push(new Ps({ val: e4 }));
          }
        }
        class Bs extends i2 {
          constructor(e4) {
            super("w:tcPr"), e4.width && this.root.push(new Rs("w:tcW", e4.width)), e4.columnSpan && this.root.push(new ks(e4.columnSpan)), e4.verticalMerge ? this.root.push(new Ds(e4.verticalMerge)) : e4.rowSpan && e4.rowSpan > 1 && this.root.push(new Ds(As.RESTART)), e4.borders && this.root.push(new Cs(e4.borders)), e4.shading && this.root.push(new Y(e4.shading)), e4.margins && this.root.push(new Ns(Ts.TABLE_CELL, e4.margins)), e4.textDirection && this.root.push(new Fs(e4.textDirection)), e4.verticalAlign && this.root.push(new Mr(e4.verticalAlign));
          }
        }
        class Ms extends s5 {
          constructor(e4) {
            super("w:tc"), this.options = e4, this.root.push(new Bs(e4));
            for (const t4 of e4.children) this.root.push(t4);
          }
          prepForXml(e4) {
            return this.root[this.root.length - 1] instanceof In || this.root.push(new In({})), super.prepForXml(e4);
          }
        }
        const Us = { style: w.NONE, size: 0, color: "auto" }, Hs = { style: w.SINGLE, size: 4, color: "auto" };
        class zs extends s5 {
          constructor(e4) {
            super("w:tblBorders"), e4.top ? this.root.push(new P("w:top", e4.top)) : this.root.push(new P("w:top", Hs)), e4.left ? this.root.push(new P("w:left", e4.left)) : this.root.push(new P("w:left", Hs)), e4.bottom ? this.root.push(new P("w:bottom", e4.bottom)) : this.root.push(new P("w:bottom", Hs)), e4.right ? this.root.push(new P("w:right", e4.right)) : this.root.push(new P("w:right", Hs)), e4.insideHorizontal ? this.root.push(new P("w:insideH", e4.insideHorizontal)) : this.root.push(new P("w:insideH", Hs)), e4.insideVertical ? this.root.push(new P("w:insideV", e4.insideVertical)) : this.root.push(new P("w:insideV", Hs));
          }
        }
        zs.NONE = { top: Us, bottom: Us, left: Us, right: Us, insideHorizontal: Us, insideVertical: Us };
        var js, Ws, Ks, Gs, Vs, $s, Xs;
        !(function(e4) {
          e4.MARGIN = "margin", e4.PAGE = "page", e4.TEXT = "text";
        })(js || (js = {})), (function(e4) {
          e4.CENTER = "center", e4.INSIDE = "inside", e4.LEFT = "left", e4.OUTSIDE = "outside", e4.RIGHT = "right";
        })(Ws || (Ws = {})), (function(e4) {
          e4.CENTER = "center", e4.INSIDE = "inside", e4.BOTTOM = "bottom", e4.OUTSIDE = "outside", e4.INLINE = "inline", e4.TOP = "top";
        })(Ks || (Ks = {})), (function(e4) {
          e4.NEVER = "never", e4.OVERLAP = "overlap";
        })(Gs || (Gs = {}));
        class qs extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { horizontalAnchor: "w:horzAnchor", verticalAnchor: "w:vertAnchor", absoluteHorizontalPosition: "w:tblpX", relativeHorizontalPosition: "w:tblpXSpec", absoluteVerticalPosition: "w:tblpY", relativeVerticalPosition: "w:tblpYSpec", bottomFromText: "w:bottomFromText", topFromText: "w:topFromText", leftFromText: "w:leftFromText", rightFromText: "w:rightFromText" };
          }
        }
        class Zs extends s5 {
          constructor(e4) {
            var { leftFromText: t4, rightFromText: r3, topFromText: n2, bottomFromText: s6, absoluteHorizontalPosition: i3, absoluteVerticalPosition: o2 } = e4, a3 = (function(e5, t5) {
              var r4 = {};
              for (var n3 in e5) Object.prototype.hasOwnProperty.call(e5, n3) && t5.indexOf(n3) < 0 && (r4[n3] = e5[n3]);
              if (null != e5 && "function" == typeof Object.getOwnPropertySymbols) {
                var s7 = 0;
                for (n3 = Object.getOwnPropertySymbols(e5); s7 < n3.length; s7++) t5.indexOf(n3[s7]) < 0 && Object.prototype.propertyIsEnumerable.call(e5, n3[s7]) && (r4[n3[s7]] = e5[n3[s7]]);
              }
              return r4;
            })(e4, ["leftFromText", "rightFromText", "topFromText", "bottomFromText", "absoluteHorizontalPosition", "absoluteVerticalPosition"]);
            super("w:tblpPr"), this.root.push(new qs(Object.assign({ leftFromText: void 0 === t4 ? void 0 : (0, S3.Jd)(t4), rightFromText: void 0 === r3 ? void 0 : (0, S3.Jd)(r3), topFromText: void 0 === n2 ? void 0 : (0, S3.Jd)(n2), bottomFromText: void 0 === s6 ? void 0 : (0, S3.Jd)(s6), absoluteHorizontalPosition: void 0 === i3 ? void 0 : (0, S3.xb)(i3), absoluteVerticalPosition: void 0 === o2 ? void 0 : (0, S3.xb)(o2) }, a3))), a3.overlap && this.root.push(new O("w:tblOverlap", a3.overlap));
          }
        }
        !(function(e4) {
          e4.AUTOFIT = "autofit", e4.FIXED = "fixed";
        })(Vs || (Vs = {}));
        class Ys extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { type: "w:type" };
          }
        }
        class Js extends s5 {
          constructor(e4) {
            super("w:tblLayout"), this.root.push(new Ys({ type: e4 }));
          }
        }
        class Qs extends i2 {
          constructor(e4) {
            super("w:tblPr"), e4.style && this.root.push(new N("w:tblStyle", e4.style)), e4.float && this.root.push(new Zs(e4.float)), void 0 !== e4.visuallyRightToLeft && this.root.push(new I("w:bidiVisual", e4.visuallyRightToLeft)), e4.width && this.root.push(new Rs("w:tblW", e4.width)), e4.alignment && this.root.push(new D2(e4.alignment)), e4.indent && this.root.push(new Rs("w:tblInd", e4.indent)), e4.borders && this.root.push(new zs(e4.borders)), e4.shading && this.root.push(new Y(e4.shading)), e4.layout && this.root.push(new Js(e4.layout)), e4.cellMargin && this.root.push(new Ns(Ts.TABLE, e4.cellMargin));
          }
        }
        class ei extends s5 {
          constructor({ rows: e4, width: t4, columnWidths: r3 = Array(Math.max(...e4.map(((e5) => e5.CellCount)))).fill(100), margins: n2, indent: s6, float: i3, layout: o2, style: a3, borders: c2, alignment: u4, visuallyRightToLeft: l2 }) {
            super("w:tbl"), this.root.push(new Qs({ borders: null != c2 ? c2 : {}, width: null != t4 ? t4 : { size: 100 }, indent: s6, float: i3, layout: o2, style: a3, alignment: u4, cellMargin: n2, visuallyRightToLeft: l2 })), this.root.push(new xs(r3));
            for (const t5 of e4) this.root.push(t5);
            e4.forEach(((t5, r4) => {
              if (r4 === e4.length - 1) return;
              let n3 = 0;
              t5.cells.forEach(((t6) => {
                if (t6.options.rowSpan && t6.options.rowSpan > 1) {
                  const s7 = new Ms({ rowSpan: t6.options.rowSpan - 1, columnSpan: t6.options.columnSpan, borders: t6.options.borders, children: [], verticalMerge: As.CONTINUE });
                  e4[r4 + 1].addCellToColumnIndex(s7, n3);
                }
                n3 += t6.options.columnSpan || 1;
              }));
            }));
          }
        }
        !(function(e4) {
          e4.AUTO = "auto", e4.ATLEAST = "atLeast", e4.EXACT = "exact";
        })($s || ($s = {}));
        class ti extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { value: "w:val", rule: "w:hRule" };
          }
        }
        class ri extends s5 {
          constructor(e4, t4) {
            super("w:trHeight"), this.root.push(new ti({ value: (0, S3.Jd)(e4), rule: t4 }));
          }
        }
        class ni extends i2 {
          constructor(e4) {
            super("w:trPr"), void 0 !== e4.cantSplit && this.root.push(new I("w:cantSplit", e4.cantSplit)), void 0 !== e4.tableHeader && this.root.push(new I("w:tblHeader", e4.tableHeader)), e4.height && this.root.push(new ri(e4.height.value, e4.height.rule));
          }
        }
        class si extends s5 {
          constructor(e4) {
            super("w:tr"), this.options = e4, this.root.push(new ni(e4));
            for (const t4 of e4.children) this.root.push(t4);
          }
          get CellCount() {
            return this.options.children.length;
          }
          get cells() {
            return this.root.filter(((e4) => e4 instanceof Ms));
          }
          addCellToIndex(e4, t4) {
            this.root.splice(t4 + 1, 0, e4);
          }
          addCellToColumnIndex(e4, t4) {
            const r3 = this.columnIndexToRootIndex(t4, true);
            this.addCellToIndex(e4, r3 - 1);
          }
          rootIndexToColumnIndex(e4) {
            if (e4 < 1 || e4 >= this.root.length) throw new Error("cell 'rootIndex' should between 1 to " + (this.root.length - 1));
            let t4 = 0;
            for (let r3 = 1; r3 < e4; r3++) t4 += this.root[r3].options.columnSpan || 1;
            return t4;
          }
          columnIndexToRootIndex(e4, t4 = false) {
            if (e4 < 0) throw new Error("cell 'columnIndex' should not less than zero");
            let r3 = 0, n2 = 1;
            for (; r3 <= e4; ) {
              if (n2 >= this.root.length) {
                if (t4) return this.root.length;
                throw new Error("cell 'columnIndex' should not great than " + (r3 - 1));
              }
              const e5 = this.root[n2];
              n2 += 1, r3 += e5 && e5.options.columnSpan || 1;
            }
            return n2 - 1;
          }
        }
        class ii extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { xmlns: "xmlns", vt: "xmlns:vt" };
          }
        }
        class oi extends s5 {
          constructor() {
            super("Properties"), this.root.push(new ii({ xmlns: "http://schemas.openxmlformats.org/officeDocument/2006/extended-properties", vt: "http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" }));
          }
        }
        class ai extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { xmlns: "xmlns" };
          }
        }
        class ci extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { contentType: "ContentType", extension: "Extension" };
          }
        }
        class ui extends s5 {
          constructor(e4, t4) {
            super("Default"), this.root.push(new ci({ contentType: e4, extension: t4 }));
          }
        }
        class li3 extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { contentType: "ContentType", partName: "PartName" };
          }
        }
        class hi extends s5 {
          constructor(e4, t4) {
            super("Override"), this.root.push(new li3({ contentType: e4, partName: t4 }));
          }
        }
        class pi extends s5 {
          constructor() {
            super("Types"), this.root.push(new ai({ xmlns: "http://schemas.openxmlformats.org/package/2006/content-types" })), this.root.push(new ui("image/png", "png")), this.root.push(new ui("image/jpeg", "jpeg")), this.root.push(new ui("image/jpeg", "jpg")), this.root.push(new ui("image/bmp", "bmp")), this.root.push(new ui("image/gif", "gif")), this.root.push(new ui("application/vnd.openxmlformats-package.relationships+xml", "rels")), this.root.push(new ui("application/xml", "xml")), this.root.push(new hi("application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml", "/word/document.xml")), this.root.push(new hi("application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml", "/word/styles.xml")), this.root.push(new hi("application/vnd.openxmlformats-package.core-properties+xml", "/docProps/core.xml")), this.root.push(new hi("application/vnd.openxmlformats-officedocument.custom-properties+xml", "/docProps/custom.xml")), this.root.push(new hi("application/vnd.openxmlformats-officedocument.extended-properties+xml", "/docProps/app.xml")), this.root.push(new hi("application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml", "/word/numbering.xml")), this.root.push(new hi("application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml", "/word/footnotes.xml")), this.root.push(new hi("application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml", "/word/settings.xml")), this.root.push(new hi("application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml", "/word/comments.xml"));
          }
          addFooter(e4) {
            this.root.push(new hi("application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml", `/word/footer${e4}.xml`));
          }
          addHeader(e4) {
            this.root.push(new hi("application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml", `/word/header${e4}.xml`));
          }
        }
        class di extends s5 {
          constructor(e4) {
            super("cp:coreProperties"), this.root.push(new pn({ cp: "http://schemas.openxmlformats.org/package/2006/metadata/core-properties", dc: "http://purl.org/dc/elements/1.1/", dcterms: "http://purl.org/dc/terms/", dcmitype: "http://purl.org/dc/dcmitype/", xsi: "http://www.w3.org/2001/XMLSchema-instance" })), e4.title && this.root.push(new k("dc:title", e4.title)), e4.subject && this.root.push(new k("dc:subject", e4.subject)), e4.creator && this.root.push(new k("dc:creator", e4.creator)), e4.keywords && this.root.push(new k("cp:keywords", e4.keywords)), e4.description && this.root.push(new k("dc:description", e4.description)), e4.lastModifiedBy && this.root.push(new k("cp:lastModifiedBy", e4.lastModifiedBy)), e4.revision && this.root.push(new k("cp:revision", String(e4.revision))), this.root.push(new fi("dcterms:created")), this.root.push(new fi("dcterms:modified"));
          }
        }
        class fi extends s5 {
          constructor(e4) {
            super(e4), this.root.push(new pn({ type: "dcterms:W3CDTF" })), this.root.push((0, S3.sF)(/* @__PURE__ */ new Date()));
          }
        }
        class mi extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { xmlns: "xmlns", vt: "xmlns:vt" };
          }
        }
        class wi extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { fmtid: "fmtid", pid: "pid", name: "name" };
          }
        }
        class gi extends s5 {
          constructor(e4, t4) {
            super("property"), this.root.push(new wi({ fmtid: "{D5CDD505-2E9C-101B-9397-08002B2CF9AE}", pid: e4.toString(), name: t4.name })), this.root.push(new yi(t4.value));
          }
        }
        class yi extends s5 {
          constructor(e4) {
            super("vt:lpwstr"), this.root.push(e4);
          }
        }
        class bi extends s5 {
          constructor(e4) {
            super("Properties"), this.properties = [], this.root.push(new mi({ xmlns: "http://schemas.openxmlformats.org/officeDocument/2006/custom-properties", vt: "http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" })), this.nextId = 2;
            for (const t4 of e4) this.addCustomProperty(t4);
          }
          prepForXml(e4) {
            return this.properties.forEach(((e5) => this.root.push(e5))), super.prepForXml(e4);
          }
          addCustomProperty(e4) {
            this.properties.push(new gi(this.nextId++, e4));
          }
        }
        class xi extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { wpc: "xmlns:wpc", mc: "xmlns:mc", o: "xmlns:o", r: "xmlns:r", m: "xmlns:m", v: "xmlns:v", wp14: "xmlns:wp14", wp: "xmlns:wp", w10: "xmlns:w10", w: "xmlns:w", w14: "xmlns:w14", w15: "xmlns:w15", wpg: "xmlns:wpg", wpi: "xmlns:wpi", wne: "xmlns:wne", wps: "xmlns:wps", cp: "xmlns:cp", dc: "xmlns:dc", dcterms: "xmlns:dcterms", dcmitype: "xmlns:dcmitype", xsi: "xmlns:xsi", type: "xsi:type" };
          }
        }
        class vi extends f3 {
          constructor(e4, t4) {
            super("w:ftr", t4), this.refId = e4, t4 || this.root.push(new xi({ wpc: "http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas", mc: "http://schemas.openxmlformats.org/markup-compatibility/2006", o: "urn:schemas-microsoft-com:office:office", r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships", m: "http://schemas.openxmlformats.org/officeDocument/2006/math", v: "urn:schemas-microsoft-com:vml", wp14: "http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing", wp: "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", w10: "urn:schemas-microsoft-com:office:word", w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main", w14: "http://schemas.microsoft.com/office/word/2010/wordml", w15: "http://schemas.microsoft.com/office/word/2012/wordml", wpg: "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup", wpi: "http://schemas.microsoft.com/office/word/2010/wordprocessingInk", wne: "http://schemas.microsoft.com/office/word/2006/wordml", wps: "http://schemas.microsoft.com/office/word/2010/wordprocessingShape" }));
          }
          get ReferenceId() {
            return this.refId;
          }
          add(e4) {
            this.root.push(e4);
          }
        }
        class _i {
          constructor(e4, t4, r3) {
            this.media = e4, this.footer = new vi(t4, r3), this.relationships = new gn();
          }
          add(e4) {
            this.footer.add(e4);
          }
          addChildElement(e4) {
            this.footer.addChildElement(e4);
          }
          get View() {
            return this.footer;
          }
          get Relationships() {
            return this.relationships;
          }
          get Media() {
            return this.media;
          }
        }
        class Ei extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { type: "w:type", id: "w:id" };
          }
        }
        class Ti extends s5 {
          constructor() {
            super("w:footnoteRef");
          }
        }
        class Ai extends me {
          constructor() {
            super({ style: "FootnoteReference" }), this.root.push(new Ti());
          }
        }
        !(function(e4) {
          e4.SEPERATOR = "separator", e4.CONTINUATION_SEPERATOR = "continuationSeparator";
        })(Xs || (Xs = {}));
        class Si extends s5 {
          constructor(e4) {
            super("w:footnote"), this.root.push(new Ei({ type: e4.type, id: e4.id }));
            for (let t4 = 0; t4 < e4.children.length; t4++) {
              const r3 = e4.children[t4];
              0 === t4 && r3.addRunToFront(new Ai()), this.root.push(r3);
            }
          }
        }
        class Ii extends s5 {
          constructor() {
            super("w:continuationSeparator");
          }
        }
        class Ri extends me {
          constructor() {
            super({}), this.root.push(new Ii());
          }
        }
        class Ni extends s5 {
          constructor() {
            super("w:separator");
          }
        }
        class Ci extends me {
          constructor() {
            super({}), this.root.push(new Ni());
          }
        }
        class Oi extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { wpc: "xmlns:wpc", mc: "xmlns:mc", o: "xmlns:o", r: "xmlns:r", m: "xmlns:m", v: "xmlns:v", wp14: "xmlns:wp14", wp: "xmlns:wp", w10: "xmlns:w10", w: "xmlns:w", w14: "xmlns:w14", w15: "xmlns:w15", wpg: "xmlns:wpg", wpi: "xmlns:wpi", wne: "xmlns:wne", wps: "xmlns:wps", Ignorable: "mc:Ignorable" };
          }
        }
        class ki extends s5 {
          constructor() {
            super("w:footnotes"), this.root.push(new Oi({ wpc: "http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas", mc: "http://schemas.openxmlformats.org/markup-compatibility/2006", o: "urn:schemas-microsoft-com:office:office", r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships", m: "http://schemas.openxmlformats.org/officeDocument/2006/math", v: "urn:schemas-microsoft-com:vml", wp14: "http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing", wp: "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", w10: "urn:schemas-microsoft-com:office:word", w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main", w14: "http://schemas.microsoft.com/office/word/2010/wordml", w15: "http://schemas.microsoft.com/office/word/2012/wordml", wpg: "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup", wpi: "http://schemas.microsoft.com/office/word/2010/wordprocessingInk", wne: "http://schemas.microsoft.com/office/word/2006/wordml", wps: "http://schemas.microsoft.com/office/word/2010/wordprocessingShape", Ignorable: "w14 w15 wp14" }));
            const e4 = new Si({ id: -1, type: Xs.SEPERATOR, children: [new In({ spacing: { after: 0, line: 240, lineRule: Ae.AUTO }, children: [new Ci()] })] });
            this.root.push(e4);
            const t4 = new Si({ id: 0, type: Xs.CONTINUATION_SEPERATOR, children: [new In({ spacing: { after: 0, line: 240, lineRule: Ae.AUTO }, children: [new Ri()] })] });
            this.root.push(t4);
          }
          createFootNote(e4, t4) {
            const r3 = new Si({ id: e4, children: t4 });
            this.root.push(r3);
          }
        }
        class Li {
          constructor() {
            this.footnotess = new ki(), this.relationships = new gn();
          }
          get View() {
            return this.footnotess;
          }
          get Relationships() {
            return this.relationships;
          }
        }
        class Di extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { wpc: "xmlns:wpc", mc: "xmlns:mc", o: "xmlns:o", r: "xmlns:r", m: "xmlns:m", v: "xmlns:v", wp14: "xmlns:wp14", wp: "xmlns:wp", w10: "xmlns:w10", w: "xmlns:w", w14: "xmlns:w14", w15: "xmlns:w15", wpg: "xmlns:wpg", wpi: "xmlns:wpi", wne: "xmlns:wne", wps: "xmlns:wps", cp: "xmlns:cp", dc: "xmlns:dc", dcterms: "xmlns:dcterms", dcmitype: "xmlns:dcmitype", xsi: "xmlns:xsi", type: "xsi:type", cx: "xmlns:cx", cx1: "xmlns:cx1", cx2: "xmlns:cx2", cx3: "xmlns:cx3", cx4: "xmlns:cx4", cx5: "xmlns:cx5", cx6: "xmlns:cx6", cx7: "xmlns:cx7", cx8: "xmlns:cx8", w16cid: "xmlns:w16cid", w16se: "xmlns:w16se" };
          }
        }
        class Pi extends f3 {
          constructor(e4, t4) {
            super("w:hdr", t4), this.refId = e4, t4 || this.root.push(new Di({ wpc: "http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas", mc: "http://schemas.openxmlformats.org/markup-compatibility/2006", o: "urn:schemas-microsoft-com:office:office", r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships", m: "http://schemas.openxmlformats.org/officeDocument/2006/math", v: "urn:schemas-microsoft-com:vml", wp14: "http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing", wp: "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", w10: "urn:schemas-microsoft-com:office:word", w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main", w14: "http://schemas.microsoft.com/office/word/2010/wordml", w15: "http://schemas.microsoft.com/office/word/2012/wordml", wpg: "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup", wpi: "http://schemas.microsoft.com/office/word/2010/wordprocessingInk", wne: "http://schemas.microsoft.com/office/word/2006/wordml", wps: "http://schemas.microsoft.com/office/word/2010/wordprocessingShape", cx: "http://schemas.microsoft.com/office/drawing/2014/chartex", cx1: "http://schemas.microsoft.com/office/drawing/2015/9/8/chartex", cx2: "http://schemas.microsoft.com/office/drawing/2015/10/21/chartex", cx3: "http://schemas.microsoft.com/office/drawing/2016/5/9/chartex", cx4: "http://schemas.microsoft.com/office/drawing/2016/5/10/chartex", cx5: "http://schemas.microsoft.com/office/drawing/2016/5/11/chartex", cx6: "http://schemas.microsoft.com/office/drawing/2016/5/12/chartex", cx7: "http://schemas.microsoft.com/office/drawing/2016/5/13/chartex", cx8: "http://schemas.microsoft.com/office/drawing/2016/5/14/chartex", w16cid: "http://schemas.microsoft.com/office/word/2016/wordml/cid", w16se: "http://schemas.microsoft.com/office/word/2015/wordml/symex" }));
          }
          get ReferenceId() {
            return this.refId;
          }
          add(e4) {
            this.root.push(e4);
          }
        }
        class Fi {
          constructor(e4, t4, r3) {
            this.media = e4, this.header = new Pi(t4, r3), this.relationships = new gn();
          }
          add(e4) {
            return this.header.add(e4), this;
          }
          addChildElement(e4) {
            this.header.addChildElement(e4);
          }
          get View() {
            return this.header;
          }
          get Relationships() {
            return this.relationships;
          }
          get Media() {
            return this.media;
          }
        }
        class Bi {
          constructor() {
            this.map = /* @__PURE__ */ new Map();
          }
          addMedia(e4, t4) {
            const r3 = `${(0, Ke.EL)()}.png`, n2 = { stream: "string" == typeof e4 ? this.convertDataURIToBinary(e4) : e4, fileName: r3, transformation: { pixels: { x: Math.round(t4.width), y: Math.round(t4.height) }, emus: { x: Math.round(9525 * t4.width), y: Math.round(9525 * t4.height) }, flip: t4.flip, rotation: t4.rotation ? 6e4 * t4.rotation : void 0 } };
            return this.map.set(r3, n2), n2;
          }
          addImage(e4, t4) {
            this.map.set(e4, t4);
          }
          get Array() {
            return Array.from(this.map.values());
          }
          convertDataURIToBinary(e4) {
            const t4 = ";base64,", n2 = e4.indexOf(t4) + t4.length;
            return "function" == typeof atob ? new Uint8Array(atob(e4.substring(n2)).split("").map(((e5) => e5.charCodeAt(0)))) : new (r2(8764)).Buffer(e4, "base64");
          }
        }
        const Mi = "";
        var Ui, Hi;
        !(function(e4) {
          e4.DECIMAL = "decimal", e4.UPPER_ROMAN = "upperRoman", e4.LOWER_ROMAN = "lowerRoman", e4.UPPER_LETTER = "upperLetter", e4.LOWER_LETTER = "lowerLetter", e4.ORDINAL = "ordinal", e4.CARDINAL_TEXT = "cardinalText", e4.ORDINAL_TEXT = "ordinalText", e4.HEX = "hex", e4.CHICAGO = "chicago", e4.IDEOGRAPH__DIGITAL = "ideographDigital", e4.JAPANESE_COUNTING = "japaneseCounting", e4.AIUEO = "aiueo", e4.IROHA = "iroha", e4.DECIMAL_FULL_WIDTH = "decimalFullWidth", e4.DECIMAL_HALF_WIDTH = "decimalHalfWidth", e4.JAPANESE_LEGAL = "japaneseLegal", e4.JAPANESE_DIGITAL_TEN_THOUSAND = "japaneseDigitalTenThousand", e4.DECIMAL_ENCLOSED_CIRCLE = "decimalEnclosedCircle", e4.DECIMAL_FULL_WIDTH2 = "decimalFullWidth2", e4.AIUEO_FULL_WIDTH = "aiueoFullWidth", e4.IROHA_FULL_WIDTH = "irohaFullWidth", e4.DECIMAL_ZERO = "decimalZero", e4.BULLET = "bullet", e4.GANADA = "ganada", e4.CHOSUNG = "chosung", e4.DECIMAL_ENCLOSED_FULLSTOP = "decimalEnclosedFullstop", e4.DECIMAL_ENCLOSED_PARENTHESES = "decimalEnclosedParen", e4.DECIMAL_ENCLOSED_CIRCLE_CHINESE = "decimalEnclosedCircleChinese", e4.IDEOGRAPH_ENCLOSED_CIRCLE = "ideographEnclosedCircle", e4.IDEOGRAPH_TRADITIONAL = "ideographTraditional", e4.IDEOGRAPH_ZODIAC = "ideographZodiac", e4.IDEOGRAPH_ZODIAC_TRADITIONAL = "ideographZodiacTraditional", e4.TAIWANESE_COUNTING = "taiwaneseCounting", e4.IDEOGRAPH_LEGAL_TRADITIONAL = "ideographLegalTraditional", e4.TAIWANESE_COUNTING_THOUSAND = "taiwaneseCountingThousand", e4.TAIWANESE_DIGITAL = "taiwaneseDigital", e4.CHINESE_COUNTING = "chineseCounting", e4.CHINESE_LEGAL_SIMPLIFIED = "chineseLegalSimplified", e4.CHINESE_COUNTING_THOUSAND = "chineseCountingThousand", e4.KOREAN_DIGITAL = "koreanDigital", e4.KOREAN_COUNTING = "koreanCounting", e4.KOREAN_LEGAL = "koreanLegal", e4.KOREAN_DIGITAL2 = "koreanDigital2", e4.VIETNAMESE_COUNTING = "vietnameseCounting", e4.RUSSIAN_LOWER = "russianLower", e4.RUSSIAN_UPPER = "russianUpper", e4.NONE = "none", e4.NUMBER_IN_DASH = "numberInDash", e4.HEBREW1 = "hebrew1", e4.HEBREW2 = "hebrew2", e4.ARABIC_ALPHA = "arabicAlpha", e4.ARABIC_ABJAD = "arabicAbjad", e4.HINDI_VOWELS = "hindiVowels", e4.HINDI_CONSONANTS = "hindiConsonants", e4.HINDI_NUMBERS = "hindiNumbers", e4.HINDI_COUNTING = "hindiCounting", e4.THAI_LETTERS = "thaiLetters", e4.THAI_NUMBERS = "thaiNumbers", e4.THAI_COUNTING = "thaiCounting", e4.BAHT_TEXT = "bahtText", e4.DOLLAR_TEXT = "dollarText", e4.CUSTOM = "custom";
        })(Ui || (Ui = {}));
        class zi extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { ilvl: "w:ilvl", tentative: "w15:tentative" };
          }
        }
        class ji extends s5 {
          constructor(e4) {
            super("w:numFmt"), this.root.push(new a2({ val: e4 }));
          }
        }
        class Wi extends s5 {
          constructor(e4) {
            super("w:lvlText"), this.root.push(new a2({ val: e4 }));
          }
        }
        class Ki extends s5 {
          constructor(e4) {
            super("w:lvlJc"), this.root.push(new a2({ val: e4 }));
          }
        }
        !(function(e4) {
          e4.NOTHING = "nothing", e4.SPACE = "space", e4.TAB = "tab";
        })(Hi || (Hi = {}));
        class Gi extends s5 {
          constructor(e4) {
            super("w:suff"), this.root.push(new a2({ val: e4 }));
          }
        }
        class Vi extends s5 {
          constructor() {
            super("w:isLgl");
          }
        }
        class $i extends s5 {
          constructor({ level: e4, format: t4, text: r3, alignment: n2 = m2.START, start: s6 = 1, style: i3, suffix: o2, isLegalNumberingStyle: a3 }) {
            if (super("w:lvl"), this.root.push(new C("w:start", (0, S3.vH)(s6))), t4 && this.root.push(new ji(t4)), o2 && this.root.push(new Gi(o2)), a3 && this.root.push(new Vi()), r3 && this.root.push(new Wi(r3)), this.root.push(new Ki(n2)), this.paragraphProperties = new Sn(i3 && i3.paragraph), this.runProperties = new pe(i3 && i3.run), this.root.push(this.paragraphProperties), this.root.push(this.runProperties), e4 > 9) throw new Error("Level cannot be greater than 9. Read more here: https://answers.microsoft.com/en-us/msoffice/forum/all/does-word-support-more-than-9-list-levels/d130fdcd-1781-446d-8c84-c6c79124e4d7");
            this.root.push(new zi({ ilvl: (0, S3.vH)(e4), tentative: 1 }));
          }
        }
        class Xi extends $i {
        }
        class qi extends $i {
        }
        class Zi extends s5 {
          constructor(e4) {
            super("w:multiLevelType"), this.root.push(new a2({ val: e4 }));
          }
        }
        class Yi extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { abstractNumId: "w:abstractNumId", restartNumberingAfterBreak: "w15:restartNumberingAfterBreak" };
          }
        }
        class Ji extends s5 {
          constructor(e4, t4) {
            super("w:abstractNum"), this.root.push(new Yi({ abstractNumId: (0, S3.vH)(e4), restartNumberingAfterBreak: 0 })), this.root.push(new Zi("hybridMultilevel")), this.id = e4;
            for (const e5 of t4) this.root.push(new Xi(e5));
          }
        }
        class Qi extends s5 {
          constructor(e4) {
            super("w:abstractNumId"), this.root.push(new a2({ val: e4 }));
          }
        }
        class eo extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { numId: "w:numId" };
          }
        }
        class to extends s5 {
          constructor(e4) {
            super("w:num"), this.numId = e4.numId, this.reference = e4.reference, this.instance = e4.instance, this.root.push(new eo({ numId: (0, S3.vH)(e4.numId) })), this.root.push(new Qi((0, S3.vH)(e4.abstractNumId))), e4.overrideLevel && this.root.push(new no(e4.overrideLevel.num, e4.overrideLevel.start));
          }
        }
        class ro extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { ilvl: "w:ilvl" };
          }
        }
        class no extends s5 {
          constructor(e4, t4) {
            super("w:lvlOverride"), this.root.push(new ro({ ilvl: e4 })), void 0 !== t4 && this.root.push(new io(t4));
          }
        }
        class so extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { val: "w:val" };
          }
        }
        class io extends s5 {
          constructor(e4) {
            super("w:startOverride"), this.root.push(new so({ val: e4 }));
          }
        }
        class oo extends s5 {
          constructor(e4) {
            super("w:numbering"), this.abstractNumberingMap = /* @__PURE__ */ new Map(), this.concreteNumberingMap = /* @__PURE__ */ new Map(), this.referenceConfigMap = /* @__PURE__ */ new Map(), this.root.push(new pn({ wpc: "http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas", mc: "http://schemas.openxmlformats.org/markup-compatibility/2006", o: "urn:schemas-microsoft-com:office:office", r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships", m: "http://schemas.openxmlformats.org/officeDocument/2006/math", v: "urn:schemas-microsoft-com:vml", wp14: "http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing", wp: "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", w10: "urn:schemas-microsoft-com:office:word", w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main", w14: "http://schemas.microsoft.com/office/word/2010/wordml", w15: "http://schemas.microsoft.com/office/word/2012/wordml", wpg: "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup", wpi: "http://schemas.microsoft.com/office/word/2010/wordprocessingInk", wne: "http://schemas.microsoft.com/office/word/2006/wordml", wps: "http://schemas.microsoft.com/office/word/2010/wordprocessingShape", Ignorable: "w14 w15 wp14" }));
            const t4 = new Ji((0, Ke.NY)(), [{ level: 0, format: Ui.BULLET, text: "\u25CF", alignment: m2.LEFT, style: { paragraph: { indent: { left: (0, Ke.vw)(0.5), hanging: (0, Ke.vw)(0.25) } } } }, { level: 1, format: Ui.BULLET, text: "\u25CB", alignment: m2.LEFT, style: { paragraph: { indent: { left: (0, Ke.vw)(1), hanging: (0, Ke.vw)(0.25) } } } }, { level: 2, format: Ui.BULLET, text: "\u25A0", alignment: m2.LEFT, style: { paragraph: { indent: { left: 2160, hanging: (0, Ke.vw)(0.25) } } } }, { level: 3, format: Ui.BULLET, text: "\u25CF", alignment: m2.LEFT, style: { paragraph: { indent: { left: 2880, hanging: (0, Ke.vw)(0.25) } } } }, { level: 4, format: Ui.BULLET, text: "\u25CB", alignment: m2.LEFT, style: { paragraph: { indent: { left: 3600, hanging: (0, Ke.vw)(0.25) } } } }, { level: 5, format: Ui.BULLET, text: "\u25A0", alignment: m2.LEFT, style: { paragraph: { indent: { left: 4320, hanging: (0, Ke.vw)(0.25) } } } }, { level: 6, format: Ui.BULLET, text: "\u25CF", alignment: m2.LEFT, style: { paragraph: { indent: { left: 5040, hanging: (0, Ke.vw)(0.25) } } } }, { level: 7, format: Ui.BULLET, text: "\u25CF", alignment: m2.LEFT, style: { paragraph: { indent: { left: 5760, hanging: (0, Ke.vw)(0.25) } } } }, { level: 8, format: Ui.BULLET, text: "\u25CF", alignment: m2.LEFT, style: { paragraph: { indent: { left: 6480, hanging: (0, Ke.vw)(0.25) } } } }]);
            this.concreteNumberingMap.set("default-bullet-numbering", new to({ numId: 1, abstractNumId: t4.id, reference: "default-bullet-numbering", instance: 0, overrideLevel: { num: 0, start: 1 } })), this.abstractNumberingMap.set("default-bullet-numbering", t4);
            for (const t5 of e4.config) this.abstractNumberingMap.set(t5.reference, new Ji((0, Ke.NY)(), t5.levels)), this.referenceConfigMap.set(t5.reference, t5.levels);
          }
          prepForXml(e4) {
            for (const e5 of this.abstractNumberingMap.values()) this.root.push(e5);
            for (const e5 of this.concreteNumberingMap.values()) this.root.push(e5);
            return super.prepForXml(e4);
          }
          createConcreteNumberingInstance(e4, t4) {
            const r3 = this.abstractNumberingMap.get(e4);
            if (!r3) return;
            const n2 = `${e4}-${t4}`;
            if (this.concreteNumberingMap.has(n2)) return;
            const s6 = this.referenceConfigMap.get(e4), i3 = s6 && s6[0].start, o2 = { numId: (0, Ke.NY)(), abstractNumId: r3.id, reference: e4, instance: t4, overrideLevel: i3 && Number.isInteger(i3) ? { num: 0, start: i3 } : { num: 0, start: 1 } };
            this.concreteNumberingMap.set(n2, new to(o2));
          }
          get ConcreteNumbering() {
            return Array.from(this.concreteNumberingMap.values());
          }
          get ReferenceConfig() {
            return Array.from(this.referenceConfigMap.values());
          }
        }
        class ao extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { version: "w:val", name: "w:name", uri: "w:uri" };
          }
        }
        class co extends s5 {
          constructor(e4) {
            super("w:compatSetting"), this.root.push(new ao({ version: e4, uri: "http://schemas.microsoft.com/office/word", name: "compatibilityMode" }));
          }
        }
        class uo extends s5 {
          constructor(e4) {
            super("w:compat"), e4.version && this.root.push(new co(e4.version)), e4.useSingleBorderforContiguousCells && this.root.push(new I("w:useSingleBorderforContiguousCells", e4.useSingleBorderforContiguousCells)), e4.wordPerfectJustification && this.root.push(new I("w:wpJustification", e4.wordPerfectJustification)), e4.noTabStopForHangingIndent && this.root.push(new I("w:noTabHangInd", e4.noTabStopForHangingIndent)), e4.noLeading && this.root.push(new I("w:noLeading", e4.noLeading)), e4.spaceForUnderline && this.root.push(new I("w:spaceForUL", e4.spaceForUnderline)), e4.noColumnBalance && this.root.push(new I("w:noColumnBalance", e4.noColumnBalance)), e4.balanceSingleByteDoubleByteWidth && this.root.push(new I("w:balanceSingleByteDoubleByteWidth", e4.balanceSingleByteDoubleByteWidth)), e4.noExtraLineSpacing && this.root.push(new I("w:noExtraLineSpacing", e4.noExtraLineSpacing)), e4.doNotLeaveBackslashAlone && this.root.push(new I("w:doNotLeaveBackslashAlone", e4.doNotLeaveBackslashAlone)), e4.underlineTrailingSpaces && this.root.push(new I("w:ulTrailSpace", e4.underlineTrailingSpaces)), e4.doNotExpandShiftReturn && this.root.push(new I("w:doNotExpandShiftReturn", e4.doNotExpandShiftReturn)), e4.spacingInWholePoints && this.root.push(new I("w:spacingInWholePoints", e4.spacingInWholePoints)), e4.lineWrapLikeWord6 && this.root.push(new I("w:lineWrapLikeWord6", e4.lineWrapLikeWord6)), e4.printBodyTextBeforeHeader && this.root.push(new I("w:printBodyTextBeforeHeader", e4.printBodyTextBeforeHeader)), e4.printColorsBlack && this.root.push(new I("w:printColBlack", e4.printColorsBlack)), e4.spaceWidth && this.root.push(new I("w:wpSpaceWidth", e4.spaceWidth)), e4.showBreaksInFrames && this.root.push(new I("w:showBreaksInFrames", e4.showBreaksInFrames)), e4.subFontBySize && this.root.push(new I("w:subFontBySize", e4.subFontBySize)), e4.suppressBottomSpacing && this.root.push(new I("w:suppressBottomSpacing", e4.suppressBottomSpacing)), e4.suppressTopSpacing && this.root.push(new I("w:suppressTopSpacing", e4.suppressTopSpacing)), e4.suppressSpacingAtTopOfPage && this.root.push(new I("w:suppressSpacingAtTopOfPage", e4.suppressSpacingAtTopOfPage)), e4.suppressTopSpacingWP && this.root.push(new I("w:suppressTopSpacingWP", e4.suppressTopSpacingWP)), e4.suppressSpBfAfterPgBrk && this.root.push(new I("w:suppressSpBfAfterPgBrk", e4.suppressSpBfAfterPgBrk)), e4.swapBordersFacingPages && this.root.push(new I("w:swapBordersFacingPages", e4.swapBordersFacingPages)), e4.convertMailMergeEsc && this.root.push(new I("w:convMailMergeEsc", e4.convertMailMergeEsc)), e4.truncateFontHeightsLikeWP6 && this.root.push(new I("w:truncateFontHeightsLikeWP6", e4.truncateFontHeightsLikeWP6)), e4.macWordSmallCaps && this.root.push(new I("w:mwSmallCaps", e4.macWordSmallCaps)), e4.usePrinterMetrics && this.root.push(new I("w:usePrinterMetrics", e4.usePrinterMetrics)), e4.doNotSuppressParagraphBorders && this.root.push(new I("w:doNotSuppressParagraphBorders", e4.doNotSuppressParagraphBorders)), e4.wrapTrailSpaces && this.root.push(new I("w:wrapTrailSpaces", e4.wrapTrailSpaces)), e4.footnoteLayoutLikeWW8 && this.root.push(new I("w:footnoteLayoutLikeWW8", e4.footnoteLayoutLikeWW8)), e4.shapeLayoutLikeWW8 && this.root.push(new I("w:shapeLayoutLikeWW8", e4.shapeLayoutLikeWW8)), e4.alignTablesRowByRow && this.root.push(new I("w:alignTablesRowByRow", e4.alignTablesRowByRow)), e4.forgetLastTabAlignment && this.root.push(new I("w:forgetLastTabAlignment", e4.forgetLastTabAlignment)), e4.adjustLineHeightInTable && this.root.push(new I("w:adjustLineHeightInTable", e4.adjustLineHeightInTable)), e4.autoSpaceLikeWord95 && this.root.push(new I("w:autoSpaceLikeWord95", e4.autoSpaceLikeWord95)), e4.noSpaceRaiseLower && this.root.push(new I("w:noSpaceRaiseLower", e4.noSpaceRaiseLower)), e4.doNotUseHTMLParagraphAutoSpacing && this.root.push(new I("w:doNotUseHTMLParagraphAutoSpacing", e4.doNotUseHTMLParagraphAutoSpacing)), e4.layoutRawTableWidth && this.root.push(new I("w:layoutRawTableWidth", e4.layoutRawTableWidth)), e4.layoutTableRowsApart && this.root.push(new I("w:layoutTableRowsApart", e4.layoutTableRowsApart)), e4.useWord97LineBreakRules && this.root.push(new I("w:useWord97LineBreakRules", e4.useWord97LineBreakRules)), e4.doNotBreakWrappedTables && this.root.push(new I("w:doNotBreakWrappedTables", e4.doNotBreakWrappedTables)), e4.doNotSnapToGridInCell && this.root.push(new I("w:doNotSnapToGridInCell", e4.doNotSnapToGridInCell)), e4.selectFieldWithFirstOrLastCharacter && this.root.push(new I("w:selectFldWithFirstOrLastChar", e4.selectFieldWithFirstOrLastCharacter)), e4.applyBreakingRules && this.root.push(new I("w:applyBreakingRules", e4.applyBreakingRules)), e4.doNotWrapTextWithPunctuation && this.root.push(new I("w:doNotWrapTextWithPunct", e4.doNotWrapTextWithPunctuation)), e4.doNotUseEastAsianBreakRules && this.root.push(new I("w:doNotUseEastAsianBreakRules", e4.doNotUseEastAsianBreakRules)), e4.useWord2002TableStyleRules && this.root.push(new I("w:useWord2002TableStyleRules", e4.useWord2002TableStyleRules)), e4.growAutofit && this.root.push(new I("w:growAutofit", e4.growAutofit)), e4.useFELayout && this.root.push(new I("w:useFELayout", e4.useFELayout)), e4.useNormalStyleForList && this.root.push(new I("w:useNormalStyleForList", e4.useNormalStyleForList)), e4.doNotUseIndentAsNumberingTabStop && this.root.push(new I("w:doNotUseIndentAsNumberingTabStop", e4.doNotUseIndentAsNumberingTabStop)), e4.useAlternateEastAsianLineBreakRules && this.root.push(new I("w:useAltKinsokuLineBreakRules", e4.useAlternateEastAsianLineBreakRules)), e4.allowSpaceOfSameStyleInTable && this.root.push(new I("w:allowSpaceOfSameStyleInTable", e4.allowSpaceOfSameStyleInTable)), e4.doNotSuppressIndentation && this.root.push(new I("w:doNotSuppressIndentation", e4.doNotSuppressIndentation)), e4.doNotAutofitConstrainedTables && this.root.push(new I("w:doNotAutofitConstrainedTables", e4.doNotAutofitConstrainedTables)), e4.autofitToFirstFixedWidthCell && this.root.push(new I("w:autofitToFirstFixedWidthCell", e4.autofitToFirstFixedWidthCell)), e4.underlineTabInNumberingList && this.root.push(new I("w:underlineTabInNumList", e4.underlineTabInNumberingList)), e4.displayHangulFixedWidth && this.root.push(new I("w:displayHangulFixedWidth", e4.displayHangulFixedWidth)), e4.splitPgBreakAndParaMark && this.root.push(new I("w:splitPgBreakAndParaMark", e4.splitPgBreakAndParaMark)), e4.doNotVerticallyAlignCellWithSp && this.root.push(new I("w:doNotVertAlignCellWithSp", e4.doNotVerticallyAlignCellWithSp)), e4.doNotBreakConstrainedForcedTable && this.root.push(new I("w:doNotBreakConstrainedForcedTable", e4.doNotBreakConstrainedForcedTable)), e4.ignoreVerticalAlignmentInTextboxes && this.root.push(new I("w:doNotVertAlignInTxbx", e4.ignoreVerticalAlignmentInTextboxes)), e4.useAnsiKerningPairs && this.root.push(new I("w:useAnsiKerningPairs", e4.useAnsiKerningPairs)), e4.cachedColumnBalance && this.root.push(new I("w:cachedColBalance", e4.cachedColumnBalance));
          }
        }
        class lo extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { wpc: "xmlns:wpc", mc: "xmlns:mc", o: "xmlns:o", r: "xmlns:r", m: "xmlns:m", v: "xmlns:v", wp14: "xmlns:wp14", wp: "xmlns:wp", w10: "xmlns:w10", w: "xmlns:w", w14: "xmlns:w14", w15: "xmlns:w15", wpg: "xmlns:wpg", wpi: "xmlns:wpi", wne: "xmlns:wne", wps: "xmlns:wps", Ignorable: "mc:Ignorable" };
          }
        }
        class ho extends s5 {
          constructor(e4) {
            var t4, r3, n2, s6;
            super("w:settings"), this.root.push(new lo({ wpc: "http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas", mc: "http://schemas.openxmlformats.org/markup-compatibility/2006", o: "urn:schemas-microsoft-com:office:office", r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships", m: "http://schemas.openxmlformats.org/officeDocument/2006/math", v: "urn:schemas-microsoft-com:vml", wp14: "http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing", wp: "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", w10: "urn:schemas-microsoft-com:office:word", w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main", w14: "http://schemas.microsoft.com/office/word/2010/wordml", w15: "http://schemas.microsoft.com/office/word/2012/wordml", wpg: "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup", wpi: "http://schemas.microsoft.com/office/word/2010/wordprocessingInk", wne: "http://schemas.microsoft.com/office/word/2006/wordml", wps: "http://schemas.microsoft.com/office/word/2010/wordprocessingShape", Ignorable: "w14 w15 wp14" })), this.root.push(new I("w:displayBackgroundShape", true)), void 0 !== e4.trackRevisions && this.root.push(new I("w:trackRevisions", e4.trackRevisions)), void 0 !== e4.evenAndOddHeaders && this.root.push(new I("w:evenAndOddHeaders", e4.evenAndOddHeaders)), void 0 !== e4.updateFields && this.root.push(new I("w:updateFields", e4.updateFields)), this.root.push(new uo(Object.assign(Object.assign({}, null !== (t4 = e4.compatibility) && void 0 !== t4 ? t4 : {}), { version: null !== (s6 = null !== (n2 = null === (r3 = e4.compatibility) || void 0 === r3 ? void 0 : r3.version) && void 0 !== n2 ? n2 : e4.compatibilityModeVersion) && void 0 !== s6 ? s6 : 15 })));
          }
        }
        class po extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { val: "w:val" };
          }
        }
        class fo extends s5 {
          constructor(e4) {
            super("w:name"), this.root.push(new po({ val: e4 }));
          }
        }
        class mo extends s5 {
          constructor(e4) {
            super("w:uiPriority"), this.root.push(new po({ val: (0, S3.vH)(e4) }));
          }
        }
        class wo extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { type: "w:type", styleId: "w:styleId", default: "w:default", customStyle: "w:customStyle" };
          }
        }
        class go extends s5 {
          constructor(e4, t4) {
            super("w:style"), this.root.push(new wo(e4)), t4.name && this.root.push(new fo(t4.name)), t4.basedOn && this.root.push(new N("w:basedOn", t4.basedOn)), t4.next && this.root.push(new N("w:next", t4.next)), t4.link && this.root.push(new N("w:link", t4.link)), void 0 !== t4.uiPriority && this.root.push(new mo(t4.uiPriority)), void 0 !== t4.semiHidden && this.root.push(new I("w:semiHidden", t4.semiHidden)), void 0 !== t4.unhideWhenUsed && this.root.push(new I("w:unhideWhenUsed", t4.unhideWhenUsed)), void 0 !== t4.quickFormat && this.root.push(new I("w:qFormat", t4.quickFormat));
          }
        }
        class yo extends go {
          constructor(e4) {
            super({ type: "paragraph", styleId: e4.id }, e4), this.paragraphProperties = new Sn(e4.paragraph), this.runProperties = new pe(e4.run), this.root.push(this.paragraphProperties), this.root.push(this.runProperties);
          }
        }
        class bo extends go {
          constructor(e4) {
            super({ type: "character", styleId: e4.id }, Object.assign({ uiPriority: 99, unhideWhenUsed: true }, e4)), this.runProperties = new pe(e4.run), this.root.push(this.runProperties);
          }
        }
        class xo extends yo {
          constructor(e4) {
            super(Object.assign(Object.assign({}, e4), { basedOn: "Normal", next: "Normal", quickFormat: true }));
          }
        }
        class vo extends xo {
          constructor(e4) {
            super(Object.assign(Object.assign({}, e4), { id: "Title", name: "Title" }));
          }
        }
        class _o extends xo {
          constructor(e4) {
            super(Object.assign(Object.assign({}, e4), { id: "Heading1", name: "Heading 1" }));
          }
        }
        class Eo extends xo {
          constructor(e4) {
            super(Object.assign(Object.assign({}, e4), { id: "Heading2", name: "Heading 2" }));
          }
        }
        class To extends xo {
          constructor(e4) {
            super(Object.assign(Object.assign({}, e4), { id: "Heading3", name: "Heading 3" }));
          }
        }
        class Ao extends xo {
          constructor(e4) {
            super(Object.assign(Object.assign({}, e4), { id: "Heading4", name: "Heading 4" }));
          }
        }
        class So extends xo {
          constructor(e4) {
            super(Object.assign(Object.assign({}, e4), { id: "Heading5", name: "Heading 5" }));
          }
        }
        class Io extends xo {
          constructor(e4) {
            super(Object.assign(Object.assign({}, e4), { id: "Heading6", name: "Heading 6" }));
          }
        }
        class Ro extends xo {
          constructor(e4) {
            super(Object.assign(Object.assign({}, e4), { id: "Strong", name: "Strong" }));
          }
        }
        class No extends yo {
          constructor(e4) {
            super(Object.assign(Object.assign({}, e4), { id: "ListParagraph", name: "List Paragraph", basedOn: "Normal", quickFormat: true }));
          }
        }
        class Co extends yo {
          constructor(e4) {
            super(Object.assign(Object.assign({}, e4), { id: "FootnoteText", name: "footnote text", link: "FootnoteTextChar", basedOn: "Normal", uiPriority: 99, semiHidden: true, unhideWhenUsed: true, paragraph: { spacing: { after: 0, line: 240, lineRule: Ae.AUTO } }, run: { size: 20 } }));
          }
        }
        class Oo extends bo {
          constructor(e4) {
            super(Object.assign(Object.assign({}, e4), { id: "FootnoteReference", name: "footnote reference", basedOn: "DefaultParagraphFont", semiHidden: true, run: { superScript: true } }));
          }
        }
        class ko extends bo {
          constructor(e4) {
            super(Object.assign(Object.assign({}, e4), { id: "FootnoteTextChar", name: "Footnote Text Char", basedOn: "DefaultParagraphFont", link: "FootnoteText", semiHidden: true, run: { size: 20 } }));
          }
        }
        class Lo extends bo {
          constructor(e4) {
            super(Object.assign(Object.assign({}, e4), { id: "Hyperlink", name: "Hyperlink", basedOn: "DefaultParagraphFont", run: { color: "0563C1", underline: { type: T2.SINGLE } } }));
          }
        }
        class Do extends s5 {
          constructor(e4) {
            if (super("w:styles"), e4.initialStyles && this.root.push(e4.initialStyles), e4.importedStyles) for (const t4 of e4.importedStyles) this.root.push(t4);
            if (e4.paragraphStyles) for (const t4 of e4.paragraphStyles) this.root.push(new yo(t4));
            if (e4.characterStyles) for (const t4 of e4.characterStyles) this.root.push(new bo(t4));
          }
        }
        class Po extends s5 {
          constructor(e4) {
            super("w:pPrDefault"), this.root.push(new Sn(e4));
          }
        }
        class Fo extends s5 {
          constructor(e4) {
            super("w:rPrDefault"), this.root.push(new pe(e4));
          }
        }
        class Bo extends s5 {
          constructor(e4) {
            super("w:docDefaults"), this.runPropertiesDefaults = new Fo(e4.run), this.paragraphPropertiesDefaults = new Po(e4.paragraph), this.root.push(this.runPropertiesDefaults), this.root.push(this.paragraphPropertiesDefaults);
          }
        }
        class Mo {
          newInstance(e4) {
            const t4 = (0, c.xml2js)(e4, { compact: false });
            let r3;
            for (const e5 of t4.elements || []) "w:styles" === e5.name && (r3 = e5);
            if (void 0 === r3) throw new Error("can not find styles element");
            const n2 = r3.elements || [];
            return new Do({ initialStyles: new p5(r3.attributes), importedStyles: n2.map(((e5) => u3(e5))) });
          }
        }
        class Uo {
          newInstance(e4 = {}) {
            var t4;
            return { initialStyles: new pn({ mc: "http://schemas.openxmlformats.org/markup-compatibility/2006", r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships", w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main", w14: "http://schemas.microsoft.com/office/word/2010/wordml", w15: "http://schemas.microsoft.com/office/word/2012/wordml", Ignorable: "w14 w15" }), importedStyles: [new Bo(null !== (t4 = e4.document) && void 0 !== t4 ? t4 : {}), new vo(Object.assign({ run: { size: 56 } }, e4.title)), new _o(Object.assign({ run: { color: "2E74B5", size: 32 } }, e4.heading1)), new Eo(Object.assign({ run: { color: "2E74B5", size: 26 } }, e4.heading2)), new To(Object.assign({ run: { color: "1F4D78", size: 24 } }, e4.heading3)), new Ao(Object.assign({ run: { color: "2E74B5", italics: true } }, e4.heading4)), new So(Object.assign({ run: { color: "2E74B5" } }, e4.heading5)), new Io(Object.assign({ run: { color: "1F4D78" } }, e4.heading6)), new Ro(Object.assign({ run: { bold: true } }, e4.strong)), new No(e4.listParagraph || {}), new Lo(e4.hyperlink || {}), new Oo(e4.footnoteReference || {}), new Co(e4.footnoteText || {}), new ko(e4.footnoteTextChar || {})] };
          }
        }
        class Ho {
          constructor(e4, t4 = {}) {
            var r3, n2, s6, i3, o2, a3, c2;
            if (this.currentRelationshipId = 1, this.headers = [], this.footers = [], this.coreProperties = new di(Object.assign(Object.assign({}, e4), { creator: null !== (r3 = e4.creator) && void 0 !== r3 ? r3 : "Un-named", revision: null !== (n2 = e4.revision) && void 0 !== n2 ? n2 : 1, lastModifiedBy: null !== (s6 = e4.lastModifiedBy) && void 0 !== s6 ? s6 : "Un-named" })), this.numbering = new oo(e4.numbering ? e4.numbering : { config: [] }), this.comments = new ur(null !== (i3 = e4.comments) && void 0 !== i3 ? i3 : { children: [] }), this.fileRelationships = new gn(), this.customProperties = new bi(null !== (o2 = e4.customProperties) && void 0 !== o2 ? o2 : []), this.appProperties = new oi(), this.footnotesWrapper = new Li(), this.contentTypes = new pi(), this.documentWrapper = new yn({ background: e4.background }), this.settings = new ho({ compatibilityModeVersion: e4.compatabilityModeVersion, compatibility: e4.compatibility, evenAndOddHeaders: !!e4.evenAndOddHeaderAndFooters, trackRevisions: null === (a3 = e4.features) || void 0 === a3 ? void 0 : a3.trackRevisions, updateFields: null === (c2 = e4.features) || void 0 === c2 ? void 0 : c2.updateFields }), this.media = t4.template && t4.template.media ? t4.template.media : new Bi(), t4.template && (this.currentRelationshipId = t4.template.currentRelationshipId + 1), t4.template && e4.externalStyles) throw Error("can not use both template and external styles");
            if (t4.template && t4.template.styles) {
              const e5 = new Mo();
              this.styles = e5.newInstance(t4.template.styles);
            } else if (e4.externalStyles) {
              const t5 = new Mo();
              this.styles = t5.newInstance(e4.externalStyles);
            } else if (e4.styles) {
              const t5 = new Uo().newInstance(e4.styles.default);
              this.styles = new Do(Object.assign(Object.assign({}, t5), e4.styles));
            } else {
              const e5 = new Uo();
              this.styles = new Do(e5.newInstance());
            }
            if (this.addDefaultRelationships(), t4.template && t4.template.headers) for (const e5 of t4.template.headers) this.addHeaderToDocument(e5.header, e5.type);
            if (t4.template && t4.template.footers) for (const e5 of t4.template.footers) this.addFooterToDocument(e5.footer, e5.type);
            for (const t5 of e4.sections) this.addSection(t5);
            if (e4.footnotes) for (const t5 in e4.footnotes) this.footnotesWrapper.View.createFootNote(parseFloat(t5), e4.footnotes[t5].children);
          }
          addSection({ headers: e4 = {}, footers: t4 = {}, children: r3, properties: n2 }) {
            this.documentWrapper.View.Body.addSection(Object.assign(Object.assign({}, n2), { headerWrapperGroup: { default: e4.default ? this.createHeader(e4.default) : void 0, first: e4.first ? this.createHeader(e4.first) : void 0, even: e4.even ? this.createHeader(e4.even) : void 0 }, footerWrapperGroup: { default: t4.default ? this.createFooter(t4.default) : void 0, first: t4.first ? this.createFooter(t4.first) : void 0, even: t4.even ? this.createFooter(t4.even) : void 0 } }));
            for (const e5 of r3) this.documentWrapper.View.add(e5);
          }
          createHeader(e4) {
            const t4 = new Fi(this.media, this.currentRelationshipId++);
            for (const r3 of e4.options.children) t4.add(r3);
            return this.addHeaderToDocument(t4), t4;
          }
          createFooter(e4) {
            const t4 = new _i(this.media, this.currentRelationshipId++);
            for (const r3 of e4.options.children) t4.add(r3);
            return this.addFooterToDocument(t4), t4;
          }
          addHeaderToDocument(e4, t4 = Le.DEFAULT) {
            this.headers.push({ header: e4, type: t4 }), this.documentWrapper.Relationships.createRelationship(e4.View.ReferenceId, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", `header${this.headers.length}.xml`), this.contentTypes.addHeader(this.headers.length);
          }
          addFooterToDocument(e4, t4 = Le.DEFAULT) {
            this.footers.push({ footer: e4, type: t4 }), this.documentWrapper.Relationships.createRelationship(e4.View.ReferenceId, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", `footer${this.footers.length}.xml`), this.contentTypes.addFooter(this.footers.length);
          }
          addDefaultRelationships() {
            this.fileRelationships.createRelationship(1, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument", "word/document.xml"), this.fileRelationships.createRelationship(2, "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties", "docProps/core.xml"), this.fileRelationships.createRelationship(3, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties", "docProps/app.xml"), this.fileRelationships.createRelationship(4, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties", "docProps/custom.xml"), this.documentWrapper.Relationships.createRelationship(this.currentRelationshipId++, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles", "styles.xml"), this.documentWrapper.Relationships.createRelationship(this.currentRelationshipId++, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering", "numbering.xml"), this.documentWrapper.Relationships.createRelationship(this.currentRelationshipId++, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes", "footnotes.xml"), this.documentWrapper.Relationships.createRelationship(this.currentRelationshipId++, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings", "settings.xml"), this.documentWrapper.Relationships.createRelationship(this.currentRelationshipId++, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments", "comments.xml");
          }
          get Document() {
            return this.documentWrapper;
          }
          get Styles() {
            return this.styles;
          }
          get CoreProperties() {
            return this.coreProperties;
          }
          get Numbering() {
            return this.numbering;
          }
          get Media() {
            return this.media;
          }
          get FileRelationships() {
            return this.fileRelationships;
          }
          get Headers() {
            return this.headers.map(((e4) => e4.header));
          }
          get Footers() {
            return this.footers.map(((e4) => e4.footer));
          }
          get ContentTypes() {
            return this.contentTypes;
          }
          get CustomProperties() {
            return this.customProperties;
          }
          get AppProperties() {
            return this.appProperties;
          }
          get FootNotes() {
            return this.footnotesWrapper;
          }
          get Settings() {
            return this.settings;
          }
          get Comments() {
            return this.comments;
          }
        }
        const zo = "";
        class jo extends s5 {
          constructor(e4 = {}) {
            super("w:instrText"), this.properties = e4, this.root.push(new V({ space: v.PRESERVE }));
            let t4 = "TOC";
            this.properties.captionLabel && (t4 = `${t4} \\a "${this.properties.captionLabel}"`), this.properties.entriesFromBookmark && (t4 = `${t4} \\b "${this.properties.entriesFromBookmark}"`), this.properties.captionLabelIncludingNumbers && (t4 = `${t4} \\c "${this.properties.captionLabelIncludingNumbers}"`), this.properties.sequenceAndPageNumbersSeparator && (t4 = `${t4} \\d "${this.properties.sequenceAndPageNumbersSeparator}"`), this.properties.tcFieldIdentifier && (t4 = `${t4} \\f "${this.properties.tcFieldIdentifier}"`), this.properties.hyperlink && (t4 = `${t4} \\h`), this.properties.tcFieldLevelRange && (t4 = `${t4} \\l "${this.properties.tcFieldLevelRange}"`), this.properties.pageNumbersEntryLevelsRange && (t4 = `${t4} \\n "${this.properties.pageNumbersEntryLevelsRange}"`), this.properties.headingStyleRange && (t4 = `${t4} \\o "${this.properties.headingStyleRange}"`), this.properties.entryAndPageNumberSeparator && (t4 = `${t4} \\p "${this.properties.entryAndPageNumberSeparator}"`), this.properties.seqFieldIdentifierForPrefix && (t4 = `${t4} \\s "${this.properties.seqFieldIdentifierForPrefix}"`), this.properties.stylesWithLevels && this.properties.stylesWithLevels.length && (t4 = `${t4} \\t "${this.properties.stylesWithLevels.map(((e5) => `${e5.styleName},${e5.level}`)).join(",")}"`), this.properties.useAppliedParagraphOutlineLevel && (t4 = `${t4} \\u`), this.properties.preserveTabInEntries && (t4 = `${t4} \\w`), this.properties.preserveNewLineInEntries && (t4 = `${t4} \\x`), this.properties.hideTabAndPageNumbersInWebView && (t4 = `${t4} \\z`), this.root.push(t4);
          }
        }
        class Wo extends s5 {
          constructor() {
            super("w:sdtContent");
          }
        }
        class Ko extends s5 {
          constructor(e4) {
            super("w:sdtPr"), this.root.push(new N("w:alias", e4));
          }
        }
        class Go extends s5 {
          constructor(e4 = "Table of Contents", t4) {
            super("w:sdt"), this.root.push(new Ko(e4));
            const r3 = new Wo(), n2 = new In({ children: [new me({ children: [new W(true), new jo(t4), new K()] })] });
            r3.addChildElement(n2);
            const s6 = new In({ children: [new me({ children: [new G()] })] });
            r3.addChildElement(s6), this.root.push(r3);
          }
        }
        class Vo {
          constructor(e4, t4) {
            this.styleName = e4, this.level = t4;
          }
        }
        class $o {
          constructor(e4 = { children: [] }) {
            this.options = e4;
          }
        }
        class Xo {
          constructor(e4 = { children: [] }) {
            this.options = e4;
          }
        }
        class qo extends o {
          constructor() {
            super(...arguments), this.xmlKeys = { id: "w:id" };
          }
        }
        class Zo extends s5 {
          constructor(e4) {
            super("w:footnoteReference"), this.root.push(new qo({ id: e4 }));
          }
        }
        class Yo extends me {
          constructor(e4) {
            super({ style: "FootnoteReference" }), this.root.push(new Zo(e4));
          }
        }
        class Jo extends s5 {
          constructor(e4) {
            super("w:ins"), this.root.push(new J({ id: e4.id, author: e4.author, date: e4.date })), this.addChildElement(new we(e4));
          }
        }
        class Qo extends s5 {
          constructor() {
            super("w:delInstrText"), this.root.push(new V({ space: v.PRESERVE })), this.root.push("PAGE");
          }
        }
        class ea extends s5 {
          constructor() {
            super("w:delInstrText"), this.root.push(new V({ space: v.PRESERVE })), this.root.push("NUMPAGES");
          }
        }
        class ta extends s5 {
          constructor() {
            super("w:delInstrText"), this.root.push(new V({ space: v.PRESERVE })), this.root.push("SECTIONPAGES");
          }
        }
        class ra extends s5 {
          constructor(e4) {
            super("w:delText"), this.root.push(new V({ space: v.PRESERVE })), this.root.push(e4);
          }
        }
        class na extends s5 {
          constructor(e4) {
            super("w:del"), this.root.push(new J({ id: e4.id, author: e4.author, date: e4.date })), this.deletedTextRunWrapper = new sa(e4), this.addChildElement(this.deletedTextRunWrapper);
          }
        }
        class sa extends s5 {
          constructor(e4) {
            if (super("w:r"), this.root.push(new pe(e4)), e4.children) for (const t4 of e4.children) if ("string" != typeof t4) this.root.push(t4);
            else switch (t4) {
              case A2.CURRENT:
                this.root.push(new W()), this.root.push(new Qo()), this.root.push(new K()), this.root.push(new G());
                break;
              case A2.TOTAL_PAGES:
                this.root.push(new W()), this.root.push(new ea()), this.root.push(new K()), this.root.push(new G());
                break;
              case A2.TOTAL_PAGES_IN_SECTION:
                this.root.push(new W()), this.root.push(new ta()), this.root.push(new K()), this.root.push(new G());
                break;
              default:
                this.root.push(new ra(t4));
            }
            else e4.text && this.root.push(new ra(e4.text));
            if (e4.break) for (let t4 = 0; t4 < e4.break; t4++) this.root.splice(1, 0, new z2());
          }
        }
        var ia = r2(6085), oa = r2(3479);
        class aa {
          format(e4, t4 = {}) {
            const r3 = e4.prepForXml(t4);
            if (r3) return r3;
            throw Error("XMLComponent did not format correctly");
          }
        }
        class ca {
          replace(e4, t4, r3) {
            let n2 = e4;
            return t4.forEach(((e5, t5) => {
              n2 = n2.replace(new RegExp(`{${e5.fileName}}`, "g"), (r3 + t5).toString());
            })), n2;
          }
          getMediaData(e4, t4) {
            return t4.Array.filter(((t5) => e4.search(`{${t5.fileName}}`) > 0));
          }
        }
        class ua {
          replace(e4, t4) {
            let r3 = e4;
            for (const e5 of t4) r3 = r3.replace(new RegExp(`{${e5.reference}-${e5.instance}}`, "g"), e5.numId.toString());
            return r3;
          }
        }
        var la, ha = function(e4, t4, r3, n2) {
          return new (r3 || (r3 = Promise))((function(s6, i3) {
            function o2(e5) {
              try {
                c2(n2.next(e5));
              } catch (e6) {
                i3(e6);
              }
            }
            function a3(e5) {
              try {
                c2(n2.throw(e5));
              } catch (e6) {
                i3(e6);
              }
            }
            function c2(e5) {
              var t5;
              e5.done ? s6(e5.value) : (t5 = e5.value, t5 instanceof r3 ? t5 : new r3((function(e6) {
                e6(t5);
              }))).then(o2, a3);
            }
            c2((n2 = n2.apply(e4, t4 || [])).next());
          }));
        };
        !(function(e4) {
          e4.NONE = "", e4.WITH_2_BLANKS = "  ", e4.WITH_4_BLANKS = "    ", e4.WITH_TAB = "	";
        })(la || (la = {}));
        class pa {
          static toString(e4, t4) {
            return ha(this, void 0, void 0, (function* () {
              const r3 = this.compiler.compile(e4, t4);
              return yield r3.generateAsync({ type: "string", mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", compression: "DEFLATE" });
            }));
          }
          static toBuffer(e4, t4) {
            return ha(this, void 0, void 0, (function* () {
              const r3 = this.compiler.compile(e4, t4);
              return yield r3.generateAsync({ type: "nodebuffer", mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", compression: "DEFLATE" });
            }));
          }
          static toBase64String(e4, t4) {
            return ha(this, void 0, void 0, (function* () {
              const r3 = this.compiler.compile(e4, t4);
              return yield r3.generateAsync({ type: "base64", mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", compression: "DEFLATE" });
            }));
          }
          static toBlob(e4, t4) {
            return ha(this, void 0, void 0, (function* () {
              const r3 = this.compiler.compile(e4, t4);
              return yield r3.generateAsync({ type: "blob", mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", compression: "DEFLATE" });
            }));
          }
          static toStream(e4, t4) {
            return this.compiler.compile(e4, t4).generateNodeStream({ type: "nodebuffer", streamFiles: true, mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", compression: "DEFLATE" });
          }
        }
        pa.compiler = new class {
          constructor() {
            this.formatter = new aa(), this.imageReplacer = new ca(), this.numberingReplacer = new ua();
          }
          compile(e4, t4) {
            const r3 = new ia(), n2 = this.xmlifyFile(e4, t4), s6 = new Map(Object.entries(n2));
            for (const [, e5] of s6) if (Array.isArray(e5)) for (const t5 of e5) r3.file(t5.path, t5.data);
            else r3.file(e5.path, e5.data);
            for (const t5 of e4.Media.Array) {
              const e5 = t5.stream;
              r3.file(`word/media/${t5.fileName}`, e5);
            }
            return r3;
          }
          xmlifyFile(e4, t4) {
            const r3 = e4.Document.Relationships.RelationshipCount + 1, n2 = oa(this.formatter.format(e4.Document.View, { viewWrapper: e4.Document, file: e4 }), { indent: t4, declaration: { standalone: "yes", encoding: "UTF-8" } }), s6 = this.imageReplacer.getMediaData(n2, e4.Media);
            return { Relationships: { data: (() => (s6.forEach(((t5, n3) => {
              e4.Document.Relationships.createRelationship(r3 + n3, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", `media/${t5.fileName}`);
            })), oa(this.formatter.format(e4.Document.Relationships, { viewWrapper: e4.Document, file: e4 }), { indent: t4, declaration: { encoding: "UTF-8" } })))(), path: "word/_rels/document.xml.rels" }, Document: { data: (() => {
              const t5 = this.imageReplacer.replace(n2, s6, r3);
              return this.numberingReplacer.replace(t5, e4.Numbering.ConcreteNumbering);
            })(), path: "word/document.xml" }, Styles: { data: (() => {
              const r4 = oa(this.formatter.format(e4.Styles, { viewWrapper: e4.Document, file: e4 }), { indent: t4, declaration: { standalone: "yes", encoding: "UTF-8" } });
              return this.numberingReplacer.replace(r4, e4.Numbering.ConcreteNumbering);
            })(), path: "word/styles.xml" }, Properties: { data: oa(this.formatter.format(e4.CoreProperties, { viewWrapper: e4.Document, file: e4 }), { indent: t4, declaration: { standalone: "yes", encoding: "UTF-8" } }), path: "docProps/core.xml" }, Numbering: { data: oa(this.formatter.format(e4.Numbering, { viewWrapper: e4.Document, file: e4 }), { indent: t4, declaration: { standalone: "yes", encoding: "UTF-8" } }), path: "word/numbering.xml" }, FileRelationships: { data: oa(this.formatter.format(e4.FileRelationships, { viewWrapper: e4.Document, file: e4 }), { indent: t4, declaration: { encoding: "UTF-8" } }), path: "_rels/.rels" }, HeaderRelationships: e4.Headers.map(((r4, n3) => {
              const s7 = oa(this.formatter.format(r4.View, { viewWrapper: r4, file: e4 }), { indent: t4, declaration: { encoding: "UTF-8" } });
              return this.imageReplacer.getMediaData(s7, e4.Media).forEach(((e5, t5) => {
                r4.Relationships.createRelationship(t5, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", `media/${e5.fileName}`);
              })), { data: oa(this.formatter.format(r4.Relationships, { viewWrapper: r4, file: e4 }), { indent: t4, declaration: { encoding: "UTF-8" } }), path: `word/_rels/header${n3 + 1}.xml.rels` };
            })), FooterRelationships: e4.Footers.map(((r4, n3) => {
              const s7 = oa(this.formatter.format(r4.View, { viewWrapper: r4, file: e4 }), { indent: t4, declaration: { encoding: "UTF-8" } });
              return this.imageReplacer.getMediaData(s7, e4.Media).forEach(((e5, t5) => {
                r4.Relationships.createRelationship(t5, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", `media/${e5.fileName}`);
              })), { data: oa(this.formatter.format(r4.Relationships, { viewWrapper: r4, file: e4 }), { indent: t4, declaration: { encoding: "UTF-8" } }), path: `word/_rels/footer${n3 + 1}.xml.rels` };
            })), Headers: e4.Headers.map(((r4, n3) => {
              const s7 = oa(this.formatter.format(r4.View, { viewWrapper: r4, file: e4 }), { indent: t4, declaration: { encoding: "UTF-8" } }), i3 = this.imageReplacer.getMediaData(s7, e4.Media), o2 = this.imageReplacer.replace(s7, i3, 0);
              return { data: this.numberingReplacer.replace(o2, e4.Numbering.ConcreteNumbering), path: `word/header${n3 + 1}.xml` };
            })), Footers: e4.Footers.map(((r4, n3) => {
              const s7 = oa(this.formatter.format(r4.View, { viewWrapper: r4, file: e4 }), { indent: t4, declaration: { encoding: "UTF-8" } }), i3 = this.imageReplacer.getMediaData(s7, e4.Media), o2 = this.imageReplacer.replace(s7, i3, 0);
              return { data: this.numberingReplacer.replace(o2, e4.Numbering.ConcreteNumbering), path: `word/footer${n3 + 1}.xml` };
            })), ContentTypes: { data: oa(this.formatter.format(e4.ContentTypes, { viewWrapper: e4.Document, file: e4 }), { indent: t4, declaration: { encoding: "UTF-8" } }), path: "[Content_Types].xml" }, CustomProperties: { data: oa(this.formatter.format(e4.CustomProperties, { viewWrapper: e4.Document, file: e4 }), { indent: t4, declaration: { standalone: "yes", encoding: "UTF-8" } }), path: "docProps/custom.xml" }, AppProperties: { data: oa(this.formatter.format(e4.AppProperties, { viewWrapper: e4.Document, file: e4 }), { indent: t4, declaration: { standalone: "yes", encoding: "UTF-8" } }), path: "docProps/app.xml" }, FootNotes: { data: oa(this.formatter.format(e4.FootNotes.View, { viewWrapper: e4.FootNotes, file: e4 }), { indent: t4, declaration: { encoding: "UTF-8" } }), path: "word/footnotes.xml" }, FootNotesRelationships: { data: oa(this.formatter.format(e4.FootNotes.Relationships, { viewWrapper: e4.FootNotes, file: e4 }), { indent: t4, declaration: { encoding: "UTF-8" } }), path: "word/_rels/footnotes.xml.rels" }, Settings: { data: oa(this.formatter.format(e4.Settings, { viewWrapper: e4.Document, file: e4 }), { indent: t4, declaration: { standalone: "yes", encoding: "UTF-8" } }), path: "word/settings.xml" }, Comments: { data: oa(this.formatter.format(e4.Comments, { viewWrapper: e4.Document, file: e4 }), { indent: t4, declaration: { standalone: "yes", encoding: "UTF-8" } }), path: "word/comments.xml" } };
          }
        }();
        var da = function(e4, t4, r3, n2) {
          return new (r3 || (r3 = Promise))((function(s6, i3) {
            function o2(e5) {
              try {
                c2(n2.next(e5));
              } catch (e6) {
                i3(e6);
              }
            }
            function a3(e5) {
              try {
                c2(n2.throw(e5));
              } catch (e6) {
                i3(e6);
              }
            }
            function c2(e5) {
              var t5;
              e5.done ? s6(e5.value) : (t5 = e5.value, t5 instanceof r3 ? t5 : new r3((function(e6) {
                e6(t5);
              }))).then(o2, a3);
            }
            c2((n2 = n2.apply(e4, t4 || [])).next());
          }));
        };
        const fa = { "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header": "header", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer": "footer", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image": "image", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink": "hyperlink" };
        var ma;
        !(function(e4) {
          e4.HEADER = "header", e4.FOOTER = "footer", e4.IMAGE = "image", e4.HYPERLINK = "hyperlink";
        })(ma || (ma = {}));
        class wa {
          extract(e4) {
            return da(this, void 0, void 0, (function* () {
              const t4 = yield ia.loadAsync(e4), r3 = yield t4.files["word/document.xml"].async("text"), n2 = yield t4.files["word/_rels/document.xml.rels"].async("text"), s6 = this.extractDocumentRefs(r3), i3 = this.findReferenceFiles(n2), o2 = new Bi();
              return { headers: yield this.createHeaders(t4, s6, i3, o2, 0), footers: yield this.createFooters(t4, s6, i3, o2, s6.headers.length), currentRelationshipId: s6.footers.length + s6.headers.length, styles: yield t4.files["word/styles.xml"].async("text"), titlePageIsDefined: this.checkIfTitlePageIsDefined(r3), media: o2 };
            }));
          }
          createFooters(e4, t4, r3, n2, s6) {
            return da(this, void 0, void 0, (function* () {
              const i3 = t4.footers.map(((t5, i4) => da(this, void 0, void 0, (function* () {
                const o2 = r3.find(((e5) => e5.id === t5.id));
                if (null === o2 || !o2) throw new Error(`Can not find target file for id ${t5.id}`);
                const a3 = yield e4.files[`word/${o2.target}`].async("text"), l2 = (0, c.xml2js)(a3, { compact: false, captureSpacesBetweenElements: true });
                if (!l2.elements) return;
                const h5 = l2.elements.reduce(((e5, t6) => "w:ftr" === t6.name ? t6 : e5)), p6 = u3(h5), d2 = new _i(n2, s6 + i4, p6);
                return yield this.addRelationshipToWrapper(o2, e4, d2, n2), { type: t5.type, footer: d2 };
              })))).filter(((e5) => !!e5));
              return Promise.all(i3);
            }));
          }
          createHeaders(e4, t4, r3, n2, s6) {
            return da(this, void 0, void 0, (function* () {
              const i3 = t4.headers.map(((t5, i4) => da(this, void 0, void 0, (function* () {
                const o2 = r3.find(((e5) => e5.id === t5.id));
                if (null === o2 || !o2) throw new Error(`Can not find target file for id ${t5.id}`);
                const a3 = yield e4.files[`word/${o2.target}`].async("text"), l2 = (0, c.xml2js)(a3, { compact: false, captureSpacesBetweenElements: true });
                if (!l2.elements) return;
                const h5 = l2.elements.reduce(((e5, t6) => "w:hdr" === t6.name ? t6 : e5)), p6 = u3(h5), d2 = new Fi(n2, s6 + i4, p6);
                return yield this.addRelationshipToWrapper(o2, e4, d2, n2), { type: t5.type, header: d2 };
              })))).filter(((e5) => !!e5));
              return Promise.all(i3);
            }));
          }
          addRelationshipToWrapper(e4, t4, r3, n2) {
            return da(this, void 0, void 0, (function* () {
              const s6 = t4.files[`word/_rels/${e4.target}.rels`];
              if (!s6) return;
              const i3 = yield s6.async("text"), o2 = this.findReferenceFiles(i3).filter(((e5) => e5.type === ma.IMAGE)), a3 = this.findReferenceFiles(i3).filter(((e5) => e5.type === ma.HYPERLINK));
              for (const e5 of o2) {
                const s7 = ia.support.arraybuffer ? "arraybuffer" : "nodebuffer", i4 = yield t4.files[`word/${e5.target}`].async(s7), o3 = n2.addMedia(i4, { width: 100, height: 100 });
                r3.Relationships.createRelationship(e5.id, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", `media/${o3.fileName}`);
              }
              for (const e5 of a3) r3.Relationships.createRelationship(e5.id, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink", e5.target, Ce.EXTERNAL);
            }));
          }
          findReferenceFiles(e4) {
            const t4 = (0, c.xml2js)(e4, { compact: true });
            return (Array.isArray(t4.Relationships.Relationship) ? t4.Relationships.Relationship : [t4.Relationships.Relationship]).map(((e5) => {
              if (void 0 === e5._attributes) throw Error("relationship element has no attributes");
              return { id: this.parseRefId(e5._attributes.Id), type: fa[e5._attributes.Type], target: e5._attributes.Target };
            })).filter(((e5) => null !== e5.type));
          }
          extractDocumentRefs(e4) {
            const t4 = (0, c.xml2js)(e4, { compact: true })["w:document"]["w:body"]["w:sectPr"], r3 = t4["w:headerReference"];
            let n2;
            n2 = void 0 === r3 ? [] : Array.isArray(r3) ? r3 : [r3];
            const s6 = n2.map(((e5) => {
              if (void 0 === e5._attributes) throw Error("header reference element has no attributes");
              return { type: e5._attributes["w:type"], id: this.parseRefId(e5._attributes["r:id"]) };
            })), i3 = t4["w:footerReference"];
            let o2;
            return o2 = void 0 === i3 ? [] : Array.isArray(i3) ? i3 : [i3], { headers: s6, footers: o2.map(((e5) => {
              if (void 0 === e5._attributes) throw Error("footer reference element has no attributes");
              return { type: e5._attributes["w:type"], id: this.parseRefId(e5._attributes["r:id"]) };
            })) };
          }
          checkIfTitlePageIsDefined(e4) {
            return void 0 !== (0, c.xml2js)(e4, { compact: true })["w:document"]["w:body"]["w:sectPr"]["w:titlePg"];
          }
          parseRefId(e4) {
            const t4 = /^rId(\d+)$/.exec(e4);
            if (null === t4) throw new Error("Invalid ref id");
            return parseInt(t4[1], 10);
          }
        }
        var ga = r2(5575);
      })(), n;
    })()));
  }
});

// ../../node_modules/buffer-image-size/lib/types/bmp.js
var require_bmp = __commonJS({
  "../../node_modules/buffer-image-size/lib/types/bmp.js"(exports2, module2) {
    "use strict";
    function isBMP(buffer2) {
      return "BM" === buffer2.toString("ascii", 0, 2);
    }
    function calculate(buffer2) {
      return {
        "width": buffer2.readUInt32LE(18),
        "height": Math.abs(buffer2.readInt32LE(22))
      };
    }
    module2.exports = {
      "detect": isBMP,
      "calculate": calculate
    };
  }
});

// ../../node_modules/buffer-image-size/lib/types/ico.js
var require_ico = __commonJS({
  "../../node_modules/buffer-image-size/lib/types/ico.js"(exports2, module2) {
    "use strict";
    var TYPE_ICON = 1;
    var SIZE_HEADER = 2 + 2 + 2;
    var SIZE_IMAGE_ENTRY = 1 + 1 + 1 + 1 + 2 + 2 + 4 + 4;
    function isICO(buffer2) {
      var type2;
      if (buffer2.readUInt16LE(0) !== 0) {
        return false;
      }
      type2 = buffer2.readUInt16LE(2);
      return type2 === TYPE_ICON;
    }
    function getSizeFromOffset(buffer2, offset) {
      var value = buffer2.readUInt8(offset);
      return value === 0 ? 256 : value;
    }
    function getImageSize(buffer2, imageIndex) {
      var offset = SIZE_HEADER + imageIndex * SIZE_IMAGE_ENTRY;
      return {
        "width": getSizeFromOffset(buffer2, offset),
        "height": getSizeFromOffset(buffer2, offset + 1)
      };
    }
    function calculate(buffer2) {
      var nbImages = buffer2.readUInt16LE(4), result = getImageSize(buffer2, 0), imageIndex;
      if (nbImages === 1) {
        return result;
      }
      result.images = [{
        width: result.width,
        height: result.height
      }];
      for (imageIndex = 1; imageIndex < nbImages; imageIndex += 1) {
        result.images.push(getImageSize(buffer2, imageIndex));
      }
      return result;
    }
    module2.exports = {
      "detect": isICO,
      "calculate": calculate
    };
  }
});

// ../../node_modules/buffer-image-size/lib/types/cur.js
var require_cur = __commonJS({
  "../../node_modules/buffer-image-size/lib/types/cur.js"(exports2, module2) {
    "use strict";
    var TYPE_CURSOR = 2;
    function isCUR(buffer2) {
      var type2;
      if (buffer2.readUInt16LE(0) !== 0) {
        return false;
      }
      type2 = buffer2.readUInt16LE(2);
      return type2 === TYPE_CURSOR;
    }
    module2.exports = {
      "detect": isCUR,
      "calculate": require_ico().calculate
    };
  }
});

// ../../node_modules/buffer-image-size/lib/types/dds.js
var require_dds = __commonJS({
  "../../node_modules/buffer-image-size/lib/types/dds.js"(exports2, module2) {
    "use strict";
    function isDDS(buffer2) {
      return buffer2.readUInt32LE(0) === 542327876;
    }
    function calculate(buffer2) {
      return {
        "height": buffer2.readUInt32LE(12),
        "width": buffer2.readUInt32LE(16)
      };
    }
    module2.exports = {
      "detect": isDDS,
      "calculate": calculate
    };
  }
});

// ../../node_modules/buffer-image-size/lib/types/gif.js
var require_gif = __commonJS({
  "../../node_modules/buffer-image-size/lib/types/gif.js"(exports2, module2) {
    "use strict";
    var gifRegexp = /^GIF8[79]a/;
    function isGIF(buffer2) {
      var signature = buffer2.toString("ascii", 0, 6);
      return gifRegexp.test(signature);
    }
    function calculate(buffer2) {
      return {
        "width": buffer2.readUInt16LE(6),
        "height": buffer2.readUInt16LE(8)
      };
    }
    module2.exports = {
      "detect": isGIF,
      "calculate": calculate
    };
  }
});

// ../../node_modules/buffer-image-size/lib/types/jpg.js
var require_jpg = __commonJS({
  "../../node_modules/buffer-image-size/lib/types/jpg.js"(exports2, module2) {
    "use strict";
    function isJPG(buffer2) {
      var SOIMarker = buffer2.toString("hex", 0, 2);
      return "ffd8" === SOIMarker;
    }
    function extractSize(buffer2, i2) {
      return {
        "height": buffer2.readUInt16BE(i2),
        "width": buffer2.readUInt16BE(i2 + 2)
      };
    }
    function validateBuffer(buffer2, i2) {
      if (i2 > buffer2.length) {
        throw new TypeError("Corrupt JPG, exceeded buffer limits");
      }
      if (buffer2[i2] !== 255) {
        throw new TypeError("Invalid JPG, marker table corrupted");
      }
    }
    function calculate(buffer2) {
      buffer2 = buffer2.slice(4);
      var i2, next;
      while (buffer2.length) {
        i2 = buffer2.readUInt16BE(0);
        validateBuffer(buffer2, i2);
        next = buffer2[i2 + 1];
        if (next === 192 || next === 193 || next === 194) {
          return extractSize(buffer2, i2 + 5);
        }
        buffer2 = buffer2.slice(i2 + 2);
      }
      throw new TypeError("Invalid JPG, no size found");
    }
    module2.exports = {
      "detect": isJPG,
      "calculate": calculate
    };
  }
});

// ../../node_modules/buffer-image-size/lib/types/png.js
var require_png = __commonJS({
  "../../node_modules/buffer-image-size/lib/types/png.js"(exports2, module2) {
    "use strict";
    var pngSignature = "PNG\r\n\n";
    var pngImageHeaderChunkName = "IHDR";
    var pngFriedChunkName = "CgBI";
    function isPNG(buffer2) {
      if (pngSignature === buffer2.toString("ascii", 1, 8)) {
        var chunkName = buffer2.toString("ascii", 12, 16);
        if (chunkName === pngFriedChunkName) {
          chunkName = buffer2.toString("ascii", 28, 32);
        }
        if (chunkName !== pngImageHeaderChunkName) {
          throw new TypeError("invalid png");
        }
        return true;
      }
    }
    function calculate(buffer2) {
      if (buffer2.toString("ascii", 12, 16) === pngFriedChunkName) {
        return {
          "width": buffer2.readUInt32BE(32),
          "height": buffer2.readUInt32BE(36)
        };
      }
      return {
        "width": buffer2.readUInt32BE(16),
        "height": buffer2.readUInt32BE(20)
      };
    }
    module2.exports = {
      "detect": isPNG,
      "calculate": calculate
    };
  }
});

// ../../node_modules/buffer-image-size/lib/types/psd.js
var require_psd = __commonJS({
  "../../node_modules/buffer-image-size/lib/types/psd.js"(exports2, module2) {
    "use strict";
    function isPSD(buffer2) {
      return "8BPS" === buffer2.toString("ascii", 0, 4);
    }
    function calculate(buffer2) {
      return {
        "width": buffer2.readUInt32BE(18),
        "height": buffer2.readUInt32BE(14)
      };
    }
    module2.exports = {
      "detect": isPSD,
      "calculate": calculate
    };
  }
});

// ../../node_modules/buffer-image-size/lib/types/svg.js
var require_svg = __commonJS({
  "../../node_modules/buffer-image-size/lib/types/svg.js"(exports2, module2) {
    "use strict";
    var svgReg = /<svg[^>]+[^>]*>/;
    function isSVG(buffer2) {
      return svgReg.test(buffer2);
    }
    var extractorRegExps = {
      "root": /<svg\s[^>]+>/,
      "width": /\bwidth=(['"])([^%]+?)\1/,
      "height": /\bheight=(['"])([^%]+?)\1/,
      "viewbox": /\bviewBox=(['"])(.+?)\1/
    };
    function parseViewbox(viewbox) {
      var bounds = viewbox.split(" ");
      return {
        "width": parseInt(bounds[2], 10),
        "height": parseInt(bounds[3], 10)
      };
    }
    function parseAttributes(root6) {
      var width = root6.match(extractorRegExps.width);
      var height2 = root6.match(extractorRegExps.height);
      var viewbox = root6.match(extractorRegExps.viewbox);
      return {
        "width": width && parseInt(width[2], 10),
        "height": height2 && parseInt(height2[2], 10),
        "viewbox": viewbox && parseViewbox(viewbox[2])
      };
    }
    function calculateByDimensions(attrs) {
      return {
        "width": attrs.width,
        "height": attrs.height
      };
    }
    function calculateByViewbox(attrs) {
      var ratio = attrs.viewbox.width / attrs.viewbox.height;
      if (attrs.width) {
        return {
          "width": attrs.width,
          "height": Math.floor(attrs.width / ratio)
        };
      }
      if (attrs.height) {
        return {
          "width": Math.floor(attrs.height * ratio),
          "height": attrs.height
        };
      }
      return {
        "width": attrs.viewbox.width,
        "height": attrs.viewbox.height
      };
    }
    function calculate(buffer2) {
      var root6 = buffer2.toString("utf8").match(extractorRegExps.root);
      if (root6) {
        var attrs = parseAttributes(root6[0]);
        if (attrs.width && attrs.height) {
          return calculateByDimensions(attrs);
        }
        if (attrs.viewbox) {
          return calculateByViewbox(attrs);
        }
      }
      throw new TypeError("invalid svg");
    }
    module2.exports = {
      "detect": isSVG,
      "calculate": calculate
    };
  }
});

// ../../node_modules/buffer-image-size/lib/types/webp.js
var require_webp = __commonJS({
  "../../node_modules/buffer-image-size/lib/types/webp.js"(exports2, module2) {
    "use strict";
    function isWebP(buffer2) {
      var riffHeader = "RIFF" === buffer2.toString("ascii", 0, 4);
      var webpHeader = "WEBP" === buffer2.toString("ascii", 8, 12);
      var vp8Header = "VP8" === buffer2.toString("ascii", 12, 15);
      return riffHeader && webpHeader && vp8Header;
    }
    function calculate(buffer2) {
      var chunkHeader = buffer2.toString("ascii", 12, 16);
      buffer2 = buffer2.slice(20, 30);
      if (chunkHeader === "VP8X") {
        var extendedHeader = buffer2[0];
        var validStart = (extendedHeader & 192) === 0;
        var validEnd = (extendedHeader & 1) === 0;
        if (validStart && validEnd) {
          return calculateExtended(buffer2);
        } else {
          return false;
        }
      }
      if (chunkHeader === "VP8 " && buffer2[0] !== 47) {
        return calculateLossy(buffer2);
      }
      var signature = buffer2.toString("hex", 3, 6);
      if (chunkHeader === "VP8L" && signature !== "9d012a") {
        return calculateLossless(buffer2);
      }
      return false;
    }
    function calculateExtended(buffer2) {
      return {
        "width": 1 + buffer2.readUIntLE(4, 3),
        "height": 1 + buffer2.readUIntLE(7, 3)
      };
    }
    function calculateLossless(buffer2) {
      return {
        "width": 1 + ((buffer2[2] & 63) << 8 | buffer2[1]),
        "height": 1 + ((buffer2[4] & 15) << 10 | buffer2[3] << 2 | (buffer2[2] & 192) >> 6)
      };
    }
    function calculateLossy(buffer2) {
      return {
        "width": buffer2.readInt16LE(6) & 16383,
        "height": buffer2.readInt16LE(8) & 16383
      };
    }
    module2.exports = {
      "detect": isWebP,
      "calculate": calculate
    };
  }
});

// ../../node_modules/buffer-image-size/lib/types.js
var require_types = __commonJS({
  "../../node_modules/buffer-image-size/lib/types.js"(exports2, module2) {
    "use strict";
    var typeHandlers = {
      bmp: require_bmp(),
      cur: require_cur(),
      dds: require_dds(),
      gif: require_gif(),
      ico: require_ico(),
      jpg: require_jpg(),
      png: require_png(),
      psd: require_psd(),
      svg: require_svg(),
      webp: require_webp()
    };
    module2.exports = typeHandlers;
  }
});

// ../../node_modules/buffer-image-size/lib/detector.js
var require_detector = __commonJS({
  "../../node_modules/buffer-image-size/lib/detector.js"(exports2, module2) {
    "use strict";
    var typeHandlers = require_types();
    module2.exports = function(buffer2) {
      var type2, result;
      for (type2 in typeHandlers) {
        result = typeHandlers[type2].detect(buffer2);
        if (result) {
          return type2;
        }
      }
    };
  }
});

// ../../node_modules/buffer-image-size/lib/index.js
var require_lib18 = __commonJS({
  "../../node_modules/buffer-image-size/lib/index.js"(exports2, module2) {
    "use strict";
    var typeHandlers = require_types();
    var detector = require_detector();
    function lookup2(buffer2) {
      var type2 = detector(buffer2);
      if (type2 in typeHandlers) {
        var size = typeHandlers[type2].calculate(buffer2);
        if (size !== false) {
          size.type = type2;
          return size;
        }
      }
      throw new TypeError("unsupported file type: " + type2);
    }
    module2.exports = function(input3) {
      if (Buffer.isBuffer(input3)) {
        return lookup2(input3);
      }
      throw new TypeError("expecting only a buffer as input");
    };
    module2.exports.types = Object.keys(typeHandlers);
  }
});

// ../../node_modules/sax/lib/sax.js
var require_sax = __commonJS({
  "../../node_modules/sax/lib/sax.js"(exports2) {
    (function(sax) {
      sax.parser = function(strict, opt) {
        return new SAXParser(strict, opt);
      };
      sax.SAXParser = SAXParser;
      sax.SAXStream = SAXStream;
      sax.createStream = createStream;
      sax.MAX_BUFFER_LENGTH = 64 * 1024;
      var buffers = [
        "comment",
        "sgmlDecl",
        "textNode",
        "tagName",
        "doctype",
        "procInstName",
        "procInstBody",
        "entity",
        "attribName",
        "attribValue",
        "cdata",
        "script"
      ];
      sax.EVENTS = [
        "text",
        "processinginstruction",
        "sgmldeclaration",
        "doctype",
        "comment",
        "opentagstart",
        "attribute",
        "opentag",
        "closetag",
        "opencdata",
        "cdata",
        "closecdata",
        "error",
        "end",
        "ready",
        "script",
        "opennamespace",
        "closenamespace"
      ];
      function SAXParser(strict, opt) {
        if (!(this instanceof SAXParser)) {
          return new SAXParser(strict, opt);
        }
        var parser3 = this;
        clearBuffers(parser3);
        parser3.q = parser3.c = "";
        parser3.bufferCheckPosition = sax.MAX_BUFFER_LENGTH;
        parser3.opt = opt || {};
        parser3.opt.lowercase = parser3.opt.lowercase || parser3.opt.lowercasetags;
        parser3.looseCase = parser3.opt.lowercase ? "toLowerCase" : "toUpperCase";
        parser3.tags = [];
        parser3.closed = parser3.closedRoot = parser3.sawRoot = false;
        parser3.tag = parser3.error = null;
        parser3.strict = !!strict;
        parser3.noscript = !!(strict || parser3.opt.noscript);
        parser3.state = S3.BEGIN;
        parser3.strictEntities = parser3.opt.strictEntities;
        parser3.ENTITIES = parser3.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES);
        parser3.attribList = [];
        if (parser3.opt.xmlns) {
          parser3.ns = Object.create(rootNS);
        }
        parser3.trackPosition = parser3.opt.position !== false;
        if (parser3.trackPosition) {
          parser3.position = parser3.line = parser3.column = 0;
        }
        emit(parser3, "onready");
      }
      if (!Object.create) {
        Object.create = function(o) {
          function F2() {
          }
          F2.prototype = o;
          var newf = new F2();
          return newf;
        };
      }
      if (!Object.keys) {
        Object.keys = function(o) {
          var a2 = [];
          for (var i2 in o) if (o.hasOwnProperty(i2)) a2.push(i2);
          return a2;
        };
      }
      function checkBufferLength(parser3) {
        var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10);
        var maxActual = 0;
        for (var i2 = 0, l = buffers.length; i2 < l; i2++) {
          var len = parser3[buffers[i2]].length;
          if (len > maxAllowed) {
            switch (buffers[i2]) {
              case "textNode":
                closeText(parser3);
                break;
              case "cdata":
                emitNode(parser3, "oncdata", parser3.cdata);
                parser3.cdata = "";
                break;
              case "script":
                emitNode(parser3, "onscript", parser3.script);
                parser3.script = "";
                break;
              default:
                error(parser3, "Max buffer length exceeded: " + buffers[i2]);
            }
          }
          maxActual = Math.max(maxActual, len);
        }
        var m2 = sax.MAX_BUFFER_LENGTH - maxActual;
        parser3.bufferCheckPosition = m2 + parser3.position;
      }
      function clearBuffers(parser3) {
        for (var i2 = 0, l = buffers.length; i2 < l; i2++) {
          parser3[buffers[i2]] = "";
        }
      }
      function flushBuffers(parser3) {
        closeText(parser3);
        if (parser3.cdata !== "") {
          emitNode(parser3, "oncdata", parser3.cdata);
          parser3.cdata = "";
        }
        if (parser3.script !== "") {
          emitNode(parser3, "onscript", parser3.script);
          parser3.script = "";
        }
      }
      SAXParser.prototype = {
        end: function() {
          end(this);
        },
        write: write3,
        resume: function() {
          this.error = null;
          return this;
        },
        close: function() {
          return this.write(null);
        },
        flush: function() {
          flushBuffers(this);
        }
      };
      var Stream4;
      try {
        Stream4 = require("stream").Stream;
      } catch (ex) {
        Stream4 = function() {
        };
      }
      var streamWraps = sax.EVENTS.filter(function(ev) {
        return ev !== "error" && ev !== "end";
      });
      function createStream(strict, opt) {
        return new SAXStream(strict, opt);
      }
      function SAXStream(strict, opt) {
        if (!(this instanceof SAXStream)) {
          return new SAXStream(strict, opt);
        }
        Stream4.apply(this);
        this._parser = new SAXParser(strict, opt);
        this.writable = true;
        this.readable = true;
        var me = this;
        this._parser.onend = function() {
          me.emit("end");
        };
        this._parser.onerror = function(er) {
          me.emit("error", er);
          me._parser.error = null;
        };
        this._decoder = null;
        streamWraps.forEach(function(ev) {
          Object.defineProperty(me, "on" + ev, {
            get: function() {
              return me._parser["on" + ev];
            },
            set: function(h4) {
              if (!h4) {
                me.removeAllListeners(ev);
                me._parser["on" + ev] = h4;
                return h4;
              }
              me.on(ev, h4);
            },
            enumerable: true,
            configurable: false
          });
        });
      }
      SAXStream.prototype = Object.create(Stream4.prototype, {
        constructor: {
          value: SAXStream
        }
      });
      SAXStream.prototype.write = function(data) {
        if (typeof Buffer === "function" && typeof Buffer.isBuffer === "function" && Buffer.isBuffer(data)) {
          if (!this._decoder) {
            var SD = require("string_decoder").StringDecoder;
            this._decoder = new SD("utf8");
          }
          data = this._decoder.write(data);
        }
        this._parser.write(data.toString());
        this.emit("data", data);
        return true;
      };
      SAXStream.prototype.end = function(chunk) {
        if (chunk && chunk.length) {
          this.write(chunk);
        }
        this._parser.end();
        return true;
      };
      SAXStream.prototype.on = function(ev, handler) {
        var me = this;
        if (!me._parser["on" + ev] && streamWraps.indexOf(ev) !== -1) {
          me._parser["on" + ev] = function() {
            var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments);
            args.splice(0, 0, ev);
            me.emit.apply(me, args);
          };
        }
        return Stream4.prototype.on.call(me, ev, handler);
      };
      var CDATA = "[CDATA[";
      var DOCTYPE = "DOCTYPE";
      var XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace";
      var XMLNS_NAMESPACE = "http://www.w3.org/2000/xmlns/";
      var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE };
      var nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/;
      var nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/;
      var entityStart = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/;
      var entityBody = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/;
      function isWhitespace3(c) {
        return c === " " || c === "\n" || c === "\r" || c === "	";
      }
      function isQuote(c) {
        return c === '"' || c === "'";
      }
      function isAttribEnd(c) {
        return c === ">" || isWhitespace3(c);
      }
      function isMatch(regex2, c) {
        return regex2.test(c);
      }
      function notMatch(regex2, c) {
        return !isMatch(regex2, c);
      }
      var S3 = 0;
      sax.STATE = {
        BEGIN: S3++,
        // leading byte order mark or whitespace
        BEGIN_WHITESPACE: S3++,
        // leading whitespace
        TEXT: S3++,
        // general stuff
        TEXT_ENTITY: S3++,
        // &amp and such.
        OPEN_WAKA: S3++,
        // <
        SGML_DECL: S3++,
        // <!BLARG
        SGML_DECL_QUOTED: S3++,
        // <!BLARG foo "bar
        DOCTYPE: S3++,
        // <!DOCTYPE
        DOCTYPE_QUOTED: S3++,
        // <!DOCTYPE "//blah
        DOCTYPE_DTD: S3++,
        // <!DOCTYPE "//blah" [ ...
        DOCTYPE_DTD_QUOTED: S3++,
        // <!DOCTYPE "//blah" [ "foo
        COMMENT_STARTING: S3++,
        // <!-
        COMMENT: S3++,
        // <!--
        COMMENT_ENDING: S3++,
        // <!-- blah -
        COMMENT_ENDED: S3++,
        // <!-- blah --
        CDATA: S3++,
        // <![CDATA[ something
        CDATA_ENDING: S3++,
        // ]
        CDATA_ENDING_2: S3++,
        // ]]
        PROC_INST: S3++,
        // <?hi
        PROC_INST_BODY: S3++,
        // <?hi there
        PROC_INST_ENDING: S3++,
        // <?hi "there" ?
        OPEN_TAG: S3++,
        // <strong
        OPEN_TAG_SLASH: S3++,
        // <strong /
        ATTRIB: S3++,
        // <a
        ATTRIB_NAME: S3++,
        // <a foo
        ATTRIB_NAME_SAW_WHITE: S3++,
        // <a foo _
        ATTRIB_VALUE: S3++,
        // <a foo=
        ATTRIB_VALUE_QUOTED: S3++,
        // <a foo="bar
        ATTRIB_VALUE_CLOSED: S3++,
        // <a foo="bar"
        ATTRIB_VALUE_UNQUOTED: S3++,
        // <a foo=bar
        ATTRIB_VALUE_ENTITY_Q: S3++,
        // <foo bar="&quot;"
        ATTRIB_VALUE_ENTITY_U: S3++,
        // <foo bar=&quot
        CLOSE_TAG: S3++,
        // </a
        CLOSE_TAG_SAW_WHITE: S3++,
        // </a   >
        SCRIPT: S3++,
        // <script> ...
        SCRIPT_ENDING: S3++
        // <script> ... <
      };
      sax.XML_ENTITIES = {
        "amp": "&",
        "gt": ">",
        "lt": "<",
        "quot": '"',
        "apos": "'"
      };
      sax.ENTITIES = {
        "amp": "&",
        "gt": ">",
        "lt": "<",
        "quot": '"',
        "apos": "'",
        "AElig": 198,
        "Aacute": 193,
        "Acirc": 194,
        "Agrave": 192,
        "Aring": 197,
        "Atilde": 195,
        "Auml": 196,
        "Ccedil": 199,
        "ETH": 208,
        "Eacute": 201,
        "Ecirc": 202,
        "Egrave": 200,
        "Euml": 203,
        "Iacute": 205,
        "Icirc": 206,
        "Igrave": 204,
        "Iuml": 207,
        "Ntilde": 209,
        "Oacute": 211,
        "Ocirc": 212,
        "Ograve": 210,
        "Oslash": 216,
        "Otilde": 213,
        "Ouml": 214,
        "THORN": 222,
        "Uacute": 218,
        "Ucirc": 219,
        "Ugrave": 217,
        "Uuml": 220,
        "Yacute": 221,
        "aacute": 225,
        "acirc": 226,
        "aelig": 230,
        "agrave": 224,
        "aring": 229,
        "atilde": 227,
        "auml": 228,
        "ccedil": 231,
        "eacute": 233,
        "ecirc": 234,
        "egrave": 232,
        "eth": 240,
        "euml": 235,
        "iacute": 237,
        "icirc": 238,
        "igrave": 236,
        "iuml": 239,
        "ntilde": 241,
        "oacute": 243,
        "ocirc": 244,
        "ograve": 242,
        "oslash": 248,
        "otilde": 245,
        "ouml": 246,
        "szlig": 223,
        "thorn": 254,
        "uacute": 250,
        "ucirc": 251,
        "ugrave": 249,
        "uuml": 252,
        "yacute": 253,
        "yuml": 255,
        "copy": 169,
        "reg": 174,
        "nbsp": 160,
        "iexcl": 161,
        "cent": 162,
        "pound": 163,
        "curren": 164,
        "yen": 165,
        "brvbar": 166,
        "sect": 167,
        "uml": 168,
        "ordf": 170,
        "laquo": 171,
        "not": 172,
        "shy": 173,
        "macr": 175,
        "deg": 176,
        "plusmn": 177,
        "sup1": 185,
        "sup2": 178,
        "sup3": 179,
        "acute": 180,
        "micro": 181,
        "para": 182,
        "middot": 183,
        "cedil": 184,
        "ordm": 186,
        "raquo": 187,
        "frac14": 188,
        "frac12": 189,
        "frac34": 190,
        "iquest": 191,
        "times": 215,
        "divide": 247,
        "OElig": 338,
        "oelig": 339,
        "Scaron": 352,
        "scaron": 353,
        "Yuml": 376,
        "fnof": 402,
        "circ": 710,
        "tilde": 732,
        "Alpha": 913,
        "Beta": 914,
        "Gamma": 915,
        "Delta": 916,
        "Epsilon": 917,
        "Zeta": 918,
        "Eta": 919,
        "Theta": 920,
        "Iota": 921,
        "Kappa": 922,
        "Lambda": 923,
        "Mu": 924,
        "Nu": 925,
        "Xi": 926,
        "Omicron": 927,
        "Pi": 928,
        "Rho": 929,
        "Sigma": 931,
        "Tau": 932,
        "Upsilon": 933,
        "Phi": 934,
        "Chi": 935,
        "Psi": 936,
        "Omega": 937,
        "alpha": 945,
        "beta": 946,
        "gamma": 947,
        "delta": 948,
        "epsilon": 949,
        "zeta": 950,
        "eta": 951,
        "theta": 952,
        "iota": 953,
        "kappa": 954,
        "lambda": 955,
        "mu": 956,
        "nu": 957,
        "xi": 958,
        "omicron": 959,
        "pi": 960,
        "rho": 961,
        "sigmaf": 962,
        "sigma": 963,
        "tau": 964,
        "upsilon": 965,
        "phi": 966,
        "chi": 967,
        "psi": 968,
        "omega": 969,
        "thetasym": 977,
        "upsih": 978,
        "piv": 982,
        "ensp": 8194,
        "emsp": 8195,
        "thinsp": 8201,
        "zwnj": 8204,
        "zwj": 8205,
        "lrm": 8206,
        "rlm": 8207,
        "ndash": 8211,
        "mdash": 8212,
        "lsquo": 8216,
        "rsquo": 8217,
        "sbquo": 8218,
        "ldquo": 8220,
        "rdquo": 8221,
        "bdquo": 8222,
        "dagger": 8224,
        "Dagger": 8225,
        "bull": 8226,
        "hellip": 8230,
        "permil": 8240,
        "prime": 8242,
        "Prime": 8243,
        "lsaquo": 8249,
        "rsaquo": 8250,
        "oline": 8254,
        "frasl": 8260,
        "euro": 8364,
        "image": 8465,
        "weierp": 8472,
        "real": 8476,
        "trade": 8482,
        "alefsym": 8501,
        "larr": 8592,
        "uarr": 8593,
        "rarr": 8594,
        "darr": 8595,
        "harr": 8596,
        "crarr": 8629,
        "lArr": 8656,
        "uArr": 8657,
        "rArr": 8658,
        "dArr": 8659,
        "hArr": 8660,
        "forall": 8704,
        "part": 8706,
        "exist": 8707,
        "empty": 8709,
        "nabla": 8711,
        "isin": 8712,
        "notin": 8713,
        "ni": 8715,
        "prod": 8719,
        "sum": 8721,
        "minus": 8722,
        "lowast": 8727,
        "radic": 8730,
        "prop": 8733,
        "infin": 8734,
        "ang": 8736,
        "and": 8743,
        "or": 8744,
        "cap": 8745,
        "cup": 8746,
        "int": 8747,
        "there4": 8756,
        "sim": 8764,
        "cong": 8773,
        "asymp": 8776,
        "ne": 8800,
        "equiv": 8801,
        "le": 8804,
        "ge": 8805,
        "sub": 8834,
        "sup": 8835,
        "nsub": 8836,
        "sube": 8838,
        "supe": 8839,
        "oplus": 8853,
        "otimes": 8855,
        "perp": 8869,
        "sdot": 8901,
        "lceil": 8968,
        "rceil": 8969,
        "lfloor": 8970,
        "rfloor": 8971,
        "lang": 9001,
        "rang": 9002,
        "loz": 9674,
        "spades": 9824,
        "clubs": 9827,
        "hearts": 9829,
        "diams": 9830
      };
      Object.keys(sax.ENTITIES).forEach(function(key2) {
        var e2 = sax.ENTITIES[key2];
        var s6 = typeof e2 === "number" ? String.fromCharCode(e2) : e2;
        sax.ENTITIES[key2] = s6;
      });
      for (var s5 in sax.STATE) {
        sax.STATE[sax.STATE[s5]] = s5;
      }
      S3 = sax.STATE;
      function emit(parser3, event, data) {
        parser3[event] && parser3[event](data);
      }
      function emitNode(parser3, nodeType, data) {
        if (parser3.textNode) closeText(parser3);
        emit(parser3, nodeType, data);
      }
      function closeText(parser3) {
        parser3.textNode = textopts(parser3.opt, parser3.textNode);
        if (parser3.textNode) emit(parser3, "ontext", parser3.textNode);
        parser3.textNode = "";
      }
      function textopts(opt, text7) {
        if (opt.trim) text7 = text7.trim();
        if (opt.normalize) text7 = text7.replace(/\s+/g, " ");
        return text7;
      }
      function error(parser3, er) {
        closeText(parser3);
        if (parser3.trackPosition) {
          er += "\nLine: " + parser3.line + "\nColumn: " + parser3.column + "\nChar: " + parser3.c;
        }
        er = new Error(er);
        parser3.error = er;
        emit(parser3, "onerror", er);
        return parser3;
      }
      function end(parser3) {
        if (parser3.sawRoot && !parser3.closedRoot) strictFail(parser3, "Unclosed root tag");
        if (parser3.state !== S3.BEGIN && parser3.state !== S3.BEGIN_WHITESPACE && parser3.state !== S3.TEXT) {
          error(parser3, "Unexpected end");
        }
        closeText(parser3);
        parser3.c = "";
        parser3.closed = true;
        emit(parser3, "onend");
        SAXParser.call(parser3, parser3.strict, parser3.opt);
        return parser3;
      }
      function strictFail(parser3, message) {
        if (typeof parser3 !== "object" || !(parser3 instanceof SAXParser)) {
          throw new Error("bad call to strictFail");
        }
        if (parser3.strict) {
          error(parser3, message);
        }
      }
      function newTag(parser3) {
        if (!parser3.strict) parser3.tagName = parser3.tagName[parser3.looseCase]();
        var parent2 = parser3.tags[parser3.tags.length - 1] || parser3;
        var tag = parser3.tag = { name: parser3.tagName, attributes: {} };
        if (parser3.opt.xmlns) {
          tag.ns = parent2.ns;
        }
        parser3.attribList.length = 0;
        emitNode(parser3, "onopentagstart", tag);
      }
      function qname(name3, attribute2) {
        var i2 = name3.indexOf(":");
        var qualName = i2 < 0 ? ["", name3] : name3.split(":");
        var prefix2 = qualName[0];
        var local = qualName[1];
        if (attribute2 && name3 === "xmlns") {
          prefix2 = "xmlns";
          local = "";
        }
        return { prefix: prefix2, local };
      }
      function attrib(parser3) {
        if (!parser3.strict) {
          parser3.attribName = parser3.attribName[parser3.looseCase]();
        }
        if (parser3.attribList.indexOf(parser3.attribName) !== -1 || parser3.tag.attributes.hasOwnProperty(parser3.attribName)) {
          parser3.attribName = parser3.attribValue = "";
          return;
        }
        if (parser3.opt.xmlns) {
          var qn = qname(parser3.attribName, true);
          var prefix2 = qn.prefix;
          var local = qn.local;
          if (prefix2 === "xmlns") {
            if (local === "xml" && parser3.attribValue !== XML_NAMESPACE) {
              strictFail(
                parser3,
                "xml: prefix must be bound to " + XML_NAMESPACE + "\nActual: " + parser3.attribValue
              );
            } else if (local === "xmlns" && parser3.attribValue !== XMLNS_NAMESPACE) {
              strictFail(
                parser3,
                "xmlns: prefix must be bound to " + XMLNS_NAMESPACE + "\nActual: " + parser3.attribValue
              );
            } else {
              var tag = parser3.tag;
              var parent2 = parser3.tags[parser3.tags.length - 1] || parser3;
              if (tag.ns === parent2.ns) {
                tag.ns = Object.create(parent2.ns);
              }
              tag.ns[local] = parser3.attribValue;
            }
          }
          parser3.attribList.push([parser3.attribName, parser3.attribValue]);
        } else {
          parser3.tag.attributes[parser3.attribName] = parser3.attribValue;
          emitNode(parser3, "onattribute", {
            name: parser3.attribName,
            value: parser3.attribValue
          });
        }
        parser3.attribName = parser3.attribValue = "";
      }
      function openTag(parser3, selfClosing) {
        if (parser3.opt.xmlns) {
          var tag = parser3.tag;
          var qn = qname(parser3.tagName);
          tag.prefix = qn.prefix;
          tag.local = qn.local;
          tag.uri = tag.ns[qn.prefix] || "";
          if (tag.prefix && !tag.uri) {
            strictFail(parser3, "Unbound namespace prefix: " + JSON.stringify(parser3.tagName));
            tag.uri = qn.prefix;
          }
          var parent2 = parser3.tags[parser3.tags.length - 1] || parser3;
          if (tag.ns && parent2.ns !== tag.ns) {
            Object.keys(tag.ns).forEach(function(p5) {
              emitNode(parser3, "onopennamespace", {
                prefix: p5,
                uri: tag.ns[p5]
              });
            });
          }
          for (var i2 = 0, l = parser3.attribList.length; i2 < l; i2++) {
            var nv = parser3.attribList[i2];
            var name3 = nv[0];
            var value = nv[1];
            var qualName = qname(name3, true);
            var prefix2 = qualName.prefix;
            var local = qualName.local;
            var uri = prefix2 === "" ? "" : tag.ns[prefix2] || "";
            var a2 = {
              name: name3,
              value,
              prefix: prefix2,
              local,
              uri
            };
            if (prefix2 && prefix2 !== "xmlns" && !uri) {
              strictFail(parser3, "Unbound namespace prefix: " + JSON.stringify(prefix2));
              a2.uri = prefix2;
            }
            parser3.tag.attributes[name3] = a2;
            emitNode(parser3, "onattribute", a2);
          }
          parser3.attribList.length = 0;
        }
        parser3.tag.isSelfClosing = !!selfClosing;
        parser3.sawRoot = true;
        parser3.tags.push(parser3.tag);
        emitNode(parser3, "onopentag", parser3.tag);
        if (!selfClosing) {
          if (!parser3.noscript && parser3.tagName.toLowerCase() === "script") {
            parser3.state = S3.SCRIPT;
          } else {
            parser3.state = S3.TEXT;
          }
          parser3.tag = null;
          parser3.tagName = "";
        }
        parser3.attribName = parser3.attribValue = "";
        parser3.attribList.length = 0;
      }
      function closeTag(parser3) {
        if (!parser3.tagName) {
          strictFail(parser3, "Weird empty close tag.");
          parser3.textNode += "</>";
          parser3.state = S3.TEXT;
          return;
        }
        if (parser3.script) {
          if (parser3.tagName !== "script") {
            parser3.script += "</" + parser3.tagName + ">";
            parser3.tagName = "";
            parser3.state = S3.SCRIPT;
            return;
          }
          emitNode(parser3, "onscript", parser3.script);
          parser3.script = "";
        }
        var t2 = parser3.tags.length;
        var tagName = parser3.tagName;
        if (!parser3.strict) {
          tagName = tagName[parser3.looseCase]();
        }
        var closeTo = tagName;
        while (t2--) {
          var close2 = parser3.tags[t2];
          if (close2.name !== closeTo) {
            strictFail(parser3, "Unexpected close tag");
          } else {
            break;
          }
        }
        if (t2 < 0) {
          strictFail(parser3, "Unmatched closing tag: " + parser3.tagName);
          parser3.textNode += "</" + parser3.tagName + ">";
          parser3.state = S3.TEXT;
          return;
        }
        parser3.tagName = tagName;
        var s6 = parser3.tags.length;
        while (s6-- > t2) {
          var tag = parser3.tag = parser3.tags.pop();
          parser3.tagName = parser3.tag.name;
          emitNode(parser3, "onclosetag", parser3.tagName);
          var x2 = {};
          for (var i2 in tag.ns) {
            x2[i2] = tag.ns[i2];
          }
          var parent2 = parser3.tags[parser3.tags.length - 1] || parser3;
          if (parser3.opt.xmlns && tag.ns !== parent2.ns) {
            Object.keys(tag.ns).forEach(function(p5) {
              var n = tag.ns[p5];
              emitNode(parser3, "onclosenamespace", { prefix: p5, uri: n });
            });
          }
        }
        if (t2 === 0) parser3.closedRoot = true;
        parser3.tagName = parser3.attribValue = parser3.attribName = "";
        parser3.attribList.length = 0;
        parser3.state = S3.TEXT;
      }
      function parseEntity(parser3) {
        var entity = parser3.entity;
        var entityLC = entity.toLowerCase();
        var num;
        var numStr = "";
        if (parser3.ENTITIES[entity]) {
          return parser3.ENTITIES[entity];
        }
        if (parser3.ENTITIES[entityLC]) {
          return parser3.ENTITIES[entityLC];
        }
        entity = entityLC;
        if (entity.charAt(0) === "#") {
          if (entity.charAt(1) === "x") {
            entity = entity.slice(2);
            num = parseInt(entity, 16);
            numStr = num.toString(16);
          } else {
            entity = entity.slice(1);
            num = parseInt(entity, 10);
            numStr = num.toString(10);
          }
        }
        entity = entity.replace(/^0+/, "");
        if (isNaN(num) || numStr.toLowerCase() !== entity) {
          strictFail(parser3, "Invalid character entity");
          return "&" + parser3.entity + ";";
        }
        return String.fromCodePoint(num);
      }
      function beginWhiteSpace(parser3, c) {
        if (c === "<") {
          parser3.state = S3.OPEN_WAKA;
          parser3.startTagPosition = parser3.position;
        } else if (!isWhitespace3(c)) {
          strictFail(parser3, "Non-whitespace before first tag.");
          parser3.textNode = c;
          parser3.state = S3.TEXT;
        }
      }
      function charAt(chunk, i2) {
        var result = "";
        if (i2 < chunk.length) {
          result = chunk.charAt(i2);
        }
        return result;
      }
      function write3(chunk) {
        var parser3 = this;
        if (this.error) {
          throw this.error;
        }
        if (parser3.closed) {
          return error(
            parser3,
            "Cannot write after close. Assign an onready handler."
          );
        }
        if (chunk === null) {
          return end(parser3);
        }
        if (typeof chunk === "object") {
          chunk = chunk.toString();
        }
        var i2 = 0;
        var c = "";
        while (true) {
          c = charAt(chunk, i2++);
          parser3.c = c;
          if (!c) {
            break;
          }
          if (parser3.trackPosition) {
            parser3.position++;
            if (c === "\n") {
              parser3.line++;
              parser3.column = 0;
            } else {
              parser3.column++;
            }
          }
          switch (parser3.state) {
            case S3.BEGIN:
              parser3.state = S3.BEGIN_WHITESPACE;
              if (c === "\uFEFF") {
                continue;
              }
              beginWhiteSpace(parser3, c);
              continue;
            case S3.BEGIN_WHITESPACE:
              beginWhiteSpace(parser3, c);
              continue;
            case S3.TEXT:
              if (parser3.sawRoot && !parser3.closedRoot) {
                var starti = i2 - 1;
                while (c && c !== "<" && c !== "&") {
                  c = charAt(chunk, i2++);
                  if (c && parser3.trackPosition) {
                    parser3.position++;
                    if (c === "\n") {
                      parser3.line++;
                      parser3.column = 0;
                    } else {
                      parser3.column++;
                    }
                  }
                }
                parser3.textNode += chunk.substring(starti, i2 - 1);
              }
              if (c === "<" && !(parser3.sawRoot && parser3.closedRoot && !parser3.strict)) {
                parser3.state = S3.OPEN_WAKA;
                parser3.startTagPosition = parser3.position;
              } else {
                if (!isWhitespace3(c) && (!parser3.sawRoot || parser3.closedRoot)) {
                  strictFail(parser3, "Text data outside of root node.");
                }
                if (c === "&") {
                  parser3.state = S3.TEXT_ENTITY;
                } else {
                  parser3.textNode += c;
                }
              }
              continue;
            case S3.SCRIPT:
              if (c === "<") {
                parser3.state = S3.SCRIPT_ENDING;
              } else {
                parser3.script += c;
              }
              continue;
            case S3.SCRIPT_ENDING:
              if (c === "/") {
                parser3.state = S3.CLOSE_TAG;
              } else {
                parser3.script += "<" + c;
                parser3.state = S3.SCRIPT;
              }
              continue;
            case S3.OPEN_WAKA:
              if (c === "!") {
                parser3.state = S3.SGML_DECL;
                parser3.sgmlDecl = "";
              } else if (isWhitespace3(c)) {
              } else if (isMatch(nameStart, c)) {
                parser3.state = S3.OPEN_TAG;
                parser3.tagName = c;
              } else if (c === "/") {
                parser3.state = S3.CLOSE_TAG;
                parser3.tagName = "";
              } else if (c === "?") {
                parser3.state = S3.PROC_INST;
                parser3.procInstName = parser3.procInstBody = "";
              } else {
                strictFail(parser3, "Unencoded <");
                if (parser3.startTagPosition + 1 < parser3.position) {
                  var pad2 = parser3.position - parser3.startTagPosition;
                  c = new Array(pad2).join(" ") + c;
                }
                parser3.textNode += "<" + c;
                parser3.state = S3.TEXT;
              }
              continue;
            case S3.SGML_DECL:
              if ((parser3.sgmlDecl + c).toUpperCase() === CDATA) {
                emitNode(parser3, "onopencdata");
                parser3.state = S3.CDATA;
                parser3.sgmlDecl = "";
                parser3.cdata = "";
              } else if (parser3.sgmlDecl + c === "--") {
                parser3.state = S3.COMMENT;
                parser3.comment = "";
                parser3.sgmlDecl = "";
              } else if ((parser3.sgmlDecl + c).toUpperCase() === DOCTYPE) {
                parser3.state = S3.DOCTYPE;
                if (parser3.doctype || parser3.sawRoot) {
                  strictFail(
                    parser3,
                    "Inappropriately located doctype declaration"
                  );
                }
                parser3.doctype = "";
                parser3.sgmlDecl = "";
              } else if (c === ">") {
                emitNode(parser3, "onsgmldeclaration", parser3.sgmlDecl);
                parser3.sgmlDecl = "";
                parser3.state = S3.TEXT;
              } else if (isQuote(c)) {
                parser3.state = S3.SGML_DECL_QUOTED;
                parser3.sgmlDecl += c;
              } else {
                parser3.sgmlDecl += c;
              }
              continue;
            case S3.SGML_DECL_QUOTED:
              if (c === parser3.q) {
                parser3.state = S3.SGML_DECL;
                parser3.q = "";
              }
              parser3.sgmlDecl += c;
              continue;
            case S3.DOCTYPE:
              if (c === ">") {
                parser3.state = S3.TEXT;
                emitNode(parser3, "ondoctype", parser3.doctype);
                parser3.doctype = true;
              } else {
                parser3.doctype += c;
                if (c === "[") {
                  parser3.state = S3.DOCTYPE_DTD;
                } else if (isQuote(c)) {
                  parser3.state = S3.DOCTYPE_QUOTED;
                  parser3.q = c;
                }
              }
              continue;
            case S3.DOCTYPE_QUOTED:
              parser3.doctype += c;
              if (c === parser3.q) {
                parser3.q = "";
                parser3.state = S3.DOCTYPE;
              }
              continue;
            case S3.DOCTYPE_DTD:
              parser3.doctype += c;
              if (c === "]") {
                parser3.state = S3.DOCTYPE;
              } else if (isQuote(c)) {
                parser3.state = S3.DOCTYPE_DTD_QUOTED;
                parser3.q = c;
              }
              continue;
            case S3.DOCTYPE_DTD_QUOTED:
              parser3.doctype += c;
              if (c === parser3.q) {
                parser3.state = S3.DOCTYPE_DTD;
                parser3.q = "";
              }
              continue;
            case S3.COMMENT:
              if (c === "-") {
                parser3.state = S3.COMMENT_ENDING;
              } else {
                parser3.comment += c;
              }
              continue;
            case S3.COMMENT_ENDING:
              if (c === "-") {
                parser3.state = S3.COMMENT_ENDED;
                parser3.comment = textopts(parser3.opt, parser3.comment);
                if (parser3.comment) {
                  emitNode(parser3, "oncomment", parser3.comment);
                }
                parser3.comment = "";
              } else {
                parser3.comment += "-" + c;
                parser3.state = S3.COMMENT;
              }
              continue;
            case S3.COMMENT_ENDED:
              if (c !== ">") {
                strictFail(parser3, "Malformed comment");
                parser3.comment += "--" + c;
                parser3.state = S3.COMMENT;
              } else {
                parser3.state = S3.TEXT;
              }
              continue;
            case S3.CDATA:
              if (c === "]") {
                parser3.state = S3.CDATA_ENDING;
              } else {
                parser3.cdata += c;
              }
              continue;
            case S3.CDATA_ENDING:
              if (c === "]") {
                parser3.state = S3.CDATA_ENDING_2;
              } else {
                parser3.cdata += "]" + c;
                parser3.state = S3.CDATA;
              }
              continue;
            case S3.CDATA_ENDING_2:
              if (c === ">") {
                if (parser3.cdata) {
                  emitNode(parser3, "oncdata", parser3.cdata);
                }
                emitNode(parser3, "onclosecdata");
                parser3.cdata = "";
                parser3.state = S3.TEXT;
              } else if (c === "]") {
                parser3.cdata += "]";
              } else {
                parser3.cdata += "]]" + c;
                parser3.state = S3.CDATA;
              }
              continue;
            case S3.PROC_INST:
              if (c === "?") {
                parser3.state = S3.PROC_INST_ENDING;
              } else if (isWhitespace3(c)) {
                parser3.state = S3.PROC_INST_BODY;
              } else {
                parser3.procInstName += c;
              }
              continue;
            case S3.PROC_INST_BODY:
              if (!parser3.procInstBody && isWhitespace3(c)) {
                continue;
              } else if (c === "?") {
                parser3.state = S3.PROC_INST_ENDING;
              } else {
                parser3.procInstBody += c;
              }
              continue;
            case S3.PROC_INST_ENDING:
              if (c === ">") {
                emitNode(parser3, "onprocessinginstruction", {
                  name: parser3.procInstName,
                  body: parser3.procInstBody
                });
                parser3.procInstName = parser3.procInstBody = "";
                parser3.state = S3.TEXT;
              } else {
                parser3.procInstBody += "?" + c;
                parser3.state = S3.PROC_INST_BODY;
              }
              continue;
            case S3.OPEN_TAG:
              if (isMatch(nameBody, c)) {
                parser3.tagName += c;
              } else {
                newTag(parser3);
                if (c === ">") {
                  openTag(parser3);
                } else if (c === "/") {
                  parser3.state = S3.OPEN_TAG_SLASH;
                } else {
                  if (!isWhitespace3(c)) {
                    strictFail(parser3, "Invalid character in tag name");
                  }
                  parser3.state = S3.ATTRIB;
                }
              }
              continue;
            case S3.OPEN_TAG_SLASH:
              if (c === ">") {
                openTag(parser3, true);
                closeTag(parser3);
              } else {
                strictFail(parser3, "Forward-slash in opening tag not followed by >");
                parser3.state = S3.ATTRIB;
              }
              continue;
            case S3.ATTRIB:
              if (isWhitespace3(c)) {
                continue;
              } else if (c === ">") {
                openTag(parser3);
              } else if (c === "/") {
                parser3.state = S3.OPEN_TAG_SLASH;
              } else if (isMatch(nameStart, c)) {
                parser3.attribName = c;
                parser3.attribValue = "";
                parser3.state = S3.ATTRIB_NAME;
              } else {
                strictFail(parser3, "Invalid attribute name");
              }
              continue;
            case S3.ATTRIB_NAME:
              if (c === "=") {
                parser3.state = S3.ATTRIB_VALUE;
              } else if (c === ">") {
                strictFail(parser3, "Attribute without value");
                parser3.attribValue = parser3.attribName;
                attrib(parser3);
                openTag(parser3);
              } else if (isWhitespace3(c)) {
                parser3.state = S3.ATTRIB_NAME_SAW_WHITE;
              } else if (isMatch(nameBody, c)) {
                parser3.attribName += c;
              } else {
                strictFail(parser3, "Invalid attribute name");
              }
              continue;
            case S3.ATTRIB_NAME_SAW_WHITE:
              if (c === "=") {
                parser3.state = S3.ATTRIB_VALUE;
              } else if (isWhitespace3(c)) {
                continue;
              } else {
                strictFail(parser3, "Attribute without value");
                parser3.tag.attributes[parser3.attribName] = "";
                parser3.attribValue = "";
                emitNode(parser3, "onattribute", {
                  name: parser3.attribName,
                  value: ""
                });
                parser3.attribName = "";
                if (c === ">") {
                  openTag(parser3);
                } else if (isMatch(nameStart, c)) {
                  parser3.attribName = c;
                  parser3.state = S3.ATTRIB_NAME;
                } else {
                  strictFail(parser3, "Invalid attribute name");
                  parser3.state = S3.ATTRIB;
                }
              }
              continue;
            case S3.ATTRIB_VALUE:
              if (isWhitespace3(c)) {
                continue;
              } else if (isQuote(c)) {
                parser3.q = c;
                parser3.state = S3.ATTRIB_VALUE_QUOTED;
              } else {
                strictFail(parser3, "Unquoted attribute value");
                parser3.state = S3.ATTRIB_VALUE_UNQUOTED;
                parser3.attribValue = c;
              }
              continue;
            case S3.ATTRIB_VALUE_QUOTED:
              if (c !== parser3.q) {
                if (c === "&") {
                  parser3.state = S3.ATTRIB_VALUE_ENTITY_Q;
                } else {
                  parser3.attribValue += c;
                }
                continue;
              }
              attrib(parser3);
              parser3.q = "";
              parser3.state = S3.ATTRIB_VALUE_CLOSED;
              continue;
            case S3.ATTRIB_VALUE_CLOSED:
              if (isWhitespace3(c)) {
                parser3.state = S3.ATTRIB;
              } else if (c === ">") {
                openTag(parser3);
              } else if (c === "/") {
                parser3.state = S3.OPEN_TAG_SLASH;
              } else if (isMatch(nameStart, c)) {
                strictFail(parser3, "No whitespace between attributes");
                parser3.attribName = c;
                parser3.attribValue = "";
                parser3.state = S3.ATTRIB_NAME;
              } else {
                strictFail(parser3, "Invalid attribute name");
              }
              continue;
            case S3.ATTRIB_VALUE_UNQUOTED:
              if (!isAttribEnd(c)) {
                if (c === "&") {
                  parser3.state = S3.ATTRIB_VALUE_ENTITY_U;
                } else {
                  parser3.attribValue += c;
                }
                continue;
              }
              attrib(parser3);
              if (c === ">") {
                openTag(parser3);
              } else {
                parser3.state = S3.ATTRIB;
              }
              continue;
            case S3.CLOSE_TAG:
              if (!parser3.tagName) {
                if (isWhitespace3(c)) {
                  continue;
                } else if (notMatch(nameStart, c)) {
                  if (parser3.script) {
                    parser3.script += "</" + c;
                    parser3.state = S3.SCRIPT;
                  } else {
                    strictFail(parser3, "Invalid tagname in closing tag.");
                  }
                } else {
                  parser3.tagName = c;
                }
              } else if (c === ">") {
                closeTag(parser3);
              } else if (isMatch(nameBody, c)) {
                parser3.tagName += c;
              } else if (parser3.script) {
                parser3.script += "</" + parser3.tagName;
                parser3.tagName = "";
                parser3.state = S3.SCRIPT;
              } else {
                if (!isWhitespace3(c)) {
                  strictFail(parser3, "Invalid tagname in closing tag");
                }
                parser3.state = S3.CLOSE_TAG_SAW_WHITE;
              }
              continue;
            case S3.CLOSE_TAG_SAW_WHITE:
              if (isWhitespace3(c)) {
                continue;
              }
              if (c === ">") {
                closeTag(parser3);
              } else {
                strictFail(parser3, "Invalid characters in closing tag");
              }
              continue;
            case S3.TEXT_ENTITY:
            case S3.ATTRIB_VALUE_ENTITY_Q:
            case S3.ATTRIB_VALUE_ENTITY_U:
              var returnState;
              var buffer2;
              switch (parser3.state) {
                case S3.TEXT_ENTITY:
                  returnState = S3.TEXT;
                  buffer2 = "textNode";
                  break;
                case S3.ATTRIB_VALUE_ENTITY_Q:
                  returnState = S3.ATTRIB_VALUE_QUOTED;
                  buffer2 = "attribValue";
                  break;
                case S3.ATTRIB_VALUE_ENTITY_U:
                  returnState = S3.ATTRIB_VALUE_UNQUOTED;
                  buffer2 = "attribValue";
                  break;
              }
              if (c === ";") {
                parser3[buffer2] += parseEntity(parser3);
                parser3.entity = "";
                parser3.state = returnState;
              } else if (isMatch(parser3.entity.length ? entityBody : entityStart, c)) {
                parser3.entity += c;
              } else {
                strictFail(parser3, "Invalid character in entity name");
                parser3[buffer2] += "&" + parser3.entity + c;
                parser3.entity = "";
                parser3.state = returnState;
              }
              continue;
            default:
              throw new Error(parser3, "Unknown state: " + parser3.state);
          }
        }
        if (parser3.position >= parser3.bufferCheckPosition) {
          checkBufferLength(parser3);
        }
        return parser3;
      }
      if (!String.fromCodePoint) {
        (function() {
          var stringFromCharCode = String.fromCharCode;
          var floor = Math.floor;
          var fromCodePoint2 = function() {
            var MAX_SIZE = 16384;
            var codeUnits = [];
            var highSurrogate;
            var lowSurrogate;
            var index4 = -1;
            var length = arguments.length;
            if (!length) {
              return "";
            }
            var result = "";
            while (++index4 < length) {
              var codePoint = Number(arguments[index4]);
              if (!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`
              codePoint < 0 || // not a valid Unicode code point
              codePoint > 1114111 || // not a valid Unicode code point
              floor(codePoint) !== codePoint) {
                throw RangeError("Invalid code point: " + codePoint);
              }
              if (codePoint <= 65535) {
                codeUnits.push(codePoint);
              } else {
                codePoint -= 65536;
                highSurrogate = (codePoint >> 10) + 55296;
                lowSurrogate = codePoint % 1024 + 56320;
                codeUnits.push(highSurrogate, lowSurrogate);
              }
              if (index4 + 1 === length || codeUnits.length > MAX_SIZE) {
                result += stringFromCharCode.apply(null, codeUnits);
                codeUnits.length = 0;
              }
            }
            return result;
          };
          if (Object.defineProperty) {
            Object.defineProperty(String, "fromCodePoint", {
              value: fromCodePoint2,
              configurable: true,
              writable: true
            });
          } else {
            String.fromCodePoint = fromCodePoint2;
          }
        })();
      }
    })(typeof exports2 === "undefined" ? exports2.sax = {} : exports2);
  }
});

// ../../node_modules/xml-js/lib/array-helper.js
var require_array_helper = __commonJS({
  "../../node_modules/xml-js/lib/array-helper.js"(exports2, module2) {
    module2.exports = {
      isArray: function(value) {
        if (Array.isArray) {
          return Array.isArray(value);
        }
        return Object.prototype.toString.call(value) === "[object Array]";
      }
    };
  }
});

// ../../node_modules/xml-js/lib/options-helper.js
var require_options_helper = __commonJS({
  "../../node_modules/xml-js/lib/options-helper.js"(exports2, module2) {
    var isArray2 = require_array_helper().isArray;
    module2.exports = {
      copyOptions: function(options) {
        var key2, copy2 = {};
        for (key2 in options) {
          if (options.hasOwnProperty(key2)) {
            copy2[key2] = options[key2];
          }
        }
        return copy2;
      },
      ensureFlagExists: function(item, options) {
        if (!(item in options) || typeof options[item] !== "boolean") {
          options[item] = false;
        }
      },
      ensureSpacesExists: function(options) {
        if (!("spaces" in options) || typeof options.spaces !== "number" && typeof options.spaces !== "string") {
          options.spaces = 0;
        }
      },
      ensureAlwaysArrayExists: function(options) {
        if (!("alwaysArray" in options) || typeof options.alwaysArray !== "boolean" && !isArray2(options.alwaysArray)) {
          options.alwaysArray = false;
        }
      },
      ensureKeyExists: function(key2, options) {
        if (!(key2 + "Key" in options) || typeof options[key2 + "Key"] !== "string") {
          options[key2 + "Key"] = options.compact ? "_" + key2 : key2;
        }
      },
      checkFnExists: function(key2, options) {
        return key2 + "Fn" in options;
      }
    };
  }
});

// ../../node_modules/xml-js/lib/xml2js.js
var require_xml2js = __commonJS({
  "../../node_modules/xml-js/lib/xml2js.js"(exports2, module2) {
    var sax = require_sax();
    var expat = { on: function() {
    }, parse: function() {
    } };
    var helper = require_options_helper();
    var isArray2 = require_array_helper().isArray;
    var options;
    var pureJsParser = true;
    var currentElement;
    function validateOptions(userOptions) {
      options = helper.copyOptions(userOptions);
      helper.ensureFlagExists("ignoreDeclaration", options);
      helper.ensureFlagExists("ignoreInstruction", options);
      helper.ensureFlagExists("ignoreAttributes", options);
      helper.ensureFlagExists("ignoreText", options);
      helper.ensureFlagExists("ignoreComment", options);
      helper.ensureFlagExists("ignoreCdata", options);
      helper.ensureFlagExists("ignoreDoctype", options);
      helper.ensureFlagExists("compact", options);
      helper.ensureFlagExists("alwaysChildren", options);
      helper.ensureFlagExists("addParent", options);
      helper.ensureFlagExists("trim", options);
      helper.ensureFlagExists("nativeType", options);
      helper.ensureFlagExists("nativeTypeAttributes", options);
      helper.ensureFlagExists("sanitize", options);
      helper.ensureFlagExists("instructionHasAttributes", options);
      helper.ensureFlagExists("captureSpacesBetweenElements", options);
      helper.ensureAlwaysArrayExists(options);
      helper.ensureKeyExists("declaration", options);
      helper.ensureKeyExists("instruction", options);
      helper.ensureKeyExists("attributes", options);
      helper.ensureKeyExists("text", options);
      helper.ensureKeyExists("comment", options);
      helper.ensureKeyExists("cdata", options);
      helper.ensureKeyExists("doctype", options);
      helper.ensureKeyExists("type", options);
      helper.ensureKeyExists("name", options);
      helper.ensureKeyExists("elements", options);
      helper.ensureKeyExists("parent", options);
      helper.checkFnExists("doctype", options);
      helper.checkFnExists("instruction", options);
      helper.checkFnExists("cdata", options);
      helper.checkFnExists("comment", options);
      helper.checkFnExists("text", options);
      helper.checkFnExists("instructionName", options);
      helper.checkFnExists("elementName", options);
      helper.checkFnExists("attributeName", options);
      helper.checkFnExists("attributeValue", options);
      helper.checkFnExists("attributes", options);
      return options;
    }
    function nativeType(value) {
      var nValue = Number(value);
      if (!isNaN(nValue)) {
        return nValue;
      }
      var bValue = value.toLowerCase();
      if (bValue === "true") {
        return true;
      } else if (bValue === "false") {
        return false;
      }
      return value;
    }
    function addField(type2, value) {
      var key2;
      if (options.compact) {
        if (!currentElement[options[type2 + "Key"]] && (isArray2(options.alwaysArray) ? options.alwaysArray.indexOf(options[type2 + "Key"]) !== -1 : options.alwaysArray)) {
          currentElement[options[type2 + "Key"]] = [];
        }
        if (currentElement[options[type2 + "Key"]] && !isArray2(currentElement[options[type2 + "Key"]])) {
          currentElement[options[type2 + "Key"]] = [currentElement[options[type2 + "Key"]]];
        }
        if (type2 + "Fn" in options && typeof value === "string") {
          value = options[type2 + "Fn"](value, currentElement);
        }
        if (type2 === "instruction" && ("instructionFn" in options || "instructionNameFn" in options)) {
          for (key2 in value) {
            if (value.hasOwnProperty(key2)) {
              if ("instructionFn" in options) {
                value[key2] = options.instructionFn(value[key2], key2, currentElement);
              } else {
                var temp = value[key2];
                delete value[key2];
                value[options.instructionNameFn(key2, temp, currentElement)] = temp;
              }
            }
          }
        }
        if (isArray2(currentElement[options[type2 + "Key"]])) {
          currentElement[options[type2 + "Key"]].push(value);
        } else {
          currentElement[options[type2 + "Key"]] = value;
        }
      } else {
        if (!currentElement[options.elementsKey]) {
          currentElement[options.elementsKey] = [];
        }
        var element5 = {};
        element5[options.typeKey] = type2;
        if (type2 === "instruction") {
          for (key2 in value) {
            if (value.hasOwnProperty(key2)) {
              break;
            }
          }
          element5[options.nameKey] = "instructionNameFn" in options ? options.instructionNameFn(key2, value, currentElement) : key2;
          if (options.instructionHasAttributes) {
            element5[options.attributesKey] = value[key2][options.attributesKey];
            if ("instructionFn" in options) {
              element5[options.attributesKey] = options.instructionFn(element5[options.attributesKey], key2, currentElement);
            }
          } else {
            if ("instructionFn" in options) {
              value[key2] = options.instructionFn(value[key2], key2, currentElement);
            }
            element5[options.instructionKey] = value[key2];
          }
        } else {
          if (type2 + "Fn" in options) {
            value = options[type2 + "Fn"](value, currentElement);
          }
          element5[options[type2 + "Key"]] = value;
        }
        if (options.addParent) {
          element5[options.parentKey] = currentElement;
        }
        currentElement[options.elementsKey].push(element5);
      }
    }
    function manipulateAttributes(attributes) {
      if ("attributesFn" in options && attributes) {
        attributes = options.attributesFn(attributes, currentElement);
      }
      if ((options.trim || "attributeValueFn" in options || "attributeNameFn" in options || options.nativeTypeAttributes) && attributes) {
        var key2;
        for (key2 in attributes) {
          if (attributes.hasOwnProperty(key2)) {
            if (options.trim) attributes[key2] = attributes[key2].trim();
            if (options.nativeTypeAttributes) {
              attributes[key2] = nativeType(attributes[key2]);
            }
            if ("attributeValueFn" in options) attributes[key2] = options.attributeValueFn(attributes[key2], key2, currentElement);
            if ("attributeNameFn" in options) {
              var temp = attributes[key2];
              delete attributes[key2];
              attributes[options.attributeNameFn(key2, attributes[key2], currentElement)] = temp;
            }
          }
        }
      }
      return attributes;
    }
    function onInstruction(instruction) {
      var attributes = {};
      if (instruction.body && (instruction.name.toLowerCase() === "xml" || options.instructionHasAttributes)) {
        var attrsRegExp = /([\w:-]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|(\w+))\s*/g;
        var match3;
        while ((match3 = attrsRegExp.exec(instruction.body)) !== null) {
          attributes[match3[1]] = match3[2] || match3[3] || match3[4];
        }
        attributes = manipulateAttributes(attributes);
      }
      if (instruction.name.toLowerCase() === "xml") {
        if (options.ignoreDeclaration) {
          return;
        }
        currentElement[options.declarationKey] = {};
        if (Object.keys(attributes).length) {
          currentElement[options.declarationKey][options.attributesKey] = attributes;
        }
        if (options.addParent) {
          currentElement[options.declarationKey][options.parentKey] = currentElement;
        }
      } else {
        if (options.ignoreInstruction) {
          return;
        }
        if (options.trim) {
          instruction.body = instruction.body.trim();
        }
        var value = {};
        if (options.instructionHasAttributes && Object.keys(attributes).length) {
          value[instruction.name] = {};
          value[instruction.name][options.attributesKey] = attributes;
        } else {
          value[instruction.name] = instruction.body;
        }
        addField("instruction", value);
      }
    }
    function onStartElement(name3, attributes) {
      var element5;
      if (typeof name3 === "object") {
        attributes = name3.attributes;
        name3 = name3.name;
      }
      attributes = manipulateAttributes(attributes);
      if ("elementNameFn" in options) {
        name3 = options.elementNameFn(name3, currentElement);
      }
      if (options.compact) {
        element5 = {};
        if (!options.ignoreAttributes && attributes && Object.keys(attributes).length) {
          element5[options.attributesKey] = {};
          var key2;
          for (key2 in attributes) {
            if (attributes.hasOwnProperty(key2)) {
              element5[options.attributesKey][key2] = attributes[key2];
            }
          }
        }
        if (!(name3 in currentElement) && (isArray2(options.alwaysArray) ? options.alwaysArray.indexOf(name3) !== -1 : options.alwaysArray)) {
          currentElement[name3] = [];
        }
        if (currentElement[name3] && !isArray2(currentElement[name3])) {
          currentElement[name3] = [currentElement[name3]];
        }
        if (isArray2(currentElement[name3])) {
          currentElement[name3].push(element5);
        } else {
          currentElement[name3] = element5;
        }
      } else {
        if (!currentElement[options.elementsKey]) {
          currentElement[options.elementsKey] = [];
        }
        element5 = {};
        element5[options.typeKey] = "element";
        element5[options.nameKey] = name3;
        if (!options.ignoreAttributes && attributes && Object.keys(attributes).length) {
          element5[options.attributesKey] = attributes;
        }
        if (options.alwaysChildren) {
          element5[options.elementsKey] = [];
        }
        currentElement[options.elementsKey].push(element5);
      }
      element5[options.parentKey] = currentElement;
      currentElement = element5;
    }
    function onText(text7) {
      if (options.ignoreText) {
        return;
      }
      if (!text7.trim() && !options.captureSpacesBetweenElements) {
        return;
      }
      if (options.trim) {
        text7 = text7.trim();
      }
      if (options.nativeType) {
        text7 = nativeType(text7);
      }
      if (options.sanitize) {
        text7 = text7.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
      }
      addField("text", text7);
    }
    function onComment(comment7) {
      if (options.ignoreComment) {
        return;
      }
      if (options.trim) {
        comment7 = comment7.trim();
      }
      addField("comment", comment7);
    }
    function onEndElement(name3) {
      var parentElement = currentElement[options.parentKey];
      if (!options.addParent) {
        delete currentElement[options.parentKey];
      }
      currentElement = parentElement;
    }
    function onCdata(cdata) {
      if (options.ignoreCdata) {
        return;
      }
      if (options.trim) {
        cdata = cdata.trim();
      }
      addField("cdata", cdata);
    }
    function onDoctype(doctype2) {
      if (options.ignoreDoctype) {
        return;
      }
      doctype2 = doctype2.replace(/^ /, "");
      if (options.trim) {
        doctype2 = doctype2.trim();
      }
      addField("doctype", doctype2);
    }
    function onError(error) {
      error.note = error;
    }
    module2.exports = function(xml2, userOptions) {
      var parser3 = pureJsParser ? sax.parser(true, {}) : parser3 = new expat.Parser("UTF-8");
      var result = {};
      currentElement = result;
      options = validateOptions(userOptions);
      if (pureJsParser) {
        parser3.opt = { strictEntities: true };
        parser3.onopentag = onStartElement;
        parser3.ontext = onText;
        parser3.oncomment = onComment;
        parser3.onclosetag = onEndElement;
        parser3.onerror = onError;
        parser3.oncdata = onCdata;
        parser3.ondoctype = onDoctype;
        parser3.onprocessinginstruction = onInstruction;
      } else {
        parser3.on("startElement", onStartElement);
        parser3.on("text", onText);
        parser3.on("comment", onComment);
        parser3.on("endElement", onEndElement);
        parser3.on("error", onError);
      }
      if (pureJsParser) {
        parser3.write(xml2).close();
      } else {
        if (!parser3.parse(xml2)) {
          throw new Error("XML parsing error: " + parser3.getError());
        }
      }
      if (result[options.elementsKey]) {
        var temp = result[options.elementsKey];
        delete result[options.elementsKey];
        result[options.elementsKey] = temp;
        delete result.text;
      }
      return result;
    };
  }
});

// ../../node_modules/xml-js/lib/xml2json.js
var require_xml2json = __commonJS({
  "../../node_modules/xml-js/lib/xml2json.js"(exports2, module2) {
    var helper = require_options_helper();
    var xml2js3 = require_xml2js();
    function validateOptions(userOptions) {
      var options = helper.copyOptions(userOptions);
      helper.ensureSpacesExists(options);
      return options;
    }
    module2.exports = function(xml2, userOptions) {
      var options, js, json2, parentKey;
      options = validateOptions(userOptions);
      js = xml2js3(xml2, options);
      parentKey = "compact" in options && options.compact ? "_parent" : "parent";
      if ("addParent" in options && options.addParent) {
        json2 = JSON.stringify(js, function(k, v) {
          return k === parentKey ? "_" : v;
        }, options.spaces);
      } else {
        json2 = JSON.stringify(js, null, options.spaces);
      }
      return json2.replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
    };
  }
});

// ../../node_modules/xml-js/lib/js2xml.js
var require_js2xml = __commonJS({
  "../../node_modules/xml-js/lib/js2xml.js"(exports2, module2) {
    var helper = require_options_helper();
    var isArray2 = require_array_helper().isArray;
    var currentElement;
    var currentElementName;
    function validateOptions(userOptions) {
      var options = helper.copyOptions(userOptions);
      helper.ensureFlagExists("ignoreDeclaration", options);
      helper.ensureFlagExists("ignoreInstruction", options);
      helper.ensureFlagExists("ignoreAttributes", options);
      helper.ensureFlagExists("ignoreText", options);
      helper.ensureFlagExists("ignoreComment", options);
      helper.ensureFlagExists("ignoreCdata", options);
      helper.ensureFlagExists("ignoreDoctype", options);
      helper.ensureFlagExists("compact", options);
      helper.ensureFlagExists("indentText", options);
      helper.ensureFlagExists("indentCdata", options);
      helper.ensureFlagExists("indentAttributes", options);
      helper.ensureFlagExists("indentInstruction", options);
      helper.ensureFlagExists("fullTagEmptyElement", options);
      helper.ensureFlagExists("noQuotesForNativeAttributes", options);
      helper.ensureSpacesExists(options);
      if (typeof options.spaces === "number") {
        options.spaces = Array(options.spaces + 1).join(" ");
      }
      helper.ensureKeyExists("declaration", options);
      helper.ensureKeyExists("instruction", options);
      helper.ensureKeyExists("attributes", options);
      helper.ensureKeyExists("text", options);
      helper.ensureKeyExists("comment", options);
      helper.ensureKeyExists("cdata", options);
      helper.ensureKeyExists("doctype", options);
      helper.ensureKeyExists("type", options);
      helper.ensureKeyExists("name", options);
      helper.ensureKeyExists("elements", options);
      helper.checkFnExists("doctype", options);
      helper.checkFnExists("instruction", options);
      helper.checkFnExists("cdata", options);
      helper.checkFnExists("comment", options);
      helper.checkFnExists("text", options);
      helper.checkFnExists("instructionName", options);
      helper.checkFnExists("elementName", options);
      helper.checkFnExists("attributeName", options);
      helper.checkFnExists("attributeValue", options);
      helper.checkFnExists("attributes", options);
      helper.checkFnExists("fullTagEmptyElement", options);
      return options;
    }
    function writeIndentation(options, depth, firstLine) {
      return (!firstLine && options.spaces ? "\n" : "") + Array(depth + 1).join(options.spaces);
    }
    function writeAttributes(attributes, options, depth) {
      if (options.ignoreAttributes) {
        return "";
      }
      if ("attributesFn" in options) {
        attributes = options.attributesFn(attributes, currentElementName, currentElement);
      }
      var key2, attr, attrName, quote, result = [];
      for (key2 in attributes) {
        if (attributes.hasOwnProperty(key2) && attributes[key2] !== null && attributes[key2] !== void 0) {
          quote = options.noQuotesForNativeAttributes && typeof attributes[key2] !== "string" ? "" : '"';
          attr = "" + attributes[key2];
          attr = attr.replace(/"/g, "&quot;");
          attrName = "attributeNameFn" in options ? options.attributeNameFn(key2, attr, currentElementName, currentElement) : key2;
          result.push(options.spaces && options.indentAttributes ? writeIndentation(options, depth + 1, false) : " ");
          result.push(attrName + "=" + quote + ("attributeValueFn" in options ? options.attributeValueFn(attr, key2, currentElementName, currentElement) : attr) + quote);
        }
      }
      if (attributes && Object.keys(attributes).length && options.spaces && options.indentAttributes) {
        result.push(writeIndentation(options, depth, false));
      }
      return result.join("");
    }
    function writeDeclaration(declaration, options, depth) {
      currentElement = declaration;
      currentElementName = "xml";
      return options.ignoreDeclaration ? "" : "<?xml" + writeAttributes(declaration[options.attributesKey], options, depth) + "?>";
    }
    function writeInstruction(instruction, options, depth) {
      if (options.ignoreInstruction) {
        return "";
      }
      var key2;
      for (key2 in instruction) {
        if (instruction.hasOwnProperty(key2)) {
          break;
        }
      }
      var instructionName = "instructionNameFn" in options ? options.instructionNameFn(key2, instruction[key2], currentElementName, currentElement) : key2;
      if (typeof instruction[key2] === "object") {
        currentElement = instruction;
        currentElementName = instructionName;
        return "<?" + instructionName + writeAttributes(instruction[key2][options.attributesKey], options, depth) + "?>";
      } else {
        var instructionValue = instruction[key2] ? instruction[key2] : "";
        if ("instructionFn" in options) instructionValue = options.instructionFn(instructionValue, key2, currentElementName, currentElement);
        return "<?" + instructionName + (instructionValue ? " " + instructionValue : "") + "?>";
      }
    }
    function writeComment(comment7, options) {
      return options.ignoreComment ? "" : "<!--" + ("commentFn" in options ? options.commentFn(comment7, currentElementName, currentElement) : comment7) + "-->";
    }
    function writeCdata(cdata, options) {
      return options.ignoreCdata ? "" : "<![CDATA[" + ("cdataFn" in options ? options.cdataFn(cdata, currentElementName, currentElement) : cdata.replace("]]>", "]]]]><![CDATA[>")) + "]]>";
    }
    function writeDoctype(doctype2, options) {
      return options.ignoreDoctype ? "" : "<!DOCTYPE " + ("doctypeFn" in options ? options.doctypeFn(doctype2, currentElementName, currentElement) : doctype2) + ">";
    }
    function writeText(text7, options) {
      if (options.ignoreText) return "";
      text7 = "" + text7;
      text7 = text7.replace(/&amp;/g, "&");
      text7 = text7.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
      return "textFn" in options ? options.textFn(text7, currentElementName, currentElement) : text7;
    }
    function hasContent(element5, options) {
      var i2;
      if (element5.elements && element5.elements.length) {
        for (i2 = 0; i2 < element5.elements.length; ++i2) {
          switch (element5.elements[i2][options.typeKey]) {
            case "text":
              if (options.indentText) {
                return true;
              }
              break;
            // skip to next key
            case "cdata":
              if (options.indentCdata) {
                return true;
              }
              break;
            // skip to next key
            case "instruction":
              if (options.indentInstruction) {
                return true;
              }
              break;
            // skip to next key
            case "doctype":
            case "comment":
            case "element":
              return true;
            default:
              return true;
          }
        }
      }
      return false;
    }
    function writeElement(element5, options, depth) {
      currentElement = element5;
      currentElementName = element5.name;
      var xml2 = [], elementName = "elementNameFn" in options ? options.elementNameFn(element5.name, element5) : element5.name;
      xml2.push("<" + elementName);
      if (element5[options.attributesKey]) {
        xml2.push(writeAttributes(element5[options.attributesKey], options, depth));
      }
      var withClosingTag = element5[options.elementsKey] && element5[options.elementsKey].length || element5[options.attributesKey] && element5[options.attributesKey]["xml:space"] === "preserve";
      if (!withClosingTag) {
        if ("fullTagEmptyElementFn" in options) {
          withClosingTag = options.fullTagEmptyElementFn(element5.name, element5);
        } else {
          withClosingTag = options.fullTagEmptyElement;
        }
      }
      if (withClosingTag) {
        xml2.push(">");
        if (element5[options.elementsKey] && element5[options.elementsKey].length) {
          xml2.push(writeElements(element5[options.elementsKey], options, depth + 1));
          currentElement = element5;
          currentElementName = element5.name;
        }
        xml2.push(options.spaces && hasContent(element5, options) ? "\n" + Array(depth + 1).join(options.spaces) : "");
        xml2.push("</" + elementName + ">");
      } else {
        xml2.push("/>");
      }
      return xml2.join("");
    }
    function writeElements(elements, options, depth, firstLine) {
      return elements.reduce(function(xml2, element5) {
        var indent2 = writeIndentation(options, depth, firstLine && !xml2);
        switch (element5.type) {
          case "element":
            return xml2 + indent2 + writeElement(element5, options, depth);
          case "comment":
            return xml2 + indent2 + writeComment(element5[options.commentKey], options);
          case "doctype":
            return xml2 + indent2 + writeDoctype(element5[options.doctypeKey], options);
          case "cdata":
            return xml2 + (options.indentCdata ? indent2 : "") + writeCdata(element5[options.cdataKey], options);
          case "text":
            return xml2 + (options.indentText ? indent2 : "") + writeText(element5[options.textKey], options);
          case "instruction":
            var instruction = {};
            instruction[element5[options.nameKey]] = element5[options.attributesKey] ? element5 : element5[options.instructionKey];
            return xml2 + (options.indentInstruction ? indent2 : "") + writeInstruction(instruction, options, depth);
        }
      }, "");
    }
    function hasContentCompact(element5, options, anyContent) {
      var key2;
      for (key2 in element5) {
        if (element5.hasOwnProperty(key2)) {
          switch (key2) {
            case options.parentKey:
            case options.attributesKey:
              break;
            // skip to next key
            case options.textKey:
              if (options.indentText || anyContent) {
                return true;
              }
              break;
            // skip to next key
            case options.cdataKey:
              if (options.indentCdata || anyContent) {
                return true;
              }
              break;
            // skip to next key
            case options.instructionKey:
              if (options.indentInstruction || anyContent) {
                return true;
              }
              break;
            // skip to next key
            case options.doctypeKey:
            case options.commentKey:
              return true;
            default:
              return true;
          }
        }
      }
      return false;
    }
    function writeElementCompact(element5, name3, options, depth, indent2) {
      currentElement = element5;
      currentElementName = name3;
      var elementName = "elementNameFn" in options ? options.elementNameFn(name3, element5) : name3;
      if (typeof element5 === "undefined" || element5 === null || element5 === "") {
        return "fullTagEmptyElementFn" in options && options.fullTagEmptyElementFn(name3, element5) || options.fullTagEmptyElement ? "<" + elementName + "></" + elementName + ">" : "<" + elementName + "/>";
      }
      var xml2 = [];
      if (name3) {
        xml2.push("<" + elementName);
        if (typeof element5 !== "object") {
          xml2.push(">" + writeText(element5, options) + "</" + elementName + ">");
          return xml2.join("");
        }
        if (element5[options.attributesKey]) {
          xml2.push(writeAttributes(element5[options.attributesKey], options, depth));
        }
        var withClosingTag = hasContentCompact(element5, options, true) || element5[options.attributesKey] && element5[options.attributesKey]["xml:space"] === "preserve";
        if (!withClosingTag) {
          if ("fullTagEmptyElementFn" in options) {
            withClosingTag = options.fullTagEmptyElementFn(name3, element5);
          } else {
            withClosingTag = options.fullTagEmptyElement;
          }
        }
        if (withClosingTag) {
          xml2.push(">");
        } else {
          xml2.push("/>");
          return xml2.join("");
        }
      }
      xml2.push(writeElementsCompact(element5, options, depth + 1, false));
      currentElement = element5;
      currentElementName = name3;
      if (name3) {
        xml2.push((indent2 ? writeIndentation(options, depth, false) : "") + "</" + elementName + ">");
      }
      return xml2.join("");
    }
    function writeElementsCompact(element5, options, depth, firstLine) {
      var i2, key2, nodes, xml2 = [];
      for (key2 in element5) {
        if (element5.hasOwnProperty(key2)) {
          nodes = isArray2(element5[key2]) ? element5[key2] : [element5[key2]];
          for (i2 = 0; i2 < nodes.length; ++i2) {
            switch (key2) {
              case options.declarationKey:
                xml2.push(writeDeclaration(nodes[i2], options, depth));
                break;
              case options.instructionKey:
                xml2.push((options.indentInstruction ? writeIndentation(options, depth, firstLine) : "") + writeInstruction(nodes[i2], options, depth));
                break;
              case options.attributesKey:
              case options.parentKey:
                break;
              // skip
              case options.textKey:
                xml2.push((options.indentText ? writeIndentation(options, depth, firstLine) : "") + writeText(nodes[i2], options));
                break;
              case options.cdataKey:
                xml2.push((options.indentCdata ? writeIndentation(options, depth, firstLine) : "") + writeCdata(nodes[i2], options));
                break;
              case options.doctypeKey:
                xml2.push(writeIndentation(options, depth, firstLine) + writeDoctype(nodes[i2], options));
                break;
              case options.commentKey:
                xml2.push(writeIndentation(options, depth, firstLine) + writeComment(nodes[i2], options));
                break;
              default:
                xml2.push(writeIndentation(options, depth, firstLine) + writeElementCompact(nodes[i2], key2, options, depth, hasContentCompact(nodes[i2], options)));
            }
            firstLine = firstLine && !xml2.length;
          }
        }
      }
      return xml2.join("");
    }
    module2.exports = function(js, options) {
      options = validateOptions(options);
      var xml2 = [];
      currentElement = js;
      currentElementName = "_root_";
      if (options.compact) {
        xml2.push(writeElementsCompact(js, options, 0, true));
      } else {
        if (js[options.declarationKey]) {
          xml2.push(writeDeclaration(js[options.declarationKey], options, 0));
        }
        if (js[options.elementsKey] && js[options.elementsKey].length) {
          xml2.push(writeElements(js[options.elementsKey], options, 0, !xml2.length));
        }
      }
      return xml2.join("");
    };
  }
});

// ../../node_modules/xml-js/lib/json2xml.js
var require_json2xml = __commonJS({
  "../../node_modules/xml-js/lib/json2xml.js"(exports2, module2) {
    var js2xml3 = require_js2xml();
    module2.exports = function(json2, options) {
      if (json2 instanceof Buffer) {
        json2 = json2.toString();
      }
      var js = null;
      if (typeof json2 === "string") {
        try {
          js = JSON.parse(json2);
        } catch (e2) {
          throw new Error("The JSON structure is invalid");
        }
      } else {
        js = json2;
      }
      return js2xml3(js, options);
    };
  }
});

// ../../node_modules/xml-js/lib/index.js
var require_lib19 = __commonJS({
  "../../node_modules/xml-js/lib/index.js"(exports2, module2) {
    var xml2js3 = require_xml2js();
    var xml2json = require_xml2json();
    var js2xml3 = require_js2xml();
    var json2xml = require_json2xml();
    module2.exports = {
      xml2js: xml2js3,
      xml2json,
      js2xml: js2xml3,
      json2xml
    };
  }
});

// ../myst-cli/node_modules/universalify/index.js
var require_universalify = __commonJS({
  "../myst-cli/node_modules/universalify/index.js"(exports2) {
    "use strict";
    exports2.fromCallback = function(fn) {
      return Object.defineProperty(function(...args) {
        if (typeof args[args.length - 1] === "function") fn.apply(this, args);
        else {
          return new Promise((resolve9, reject) => {
            fn.call(
              this,
              ...args,
              (err, res) => err != null ? reject(err) : resolve9(res)
            );
          });
        }
      }, "name", { value: fn.name });
    };
    exports2.fromPromise = function(fn) {
      return Object.defineProperty(function(...args) {
        const cb = args[args.length - 1];
        if (typeof cb !== "function") return fn.apply(this, args);
        else fn.apply(this, args.slice(0, -1)).then((r2) => cb(null, r2), cb);
      }, "name", { value: fn.name });
    };
  }
});

// ../../node_modules/graceful-fs/polyfills.js
var require_polyfills = __commonJS({
  "../../node_modules/graceful-fs/polyfills.js"(exports2, module2) {
    var constants2 = require("constants");
    var origCwd = process.cwd;
    var cwd2 = null;
    var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform;
    process.cwd = function() {
      if (!cwd2)
        cwd2 = origCwd.call(process);
      return cwd2;
    };
    try {
      process.cwd();
    } catch (er) {
    }
    if (typeof process.chdir === "function") {
      chdir = process.chdir;
      process.chdir = function(d) {
        cwd2 = null;
        chdir.call(process, d);
      };
      if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir);
    }
    var chdir;
    module2.exports = patch4;
    function patch4(fs50) {
      if (constants2.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
        patchLchmod(fs50);
      }
      if (!fs50.lutimes) {
        patchLutimes(fs50);
      }
      fs50.chown = chownFix(fs50.chown);
      fs50.fchown = chownFix(fs50.fchown);
      fs50.lchown = chownFix(fs50.lchown);
      fs50.chmod = chmodFix(fs50.chmod);
      fs50.fchmod = chmodFix(fs50.fchmod);
      fs50.lchmod = chmodFix(fs50.lchmod);
      fs50.chownSync = chownFixSync(fs50.chownSync);
      fs50.fchownSync = chownFixSync(fs50.fchownSync);
      fs50.lchownSync = chownFixSync(fs50.lchownSync);
      fs50.chmodSync = chmodFixSync(fs50.chmodSync);
      fs50.fchmodSync = chmodFixSync(fs50.fchmodSync);
      fs50.lchmodSync = chmodFixSync(fs50.lchmodSync);
      fs50.stat = statFix(fs50.stat);
      fs50.fstat = statFix(fs50.fstat);
      fs50.lstat = statFix(fs50.lstat);
      fs50.statSync = statFixSync(fs50.statSync);
      fs50.fstatSync = statFixSync(fs50.fstatSync);
      fs50.lstatSync = statFixSync(fs50.lstatSync);
      if (fs50.chmod && !fs50.lchmod) {
        fs50.lchmod = function(path45, mode, cb) {
          if (cb) process.nextTick(cb);
        };
        fs50.lchmodSync = function() {
        };
      }
      if (fs50.chown && !fs50.lchown) {
        fs50.lchown = function(path45, uid, gid, cb) {
          if (cb) process.nextTick(cb);
        };
        fs50.lchownSync = function() {
        };
      }
      if (platform === "win32") {
        fs50.rename = typeof fs50.rename !== "function" ? fs50.rename : (function(fs$rename) {
          function rename(from4, to, cb) {
            var start = Date.now();
            var backoff = 0;
            fs$rename(from4, to, function CB(er) {
              if (er && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") && Date.now() - start < 6e4) {
                setTimeout(function() {
                  fs50.stat(to, function(stater, st) {
                    if (stater && stater.code === "ENOENT")
                      fs$rename(from4, to, CB);
                    else
                      cb(er);
                  });
                }, backoff);
                if (backoff < 100)
                  backoff += 10;
                return;
              }
              if (cb) cb(er);
            });
          }
          if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename);
          return rename;
        })(fs50.rename);
      }
      fs50.read = typeof fs50.read !== "function" ? fs50.read : (function(fs$read) {
        function read2(fd, buffer2, offset, length, position6, callback_) {
          var callback;
          if (callback_ && typeof callback_ === "function") {
            var eagCounter = 0;
            callback = function(er, _2, __) {
              if (er && er.code === "EAGAIN" && eagCounter < 10) {
                eagCounter++;
                return fs$read.call(fs50, fd, buffer2, offset, length, position6, callback);
              }
              callback_.apply(this, arguments);
            };
          }
          return fs$read.call(fs50, fd, buffer2, offset, length, position6, callback);
        }
        if (Object.setPrototypeOf) Object.setPrototypeOf(read2, fs$read);
        return read2;
      })(fs50.read);
      fs50.readSync = typeof fs50.readSync !== "function" ? fs50.readSync : /* @__PURE__ */ (function(fs$readSync) {
        return function(fd, buffer2, offset, length, position6) {
          var eagCounter = 0;
          while (true) {
            try {
              return fs$readSync.call(fs50, fd, buffer2, offset, length, position6);
            } catch (er) {
              if (er.code === "EAGAIN" && eagCounter < 10) {
                eagCounter++;
                continue;
              }
              throw er;
            }
          }
        };
      })(fs50.readSync);
      function patchLchmod(fs51) {
        fs51.lchmod = function(path45, mode, callback) {
          fs51.open(
            path45,
            constants2.O_WRONLY | constants2.O_SYMLINK,
            mode,
            function(err, fd) {
              if (err) {
                if (callback) callback(err);
                return;
              }
              fs51.fchmod(fd, mode, function(err2) {
                fs51.close(fd, function(err22) {
                  if (callback) callback(err2 || err22);
                });
              });
            }
          );
        };
        fs51.lchmodSync = function(path45, mode) {
          var fd = fs51.openSync(path45, constants2.O_WRONLY | constants2.O_SYMLINK, mode);
          var threw = true;
          var ret;
          try {
            ret = fs51.fchmodSync(fd, mode);
            threw = false;
          } finally {
            if (threw) {
              try {
                fs51.closeSync(fd);
              } catch (er) {
              }
            } else {
              fs51.closeSync(fd);
            }
          }
          return ret;
        };
      }
      function patchLutimes(fs51) {
        if (constants2.hasOwnProperty("O_SYMLINK") && fs51.futimes) {
          fs51.lutimes = function(path45, at, mt, cb) {
            fs51.open(path45, constants2.O_SYMLINK, function(er, fd) {
              if (er) {
                if (cb) cb(er);
                return;
              }
              fs51.futimes(fd, at, mt, function(er2) {
                fs51.close(fd, function(er22) {
                  if (cb) cb(er2 || er22);
                });
              });
            });
          };
          fs51.lutimesSync = function(path45, at, mt) {
            var fd = fs51.openSync(path45, constants2.O_SYMLINK);
            var ret;
            var threw = true;
            try {
              ret = fs51.futimesSync(fd, at, mt);
              threw = false;
            } finally {
              if (threw) {
                try {
                  fs51.closeSync(fd);
                } catch (er) {
                }
              } else {
                fs51.closeSync(fd);
              }
            }
            return ret;
          };
        } else if (fs51.futimes) {
          fs51.lutimes = function(_a6, _b, _c, cb) {
            if (cb) process.nextTick(cb);
          };
          fs51.lutimesSync = function() {
          };
        }
      }
      function chmodFix(orig) {
        if (!orig) return orig;
        return function(target, mode, cb) {
          return orig.call(fs50, target, mode, function(er) {
            if (chownErOk(er)) er = null;
            if (cb) cb.apply(this, arguments);
          });
        };
      }
      function chmodFixSync(orig) {
        if (!orig) return orig;
        return function(target, mode) {
          try {
            return orig.call(fs50, target, mode);
          } catch (er) {
            if (!chownErOk(er)) throw er;
          }
        };
      }
      function chownFix(orig) {
        if (!orig) return orig;
        return function(target, uid, gid, cb) {
          return orig.call(fs50, target, uid, gid, function(er) {
            if (chownErOk(er)) er = null;
            if (cb) cb.apply(this, arguments);
          });
        };
      }
      function chownFixSync(orig) {
        if (!orig) return orig;
        return function(target, uid, gid) {
          try {
            return orig.call(fs50, target, uid, gid);
          } catch (er) {
            if (!chownErOk(er)) throw er;
          }
        };
      }
      function statFix(orig) {
        if (!orig) return orig;
        return function(target, options, cb) {
          if (typeof options === "function") {
            cb = options;
            options = null;
          }
          function callback(er, stats) {
            if (stats) {
              if (stats.uid < 0) stats.uid += 4294967296;
              if (stats.gid < 0) stats.gid += 4294967296;
            }
            if (cb) cb.apply(this, arguments);
          }
          return options ? orig.call(fs50, target, options, callback) : orig.call(fs50, target, callback);
        };
      }
      function statFixSync(orig) {
        if (!orig) return orig;
        return function(target, options) {
          var stats = options ? orig.call(fs50, target, options) : orig.call(fs50, target);
          if (stats) {
            if (stats.uid < 0) stats.uid += 4294967296;
            if (stats.gid < 0) stats.gid += 4294967296;
          }
          return stats;
        };
      }
      function chownErOk(er) {
        if (!er)
          return true;
        if (er.code === "ENOSYS")
          return true;
        var nonroot = !process.getuid || process.getuid() !== 0;
        if (nonroot) {
          if (er.code === "EINVAL" || er.code === "EPERM")
            return true;
        }
        return false;
      }
    }
  }
});

// ../../node_modules/graceful-fs/legacy-streams.js
var require_legacy_streams = __commonJS({
  "../../node_modules/graceful-fs/legacy-streams.js"(exports2, module2) {
    var Stream4 = require("stream").Stream;
    module2.exports = legacy;
    function legacy(fs50) {
      return {
        ReadStream,
        WriteStream
      };
      function ReadStream(path45, options) {
        if (!(this instanceof ReadStream)) return new ReadStream(path45, options);
        Stream4.call(this);
        var self2 = this;
        this.path = path45;
        this.fd = null;
        this.readable = true;
        this.paused = false;
        this.flags = "r";
        this.mode = 438;
        this.bufferSize = 64 * 1024;
        options = options || {};
        var keys2 = Object.keys(options);
        for (var index4 = 0, length = keys2.length; index4 < length; index4++) {
          var key2 = keys2[index4];
          this[key2] = options[key2];
        }
        if (this.encoding) this.setEncoding(this.encoding);
        if (this.start !== void 0) {
          if ("number" !== typeof this.start) {
            throw TypeError("start must be a Number");
          }
          if (this.end === void 0) {
            this.end = Infinity;
          } else if ("number" !== typeof this.end) {
            throw TypeError("end must be a Number");
          }
          if (this.start > this.end) {
            throw new Error("start must be <= end");
          }
          this.pos = this.start;
        }
        if (this.fd !== null) {
          process.nextTick(function() {
            self2._read();
          });
          return;
        }
        fs50.open(this.path, this.flags, this.mode, function(err, fd) {
          if (err) {
            self2.emit("error", err);
            self2.readable = false;
            return;
          }
          self2.fd = fd;
          self2.emit("open", fd);
          self2._read();
        });
      }
      function WriteStream(path45, options) {
        if (!(this instanceof WriteStream)) return new WriteStream(path45, options);
        Stream4.call(this);
        this.path = path45;
        this.fd = null;
        this.writable = true;
        this.flags = "w";
        this.encoding = "binary";
        this.mode = 438;
        this.bytesWritten = 0;
        options = options || {};
        var keys2 = Object.keys(options);
        for (var index4 = 0, length = keys2.length; index4 < length; index4++) {
          var key2 = keys2[index4];
          this[key2] = options[key2];
        }
        if (this.start !== void 0) {
          if ("number" !== typeof this.start) {
            throw TypeError("start must be a Number");
          }
          if (this.start < 0) {
            throw new Error("start must be >= zero");
          }
          this.pos = this.start;
        }
        this.busy = false;
        this._queue = [];
        if (this.fd === null) {
          this._open = fs50.open;
          this._queue.push([this._open, this.path, this.flags, this.mode, void 0]);
          this.flush();
        }
      }
    }
  }
});

// ../../node_modules/graceful-fs/clone.js
var require_clone = __commonJS({
  "../../node_modules/graceful-fs/clone.js"(exports2, module2) {
    "use strict";
    module2.exports = clone3;
    var getPrototypeOf2 = Object.getPrototypeOf || function(obj) {
      return obj.__proto__;
    };
    function clone3(obj) {
      if (obj === null || typeof obj !== "object")
        return obj;
      if (obj instanceof Object)
        var copy2 = { __proto__: getPrototypeOf2(obj) };
      else
        var copy2 = /* @__PURE__ */ Object.create(null);
      Object.getOwnPropertyNames(obj).forEach(function(key2) {
        Object.defineProperty(copy2, key2, Object.getOwnPropertyDescriptor(obj, key2));
      });
      return copy2;
    }
  }
});

// ../../node_modules/graceful-fs/graceful-fs.js
var require_graceful_fs = __commonJS({
  "../../node_modules/graceful-fs/graceful-fs.js"(exports2, module2) {
    var fs50 = require("fs");
    var polyfills = require_polyfills();
    var legacy = require_legacy_streams();
    var clone3 = require_clone();
    var util4 = require("util");
    var gracefulQueue;
    var previousSymbol;
    if (typeof Symbol === "function" && typeof Symbol.for === "function") {
      gracefulQueue = Symbol.for("graceful-fs.queue");
      previousSymbol = Symbol.for("graceful-fs.previous");
    } else {
      gracefulQueue = "___graceful-fs.queue";
      previousSymbol = "___graceful-fs.previous";
    }
    function noop5() {
    }
    function publishQueue(context, queue2) {
      Object.defineProperty(context, gracefulQueue, {
        get: function() {
          return queue2;
        }
      });
    }
    var debug = noop5;
    if (util4.debuglog)
      debug = util4.debuglog("gfs4");
    else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ""))
      debug = function() {
        var m2 = util4.format.apply(util4, arguments);
        m2 = "GFS4: " + m2.split(/\n/).join("\nGFS4: ");
        console.error(m2);
      };
    if (!fs50[gracefulQueue]) {
      queue = global[gracefulQueue] || [];
      publishQueue(fs50, queue);
      fs50.close = (function(fs$close) {
        function close2(fd, cb) {
          return fs$close.call(fs50, fd, function(err) {
            if (!err) {
              resetQueue();
            }
            if (typeof cb === "function")
              cb.apply(this, arguments);
          });
        }
        Object.defineProperty(close2, previousSymbol, {
          value: fs$close
        });
        return close2;
      })(fs50.close);
      fs50.closeSync = (function(fs$closeSync) {
        function closeSync(fd) {
          fs$closeSync.apply(fs50, arguments);
          resetQueue();
        }
        Object.defineProperty(closeSync, previousSymbol, {
          value: fs$closeSync
        });
        return closeSync;
      })(fs50.closeSync);
      if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) {
        process.on("exit", function() {
          debug(fs50[gracefulQueue]);
          require("assert").equal(fs50[gracefulQueue].length, 0);
        });
      }
    }
    var queue;
    if (!global[gracefulQueue]) {
      publishQueue(global, fs50[gracefulQueue]);
    }
    module2.exports = patch4(clone3(fs50));
    if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs50.__patched) {
      module2.exports = patch4(fs50);
      fs50.__patched = true;
    }
    function patch4(fs51) {
      polyfills(fs51);
      fs51.gracefulify = patch4;
      fs51.createReadStream = createReadStream2;
      fs51.createWriteStream = createWriteStream2;
      var fs$readFile = fs51.readFile;
      fs51.readFile = readFile;
      function readFile(path45, options, cb) {
        if (typeof options === "function")
          cb = options, options = null;
        return go$readFile(path45, options, cb);
        function go$readFile(path46, options2, cb2, startTime) {
          return fs$readFile(path46, options2, function(err) {
            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
              enqueue([go$readFile, [path46, options2, cb2], err, startTime || Date.now(), Date.now()]);
            else {
              if (typeof cb2 === "function")
                cb2.apply(this, arguments);
            }
          });
        }
      }
      var fs$writeFile = fs51.writeFile;
      fs51.writeFile = writeFile2;
      function writeFile2(path45, data, options, cb) {
        if (typeof options === "function")
          cb = options, options = null;
        return go$writeFile(path45, data, options, cb);
        function go$writeFile(path46, data2, options2, cb2, startTime) {
          return fs$writeFile(path46, data2, options2, function(err) {
            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
              enqueue([go$writeFile, [path46, data2, options2, cb2], err, startTime || Date.now(), Date.now()]);
            else {
              if (typeof cb2 === "function")
                cb2.apply(this, arguments);
            }
          });
        }
      }
      var fs$appendFile = fs51.appendFile;
      if (fs$appendFile)
        fs51.appendFile = appendFile;
      function appendFile(path45, data, options, cb) {
        if (typeof options === "function")
          cb = options, options = null;
        return go$appendFile(path45, data, options, cb);
        function go$appendFile(path46, data2, options2, cb2, startTime) {
          return fs$appendFile(path46, data2, options2, function(err) {
            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
              enqueue([go$appendFile, [path46, data2, options2, cb2], err, startTime || Date.now(), Date.now()]);
            else {
              if (typeof cb2 === "function")
                cb2.apply(this, arguments);
            }
          });
        }
      }
      var fs$copyFile = fs51.copyFile;
      if (fs$copyFile)
        fs51.copyFile = copyFile2;
      function copyFile2(src, dest, flags, cb) {
        if (typeof flags === "function") {
          cb = flags;
          flags = 0;
        }
        return go$copyFile(src, dest, flags, cb);
        function go$copyFile(src2, dest2, flags2, cb2, startTime) {
          return fs$copyFile(src2, dest2, flags2, function(err) {
            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
              enqueue([go$copyFile, [src2, dest2, flags2, cb2], err, startTime || Date.now(), Date.now()]);
            else {
              if (typeof cb2 === "function")
                cb2.apply(this, arguments);
            }
          });
        }
      }
      var fs$readdir = fs51.readdir;
      fs51.readdir = readdir2;
      var noReaddirOptionVersions = /^v[0-5]\./;
      function readdir2(path45, options, cb) {
        if (typeof options === "function")
          cb = options, options = null;
        var go$readdir = noReaddirOptionVersions.test(process.version) ? function go$readdir2(path46, options2, cb2, startTime) {
          return fs$readdir(path46, fs$readdirCallback(
            path46,
            options2,
            cb2,
            startTime
          ));
        } : function go$readdir2(path46, options2, cb2, startTime) {
          return fs$readdir(path46, options2, fs$readdirCallback(
            path46,
            options2,
            cb2,
            startTime
          ));
        };
        return go$readdir(path45, options, cb);
        function fs$readdirCallback(path46, options2, cb2, startTime) {
          return function(err, files) {
            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
              enqueue([
                go$readdir,
                [path46, options2, cb2],
                err,
                startTime || Date.now(),
                Date.now()
              ]);
            else {
              if (files && files.sort)
                files.sort();
              if (typeof cb2 === "function")
                cb2.call(this, err, files);
            }
          };
        }
      }
      if (process.version.substr(0, 4) === "v0.8") {
        var legStreams = legacy(fs51);
        ReadStream = legStreams.ReadStream;
        WriteStream = legStreams.WriteStream;
      }
      var fs$ReadStream = fs51.ReadStream;
      if (fs$ReadStream) {
        ReadStream.prototype = Object.create(fs$ReadStream.prototype);
        ReadStream.prototype.open = ReadStream$open;
      }
      var fs$WriteStream = fs51.WriteStream;
      if (fs$WriteStream) {
        WriteStream.prototype = Object.create(fs$WriteStream.prototype);
        WriteStream.prototype.open = WriteStream$open;
      }
      Object.defineProperty(fs51, "ReadStream", {
        get: function() {
          return ReadStream;
        },
        set: function(val) {
          ReadStream = val;
        },
        enumerable: true,
        configurable: true
      });
      Object.defineProperty(fs51, "WriteStream", {
        get: function() {
          return WriteStream;
        },
        set: function(val) {
          WriteStream = val;
        },
        enumerable: true,
        configurable: true
      });
      var FileReadStream = ReadStream;
      Object.defineProperty(fs51, "FileReadStream", {
        get: function() {
          return FileReadStream;
        },
        set: function(val) {
          FileReadStream = val;
        },
        enumerable: true,
        configurable: true
      });
      var FileWriteStream = WriteStream;
      Object.defineProperty(fs51, "FileWriteStream", {
        get: function() {
          return FileWriteStream;
        },
        set: function(val) {
          FileWriteStream = val;
        },
        enumerable: true,
        configurable: true
      });
      function ReadStream(path45, options) {
        if (this instanceof ReadStream)
          return fs$ReadStream.apply(this, arguments), this;
        else
          return ReadStream.apply(Object.create(ReadStream.prototype), arguments);
      }
      function ReadStream$open() {
        var that = this;
        open2(that.path, that.flags, that.mode, function(err, fd) {
          if (err) {
            if (that.autoClose)
              that.destroy();
            that.emit("error", err);
          } else {
            that.fd = fd;
            that.emit("open", fd);
            that.read();
          }
        });
      }
      function WriteStream(path45, options) {
        if (this instanceof WriteStream)
          return fs$WriteStream.apply(this, arguments), this;
        else
          return WriteStream.apply(Object.create(WriteStream.prototype), arguments);
      }
      function WriteStream$open() {
        var that = this;
        open2(that.path, that.flags, that.mode, function(err, fd) {
          if (err) {
            that.destroy();
            that.emit("error", err);
          } else {
            that.fd = fd;
            that.emit("open", fd);
          }
        });
      }
      function createReadStream2(path45, options) {
        return new fs51.ReadStream(path45, options);
      }
      function createWriteStream2(path45, options) {
        return new fs51.WriteStream(path45, options);
      }
      var fs$open = fs51.open;
      fs51.open = open2;
      function open2(path45, flags, mode, cb) {
        if (typeof mode === "function")
          cb = mode, mode = null;
        return go$open(path45, flags, mode, cb);
        function go$open(path46, flags2, mode2, cb2, startTime) {
          return fs$open(path46, flags2, mode2, function(err, fd) {
            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
              enqueue([go$open, [path46, flags2, mode2, cb2], err, startTime || Date.now(), Date.now()]);
            else {
              if (typeof cb2 === "function")
                cb2.apply(this, arguments);
            }
          });
        }
      }
      return fs51;
    }
    function enqueue(elem) {
      debug("ENQUEUE", elem[0].name, elem[1]);
      fs50[gracefulQueue].push(elem);
      retry();
    }
    var retryTimer;
    function resetQueue() {
      var now = Date.now();
      for (var i2 = 0; i2 < fs50[gracefulQueue].length; ++i2) {
        if (fs50[gracefulQueue][i2].length > 2) {
          fs50[gracefulQueue][i2][3] = now;
          fs50[gracefulQueue][i2][4] = now;
        }
      }
      retry();
    }
    function retry() {
      clearTimeout(retryTimer);
      retryTimer = void 0;
      if (fs50[gracefulQueue].length === 0)
        return;
      var elem = fs50[gracefulQueue].shift();
      var fn = elem[0];
      var args = elem[1];
      var err = elem[2];
      var startTime = elem[3];
      var lastTime = elem[4];
      if (startTime === void 0) {
        debug("RETRY", fn.name, args);
        fn.apply(null, args);
      } else if (Date.now() - startTime >= 6e4) {
        debug("TIMEOUT", fn.name, args);
        var cb = args.pop();
        if (typeof cb === "function")
          cb.call(null, err);
      } else {
        var sinceAttempt = Date.now() - lastTime;
        var sinceStart = Math.max(lastTime - startTime, 1);
        var desiredDelay = Math.min(sinceStart * 1.2, 100);
        if (sinceAttempt >= desiredDelay) {
          debug("RETRY", fn.name, args);
          fn.apply(null, args.concat([startTime]));
        } else {
          fs50[gracefulQueue].push(elem);
        }
      }
      if (retryTimer === void 0) {
        retryTimer = setTimeout(retry, 0);
      }
    }
  }
});

// ../myst-cli/node_modules/fs-extra/lib/fs/index.js
var require_fs = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/fs/index.js"(exports2) {
    "use strict";
    var u3 = require_universalify().fromCallback;
    var fs50 = require_graceful_fs();
    var api = [
      "access",
      "appendFile",
      "chmod",
      "chown",
      "close",
      "copyFile",
      "fchmod",
      "fchown",
      "fdatasync",
      "fstat",
      "fsync",
      "ftruncate",
      "futimes",
      "lchmod",
      "lchown",
      "link",
      "lstat",
      "mkdir",
      "mkdtemp",
      "open",
      "opendir",
      "readdir",
      "readFile",
      "readlink",
      "realpath",
      "rename",
      "rm",
      "rmdir",
      "stat",
      "symlink",
      "truncate",
      "unlink",
      "utimes",
      "writeFile"
    ].filter((key2) => {
      return typeof fs50[key2] === "function";
    });
    Object.assign(exports2, fs50);
    api.forEach((method) => {
      exports2[method] = u3(fs50[method]);
    });
    exports2.exists = function(filename, callback) {
      if (typeof callback === "function") {
        return fs50.exists(filename, callback);
      }
      return new Promise((resolve9) => {
        return fs50.exists(filename, resolve9);
      });
    };
    exports2.read = function(fd, buffer2, offset, length, position6, callback) {
      if (typeof callback === "function") {
        return fs50.read(fd, buffer2, offset, length, position6, callback);
      }
      return new Promise((resolve9, reject) => {
        fs50.read(fd, buffer2, offset, length, position6, (err, bytesRead, buffer3) => {
          if (err) return reject(err);
          resolve9({ bytesRead, buffer: buffer3 });
        });
      });
    };
    exports2.write = function(fd, buffer2, ...args) {
      if (typeof args[args.length - 1] === "function") {
        return fs50.write(fd, buffer2, ...args);
      }
      return new Promise((resolve9, reject) => {
        fs50.write(fd, buffer2, ...args, (err, bytesWritten, buffer3) => {
          if (err) return reject(err);
          resolve9({ bytesWritten, buffer: buffer3 });
        });
      });
    };
    exports2.readv = function(fd, buffers, ...args) {
      if (typeof args[args.length - 1] === "function") {
        return fs50.readv(fd, buffers, ...args);
      }
      return new Promise((resolve9, reject) => {
        fs50.readv(fd, buffers, ...args, (err, bytesRead, buffers2) => {
          if (err) return reject(err);
          resolve9({ bytesRead, buffers: buffers2 });
        });
      });
    };
    exports2.writev = function(fd, buffers, ...args) {
      if (typeof args[args.length - 1] === "function") {
        return fs50.writev(fd, buffers, ...args);
      }
      return new Promise((resolve9, reject) => {
        fs50.writev(fd, buffers, ...args, (err, bytesWritten, buffers2) => {
          if (err) return reject(err);
          resolve9({ bytesWritten, buffers: buffers2 });
        });
      });
    };
    if (typeof fs50.realpath.native === "function") {
      exports2.realpath.native = u3(fs50.realpath.native);
    } else {
      process.emitWarning(
        "fs.realpath.native is not a function. Is fs being monkey-patched?",
        "Warning",
        "fs-extra-WARN0003"
      );
    }
  }
});

// ../myst-cli/node_modules/fs-extra/lib/mkdirs/utils.js
var require_utils8 = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/mkdirs/utils.js"(exports2, module2) {
    "use strict";
    var path45 = require("path");
    module2.exports.checkPath = function checkPath(pth) {
      if (process.platform === "win32") {
        const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path45.parse(pth).root, ""));
        if (pathHasInvalidWinCharacters) {
          const error = new Error(`Path contains invalid characters: ${pth}`);
          error.code = "EINVAL";
          throw error;
        }
      }
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/mkdirs/make-dir.js
var require_make_dir = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/mkdirs/make-dir.js"(exports2, module2) {
    "use strict";
    var fs50 = require_fs();
    var { checkPath } = require_utils8();
    var getMode = (options) => {
      const defaults3 = { mode: 511 };
      if (typeof options === "number") return options;
      return { ...defaults3, ...options }.mode;
    };
    module2.exports.makeDir = async (dir, options) => {
      checkPath(dir);
      return fs50.mkdir(dir, {
        mode: getMode(options),
        recursive: true
      });
    };
    module2.exports.makeDirSync = (dir, options) => {
      checkPath(dir);
      return fs50.mkdirSync(dir, {
        mode: getMode(options),
        recursive: true
      });
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/mkdirs/index.js
var require_mkdirs = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/mkdirs/index.js"(exports2, module2) {
    "use strict";
    var u3 = require_universalify().fromPromise;
    var { makeDir: _makeDir, makeDirSync } = require_make_dir();
    var makeDir = u3(_makeDir);
    module2.exports = {
      mkdirs: makeDir,
      mkdirsSync: makeDirSync,
      // alias
      mkdirp: makeDir,
      mkdirpSync: makeDirSync,
      ensureDir: makeDir,
      ensureDirSync: makeDirSync
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/path-exists/index.js
var require_path_exists = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/path-exists/index.js"(exports2, module2) {
    "use strict";
    var u3 = require_universalify().fromPromise;
    var fs50 = require_fs();
    function pathExists(path45) {
      return fs50.access(path45).then(() => true).catch(() => false);
    }
    module2.exports = {
      pathExists: u3(pathExists),
      pathExistsSync: fs50.existsSync
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/util/utimes.js
var require_utimes = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/util/utimes.js"(exports2, module2) {
    "use strict";
    var fs50 = require_graceful_fs();
    function utimesMillis(path45, atime, mtime, callback) {
      fs50.open(path45, "r+", (err, fd) => {
        if (err) return callback(err);
        fs50.futimes(fd, atime, mtime, (futimesErr) => {
          fs50.close(fd, (closeErr) => {
            if (callback) callback(futimesErr || closeErr);
          });
        });
      });
    }
    function utimesMillisSync(path45, atime, mtime) {
      const fd = fs50.openSync(path45, "r+");
      fs50.futimesSync(fd, atime, mtime);
      return fs50.closeSync(fd);
    }
    module2.exports = {
      utimesMillis,
      utimesMillisSync
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/util/stat.js
var require_stat = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/util/stat.js"(exports2, module2) {
    "use strict";
    var fs50 = require_fs();
    var path45 = require("path");
    var util4 = require("util");
    function getStats(src, dest, opts) {
      const statFunc = opts.dereference ? (file) => fs50.stat(file, { bigint: true }) : (file) => fs50.lstat(file, { bigint: true });
      return Promise.all([
        statFunc(src),
        statFunc(dest).catch((err) => {
          if (err.code === "ENOENT") return null;
          throw err;
        })
      ]).then(([srcStat, destStat]) => ({ srcStat, destStat }));
    }
    function getStatsSync(src, dest, opts) {
      let destStat;
      const statFunc = opts.dereference ? (file) => fs50.statSync(file, { bigint: true }) : (file) => fs50.lstatSync(file, { bigint: true });
      const srcStat = statFunc(src);
      try {
        destStat = statFunc(dest);
      } catch (err) {
        if (err.code === "ENOENT") return { srcStat, destStat: null };
        throw err;
      }
      return { srcStat, destStat };
    }
    function checkPaths(src, dest, funcName, opts, cb) {
      util4.callbackify(getStats)(src, dest, opts, (err, stats) => {
        if (err) return cb(err);
        const { srcStat, destStat } = stats;
        if (destStat) {
          if (areIdentical(srcStat, destStat)) {
            const srcBaseName = path45.basename(src);
            const destBaseName = path45.basename(dest);
            if (funcName === "move" && srcBaseName !== destBaseName && srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {
              return cb(null, { srcStat, destStat, isChangingCase: true });
            }
            return cb(new Error("Source and destination must not be the same."));
          }
          if (srcStat.isDirectory() && !destStat.isDirectory()) {
            return cb(new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`));
          }
          if (!srcStat.isDirectory() && destStat.isDirectory()) {
            return cb(new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`));
          }
        }
        if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {
          return cb(new Error(errMsg(src, dest, funcName)));
        }
        return cb(null, { srcStat, destStat });
      });
    }
    function checkPathsSync(src, dest, funcName, opts) {
      const { srcStat, destStat } = getStatsSync(src, dest, opts);
      if (destStat) {
        if (areIdentical(srcStat, destStat)) {
          const srcBaseName = path45.basename(src);
          const destBaseName = path45.basename(dest);
          if (funcName === "move" && srcBaseName !== destBaseName && srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {
            return { srcStat, destStat, isChangingCase: true };
          }
          throw new Error("Source and destination must not be the same.");
        }
        if (srcStat.isDirectory() && !destStat.isDirectory()) {
          throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`);
        }
        if (!srcStat.isDirectory() && destStat.isDirectory()) {
          throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`);
        }
      }
      if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {
        throw new Error(errMsg(src, dest, funcName));
      }
      return { srcStat, destStat };
    }
    function checkParentPaths(src, srcStat, dest, funcName, cb) {
      const srcParent = path45.resolve(path45.dirname(src));
      const destParent = path45.resolve(path45.dirname(dest));
      if (destParent === srcParent || destParent === path45.parse(destParent).root) return cb();
      fs50.stat(destParent, { bigint: true }, (err, destStat) => {
        if (err) {
          if (err.code === "ENOENT") return cb();
          return cb(err);
        }
        if (areIdentical(srcStat, destStat)) {
          return cb(new Error(errMsg(src, dest, funcName)));
        }
        return checkParentPaths(src, srcStat, destParent, funcName, cb);
      });
    }
    function checkParentPathsSync(src, srcStat, dest, funcName) {
      const srcParent = path45.resolve(path45.dirname(src));
      const destParent = path45.resolve(path45.dirname(dest));
      if (destParent === srcParent || destParent === path45.parse(destParent).root) return;
      let destStat;
      try {
        destStat = fs50.statSync(destParent, { bigint: true });
      } catch (err) {
        if (err.code === "ENOENT") return;
        throw err;
      }
      if (areIdentical(srcStat, destStat)) {
        throw new Error(errMsg(src, dest, funcName));
      }
      return checkParentPathsSync(src, srcStat, destParent, funcName);
    }
    function areIdentical(srcStat, destStat) {
      return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev;
    }
    function isSrcSubdir(src, dest) {
      const srcArr = path45.resolve(src).split(path45.sep).filter((i2) => i2);
      const destArr = path45.resolve(dest).split(path45.sep).filter((i2) => i2);
      return srcArr.reduce((acc, cur, i2) => acc && destArr[i2] === cur, true);
    }
    function errMsg(src, dest, funcName) {
      return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`;
    }
    module2.exports = {
      checkPaths,
      checkPathsSync,
      checkParentPaths,
      checkParentPathsSync,
      isSrcSubdir,
      areIdentical
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/copy/copy.js
var require_copy = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/copy/copy.js"(exports2, module2) {
    "use strict";
    var fs50 = require_graceful_fs();
    var path45 = require("path");
    var mkdirs = require_mkdirs().mkdirs;
    var pathExists = require_path_exists().pathExists;
    var utimesMillis = require_utimes().utimesMillis;
    var stat2 = require_stat();
    function copy2(src, dest, opts, cb) {
      if (typeof opts === "function" && !cb) {
        cb = opts;
        opts = {};
      } else if (typeof opts === "function") {
        opts = { filter: opts };
      }
      cb = cb || function() {
      };
      opts = opts || {};
      opts.clobber = "clobber" in opts ? !!opts.clobber : true;
      opts.overwrite = "overwrite" in opts ? !!opts.overwrite : opts.clobber;
      if (opts.preserveTimestamps && process.arch === "ia32") {
        process.emitWarning(
          "Using the preserveTimestamps option in 32-bit node is not recommended;\n\n	see https://github.com/jprichardson/node-fs-extra/issues/269",
          "Warning",
          "fs-extra-WARN0001"
        );
      }
      stat2.checkPaths(src, dest, "copy", opts, (err, stats) => {
        if (err) return cb(err);
        const { srcStat, destStat } = stats;
        stat2.checkParentPaths(src, srcStat, dest, "copy", (err2) => {
          if (err2) return cb(err2);
          runFilter(src, dest, opts, (err3, include3) => {
            if (err3) return cb(err3);
            if (!include3) return cb();
            checkParentDir(destStat, src, dest, opts, cb);
          });
        });
      });
    }
    function checkParentDir(destStat, src, dest, opts, cb) {
      const destParent = path45.dirname(dest);
      pathExists(destParent, (err, dirExists) => {
        if (err) return cb(err);
        if (dirExists) return getStats(destStat, src, dest, opts, cb);
        mkdirs(destParent, (err2) => {
          if (err2) return cb(err2);
          return getStats(destStat, src, dest, opts, cb);
        });
      });
    }
    function runFilter(src, dest, opts, cb) {
      if (!opts.filter) return cb(null, true);
      Promise.resolve(opts.filter(src, dest)).then((include3) => cb(null, include3), (error) => cb(error));
    }
    function getStats(destStat, src, dest, opts, cb) {
      const stat3 = opts.dereference ? fs50.stat : fs50.lstat;
      stat3(src, (err, srcStat) => {
        if (err) return cb(err);
        if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts, cb);
        else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts, cb);
        else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts, cb);
        else if (srcStat.isSocket()) return cb(new Error(`Cannot copy a socket file: ${src}`));
        else if (srcStat.isFIFO()) return cb(new Error(`Cannot copy a FIFO pipe: ${src}`));
        return cb(new Error(`Unknown file: ${src}`));
      });
    }
    function onFile(srcStat, destStat, src, dest, opts, cb) {
      if (!destStat) return copyFile2(srcStat, src, dest, opts, cb);
      return mayCopyFile(srcStat, src, dest, opts, cb);
    }
    function mayCopyFile(srcStat, src, dest, opts, cb) {
      if (opts.overwrite) {
        fs50.unlink(dest, (err) => {
          if (err) return cb(err);
          return copyFile2(srcStat, src, dest, opts, cb);
        });
      } else if (opts.errorOnExist) {
        return cb(new Error(`'${dest}' already exists`));
      } else return cb();
    }
    function copyFile2(srcStat, src, dest, opts, cb) {
      fs50.copyFile(src, dest, (err) => {
        if (err) return cb(err);
        if (opts.preserveTimestamps) return handleTimestampsAndMode(srcStat.mode, src, dest, cb);
        return setDestMode(dest, srcStat.mode, cb);
      });
    }
    function handleTimestampsAndMode(srcMode, src, dest, cb) {
      if (fileIsNotWritable(srcMode)) {
        return makeFileWritable(dest, srcMode, (err) => {
          if (err) return cb(err);
          return setDestTimestampsAndMode(srcMode, src, dest, cb);
        });
      }
      return setDestTimestampsAndMode(srcMode, src, dest, cb);
    }
    function fileIsNotWritable(srcMode) {
      return (srcMode & 128) === 0;
    }
    function makeFileWritable(dest, srcMode, cb) {
      return setDestMode(dest, srcMode | 128, cb);
    }
    function setDestTimestampsAndMode(srcMode, src, dest, cb) {
      setDestTimestamps(src, dest, (err) => {
        if (err) return cb(err);
        return setDestMode(dest, srcMode, cb);
      });
    }
    function setDestMode(dest, srcMode, cb) {
      return fs50.chmod(dest, srcMode, cb);
    }
    function setDestTimestamps(src, dest, cb) {
      fs50.stat(src, (err, updatedSrcStat) => {
        if (err) return cb(err);
        return utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime, cb);
      });
    }
    function onDir(srcStat, destStat, src, dest, opts, cb) {
      if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts, cb);
      return copyDir(src, dest, opts, cb);
    }
    function mkDirAndCopy(srcMode, src, dest, opts, cb) {
      fs50.mkdir(dest, (err) => {
        if (err) return cb(err);
        copyDir(src, dest, opts, (err2) => {
          if (err2) return cb(err2);
          return setDestMode(dest, srcMode, cb);
        });
      });
    }
    function copyDir(src, dest, opts, cb) {
      fs50.readdir(src, (err, items) => {
        if (err) return cb(err);
        return copyDirItems(items, src, dest, opts, cb);
      });
    }
    function copyDirItems(items, src, dest, opts, cb) {
      const item = items.pop();
      if (!item) return cb();
      return copyDirItem(items, item, src, dest, opts, cb);
    }
    function copyDirItem(items, item, src, dest, opts, cb) {
      const srcItem = path45.join(src, item);
      const destItem = path45.join(dest, item);
      runFilter(srcItem, destItem, opts, (err, include3) => {
        if (err) return cb(err);
        if (!include3) return copyDirItems(items, src, dest, opts, cb);
        stat2.checkPaths(srcItem, destItem, "copy", opts, (err2, stats) => {
          if (err2) return cb(err2);
          const { destStat } = stats;
          getStats(destStat, srcItem, destItem, opts, (err3) => {
            if (err3) return cb(err3);
            return copyDirItems(items, src, dest, opts, cb);
          });
        });
      });
    }
    function onLink(destStat, src, dest, opts, cb) {
      fs50.readlink(src, (err, resolvedSrc) => {
        if (err) return cb(err);
        if (opts.dereference) {
          resolvedSrc = path45.resolve(process.cwd(), resolvedSrc);
        }
        if (!destStat) {
          return fs50.symlink(resolvedSrc, dest, cb);
        } else {
          fs50.readlink(dest, (err2, resolvedDest) => {
            if (err2) {
              if (err2.code === "EINVAL" || err2.code === "UNKNOWN") return fs50.symlink(resolvedSrc, dest, cb);
              return cb(err2);
            }
            if (opts.dereference) {
              resolvedDest = path45.resolve(process.cwd(), resolvedDest);
            }
            if (stat2.isSrcSubdir(resolvedSrc, resolvedDest)) {
              return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`));
            }
            if (stat2.isSrcSubdir(resolvedDest, resolvedSrc)) {
              return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`));
            }
            return copyLink(resolvedSrc, dest, cb);
          });
        }
      });
    }
    function copyLink(resolvedSrc, dest, cb) {
      fs50.unlink(dest, (err) => {
        if (err) return cb(err);
        return fs50.symlink(resolvedSrc, dest, cb);
      });
    }
    module2.exports = copy2;
  }
});

// ../myst-cli/node_modules/fs-extra/lib/copy/copy-sync.js
var require_copy_sync = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/copy/copy-sync.js"(exports2, module2) {
    "use strict";
    var fs50 = require_graceful_fs();
    var path45 = require("path");
    var mkdirsSync = require_mkdirs().mkdirsSync;
    var utimesMillisSync = require_utimes().utimesMillisSync;
    var stat2 = require_stat();
    function copySync(src, dest, opts) {
      if (typeof opts === "function") {
        opts = { filter: opts };
      }
      opts = opts || {};
      opts.clobber = "clobber" in opts ? !!opts.clobber : true;
      opts.overwrite = "overwrite" in opts ? !!opts.overwrite : opts.clobber;
      if (opts.preserveTimestamps && process.arch === "ia32") {
        process.emitWarning(
          "Using the preserveTimestamps option in 32-bit node is not recommended;\n\n	see https://github.com/jprichardson/node-fs-extra/issues/269",
          "Warning",
          "fs-extra-WARN0002"
        );
      }
      const { srcStat, destStat } = stat2.checkPathsSync(src, dest, "copy", opts);
      stat2.checkParentPathsSync(src, srcStat, dest, "copy");
      if (opts.filter && !opts.filter(src, dest)) return;
      const destParent = path45.dirname(dest);
      if (!fs50.existsSync(destParent)) mkdirsSync(destParent);
      return getStats(destStat, src, dest, opts);
    }
    function getStats(destStat, src, dest, opts) {
      const statSync2 = opts.dereference ? fs50.statSync : fs50.lstatSync;
      const srcStat = statSync2(src);
      if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts);
      else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts);
      else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts);
      else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`);
      else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`);
      throw new Error(`Unknown file: ${src}`);
    }
    function onFile(srcStat, destStat, src, dest, opts) {
      if (!destStat) return copyFile2(srcStat, src, dest, opts);
      return mayCopyFile(srcStat, src, dest, opts);
    }
    function mayCopyFile(srcStat, src, dest, opts) {
      if (opts.overwrite) {
        fs50.unlinkSync(dest);
        return copyFile2(srcStat, src, dest, opts);
      } else if (opts.errorOnExist) {
        throw new Error(`'${dest}' already exists`);
      }
    }
    function copyFile2(srcStat, src, dest, opts) {
      fs50.copyFileSync(src, dest);
      if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest);
      return setDestMode(dest, srcStat.mode);
    }
    function handleTimestamps(srcMode, src, dest) {
      if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode);
      return setDestTimestamps(src, dest);
    }
    function fileIsNotWritable(srcMode) {
      return (srcMode & 128) === 0;
    }
    function makeFileWritable(dest, srcMode) {
      return setDestMode(dest, srcMode | 128);
    }
    function setDestMode(dest, srcMode) {
      return fs50.chmodSync(dest, srcMode);
    }
    function setDestTimestamps(src, dest) {
      const updatedSrcStat = fs50.statSync(src);
      return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime);
    }
    function onDir(srcStat, destStat, src, dest, opts) {
      if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts);
      return copyDir(src, dest, opts);
    }
    function mkDirAndCopy(srcMode, src, dest, opts) {
      fs50.mkdirSync(dest);
      copyDir(src, dest, opts);
      return setDestMode(dest, srcMode);
    }
    function copyDir(src, dest, opts) {
      fs50.readdirSync(src).forEach((item) => copyDirItem(item, src, dest, opts));
    }
    function copyDirItem(item, src, dest, opts) {
      const srcItem = path45.join(src, item);
      const destItem = path45.join(dest, item);
      if (opts.filter && !opts.filter(srcItem, destItem)) return;
      const { destStat } = stat2.checkPathsSync(srcItem, destItem, "copy", opts);
      return getStats(destStat, srcItem, destItem, opts);
    }
    function onLink(destStat, src, dest, opts) {
      let resolvedSrc = fs50.readlinkSync(src);
      if (opts.dereference) {
        resolvedSrc = path45.resolve(process.cwd(), resolvedSrc);
      }
      if (!destStat) {
        return fs50.symlinkSync(resolvedSrc, dest);
      } else {
        let resolvedDest;
        try {
          resolvedDest = fs50.readlinkSync(dest);
        } catch (err) {
          if (err.code === "EINVAL" || err.code === "UNKNOWN") return fs50.symlinkSync(resolvedSrc, dest);
          throw err;
        }
        if (opts.dereference) {
          resolvedDest = path45.resolve(process.cwd(), resolvedDest);
        }
        if (stat2.isSrcSubdir(resolvedSrc, resolvedDest)) {
          throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`);
        }
        if (stat2.isSrcSubdir(resolvedDest, resolvedSrc)) {
          throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`);
        }
        return copyLink(resolvedSrc, dest);
      }
    }
    function copyLink(resolvedSrc, dest) {
      fs50.unlinkSync(dest);
      return fs50.symlinkSync(resolvedSrc, dest);
    }
    module2.exports = copySync;
  }
});

// ../myst-cli/node_modules/fs-extra/lib/copy/index.js
var require_copy2 = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/copy/index.js"(exports2, module2) {
    "use strict";
    var u3 = require_universalify().fromCallback;
    module2.exports = {
      copy: u3(require_copy()),
      copySync: require_copy_sync()
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/remove/index.js
var require_remove = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/remove/index.js"(exports2, module2) {
    "use strict";
    var fs50 = require_graceful_fs();
    var u3 = require_universalify().fromCallback;
    function remove3(path45, callback) {
      fs50.rm(path45, { recursive: true, force: true }, callback);
    }
    function removeSync(path45) {
      fs50.rmSync(path45, { recursive: true, force: true });
    }
    module2.exports = {
      remove: u3(remove3),
      removeSync
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/empty/index.js
var require_empty2 = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/empty/index.js"(exports2, module2) {
    "use strict";
    var u3 = require_universalify().fromPromise;
    var fs50 = require_fs();
    var path45 = require("path");
    var mkdir = require_mkdirs();
    var remove3 = require_remove();
    var emptyDir = u3(async function emptyDir2(dir) {
      let items;
      try {
        items = await fs50.readdir(dir);
      } catch {
        return mkdir.mkdirs(dir);
      }
      return Promise.all(items.map((item) => remove3.remove(path45.join(dir, item))));
    });
    function emptyDirSync(dir) {
      let items;
      try {
        items = fs50.readdirSync(dir);
      } catch {
        return mkdir.mkdirsSync(dir);
      }
      items.forEach((item) => {
        item = path45.join(dir, item);
        remove3.removeSync(item);
      });
    }
    module2.exports = {
      emptyDirSync,
      emptydirSync: emptyDirSync,
      emptyDir,
      emptydir: emptyDir
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/ensure/file.js
var require_file2 = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/ensure/file.js"(exports2, module2) {
    "use strict";
    var u3 = require_universalify().fromCallback;
    var path45 = require("path");
    var fs50 = require_graceful_fs();
    var mkdir = require_mkdirs();
    function createFile(file, callback) {
      function makeFile() {
        fs50.writeFile(file, "", (err) => {
          if (err) return callback(err);
          callback();
        });
      }
      fs50.stat(file, (err, stats) => {
        if (!err && stats.isFile()) return callback();
        const dir = path45.dirname(file);
        fs50.stat(dir, (err2, stats2) => {
          if (err2) {
            if (err2.code === "ENOENT") {
              return mkdir.mkdirs(dir, (err3) => {
                if (err3) return callback(err3);
                makeFile();
              });
            }
            return callback(err2);
          }
          if (stats2.isDirectory()) makeFile();
          else {
            fs50.readdir(dir, (err3) => {
              if (err3) return callback(err3);
            });
          }
        });
      });
    }
    function createFileSync(file) {
      let stats;
      try {
        stats = fs50.statSync(file);
      } catch {
      }
      if (stats && stats.isFile()) return;
      const dir = path45.dirname(file);
      try {
        if (!fs50.statSync(dir).isDirectory()) {
          fs50.readdirSync(dir);
        }
      } catch (err) {
        if (err && err.code === "ENOENT") mkdir.mkdirsSync(dir);
        else throw err;
      }
      fs50.writeFileSync(file, "");
    }
    module2.exports = {
      createFile: u3(createFile),
      createFileSync
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/ensure/link.js
var require_link2 = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/ensure/link.js"(exports2, module2) {
    "use strict";
    var u3 = require_universalify().fromCallback;
    var path45 = require("path");
    var fs50 = require_graceful_fs();
    var mkdir = require_mkdirs();
    var pathExists = require_path_exists().pathExists;
    var { areIdentical } = require_stat();
    function createLink(srcpath, dstpath, callback) {
      function makeLink(srcpath2, dstpath2) {
        fs50.link(srcpath2, dstpath2, (err) => {
          if (err) return callback(err);
          callback(null);
        });
      }
      fs50.lstat(dstpath, (_2, dstStat) => {
        fs50.lstat(srcpath, (err, srcStat) => {
          if (err) {
            err.message = err.message.replace("lstat", "ensureLink");
            return callback(err);
          }
          if (dstStat && areIdentical(srcStat, dstStat)) return callback(null);
          const dir = path45.dirname(dstpath);
          pathExists(dir, (err2, dirExists) => {
            if (err2) return callback(err2);
            if (dirExists) return makeLink(srcpath, dstpath);
            mkdir.mkdirs(dir, (err3) => {
              if (err3) return callback(err3);
              makeLink(srcpath, dstpath);
            });
          });
        });
      });
    }
    function createLinkSync(srcpath, dstpath) {
      let dstStat;
      try {
        dstStat = fs50.lstatSync(dstpath);
      } catch {
      }
      try {
        const srcStat = fs50.lstatSync(srcpath);
        if (dstStat && areIdentical(srcStat, dstStat)) return;
      } catch (err) {
        err.message = err.message.replace("lstat", "ensureLink");
        throw err;
      }
      const dir = path45.dirname(dstpath);
      const dirExists = fs50.existsSync(dir);
      if (dirExists) return fs50.linkSync(srcpath, dstpath);
      mkdir.mkdirsSync(dir);
      return fs50.linkSync(srcpath, dstpath);
    }
    module2.exports = {
      createLink: u3(createLink),
      createLinkSync
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/ensure/symlink-paths.js
var require_symlink_paths = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/ensure/symlink-paths.js"(exports2, module2) {
    "use strict";
    var path45 = require("path");
    var fs50 = require_graceful_fs();
    var pathExists = require_path_exists().pathExists;
    function symlinkPaths(srcpath, dstpath, callback) {
      if (path45.isAbsolute(srcpath)) {
        return fs50.lstat(srcpath, (err) => {
          if (err) {
            err.message = err.message.replace("lstat", "ensureSymlink");
            return callback(err);
          }
          return callback(null, {
            toCwd: srcpath,
            toDst: srcpath
          });
        });
      } else {
        const dstdir = path45.dirname(dstpath);
        const relativeToDst = path45.join(dstdir, srcpath);
        return pathExists(relativeToDst, (err, exists2) => {
          if (err) return callback(err);
          if (exists2) {
            return callback(null, {
              toCwd: relativeToDst,
              toDst: srcpath
            });
          } else {
            return fs50.lstat(srcpath, (err2) => {
              if (err2) {
                err2.message = err2.message.replace("lstat", "ensureSymlink");
                return callback(err2);
              }
              return callback(null, {
                toCwd: srcpath,
                toDst: path45.relative(dstdir, srcpath)
              });
            });
          }
        });
      }
    }
    function symlinkPathsSync(srcpath, dstpath) {
      let exists2;
      if (path45.isAbsolute(srcpath)) {
        exists2 = fs50.existsSync(srcpath);
        if (!exists2) throw new Error("absolute srcpath does not exist");
        return {
          toCwd: srcpath,
          toDst: srcpath
        };
      } else {
        const dstdir = path45.dirname(dstpath);
        const relativeToDst = path45.join(dstdir, srcpath);
        exists2 = fs50.existsSync(relativeToDst);
        if (exists2) {
          return {
            toCwd: relativeToDst,
            toDst: srcpath
          };
        } else {
          exists2 = fs50.existsSync(srcpath);
          if (!exists2) throw new Error("relative srcpath does not exist");
          return {
            toCwd: srcpath,
            toDst: path45.relative(dstdir, srcpath)
          };
        }
      }
    }
    module2.exports = {
      symlinkPaths,
      symlinkPathsSync
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/ensure/symlink-type.js
var require_symlink_type = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/ensure/symlink-type.js"(exports2, module2) {
    "use strict";
    var fs50 = require_graceful_fs();
    function symlinkType(srcpath, type2, callback) {
      callback = typeof type2 === "function" ? type2 : callback;
      type2 = typeof type2 === "function" ? false : type2;
      if (type2) return callback(null, type2);
      fs50.lstat(srcpath, (err, stats) => {
        if (err) return callback(null, "file");
        type2 = stats && stats.isDirectory() ? "dir" : "file";
        callback(null, type2);
      });
    }
    function symlinkTypeSync(srcpath, type2) {
      let stats;
      if (type2) return type2;
      try {
        stats = fs50.lstatSync(srcpath);
      } catch {
        return "file";
      }
      return stats && stats.isDirectory() ? "dir" : "file";
    }
    module2.exports = {
      symlinkType,
      symlinkTypeSync
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/ensure/symlink.js
var require_symlink = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/ensure/symlink.js"(exports2, module2) {
    "use strict";
    var u3 = require_universalify().fromCallback;
    var path45 = require("path");
    var fs50 = require_fs();
    var _mkdirs = require_mkdirs();
    var mkdirs = _mkdirs.mkdirs;
    var mkdirsSync = _mkdirs.mkdirsSync;
    var _symlinkPaths = require_symlink_paths();
    var symlinkPaths = _symlinkPaths.symlinkPaths;
    var symlinkPathsSync = _symlinkPaths.symlinkPathsSync;
    var _symlinkType = require_symlink_type();
    var symlinkType = _symlinkType.symlinkType;
    var symlinkTypeSync = _symlinkType.symlinkTypeSync;
    var pathExists = require_path_exists().pathExists;
    var { areIdentical } = require_stat();
    function createSymlink(srcpath, dstpath, type2, callback) {
      callback = typeof type2 === "function" ? type2 : callback;
      type2 = typeof type2 === "function" ? false : type2;
      fs50.lstat(dstpath, (err, stats) => {
        if (!err && stats.isSymbolicLink()) {
          Promise.all([
            fs50.stat(srcpath),
            fs50.stat(dstpath)
          ]).then(([srcStat, dstStat]) => {
            if (areIdentical(srcStat, dstStat)) return callback(null);
            _createSymlink(srcpath, dstpath, type2, callback);
          });
        } else _createSymlink(srcpath, dstpath, type2, callback);
      });
    }
    function _createSymlink(srcpath, dstpath, type2, callback) {
      symlinkPaths(srcpath, dstpath, (err, relative6) => {
        if (err) return callback(err);
        srcpath = relative6.toDst;
        symlinkType(relative6.toCwd, type2, (err2, type3) => {
          if (err2) return callback(err2);
          const dir = path45.dirname(dstpath);
          pathExists(dir, (err3, dirExists) => {
            if (err3) return callback(err3);
            if (dirExists) return fs50.symlink(srcpath, dstpath, type3, callback);
            mkdirs(dir, (err4) => {
              if (err4) return callback(err4);
              fs50.symlink(srcpath, dstpath, type3, callback);
            });
          });
        });
      });
    }
    function createSymlinkSync(srcpath, dstpath, type2) {
      let stats;
      try {
        stats = fs50.lstatSync(dstpath);
      } catch {
      }
      if (stats && stats.isSymbolicLink()) {
        const srcStat = fs50.statSync(srcpath);
        const dstStat = fs50.statSync(dstpath);
        if (areIdentical(srcStat, dstStat)) return;
      }
      const relative6 = symlinkPathsSync(srcpath, dstpath);
      srcpath = relative6.toDst;
      type2 = symlinkTypeSync(relative6.toCwd, type2);
      const dir = path45.dirname(dstpath);
      const exists2 = fs50.existsSync(dir);
      if (exists2) return fs50.symlinkSync(srcpath, dstpath, type2);
      mkdirsSync(dir);
      return fs50.symlinkSync(srcpath, dstpath, type2);
    }
    module2.exports = {
      createSymlink: u3(createSymlink),
      createSymlinkSync
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/ensure/index.js
var require_ensure = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/ensure/index.js"(exports2, module2) {
    "use strict";
    var { createFile, createFileSync } = require_file2();
    var { createLink, createLinkSync } = require_link2();
    var { createSymlink, createSymlinkSync } = require_symlink();
    module2.exports = {
      // file
      createFile,
      createFileSync,
      ensureFile: createFile,
      ensureFileSync: createFileSync,
      // link
      createLink,
      createLinkSync,
      ensureLink: createLink,
      ensureLinkSync: createLinkSync,
      // symlink
      createSymlink,
      createSymlinkSync,
      ensureSymlink: createSymlink,
      ensureSymlinkSync: createSymlinkSync
    };
  }
});

// ../myst-cli/node_modules/jsonfile/utils.js
var require_utils9 = __commonJS({
  "../myst-cli/node_modules/jsonfile/utils.js"(exports2, module2) {
    function stringify4(obj, { EOL = "\n", finalEOL = true, replacer = null, spaces } = {}) {
      const EOF2 = finalEOL ? EOL : "";
      const str2 = JSON.stringify(obj, replacer, spaces);
      return str2.replace(/\n/g, EOL) + EOF2;
    }
    function stripBom(content3) {
      if (Buffer.isBuffer(content3)) content3 = content3.toString("utf8");
      return content3.replace(/^\uFEFF/, "");
    }
    module2.exports = { stringify: stringify4, stripBom };
  }
});

// ../myst-cli/node_modules/jsonfile/index.js
var require_jsonfile = __commonJS({
  "../myst-cli/node_modules/jsonfile/index.js"(exports2, module2) {
    var _fs3;
    try {
      _fs3 = require_graceful_fs();
    } catch (_2) {
      _fs3 = require("fs");
    }
    var universalify = require_universalify();
    var { stringify: stringify4, stripBom } = require_utils9();
    async function _readFile(file, options = {}) {
      if (typeof options === "string") {
        options = { encoding: options };
      }
      const fs50 = options.fs || _fs3;
      const shouldThrow = "throws" in options ? options.throws : true;
      let data = await universalify.fromCallback(fs50.readFile)(file, options);
      data = stripBom(data);
      let obj;
      try {
        obj = JSON.parse(data, options ? options.reviver : null);
      } catch (err) {
        if (shouldThrow) {
          err.message = `${file}: ${err.message}`;
          throw err;
        } else {
          return null;
        }
      }
      return obj;
    }
    var readFile = universalify.fromPromise(_readFile);
    function readFileSync3(file, options = {}) {
      if (typeof options === "string") {
        options = { encoding: options };
      }
      const fs50 = options.fs || _fs3;
      const shouldThrow = "throws" in options ? options.throws : true;
      try {
        let content3 = fs50.readFileSync(file, options);
        content3 = stripBom(content3);
        return JSON.parse(content3, options.reviver);
      } catch (err) {
        if (shouldThrow) {
          err.message = `${file}: ${err.message}`;
          throw err;
        } else {
          return null;
        }
      }
    }
    async function _writeFile(file, obj, options = {}) {
      const fs50 = options.fs || _fs3;
      const str2 = stringify4(obj, options);
      await universalify.fromCallback(fs50.writeFile)(file, str2, options);
    }
    var writeFile2 = universalify.fromPromise(_writeFile);
    function writeFileSync3(file, obj, options = {}) {
      const fs50 = options.fs || _fs3;
      const str2 = stringify4(obj, options);
      return fs50.writeFileSync(file, str2, options);
    }
    var jsonfile = {
      readFile,
      readFileSync: readFileSync3,
      writeFile: writeFile2,
      writeFileSync: writeFileSync3
    };
    module2.exports = jsonfile;
  }
});

// ../myst-cli/node_modules/fs-extra/lib/json/jsonfile.js
var require_jsonfile2 = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/json/jsonfile.js"(exports2, module2) {
    "use strict";
    var jsonFile = require_jsonfile();
    module2.exports = {
      // jsonfile exports
      readJson: jsonFile.readFile,
      readJsonSync: jsonFile.readFileSync,
      writeJson: jsonFile.writeFile,
      writeJsonSync: jsonFile.writeFileSync
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/output-file/index.js
var require_output_file = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/output-file/index.js"(exports2, module2) {
    "use strict";
    var u3 = require_universalify().fromCallback;
    var fs50 = require_graceful_fs();
    var path45 = require("path");
    var mkdir = require_mkdirs();
    var pathExists = require_path_exists().pathExists;
    function outputFile(file, data, encoding, callback) {
      if (typeof encoding === "function") {
        callback = encoding;
        encoding = "utf8";
      }
      const dir = path45.dirname(file);
      pathExists(dir, (err, itDoes) => {
        if (err) return callback(err);
        if (itDoes) return fs50.writeFile(file, data, encoding, callback);
        mkdir.mkdirs(dir, (err2) => {
          if (err2) return callback(err2);
          fs50.writeFile(file, data, encoding, callback);
        });
      });
    }
    function outputFileSync(file, ...args) {
      const dir = path45.dirname(file);
      if (fs50.existsSync(dir)) {
        return fs50.writeFileSync(file, ...args);
      }
      mkdir.mkdirsSync(dir);
      fs50.writeFileSync(file, ...args);
    }
    module2.exports = {
      outputFile: u3(outputFile),
      outputFileSync
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/json/output-json.js
var require_output_json = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/json/output-json.js"(exports2, module2) {
    "use strict";
    var { stringify: stringify4 } = require_utils9();
    var { outputFile } = require_output_file();
    async function outputJson(file, data, options = {}) {
      const str2 = stringify4(data, options);
      await outputFile(file, str2, options);
    }
    module2.exports = outputJson;
  }
});

// ../myst-cli/node_modules/fs-extra/lib/json/output-json-sync.js
var require_output_json_sync = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/json/output-json-sync.js"(exports2, module2) {
    "use strict";
    var { stringify: stringify4 } = require_utils9();
    var { outputFileSync } = require_output_file();
    function outputJsonSync(file, data, options) {
      const str2 = stringify4(data, options);
      outputFileSync(file, str2, options);
    }
    module2.exports = outputJsonSync;
  }
});

// ../myst-cli/node_modules/fs-extra/lib/json/index.js
var require_json3 = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/json/index.js"(exports2, module2) {
    "use strict";
    var u3 = require_universalify().fromPromise;
    var jsonFile = require_jsonfile2();
    jsonFile.outputJson = u3(require_output_json());
    jsonFile.outputJsonSync = require_output_json_sync();
    jsonFile.outputJSON = jsonFile.outputJson;
    jsonFile.outputJSONSync = jsonFile.outputJsonSync;
    jsonFile.writeJSON = jsonFile.writeJson;
    jsonFile.writeJSONSync = jsonFile.writeJsonSync;
    jsonFile.readJSON = jsonFile.readJson;
    jsonFile.readJSONSync = jsonFile.readJsonSync;
    module2.exports = jsonFile;
  }
});

// ../myst-cli/node_modules/fs-extra/lib/move/move.js
var require_move = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/move/move.js"(exports2, module2) {
    "use strict";
    var fs50 = require_graceful_fs();
    var path45 = require("path");
    var copy2 = require_copy2().copy;
    var remove3 = require_remove().remove;
    var mkdirp = require_mkdirs().mkdirp;
    var pathExists = require_path_exists().pathExists;
    var stat2 = require_stat();
    function move(src, dest, opts, cb) {
      if (typeof opts === "function") {
        cb = opts;
        opts = {};
      }
      opts = opts || {};
      const overwrite = opts.overwrite || opts.clobber || false;
      stat2.checkPaths(src, dest, "move", opts, (err, stats) => {
        if (err) return cb(err);
        const { srcStat, isChangingCase = false } = stats;
        stat2.checkParentPaths(src, srcStat, dest, "move", (err2) => {
          if (err2) return cb(err2);
          if (isParentRoot(dest)) return doRename(src, dest, overwrite, isChangingCase, cb);
          mkdirp(path45.dirname(dest), (err3) => {
            if (err3) return cb(err3);
            return doRename(src, dest, overwrite, isChangingCase, cb);
          });
        });
      });
    }
    function isParentRoot(dest) {
      const parent2 = path45.dirname(dest);
      const parsedPath = path45.parse(parent2);
      return parsedPath.root === parent2;
    }
    function doRename(src, dest, overwrite, isChangingCase, cb) {
      if (isChangingCase) return rename(src, dest, overwrite, cb);
      if (overwrite) {
        return remove3(dest, (err) => {
          if (err) return cb(err);
          return rename(src, dest, overwrite, cb);
        });
      }
      pathExists(dest, (err, destExists) => {
        if (err) return cb(err);
        if (destExists) return cb(new Error("dest already exists."));
        return rename(src, dest, overwrite, cb);
      });
    }
    function rename(src, dest, overwrite, cb) {
      fs50.rename(src, dest, (err) => {
        if (!err) return cb();
        if (err.code !== "EXDEV") return cb(err);
        return moveAcrossDevice(src, dest, overwrite, cb);
      });
    }
    function moveAcrossDevice(src, dest, overwrite, cb) {
      const opts = {
        overwrite,
        errorOnExist: true,
        preserveTimestamps: true
      };
      copy2(src, dest, opts, (err) => {
        if (err) return cb(err);
        return remove3(src, cb);
      });
    }
    module2.exports = move;
  }
});

// ../myst-cli/node_modules/fs-extra/lib/move/move-sync.js
var require_move_sync = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/move/move-sync.js"(exports2, module2) {
    "use strict";
    var fs50 = require_graceful_fs();
    var path45 = require("path");
    var copySync = require_copy2().copySync;
    var removeSync = require_remove().removeSync;
    var mkdirpSync = require_mkdirs().mkdirpSync;
    var stat2 = require_stat();
    function moveSync(src, dest, opts) {
      opts = opts || {};
      const overwrite = opts.overwrite || opts.clobber || false;
      const { srcStat, isChangingCase = false } = stat2.checkPathsSync(src, dest, "move", opts);
      stat2.checkParentPathsSync(src, srcStat, dest, "move");
      if (!isParentRoot(dest)) mkdirpSync(path45.dirname(dest));
      return doRename(src, dest, overwrite, isChangingCase);
    }
    function isParentRoot(dest) {
      const parent2 = path45.dirname(dest);
      const parsedPath = path45.parse(parent2);
      return parsedPath.root === parent2;
    }
    function doRename(src, dest, overwrite, isChangingCase) {
      if (isChangingCase) return rename(src, dest, overwrite);
      if (overwrite) {
        removeSync(dest);
        return rename(src, dest, overwrite);
      }
      if (fs50.existsSync(dest)) throw new Error("dest already exists.");
      return rename(src, dest, overwrite);
    }
    function rename(src, dest, overwrite) {
      try {
        fs50.renameSync(src, dest);
      } catch (err) {
        if (err.code !== "EXDEV") throw err;
        return moveAcrossDevice(src, dest, overwrite);
      }
    }
    function moveAcrossDevice(src, dest, overwrite) {
      const opts = {
        overwrite,
        errorOnExist: true,
        preserveTimestamps: true
      };
      copySync(src, dest, opts);
      return removeSync(src);
    }
    module2.exports = moveSync;
  }
});

// ../myst-cli/node_modules/fs-extra/lib/move/index.js
var require_move2 = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/move/index.js"(exports2, module2) {
    "use strict";
    var u3 = require_universalify().fromCallback;
    module2.exports = {
      move: u3(require_move()),
      moveSync: require_move_sync()
    };
  }
});

// ../myst-cli/node_modules/fs-extra/lib/index.js
var require_lib20 = __commonJS({
  "../myst-cli/node_modules/fs-extra/lib/index.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      // Export promiseified graceful-fs:
      ...require_fs(),
      // Export extra methods:
      ...require_copy2(),
      ...require_empty2(),
      ...require_ensure(),
      ...require_json3(),
      ...require_mkdirs(),
      ...require_move2(),
      ...require_output_file(),
      ...require_path_exists(),
      ...require_remove()
    };
  }
});

// ../../node_modules/object-assign/index.js
var require_object_assign2 = __commonJS({
  "../../node_modules/object-assign/index.js"(exports2, module2) {
    "use strict";
    var getOwnPropertySymbols = Object.getOwnPropertySymbols;
    var hasOwnProperty = Object.prototype.hasOwnProperty;
    var propIsEnumerable = Object.prototype.propertyIsEnumerable;
    function toObject(val) {
      if (val === null || val === void 0) {
        throw new TypeError("Object.assign cannot be called with null or undefined");
      }
      return Object(val);
    }
    function shouldUseNative() {
      try {
        if (!Object.assign) {
          return false;
        }
        var test1 = new String("abc");
        test1[5] = "de";
        if (Object.getOwnPropertyNames(test1)[0] === "5") {
          return false;
        }
        var test2 = {};
        for (var i2 = 0; i2 < 10; i2++) {
          test2["_" + String.fromCharCode(i2)] = i2;
        }
        var order22 = Object.getOwnPropertyNames(test2).map(function(n) {
          return test2[n];
        });
        if (order22.join("") !== "0123456789") {
          return false;
        }
        var test3 = {};
        "abcdefghijklmnopqrst".split("").forEach(function(letter) {
          test3[letter] = letter;
        });
        if (Object.keys(Object.assign({}, test3)).join("") !== "abcdefghijklmnopqrst") {
          return false;
        }
        return true;
      } catch (err) {
        return false;
      }
    }
    module2.exports = shouldUseNative() ? Object.assign : function(target, source2) {
      var from4;
      var to = toObject(target);
      var symbols4;
      for (var s5 = 1; s5 < arguments.length; s5++) {
        from4 = Object(arguments[s5]);
        for (var key2 in from4) {
          if (hasOwnProperty.call(from4, key2)) {
            to[key2] = from4[key2];
          }
        }
        if (getOwnPropertySymbols) {
          symbols4 = getOwnPropertySymbols(from4);
          for (var i2 = 0; i2 < symbols4.length; i2++) {
            if (propIsEnumerable.call(from4, symbols4[i2])) {
              to[symbols4[i2]] = from4[symbols4[i2]];
            }
          }
        }
      }
      return to;
    };
  }
});

// ../../node_modules/vary/index.js
var require_vary = __commonJS({
  "../../node_modules/vary/index.js"(exports2, module2) {
    "use strict";
    module2.exports = vary;
    module2.exports.append = append;
    var FIELD_NAME_REGEXP = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;
    function append(header, field) {
      if (typeof header !== "string") {
        throw new TypeError("header argument is required");
      }
      if (!field) {
        throw new TypeError("field argument is required");
      }
      var fields = !Array.isArray(field) ? parse16(String(field)) : field;
      for (var j = 0; j < fields.length; j++) {
        if (!FIELD_NAME_REGEXP.test(fields[j])) {
          throw new TypeError("field argument contains an invalid header name");
        }
      }
      if (header === "*") {
        return header;
      }
      var val = header;
      var vals = parse16(header.toLowerCase());
      if (fields.indexOf("*") !== -1 || vals.indexOf("*") !== -1) {
        return "*";
      }
      for (var i2 = 0; i2 < fields.length; i2++) {
        var fld = fields[i2].toLowerCase();
        if (vals.indexOf(fld) === -1) {
          vals.push(fld);
          val = val ? val + ", " + fields[i2] : fields[i2];
        }
      }
      return val;
    }
    function parse16(header) {
      var end = 0;
      var list6 = [];
      var start = 0;
      for (var i2 = 0, len = header.length; i2 < len; i2++) {
        switch (header.charCodeAt(i2)) {
          case 32:
            if (start === end) {
              start = end = i2 + 1;
            }
            break;
          case 44:
            list6.push(header.substring(start, end));
            start = end = i2 + 1;
            break;
          default:
            end = i2 + 1;
            break;
        }
      }
      list6.push(header.substring(start, end));
      return list6;
    }
    function vary(res, field) {
      if (!res || !res.getHeader || !res.setHeader) {
        throw new TypeError("res argument is required");
      }
      var val = res.getHeader("Vary") || "";
      var header = Array.isArray(val) ? val.join(", ") : String(val);
      if (val = append(header, field)) {
        res.setHeader("Vary", val);
      }
    }
  }
});

// ../../node_modules/cors/lib/index.js
var require_lib21 = __commonJS({
  "../../node_modules/cors/lib/index.js"(exports2, module2) {
    (function() {
      "use strict";
      var assign2 = require_object_assign2();
      var vary = require_vary();
      var defaults3 = {
        origin: "*",
        methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
        preflightContinue: false,
        optionsSuccessStatus: 204
      };
      function isString(s5) {
        return typeof s5 === "string" || s5 instanceof String;
      }
      function isOriginAllowed(origin, allowedOrigin) {
        if (Array.isArray(allowedOrigin)) {
          for (var i2 = 0; i2 < allowedOrigin.length; ++i2) {
            if (isOriginAllowed(origin, allowedOrigin[i2])) {
              return true;
            }
          }
          return false;
        } else if (isString(allowedOrigin)) {
          return origin === allowedOrigin;
        } else if (allowedOrigin instanceof RegExp) {
          return allowedOrigin.test(origin);
        } else {
          return !!allowedOrigin;
        }
      }
      function configureOrigin(options, req) {
        var requestOrigin = req.headers.origin, headers = [], isAllowed;
        if (!options.origin || options.origin === "*") {
          headers.push([{
            key: "Access-Control-Allow-Origin",
            value: "*"
          }]);
        } else if (isString(options.origin)) {
          headers.push([{
            key: "Access-Control-Allow-Origin",
            value: options.origin
          }]);
          headers.push([{
            key: "Vary",
            value: "Origin"
          }]);
        } else {
          isAllowed = isOriginAllowed(requestOrigin, options.origin);
          headers.push([{
            key: "Access-Control-Allow-Origin",
            value: isAllowed ? requestOrigin : false
          }]);
          headers.push([{
            key: "Vary",
            value: "Origin"
          }]);
        }
        return headers;
      }
      function configureMethods(options) {
        var methods = options.methods;
        if (methods.join) {
          methods = options.methods.join(",");
        }
        return {
          key: "Access-Control-Allow-Methods",
          value: methods
        };
      }
      function configureCredentials(options) {
        if (options.credentials === true) {
          return {
            key: "Access-Control-Allow-Credentials",
            value: "true"
          };
        }
        return null;
      }
      function configureAllowedHeaders(options, req) {
        var allowedHeaders = options.allowedHeaders || options.headers;
        var headers = [];
        if (!allowedHeaders) {
          allowedHeaders = req.headers["access-control-request-headers"];
          headers.push([{
            key: "Vary",
            value: "Access-Control-Request-Headers"
          }]);
        } else if (allowedHeaders.join) {
          allowedHeaders = allowedHeaders.join(",");
        }
        if (allowedHeaders && allowedHeaders.length) {
          headers.push([{
            key: "Access-Control-Allow-Headers",
            value: allowedHeaders
          }]);
        }
        return headers;
      }
      function configureExposedHeaders(options) {
        var headers = options.exposedHeaders;
        if (!headers) {
          return null;
        } else if (headers.join) {
          headers = headers.join(",");
        }
        if (headers && headers.length) {
          return {
            key: "Access-Control-Expose-Headers",
            value: headers
          };
        }
        return null;
      }
      function configureMaxAge(options) {
        var maxAge = (typeof options.maxAge === "number" || options.maxAge) && options.maxAge.toString();
        if (maxAge && maxAge.length) {
          return {
            key: "Access-Control-Max-Age",
            value: maxAge
          };
        }
        return null;
      }
      function applyHeaders(headers, res) {
        for (var i2 = 0, n = headers.length; i2 < n; i2++) {
          var header = headers[i2];
          if (header) {
            if (Array.isArray(header)) {
              applyHeaders(header, res);
            } else if (header.key === "Vary" && header.value) {
              vary(res, header.value);
            } else if (header.value) {
              res.setHeader(header.key, header.value);
            }
          }
        }
      }
      function cors2(options, req, res, next) {
        var headers = [], method = req.method && req.method.toUpperCase && req.method.toUpperCase();
        if (method === "OPTIONS") {
          headers.push(configureOrigin(options, req));
          headers.push(configureCredentials(options, req));
          headers.push(configureMethods(options, req));
          headers.push(configureAllowedHeaders(options, req));
          headers.push(configureMaxAge(options, req));
          headers.push(configureExposedHeaders(options, req));
          applyHeaders(headers, res);
          if (options.preflightContinue) {
            next();
          } else {
            res.statusCode = options.optionsSuccessStatus;
            res.setHeader("Content-Length", "0");
            res.end();
          }
        } else {
          headers.push(configureOrigin(options, req));
          headers.push(configureCredentials(options, req));
          headers.push(configureExposedHeaders(options, req));
          applyHeaders(headers, res);
          next();
        }
      }
      function middlewareWrapper(o) {
        var optionsCallback = null;
        if (typeof o === "function") {
          optionsCallback = o;
        } else {
          optionsCallback = function(req, cb) {
            cb(null, o);
          };
        }
        return function corsMiddleware(req, res, next) {
          optionsCallback(req, function(err, options) {
            if (err) {
              next(err);
            } else {
              var corsOptions = assign2({}, defaults3, options);
              var originCallback = null;
              if (corsOptions.origin && typeof corsOptions.origin === "function") {
                originCallback = corsOptions.origin;
              } else if (corsOptions.origin) {
                originCallback = function(origin, cb) {
                  cb(null, corsOptions.origin);
                };
              }
              if (originCallback) {
                originCallback(req.headers.origin, function(err2, origin) {
                  if (err2 || !origin) {
                    next(err2);
                  } else {
                    corsOptions.origin = origin;
                    cors2(corsOptions, req, res, next);
                  }
                });
              } else {
                next();
              }
            }
          });
        };
      }
      module2.exports = middlewareWrapper;
    })();
  }
});

// ../../node_modules/depd/index.js
var require_depd = __commonJS({
  "../../node_modules/depd/index.js"(exports2, module2) {
    var relative6 = require("path").relative;
    module2.exports = depd;
    var basePath = process.cwd();
    function containsNamespace(str2, namespace) {
      var vals = str2.split(/[ ,]+/);
      var ns = String(namespace).toLowerCase();
      for (var i2 = 0; i2 < vals.length; i2++) {
        var val = vals[i2];
        if (val && (val === "*" || val.toLowerCase() === ns)) {
          return true;
        }
      }
      return false;
    }
    function convertDataDescriptorToAccessor(obj, prop, message) {
      var descriptor = Object.getOwnPropertyDescriptor(obj, prop);
      var value = descriptor.value;
      descriptor.get = function getter() {
        return value;
      };
      if (descriptor.writable) {
        descriptor.set = function setter(val) {
          return value = val;
        };
      }
      delete descriptor.value;
      delete descriptor.writable;
      Object.defineProperty(obj, prop, descriptor);
      return descriptor;
    }
    function createArgumentsString(arity) {
      var str2 = "";
      for (var i2 = 0; i2 < arity; i2++) {
        str2 += ", arg" + i2;
      }
      return str2.substr(2);
    }
    function createStackString(stack) {
      var str2 = this.name + ": " + this.namespace;
      if (this.message) {
        str2 += " deprecated " + this.message;
      }
      for (var i2 = 0; i2 < stack.length; i2++) {
        str2 += "\n    at " + stack[i2].toString();
      }
      return str2;
    }
    function depd(namespace) {
      if (!namespace) {
        throw new TypeError("argument namespace is required");
      }
      var stack = getStack();
      var site = callSiteLocation(stack[1]);
      var file = site[0];
      function deprecate3(message) {
        log.call(deprecate3, message);
      }
      deprecate3._file = file;
      deprecate3._ignored = isignored(namespace);
      deprecate3._namespace = namespace;
      deprecate3._traced = istraced(namespace);
      deprecate3._warned = /* @__PURE__ */ Object.create(null);
      deprecate3.function = wrapfunction;
      deprecate3.property = wrapproperty;
      return deprecate3;
    }
    function eehaslisteners(emitter, type2) {
      var count2 = typeof emitter.listenerCount !== "function" ? emitter.listeners(type2).length : emitter.listenerCount(type2);
      return count2 > 0;
    }
    function isignored(namespace) {
      if (process.noDeprecation) {
        return true;
      }
      var str2 = process.env.NO_DEPRECATION || "";
      return containsNamespace(str2, namespace);
    }
    function istraced(namespace) {
      if (process.traceDeprecation) {
        return true;
      }
      var str2 = process.env.TRACE_DEPRECATION || "";
      return containsNamespace(str2, namespace);
    }
    function log(message, site) {
      var haslisteners = eehaslisteners(process, "deprecation");
      if (!haslisteners && this._ignored) {
        return;
      }
      var caller;
      var callFile;
      var callSite;
      var depSite;
      var i2 = 0;
      var seen = false;
      var stack = getStack();
      var file = this._file;
      if (site) {
        depSite = site;
        callSite = callSiteLocation(stack[1]);
        callSite.name = depSite.name;
        file = callSite[0];
      } else {
        i2 = 2;
        depSite = callSiteLocation(stack[i2]);
        callSite = depSite;
      }
      for (; i2 < stack.length; i2++) {
        caller = callSiteLocation(stack[i2]);
        callFile = caller[0];
        if (callFile === file) {
          seen = true;
        } else if (callFile === this._file) {
          file = this._file;
        } else if (seen) {
          break;
        }
      }
      var key2 = caller ? depSite.join(":") + "__" + caller.join(":") : void 0;
      if (key2 !== void 0 && key2 in this._warned) {
        return;
      }
      this._warned[key2] = true;
      var msg = message;
      if (!msg) {
        msg = callSite === depSite || !callSite.name ? defaultMessage(depSite) : defaultMessage(callSite);
      }
      if (haslisteners) {
        var err = DeprecationError(this._namespace, msg, stack.slice(i2));
        process.emit("deprecation", err);
        return;
      }
      var format = process.stderr.isTTY ? formatColor : formatPlain;
      var output2 = format.call(this, msg, caller, stack.slice(i2));
      process.stderr.write(output2 + "\n", "utf8");
    }
    function callSiteLocation(callSite) {
      var file = callSite.getFileName() || "<anonymous>";
      var line2 = callSite.getLineNumber();
      var colm = callSite.getColumnNumber();
      if (callSite.isEval()) {
        file = callSite.getEvalOrigin() + ", " + file;
      }
      var site = [file, line2, colm];
      site.callSite = callSite;
      site.name = callSite.getFunctionName();
      return site;
    }
    function defaultMessage(site) {
      var callSite = site.callSite;
      var funcName = site.name;
      if (!funcName) {
        funcName = "<anonymous@" + formatLocation(site) + ">";
      }
      var context = callSite.getThis();
      var typeName = context && callSite.getTypeName();
      if (typeName === "Object") {
        typeName = void 0;
      }
      if (typeName === "Function") {
        typeName = context.name || typeName;
      }
      return typeName && callSite.getMethodName() ? typeName + "." + funcName : funcName;
    }
    function formatPlain(msg, caller, stack) {
      var timestamp2 = (/* @__PURE__ */ new Date()).toUTCString();
      var formatted = timestamp2 + " " + this._namespace + " deprecated " + msg;
      if (this._traced) {
        for (var i2 = 0; i2 < stack.length; i2++) {
          formatted += "\n    at " + stack[i2].toString();
        }
        return formatted;
      }
      if (caller) {
        formatted += " at " + formatLocation(caller);
      }
      return formatted;
    }
    function formatColor(msg, caller, stack) {
      var formatted = "\x1B[36;1m" + this._namespace + "\x1B[22;39m \x1B[33;1mdeprecated\x1B[22;39m \x1B[0m" + msg + "\x1B[39m";
      if (this._traced) {
        for (var i2 = 0; i2 < stack.length; i2++) {
          formatted += "\n    \x1B[36mat " + stack[i2].toString() + "\x1B[39m";
        }
        return formatted;
      }
      if (caller) {
        formatted += " \x1B[36m" + formatLocation(caller) + "\x1B[39m";
      }
      return formatted;
    }
    function formatLocation(callSite) {
      return relative6(basePath, callSite[0]) + ":" + callSite[1] + ":" + callSite[2];
    }
    function getStack() {
      var limit = Error.stackTraceLimit;
      var obj = {};
      var prep = Error.prepareStackTrace;
      Error.prepareStackTrace = prepareObjectStackTrace;
      Error.stackTraceLimit = Math.max(10, limit);
      Error.captureStackTrace(obj);
      var stack = obj.stack.slice(1);
      Error.prepareStackTrace = prep;
      Error.stackTraceLimit = limit;
      return stack;
    }
    function prepareObjectStackTrace(obj, stack) {
      return stack;
    }
    function wrapfunction(fn, message) {
      if (typeof fn !== "function") {
        throw new TypeError("argument fn must be a function");
      }
      var args = createArgumentsString(fn.length);
      var stack = getStack();
      var site = callSiteLocation(stack[1]);
      site.name = fn.name;
      var deprecatedfn = new Function(
        "fn",
        "log",
        "deprecate",
        "message",
        "site",
        '"use strict"\nreturn function (' + args + ") {log.call(deprecate, message, site)\nreturn fn.apply(this, arguments)\n}"
      )(fn, log, this, message, site);
      return deprecatedfn;
    }
    function wrapproperty(obj, prop, message) {
      if (!obj || typeof obj !== "object" && typeof obj !== "function") {
        throw new TypeError("argument obj must be object");
      }
      var descriptor = Object.getOwnPropertyDescriptor(obj, prop);
      if (!descriptor) {
        throw new TypeError("must call property on owner object");
      }
      if (!descriptor.configurable) {
        throw new TypeError("property must be configurable");
      }
      var deprecate3 = this;
      var stack = getStack();
      var site = callSiteLocation(stack[1]);
      site.name = prop;
      if ("value" in descriptor) {
        descriptor = convertDataDescriptorToAccessor(obj, prop, message);
      }
      var get = descriptor.get;
      var set3 = descriptor.set;
      if (typeof get === "function") {
        descriptor.get = function getter() {
          log.call(deprecate3, message, site);
          return get.apply(this, arguments);
        };
      }
      if (typeof set3 === "function") {
        descriptor.set = function setter() {
          log.call(deprecate3, message, site);
          return set3.apply(this, arguments);
        };
      }
      Object.defineProperty(obj, prop, descriptor);
    }
    function DeprecationError(namespace, message, stack) {
      var error = new Error();
      var stackString;
      Object.defineProperty(error, "constructor", {
        value: DeprecationError
      });
      Object.defineProperty(error, "message", {
        configurable: true,
        enumerable: false,
        value: message,
        writable: true
      });
      Object.defineProperty(error, "name", {
        enumerable: false,
        configurable: true,
        value: "DeprecationError",
        writable: true
      });
      Object.defineProperty(error, "namespace", {
        configurable: true,
        enumerable: false,
        value: namespace,
        writable: true
      });
      Object.defineProperty(error, "stack", {
        configurable: true,
        enumerable: false,
        get: function() {
          if (stackString !== void 0) {
            return stackString;
          }
          return stackString = createStackString.call(this, stack);
        },
        set: function setter(val) {
          stackString = val;
        }
      });
      return error;
    }
  }
});

// ../../node_modules/bytes/index.js
var require_bytes = __commonJS({
  "../../node_modules/bytes/index.js"(exports2, module2) {
    "use strict";
    module2.exports = bytes;
    module2.exports.format = format;
    module2.exports.parse = parse16;
    var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g;
    var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/;
    var map13 = {
      b: 1,
      kb: 1 << 10,
      mb: 1 << 20,
      gb: 1 << 30,
      tb: Math.pow(1024, 4),
      pb: Math.pow(1024, 5)
    };
    var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;
    function bytes(value, options) {
      if (typeof value === "string") {
        return parse16(value);
      }
      if (typeof value === "number") {
        return format(value, options);
      }
      return null;
    }
    function format(value, options) {
      if (!Number.isFinite(value)) {
        return null;
      }
      var mag = Math.abs(value);
      var thousandsSeparator = options && options.thousandsSeparator || "";
      var unitSeparator = options && options.unitSeparator || "";
      var decimalPlaces = options && options.decimalPlaces !== void 0 ? options.decimalPlaces : 2;
      var fixedDecimals = Boolean(options && options.fixedDecimals);
      var unit = options && options.unit || "";
      if (!unit || !map13[unit.toLowerCase()]) {
        if (mag >= map13.pb) {
          unit = "PB";
        } else if (mag >= map13.tb) {
          unit = "TB";
        } else if (mag >= map13.gb) {
          unit = "GB";
        } else if (mag >= map13.mb) {
          unit = "MB";
        } else if (mag >= map13.kb) {
          unit = "KB";
        } else {
          unit = "B";
        }
      }
      var val = value / map13[unit.toLowerCase()];
      var str2 = val.toFixed(decimalPlaces);
      if (!fixedDecimals) {
        str2 = str2.replace(formatDecimalsRegExp, "$1");
      }
      if (thousandsSeparator) {
        str2 = str2.split(".").map(function(s5, i2) {
          return i2 === 0 ? s5.replace(formatThousandsRegExp, thousandsSeparator) : s5;
        }).join(".");
      }
      return str2 + unitSeparator + unit;
    }
    function parse16(val) {
      if (typeof val === "number" && !isNaN(val)) {
        return val;
      }
      if (typeof val !== "string") {
        return null;
      }
      var results = parseRegExp.exec(val);
      var floatValue;
      var unit = "b";
      if (!results) {
        floatValue = parseInt(val, 10);
        unit = "b";
      } else {
        floatValue = parseFloat(results[1]);
        unit = results[4].toLowerCase();
      }
      if (isNaN(floatValue)) {
        return null;
      }
      return Math.floor(map13[unit] * floatValue);
    }
  }
});

// ../../node_modules/content-type/index.js
var require_content_type = __commonJS({
  "../../node_modules/content-type/index.js"(exports2) {
    "use strict";
    var PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g;
    var TEXT_REGEXP = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/;
    var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;
    var QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g;
    var QUOTE_REGEXP = /([\\"])/g;
    var TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;
    exports2.format = format;
    exports2.parse = parse16;
    function format(obj) {
      if (!obj || typeof obj !== "object") {
        throw new TypeError("argument obj is required");
      }
      var parameters = obj.parameters;
      var type2 = obj.type;
      if (!type2 || !TYPE_REGEXP.test(type2)) {
        throw new TypeError("invalid type");
      }
      var string2 = type2;
      if (parameters && typeof parameters === "object") {
        var param;
        var params = Object.keys(parameters).sort();
        for (var i2 = 0; i2 < params.length; i2++) {
          param = params[i2];
          if (!TOKEN_REGEXP.test(param)) {
            throw new TypeError("invalid parameter name");
          }
          string2 += "; " + param + "=" + qstring(parameters[param]);
        }
      }
      return string2;
    }
    function parse16(string2) {
      if (!string2) {
        throw new TypeError("argument string is required");
      }
      var header = typeof string2 === "object" ? getcontenttype(string2) : string2;
      if (typeof header !== "string") {
        throw new TypeError("argument string is required to be a string");
      }
      var index4 = header.indexOf(";");
      var type2 = index4 !== -1 ? header.slice(0, index4).trim() : header.trim();
      if (!TYPE_REGEXP.test(type2)) {
        throw new TypeError("invalid media type");
      }
      var obj = new ContentType(type2.toLowerCase());
      if (index4 !== -1) {
        var key2;
        var match3;
        var value;
        PARAM_REGEXP.lastIndex = index4;
        while (match3 = PARAM_REGEXP.exec(header)) {
          if (match3.index !== index4) {
            throw new TypeError("invalid parameter format");
          }
          index4 += match3[0].length;
          key2 = match3[1].toLowerCase();
          value = match3[2];
          if (value.charCodeAt(0) === 34) {
            value = value.slice(1, -1);
            if (value.indexOf("\\") !== -1) {
              value = value.replace(QESC_REGEXP, "$1");
            }
          }
          obj.parameters[key2] = value;
        }
        if (index4 !== header.length) {
          throw new TypeError("invalid parameter format");
        }
      }
      return obj;
    }
    function getcontenttype(obj) {
      var header;
      if (typeof obj.getHeader === "function") {
        header = obj.getHeader("content-type");
      } else if (typeof obj.headers === "object") {
        header = obj.headers && obj.headers["content-type"];
      }
      if (typeof header !== "string") {
        throw new TypeError("content-type header is missing from object");
      }
      return header;
    }
    function qstring(val) {
      var str2 = String(val);
      if (TOKEN_REGEXP.test(str2)) {
        return str2;
      }
      if (str2.length > 0 && !TEXT_REGEXP.test(str2)) {
        throw new TypeError("invalid parameter value");
      }
      return '"' + str2.replace(QUOTE_REGEXP, "\\$1") + '"';
    }
    function ContentType(type2) {
      this.parameters = /* @__PURE__ */ Object.create(null);
      this.type = type2;
    }
  }
});

// ../../node_modules/setprototypeof/index.js
var require_setprototypeof = __commonJS({
  "../../node_modules/setprototypeof/index.js"(exports2, module2) {
    "use strict";
    module2.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties);
    function setProtoOf(obj, proto9) {
      obj.__proto__ = proto9;
      return obj;
    }
    function mixinProperties(obj, proto9) {
      for (var prop in proto9) {
        if (!Object.prototype.hasOwnProperty.call(obj, prop)) {
          obj[prop] = proto9[prop];
        }
      }
      return obj;
    }
  }
});

// ../../node_modules/statuses/codes.json
var require_codes = __commonJS({
  "../../node_modules/statuses/codes.json"(exports2, module2) {
    module2.exports = {
      "100": "Continue",
      "101": "Switching Protocols",
      "102": "Processing",
      "103": "Early Hints",
      "200": "OK",
      "201": "Created",
      "202": "Accepted",
      "203": "Non-Authoritative Information",
      "204": "No Content",
      "205": "Reset Content",
      "206": "Partial Content",
      "207": "Multi-Status",
      "208": "Already Reported",
      "226": "IM Used",
      "300": "Multiple Choices",
      "301": "Moved Permanently",
      "302": "Found",
      "303": "See Other",
      "304": "Not Modified",
      "305": "Use Proxy",
      "307": "Temporary Redirect",
      "308": "Permanent Redirect",
      "400": "Bad Request",
      "401": "Unauthorized",
      "402": "Payment Required",
      "403": "Forbidden",
      "404": "Not Found",
      "405": "Method Not Allowed",
      "406": "Not Acceptable",
      "407": "Proxy Authentication Required",
      "408": "Request Timeout",
      "409": "Conflict",
      "410": "Gone",
      "411": "Length Required",
      "412": "Precondition Failed",
      "413": "Payload Too Large",
      "414": "URI Too Long",
      "415": "Unsupported Media Type",
      "416": "Range Not Satisfiable",
      "417": "Expectation Failed",
      "418": "I'm a Teapot",
      "421": "Misdirected Request",
      "422": "Unprocessable Entity",
      "423": "Locked",
      "424": "Failed Dependency",
      "425": "Too Early",
      "426": "Upgrade Required",
      "428": "Precondition Required",
      "429": "Too Many Requests",
      "431": "Request Header Fields Too Large",
      "451": "Unavailable For Legal Reasons",
      "500": "Internal Server Error",
      "501": "Not Implemented",
      "502": "Bad Gateway",
      "503": "Service Unavailable",
      "504": "Gateway Timeout",
      "505": "HTTP Version Not Supported",
      "506": "Variant Also Negotiates",
      "507": "Insufficient Storage",
      "508": "Loop Detected",
      "509": "Bandwidth Limit Exceeded",
      "510": "Not Extended",
      "511": "Network Authentication Required"
    };
  }
});

// ../../node_modules/statuses/index.js
var require_statuses = __commonJS({
  "../../node_modules/statuses/index.js"(exports2, module2) {
    "use strict";
    var codes = require_codes();
    module2.exports = status;
    status.message = codes;
    status.code = createMessageToStatusCodeMap(codes);
    status.codes = createStatusCodeList(codes);
    status.redirect = {
      300: true,
      301: true,
      302: true,
      303: true,
      305: true,
      307: true,
      308: true
    };
    status.empty = {
      204: true,
      205: true,
      304: true
    };
    status.retry = {
      502: true,
      503: true,
      504: true
    };
    function createMessageToStatusCodeMap(codes2) {
      var map13 = {};
      Object.keys(codes2).forEach(function forEachCode(code7) {
        var message = codes2[code7];
        var status2 = Number(code7);
        map13[message.toLowerCase()] = status2;
      });
      return map13;
    }
    function createStatusCodeList(codes2) {
      return Object.keys(codes2).map(function mapCode(code7) {
        return Number(code7);
      });
    }
    function getStatusCode(message) {
      var msg = message.toLowerCase();
      if (!Object.prototype.hasOwnProperty.call(status.code, msg)) {
        throw new Error('invalid status message: "' + message + '"');
      }
      return status.code[msg];
    }
    function getStatusMessage(code7) {
      if (!Object.prototype.hasOwnProperty.call(status.message, code7)) {
        throw new Error("invalid status code: " + code7);
      }
      return status.message[code7];
    }
    function status(code7) {
      if (typeof code7 === "number") {
        return getStatusMessage(code7);
      }
      if (typeof code7 !== "string") {
        throw new TypeError("code must be a number or string");
      }
      var n = parseInt(code7, 10);
      if (!isNaN(n)) {
        return getStatusMessage(n);
      }
      return getStatusCode(code7);
    }
  }
});

// ../../node_modules/inherits/inherits_browser.js
var require_inherits_browser = __commonJS({
  "../../node_modules/inherits/inherits_browser.js"(exports2, module2) {
    if (typeof Object.create === "function") {
      module2.exports = function inherits(ctor, superCtor) {
        if (superCtor) {
          ctor.super_ = superCtor;
          ctor.prototype = Object.create(superCtor.prototype, {
            constructor: {
              value: ctor,
              enumerable: false,
              writable: true,
              configurable: true
            }
          });
        }
      };
    } else {
      module2.exports = function inherits(ctor, superCtor) {
        if (superCtor) {
          ctor.super_ = superCtor;
          var TempCtor = function() {
          };
          TempCtor.prototype = superCtor.prototype;
          ctor.prototype = new TempCtor();
          ctor.prototype.constructor = ctor;
        }
      };
    }
  }
});

// ../../node_modules/inherits/inherits.js
var require_inherits = __commonJS({
  "../../node_modules/inherits/inherits.js"(exports2, module2) {
    try {
      util4 = require("util");
      if (typeof util4.inherits !== "function") throw "";
      module2.exports = util4.inherits;
    } catch (e2) {
      module2.exports = require_inherits_browser();
    }
    var util4;
  }
});

// ../../node_modules/toidentifier/index.js
var require_toidentifier = __commonJS({
  "../../node_modules/toidentifier/index.js"(exports2, module2) {
    "use strict";
    module2.exports = toIdentifier;
    function toIdentifier(str2) {
      return str2.split(" ").map(function(token) {
        return token.slice(0, 1).toUpperCase() + token.slice(1);
      }).join("").replace(/[^ _0-9a-z]/gi, "");
    }
  }
});

// ../../node_modules/http-errors/index.js
var require_http_errors = __commonJS({
  "../../node_modules/http-errors/index.js"(exports2, module2) {
    "use strict";
    var deprecate3 = require_depd()("http-errors");
    var setPrototypeOf = require_setprototypeof();
    var statuses = require_statuses();
    var inherits = require_inherits();
    var toIdentifier = require_toidentifier();
    module2.exports = createError;
    module2.exports.HttpError = createHttpErrorConstructor();
    module2.exports.isHttpError = createIsHttpErrorFunction(module2.exports.HttpError);
    populateConstructorExports(module2.exports, statuses.codes, module2.exports.HttpError);
    function codeClass(status) {
      return Number(String(status).charAt(0) + "00");
    }
    function createError() {
      var err;
      var msg;
      var status = 500;
      var props = {};
      for (var i2 = 0; i2 < arguments.length; i2++) {
        var arg2 = arguments[i2];
        var type2 = typeof arg2;
        if (type2 === "object" && arg2 instanceof Error) {
          err = arg2;
          status = err.status || err.statusCode || status;
        } else if (type2 === "number" && i2 === 0) {
          status = arg2;
        } else if (type2 === "string") {
          msg = arg2;
        } else if (type2 === "object") {
          props = arg2;
        } else {
          throw new TypeError("argument #" + (i2 + 1) + " unsupported type " + type2);
        }
      }
      if (typeof status === "number" && (status < 400 || status >= 600)) {
        deprecate3("non-error status code; use only 4xx or 5xx status codes");
      }
      if (typeof status !== "number" || !statuses.message[status] && (status < 400 || status >= 600)) {
        status = 500;
      }
      var HttpError = createError[status] || createError[codeClass(status)];
      if (!err) {
        err = HttpError ? new HttpError(msg) : new Error(msg || statuses.message[status]);
        Error.captureStackTrace(err, createError);
      }
      if (!HttpError || !(err instanceof HttpError) || err.status !== status) {
        err.expose = status < 500;
        err.status = err.statusCode = status;
      }
      for (var key2 in props) {
        if (key2 !== "status" && key2 !== "statusCode") {
          err[key2] = props[key2];
        }
      }
      return err;
    }
    function createHttpErrorConstructor() {
      function HttpError() {
        throw new TypeError("cannot construct abstract class");
      }
      inherits(HttpError, Error);
      return HttpError;
    }
    function createClientErrorConstructor(HttpError, name3, code7) {
      var className = toClassName(name3);
      function ClientError(message) {
        var msg = message != null ? message : statuses.message[code7];
        var err = new Error(msg);
        Error.captureStackTrace(err, ClientError);
        setPrototypeOf(err, ClientError.prototype);
        Object.defineProperty(err, "message", {
          enumerable: true,
          configurable: true,
          value: msg,
          writable: true
        });
        Object.defineProperty(err, "name", {
          enumerable: false,
          configurable: true,
          value: className,
          writable: true
        });
        return err;
      }
      inherits(ClientError, HttpError);
      nameFunc(ClientError, className);
      ClientError.prototype.status = code7;
      ClientError.prototype.statusCode = code7;
      ClientError.prototype.expose = true;
      return ClientError;
    }
    function createIsHttpErrorFunction(HttpError) {
      return function isHttpError(val) {
        if (!val || typeof val !== "object") {
          return false;
        }
        if (val instanceof HttpError) {
          return true;
        }
        return val instanceof Error && typeof val.expose === "boolean" && typeof val.statusCode === "number" && val.status === val.statusCode;
      };
    }
    function createServerErrorConstructor(HttpError, name3, code7) {
      var className = toClassName(name3);
      function ServerError(message) {
        var msg = message != null ? message : statuses.message[code7];
        var err = new Error(msg);
        Error.captureStackTrace(err, ServerError);
        setPrototypeOf(err, ServerError.prototype);
        Object.defineProperty(err, "message", {
          enumerable: true,
          configurable: true,
          value: msg,
          writable: true
        });
        Object.defineProperty(err, "name", {
          enumerable: false,
          configurable: true,
          value: className,
          writable: true
        });
        return err;
      }
      inherits(ServerError, HttpError);
      nameFunc(ServerError, className);
      ServerError.prototype.status = code7;
      ServerError.prototype.statusCode = code7;
      ServerError.prototype.expose = false;
      return ServerError;
    }
    function nameFunc(func, name3) {
      var desc = Object.getOwnPropertyDescriptor(func, "name");
      if (desc && desc.configurable) {
        desc.value = name3;
        Object.defineProperty(func, "name", desc);
      }
    }
    function populateConstructorExports(exports3, codes, HttpError) {
      codes.forEach(function forEachCode(code7) {
        var CodeError;
        var name3 = toIdentifier(statuses.message[code7]);
        switch (codeClass(code7)) {
          case 400:
            CodeError = createClientErrorConstructor(HttpError, name3, code7);
            break;
          case 500:
            CodeError = createServerErrorConstructor(HttpError, name3, code7);
            break;
        }
        if (CodeError) {
          exports3[code7] = CodeError;
          exports3[name3] = CodeError;
        }
      });
    }
    function toClassName(name3) {
      return name3.substr(-5) !== "Error" ? name3 + "Error" : name3;
    }
  }
});

// ../../node_modules/body-parser/node_modules/ms/index.js
var require_ms = __commonJS({
  "../../node_modules/body-parser/node_modules/ms/index.js"(exports2, module2) {
    var s5 = 1e3;
    var m2 = s5 * 60;
    var h4 = m2 * 60;
    var d = h4 * 24;
    var y = d * 365.25;
    module2.exports = function(val, options) {
      options = options || {};
      var type2 = typeof val;
      if (type2 === "string" && val.length > 0) {
        return parse16(val);
      } else if (type2 === "number" && isNaN(val) === false) {
        return options.long ? fmtLong(val) : fmtShort(val);
      }
      throw new Error(
        "val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
      );
    };
    function parse16(str2) {
      str2 = String(str2);
      if (str2.length > 100) {
        return;
      }
      var match3 = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(
        str2
      );
      if (!match3) {
        return;
      }
      var n = parseFloat(match3[1]);
      var type2 = (match3[2] || "ms").toLowerCase();
      switch (type2) {
        case "years":
        case "year":
        case "yrs":
        case "yr":
        case "y":
          return n * y;
        case "days":
        case "day":
        case "d":
          return n * d;
        case "hours":
        case "hour":
        case "hrs":
        case "hr":
        case "h":
          return n * h4;
        case "minutes":
        case "minute":
        case "mins":
        case "min":
        case "m":
          return n * m2;
        case "seconds":
        case "second":
        case "secs":
        case "sec":
        case "s":
          return n * s5;
        case "milliseconds":
        case "millisecond":
        case "msecs":
        case "msec":
        case "ms":
          return n;
        default:
          return void 0;
      }
    }
    function fmtShort(ms) {
      if (ms >= d) {
        return Math.round(ms / d) + "d";
      }
      if (ms >= h4) {
        return Math.round(ms / h4) + "h";
      }
      if (ms >= m2) {
        return Math.round(ms / m2) + "m";
      }
      if (ms >= s5) {
        return Math.round(ms / s5) + "s";
      }
      return ms + "ms";
    }
    function fmtLong(ms) {
      return plural2(ms, d, "day") || plural2(ms, h4, "hour") || plural2(ms, m2, "minute") || plural2(ms, s5, "second") || ms + " ms";
    }
    function plural2(ms, n, name3) {
      if (ms < n) {
        return;
      }
      if (ms < n * 1.5) {
        return Math.floor(ms / n) + " " + name3;
      }
      return Math.ceil(ms / n) + " " + name3 + "s";
    }
  }
});

// ../../node_modules/body-parser/node_modules/debug/src/debug.js
var require_debug = __commonJS({
  "../../node_modules/body-parser/node_modules/debug/src/debug.js"(exports2, module2) {
    exports2 = module2.exports = createDebug.debug = createDebug["default"] = createDebug;
    exports2.coerce = coerce2;
    exports2.disable = disable;
    exports2.enable = enable;
    exports2.enabled = enabled;
    exports2.humanize = require_ms();
    exports2.names = [];
    exports2.skips = [];
    exports2.formatters = {};
    var prevTime;
    function selectColor(namespace) {
      var hash = 0, i2;
      for (i2 in namespace) {
        hash = (hash << 5) - hash + namespace.charCodeAt(i2);
        hash |= 0;
      }
      return exports2.colors[Math.abs(hash) % exports2.colors.length];
    }
    function createDebug(namespace) {
      function debug() {
        if (!debug.enabled) return;
        var self2 = debug;
        var curr = +/* @__PURE__ */ new Date();
        var ms = curr - (prevTime || curr);
        self2.diff = ms;
        self2.prev = prevTime;
        self2.curr = curr;
        prevTime = curr;
        var args = new Array(arguments.length);
        for (var i2 = 0; i2 < args.length; i2++) {
          args[i2] = arguments[i2];
        }
        args[0] = exports2.coerce(args[0]);
        if ("string" !== typeof args[0]) {
          args.unshift("%O");
        }
        var index4 = 0;
        args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match3, format) {
          if (match3 === "%%") return match3;
          index4++;
          var formatter = exports2.formatters[format];
          if ("function" === typeof formatter) {
            var val = args[index4];
            match3 = formatter.call(self2, val);
            args.splice(index4, 1);
            index4--;
          }
          return match3;
        });
        exports2.formatArgs.call(self2, args);
        var logFn = debug.log || exports2.log || console.log.bind(console);
        logFn.apply(self2, args);
      }
      debug.namespace = namespace;
      debug.enabled = exports2.enabled(namespace);
      debug.useColors = exports2.useColors();
      debug.color = selectColor(namespace);
      if ("function" === typeof exports2.init) {
        exports2.init(debug);
      }
      return debug;
    }
    function enable(namespaces) {
      exports2.save(namespaces);
      exports2.names = [];
      exports2.skips = [];
      var split2 = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/);
      var len = split2.length;
      for (var i2 = 0; i2 < len; i2++) {
        if (!split2[i2]) continue;
        namespaces = split2[i2].replace(/\*/g, ".*?");
        if (namespaces[0] === "-") {
          exports2.skips.push(new RegExp("^" + namespaces.substr(1) + "$"));
        } else {
          exports2.names.push(new RegExp("^" + namespaces + "$"));
        }
      }
    }
    function disable() {
      exports2.enable("");
    }
    function enabled(name3) {
      var i2, len;
      for (i2 = 0, len = exports2.skips.length; i2 < len; i2++) {
        if (exports2.skips[i2].test(name3)) {
          return false;
        }
      }
      for (i2 = 0, len = exports2.names.length; i2 < len; i2++) {
        if (exports2.names[i2].test(name3)) {
          return true;
        }
      }
      return false;
    }
    function coerce2(val) {
      if (val instanceof Error) return val.stack || val.message;
      return val;
    }
  }
});

// ../../node_modules/body-parser/node_modules/debug/src/browser.js
var require_browser = __commonJS({
  "../../node_modules/body-parser/node_modules/debug/src/browser.js"(exports2, module2) {
    exports2 = module2.exports = require_debug();
    exports2.log = log;
    exports2.formatArgs = formatArgs;
    exports2.save = save;
    exports2.load = load2;
    exports2.useColors = useColors;
    exports2.storage = "undefined" != typeof chrome && "undefined" != typeof chrome.storage ? chrome.storage.local : localstorage();
    exports2.colors = [
      "lightseagreen",
      "forestgreen",
      "goldenrod",
      "dodgerblue",
      "darkorchid",
      "crimson"
    ];
    function useColors() {
      if (typeof window !== "undefined" && window.process && window.process.type === "renderer") {
        return true;
      }
      return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // is firebug? http://stackoverflow.com/a/398120/376773
      typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // is firefox >= v31?
      // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
      typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // double check webkit in userAgent just in case we are in a worker
      typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
    }
    exports2.formatters.j = function(v) {
      try {
        return JSON.stringify(v);
      } catch (err) {
        return "[UnexpectedJSONParseError]: " + err.message;
      }
    };
    function formatArgs(args) {
      var useColors2 = this.useColors;
      args[0] = (useColors2 ? "%c" : "") + this.namespace + (useColors2 ? " %c" : " ") + args[0] + (useColors2 ? "%c " : " ") + "+" + exports2.humanize(this.diff);
      if (!useColors2) return;
      var c = "color: " + this.color;
      args.splice(1, 0, c, "color: inherit");
      var index4 = 0;
      var lastC = 0;
      args[0].replace(/%[a-zA-Z%]/g, function(match3) {
        if ("%%" === match3) return;
        index4++;
        if ("%c" === match3) {
          lastC = index4;
        }
      });
      args.splice(lastC, 0, c);
    }
    function log() {
      return "object" === typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments);
    }
    function save(namespaces) {
      try {
        if (null == namespaces) {
          exports2.storage.removeItem("debug");
        } else {
          exports2.storage.debug = namespaces;
        }
      } catch (e2) {
      }
    }
    function load2() {
      var r2;
      try {
        r2 = exports2.storage.debug;
      } catch (e2) {
      }
      if (!r2 && typeof process !== "undefined" && "env" in process) {
        r2 = process.env.DEBUG;
      }
      return r2;
    }
    exports2.enable(load2());
    function localstorage() {
      try {
        return window.localStorage;
      } catch (e2) {
      }
    }
  }
});

// ../../node_modules/body-parser/node_modules/debug/src/node.js
var require_node3 = __commonJS({
  "../../node_modules/body-parser/node_modules/debug/src/node.js"(exports2, module2) {
    var tty6 = require("tty");
    var util4 = require("util");
    exports2 = module2.exports = require_debug();
    exports2.init = init4;
    exports2.log = log;
    exports2.formatArgs = formatArgs;
    exports2.save = save;
    exports2.load = load2;
    exports2.useColors = useColors;
    exports2.colors = [6, 2, 3, 4, 5, 1];
    exports2.inspectOpts = Object.keys(process.env).filter(function(key2) {
      return /^debug_/i.test(key2);
    }).reduce(function(obj, key2) {
      var prop = key2.substring(6).toLowerCase().replace(/_([a-z])/g, function(_2, k) {
        return k.toUpperCase();
      });
      var val = process.env[key2];
      if (/^(yes|on|true|enabled)$/i.test(val)) val = true;
      else if (/^(no|off|false|disabled)$/i.test(val)) val = false;
      else if (val === "null") val = null;
      else val = Number(val);
      obj[prop] = val;
      return obj;
    }, {});
    var fd = parseInt(process.env.DEBUG_FD, 10) || 2;
    if (1 !== fd && 2 !== fd) {
      util4.deprecate(function() {
      }, "except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();
    }
    var stream3 = 1 === fd ? process.stdout : 2 === fd ? process.stderr : createWritableStdioStream(fd);
    function useColors() {
      return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty6.isatty(fd);
    }
    exports2.formatters.o = function(v) {
      this.inspectOpts.colors = this.useColors;
      return util4.inspect(v, this.inspectOpts).split("\n").map(function(str2) {
        return str2.trim();
      }).join(" ");
    };
    exports2.formatters.O = function(v) {
      this.inspectOpts.colors = this.useColors;
      return util4.inspect(v, this.inspectOpts);
    };
    function formatArgs(args) {
      var name3 = this.namespace;
      var useColors2 = this.useColors;
      if (useColors2) {
        var c = this.color;
        var prefix2 = "  \x1B[3" + c + ";1m" + name3 + " \x1B[0m";
        args[0] = prefix2 + args[0].split("\n").join("\n" + prefix2);
        args.push("\x1B[3" + c + "m+" + exports2.humanize(this.diff) + "\x1B[0m");
      } else {
        args[0] = (/* @__PURE__ */ new Date()).toUTCString() + " " + name3 + " " + args[0];
      }
    }
    function log() {
      return stream3.write(util4.format.apply(util4, arguments) + "\n");
    }
    function save(namespaces) {
      if (null == namespaces) {
        delete process.env.DEBUG;
      } else {
        process.env.DEBUG = namespaces;
      }
    }
    function load2() {
      return process.env.DEBUG;
    }
    function createWritableStdioStream(fd2) {
      var stream4;
      var tty_wrap = process.binding("tty_wrap");
      switch (tty_wrap.guessHandleType(fd2)) {
        case "TTY":
          stream4 = new tty6.WriteStream(fd2);
          stream4._type = "tty";
          if (stream4._handle && stream4._handle.unref) {
            stream4._handle.unref();
          }
          break;
        case "FILE":
          var fs50 = require("fs");
          stream4 = new fs50.SyncWriteStream(fd2, { autoClose: false });
          stream4._type = "fs";
          break;
        case "PIPE":
        case "TCP":
          var net3 = require("net");
          stream4 = new net3.Socket({
            fd: fd2,
            readable: false,
            writable: true
          });
          stream4.readable = false;
          stream4.read = null;
          stream4._type = "pipe";
          if (stream4._handle && stream4._handle.unref) {
            stream4._handle.unref();
          }
          break;
        default:
          throw new Error("Implement me. Unknown stream file type!");
      }
      stream4.fd = fd2;
      stream4._isStdio = true;
      return stream4;
    }
    function init4(debug) {
      debug.inspectOpts = {};
      var keys2 = Object.keys(exports2.inspectOpts);
      for (var i2 = 0; i2 < keys2.length; i2++) {
        debug.inspectOpts[keys2[i2]] = exports2.inspectOpts[keys2[i2]];
      }
    }
    exports2.enable(load2());
  }
});

// ../../node_modules/body-parser/node_modules/debug/src/index.js
var require_src = __commonJS({
  "../../node_modules/body-parser/node_modules/debug/src/index.js"(exports2, module2) {
    if (typeof process !== "undefined" && process.type === "renderer") {
      module2.exports = require_browser();
    } else {
      module2.exports = require_node3();
    }
  }
});

// ../../node_modules/destroy/index.js
var require_destroy = __commonJS({
  "../../node_modules/destroy/index.js"(exports2, module2) {
    "use strict";
    var EventEmitter4 = require("events").EventEmitter;
    var ReadStream = require("fs").ReadStream;
    var Stream4 = require("stream");
    var Zlib = require("zlib");
    module2.exports = destroy;
    function destroy(stream3, suppress) {
      if (isFsReadStream(stream3)) {
        destroyReadStream(stream3);
      } else if (isZlibStream(stream3)) {
        destroyZlibStream(stream3);
      } else if (hasDestroy(stream3)) {
        stream3.destroy();
      }
      if (isEventEmitter(stream3) && suppress) {
        stream3.removeAllListeners("error");
        stream3.addListener("error", noop5);
      }
      return stream3;
    }
    function destroyReadStream(stream3) {
      stream3.destroy();
      if (typeof stream3.close === "function") {
        stream3.on("open", onOpenClose);
      }
    }
    function closeZlibStream(stream3) {
      if (stream3._hadError === true) {
        var prop = stream3._binding === null ? "_binding" : "_handle";
        stream3[prop] = {
          close: function() {
            this[prop] = null;
          }
        };
      }
      stream3.close();
    }
    function destroyZlibStream(stream3) {
      if (typeof stream3.destroy === "function") {
        if (stream3._binding) {
          stream3.destroy();
          if (stream3._processing) {
            stream3._needDrain = true;
            stream3.once("drain", onDrainClearBinding);
          } else {
            stream3._binding.clear();
          }
        } else if (stream3._destroy && stream3._destroy !== Stream4.Transform.prototype._destroy) {
          stream3.destroy();
        } else if (stream3._destroy && typeof stream3.close === "function") {
          stream3.destroyed = true;
          stream3.close();
        } else {
          stream3.destroy();
        }
      } else if (typeof stream3.close === "function") {
        closeZlibStream(stream3);
      }
    }
    function hasDestroy(stream3) {
      return stream3 instanceof Stream4 && typeof stream3.destroy === "function";
    }
    function isEventEmitter(val) {
      return val instanceof EventEmitter4;
    }
    function isFsReadStream(stream3) {
      return stream3 instanceof ReadStream;
    }
    function isZlibStream(stream3) {
      return stream3 instanceof Zlib.Gzip || stream3 instanceof Zlib.Gunzip || stream3 instanceof Zlib.Deflate || stream3 instanceof Zlib.DeflateRaw || stream3 instanceof Zlib.Inflate || stream3 instanceof Zlib.InflateRaw || stream3 instanceof Zlib.Unzip;
    }
    function noop5() {
    }
    function onDrainClearBinding() {
      this._binding.clear();
    }
    function onOpenClose() {
      if (typeof this.fd === "number") {
        this.close();
      }
    }
  }
});

// ../../node_modules/safer-buffer/safer.js
var require_safer = __commonJS({
  "../../node_modules/safer-buffer/safer.js"(exports2, module2) {
    "use strict";
    var buffer2 = require("buffer");
    var Buffer7 = buffer2.Buffer;
    var safer = {};
    var key2;
    for (key2 in buffer2) {
      if (!buffer2.hasOwnProperty(key2)) continue;
      if (key2 === "SlowBuffer" || key2 === "Buffer") continue;
      safer[key2] = buffer2[key2];
    }
    var Safer = safer.Buffer = {};
    for (key2 in Buffer7) {
      if (!Buffer7.hasOwnProperty(key2)) continue;
      if (key2 === "allocUnsafe" || key2 === "allocUnsafeSlow") continue;
      Safer[key2] = Buffer7[key2];
    }
    safer.Buffer.prototype = Buffer7.prototype;
    if (!Safer.from || Safer.from === Uint8Array.from) {
      Safer.from = function(value, encodingOrOffset, length) {
        if (typeof value === "number") {
          throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value);
        }
        if (value && typeof value.length === "undefined") {
          throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value);
        }
        return Buffer7(value, encodingOrOffset, length);
      };
    }
    if (!Safer.alloc) {
      Safer.alloc = function(size, fill3, encoding) {
        if (typeof size !== "number") {
          throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size);
        }
        if (size < 0 || size >= 2 * (1 << 30)) {
          throw new RangeError('The value "' + size + '" is invalid for option "size"');
        }
        var buf = Buffer7(size);
        if (!fill3 || fill3.length === 0) {
          buf.fill(0);
        } else if (typeof encoding === "string") {
          buf.fill(fill3, encoding);
        } else {
          buf.fill(fill3);
        }
        return buf;
      };
    }
    if (!safer.kStringMaxLength) {
      try {
        safer.kStringMaxLength = process.binding("buffer").kStringMaxLength;
      } catch (e2) {
      }
    }
    if (!safer.constants) {
      safer.constants = {
        MAX_LENGTH: safer.kMaxLength
      };
      if (safer.kStringMaxLength) {
        safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength;
      }
    }
    module2.exports = safer;
  }
});

// ../../node_modules/iconv-lite/lib/bom-handling.js
var require_bom_handling = __commonJS({
  "../../node_modules/iconv-lite/lib/bom-handling.js"(exports2) {
    "use strict";
    var BOMChar = "\uFEFF";
    exports2.PrependBOM = PrependBOMWrapper;
    function PrependBOMWrapper(encoder, options) {
      this.encoder = encoder;
      this.addBOM = true;
    }
    PrependBOMWrapper.prototype.write = function(str2) {
      if (this.addBOM) {
        str2 = BOMChar + str2;
        this.addBOM = false;
      }
      return this.encoder.write(str2);
    };
    PrependBOMWrapper.prototype.end = function() {
      return this.encoder.end();
    };
    exports2.StripBOM = StripBOMWrapper;
    function StripBOMWrapper(decoder, options) {
      this.decoder = decoder;
      this.pass = false;
      this.options = options || {};
    }
    StripBOMWrapper.prototype.write = function(buf) {
      var res = this.decoder.write(buf);
      if (this.pass || !res)
        return res;
      if (res[0] === BOMChar) {
        res = res.slice(1);
        if (typeof this.options.stripBOM === "function")
          this.options.stripBOM();
      }
      this.pass = true;
      return res;
    };
    StripBOMWrapper.prototype.end = function() {
      return this.decoder.end();
    };
  }
});

// ../../node_modules/iconv-lite/encodings/internal.js
var require_internal = __commonJS({
  "../../node_modules/iconv-lite/encodings/internal.js"(exports2, module2) {
    "use strict";
    var Buffer7 = require_safer().Buffer;
    module2.exports = {
      // Encodings
      utf8: { type: "_internal", bomAware: true },
      cesu8: { type: "_internal", bomAware: true },
      unicode11utf8: "utf8",
      ucs2: { type: "_internal", bomAware: true },
      utf16le: "ucs2",
      binary: { type: "_internal" },
      base64: { type: "_internal" },
      hex: { type: "_internal" },
      // Codec.
      _internal: InternalCodec
    };
    function InternalCodec(codecOptions, iconv2) {
      this.enc = codecOptions.encodingName;
      this.bomAware = codecOptions.bomAware;
      if (this.enc === "base64")
        this.encoder = InternalEncoderBase64;
      else if (this.enc === "cesu8") {
        this.enc = "utf8";
        this.encoder = InternalEncoderCesu8;
        if (Buffer7.from("eda0bdedb2a9", "hex").toString() !== "\u{1F4A9}") {
          this.decoder = InternalDecoderCesu8;
          this.defaultCharUnicode = iconv2.defaultCharUnicode;
        }
      }
    }
    InternalCodec.prototype.encoder = InternalEncoder;
    InternalCodec.prototype.decoder = InternalDecoder;
    var StringDecoder2 = require("string_decoder").StringDecoder;
    if (!StringDecoder2.prototype.end)
      StringDecoder2.prototype.end = function() {
      };
    function InternalDecoder(options, codec) {
      StringDecoder2.call(this, codec.enc);
    }
    InternalDecoder.prototype = StringDecoder2.prototype;
    function InternalEncoder(options, codec) {
      this.enc = codec.enc;
    }
    InternalEncoder.prototype.write = function(str2) {
      return Buffer7.from(str2, this.enc);
    };
    InternalEncoder.prototype.end = function() {
    };
    function InternalEncoderBase64(options, codec) {
      this.prevStr = "";
    }
    InternalEncoderBase64.prototype.write = function(str2) {
      str2 = this.prevStr + str2;
      var completeQuads = str2.length - str2.length % 4;
      this.prevStr = str2.slice(completeQuads);
      str2 = str2.slice(0, completeQuads);
      return Buffer7.from(str2, "base64");
    };
    InternalEncoderBase64.prototype.end = function() {
      return Buffer7.from(this.prevStr, "base64");
    };
    function InternalEncoderCesu8(options, codec) {
    }
    InternalEncoderCesu8.prototype.write = function(str2) {
      var buf = Buffer7.alloc(str2.length * 3), bufIdx = 0;
      for (var i2 = 0; i2 < str2.length; i2++) {
        var charCode = str2.charCodeAt(i2);
        if (charCode < 128)
          buf[bufIdx++] = charCode;
        else if (charCode < 2048) {
          buf[bufIdx++] = 192 + (charCode >>> 6);
          buf[bufIdx++] = 128 + (charCode & 63);
        } else {
          buf[bufIdx++] = 224 + (charCode >>> 12);
          buf[bufIdx++] = 128 + (charCode >>> 6 & 63);
          buf[bufIdx++] = 128 + (charCode & 63);
        }
      }
      return buf.slice(0, bufIdx);
    };
    InternalEncoderCesu8.prototype.end = function() {
    };
    function InternalDecoderCesu8(options, codec) {
      this.acc = 0;
      this.contBytes = 0;
      this.accBytes = 0;
      this.defaultCharUnicode = codec.defaultCharUnicode;
    }
    InternalDecoderCesu8.prototype.write = function(buf) {
      var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, res = "";
      for (var i2 = 0; i2 < buf.length; i2++) {
        var curByte = buf[i2];
        if ((curByte & 192) !== 128) {
          if (contBytes > 0) {
            res += this.defaultCharUnicode;
            contBytes = 0;
          }
          if (curByte < 128) {
            res += String.fromCharCode(curByte);
          } else if (curByte < 224) {
            acc = curByte & 31;
            contBytes = 1;
            accBytes = 1;
          } else if (curByte < 240) {
            acc = curByte & 15;
            contBytes = 2;
            accBytes = 1;
          } else {
            res += this.defaultCharUnicode;
          }
        } else {
          if (contBytes > 0) {
            acc = acc << 6 | curByte & 63;
            contBytes--;
            accBytes++;
            if (contBytes === 0) {
              if (accBytes === 2 && acc < 128 && acc > 0)
                res += this.defaultCharUnicode;
              else if (accBytes === 3 && acc < 2048)
                res += this.defaultCharUnicode;
              else
                res += String.fromCharCode(acc);
            }
          } else {
            res += this.defaultCharUnicode;
          }
        }
      }
      this.acc = acc;
      this.contBytes = contBytes;
      this.accBytes = accBytes;
      return res;
    };
    InternalDecoderCesu8.prototype.end = function() {
      var res = 0;
      if (this.contBytes > 0)
        res += this.defaultCharUnicode;
      return res;
    };
  }
});

// ../../node_modules/iconv-lite/encodings/utf16.js
var require_utf16 = __commonJS({
  "../../node_modules/iconv-lite/encodings/utf16.js"(exports2) {
    "use strict";
    var Buffer7 = require_safer().Buffer;
    exports2.utf16be = Utf16BECodec;
    function Utf16BECodec() {
    }
    Utf16BECodec.prototype.encoder = Utf16BEEncoder;
    Utf16BECodec.prototype.decoder = Utf16BEDecoder;
    Utf16BECodec.prototype.bomAware = true;
    function Utf16BEEncoder() {
    }
    Utf16BEEncoder.prototype.write = function(str2) {
      var buf = Buffer7.from(str2, "ucs2");
      for (var i2 = 0; i2 < buf.length; i2 += 2) {
        var tmp = buf[i2];
        buf[i2] = buf[i2 + 1];
        buf[i2 + 1] = tmp;
      }
      return buf;
    };
    Utf16BEEncoder.prototype.end = function() {
    };
    function Utf16BEDecoder() {
      this.overflowByte = -1;
    }
    Utf16BEDecoder.prototype.write = function(buf) {
      if (buf.length == 0)
        return "";
      var buf2 = Buffer7.alloc(buf.length + 1), i2 = 0, j = 0;
      if (this.overflowByte !== -1) {
        buf2[0] = buf[0];
        buf2[1] = this.overflowByte;
        i2 = 1;
        j = 2;
      }
      for (; i2 < buf.length - 1; i2 += 2, j += 2) {
        buf2[j] = buf[i2 + 1];
        buf2[j + 1] = buf[i2];
      }
      this.overflowByte = i2 == buf.length - 1 ? buf[buf.length - 1] : -1;
      return buf2.slice(0, j).toString("ucs2");
    };
    Utf16BEDecoder.prototype.end = function() {
    };
    exports2.utf16 = Utf16Codec;
    function Utf16Codec(codecOptions, iconv2) {
      this.iconv = iconv2;
    }
    Utf16Codec.prototype.encoder = Utf16Encoder;
    Utf16Codec.prototype.decoder = Utf16Decoder;
    function Utf16Encoder(options, codec) {
      options = options || {};
      if (options.addBOM === void 0)
        options.addBOM = true;
      this.encoder = codec.iconv.getEncoder("utf-16le", options);
    }
    Utf16Encoder.prototype.write = function(str2) {
      return this.encoder.write(str2);
    };
    Utf16Encoder.prototype.end = function() {
      return this.encoder.end();
    };
    function Utf16Decoder(options, codec) {
      this.decoder = null;
      this.initialBytes = [];
      this.initialBytesLen = 0;
      this.options = options || {};
      this.iconv = codec.iconv;
    }
    Utf16Decoder.prototype.write = function(buf) {
      if (!this.decoder) {
        this.initialBytes.push(buf);
        this.initialBytesLen += buf.length;
        if (this.initialBytesLen < 16)
          return "";
        var buf = Buffer7.concat(this.initialBytes), encoding = detectEncoding(buf, this.options.defaultEncoding);
        this.decoder = this.iconv.getDecoder(encoding, this.options);
        this.initialBytes.length = this.initialBytesLen = 0;
      }
      return this.decoder.write(buf);
    };
    Utf16Decoder.prototype.end = function() {
      if (!this.decoder) {
        var buf = Buffer7.concat(this.initialBytes), encoding = detectEncoding(buf, this.options.defaultEncoding);
        this.decoder = this.iconv.getDecoder(encoding, this.options);
        var res = this.decoder.write(buf), trail = this.decoder.end();
        return trail ? res + trail : res;
      }
      return this.decoder.end();
    };
    function detectEncoding(buf, defaultEncoding) {
      var enc = defaultEncoding || "utf-16le";
      if (buf.length >= 2) {
        if (buf[0] == 254 && buf[1] == 255)
          enc = "utf-16be";
        else if (buf[0] == 255 && buf[1] == 254)
          enc = "utf-16le";
        else {
          var asciiCharsLE = 0, asciiCharsBE = 0, _len = Math.min(buf.length - buf.length % 2, 64);
          for (var i2 = 0; i2 < _len; i2 += 2) {
            if (buf[i2] === 0 && buf[i2 + 1] !== 0) asciiCharsBE++;
            if (buf[i2] !== 0 && buf[i2 + 1] === 0) asciiCharsLE++;
          }
          if (asciiCharsBE > asciiCharsLE)
            enc = "utf-16be";
          else if (asciiCharsBE < asciiCharsLE)
            enc = "utf-16le";
        }
      }
      return enc;
    }
  }
});

// ../../node_modules/iconv-lite/encodings/utf7.js
var require_utf7 = __commonJS({
  "../../node_modules/iconv-lite/encodings/utf7.js"(exports2) {
    "use strict";
    var Buffer7 = require_safer().Buffer;
    exports2.utf7 = Utf7Codec;
    exports2.unicode11utf7 = "utf7";
    function Utf7Codec(codecOptions, iconv2) {
      this.iconv = iconv2;
    }
    Utf7Codec.prototype.encoder = Utf7Encoder;
    Utf7Codec.prototype.decoder = Utf7Decoder;
    Utf7Codec.prototype.bomAware = true;
    var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;
    function Utf7Encoder(options, codec) {
      this.iconv = codec.iconv;
    }
    Utf7Encoder.prototype.write = function(str2) {
      return Buffer7.from(str2.replace(nonDirectChars, function(chunk) {
        return "+" + (chunk === "+" ? "" : this.iconv.encode(chunk, "utf16-be").toString("base64").replace(/=+$/, "")) + "-";
      }.bind(this)));
    };
    Utf7Encoder.prototype.end = function() {
    };
    function Utf7Decoder(options, codec) {
      this.iconv = codec.iconv;
      this.inBase64 = false;
      this.base64Accum = "";
    }
    var base64Regex2 = /[A-Za-z0-9\/+]/;
    var base64Chars = [];
    for (i2 = 0; i2 < 256; i2++)
      base64Chars[i2] = base64Regex2.test(String.fromCharCode(i2));
    var i2;
    var plusChar = "+".charCodeAt(0);
    var minusChar = "-".charCodeAt(0);
    var andChar = "&".charCodeAt(0);
    Utf7Decoder.prototype.write = function(buf) {
      var res = "", lastI = 0, inBase64 = this.inBase64, base64Accum = this.base64Accum;
      for (var i3 = 0; i3 < buf.length; i3++) {
        if (!inBase64) {
          if (buf[i3] == plusChar) {
            res += this.iconv.decode(buf.slice(lastI, i3), "ascii");
            lastI = i3 + 1;
            inBase64 = true;
          }
        } else {
          if (!base64Chars[buf[i3]]) {
            if (i3 == lastI && buf[i3] == minusChar) {
              res += "+";
            } else {
              var b64str = base64Accum + buf.slice(lastI, i3).toString();
              res += this.iconv.decode(Buffer7.from(b64str, "base64"), "utf16-be");
            }
            if (buf[i3] != minusChar)
              i3--;
            lastI = i3 + 1;
            inBase64 = false;
            base64Accum = "";
          }
        }
      }
      if (!inBase64) {
        res += this.iconv.decode(buf.slice(lastI), "ascii");
      } else {
        var b64str = base64Accum + buf.slice(lastI).toString();
        var canBeDecoded = b64str.length - b64str.length % 8;
        base64Accum = b64str.slice(canBeDecoded);
        b64str = b64str.slice(0, canBeDecoded);
        res += this.iconv.decode(Buffer7.from(b64str, "base64"), "utf16-be");
      }
      this.inBase64 = inBase64;
      this.base64Accum = base64Accum;
      return res;
    };
    Utf7Decoder.prototype.end = function() {
      var res = "";
      if (this.inBase64 && this.base64Accum.length > 0)
        res = this.iconv.decode(Buffer7.from(this.base64Accum, "base64"), "utf16-be");
      this.inBase64 = false;
      this.base64Accum = "";
      return res;
    };
    exports2.utf7imap = Utf7IMAPCodec;
    function Utf7IMAPCodec(codecOptions, iconv2) {
      this.iconv = iconv2;
    }
    Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;
    Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;
    Utf7IMAPCodec.prototype.bomAware = true;
    function Utf7IMAPEncoder(options, codec) {
      this.iconv = codec.iconv;
      this.inBase64 = false;
      this.base64Accum = Buffer7.alloc(6);
      this.base64AccumIdx = 0;
    }
    Utf7IMAPEncoder.prototype.write = function(str2) {
      var inBase64 = this.inBase64, base64Accum = this.base64Accum, base64AccumIdx = this.base64AccumIdx, buf = Buffer7.alloc(str2.length * 5 + 10), bufIdx = 0;
      for (var i3 = 0; i3 < str2.length; i3++) {
        var uChar = str2.charCodeAt(i3);
        if (32 <= uChar && uChar <= 126) {
          if (inBase64) {
            if (base64AccumIdx > 0) {
              bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx);
              base64AccumIdx = 0;
            }
            buf[bufIdx++] = minusChar;
            inBase64 = false;
          }
          if (!inBase64) {
            buf[bufIdx++] = uChar;
            if (uChar === andChar)
              buf[bufIdx++] = minusChar;
          }
        } else {
          if (!inBase64) {
            buf[bufIdx++] = andChar;
            inBase64 = true;
          }
          if (inBase64) {
            base64Accum[base64AccumIdx++] = uChar >> 8;
            base64Accum[base64AccumIdx++] = uChar & 255;
            if (base64AccumIdx == base64Accum.length) {
              bufIdx += buf.write(base64Accum.toString("base64").replace(/\//g, ","), bufIdx);
              base64AccumIdx = 0;
            }
          }
        }
      }
      this.inBase64 = inBase64;
      this.base64AccumIdx = base64AccumIdx;
      return buf.slice(0, bufIdx);
    };
    Utf7IMAPEncoder.prototype.end = function() {
      var buf = Buffer7.alloc(10), bufIdx = 0;
      if (this.inBase64) {
        if (this.base64AccumIdx > 0) {
          bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx);
          this.base64AccumIdx = 0;
        }
        buf[bufIdx++] = minusChar;
        this.inBase64 = false;
      }
      return buf.slice(0, bufIdx);
    };
    function Utf7IMAPDecoder(options, codec) {
      this.iconv = codec.iconv;
      this.inBase64 = false;
      this.base64Accum = "";
    }
    var base64IMAPChars = base64Chars.slice();
    base64IMAPChars[",".charCodeAt(0)] = true;
    Utf7IMAPDecoder.prototype.write = function(buf) {
      var res = "", lastI = 0, inBase64 = this.inBase64, base64Accum = this.base64Accum;
      for (var i3 = 0; i3 < buf.length; i3++) {
        if (!inBase64) {
          if (buf[i3] == andChar) {
            res += this.iconv.decode(buf.slice(lastI, i3), "ascii");
            lastI = i3 + 1;
            inBase64 = true;
          }
        } else {
          if (!base64IMAPChars[buf[i3]]) {
            if (i3 == lastI && buf[i3] == minusChar) {
              res += "&";
            } else {
              var b64str = base64Accum + buf.slice(lastI, i3).toString().replace(/,/g, "/");
              res += this.iconv.decode(Buffer7.from(b64str, "base64"), "utf16-be");
            }
            if (buf[i3] != minusChar)
              i3--;
            lastI = i3 + 1;
            inBase64 = false;
            base64Accum = "";
          }
        }
      }
      if (!inBase64) {
        res += this.iconv.decode(buf.slice(lastI), "ascii");
      } else {
        var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, "/");
        var canBeDecoded = b64str.length - b64str.length % 8;
        base64Accum = b64str.slice(canBeDecoded);
        b64str = b64str.slice(0, canBeDecoded);
        res += this.iconv.decode(Buffer7.from(b64str, "base64"), "utf16-be");
      }
      this.inBase64 = inBase64;
      this.base64Accum = base64Accum;
      return res;
    };
    Utf7IMAPDecoder.prototype.end = function() {
      var res = "";
      if (this.inBase64 && this.base64Accum.length > 0)
        res = this.iconv.decode(Buffer7.from(this.base64Accum, "base64"), "utf16-be");
      this.inBase64 = false;
      this.base64Accum = "";
      return res;
    };
  }
});

// ../../node_modules/iconv-lite/encodings/sbcs-codec.js
var require_sbcs_codec = __commonJS({
  "../../node_modules/iconv-lite/encodings/sbcs-codec.js"(exports2) {
    "use strict";
    var Buffer7 = require_safer().Buffer;
    exports2._sbcs = SBCSCodec;
    function SBCSCodec(codecOptions, iconv2) {
      if (!codecOptions)
        throw new Error("SBCS codec is called without the data.");
      if (!codecOptions.chars || codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)
        throw new Error("Encoding '" + codecOptions.type + "' has incorrect 'chars' (must be of len 128 or 256)");
      if (codecOptions.chars.length === 128) {
        var asciiString = "";
        for (var i2 = 0; i2 < 128; i2++)
          asciiString += String.fromCharCode(i2);
        codecOptions.chars = asciiString + codecOptions.chars;
      }
      this.decodeBuf = Buffer7.from(codecOptions.chars, "ucs2");
      var encodeBuf = Buffer7.alloc(65536, iconv2.defaultCharSingleByte.charCodeAt(0));
      for (var i2 = 0; i2 < codecOptions.chars.length; i2++)
        encodeBuf[codecOptions.chars.charCodeAt(i2)] = i2;
      this.encodeBuf = encodeBuf;
    }
    SBCSCodec.prototype.encoder = SBCSEncoder;
    SBCSCodec.prototype.decoder = SBCSDecoder;
    function SBCSEncoder(options, codec) {
      this.encodeBuf = codec.encodeBuf;
    }
    SBCSEncoder.prototype.write = function(str2) {
      var buf = Buffer7.alloc(str2.length);
      for (var i2 = 0; i2 < str2.length; i2++)
        buf[i2] = this.encodeBuf[str2.charCodeAt(i2)];
      return buf;
    };
    SBCSEncoder.prototype.end = function() {
    };
    function SBCSDecoder(options, codec) {
      this.decodeBuf = codec.decodeBuf;
    }
    SBCSDecoder.prototype.write = function(buf) {
      var decodeBuf = this.decodeBuf;
      var newBuf = Buffer7.alloc(buf.length * 2);
      var idx1 = 0, idx2 = 0;
      for (var i2 = 0; i2 < buf.length; i2++) {
        idx1 = buf[i2] * 2;
        idx2 = i2 * 2;
        newBuf[idx2] = decodeBuf[idx1];
        newBuf[idx2 + 1] = decodeBuf[idx1 + 1];
      }
      return newBuf.toString("ucs2");
    };
    SBCSDecoder.prototype.end = function() {
    };
  }
});

// ../../node_modules/iconv-lite/encodings/sbcs-data.js
var require_sbcs_data = __commonJS({
  "../../node_modules/iconv-lite/encodings/sbcs-data.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      // Not supported by iconv, not sure why.
      "10029": "maccenteuro",
      "maccenteuro": {
        "type": "_sbcs",
        "chars": "\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7"
      },
      "808": "cp808",
      "ibm808": "cp808",
      "cp808": {
        "type": "_sbcs",
        "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0"
      },
      "mik": {
        "type": "_sbcs",
        "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      // Aliases of generated encodings.
      "ascii8bit": "ascii",
      "usascii": "ascii",
      "ansix34": "ascii",
      "ansix341968": "ascii",
      "ansix341986": "ascii",
      "csascii": "ascii",
      "cp367": "ascii",
      "ibm367": "ascii",
      "isoir6": "ascii",
      "iso646us": "ascii",
      "iso646irv": "ascii",
      "us": "ascii",
      "latin1": "iso88591",
      "latin2": "iso88592",
      "latin3": "iso88593",
      "latin4": "iso88594",
      "latin5": "iso88599",
      "latin6": "iso885910",
      "latin7": "iso885913",
      "latin8": "iso885914",
      "latin9": "iso885915",
      "latin10": "iso885916",
      "csisolatin1": "iso88591",
      "csisolatin2": "iso88592",
      "csisolatin3": "iso88593",
      "csisolatin4": "iso88594",
      "csisolatincyrillic": "iso88595",
      "csisolatinarabic": "iso88596",
      "csisolatingreek": "iso88597",
      "csisolatinhebrew": "iso88598",
      "csisolatin5": "iso88599",
      "csisolatin6": "iso885910",
      "l1": "iso88591",
      "l2": "iso88592",
      "l3": "iso88593",
      "l4": "iso88594",
      "l5": "iso88599",
      "l6": "iso885910",
      "l7": "iso885913",
      "l8": "iso885914",
      "l9": "iso885915",
      "l10": "iso885916",
      "isoir14": "iso646jp",
      "isoir57": "iso646cn",
      "isoir100": "iso88591",
      "isoir101": "iso88592",
      "isoir109": "iso88593",
      "isoir110": "iso88594",
      "isoir144": "iso88595",
      "isoir127": "iso88596",
      "isoir126": "iso88597",
      "isoir138": "iso88598",
      "isoir148": "iso88599",
      "isoir157": "iso885910",
      "isoir166": "tis620",
      "isoir179": "iso885913",
      "isoir199": "iso885914",
      "isoir203": "iso885915",
      "isoir226": "iso885916",
      "cp819": "iso88591",
      "ibm819": "iso88591",
      "cyrillic": "iso88595",
      "arabic": "iso88596",
      "arabic8": "iso88596",
      "ecma114": "iso88596",
      "asmo708": "iso88596",
      "greek": "iso88597",
      "greek8": "iso88597",
      "ecma118": "iso88597",
      "elot928": "iso88597",
      "hebrew": "iso88598",
      "hebrew8": "iso88598",
      "turkish": "iso88599",
      "turkish8": "iso88599",
      "thai": "iso885911",
      "thai8": "iso885911",
      "celtic": "iso885914",
      "celtic8": "iso885914",
      "isoceltic": "iso885914",
      "tis6200": "tis620",
      "tis62025291": "tis620",
      "tis62025330": "tis620",
      "10000": "macroman",
      "10006": "macgreek",
      "10007": "maccyrillic",
      "10079": "maciceland",
      "10081": "macturkish",
      "cspc8codepage437": "cp437",
      "cspc775baltic": "cp775",
      "cspc850multilingual": "cp850",
      "cspcp852": "cp852",
      "cspc862latinhebrew": "cp862",
      "cpgr": "cp869",
      "msee": "cp1250",
      "mscyrl": "cp1251",
      "msansi": "cp1252",
      "msgreek": "cp1253",
      "msturk": "cp1254",
      "mshebr": "cp1255",
      "msarab": "cp1256",
      "winbaltrim": "cp1257",
      "cp20866": "koi8r",
      "20866": "koi8r",
      "ibm878": "koi8r",
      "cskoi8r": "koi8r",
      "cp21866": "koi8u",
      "21866": "koi8u",
      "ibm1168": "koi8u",
      "strk10482002": "rk1048",
      "tcvn5712": "tcvn",
      "tcvn57121": "tcvn",
      "gb198880": "iso646cn",
      "cn": "iso646cn",
      "csiso14jisc6220ro": "iso646jp",
      "jisc62201969ro": "iso646jp",
      "jp": "iso646jp",
      "cshproman8": "hproman8",
      "r8": "hproman8",
      "roman8": "hproman8",
      "xroman8": "hproman8",
      "ibm1051": "hproman8",
      "mac": "macintosh",
      "csmacintosh": "macintosh"
    };
  }
});

// ../../node_modules/iconv-lite/encodings/sbcs-data-generated.js
var require_sbcs_data_generated = __commonJS({
  "../../node_modules/iconv-lite/encodings/sbcs-data-generated.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      "437": "cp437",
      "737": "cp737",
      "775": "cp775",
      "850": "cp850",
      "852": "cp852",
      "855": "cp855",
      "856": "cp856",
      "857": "cp857",
      "858": "cp858",
      "860": "cp860",
      "861": "cp861",
      "862": "cp862",
      "863": "cp863",
      "864": "cp864",
      "865": "cp865",
      "866": "cp866",
      "869": "cp869",
      "874": "windows874",
      "922": "cp922",
      "1046": "cp1046",
      "1124": "cp1124",
      "1125": "cp1125",
      "1129": "cp1129",
      "1133": "cp1133",
      "1161": "cp1161",
      "1162": "cp1162",
      "1163": "cp1163",
      "1250": "windows1250",
      "1251": "windows1251",
      "1252": "windows1252",
      "1253": "windows1253",
      "1254": "windows1254",
      "1255": "windows1255",
      "1256": "windows1256",
      "1257": "windows1257",
      "1258": "windows1258",
      "28591": "iso88591",
      "28592": "iso88592",
      "28593": "iso88593",
      "28594": "iso88594",
      "28595": "iso88595",
      "28596": "iso88596",
      "28597": "iso88597",
      "28598": "iso88598",
      "28599": "iso88599",
      "28600": "iso885910",
      "28601": "iso885911",
      "28603": "iso885913",
      "28604": "iso885914",
      "28605": "iso885915",
      "28606": "iso885916",
      "windows874": {
        "type": "_sbcs",
        "chars": "\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"
      },
      "win874": "windows874",
      "cp874": "windows874",
      "windows1250": {
        "type": "_sbcs",
        "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"
      },
      "win1250": "windows1250",
      "cp1250": "windows1250",
      "windows1251": {
        "type": "_sbcs",
        "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"
      },
      "win1251": "windows1251",
      "cp1251": "windows1251",
      "windows1252": {
        "type": "_sbcs",
        "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"
      },
      "win1252": "windows1252",
      "cp1252": "windows1252",
      "windows1253": {
        "type": "_sbcs",
        "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"
      },
      "win1253": "windows1253",
      "cp1253": "windows1253",
      "windows1254": {
        "type": "_sbcs",
        "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"
      },
      "win1254": "windows1254",
      "cp1254": "windows1254",
      "windows1255": {
        "type": "_sbcs",
        "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"
      },
      "win1255": "windows1255",
      "cp1255": "windows1255",
      "windows1256": {
        "type": "_sbcs",
        "chars": "\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2"
      },
      "win1256": "windows1256",
      "cp1256": "windows1256",
      "windows1257": {
        "type": "_sbcs",
        "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9"
      },
      "win1257": "windows1257",
      "cp1257": "windows1257",
      "windows1258": {
        "type": "_sbcs",
        "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"
      },
      "win1258": "windows1258",
      "cp1258": "windows1258",
      "iso88591": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"
      },
      "cp28591": "iso88591",
      "iso88592": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"
      },
      "cp28592": "iso88592",
      "iso88593": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9"
      },
      "cp28593": "iso88593",
      "iso88594": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9"
      },
      "cp28594": "iso88594",
      "iso88595": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"
      },
      "cp28595": "iso88595",
      "iso88596": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"
      },
      "cp28596": "iso88596",
      "iso88597": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"
      },
      "cp28597": "iso88597",
      "iso88598": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"
      },
      "cp28598": "iso88598",
      "iso88599": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"
      },
      "cp28599": "iso88599",
      "iso885910": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138"
      },
      "cp28600": "iso885910",
      "iso885911": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"
      },
      "cp28601": "iso885911",
      "iso885913": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019"
      },
      "cp28603": "iso885913",
      "iso885914": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF"
      },
      "cp28604": "iso885914",
      "iso885915": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"
      },
      "cp28605": "iso885915",
      "iso885916": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF"
      },
      "cp28606": "iso885916",
      "cp437": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      "ibm437": "cp437",
      "csibm437": "cp437",
      "cp737": {
        "type": "_sbcs",
        "chars": "\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      "ibm737": "cp737",
      "csibm737": "cp737",
      "cp775": {
        "type": "_sbcs",
        "chars": "\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0"
      },
      "ibm775": "cp775",
      "csibm775": "cp775",
      "cp850": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"
      },
      "ibm850": "cp850",
      "csibm850": "cp850",
      "cp852": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0"
      },
      "ibm852": "cp852",
      "csibm852": "cp852",
      "cp855": {
        "type": "_sbcs",
        "chars": "\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0"
      },
      "ibm855": "cp855",
      "csibm855": "cp855",
      "cp856": {
        "type": "_sbcs",
        "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"
      },
      "ibm856": "cp856",
      "csibm856": "cp856",
      "cp857": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"
      },
      "ibm857": "cp857",
      "csibm857": "cp857",
      "cp858": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"
      },
      "ibm858": "cp858",
      "csibm858": "cp858",
      "cp860": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      "ibm860": "cp860",
      "csibm860": "cp860",
      "cp861": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      "ibm861": "cp861",
      "csibm861": "cp861",
      "cp862": {
        "type": "_sbcs",
        "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      "ibm862": "cp862",
      "csibm862": "cp862",
      "cp863": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      "ibm863": "cp863",
      "csibm863": "cp863",
      "cp864": {
        "type": "_sbcs",
        "chars": "\0\x07\b	\n\v\f\r\x1B !\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD"
      },
      "ibm864": "cp864",
      "csibm864": "cp864",
      "cp865": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      "ibm865": "cp865",
      "csibm865": "cp865",
      "cp866": {
        "type": "_sbcs",
        "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0"
      },
      "ibm866": "cp866",
      "csibm866": "cp866",
      "cp869": {
        "type": "_sbcs",
        "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0"
      },
      "ibm869": "cp869",
      "csibm869": "cp869",
      "cp922": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF"
      },
      "ibm922": "cp922",
      "csibm922": "cp922",
      "cp1046": {
        "type": "_sbcs",
        "chars": "\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD"
      },
      "ibm1046": "cp1046",
      "csibm1046": "cp1046",
      "cp1124": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"
      },
      "ibm1124": "cp1124",
      "csibm1124": "cp1124",
      "cp1125": {
        "type": "_sbcs",
        "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0"
      },
      "ibm1125": "cp1125",
      "csibm1125": "cp1125",
      "cp1129": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"
      },
      "ibm1129": "cp1129",
      "csibm1129": "cp1129",
      "cp1133": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD"
      },
      "ibm1133": "cp1133",
      "csibm1133": "cp1133",
      "cp1161": {
        "type": "_sbcs",
        "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0"
      },
      "ibm1161": "cp1161",
      "csibm1161": "cp1161",
      "cp1162": {
        "type": "_sbcs",
        "chars": "\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"
      },
      "ibm1162": "cp1162",
      "csibm1162": "cp1162",
      "cp1163": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"
      },
      "ibm1163": "cp1163",
      "csibm1163": "cp1163",
      "maccroatian": {
        "type": "_sbcs",
        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7"
      },
      "maccyrillic": {
        "type": "_sbcs",
        "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"
      },
      "macgreek": {
        "type": "_sbcs",
        "chars": "\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD"
      },
      "maciceland": {
        "type": "_sbcs",
        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"
      },
      "macroman": {
        "type": "_sbcs",
        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"
      },
      "macromania": {
        "type": "_sbcs",
        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"
      },
      "macthai": {
        "type": "_sbcs",
        "chars": "\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD"
      },
      "macturkish": {
        "type": "_sbcs",
        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"
      },
      "macukraine": {
        "type": "_sbcs",
        "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"
      },
      "koi8r": {
        "type": "_sbcs",
        "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"
      },
      "koi8u": {
        "type": "_sbcs",
        "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"
      },
      "koi8ru": {
        "type": "_sbcs",
        "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"
      },
      "koi8t": {
        "type": "_sbcs",
        "chars": "\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"
      },
      "armscii8": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD"
      },
      "rk1048": {
        "type": "_sbcs",
        "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"
      },
      "tcvn": {
        "type": "_sbcs",
        "chars": "\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b	\n\v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0"
      },
      "georgianacademy": {
        "type": "_sbcs",
        "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"
      },
      "georgianps": {
        "type": "_sbcs",
        "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"
      },
      "pt154": {
        "type": "_sbcs",
        "chars": "\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"
      },
      "viscii": {
        "type": "_sbcs",
        "chars": "\0\u1EB2\u1EB4\u1EAA\x07\b	\n\v\f\r\u1EF6\u1EF8\x1B\u1EF4 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE"
      },
      "iso646cn": {
        "type": "_sbcs",
        "chars": "\0\x07\b	\n\v\f\r\x1B !\"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"
      },
      "iso646jp": {
        "type": "_sbcs",
        "chars": "\0\x07\b	\n\v\f\r\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"
      },
      "hproman8": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD"
      },
      "macintosh": {
        "type": "_sbcs",
        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"
      },
      "ascii": {
        "type": "_sbcs",
        "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"
      },
      "tis620": {
        "type": "_sbcs",
        "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"
      }
    };
  }
});

// ../../node_modules/iconv-lite/encodings/dbcs-codec.js
var require_dbcs_codec = __commonJS({
  "../../node_modules/iconv-lite/encodings/dbcs-codec.js"(exports2) {
    "use strict";
    var Buffer7 = require_safer().Buffer;
    exports2._dbcs = DBCSCodec;
    var UNASSIGNED = -1;
    var GB18030_CODE = -2;
    var SEQ_START = -10;
    var NODE_START = -1e3;
    var UNASSIGNED_NODE = new Array(256);
    var DEF_CHAR = -1;
    for (i2 = 0; i2 < 256; i2++)
      UNASSIGNED_NODE[i2] = UNASSIGNED;
    var i2;
    function DBCSCodec(codecOptions, iconv2) {
      this.encodingName = codecOptions.encodingName;
      if (!codecOptions)
        throw new Error("DBCS codec is called without the data.");
      if (!codecOptions.table)
        throw new Error("Encoding '" + this.encodingName + "' has no data.");
      var mappingTable = codecOptions.table();
      this.decodeTables = [];
      this.decodeTables[0] = UNASSIGNED_NODE.slice(0);
      this.decodeTableSeq = [];
      for (var i3 = 0; i3 < mappingTable.length; i3++)
        this._addDecodeChunk(mappingTable[i3]);
      this.defaultCharUnicode = iconv2.defaultCharUnicode;
      this.encodeTable = [];
      this.encodeTableSeq = [];
      var skipEncodeChars = {};
      if (codecOptions.encodeSkipVals)
        for (var i3 = 0; i3 < codecOptions.encodeSkipVals.length; i3++) {
          var val = codecOptions.encodeSkipVals[i3];
          if (typeof val === "number")
            skipEncodeChars[val] = true;
          else
            for (var j = val.from; j <= val.to; j++)
              skipEncodeChars[j] = true;
        }
      this._fillEncodeTable(0, 0, skipEncodeChars);
      if (codecOptions.encodeAdd) {
        for (var uChar in codecOptions.encodeAdd)
          if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))
            this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);
      }
      this.defCharSB = this.encodeTable[0][iconv2.defaultCharSingleByte.charCodeAt(0)];
      if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]["?"];
      if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0);
      if (typeof codecOptions.gb18030 === "function") {
        this.gb18030 = codecOptions.gb18030();
        var thirdByteNodeIdx = this.decodeTables.length;
        var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0);
        var fourthByteNodeIdx = this.decodeTables.length;
        var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0);
        for (var i3 = 129; i3 <= 254; i3++) {
          var secondByteNodeIdx = NODE_START - this.decodeTables[0][i3];
          var secondByteNode = this.decodeTables[secondByteNodeIdx];
          for (var j = 48; j <= 57; j++)
            secondByteNode[j] = NODE_START - thirdByteNodeIdx;
        }
        for (var i3 = 129; i3 <= 254; i3++)
          thirdByteNode[i3] = NODE_START - fourthByteNodeIdx;
        for (var i3 = 48; i3 <= 57; i3++)
          fourthByteNode[i3] = GB18030_CODE;
      }
    }
    DBCSCodec.prototype.encoder = DBCSEncoder;
    DBCSCodec.prototype.decoder = DBCSDecoder;
    DBCSCodec.prototype._getDecodeTrieNode = function(addr) {
      var bytes = [];
      for (; addr > 0; addr >>= 8)
        bytes.push(addr & 255);
      if (bytes.length == 0)
        bytes.push(0);
      var node3 = this.decodeTables[0];
      for (var i3 = bytes.length - 1; i3 > 0; i3--) {
        var val = node3[bytes[i3]];
        if (val == UNASSIGNED) {
          node3[bytes[i3]] = NODE_START - this.decodeTables.length;
          this.decodeTables.push(node3 = UNASSIGNED_NODE.slice(0));
        } else if (val <= NODE_START) {
          node3 = this.decodeTables[NODE_START - val];
        } else
          throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16));
      }
      return node3;
    };
    DBCSCodec.prototype._addDecodeChunk = function(chunk) {
      var curAddr = parseInt(chunk[0], 16);
      var writeTable = this._getDecodeTrieNode(curAddr);
      curAddr = curAddr & 255;
      for (var k = 1; k < chunk.length; k++) {
        var part = chunk[k];
        if (typeof part === "string") {
          for (var l = 0; l < part.length; ) {
            var code7 = part.charCodeAt(l++);
            if (55296 <= code7 && code7 < 56320) {
              var codeTrail = part.charCodeAt(l++);
              if (56320 <= codeTrail && codeTrail < 57344)
                writeTable[curAddr++] = 65536 + (code7 - 55296) * 1024 + (codeTrail - 56320);
              else
                throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]);
            } else if (4080 < code7 && code7 <= 4095) {
              var len = 4095 - code7 + 2;
              var seq2 = [];
              for (var m2 = 0; m2 < len; m2++)
                seq2.push(part.charCodeAt(l++));
              writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;
              this.decodeTableSeq.push(seq2);
            } else
              writeTable[curAddr++] = code7;
          }
        } else if (typeof part === "number") {
          var charCode = writeTable[curAddr - 1] + 1;
          for (var l = 0; l < part; l++)
            writeTable[curAddr++] = charCode++;
        } else
          throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]);
      }
      if (curAddr > 255)
        throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr);
    };
    DBCSCodec.prototype._getEncodeBucket = function(uCode) {
      var high = uCode >> 8;
      if (this.encodeTable[high] === void 0)
        this.encodeTable[high] = UNASSIGNED_NODE.slice(0);
      return this.encodeTable[high];
    };
    DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {
      var bucket = this._getEncodeBucket(uCode);
      var low = uCode & 255;
      if (bucket[low] <= SEQ_START)
        this.encodeTableSeq[SEQ_START - bucket[low]][DEF_CHAR] = dbcsCode;
      else if (bucket[low] == UNASSIGNED)
        bucket[low] = dbcsCode;
    };
    DBCSCodec.prototype._setEncodeSequence = function(seq2, dbcsCode) {
      var uCode = seq2[0];
      var bucket = this._getEncodeBucket(uCode);
      var low = uCode & 255;
      var node3;
      if (bucket[low] <= SEQ_START) {
        node3 = this.encodeTableSeq[SEQ_START - bucket[low]];
      } else {
        node3 = {};
        if (bucket[low] !== UNASSIGNED) node3[DEF_CHAR] = bucket[low];
        bucket[low] = SEQ_START - this.encodeTableSeq.length;
        this.encodeTableSeq.push(node3);
      }
      for (var j = 1; j < seq2.length - 1; j++) {
        var oldVal = node3[uCode];
        if (typeof oldVal === "object")
          node3 = oldVal;
        else {
          node3 = node3[uCode] = {};
          if (oldVal !== void 0)
            node3[DEF_CHAR] = oldVal;
        }
      }
      uCode = seq2[seq2.length - 1];
      node3[uCode] = dbcsCode;
    };
    DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix2, skipEncodeChars) {
      var node3 = this.decodeTables[nodeIdx];
      for (var i3 = 0; i3 < 256; i3++) {
        var uCode = node3[i3];
        var mbCode = prefix2 + i3;
        if (skipEncodeChars[mbCode])
          continue;
        if (uCode >= 0)
          this._setEncodeChar(uCode, mbCode);
        else if (uCode <= NODE_START)
          this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars);
        else if (uCode <= SEQ_START)
          this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);
      }
    };
    function DBCSEncoder(options, codec) {
      this.leadSurrogate = -1;
      this.seqObj = void 0;
      this.encodeTable = codec.encodeTable;
      this.encodeTableSeq = codec.encodeTableSeq;
      this.defaultCharSingleByte = codec.defCharSB;
      this.gb18030 = codec.gb18030;
    }
    DBCSEncoder.prototype.write = function(str2) {
      var newBuf = Buffer7.alloc(str2.length * (this.gb18030 ? 4 : 3)), leadSurrogate = this.leadSurrogate, seqObj = this.seqObj, nextChar = -1, i3 = 0, j = 0;
      while (true) {
        if (nextChar === -1) {
          if (i3 == str2.length) break;
          var uCode = str2.charCodeAt(i3++);
        } else {
          var uCode = nextChar;
          nextChar = -1;
        }
        if (55296 <= uCode && uCode < 57344) {
          if (uCode < 56320) {
            if (leadSurrogate === -1) {
              leadSurrogate = uCode;
              continue;
            } else {
              leadSurrogate = uCode;
              uCode = UNASSIGNED;
            }
          } else {
            if (leadSurrogate !== -1) {
              uCode = 65536 + (leadSurrogate - 55296) * 1024 + (uCode - 56320);
              leadSurrogate = -1;
            } else {
              uCode = UNASSIGNED;
            }
          }
        } else if (leadSurrogate !== -1) {
          nextChar = uCode;
          uCode = UNASSIGNED;
          leadSurrogate = -1;
        }
        var dbcsCode = UNASSIGNED;
        if (seqObj !== void 0 && uCode != UNASSIGNED) {
          var resCode = seqObj[uCode];
          if (typeof resCode === "object") {
            seqObj = resCode;
            continue;
          } else if (typeof resCode == "number") {
            dbcsCode = resCode;
          } else if (resCode == void 0) {
            resCode = seqObj[DEF_CHAR];
            if (resCode !== void 0) {
              dbcsCode = resCode;
              nextChar = uCode;
            } else {
            }
          }
          seqObj = void 0;
        } else if (uCode >= 0) {
          var subtable = this.encodeTable[uCode >> 8];
          if (subtable !== void 0)
            dbcsCode = subtable[uCode & 255];
          if (dbcsCode <= SEQ_START) {
            seqObj = this.encodeTableSeq[SEQ_START - dbcsCode];
            continue;
          }
          if (dbcsCode == UNASSIGNED && this.gb18030) {
            var idx = findIdx(this.gb18030.uChars, uCode);
            if (idx != -1) {
              var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);
              newBuf[j++] = 129 + Math.floor(dbcsCode / 12600);
              dbcsCode = dbcsCode % 12600;
              newBuf[j++] = 48 + Math.floor(dbcsCode / 1260);
              dbcsCode = dbcsCode % 1260;
              newBuf[j++] = 129 + Math.floor(dbcsCode / 10);
              dbcsCode = dbcsCode % 10;
              newBuf[j++] = 48 + dbcsCode;
              continue;
            }
          }
        }
        if (dbcsCode === UNASSIGNED)
          dbcsCode = this.defaultCharSingleByte;
        if (dbcsCode < 256) {
          newBuf[j++] = dbcsCode;
        } else if (dbcsCode < 65536) {
          newBuf[j++] = dbcsCode >> 8;
          newBuf[j++] = dbcsCode & 255;
        } else {
          newBuf[j++] = dbcsCode >> 16;
          newBuf[j++] = dbcsCode >> 8 & 255;
          newBuf[j++] = dbcsCode & 255;
        }
      }
      this.seqObj = seqObj;
      this.leadSurrogate = leadSurrogate;
      return newBuf.slice(0, j);
    };
    DBCSEncoder.prototype.end = function() {
      if (this.leadSurrogate === -1 && this.seqObj === void 0)
        return;
      var newBuf = Buffer7.alloc(10), j = 0;
      if (this.seqObj) {
        var dbcsCode = this.seqObj[DEF_CHAR];
        if (dbcsCode !== void 0) {
          if (dbcsCode < 256) {
            newBuf[j++] = dbcsCode;
          } else {
            newBuf[j++] = dbcsCode >> 8;
            newBuf[j++] = dbcsCode & 255;
          }
        } else {
        }
        this.seqObj = void 0;
      }
      if (this.leadSurrogate !== -1) {
        newBuf[j++] = this.defaultCharSingleByte;
        this.leadSurrogate = -1;
      }
      return newBuf.slice(0, j);
    };
    DBCSEncoder.prototype.findIdx = findIdx;
    function DBCSDecoder(options, codec) {
      this.nodeIdx = 0;
      this.prevBuf = Buffer7.alloc(0);
      this.decodeTables = codec.decodeTables;
      this.decodeTableSeq = codec.decodeTableSeq;
      this.defaultCharUnicode = codec.defaultCharUnicode;
      this.gb18030 = codec.gb18030;
    }
    DBCSDecoder.prototype.write = function(buf) {
      var newBuf = Buffer7.alloc(buf.length * 2), nodeIdx = this.nodeIdx, prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length, seqStart = -this.prevBuf.length, uCode;
      if (prevBufOffset > 0)
        prevBuf = Buffer7.concat([prevBuf, buf.slice(0, 10)]);
      for (var i3 = 0, j = 0; i3 < buf.length; i3++) {
        var curByte = i3 >= 0 ? buf[i3] : prevBuf[i3 + prevBufOffset];
        var uCode = this.decodeTables[nodeIdx][curByte];
        if (uCode >= 0) {
        } else if (uCode === UNASSIGNED) {
          i3 = seqStart;
          uCode = this.defaultCharUnicode.charCodeAt(0);
        } else if (uCode === GB18030_CODE) {
          var curSeq = seqStart >= 0 ? buf.slice(seqStart, i3 + 1) : prevBuf.slice(seqStart + prevBufOffset, i3 + 1 + prevBufOffset);
          var ptr = (curSeq[0] - 129) * 12600 + (curSeq[1] - 48) * 1260 + (curSeq[2] - 129) * 10 + (curSeq[3] - 48);
          var idx = findIdx(this.gb18030.gbChars, ptr);
          uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];
        } else if (uCode <= NODE_START) {
          nodeIdx = NODE_START - uCode;
          continue;
        } else if (uCode <= SEQ_START) {
          var seq2 = this.decodeTableSeq[SEQ_START - uCode];
          for (var k = 0; k < seq2.length - 1; k++) {
            uCode = seq2[k];
            newBuf[j++] = uCode & 255;
            newBuf[j++] = uCode >> 8;
          }
          uCode = seq2[seq2.length - 1];
        } else
          throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte);
        if (uCode > 65535) {
          uCode -= 65536;
          var uCodeLead = 55296 + Math.floor(uCode / 1024);
          newBuf[j++] = uCodeLead & 255;
          newBuf[j++] = uCodeLead >> 8;
          uCode = 56320 + uCode % 1024;
        }
        newBuf[j++] = uCode & 255;
        newBuf[j++] = uCode >> 8;
        nodeIdx = 0;
        seqStart = i3 + 1;
      }
      this.nodeIdx = nodeIdx;
      this.prevBuf = seqStart >= 0 ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset);
      return newBuf.slice(0, j).toString("ucs2");
    };
    DBCSDecoder.prototype.end = function() {
      var ret = "";
      while (this.prevBuf.length > 0) {
        ret += this.defaultCharUnicode;
        var buf = this.prevBuf.slice(1);
        this.prevBuf = Buffer7.alloc(0);
        this.nodeIdx = 0;
        if (buf.length > 0)
          ret += this.write(buf);
      }
      this.nodeIdx = 0;
      return ret;
    };
    function findIdx(table5, val) {
      if (table5[0] > val)
        return -1;
      var l = 0, r2 = table5.length;
      while (l < r2 - 1) {
        var mid = l + Math.floor((r2 - l + 1) / 2);
        if (table5[mid] <= val)
          l = mid;
        else
          r2 = mid;
      }
      return l;
    }
  }
});

// ../../node_modules/iconv-lite/encodings/tables/shiftjis.json
var require_shiftjis = __commonJS({
  "../../node_modules/iconv-lite/encodings/tables/shiftjis.json"(exports2, module2) {
    module2.exports = [
      ["0", "\0", 128],
      ["a1", "\uFF61", 62],
      ["8140", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7"],
      ["8180", "\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],
      ["81b8", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],
      ["81c8", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],
      ["81da", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],
      ["81f0", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],
      ["81fc", "\u25EF"],
      ["824f", "\uFF10", 9],
      ["8260", "\uFF21", 25],
      ["8281", "\uFF41", 25],
      ["829f", "\u3041", 82],
      ["8340", "\u30A1", 62],
      ["8380", "\u30E0", 22],
      ["839f", "\u0391", 16, "\u03A3", 6],
      ["83bf", "\u03B1", 16, "\u03C3", 6],
      ["8440", "\u0410", 5, "\u0401\u0416", 25],
      ["8470", "\u0430", 5, "\u0451\u0436", 7],
      ["8480", "\u043E", 17],
      ["849f", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],
      ["8740", "\u2460", 19, "\u2160", 9],
      ["875f", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],
      ["877e", "\u337B"],
      ["8780", "\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],
      ["889f", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],
      ["8940", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"],
      ["8980", "\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],
      ["8a40", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"],
      ["8a80", "\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],
      ["8b40", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"],
      ["8b80", "\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],
      ["8c40", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"],
      ["8c80", "\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],
      ["8d40", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"],
      ["8d80", "\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],
      ["8e40", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"],
      ["8e80", "\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],
      ["8f40", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"],
      ["8f80", "\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],
      ["9040", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"],
      ["9080", "\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],
      ["9140", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"],
      ["9180", "\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],
      ["9240", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"],
      ["9280", "\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],
      ["9340", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"],
      ["9380", "\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],
      ["9440", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"],
      ["9480", "\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],
      ["9540", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"],
      ["9580", "\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],
      ["9640", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"],
      ["9680", "\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],
      ["9740", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"],
      ["9780", "\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],
      ["9840", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],
      ["989f", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],
      ["9940", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"],
      ["9980", "\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],
      ["9a40", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"],
      ["9a80", "\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],
      ["9b40", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"],
      ["9b80", "\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],
      ["9c40", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"],
      ["9c80", "\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],
      ["9d40", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"],
      ["9d80", "\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],
      ["9e40", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"],
      ["9e80", "\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],
      ["9f40", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"],
      ["9f80", "\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],
      ["e040", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"],
      ["e080", "\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],
      ["e140", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"],
      ["e180", "\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],
      ["e240", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"],
      ["e280", "\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],
      ["e340", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"],
      ["e380", "\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],
      ["e440", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"],
      ["e480", "\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],
      ["e540", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"],
      ["e580", "\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],
      ["e640", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"],
      ["e680", "\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],
      ["e740", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"],
      ["e780", "\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],
      ["e840", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"],
      ["e880", "\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],
      ["e940", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"],
      ["e980", "\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],
      ["ea40", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"],
      ["ea80", "\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"],
      ["ed40", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"],
      ["ed80", "\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],
      ["ee40", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"],
      ["ee80", "\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],
      ["eeef", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"],
      ["f040", "\uE000", 62],
      ["f080", "\uE03F", 124],
      ["f140", "\uE0BC", 62],
      ["f180", "\uE0FB", 124],
      ["f240", "\uE178", 62],
      ["f280", "\uE1B7", 124],
      ["f340", "\uE234", 62],
      ["f380", "\uE273", 124],
      ["f440", "\uE2F0", 62],
      ["f480", "\uE32F", 124],
      ["f540", "\uE3AC", 62],
      ["f580", "\uE3EB", 124],
      ["f640", "\uE468", 62],
      ["f680", "\uE4A7", 124],
      ["f740", "\uE524", 62],
      ["f780", "\uE563", 124],
      ["f840", "\uE5E0", 62],
      ["f880", "\uE61F", 124],
      ["f940", "\uE69C"],
      ["fa40", "\u2170", 9, "\u2160", 9, "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"],
      ["fa80", "\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"],
      ["fb40", "\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"],
      ["fb80", "\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"],
      ["fc40", "\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"]
    ];
  }
});

// ../../node_modules/iconv-lite/encodings/tables/eucjp.json
var require_eucjp = __commonJS({
  "../../node_modules/iconv-lite/encodings/tables/eucjp.json"(exports2, module2) {
    module2.exports = [
      ["0", "\0", 127],
      ["8ea1", "\uFF61", 62],
      ["a1a1", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"],
      ["a2a1", "\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],
      ["a2ba", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],
      ["a2ca", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],
      ["a2dc", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],
      ["a2f2", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],
      ["a2fe", "\u25EF"],
      ["a3b0", "\uFF10", 9],
      ["a3c1", "\uFF21", 25],
      ["a3e1", "\uFF41", 25],
      ["a4a1", "\u3041", 82],
      ["a5a1", "\u30A1", 85],
      ["a6a1", "\u0391", 16, "\u03A3", 6],
      ["a6c1", "\u03B1", 16, "\u03C3", 6],
      ["a7a1", "\u0410", 5, "\u0401\u0416", 25],
      ["a7d1", "\u0430", 5, "\u0451\u0436", 25],
      ["a8a1", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],
      ["ada1", "\u2460", 19, "\u2160", 9],
      ["adc0", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],
      ["addf", "\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],
      ["b0a1", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],
      ["b1a1", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"],
      ["b2a1", "\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],
      ["b3a1", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"],
      ["b4a1", "\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],
      ["b5a1", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"],
      ["b6a1", "\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],
      ["b7a1", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"],
      ["b8a1", "\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],
      ["b9a1", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"],
      ["baa1", "\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],
      ["bba1", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"],
      ["bca1", "\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],
      ["bda1", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"],
      ["bea1", "\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],
      ["bfa1", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"],
      ["c0a1", "\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],
      ["c1a1", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"],
      ["c2a1", "\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],
      ["c3a1", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"],
      ["c4a1", "\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],
      ["c5a1", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"],
      ["c6a1", "\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],
      ["c7a1", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"],
      ["c8a1", "\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],
      ["c9a1", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"],
      ["caa1", "\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],
      ["cba1", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"],
      ["cca1", "\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],
      ["cda1", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"],
      ["cea1", "\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],
      ["cfa1", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],
      ["d0a1", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],
      ["d1a1", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"],
      ["d2a1", "\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],
      ["d3a1", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"],
      ["d4a1", "\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],
      ["d5a1", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"],
      ["d6a1", "\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],
      ["d7a1", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"],
      ["d8a1", "\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],
      ["d9a1", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"],
      ["daa1", "\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],
      ["dba1", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"],
      ["dca1", "\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],
      ["dda1", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"],
      ["dea1", "\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],
      ["dfa1", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"],
      ["e0a1", "\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],
      ["e1a1", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"],
      ["e2a1", "\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],
      ["e3a1", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"],
      ["e4a1", "\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],
      ["e5a1", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"],
      ["e6a1", "\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],
      ["e7a1", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"],
      ["e8a1", "\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],
      ["e9a1", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"],
      ["eaa1", "\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],
      ["eba1", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"],
      ["eca1", "\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],
      ["eda1", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"],
      ["eea1", "\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],
      ["efa1", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"],
      ["f0a1", "\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],
      ["f1a1", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"],
      ["f2a1", "\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],
      ["f3a1", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"],
      ["f4a1", "\u582F\u69C7\u9059\u7464\u51DC\u7199"],
      ["f9a1", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"],
      ["faa1", "\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],
      ["fba1", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"],
      ["fca1", "\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],
      ["fcf1", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"],
      ["8fa2af", "\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"],
      ["8fa2c2", "\xA1\xA6\xBF"],
      ["8fa2eb", "\xBA\xAA\xA9\xAE\u2122\xA4\u2116"],
      ["8fa6e1", "\u0386\u0388\u0389\u038A\u03AA"],
      ["8fa6e7", "\u038C"],
      ["8fa6e9", "\u038E\u03AB"],
      ["8fa6ec", "\u038F"],
      ["8fa6f1", "\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"],
      ["8fa7c2", "\u0402", 10, "\u040E\u040F"],
      ["8fa7f2", "\u0452", 10, "\u045E\u045F"],
      ["8fa9a1", "\xC6\u0110"],
      ["8fa9a4", "\u0126"],
      ["8fa9a6", "\u0132"],
      ["8fa9a8", "\u0141\u013F"],
      ["8fa9ab", "\u014A\xD8\u0152"],
      ["8fa9af", "\u0166\xDE"],
      ["8fa9c1", "\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"],
      ["8faaa1", "\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"],
      ["8faaba", "\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"],
      ["8faba1", "\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"],
      ["8fabbd", "\u0121\u0125\xED\xEC\xEF\xEE\u01D0"],
      ["8fabc5", "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"],
      ["8fb0a1", "\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"],
      ["8fb1a1", "\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"],
      ["8fb2a1", "\u5092\u5093\u5094\u5096\u509B\u509C\u509E", 4, "\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"],
      ["8fb3a1", "\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"],
      ["8fb4a1", "\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"],
      ["8fb5a1", "\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"],
      ["8fb6a1", "\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D", 5, "\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4", 4, "\u56F1\u56EB\u56ED"],
      ["8fb7a1", "\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D", 4, "\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"],
      ["8fb8a1", "\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"],
      ["8fb9a1", "\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"],
      ["8fbaa1", "\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6", 4, "\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"],
      ["8fbba1", "\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"],
      ["8fbca1", "\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A", 4, "\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"],
      ["8fbda1", "\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0", 4, "\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"],
      ["8fbea1", "\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110", 4, "\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"],
      ["8fbfa1", "\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"],
      ["8fc0a1", "\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"],
      ["8fc1a1", "\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"],
      ["8fc2a1", "\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"],
      ["8fc3a1", "\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E", 4, "\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"],
      ["8fc4a1", "\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"],
      ["8fc5a1", "\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"],
      ["8fc6a1", "\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"],
      ["8fc7a1", "\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"],
      ["8fc8a1", "\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"],
      ["8fc9a1", "\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094", 4, "\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103", 4, "\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"],
      ["8fcaa1", "\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"],
      ["8fcba1", "\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"],
      ["8fcca1", "\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428", 9, "\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"],
      ["8fcda1", "\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579", 5, "\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"],
      ["8fcea1", "\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2", 6, "\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"],
      ["8fcfa1", "\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"],
      ["8fd0a1", "\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"],
      ["8fd1a1", "\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"],
      ["8fd2a1", "\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59", 5],
      ["8fd3a1", "\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"],
      ["8fd4a1", "\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2", 4, "\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"],
      ["8fd5a1", "\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"],
      ["8fd6a1", "\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"],
      ["8fd7a1", "\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"],
      ["8fd8a1", "\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"],
      ["8fd9a1", "\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F", 4, "\u8556\u8559\u855C", 6, "\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"],
      ["8fdaa1", "\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660", 4, "\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"],
      ["8fdba1", "\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783", 6, "\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"],
      ["8fdca1", "\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA", 4, "\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"],
      ["8fdda1", "\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4", 4, "\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"],
      ["8fdea1", "\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42", 4, "\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"],
      ["8fdfa1", "\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"],
      ["8fe0a1", "\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"],
      ["8fe1a1", "\u8F43\u8F47\u8F4F\u8F51", 4, "\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"],
      ["8fe2a1", "\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"],
      ["8fe3a1", "\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC", 5, "\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275", 4, "\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"],
      ["8fe4a1", "\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF", 4, "\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"],
      ["8fe5a1", "\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9", 4, "\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"],
      ["8fe6a1", "\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"],
      ["8fe7a1", "\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"],
      ["8fe8a1", "\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931", 4, "\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"],
      ["8fe9a1", "\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF", 4],
      ["8feaa1", "\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A", 4, "\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"],
      ["8feba1", "\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26", 4, "\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"],
      ["8feca1", "\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"],
      ["8feda1", "\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43", 4, "\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D", 4, "\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"]
    ];
  }
});

// ../../node_modules/iconv-lite/encodings/tables/cp936.json
var require_cp936 = __commonJS({
  "../../node_modules/iconv-lite/encodings/tables/cp936.json"(exports2, module2) {
    module2.exports = [
      ["0", "\0", 127, "\u20AC"],
      ["8140", "\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A", 5, "\u4E72\u4E74", 9, "\u4E7F", 6, "\u4E87\u4E8A"],
      ["8180", "\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02", 6, "\u4F0B\u4F0C\u4F12", 4, "\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E", 4, "\u4F44\u4F45\u4F47", 5, "\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"],
      ["8240", "\u4FA4\u4FAB\u4FAD\u4FB0", 4, "\u4FB6", 8, "\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2", 4, "\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF", 11],
      ["8280", "\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F", 10, "\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050", 4, "\u5056\u5057\u5058\u5059\u505B\u505D", 7, "\u5066", 5, "\u506D", 8, "\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E", 20, "\u50A4\u50A6\u50AA\u50AB\u50AD", 4, "\u50B3", 6, "\u50BC"],
      ["8340", "\u50BD", 17, "\u50D0", 5, "\u50D7\u50D8\u50D9\u50DB", 10, "\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6", 4, "\u50FC", 9, "\u5108"],
      ["8380", "\u5109\u510A\u510C", 5, "\u5113", 13, "\u5122", 28, "\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D", 4, "\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6", 4, "\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2", 5],
      ["8440", "\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5", 5, "\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244", 5, "\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"],
      ["8480", "\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273", 9, "\u527E\u5280\u5283", 4, "\u5289", 6, "\u5291\u5292\u5294", 6, "\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4", 9, "\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9", 5, "\u52E0\u52E1\u52E2\u52E3\u52E5", 10, "\u52F1", 7, "\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"],
      ["8540", "\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F", 9, "\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"],
      ["8580", "\u5390", 4, "\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF", 6, "\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3", 4, "\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D", 4, "\u5463\u5465\u5467\u5469", 7, "\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"],
      ["8640", "\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0", 4, "\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4", 5, "\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A", 4, "\u5512\u5513\u5515", 5, "\u551C\u551D\u551E\u551F\u5521\u5525\u5526"],
      ["8680", "\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B", 4, "\u5551\u5552\u5553\u5554\u5557", 4, "\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F", 5, "\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0", 6, "\u55A8", 8, "\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF", 4, "\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7", 4, "\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8", 4, "\u55FF\u5602\u5603\u5604\u5605"],
      ["8740", "\u5606\u5607\u560A\u560B\u560D\u5610", 7, "\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640", 11, "\u564F", 4, "\u5655\u5656\u565A\u565B\u565D", 4],
      ["8780", "\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D", 7, "\u5687", 6, "\u5690\u5691\u5692\u5694", 14, "\u56A4", 10, "\u56B0", 6, "\u56B8\u56B9\u56BA\u56BB\u56BD", 12, "\u56CB", 8, "\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5", 5, "\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B", 6],
      ["8840", "\u5712", 9, "\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734", 4, "\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752", 4, "\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"],
      ["8880", "\u5781\u5787\u5788\u5789\u578A\u578D", 4, "\u5794", 6, "\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9", 8, "\u57C4", 6, "\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5", 7, "\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825", 4, "\u582B", 4, "\u5831\u5832\u5833\u5834\u5836", 7],
      ["8940", "\u583E", 5, "\u5845", 6, "\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859", 4, "\u585F", 5, "\u5866", 4, "\u586D", 16, "\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"],
      ["8980", "\u588D", 4, "\u5894", 4, "\u589B\u589C\u589D\u58A0", 7, "\u58AA", 17, "\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6", 10, "\u58D2\u58D3\u58D4\u58D6", 13, "\u58E5", 5, "\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA", 7, "\u5903\u5905\u5906\u5908", 4, "\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"],
      ["8a40", "\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B", 4, "\u5961\u5963\u5964\u5966", 12, "\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"],
      ["8a80", "\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3", 5, "\u59BA\u59BC\u59BD\u59BF", 6, "\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE", 4, "\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED", 11, "\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A", 6, "\u5A33\u5A35\u5A37", 4, "\u5A3D\u5A3E\u5A3F\u5A41", 4, "\u5A47\u5A48\u5A4B", 9, "\u5A56\u5A57\u5A58\u5A59\u5A5B", 5],
      ["8b40", "\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B", 8, "\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80", 17, "\u5A93", 6, "\u5A9C", 13, "\u5AAB\u5AAC"],
      ["8b80", "\u5AAD", 4, "\u5AB4\u5AB6\u5AB7\u5AB9", 4, "\u5ABF\u5AC0\u5AC3", 5, "\u5ACA\u5ACB\u5ACD", 4, "\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC", 4, "\u5AF2", 22, "\u5B0A", 11, "\u5B18", 25, "\u5B33\u5B35\u5B36\u5B38", 7, "\u5B41", 6],
      ["8c40", "\u5B48", 7, "\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"],
      ["8c80", "\u5BD1\u5BD4", 8, "\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9", 4, "\u5BEF\u5BF1", 6, "\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67", 6, "\u5C70\u5C72", 6, "\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83", 4, "\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D", 4, "\u5CA4", 4],
      ["8d40", "\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5", 5, "\u5CCC", 5, "\u5CD3", 5, "\u5CDA", 6, "\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1", 9, "\u5CFC", 4],
      ["8d80", "\u5D01\u5D04\u5D05\u5D08", 5, "\u5D0F", 4, "\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F", 4, "\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F", 4, "\u5D35", 7, "\u5D3F", 7, "\u5D48\u5D49\u5D4D", 10, "\u5D59\u5D5A\u5D5C\u5D5E", 10, "\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75", 12, "\u5D83", 21, "\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"],
      ["8e40", "\u5DA1", 21, "\u5DB8", 12, "\u5DC6", 6, "\u5DCE", 12, "\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"],
      ["8e80", "\u5DF0\u5DF5\u5DF6\u5DF8", 4, "\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E", 7, "\u5E28", 4, "\u5E2F\u5E30\u5E32", 4, "\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46", 5, "\u5E4D", 6, "\u5E56", 4, "\u5E5C\u5E5D\u5E5F\u5E60\u5E63", 14, "\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8", 4, "\u5EAE", 4, "\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF", 6],
      ["8f40", "\u5EC6\u5EC7\u5EC8\u5ECB", 5, "\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC", 11, "\u5EE9\u5EEB", 8, "\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"],
      ["8f80", "\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32", 6, "\u5F3B\u5F3D\u5F3E\u5F3F\u5F41", 14, "\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2", 5, "\u5FA9\u5FAB\u5FAC\u5FAF", 5, "\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE", 4, "\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"],
      ["9040", "\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030", 4, "\u6036", 4, "\u603D\u603E\u6040\u6044", 6, "\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"],
      ["9080", "\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD", 7, "\u60C7\u60C8\u60C9\u60CC", 4, "\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1", 4, "\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB", 4, "\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110", 4, "\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C", 18, "\u6140", 6],
      ["9140", "\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156", 6, "\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169", 6, "\u6171\u6172\u6173\u6174\u6176\u6178", 18, "\u618C\u618D\u618F", 4, "\u6195"],
      ["9180", "\u6196", 6, "\u619E", 8, "\u61AA\u61AB\u61AD", 9, "\u61B8", 5, "\u61BF\u61C0\u61C1\u61C3", 4, "\u61C9\u61CC", 4, "\u61D3\u61D5", 16, "\u61E7", 13, "\u61F6", 8, "\u6200", 5, "\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238", 4, "\u6242\u6244\u6245\u6246\u624A"],
      ["9240", "\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C", 6, "\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B", 5, "\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"],
      ["9280", "\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333", 5, "\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356", 7, "\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399", 6, "\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"],
      ["9340", "\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7", 6, "\u63DF\u63E2\u63E4", 4, "\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406", 4, "\u640D\u640E\u6411\u6412\u6415", 5, "\u641D\u641F\u6422\u6423\u6424"],
      ["9380", "\u6425\u6427\u6428\u6429\u642B\u642E", 5, "\u6435", 4, "\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B", 6, "\u6453\u6455\u6456\u6457\u6459", 4, "\u645F", 7, "\u6468\u646A\u646B\u646C\u646E", 9, "\u647B", 6, "\u6483\u6486\u6488", 8, "\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F", 4, "\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6", 6, "\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"],
      ["9440", "\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7", 24, "\u6501", 7, "\u650A", 7, "\u6513", 4, "\u6519", 8],
      ["9480", "\u6522\u6523\u6524\u6526", 4, "\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540", 4, "\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578", 14, "\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1", 7, "\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8", 7, "\u65E1\u65E3\u65E4\u65EA\u65EB"],
      ["9540", "\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB", 4, "\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637", 4, "\u663D\u663F\u6640\u6642\u6644", 6, "\u664D\u664E\u6650\u6651\u6658"],
      ["9580", "\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669", 4, "\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698", 4, "\u669E", 8, "\u66A9", 4, "\u66AF", 4, "\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF", 25, "\u66DA\u66DE", 7, "\u66E7\u66E8\u66EA", 5, "\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"],
      ["9640", "\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720", 5, "\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757", 4, "\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"],
      ["9680", "\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9", 7, "\u67C2\u67C5", 9, "\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5", 7, "\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818", 4, "\u681E\u681F\u6820\u6822", 6, "\u682B", 6, "\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856", 5],
      ["9740", "\u685C\u685D\u685E\u685F\u686A\u686C", 7, "\u6875\u6878", 8, "\u6882\u6884\u6887", 7, "\u6890\u6891\u6892\u6894\u6895\u6896\u6898", 9, "\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"],
      ["9780", "\u68B9", 6, "\u68C1\u68C3", 5, "\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB", 4, "\u68E1\u68E2\u68E4", 9, "\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906", 4, "\u690C\u690F\u6911\u6913", 11, "\u6921\u6922\u6923\u6925", 7, "\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943", 16, "\u6955\u6956\u6958\u6959\u695B\u695C\u695F"],
      ["9840", "\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972", 4, "\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E", 5, "\u6996\u6997\u6999\u699A\u699D", 9, "\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"],
      ["9880", "\u69BE\u69BF\u69C0\u69C2", 7, "\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5", 5, "\u69DC\u69DD\u69DE\u69E1", 11, "\u69EE\u69EF\u69F0\u69F1\u69F3", 9, "\u69FE\u6A00", 9, "\u6A0B", 11, "\u6A19", 5, "\u6A20\u6A22", 5, "\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36", 6, "\u6A3F", 4, "\u6A45\u6A46\u6A48", 7, "\u6A51", 6, "\u6A5A"],
      ["9940", "\u6A5C", 4, "\u6A62\u6A63\u6A64\u6A66", 10, "\u6A72", 6, "\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85", 8, "\u6A8F\u6A92", 4, "\u6A98", 7, "\u6AA1", 5],
      ["9980", "\u6AA7\u6AA8\u6AAA\u6AAD", 114, "\u6B25\u6B26\u6B28", 6],
      ["9a40", "\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D", 11, "\u6B5A", 7, "\u6B68\u6B69\u6B6B", 13, "\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"],
      ["9a80", "\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C", 4, "\u6BA2", 7, "\u6BAB", 7, "\u6BB6\u6BB8", 6, "\u6BC0\u6BC3\u6BC4\u6BC6", 4, "\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC", 4, "\u6BE2", 7, "\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE", 6, "\u6C08", 4, "\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B", 4, "\u6C51\u6C52\u6C53\u6C56\u6C58"],
      ["9b40", "\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B", 4, "\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"],
      ["9b80", "\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F", 5, "\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D", 4, "\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96", 4, "\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9", 5, "\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"],
      ["9c40", "\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD", 7, "\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"],
      ["9c80", "\u6E36\u6E37\u6E39\u6E3B", 7, "\u6E45", 7, "\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60", 10, "\u6E6C\u6E6D\u6E6F", 14, "\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A", 4, "\u6E91", 6, "\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA", 5],
      ["9d40", "\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA", 7, "\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A", 4, "\u6F10\u6F11\u6F12\u6F16", 9, "\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37", 6, "\u6F3F\u6F40\u6F41\u6F42"],
      ["9d80", "\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E", 9, "\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67", 5, "\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D", 6, "\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F", 12, "\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2", 4, "\u6FA8", 10, "\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA", 5, "\u6FC1\u6FC3", 5, "\u6FCA", 6, "\u6FD3", 10, "\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"],
      ["9e40", "\u6FE6", 7, "\u6FF0", 32, "\u7012", 7, "\u701C", 6, "\u7024", 6],
      ["9e80", "\u702B", 9, "\u7036\u7037\u7038\u703A", 17, "\u704D\u704E\u7050", 13, "\u705F", 11, "\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E", 12, "\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB", 12, "\u70DA"],
      ["9f40", "\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0", 6, "\u70F8\u70FA\u70FB\u70FC\u70FE", 10, "\u710B", 4, "\u7111\u7112\u7114\u7117\u711B", 10, "\u7127", 7, "\u7132\u7133\u7134"],
      ["9f80", "\u7135\u7137", 13, "\u7146\u7147\u7148\u7149\u714B\u714D\u714F", 12, "\u715D\u715F", 4, "\u7165\u7169", 4, "\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E", 5, "\u7185", 4, "\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A", 4, "\u71A1", 6, "\u71A9\u71AA\u71AB\u71AD", 5, "\u71B4\u71B6\u71B7\u71B8\u71BA", 8, "\u71C4", 9, "\u71CF", 4],
      ["a040", "\u71D6", 9, "\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8", 5, "\u71EF", 9, "\u71FA", 11, "\u7207", 19],
      ["a080", "\u721B\u721C\u721E", 9, "\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240", 6, "\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285", 4, "\u728C\u728E\u7290\u7291\u7293", 11, "\u72A0", 11, "\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA", 6, "\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"],
      ["a1a1", "\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 7, "\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"],
      ["a2a1", "\u2170", 9],
      ["a2b1", "\u2488", 19, "\u2474", 19, "\u2460", 9],
      ["a2e5", "\u3220", 9],
      ["a2f1", "\u2160", 11],
      ["a3a1", "\uFF01\uFF02\uFF03\uFFE5\uFF05", 88, "\uFFE3"],
      ["a4a1", "\u3041", 82],
      ["a5a1", "\u30A1", 85],
      ["a6a1", "\u0391", 16, "\u03A3", 6],
      ["a6c1", "\u03B1", 16, "\u03C3", 6],
      ["a6e0", "\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"],
      ["a6ee", "\uFE3B\uFE3C\uFE37\uFE38\uFE31"],
      ["a6f4", "\uFE33\uFE34"],
      ["a7a1", "\u0410", 5, "\u0401\u0416", 25],
      ["a7d1", "\u0430", 5, "\u0451\u0436", 25],
      ["a840", "\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550", 35, "\u2581", 6],
      ["a880", "\u2588", 7, "\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"],
      ["a8a1", "\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"],
      ["a8bd", "\u0144\u0148"],
      ["a8c0", "\u0261"],
      ["a8c5", "\u3105", 36],
      ["a940", "\u3021", 8, "\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"],
      ["a959", "\u2121\u3231"],
      ["a95c", "\u2010"],
      ["a960", "\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49", 9, "\uFE54\uFE55\uFE56\uFE57\uFE59", 8],
      ["a980", "\uFE62", 4, "\uFE68\uFE69\uFE6A\uFE6B"],
      ["a996", "\u3007"],
      ["a9a4", "\u2500", 75],
      ["aa40", "\u72DC\u72DD\u72DF\u72E2", 5, "\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304", 5, "\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340", 8],
      ["aa80", "\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358", 7, "\u7361", 10, "\u736E\u7370\u7371"],
      ["ab40", "\u7372", 11, "\u737F", 4, "\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3", 5, "\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3", 4],
      ["ab80", "\u73CB\u73CC\u73CE\u73D2", 6, "\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3", 4],
      ["ac40", "\u73F8", 10, "\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411", 8, "\u741C", 5, "\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437", 4, "\u743D\u743E\u743F\u7440\u7442", 11],
      ["ac80", "\u744E", 6, "\u7456\u7458\u745D\u7460", 12, "\u746E\u746F\u7471", 4, "\u7478\u7479\u747A"],
      ["ad40", "\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491", 10, "\u749D\u749F", 7, "\u74AA", 15, "\u74BB", 12],
      ["ad80", "\u74C8", 9, "\u74D3", 8, "\u74DD\u74DF\u74E1\u74E5\u74E7", 6, "\u74F0\u74F1\u74F2"],
      ["ae40", "\u74F3\u74F5\u74F8", 6, "\u7500\u7501\u7502\u7503\u7505", 7, "\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520", 4, "\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"],
      ["ae80", "\u755D", 7, "\u7567\u7568\u7569\u756B", 6, "\u7573\u7575\u7576\u7577\u757A", 4, "\u7580\u7581\u7582\u7584\u7585\u7587"],
      ["af40", "\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6", 4, "\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"],
      ["af80", "\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"],
      ["b040", "\u7645", 6, "\u764E", 5, "\u7655\u7657", 4, "\u765D\u765F\u7660\u7661\u7662\u7664", 6, "\u766C\u766D\u766E\u7670", 7, "\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"],
      ["b080", "\u769C", 7, "\u76A5", 8, "\u76AF\u76B0\u76B3\u76B5", 9, "\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"],
      ["b140", "\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0", 4, "\u76E6", 7, "\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E", 10, "\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"],
      ["b180", "\u772C\u772E\u7730", 4, "\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748", 7, "\u7752", 7, "\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"],
      ["b240", "\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D", 11, "\u777A\u777B\u777C\u7781\u7782\u7783\u7786", 5, "\u778F\u7790\u7793", 11, "\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6", 4],
      ["b280", "\u77BC\u77BE\u77C0", 12, "\u77CE", 8, "\u77D8\u77D9\u77DA\u77DD", 4, "\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"],
      ["b340", "\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803", 5, "\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"],
      ["b380", "\u785B\u785C\u785E", 11, "\u786F", 7, "\u7878\u7879\u787A\u787B\u787D", 6, "\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"],
      ["b440", "\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8", 7, "\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA", 9],
      ["b480", "\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED", 4, "\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB", 5, "\u7902\u7903\u7904\u7906", 6, "\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"],
      ["b540", "\u790D", 5, "\u7914", 9, "\u791F", 4, "\u7925", 14, "\u7935", 4, "\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A", 8, "\u7954\u7955\u7958\u7959\u7961\u7963"],
      ["b580", "\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970", 6, "\u7979\u797B", 4, "\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"],
      ["b640", "\u7993", 6, "\u799B", 11, "\u79A8", 10, "\u79B4", 4, "\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9", 5, "\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"],
      ["b680", "\u79EC\u79EE\u79F1", 6, "\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F", 4, "\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"],
      ["b740", "\u7A1D\u7A1F\u7A21\u7A22\u7A24", 14, "\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40", 5, "\u7A47", 9, "\u7A52", 4, "\u7A58", 16],
      ["b780", "\u7A69", 6, "\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"],
      ["b840", "\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE", 4, "\u7AB4", 10, "\u7AC0", 10, "\u7ACC", 9, "\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7", 5, "\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"],
      ["b880", "\u7AF4", 4, "\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"],
      ["b940", "\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F", 5, "\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63", 10, "\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86", 6, "\u7B8E\u7B8F"],
      ["b980", "\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9", 7, "\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"],
      ["ba40", "\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4", 4, "\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2", 4, "\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF", 7, "\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10", 5, "\u7C17\u7C18\u7C19"],
      ["ba80", "\u7C1A", 4, "\u7C20", 5, "\u7C28\u7C29\u7C2B", 12, "\u7C39", 5, "\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"],
      ["bb40", "\u7C43", 9, "\u7C4E", 36, "\u7C75", 5, "\u7C7E", 9],
      ["bb80", "\u7C88\u7C8A", 6, "\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4", 4, "\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"],
      ["bc40", "\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE", 6, "\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1", 6, "\u7CE9", 5, "\u7CF0", 7, "\u7CF9\u7CFA\u7CFC", 13, "\u7D0B", 5],
      ["bc80", "\u7D11", 14, "\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30", 6, "\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"],
      ["bd40", "\u7D37", 54, "\u7D6F", 7],
      ["bd80", "\u7D78", 32, "\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"],
      ["be40", "\u7D99", 12, "\u7DA7", 6, "\u7DAF", 42],
      ["be80", "\u7DDA", 32, "\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"],
      ["bf40", "\u7DFB", 62],
      ["bf80", "\u7E3A\u7E3C", 4, "\u7E42", 4, "\u7E48", 21, "\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"],
      ["c040", "\u7E5E", 35, "\u7E83", 23, "\u7E9C\u7E9D\u7E9E"],
      ["c080", "\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B", 6, "\u7F43\u7F46", 9, "\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"],
      ["c140", "\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63", 4, "\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82", 7, "\u7F8B\u7F8D\u7F8F", 4, "\u7F95", 4, "\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8", 6, "\u7FB1"],
      ["c180", "\u7FB3", 4, "\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF", 4, "\u7FD6\u7FD7\u7FD9", 5, "\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"],
      ["c240", "\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4", 6, "\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B", 5, "\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"],
      ["c280", "\u8059\u805B", 13, "\u806B", 5, "\u8072", 11, "\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"],
      ["c340", "\u807E\u8081\u8082\u8085\u8088\u808A\u808D", 5, "\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7", 4, "\u80CF", 6, "\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"],
      ["c380", "\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F", 12, "\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139", 4, "\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"],
      ["c440", "\u8140", 5, "\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B", 4, "\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183", 4, "\u8189\u818B\u818C\u818D\u818E\u8190\u8192", 5, "\u8199\u819A\u819E", 4, "\u81A4\u81A5"],
      ["c480", "\u81A7\u81A9\u81AB", 7, "\u81B4", 5, "\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD", 6, "\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"],
      ["c540", "\u81D4", 14, "\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE", 4, "\u81F5", 5, "\u81FD\u81FF\u8203\u8207", 4, "\u820E\u820F\u8211\u8213\u8215", 5, "\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"],
      ["c580", "\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250", 7, "\u8259\u825B\u825C\u825D\u825E\u8260", 7, "\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"],
      ["c640", "\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"],
      ["c680", "\u82FA\u82FC", 4, "\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D", 9, "\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"],
      ["c740", "\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A", 4, "\u8353\u8355", 4, "\u835D\u8362\u8370", 6, "\u8379\u837A\u837E", 6, "\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1", 6, "\u83AC\u83AD\u83AE"],
      ["c780", "\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"],
      ["c840", "\u83EE\u83EF\u83F3", 4, "\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412", 5, "\u8419\u841A\u841B\u841E", 5, "\u8429", 7, "\u8432", 5, "\u8439\u843A\u843B\u843E", 7, "\u8447\u8448\u8449"],
      ["c880", "\u844A", 6, "\u8452", 4, "\u8458\u845D\u845E\u845F\u8460\u8462\u8464", 4, "\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"],
      ["c940", "\u847D", 4, "\u8483\u8484\u8485\u8486\u848A\u848D\u848F", 7, "\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2", 12, "\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"],
      ["c980", "\u84D8", 4, "\u84DE\u84E1\u84E2\u84E4\u84E7", 4, "\u84ED\u84EE\u84EF\u84F1", 10, "\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"],
      ["ca40", "\u8503", 8, "\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522", 8, "\u852D", 9, "\u853E", 4, "\u8544\u8545\u8546\u8547\u854B", 10],
      ["ca80", "\u8557\u8558\u855A\u855B\u855C\u855D\u855F", 4, "\u8565\u8566\u8567\u8569", 8, "\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"],
      ["cb40", "\u8582\u8583\u8586\u8588", 6, "\u8590", 10, "\u859D", 6, "\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1", 5, "\u85B8\u85BA", 6, "\u85C2", 6, "\u85CA", 4, "\u85D1\u85D2"],
      ["cb80", "\u85D4\u85D6", 5, "\u85DD", 6, "\u85E5\u85E6\u85E7\u85E8\u85EA", 14, "\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"],
      ["cc40", "\u85F9\u85FA\u85FC\u85FD\u85FE\u8600", 4, "\u8606", 10, "\u8612\u8613\u8614\u8615\u8617", 15, "\u8628\u862A", 13, "\u8639\u863A\u863B\u863D\u863E\u863F\u8640"],
      ["cc80", "\u8641", 11, "\u8652\u8653\u8655", 4, "\u865B\u865C\u865D\u865F\u8660\u8661\u8663", 7, "\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"],
      ["cd40", "\u866D\u866F\u8670\u8672", 6, "\u8683", 6, "\u868E", 4, "\u8694\u8696", 5, "\u869E", 4, "\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB", 4, "\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"],
      ["cd80", "\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"],
      ["ce40", "\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740", 6, "\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A", 5, "\u8761\u8762\u8766", 7, "\u876F\u8771\u8772\u8773\u8775"],
      ["ce80", "\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E", 4, "\u8794\u8795\u8796\u8798", 6, "\u87A0", 4, "\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"],
      ["cf40", "\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1", 4, "\u87C7\u87C8\u87C9\u87CC", 4, "\u87D4", 6, "\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF", 9],
      ["cf80", "\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804", 5, "\u880B", 7, "\u8814\u8817\u8818\u8819\u881A\u881C", 4, "\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"],
      ["d040", "\u8824", 13, "\u8833", 5, "\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846", 5, "\u884E", 5, "\u8855\u8856\u8858\u885A", 6, "\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"],
      ["d080", "\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897", 4, "\u889D", 4, "\u88A3\u88A5", 5, "\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"],
      ["d140", "\u88AC\u88AE\u88AF\u88B0\u88B2", 4, "\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA", 4, "\u88E0\u88E1\u88E6\u88E7\u88E9", 6, "\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903", 5],
      ["d180", "\u8909\u890B", 4, "\u8911\u8914", 4, "\u891C", 4, "\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"],
      ["d240", "\u8938", 8, "\u8942\u8943\u8945", 24, "\u8960", 5, "\u8967", 19, "\u897C"],
      ["d280", "\u897D\u897E\u8980\u8982\u8984\u8985\u8987", 26, "\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"],
      ["d340", "\u89A2", 30, "\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4", 6],
      ["d380", "\u89FB", 4, "\u8A01", 5, "\u8A08", 21, "\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"],
      ["d440", "\u8A1E", 31, "\u8A3F", 8, "\u8A49", 21],
      ["d480", "\u8A5F", 25, "\u8A7A", 6, "\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"],
      ["d540", "\u8A81", 7, "\u8A8B", 7, "\u8A94", 46],
      ["d580", "\u8AC3", 32, "\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"],
      ["d640", "\u8AE4", 34, "\u8B08", 27],
      ["d680", "\u8B24\u8B25\u8B27", 30, "\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"],
      ["d740", "\u8B46", 31, "\u8B67", 4, "\u8B6D", 25],
      ["d780", "\u8B87", 24, "\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"],
      ["d840", "\u8C38", 8, "\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D", 7, "\u8C56\u8C57\u8C58\u8C59\u8C5B", 5, "\u8C63", 6, "\u8C6C", 6, "\u8C74\u8C75\u8C76\u8C77\u8C7B", 6, "\u8C83\u8C84\u8C86\u8C87"],
      ["d880", "\u8C88\u8C8B\u8C8D", 6, "\u8C95\u8C96\u8C97\u8C99", 20, "\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"],
      ["d940", "\u8CAE", 62],
      ["d980", "\u8CED", 32, "\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"],
      ["da40", "\u8D0E", 14, "\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78", 8, "\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C", 4, "\u8D92\u8D93\u8D95", 9, "\u8DA0\u8DA1"],
      ["da80", "\u8DA2\u8DA4", 12, "\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"],
      ["db40", "\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE", 6, "\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15", 7, "\u8E20\u8E21\u8E24", 4, "\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"],
      ["db80", "\u8E3F\u8E43\u8E45\u8E46\u8E4C", 4, "\u8E53", 5, "\u8E5A", 11, "\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"],
      ["dc40", "\u8E73\u8E75\u8E77", 4, "\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88", 6, "\u8E91\u8E92\u8E93\u8E95", 6, "\u8E9D\u8E9F", 11, "\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3", 6, "\u8EBB", 7],
      ["dc80", "\u8EC3", 10, "\u8ECF", 21, "\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"],
      ["dd40", "\u8EE5", 62],
      ["dd80", "\u8F24", 32, "\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"],
      ["de40", "\u8F45", 32, "\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"],
      ["de80", "\u8FC9", 4, "\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"],
      ["df40", "\u9019\u901C\u9023\u9024\u9025\u9027", 5, "\u9030", 4, "\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048", 4, "\u904E\u9054\u9055\u9056\u9059\u905A\u905C", 5, "\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F", 4, "\u9076", 6, "\u907E\u9081"],
      ["df80", "\u9084\u9085\u9086\u9087\u9089\u908A\u908C", 4, "\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"],
      ["e040", "\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105", 19, "\u911A\u911B\u911C"],
      ["e080", "\u911D\u911F\u9120\u9121\u9124", 10, "\u9130\u9132", 6, "\u913A", 8, "\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"],
      ["e140", "\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180", 4, "\u9186\u9188\u918A\u918E\u918F\u9193", 6, "\u919C", 5, "\u91A4", 5, "\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"],
      ["e180", "\u91BC", 10, "\u91C8\u91CB\u91D0\u91D2", 9, "\u91DD", 8, "\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"],
      ["e240", "\u91E6", 62],
      ["e280", "\u9225", 32, "\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967", 5, "\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"],
      ["e340", "\u9246", 45, "\u9275", 16],
      ["e380", "\u9286", 7, "\u928F", 24, "\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"],
      ["e440", "\u92A8", 5, "\u92AF", 24, "\u92C9", 31],
      ["e480", "\u92E9", 32, "\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"],
      ["e540", "\u930A", 51, "\u933F", 10],
      ["e580", "\u934A", 31, "\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"],
      ["e640", "\u936C", 34, "\u9390", 27],
      ["e680", "\u93AC", 29, "\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"],
      ["e740", "\u93CE", 7, "\u93D7", 54],
      ["e780", "\u940E", 32, "\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21", 6, "\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F", 4, "\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"],
      ["e840", "\u942F", 14, "\u943F", 43, "\u946C\u946D\u946E\u946F"],
      ["e880", "\u9470", 20, "\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"],
      ["e940", "\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577", 7, "\u9580", 42],
      ["e980", "\u95AB", 32, "\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"],
      ["ea40", "\u95CC", 27, "\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623", 6, "\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"],
      ["ea80", "\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D", 4, "\u9673\u9678", 12, "\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"],
      ["eb40", "\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D", 9, "\u96A8", 7, "\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6", 9, "\u96E1", 6, "\u96EB"],
      ["eb80", "\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717", 4, "\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"],
      ["ec40", "\u9721", 8, "\u972B\u972C\u972E\u972F\u9731\u9733", 4, "\u973A\u973B\u973C\u973D\u973F", 18, "\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A", 7],
      ["ec80", "\u9772\u9775\u9777", 4, "\u977D", 7, "\u9786", 4, "\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799", 4, "\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"],
      ["ed40", "\u979E\u979F\u97A1\u97A2\u97A4", 6, "\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5", 46],
      ["ed80", "\u97E4\u97E5\u97E8\u97EE", 4, "\u97F4\u97F7", 23, "\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"],
      ["ee40", "\u980F", 62],
      ["ee80", "\u984E", 32, "\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6", 4, "\u94BC\u94BD\u94BF\u94C4\u94C8", 6, "\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"],
      ["ef40", "\u986F", 5, "\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8", 37, "\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0", 4],
      ["ef80", "\u98E5\u98E6\u98E9", 30, "\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512", 4, "\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564", 8, "\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"],
      ["f040", "\u9908", 4, "\u990E\u990F\u9911", 28, "\u992F", 26],
      ["f080", "\u994A", 9, "\u9956", 12, "\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28", 4, "\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66", 6, "\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"],
      ["f140", "\u998C\u998E\u999A", 10, "\u99A6\u99A7\u99A9", 47],
      ["f180", "\u99D9", 32, "\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"],
      ["f240", "\u99FA", 62],
      ["f280", "\u9A39", 32, "\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"],
      ["f340", "\u9A5A", 17, "\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9", 6, "\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6", 4, "\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"],
      ["f380", "\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0", 8, "\u9AFA\u9AFC", 6, "\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"],
      ["f440", "\u9B07\u9B09", 5, "\u9B10\u9B11\u9B12\u9B14", 10, "\u9B20\u9B21\u9B22\u9B24", 10, "\u9B30\u9B31\u9B33", 7, "\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55", 5],
      ["f480", "\u9B5B", 32, "\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"],
      ["f540", "\u9B7C", 62],
      ["f580", "\u9BBB", 32, "\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"],
      ["f640", "\u9BDC", 62],
      ["f680", "\u9C1B", 32, "\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85", 5, "\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E", 5, "\u9CA5", 4, "\u9CAB\u9CAD\u9CAE\u9CB0", 7, "\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"],
      ["f740", "\u9C3C", 62],
      ["f780", "\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE", 4, "\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC", 4, "\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"],
      ["f840", "\u9CE3", 62],
      ["f880", "\u9D22", 32],
      ["f940", "\u9D43", 62],
      ["f980", "\u9D82", 32],
      ["fa40", "\u9DA3", 62],
      ["fa80", "\u9DE2", 32],
      ["fb40", "\u9E03", 27, "\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74", 9, "\u9E80"],
      ["fb80", "\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C", 5, "\u9E94", 8, "\u9E9E\u9EA0", 5, "\u9EA7\u9EA8\u9EA9\u9EAA"],
      ["fc40", "\u9EAB", 8, "\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF", 4, "\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0", 8, "\u9EFA\u9EFD\u9EFF", 6],
      ["fc80", "\u9F06", 4, "\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A", 5, "\u9F21\u9F23", 8, "\u9F2D\u9F2E\u9F30\u9F31"],
      ["fd40", "\u9F32", 4, "\u9F38\u9F3A\u9F3C\u9F3F", 4, "\u9F45", 10, "\u9F52", 38],
      ["fd80", "\u9F79", 5, "\u9F81\u9F82\u9F8D", 11, "\u9F9C\u9F9D\u9F9E\u9FA1", 4, "\uF92C\uF979\uF995\uF9E7\uF9F1"],
      ["fe40", "\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"]
    ];
  }
});

// ../../node_modules/iconv-lite/encodings/tables/gbk-added.json
var require_gbk_added = __commonJS({
  "../../node_modules/iconv-lite/encodings/tables/gbk-added.json"(exports2, module2) {
    module2.exports = [
      ["a140", "\uE4C6", 62],
      ["a180", "\uE505", 32],
      ["a240", "\uE526", 62],
      ["a280", "\uE565", 32],
      ["a2ab", "\uE766", 5],
      ["a2e3", "\u20AC\uE76D"],
      ["a2ef", "\uE76E\uE76F"],
      ["a2fd", "\uE770\uE771"],
      ["a340", "\uE586", 62],
      ["a380", "\uE5C5", 31, "\u3000"],
      ["a440", "\uE5E6", 62],
      ["a480", "\uE625", 32],
      ["a4f4", "\uE772", 10],
      ["a540", "\uE646", 62],
      ["a580", "\uE685", 32],
      ["a5f7", "\uE77D", 7],
      ["a640", "\uE6A6", 62],
      ["a680", "\uE6E5", 32],
      ["a6b9", "\uE785", 7],
      ["a6d9", "\uE78D", 6],
      ["a6ec", "\uE794\uE795"],
      ["a6f3", "\uE796"],
      ["a6f6", "\uE797", 8],
      ["a740", "\uE706", 62],
      ["a780", "\uE745", 32],
      ["a7c2", "\uE7A0", 14],
      ["a7f2", "\uE7AF", 12],
      ["a896", "\uE7BC", 10],
      ["a8bc", "\uE7C7"],
      ["a8bf", "\u01F9"],
      ["a8c1", "\uE7C9\uE7CA\uE7CB\uE7CC"],
      ["a8ea", "\uE7CD", 20],
      ["a958", "\uE7E2"],
      ["a95b", "\uE7E3"],
      ["a95d", "\uE7E4\uE7E5\uE7E6"],
      ["a989", "\u303E\u2FF0", 11],
      ["a997", "\uE7F4", 12],
      ["a9f0", "\uE801", 14],
      ["aaa1", "\uE000", 93],
      ["aba1", "\uE05E", 93],
      ["aca1", "\uE0BC", 93],
      ["ada1", "\uE11A", 93],
      ["aea1", "\uE178", 93],
      ["afa1", "\uE1D6", 93],
      ["d7fa", "\uE810", 4],
      ["f8a1", "\uE234", 93],
      ["f9a1", "\uE292", 93],
      ["faa1", "\uE2F0", 93],
      ["fba1", "\uE34E", 93],
      ["fca1", "\uE3AC", 93],
      ["fda1", "\uE40A", 93],
      ["fe50", "\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"],
      ["fe80", "\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13", 6, "\u4DAE\uE864\uE468", 93]
    ];
  }
});

// ../../node_modules/iconv-lite/encodings/tables/gb18030-ranges.json
var require_gb18030_ranges = __commonJS({
  "../../node_modules/iconv-lite/encodings/tables/gb18030-ranges.json"(exports2, module2) {
    module2.exports = { uChars: [128, 165, 169, 178, 184, 216, 226, 235, 238, 244, 248, 251, 253, 258, 276, 284, 300, 325, 329, 334, 364, 463, 465, 467, 469, 471, 473, 475, 477, 506, 594, 610, 712, 716, 730, 930, 938, 962, 970, 1026, 1104, 1106, 8209, 8215, 8218, 8222, 8231, 8241, 8244, 8246, 8252, 8365, 8452, 8454, 8458, 8471, 8482, 8556, 8570, 8596, 8602, 8713, 8720, 8722, 8726, 8731, 8737, 8740, 8742, 8748, 8751, 8760, 8766, 8777, 8781, 8787, 8802, 8808, 8816, 8854, 8858, 8870, 8896, 8979, 9322, 9372, 9548, 9588, 9616, 9622, 9634, 9652, 9662, 9672, 9676, 9680, 9702, 9735, 9738, 9793, 9795, 11906, 11909, 11913, 11917, 11928, 11944, 11947, 11951, 11956, 11960, 11964, 11979, 12284, 12292, 12312, 12319, 12330, 12351, 12436, 12447, 12535, 12543, 12586, 12842, 12850, 12964, 13200, 13215, 13218, 13253, 13263, 13267, 13270, 13384, 13428, 13727, 13839, 13851, 14617, 14703, 14801, 14816, 14964, 15183, 15471, 15585, 16471, 16736, 17208, 17325, 17330, 17374, 17623, 17997, 18018, 18212, 18218, 18301, 18318, 18760, 18811, 18814, 18820, 18823, 18844, 18848, 18872, 19576, 19620, 19738, 19887, 40870, 59244, 59336, 59367, 59413, 59417, 59423, 59431, 59437, 59443, 59452, 59460, 59478, 59493, 63789, 63866, 63894, 63976, 63986, 64016, 64018, 64021, 64025, 64034, 64037, 64042, 65074, 65093, 65107, 65112, 65127, 65132, 65375, 65510, 65536], gbChars: [0, 36, 38, 45, 50, 81, 89, 95, 96, 100, 103, 104, 105, 109, 126, 133, 148, 172, 175, 179, 208, 306, 307, 308, 309, 310, 311, 312, 313, 341, 428, 443, 544, 545, 558, 741, 742, 749, 750, 805, 819, 820, 7922, 7924, 7925, 7927, 7934, 7943, 7944, 7945, 7950, 8062, 8148, 8149, 8152, 8164, 8174, 8236, 8240, 8262, 8264, 8374, 8380, 8381, 8384, 8388, 8390, 8392, 8393, 8394, 8396, 8401, 8406, 8416, 8419, 8424, 8437, 8439, 8445, 8482, 8485, 8496, 8521, 8603, 8936, 8946, 9046, 9050, 9063, 9066, 9076, 9092, 9100, 9108, 9111, 9113, 9131, 9162, 9164, 9218, 9219, 11329, 11331, 11334, 11336, 11346, 11361, 11363, 11366, 11370, 11372, 11375, 11389, 11682, 11686, 11687, 11692, 11694, 11714, 11716, 11723, 11725, 11730, 11736, 11982, 11989, 12102, 12336, 12348, 12350, 12384, 12393, 12395, 12397, 12510, 12553, 12851, 12962, 12973, 13738, 13823, 13919, 13933, 14080, 14298, 14585, 14698, 15583, 15847, 16318, 16434, 16438, 16481, 16729, 17102, 17122, 17315, 17320, 17402, 17418, 17859, 17909, 17911, 17915, 17916, 17936, 17939, 17961, 18664, 18703, 18814, 18962, 19043, 33469, 33470, 33471, 33484, 33485, 33490, 33497, 33501, 33505, 33513, 33520, 33536, 33550, 37845, 37921, 37948, 38029, 38038, 38064, 38065, 38066, 38069, 38075, 38076, 38078, 39108, 39109, 39113, 39114, 39115, 39116, 39265, 39394, 189e3] };
  }
});

// ../../node_modules/iconv-lite/encodings/tables/cp949.json
var require_cp949 = __commonJS({
  "../../node_modules/iconv-lite/encodings/tables/cp949.json"(exports2, module2) {
    module2.exports = [
      ["0", "\0", 127],
      ["8141", "\uAC02\uAC03\uAC05\uAC06\uAC0B", 4, "\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25", 6, "\uAC2E\uAC32\uAC33\uAC34"],
      ["8161", "\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41", 9, "\uAC4C\uAC4E", 5, "\uAC55"],
      ["8181", "\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D", 18, "\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B", 4, "\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95", 6, "\uAC9E\uACA2", 5, "\uACAB\uACAD\uACAE\uACB1", 6, "\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD", 7, "\uACD6\uACD8", 7, "\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7", 4, "\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07", 4, "\uAD0E\uAD10\uAD12\uAD13"],
      ["8241", "\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21", 7, "\uAD2A\uAD2B\uAD2E", 5],
      ["8261", "\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D", 6, "\uAD46\uAD48\uAD4A", 5, "\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"],
      ["8281", "\uAD59", 7, "\uAD62\uAD64", 7, "\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83", 4, "\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91", 10, "\uAD9E", 5, "\uADA5", 17, "\uADB8", 7, "\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9", 6, "\uADD2\uADD4", 7, "\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5", 18],
      ["8341", "\uADFA\uADFB\uADFD\uADFE\uAE02", 5, "\uAE0A\uAE0C\uAE0E", 5, "\uAE15", 7],
      ["8361", "\uAE1D", 18, "\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"],
      ["8381", "\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57", 4, "\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71", 6, "\uAE7A\uAE7E", 5, "\uAE86", 5, "\uAE8D", 46, "\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5", 6, "\uAECE\uAED2", 5, "\uAEDA\uAEDB\uAEDD", 8],
      ["8441", "\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE", 5, "\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD", 8],
      ["8461", "\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11", 18],
      ["8481", "\uAF24", 7, "\uAF2E\uAF2F\uAF31\uAF33\uAF35", 6, "\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A", 5, "\uAF51", 10, "\uAF5E", 5, "\uAF66", 18, "\uAF7A", 5, "\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89", 6, "\uAF92\uAF93\uAF94\uAF96", 5, "\uAF9D", 26, "\uAFBA\uAFBB\uAFBD\uAFBE"],
      ["8541", "\uAFBF\uAFC1", 5, "\uAFCA\uAFCC\uAFCF", 4, "\uAFD5", 6, "\uAFDD", 4],
      ["8561", "\uAFE2", 5, "\uAFEA", 5, "\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9", 6, "\uB002\uB003"],
      ["8581", "\uB005", 6, "\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015", 6, "\uB01E", 9, "\uB029", 26, "\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E", 29, "\uB07E\uB07F\uB081\uB082\uB083\uB085", 6, "\uB08E\uB090\uB092", 5, "\uB09B\uB09D\uB09E\uB0A3\uB0A4"],
      ["8641", "\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD", 6, "\uB0C6\uB0CA", 5, "\uB0D2"],
      ["8661", "\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9", 6, "\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6", 10],
      ["8681", "\uB0F1", 22, "\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E", 4, "\uB126\uB127\uB129\uB12A\uB12B\uB12D", 6, "\uB136\uB13A", 5, "\uB142\uB143\uB145\uB146\uB147\uB149", 6, "\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161", 22, "\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183", 4, "\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"],
      ["8741", "\uB19E", 9, "\uB1A9", 15],
      ["8761", "\uB1B9", 18, "\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"],
      ["8781", "\uB1D6", 5, "\uB1DE\uB1E0", 7, "\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1", 7, "\uB1FA\uB1FC\uB1FE", 5, "\uB206\uB207\uB209\uB20A\uB20D", 6, "\uB216\uB218\uB21A", 5, "\uB221", 18, "\uB235", 6, "\uB23D", 26, "\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261", 6, "\uB26A", 4],
      ["8841", "\uB26F", 4, "\uB276", 5, "\uB27D", 6, "\uB286\uB287\uB288\uB28A", 4],
      ["8861", "\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B", 4, "\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"],
      ["8881", "\uB2B8", 15, "\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3", 4, "\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309", 6, "\uB312\uB316", 5, "\uB31D", 54, "\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"],
      ["8941", "\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379", 6, "\uB382\uB386", 5, "\uB38D"],
      ["8961", "\uB38E\uB38F\uB391\uB392\uB393\uB395", 10, "\uB3A2", 5, "\uB3A9\uB3AA\uB3AB\uB3AD"],
      ["8981", "\uB3AE", 21, "\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9", 18, "\uB3FD", 18, "\uB411", 6, "\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421", 6, "\uB42A\uB42C", 7, "\uB435", 15],
      ["8a41", "\uB445", 10, "\uB452\uB453\uB455\uB456\uB457\uB459", 6, "\uB462\uB464\uB466"],
      ["8a61", "\uB467", 4, "\uB46D", 18, "\uB481\uB482"],
      ["8a81", "\uB483", 4, "\uB489", 19, "\uB49E", 5, "\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD", 7, "\uB4B6\uB4B8\uB4BA", 5, "\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9", 6, "\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6", 5, "\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7", 4, "\uB4EE\uB4F0\uB4F2", 5, "\uB4F9", 26, "\uB516\uB517\uB519\uB51A\uB51D"],
      ["8b41", "\uB51E", 5, "\uB526\uB52B", 4, "\uB532\uB533\uB535\uB536\uB537\uB539", 6, "\uB542\uB546"],
      ["8b61", "\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555", 6, "\uB55E\uB562", 8],
      ["8b81", "\uB56B", 52, "\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6", 4, "\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5", 6, "\uB5CE\uB5D2", 5, "\uB5D9", 18, "\uB5ED", 18],
      ["8c41", "\uB600", 15, "\uB612\uB613\uB615\uB616\uB617\uB619", 4],
      ["8c61", "\uB61E", 6, "\uB626", 5, "\uB62D", 6, "\uB635", 5],
      ["8c81", "\uB63B", 12, "\uB649", 26, "\uB665\uB666\uB667\uB669", 50, "\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5", 5, "\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2", 16],
      ["8d41", "\uB6C3", 16, "\uB6D5", 8],
      ["8d61", "\uB6DE", 17, "\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"],
      ["8d81", "\uB6FB", 4, "\uB702\uB703\uB704\uB706", 33, "\uB72A\uB72B\uB72D\uB72E\uB731", 6, "\uB73A\uB73C", 7, "\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D", 6, "\uB756", 9, "\uB761\uB762\uB763\uB765\uB766\uB767\uB769", 6, "\uB772\uB774\uB776", 5, "\uB77E\uB77F\uB781\uB782\uB783\uB785", 6, "\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"],
      ["8e41", "\uB79F\uB7A1", 6, "\uB7AA\uB7AE", 5, "\uB7B6\uB7B7\uB7B9", 8],
      ["8e61", "\uB7C2", 4, "\uB7C8\uB7CA", 19],
      ["8e81", "\uB7DE", 13, "\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5", 6, "\uB7FE\uB802", 4, "\uB80A\uB80B\uB80D\uB80E\uB80F\uB811", 6, "\uB81A\uB81C\uB81E", 5, "\uB826\uB827\uB829\uB82A\uB82B\uB82D", 6, "\uB836\uB83A", 5, "\uB841\uB842\uB843\uB845", 11, "\uB852\uB854", 7, "\uB85E\uB85F\uB861\uB862\uB863\uB865", 6, "\uB86E\uB870\uB872", 5, "\uB879\uB87A\uB87B\uB87D", 7],
      ["8f41", "\uB885", 7, "\uB88E", 17],
      ["8f61", "\uB8A0", 7, "\uB8A9", 6, "\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9", 4],
      ["8f81", "\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6", 5, "\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5", 7, "\uB8DE\uB8E0\uB8E2", 5, "\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1", 6, "\uB8FA\uB8FC\uB8FE", 5, "\uB905", 18, "\uB919", 6, "\uB921", 26, "\uB93E\uB93F\uB941\uB942\uB943\uB945", 6, "\uB94D\uB94E\uB950\uB952", 5],
      ["9041", "\uB95A\uB95B\uB95D\uB95E\uB95F\uB961", 6, "\uB96A\uB96C\uB96E", 5, "\uB976\uB977\uB979\uB97A\uB97B\uB97D"],
      ["9061", "\uB97E", 5, "\uB986\uB988\uB98B\uB98C\uB98F", 15],
      ["9081", "\uB99F", 12, "\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5", 6, "\uB9BE\uB9C0\uB9C2", 5, "\uB9CA\uB9CB\uB9CD\uB9D3", 4, "\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED", 6, "\uB9F6\uB9FB", 4, "\uBA02", 5, "\uBA09", 11, "\uBA16", 33, "\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"],
      ["9141", "\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D", 6, "\uBA66\uBA6A", 5],
      ["9161", "\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79", 9, "\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D", 5],
      ["9181", "\uBA93", 20, "\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3", 4, "\uBABA\uBABC\uBABE", 5, "\uBAC5\uBAC6\uBAC7\uBAC9", 14, "\uBADA", 33, "\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05", 7, "\uBB0E\uBB10\uBB12", 5, "\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21", 6],
      ["9241", "\uBB28\uBB2A\uBB2C", 7, "\uBB37\uBB39\uBB3A\uBB3F", 4, "\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"],
      ["9261", "\uBB53\uBB55\uBB56\uBB57\uBB59", 7, "\uBB62\uBB64", 7, "\uBB6D", 4],
      ["9281", "\uBB72", 21, "\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91", 18, "\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD", 6, "\uBBB5\uBBB6\uBBB8", 7, "\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9", 6, "\uBBD1\uBBD2\uBBD4", 35, "\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"],
      ["9341", "\uBC03", 4, "\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"],
      ["9361", "\uBC36\uBC37\uBC39", 6, "\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51", 8],
      ["9381", "\uBC5A\uBC5B\uBC5C\uBC5E", 37, "\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F", 4, "\uBC96\uBC98\uBC9B", 4, "\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9", 6, "\uBCB2\uBCB6", 5, "\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5", 7, "\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD", 22, "\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"],
      ["9441", "\uBCFE", 5, "\uBD06\uBD08\uBD0A", 5, "\uBD11\uBD12\uBD13\uBD15", 8],
      ["9461", "\uBD1E", 5, "\uBD25", 6, "\uBD2D", 12],
      ["9481", "\uBD3A", 5, "\uBD41", 6, "\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51", 6, "\uBD5A", 9, "\uBD65\uBD66\uBD67\uBD69", 22, "\uBD82\uBD83\uBD85\uBD86\uBD8B", 4, "\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D", 6, "\uBDA5", 10, "\uBDB1", 6, "\uBDB9", 24],
      ["9541", "\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD", 11, "\uBDEA", 5, "\uBDF1"],
      ["9561", "\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9", 6, "\uBE01\uBE02\uBE04\uBE06", 5, "\uBE0E\uBE0F\uBE11\uBE12\uBE13"],
      ["9581", "\uBE15", 6, "\uBE1E\uBE20", 35, "\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F", 4, "\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B", 4, "\uBE72\uBE76", 4, "\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85", 6, "\uBE8E\uBE92", 5, "\uBE9A", 13, "\uBEA9", 14],
      ["9641", "\uBEB8", 23, "\uBED2\uBED3"],
      ["9661", "\uBED5\uBED6\uBED9", 6, "\uBEE1\uBEE2\uBEE6", 5, "\uBEED", 8],
      ["9681", "\uBEF6", 10, "\uBF02", 5, "\uBF0A", 13, "\uBF1A\uBF1E", 33, "\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49", 6, "\uBF52\uBF53\uBF54\uBF56", 44],
      ["9741", "\uBF83", 16, "\uBF95", 8],
      ["9761", "\uBF9E", 17, "\uBFB1", 7],
      ["9781", "\uBFB9", 11, "\uBFC6", 5, "\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5", 6, "\uBFDD\uBFDE\uBFE0\uBFE2", 89, "\uC03D\uC03E\uC03F"],
      ["9841", "\uC040", 16, "\uC052", 5, "\uC059\uC05A\uC05B"],
      ["9861", "\uC05D\uC05E\uC05F\uC061", 6, "\uC06A", 15],
      ["9881", "\uC07A", 21, "\uC092\uC093\uC095\uC096\uC097\uC099", 6, "\uC0A2\uC0A4\uC0A6", 5, "\uC0AE\uC0B1\uC0B2\uC0B7", 4, "\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1", 6, "\uC0DA\uC0DE", 5, "\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED", 6, "\uC0F6\uC0F8\uC0FA", 5, "\uC101\uC102\uC103\uC105\uC106\uC107\uC109", 6, "\uC111\uC112\uC113\uC114\uC116", 5, "\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"],
      ["9941", "\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141", 6, "\uC14A\uC14E", 5, "\uC156\uC157"],
      ["9961", "\uC159\uC15A\uC15B\uC15D", 6, "\uC166\uC16A", 5, "\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"],
      ["9981", "\uC17C", 8, "\uC186", 5, "\uC18F\uC191\uC192\uC193\uC195\uC197", 4, "\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1", 11, "\uC1BE", 5, "\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD", 6, "\uC1D5\uC1D6\uC1D9", 6, "\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9", 6, "\uC1F2\uC1F4", 7, "\uC1FE\uC1FF\uC201\uC202\uC203\uC205", 6, "\uC20E\uC210\uC212", 5, "\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"],
      ["9a41", "\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235", 16],
      ["9a61", "\uC246\uC247\uC249", 6, "\uC252\uC253\uC255\uC256\uC257\uC259", 6, "\uC261\uC262\uC263\uC264\uC266"],
      ["9a81", "\uC267", 4, "\uC26E\uC26F\uC271\uC272\uC273\uC275", 6, "\uC27E\uC280\uC282", 5, "\uC28A", 5, "\uC291", 6, "\uC299\uC29A\uC29C\uC29E", 5, "\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE", 5, "\uC2B6\uC2B8\uC2BA", 33, "\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5", 5, "\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301", 6, "\uC30A\uC30B\uC30E\uC30F"],
      ["9b41", "\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D", 6, "\uC326\uC327\uC32A", 8],
      ["9b61", "\uC333", 17, "\uC346", 7],
      ["9b81", "\uC34E", 25, "\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373", 4, "\uC37A\uC37B\uC37E", 5, "\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D", 50, "\uC3C1", 22, "\uC3DA"],
      ["9c41", "\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3", 4, "\uC3EA\uC3EB\uC3EC\uC3EE", 5, "\uC3F6\uC3F7\uC3F9", 5],
      ["9c61", "\uC3FF", 8, "\uC409", 6, "\uC411", 9],
      ["9c81", "\uC41B", 8, "\uC425", 6, "\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435", 6, "\uC43E", 9, "\uC449", 26, "\uC466\uC467\uC469\uC46A\uC46B\uC46D", 6, "\uC476\uC477\uC478\uC47A", 5, "\uC481", 18, "\uC495", 6, "\uC49D", 12],
      ["9d41", "\uC4AA", 13, "\uC4B9\uC4BA\uC4BB\uC4BD", 8],
      ["9d61", "\uC4C6", 25],
      ["9d81", "\uC4E0", 8, "\uC4EA", 5, "\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502", 9, "\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515", 6, "\uC51D", 10, "\uC52A\uC52B\uC52D\uC52E\uC52F\uC531", 6, "\uC53A\uC53C\uC53E", 5, "\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569", 6, "\uC572\uC576", 5, "\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"],
      ["9e41", "\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1", 7, "\uC5AA", 9, "\uC5B6"],
      ["9e61", "\uC5B7\uC5BA\uC5BF", 4, "\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9", 6, "\uC5E2\uC5E4\uC5E6\uC5E7"],
      ["9e81", "\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611", 6, "\uC61A\uC61D", 6, "\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649", 6, "\uC652\uC656", 5, "\uC65E\uC65F\uC661", 10, "\uC66D\uC66E\uC670\uC672", 5, "\uC67A\uC67B\uC67D\uC67E\uC67F\uC681", 6, "\uC68A\uC68C\uC68E", 5, "\uC696\uC697\uC699\uC69A\uC69B\uC69D", 6, "\uC6A6"],
      ["9f41", "\uC6A8\uC6AA", 5, "\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB", 4, "\uC6C2\uC6C4\uC6C6", 5, "\uC6CE"],
      ["9f61", "\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5", 6, "\uC6DE\uC6DF\uC6E2", 5, "\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"],
      ["9f81", "\uC6F3", 4, "\uC6FA\uC6FB\uC6FC\uC6FE", 5, "\uC706\uC707\uC709\uC70A\uC70B\uC70D", 6, "\uC716\uC718\uC71A", 5, "\uC722\uC723\uC725\uC726\uC727\uC729", 6, "\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745", 4, "\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761", 6, "\uC769\uC76A\uC76C", 7, "\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B", 4, "\uC7A2\uC7A7", 4, "\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"],
      ["a041", "\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2", 5, "\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1", 6, "\uC7D9\uC7DA\uC7DB\uC7DC"],
      ["a061", "\uC7DE", 5, "\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED", 13],
      ["a081", "\uC7FB", 4, "\uC802\uC803\uC805\uC806\uC807\uC809\uC80B", 4, "\uC812\uC814\uC817", 4, "\uC81E\uC81F\uC821\uC822\uC823\uC825", 6, "\uC82E\uC830\uC832", 5, "\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841", 6, "\uC84A\uC84B\uC84E", 5, "\uC855", 26, "\uC872\uC873\uC875\uC876\uC877\uC879\uC87B", 4, "\uC882\uC884\uC888\uC889\uC88A\uC88E", 5, "\uC895", 7, "\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"],
      ["a141", "\uC8A5\uC8A6\uC8A7\uC8A9", 18, "\uC8BE\uC8BF\uC8C0\uC8C1"],
      ["a161", "\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD", 6, "\uC8D6\uC8D8\uC8DA", 5, "\uC8E2\uC8E3\uC8E5"],
      ["a181", "\uC8E6", 14, "\uC8F6", 5, "\uC8FE\uC8FF\uC901\uC902\uC903\uC907", 4, "\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 9, "\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"],
      ["a241", "\uC910\uC912", 5, "\uC919", 18],
      ["a261", "\uC92D", 6, "\uC935", 18],
      ["a281", "\uC948", 7, "\uC952\uC953\uC955\uC956\uC957\uC959", 6, "\uC962\uC964", 7, "\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"],
      ["a341", "\uC971\uC972\uC973\uC975", 6, "\uC97D", 10, "\uC98A\uC98B\uC98D\uC98E\uC98F"],
      ["a361", "\uC991", 6, "\uC99A\uC99C\uC99E", 16],
      ["a381", "\uC9AF", 16, "\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB", 4, "\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01", 58, "\uFFE6\uFF3D", 32, "\uFFE3"],
      ["a441", "\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2", 5, "\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"],
      ["a461", "\uCA05\uCA06\uCA07\uCA0A\uCA0E", 5, "\uCA15\uCA16\uCA17\uCA19", 12],
      ["a481", "\uCA26\uCA27\uCA28\uCA2A", 28, "\u3131", 93],
      ["a541", "\uCA47", 4, "\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55", 6, "\uCA5E\uCA62", 5, "\uCA69\uCA6A"],
      ["a561", "\uCA6B", 17, "\uCA7E", 5, "\uCA85\uCA86"],
      ["a581", "\uCA87", 16, "\uCA99", 14, "\u2170", 9],
      ["a5b0", "\u2160", 9],
      ["a5c1", "\u0391", 16, "\u03A3", 6],
      ["a5e1", "\u03B1", 16, "\u03C3", 6],
      ["a641", "\uCAA8", 19, "\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"],
      ["a661", "\uCAC6", 5, "\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA", 5, "\uCAE1", 6],
      ["a681", "\uCAE8\uCAE9\uCAEA\uCAEB\uCAED", 6, "\uCAF5", 18, "\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543", 7],
      ["a741", "\uCB0B", 4, "\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19", 6, "\uCB22", 7],
      ["a761", "\uCB2A", 22, "\uCB42\uCB43\uCB44"],
      ["a781", "\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51", 6, "\uCB5A\uCB5B\uCB5C\uCB5E", 5, "\uCB65", 7, "\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399", 9, "\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0", 9, "\u3380", 4, "\u33BA", 5, "\u3390", 4, "\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"],
      ["a841", "\uCB6D", 10, "\uCB7A", 14],
      ["a861", "\uCB89", 18, "\uCB9D", 6],
      ["a881", "\uCBA4", 19, "\uCBB9", 11, "\xC6\xD0\xAA\u0126"],
      ["a8a6", "\u0132"],
      ["a8a8", "\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"],
      ["a8b1", "\u3260", 27, "\u24D0", 25, "\u2460", 14, "\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"],
      ["a941", "\uCBC5", 14, "\uCBD5", 10],
      ["a961", "\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA", 18],
      ["a981", "\uCBFD", 14, "\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15", 6, "\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200", 27, "\u249C", 25, "\u2474", 14, "\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"],
      ["aa41", "\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31", 6, "\uCC3A\uCC3F", 4, "\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"],
      ["aa61", "\uCC4F", 4, "\uCC56\uCC5A", 5, "\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69", 6, "\uCC71\uCC72"],
      ["aa81", "\uCC73\uCC74\uCC76", 29, "\u3041", 82],
      ["ab41", "\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1", 6, "\uCCAA\uCCAE", 5, "\uCCB6\uCCB7\uCCB9"],
      ["ab61", "\uCCBA\uCCBB\uCCBD", 6, "\uCCC6\uCCC8\uCCCA", 5, "\uCCD1\uCCD2\uCCD3\uCCD5", 5],
      ["ab81", "\uCCDB", 8, "\uCCE5", 6, "\uCCED\uCCEE\uCCEF\uCCF1", 12, "\u30A1", 85],
      ["ac41", "\uCCFE\uCCFF\uCD00\uCD02", 5, "\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11", 6, "\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"],
      ["ac61", "\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D", 11, "\uCD3A", 4],
      ["ac81", "\uCD3F", 28, "\uCD5D\uCD5E\uCD5F\u0410", 5, "\u0401\u0416", 25],
      ["acd1", "\u0430", 5, "\u0451\u0436", 25],
      ["ad41", "\uCD61\uCD62\uCD63\uCD65", 6, "\uCD6E\uCD70\uCD72", 5, "\uCD79", 7],
      ["ad61", "\uCD81", 6, "\uCD89", 10, "\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"],
      ["ad81", "\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA", 5, "\uCDB1", 18, "\uCDC5"],
      ["ae41", "\uCDC6", 5, "\uCDCD\uCDCE\uCDCF\uCDD1", 16],
      ["ae61", "\uCDE2", 5, "\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1", 6, "\uCDFA\uCDFC\uCDFE", 4],
      ["ae81", "\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D", 6, "\uCE15\uCE16\uCE17\uCE18\uCE1A", 5, "\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"],
      ["af41", "\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36", 19],
      ["af61", "\uCE4A", 13, "\uCE5A\uCE5B\uCE5D\uCE5E\uCE62", 5, "\uCE6A\uCE6C"],
      ["af81", "\uCE6E", 5, "\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D", 6, "\uCE86\uCE88\uCE8A", 5, "\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"],
      ["b041", "\uCE9A", 5, "\uCEA2\uCEA6", 5, "\uCEAE", 12],
      ["b061", "\uCEBB", 5, "\uCEC2", 19],
      ["b081", "\uCED6", 13, "\uCEE6\uCEE7\uCEE9\uCEEA\uCEED", 6, "\uCEF6\uCEFA", 5, "\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10", 7, "\uAC19", 4, "\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"],
      ["b141", "\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09", 6, "\uCF12\uCF14\uCF16", 5, "\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"],
      ["b161", "\uCF25", 6, "\uCF2E\uCF32", 5, "\uCF39", 11],
      ["b181", "\uCF45", 14, "\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D", 6, "\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"],
      ["b241", "\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79", 6, "\uCF81\uCF82\uCF83\uCF84\uCF86", 5, "\uCF8D"],
      ["b261", "\uCF8E", 18, "\uCFA2", 5, "\uCFA9"],
      ["b281", "\uCFAA", 5, "\uCFB1", 18, "\uCFC5", 6, "\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"],
      ["b341", "\uCFCC", 19, "\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"],
      ["b361", "\uCFEA", 5, "\uCFF2\uCFF4\uCFF6", 5, "\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005", 5],
      ["b381", "\uD00B", 5, "\uD012", 5, "\uD019", 19, "\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB", 4, "\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"],
      ["b441", "\uD02E", 5, "\uD036\uD037\uD039\uD03A\uD03B\uD03D", 6, "\uD046\uD048\uD04A", 5],
      ["b461", "\uD051\uD052\uD053\uD055\uD056\uD057\uD059", 6, "\uD061", 10, "\uD06E\uD06F"],
      ["b481", "\uD071\uD072\uD073\uD075", 6, "\uD07E\uD07F\uD080\uD082", 18, "\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB", 4, "\uB2F3\uB2F4\uB2F5\uB2F7", 4, "\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"],
      ["b541", "\uD095", 14, "\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD", 5],
      ["b561", "\uD0B3\uD0B6\uD0B8\uD0BA", 5, "\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA", 5, "\uD0D2\uD0D6", 4],
      ["b581", "\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5", 6, "\uD0EE\uD0F2", 5, "\uD0F9", 11, "\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"],
      ["b641", "\uD105", 7, "\uD10E", 17],
      ["b661", "\uD120", 15, "\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"],
      ["b681", "\uD13F\uD142\uD146", 5, "\uD14E\uD14F\uD151\uD152\uD153\uD155", 6, "\uD15E\uD160\uD162", 5, "\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"],
      ["b741", "\uD16E", 13, "\uD17D", 6, "\uD185\uD186\uD187\uD189\uD18A"],
      ["b761", "\uD18B", 20, "\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"],
      ["b781", "\uD1A9", 6, "\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1", 14, "\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"],
      ["b841", "\uD1D0", 7, "\uD1D9", 17],
      ["b861", "\uD1EB", 8, "\uD1F5\uD1F6\uD1F7\uD1F9", 13],
      ["b881", "\uD208\uD20A", 5, "\uD211", 24, "\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE", 4, "\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"],
      ["b941", "\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235", 6, "\uD23E\uD240\uD242", 5, "\uD249\uD24A\uD24B\uD24C"],
      ["b961", "\uD24D", 14, "\uD25D", 6, "\uD265\uD266\uD267\uD268"],
      ["b981", "\uD269", 22, "\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14", 4, "\uBC1B", 4, "\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"],
      ["ba41", "\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296", 5, "\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5", 6, "\uD2AD"],
      ["ba61", "\uD2AE\uD2AF\uD2B0\uD2B2", 5, "\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3", 4, "\uD2CA\uD2CC", 5],
      ["ba81", "\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD", 6, "\uD2E6", 9, "\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"],
      ["bb41", "\uD2FB", 4, "\uD302\uD304\uD306", 5, "\uD30F\uD311\uD312\uD313\uD315\uD317", 4, "\uD31E\uD322\uD323"],
      ["bb61", "\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331", 6, "\uD33A\uD33E", 5, "\uD346\uD347\uD348\uD349"],
      ["bb81", "\uD34A", 31, "\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"],
      ["bc41", "\uD36A", 17, "\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"],
      ["bc61", "\uD388\uD389\uD38A\uD38B\uD38E\uD392", 5, "\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1", 6, "\uD3AA\uD3AC\uD3AE"],
      ["bc81", "\uD3AF", 4, "\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD", 6, "\uD3C6\uD3C7\uD3CA", 5, "\uD3D1", 5, "\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C", 4, "\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"],
      ["bd41", "\uD3D7\uD3D9", 7, "\uD3E2\uD3E4", 7, "\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"],
      ["bd61", "\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402", 5, "\uD409", 13],
      ["bd81", "\uD417", 5, "\uD41E", 25, "\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"],
      ["be41", "\uD438", 7, "\uD441\uD442\uD443\uD445", 14],
      ["be61", "\uD454", 7, "\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465", 7, "\uD46E\uD470\uD471\uD472"],
      ["be81", "\uD473", 4, "\uD47A\uD47B\uD47D\uD47E\uD481\uD483", 4, "\uD48A\uD48C\uD48E", 5, "\uD495", 8, "\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4", 6, "\uC5CC\uC5CE"],
      ["bf41", "\uD49E", 10, "\uD4AA", 14],
      ["bf61", "\uD4B9", 18, "\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"],
      ["bf81", "\uD4D6", 5, "\uD4DD\uD4DE\uD4E0", 7, "\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1", 6, "\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC", 5, "\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"],
      ["c041", "\uD4FE", 5, "\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D", 6, "\uD516\uD518", 5],
      ["c061", "\uD51E", 25],
      ["c081", "\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545", 6, "\uD54E\uD550\uD552", 5, "\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751", 7, "\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"],
      ["c141", "\uD564\uD566\uD567\uD56A\uD56C\uD56E", 5, "\uD576\uD577\uD579\uD57A\uD57B\uD57D", 6, "\uD586\uD58A\uD58B"],
      ["c161", "\uD58C\uD58D\uD58E\uD58F\uD591", 19, "\uD5A6\uD5A7"],
      ["c181", "\uD5A8", 31, "\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"],
      ["c241", "\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3", 4, "\uD5DA\uD5DC\uD5DE", 5, "\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"],
      ["c261", "\uD5EF", 4, "\uD5F6\uD5F8\uD5FA", 5, "\uD602\uD603\uD605\uD606\uD607\uD609", 6, "\uD612"],
      ["c281", "\uD616", 5, "\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625", 7, "\uD62E", 9, "\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"],
      ["c341", "\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D", 4],
      ["c361", "\uD662", 4, "\uD668\uD66A", 5, "\uD672\uD673\uD675", 11],
      ["c381", "\uD681\uD682\uD684\uD686", 5, "\uD68E\uD68F\uD691\uD692\uD693\uD695", 7, "\uD69E\uD6A0\uD6A2", 5, "\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"],
      ["c441", "\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1", 7, "\uD6BA\uD6BC", 7, "\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"],
      ["c461", "\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA", 5, "\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9", 4],
      ["c481", "\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6", 5, "\uD6FE\uD6FF\uD701\uD702\uD703\uD705", 11, "\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"],
      ["c541", "\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721", 6, "\uD72A\uD72C\uD72E", 5, "\uD736\uD737\uD739"],
      ["c561", "\uD73A\uD73B\uD73D", 6, "\uD745\uD746\uD748\uD74A", 5, "\uD752\uD753\uD755\uD75A", 4],
      ["c581", "\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775", 6, "\uD77E\uD77F\uD780\uD782", 5, "\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"],
      ["c641", "\uD78D\uD78E\uD78F\uD791", 6, "\uD79A\uD79C\uD79E", 5],
      ["c6a1", "\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"],
      ["c7a1", "\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"],
      ["c8a1", "\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"],
      ["caa1", "\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"],
      ["cba1", "\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"],
      ["cca1", "\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"],
      ["cda1", "\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"],
      ["cea1", "\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"],
      ["cfa1", "\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"],
      ["d0a1", "\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"],
      ["d1a1", "\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E", 5, "\u90A3\uF914", 4, "\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"],
      ["d2a1", "\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928", 4, "\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933", 5, "\u99D1\uF939", 10, "\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A", 7, "\u5AE9\u8A25\u677B\u7D10\uF952", 5, "\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"],
      ["d3a1", "\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"],
      ["d4a1", "\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"],
      ["d5a1", "\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"],
      ["d6a1", "\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"],
      ["d7a1", "\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"],
      ["d8a1", "\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"],
      ["d9a1", "\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"],
      ["daa1", "\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"],
      ["dba1", "\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"],
      ["dca1", "\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"],
      ["dda1", "\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"],
      ["dea1", "\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"],
      ["dfa1", "\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"],
      ["e0a1", "\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"],
      ["e1a1", "\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"],
      ["e2a1", "\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"],
      ["e3a1", "\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"],
      ["e4a1", "\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"],
      ["e5a1", "\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"],
      ["e6a1", "\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"],
      ["e7a1", "\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"],
      ["e8a1", "\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"],
      ["e9a1", "\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"],
      ["eaa1", "\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"],
      ["eba1", "\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"],
      ["eca1", "\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"],
      ["eda1", "\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"],
      ["eea1", "\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"],
      ["efa1", "\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"],
      ["f0a1", "\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"],
      ["f1a1", "\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"],
      ["f2a1", "\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"],
      ["f3a1", "\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"],
      ["f4a1", "\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"],
      ["f5a1", "\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"],
      ["f6a1", "\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"],
      ["f7a1", "\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"],
      ["f8a1", "\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"],
      ["f9a1", "\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"],
      ["faa1", "\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"],
      ["fba1", "\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"],
      ["fca1", "\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"],
      ["fda1", "\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"]
    ];
  }
});

// ../../node_modules/iconv-lite/encodings/tables/cp950.json
var require_cp950 = __commonJS({
  "../../node_modules/iconv-lite/encodings/tables/cp950.json"(exports2, module2) {
    module2.exports = [
      ["0", "\0", 127],
      ["a140", "\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"],
      ["a1a1", "\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62", 4, "\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"],
      ["a240", "\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581", 7, "\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"],
      ["a2a1", "\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10", 9, "\u2160", 9, "\u3021", 8, "\u5341\u5344\u5345\uFF21", 25, "\uFF41", 21],
      ["a340", "\uFF57\uFF58\uFF59\uFF5A\u0391", 16, "\u03A3", 6, "\u03B1", 16, "\u03C3", 6, "\u3105", 10],
      ["a3a1", "\u3110", 25, "\u02D9\u02C9\u02CA\u02C7\u02CB"],
      ["a3e1", "\u20AC"],
      ["a440", "\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"],
      ["a4a1", "\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"],
      ["a540", "\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"],
      ["a5a1", "\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"],
      ["a640", "\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"],
      ["a6a1", "\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"],
      ["a740", "\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"],
      ["a7a1", "\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"],
      ["a840", "\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"],
      ["a8a1", "\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"],
      ["a940", "\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"],
      ["a9a1", "\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"],
      ["aa40", "\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"],
      ["aaa1", "\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"],
      ["ab40", "\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"],
      ["aba1", "\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"],
      ["ac40", "\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"],
      ["aca1", "\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"],
      ["ad40", "\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"],
      ["ada1", "\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"],
      ["ae40", "\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"],
      ["aea1", "\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"],
      ["af40", "\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"],
      ["afa1", "\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"],
      ["b040", "\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"],
      ["b0a1", "\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"],
      ["b140", "\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"],
      ["b1a1", "\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"],
      ["b240", "\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"],
      ["b2a1", "\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"],
      ["b340", "\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"],
      ["b3a1", "\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"],
      ["b440", "\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"],
      ["b4a1", "\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"],
      ["b540", "\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"],
      ["b5a1", "\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"],
      ["b640", "\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"],
      ["b6a1", "\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"],
      ["b740", "\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"],
      ["b7a1", "\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"],
      ["b840", "\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"],
      ["b8a1", "\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"],
      ["b940", "\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"],
      ["b9a1", "\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"],
      ["ba40", "\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"],
      ["baa1", "\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"],
      ["bb40", "\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"],
      ["bba1", "\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"],
      ["bc40", "\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"],
      ["bca1", "\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"],
      ["bd40", "\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"],
      ["bda1", "\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"],
      ["be40", "\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"],
      ["bea1", "\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"],
      ["bf40", "\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"],
      ["bfa1", "\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"],
      ["c040", "\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"],
      ["c0a1", "\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"],
      ["c140", "\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"],
      ["c1a1", "\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"],
      ["c240", "\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"],
      ["c2a1", "\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"],
      ["c340", "\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"],
      ["c3a1", "\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"],
      ["c440", "\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"],
      ["c4a1", "\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"],
      ["c540", "\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"],
      ["c5a1", "\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"],
      ["c640", "\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"],
      ["c940", "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"],
      ["c9a1", "\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"],
      ["ca40", "\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"],
      ["caa1", "\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"],
      ["cb40", "\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"],
      ["cba1", "\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"],
      ["cc40", "\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"],
      ["cca1", "\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"],
      ["cd40", "\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"],
      ["cda1", "\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"],
      ["ce40", "\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"],
      ["cea1", "\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"],
      ["cf40", "\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"],
      ["cfa1", "\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"],
      ["d040", "\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"],
      ["d0a1", "\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"],
      ["d140", "\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"],
      ["d1a1", "\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"],
      ["d240", "\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"],
      ["d2a1", "\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"],
      ["d340", "\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"],
      ["d3a1", "\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"],
      ["d440", "\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"],
      ["d4a1", "\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"],
      ["d540", "\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"],
      ["d5a1", "\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"],
      ["d640", "\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"],
      ["d6a1", "\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"],
      ["d740", "\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"],
      ["d7a1", "\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"],
      ["d840", "\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"],
      ["d8a1", "\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"],
      ["d940", "\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"],
      ["d9a1", "\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"],
      ["da40", "\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"],
      ["daa1", "\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"],
      ["db40", "\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"],
      ["dba1", "\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"],
      ["dc40", "\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"],
      ["dca1", "\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"],
      ["dd40", "\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"],
      ["dda1", "\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"],
      ["de40", "\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"],
      ["dea1", "\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"],
      ["df40", "\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"],
      ["dfa1", "\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"],
      ["e040", "\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"],
      ["e0a1", "\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"],
      ["e140", "\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"],
      ["e1a1", "\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"],
      ["e240", "\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"],
      ["e2a1", "\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"],
      ["e340", "\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"],
      ["e3a1", "\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"],
      ["e440", "\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"],
      ["e4a1", "\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"],
      ["e540", "\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"],
      ["e5a1", "\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"],
      ["e640", "\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"],
      ["e6a1", "\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"],
      ["e740", "\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"],
      ["e7a1", "\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"],
      ["e840", "\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"],
      ["e8a1", "\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"],
      ["e940", "\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"],
      ["e9a1", "\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"],
      ["ea40", "\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"],
      ["eaa1", "\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"],
      ["eb40", "\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"],
      ["eba1", "\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"],
      ["ec40", "\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"],
      ["eca1", "\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"],
      ["ed40", "\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"],
      ["eda1", "\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"],
      ["ee40", "\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"],
      ["eea1", "\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"],
      ["ef40", "\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"],
      ["efa1", "\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"],
      ["f040", "\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"],
      ["f0a1", "\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"],
      ["f140", "\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"],
      ["f1a1", "\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"],
      ["f240", "\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"],
      ["f2a1", "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"],
      ["f340", "\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"],
      ["f3a1", "\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"],
      ["f440", "\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"],
      ["f4a1", "\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"],
      ["f540", "\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"],
      ["f5a1", "\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"],
      ["f640", "\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"],
      ["f6a1", "\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"],
      ["f740", "\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"],
      ["f7a1", "\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"],
      ["f840", "\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"],
      ["f8a1", "\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"],
      ["f940", "\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"],
      ["f9a1", "\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"]
    ];
  }
});

// ../../node_modules/iconv-lite/encodings/tables/big5-added.json
var require_big5_added = __commonJS({
  "../../node_modules/iconv-lite/encodings/tables/big5-added.json"(exports2, module2) {
    module2.exports = [
      ["8740", "\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"],
      ["8767", "\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"],
      ["87a1", "\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"],
      ["8840", "\u31C0", 4, "\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"],
      ["88a1", "\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"],
      ["8940", "\u{2A3A9}\u{21145}"],
      ["8943", "\u650A"],
      ["8946", "\u4E3D\u6EDD\u9D4E\u91DF"],
      ["894c", "\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"],
      ["89a1", "\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"],
      ["89ab", "\u918C\u78B8\u915E\u80BC"],
      ["89b0", "\u8D0B\u80F6\u{209E7}"],
      ["89b5", "\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"],
      ["89c1", "\u6E9A\u823E\u7519"],
      ["89c5", "\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"],
      ["8a40", "\u{27D84}\u5525"],
      ["8a43", "\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"],
      ["8a64", "\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"],
      ["8a76", "\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"],
      ["8aa1", "\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"],
      ["8aac", "\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"],
      ["8ab2", "\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"],
      ["8abb", "\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"],
      ["8ac9", "\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"],
      ["8ace", "\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"],
      ["8adf", "\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"],
      ["8af6", "\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"],
      ["8b40", "\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"],
      ["8b55", "\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"],
      ["8ba1", "\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"],
      ["8bde", "\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"],
      ["8c40", "\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"],
      ["8ca1", "\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"],
      ["8ca7", "\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"],
      ["8cc9", "\u9868\u676B\u4276\u573D"],
      ["8cce", "\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"],
      ["8ce6", "\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"],
      ["8d40", "\u{20B9F}"],
      ["8d42", "\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"],
      ["8da1", "\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"],
      ["8e40", "\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"],
      ["8ea1", "\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"],
      ["8f40", "\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"],
      ["8fa1", "\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"],
      ["9040", "\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"],
      ["90a1", "\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"],
      ["9140", "\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"],
      ["91a1", "\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"],
      ["9240", "\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"],
      ["92a1", "\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"],
      ["9340", "\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"],
      ["93a1", "\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"],
      ["9440", "\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"],
      ["94a1", "\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"],
      ["9540", "\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"],
      ["95a1", "\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"],
      ["9640", "\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"],
      ["96a1", "\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"],
      ["9740", "\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"],
      ["97a1", "\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"],
      ["9840", "\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"],
      ["98a1", "\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"],
      ["9940", "\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"],
      ["99a1", "\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"],
      ["9a40", "\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"],
      ["9aa1", "\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"],
      ["9b40", "\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"],
      ["9b62", "\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"],
      ["9ba1", "\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"],
      ["9c40", "\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"],
      ["9ca1", "\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"],
      ["9d40", "\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"],
      ["9da1", "\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"],
      ["9e40", "\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"],
      ["9ea1", "\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"],
      ["9ead", "\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"],
      ["9ec5", "\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"],
      ["9ef5", "\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"],
      ["9f40", "\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"],
      ["9f4f", "\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"],
      ["9fa1", "\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"],
      ["9fae", "\u9159\u9681\u915C"],
      ["9fb2", "\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"],
      ["9fc1", "\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"],
      ["9fc9", "\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"],
      ["9fdb", "\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"],
      ["9fe7", "\u6BFA\u8818\u7F78"],
      ["9feb", "\u5620\u{2A64A}\u8E77\u9F53"],
      ["9ff0", "\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"],
      ["a040", "\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"],
      ["a055", "\u{2183B}\u{26E05}"],
      ["a058", "\u8A7E\u{2251B}"],
      ["a05b", "\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"],
      ["a063", "\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"],
      ["a073", "\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"],
      ["a0a1", "\u5D57\u{28BC2}\u8FDA\u{28E39}"],
      ["a0a6", "\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"],
      ["a0ae", "\u77FE"],
      ["a0b0", "\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"],
      ["a0d4", "\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"],
      ["a0e2", "\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"],
      ["a3c0", "\u2400", 31, "\u2421"],
      ["c6a1", "\u2460", 9, "\u2474", 9, "\u2170", 9, "\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041", 23],
      ["c740", "\u3059", 58, "\u30A1\u30A2\u30A3\u30A4"],
      ["c7a1", "\u30A5", 81, "\u0410", 5, "\u0401\u0416", 4],
      ["c840", "\u041B", 26, "\u0451\u0436", 25, "\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"],
      ["c8a1", "\u9FB0\u5188\u9FB1\u{27607}"],
      ["c8cd", "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"],
      ["c8f5", "\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"],
      ["f9fe", "\uFFED"],
      ["fa40", "\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"],
      ["faa1", "\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"],
      ["fb40", "\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"],
      ["fba1", "\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"],
      ["fc40", "\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"],
      ["fca1", "\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"],
      ["fd40", "\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"],
      ["fda1", "\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"],
      ["fe40", "\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"],
      ["fea1", "\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"]
    ];
  }
});

// ../../node_modules/iconv-lite/encodings/dbcs-data.js
var require_dbcs_data = __commonJS({
  "../../node_modules/iconv-lite/encodings/dbcs-data.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      // == Japanese/ShiftJIS ====================================================
      // All japanese encodings are based on JIS X set of standards:
      // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.
      // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. 
      //              Has several variations in 1978, 1983, 1990 and 1997.
      // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.
      // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.
      //              2 planes, first is superset of 0208, second - revised 0212.
      //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)
      // Byte encodings are:
      //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte
      //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.
      //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.
      //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.
      //               0x00-0x7F       - lower part of 0201
      //               0x8E, 0xA1-0xDF - upper part of 0201
      //               (0xA1-0xFE)x2   - 0208 plane (94x94).
      //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).
      //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.
      //               Used as-is in ISO2022 family.
      //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, 
      //                0201-1976 Roman, 0208-1978, 0208-1983.
      //  * ISO2022-JP-1: Adds esc seq for 0212-1990.
      //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.
      //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.
      //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.
      //
      // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.
      //
      // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html
      "shiftjis": {
        type: "_dbcs",
        table: function() {
          return require_shiftjis();
        },
        encodeAdd: { "\xA5": 92, "\u203E": 126 },
        encodeSkipVals: [{ from: 60736, to: 63808 }]
      },
      "csshiftjis": "shiftjis",
      "mskanji": "shiftjis",
      "sjis": "shiftjis",
      "windows31j": "shiftjis",
      "ms31j": "shiftjis",
      "xsjis": "shiftjis",
      "windows932": "shiftjis",
      "ms932": "shiftjis",
      "932": "shiftjis",
      "cp932": "shiftjis",
      "eucjp": {
        type: "_dbcs",
        table: function() {
          return require_eucjp();
        },
        encodeAdd: { "\xA5": 92, "\u203E": 126 }
      },
      // TODO: KDDI extension to Shift_JIS
      // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.
      // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.
      // == Chinese/GBK ==========================================================
      // http://en.wikipedia.org/wiki/GBK
      // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder
      // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936
      "gb2312": "cp936",
      "gb231280": "cp936",
      "gb23121980": "cp936",
      "csgb2312": "cp936",
      "csiso58gb231280": "cp936",
      "euccn": "cp936",
      // Microsoft's CP936 is a subset and approximation of GBK.
      "windows936": "cp936",
      "ms936": "cp936",
      "936": "cp936",
      "cp936": {
        type: "_dbcs",
        table: function() {
          return require_cp936();
        }
      },
      // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.
      "gbk": {
        type: "_dbcs",
        table: function() {
          return require_cp936().concat(require_gbk_added());
        }
      },
      "xgbk": "gbk",
      "isoir58": "gbk",
      // GB18030 is an algorithmic extension of GBK.
      // Main source: https://www.w3.org/TR/encoding/#gbk-encoder
      // http://icu-project.org/docs/papers/gb18030.html
      // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml
      // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0
      "gb18030": {
        type: "_dbcs",
        table: function() {
          return require_cp936().concat(require_gbk_added());
        },
        gb18030: function() {
          return require_gb18030_ranges();
        },
        encodeSkipVals: [128],
        encodeAdd: { "\u20AC": 41699 }
      },
      "chinese": "gb18030",
      // == Korean ===============================================================
      // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.
      "windows949": "cp949",
      "ms949": "cp949",
      "949": "cp949",
      "cp949": {
        type: "_dbcs",
        table: function() {
          return require_cp949();
        }
      },
      "cseuckr": "cp949",
      "csksc56011987": "cp949",
      "euckr": "cp949",
      "isoir149": "cp949",
      "korean": "cp949",
      "ksc56011987": "cp949",
      "ksc56011989": "cp949",
      "ksc5601": "cp949",
      // == Big5/Taiwan/Hong Kong ================================================
      // There are lots of tables for Big5 and cp950. Please see the following links for history:
      // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html
      // Variations, in roughly number of defined chars:
      //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT
      //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/
      //  * Big5-2003 (Taiwan standard) almost superset of cp950.
      //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.
      //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. 
      //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.
      //    Plus, it has 4 combining sequences.
      //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299
      //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.
      //    Implementations are not consistent within browsers; sometimes labeled as just big5.
      //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.
      //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31
      //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.
      //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt
      //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt
      // 
      // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder
      // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.
      "windows950": "cp950",
      "ms950": "cp950",
      "950": "cp950",
      "cp950": {
        type: "_dbcs",
        table: function() {
          return require_cp950();
        }
      },
      // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.
      "big5": "big5hkscs",
      "big5hkscs": {
        type: "_dbcs",
        table: function() {
          return require_cp950().concat(require_big5_added());
        },
        encodeSkipVals: [41676]
      },
      "cnbig5": "big5hkscs",
      "csbig5": "big5hkscs",
      "xxbig5": "big5hkscs"
    };
  }
});

// ../../node_modules/iconv-lite/encodings/index.js
var require_encodings = __commonJS({
  "../../node_modules/iconv-lite/encodings/index.js"(exports2, module2) {
    "use strict";
    var modules = [
      require_internal(),
      require_utf16(),
      require_utf7(),
      require_sbcs_codec(),
      require_sbcs_data(),
      require_sbcs_data_generated(),
      require_dbcs_codec(),
      require_dbcs_data()
    ];
    for (i2 = 0; i2 < modules.length; i2++) {
      module2 = modules[i2];
      for (enc in module2)
        if (Object.prototype.hasOwnProperty.call(module2, enc))
          exports2[enc] = module2[enc];
    }
    var module2;
    var enc;
    var i2;
  }
});

// ../../node_modules/iconv-lite/lib/streams.js
var require_streams2 = __commonJS({
  "../../node_modules/iconv-lite/lib/streams.js"(exports2, module2) {
    "use strict";
    var Buffer7 = require("buffer").Buffer;
    var Transform = require("stream").Transform;
    module2.exports = function(iconv2) {
      iconv2.encodeStream = function encodeStream(encoding, options) {
        return new IconvLiteEncoderStream(iconv2.getEncoder(encoding, options), options);
      };
      iconv2.decodeStream = function decodeStream(encoding, options) {
        return new IconvLiteDecoderStream(iconv2.getDecoder(encoding, options), options);
      };
      iconv2.supportsStreams = true;
      iconv2.IconvLiteEncoderStream = IconvLiteEncoderStream;
      iconv2.IconvLiteDecoderStream = IconvLiteDecoderStream;
      iconv2._collect = IconvLiteDecoderStream.prototype.collect;
    };
    function IconvLiteEncoderStream(conv, options) {
      this.conv = conv;
      options = options || {};
      options.decodeStrings = false;
      Transform.call(this, options);
    }
    IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {
      constructor: { value: IconvLiteEncoderStream }
    });
    IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {
      if (typeof chunk != "string")
        return done(new Error("Iconv encoding stream needs strings as its input."));
      try {
        var res = this.conv.write(chunk);
        if (res && res.length) this.push(res);
        done();
      } catch (e2) {
        done(e2);
      }
    };
    IconvLiteEncoderStream.prototype._flush = function(done) {
      try {
        var res = this.conv.end();
        if (res && res.length) this.push(res);
        done();
      } catch (e2) {
        done(e2);
      }
    };
    IconvLiteEncoderStream.prototype.collect = function(cb) {
      var chunks = [];
      this.on("error", cb);
      this.on("data", function(chunk) {
        chunks.push(chunk);
      });
      this.on("end", function() {
        cb(null, Buffer7.concat(chunks));
      });
      return this;
    };
    function IconvLiteDecoderStream(conv, options) {
      this.conv = conv;
      options = options || {};
      options.encoding = this.encoding = "utf8";
      Transform.call(this, options);
    }
    IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {
      constructor: { value: IconvLiteDecoderStream }
    });
    IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {
      if (!Buffer7.isBuffer(chunk))
        return done(new Error("Iconv decoding stream needs buffers as its input."));
      try {
        var res = this.conv.write(chunk);
        if (res && res.length) this.push(res, this.encoding);
        done();
      } catch (e2) {
        done(e2);
      }
    };
    IconvLiteDecoderStream.prototype._flush = function(done) {
      try {
        var res = this.conv.end();
        if (res && res.length) this.push(res, this.encoding);
        done();
      } catch (e2) {
        done(e2);
      }
    };
    IconvLiteDecoderStream.prototype.collect = function(cb) {
      var res = "";
      this.on("error", cb);
      this.on("data", function(chunk) {
        res += chunk;
      });
      this.on("end", function() {
        cb(null, res);
      });
      return this;
    };
  }
});

// ../../node_modules/iconv-lite/lib/extend-node.js
var require_extend_node = __commonJS({
  "../../node_modules/iconv-lite/lib/extend-node.js"(exports2, module2) {
    "use strict";
    var Buffer7 = require("buffer").Buffer;
    module2.exports = function(iconv2) {
      var original = void 0;
      iconv2.supportsNodeEncodingsExtension = !(Buffer7.from || new Buffer7(0) instanceof Uint8Array);
      iconv2.extendNodeEncodings = function extendNodeEncodings() {
        if (original) return;
        original = {};
        if (!iconv2.supportsNodeEncodingsExtension) {
          console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node");
          console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility");
          return;
        }
        var nodeNativeEncodings = {
          "hex": true,
          "utf8": true,
          "utf-8": true,
          "ascii": true,
          "binary": true,
          "base64": true,
          "ucs2": true,
          "ucs-2": true,
          "utf16le": true,
          "utf-16le": true
        };
        Buffer7.isNativeEncoding = function(enc) {
          return enc && nodeNativeEncodings[enc.toLowerCase()];
        };
        var SlowBuffer = require("buffer").SlowBuffer;
        original.SlowBufferToString = SlowBuffer.prototype.toString;
        SlowBuffer.prototype.toString = function(encoding, start, end) {
          encoding = String(encoding || "utf8").toLowerCase();
          if (Buffer7.isNativeEncoding(encoding))
            return original.SlowBufferToString.call(this, encoding, start, end);
          if (typeof start == "undefined") start = 0;
          if (typeof end == "undefined") end = this.length;
          return iconv2.decode(this.slice(start, end), encoding);
        };
        original.SlowBufferWrite = SlowBuffer.prototype.write;
        SlowBuffer.prototype.write = function(string2, offset, length, encoding) {
          if (isFinite(offset)) {
            if (!isFinite(length)) {
              encoding = length;
              length = void 0;
            }
          } else {
            var swap2 = encoding;
            encoding = offset;
            offset = length;
            length = swap2;
          }
          offset = +offset || 0;
          var remaining = this.length - offset;
          if (!length) {
            length = remaining;
          } else {
            length = +length;
            if (length > remaining) {
              length = remaining;
            }
          }
          encoding = String(encoding || "utf8").toLowerCase();
          if (Buffer7.isNativeEncoding(encoding))
            return original.SlowBufferWrite.call(this, string2, offset, length, encoding);
          if (string2.length > 0 && (length < 0 || offset < 0))
            throw new RangeError("attempt to write beyond buffer bounds");
          var buf = iconv2.encode(string2, encoding);
          if (buf.length < length) length = buf.length;
          buf.copy(this, offset, 0, length);
          return length;
        };
        original.BufferIsEncoding = Buffer7.isEncoding;
        Buffer7.isEncoding = function(encoding) {
          return Buffer7.isNativeEncoding(encoding) || iconv2.encodingExists(encoding);
        };
        original.BufferByteLength = Buffer7.byteLength;
        Buffer7.byteLength = SlowBuffer.byteLength = function(str2, encoding) {
          encoding = String(encoding || "utf8").toLowerCase();
          if (Buffer7.isNativeEncoding(encoding))
            return original.BufferByteLength.call(this, str2, encoding);
          return iconv2.encode(str2, encoding).length;
        };
        original.BufferToString = Buffer7.prototype.toString;
        Buffer7.prototype.toString = function(encoding, start, end) {
          encoding = String(encoding || "utf8").toLowerCase();
          if (Buffer7.isNativeEncoding(encoding))
            return original.BufferToString.call(this, encoding, start, end);
          if (typeof start == "undefined") start = 0;
          if (typeof end == "undefined") end = this.length;
          return iconv2.decode(this.slice(start, end), encoding);
        };
        original.BufferWrite = Buffer7.prototype.write;
        Buffer7.prototype.write = function(string2, offset, length, encoding) {
          var _offset = offset, _length = length, _encoding = encoding;
          if (isFinite(offset)) {
            if (!isFinite(length)) {
              encoding = length;
              length = void 0;
            }
          } else {
            var swap2 = encoding;
            encoding = offset;
            offset = length;
            length = swap2;
          }
          encoding = String(encoding || "utf8").toLowerCase();
          if (Buffer7.isNativeEncoding(encoding))
            return original.BufferWrite.call(this, string2, _offset, _length, _encoding);
          offset = +offset || 0;
          var remaining = this.length - offset;
          if (!length) {
            length = remaining;
          } else {
            length = +length;
            if (length > remaining) {
              length = remaining;
            }
          }
          if (string2.length > 0 && (length < 0 || offset < 0))
            throw new RangeError("attempt to write beyond buffer bounds");
          var buf = iconv2.encode(string2, encoding);
          if (buf.length < length) length = buf.length;
          buf.copy(this, offset, 0, length);
          return length;
        };
        if (iconv2.supportsStreams) {
          var Readable = require("stream").Readable;
          original.ReadableSetEncoding = Readable.prototype.setEncoding;
          Readable.prototype.setEncoding = function setEncoding(enc, options) {
            this._readableState.decoder = iconv2.getDecoder(enc, options);
            this._readableState.encoding = enc;
          };
          Readable.prototype.collect = iconv2._collect;
        }
      };
      iconv2.undoExtendNodeEncodings = function undoExtendNodeEncodings() {
        if (!iconv2.supportsNodeEncodingsExtension)
          return;
        if (!original)
          throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.");
        delete Buffer7.isNativeEncoding;
        var SlowBuffer = require("buffer").SlowBuffer;
        SlowBuffer.prototype.toString = original.SlowBufferToString;
        SlowBuffer.prototype.write = original.SlowBufferWrite;
        Buffer7.isEncoding = original.BufferIsEncoding;
        Buffer7.byteLength = original.BufferByteLength;
        Buffer7.prototype.toString = original.BufferToString;
        Buffer7.prototype.write = original.BufferWrite;
        if (iconv2.supportsStreams) {
          var Readable = require("stream").Readable;
          Readable.prototype.setEncoding = original.ReadableSetEncoding;
          delete Readable.prototype.collect;
        }
        original = void 0;
      };
    };
  }
});

// ../../node_modules/iconv-lite/lib/index.js
var require_lib22 = __commonJS({
  "../../node_modules/iconv-lite/lib/index.js"(exports2, module2) {
    "use strict";
    var Buffer7 = require_safer().Buffer;
    var bomHandling = require_bom_handling();
    var iconv2 = module2.exports;
    iconv2.encodings = null;
    iconv2.defaultCharUnicode = "\uFFFD";
    iconv2.defaultCharSingleByte = "?";
    iconv2.encode = function encode(str2, encoding, options) {
      str2 = "" + (str2 || "");
      var encoder = iconv2.getEncoder(encoding, options);
      var res = encoder.write(str2);
      var trail = encoder.end();
      return trail && trail.length > 0 ? Buffer7.concat([res, trail]) : res;
    };
    iconv2.decode = function decode2(buf, encoding, options) {
      if (typeof buf === "string") {
        if (!iconv2.skipDecodeWarning) {
          console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding");
          iconv2.skipDecodeWarning = true;
        }
        buf = Buffer7.from("" + (buf || ""), "binary");
      }
      var decoder = iconv2.getDecoder(encoding, options);
      var res = decoder.write(buf);
      var trail = decoder.end();
      return trail ? res + trail : res;
    };
    iconv2.encodingExists = function encodingExists(enc) {
      try {
        iconv2.getCodec(enc);
        return true;
      } catch (e2) {
        return false;
      }
    };
    iconv2.toEncoding = iconv2.encode;
    iconv2.fromEncoding = iconv2.decode;
    iconv2._codecDataCache = {};
    iconv2.getCodec = function getCodec(encoding) {
      if (!iconv2.encodings)
        iconv2.encodings = require_encodings();
      var enc = iconv2._canonicalizeEncoding(encoding);
      var codecOptions = {};
      while (true) {
        var codec = iconv2._codecDataCache[enc];
        if (codec)
          return codec;
        var codecDef = iconv2.encodings[enc];
        switch (typeof codecDef) {
          case "string":
            enc = codecDef;
            break;
          case "object":
            for (var key2 in codecDef)
              codecOptions[key2] = codecDef[key2];
            if (!codecOptions.encodingName)
              codecOptions.encodingName = enc;
            enc = codecDef.type;
            break;
          case "function":
            if (!codecOptions.encodingName)
              codecOptions.encodingName = enc;
            codec = new codecDef(codecOptions, iconv2);
            iconv2._codecDataCache[codecOptions.encodingName] = codec;
            return codec;
          default:
            throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '" + enc + "')");
        }
      }
    };
    iconv2._canonicalizeEncoding = function(encoding) {
      return ("" + encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, "");
    };
    iconv2.getEncoder = function getEncoder(encoding, options) {
      var codec = iconv2.getCodec(encoding), encoder = new codec.encoder(options, codec);
      if (codec.bomAware && options && options.addBOM)
        encoder = new bomHandling.PrependBOM(encoder, options);
      return encoder;
    };
    iconv2.getDecoder = function getDecoder2(encoding, options) {
      var codec = iconv2.getCodec(encoding), decoder = new codec.decoder(options, codec);
      if (codec.bomAware && !(options && options.stripBOM === false))
        decoder = new bomHandling.StripBOM(decoder, options);
      return decoder;
    };
    var nodeVer = typeof process !== "undefined" && process.versions && process.versions.node;
    if (nodeVer) {
      nodeVerArr = nodeVer.split(".").map(Number);
      if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) {
        require_streams2()(iconv2);
      }
      require_extend_node()(iconv2);
    }
    var nodeVerArr;
    if (false) {
      console.error("iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.");
    }
  }
});

// ../../node_modules/unpipe/index.js
var require_unpipe = __commonJS({
  "../../node_modules/unpipe/index.js"(exports2, module2) {
    "use strict";
    module2.exports = unpipe;
    function hasPipeDataListeners(stream3) {
      var listeners = stream3.listeners("data");
      for (var i2 = 0; i2 < listeners.length; i2++) {
        if (listeners[i2].name === "ondata") {
          return true;
        }
      }
      return false;
    }
    function unpipe(stream3) {
      if (!stream3) {
        throw new TypeError("argument stream is required");
      }
      if (typeof stream3.unpipe === "function") {
        stream3.unpipe();
        return;
      }
      if (!hasPipeDataListeners(stream3)) {
        return;
      }
      var listener2;
      var listeners = stream3.listeners("close");
      for (var i2 = 0; i2 < listeners.length; i2++) {
        listener2 = listeners[i2];
        if (listener2.name !== "cleanup" && listener2.name !== "onclose") {
          continue;
        }
        listener2.call(stream3);
      }
    }
  }
});

// ../../node_modules/raw-body/index.js
var require_raw_body = __commonJS({
  "../../node_modules/raw-body/index.js"(exports2, module2) {
    "use strict";
    var asyncHooks = tryRequireAsyncHooks();
    var bytes = require_bytes();
    var createError = require_http_errors();
    var iconv2 = require_lib22();
    var unpipe = require_unpipe();
    module2.exports = getRawBody;
    var ICONV_ENCODING_MESSAGE_REGEXP = /^Encoding not recognized: /;
    function getDecoder2(encoding) {
      if (!encoding) return null;
      try {
        return iconv2.getDecoder(encoding);
      } catch (e2) {
        if (!ICONV_ENCODING_MESSAGE_REGEXP.test(e2.message)) throw e2;
        throw createError(415, "specified encoding unsupported", {
          encoding,
          type: "encoding.unsupported"
        });
      }
    }
    function getRawBody(stream3, options, callback) {
      var done = callback;
      var opts = options || {};
      if (stream3 === void 0) {
        throw new TypeError("argument stream is required");
      } else if (typeof stream3 !== "object" || stream3 === null || typeof stream3.on !== "function") {
        throw new TypeError("argument stream must be a stream");
      }
      if (options === true || typeof options === "string") {
        opts = {
          encoding: options
        };
      }
      if (typeof options === "function") {
        done = options;
        opts = {};
      }
      if (done !== void 0 && typeof done !== "function") {
        throw new TypeError("argument callback must be a function");
      }
      if (!done && !global.Promise) {
        throw new TypeError("argument callback is required");
      }
      var encoding = opts.encoding !== true ? opts.encoding : "utf-8";
      var limit = bytes.parse(opts.limit);
      var length = opts.length != null && !isNaN(opts.length) ? parseInt(opts.length, 10) : null;
      if (done) {
        return readStream2(stream3, encoding, length, limit, wrap4(done));
      }
      return new Promise(function executor(resolve9, reject) {
        readStream2(stream3, encoding, length, limit, function onRead(err, buf) {
          if (err) return reject(err);
          resolve9(buf);
        });
      });
    }
    function halt(stream3) {
      unpipe(stream3);
      if (typeof stream3.pause === "function") {
        stream3.pause();
      }
    }
    function readStream2(stream3, encoding, length, limit, callback) {
      var complete = false;
      var sync2 = true;
      if (limit !== null && length !== null && length > limit) {
        return done(createError(413, "request entity too large", {
          expected: length,
          length,
          limit,
          type: "entity.too.large"
        }));
      }
      var state = stream3._readableState;
      if (stream3._decoder || state && (state.encoding || state.decoder)) {
        return done(createError(500, "stream encoding should not be set", {
          type: "stream.encoding.set"
        }));
      }
      if (typeof stream3.readable !== "undefined" && !stream3.readable) {
        return done(createError(500, "stream is not readable", {
          type: "stream.not.readable"
        }));
      }
      var received = 0;
      var decoder;
      try {
        decoder = getDecoder2(encoding);
      } catch (err) {
        return done(err);
      }
      var buffer2 = decoder ? "" : [];
      stream3.on("aborted", onAborted);
      stream3.on("close", cleanup);
      stream3.on("data", onData);
      stream3.on("end", onEnd);
      stream3.on("error", onEnd);
      sync2 = false;
      function done() {
        var args = new Array(arguments.length);
        for (var i2 = 0; i2 < args.length; i2++) {
          args[i2] = arguments[i2];
        }
        complete = true;
        if (sync2) {
          process.nextTick(invokeCallback);
        } else {
          invokeCallback();
        }
        function invokeCallback() {
          cleanup();
          if (args[0]) {
            halt(stream3);
          }
          callback.apply(null, args);
        }
      }
      function onAborted() {
        if (complete) return;
        done(createError(400, "request aborted", {
          code: "ECONNABORTED",
          expected: length,
          length,
          received,
          type: "request.aborted"
        }));
      }
      function onData(chunk) {
        if (complete) return;
        received += chunk.length;
        if (limit !== null && received > limit) {
          done(createError(413, "request entity too large", {
            limit,
            received,
            type: "entity.too.large"
          }));
        } else if (decoder) {
          buffer2 += decoder.write(chunk);
        } else {
          buffer2.push(chunk);
        }
      }
      function onEnd(err) {
        if (complete) return;
        if (err) return done(err);
        if (length !== null && received !== length) {
          done(createError(400, "request size did not match content length", {
            expected: length,
            length,
            received,
            type: "request.size.invalid"
          }));
        } else {
          var string2 = decoder ? buffer2 + (decoder.end() || "") : Buffer.concat(buffer2);
          done(null, string2);
        }
      }
      function cleanup() {
        buffer2 = null;
        stream3.removeListener("aborted", onAborted);
        stream3.removeListener("data", onData);
        stream3.removeListener("end", onEnd);
        stream3.removeListener("error", onEnd);
        stream3.removeListener("close", cleanup);
      }
    }
    function tryRequireAsyncHooks() {
      try {
        return require("async_hooks");
      } catch (e2) {
        return {};
      }
    }
    function wrap4(fn) {
      var res;
      if (asyncHooks.AsyncResource) {
        res = new asyncHooks.AsyncResource(fn.name || "bound-anonymous-fn");
      }
      if (!res || !res.runInAsyncScope) {
        return fn;
      }
      return res.runInAsyncScope.bind(res, fn, null);
    }
  }
});

// ../../node_modules/ee-first/index.js
var require_ee_first = __commonJS({
  "../../node_modules/ee-first/index.js"(exports2, module2) {
    "use strict";
    module2.exports = first2;
    function first2(stuff, done) {
      if (!Array.isArray(stuff))
        throw new TypeError("arg must be an array of [ee, events...] arrays");
      var cleanups = [];
      for (var i2 = 0; i2 < stuff.length; i2++) {
        var arr = stuff[i2];
        if (!Array.isArray(arr) || arr.length < 2)
          throw new TypeError("each array member must be [ee, events...]");
        var ee = arr[0];
        for (var j = 1; j < arr.length; j++) {
          var event = arr[j];
          var fn = listener2(event, callback);
          ee.on(event, fn);
          cleanups.push({
            ee,
            event,
            fn
          });
        }
      }
      function callback() {
        cleanup();
        done.apply(null, arguments);
      }
      function cleanup() {
        var x2;
        for (var i3 = 0; i3 < cleanups.length; i3++) {
          x2 = cleanups[i3];
          x2.ee.removeListener(x2.event, x2.fn);
        }
      }
      function thunk(fn2) {
        done = fn2;
      }
      thunk.cancel = cleanup;
      return thunk;
    }
    function listener2(event, done) {
      return function onevent(arg1) {
        var args = new Array(arguments.length);
        var ee = this;
        var err = event === "error" ? arg1 : null;
        for (var i2 = 0; i2 < args.length; i2++) {
          args[i2] = arguments[i2];
        }
        done(err, ee, event, args);
      };
    }
  }
});

// ../../node_modules/on-finished/index.js
var require_on_finished = __commonJS({
  "../../node_modules/on-finished/index.js"(exports2, module2) {
    "use strict";
    module2.exports = onFinished;
    module2.exports.isFinished = isFinished;
    var asyncHooks = tryRequireAsyncHooks();
    var first2 = require_ee_first();
    var defer3 = typeof setImmediate === "function" ? setImmediate : function(fn) {
      process.nextTick(fn.bind.apply(fn, arguments));
    };
    function onFinished(msg, listener2) {
      if (isFinished(msg) !== false) {
        defer3(listener2, null, msg);
        return msg;
      }
      attachListener(msg, wrap4(listener2));
      return msg;
    }
    function isFinished(msg) {
      var socket = msg.socket;
      if (typeof msg.finished === "boolean") {
        return Boolean(msg.finished || socket && !socket.writable);
      }
      if (typeof msg.complete === "boolean") {
        return Boolean(msg.upgrade || !socket || !socket.readable || msg.complete && !msg.readable);
      }
      return void 0;
    }
    function attachFinishedListener(msg, callback) {
      var eeMsg;
      var eeSocket;
      var finished = false;
      function onFinish(error) {
        eeMsg.cancel();
        eeSocket.cancel();
        finished = true;
        callback(error);
      }
      eeMsg = eeSocket = first2([[msg, "end", "finish"]], onFinish);
      function onSocket(socket) {
        msg.removeListener("socket", onSocket);
        if (finished) return;
        if (eeMsg !== eeSocket) return;
        eeSocket = first2([[socket, "error", "close"]], onFinish);
      }
      if (msg.socket) {
        onSocket(msg.socket);
        return;
      }
      msg.on("socket", onSocket);
      if (msg.socket === void 0) {
        patchAssignSocket(msg, onSocket);
      }
    }
    function attachListener(msg, listener2) {
      var attached = msg.__onFinished;
      if (!attached || !attached.queue) {
        attached = msg.__onFinished = createListener(msg);
        attachFinishedListener(msg, attached);
      }
      attached.queue.push(listener2);
    }
    function createListener(msg) {
      function listener2(err) {
        if (msg.__onFinished === listener2) msg.__onFinished = null;
        if (!listener2.queue) return;
        var queue = listener2.queue;
        listener2.queue = null;
        for (var i2 = 0; i2 < queue.length; i2++) {
          queue[i2](err, msg);
        }
      }
      listener2.queue = [];
      return listener2;
    }
    function patchAssignSocket(res, callback) {
      var assignSocket = res.assignSocket;
      if (typeof assignSocket !== "function") return;
      res.assignSocket = function _assignSocket(socket) {
        assignSocket.call(this, socket);
        callback(socket);
      };
    }
    function tryRequireAsyncHooks() {
      try {
        return require("async_hooks");
      } catch (e2) {
        return {};
      }
    }
    function wrap4(fn) {
      var res;
      if (asyncHooks.AsyncResource) {
        res = new asyncHooks.AsyncResource(fn.name || "bound-anonymous-fn");
      }
      if (!res || !res.runInAsyncScope) {
        return fn;
      }
      return res.runInAsyncScope.bind(res, fn, null);
    }
  }
});

// ../../node_modules/body-parser/lib/read.js
var require_read = __commonJS({
  "../../node_modules/body-parser/lib/read.js"(exports2, module2) {
    "use strict";
    var createError = require_http_errors();
    var destroy = require_destroy();
    var getBody = require_raw_body();
    var iconv2 = require_lib22();
    var onFinished = require_on_finished();
    var unpipe = require_unpipe();
    var zlib3 = require("zlib");
    module2.exports = read2;
    function read2(req, res, next, parse16, debug, options) {
      var length;
      var opts = options;
      var stream3;
      req._body = true;
      var encoding = opts.encoding !== null ? opts.encoding : null;
      var verify = opts.verify;
      try {
        stream3 = contentstream(req, debug, opts.inflate);
        length = stream3.length;
        stream3.length = void 0;
      } catch (err) {
        return next(err);
      }
      opts.length = length;
      opts.encoding = verify ? null : encoding;
      if (opts.encoding === null && encoding !== null && !iconv2.encodingExists(encoding)) {
        return next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', {
          charset: encoding.toLowerCase(),
          type: "charset.unsupported"
        }));
      }
      debug("read body");
      getBody(stream3, opts, function(error, body3) {
        if (error) {
          var _error;
          if (error.type === "encoding.unsupported") {
            _error = createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', {
              charset: encoding.toLowerCase(),
              type: "charset.unsupported"
            });
          } else {
            _error = createError(400, error);
          }
          if (stream3 !== req) {
            unpipe(req);
            destroy(stream3, true);
          }
          dump3(req, function onfinished() {
            next(createError(400, _error));
          });
          return;
        }
        if (verify) {
          try {
            debug("verify body");
            verify(req, res, body3, encoding);
          } catch (err) {
            next(createError(403, err, {
              body: body3,
              type: err.type || "entity.verify.failed"
            }));
            return;
          }
        }
        var str2 = body3;
        try {
          debug("parse body");
          str2 = typeof body3 !== "string" && encoding !== null ? iconv2.decode(body3, encoding) : body3;
          req.body = parse16(str2);
        } catch (err) {
          next(createError(400, err, {
            body: str2,
            type: err.type || "entity.parse.failed"
          }));
          return;
        }
        next();
      });
    }
    function contentstream(req, debug, inflate) {
      var encoding = (req.headers["content-encoding"] || "identity").toLowerCase();
      var length = req.headers["content-length"];
      var stream3;
      debug('content-encoding "%s"', encoding);
      if (inflate === false && encoding !== "identity") {
        throw createError(415, "content encoding unsupported", {
          encoding,
          type: "encoding.unsupported"
        });
      }
      switch (encoding) {
        case "deflate":
          stream3 = zlib3.createInflate();
          debug("inflate body");
          req.pipe(stream3);
          break;
        case "gzip":
          stream3 = zlib3.createGunzip();
          debug("gunzip body");
          req.pipe(stream3);
          break;
        case "identity":
          stream3 = req;
          stream3.length = length;
          break;
        default:
          throw createError(415, 'unsupported content encoding "' + encoding + '"', {
            encoding,
            type: "encoding.unsupported"
          });
      }
      return stream3;
    }
    function dump3(req, callback) {
      if (onFinished.isFinished(req)) {
        callback(null);
      } else {
        onFinished(req, callback);
        req.resume();
      }
    }
  }
});

// ../../node_modules/media-typer/index.js
var require_media_typer = __commonJS({
  "../../node_modules/media-typer/index.js"(exports2) {
    var paramRegExp = /; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g;
    var textRegExp = /^[\u0020-\u007e\u0080-\u00ff]+$/;
    var tokenRegExp = /^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/;
    var qescRegExp = /\\([\u0000-\u007f])/g;
    var quoteRegExp = /([\\"])/g;
    var subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/;
    var typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/;
    var typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;
    exports2.format = format;
    exports2.parse = parse16;
    function format(obj) {
      if (!obj || typeof obj !== "object") {
        throw new TypeError("argument obj is required");
      }
      var parameters = obj.parameters;
      var subtype = obj.subtype;
      var suffix = obj.suffix;
      var type2 = obj.type;
      if (!type2 || !typeNameRegExp.test(type2)) {
        throw new TypeError("invalid type");
      }
      if (!subtype || !subtypeNameRegExp.test(subtype)) {
        throw new TypeError("invalid subtype");
      }
      var string2 = type2 + "/" + subtype;
      if (suffix) {
        if (!typeNameRegExp.test(suffix)) {
          throw new TypeError("invalid suffix");
        }
        string2 += "+" + suffix;
      }
      if (parameters && typeof parameters === "object") {
        var param;
        var params = Object.keys(parameters).sort();
        for (var i2 = 0; i2 < params.length; i2++) {
          param = params[i2];
          if (!tokenRegExp.test(param)) {
            throw new TypeError("invalid parameter name");
          }
          string2 += "; " + param + "=" + qstring(parameters[param]);
        }
      }
      return string2;
    }
    function parse16(string2) {
      if (!string2) {
        throw new TypeError("argument string is required");
      }
      if (typeof string2 === "object") {
        string2 = getcontenttype(string2);
      }
      if (typeof string2 !== "string") {
        throw new TypeError("argument string is required to be a string");
      }
      var index4 = string2.indexOf(";");
      var type2 = index4 !== -1 ? string2.substr(0, index4) : string2;
      var key2;
      var match3;
      var obj = splitType(type2);
      var params = {};
      var value;
      paramRegExp.lastIndex = index4;
      while (match3 = paramRegExp.exec(string2)) {
        if (match3.index !== index4) {
          throw new TypeError("invalid parameter format");
        }
        index4 += match3[0].length;
        key2 = match3[1].toLowerCase();
        value = match3[2];
        if (value[0] === '"') {
          value = value.substr(1, value.length - 2).replace(qescRegExp, "$1");
        }
        params[key2] = value;
      }
      if (index4 !== -1 && index4 !== string2.length) {
        throw new TypeError("invalid parameter format");
      }
      obj.parameters = params;
      return obj;
    }
    function getcontenttype(obj) {
      if (typeof obj.getHeader === "function") {
        return obj.getHeader("content-type");
      }
      if (typeof obj.headers === "object") {
        return obj.headers && obj.headers["content-type"];
      }
    }
    function qstring(val) {
      var str2 = String(val);
      if (tokenRegExp.test(str2)) {
        return str2;
      }
      if (str2.length > 0 && !textRegExp.test(str2)) {
        throw new TypeError("invalid parameter value");
      }
      return '"' + str2.replace(quoteRegExp, "\\$1") + '"';
    }
    function splitType(string2) {
      var match3 = typeRegExp.exec(string2.toLowerCase());
      if (!match3) {
        throw new TypeError("invalid media type");
      }
      var type2 = match3[1];
      var subtype = match3[2];
      var suffix;
      var index4 = subtype.lastIndexOf("+");
      if (index4 !== -1) {
        suffix = subtype.substr(index4 + 1);
        subtype = subtype.substr(0, index4);
      }
      var obj = {
        type: type2,
        subtype,
        suffix
      };
      return obj;
    }
  }
});

// ../../node_modules/type-is/index.js
var require_type_is = __commonJS({
  "../../node_modules/type-is/index.js"(exports2, module2) {
    "use strict";
    var typer = require_media_typer();
    var mime3 = require_mime_types();
    module2.exports = typeofrequest;
    module2.exports.is = typeis;
    module2.exports.hasBody = hasbody;
    module2.exports.normalize = normalize6;
    module2.exports.match = mimeMatch;
    function typeis(value, types_) {
      var i2;
      var types6 = types_;
      var val = tryNormalizeType(value);
      if (!val) {
        return false;
      }
      if (types6 && !Array.isArray(types6)) {
        types6 = new Array(arguments.length - 1);
        for (i2 = 0; i2 < types6.length; i2++) {
          types6[i2] = arguments[i2 + 1];
        }
      }
      if (!types6 || !types6.length) {
        return val;
      }
      var type2;
      for (i2 = 0; i2 < types6.length; i2++) {
        if (mimeMatch(normalize6(type2 = types6[i2]), val)) {
          return type2[0] === "+" || type2.indexOf("*") !== -1 ? val : type2;
        }
      }
      return false;
    }
    function hasbody(req) {
      return req.headers["transfer-encoding"] !== void 0 || !isNaN(req.headers["content-length"]);
    }
    function typeofrequest(req, types_) {
      var types6 = types_;
      if (!hasbody(req)) {
        return null;
      }
      if (arguments.length > 2) {
        types6 = new Array(arguments.length - 1);
        for (var i2 = 0; i2 < types6.length; i2++) {
          types6[i2] = arguments[i2 + 1];
        }
      }
      var value = req.headers["content-type"];
      return typeis(value, types6);
    }
    function normalize6(type2) {
      if (typeof type2 !== "string") {
        return false;
      }
      switch (type2) {
        case "urlencoded":
          return "application/x-www-form-urlencoded";
        case "multipart":
          return "multipart/*";
      }
      if (type2[0] === "+") {
        return "*/*" + type2;
      }
      return type2.indexOf("/") === -1 ? mime3.lookup(type2) : type2;
    }
    function mimeMatch(expected, actual) {
      if (expected === false) {
        return false;
      }
      var actualParts = actual.split("/");
      var expectedParts = expected.split("/");
      if (actualParts.length !== 2 || expectedParts.length !== 2) {
        return false;
      }
      if (expectedParts[0] !== "*" && expectedParts[0] !== actualParts[0]) {
        return false;
      }
      if (expectedParts[1].substr(0, 2) === "*+") {
        return expectedParts[1].length <= actualParts[1].length + 1 && expectedParts[1].substr(1) === actualParts[1].substr(1 - expectedParts[1].length);
      }
      if (expectedParts[1] !== "*" && expectedParts[1] !== actualParts[1]) {
        return false;
      }
      return true;
    }
    function normalizeType(value) {
      var type2 = typer.parse(value);
      type2.parameters = void 0;
      return typer.format(type2);
    }
    function tryNormalizeType(value) {
      if (!value) {
        return null;
      }
      try {
        return normalizeType(value);
      } catch (err) {
        return null;
      }
    }
  }
});

// ../../node_modules/body-parser/lib/types/json.js
var require_json4 = __commonJS({
  "../../node_modules/body-parser/lib/types/json.js"(exports2, module2) {
    "use strict";
    var bytes = require_bytes();
    var contentType = require_content_type();
    var createError = require_http_errors();
    var debug = require_src()("body-parser:json");
    var read2 = require_read();
    var typeis = require_type_is();
    module2.exports = json2;
    var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/;
    var JSON_SYNTAX_CHAR = "#";
    var JSON_SYNTAX_REGEXP = /#+/g;
    function json2(options) {
      var opts = options || {};
      var limit = typeof opts.limit !== "number" ? bytes.parse(opts.limit || "100kb") : opts.limit;
      var inflate = opts.inflate !== false;
      var reviver = opts.reviver;
      var strict = opts.strict !== false;
      var type2 = opts.type || "application/json";
      var verify = opts.verify || false;
      if (verify !== false && typeof verify !== "function") {
        throw new TypeError("option verify must be function");
      }
      var shouldParse = typeof type2 !== "function" ? typeChecker(type2) : type2;
      function parse16(body3) {
        if (body3.length === 0) {
          return {};
        }
        if (strict) {
          var first2 = firstchar(body3);
          if (first2 !== "{" && first2 !== "[") {
            debug("strict violation");
            throw createStrictSyntaxError(body3, first2);
          }
        }
        try {
          debug("parse json");
          return JSON.parse(body3, reviver);
        } catch (e2) {
          throw normalizeJsonSyntaxError(e2, {
            message: e2.message,
            stack: e2.stack
          });
        }
      }
      return function jsonParser(req, res, next) {
        if (req._body) {
          debug("body already parsed");
          next();
          return;
        }
        req.body = req.body || {};
        if (!typeis.hasBody(req)) {
          debug("skip empty body");
          next();
          return;
        }
        debug("content-type %j", req.headers["content-type"]);
        if (!shouldParse(req)) {
          debug("skip parsing");
          next();
          return;
        }
        var charset = getCharset(req) || "utf-8";
        if (charset.slice(0, 4) !== "utf-") {
          debug("invalid charset");
          next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', {
            charset,
            type: "charset.unsupported"
          }));
          return;
        }
        read2(req, res, next, parse16, debug, {
          encoding: charset,
          inflate,
          limit,
          verify
        });
      };
    }
    function createStrictSyntaxError(str2, char) {
      var index4 = str2.indexOf(char);
      var partial = "";
      if (index4 !== -1) {
        partial = str2.substring(0, index4) + JSON_SYNTAX_CHAR;
        for (var i2 = index4 + 1; i2 < str2.length; i2++) {
          partial += JSON_SYNTAX_CHAR;
        }
      }
      try {
        JSON.parse(partial);
        throw new SyntaxError("strict violation");
      } catch (e2) {
        return normalizeJsonSyntaxError(e2, {
          message: e2.message.replace(JSON_SYNTAX_REGEXP, function(placeholder) {
            return str2.substring(index4, index4 + placeholder.length);
          }),
          stack: e2.stack
        });
      }
    }
    function firstchar(str2) {
      var match3 = FIRST_CHAR_REGEXP.exec(str2);
      return match3 ? match3[1] : void 0;
    }
    function getCharset(req) {
      try {
        return (contentType.parse(req).parameters.charset || "").toLowerCase();
      } catch (e2) {
        return void 0;
      }
    }
    function normalizeJsonSyntaxError(error, obj) {
      var keys2 = Object.getOwnPropertyNames(error);
      for (var i2 = 0; i2 < keys2.length; i2++) {
        var key2 = keys2[i2];
        if (key2 !== "stack" && key2 !== "message") {
          delete error[key2];
        }
      }
      error.stack = obj.stack.replace(error.message, obj.message);
      error.message = obj.message;
      return error;
    }
    function typeChecker(type2) {
      return function checkType(req) {
        return Boolean(typeis(req, type2));
      };
    }
  }
});

// ../../node_modules/body-parser/lib/types/raw.js
var require_raw2 = __commonJS({
  "../../node_modules/body-parser/lib/types/raw.js"(exports2, module2) {
    "use strict";
    var bytes = require_bytes();
    var debug = require_src()("body-parser:raw");
    var read2 = require_read();
    var typeis = require_type_is();
    module2.exports = raw2;
    function raw2(options) {
      var opts = options || {};
      var inflate = opts.inflate !== false;
      var limit = typeof opts.limit !== "number" ? bytes.parse(opts.limit || "100kb") : opts.limit;
      var type2 = opts.type || "application/octet-stream";
      var verify = opts.verify || false;
      if (verify !== false && typeof verify !== "function") {
        throw new TypeError("option verify must be function");
      }
      var shouldParse = typeof type2 !== "function" ? typeChecker(type2) : type2;
      function parse16(buf) {
        return buf;
      }
      return function rawParser(req, res, next) {
        if (req._body) {
          debug("body already parsed");
          next();
          return;
        }
        req.body = req.body || {};
        if (!typeis.hasBody(req)) {
          debug("skip empty body");
          next();
          return;
        }
        debug("content-type %j", req.headers["content-type"]);
        if (!shouldParse(req)) {
          debug("skip parsing");
          next();
          return;
        }
        read2(req, res, next, parse16, debug, {
          encoding: null,
          inflate,
          limit,
          verify
        });
      };
    }
    function typeChecker(type2) {
      return function checkType(req) {
        return Boolean(typeis(req, type2));
      };
    }
  }
});

// ../../node_modules/body-parser/lib/types/text.js
var require_text2 = __commonJS({
  "../../node_modules/body-parser/lib/types/text.js"(exports2, module2) {
    "use strict";
    var bytes = require_bytes();
    var contentType = require_content_type();
    var debug = require_src()("body-parser:text");
    var read2 = require_read();
    var typeis = require_type_is();
    module2.exports = text7;
    function text7(options) {
      var opts = options || {};
      var defaultCharset = opts.defaultCharset || "utf-8";
      var inflate = opts.inflate !== false;
      var limit = typeof opts.limit !== "number" ? bytes.parse(opts.limit || "100kb") : opts.limit;
      var type2 = opts.type || "text/plain";
      var verify = opts.verify || false;
      if (verify !== false && typeof verify !== "function") {
        throw new TypeError("option verify must be function");
      }
      var shouldParse = typeof type2 !== "function" ? typeChecker(type2) : type2;
      function parse16(buf) {
        return buf;
      }
      return function textParser(req, res, next) {
        if (req._body) {
          debug("body already parsed");
          next();
          return;
        }
        req.body = req.body || {};
        if (!typeis.hasBody(req)) {
          debug("skip empty body");
          next();
          return;
        }
        debug("content-type %j", req.headers["content-type"]);
        if (!shouldParse(req)) {
          debug("skip parsing");
          next();
          return;
        }
        var charset = getCharset(req) || defaultCharset;
        read2(req, res, next, parse16, debug, {
          encoding: charset,
          inflate,
          limit,
          verify
        });
      };
    }
    function getCharset(req) {
      try {
        return (contentType.parse(req).parameters.charset || "").toLowerCase();
      } catch (e2) {
        return void 0;
      }
    }
    function typeChecker(type2) {
      return function checkType(req) {
        return Boolean(typeis(req, type2));
      };
    }
  }
});

// ../../node_modules/es-errors/index.js
var require_es_errors = __commonJS({
  "../../node_modules/es-errors/index.js"(exports2, module2) {
    "use strict";
    module2.exports = Error;
  }
});

// ../../node_modules/es-errors/eval.js
var require_eval = __commonJS({
  "../../node_modules/es-errors/eval.js"(exports2, module2) {
    "use strict";
    module2.exports = EvalError;
  }
});

// ../../node_modules/es-errors/range.js
var require_range = __commonJS({
  "../../node_modules/es-errors/range.js"(exports2, module2) {
    "use strict";
    module2.exports = RangeError;
  }
});

// ../../node_modules/es-errors/ref.js
var require_ref = __commonJS({
  "../../node_modules/es-errors/ref.js"(exports2, module2) {
    "use strict";
    module2.exports = ReferenceError;
  }
});

// ../../node_modules/es-errors/syntax.js
var require_syntax = __commonJS({
  "../../node_modules/es-errors/syntax.js"(exports2, module2) {
    "use strict";
    module2.exports = SyntaxError;
  }
});

// ../../node_modules/es-errors/type.js
var require_type2 = __commonJS({
  "../../node_modules/es-errors/type.js"(exports2, module2) {
    "use strict";
    module2.exports = TypeError;
  }
});

// ../../node_modules/es-errors/uri.js
var require_uri = __commonJS({
  "../../node_modules/es-errors/uri.js"(exports2, module2) {
    "use strict";
    module2.exports = URIError;
  }
});

// ../../node_modules/has-symbols/shams.js
var require_shams = __commonJS({
  "../../node_modules/has-symbols/shams.js"(exports2, module2) {
    "use strict";
    module2.exports = function hasSymbols() {
      if (typeof Symbol !== "function" || typeof Object.getOwnPropertySymbols !== "function") {
        return false;
      }
      if (typeof Symbol.iterator === "symbol") {
        return true;
      }
      var obj = {};
      var sym = Symbol("test");
      var symObj = Object(sym);
      if (typeof sym === "string") {
        return false;
      }
      if (Object.prototype.toString.call(sym) !== "[object Symbol]") {
        return false;
      }
      if (Object.prototype.toString.call(symObj) !== "[object Symbol]") {
        return false;
      }
      var symVal = 42;
      obj[sym] = symVal;
      for (sym in obj) {
        return false;
      }
      if (typeof Object.keys === "function" && Object.keys(obj).length !== 0) {
        return false;
      }
      if (typeof Object.getOwnPropertyNames === "function" && Object.getOwnPropertyNames(obj).length !== 0) {
        return false;
      }
      var syms = Object.getOwnPropertySymbols(obj);
      if (syms.length !== 1 || syms[0] !== sym) {
        return false;
      }
      if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) {
        return false;
      }
      if (typeof Object.getOwnPropertyDescriptor === "function") {
        var descriptor = Object.getOwnPropertyDescriptor(obj, sym);
        if (descriptor.value !== symVal || descriptor.enumerable !== true) {
          return false;
        }
      }
      return true;
    };
  }
});

// ../../node_modules/has-symbols/index.js
var require_has_symbols = __commonJS({
  "../../node_modules/has-symbols/index.js"(exports2, module2) {
    "use strict";
    var origSymbol = typeof Symbol !== "undefined" && Symbol;
    var hasSymbolSham = require_shams();
    module2.exports = function hasNativeSymbols() {
      if (typeof origSymbol !== "function") {
        return false;
      }
      if (typeof Symbol !== "function") {
        return false;
      }
      if (typeof origSymbol("foo") !== "symbol") {
        return false;
      }
      if (typeof Symbol("bar") !== "symbol") {
        return false;
      }
      return hasSymbolSham();
    };
  }
});

// ../../node_modules/has-proto/index.js
var require_has_proto = __commonJS({
  "../../node_modules/has-proto/index.js"(exports2, module2) {
    "use strict";
    var test2 = {
      foo: {}
    };
    var $Object = Object;
    module2.exports = function hasProto() {
      return { __proto__: test2 }.foo === test2.foo && !({ __proto__: null } instanceof $Object);
    };
  }
});

// ../../node_modules/function-bind/implementation.js
var require_implementation = __commonJS({
  "../../node_modules/function-bind/implementation.js"(exports2, module2) {
    "use strict";
    var ERROR_MESSAGE = "Function.prototype.bind called on incompatible ";
    var toStr = Object.prototype.toString;
    var max = Math.max;
    var funcType = "[object Function]";
    var concatty = function concatty2(a2, b) {
      var arr = [];
      for (var i2 = 0; i2 < a2.length; i2 += 1) {
        arr[i2] = a2[i2];
      }
      for (var j = 0; j < b.length; j += 1) {
        arr[j + a2.length] = b[j];
      }
      return arr;
    };
    var slicy = function slicy2(arrLike, offset) {
      var arr = [];
      for (var i2 = offset || 0, j = 0; i2 < arrLike.length; i2 += 1, j += 1) {
        arr[j] = arrLike[i2];
      }
      return arr;
    };
    var joiny = function(arr, joiner) {
      var str2 = "";
      for (var i2 = 0; i2 < arr.length; i2 += 1) {
        str2 += arr[i2];
        if (i2 + 1 < arr.length) {
          str2 += joiner;
        }
      }
      return str2;
    };
    module2.exports = function bind(that) {
      var target = this;
      if (typeof target !== "function" || toStr.apply(target) !== funcType) {
        throw new TypeError(ERROR_MESSAGE + target);
      }
      var args = slicy(arguments, 1);
      var bound;
      var binder = function() {
        if (this instanceof bound) {
          var result = target.apply(
            this,
            concatty(args, arguments)
          );
          if (Object(result) === result) {
            return result;
          }
          return this;
        }
        return target.apply(
          that,
          concatty(args, arguments)
        );
      };
      var boundLength = max(0, target.length - args.length);
      var boundArgs = [];
      for (var i2 = 0; i2 < boundLength; i2++) {
        boundArgs[i2] = "$" + i2;
      }
      bound = Function("binder", "return function (" + joiny(boundArgs, ",") + "){ return binder.apply(this,arguments); }")(binder);
      if (target.prototype) {
        var Empty = function Empty2() {
        };
        Empty.prototype = target.prototype;
        bound.prototype = new Empty();
        Empty.prototype = null;
      }
      return bound;
    };
  }
});

// ../../node_modules/function-bind/index.js
var require_function_bind2 = __commonJS({
  "../../node_modules/function-bind/index.js"(exports2, module2) {
    "use strict";
    var implementation = require_implementation();
    module2.exports = Function.prototype.bind || implementation;
  }
});

// ../../node_modules/hasown/index.js
var require_hasown = __commonJS({
  "../../node_modules/hasown/index.js"(exports2, module2) {
    "use strict";
    var call = Function.prototype.call;
    var $hasOwn = Object.prototype.hasOwnProperty;
    var bind = require_function_bind2();
    module2.exports = bind.call(call, $hasOwn);
  }
});

// ../../node_modules/get-intrinsic/index.js
var require_get_intrinsic = __commonJS({
  "../../node_modules/get-intrinsic/index.js"(exports2, module2) {
    "use strict";
    var undefined2;
    var $Error = require_es_errors();
    var $EvalError = require_eval();
    var $RangeError = require_range();
    var $ReferenceError = require_ref();
    var $SyntaxError = require_syntax();
    var $TypeError = require_type2();
    var $URIError = require_uri();
    var $Function = Function;
    var getEvalledConstructor = function(expressionSyntax) {
      try {
        return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")();
      } catch (e2) {
      }
    };
    var $gOPD = Object.getOwnPropertyDescriptor;
    if ($gOPD) {
      try {
        $gOPD({}, "");
      } catch (e2) {
        $gOPD = null;
      }
    }
    var throwTypeError = function() {
      throw new $TypeError();
    };
    var ThrowTypeError = $gOPD ? (function() {
      try {
        arguments.callee;
        return throwTypeError;
      } catch (calleeThrows) {
        try {
          return $gOPD(arguments, "callee").get;
        } catch (gOPDthrows) {
          return throwTypeError;
        }
      }
    })() : throwTypeError;
    var hasSymbols = require_has_symbols()();
    var hasProto = require_has_proto()();
    var getProto = Object.getPrototypeOf || (hasProto ? function(x2) {
      return x2.__proto__;
    } : null);
    var needsEval = {};
    var TypedArray = typeof Uint8Array === "undefined" || !getProto ? undefined2 : getProto(Uint8Array);
    var INTRINSICS = {
      __proto__: null,
      "%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError,
      "%Array%": Array,
      "%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer,
      "%ArrayIteratorPrototype%": hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined2,
      "%AsyncFromSyncIteratorPrototype%": undefined2,
      "%AsyncFunction%": needsEval,
      "%AsyncGenerator%": needsEval,
      "%AsyncGeneratorFunction%": needsEval,
      "%AsyncIteratorPrototype%": needsEval,
      "%Atomics%": typeof Atomics === "undefined" ? undefined2 : Atomics,
      "%BigInt%": typeof BigInt === "undefined" ? undefined2 : BigInt,
      "%BigInt64Array%": typeof BigInt64Array === "undefined" ? undefined2 : BigInt64Array,
      "%BigUint64Array%": typeof BigUint64Array === "undefined" ? undefined2 : BigUint64Array,
      "%Boolean%": Boolean,
      "%DataView%": typeof DataView === "undefined" ? undefined2 : DataView,
      "%Date%": Date,
      "%decodeURI%": decodeURI,
      "%decodeURIComponent%": decodeURIComponent,
      "%encodeURI%": encodeURI,
      "%encodeURIComponent%": encodeURIComponent,
      "%Error%": $Error,
      "%eval%": eval,
      // eslint-disable-line no-eval
      "%EvalError%": $EvalError,
      "%Float32Array%": typeof Float32Array === "undefined" ? undefined2 : Float32Array,
      "%Float64Array%": typeof Float64Array === "undefined" ? undefined2 : Float64Array,
      "%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined2 : FinalizationRegistry,
      "%Function%": $Function,
      "%GeneratorFunction%": needsEval,
      "%Int8Array%": typeof Int8Array === "undefined" ? undefined2 : Int8Array,
      "%Int16Array%": typeof Int16Array === "undefined" ? undefined2 : Int16Array,
      "%Int32Array%": typeof Int32Array === "undefined" ? undefined2 : Int32Array,
      "%isFinite%": isFinite,
      "%isNaN%": isNaN,
      "%IteratorPrototype%": hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined2,
      "%JSON%": typeof JSON === "object" ? JSON : undefined2,
      "%Map%": typeof Map === "undefined" ? undefined2 : Map,
      "%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Map())[Symbol.iterator]()),
      "%Math%": Math,
      "%Number%": Number,
      "%Object%": Object,
      "%parseFloat%": parseFloat,
      "%parseInt%": parseInt,
      "%Promise%": typeof Promise === "undefined" ? undefined2 : Promise,
      "%Proxy%": typeof Proxy === "undefined" ? undefined2 : Proxy,
      "%RangeError%": $RangeError,
      "%ReferenceError%": $ReferenceError,
      "%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect,
      "%RegExp%": RegExp,
      "%Set%": typeof Set === "undefined" ? undefined2 : Set,
      "%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Set())[Symbol.iterator]()),
      "%SharedArrayBuffer%": typeof SharedArrayBuffer === "undefined" ? undefined2 : SharedArrayBuffer,
      "%String%": String,
      "%StringIteratorPrototype%": hasSymbols && getProto ? getProto(""[Symbol.iterator]()) : undefined2,
      "%Symbol%": hasSymbols ? Symbol : undefined2,
      "%SyntaxError%": $SyntaxError,
      "%ThrowTypeError%": ThrowTypeError,
      "%TypedArray%": TypedArray,
      "%TypeError%": $TypeError,
      "%Uint8Array%": typeof Uint8Array === "undefined" ? undefined2 : Uint8Array,
      "%Uint8ClampedArray%": typeof Uint8ClampedArray === "undefined" ? undefined2 : Uint8ClampedArray,
      "%Uint16Array%": typeof Uint16Array === "undefined" ? undefined2 : Uint16Array,
      "%Uint32Array%": typeof Uint32Array === "undefined" ? undefined2 : Uint32Array,
      "%URIError%": $URIError,
      "%WeakMap%": typeof WeakMap === "undefined" ? undefined2 : WeakMap,
      "%WeakRef%": typeof WeakRef === "undefined" ? undefined2 : WeakRef,
      "%WeakSet%": typeof WeakSet === "undefined" ? undefined2 : WeakSet
    };
    if (getProto) {
      try {
        null.error;
      } catch (e2) {
        errorProto = getProto(getProto(e2));
        INTRINSICS["%Error.prototype%"] = errorProto;
      }
    }
    var errorProto;
    var doEval = function doEval2(name3) {
      var value;
      if (name3 === "%AsyncFunction%") {
        value = getEvalledConstructor("async function () {}");
      } else if (name3 === "%GeneratorFunction%") {
        value = getEvalledConstructor("function* () {}");
      } else if (name3 === "%AsyncGeneratorFunction%") {
        value = getEvalledConstructor("async function* () {}");
      } else if (name3 === "%AsyncGenerator%") {
        var fn = doEval2("%AsyncGeneratorFunction%");
        if (fn) {
          value = fn.prototype;
        }
      } else if (name3 === "%AsyncIteratorPrototype%") {
        var gen = doEval2("%AsyncGenerator%");
        if (gen && getProto) {
          value = getProto(gen.prototype);
        }
      }
      INTRINSICS[name3] = value;
      return value;
    };
    var LEGACY_ALIASES = {
      __proto__: null,
      "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"],
      "%ArrayPrototype%": ["Array", "prototype"],
      "%ArrayProto_entries%": ["Array", "prototype", "entries"],
      "%ArrayProto_forEach%": ["Array", "prototype", "forEach"],
      "%ArrayProto_keys%": ["Array", "prototype", "keys"],
      "%ArrayProto_values%": ["Array", "prototype", "values"],
      "%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"],
      "%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"],
      "%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"],
      "%BooleanPrototype%": ["Boolean", "prototype"],
      "%DataViewPrototype%": ["DataView", "prototype"],
      "%DatePrototype%": ["Date", "prototype"],
      "%ErrorPrototype%": ["Error", "prototype"],
      "%EvalErrorPrototype%": ["EvalError", "prototype"],
      "%Float32ArrayPrototype%": ["Float32Array", "prototype"],
      "%Float64ArrayPrototype%": ["Float64Array", "prototype"],
      "%FunctionPrototype%": ["Function", "prototype"],
      "%Generator%": ["GeneratorFunction", "prototype"],
      "%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"],
      "%Int8ArrayPrototype%": ["Int8Array", "prototype"],
      "%Int16ArrayPrototype%": ["Int16Array", "prototype"],
      "%Int32ArrayPrototype%": ["Int32Array", "prototype"],
      "%JSONParse%": ["JSON", "parse"],
      "%JSONStringify%": ["JSON", "stringify"],
      "%MapPrototype%": ["Map", "prototype"],
      "%NumberPrototype%": ["Number", "prototype"],
      "%ObjectPrototype%": ["Object", "prototype"],
      "%ObjProto_toString%": ["Object", "prototype", "toString"],
      "%ObjProto_valueOf%": ["Object", "prototype", "valueOf"],
      "%PromisePrototype%": ["Promise", "prototype"],
      "%PromiseProto_then%": ["Promise", "prototype", "then"],
      "%Promise_all%": ["Promise", "all"],
      "%Promise_reject%": ["Promise", "reject"],
      "%Promise_resolve%": ["Promise", "resolve"],
      "%RangeErrorPrototype%": ["RangeError", "prototype"],
      "%ReferenceErrorPrototype%": ["ReferenceError", "prototype"],
      "%RegExpPrototype%": ["RegExp", "prototype"],
      "%SetPrototype%": ["Set", "prototype"],
      "%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"],
      "%StringPrototype%": ["String", "prototype"],
      "%SymbolPrototype%": ["Symbol", "prototype"],
      "%SyntaxErrorPrototype%": ["SyntaxError", "prototype"],
      "%TypedArrayPrototype%": ["TypedArray", "prototype"],
      "%TypeErrorPrototype%": ["TypeError", "prototype"],
      "%Uint8ArrayPrototype%": ["Uint8Array", "prototype"],
      "%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"],
      "%Uint16ArrayPrototype%": ["Uint16Array", "prototype"],
      "%Uint32ArrayPrototype%": ["Uint32Array", "prototype"],
      "%URIErrorPrototype%": ["URIError", "prototype"],
      "%WeakMapPrototype%": ["WeakMap", "prototype"],
      "%WeakSetPrototype%": ["WeakSet", "prototype"]
    };
    var bind = require_function_bind2();
    var hasOwn = require_hasown();
    var $concat = bind.call(Function.call, Array.prototype.concat);
    var $spliceApply = bind.call(Function.apply, Array.prototype.splice);
    var $replace = bind.call(Function.call, String.prototype.replace);
    var $strSlice = bind.call(Function.call, String.prototype.slice);
    var $exec = bind.call(Function.call, RegExp.prototype.exec);
    var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g;
    var reEscapeChar = /\\(\\)?/g;
    var stringToPath = function stringToPath2(string2) {
      var first2 = $strSlice(string2, 0, 1);
      var last = $strSlice(string2, -1);
      if (first2 === "%" && last !== "%") {
        throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`");
      } else if (last === "%" && first2 !== "%") {
        throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`");
      }
      var result = [];
      $replace(string2, rePropName, function(match3, number2, quote, subString) {
        result[result.length] = quote ? $replace(subString, reEscapeChar, "$1") : number2 || match3;
      });
      return result;
    };
    var getBaseIntrinsic = function getBaseIntrinsic2(name3, allowMissing) {
      var intrinsicName = name3;
      var alias;
      if (hasOwn(LEGACY_ALIASES, intrinsicName)) {
        alias = LEGACY_ALIASES[intrinsicName];
        intrinsicName = "%" + alias[0] + "%";
      }
      if (hasOwn(INTRINSICS, intrinsicName)) {
        var value = INTRINSICS[intrinsicName];
        if (value === needsEval) {
          value = doEval(intrinsicName);
        }
        if (typeof value === "undefined" && !allowMissing) {
          throw new $TypeError("intrinsic " + name3 + " exists, but is not available. Please file an issue!");
        }
        return {
          alias,
          name: intrinsicName,
          value
        };
      }
      throw new $SyntaxError("intrinsic " + name3 + " does not exist!");
    };
    module2.exports = function GetIntrinsic(name3, allowMissing) {
      if (typeof name3 !== "string" || name3.length === 0) {
        throw new $TypeError("intrinsic name must be a non-empty string");
      }
      if (arguments.length > 1 && typeof allowMissing !== "boolean") {
        throw new $TypeError('"allowMissing" argument must be a boolean');
      }
      if ($exec(/^%?[^%]*%?$/, name3) === null) {
        throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");
      }
      var parts = stringToPath(name3);
      var intrinsicBaseName = parts.length > 0 ? parts[0] : "";
      var intrinsic = getBaseIntrinsic("%" + intrinsicBaseName + "%", allowMissing);
      var intrinsicRealName = intrinsic.name;
      var value = intrinsic.value;
      var skipFurtherCaching = false;
      var alias = intrinsic.alias;
      if (alias) {
        intrinsicBaseName = alias[0];
        $spliceApply(parts, $concat([0, 1], alias));
      }
      for (var i2 = 1, isOwn = true; i2 < parts.length; i2 += 1) {
        var part = parts[i2];
        var first2 = $strSlice(part, 0, 1);
        var last = $strSlice(part, -1);
        if ((first2 === '"' || first2 === "'" || first2 === "`" || (last === '"' || last === "'" || last === "`")) && first2 !== last) {
          throw new $SyntaxError("property names with quotes must have matching quotes");
        }
        if (part === "constructor" || !isOwn) {
          skipFurtherCaching = true;
        }
        intrinsicBaseName += "." + part;
        intrinsicRealName = "%" + intrinsicBaseName + "%";
        if (hasOwn(INTRINSICS, intrinsicRealName)) {
          value = INTRINSICS[intrinsicRealName];
        } else if (value != null) {
          if (!(part in value)) {
            if (!allowMissing) {
              throw new $TypeError("base intrinsic for " + name3 + " exists, but the property is not available.");
            }
            return void undefined2;
          }
          if ($gOPD && i2 + 1 >= parts.length) {
            var desc = $gOPD(value, part);
            isOwn = !!desc;
            if (isOwn && "get" in desc && !("originalValue" in desc.get)) {
              value = desc.get;
            } else {
              value = value[part];
            }
          } else {
            isOwn = hasOwn(value, part);
            value = value[part];
          }
          if (isOwn && !skipFurtherCaching) {
            INTRINSICS[intrinsicRealName] = value;
          }
        }
      }
      return value;
    };
  }
});

// ../../node_modules/es-define-property/index.js
var require_es_define_property = __commonJS({
  "../../node_modules/es-define-property/index.js"(exports2, module2) {
    "use strict";
    var GetIntrinsic = require_get_intrinsic();
    var $defineProperty = GetIntrinsic("%Object.defineProperty%", true) || false;
    if ($defineProperty) {
      try {
        $defineProperty({}, "a", { value: 1 });
      } catch (e2) {
        $defineProperty = false;
      }
    }
    module2.exports = $defineProperty;
  }
});

// ../../node_modules/gopd/index.js
var require_gopd = __commonJS({
  "../../node_modules/gopd/index.js"(exports2, module2) {
    "use strict";
    var GetIntrinsic = require_get_intrinsic();
    var $gOPD = GetIntrinsic("%Object.getOwnPropertyDescriptor%", true);
    if ($gOPD) {
      try {
        $gOPD([], "length");
      } catch (e2) {
        $gOPD = null;
      }
    }
    module2.exports = $gOPD;
  }
});

// ../../node_modules/define-data-property/index.js
var require_define_data_property = __commonJS({
  "../../node_modules/define-data-property/index.js"(exports2, module2) {
    "use strict";
    var $defineProperty = require_es_define_property();
    var $SyntaxError = require_syntax();
    var $TypeError = require_type2();
    var gopd = require_gopd();
    module2.exports = function defineDataProperty(obj, property, value) {
      if (!obj || typeof obj !== "object" && typeof obj !== "function") {
        throw new $TypeError("`obj` must be an object or a function`");
      }
      if (typeof property !== "string" && typeof property !== "symbol") {
        throw new $TypeError("`property` must be a string or a symbol`");
      }
      if (arguments.length > 3 && typeof arguments[3] !== "boolean" && arguments[3] !== null) {
        throw new $TypeError("`nonEnumerable`, if provided, must be a boolean or null");
      }
      if (arguments.length > 4 && typeof arguments[4] !== "boolean" && arguments[4] !== null) {
        throw new $TypeError("`nonWritable`, if provided, must be a boolean or null");
      }
      if (arguments.length > 5 && typeof arguments[5] !== "boolean" && arguments[5] !== null) {
        throw new $TypeError("`nonConfigurable`, if provided, must be a boolean or null");
      }
      if (arguments.length > 6 && typeof arguments[6] !== "boolean") {
        throw new $TypeError("`loose`, if provided, must be a boolean");
      }
      var nonEnumerable = arguments.length > 3 ? arguments[3] : null;
      var nonWritable = arguments.length > 4 ? arguments[4] : null;
      var nonConfigurable = arguments.length > 5 ? arguments[5] : null;
      var loose = arguments.length > 6 ? arguments[6] : false;
      var desc = !!gopd && gopd(obj, property);
      if ($defineProperty) {
        $defineProperty(obj, property, {
          configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,
          enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,
          value,
          writable: nonWritable === null && desc ? desc.writable : !nonWritable
        });
      } else if (loose || !nonEnumerable && !nonWritable && !nonConfigurable) {
        obj[property] = value;
      } else {
        throw new $SyntaxError("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");
      }
    };
  }
});

// ../../node_modules/has-property-descriptors/index.js
var require_has_property_descriptors = __commonJS({
  "../../node_modules/has-property-descriptors/index.js"(exports2, module2) {
    "use strict";
    var $defineProperty = require_es_define_property();
    var hasPropertyDescriptors = function hasPropertyDescriptors2() {
      return !!$defineProperty;
    };
    hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {
      if (!$defineProperty) {
        return null;
      }
      try {
        return $defineProperty([], "length", { value: 1 }).length !== 1;
      } catch (e2) {
        return true;
      }
    };
    module2.exports = hasPropertyDescriptors;
  }
});

// ../../node_modules/set-function-length/index.js
var require_set_function_length = __commonJS({
  "../../node_modules/set-function-length/index.js"(exports2, module2) {
    "use strict";
    var GetIntrinsic = require_get_intrinsic();
    var define2 = require_define_data_property();
    var hasDescriptors = require_has_property_descriptors()();
    var gOPD = require_gopd();
    var $TypeError = require_type2();
    var $floor = GetIntrinsic("%Math.floor%");
    module2.exports = function setFunctionLength(fn, length) {
      if (typeof fn !== "function") {
        throw new $TypeError("`fn` is not a function");
      }
      if (typeof length !== "number" || length < 0 || length > 4294967295 || $floor(length) !== length) {
        throw new $TypeError("`length` must be a positive 32-bit integer");
      }
      var loose = arguments.length > 2 && !!arguments[2];
      var functionLengthIsConfigurable = true;
      var functionLengthIsWritable = true;
      if ("length" in fn && gOPD) {
        var desc = gOPD(fn, "length");
        if (desc && !desc.configurable) {
          functionLengthIsConfigurable = false;
        }
        if (desc && !desc.writable) {
          functionLengthIsWritable = false;
        }
      }
      if (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {
        if (hasDescriptors) {
          define2(
            /** @type {Parameters<define>[0]} */
            fn,
            "length",
            length,
            true,
            true
          );
        } else {
          define2(
            /** @type {Parameters<define>[0]} */
            fn,
            "length",
            length
          );
        }
      }
      return fn;
    };
  }
});

// ../../node_modules/call-bind/index.js
var require_call_bind = __commonJS({
  "../../node_modules/call-bind/index.js"(exports2, module2) {
    "use strict";
    var bind = require_function_bind2();
    var GetIntrinsic = require_get_intrinsic();
    var setFunctionLength = require_set_function_length();
    var $TypeError = require_type2();
    var $apply = GetIntrinsic("%Function.prototype.apply%");
    var $call = GetIntrinsic("%Function.prototype.call%");
    var $reflectApply = GetIntrinsic("%Reflect.apply%", true) || bind.call($call, $apply);
    var $defineProperty = require_es_define_property();
    var $max = GetIntrinsic("%Math.max%");
    module2.exports = function callBind(originalFunction) {
      if (typeof originalFunction !== "function") {
        throw new $TypeError("a function is required");
      }
      var func = $reflectApply(bind, $call, arguments);
      return setFunctionLength(
        func,
        1 + $max(0, originalFunction.length - (arguments.length - 1)),
        true
      );
    };
    var applyBind = function applyBind2() {
      return $reflectApply(bind, $apply, arguments);
    };
    if ($defineProperty) {
      $defineProperty(module2.exports, "apply", { value: applyBind });
    } else {
      module2.exports.apply = applyBind;
    }
  }
});

// ../../node_modules/call-bind/callBound.js
var require_callBound = __commonJS({
  "../../node_modules/call-bind/callBound.js"(exports2, module2) {
    "use strict";
    var GetIntrinsic = require_get_intrinsic();
    var callBind = require_call_bind();
    var $indexOf = callBind(GetIntrinsic("String.prototype.indexOf"));
    module2.exports = function callBoundIntrinsic(name3, allowMissing) {
      var intrinsic = GetIntrinsic(name3, !!allowMissing);
      if (typeof intrinsic === "function" && $indexOf(name3, ".prototype.") > -1) {
        return callBind(intrinsic);
      }
      return intrinsic;
    };
  }
});

// ../../node_modules/object-inspect/util.inspect.js
var require_util_inspect = __commonJS({
  "../../node_modules/object-inspect/util.inspect.js"(exports2, module2) {
    module2.exports = require("util").inspect;
  }
});

// ../../node_modules/object-inspect/index.js
var require_object_inspect = __commonJS({
  "../../node_modules/object-inspect/index.js"(exports2, module2) {
    var hasMap = typeof Map === "function" && Map.prototype;
    var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, "size") : null;
    var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === "function" ? mapSizeDescriptor.get : null;
    var mapForEach = hasMap && Map.prototype.forEach;
    var hasSet = typeof Set === "function" && Set.prototype;
    var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, "size") : null;
    var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === "function" ? setSizeDescriptor.get : null;
    var setForEach = hasSet && Set.prototype.forEach;
    var hasWeakMap = typeof WeakMap === "function" && WeakMap.prototype;
    var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;
    var hasWeakSet = typeof WeakSet === "function" && WeakSet.prototype;
    var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;
    var hasWeakRef = typeof WeakRef === "function" && WeakRef.prototype;
    var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;
    var booleanValueOf = Boolean.prototype.valueOf;
    var objectToString = Object.prototype.toString;
    var functionToString = Function.prototype.toString;
    var $match = String.prototype.match;
    var $slice = String.prototype.slice;
    var $replace = String.prototype.replace;
    var $toUpperCase = String.prototype.toUpperCase;
    var $toLowerCase = String.prototype.toLowerCase;
    var $test = RegExp.prototype.test;
    var $concat = Array.prototype.concat;
    var $join = Array.prototype.join;
    var $arrSlice = Array.prototype.slice;
    var $floor = Math.floor;
    var bigIntValueOf = typeof BigInt === "function" ? BigInt.prototype.valueOf : null;
    var gOPS = Object.getOwnPropertySymbols;
    var symToString = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? Symbol.prototype.toString : null;
    var hasShammedSymbols = typeof Symbol === "function" && typeof Symbol.iterator === "object";
    var toStringTag = typeof Symbol === "function" && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? "object" : "symbol") ? Symbol.toStringTag : null;
    var isEnumerable = Object.prototype.propertyIsEnumerable;
    var gPO = (typeof Reflect === "function" ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ([].__proto__ === Array.prototype ? function(O) {
      return O.__proto__;
    } : null);
    function addNumericSeparator(num, str2) {
      if (num === Infinity || num === -Infinity || num !== num || num && num > -1e3 && num < 1e3 || $test.call(/e/, str2)) {
        return str2;
      }
      var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;
      if (typeof num === "number") {
        var int2 = num < 0 ? -$floor(-num) : $floor(num);
        if (int2 !== num) {
          var intStr = String(int2);
          var dec = $slice.call(str2, intStr.length + 1);
          return $replace.call(intStr, sepRegex, "$&_") + "." + $replace.call($replace.call(dec, /([0-9]{3})/g, "$&_"), /_$/, "");
        }
      }
      return $replace.call(str2, sepRegex, "$&_");
    }
    var utilInspect = require_util_inspect();
    var inspectCustom = utilInspect.custom;
    var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;
    module2.exports = function inspect_(obj, options, depth, seen) {
      var opts = options || {};
      if (has3(opts, "quoteStyle") && (opts.quoteStyle !== "single" && opts.quoteStyle !== "double")) {
        throw new TypeError('option "quoteStyle" must be "single" or "double"');
      }
      if (has3(opts, "maxStringLength") && (typeof opts.maxStringLength === "number" ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity : opts.maxStringLength !== null)) {
        throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');
      }
      var customInspect = has3(opts, "customInspect") ? opts.customInspect : true;
      if (typeof customInspect !== "boolean" && customInspect !== "symbol") {
        throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");
      }
      if (has3(opts, "indent") && opts.indent !== null && opts.indent !== "	" && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)) {
        throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');
      }
      if (has3(opts, "numericSeparator") && typeof opts.numericSeparator !== "boolean") {
        throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');
      }
      var numericSeparator = opts.numericSeparator;
      if (typeof obj === "undefined") {
        return "undefined";
      }
      if (obj === null) {
        return "null";
      }
      if (typeof obj === "boolean") {
        return obj ? "true" : "false";
      }
      if (typeof obj === "string") {
        return inspectString(obj, opts);
      }
      if (typeof obj === "number") {
        if (obj === 0) {
          return Infinity / obj > 0 ? "0" : "-0";
        }
        var str2 = String(obj);
        return numericSeparator ? addNumericSeparator(obj, str2) : str2;
      }
      if (typeof obj === "bigint") {
        var bigIntStr = String(obj) + "n";
        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;
      }
      var maxDepth = typeof opts.depth === "undefined" ? 5 : opts.depth;
      if (typeof depth === "undefined") {
        depth = 0;
      }
      if (depth >= maxDepth && maxDepth > 0 && typeof obj === "object") {
        return isArray2(obj) ? "[Array]" : "[Object]";
      }
      var indent2 = getIndent(opts, depth);
      if (typeof seen === "undefined") {
        seen = [];
      } else if (indexOf2(seen, obj) >= 0) {
        return "[Circular]";
      }
      function inspect4(value, from4, noIndent) {
        if (from4) {
          seen = $arrSlice.call(seen);
          seen.push(from4);
        }
        if (noIndent) {
          var newOpts = {
            depth: opts.depth
          };
          if (has3(opts, "quoteStyle")) {
            newOpts.quoteStyle = opts.quoteStyle;
          }
          return inspect_(value, newOpts, depth + 1, seen);
        }
        return inspect_(value, opts, depth + 1, seen);
      }
      if (typeof obj === "function" && !isRegExp(obj)) {
        var name3 = nameOf(obj);
        var keys2 = arrObjKeys(obj, inspect4);
        return "[Function" + (name3 ? ": " + name3 : " (anonymous)") + "]" + (keys2.length > 0 ? " { " + $join.call(keys2, ", ") + " }" : "");
      }
      if (isSymbol(obj)) {
        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, "$1") : symToString.call(obj);
        return typeof obj === "object" && !hasShammedSymbols ? markBoxed(symString) : symString;
      }
      if (isElement2(obj)) {
        var s5 = "<" + $toLowerCase.call(String(obj.nodeName));
        var attrs = obj.attributes || [];
        for (var i2 = 0; i2 < attrs.length; i2++) {
          s5 += " " + attrs[i2].name + "=" + wrapQuotes(quote(attrs[i2].value), "double", opts);
        }
        s5 += ">";
        if (obj.childNodes && obj.childNodes.length) {
          s5 += "...";
        }
        s5 += "</" + $toLowerCase.call(String(obj.nodeName)) + ">";
        return s5;
      }
      if (isArray2(obj)) {
        if (obj.length === 0) {
          return "[]";
        }
        var xs = arrObjKeys(obj, inspect4);
        if (indent2 && !singleLineValues(xs)) {
          return "[" + indentedJoin(xs, indent2) + "]";
        }
        return "[ " + $join.call(xs, ", ") + " ]";
      }
      if (isError2(obj)) {
        var parts = arrObjKeys(obj, inspect4);
        if (!("cause" in Error.prototype) && "cause" in obj && !isEnumerable.call(obj, "cause")) {
          return "{ [" + String(obj) + "] " + $join.call($concat.call("[cause]: " + inspect4(obj.cause), parts), ", ") + " }";
        }
        if (parts.length === 0) {
          return "[" + String(obj) + "]";
        }
        return "{ [" + String(obj) + "] " + $join.call(parts, ", ") + " }";
      }
      if (typeof obj === "object" && customInspect) {
        if (inspectSymbol && typeof obj[inspectSymbol] === "function" && utilInspect) {
          return utilInspect(obj, { depth: maxDepth - depth });
        } else if (customInspect !== "symbol" && typeof obj.inspect === "function") {
          return obj.inspect();
        }
      }
      if (isMap2(obj)) {
        var mapParts = [];
        if (mapForEach) {
          mapForEach.call(obj, function(value, key2) {
            mapParts.push(inspect4(key2, obj, true) + " => " + inspect4(value, obj));
          });
        }
        return collectionOf("Map", mapSize.call(obj), mapParts, indent2);
      }
      if (isSet2(obj)) {
        var setParts = [];
        if (setForEach) {
          setForEach.call(obj, function(value) {
            setParts.push(inspect4(value, obj));
          });
        }
        return collectionOf("Set", setSize.call(obj), setParts, indent2);
      }
      if (isWeakMap(obj)) {
        return weakCollectionOf("WeakMap");
      }
      if (isWeakSet(obj)) {
        return weakCollectionOf("WeakSet");
      }
      if (isWeakRef(obj)) {
        return weakCollectionOf("WeakRef");
      }
      if (isNumber2(obj)) {
        return markBoxed(inspect4(Number(obj)));
      }
      if (isBigInt(obj)) {
        return markBoxed(inspect4(bigIntValueOf.call(obj)));
      }
      if (isBoolean3(obj)) {
        return markBoxed(booleanValueOf.call(obj));
      }
      if (isString(obj)) {
        return markBoxed(inspect4(String(obj)));
      }
      if (typeof window !== "undefined" && obj === window) {
        return "{ [object Window] }";
      }
      if (typeof globalThis !== "undefined" && obj === globalThis || typeof global !== "undefined" && obj === global) {
        return "{ [object globalThis] }";
      }
      if (!isDate2(obj) && !isRegExp(obj)) {
        var ys = arrObjKeys(obj, inspect4);
        var isPlainObject5 = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;
        var protoTag = obj instanceof Object ? "" : "null prototype";
        var stringTag = !isPlainObject5 && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? "Object" : "";
        var constructorTag = isPlainObject5 || typeof obj.constructor !== "function" ? "" : obj.constructor.name ? obj.constructor.name + " " : "";
        var tag = constructorTag + (stringTag || protoTag ? "[" + $join.call($concat.call([], stringTag || [], protoTag || []), ": ") + "] " : "");
        if (ys.length === 0) {
          return tag + "{}";
        }
        if (indent2) {
          return tag + "{" + indentedJoin(ys, indent2) + "}";
        }
        return tag + "{ " + $join.call(ys, ", ") + " }";
      }
      return String(obj);
    };
    function wrapQuotes(s5, defaultStyle, opts) {
      var quoteChar = (opts.quoteStyle || defaultStyle) === "double" ? '"' : "'";
      return quoteChar + s5 + quoteChar;
    }
    function quote(s5) {
      return $replace.call(String(s5), /"/g, "&quot;");
    }
    function isArray2(obj) {
      return toStr(obj) === "[object Array]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj));
    }
    function isDate2(obj) {
      return toStr(obj) === "[object Date]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj));
    }
    function isRegExp(obj) {
      return toStr(obj) === "[object RegExp]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj));
    }
    function isError2(obj) {
      return toStr(obj) === "[object Error]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj));
    }
    function isString(obj) {
      return toStr(obj) === "[object String]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj));
    }
    function isNumber2(obj) {
      return toStr(obj) === "[object Number]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj));
    }
    function isBoolean3(obj) {
      return toStr(obj) === "[object Boolean]" && (!toStringTag || !(typeof obj === "object" && toStringTag in obj));
    }
    function isSymbol(obj) {
      if (hasShammedSymbols) {
        return obj && typeof obj === "object" && obj instanceof Symbol;
      }
      if (typeof obj === "symbol") {
        return true;
      }
      if (!obj || typeof obj !== "object" || !symToString) {
        return false;
      }
      try {
        symToString.call(obj);
        return true;
      } catch (e2) {
      }
      return false;
    }
    function isBigInt(obj) {
      if (!obj || typeof obj !== "object" || !bigIntValueOf) {
        return false;
      }
      try {
        bigIntValueOf.call(obj);
        return true;
      } catch (e2) {
      }
      return false;
    }
    var hasOwn = Object.prototype.hasOwnProperty || function(key2) {
      return key2 in this;
    };
    function has3(obj, key2) {
      return hasOwn.call(obj, key2);
    }
    function toStr(obj) {
      return objectToString.call(obj);
    }
    function nameOf(f3) {
      if (f3.name) {
        return f3.name;
      }
      var m2 = $match.call(functionToString.call(f3), /^function\s*([\w$]+)/);
      if (m2) {
        return m2[1];
      }
      return null;
    }
    function indexOf2(xs, x2) {
      if (xs.indexOf) {
        return xs.indexOf(x2);
      }
      for (var i2 = 0, l = xs.length; i2 < l; i2++) {
        if (xs[i2] === x2) {
          return i2;
        }
      }
      return -1;
    }
    function isMap2(x2) {
      if (!mapSize || !x2 || typeof x2 !== "object") {
        return false;
      }
      try {
        mapSize.call(x2);
        try {
          setSize.call(x2);
        } catch (s5) {
          return true;
        }
        return x2 instanceof Map;
      } catch (e2) {
      }
      return false;
    }
    function isWeakMap(x2) {
      if (!weakMapHas || !x2 || typeof x2 !== "object") {
        return false;
      }
      try {
        weakMapHas.call(x2, weakMapHas);
        try {
          weakSetHas.call(x2, weakSetHas);
        } catch (s5) {
          return true;
        }
        return x2 instanceof WeakMap;
      } catch (e2) {
      }
      return false;
    }
    function isWeakRef(x2) {
      if (!weakRefDeref || !x2 || typeof x2 !== "object") {
        return false;
      }
      try {
        weakRefDeref.call(x2);
        return true;
      } catch (e2) {
      }
      return false;
    }
    function isSet2(x2) {
      if (!setSize || !x2 || typeof x2 !== "object") {
        return false;
      }
      try {
        setSize.call(x2);
        try {
          mapSize.call(x2);
        } catch (m2) {
          return true;
        }
        return x2 instanceof Set;
      } catch (e2) {
      }
      return false;
    }
    function isWeakSet(x2) {
      if (!weakSetHas || !x2 || typeof x2 !== "object") {
        return false;
      }
      try {
        weakSetHas.call(x2, weakSetHas);
        try {
          weakMapHas.call(x2, weakMapHas);
        } catch (s5) {
          return true;
        }
        return x2 instanceof WeakSet;
      } catch (e2) {
      }
      return false;
    }
    function isElement2(x2) {
      if (!x2 || typeof x2 !== "object") {
        return false;
      }
      if (typeof HTMLElement !== "undefined" && x2 instanceof HTMLElement) {
        return true;
      }
      return typeof x2.nodeName === "string" && typeof x2.getAttribute === "function";
    }
    function inspectString(str2, opts) {
      if (str2.length > opts.maxStringLength) {
        var remaining = str2.length - opts.maxStringLength;
        var trailer = "... " + remaining + " more character" + (remaining > 1 ? "s" : "");
        return inspectString($slice.call(str2, 0, opts.maxStringLength), opts) + trailer;
      }
      var s5 = $replace.call($replace.call(str2, /(['\\])/g, "\\$1"), /[\x00-\x1f]/g, lowbyte);
      return wrapQuotes(s5, "single", opts);
    }
    function lowbyte(c) {
      var n = c.charCodeAt(0);
      var x2 = {
        8: "b",
        9: "t",
        10: "n",
        12: "f",
        13: "r"
      }[n];
      if (x2) {
        return "\\" + x2;
      }
      return "\\x" + (n < 16 ? "0" : "") + $toUpperCase.call(n.toString(16));
    }
    function markBoxed(str2) {
      return "Object(" + str2 + ")";
    }
    function weakCollectionOf(type2) {
      return type2 + " { ? }";
    }
    function collectionOf(type2, size, entries2, indent2) {
      var joinedEntries = indent2 ? indentedJoin(entries2, indent2) : $join.call(entries2, ", ");
      return type2 + " (" + size + ") {" + joinedEntries + "}";
    }
    function singleLineValues(xs) {
      for (var i2 = 0; i2 < xs.length; i2++) {
        if (indexOf2(xs[i2], "\n") >= 0) {
          return false;
        }
      }
      return true;
    }
    function getIndent(opts, depth) {
      var baseIndent;
      if (opts.indent === "	") {
        baseIndent = "	";
      } else if (typeof opts.indent === "number" && opts.indent > 0) {
        baseIndent = $join.call(Array(opts.indent + 1), " ");
      } else {
        return null;
      }
      return {
        base: baseIndent,
        prev: $join.call(Array(depth + 1), baseIndent)
      };
    }
    function indentedJoin(xs, indent2) {
      if (xs.length === 0) {
        return "";
      }
      var lineJoiner = "\n" + indent2.prev + indent2.base;
      return lineJoiner + $join.call(xs, "," + lineJoiner) + "\n" + indent2.prev;
    }
    function arrObjKeys(obj, inspect4) {
      var isArr = isArray2(obj);
      var xs = [];
      if (isArr) {
        xs.length = obj.length;
        for (var i2 = 0; i2 < obj.length; i2++) {
          xs[i2] = has3(obj, i2) ? inspect4(obj[i2], obj) : "";
        }
      }
      var syms = typeof gOPS === "function" ? gOPS(obj) : [];
      var symMap;
      if (hasShammedSymbols) {
        symMap = {};
        for (var k = 0; k < syms.length; k++) {
          symMap["$" + syms[k]] = syms[k];
        }
      }
      for (var key2 in obj) {
        if (!has3(obj, key2)) {
          continue;
        }
        if (isArr && String(Number(key2)) === key2 && key2 < obj.length) {
          continue;
        }
        if (hasShammedSymbols && symMap["$" + key2] instanceof Symbol) {
          continue;
        } else if ($test.call(/[^\w$]/, key2)) {
          xs.push(inspect4(key2, obj) + ": " + inspect4(obj[key2], obj));
        } else {
          xs.push(key2 + ": " + inspect4(obj[key2], obj));
        }
      }
      if (typeof gOPS === "function") {
        for (var j = 0; j < syms.length; j++) {
          if (isEnumerable.call(obj, syms[j])) {
            xs.push("[" + inspect4(syms[j]) + "]: " + inspect4(obj[syms[j]], obj));
          }
        }
      }
      return xs;
    }
  }
});

// ../../node_modules/side-channel/index.js
var require_side_channel = __commonJS({
  "../../node_modules/side-channel/index.js"(exports2, module2) {
    "use strict";
    var GetIntrinsic = require_get_intrinsic();
    var callBound = require_callBound();
    var inspect4 = require_object_inspect();
    var $TypeError = require_type2();
    var $WeakMap = GetIntrinsic("%WeakMap%", true);
    var $Map = GetIntrinsic("%Map%", true);
    var $weakMapGet = callBound("WeakMap.prototype.get", true);
    var $weakMapSet = callBound("WeakMap.prototype.set", true);
    var $weakMapHas = callBound("WeakMap.prototype.has", true);
    var $mapGet = callBound("Map.prototype.get", true);
    var $mapSet = callBound("Map.prototype.set", true);
    var $mapHas = callBound("Map.prototype.has", true);
    var listGetNode = function(list6, key2) {
      var prev = list6;
      var curr;
      for (; (curr = prev.next) !== null; prev = curr) {
        if (curr.key === key2) {
          prev.next = curr.next;
          curr.next = /** @type {NonNullable<typeof list.next>} */
          list6.next;
          list6.next = curr;
          return curr;
        }
      }
    };
    var listGet = function(objects, key2) {
      var node3 = listGetNode(objects, key2);
      return node3 && node3.value;
    };
    var listSet = function(objects, key2, value) {
      var node3 = listGetNode(objects, key2);
      if (node3) {
        node3.value = value;
      } else {
        objects.next = /** @type {import('.').ListNode<typeof value>} */
        {
          // eslint-disable-line no-param-reassign, no-extra-parens
          key: key2,
          next: objects.next,
          value
        };
      }
    };
    var listHas = function(objects, key2) {
      return !!listGetNode(objects, key2);
    };
    module2.exports = function getSideChannel() {
      var $wm;
      var $m;
      var $o;
      var channel = {
        assert: function(key2) {
          if (!channel.has(key2)) {
            throw new $TypeError("Side channel does not contain " + inspect4(key2));
          }
        },
        get: function(key2) {
          if ($WeakMap && key2 && (typeof key2 === "object" || typeof key2 === "function")) {
            if ($wm) {
              return $weakMapGet($wm, key2);
            }
          } else if ($Map) {
            if ($m) {
              return $mapGet($m, key2);
            }
          } else {
            if ($o) {
              return listGet($o, key2);
            }
          }
        },
        has: function(key2) {
          if ($WeakMap && key2 && (typeof key2 === "object" || typeof key2 === "function")) {
            if ($wm) {
              return $weakMapHas($wm, key2);
            }
          } else if ($Map) {
            if ($m) {
              return $mapHas($m, key2);
            }
          } else {
            if ($o) {
              return listHas($o, key2);
            }
          }
          return false;
        },
        set: function(key2, value) {
          if ($WeakMap && key2 && (typeof key2 === "object" || typeof key2 === "function")) {
            if (!$wm) {
              $wm = new $WeakMap();
            }
            $weakMapSet($wm, key2, value);
          } else if ($Map) {
            if (!$m) {
              $m = new $Map();
            }
            $mapSet($m, key2, value);
          } else {
            if (!$o) {
              $o = { key: {}, next: null };
            }
            listSet($o, key2, value);
          }
        }
      };
      return channel;
    };
  }
});

// ../../node_modules/qs/lib/formats.js
var require_formats = __commonJS({
  "../../node_modules/qs/lib/formats.js"(exports2, module2) {
    "use strict";
    var replace = String.prototype.replace;
    var percentTwenties = /%20/g;
    var Format = {
      RFC1738: "RFC1738",
      RFC3986: "RFC3986"
    };
    module2.exports = {
      "default": Format.RFC3986,
      formatters: {
        RFC1738: function(value) {
          return replace.call(value, percentTwenties, "+");
        },
        RFC3986: function(value) {
          return String(value);
        }
      },
      RFC1738: Format.RFC1738,
      RFC3986: Format.RFC3986
    };
  }
});

// ../../node_modules/qs/lib/utils.js
var require_utils10 = __commonJS({
  "../../node_modules/qs/lib/utils.js"(exports2, module2) {
    "use strict";
    var formats = require_formats();
    var has3 = Object.prototype.hasOwnProperty;
    var isArray2 = Array.isArray;
    var hexTable = (function() {
      var array = [];
      for (var i2 = 0; i2 < 256; ++i2) {
        array.push("%" + ((i2 < 16 ? "0" : "") + i2.toString(16)).toUpperCase());
      }
      return array;
    })();
    var compactQueue = function compactQueue2(queue) {
      while (queue.length > 1) {
        var item = queue.pop();
        var obj = item.obj[item.prop];
        if (isArray2(obj)) {
          var compacted = [];
          for (var j = 0; j < obj.length; ++j) {
            if (typeof obj[j] !== "undefined") {
              compacted.push(obj[j]);
            }
          }
          item.obj[item.prop] = compacted;
        }
      }
    };
    var arrayToObject = function arrayToObject2(source2, options) {
      var obj = options && options.plainObjects ? /* @__PURE__ */ Object.create(null) : {};
      for (var i2 = 0; i2 < source2.length; ++i2) {
        if (typeof source2[i2] !== "undefined") {
          obj[i2] = source2[i2];
        }
      }
      return obj;
    };
    var merge3 = function merge4(target, source2, options) {
      if (!source2) {
        return target;
      }
      if (typeof source2 !== "object") {
        if (isArray2(target)) {
          target.push(source2);
        } else if (target && typeof target === "object") {
          if (options && (options.plainObjects || options.allowPrototypes) || !has3.call(Object.prototype, source2)) {
            target[source2] = true;
          }
        } else {
          return [target, source2];
        }
        return target;
      }
      if (!target || typeof target !== "object") {
        return [target].concat(source2);
      }
      var mergeTarget = target;
      if (isArray2(target) && !isArray2(source2)) {
        mergeTarget = arrayToObject(target, options);
      }
      if (isArray2(target) && isArray2(source2)) {
        source2.forEach(function(item, i2) {
          if (has3.call(target, i2)) {
            var targetItem = target[i2];
            if (targetItem && typeof targetItem === "object" && item && typeof item === "object") {
              target[i2] = merge4(targetItem, item, options);
            } else {
              target.push(item);
            }
          } else {
            target[i2] = item;
          }
        });
        return target;
      }
      return Object.keys(source2).reduce(function(acc, key2) {
        var value = source2[key2];
        if (has3.call(acc, key2)) {
          acc[key2] = merge4(acc[key2], value, options);
        } else {
          acc[key2] = value;
        }
        return acc;
      }, mergeTarget);
    };
    var assign2 = function assignSingleSource(target, source2) {
      return Object.keys(source2).reduce(function(acc, key2) {
        acc[key2] = source2[key2];
        return acc;
      }, target);
    };
    var decode2 = function(str2, decoder, charset) {
      var strWithoutPlus = str2.replace(/\+/g, " ");
      if (charset === "iso-8859-1") {
        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);
      }
      try {
        return decodeURIComponent(strWithoutPlus);
      } catch (e2) {
        return strWithoutPlus;
      }
    };
    var limit = 1024;
    var encode = function encode2(str2, defaultEncoder, charset, kind, format) {
      if (str2.length === 0) {
        return str2;
      }
      var string2 = str2;
      if (typeof str2 === "symbol") {
        string2 = Symbol.prototype.toString.call(str2);
      } else if (typeof str2 !== "string") {
        string2 = String(str2);
      }
      if (charset === "iso-8859-1") {
        return escape(string2).replace(/%u[0-9a-f]{4}/gi, function($0) {
          return "%26%23" + parseInt($0.slice(2), 16) + "%3B";
        });
      }
      var out = "";
      for (var j = 0; j < string2.length; j += limit) {
        var segment = string2.length >= limit ? string2.slice(j, j + limit) : string2;
        var arr = [];
        for (var i2 = 0; i2 < segment.length; ++i2) {
          var c = segment.charCodeAt(i2);
          if (c === 45 || c === 46 || c === 95 || c === 126 || c >= 48 && c <= 57 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || format === formats.RFC1738 && (c === 40 || c === 41)) {
            arr[arr.length] = segment.charAt(i2);
            continue;
          }
          if (c < 128) {
            arr[arr.length] = hexTable[c];
            continue;
          }
          if (c < 2048) {
            arr[arr.length] = hexTable[192 | c >> 6] + hexTable[128 | c & 63];
            continue;
          }
          if (c < 55296 || c >= 57344) {
            arr[arr.length] = hexTable[224 | c >> 12] + hexTable[128 | c >> 6 & 63] + hexTable[128 | c & 63];
            continue;
          }
          i2 += 1;
          c = 65536 + ((c & 1023) << 10 | segment.charCodeAt(i2) & 1023);
          arr[arr.length] = hexTable[240 | c >> 18] + hexTable[128 | c >> 12 & 63] + hexTable[128 | c >> 6 & 63] + hexTable[128 | c & 63];
        }
        out += arr.join("");
      }
      return out;
    };
    var compact = function compact2(value) {
      var queue = [{ obj: { o: value }, prop: "o" }];
      var refs = [];
      for (var i2 = 0; i2 < queue.length; ++i2) {
        var item = queue[i2];
        var obj = item.obj[item.prop];
        var keys2 = Object.keys(obj);
        for (var j = 0; j < keys2.length; ++j) {
          var key2 = keys2[j];
          var val = obj[key2];
          if (typeof val === "object" && val !== null && refs.indexOf(val) === -1) {
            queue.push({ obj, prop: key2 });
            refs.push(val);
          }
        }
      }
      compactQueue(queue);
      return value;
    };
    var isRegExp = function isRegExp2(obj) {
      return Object.prototype.toString.call(obj) === "[object RegExp]";
    };
    var isBuffer3 = function isBuffer4(obj) {
      if (!obj || typeof obj !== "object") {
        return false;
      }
      return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
    };
    var combine2 = function combine3(a2, b) {
      return [].concat(a2, b);
    };
    var maybeMap = function maybeMap2(val, fn) {
      if (isArray2(val)) {
        var mapped = [];
        for (var i2 = 0; i2 < val.length; i2 += 1) {
          mapped.push(fn(val[i2]));
        }
        return mapped;
      }
      return fn(val);
    };
    module2.exports = {
      arrayToObject,
      assign: assign2,
      combine: combine2,
      compact,
      decode: decode2,
      encode,
      isBuffer: isBuffer3,
      isRegExp,
      maybeMap,
      merge: merge3
    };
  }
});

// ../../node_modules/qs/lib/stringify.js
var require_stringify4 = __commonJS({
  "../../node_modules/qs/lib/stringify.js"(exports2, module2) {
    "use strict";
    var getSideChannel = require_side_channel();
    var utils2 = require_utils10();
    var formats = require_formats();
    var has3 = Object.prototype.hasOwnProperty;
    var arrayPrefixGenerators = {
      brackets: function brackets(prefix2) {
        return prefix2 + "[]";
      },
      comma: "comma",
      indices: function indices(prefix2, key2) {
        return prefix2 + "[" + key2 + "]";
      },
      repeat: function repeat2(prefix2) {
        return prefix2;
      }
    };
    var isArray2 = Array.isArray;
    var push = Array.prototype.push;
    var pushToArray = function(arr, valueOrArray) {
      push.apply(arr, isArray2(valueOrArray) ? valueOrArray : [valueOrArray]);
    };
    var toISO = Date.prototype.toISOString;
    var defaultFormat = formats["default"];
    var defaults3 = {
      addQueryPrefix: false,
      allowDots: false,
      allowEmptyArrays: false,
      arrayFormat: "indices",
      charset: "utf-8",
      charsetSentinel: false,
      delimiter: "&",
      encode: true,
      encodeDotInKeys: false,
      encoder: utils2.encode,
      encodeValuesOnly: false,
      format: defaultFormat,
      formatter: formats.formatters[defaultFormat],
      // deprecated
      indices: false,
      serializeDate: function serializeDate(date) {
        return toISO.call(date);
      },
      skipNulls: false,
      strictNullHandling: false
    };
    var isNonNullishPrimitive = function isNonNullishPrimitive2(v) {
      return typeof v === "string" || typeof v === "number" || typeof v === "boolean" || typeof v === "symbol" || typeof v === "bigint";
    };
    var sentinel = {};
    var stringify4 = function stringify5(object, prefix2, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, encoder, filter6, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, sideChannel) {
      var obj = object;
      var tmpSc = sideChannel;
      var step = 0;
      var findFlag = false;
      while ((tmpSc = tmpSc.get(sentinel)) !== void 0 && !findFlag) {
        var pos = tmpSc.get(object);
        step += 1;
        if (typeof pos !== "undefined") {
          if (pos === step) {
            throw new RangeError("Cyclic object value");
          } else {
            findFlag = true;
          }
        }
        if (typeof tmpSc.get(sentinel) === "undefined") {
          step = 0;
        }
      }
      if (typeof filter6 === "function") {
        obj = filter6(prefix2, obj);
      } else if (obj instanceof Date) {
        obj = serializeDate(obj);
      } else if (generateArrayPrefix === "comma" && isArray2(obj)) {
        obj = utils2.maybeMap(obj, function(value2) {
          if (value2 instanceof Date) {
            return serializeDate(value2);
          }
          return value2;
        });
      }
      if (obj === null) {
        if (strictNullHandling) {
          return encoder && !encodeValuesOnly ? encoder(prefix2, defaults3.encoder, charset, "key", format) : prefix2;
        }
        obj = "";
      }
      if (isNonNullishPrimitive(obj) || utils2.isBuffer(obj)) {
        if (encoder) {
          var keyValue = encodeValuesOnly ? prefix2 : encoder(prefix2, defaults3.encoder, charset, "key", format);
          return [formatter(keyValue) + "=" + formatter(encoder(obj, defaults3.encoder, charset, "value", format))];
        }
        return [formatter(prefix2) + "=" + formatter(String(obj))];
      }
      var values = [];
      if (typeof obj === "undefined") {
        return values;
      }
      var objKeys;
      if (generateArrayPrefix === "comma" && isArray2(obj)) {
        if (encodeValuesOnly && encoder) {
          obj = utils2.maybeMap(obj, encoder);
        }
        objKeys = [{ value: obj.length > 0 ? obj.join(",") || null : void 0 }];
      } else if (isArray2(filter6)) {
        objKeys = filter6;
      } else {
        var keys2 = Object.keys(obj);
        objKeys = sort ? keys2.sort(sort) : keys2;
      }
      var encodedPrefix = encodeDotInKeys ? prefix2.replace(/\./g, "%2E") : prefix2;
      var adjustedPrefix = commaRoundTrip && isArray2(obj) && obj.length === 1 ? encodedPrefix + "[]" : encodedPrefix;
      if (allowEmptyArrays && isArray2(obj) && obj.length === 0) {
        return adjustedPrefix + "[]";
      }
      for (var j = 0; j < objKeys.length; ++j) {
        var key2 = objKeys[j];
        var value = typeof key2 === "object" && typeof key2.value !== "undefined" ? key2.value : obj[key2];
        if (skipNulls && value === null) {
          continue;
        }
        var encodedKey = allowDots && encodeDotInKeys ? key2.replace(/\./g, "%2E") : key2;
        var keyPrefix = isArray2(obj) ? typeof generateArrayPrefix === "function" ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix : adjustedPrefix + (allowDots ? "." + encodedKey : "[" + encodedKey + "]");
        sideChannel.set(object, step);
        var valueSideChannel = getSideChannel();
        valueSideChannel.set(sentinel, sideChannel);
        pushToArray(values, stringify5(
          value,
          keyPrefix,
          generateArrayPrefix,
          commaRoundTrip,
          allowEmptyArrays,
          strictNullHandling,
          skipNulls,
          encodeDotInKeys,
          generateArrayPrefix === "comma" && encodeValuesOnly && isArray2(obj) ? null : encoder,
          filter6,
          sort,
          allowDots,
          serializeDate,
          format,
          formatter,
          encodeValuesOnly,
          charset,
          valueSideChannel
        ));
      }
      return values;
    };
    var normalizeStringifyOptions = function normalizeStringifyOptions2(opts) {
      if (!opts) {
        return defaults3;
      }
      if (typeof opts.allowEmptyArrays !== "undefined" && typeof opts.allowEmptyArrays !== "boolean") {
        throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");
      }
      if (typeof opts.encodeDotInKeys !== "undefined" && typeof opts.encodeDotInKeys !== "boolean") {
        throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");
      }
      if (opts.encoder !== null && typeof opts.encoder !== "undefined" && typeof opts.encoder !== "function") {
        throw new TypeError("Encoder has to be a function.");
      }
      var charset = opts.charset || defaults3.charset;
      if (typeof opts.charset !== "undefined" && opts.charset !== "utf-8" && opts.charset !== "iso-8859-1") {
        throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");
      }
      var format = formats["default"];
      if (typeof opts.format !== "undefined") {
        if (!has3.call(formats.formatters, opts.format)) {
          throw new TypeError("Unknown format option provided.");
        }
        format = opts.format;
      }
      var formatter = formats.formatters[format];
      var filter6 = defaults3.filter;
      if (typeof opts.filter === "function" || isArray2(opts.filter)) {
        filter6 = opts.filter;
      }
      var arrayFormat;
      if (opts.arrayFormat in arrayPrefixGenerators) {
        arrayFormat = opts.arrayFormat;
      } else if ("indices" in opts) {
        arrayFormat = opts.indices ? "indices" : "repeat";
      } else {
        arrayFormat = defaults3.arrayFormat;
      }
      if ("commaRoundTrip" in opts && typeof opts.commaRoundTrip !== "boolean") {
        throw new TypeError("`commaRoundTrip` must be a boolean, or absent");
      }
      var allowDots = typeof opts.allowDots === "undefined" ? opts.encodeDotInKeys === true ? true : defaults3.allowDots : !!opts.allowDots;
      return {
        addQueryPrefix: typeof opts.addQueryPrefix === "boolean" ? opts.addQueryPrefix : defaults3.addQueryPrefix,
        allowDots,
        allowEmptyArrays: typeof opts.allowEmptyArrays === "boolean" ? !!opts.allowEmptyArrays : defaults3.allowEmptyArrays,
        arrayFormat,
        charset,
        charsetSentinel: typeof opts.charsetSentinel === "boolean" ? opts.charsetSentinel : defaults3.charsetSentinel,
        commaRoundTrip: opts.commaRoundTrip,
        delimiter: typeof opts.delimiter === "undefined" ? defaults3.delimiter : opts.delimiter,
        encode: typeof opts.encode === "boolean" ? opts.encode : defaults3.encode,
        encodeDotInKeys: typeof opts.encodeDotInKeys === "boolean" ? opts.encodeDotInKeys : defaults3.encodeDotInKeys,
        encoder: typeof opts.encoder === "function" ? opts.encoder : defaults3.encoder,
        encodeValuesOnly: typeof opts.encodeValuesOnly === "boolean" ? opts.encodeValuesOnly : defaults3.encodeValuesOnly,
        filter: filter6,
        format,
        formatter,
        serializeDate: typeof opts.serializeDate === "function" ? opts.serializeDate : defaults3.serializeDate,
        skipNulls: typeof opts.skipNulls === "boolean" ? opts.skipNulls : defaults3.skipNulls,
        sort: typeof opts.sort === "function" ? opts.sort : null,
        strictNullHandling: typeof opts.strictNullHandling === "boolean" ? opts.strictNullHandling : defaults3.strictNullHandling
      };
    };
    module2.exports = function(object, opts) {
      var obj = object;
      var options = normalizeStringifyOptions(opts);
      var objKeys;
      var filter6;
      if (typeof options.filter === "function") {
        filter6 = options.filter;
        obj = filter6("", obj);
      } else if (isArray2(options.filter)) {
        filter6 = options.filter;
        objKeys = filter6;
      }
      var keys2 = [];
      if (typeof obj !== "object" || obj === null) {
        return "";
      }
      var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];
      var commaRoundTrip = generateArrayPrefix === "comma" && options.commaRoundTrip;
      if (!objKeys) {
        objKeys = Object.keys(obj);
      }
      if (options.sort) {
        objKeys.sort(options.sort);
      }
      var sideChannel = getSideChannel();
      for (var i2 = 0; i2 < objKeys.length; ++i2) {
        var key2 = objKeys[i2];
        if (options.skipNulls && obj[key2] === null) {
          continue;
        }
        pushToArray(keys2, stringify4(
          obj[key2],
          key2,
          generateArrayPrefix,
          commaRoundTrip,
          options.allowEmptyArrays,
          options.strictNullHandling,
          options.skipNulls,
          options.encodeDotInKeys,
          options.encode ? options.encoder : null,
          options.filter,
          options.sort,
          options.allowDots,
          options.serializeDate,
          options.format,
          options.formatter,
          options.encodeValuesOnly,
          options.charset,
          sideChannel
        ));
      }
      var joined = keys2.join(options.delimiter);
      var prefix2 = options.addQueryPrefix === true ? "?" : "";
      if (options.charsetSentinel) {
        if (options.charset === "iso-8859-1") {
          prefix2 += "utf8=%26%2310003%3B&";
        } else {
          prefix2 += "utf8=%E2%9C%93&";
        }
      }
      return joined.length > 0 ? prefix2 + joined : "";
    };
  }
});

// ../../node_modules/qs/lib/parse.js
var require_parse6 = __commonJS({
  "../../node_modules/qs/lib/parse.js"(exports2, module2) {
    "use strict";
    var utils2 = require_utils10();
    var has3 = Object.prototype.hasOwnProperty;
    var isArray2 = Array.isArray;
    var defaults3 = {
      allowDots: false,
      allowEmptyArrays: false,
      allowPrototypes: false,
      allowSparse: false,
      arrayLimit: 20,
      charset: "utf-8",
      charsetSentinel: false,
      comma: false,
      decodeDotInKeys: false,
      decoder: utils2.decode,
      delimiter: "&",
      depth: 5,
      duplicates: "combine",
      ignoreQueryPrefix: false,
      interpretNumericEntities: false,
      parameterLimit: 1e3,
      parseArrays: true,
      plainObjects: false,
      strictDepth: false,
      strictNullHandling: false
    };
    var interpretNumericEntities = function(str2) {
      return str2.replace(/&#(\d+);/g, function($0, numberStr) {
        return String.fromCharCode(parseInt(numberStr, 10));
      });
    };
    var parseArrayValue = function(val, options) {
      if (val && typeof val === "string" && options.comma && val.indexOf(",") > -1) {
        return val.split(",");
      }
      return val;
    };
    var isoSentinel = "utf8=%26%2310003%3B";
    var charsetSentinel = "utf8=%E2%9C%93";
    var parseValues = function parseQueryStringValues(str2, options) {
      var obj = { __proto__: null };
      var cleanStr = options.ignoreQueryPrefix ? str2.replace(/^\?/, "") : str2;
      cleanStr = cleanStr.replace(/%5B/gi, "[").replace(/%5D/gi, "]");
      var limit = options.parameterLimit === Infinity ? void 0 : options.parameterLimit;
      var parts = cleanStr.split(options.delimiter, limit);
      var skipIndex = -1;
      var i2;
      var charset = options.charset;
      if (options.charsetSentinel) {
        for (i2 = 0; i2 < parts.length; ++i2) {
          if (parts[i2].indexOf("utf8=") === 0) {
            if (parts[i2] === charsetSentinel) {
              charset = "utf-8";
            } else if (parts[i2] === isoSentinel) {
              charset = "iso-8859-1";
            }
            skipIndex = i2;
            i2 = parts.length;
          }
        }
      }
      for (i2 = 0; i2 < parts.length; ++i2) {
        if (i2 === skipIndex) {
          continue;
        }
        var part = parts[i2];
        var bracketEqualsPos = part.indexOf("]=");
        var pos = bracketEqualsPos === -1 ? part.indexOf("=") : bracketEqualsPos + 1;
        var key2, val;
        if (pos === -1) {
          key2 = options.decoder(part, defaults3.decoder, charset, "key");
          val = options.strictNullHandling ? null : "";
        } else {
          key2 = options.decoder(part.slice(0, pos), defaults3.decoder, charset, "key");
          val = utils2.maybeMap(
            parseArrayValue(part.slice(pos + 1), options),
            function(encodedVal) {
              return options.decoder(encodedVal, defaults3.decoder, charset, "value");
            }
          );
        }
        if (val && options.interpretNumericEntities && charset === "iso-8859-1") {
          val = interpretNumericEntities(val);
        }
        if (part.indexOf("[]=") > -1) {
          val = isArray2(val) ? [val] : val;
        }
        var existing = has3.call(obj, key2);
        if (existing && options.duplicates === "combine") {
          obj[key2] = utils2.combine(obj[key2], val);
        } else if (!existing || options.duplicates === "last") {
          obj[key2] = val;
        }
      }
      return obj;
    };
    var parseObject = function(chain, val, options, valuesParsed) {
      var leaf = valuesParsed ? val : parseArrayValue(val, options);
      for (var i2 = chain.length - 1; i2 >= 0; --i2) {
        var obj;
        var root6 = chain[i2];
        if (root6 === "[]" && options.parseArrays) {
          obj = options.allowEmptyArrays && (leaf === "" || options.strictNullHandling && leaf === null) ? [] : [].concat(leaf);
        } else {
          obj = options.plainObjects ? /* @__PURE__ */ Object.create(null) : {};
          var cleanRoot = root6.charAt(0) === "[" && root6.charAt(root6.length - 1) === "]" ? root6.slice(1, -1) : root6;
          var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, ".") : cleanRoot;
          var index4 = parseInt(decodedRoot, 10);
          if (!options.parseArrays && decodedRoot === "") {
            obj = { 0: leaf };
          } else if (!isNaN(index4) && root6 !== decodedRoot && String(index4) === decodedRoot && index4 >= 0 && (options.parseArrays && index4 <= options.arrayLimit)) {
            obj = [];
            obj[index4] = leaf;
          } else if (decodedRoot !== "__proto__") {
            obj[decodedRoot] = leaf;
          }
        }
        leaf = obj;
      }
      return leaf;
    };
    var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {
      if (!givenKey) {
        return;
      }
      var key2 = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, "[$1]") : givenKey;
      var brackets = /(\[[^[\]]*])/;
      var child = /(\[[^[\]]*])/g;
      var segment = options.depth > 0 && brackets.exec(key2);
      var parent2 = segment ? key2.slice(0, segment.index) : key2;
      var keys2 = [];
      if (parent2) {
        if (!options.plainObjects && has3.call(Object.prototype, parent2)) {
          if (!options.allowPrototypes) {
            return;
          }
        }
        keys2.push(parent2);
      }
      var i2 = 0;
      while (options.depth > 0 && (segment = child.exec(key2)) !== null && i2 < options.depth) {
        i2 += 1;
        if (!options.plainObjects && has3.call(Object.prototype, segment[1].slice(1, -1))) {
          if (!options.allowPrototypes) {
            return;
          }
        }
        keys2.push(segment[1]);
      }
      if (segment) {
        if (options.strictDepth === true) {
          throw new RangeError("Input depth exceeded depth option of " + options.depth + " and strictDepth is true");
        }
        keys2.push("[" + key2.slice(segment.index) + "]");
      }
      return parseObject(keys2, val, options, valuesParsed);
    };
    var normalizeParseOptions = function normalizeParseOptions2(opts) {
      if (!opts) {
        return defaults3;
      }
      if (typeof opts.allowEmptyArrays !== "undefined" && typeof opts.allowEmptyArrays !== "boolean") {
        throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");
      }
      if (typeof opts.decodeDotInKeys !== "undefined" && typeof opts.decodeDotInKeys !== "boolean") {
        throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");
      }
      if (opts.decoder !== null && typeof opts.decoder !== "undefined" && typeof opts.decoder !== "function") {
        throw new TypeError("Decoder has to be a function.");
      }
      if (typeof opts.charset !== "undefined" && opts.charset !== "utf-8" && opts.charset !== "iso-8859-1") {
        throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");
      }
      var charset = typeof opts.charset === "undefined" ? defaults3.charset : opts.charset;
      var duplicates = typeof opts.duplicates === "undefined" ? defaults3.duplicates : opts.duplicates;
      if (duplicates !== "combine" && duplicates !== "first" && duplicates !== "last") {
        throw new TypeError("The duplicates option must be either combine, first, or last");
      }
      var allowDots = typeof opts.allowDots === "undefined" ? opts.decodeDotInKeys === true ? true : defaults3.allowDots : !!opts.allowDots;
      return {
        allowDots,
        allowEmptyArrays: typeof opts.allowEmptyArrays === "boolean" ? !!opts.allowEmptyArrays : defaults3.allowEmptyArrays,
        allowPrototypes: typeof opts.allowPrototypes === "boolean" ? opts.allowPrototypes : defaults3.allowPrototypes,
        allowSparse: typeof opts.allowSparse === "boolean" ? opts.allowSparse : defaults3.allowSparse,
        arrayLimit: typeof opts.arrayLimit === "number" ? opts.arrayLimit : defaults3.arrayLimit,
        charset,
        charsetSentinel: typeof opts.charsetSentinel === "boolean" ? opts.charsetSentinel : defaults3.charsetSentinel,
        comma: typeof opts.comma === "boolean" ? opts.comma : defaults3.comma,
        decodeDotInKeys: typeof opts.decodeDotInKeys === "boolean" ? opts.decodeDotInKeys : defaults3.decodeDotInKeys,
        decoder: typeof opts.decoder === "function" ? opts.decoder : defaults3.decoder,
        delimiter: typeof opts.delimiter === "string" || utils2.isRegExp(opts.delimiter) ? opts.delimiter : defaults3.delimiter,
        // eslint-disable-next-line no-implicit-coercion, no-extra-parens
        depth: typeof opts.depth === "number" || opts.depth === false ? +opts.depth : defaults3.depth,
        duplicates,
        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,
        interpretNumericEntities: typeof opts.interpretNumericEntities === "boolean" ? opts.interpretNumericEntities : defaults3.interpretNumericEntities,
        parameterLimit: typeof opts.parameterLimit === "number" ? opts.parameterLimit : defaults3.parameterLimit,
        parseArrays: opts.parseArrays !== false,
        plainObjects: typeof opts.plainObjects === "boolean" ? opts.plainObjects : defaults3.plainObjects,
        strictDepth: typeof opts.strictDepth === "boolean" ? !!opts.strictDepth : defaults3.strictDepth,
        strictNullHandling: typeof opts.strictNullHandling === "boolean" ? opts.strictNullHandling : defaults3.strictNullHandling
      };
    };
    module2.exports = function(str2, opts) {
      var options = normalizeParseOptions(opts);
      if (str2 === "" || str2 === null || typeof str2 === "undefined") {
        return options.plainObjects ? /* @__PURE__ */ Object.create(null) : {};
      }
      var tempObj = typeof str2 === "string" ? parseValues(str2, options) : str2;
      var obj = options.plainObjects ? /* @__PURE__ */ Object.create(null) : {};
      var keys2 = Object.keys(tempObj);
      for (var i2 = 0; i2 < keys2.length; ++i2) {
        var key2 = keys2[i2];
        var newObj = parseKeys(key2, tempObj[key2], options, typeof str2 === "string");
        obj = utils2.merge(obj, newObj, options);
      }
      if (options.allowSparse === true) {
        return obj;
      }
      return utils2.compact(obj);
    };
  }
});

// ../../node_modules/qs/lib/index.js
var require_lib23 = __commonJS({
  "../../node_modules/qs/lib/index.js"(exports2, module2) {
    "use strict";
    var stringify4 = require_stringify4();
    var parse16 = require_parse6();
    var formats = require_formats();
    module2.exports = {
      formats,
      parse: parse16,
      stringify: stringify4
    };
  }
});

// ../../node_modules/body-parser/lib/types/urlencoded.js
var require_urlencoded = __commonJS({
  "../../node_modules/body-parser/lib/types/urlencoded.js"(exports2, module2) {
    "use strict";
    var bytes = require_bytes();
    var contentType = require_content_type();
    var createError = require_http_errors();
    var debug = require_src()("body-parser:urlencoded");
    var deprecate3 = require_depd()("body-parser");
    var read2 = require_read();
    var typeis = require_type_is();
    module2.exports = urlencoded;
    var parsers = /* @__PURE__ */ Object.create(null);
    function urlencoded(options) {
      var opts = options || {};
      if (opts.extended === void 0) {
        deprecate3("undefined extended: provide extended option");
      }
      var extended = opts.extended !== false;
      var inflate = opts.inflate !== false;
      var limit = typeof opts.limit !== "number" ? bytes.parse(opts.limit || "100kb") : opts.limit;
      var type2 = opts.type || "application/x-www-form-urlencoded";
      var verify = opts.verify || false;
      var depth = typeof opts.depth !== "number" ? Number(opts.depth || 32) : opts.depth;
      if (verify !== false && typeof verify !== "function") {
        throw new TypeError("option verify must be function");
      }
      var queryparse = extended ? extendedparser(opts) : simpleparser(opts);
      var shouldParse = typeof type2 !== "function" ? typeChecker(type2) : type2;
      function parse16(body3) {
        return body3.length ? queryparse(body3) : {};
      }
      return function urlencodedParser(req, res, next) {
        if (req._body) {
          debug("body already parsed");
          next();
          return;
        }
        req.body = req.body || {};
        if (!typeis.hasBody(req)) {
          debug("skip empty body");
          next();
          return;
        }
        debug("content-type %j", req.headers["content-type"]);
        if (!shouldParse(req)) {
          debug("skip parsing");
          next();
          return;
        }
        var charset = getCharset(req) || "utf-8";
        if (charset !== "utf-8") {
          debug("invalid charset");
          next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', {
            charset,
            type: "charset.unsupported"
          }));
          return;
        }
        read2(req, res, next, parse16, debug, {
          debug,
          encoding: charset,
          inflate,
          limit,
          verify,
          depth
        });
      };
    }
    function extendedparser(options) {
      var parameterLimit = options.parameterLimit !== void 0 ? options.parameterLimit : 1e3;
      var depth = typeof options.depth !== "number" ? Number(options.depth || 32) : options.depth;
      var parse16 = parser3("qs");
      if (isNaN(parameterLimit) || parameterLimit < 1) {
        throw new TypeError("option parameterLimit must be a positive number");
      }
      if (isNaN(depth) || depth < 0) {
        throw new TypeError("option depth must be a zero or a positive number");
      }
      if (isFinite(parameterLimit)) {
        parameterLimit = parameterLimit | 0;
      }
      return function queryparse(body3) {
        var paramCount = parameterCount(body3, parameterLimit);
        if (paramCount === void 0) {
          debug("too many parameters");
          throw createError(413, "too many parameters", {
            type: "parameters.too.many"
          });
        }
        var arrayLimit = Math.max(100, paramCount);
        debug("parse extended urlencoding");
        try {
          return parse16(body3, {
            allowPrototypes: true,
            arrayLimit,
            depth,
            strictDepth: true,
            parameterLimit
          });
        } catch (err) {
          if (err instanceof RangeError) {
            throw createError(400, "The input exceeded the depth", {
              type: "querystring.parse.rangeError"
            });
          } else {
            throw err;
          }
        }
      };
    }
    function getCharset(req) {
      try {
        return (contentType.parse(req).parameters.charset || "").toLowerCase();
      } catch (e2) {
        return void 0;
      }
    }
    function parameterCount(body3, limit) {
      var count2 = 0;
      var index4 = 0;
      while ((index4 = body3.indexOf("&", index4)) !== -1) {
        count2++;
        index4++;
        if (count2 === limit) {
          return void 0;
        }
      }
      return count2;
    }
    function parser3(name3) {
      var mod = parsers[name3];
      if (mod !== void 0) {
        return mod.parse;
      }
      switch (name3) {
        case "qs":
          mod = require_lib23();
          break;
        case "querystring":
          mod = require("querystring");
          break;
      }
      parsers[name3] = mod;
      return mod.parse;
    }
    function simpleparser(options) {
      var parameterLimit = options.parameterLimit !== void 0 ? options.parameterLimit : 1e3;
      var parse16 = parser3("querystring");
      if (isNaN(parameterLimit) || parameterLimit < 1) {
        throw new TypeError("option parameterLimit must be a positive number");
      }
      if (isFinite(parameterLimit)) {
        parameterLimit = parameterLimit | 0;
      }
      return function queryparse(body3) {
        var paramCount = parameterCount(body3, parameterLimit);
        if (paramCount === void 0) {
          debug("too many parameters");
          throw createError(413, "too many parameters", {
            type: "parameters.too.many"
          });
        }
        debug("parse urlencoding");
        return parse16(body3, void 0, void 0, { maxKeys: parameterLimit });
      };
    }
    function typeChecker(type2) {
      return function checkType(req) {
        return Boolean(typeis(req, type2));
      };
    }
  }
});

// ../../node_modules/body-parser/index.js
var require_body_parser = __commonJS({
  "../../node_modules/body-parser/index.js"(exports2, module2) {
    "use strict";
    var deprecate3 = require_depd()("body-parser");
    var parsers = /* @__PURE__ */ Object.create(null);
    exports2 = module2.exports = deprecate3.function(
      bodyParser,
      "bodyParser: use individual json/urlencoded middlewares"
    );
    Object.defineProperty(exports2, "json", {
      configurable: true,
      enumerable: true,
      get: createParserGetter("json")
    });
    Object.defineProperty(exports2, "raw", {
      configurable: true,
      enumerable: true,
      get: createParserGetter("raw")
    });
    Object.defineProperty(exports2, "text", {
      configurable: true,
      enumerable: true,
      get: createParserGetter("text")
    });
    Object.defineProperty(exports2, "urlencoded", {
      configurable: true,
      enumerable: true,
      get: createParserGetter("urlencoded")
    });
    function bodyParser(options) {
      var opts = Object.create(options || null, {
        type: {
          configurable: true,
          enumerable: true,
          value: void 0,
          writable: true
        }
      });
      var _urlencoded = exports2.urlencoded(opts);
      var _json = exports2.json(opts);
      return function bodyParser2(req, res, next) {
        _json(req, res, function(err) {
          if (err) return next(err);
          _urlencoded(req, res, next);
        });
      };
    }
    function createParserGetter(name3) {
      return function get() {
        return loadParser(name3);
      };
    }
    function loadParser(parserName) {
      var parser3 = parsers[parserName];
      if (parser3 !== void 0) {
        return parser3;
      }
      switch (parserName) {
        case "json":
          parser3 = require_json4();
          break;
        case "raw":
          parser3 = require_raw2();
          break;
        case "text":
          parser3 = require_text2();
          break;
        case "urlencoded":
          parser3 = require_urlencoded();
          break;
      }
      return parsers[parserName] = parser3;
    }
  }
});

// ../../node_modules/merge-descriptors/index.js
var require_merge_descriptors = __commonJS({
  "../../node_modules/merge-descriptors/index.js"(exports2, module2) {
    "use strict";
    module2.exports = merge3;
    var hasOwnProperty = Object.prototype.hasOwnProperty;
    function merge3(dest, src, redefine) {
      if (!dest) {
        throw new TypeError("argument dest is required");
      }
      if (!src) {
        throw new TypeError("argument src is required");
      }
      if (redefine === void 0) {
        redefine = true;
      }
      Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName(name3) {
        if (!redefine && hasOwnProperty.call(dest, name3)) {
          return;
        }
        var descriptor = Object.getOwnPropertyDescriptor(src, name3);
        Object.defineProperty(dest, name3, descriptor);
      });
      return dest;
    }
  }
});

// ../../node_modules/finalhandler/node_modules/ms/index.js
var require_ms2 = __commonJS({
  "../../node_modules/finalhandler/node_modules/ms/index.js"(exports2, module2) {
    var s5 = 1e3;
    var m2 = s5 * 60;
    var h4 = m2 * 60;
    var d = h4 * 24;
    var y = d * 365.25;
    module2.exports = function(val, options) {
      options = options || {};
      var type2 = typeof val;
      if (type2 === "string" && val.length > 0) {
        return parse16(val);
      } else if (type2 === "number" && isNaN(val) === false) {
        return options.long ? fmtLong(val) : fmtShort(val);
      }
      throw new Error(
        "val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
      );
    };
    function parse16(str2) {
      str2 = String(str2);
      if (str2.length > 100) {
        return;
      }
      var match3 = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(
        str2
      );
      if (!match3) {
        return;
      }
      var n = parseFloat(match3[1]);
      var type2 = (match3[2] || "ms").toLowerCase();
      switch (type2) {
        case "years":
        case "year":
        case "yrs":
        case "yr":
        case "y":
          return n * y;
        case "days":
        case "day":
        case "d":
          return n * d;
        case "hours":
        case "hour":
        case "hrs":
        case "hr":
        case "h":
          return n * h4;
        case "minutes":
        case "minute":
        case "mins":
        case "min":
        case "m":
          return n * m2;
        case "seconds":
        case "second":
        case "secs":
        case "sec":
        case "s":
          return n * s5;
        case "milliseconds":
        case "millisecond":
        case "msecs":
        case "msec":
        case "ms":
          return n;
        default:
          return void 0;
      }
    }
    function fmtShort(ms) {
      if (ms >= d) {
        return Math.round(ms / d) + "d";
      }
      if (ms >= h4) {
        return Math.round(ms / h4) + "h";
      }
      if (ms >= m2) {
        return Math.round(ms / m2) + "m";
      }
      if (ms >= s5) {
        return Math.round(ms / s5) + "s";
      }
      return ms + "ms";
    }
    function fmtLong(ms) {
      return plural2(ms, d, "day") || plural2(ms, h4, "hour") || plural2(ms, m2, "minute") || plural2(ms, s5, "second") || ms + " ms";
    }
    function plural2(ms, n, name3) {
      if (ms < n) {
        return;
      }
      if (ms < n * 1.5) {
        return Math.floor(ms / n) + " " + name3;
      }
      return Math.ceil(ms / n) + " " + name3 + "s";
    }
  }
});

// ../../node_modules/finalhandler/node_modules/debug/src/debug.js
var require_debug2 = __commonJS({
  "../../node_modules/finalhandler/node_modules/debug/src/debug.js"(exports2, module2) {
    exports2 = module2.exports = createDebug.debug = createDebug["default"] = createDebug;
    exports2.coerce = coerce2;
    exports2.disable = disable;
    exports2.enable = enable;
    exports2.enabled = enabled;
    exports2.humanize = require_ms2();
    exports2.names = [];
    exports2.skips = [];
    exports2.formatters = {};
    var prevTime;
    function selectColor(namespace) {
      var hash = 0, i2;
      for (i2 in namespace) {
        hash = (hash << 5) - hash + namespace.charCodeAt(i2);
        hash |= 0;
      }
      return exports2.colors[Math.abs(hash) % exports2.colors.length];
    }
    function createDebug(namespace) {
      function debug() {
        if (!debug.enabled) return;
        var self2 = debug;
        var curr = +/* @__PURE__ */ new Date();
        var ms = curr - (prevTime || curr);
        self2.diff = ms;
        self2.prev = prevTime;
        self2.curr = curr;
        prevTime = curr;
        var args = new Array(arguments.length);
        for (var i2 = 0; i2 < args.length; i2++) {
          args[i2] = arguments[i2];
        }
        args[0] = exports2.coerce(args[0]);
        if ("string" !== typeof args[0]) {
          args.unshift("%O");
        }
        var index4 = 0;
        args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match3, format) {
          if (match3 === "%%") return match3;
          index4++;
          var formatter = exports2.formatters[format];
          if ("function" === typeof formatter) {
            var val = args[index4];
            match3 = formatter.call(self2, val);
            args.splice(index4, 1);
            index4--;
          }
          return match3;
        });
        exports2.formatArgs.call(self2, args);
        var logFn = debug.log || exports2.log || console.log.bind(console);
        logFn.apply(self2, args);
      }
      debug.namespace = namespace;
      debug.enabled = exports2.enabled(namespace);
      debug.useColors = exports2.useColors();
      debug.color = selectColor(namespace);
      if ("function" === typeof exports2.init) {
        exports2.init(debug);
      }
      return debug;
    }
    function enable(namespaces) {
      exports2.save(namespaces);
      exports2.names = [];
      exports2.skips = [];
      var split2 = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/);
      var len = split2.length;
      for (var i2 = 0; i2 < len; i2++) {
        if (!split2[i2]) continue;
        namespaces = split2[i2].replace(/\*/g, ".*?");
        if (namespaces[0] === "-") {
          exports2.skips.push(new RegExp("^" + namespaces.substr(1) + "$"));
        } else {
          exports2.names.push(new RegExp("^" + namespaces + "$"));
        }
      }
    }
    function disable() {
      exports2.enable("");
    }
    function enabled(name3) {
      var i2, len;
      for (i2 = 0, len = exports2.skips.length; i2 < len; i2++) {
        if (exports2.skips[i2].test(name3)) {
          return false;
        }
      }
      for (i2 = 0, len = exports2.names.length; i2 < len; i2++) {
        if (exports2.names[i2].test(name3)) {
          return true;
        }
      }
      return false;
    }
    function coerce2(val) {
      if (val instanceof Error) return val.stack || val.message;
      return val;
    }
  }
});

// ../../node_modules/finalhandler/node_modules/debug/src/browser.js
var require_browser2 = __commonJS({
  "../../node_modules/finalhandler/node_modules/debug/src/browser.js"(exports2, module2) {
    exports2 = module2.exports = require_debug2();
    exports2.log = log;
    exports2.formatArgs = formatArgs;
    exports2.save = save;
    exports2.load = load2;
    exports2.useColors = useColors;
    exports2.storage = "undefined" != typeof chrome && "undefined" != typeof chrome.storage ? chrome.storage.local : localstorage();
    exports2.colors = [
      "lightseagreen",
      "forestgreen",
      "goldenrod",
      "dodgerblue",
      "darkorchid",
      "crimson"
    ];
    function useColors() {
      if (typeof window !== "undefined" && window.process && window.process.type === "renderer") {
        return true;
      }
      return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // is firebug? http://stackoverflow.com/a/398120/376773
      typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // is firefox >= v31?
      // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
      typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // double check webkit in userAgent just in case we are in a worker
      typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
    }
    exports2.formatters.j = function(v) {
      try {
        return JSON.stringify(v);
      } catch (err) {
        return "[UnexpectedJSONParseError]: " + err.message;
      }
    };
    function formatArgs(args) {
      var useColors2 = this.useColors;
      args[0] = (useColors2 ? "%c" : "") + this.namespace + (useColors2 ? " %c" : " ") + args[0] + (useColors2 ? "%c " : " ") + "+" + exports2.humanize(this.diff);
      if (!useColors2) return;
      var c = "color: " + this.color;
      args.splice(1, 0, c, "color: inherit");
      var index4 = 0;
      var lastC = 0;
      args[0].replace(/%[a-zA-Z%]/g, function(match3) {
        if ("%%" === match3) return;
        index4++;
        if ("%c" === match3) {
          lastC = index4;
        }
      });
      args.splice(lastC, 0, c);
    }
    function log() {
      return "object" === typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments);
    }
    function save(namespaces) {
      try {
        if (null == namespaces) {
          exports2.storage.removeItem("debug");
        } else {
          exports2.storage.debug = namespaces;
        }
      } catch (e2) {
      }
    }
    function load2() {
      var r2;
      try {
        r2 = exports2.storage.debug;
      } catch (e2) {
      }
      if (!r2 && typeof process !== "undefined" && "env" in process) {
        r2 = process.env.DEBUG;
      }
      return r2;
    }
    exports2.enable(load2());
    function localstorage() {
      try {
        return window.localStorage;
      } catch (e2) {
      }
    }
  }
});

// ../../node_modules/finalhandler/node_modules/debug/src/node.js
var require_node4 = __commonJS({
  "../../node_modules/finalhandler/node_modules/debug/src/node.js"(exports2, module2) {
    var tty6 = require("tty");
    var util4 = require("util");
    exports2 = module2.exports = require_debug2();
    exports2.init = init4;
    exports2.log = log;
    exports2.formatArgs = formatArgs;
    exports2.save = save;
    exports2.load = load2;
    exports2.useColors = useColors;
    exports2.colors = [6, 2, 3, 4, 5, 1];
    exports2.inspectOpts = Object.keys(process.env).filter(function(key2) {
      return /^debug_/i.test(key2);
    }).reduce(function(obj, key2) {
      var prop = key2.substring(6).toLowerCase().replace(/_([a-z])/g, function(_2, k) {
        return k.toUpperCase();
      });
      var val = process.env[key2];
      if (/^(yes|on|true|enabled)$/i.test(val)) val = true;
      else if (/^(no|off|false|disabled)$/i.test(val)) val = false;
      else if (val === "null") val = null;
      else val = Number(val);
      obj[prop] = val;
      return obj;
    }, {});
    var fd = parseInt(process.env.DEBUG_FD, 10) || 2;
    if (1 !== fd && 2 !== fd) {
      util4.deprecate(function() {
      }, "except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();
    }
    var stream3 = 1 === fd ? process.stdout : 2 === fd ? process.stderr : createWritableStdioStream(fd);
    function useColors() {
      return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty6.isatty(fd);
    }
    exports2.formatters.o = function(v) {
      this.inspectOpts.colors = this.useColors;
      return util4.inspect(v, this.inspectOpts).split("\n").map(function(str2) {
        return str2.trim();
      }).join(" ");
    };
    exports2.formatters.O = function(v) {
      this.inspectOpts.colors = this.useColors;
      return util4.inspect(v, this.inspectOpts);
    };
    function formatArgs(args) {
      var name3 = this.namespace;
      var useColors2 = this.useColors;
      if (useColors2) {
        var c = this.color;
        var prefix2 = "  \x1B[3" + c + ";1m" + name3 + " \x1B[0m";
        args[0] = prefix2 + args[0].split("\n").join("\n" + prefix2);
        args.push("\x1B[3" + c + "m+" + exports2.humanize(this.diff) + "\x1B[0m");
      } else {
        args[0] = (/* @__PURE__ */ new Date()).toUTCString() + " " + name3 + " " + args[0];
      }
    }
    function log() {
      return stream3.write(util4.format.apply(util4, arguments) + "\n");
    }
    function save(namespaces) {
      if (null == namespaces) {
        delete process.env.DEBUG;
      } else {
        process.env.DEBUG = namespaces;
      }
    }
    function load2() {
      return process.env.DEBUG;
    }
    function createWritableStdioStream(fd2) {
      var stream4;
      var tty_wrap = process.binding("tty_wrap");
      switch (tty_wrap.guessHandleType(fd2)) {
        case "TTY":
          stream4 = new tty6.WriteStream(fd2);
          stream4._type = "tty";
          if (stream4._handle && stream4._handle.unref) {
            stream4._handle.unref();
          }
          break;
        case "FILE":
          var fs50 = require("fs");
          stream4 = new fs50.SyncWriteStream(fd2, { autoClose: false });
          stream4._type = "fs";
          break;
        case "PIPE":
        case "TCP":
          var net3 = require("net");
          stream4 = new net3.Socket({
            fd: fd2,
            readable: false,
            writable: true
          });
          stream4.readable = false;
          stream4.read = null;
          stream4._type = "pipe";
          if (stream4._handle && stream4._handle.unref) {
            stream4._handle.unref();
          }
          break;
        default:
          throw new Error("Implement me. Unknown stream file type!");
      }
      stream4.fd = fd2;
      stream4._isStdio = true;
      return stream4;
    }
    function init4(debug) {
      debug.inspectOpts = {};
      var keys2 = Object.keys(exports2.inspectOpts);
      for (var i2 = 0; i2 < keys2.length; i2++) {
        debug.inspectOpts[keys2[i2]] = exports2.inspectOpts[keys2[i2]];
      }
    }
    exports2.enable(load2());
  }
});

// ../../node_modules/finalhandler/node_modules/debug/src/index.js
var require_src2 = __commonJS({
  "../../node_modules/finalhandler/node_modules/debug/src/index.js"(exports2, module2) {
    if (typeof process !== "undefined" && process.type === "renderer") {
      module2.exports = require_browser2();
    } else {
      module2.exports = require_node4();
    }
  }
});

// ../../node_modules/encodeurl/index.js
var require_encodeurl = __commonJS({
  "../../node_modules/encodeurl/index.js"(exports2, module2) {
    "use strict";
    module2.exports = encodeUrl;
    var ENCODE_CHARS_REGEXP = /(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g;
    var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g;
    var UNMATCHED_SURROGATE_PAIR_REPLACE = "$1\uFFFD$2";
    function encodeUrl(url) {
      return String(url).replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE).replace(ENCODE_CHARS_REGEXP, encodeURI);
    }
  }
});

// ../../node_modules/escape-html/index.js
var require_escape_html = __commonJS({
  "../../node_modules/escape-html/index.js"(exports2, module2) {
    "use strict";
    var matchHtmlRegExp = /["'&<>]/;
    module2.exports = escapeHtml4;
    function escapeHtml4(string2) {
      var str2 = "" + string2;
      var match3 = matchHtmlRegExp.exec(str2);
      if (!match3) {
        return str2;
      }
      var escape5;
      var html7 = "";
      var index4 = 0;
      var lastIndex = 0;
      for (index4 = match3.index; index4 < str2.length; index4++) {
        switch (str2.charCodeAt(index4)) {
          case 34:
            escape5 = "&quot;";
            break;
          case 38:
            escape5 = "&amp;";
            break;
          case 39:
            escape5 = "&#39;";
            break;
          case 60:
            escape5 = "&lt;";
            break;
          case 62:
            escape5 = "&gt;";
            break;
          default:
            continue;
        }
        if (lastIndex !== index4) {
          html7 += str2.substring(lastIndex, index4);
        }
        lastIndex = index4 + 1;
        html7 += escape5;
      }
      return lastIndex !== index4 ? html7 + str2.substring(lastIndex, index4) : html7;
    }
  }
});

// ../../node_modules/parseurl/index.js
var require_parseurl = __commonJS({
  "../../node_modules/parseurl/index.js"(exports2, module2) {
    "use strict";
    var url = require("url");
    var parse16 = url.parse;
    var Url = url.Url;
    module2.exports = parseurl;
    module2.exports.original = originalurl;
    function parseurl(req) {
      var url2 = req.url;
      if (url2 === void 0) {
        return void 0;
      }
      var parsed = req._parsedUrl;
      if (fresh(url2, parsed)) {
        return parsed;
      }
      parsed = fastparse(url2);
      parsed._raw = url2;
      return req._parsedUrl = parsed;
    }
    function originalurl(req) {
      var url2 = req.originalUrl;
      if (typeof url2 !== "string") {
        return parseurl(req);
      }
      var parsed = req._parsedOriginalUrl;
      if (fresh(url2, parsed)) {
        return parsed;
      }
      parsed = fastparse(url2);
      parsed._raw = url2;
      return req._parsedOriginalUrl = parsed;
    }
    function fastparse(str2) {
      if (typeof str2 !== "string" || str2.charCodeAt(0) !== 47) {
        return parse16(str2);
      }
      var pathname = str2;
      var query = null;
      var search4 = null;
      for (var i2 = 1; i2 < str2.length; i2++) {
        switch (str2.charCodeAt(i2)) {
          case 63:
            if (search4 === null) {
              pathname = str2.substring(0, i2);
              query = str2.substring(i2 + 1);
              search4 = str2.substring(i2);
            }
            break;
          case 9:
          /* \t */
          case 10:
          /* \n */
          case 12:
          /* \f */
          case 13:
          /* \r */
          case 32:
          /*    */
          case 35:
          /* #  */
          case 160:
          case 65279:
            return parse16(str2);
        }
      }
      var url2 = Url !== void 0 ? new Url() : {};
      url2.path = str2;
      url2.href = str2;
      url2.pathname = pathname;
      if (search4 !== null) {
        url2.query = query;
        url2.search = search4;
      }
      return url2;
    }
    function fresh(url2, parsedUrl) {
      return typeof parsedUrl === "object" && parsedUrl !== null && (Url === void 0 || parsedUrl instanceof Url) && parsedUrl._raw === url2;
    }
  }
});

// ../../node_modules/finalhandler/index.js
var require_finalhandler = __commonJS({
  "../../node_modules/finalhandler/index.js"(exports2, module2) {
    "use strict";
    var debug = require_src2()("finalhandler");
    var encodeUrl = require_encodeurl();
    var escapeHtml4 = require_escape_html();
    var onFinished = require_on_finished();
    var parseUrl = require_parseurl();
    var statuses = require_statuses();
    var unpipe = require_unpipe();
    var DOUBLE_SPACE_REGEXP = /\x20{2}/g;
    var NEWLINE_REGEXP = /\n/g;
    var defer3 = typeof setImmediate === "function" ? setImmediate : function(fn) {
      process.nextTick(fn.bind.apply(fn, arguments));
    };
    var isFinished = onFinished.isFinished;
    function createHtmlDocument(message) {
      var body3 = escapeHtml4(message).replace(NEWLINE_REGEXP, "<br>").replace(DOUBLE_SPACE_REGEXP, " &nbsp;");
      return '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>' + body3 + "</pre>\n</body>\n</html>\n";
    }
    module2.exports = finalhandler;
    function finalhandler(req, res, options) {
      var opts = options || {};
      var env6 = opts.env || process.env.NODE_ENV || "development";
      var onerror = opts.onerror;
      return function(err) {
        var headers;
        var msg;
        var status;
        if (!err && headersSent(res)) {
          debug("cannot 404 after headers sent");
          return;
        }
        if (err) {
          status = getErrorStatusCode(err);
          if (status === void 0) {
            status = getResponseStatusCode(res);
          } else {
            headers = getErrorHeaders(err);
          }
          msg = getErrorMessage(err, status, env6);
        } else {
          status = 404;
          msg = "Cannot " + req.method + " " + encodeUrl(getResourceName(req));
        }
        debug("default %s", status);
        if (err && onerror) {
          defer3(onerror, err, req, res);
        }
        if (headersSent(res)) {
          debug("cannot %d after headers sent", status);
          if (req.socket) {
            req.socket.destroy();
          }
          return;
        }
        send(req, res, status, headers, msg);
      };
    }
    function getErrorHeaders(err) {
      if (!err.headers || typeof err.headers !== "object") {
        return void 0;
      }
      var headers = /* @__PURE__ */ Object.create(null);
      var keys2 = Object.keys(err.headers);
      for (var i2 = 0; i2 < keys2.length; i2++) {
        var key2 = keys2[i2];
        headers[key2] = err.headers[key2];
      }
      return headers;
    }
    function getErrorMessage(err, status, env6) {
      var msg;
      if (env6 !== "production") {
        msg = err.stack;
        if (!msg && typeof err.toString === "function") {
          msg = err.toString();
        }
      }
      return msg || statuses.message[status];
    }
    function getErrorStatusCode(err) {
      if (typeof err.status === "number" && err.status >= 400 && err.status < 600) {
        return err.status;
      }
      if (typeof err.statusCode === "number" && err.statusCode >= 400 && err.statusCode < 600) {
        return err.statusCode;
      }
      return void 0;
    }
    function getResourceName(req) {
      try {
        return parseUrl.original(req).pathname;
      } catch (e2) {
        return "resource";
      }
    }
    function getResponseStatusCode(res) {
      var status = res.statusCode;
      if (typeof status !== "number" || status < 400 || status > 599) {
        status = 500;
      }
      return status;
    }
    function headersSent(res) {
      return typeof res.headersSent !== "boolean" ? Boolean(res._header) : res.headersSent;
    }
    function send(req, res, status, headers, message) {
      function write3() {
        var body3 = createHtmlDocument(message);
        res.statusCode = status;
        if (req.httpVersionMajor < 2) {
          res.statusMessage = statuses.message[status];
        }
        res.removeHeader("Content-Encoding");
        res.removeHeader("Content-Language");
        res.removeHeader("Content-Range");
        setHeaders(res, headers);
        res.setHeader("Content-Security-Policy", "default-src 'none'");
        res.setHeader("X-Content-Type-Options", "nosniff");
        res.setHeader("Content-Type", "text/html; charset=utf-8");
        res.setHeader("Content-Length", Buffer.byteLength(body3, "utf8"));
        if (req.method === "HEAD") {
          res.end();
          return;
        }
        res.end(body3, "utf8");
      }
      if (isFinished(req)) {
        write3();
        return;
      }
      unpipe(req);
      onFinished(req, write3);
      req.resume();
    }
    function setHeaders(res, headers) {
      if (!headers) {
        return;
      }
      var keys2 = Object.keys(headers);
      for (var i2 = 0; i2 < keys2.length; i2++) {
        var key2 = keys2[i2];
        res.setHeader(key2, headers[key2]);
      }
    }
  }
});

// ../../node_modules/express/node_modules/ms/index.js
var require_ms3 = __commonJS({
  "../../node_modules/express/node_modules/ms/index.js"(exports2, module2) {
    var s5 = 1e3;
    var m2 = s5 * 60;
    var h4 = m2 * 60;
    var d = h4 * 24;
    var y = d * 365.25;
    module2.exports = function(val, options) {
      options = options || {};
      var type2 = typeof val;
      if (type2 === "string" && val.length > 0) {
        return parse16(val);
      } else if (type2 === "number" && isNaN(val) === false) {
        return options.long ? fmtLong(val) : fmtShort(val);
      }
      throw new Error(
        "val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
      );
    };
    function parse16(str2) {
      str2 = String(str2);
      if (str2.length > 100) {
        return;
      }
      var match3 = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(
        str2
      );
      if (!match3) {
        return;
      }
      var n = parseFloat(match3[1]);
      var type2 = (match3[2] || "ms").toLowerCase();
      switch (type2) {
        case "years":
        case "year":
        case "yrs":
        case "yr":
        case "y":
          return n * y;
        case "days":
        case "day":
        case "d":
          return n * d;
        case "hours":
        case "hour":
        case "hrs":
        case "hr":
        case "h":
          return n * h4;
        case "minutes":
        case "minute":
        case "mins":
        case "min":
        case "m":
          return n * m2;
        case "seconds":
        case "second":
        case "secs":
        case "sec":
        case "s":
          return n * s5;
        case "milliseconds":
        case "millisecond":
        case "msecs":
        case "msec":
        case "ms":
          return n;
        default:
          return void 0;
      }
    }
    function fmtShort(ms) {
      if (ms >= d) {
        return Math.round(ms / d) + "d";
      }
      if (ms >= h4) {
        return Math.round(ms / h4) + "h";
      }
      if (ms >= m2) {
        return Math.round(ms / m2) + "m";
      }
      if (ms >= s5) {
        return Math.round(ms / s5) + "s";
      }
      return ms + "ms";
    }
    function fmtLong(ms) {
      return plural2(ms, d, "day") || plural2(ms, h4, "hour") || plural2(ms, m2, "minute") || plural2(ms, s5, "second") || ms + " ms";
    }
    function plural2(ms, n, name3) {
      if (ms < n) {
        return;
      }
      if (ms < n * 1.5) {
        return Math.floor(ms / n) + " " + name3;
      }
      return Math.ceil(ms / n) + " " + name3 + "s";
    }
  }
});

// ../../node_modules/express/node_modules/debug/src/debug.js
var require_debug3 = __commonJS({
  "../../node_modules/express/node_modules/debug/src/debug.js"(exports2, module2) {
    exports2 = module2.exports = createDebug.debug = createDebug["default"] = createDebug;
    exports2.coerce = coerce2;
    exports2.disable = disable;
    exports2.enable = enable;
    exports2.enabled = enabled;
    exports2.humanize = require_ms3();
    exports2.names = [];
    exports2.skips = [];
    exports2.formatters = {};
    var prevTime;
    function selectColor(namespace) {
      var hash = 0, i2;
      for (i2 in namespace) {
        hash = (hash << 5) - hash + namespace.charCodeAt(i2);
        hash |= 0;
      }
      return exports2.colors[Math.abs(hash) % exports2.colors.length];
    }
    function createDebug(namespace) {
      function debug() {
        if (!debug.enabled) return;
        var self2 = debug;
        var curr = +/* @__PURE__ */ new Date();
        var ms = curr - (prevTime || curr);
        self2.diff = ms;
        self2.prev = prevTime;
        self2.curr = curr;
        prevTime = curr;
        var args = new Array(arguments.length);
        for (var i2 = 0; i2 < args.length; i2++) {
          args[i2] = arguments[i2];
        }
        args[0] = exports2.coerce(args[0]);
        if ("string" !== typeof args[0]) {
          args.unshift("%O");
        }
        var index4 = 0;
        args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match3, format) {
          if (match3 === "%%") return match3;
          index4++;
          var formatter = exports2.formatters[format];
          if ("function" === typeof formatter) {
            var val = args[index4];
            match3 = formatter.call(self2, val);
            args.splice(index4, 1);
            index4--;
          }
          return match3;
        });
        exports2.formatArgs.call(self2, args);
        var logFn = debug.log || exports2.log || console.log.bind(console);
        logFn.apply(self2, args);
      }
      debug.namespace = namespace;
      debug.enabled = exports2.enabled(namespace);
      debug.useColors = exports2.useColors();
      debug.color = selectColor(namespace);
      if ("function" === typeof exports2.init) {
        exports2.init(debug);
      }
      return debug;
    }
    function enable(namespaces) {
      exports2.save(namespaces);
      exports2.names = [];
      exports2.skips = [];
      var split2 = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/);
      var len = split2.length;
      for (var i2 = 0; i2 < len; i2++) {
        if (!split2[i2]) continue;
        namespaces = split2[i2].replace(/\*/g, ".*?");
        if (namespaces[0] === "-") {
          exports2.skips.push(new RegExp("^" + namespaces.substr(1) + "$"));
        } else {
          exports2.names.push(new RegExp("^" + namespaces + "$"));
        }
      }
    }
    function disable() {
      exports2.enable("");
    }
    function enabled(name3) {
      var i2, len;
      for (i2 = 0, len = exports2.skips.length; i2 < len; i2++) {
        if (exports2.skips[i2].test(name3)) {
          return false;
        }
      }
      for (i2 = 0, len = exports2.names.length; i2 < len; i2++) {
        if (exports2.names[i2].test(name3)) {
          return true;
        }
      }
      return false;
    }
    function coerce2(val) {
      if (val instanceof Error) return val.stack || val.message;
      return val;
    }
  }
});

// ../../node_modules/express/node_modules/debug/src/browser.js
var require_browser3 = __commonJS({
  "../../node_modules/express/node_modules/debug/src/browser.js"(exports2, module2) {
    exports2 = module2.exports = require_debug3();
    exports2.log = log;
    exports2.formatArgs = formatArgs;
    exports2.save = save;
    exports2.load = load2;
    exports2.useColors = useColors;
    exports2.storage = "undefined" != typeof chrome && "undefined" != typeof chrome.storage ? chrome.storage.local : localstorage();
    exports2.colors = [
      "lightseagreen",
      "forestgreen",
      "goldenrod",
      "dodgerblue",
      "darkorchid",
      "crimson"
    ];
    function useColors() {
      if (typeof window !== "undefined" && window.process && window.process.type === "renderer") {
        return true;
      }
      return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // is firebug? http://stackoverflow.com/a/398120/376773
      typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // is firefox >= v31?
      // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
      typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // double check webkit in userAgent just in case we are in a worker
      typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
    }
    exports2.formatters.j = function(v) {
      try {
        return JSON.stringify(v);
      } catch (err) {
        return "[UnexpectedJSONParseError]: " + err.message;
      }
    };
    function formatArgs(args) {
      var useColors2 = this.useColors;
      args[0] = (useColors2 ? "%c" : "") + this.namespace + (useColors2 ? " %c" : " ") + args[0] + (useColors2 ? "%c " : " ") + "+" + exports2.humanize(this.diff);
      if (!useColors2) return;
      var c = "color: " + this.color;
      args.splice(1, 0, c, "color: inherit");
      var index4 = 0;
      var lastC = 0;
      args[0].replace(/%[a-zA-Z%]/g, function(match3) {
        if ("%%" === match3) return;
        index4++;
        if ("%c" === match3) {
          lastC = index4;
        }
      });
      args.splice(lastC, 0, c);
    }
    function log() {
      return "object" === typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments);
    }
    function save(namespaces) {
      try {
        if (null == namespaces) {
          exports2.storage.removeItem("debug");
        } else {
          exports2.storage.debug = namespaces;
        }
      } catch (e2) {
      }
    }
    function load2() {
      var r2;
      try {
        r2 = exports2.storage.debug;
      } catch (e2) {
      }
      if (!r2 && typeof process !== "undefined" && "env" in process) {
        r2 = process.env.DEBUG;
      }
      return r2;
    }
    exports2.enable(load2());
    function localstorage() {
      try {
        return window.localStorage;
      } catch (e2) {
      }
    }
  }
});

// ../../node_modules/express/node_modules/debug/src/node.js
var require_node5 = __commonJS({
  "../../node_modules/express/node_modules/debug/src/node.js"(exports2, module2) {
    var tty6 = require("tty");
    var util4 = require("util");
    exports2 = module2.exports = require_debug3();
    exports2.init = init4;
    exports2.log = log;
    exports2.formatArgs = formatArgs;
    exports2.save = save;
    exports2.load = load2;
    exports2.useColors = useColors;
    exports2.colors = [6, 2, 3, 4, 5, 1];
    exports2.inspectOpts = Object.keys(process.env).filter(function(key2) {
      return /^debug_/i.test(key2);
    }).reduce(function(obj, key2) {
      var prop = key2.substring(6).toLowerCase().replace(/_([a-z])/g, function(_2, k) {
        return k.toUpperCase();
      });
      var val = process.env[key2];
      if (/^(yes|on|true|enabled)$/i.test(val)) val = true;
      else if (/^(no|off|false|disabled)$/i.test(val)) val = false;
      else if (val === "null") val = null;
      else val = Number(val);
      obj[prop] = val;
      return obj;
    }, {});
    var fd = parseInt(process.env.DEBUG_FD, 10) || 2;
    if (1 !== fd && 2 !== fd) {
      util4.deprecate(function() {
      }, "except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();
    }
    var stream3 = 1 === fd ? process.stdout : 2 === fd ? process.stderr : createWritableStdioStream(fd);
    function useColors() {
      return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty6.isatty(fd);
    }
    exports2.formatters.o = function(v) {
      this.inspectOpts.colors = this.useColors;
      return util4.inspect(v, this.inspectOpts).split("\n").map(function(str2) {
        return str2.trim();
      }).join(" ");
    };
    exports2.formatters.O = function(v) {
      this.inspectOpts.colors = this.useColors;
      return util4.inspect(v, this.inspectOpts);
    };
    function formatArgs(args) {
      var name3 = this.namespace;
      var useColors2 = this.useColors;
      if (useColors2) {
        var c = this.color;
        var prefix2 = "  \x1B[3" + c + ";1m" + name3 + " \x1B[0m";
        args[0] = prefix2 + args[0].split("\n").join("\n" + prefix2);
        args.push("\x1B[3" + c + "m+" + exports2.humanize(this.diff) + "\x1B[0m");
      } else {
        args[0] = (/* @__PURE__ */ new Date()).toUTCString() + " " + name3 + " " + args[0];
      }
    }
    function log() {
      return stream3.write(util4.format.apply(util4, arguments) + "\n");
    }
    function save(namespaces) {
      if (null == namespaces) {
        delete process.env.DEBUG;
      } else {
        process.env.DEBUG = namespaces;
      }
    }
    function load2() {
      return process.env.DEBUG;
    }
    function createWritableStdioStream(fd2) {
      var stream4;
      var tty_wrap = process.binding("tty_wrap");
      switch (tty_wrap.guessHandleType(fd2)) {
        case "TTY":
          stream4 = new tty6.WriteStream(fd2);
          stream4._type = "tty";
          if (stream4._handle && stream4._handle.unref) {
            stream4._handle.unref();
          }
          break;
        case "FILE":
          var fs50 = require("fs");
          stream4 = new fs50.SyncWriteStream(fd2, { autoClose: false });
          stream4._type = "fs";
          break;
        case "PIPE":
        case "TCP":
          var net3 = require("net");
          stream4 = new net3.Socket({
            fd: fd2,
            readable: false,
            writable: true
          });
          stream4.readable = false;
          stream4.read = null;
          stream4._type = "pipe";
          if (stream4._handle && stream4._handle.unref) {
            stream4._handle.unref();
          }
          break;
        default:
          throw new Error("Implement me. Unknown stream file type!");
      }
      stream4.fd = fd2;
      stream4._isStdio = true;
      return stream4;
    }
    function init4(debug) {
      debug.inspectOpts = {};
      var keys2 = Object.keys(exports2.inspectOpts);
      for (var i2 = 0; i2 < keys2.length; i2++) {
        debug.inspectOpts[keys2[i2]] = exports2.inspectOpts[keys2[i2]];
      }
    }
    exports2.enable(load2());
  }
});

// ../../node_modules/express/node_modules/debug/src/index.js
var require_src3 = __commonJS({
  "../../node_modules/express/node_modules/debug/src/index.js"(exports2, module2) {
    if (typeof process !== "undefined" && process.type === "renderer") {
      module2.exports = require_browser3();
    } else {
      module2.exports = require_node5();
    }
  }
});

// ../../node_modules/array-flatten/array-flatten.js
var require_array_flatten = __commonJS({
  "../../node_modules/array-flatten/array-flatten.js"(exports2, module2) {
    "use strict";
    module2.exports = arrayFlatten;
    function flattenWithDepth(array, result, depth) {
      for (var i2 = 0; i2 < array.length; i2++) {
        var value = array[i2];
        if (depth > 0 && Array.isArray(value)) {
          flattenWithDepth(value, result, depth - 1);
        } else {
          result.push(value);
        }
      }
      return result;
    }
    function flattenForever(array, result) {
      for (var i2 = 0; i2 < array.length; i2++) {
        var value = array[i2];
        if (Array.isArray(value)) {
          flattenForever(value, result);
        } else {
          result.push(value);
        }
      }
      return result;
    }
    function arrayFlatten(array, depth) {
      if (depth == null) {
        return flattenForever(array, []);
      }
      return flattenWithDepth(array, [], depth);
    }
  }
});

// ../../node_modules/path-to-regexp/index.js
var require_path_to_regexp = __commonJS({
  "../../node_modules/path-to-regexp/index.js"(exports2, module2) {
    module2.exports = pathToRegexp;
    var MATCHING_GROUP_REGEXP = /\\.|\((?:\?<(.*?)>)?(?!\?)/g;
    function pathToRegexp(path45, keys2, options) {
      options = options || {};
      keys2 = keys2 || [];
      var strict = options.strict;
      var end = options.end !== false;
      var flags = options.sensitive ? "" : "i";
      var lookahead = options.lookahead !== false;
      var extraOffset = 0;
      var keysOffset = keys2.length;
      var i2 = 0;
      var name3 = 0;
      var pos = 0;
      var backtrack = "";
      var m2;
      if (path45 instanceof RegExp) {
        while (m2 = MATCHING_GROUP_REGEXP.exec(path45.source)) {
          if (m2[0][0] === "\\") continue;
          keys2.push({
            name: m2[1] || name3++,
            optional: false,
            offset: m2.index
          });
        }
        return path45;
      }
      if (Array.isArray(path45)) {
        path45 = path45.map(function(value) {
          return pathToRegexp(value, keys2, options).source;
        });
        return new RegExp(path45.join("|"), flags);
      }
      if (typeof path45 !== "string") {
        throw new TypeError("path must be a string, array of strings, or regular expression");
      }
      path45 = path45.replace(
        /\\.|(\/)?(\.)?:(\w+)(\(.*?\))?(\*)?(\?)?|[.*]|\/\(/g,
        function(match3, slash, format, key2, capture, star3, optional, offset) {
          if (match3[0] === "\\") {
            backtrack += match3;
            pos += 2;
            return match3;
          }
          if (match3 === ".") {
            backtrack += "\\.";
            extraOffset += 1;
            pos += 1;
            return "\\.";
          }
          if (slash || format) {
            backtrack = "";
          } else {
            backtrack += path45.slice(pos, offset);
          }
          pos = offset + match3.length;
          if (match3 === "*") {
            extraOffset += 3;
            return "(.*)";
          }
          if (match3 === "/(") {
            backtrack += "/";
            extraOffset += 2;
            return "/(?:";
          }
          slash = slash || "";
          format = format ? "\\." : "";
          optional = optional || "";
          capture = capture ? capture.replace(/\\.|\*/, function(m3) {
            return m3 === "*" ? "(.*)" : m3;
          }) : backtrack ? "((?:(?!/|" + backtrack + ").)+?)" : "([^/" + format + "]+?)";
          keys2.push({
            name: key2,
            optional: !!optional,
            offset: offset + extraOffset
          });
          var result = "(?:" + format + slash + capture + (star3 ? "((?:[/" + format + "].+?)?)" : "") + ")" + optional;
          extraOffset += result.length - match3.length;
          return result;
        }
      );
      while (m2 = MATCHING_GROUP_REGEXP.exec(path45)) {
        if (m2[0][0] === "\\") continue;
        if (keysOffset + i2 === keys2.length || keys2[keysOffset + i2].offset > m2.index) {
          keys2.splice(keysOffset + i2, 0, {
            name: name3++,
            // Unnamed matching groups must be consistently linear.
            optional: false,
            offset: m2.index
          });
        }
        i2++;
      }
      path45 += strict ? "" : path45[path45.length - 1] === "/" ? "?" : "/?";
      if (end) {
        path45 += "$";
      } else if (path45[path45.length - 1] !== "/") {
        path45 += lookahead ? "(?=/|$)" : "(?:/|$)";
      }
      return new RegExp("^" + path45, flags);
    }
  }
});

// ../../node_modules/express/lib/router/layer.js
var require_layer = __commonJS({
  "../../node_modules/express/lib/router/layer.js"(exports2, module2) {
    "use strict";
    var pathRegexp = require_path_to_regexp();
    var debug = require_src3()("express:router:layer");
    var hasOwnProperty = Object.prototype.hasOwnProperty;
    module2.exports = Layer;
    function Layer(path45, options, fn) {
      if (!(this instanceof Layer)) {
        return new Layer(path45, options, fn);
      }
      debug("new %o", path45);
      var opts = options || {};
      this.handle = fn;
      this.name = fn.name || "<anonymous>";
      this.params = void 0;
      this.path = void 0;
      this.regexp = pathRegexp(path45, this.keys = [], opts);
      this.regexp.fast_star = path45 === "*";
      this.regexp.fast_slash = path45 === "/" && opts.end === false;
    }
    Layer.prototype.handle_error = function handle_error(error, req, res, next) {
      var fn = this.handle;
      if (fn.length !== 4) {
        return next(error);
      }
      try {
        fn(error, req, res, next);
      } catch (err) {
        next(err);
      }
    };
    Layer.prototype.handle_request = function handle6(req, res, next) {
      var fn = this.handle;
      if (fn.length > 3) {
        return next();
      }
      try {
        fn(req, res, next);
      } catch (err) {
        next(err);
      }
    };
    Layer.prototype.match = function match3(path45) {
      var match4;
      if (path45 != null) {
        if (this.regexp.fast_slash) {
          this.params = {};
          this.path = "";
          return true;
        }
        if (this.regexp.fast_star) {
          this.params = { "0": decode_param(path45) };
          this.path = path45;
          return true;
        }
        match4 = this.regexp.exec(path45);
      }
      if (!match4) {
        this.params = void 0;
        this.path = void 0;
        return false;
      }
      this.params = {};
      this.path = match4[0];
      var keys2 = this.keys;
      var params = this.params;
      for (var i2 = 1; i2 < match4.length; i2++) {
        var key2 = keys2[i2 - 1];
        var prop = key2.name;
        var val = decode_param(match4[i2]);
        if (val !== void 0 || !hasOwnProperty.call(params, prop)) {
          params[prop] = val;
        }
      }
      return true;
    };
    function decode_param(val) {
      if (typeof val !== "string" || val.length === 0) {
        return val;
      }
      try {
        return decodeURIComponent(val);
      } catch (err) {
        if (err instanceof URIError) {
          err.message = "Failed to decode param '" + val + "'";
          err.status = err.statusCode = 400;
        }
        throw err;
      }
    }
  }
});

// ../../node_modules/methods/index.js
var require_methods2 = __commonJS({
  "../../node_modules/methods/index.js"(exports2, module2) {
    "use strict";
    var http5 = require("http");
    module2.exports = getCurrentNodeMethods() || getBasicNodeMethods();
    function getCurrentNodeMethods() {
      return http5.METHODS && http5.METHODS.map(function lowerCaseMethod(method) {
        return method.toLowerCase();
      });
    }
    function getBasicNodeMethods() {
      return [
        "get",
        "post",
        "put",
        "head",
        "delete",
        "options",
        "trace",
        "copy",
        "lock",
        "mkcol",
        "move",
        "purge",
        "propfind",
        "proppatch",
        "unlock",
        "report",
        "mkactivity",
        "checkout",
        "merge",
        "m-search",
        "notify",
        "subscribe",
        "unsubscribe",
        "patch",
        "search",
        "connect"
      ];
    }
  }
});

// ../../node_modules/express/lib/router/route.js
var require_route2 = __commonJS({
  "../../node_modules/express/lib/router/route.js"(exports2, module2) {
    "use strict";
    var debug = require_src3()("express:router:route");
    var flatten2 = require_array_flatten();
    var Layer = require_layer();
    var methods = require_methods2();
    var slice2 = Array.prototype.slice;
    var toString6 = Object.prototype.toString;
    module2.exports = Route;
    function Route(path45) {
      this.path = path45;
      this.stack = [];
      debug("new %o", path45);
      this.methods = {};
    }
    Route.prototype._handles_method = function _handles_method(method) {
      if (this.methods._all) {
        return true;
      }
      var name3 = typeof method === "string" ? method.toLowerCase() : method;
      if (name3 === "head" && !this.methods["head"]) {
        name3 = "get";
      }
      return Boolean(this.methods[name3]);
    };
    Route.prototype._options = function _options2() {
      var methods2 = Object.keys(this.methods);
      if (this.methods.get && !this.methods.head) {
        methods2.push("head");
      }
      for (var i2 = 0; i2 < methods2.length; i2++) {
        methods2[i2] = methods2[i2].toUpperCase();
      }
      return methods2;
    };
    Route.prototype.dispatch = function dispatch(req, res, done) {
      var idx = 0;
      var stack = this.stack;
      var sync2 = 0;
      if (stack.length === 0) {
        return done();
      }
      var method = typeof req.method === "string" ? req.method.toLowerCase() : req.method;
      if (method === "head" && !this.methods["head"]) {
        method = "get";
      }
      req.route = this;
      next();
      function next(err) {
        if (err && err === "route") {
          return done();
        }
        if (err && err === "router") {
          return done(err);
        }
        if (++sync2 > 100) {
          return setImmediate(next, err);
        }
        var layer = stack[idx++];
        if (!layer) {
          return done(err);
        }
        if (layer.method && layer.method !== method) {
          next(err);
        } else if (err) {
          layer.handle_error(err, req, res, next);
        } else {
          layer.handle_request(req, res, next);
        }
        sync2 = 0;
      }
    };
    Route.prototype.all = function all10() {
      var handles = flatten2(slice2.call(arguments));
      for (var i2 = 0; i2 < handles.length; i2++) {
        var handle6 = handles[i2];
        if (typeof handle6 !== "function") {
          var type2 = toString6.call(handle6);
          var msg = "Route.all() requires a callback function but got a " + type2;
          throw new TypeError(msg);
        }
        var layer = Layer("/", {}, handle6);
        layer.method = void 0;
        this.methods._all = true;
        this.stack.push(layer);
      }
      return this;
    };
    methods.forEach(function(method) {
      Route.prototype[method] = function() {
        var handles = flatten2(slice2.call(arguments));
        for (var i2 = 0; i2 < handles.length; i2++) {
          var handle6 = handles[i2];
          if (typeof handle6 !== "function") {
            var type2 = toString6.call(handle6);
            var msg = "Route." + method + "() requires a callback function but got a " + type2;
            throw new Error(msg);
          }
          debug("%s %o", method, this.path);
          var layer = Layer("/", {}, handle6);
          layer.method = method;
          this.methods[method] = true;
          this.stack.push(layer);
        }
        return this;
      };
    });
  }
});

// ../../node_modules/utils-merge/index.js
var require_utils_merge = __commonJS({
  "../../node_modules/utils-merge/index.js"(exports2, module2) {
    exports2 = module2.exports = function(a2, b) {
      if (a2 && b) {
        for (var key2 in b) {
          a2[key2] = b[key2];
        }
      }
      return a2;
    };
  }
});

// ../../node_modules/express/lib/router/index.js
var require_router = __commonJS({
  "../../node_modules/express/lib/router/index.js"(exports2, module2) {
    "use strict";
    var Route = require_route2();
    var Layer = require_layer();
    var methods = require_methods2();
    var mixin = require_utils_merge();
    var debug = require_src3()("express:router");
    var deprecate3 = require_depd()("express");
    var flatten2 = require_array_flatten();
    var parseUrl = require_parseurl();
    var setPrototypeOf = require_setprototypeof();
    var objectRegExp = /^\[object (\S+)\]$/;
    var slice2 = Array.prototype.slice;
    var toString6 = Object.prototype.toString;
    var proto9 = module2.exports = function(options) {
      var opts = options || {};
      function router(req, res, next) {
        router.handle(req, res, next);
      }
      setPrototypeOf(router, proto9);
      router.params = {};
      router._params = [];
      router.caseSensitive = opts.caseSensitive;
      router.mergeParams = opts.mergeParams;
      router.strict = opts.strict;
      router.stack = [];
      return router;
    };
    proto9.param = function param(name3, fn) {
      if (typeof name3 === "function") {
        deprecate3("router.param(fn): Refactor to use path params");
        this._params.push(name3);
        return;
      }
      var params = this._params;
      var len = params.length;
      var ret;
      if (name3[0] === ":") {
        deprecate3("router.param(" + JSON.stringify(name3) + ", fn): Use router.param(" + JSON.stringify(name3.slice(1)) + ", fn) instead");
        name3 = name3.slice(1);
      }
      for (var i2 = 0; i2 < len; ++i2) {
        if (ret = params[i2](name3, fn)) {
          fn = ret;
        }
      }
      if ("function" !== typeof fn) {
        throw new Error("invalid param() call for " + name3 + ", got " + fn);
      }
      (this.params[name3] = this.params[name3] || []).push(fn);
      return this;
    };
    proto9.handle = function handle6(req, res, out) {
      var self2 = this;
      debug("dispatching %s %s", req.method, req.url);
      var idx = 0;
      var protohost = getProtohost(req.url) || "";
      var removed = "";
      var slashAdded = false;
      var sync2 = 0;
      var paramcalled = {};
      var options = [];
      var stack = self2.stack;
      var parentParams = req.params;
      var parentUrl = req.baseUrl || "";
      var done = restore(out, req, "baseUrl", "next", "params");
      req.next = next;
      if (req.method === "OPTIONS") {
        done = wrap4(done, function(old, err) {
          if (err || options.length === 0) return old(err);
          sendOptionsResponse(res, options, old);
        });
      }
      req.baseUrl = parentUrl;
      req.originalUrl = req.originalUrl || req.url;
      next();
      function next(err) {
        var layerError = err === "route" ? null : err;
        if (slashAdded) {
          req.url = req.url.slice(1);
          slashAdded = false;
        }
        if (removed.length !== 0) {
          req.baseUrl = parentUrl;
          req.url = protohost + removed + req.url.slice(protohost.length);
          removed = "";
        }
        if (layerError === "router") {
          setImmediate(done, null);
          return;
        }
        if (idx >= stack.length) {
          setImmediate(done, layerError);
          return;
        }
        if (++sync2 > 100) {
          return setImmediate(next, err);
        }
        var path45 = getPathname(req);
        if (path45 == null) {
          return done(layerError);
        }
        var layer;
        var match3;
        var route;
        while (match3 !== true && idx < stack.length) {
          layer = stack[idx++];
          match3 = matchLayer(layer, path45);
          route = layer.route;
          if (typeof match3 !== "boolean") {
            layerError = layerError || match3;
          }
          if (match3 !== true) {
            continue;
          }
          if (!route) {
            continue;
          }
          if (layerError) {
            match3 = false;
            continue;
          }
          var method = req.method;
          var has_method = route._handles_method(method);
          if (!has_method && method === "OPTIONS") {
            appendMethods(options, route._options());
          }
          if (!has_method && method !== "HEAD") {
            match3 = false;
          }
        }
        if (match3 !== true) {
          return done(layerError);
        }
        if (route) {
          req.route = route;
        }
        req.params = self2.mergeParams ? mergeParams(layer.params, parentParams) : layer.params;
        var layerPath = layer.path;
        self2.process_params(layer, paramcalled, req, res, function(err2) {
          if (err2) {
            next(layerError || err2);
          } else if (route) {
            layer.handle_request(req, res, next);
          } else {
            trim_prefix(layer, layerError, layerPath, path45);
          }
          sync2 = 0;
        });
      }
      function trim_prefix(layer, layerError, layerPath, path45) {
        if (layerPath.length !== 0) {
          if (layerPath !== path45.slice(0, layerPath.length)) {
            next(layerError);
            return;
          }
          var c = path45[layerPath.length];
          if (c && c !== "/" && c !== ".") return next(layerError);
          debug("trim prefix (%s) from url %s", layerPath, req.url);
          removed = layerPath;
          req.url = protohost + req.url.slice(protohost.length + removed.length);
          if (!protohost && req.url[0] !== "/") {
            req.url = "/" + req.url;
            slashAdded = true;
          }
          req.baseUrl = parentUrl + (removed[removed.length - 1] === "/" ? removed.substring(0, removed.length - 1) : removed);
        }
        debug("%s %s : %s", layer.name, layerPath, req.originalUrl);
        if (layerError) {
          layer.handle_error(layerError, req, res, next);
        } else {
          layer.handle_request(req, res, next);
        }
      }
    };
    proto9.process_params = function process_params(layer, called, req, res, done) {
      var params = this.params;
      var keys2 = layer.keys;
      if (!keys2 || keys2.length === 0) {
        return done();
      }
      var i2 = 0;
      var name3;
      var paramIndex = 0;
      var key2;
      var paramVal;
      var paramCallbacks;
      var paramCalled;
      function param(err) {
        if (err) {
          return done(err);
        }
        if (i2 >= keys2.length) {
          return done();
        }
        paramIndex = 0;
        key2 = keys2[i2++];
        name3 = key2.name;
        paramVal = req.params[name3];
        paramCallbacks = params[name3];
        paramCalled = called[name3];
        if (paramVal === void 0 || !paramCallbacks) {
          return param();
        }
        if (paramCalled && (paramCalled.match === paramVal || paramCalled.error && paramCalled.error !== "route")) {
          req.params[name3] = paramCalled.value;
          return param(paramCalled.error);
        }
        called[name3] = paramCalled = {
          error: null,
          match: paramVal,
          value: paramVal
        };
        paramCallback();
      }
      function paramCallback(err) {
        var fn = paramCallbacks[paramIndex++];
        paramCalled.value = req.params[key2.name];
        if (err) {
          paramCalled.error = err;
          param(err);
          return;
        }
        if (!fn) return param();
        try {
          fn(req, res, paramCallback, paramVal, key2.name);
        } catch (e2) {
          paramCallback(e2);
        }
      }
      param();
    };
    proto9.use = function use(fn) {
      var offset = 0;
      var path45 = "/";
      if (typeof fn !== "function") {
        var arg2 = fn;
        while (Array.isArray(arg2) && arg2.length !== 0) {
          arg2 = arg2[0];
        }
        if (typeof arg2 !== "function") {
          offset = 1;
          path45 = fn;
        }
      }
      var callbacks = flatten2(slice2.call(arguments, offset));
      if (callbacks.length === 0) {
        throw new TypeError("Router.use() requires a middleware function");
      }
      for (var i2 = 0; i2 < callbacks.length; i2++) {
        var fn = callbacks[i2];
        if (typeof fn !== "function") {
          throw new TypeError("Router.use() requires a middleware function but got a " + gettype(fn));
        }
        debug("use %o %s", path45, fn.name || "<anonymous>");
        var layer = new Layer(path45, {
          sensitive: this.caseSensitive,
          strict: false,
          end: false
        }, fn);
        layer.route = void 0;
        this.stack.push(layer);
      }
      return this;
    };
    proto9.route = function route(path45) {
      var route2 = new Route(path45);
      var layer = new Layer(path45, {
        sensitive: this.caseSensitive,
        strict: this.strict,
        end: true
      }, route2.dispatch.bind(route2));
      layer.route = route2;
      this.stack.push(layer);
      return route2;
    };
    methods.concat("all").forEach(function(method) {
      proto9[method] = function(path45) {
        var route = this.route(path45);
        route[method].apply(route, slice2.call(arguments, 1));
        return this;
      };
    });
    function appendMethods(list6, addition) {
      for (var i2 = 0; i2 < addition.length; i2++) {
        var method = addition[i2];
        if (list6.indexOf(method) === -1) {
          list6.push(method);
        }
      }
    }
    function getPathname(req) {
      try {
        return parseUrl(req).pathname;
      } catch (err) {
        return void 0;
      }
    }
    function getProtohost(url) {
      if (typeof url !== "string" || url.length === 0 || url[0] === "/") {
        return void 0;
      }
      var searchIndex = url.indexOf("?");
      var pathLength = searchIndex !== -1 ? searchIndex : url.length;
      var fqdnIndex = url.slice(0, pathLength).indexOf("://");
      return fqdnIndex !== -1 ? url.substring(0, url.indexOf("/", 3 + fqdnIndex)) : void 0;
    }
    function gettype(obj) {
      var type2 = typeof obj;
      if (type2 !== "object") {
        return type2;
      }
      return toString6.call(obj).replace(objectRegExp, "$1");
    }
    function matchLayer(layer, path45) {
      try {
        return layer.match(path45);
      } catch (err) {
        return err;
      }
    }
    function mergeParams(params, parent2) {
      if (typeof parent2 !== "object" || !parent2) {
        return params;
      }
      var obj = mixin({}, parent2);
      if (!(0 in params) || !(0 in parent2)) {
        return mixin(obj, params);
      }
      var i2 = 0;
      var o = 0;
      while (i2 in params) {
        i2++;
      }
      while (o in parent2) {
        o++;
      }
      for (i2--; i2 >= 0; i2--) {
        params[i2 + o] = params[i2];
        if (i2 < o) {
          delete params[i2];
        }
      }
      return mixin(obj, params);
    }
    function restore(fn, obj) {
      var props = new Array(arguments.length - 2);
      var vals = new Array(arguments.length - 2);
      for (var i2 = 0; i2 < props.length; i2++) {
        props[i2] = arguments[i2 + 2];
        vals[i2] = obj[props[i2]];
      }
      return function() {
        for (var i3 = 0; i3 < props.length; i3++) {
          obj[props[i3]] = vals[i3];
        }
        return fn.apply(this, arguments);
      };
    }
    function sendOptionsResponse(res, options, next) {
      try {
        var body3 = options.join(",");
        res.set("Allow", body3);
        res.send(body3);
      } catch (err) {
        next(err);
      }
    }
    function wrap4(old, fn) {
      return function proxy() {
        var args = new Array(arguments.length + 1);
        args[0] = old;
        for (var i2 = 0, len = arguments.length; i2 < len; i2++) {
          args[i2 + 1] = arguments[i2];
        }
        fn.apply(this, args);
      };
    }
  }
});

// ../../node_modules/express/lib/middleware/init.js
var require_init = __commonJS({
  "../../node_modules/express/lib/middleware/init.js"(exports2) {
    "use strict";
    var setPrototypeOf = require_setprototypeof();
    exports2.init = function(app) {
      return function expressInit(req, res, next) {
        if (app.enabled("x-powered-by")) res.setHeader("X-Powered-By", "Express");
        req.res = res;
        res.req = req;
        req.next = next;
        setPrototypeOf(req, app.request);
        setPrototypeOf(res, app.response);
        res.locals = res.locals || /* @__PURE__ */ Object.create(null);
        next();
      };
    };
  }
});

// ../../node_modules/express/lib/middleware/query.js
var require_query = __commonJS({
  "../../node_modules/express/lib/middleware/query.js"(exports2, module2) {
    "use strict";
    var merge3 = require_utils_merge();
    var parseUrl = require_parseurl();
    var qs = require_lib23();
    module2.exports = function query(options) {
      var opts = merge3({}, options);
      var queryparse = qs.parse;
      if (typeof options === "function") {
        queryparse = options;
        opts = void 0;
      }
      if (opts !== void 0 && opts.allowPrototypes === void 0) {
        opts.allowPrototypes = true;
      }
      return function query2(req, res, next) {
        if (!req.query) {
          var val = parseUrl(req).query;
          req.query = queryparse(val, opts);
        }
        next();
      };
    };
  }
});

// ../../node_modules/express/lib/view.js
var require_view = __commonJS({
  "../../node_modules/express/lib/view.js"(exports2, module2) {
    "use strict";
    var debug = require_src3()("express:view");
    var path45 = require("path");
    var fs50 = require("fs");
    var dirname8 = path45.dirname;
    var basename4 = path45.basename;
    var extname8 = path45.extname;
    var join19 = path45.join;
    var resolve9 = path45.resolve;
    module2.exports = View;
    function View(name3, options) {
      var opts = options || {};
      this.defaultEngine = opts.defaultEngine;
      this.ext = extname8(name3);
      this.name = name3;
      this.root = opts.root;
      if (!this.ext && !this.defaultEngine) {
        throw new Error("No default engine was specified and no extension was provided.");
      }
      var fileName = name3;
      if (!this.ext) {
        this.ext = this.defaultEngine[0] !== "." ? "." + this.defaultEngine : this.defaultEngine;
        fileName += this.ext;
      }
      if (!opts.engines[this.ext]) {
        var mod = this.ext.slice(1);
        debug('require "%s"', mod);
        var fn = require(mod).__express;
        if (typeof fn !== "function") {
          throw new Error('Module "' + mod + '" does not provide a view engine.');
        }
        opts.engines[this.ext] = fn;
      }
      this.engine = opts.engines[this.ext];
      this.path = this.lookup(fileName);
    }
    View.prototype.lookup = function lookup2(name3) {
      var path46;
      var roots = [].concat(this.root);
      debug('lookup "%s"', name3);
      for (var i2 = 0; i2 < roots.length && !path46; i2++) {
        var root6 = roots[i2];
        var loc = resolve9(root6, name3);
        var dir = dirname8(loc);
        var file = basename4(loc);
        path46 = this.resolve(dir, file);
      }
      return path46;
    };
    View.prototype.render = function render3(options, callback) {
      debug('render "%s"', this.path);
      this.engine(this.path, options, callback);
    };
    View.prototype.resolve = function resolve10(dir, file) {
      var ext2 = this.ext;
      var path46 = join19(dir, file);
      var stat2 = tryStat(path46);
      if (stat2 && stat2.isFile()) {
        return path46;
      }
      path46 = join19(dir, basename4(file, ext2), "index" + ext2);
      stat2 = tryStat(path46);
      if (stat2 && stat2.isFile()) {
        return path46;
      }
    };
    function tryStat(path46) {
      debug('stat "%s"', path46);
      try {
        return fs50.statSync(path46);
      } catch (e2) {
        return void 0;
      }
    }
  }
});

// ../../node_modules/safe-buffer/index.js
var require_safe_buffer = __commonJS({
  "../../node_modules/safe-buffer/index.js"(exports2, module2) {
    var buffer2 = require("buffer");
    var Buffer7 = buffer2.Buffer;
    function copyProps(src, dst) {
      for (var key2 in src) {
        dst[key2] = src[key2];
      }
    }
    if (Buffer7.from && Buffer7.alloc && Buffer7.allocUnsafe && Buffer7.allocUnsafeSlow) {
      module2.exports = buffer2;
    } else {
      copyProps(buffer2, exports2);
      exports2.Buffer = SafeBuffer;
    }
    function SafeBuffer(arg2, encodingOrOffset, length) {
      return Buffer7(arg2, encodingOrOffset, length);
    }
    SafeBuffer.prototype = Object.create(Buffer7.prototype);
    copyProps(Buffer7, SafeBuffer);
    SafeBuffer.from = function(arg2, encodingOrOffset, length) {
      if (typeof arg2 === "number") {
        throw new TypeError("Argument must not be a number");
      }
      return Buffer7(arg2, encodingOrOffset, length);
    };
    SafeBuffer.alloc = function(size, fill3, encoding) {
      if (typeof size !== "number") {
        throw new TypeError("Argument must be a number");
      }
      var buf = Buffer7(size);
      if (fill3 !== void 0) {
        if (typeof encoding === "string") {
          buf.fill(fill3, encoding);
        } else {
          buf.fill(fill3);
        }
      } else {
        buf.fill(0);
      }
      return buf;
    };
    SafeBuffer.allocUnsafe = function(size) {
      if (typeof size !== "number") {
        throw new TypeError("Argument must be a number");
      }
      return Buffer7(size);
    };
    SafeBuffer.allocUnsafeSlow = function(size) {
      if (typeof size !== "number") {
        throw new TypeError("Argument must be a number");
      }
      return buffer2.SlowBuffer(size);
    };
  }
});

// ../../node_modules/content-disposition/index.js
var require_content_disposition = __commonJS({
  "../../node_modules/content-disposition/index.js"(exports2, module2) {
    "use strict";
    module2.exports = contentDisposition;
    module2.exports.parse = parse16;
    var basename4 = require("path").basename;
    var Buffer7 = require_safe_buffer().Buffer;
    var ENCODE_URL_ATTR_CHAR_REGEXP = /[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g;
    var HEX_ESCAPE_REGEXP = /%[0-9A-Fa-f]{2}/;
    var HEX_ESCAPE_REPLACE_REGEXP = /%([0-9A-Fa-f]{2})/g;
    var NON_LATIN1_REGEXP = /[^\x20-\x7e\xa0-\xff]/g;
    var QESC_REGEXP = /\\([\u0000-\u007f])/g;
    var QUOTE_REGEXP = /([\\"])/g;
    var PARAM_REGEXP = /;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g;
    var TEXT_REGEXP = /^[\x20-\x7e\x80-\xff]+$/;
    var TOKEN_REGEXP = /^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/;
    var EXT_VALUE_REGEXP = /^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/;
    var DISPOSITION_TYPE_REGEXP = /^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/;
    function contentDisposition(filename, options) {
      var opts = options || {};
      var type2 = opts.type || "attachment";
      var params = createparams(filename, opts.fallback);
      return format(new ContentDisposition(type2, params));
    }
    function createparams(filename, fallback) {
      if (filename === void 0) {
        return;
      }
      var params = {};
      if (typeof filename !== "string") {
        throw new TypeError("filename must be a string");
      }
      if (fallback === void 0) {
        fallback = true;
      }
      if (typeof fallback !== "string" && typeof fallback !== "boolean") {
        throw new TypeError("fallback must be a string or boolean");
      }
      if (typeof fallback === "string" && NON_LATIN1_REGEXP.test(fallback)) {
        throw new TypeError("fallback must be ISO-8859-1 string");
      }
      var name3 = basename4(filename);
      var isQuotedString = TEXT_REGEXP.test(name3);
      var fallbackName = typeof fallback !== "string" ? fallback && getlatin1(name3) : basename4(fallback);
      var hasFallback = typeof fallbackName === "string" && fallbackName !== name3;
      if (hasFallback || !isQuotedString || HEX_ESCAPE_REGEXP.test(name3)) {
        params["filename*"] = name3;
      }
      if (isQuotedString || hasFallback) {
        params.filename = hasFallback ? fallbackName : name3;
      }
      return params;
    }
    function format(obj) {
      var parameters = obj.parameters;
      var type2 = obj.type;
      if (!type2 || typeof type2 !== "string" || !TOKEN_REGEXP.test(type2)) {
        throw new TypeError("invalid type");
      }
      var string2 = String(type2).toLowerCase();
      if (parameters && typeof parameters === "object") {
        var param;
        var params = Object.keys(parameters).sort();
        for (var i2 = 0; i2 < params.length; i2++) {
          param = params[i2];
          var val = param.substr(-1) === "*" ? ustring(parameters[param]) : qstring(parameters[param]);
          string2 += "; " + param + "=" + val;
        }
      }
      return string2;
    }
    function decodefield(str2) {
      var match3 = EXT_VALUE_REGEXP.exec(str2);
      if (!match3) {
        throw new TypeError("invalid extended field value");
      }
      var charset = match3[1].toLowerCase();
      var encoded = match3[2];
      var value;
      var binary2 = encoded.replace(HEX_ESCAPE_REPLACE_REGEXP, pdecode);
      switch (charset) {
        case "iso-8859-1":
          value = getlatin1(binary2);
          break;
        case "utf-8":
          value = Buffer7.from(binary2, "binary").toString("utf8");
          break;
        default:
          throw new TypeError("unsupported charset in extended field");
      }
      return value;
    }
    function getlatin1(val) {
      return String(val).replace(NON_LATIN1_REGEXP, "?");
    }
    function parse16(string2) {
      if (!string2 || typeof string2 !== "string") {
        throw new TypeError("argument string is required");
      }
      var match3 = DISPOSITION_TYPE_REGEXP.exec(string2);
      if (!match3) {
        throw new TypeError("invalid type format");
      }
      var index4 = match3[0].length;
      var type2 = match3[1].toLowerCase();
      var key2;
      var names = [];
      var params = {};
      var value;
      index4 = PARAM_REGEXP.lastIndex = match3[0].substr(-1) === ";" ? index4 - 1 : index4;
      while (match3 = PARAM_REGEXP.exec(string2)) {
        if (match3.index !== index4) {
          throw new TypeError("invalid parameter format");
        }
        index4 += match3[0].length;
        key2 = match3[1].toLowerCase();
        value = match3[2];
        if (names.indexOf(key2) !== -1) {
          throw new TypeError("invalid duplicate parameter");
        }
        names.push(key2);
        if (key2.indexOf("*") + 1 === key2.length) {
          key2 = key2.slice(0, -1);
          value = decodefield(value);
          params[key2] = value;
          continue;
        }
        if (typeof params[key2] === "string") {
          continue;
        }
        if (value[0] === '"') {
          value = value.substr(1, value.length - 2).replace(QESC_REGEXP, "$1");
        }
        params[key2] = value;
      }
      if (index4 !== -1 && index4 !== string2.length) {
        throw new TypeError("invalid parameter format");
      }
      return new ContentDisposition(type2, params);
    }
    function pdecode(str2, hex) {
      return String.fromCharCode(parseInt(hex, 16));
    }
    function pencode(char) {
      return "%" + String(char).charCodeAt(0).toString(16).toUpperCase();
    }
    function qstring(val) {
      var str2 = String(val);
      return '"' + str2.replace(QUOTE_REGEXP, "\\$1") + '"';
    }
    function ustring(val) {
      var str2 = String(val);
      var encoded = encodeURIComponent(str2).replace(ENCODE_URL_ATTR_CHAR_REGEXP, pencode);
      return "UTF-8''" + encoded;
    }
    function ContentDisposition(type2, parameters) {
      this.type = type2;
      this.parameters = parameters;
    }
  }
});

// ../../node_modules/send/node_modules/debug/node_modules/ms/index.js
var require_ms4 = __commonJS({
  "../../node_modules/send/node_modules/debug/node_modules/ms/index.js"(exports2, module2) {
    var s5 = 1e3;
    var m2 = s5 * 60;
    var h4 = m2 * 60;
    var d = h4 * 24;
    var y = d * 365.25;
    module2.exports = function(val, options) {
      options = options || {};
      var type2 = typeof val;
      if (type2 === "string" && val.length > 0) {
        return parse16(val);
      } else if (type2 === "number" && isNaN(val) === false) {
        return options.long ? fmtLong(val) : fmtShort(val);
      }
      throw new Error(
        "val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
      );
    };
    function parse16(str2) {
      str2 = String(str2);
      if (str2.length > 100) {
        return;
      }
      var match3 = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(
        str2
      );
      if (!match3) {
        return;
      }
      var n = parseFloat(match3[1]);
      var type2 = (match3[2] || "ms").toLowerCase();
      switch (type2) {
        case "years":
        case "year":
        case "yrs":
        case "yr":
        case "y":
          return n * y;
        case "days":
        case "day":
        case "d":
          return n * d;
        case "hours":
        case "hour":
        case "hrs":
        case "hr":
        case "h":
          return n * h4;
        case "minutes":
        case "minute":
        case "mins":
        case "min":
        case "m":
          return n * m2;
        case "seconds":
        case "second":
        case "secs":
        case "sec":
        case "s":
          return n * s5;
        case "milliseconds":
        case "millisecond":
        case "msecs":
        case "msec":
        case "ms":
          return n;
        default:
          return void 0;
      }
    }
    function fmtShort(ms) {
      if (ms >= d) {
        return Math.round(ms / d) + "d";
      }
      if (ms >= h4) {
        return Math.round(ms / h4) + "h";
      }
      if (ms >= m2) {
        return Math.round(ms / m2) + "m";
      }
      if (ms >= s5) {
        return Math.round(ms / s5) + "s";
      }
      return ms + "ms";
    }
    function fmtLong(ms) {
      return plural2(ms, d, "day") || plural2(ms, h4, "hour") || plural2(ms, m2, "minute") || plural2(ms, s5, "second") || ms + " ms";
    }
    function plural2(ms, n, name3) {
      if (ms < n) {
        return;
      }
      if (ms < n * 1.5) {
        return Math.floor(ms / n) + " " + name3;
      }
      return Math.ceil(ms / n) + " " + name3 + "s";
    }
  }
});

// ../../node_modules/send/node_modules/debug/src/debug.js
var require_debug4 = __commonJS({
  "../../node_modules/send/node_modules/debug/src/debug.js"(exports2, module2) {
    exports2 = module2.exports = createDebug.debug = createDebug["default"] = createDebug;
    exports2.coerce = coerce2;
    exports2.disable = disable;
    exports2.enable = enable;
    exports2.enabled = enabled;
    exports2.humanize = require_ms4();
    exports2.names = [];
    exports2.skips = [];
    exports2.formatters = {};
    var prevTime;
    function selectColor(namespace) {
      var hash = 0, i2;
      for (i2 in namespace) {
        hash = (hash << 5) - hash + namespace.charCodeAt(i2);
        hash |= 0;
      }
      return exports2.colors[Math.abs(hash) % exports2.colors.length];
    }
    function createDebug(namespace) {
      function debug() {
        if (!debug.enabled) return;
        var self2 = debug;
        var curr = +/* @__PURE__ */ new Date();
        var ms = curr - (prevTime || curr);
        self2.diff = ms;
        self2.prev = prevTime;
        self2.curr = curr;
        prevTime = curr;
        var args = new Array(arguments.length);
        for (var i2 = 0; i2 < args.length; i2++) {
          args[i2] = arguments[i2];
        }
        args[0] = exports2.coerce(args[0]);
        if ("string" !== typeof args[0]) {
          args.unshift("%O");
        }
        var index4 = 0;
        args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match3, format) {
          if (match3 === "%%") return match3;
          index4++;
          var formatter = exports2.formatters[format];
          if ("function" === typeof formatter) {
            var val = args[index4];
            match3 = formatter.call(self2, val);
            args.splice(index4, 1);
            index4--;
          }
          return match3;
        });
        exports2.formatArgs.call(self2, args);
        var logFn = debug.log || exports2.log || console.log.bind(console);
        logFn.apply(self2, args);
      }
      debug.namespace = namespace;
      debug.enabled = exports2.enabled(namespace);
      debug.useColors = exports2.useColors();
      debug.color = selectColor(namespace);
      if ("function" === typeof exports2.init) {
        exports2.init(debug);
      }
      return debug;
    }
    function enable(namespaces) {
      exports2.save(namespaces);
      exports2.names = [];
      exports2.skips = [];
      var split2 = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/);
      var len = split2.length;
      for (var i2 = 0; i2 < len; i2++) {
        if (!split2[i2]) continue;
        namespaces = split2[i2].replace(/\*/g, ".*?");
        if (namespaces[0] === "-") {
          exports2.skips.push(new RegExp("^" + namespaces.substr(1) + "$"));
        } else {
          exports2.names.push(new RegExp("^" + namespaces + "$"));
        }
      }
    }
    function disable() {
      exports2.enable("");
    }
    function enabled(name3) {
      var i2, len;
      for (i2 = 0, len = exports2.skips.length; i2 < len; i2++) {
        if (exports2.skips[i2].test(name3)) {
          return false;
        }
      }
      for (i2 = 0, len = exports2.names.length; i2 < len; i2++) {
        if (exports2.names[i2].test(name3)) {
          return true;
        }
      }
      return false;
    }
    function coerce2(val) {
      if (val instanceof Error) return val.stack || val.message;
      return val;
    }
  }
});

// ../../node_modules/send/node_modules/debug/src/browser.js
var require_browser4 = __commonJS({
  "../../node_modules/send/node_modules/debug/src/browser.js"(exports2, module2) {
    exports2 = module2.exports = require_debug4();
    exports2.log = log;
    exports2.formatArgs = formatArgs;
    exports2.save = save;
    exports2.load = load2;
    exports2.useColors = useColors;
    exports2.storage = "undefined" != typeof chrome && "undefined" != typeof chrome.storage ? chrome.storage.local : localstorage();
    exports2.colors = [
      "lightseagreen",
      "forestgreen",
      "goldenrod",
      "dodgerblue",
      "darkorchid",
      "crimson"
    ];
    function useColors() {
      if (typeof window !== "undefined" && window.process && window.process.type === "renderer") {
        return true;
      }
      return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // is firebug? http://stackoverflow.com/a/398120/376773
      typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // is firefox >= v31?
      // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
      typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // double check webkit in userAgent just in case we are in a worker
      typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
    }
    exports2.formatters.j = function(v) {
      try {
        return JSON.stringify(v);
      } catch (err) {
        return "[UnexpectedJSONParseError]: " + err.message;
      }
    };
    function formatArgs(args) {
      var useColors2 = this.useColors;
      args[0] = (useColors2 ? "%c" : "") + this.namespace + (useColors2 ? " %c" : " ") + args[0] + (useColors2 ? "%c " : " ") + "+" + exports2.humanize(this.diff);
      if (!useColors2) return;
      var c = "color: " + this.color;
      args.splice(1, 0, c, "color: inherit");
      var index4 = 0;
      var lastC = 0;
      args[0].replace(/%[a-zA-Z%]/g, function(match3) {
        if ("%%" === match3) return;
        index4++;
        if ("%c" === match3) {
          lastC = index4;
        }
      });
      args.splice(lastC, 0, c);
    }
    function log() {
      return "object" === typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments);
    }
    function save(namespaces) {
      try {
        if (null == namespaces) {
          exports2.storage.removeItem("debug");
        } else {
          exports2.storage.debug = namespaces;
        }
      } catch (e2) {
      }
    }
    function load2() {
      var r2;
      try {
        r2 = exports2.storage.debug;
      } catch (e2) {
      }
      if (!r2 && typeof process !== "undefined" && "env" in process) {
        r2 = process.env.DEBUG;
      }
      return r2;
    }
    exports2.enable(load2());
    function localstorage() {
      try {
        return window.localStorage;
      } catch (e2) {
      }
    }
  }
});

// ../../node_modules/send/node_modules/debug/src/node.js
var require_node6 = __commonJS({
  "../../node_modules/send/node_modules/debug/src/node.js"(exports2, module2) {
    var tty6 = require("tty");
    var util4 = require("util");
    exports2 = module2.exports = require_debug4();
    exports2.init = init4;
    exports2.log = log;
    exports2.formatArgs = formatArgs;
    exports2.save = save;
    exports2.load = load2;
    exports2.useColors = useColors;
    exports2.colors = [6, 2, 3, 4, 5, 1];
    exports2.inspectOpts = Object.keys(process.env).filter(function(key2) {
      return /^debug_/i.test(key2);
    }).reduce(function(obj, key2) {
      var prop = key2.substring(6).toLowerCase().replace(/_([a-z])/g, function(_2, k) {
        return k.toUpperCase();
      });
      var val = process.env[key2];
      if (/^(yes|on|true|enabled)$/i.test(val)) val = true;
      else if (/^(no|off|false|disabled)$/i.test(val)) val = false;
      else if (val === "null") val = null;
      else val = Number(val);
      obj[prop] = val;
      return obj;
    }, {});
    var fd = parseInt(process.env.DEBUG_FD, 10) || 2;
    if (1 !== fd && 2 !== fd) {
      util4.deprecate(function() {
      }, "except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();
    }
    var stream3 = 1 === fd ? process.stdout : 2 === fd ? process.stderr : createWritableStdioStream(fd);
    function useColors() {
      return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty6.isatty(fd);
    }
    exports2.formatters.o = function(v) {
      this.inspectOpts.colors = this.useColors;
      return util4.inspect(v, this.inspectOpts).split("\n").map(function(str2) {
        return str2.trim();
      }).join(" ");
    };
    exports2.formatters.O = function(v) {
      this.inspectOpts.colors = this.useColors;
      return util4.inspect(v, this.inspectOpts);
    };
    function formatArgs(args) {
      var name3 = this.namespace;
      var useColors2 = this.useColors;
      if (useColors2) {
        var c = this.color;
        var prefix2 = "  \x1B[3" + c + ";1m" + name3 + " \x1B[0m";
        args[0] = prefix2 + args[0].split("\n").join("\n" + prefix2);
        args.push("\x1B[3" + c + "m+" + exports2.humanize(this.diff) + "\x1B[0m");
      } else {
        args[0] = (/* @__PURE__ */ new Date()).toUTCString() + " " + name3 + " " + args[0];
      }
    }
    function log() {
      return stream3.write(util4.format.apply(util4, arguments) + "\n");
    }
    function save(namespaces) {
      if (null == namespaces) {
        delete process.env.DEBUG;
      } else {
        process.env.DEBUG = namespaces;
      }
    }
    function load2() {
      return process.env.DEBUG;
    }
    function createWritableStdioStream(fd2) {
      var stream4;
      var tty_wrap = process.binding("tty_wrap");
      switch (tty_wrap.guessHandleType(fd2)) {
        case "TTY":
          stream4 = new tty6.WriteStream(fd2);
          stream4._type = "tty";
          if (stream4._handle && stream4._handle.unref) {
            stream4._handle.unref();
          }
          break;
        case "FILE":
          var fs50 = require("fs");
          stream4 = new fs50.SyncWriteStream(fd2, { autoClose: false });
          stream4._type = "fs";
          break;
        case "PIPE":
        case "TCP":
          var net3 = require("net");
          stream4 = new net3.Socket({
            fd: fd2,
            readable: false,
            writable: true
          });
          stream4.readable = false;
          stream4.read = null;
          stream4._type = "pipe";
          if (stream4._handle && stream4._handle.unref) {
            stream4._handle.unref();
          }
          break;
        default:
          throw new Error("Implement me. Unknown stream file type!");
      }
      stream4.fd = fd2;
      stream4._isStdio = true;
      return stream4;
    }
    function init4(debug) {
      debug.inspectOpts = {};
      var keys2 = Object.keys(exports2.inspectOpts);
      for (var i2 = 0; i2 < keys2.length; i2++) {
        debug.inspectOpts[keys2[i2]] = exports2.inspectOpts[keys2[i2]];
      }
    }
    exports2.enable(load2());
  }
});

// ../../node_modules/send/node_modules/debug/src/index.js
var require_src4 = __commonJS({
  "../../node_modules/send/node_modules/debug/src/index.js"(exports2, module2) {
    if (typeof process !== "undefined" && process.type === "renderer") {
      module2.exports = require_browser4();
    } else {
      module2.exports = require_node6();
    }
  }
});

// ../../node_modules/send/node_modules/encodeurl/index.js
var require_encodeurl2 = __commonJS({
  "../../node_modules/send/node_modules/encodeurl/index.js"(exports2, module2) {
    "use strict";
    module2.exports = encodeUrl;
    var ENCODE_CHARS_REGEXP = /(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g;
    var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g;
    var UNMATCHED_SURROGATE_PAIR_REPLACE = "$1\uFFFD$2";
    function encodeUrl(url) {
      return String(url).replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE).replace(ENCODE_CHARS_REGEXP, encodeURI);
    }
  }
});

// ../../node_modules/etag/index.js
var require_etag = __commonJS({
  "../../node_modules/etag/index.js"(exports2, module2) {
    "use strict";
    module2.exports = etag;
    var crypto4 = require("crypto");
    var Stats = require("fs").Stats;
    var toString6 = Object.prototype.toString;
    function entitytag(entity) {
      if (entity.length === 0) {
        return '"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"';
      }
      var hash = crypto4.createHash("sha1").update(entity, "utf8").digest("base64").substring(0, 27);
      var len = typeof entity === "string" ? Buffer.byteLength(entity, "utf8") : entity.length;
      return '"' + len.toString(16) + "-" + hash + '"';
    }
    function etag(entity, options) {
      if (entity == null) {
        throw new TypeError("argument entity is required");
      }
      var isStats = isstats(entity);
      var weak = options && typeof options.weak === "boolean" ? options.weak : isStats;
      if (!isStats && typeof entity !== "string" && !Buffer.isBuffer(entity)) {
        throw new TypeError("argument entity must be string, Buffer, or fs.Stats");
      }
      var tag = isStats ? stattag(entity) : entitytag(entity);
      return weak ? "W/" + tag : tag;
    }
    function isstats(obj) {
      if (typeof Stats === "function" && obj instanceof Stats) {
        return true;
      }
      return obj && typeof obj === "object" && "ctime" in obj && toString6.call(obj.ctime) === "[object Date]" && "mtime" in obj && toString6.call(obj.mtime) === "[object Date]" && "ino" in obj && typeof obj.ino === "number" && "size" in obj && typeof obj.size === "number";
    }
    function stattag(stat2) {
      var mtime = stat2.mtime.getTime().toString(16);
      var size = stat2.size.toString(16);
      return '"' + size + "-" + mtime + '"';
    }
  }
});

// ../../node_modules/fresh/index.js
var require_fresh = __commonJS({
  "../../node_modules/fresh/index.js"(exports2, module2) {
    "use strict";
    var CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\s*?no-cache\s*?(?:,|$)/;
    module2.exports = fresh;
    function fresh(reqHeaders, resHeaders) {
      var modifiedSince = reqHeaders["if-modified-since"];
      var noneMatch = reqHeaders["if-none-match"];
      if (!modifiedSince && !noneMatch) {
        return false;
      }
      var cacheControl = reqHeaders["cache-control"];
      if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl)) {
        return false;
      }
      if (noneMatch && noneMatch !== "*") {
        var etag = resHeaders["etag"];
        if (!etag) {
          return false;
        }
        var etagStale = true;
        var matches4 = parseTokenList(noneMatch);
        for (var i2 = 0; i2 < matches4.length; i2++) {
          var match3 = matches4[i2];
          if (match3 === etag || match3 === "W/" + etag || "W/" + match3 === etag) {
            etagStale = false;
            break;
          }
        }
        if (etagStale) {
          return false;
        }
      }
      if (modifiedSince) {
        var lastModified = resHeaders["last-modified"];
        var modifiedStale = !lastModified || !(parseHttpDate(lastModified) <= parseHttpDate(modifiedSince));
        if (modifiedStale) {
          return false;
        }
      }
      return true;
    }
    function parseHttpDate(date) {
      var timestamp2 = date && Date.parse(date);
      return typeof timestamp2 === "number" ? timestamp2 : NaN;
    }
    function parseTokenList(str2) {
      var end = 0;
      var list6 = [];
      var start = 0;
      for (var i2 = 0, len = str2.length; i2 < len; i2++) {
        switch (str2.charCodeAt(i2)) {
          case 32:
            if (start === end) {
              start = end = i2 + 1;
            }
            break;
          case 44:
            list6.push(str2.substring(start, end));
            start = end = i2 + 1;
            break;
          default:
            end = i2 + 1;
            break;
        }
      }
      list6.push(str2.substring(start, end));
      return list6;
    }
  }
});

// ../../node_modules/mime/types.json
var require_types2 = __commonJS({
  "../../node_modules/mime/types.json"(exports2, module2) {
    module2.exports = { "application/andrew-inset": ["ez"], "application/applixware": ["aw"], "application/atom+xml": ["atom"], "application/atomcat+xml": ["atomcat"], "application/atomsvc+xml": ["atomsvc"], "application/bdoc": ["bdoc"], "application/ccxml+xml": ["ccxml"], "application/cdmi-capability": ["cdmia"], "application/cdmi-container": ["cdmic"], "application/cdmi-domain": ["cdmid"], "application/cdmi-object": ["cdmio"], "application/cdmi-queue": ["cdmiq"], "application/cu-seeme": ["cu"], "application/dash+xml": ["mpd"], "application/davmount+xml": ["davmount"], "application/docbook+xml": ["dbk"], "application/dssc+der": ["dssc"], "application/dssc+xml": ["xdssc"], "application/ecmascript": ["ecma"], "application/emma+xml": ["emma"], "application/epub+zip": ["epub"], "application/exi": ["exi"], "application/font-tdpfr": ["pfr"], "application/font-woff": [], "application/font-woff2": [], "application/geo+json": ["geojson"], "application/gml+xml": ["gml"], "application/gpx+xml": ["gpx"], "application/gxf": ["gxf"], "application/gzip": ["gz"], "application/hyperstudio": ["stk"], "application/inkml+xml": ["ink", "inkml"], "application/ipfix": ["ipfix"], "application/java-archive": ["jar", "war", "ear"], "application/java-serialized-object": ["ser"], "application/java-vm": ["class"], "application/javascript": ["js", "mjs"], "application/json": ["json", "map"], "application/json5": ["json5"], "application/jsonml+json": ["jsonml"], "application/ld+json": ["jsonld"], "application/lost+xml": ["lostxml"], "application/mac-binhex40": ["hqx"], "application/mac-compactpro": ["cpt"], "application/mads+xml": ["mads"], "application/manifest+json": ["webmanifest"], "application/marc": ["mrc"], "application/marcxml+xml": ["mrcx"], "application/mathematica": ["ma", "nb", "mb"], "application/mathml+xml": ["mathml"], "application/mbox": ["mbox"], "application/mediaservercontrol+xml": ["mscml"], "application/metalink+xml": ["metalink"], "application/metalink4+xml": ["meta4"], "application/mets+xml": ["mets"], "application/mods+xml": ["mods"], "application/mp21": ["m21", "mp21"], "application/mp4": ["mp4s", "m4p"], "application/msword": ["doc", "dot"], "application/mxf": ["mxf"], "application/octet-stream": ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"], "application/oda": ["oda"], "application/oebps-package+xml": ["opf"], "application/ogg": ["ogx"], "application/omdoc+xml": ["omdoc"], "application/onenote": ["onetoc", "onetoc2", "onetmp", "onepkg"], "application/oxps": ["oxps"], "application/patch-ops-error+xml": ["xer"], "application/pdf": ["pdf"], "application/pgp-encrypted": ["pgp"], "application/pgp-signature": ["asc", "sig"], "application/pics-rules": ["prf"], "application/pkcs10": ["p10"], "application/pkcs7-mime": ["p7m", "p7c"], "application/pkcs7-signature": ["p7s"], "application/pkcs8": ["p8"], "application/pkix-attr-cert": ["ac"], "application/pkix-cert": ["cer"], "application/pkix-crl": ["crl"], "application/pkix-pkipath": ["pkipath"], "application/pkixcmp": ["pki"], "application/pls+xml": ["pls"], "application/postscript": ["ai", "eps", "ps"], "application/prs.cww": ["cww"], "application/pskc+xml": ["pskcxml"], "application/raml+yaml": ["raml"], "application/rdf+xml": ["rdf"], "application/reginfo+xml": ["rif"], "application/relax-ng-compact-syntax": ["rnc"], "application/resource-lists+xml": ["rl"], "application/resource-lists-diff+xml": ["rld"], "application/rls-services+xml": ["rs"], "application/rpki-ghostbusters": ["gbr"], "application/rpki-manifest": ["mft"], "application/rpki-roa": ["roa"], "application/rsd+xml": ["rsd"], "application/rss+xml": ["rss"], "application/rtf": ["rtf"], "application/sbml+xml": ["sbml"], "application/scvp-cv-request": ["scq"], "application/scvp-cv-response": ["scs"], "application/scvp-vp-request": ["spq"], "application/scvp-vp-response": ["spp"], "application/sdp": ["sdp"], "application/set-payment-initiation": ["setpay"], "application/set-registration-initiation": ["setreg"], "application/shf+xml": ["shf"], "application/smil+xml": ["smi", "smil"], "application/sparql-query": ["rq"], "application/sparql-results+xml": ["srx"], "application/srgs": ["gram"], "application/srgs+xml": ["grxml"], "application/sru+xml": ["sru"], "application/ssdl+xml": ["ssdl"], "application/ssml+xml": ["ssml"], "application/tei+xml": ["tei", "teicorpus"], "application/thraud+xml": ["tfi"], "application/timestamped-data": ["tsd"], "application/vnd.3gpp.pic-bw-large": ["plb"], "application/vnd.3gpp.pic-bw-small": ["psb"], "application/vnd.3gpp.pic-bw-var": ["pvb"], "application/vnd.3gpp2.tcap": ["tcap"], "application/vnd.3m.post-it-notes": ["pwn"], "application/vnd.accpac.simply.aso": ["aso"], "application/vnd.accpac.simply.imp": ["imp"], "application/vnd.acucobol": ["acu"], "application/vnd.acucorp": ["atc", "acutc"], "application/vnd.adobe.air-application-installer-package+zip": ["air"], "application/vnd.adobe.formscentral.fcdt": ["fcdt"], "application/vnd.adobe.fxp": ["fxp", "fxpl"], "application/vnd.adobe.xdp+xml": ["xdp"], "application/vnd.adobe.xfdf": ["xfdf"], "application/vnd.ahead.space": ["ahead"], "application/vnd.airzip.filesecure.azf": ["azf"], "application/vnd.airzip.filesecure.azs": ["azs"], "application/vnd.amazon.ebook": ["azw"], "application/vnd.americandynamics.acc": ["acc"], "application/vnd.amiga.ami": ["ami"], "application/vnd.android.package-archive": ["apk"], "application/vnd.anser-web-certificate-issue-initiation": ["cii"], "application/vnd.anser-web-funds-transfer-initiation": ["fti"], "application/vnd.antix.game-component": ["atx"], "application/vnd.apple.installer+xml": ["mpkg"], "application/vnd.apple.mpegurl": ["m3u8"], "application/vnd.apple.pkpass": ["pkpass"], "application/vnd.aristanetworks.swi": ["swi"], "application/vnd.astraea-software.iota": ["iota"], "application/vnd.audiograph": ["aep"], "application/vnd.blueice.multipass": ["mpm"], "application/vnd.bmi": ["bmi"], "application/vnd.businessobjects": ["rep"], "application/vnd.chemdraw+xml": ["cdxml"], "application/vnd.chipnuts.karaoke-mmd": ["mmd"], "application/vnd.cinderella": ["cdy"], "application/vnd.claymore": ["cla"], "application/vnd.cloanto.rp9": ["rp9"], "application/vnd.clonk.c4group": ["c4g", "c4d", "c4f", "c4p", "c4u"], "application/vnd.cluetrust.cartomobile-config": ["c11amc"], "application/vnd.cluetrust.cartomobile-config-pkg": ["c11amz"], "application/vnd.commonspace": ["csp"], "application/vnd.contact.cmsg": ["cdbcmsg"], "application/vnd.cosmocaller": ["cmc"], "application/vnd.crick.clicker": ["clkx"], "application/vnd.crick.clicker.keyboard": ["clkk"], "application/vnd.crick.clicker.palette": ["clkp"], "application/vnd.crick.clicker.template": ["clkt"], "application/vnd.crick.clicker.wordbank": ["clkw"], "application/vnd.criticaltools.wbs+xml": ["wbs"], "application/vnd.ctc-posml": ["pml"], "application/vnd.cups-ppd": ["ppd"], "application/vnd.curl.car": ["car"], "application/vnd.curl.pcurl": ["pcurl"], "application/vnd.dart": ["dart"], "application/vnd.data-vision.rdz": ["rdz"], "application/vnd.dece.data": ["uvf", "uvvf", "uvd", "uvvd"], "application/vnd.dece.ttml+xml": ["uvt", "uvvt"], "application/vnd.dece.unspecified": ["uvx", "uvvx"], "application/vnd.dece.zip": ["uvz", "uvvz"], "application/vnd.denovo.fcselayout-link": ["fe_launch"], "application/vnd.dna": ["dna"], "application/vnd.dolby.mlp": ["mlp"], "application/vnd.dpgraph": ["dpg"], "application/vnd.dreamfactory": ["dfac"], "application/vnd.ds-keypoint": ["kpxx"], "application/vnd.dvb.ait": ["ait"], "application/vnd.dvb.service": ["svc"], "application/vnd.dynageo": ["geo"], "application/vnd.ecowin.chart": ["mag"], "application/vnd.enliven": ["nml"], "application/vnd.epson.esf": ["esf"], "application/vnd.epson.msf": ["msf"], "application/vnd.epson.quickanime": ["qam"], "application/vnd.epson.salt": ["slt"], "application/vnd.epson.ssf": ["ssf"], "application/vnd.eszigno3+xml": ["es3", "et3"], "application/vnd.ezpix-album": ["ez2"], "application/vnd.ezpix-package": ["ez3"], "application/vnd.fdf": ["fdf"], "application/vnd.fdsn.mseed": ["mseed"], "application/vnd.fdsn.seed": ["seed", "dataless"], "application/vnd.flographit": ["gph"], "application/vnd.fluxtime.clip": ["ftc"], "application/vnd.framemaker": ["fm", "frame", "maker", "book"], "application/vnd.frogans.fnc": ["fnc"], "application/vnd.frogans.ltf": ["ltf"], "application/vnd.fsc.weblaunch": ["fsc"], "application/vnd.fujitsu.oasys": ["oas"], "application/vnd.fujitsu.oasys2": ["oa2"], "application/vnd.fujitsu.oasys3": ["oa3"], "application/vnd.fujitsu.oasysgp": ["fg5"], "application/vnd.fujitsu.oasysprs": ["bh2"], "application/vnd.fujixerox.ddd": ["ddd"], "application/vnd.fujixerox.docuworks": ["xdw"], "application/vnd.fujixerox.docuworks.binder": ["xbd"], "application/vnd.fuzzysheet": ["fzs"], "application/vnd.genomatix.tuxedo": ["txd"], "application/vnd.geogebra.file": ["ggb"], "application/vnd.geogebra.tool": ["ggt"], "application/vnd.geometry-explorer": ["gex", "gre"], "application/vnd.geonext": ["gxt"], "application/vnd.geoplan": ["g2w"], "application/vnd.geospace": ["g3w"], "application/vnd.gmx": ["gmx"], "application/vnd.google-apps.document": ["gdoc"], "application/vnd.google-apps.presentation": ["gslides"], "application/vnd.google-apps.spreadsheet": ["gsheet"], "application/vnd.google-earth.kml+xml": ["kml"], "application/vnd.google-earth.kmz": ["kmz"], "application/vnd.grafeq": ["gqf", "gqs"], "application/vnd.groove-account": ["gac"], "application/vnd.groove-help": ["ghf"], "application/vnd.groove-identity-message": ["gim"], "application/vnd.groove-injector": ["grv"], "application/vnd.groove-tool-message": ["gtm"], "application/vnd.groove-tool-template": ["tpl"], "application/vnd.groove-vcard": ["vcg"], "application/vnd.hal+xml": ["hal"], "application/vnd.handheld-entertainment+xml": ["zmm"], "application/vnd.hbci": ["hbci"], "application/vnd.hhe.lesson-player": ["les"], "application/vnd.hp-hpgl": ["hpgl"], "application/vnd.hp-hpid": ["hpid"], "application/vnd.hp-hps": ["hps"], "application/vnd.hp-jlyt": ["jlt"], "application/vnd.hp-pcl": ["pcl"], "application/vnd.hp-pclxl": ["pclxl"], "application/vnd.hydrostatix.sof-data": ["sfd-hdstx"], "application/vnd.ibm.minipay": ["mpy"], "application/vnd.ibm.modcap": ["afp", "listafp", "list3820"], "application/vnd.ibm.rights-management": ["irm"], "application/vnd.ibm.secure-container": ["sc"], "application/vnd.iccprofile": ["icc", "icm"], "application/vnd.igloader": ["igl"], "application/vnd.immervision-ivp": ["ivp"], "application/vnd.immervision-ivu": ["ivu"], "application/vnd.insors.igm": ["igm"], "application/vnd.intercon.formnet": ["xpw", "xpx"], "application/vnd.intergeo": ["i2g"], "application/vnd.intu.qbo": ["qbo"], "application/vnd.intu.qfx": ["qfx"], "application/vnd.ipunplugged.rcprofile": ["rcprofile"], "application/vnd.irepository.package+xml": ["irp"], "application/vnd.is-xpr": ["xpr"], "application/vnd.isac.fcs": ["fcs"], "application/vnd.jam": ["jam"], "application/vnd.jcp.javame.midlet-rms": ["rms"], "application/vnd.jisp": ["jisp"], "application/vnd.joost.joda-archive": ["joda"], "application/vnd.kahootz": ["ktz", "ktr"], "application/vnd.kde.karbon": ["karbon"], "application/vnd.kde.kchart": ["chrt"], "application/vnd.kde.kformula": ["kfo"], "application/vnd.kde.kivio": ["flw"], "application/vnd.kde.kontour": ["kon"], "application/vnd.kde.kpresenter": ["kpr", "kpt"], "application/vnd.kde.kspread": ["ksp"], "application/vnd.kde.kword": ["kwd", "kwt"], "application/vnd.kenameaapp": ["htke"], "application/vnd.kidspiration": ["kia"], "application/vnd.kinar": ["kne", "knp"], "application/vnd.koan": ["skp", "skd", "skt", "skm"], "application/vnd.kodak-descriptor": ["sse"], "application/vnd.las.las+xml": ["lasxml"], "application/vnd.llamagraphics.life-balance.desktop": ["lbd"], "application/vnd.llamagraphics.life-balance.exchange+xml": ["lbe"], "application/vnd.lotus-1-2-3": ["123"], "application/vnd.lotus-approach": ["apr"], "application/vnd.lotus-freelance": ["pre"], "application/vnd.lotus-notes": ["nsf"], "application/vnd.lotus-organizer": ["org"], "application/vnd.lotus-screencam": ["scm"], "application/vnd.lotus-wordpro": ["lwp"], "application/vnd.macports.portpkg": ["portpkg"], "application/vnd.mcd": ["mcd"], "application/vnd.medcalcdata": ["mc1"], "application/vnd.mediastation.cdkey": ["cdkey"], "application/vnd.mfer": ["mwf"], "application/vnd.mfmp": ["mfm"], "application/vnd.micrografx.flo": ["flo"], "application/vnd.micrografx.igx": ["igx"], "application/vnd.mif": ["mif"], "application/vnd.mobius.daf": ["daf"], "application/vnd.mobius.dis": ["dis"], "application/vnd.mobius.mbk": ["mbk"], "application/vnd.mobius.mqy": ["mqy"], "application/vnd.mobius.msl": ["msl"], "application/vnd.mobius.plc": ["plc"], "application/vnd.mobius.txf": ["txf"], "application/vnd.mophun.application": ["mpn"], "application/vnd.mophun.certificate": ["mpc"], "application/vnd.mozilla.xul+xml": ["xul"], "application/vnd.ms-artgalry": ["cil"], "application/vnd.ms-cab-compressed": ["cab"], "application/vnd.ms-excel": ["xls", "xlm", "xla", "xlc", "xlt", "xlw"], "application/vnd.ms-excel.addin.macroenabled.12": ["xlam"], "application/vnd.ms-excel.sheet.binary.macroenabled.12": ["xlsb"], "application/vnd.ms-excel.sheet.macroenabled.12": ["xlsm"], "application/vnd.ms-excel.template.macroenabled.12": ["xltm"], "application/vnd.ms-fontobject": ["eot"], "application/vnd.ms-htmlhelp": ["chm"], "application/vnd.ms-ims": ["ims"], "application/vnd.ms-lrm": ["lrm"], "application/vnd.ms-officetheme": ["thmx"], "application/vnd.ms-outlook": ["msg"], "application/vnd.ms-pki.seccat": ["cat"], "application/vnd.ms-pki.stl": ["stl"], "application/vnd.ms-powerpoint": ["ppt", "pps", "pot"], "application/vnd.ms-powerpoint.addin.macroenabled.12": ["ppam"], "application/vnd.ms-powerpoint.presentation.macroenabled.12": ["pptm"], "application/vnd.ms-powerpoint.slide.macroenabled.12": ["sldm"], "application/vnd.ms-powerpoint.slideshow.macroenabled.12": ["ppsm"], "application/vnd.ms-powerpoint.template.macroenabled.12": ["potm"], "application/vnd.ms-project": ["mpp", "mpt"], "application/vnd.ms-word.document.macroenabled.12": ["docm"], "application/vnd.ms-word.template.macroenabled.12": ["dotm"], "application/vnd.ms-works": ["wps", "wks", "wcm", "wdb"], "application/vnd.ms-wpl": ["wpl"], "application/vnd.ms-xpsdocument": ["xps"], "application/vnd.mseq": ["mseq"], "application/vnd.musician": ["mus"], "application/vnd.muvee.style": ["msty"], "application/vnd.mynfc": ["taglet"], "application/vnd.neurolanguage.nlu": ["nlu"], "application/vnd.nitf": ["ntf", "nitf"], "application/vnd.noblenet-directory": ["nnd"], "application/vnd.noblenet-sealer": ["nns"], "application/vnd.noblenet-web": ["nnw"], "application/vnd.nokia.n-gage.data": ["ngdat"], "application/vnd.nokia.n-gage.symbian.install": ["n-gage"], "application/vnd.nokia.radio-preset": ["rpst"], "application/vnd.nokia.radio-presets": ["rpss"], "application/vnd.novadigm.edm": ["edm"], "application/vnd.novadigm.edx": ["edx"], "application/vnd.novadigm.ext": ["ext"], "application/vnd.oasis.opendocument.chart": ["odc"], "application/vnd.oasis.opendocument.chart-template": ["otc"], "application/vnd.oasis.opendocument.database": ["odb"], "application/vnd.oasis.opendocument.formula": ["odf"], "application/vnd.oasis.opendocument.formula-template": ["odft"], "application/vnd.oasis.opendocument.graphics": ["odg"], "application/vnd.oasis.opendocument.graphics-template": ["otg"], "application/vnd.oasis.opendocument.image": ["odi"], "application/vnd.oasis.opendocument.image-template": ["oti"], "application/vnd.oasis.opendocument.presentation": ["odp"], "application/vnd.oasis.opendocument.presentation-template": ["otp"], "application/vnd.oasis.opendocument.spreadsheet": ["ods"], "application/vnd.oasis.opendocument.spreadsheet-template": ["ots"], "application/vnd.oasis.opendocument.text": ["odt"], "application/vnd.oasis.opendocument.text-master": ["odm"], "application/vnd.oasis.opendocument.text-template": ["ott"], "application/vnd.oasis.opendocument.text-web": ["oth"], "application/vnd.olpc-sugar": ["xo"], "application/vnd.oma.dd2+xml": ["dd2"], "application/vnd.openofficeorg.extension": ["oxt"], "application/vnd.openxmlformats-officedocument.presentationml.presentation": ["pptx"], "application/vnd.openxmlformats-officedocument.presentationml.slide": ["sldx"], "application/vnd.openxmlformats-officedocument.presentationml.slideshow": ["ppsx"], "application/vnd.openxmlformats-officedocument.presentationml.template": ["potx"], "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": ["xlsx"], "application/vnd.openxmlformats-officedocument.spreadsheetml.template": ["xltx"], "application/vnd.openxmlformats-officedocument.wordprocessingml.document": ["docx"], "application/vnd.openxmlformats-officedocument.wordprocessingml.template": ["dotx"], "application/vnd.osgeo.mapguide.package": ["mgp"], "application/vnd.osgi.dp": ["dp"], "application/vnd.osgi.subsystem": ["esa"], "application/vnd.palm": ["pdb", "pqa", "oprc"], "application/vnd.pawaafile": ["paw"], "application/vnd.pg.format": ["str"], "application/vnd.pg.osasli": ["ei6"], "application/vnd.picsel": ["efif"], "application/vnd.pmi.widget": ["wg"], "application/vnd.pocketlearn": ["plf"], "application/vnd.powerbuilder6": ["pbd"], "application/vnd.previewsystems.box": ["box"], "application/vnd.proteus.magazine": ["mgz"], "application/vnd.publishare-delta-tree": ["qps"], "application/vnd.pvi.ptid1": ["ptid"], "application/vnd.quark.quarkxpress": ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"], "application/vnd.realvnc.bed": ["bed"], "application/vnd.recordare.musicxml": ["mxl"], "application/vnd.recordare.musicxml+xml": ["musicxml"], "application/vnd.rig.cryptonote": ["cryptonote"], "application/vnd.rim.cod": ["cod"], "application/vnd.rn-realmedia": ["rm"], "application/vnd.rn-realmedia-vbr": ["rmvb"], "application/vnd.route66.link66+xml": ["link66"], "application/vnd.sailingtracker.track": ["st"], "application/vnd.seemail": ["see"], "application/vnd.sema": ["sema"], "application/vnd.semd": ["semd"], "application/vnd.semf": ["semf"], "application/vnd.shana.informed.formdata": ["ifm"], "application/vnd.shana.informed.formtemplate": ["itp"], "application/vnd.shana.informed.interchange": ["iif"], "application/vnd.shana.informed.package": ["ipk"], "application/vnd.simtech-mindmapper": ["twd", "twds"], "application/vnd.smaf": ["mmf"], "application/vnd.smart.teacher": ["teacher"], "application/vnd.solent.sdkm+xml": ["sdkm", "sdkd"], "application/vnd.spotfire.dxp": ["dxp"], "application/vnd.spotfire.sfs": ["sfs"], "application/vnd.stardivision.calc": ["sdc"], "application/vnd.stardivision.draw": ["sda"], "application/vnd.stardivision.impress": ["sdd"], "application/vnd.stardivision.math": ["smf"], "application/vnd.stardivision.writer": ["sdw", "vor"], "application/vnd.stardivision.writer-global": ["sgl"], "application/vnd.stepmania.package": ["smzip"], "application/vnd.stepmania.stepchart": ["sm"], "application/vnd.sun.wadl+xml": ["wadl"], "application/vnd.sun.xml.calc": ["sxc"], "application/vnd.sun.xml.calc.template": ["stc"], "application/vnd.sun.xml.draw": ["sxd"], "application/vnd.sun.xml.draw.template": ["std"], "application/vnd.sun.xml.impress": ["sxi"], "application/vnd.sun.xml.impress.template": ["sti"], "application/vnd.sun.xml.math": ["sxm"], "application/vnd.sun.xml.writer": ["sxw"], "application/vnd.sun.xml.writer.global": ["sxg"], "application/vnd.sun.xml.writer.template": ["stw"], "application/vnd.sus-calendar": ["sus", "susp"], "application/vnd.svd": ["svd"], "application/vnd.symbian.install": ["sis", "sisx"], "application/vnd.syncml+xml": ["xsm"], "application/vnd.syncml.dm+wbxml": ["bdm"], "application/vnd.syncml.dm+xml": ["xdm"], "application/vnd.tao.intent-module-archive": ["tao"], "application/vnd.tcpdump.pcap": ["pcap", "cap", "dmp"], "application/vnd.tmobile-livetv": ["tmo"], "application/vnd.trid.tpt": ["tpt"], "application/vnd.triscape.mxs": ["mxs"], "application/vnd.trueapp": ["tra"], "application/vnd.ufdl": ["ufd", "ufdl"], "application/vnd.uiq.theme": ["utz"], "application/vnd.umajin": ["umj"], "application/vnd.unity": ["unityweb"], "application/vnd.uoml+xml": ["uoml"], "application/vnd.vcx": ["vcx"], "application/vnd.visio": ["vsd", "vst", "vss", "vsw"], "application/vnd.visionary": ["vis"], "application/vnd.vsf": ["vsf"], "application/vnd.wap.wbxml": ["wbxml"], "application/vnd.wap.wmlc": ["wmlc"], "application/vnd.wap.wmlscriptc": ["wmlsc"], "application/vnd.webturbo": ["wtb"], "application/vnd.wolfram.player": ["nbp"], "application/vnd.wordperfect": ["wpd"], "application/vnd.wqd": ["wqd"], "application/vnd.wt.stf": ["stf"], "application/vnd.xara": ["xar"], "application/vnd.xfdl": ["xfdl"], "application/vnd.yamaha.hv-dic": ["hvd"], "application/vnd.yamaha.hv-script": ["hvs"], "application/vnd.yamaha.hv-voice": ["hvp"], "application/vnd.yamaha.openscoreformat": ["osf"], "application/vnd.yamaha.openscoreformat.osfpvg+xml": ["osfpvg"], "application/vnd.yamaha.smaf-audio": ["saf"], "application/vnd.yamaha.smaf-phrase": ["spf"], "application/vnd.yellowriver-custom-menu": ["cmp"], "application/vnd.zul": ["zir", "zirz"], "application/vnd.zzazz.deck+xml": ["zaz"], "application/voicexml+xml": ["vxml"], "application/wasm": ["wasm"], "application/widget": ["wgt"], "application/winhlp": ["hlp"], "application/wsdl+xml": ["wsdl"], "application/wspolicy+xml": ["wspolicy"], "application/x-7z-compressed": ["7z"], "application/x-abiword": ["abw"], "application/x-ace-compressed": ["ace"], "application/x-apple-diskimage": [], "application/x-arj": ["arj"], "application/x-authorware-bin": ["aab", "x32", "u32", "vox"], "application/x-authorware-map": ["aam"], "application/x-authorware-seg": ["aas"], "application/x-bcpio": ["bcpio"], "application/x-bdoc": [], "application/x-bittorrent": ["torrent"], "application/x-blorb": ["blb", "blorb"], "application/x-bzip": ["bz"], "application/x-bzip2": ["bz2", "boz"], "application/x-cbr": ["cbr", "cba", "cbt", "cbz", "cb7"], "application/x-cdlink": ["vcd"], "application/x-cfs-compressed": ["cfs"], "application/x-chat": ["chat"], "application/x-chess-pgn": ["pgn"], "application/x-chrome-extension": ["crx"], "application/x-cocoa": ["cco"], "application/x-conference": ["nsc"], "application/x-cpio": ["cpio"], "application/x-csh": ["csh"], "application/x-debian-package": ["udeb"], "application/x-dgc-compressed": ["dgc"], "application/x-director": ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"], "application/x-doom": ["wad"], "application/x-dtbncx+xml": ["ncx"], "application/x-dtbook+xml": ["dtb"], "application/x-dtbresource+xml": ["res"], "application/x-dvi": ["dvi"], "application/x-envoy": ["evy"], "application/x-eva": ["eva"], "application/x-font-bdf": ["bdf"], "application/x-font-ghostscript": ["gsf"], "application/x-font-linux-psf": ["psf"], "application/x-font-pcf": ["pcf"], "application/x-font-snf": ["snf"], "application/x-font-type1": ["pfa", "pfb", "pfm", "afm"], "application/x-freearc": ["arc"], "application/x-futuresplash": ["spl"], "application/x-gca-compressed": ["gca"], "application/x-glulx": ["ulx"], "application/x-gnumeric": ["gnumeric"], "application/x-gramps-xml": ["gramps"], "application/x-gtar": ["gtar"], "application/x-hdf": ["hdf"], "application/x-httpd-php": ["php"], "application/x-install-instructions": ["install"], "application/x-iso9660-image": [], "application/x-java-archive-diff": ["jardiff"], "application/x-java-jnlp-file": ["jnlp"], "application/x-latex": ["latex"], "application/x-lua-bytecode": ["luac"], "application/x-lzh-compressed": ["lzh", "lha"], "application/x-makeself": ["run"], "application/x-mie": ["mie"], "application/x-mobipocket-ebook": ["prc", "mobi"], "application/x-ms-application": ["application"], "application/x-ms-shortcut": ["lnk"], "application/x-ms-wmd": ["wmd"], "application/x-ms-wmz": ["wmz"], "application/x-ms-xbap": ["xbap"], "application/x-msaccess": ["mdb"], "application/x-msbinder": ["obd"], "application/x-mscardfile": ["crd"], "application/x-msclip": ["clp"], "application/x-msdos-program": [], "application/x-msdownload": ["com", "bat"], "application/x-msmediaview": ["mvb", "m13", "m14"], "application/x-msmetafile": ["wmf", "emf", "emz"], "application/x-msmoney": ["mny"], "application/x-mspublisher": ["pub"], "application/x-msschedule": ["scd"], "application/x-msterminal": ["trm"], "application/x-mswrite": ["wri"], "application/x-netcdf": ["nc", "cdf"], "application/x-ns-proxy-autoconfig": ["pac"], "application/x-nzb": ["nzb"], "application/x-perl": ["pl", "pm"], "application/x-pilot": [], "application/x-pkcs12": ["p12", "pfx"], "application/x-pkcs7-certificates": ["p7b", "spc"], "application/x-pkcs7-certreqresp": ["p7r"], "application/x-rar-compressed": ["rar"], "application/x-redhat-package-manager": ["rpm"], "application/x-research-info-systems": ["ris"], "application/x-sea": ["sea"], "application/x-sh": ["sh"], "application/x-shar": ["shar"], "application/x-shockwave-flash": ["swf"], "application/x-silverlight-app": ["xap"], "application/x-sql": ["sql"], "application/x-stuffit": ["sit"], "application/x-stuffitx": ["sitx"], "application/x-subrip": ["srt"], "application/x-sv4cpio": ["sv4cpio"], "application/x-sv4crc": ["sv4crc"], "application/x-t3vm-image": ["t3"], "application/x-tads": ["gam"], "application/x-tar": ["tar"], "application/x-tcl": ["tcl", "tk"], "application/x-tex": ["tex"], "application/x-tex-tfm": ["tfm"], "application/x-texinfo": ["texinfo", "texi"], "application/x-tgif": ["obj"], "application/x-ustar": ["ustar"], "application/x-virtualbox-hdd": ["hdd"], "application/x-virtualbox-ova": ["ova"], "application/x-virtualbox-ovf": ["ovf"], "application/x-virtualbox-vbox": ["vbox"], "application/x-virtualbox-vbox-extpack": ["vbox-extpack"], "application/x-virtualbox-vdi": ["vdi"], "application/x-virtualbox-vhd": ["vhd"], "application/x-virtualbox-vmdk": ["vmdk"], "application/x-wais-source": ["src"], "application/x-web-app-manifest+json": ["webapp"], "application/x-x509-ca-cert": ["der", "crt", "pem"], "application/x-xfig": ["fig"], "application/x-xliff+xml": ["xlf"], "application/x-xpinstall": ["xpi"], "application/x-xz": ["xz"], "application/x-zmachine": ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"], "application/xaml+xml": ["xaml"], "application/xcap-diff+xml": ["xdf"], "application/xenc+xml": ["xenc"], "application/xhtml+xml": ["xhtml", "xht"], "application/xml": ["xml", "xsl", "xsd", "rng"], "application/xml-dtd": ["dtd"], "application/xop+xml": ["xop"], "application/xproc+xml": ["xpl"], "application/xslt+xml": ["xslt"], "application/xspf+xml": ["xspf"], "application/xv+xml": ["mxml", "xhvml", "xvml", "xvm"], "application/yang": ["yang"], "application/yin+xml": ["yin"], "application/zip": ["zip"], "audio/3gpp": [], "audio/adpcm": ["adp"], "audio/basic": ["au", "snd"], "audio/midi": ["mid", "midi", "kar", "rmi"], "audio/mp3": [], "audio/mp4": ["m4a", "mp4a"], "audio/mpeg": ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"], "audio/ogg": ["oga", "ogg", "spx"], "audio/s3m": ["s3m"], "audio/silk": ["sil"], "audio/vnd.dece.audio": ["uva", "uvva"], "audio/vnd.digital-winds": ["eol"], "audio/vnd.dra": ["dra"], "audio/vnd.dts": ["dts"], "audio/vnd.dts.hd": ["dtshd"], "audio/vnd.lucent.voice": ["lvp"], "audio/vnd.ms-playready.media.pya": ["pya"], "audio/vnd.nuera.ecelp4800": ["ecelp4800"], "audio/vnd.nuera.ecelp7470": ["ecelp7470"], "audio/vnd.nuera.ecelp9600": ["ecelp9600"], "audio/vnd.rip": ["rip"], "audio/wav": ["wav"], "audio/wave": [], "audio/webm": ["weba"], "audio/x-aac": ["aac"], "audio/x-aiff": ["aif", "aiff", "aifc"], "audio/x-caf": ["caf"], "audio/x-flac": ["flac"], "audio/x-m4a": [], "audio/x-matroska": ["mka"], "audio/x-mpegurl": ["m3u"], "audio/x-ms-wax": ["wax"], "audio/x-ms-wma": ["wma"], "audio/x-pn-realaudio": ["ram", "ra"], "audio/x-pn-realaudio-plugin": ["rmp"], "audio/x-realaudio": [], "audio/x-wav": [], "audio/xm": ["xm"], "chemical/x-cdx": ["cdx"], "chemical/x-cif": ["cif"], "chemical/x-cmdf": ["cmdf"], "chemical/x-cml": ["cml"], "chemical/x-csml": ["csml"], "chemical/x-xyz": ["xyz"], "font/collection": ["ttc"], "font/otf": ["otf"], "font/ttf": ["ttf"], "font/woff": ["woff"], "font/woff2": ["woff2"], "image/apng": ["apng"], "image/bmp": ["bmp"], "image/cgm": ["cgm"], "image/g3fax": ["g3"], "image/gif": ["gif"], "image/ief": ["ief"], "image/jp2": ["jp2", "jpg2"], "image/jpeg": ["jpeg", "jpg", "jpe"], "image/jpm": ["jpm"], "image/jpx": ["jpx", "jpf"], "image/ktx": ["ktx"], "image/png": ["png"], "image/prs.btif": ["btif"], "image/sgi": ["sgi"], "image/svg+xml": ["svg", "svgz"], "image/tiff": ["tiff", "tif"], "image/vnd.adobe.photoshop": ["psd"], "image/vnd.dece.graphic": ["uvi", "uvvi", "uvg", "uvvg"], "image/vnd.djvu": ["djvu", "djv"], "image/vnd.dvb.subtitle": [], "image/vnd.dwg": ["dwg"], "image/vnd.dxf": ["dxf"], "image/vnd.fastbidsheet": ["fbs"], "image/vnd.fpx": ["fpx"], "image/vnd.fst": ["fst"], "image/vnd.fujixerox.edmics-mmr": ["mmr"], "image/vnd.fujixerox.edmics-rlc": ["rlc"], "image/vnd.ms-modi": ["mdi"], "image/vnd.ms-photo": ["wdp"], "image/vnd.net-fpx": ["npx"], "image/vnd.wap.wbmp": ["wbmp"], "image/vnd.xiff": ["xif"], "image/webp": ["webp"], "image/x-3ds": ["3ds"], "image/x-cmu-raster": ["ras"], "image/x-cmx": ["cmx"], "image/x-freehand": ["fh", "fhc", "fh4", "fh5", "fh7"], "image/x-icon": ["ico"], "image/x-jng": ["jng"], "image/x-mrsid-image": ["sid"], "image/x-ms-bmp": [], "image/x-pcx": ["pcx"], "image/x-pict": ["pic", "pct"], "image/x-portable-anymap": ["pnm"], "image/x-portable-bitmap": ["pbm"], "image/x-portable-graymap": ["pgm"], "image/x-portable-pixmap": ["ppm"], "image/x-rgb": ["rgb"], "image/x-tga": ["tga"], "image/x-xbitmap": ["xbm"], "image/x-xpixmap": ["xpm"], "image/x-xwindowdump": ["xwd"], "message/rfc822": ["eml", "mime"], "model/gltf+json": ["gltf"], "model/gltf-binary": ["glb"], "model/iges": ["igs", "iges"], "model/mesh": ["msh", "mesh", "silo"], "model/vnd.collada+xml": ["dae"], "model/vnd.dwf": ["dwf"], "model/vnd.gdl": ["gdl"], "model/vnd.gtw": ["gtw"], "model/vnd.mts": ["mts"], "model/vnd.vtu": ["vtu"], "model/vrml": ["wrl", "vrml"], "model/x3d+binary": ["x3db", "x3dbz"], "model/x3d+vrml": ["x3dv", "x3dvz"], "model/x3d+xml": ["x3d", "x3dz"], "text/cache-manifest": ["appcache", "manifest"], "text/calendar": ["ics", "ifb"], "text/coffeescript": ["coffee", "litcoffee"], "text/css": ["css"], "text/csv": ["csv"], "text/hjson": ["hjson"], "text/html": ["html", "htm", "shtml"], "text/jade": ["jade"], "text/jsx": ["jsx"], "text/less": ["less"], "text/markdown": ["markdown", "md"], "text/mathml": ["mml"], "text/n3": ["n3"], "text/plain": ["txt", "text", "conf", "def", "list", "log", "in", "ini"], "text/prs.lines.tag": ["dsc"], "text/richtext": ["rtx"], "text/rtf": [], "text/sgml": ["sgml", "sgm"], "text/slim": ["slim", "slm"], "text/stylus": ["stylus", "styl"], "text/tab-separated-values": ["tsv"], "text/troff": ["t", "tr", "roff", "man", "me", "ms"], "text/turtle": ["ttl"], "text/uri-list": ["uri", "uris", "urls"], "text/vcard": ["vcard"], "text/vnd.curl": ["curl"], "text/vnd.curl.dcurl": ["dcurl"], "text/vnd.curl.mcurl": ["mcurl"], "text/vnd.curl.scurl": ["scurl"], "text/vnd.dvb.subtitle": ["sub"], "text/vnd.fly": ["fly"], "text/vnd.fmi.flexstor": ["flx"], "text/vnd.graphviz": ["gv"], "text/vnd.in3d.3dml": ["3dml"], "text/vnd.in3d.spot": ["spot"], "text/vnd.sun.j2me.app-descriptor": ["jad"], "text/vnd.wap.wml": ["wml"], "text/vnd.wap.wmlscript": ["wmls"], "text/vtt": ["vtt"], "text/x-asm": ["s", "asm"], "text/x-c": ["c", "cc", "cxx", "cpp", "h", "hh", "dic"], "text/x-component": ["htc"], "text/x-fortran": ["f", "for", "f77", "f90"], "text/x-handlebars-template": ["hbs"], "text/x-java-source": ["java"], "text/x-lua": ["lua"], "text/x-markdown": ["mkd"], "text/x-nfo": ["nfo"], "text/x-opml": ["opml"], "text/x-org": [], "text/x-pascal": ["p", "pas"], "text/x-processing": ["pde"], "text/x-sass": ["sass"], "text/x-scss": ["scss"], "text/x-setext": ["etx"], "text/x-sfv": ["sfv"], "text/x-suse-ymp": ["ymp"], "text/x-uuencode": ["uu"], "text/x-vcalendar": ["vcs"], "text/x-vcard": ["vcf"], "text/xml": [], "text/yaml": ["yaml", "yml"], "video/3gpp": ["3gp", "3gpp"], "video/3gpp2": ["3g2"], "video/h261": ["h261"], "video/h263": ["h263"], "video/h264": ["h264"], "video/jpeg": ["jpgv"], "video/jpm": ["jpgm"], "video/mj2": ["mj2", "mjp2"], "video/mp2t": ["ts"], "video/mp4": ["mp4", "mp4v", "mpg4"], "video/mpeg": ["mpeg", "mpg", "mpe", "m1v", "m2v"], "video/ogg": ["ogv"], "video/quicktime": ["qt", "mov"], "video/vnd.dece.hd": ["uvh", "uvvh"], "video/vnd.dece.mobile": ["uvm", "uvvm"], "video/vnd.dece.pd": ["uvp", "uvvp"], "video/vnd.dece.sd": ["uvs", "uvvs"], "video/vnd.dece.video": ["uvv", "uvvv"], "video/vnd.dvb.file": ["dvb"], "video/vnd.fvt": ["fvt"], "video/vnd.mpegurl": ["mxu", "m4u"], "video/vnd.ms-playready.media.pyv": ["pyv"], "video/vnd.uvvu.mp4": ["uvu", "uvvu"], "video/vnd.vivo": ["viv"], "video/webm": ["webm"], "video/x-f4v": ["f4v"], "video/x-fli": ["fli"], "video/x-flv": ["flv"], "video/x-m4v": ["m4v"], "video/x-matroska": ["mkv", "mk3d", "mks"], "video/x-mng": ["mng"], "video/x-ms-asf": ["asf", "asx"], "video/x-ms-vob": ["vob"], "video/x-ms-wm": ["wm"], "video/x-ms-wmv": ["wmv"], "video/x-ms-wmx": ["wmx"], "video/x-ms-wvx": ["wvx"], "video/x-msvideo": ["avi"], "video/x-sgi-movie": ["movie"], "video/x-smv": ["smv"], "x-conference/x-cooltalk": ["ice"] };
  }
});

// ../../node_modules/mime/mime.js
var require_mime = __commonJS({
  "../../node_modules/mime/mime.js"(exports2, module2) {
    var path45 = require("path");
    var fs50 = require("fs");
    function Mime() {
      this.types = /* @__PURE__ */ Object.create(null);
      this.extensions = /* @__PURE__ */ Object.create(null);
    }
    Mime.prototype.define = function(map13) {
      for (var type2 in map13) {
        var exts = map13[type2];
        for (var i2 = 0; i2 < exts.length; i2++) {
          if (process.env.DEBUG_MIME && this.types[exts[i2]]) {
            console.warn((this._loading || "define()").replace(/.*\//, ""), 'changes "' + exts[i2] + '" extension type from ' + this.types[exts[i2]] + " to " + type2);
          }
          this.types[exts[i2]] = type2;
        }
        if (!this.extensions[type2]) {
          this.extensions[type2] = exts[0];
        }
      }
    };
    Mime.prototype.load = function(file) {
      this._loading = file;
      var map13 = {}, content3 = fs50.readFileSync(file, "ascii"), lines = content3.split(/[\r\n]+/);
      lines.forEach(function(line2) {
        var fields = line2.replace(/\s*#.*|^\s*|\s*$/g, "").split(/\s+/);
        map13[fields.shift()] = fields;
      });
      this.define(map13);
      this._loading = null;
    };
    Mime.prototype.lookup = function(path46, fallback) {
      var ext2 = path46.replace(/^.*[\.\/\\]/, "").toLowerCase();
      return this.types[ext2] || fallback || this.default_type;
    };
    Mime.prototype.extension = function(mimeType) {
      var type2 = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase();
      return this.extensions[type2];
    };
    var mime3 = new Mime();
    mime3.define(require_types2());
    mime3.default_type = mime3.lookup("bin");
    mime3.Mime = Mime;
    mime3.charsets = {
      lookup: function(mimeType, fallback) {
        return /^text\/|^application\/(javascript|json)/.test(mimeType) ? "UTF-8" : fallback;
      }
    };
    module2.exports = mime3;
  }
});

// ../../node_modules/ms/index.js
var require_ms5 = __commonJS({
  "../../node_modules/ms/index.js"(exports2, module2) {
    var s5 = 1e3;
    var m2 = s5 * 60;
    var h4 = m2 * 60;
    var d = h4 * 24;
    var w = d * 7;
    var y = d * 365.25;
    module2.exports = function(val, options) {
      options = options || {};
      var type2 = typeof val;
      if (type2 === "string" && val.length > 0) {
        return parse16(val);
      } else if (type2 === "number" && isFinite(val)) {
        return options.long ? fmtLong(val) : fmtShort(val);
      }
      throw new Error(
        "val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
      );
    };
    function parse16(str2) {
      str2 = String(str2);
      if (str2.length > 100) {
        return;
      }
      var match3 = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
        str2
      );
      if (!match3) {
        return;
      }
      var n = parseFloat(match3[1]);
      var type2 = (match3[2] || "ms").toLowerCase();
      switch (type2) {
        case "years":
        case "year":
        case "yrs":
        case "yr":
        case "y":
          return n * y;
        case "weeks":
        case "week":
        case "w":
          return n * w;
        case "days":
        case "day":
        case "d":
          return n * d;
        case "hours":
        case "hour":
        case "hrs":
        case "hr":
        case "h":
          return n * h4;
        case "minutes":
        case "minute":
        case "mins":
        case "min":
        case "m":
          return n * m2;
        case "seconds":
        case "second":
        case "secs":
        case "sec":
        case "s":
          return n * s5;
        case "milliseconds":
        case "millisecond":
        case "msecs":
        case "msec":
        case "ms":
          return n;
        default:
          return void 0;
      }
    }
    function fmtShort(ms) {
      var msAbs = Math.abs(ms);
      if (msAbs >= d) {
        return Math.round(ms / d) + "d";
      }
      if (msAbs >= h4) {
        return Math.round(ms / h4) + "h";
      }
      if (msAbs >= m2) {
        return Math.round(ms / m2) + "m";
      }
      if (msAbs >= s5) {
        return Math.round(ms / s5) + "s";
      }
      return ms + "ms";
    }
    function fmtLong(ms) {
      var msAbs = Math.abs(ms);
      if (msAbs >= d) {
        return plural2(ms, msAbs, d, "day");
      }
      if (msAbs >= h4) {
        return plural2(ms, msAbs, h4, "hour");
      }
      if (msAbs >= m2) {
        return plural2(ms, msAbs, m2, "minute");
      }
      if (msAbs >= s5) {
        return plural2(ms, msAbs, s5, "second");
      }
      return ms + " ms";
    }
    function plural2(ms, msAbs, n, name3) {
      var isPlural = msAbs >= n * 1.5;
      return Math.round(ms / n) + " " + name3 + (isPlural ? "s" : "");
    }
  }
});

// ../../node_modules/range-parser/index.js
var require_range_parser = __commonJS({
  "../../node_modules/range-parser/index.js"(exports2, module2) {
    "use strict";
    module2.exports = rangeParser;
    function rangeParser(size, str2, options) {
      if (typeof str2 !== "string") {
        throw new TypeError("argument str must be a string");
      }
      var index4 = str2.indexOf("=");
      if (index4 === -1) {
        return -2;
      }
      var arr = str2.slice(index4 + 1).split(",");
      var ranges = [];
      ranges.type = str2.slice(0, index4);
      for (var i2 = 0; i2 < arr.length; i2++) {
        var range = arr[i2].split("-");
        var start = parseInt(range[0], 10);
        var end = parseInt(range[1], 10);
        if (isNaN(start)) {
          start = size - end;
          end = size - 1;
        } else if (isNaN(end)) {
          end = size - 1;
        }
        if (end > size - 1) {
          end = size - 1;
        }
        if (isNaN(start) || isNaN(end) || start > end || start < 0) {
          continue;
        }
        ranges.push({
          start,
          end
        });
      }
      if (ranges.length < 1) {
        return -1;
      }
      return options && options.combine ? combineRanges(ranges) : ranges;
    }
    function combineRanges(ranges) {
      var ordered = ranges.map(mapWithIndex).sort(sortByRangeStart);
      for (var j = 0, i2 = 1; i2 < ordered.length; i2++) {
        var range = ordered[i2];
        var current2 = ordered[j];
        if (range.start > current2.end + 1) {
          ordered[++j] = range;
        } else if (range.end > current2.end) {
          current2.end = range.end;
          current2.index = Math.min(current2.index, range.index);
        }
      }
      ordered.length = j + 1;
      var combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex);
      combined.type = ranges.type;
      return combined;
    }
    function mapWithIndex(range, index4) {
      return {
        start: range.start,
        end: range.end,
        index: index4
      };
    }
    function mapWithoutIndex(range) {
      return {
        start: range.start,
        end: range.end
      };
    }
    function sortByRangeIndex(a2, b) {
      return a2.index - b.index;
    }
    function sortByRangeStart(a2, b) {
      return a2.start - b.start;
    }
  }
});

// ../../node_modules/send/index.js
var require_send = __commonJS({
  "../../node_modules/send/index.js"(exports2, module2) {
    "use strict";
    var createError = require_http_errors();
    var debug = require_src4()("send");
    var deprecate3 = require_depd()("send");
    var destroy = require_destroy();
    var encodeUrl = require_encodeurl2();
    var escapeHtml4 = require_escape_html();
    var etag = require_etag();
    var fresh = require_fresh();
    var fs50 = require("fs");
    var mime3 = require_mime();
    var ms = require_ms5();
    var onFinished = require_on_finished();
    var parseRange = require_range_parser();
    var path45 = require("path");
    var statuses = require_statuses();
    var Stream4 = require("stream");
    var util4 = require("util");
    var extname8 = path45.extname;
    var join19 = path45.join;
    var normalize6 = path45.normalize;
    var resolve9 = path45.resolve;
    var sep5 = path45.sep;
    var BYTES_RANGE_REGEXP = /^ *bytes=/;
    var MAX_MAXAGE = 60 * 60 * 24 * 365 * 1e3;
    var UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/;
    module2.exports = send;
    module2.exports.mime = mime3;
    function send(req, path46, options) {
      return new SendStream(req, path46, options);
    }
    function SendStream(req, path46, options) {
      Stream4.call(this);
      var opts = options || {};
      this.options = opts;
      this.path = path46;
      this.req = req;
      this._acceptRanges = opts.acceptRanges !== void 0 ? Boolean(opts.acceptRanges) : true;
      this._cacheControl = opts.cacheControl !== void 0 ? Boolean(opts.cacheControl) : true;
      this._etag = opts.etag !== void 0 ? Boolean(opts.etag) : true;
      this._dotfiles = opts.dotfiles !== void 0 ? opts.dotfiles : "ignore";
      if (this._dotfiles !== "ignore" && this._dotfiles !== "allow" && this._dotfiles !== "deny") {
        throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"');
      }
      this._hidden = Boolean(opts.hidden);
      if (opts.hidden !== void 0) {
        deprecate3("hidden: use dotfiles: '" + (this._hidden ? "allow" : "ignore") + "' instead");
      }
      if (opts.dotfiles === void 0) {
        this._dotfiles = void 0;
      }
      this._extensions = opts.extensions !== void 0 ? normalizeList(opts.extensions, "extensions option") : [];
      this._immutable = opts.immutable !== void 0 ? Boolean(opts.immutable) : false;
      this._index = opts.index !== void 0 ? normalizeList(opts.index, "index option") : ["index.html"];
      this._lastModified = opts.lastModified !== void 0 ? Boolean(opts.lastModified) : true;
      this._maxage = opts.maxAge || opts.maxage;
      this._maxage = typeof this._maxage === "string" ? ms(this._maxage) : Number(this._maxage);
      this._maxage = !isNaN(this._maxage) ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE) : 0;
      this._root = opts.root ? resolve9(opts.root) : null;
      if (!this._root && opts.from) {
        this.from(opts.from);
      }
    }
    util4.inherits(SendStream, Stream4);
    SendStream.prototype.etag = deprecate3.function(function etag2(val) {
      this._etag = Boolean(val);
      debug("etag %s", this._etag);
      return this;
    }, "send.etag: pass etag as option");
    SendStream.prototype.hidden = deprecate3.function(function hidden2(val) {
      this._hidden = Boolean(val);
      this._dotfiles = void 0;
      debug("hidden %s", this._hidden);
      return this;
    }, "send.hidden: use dotfiles option");
    SendStream.prototype.index = deprecate3.function(function index4(paths) {
      var index5 = !paths ? [] : normalizeList(paths, "paths argument");
      debug("index %o", paths);
      this._index = index5;
      return this;
    }, "send.index: pass index as option");
    SendStream.prototype.root = function root6(path46) {
      this._root = resolve9(String(path46));
      debug("root %s", this._root);
      return this;
    };
    SendStream.prototype.from = deprecate3.function(
      SendStream.prototype.root,
      "send.from: pass root as option"
    );
    SendStream.prototype.root = deprecate3.function(
      SendStream.prototype.root,
      "send.root: pass root as option"
    );
    SendStream.prototype.maxage = deprecate3.function(function maxage(maxAge) {
      this._maxage = typeof maxAge === "string" ? ms(maxAge) : Number(maxAge);
      this._maxage = !isNaN(this._maxage) ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE) : 0;
      debug("max-age %d", this._maxage);
      return this;
    }, "send.maxage: pass maxAge as option");
    SendStream.prototype.error = function error(status, err) {
      if (hasListeners(this, "error")) {
        return this.emit("error", createHttpError(status, err));
      }
      var res = this.res;
      var msg = statuses.message[status] || String(status);
      var doc = createHtmlDocument("Error", escapeHtml4(msg));
      clearHeaders(res);
      if (err && err.headers) {
        setHeaders(res, err.headers);
      }
      res.statusCode = status;
      res.setHeader("Content-Type", "text/html; charset=UTF-8");
      res.setHeader("Content-Length", Buffer.byteLength(doc));
      res.setHeader("Content-Security-Policy", "default-src 'none'");
      res.setHeader("X-Content-Type-Options", "nosniff");
      res.end(doc);
    };
    SendStream.prototype.hasTrailingSlash = function hasTrailingSlash() {
      return this.path[this.path.length - 1] === "/";
    };
    SendStream.prototype.isConditionalGET = function isConditionalGET() {
      return this.req.headers["if-match"] || this.req.headers["if-unmodified-since"] || this.req.headers["if-none-match"] || this.req.headers["if-modified-since"];
    };
    SendStream.prototype.isPreconditionFailure = function isPreconditionFailure() {
      var req = this.req;
      var res = this.res;
      var match3 = req.headers["if-match"];
      if (match3) {
        var etag2 = res.getHeader("ETag");
        return !etag2 || match3 !== "*" && parseTokenList(match3).every(function(match4) {
          return match4 !== etag2 && match4 !== "W/" + etag2 && "W/" + match4 !== etag2;
        });
      }
      var unmodifiedSince = parseHttpDate(req.headers["if-unmodified-since"]);
      if (!isNaN(unmodifiedSince)) {
        var lastModified = parseHttpDate(res.getHeader("Last-Modified"));
        return isNaN(lastModified) || lastModified > unmodifiedSince;
      }
      return false;
    };
    SendStream.prototype.removeContentHeaderFields = function removeContentHeaderFields() {
      var res = this.res;
      res.removeHeader("Content-Encoding");
      res.removeHeader("Content-Language");
      res.removeHeader("Content-Length");
      res.removeHeader("Content-Range");
      res.removeHeader("Content-Type");
    };
    SendStream.prototype.notModified = function notModified() {
      var res = this.res;
      debug("not modified");
      this.removeContentHeaderFields();
      res.statusCode = 304;
      res.end();
    };
    SendStream.prototype.headersAlreadySent = function headersAlreadySent() {
      var err = new Error("Can't set headers after they are sent.");
      debug("headers already sent");
      this.error(500, err);
    };
    SendStream.prototype.isCachable = function isCachable() {
      var statusCode = this.res.statusCode;
      return statusCode >= 200 && statusCode < 300 || statusCode === 304;
    };
    SendStream.prototype.onStatError = function onStatError(error) {
      switch (error.code) {
        case "ENAMETOOLONG":
        case "ENOENT":
        case "ENOTDIR":
          this.error(404, error);
          break;
        default:
          this.error(500, error);
          break;
      }
    };
    SendStream.prototype.isFresh = function isFresh() {
      return fresh(this.req.headers, {
        etag: this.res.getHeader("ETag"),
        "last-modified": this.res.getHeader("Last-Modified")
      });
    };
    SendStream.prototype.isRangeFresh = function isRangeFresh() {
      var ifRange = this.req.headers["if-range"];
      if (!ifRange) {
        return true;
      }
      if (ifRange.indexOf('"') !== -1) {
        var etag2 = this.res.getHeader("ETag");
        return Boolean(etag2 && ifRange.indexOf(etag2) !== -1);
      }
      var lastModified = this.res.getHeader("Last-Modified");
      return parseHttpDate(lastModified) <= parseHttpDate(ifRange);
    };
    SendStream.prototype.redirect = function redirect(path46) {
      var res = this.res;
      if (hasListeners(this, "directory")) {
        this.emit("directory", res, path46);
        return;
      }
      if (this.hasTrailingSlash()) {
        this.error(403);
        return;
      }
      var loc = encodeUrl(collapseLeadingSlashes(this.path + "/"));
      var doc = createHtmlDocument("Redirecting", "Redirecting to " + escapeHtml4(loc));
      res.statusCode = 301;
      res.setHeader("Content-Type", "text/html; charset=UTF-8");
      res.setHeader("Content-Length", Buffer.byteLength(doc));
      res.setHeader("Content-Security-Policy", "default-src 'none'");
      res.setHeader("X-Content-Type-Options", "nosniff");
      res.setHeader("Location", loc);
      res.end(doc);
    };
    SendStream.prototype.pipe = function pipe(res) {
      var root6 = this._root;
      this.res = res;
      var path46 = decode2(this.path);
      if (path46 === -1) {
        this.error(400);
        return res;
      }
      if (~path46.indexOf("\0")) {
        this.error(400);
        return res;
      }
      var parts;
      if (root6 !== null) {
        if (path46) {
          path46 = normalize6("." + sep5 + path46);
        }
        if (UP_PATH_REGEXP.test(path46)) {
          debug('malicious path "%s"', path46);
          this.error(403);
          return res;
        }
        parts = path46.split(sep5);
        path46 = normalize6(join19(root6, path46));
      } else {
        if (UP_PATH_REGEXP.test(path46)) {
          debug('malicious path "%s"', path46);
          this.error(403);
          return res;
        }
        parts = normalize6(path46).split(sep5);
        path46 = resolve9(path46);
      }
      if (containsDotFile(parts)) {
        var access = this._dotfiles;
        if (access === void 0) {
          access = parts[parts.length - 1][0] === "." ? this._hidden ? "allow" : "ignore" : "allow";
        }
        debug('%s dotfile "%s"', access, path46);
        switch (access) {
          case "allow":
            break;
          case "deny":
            this.error(403);
            return res;
          case "ignore":
          default:
            this.error(404);
            return res;
        }
      }
      if (this._index.length && this.hasTrailingSlash()) {
        this.sendIndex(path46);
        return res;
      }
      this.sendFile(path46);
      return res;
    };
    SendStream.prototype.send = function send2(path46, stat2) {
      var len = stat2.size;
      var options = this.options;
      var opts = {};
      var res = this.res;
      var req = this.req;
      var ranges = req.headers.range;
      var offset = options.start || 0;
      if (headersSent(res)) {
        this.headersAlreadySent();
        return;
      }
      debug('pipe "%s"', path46);
      this.setHeader(path46, stat2);
      this.type(path46);
      if (this.isConditionalGET()) {
        if (this.isPreconditionFailure()) {
          this.error(412);
          return;
        }
        if (this.isCachable() && this.isFresh()) {
          this.notModified();
          return;
        }
      }
      len = Math.max(0, len - offset);
      if (options.end !== void 0) {
        var bytes = options.end - offset + 1;
        if (len > bytes) len = bytes;
      }
      if (this._acceptRanges && BYTES_RANGE_REGEXP.test(ranges)) {
        ranges = parseRange(len, ranges, {
          combine: true
        });
        if (!this.isRangeFresh()) {
          debug("range stale");
          ranges = -2;
        }
        if (ranges === -1) {
          debug("range unsatisfiable");
          res.setHeader("Content-Range", contentRange("bytes", len));
          return this.error(416, {
            headers: { "Content-Range": res.getHeader("Content-Range") }
          });
        }
        if (ranges !== -2 && ranges.length === 1) {
          debug("range %j", ranges);
          res.statusCode = 206;
          res.setHeader("Content-Range", contentRange("bytes", len, ranges[0]));
          offset += ranges[0].start;
          len = ranges[0].end - ranges[0].start + 1;
        }
      }
      for (var prop in options) {
        opts[prop] = options[prop];
      }
      opts.start = offset;
      opts.end = Math.max(offset, offset + len - 1);
      res.setHeader("Content-Length", len);
      if (req.method === "HEAD") {
        res.end();
        return;
      }
      this.stream(path46, opts);
    };
    SendStream.prototype.sendFile = function sendFile(path46) {
      var i2 = 0;
      var self2 = this;
      debug('stat "%s"', path46);
      fs50.stat(path46, function onstat(err, stat2) {
        if (err && err.code === "ENOENT" && !extname8(path46) && path46[path46.length - 1] !== sep5) {
          return next(err);
        }
        if (err) return self2.onStatError(err);
        if (stat2.isDirectory()) return self2.redirect(path46);
        self2.emit("file", path46, stat2);
        self2.send(path46, stat2);
      });
      function next(err) {
        if (self2._extensions.length <= i2) {
          return err ? self2.onStatError(err) : self2.error(404);
        }
        var p5 = path46 + "." + self2._extensions[i2++];
        debug('stat "%s"', p5);
        fs50.stat(p5, function(err2, stat2) {
          if (err2) return next(err2);
          if (stat2.isDirectory()) return next();
          self2.emit("file", p5, stat2);
          self2.send(p5, stat2);
        });
      }
    };
    SendStream.prototype.sendIndex = function sendIndex(path46) {
      var i2 = -1;
      var self2 = this;
      function next(err) {
        if (++i2 >= self2._index.length) {
          if (err) return self2.onStatError(err);
          return self2.error(404);
        }
        var p5 = join19(path46, self2._index[i2]);
        debug('stat "%s"', p5);
        fs50.stat(p5, function(err2, stat2) {
          if (err2) return next(err2);
          if (stat2.isDirectory()) return next();
          self2.emit("file", p5, stat2);
          self2.send(p5, stat2);
        });
      }
      next();
    };
    SendStream.prototype.stream = function stream3(path46, options) {
      var self2 = this;
      var res = this.res;
      var stream4 = fs50.createReadStream(path46, options);
      this.emit("stream", stream4);
      stream4.pipe(res);
      function cleanup() {
        destroy(stream4, true);
      }
      onFinished(res, cleanup);
      stream4.on("error", function onerror(err) {
        cleanup();
        self2.onStatError(err);
      });
      stream4.on("end", function onend() {
        self2.emit("end");
      });
    };
    SendStream.prototype.type = function type2(path46) {
      var res = this.res;
      if (res.getHeader("Content-Type")) return;
      var type3 = mime3.lookup(path46);
      if (!type3) {
        debug("no content-type");
        return;
      }
      var charset = mime3.charsets.lookup(type3);
      debug("content-type %s", type3);
      res.setHeader("Content-Type", type3 + (charset ? "; charset=" + charset : ""));
    };
    SendStream.prototype.setHeader = function setHeader(path46, stat2) {
      var res = this.res;
      this.emit("headers", res, path46, stat2);
      if (this._acceptRanges && !res.getHeader("Accept-Ranges")) {
        debug("accept ranges");
        res.setHeader("Accept-Ranges", "bytes");
      }
      if (this._cacheControl && !res.getHeader("Cache-Control")) {
        var cacheControl = "public, max-age=" + Math.floor(this._maxage / 1e3);
        if (this._immutable) {
          cacheControl += ", immutable";
        }
        debug("cache-control %s", cacheControl);
        res.setHeader("Cache-Control", cacheControl);
      }
      if (this._lastModified && !res.getHeader("Last-Modified")) {
        var modified = stat2.mtime.toUTCString();
        debug("modified %s", modified);
        res.setHeader("Last-Modified", modified);
      }
      if (this._etag && !res.getHeader("ETag")) {
        var val = etag(stat2);
        debug("etag %s", val);
        res.setHeader("ETag", val);
      }
    };
    function clearHeaders(res) {
      var headers = getHeaderNames(res);
      for (var i2 = 0; i2 < headers.length; i2++) {
        res.removeHeader(headers[i2]);
      }
    }
    function collapseLeadingSlashes(str2) {
      for (var i2 = 0; i2 < str2.length; i2++) {
        if (str2[i2] !== "/") {
          break;
        }
      }
      return i2 > 1 ? "/" + str2.substr(i2) : str2;
    }
    function containsDotFile(parts) {
      for (var i2 = 0; i2 < parts.length; i2++) {
        var part = parts[i2];
        if (part.length > 1 && part[0] === ".") {
          return true;
        }
      }
      return false;
    }
    function contentRange(type2, size, range) {
      return type2 + " " + (range ? range.start + "-" + range.end : "*") + "/" + size;
    }
    function createHtmlDocument(title, body3) {
      return '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>' + title + "</title>\n</head>\n<body>\n<pre>" + body3 + "</pre>\n</body>\n</html>\n";
    }
    function createHttpError(status, err) {
      if (!err) {
        return createError(status);
      }
      return err instanceof Error ? createError(status, err, { expose: false }) : createError(status, err);
    }
    function decode2(path46) {
      try {
        return decodeURIComponent(path46);
      } catch (err) {
        return -1;
      }
    }
    function getHeaderNames(res) {
      return typeof res.getHeaderNames !== "function" ? Object.keys(res._headers || {}) : res.getHeaderNames();
    }
    function hasListeners(emitter, type2) {
      var count2 = typeof emitter.listenerCount !== "function" ? emitter.listeners(type2).length : emitter.listenerCount(type2);
      return count2 > 0;
    }
    function headersSent(res) {
      return typeof res.headersSent !== "boolean" ? Boolean(res._header) : res.headersSent;
    }
    function normalizeList(val, name3) {
      var list6 = [].concat(val || []);
      for (var i2 = 0; i2 < list6.length; i2++) {
        if (typeof list6[i2] !== "string") {
          throw new TypeError(name3 + " must be array of strings or false");
        }
      }
      return list6;
    }
    function parseHttpDate(date) {
      var timestamp2 = date && Date.parse(date);
      return typeof timestamp2 === "number" ? timestamp2 : NaN;
    }
    function parseTokenList(str2) {
      var end = 0;
      var list6 = [];
      var start = 0;
      for (var i2 = 0, len = str2.length; i2 < len; i2++) {
        switch (str2.charCodeAt(i2)) {
          case 32:
            if (start === end) {
              start = end = i2 + 1;
            }
            break;
          case 44:
            if (start !== end) {
              list6.push(str2.substring(start, end));
            }
            start = end = i2 + 1;
            break;
          default:
            end = i2 + 1;
            break;
        }
      }
      if (start !== end) {
        list6.push(str2.substring(start, end));
      }
      return list6;
    }
    function setHeaders(res, headers) {
      var keys2 = Object.keys(headers);
      for (var i2 = 0; i2 < keys2.length; i2++) {
        var key2 = keys2[i2];
        res.setHeader(key2, headers[key2]);
      }
    }
  }
});

// ../../node_modules/forwarded/index.js
var require_forwarded = __commonJS({
  "../../node_modules/forwarded/index.js"(exports2, module2) {
    "use strict";
    module2.exports = forwarded;
    function forwarded(req) {
      if (!req) {
        throw new TypeError("argument req is required");
      }
      var proxyAddrs = parse16(req.headers["x-forwarded-for"] || "");
      var socketAddr = getSocketAddr(req);
      var addrs = [socketAddr].concat(proxyAddrs);
      return addrs;
    }
    function getSocketAddr(req) {
      return req.socket ? req.socket.remoteAddress : req.connection.remoteAddress;
    }
    function parse16(header) {
      var end = header.length;
      var list6 = [];
      var start = header.length;
      for (var i2 = header.length - 1; i2 >= 0; i2--) {
        switch (header.charCodeAt(i2)) {
          case 32:
            if (start === end) {
              start = end = i2;
            }
            break;
          case 44:
            if (start !== end) {
              list6.push(header.substring(start, end));
            }
            start = end = i2;
            break;
          default:
            start = i2;
            break;
        }
      }
      if (start !== end) {
        list6.push(header.substring(start, end));
      }
      return list6;
    }
  }
});

// ../../node_modules/ipaddr.js/lib/ipaddr.js
var require_ipaddr = __commonJS({
  "../../node_modules/ipaddr.js/lib/ipaddr.js"(exports2, module2) {
    (function() {
      var expandIPv6, ipaddr, ipv4Part, ipv4Regexes, ipv6Part, ipv6Regexes, matchCIDR, root6, zoneIndex;
      ipaddr = {};
      root6 = this;
      if (typeof module2 !== "undefined" && module2 !== null && module2.exports) {
        module2.exports = ipaddr;
      } else {
        root6["ipaddr"] = ipaddr;
      }
      matchCIDR = function(first2, second, partSize, cidrBits) {
        var part, shift;
        if (first2.length !== second.length) {
          throw new Error("ipaddr: cannot match CIDR for objects with different lengths");
        }
        part = 0;
        while (cidrBits > 0) {
          shift = partSize - cidrBits;
          if (shift < 0) {
            shift = 0;
          }
          if (first2[part] >> shift !== second[part] >> shift) {
            return false;
          }
          cidrBits -= partSize;
          part += 1;
        }
        return true;
      };
      ipaddr.subnetMatch = function(address, rangeList, defaultName) {
        var k, len, rangeName, rangeSubnets, subnet;
        if (defaultName == null) {
          defaultName = "unicast";
        }
        for (rangeName in rangeList) {
          rangeSubnets = rangeList[rangeName];
          if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) {
            rangeSubnets = [rangeSubnets];
          }
          for (k = 0, len = rangeSubnets.length; k < len; k++) {
            subnet = rangeSubnets[k];
            if (address.kind() === subnet[0].kind()) {
              if (address.match.apply(address, subnet)) {
                return rangeName;
              }
            }
          }
        }
        return defaultName;
      };
      ipaddr.IPv4 = (function() {
        function IPv4(octets) {
          var k, len, octet;
          if (octets.length !== 4) {
            throw new Error("ipaddr: ipv4 octet count should be 4");
          }
          for (k = 0, len = octets.length; k < len; k++) {
            octet = octets[k];
            if (!(0 <= octet && octet <= 255)) {
              throw new Error("ipaddr: ipv4 octet should fit in 8 bits");
            }
          }
          this.octets = octets;
        }
        IPv4.prototype.kind = function() {
          return "ipv4";
        };
        IPv4.prototype.toString = function() {
          return this.octets.join(".");
        };
        IPv4.prototype.toNormalizedString = function() {
          return this.toString();
        };
        IPv4.prototype.toByteArray = function() {
          return this.octets.slice(0);
        };
        IPv4.prototype.match = function(other, cidrRange) {
          var ref;
          if (cidrRange === void 0) {
            ref = other, other = ref[0], cidrRange = ref[1];
          }
          if (other.kind() !== "ipv4") {
            throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");
          }
          return matchCIDR(this.octets, other.octets, 8, cidrRange);
        };
        IPv4.prototype.SpecialRanges = {
          unspecified: [[new IPv4([0, 0, 0, 0]), 8]],
          broadcast: [[new IPv4([255, 255, 255, 255]), 32]],
          multicast: [[new IPv4([224, 0, 0, 0]), 4]],
          linkLocal: [[new IPv4([169, 254, 0, 0]), 16]],
          loopback: [[new IPv4([127, 0, 0, 0]), 8]],
          carrierGradeNat: [[new IPv4([100, 64, 0, 0]), 10]],
          "private": [[new IPv4([10, 0, 0, 0]), 8], [new IPv4([172, 16, 0, 0]), 12], [new IPv4([192, 168, 0, 0]), 16]],
          reserved: [[new IPv4([192, 0, 0, 0]), 24], [new IPv4([192, 0, 2, 0]), 24], [new IPv4([192, 88, 99, 0]), 24], [new IPv4([198, 51, 100, 0]), 24], [new IPv4([203, 0, 113, 0]), 24], [new IPv4([240, 0, 0, 0]), 4]]
        };
        IPv4.prototype.range = function() {
          return ipaddr.subnetMatch(this, this.SpecialRanges);
        };
        IPv4.prototype.toIPv4MappedAddress = function() {
          return ipaddr.IPv6.parse("::ffff:" + this.toString());
        };
        IPv4.prototype.prefixLengthFromSubnetMask = function() {
          var cidr, i2, k, octet, stop, zeros, zerotable;
          zerotable = {
            0: 8,
            128: 7,
            192: 6,
            224: 5,
            240: 4,
            248: 3,
            252: 2,
            254: 1,
            255: 0
          };
          cidr = 0;
          stop = false;
          for (i2 = k = 3; k >= 0; i2 = k += -1) {
            octet = this.octets[i2];
            if (octet in zerotable) {
              zeros = zerotable[octet];
              if (stop && zeros !== 0) {
                return null;
              }
              if (zeros !== 8) {
                stop = true;
              }
              cidr += zeros;
            } else {
              return null;
            }
          }
          return 32 - cidr;
        };
        return IPv4;
      })();
      ipv4Part = "(0?\\d+|0x[a-f0-9]+)";
      ipv4Regexes = {
        fourOctet: new RegExp("^" + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "$", "i"),
        longValue: new RegExp("^" + ipv4Part + "$", "i")
      };
      ipaddr.IPv4.parser = function(string2) {
        var match3, parseIntAuto, part, shift, value;
        parseIntAuto = function(string3) {
          if (string3[0] === "0" && string3[1] !== "x") {
            return parseInt(string3, 8);
          } else {
            return parseInt(string3);
          }
        };
        if (match3 = string2.match(ipv4Regexes.fourOctet)) {
          return (function() {
            var k, len, ref, results;
            ref = match3.slice(1, 6);
            results = [];
            for (k = 0, len = ref.length; k < len; k++) {
              part = ref[k];
              results.push(parseIntAuto(part));
            }
            return results;
          })();
        } else if (match3 = string2.match(ipv4Regexes.longValue)) {
          value = parseIntAuto(match3[1]);
          if (value > 4294967295 || value < 0) {
            throw new Error("ipaddr: address outside defined range");
          }
          return (function() {
            var k, results;
            results = [];
            for (shift = k = 0; k <= 24; shift = k += 8) {
              results.push(value >> shift & 255);
            }
            return results;
          })().reverse();
        } else {
          return null;
        }
      };
      ipaddr.IPv6 = (function() {
        function IPv6(parts, zoneId) {
          var i2, k, l, len, part, ref;
          if (parts.length === 16) {
            this.parts = [];
            for (i2 = k = 0; k <= 14; i2 = k += 2) {
              this.parts.push(parts[i2] << 8 | parts[i2 + 1]);
            }
          } else if (parts.length === 8) {
            this.parts = parts;
          } else {
            throw new Error("ipaddr: ipv6 part count should be 8 or 16");
          }
          ref = this.parts;
          for (l = 0, len = ref.length; l < len; l++) {
            part = ref[l];
            if (!(0 <= part && part <= 65535)) {
              throw new Error("ipaddr: ipv6 part should fit in 16 bits");
            }
          }
          if (zoneId) {
            this.zoneId = zoneId;
          }
        }
        IPv6.prototype.kind = function() {
          return "ipv6";
        };
        IPv6.prototype.toString = function() {
          return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/, "::");
        };
        IPv6.prototype.toRFC5952String = function() {
          var bestMatchIndex, bestMatchLength, match3, regex2, string2;
          regex2 = /((^|:)(0(:|$)){2,})/g;
          string2 = this.toNormalizedString();
          bestMatchIndex = 0;
          bestMatchLength = -1;
          while (match3 = regex2.exec(string2)) {
            if (match3[0].length > bestMatchLength) {
              bestMatchIndex = match3.index;
              bestMatchLength = match3[0].length;
            }
          }
          if (bestMatchLength < 0) {
            return string2;
          }
          return string2.substring(0, bestMatchIndex) + "::" + string2.substring(bestMatchIndex + bestMatchLength);
        };
        IPv6.prototype.toByteArray = function() {
          var bytes, k, len, part, ref;
          bytes = [];
          ref = this.parts;
          for (k = 0, len = ref.length; k < len; k++) {
            part = ref[k];
            bytes.push(part >> 8);
            bytes.push(part & 255);
          }
          return bytes;
        };
        IPv6.prototype.toNormalizedString = function() {
          var addr, part, suffix;
          addr = (function() {
            var k, len, ref, results;
            ref = this.parts;
            results = [];
            for (k = 0, len = ref.length; k < len; k++) {
              part = ref[k];
              results.push(part.toString(16));
            }
            return results;
          }).call(this).join(":");
          suffix = "";
          if (this.zoneId) {
            suffix = "%" + this.zoneId;
          }
          return addr + suffix;
        };
        IPv6.prototype.toFixedLengthString = function() {
          var addr, part, suffix;
          addr = (function() {
            var k, len, ref, results;
            ref = this.parts;
            results = [];
            for (k = 0, len = ref.length; k < len; k++) {
              part = ref[k];
              results.push(part.toString(16).padStart(4, "0"));
            }
            return results;
          }).call(this).join(":");
          suffix = "";
          if (this.zoneId) {
            suffix = "%" + this.zoneId;
          }
          return addr + suffix;
        };
        IPv6.prototype.match = function(other, cidrRange) {
          var ref;
          if (cidrRange === void 0) {
            ref = other, other = ref[0], cidrRange = ref[1];
          }
          if (other.kind() !== "ipv6") {
            throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");
          }
          return matchCIDR(this.parts, other.parts, 16, cidrRange);
        };
        IPv6.prototype.SpecialRanges = {
          unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128],
          linkLocal: [new IPv6([65152, 0, 0, 0, 0, 0, 0, 0]), 10],
          multicast: [new IPv6([65280, 0, 0, 0, 0, 0, 0, 0]), 8],
          loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128],
          uniqueLocal: [new IPv6([64512, 0, 0, 0, 0, 0, 0, 0]), 7],
          ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 65535, 0, 0]), 96],
          rfc6145: [new IPv6([0, 0, 0, 0, 65535, 0, 0, 0]), 96],
          rfc6052: [new IPv6([100, 65435, 0, 0, 0, 0, 0, 0]), 96],
          "6to4": [new IPv6([8194, 0, 0, 0, 0, 0, 0, 0]), 16],
          teredo: [new IPv6([8193, 0, 0, 0, 0, 0, 0, 0]), 32],
          reserved: [[new IPv6([8193, 3512, 0, 0, 0, 0, 0, 0]), 32]]
        };
        IPv6.prototype.range = function() {
          return ipaddr.subnetMatch(this, this.SpecialRanges);
        };
        IPv6.prototype.isIPv4MappedAddress = function() {
          return this.range() === "ipv4Mapped";
        };
        IPv6.prototype.toIPv4Address = function() {
          var high, low, ref;
          if (!this.isIPv4MappedAddress()) {
            throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");
          }
          ref = this.parts.slice(-2), high = ref[0], low = ref[1];
          return new ipaddr.IPv4([high >> 8, high & 255, low >> 8, low & 255]);
        };
        IPv6.prototype.prefixLengthFromSubnetMask = function() {
          var cidr, i2, k, part, stop, zeros, zerotable;
          zerotable = {
            0: 16,
            32768: 15,
            49152: 14,
            57344: 13,
            61440: 12,
            63488: 11,
            64512: 10,
            65024: 9,
            65280: 8,
            65408: 7,
            65472: 6,
            65504: 5,
            65520: 4,
            65528: 3,
            65532: 2,
            65534: 1,
            65535: 0
          };
          cidr = 0;
          stop = false;
          for (i2 = k = 7; k >= 0; i2 = k += -1) {
            part = this.parts[i2];
            if (part in zerotable) {
              zeros = zerotable[part];
              if (stop && zeros !== 0) {
                return null;
              }
              if (zeros !== 16) {
                stop = true;
              }
              cidr += zeros;
            } else {
              return null;
            }
          }
          return 128 - cidr;
        };
        return IPv6;
      })();
      ipv6Part = "(?:[0-9a-f]+::?)+";
      zoneIndex = "%[0-9a-z]{1,}";
      ipv6Regexes = {
        zoneIndex: new RegExp(zoneIndex, "i"),
        "native": new RegExp("^(::)?(" + ipv6Part + ")?([0-9a-f]+)?(::)?(" + zoneIndex + ")?$", "i"),
        transitional: new RegExp("^((?:" + ipv6Part + ")|(?:::)(?:" + ipv6Part + ")?)" + (ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part) + ("(" + zoneIndex + ")?$"), "i")
      };
      expandIPv6 = function(string2, parts) {
        var colonCount, lastColon, part, replacement, replacementCount, zoneId;
        if (string2.indexOf("::") !== string2.lastIndexOf("::")) {
          return null;
        }
        zoneId = (string2.match(ipv6Regexes["zoneIndex"]) || [])[0];
        if (zoneId) {
          zoneId = zoneId.substring(1);
          string2 = string2.replace(/%.+$/, "");
        }
        colonCount = 0;
        lastColon = -1;
        while ((lastColon = string2.indexOf(":", lastColon + 1)) >= 0) {
          colonCount++;
        }
        if (string2.substr(0, 2) === "::") {
          colonCount--;
        }
        if (string2.substr(-2, 2) === "::") {
          colonCount--;
        }
        if (colonCount > parts) {
          return null;
        }
        replacementCount = parts - colonCount;
        replacement = ":";
        while (replacementCount--) {
          replacement += "0:";
        }
        string2 = string2.replace("::", replacement);
        if (string2[0] === ":") {
          string2 = string2.slice(1);
        }
        if (string2[string2.length - 1] === ":") {
          string2 = string2.slice(0, -1);
        }
        parts = (function() {
          var k, len, ref, results;
          ref = string2.split(":");
          results = [];
          for (k = 0, len = ref.length; k < len; k++) {
            part = ref[k];
            results.push(parseInt(part, 16));
          }
          return results;
        })();
        return {
          parts,
          zoneId
        };
      };
      ipaddr.IPv6.parser = function(string2) {
        var addr, k, len, match3, octet, octets, zoneId;
        if (ipv6Regexes["native"].test(string2)) {
          return expandIPv6(string2, 8);
        } else if (match3 = string2.match(ipv6Regexes["transitional"])) {
          zoneId = match3[6] || "";
          addr = expandIPv6(match3[1].slice(0, -1) + zoneId, 6);
          if (addr.parts) {
            octets = [parseInt(match3[2]), parseInt(match3[3]), parseInt(match3[4]), parseInt(match3[5])];
            for (k = 0, len = octets.length; k < len; k++) {
              octet = octets[k];
              if (!(0 <= octet && octet <= 255)) {
                return null;
              }
            }
            addr.parts.push(octets[0] << 8 | octets[1]);
            addr.parts.push(octets[2] << 8 | octets[3]);
            return {
              parts: addr.parts,
              zoneId: addr.zoneId
            };
          }
        }
        return null;
      };
      ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = function(string2) {
        return this.parser(string2) !== null;
      };
      ipaddr.IPv4.isValid = function(string2) {
        var e2;
        try {
          new this(this.parser(string2));
          return true;
        } catch (error1) {
          e2 = error1;
          return false;
        }
      };
      ipaddr.IPv4.isValidFourPartDecimal = function(string2) {
        if (ipaddr.IPv4.isValid(string2) && string2.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/)) {
          return true;
        } else {
          return false;
        }
      };
      ipaddr.IPv6.isValid = function(string2) {
        var addr, e2;
        if (typeof string2 === "string" && string2.indexOf(":") === -1) {
          return false;
        }
        try {
          addr = this.parser(string2);
          new this(addr.parts, addr.zoneId);
          return true;
        } catch (error1) {
          e2 = error1;
          return false;
        }
      };
      ipaddr.IPv4.parse = function(string2) {
        var parts;
        parts = this.parser(string2);
        if (parts === null) {
          throw new Error("ipaddr: string is not formatted like ip address");
        }
        return new this(parts);
      };
      ipaddr.IPv6.parse = function(string2) {
        var addr;
        addr = this.parser(string2);
        if (addr.parts === null) {
          throw new Error("ipaddr: string is not formatted like ip address");
        }
        return new this(addr.parts, addr.zoneId);
      };
      ipaddr.IPv4.parseCIDR = function(string2) {
        var maskLength, match3, parsed;
        if (match3 = string2.match(/^(.+)\/(\d+)$/)) {
          maskLength = parseInt(match3[2]);
          if (maskLength >= 0 && maskLength <= 32) {
            parsed = [this.parse(match3[1]), maskLength];
            Object.defineProperty(parsed, "toString", {
              value: function() {
                return this.join("/");
              }
            });
            return parsed;
          }
        }
        throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range");
      };
      ipaddr.IPv4.subnetMaskFromPrefixLength = function(prefix2) {
        var filledOctetCount, j, octets;
        prefix2 = parseInt(prefix2);
        if (prefix2 < 0 || prefix2 > 32) {
          throw new Error("ipaddr: invalid IPv4 prefix length");
        }
        octets = [0, 0, 0, 0];
        j = 0;
        filledOctetCount = Math.floor(prefix2 / 8);
        while (j < filledOctetCount) {
          octets[j] = 255;
          j++;
        }
        if (filledOctetCount < 4) {
          octets[filledOctetCount] = Math.pow(2, prefix2 % 8) - 1 << 8 - prefix2 % 8;
        }
        return new this(octets);
      };
      ipaddr.IPv4.broadcastAddressFromCIDR = function(string2) {
        var cidr, error, i2, ipInterfaceOctets, octets, subnetMaskOctets;
        try {
          cidr = this.parseCIDR(string2);
          ipInterfaceOctets = cidr[0].toByteArray();
          subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();
          octets = [];
          i2 = 0;
          while (i2 < 4) {
            octets.push(parseInt(ipInterfaceOctets[i2], 10) | parseInt(subnetMaskOctets[i2], 10) ^ 255);
            i2++;
          }
          return new this(octets);
        } catch (error1) {
          error = error1;
          throw new Error("ipaddr: the address does not have IPv4 CIDR format");
        }
      };
      ipaddr.IPv4.networkAddressFromCIDR = function(string2) {
        var cidr, error, i2, ipInterfaceOctets, octets, subnetMaskOctets;
        try {
          cidr = this.parseCIDR(string2);
          ipInterfaceOctets = cidr[0].toByteArray();
          subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();
          octets = [];
          i2 = 0;
          while (i2 < 4) {
            octets.push(parseInt(ipInterfaceOctets[i2], 10) & parseInt(subnetMaskOctets[i2], 10));
            i2++;
          }
          return new this(octets);
        } catch (error1) {
          error = error1;
          throw new Error("ipaddr: the address does not have IPv4 CIDR format");
        }
      };
      ipaddr.IPv6.parseCIDR = function(string2) {
        var maskLength, match3, parsed;
        if (match3 = string2.match(/^(.+)\/(\d+)$/)) {
          maskLength = parseInt(match3[2]);
          if (maskLength >= 0 && maskLength <= 128) {
            parsed = [this.parse(match3[1]), maskLength];
            Object.defineProperty(parsed, "toString", {
              value: function() {
                return this.join("/");
              }
            });
            return parsed;
          }
        }
        throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range");
      };
      ipaddr.isValid = function(string2) {
        return ipaddr.IPv6.isValid(string2) || ipaddr.IPv4.isValid(string2);
      };
      ipaddr.parse = function(string2) {
        if (ipaddr.IPv6.isValid(string2)) {
          return ipaddr.IPv6.parse(string2);
        } else if (ipaddr.IPv4.isValid(string2)) {
          return ipaddr.IPv4.parse(string2);
        } else {
          throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format");
        }
      };
      ipaddr.parseCIDR = function(string2) {
        var e2;
        try {
          return ipaddr.IPv6.parseCIDR(string2);
        } catch (error1) {
          e2 = error1;
          try {
            return ipaddr.IPv4.parseCIDR(string2);
          } catch (error12) {
            e2 = error12;
            throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format");
          }
        }
      };
      ipaddr.fromByteArray = function(bytes) {
        var length;
        length = bytes.length;
        if (length === 4) {
          return new ipaddr.IPv4(bytes);
        } else if (length === 16) {
          return new ipaddr.IPv6(bytes);
        } else {
          throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address");
        }
      };
      ipaddr.process = function(string2) {
        var addr;
        addr = this.parse(string2);
        if (addr.kind() === "ipv6" && addr.isIPv4MappedAddress()) {
          return addr.toIPv4Address();
        } else {
          return addr;
        }
      };
    }).call(exports2);
  }
});

// ../../node_modules/proxy-addr/index.js
var require_proxy_addr = __commonJS({
  "../../node_modules/proxy-addr/index.js"(exports2, module2) {
    "use strict";
    module2.exports = proxyaddr;
    module2.exports.all = alladdrs;
    module2.exports.compile = compile2;
    var forwarded = require_forwarded();
    var ipaddr = require_ipaddr();
    var DIGIT_REGEXP = /^[0-9]+$/;
    var isip = ipaddr.isValid;
    var parseip = ipaddr.parse;
    var IP_RANGES = {
      linklocal: ["169.254.0.0/16", "fe80::/10"],
      loopback: ["127.0.0.1/8", "::1/128"],
      uniquelocal: ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "fc00::/7"]
    };
    function alladdrs(req, trust) {
      var addrs = forwarded(req);
      if (!trust) {
        return addrs;
      }
      if (typeof trust !== "function") {
        trust = compile2(trust);
      }
      for (var i2 = 0; i2 < addrs.length - 1; i2++) {
        if (trust(addrs[i2], i2)) continue;
        addrs.length = i2 + 1;
      }
      return addrs;
    }
    function compile2(val) {
      if (!val) {
        throw new TypeError("argument is required");
      }
      var trust;
      if (typeof val === "string") {
        trust = [val];
      } else if (Array.isArray(val)) {
        trust = val.slice();
      } else {
        throw new TypeError("unsupported trust argument");
      }
      for (var i2 = 0; i2 < trust.length; i2++) {
        val = trust[i2];
        if (!Object.prototype.hasOwnProperty.call(IP_RANGES, val)) {
          continue;
        }
        val = IP_RANGES[val];
        trust.splice.apply(trust, [i2, 1].concat(val));
        i2 += val.length - 1;
      }
      return compileTrust(compileRangeSubnets(trust));
    }
    function compileRangeSubnets(arr) {
      var rangeSubnets = new Array(arr.length);
      for (var i2 = 0; i2 < arr.length; i2++) {
        rangeSubnets[i2] = parseipNotation(arr[i2]);
      }
      return rangeSubnets;
    }
    function compileTrust(rangeSubnets) {
      var len = rangeSubnets.length;
      return len === 0 ? trustNone : len === 1 ? trustSingle(rangeSubnets[0]) : trustMulti(rangeSubnets);
    }
    function parseipNotation(note) {
      var pos = note.lastIndexOf("/");
      var str2 = pos !== -1 ? note.substring(0, pos) : note;
      if (!isip(str2)) {
        throw new TypeError("invalid IP address: " + str2);
      }
      var ip = parseip(str2);
      if (pos === -1 && ip.kind() === "ipv6" && ip.isIPv4MappedAddress()) {
        ip = ip.toIPv4Address();
      }
      var max = ip.kind() === "ipv6" ? 128 : 32;
      var range = pos !== -1 ? note.substring(pos + 1, note.length) : null;
      if (range === null) {
        range = max;
      } else if (DIGIT_REGEXP.test(range)) {
        range = parseInt(range, 10);
      } else if (ip.kind() === "ipv4" && isip(range)) {
        range = parseNetmask(range);
      } else {
        range = null;
      }
      if (range <= 0 || range > max) {
        throw new TypeError("invalid range on address: " + note);
      }
      return [ip, range];
    }
    function parseNetmask(netmask) {
      var ip = parseip(netmask);
      var kind = ip.kind();
      return kind === "ipv4" ? ip.prefixLengthFromSubnetMask() : null;
    }
    function proxyaddr(req, trust) {
      if (!req) {
        throw new TypeError("req argument is required");
      }
      if (!trust) {
        throw new TypeError("trust argument is required");
      }
      var addrs = alladdrs(req, trust);
      var addr = addrs[addrs.length - 1];
      return addr;
    }
    function trustNone() {
      return false;
    }
    function trustMulti(subnets) {
      return function trust(addr) {
        if (!isip(addr)) return false;
        var ip = parseip(addr);
        var ipconv;
        var kind = ip.kind();
        for (var i2 = 0; i2 < subnets.length; i2++) {
          var subnet = subnets[i2];
          var subnetip = subnet[0];
          var subnetkind = subnetip.kind();
          var subnetrange = subnet[1];
          var trusted = ip;
          if (kind !== subnetkind) {
            if (subnetkind === "ipv4" && !ip.isIPv4MappedAddress()) {
              continue;
            }
            if (!ipconv) {
              ipconv = subnetkind === "ipv4" ? ip.toIPv4Address() : ip.toIPv4MappedAddress();
            }
            trusted = ipconv;
          }
          if (trusted.match(subnetip, subnetrange)) {
            return true;
          }
        }
        return false;
      };
    }
    function trustSingle(subnet) {
      var subnetip = subnet[0];
      var subnetkind = subnetip.kind();
      var subnetisipv4 = subnetkind === "ipv4";
      var subnetrange = subnet[1];
      return function trust(addr) {
        if (!isip(addr)) return false;
        var ip = parseip(addr);
        var kind = ip.kind();
        if (kind !== subnetkind) {
          if (subnetisipv4 && !ip.isIPv4MappedAddress()) {
            return false;
          }
          ip = subnetisipv4 ? ip.toIPv4Address() : ip.toIPv4MappedAddress();
        }
        return ip.match(subnetip, subnetrange);
      };
    }
  }
});

// ../../node_modules/express/lib/utils.js
var require_utils11 = __commonJS({
  "../../node_modules/express/lib/utils.js"(exports2) {
    "use strict";
    var Buffer7 = require_safe_buffer().Buffer;
    var contentDisposition = require_content_disposition();
    var contentType = require_content_type();
    var deprecate3 = require_depd()("express");
    var flatten2 = require_array_flatten();
    var mime3 = require_send().mime;
    var etag = require_etag();
    var proxyaddr = require_proxy_addr();
    var qs = require_lib23();
    var querystring = require("querystring");
    exports2.etag = createETagGenerator({ weak: false });
    exports2.wetag = createETagGenerator({ weak: true });
    exports2.isAbsolute = function(path45) {
      if ("/" === path45[0]) return true;
      if (":" === path45[1] && ("\\" === path45[2] || "/" === path45[2])) return true;
      if ("\\\\" === path45.substring(0, 2)) return true;
    };
    exports2.flatten = deprecate3.function(
      flatten2,
      "utils.flatten: use array-flatten npm module instead"
    );
    exports2.normalizeType = function(type2) {
      return ~type2.indexOf("/") ? acceptParams(type2) : { value: mime3.lookup(type2), params: {} };
    };
    exports2.normalizeTypes = function(types6) {
      var ret = [];
      for (var i2 = 0; i2 < types6.length; ++i2) {
        ret.push(exports2.normalizeType(types6[i2]));
      }
      return ret;
    };
    exports2.contentDisposition = deprecate3.function(
      contentDisposition,
      "utils.contentDisposition: use content-disposition npm module instead"
    );
    function acceptParams(str2) {
      var parts = str2.split(/ *; */);
      var ret = { value: parts[0], quality: 1, params: {} };
      for (var i2 = 1; i2 < parts.length; ++i2) {
        var pms = parts[i2].split(/ *= */);
        if ("q" === pms[0]) {
          ret.quality = parseFloat(pms[1]);
        } else {
          ret.params[pms[0]] = pms[1];
        }
      }
      return ret;
    }
    exports2.compileETag = function(val) {
      var fn;
      if (typeof val === "function") {
        return val;
      }
      switch (val) {
        case true:
        case "weak":
          fn = exports2.wetag;
          break;
        case false:
          break;
        case "strong":
          fn = exports2.etag;
          break;
        default:
          throw new TypeError("unknown value for etag function: " + val);
      }
      return fn;
    };
    exports2.compileQueryParser = function compileQueryParser(val) {
      var fn;
      if (typeof val === "function") {
        return val;
      }
      switch (val) {
        case true:
        case "simple":
          fn = querystring.parse;
          break;
        case false:
          fn = newObject;
          break;
        case "extended":
          fn = parseExtendedQueryString;
          break;
        default:
          throw new TypeError("unknown value for query parser function: " + val);
      }
      return fn;
    };
    exports2.compileTrust = function(val) {
      if (typeof val === "function") return val;
      if (val === true) {
        return function() {
          return true;
        };
      }
      if (typeof val === "number") {
        return function(a2, i2) {
          return i2 < val;
        };
      }
      if (typeof val === "string") {
        val = val.split(",").map(function(v) {
          return v.trim();
        });
      }
      return proxyaddr.compile(val || []);
    };
    exports2.setCharset = function setCharset(type2, charset) {
      if (!type2 || !charset) {
        return type2;
      }
      var parsed = contentType.parse(type2);
      parsed.parameters.charset = charset;
      return contentType.format(parsed);
    };
    function createETagGenerator(options) {
      return function generateETag(body3, encoding) {
        var buf = !Buffer7.isBuffer(body3) ? Buffer7.from(body3, encoding) : body3;
        return etag(buf, options);
      };
    }
    function parseExtendedQueryString(str2) {
      return qs.parse(str2, {
        allowPrototypes: true
      });
    }
    function newObject() {
      return {};
    }
  }
});

// ../../node_modules/express/lib/application.js
var require_application = __commonJS({
  "../../node_modules/express/lib/application.js"(exports2, module2) {
    "use strict";
    var finalhandler = require_finalhandler();
    var Router = require_router();
    var methods = require_methods2();
    var middleware = require_init();
    var query = require_query();
    var debug = require_src3()("express:application");
    var View = require_view();
    var http5 = require("http");
    var compileETag = require_utils11().compileETag;
    var compileQueryParser = require_utils11().compileQueryParser;
    var compileTrust = require_utils11().compileTrust;
    var deprecate3 = require_depd()("express");
    var flatten2 = require_array_flatten();
    var merge3 = require_utils_merge();
    var resolve9 = require("path").resolve;
    var setPrototypeOf = require_setprototypeof();
    var hasOwnProperty = Object.prototype.hasOwnProperty;
    var slice2 = Array.prototype.slice;
    var app = exports2 = module2.exports = {};
    var trustProxyDefaultSymbol = "@@symbol:trust_proxy_default";
    app.init = function init4() {
      this.cache = {};
      this.engines = {};
      this.settings = {};
      this.defaultConfiguration();
    };
    app.defaultConfiguration = function defaultConfiguration() {
      var env6 = process.env.NODE_ENV || "development";
      this.enable("x-powered-by");
      this.set("etag", "weak");
      this.set("env", env6);
      this.set("query parser", "extended");
      this.set("subdomain offset", 2);
      this.set("trust proxy", false);
      Object.defineProperty(this.settings, trustProxyDefaultSymbol, {
        configurable: true,
        value: true
      });
      debug("booting in %s mode", env6);
      this.on("mount", function onmount(parent2) {
        if (this.settings[trustProxyDefaultSymbol] === true && typeof parent2.settings["trust proxy fn"] === "function") {
          delete this.settings["trust proxy"];
          delete this.settings["trust proxy fn"];
        }
        setPrototypeOf(this.request, parent2.request);
        setPrototypeOf(this.response, parent2.response);
        setPrototypeOf(this.engines, parent2.engines);
        setPrototypeOf(this.settings, parent2.settings);
      });
      this.locals = /* @__PURE__ */ Object.create(null);
      this.mountpath = "/";
      this.locals.settings = this.settings;
      this.set("view", View);
      this.set("views", resolve9("views"));
      this.set("jsonp callback name", "callback");
      if (env6 === "production") {
        this.enable("view cache");
      }
      Object.defineProperty(this, "router", {
        get: function() {
          throw new Error("'app.router' is deprecated!\nPlease see the 3.x to 4.x migration guide for details on how to update your app.");
        }
      });
    };
    app.lazyrouter = function lazyrouter() {
      if (!this._router) {
        this._router = new Router({
          caseSensitive: this.enabled("case sensitive routing"),
          strict: this.enabled("strict routing")
        });
        this._router.use(query(this.get("query parser fn")));
        this._router.use(middleware.init(this));
      }
    };
    app.handle = function handle6(req, res, callback) {
      var router = this._router;
      var done = callback || finalhandler(req, res, {
        env: this.get("env"),
        onerror: logerror.bind(this)
      });
      if (!router) {
        debug("no routes defined on app");
        done();
        return;
      }
      router.handle(req, res, done);
    };
    app.use = function use(fn) {
      var offset = 0;
      var path45 = "/";
      if (typeof fn !== "function") {
        var arg2 = fn;
        while (Array.isArray(arg2) && arg2.length !== 0) {
          arg2 = arg2[0];
        }
        if (typeof arg2 !== "function") {
          offset = 1;
          path45 = fn;
        }
      }
      var fns = flatten2(slice2.call(arguments, offset));
      if (fns.length === 0) {
        throw new TypeError("app.use() requires a middleware function");
      }
      this.lazyrouter();
      var router = this._router;
      fns.forEach(function(fn2) {
        if (!fn2 || !fn2.handle || !fn2.set) {
          return router.use(path45, fn2);
        }
        debug(".use app under %s", path45);
        fn2.mountpath = path45;
        fn2.parent = this;
        router.use(path45, function mounted_app(req, res, next) {
          var orig = req.app;
          fn2.handle(req, res, function(err) {
            setPrototypeOf(req, orig.request);
            setPrototypeOf(res, orig.response);
            next(err);
          });
        });
        fn2.emit("mount", this);
      }, this);
      return this;
    };
    app.route = function route(path45) {
      this.lazyrouter();
      return this._router.route(path45);
    };
    app.engine = function engine(ext2, fn) {
      if (typeof fn !== "function") {
        throw new Error("callback function required");
      }
      var extension = ext2[0] !== "." ? "." + ext2 : ext2;
      this.engines[extension] = fn;
      return this;
    };
    app.param = function param(name3, fn) {
      this.lazyrouter();
      if (Array.isArray(name3)) {
        for (var i2 = 0; i2 < name3.length; i2++) {
          this.param(name3[i2], fn);
        }
        return this;
      }
      this._router.param(name3, fn);
      return this;
    };
    app.set = function set3(setting, val) {
      if (arguments.length === 1) {
        var settings = this.settings;
        while (settings && settings !== Object.prototype) {
          if (hasOwnProperty.call(settings, setting)) {
            return settings[setting];
          }
          settings = Object.getPrototypeOf(settings);
        }
        return void 0;
      }
      debug('set "%s" to %o', setting, val);
      this.settings[setting] = val;
      switch (setting) {
        case "etag":
          this.set("etag fn", compileETag(val));
          break;
        case "query parser":
          this.set("query parser fn", compileQueryParser(val));
          break;
        case "trust proxy":
          this.set("trust proxy fn", compileTrust(val));
          Object.defineProperty(this.settings, trustProxyDefaultSymbol, {
            configurable: true,
            value: false
          });
          break;
      }
      return this;
    };
    app.path = function path45() {
      return this.parent ? this.parent.path() + this.mountpath : "";
    };
    app.enabled = function enabled(setting) {
      return Boolean(this.set(setting));
    };
    app.disabled = function disabled(setting) {
      return !this.set(setting);
    };
    app.enable = function enable(setting) {
      return this.set(setting, true);
    };
    app.disable = function disable(setting) {
      return this.set(setting, false);
    };
    methods.forEach(function(method) {
      app[method] = function(path45) {
        if (method === "get" && arguments.length === 1) {
          return this.set(path45);
        }
        this.lazyrouter();
        var route = this._router.route(path45);
        route[method].apply(route, slice2.call(arguments, 1));
        return this;
      };
    });
    app.all = function all10(path45) {
      this.lazyrouter();
      var route = this._router.route(path45);
      var args = slice2.call(arguments, 1);
      for (var i2 = 0; i2 < methods.length; i2++) {
        route[methods[i2]].apply(route, args);
      }
      return this;
    };
    app.del = deprecate3.function(app.delete, "app.del: Use app.delete instead");
    app.render = function render3(name3, options, callback) {
      var cache = this.cache;
      var done = callback;
      var engines = this.engines;
      var opts = options;
      var renderOptions = {};
      var view;
      if (typeof options === "function") {
        done = options;
        opts = {};
      }
      merge3(renderOptions, this.locals);
      if (opts._locals) {
        merge3(renderOptions, opts._locals);
      }
      merge3(renderOptions, opts);
      if (renderOptions.cache == null) {
        renderOptions.cache = this.enabled("view cache");
      }
      if (renderOptions.cache) {
        view = cache[name3];
      }
      if (!view) {
        var View2 = this.get("view");
        view = new View2(name3, {
          defaultEngine: this.get("view engine"),
          root: this.get("views"),
          engines
        });
        if (!view.path) {
          var dirs = Array.isArray(view.root) && view.root.length > 1 ? 'directories "' + view.root.slice(0, -1).join('", "') + '" or "' + view.root[view.root.length - 1] + '"' : 'directory "' + view.root + '"';
          var err = new Error('Failed to lookup view "' + name3 + '" in views ' + dirs);
          err.view = view;
          return done(err);
        }
        if (renderOptions.cache) {
          cache[name3] = view;
        }
      }
      tryRender2(view, renderOptions, done);
    };
    app.listen = function listen() {
      var server = http5.createServer(this);
      return server.listen.apply(server, arguments);
    };
    function logerror(err) {
      if (this.get("env") !== "test") console.error(err.stack || err.toString());
    }
    function tryRender2(view, options, callback) {
      try {
        view.render(options, callback);
      } catch (err) {
        callback(err);
      }
    }
  }
});

// ../../node_modules/negotiator/lib/charset.js
var require_charset = __commonJS({
  "../../node_modules/negotiator/lib/charset.js"(exports2, module2) {
    "use strict";
    module2.exports = preferredCharsets;
    module2.exports.preferredCharsets = preferredCharsets;
    var simpleCharsetRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/;
    function parseAcceptCharset(accept) {
      var accepts = accept.split(",");
      for (var i2 = 0, j = 0; i2 < accepts.length; i2++) {
        var charset = parseCharset(accepts[i2].trim(), i2);
        if (charset) {
          accepts[j++] = charset;
        }
      }
      accepts.length = j;
      return accepts;
    }
    function parseCharset(str2, i2) {
      var match3 = simpleCharsetRegExp.exec(str2);
      if (!match3) return null;
      var charset = match3[1];
      var q2 = 1;
      if (match3[2]) {
        var params = match3[2].split(";");
        for (var j = 0; j < params.length; j++) {
          var p5 = params[j].trim().split("=");
          if (p5[0] === "q") {
            q2 = parseFloat(p5[1]);
            break;
          }
        }
      }
      return {
        charset,
        q: q2,
        i: i2
      };
    }
    function getCharsetPriority(charset, accepted, index4) {
      var priority = { o: -1, q: 0, s: 0 };
      for (var i2 = 0; i2 < accepted.length; i2++) {
        var spec = specify(charset, accepted[i2], index4);
        if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
          priority = spec;
        }
      }
      return priority;
    }
    function specify(charset, spec, index4) {
      var s5 = 0;
      if (spec.charset.toLowerCase() === charset.toLowerCase()) {
        s5 |= 1;
      } else if (spec.charset !== "*") {
        return null;
      }
      return {
        i: index4,
        o: spec.i,
        q: spec.q,
        s: s5
      };
    }
    function preferredCharsets(accept, provided) {
      var accepts = parseAcceptCharset(accept === void 0 ? "*" : accept || "");
      if (!provided) {
        return accepts.filter(isQuality).sort(compareSpecs).map(getFullCharset);
      }
      var priorities = provided.map(function getPriority(type2, index4) {
        return getCharsetPriority(type2, accepts, index4);
      });
      return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) {
        return provided[priorities.indexOf(priority)];
      });
    }
    function compareSpecs(a2, b) {
      return b.q - a2.q || b.s - a2.s || a2.o - b.o || a2.i - b.i || 0;
    }
    function getFullCharset(spec) {
      return spec.charset;
    }
    function isQuality(spec) {
      return spec.q > 0;
    }
  }
});

// ../../node_modules/negotiator/lib/encoding.js
var require_encoding = __commonJS({
  "../../node_modules/negotiator/lib/encoding.js"(exports2, module2) {
    "use strict";
    module2.exports = preferredEncodings;
    module2.exports.preferredEncodings = preferredEncodings;
    var simpleEncodingRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/;
    function parseAcceptEncoding(accept) {
      var accepts = accept.split(",");
      var hasIdentity = false;
      var minQuality = 1;
      for (var i2 = 0, j = 0; i2 < accepts.length; i2++) {
        var encoding = parseEncoding(accepts[i2].trim(), i2);
        if (encoding) {
          accepts[j++] = encoding;
          hasIdentity = hasIdentity || specify("identity", encoding);
          minQuality = Math.min(minQuality, encoding.q || 1);
        }
      }
      if (!hasIdentity) {
        accepts[j++] = {
          encoding: "identity",
          q: minQuality,
          i: i2
        };
      }
      accepts.length = j;
      return accepts;
    }
    function parseEncoding(str2, i2) {
      var match3 = simpleEncodingRegExp.exec(str2);
      if (!match3) return null;
      var encoding = match3[1];
      var q2 = 1;
      if (match3[2]) {
        var params = match3[2].split(";");
        for (var j = 0; j < params.length; j++) {
          var p5 = params[j].trim().split("=");
          if (p5[0] === "q") {
            q2 = parseFloat(p5[1]);
            break;
          }
        }
      }
      return {
        encoding,
        q: q2,
        i: i2
      };
    }
    function getEncodingPriority(encoding, accepted, index4) {
      var priority = { o: -1, q: 0, s: 0 };
      for (var i2 = 0; i2 < accepted.length; i2++) {
        var spec = specify(encoding, accepted[i2], index4);
        if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
          priority = spec;
        }
      }
      return priority;
    }
    function specify(encoding, spec, index4) {
      var s5 = 0;
      if (spec.encoding.toLowerCase() === encoding.toLowerCase()) {
        s5 |= 1;
      } else if (spec.encoding !== "*") {
        return null;
      }
      return {
        i: index4,
        o: spec.i,
        q: spec.q,
        s: s5
      };
    }
    function preferredEncodings(accept, provided) {
      var accepts = parseAcceptEncoding(accept || "");
      if (!provided) {
        return accepts.filter(isQuality).sort(compareSpecs).map(getFullEncoding);
      }
      var priorities = provided.map(function getPriority(type2, index4) {
        return getEncodingPriority(type2, accepts, index4);
      });
      return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) {
        return provided[priorities.indexOf(priority)];
      });
    }
    function compareSpecs(a2, b) {
      return b.q - a2.q || b.s - a2.s || a2.o - b.o || a2.i - b.i || 0;
    }
    function getFullEncoding(spec) {
      return spec.encoding;
    }
    function isQuality(spec) {
      return spec.q > 0;
    }
  }
});

// ../../node_modules/negotiator/lib/language.js
var require_language = __commonJS({
  "../../node_modules/negotiator/lib/language.js"(exports2, module2) {
    "use strict";
    module2.exports = preferredLanguages;
    module2.exports.preferredLanguages = preferredLanguages;
    var simpleLanguageRegExp = /^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/;
    function parseAcceptLanguage(accept) {
      var accepts = accept.split(",");
      for (var i2 = 0, j = 0; i2 < accepts.length; i2++) {
        var language = parseLanguage(accepts[i2].trim(), i2);
        if (language) {
          accepts[j++] = language;
        }
      }
      accepts.length = j;
      return accepts;
    }
    function parseLanguage(str2, i2) {
      var match3 = simpleLanguageRegExp.exec(str2);
      if (!match3) return null;
      var prefix2 = match3[1];
      var suffix = match3[2];
      var full = prefix2;
      if (suffix) full += "-" + suffix;
      var q2 = 1;
      if (match3[3]) {
        var params = match3[3].split(";");
        for (var j = 0; j < params.length; j++) {
          var p5 = params[j].split("=");
          if (p5[0] === "q") q2 = parseFloat(p5[1]);
        }
      }
      return {
        prefix: prefix2,
        suffix,
        q: q2,
        i: i2,
        full
      };
    }
    function getLanguagePriority(language, accepted, index4) {
      var priority = { o: -1, q: 0, s: 0 };
      for (var i2 = 0; i2 < accepted.length; i2++) {
        var spec = specify(language, accepted[i2], index4);
        if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
          priority = spec;
        }
      }
      return priority;
    }
    function specify(language, spec, index4) {
      var p5 = parseLanguage(language);
      if (!p5) return null;
      var s5 = 0;
      if (spec.full.toLowerCase() === p5.full.toLowerCase()) {
        s5 |= 4;
      } else if (spec.prefix.toLowerCase() === p5.full.toLowerCase()) {
        s5 |= 2;
      } else if (spec.full.toLowerCase() === p5.prefix.toLowerCase()) {
        s5 |= 1;
      } else if (spec.full !== "*") {
        return null;
      }
      return {
        i: index4,
        o: spec.i,
        q: spec.q,
        s: s5
      };
    }
    function preferredLanguages(accept, provided) {
      var accepts = parseAcceptLanguage(accept === void 0 ? "*" : accept || "");
      if (!provided) {
        return accepts.filter(isQuality).sort(compareSpecs).map(getFullLanguage);
      }
      var priorities = provided.map(function getPriority(type2, index4) {
        return getLanguagePriority(type2, accepts, index4);
      });
      return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) {
        return provided[priorities.indexOf(priority)];
      });
    }
    function compareSpecs(a2, b) {
      return b.q - a2.q || b.s - a2.s || a2.o - b.o || a2.i - b.i || 0;
    }
    function getFullLanguage(spec) {
      return spec.full;
    }
    function isQuality(spec) {
      return spec.q > 0;
    }
  }
});

// ../../node_modules/negotiator/lib/mediaType.js
var require_mediaType = __commonJS({
  "../../node_modules/negotiator/lib/mediaType.js"(exports2, module2) {
    "use strict";
    module2.exports = preferredMediaTypes;
    module2.exports.preferredMediaTypes = preferredMediaTypes;
    var simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;
    function parseAccept(accept) {
      var accepts = splitMediaTypes(accept);
      for (var i2 = 0, j = 0; i2 < accepts.length; i2++) {
        var mediaType = parseMediaType(accepts[i2].trim(), i2);
        if (mediaType) {
          accepts[j++] = mediaType;
        }
      }
      accepts.length = j;
      return accepts;
    }
    function parseMediaType(str2, i2) {
      var match3 = simpleMediaTypeRegExp.exec(str2);
      if (!match3) return null;
      var params = /* @__PURE__ */ Object.create(null);
      var q2 = 1;
      var subtype = match3[2];
      var type2 = match3[1];
      if (match3[3]) {
        var kvps = splitParameters(match3[3]).map(splitKeyValuePair);
        for (var j = 0; j < kvps.length; j++) {
          var pair = kvps[j];
          var key2 = pair[0].toLowerCase();
          var val = pair[1];
          var value = val && val[0] === '"' && val[val.length - 1] === '"' ? val.substr(1, val.length - 2) : val;
          if (key2 === "q") {
            q2 = parseFloat(value);
            break;
          }
          params[key2] = value;
        }
      }
      return {
        type: type2,
        subtype,
        params,
        q: q2,
        i: i2
      };
    }
    function getMediaTypePriority(type2, accepted, index4) {
      var priority = { o: -1, q: 0, s: 0 };
      for (var i2 = 0; i2 < accepted.length; i2++) {
        var spec = specify(type2, accepted[i2], index4);
        if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
          priority = spec;
        }
      }
      return priority;
    }
    function specify(type2, spec, index4) {
      var p5 = parseMediaType(type2);
      var s5 = 0;
      if (!p5) {
        return null;
      }
      if (spec.type.toLowerCase() == p5.type.toLowerCase()) {
        s5 |= 4;
      } else if (spec.type != "*") {
        return null;
      }
      if (spec.subtype.toLowerCase() == p5.subtype.toLowerCase()) {
        s5 |= 2;
      } else if (spec.subtype != "*") {
        return null;
      }
      var keys2 = Object.keys(spec.params);
      if (keys2.length > 0) {
        if (keys2.every(function(k) {
          return spec.params[k] == "*" || (spec.params[k] || "").toLowerCase() == (p5.params[k] || "").toLowerCase();
        })) {
          s5 |= 1;
        } else {
          return null;
        }
      }
      return {
        i: index4,
        o: spec.i,
        q: spec.q,
        s: s5
      };
    }
    function preferredMediaTypes(accept, provided) {
      var accepts = parseAccept(accept === void 0 ? "*/*" : accept || "");
      if (!provided) {
        return accepts.filter(isQuality).sort(compareSpecs).map(getFullType);
      }
      var priorities = provided.map(function getPriority(type2, index4) {
        return getMediaTypePriority(type2, accepts, index4);
      });
      return priorities.filter(isQuality).sort(compareSpecs).map(function getType3(priority) {
        return provided[priorities.indexOf(priority)];
      });
    }
    function compareSpecs(a2, b) {
      return b.q - a2.q || b.s - a2.s || a2.o - b.o || a2.i - b.i || 0;
    }
    function getFullType(spec) {
      return spec.type + "/" + spec.subtype;
    }
    function isQuality(spec) {
      return spec.q > 0;
    }
    function quoteCount(string2) {
      var count2 = 0;
      var index4 = 0;
      while ((index4 = string2.indexOf('"', index4)) !== -1) {
        count2++;
        index4++;
      }
      return count2;
    }
    function splitKeyValuePair(str2) {
      var index4 = str2.indexOf("=");
      var key2;
      var val;
      if (index4 === -1) {
        key2 = str2;
      } else {
        key2 = str2.substr(0, index4);
        val = str2.substr(index4 + 1);
      }
      return [key2, val];
    }
    function splitMediaTypes(accept) {
      var accepts = accept.split(",");
      for (var i2 = 1, j = 0; i2 < accepts.length; i2++) {
        if (quoteCount(accepts[j]) % 2 == 0) {
          accepts[++j] = accepts[i2];
        } else {
          accepts[j] += "," + accepts[i2];
        }
      }
      accepts.length = j + 1;
      return accepts;
    }
    function splitParameters(str2) {
      var parameters = str2.split(";");
      for (var i2 = 1, j = 0; i2 < parameters.length; i2++) {
        if (quoteCount(parameters[j]) % 2 == 0) {
          parameters[++j] = parameters[i2];
        } else {
          parameters[j] += ";" + parameters[i2];
        }
      }
      parameters.length = j + 1;
      for (var i2 = 0; i2 < parameters.length; i2++) {
        parameters[i2] = parameters[i2].trim();
      }
      return parameters;
    }
  }
});

// ../../node_modules/negotiator/index.js
var require_negotiator = __commonJS({
  "../../node_modules/negotiator/index.js"(exports2, module2) {
    "use strict";
    var preferredCharsets = require_charset();
    var preferredEncodings = require_encoding();
    var preferredLanguages = require_language();
    var preferredMediaTypes = require_mediaType();
    module2.exports = Negotiator;
    module2.exports.Negotiator = Negotiator;
    function Negotiator(request) {
      if (!(this instanceof Negotiator)) {
        return new Negotiator(request);
      }
      this.request = request;
    }
    Negotiator.prototype.charset = function charset(available) {
      var set3 = this.charsets(available);
      return set3 && set3[0];
    };
    Negotiator.prototype.charsets = function charsets(available) {
      return preferredCharsets(this.request.headers["accept-charset"], available);
    };
    Negotiator.prototype.encoding = function encoding(available) {
      var set3 = this.encodings(available);
      return set3 && set3[0];
    };
    Negotiator.prototype.encodings = function encodings(available) {
      return preferredEncodings(this.request.headers["accept-encoding"], available);
    };
    Negotiator.prototype.language = function language(available) {
      var set3 = this.languages(available);
      return set3 && set3[0];
    };
    Negotiator.prototype.languages = function languages(available) {
      return preferredLanguages(this.request.headers["accept-language"], available);
    };
    Negotiator.prototype.mediaType = function mediaType(available) {
      var set3 = this.mediaTypes(available);
      return set3 && set3[0];
    };
    Negotiator.prototype.mediaTypes = function mediaTypes(available) {
      return preferredMediaTypes(this.request.headers.accept, available);
    };
    Negotiator.prototype.preferredCharset = Negotiator.prototype.charset;
    Negotiator.prototype.preferredCharsets = Negotiator.prototype.charsets;
    Negotiator.prototype.preferredEncoding = Negotiator.prototype.encoding;
    Negotiator.prototype.preferredEncodings = Negotiator.prototype.encodings;
    Negotiator.prototype.preferredLanguage = Negotiator.prototype.language;
    Negotiator.prototype.preferredLanguages = Negotiator.prototype.languages;
    Negotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType;
    Negotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes;
  }
});

// ../../node_modules/accepts/index.js
var require_accepts = __commonJS({
  "../../node_modules/accepts/index.js"(exports2, module2) {
    "use strict";
    var Negotiator = require_negotiator();
    var mime3 = require_mime_types();
    module2.exports = Accepts;
    function Accepts(req) {
      if (!(this instanceof Accepts)) {
        return new Accepts(req);
      }
      this.headers = req.headers;
      this.negotiator = new Negotiator(req);
    }
    Accepts.prototype.type = Accepts.prototype.types = function(types_) {
      var types6 = types_;
      if (types6 && !Array.isArray(types6)) {
        types6 = new Array(arguments.length);
        for (var i2 = 0; i2 < types6.length; i2++) {
          types6[i2] = arguments[i2];
        }
      }
      if (!types6 || types6.length === 0) {
        return this.negotiator.mediaTypes();
      }
      if (!this.headers.accept) {
        return types6[0];
      }
      var mimes = types6.map(extToMime);
      var accepts = this.negotiator.mediaTypes(mimes.filter(validMime));
      var first2 = accepts[0];
      return first2 ? types6[mimes.indexOf(first2)] : false;
    };
    Accepts.prototype.encoding = Accepts.prototype.encodings = function(encodings_) {
      var encodings = encodings_;
      if (encodings && !Array.isArray(encodings)) {
        encodings = new Array(arguments.length);
        for (var i2 = 0; i2 < encodings.length; i2++) {
          encodings[i2] = arguments[i2];
        }
      }
      if (!encodings || encodings.length === 0) {
        return this.negotiator.encodings();
      }
      return this.negotiator.encodings(encodings)[0] || false;
    };
    Accepts.prototype.charset = Accepts.prototype.charsets = function(charsets_) {
      var charsets = charsets_;
      if (charsets && !Array.isArray(charsets)) {
        charsets = new Array(arguments.length);
        for (var i2 = 0; i2 < charsets.length; i2++) {
          charsets[i2] = arguments[i2];
        }
      }
      if (!charsets || charsets.length === 0) {
        return this.negotiator.charsets();
      }
      return this.negotiator.charsets(charsets)[0] || false;
    };
    Accepts.prototype.lang = Accepts.prototype.langs = Accepts.prototype.language = Accepts.prototype.languages = function(languages_) {
      var languages = languages_;
      if (languages && !Array.isArray(languages)) {
        languages = new Array(arguments.length);
        for (var i2 = 0; i2 < languages.length; i2++) {
          languages[i2] = arguments[i2];
        }
      }
      if (!languages || languages.length === 0) {
        return this.negotiator.languages();
      }
      return this.negotiator.languages(languages)[0] || false;
    };
    function extToMime(type2) {
      return type2.indexOf("/") === -1 ? mime3.lookup(type2) : type2;
    }
    function validMime(type2) {
      return typeof type2 === "string";
    }
  }
});

// ../../node_modules/express/lib/request.js
var require_request = __commonJS({
  "../../node_modules/express/lib/request.js"(exports2, module2) {
    "use strict";
    var accepts = require_accepts();
    var deprecate3 = require_depd()("express");
    var isIP2 = require("net").isIP;
    var typeis = require_type_is();
    var http5 = require("http");
    var fresh = require_fresh();
    var parseRange = require_range_parser();
    var parse16 = require_parseurl();
    var proxyaddr = require_proxy_addr();
    var req = Object.create(http5.IncomingMessage.prototype);
    module2.exports = req;
    req.get = req.header = function header(name3) {
      if (!name3) {
        throw new TypeError("name argument is required to req.get");
      }
      if (typeof name3 !== "string") {
        throw new TypeError("name must be a string to req.get");
      }
      var lc = name3.toLowerCase();
      switch (lc) {
        case "referer":
        case "referrer":
          return this.headers.referrer || this.headers.referer;
        default:
          return this.headers[lc];
      }
    };
    req.accepts = function() {
      var accept = accepts(this);
      return accept.types.apply(accept, arguments);
    };
    req.acceptsEncodings = function() {
      var accept = accepts(this);
      return accept.encodings.apply(accept, arguments);
    };
    req.acceptsEncoding = deprecate3.function(
      req.acceptsEncodings,
      "req.acceptsEncoding: Use acceptsEncodings instead"
    );
    req.acceptsCharsets = function() {
      var accept = accepts(this);
      return accept.charsets.apply(accept, arguments);
    };
    req.acceptsCharset = deprecate3.function(
      req.acceptsCharsets,
      "req.acceptsCharset: Use acceptsCharsets instead"
    );
    req.acceptsLanguages = function() {
      var accept = accepts(this);
      return accept.languages.apply(accept, arguments);
    };
    req.acceptsLanguage = deprecate3.function(
      req.acceptsLanguages,
      "req.acceptsLanguage: Use acceptsLanguages instead"
    );
    req.range = function range(size, options) {
      var range2 = this.get("Range");
      if (!range2) return;
      return parseRange(size, range2, options);
    };
    req.param = function param(name3, defaultValue) {
      var params = this.params || {};
      var body3 = this.body || {};
      var query = this.query || {};
      var args = arguments.length === 1 ? "name" : "name, default";
      deprecate3("req.param(" + args + "): Use req.params, req.body, or req.query instead");
      if (null != params[name3] && params.hasOwnProperty(name3)) return params[name3];
      if (null != body3[name3]) return body3[name3];
      if (null != query[name3]) return query[name3];
      return defaultValue;
    };
    req.is = function is4(types6) {
      var arr = types6;
      if (!Array.isArray(types6)) {
        arr = new Array(arguments.length);
        for (var i2 = 0; i2 < arr.length; i2++) {
          arr[i2] = arguments[i2];
        }
      }
      return typeis(this, arr);
    };
    defineGetter(req, "protocol", function protocol() {
      var proto9 = this.connection.encrypted ? "https" : "http";
      var trust = this.app.get("trust proxy fn");
      if (!trust(this.connection.remoteAddress, 0)) {
        return proto9;
      }
      var header = this.get("X-Forwarded-Proto") || proto9;
      var index4 = header.indexOf(",");
      return index4 !== -1 ? header.substring(0, index4).trim() : header.trim();
    });
    defineGetter(req, "secure", function secure() {
      return this.protocol === "https";
    });
    defineGetter(req, "ip", function ip() {
      var trust = this.app.get("trust proxy fn");
      return proxyaddr(this, trust);
    });
    defineGetter(req, "ips", function ips() {
      var trust = this.app.get("trust proxy fn");
      var addrs = proxyaddr.all(this, trust);
      addrs.reverse().pop();
      return addrs;
    });
    defineGetter(req, "subdomains", function subdomains() {
      var hostname = this.hostname;
      if (!hostname) return [];
      var offset = this.app.get("subdomain offset");
      var subdomains2 = !isIP2(hostname) ? hostname.split(".").reverse() : [hostname];
      return subdomains2.slice(offset);
    });
    defineGetter(req, "path", function path45() {
      return parse16(this).pathname;
    });
    defineGetter(req, "hostname", function hostname() {
      var trust = this.app.get("trust proxy fn");
      var host = this.get("X-Forwarded-Host");
      if (!host || !trust(this.connection.remoteAddress, 0)) {
        host = this.get("Host");
      } else if (host.indexOf(",") !== -1) {
        host = host.substring(0, host.indexOf(",")).trimRight();
      }
      if (!host) return;
      var offset = host[0] === "[" ? host.indexOf("]") + 1 : 0;
      var index4 = host.indexOf(":", offset);
      return index4 !== -1 ? host.substring(0, index4) : host;
    });
    defineGetter(req, "host", deprecate3.function(function host() {
      return this.hostname;
    }, "req.host: Use req.hostname instead"));
    defineGetter(req, "fresh", function() {
      var method = this.method;
      var res = this.res;
      var status = res.statusCode;
      if ("GET" !== method && "HEAD" !== method) return false;
      if (status >= 200 && status < 300 || 304 === status) {
        return fresh(this.headers, {
          "etag": res.get("ETag"),
          "last-modified": res.get("Last-Modified")
        });
      }
      return false;
    });
    defineGetter(req, "stale", function stale() {
      return !this.fresh;
    });
    defineGetter(req, "xhr", function xhr() {
      var val = this.get("X-Requested-With") || "";
      return val.toLowerCase() === "xmlhttprequest";
    });
    function defineGetter(obj, name3, getter) {
      Object.defineProperty(obj, name3, {
        configurable: true,
        enumerable: true,
        get: getter
      });
    }
  }
});

// ../../node_modules/cookie-signature/index.js
var require_cookie_signature = __commonJS({
  "../../node_modules/cookie-signature/index.js"(exports2) {
    var crypto4 = require("crypto");
    exports2.sign = function(val, secret) {
      if ("string" != typeof val) throw new TypeError("Cookie value must be provided as a string.");
      if ("string" != typeof secret) throw new TypeError("Secret string must be provided.");
      return val + "." + crypto4.createHmac("sha256", secret).update(val).digest("base64").replace(/\=+$/, "");
    };
    exports2.unsign = function(val, secret) {
      if ("string" != typeof val) throw new TypeError("Signed cookie string must be provided.");
      if ("string" != typeof secret) throw new TypeError("Secret string must be provided.");
      var str2 = val.slice(0, val.lastIndexOf(".")), mac = exports2.sign(str2, secret);
      return sha1(mac) == sha1(val) ? str2 : false;
    };
    function sha1(str2) {
      return crypto4.createHash("sha1").update(str2).digest("hex");
    }
  }
});

// ../../node_modules/cookie/index.js
var require_cookie = __commonJS({
  "../../node_modules/cookie/index.js"(exports2) {
    "use strict";
    exports2.parse = parse16;
    exports2.serialize = serialize3;
    var __toString = Object.prototype.toString;
    var cookieNameRegExp = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;
    var cookieValueRegExp = /^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/;
    var domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i;
    var pathValueRegExp = /^[\u0020-\u003A\u003D-\u007E]*$/;
    function parse16(str2, opt) {
      if (typeof str2 !== "string") {
        throw new TypeError("argument str must be a string");
      }
      var obj = {};
      var len = str2.length;
      if (len < 2) return obj;
      var dec = opt && opt.decode || decode2;
      var index4 = 0;
      var eqIdx = 0;
      var endIdx = 0;
      do {
        eqIdx = str2.indexOf("=", index4);
        if (eqIdx === -1) break;
        endIdx = str2.indexOf(";", index4);
        if (endIdx === -1) {
          endIdx = len;
        } else if (eqIdx > endIdx) {
          index4 = str2.lastIndexOf(";", eqIdx - 1) + 1;
          continue;
        }
        var keyStartIdx = startIndex(str2, index4, eqIdx);
        var keyEndIdx = endIndex(str2, eqIdx, keyStartIdx);
        var key2 = str2.slice(keyStartIdx, keyEndIdx);
        if (!obj.hasOwnProperty(key2)) {
          var valStartIdx = startIndex(str2, eqIdx + 1, endIdx);
          var valEndIdx = endIndex(str2, endIdx, valStartIdx);
          if (str2.charCodeAt(valStartIdx) === 34 && str2.charCodeAt(valEndIdx - 1) === 34) {
            valStartIdx++;
            valEndIdx--;
          }
          var val = str2.slice(valStartIdx, valEndIdx);
          obj[key2] = tryDecode(val, dec);
        }
        index4 = endIdx + 1;
      } while (index4 < len);
      return obj;
    }
    function startIndex(str2, index4, max) {
      do {
        var code7 = str2.charCodeAt(index4);
        if (code7 !== 32 && code7 !== 9) return index4;
      } while (++index4 < max);
      return max;
    }
    function endIndex(str2, index4, min) {
      while (index4 > min) {
        var code7 = str2.charCodeAt(--index4);
        if (code7 !== 32 && code7 !== 9) return index4 + 1;
      }
      return min;
    }
    function serialize3(name3, val, opt) {
      var enc = opt && opt.encode || encodeURIComponent;
      if (typeof enc !== "function") {
        throw new TypeError("option encode is invalid");
      }
      if (!cookieNameRegExp.test(name3)) {
        throw new TypeError("argument name is invalid");
      }
      var value = enc(val);
      if (!cookieValueRegExp.test(value)) {
        throw new TypeError("argument val is invalid");
      }
      var str2 = name3 + "=" + value;
      if (!opt) return str2;
      if (null != opt.maxAge) {
        var maxAge = Math.floor(opt.maxAge);
        if (!isFinite(maxAge)) {
          throw new TypeError("option maxAge is invalid");
        }
        str2 += "; Max-Age=" + maxAge;
      }
      if (opt.domain) {
        if (!domainValueRegExp.test(opt.domain)) {
          throw new TypeError("option domain is invalid");
        }
        str2 += "; Domain=" + opt.domain;
      }
      if (opt.path) {
        if (!pathValueRegExp.test(opt.path)) {
          throw new TypeError("option path is invalid");
        }
        str2 += "; Path=" + opt.path;
      }
      if (opt.expires) {
        var expires = opt.expires;
        if (!isDate2(expires) || isNaN(expires.valueOf())) {
          throw new TypeError("option expires is invalid");
        }
        str2 += "; Expires=" + expires.toUTCString();
      }
      if (opt.httpOnly) {
        str2 += "; HttpOnly";
      }
      if (opt.secure) {
        str2 += "; Secure";
      }
      if (opt.partitioned) {
        str2 += "; Partitioned";
      }
      if (opt.priority) {
        var priority = typeof opt.priority === "string" ? opt.priority.toLowerCase() : opt.priority;
        switch (priority) {
          case "low":
            str2 += "; Priority=Low";
            break;
          case "medium":
            str2 += "; Priority=Medium";
            break;
          case "high":
            str2 += "; Priority=High";
            break;
          default:
            throw new TypeError("option priority is invalid");
        }
      }
      if (opt.sameSite) {
        var sameSite = typeof opt.sameSite === "string" ? opt.sameSite.toLowerCase() : opt.sameSite;
        switch (sameSite) {
          case true:
            str2 += "; SameSite=Strict";
            break;
          case "lax":
            str2 += "; SameSite=Lax";
            break;
          case "strict":
            str2 += "; SameSite=Strict";
            break;
          case "none":
            str2 += "; SameSite=None";
            break;
          default:
            throw new TypeError("option sameSite is invalid");
        }
      }
      return str2;
    }
    function decode2(str2) {
      return str2.indexOf("%") !== -1 ? decodeURIComponent(str2) : str2;
    }
    function isDate2(val) {
      return __toString.call(val) === "[object Date]";
    }
    function tryDecode(str2, decode3) {
      try {
        return decode3(str2);
      } catch (e2) {
        return str2;
      }
    }
  }
});

// ../../node_modules/express/lib/response.js
var require_response = __commonJS({
  "../../node_modules/express/lib/response.js"(exports2, module2) {
    "use strict";
    var Buffer7 = require_safe_buffer().Buffer;
    var contentDisposition = require_content_disposition();
    var createError = require_http_errors();
    var deprecate3 = require_depd()("express");
    var encodeUrl = require_encodeurl();
    var escapeHtml4 = require_escape_html();
    var http5 = require("http");
    var isAbsolute = require_utils11().isAbsolute;
    var onFinished = require_on_finished();
    var path45 = require("path");
    var statuses = require_statuses();
    var merge3 = require_utils_merge();
    var sign = require_cookie_signature().sign;
    var normalizeType = require_utils11().normalizeType;
    var normalizeTypes = require_utils11().normalizeTypes;
    var setCharset = require_utils11().setCharset;
    var cookie = require_cookie();
    var send = require_send();
    var extname8 = path45.extname;
    var mime3 = send.mime;
    var resolve9 = path45.resolve;
    var vary = require_vary();
    var res = Object.create(http5.ServerResponse.prototype);
    module2.exports = res;
    var charsetRegExp = /;\s*charset\s*=/;
    res.status = function status(code7) {
      if ((typeof code7 === "string" || Math.floor(code7) !== code7) && code7 > 99 && code7 < 1e3) {
        deprecate3("res.status(" + JSON.stringify(code7) + "): use res.status(" + Math.floor(code7) + ") instead");
      }
      this.statusCode = code7;
      return this;
    };
    res.links = function(links2) {
      var link4 = this.get("Link") || "";
      if (link4) link4 += ", ";
      return this.set("Link", link4 + Object.keys(links2).map(function(rel2) {
        return "<" + links2[rel2] + '>; rel="' + rel2 + '"';
      }).join(", "));
    };
    res.send = function send2(body3) {
      var chunk = body3;
      var encoding;
      var req = this.req;
      var type2;
      var app = this.app;
      if (arguments.length === 2) {
        if (typeof arguments[0] !== "number" && typeof arguments[1] === "number") {
          deprecate3("res.send(body, status): Use res.status(status).send(body) instead");
          this.statusCode = arguments[1];
        } else {
          deprecate3("res.send(status, body): Use res.status(status).send(body) instead");
          this.statusCode = arguments[0];
          chunk = arguments[1];
        }
      }
      if (typeof chunk === "number" && arguments.length === 1) {
        if (!this.get("Content-Type")) {
          this.type("txt");
        }
        deprecate3("res.send(status): Use res.sendStatus(status) instead");
        this.statusCode = chunk;
        chunk = statuses.message[chunk];
      }
      switch (typeof chunk) {
        // string defaulting to html
        case "string":
          if (!this.get("Content-Type")) {
            this.type("html");
          }
          break;
        case "boolean":
        case "number":
        case "object":
          if (chunk === null) {
            chunk = "";
          } else if (Buffer7.isBuffer(chunk)) {
            if (!this.get("Content-Type")) {
              this.type("bin");
            }
          } else {
            return this.json(chunk);
          }
          break;
      }
      if (typeof chunk === "string") {
        encoding = "utf8";
        type2 = this.get("Content-Type");
        if (typeof type2 === "string") {
          this.set("Content-Type", setCharset(type2, "utf-8"));
        }
      }
      var etagFn = app.get("etag fn");
      var generateETag = !this.get("ETag") && typeof etagFn === "function";
      var len;
      if (chunk !== void 0) {
        if (Buffer7.isBuffer(chunk)) {
          len = chunk.length;
        } else if (!generateETag && chunk.length < 1e3) {
          len = Buffer7.byteLength(chunk, encoding);
        } else {
          chunk = Buffer7.from(chunk, encoding);
          encoding = void 0;
          len = chunk.length;
        }
        this.set("Content-Length", len);
      }
      var etag;
      if (generateETag && len !== void 0) {
        if (etag = etagFn(chunk, encoding)) {
          this.set("ETag", etag);
        }
      }
      if (req.fresh) this.statusCode = 304;
      if (204 === this.statusCode || 304 === this.statusCode) {
        this.removeHeader("Content-Type");
        this.removeHeader("Content-Length");
        this.removeHeader("Transfer-Encoding");
        chunk = "";
      }
      if (this.statusCode === 205) {
        this.set("Content-Length", "0");
        this.removeHeader("Transfer-Encoding");
        chunk = "";
      }
      if (req.method === "HEAD") {
        this.end();
      } else {
        this.end(chunk, encoding);
      }
      return this;
    };
    res.json = function json2(obj) {
      var val = obj;
      if (arguments.length === 2) {
        if (typeof arguments[1] === "number") {
          deprecate3("res.json(obj, status): Use res.status(status).json(obj) instead");
          this.statusCode = arguments[1];
        } else {
          deprecate3("res.json(status, obj): Use res.status(status).json(obj) instead");
          this.statusCode = arguments[0];
          val = arguments[1];
        }
      }
      var app = this.app;
      var escape5 = app.get("json escape");
      var replacer = app.get("json replacer");
      var spaces = app.get("json spaces");
      var body3 = stringify4(val, replacer, spaces, escape5);
      if (!this.get("Content-Type")) {
        this.set("Content-Type", "application/json");
      }
      return this.send(body3);
    };
    res.jsonp = function jsonp(obj) {
      var val = obj;
      if (arguments.length === 2) {
        if (typeof arguments[1] === "number") {
          deprecate3("res.jsonp(obj, status): Use res.status(status).jsonp(obj) instead");
          this.statusCode = arguments[1];
        } else {
          deprecate3("res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead");
          this.statusCode = arguments[0];
          val = arguments[1];
        }
      }
      var app = this.app;
      var escape5 = app.get("json escape");
      var replacer = app.get("json replacer");
      var spaces = app.get("json spaces");
      var body3 = stringify4(val, replacer, spaces, escape5);
      var callback = this.req.query[app.get("jsonp callback name")];
      if (!this.get("Content-Type")) {
        this.set("X-Content-Type-Options", "nosniff");
        this.set("Content-Type", "application/json");
      }
      if (Array.isArray(callback)) {
        callback = callback[0];
      }
      if (typeof callback === "string" && callback.length !== 0) {
        this.set("X-Content-Type-Options", "nosniff");
        this.set("Content-Type", "text/javascript");
        callback = callback.replace(/[^\[\]\w$.]/g, "");
        if (body3 === void 0) {
          body3 = "";
        } else if (typeof body3 === "string") {
          body3 = body3.replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
        }
        body3 = "/**/ typeof " + callback + " === 'function' && " + callback + "(" + body3 + ");";
      }
      return this.send(body3);
    };
    res.sendStatus = function sendStatus(statusCode) {
      var body3 = statuses.message[statusCode] || String(statusCode);
      this.statusCode = statusCode;
      this.type("txt");
      return this.send(body3);
    };
    res.sendFile = function sendFile(path46, options, callback) {
      var done = callback;
      var req = this.req;
      var res2 = this;
      var next = req.next;
      var opts = options || {};
      if (!path46) {
        throw new TypeError("path argument is required to res.sendFile");
      }
      if (typeof path46 !== "string") {
        throw new TypeError("path must be a string to res.sendFile");
      }
      if (typeof options === "function") {
        done = options;
        opts = {};
      }
      if (!opts.root && !isAbsolute(path46)) {
        throw new TypeError("path must be absolute or specify root to res.sendFile");
      }
      var pathname = encodeURI(path46);
      var file = send(req, pathname, opts);
      sendfile(res2, file, opts, function(err) {
        if (done) return done(err);
        if (err && err.code === "EISDIR") return next();
        if (err && err.code !== "ECONNABORTED" && err.syscall !== "write") {
          next(err);
        }
      });
    };
    res.sendfile = function(path46, options, callback) {
      var done = callback;
      var req = this.req;
      var res2 = this;
      var next = req.next;
      var opts = options || {};
      if (typeof options === "function") {
        done = options;
        opts = {};
      }
      var file = send(req, path46, opts);
      sendfile(res2, file, opts, function(err) {
        if (done) return done(err);
        if (err && err.code === "EISDIR") return next();
        if (err && err.code !== "ECONNABORTED" && err.syscall !== "write") {
          next(err);
        }
      });
    };
    res.sendfile = deprecate3.function(
      res.sendfile,
      "res.sendfile: Use res.sendFile instead"
    );
    res.download = function download(path46, filename, options, callback) {
      var done = callback;
      var name3 = filename;
      var opts = options || null;
      if (typeof filename === "function") {
        done = filename;
        name3 = null;
        opts = null;
      } else if (typeof options === "function") {
        done = options;
        opts = null;
      }
      if (typeof filename === "object" && (typeof options === "function" || options === void 0)) {
        name3 = null;
        opts = filename;
      }
      var headers = {
        "Content-Disposition": contentDisposition(name3 || path46)
      };
      if (opts && opts.headers) {
        var keys2 = Object.keys(opts.headers);
        for (var i2 = 0; i2 < keys2.length; i2++) {
          var key2 = keys2[i2];
          if (key2.toLowerCase() !== "content-disposition") {
            headers[key2] = opts.headers[key2];
          }
        }
      }
      opts = Object.create(opts);
      opts.headers = headers;
      var fullPath2 = !opts.root ? resolve9(path46) : path46;
      return this.sendFile(fullPath2, opts, done);
    };
    res.contentType = res.type = function contentType(type2) {
      var ct = type2.indexOf("/") === -1 ? mime3.lookup(type2) : type2;
      return this.set("Content-Type", ct);
    };
    res.format = function(obj) {
      var req = this.req;
      var next = req.next;
      var keys2 = Object.keys(obj).filter(function(v) {
        return v !== "default";
      });
      var key2 = keys2.length > 0 ? req.accepts(keys2) : false;
      this.vary("Accept");
      if (key2) {
        this.set("Content-Type", normalizeType(key2).value);
        obj[key2](req, this, next);
      } else if (obj.default) {
        obj.default(req, this, next);
      } else {
        next(createError(406, {
          types: normalizeTypes(keys2).map(function(o) {
            return o.value;
          })
        }));
      }
      return this;
    };
    res.attachment = function attachment(filename) {
      if (filename) {
        this.type(extname8(filename));
      }
      this.set("Content-Disposition", contentDisposition(filename));
      return this;
    };
    res.append = function append(field, val) {
      var prev = this.get(field);
      var value = val;
      if (prev) {
        value = Array.isArray(prev) ? prev.concat(val) : Array.isArray(val) ? [prev].concat(val) : [prev, val];
      }
      return this.set(field, value);
    };
    res.set = res.header = function header(field, val) {
      if (arguments.length === 2) {
        var value = Array.isArray(val) ? val.map(String) : String(val);
        if (field.toLowerCase() === "content-type") {
          if (Array.isArray(value)) {
            throw new TypeError("Content-Type cannot be set to an Array");
          }
          if (!charsetRegExp.test(value)) {
            var charset = mime3.charsets.lookup(value.split(";")[0]);
            if (charset) value += "; charset=" + charset.toLowerCase();
          }
        }
        this.setHeader(field, value);
      } else {
        for (var key2 in field) {
          this.set(key2, field[key2]);
        }
      }
      return this;
    };
    res.get = function(field) {
      return this.getHeader(field);
    };
    res.clearCookie = function clearCookie(name3, options) {
      if (options) {
        if (options.maxAge) {
          deprecate3('res.clearCookie: Passing "options.maxAge" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.');
        }
        if (options.expires) {
          deprecate3('res.clearCookie: Passing "options.expires" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.');
        }
      }
      var opts = merge3({ expires: /* @__PURE__ */ new Date(1), path: "/" }, options);
      return this.cookie(name3, "", opts);
    };
    res.cookie = function(name3, value, options) {
      var opts = merge3({}, options);
      var secret = this.req.secret;
      var signed = opts.signed;
      if (signed && !secret) {
        throw new Error('cookieParser("secret") required for signed cookies');
      }
      var val = typeof value === "object" ? "j:" + JSON.stringify(value) : String(value);
      if (signed) {
        val = "s:" + sign(val, secret);
      }
      if (opts.maxAge != null) {
        var maxAge = opts.maxAge - 0;
        if (!isNaN(maxAge)) {
          opts.expires = new Date(Date.now() + maxAge);
          opts.maxAge = Math.floor(maxAge / 1e3);
        }
      }
      if (opts.path == null) {
        opts.path = "/";
      }
      this.append("Set-Cookie", cookie.serialize(name3, String(val), opts));
      return this;
    };
    res.location = function location4(url) {
      var loc;
      if (url === "back") {
        deprecate3('res.location("back"): use res.location(req.get("Referrer") || "/") and refer to https://dub.sh/security-redirect for best practices');
        loc = this.req.get("Referrer") || "/";
      } else {
        loc = String(url);
      }
      return this.set("Location", encodeUrl(loc));
    };
    res.redirect = function redirect(url) {
      var address = url;
      var body3;
      var status = 302;
      if (arguments.length === 2) {
        if (typeof arguments[0] === "number") {
          status = arguments[0];
          address = arguments[1];
        } else {
          deprecate3("res.redirect(url, status): Use res.redirect(status, url) instead");
          status = arguments[1];
        }
      }
      address = this.location(address).get("Location");
      this.format({
        text: function() {
          body3 = statuses.message[status] + ". Redirecting to " + address;
        },
        html: function() {
          var u3 = escapeHtml4(address);
          body3 = "<p>" + statuses.message[status] + ". Redirecting to " + u3 + "</p>";
        },
        default: function() {
          body3 = "";
        }
      });
      this.statusCode = status;
      this.set("Content-Length", Buffer7.byteLength(body3));
      if (this.req.method === "HEAD") {
        this.end();
      } else {
        this.end(body3);
      }
    };
    res.vary = function(field) {
      if (!field || Array.isArray(field) && !field.length) {
        deprecate3("res.vary(): Provide a field name");
        return this;
      }
      vary(this, field);
      return this;
    };
    res.render = function render3(view, options, callback) {
      var app = this.req.app;
      var done = callback;
      var opts = options || {};
      var req = this.req;
      var self2 = this;
      if (typeof options === "function") {
        done = options;
        opts = {};
      }
      opts._locals = self2.locals;
      done = done || function(err, str2) {
        if (err) return req.next(err);
        self2.send(str2);
      };
      app.render(view, opts, done);
    };
    function sendfile(res2, file, options, callback) {
      var done = false;
      var streaming;
      function onaborted() {
        if (done) return;
        done = true;
        var err = new Error("Request aborted");
        err.code = "ECONNABORTED";
        callback(err);
      }
      function ondirectory() {
        if (done) return;
        done = true;
        var err = new Error("EISDIR, read");
        err.code = "EISDIR";
        callback(err);
      }
      function onerror(err) {
        if (done) return;
        done = true;
        callback(err);
      }
      function onend() {
        if (done) return;
        done = true;
        callback();
      }
      function onfile() {
        streaming = false;
      }
      function onfinish(err) {
        if (err && err.code === "ECONNRESET") return onaborted();
        if (err) return onerror(err);
        if (done) return;
        setImmediate(function() {
          if (streaming !== false && !done) {
            onaborted();
            return;
          }
          if (done) return;
          done = true;
          callback();
        });
      }
      function onstream() {
        streaming = true;
      }
      file.on("directory", ondirectory);
      file.on("end", onend);
      file.on("error", onerror);
      file.on("file", onfile);
      file.on("stream", onstream);
      onFinished(res2, onfinish);
      if (options.headers) {
        file.on("headers", function headers(res3) {
          var obj = options.headers;
          var keys2 = Object.keys(obj);
          for (var i2 = 0; i2 < keys2.length; i2++) {
            var k = keys2[i2];
            res3.setHeader(k, obj[k]);
          }
        });
      }
      file.pipe(res2);
    }
    function stringify4(value, replacer, spaces, escape5) {
      var json2 = replacer || spaces ? JSON.stringify(value, replacer, spaces) : JSON.stringify(value);
      if (escape5 && typeof json2 === "string") {
        json2 = json2.replace(/[<>&]/g, function(c) {
          switch (c.charCodeAt(0)) {
            case 60:
              return "\\u003c";
            case 62:
              return "\\u003e";
            case 38:
              return "\\u0026";
            /* istanbul ignore next: unreachable default */
            default:
              return c;
          }
        });
      }
      return json2;
    }
  }
});

// ../../node_modules/serve-static/index.js
var require_serve_static = __commonJS({
  "../../node_modules/serve-static/index.js"(exports2, module2) {
    "use strict";
    var encodeUrl = require_encodeurl();
    var escapeHtml4 = require_escape_html();
    var parseUrl = require_parseurl();
    var resolve9 = require("path").resolve;
    var send = require_send();
    var url = require("url");
    module2.exports = serveStatic;
    module2.exports.mime = send.mime;
    function serveStatic(root6, options) {
      if (!root6) {
        throw new TypeError("root path required");
      }
      if (typeof root6 !== "string") {
        throw new TypeError("root path must be a string");
      }
      var opts = Object.create(options || null);
      var fallthrough = opts.fallthrough !== false;
      var redirect = opts.redirect !== false;
      var setHeaders = opts.setHeaders;
      if (setHeaders && typeof setHeaders !== "function") {
        throw new TypeError("option setHeaders must be function");
      }
      opts.maxage = opts.maxage || opts.maxAge || 0;
      opts.root = resolve9(root6);
      var onDirectory = redirect ? createRedirectDirectoryListener() : createNotFoundDirectoryListener();
      return function serveStatic2(req, res, next) {
        if (req.method !== "GET" && req.method !== "HEAD") {
          if (fallthrough) {
            return next();
          }
          res.statusCode = 405;
          res.setHeader("Allow", "GET, HEAD");
          res.setHeader("Content-Length", "0");
          res.end();
          return;
        }
        var forwardError = !fallthrough;
        var originalUrl = parseUrl.original(req);
        var path45 = parseUrl(req).pathname;
        if (path45 === "/" && originalUrl.pathname.substr(-1) !== "/") {
          path45 = "";
        }
        var stream3 = send(req, path45, opts);
        stream3.on("directory", onDirectory);
        if (setHeaders) {
          stream3.on("headers", setHeaders);
        }
        if (fallthrough) {
          stream3.on("file", function onFile() {
            forwardError = true;
          });
        }
        stream3.on("error", function error(err) {
          if (forwardError || !(err.statusCode < 500)) {
            next(err);
            return;
          }
          next();
        });
        stream3.pipe(res);
      };
    }
    function collapseLeadingSlashes(str2) {
      for (var i2 = 0; i2 < str2.length; i2++) {
        if (str2.charCodeAt(i2) !== 47) {
          break;
        }
      }
      return i2 > 1 ? "/" + str2.substr(i2) : str2;
    }
    function createHtmlDocument(title, body3) {
      return '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>' + title + "</title>\n</head>\n<body>\n<pre>" + body3 + "</pre>\n</body>\n</html>\n";
    }
    function createNotFoundDirectoryListener() {
      return function notFound() {
        this.error(404);
      };
    }
    function createRedirectDirectoryListener() {
      return function redirect(res) {
        if (this.hasTrailingSlash()) {
          this.error(404);
          return;
        }
        var originalUrl = parseUrl.original(this.req);
        originalUrl.path = null;
        originalUrl.pathname = collapseLeadingSlashes(originalUrl.pathname + "/");
        var loc = encodeUrl(url.format(originalUrl));
        var doc = createHtmlDocument("Redirecting", "Redirecting to " + escapeHtml4(loc));
        res.statusCode = 301;
        res.setHeader("Content-Type", "text/html; charset=UTF-8");
        res.setHeader("Content-Length", Buffer.byteLength(doc));
        res.setHeader("Content-Security-Policy", "default-src 'none'");
        res.setHeader("X-Content-Type-Options", "nosniff");
        res.setHeader("Location", loc);
        res.end(doc);
      };
    }
  }
});

// ../../node_modules/express/lib/express.js
var require_express = __commonJS({
  "../../node_modules/express/lib/express.js"(exports2, module2) {
    "use strict";
    var bodyParser = require_body_parser();
    var EventEmitter4 = require("events").EventEmitter;
    var mixin = require_merge_descriptors();
    var proto9 = require_application();
    var Route = require_route2();
    var Router = require_router();
    var req = require_request();
    var res = require_response();
    exports2 = module2.exports = createApplication;
    function createApplication() {
      var app = function(req2, res2, next) {
        app.handle(req2, res2, next);
      };
      mixin(app, EventEmitter4.prototype, false);
      mixin(app, proto9, false);
      app.request = Object.create(req, {
        app: { configurable: true, enumerable: true, writable: true, value: app }
      });
      app.response = Object.create(res, {
        app: { configurable: true, enumerable: true, writable: true, value: app }
      });
      app.init();
      return app;
    }
    exports2.application = proto9;
    exports2.request = req;
    exports2.response = res;
    exports2.Route = Route;
    exports2.Router = Router;
    exports2.json = bodyParser.json;
    exports2.query = require_query();
    exports2.raw = bodyParser.raw;
    exports2.static = require_serve_static();
    exports2.text = bodyParser.text;
    exports2.urlencoded = bodyParser.urlencoded;
    var removedMiddlewares = [
      "bodyParser",
      "compress",
      "cookieSession",
      "session",
      "logger",
      "cookieParser",
      "favicon",
      "responseTime",
      "errorHandler",
      "timeout",
      "methodOverride",
      "vhost",
      "csrf",
      "directory",
      "limit",
      "multipart",
      "staticCache"
    ];
    removedMiddlewares.forEach(function(name3) {
      Object.defineProperty(exports2, name3, {
        get: function() {
          throw new Error("Most middleware (like " + name3 + ") is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.");
        },
        configurable: true
      });
    });
  }
});

// ../../node_modules/express/index.js
var require_express2 = __commonJS({
  "../../node_modules/express/index.js"(exports2, module2) {
    "use strict";
    module2.exports = require_express();
  }
});

// ../../node_modules/ws/lib/stream.js
var require_stream = __commonJS({
  "../../node_modules/ws/lib/stream.js"(exports2, module2) {
    "use strict";
    var { Duplex: Duplex2 } = require("stream");
    function emitClose(stream3) {
      stream3.emit("close");
    }
    function duplexOnEnd() {
      if (!this.destroyed && this._writableState.finished) {
        this.destroy();
      }
    }
    function duplexOnError(err) {
      this.removeListener("error", duplexOnError);
      this.destroy();
      if (this.listenerCount("error") === 0) {
        this.emit("error", err);
      }
    }
    function createWebSocketStream2(ws, options) {
      let terminateOnDestroy = true;
      const duplex = new Duplex2({
        ...options,
        autoDestroy: false,
        emitClose: false,
        objectMode: false,
        writableObjectMode: false
      });
      ws.on("message", function message(msg, isBinary2) {
        const data = !isBinary2 && duplex._readableState.objectMode ? msg.toString() : msg;
        if (!duplex.push(data)) ws.pause();
      });
      ws.once("error", function error(err) {
        if (duplex.destroyed) return;
        terminateOnDestroy = false;
        duplex.destroy(err);
      });
      ws.once("close", function close2() {
        if (duplex.destroyed) return;
        duplex.push(null);
      });
      duplex._destroy = function(err, callback) {
        if (ws.readyState === ws.CLOSED) {
          callback(err);
          process.nextTick(emitClose, duplex);
          return;
        }
        let called = false;
        ws.once("error", function error(err2) {
          called = true;
          callback(err2);
        });
        ws.once("close", function close2() {
          if (!called) callback(err);
          process.nextTick(emitClose, duplex);
        });
        if (terminateOnDestroy) ws.terminate();
      };
      duplex._final = function(callback) {
        if (ws.readyState === ws.CONNECTING) {
          ws.once("open", function open2() {
            duplex._final(callback);
          });
          return;
        }
        if (ws._socket === null) return;
        if (ws._socket._writableState.finished) {
          callback();
          if (duplex._readableState.endEmitted) duplex.destroy();
        } else {
          ws._socket.once("finish", function finish() {
            callback();
          });
          ws.close();
        }
      };
      duplex._read = function() {
        if (ws.isPaused) ws.resume();
      };
      duplex._write = function(chunk, encoding, callback) {
        if (ws.readyState === ws.CONNECTING) {
          ws.once("open", function open2() {
            duplex._write(chunk, encoding, callback);
          });
          return;
        }
        ws.send(chunk, callback);
      };
      duplex.on("end", duplexOnEnd);
      duplex.on("error", duplexOnError);
      return duplex;
    }
    module2.exports = createWebSocketStream2;
  }
});

// ../../node_modules/ws/lib/constants.js
var require_constants6 = __commonJS({
  "../../node_modules/ws/lib/constants.js"(exports2, module2) {
    "use strict";
    var BINARY_TYPES = ["nodebuffer", "arraybuffer", "fragments"];
    var hasBlob = typeof Blob !== "undefined";
    if (hasBlob) BINARY_TYPES.push("blob");
    module2.exports = {
      BINARY_TYPES,
      EMPTY_BUFFER: Buffer.alloc(0),
      GUID: "258EAFA5-E914-47DA-95CA-C5AB0DC85B11",
      hasBlob,
      kForOnEventAttribute: Symbol("kIsForOnEventAttribute"),
      kListener: Symbol("kListener"),
      kStatusCode: Symbol("status-code"),
      kWebSocket: Symbol("websocket"),
      NOOP: () => {
      }
    };
  }
});

// ../../node_modules/ws/lib/buffer-util.js
var require_buffer_util = __commonJS({
  "../../node_modules/ws/lib/buffer-util.js"(exports2, module2) {
    "use strict";
    var { EMPTY_BUFFER } = require_constants6();
    var FastBuffer = Buffer[Symbol.species];
    function concat2(list6, totalLength) {
      if (list6.length === 0) return EMPTY_BUFFER;
      if (list6.length === 1) return list6[0];
      const target = Buffer.allocUnsafe(totalLength);
      let offset = 0;
      for (let i2 = 0; i2 < list6.length; i2++) {
        const buf = list6[i2];
        target.set(buf, offset);
        offset += buf.length;
      }
      if (offset < totalLength) {
        return new FastBuffer(target.buffer, target.byteOffset, offset);
      }
      return target;
    }
    function _mask(source2, mask2, output2, offset, length) {
      for (let i2 = 0; i2 < length; i2++) {
        output2[offset + i2] = source2[i2] ^ mask2[i2 & 3];
      }
    }
    function _unmask(buffer2, mask2) {
      for (let i2 = 0; i2 < buffer2.length; i2++) {
        buffer2[i2] ^= mask2[i2 & 3];
      }
    }
    function toArrayBuffer(buf) {
      if (buf.length === buf.buffer.byteLength) {
        return buf.buffer;
      }
      return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);
    }
    function toBuffer(data) {
      toBuffer.readOnly = true;
      if (Buffer.isBuffer(data)) return data;
      let buf;
      if (data instanceof ArrayBuffer) {
        buf = new FastBuffer(data);
      } else if (ArrayBuffer.isView(data)) {
        buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);
      } else {
        buf = Buffer.from(data);
        toBuffer.readOnly = false;
      }
      return buf;
    }
    module2.exports = {
      concat: concat2,
      mask: _mask,
      toArrayBuffer,
      toBuffer,
      unmask: _unmask
    };
    if (!process.env.WS_NO_BUFFER_UTIL) {
      try {
        const bufferUtil = require("bufferutil");
        module2.exports.mask = function(source2, mask2, output2, offset, length) {
          if (length < 48) _mask(source2, mask2, output2, offset, length);
          else bufferUtil.mask(source2, mask2, output2, offset, length);
        };
        module2.exports.unmask = function(buffer2, mask2) {
          if (buffer2.length < 32) _unmask(buffer2, mask2);
          else bufferUtil.unmask(buffer2, mask2);
        };
      } catch (e2) {
      }
    }
  }
});

// ../../node_modules/ws/lib/limiter.js
var require_limiter = __commonJS({
  "../../node_modules/ws/lib/limiter.js"(exports2, module2) {
    "use strict";
    var kDone = Symbol("kDone");
    var kRun = Symbol("kRun");
    var Limiter = class {
      /**
       * Creates a new `Limiter`.
       *
       * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed
       *     to run concurrently
       */
      constructor(concurrency) {
        this[kDone] = () => {
          this.pending--;
          this[kRun]();
        };
        this.concurrency = concurrency || Infinity;
        this.jobs = [];
        this.pending = 0;
      }
      /**
       * Adds a job to the queue.
       *
       * @param {Function} job The job to run
       * @public
       */
      add(job) {
        this.jobs.push(job);
        this[kRun]();
      }
      /**
       * Removes a job from the queue and runs it if possible.
       *
       * @private
       */
      [kRun]() {
        if (this.pending === this.concurrency) return;
        if (this.jobs.length) {
          const job = this.jobs.shift();
          this.pending++;
          job(this[kDone]);
        }
      }
    };
    module2.exports = Limiter;
  }
});

// ../../node_modules/ws/lib/permessage-deflate.js
var require_permessage_deflate = __commonJS({
  "../../node_modules/ws/lib/permessage-deflate.js"(exports2, module2) {
    "use strict";
    var zlib3 = require("zlib");
    var bufferUtil = require_buffer_util();
    var Limiter = require_limiter();
    var { kStatusCode } = require_constants6();
    var FastBuffer = Buffer[Symbol.species];
    var TRAILER = Buffer.from([0, 0, 255, 255]);
    var kPerMessageDeflate = Symbol("permessage-deflate");
    var kTotalLength = Symbol("total-length");
    var kCallback = Symbol("callback");
    var kBuffers = Symbol("buffers");
    var kError = Symbol("error");
    var zlibLimiter;
    var PerMessageDeflate = class {
      /**
       * Creates a PerMessageDeflate instance.
       *
       * @param {Object} [options] Configuration options
       * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support
       *     for, or request, a custom client window size
       * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/
       *     acknowledge disabling of client context takeover
       * @param {Number} [options.concurrencyLimit=10] The number of concurrent
       *     calls to zlib
       * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the
       *     use of a custom server window size
       * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept
       *     disabling of server context takeover
       * @param {Number} [options.threshold=1024] Size (in bytes) below which
       *     messages should not be compressed if context takeover is disabled
       * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on
       *     deflate
       * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on
       *     inflate
       * @param {Boolean} [isServer=false] Create the instance in either server or
       *     client mode
       * @param {Number} [maxPayload=0] The maximum allowed message length
       */
      constructor(options, isServer, maxPayload) {
        this._maxPayload = maxPayload | 0;
        this._options = options || {};
        this._threshold = this._options.threshold !== void 0 ? this._options.threshold : 1024;
        this._isServer = !!isServer;
        this._deflate = null;
        this._inflate = null;
        this.params = null;
        if (!zlibLimiter) {
          const concurrency = this._options.concurrencyLimit !== void 0 ? this._options.concurrencyLimit : 10;
          zlibLimiter = new Limiter(concurrency);
        }
      }
      /**
       * @type {String}
       */
      static get extensionName() {
        return "permessage-deflate";
      }
      /**
       * Create an extension negotiation offer.
       *
       * @return {Object} Extension parameters
       * @public
       */
      offer() {
        const params = {};
        if (this._options.serverNoContextTakeover) {
          params.server_no_context_takeover = true;
        }
        if (this._options.clientNoContextTakeover) {
          params.client_no_context_takeover = true;
        }
        if (this._options.serverMaxWindowBits) {
          params.server_max_window_bits = this._options.serverMaxWindowBits;
        }
        if (this._options.clientMaxWindowBits) {
          params.client_max_window_bits = this._options.clientMaxWindowBits;
        } else if (this._options.clientMaxWindowBits == null) {
          params.client_max_window_bits = true;
        }
        return params;
      }
      /**
       * Accept an extension negotiation offer/response.
       *
       * @param {Array} configurations The extension negotiation offers/reponse
       * @return {Object} Accepted configuration
       * @public
       */
      accept(configurations) {
        configurations = this.normalizeParams(configurations);
        this.params = this._isServer ? this.acceptAsServer(configurations) : this.acceptAsClient(configurations);
        return this.params;
      }
      /**
       * Releases all resources used by the extension.
       *
       * @public
       */
      cleanup() {
        if (this._inflate) {
          this._inflate.close();
          this._inflate = null;
        }
        if (this._deflate) {
          const callback = this._deflate[kCallback];
          this._deflate.close();
          this._deflate = null;
          if (callback) {
            callback(
              new Error(
                "The deflate stream was closed while data was being processed"
              )
            );
          }
        }
      }
      /**
       *  Accept an extension negotiation offer.
       *
       * @param {Array} offers The extension negotiation offers
       * @return {Object} Accepted configuration
       * @private
       */
      acceptAsServer(offers) {
        const opts = this._options;
        const accepted = offers.find((params) => {
          if (opts.serverNoContextTakeover === false && params.server_no_context_takeover || params.server_max_window_bits && (opts.serverMaxWindowBits === false || typeof opts.serverMaxWindowBits === "number" && opts.serverMaxWindowBits > params.server_max_window_bits) || typeof opts.clientMaxWindowBits === "number" && !params.client_max_window_bits) {
            return false;
          }
          return true;
        });
        if (!accepted) {
          throw new Error("None of the extension offers can be accepted");
        }
        if (opts.serverNoContextTakeover) {
          accepted.server_no_context_takeover = true;
        }
        if (opts.clientNoContextTakeover) {
          accepted.client_no_context_takeover = true;
        }
        if (typeof opts.serverMaxWindowBits === "number") {
          accepted.server_max_window_bits = opts.serverMaxWindowBits;
        }
        if (typeof opts.clientMaxWindowBits === "number") {
          accepted.client_max_window_bits = opts.clientMaxWindowBits;
        } else if (accepted.client_max_window_bits === true || opts.clientMaxWindowBits === false) {
          delete accepted.client_max_window_bits;
        }
        return accepted;
      }
      /**
       * Accept the extension negotiation response.
       *
       * @param {Array} response The extension negotiation response
       * @return {Object} Accepted configuration
       * @private
       */
      acceptAsClient(response) {
        const params = response[0];
        if (this._options.clientNoContextTakeover === false && params.client_no_context_takeover) {
          throw new Error('Unexpected parameter "client_no_context_takeover"');
        }
        if (!params.client_max_window_bits) {
          if (typeof this._options.clientMaxWindowBits === "number") {
            params.client_max_window_bits = this._options.clientMaxWindowBits;
          }
        } else if (this._options.clientMaxWindowBits === false || typeof this._options.clientMaxWindowBits === "number" && params.client_max_window_bits > this._options.clientMaxWindowBits) {
          throw new Error(
            'Unexpected or invalid parameter "client_max_window_bits"'
          );
        }
        return params;
      }
      /**
       * Normalize parameters.
       *
       * @param {Array} configurations The extension negotiation offers/reponse
       * @return {Array} The offers/response with normalized parameters
       * @private
       */
      normalizeParams(configurations) {
        configurations.forEach((params) => {
          Object.keys(params).forEach((key2) => {
            let value = params[key2];
            if (value.length > 1) {
              throw new Error(`Parameter "${key2}" must have only a single value`);
            }
            value = value[0];
            if (key2 === "client_max_window_bits") {
              if (value !== true) {
                const num = +value;
                if (!Number.isInteger(num) || num < 8 || num > 15) {
                  throw new TypeError(
                    `Invalid value for parameter "${key2}": ${value}`
                  );
                }
                value = num;
              } else if (!this._isServer) {
                throw new TypeError(
                  `Invalid value for parameter "${key2}": ${value}`
                );
              }
            } else if (key2 === "server_max_window_bits") {
              const num = +value;
              if (!Number.isInteger(num) || num < 8 || num > 15) {
                throw new TypeError(
                  `Invalid value for parameter "${key2}": ${value}`
                );
              }
              value = num;
            } else if (key2 === "client_no_context_takeover" || key2 === "server_no_context_takeover") {
              if (value !== true) {
                throw new TypeError(
                  `Invalid value for parameter "${key2}": ${value}`
                );
              }
            } else {
              throw new Error(`Unknown parameter "${key2}"`);
            }
            params[key2] = value;
          });
        });
        return configurations;
      }
      /**
       * Decompress data. Concurrency limited.
       *
       * @param {Buffer} data Compressed data
       * @param {Boolean} fin Specifies whether or not this is the last fragment
       * @param {Function} callback Callback
       * @public
       */
      decompress(data, fin, callback) {
        zlibLimiter.add((done) => {
          this._decompress(data, fin, (err, result) => {
            done();
            callback(err, result);
          });
        });
      }
      /**
       * Compress data. Concurrency limited.
       *
       * @param {(Buffer|String)} data Data to compress
       * @param {Boolean} fin Specifies whether or not this is the last fragment
       * @param {Function} callback Callback
       * @public
       */
      compress(data, fin, callback) {
        zlibLimiter.add((done) => {
          this._compress(data, fin, (err, result) => {
            done();
            callback(err, result);
          });
        });
      }
      /**
       * Decompress data.
       *
       * @param {Buffer} data Compressed data
       * @param {Boolean} fin Specifies whether or not this is the last fragment
       * @param {Function} callback Callback
       * @private
       */
      _decompress(data, fin, callback) {
        const endpoint = this._isServer ? "client" : "server";
        if (!this._inflate) {
          const key2 = `${endpoint}_max_window_bits`;
          const windowBits = typeof this.params[key2] !== "number" ? zlib3.Z_DEFAULT_WINDOWBITS : this.params[key2];
          this._inflate = zlib3.createInflateRaw({
            ...this._options.zlibInflateOptions,
            windowBits
          });
          this._inflate[kPerMessageDeflate] = this;
          this._inflate[kTotalLength] = 0;
          this._inflate[kBuffers] = [];
          this._inflate.on("error", inflateOnError);
          this._inflate.on("data", inflateOnData);
        }
        this._inflate[kCallback] = callback;
        this._inflate.write(data);
        if (fin) this._inflate.write(TRAILER);
        this._inflate.flush(() => {
          const err = this._inflate[kError];
          if (err) {
            this._inflate.close();
            this._inflate = null;
            callback(err);
            return;
          }
          const data2 = bufferUtil.concat(
            this._inflate[kBuffers],
            this._inflate[kTotalLength]
          );
          if (this._inflate._readableState.endEmitted) {
            this._inflate.close();
            this._inflate = null;
          } else {
            this._inflate[kTotalLength] = 0;
            this._inflate[kBuffers] = [];
            if (fin && this.params[`${endpoint}_no_context_takeover`]) {
              this._inflate.reset();
            }
          }
          callback(null, data2);
        });
      }
      /**
       * Compress data.
       *
       * @param {(Buffer|String)} data Data to compress
       * @param {Boolean} fin Specifies whether or not this is the last fragment
       * @param {Function} callback Callback
       * @private
       */
      _compress(data, fin, callback) {
        const endpoint = this._isServer ? "server" : "client";
        if (!this._deflate) {
          const key2 = `${endpoint}_max_window_bits`;
          const windowBits = typeof this.params[key2] !== "number" ? zlib3.Z_DEFAULT_WINDOWBITS : this.params[key2];
          this._deflate = zlib3.createDeflateRaw({
            ...this._options.zlibDeflateOptions,
            windowBits
          });
          this._deflate[kTotalLength] = 0;
          this._deflate[kBuffers] = [];
          this._deflate.on("data", deflateOnData);
        }
        this._deflate[kCallback] = callback;
        this._deflate.write(data);
        this._deflate.flush(zlib3.Z_SYNC_FLUSH, () => {
          if (!this._deflate) {
            return;
          }
          let data2 = bufferUtil.concat(
            this._deflate[kBuffers],
            this._deflate[kTotalLength]
          );
          if (fin) {
            data2 = new FastBuffer(data2.buffer, data2.byteOffset, data2.length - 4);
          }
          this._deflate[kCallback] = null;
          this._deflate[kTotalLength] = 0;
          this._deflate[kBuffers] = [];
          if (fin && this.params[`${endpoint}_no_context_takeover`]) {
            this._deflate.reset();
          }
          callback(null, data2);
        });
      }
    };
    module2.exports = PerMessageDeflate;
    function deflateOnData(chunk) {
      this[kBuffers].push(chunk);
      this[kTotalLength] += chunk.length;
    }
    function inflateOnData(chunk) {
      this[kTotalLength] += chunk.length;
      if (this[kPerMessageDeflate]._maxPayload < 1 || this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload) {
        this[kBuffers].push(chunk);
        return;
      }
      this[kError] = new RangeError("Max payload size exceeded");
      this[kError].code = "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH";
      this[kError][kStatusCode] = 1009;
      this.removeListener("data", inflateOnData);
      this.reset();
    }
    function inflateOnError(err) {
      this[kPerMessageDeflate]._inflate = null;
      err[kStatusCode] = 1007;
      this[kCallback](err);
    }
  }
});

// ../../node_modules/ws/lib/validation.js
var require_validation = __commonJS({
  "../../node_modules/ws/lib/validation.js"(exports2, module2) {
    "use strict";
    var { isUtf8 } = require("buffer");
    var { hasBlob } = require_constants6();
    var tokenChars = [
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      // 0 - 15
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      // 16 - 31
      0,
      1,
      0,
      1,
      1,
      1,
      1,
      1,
      0,
      0,
      1,
      1,
      0,
      1,
      1,
      0,
      // 32 - 47
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      0,
      0,
      0,
      0,
      0,
      0,
      // 48 - 63
      0,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      // 64 - 79
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      0,
      0,
      0,
      1,
      1,
      // 80 - 95
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      // 96 - 111
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      0,
      1,
      0,
      1,
      0
      // 112 - 127
    ];
    function isValidStatusCode(code7) {
      return code7 >= 1e3 && code7 <= 1014 && code7 !== 1004 && code7 !== 1005 && code7 !== 1006 || code7 >= 3e3 && code7 <= 4999;
    }
    function _isValidUTF8(buf) {
      const len = buf.length;
      let i2 = 0;
      while (i2 < len) {
        if ((buf[i2] & 128) === 0) {
          i2++;
        } else if ((buf[i2] & 224) === 192) {
          if (i2 + 1 === len || (buf[i2 + 1] & 192) !== 128 || (buf[i2] & 254) === 192) {
            return false;
          }
          i2 += 2;
        } else if ((buf[i2] & 240) === 224) {
          if (i2 + 2 >= len || (buf[i2 + 1] & 192) !== 128 || (buf[i2 + 2] & 192) !== 128 || buf[i2] === 224 && (buf[i2 + 1] & 224) === 128 || // Overlong
          buf[i2] === 237 && (buf[i2 + 1] & 224) === 160) {
            return false;
          }
          i2 += 3;
        } else if ((buf[i2] & 248) === 240) {
          if (i2 + 3 >= len || (buf[i2 + 1] & 192) !== 128 || (buf[i2 + 2] & 192) !== 128 || (buf[i2 + 3] & 192) !== 128 || buf[i2] === 240 && (buf[i2 + 1] & 240) === 128 || // Overlong
          buf[i2] === 244 && buf[i2 + 1] > 143 || buf[i2] > 244) {
            return false;
          }
          i2 += 4;
        } else {
          return false;
        }
      }
      return true;
    }
    function isBlob2(value) {
      return hasBlob && typeof value === "object" && typeof value.arrayBuffer === "function" && typeof value.type === "string" && typeof value.stream === "function" && (value[Symbol.toStringTag] === "Blob" || value[Symbol.toStringTag] === "File");
    }
    module2.exports = {
      isBlob: isBlob2,
      isValidStatusCode,
      isValidUTF8: _isValidUTF8,
      tokenChars
    };
    if (isUtf8) {
      module2.exports.isValidUTF8 = function(buf) {
        return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);
      };
    } else if (!process.env.WS_NO_UTF_8_VALIDATE) {
      try {
        const isValidUTF8 = require("utf-8-validate");
        module2.exports.isValidUTF8 = function(buf) {
          return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);
        };
      } catch (e2) {
      }
    }
  }
});

// ../../node_modules/ws/lib/receiver.js
var require_receiver = __commonJS({
  "../../node_modules/ws/lib/receiver.js"(exports2, module2) {
    "use strict";
    var { Writable: Writable2 } = require("stream");
    var PerMessageDeflate = require_permessage_deflate();
    var {
      BINARY_TYPES,
      EMPTY_BUFFER,
      kStatusCode,
      kWebSocket
    } = require_constants6();
    var { concat: concat2, toArrayBuffer, unmask } = require_buffer_util();
    var { isValidStatusCode, isValidUTF8 } = require_validation();
    var FastBuffer = Buffer[Symbol.species];
    var GET_INFO = 0;
    var GET_PAYLOAD_LENGTH_16 = 1;
    var GET_PAYLOAD_LENGTH_64 = 2;
    var GET_MASK = 3;
    var GET_DATA = 4;
    var INFLATING = 5;
    var DEFER_EVENT = 6;
    var Receiver2 = class extends Writable2 {
      /**
       * Creates a Receiver instance.
       *
       * @param {Object} [options] Options object
       * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether
       *     any of the `'message'`, `'ping'`, and `'pong'` events can be emitted
       *     multiple times in the same tick
       * @param {String} [options.binaryType=nodebuffer] The type for binary data
       * @param {Object} [options.extensions] An object containing the negotiated
       *     extensions
       * @param {Boolean} [options.isServer=false] Specifies whether to operate in
       *     client or server mode
       * @param {Number} [options.maxPayload=0] The maximum allowed message length
       * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or
       *     not to skip UTF-8 validation for text and close messages
       */
      constructor(options = {}) {
        super();
        this._allowSynchronousEvents = options.allowSynchronousEvents !== void 0 ? options.allowSynchronousEvents : true;
        this._binaryType = options.binaryType || BINARY_TYPES[0];
        this._extensions = options.extensions || {};
        this._isServer = !!options.isServer;
        this._maxPayload = options.maxPayload | 0;
        this._skipUTF8Validation = !!options.skipUTF8Validation;
        this[kWebSocket] = void 0;
        this._bufferedBytes = 0;
        this._buffers = [];
        this._compressed = false;
        this._payloadLength = 0;
        this._mask = void 0;
        this._fragmented = 0;
        this._masked = false;
        this._fin = false;
        this._opcode = 0;
        this._totalPayloadLength = 0;
        this._messageLength = 0;
        this._fragments = [];
        this._errored = false;
        this._loop = false;
        this._state = GET_INFO;
      }
      /**
       * Implements `Writable.prototype._write()`.
       *
       * @param {Buffer} chunk The chunk of data to write
       * @param {String} encoding The character encoding of `chunk`
       * @param {Function} cb Callback
       * @private
       */
      _write(chunk, encoding, cb) {
        if (this._opcode === 8 && this._state == GET_INFO) return cb();
        this._bufferedBytes += chunk.length;
        this._buffers.push(chunk);
        this.startLoop(cb);
      }
      /**
       * Consumes `n` bytes from the buffered data.
       *
       * @param {Number} n The number of bytes to consume
       * @return {Buffer} The consumed bytes
       * @private
       */
      consume(n) {
        this._bufferedBytes -= n;
        if (n === this._buffers[0].length) return this._buffers.shift();
        if (n < this._buffers[0].length) {
          const buf = this._buffers[0];
          this._buffers[0] = new FastBuffer(
            buf.buffer,
            buf.byteOffset + n,
            buf.length - n
          );
          return new FastBuffer(buf.buffer, buf.byteOffset, n);
        }
        const dst = Buffer.allocUnsafe(n);
        do {
          const buf = this._buffers[0];
          const offset = dst.length - n;
          if (n >= buf.length) {
            dst.set(this._buffers.shift(), offset);
          } else {
            dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);
            this._buffers[0] = new FastBuffer(
              buf.buffer,
              buf.byteOffset + n,
              buf.length - n
            );
          }
          n -= buf.length;
        } while (n > 0);
        return dst;
      }
      /**
       * Starts the parsing loop.
       *
       * @param {Function} cb Callback
       * @private
       */
      startLoop(cb) {
        this._loop = true;
        do {
          switch (this._state) {
            case GET_INFO:
              this.getInfo(cb);
              break;
            case GET_PAYLOAD_LENGTH_16:
              this.getPayloadLength16(cb);
              break;
            case GET_PAYLOAD_LENGTH_64:
              this.getPayloadLength64(cb);
              break;
            case GET_MASK:
              this.getMask();
              break;
            case GET_DATA:
              this.getData(cb);
              break;
            case INFLATING:
            case DEFER_EVENT:
              this._loop = false;
              return;
          }
        } while (this._loop);
        if (!this._errored) cb();
      }
      /**
       * Reads the first two bytes of a frame.
       *
       * @param {Function} cb Callback
       * @private
       */
      getInfo(cb) {
        if (this._bufferedBytes < 2) {
          this._loop = false;
          return;
        }
        const buf = this.consume(2);
        if ((buf[0] & 48) !== 0) {
          const error = this.createError(
            RangeError,
            "RSV2 and RSV3 must be clear",
            true,
            1002,
            "WS_ERR_UNEXPECTED_RSV_2_3"
          );
          cb(error);
          return;
        }
        const compressed = (buf[0] & 64) === 64;
        if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {
          const error = this.createError(
            RangeError,
            "RSV1 must be clear",
            true,
            1002,
            "WS_ERR_UNEXPECTED_RSV_1"
          );
          cb(error);
          return;
        }
        this._fin = (buf[0] & 128) === 128;
        this._opcode = buf[0] & 15;
        this._payloadLength = buf[1] & 127;
        if (this._opcode === 0) {
          if (compressed) {
            const error = this.createError(
              RangeError,
              "RSV1 must be clear",
              true,
              1002,
              "WS_ERR_UNEXPECTED_RSV_1"
            );
            cb(error);
            return;
          }
          if (!this._fragmented) {
            const error = this.createError(
              RangeError,
              "invalid opcode 0",
              true,
              1002,
              "WS_ERR_INVALID_OPCODE"
            );
            cb(error);
            return;
          }
          this._opcode = this._fragmented;
        } else if (this._opcode === 1 || this._opcode === 2) {
          if (this._fragmented) {
            const error = this.createError(
              RangeError,
              `invalid opcode ${this._opcode}`,
              true,
              1002,
              "WS_ERR_INVALID_OPCODE"
            );
            cb(error);
            return;
          }
          this._compressed = compressed;
        } else if (this._opcode > 7 && this._opcode < 11) {
          if (!this._fin) {
            const error = this.createError(
              RangeError,
              "FIN must be set",
              true,
              1002,
              "WS_ERR_EXPECTED_FIN"
            );
            cb(error);
            return;
          }
          if (compressed) {
            const error = this.createError(
              RangeError,
              "RSV1 must be clear",
              true,
              1002,
              "WS_ERR_UNEXPECTED_RSV_1"
            );
            cb(error);
            return;
          }
          if (this._payloadLength > 125 || this._opcode === 8 && this._payloadLength === 1) {
            const error = this.createError(
              RangeError,
              `invalid payload length ${this._payloadLength}`,
              true,
              1002,
              "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"
            );
            cb(error);
            return;
          }
        } else {
          const error = this.createError(
            RangeError,
            `invalid opcode ${this._opcode}`,
            true,
            1002,
            "WS_ERR_INVALID_OPCODE"
          );
          cb(error);
          return;
        }
        if (!this._fin && !this._fragmented) this._fragmented = this._opcode;
        this._masked = (buf[1] & 128) === 128;
        if (this._isServer) {
          if (!this._masked) {
            const error = this.createError(
              RangeError,
              "MASK must be set",
              true,
              1002,
              "WS_ERR_EXPECTED_MASK"
            );
            cb(error);
            return;
          }
        } else if (this._masked) {
          const error = this.createError(
            RangeError,
            "MASK must be clear",
            true,
            1002,
            "WS_ERR_UNEXPECTED_MASK"
          );
          cb(error);
          return;
        }
        if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;
        else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;
        else this.haveLength(cb);
      }
      /**
       * Gets extended payload length (7+16).
       *
       * @param {Function} cb Callback
       * @private
       */
      getPayloadLength16(cb) {
        if (this._bufferedBytes < 2) {
          this._loop = false;
          return;
        }
        this._payloadLength = this.consume(2).readUInt16BE(0);
        this.haveLength(cb);
      }
      /**
       * Gets extended payload length (7+64).
       *
       * @param {Function} cb Callback
       * @private
       */
      getPayloadLength64(cb) {
        if (this._bufferedBytes < 8) {
          this._loop = false;
          return;
        }
        const buf = this.consume(8);
        const num = buf.readUInt32BE(0);
        if (num > Math.pow(2, 53 - 32) - 1) {
          const error = this.createError(
            RangeError,
            "Unsupported WebSocket frame: payload length > 2^53 - 1",
            false,
            1009,
            "WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH"
          );
          cb(error);
          return;
        }
        this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);
        this.haveLength(cb);
      }
      /**
       * Payload length has been read.
       *
       * @param {Function} cb Callback
       * @private
       */
      haveLength(cb) {
        if (this._payloadLength && this._opcode < 8) {
          this._totalPayloadLength += this._payloadLength;
          if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {
            const error = this.createError(
              RangeError,
              "Max payload size exceeded",
              false,
              1009,
              "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"
            );
            cb(error);
            return;
          }
        }
        if (this._masked) this._state = GET_MASK;
        else this._state = GET_DATA;
      }
      /**
       * Reads mask bytes.
       *
       * @private
       */
      getMask() {
        if (this._bufferedBytes < 4) {
          this._loop = false;
          return;
        }
        this._mask = this.consume(4);
        this._state = GET_DATA;
      }
      /**
       * Reads data bytes.
       *
       * @param {Function} cb Callback
       * @private
       */
      getData(cb) {
        let data = EMPTY_BUFFER;
        if (this._payloadLength) {
          if (this._bufferedBytes < this._payloadLength) {
            this._loop = false;
            return;
          }
          data = this.consume(this._payloadLength);
          if (this._masked && (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0) {
            unmask(data, this._mask);
          }
        }
        if (this._opcode > 7) {
          this.controlMessage(data, cb);
          return;
        }
        if (this._compressed) {
          this._state = INFLATING;
          this.decompress(data, cb);
          return;
        }
        if (data.length) {
          this._messageLength = this._totalPayloadLength;
          this._fragments.push(data);
        }
        this.dataMessage(cb);
      }
      /**
       * Decompresses data.
       *
       * @param {Buffer} data Compressed data
       * @param {Function} cb Callback
       * @private
       */
      decompress(data, cb) {
        const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];
        perMessageDeflate.decompress(data, this._fin, (err, buf) => {
          if (err) return cb(err);
          if (buf.length) {
            this._messageLength += buf.length;
            if (this._messageLength > this._maxPayload && this._maxPayload > 0) {
              const error = this.createError(
                RangeError,
                "Max payload size exceeded",
                false,
                1009,
                "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"
              );
              cb(error);
              return;
            }
            this._fragments.push(buf);
          }
          this.dataMessage(cb);
          if (this._state === GET_INFO) this.startLoop(cb);
        });
      }
      /**
       * Handles a data message.
       *
       * @param {Function} cb Callback
       * @private
       */
      dataMessage(cb) {
        if (!this._fin) {
          this._state = GET_INFO;
          return;
        }
        const messageLength = this._messageLength;
        const fragments = this._fragments;
        this._totalPayloadLength = 0;
        this._messageLength = 0;
        this._fragmented = 0;
        this._fragments = [];
        if (this._opcode === 2) {
          let data;
          if (this._binaryType === "nodebuffer") {
            data = concat2(fragments, messageLength);
          } else if (this._binaryType === "arraybuffer") {
            data = toArrayBuffer(concat2(fragments, messageLength));
          } else if (this._binaryType === "blob") {
            data = new Blob(fragments);
          } else {
            data = fragments;
          }
          if (this._allowSynchronousEvents) {
            this.emit("message", data, true);
            this._state = GET_INFO;
          } else {
            this._state = DEFER_EVENT;
            setImmediate(() => {
              this.emit("message", data, true);
              this._state = GET_INFO;
              this.startLoop(cb);
            });
          }
        } else {
          const buf = concat2(fragments, messageLength);
          if (!this._skipUTF8Validation && !isValidUTF8(buf)) {
            const error = this.createError(
              Error,
              "invalid UTF-8 sequence",
              true,
              1007,
              "WS_ERR_INVALID_UTF8"
            );
            cb(error);
            return;
          }
          if (this._state === INFLATING || this._allowSynchronousEvents) {
            this.emit("message", buf, false);
            this._state = GET_INFO;
          } else {
            this._state = DEFER_EVENT;
            setImmediate(() => {
              this.emit("message", buf, false);
              this._state = GET_INFO;
              this.startLoop(cb);
            });
          }
        }
      }
      /**
       * Handles a control message.
       *
       * @param {Buffer} data Data to handle
       * @return {(Error|RangeError|undefined)} A possible error
       * @private
       */
      controlMessage(data, cb) {
        if (this._opcode === 8) {
          if (data.length === 0) {
            this._loop = false;
            this.emit("conclude", 1005, EMPTY_BUFFER);
            this.end();
          } else {
            const code7 = data.readUInt16BE(0);
            if (!isValidStatusCode(code7)) {
              const error = this.createError(
                RangeError,
                `invalid status code ${code7}`,
                true,
                1002,
                "WS_ERR_INVALID_CLOSE_CODE"
              );
              cb(error);
              return;
            }
            const buf = new FastBuffer(
              data.buffer,
              data.byteOffset + 2,
              data.length - 2
            );
            if (!this._skipUTF8Validation && !isValidUTF8(buf)) {
              const error = this.createError(
                Error,
                "invalid UTF-8 sequence",
                true,
                1007,
                "WS_ERR_INVALID_UTF8"
              );
              cb(error);
              return;
            }
            this._loop = false;
            this.emit("conclude", code7, buf);
            this.end();
          }
          this._state = GET_INFO;
          return;
        }
        if (this._allowSynchronousEvents) {
          this.emit(this._opcode === 9 ? "ping" : "pong", data);
          this._state = GET_INFO;
        } else {
          this._state = DEFER_EVENT;
          setImmediate(() => {
            this.emit(this._opcode === 9 ? "ping" : "pong", data);
            this._state = GET_INFO;
            this.startLoop(cb);
          });
        }
      }
      /**
       * Builds an error object.
       *
       * @param {function(new:Error|RangeError)} ErrorCtor The error constructor
       * @param {String} message The error message
       * @param {Boolean} prefix Specifies whether or not to add a default prefix to
       *     `message`
       * @param {Number} statusCode The status code
       * @param {String} errorCode The exposed error code
       * @return {(Error|RangeError)} The error
       * @private
       */
      createError(ErrorCtor, message, prefix2, statusCode, errorCode) {
        this._loop = false;
        this._errored = true;
        const err = new ErrorCtor(
          prefix2 ? `Invalid WebSocket frame: ${message}` : message
        );
        Error.captureStackTrace(err, this.createError);
        err.code = errorCode;
        err[kStatusCode] = statusCode;
        return err;
      }
    };
    module2.exports = Receiver2;
  }
});

// ../../node_modules/ws/lib/sender.js
var require_sender = __commonJS({
  "../../node_modules/ws/lib/sender.js"(exports2, module2) {
    "use strict";
    var { Duplex: Duplex2 } = require("stream");
    var { randomFillSync } = require("crypto");
    var PerMessageDeflate = require_permessage_deflate();
    var { EMPTY_BUFFER, kWebSocket, NOOP } = require_constants6();
    var { isBlob: isBlob2, isValidStatusCode } = require_validation();
    var { mask: applyMask, toBuffer } = require_buffer_util();
    var kByteLength = Symbol("kByteLength");
    var maskBuffer = Buffer.alloc(4);
    var RANDOM_POOL_SIZE = 8 * 1024;
    var randomPool;
    var randomPoolPointer = RANDOM_POOL_SIZE;
    var DEFAULT = 0;
    var DEFLATING = 1;
    var GET_BLOB_DATA = 2;
    var Sender2 = class _Sender {
      /**
       * Creates a Sender instance.
       *
       * @param {Duplex} socket The connection socket
       * @param {Object} [extensions] An object containing the negotiated extensions
       * @param {Function} [generateMask] The function used to generate the masking
       *     key
       */
      constructor(socket, extensions, generateMask) {
        this._extensions = extensions || {};
        if (generateMask) {
          this._generateMask = generateMask;
          this._maskBuffer = Buffer.alloc(4);
        }
        this._socket = socket;
        this._firstFragment = true;
        this._compress = false;
        this._bufferedBytes = 0;
        this._queue = [];
        this._state = DEFAULT;
        this.onerror = NOOP;
        this[kWebSocket] = void 0;
      }
      /**
       * Frames a piece of data according to the HyBi WebSocket protocol.
       *
       * @param {(Buffer|String)} data The data to frame
       * @param {Object} options Options object
       * @param {Boolean} [options.fin=false] Specifies whether or not to set the
       *     FIN bit
       * @param {Function} [options.generateMask] The function used to generate the
       *     masking key
       * @param {Boolean} [options.mask=false] Specifies whether or not to mask
       *     `data`
       * @param {Buffer} [options.maskBuffer] The buffer used to store the masking
       *     key
       * @param {Number} options.opcode The opcode
       * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be
       *     modified
       * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the
       *     RSV1 bit
       * @return {(Buffer|String)[]} The framed data
       * @public
       */
      static frame(data, options) {
        let mask2;
        let merge3 = false;
        let offset = 2;
        let skipMasking = false;
        if (options.mask) {
          mask2 = options.maskBuffer || maskBuffer;
          if (options.generateMask) {
            options.generateMask(mask2);
          } else {
            if (randomPoolPointer === RANDOM_POOL_SIZE) {
              if (randomPool === void 0) {
                randomPool = Buffer.alloc(RANDOM_POOL_SIZE);
              }
              randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);
              randomPoolPointer = 0;
            }
            mask2[0] = randomPool[randomPoolPointer++];
            mask2[1] = randomPool[randomPoolPointer++];
            mask2[2] = randomPool[randomPoolPointer++];
            mask2[3] = randomPool[randomPoolPointer++];
          }
          skipMasking = (mask2[0] | mask2[1] | mask2[2] | mask2[3]) === 0;
          offset = 6;
        }
        let dataLength;
        if (typeof data === "string") {
          if ((!options.mask || skipMasking) && options[kByteLength] !== void 0) {
            dataLength = options[kByteLength];
          } else {
            data = Buffer.from(data);
            dataLength = data.length;
          }
        } else {
          dataLength = data.length;
          merge3 = options.mask && options.readOnly && !skipMasking;
        }
        let payloadLength = dataLength;
        if (dataLength >= 65536) {
          offset += 8;
          payloadLength = 127;
        } else if (dataLength > 125) {
          offset += 2;
          payloadLength = 126;
        }
        const target = Buffer.allocUnsafe(merge3 ? dataLength + offset : offset);
        target[0] = options.fin ? options.opcode | 128 : options.opcode;
        if (options.rsv1) target[0] |= 64;
        target[1] = payloadLength;
        if (payloadLength === 126) {
          target.writeUInt16BE(dataLength, 2);
        } else if (payloadLength === 127) {
          target[2] = target[3] = 0;
          target.writeUIntBE(dataLength, 4, 6);
        }
        if (!options.mask) return [target, data];
        target[1] |= 128;
        target[offset - 4] = mask2[0];
        target[offset - 3] = mask2[1];
        target[offset - 2] = mask2[2];
        target[offset - 1] = mask2[3];
        if (skipMasking) return [target, data];
        if (merge3) {
          applyMask(data, mask2, target, offset, dataLength);
          return [target];
        }
        applyMask(data, mask2, data, 0, dataLength);
        return [target, data];
      }
      /**
       * Sends a close message to the other peer.
       *
       * @param {Number} [code] The status code component of the body
       * @param {(String|Buffer)} [data] The message component of the body
       * @param {Boolean} [mask=false] Specifies whether or not to mask the message
       * @param {Function} [cb] Callback
       * @public
       */
      close(code7, data, mask2, cb) {
        let buf;
        if (code7 === void 0) {
          buf = EMPTY_BUFFER;
        } else if (typeof code7 !== "number" || !isValidStatusCode(code7)) {
          throw new TypeError("First argument must be a valid error code number");
        } else if (data === void 0 || !data.length) {
          buf = Buffer.allocUnsafe(2);
          buf.writeUInt16BE(code7, 0);
        } else {
          const length = Buffer.byteLength(data);
          if (length > 123) {
            throw new RangeError("The message must not be greater than 123 bytes");
          }
          buf = Buffer.allocUnsafe(2 + length);
          buf.writeUInt16BE(code7, 0);
          if (typeof data === "string") {
            buf.write(data, 2);
          } else {
            buf.set(data, 2);
          }
        }
        const options = {
          [kByteLength]: buf.length,
          fin: true,
          generateMask: this._generateMask,
          mask: mask2,
          maskBuffer: this._maskBuffer,
          opcode: 8,
          readOnly: false,
          rsv1: false
        };
        if (this._state !== DEFAULT) {
          this.enqueue([this.dispatch, buf, false, options, cb]);
        } else {
          this.sendFrame(_Sender.frame(buf, options), cb);
        }
      }
      /**
       * Sends a ping message to the other peer.
       *
       * @param {*} data The message to send
       * @param {Boolean} [mask=false] Specifies whether or not to mask `data`
       * @param {Function} [cb] Callback
       * @public
       */
      ping(data, mask2, cb) {
        let byteLength2;
        let readOnly;
        if (typeof data === "string") {
          byteLength2 = Buffer.byteLength(data);
          readOnly = false;
        } else if (isBlob2(data)) {
          byteLength2 = data.size;
          readOnly = false;
        } else {
          data = toBuffer(data);
          byteLength2 = data.length;
          readOnly = toBuffer.readOnly;
        }
        if (byteLength2 > 125) {
          throw new RangeError("The data size must not be greater than 125 bytes");
        }
        const options = {
          [kByteLength]: byteLength2,
          fin: true,
          generateMask: this._generateMask,
          mask: mask2,
          maskBuffer: this._maskBuffer,
          opcode: 9,
          readOnly,
          rsv1: false
        };
        if (isBlob2(data)) {
          if (this._state !== DEFAULT) {
            this.enqueue([this.getBlobData, data, false, options, cb]);
          } else {
            this.getBlobData(data, false, options, cb);
          }
        } else if (this._state !== DEFAULT) {
          this.enqueue([this.dispatch, data, false, options, cb]);
        } else {
          this.sendFrame(_Sender.frame(data, options), cb);
        }
      }
      /**
       * Sends a pong message to the other peer.
       *
       * @param {*} data The message to send
       * @param {Boolean} [mask=false] Specifies whether or not to mask `data`
       * @param {Function} [cb] Callback
       * @public
       */
      pong(data, mask2, cb) {
        let byteLength2;
        let readOnly;
        if (typeof data === "string") {
          byteLength2 = Buffer.byteLength(data);
          readOnly = false;
        } else if (isBlob2(data)) {
          byteLength2 = data.size;
          readOnly = false;
        } else {
          data = toBuffer(data);
          byteLength2 = data.length;
          readOnly = toBuffer.readOnly;
        }
        if (byteLength2 > 125) {
          throw new RangeError("The data size must not be greater than 125 bytes");
        }
        const options = {
          [kByteLength]: byteLength2,
          fin: true,
          generateMask: this._generateMask,
          mask: mask2,
          maskBuffer: this._maskBuffer,
          opcode: 10,
          readOnly,
          rsv1: false
        };
        if (isBlob2(data)) {
          if (this._state !== DEFAULT) {
            this.enqueue([this.getBlobData, data, false, options, cb]);
          } else {
            this.getBlobData(data, false, options, cb);
          }
        } else if (this._state !== DEFAULT) {
          this.enqueue([this.dispatch, data, false, options, cb]);
        } else {
          this.sendFrame(_Sender.frame(data, options), cb);
        }
      }
      /**
       * Sends a data message to the other peer.
       *
       * @param {*} data The message to send
       * @param {Object} options Options object
       * @param {Boolean} [options.binary=false] Specifies whether `data` is binary
       *     or text
       * @param {Boolean} [options.compress=false] Specifies whether or not to
       *     compress `data`
       * @param {Boolean} [options.fin=false] Specifies whether the fragment is the
       *     last one
       * @param {Boolean} [options.mask=false] Specifies whether or not to mask
       *     `data`
       * @param {Function} [cb] Callback
       * @public
       */
      send(data, options, cb) {
        const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];
        let opcode = options.binary ? 2 : 1;
        let rsv1 = options.compress;
        let byteLength2;
        let readOnly;
        if (typeof data === "string") {
          byteLength2 = Buffer.byteLength(data);
          readOnly = false;
        } else if (isBlob2(data)) {
          byteLength2 = data.size;
          readOnly = false;
        } else {
          data = toBuffer(data);
          byteLength2 = data.length;
          readOnly = toBuffer.readOnly;
        }
        if (this._firstFragment) {
          this._firstFragment = false;
          if (rsv1 && perMessageDeflate && perMessageDeflate.params[perMessageDeflate._isServer ? "server_no_context_takeover" : "client_no_context_takeover"]) {
            rsv1 = byteLength2 >= perMessageDeflate._threshold;
          }
          this._compress = rsv1;
        } else {
          rsv1 = false;
          opcode = 0;
        }
        if (options.fin) this._firstFragment = true;
        const opts = {
          [kByteLength]: byteLength2,
          fin: options.fin,
          generateMask: this._generateMask,
          mask: options.mask,
          maskBuffer: this._maskBuffer,
          opcode,
          readOnly,
          rsv1
        };
        if (isBlob2(data)) {
          if (this._state !== DEFAULT) {
            this.enqueue([this.getBlobData, data, this._compress, opts, cb]);
          } else {
            this.getBlobData(data, this._compress, opts, cb);
          }
        } else if (this._state !== DEFAULT) {
          this.enqueue([this.dispatch, data, this._compress, opts, cb]);
        } else {
          this.dispatch(data, this._compress, opts, cb);
        }
      }
      /**
       * Gets the contents of a blob as binary data.
       *
       * @param {Blob} blob The blob
       * @param {Boolean} [compress=false] Specifies whether or not to compress
       *     the data
       * @param {Object} options Options object
       * @param {Boolean} [options.fin=false] Specifies whether or not to set the
       *     FIN bit
       * @param {Function} [options.generateMask] The function used to generate the
       *     masking key
       * @param {Boolean} [options.mask=false] Specifies whether or not to mask
       *     `data`
       * @param {Buffer} [options.maskBuffer] The buffer used to store the masking
       *     key
       * @param {Number} options.opcode The opcode
       * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be
       *     modified
       * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the
       *     RSV1 bit
       * @param {Function} [cb] Callback
       * @private
       */
      getBlobData(blob, compress, options, cb) {
        this._bufferedBytes += options[kByteLength];
        this._state = GET_BLOB_DATA;
        blob.arrayBuffer().then((arrayBuffer) => {
          if (this._socket.destroyed) {
            const err = new Error(
              "The socket was closed while the blob was being read"
            );
            process.nextTick(callCallbacks, this, err, cb);
            return;
          }
          this._bufferedBytes -= options[kByteLength];
          const data = toBuffer(arrayBuffer);
          if (!compress) {
            this._state = DEFAULT;
            this.sendFrame(_Sender.frame(data, options), cb);
            this.dequeue();
          } else {
            this.dispatch(data, compress, options, cb);
          }
        }).catch((err) => {
          process.nextTick(onError, this, err, cb);
        });
      }
      /**
       * Dispatches a message.
       *
       * @param {(Buffer|String)} data The message to send
       * @param {Boolean} [compress=false] Specifies whether or not to compress
       *     `data`
       * @param {Object} options Options object
       * @param {Boolean} [options.fin=false] Specifies whether or not to set the
       *     FIN bit
       * @param {Function} [options.generateMask] The function used to generate the
       *     masking key
       * @param {Boolean} [options.mask=false] Specifies whether or not to mask
       *     `data`
       * @param {Buffer} [options.maskBuffer] The buffer used to store the masking
       *     key
       * @param {Number} options.opcode The opcode
       * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be
       *     modified
       * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the
       *     RSV1 bit
       * @param {Function} [cb] Callback
       * @private
       */
      dispatch(data, compress, options, cb) {
        if (!compress) {
          this.sendFrame(_Sender.frame(data, options), cb);
          return;
        }
        const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];
        this._bufferedBytes += options[kByteLength];
        this._state = DEFLATING;
        perMessageDeflate.compress(data, options.fin, (_2, buf) => {
          if (this._socket.destroyed) {
            const err = new Error(
              "The socket was closed while data was being compressed"
            );
            callCallbacks(this, err, cb);
            return;
          }
          this._bufferedBytes -= options[kByteLength];
          this._state = DEFAULT;
          options.readOnly = false;
          this.sendFrame(_Sender.frame(buf, options), cb);
          this.dequeue();
        });
      }
      /**
       * Executes queued send operations.
       *
       * @private
       */
      dequeue() {
        while (this._state === DEFAULT && this._queue.length) {
          const params = this._queue.shift();
          this._bufferedBytes -= params[3][kByteLength];
          Reflect.apply(params[0], this, params.slice(1));
        }
      }
      /**
       * Enqueues a send operation.
       *
       * @param {Array} params Send operation parameters.
       * @private
       */
      enqueue(params) {
        this._bufferedBytes += params[3][kByteLength];
        this._queue.push(params);
      }
      /**
       * Sends a frame.
       *
       * @param {Buffer[]} list The frame to send
       * @param {Function} [cb] Callback
       * @private
       */
      sendFrame(list6, cb) {
        if (list6.length === 2) {
          this._socket.cork();
          this._socket.write(list6[0]);
          this._socket.write(list6[1], cb);
          this._socket.uncork();
        } else {
          this._socket.write(list6[0], cb);
        }
      }
    };
    module2.exports = Sender2;
    function callCallbacks(sender, err, cb) {
      if (typeof cb === "function") cb(err);
      for (let i2 = 0; i2 < sender._queue.length; i2++) {
        const params = sender._queue[i2];
        const callback = params[params.length - 1];
        if (typeof callback === "function") callback(err);
      }
    }
    function onError(sender, err, cb) {
      callCallbacks(sender, err, cb);
      sender.onerror(err);
    }
  }
});

// ../../node_modules/ws/lib/event-target.js
var require_event_target = __commonJS({
  "../../node_modules/ws/lib/event-target.js"(exports2, module2) {
    "use strict";
    var { kForOnEventAttribute, kListener } = require_constants6();
    var kCode = Symbol("kCode");
    var kData = Symbol("kData");
    var kError = Symbol("kError");
    var kMessage = Symbol("kMessage");
    var kReason = Symbol("kReason");
    var kTarget = Symbol("kTarget");
    var kType = Symbol("kType");
    var kWasClean = Symbol("kWasClean");
    var Event = class {
      /**
       * Create a new `Event`.
       *
       * @param {String} type The name of the event
       * @throws {TypeError} If the `type` argument is not specified
       */
      constructor(type2) {
        this[kTarget] = null;
        this[kType] = type2;
      }
      /**
       * @type {*}
       */
      get target() {
        return this[kTarget];
      }
      /**
       * @type {String}
       */
      get type() {
        return this[kType];
      }
    };
    Object.defineProperty(Event.prototype, "target", { enumerable: true });
    Object.defineProperty(Event.prototype, "type", { enumerable: true });
    var CloseEvent = class extends Event {
      /**
       * Create a new `CloseEvent`.
       *
       * @param {String} type The name of the event
       * @param {Object} [options] A dictionary object that allows for setting
       *     attributes via object members of the same name
       * @param {Number} [options.code=0] The status code explaining why the
       *     connection was closed
       * @param {String} [options.reason=''] A human-readable string explaining why
       *     the connection was closed
       * @param {Boolean} [options.wasClean=false] Indicates whether or not the
       *     connection was cleanly closed
       */
      constructor(type2, options = {}) {
        super(type2);
        this[kCode] = options.code === void 0 ? 0 : options.code;
        this[kReason] = options.reason === void 0 ? "" : options.reason;
        this[kWasClean] = options.wasClean === void 0 ? false : options.wasClean;
      }
      /**
       * @type {Number}
       */
      get code() {
        return this[kCode];
      }
      /**
       * @type {String}
       */
      get reason() {
        return this[kReason];
      }
      /**
       * @type {Boolean}
       */
      get wasClean() {
        return this[kWasClean];
      }
    };
    Object.defineProperty(CloseEvent.prototype, "code", { enumerable: true });
    Object.defineProperty(CloseEvent.prototype, "reason", { enumerable: true });
    Object.defineProperty(CloseEvent.prototype, "wasClean", { enumerable: true });
    var ErrorEvent = class extends Event {
      /**
       * Create a new `ErrorEvent`.
       *
       * @param {String} type The name of the event
       * @param {Object} [options] A dictionary object that allows for setting
       *     attributes via object members of the same name
       * @param {*} [options.error=null] The error that generated this event
       * @param {String} [options.message=''] The error message
       */
      constructor(type2, options = {}) {
        super(type2);
        this[kError] = options.error === void 0 ? null : options.error;
        this[kMessage] = options.message === void 0 ? "" : options.message;
      }
      /**
       * @type {*}
       */
      get error() {
        return this[kError];
      }
      /**
       * @type {String}
       */
      get message() {
        return this[kMessage];
      }
    };
    Object.defineProperty(ErrorEvent.prototype, "error", { enumerable: true });
    Object.defineProperty(ErrorEvent.prototype, "message", { enumerable: true });
    var MessageEvent = class extends Event {
      /**
       * Create a new `MessageEvent`.
       *
       * @param {String} type The name of the event
       * @param {Object} [options] A dictionary object that allows for setting
       *     attributes via object members of the same name
       * @param {*} [options.data=null] The message content
       */
      constructor(type2, options = {}) {
        super(type2);
        this[kData] = options.data === void 0 ? null : options.data;
      }
      /**
       * @type {*}
       */
      get data() {
        return this[kData];
      }
    };
    Object.defineProperty(MessageEvent.prototype, "data", { enumerable: true });
    var EventTarget = {
      /**
       * Register an event listener.
       *
       * @param {String} type A string representing the event type to listen for
       * @param {(Function|Object)} handler The listener to add
       * @param {Object} [options] An options object specifies characteristics about
       *     the event listener
       * @param {Boolean} [options.once=false] A `Boolean` indicating that the
       *     listener should be invoked at most once after being added. If `true`,
       *     the listener would be automatically removed when invoked.
       * @public
       */
      addEventListener(type2, handler, options = {}) {
        for (const listener2 of this.listeners(type2)) {
          if (!options[kForOnEventAttribute] && listener2[kListener] === handler && !listener2[kForOnEventAttribute]) {
            return;
          }
        }
        let wrapper;
        if (type2 === "message") {
          wrapper = function onMessage(data, isBinary2) {
            const event = new MessageEvent("message", {
              data: isBinary2 ? data : data.toString()
            });
            event[kTarget] = this;
            callListener(handler, this, event);
          };
        } else if (type2 === "close") {
          wrapper = function onClose(code7, message) {
            const event = new CloseEvent("close", {
              code: code7,
              reason: message.toString(),
              wasClean: this._closeFrameReceived && this._closeFrameSent
            });
            event[kTarget] = this;
            callListener(handler, this, event);
          };
        } else if (type2 === "error") {
          wrapper = function onError(error) {
            const event = new ErrorEvent("error", {
              error,
              message: error.message
            });
            event[kTarget] = this;
            callListener(handler, this, event);
          };
        } else if (type2 === "open") {
          wrapper = function onOpen() {
            const event = new Event("open");
            event[kTarget] = this;
            callListener(handler, this, event);
          };
        } else {
          return;
        }
        wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];
        wrapper[kListener] = handler;
        if (options.once) {
          this.once(type2, wrapper);
        } else {
          this.on(type2, wrapper);
        }
      },
      /**
       * Remove an event listener.
       *
       * @param {String} type A string representing the event type to remove
       * @param {(Function|Object)} handler The listener to remove
       * @public
       */
      removeEventListener(type2, handler) {
        for (const listener2 of this.listeners(type2)) {
          if (listener2[kListener] === handler && !listener2[kForOnEventAttribute]) {
            this.removeListener(type2, listener2);
            break;
          }
        }
      }
    };
    module2.exports = {
      CloseEvent,
      ErrorEvent,
      Event,
      EventTarget,
      MessageEvent
    };
    function callListener(listener2, thisArg, event) {
      if (typeof listener2 === "object" && listener2.handleEvent) {
        listener2.handleEvent.call(listener2, event);
      } else {
        listener2.call(thisArg, event);
      }
    }
  }
});

// ../../node_modules/ws/lib/extension.js
var require_extension = __commonJS({
  "../../node_modules/ws/lib/extension.js"(exports2, module2) {
    "use strict";
    var { tokenChars } = require_validation();
    function push(dest, name3, elem) {
      if (dest[name3] === void 0) dest[name3] = [elem];
      else dest[name3].push(elem);
    }
    function parse16(header) {
      const offers = /* @__PURE__ */ Object.create(null);
      let params = /* @__PURE__ */ Object.create(null);
      let mustUnescape = false;
      let isEscaping = false;
      let inQuotes = false;
      let extensionName;
      let paramName;
      let start = -1;
      let code7 = -1;
      let end = -1;
      let i2 = 0;
      for (; i2 < header.length; i2++) {
        code7 = header.charCodeAt(i2);
        if (extensionName === void 0) {
          if (end === -1 && tokenChars[code7] === 1) {
            if (start === -1) start = i2;
          } else if (i2 !== 0 && (code7 === 32 || code7 === 9)) {
            if (end === -1 && start !== -1) end = i2;
          } else if (code7 === 59 || code7 === 44) {
            if (start === -1) {
              throw new SyntaxError(`Unexpected character at index ${i2}`);
            }
            if (end === -1) end = i2;
            const name3 = header.slice(start, end);
            if (code7 === 44) {
              push(offers, name3, params);
              params = /* @__PURE__ */ Object.create(null);
            } else {
              extensionName = name3;
            }
            start = end = -1;
          } else {
            throw new SyntaxError(`Unexpected character at index ${i2}`);
          }
        } else if (paramName === void 0) {
          if (end === -1 && tokenChars[code7] === 1) {
            if (start === -1) start = i2;
          } else if (code7 === 32 || code7 === 9) {
            if (end === -1 && start !== -1) end = i2;
          } else if (code7 === 59 || code7 === 44) {
            if (start === -1) {
              throw new SyntaxError(`Unexpected character at index ${i2}`);
            }
            if (end === -1) end = i2;
            push(params, header.slice(start, end), true);
            if (code7 === 44) {
              push(offers, extensionName, params);
              params = /* @__PURE__ */ Object.create(null);
              extensionName = void 0;
            }
            start = end = -1;
          } else if (code7 === 61 && start !== -1 && end === -1) {
            paramName = header.slice(start, i2);
            start = end = -1;
          } else {
            throw new SyntaxError(`Unexpected character at index ${i2}`);
          }
        } else {
          if (isEscaping) {
            if (tokenChars[code7] !== 1) {
              throw new SyntaxError(`Unexpected character at index ${i2}`);
            }
            if (start === -1) start = i2;
            else if (!mustUnescape) mustUnescape = true;
            isEscaping = false;
          } else if (inQuotes) {
            if (tokenChars[code7] === 1) {
              if (start === -1) start = i2;
            } else if (code7 === 34 && start !== -1) {
              inQuotes = false;
              end = i2;
            } else if (code7 === 92) {
              isEscaping = true;
            } else {
              throw new SyntaxError(`Unexpected character at index ${i2}`);
            }
          } else if (code7 === 34 && header.charCodeAt(i2 - 1) === 61) {
            inQuotes = true;
          } else if (end === -1 && tokenChars[code7] === 1) {
            if (start === -1) start = i2;
          } else if (start !== -1 && (code7 === 32 || code7 === 9)) {
            if (end === -1) end = i2;
          } else if (code7 === 59 || code7 === 44) {
            if (start === -1) {
              throw new SyntaxError(`Unexpected character at index ${i2}`);
            }
            if (end === -1) end = i2;
            let value = header.slice(start, end);
            if (mustUnescape) {
              value = value.replace(/\\/g, "");
              mustUnescape = false;
            }
            push(params, paramName, value);
            if (code7 === 44) {
              push(offers, extensionName, params);
              params = /* @__PURE__ */ Object.create(null);
              extensionName = void 0;
            }
            paramName = void 0;
            start = end = -1;
          } else {
            throw new SyntaxError(`Unexpected character at index ${i2}`);
          }
        }
      }
      if (start === -1 || inQuotes || code7 === 32 || code7 === 9) {
        throw new SyntaxError("Unexpected end of input");
      }
      if (end === -1) end = i2;
      const token = header.slice(start, end);
      if (extensionName === void 0) {
        push(offers, token, params);
      } else {
        if (paramName === void 0) {
          push(params, token, true);
        } else if (mustUnescape) {
          push(params, paramName, token.replace(/\\/g, ""));
        } else {
          push(params, paramName, token);
        }
        push(offers, extensionName, params);
      }
      return offers;
    }
    function format(extensions) {
      return Object.keys(extensions).map((extension) => {
        let configurations = extensions[extension];
        if (!Array.isArray(configurations)) configurations = [configurations];
        return configurations.map((params) => {
          return [extension].concat(
            Object.keys(params).map((k) => {
              let values = params[k];
              if (!Array.isArray(values)) values = [values];
              return values.map((v) => v === true ? k : `${k}=${v}`).join("; ");
            })
          ).join("; ");
        }).join(", ");
      }).join(", ");
    }
    module2.exports = { format, parse: parse16 };
  }
});

// ../../node_modules/ws/lib/websocket.js
var require_websocket = __commonJS({
  "../../node_modules/ws/lib/websocket.js"(exports2, module2) {
    "use strict";
    var EventEmitter4 = require("events");
    var https3 = require("https");
    var http5 = require("http");
    var net3 = require("net");
    var tls = require("tls");
    var { randomBytes, createHash: createHash5 } = require("crypto");
    var { Duplex: Duplex2, Readable } = require("stream");
    var { URL: URL4 } = require("url");
    var PerMessageDeflate = require_permessage_deflate();
    var Receiver2 = require_receiver();
    var Sender2 = require_sender();
    var { isBlob: isBlob2 } = require_validation();
    var {
      BINARY_TYPES,
      EMPTY_BUFFER,
      GUID,
      kForOnEventAttribute,
      kListener,
      kStatusCode,
      kWebSocket,
      NOOP
    } = require_constants6();
    var {
      EventTarget: { addEventListener, removeEventListener }
    } = require_event_target();
    var { format, parse: parse16 } = require_extension();
    var { toBuffer } = require_buffer_util();
    var closeTimeout = 30 * 1e3;
    var kAborted = Symbol("kAborted");
    var protocolVersions = [8, 13];
    var readyStates = ["CONNECTING", "OPEN", "CLOSING", "CLOSED"];
    var subprotocolRegex = /^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;
    var WebSocket3 = class _WebSocket extends EventEmitter4 {
      /**
       * Create a new `WebSocket`.
       *
       * @param {(String|URL)} address The URL to which to connect
       * @param {(String|String[])} [protocols] The subprotocols
       * @param {Object} [options] Connection options
       */
      constructor(address, protocols, options) {
        super();
        this._binaryType = BINARY_TYPES[0];
        this._closeCode = 1006;
        this._closeFrameReceived = false;
        this._closeFrameSent = false;
        this._closeMessage = EMPTY_BUFFER;
        this._closeTimer = null;
        this._errorEmitted = false;
        this._extensions = {};
        this._paused = false;
        this._protocol = "";
        this._readyState = _WebSocket.CONNECTING;
        this._receiver = null;
        this._sender = null;
        this._socket = null;
        if (address !== null) {
          this._bufferedAmount = 0;
          this._isServer = false;
          this._redirects = 0;
          if (protocols === void 0) {
            protocols = [];
          } else if (!Array.isArray(protocols)) {
            if (typeof protocols === "object" && protocols !== null) {
              options = protocols;
              protocols = [];
            } else {
              protocols = [protocols];
            }
          }
          initAsClient(this, address, protocols, options);
        } else {
          this._autoPong = options.autoPong;
          this._isServer = true;
        }
      }
      /**
       * For historical reasons, the custom "nodebuffer" type is used by the default
       * instead of "blob".
       *
       * @type {String}
       */
      get binaryType() {
        return this._binaryType;
      }
      set binaryType(type2) {
        if (!BINARY_TYPES.includes(type2)) return;
        this._binaryType = type2;
        if (this._receiver) this._receiver._binaryType = type2;
      }
      /**
       * @type {Number}
       */
      get bufferedAmount() {
        if (!this._socket) return this._bufferedAmount;
        return this._socket._writableState.length + this._sender._bufferedBytes;
      }
      /**
       * @type {String}
       */
      get extensions() {
        return Object.keys(this._extensions).join();
      }
      /**
       * @type {Boolean}
       */
      get isPaused() {
        return this._paused;
      }
      /**
       * @type {Function}
       */
      /* istanbul ignore next */
      get onclose() {
        return null;
      }
      /**
       * @type {Function}
       */
      /* istanbul ignore next */
      get onerror() {
        return null;
      }
      /**
       * @type {Function}
       */
      /* istanbul ignore next */
      get onopen() {
        return null;
      }
      /**
       * @type {Function}
       */
      /* istanbul ignore next */
      get onmessage() {
        return null;
      }
      /**
       * @type {String}
       */
      get protocol() {
        return this._protocol;
      }
      /**
       * @type {Number}
       */
      get readyState() {
        return this._readyState;
      }
      /**
       * @type {String}
       */
      get url() {
        return this._url;
      }
      /**
       * Set up the socket and the internal resources.
       *
       * @param {Duplex} socket The network socket between the server and client
       * @param {Buffer} head The first packet of the upgraded stream
       * @param {Object} options Options object
       * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether
       *     any of the `'message'`, `'ping'`, and `'pong'` events can be emitted
       *     multiple times in the same tick
       * @param {Function} [options.generateMask] The function used to generate the
       *     masking key
       * @param {Number} [options.maxPayload=0] The maximum allowed message size
       * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or
       *     not to skip UTF-8 validation for text and close messages
       * @private
       */
      setSocket(socket, head2, options) {
        const receiver = new Receiver2({
          allowSynchronousEvents: options.allowSynchronousEvents,
          binaryType: this.binaryType,
          extensions: this._extensions,
          isServer: this._isServer,
          maxPayload: options.maxPayload,
          skipUTF8Validation: options.skipUTF8Validation
        });
        const sender = new Sender2(socket, this._extensions, options.generateMask);
        this._receiver = receiver;
        this._sender = sender;
        this._socket = socket;
        receiver[kWebSocket] = this;
        sender[kWebSocket] = this;
        socket[kWebSocket] = this;
        receiver.on("conclude", receiverOnConclude);
        receiver.on("drain", receiverOnDrain);
        receiver.on("error", receiverOnError);
        receiver.on("message", receiverOnMessage);
        receiver.on("ping", receiverOnPing);
        receiver.on("pong", receiverOnPong);
        sender.onerror = senderOnError;
        if (socket.setTimeout) socket.setTimeout(0);
        if (socket.setNoDelay) socket.setNoDelay();
        if (head2.length > 0) socket.unshift(head2);
        socket.on("close", socketOnClose);
        socket.on("data", socketOnData);
        socket.on("end", socketOnEnd);
        socket.on("error", socketOnError);
        this._readyState = _WebSocket.OPEN;
        this.emit("open");
      }
      /**
       * Emit the `'close'` event.
       *
       * @private
       */
      emitClose() {
        if (!this._socket) {
          this._readyState = _WebSocket.CLOSED;
          this.emit("close", this._closeCode, this._closeMessage);
          return;
        }
        if (this._extensions[PerMessageDeflate.extensionName]) {
          this._extensions[PerMessageDeflate.extensionName].cleanup();
        }
        this._receiver.removeAllListeners();
        this._readyState = _WebSocket.CLOSED;
        this.emit("close", this._closeCode, this._closeMessage);
      }
      /**
       * Start a closing handshake.
       *
       *          +----------+   +-----------+   +----------+
       *     - - -|ws.close()|-->|close frame|-->|ws.close()|- - -
       *    |     +----------+   +-----------+   +----------+     |
       *          +----------+   +-----------+         |
       * CLOSING  |ws.close()|<--|close frame|<--+-----+       CLOSING
       *          +----------+   +-----------+   |
       *    |           |                        |   +---+        |
       *                +------------------------+-->|fin| - - - -
       *    |         +---+                      |   +---+
       *     - - - - -|fin|<---------------------+
       *              +---+
       *
       * @param {Number} [code] Status code explaining why the connection is closing
       * @param {(String|Buffer)} [data] The reason why the connection is
       *     closing
       * @public
       */
      close(code7, data) {
        if (this.readyState === _WebSocket.CLOSED) return;
        if (this.readyState === _WebSocket.CONNECTING) {
          const msg = "WebSocket was closed before the connection was established";
          abortHandshake(this, this._req, msg);
          return;
        }
        if (this.readyState === _WebSocket.CLOSING) {
          if (this._closeFrameSent && (this._closeFrameReceived || this._receiver._writableState.errorEmitted)) {
            this._socket.end();
          }
          return;
        }
        this._readyState = _WebSocket.CLOSING;
        this._sender.close(code7, data, !this._isServer, (err) => {
          if (err) return;
          this._closeFrameSent = true;
          if (this._closeFrameReceived || this._receiver._writableState.errorEmitted) {
            this._socket.end();
          }
        });
        setCloseTimer(this);
      }
      /**
       * Pause the socket.
       *
       * @public
       */
      pause() {
        if (this.readyState === _WebSocket.CONNECTING || this.readyState === _WebSocket.CLOSED) {
          return;
        }
        this._paused = true;
        this._socket.pause();
      }
      /**
       * Send a ping.
       *
       * @param {*} [data] The data to send
       * @param {Boolean} [mask] Indicates whether or not to mask `data`
       * @param {Function} [cb] Callback which is executed when the ping is sent
       * @public
       */
      ping(data, mask2, cb) {
        if (this.readyState === _WebSocket.CONNECTING) {
          throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");
        }
        if (typeof data === "function") {
          cb = data;
          data = mask2 = void 0;
        } else if (typeof mask2 === "function") {
          cb = mask2;
          mask2 = void 0;
        }
        if (typeof data === "number") data = data.toString();
        if (this.readyState !== _WebSocket.OPEN) {
          sendAfterClose(this, data, cb);
          return;
        }
        if (mask2 === void 0) mask2 = !this._isServer;
        this._sender.ping(data || EMPTY_BUFFER, mask2, cb);
      }
      /**
       * Send a pong.
       *
       * @param {*} [data] The data to send
       * @param {Boolean} [mask] Indicates whether or not to mask `data`
       * @param {Function} [cb] Callback which is executed when the pong is sent
       * @public
       */
      pong(data, mask2, cb) {
        if (this.readyState === _WebSocket.CONNECTING) {
          throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");
        }
        if (typeof data === "function") {
          cb = data;
          data = mask2 = void 0;
        } else if (typeof mask2 === "function") {
          cb = mask2;
          mask2 = void 0;
        }
        if (typeof data === "number") data = data.toString();
        if (this.readyState !== _WebSocket.OPEN) {
          sendAfterClose(this, data, cb);
          return;
        }
        if (mask2 === void 0) mask2 = !this._isServer;
        this._sender.pong(data || EMPTY_BUFFER, mask2, cb);
      }
      /**
       * Resume the socket.
       *
       * @public
       */
      resume() {
        if (this.readyState === _WebSocket.CONNECTING || this.readyState === _WebSocket.CLOSED) {
          return;
        }
        this._paused = false;
        if (!this._receiver._writableState.needDrain) this._socket.resume();
      }
      /**
       * Send a data message.
       *
       * @param {*} data The message to send
       * @param {Object} [options] Options object
       * @param {Boolean} [options.binary] Specifies whether `data` is binary or
       *     text
       * @param {Boolean} [options.compress] Specifies whether or not to compress
       *     `data`
       * @param {Boolean} [options.fin=true] Specifies whether the fragment is the
       *     last one
       * @param {Boolean} [options.mask] Specifies whether or not to mask `data`
       * @param {Function} [cb] Callback which is executed when data is written out
       * @public
       */
      send(data, options, cb) {
        if (this.readyState === _WebSocket.CONNECTING) {
          throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");
        }
        if (typeof options === "function") {
          cb = options;
          options = {};
        }
        if (typeof data === "number") data = data.toString();
        if (this.readyState !== _WebSocket.OPEN) {
          sendAfterClose(this, data, cb);
          return;
        }
        const opts = {
          binary: typeof data !== "string",
          mask: !this._isServer,
          compress: true,
          fin: true,
          ...options
        };
        if (!this._extensions[PerMessageDeflate.extensionName]) {
          opts.compress = false;
        }
        this._sender.send(data || EMPTY_BUFFER, opts, cb);
      }
      /**
       * Forcibly close the connection.
       *
       * @public
       */
      terminate() {
        if (this.readyState === _WebSocket.CLOSED) return;
        if (this.readyState === _WebSocket.CONNECTING) {
          const msg = "WebSocket was closed before the connection was established";
          abortHandshake(this, this._req, msg);
          return;
        }
        if (this._socket) {
          this._readyState = _WebSocket.CLOSING;
          this._socket.destroy();
        }
      }
    };
    Object.defineProperty(WebSocket3, "CONNECTING", {
      enumerable: true,
      value: readyStates.indexOf("CONNECTING")
    });
    Object.defineProperty(WebSocket3.prototype, "CONNECTING", {
      enumerable: true,
      value: readyStates.indexOf("CONNECTING")
    });
    Object.defineProperty(WebSocket3, "OPEN", {
      enumerable: true,
      value: readyStates.indexOf("OPEN")
    });
    Object.defineProperty(WebSocket3.prototype, "OPEN", {
      enumerable: true,
      value: readyStates.indexOf("OPEN")
    });
    Object.defineProperty(WebSocket3, "CLOSING", {
      enumerable: true,
      value: readyStates.indexOf("CLOSING")
    });
    Object.defineProperty(WebSocket3.prototype, "CLOSING", {
      enumerable: true,
      value: readyStates.indexOf("CLOSING")
    });
    Object.defineProperty(WebSocket3, "CLOSED", {
      enumerable: true,
      value: readyStates.indexOf("CLOSED")
    });
    Object.defineProperty(WebSocket3.prototype, "CLOSED", {
      enumerable: true,
      value: readyStates.indexOf("CLOSED")
    });
    [
      "binaryType",
      "bufferedAmount",
      "extensions",
      "isPaused",
      "protocol",
      "readyState",
      "url"
    ].forEach((property) => {
      Object.defineProperty(WebSocket3.prototype, property, { enumerable: true });
    });
    ["open", "error", "close", "message"].forEach((method) => {
      Object.defineProperty(WebSocket3.prototype, `on${method}`, {
        enumerable: true,
        get() {
          for (const listener2 of this.listeners(method)) {
            if (listener2[kForOnEventAttribute]) return listener2[kListener];
          }
          return null;
        },
        set(handler) {
          for (const listener2 of this.listeners(method)) {
            if (listener2[kForOnEventAttribute]) {
              this.removeListener(method, listener2);
              break;
            }
          }
          if (typeof handler !== "function") return;
          this.addEventListener(method, handler, {
            [kForOnEventAttribute]: true
          });
        }
      });
    });
    WebSocket3.prototype.addEventListener = addEventListener;
    WebSocket3.prototype.removeEventListener = removeEventListener;
    module2.exports = WebSocket3;
    function initAsClient(websocket, address, protocols, options) {
      const opts = {
        allowSynchronousEvents: true,
        autoPong: true,
        protocolVersion: protocolVersions[1],
        maxPayload: 100 * 1024 * 1024,
        skipUTF8Validation: false,
        perMessageDeflate: true,
        followRedirects: false,
        maxRedirects: 10,
        ...options,
        socketPath: void 0,
        hostname: void 0,
        protocol: void 0,
        timeout: void 0,
        method: "GET",
        host: void 0,
        path: void 0,
        port: void 0
      };
      websocket._autoPong = opts.autoPong;
      if (!protocolVersions.includes(opts.protocolVersion)) {
        throw new RangeError(
          `Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})`
        );
      }
      let parsedUrl;
      if (address instanceof URL4) {
        parsedUrl = address;
      } else {
        try {
          parsedUrl = new URL4(address);
        } catch (e2) {
          throw new SyntaxError(`Invalid URL: ${address}`);
        }
      }
      if (parsedUrl.protocol === "http:") {
        parsedUrl.protocol = "ws:";
      } else if (parsedUrl.protocol === "https:") {
        parsedUrl.protocol = "wss:";
      }
      websocket._url = parsedUrl.href;
      const isSecure = parsedUrl.protocol === "wss:";
      const isIpcUrl = parsedUrl.protocol === "ws+unix:";
      let invalidUrlMessage;
      if (parsedUrl.protocol !== "ws:" && !isSecure && !isIpcUrl) {
        invalidUrlMessage = `The URL's protocol must be one of "ws:", "wss:", "http:", "https", or "ws+unix:"`;
      } else if (isIpcUrl && !parsedUrl.pathname) {
        invalidUrlMessage = "The URL's pathname is empty";
      } else if (parsedUrl.hash) {
        invalidUrlMessage = "The URL contains a fragment identifier";
      }
      if (invalidUrlMessage) {
        const err = new SyntaxError(invalidUrlMessage);
        if (websocket._redirects === 0) {
          throw err;
        } else {
          emitErrorAndClose(websocket, err);
          return;
        }
      }
      const defaultPort = isSecure ? 443 : 80;
      const key2 = randomBytes(16).toString("base64");
      const request = isSecure ? https3.request : http5.request;
      const protocolSet = /* @__PURE__ */ new Set();
      let perMessageDeflate;
      opts.createConnection = opts.createConnection || (isSecure ? tlsConnect : netConnect);
      opts.defaultPort = opts.defaultPort || defaultPort;
      opts.port = parsedUrl.port || defaultPort;
      opts.host = parsedUrl.hostname.startsWith("[") ? parsedUrl.hostname.slice(1, -1) : parsedUrl.hostname;
      opts.headers = {
        ...opts.headers,
        "Sec-WebSocket-Version": opts.protocolVersion,
        "Sec-WebSocket-Key": key2,
        Connection: "Upgrade",
        Upgrade: "websocket"
      };
      opts.path = parsedUrl.pathname + parsedUrl.search;
      opts.timeout = opts.handshakeTimeout;
      if (opts.perMessageDeflate) {
        perMessageDeflate = new PerMessageDeflate(
          opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},
          false,
          opts.maxPayload
        );
        opts.headers["Sec-WebSocket-Extensions"] = format({
          [PerMessageDeflate.extensionName]: perMessageDeflate.offer()
        });
      }
      if (protocols.length) {
        for (const protocol of protocols) {
          if (typeof protocol !== "string" || !subprotocolRegex.test(protocol) || protocolSet.has(protocol)) {
            throw new SyntaxError(
              "An invalid or duplicated subprotocol was specified"
            );
          }
          protocolSet.add(protocol);
        }
        opts.headers["Sec-WebSocket-Protocol"] = protocols.join(",");
      }
      if (opts.origin) {
        if (opts.protocolVersion < 13) {
          opts.headers["Sec-WebSocket-Origin"] = opts.origin;
        } else {
          opts.headers.Origin = opts.origin;
        }
      }
      if (parsedUrl.username || parsedUrl.password) {
        opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;
      }
      if (isIpcUrl) {
        const parts = opts.path.split(":");
        opts.socketPath = parts[0];
        opts.path = parts[1];
      }
      let req;
      if (opts.followRedirects) {
        if (websocket._redirects === 0) {
          websocket._originalIpc = isIpcUrl;
          websocket._originalSecure = isSecure;
          websocket._originalHostOrSocketPath = isIpcUrl ? opts.socketPath : parsedUrl.host;
          const headers = options && options.headers;
          options = { ...options, headers: {} };
          if (headers) {
            for (const [key3, value] of Object.entries(headers)) {
              options.headers[key3.toLowerCase()] = value;
            }
          }
        } else if (websocket.listenerCount("redirect") === 0) {
          const isSameHost = isIpcUrl ? websocket._originalIpc ? opts.socketPath === websocket._originalHostOrSocketPath : false : websocket._originalIpc ? false : parsedUrl.host === websocket._originalHostOrSocketPath;
          if (!isSameHost || websocket._originalSecure && !isSecure) {
            delete opts.headers.authorization;
            delete opts.headers.cookie;
            if (!isSameHost) delete opts.headers.host;
            opts.auth = void 0;
          }
        }
        if (opts.auth && !options.headers.authorization) {
          options.headers.authorization = "Basic " + Buffer.from(opts.auth).toString("base64");
        }
        req = websocket._req = request(opts);
        if (websocket._redirects) {
          websocket.emit("redirect", websocket.url, req);
        }
      } else {
        req = websocket._req = request(opts);
      }
      if (opts.timeout) {
        req.on("timeout", () => {
          abortHandshake(websocket, req, "Opening handshake has timed out");
        });
      }
      req.on("error", (err) => {
        if (req === null || req[kAborted]) return;
        req = websocket._req = null;
        emitErrorAndClose(websocket, err);
      });
      req.on("response", (res) => {
        const location4 = res.headers.location;
        const statusCode = res.statusCode;
        if (location4 && opts.followRedirects && statusCode >= 300 && statusCode < 400) {
          if (++websocket._redirects > opts.maxRedirects) {
            abortHandshake(websocket, req, "Maximum redirects exceeded");
            return;
          }
          req.abort();
          let addr;
          try {
            addr = new URL4(location4, address);
          } catch (e2) {
            const err = new SyntaxError(`Invalid URL: ${location4}`);
            emitErrorAndClose(websocket, err);
            return;
          }
          initAsClient(websocket, addr, protocols, options);
        } else if (!websocket.emit("unexpected-response", req, res)) {
          abortHandshake(
            websocket,
            req,
            `Unexpected server response: ${res.statusCode}`
          );
        }
      });
      req.on("upgrade", (res, socket, head2) => {
        websocket.emit("upgrade", res);
        if (websocket.readyState !== WebSocket3.CONNECTING) return;
        req = websocket._req = null;
        const upgrade = res.headers.upgrade;
        if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") {
          abortHandshake(websocket, socket, "Invalid Upgrade header");
          return;
        }
        const digest = createHash5("sha1").update(key2 + GUID).digest("base64");
        if (res.headers["sec-websocket-accept"] !== digest) {
          abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header");
          return;
        }
        const serverProt = res.headers["sec-websocket-protocol"];
        let protError;
        if (serverProt !== void 0) {
          if (!protocolSet.size) {
            protError = "Server sent a subprotocol but none was requested";
          } else if (!protocolSet.has(serverProt)) {
            protError = "Server sent an invalid subprotocol";
          }
        } else if (protocolSet.size) {
          protError = "Server sent no subprotocol";
        }
        if (protError) {
          abortHandshake(websocket, socket, protError);
          return;
        }
        if (serverProt) websocket._protocol = serverProt;
        const secWebSocketExtensions = res.headers["sec-websocket-extensions"];
        if (secWebSocketExtensions !== void 0) {
          if (!perMessageDeflate) {
            const message = "Server sent a Sec-WebSocket-Extensions header but no extension was requested";
            abortHandshake(websocket, socket, message);
            return;
          }
          let extensions;
          try {
            extensions = parse16(secWebSocketExtensions);
          } catch (err) {
            const message = "Invalid Sec-WebSocket-Extensions header";
            abortHandshake(websocket, socket, message);
            return;
          }
          const extensionNames = Object.keys(extensions);
          if (extensionNames.length !== 1 || extensionNames[0] !== PerMessageDeflate.extensionName) {
            const message = "Server indicated an extension that was not requested";
            abortHandshake(websocket, socket, message);
            return;
          }
          try {
            perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);
          } catch (err) {
            const message = "Invalid Sec-WebSocket-Extensions header";
            abortHandshake(websocket, socket, message);
            return;
          }
          websocket._extensions[PerMessageDeflate.extensionName] = perMessageDeflate;
        }
        websocket.setSocket(socket, head2, {
          allowSynchronousEvents: opts.allowSynchronousEvents,
          generateMask: opts.generateMask,
          maxPayload: opts.maxPayload,
          skipUTF8Validation: opts.skipUTF8Validation
        });
      });
      if (opts.finishRequest) {
        opts.finishRequest(req, websocket);
      } else {
        req.end();
      }
    }
    function emitErrorAndClose(websocket, err) {
      websocket._readyState = WebSocket3.CLOSING;
      websocket._errorEmitted = true;
      websocket.emit("error", err);
      websocket.emitClose();
    }
    function netConnect(options) {
      options.path = options.socketPath;
      return net3.connect(options);
    }
    function tlsConnect(options) {
      options.path = void 0;
      if (!options.servername && options.servername !== "") {
        options.servername = net3.isIP(options.host) ? "" : options.host;
      }
      return tls.connect(options);
    }
    function abortHandshake(websocket, stream3, message) {
      websocket._readyState = WebSocket3.CLOSING;
      const err = new Error(message);
      Error.captureStackTrace(err, abortHandshake);
      if (stream3.setHeader) {
        stream3[kAborted] = true;
        stream3.abort();
        if (stream3.socket && !stream3.socket.destroyed) {
          stream3.socket.destroy();
        }
        process.nextTick(emitErrorAndClose, websocket, err);
      } else {
        stream3.destroy(err);
        stream3.once("error", websocket.emit.bind(websocket, "error"));
        stream3.once("close", websocket.emitClose.bind(websocket));
      }
    }
    function sendAfterClose(websocket, data, cb) {
      if (data) {
        const length = isBlob2(data) ? data.size : toBuffer(data).length;
        if (websocket._socket) websocket._sender._bufferedBytes += length;
        else websocket._bufferedAmount += length;
      }
      if (cb) {
        const err = new Error(
          `WebSocket is not open: readyState ${websocket.readyState} (${readyStates[websocket.readyState]})`
        );
        process.nextTick(cb, err);
      }
    }
    function receiverOnConclude(code7, reason) {
      const websocket = this[kWebSocket];
      websocket._closeFrameReceived = true;
      websocket._closeMessage = reason;
      websocket._closeCode = code7;
      if (websocket._socket[kWebSocket] === void 0) return;
      websocket._socket.removeListener("data", socketOnData);
      process.nextTick(resume, websocket._socket);
      if (code7 === 1005) websocket.close();
      else websocket.close(code7, reason);
    }
    function receiverOnDrain() {
      const websocket = this[kWebSocket];
      if (!websocket.isPaused) websocket._socket.resume();
    }
    function receiverOnError(err) {
      const websocket = this[kWebSocket];
      if (websocket._socket[kWebSocket] !== void 0) {
        websocket._socket.removeListener("data", socketOnData);
        process.nextTick(resume, websocket._socket);
        websocket.close(err[kStatusCode]);
      }
      if (!websocket._errorEmitted) {
        websocket._errorEmitted = true;
        websocket.emit("error", err);
      }
    }
    function receiverOnFinish() {
      this[kWebSocket].emitClose();
    }
    function receiverOnMessage(data, isBinary2) {
      this[kWebSocket].emit("message", data, isBinary2);
    }
    function receiverOnPing(data) {
      const websocket = this[kWebSocket];
      if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);
      websocket.emit("ping", data);
    }
    function receiverOnPong(data) {
      this[kWebSocket].emit("pong", data);
    }
    function resume(stream3) {
      stream3.resume();
    }
    function senderOnError(err) {
      const websocket = this[kWebSocket];
      if (websocket.readyState === WebSocket3.CLOSED) return;
      if (websocket.readyState === WebSocket3.OPEN) {
        websocket._readyState = WebSocket3.CLOSING;
        setCloseTimer(websocket);
      }
      this._socket.end();
      if (!websocket._errorEmitted) {
        websocket._errorEmitted = true;
        websocket.emit("error", err);
      }
    }
    function setCloseTimer(websocket) {
      websocket._closeTimer = setTimeout(
        websocket._socket.destroy.bind(websocket._socket),
        closeTimeout
      );
    }
    function socketOnClose() {
      const websocket = this[kWebSocket];
      this.removeListener("close", socketOnClose);
      this.removeListener("data", socketOnData);
      this.removeListener("end", socketOnEnd);
      websocket._readyState = WebSocket3.CLOSING;
      let chunk;
      if (!this._readableState.endEmitted && !websocket._closeFrameReceived && !websocket._receiver._writableState.errorEmitted && (chunk = websocket._socket.read()) !== null) {
        websocket._receiver.write(chunk);
      }
      websocket._receiver.end();
      this[kWebSocket] = void 0;
      clearTimeout(websocket._closeTimer);
      if (websocket._receiver._writableState.finished || websocket._receiver._writableState.errorEmitted) {
        websocket.emitClose();
      } else {
        websocket._receiver.on("error", receiverOnFinish);
        websocket._receiver.on("finish", receiverOnFinish);
      }
    }
    function socketOnData(chunk) {
      if (!this[kWebSocket]._receiver.write(chunk)) {
        this.pause();
      }
    }
    function socketOnEnd() {
      const websocket = this[kWebSocket];
      websocket._readyState = WebSocket3.CLOSING;
      websocket._receiver.end();
      this.end();
    }
    function socketOnError() {
      const websocket = this[kWebSocket];
      this.removeListener("error", socketOnError);
      this.on("error", NOOP);
      if (websocket) {
        websocket._readyState = WebSocket3.CLOSING;
        this.destroy();
      }
    }
  }
});

// ../../node_modules/ws/lib/subprotocol.js
var require_subprotocol = __commonJS({
  "../../node_modules/ws/lib/subprotocol.js"(exports2, module2) {
    "use strict";
    var { tokenChars } = require_validation();
    function parse16(header) {
      const protocols = /* @__PURE__ */ new Set();
      let start = -1;
      let end = -1;
      let i2 = 0;
      for (i2; i2 < header.length; i2++) {
        const code7 = header.charCodeAt(i2);
        if (end === -1 && tokenChars[code7] === 1) {
          if (start === -1) start = i2;
        } else if (i2 !== 0 && (code7 === 32 || code7 === 9)) {
          if (end === -1 && start !== -1) end = i2;
        } else if (code7 === 44) {
          if (start === -1) {
            throw new SyntaxError(`Unexpected character at index ${i2}`);
          }
          if (end === -1) end = i2;
          const protocol2 = header.slice(start, end);
          if (protocols.has(protocol2)) {
            throw new SyntaxError(`The "${protocol2}" subprotocol is duplicated`);
          }
          protocols.add(protocol2);
          start = end = -1;
        } else {
          throw new SyntaxError(`Unexpected character at index ${i2}`);
        }
      }
      if (start === -1 || end !== -1) {
        throw new SyntaxError("Unexpected end of input");
      }
      const protocol = header.slice(start, i2);
      if (protocols.has(protocol)) {
        throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`);
      }
      protocols.add(protocol);
      return protocols;
    }
    module2.exports = { parse: parse16 };
  }
});

// ../../node_modules/ws/lib/websocket-server.js
var require_websocket_server = __commonJS({
  "../../node_modules/ws/lib/websocket-server.js"(exports2, module2) {
    "use strict";
    var EventEmitter4 = require("events");
    var http5 = require("http");
    var { Duplex: Duplex2 } = require("stream");
    var { createHash: createHash5 } = require("crypto");
    var extension = require_extension();
    var PerMessageDeflate = require_permessage_deflate();
    var subprotocol = require_subprotocol();
    var WebSocket3 = require_websocket();
    var { GUID, kWebSocket } = require_constants6();
    var keyRegex = /^[+/0-9A-Za-z]{22}==$/;
    var RUNNING = 0;
    var CLOSING = 1;
    var CLOSED2 = 2;
    var WebSocketServer2 = class extends EventEmitter4 {
      /**
       * Create a `WebSocketServer` instance.
       *
       * @param {Object} options Configuration options
       * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether
       *     any of the `'message'`, `'ping'`, and `'pong'` events can be emitted
       *     multiple times in the same tick
       * @param {Boolean} [options.autoPong=true] Specifies whether or not to
       *     automatically send a pong in response to a ping
       * @param {Number} [options.backlog=511] The maximum length of the queue of
       *     pending connections
       * @param {Boolean} [options.clientTracking=true] Specifies whether or not to
       *     track clients
       * @param {Function} [options.handleProtocols] A hook to handle protocols
       * @param {String} [options.host] The hostname where to bind the server
       * @param {Number} [options.maxPayload=104857600] The maximum allowed message
       *     size
       * @param {Boolean} [options.noServer=false] Enable no server mode
       * @param {String} [options.path] Accept only connections matching this path
       * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable
       *     permessage-deflate
       * @param {Number} [options.port] The port where to bind the server
       * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S
       *     server to use
       * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or
       *     not to skip UTF-8 validation for text and close messages
       * @param {Function} [options.verifyClient] A hook to reject connections
       * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`
       *     class to use. It must be the `WebSocket` class or class that extends it
       * @param {Function} [callback] A listener for the `listening` event
       */
      constructor(options, callback) {
        super();
        options = {
          allowSynchronousEvents: true,
          autoPong: true,
          maxPayload: 100 * 1024 * 1024,
          skipUTF8Validation: false,
          perMessageDeflate: false,
          handleProtocols: null,
          clientTracking: true,
          verifyClient: null,
          noServer: false,
          backlog: null,
          // use default (511 as implemented in net.js)
          server: null,
          host: null,
          path: null,
          port: null,
          WebSocket: WebSocket3,
          ...options
        };
        if (options.port == null && !options.server && !options.noServer || options.port != null && (options.server || options.noServer) || options.server && options.noServer) {
          throw new TypeError(
            'One and only one of the "port", "server", or "noServer" options must be specified'
          );
        }
        if (options.port != null) {
          this._server = http5.createServer((req, res) => {
            const body3 = http5.STATUS_CODES[426];
            res.writeHead(426, {
              "Content-Length": body3.length,
              "Content-Type": "text/plain"
            });
            res.end(body3);
          });
          this._server.listen(
            options.port,
            options.host,
            options.backlog,
            callback
          );
        } else if (options.server) {
          this._server = options.server;
        }
        if (this._server) {
          const emitConnection = this.emit.bind(this, "connection");
          this._removeListeners = addListeners(this._server, {
            listening: this.emit.bind(this, "listening"),
            error: this.emit.bind(this, "error"),
            upgrade: (req, socket, head2) => {
              this.handleUpgrade(req, socket, head2, emitConnection);
            }
          });
        }
        if (options.perMessageDeflate === true) options.perMessageDeflate = {};
        if (options.clientTracking) {
          this.clients = /* @__PURE__ */ new Set();
          this._shouldEmitClose = false;
        }
        this.options = options;
        this._state = RUNNING;
      }
      /**
       * Returns the bound address, the address family name, and port of the server
       * as reported by the operating system if listening on an IP socket.
       * If the server is listening on a pipe or UNIX domain socket, the name is
       * returned as a string.
       *
       * @return {(Object|String|null)} The address of the server
       * @public
       */
      address() {
        if (this.options.noServer) {
          throw new Error('The server is operating in "noServer" mode');
        }
        if (!this._server) return null;
        return this._server.address();
      }
      /**
       * Stop the server from accepting new connections and emit the `'close'` event
       * when all existing connections are closed.
       *
       * @param {Function} [cb] A one-time listener for the `'close'` event
       * @public
       */
      close(cb) {
        if (this._state === CLOSED2) {
          if (cb) {
            this.once("close", () => {
              cb(new Error("The server is not running"));
            });
          }
          process.nextTick(emitClose, this);
          return;
        }
        if (cb) this.once("close", cb);
        if (this._state === CLOSING) return;
        this._state = CLOSING;
        if (this.options.noServer || this.options.server) {
          if (this._server) {
            this._removeListeners();
            this._removeListeners = this._server = null;
          }
          if (this.clients) {
            if (!this.clients.size) {
              process.nextTick(emitClose, this);
            } else {
              this._shouldEmitClose = true;
            }
          } else {
            process.nextTick(emitClose, this);
          }
        } else {
          const server = this._server;
          this._removeListeners();
          this._removeListeners = this._server = null;
          server.close(() => {
            emitClose(this);
          });
        }
      }
      /**
       * See if a given request should be handled by this server instance.
       *
       * @param {http.IncomingMessage} req Request object to inspect
       * @return {Boolean} `true` if the request is valid, else `false`
       * @public
       */
      shouldHandle(req) {
        if (this.options.path) {
          const index4 = req.url.indexOf("?");
          const pathname = index4 !== -1 ? req.url.slice(0, index4) : req.url;
          if (pathname !== this.options.path) return false;
        }
        return true;
      }
      /**
       * Handle a HTTP Upgrade request.
       *
       * @param {http.IncomingMessage} req The request object
       * @param {Duplex} socket The network socket between the server and client
       * @param {Buffer} head The first packet of the upgraded stream
       * @param {Function} cb Callback
       * @public
       */
      handleUpgrade(req, socket, head2, cb) {
        socket.on("error", socketOnError);
        const key2 = req.headers["sec-websocket-key"];
        const upgrade = req.headers.upgrade;
        const version4 = +req.headers["sec-websocket-version"];
        if (req.method !== "GET") {
          const message = "Invalid HTTP method";
          abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);
          return;
        }
        if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") {
          const message = "Invalid Upgrade header";
          abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);
          return;
        }
        if (key2 === void 0 || !keyRegex.test(key2)) {
          const message = "Missing or invalid Sec-WebSocket-Key header";
          abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);
          return;
        }
        if (version4 !== 8 && version4 !== 13) {
          const message = "Missing or invalid Sec-WebSocket-Version header";
          abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);
          return;
        }
        if (!this.shouldHandle(req)) {
          abortHandshake(socket, 400);
          return;
        }
        const secWebSocketProtocol = req.headers["sec-websocket-protocol"];
        let protocols = /* @__PURE__ */ new Set();
        if (secWebSocketProtocol !== void 0) {
          try {
            protocols = subprotocol.parse(secWebSocketProtocol);
          } catch (err) {
            const message = "Invalid Sec-WebSocket-Protocol header";
            abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);
            return;
          }
        }
        const secWebSocketExtensions = req.headers["sec-websocket-extensions"];
        const extensions = {};
        if (this.options.perMessageDeflate && secWebSocketExtensions !== void 0) {
          const perMessageDeflate = new PerMessageDeflate(
            this.options.perMessageDeflate,
            true,
            this.options.maxPayload
          );
          try {
            const offers = extension.parse(secWebSocketExtensions);
            if (offers[PerMessageDeflate.extensionName]) {
              perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);
              extensions[PerMessageDeflate.extensionName] = perMessageDeflate;
            }
          } catch (err) {
            const message = "Invalid or unacceptable Sec-WebSocket-Extensions header";
            abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);
            return;
          }
        }
        if (this.options.verifyClient) {
          const info = {
            origin: req.headers[`${version4 === 8 ? "sec-websocket-origin" : "origin"}`],
            secure: !!(req.socket.authorized || req.socket.encrypted),
            req
          };
          if (this.options.verifyClient.length === 2) {
            this.options.verifyClient(info, (verified, code7, message, headers) => {
              if (!verified) {
                return abortHandshake(socket, code7 || 401, message, headers);
              }
              this.completeUpgrade(
                extensions,
                key2,
                protocols,
                req,
                socket,
                head2,
                cb
              );
            });
            return;
          }
          if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);
        }
        this.completeUpgrade(extensions, key2, protocols, req, socket, head2, cb);
      }
      /**
       * Upgrade the connection to WebSocket.
       *
       * @param {Object} extensions The accepted extensions
       * @param {String} key The value of the `Sec-WebSocket-Key` header
       * @param {Set} protocols The subprotocols
       * @param {http.IncomingMessage} req The request object
       * @param {Duplex} socket The network socket between the server and client
       * @param {Buffer} head The first packet of the upgraded stream
       * @param {Function} cb Callback
       * @throws {Error} If called more than once with the same socket
       * @private
       */
      completeUpgrade(extensions, key2, protocols, req, socket, head2, cb) {
        if (!socket.readable || !socket.writable) return socket.destroy();
        if (socket[kWebSocket]) {
          throw new Error(
            "server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration"
          );
        }
        if (this._state > RUNNING) return abortHandshake(socket, 503);
        const digest = createHash5("sha1").update(key2 + GUID).digest("base64");
        const headers = [
          "HTTP/1.1 101 Switching Protocols",
          "Upgrade: websocket",
          "Connection: Upgrade",
          `Sec-WebSocket-Accept: ${digest}`
        ];
        const ws = new this.options.WebSocket(null, void 0, this.options);
        if (protocols.size) {
          const protocol = this.options.handleProtocols ? this.options.handleProtocols(protocols, req) : protocols.values().next().value;
          if (protocol) {
            headers.push(`Sec-WebSocket-Protocol: ${protocol}`);
            ws._protocol = protocol;
          }
        }
        if (extensions[PerMessageDeflate.extensionName]) {
          const params = extensions[PerMessageDeflate.extensionName].params;
          const value = extension.format({
            [PerMessageDeflate.extensionName]: [params]
          });
          headers.push(`Sec-WebSocket-Extensions: ${value}`);
          ws._extensions = extensions;
        }
        this.emit("headers", headers, req);
        socket.write(headers.concat("\r\n").join("\r\n"));
        socket.removeListener("error", socketOnError);
        ws.setSocket(socket, head2, {
          allowSynchronousEvents: this.options.allowSynchronousEvents,
          maxPayload: this.options.maxPayload,
          skipUTF8Validation: this.options.skipUTF8Validation
        });
        if (this.clients) {
          this.clients.add(ws);
          ws.on("close", () => {
            this.clients.delete(ws);
            if (this._shouldEmitClose && !this.clients.size) {
              process.nextTick(emitClose, this);
            }
          });
        }
        cb(ws, req);
      }
    };
    module2.exports = WebSocketServer2;
    function addListeners(server, map13) {
      for (const event of Object.keys(map13)) server.on(event, map13[event]);
      return function removeListeners() {
        for (const event of Object.keys(map13)) {
          server.removeListener(event, map13[event]);
        }
      };
    }
    function emitClose(server) {
      server._state = CLOSED2;
      server.emit("close");
    }
    function socketOnError() {
      this.destroy();
    }
    function abortHandshake(socket, code7, message, headers) {
      message = message || http5.STATUS_CODES[code7];
      headers = {
        Connection: "close",
        "Content-Type": "text/html",
        "Content-Length": Buffer.byteLength(message),
        ...headers
      };
      socket.once("finish", socket.destroy);
      socket.end(
        `HTTP/1.1 ${code7} ${http5.STATUS_CODES[code7]}\r
` + Object.keys(headers).map((h4) => `${h4}: ${headers[h4]}`).join("\r\n") + "\r\n\r\n" + message
      );
    }
    function abortHandshakeOrEmitwsClientError(server, req, socket, code7, message) {
      if (server.listenerCount("wsClientError")) {
        const err = new Error(message);
        Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);
        server.emit("wsClientError", err, socket, req);
      } else {
        abortHandshake(socket, code7, message);
      }
    }
  }
});

// ../../node_modules/ansi-escapes/index.js
var require_ansi_escapes = __commonJS({
  "../../node_modules/ansi-escapes/index.js"(exports2, module2) {
    "use strict";
    var ansiEscapes5 = module2.exports;
    module2.exports.default = ansiEscapes5;
    var ESC = "\x1B[";
    var OSC = "\x1B]";
    var BEL = "\x07";
    var SEP = ";";
    var isTerminalApp = process.env.TERM_PROGRAM === "Apple_Terminal";
    ansiEscapes5.cursorTo = (x2, y) => {
      if (typeof x2 !== "number") {
        throw new TypeError("The `x` argument is required");
      }
      if (typeof y !== "number") {
        return ESC + (x2 + 1) + "G";
      }
      return ESC + (y + 1) + ";" + (x2 + 1) + "H";
    };
    ansiEscapes5.cursorMove = (x2, y) => {
      if (typeof x2 !== "number") {
        throw new TypeError("The `x` argument is required");
      }
      let ret = "";
      if (x2 < 0) {
        ret += ESC + -x2 + "D";
      } else if (x2 > 0) {
        ret += ESC + x2 + "C";
      }
      if (y < 0) {
        ret += ESC + -y + "A";
      } else if (y > 0) {
        ret += ESC + y + "B";
      }
      return ret;
    };
    ansiEscapes5.cursorUp = (count2 = 1) => ESC + count2 + "A";
    ansiEscapes5.cursorDown = (count2 = 1) => ESC + count2 + "B";
    ansiEscapes5.cursorForward = (count2 = 1) => ESC + count2 + "C";
    ansiEscapes5.cursorBackward = (count2 = 1) => ESC + count2 + "D";
    ansiEscapes5.cursorLeft = ESC + "G";
    ansiEscapes5.cursorSavePosition = isTerminalApp ? "\x1B7" : ESC + "s";
    ansiEscapes5.cursorRestorePosition = isTerminalApp ? "\x1B8" : ESC + "u";
    ansiEscapes5.cursorGetPosition = ESC + "6n";
    ansiEscapes5.cursorNextLine = ESC + "E";
    ansiEscapes5.cursorPrevLine = ESC + "F";
    ansiEscapes5.cursorHide = ESC + "?25l";
    ansiEscapes5.cursorShow = ESC + "?25h";
    ansiEscapes5.eraseLines = (count2) => {
      let clear = "";
      for (let i2 = 0; i2 < count2; i2++) {
        clear += ansiEscapes5.eraseLine + (i2 < count2 - 1 ? ansiEscapes5.cursorUp() : "");
      }
      if (count2) {
        clear += ansiEscapes5.cursorLeft;
      }
      return clear;
    };
    ansiEscapes5.eraseEndLine = ESC + "K";
    ansiEscapes5.eraseStartLine = ESC + "1K";
    ansiEscapes5.eraseLine = ESC + "2K";
    ansiEscapes5.eraseDown = ESC + "J";
    ansiEscapes5.eraseUp = ESC + "1J";
    ansiEscapes5.eraseScreen = ESC + "2J";
    ansiEscapes5.scrollUp = ESC + "S";
    ansiEscapes5.scrollDown = ESC + "T";
    ansiEscapes5.clearScreen = "\x1Bc";
    ansiEscapes5.clearTerminal = process.platform === "win32" ? `${ansiEscapes5.eraseScreen}${ESC}0f` : (
      // 1. Erases the screen (Only done in case `2` is not supported)
      // 2. Erases the whole screen including scrollback buffer
      // 3. Moves cursor to the top-left position
      // More info: https://www.real-world-systems.com/docs/ANSIcode.html
      `${ansiEscapes5.eraseScreen}${ESC}3J${ESC}H`
    );
    ansiEscapes5.beep = BEL;
    ansiEscapes5.link = (text7, url) => {
      return [
        OSC,
        "8",
        SEP,
        SEP,
        url,
        BEL,
        text7,
        OSC,
        "8",
        SEP,
        SEP,
        BEL
      ].join("");
    };
    ansiEscapes5.image = (buffer2, options = {}) => {
      let ret = `${OSC}1337;File=inline=1`;
      if (options.width) {
        ret += `;width=${options.width}`;
      }
      if (options.height) {
        ret += `;height=${options.height}`;
      }
      if (options.preserveAspectRatio === false) {
        ret += ";preserveAspectRatio=0";
      }
      return ret + ":" + buffer2.toString("base64") + BEL;
    };
    ansiEscapes5.iTerm = {
      setCwd: (cwd2 = process.cwd()) => `${OSC}50;CurrentDir=${cwd2}${BEL}`,
      annotation: (message, options = {}) => {
        let ret = `${OSC}1337;`;
        const hasX = typeof options.x !== "undefined";
        const hasY = typeof options.y !== "undefined";
        if ((hasX || hasY) && !(hasX && hasY && typeof options.length !== "undefined")) {
          throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");
        }
        message = message.replace(/\|/g, "");
        ret += options.isHidden ? "AddHiddenAnnotation=" : "AddAnnotation=";
        if (options.length > 0) {
          ret += (hasX ? [message, options.length, options.x, options.y] : [options.length, message]).join("|");
        } else {
          ret += message;
        }
        return ret + BEL;
      }
    };
  }
});

// ../../node_modules/yoctocolors-cjs/index.js
var require_yoctocolors_cjs = __commonJS({
  "../../node_modules/yoctocolors-cjs/index.js"(exports2, module2) {
    var tty6 = require("tty");
    var _a6, _b, _c;
    var hasColors = ((_c = (_b = (_a6 = tty6 == null ? void 0 : tty6.WriteStream) == null ? void 0 : _a6.prototype) == null ? void 0 : _b.hasColors) == null ? void 0 : _c.call(_b)) ?? false;
    var format = (open2, close2) => {
      if (!hasColors) {
        return (input3) => input3;
      }
      const openCode = `\x1B[${open2}m`;
      const closeCode = `\x1B[${close2}m`;
      return (input3) => {
        const string2 = input3 + "";
        let index4 = string2.indexOf(closeCode);
        if (index4 === -1) {
          return openCode + string2 + closeCode;
        }
        let result = openCode;
        let lastIndex = 0;
        const reopenOnNestedClose = close2 === 22;
        const replaceCode = (reopenOnNestedClose ? closeCode : "") + openCode;
        while (index4 !== -1) {
          result += string2.slice(lastIndex, index4) + replaceCode;
          lastIndex = index4 + closeCode.length;
          index4 = string2.indexOf(closeCode, lastIndex);
        }
        result += string2.slice(lastIndex) + closeCode;
        return result;
      };
    };
    var colors13 = {};
    colors13.reset = format(0, 0);
    colors13.bold = format(1, 22);
    colors13.dim = format(2, 22);
    colors13.italic = format(3, 23);
    colors13.underline = format(4, 24);
    colors13.overline = format(53, 55);
    colors13.inverse = format(7, 27);
    colors13.hidden = format(8, 28);
    colors13.strikethrough = format(9, 29);
    colors13.black = format(30, 39);
    colors13.red = format(31, 39);
    colors13.green = format(32, 39);
    colors13.yellow = format(33, 39);
    colors13.blue = format(34, 39);
    colors13.magenta = format(35, 39);
    colors13.cyan = format(36, 39);
    colors13.white = format(37, 39);
    colors13.gray = format(90, 39);
    colors13.bgBlack = format(40, 49);
    colors13.bgRed = format(41, 49);
    colors13.bgGreen = format(42, 49);
    colors13.bgYellow = format(43, 49);
    colors13.bgBlue = format(44, 49);
    colors13.bgMagenta = format(45, 49);
    colors13.bgCyan = format(46, 49);
    colors13.bgWhite = format(47, 49);
    colors13.bgGray = format(100, 49);
    colors13.redBright = format(91, 39);
    colors13.greenBright = format(92, 39);
    colors13.yellowBright = format(93, 39);
    colors13.blueBright = format(94, 39);
    colors13.magentaBright = format(95, 39);
    colors13.cyanBright = format(96, 39);
    colors13.whiteBright = format(97, 39);
    colors13.bgRedBright = format(101, 49);
    colors13.bgGreenBright = format(102, 49);
    colors13.bgYellowBright = format(103, 49);
    colors13.bgBlueBright = format(104, 49);
    colors13.bgMagentaBright = format(105, 49);
    colors13.bgCyanBright = format(106, 49);
    colors13.bgWhiteBright = format(107, 49);
    module2.exports = colors13;
  }
});

// ../../node_modules/run-async/index.js
var require_run_async = __commonJS({
  "../../node_modules/run-async/index.js"(exports2, module2) {
    "use strict";
    function isPromise(obj) {
      return !!obj && (typeof obj === "object" || typeof obj === "function") && typeof obj.then === "function";
    }
    var runAsync5 = module2.exports = function(func, cb, proxyProperty = "async") {
      if (typeof cb === "string") {
        proxyProperty = cb;
        cb = void 0;
      }
      cb = cb || function() {
      };
      return function() {
        var args = arguments;
        var originalThis = this;
        var promise = new Promise(function(resolve9, reject) {
          var resolved = false;
          const wrappedResolve = function(value) {
            if (resolved) {
              console.warn("Run-async promise already resolved.");
            }
            resolved = true;
            resolve9(value);
          };
          var rejected = false;
          const wrappedReject = function(value) {
            if (rejected) {
              console.warn("Run-async promise already rejected.");
            }
            rejected = true;
            reject(value);
          };
          var usingCallback = false;
          var callbackConflict = false;
          var contextEnded = false;
          var doneFactory = function() {
            if (contextEnded) {
              console.warn("Run-async async() called outside a valid run-async context, callback will be ignored.");
              return function() {
              };
            }
            if (callbackConflict) {
              console.warn("Run-async wrapped function (async) returned a promise.\nCalls to async() callback can have unexpected results.");
            }
            usingCallback = true;
            return function(err, value) {
              if (err) {
                wrappedReject(err);
              } else {
                wrappedResolve(value);
              }
            };
          };
          var _this;
          if (originalThis && proxyProperty && Proxy) {
            _this = new Proxy(originalThis, {
              get(_target, prop) {
                if (prop === proxyProperty) {
                  if (prop in _target) {
                    console.warn(`${proxyProperty} property is been shadowed by run-sync`);
                  }
                  return doneFactory;
                }
                return Reflect.get(...arguments);
              }
            });
          } else {
            _this = { [proxyProperty]: doneFactory };
          }
          var answer = func.apply(_this, Array.prototype.slice.call(args));
          if (usingCallback) {
            if (isPromise(answer)) {
              console.warn("Run-async wrapped function (sync) returned a promise but async() callback must be executed to resolve.");
            }
          } else {
            if (isPromise(answer)) {
              callbackConflict = true;
              answer.then(wrappedResolve, wrappedReject);
            } else {
              wrappedResolve(answer);
            }
          }
          contextEnded = true;
        });
        promise.then(cb.bind(null, null), cb);
        return promise;
      };
    };
    runAsync5.cb = function(func, cb) {
      return runAsync5(function() {
        var args = Array.prototype.slice.call(arguments);
        if (args.length === func.length - 1) {
          args.push(this.async());
        }
        return func.apply(this, args);
      }, cb);
    };
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/isFunction.js
var require_isFunction = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/isFunction.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isFunction = void 0;
    function isFunction2(value) {
      return typeof value === "function";
    }
    exports2.isFunction = isFunction2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/createErrorClass.js
var require_createErrorClass = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/createErrorClass.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.createErrorClass = void 0;
    function createErrorClass(createImpl) {
      var _super = function(instance) {
        Error.call(instance);
        instance.stack = new Error().stack;
      };
      var ctorFunc = createImpl(_super);
      ctorFunc.prototype = Object.create(Error.prototype);
      ctorFunc.prototype.constructor = ctorFunc;
      return ctorFunc;
    }
    exports2.createErrorClass = createErrorClass;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/UnsubscriptionError.js
var require_UnsubscriptionError = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/UnsubscriptionError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.UnsubscriptionError = void 0;
    var createErrorClass_1 = require_createErrorClass();
    exports2.UnsubscriptionError = createErrorClass_1.createErrorClass(function(_super) {
      return function UnsubscriptionErrorImpl(errors4) {
        _super(this);
        this.message = errors4 ? errors4.length + " errors occurred during unsubscription:\n" + errors4.map(function(err, i2) {
          return i2 + 1 + ") " + err.toString();
        }).join("\n  ") : "";
        this.name = "UnsubscriptionError";
        this.errors = errors4;
      };
    });
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/arrRemove.js
var require_arrRemove = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/arrRemove.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.arrRemove = void 0;
    function arrRemove(arr, item) {
      if (arr) {
        var index4 = arr.indexOf(item);
        0 <= index4 && arr.splice(index4, 1);
      }
    }
    exports2.arrRemove = arrRemove;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/Subscription.js
var require_Subscription = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/Subscription.js"(exports2) {
    "use strict";
    var __values = exports2 && exports2.__values || function(o) {
      var s5 = typeof Symbol === "function" && Symbol.iterator, m2 = s5 && o[s5], i2 = 0;
      if (m2) return m2.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i2 >= o.length) o = void 0;
          return { value: o && o[i2++], done: !o };
        }
      };
      throw new TypeError(s5 ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isSubscription = exports2.EMPTY_SUBSCRIPTION = exports2.Subscription = void 0;
    var isFunction_1 = require_isFunction();
    var UnsubscriptionError_1 = require_UnsubscriptionError();
    var arrRemove_1 = require_arrRemove();
    var Subscription = (function() {
      function Subscription2(initialTeardown) {
        this.initialTeardown = initialTeardown;
        this.closed = false;
        this._parentage = null;
        this._finalizers = null;
      }
      Subscription2.prototype.unsubscribe = function() {
        var e_1, _a6, e_2, _b;
        var errors4;
        if (!this.closed) {
          this.closed = true;
          var _parentage = this._parentage;
          if (_parentage) {
            this._parentage = null;
            if (Array.isArray(_parentage)) {
              try {
                for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {
                  var parent_1 = _parentage_1_1.value;
                  parent_1.remove(this);
                }
              } catch (e_1_1) {
                e_1 = { error: e_1_1 };
              } finally {
                try {
                  if (_parentage_1_1 && !_parentage_1_1.done && (_a6 = _parentage_1.return)) _a6.call(_parentage_1);
                } finally {
                  if (e_1) throw e_1.error;
                }
              }
            } else {
              _parentage.remove(this);
            }
          }
          var initialFinalizer = this.initialTeardown;
          if (isFunction_1.isFunction(initialFinalizer)) {
            try {
              initialFinalizer();
            } catch (e2) {
              errors4 = e2 instanceof UnsubscriptionError_1.UnsubscriptionError ? e2.errors : [e2];
            }
          }
          var _finalizers = this._finalizers;
          if (_finalizers) {
            this._finalizers = null;
            try {
              for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {
                var finalizer = _finalizers_1_1.value;
                try {
                  execFinalizer(finalizer);
                } catch (err) {
                  errors4 = errors4 !== null && errors4 !== void 0 ? errors4 : [];
                  if (err instanceof UnsubscriptionError_1.UnsubscriptionError) {
                    errors4 = __spreadArray(__spreadArray([], __read(errors4)), __read(err.errors));
                  } else {
                    errors4.push(err);
                  }
                }
              }
            } catch (e_2_1) {
              e_2 = { error: e_2_1 };
            } finally {
              try {
                if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);
              } finally {
                if (e_2) throw e_2.error;
              }
            }
          }
          if (errors4) {
            throw new UnsubscriptionError_1.UnsubscriptionError(errors4);
          }
        }
      };
      Subscription2.prototype.add = function(teardown) {
        var _a6;
        if (teardown && teardown !== this) {
          if (this.closed) {
            execFinalizer(teardown);
          } else {
            if (teardown instanceof Subscription2) {
              if (teardown.closed || teardown._hasParent(this)) {
                return;
              }
              teardown._addParent(this);
            }
            (this._finalizers = (_a6 = this._finalizers) !== null && _a6 !== void 0 ? _a6 : []).push(teardown);
          }
        }
      };
      Subscription2.prototype._hasParent = function(parent2) {
        var _parentage = this._parentage;
        return _parentage === parent2 || Array.isArray(_parentage) && _parentage.includes(parent2);
      };
      Subscription2.prototype._addParent = function(parent2) {
        var _parentage = this._parentage;
        this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent2), _parentage) : _parentage ? [_parentage, parent2] : parent2;
      };
      Subscription2.prototype._removeParent = function(parent2) {
        var _parentage = this._parentage;
        if (_parentage === parent2) {
          this._parentage = null;
        } else if (Array.isArray(_parentage)) {
          arrRemove_1.arrRemove(_parentage, parent2);
        }
      };
      Subscription2.prototype.remove = function(teardown) {
        var _finalizers = this._finalizers;
        _finalizers && arrRemove_1.arrRemove(_finalizers, teardown);
        if (teardown instanceof Subscription2) {
          teardown._removeParent(this);
        }
      };
      Subscription2.EMPTY = (function() {
        var empty4 = new Subscription2();
        empty4.closed = true;
        return empty4;
      })();
      return Subscription2;
    })();
    exports2.Subscription = Subscription;
    exports2.EMPTY_SUBSCRIPTION = Subscription.EMPTY;
    function isSubscription(value) {
      return value instanceof Subscription || value && "closed" in value && isFunction_1.isFunction(value.remove) && isFunction_1.isFunction(value.add) && isFunction_1.isFunction(value.unsubscribe);
    }
    exports2.isSubscription = isSubscription;
    function execFinalizer(finalizer) {
      if (isFunction_1.isFunction(finalizer)) {
        finalizer();
      } else {
        finalizer.unsubscribe();
      }
    }
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/config.js
var require_config4 = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/config.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.config = void 0;
    exports2.config = {
      onUnhandledError: null,
      onStoppedNotification: null,
      Promise: void 0,
      useDeprecatedSynchronousErrorHandling: false,
      useDeprecatedNextContext: false
    };
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/timeoutProvider.js
var require_timeoutProvider = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/timeoutProvider.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.timeoutProvider = void 0;
    exports2.timeoutProvider = {
      setTimeout: function(handler, timeout) {
        var args = [];
        for (var _i = 2; _i < arguments.length; _i++) {
          args[_i - 2] = arguments[_i];
        }
        var delegate = exports2.timeoutProvider.delegate;
        if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {
          return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));
        }
        return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));
      },
      clearTimeout: function(handle6) {
        var delegate = exports2.timeoutProvider.delegate;
        return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle6);
      },
      delegate: void 0
    };
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/reportUnhandledError.js
var require_reportUnhandledError = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/reportUnhandledError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.reportUnhandledError = void 0;
    var config_1 = require_config4();
    var timeoutProvider_1 = require_timeoutProvider();
    function reportUnhandledError(err) {
      timeoutProvider_1.timeoutProvider.setTimeout(function() {
        var onUnhandledError = config_1.config.onUnhandledError;
        if (onUnhandledError) {
          onUnhandledError(err);
        } else {
          throw err;
        }
      });
    }
    exports2.reportUnhandledError = reportUnhandledError;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/noop.js
var require_noop = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/noop.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.noop = void 0;
    function noop5() {
    }
    exports2.noop = noop5;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/NotificationFactories.js
var require_NotificationFactories = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/NotificationFactories.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.createNotification = exports2.nextNotification = exports2.errorNotification = exports2.COMPLETE_NOTIFICATION = void 0;
    exports2.COMPLETE_NOTIFICATION = (function() {
      return createNotification("C", void 0, void 0);
    })();
    function errorNotification(error) {
      return createNotification("E", void 0, error);
    }
    exports2.errorNotification = errorNotification;
    function nextNotification(value) {
      return createNotification("N", value, void 0);
    }
    exports2.nextNotification = nextNotification;
    function createNotification(kind, value, error) {
      return {
        kind,
        value,
        error
      };
    }
    exports2.createNotification = createNotification;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/errorContext.js
var require_errorContext = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/errorContext.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.captureError = exports2.errorContext = void 0;
    var config_1 = require_config4();
    var context = null;
    function errorContext(cb) {
      if (config_1.config.useDeprecatedSynchronousErrorHandling) {
        var isRoot = !context;
        if (isRoot) {
          context = { errorThrown: false, error: null };
        }
        cb();
        if (isRoot) {
          var _a6 = context, errorThrown = _a6.errorThrown, error = _a6.error;
          context = null;
          if (errorThrown) {
            throw error;
          }
        }
      } else {
        cb();
      }
    }
    exports2.errorContext = errorContext;
    function captureError(err) {
      if (config_1.config.useDeprecatedSynchronousErrorHandling && context) {
        context.errorThrown = true;
        context.error = err;
      }
    }
    exports2.captureError = captureError;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/Subscriber.js
var require_Subscriber = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/Subscriber.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.EMPTY_OBSERVER = exports2.SafeSubscriber = exports2.Subscriber = void 0;
    var isFunction_1 = require_isFunction();
    var Subscription_1 = require_Subscription();
    var config_1 = require_config4();
    var reportUnhandledError_1 = require_reportUnhandledError();
    var noop_1 = require_noop();
    var NotificationFactories_1 = require_NotificationFactories();
    var timeoutProvider_1 = require_timeoutProvider();
    var errorContext_1 = require_errorContext();
    var Subscriber = (function(_super) {
      __extends(Subscriber2, _super);
      function Subscriber2(destination) {
        var _this = _super.call(this) || this;
        _this.isStopped = false;
        if (destination) {
          _this.destination = destination;
          if (Subscription_1.isSubscription(destination)) {
            destination.add(_this);
          }
        } else {
          _this.destination = exports2.EMPTY_OBSERVER;
        }
        return _this;
      }
      Subscriber2.create = function(next, error, complete) {
        return new SafeSubscriber(next, error, complete);
      };
      Subscriber2.prototype.next = function(value) {
        if (this.isStopped) {
          handleStoppedNotification(NotificationFactories_1.nextNotification(value), this);
        } else {
          this._next(value);
        }
      };
      Subscriber2.prototype.error = function(err) {
        if (this.isStopped) {
          handleStoppedNotification(NotificationFactories_1.errorNotification(err), this);
        } else {
          this.isStopped = true;
          this._error(err);
        }
      };
      Subscriber2.prototype.complete = function() {
        if (this.isStopped) {
          handleStoppedNotification(NotificationFactories_1.COMPLETE_NOTIFICATION, this);
        } else {
          this.isStopped = true;
          this._complete();
        }
      };
      Subscriber2.prototype.unsubscribe = function() {
        if (!this.closed) {
          this.isStopped = true;
          _super.prototype.unsubscribe.call(this);
          this.destination = null;
        }
      };
      Subscriber2.prototype._next = function(value) {
        this.destination.next(value);
      };
      Subscriber2.prototype._error = function(err) {
        try {
          this.destination.error(err);
        } finally {
          this.unsubscribe();
        }
      };
      Subscriber2.prototype._complete = function() {
        try {
          this.destination.complete();
        } finally {
          this.unsubscribe();
        }
      };
      return Subscriber2;
    })(Subscription_1.Subscription);
    exports2.Subscriber = Subscriber;
    var _bind = Function.prototype.bind;
    function bind(fn, thisArg) {
      return _bind.call(fn, thisArg);
    }
    var ConsumerObserver = (function() {
      function ConsumerObserver2(partialObserver) {
        this.partialObserver = partialObserver;
      }
      ConsumerObserver2.prototype.next = function(value) {
        var partialObserver = this.partialObserver;
        if (partialObserver.next) {
          try {
            partialObserver.next(value);
          } catch (error) {
            handleUnhandledError(error);
          }
        }
      };
      ConsumerObserver2.prototype.error = function(err) {
        var partialObserver = this.partialObserver;
        if (partialObserver.error) {
          try {
            partialObserver.error(err);
          } catch (error) {
            handleUnhandledError(error);
          }
        } else {
          handleUnhandledError(err);
        }
      };
      ConsumerObserver2.prototype.complete = function() {
        var partialObserver = this.partialObserver;
        if (partialObserver.complete) {
          try {
            partialObserver.complete();
          } catch (error) {
            handleUnhandledError(error);
          }
        }
      };
      return ConsumerObserver2;
    })();
    var SafeSubscriber = (function(_super) {
      __extends(SafeSubscriber2, _super);
      function SafeSubscriber2(observerOrNext, error, complete) {
        var _this = _super.call(this) || this;
        var partialObserver;
        if (isFunction_1.isFunction(observerOrNext) || !observerOrNext) {
          partialObserver = {
            next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : void 0,
            error: error !== null && error !== void 0 ? error : void 0,
            complete: complete !== null && complete !== void 0 ? complete : void 0
          };
        } else {
          var context_1;
          if (_this && config_1.config.useDeprecatedNextContext) {
            context_1 = Object.create(observerOrNext);
            context_1.unsubscribe = function() {
              return _this.unsubscribe();
            };
            partialObserver = {
              next: observerOrNext.next && bind(observerOrNext.next, context_1),
              error: observerOrNext.error && bind(observerOrNext.error, context_1),
              complete: observerOrNext.complete && bind(observerOrNext.complete, context_1)
            };
          } else {
            partialObserver = observerOrNext;
          }
        }
        _this.destination = new ConsumerObserver(partialObserver);
        return _this;
      }
      return SafeSubscriber2;
    })(Subscriber);
    exports2.SafeSubscriber = SafeSubscriber;
    function handleUnhandledError(error) {
      if (config_1.config.useDeprecatedSynchronousErrorHandling) {
        errorContext_1.captureError(error);
      } else {
        reportUnhandledError_1.reportUnhandledError(error);
      }
    }
    function defaultErrorHandler(err) {
      throw err;
    }
    function handleStoppedNotification(notification, subscriber) {
      var onStoppedNotification = config_1.config.onStoppedNotification;
      onStoppedNotification && timeoutProvider_1.timeoutProvider.setTimeout(function() {
        return onStoppedNotification(notification, subscriber);
      });
    }
    exports2.EMPTY_OBSERVER = {
      closed: true,
      next: noop_1.noop,
      error: defaultErrorHandler,
      complete: noop_1.noop
    };
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/symbol/observable.js
var require_observable = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/symbol/observable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.observable = void 0;
    exports2.observable = (function() {
      return typeof Symbol === "function" && Symbol.observable || "@@observable";
    })();
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/identity.js
var require_identity = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/identity.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.identity = void 0;
    function identity2(x2) {
      return x2;
    }
    exports2.identity = identity2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/pipe.js
var require_pipe = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/pipe.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.pipeFromArray = exports2.pipe = void 0;
    var identity_1 = require_identity();
    function pipe() {
      var fns = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        fns[_i] = arguments[_i];
      }
      return pipeFromArray(fns);
    }
    exports2.pipe = pipe;
    function pipeFromArray(fns) {
      if (fns.length === 0) {
        return identity_1.identity;
      }
      if (fns.length === 1) {
        return fns[0];
      }
      return function piped(input3) {
        return fns.reduce(function(prev, fn) {
          return fn(prev);
        }, input3);
      };
    }
    exports2.pipeFromArray = pipeFromArray;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/Observable.js
var require_Observable = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/Observable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.Observable = void 0;
    var Subscriber_1 = require_Subscriber();
    var Subscription_1 = require_Subscription();
    var observable_1 = require_observable();
    var pipe_1 = require_pipe();
    var config_1 = require_config4();
    var isFunction_1 = require_isFunction();
    var errorContext_1 = require_errorContext();
    var Observable = (function() {
      function Observable2(subscribe) {
        if (subscribe) {
          this._subscribe = subscribe;
        }
      }
      Observable2.prototype.lift = function(operator) {
        var observable = new Observable2();
        observable.source = this;
        observable.operator = operator;
        return observable;
      };
      Observable2.prototype.subscribe = function(observerOrNext, error, complete) {
        var _this = this;
        var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new Subscriber_1.SafeSubscriber(observerOrNext, error, complete);
        errorContext_1.errorContext(function() {
          var _a6 = _this, operator = _a6.operator, source2 = _a6.source;
          subscriber.add(operator ? operator.call(subscriber, source2) : source2 ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber));
        });
        return subscriber;
      };
      Observable2.prototype._trySubscribe = function(sink) {
        try {
          return this._subscribe(sink);
        } catch (err) {
          sink.error(err);
        }
      };
      Observable2.prototype.forEach = function(next, promiseCtor) {
        var _this = this;
        promiseCtor = getPromiseCtor(promiseCtor);
        return new promiseCtor(function(resolve9, reject) {
          var subscriber = new Subscriber_1.SafeSubscriber({
            next: function(value) {
              try {
                next(value);
              } catch (err) {
                reject(err);
                subscriber.unsubscribe();
              }
            },
            error: reject,
            complete: resolve9
          });
          _this.subscribe(subscriber);
        });
      };
      Observable2.prototype._subscribe = function(subscriber) {
        var _a6;
        return (_a6 = this.source) === null || _a6 === void 0 ? void 0 : _a6.subscribe(subscriber);
      };
      Observable2.prototype[observable_1.observable] = function() {
        return this;
      };
      Observable2.prototype.pipe = function() {
        var operations = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          operations[_i] = arguments[_i];
        }
        return pipe_1.pipeFromArray(operations)(this);
      };
      Observable2.prototype.toPromise = function(promiseCtor) {
        var _this = this;
        promiseCtor = getPromiseCtor(promiseCtor);
        return new promiseCtor(function(resolve9, reject) {
          var value;
          _this.subscribe(function(x2) {
            return value = x2;
          }, function(err) {
            return reject(err);
          }, function() {
            return resolve9(value);
          });
        });
      };
      Observable2.create = function(subscribe) {
        return new Observable2(subscribe);
      };
      return Observable2;
    })();
    exports2.Observable = Observable;
    function getPromiseCtor(promiseCtor) {
      var _a6;
      return (_a6 = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config_1.config.Promise) !== null && _a6 !== void 0 ? _a6 : Promise;
    }
    function isObserver(value) {
      return value && isFunction_1.isFunction(value.next) && isFunction_1.isFunction(value.error) && isFunction_1.isFunction(value.complete);
    }
    function isSubscriber(value) {
      return value && value instanceof Subscriber_1.Subscriber || isObserver(value) && Subscription_1.isSubscription(value);
    }
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/lift.js
var require_lift = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/lift.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.operate = exports2.hasLift = void 0;
    var isFunction_1 = require_isFunction();
    function hasLift(source2) {
      return isFunction_1.isFunction(source2 === null || source2 === void 0 ? void 0 : source2.lift);
    }
    exports2.hasLift = hasLift;
    function operate(init4) {
      return function(source2) {
        if (hasLift(source2)) {
          return source2.lift(function(liftedSource) {
            try {
              return init4(liftedSource, this);
            } catch (err) {
              this.error(err);
            }
          });
        }
        throw new TypeError("Unable to lift unknown Observable type");
      };
    }
    exports2.operate = operate;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/OperatorSubscriber.js
var require_OperatorSubscriber = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/OperatorSubscriber.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.OperatorSubscriber = exports2.createOperatorSubscriber = void 0;
    var Subscriber_1 = require_Subscriber();
    function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {
      return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);
    }
    exports2.createOperatorSubscriber = createOperatorSubscriber;
    var OperatorSubscriber = (function(_super) {
      __extends(OperatorSubscriber2, _super);
      function OperatorSubscriber2(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {
        var _this = _super.call(this, destination) || this;
        _this.onFinalize = onFinalize;
        _this.shouldUnsubscribe = shouldUnsubscribe;
        _this._next = onNext ? function(value) {
          try {
            onNext(value);
          } catch (err) {
            destination.error(err);
          }
        } : _super.prototype._next;
        _this._error = onError ? function(err) {
          try {
            onError(err);
          } catch (err2) {
            destination.error(err2);
          } finally {
            this.unsubscribe();
          }
        } : _super.prototype._error;
        _this._complete = onComplete ? function() {
          try {
            onComplete();
          } catch (err) {
            destination.error(err);
          } finally {
            this.unsubscribe();
          }
        } : _super.prototype._complete;
        return _this;
      }
      OperatorSubscriber2.prototype.unsubscribe = function() {
        var _a6;
        if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {
          var closed_1 = this.closed;
          _super.prototype.unsubscribe.call(this);
          !closed_1 && ((_a6 = this.onFinalize) === null || _a6 === void 0 ? void 0 : _a6.call(this));
        }
      };
      return OperatorSubscriber2;
    })(Subscriber_1.Subscriber);
    exports2.OperatorSubscriber = OperatorSubscriber;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/refCount.js
var require_refCount = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/refCount.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.refCount = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function refCount() {
      return lift_1.operate(function(source2, subscriber) {
        var connection = null;
        source2._refCount++;
        var refCounter = OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, void 0, void 0, function() {
          if (!source2 || source2._refCount <= 0 || 0 < --source2._refCount) {
            connection = null;
            return;
          }
          var sharedConnection = source2._connection;
          var conn = connection;
          connection = null;
          if (sharedConnection && (!conn || sharedConnection === conn)) {
            sharedConnection.unsubscribe();
          }
          subscriber.unsubscribe();
        });
        source2.subscribe(refCounter);
        if (!refCounter.closed) {
          connection = source2.connect();
        }
      });
    }
    exports2.refCount = refCount;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/ConnectableObservable.js
var require_ConnectableObservable = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/ConnectableObservable.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ConnectableObservable = void 0;
    var Observable_1 = require_Observable();
    var Subscription_1 = require_Subscription();
    var refCount_1 = require_refCount();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var lift_1 = require_lift();
    var ConnectableObservable = (function(_super) {
      __extends(ConnectableObservable2, _super);
      function ConnectableObservable2(source2, subjectFactory) {
        var _this = _super.call(this) || this;
        _this.source = source2;
        _this.subjectFactory = subjectFactory;
        _this._subject = null;
        _this._refCount = 0;
        _this._connection = null;
        if (lift_1.hasLift(source2)) {
          _this.lift = source2.lift;
        }
        return _this;
      }
      ConnectableObservable2.prototype._subscribe = function(subscriber) {
        return this.getSubject().subscribe(subscriber);
      };
      ConnectableObservable2.prototype.getSubject = function() {
        var subject = this._subject;
        if (!subject || subject.isStopped) {
          this._subject = this.subjectFactory();
        }
        return this._subject;
      };
      ConnectableObservable2.prototype._teardown = function() {
        this._refCount = 0;
        var _connection = this._connection;
        this._subject = this._connection = null;
        _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();
      };
      ConnectableObservable2.prototype.connect = function() {
        var _this = this;
        var connection = this._connection;
        if (!connection) {
          connection = this._connection = new Subscription_1.Subscription();
          var subject_1 = this.getSubject();
          connection.add(this.source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subject_1, void 0, function() {
            _this._teardown();
            subject_1.complete();
          }, function(err) {
            _this._teardown();
            subject_1.error(err);
          }, function() {
            return _this._teardown();
          })));
          if (connection.closed) {
            this._connection = null;
            connection = Subscription_1.Subscription.EMPTY;
          }
        }
        return connection;
      };
      ConnectableObservable2.prototype.refCount = function() {
        return refCount_1.refCount()(this);
      };
      return ConnectableObservable2;
    })(Observable_1.Observable);
    exports2.ConnectableObservable = ConnectableObservable;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/performanceTimestampProvider.js
var require_performanceTimestampProvider = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/performanceTimestampProvider.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.performanceTimestampProvider = void 0;
    exports2.performanceTimestampProvider = {
      now: function() {
        return (exports2.performanceTimestampProvider.delegate || performance).now();
      },
      delegate: void 0
    };
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/animationFrameProvider.js
var require_animationFrameProvider = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/animationFrameProvider.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.animationFrameProvider = void 0;
    var Subscription_1 = require_Subscription();
    exports2.animationFrameProvider = {
      schedule: function(callback) {
        var request = requestAnimationFrame;
        var cancel = cancelAnimationFrame;
        var delegate = exports2.animationFrameProvider.delegate;
        if (delegate) {
          request = delegate.requestAnimationFrame;
          cancel = delegate.cancelAnimationFrame;
        }
        var handle6 = request(function(timestamp2) {
          cancel = void 0;
          callback(timestamp2);
        });
        return new Subscription_1.Subscription(function() {
          return cancel === null || cancel === void 0 ? void 0 : cancel(handle6);
        });
      },
      requestAnimationFrame: function() {
        var args = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          args[_i] = arguments[_i];
        }
        var delegate = exports2.animationFrameProvider.delegate;
        return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame).apply(void 0, __spreadArray([], __read(args)));
      },
      cancelAnimationFrame: function() {
        var args = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          args[_i] = arguments[_i];
        }
        var delegate = exports2.animationFrameProvider.delegate;
        return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame).apply(void 0, __spreadArray([], __read(args)));
      },
      delegate: void 0
    };
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/dom/animationFrames.js
var require_animationFrames = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/dom/animationFrames.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.animationFrames = void 0;
    var Observable_1 = require_Observable();
    var performanceTimestampProvider_1 = require_performanceTimestampProvider();
    var animationFrameProvider_1 = require_animationFrameProvider();
    function animationFrames(timestampProvider) {
      return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;
    }
    exports2.animationFrames = animationFrames;
    function animationFramesFactory(timestampProvider) {
      return new Observable_1.Observable(function(subscriber) {
        var provider = timestampProvider || performanceTimestampProvider_1.performanceTimestampProvider;
        var start = provider.now();
        var id = 0;
        var run = function() {
          if (!subscriber.closed) {
            id = animationFrameProvider_1.animationFrameProvider.requestAnimationFrame(function(timestamp2) {
              id = 0;
              var now = provider.now();
              subscriber.next({
                timestamp: timestampProvider ? now : timestamp2,
                elapsed: now - start
              });
              run();
            });
          }
        };
        run();
        return function() {
          if (id) {
            animationFrameProvider_1.animationFrameProvider.cancelAnimationFrame(id);
          }
        };
      });
    }
    var DEFAULT_ANIMATION_FRAMES = animationFramesFactory();
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/ObjectUnsubscribedError.js
var require_ObjectUnsubscribedError = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/ObjectUnsubscribedError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ObjectUnsubscribedError = void 0;
    var createErrorClass_1 = require_createErrorClass();
    exports2.ObjectUnsubscribedError = createErrorClass_1.createErrorClass(function(_super) {
      return function ObjectUnsubscribedErrorImpl() {
        _super(this);
        this.name = "ObjectUnsubscribedError";
        this.message = "object unsubscribed";
      };
    });
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/Subject.js
var require_Subject = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/Subject.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    var __values = exports2 && exports2.__values || function(o) {
      var s5 = typeof Symbol === "function" && Symbol.iterator, m2 = s5 && o[s5], i2 = 0;
      if (m2) return m2.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i2 >= o.length) o = void 0;
          return { value: o && o[i2++], done: !o };
        }
      };
      throw new TypeError(s5 ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.AnonymousSubject = exports2.Subject = void 0;
    var Observable_1 = require_Observable();
    var Subscription_1 = require_Subscription();
    var ObjectUnsubscribedError_1 = require_ObjectUnsubscribedError();
    var arrRemove_1 = require_arrRemove();
    var errorContext_1 = require_errorContext();
    var Subject2 = (function(_super) {
      __extends(Subject3, _super);
      function Subject3() {
        var _this = _super.call(this) || this;
        _this.closed = false;
        _this.currentObservers = null;
        _this.observers = [];
        _this.isStopped = false;
        _this.hasError = false;
        _this.thrownError = null;
        return _this;
      }
      Subject3.prototype.lift = function(operator) {
        var subject = new AnonymousSubject(this, this);
        subject.operator = operator;
        return subject;
      };
      Subject3.prototype._throwIfClosed = function() {
        if (this.closed) {
          throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();
        }
      };
      Subject3.prototype.next = function(value) {
        var _this = this;
        errorContext_1.errorContext(function() {
          var e_1, _a6;
          _this._throwIfClosed();
          if (!_this.isStopped) {
            if (!_this.currentObservers) {
              _this.currentObservers = Array.from(_this.observers);
            }
            try {
              for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {
                var observer = _c.value;
                observer.next(value);
              }
            } catch (e_1_1) {
              e_1 = { error: e_1_1 };
            } finally {
              try {
                if (_c && !_c.done && (_a6 = _b.return)) _a6.call(_b);
              } finally {
                if (e_1) throw e_1.error;
              }
            }
          }
        });
      };
      Subject3.prototype.error = function(err) {
        var _this = this;
        errorContext_1.errorContext(function() {
          _this._throwIfClosed();
          if (!_this.isStopped) {
            _this.hasError = _this.isStopped = true;
            _this.thrownError = err;
            var observers = _this.observers;
            while (observers.length) {
              observers.shift().error(err);
            }
          }
        });
      };
      Subject3.prototype.complete = function() {
        var _this = this;
        errorContext_1.errorContext(function() {
          _this._throwIfClosed();
          if (!_this.isStopped) {
            _this.isStopped = true;
            var observers = _this.observers;
            while (observers.length) {
              observers.shift().complete();
            }
          }
        });
      };
      Subject3.prototype.unsubscribe = function() {
        this.isStopped = this.closed = true;
        this.observers = this.currentObservers = null;
      };
      Object.defineProperty(Subject3.prototype, "observed", {
        get: function() {
          var _a6;
          return ((_a6 = this.observers) === null || _a6 === void 0 ? void 0 : _a6.length) > 0;
        },
        enumerable: false,
        configurable: true
      });
      Subject3.prototype._trySubscribe = function(subscriber) {
        this._throwIfClosed();
        return _super.prototype._trySubscribe.call(this, subscriber);
      };
      Subject3.prototype._subscribe = function(subscriber) {
        this._throwIfClosed();
        this._checkFinalizedStatuses(subscriber);
        return this._innerSubscribe(subscriber);
      };
      Subject3.prototype._innerSubscribe = function(subscriber) {
        var _this = this;
        var _a6 = this, hasError = _a6.hasError, isStopped = _a6.isStopped, observers = _a6.observers;
        if (hasError || isStopped) {
          return Subscription_1.EMPTY_SUBSCRIPTION;
        }
        this.currentObservers = null;
        observers.push(subscriber);
        return new Subscription_1.Subscription(function() {
          _this.currentObservers = null;
          arrRemove_1.arrRemove(observers, subscriber);
        });
      };
      Subject3.prototype._checkFinalizedStatuses = function(subscriber) {
        var _a6 = this, hasError = _a6.hasError, thrownError = _a6.thrownError, isStopped = _a6.isStopped;
        if (hasError) {
          subscriber.error(thrownError);
        } else if (isStopped) {
          subscriber.complete();
        }
      };
      Subject3.prototype.asObservable = function() {
        var observable = new Observable_1.Observable();
        observable.source = this;
        return observable;
      };
      Subject3.create = function(destination, source2) {
        return new AnonymousSubject(destination, source2);
      };
      return Subject3;
    })(Observable_1.Observable);
    exports2.Subject = Subject2;
    var AnonymousSubject = (function(_super) {
      __extends(AnonymousSubject2, _super);
      function AnonymousSubject2(destination, source2) {
        var _this = _super.call(this) || this;
        _this.destination = destination;
        _this.source = source2;
        return _this;
      }
      AnonymousSubject2.prototype.next = function(value) {
        var _a6, _b;
        (_b = (_a6 = this.destination) === null || _a6 === void 0 ? void 0 : _a6.next) === null || _b === void 0 ? void 0 : _b.call(_a6, value);
      };
      AnonymousSubject2.prototype.error = function(err) {
        var _a6, _b;
        (_b = (_a6 = this.destination) === null || _a6 === void 0 ? void 0 : _a6.error) === null || _b === void 0 ? void 0 : _b.call(_a6, err);
      };
      AnonymousSubject2.prototype.complete = function() {
        var _a6, _b;
        (_b = (_a6 = this.destination) === null || _a6 === void 0 ? void 0 : _a6.complete) === null || _b === void 0 ? void 0 : _b.call(_a6);
      };
      AnonymousSubject2.prototype._subscribe = function(subscriber) {
        var _a6, _b;
        return (_b = (_a6 = this.source) === null || _a6 === void 0 ? void 0 : _a6.subscribe(subscriber)) !== null && _b !== void 0 ? _b : Subscription_1.EMPTY_SUBSCRIPTION;
      };
      return AnonymousSubject2;
    })(Subject2);
    exports2.AnonymousSubject = AnonymousSubject;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/BehaviorSubject.js
var require_BehaviorSubject = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/BehaviorSubject.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.BehaviorSubject = void 0;
    var Subject_1 = require_Subject();
    var BehaviorSubject = (function(_super) {
      __extends(BehaviorSubject2, _super);
      function BehaviorSubject2(_value) {
        var _this = _super.call(this) || this;
        _this._value = _value;
        return _this;
      }
      Object.defineProperty(BehaviorSubject2.prototype, "value", {
        get: function() {
          return this.getValue();
        },
        enumerable: false,
        configurable: true
      });
      BehaviorSubject2.prototype._subscribe = function(subscriber) {
        var subscription = _super.prototype._subscribe.call(this, subscriber);
        !subscription.closed && subscriber.next(this._value);
        return subscription;
      };
      BehaviorSubject2.prototype.getValue = function() {
        var _a6 = this, hasError = _a6.hasError, thrownError = _a6.thrownError, _value = _a6._value;
        if (hasError) {
          throw thrownError;
        }
        this._throwIfClosed();
        return _value;
      };
      BehaviorSubject2.prototype.next = function(value) {
        _super.prototype.next.call(this, this._value = value);
      };
      return BehaviorSubject2;
    })(Subject_1.Subject);
    exports2.BehaviorSubject = BehaviorSubject;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/dateTimestampProvider.js
var require_dateTimestampProvider = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/dateTimestampProvider.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.dateTimestampProvider = void 0;
    exports2.dateTimestampProvider = {
      now: function() {
        return (exports2.dateTimestampProvider.delegate || Date).now();
      },
      delegate: void 0
    };
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/ReplaySubject.js
var require_ReplaySubject = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/ReplaySubject.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ReplaySubject = void 0;
    var Subject_1 = require_Subject();
    var dateTimestampProvider_1 = require_dateTimestampProvider();
    var ReplaySubject = (function(_super) {
      __extends(ReplaySubject2, _super);
      function ReplaySubject2(_bufferSize, _windowTime, _timestampProvider) {
        if (_bufferSize === void 0) {
          _bufferSize = Infinity;
        }
        if (_windowTime === void 0) {
          _windowTime = Infinity;
        }
        if (_timestampProvider === void 0) {
          _timestampProvider = dateTimestampProvider_1.dateTimestampProvider;
        }
        var _this = _super.call(this) || this;
        _this._bufferSize = _bufferSize;
        _this._windowTime = _windowTime;
        _this._timestampProvider = _timestampProvider;
        _this._buffer = [];
        _this._infiniteTimeWindow = true;
        _this._infiniteTimeWindow = _windowTime === Infinity;
        _this._bufferSize = Math.max(1, _bufferSize);
        _this._windowTime = Math.max(1, _windowTime);
        return _this;
      }
      ReplaySubject2.prototype.next = function(value) {
        var _a6 = this, isStopped = _a6.isStopped, _buffer = _a6._buffer, _infiniteTimeWindow = _a6._infiniteTimeWindow, _timestampProvider = _a6._timestampProvider, _windowTime = _a6._windowTime;
        if (!isStopped) {
          _buffer.push(value);
          !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);
        }
        this._trimBuffer();
        _super.prototype.next.call(this, value);
      };
      ReplaySubject2.prototype._subscribe = function(subscriber) {
        this._throwIfClosed();
        this._trimBuffer();
        var subscription = this._innerSubscribe(subscriber);
        var _a6 = this, _infiniteTimeWindow = _a6._infiniteTimeWindow, _buffer = _a6._buffer;
        var copy2 = _buffer.slice();
        for (var i2 = 0; i2 < copy2.length && !subscriber.closed; i2 += _infiniteTimeWindow ? 1 : 2) {
          subscriber.next(copy2[i2]);
        }
        this._checkFinalizedStatuses(subscriber);
        return subscription;
      };
      ReplaySubject2.prototype._trimBuffer = function() {
        var _a6 = this, _bufferSize = _a6._bufferSize, _timestampProvider = _a6._timestampProvider, _buffer = _a6._buffer, _infiniteTimeWindow = _a6._infiniteTimeWindow;
        var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;
        _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);
        if (!_infiniteTimeWindow) {
          var now = _timestampProvider.now();
          var last = 0;
          for (var i2 = 1; i2 < _buffer.length && _buffer[i2] <= now; i2 += 2) {
            last = i2;
          }
          last && _buffer.splice(0, last + 1);
        }
      };
      return ReplaySubject2;
    })(Subject_1.Subject);
    exports2.ReplaySubject = ReplaySubject;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/AsyncSubject.js
var require_AsyncSubject = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/AsyncSubject.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.AsyncSubject = void 0;
    var Subject_1 = require_Subject();
    var AsyncSubject = (function(_super) {
      __extends(AsyncSubject2, _super);
      function AsyncSubject2() {
        var _this = _super !== null && _super.apply(this, arguments) || this;
        _this._value = null;
        _this._hasValue = false;
        _this._isComplete = false;
        return _this;
      }
      AsyncSubject2.prototype._checkFinalizedStatuses = function(subscriber) {
        var _a6 = this, hasError = _a6.hasError, _hasValue = _a6._hasValue, _value = _a6._value, thrownError = _a6.thrownError, isStopped = _a6.isStopped, _isComplete = _a6._isComplete;
        if (hasError) {
          subscriber.error(thrownError);
        } else if (isStopped || _isComplete) {
          _hasValue && subscriber.next(_value);
          subscriber.complete();
        }
      };
      AsyncSubject2.prototype.next = function(value) {
        if (!this.isStopped) {
          this._value = value;
          this._hasValue = true;
        }
      };
      AsyncSubject2.prototype.complete = function() {
        var _a6 = this, _hasValue = _a6._hasValue, _value = _a6._value, _isComplete = _a6._isComplete;
        if (!_isComplete) {
          this._isComplete = true;
          _hasValue && _super.prototype.next.call(this, _value);
          _super.prototype.complete.call(this);
        }
      };
      return AsyncSubject2;
    })(Subject_1.Subject);
    exports2.AsyncSubject = AsyncSubject;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/Action.js
var require_Action = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/Action.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.Action = void 0;
    var Subscription_1 = require_Subscription();
    var Action = (function(_super) {
      __extends(Action2, _super);
      function Action2(scheduler, work) {
        return _super.call(this) || this;
      }
      Action2.prototype.schedule = function(state, delay2) {
        if (delay2 === void 0) {
          delay2 = 0;
        }
        return this;
      };
      return Action2;
    })(Subscription_1.Subscription);
    exports2.Action = Action;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/intervalProvider.js
var require_intervalProvider = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/intervalProvider.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.intervalProvider = void 0;
    exports2.intervalProvider = {
      setInterval: function(handler, timeout) {
        var args = [];
        for (var _i = 2; _i < arguments.length; _i++) {
          args[_i - 2] = arguments[_i];
        }
        var delegate = exports2.intervalProvider.delegate;
        if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {
          return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));
        }
        return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));
      },
      clearInterval: function(handle6) {
        var delegate = exports2.intervalProvider.delegate;
        return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle6);
      },
      delegate: void 0
    };
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/AsyncAction.js
var require_AsyncAction = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/AsyncAction.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.AsyncAction = void 0;
    var Action_1 = require_Action();
    var intervalProvider_1 = require_intervalProvider();
    var arrRemove_1 = require_arrRemove();
    var AsyncAction = (function(_super) {
      __extends(AsyncAction2, _super);
      function AsyncAction2(scheduler, work) {
        var _this = _super.call(this, scheduler, work) || this;
        _this.scheduler = scheduler;
        _this.work = work;
        _this.pending = false;
        return _this;
      }
      AsyncAction2.prototype.schedule = function(state, delay2) {
        var _a6;
        if (delay2 === void 0) {
          delay2 = 0;
        }
        if (this.closed) {
          return this;
        }
        this.state = state;
        var id = this.id;
        var scheduler = this.scheduler;
        if (id != null) {
          this.id = this.recycleAsyncId(scheduler, id, delay2);
        }
        this.pending = true;
        this.delay = delay2;
        this.id = (_a6 = this.id) !== null && _a6 !== void 0 ? _a6 : this.requestAsyncId(scheduler, this.id, delay2);
        return this;
      };
      AsyncAction2.prototype.requestAsyncId = function(scheduler, _id, delay2) {
        if (delay2 === void 0) {
          delay2 = 0;
        }
        return intervalProvider_1.intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay2);
      };
      AsyncAction2.prototype.recycleAsyncId = function(_scheduler, id, delay2) {
        if (delay2 === void 0) {
          delay2 = 0;
        }
        if (delay2 != null && this.delay === delay2 && this.pending === false) {
          return id;
        }
        if (id != null) {
          intervalProvider_1.intervalProvider.clearInterval(id);
        }
        return void 0;
      };
      AsyncAction2.prototype.execute = function(state, delay2) {
        if (this.closed) {
          return new Error("executing a cancelled action");
        }
        this.pending = false;
        var error = this._execute(state, delay2);
        if (error) {
          return error;
        } else if (this.pending === false && this.id != null) {
          this.id = this.recycleAsyncId(this.scheduler, this.id, null);
        }
      };
      AsyncAction2.prototype._execute = function(state, _delay) {
        var errored = false;
        var errorValue;
        try {
          this.work(state);
        } catch (e2) {
          errored = true;
          errorValue = e2 ? e2 : new Error("Scheduled action threw falsy error");
        }
        if (errored) {
          this.unsubscribe();
          return errorValue;
        }
      };
      AsyncAction2.prototype.unsubscribe = function() {
        if (!this.closed) {
          var _a6 = this, id = _a6.id, scheduler = _a6.scheduler;
          var actions = scheduler.actions;
          this.work = this.state = this.scheduler = null;
          this.pending = false;
          arrRemove_1.arrRemove(actions, this);
          if (id != null) {
            this.id = this.recycleAsyncId(scheduler, id, null);
          }
          this.delay = null;
          _super.prototype.unsubscribe.call(this);
        }
      };
      return AsyncAction2;
    })(Action_1.Action);
    exports2.AsyncAction = AsyncAction;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/Immediate.js
var require_Immediate = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/Immediate.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.TestTools = exports2.Immediate = void 0;
    var nextHandle = 1;
    var resolved;
    var activeHandles = {};
    function findAndClearHandle(handle6) {
      if (handle6 in activeHandles) {
        delete activeHandles[handle6];
        return true;
      }
      return false;
    }
    exports2.Immediate = {
      setImmediate: function(cb) {
        var handle6 = nextHandle++;
        activeHandles[handle6] = true;
        if (!resolved) {
          resolved = Promise.resolve();
        }
        resolved.then(function() {
          return findAndClearHandle(handle6) && cb();
        });
        return handle6;
      },
      clearImmediate: function(handle6) {
        findAndClearHandle(handle6);
      }
    };
    exports2.TestTools = {
      pending: function() {
        return Object.keys(activeHandles).length;
      }
    };
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/immediateProvider.js
var require_immediateProvider = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/immediateProvider.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.immediateProvider = void 0;
    var Immediate_1 = require_Immediate();
    var setImmediate2 = Immediate_1.Immediate.setImmediate;
    var clearImmediate = Immediate_1.Immediate.clearImmediate;
    exports2.immediateProvider = {
      setImmediate: function() {
        var args = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          args[_i] = arguments[_i];
        }
        var delegate = exports2.immediateProvider.delegate;
        return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate2).apply(void 0, __spreadArray([], __read(args)));
      },
      clearImmediate: function(handle6) {
        var delegate = exports2.immediateProvider.delegate;
        return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle6);
      },
      delegate: void 0
    };
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/AsapAction.js
var require_AsapAction = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/AsapAction.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.AsapAction = void 0;
    var AsyncAction_1 = require_AsyncAction();
    var immediateProvider_1 = require_immediateProvider();
    var AsapAction = (function(_super) {
      __extends(AsapAction2, _super);
      function AsapAction2(scheduler, work) {
        var _this = _super.call(this, scheduler, work) || this;
        _this.scheduler = scheduler;
        _this.work = work;
        return _this;
      }
      AsapAction2.prototype.requestAsyncId = function(scheduler, id, delay2) {
        if (delay2 === void 0) {
          delay2 = 0;
        }
        if (delay2 !== null && delay2 > 0) {
          return _super.prototype.requestAsyncId.call(this, scheduler, id, delay2);
        }
        scheduler.actions.push(this);
        return scheduler._scheduled || (scheduler._scheduled = immediateProvider_1.immediateProvider.setImmediate(scheduler.flush.bind(scheduler, void 0)));
      };
      AsapAction2.prototype.recycleAsyncId = function(scheduler, id, delay2) {
        var _a6;
        if (delay2 === void 0) {
          delay2 = 0;
        }
        if (delay2 != null ? delay2 > 0 : this.delay > 0) {
          return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay2);
        }
        var actions = scheduler.actions;
        if (id != null && ((_a6 = actions[actions.length - 1]) === null || _a6 === void 0 ? void 0 : _a6.id) !== id) {
          immediateProvider_1.immediateProvider.clearImmediate(id);
          if (scheduler._scheduled === id) {
            scheduler._scheduled = void 0;
          }
        }
        return void 0;
      };
      return AsapAction2;
    })(AsyncAction_1.AsyncAction);
    exports2.AsapAction = AsapAction;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/Scheduler.js
var require_Scheduler = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/Scheduler.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.Scheduler = void 0;
    var dateTimestampProvider_1 = require_dateTimestampProvider();
    var Scheduler = (function() {
      function Scheduler2(schedulerActionCtor, now) {
        if (now === void 0) {
          now = Scheduler2.now;
        }
        this.schedulerActionCtor = schedulerActionCtor;
        this.now = now;
      }
      Scheduler2.prototype.schedule = function(work, delay2, state) {
        if (delay2 === void 0) {
          delay2 = 0;
        }
        return new this.schedulerActionCtor(this, work).schedule(state, delay2);
      };
      Scheduler2.now = dateTimestampProvider_1.dateTimestampProvider.now;
      return Scheduler2;
    })();
    exports2.Scheduler = Scheduler;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/AsyncScheduler.js
var require_AsyncScheduler = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/AsyncScheduler.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.AsyncScheduler = void 0;
    var Scheduler_1 = require_Scheduler();
    var AsyncScheduler = (function(_super) {
      __extends(AsyncScheduler2, _super);
      function AsyncScheduler2(SchedulerAction, now) {
        if (now === void 0) {
          now = Scheduler_1.Scheduler.now;
        }
        var _this = _super.call(this, SchedulerAction, now) || this;
        _this.actions = [];
        _this._active = false;
        return _this;
      }
      AsyncScheduler2.prototype.flush = function(action) {
        var actions = this.actions;
        if (this._active) {
          actions.push(action);
          return;
        }
        var error;
        this._active = true;
        do {
          if (error = action.execute(action.state, action.delay)) {
            break;
          }
        } while (action = actions.shift());
        this._active = false;
        if (error) {
          while (action = actions.shift()) {
            action.unsubscribe();
          }
          throw error;
        }
      };
      return AsyncScheduler2;
    })(Scheduler_1.Scheduler);
    exports2.AsyncScheduler = AsyncScheduler;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/AsapScheduler.js
var require_AsapScheduler = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/AsapScheduler.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.AsapScheduler = void 0;
    var AsyncScheduler_1 = require_AsyncScheduler();
    var AsapScheduler = (function(_super) {
      __extends(AsapScheduler2, _super);
      function AsapScheduler2() {
        return _super !== null && _super.apply(this, arguments) || this;
      }
      AsapScheduler2.prototype.flush = function(action) {
        this._active = true;
        var flushId = this._scheduled;
        this._scheduled = void 0;
        var actions = this.actions;
        var error;
        action = action || actions.shift();
        do {
          if (error = action.execute(action.state, action.delay)) {
            break;
          }
        } while ((action = actions[0]) && action.id === flushId && actions.shift());
        this._active = false;
        if (error) {
          while ((action = actions[0]) && action.id === flushId && actions.shift()) {
            action.unsubscribe();
          }
          throw error;
        }
      };
      return AsapScheduler2;
    })(AsyncScheduler_1.AsyncScheduler);
    exports2.AsapScheduler = AsapScheduler;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/asap.js
var require_asap2 = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/asap.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.asap = exports2.asapScheduler = void 0;
    var AsapAction_1 = require_AsapAction();
    var AsapScheduler_1 = require_AsapScheduler();
    exports2.asapScheduler = new AsapScheduler_1.AsapScheduler(AsapAction_1.AsapAction);
    exports2.asap = exports2.asapScheduler;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/async.js
var require_async2 = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/async.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.async = exports2.asyncScheduler = void 0;
    var AsyncAction_1 = require_AsyncAction();
    var AsyncScheduler_1 = require_AsyncScheduler();
    exports2.asyncScheduler = new AsyncScheduler_1.AsyncScheduler(AsyncAction_1.AsyncAction);
    exports2.async = exports2.asyncScheduler;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/QueueAction.js
var require_QueueAction = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/QueueAction.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.QueueAction = void 0;
    var AsyncAction_1 = require_AsyncAction();
    var QueueAction = (function(_super) {
      __extends(QueueAction2, _super);
      function QueueAction2(scheduler, work) {
        var _this = _super.call(this, scheduler, work) || this;
        _this.scheduler = scheduler;
        _this.work = work;
        return _this;
      }
      QueueAction2.prototype.schedule = function(state, delay2) {
        if (delay2 === void 0) {
          delay2 = 0;
        }
        if (delay2 > 0) {
          return _super.prototype.schedule.call(this, state, delay2);
        }
        this.delay = delay2;
        this.state = state;
        this.scheduler.flush(this);
        return this;
      };
      QueueAction2.prototype.execute = function(state, delay2) {
        return delay2 > 0 || this.closed ? _super.prototype.execute.call(this, state, delay2) : this._execute(state, delay2);
      };
      QueueAction2.prototype.requestAsyncId = function(scheduler, id, delay2) {
        if (delay2 === void 0) {
          delay2 = 0;
        }
        if (delay2 != null && delay2 > 0 || delay2 == null && this.delay > 0) {
          return _super.prototype.requestAsyncId.call(this, scheduler, id, delay2);
        }
        scheduler.flush(this);
        return 0;
      };
      return QueueAction2;
    })(AsyncAction_1.AsyncAction);
    exports2.QueueAction = QueueAction;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/QueueScheduler.js
var require_QueueScheduler = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/QueueScheduler.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.QueueScheduler = void 0;
    var AsyncScheduler_1 = require_AsyncScheduler();
    var QueueScheduler = (function(_super) {
      __extends(QueueScheduler2, _super);
      function QueueScheduler2() {
        return _super !== null && _super.apply(this, arguments) || this;
      }
      return QueueScheduler2;
    })(AsyncScheduler_1.AsyncScheduler);
    exports2.QueueScheduler = QueueScheduler;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/queue.js
var require_queue2 = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/queue.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.queue = exports2.queueScheduler = void 0;
    var QueueAction_1 = require_QueueAction();
    var QueueScheduler_1 = require_QueueScheduler();
    exports2.queueScheduler = new QueueScheduler_1.QueueScheduler(QueueAction_1.QueueAction);
    exports2.queue = exports2.queueScheduler;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameAction.js
var require_AnimationFrameAction = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameAction.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.AnimationFrameAction = void 0;
    var AsyncAction_1 = require_AsyncAction();
    var animationFrameProvider_1 = require_animationFrameProvider();
    var AnimationFrameAction = (function(_super) {
      __extends(AnimationFrameAction2, _super);
      function AnimationFrameAction2(scheduler, work) {
        var _this = _super.call(this, scheduler, work) || this;
        _this.scheduler = scheduler;
        _this.work = work;
        return _this;
      }
      AnimationFrameAction2.prototype.requestAsyncId = function(scheduler, id, delay2) {
        if (delay2 === void 0) {
          delay2 = 0;
        }
        if (delay2 !== null && delay2 > 0) {
          return _super.prototype.requestAsyncId.call(this, scheduler, id, delay2);
        }
        scheduler.actions.push(this);
        return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider_1.animationFrameProvider.requestAnimationFrame(function() {
          return scheduler.flush(void 0);
        }));
      };
      AnimationFrameAction2.prototype.recycleAsyncId = function(scheduler, id, delay2) {
        var _a6;
        if (delay2 === void 0) {
          delay2 = 0;
        }
        if (delay2 != null ? delay2 > 0 : this.delay > 0) {
          return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay2);
        }
        var actions = scheduler.actions;
        if (id != null && ((_a6 = actions[actions.length - 1]) === null || _a6 === void 0 ? void 0 : _a6.id) !== id) {
          animationFrameProvider_1.animationFrameProvider.cancelAnimationFrame(id);
          scheduler._scheduled = void 0;
        }
        return void 0;
      };
      return AnimationFrameAction2;
    })(AsyncAction_1.AsyncAction);
    exports2.AnimationFrameAction = AnimationFrameAction;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameScheduler.js
var require_AnimationFrameScheduler = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameScheduler.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.AnimationFrameScheduler = void 0;
    var AsyncScheduler_1 = require_AsyncScheduler();
    var AnimationFrameScheduler = (function(_super) {
      __extends(AnimationFrameScheduler2, _super);
      function AnimationFrameScheduler2() {
        return _super !== null && _super.apply(this, arguments) || this;
      }
      AnimationFrameScheduler2.prototype.flush = function(action) {
        this._active = true;
        var flushId = this._scheduled;
        this._scheduled = void 0;
        var actions = this.actions;
        var error;
        action = action || actions.shift();
        do {
          if (error = action.execute(action.state, action.delay)) {
            break;
          }
        } while ((action = actions[0]) && action.id === flushId && actions.shift());
        this._active = false;
        if (error) {
          while ((action = actions[0]) && action.id === flushId && actions.shift()) {
            action.unsubscribe();
          }
          throw error;
        }
      };
      return AnimationFrameScheduler2;
    })(AsyncScheduler_1.AsyncScheduler);
    exports2.AnimationFrameScheduler = AnimationFrameScheduler;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/animationFrame.js
var require_animationFrame = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/animationFrame.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.animationFrame = exports2.animationFrameScheduler = void 0;
    var AnimationFrameAction_1 = require_AnimationFrameAction();
    var AnimationFrameScheduler_1 = require_AnimationFrameScheduler();
    exports2.animationFrameScheduler = new AnimationFrameScheduler_1.AnimationFrameScheduler(AnimationFrameAction_1.AnimationFrameAction);
    exports2.animationFrame = exports2.animationFrameScheduler;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduler/VirtualTimeScheduler.js
var require_VirtualTimeScheduler = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduler/VirtualTimeScheduler.js"(exports2) {
    "use strict";
    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ (function() {
      var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
          d2.__proto__ = b2;
        } || function(d2, b2) {
          for (var p5 in b2) if (Object.prototype.hasOwnProperty.call(b2, p5)) d2[p5] = b2[p5];
        };
        return extendStatics(d, b);
      };
      return function(d, b) {
        if (typeof b !== "function" && b !== null)
          throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() {
          this.constructor = d;
        }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
    })();
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.VirtualAction = exports2.VirtualTimeScheduler = void 0;
    var AsyncAction_1 = require_AsyncAction();
    var Subscription_1 = require_Subscription();
    var AsyncScheduler_1 = require_AsyncScheduler();
    var VirtualTimeScheduler = (function(_super) {
      __extends(VirtualTimeScheduler2, _super);
      function VirtualTimeScheduler2(schedulerActionCtor, maxFrames) {
        if (schedulerActionCtor === void 0) {
          schedulerActionCtor = VirtualAction;
        }
        if (maxFrames === void 0) {
          maxFrames = Infinity;
        }
        var _this = _super.call(this, schedulerActionCtor, function() {
          return _this.frame;
        }) || this;
        _this.maxFrames = maxFrames;
        _this.frame = 0;
        _this.index = -1;
        return _this;
      }
      VirtualTimeScheduler2.prototype.flush = function() {
        var _a6 = this, actions = _a6.actions, maxFrames = _a6.maxFrames;
        var error;
        var action;
        while ((action = actions[0]) && action.delay <= maxFrames) {
          actions.shift();
          this.frame = action.delay;
          if (error = action.execute(action.state, action.delay)) {
            break;
          }
        }
        if (error) {
          while (action = actions.shift()) {
            action.unsubscribe();
          }
          throw error;
        }
      };
      VirtualTimeScheduler2.frameTimeFactor = 10;
      return VirtualTimeScheduler2;
    })(AsyncScheduler_1.AsyncScheduler);
    exports2.VirtualTimeScheduler = VirtualTimeScheduler;
    var VirtualAction = (function(_super) {
      __extends(VirtualAction2, _super);
      function VirtualAction2(scheduler, work, index4) {
        if (index4 === void 0) {
          index4 = scheduler.index += 1;
        }
        var _this = _super.call(this, scheduler, work) || this;
        _this.scheduler = scheduler;
        _this.work = work;
        _this.index = index4;
        _this.active = true;
        _this.index = scheduler.index = index4;
        return _this;
      }
      VirtualAction2.prototype.schedule = function(state, delay2) {
        if (delay2 === void 0) {
          delay2 = 0;
        }
        if (Number.isFinite(delay2)) {
          if (!this.id) {
            return _super.prototype.schedule.call(this, state, delay2);
          }
          this.active = false;
          var action = new VirtualAction2(this.scheduler, this.work);
          this.add(action);
          return action.schedule(state, delay2);
        } else {
          return Subscription_1.Subscription.EMPTY;
        }
      };
      VirtualAction2.prototype.requestAsyncId = function(scheduler, id, delay2) {
        if (delay2 === void 0) {
          delay2 = 0;
        }
        this.delay = scheduler.frame + delay2;
        var actions = scheduler.actions;
        actions.push(this);
        actions.sort(VirtualAction2.sortActions);
        return 1;
      };
      VirtualAction2.prototype.recycleAsyncId = function(scheduler, id, delay2) {
        if (delay2 === void 0) {
          delay2 = 0;
        }
        return void 0;
      };
      VirtualAction2.prototype._execute = function(state, delay2) {
        if (this.active === true) {
          return _super.prototype._execute.call(this, state, delay2);
        }
      };
      VirtualAction2.sortActions = function(a2, b) {
        if (a2.delay === b.delay) {
          if (a2.index === b.index) {
            return 0;
          } else if (a2.index > b.index) {
            return 1;
          } else {
            return -1;
          }
        } else if (a2.delay > b.delay) {
          return 1;
        } else {
          return -1;
        }
      };
      return VirtualAction2;
    })(AsyncAction_1.AsyncAction);
    exports2.VirtualAction = VirtualAction;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/empty.js
var require_empty3 = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/empty.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.empty = exports2.EMPTY = void 0;
    var Observable_1 = require_Observable();
    exports2.EMPTY = new Observable_1.Observable(function(subscriber) {
      return subscriber.complete();
    });
    function empty4(scheduler) {
      return scheduler ? emptyScheduled(scheduler) : exports2.EMPTY;
    }
    exports2.empty = empty4;
    function emptyScheduled(scheduler) {
      return new Observable_1.Observable(function(subscriber) {
        return scheduler.schedule(function() {
          return subscriber.complete();
        });
      });
    }
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/isScheduler.js
var require_isScheduler = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/isScheduler.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isScheduler = void 0;
    var isFunction_1 = require_isFunction();
    function isScheduler(value) {
      return value && isFunction_1.isFunction(value.schedule);
    }
    exports2.isScheduler = isScheduler;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/args.js
var require_args = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/args.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.popNumber = exports2.popScheduler = exports2.popResultSelector = void 0;
    var isFunction_1 = require_isFunction();
    var isScheduler_1 = require_isScheduler();
    function last(arr) {
      return arr[arr.length - 1];
    }
    function popResultSelector(args) {
      return isFunction_1.isFunction(last(args)) ? args.pop() : void 0;
    }
    exports2.popResultSelector = popResultSelector;
    function popScheduler(args) {
      return isScheduler_1.isScheduler(last(args)) ? args.pop() : void 0;
    }
    exports2.popScheduler = popScheduler;
    function popNumber(args, defaultValue) {
      return typeof last(args) === "number" ? args.pop() : defaultValue;
    }
    exports2.popNumber = popNumber;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/isArrayLike.js
var require_isArrayLike = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/isArrayLike.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isArrayLike = void 0;
    exports2.isArrayLike = (function(x2) {
      return x2 && typeof x2.length === "number" && typeof x2 !== "function";
    });
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/isPromise.js
var require_isPromise = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/isPromise.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isPromise = void 0;
    var isFunction_1 = require_isFunction();
    function isPromise(value) {
      return isFunction_1.isFunction(value === null || value === void 0 ? void 0 : value.then);
    }
    exports2.isPromise = isPromise;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/isInteropObservable.js
var require_isInteropObservable = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/isInteropObservable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isInteropObservable = void 0;
    var observable_1 = require_observable();
    var isFunction_1 = require_isFunction();
    function isInteropObservable(input3) {
      return isFunction_1.isFunction(input3[observable_1.observable]);
    }
    exports2.isInteropObservable = isInteropObservable;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/isAsyncIterable.js
var require_isAsyncIterable = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/isAsyncIterable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isAsyncIterable = void 0;
    var isFunction_1 = require_isFunction();
    function isAsyncIterable2(obj) {
      return Symbol.asyncIterator && isFunction_1.isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);
    }
    exports2.isAsyncIterable = isAsyncIterable2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/throwUnobservableError.js
var require_throwUnobservableError = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/throwUnobservableError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.createInvalidObservableTypeError = void 0;
    function createInvalidObservableTypeError(input3) {
      return new TypeError("You provided " + (input3 !== null && typeof input3 === "object" ? "an invalid object" : "'" + input3 + "'") + " where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.");
    }
    exports2.createInvalidObservableTypeError = createInvalidObservableTypeError;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/symbol/iterator.js
var require_iterator = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/symbol/iterator.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.iterator = exports2.getSymbolIterator = void 0;
    function getSymbolIterator() {
      if (typeof Symbol !== "function" || !Symbol.iterator) {
        return "@@iterator";
      }
      return Symbol.iterator;
    }
    exports2.getSymbolIterator = getSymbolIterator;
    exports2.iterator = getSymbolIterator();
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/isIterable.js
var require_isIterable = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/isIterable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isIterable = void 0;
    var iterator_1 = require_iterator();
    var isFunction_1 = require_isFunction();
    function isIterable2(input3) {
      return isFunction_1.isFunction(input3 === null || input3 === void 0 ? void 0 : input3[iterator_1.iterator]);
    }
    exports2.isIterable = isIterable2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/isReadableStreamLike.js
var require_isReadableStreamLike = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/isReadableStreamLike.js"(exports2) {
    "use strict";
    var __generator = exports2 && exports2.__generator || function(thisArg, body3) {
      var _2 = { label: 0, sent: function() {
        if (t2[0] & 1) throw t2[1];
        return t2[1];
      }, trys: [], ops: [] }, f3, y, t2, g;
      return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
        return this;
      }), g;
      function verb(n) {
        return function(v) {
          return step([n, v]);
        };
      }
      function step(op2) {
        if (f3) throw new TypeError("Generator is already executing.");
        while (_2) try {
          if (f3 = 1, y && (t2 = op2[0] & 2 ? y["return"] : op2[0] ? y["throw"] || ((t2 = y["return"]) && t2.call(y), 0) : y.next) && !(t2 = t2.call(y, op2[1])).done) return t2;
          if (y = 0, t2) op2 = [op2[0] & 2, t2.value];
          switch (op2[0]) {
            case 0:
            case 1:
              t2 = op2;
              break;
            case 4:
              _2.label++;
              return { value: op2[1], done: false };
            case 5:
              _2.label++;
              y = op2[1];
              op2 = [0];
              continue;
            case 7:
              op2 = _2.ops.pop();
              _2.trys.pop();
              continue;
            default:
              if (!(t2 = _2.trys, t2 = t2.length > 0 && t2[t2.length - 1]) && (op2[0] === 6 || op2[0] === 2)) {
                _2 = 0;
                continue;
              }
              if (op2[0] === 3 && (!t2 || op2[1] > t2[0] && op2[1] < t2[3])) {
                _2.label = op2[1];
                break;
              }
              if (op2[0] === 6 && _2.label < t2[1]) {
                _2.label = t2[1];
                t2 = op2;
                break;
              }
              if (t2 && _2.label < t2[2]) {
                _2.label = t2[2];
                _2.ops.push(op2);
                break;
              }
              if (t2[2]) _2.ops.pop();
              _2.trys.pop();
              continue;
          }
          op2 = body3.call(thisArg, _2);
        } catch (e2) {
          op2 = [6, e2];
          y = 0;
        } finally {
          f3 = t2 = 0;
        }
        if (op2[0] & 5) throw op2[1];
        return { value: op2[0] ? op2[1] : void 0, done: true };
      }
    };
    var __await = exports2 && exports2.__await || function(v) {
      return this instanceof __await ? (this.v = v, this) : new __await(v);
    };
    var __asyncGenerator = exports2 && exports2.__asyncGenerator || function(thisArg, _arguments, generator) {
      if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
      var g = generator.apply(thisArg, _arguments || []), i2, q2 = [];
      return i2 = {}, verb("next"), verb("throw"), verb("return"), i2[Symbol.asyncIterator] = function() {
        return this;
      }, i2;
      function verb(n) {
        if (g[n]) i2[n] = function(v) {
          return new Promise(function(a2, b) {
            q2.push([n, v, a2, b]) > 1 || resume(n, v);
          });
        };
      }
      function resume(n, v) {
        try {
          step(g[n](v));
        } catch (e2) {
          settle(q2[0][3], e2);
        }
      }
      function step(r2) {
        r2.value instanceof __await ? Promise.resolve(r2.value.v).then(fulfill, reject) : settle(q2[0][2], r2);
      }
      function fulfill(value) {
        resume("next", value);
      }
      function reject(value) {
        resume("throw", value);
      }
      function settle(f3, v) {
        if (f3(v), q2.shift(), q2.length) resume(q2[0][0], q2[0][1]);
      }
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isReadableStreamLike = exports2.readableStreamLikeToAsyncGenerator = void 0;
    var isFunction_1 = require_isFunction();
    function readableStreamLikeToAsyncGenerator(readableStream) {
      return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {
        var reader, _a6, value, done;
        return __generator(this, function(_b) {
          switch (_b.label) {
            case 0:
              reader = readableStream.getReader();
              _b.label = 1;
            case 1:
              _b.trys.push([1, , 9, 10]);
              _b.label = 2;
            case 2:
              if (false) return [3, 8];
              return [4, __await(reader.read())];
            case 3:
              _a6 = _b.sent(), value = _a6.value, done = _a6.done;
              if (!done) return [3, 5];
              return [4, __await(void 0)];
            case 4:
              return [2, _b.sent()];
            case 5:
              return [4, __await(value)];
            case 6:
              return [4, _b.sent()];
            case 7:
              _b.sent();
              return [3, 2];
            case 8:
              return [3, 10];
            case 9:
              reader.releaseLock();
              return [7];
            case 10:
              return [2];
          }
        });
      });
    }
    exports2.readableStreamLikeToAsyncGenerator = readableStreamLikeToAsyncGenerator;
    function isReadableStreamLike(obj) {
      return isFunction_1.isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);
    }
    exports2.isReadableStreamLike = isReadableStreamLike;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/innerFrom.js
var require_innerFrom = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/innerFrom.js"(exports2) {
    "use strict";
    var __awaiter = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) {
      function adopt(value) {
        return value instanceof P ? value : new P(function(resolve9) {
          resolve9(value);
        });
      }
      return new (P || (P = Promise))(function(resolve9, reject) {
        function fulfilled(value) {
          try {
            step(generator.next(value));
          } catch (e2) {
            reject(e2);
          }
        }
        function rejected(value) {
          try {
            step(generator["throw"](value));
          } catch (e2) {
            reject(e2);
          }
        }
        function step(result) {
          result.done ? resolve9(result.value) : adopt(result.value).then(fulfilled, rejected);
        }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
      });
    };
    var __generator = exports2 && exports2.__generator || function(thisArg, body3) {
      var _2 = { label: 0, sent: function() {
        if (t2[0] & 1) throw t2[1];
        return t2[1];
      }, trys: [], ops: [] }, f3, y, t2, g;
      return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
        return this;
      }), g;
      function verb(n) {
        return function(v) {
          return step([n, v]);
        };
      }
      function step(op2) {
        if (f3) throw new TypeError("Generator is already executing.");
        while (_2) try {
          if (f3 = 1, y && (t2 = op2[0] & 2 ? y["return"] : op2[0] ? y["throw"] || ((t2 = y["return"]) && t2.call(y), 0) : y.next) && !(t2 = t2.call(y, op2[1])).done) return t2;
          if (y = 0, t2) op2 = [op2[0] & 2, t2.value];
          switch (op2[0]) {
            case 0:
            case 1:
              t2 = op2;
              break;
            case 4:
              _2.label++;
              return { value: op2[1], done: false };
            case 5:
              _2.label++;
              y = op2[1];
              op2 = [0];
              continue;
            case 7:
              op2 = _2.ops.pop();
              _2.trys.pop();
              continue;
            default:
              if (!(t2 = _2.trys, t2 = t2.length > 0 && t2[t2.length - 1]) && (op2[0] === 6 || op2[0] === 2)) {
                _2 = 0;
                continue;
              }
              if (op2[0] === 3 && (!t2 || op2[1] > t2[0] && op2[1] < t2[3])) {
                _2.label = op2[1];
                break;
              }
              if (op2[0] === 6 && _2.label < t2[1]) {
                _2.label = t2[1];
                t2 = op2;
                break;
              }
              if (t2 && _2.label < t2[2]) {
                _2.label = t2[2];
                _2.ops.push(op2);
                break;
              }
              if (t2[2]) _2.ops.pop();
              _2.trys.pop();
              continue;
          }
          op2 = body3.call(thisArg, _2);
        } catch (e2) {
          op2 = [6, e2];
          y = 0;
        } finally {
          f3 = t2 = 0;
        }
        if (op2[0] & 5) throw op2[1];
        return { value: op2[0] ? op2[1] : void 0, done: true };
      }
    };
    var __asyncValues = exports2 && exports2.__asyncValues || function(o) {
      if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
      var m2 = o[Symbol.asyncIterator], i2;
      return m2 ? m2.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i2 = {}, verb("next"), verb("throw"), verb("return"), i2[Symbol.asyncIterator] = function() {
        return this;
      }, i2);
      function verb(n) {
        i2[n] = o[n] && function(v) {
          return new Promise(function(resolve9, reject) {
            v = o[n](v), settle(resolve9, reject, v.done, v.value);
          });
        };
      }
      function settle(resolve9, reject, d, v) {
        Promise.resolve(v).then(function(v2) {
          resolve9({ value: v2, done: d });
        }, reject);
      }
    };
    var __values = exports2 && exports2.__values || function(o) {
      var s5 = typeof Symbol === "function" && Symbol.iterator, m2 = s5 && o[s5], i2 = 0;
      if (m2) return m2.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i2 >= o.length) o = void 0;
          return { value: o && o[i2++], done: !o };
        }
      };
      throw new TypeError(s5 ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.fromReadableStreamLike = exports2.fromAsyncIterable = exports2.fromIterable = exports2.fromPromise = exports2.fromArrayLike = exports2.fromInteropObservable = exports2.innerFrom = void 0;
    var isArrayLike_1 = require_isArrayLike();
    var isPromise_1 = require_isPromise();
    var Observable_1 = require_Observable();
    var isInteropObservable_1 = require_isInteropObservable();
    var isAsyncIterable_1 = require_isAsyncIterable();
    var throwUnobservableError_1 = require_throwUnobservableError();
    var isIterable_1 = require_isIterable();
    var isReadableStreamLike_1 = require_isReadableStreamLike();
    var isFunction_1 = require_isFunction();
    var reportUnhandledError_1 = require_reportUnhandledError();
    var observable_1 = require_observable();
    function innerFrom(input3) {
      if (input3 instanceof Observable_1.Observable) {
        return input3;
      }
      if (input3 != null) {
        if (isInteropObservable_1.isInteropObservable(input3)) {
          return fromInteropObservable(input3);
        }
        if (isArrayLike_1.isArrayLike(input3)) {
          return fromArrayLike2(input3);
        }
        if (isPromise_1.isPromise(input3)) {
          return fromPromise(input3);
        }
        if (isAsyncIterable_1.isAsyncIterable(input3)) {
          return fromAsyncIterable(input3);
        }
        if (isIterable_1.isIterable(input3)) {
          return fromIterable(input3);
        }
        if (isReadableStreamLike_1.isReadableStreamLike(input3)) {
          return fromReadableStreamLike(input3);
        }
      }
      throw throwUnobservableError_1.createInvalidObservableTypeError(input3);
    }
    exports2.innerFrom = innerFrom;
    function fromInteropObservable(obj) {
      return new Observable_1.Observable(function(subscriber) {
        var obs = obj[observable_1.observable]();
        if (isFunction_1.isFunction(obs.subscribe)) {
          return obs.subscribe(subscriber);
        }
        throw new TypeError("Provided object does not correctly implement Symbol.observable");
      });
    }
    exports2.fromInteropObservable = fromInteropObservable;
    function fromArrayLike2(array) {
      return new Observable_1.Observable(function(subscriber) {
        for (var i2 = 0; i2 < array.length && !subscriber.closed; i2++) {
          subscriber.next(array[i2]);
        }
        subscriber.complete();
      });
    }
    exports2.fromArrayLike = fromArrayLike2;
    function fromPromise(promise) {
      return new Observable_1.Observable(function(subscriber) {
        promise.then(function(value) {
          if (!subscriber.closed) {
            subscriber.next(value);
            subscriber.complete();
          }
        }, function(err) {
          return subscriber.error(err);
        }).then(null, reportUnhandledError_1.reportUnhandledError);
      });
    }
    exports2.fromPromise = fromPromise;
    function fromIterable(iterable) {
      return new Observable_1.Observable(function(subscriber) {
        var e_1, _a6;
        try {
          for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {
            var value = iterable_1_1.value;
            subscriber.next(value);
            if (subscriber.closed) {
              return;
            }
          }
        } catch (e_1_1) {
          e_1 = { error: e_1_1 };
        } finally {
          try {
            if (iterable_1_1 && !iterable_1_1.done && (_a6 = iterable_1.return)) _a6.call(iterable_1);
          } finally {
            if (e_1) throw e_1.error;
          }
        }
        subscriber.complete();
      });
    }
    exports2.fromIterable = fromIterable;
    function fromAsyncIterable(asyncIterable) {
      return new Observable_1.Observable(function(subscriber) {
        process11(asyncIterable, subscriber).catch(function(err) {
          return subscriber.error(err);
        });
      });
    }
    exports2.fromAsyncIterable = fromAsyncIterable;
    function fromReadableStreamLike(readableStream) {
      return fromAsyncIterable(isReadableStreamLike_1.readableStreamLikeToAsyncGenerator(readableStream));
    }
    exports2.fromReadableStreamLike = fromReadableStreamLike;
    function process11(asyncIterable, subscriber) {
      var asyncIterable_1, asyncIterable_1_1;
      var e_2, _a6;
      return __awaiter(this, void 0, void 0, function() {
        var value, e_2_1;
        return __generator(this, function(_b) {
          switch (_b.label) {
            case 0:
              _b.trys.push([0, 5, 6, 11]);
              asyncIterable_1 = __asyncValues(asyncIterable);
              _b.label = 1;
            case 1:
              return [4, asyncIterable_1.next()];
            case 2:
              if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];
              value = asyncIterable_1_1.value;
              subscriber.next(value);
              if (subscriber.closed) {
                return [2];
              }
              _b.label = 3;
            case 3:
              return [3, 1];
            case 4:
              return [3, 11];
            case 5:
              e_2_1 = _b.sent();
              e_2 = { error: e_2_1 };
              return [3, 11];
            case 6:
              _b.trys.push([6, , 9, 10]);
              if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a6 = asyncIterable_1.return))) return [3, 8];
              return [4, _a6.call(asyncIterable_1)];
            case 7:
              _b.sent();
              _b.label = 8;
            case 8:
              return [3, 10];
            case 9:
              if (e_2) throw e_2.error;
              return [7];
            case 10:
              return [7];
            case 11:
              subscriber.complete();
              return [2];
          }
        });
      });
    }
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/executeSchedule.js
var require_executeSchedule = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/executeSchedule.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.executeSchedule = void 0;
    function executeSchedule(parentSubscription, scheduler, work, delay2, repeat2) {
      if (delay2 === void 0) {
        delay2 = 0;
      }
      if (repeat2 === void 0) {
        repeat2 = false;
      }
      var scheduleSubscription = scheduler.schedule(function() {
        work();
        if (repeat2) {
          parentSubscription.add(this.schedule(null, delay2));
        } else {
          this.unsubscribe();
        }
      }, delay2);
      parentSubscription.add(scheduleSubscription);
      if (!repeat2) {
        return scheduleSubscription;
      }
    }
    exports2.executeSchedule = executeSchedule;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/observeOn.js
var require_observeOn = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/observeOn.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.observeOn = void 0;
    var executeSchedule_1 = require_executeSchedule();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function observeOn(scheduler, delay2) {
      if (delay2 === void 0) {
        delay2 = 0;
      }
      return lift_1.operate(function(source2, subscriber) {
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          return executeSchedule_1.executeSchedule(subscriber, scheduler, function() {
            return subscriber.next(value);
          }, delay2);
        }, function() {
          return executeSchedule_1.executeSchedule(subscriber, scheduler, function() {
            return subscriber.complete();
          }, delay2);
        }, function(err) {
          return executeSchedule_1.executeSchedule(subscriber, scheduler, function() {
            return subscriber.error(err);
          }, delay2);
        }));
      });
    }
    exports2.observeOn = observeOn;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/subscribeOn.js
var require_subscribeOn = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/subscribeOn.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.subscribeOn = void 0;
    var lift_1 = require_lift();
    function subscribeOn(scheduler, delay2) {
      if (delay2 === void 0) {
        delay2 = 0;
      }
      return lift_1.operate(function(source2, subscriber) {
        subscriber.add(scheduler.schedule(function() {
          return source2.subscribe(subscriber);
        }, delay2));
      });
    }
    exports2.subscribeOn = subscribeOn;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleObservable.js
var require_scheduleObservable = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleObservable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.scheduleObservable = void 0;
    var innerFrom_1 = require_innerFrom();
    var observeOn_1 = require_observeOn();
    var subscribeOn_1 = require_subscribeOn();
    function scheduleObservable(input3, scheduler) {
      return innerFrom_1.innerFrom(input3).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler));
    }
    exports2.scheduleObservable = scheduleObservable;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduled/schedulePromise.js
var require_schedulePromise = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduled/schedulePromise.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.schedulePromise = void 0;
    var innerFrom_1 = require_innerFrom();
    var observeOn_1 = require_observeOn();
    var subscribeOn_1 = require_subscribeOn();
    function schedulePromise(input3, scheduler) {
      return innerFrom_1.innerFrom(input3).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler));
    }
    exports2.schedulePromise = schedulePromise;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleArray.js
var require_scheduleArray = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleArray.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.scheduleArray = void 0;
    var Observable_1 = require_Observable();
    function scheduleArray(input3, scheduler) {
      return new Observable_1.Observable(function(subscriber) {
        var i2 = 0;
        return scheduler.schedule(function() {
          if (i2 === input3.length) {
            subscriber.complete();
          } else {
            subscriber.next(input3[i2++]);
            if (!subscriber.closed) {
              this.schedule();
            }
          }
        });
      });
    }
    exports2.scheduleArray = scheduleArray;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleIterable.js
var require_scheduleIterable = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleIterable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.scheduleIterable = void 0;
    var Observable_1 = require_Observable();
    var iterator_1 = require_iterator();
    var isFunction_1 = require_isFunction();
    var executeSchedule_1 = require_executeSchedule();
    function scheduleIterable(input3, scheduler) {
      return new Observable_1.Observable(function(subscriber) {
        var iterator;
        executeSchedule_1.executeSchedule(subscriber, scheduler, function() {
          iterator = input3[iterator_1.iterator]();
          executeSchedule_1.executeSchedule(subscriber, scheduler, function() {
            var _a6;
            var value;
            var done;
            try {
              _a6 = iterator.next(), value = _a6.value, done = _a6.done;
            } catch (err) {
              subscriber.error(err);
              return;
            }
            if (done) {
              subscriber.complete();
            } else {
              subscriber.next(value);
            }
          }, 0, true);
        });
        return function() {
          return isFunction_1.isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return();
        };
      });
    }
    exports2.scheduleIterable = scheduleIterable;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleAsyncIterable.js
var require_scheduleAsyncIterable = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleAsyncIterable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.scheduleAsyncIterable = void 0;
    var Observable_1 = require_Observable();
    var executeSchedule_1 = require_executeSchedule();
    function scheduleAsyncIterable(input3, scheduler) {
      if (!input3) {
        throw new Error("Iterable cannot be null");
      }
      return new Observable_1.Observable(function(subscriber) {
        executeSchedule_1.executeSchedule(subscriber, scheduler, function() {
          var iterator = input3[Symbol.asyncIterator]();
          executeSchedule_1.executeSchedule(subscriber, scheduler, function() {
            iterator.next().then(function(result) {
              if (result.done) {
                subscriber.complete();
              } else {
                subscriber.next(result.value);
              }
            });
          }, 0, true);
        });
      });
    }
    exports2.scheduleAsyncIterable = scheduleAsyncIterable;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleReadableStreamLike.js
var require_scheduleReadableStreamLike = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleReadableStreamLike.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.scheduleReadableStreamLike = void 0;
    var scheduleAsyncIterable_1 = require_scheduleAsyncIterable();
    var isReadableStreamLike_1 = require_isReadableStreamLike();
    function scheduleReadableStreamLike(input3, scheduler) {
      return scheduleAsyncIterable_1.scheduleAsyncIterable(isReadableStreamLike_1.readableStreamLikeToAsyncGenerator(input3), scheduler);
    }
    exports2.scheduleReadableStreamLike = scheduleReadableStreamLike;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduled.js
var require_scheduled = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/scheduled/scheduled.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.scheduled = void 0;
    var scheduleObservable_1 = require_scheduleObservable();
    var schedulePromise_1 = require_schedulePromise();
    var scheduleArray_1 = require_scheduleArray();
    var scheduleIterable_1 = require_scheduleIterable();
    var scheduleAsyncIterable_1 = require_scheduleAsyncIterable();
    var isInteropObservable_1 = require_isInteropObservable();
    var isPromise_1 = require_isPromise();
    var isArrayLike_1 = require_isArrayLike();
    var isIterable_1 = require_isIterable();
    var isAsyncIterable_1 = require_isAsyncIterable();
    var throwUnobservableError_1 = require_throwUnobservableError();
    var isReadableStreamLike_1 = require_isReadableStreamLike();
    var scheduleReadableStreamLike_1 = require_scheduleReadableStreamLike();
    function scheduled(input3, scheduler) {
      if (input3 != null) {
        if (isInteropObservable_1.isInteropObservable(input3)) {
          return scheduleObservable_1.scheduleObservable(input3, scheduler);
        }
        if (isArrayLike_1.isArrayLike(input3)) {
          return scheduleArray_1.scheduleArray(input3, scheduler);
        }
        if (isPromise_1.isPromise(input3)) {
          return schedulePromise_1.schedulePromise(input3, scheduler);
        }
        if (isAsyncIterable_1.isAsyncIterable(input3)) {
          return scheduleAsyncIterable_1.scheduleAsyncIterable(input3, scheduler);
        }
        if (isIterable_1.isIterable(input3)) {
          return scheduleIterable_1.scheduleIterable(input3, scheduler);
        }
        if (isReadableStreamLike_1.isReadableStreamLike(input3)) {
          return scheduleReadableStreamLike_1.scheduleReadableStreamLike(input3, scheduler);
        }
      }
      throw throwUnobservableError_1.createInvalidObservableTypeError(input3);
    }
    exports2.scheduled = scheduled;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/from.js
var require_from = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/from.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.from = void 0;
    var scheduled_1 = require_scheduled();
    var innerFrom_1 = require_innerFrom();
    function from4(input3, scheduler) {
      return scheduler ? scheduled_1.scheduled(input3, scheduler) : innerFrom_1.innerFrom(input3);
    }
    exports2.from = from4;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/of.js
var require_of = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/of.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.of = void 0;
    var args_1 = require_args();
    var from_1 = require_from();
    function of3() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var scheduler = args_1.popScheduler(args);
      return from_1.from(args, scheduler);
    }
    exports2.of = of3;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/throwError.js
var require_throwError = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/throwError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.throwError = void 0;
    var Observable_1 = require_Observable();
    var isFunction_1 = require_isFunction();
    function throwError2(errorOrErrorFactory, scheduler) {
      var errorFactory = isFunction_1.isFunction(errorOrErrorFactory) ? errorOrErrorFactory : function() {
        return errorOrErrorFactory;
      };
      var init4 = function(subscriber) {
        return subscriber.error(errorFactory());
      };
      return new Observable_1.Observable(scheduler ? function(subscriber) {
        return scheduler.schedule(init4, 0, subscriber);
      } : init4);
    }
    exports2.throwError = throwError2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/Notification.js
var require_Notification = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/Notification.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.observeNotification = exports2.Notification = exports2.NotificationKind = void 0;
    var empty_1 = require_empty3();
    var of_1 = require_of();
    var throwError_1 = require_throwError();
    var isFunction_1 = require_isFunction();
    var NotificationKind;
    (function(NotificationKind2) {
      NotificationKind2["NEXT"] = "N";
      NotificationKind2["ERROR"] = "E";
      NotificationKind2["COMPLETE"] = "C";
    })(NotificationKind = exports2.NotificationKind || (exports2.NotificationKind = {}));
    var Notification = (function() {
      function Notification2(kind, value, error) {
        this.kind = kind;
        this.value = value;
        this.error = error;
        this.hasValue = kind === "N";
      }
      Notification2.prototype.observe = function(observer) {
        return observeNotification(this, observer);
      };
      Notification2.prototype.do = function(nextHandler, errorHandler, completeHandler) {
        var _a6 = this, kind = _a6.kind, value = _a6.value, error = _a6.error;
        return kind === "N" ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === "E" ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler();
      };
      Notification2.prototype.accept = function(nextOrObserver, error, complete) {
        var _a6;
        return isFunction_1.isFunction((_a6 = nextOrObserver) === null || _a6 === void 0 ? void 0 : _a6.next) ? this.observe(nextOrObserver) : this.do(nextOrObserver, error, complete);
      };
      Notification2.prototype.toObservable = function() {
        var _a6 = this, kind = _a6.kind, value = _a6.value, error = _a6.error;
        var result = kind === "N" ? of_1.of(value) : kind === "E" ? throwError_1.throwError(function() {
          return error;
        }) : kind === "C" ? empty_1.EMPTY : 0;
        if (!result) {
          throw new TypeError("Unexpected notification kind " + kind);
        }
        return result;
      };
      Notification2.createNext = function(value) {
        return new Notification2("N", value);
      };
      Notification2.createError = function(err) {
        return new Notification2("E", void 0, err);
      };
      Notification2.createComplete = function() {
        return Notification2.completeNotification;
      };
      Notification2.completeNotification = new Notification2("C");
      return Notification2;
    })();
    exports2.Notification = Notification;
    function observeNotification(notification, observer) {
      var _a6, _b, _c;
      var _d2 = notification, kind = _d2.kind, value = _d2.value, error = _d2.error;
      if (typeof kind !== "string") {
        throw new TypeError('Invalid notification, missing "kind"');
      }
      kind === "N" ? (_a6 = observer.next) === null || _a6 === void 0 ? void 0 : _a6.call(observer, value) : kind === "E" ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);
    }
    exports2.observeNotification = observeNotification;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/isObservable.js
var require_isObservable = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/isObservable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isObservable = void 0;
    var Observable_1 = require_Observable();
    var isFunction_1 = require_isFunction();
    function isObservable2(obj) {
      return !!obj && (obj instanceof Observable_1.Observable || isFunction_1.isFunction(obj.lift) && isFunction_1.isFunction(obj.subscribe));
    }
    exports2.isObservable = isObservable2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/EmptyError.js
var require_EmptyError = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/EmptyError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.EmptyError = void 0;
    var createErrorClass_1 = require_createErrorClass();
    exports2.EmptyError = createErrorClass_1.createErrorClass(function(_super) {
      return function EmptyErrorImpl() {
        _super(this);
        this.name = "EmptyError";
        this.message = "no elements in sequence";
      };
    });
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/lastValueFrom.js
var require_lastValueFrom = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/lastValueFrom.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.lastValueFrom = void 0;
    var EmptyError_1 = require_EmptyError();
    function lastValueFrom(source2, config3) {
      var hasConfig = typeof config3 === "object";
      return new Promise(function(resolve9, reject) {
        var _hasValue = false;
        var _value;
        source2.subscribe({
          next: function(value) {
            _value = value;
            _hasValue = true;
          },
          error: reject,
          complete: function() {
            if (_hasValue) {
              resolve9(_value);
            } else if (hasConfig) {
              resolve9(config3.defaultValue);
            } else {
              reject(new EmptyError_1.EmptyError());
            }
          }
        });
      });
    }
    exports2.lastValueFrom = lastValueFrom;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/firstValueFrom.js
var require_firstValueFrom = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/firstValueFrom.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.firstValueFrom = void 0;
    var EmptyError_1 = require_EmptyError();
    var Subscriber_1 = require_Subscriber();
    function firstValueFrom(source2, config3) {
      var hasConfig = typeof config3 === "object";
      return new Promise(function(resolve9, reject) {
        var subscriber = new Subscriber_1.SafeSubscriber({
          next: function(value) {
            resolve9(value);
            subscriber.unsubscribe();
          },
          error: reject,
          complete: function() {
            if (hasConfig) {
              resolve9(config3.defaultValue);
            } else {
              reject(new EmptyError_1.EmptyError());
            }
          }
        });
        source2.subscribe(subscriber);
      });
    }
    exports2.firstValueFrom = firstValueFrom;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/ArgumentOutOfRangeError.js
var require_ArgumentOutOfRangeError = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/ArgumentOutOfRangeError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ArgumentOutOfRangeError = void 0;
    var createErrorClass_1 = require_createErrorClass();
    exports2.ArgumentOutOfRangeError = createErrorClass_1.createErrorClass(function(_super) {
      return function ArgumentOutOfRangeErrorImpl() {
        _super(this);
        this.name = "ArgumentOutOfRangeError";
        this.message = "argument out of range";
      };
    });
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/NotFoundError.js
var require_NotFoundError = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/NotFoundError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.NotFoundError = void 0;
    var createErrorClass_1 = require_createErrorClass();
    exports2.NotFoundError = createErrorClass_1.createErrorClass(function(_super) {
      return function NotFoundErrorImpl(message) {
        _super(this);
        this.name = "NotFoundError";
        this.message = message;
      };
    });
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/SequenceError.js
var require_SequenceError = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/SequenceError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.SequenceError = void 0;
    var createErrorClass_1 = require_createErrorClass();
    exports2.SequenceError = createErrorClass_1.createErrorClass(function(_super) {
      return function SequenceErrorImpl(message) {
        _super(this);
        this.name = "SequenceError";
        this.message = message;
      };
    });
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/isDate.js
var require_isDate = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/isDate.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isValidDate = void 0;
    function isValidDate(value) {
      return value instanceof Date && !isNaN(value);
    }
    exports2.isValidDate = isValidDate;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/timeout.js
var require_timeout = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/timeout.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.timeout = exports2.TimeoutError = void 0;
    var async_1 = require_async2();
    var isDate_1 = require_isDate();
    var lift_1 = require_lift();
    var innerFrom_1 = require_innerFrom();
    var createErrorClass_1 = require_createErrorClass();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var executeSchedule_1 = require_executeSchedule();
    exports2.TimeoutError = createErrorClass_1.createErrorClass(function(_super) {
      return function TimeoutErrorImpl(info) {
        if (info === void 0) {
          info = null;
        }
        _super(this);
        this.message = "Timeout has occurred";
        this.name = "TimeoutError";
        this.info = info;
      };
    });
    function timeout(config3, schedulerArg) {
      var _a6 = isDate_1.isValidDate(config3) ? { first: config3 } : typeof config3 === "number" ? { each: config3 } : config3, first2 = _a6.first, each2 = _a6.each, _b = _a6.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a6.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : async_1.asyncScheduler : _c, _d2 = _a6.meta, meta2 = _d2 === void 0 ? null : _d2;
      if (first2 == null && each2 == null) {
        throw new TypeError("No timeout provided.");
      }
      return lift_1.operate(function(source2, subscriber) {
        var originalSourceSubscription;
        var timerSubscription;
        var lastValue = null;
        var seen = 0;
        var startTimer = function(delay2) {
          timerSubscription = executeSchedule_1.executeSchedule(subscriber, scheduler, function() {
            try {
              originalSourceSubscription.unsubscribe();
              innerFrom_1.innerFrom(_with({
                meta: meta2,
                lastValue,
                seen
              })).subscribe(subscriber);
            } catch (err) {
              subscriber.error(err);
            }
          }, delay2);
        };
        originalSourceSubscription = source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();
          seen++;
          subscriber.next(lastValue = value);
          each2 > 0 && startTimer(each2);
        }, void 0, void 0, function() {
          if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) {
            timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();
          }
          lastValue = null;
        }));
        !seen && startTimer(first2 != null ? typeof first2 === "number" ? first2 : +first2 - scheduler.now() : each2);
      });
    }
    exports2.timeout = timeout;
    function timeoutErrorFactory(info) {
      throw new exports2.TimeoutError(info);
    }
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/map.js
var require_map = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/map.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.map = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function map13(project, thisArg) {
      return lift_1.operate(function(source2, subscriber) {
        var index4 = 0;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          subscriber.next(project.call(thisArg, value, index4++));
        }));
      });
    }
    exports2.map = map13;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/mapOneOrManyArgs.js
var require_mapOneOrManyArgs = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/mapOneOrManyArgs.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.mapOneOrManyArgs = void 0;
    var map_1 = require_map();
    var isArray2 = Array.isArray;
    function callOrApply(fn, args) {
      return isArray2(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);
    }
    function mapOneOrManyArgs(fn) {
      return map_1.map(function(args) {
        return callOrApply(fn, args);
      });
    }
    exports2.mapOneOrManyArgs = mapOneOrManyArgs;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/bindCallbackInternals.js
var require_bindCallbackInternals = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/bindCallbackInternals.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.bindCallbackInternals = void 0;
    var isScheduler_1 = require_isScheduler();
    var Observable_1 = require_Observable();
    var subscribeOn_1 = require_subscribeOn();
    var mapOneOrManyArgs_1 = require_mapOneOrManyArgs();
    var observeOn_1 = require_observeOn();
    var AsyncSubject_1 = require_AsyncSubject();
    function bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) {
      if (resultSelector) {
        if (isScheduler_1.isScheduler(resultSelector)) {
          scheduler = resultSelector;
        } else {
          return function() {
            var args = [];
            for (var _i = 0; _i < arguments.length; _i++) {
              args[_i] = arguments[_i];
            }
            return bindCallbackInternals(isNodeStyle, callbackFunc, scheduler).apply(this, args).pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector));
          };
        }
      }
      if (scheduler) {
        return function() {
          var args = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            args[_i] = arguments[_i];
          }
          return bindCallbackInternals(isNodeStyle, callbackFunc).apply(this, args).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler));
        };
      }
      return function() {
        var _this = this;
        var args = [];
        for (var _i = 0; _i < arguments.length; _i++) {
          args[_i] = arguments[_i];
        }
        var subject = new AsyncSubject_1.AsyncSubject();
        var uninitialized = true;
        return new Observable_1.Observable(function(subscriber) {
          var subs = subject.subscribe(subscriber);
          if (uninitialized) {
            uninitialized = false;
            var isAsync_1 = false;
            var isComplete_1 = false;
            callbackFunc.apply(_this, __spreadArray(__spreadArray([], __read(args)), [
              function() {
                var results = [];
                for (var _i2 = 0; _i2 < arguments.length; _i2++) {
                  results[_i2] = arguments[_i2];
                }
                if (isNodeStyle) {
                  var err = results.shift();
                  if (err != null) {
                    subject.error(err);
                    return;
                  }
                }
                subject.next(1 < results.length ? results : results[0]);
                isComplete_1 = true;
                if (isAsync_1) {
                  subject.complete();
                }
              }
            ]));
            if (isComplete_1) {
              subject.complete();
            }
            isAsync_1 = true;
          }
          return subs;
        });
      };
    }
    exports2.bindCallbackInternals = bindCallbackInternals;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/bindCallback.js
var require_bindCallback = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/bindCallback.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.bindCallback = void 0;
    var bindCallbackInternals_1 = require_bindCallbackInternals();
    function bindCallback(callbackFunc, resultSelector, scheduler) {
      return bindCallbackInternals_1.bindCallbackInternals(false, callbackFunc, resultSelector, scheduler);
    }
    exports2.bindCallback = bindCallback;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/bindNodeCallback.js
var require_bindNodeCallback = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/bindNodeCallback.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.bindNodeCallback = void 0;
    var bindCallbackInternals_1 = require_bindCallbackInternals();
    function bindNodeCallback(callbackFunc, resultSelector, scheduler) {
      return bindCallbackInternals_1.bindCallbackInternals(true, callbackFunc, resultSelector, scheduler);
    }
    exports2.bindNodeCallback = bindNodeCallback;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/argsArgArrayOrObject.js
var require_argsArgArrayOrObject = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/argsArgArrayOrObject.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.argsArgArrayOrObject = void 0;
    var isArray2 = Array.isArray;
    var getPrototypeOf2 = Object.getPrototypeOf;
    var objectProto = Object.prototype;
    var getKeys = Object.keys;
    function argsArgArrayOrObject(args) {
      if (args.length === 1) {
        var first_1 = args[0];
        if (isArray2(first_1)) {
          return { args: first_1, keys: null };
        }
        if (isPOJO(first_1)) {
          var keys2 = getKeys(first_1);
          return {
            args: keys2.map(function(key2) {
              return first_1[key2];
            }),
            keys: keys2
          };
        }
      }
      return { args, keys: null };
    }
    exports2.argsArgArrayOrObject = argsArgArrayOrObject;
    function isPOJO(obj) {
      return obj && typeof obj === "object" && getPrototypeOf2(obj) === objectProto;
    }
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/createObject.js
var require_createObject = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/createObject.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.createObject = void 0;
    function createObject(keys2, values) {
      return keys2.reduce(function(result, key2, i2) {
        return result[key2] = values[i2], result;
      }, {});
    }
    exports2.createObject = createObject;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/combineLatest.js
var require_combineLatest = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/combineLatest.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.combineLatestInit = exports2.combineLatest = void 0;
    var Observable_1 = require_Observable();
    var argsArgArrayOrObject_1 = require_argsArgArrayOrObject();
    var from_1 = require_from();
    var identity_1 = require_identity();
    var mapOneOrManyArgs_1 = require_mapOneOrManyArgs();
    var args_1 = require_args();
    var createObject_1 = require_createObject();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var executeSchedule_1 = require_executeSchedule();
    function combineLatest() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var scheduler = args_1.popScheduler(args);
      var resultSelector = args_1.popResultSelector(args);
      var _a6 = argsArgArrayOrObject_1.argsArgArrayOrObject(args), observables = _a6.args, keys2 = _a6.keys;
      if (observables.length === 0) {
        return from_1.from([], scheduler);
      }
      var result = new Observable_1.Observable(combineLatestInit(observables, scheduler, keys2 ? function(values) {
        return createObject_1.createObject(keys2, values);
      } : identity_1.identity));
      return resultSelector ? result.pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)) : result;
    }
    exports2.combineLatest = combineLatest;
    function combineLatestInit(observables, scheduler, valueTransform) {
      if (valueTransform === void 0) {
        valueTransform = identity_1.identity;
      }
      return function(subscriber) {
        maybeSchedule(scheduler, function() {
          var length = observables.length;
          var values = new Array(length);
          var active = length;
          var remainingFirstValues = length;
          var _loop_1 = function(i3) {
            maybeSchedule(scheduler, function() {
              var source2 = from_1.from(observables[i3], scheduler);
              var hasFirstValue = false;
              source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
                values[i3] = value;
                if (!hasFirstValue) {
                  hasFirstValue = true;
                  remainingFirstValues--;
                }
                if (!remainingFirstValues) {
                  subscriber.next(valueTransform(values.slice()));
                }
              }, function() {
                if (!--active) {
                  subscriber.complete();
                }
              }));
            }, subscriber);
          };
          for (var i2 = 0; i2 < length; i2++) {
            _loop_1(i2);
          }
        }, subscriber);
      };
    }
    exports2.combineLatestInit = combineLatestInit;
    function maybeSchedule(scheduler, execute, subscription) {
      if (scheduler) {
        executeSchedule_1.executeSchedule(subscription, scheduler, execute);
      } else {
        execute();
      }
    }
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/mergeInternals.js
var require_mergeInternals = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/mergeInternals.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.mergeInternals = void 0;
    var innerFrom_1 = require_innerFrom();
    var executeSchedule_1 = require_executeSchedule();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function mergeInternals(source2, subscriber, project, concurrent, onBeforeNext, expand2, innerSubScheduler, additionalFinalizer) {
      var buffer2 = [];
      var active = 0;
      var index4 = 0;
      var isComplete = false;
      var checkComplete = function() {
        if (isComplete && !buffer2.length && !active) {
          subscriber.complete();
        }
      };
      var outerNext = function(value) {
        return active < concurrent ? doInnerSub(value) : buffer2.push(value);
      };
      var doInnerSub = function(value) {
        expand2 && subscriber.next(value);
        active++;
        var innerComplete = false;
        innerFrom_1.innerFrom(project(value, index4++)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(innerValue) {
          onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);
          if (expand2) {
            outerNext(innerValue);
          } else {
            subscriber.next(innerValue);
          }
        }, function() {
          innerComplete = true;
        }, void 0, function() {
          if (innerComplete) {
            try {
              active--;
              var _loop_1 = function() {
                var bufferedValue = buffer2.shift();
                if (innerSubScheduler) {
                  executeSchedule_1.executeSchedule(subscriber, innerSubScheduler, function() {
                    return doInnerSub(bufferedValue);
                  });
                } else {
                  doInnerSub(bufferedValue);
                }
              };
              while (buffer2.length && active < concurrent) {
                _loop_1();
              }
              checkComplete();
            } catch (err) {
              subscriber.error(err);
            }
          }
        }));
      };
      source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, outerNext, function() {
        isComplete = true;
        checkComplete();
      }));
      return function() {
        additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();
      };
    }
    exports2.mergeInternals = mergeInternals;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/mergeMap.js
var require_mergeMap = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/mergeMap.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.mergeMap = void 0;
    var map_1 = require_map();
    var innerFrom_1 = require_innerFrom();
    var lift_1 = require_lift();
    var mergeInternals_1 = require_mergeInternals();
    var isFunction_1 = require_isFunction();
    function mergeMap2(project, resultSelector, concurrent) {
      if (concurrent === void 0) {
        concurrent = Infinity;
      }
      if (isFunction_1.isFunction(resultSelector)) {
        return mergeMap2(function(a2, i2) {
          return map_1.map(function(b, ii) {
            return resultSelector(a2, b, i2, ii);
          })(innerFrom_1.innerFrom(project(a2, i2)));
        }, concurrent);
      } else if (typeof resultSelector === "number") {
        concurrent = resultSelector;
      }
      return lift_1.operate(function(source2, subscriber) {
        return mergeInternals_1.mergeInternals(source2, subscriber, project, concurrent);
      });
    }
    exports2.mergeMap = mergeMap2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/mergeAll.js
var require_mergeAll = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/mergeAll.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.mergeAll = void 0;
    var mergeMap_1 = require_mergeMap();
    var identity_1 = require_identity();
    function mergeAll(concurrent) {
      if (concurrent === void 0) {
        concurrent = Infinity;
      }
      return mergeMap_1.mergeMap(identity_1.identity, concurrent);
    }
    exports2.mergeAll = mergeAll;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/concatAll.js
var require_concatAll = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/concatAll.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.concatAll = void 0;
    var mergeAll_1 = require_mergeAll();
    function concatAll() {
      return mergeAll_1.mergeAll(1);
    }
    exports2.concatAll = concatAll;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/concat.js
var require_concat = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/concat.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.concat = void 0;
    var concatAll_1 = require_concatAll();
    var args_1 = require_args();
    var from_1 = require_from();
    function concat2() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      return concatAll_1.concatAll()(from_1.from(args, args_1.popScheduler(args)));
    }
    exports2.concat = concat2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/defer.js
var require_defer = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/defer.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.defer = void 0;
    var Observable_1 = require_Observable();
    var innerFrom_1 = require_innerFrom();
    function defer3(observableFactory) {
      return new Observable_1.Observable(function(subscriber) {
        innerFrom_1.innerFrom(observableFactory()).subscribe(subscriber);
      });
    }
    exports2.defer = defer3;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/connectable.js
var require_connectable = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/connectable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.connectable = void 0;
    var Subject_1 = require_Subject();
    var Observable_1 = require_Observable();
    var defer_1 = require_defer();
    var DEFAULT_CONFIG = {
      connector: function() {
        return new Subject_1.Subject();
      },
      resetOnDisconnect: true
    };
    function connectable(source2, config3) {
      if (config3 === void 0) {
        config3 = DEFAULT_CONFIG;
      }
      var connection = null;
      var connector = config3.connector, _a6 = config3.resetOnDisconnect, resetOnDisconnect = _a6 === void 0 ? true : _a6;
      var subject = connector();
      var result = new Observable_1.Observable(function(subscriber) {
        return subject.subscribe(subscriber);
      });
      result.connect = function() {
        if (!connection || connection.closed) {
          connection = defer_1.defer(function() {
            return source2;
          }).subscribe(subject);
          if (resetOnDisconnect) {
            connection.add(function() {
              return subject = connector();
            });
          }
        }
        return connection;
      };
      return result;
    }
    exports2.connectable = connectable;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/forkJoin.js
var require_forkJoin = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/forkJoin.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.forkJoin = void 0;
    var Observable_1 = require_Observable();
    var argsArgArrayOrObject_1 = require_argsArgArrayOrObject();
    var innerFrom_1 = require_innerFrom();
    var args_1 = require_args();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var mapOneOrManyArgs_1 = require_mapOneOrManyArgs();
    var createObject_1 = require_createObject();
    function forkJoin() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var resultSelector = args_1.popResultSelector(args);
      var _a6 = argsArgArrayOrObject_1.argsArgArrayOrObject(args), sources = _a6.args, keys2 = _a6.keys;
      var result = new Observable_1.Observable(function(subscriber) {
        var length = sources.length;
        if (!length) {
          subscriber.complete();
          return;
        }
        var values = new Array(length);
        var remainingCompletions = length;
        var remainingEmissions = length;
        var _loop_1 = function(sourceIndex2) {
          var hasValue = false;
          innerFrom_1.innerFrom(sources[sourceIndex2]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
            if (!hasValue) {
              hasValue = true;
              remainingEmissions--;
            }
            values[sourceIndex2] = value;
          }, function() {
            return remainingCompletions--;
          }, void 0, function() {
            if (!remainingCompletions || !hasValue) {
              if (!remainingEmissions) {
                subscriber.next(keys2 ? createObject_1.createObject(keys2, values) : values);
              }
              subscriber.complete();
            }
          }));
        };
        for (var sourceIndex = 0; sourceIndex < length; sourceIndex++) {
          _loop_1(sourceIndex);
        }
      });
      return resultSelector ? result.pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)) : result;
    }
    exports2.forkJoin = forkJoin;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/fromEvent.js
var require_fromEvent = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/fromEvent.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.fromEvent = void 0;
    var innerFrom_1 = require_innerFrom();
    var Observable_1 = require_Observable();
    var mergeMap_1 = require_mergeMap();
    var isArrayLike_1 = require_isArrayLike();
    var isFunction_1 = require_isFunction();
    var mapOneOrManyArgs_1 = require_mapOneOrManyArgs();
    var nodeEventEmitterMethods = ["addListener", "removeListener"];
    var eventTargetMethods = ["addEventListener", "removeEventListener"];
    var jqueryMethods = ["on", "off"];
    function fromEvent2(target, eventName, options, resultSelector) {
      if (isFunction_1.isFunction(options)) {
        resultSelector = options;
        options = void 0;
      }
      if (resultSelector) {
        return fromEvent2(target, eventName, options).pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector));
      }
      var _a6 = __read(isEventTarget(target) ? eventTargetMethods.map(function(methodName) {
        return function(handler) {
          return target[methodName](eventName, handler, options);
        };
      }) : isNodeStyleEventEmitter(target) ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName)) : isJQueryStyleEventEmitter(target) ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName)) : [], 2), add2 = _a6[0], remove3 = _a6[1];
      if (!add2) {
        if (isArrayLike_1.isArrayLike(target)) {
          return mergeMap_1.mergeMap(function(subTarget) {
            return fromEvent2(subTarget, eventName, options);
          })(innerFrom_1.innerFrom(target));
        }
      }
      if (!add2) {
        throw new TypeError("Invalid event target");
      }
      return new Observable_1.Observable(function(subscriber) {
        var handler = function() {
          var args = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            args[_i] = arguments[_i];
          }
          return subscriber.next(1 < args.length ? args : args[0]);
        };
        add2(handler);
        return function() {
          return remove3(handler);
        };
      });
    }
    exports2.fromEvent = fromEvent2;
    function toCommonHandlerRegistry(target, eventName) {
      return function(methodName) {
        return function(handler) {
          return target[methodName](eventName, handler);
        };
      };
    }
    function isNodeStyleEventEmitter(target) {
      return isFunction_1.isFunction(target.addListener) && isFunction_1.isFunction(target.removeListener);
    }
    function isJQueryStyleEventEmitter(target) {
      return isFunction_1.isFunction(target.on) && isFunction_1.isFunction(target.off);
    }
    function isEventTarget(target) {
      return isFunction_1.isFunction(target.addEventListener) && isFunction_1.isFunction(target.removeEventListener);
    }
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/fromEventPattern.js
var require_fromEventPattern = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/fromEventPattern.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.fromEventPattern = void 0;
    var Observable_1 = require_Observable();
    var isFunction_1 = require_isFunction();
    var mapOneOrManyArgs_1 = require_mapOneOrManyArgs();
    function fromEventPattern(addHandler, removeHandler, resultSelector) {
      if (resultSelector) {
        return fromEventPattern(addHandler, removeHandler).pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector));
      }
      return new Observable_1.Observable(function(subscriber) {
        var handler = function() {
          var e2 = [];
          for (var _i = 0; _i < arguments.length; _i++) {
            e2[_i] = arguments[_i];
          }
          return subscriber.next(e2.length === 1 ? e2[0] : e2);
        };
        var retValue = addHandler(handler);
        return isFunction_1.isFunction(removeHandler) ? function() {
          return removeHandler(handler, retValue);
        } : void 0;
      });
    }
    exports2.fromEventPattern = fromEventPattern;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/generate.js
var require_generate = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/generate.js"(exports2) {
    "use strict";
    var __generator = exports2 && exports2.__generator || function(thisArg, body3) {
      var _2 = { label: 0, sent: function() {
        if (t2[0] & 1) throw t2[1];
        return t2[1];
      }, trys: [], ops: [] }, f3, y, t2, g;
      return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
        return this;
      }), g;
      function verb(n) {
        return function(v) {
          return step([n, v]);
        };
      }
      function step(op2) {
        if (f3) throw new TypeError("Generator is already executing.");
        while (_2) try {
          if (f3 = 1, y && (t2 = op2[0] & 2 ? y["return"] : op2[0] ? y["throw"] || ((t2 = y["return"]) && t2.call(y), 0) : y.next) && !(t2 = t2.call(y, op2[1])).done) return t2;
          if (y = 0, t2) op2 = [op2[0] & 2, t2.value];
          switch (op2[0]) {
            case 0:
            case 1:
              t2 = op2;
              break;
            case 4:
              _2.label++;
              return { value: op2[1], done: false };
            case 5:
              _2.label++;
              y = op2[1];
              op2 = [0];
              continue;
            case 7:
              op2 = _2.ops.pop();
              _2.trys.pop();
              continue;
            default:
              if (!(t2 = _2.trys, t2 = t2.length > 0 && t2[t2.length - 1]) && (op2[0] === 6 || op2[0] === 2)) {
                _2 = 0;
                continue;
              }
              if (op2[0] === 3 && (!t2 || op2[1] > t2[0] && op2[1] < t2[3])) {
                _2.label = op2[1];
                break;
              }
              if (op2[0] === 6 && _2.label < t2[1]) {
                _2.label = t2[1];
                t2 = op2;
                break;
              }
              if (t2 && _2.label < t2[2]) {
                _2.label = t2[2];
                _2.ops.push(op2);
                break;
              }
              if (t2[2]) _2.ops.pop();
              _2.trys.pop();
              continue;
          }
          op2 = body3.call(thisArg, _2);
        } catch (e2) {
          op2 = [6, e2];
          y = 0;
        } finally {
          f3 = t2 = 0;
        }
        if (op2[0] & 5) throw op2[1];
        return { value: op2[0] ? op2[1] : void 0, done: true };
      }
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.generate = void 0;
    var identity_1 = require_identity();
    var isScheduler_1 = require_isScheduler();
    var defer_1 = require_defer();
    var scheduleIterable_1 = require_scheduleIterable();
    function generate2(initialStateOrOptions, condition, iterate2, resultSelectorOrScheduler, scheduler) {
      var _a6, _b;
      var resultSelector;
      var initialState;
      if (arguments.length === 1) {
        _a6 = initialStateOrOptions, initialState = _a6.initialState, condition = _a6.condition, iterate2 = _a6.iterate, _b = _a6.resultSelector, resultSelector = _b === void 0 ? identity_1.identity : _b, scheduler = _a6.scheduler;
      } else {
        initialState = initialStateOrOptions;
        if (!resultSelectorOrScheduler || isScheduler_1.isScheduler(resultSelectorOrScheduler)) {
          resultSelector = identity_1.identity;
          scheduler = resultSelectorOrScheduler;
        } else {
          resultSelector = resultSelectorOrScheduler;
        }
      }
      function gen() {
        var state;
        return __generator(this, function(_a7) {
          switch (_a7.label) {
            case 0:
              state = initialState;
              _a7.label = 1;
            case 1:
              if (!(!condition || condition(state))) return [3, 4];
              return [4, resultSelector(state)];
            case 2:
              _a7.sent();
              _a7.label = 3;
            case 3:
              state = iterate2(state);
              return [3, 1];
            case 4:
              return [2];
          }
        });
      }
      return defer_1.defer(scheduler ? function() {
        return scheduleIterable_1.scheduleIterable(gen(), scheduler);
      } : gen);
    }
    exports2.generate = generate2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/iif.js
var require_iif = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/iif.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.iif = void 0;
    var defer_1 = require_defer();
    function iif(condition, trueResult, falseResult) {
      return defer_1.defer(function() {
        return condition() ? trueResult : falseResult;
      });
    }
    exports2.iif = iif;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/timer.js
var require_timer = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/timer.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.timer = void 0;
    var Observable_1 = require_Observable();
    var async_1 = require_async2();
    var isScheduler_1 = require_isScheduler();
    var isDate_1 = require_isDate();
    function timer2(dueTime, intervalOrScheduler, scheduler) {
      if (dueTime === void 0) {
        dueTime = 0;
      }
      if (scheduler === void 0) {
        scheduler = async_1.async;
      }
      var intervalDuration = -1;
      if (intervalOrScheduler != null) {
        if (isScheduler_1.isScheduler(intervalOrScheduler)) {
          scheduler = intervalOrScheduler;
        } else {
          intervalDuration = intervalOrScheduler;
        }
      }
      return new Observable_1.Observable(function(subscriber) {
        var due = isDate_1.isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;
        if (due < 0) {
          due = 0;
        }
        var n = 0;
        return scheduler.schedule(function() {
          if (!subscriber.closed) {
            subscriber.next(n++);
            if (0 <= intervalDuration) {
              this.schedule(void 0, intervalDuration);
            } else {
              subscriber.complete();
            }
          }
        }, due);
      });
    }
    exports2.timer = timer2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/interval.js
var require_interval = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/interval.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.interval = void 0;
    var async_1 = require_async2();
    var timer_1 = require_timer();
    function interval2(period, scheduler) {
      if (period === void 0) {
        period = 0;
      }
      if (scheduler === void 0) {
        scheduler = async_1.asyncScheduler;
      }
      if (period < 0) {
        period = 0;
      }
      return timer_1.timer(period, period, scheduler);
    }
    exports2.interval = interval2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/merge.js
var require_merge = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/merge.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.merge = void 0;
    var mergeAll_1 = require_mergeAll();
    var innerFrom_1 = require_innerFrom();
    var empty_1 = require_empty3();
    var args_1 = require_args();
    var from_1 = require_from();
    function merge3() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var scheduler = args_1.popScheduler(args);
      var concurrent = args_1.popNumber(args, Infinity);
      var sources = args;
      return !sources.length ? empty_1.EMPTY : sources.length === 1 ? innerFrom_1.innerFrom(sources[0]) : mergeAll_1.mergeAll(concurrent)(from_1.from(sources, scheduler));
    }
    exports2.merge = merge3;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/never.js
var require_never = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/never.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.never = exports2.NEVER = void 0;
    var Observable_1 = require_Observable();
    var noop_1 = require_noop();
    exports2.NEVER = new Observable_1.Observable(noop_1.noop);
    function never() {
      return exports2.NEVER;
    }
    exports2.never = never;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/argsOrArgArray.js
var require_argsOrArgArray = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/argsOrArgArray.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.argsOrArgArray = void 0;
    var isArray2 = Array.isArray;
    function argsOrArgArray(args) {
      return args.length === 1 && isArray2(args[0]) ? args[0] : args;
    }
    exports2.argsOrArgArray = argsOrArgArray;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/onErrorResumeNext.js
var require_onErrorResumeNext = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/onErrorResumeNext.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.onErrorResumeNext = void 0;
    var Observable_1 = require_Observable();
    var argsOrArgArray_1 = require_argsOrArgArray();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var noop_1 = require_noop();
    var innerFrom_1 = require_innerFrom();
    function onErrorResumeNext() {
      var sources = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        sources[_i] = arguments[_i];
      }
      var nextSources = argsOrArgArray_1.argsOrArgArray(sources);
      return new Observable_1.Observable(function(subscriber) {
        var sourceIndex = 0;
        var subscribeNext = function() {
          if (sourceIndex < nextSources.length) {
            var nextSource = void 0;
            try {
              nextSource = innerFrom_1.innerFrom(nextSources[sourceIndex++]);
            } catch (err) {
              subscribeNext();
              return;
            }
            var innerSubscriber = new OperatorSubscriber_1.OperatorSubscriber(subscriber, void 0, noop_1.noop, noop_1.noop);
            nextSource.subscribe(innerSubscriber);
            innerSubscriber.add(subscribeNext);
          } else {
            subscriber.complete();
          }
        };
        subscribeNext();
      });
    }
    exports2.onErrorResumeNext = onErrorResumeNext;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/pairs.js
var require_pairs = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/pairs.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.pairs = void 0;
    var from_1 = require_from();
    function pairs2(obj, scheduler) {
      return from_1.from(Object.entries(obj), scheduler);
    }
    exports2.pairs = pairs2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/util/not.js
var require_not = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/util/not.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.not = void 0;
    function not2(pred, thisArg) {
      return function(value, index4) {
        return !pred.call(thisArg, value, index4);
      };
    }
    exports2.not = not2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/filter.js
var require_filter = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/filter.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.filter = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function filter6(predicate, thisArg) {
      return lift_1.operate(function(source2, subscriber) {
        var index4 = 0;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          return predicate.call(thisArg, value, index4++) && subscriber.next(value);
        }));
      });
    }
    exports2.filter = filter6;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/partition.js
var require_partition = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/partition.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.partition = void 0;
    var not_1 = require_not();
    var filter_1 = require_filter();
    var innerFrom_1 = require_innerFrom();
    function partition(source2, predicate, thisArg) {
      return [filter_1.filter(predicate, thisArg)(innerFrom_1.innerFrom(source2)), filter_1.filter(not_1.not(predicate, thisArg))(innerFrom_1.innerFrom(source2))];
    }
    exports2.partition = partition;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/race.js
var require_race = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/race.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.raceInit = exports2.race = void 0;
    var Observable_1 = require_Observable();
    var innerFrom_1 = require_innerFrom();
    var argsOrArgArray_1 = require_argsOrArgArray();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function race() {
      var sources = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        sources[_i] = arguments[_i];
      }
      sources = argsOrArgArray_1.argsOrArgArray(sources);
      return sources.length === 1 ? innerFrom_1.innerFrom(sources[0]) : new Observable_1.Observable(raceInit(sources));
    }
    exports2.race = race;
    function raceInit(sources) {
      return function(subscriber) {
        var subscriptions = [];
        var _loop_1 = function(i3) {
          subscriptions.push(innerFrom_1.innerFrom(sources[i3]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
            if (subscriptions) {
              for (var s5 = 0; s5 < subscriptions.length; s5++) {
                s5 !== i3 && subscriptions[s5].unsubscribe();
              }
              subscriptions = null;
            }
            subscriber.next(value);
          })));
        };
        for (var i2 = 0; subscriptions && !subscriber.closed && i2 < sources.length; i2++) {
          _loop_1(i2);
        }
      };
    }
    exports2.raceInit = raceInit;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/range.js
var require_range2 = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/range.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.range = void 0;
    var Observable_1 = require_Observable();
    var empty_1 = require_empty3();
    function range(start, count2, scheduler) {
      if (count2 == null) {
        count2 = start;
        start = 0;
      }
      if (count2 <= 0) {
        return empty_1.EMPTY;
      }
      var end = count2 + start;
      return new Observable_1.Observable(scheduler ? function(subscriber) {
        var n = start;
        return scheduler.schedule(function() {
          if (n < end) {
            subscriber.next(n++);
            this.schedule();
          } else {
            subscriber.complete();
          }
        });
      } : function(subscriber) {
        var n = start;
        while (n < end && !subscriber.closed) {
          subscriber.next(n++);
        }
        subscriber.complete();
      });
    }
    exports2.range = range;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/using.js
var require_using = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/using.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.using = void 0;
    var Observable_1 = require_Observable();
    var innerFrom_1 = require_innerFrom();
    var empty_1 = require_empty3();
    function using(resourceFactory, observableFactory) {
      return new Observable_1.Observable(function(subscriber) {
        var resource = resourceFactory();
        var result = observableFactory(resource);
        var source2 = result ? innerFrom_1.innerFrom(result) : empty_1.EMPTY;
        source2.subscribe(subscriber);
        return function() {
          if (resource) {
            resource.unsubscribe();
          }
        };
      });
    }
    exports2.using = using;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/zip.js
var require_zip = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/zip.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.zip = void 0;
    var Observable_1 = require_Observable();
    var innerFrom_1 = require_innerFrom();
    var argsOrArgArray_1 = require_argsOrArgArray();
    var empty_1 = require_empty3();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var args_1 = require_args();
    function zip2() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var resultSelector = args_1.popResultSelector(args);
      var sources = argsOrArgArray_1.argsOrArgArray(args);
      return sources.length ? new Observable_1.Observable(function(subscriber) {
        var buffers = sources.map(function() {
          return [];
        });
        var completed2 = sources.map(function() {
          return false;
        });
        subscriber.add(function() {
          buffers = completed2 = null;
        });
        var _loop_1 = function(sourceIndex2) {
          innerFrom_1.innerFrom(sources[sourceIndex2]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
            buffers[sourceIndex2].push(value);
            if (buffers.every(function(buffer2) {
              return buffer2.length;
            })) {
              var result = buffers.map(function(buffer2) {
                return buffer2.shift();
              });
              subscriber.next(resultSelector ? resultSelector.apply(void 0, __spreadArray([], __read(result))) : result);
              if (buffers.some(function(buffer2, i2) {
                return !buffer2.length && completed2[i2];
              })) {
                subscriber.complete();
              }
            }
          }, function() {
            completed2[sourceIndex2] = true;
            !buffers[sourceIndex2].length && subscriber.complete();
          }));
        };
        for (var sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) {
          _loop_1(sourceIndex);
        }
        return function() {
          buffers = completed2 = null;
        };
      }) : empty_1.EMPTY;
    }
    exports2.zip = zip2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/types.js
var require_types3 = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/types.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/audit.js
var require_audit = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/audit.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.audit = void 0;
    var lift_1 = require_lift();
    var innerFrom_1 = require_innerFrom();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function audit(durationSelector) {
      return lift_1.operate(function(source2, subscriber) {
        var hasValue = false;
        var lastValue = null;
        var durationSubscriber = null;
        var isComplete = false;
        var endDuration = function() {
          durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();
          durationSubscriber = null;
          if (hasValue) {
            hasValue = false;
            var value = lastValue;
            lastValue = null;
            subscriber.next(value);
          }
          isComplete && subscriber.complete();
        };
        var cleanupDuration = function() {
          durationSubscriber = null;
          isComplete && subscriber.complete();
        };
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          hasValue = true;
          lastValue = value;
          if (!durationSubscriber) {
            innerFrom_1.innerFrom(durationSelector(value)).subscribe(durationSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, endDuration, cleanupDuration));
          }
        }, function() {
          isComplete = true;
          (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();
        }));
      });
    }
    exports2.audit = audit;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/auditTime.js
var require_auditTime = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/auditTime.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.auditTime = void 0;
    var async_1 = require_async2();
    var audit_1 = require_audit();
    var timer_1 = require_timer();
    function auditTime(duration, scheduler) {
      if (scheduler === void 0) {
        scheduler = async_1.asyncScheduler;
      }
      return audit_1.audit(function() {
        return timer_1.timer(duration, scheduler);
      });
    }
    exports2.auditTime = auditTime;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/buffer.js
var require_buffer = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/buffer.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.buffer = void 0;
    var lift_1 = require_lift();
    var noop_1 = require_noop();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    function buffer2(closingNotifier) {
      return lift_1.operate(function(source2, subscriber) {
        var currentBuffer = [];
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          return currentBuffer.push(value);
        }, function() {
          subscriber.next(currentBuffer);
          subscriber.complete();
        }));
        innerFrom_1.innerFrom(closingNotifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
          var b = currentBuffer;
          currentBuffer = [];
          subscriber.next(b);
        }, noop_1.noop));
        return function() {
          currentBuffer = null;
        };
      });
    }
    exports2.buffer = buffer2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/bufferCount.js
var require_bufferCount = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/bufferCount.js"(exports2) {
    "use strict";
    var __values = exports2 && exports2.__values || function(o) {
      var s5 = typeof Symbol === "function" && Symbol.iterator, m2 = s5 && o[s5], i2 = 0;
      if (m2) return m2.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i2 >= o.length) o = void 0;
          return { value: o && o[i2++], done: !o };
        }
      };
      throw new TypeError(s5 ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.bufferCount = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var arrRemove_1 = require_arrRemove();
    function bufferCount(bufferSize, startBufferEvery) {
      if (startBufferEvery === void 0) {
        startBufferEvery = null;
      }
      startBufferEvery = startBufferEvery !== null && startBufferEvery !== void 0 ? startBufferEvery : bufferSize;
      return lift_1.operate(function(source2, subscriber) {
        var buffers = [];
        var count2 = 0;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var e_1, _a6, e_2, _b;
          var toEmit = null;
          if (count2++ % startBufferEvery === 0) {
            buffers.push([]);
          }
          try {
            for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {
              var buffer2 = buffers_1_1.value;
              buffer2.push(value);
              if (bufferSize <= buffer2.length) {
                toEmit = toEmit !== null && toEmit !== void 0 ? toEmit : [];
                toEmit.push(buffer2);
              }
            }
          } catch (e_1_1) {
            e_1 = { error: e_1_1 };
          } finally {
            try {
              if (buffers_1_1 && !buffers_1_1.done && (_a6 = buffers_1.return)) _a6.call(buffers_1);
            } finally {
              if (e_1) throw e_1.error;
            }
          }
          if (toEmit) {
            try {
              for (var toEmit_1 = __values(toEmit), toEmit_1_1 = toEmit_1.next(); !toEmit_1_1.done; toEmit_1_1 = toEmit_1.next()) {
                var buffer2 = toEmit_1_1.value;
                arrRemove_1.arrRemove(buffers, buffer2);
                subscriber.next(buffer2);
              }
            } catch (e_2_1) {
              e_2 = { error: e_2_1 };
            } finally {
              try {
                if (toEmit_1_1 && !toEmit_1_1.done && (_b = toEmit_1.return)) _b.call(toEmit_1);
              } finally {
                if (e_2) throw e_2.error;
              }
            }
          }
        }, function() {
          var e_3, _a6;
          try {
            for (var buffers_2 = __values(buffers), buffers_2_1 = buffers_2.next(); !buffers_2_1.done; buffers_2_1 = buffers_2.next()) {
              var buffer2 = buffers_2_1.value;
              subscriber.next(buffer2);
            }
          } catch (e_3_1) {
            e_3 = { error: e_3_1 };
          } finally {
            try {
              if (buffers_2_1 && !buffers_2_1.done && (_a6 = buffers_2.return)) _a6.call(buffers_2);
            } finally {
              if (e_3) throw e_3.error;
            }
          }
          subscriber.complete();
        }, void 0, function() {
          buffers = null;
        }));
      });
    }
    exports2.bufferCount = bufferCount;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/bufferTime.js
var require_bufferTime = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/bufferTime.js"(exports2) {
    "use strict";
    var __values = exports2 && exports2.__values || function(o) {
      var s5 = typeof Symbol === "function" && Symbol.iterator, m2 = s5 && o[s5], i2 = 0;
      if (m2) return m2.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i2 >= o.length) o = void 0;
          return { value: o && o[i2++], done: !o };
        }
      };
      throw new TypeError(s5 ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.bufferTime = void 0;
    var Subscription_1 = require_Subscription();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var arrRemove_1 = require_arrRemove();
    var async_1 = require_async2();
    var args_1 = require_args();
    var executeSchedule_1 = require_executeSchedule();
    function bufferTime(bufferTimeSpan) {
      var _a6, _b;
      var otherArgs = [];
      for (var _i = 1; _i < arguments.length; _i++) {
        otherArgs[_i - 1] = arguments[_i];
      }
      var scheduler = (_a6 = args_1.popScheduler(otherArgs)) !== null && _a6 !== void 0 ? _a6 : async_1.asyncScheduler;
      var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;
      var maxBufferSize = otherArgs[1] || Infinity;
      return lift_1.operate(function(source2, subscriber) {
        var bufferRecords = [];
        var restartOnEmit = false;
        var emit = function(record) {
          var buffer2 = record.buffer, subs = record.subs;
          subs.unsubscribe();
          arrRemove_1.arrRemove(bufferRecords, record);
          subscriber.next(buffer2);
          restartOnEmit && startBuffer();
        };
        var startBuffer = function() {
          if (bufferRecords) {
            var subs = new Subscription_1.Subscription();
            subscriber.add(subs);
            var buffer2 = [];
            var record_1 = {
              buffer: buffer2,
              subs
            };
            bufferRecords.push(record_1);
            executeSchedule_1.executeSchedule(subs, scheduler, function() {
              return emit(record_1);
            }, bufferTimeSpan);
          }
        };
        if (bufferCreationInterval !== null && bufferCreationInterval >= 0) {
          executeSchedule_1.executeSchedule(subscriber, scheduler, startBuffer, bufferCreationInterval, true);
        } else {
          restartOnEmit = true;
        }
        startBuffer();
        var bufferTimeSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var e_1, _a7;
          var recordsCopy = bufferRecords.slice();
          try {
            for (var recordsCopy_1 = __values(recordsCopy), recordsCopy_1_1 = recordsCopy_1.next(); !recordsCopy_1_1.done; recordsCopy_1_1 = recordsCopy_1.next()) {
              var record = recordsCopy_1_1.value;
              var buffer2 = record.buffer;
              buffer2.push(value);
              maxBufferSize <= buffer2.length && emit(record);
            }
          } catch (e_1_1) {
            e_1 = { error: e_1_1 };
          } finally {
            try {
              if (recordsCopy_1_1 && !recordsCopy_1_1.done && (_a7 = recordsCopy_1.return)) _a7.call(recordsCopy_1);
            } finally {
              if (e_1) throw e_1.error;
            }
          }
        }, function() {
          while (bufferRecords === null || bufferRecords === void 0 ? void 0 : bufferRecords.length) {
            subscriber.next(bufferRecords.shift().buffer);
          }
          bufferTimeSubscriber === null || bufferTimeSubscriber === void 0 ? void 0 : bufferTimeSubscriber.unsubscribe();
          subscriber.complete();
          subscriber.unsubscribe();
        }, void 0, function() {
          return bufferRecords = null;
        });
        source2.subscribe(bufferTimeSubscriber);
      });
    }
    exports2.bufferTime = bufferTime;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/bufferToggle.js
var require_bufferToggle = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/bufferToggle.js"(exports2) {
    "use strict";
    var __values = exports2 && exports2.__values || function(o) {
      var s5 = typeof Symbol === "function" && Symbol.iterator, m2 = s5 && o[s5], i2 = 0;
      if (m2) return m2.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i2 >= o.length) o = void 0;
          return { value: o && o[i2++], done: !o };
        }
      };
      throw new TypeError(s5 ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.bufferToggle = void 0;
    var Subscription_1 = require_Subscription();
    var lift_1 = require_lift();
    var innerFrom_1 = require_innerFrom();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var noop_1 = require_noop();
    var arrRemove_1 = require_arrRemove();
    function bufferToggle(openings, closingSelector) {
      return lift_1.operate(function(source2, subscriber) {
        var buffers = [];
        innerFrom_1.innerFrom(openings).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(openValue) {
          var buffer2 = [];
          buffers.push(buffer2);
          var closingSubscription = new Subscription_1.Subscription();
          var emitBuffer = function() {
            arrRemove_1.arrRemove(buffers, buffer2);
            subscriber.next(buffer2);
            closingSubscription.unsubscribe();
          };
          closingSubscription.add(innerFrom_1.innerFrom(closingSelector(openValue)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, emitBuffer, noop_1.noop)));
        }, noop_1.noop));
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var e_1, _a6;
          try {
            for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {
              var buffer2 = buffers_1_1.value;
              buffer2.push(value);
            }
          } catch (e_1_1) {
            e_1 = { error: e_1_1 };
          } finally {
            try {
              if (buffers_1_1 && !buffers_1_1.done && (_a6 = buffers_1.return)) _a6.call(buffers_1);
            } finally {
              if (e_1) throw e_1.error;
            }
          }
        }, function() {
          while (buffers.length > 0) {
            subscriber.next(buffers.shift());
          }
          subscriber.complete();
        }));
      });
    }
    exports2.bufferToggle = bufferToggle;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/bufferWhen.js
var require_bufferWhen = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/bufferWhen.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.bufferWhen = void 0;
    var lift_1 = require_lift();
    var noop_1 = require_noop();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    function bufferWhen(closingSelector) {
      return lift_1.operate(function(source2, subscriber) {
        var buffer2 = null;
        var closingSubscriber = null;
        var openBuffer = function() {
          closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();
          var b = buffer2;
          buffer2 = [];
          b && subscriber.next(b);
          innerFrom_1.innerFrom(closingSelector()).subscribe(closingSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, openBuffer, noop_1.noop));
        };
        openBuffer();
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          return buffer2 === null || buffer2 === void 0 ? void 0 : buffer2.push(value);
        }, function() {
          buffer2 && subscriber.next(buffer2);
          subscriber.complete();
        }, void 0, function() {
          return buffer2 = closingSubscriber = null;
        }));
      });
    }
    exports2.bufferWhen = bufferWhen;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/catchError.js
var require_catchError = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/catchError.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.catchError = void 0;
    var innerFrom_1 = require_innerFrom();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var lift_1 = require_lift();
    function catchError(selector) {
      return lift_1.operate(function(source2, subscriber) {
        var innerSub = null;
        var syncUnsub = false;
        var handledResult;
        innerSub = source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, void 0, function(err) {
          handledResult = innerFrom_1.innerFrom(selector(err, catchError(selector)(source2)));
          if (innerSub) {
            innerSub.unsubscribe();
            innerSub = null;
            handledResult.subscribe(subscriber);
          } else {
            syncUnsub = true;
          }
        }));
        if (syncUnsub) {
          innerSub.unsubscribe();
          innerSub = null;
          handledResult.subscribe(subscriber);
        }
      });
    }
    exports2.catchError = catchError;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/scanInternals.js
var require_scanInternals = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/scanInternals.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.scanInternals = void 0;
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {
      return function(source2, subscriber) {
        var hasState = hasSeed;
        var state = seed;
        var index4 = 0;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var i2 = index4++;
          state = hasState ? accumulator(state, value, i2) : (hasState = true, value);
          emitOnNext && subscriber.next(state);
        }, emitBeforeComplete && (function() {
          hasState && subscriber.next(state);
          subscriber.complete();
        })));
      };
    }
    exports2.scanInternals = scanInternals;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/reduce.js
var require_reduce = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/reduce.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.reduce = void 0;
    var scanInternals_1 = require_scanInternals();
    var lift_1 = require_lift();
    function reduce2(accumulator, seed) {
      return lift_1.operate(scanInternals_1.scanInternals(accumulator, seed, arguments.length >= 2, false, true));
    }
    exports2.reduce = reduce2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/toArray.js
var require_toArray = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/toArray.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.toArray = void 0;
    var reduce_1 = require_reduce();
    var lift_1 = require_lift();
    var arrReducer = function(arr, value) {
      return arr.push(value), arr;
    };
    function toArray2() {
      return lift_1.operate(function(source2, subscriber) {
        reduce_1.reduce(arrReducer, [])(source2).subscribe(subscriber);
      });
    }
    exports2.toArray = toArray2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/joinAllInternals.js
var require_joinAllInternals = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/joinAllInternals.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.joinAllInternals = void 0;
    var identity_1 = require_identity();
    var mapOneOrManyArgs_1 = require_mapOneOrManyArgs();
    var pipe_1 = require_pipe();
    var mergeMap_1 = require_mergeMap();
    var toArray_12 = require_toArray();
    function joinAllInternals(joinFn, project) {
      return pipe_1.pipe(toArray_12.toArray(), mergeMap_1.mergeMap(function(sources) {
        return joinFn(sources);
      }), project ? mapOneOrManyArgs_1.mapOneOrManyArgs(project) : identity_1.identity);
    }
    exports2.joinAllInternals = joinAllInternals;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/combineLatestAll.js
var require_combineLatestAll = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/combineLatestAll.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.combineLatestAll = void 0;
    var combineLatest_1 = require_combineLatest();
    var joinAllInternals_1 = require_joinAllInternals();
    function combineLatestAll(project) {
      return joinAllInternals_1.joinAllInternals(combineLatest_1.combineLatest, project);
    }
    exports2.combineLatestAll = combineLatestAll;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/combineAll.js
var require_combineAll = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/combineAll.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.combineAll = void 0;
    var combineLatestAll_1 = require_combineLatestAll();
    exports2.combineAll = combineLatestAll_1.combineLatestAll;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/combineLatest.js
var require_combineLatest2 = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/combineLatest.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.combineLatest = void 0;
    var combineLatest_1 = require_combineLatest();
    var lift_1 = require_lift();
    var argsOrArgArray_1 = require_argsOrArgArray();
    var mapOneOrManyArgs_1 = require_mapOneOrManyArgs();
    var pipe_1 = require_pipe();
    var args_1 = require_args();
    function combineLatest() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var resultSelector = args_1.popResultSelector(args);
      return resultSelector ? pipe_1.pipe(combineLatest.apply(void 0, __spreadArray([], __read(args))), mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)) : lift_1.operate(function(source2, subscriber) {
        combineLatest_1.combineLatestInit(__spreadArray([source2], __read(argsOrArgArray_1.argsOrArgArray(args))))(subscriber);
      });
    }
    exports2.combineLatest = combineLatest;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/combineLatestWith.js
var require_combineLatestWith = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/combineLatestWith.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.combineLatestWith = void 0;
    var combineLatest_1 = require_combineLatest2();
    function combineLatestWith() {
      var otherSources = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        otherSources[_i] = arguments[_i];
      }
      return combineLatest_1.combineLatest.apply(void 0, __spreadArray([], __read(otherSources)));
    }
    exports2.combineLatestWith = combineLatestWith;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/concatMap.js
var require_concatMap = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/concatMap.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.concatMap = void 0;
    var mergeMap_1 = require_mergeMap();
    var isFunction_1 = require_isFunction();
    function concatMap2(project, resultSelector) {
      return isFunction_1.isFunction(resultSelector) ? mergeMap_1.mergeMap(project, resultSelector, 1) : mergeMap_1.mergeMap(project, 1);
    }
    exports2.concatMap = concatMap2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/concatMapTo.js
var require_concatMapTo = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/concatMapTo.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.concatMapTo = void 0;
    var concatMap_1 = require_concatMap();
    var isFunction_1 = require_isFunction();
    function concatMapTo(innerObservable, resultSelector) {
      return isFunction_1.isFunction(resultSelector) ? concatMap_1.concatMap(function() {
        return innerObservable;
      }, resultSelector) : concatMap_1.concatMap(function() {
        return innerObservable;
      });
    }
    exports2.concatMapTo = concatMapTo;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/concat.js
var require_concat2 = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/concat.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.concat = void 0;
    var lift_1 = require_lift();
    var concatAll_1 = require_concatAll();
    var args_1 = require_args();
    var from_1 = require_from();
    function concat2() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var scheduler = args_1.popScheduler(args);
      return lift_1.operate(function(source2, subscriber) {
        concatAll_1.concatAll()(from_1.from(__spreadArray([source2], __read(args)), scheduler)).subscribe(subscriber);
      });
    }
    exports2.concat = concat2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/concatWith.js
var require_concatWith = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/concatWith.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.concatWith = void 0;
    var concat_1 = require_concat2();
    function concatWith() {
      var otherSources = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        otherSources[_i] = arguments[_i];
      }
      return concat_1.concat.apply(void 0, __spreadArray([], __read(otherSources)));
    }
    exports2.concatWith = concatWith;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/observable/fromSubscribable.js
var require_fromSubscribable = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/observable/fromSubscribable.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.fromSubscribable = void 0;
    var Observable_1 = require_Observable();
    function fromSubscribable(subscribable) {
      return new Observable_1.Observable(function(subscriber) {
        return subscribable.subscribe(subscriber);
      });
    }
    exports2.fromSubscribable = fromSubscribable;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/connect.js
var require_connect = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/connect.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.connect = void 0;
    var Subject_1 = require_Subject();
    var innerFrom_1 = require_innerFrom();
    var lift_1 = require_lift();
    var fromSubscribable_1 = require_fromSubscribable();
    var DEFAULT_CONFIG = {
      connector: function() {
        return new Subject_1.Subject();
      }
    };
    function connect(selector, config3) {
      if (config3 === void 0) {
        config3 = DEFAULT_CONFIG;
      }
      var connector = config3.connector;
      return lift_1.operate(function(source2, subscriber) {
        var subject = connector();
        innerFrom_1.innerFrom(selector(fromSubscribable_1.fromSubscribable(subject))).subscribe(subscriber);
        subscriber.add(source2.subscribe(subject));
      });
    }
    exports2.connect = connect;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/count.js
var require_count = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/count.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.count = void 0;
    var reduce_1 = require_reduce();
    function count2(predicate) {
      return reduce_1.reduce(function(total, value, i2) {
        return !predicate || predicate(value, i2) ? total + 1 : total;
      }, 0);
    }
    exports2.count = count2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/debounce.js
var require_debounce = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/debounce.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.debounce = void 0;
    var lift_1 = require_lift();
    var noop_1 = require_noop();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    function debounce(durationSelector) {
      return lift_1.operate(function(source2, subscriber) {
        var hasValue = false;
        var lastValue = null;
        var durationSubscriber = null;
        var emit = function() {
          durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();
          durationSubscriber = null;
          if (hasValue) {
            hasValue = false;
            var value = lastValue;
            lastValue = null;
            subscriber.next(value);
          }
        };
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();
          hasValue = true;
          lastValue = value;
          durationSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, emit, noop_1.noop);
          innerFrom_1.innerFrom(durationSelector(value)).subscribe(durationSubscriber);
        }, function() {
          emit();
          subscriber.complete();
        }, void 0, function() {
          lastValue = durationSubscriber = null;
        }));
      });
    }
    exports2.debounce = debounce;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/debounceTime.js
var require_debounceTime = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/debounceTime.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.debounceTime = void 0;
    var async_1 = require_async2();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function debounceTime(dueTime, scheduler) {
      if (scheduler === void 0) {
        scheduler = async_1.asyncScheduler;
      }
      return lift_1.operate(function(source2, subscriber) {
        var activeTask = null;
        var lastValue = null;
        var lastTime = null;
        var emit = function() {
          if (activeTask) {
            activeTask.unsubscribe();
            activeTask = null;
            var value = lastValue;
            lastValue = null;
            subscriber.next(value);
          }
        };
        function emitWhenIdle() {
          var targetTime = lastTime + dueTime;
          var now = scheduler.now();
          if (now < targetTime) {
            activeTask = this.schedule(void 0, targetTime - now);
            subscriber.add(activeTask);
            return;
          }
          emit();
        }
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          lastValue = value;
          lastTime = scheduler.now();
          if (!activeTask) {
            activeTask = scheduler.schedule(emitWhenIdle, dueTime);
            subscriber.add(activeTask);
          }
        }, function() {
          emit();
          subscriber.complete();
        }, void 0, function() {
          lastValue = activeTask = null;
        }));
      });
    }
    exports2.debounceTime = debounceTime;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/defaultIfEmpty.js
var require_defaultIfEmpty = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/defaultIfEmpty.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.defaultIfEmpty = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function defaultIfEmpty(defaultValue) {
      return lift_1.operate(function(source2, subscriber) {
        var hasValue = false;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          hasValue = true;
          subscriber.next(value);
        }, function() {
          if (!hasValue) {
            subscriber.next(defaultValue);
          }
          subscriber.complete();
        }));
      });
    }
    exports2.defaultIfEmpty = defaultIfEmpty;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/take.js
var require_take = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/take.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.take = void 0;
    var empty_1 = require_empty3();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function take4(count2) {
      return count2 <= 0 ? function() {
        return empty_1.EMPTY;
      } : lift_1.operate(function(source2, subscriber) {
        var seen = 0;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          if (++seen <= count2) {
            subscriber.next(value);
            if (count2 <= seen) {
              subscriber.complete();
            }
          }
        }));
      });
    }
    exports2.take = take4;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/ignoreElements.js
var require_ignoreElements = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/ignoreElements.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ignoreElements = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var noop_1 = require_noop();
    function ignoreElements() {
      return lift_1.operate(function(source2, subscriber) {
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, noop_1.noop));
      });
    }
    exports2.ignoreElements = ignoreElements;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/mapTo.js
var require_mapTo = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/mapTo.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.mapTo = void 0;
    var map_1 = require_map();
    function mapTo(value) {
      return map_1.map(function() {
        return value;
      });
    }
    exports2.mapTo = mapTo;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/delayWhen.js
var require_delayWhen = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/delayWhen.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.delayWhen = void 0;
    var concat_1 = require_concat();
    var take_1 = require_take();
    var ignoreElements_1 = require_ignoreElements();
    var mapTo_1 = require_mapTo();
    var mergeMap_1 = require_mergeMap();
    var innerFrom_1 = require_innerFrom();
    function delayWhen(delayDurationSelector, subscriptionDelay) {
      if (subscriptionDelay) {
        return function(source2) {
          return concat_1.concat(subscriptionDelay.pipe(take_1.take(1), ignoreElements_1.ignoreElements()), source2.pipe(delayWhen(delayDurationSelector)));
        };
      }
      return mergeMap_1.mergeMap(function(value, index4) {
        return innerFrom_1.innerFrom(delayDurationSelector(value, index4)).pipe(take_1.take(1), mapTo_1.mapTo(value));
      });
    }
    exports2.delayWhen = delayWhen;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/delay.js
var require_delay = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/delay.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.delay = void 0;
    var async_1 = require_async2();
    var delayWhen_1 = require_delayWhen();
    var timer_1 = require_timer();
    function delay2(due, scheduler) {
      if (scheduler === void 0) {
        scheduler = async_1.asyncScheduler;
      }
      var duration = timer_1.timer(due, scheduler);
      return delayWhen_1.delayWhen(function() {
        return duration;
      });
    }
    exports2.delay = delay2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/dematerialize.js
var require_dematerialize = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/dematerialize.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.dematerialize = void 0;
    var Notification_1 = require_Notification();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function dematerialize() {
      return lift_1.operate(function(source2, subscriber) {
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(notification) {
          return Notification_1.observeNotification(notification, subscriber);
        }));
      });
    }
    exports2.dematerialize = dematerialize;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/distinct.js
var require_distinct = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/distinct.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.distinct = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var noop_1 = require_noop();
    var innerFrom_1 = require_innerFrom();
    function distinct(keySelector, flushes) {
      return lift_1.operate(function(source2, subscriber) {
        var distinctKeys = /* @__PURE__ */ new Set();
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var key2 = keySelector ? keySelector(value) : value;
          if (!distinctKeys.has(key2)) {
            distinctKeys.add(key2);
            subscriber.next(value);
          }
        }));
        flushes && innerFrom_1.innerFrom(flushes).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
          return distinctKeys.clear();
        }, noop_1.noop));
      });
    }
    exports2.distinct = distinct;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/distinctUntilChanged.js
var require_distinctUntilChanged = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/distinctUntilChanged.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.distinctUntilChanged = void 0;
    var identity_1 = require_identity();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function distinctUntilChanged(comparator, keySelector) {
      if (keySelector === void 0) {
        keySelector = identity_1.identity;
      }
      comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;
      return lift_1.operate(function(source2, subscriber) {
        var previousKey;
        var first2 = true;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var currentKey = keySelector(value);
          if (first2 || !comparator(previousKey, currentKey)) {
            first2 = false;
            previousKey = currentKey;
            subscriber.next(value);
          }
        }));
      });
    }
    exports2.distinctUntilChanged = distinctUntilChanged;
    function defaultCompare(a2, b) {
      return a2 === b;
    }
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/distinctUntilKeyChanged.js
var require_distinctUntilKeyChanged = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/distinctUntilKeyChanged.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.distinctUntilKeyChanged = void 0;
    var distinctUntilChanged_1 = require_distinctUntilChanged();
    function distinctUntilKeyChanged(key2, compare3) {
      return distinctUntilChanged_1.distinctUntilChanged(function(x2, y) {
        return compare3 ? compare3(x2[key2], y[key2]) : x2[key2] === y[key2];
      });
    }
    exports2.distinctUntilKeyChanged = distinctUntilKeyChanged;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/throwIfEmpty.js
var require_throwIfEmpty = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/throwIfEmpty.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.throwIfEmpty = void 0;
    var EmptyError_1 = require_EmptyError();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function throwIfEmpty(errorFactory) {
      if (errorFactory === void 0) {
        errorFactory = defaultErrorFactory;
      }
      return lift_1.operate(function(source2, subscriber) {
        var hasValue = false;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          hasValue = true;
          subscriber.next(value);
        }, function() {
          return hasValue ? subscriber.complete() : subscriber.error(errorFactory());
        }));
      });
    }
    exports2.throwIfEmpty = throwIfEmpty;
    function defaultErrorFactory() {
      return new EmptyError_1.EmptyError();
    }
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/elementAt.js
var require_elementAt = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/elementAt.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.elementAt = void 0;
    var ArgumentOutOfRangeError_1 = require_ArgumentOutOfRangeError();
    var filter_1 = require_filter();
    var throwIfEmpty_1 = require_throwIfEmpty();
    var defaultIfEmpty_1 = require_defaultIfEmpty();
    var take_1 = require_take();
    function elementAt(index4, defaultValue) {
      if (index4 < 0) {
        throw new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError();
      }
      var hasDefaultValue = arguments.length >= 2;
      return function(source2) {
        return source2.pipe(filter_1.filter(function(v, i2) {
          return i2 === index4;
        }), take_1.take(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function() {
          return new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError();
        }));
      };
    }
    exports2.elementAt = elementAt;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/endWith.js
var require_endWith = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/endWith.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.endWith = void 0;
    var concat_1 = require_concat();
    var of_1 = require_of();
    function endWith() {
      var values = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        values[_i] = arguments[_i];
      }
      return function(source2) {
        return concat_1.concat(source2, of_1.of.apply(void 0, __spreadArray([], __read(values))));
      };
    }
    exports2.endWith = endWith;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/every.js
var require_every = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/every.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.every = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function every(predicate, thisArg) {
      return lift_1.operate(function(source2, subscriber) {
        var index4 = 0;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          if (!predicate.call(thisArg, value, index4++, source2)) {
            subscriber.next(false);
            subscriber.complete();
          }
        }, function() {
          subscriber.next(true);
          subscriber.complete();
        }));
      });
    }
    exports2.every = every;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/exhaustMap.js
var require_exhaustMap = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/exhaustMap.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.exhaustMap = void 0;
    var map_1 = require_map();
    var innerFrom_1 = require_innerFrom();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function exhaustMap(project, resultSelector) {
      if (resultSelector) {
        return function(source2) {
          return source2.pipe(exhaustMap(function(a2, i2) {
            return innerFrom_1.innerFrom(project(a2, i2)).pipe(map_1.map(function(b, ii) {
              return resultSelector(a2, b, i2, ii);
            }));
          }));
        };
      }
      return lift_1.operate(function(source2, subscriber) {
        var index4 = 0;
        var innerSub = null;
        var isComplete = false;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(outerValue) {
          if (!innerSub) {
            innerSub = OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, function() {
              innerSub = null;
              isComplete && subscriber.complete();
            });
            innerFrom_1.innerFrom(project(outerValue, index4++)).subscribe(innerSub);
          }
        }, function() {
          isComplete = true;
          !innerSub && subscriber.complete();
        }));
      });
    }
    exports2.exhaustMap = exhaustMap;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/exhaustAll.js
var require_exhaustAll = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/exhaustAll.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.exhaustAll = void 0;
    var exhaustMap_1 = require_exhaustMap();
    var identity_1 = require_identity();
    function exhaustAll() {
      return exhaustMap_1.exhaustMap(identity_1.identity);
    }
    exports2.exhaustAll = exhaustAll;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/exhaust.js
var require_exhaust = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/exhaust.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.exhaust = void 0;
    var exhaustAll_1 = require_exhaustAll();
    exports2.exhaust = exhaustAll_1.exhaustAll;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/expand.js
var require_expand2 = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/expand.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.expand = void 0;
    var lift_1 = require_lift();
    var mergeInternals_1 = require_mergeInternals();
    function expand2(project, concurrent, scheduler) {
      if (concurrent === void 0) {
        concurrent = Infinity;
      }
      concurrent = (concurrent || 0) < 1 ? Infinity : concurrent;
      return lift_1.operate(function(source2, subscriber) {
        return mergeInternals_1.mergeInternals(source2, subscriber, project, concurrent, void 0, true, scheduler);
      });
    }
    exports2.expand = expand2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/finalize.js
var require_finalize = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/finalize.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.finalize = void 0;
    var lift_1 = require_lift();
    function finalize2(callback) {
      return lift_1.operate(function(source2, subscriber) {
        try {
          source2.subscribe(subscriber);
        } finally {
          subscriber.add(callback);
        }
      });
    }
    exports2.finalize = finalize2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/find.js
var require_find = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/find.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.createFind = exports2.find = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function find2(predicate, thisArg) {
      return lift_1.operate(createFind(predicate, thisArg, "value"));
    }
    exports2.find = find2;
    function createFind(predicate, thisArg, emit) {
      var findIndex = emit === "index";
      return function(source2, subscriber) {
        var index4 = 0;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var i2 = index4++;
          if (predicate.call(thisArg, value, i2, source2)) {
            subscriber.next(findIndex ? i2 : value);
            subscriber.complete();
          }
        }, function() {
          subscriber.next(findIndex ? -1 : void 0);
          subscriber.complete();
        }));
      };
    }
    exports2.createFind = createFind;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/findIndex.js
var require_findIndex = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/findIndex.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.findIndex = void 0;
    var lift_1 = require_lift();
    var find_1 = require_find();
    function findIndex(predicate, thisArg) {
      return lift_1.operate(find_1.createFind(predicate, thisArg, "index"));
    }
    exports2.findIndex = findIndex;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/first.js
var require_first = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/first.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.first = void 0;
    var EmptyError_1 = require_EmptyError();
    var filter_1 = require_filter();
    var take_1 = require_take();
    var defaultIfEmpty_1 = require_defaultIfEmpty();
    var throwIfEmpty_1 = require_throwIfEmpty();
    var identity_1 = require_identity();
    function first2(predicate, defaultValue) {
      var hasDefaultValue = arguments.length >= 2;
      return function(source2) {
        return source2.pipe(predicate ? filter_1.filter(function(v, i2) {
          return predicate(v, i2, source2);
        }) : identity_1.identity, take_1.take(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function() {
          return new EmptyError_1.EmptyError();
        }));
      };
    }
    exports2.first = first2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/groupBy.js
var require_groupBy = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/groupBy.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.groupBy = void 0;
    var Observable_1 = require_Observable();
    var innerFrom_1 = require_innerFrom();
    var Subject_1 = require_Subject();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function groupBy(keySelector, elementOrOptions, duration, connector) {
      return lift_1.operate(function(source2, subscriber) {
        var element5;
        if (!elementOrOptions || typeof elementOrOptions === "function") {
          element5 = elementOrOptions;
        } else {
          duration = elementOrOptions.duration, element5 = elementOrOptions.element, connector = elementOrOptions.connector;
        }
        var groups = /* @__PURE__ */ new Map();
        var notify = function(cb) {
          groups.forEach(cb);
          cb(subscriber);
        };
        var handleError = function(err) {
          return notify(function(consumer) {
            return consumer.error(err);
          });
        };
        var activeGroups = 0;
        var teardownAttempted = false;
        var groupBySourceSubscriber = new OperatorSubscriber_1.OperatorSubscriber(subscriber, function(value) {
          try {
            var key_1 = keySelector(value);
            var group_1 = groups.get(key_1);
            if (!group_1) {
              groups.set(key_1, group_1 = connector ? connector() : new Subject_1.Subject());
              var grouped = createGroupedObservable(key_1, group_1);
              subscriber.next(grouped);
              if (duration) {
                var durationSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(group_1, function() {
                  group_1.complete();
                  durationSubscriber_1 === null || durationSubscriber_1 === void 0 ? void 0 : durationSubscriber_1.unsubscribe();
                }, void 0, void 0, function() {
                  return groups.delete(key_1);
                });
                groupBySourceSubscriber.add(innerFrom_1.innerFrom(duration(grouped)).subscribe(durationSubscriber_1));
              }
            }
            group_1.next(element5 ? element5(value) : value);
          } catch (err) {
            handleError(err);
          }
        }, function() {
          return notify(function(consumer) {
            return consumer.complete();
          });
        }, handleError, function() {
          return groups.clear();
        }, function() {
          teardownAttempted = true;
          return activeGroups === 0;
        });
        source2.subscribe(groupBySourceSubscriber);
        function createGroupedObservable(key2, groupSubject) {
          var result = new Observable_1.Observable(function(groupSubscriber) {
            activeGroups++;
            var innerSub = groupSubject.subscribe(groupSubscriber);
            return function() {
              innerSub.unsubscribe();
              --activeGroups === 0 && teardownAttempted && groupBySourceSubscriber.unsubscribe();
            };
          });
          result.key = key2;
          return result;
        }
      });
    }
    exports2.groupBy = groupBy;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/isEmpty.js
var require_isEmpty = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/isEmpty.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isEmpty = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function isEmpty() {
      return lift_1.operate(function(source2, subscriber) {
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
          subscriber.next(false);
          subscriber.complete();
        }, function() {
          subscriber.next(true);
          subscriber.complete();
        }));
      });
    }
    exports2.isEmpty = isEmpty;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/takeLast.js
var require_takeLast = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/takeLast.js"(exports2) {
    "use strict";
    var __values = exports2 && exports2.__values || function(o) {
      var s5 = typeof Symbol === "function" && Symbol.iterator, m2 = s5 && o[s5], i2 = 0;
      if (m2) return m2.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i2 >= o.length) o = void 0;
          return { value: o && o[i2++], done: !o };
        }
      };
      throw new TypeError(s5 ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.takeLast = void 0;
    var empty_1 = require_empty3();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function takeLast(count2) {
      return count2 <= 0 ? function() {
        return empty_1.EMPTY;
      } : lift_1.operate(function(source2, subscriber) {
        var buffer2 = [];
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          buffer2.push(value);
          count2 < buffer2.length && buffer2.shift();
        }, function() {
          var e_1, _a6;
          try {
            for (var buffer_1 = __values(buffer2), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) {
              var value = buffer_1_1.value;
              subscriber.next(value);
            }
          } catch (e_1_1) {
            e_1 = { error: e_1_1 };
          } finally {
            try {
              if (buffer_1_1 && !buffer_1_1.done && (_a6 = buffer_1.return)) _a6.call(buffer_1);
            } finally {
              if (e_1) throw e_1.error;
            }
          }
          subscriber.complete();
        }, void 0, function() {
          buffer2 = null;
        }));
      });
    }
    exports2.takeLast = takeLast;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/last.js
var require_last = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/last.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.last = void 0;
    var EmptyError_1 = require_EmptyError();
    var filter_1 = require_filter();
    var takeLast_1 = require_takeLast();
    var throwIfEmpty_1 = require_throwIfEmpty();
    var defaultIfEmpty_1 = require_defaultIfEmpty();
    var identity_1 = require_identity();
    function last(predicate, defaultValue) {
      var hasDefaultValue = arguments.length >= 2;
      return function(source2) {
        return source2.pipe(predicate ? filter_1.filter(function(v, i2) {
          return predicate(v, i2, source2);
        }) : identity_1.identity, takeLast_1.takeLast(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function() {
          return new EmptyError_1.EmptyError();
        }));
      };
    }
    exports2.last = last;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/materialize.js
var require_materialize = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/materialize.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.materialize = void 0;
    var Notification_1 = require_Notification();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function materialize() {
      return lift_1.operate(function(source2, subscriber) {
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          subscriber.next(Notification_1.Notification.createNext(value));
        }, function() {
          subscriber.next(Notification_1.Notification.createComplete());
          subscriber.complete();
        }, function(err) {
          subscriber.next(Notification_1.Notification.createError(err));
          subscriber.complete();
        }));
      });
    }
    exports2.materialize = materialize;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/max.js
var require_max = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/max.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.max = void 0;
    var reduce_1 = require_reduce();
    var isFunction_1 = require_isFunction();
    function max(comparer) {
      return reduce_1.reduce(isFunction_1.isFunction(comparer) ? function(x2, y) {
        return comparer(x2, y) > 0 ? x2 : y;
      } : function(x2, y) {
        return x2 > y ? x2 : y;
      });
    }
    exports2.max = max;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/flatMap.js
var require_flatMap = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/flatMap.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.flatMap = void 0;
    var mergeMap_1 = require_mergeMap();
    exports2.flatMap = mergeMap_1.mergeMap;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/mergeMapTo.js
var require_mergeMapTo = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/mergeMapTo.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.mergeMapTo = void 0;
    var mergeMap_1 = require_mergeMap();
    var isFunction_1 = require_isFunction();
    function mergeMapTo(innerObservable, resultSelector, concurrent) {
      if (concurrent === void 0) {
        concurrent = Infinity;
      }
      if (isFunction_1.isFunction(resultSelector)) {
        return mergeMap_1.mergeMap(function() {
          return innerObservable;
        }, resultSelector, concurrent);
      }
      if (typeof resultSelector === "number") {
        concurrent = resultSelector;
      }
      return mergeMap_1.mergeMap(function() {
        return innerObservable;
      }, concurrent);
    }
    exports2.mergeMapTo = mergeMapTo;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/mergeScan.js
var require_mergeScan = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/mergeScan.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.mergeScan = void 0;
    var lift_1 = require_lift();
    var mergeInternals_1 = require_mergeInternals();
    function mergeScan(accumulator, seed, concurrent) {
      if (concurrent === void 0) {
        concurrent = Infinity;
      }
      return lift_1.operate(function(source2, subscriber) {
        var state = seed;
        return mergeInternals_1.mergeInternals(source2, subscriber, function(value, index4) {
          return accumulator(state, value, index4);
        }, concurrent, function(value) {
          state = value;
        }, false, void 0, function() {
          return state = null;
        });
      });
    }
    exports2.mergeScan = mergeScan;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/merge.js
var require_merge2 = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/merge.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.merge = void 0;
    var lift_1 = require_lift();
    var argsOrArgArray_1 = require_argsOrArgArray();
    var mergeAll_1 = require_mergeAll();
    var args_1 = require_args();
    var from_1 = require_from();
    function merge3() {
      var args = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        args[_i] = arguments[_i];
      }
      var scheduler = args_1.popScheduler(args);
      var concurrent = args_1.popNumber(args, Infinity);
      args = argsOrArgArray_1.argsOrArgArray(args);
      return lift_1.operate(function(source2, subscriber) {
        mergeAll_1.mergeAll(concurrent)(from_1.from(__spreadArray([source2], __read(args)), scheduler)).subscribe(subscriber);
      });
    }
    exports2.merge = merge3;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/mergeWith.js
var require_mergeWith = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/mergeWith.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.mergeWith = void 0;
    var merge_1 = require_merge2();
    function mergeWith() {
      var otherSources = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        otherSources[_i] = arguments[_i];
      }
      return merge_1.merge.apply(void 0, __spreadArray([], __read(otherSources)));
    }
    exports2.mergeWith = mergeWith;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/min.js
var require_min = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/min.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.min = void 0;
    var reduce_1 = require_reduce();
    var isFunction_1 = require_isFunction();
    function min(comparer) {
      return reduce_1.reduce(isFunction_1.isFunction(comparer) ? function(x2, y) {
        return comparer(x2, y) < 0 ? x2 : y;
      } : function(x2, y) {
        return x2 < y ? x2 : y;
      });
    }
    exports2.min = min;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/multicast.js
var require_multicast = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/multicast.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.multicast = void 0;
    var ConnectableObservable_1 = require_ConnectableObservable();
    var isFunction_1 = require_isFunction();
    var connect_1 = require_connect();
    function multicast(subjectOrSubjectFactory, selector) {
      var subjectFactory = isFunction_1.isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : function() {
        return subjectOrSubjectFactory;
      };
      if (isFunction_1.isFunction(selector)) {
        return connect_1.connect(selector, {
          connector: subjectFactory
        });
      }
      return function(source2) {
        return new ConnectableObservable_1.ConnectableObservable(source2, subjectFactory);
      };
    }
    exports2.multicast = multicast;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/onErrorResumeNextWith.js
var require_onErrorResumeNextWith = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/onErrorResumeNextWith.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.onErrorResumeNext = exports2.onErrorResumeNextWith = void 0;
    var argsOrArgArray_1 = require_argsOrArgArray();
    var onErrorResumeNext_1 = require_onErrorResumeNext();
    function onErrorResumeNextWith() {
      var sources = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        sources[_i] = arguments[_i];
      }
      var nextSources = argsOrArgArray_1.argsOrArgArray(sources);
      return function(source2) {
        return onErrorResumeNext_1.onErrorResumeNext.apply(void 0, __spreadArray([source2], __read(nextSources)));
      };
    }
    exports2.onErrorResumeNextWith = onErrorResumeNextWith;
    exports2.onErrorResumeNext = onErrorResumeNextWith;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/pairwise.js
var require_pairwise = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/pairwise.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.pairwise = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function pairwise() {
      return lift_1.operate(function(source2, subscriber) {
        var prev;
        var hasPrev = false;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var p5 = prev;
          prev = value;
          hasPrev && subscriber.next([p5, value]);
          hasPrev = true;
        }));
      });
    }
    exports2.pairwise = pairwise;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/pluck.js
var require_pluck = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/pluck.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.pluck = void 0;
    var map_1 = require_map();
    function pluck() {
      var properties = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        properties[_i] = arguments[_i];
      }
      var length = properties.length;
      if (length === 0) {
        throw new Error("list of properties cannot be empty.");
      }
      return map_1.map(function(x2) {
        var currentProp = x2;
        for (var i2 = 0; i2 < length; i2++) {
          var p5 = currentProp === null || currentProp === void 0 ? void 0 : currentProp[properties[i2]];
          if (typeof p5 !== "undefined") {
            currentProp = p5;
          } else {
            return void 0;
          }
        }
        return currentProp;
      });
    }
    exports2.pluck = pluck;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/publish.js
var require_publish = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/publish.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.publish = void 0;
    var Subject_1 = require_Subject();
    var multicast_1 = require_multicast();
    var connect_1 = require_connect();
    function publish2(selector) {
      return selector ? function(source2) {
        return connect_1.connect(selector)(source2);
      } : function(source2) {
        return multicast_1.multicast(new Subject_1.Subject())(source2);
      };
    }
    exports2.publish = publish2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/publishBehavior.js
var require_publishBehavior = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/publishBehavior.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.publishBehavior = void 0;
    var BehaviorSubject_1 = require_BehaviorSubject();
    var ConnectableObservable_1 = require_ConnectableObservable();
    function publishBehavior(initialValue) {
      return function(source2) {
        var subject = new BehaviorSubject_1.BehaviorSubject(initialValue);
        return new ConnectableObservable_1.ConnectableObservable(source2, function() {
          return subject;
        });
      };
    }
    exports2.publishBehavior = publishBehavior;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/publishLast.js
var require_publishLast = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/publishLast.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.publishLast = void 0;
    var AsyncSubject_1 = require_AsyncSubject();
    var ConnectableObservable_1 = require_ConnectableObservable();
    function publishLast() {
      return function(source2) {
        var subject = new AsyncSubject_1.AsyncSubject();
        return new ConnectableObservable_1.ConnectableObservable(source2, function() {
          return subject;
        });
      };
    }
    exports2.publishLast = publishLast;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/publishReplay.js
var require_publishReplay = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/publishReplay.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.publishReplay = void 0;
    var ReplaySubject_1 = require_ReplaySubject();
    var multicast_1 = require_multicast();
    var isFunction_1 = require_isFunction();
    function publishReplay(bufferSize, windowTime, selectorOrScheduler, timestampProvider) {
      if (selectorOrScheduler && !isFunction_1.isFunction(selectorOrScheduler)) {
        timestampProvider = selectorOrScheduler;
      }
      var selector = isFunction_1.isFunction(selectorOrScheduler) ? selectorOrScheduler : void 0;
      return function(source2) {
        return multicast_1.multicast(new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, timestampProvider), selector)(source2);
      };
    }
    exports2.publishReplay = publishReplay;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/raceWith.js
var require_raceWith = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/raceWith.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.raceWith = void 0;
    var race_1 = require_race();
    var lift_1 = require_lift();
    var identity_1 = require_identity();
    function raceWith() {
      var otherSources = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        otherSources[_i] = arguments[_i];
      }
      return !otherSources.length ? identity_1.identity : lift_1.operate(function(source2, subscriber) {
        race_1.raceInit(__spreadArray([source2], __read(otherSources)))(subscriber);
      });
    }
    exports2.raceWith = raceWith;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/repeat.js
var require_repeat = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/repeat.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.repeat = void 0;
    var empty_1 = require_empty3();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    var timer_1 = require_timer();
    function repeat2(countOrConfig) {
      var _a6;
      var count2 = Infinity;
      var delay2;
      if (countOrConfig != null) {
        if (typeof countOrConfig === "object") {
          _a6 = countOrConfig.count, count2 = _a6 === void 0 ? Infinity : _a6, delay2 = countOrConfig.delay;
        } else {
          count2 = countOrConfig;
        }
      }
      return count2 <= 0 ? function() {
        return empty_1.EMPTY;
      } : lift_1.operate(function(source2, subscriber) {
        var soFar = 0;
        var sourceSub;
        var resubscribe = function() {
          sourceSub === null || sourceSub === void 0 ? void 0 : sourceSub.unsubscribe();
          sourceSub = null;
          if (delay2 != null) {
            var notifier = typeof delay2 === "number" ? timer_1.timer(delay2) : innerFrom_1.innerFrom(delay2(soFar));
            var notifierSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
              notifierSubscriber_1.unsubscribe();
              subscribeToSource();
            });
            notifier.subscribe(notifierSubscriber_1);
          } else {
            subscribeToSource();
          }
        };
        var subscribeToSource = function() {
          var syncUnsub = false;
          sourceSub = source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, function() {
            if (++soFar < count2) {
              if (sourceSub) {
                resubscribe();
              } else {
                syncUnsub = true;
              }
            } else {
              subscriber.complete();
            }
          }));
          if (syncUnsub) {
            resubscribe();
          }
        };
        subscribeToSource();
      });
    }
    exports2.repeat = repeat2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/repeatWhen.js
var require_repeatWhen = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/repeatWhen.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.repeatWhen = void 0;
    var innerFrom_1 = require_innerFrom();
    var Subject_1 = require_Subject();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function repeatWhen(notifier) {
      return lift_1.operate(function(source2, subscriber) {
        var innerSub;
        var syncResub = false;
        var completions$;
        var isNotifierComplete = false;
        var isMainComplete = false;
        var checkComplete = function() {
          return isMainComplete && isNotifierComplete && (subscriber.complete(), true);
        };
        var getCompletionSubject = function() {
          if (!completions$) {
            completions$ = new Subject_1.Subject();
            innerFrom_1.innerFrom(notifier(completions$)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
              if (innerSub) {
                subscribeForRepeatWhen();
              } else {
                syncResub = true;
              }
            }, function() {
              isNotifierComplete = true;
              checkComplete();
            }));
          }
          return completions$;
        };
        var subscribeForRepeatWhen = function() {
          isMainComplete = false;
          innerSub = source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, function() {
            isMainComplete = true;
            !checkComplete() && getCompletionSubject().next();
          }));
          if (syncResub) {
            innerSub.unsubscribe();
            innerSub = null;
            syncResub = false;
            subscribeForRepeatWhen();
          }
        };
        subscribeForRepeatWhen();
      });
    }
    exports2.repeatWhen = repeatWhen;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/retry.js
var require_retry = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/retry.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.retry = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var identity_1 = require_identity();
    var timer_1 = require_timer();
    var innerFrom_1 = require_innerFrom();
    function retry(configOrCount) {
      if (configOrCount === void 0) {
        configOrCount = Infinity;
      }
      var config3;
      if (configOrCount && typeof configOrCount === "object") {
        config3 = configOrCount;
      } else {
        config3 = {
          count: configOrCount
        };
      }
      var _a6 = config3.count, count2 = _a6 === void 0 ? Infinity : _a6, delay2 = config3.delay, _b = config3.resetOnSuccess, resetOnSuccess = _b === void 0 ? false : _b;
      return count2 <= 0 ? identity_1.identity : lift_1.operate(function(source2, subscriber) {
        var soFar = 0;
        var innerSub;
        var subscribeForRetry = function() {
          var syncUnsub = false;
          innerSub = source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
            if (resetOnSuccess) {
              soFar = 0;
            }
            subscriber.next(value);
          }, void 0, function(err) {
            if (soFar++ < count2) {
              var resub_1 = function() {
                if (innerSub) {
                  innerSub.unsubscribe();
                  innerSub = null;
                  subscribeForRetry();
                } else {
                  syncUnsub = true;
                }
              };
              if (delay2 != null) {
                var notifier = typeof delay2 === "number" ? timer_1.timer(delay2) : innerFrom_1.innerFrom(delay2(err, soFar));
                var notifierSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
                  notifierSubscriber_1.unsubscribe();
                  resub_1();
                }, function() {
                  subscriber.complete();
                });
                notifier.subscribe(notifierSubscriber_1);
              } else {
                resub_1();
              }
            } else {
              subscriber.error(err);
            }
          }));
          if (syncUnsub) {
            innerSub.unsubscribe();
            innerSub = null;
            subscribeForRetry();
          }
        };
        subscribeForRetry();
      });
    }
    exports2.retry = retry;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/retryWhen.js
var require_retryWhen = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/retryWhen.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.retryWhen = void 0;
    var innerFrom_1 = require_innerFrom();
    var Subject_1 = require_Subject();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function retryWhen(notifier) {
      return lift_1.operate(function(source2, subscriber) {
        var innerSub;
        var syncResub = false;
        var errors$;
        var subscribeForRetryWhen = function() {
          innerSub = source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, void 0, void 0, function(err) {
            if (!errors$) {
              errors$ = new Subject_1.Subject();
              innerFrom_1.innerFrom(notifier(errors$)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
                return innerSub ? subscribeForRetryWhen() : syncResub = true;
              }));
            }
            if (errors$) {
              errors$.next(err);
            }
          }));
          if (syncResub) {
            innerSub.unsubscribe();
            innerSub = null;
            syncResub = false;
            subscribeForRetryWhen();
          }
        };
        subscribeForRetryWhen();
      });
    }
    exports2.retryWhen = retryWhen;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/sample.js
var require_sample = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/sample.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.sample = void 0;
    var innerFrom_1 = require_innerFrom();
    var lift_1 = require_lift();
    var noop_1 = require_noop();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function sample(notifier) {
      return lift_1.operate(function(source2, subscriber) {
        var hasValue = false;
        var lastValue = null;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          hasValue = true;
          lastValue = value;
        }));
        innerFrom_1.innerFrom(notifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
          if (hasValue) {
            hasValue = false;
            var value = lastValue;
            lastValue = null;
            subscriber.next(value);
          }
        }, noop_1.noop));
      });
    }
    exports2.sample = sample;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/sampleTime.js
var require_sampleTime = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/sampleTime.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.sampleTime = void 0;
    var async_1 = require_async2();
    var sample_1 = require_sample();
    var interval_1 = require_interval();
    function sampleTime(period, scheduler) {
      if (scheduler === void 0) {
        scheduler = async_1.asyncScheduler;
      }
      return sample_1.sample(interval_1.interval(period, scheduler));
    }
    exports2.sampleTime = sampleTime;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/scan.js
var require_scan3 = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/scan.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.scan = void 0;
    var lift_1 = require_lift();
    var scanInternals_1 = require_scanInternals();
    function scan2(accumulator, seed) {
      return lift_1.operate(scanInternals_1.scanInternals(accumulator, seed, arguments.length >= 2, true));
    }
    exports2.scan = scan2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/sequenceEqual.js
var require_sequenceEqual = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/sequenceEqual.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.sequenceEqual = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    function sequenceEqual(compareTo, comparator) {
      if (comparator === void 0) {
        comparator = function(a2, b) {
          return a2 === b;
        };
      }
      return lift_1.operate(function(source2, subscriber) {
        var aState = createState3();
        var bState = createState3();
        var emit = function(isEqual) {
          subscriber.next(isEqual);
          subscriber.complete();
        };
        var createSubscriber = function(selfState, otherState) {
          var sequenceEqualSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(a2) {
            var buffer2 = otherState.buffer, complete = otherState.complete;
            if (buffer2.length === 0) {
              complete ? emit(false) : selfState.buffer.push(a2);
            } else {
              !comparator(a2, buffer2.shift()) && emit(false);
            }
          }, function() {
            selfState.complete = true;
            var complete = otherState.complete, buffer2 = otherState.buffer;
            complete && emit(buffer2.length === 0);
            sequenceEqualSubscriber === null || sequenceEqualSubscriber === void 0 ? void 0 : sequenceEqualSubscriber.unsubscribe();
          });
          return sequenceEqualSubscriber;
        };
        source2.subscribe(createSubscriber(aState, bState));
        innerFrom_1.innerFrom(compareTo).subscribe(createSubscriber(bState, aState));
      });
    }
    exports2.sequenceEqual = sequenceEqual;
    function createState3() {
      return {
        buffer: [],
        complete: false
      };
    }
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/share.js
var require_share = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/share.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.share = void 0;
    var innerFrom_1 = require_innerFrom();
    var Subject_1 = require_Subject();
    var Subscriber_1 = require_Subscriber();
    var lift_1 = require_lift();
    function share3(options) {
      if (options === void 0) {
        options = {};
      }
      var _a6 = options.connector, connector = _a6 === void 0 ? function() {
        return new Subject_1.Subject();
      } : _a6, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d2 = options.resetOnRefCountZero, resetOnRefCountZero = _d2 === void 0 ? true : _d2;
      return function(wrapperSource) {
        var connection;
        var resetConnection;
        var subject;
        var refCount = 0;
        var hasCompleted = false;
        var hasErrored = false;
        var cancelReset = function() {
          resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();
          resetConnection = void 0;
        };
        var reset = function() {
          cancelReset();
          connection = subject = void 0;
          hasCompleted = hasErrored = false;
        };
        var resetAndUnsubscribe = function() {
          var conn = connection;
          reset();
          conn === null || conn === void 0 ? void 0 : conn.unsubscribe();
        };
        return lift_1.operate(function(source2, subscriber) {
          refCount++;
          if (!hasErrored && !hasCompleted) {
            cancelReset();
          }
          var dest = subject = subject !== null && subject !== void 0 ? subject : connector();
          subscriber.add(function() {
            refCount--;
            if (refCount === 0 && !hasErrored && !hasCompleted) {
              resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);
            }
          });
          dest.subscribe(subscriber);
          if (!connection && refCount > 0) {
            connection = new Subscriber_1.SafeSubscriber({
              next: function(value) {
                return dest.next(value);
              },
              error: function(err) {
                hasErrored = true;
                cancelReset();
                resetConnection = handleReset(reset, resetOnError, err);
                dest.error(err);
              },
              complete: function() {
                hasCompleted = true;
                cancelReset();
                resetConnection = handleReset(reset, resetOnComplete);
                dest.complete();
              }
            });
            innerFrom_1.innerFrom(source2).subscribe(connection);
          }
        })(wrapperSource);
      };
    }
    exports2.share = share3;
    function handleReset(reset, on) {
      var args = [];
      for (var _i = 2; _i < arguments.length; _i++) {
        args[_i - 2] = arguments[_i];
      }
      if (on === true) {
        reset();
        return;
      }
      if (on === false) {
        return;
      }
      var onSubscriber = new Subscriber_1.SafeSubscriber({
        next: function() {
          onSubscriber.unsubscribe();
          reset();
        }
      });
      return innerFrom_1.innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);
    }
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/shareReplay.js
var require_shareReplay = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/shareReplay.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.shareReplay = void 0;
    var ReplaySubject_1 = require_ReplaySubject();
    var share_1 = require_share();
    function shareReplay(configOrBufferSize, windowTime, scheduler) {
      var _a6, _b, _c;
      var bufferSize;
      var refCount = false;
      if (configOrBufferSize && typeof configOrBufferSize === "object") {
        _a6 = configOrBufferSize.bufferSize, bufferSize = _a6 === void 0 ? Infinity : _a6, _b = configOrBufferSize.windowTime, windowTime = _b === void 0 ? Infinity : _b, _c = configOrBufferSize.refCount, refCount = _c === void 0 ? false : _c, scheduler = configOrBufferSize.scheduler;
      } else {
        bufferSize = configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity;
      }
      return share_1.share({
        connector: function() {
          return new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, scheduler);
        },
        resetOnError: true,
        resetOnComplete: false,
        resetOnRefCountZero: refCount
      });
    }
    exports2.shareReplay = shareReplay;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/single.js
var require_single = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/single.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.single = void 0;
    var EmptyError_1 = require_EmptyError();
    var SequenceError_1 = require_SequenceError();
    var NotFoundError_1 = require_NotFoundError();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function single(predicate) {
      return lift_1.operate(function(source2, subscriber) {
        var hasValue = false;
        var singleValue;
        var seenValue = false;
        var index4 = 0;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          seenValue = true;
          if (!predicate || predicate(value, index4++, source2)) {
            hasValue && subscriber.error(new SequenceError_1.SequenceError("Too many matching values"));
            hasValue = true;
            singleValue = value;
          }
        }, function() {
          if (hasValue) {
            subscriber.next(singleValue);
            subscriber.complete();
          } else {
            subscriber.error(seenValue ? new NotFoundError_1.NotFoundError("No matching values") : new EmptyError_1.EmptyError());
          }
        }));
      });
    }
    exports2.single = single;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/skip.js
var require_skip = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/skip.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.skip = void 0;
    var filter_1 = require_filter();
    function skip(count2) {
      return filter_1.filter(function(_2, index4) {
        return count2 <= index4;
      });
    }
    exports2.skip = skip;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/skipLast.js
var require_skipLast = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/skipLast.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.skipLast = void 0;
    var identity_1 = require_identity();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function skipLast(skipCount) {
      return skipCount <= 0 ? identity_1.identity : lift_1.operate(function(source2, subscriber) {
        var ring = new Array(skipCount);
        var seen = 0;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var valueIndex = seen++;
          if (valueIndex < skipCount) {
            ring[valueIndex] = value;
          } else {
            var index4 = valueIndex % skipCount;
            var oldValue = ring[index4];
            ring[index4] = value;
            subscriber.next(oldValue);
          }
        }));
        return function() {
          ring = null;
        };
      });
    }
    exports2.skipLast = skipLast;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/skipUntil.js
var require_skipUntil = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/skipUntil.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.skipUntil = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    var noop_1 = require_noop();
    function skipUntil(notifier) {
      return lift_1.operate(function(source2, subscriber) {
        var taking = false;
        var skipSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
          skipSubscriber === null || skipSubscriber === void 0 ? void 0 : skipSubscriber.unsubscribe();
          taking = true;
        }, noop_1.noop);
        innerFrom_1.innerFrom(notifier).subscribe(skipSubscriber);
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          return taking && subscriber.next(value);
        }));
      });
    }
    exports2.skipUntil = skipUntil;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/skipWhile.js
var require_skipWhile = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/skipWhile.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.skipWhile = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function skipWhile(predicate) {
      return lift_1.operate(function(source2, subscriber) {
        var taking = false;
        var index4 = 0;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          return (taking || (taking = !predicate(value, index4++))) && subscriber.next(value);
        }));
      });
    }
    exports2.skipWhile = skipWhile;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/startWith.js
var require_startWith = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/startWith.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.startWith = void 0;
    var concat_1 = require_concat();
    var args_1 = require_args();
    var lift_1 = require_lift();
    function startWith() {
      var values = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        values[_i] = arguments[_i];
      }
      var scheduler = args_1.popScheduler(values);
      return lift_1.operate(function(source2, subscriber) {
        (scheduler ? concat_1.concat(values, source2, scheduler) : concat_1.concat(values, source2)).subscribe(subscriber);
      });
    }
    exports2.startWith = startWith;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/switchMap.js
var require_switchMap = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/switchMap.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.switchMap = void 0;
    var innerFrom_1 = require_innerFrom();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function switchMap(project, resultSelector) {
      return lift_1.operate(function(source2, subscriber) {
        var innerSubscriber = null;
        var index4 = 0;
        var isComplete = false;
        var checkComplete = function() {
          return isComplete && !innerSubscriber && subscriber.complete();
        };
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();
          var innerIndex = 0;
          var outerIndex = index4++;
          innerFrom_1.innerFrom(project(value, outerIndex)).subscribe(innerSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(innerValue) {
            return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue);
          }, function() {
            innerSubscriber = null;
            checkComplete();
          }));
        }, function() {
          isComplete = true;
          checkComplete();
        }));
      });
    }
    exports2.switchMap = switchMap;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/switchAll.js
var require_switchAll = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/switchAll.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.switchAll = void 0;
    var switchMap_1 = require_switchMap();
    var identity_1 = require_identity();
    function switchAll() {
      return switchMap_1.switchMap(identity_1.identity);
    }
    exports2.switchAll = switchAll;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/switchMapTo.js
var require_switchMapTo = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/switchMapTo.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.switchMapTo = void 0;
    var switchMap_1 = require_switchMap();
    var isFunction_1 = require_isFunction();
    function switchMapTo(innerObservable, resultSelector) {
      return isFunction_1.isFunction(resultSelector) ? switchMap_1.switchMap(function() {
        return innerObservable;
      }, resultSelector) : switchMap_1.switchMap(function() {
        return innerObservable;
      });
    }
    exports2.switchMapTo = switchMapTo;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/switchScan.js
var require_switchScan = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/switchScan.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.switchScan = void 0;
    var switchMap_1 = require_switchMap();
    var lift_1 = require_lift();
    function switchScan(accumulator, seed) {
      return lift_1.operate(function(source2, subscriber) {
        var state = seed;
        switchMap_1.switchMap(function(value, index4) {
          return accumulator(state, value, index4);
        }, function(_2, innerValue) {
          return state = innerValue, innerValue;
        })(source2).subscribe(subscriber);
        return function() {
          state = null;
        };
      });
    }
    exports2.switchScan = switchScan;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/takeUntil.js
var require_takeUntil = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/takeUntil.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.takeUntil = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    var noop_1 = require_noop();
    function takeUntil10(notifier) {
      return lift_1.operate(function(source2, subscriber) {
        innerFrom_1.innerFrom(notifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
          return subscriber.complete();
        }, noop_1.noop));
        !subscriber.closed && source2.subscribe(subscriber);
      });
    }
    exports2.takeUntil = takeUntil10;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/takeWhile.js
var require_takeWhile = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/takeWhile.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.takeWhile = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function takeWhile(predicate, inclusive) {
      if (inclusive === void 0) {
        inclusive = false;
      }
      return lift_1.operate(function(source2, subscriber) {
        var index4 = 0;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var result = predicate(value, index4++);
          (result || inclusive) && subscriber.next(value);
          !result && subscriber.complete();
        }));
      });
    }
    exports2.takeWhile = takeWhile;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/tap.js
var require_tap = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/tap.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.tap = void 0;
    var isFunction_1 = require_isFunction();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var identity_1 = require_identity();
    function tap(observerOrNext, error, complete) {
      var tapObserver = isFunction_1.isFunction(observerOrNext) || error || complete ? { next: observerOrNext, error, complete } : observerOrNext;
      return tapObserver ? lift_1.operate(function(source2, subscriber) {
        var _a6;
        (_a6 = tapObserver.subscribe) === null || _a6 === void 0 ? void 0 : _a6.call(tapObserver);
        var isUnsub = true;
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var _a7;
          (_a7 = tapObserver.next) === null || _a7 === void 0 ? void 0 : _a7.call(tapObserver, value);
          subscriber.next(value);
        }, function() {
          var _a7;
          isUnsub = false;
          (_a7 = tapObserver.complete) === null || _a7 === void 0 ? void 0 : _a7.call(tapObserver);
          subscriber.complete();
        }, function(err) {
          var _a7;
          isUnsub = false;
          (_a7 = tapObserver.error) === null || _a7 === void 0 ? void 0 : _a7.call(tapObserver, err);
          subscriber.error(err);
        }, function() {
          var _a7, _b;
          if (isUnsub) {
            (_a7 = tapObserver.unsubscribe) === null || _a7 === void 0 ? void 0 : _a7.call(tapObserver);
          }
          (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);
        }));
      }) : identity_1.identity;
    }
    exports2.tap = tap;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/throttle.js
var require_throttle = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/throttle.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.throttle = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    function throttle(durationSelector, config3) {
      return lift_1.operate(function(source2, subscriber) {
        var _a6 = config3 !== null && config3 !== void 0 ? config3 : {}, _b = _a6.leading, leading = _b === void 0 ? true : _b, _c = _a6.trailing, trailing = _c === void 0 ? false : _c;
        var hasValue = false;
        var sendValue = null;
        var throttled = null;
        var isComplete = false;
        var endThrottling = function() {
          throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();
          throttled = null;
          if (trailing) {
            send();
            isComplete && subscriber.complete();
          }
        };
        var cleanupThrottling = function() {
          throttled = null;
          isComplete && subscriber.complete();
        };
        var startThrottle = function(value) {
          return throttled = innerFrom_1.innerFrom(durationSelector(value)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling));
        };
        var send = function() {
          if (hasValue) {
            hasValue = false;
            var value = sendValue;
            sendValue = null;
            subscriber.next(value);
            !isComplete && startThrottle(value);
          }
        };
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          hasValue = true;
          sendValue = value;
          !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));
        }, function() {
          isComplete = true;
          !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();
        }));
      });
    }
    exports2.throttle = throttle;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/throttleTime.js
var require_throttleTime = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/throttleTime.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.throttleTime = void 0;
    var async_1 = require_async2();
    var throttle_1 = require_throttle();
    var timer_1 = require_timer();
    function throttleTime(duration, scheduler, config3) {
      if (scheduler === void 0) {
        scheduler = async_1.asyncScheduler;
      }
      var duration$ = timer_1.timer(duration, scheduler);
      return throttle_1.throttle(function() {
        return duration$;
      }, config3);
    }
    exports2.throttleTime = throttleTime;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/timeInterval.js
var require_timeInterval = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/timeInterval.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.TimeInterval = exports2.timeInterval = void 0;
    var async_1 = require_async2();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function timeInterval(scheduler) {
      if (scheduler === void 0) {
        scheduler = async_1.asyncScheduler;
      }
      return lift_1.operate(function(source2, subscriber) {
        var last = scheduler.now();
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var now = scheduler.now();
          var interval2 = now - last;
          last = now;
          subscriber.next(new TimeInterval(value, interval2));
        }));
      });
    }
    exports2.timeInterval = timeInterval;
    var TimeInterval = /* @__PURE__ */ (function() {
      function TimeInterval2(value, interval2) {
        this.value = value;
        this.interval = interval2;
      }
      return TimeInterval2;
    })();
    exports2.TimeInterval = TimeInterval;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/timeoutWith.js
var require_timeoutWith = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/timeoutWith.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.timeoutWith = void 0;
    var async_1 = require_async2();
    var isDate_1 = require_isDate();
    var timeout_1 = require_timeout();
    function timeoutWith(due, withObservable, scheduler) {
      var first2;
      var each2;
      var _with;
      scheduler = scheduler !== null && scheduler !== void 0 ? scheduler : async_1.async;
      if (isDate_1.isValidDate(due)) {
        first2 = due;
      } else if (typeof due === "number") {
        each2 = due;
      }
      if (withObservable) {
        _with = function() {
          return withObservable;
        };
      } else {
        throw new TypeError("No observable provided to switch to");
      }
      if (first2 == null && each2 == null) {
        throw new TypeError("No timeout provided.");
      }
      return timeout_1.timeout({
        first: first2,
        each: each2,
        scheduler,
        with: _with
      });
    }
    exports2.timeoutWith = timeoutWith;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/timestamp.js
var require_timestamp = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/timestamp.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.timestamp = void 0;
    var dateTimestampProvider_1 = require_dateTimestampProvider();
    var map_1 = require_map();
    function timestamp2(timestampProvider) {
      if (timestampProvider === void 0) {
        timestampProvider = dateTimestampProvider_1.dateTimestampProvider;
      }
      return map_1.map(function(value) {
        return { value, timestamp: timestampProvider.now() };
      });
    }
    exports2.timestamp = timestamp2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/window.js
var require_window = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/window.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.window = void 0;
    var Subject_1 = require_Subject();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var noop_1 = require_noop();
    var innerFrom_1 = require_innerFrom();
    function window2(windowBoundaries) {
      return lift_1.operate(function(source2, subscriber) {
        var windowSubject = new Subject_1.Subject();
        subscriber.next(windowSubject.asObservable());
        var errorHandler = function(err) {
          windowSubject.error(err);
          subscriber.error(err);
        };
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          return windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.next(value);
        }, function() {
          windowSubject.complete();
          subscriber.complete();
        }, errorHandler));
        innerFrom_1.innerFrom(windowBoundaries).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function() {
          windowSubject.complete();
          subscriber.next(windowSubject = new Subject_1.Subject());
        }, noop_1.noop, errorHandler));
        return function() {
          windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.unsubscribe();
          windowSubject = null;
        };
      });
    }
    exports2.window = window2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/windowCount.js
var require_windowCount = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/windowCount.js"(exports2) {
    "use strict";
    var __values = exports2 && exports2.__values || function(o) {
      var s5 = typeof Symbol === "function" && Symbol.iterator, m2 = s5 && o[s5], i2 = 0;
      if (m2) return m2.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i2 >= o.length) o = void 0;
          return { value: o && o[i2++], done: !o };
        }
      };
      throw new TypeError(s5 ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.windowCount = void 0;
    var Subject_1 = require_Subject();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    function windowCount(windowSize, startWindowEvery) {
      if (startWindowEvery === void 0) {
        startWindowEvery = 0;
      }
      var startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize;
      return lift_1.operate(function(source2, subscriber) {
        var windows = [new Subject_1.Subject()];
        var starts = [];
        var count2 = 0;
        subscriber.next(windows[0].asObservable());
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var e_1, _a6;
          try {
            for (var windows_1 = __values(windows), windows_1_1 = windows_1.next(); !windows_1_1.done; windows_1_1 = windows_1.next()) {
              var window_1 = windows_1_1.value;
              window_1.next(value);
            }
          } catch (e_1_1) {
            e_1 = { error: e_1_1 };
          } finally {
            try {
              if (windows_1_1 && !windows_1_1.done && (_a6 = windows_1.return)) _a6.call(windows_1);
            } finally {
              if (e_1) throw e_1.error;
            }
          }
          var c = count2 - windowSize + 1;
          if (c >= 0 && c % startEvery === 0) {
            windows.shift().complete();
          }
          if (++count2 % startEvery === 0) {
            var window_2 = new Subject_1.Subject();
            windows.push(window_2);
            subscriber.next(window_2.asObservable());
          }
        }, function() {
          while (windows.length > 0) {
            windows.shift().complete();
          }
          subscriber.complete();
        }, function(err) {
          while (windows.length > 0) {
            windows.shift().error(err);
          }
          subscriber.error(err);
        }, function() {
          starts = null;
          windows = null;
        }));
      });
    }
    exports2.windowCount = windowCount;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/windowTime.js
var require_windowTime = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/windowTime.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.windowTime = void 0;
    var Subject_1 = require_Subject();
    var async_1 = require_async2();
    var Subscription_1 = require_Subscription();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var arrRemove_1 = require_arrRemove();
    var args_1 = require_args();
    var executeSchedule_1 = require_executeSchedule();
    function windowTime(windowTimeSpan) {
      var _a6, _b;
      var otherArgs = [];
      for (var _i = 1; _i < arguments.length; _i++) {
        otherArgs[_i - 1] = arguments[_i];
      }
      var scheduler = (_a6 = args_1.popScheduler(otherArgs)) !== null && _a6 !== void 0 ? _a6 : async_1.asyncScheduler;
      var windowCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;
      var maxWindowSize = otherArgs[1] || Infinity;
      return lift_1.operate(function(source2, subscriber) {
        var windowRecords = [];
        var restartOnClose = false;
        var closeWindow = function(record) {
          var window2 = record.window, subs = record.subs;
          window2.complete();
          subs.unsubscribe();
          arrRemove_1.arrRemove(windowRecords, record);
          restartOnClose && startWindow();
        };
        var startWindow = function() {
          if (windowRecords) {
            var subs = new Subscription_1.Subscription();
            subscriber.add(subs);
            var window_1 = new Subject_1.Subject();
            var record_1 = {
              window: window_1,
              subs,
              seen: 0
            };
            windowRecords.push(record_1);
            subscriber.next(window_1.asObservable());
            executeSchedule_1.executeSchedule(subs, scheduler, function() {
              return closeWindow(record_1);
            }, windowTimeSpan);
          }
        };
        if (windowCreationInterval !== null && windowCreationInterval >= 0) {
          executeSchedule_1.executeSchedule(subscriber, scheduler, startWindow, windowCreationInterval, true);
        } else {
          restartOnClose = true;
        }
        startWindow();
        var loop = function(cb) {
          return windowRecords.slice().forEach(cb);
        };
        var terminate = function(cb) {
          loop(function(_a7) {
            var window2 = _a7.window;
            return cb(window2);
          });
          cb(subscriber);
          subscriber.unsubscribe();
        };
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          loop(function(record) {
            record.window.next(value);
            maxWindowSize <= ++record.seen && closeWindow(record);
          });
        }, function() {
          return terminate(function(consumer) {
            return consumer.complete();
          });
        }, function(err) {
          return terminate(function(consumer) {
            return consumer.error(err);
          });
        }));
        return function() {
          windowRecords = null;
        };
      });
    }
    exports2.windowTime = windowTime;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/windowToggle.js
var require_windowToggle = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/windowToggle.js"(exports2) {
    "use strict";
    var __values = exports2 && exports2.__values || function(o) {
      var s5 = typeof Symbol === "function" && Symbol.iterator, m2 = s5 && o[s5], i2 = 0;
      if (m2) return m2.call(o);
      if (o && typeof o.length === "number") return {
        next: function() {
          if (o && i2 >= o.length) o = void 0;
          return { value: o && o[i2++], done: !o };
        }
      };
      throw new TypeError(s5 ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.windowToggle = void 0;
    var Subject_1 = require_Subject();
    var Subscription_1 = require_Subscription();
    var lift_1 = require_lift();
    var innerFrom_1 = require_innerFrom();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var noop_1 = require_noop();
    var arrRemove_1 = require_arrRemove();
    function windowToggle(openings, closingSelector) {
      return lift_1.operate(function(source2, subscriber) {
        var windows = [];
        var handleError = function(err) {
          while (0 < windows.length) {
            windows.shift().error(err);
          }
          subscriber.error(err);
        };
        innerFrom_1.innerFrom(openings).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(openValue) {
          var window2 = new Subject_1.Subject();
          windows.push(window2);
          var closingSubscription = new Subscription_1.Subscription();
          var closeWindow = function() {
            arrRemove_1.arrRemove(windows, window2);
            window2.complete();
            closingSubscription.unsubscribe();
          };
          var closingNotifier;
          try {
            closingNotifier = innerFrom_1.innerFrom(closingSelector(openValue));
          } catch (err) {
            handleError(err);
            return;
          }
          subscriber.next(window2.asObservable());
          closingSubscription.add(closingNotifier.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, closeWindow, noop_1.noop, handleError)));
        }, noop_1.noop));
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          var e_1, _a6;
          var windowsCopy = windows.slice();
          try {
            for (var windowsCopy_1 = __values(windowsCopy), windowsCopy_1_1 = windowsCopy_1.next(); !windowsCopy_1_1.done; windowsCopy_1_1 = windowsCopy_1.next()) {
              var window_1 = windowsCopy_1_1.value;
              window_1.next(value);
            }
          } catch (e_1_1) {
            e_1 = { error: e_1_1 };
          } finally {
            try {
              if (windowsCopy_1_1 && !windowsCopy_1_1.done && (_a6 = windowsCopy_1.return)) _a6.call(windowsCopy_1);
            } finally {
              if (e_1) throw e_1.error;
            }
          }
        }, function() {
          while (0 < windows.length) {
            windows.shift().complete();
          }
          subscriber.complete();
        }, handleError, function() {
          while (0 < windows.length) {
            windows.shift().unsubscribe();
          }
        }));
      });
    }
    exports2.windowToggle = windowToggle;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/windowWhen.js
var require_windowWhen = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/windowWhen.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.windowWhen = void 0;
    var Subject_1 = require_Subject();
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    function windowWhen(closingSelector) {
      return lift_1.operate(function(source2, subscriber) {
        var window2;
        var closingSubscriber;
        var handleError = function(err) {
          window2.error(err);
          subscriber.error(err);
        };
        var openWindow = function() {
          closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();
          window2 === null || window2 === void 0 ? void 0 : window2.complete();
          window2 = new Subject_1.Subject();
          subscriber.next(window2.asObservable());
          var closingNotifier;
          try {
            closingNotifier = innerFrom_1.innerFrom(closingSelector());
          } catch (err) {
            handleError(err);
            return;
          }
          closingNotifier.subscribe(closingSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, openWindow, openWindow, handleError));
        };
        openWindow();
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          return window2.next(value);
        }, function() {
          window2.complete();
          subscriber.complete();
        }, handleError, function() {
          closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();
          window2 = null;
        }));
      });
    }
    exports2.windowWhen = windowWhen;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/withLatestFrom.js
var require_withLatestFrom = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/withLatestFrom.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.withLatestFrom = void 0;
    var lift_1 = require_lift();
    var OperatorSubscriber_1 = require_OperatorSubscriber();
    var innerFrom_1 = require_innerFrom();
    var identity_1 = require_identity();
    var noop_1 = require_noop();
    var args_1 = require_args();
    function withLatestFrom() {
      var inputs = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        inputs[_i] = arguments[_i];
      }
      var project = args_1.popResultSelector(inputs);
      return lift_1.operate(function(source2, subscriber) {
        var len = inputs.length;
        var otherValues = new Array(len);
        var hasValue = inputs.map(function() {
          return false;
        });
        var ready = false;
        var _loop_1 = function(i3) {
          innerFrom_1.innerFrom(inputs[i3]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
            otherValues[i3] = value;
            if (!ready && !hasValue[i3]) {
              hasValue[i3] = true;
              (ready = hasValue.every(identity_1.identity)) && (hasValue = null);
            }
          }, noop_1.noop));
        };
        for (var i2 = 0; i2 < len; i2++) {
          _loop_1(i2);
        }
        source2.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function(value) {
          if (ready) {
            var values = __spreadArray([value], __read(otherValues));
            subscriber.next(project ? project.apply(void 0, __spreadArray([], __read(values))) : values);
          }
        }));
      });
    }
    exports2.withLatestFrom = withLatestFrom;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/zipAll.js
var require_zipAll = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/zipAll.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.zipAll = void 0;
    var zip_1 = require_zip();
    var joinAllInternals_1 = require_joinAllInternals();
    function zipAll(project) {
      return joinAllInternals_1.joinAllInternals(zip_1.zip, project);
    }
    exports2.zipAll = zipAll;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/zip.js
var require_zip2 = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/zip.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.zip = void 0;
    var zip_1 = require_zip();
    var lift_1 = require_lift();
    function zip2() {
      var sources = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        sources[_i] = arguments[_i];
      }
      return lift_1.operate(function(source2, subscriber) {
        zip_1.zip.apply(void 0, __spreadArray([source2], __read(sources))).subscribe(subscriber);
      });
    }
    exports2.zip = zip2;
  }
});

// ../../node_modules/rxjs/dist/cjs/internal/operators/zipWith.js
var require_zipWith = __commonJS({
  "../../node_modules/rxjs/dist/cjs/internal/operators/zipWith.js"(exports2) {
    "use strict";
    var __read = exports2 && exports2.__read || function(o, n) {
      var m2 = typeof Symbol === "function" && o[Symbol.iterator];
      if (!m2) return o;
      var i2 = m2.call(o), r2, ar = [], e2;
      try {
        while ((n === void 0 || n-- > 0) && !(r2 = i2.next()).done) ar.push(r2.value);
      } catch (error) {
        e2 = { error };
      } finally {
        try {
          if (r2 && !r2.done && (m2 = i2["return"])) m2.call(i2);
        } finally {
          if (e2) throw e2.error;
        }
      }
      return ar;
    };
    var __spreadArray = exports2 && exports2.__spreadArray || function(to, from4) {
      for (var i2 = 0, il = from4.length, j = to.length; i2 < il; i2++, j++)
        to[j] = from4[i2];
      return to;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.zipWith = void 0;
    var zip_1 = require_zip2();
    function zipWith() {
      var otherInputs = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        otherInputs[_i] = arguments[_i];
      }
      return zip_1.zip.apply(void 0, __spreadArray([], __read(otherInputs)));
    }
    exports2.zipWith = zipWith;
  }
});

// ../../node_modules/rxjs/dist/cjs/index.js
var require_cjs3 = __commonJS({
  "../../node_modules/rxjs/dist/cjs/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      Object.defineProperty(o, k2, { enumerable: true, get: function() {
        return m2[k];
      } });
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __exportStar = exports2 && exports2.__exportStar || function(m2, exports3) {
      for (var p5 in m2) if (p5 !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p5)) __createBinding(exports3, m2, p5);
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.interval = exports2.iif = exports2.generate = exports2.fromEventPattern = exports2.fromEvent = exports2.from = exports2.forkJoin = exports2.empty = exports2.defer = exports2.connectable = exports2.concat = exports2.combineLatest = exports2.bindNodeCallback = exports2.bindCallback = exports2.UnsubscriptionError = exports2.TimeoutError = exports2.SequenceError = exports2.ObjectUnsubscribedError = exports2.NotFoundError = exports2.EmptyError = exports2.ArgumentOutOfRangeError = exports2.firstValueFrom = exports2.lastValueFrom = exports2.isObservable = exports2.identity = exports2.noop = exports2.pipe = exports2.NotificationKind = exports2.Notification = exports2.Subscriber = exports2.Subscription = exports2.Scheduler = exports2.VirtualAction = exports2.VirtualTimeScheduler = exports2.animationFrameScheduler = exports2.animationFrame = exports2.queueScheduler = exports2.queue = exports2.asyncScheduler = exports2.async = exports2.asapScheduler = exports2.asap = exports2.AsyncSubject = exports2.ReplaySubject = exports2.BehaviorSubject = exports2.Subject = exports2.animationFrames = exports2.observable = exports2.ConnectableObservable = exports2.Observable = void 0;
    exports2.filter = exports2.expand = exports2.exhaustMap = exports2.exhaustAll = exports2.exhaust = exports2.every = exports2.endWith = exports2.elementAt = exports2.distinctUntilKeyChanged = exports2.distinctUntilChanged = exports2.distinct = exports2.dematerialize = exports2.delayWhen = exports2.delay = exports2.defaultIfEmpty = exports2.debounceTime = exports2.debounce = exports2.count = exports2.connect = exports2.concatWith = exports2.concatMapTo = exports2.concatMap = exports2.concatAll = exports2.combineLatestWith = exports2.combineLatestAll = exports2.combineAll = exports2.catchError = exports2.bufferWhen = exports2.bufferToggle = exports2.bufferTime = exports2.bufferCount = exports2.buffer = exports2.auditTime = exports2.audit = exports2.config = exports2.NEVER = exports2.EMPTY = exports2.scheduled = exports2.zip = exports2.using = exports2.timer = exports2.throwError = exports2.range = exports2.race = exports2.partition = exports2.pairs = exports2.onErrorResumeNext = exports2.of = exports2.never = exports2.merge = void 0;
    exports2.switchMap = exports2.switchAll = exports2.subscribeOn = exports2.startWith = exports2.skipWhile = exports2.skipUntil = exports2.skipLast = exports2.skip = exports2.single = exports2.shareReplay = exports2.share = exports2.sequenceEqual = exports2.scan = exports2.sampleTime = exports2.sample = exports2.refCount = exports2.retryWhen = exports2.retry = exports2.repeatWhen = exports2.repeat = exports2.reduce = exports2.raceWith = exports2.publishReplay = exports2.publishLast = exports2.publishBehavior = exports2.publish = exports2.pluck = exports2.pairwise = exports2.onErrorResumeNextWith = exports2.observeOn = exports2.multicast = exports2.min = exports2.mergeWith = exports2.mergeScan = exports2.mergeMapTo = exports2.mergeMap = exports2.flatMap = exports2.mergeAll = exports2.max = exports2.materialize = exports2.mapTo = exports2.map = exports2.last = exports2.isEmpty = exports2.ignoreElements = exports2.groupBy = exports2.first = exports2.findIndex = exports2.find = exports2.finalize = void 0;
    exports2.zipWith = exports2.zipAll = exports2.withLatestFrom = exports2.windowWhen = exports2.windowToggle = exports2.windowTime = exports2.windowCount = exports2.window = exports2.toArray = exports2.timestamp = exports2.timeoutWith = exports2.timeout = exports2.timeInterval = exports2.throwIfEmpty = exports2.throttleTime = exports2.throttle = exports2.tap = exports2.takeWhile = exports2.takeUntil = exports2.takeLast = exports2.take = exports2.switchScan = exports2.switchMapTo = void 0;
    var Observable_1 = require_Observable();
    Object.defineProperty(exports2, "Observable", { enumerable: true, get: function() {
      return Observable_1.Observable;
    } });
    var ConnectableObservable_1 = require_ConnectableObservable();
    Object.defineProperty(exports2, "ConnectableObservable", { enumerable: true, get: function() {
      return ConnectableObservable_1.ConnectableObservable;
    } });
    var observable_1 = require_observable();
    Object.defineProperty(exports2, "observable", { enumerable: true, get: function() {
      return observable_1.observable;
    } });
    var animationFrames_1 = require_animationFrames();
    Object.defineProperty(exports2, "animationFrames", { enumerable: true, get: function() {
      return animationFrames_1.animationFrames;
    } });
    var Subject_1 = require_Subject();
    Object.defineProperty(exports2, "Subject", { enumerable: true, get: function() {
      return Subject_1.Subject;
    } });
    var BehaviorSubject_1 = require_BehaviorSubject();
    Object.defineProperty(exports2, "BehaviorSubject", { enumerable: true, get: function() {
      return BehaviorSubject_1.BehaviorSubject;
    } });
    var ReplaySubject_1 = require_ReplaySubject();
    Object.defineProperty(exports2, "ReplaySubject", { enumerable: true, get: function() {
      return ReplaySubject_1.ReplaySubject;
    } });
    var AsyncSubject_1 = require_AsyncSubject();
    Object.defineProperty(exports2, "AsyncSubject", { enumerable: true, get: function() {
      return AsyncSubject_1.AsyncSubject;
    } });
    var asap_1 = require_asap2();
    Object.defineProperty(exports2, "asap", { enumerable: true, get: function() {
      return asap_1.asap;
    } });
    Object.defineProperty(exports2, "asapScheduler", { enumerable: true, get: function() {
      return asap_1.asapScheduler;
    } });
    var async_1 = require_async2();
    Object.defineProperty(exports2, "async", { enumerable: true, get: function() {
      return async_1.async;
    } });
    Object.defineProperty(exports2, "asyncScheduler", { enumerable: true, get: function() {
      return async_1.asyncScheduler;
    } });
    var queue_1 = require_queue2();
    Object.defineProperty(exports2, "queue", { enumerable: true, get: function() {
      return queue_1.queue;
    } });
    Object.defineProperty(exports2, "queueScheduler", { enumerable: true, get: function() {
      return queue_1.queueScheduler;
    } });
    var animationFrame_1 = require_animationFrame();
    Object.defineProperty(exports2, "animationFrame", { enumerable: true, get: function() {
      return animationFrame_1.animationFrame;
    } });
    Object.defineProperty(exports2, "animationFrameScheduler", { enumerable: true, get: function() {
      return animationFrame_1.animationFrameScheduler;
    } });
    var VirtualTimeScheduler_1 = require_VirtualTimeScheduler();
    Object.defineProperty(exports2, "VirtualTimeScheduler", { enumerable: true, get: function() {
      return VirtualTimeScheduler_1.VirtualTimeScheduler;
    } });
    Object.defineProperty(exports2, "VirtualAction", { enumerable: true, get: function() {
      return VirtualTimeScheduler_1.VirtualAction;
    } });
    var Scheduler_1 = require_Scheduler();
    Object.defineProperty(exports2, "Scheduler", { enumerable: true, get: function() {
      return Scheduler_1.Scheduler;
    } });
    var Subscription_1 = require_Subscription();
    Object.defineProperty(exports2, "Subscription", { enumerable: true, get: function() {
      return Subscription_1.Subscription;
    } });
    var Subscriber_1 = require_Subscriber();
    Object.defineProperty(exports2, "Subscriber", { enumerable: true, get: function() {
      return Subscriber_1.Subscriber;
    } });
    var Notification_1 = require_Notification();
    Object.defineProperty(exports2, "Notification", { enumerable: true, get: function() {
      return Notification_1.Notification;
    } });
    Object.defineProperty(exports2, "NotificationKind", { enumerable: true, get: function() {
      return Notification_1.NotificationKind;
    } });
    var pipe_1 = require_pipe();
    Object.defineProperty(exports2, "pipe", { enumerable: true, get: function() {
      return pipe_1.pipe;
    } });
    var noop_1 = require_noop();
    Object.defineProperty(exports2, "noop", { enumerable: true, get: function() {
      return noop_1.noop;
    } });
    var identity_1 = require_identity();
    Object.defineProperty(exports2, "identity", { enumerable: true, get: function() {
      return identity_1.identity;
    } });
    var isObservable_1 = require_isObservable();
    Object.defineProperty(exports2, "isObservable", { enumerable: true, get: function() {
      return isObservable_1.isObservable;
    } });
    var lastValueFrom_1 = require_lastValueFrom();
    Object.defineProperty(exports2, "lastValueFrom", { enumerable: true, get: function() {
      return lastValueFrom_1.lastValueFrom;
    } });
    var firstValueFrom_1 = require_firstValueFrom();
    Object.defineProperty(exports2, "firstValueFrom", { enumerable: true, get: function() {
      return firstValueFrom_1.firstValueFrom;
    } });
    var ArgumentOutOfRangeError_1 = require_ArgumentOutOfRangeError();
    Object.defineProperty(exports2, "ArgumentOutOfRangeError", { enumerable: true, get: function() {
      return ArgumentOutOfRangeError_1.ArgumentOutOfRangeError;
    } });
    var EmptyError_1 = require_EmptyError();
    Object.defineProperty(exports2, "EmptyError", { enumerable: true, get: function() {
      return EmptyError_1.EmptyError;
    } });
    var NotFoundError_1 = require_NotFoundError();
    Object.defineProperty(exports2, "NotFoundError", { enumerable: true, get: function() {
      return NotFoundError_1.NotFoundError;
    } });
    var ObjectUnsubscribedError_1 = require_ObjectUnsubscribedError();
    Object.defineProperty(exports2, "ObjectUnsubscribedError", { enumerable: true, get: function() {
      return ObjectUnsubscribedError_1.ObjectUnsubscribedError;
    } });
    var SequenceError_1 = require_SequenceError();
    Object.defineProperty(exports2, "SequenceError", { enumerable: true, get: function() {
      return SequenceError_1.SequenceError;
    } });
    var timeout_1 = require_timeout();
    Object.defineProperty(exports2, "TimeoutError", { enumerable: true, get: function() {
      return timeout_1.TimeoutError;
    } });
    var UnsubscriptionError_1 = require_UnsubscriptionError();
    Object.defineProperty(exports2, "UnsubscriptionError", { enumerable: true, get: function() {
      return UnsubscriptionError_1.UnsubscriptionError;
    } });
    var bindCallback_1 = require_bindCallback();
    Object.defineProperty(exports2, "bindCallback", { enumerable: true, get: function() {
      return bindCallback_1.bindCallback;
    } });
    var bindNodeCallback_1 = require_bindNodeCallback();
    Object.defineProperty(exports2, "bindNodeCallback", { enumerable: true, get: function() {
      return bindNodeCallback_1.bindNodeCallback;
    } });
    var combineLatest_1 = require_combineLatest();
    Object.defineProperty(exports2, "combineLatest", { enumerable: true, get: function() {
      return combineLatest_1.combineLatest;
    } });
    var concat_1 = require_concat();
    Object.defineProperty(exports2, "concat", { enumerable: true, get: function() {
      return concat_1.concat;
    } });
    var connectable_1 = require_connectable();
    Object.defineProperty(exports2, "connectable", { enumerable: true, get: function() {
      return connectable_1.connectable;
    } });
    var defer_1 = require_defer();
    Object.defineProperty(exports2, "defer", { enumerable: true, get: function() {
      return defer_1.defer;
    } });
    var empty_1 = require_empty3();
    Object.defineProperty(exports2, "empty", { enumerable: true, get: function() {
      return empty_1.empty;
    } });
    var forkJoin_1 = require_forkJoin();
    Object.defineProperty(exports2, "forkJoin", { enumerable: true, get: function() {
      return forkJoin_1.forkJoin;
    } });
    var from_1 = require_from();
    Object.defineProperty(exports2, "from", { enumerable: true, get: function() {
      return from_1.from;
    } });
    var fromEvent_1 = require_fromEvent();
    Object.defineProperty(exports2, "fromEvent", { enumerable: true, get: function() {
      return fromEvent_1.fromEvent;
    } });
    var fromEventPattern_1 = require_fromEventPattern();
    Object.defineProperty(exports2, "fromEventPattern", { enumerable: true, get: function() {
      return fromEventPattern_1.fromEventPattern;
    } });
    var generate_1 = require_generate();
    Object.defineProperty(exports2, "generate", { enumerable: true, get: function() {
      return generate_1.generate;
    } });
    var iif_1 = require_iif();
    Object.defineProperty(exports2, "iif", { enumerable: true, get: function() {
      return iif_1.iif;
    } });
    var interval_1 = require_interval();
    Object.defineProperty(exports2, "interval", { enumerable: true, get: function() {
      return interval_1.interval;
    } });
    var merge_1 = require_merge();
    Object.defineProperty(exports2, "merge", { enumerable: true, get: function() {
      return merge_1.merge;
    } });
    var never_1 = require_never();
    Object.defineProperty(exports2, "never", { enumerable: true, get: function() {
      return never_1.never;
    } });
    var of_1 = require_of();
    Object.defineProperty(exports2, "of", { enumerable: true, get: function() {
      return of_1.of;
    } });
    var onErrorResumeNext_1 = require_onErrorResumeNext();
    Object.defineProperty(exports2, "onErrorResumeNext", { enumerable: true, get: function() {
      return onErrorResumeNext_1.onErrorResumeNext;
    } });
    var pairs_1 = require_pairs();
    Object.defineProperty(exports2, "pairs", { enumerable: true, get: function() {
      return pairs_1.pairs;
    } });
    var partition_1 = require_partition();
    Object.defineProperty(exports2, "partition", { enumerable: true, get: function() {
      return partition_1.partition;
    } });
    var race_1 = require_race();
    Object.defineProperty(exports2, "race", { enumerable: true, get: function() {
      return race_1.race;
    } });
    var range_1 = require_range2();
    Object.defineProperty(exports2, "range", { enumerable: true, get: function() {
      return range_1.range;
    } });
    var throwError_1 = require_throwError();
    Object.defineProperty(exports2, "throwError", { enumerable: true, get: function() {
      return throwError_1.throwError;
    } });
    var timer_1 = require_timer();
    Object.defineProperty(exports2, "timer", { enumerable: true, get: function() {
      return timer_1.timer;
    } });
    var using_1 = require_using();
    Object.defineProperty(exports2, "using", { enumerable: true, get: function() {
      return using_1.using;
    } });
    var zip_1 = require_zip();
    Object.defineProperty(exports2, "zip", { enumerable: true, get: function() {
      return zip_1.zip;
    } });
    var scheduled_1 = require_scheduled();
    Object.defineProperty(exports2, "scheduled", { enumerable: true, get: function() {
      return scheduled_1.scheduled;
    } });
    var empty_2 = require_empty3();
    Object.defineProperty(exports2, "EMPTY", { enumerable: true, get: function() {
      return empty_2.EMPTY;
    } });
    var never_2 = require_never();
    Object.defineProperty(exports2, "NEVER", { enumerable: true, get: function() {
      return never_2.NEVER;
    } });
    __exportStar(require_types3(), exports2);
    var config_1 = require_config4();
    Object.defineProperty(exports2, "config", { enumerable: true, get: function() {
      return config_1.config;
    } });
    var audit_1 = require_audit();
    Object.defineProperty(exports2, "audit", { enumerable: true, get: function() {
      return audit_1.audit;
    } });
    var auditTime_1 = require_auditTime();
    Object.defineProperty(exports2, "auditTime", { enumerable: true, get: function() {
      return auditTime_1.auditTime;
    } });
    var buffer_1 = require_buffer();
    Object.defineProperty(exports2, "buffer", { enumerable: true, get: function() {
      return buffer_1.buffer;
    } });
    var bufferCount_1 = require_bufferCount();
    Object.defineProperty(exports2, "bufferCount", { enumerable: true, get: function() {
      return bufferCount_1.bufferCount;
    } });
    var bufferTime_1 = require_bufferTime();
    Object.defineProperty(exports2, "bufferTime", { enumerable: true, get: function() {
      return bufferTime_1.bufferTime;
    } });
    var bufferToggle_1 = require_bufferToggle();
    Object.defineProperty(exports2, "bufferToggle", { enumerable: true, get: function() {
      return bufferToggle_1.bufferToggle;
    } });
    var bufferWhen_1 = require_bufferWhen();
    Object.defineProperty(exports2, "bufferWhen", { enumerable: true, get: function() {
      return bufferWhen_1.bufferWhen;
    } });
    var catchError_1 = require_catchError();
    Object.defineProperty(exports2, "catchError", { enumerable: true, get: function() {
      return catchError_1.catchError;
    } });
    var combineAll_1 = require_combineAll();
    Object.defineProperty(exports2, "combineAll", { enumerable: true, get: function() {
      return combineAll_1.combineAll;
    } });
    var combineLatestAll_1 = require_combineLatestAll();
    Object.defineProperty(exports2, "combineLatestAll", { enumerable: true, get: function() {
      return combineLatestAll_1.combineLatestAll;
    } });
    var combineLatestWith_1 = require_combineLatestWith();
    Object.defineProperty(exports2, "combineLatestWith", { enumerable: true, get: function() {
      return combineLatestWith_1.combineLatestWith;
    } });
    var concatAll_1 = require_concatAll();
    Object.defineProperty(exports2, "concatAll", { enumerable: true, get: function() {
      return concatAll_1.concatAll;
    } });
    var concatMap_1 = require_concatMap();
    Object.defineProperty(exports2, "concatMap", { enumerable: true, get: function() {
      return concatMap_1.concatMap;
    } });
    var concatMapTo_1 = require_concatMapTo();
    Object.defineProperty(exports2, "concatMapTo", { enumerable: true, get: function() {
      return concatMapTo_1.concatMapTo;
    } });
    var concatWith_1 = require_concatWith();
    Object.defineProperty(exports2, "concatWith", { enumerable: true, get: function() {
      return concatWith_1.concatWith;
    } });
    var connect_1 = require_connect();
    Object.defineProperty(exports2, "connect", { enumerable: true, get: function() {
      return connect_1.connect;
    } });
    var count_1 = require_count();
    Object.defineProperty(exports2, "count", { enumerable: true, get: function() {
      return count_1.count;
    } });
    var debounce_1 = require_debounce();
    Object.defineProperty(exports2, "debounce", { enumerable: true, get: function() {
      return debounce_1.debounce;
    } });
    var debounceTime_1 = require_debounceTime();
    Object.defineProperty(exports2, "debounceTime", { enumerable: true, get: function() {
      return debounceTime_1.debounceTime;
    } });
    var defaultIfEmpty_1 = require_defaultIfEmpty();
    Object.defineProperty(exports2, "defaultIfEmpty", { enumerable: true, get: function() {
      return defaultIfEmpty_1.defaultIfEmpty;
    } });
    var delay_1 = require_delay();
    Object.defineProperty(exports2, "delay", { enumerable: true, get: function() {
      return delay_1.delay;
    } });
    var delayWhen_1 = require_delayWhen();
    Object.defineProperty(exports2, "delayWhen", { enumerable: true, get: function() {
      return delayWhen_1.delayWhen;
    } });
    var dematerialize_1 = require_dematerialize();
    Object.defineProperty(exports2, "dematerialize", { enumerable: true, get: function() {
      return dematerialize_1.dematerialize;
    } });
    var distinct_1 = require_distinct();
    Object.defineProperty(exports2, "distinct", { enumerable: true, get: function() {
      return distinct_1.distinct;
    } });
    var distinctUntilChanged_1 = require_distinctUntilChanged();
    Object.defineProperty(exports2, "distinctUntilChanged", { enumerable: true, get: function() {
      return distinctUntilChanged_1.distinctUntilChanged;
    } });
    var distinctUntilKeyChanged_1 = require_distinctUntilKeyChanged();
    Object.defineProperty(exports2, "distinctUntilKeyChanged", { enumerable: true, get: function() {
      return distinctUntilKeyChanged_1.distinctUntilKeyChanged;
    } });
    var elementAt_1 = require_elementAt();
    Object.defineProperty(exports2, "elementAt", { enumerable: true, get: function() {
      return elementAt_1.elementAt;
    } });
    var endWith_1 = require_endWith();
    Object.defineProperty(exports2, "endWith", { enumerable: true, get: function() {
      return endWith_1.endWith;
    } });
    var every_1 = require_every();
    Object.defineProperty(exports2, "every", { enumerable: true, get: function() {
      return every_1.every;
    } });
    var exhaust_1 = require_exhaust();
    Object.defineProperty(exports2, "exhaust", { enumerable: true, get: function() {
      return exhaust_1.exhaust;
    } });
    var exhaustAll_1 = require_exhaustAll();
    Object.defineProperty(exports2, "exhaustAll", { enumerable: true, get: function() {
      return exhaustAll_1.exhaustAll;
    } });
    var exhaustMap_1 = require_exhaustMap();
    Object.defineProperty(exports2, "exhaustMap", { enumerable: true, get: function() {
      return exhaustMap_1.exhaustMap;
    } });
    var expand_1 = require_expand2();
    Object.defineProperty(exports2, "expand", { enumerable: true, get: function() {
      return expand_1.expand;
    } });
    var filter_1 = require_filter();
    Object.defineProperty(exports2, "filter", { enumerable: true, get: function() {
      return filter_1.filter;
    } });
    var finalize_1 = require_finalize();
    Object.defineProperty(exports2, "finalize", { enumerable: true, get: function() {
      return finalize_1.finalize;
    } });
    var find_1 = require_find();
    Object.defineProperty(exports2, "find", { enumerable: true, get: function() {
      return find_1.find;
    } });
    var findIndex_1 = require_findIndex();
    Object.defineProperty(exports2, "findIndex", { enumerable: true, get: function() {
      return findIndex_1.findIndex;
    } });
    var first_1 = require_first();
    Object.defineProperty(exports2, "first", { enumerable: true, get: function() {
      return first_1.first;
    } });
    var groupBy_1 = require_groupBy();
    Object.defineProperty(exports2, "groupBy", { enumerable: true, get: function() {
      return groupBy_1.groupBy;
    } });
    var ignoreElements_1 = require_ignoreElements();
    Object.defineProperty(exports2, "ignoreElements", { enumerable: true, get: function() {
      return ignoreElements_1.ignoreElements;
    } });
    var isEmpty_1 = require_isEmpty();
    Object.defineProperty(exports2, "isEmpty", { enumerable: true, get: function() {
      return isEmpty_1.isEmpty;
    } });
    var last_1 = require_last();
    Object.defineProperty(exports2, "last", { enumerable: true, get: function() {
      return last_1.last;
    } });
    var map_1 = require_map();
    Object.defineProperty(exports2, "map", { enumerable: true, get: function() {
      return map_1.map;
    } });
    var mapTo_1 = require_mapTo();
    Object.defineProperty(exports2, "mapTo", { enumerable: true, get: function() {
      return mapTo_1.mapTo;
    } });
    var materialize_1 = require_materialize();
    Object.defineProperty(exports2, "materialize", { enumerable: true, get: function() {
      return materialize_1.materialize;
    } });
    var max_1 = require_max();
    Object.defineProperty(exports2, "max", { enumerable: true, get: function() {
      return max_1.max;
    } });
    var mergeAll_1 = require_mergeAll();
    Object.defineProperty(exports2, "mergeAll", { enumerable: true, get: function() {
      return mergeAll_1.mergeAll;
    } });
    var flatMap_1 = require_flatMap();
    Object.defineProperty(exports2, "flatMap", { enumerable: true, get: function() {
      return flatMap_1.flatMap;
    } });
    var mergeMap_1 = require_mergeMap();
    Object.defineProperty(exports2, "mergeMap", { enumerable: true, get: function() {
      return mergeMap_1.mergeMap;
    } });
    var mergeMapTo_1 = require_mergeMapTo();
    Object.defineProperty(exports2, "mergeMapTo", { enumerable: true, get: function() {
      return mergeMapTo_1.mergeMapTo;
    } });
    var mergeScan_1 = require_mergeScan();
    Object.defineProperty(exports2, "mergeScan", { enumerable: true, get: function() {
      return mergeScan_1.mergeScan;
    } });
    var mergeWith_1 = require_mergeWith();
    Object.defineProperty(exports2, "mergeWith", { enumerable: true, get: function() {
      return mergeWith_1.mergeWith;
    } });
    var min_1 = require_min();
    Object.defineProperty(exports2, "min", { enumerable: true, get: function() {
      return min_1.min;
    } });
    var multicast_1 = require_multicast();
    Object.defineProperty(exports2, "multicast", { enumerable: true, get: function() {
      return multicast_1.multicast;
    } });
    var observeOn_1 = require_observeOn();
    Object.defineProperty(exports2, "observeOn", { enumerable: true, get: function() {
      return observeOn_1.observeOn;
    } });
    var onErrorResumeNextWith_1 = require_onErrorResumeNextWith();
    Object.defineProperty(exports2, "onErrorResumeNextWith", { enumerable: true, get: function() {
      return onErrorResumeNextWith_1.onErrorResumeNextWith;
    } });
    var pairwise_1 = require_pairwise();
    Object.defineProperty(exports2, "pairwise", { enumerable: true, get: function() {
      return pairwise_1.pairwise;
    } });
    var pluck_1 = require_pluck();
    Object.defineProperty(exports2, "pluck", { enumerable: true, get: function() {
      return pluck_1.pluck;
    } });
    var publish_1 = require_publish();
    Object.defineProperty(exports2, "publish", { enumerable: true, get: function() {
      return publish_1.publish;
    } });
    var publishBehavior_1 = require_publishBehavior();
    Object.defineProperty(exports2, "publishBehavior", { enumerable: true, get: function() {
      return publishBehavior_1.publishBehavior;
    } });
    var publishLast_1 = require_publishLast();
    Object.defineProperty(exports2, "publishLast", { enumerable: true, get: function() {
      return publishLast_1.publishLast;
    } });
    var publishReplay_1 = require_publishReplay();
    Object.defineProperty(exports2, "publishReplay", { enumerable: true, get: function() {
      return publishReplay_1.publishReplay;
    } });
    var raceWith_1 = require_raceWith();
    Object.defineProperty(exports2, "raceWith", { enumerable: true, get: function() {
      return raceWith_1.raceWith;
    } });
    var reduce_1 = require_reduce();
    Object.defineProperty(exports2, "reduce", { enumerable: true, get: function() {
      return reduce_1.reduce;
    } });
    var repeat_12 = require_repeat();
    Object.defineProperty(exports2, "repeat", { enumerable: true, get: function() {
      return repeat_12.repeat;
    } });
    var repeatWhen_1 = require_repeatWhen();
    Object.defineProperty(exports2, "repeatWhen", { enumerable: true, get: function() {
      return repeatWhen_1.repeatWhen;
    } });
    var retry_1 = require_retry();
    Object.defineProperty(exports2, "retry", { enumerable: true, get: function() {
      return retry_1.retry;
    } });
    var retryWhen_1 = require_retryWhen();
    Object.defineProperty(exports2, "retryWhen", { enumerable: true, get: function() {
      return retryWhen_1.retryWhen;
    } });
    var refCount_1 = require_refCount();
    Object.defineProperty(exports2, "refCount", { enumerable: true, get: function() {
      return refCount_1.refCount;
    } });
    var sample_1 = require_sample();
    Object.defineProperty(exports2, "sample", { enumerable: true, get: function() {
      return sample_1.sample;
    } });
    var sampleTime_1 = require_sampleTime();
    Object.defineProperty(exports2, "sampleTime", { enumerable: true, get: function() {
      return sampleTime_1.sampleTime;
    } });
    var scan_1 = require_scan3();
    Object.defineProperty(exports2, "scan", { enumerable: true, get: function() {
      return scan_1.scan;
    } });
    var sequenceEqual_1 = require_sequenceEqual();
    Object.defineProperty(exports2, "sequenceEqual", { enumerable: true, get: function() {
      return sequenceEqual_1.sequenceEqual;
    } });
    var share_1 = require_share();
    Object.defineProperty(exports2, "share", { enumerable: true, get: function() {
      return share_1.share;
    } });
    var shareReplay_1 = require_shareReplay();
    Object.defineProperty(exports2, "shareReplay", { enumerable: true, get: function() {
      return shareReplay_1.shareReplay;
    } });
    var single_1 = require_single();
    Object.defineProperty(exports2, "single", { enumerable: true, get: function() {
      return single_1.single;
    } });
    var skip_1 = require_skip();
    Object.defineProperty(exports2, "skip", { enumerable: true, get: function() {
      return skip_1.skip;
    } });
    var skipLast_1 = require_skipLast();
    Object.defineProperty(exports2, "skipLast", { enumerable: true, get: function() {
      return skipLast_1.skipLast;
    } });
    var skipUntil_1 = require_skipUntil();
    Object.defineProperty(exports2, "skipUntil", { enumerable: true, get: function() {
      return skipUntil_1.skipUntil;
    } });
    var skipWhile_1 = require_skipWhile();
    Object.defineProperty(exports2, "skipWhile", { enumerable: true, get: function() {
      return skipWhile_1.skipWhile;
    } });
    var startWith_1 = require_startWith();
    Object.defineProperty(exports2, "startWith", { enumerable: true, get: function() {
      return startWith_1.startWith;
    } });
    var subscribeOn_1 = require_subscribeOn();
    Object.defineProperty(exports2, "subscribeOn", { enumerable: true, get: function() {
      return subscribeOn_1.subscribeOn;
    } });
    var switchAll_1 = require_switchAll();
    Object.defineProperty(exports2, "switchAll", { enumerable: true, get: function() {
      return switchAll_1.switchAll;
    } });
    var switchMap_1 = require_switchMap();
    Object.defineProperty(exports2, "switchMap", { enumerable: true, get: function() {
      return switchMap_1.switchMap;
    } });
    var switchMapTo_1 = require_switchMapTo();
    Object.defineProperty(exports2, "switchMapTo", { enumerable: true, get: function() {
      return switchMapTo_1.switchMapTo;
    } });
    var switchScan_1 = require_switchScan();
    Object.defineProperty(exports2, "switchScan", { enumerable: true, get: function() {
      return switchScan_1.switchScan;
    } });
    var take_1 = require_take();
    Object.defineProperty(exports2, "take", { enumerable: true, get: function() {
      return take_1.take;
    } });
    var takeLast_1 = require_takeLast();
    Object.defineProperty(exports2, "takeLast", { enumerable: true, get: function() {
      return takeLast_1.takeLast;
    } });
    var takeUntil_1 = require_takeUntil();
    Object.defineProperty(exports2, "takeUntil", { enumerable: true, get: function() {
      return takeUntil_1.takeUntil;
    } });
    var takeWhile_1 = require_takeWhile();
    Object.defineProperty(exports2, "takeWhile", { enumerable: true, get: function() {
      return takeWhile_1.takeWhile;
    } });
    var tap_1 = require_tap();
    Object.defineProperty(exports2, "tap", { enumerable: true, get: function() {
      return tap_1.tap;
    } });
    var throttle_1 = require_throttle();
    Object.defineProperty(exports2, "throttle", { enumerable: true, get: function() {
      return throttle_1.throttle;
    } });
    var throttleTime_1 = require_throttleTime();
    Object.defineProperty(exports2, "throttleTime", { enumerable: true, get: function() {
      return throttleTime_1.throttleTime;
    } });
    var throwIfEmpty_1 = require_throwIfEmpty();
    Object.defineProperty(exports2, "throwIfEmpty", { enumerable: true, get: function() {
      return throwIfEmpty_1.throwIfEmpty;
    } });
    var timeInterval_1 = require_timeInterval();
    Object.defineProperty(exports2, "timeInterval", { enumerable: true, get: function() {
      return timeInterval_1.timeInterval;
    } });
    var timeout_2 = require_timeout();
    Object.defineProperty(exports2, "timeout", { enumerable: true, get: function() {
      return timeout_2.timeout;
    } });
    var timeoutWith_1 = require_timeoutWith();
    Object.defineProperty(exports2, "timeoutWith", { enumerable: true, get: function() {
      return timeoutWith_1.timeoutWith;
    } });
    var timestamp_1 = require_timestamp();
    Object.defineProperty(exports2, "timestamp", { enumerable: true, get: function() {
      return timestamp_1.timestamp;
    } });
    var toArray_12 = require_toArray();
    Object.defineProperty(exports2, "toArray", { enumerable: true, get: function() {
      return toArray_12.toArray;
    } });
    var window_1 = require_window();
    Object.defineProperty(exports2, "window", { enumerable: true, get: function() {
      return window_1.window;
    } });
    var windowCount_1 = require_windowCount();
    Object.defineProperty(exports2, "windowCount", { enumerable: true, get: function() {
      return windowCount_1.windowCount;
    } });
    var windowTime_1 = require_windowTime();
    Object.defineProperty(exports2, "windowTime", { enumerable: true, get: function() {
      return windowTime_1.windowTime;
    } });
    var windowToggle_1 = require_windowToggle();
    Object.defineProperty(exports2, "windowToggle", { enumerable: true, get: function() {
      return windowToggle_1.windowToggle;
    } });
    var windowWhen_1 = require_windowWhen();
    Object.defineProperty(exports2, "windowWhen", { enumerable: true, get: function() {
      return windowWhen_1.windowWhen;
    } });
    var withLatestFrom_1 = require_withLatestFrom();
    Object.defineProperty(exports2, "withLatestFrom", { enumerable: true, get: function() {
      return withLatestFrom_1.withLatestFrom;
    } });
    var zipAll_1 = require_zipAll();
    Object.defineProperty(exports2, "zipAll", { enumerable: true, get: function() {
      return zipAll_1.zipAll;
    } });
    var zipWith_1 = require_zipWith();
    Object.defineProperty(exports2, "zipWith", { enumerable: true, get: function() {
      return zipWith_1.zipWith;
    } });
  }
});

// ../../node_modules/cli-width/index.js
var require_cli_width = __commonJS({
  "../../node_modules/cli-width/index.js"(exports2, module2) {
    "use strict";
    module2.exports = cliWidth2;
    function normalizeOpts(options) {
      const defaultOpts = {
        defaultWidth: 0,
        output: process.stdout,
        tty: require("tty")
      };
      if (!options) {
        return defaultOpts;
      }
      Object.keys(defaultOpts).forEach(function(key2) {
        if (!options[key2]) {
          options[key2] = defaultOpts[key2];
        }
      });
      return options;
    }
    function cliWidth2(options) {
      const opts = normalizeOpts(options);
      if (opts.output.getWindowSize) {
        return opts.output.getWindowSize()[0] || opts.defaultWidth;
      }
      if (opts.tty.getWindowSize) {
        return opts.tty.getWindowSize()[1] || opts.defaultWidth;
      }
      if (opts.output.columns) {
        return opts.output.columns;
      }
      if (process.env.CLI_WIDTH) {
        const width = parseInt(process.env.CLI_WIDTH, 10);
        if (!isNaN(width) && width !== 0) {
          return width;
        }
      }
      return opts.defaultWidth;
    }
  }
});

// ../../node_modules/inquirer/node_modules/ansi-regex/index.js
var require_ansi_regex = __commonJS({
  "../../node_modules/inquirer/node_modules/ansi-regex/index.js"(exports2, module2) {
    "use strict";
    module2.exports = ({ onlyFirst = false } = {}) => {
      const pattern = [
        "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
        "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"
      ].join("|");
      return new RegExp(pattern, onlyFirst ? void 0 : "g");
    };
  }
});

// ../../node_modules/inquirer/node_modules/strip-ansi/index.js
var require_strip_ansi = __commonJS({
  "../../node_modules/inquirer/node_modules/strip-ansi/index.js"(exports2, module2) {
    "use strict";
    var ansiRegex2 = require_ansi_regex();
    module2.exports = (string2) => typeof string2 === "string" ? string2.replace(ansiRegex2(), "") : string2;
  }
});

// ../../node_modules/is-fullwidth-code-point/index.js
var require_is_fullwidth_code_point = __commonJS({
  "../../node_modules/is-fullwidth-code-point/index.js"(exports2, module2) {
    "use strict";
    var isFullwidthCodePoint = (codePoint) => {
      if (Number.isNaN(codePoint)) {
        return false;
      }
      if (codePoint >= 4352 && (codePoint <= 4447 || // Hangul Jamo
      codePoint === 9001 || // LEFT-POINTING ANGLE BRACKET
      codePoint === 9002 || // RIGHT-POINTING ANGLE BRACKET
      // CJK Radicals Supplement .. Enclosed CJK Letters and Months
      11904 <= codePoint && codePoint <= 12871 && codePoint !== 12351 || // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
      12880 <= codePoint && codePoint <= 19903 || // CJK Unified Ideographs .. Yi Radicals
      19968 <= codePoint && codePoint <= 42182 || // Hangul Jamo Extended-A
      43360 <= codePoint && codePoint <= 43388 || // Hangul Syllables
      44032 <= codePoint && codePoint <= 55203 || // CJK Compatibility Ideographs
      63744 <= codePoint && codePoint <= 64255 || // Vertical Forms
      65040 <= codePoint && codePoint <= 65049 || // CJK Compatibility Forms .. Small Form Variants
      65072 <= codePoint && codePoint <= 65131 || // Halfwidth and Fullwidth Forms
      65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510 || // Kana Supplement
      110592 <= codePoint && codePoint <= 110593 || // Enclosed Ideographic Supplement
      127488 <= codePoint && codePoint <= 127569 || // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
      131072 <= codePoint && codePoint <= 262141)) {
        return true;
      }
      return false;
    };
    module2.exports = isFullwidthCodePoint;
    module2.exports.default = isFullwidthCodePoint;
  }
});

// ../../node_modules/inquirer/node_modules/emoji-regex/index.js
var require_emoji_regex = __commonJS({
  "../../node_modules/inquirer/node_modules/emoji-regex/index.js"(exports2, module2) {
    "use strict";
    module2.exports = function() {
      return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
    };
  }
});

// ../../node_modules/inquirer/node_modules/string-width/index.js
var require_string_width = __commonJS({
  "../../node_modules/inquirer/node_modules/string-width/index.js"(exports2, module2) {
    "use strict";
    var stripAnsi3 = require_strip_ansi();
    var isFullwidthCodePoint = require_is_fullwidth_code_point();
    var emojiRegex3 = require_emoji_regex();
    var stringWidth3 = (string2) => {
      if (typeof string2 !== "string" || string2.length === 0) {
        return 0;
      }
      string2 = stripAnsi3(string2);
      if (string2.length === 0) {
        return 0;
      }
      string2 = string2.replace(emojiRegex3(), "  ");
      let width = 0;
      for (let i2 = 0; i2 < string2.length; i2++) {
        const code7 = string2.codePointAt(i2);
        if (code7 <= 31 || code7 >= 127 && code7 <= 159) {
          continue;
        }
        if (code7 >= 768 && code7 <= 879) {
          continue;
        }
        if (code7 > 65535) {
          i2++;
        }
        width += isFullwidthCodePoint(code7) ? 2 : 1;
      }
      return width;
    };
    module2.exports = stringWidth3;
    module2.exports.default = stringWidth3;
  }
});

// ../../node_modules/inquirer/node_modules/color-name/index.js
var require_color_name3 = __commonJS({
  "../../node_modules/inquirer/node_modules/color-name/index.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      "aliceblue": [240, 248, 255],
      "antiquewhite": [250, 235, 215],
      "aqua": [0, 255, 255],
      "aquamarine": [127, 255, 212],
      "azure": [240, 255, 255],
      "beige": [245, 245, 220],
      "bisque": [255, 228, 196],
      "black": [0, 0, 0],
      "blanchedalmond": [255, 235, 205],
      "blue": [0, 0, 255],
      "blueviolet": [138, 43, 226],
      "brown": [165, 42, 42],
      "burlywood": [222, 184, 135],
      "cadetblue": [95, 158, 160],
      "chartreuse": [127, 255, 0],
      "chocolate": [210, 105, 30],
      "coral": [255, 127, 80],
      "cornflowerblue": [100, 149, 237],
      "cornsilk": [255, 248, 220],
      "crimson": [220, 20, 60],
      "cyan": [0, 255, 255],
      "darkblue": [0, 0, 139],
      "darkcyan": [0, 139, 139],
      "darkgoldenrod": [184, 134, 11],
      "darkgray": [169, 169, 169],
      "darkgreen": [0, 100, 0],
      "darkgrey": [169, 169, 169],
      "darkkhaki": [189, 183, 107],
      "darkmagenta": [139, 0, 139],
      "darkolivegreen": [85, 107, 47],
      "darkorange": [255, 140, 0],
      "darkorchid": [153, 50, 204],
      "darkred": [139, 0, 0],
      "darksalmon": [233, 150, 122],
      "darkseagreen": [143, 188, 143],
      "darkslateblue": [72, 61, 139],
      "darkslategray": [47, 79, 79],
      "darkslategrey": [47, 79, 79],
      "darkturquoise": [0, 206, 209],
      "darkviolet": [148, 0, 211],
      "deeppink": [255, 20, 147],
      "deepskyblue": [0, 191, 255],
      "dimgray": [105, 105, 105],
      "dimgrey": [105, 105, 105],
      "dodgerblue": [30, 144, 255],
      "firebrick": [178, 34, 34],
      "floralwhite": [255, 250, 240],
      "forestgreen": [34, 139, 34],
      "fuchsia": [255, 0, 255],
      "gainsboro": [220, 220, 220],
      "ghostwhite": [248, 248, 255],
      "gold": [255, 215, 0],
      "goldenrod": [218, 165, 32],
      "gray": [128, 128, 128],
      "green": [0, 128, 0],
      "greenyellow": [173, 255, 47],
      "grey": [128, 128, 128],
      "honeydew": [240, 255, 240],
      "hotpink": [255, 105, 180],
      "indianred": [205, 92, 92],
      "indigo": [75, 0, 130],
      "ivory": [255, 255, 240],
      "khaki": [240, 230, 140],
      "lavender": [230, 230, 250],
      "lavenderblush": [255, 240, 245],
      "lawngreen": [124, 252, 0],
      "lemonchiffon": [255, 250, 205],
      "lightblue": [173, 216, 230],
      "lightcoral": [240, 128, 128],
      "lightcyan": [224, 255, 255],
      "lightgoldenrodyellow": [250, 250, 210],
      "lightgray": [211, 211, 211],
      "lightgreen": [144, 238, 144],
      "lightgrey": [211, 211, 211],
      "lightpink": [255, 182, 193],
      "lightsalmon": [255, 160, 122],
      "lightseagreen": [32, 178, 170],
      "lightskyblue": [135, 206, 250],
      "lightslategray": [119, 136, 153],
      "lightslategrey": [119, 136, 153],
      "lightsteelblue": [176, 196, 222],
      "lightyellow": [255, 255, 224],
      "lime": [0, 255, 0],
      "limegreen": [50, 205, 50],
      "linen": [250, 240, 230],
      "magenta": [255, 0, 255],
      "maroon": [128, 0, 0],
      "mediumaquamarine": [102, 205, 170],
      "mediumblue": [0, 0, 205],
      "mediumorchid": [186, 85, 211],
      "mediumpurple": [147, 112, 219],
      "mediumseagreen": [60, 179, 113],
      "mediumslateblue": [123, 104, 238],
      "mediumspringgreen": [0, 250, 154],
      "mediumturquoise": [72, 209, 204],
      "mediumvioletred": [199, 21, 133],
      "midnightblue": [25, 25, 112],
      "mintcream": [245, 255, 250],
      "mistyrose": [255, 228, 225],
      "moccasin": [255, 228, 181],
      "navajowhite": [255, 222, 173],
      "navy": [0, 0, 128],
      "oldlace": [253, 245, 230],
      "olive": [128, 128, 0],
      "olivedrab": [107, 142, 35],
      "orange": [255, 165, 0],
      "orangered": [255, 69, 0],
      "orchid": [218, 112, 214],
      "palegoldenrod": [238, 232, 170],
      "palegreen": [152, 251, 152],
      "paleturquoise": [175, 238, 238],
      "palevioletred": [219, 112, 147],
      "papayawhip": [255, 239, 213],
      "peachpuff": [255, 218, 185],
      "peru": [205, 133, 63],
      "pink": [255, 192, 203],
      "plum": [221, 160, 221],
      "powderblue": [176, 224, 230],
      "purple": [128, 0, 128],
      "rebeccapurple": [102, 51, 153],
      "red": [255, 0, 0],
      "rosybrown": [188, 143, 143],
      "royalblue": [65, 105, 225],
      "saddlebrown": [139, 69, 19],
      "salmon": [250, 128, 114],
      "sandybrown": [244, 164, 96],
      "seagreen": [46, 139, 87],
      "seashell": [255, 245, 238],
      "sienna": [160, 82, 45],
      "silver": [192, 192, 192],
      "skyblue": [135, 206, 235],
      "slateblue": [106, 90, 205],
      "slategray": [112, 128, 144],
      "slategrey": [112, 128, 144],
      "snow": [255, 250, 250],
      "springgreen": [0, 255, 127],
      "steelblue": [70, 130, 180],
      "tan": [210, 180, 140],
      "teal": [0, 128, 128],
      "thistle": [216, 191, 216],
      "tomato": [255, 99, 71],
      "turquoise": [64, 224, 208],
      "violet": [238, 130, 238],
      "wheat": [245, 222, 179],
      "white": [255, 255, 255],
      "whitesmoke": [245, 245, 245],
      "yellow": [255, 255, 0],
      "yellowgreen": [154, 205, 50]
    };
  }
});

// ../../node_modules/inquirer/node_modules/color-convert/conversions.js
var require_conversions2 = __commonJS({
  "../../node_modules/inquirer/node_modules/color-convert/conversions.js"(exports2, module2) {
    var cssKeywords = require_color_name3();
    var reverseKeywords = {};
    for (const key2 of Object.keys(cssKeywords)) {
      reverseKeywords[cssKeywords[key2]] = key2;
    }
    var convert6 = {
      rgb: { channels: 3, labels: "rgb" },
      hsl: { channels: 3, labels: "hsl" },
      hsv: { channels: 3, labels: "hsv" },
      hwb: { channels: 3, labels: "hwb" },
      cmyk: { channels: 4, labels: "cmyk" },
      xyz: { channels: 3, labels: "xyz" },
      lab: { channels: 3, labels: "lab" },
      lch: { channels: 3, labels: "lch" },
      hex: { channels: 1, labels: ["hex"] },
      keyword: { channels: 1, labels: ["keyword"] },
      ansi16: { channels: 1, labels: ["ansi16"] },
      ansi256: { channels: 1, labels: ["ansi256"] },
      hcg: { channels: 3, labels: ["h", "c", "g"] },
      apple: { channels: 3, labels: ["r16", "g16", "b16"] },
      gray: { channels: 1, labels: ["gray"] }
    };
    module2.exports = convert6;
    for (const model of Object.keys(convert6)) {
      if (!("channels" in convert6[model])) {
        throw new Error("missing channels property: " + model);
      }
      if (!("labels" in convert6[model])) {
        throw new Error("missing channel labels property: " + model);
      }
      if (convert6[model].labels.length !== convert6[model].channels) {
        throw new Error("channel and label counts mismatch: " + model);
      }
      const { channels, labels } = convert6[model];
      delete convert6[model].channels;
      delete convert6[model].labels;
      Object.defineProperty(convert6[model], "channels", { value: channels });
      Object.defineProperty(convert6[model], "labels", { value: labels });
    }
    convert6.rgb.hsl = function(rgb) {
      const r2 = rgb[0] / 255;
      const g = rgb[1] / 255;
      const b = rgb[2] / 255;
      const min = Math.min(r2, g, b);
      const max = Math.max(r2, g, b);
      const delta = max - min;
      let h4;
      let s5;
      if (max === min) {
        h4 = 0;
      } else if (r2 === max) {
        h4 = (g - b) / delta;
      } else if (g === max) {
        h4 = 2 + (b - r2) / delta;
      } else if (b === max) {
        h4 = 4 + (r2 - g) / delta;
      }
      h4 = Math.min(h4 * 60, 360);
      if (h4 < 0) {
        h4 += 360;
      }
      const l = (min + max) / 2;
      if (max === min) {
        s5 = 0;
      } else if (l <= 0.5) {
        s5 = delta / (max + min);
      } else {
        s5 = delta / (2 - max - min);
      }
      return [h4, s5 * 100, l * 100];
    };
    convert6.rgb.hsv = function(rgb) {
      let rdif;
      let gdif;
      let bdif;
      let h4;
      let s5;
      const r2 = rgb[0] / 255;
      const g = rgb[1] / 255;
      const b = rgb[2] / 255;
      const v = Math.max(r2, g, b);
      const diff = v - Math.min(r2, g, b);
      const diffc = function(c) {
        return (v - c) / 6 / diff + 1 / 2;
      };
      if (diff === 0) {
        h4 = 0;
        s5 = 0;
      } else {
        s5 = diff / v;
        rdif = diffc(r2);
        gdif = diffc(g);
        bdif = diffc(b);
        if (r2 === v) {
          h4 = bdif - gdif;
        } else if (g === v) {
          h4 = 1 / 3 + rdif - bdif;
        } else if (b === v) {
          h4 = 2 / 3 + gdif - rdif;
        }
        if (h4 < 0) {
          h4 += 1;
        } else if (h4 > 1) {
          h4 -= 1;
        }
      }
      return [
        h4 * 360,
        s5 * 100,
        v * 100
      ];
    };
    convert6.rgb.hwb = function(rgb) {
      const r2 = rgb[0];
      const g = rgb[1];
      let b = rgb[2];
      const h4 = convert6.rgb.hsl(rgb)[0];
      const w = 1 / 255 * Math.min(r2, Math.min(g, b));
      b = 1 - 1 / 255 * Math.max(r2, Math.max(g, b));
      return [h4, w * 100, b * 100];
    };
    convert6.rgb.cmyk = function(rgb) {
      const r2 = rgb[0] / 255;
      const g = rgb[1] / 255;
      const b = rgb[2] / 255;
      const k = Math.min(1 - r2, 1 - g, 1 - b);
      const c = (1 - r2 - k) / (1 - k) || 0;
      const m2 = (1 - g - k) / (1 - k) || 0;
      const y = (1 - b - k) / (1 - k) || 0;
      return [c * 100, m2 * 100, y * 100, k * 100];
    };
    function comparativeDistance(x2, y) {
      return (x2[0] - y[0]) ** 2 + (x2[1] - y[1]) ** 2 + (x2[2] - y[2]) ** 2;
    }
    convert6.rgb.keyword = function(rgb) {
      const reversed = reverseKeywords[rgb];
      if (reversed) {
        return reversed;
      }
      let currentClosestDistance = Infinity;
      let currentClosestKeyword;
      for (const keyword of Object.keys(cssKeywords)) {
        const value = cssKeywords[keyword];
        const distance = comparativeDistance(rgb, value);
        if (distance < currentClosestDistance) {
          currentClosestDistance = distance;
          currentClosestKeyword = keyword;
        }
      }
      return currentClosestKeyword;
    };
    convert6.keyword.rgb = function(keyword) {
      return cssKeywords[keyword];
    };
    convert6.rgb.xyz = function(rgb) {
      let r2 = rgb[0] / 255;
      let g = rgb[1] / 255;
      let b = rgb[2] / 255;
      r2 = r2 > 0.04045 ? ((r2 + 0.055) / 1.055) ** 2.4 : r2 / 12.92;
      g = g > 0.04045 ? ((g + 0.055) / 1.055) ** 2.4 : g / 12.92;
      b = b > 0.04045 ? ((b + 0.055) / 1.055) ** 2.4 : b / 12.92;
      const x2 = r2 * 0.4124 + g * 0.3576 + b * 0.1805;
      const y = r2 * 0.2126 + g * 0.7152 + b * 0.0722;
      const z2 = r2 * 0.0193 + g * 0.1192 + b * 0.9505;
      return [x2 * 100, y * 100, z2 * 100];
    };
    convert6.rgb.lab = function(rgb) {
      const xyz = convert6.rgb.xyz(rgb);
      let x2 = xyz[0];
      let y = xyz[1];
      let z2 = xyz[2];
      x2 /= 95.047;
      y /= 100;
      z2 /= 108.883;
      x2 = x2 > 8856e-6 ? x2 ** (1 / 3) : 7.787 * x2 + 16 / 116;
      y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116;
      z2 = z2 > 8856e-6 ? z2 ** (1 / 3) : 7.787 * z2 + 16 / 116;
      const l = 116 * y - 16;
      const a2 = 500 * (x2 - y);
      const b = 200 * (y - z2);
      return [l, a2, b];
    };
    convert6.hsl.rgb = function(hsl) {
      const h4 = hsl[0] / 360;
      const s5 = hsl[1] / 100;
      const l = hsl[2] / 100;
      let t2;
      let t3;
      let val;
      if (s5 === 0) {
        val = l * 255;
        return [val, val, val];
      }
      if (l < 0.5) {
        t2 = l * (1 + s5);
      } else {
        t2 = l + s5 - l * s5;
      }
      const t1 = 2 * l - t2;
      const rgb = [0, 0, 0];
      for (let i2 = 0; i2 < 3; i2++) {
        t3 = h4 + 1 / 3 * -(i2 - 1);
        if (t3 < 0) {
          t3++;
        }
        if (t3 > 1) {
          t3--;
        }
        if (6 * t3 < 1) {
          val = t1 + (t2 - t1) * 6 * t3;
        } else if (2 * t3 < 1) {
          val = t2;
        } else if (3 * t3 < 2) {
          val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
        } else {
          val = t1;
        }
        rgb[i2] = val * 255;
      }
      return rgb;
    };
    convert6.hsl.hsv = function(hsl) {
      const h4 = hsl[0];
      let s5 = hsl[1] / 100;
      let l = hsl[2] / 100;
      let smin = s5;
      const lmin = Math.max(l, 0.01);
      l *= 2;
      s5 *= l <= 1 ? l : 2 - l;
      smin *= lmin <= 1 ? lmin : 2 - lmin;
      const v = (l + s5) / 2;
      const sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s5 / (l + s5);
      return [h4, sv * 100, v * 100];
    };
    convert6.hsv.rgb = function(hsv) {
      const h4 = hsv[0] / 60;
      const s5 = hsv[1] / 100;
      let v = hsv[2] / 100;
      const hi = Math.floor(h4) % 6;
      const f3 = h4 - Math.floor(h4);
      const p5 = 255 * v * (1 - s5);
      const q2 = 255 * v * (1 - s5 * f3);
      const t2 = 255 * v * (1 - s5 * (1 - f3));
      v *= 255;
      switch (hi) {
        case 0:
          return [v, t2, p5];
        case 1:
          return [q2, v, p5];
        case 2:
          return [p5, v, t2];
        case 3:
          return [p5, q2, v];
        case 4:
          return [t2, p5, v];
        case 5:
          return [v, p5, q2];
      }
    };
    convert6.hsv.hsl = function(hsv) {
      const h4 = hsv[0];
      const s5 = hsv[1] / 100;
      const v = hsv[2] / 100;
      const vmin = Math.max(v, 0.01);
      let sl;
      let l;
      l = (2 - s5) * v;
      const lmin = (2 - s5) * vmin;
      sl = s5 * vmin;
      sl /= lmin <= 1 ? lmin : 2 - lmin;
      sl = sl || 0;
      l /= 2;
      return [h4, sl * 100, l * 100];
    };
    convert6.hwb.rgb = function(hwb) {
      const h4 = hwb[0] / 360;
      let wh = hwb[1] / 100;
      let bl = hwb[2] / 100;
      const ratio = wh + bl;
      let f3;
      if (ratio > 1) {
        wh /= ratio;
        bl /= ratio;
      }
      const i2 = Math.floor(6 * h4);
      const v = 1 - bl;
      f3 = 6 * h4 - i2;
      if ((i2 & 1) !== 0) {
        f3 = 1 - f3;
      }
      const n = wh + f3 * (v - wh);
      let r2;
      let g;
      let b;
      switch (i2) {
        default:
        case 6:
        case 0:
          r2 = v;
          g = n;
          b = wh;
          break;
        case 1:
          r2 = n;
          g = v;
          b = wh;
          break;
        case 2:
          r2 = wh;
          g = v;
          b = n;
          break;
        case 3:
          r2 = wh;
          g = n;
          b = v;
          break;
        case 4:
          r2 = n;
          g = wh;
          b = v;
          break;
        case 5:
          r2 = v;
          g = wh;
          b = n;
          break;
      }
      return [r2 * 255, g * 255, b * 255];
    };
    convert6.cmyk.rgb = function(cmyk) {
      const c = cmyk[0] / 100;
      const m2 = cmyk[1] / 100;
      const y = cmyk[2] / 100;
      const k = cmyk[3] / 100;
      const r2 = 1 - Math.min(1, c * (1 - k) + k);
      const g = 1 - Math.min(1, m2 * (1 - k) + k);
      const b = 1 - Math.min(1, y * (1 - k) + k);
      return [r2 * 255, g * 255, b * 255];
    };
    convert6.xyz.rgb = function(xyz) {
      const x2 = xyz[0] / 100;
      const y = xyz[1] / 100;
      const z2 = xyz[2] / 100;
      let r2;
      let g;
      let b;
      r2 = x2 * 3.2406 + y * -1.5372 + z2 * -0.4986;
      g = x2 * -0.9689 + y * 1.8758 + z2 * 0.0415;
      b = x2 * 0.0557 + y * -0.204 + z2 * 1.057;
      r2 = r2 > 31308e-7 ? 1.055 * r2 ** (1 / 2.4) - 0.055 : r2 * 12.92;
      g = g > 31308e-7 ? 1.055 * g ** (1 / 2.4) - 0.055 : g * 12.92;
      b = b > 31308e-7 ? 1.055 * b ** (1 / 2.4) - 0.055 : b * 12.92;
      r2 = Math.min(Math.max(0, r2), 1);
      g = Math.min(Math.max(0, g), 1);
      b = Math.min(Math.max(0, b), 1);
      return [r2 * 255, g * 255, b * 255];
    };
    convert6.xyz.lab = function(xyz) {
      let x2 = xyz[0];
      let y = xyz[1];
      let z2 = xyz[2];
      x2 /= 95.047;
      y /= 100;
      z2 /= 108.883;
      x2 = x2 > 8856e-6 ? x2 ** (1 / 3) : 7.787 * x2 + 16 / 116;
      y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116;
      z2 = z2 > 8856e-6 ? z2 ** (1 / 3) : 7.787 * z2 + 16 / 116;
      const l = 116 * y - 16;
      const a2 = 500 * (x2 - y);
      const b = 200 * (y - z2);
      return [l, a2, b];
    };
    convert6.lab.xyz = function(lab) {
      const l = lab[0];
      const a2 = lab[1];
      const b = lab[2];
      let x2;
      let y;
      let z2;
      y = (l + 16) / 116;
      x2 = a2 / 500 + y;
      z2 = y - b / 200;
      const y2 = y ** 3;
      const x22 = x2 ** 3;
      const z22 = z2 ** 3;
      y = y2 > 8856e-6 ? y2 : (y - 16 / 116) / 7.787;
      x2 = x22 > 8856e-6 ? x22 : (x2 - 16 / 116) / 7.787;
      z2 = z22 > 8856e-6 ? z22 : (z2 - 16 / 116) / 7.787;
      x2 *= 95.047;
      y *= 100;
      z2 *= 108.883;
      return [x2, y, z2];
    };
    convert6.lab.lch = function(lab) {
      const l = lab[0];
      const a2 = lab[1];
      const b = lab[2];
      let h4;
      const hr2 = Math.atan2(b, a2);
      h4 = hr2 * 360 / 2 / Math.PI;
      if (h4 < 0) {
        h4 += 360;
      }
      const c = Math.sqrt(a2 * a2 + b * b);
      return [l, c, h4];
    };
    convert6.lch.lab = function(lch) {
      const l = lch[0];
      const c = lch[1];
      const h4 = lch[2];
      const hr2 = h4 / 360 * 2 * Math.PI;
      const a2 = c * Math.cos(hr2);
      const b = c * Math.sin(hr2);
      return [l, a2, b];
    };
    convert6.rgb.ansi16 = function(args, saturation = null) {
      const [r2, g, b] = args;
      let value = saturation === null ? convert6.rgb.hsv(args)[2] : saturation;
      value = Math.round(value / 50);
      if (value === 0) {
        return 30;
      }
      let ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r2 / 255));
      if (value === 2) {
        ansi += 60;
      }
      return ansi;
    };
    convert6.hsv.ansi16 = function(args) {
      return convert6.rgb.ansi16(convert6.hsv.rgb(args), args[2]);
    };
    convert6.rgb.ansi256 = function(args) {
      const r2 = args[0];
      const g = args[1];
      const b = args[2];
      if (r2 === g && g === b) {
        if (r2 < 8) {
          return 16;
        }
        if (r2 > 248) {
          return 231;
        }
        return Math.round((r2 - 8) / 247 * 24) + 232;
      }
      const ansi = 16 + 36 * Math.round(r2 / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);
      return ansi;
    };
    convert6.ansi16.rgb = function(args) {
      let color2 = args % 10;
      if (color2 === 0 || color2 === 7) {
        if (args > 50) {
          color2 += 3.5;
        }
        color2 = color2 / 10.5 * 255;
        return [color2, color2, color2];
      }
      const mult = (~~(args > 50) + 1) * 0.5;
      const r2 = (color2 & 1) * mult * 255;
      const g = (color2 >> 1 & 1) * mult * 255;
      const b = (color2 >> 2 & 1) * mult * 255;
      return [r2, g, b];
    };
    convert6.ansi256.rgb = function(args) {
      if (args >= 232) {
        const c = (args - 232) * 10 + 8;
        return [c, c, c];
      }
      args -= 16;
      let rem;
      const r2 = Math.floor(args / 36) / 5 * 255;
      const g = Math.floor((rem = args % 36) / 6) / 5 * 255;
      const b = rem % 6 / 5 * 255;
      return [r2, g, b];
    };
    convert6.rgb.hex = function(args) {
      const integer = ((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255);
      const string2 = integer.toString(16).toUpperCase();
      return "000000".substring(string2.length) + string2;
    };
    convert6.hex.rgb = function(args) {
      const match3 = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
      if (!match3) {
        return [0, 0, 0];
      }
      let colorString = match3[0];
      if (match3[0].length === 3) {
        colorString = colorString.split("").map((char) => {
          return char + char;
        }).join("");
      }
      const integer = parseInt(colorString, 16);
      const r2 = integer >> 16 & 255;
      const g = integer >> 8 & 255;
      const b = integer & 255;
      return [r2, g, b];
    };
    convert6.rgb.hcg = function(rgb) {
      const r2 = rgb[0] / 255;
      const g = rgb[1] / 255;
      const b = rgb[2] / 255;
      const max = Math.max(Math.max(r2, g), b);
      const min = Math.min(Math.min(r2, g), b);
      const chroma = max - min;
      let grayscale;
      let hue;
      if (chroma < 1) {
        grayscale = min / (1 - chroma);
      } else {
        grayscale = 0;
      }
      if (chroma <= 0) {
        hue = 0;
      } else if (max === r2) {
        hue = (g - b) / chroma % 6;
      } else if (max === g) {
        hue = 2 + (b - r2) / chroma;
      } else {
        hue = 4 + (r2 - g) / chroma;
      }
      hue /= 6;
      hue %= 1;
      return [hue * 360, chroma * 100, grayscale * 100];
    };
    convert6.hsl.hcg = function(hsl) {
      const s5 = hsl[1] / 100;
      const l = hsl[2] / 100;
      const c = l < 0.5 ? 2 * s5 * l : 2 * s5 * (1 - l);
      let f3 = 0;
      if (c < 1) {
        f3 = (l - 0.5 * c) / (1 - c);
      }
      return [hsl[0], c * 100, f3 * 100];
    };
    convert6.hsv.hcg = function(hsv) {
      const s5 = hsv[1] / 100;
      const v = hsv[2] / 100;
      const c = s5 * v;
      let f3 = 0;
      if (c < 1) {
        f3 = (v - c) / (1 - c);
      }
      return [hsv[0], c * 100, f3 * 100];
    };
    convert6.hcg.rgb = function(hcg) {
      const h4 = hcg[0] / 360;
      const c = hcg[1] / 100;
      const g = hcg[2] / 100;
      if (c === 0) {
        return [g * 255, g * 255, g * 255];
      }
      const pure = [0, 0, 0];
      const hi = h4 % 1 * 6;
      const v = hi % 1;
      const w = 1 - v;
      let mg = 0;
      switch (Math.floor(hi)) {
        case 0:
          pure[0] = 1;
          pure[1] = v;
          pure[2] = 0;
          break;
        case 1:
          pure[0] = w;
          pure[1] = 1;
          pure[2] = 0;
          break;
        case 2:
          pure[0] = 0;
          pure[1] = 1;
          pure[2] = v;
          break;
        case 3:
          pure[0] = 0;
          pure[1] = w;
          pure[2] = 1;
          break;
        case 4:
          pure[0] = v;
          pure[1] = 0;
          pure[2] = 1;
          break;
        default:
          pure[0] = 1;
          pure[1] = 0;
          pure[2] = w;
      }
      mg = (1 - c) * g;
      return [
        (c * pure[0] + mg) * 255,
        (c * pure[1] + mg) * 255,
        (c * pure[2] + mg) * 255
      ];
    };
    convert6.hcg.hsv = function(hcg) {
      const c = hcg[1] / 100;
      const g = hcg[2] / 100;
      const v = c + g * (1 - c);
      let f3 = 0;
      if (v > 0) {
        f3 = c / v;
      }
      return [hcg[0], f3 * 100, v * 100];
    };
    convert6.hcg.hsl = function(hcg) {
      const c = hcg[1] / 100;
      const g = hcg[2] / 100;
      const l = g * (1 - c) + 0.5 * c;
      let s5 = 0;
      if (l > 0 && l < 0.5) {
        s5 = c / (2 * l);
      } else if (l >= 0.5 && l < 1) {
        s5 = c / (2 * (1 - l));
      }
      return [hcg[0], s5 * 100, l * 100];
    };
    convert6.hcg.hwb = function(hcg) {
      const c = hcg[1] / 100;
      const g = hcg[2] / 100;
      const v = c + g * (1 - c);
      return [hcg[0], (v - c) * 100, (1 - v) * 100];
    };
    convert6.hwb.hcg = function(hwb) {
      const w = hwb[1] / 100;
      const b = hwb[2] / 100;
      const v = 1 - b;
      const c = v - w;
      let g = 0;
      if (c < 1) {
        g = (v - c) / (1 - c);
      }
      return [hwb[0], c * 100, g * 100];
    };
    convert6.apple.rgb = function(apple) {
      return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];
    };
    convert6.rgb.apple = function(rgb) {
      return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];
    };
    convert6.gray.rgb = function(args) {
      return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
    };
    convert6.gray.hsl = function(args) {
      return [0, 0, args[0]];
    };
    convert6.gray.hsv = convert6.gray.hsl;
    convert6.gray.hwb = function(gray) {
      return [0, 100, gray[0]];
    };
    convert6.gray.cmyk = function(gray) {
      return [0, 0, 0, gray[0]];
    };
    convert6.gray.lab = function(gray) {
      return [gray[0], 0, 0];
    };
    convert6.gray.hex = function(gray) {
      const val = Math.round(gray[0] / 100 * 255) & 255;
      const integer = (val << 16) + (val << 8) + val;
      const string2 = integer.toString(16).toUpperCase();
      return "000000".substring(string2.length) + string2;
    };
    convert6.rgb.gray = function(rgb) {
      const val = (rgb[0] + rgb[1] + rgb[2]) / 3;
      return [val / 255 * 100];
    };
  }
});

// ../../node_modules/inquirer/node_modules/color-convert/route.js
var require_route3 = __commonJS({
  "../../node_modules/inquirer/node_modules/color-convert/route.js"(exports2, module2) {
    var conversions = require_conversions2();
    function buildGraph() {
      const graph = {};
      const models = Object.keys(conversions);
      for (let len = models.length, i2 = 0; i2 < len; i2++) {
        graph[models[i2]] = {
          // http://jsperf.com/1-vs-infinity
          // micro-opt, but this is simple.
          distance: -1,
          parent: null
        };
      }
      return graph;
    }
    function deriveBFS(fromModel) {
      const graph = buildGraph();
      const queue = [fromModel];
      graph[fromModel].distance = 0;
      while (queue.length) {
        const current2 = queue.pop();
        const adjacents = Object.keys(conversions[current2]);
        for (let len = adjacents.length, i2 = 0; i2 < len; i2++) {
          const adjacent = adjacents[i2];
          const node3 = graph[adjacent];
          if (node3.distance === -1) {
            node3.distance = graph[current2].distance + 1;
            node3.parent = current2;
            queue.unshift(adjacent);
          }
        }
      }
      return graph;
    }
    function link4(from4, to) {
      return function(args) {
        return to(from4(args));
      };
    }
    function wrapConversion(toModel, graph) {
      const path45 = [graph[toModel].parent, toModel];
      let fn = conversions[graph[toModel].parent][toModel];
      let cur = graph[toModel].parent;
      while (graph[cur].parent) {
        path45.unshift(graph[cur].parent);
        fn = link4(conversions[graph[cur].parent][cur], fn);
        cur = graph[cur].parent;
      }
      fn.conversion = path45;
      return fn;
    }
    module2.exports = function(fromModel) {
      const graph = deriveBFS(fromModel);
      const conversion = {};
      const models = Object.keys(graph);
      for (let len = models.length, i2 = 0; i2 < len; i2++) {
        const toModel = models[i2];
        const node3 = graph[toModel];
        if (node3.parent === null) {
          continue;
        }
        conversion[toModel] = wrapConversion(toModel, graph);
      }
      return conversion;
    };
  }
});

// ../../node_modules/inquirer/node_modules/color-convert/index.js
var require_color_convert2 = __commonJS({
  "../../node_modules/inquirer/node_modules/color-convert/index.js"(exports2, module2) {
    var conversions = require_conversions2();
    var route = require_route3();
    var convert6 = {};
    var models = Object.keys(conversions);
    function wrapRaw(fn) {
      const wrappedFn = function(...args) {
        const arg0 = args[0];
        if (arg0 === void 0 || arg0 === null) {
          return arg0;
        }
        if (arg0.length > 1) {
          args = arg0;
        }
        return fn(args);
      };
      if ("conversion" in fn) {
        wrappedFn.conversion = fn.conversion;
      }
      return wrappedFn;
    }
    function wrapRounded(fn) {
      const wrappedFn = function(...args) {
        const arg0 = args[0];
        if (arg0 === void 0 || arg0 === null) {
          return arg0;
        }
        if (arg0.length > 1) {
          args = arg0;
        }
        const result = fn(args);
        if (typeof result === "object") {
          for (let len = result.length, i2 = 0; i2 < len; i2++) {
            result[i2] = Math.round(result[i2]);
          }
        }
        return result;
      };
      if ("conversion" in fn) {
        wrappedFn.conversion = fn.conversion;
      }
      return wrappedFn;
    }
    models.forEach((fromModel) => {
      convert6[fromModel] = {};
      Object.defineProperty(convert6[fromModel], "channels", { value: conversions[fromModel].channels });
      Object.defineProperty(convert6[fromModel], "labels", { value: conversions[fromModel].labels });
      const routes = route(fromModel);
      const routeModels = Object.keys(routes);
      routeModels.forEach((toModel) => {
        const fn = routes[toModel];
        convert6[fromModel][toModel] = wrapRounded(fn);
        convert6[fromModel][toModel].raw = wrapRaw(fn);
      });
    });
    module2.exports = convert6;
  }
});

// ../../node_modules/inquirer/node_modules/ansi-styles/index.js
var require_ansi_styles = __commonJS({
  "../../node_modules/inquirer/node_modules/ansi-styles/index.js"(exports2, module2) {
    "use strict";
    var wrapAnsi167 = (fn, offset) => (...args) => {
      const code7 = fn(...args);
      return `\x1B[${code7 + offset}m`;
    };
    var wrapAnsi2567 = (fn, offset) => (...args) => {
      const code7 = fn(...args);
      return `\x1B[${38 + offset};5;${code7}m`;
    };
    var wrapAnsi16m7 = (fn, offset) => (...args) => {
      const rgb = fn(...args);
      return `\x1B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
    };
    var ansi2ansi = (n) => n;
    var rgb2rgb = (r2, g, b) => [r2, g, b];
    var setLazyProperty = (object, property, get) => {
      Object.defineProperty(object, property, {
        get: () => {
          const value = get();
          Object.defineProperty(object, property, {
            value,
            enumerable: true,
            configurable: true
          });
          return value;
        },
        enumerable: true,
        configurable: true
      });
    };
    var colorConvert;
    var makeDynamicStyles = (wrap4, targetSpace, identity2, isBackground) => {
      if (colorConvert === void 0) {
        colorConvert = require_color_convert2();
      }
      const offset = isBackground ? 10 : 0;
      const styles14 = {};
      for (const [sourceSpace, suite] of Object.entries(colorConvert)) {
        const name3 = sourceSpace === "ansi16" ? "ansi" : sourceSpace;
        if (sourceSpace === targetSpace) {
          styles14[name3] = wrap4(identity2, offset);
        } else if (typeof suite === "object") {
          styles14[name3] = wrap4(suite[targetSpace], offset);
        }
      }
      return styles14;
    };
    function assembleStyles7() {
      const codes = /* @__PURE__ */ new Map();
      const styles14 = {
        modifier: {
          reset: [0, 0],
          // 21 isn't widely supported and 22 does the same thing
          bold: [1, 22],
          dim: [2, 22],
          italic: [3, 23],
          underline: [4, 24],
          inverse: [7, 27],
          hidden: [8, 28],
          strikethrough: [9, 29]
        },
        color: {
          black: [30, 39],
          red: [31, 39],
          green: [32, 39],
          yellow: [33, 39],
          blue: [34, 39],
          magenta: [35, 39],
          cyan: [36, 39],
          white: [37, 39],
          // Bright color
          blackBright: [90, 39],
          redBright: [91, 39],
          greenBright: [92, 39],
          yellowBright: [93, 39],
          blueBright: [94, 39],
          magentaBright: [95, 39],
          cyanBright: [96, 39],
          whiteBright: [97, 39]
        },
        bgColor: {
          bgBlack: [40, 49],
          bgRed: [41, 49],
          bgGreen: [42, 49],
          bgYellow: [43, 49],
          bgBlue: [44, 49],
          bgMagenta: [45, 49],
          bgCyan: [46, 49],
          bgWhite: [47, 49],
          // Bright color
          bgBlackBright: [100, 49],
          bgRedBright: [101, 49],
          bgGreenBright: [102, 49],
          bgYellowBright: [103, 49],
          bgBlueBright: [104, 49],
          bgMagentaBright: [105, 49],
          bgCyanBright: [106, 49],
          bgWhiteBright: [107, 49]
        }
      };
      styles14.color.gray = styles14.color.blackBright;
      styles14.bgColor.bgGray = styles14.bgColor.bgBlackBright;
      styles14.color.grey = styles14.color.blackBright;
      styles14.bgColor.bgGrey = styles14.bgColor.bgBlackBright;
      for (const [groupName, group3] of Object.entries(styles14)) {
        for (const [styleName, style3] of Object.entries(group3)) {
          styles14[styleName] = {
            open: `\x1B[${style3[0]}m`,
            close: `\x1B[${style3[1]}m`
          };
          group3[styleName] = styles14[styleName];
          codes.set(style3[0], style3[1]);
        }
        Object.defineProperty(styles14, groupName, {
          value: group3,
          enumerable: false
        });
      }
      Object.defineProperty(styles14, "codes", {
        value: codes,
        enumerable: false
      });
      styles14.color.close = "\x1B[39m";
      styles14.bgColor.close = "\x1B[49m";
      setLazyProperty(styles14.color, "ansi", () => makeDynamicStyles(wrapAnsi167, "ansi16", ansi2ansi, false));
      setLazyProperty(styles14.color, "ansi256", () => makeDynamicStyles(wrapAnsi2567, "ansi256", ansi2ansi, false));
      setLazyProperty(styles14.color, "ansi16m", () => makeDynamicStyles(wrapAnsi16m7, "rgb", rgb2rgb, false));
      setLazyProperty(styles14.bgColor, "ansi", () => makeDynamicStyles(wrapAnsi167, "ansi16", ansi2ansi, true));
      setLazyProperty(styles14.bgColor, "ansi256", () => makeDynamicStyles(wrapAnsi2567, "ansi256", ansi2ansi, true));
      setLazyProperty(styles14.bgColor, "ansi16m", () => makeDynamicStyles(wrapAnsi16m7, "rgb", rgb2rgb, true));
      return styles14;
    }
    Object.defineProperty(module2, "exports", {
      enumerable: true,
      get: assembleStyles7
    });
  }
});

// ../../node_modules/inquirer/node_modules/wrap-ansi/index.js
var require_wrap_ansi = __commonJS({
  "../../node_modules/inquirer/node_modules/wrap-ansi/index.js"(exports2, module2) {
    "use strict";
    var stringWidth3 = require_string_width();
    var stripAnsi3 = require_strip_ansi();
    var ansiStyles7 = require_ansi_styles();
    var ESCAPES2 = /* @__PURE__ */ new Set([
      "\x1B",
      "\x9B"
    ]);
    var END_CODE2 = 39;
    var wrapAnsi3 = (code7) => `${ESCAPES2.values().next().value}[${code7}m`;
    var wordLengths2 = (string2) => string2.split(" ").map((character) => stringWidth3(character));
    var wrapWord2 = (rows, word, columns) => {
      const characters2 = [...word];
      let isInsideEscape = false;
      let visible = stringWidth3(stripAnsi3(rows[rows.length - 1]));
      for (const [index4, character] of characters2.entries()) {
        const characterLength = stringWidth3(character);
        if (visible + characterLength <= columns) {
          rows[rows.length - 1] += character;
        } else {
          rows.push(character);
          visible = 0;
        }
        if (ESCAPES2.has(character)) {
          isInsideEscape = true;
        } else if (isInsideEscape && character === "m") {
          isInsideEscape = false;
          continue;
        }
        if (isInsideEscape) {
          continue;
        }
        visible += characterLength;
        if (visible === columns && index4 < characters2.length - 1) {
          rows.push("");
          visible = 0;
        }
      }
      if (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {
        rows[rows.length - 2] += rows.pop();
      }
    };
    var stringVisibleTrimSpacesRight2 = (str2) => {
      const words = str2.split(" ");
      let last = words.length;
      while (last > 0) {
        if (stringWidth3(words[last - 1]) > 0) {
          break;
        }
        last--;
      }
      if (last === words.length) {
        return str2;
      }
      return words.slice(0, last).join(" ") + words.slice(last).join("");
    };
    var exec3 = (string2, columns, options = {}) => {
      if (options.trim !== false && string2.trim() === "") {
        return "";
      }
      let pre2 = "";
      let ret = "";
      let escapeCode;
      const lengths = wordLengths2(string2);
      let rows = [""];
      for (const [index4, word] of string2.split(" ").entries()) {
        if (options.trim !== false) {
          rows[rows.length - 1] = rows[rows.length - 1].trimLeft();
        }
        let rowLength = stringWidth3(rows[rows.length - 1]);
        if (index4 !== 0) {
          if (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {
            rows.push("");
            rowLength = 0;
          }
          if (rowLength > 0 || options.trim === false) {
            rows[rows.length - 1] += " ";
            rowLength++;
          }
        }
        if (options.hard && lengths[index4] > columns) {
          const remainingColumns = columns - rowLength;
          const breaksStartingThisLine = 1 + Math.floor((lengths[index4] - remainingColumns - 1) / columns);
          const breaksStartingNextLine = Math.floor((lengths[index4] - 1) / columns);
          if (breaksStartingNextLine < breaksStartingThisLine) {
            rows.push("");
          }
          wrapWord2(rows, word, columns);
          continue;
        }
        if (rowLength + lengths[index4] > columns && rowLength > 0 && lengths[index4] > 0) {
          if (options.wordWrap === false && rowLength < columns) {
            wrapWord2(rows, word, columns);
            continue;
          }
          rows.push("");
        }
        if (rowLength + lengths[index4] > columns && options.wordWrap === false) {
          wrapWord2(rows, word, columns);
          continue;
        }
        rows[rows.length - 1] += word;
      }
      if (options.trim !== false) {
        rows = rows.map(stringVisibleTrimSpacesRight2);
      }
      pre2 = rows.join("\n");
      for (const [index4, character] of [...pre2].entries()) {
        ret += character;
        if (ESCAPES2.has(character)) {
          const code8 = parseFloat(/\d[^m]*/.exec(pre2.slice(index4, index4 + 4)));
          escapeCode = code8 === END_CODE2 ? null : code8;
        }
        const code7 = ansiStyles7.codes.get(Number(escapeCode));
        if (escapeCode && code7) {
          if (pre2[index4 + 1] === "\n") {
            ret += wrapAnsi3(code7);
          } else if (character === "\n") {
            ret += wrapAnsi3(escapeCode);
          }
        }
      }
      return ret;
    };
    module2.exports = (string2, columns, options) => {
      return String(string2).normalize().replace(/\r\n/g, "\n").split("\n").map((line2) => exec3(line2, columns, options)).join("\n");
    };
  }
});

// ../../node_modules/ora/node_modules/color-name/index.js
var require_color_name4 = __commonJS({
  "../../node_modules/ora/node_modules/color-name/index.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      "aliceblue": [240, 248, 255],
      "antiquewhite": [250, 235, 215],
      "aqua": [0, 255, 255],
      "aquamarine": [127, 255, 212],
      "azure": [240, 255, 255],
      "beige": [245, 245, 220],
      "bisque": [255, 228, 196],
      "black": [0, 0, 0],
      "blanchedalmond": [255, 235, 205],
      "blue": [0, 0, 255],
      "blueviolet": [138, 43, 226],
      "brown": [165, 42, 42],
      "burlywood": [222, 184, 135],
      "cadetblue": [95, 158, 160],
      "chartreuse": [127, 255, 0],
      "chocolate": [210, 105, 30],
      "coral": [255, 127, 80],
      "cornflowerblue": [100, 149, 237],
      "cornsilk": [255, 248, 220],
      "crimson": [220, 20, 60],
      "cyan": [0, 255, 255],
      "darkblue": [0, 0, 139],
      "darkcyan": [0, 139, 139],
      "darkgoldenrod": [184, 134, 11],
      "darkgray": [169, 169, 169],
      "darkgreen": [0, 100, 0],
      "darkgrey": [169, 169, 169],
      "darkkhaki": [189, 183, 107],
      "darkmagenta": [139, 0, 139],
      "darkolivegreen": [85, 107, 47],
      "darkorange": [255, 140, 0],
      "darkorchid": [153, 50, 204],
      "darkred": [139, 0, 0],
      "darksalmon": [233, 150, 122],
      "darkseagreen": [143, 188, 143],
      "darkslateblue": [72, 61, 139],
      "darkslategray": [47, 79, 79],
      "darkslategrey": [47, 79, 79],
      "darkturquoise": [0, 206, 209],
      "darkviolet": [148, 0, 211],
      "deeppink": [255, 20, 147],
      "deepskyblue": [0, 191, 255],
      "dimgray": [105, 105, 105],
      "dimgrey": [105, 105, 105],
      "dodgerblue": [30, 144, 255],
      "firebrick": [178, 34, 34],
      "floralwhite": [255, 250, 240],
      "forestgreen": [34, 139, 34],
      "fuchsia": [255, 0, 255],
      "gainsboro": [220, 220, 220],
      "ghostwhite": [248, 248, 255],
      "gold": [255, 215, 0],
      "goldenrod": [218, 165, 32],
      "gray": [128, 128, 128],
      "green": [0, 128, 0],
      "greenyellow": [173, 255, 47],
      "grey": [128, 128, 128],
      "honeydew": [240, 255, 240],
      "hotpink": [255, 105, 180],
      "indianred": [205, 92, 92],
      "indigo": [75, 0, 130],
      "ivory": [255, 255, 240],
      "khaki": [240, 230, 140],
      "lavender": [230, 230, 250],
      "lavenderblush": [255, 240, 245],
      "lawngreen": [124, 252, 0],
      "lemonchiffon": [255, 250, 205],
      "lightblue": [173, 216, 230],
      "lightcoral": [240, 128, 128],
      "lightcyan": [224, 255, 255],
      "lightgoldenrodyellow": [250, 250, 210],
      "lightgray": [211, 211, 211],
      "lightgreen": [144, 238, 144],
      "lightgrey": [211, 211, 211],
      "lightpink": [255, 182, 193],
      "lightsalmon": [255, 160, 122],
      "lightseagreen": [32, 178, 170],
      "lightskyblue": [135, 206, 250],
      "lightslategray": [119, 136, 153],
      "lightslategrey": [119, 136, 153],
      "lightsteelblue": [176, 196, 222],
      "lightyellow": [255, 255, 224],
      "lime": [0, 255, 0],
      "limegreen": [50, 205, 50],
      "linen": [250, 240, 230],
      "magenta": [255, 0, 255],
      "maroon": [128, 0, 0],
      "mediumaquamarine": [102, 205, 170],
      "mediumblue": [0, 0, 205],
      "mediumorchid": [186, 85, 211],
      "mediumpurple": [147, 112, 219],
      "mediumseagreen": [60, 179, 113],
      "mediumslateblue": [123, 104, 238],
      "mediumspringgreen": [0, 250, 154],
      "mediumturquoise": [72, 209, 204],
      "mediumvioletred": [199, 21, 133],
      "midnightblue": [25, 25, 112],
      "mintcream": [245, 255, 250],
      "mistyrose": [255, 228, 225],
      "moccasin": [255, 228, 181],
      "navajowhite": [255, 222, 173],
      "navy": [0, 0, 128],
      "oldlace": [253, 245, 230],
      "olive": [128, 128, 0],
      "olivedrab": [107, 142, 35],
      "orange": [255, 165, 0],
      "orangered": [255, 69, 0],
      "orchid": [218, 112, 214],
      "palegoldenrod": [238, 232, 170],
      "palegreen": [152, 251, 152],
      "paleturquoise": [175, 238, 238],
      "palevioletred": [219, 112, 147],
      "papayawhip": [255, 239, 213],
      "peachpuff": [255, 218, 185],
      "peru": [205, 133, 63],
      "pink": [255, 192, 203],
      "plum": [221, 160, 221],
      "powderblue": [176, 224, 230],
      "purple": [128, 0, 128],
      "rebeccapurple": [102, 51, 153],
      "red": [255, 0, 0],
      "rosybrown": [188, 143, 143],
      "royalblue": [65, 105, 225],
      "saddlebrown": [139, 69, 19],
      "salmon": [250, 128, 114],
      "sandybrown": [244, 164, 96],
      "seagreen": [46, 139, 87],
      "seashell": [255, 245, 238],
      "sienna": [160, 82, 45],
      "silver": [192, 192, 192],
      "skyblue": [135, 206, 235],
      "slateblue": [106, 90, 205],
      "slategray": [112, 128, 144],
      "slategrey": [112, 128, 144],
      "snow": [255, 250, 250],
      "springgreen": [0, 255, 127],
      "steelblue": [70, 130, 180],
      "tan": [210, 180, 140],
      "teal": [0, 128, 128],
      "thistle": [216, 191, 216],
      "tomato": [255, 99, 71],
      "turquoise": [64, 224, 208],
      "violet": [238, 130, 238],
      "wheat": [245, 222, 179],
      "white": [255, 255, 255],
      "whitesmoke": [245, 245, 245],
      "yellow": [255, 255, 0],
      "yellowgreen": [154, 205, 50]
    };
  }
});

// ../../node_modules/ora/node_modules/color-convert/conversions.js
var require_conversions3 = __commonJS({
  "../../node_modules/ora/node_modules/color-convert/conversions.js"(exports2, module2) {
    var cssKeywords = require_color_name4();
    var reverseKeywords = {};
    for (const key2 of Object.keys(cssKeywords)) {
      reverseKeywords[cssKeywords[key2]] = key2;
    }
    var convert6 = {
      rgb: { channels: 3, labels: "rgb" },
      hsl: { channels: 3, labels: "hsl" },
      hsv: { channels: 3, labels: "hsv" },
      hwb: { channels: 3, labels: "hwb" },
      cmyk: { channels: 4, labels: "cmyk" },
      xyz: { channels: 3, labels: "xyz" },
      lab: { channels: 3, labels: "lab" },
      lch: { channels: 3, labels: "lch" },
      hex: { channels: 1, labels: ["hex"] },
      keyword: { channels: 1, labels: ["keyword"] },
      ansi16: { channels: 1, labels: ["ansi16"] },
      ansi256: { channels: 1, labels: ["ansi256"] },
      hcg: { channels: 3, labels: ["h", "c", "g"] },
      apple: { channels: 3, labels: ["r16", "g16", "b16"] },
      gray: { channels: 1, labels: ["gray"] }
    };
    module2.exports = convert6;
    for (const model of Object.keys(convert6)) {
      if (!("channels" in convert6[model])) {
        throw new Error("missing channels property: " + model);
      }
      if (!("labels" in convert6[model])) {
        throw new Error("missing channel labels property: " + model);
      }
      if (convert6[model].labels.length !== convert6[model].channels) {
        throw new Error("channel and label counts mismatch: " + model);
      }
      const { channels, labels } = convert6[model];
      delete convert6[model].channels;
      delete convert6[model].labels;
      Object.defineProperty(convert6[model], "channels", { value: channels });
      Object.defineProperty(convert6[model], "labels", { value: labels });
    }
    convert6.rgb.hsl = function(rgb) {
      const r2 = rgb[0] / 255;
      const g = rgb[1] / 255;
      const b = rgb[2] / 255;
      const min = Math.min(r2, g, b);
      const max = Math.max(r2, g, b);
      const delta = max - min;
      let h4;
      let s5;
      if (max === min) {
        h4 = 0;
      } else if (r2 === max) {
        h4 = (g - b) / delta;
      } else if (g === max) {
        h4 = 2 + (b - r2) / delta;
      } else if (b === max) {
        h4 = 4 + (r2 - g) / delta;
      }
      h4 = Math.min(h4 * 60, 360);
      if (h4 < 0) {
        h4 += 360;
      }
      const l = (min + max) / 2;
      if (max === min) {
        s5 = 0;
      } else if (l <= 0.5) {
        s5 = delta / (max + min);
      } else {
        s5 = delta / (2 - max - min);
      }
      return [h4, s5 * 100, l * 100];
    };
    convert6.rgb.hsv = function(rgb) {
      let rdif;
      let gdif;
      let bdif;
      let h4;
      let s5;
      const r2 = rgb[0] / 255;
      const g = rgb[1] / 255;
      const b = rgb[2] / 255;
      const v = Math.max(r2, g, b);
      const diff = v - Math.min(r2, g, b);
      const diffc = function(c) {
        return (v - c) / 6 / diff + 1 / 2;
      };
      if (diff === 0) {
        h4 = 0;
        s5 = 0;
      } else {
        s5 = diff / v;
        rdif = diffc(r2);
        gdif = diffc(g);
        bdif = diffc(b);
        if (r2 === v) {
          h4 = bdif - gdif;
        } else if (g === v) {
          h4 = 1 / 3 + rdif - bdif;
        } else if (b === v) {
          h4 = 2 / 3 + gdif - rdif;
        }
        if (h4 < 0) {
          h4 += 1;
        } else if (h4 > 1) {
          h4 -= 1;
        }
      }
      return [
        h4 * 360,
        s5 * 100,
        v * 100
      ];
    };
    convert6.rgb.hwb = function(rgb) {
      const r2 = rgb[0];
      const g = rgb[1];
      let b = rgb[2];
      const h4 = convert6.rgb.hsl(rgb)[0];
      const w = 1 / 255 * Math.min(r2, Math.min(g, b));
      b = 1 - 1 / 255 * Math.max(r2, Math.max(g, b));
      return [h4, w * 100, b * 100];
    };
    convert6.rgb.cmyk = function(rgb) {
      const r2 = rgb[0] / 255;
      const g = rgb[1] / 255;
      const b = rgb[2] / 255;
      const k = Math.min(1 - r2, 1 - g, 1 - b);
      const c = (1 - r2 - k) / (1 - k) || 0;
      const m2 = (1 - g - k) / (1 - k) || 0;
      const y = (1 - b - k) / (1 - k) || 0;
      return [c * 100, m2 * 100, y * 100, k * 100];
    };
    function comparativeDistance(x2, y) {
      return (x2[0] - y[0]) ** 2 + (x2[1] - y[1]) ** 2 + (x2[2] - y[2]) ** 2;
    }
    convert6.rgb.keyword = function(rgb) {
      const reversed = reverseKeywords[rgb];
      if (reversed) {
        return reversed;
      }
      let currentClosestDistance = Infinity;
      let currentClosestKeyword;
      for (const keyword of Object.keys(cssKeywords)) {
        const value = cssKeywords[keyword];
        const distance = comparativeDistance(rgb, value);
        if (distance < currentClosestDistance) {
          currentClosestDistance = distance;
          currentClosestKeyword = keyword;
        }
      }
      return currentClosestKeyword;
    };
    convert6.keyword.rgb = function(keyword) {
      return cssKeywords[keyword];
    };
    convert6.rgb.xyz = function(rgb) {
      let r2 = rgb[0] / 255;
      let g = rgb[1] / 255;
      let b = rgb[2] / 255;
      r2 = r2 > 0.04045 ? ((r2 + 0.055) / 1.055) ** 2.4 : r2 / 12.92;
      g = g > 0.04045 ? ((g + 0.055) / 1.055) ** 2.4 : g / 12.92;
      b = b > 0.04045 ? ((b + 0.055) / 1.055) ** 2.4 : b / 12.92;
      const x2 = r2 * 0.4124 + g * 0.3576 + b * 0.1805;
      const y = r2 * 0.2126 + g * 0.7152 + b * 0.0722;
      const z2 = r2 * 0.0193 + g * 0.1192 + b * 0.9505;
      return [x2 * 100, y * 100, z2 * 100];
    };
    convert6.rgb.lab = function(rgb) {
      const xyz = convert6.rgb.xyz(rgb);
      let x2 = xyz[0];
      let y = xyz[1];
      let z2 = xyz[2];
      x2 /= 95.047;
      y /= 100;
      z2 /= 108.883;
      x2 = x2 > 8856e-6 ? x2 ** (1 / 3) : 7.787 * x2 + 16 / 116;
      y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116;
      z2 = z2 > 8856e-6 ? z2 ** (1 / 3) : 7.787 * z2 + 16 / 116;
      const l = 116 * y - 16;
      const a2 = 500 * (x2 - y);
      const b = 200 * (y - z2);
      return [l, a2, b];
    };
    convert6.hsl.rgb = function(hsl) {
      const h4 = hsl[0] / 360;
      const s5 = hsl[1] / 100;
      const l = hsl[2] / 100;
      let t2;
      let t3;
      let val;
      if (s5 === 0) {
        val = l * 255;
        return [val, val, val];
      }
      if (l < 0.5) {
        t2 = l * (1 + s5);
      } else {
        t2 = l + s5 - l * s5;
      }
      const t1 = 2 * l - t2;
      const rgb = [0, 0, 0];
      for (let i2 = 0; i2 < 3; i2++) {
        t3 = h4 + 1 / 3 * -(i2 - 1);
        if (t3 < 0) {
          t3++;
        }
        if (t3 > 1) {
          t3--;
        }
        if (6 * t3 < 1) {
          val = t1 + (t2 - t1) * 6 * t3;
        } else if (2 * t3 < 1) {
          val = t2;
        } else if (3 * t3 < 2) {
          val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
        } else {
          val = t1;
        }
        rgb[i2] = val * 255;
      }
      return rgb;
    };
    convert6.hsl.hsv = function(hsl) {
      const h4 = hsl[0];
      let s5 = hsl[1] / 100;
      let l = hsl[2] / 100;
      let smin = s5;
      const lmin = Math.max(l, 0.01);
      l *= 2;
      s5 *= l <= 1 ? l : 2 - l;
      smin *= lmin <= 1 ? lmin : 2 - lmin;
      const v = (l + s5) / 2;
      const sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s5 / (l + s5);
      return [h4, sv * 100, v * 100];
    };
    convert6.hsv.rgb = function(hsv) {
      const h4 = hsv[0] / 60;
      const s5 = hsv[1] / 100;
      let v = hsv[2] / 100;
      const hi = Math.floor(h4) % 6;
      const f3 = h4 - Math.floor(h4);
      const p5 = 255 * v * (1 - s5);
      const q2 = 255 * v * (1 - s5 * f3);
      const t2 = 255 * v * (1 - s5 * (1 - f3));
      v *= 255;
      switch (hi) {
        case 0:
          return [v, t2, p5];
        case 1:
          return [q2, v, p5];
        case 2:
          return [p5, v, t2];
        case 3:
          return [p5, q2, v];
        case 4:
          return [t2, p5, v];
        case 5:
          return [v, p5, q2];
      }
    };
    convert6.hsv.hsl = function(hsv) {
      const h4 = hsv[0];
      const s5 = hsv[1] / 100;
      const v = hsv[2] / 100;
      const vmin = Math.max(v, 0.01);
      let sl;
      let l;
      l = (2 - s5) * v;
      const lmin = (2 - s5) * vmin;
      sl = s5 * vmin;
      sl /= lmin <= 1 ? lmin : 2 - lmin;
      sl = sl || 0;
      l /= 2;
      return [h4, sl * 100, l * 100];
    };
    convert6.hwb.rgb = function(hwb) {
      const h4 = hwb[0] / 360;
      let wh = hwb[1] / 100;
      let bl = hwb[2] / 100;
      const ratio = wh + bl;
      let f3;
      if (ratio > 1) {
        wh /= ratio;
        bl /= ratio;
      }
      const i2 = Math.floor(6 * h4);
      const v = 1 - bl;
      f3 = 6 * h4 - i2;
      if ((i2 & 1) !== 0) {
        f3 = 1 - f3;
      }
      const n = wh + f3 * (v - wh);
      let r2;
      let g;
      let b;
      switch (i2) {
        default:
        case 6:
        case 0:
          r2 = v;
          g = n;
          b = wh;
          break;
        case 1:
          r2 = n;
          g = v;
          b = wh;
          break;
        case 2:
          r2 = wh;
          g = v;
          b = n;
          break;
        case 3:
          r2 = wh;
          g = n;
          b = v;
          break;
        case 4:
          r2 = n;
          g = wh;
          b = v;
          break;
        case 5:
          r2 = v;
          g = wh;
          b = n;
          break;
      }
      return [r2 * 255, g * 255, b * 255];
    };
    convert6.cmyk.rgb = function(cmyk) {
      const c = cmyk[0] / 100;
      const m2 = cmyk[1] / 100;
      const y = cmyk[2] / 100;
      const k = cmyk[3] / 100;
      const r2 = 1 - Math.min(1, c * (1 - k) + k);
      const g = 1 - Math.min(1, m2 * (1 - k) + k);
      const b = 1 - Math.min(1, y * (1 - k) + k);
      return [r2 * 255, g * 255, b * 255];
    };
    convert6.xyz.rgb = function(xyz) {
      const x2 = xyz[0] / 100;
      const y = xyz[1] / 100;
      const z2 = xyz[2] / 100;
      let r2;
      let g;
      let b;
      r2 = x2 * 3.2406 + y * -1.5372 + z2 * -0.4986;
      g = x2 * -0.9689 + y * 1.8758 + z2 * 0.0415;
      b = x2 * 0.0557 + y * -0.204 + z2 * 1.057;
      r2 = r2 > 31308e-7 ? 1.055 * r2 ** (1 / 2.4) - 0.055 : r2 * 12.92;
      g = g > 31308e-7 ? 1.055 * g ** (1 / 2.4) - 0.055 : g * 12.92;
      b = b > 31308e-7 ? 1.055 * b ** (1 / 2.4) - 0.055 : b * 12.92;
      r2 = Math.min(Math.max(0, r2), 1);
      g = Math.min(Math.max(0, g), 1);
      b = Math.min(Math.max(0, b), 1);
      return [r2 * 255, g * 255, b * 255];
    };
    convert6.xyz.lab = function(xyz) {
      let x2 = xyz[0];
      let y = xyz[1];
      let z2 = xyz[2];
      x2 /= 95.047;
      y /= 100;
      z2 /= 108.883;
      x2 = x2 > 8856e-6 ? x2 ** (1 / 3) : 7.787 * x2 + 16 / 116;
      y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116;
      z2 = z2 > 8856e-6 ? z2 ** (1 / 3) : 7.787 * z2 + 16 / 116;
      const l = 116 * y - 16;
      const a2 = 500 * (x2 - y);
      const b = 200 * (y - z2);
      return [l, a2, b];
    };
    convert6.lab.xyz = function(lab) {
      const l = lab[0];
      const a2 = lab[1];
      const b = lab[2];
      let x2;
      let y;
      let z2;
      y = (l + 16) / 116;
      x2 = a2 / 500 + y;
      z2 = y - b / 200;
      const y2 = y ** 3;
      const x22 = x2 ** 3;
      const z22 = z2 ** 3;
      y = y2 > 8856e-6 ? y2 : (y - 16 / 116) / 7.787;
      x2 = x22 > 8856e-6 ? x22 : (x2 - 16 / 116) / 7.787;
      z2 = z22 > 8856e-6 ? z22 : (z2 - 16 / 116) / 7.787;
      x2 *= 95.047;
      y *= 100;
      z2 *= 108.883;
      return [x2, y, z2];
    };
    convert6.lab.lch = function(lab) {
      const l = lab[0];
      const a2 = lab[1];
      const b = lab[2];
      let h4;
      const hr2 = Math.atan2(b, a2);
      h4 = hr2 * 360 / 2 / Math.PI;
      if (h4 < 0) {
        h4 += 360;
      }
      const c = Math.sqrt(a2 * a2 + b * b);
      return [l, c, h4];
    };
    convert6.lch.lab = function(lch) {
      const l = lch[0];
      const c = lch[1];
      const h4 = lch[2];
      const hr2 = h4 / 360 * 2 * Math.PI;
      const a2 = c * Math.cos(hr2);
      const b = c * Math.sin(hr2);
      return [l, a2, b];
    };
    convert6.rgb.ansi16 = function(args, saturation = null) {
      const [r2, g, b] = args;
      let value = saturation === null ? convert6.rgb.hsv(args)[2] : saturation;
      value = Math.round(value / 50);
      if (value === 0) {
        return 30;
      }
      let ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r2 / 255));
      if (value === 2) {
        ansi += 60;
      }
      return ansi;
    };
    convert6.hsv.ansi16 = function(args) {
      return convert6.rgb.ansi16(convert6.hsv.rgb(args), args[2]);
    };
    convert6.rgb.ansi256 = function(args) {
      const r2 = args[0];
      const g = args[1];
      const b = args[2];
      if (r2 === g && g === b) {
        if (r2 < 8) {
          return 16;
        }
        if (r2 > 248) {
          return 231;
        }
        return Math.round((r2 - 8) / 247 * 24) + 232;
      }
      const ansi = 16 + 36 * Math.round(r2 / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);
      return ansi;
    };
    convert6.ansi16.rgb = function(args) {
      let color2 = args % 10;
      if (color2 === 0 || color2 === 7) {
        if (args > 50) {
          color2 += 3.5;
        }
        color2 = color2 / 10.5 * 255;
        return [color2, color2, color2];
      }
      const mult = (~~(args > 50) + 1) * 0.5;
      const r2 = (color2 & 1) * mult * 255;
      const g = (color2 >> 1 & 1) * mult * 255;
      const b = (color2 >> 2 & 1) * mult * 255;
      return [r2, g, b];
    };
    convert6.ansi256.rgb = function(args) {
      if (args >= 232) {
        const c = (args - 232) * 10 + 8;
        return [c, c, c];
      }
      args -= 16;
      let rem;
      const r2 = Math.floor(args / 36) / 5 * 255;
      const g = Math.floor((rem = args % 36) / 6) / 5 * 255;
      const b = rem % 6 / 5 * 255;
      return [r2, g, b];
    };
    convert6.rgb.hex = function(args) {
      const integer = ((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255);
      const string2 = integer.toString(16).toUpperCase();
      return "000000".substring(string2.length) + string2;
    };
    convert6.hex.rgb = function(args) {
      const match3 = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
      if (!match3) {
        return [0, 0, 0];
      }
      let colorString = match3[0];
      if (match3[0].length === 3) {
        colorString = colorString.split("").map((char) => {
          return char + char;
        }).join("");
      }
      const integer = parseInt(colorString, 16);
      const r2 = integer >> 16 & 255;
      const g = integer >> 8 & 255;
      const b = integer & 255;
      return [r2, g, b];
    };
    convert6.rgb.hcg = function(rgb) {
      const r2 = rgb[0] / 255;
      const g = rgb[1] / 255;
      const b = rgb[2] / 255;
      const max = Math.max(Math.max(r2, g), b);
      const min = Math.min(Math.min(r2, g), b);
      const chroma = max - min;
      let grayscale;
      let hue;
      if (chroma < 1) {
        grayscale = min / (1 - chroma);
      } else {
        grayscale = 0;
      }
      if (chroma <= 0) {
        hue = 0;
      } else if (max === r2) {
        hue = (g - b) / chroma % 6;
      } else if (max === g) {
        hue = 2 + (b - r2) / chroma;
      } else {
        hue = 4 + (r2 - g) / chroma;
      }
      hue /= 6;
      hue %= 1;
      return [hue * 360, chroma * 100, grayscale * 100];
    };
    convert6.hsl.hcg = function(hsl) {
      const s5 = hsl[1] / 100;
      const l = hsl[2] / 100;
      const c = l < 0.5 ? 2 * s5 * l : 2 * s5 * (1 - l);
      let f3 = 0;
      if (c < 1) {
        f3 = (l - 0.5 * c) / (1 - c);
      }
      return [hsl[0], c * 100, f3 * 100];
    };
    convert6.hsv.hcg = function(hsv) {
      const s5 = hsv[1] / 100;
      const v = hsv[2] / 100;
      const c = s5 * v;
      let f3 = 0;
      if (c < 1) {
        f3 = (v - c) / (1 - c);
      }
      return [hsv[0], c * 100, f3 * 100];
    };
    convert6.hcg.rgb = function(hcg) {
      const h4 = hcg[0] / 360;
      const c = hcg[1] / 100;
      const g = hcg[2] / 100;
      if (c === 0) {
        return [g * 255, g * 255, g * 255];
      }
      const pure = [0, 0, 0];
      const hi = h4 % 1 * 6;
      const v = hi % 1;
      const w = 1 - v;
      let mg = 0;
      switch (Math.floor(hi)) {
        case 0:
          pure[0] = 1;
          pure[1] = v;
          pure[2] = 0;
          break;
        case 1:
          pure[0] = w;
          pure[1] = 1;
          pure[2] = 0;
          break;
        case 2:
          pure[0] = 0;
          pure[1] = 1;
          pure[2] = v;
          break;
        case 3:
          pure[0] = 0;
          pure[1] = w;
          pure[2] = 1;
          break;
        case 4:
          pure[0] = v;
          pure[1] = 0;
          pure[2] = 1;
          break;
        default:
          pure[0] = 1;
          pure[1] = 0;
          pure[2] = w;
      }
      mg = (1 - c) * g;
      return [
        (c * pure[0] + mg) * 255,
        (c * pure[1] + mg) * 255,
        (c * pure[2] + mg) * 255
      ];
    };
    convert6.hcg.hsv = function(hcg) {
      const c = hcg[1] / 100;
      const g = hcg[2] / 100;
      const v = c + g * (1 - c);
      let f3 = 0;
      if (v > 0) {
        f3 = c / v;
      }
      return [hcg[0], f3 * 100, v * 100];
    };
    convert6.hcg.hsl = function(hcg) {
      const c = hcg[1] / 100;
      const g = hcg[2] / 100;
      const l = g * (1 - c) + 0.5 * c;
      let s5 = 0;
      if (l > 0 && l < 0.5) {
        s5 = c / (2 * l);
      } else if (l >= 0.5 && l < 1) {
        s5 = c / (2 * (1 - l));
      }
      return [hcg[0], s5 * 100, l * 100];
    };
    convert6.hcg.hwb = function(hcg) {
      const c = hcg[1] / 100;
      const g = hcg[2] / 100;
      const v = c + g * (1 - c);
      return [hcg[0], (v - c) * 100, (1 - v) * 100];
    };
    convert6.hwb.hcg = function(hwb) {
      const w = hwb[1] / 100;
      const b = hwb[2] / 100;
      const v = 1 - b;
      const c = v - w;
      let g = 0;
      if (c < 1) {
        g = (v - c) / (1 - c);
      }
      return [hwb[0], c * 100, g * 100];
    };
    convert6.apple.rgb = function(apple) {
      return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];
    };
    convert6.rgb.apple = function(rgb) {
      return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];
    };
    convert6.gray.rgb = function(args) {
      return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
    };
    convert6.gray.hsl = function(args) {
      return [0, 0, args[0]];
    };
    convert6.gray.hsv = convert6.gray.hsl;
    convert6.gray.hwb = function(gray) {
      return [0, 100, gray[0]];
    };
    convert6.gray.cmyk = function(gray) {
      return [0, 0, 0, gray[0]];
    };
    convert6.gray.lab = function(gray) {
      return [gray[0], 0, 0];
    };
    convert6.gray.hex = function(gray) {
      const val = Math.round(gray[0] / 100 * 255) & 255;
      const integer = (val << 16) + (val << 8) + val;
      const string2 = integer.toString(16).toUpperCase();
      return "000000".substring(string2.length) + string2;
    };
    convert6.rgb.gray = function(rgb) {
      const val = (rgb[0] + rgb[1] + rgb[2]) / 3;
      return [val / 255 * 100];
    };
  }
});

// ../../node_modules/ora/node_modules/color-convert/route.js
var require_route4 = __commonJS({
  "../../node_modules/ora/node_modules/color-convert/route.js"(exports2, module2) {
    var conversions = require_conversions3();
    function buildGraph() {
      const graph = {};
      const models = Object.keys(conversions);
      for (let len = models.length, i2 = 0; i2 < len; i2++) {
        graph[models[i2]] = {
          // http://jsperf.com/1-vs-infinity
          // micro-opt, but this is simple.
          distance: -1,
          parent: null
        };
      }
      return graph;
    }
    function deriveBFS(fromModel) {
      const graph = buildGraph();
      const queue = [fromModel];
      graph[fromModel].distance = 0;
      while (queue.length) {
        const current2 = queue.pop();
        const adjacents = Object.keys(conversions[current2]);
        for (let len = adjacents.length, i2 = 0; i2 < len; i2++) {
          const adjacent = adjacents[i2];
          const node3 = graph[adjacent];
          if (node3.distance === -1) {
            node3.distance = graph[current2].distance + 1;
            node3.parent = current2;
            queue.unshift(adjacent);
          }
        }
      }
      return graph;
    }
    function link4(from4, to) {
      return function(args) {
        return to(from4(args));
      };
    }
    function wrapConversion(toModel, graph) {
      const path45 = [graph[toModel].parent, toModel];
      let fn = conversions[graph[toModel].parent][toModel];
      let cur = graph[toModel].parent;
      while (graph[cur].parent) {
        path45.unshift(graph[cur].parent);
        fn = link4(conversions[graph[cur].parent][cur], fn);
        cur = graph[cur].parent;
      }
      fn.conversion = path45;
      return fn;
    }
    module2.exports = function(fromModel) {
      const graph = deriveBFS(fromModel);
      const conversion = {};
      const models = Object.keys(graph);
      for (let len = models.length, i2 = 0; i2 < len; i2++) {
        const toModel = models[i2];
        const node3 = graph[toModel];
        if (node3.parent === null) {
          continue;
        }
        conversion[toModel] = wrapConversion(toModel, graph);
      }
      return conversion;
    };
  }
});

// ../../node_modules/ora/node_modules/color-convert/index.js
var require_color_convert3 = __commonJS({
  "../../node_modules/ora/node_modules/color-convert/index.js"(exports2, module2) {
    var conversions = require_conversions3();
    var route = require_route4();
    var convert6 = {};
    var models = Object.keys(conversions);
    function wrapRaw(fn) {
      const wrappedFn = function(...args) {
        const arg0 = args[0];
        if (arg0 === void 0 || arg0 === null) {
          return arg0;
        }
        if (arg0.length > 1) {
          args = arg0;
        }
        return fn(args);
      };
      if ("conversion" in fn) {
        wrappedFn.conversion = fn.conversion;
      }
      return wrappedFn;
    }
    function wrapRounded(fn) {
      const wrappedFn = function(...args) {
        const arg0 = args[0];
        if (arg0 === void 0 || arg0 === null) {
          return arg0;
        }
        if (arg0.length > 1) {
          args = arg0;
        }
        const result = fn(args);
        if (typeof result === "object") {
          for (let len = result.length, i2 = 0; i2 < len; i2++) {
            result[i2] = Math.round(result[i2]);
          }
        }
        return result;
      };
      if ("conversion" in fn) {
        wrappedFn.conversion = fn.conversion;
      }
      return wrappedFn;
    }
    models.forEach((fromModel) => {
      convert6[fromModel] = {};
      Object.defineProperty(convert6[fromModel], "channels", { value: conversions[fromModel].channels });
      Object.defineProperty(convert6[fromModel], "labels", { value: conversions[fromModel].labels });
      const routes = route(fromModel);
      const routeModels = Object.keys(routes);
      routeModels.forEach((toModel) => {
        const fn = routes[toModel];
        convert6[fromModel][toModel] = wrapRounded(fn);
        convert6[fromModel][toModel].raw = wrapRaw(fn);
      });
    });
    module2.exports = convert6;
  }
});

// ../../node_modules/ora/node_modules/ansi-styles/index.js
var require_ansi_styles2 = __commonJS({
  "../../node_modules/ora/node_modules/ansi-styles/index.js"(exports2, module2) {
    "use strict";
    var wrapAnsi167 = (fn, offset) => (...args) => {
      const code7 = fn(...args);
      return `\x1B[${code7 + offset}m`;
    };
    var wrapAnsi2567 = (fn, offset) => (...args) => {
      const code7 = fn(...args);
      return `\x1B[${38 + offset};5;${code7}m`;
    };
    var wrapAnsi16m7 = (fn, offset) => (...args) => {
      const rgb = fn(...args);
      return `\x1B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
    };
    var ansi2ansi = (n) => n;
    var rgb2rgb = (r2, g, b) => [r2, g, b];
    var setLazyProperty = (object, property, get) => {
      Object.defineProperty(object, property, {
        get: () => {
          const value = get();
          Object.defineProperty(object, property, {
            value,
            enumerable: true,
            configurable: true
          });
          return value;
        },
        enumerable: true,
        configurable: true
      });
    };
    var colorConvert;
    var makeDynamicStyles = (wrap4, targetSpace, identity2, isBackground) => {
      if (colorConvert === void 0) {
        colorConvert = require_color_convert3();
      }
      const offset = isBackground ? 10 : 0;
      const styles14 = {};
      for (const [sourceSpace, suite] of Object.entries(colorConvert)) {
        const name3 = sourceSpace === "ansi16" ? "ansi" : sourceSpace;
        if (sourceSpace === targetSpace) {
          styles14[name3] = wrap4(identity2, offset);
        } else if (typeof suite === "object") {
          styles14[name3] = wrap4(suite[targetSpace], offset);
        }
      }
      return styles14;
    };
    function assembleStyles7() {
      const codes = /* @__PURE__ */ new Map();
      const styles14 = {
        modifier: {
          reset: [0, 0],
          // 21 isn't widely supported and 22 does the same thing
          bold: [1, 22],
          dim: [2, 22],
          italic: [3, 23],
          underline: [4, 24],
          inverse: [7, 27],
          hidden: [8, 28],
          strikethrough: [9, 29]
        },
        color: {
          black: [30, 39],
          red: [31, 39],
          green: [32, 39],
          yellow: [33, 39],
          blue: [34, 39],
          magenta: [35, 39],
          cyan: [36, 39],
          white: [37, 39],
          // Bright color
          blackBright: [90, 39],
          redBright: [91, 39],
          greenBright: [92, 39],
          yellowBright: [93, 39],
          blueBright: [94, 39],
          magentaBright: [95, 39],
          cyanBright: [96, 39],
          whiteBright: [97, 39]
        },
        bgColor: {
          bgBlack: [40, 49],
          bgRed: [41, 49],
          bgGreen: [42, 49],
          bgYellow: [43, 49],
          bgBlue: [44, 49],
          bgMagenta: [45, 49],
          bgCyan: [46, 49],
          bgWhite: [47, 49],
          // Bright color
          bgBlackBright: [100, 49],
          bgRedBright: [101, 49],
          bgGreenBright: [102, 49],
          bgYellowBright: [103, 49],
          bgBlueBright: [104, 49],
          bgMagentaBright: [105, 49],
          bgCyanBright: [106, 49],
          bgWhiteBright: [107, 49]
        }
      };
      styles14.color.gray = styles14.color.blackBright;
      styles14.bgColor.bgGray = styles14.bgColor.bgBlackBright;
      styles14.color.grey = styles14.color.blackBright;
      styles14.bgColor.bgGrey = styles14.bgColor.bgBlackBright;
      for (const [groupName, group3] of Object.entries(styles14)) {
        for (const [styleName, style3] of Object.entries(group3)) {
          styles14[styleName] = {
            open: `\x1B[${style3[0]}m`,
            close: `\x1B[${style3[1]}m`
          };
          group3[styleName] = styles14[styleName];
          codes.set(style3[0], style3[1]);
        }
        Object.defineProperty(styles14, groupName, {
          value: group3,
          enumerable: false
        });
      }
      Object.defineProperty(styles14, "codes", {
        value: codes,
        enumerable: false
      });
      styles14.color.close = "\x1B[39m";
      styles14.bgColor.close = "\x1B[49m";
      setLazyProperty(styles14.color, "ansi", () => makeDynamicStyles(wrapAnsi167, "ansi16", ansi2ansi, false));
      setLazyProperty(styles14.color, "ansi256", () => makeDynamicStyles(wrapAnsi2567, "ansi256", ansi2ansi, false));
      setLazyProperty(styles14.color, "ansi16m", () => makeDynamicStyles(wrapAnsi16m7, "rgb", rgb2rgb, false));
      setLazyProperty(styles14.bgColor, "ansi", () => makeDynamicStyles(wrapAnsi167, "ansi16", ansi2ansi, true));
      setLazyProperty(styles14.bgColor, "ansi256", () => makeDynamicStyles(wrapAnsi2567, "ansi256", ansi2ansi, true));
      setLazyProperty(styles14.bgColor, "ansi16m", () => makeDynamicStyles(wrapAnsi16m7, "rgb", rgb2rgb, true));
      return styles14;
    }
    Object.defineProperty(module2, "exports", {
      enumerable: true,
      get: assembleStyles7
    });
  }
});

// ../../node_modules/ora/node_modules/has-flag/index.js
var require_has_flag = __commonJS({
  "../../node_modules/ora/node_modules/has-flag/index.js"(exports2, module2) {
    "use strict";
    module2.exports = (flag, argv = process.argv) => {
      const prefix2 = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
      const position6 = argv.indexOf(prefix2 + flag);
      const terminatorPosition = argv.indexOf("--");
      return position6 !== -1 && (terminatorPosition === -1 || position6 < terminatorPosition);
    };
  }
});

// ../../node_modules/ora/node_modules/supports-color/index.js
var require_supports_color = __commonJS({
  "../../node_modules/ora/node_modules/supports-color/index.js"(exports2, module2) {
    "use strict";
    var os10 = require("os");
    var tty6 = require("tty");
    var hasFlag6 = require_has_flag();
    var { env: env6 } = process;
    var forceColor;
    if (hasFlag6("no-color") || hasFlag6("no-colors") || hasFlag6("color=false") || hasFlag6("color=never")) {
      forceColor = 0;
    } else if (hasFlag6("color") || hasFlag6("colors") || hasFlag6("color=true") || hasFlag6("color=always")) {
      forceColor = 1;
    }
    if ("FORCE_COLOR" in env6) {
      if (env6.FORCE_COLOR === "true") {
        forceColor = 1;
      } else if (env6.FORCE_COLOR === "false") {
        forceColor = 0;
      } else {
        forceColor = env6.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env6.FORCE_COLOR, 10), 3);
      }
    }
    function translateLevel6(level) {
      if (level === 0) {
        return false;
      }
      return {
        level,
        hasBasic: true,
        has256: level >= 2,
        has16m: level >= 3
      };
    }
    function supportsColor6(haveStream, streamIsTTY) {
      if (forceColor === 0) {
        return 0;
      }
      if (hasFlag6("color=16m") || hasFlag6("color=full") || hasFlag6("color=truecolor")) {
        return 3;
      }
      if (hasFlag6("color=256")) {
        return 2;
      }
      if (haveStream && !streamIsTTY && forceColor === void 0) {
        return 0;
      }
      const min = forceColor || 0;
      if (env6.TERM === "dumb") {
        return min;
      }
      if (process.platform === "win32") {
        const osRelease = os10.release().split(".");
        if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
          return Number(osRelease[2]) >= 14931 ? 3 : 2;
        }
        return 1;
      }
      if ("CI" in env6) {
        if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE"].some((sign) => sign in env6) || env6.CI_NAME === "codeship") {
          return 1;
        }
        return min;
      }
      if ("TEAMCITY_VERSION" in env6) {
        return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env6.TEAMCITY_VERSION) ? 1 : 0;
      }
      if (env6.COLORTERM === "truecolor") {
        return 3;
      }
      if ("TERM_PROGRAM" in env6) {
        const version4 = parseInt((env6.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
        switch (env6.TERM_PROGRAM) {
          case "iTerm.app":
            return version4 >= 3 ? 3 : 2;
          case "Apple_Terminal":
            return 2;
        }
      }
      if (/-256(color)?$/i.test(env6.TERM)) {
        return 2;
      }
      if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env6.TERM)) {
        return 1;
      }
      if ("COLORTERM" in env6) {
        return 1;
      }
      return min;
    }
    function getSupportLevel(stream3) {
      const level = supportsColor6(stream3, stream3 && stream3.isTTY);
      return translateLevel6(level);
    }
    module2.exports = {
      supportsColor: getSupportLevel,
      stdout: translateLevel6(supportsColor6(true, tty6.isatty(1))),
      stderr: translateLevel6(supportsColor6(true, tty6.isatty(2)))
    };
  }
});

// ../../node_modules/ora/node_modules/chalk/source/util.js
var require_util4 = __commonJS({
  "../../node_modules/ora/node_modules/chalk/source/util.js"(exports2, module2) {
    "use strict";
    var stringReplaceAll6 = (string2, substring, replacer) => {
      let index4 = string2.indexOf(substring);
      if (index4 === -1) {
        return string2;
      }
      const substringLength = substring.length;
      let endIndex = 0;
      let returnValue = "";
      do {
        returnValue += string2.substr(endIndex, index4 - endIndex) + substring + replacer;
        endIndex = index4 + substringLength;
        index4 = string2.indexOf(substring, endIndex);
      } while (index4 !== -1);
      returnValue += string2.substr(endIndex);
      return returnValue;
    };
    var stringEncaseCRLFWithFirstIndex6 = (string2, prefix2, postfix, index4) => {
      let endIndex = 0;
      let returnValue = "";
      do {
        const gotCR = string2[index4 - 1] === "\r";
        returnValue += string2.substr(endIndex, (gotCR ? index4 - 1 : index4) - endIndex) + prefix2 + (gotCR ? "\r\n" : "\n") + postfix;
        endIndex = index4 + 1;
        index4 = string2.indexOf("\n", endIndex);
      } while (index4 !== -1);
      returnValue += string2.substr(endIndex);
      return returnValue;
    };
    module2.exports = {
      stringReplaceAll: stringReplaceAll6,
      stringEncaseCRLFWithFirstIndex: stringEncaseCRLFWithFirstIndex6
    };
  }
});

// ../../node_modules/ora/node_modules/chalk/source/templates.js
var require_templates = __commonJS({
  "../../node_modules/ora/node_modules/chalk/source/templates.js"(exports2, module2) {
    "use strict";
    var TEMPLATE_REGEX2 = /(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi;
    var STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g;
    var STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/;
    var ESCAPE_REGEX2 = /\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi;
    var ESCAPES2 = /* @__PURE__ */ new Map([
      ["n", "\n"],
      ["r", "\r"],
      ["t", "	"],
      ["b", "\b"],
      ["f", "\f"],
      ["v", "\v"],
      ["0", "\0"],
      ["\\", "\\"],
      ["e", "\x1B"],
      ["a", "\x07"]
    ]);
    function unescape3(c) {
      const u3 = c[0] === "u";
      const bracket = c[1] === "{";
      if (u3 && !bracket && c.length === 5 || c[0] === "x" && c.length === 3) {
        return String.fromCharCode(parseInt(c.slice(1), 16));
      }
      if (u3 && bracket) {
        return String.fromCodePoint(parseInt(c.slice(2, -1), 16));
      }
      return ESCAPES2.get(c) || c;
    }
    function parseArguments(name3, arguments_) {
      const results = [];
      const chunks = arguments_.trim().split(/\s*,\s*/g);
      let matches4;
      for (const chunk of chunks) {
        const number2 = Number(chunk);
        if (!Number.isNaN(number2)) {
          results.push(number2);
        } else if (matches4 = chunk.match(STRING_REGEX)) {
          results.push(matches4[2].replace(ESCAPE_REGEX2, (m2, escape5, character) => escape5 ? unescape3(escape5) : character));
        } else {
          throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name3}')`);
        }
      }
      return results;
    }
    function parseStyle(style3) {
      STYLE_REGEX.lastIndex = 0;
      const results = [];
      let matches4;
      while ((matches4 = STYLE_REGEX.exec(style3)) !== null) {
        const name3 = matches4[1];
        if (matches4[2]) {
          const args = parseArguments(name3, matches4[2]);
          results.push([name3].concat(args));
        } else {
          results.push([name3]);
        }
      }
      return results;
    }
    function buildStyle(chalk6, styles14) {
      const enabled = {};
      for (const layer of styles14) {
        for (const style3 of layer.styles) {
          enabled[style3[0]] = layer.inverse ? null : style3.slice(1);
        }
      }
      let current2 = chalk6;
      for (const [styleName, styles15] of Object.entries(enabled)) {
        if (!Array.isArray(styles15)) {
          continue;
        }
        if (!(styleName in current2)) {
          throw new Error(`Unknown Chalk style: ${styleName}`);
        }
        current2 = styles15.length > 0 ? current2[styleName](...styles15) : current2[styleName];
      }
      return current2;
    }
    module2.exports = (chalk6, temporary) => {
      const styles14 = [];
      const chunks = [];
      let chunk = [];
      temporary.replace(TEMPLATE_REGEX2, (m2, escapeCharacter, inverse, style3, close2, character) => {
        if (escapeCharacter) {
          chunk.push(unescape3(escapeCharacter));
        } else if (style3) {
          const string2 = chunk.join("");
          chunk = [];
          chunks.push(styles14.length === 0 ? string2 : buildStyle(chalk6, styles14)(string2));
          styles14.push({ inverse, styles: parseStyle(style3) });
        } else if (close2) {
          if (styles14.length === 0) {
            throw new Error("Found extraneous } in Chalk template literal");
          }
          chunks.push(buildStyle(chalk6, styles14)(chunk.join("")));
          chunk = [];
          styles14.pop();
        } else {
          chunk.push(character);
        }
      });
      chunks.push(chunk.join(""));
      if (styles14.length > 0) {
        const errMessage = `Chalk template literal is missing ${styles14.length} closing bracket${styles14.length === 1 ? "" : "s"} (\`}\`)`;
        throw new Error(errMessage);
      }
      return chunks.join("");
    };
  }
});

// ../../node_modules/ora/node_modules/chalk/source/index.js
var require_source = __commonJS({
  "../../node_modules/ora/node_modules/chalk/source/index.js"(exports2, module2) {
    "use strict";
    var ansiStyles7 = require_ansi_styles2();
    var { stdout: stdoutColor6, stderr: stderrColor6 } = require_supports_color();
    var {
      stringReplaceAll: stringReplaceAll6,
      stringEncaseCRLFWithFirstIndex: stringEncaseCRLFWithFirstIndex6
    } = require_util4();
    var { isArray: isArray2 } = Array;
    var levelMapping6 = [
      "ansi",
      "ansi",
      "ansi256",
      "ansi16m"
    ];
    var styles14 = /* @__PURE__ */ Object.create(null);
    var applyOptions6 = (object, options = {}) => {
      if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
        throw new Error("The `level` option should be an integer from 0 to 3");
      }
      const colorLevel = stdoutColor6 ? stdoutColor6.level : 0;
      object.level = options.level === void 0 ? colorLevel : options.level;
    };
    var ChalkClass = class {
      constructor(options) {
        return chalkFactory6(options);
      }
    };
    var chalkFactory6 = (options) => {
      const chalk7 = {};
      applyOptions6(chalk7, options);
      chalk7.template = (...arguments_) => chalkTag(chalk7.template, ...arguments_);
      Object.setPrototypeOf(chalk7, Chalk.prototype);
      Object.setPrototypeOf(chalk7.template, chalk7);
      chalk7.template.constructor = () => {
        throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.");
      };
      chalk7.template.Instance = ChalkClass;
      return chalk7.template;
    };
    function Chalk(options) {
      return chalkFactory6(options);
    }
    for (const [styleName, style3] of Object.entries(ansiStyles7)) {
      styles14[styleName] = {
        get() {
          const builder = createBuilder6(this, createStyler6(style3.open, style3.close, this._styler), this._isEmpty);
          Object.defineProperty(this, styleName, { value: builder });
          return builder;
        }
      };
    }
    styles14.visible = {
      get() {
        const builder = createBuilder6(this, this._styler, true);
        Object.defineProperty(this, "visible", { value: builder });
        return builder;
      }
    };
    var usedModels6 = ["rgb", "hex", "keyword", "hsl", "hsv", "hwb", "ansi", "ansi256"];
    for (const model of usedModels6) {
      styles14[model] = {
        get() {
          const { level } = this;
          return function(...arguments_) {
            const styler = createStyler6(ansiStyles7.color[levelMapping6[level]][model](...arguments_), ansiStyles7.color.close, this._styler);
            return createBuilder6(this, styler, this._isEmpty);
          };
        }
      };
    }
    for (const model of usedModels6) {
      const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
      styles14[bgModel] = {
        get() {
          const { level } = this;
          return function(...arguments_) {
            const styler = createStyler6(ansiStyles7.bgColor[levelMapping6[level]][model](...arguments_), ansiStyles7.bgColor.close, this._styler);
            return createBuilder6(this, styler, this._isEmpty);
          };
        }
      };
    }
    var proto9 = Object.defineProperties(() => {
    }, {
      ...styles14,
      level: {
        enumerable: true,
        get() {
          return this._generator.level;
        },
        set(level) {
          this._generator.level = level;
        }
      }
    });
    var createStyler6 = (open2, close2, parent2) => {
      let openAll;
      let closeAll;
      if (parent2 === void 0) {
        openAll = open2;
        closeAll = close2;
      } else {
        openAll = parent2.openAll + open2;
        closeAll = close2 + parent2.closeAll;
      }
      return {
        open: open2,
        close: close2,
        openAll,
        closeAll,
        parent: parent2
      };
    };
    var createBuilder6 = (self2, _styler, _isEmpty) => {
      const builder = (...arguments_) => {
        if (isArray2(arguments_[0]) && isArray2(arguments_[0].raw)) {
          return applyStyle6(builder, chalkTag(builder, ...arguments_));
        }
        return applyStyle6(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
      };
      Object.setPrototypeOf(builder, proto9);
      builder._generator = self2;
      builder._styler = _styler;
      builder._isEmpty = _isEmpty;
      return builder;
    };
    var applyStyle6 = (self2, string2) => {
      if (self2.level <= 0 || !string2) {
        return self2._isEmpty ? "" : string2;
      }
      let styler = self2._styler;
      if (styler === void 0) {
        return string2;
      }
      const { openAll, closeAll } = styler;
      if (string2.indexOf("\x1B") !== -1) {
        while (styler !== void 0) {
          string2 = stringReplaceAll6(string2, styler.close, styler.open);
          styler = styler.parent;
        }
      }
      const lfIndex = string2.indexOf("\n");
      if (lfIndex !== -1) {
        string2 = stringEncaseCRLFWithFirstIndex6(string2, closeAll, openAll, lfIndex);
      }
      return openAll + string2 + closeAll;
    };
    var template;
    var chalkTag = (chalk7, ...strings) => {
      const [firstString] = strings;
      if (!isArray2(firstString) || !isArray2(firstString.raw)) {
        return strings.join(" ");
      }
      const arguments_ = strings.slice(1);
      const parts = [firstString.raw[0]];
      for (let i2 = 1; i2 < firstString.length; i2++) {
        parts.push(
          String(arguments_[i2 - 1]).replace(/[{}\\]/g, "\\$&"),
          String(firstString.raw[i2])
        );
      }
      if (template === void 0) {
        template = require_templates();
      }
      return template(chalk7, parts.join(""));
    };
    Object.defineProperties(Chalk.prototype, styles14);
    var chalk6 = Chalk();
    chalk6.supportsColor = stdoutColor6;
    chalk6.stderr = Chalk({ level: stderrColor6 ? stderrColor6.level : 0 });
    chalk6.stderr.supportsColor = stderrColor6;
    module2.exports = chalk6;
  }
});

// ../../node_modules/mimic-fn/index.js
var require_mimic_fn = __commonJS({
  "../../node_modules/mimic-fn/index.js"(exports2, module2) {
    "use strict";
    var mimicFn = (to, from4) => {
      for (const prop of Reflect.ownKeys(from4)) {
        Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from4, prop));
      }
      return to;
    };
    module2.exports = mimicFn;
    module2.exports.default = mimicFn;
  }
});

// ../../node_modules/onetime/index.js
var require_onetime = __commonJS({
  "../../node_modules/onetime/index.js"(exports2, module2) {
    "use strict";
    var mimicFn = require_mimic_fn();
    var calledFunctions = /* @__PURE__ */ new WeakMap();
    var onetime = (function_, options = {}) => {
      if (typeof function_ !== "function") {
        throw new TypeError("Expected a function");
      }
      let returnValue;
      let callCount = 0;
      const functionName = function_.displayName || function_.name || "<anonymous>";
      const onetime2 = function(...arguments_) {
        calledFunctions.set(onetime2, ++callCount);
        if (callCount === 1) {
          returnValue = function_.apply(this, arguments_);
          function_ = null;
        } else if (options.throw === true) {
          throw new Error(`Function \`${functionName}\` can only be called once`);
        }
        return returnValue;
      };
      mimicFn(onetime2, function_);
      calledFunctions.set(onetime2, callCount);
      return onetime2;
    };
    module2.exports = onetime;
    module2.exports.default = onetime;
    module2.exports.callCount = (function_) => {
      if (!calledFunctions.has(function_)) {
        throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`);
      }
      return calledFunctions.get(function_);
    };
  }
});

// ../../node_modules/restore-cursor/node_modules/signal-exit/signals.js
var require_signals = __commonJS({
  "../../node_modules/restore-cursor/node_modules/signal-exit/signals.js"(exports2, module2) {
    module2.exports = [
      "SIGABRT",
      "SIGALRM",
      "SIGHUP",
      "SIGINT",
      "SIGTERM"
    ];
    if (process.platform !== "win32") {
      module2.exports.push(
        "SIGVTALRM",
        "SIGXCPU",
        "SIGXFSZ",
        "SIGUSR2",
        "SIGTRAP",
        "SIGSYS",
        "SIGQUIT",
        "SIGIOT"
        // should detect profiler and enable/disable accordingly.
        // see #21
        // 'SIGPROF'
      );
    }
    if (process.platform === "linux") {
      module2.exports.push(
        "SIGIO",
        "SIGPOLL",
        "SIGPWR",
        "SIGSTKFLT",
        "SIGUNUSED"
      );
    }
  }
});

// ../../node_modules/restore-cursor/node_modules/signal-exit/index.js
var require_signal_exit = __commonJS({
  "../../node_modules/restore-cursor/node_modules/signal-exit/index.js"(exports2, module2) {
    var process11 = global.process;
    var processOk = function(process12) {
      return process12 && typeof process12 === "object" && typeof process12.removeListener === "function" && typeof process12.emit === "function" && typeof process12.reallyExit === "function" && typeof process12.listeners === "function" && typeof process12.kill === "function" && typeof process12.pid === "number" && typeof process12.on === "function";
    };
    if (!processOk(process11)) {
      module2.exports = function() {
        return function() {
        };
      };
    } else {
      assert8 = require("assert");
      signals = require_signals();
      isWin = /^win/i.test(process11.platform);
      EE = require("events");
      if (typeof EE !== "function") {
        EE = EE.EventEmitter;
      }
      if (process11.__signal_exit_emitter__) {
        emitter = process11.__signal_exit_emitter__;
      } else {
        emitter = process11.__signal_exit_emitter__ = new EE();
        emitter.count = 0;
        emitter.emitted = {};
      }
      if (!emitter.infinite) {
        emitter.setMaxListeners(Infinity);
        emitter.infinite = true;
      }
      module2.exports = function(cb, opts) {
        if (!processOk(global.process)) {
          return function() {
          };
        }
        assert8.equal(typeof cb, "function", "a callback must be provided for exit handler");
        if (loaded === false) {
          load2();
        }
        var ev = "exit";
        if (opts && opts.alwaysLast) {
          ev = "afterexit";
        }
        var remove3 = function() {
          emitter.removeListener(ev, cb);
          if (emitter.listeners("exit").length === 0 && emitter.listeners("afterexit").length === 0) {
            unload();
          }
        };
        emitter.on(ev, cb);
        return remove3;
      };
      unload = function unload2() {
        if (!loaded || !processOk(global.process)) {
          return;
        }
        loaded = false;
        signals.forEach(function(sig) {
          try {
            process11.removeListener(sig, sigListeners[sig]);
          } catch (er) {
          }
        });
        process11.emit = originalProcessEmit;
        process11.reallyExit = originalProcessReallyExit;
        emitter.count -= 1;
      };
      module2.exports.unload = unload;
      emit = function emit2(event, code7, signal) {
        if (emitter.emitted[event]) {
          return;
        }
        emitter.emitted[event] = true;
        emitter.emit(event, code7, signal);
      };
      sigListeners = {};
      signals.forEach(function(sig) {
        sigListeners[sig] = function listener2() {
          if (!processOk(global.process)) {
            return;
          }
          var listeners = process11.listeners(sig);
          if (listeners.length === emitter.count) {
            unload();
            emit("exit", null, sig);
            emit("afterexit", null, sig);
            if (isWin && sig === "SIGHUP") {
              sig = "SIGINT";
            }
            process11.kill(process11.pid, sig);
          }
        };
      });
      module2.exports.signals = function() {
        return signals;
      };
      loaded = false;
      load2 = function load3() {
        if (loaded || !processOk(global.process)) {
          return;
        }
        loaded = true;
        emitter.count += 1;
        signals = signals.filter(function(sig) {
          try {
            process11.on(sig, sigListeners[sig]);
            return true;
          } catch (er) {
            return false;
          }
        });
        process11.emit = processEmit;
        process11.reallyExit = processReallyExit;
      };
      module2.exports.load = load2;
      originalProcessReallyExit = process11.reallyExit;
      processReallyExit = function processReallyExit2(code7) {
        if (!processOk(global.process)) {
          return;
        }
        process11.exitCode = code7 || /* istanbul ignore next */
        0;
        emit("exit", process11.exitCode, null);
        emit("afterexit", process11.exitCode, null);
        originalProcessReallyExit.call(process11, process11.exitCode);
      };
      originalProcessEmit = process11.emit;
      processEmit = function processEmit2(ev, arg2) {
        if (ev === "exit" && processOk(global.process)) {
          if (arg2 !== void 0) {
            process11.exitCode = arg2;
          }
          var ret = originalProcessEmit.apply(this, arguments);
          emit("exit", process11.exitCode, null);
          emit("afterexit", process11.exitCode, null);
          return ret;
        } else {
          return originalProcessEmit.apply(this, arguments);
        }
      };
    }
    var assert8;
    var signals;
    var isWin;
    var EE;
    var emitter;
    var unload;
    var emit;
    var sigListeners;
    var loaded;
    var load2;
    var originalProcessReallyExit;
    var processReallyExit;
    var originalProcessEmit;
    var processEmit;
  }
});

// ../../node_modules/restore-cursor/index.js
var require_restore_cursor = __commonJS({
  "../../node_modules/restore-cursor/index.js"(exports2, module2) {
    "use strict";
    var onetime = require_onetime();
    var signalExit = require_signal_exit();
    module2.exports = onetime(() => {
      signalExit(() => {
        process.stderr.write("\x1B[?25h");
      }, { alwaysLast: true });
    });
  }
});

// ../../node_modules/cli-cursor/index.js
var require_cli_cursor = __commonJS({
  "../../node_modules/cli-cursor/index.js"(exports2) {
    "use strict";
    var restoreCursor = require_restore_cursor();
    var isHidden = false;
    exports2.show = (writableStream = process.stderr) => {
      if (!writableStream.isTTY) {
        return;
      }
      isHidden = false;
      writableStream.write("\x1B[?25h");
    };
    exports2.hide = (writableStream = process.stderr) => {
      if (!writableStream.isTTY) {
        return;
      }
      restoreCursor();
      isHidden = true;
      writableStream.write("\x1B[?25l");
    };
    exports2.toggle = (force, writableStream) => {
      if (force !== void 0) {
        isHidden = force;
      }
      if (isHidden) {
        exports2.show(writableStream);
      } else {
        exports2.hide(writableStream);
      }
    };
  }
});

// ../../node_modules/cli-spinners/spinners.json
var require_spinners = __commonJS({
  "../../node_modules/cli-spinners/spinners.json"(exports2, module2) {
    module2.exports = {
      dots: {
        interval: 80,
        frames: [
          "\u280B",
          "\u2819",
          "\u2839",
          "\u2838",
          "\u283C",
          "\u2834",
          "\u2826",
          "\u2827",
          "\u2807",
          "\u280F"
        ]
      },
      dots2: {
        interval: 80,
        frames: [
          "\u28FE",
          "\u28FD",
          "\u28FB",
          "\u28BF",
          "\u287F",
          "\u28DF",
          "\u28EF",
          "\u28F7"
        ]
      },
      dots3: {
        interval: 80,
        frames: [
          "\u280B",
          "\u2819",
          "\u281A",
          "\u281E",
          "\u2816",
          "\u2826",
          "\u2834",
          "\u2832",
          "\u2833",
          "\u2813"
        ]
      },
      dots4: {
        interval: 80,
        frames: [
          "\u2804",
          "\u2806",
          "\u2807",
          "\u280B",
          "\u2819",
          "\u2838",
          "\u2830",
          "\u2820",
          "\u2830",
          "\u2838",
          "\u2819",
          "\u280B",
          "\u2807",
          "\u2806"
        ]
      },
      dots5: {
        interval: 80,
        frames: [
          "\u280B",
          "\u2819",
          "\u281A",
          "\u2812",
          "\u2802",
          "\u2802",
          "\u2812",
          "\u2832",
          "\u2834",
          "\u2826",
          "\u2816",
          "\u2812",
          "\u2810",
          "\u2810",
          "\u2812",
          "\u2813",
          "\u280B"
        ]
      },
      dots6: {
        interval: 80,
        frames: [
          "\u2801",
          "\u2809",
          "\u2819",
          "\u281A",
          "\u2812",
          "\u2802",
          "\u2802",
          "\u2812",
          "\u2832",
          "\u2834",
          "\u2824",
          "\u2804",
          "\u2804",
          "\u2824",
          "\u2834",
          "\u2832",
          "\u2812",
          "\u2802",
          "\u2802",
          "\u2812",
          "\u281A",
          "\u2819",
          "\u2809",
          "\u2801"
        ]
      },
      dots7: {
        interval: 80,
        frames: [
          "\u2808",
          "\u2809",
          "\u280B",
          "\u2813",
          "\u2812",
          "\u2810",
          "\u2810",
          "\u2812",
          "\u2816",
          "\u2826",
          "\u2824",
          "\u2820",
          "\u2820",
          "\u2824",
          "\u2826",
          "\u2816",
          "\u2812",
          "\u2810",
          "\u2810",
          "\u2812",
          "\u2813",
          "\u280B",
          "\u2809",
          "\u2808"
        ]
      },
      dots8: {
        interval: 80,
        frames: [
          "\u2801",
          "\u2801",
          "\u2809",
          "\u2819",
          "\u281A",
          "\u2812",
          "\u2802",
          "\u2802",
          "\u2812",
          "\u2832",
          "\u2834",
          "\u2824",
          "\u2804",
          "\u2804",
          "\u2824",
          "\u2820",
          "\u2820",
          "\u2824",
          "\u2826",
          "\u2816",
          "\u2812",
          "\u2810",
          "\u2810",
          "\u2812",
          "\u2813",
          "\u280B",
          "\u2809",
          "\u2808",
          "\u2808"
        ]
      },
      dots9: {
        interval: 80,
        frames: [
          "\u28B9",
          "\u28BA",
          "\u28BC",
          "\u28F8",
          "\u28C7",
          "\u2867",
          "\u2857",
          "\u284F"
        ]
      },
      dots10: {
        interval: 80,
        frames: [
          "\u2884",
          "\u2882",
          "\u2881",
          "\u2841",
          "\u2848",
          "\u2850",
          "\u2860"
        ]
      },
      dots11: {
        interval: 100,
        frames: [
          "\u2801",
          "\u2802",
          "\u2804",
          "\u2840",
          "\u2880",
          "\u2820",
          "\u2810",
          "\u2808"
        ]
      },
      dots12: {
        interval: 80,
        frames: [
          "\u2880\u2800",
          "\u2840\u2800",
          "\u2804\u2800",
          "\u2882\u2800",
          "\u2842\u2800",
          "\u2805\u2800",
          "\u2883\u2800",
          "\u2843\u2800",
          "\u280D\u2800",
          "\u288B\u2800",
          "\u284B\u2800",
          "\u280D\u2801",
          "\u288B\u2801",
          "\u284B\u2801",
          "\u280D\u2809",
          "\u280B\u2809",
          "\u280B\u2809",
          "\u2809\u2819",
          "\u2809\u2819",
          "\u2809\u2829",
          "\u2808\u2899",
          "\u2808\u2859",
          "\u2888\u2829",
          "\u2840\u2899",
          "\u2804\u2859",
          "\u2882\u2829",
          "\u2842\u2898",
          "\u2805\u2858",
          "\u2883\u2828",
          "\u2843\u2890",
          "\u280D\u2850",
          "\u288B\u2820",
          "\u284B\u2880",
          "\u280D\u2841",
          "\u288B\u2801",
          "\u284B\u2801",
          "\u280D\u2809",
          "\u280B\u2809",
          "\u280B\u2809",
          "\u2809\u2819",
          "\u2809\u2819",
          "\u2809\u2829",
          "\u2808\u2899",
          "\u2808\u2859",
          "\u2808\u2829",
          "\u2800\u2899",
          "\u2800\u2859",
          "\u2800\u2829",
          "\u2800\u2898",
          "\u2800\u2858",
          "\u2800\u2828",
          "\u2800\u2890",
          "\u2800\u2850",
          "\u2800\u2820",
          "\u2800\u2880",
          "\u2800\u2840"
        ]
      },
      dots13: {
        interval: 80,
        frames: [
          "\u28FC",
          "\u28F9",
          "\u28BB",
          "\u283F",
          "\u285F",
          "\u28CF",
          "\u28E7",
          "\u28F6"
        ]
      },
      dots8Bit: {
        interval: 80,
        frames: [
          "\u2800",
          "\u2801",
          "\u2802",
          "\u2803",
          "\u2804",
          "\u2805",
          "\u2806",
          "\u2807",
          "\u2840",
          "\u2841",
          "\u2842",
          "\u2843",
          "\u2844",
          "\u2845",
          "\u2846",
          "\u2847",
          "\u2808",
          "\u2809",
          "\u280A",
          "\u280B",
          "\u280C",
          "\u280D",
          "\u280E",
          "\u280F",
          "\u2848",
          "\u2849",
          "\u284A",
          "\u284B",
          "\u284C",
          "\u284D",
          "\u284E",
          "\u284F",
          "\u2810",
          "\u2811",
          "\u2812",
          "\u2813",
          "\u2814",
          "\u2815",
          "\u2816",
          "\u2817",
          "\u2850",
          "\u2851",
          "\u2852",
          "\u2853",
          "\u2854",
          "\u2855",
          "\u2856",
          "\u2857",
          "\u2818",
          "\u2819",
          "\u281A",
          "\u281B",
          "\u281C",
          "\u281D",
          "\u281E",
          "\u281F",
          "\u2858",
          "\u2859",
          "\u285A",
          "\u285B",
          "\u285C",
          "\u285D",
          "\u285E",
          "\u285F",
          "\u2820",
          "\u2821",
          "\u2822",
          "\u2823",
          "\u2824",
          "\u2825",
          "\u2826",
          "\u2827",
          "\u2860",
          "\u2861",
          "\u2862",
          "\u2863",
          "\u2864",
          "\u2865",
          "\u2866",
          "\u2867",
          "\u2828",
          "\u2829",
          "\u282A",
          "\u282B",
          "\u282C",
          "\u282D",
          "\u282E",
          "\u282F",
          "\u2868",
          "\u2869",
          "\u286A",
          "\u286B",
          "\u286C",
          "\u286D",
          "\u286E",
          "\u286F",
          "\u2830",
          "\u2831",
          "\u2832",
          "\u2833",
          "\u2834",
          "\u2835",
          "\u2836",
          "\u2837",
          "\u2870",
          "\u2871",
          "\u2872",
          "\u2873",
          "\u2874",
          "\u2875",
          "\u2876",
          "\u2877",
          "\u2838",
          "\u2839",
          "\u283A",
          "\u283B",
          "\u283C",
          "\u283D",
          "\u283E",
          "\u283F",
          "\u2878",
          "\u2879",
          "\u287A",
          "\u287B",
          "\u287C",
          "\u287D",
          "\u287E",
          "\u287F",
          "\u2880",
          "\u2881",
          "\u2882",
          "\u2883",
          "\u2884",
          "\u2885",
          "\u2886",
          "\u2887",
          "\u28C0",
          "\u28C1",
          "\u28C2",
          "\u28C3",
          "\u28C4",
          "\u28C5",
          "\u28C6",
          "\u28C7",
          "\u2888",
          "\u2889",
          "\u288A",
          "\u288B",
          "\u288C",
          "\u288D",
          "\u288E",
          "\u288F",
          "\u28C8",
          "\u28C9",
          "\u28CA",
          "\u28CB",
          "\u28CC",
          "\u28CD",
          "\u28CE",
          "\u28CF",
          "\u2890",
          "\u2891",
          "\u2892",
          "\u2893",
          "\u2894",
          "\u2895",
          "\u2896",
          "\u2897",
          "\u28D0",
          "\u28D1",
          "\u28D2",
          "\u28D3",
          "\u28D4",
          "\u28D5",
          "\u28D6",
          "\u28D7",
          "\u2898",
          "\u2899",
          "\u289A",
          "\u289B",
          "\u289C",
          "\u289D",
          "\u289E",
          "\u289F",
          "\u28D8",
          "\u28D9",
          "\u28DA",
          "\u28DB",
          "\u28DC",
          "\u28DD",
          "\u28DE",
          "\u28DF",
          "\u28A0",
          "\u28A1",
          "\u28A2",
          "\u28A3",
          "\u28A4",
          "\u28A5",
          "\u28A6",
          "\u28A7",
          "\u28E0",
          "\u28E1",
          "\u28E2",
          "\u28E3",
          "\u28E4",
          "\u28E5",
          "\u28E6",
          "\u28E7",
          "\u28A8",
          "\u28A9",
          "\u28AA",
          "\u28AB",
          "\u28AC",
          "\u28AD",
          "\u28AE",
          "\u28AF",
          "\u28E8",
          "\u28E9",
          "\u28EA",
          "\u28EB",
          "\u28EC",
          "\u28ED",
          "\u28EE",
          "\u28EF",
          "\u28B0",
          "\u28B1",
          "\u28B2",
          "\u28B3",
          "\u28B4",
          "\u28B5",
          "\u28B6",
          "\u28B7",
          "\u28F0",
          "\u28F1",
          "\u28F2",
          "\u28F3",
          "\u28F4",
          "\u28F5",
          "\u28F6",
          "\u28F7",
          "\u28B8",
          "\u28B9",
          "\u28BA",
          "\u28BB",
          "\u28BC",
          "\u28BD",
          "\u28BE",
          "\u28BF",
          "\u28F8",
          "\u28F9",
          "\u28FA",
          "\u28FB",
          "\u28FC",
          "\u28FD",
          "\u28FE",
          "\u28FF"
        ]
      },
      sand: {
        interval: 80,
        frames: [
          "\u2801",
          "\u2802",
          "\u2804",
          "\u2840",
          "\u2848",
          "\u2850",
          "\u2860",
          "\u28C0",
          "\u28C1",
          "\u28C2",
          "\u28C4",
          "\u28CC",
          "\u28D4",
          "\u28E4",
          "\u28E5",
          "\u28E6",
          "\u28EE",
          "\u28F6",
          "\u28F7",
          "\u28FF",
          "\u287F",
          "\u283F",
          "\u289F",
          "\u281F",
          "\u285B",
          "\u281B",
          "\u282B",
          "\u288B",
          "\u280B",
          "\u280D",
          "\u2849",
          "\u2809",
          "\u2811",
          "\u2821",
          "\u2881"
        ]
      },
      line: {
        interval: 130,
        frames: [
          "-",
          "\\",
          "|",
          "/"
        ]
      },
      line2: {
        interval: 100,
        frames: [
          "\u2802",
          "-",
          "\u2013",
          "\u2014",
          "\u2013",
          "-"
        ]
      },
      pipe: {
        interval: 100,
        frames: [
          "\u2524",
          "\u2518",
          "\u2534",
          "\u2514",
          "\u251C",
          "\u250C",
          "\u252C",
          "\u2510"
        ]
      },
      simpleDots: {
        interval: 400,
        frames: [
          ".  ",
          ".. ",
          "...",
          "   "
        ]
      },
      simpleDotsScrolling: {
        interval: 200,
        frames: [
          ".  ",
          ".. ",
          "...",
          " ..",
          "  .",
          "   "
        ]
      },
      star: {
        interval: 70,
        frames: [
          "\u2736",
          "\u2738",
          "\u2739",
          "\u273A",
          "\u2739",
          "\u2737"
        ]
      },
      star2: {
        interval: 80,
        frames: [
          "+",
          "x",
          "*"
        ]
      },
      flip: {
        interval: 70,
        frames: [
          "_",
          "_",
          "_",
          "-",
          "`",
          "`",
          "'",
          "\xB4",
          "-",
          "_",
          "_",
          "_"
        ]
      },
      hamburger: {
        interval: 100,
        frames: [
          "\u2631",
          "\u2632",
          "\u2634"
        ]
      },
      growVertical: {
        interval: 120,
        frames: [
          "\u2581",
          "\u2583",
          "\u2584",
          "\u2585",
          "\u2586",
          "\u2587",
          "\u2586",
          "\u2585",
          "\u2584",
          "\u2583"
        ]
      },
      growHorizontal: {
        interval: 120,
        frames: [
          "\u258F",
          "\u258E",
          "\u258D",
          "\u258C",
          "\u258B",
          "\u258A",
          "\u2589",
          "\u258A",
          "\u258B",
          "\u258C",
          "\u258D",
          "\u258E"
        ]
      },
      balloon: {
        interval: 140,
        frames: [
          " ",
          ".",
          "o",
          "O",
          "@",
          "*",
          " "
        ]
      },
      balloon2: {
        interval: 120,
        frames: [
          ".",
          "o",
          "O",
          "\xB0",
          "O",
          "o",
          "."
        ]
      },
      noise: {
        interval: 100,
        frames: [
          "\u2593",
          "\u2592",
          "\u2591"
        ]
      },
      bounce: {
        interval: 120,
        frames: [
          "\u2801",
          "\u2802",
          "\u2804",
          "\u2802"
        ]
      },
      boxBounce: {
        interval: 120,
        frames: [
          "\u2596",
          "\u2598",
          "\u259D",
          "\u2597"
        ]
      },
      boxBounce2: {
        interval: 100,
        frames: [
          "\u258C",
          "\u2580",
          "\u2590",
          "\u2584"
        ]
      },
      triangle: {
        interval: 50,
        frames: [
          "\u25E2",
          "\u25E3",
          "\u25E4",
          "\u25E5"
        ]
      },
      binary: {
        interval: 80,
        frames: [
          "010010",
          "001100",
          "100101",
          "111010",
          "111101",
          "010111",
          "101011",
          "111000",
          "110011",
          "110101"
        ]
      },
      arc: {
        interval: 100,
        frames: [
          "\u25DC",
          "\u25E0",
          "\u25DD",
          "\u25DE",
          "\u25E1",
          "\u25DF"
        ]
      },
      circle: {
        interval: 120,
        frames: [
          "\u25E1",
          "\u2299",
          "\u25E0"
        ]
      },
      squareCorners: {
        interval: 180,
        frames: [
          "\u25F0",
          "\u25F3",
          "\u25F2",
          "\u25F1"
        ]
      },
      circleQuarters: {
        interval: 120,
        frames: [
          "\u25F4",
          "\u25F7",
          "\u25F6",
          "\u25F5"
        ]
      },
      circleHalves: {
        interval: 50,
        frames: [
          "\u25D0",
          "\u25D3",
          "\u25D1",
          "\u25D2"
        ]
      },
      squish: {
        interval: 100,
        frames: [
          "\u256B",
          "\u256A"
        ]
      },
      toggle: {
        interval: 250,
        frames: [
          "\u22B6",
          "\u22B7"
        ]
      },
      toggle2: {
        interval: 80,
        frames: [
          "\u25AB",
          "\u25AA"
        ]
      },
      toggle3: {
        interval: 120,
        frames: [
          "\u25A1",
          "\u25A0"
        ]
      },
      toggle4: {
        interval: 100,
        frames: [
          "\u25A0",
          "\u25A1",
          "\u25AA",
          "\u25AB"
        ]
      },
      toggle5: {
        interval: 100,
        frames: [
          "\u25AE",
          "\u25AF"
        ]
      },
      toggle6: {
        interval: 300,
        frames: [
          "\u101D",
          "\u1040"
        ]
      },
      toggle7: {
        interval: 80,
        frames: [
          "\u29BE",
          "\u29BF"
        ]
      },
      toggle8: {
        interval: 100,
        frames: [
          "\u25CD",
          "\u25CC"
        ]
      },
      toggle9: {
        interval: 100,
        frames: [
          "\u25C9",
          "\u25CE"
        ]
      },
      toggle10: {
        interval: 100,
        frames: [
          "\u3282",
          "\u3280",
          "\u3281"
        ]
      },
      toggle11: {
        interval: 50,
        frames: [
          "\u29C7",
          "\u29C6"
        ]
      },
      toggle12: {
        interval: 120,
        frames: [
          "\u2617",
          "\u2616"
        ]
      },
      toggle13: {
        interval: 80,
        frames: [
          "=",
          "*",
          "-"
        ]
      },
      arrow: {
        interval: 100,
        frames: [
          "\u2190",
          "\u2196",
          "\u2191",
          "\u2197",
          "\u2192",
          "\u2198",
          "\u2193",
          "\u2199"
        ]
      },
      arrow2: {
        interval: 80,
        frames: [
          "\u2B06\uFE0F ",
          "\u2197\uFE0F ",
          "\u27A1\uFE0F ",
          "\u2198\uFE0F ",
          "\u2B07\uFE0F ",
          "\u2199\uFE0F ",
          "\u2B05\uFE0F ",
          "\u2196\uFE0F "
        ]
      },
      arrow3: {
        interval: 120,
        frames: [
          "\u25B9\u25B9\u25B9\u25B9\u25B9",
          "\u25B8\u25B9\u25B9\u25B9\u25B9",
          "\u25B9\u25B8\u25B9\u25B9\u25B9",
          "\u25B9\u25B9\u25B8\u25B9\u25B9",
          "\u25B9\u25B9\u25B9\u25B8\u25B9",
          "\u25B9\u25B9\u25B9\u25B9\u25B8"
        ]
      },
      bouncingBar: {
        interval: 80,
        frames: [
          "[    ]",
          "[=   ]",
          "[==  ]",
          "[=== ]",
          "[ ===]",
          "[  ==]",
          "[   =]",
          "[    ]",
          "[   =]",
          "[  ==]",
          "[ ===]",
          "[====]",
          "[=== ]",
          "[==  ]",
          "[=   ]"
        ]
      },
      bouncingBall: {
        interval: 80,
        frames: [
          "( \u25CF    )",
          "(  \u25CF   )",
          "(   \u25CF  )",
          "(    \u25CF )",
          "(     \u25CF)",
          "(    \u25CF )",
          "(   \u25CF  )",
          "(  \u25CF   )",
          "( \u25CF    )",
          "(\u25CF     )"
        ]
      },
      smiley: {
        interval: 200,
        frames: [
          "\u{1F604} ",
          "\u{1F61D} "
        ]
      },
      monkey: {
        interval: 300,
        frames: [
          "\u{1F648} ",
          "\u{1F648} ",
          "\u{1F649} ",
          "\u{1F64A} "
        ]
      },
      hearts: {
        interval: 100,
        frames: [
          "\u{1F49B} ",
          "\u{1F499} ",
          "\u{1F49C} ",
          "\u{1F49A} ",
          "\u2764\uFE0F "
        ]
      },
      clock: {
        interval: 100,
        frames: [
          "\u{1F55B} ",
          "\u{1F550} ",
          "\u{1F551} ",
          "\u{1F552} ",
          "\u{1F553} ",
          "\u{1F554} ",
          "\u{1F555} ",
          "\u{1F556} ",
          "\u{1F557} ",
          "\u{1F558} ",
          "\u{1F559} ",
          "\u{1F55A} "
        ]
      },
      earth: {
        interval: 180,
        frames: [
          "\u{1F30D} ",
          "\u{1F30E} ",
          "\u{1F30F} "
        ]
      },
      material: {
        interval: 17,
        frames: [
          "\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
          "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
          "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
          "\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581",
          "\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
          "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
          "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
          "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
          "\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
          "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
          "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
          "\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
          "\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
          "\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
          "\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
          "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
          "\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
          "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581"
        ]
      },
      moon: {
        interval: 80,
        frames: [
          "\u{1F311} ",
          "\u{1F312} ",
          "\u{1F313} ",
          "\u{1F314} ",
          "\u{1F315} ",
          "\u{1F316} ",
          "\u{1F317} ",
          "\u{1F318} "
        ]
      },
      runner: {
        interval: 140,
        frames: [
          "\u{1F6B6} ",
          "\u{1F3C3} "
        ]
      },
      pong: {
        interval: 80,
        frames: [
          "\u2590\u2802       \u258C",
          "\u2590\u2808       \u258C",
          "\u2590 \u2802      \u258C",
          "\u2590 \u2820      \u258C",
          "\u2590  \u2840     \u258C",
          "\u2590  \u2820     \u258C",
          "\u2590   \u2802    \u258C",
          "\u2590   \u2808    \u258C",
          "\u2590    \u2802   \u258C",
          "\u2590    \u2820   \u258C",
          "\u2590     \u2840  \u258C",
          "\u2590     \u2820  \u258C",
          "\u2590      \u2802 \u258C",
          "\u2590      \u2808 \u258C",
          "\u2590       \u2802\u258C",
          "\u2590       \u2820\u258C",
          "\u2590       \u2840\u258C",
          "\u2590      \u2820 \u258C",
          "\u2590      \u2802 \u258C",
          "\u2590     \u2808  \u258C",
          "\u2590     \u2802  \u258C",
          "\u2590    \u2820   \u258C",
          "\u2590    \u2840   \u258C",
          "\u2590   \u2820    \u258C",
          "\u2590   \u2802    \u258C",
          "\u2590  \u2808     \u258C",
          "\u2590  \u2802     \u258C",
          "\u2590 \u2820      \u258C",
          "\u2590 \u2840      \u258C",
          "\u2590\u2820       \u258C"
        ]
      },
      shark: {
        interval: 120,
        frames: [
          "\u2590|\\____________\u258C",
          "\u2590_|\\___________\u258C",
          "\u2590__|\\__________\u258C",
          "\u2590___|\\_________\u258C",
          "\u2590____|\\________\u258C",
          "\u2590_____|\\_______\u258C",
          "\u2590______|\\______\u258C",
          "\u2590_______|\\_____\u258C",
          "\u2590________|\\____\u258C",
          "\u2590_________|\\___\u258C",
          "\u2590__________|\\__\u258C",
          "\u2590___________|\\_\u258C",
          "\u2590____________|\\\u258C",
          "\u2590____________/|\u258C",
          "\u2590___________/|_\u258C",
          "\u2590__________/|__\u258C",
          "\u2590_________/|___\u258C",
          "\u2590________/|____\u258C",
          "\u2590_______/|_____\u258C",
          "\u2590______/|______\u258C",
          "\u2590_____/|_______\u258C",
          "\u2590____/|________\u258C",
          "\u2590___/|_________\u258C",
          "\u2590__/|__________\u258C",
          "\u2590_/|___________\u258C",
          "\u2590/|____________\u258C"
        ]
      },
      dqpb: {
        interval: 100,
        frames: [
          "d",
          "q",
          "p",
          "b"
        ]
      },
      weather: {
        interval: 100,
        frames: [
          "\u2600\uFE0F ",
          "\u2600\uFE0F ",
          "\u2600\uFE0F ",
          "\u{1F324} ",
          "\u26C5\uFE0F ",
          "\u{1F325} ",
          "\u2601\uFE0F ",
          "\u{1F327} ",
          "\u{1F328} ",
          "\u{1F327} ",
          "\u{1F328} ",
          "\u{1F327} ",
          "\u{1F328} ",
          "\u26C8 ",
          "\u{1F328} ",
          "\u{1F327} ",
          "\u{1F328} ",
          "\u2601\uFE0F ",
          "\u{1F325} ",
          "\u26C5\uFE0F ",
          "\u{1F324} ",
          "\u2600\uFE0F ",
          "\u2600\uFE0F "
        ]
      },
      christmas: {
        interval: 400,
        frames: [
          "\u{1F332}",
          "\u{1F384}"
        ]
      },
      grenade: {
        interval: 80,
        frames: [
          "\u060C  ",
          "\u2032  ",
          " \xB4 ",
          " \u203E ",
          "  \u2E0C",
          "  \u2E0A",
          "  |",
          "  \u204E",
          "  \u2055",
          " \u0DF4 ",
          "  \u2053",
          "   ",
          "   ",
          "   "
        ]
      },
      point: {
        interval: 125,
        frames: [
          "\u2219\u2219\u2219",
          "\u25CF\u2219\u2219",
          "\u2219\u25CF\u2219",
          "\u2219\u2219\u25CF",
          "\u2219\u2219\u2219"
        ]
      },
      layer: {
        interval: 150,
        frames: [
          "-",
          "=",
          "\u2261"
        ]
      },
      betaWave: {
        interval: 80,
        frames: [
          "\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2",
          "\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2",
          "\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2",
          "\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2",
          "\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2",
          "\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2",
          "\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1"
        ]
      },
      fingerDance: {
        interval: 160,
        frames: [
          "\u{1F918} ",
          "\u{1F91F} ",
          "\u{1F596} ",
          "\u270B ",
          "\u{1F91A} ",
          "\u{1F446} "
        ]
      },
      fistBump: {
        interval: 80,
        frames: [
          "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
          "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
          "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
          "\u3000\u{1F91C}\u3000\u3000\u{1F91B}\u3000 ",
          "\u3000\u3000\u{1F91C}\u{1F91B}\u3000\u3000 ",
          "\u3000\u{1F91C}\u2728\u{1F91B}\u3000\u3000 ",
          "\u{1F91C}\u3000\u2728\u3000\u{1F91B}\u3000 "
        ]
      },
      soccerHeader: {
        interval: 80,
        frames: [
          " \u{1F9D1}\u26BD\uFE0F       \u{1F9D1} ",
          "\u{1F9D1}  \u26BD\uFE0F      \u{1F9D1} ",
          "\u{1F9D1}   \u26BD\uFE0F     \u{1F9D1} ",
          "\u{1F9D1}    \u26BD\uFE0F    \u{1F9D1} ",
          "\u{1F9D1}     \u26BD\uFE0F   \u{1F9D1} ",
          "\u{1F9D1}      \u26BD\uFE0F  \u{1F9D1} ",
          "\u{1F9D1}       \u26BD\uFE0F\u{1F9D1}  ",
          "\u{1F9D1}      \u26BD\uFE0F  \u{1F9D1} ",
          "\u{1F9D1}     \u26BD\uFE0F   \u{1F9D1} ",
          "\u{1F9D1}    \u26BD\uFE0F    \u{1F9D1} ",
          "\u{1F9D1}   \u26BD\uFE0F     \u{1F9D1} ",
          "\u{1F9D1}  \u26BD\uFE0F      \u{1F9D1} "
        ]
      },
      mindblown: {
        interval: 160,
        frames: [
          "\u{1F610} ",
          "\u{1F610} ",
          "\u{1F62E} ",
          "\u{1F62E} ",
          "\u{1F626} ",
          "\u{1F626} ",
          "\u{1F627} ",
          "\u{1F627} ",
          "\u{1F92F} ",
          "\u{1F4A5} ",
          "\u2728 ",
          "\u3000 ",
          "\u3000 ",
          "\u3000 "
        ]
      },
      speaker: {
        interval: 160,
        frames: [
          "\u{1F508} ",
          "\u{1F509} ",
          "\u{1F50A} ",
          "\u{1F509} "
        ]
      },
      orangePulse: {
        interval: 100,
        frames: [
          "\u{1F538} ",
          "\u{1F536} ",
          "\u{1F7E0} ",
          "\u{1F7E0} ",
          "\u{1F536} "
        ]
      },
      bluePulse: {
        interval: 100,
        frames: [
          "\u{1F539} ",
          "\u{1F537} ",
          "\u{1F535} ",
          "\u{1F535} ",
          "\u{1F537} "
        ]
      },
      orangeBluePulse: {
        interval: 100,
        frames: [
          "\u{1F538} ",
          "\u{1F536} ",
          "\u{1F7E0} ",
          "\u{1F7E0} ",
          "\u{1F536} ",
          "\u{1F539} ",
          "\u{1F537} ",
          "\u{1F535} ",
          "\u{1F535} ",
          "\u{1F537} "
        ]
      },
      timeTravel: {
        interval: 100,
        frames: [
          "\u{1F55B} ",
          "\u{1F55A} ",
          "\u{1F559} ",
          "\u{1F558} ",
          "\u{1F557} ",
          "\u{1F556} ",
          "\u{1F555} ",
          "\u{1F554} ",
          "\u{1F553} ",
          "\u{1F552} ",
          "\u{1F551} ",
          "\u{1F550} "
        ]
      },
      aesthetic: {
        interval: 80,
        frames: [
          "\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1",
          "\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1",
          "\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1",
          "\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1",
          "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1",
          "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1",
          "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0",
          "\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1"
        ]
      },
      dwarfFortress: {
        interval: 80,
        frames: [
          " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "\u263A \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          " \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          " \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          " \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          " \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          " \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          " \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          " \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          " \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          " \u263A \u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "  \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "  \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "  \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "  \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "  \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "  \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "  \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "  \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "  \u263A \u2588\u2588\u2588\xA3\xA3\xA3  ",
          "   \u263A\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "   \u263A\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "   \u263A\u2593\u2588\u2588\xA3\xA3\xA3  ",
          "   \u263A\u2593\u2588\u2588\xA3\xA3\xA3  ",
          "   \u263A\u2592\u2588\u2588\xA3\xA3\xA3  ",
          "   \u263A\u2592\u2588\u2588\xA3\xA3\xA3  ",
          "   \u263A\u2591\u2588\u2588\xA3\xA3\xA3  ",
          "   \u263A\u2591\u2588\u2588\xA3\xA3\xA3  ",
          "   \u263A \u2588\u2588\xA3\xA3\xA3  ",
          "    \u263A\u2588\u2588\xA3\xA3\xA3  ",
          "    \u263A\u2588\u2588\xA3\xA3\xA3  ",
          "    \u263A\u2593\u2588\xA3\xA3\xA3  ",
          "    \u263A\u2593\u2588\xA3\xA3\xA3  ",
          "    \u263A\u2592\u2588\xA3\xA3\xA3  ",
          "    \u263A\u2592\u2588\xA3\xA3\xA3  ",
          "    \u263A\u2591\u2588\xA3\xA3\xA3  ",
          "    \u263A\u2591\u2588\xA3\xA3\xA3  ",
          "    \u263A \u2588\xA3\xA3\xA3  ",
          "     \u263A\u2588\xA3\xA3\xA3  ",
          "     \u263A\u2588\xA3\xA3\xA3  ",
          "     \u263A\u2593\xA3\xA3\xA3  ",
          "     \u263A\u2593\xA3\xA3\xA3  ",
          "     \u263A\u2592\xA3\xA3\xA3  ",
          "     \u263A\u2592\xA3\xA3\xA3  ",
          "     \u263A\u2591\xA3\xA3\xA3  ",
          "     \u263A\u2591\xA3\xA3\xA3  ",
          "     \u263A \xA3\xA3\xA3  ",
          "      \u263A\xA3\xA3\xA3  ",
          "      \u263A\xA3\xA3\xA3  ",
          "      \u263A\u2593\xA3\xA3  ",
          "      \u263A\u2593\xA3\xA3  ",
          "      \u263A\u2592\xA3\xA3  ",
          "      \u263A\u2592\xA3\xA3  ",
          "      \u263A\u2591\xA3\xA3  ",
          "      \u263A\u2591\xA3\xA3  ",
          "      \u263A \xA3\xA3  ",
          "       \u263A\xA3\xA3  ",
          "       \u263A\xA3\xA3  ",
          "       \u263A\u2593\xA3  ",
          "       \u263A\u2593\xA3  ",
          "       \u263A\u2592\xA3  ",
          "       \u263A\u2592\xA3  ",
          "       \u263A\u2591\xA3  ",
          "       \u263A\u2591\xA3  ",
          "       \u263A \xA3  ",
          "        \u263A\xA3  ",
          "        \u263A\xA3  ",
          "        \u263A\u2593  ",
          "        \u263A\u2593  ",
          "        \u263A\u2592  ",
          "        \u263A\u2592  ",
          "        \u263A\u2591  ",
          "        \u263A\u2591  ",
          "        \u263A   ",
          "        \u263A  &",
          "        \u263A \u263C&",
          "       \u263A \u263C &",
          "       \u263A\u263C  &",
          "      \u263A\u263C  & ",
          "      \u203C   & ",
          "     \u263A   &  ",
          "    \u203C    &  ",
          "   \u263A    &   ",
          "  \u203C     &   ",
          " \u263A     &    ",
          "\u203C      &    ",
          "      &     ",
          "      &     ",
          "     &   \u2591  ",
          "     &   \u2592  ",
          "    &    \u2593  ",
          "    &    \xA3  ",
          "   &    \u2591\xA3  ",
          "   &    \u2592\xA3  ",
          "  &     \u2593\xA3  ",
          "  &     \xA3\xA3  ",
          " &     \u2591\xA3\xA3  ",
          " &     \u2592\xA3\xA3  ",
          "&      \u2593\xA3\xA3  ",
          "&      \xA3\xA3\xA3  ",
          "      \u2591\xA3\xA3\xA3  ",
          "      \u2592\xA3\xA3\xA3  ",
          "      \u2593\xA3\xA3\xA3  ",
          "      \u2588\xA3\xA3\xA3  ",
          "     \u2591\u2588\xA3\xA3\xA3  ",
          "     \u2592\u2588\xA3\xA3\xA3  ",
          "     \u2593\u2588\xA3\xA3\xA3  ",
          "     \u2588\u2588\xA3\xA3\xA3  ",
          "    \u2591\u2588\u2588\xA3\xA3\xA3  ",
          "    \u2592\u2588\u2588\xA3\xA3\xA3  ",
          "    \u2593\u2588\u2588\xA3\xA3\xA3  ",
          "    \u2588\u2588\u2588\xA3\xA3\xA3  ",
          "   \u2591\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "   \u2592\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "   \u2593\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "   \u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "  \u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "  \u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "  \u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          "  \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          " \u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          " \u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          " \u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  ",
          " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3  "
        ]
      }
    };
  }
});

// ../../node_modules/cli-spinners/index.js
var require_cli_spinners = __commonJS({
  "../../node_modules/cli-spinners/index.js"(exports2, module2) {
    "use strict";
    var spinners = Object.assign({}, require_spinners());
    var spinnersList = Object.keys(spinners);
    Object.defineProperty(spinners, "random", {
      get() {
        const randomIndex = Math.floor(Math.random() * spinnersList.length);
        const spinnerName = spinnersList[randomIndex];
        return spinners[spinnerName];
      }
    });
    module2.exports = spinners;
  }
});

// ../../node_modules/log-symbols/node_modules/color-name/index.js
var require_color_name5 = __commonJS({
  "../../node_modules/log-symbols/node_modules/color-name/index.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      "aliceblue": [240, 248, 255],
      "antiquewhite": [250, 235, 215],
      "aqua": [0, 255, 255],
      "aquamarine": [127, 255, 212],
      "azure": [240, 255, 255],
      "beige": [245, 245, 220],
      "bisque": [255, 228, 196],
      "black": [0, 0, 0],
      "blanchedalmond": [255, 235, 205],
      "blue": [0, 0, 255],
      "blueviolet": [138, 43, 226],
      "brown": [165, 42, 42],
      "burlywood": [222, 184, 135],
      "cadetblue": [95, 158, 160],
      "chartreuse": [127, 255, 0],
      "chocolate": [210, 105, 30],
      "coral": [255, 127, 80],
      "cornflowerblue": [100, 149, 237],
      "cornsilk": [255, 248, 220],
      "crimson": [220, 20, 60],
      "cyan": [0, 255, 255],
      "darkblue": [0, 0, 139],
      "darkcyan": [0, 139, 139],
      "darkgoldenrod": [184, 134, 11],
      "darkgray": [169, 169, 169],
      "darkgreen": [0, 100, 0],
      "darkgrey": [169, 169, 169],
      "darkkhaki": [189, 183, 107],
      "darkmagenta": [139, 0, 139],
      "darkolivegreen": [85, 107, 47],
      "darkorange": [255, 140, 0],
      "darkorchid": [153, 50, 204],
      "darkred": [139, 0, 0],
      "darksalmon": [233, 150, 122],
      "darkseagreen": [143, 188, 143],
      "darkslateblue": [72, 61, 139],
      "darkslategray": [47, 79, 79],
      "darkslategrey": [47, 79, 79],
      "darkturquoise": [0, 206, 209],
      "darkviolet": [148, 0, 211],
      "deeppink": [255, 20, 147],
      "deepskyblue": [0, 191, 255],
      "dimgray": [105, 105, 105],
      "dimgrey": [105, 105, 105],
      "dodgerblue": [30, 144, 255],
      "firebrick": [178, 34, 34],
      "floralwhite": [255, 250, 240],
      "forestgreen": [34, 139, 34],
      "fuchsia": [255, 0, 255],
      "gainsboro": [220, 220, 220],
      "ghostwhite": [248, 248, 255],
      "gold": [255, 215, 0],
      "goldenrod": [218, 165, 32],
      "gray": [128, 128, 128],
      "green": [0, 128, 0],
      "greenyellow": [173, 255, 47],
      "grey": [128, 128, 128],
      "honeydew": [240, 255, 240],
      "hotpink": [255, 105, 180],
      "indianred": [205, 92, 92],
      "indigo": [75, 0, 130],
      "ivory": [255, 255, 240],
      "khaki": [240, 230, 140],
      "lavender": [230, 230, 250],
      "lavenderblush": [255, 240, 245],
      "lawngreen": [124, 252, 0],
      "lemonchiffon": [255, 250, 205],
      "lightblue": [173, 216, 230],
      "lightcoral": [240, 128, 128],
      "lightcyan": [224, 255, 255],
      "lightgoldenrodyellow": [250, 250, 210],
      "lightgray": [211, 211, 211],
      "lightgreen": [144, 238, 144],
      "lightgrey": [211, 211, 211],
      "lightpink": [255, 182, 193],
      "lightsalmon": [255, 160, 122],
      "lightseagreen": [32, 178, 170],
      "lightskyblue": [135, 206, 250],
      "lightslategray": [119, 136, 153],
      "lightslategrey": [119, 136, 153],
      "lightsteelblue": [176, 196, 222],
      "lightyellow": [255, 255, 224],
      "lime": [0, 255, 0],
      "limegreen": [50, 205, 50],
      "linen": [250, 240, 230],
      "magenta": [255, 0, 255],
      "maroon": [128, 0, 0],
      "mediumaquamarine": [102, 205, 170],
      "mediumblue": [0, 0, 205],
      "mediumorchid": [186, 85, 211],
      "mediumpurple": [147, 112, 219],
      "mediumseagreen": [60, 179, 113],
      "mediumslateblue": [123, 104, 238],
      "mediumspringgreen": [0, 250, 154],
      "mediumturquoise": [72, 209, 204],
      "mediumvioletred": [199, 21, 133],
      "midnightblue": [25, 25, 112],
      "mintcream": [245, 255, 250],
      "mistyrose": [255, 228, 225],
      "moccasin": [255, 228, 181],
      "navajowhite": [255, 222, 173],
      "navy": [0, 0, 128],
      "oldlace": [253, 245, 230],
      "olive": [128, 128, 0],
      "olivedrab": [107, 142, 35],
      "orange": [255, 165, 0],
      "orangered": [255, 69, 0],
      "orchid": [218, 112, 214],
      "palegoldenrod": [238, 232, 170],
      "palegreen": [152, 251, 152],
      "paleturquoise": [175, 238, 238],
      "palevioletred": [219, 112, 147],
      "papayawhip": [255, 239, 213],
      "peachpuff": [255, 218, 185],
      "peru": [205, 133, 63],
      "pink": [255, 192, 203],
      "plum": [221, 160, 221],
      "powderblue": [176, 224, 230],
      "purple": [128, 0, 128],
      "rebeccapurple": [102, 51, 153],
      "red": [255, 0, 0],
      "rosybrown": [188, 143, 143],
      "royalblue": [65, 105, 225],
      "saddlebrown": [139, 69, 19],
      "salmon": [250, 128, 114],
      "sandybrown": [244, 164, 96],
      "seagreen": [46, 139, 87],
      "seashell": [255, 245, 238],
      "sienna": [160, 82, 45],
      "silver": [192, 192, 192],
      "skyblue": [135, 206, 235],
      "slateblue": [106, 90, 205],
      "slategray": [112, 128, 144],
      "slategrey": [112, 128, 144],
      "snow": [255, 250, 250],
      "springgreen": [0, 255, 127],
      "steelblue": [70, 130, 180],
      "tan": [210, 180, 140],
      "teal": [0, 128, 128],
      "thistle": [216, 191, 216],
      "tomato": [255, 99, 71],
      "turquoise": [64, 224, 208],
      "violet": [238, 130, 238],
      "wheat": [245, 222, 179],
      "white": [255, 255, 255],
      "whitesmoke": [245, 245, 245],
      "yellow": [255, 255, 0],
      "yellowgreen": [154, 205, 50]
    };
  }
});

// ../../node_modules/log-symbols/node_modules/color-convert/conversions.js
var require_conversions4 = __commonJS({
  "../../node_modules/log-symbols/node_modules/color-convert/conversions.js"(exports2, module2) {
    var cssKeywords = require_color_name5();
    var reverseKeywords = {};
    for (const key2 of Object.keys(cssKeywords)) {
      reverseKeywords[cssKeywords[key2]] = key2;
    }
    var convert6 = {
      rgb: { channels: 3, labels: "rgb" },
      hsl: { channels: 3, labels: "hsl" },
      hsv: { channels: 3, labels: "hsv" },
      hwb: { channels: 3, labels: "hwb" },
      cmyk: { channels: 4, labels: "cmyk" },
      xyz: { channels: 3, labels: "xyz" },
      lab: { channels: 3, labels: "lab" },
      lch: { channels: 3, labels: "lch" },
      hex: { channels: 1, labels: ["hex"] },
      keyword: { channels: 1, labels: ["keyword"] },
      ansi16: { channels: 1, labels: ["ansi16"] },
      ansi256: { channels: 1, labels: ["ansi256"] },
      hcg: { channels: 3, labels: ["h", "c", "g"] },
      apple: { channels: 3, labels: ["r16", "g16", "b16"] },
      gray: { channels: 1, labels: ["gray"] }
    };
    module2.exports = convert6;
    for (const model of Object.keys(convert6)) {
      if (!("channels" in convert6[model])) {
        throw new Error("missing channels property: " + model);
      }
      if (!("labels" in convert6[model])) {
        throw new Error("missing channel labels property: " + model);
      }
      if (convert6[model].labels.length !== convert6[model].channels) {
        throw new Error("channel and label counts mismatch: " + model);
      }
      const { channels, labels } = convert6[model];
      delete convert6[model].channels;
      delete convert6[model].labels;
      Object.defineProperty(convert6[model], "channels", { value: channels });
      Object.defineProperty(convert6[model], "labels", { value: labels });
    }
    convert6.rgb.hsl = function(rgb) {
      const r2 = rgb[0] / 255;
      const g = rgb[1] / 255;
      const b = rgb[2] / 255;
      const min = Math.min(r2, g, b);
      const max = Math.max(r2, g, b);
      const delta = max - min;
      let h4;
      let s5;
      if (max === min) {
        h4 = 0;
      } else if (r2 === max) {
        h4 = (g - b) / delta;
      } else if (g === max) {
        h4 = 2 + (b - r2) / delta;
      } else if (b === max) {
        h4 = 4 + (r2 - g) / delta;
      }
      h4 = Math.min(h4 * 60, 360);
      if (h4 < 0) {
        h4 += 360;
      }
      const l = (min + max) / 2;
      if (max === min) {
        s5 = 0;
      } else if (l <= 0.5) {
        s5 = delta / (max + min);
      } else {
        s5 = delta / (2 - max - min);
      }
      return [h4, s5 * 100, l * 100];
    };
    convert6.rgb.hsv = function(rgb) {
      let rdif;
      let gdif;
      let bdif;
      let h4;
      let s5;
      const r2 = rgb[0] / 255;
      const g = rgb[1] / 255;
      const b = rgb[2] / 255;
      const v = Math.max(r2, g, b);
      const diff = v - Math.min(r2, g, b);
      const diffc = function(c) {
        return (v - c) / 6 / diff + 1 / 2;
      };
      if (diff === 0) {
        h4 = 0;
        s5 = 0;
      } else {
        s5 = diff / v;
        rdif = diffc(r2);
        gdif = diffc(g);
        bdif = diffc(b);
        if (r2 === v) {
          h4 = bdif - gdif;
        } else if (g === v) {
          h4 = 1 / 3 + rdif - bdif;
        } else if (b === v) {
          h4 = 2 / 3 + gdif - rdif;
        }
        if (h4 < 0) {
          h4 += 1;
        } else if (h4 > 1) {
          h4 -= 1;
        }
      }
      return [
        h4 * 360,
        s5 * 100,
        v * 100
      ];
    };
    convert6.rgb.hwb = function(rgb) {
      const r2 = rgb[0];
      const g = rgb[1];
      let b = rgb[2];
      const h4 = convert6.rgb.hsl(rgb)[0];
      const w = 1 / 255 * Math.min(r2, Math.min(g, b));
      b = 1 - 1 / 255 * Math.max(r2, Math.max(g, b));
      return [h4, w * 100, b * 100];
    };
    convert6.rgb.cmyk = function(rgb) {
      const r2 = rgb[0] / 255;
      const g = rgb[1] / 255;
      const b = rgb[2] / 255;
      const k = Math.min(1 - r2, 1 - g, 1 - b);
      const c = (1 - r2 - k) / (1 - k) || 0;
      const m2 = (1 - g - k) / (1 - k) || 0;
      const y = (1 - b - k) / (1 - k) || 0;
      return [c * 100, m2 * 100, y * 100, k * 100];
    };
    function comparativeDistance(x2, y) {
      return (x2[0] - y[0]) ** 2 + (x2[1] - y[1]) ** 2 + (x2[2] - y[2]) ** 2;
    }
    convert6.rgb.keyword = function(rgb) {
      const reversed = reverseKeywords[rgb];
      if (reversed) {
        return reversed;
      }
      let currentClosestDistance = Infinity;
      let currentClosestKeyword;
      for (const keyword of Object.keys(cssKeywords)) {
        const value = cssKeywords[keyword];
        const distance = comparativeDistance(rgb, value);
        if (distance < currentClosestDistance) {
          currentClosestDistance = distance;
          currentClosestKeyword = keyword;
        }
      }
      return currentClosestKeyword;
    };
    convert6.keyword.rgb = function(keyword) {
      return cssKeywords[keyword];
    };
    convert6.rgb.xyz = function(rgb) {
      let r2 = rgb[0] / 255;
      let g = rgb[1] / 255;
      let b = rgb[2] / 255;
      r2 = r2 > 0.04045 ? ((r2 + 0.055) / 1.055) ** 2.4 : r2 / 12.92;
      g = g > 0.04045 ? ((g + 0.055) / 1.055) ** 2.4 : g / 12.92;
      b = b > 0.04045 ? ((b + 0.055) / 1.055) ** 2.4 : b / 12.92;
      const x2 = r2 * 0.4124 + g * 0.3576 + b * 0.1805;
      const y = r2 * 0.2126 + g * 0.7152 + b * 0.0722;
      const z2 = r2 * 0.0193 + g * 0.1192 + b * 0.9505;
      return [x2 * 100, y * 100, z2 * 100];
    };
    convert6.rgb.lab = function(rgb) {
      const xyz = convert6.rgb.xyz(rgb);
      let x2 = xyz[0];
      let y = xyz[1];
      let z2 = xyz[2];
      x2 /= 95.047;
      y /= 100;
      z2 /= 108.883;
      x2 = x2 > 8856e-6 ? x2 ** (1 / 3) : 7.787 * x2 + 16 / 116;
      y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116;
      z2 = z2 > 8856e-6 ? z2 ** (1 / 3) : 7.787 * z2 + 16 / 116;
      const l = 116 * y - 16;
      const a2 = 500 * (x2 - y);
      const b = 200 * (y - z2);
      return [l, a2, b];
    };
    convert6.hsl.rgb = function(hsl) {
      const h4 = hsl[0] / 360;
      const s5 = hsl[1] / 100;
      const l = hsl[2] / 100;
      let t2;
      let t3;
      let val;
      if (s5 === 0) {
        val = l * 255;
        return [val, val, val];
      }
      if (l < 0.5) {
        t2 = l * (1 + s5);
      } else {
        t2 = l + s5 - l * s5;
      }
      const t1 = 2 * l - t2;
      const rgb = [0, 0, 0];
      for (let i2 = 0; i2 < 3; i2++) {
        t3 = h4 + 1 / 3 * -(i2 - 1);
        if (t3 < 0) {
          t3++;
        }
        if (t3 > 1) {
          t3--;
        }
        if (6 * t3 < 1) {
          val = t1 + (t2 - t1) * 6 * t3;
        } else if (2 * t3 < 1) {
          val = t2;
        } else if (3 * t3 < 2) {
          val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
        } else {
          val = t1;
        }
        rgb[i2] = val * 255;
      }
      return rgb;
    };
    convert6.hsl.hsv = function(hsl) {
      const h4 = hsl[0];
      let s5 = hsl[1] / 100;
      let l = hsl[2] / 100;
      let smin = s5;
      const lmin = Math.max(l, 0.01);
      l *= 2;
      s5 *= l <= 1 ? l : 2 - l;
      smin *= lmin <= 1 ? lmin : 2 - lmin;
      const v = (l + s5) / 2;
      const sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s5 / (l + s5);
      return [h4, sv * 100, v * 100];
    };
    convert6.hsv.rgb = function(hsv) {
      const h4 = hsv[0] / 60;
      const s5 = hsv[1] / 100;
      let v = hsv[2] / 100;
      const hi = Math.floor(h4) % 6;
      const f3 = h4 - Math.floor(h4);
      const p5 = 255 * v * (1 - s5);
      const q2 = 255 * v * (1 - s5 * f3);
      const t2 = 255 * v * (1 - s5 * (1 - f3));
      v *= 255;
      switch (hi) {
        case 0:
          return [v, t2, p5];
        case 1:
          return [q2, v, p5];
        case 2:
          return [p5, v, t2];
        case 3:
          return [p5, q2, v];
        case 4:
          return [t2, p5, v];
        case 5:
          return [v, p5, q2];
      }
    };
    convert6.hsv.hsl = function(hsv) {
      const h4 = hsv[0];
      const s5 = hsv[1] / 100;
      const v = hsv[2] / 100;
      const vmin = Math.max(v, 0.01);
      let sl;
      let l;
      l = (2 - s5) * v;
      const lmin = (2 - s5) * vmin;
      sl = s5 * vmin;
      sl /= lmin <= 1 ? lmin : 2 - lmin;
      sl = sl || 0;
      l /= 2;
      return [h4, sl * 100, l * 100];
    };
    convert6.hwb.rgb = function(hwb) {
      const h4 = hwb[0] / 360;
      let wh = hwb[1] / 100;
      let bl = hwb[2] / 100;
      const ratio = wh + bl;
      let f3;
      if (ratio > 1) {
        wh /= ratio;
        bl /= ratio;
      }
      const i2 = Math.floor(6 * h4);
      const v = 1 - bl;
      f3 = 6 * h4 - i2;
      if ((i2 & 1) !== 0) {
        f3 = 1 - f3;
      }
      const n = wh + f3 * (v - wh);
      let r2;
      let g;
      let b;
      switch (i2) {
        default:
        case 6:
        case 0:
          r2 = v;
          g = n;
          b = wh;
          break;
        case 1:
          r2 = n;
          g = v;
          b = wh;
          break;
        case 2:
          r2 = wh;
          g = v;
          b = n;
          break;
        case 3:
          r2 = wh;
          g = n;
          b = v;
          break;
        case 4:
          r2 = n;
          g = wh;
          b = v;
          break;
        case 5:
          r2 = v;
          g = wh;
          b = n;
          break;
      }
      return [r2 * 255, g * 255, b * 255];
    };
    convert6.cmyk.rgb = function(cmyk) {
      const c = cmyk[0] / 100;
      const m2 = cmyk[1] / 100;
      const y = cmyk[2] / 100;
      const k = cmyk[3] / 100;
      const r2 = 1 - Math.min(1, c * (1 - k) + k);
      const g = 1 - Math.min(1, m2 * (1 - k) + k);
      const b = 1 - Math.min(1, y * (1 - k) + k);
      return [r2 * 255, g * 255, b * 255];
    };
    convert6.xyz.rgb = function(xyz) {
      const x2 = xyz[0] / 100;
      const y = xyz[1] / 100;
      const z2 = xyz[2] / 100;
      let r2;
      let g;
      let b;
      r2 = x2 * 3.2406 + y * -1.5372 + z2 * -0.4986;
      g = x2 * -0.9689 + y * 1.8758 + z2 * 0.0415;
      b = x2 * 0.0557 + y * -0.204 + z2 * 1.057;
      r2 = r2 > 31308e-7 ? 1.055 * r2 ** (1 / 2.4) - 0.055 : r2 * 12.92;
      g = g > 31308e-7 ? 1.055 * g ** (1 / 2.4) - 0.055 : g * 12.92;
      b = b > 31308e-7 ? 1.055 * b ** (1 / 2.4) - 0.055 : b * 12.92;
      r2 = Math.min(Math.max(0, r2), 1);
      g = Math.min(Math.max(0, g), 1);
      b = Math.min(Math.max(0, b), 1);
      return [r2 * 255, g * 255, b * 255];
    };
    convert6.xyz.lab = function(xyz) {
      let x2 = xyz[0];
      let y = xyz[1];
      let z2 = xyz[2];
      x2 /= 95.047;
      y /= 100;
      z2 /= 108.883;
      x2 = x2 > 8856e-6 ? x2 ** (1 / 3) : 7.787 * x2 + 16 / 116;
      y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116;
      z2 = z2 > 8856e-6 ? z2 ** (1 / 3) : 7.787 * z2 + 16 / 116;
      const l = 116 * y - 16;
      const a2 = 500 * (x2 - y);
      const b = 200 * (y - z2);
      return [l, a2, b];
    };
    convert6.lab.xyz = function(lab) {
      const l = lab[0];
      const a2 = lab[1];
      const b = lab[2];
      let x2;
      let y;
      let z2;
      y = (l + 16) / 116;
      x2 = a2 / 500 + y;
      z2 = y - b / 200;
      const y2 = y ** 3;
      const x22 = x2 ** 3;
      const z22 = z2 ** 3;
      y = y2 > 8856e-6 ? y2 : (y - 16 / 116) / 7.787;
      x2 = x22 > 8856e-6 ? x22 : (x2 - 16 / 116) / 7.787;
      z2 = z22 > 8856e-6 ? z22 : (z2 - 16 / 116) / 7.787;
      x2 *= 95.047;
      y *= 100;
      z2 *= 108.883;
      return [x2, y, z2];
    };
    convert6.lab.lch = function(lab) {
      const l = lab[0];
      const a2 = lab[1];
      const b = lab[2];
      let h4;
      const hr2 = Math.atan2(b, a2);
      h4 = hr2 * 360 / 2 / Math.PI;
      if (h4 < 0) {
        h4 += 360;
      }
      const c = Math.sqrt(a2 * a2 + b * b);
      return [l, c, h4];
    };
    convert6.lch.lab = function(lch) {
      const l = lch[0];
      const c = lch[1];
      const h4 = lch[2];
      const hr2 = h4 / 360 * 2 * Math.PI;
      const a2 = c * Math.cos(hr2);
      const b = c * Math.sin(hr2);
      return [l, a2, b];
    };
    convert6.rgb.ansi16 = function(args, saturation = null) {
      const [r2, g, b] = args;
      let value = saturation === null ? convert6.rgb.hsv(args)[2] : saturation;
      value = Math.round(value / 50);
      if (value === 0) {
        return 30;
      }
      let ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r2 / 255));
      if (value === 2) {
        ansi += 60;
      }
      return ansi;
    };
    convert6.hsv.ansi16 = function(args) {
      return convert6.rgb.ansi16(convert6.hsv.rgb(args), args[2]);
    };
    convert6.rgb.ansi256 = function(args) {
      const r2 = args[0];
      const g = args[1];
      const b = args[2];
      if (r2 === g && g === b) {
        if (r2 < 8) {
          return 16;
        }
        if (r2 > 248) {
          return 231;
        }
        return Math.round((r2 - 8) / 247 * 24) + 232;
      }
      const ansi = 16 + 36 * Math.round(r2 / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);
      return ansi;
    };
    convert6.ansi16.rgb = function(args) {
      let color2 = args % 10;
      if (color2 === 0 || color2 === 7) {
        if (args > 50) {
          color2 += 3.5;
        }
        color2 = color2 / 10.5 * 255;
        return [color2, color2, color2];
      }
      const mult = (~~(args > 50) + 1) * 0.5;
      const r2 = (color2 & 1) * mult * 255;
      const g = (color2 >> 1 & 1) * mult * 255;
      const b = (color2 >> 2 & 1) * mult * 255;
      return [r2, g, b];
    };
    convert6.ansi256.rgb = function(args) {
      if (args >= 232) {
        const c = (args - 232) * 10 + 8;
        return [c, c, c];
      }
      args -= 16;
      let rem;
      const r2 = Math.floor(args / 36) / 5 * 255;
      const g = Math.floor((rem = args % 36) / 6) / 5 * 255;
      const b = rem % 6 / 5 * 255;
      return [r2, g, b];
    };
    convert6.rgb.hex = function(args) {
      const integer = ((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255);
      const string2 = integer.toString(16).toUpperCase();
      return "000000".substring(string2.length) + string2;
    };
    convert6.hex.rgb = function(args) {
      const match3 = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
      if (!match3) {
        return [0, 0, 0];
      }
      let colorString = match3[0];
      if (match3[0].length === 3) {
        colorString = colorString.split("").map((char) => {
          return char + char;
        }).join("");
      }
      const integer = parseInt(colorString, 16);
      const r2 = integer >> 16 & 255;
      const g = integer >> 8 & 255;
      const b = integer & 255;
      return [r2, g, b];
    };
    convert6.rgb.hcg = function(rgb) {
      const r2 = rgb[0] / 255;
      const g = rgb[1] / 255;
      const b = rgb[2] / 255;
      const max = Math.max(Math.max(r2, g), b);
      const min = Math.min(Math.min(r2, g), b);
      const chroma = max - min;
      let grayscale;
      let hue;
      if (chroma < 1) {
        grayscale = min / (1 - chroma);
      } else {
        grayscale = 0;
      }
      if (chroma <= 0) {
        hue = 0;
      } else if (max === r2) {
        hue = (g - b) / chroma % 6;
      } else if (max === g) {
        hue = 2 + (b - r2) / chroma;
      } else {
        hue = 4 + (r2 - g) / chroma;
      }
      hue /= 6;
      hue %= 1;
      return [hue * 360, chroma * 100, grayscale * 100];
    };
    convert6.hsl.hcg = function(hsl) {
      const s5 = hsl[1] / 100;
      const l = hsl[2] / 100;
      const c = l < 0.5 ? 2 * s5 * l : 2 * s5 * (1 - l);
      let f3 = 0;
      if (c < 1) {
        f3 = (l - 0.5 * c) / (1 - c);
      }
      return [hsl[0], c * 100, f3 * 100];
    };
    convert6.hsv.hcg = function(hsv) {
      const s5 = hsv[1] / 100;
      const v = hsv[2] / 100;
      const c = s5 * v;
      let f3 = 0;
      if (c < 1) {
        f3 = (v - c) / (1 - c);
      }
      return [hsv[0], c * 100, f3 * 100];
    };
    convert6.hcg.rgb = function(hcg) {
      const h4 = hcg[0] / 360;
      const c = hcg[1] / 100;
      const g = hcg[2] / 100;
      if (c === 0) {
        return [g * 255, g * 255, g * 255];
      }
      const pure = [0, 0, 0];
      const hi = h4 % 1 * 6;
      const v = hi % 1;
      const w = 1 - v;
      let mg = 0;
      switch (Math.floor(hi)) {
        case 0:
          pure[0] = 1;
          pure[1] = v;
          pure[2] = 0;
          break;
        case 1:
          pure[0] = w;
          pure[1] = 1;
          pure[2] = 0;
          break;
        case 2:
          pure[0] = 0;
          pure[1] = 1;
          pure[2] = v;
          break;
        case 3:
          pure[0] = 0;
          pure[1] = w;
          pure[2] = 1;
          break;
        case 4:
          pure[0] = v;
          pure[1] = 0;
          pure[2] = 1;
          break;
        default:
          pure[0] = 1;
          pure[1] = 0;
          pure[2] = w;
      }
      mg = (1 - c) * g;
      return [
        (c * pure[0] + mg) * 255,
        (c * pure[1] + mg) * 255,
        (c * pure[2] + mg) * 255
      ];
    };
    convert6.hcg.hsv = function(hcg) {
      const c = hcg[1] / 100;
      const g = hcg[2] / 100;
      const v = c + g * (1 - c);
      let f3 = 0;
      if (v > 0) {
        f3 = c / v;
      }
      return [hcg[0], f3 * 100, v * 100];
    };
    convert6.hcg.hsl = function(hcg) {
      const c = hcg[1] / 100;
      const g = hcg[2] / 100;
      const l = g * (1 - c) + 0.5 * c;
      let s5 = 0;
      if (l > 0 && l < 0.5) {
        s5 = c / (2 * l);
      } else if (l >= 0.5 && l < 1) {
        s5 = c / (2 * (1 - l));
      }
      return [hcg[0], s5 * 100, l * 100];
    };
    convert6.hcg.hwb = function(hcg) {
      const c = hcg[1] / 100;
      const g = hcg[2] / 100;
      const v = c + g * (1 - c);
      return [hcg[0], (v - c) * 100, (1 - v) * 100];
    };
    convert6.hwb.hcg = function(hwb) {
      const w = hwb[1] / 100;
      const b = hwb[2] / 100;
      const v = 1 - b;
      const c = v - w;
      let g = 0;
      if (c < 1) {
        g = (v - c) / (1 - c);
      }
      return [hwb[0], c * 100, g * 100];
    };
    convert6.apple.rgb = function(apple) {
      return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];
    };
    convert6.rgb.apple = function(rgb) {
      return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];
    };
    convert6.gray.rgb = function(args) {
      return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
    };
    convert6.gray.hsl = function(args) {
      return [0, 0, args[0]];
    };
    convert6.gray.hsv = convert6.gray.hsl;
    convert6.gray.hwb = function(gray) {
      return [0, 100, gray[0]];
    };
    convert6.gray.cmyk = function(gray) {
      return [0, 0, 0, gray[0]];
    };
    convert6.gray.lab = function(gray) {
      return [gray[0], 0, 0];
    };
    convert6.gray.hex = function(gray) {
      const val = Math.round(gray[0] / 100 * 255) & 255;
      const integer = (val << 16) + (val << 8) + val;
      const string2 = integer.toString(16).toUpperCase();
      return "000000".substring(string2.length) + string2;
    };
    convert6.rgb.gray = function(rgb) {
      const val = (rgb[0] + rgb[1] + rgb[2]) / 3;
      return [val / 255 * 100];
    };
  }
});

// ../../node_modules/log-symbols/node_modules/color-convert/route.js
var require_route5 = __commonJS({
  "../../node_modules/log-symbols/node_modules/color-convert/route.js"(exports2, module2) {
    var conversions = require_conversions4();
    function buildGraph() {
      const graph = {};
      const models = Object.keys(conversions);
      for (let len = models.length, i2 = 0; i2 < len; i2++) {
        graph[models[i2]] = {
          // http://jsperf.com/1-vs-infinity
          // micro-opt, but this is simple.
          distance: -1,
          parent: null
        };
      }
      return graph;
    }
    function deriveBFS(fromModel) {
      const graph = buildGraph();
      const queue = [fromModel];
      graph[fromModel].distance = 0;
      while (queue.length) {
        const current2 = queue.pop();
        const adjacents = Object.keys(conversions[current2]);
        for (let len = adjacents.length, i2 = 0; i2 < len; i2++) {
          const adjacent = adjacents[i2];
          const node3 = graph[adjacent];
          if (node3.distance === -1) {
            node3.distance = graph[current2].distance + 1;
            node3.parent = current2;
            queue.unshift(adjacent);
          }
        }
      }
      return graph;
    }
    function link4(from4, to) {
      return function(args) {
        return to(from4(args));
      };
    }
    function wrapConversion(toModel, graph) {
      const path45 = [graph[toModel].parent, toModel];
      let fn = conversions[graph[toModel].parent][toModel];
      let cur = graph[toModel].parent;
      while (graph[cur].parent) {
        path45.unshift(graph[cur].parent);
        fn = link4(conversions[graph[cur].parent][cur], fn);
        cur = graph[cur].parent;
      }
      fn.conversion = path45;
      return fn;
    }
    module2.exports = function(fromModel) {
      const graph = deriveBFS(fromModel);
      const conversion = {};
      const models = Object.keys(graph);
      for (let len = models.length, i2 = 0; i2 < len; i2++) {
        const toModel = models[i2];
        const node3 = graph[toModel];
        if (node3.parent === null) {
          continue;
        }
        conversion[toModel] = wrapConversion(toModel, graph);
      }
      return conversion;
    };
  }
});

// ../../node_modules/log-symbols/node_modules/color-convert/index.js
var require_color_convert4 = __commonJS({
  "../../node_modules/log-symbols/node_modules/color-convert/index.js"(exports2, module2) {
    var conversions = require_conversions4();
    var route = require_route5();
    var convert6 = {};
    var models = Object.keys(conversions);
    function wrapRaw(fn) {
      const wrappedFn = function(...args) {
        const arg0 = args[0];
        if (arg0 === void 0 || arg0 === null) {
          return arg0;
        }
        if (arg0.length > 1) {
          args = arg0;
        }
        return fn(args);
      };
      if ("conversion" in fn) {
        wrappedFn.conversion = fn.conversion;
      }
      return wrappedFn;
    }
    function wrapRounded(fn) {
      const wrappedFn = function(...args) {
        const arg0 = args[0];
        if (arg0 === void 0 || arg0 === null) {
          return arg0;
        }
        if (arg0.length > 1) {
          args = arg0;
        }
        const result = fn(args);
        if (typeof result === "object") {
          for (let len = result.length, i2 = 0; i2 < len; i2++) {
            result[i2] = Math.round(result[i2]);
          }
        }
        return result;
      };
      if ("conversion" in fn) {
        wrappedFn.conversion = fn.conversion;
      }
      return wrappedFn;
    }
    models.forEach((fromModel) => {
      convert6[fromModel] = {};
      Object.defineProperty(convert6[fromModel], "channels", { value: conversions[fromModel].channels });
      Object.defineProperty(convert6[fromModel], "labels", { value: conversions[fromModel].labels });
      const routes = route(fromModel);
      const routeModels = Object.keys(routes);
      routeModels.forEach((toModel) => {
        const fn = routes[toModel];
        convert6[fromModel][toModel] = wrapRounded(fn);
        convert6[fromModel][toModel].raw = wrapRaw(fn);
      });
    });
    module2.exports = convert6;
  }
});

// ../../node_modules/log-symbols/node_modules/ansi-styles/index.js
var require_ansi_styles3 = __commonJS({
  "../../node_modules/log-symbols/node_modules/ansi-styles/index.js"(exports2, module2) {
    "use strict";
    var wrapAnsi167 = (fn, offset) => (...args) => {
      const code7 = fn(...args);
      return `\x1B[${code7 + offset}m`;
    };
    var wrapAnsi2567 = (fn, offset) => (...args) => {
      const code7 = fn(...args);
      return `\x1B[${38 + offset};5;${code7}m`;
    };
    var wrapAnsi16m7 = (fn, offset) => (...args) => {
      const rgb = fn(...args);
      return `\x1B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
    };
    var ansi2ansi = (n) => n;
    var rgb2rgb = (r2, g, b) => [r2, g, b];
    var setLazyProperty = (object, property, get) => {
      Object.defineProperty(object, property, {
        get: () => {
          const value = get();
          Object.defineProperty(object, property, {
            value,
            enumerable: true,
            configurable: true
          });
          return value;
        },
        enumerable: true,
        configurable: true
      });
    };
    var colorConvert;
    var makeDynamicStyles = (wrap4, targetSpace, identity2, isBackground) => {
      if (colorConvert === void 0) {
        colorConvert = require_color_convert4();
      }
      const offset = isBackground ? 10 : 0;
      const styles14 = {};
      for (const [sourceSpace, suite] of Object.entries(colorConvert)) {
        const name3 = sourceSpace === "ansi16" ? "ansi" : sourceSpace;
        if (sourceSpace === targetSpace) {
          styles14[name3] = wrap4(identity2, offset);
        } else if (typeof suite === "object") {
          styles14[name3] = wrap4(suite[targetSpace], offset);
        }
      }
      return styles14;
    };
    function assembleStyles7() {
      const codes = /* @__PURE__ */ new Map();
      const styles14 = {
        modifier: {
          reset: [0, 0],
          // 21 isn't widely supported and 22 does the same thing
          bold: [1, 22],
          dim: [2, 22],
          italic: [3, 23],
          underline: [4, 24],
          inverse: [7, 27],
          hidden: [8, 28],
          strikethrough: [9, 29]
        },
        color: {
          black: [30, 39],
          red: [31, 39],
          green: [32, 39],
          yellow: [33, 39],
          blue: [34, 39],
          magenta: [35, 39],
          cyan: [36, 39],
          white: [37, 39],
          // Bright color
          blackBright: [90, 39],
          redBright: [91, 39],
          greenBright: [92, 39],
          yellowBright: [93, 39],
          blueBright: [94, 39],
          magentaBright: [95, 39],
          cyanBright: [96, 39],
          whiteBright: [97, 39]
        },
        bgColor: {
          bgBlack: [40, 49],
          bgRed: [41, 49],
          bgGreen: [42, 49],
          bgYellow: [43, 49],
          bgBlue: [44, 49],
          bgMagenta: [45, 49],
          bgCyan: [46, 49],
          bgWhite: [47, 49],
          // Bright color
          bgBlackBright: [100, 49],
          bgRedBright: [101, 49],
          bgGreenBright: [102, 49],
          bgYellowBright: [103, 49],
          bgBlueBright: [104, 49],
          bgMagentaBright: [105, 49],
          bgCyanBright: [106, 49],
          bgWhiteBright: [107, 49]
        }
      };
      styles14.color.gray = styles14.color.blackBright;
      styles14.bgColor.bgGray = styles14.bgColor.bgBlackBright;
      styles14.color.grey = styles14.color.blackBright;
      styles14.bgColor.bgGrey = styles14.bgColor.bgBlackBright;
      for (const [groupName, group3] of Object.entries(styles14)) {
        for (const [styleName, style3] of Object.entries(group3)) {
          styles14[styleName] = {
            open: `\x1B[${style3[0]}m`,
            close: `\x1B[${style3[1]}m`
          };
          group3[styleName] = styles14[styleName];
          codes.set(style3[0], style3[1]);
        }
        Object.defineProperty(styles14, groupName, {
          value: group3,
          enumerable: false
        });
      }
      Object.defineProperty(styles14, "codes", {
        value: codes,
        enumerable: false
      });
      styles14.color.close = "\x1B[39m";
      styles14.bgColor.close = "\x1B[49m";
      setLazyProperty(styles14.color, "ansi", () => makeDynamicStyles(wrapAnsi167, "ansi16", ansi2ansi, false));
      setLazyProperty(styles14.color, "ansi256", () => makeDynamicStyles(wrapAnsi2567, "ansi256", ansi2ansi, false));
      setLazyProperty(styles14.color, "ansi16m", () => makeDynamicStyles(wrapAnsi16m7, "rgb", rgb2rgb, false));
      setLazyProperty(styles14.bgColor, "ansi", () => makeDynamicStyles(wrapAnsi167, "ansi16", ansi2ansi, true));
      setLazyProperty(styles14.bgColor, "ansi256", () => makeDynamicStyles(wrapAnsi2567, "ansi256", ansi2ansi, true));
      setLazyProperty(styles14.bgColor, "ansi16m", () => makeDynamicStyles(wrapAnsi16m7, "rgb", rgb2rgb, true));
      return styles14;
    }
    Object.defineProperty(module2, "exports", {
      enumerable: true,
      get: assembleStyles7
    });
  }
});

// ../../node_modules/log-symbols/node_modules/has-flag/index.js
var require_has_flag2 = __commonJS({
  "../../node_modules/log-symbols/node_modules/has-flag/index.js"(exports2, module2) {
    "use strict";
    module2.exports = (flag, argv = process.argv) => {
      const prefix2 = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
      const position6 = argv.indexOf(prefix2 + flag);
      const terminatorPosition = argv.indexOf("--");
      return position6 !== -1 && (terminatorPosition === -1 || position6 < terminatorPosition);
    };
  }
});

// ../../node_modules/log-symbols/node_modules/supports-color/index.js
var require_supports_color2 = __commonJS({
  "../../node_modules/log-symbols/node_modules/supports-color/index.js"(exports2, module2) {
    "use strict";
    var os10 = require("os");
    var tty6 = require("tty");
    var hasFlag6 = require_has_flag2();
    var { env: env6 } = process;
    var forceColor;
    if (hasFlag6("no-color") || hasFlag6("no-colors") || hasFlag6("color=false") || hasFlag6("color=never")) {
      forceColor = 0;
    } else if (hasFlag6("color") || hasFlag6("colors") || hasFlag6("color=true") || hasFlag6("color=always")) {
      forceColor = 1;
    }
    if ("FORCE_COLOR" in env6) {
      if (env6.FORCE_COLOR === "true") {
        forceColor = 1;
      } else if (env6.FORCE_COLOR === "false") {
        forceColor = 0;
      } else {
        forceColor = env6.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env6.FORCE_COLOR, 10), 3);
      }
    }
    function translateLevel6(level) {
      if (level === 0) {
        return false;
      }
      return {
        level,
        hasBasic: true,
        has256: level >= 2,
        has16m: level >= 3
      };
    }
    function supportsColor6(haveStream, streamIsTTY) {
      if (forceColor === 0) {
        return 0;
      }
      if (hasFlag6("color=16m") || hasFlag6("color=full") || hasFlag6("color=truecolor")) {
        return 3;
      }
      if (hasFlag6("color=256")) {
        return 2;
      }
      if (haveStream && !streamIsTTY && forceColor === void 0) {
        return 0;
      }
      const min = forceColor || 0;
      if (env6.TERM === "dumb") {
        return min;
      }
      if (process.platform === "win32") {
        const osRelease = os10.release().split(".");
        if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
          return Number(osRelease[2]) >= 14931 ? 3 : 2;
        }
        return 1;
      }
      if ("CI" in env6) {
        if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE"].some((sign) => sign in env6) || env6.CI_NAME === "codeship") {
          return 1;
        }
        return min;
      }
      if ("TEAMCITY_VERSION" in env6) {
        return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env6.TEAMCITY_VERSION) ? 1 : 0;
      }
      if (env6.COLORTERM === "truecolor") {
        return 3;
      }
      if ("TERM_PROGRAM" in env6) {
        const version4 = parseInt((env6.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
        switch (env6.TERM_PROGRAM) {
          case "iTerm.app":
            return version4 >= 3 ? 3 : 2;
          case "Apple_Terminal":
            return 2;
        }
      }
      if (/-256(color)?$/i.test(env6.TERM)) {
        return 2;
      }
      if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env6.TERM)) {
        return 1;
      }
      if ("COLORTERM" in env6) {
        return 1;
      }
      return min;
    }
    function getSupportLevel(stream3) {
      const level = supportsColor6(stream3, stream3 && stream3.isTTY);
      return translateLevel6(level);
    }
    module2.exports = {
      supportsColor: getSupportLevel,
      stdout: translateLevel6(supportsColor6(true, tty6.isatty(1))),
      stderr: translateLevel6(supportsColor6(true, tty6.isatty(2)))
    };
  }
});

// ../../node_modules/log-symbols/node_modules/chalk/source/util.js
var require_util5 = __commonJS({
  "../../node_modules/log-symbols/node_modules/chalk/source/util.js"(exports2, module2) {
    "use strict";
    var stringReplaceAll6 = (string2, substring, replacer) => {
      let index4 = string2.indexOf(substring);
      if (index4 === -1) {
        return string2;
      }
      const substringLength = substring.length;
      let endIndex = 0;
      let returnValue = "";
      do {
        returnValue += string2.substr(endIndex, index4 - endIndex) + substring + replacer;
        endIndex = index4 + substringLength;
        index4 = string2.indexOf(substring, endIndex);
      } while (index4 !== -1);
      returnValue += string2.substr(endIndex);
      return returnValue;
    };
    var stringEncaseCRLFWithFirstIndex6 = (string2, prefix2, postfix, index4) => {
      let endIndex = 0;
      let returnValue = "";
      do {
        const gotCR = string2[index4 - 1] === "\r";
        returnValue += string2.substr(endIndex, (gotCR ? index4 - 1 : index4) - endIndex) + prefix2 + (gotCR ? "\r\n" : "\n") + postfix;
        endIndex = index4 + 1;
        index4 = string2.indexOf("\n", endIndex);
      } while (index4 !== -1);
      returnValue += string2.substr(endIndex);
      return returnValue;
    };
    module2.exports = {
      stringReplaceAll: stringReplaceAll6,
      stringEncaseCRLFWithFirstIndex: stringEncaseCRLFWithFirstIndex6
    };
  }
});

// ../../node_modules/log-symbols/node_modules/chalk/source/templates.js
var require_templates2 = __commonJS({
  "../../node_modules/log-symbols/node_modules/chalk/source/templates.js"(exports2, module2) {
    "use strict";
    var TEMPLATE_REGEX2 = /(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi;
    var STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g;
    var STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/;
    var ESCAPE_REGEX2 = /\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi;
    var ESCAPES2 = /* @__PURE__ */ new Map([
      ["n", "\n"],
      ["r", "\r"],
      ["t", "	"],
      ["b", "\b"],
      ["f", "\f"],
      ["v", "\v"],
      ["0", "\0"],
      ["\\", "\\"],
      ["e", "\x1B"],
      ["a", "\x07"]
    ]);
    function unescape3(c) {
      const u3 = c[0] === "u";
      const bracket = c[1] === "{";
      if (u3 && !bracket && c.length === 5 || c[0] === "x" && c.length === 3) {
        return String.fromCharCode(parseInt(c.slice(1), 16));
      }
      if (u3 && bracket) {
        return String.fromCodePoint(parseInt(c.slice(2, -1), 16));
      }
      return ESCAPES2.get(c) || c;
    }
    function parseArguments(name3, arguments_) {
      const results = [];
      const chunks = arguments_.trim().split(/\s*,\s*/g);
      let matches4;
      for (const chunk of chunks) {
        const number2 = Number(chunk);
        if (!Number.isNaN(number2)) {
          results.push(number2);
        } else if (matches4 = chunk.match(STRING_REGEX)) {
          results.push(matches4[2].replace(ESCAPE_REGEX2, (m2, escape5, character) => escape5 ? unescape3(escape5) : character));
        } else {
          throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name3}')`);
        }
      }
      return results;
    }
    function parseStyle(style3) {
      STYLE_REGEX.lastIndex = 0;
      const results = [];
      let matches4;
      while ((matches4 = STYLE_REGEX.exec(style3)) !== null) {
        const name3 = matches4[1];
        if (matches4[2]) {
          const args = parseArguments(name3, matches4[2]);
          results.push([name3].concat(args));
        } else {
          results.push([name3]);
        }
      }
      return results;
    }
    function buildStyle(chalk6, styles14) {
      const enabled = {};
      for (const layer of styles14) {
        for (const style3 of layer.styles) {
          enabled[style3[0]] = layer.inverse ? null : style3.slice(1);
        }
      }
      let current2 = chalk6;
      for (const [styleName, styles15] of Object.entries(enabled)) {
        if (!Array.isArray(styles15)) {
          continue;
        }
        if (!(styleName in current2)) {
          throw new Error(`Unknown Chalk style: ${styleName}`);
        }
        current2 = styles15.length > 0 ? current2[styleName](...styles15) : current2[styleName];
      }
      return current2;
    }
    module2.exports = (chalk6, temporary) => {
      const styles14 = [];
      const chunks = [];
      let chunk = [];
      temporary.replace(TEMPLATE_REGEX2, (m2, escapeCharacter, inverse, style3, close2, character) => {
        if (escapeCharacter) {
          chunk.push(unescape3(escapeCharacter));
        } else if (style3) {
          const string2 = chunk.join("");
          chunk = [];
          chunks.push(styles14.length === 0 ? string2 : buildStyle(chalk6, styles14)(string2));
          styles14.push({ inverse, styles: parseStyle(style3) });
        } else if (close2) {
          if (styles14.length === 0) {
            throw new Error("Found extraneous } in Chalk template literal");
          }
          chunks.push(buildStyle(chalk6, styles14)(chunk.join("")));
          chunk = [];
          styles14.pop();
        } else {
          chunk.push(character);
        }
      });
      chunks.push(chunk.join(""));
      if (styles14.length > 0) {
        const errMessage = `Chalk template literal is missing ${styles14.length} closing bracket${styles14.length === 1 ? "" : "s"} (\`}\`)`;
        throw new Error(errMessage);
      }
      return chunks.join("");
    };
  }
});

// ../../node_modules/log-symbols/node_modules/chalk/source/index.js
var require_source2 = __commonJS({
  "../../node_modules/log-symbols/node_modules/chalk/source/index.js"(exports2, module2) {
    "use strict";
    var ansiStyles7 = require_ansi_styles3();
    var { stdout: stdoutColor6, stderr: stderrColor6 } = require_supports_color2();
    var {
      stringReplaceAll: stringReplaceAll6,
      stringEncaseCRLFWithFirstIndex: stringEncaseCRLFWithFirstIndex6
    } = require_util5();
    var { isArray: isArray2 } = Array;
    var levelMapping6 = [
      "ansi",
      "ansi",
      "ansi256",
      "ansi16m"
    ];
    var styles14 = /* @__PURE__ */ Object.create(null);
    var applyOptions6 = (object, options = {}) => {
      if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
        throw new Error("The `level` option should be an integer from 0 to 3");
      }
      const colorLevel = stdoutColor6 ? stdoutColor6.level : 0;
      object.level = options.level === void 0 ? colorLevel : options.level;
    };
    var ChalkClass = class {
      constructor(options) {
        return chalkFactory6(options);
      }
    };
    var chalkFactory6 = (options) => {
      const chalk7 = {};
      applyOptions6(chalk7, options);
      chalk7.template = (...arguments_) => chalkTag(chalk7.template, ...arguments_);
      Object.setPrototypeOf(chalk7, Chalk.prototype);
      Object.setPrototypeOf(chalk7.template, chalk7);
      chalk7.template.constructor = () => {
        throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.");
      };
      chalk7.template.Instance = ChalkClass;
      return chalk7.template;
    };
    function Chalk(options) {
      return chalkFactory6(options);
    }
    for (const [styleName, style3] of Object.entries(ansiStyles7)) {
      styles14[styleName] = {
        get() {
          const builder = createBuilder6(this, createStyler6(style3.open, style3.close, this._styler), this._isEmpty);
          Object.defineProperty(this, styleName, { value: builder });
          return builder;
        }
      };
    }
    styles14.visible = {
      get() {
        const builder = createBuilder6(this, this._styler, true);
        Object.defineProperty(this, "visible", { value: builder });
        return builder;
      }
    };
    var usedModels6 = ["rgb", "hex", "keyword", "hsl", "hsv", "hwb", "ansi", "ansi256"];
    for (const model of usedModels6) {
      styles14[model] = {
        get() {
          const { level } = this;
          return function(...arguments_) {
            const styler = createStyler6(ansiStyles7.color[levelMapping6[level]][model](...arguments_), ansiStyles7.color.close, this._styler);
            return createBuilder6(this, styler, this._isEmpty);
          };
        }
      };
    }
    for (const model of usedModels6) {
      const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
      styles14[bgModel] = {
        get() {
          const { level } = this;
          return function(...arguments_) {
            const styler = createStyler6(ansiStyles7.bgColor[levelMapping6[level]][model](...arguments_), ansiStyles7.bgColor.close, this._styler);
            return createBuilder6(this, styler, this._isEmpty);
          };
        }
      };
    }
    var proto9 = Object.defineProperties(() => {
    }, {
      ...styles14,
      level: {
        enumerable: true,
        get() {
          return this._generator.level;
        },
        set(level) {
          this._generator.level = level;
        }
      }
    });
    var createStyler6 = (open2, close2, parent2) => {
      let openAll;
      let closeAll;
      if (parent2 === void 0) {
        openAll = open2;
        closeAll = close2;
      } else {
        openAll = parent2.openAll + open2;
        closeAll = close2 + parent2.closeAll;
      }
      return {
        open: open2,
        close: close2,
        openAll,
        closeAll,
        parent: parent2
      };
    };
    var createBuilder6 = (self2, _styler, _isEmpty) => {
      const builder = (...arguments_) => {
        if (isArray2(arguments_[0]) && isArray2(arguments_[0].raw)) {
          return applyStyle6(builder, chalkTag(builder, ...arguments_));
        }
        return applyStyle6(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
      };
      Object.setPrototypeOf(builder, proto9);
      builder._generator = self2;
      builder._styler = _styler;
      builder._isEmpty = _isEmpty;
      return builder;
    };
    var applyStyle6 = (self2, string2) => {
      if (self2.level <= 0 || !string2) {
        return self2._isEmpty ? "" : string2;
      }
      let styler = self2._styler;
      if (styler === void 0) {
        return string2;
      }
      const { openAll, closeAll } = styler;
      if (string2.indexOf("\x1B") !== -1) {
        while (styler !== void 0) {
          string2 = stringReplaceAll6(string2, styler.close, styler.open);
          styler = styler.parent;
        }
      }
      const lfIndex = string2.indexOf("\n");
      if (lfIndex !== -1) {
        string2 = stringEncaseCRLFWithFirstIndex6(string2, closeAll, openAll, lfIndex);
      }
      return openAll + string2 + closeAll;
    };
    var template;
    var chalkTag = (chalk7, ...strings) => {
      const [firstString] = strings;
      if (!isArray2(firstString) || !isArray2(firstString.raw)) {
        return strings.join(" ");
      }
      const arguments_ = strings.slice(1);
      const parts = [firstString.raw[0]];
      for (let i2 = 1; i2 < firstString.length; i2++) {
        parts.push(
          String(arguments_[i2 - 1]).replace(/[{}\\]/g, "\\$&"),
          String(firstString.raw[i2])
        );
      }
      if (template === void 0) {
        template = require_templates2();
      }
      return template(chalk7, parts.join(""));
    };
    Object.defineProperties(Chalk.prototype, styles14);
    var chalk6 = Chalk();
    chalk6.supportsColor = stdoutColor6;
    chalk6.stderr = Chalk({ level: stderrColor6 ? stderrColor6.level : 0 });
    chalk6.stderr.supportsColor = stderrColor6;
    module2.exports = chalk6;
  }
});

// ../../node_modules/is-unicode-supported/index.js
var require_is_unicode_supported = __commonJS({
  "../../node_modules/is-unicode-supported/index.js"(exports2, module2) {
    "use strict";
    module2.exports = () => {
      if (process.platform !== "win32") {
        return true;
      }
      return Boolean(process.env.CI) || Boolean(process.env.WT_SESSION) || // Windows Terminal
      process.env.TERM_PROGRAM === "vscode" || process.env.TERM === "xterm-256color" || process.env.TERM === "alacritty";
    };
  }
});

// ../../node_modules/log-symbols/index.js
var require_log_symbols = __commonJS({
  "../../node_modules/log-symbols/index.js"(exports2, module2) {
    "use strict";
    var chalk6 = require_source2();
    var isUnicodeSupported2 = require_is_unicode_supported();
    var main2 = {
      info: chalk6.blue("\u2139"),
      success: chalk6.green("\u2714"),
      warning: chalk6.yellow("\u26A0"),
      error: chalk6.red("\u2716")
    };
    var fallback = {
      info: chalk6.blue("i"),
      success: chalk6.green("\u221A"),
      warning: chalk6.yellow("\u203C"),
      error: chalk6.red("\xD7")
    };
    module2.exports = isUnicodeSupported2() ? main2 : fallback;
  }
});

// ../../node_modules/ora/node_modules/ansi-regex/index.js
var require_ansi_regex2 = __commonJS({
  "../../node_modules/ora/node_modules/ansi-regex/index.js"(exports2, module2) {
    "use strict";
    module2.exports = ({ onlyFirst = false } = {}) => {
      const pattern = [
        "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
        "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"
      ].join("|");
      return new RegExp(pattern, onlyFirst ? void 0 : "g");
    };
  }
});

// ../../node_modules/ora/node_modules/strip-ansi/index.js
var require_strip_ansi2 = __commonJS({
  "../../node_modules/ora/node_modules/strip-ansi/index.js"(exports2, module2) {
    "use strict";
    var ansiRegex2 = require_ansi_regex2();
    module2.exports = (string2) => typeof string2 === "string" ? string2.replace(ansiRegex2(), "") : string2;
  }
});

// ../../node_modules/clone/clone.js
var require_clone2 = __commonJS({
  "../../node_modules/clone/clone.js"(exports2, module2) {
    var clone3 = (function() {
      "use strict";
      function clone4(parent2, circular, depth, prototype) {
        var filter6;
        if (typeof circular === "object") {
          depth = circular.depth;
          prototype = circular.prototype;
          filter6 = circular.filter;
          circular = circular.circular;
        }
        var allParents = [];
        var allChildren = [];
        var useBuffer = typeof Buffer != "undefined";
        if (typeof circular == "undefined")
          circular = true;
        if (typeof depth == "undefined")
          depth = Infinity;
        function _clone(parent3, depth2) {
          if (parent3 === null)
            return null;
          if (depth2 == 0)
            return parent3;
          var child;
          var proto9;
          if (typeof parent3 != "object") {
            return parent3;
          }
          if (clone4.__isArray(parent3)) {
            child = [];
          } else if (clone4.__isRegExp(parent3)) {
            child = new RegExp(parent3.source, __getRegExpFlags(parent3));
            if (parent3.lastIndex) child.lastIndex = parent3.lastIndex;
          } else if (clone4.__isDate(parent3)) {
            child = new Date(parent3.getTime());
          } else if (useBuffer && Buffer.isBuffer(parent3)) {
            if (Buffer.allocUnsafe) {
              child = Buffer.allocUnsafe(parent3.length);
            } else {
              child = new Buffer(parent3.length);
            }
            parent3.copy(child);
            return child;
          } else {
            if (typeof prototype == "undefined") {
              proto9 = Object.getPrototypeOf(parent3);
              child = Object.create(proto9);
            } else {
              child = Object.create(prototype);
              proto9 = prototype;
            }
          }
          if (circular) {
            var index4 = allParents.indexOf(parent3);
            if (index4 != -1) {
              return allChildren[index4];
            }
            allParents.push(parent3);
            allChildren.push(child);
          }
          for (var i2 in parent3) {
            var attrs;
            if (proto9) {
              attrs = Object.getOwnPropertyDescriptor(proto9, i2);
            }
            if (attrs && attrs.set == null) {
              continue;
            }
            child[i2] = _clone(parent3[i2], depth2 - 1);
          }
          return child;
        }
        return _clone(parent2, depth);
      }
      clone4.clonePrototype = function clonePrototype(parent2) {
        if (parent2 === null)
          return null;
        var c = function() {
        };
        c.prototype = parent2;
        return new c();
      };
      function __objToStr(o) {
        return Object.prototype.toString.call(o);
      }
      ;
      clone4.__objToStr = __objToStr;
      function __isDate(o) {
        return typeof o === "object" && __objToStr(o) === "[object Date]";
      }
      ;
      clone4.__isDate = __isDate;
      function __isArray(o) {
        return typeof o === "object" && __objToStr(o) === "[object Array]";
      }
      ;
      clone4.__isArray = __isArray;
      function __isRegExp(o) {
        return typeof o === "object" && __objToStr(o) === "[object RegExp]";
      }
      ;
      clone4.__isRegExp = __isRegExp;
      function __getRegExpFlags(re) {
        var flags = "";
        if (re.global) flags += "g";
        if (re.ignoreCase) flags += "i";
        if (re.multiline) flags += "m";
        return flags;
      }
      ;
      clone4.__getRegExpFlags = __getRegExpFlags;
      return clone4;
    })();
    if (typeof module2 === "object" && module2.exports) {
      module2.exports = clone3;
    }
  }
});

// ../../node_modules/defaults/index.js
var require_defaults = __commonJS({
  "../../node_modules/defaults/index.js"(exports2, module2) {
    var clone3 = require_clone2();
    module2.exports = function(options, defaults3) {
      options = options || {};
      Object.keys(defaults3).forEach(function(key2) {
        if (typeof options[key2] === "undefined") {
          options[key2] = clone3(defaults3[key2]);
        }
      });
      return options;
    };
  }
});

// ../../node_modules/wcwidth/combining.js
var require_combining = __commonJS({
  "../../node_modules/wcwidth/combining.js"(exports2, module2) {
    module2.exports = [
      [768, 879],
      [1155, 1158],
      [1160, 1161],
      [1425, 1469],
      [1471, 1471],
      [1473, 1474],
      [1476, 1477],
      [1479, 1479],
      [1536, 1539],
      [1552, 1557],
      [1611, 1630],
      [1648, 1648],
      [1750, 1764],
      [1767, 1768],
      [1770, 1773],
      [1807, 1807],
      [1809, 1809],
      [1840, 1866],
      [1958, 1968],
      [2027, 2035],
      [2305, 2306],
      [2364, 2364],
      [2369, 2376],
      [2381, 2381],
      [2385, 2388],
      [2402, 2403],
      [2433, 2433],
      [2492, 2492],
      [2497, 2500],
      [2509, 2509],
      [2530, 2531],
      [2561, 2562],
      [2620, 2620],
      [2625, 2626],
      [2631, 2632],
      [2635, 2637],
      [2672, 2673],
      [2689, 2690],
      [2748, 2748],
      [2753, 2757],
      [2759, 2760],
      [2765, 2765],
      [2786, 2787],
      [2817, 2817],
      [2876, 2876],
      [2879, 2879],
      [2881, 2883],
      [2893, 2893],
      [2902, 2902],
      [2946, 2946],
      [3008, 3008],
      [3021, 3021],
      [3134, 3136],
      [3142, 3144],
      [3146, 3149],
      [3157, 3158],
      [3260, 3260],
      [3263, 3263],
      [3270, 3270],
      [3276, 3277],
      [3298, 3299],
      [3393, 3395],
      [3405, 3405],
      [3530, 3530],
      [3538, 3540],
      [3542, 3542],
      [3633, 3633],
      [3636, 3642],
      [3655, 3662],
      [3761, 3761],
      [3764, 3769],
      [3771, 3772],
      [3784, 3789],
      [3864, 3865],
      [3893, 3893],
      [3895, 3895],
      [3897, 3897],
      [3953, 3966],
      [3968, 3972],
      [3974, 3975],
      [3984, 3991],
      [3993, 4028],
      [4038, 4038],
      [4141, 4144],
      [4146, 4146],
      [4150, 4151],
      [4153, 4153],
      [4184, 4185],
      [4448, 4607],
      [4959, 4959],
      [5906, 5908],
      [5938, 5940],
      [5970, 5971],
      [6002, 6003],
      [6068, 6069],
      [6071, 6077],
      [6086, 6086],
      [6089, 6099],
      [6109, 6109],
      [6155, 6157],
      [6313, 6313],
      [6432, 6434],
      [6439, 6440],
      [6450, 6450],
      [6457, 6459],
      [6679, 6680],
      [6912, 6915],
      [6964, 6964],
      [6966, 6970],
      [6972, 6972],
      [6978, 6978],
      [7019, 7027],
      [7616, 7626],
      [7678, 7679],
      [8203, 8207],
      [8234, 8238],
      [8288, 8291],
      [8298, 8303],
      [8400, 8431],
      [12330, 12335],
      [12441, 12442],
      [43014, 43014],
      [43019, 43019],
      [43045, 43046],
      [64286, 64286],
      [65024, 65039],
      [65056, 65059],
      [65279, 65279],
      [65529, 65531],
      [68097, 68099],
      [68101, 68102],
      [68108, 68111],
      [68152, 68154],
      [68159, 68159],
      [119143, 119145],
      [119155, 119170],
      [119173, 119179],
      [119210, 119213],
      [119362, 119364],
      [917505, 917505],
      [917536, 917631],
      [917760, 917999]
    ];
  }
});

// ../../node_modules/wcwidth/index.js
var require_wcwidth = __commonJS({
  "../../node_modules/wcwidth/index.js"(exports2, module2) {
    "use strict";
    var defaults3 = require_defaults();
    var combining = require_combining();
    var DEFAULTS = {
      nul: 0,
      control: 0
    };
    module2.exports = function wcwidth2(str2) {
      return wcswidth(str2, DEFAULTS);
    };
    module2.exports.config = function(opts) {
      opts = defaults3(opts || {}, DEFAULTS);
      return function wcwidth2(str2) {
        return wcswidth(str2, opts);
      };
    };
    function wcswidth(str2, opts) {
      if (typeof str2 !== "string") return wcwidth(str2, opts);
      var s5 = 0;
      for (var i2 = 0; i2 < str2.length; i2++) {
        var n = wcwidth(str2.charCodeAt(i2), opts);
        if (n < 0) return -1;
        s5 += n;
      }
      return s5;
    }
    function wcwidth(ucs, opts) {
      if (ucs === 0) return opts.nul;
      if (ucs < 32 || ucs >= 127 && ucs < 160) return opts.control;
      if (bisearch(ucs)) return 0;
      return 1 + (ucs >= 4352 && (ucs <= 4447 || // Hangul Jamo init. consonants
      ucs == 9001 || ucs == 9002 || ucs >= 11904 && ucs <= 42191 && ucs != 12351 || // CJK ... Yi
      ucs >= 44032 && ucs <= 55203 || // Hangul Syllables
      ucs >= 63744 && ucs <= 64255 || // CJK Compatibility Ideographs
      ucs >= 65040 && ucs <= 65049 || // Vertical forms
      ucs >= 65072 && ucs <= 65135 || // CJK Compatibility Forms
      ucs >= 65280 && ucs <= 65376 || // Fullwidth Forms
      ucs >= 65504 && ucs <= 65510 || ucs >= 131072 && ucs <= 196605 || ucs >= 196608 && ucs <= 262141));
    }
    function bisearch(ucs) {
      var min = 0;
      var max = combining.length - 1;
      var mid;
      if (ucs < combining[0][0] || ucs > combining[max][1]) return false;
      while (max >= min) {
        mid = Math.floor((min + max) / 2);
        if (ucs > combining[mid][1]) min = mid + 1;
        else if (ucs < combining[mid][0]) max = mid - 1;
        else return true;
      }
      return false;
    }
  }
});

// ../../node_modules/is-interactive/index.js
var require_is_interactive = __commonJS({
  "../../node_modules/is-interactive/index.js"(exports2, module2) {
    "use strict";
    module2.exports = ({ stream: stream3 = process.stdout } = {}) => {
      return Boolean(
        stream3 && stream3.isTTY && process.env.TERM !== "dumb" && !("CI" in process.env)
      );
    };
  }
});

// ../../node_modules/bl/node_modules/readable-stream/lib/internal/streams/stream.js
var require_stream2 = __commonJS({
  "../../node_modules/bl/node_modules/readable-stream/lib/internal/streams/stream.js"(exports2, module2) {
    module2.exports = require("stream");
  }
});

// ../../node_modules/bl/node_modules/readable-stream/lib/internal/streams/buffer_list.js
var require_buffer_list = __commonJS({
  "../../node_modules/bl/node_modules/readable-stream/lib/internal/streams/buffer_list.js"(exports2, module2) {
    "use strict";
    function ownKeys(object, enumerableOnly) {
      var keys2 = Object.keys(object);
      if (Object.getOwnPropertySymbols) {
        var symbols4 = Object.getOwnPropertySymbols(object);
        enumerableOnly && (symbols4 = symbols4.filter(function(sym) {
          return Object.getOwnPropertyDescriptor(object, sym).enumerable;
        })), keys2.push.apply(keys2, symbols4);
      }
      return keys2;
    }
    function _objectSpread(target) {
      for (var i2 = 1; i2 < arguments.length; i2++) {
        var source2 = null != arguments[i2] ? arguments[i2] : {};
        i2 % 2 ? ownKeys(Object(source2), true).forEach(function(key2) {
          _defineProperty(target, key2, source2[key2]);
        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source2)) : ownKeys(Object(source2)).forEach(function(key2) {
          Object.defineProperty(target, key2, Object.getOwnPropertyDescriptor(source2, key2));
        });
      }
      return target;
    }
    function _defineProperty(obj, key2, value) {
      key2 = _toPropertyKey(key2);
      if (key2 in obj) {
        Object.defineProperty(obj, key2, { value, enumerable: true, configurable: true, writable: true });
      } else {
        obj[key2] = value;
      }
      return obj;
    }
    function _classCallCheck(instance, Constructor) {
      if (!(instance instanceof Constructor)) {
        throw new TypeError("Cannot call a class as a 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, _toPropertyKey(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 _toPropertyKey(arg2) {
      var key2 = _toPrimitive(arg2, "string");
      return typeof key2 === "symbol" ? key2 : String(key2);
    }
    function _toPrimitive(input3, hint) {
      if (typeof input3 !== "object" || input3 === null) return input3;
      var prim = input3[Symbol.toPrimitive];
      if (prim !== void 0) {
        var res = prim.call(input3, hint || "default");
        if (typeof res !== "object") return res;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return (hint === "string" ? String : Number)(input3);
    }
    var _require = require("buffer");
    var Buffer7 = _require.Buffer;
    var _require2 = require("util");
    var inspect4 = _require2.inspect;
    var custom2 = inspect4 && inspect4.custom || "inspect";
    function copyBuffer(src, target, offset) {
      Buffer7.prototype.copy.call(src, target, offset);
    }
    module2.exports = /* @__PURE__ */ (function() {
      function BufferList() {
        _classCallCheck(this, BufferList);
        this.head = null;
        this.tail = null;
        this.length = 0;
      }
      _createClass(BufferList, [{
        key: "push",
        value: function push(v) {
          var entry = {
            data: v,
            next: null
          };
          if (this.length > 0) this.tail.next = entry;
          else this.head = entry;
          this.tail = entry;
          ++this.length;
        }
      }, {
        key: "unshift",
        value: function unshift(v) {
          var entry = {
            data: v,
            next: this.head
          };
          if (this.length === 0) this.tail = entry;
          this.head = entry;
          ++this.length;
        }
      }, {
        key: "shift",
        value: function shift() {
          if (this.length === 0) return;
          var ret = this.head.data;
          if (this.length === 1) this.head = this.tail = null;
          else this.head = this.head.next;
          --this.length;
          return ret;
        }
      }, {
        key: "clear",
        value: function clear() {
          this.head = this.tail = null;
          this.length = 0;
        }
      }, {
        key: "join",
        value: function join19(s5) {
          if (this.length === 0) return "";
          var p5 = this.head;
          var ret = "" + p5.data;
          while (p5 = p5.next) ret += s5 + p5.data;
          return ret;
        }
      }, {
        key: "concat",
        value: function concat2(n) {
          if (this.length === 0) return Buffer7.alloc(0);
          var ret = Buffer7.allocUnsafe(n >>> 0);
          var p5 = this.head;
          var i2 = 0;
          while (p5) {
            copyBuffer(p5.data, ret, i2);
            i2 += p5.data.length;
            p5 = p5.next;
          }
          return ret;
        }
        // Consumes a specified amount of bytes or characters from the buffered data.
      }, {
        key: "consume",
        value: function consume(n, hasStrings) {
          var ret;
          if (n < this.head.data.length) {
            ret = this.head.data.slice(0, n);
            this.head.data = this.head.data.slice(n);
          } else if (n === this.head.data.length) {
            ret = this.shift();
          } else {
            ret = hasStrings ? this._getString(n) : this._getBuffer(n);
          }
          return ret;
        }
      }, {
        key: "first",
        value: function first2() {
          return this.head.data;
        }
        // Consumes a specified amount of characters from the buffered data.
      }, {
        key: "_getString",
        value: function _getString(n) {
          var p5 = this.head;
          var c = 1;
          var ret = p5.data;
          n -= ret.length;
          while (p5 = p5.next) {
            var str2 = p5.data;
            var nb = n > str2.length ? str2.length : n;
            if (nb === str2.length) ret += str2;
            else ret += str2.slice(0, n);
            n -= nb;
            if (n === 0) {
              if (nb === str2.length) {
                ++c;
                if (p5.next) this.head = p5.next;
                else this.head = this.tail = null;
              } else {
                this.head = p5;
                p5.data = str2.slice(nb);
              }
              break;
            }
            ++c;
          }
          this.length -= c;
          return ret;
        }
        // Consumes a specified amount of bytes from the buffered data.
      }, {
        key: "_getBuffer",
        value: function _getBuffer(n) {
          var ret = Buffer7.allocUnsafe(n);
          var p5 = this.head;
          var c = 1;
          p5.data.copy(ret);
          n -= p5.data.length;
          while (p5 = p5.next) {
            var buf = p5.data;
            var nb = n > buf.length ? buf.length : n;
            buf.copy(ret, ret.length - n, 0, nb);
            n -= nb;
            if (n === 0) {
              if (nb === buf.length) {
                ++c;
                if (p5.next) this.head = p5.next;
                else this.head = this.tail = null;
              } else {
                this.head = p5;
                p5.data = buf.slice(nb);
              }
              break;
            }
            ++c;
          }
          this.length -= c;
          return ret;
        }
        // Make sure the linked list only shows the minimal necessary information.
      }, {
        key: custom2,
        value: function value(_2, options) {
          return inspect4(this, _objectSpread(_objectSpread({}, options), {}, {
            // Only inspect one level.
            depth: 0,
            // It should not recurse.
            customInspect: false
          }));
        }
      }]);
      return BufferList;
    })();
  }
});

// ../../node_modules/bl/node_modules/readable-stream/lib/internal/streams/destroy.js
var require_destroy2 = __commonJS({
  "../../node_modules/bl/node_modules/readable-stream/lib/internal/streams/destroy.js"(exports2, module2) {
    "use strict";
    function destroy(err, cb) {
      var _this = this;
      var readableDestroyed = this._readableState && this._readableState.destroyed;
      var writableDestroyed = this._writableState && this._writableState.destroyed;
      if (readableDestroyed || writableDestroyed) {
        if (cb) {
          cb(err);
        } else if (err) {
          if (!this._writableState) {
            process.nextTick(emitErrorNT, this, err);
          } else if (!this._writableState.errorEmitted) {
            this._writableState.errorEmitted = true;
            process.nextTick(emitErrorNT, this, err);
          }
        }
        return this;
      }
      if (this._readableState) {
        this._readableState.destroyed = true;
      }
      if (this._writableState) {
        this._writableState.destroyed = true;
      }
      this._destroy(err || null, function(err2) {
        if (!cb && err2) {
          if (!_this._writableState) {
            process.nextTick(emitErrorAndCloseNT, _this, err2);
          } else if (!_this._writableState.errorEmitted) {
            _this._writableState.errorEmitted = true;
            process.nextTick(emitErrorAndCloseNT, _this, err2);
          } else {
            process.nextTick(emitCloseNT, _this);
          }
        } else if (cb) {
          process.nextTick(emitCloseNT, _this);
          cb(err2);
        } else {
          process.nextTick(emitCloseNT, _this);
        }
      });
      return this;
    }
    function emitErrorAndCloseNT(self2, err) {
      emitErrorNT(self2, err);
      emitCloseNT(self2);
    }
    function emitCloseNT(self2) {
      if (self2._writableState && !self2._writableState.emitClose) return;
      if (self2._readableState && !self2._readableState.emitClose) return;
      self2.emit("close");
    }
    function undestroy() {
      if (this._readableState) {
        this._readableState.destroyed = false;
        this._readableState.reading = false;
        this._readableState.ended = false;
        this._readableState.endEmitted = false;
      }
      if (this._writableState) {
        this._writableState.destroyed = false;
        this._writableState.ended = false;
        this._writableState.ending = false;
        this._writableState.finalCalled = false;
        this._writableState.prefinished = false;
        this._writableState.finished = false;
        this._writableState.errorEmitted = false;
      }
    }
    function emitErrorNT(self2, err) {
      self2.emit("error", err);
    }
    function errorOrDestroy(stream3, err) {
      var rState = stream3._readableState;
      var wState = stream3._writableState;
      if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream3.destroy(err);
      else stream3.emit("error", err);
    }
    module2.exports = {
      destroy,
      undestroy,
      errorOrDestroy
    };
  }
});

// ../../node_modules/bl/node_modules/readable-stream/errors.js
var require_errors2 = __commonJS({
  "../../node_modules/bl/node_modules/readable-stream/errors.js"(exports2, module2) {
    "use strict";
    var codes = {};
    function createErrorType(code7, message, Base) {
      if (!Base) {
        Base = Error;
      }
      function getMessage(arg1, arg2, arg3) {
        if (typeof message === "string") {
          return message;
        } else {
          return message(arg1, arg2, arg3);
        }
      }
      class NodeError extends Base {
        constructor(arg1, arg2, arg3) {
          super(getMessage(arg1, arg2, arg3));
        }
      }
      NodeError.prototype.name = Base.name;
      NodeError.prototype.code = code7;
      codes[code7] = NodeError;
    }
    function oneOf(expected, thing) {
      if (Array.isArray(expected)) {
        const len = expected.length;
        expected = expected.map((i2) => String(i2));
        if (len > 2) {
          return `one of ${thing} ${expected.slice(0, len - 1).join(", ")}, or ` + expected[len - 1];
        } else if (len === 2) {
          return `one of ${thing} ${expected[0]} or ${expected[1]}`;
        } else {
          return `of ${thing} ${expected[0]}`;
        }
      } else {
        return `of ${thing} ${String(expected)}`;
      }
    }
    function startsWith(str2, search4, pos) {
      return str2.substr(!pos || pos < 0 ? 0 : +pos, search4.length) === search4;
    }
    function endsWith(str2, search4, this_len) {
      if (this_len === void 0 || this_len > str2.length) {
        this_len = str2.length;
      }
      return str2.substring(this_len - search4.length, this_len) === search4;
    }
    function includes2(str2, search4, start) {
      if (typeof start !== "number") {
        start = 0;
      }
      if (start + search4.length > str2.length) {
        return false;
      } else {
        return str2.indexOf(search4, start) !== -1;
      }
    }
    createErrorType("ERR_INVALID_OPT_VALUE", function(name3, value) {
      return 'The value "' + value + '" is invalid for option "' + name3 + '"';
    }, TypeError);
    createErrorType("ERR_INVALID_ARG_TYPE", function(name3, expected, actual) {
      let determiner;
      if (typeof expected === "string" && startsWith(expected, "not ")) {
        determiner = "must not be";
        expected = expected.replace(/^not /, "");
      } else {
        determiner = "must be";
      }
      let msg;
      if (endsWith(name3, " argument")) {
        msg = `The ${name3} ${determiner} ${oneOf(expected, "type")}`;
      } else {
        const type2 = includes2(name3, ".") ? "property" : "argument";
        msg = `The "${name3}" ${type2} ${determiner} ${oneOf(expected, "type")}`;
      }
      msg += `. Received type ${typeof actual}`;
      return msg;
    }, TypeError);
    createErrorType("ERR_STREAM_PUSH_AFTER_EOF", "stream.push() after EOF");
    createErrorType("ERR_METHOD_NOT_IMPLEMENTED", function(name3) {
      return "The " + name3 + " method is not implemented";
    });
    createErrorType("ERR_STREAM_PREMATURE_CLOSE", "Premature close");
    createErrorType("ERR_STREAM_DESTROYED", function(name3) {
      return "Cannot call " + name3 + " after a stream was destroyed";
    });
    createErrorType("ERR_MULTIPLE_CALLBACK", "Callback called multiple times");
    createErrorType("ERR_STREAM_CANNOT_PIPE", "Cannot pipe, not readable");
    createErrorType("ERR_STREAM_WRITE_AFTER_END", "write after end");
    createErrorType("ERR_STREAM_NULL_VALUES", "May not write null values to stream", TypeError);
    createErrorType("ERR_UNKNOWN_ENCODING", function(arg2) {
      return "Unknown encoding: " + arg2;
    }, TypeError);
    createErrorType("ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "stream.unshift() after end event");
    module2.exports.codes = codes;
  }
});

// ../../node_modules/bl/node_modules/readable-stream/lib/internal/streams/state.js
var require_state = __commonJS({
  "../../node_modules/bl/node_modules/readable-stream/lib/internal/streams/state.js"(exports2, module2) {
    "use strict";
    var ERR_INVALID_OPT_VALUE = require_errors2().codes.ERR_INVALID_OPT_VALUE;
    function highWaterMarkFrom(options, isDuplex, duplexKey) {
      return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;
    }
    function getHighWaterMark(state, options, duplexKey, isDuplex) {
      var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);
      if (hwm != null) {
        if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {
          var name3 = isDuplex ? duplexKey : "highWaterMark";
          throw new ERR_INVALID_OPT_VALUE(name3, hwm);
        }
        return Math.floor(hwm);
      }
      return state.objectMode ? 16 : 16 * 1024;
    }
    module2.exports = {
      getHighWaterMark
    };
  }
});

// ../../node_modules/util-deprecate/node.js
var require_node7 = __commonJS({
  "../../node_modules/util-deprecate/node.js"(exports2, module2) {
    module2.exports = require("util").deprecate;
  }
});

// ../../node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js
var require_stream_writable = __commonJS({
  "../../node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js"(exports2, module2) {
    "use strict";
    module2.exports = Writable2;
    function CorkedRequest(state) {
      var _this = this;
      this.next = null;
      this.entry = null;
      this.finish = function() {
        onCorkedFinish(_this, state);
      };
    }
    var Duplex2;
    Writable2.WritableState = WritableState;
    var internalUtil = {
      deprecate: require_node7()
    };
    var Stream4 = require_stream2();
    var Buffer7 = require("buffer").Buffer;
    var OurUint8Array = (typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : {}).Uint8Array || function() {
    };
    function _uint8ArrayToBuffer(chunk) {
      return Buffer7.from(chunk);
    }
    function _isUint8Array(obj) {
      return Buffer7.isBuffer(obj) || obj instanceof OurUint8Array;
    }
    var destroyImpl = require_destroy2();
    var _require = require_state();
    var getHighWaterMark = _require.getHighWaterMark;
    var _require$codes = require_errors2().codes;
    var ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE;
    var ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED;
    var ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK;
    var ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE;
    var ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;
    var ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES;
    var ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END;
    var ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;
    var errorOrDestroy = destroyImpl.errorOrDestroy;
    require_inherits()(Writable2, Stream4);
    function nop() {
    }
    function WritableState(options, stream3, isDuplex) {
      Duplex2 = Duplex2 || require_stream_duplex();
      options = options || {};
      if (typeof isDuplex !== "boolean") isDuplex = stream3 instanceof Duplex2;
      this.objectMode = !!options.objectMode;
      if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
      this.highWaterMark = getHighWaterMark(this, options, "writableHighWaterMark", isDuplex);
      this.finalCalled = false;
      this.needDrain = false;
      this.ending = false;
      this.ended = false;
      this.finished = false;
      this.destroyed = false;
      var noDecode = options.decodeStrings === false;
      this.decodeStrings = !noDecode;
      this.defaultEncoding = options.defaultEncoding || "utf8";
      this.length = 0;
      this.writing = false;
      this.corked = 0;
      this.sync = true;
      this.bufferProcessing = false;
      this.onwrite = function(er) {
        onwrite(stream3, er);
      };
      this.writecb = null;
      this.writelen = 0;
      this.bufferedRequest = null;
      this.lastBufferedRequest = null;
      this.pendingcb = 0;
      this.prefinished = false;
      this.errorEmitted = false;
      this.emitClose = options.emitClose !== false;
      this.autoDestroy = !!options.autoDestroy;
      this.bufferedRequestCount = 0;
      this.corkedRequestsFree = new CorkedRequest(this);
    }
    WritableState.prototype.getBuffer = function getBuffer2() {
      var current2 = this.bufferedRequest;
      var out = [];
      while (current2) {
        out.push(current2);
        current2 = current2.next;
      }
      return out;
    };
    (function() {
      try {
        Object.defineProperty(WritableState.prototype, "buffer", {
          get: internalUtil.deprecate(function writableStateBufferGetter() {
            return this.getBuffer();
          }, "_writableState.buffer is deprecated. Use _writableState.getBuffer instead.", "DEP0003")
        });
      } catch (_2) {
      }
    })();
    var realHasInstance;
    if (typeof Symbol === "function" && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === "function") {
      realHasInstance = Function.prototype[Symbol.hasInstance];
      Object.defineProperty(Writable2, Symbol.hasInstance, {
        value: function value(object) {
          if (realHasInstance.call(this, object)) return true;
          if (this !== Writable2) return false;
          return object && object._writableState instanceof WritableState;
        }
      });
    } else {
      realHasInstance = function realHasInstance2(object) {
        return object instanceof this;
      };
    }
    function Writable2(options) {
      Duplex2 = Duplex2 || require_stream_duplex();
      var isDuplex = this instanceof Duplex2;
      if (!isDuplex && !realHasInstance.call(Writable2, this)) return new Writable2(options);
      this._writableState = new WritableState(options, this, isDuplex);
      this.writable = true;
      if (options) {
        if (typeof options.write === "function") this._write = options.write;
        if (typeof options.writev === "function") this._writev = options.writev;
        if (typeof options.destroy === "function") this._destroy = options.destroy;
        if (typeof options.final === "function") this._final = options.final;
      }
      Stream4.call(this);
    }
    Writable2.prototype.pipe = function() {
      errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());
    };
    function writeAfterEnd(stream3, cb) {
      var er = new ERR_STREAM_WRITE_AFTER_END();
      errorOrDestroy(stream3, er);
      process.nextTick(cb, er);
    }
    function validChunk(stream3, state, chunk, cb) {
      var er;
      if (chunk === null) {
        er = new ERR_STREAM_NULL_VALUES();
      } else if (typeof chunk !== "string" && !state.objectMode) {
        er = new ERR_INVALID_ARG_TYPE("chunk", ["string", "Buffer"], chunk);
      }
      if (er) {
        errorOrDestroy(stream3, er);
        process.nextTick(cb, er);
        return false;
      }
      return true;
    }
    Writable2.prototype.write = function(chunk, encoding, cb) {
      var state = this._writableState;
      var ret = false;
      var isBuf = !state.objectMode && _isUint8Array(chunk);
      if (isBuf && !Buffer7.isBuffer(chunk)) {
        chunk = _uint8ArrayToBuffer(chunk);
      }
      if (typeof encoding === "function") {
        cb = encoding;
        encoding = null;
      }
      if (isBuf) encoding = "buffer";
      else if (!encoding) encoding = state.defaultEncoding;
      if (typeof cb !== "function") cb = nop;
      if (state.ending) writeAfterEnd(this, cb);
      else if (isBuf || validChunk(this, state, chunk, cb)) {
        state.pendingcb++;
        ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
      }
      return ret;
    };
    Writable2.prototype.cork = function() {
      this._writableState.corked++;
    };
    Writable2.prototype.uncork = function() {
      var state = this._writableState;
      if (state.corked) {
        state.corked--;
        if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
      }
    };
    Writable2.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
      if (typeof encoding === "string") encoding = encoding.toLowerCase();
      if (!(["hex", "utf8", "utf-8", "ascii", "binary", "base64", "ucs2", "ucs-2", "utf16le", "utf-16le", "raw"].indexOf((encoding + "").toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);
      this._writableState.defaultEncoding = encoding;
      return this;
    };
    Object.defineProperty(Writable2.prototype, "writableBuffer", {
      // making it explicit this property is not enumerable
      // because otherwise some prototype manipulation in
      // userland will fail
      enumerable: false,
      get: function get() {
        return this._writableState && this._writableState.getBuffer();
      }
    });
    function decodeChunk(state, chunk, encoding) {
      if (!state.objectMode && state.decodeStrings !== false && typeof chunk === "string") {
        chunk = Buffer7.from(chunk, encoding);
      }
      return chunk;
    }
    Object.defineProperty(Writable2.prototype, "writableHighWaterMark", {
      // making it explicit this property is not enumerable
      // because otherwise some prototype manipulation in
      // userland will fail
      enumerable: false,
      get: function get() {
        return this._writableState.highWaterMark;
      }
    });
    function writeOrBuffer(stream3, state, isBuf, chunk, encoding, cb) {
      if (!isBuf) {
        var newChunk = decodeChunk(state, chunk, encoding);
        if (chunk !== newChunk) {
          isBuf = true;
          encoding = "buffer";
          chunk = newChunk;
        }
      }
      var len = state.objectMode ? 1 : chunk.length;
      state.length += len;
      var ret = state.length < state.highWaterMark;
      if (!ret) state.needDrain = true;
      if (state.writing || state.corked) {
        var last = state.lastBufferedRequest;
        state.lastBufferedRequest = {
          chunk,
          encoding,
          isBuf,
          callback: cb,
          next: null
        };
        if (last) {
          last.next = state.lastBufferedRequest;
        } else {
          state.bufferedRequest = state.lastBufferedRequest;
        }
        state.bufferedRequestCount += 1;
      } else {
        doWrite(stream3, state, false, len, chunk, encoding, cb);
      }
      return ret;
    }
    function doWrite(stream3, state, writev, len, chunk, encoding, cb) {
      state.writelen = len;
      state.writecb = cb;
      state.writing = true;
      state.sync = true;
      if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED("write"));
      else if (writev) stream3._writev(chunk, state.onwrite);
      else stream3._write(chunk, encoding, state.onwrite);
      state.sync = false;
    }
    function onwriteError(stream3, state, sync2, er, cb) {
      --state.pendingcb;
      if (sync2) {
        process.nextTick(cb, er);
        process.nextTick(finishMaybe, stream3, state);
        stream3._writableState.errorEmitted = true;
        errorOrDestroy(stream3, er);
      } else {
        cb(er);
        stream3._writableState.errorEmitted = true;
        errorOrDestroy(stream3, er);
        finishMaybe(stream3, state);
      }
    }
    function onwriteStateUpdate(state) {
      state.writing = false;
      state.writecb = null;
      state.length -= state.writelen;
      state.writelen = 0;
    }
    function onwrite(stream3, er) {
      var state = stream3._writableState;
      var sync2 = state.sync;
      var cb = state.writecb;
      if (typeof cb !== "function") throw new ERR_MULTIPLE_CALLBACK();
      onwriteStateUpdate(state);
      if (er) onwriteError(stream3, state, sync2, er, cb);
      else {
        var finished = needFinish(state) || stream3.destroyed;
        if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
          clearBuffer(stream3, state);
        }
        if (sync2) {
          process.nextTick(afterWrite, stream3, state, finished, cb);
        } else {
          afterWrite(stream3, state, finished, cb);
        }
      }
    }
    function afterWrite(stream3, state, finished, cb) {
      if (!finished) onwriteDrain(stream3, state);
      state.pendingcb--;
      cb();
      finishMaybe(stream3, state);
    }
    function onwriteDrain(stream3, state) {
      if (state.length === 0 && state.needDrain) {
        state.needDrain = false;
        stream3.emit("drain");
      }
    }
    function clearBuffer(stream3, state) {
      state.bufferProcessing = true;
      var entry = state.bufferedRequest;
      if (stream3._writev && entry && entry.next) {
        var l = state.bufferedRequestCount;
        var buffer2 = new Array(l);
        var holder = state.corkedRequestsFree;
        holder.entry = entry;
        var count2 = 0;
        var allBuffers = true;
        while (entry) {
          buffer2[count2] = entry;
          if (!entry.isBuf) allBuffers = false;
          entry = entry.next;
          count2 += 1;
        }
        buffer2.allBuffers = allBuffers;
        doWrite(stream3, state, true, state.length, buffer2, "", holder.finish);
        state.pendingcb++;
        state.lastBufferedRequest = null;
        if (holder.next) {
          state.corkedRequestsFree = holder.next;
          holder.next = null;
        } else {
          state.corkedRequestsFree = new CorkedRequest(state);
        }
        state.bufferedRequestCount = 0;
      } else {
        while (entry) {
          var chunk = entry.chunk;
          var encoding = entry.encoding;
          var cb = entry.callback;
          var len = state.objectMode ? 1 : chunk.length;
          doWrite(stream3, state, false, len, chunk, encoding, cb);
          entry = entry.next;
          state.bufferedRequestCount--;
          if (state.writing) {
            break;
          }
        }
        if (entry === null) state.lastBufferedRequest = null;
      }
      state.bufferedRequest = entry;
      state.bufferProcessing = false;
    }
    Writable2.prototype._write = function(chunk, encoding, cb) {
      cb(new ERR_METHOD_NOT_IMPLEMENTED("_write()"));
    };
    Writable2.prototype._writev = null;
    Writable2.prototype.end = function(chunk, encoding, cb) {
      var state = this._writableState;
      if (typeof chunk === "function") {
        cb = chunk;
        chunk = null;
        encoding = null;
      } else if (typeof encoding === "function") {
        cb = encoding;
        encoding = null;
      }
      if (chunk !== null && chunk !== void 0) this.write(chunk, encoding);
      if (state.corked) {
        state.corked = 1;
        this.uncork();
      }
      if (!state.ending) endWritable(this, state, cb);
      return this;
    };
    Object.defineProperty(Writable2.prototype, "writableLength", {
      // making it explicit this property is not enumerable
      // because otherwise some prototype manipulation in
      // userland will fail
      enumerable: false,
      get: function get() {
        return this._writableState.length;
      }
    });
    function needFinish(state) {
      return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
    }
    function callFinal(stream3, state) {
      stream3._final(function(err) {
        state.pendingcb--;
        if (err) {
          errorOrDestroy(stream3, err);
        }
        state.prefinished = true;
        stream3.emit("prefinish");
        finishMaybe(stream3, state);
      });
    }
    function prefinish(stream3, state) {
      if (!state.prefinished && !state.finalCalled) {
        if (typeof stream3._final === "function" && !state.destroyed) {
          state.pendingcb++;
          state.finalCalled = true;
          process.nextTick(callFinal, stream3, state);
        } else {
          state.prefinished = true;
          stream3.emit("prefinish");
        }
      }
    }
    function finishMaybe(stream3, state) {
      var need = needFinish(state);
      if (need) {
        prefinish(stream3, state);
        if (state.pendingcb === 0) {
          state.finished = true;
          stream3.emit("finish");
          if (state.autoDestroy) {
            var rState = stream3._readableState;
            if (!rState || rState.autoDestroy && rState.endEmitted) {
              stream3.destroy();
            }
          }
        }
      }
      return need;
    }
    function endWritable(stream3, state, cb) {
      state.ending = true;
      finishMaybe(stream3, state);
      if (cb) {
        if (state.finished) process.nextTick(cb);
        else stream3.once("finish", cb);
      }
      state.ended = true;
      stream3.writable = false;
    }
    function onCorkedFinish(corkReq, state, err) {
      var entry = corkReq.entry;
      corkReq.entry = null;
      while (entry) {
        var cb = entry.callback;
        state.pendingcb--;
        cb(err);
        entry = entry.next;
      }
      state.corkedRequestsFree.next = corkReq;
    }
    Object.defineProperty(Writable2.prototype, "destroyed", {
      // making it explicit this property is not enumerable
      // because otherwise some prototype manipulation in
      // userland will fail
      enumerable: false,
      get: function get() {
        if (this._writableState === void 0) {
          return false;
        }
        return this._writableState.destroyed;
      },
      set: function set3(value) {
        if (!this._writableState) {
          return;
        }
        this._writableState.destroyed = value;
      }
    });
    Writable2.prototype.destroy = destroyImpl.destroy;
    Writable2.prototype._undestroy = destroyImpl.undestroy;
    Writable2.prototype._destroy = function(err, cb) {
      cb(err);
    };
  }
});

// ../../node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js
var require_stream_duplex = __commonJS({
  "../../node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js"(exports2, module2) {
    "use strict";
    var objectKeys = Object.keys || function(obj) {
      var keys3 = [];
      for (var key2 in obj) keys3.push(key2);
      return keys3;
    };
    module2.exports = Duplex2;
    var Readable = require_stream_readable();
    var Writable2 = require_stream_writable();
    require_inherits()(Duplex2, Readable);
    {
      keys2 = objectKeys(Writable2.prototype);
      for (v = 0; v < keys2.length; v++) {
        method = keys2[v];
        if (!Duplex2.prototype[method]) Duplex2.prototype[method] = Writable2.prototype[method];
      }
    }
    var keys2;
    var method;
    var v;
    function Duplex2(options) {
      if (!(this instanceof Duplex2)) return new Duplex2(options);
      Readable.call(this, options);
      Writable2.call(this, options);
      this.allowHalfOpen = true;
      if (options) {
        if (options.readable === false) this.readable = false;
        if (options.writable === false) this.writable = false;
        if (options.allowHalfOpen === false) {
          this.allowHalfOpen = false;
          this.once("end", onend);
        }
      }
    }
    Object.defineProperty(Duplex2.prototype, "writableHighWaterMark", {
      // making it explicit this property is not enumerable
      // because otherwise some prototype manipulation in
      // userland will fail
      enumerable: false,
      get: function get() {
        return this._writableState.highWaterMark;
      }
    });
    Object.defineProperty(Duplex2.prototype, "writableBuffer", {
      // making it explicit this property is not enumerable
      // because otherwise some prototype manipulation in
      // userland will fail
      enumerable: false,
      get: function get() {
        return this._writableState && this._writableState.getBuffer();
      }
    });
    Object.defineProperty(Duplex2.prototype, "writableLength", {
      // making it explicit this property is not enumerable
      // because otherwise some prototype manipulation in
      // userland will fail
      enumerable: false,
      get: function get() {
        return this._writableState.length;
      }
    });
    function onend() {
      if (this._writableState.ended) return;
      process.nextTick(onEndNT, this);
    }
    function onEndNT(self2) {
      self2.end();
    }
    Object.defineProperty(Duplex2.prototype, "destroyed", {
      // making it explicit this property is not enumerable
      // because otherwise some prototype manipulation in
      // userland will fail
      enumerable: false,
      get: function get() {
        if (this._readableState === void 0 || this._writableState === void 0) {
          return false;
        }
        return this._readableState.destroyed && this._writableState.destroyed;
      },
      set: function set3(value) {
        if (this._readableState === void 0 || this._writableState === void 0) {
          return;
        }
        this._readableState.destroyed = value;
        this._writableState.destroyed = value;
      }
    });
  }
});

// ../../node_modules/string_decoder/node_modules/safe-buffer/index.js
var require_safe_buffer2 = __commonJS({
  "../../node_modules/string_decoder/node_modules/safe-buffer/index.js"(exports2, module2) {
    var buffer2 = require("buffer");
    var Buffer7 = buffer2.Buffer;
    function copyProps(src, dst) {
      for (var key2 in src) {
        dst[key2] = src[key2];
      }
    }
    if (Buffer7.from && Buffer7.alloc && Buffer7.allocUnsafe && Buffer7.allocUnsafeSlow) {
      module2.exports = buffer2;
    } else {
      copyProps(buffer2, exports2);
      exports2.Buffer = SafeBuffer;
    }
    function SafeBuffer(arg2, encodingOrOffset, length) {
      return Buffer7(arg2, encodingOrOffset, length);
    }
    copyProps(Buffer7, SafeBuffer);
    SafeBuffer.from = function(arg2, encodingOrOffset, length) {
      if (typeof arg2 === "number") {
        throw new TypeError("Argument must not be a number");
      }
      return Buffer7(arg2, encodingOrOffset, length);
    };
    SafeBuffer.alloc = function(size, fill3, encoding) {
      if (typeof size !== "number") {
        throw new TypeError("Argument must be a number");
      }
      var buf = Buffer7(size);
      if (fill3 !== void 0) {
        if (typeof encoding === "string") {
          buf.fill(fill3, encoding);
        } else {
          buf.fill(fill3);
        }
      } else {
        buf.fill(0);
      }
      return buf;
    };
    SafeBuffer.allocUnsafe = function(size) {
      if (typeof size !== "number") {
        throw new TypeError("Argument must be a number");
      }
      return Buffer7(size);
    };
    SafeBuffer.allocUnsafeSlow = function(size) {
      if (typeof size !== "number") {
        throw new TypeError("Argument must be a number");
      }
      return buffer2.SlowBuffer(size);
    };
  }
});

// ../../node_modules/string_decoder/lib/string_decoder.js
var require_string_decoder = __commonJS({
  "../../node_modules/string_decoder/lib/string_decoder.js"(exports2) {
    "use strict";
    var Buffer7 = require_safe_buffer2().Buffer;
    var isEncoding2 = Buffer7.isEncoding || function(encoding) {
      encoding = "" + encoding;
      switch (encoding && encoding.toLowerCase()) {
        case "hex":
        case "utf8":
        case "utf-8":
        case "ascii":
        case "binary":
        case "base64":
        case "ucs2":
        case "ucs-2":
        case "utf16le":
        case "utf-16le":
        case "raw":
          return true;
        default:
          return false;
      }
    };
    function _normalizeEncoding(enc) {
      if (!enc) return "utf8";
      var retried;
      while (true) {
        switch (enc) {
          case "utf8":
          case "utf-8":
            return "utf8";
          case "ucs2":
          case "ucs-2":
          case "utf16le":
          case "utf-16le":
            return "utf16le";
          case "latin1":
          case "binary":
            return "latin1";
          case "base64":
          case "ascii":
          case "hex":
            return enc;
          default:
            if (retried) return;
            enc = ("" + enc).toLowerCase();
            retried = true;
        }
      }
    }
    function normalizeEncoding(enc) {
      var nenc = _normalizeEncoding(enc);
      if (typeof nenc !== "string" && (Buffer7.isEncoding === isEncoding2 || !isEncoding2(enc))) throw new Error("Unknown encoding: " + enc);
      return nenc || enc;
    }
    exports2.StringDecoder = StringDecoder2;
    function StringDecoder2(encoding) {
      this.encoding = normalizeEncoding(encoding);
      var nb;
      switch (this.encoding) {
        case "utf16le":
          this.text = utf16Text;
          this.end = utf16End;
          nb = 4;
          break;
        case "utf8":
          this.fillLast = utf8FillLast;
          nb = 4;
          break;
        case "base64":
          this.text = base64Text;
          this.end = base64End;
          nb = 3;
          break;
        default:
          this.write = simpleWrite;
          this.end = simpleEnd;
          return;
      }
      this.lastNeed = 0;
      this.lastTotal = 0;
      this.lastChar = Buffer7.allocUnsafe(nb);
    }
    StringDecoder2.prototype.write = function(buf) {
      if (buf.length === 0) return "";
      var r2;
      var i2;
      if (this.lastNeed) {
        r2 = this.fillLast(buf);
        if (r2 === void 0) return "";
        i2 = this.lastNeed;
        this.lastNeed = 0;
      } else {
        i2 = 0;
      }
      if (i2 < buf.length) return r2 ? r2 + this.text(buf, i2) : this.text(buf, i2);
      return r2 || "";
    };
    StringDecoder2.prototype.end = utf8End;
    StringDecoder2.prototype.text = utf8Text;
    StringDecoder2.prototype.fillLast = function(buf) {
      if (this.lastNeed <= buf.length) {
        buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
        return this.lastChar.toString(this.encoding, 0, this.lastTotal);
      }
      buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
      this.lastNeed -= buf.length;
    };
    function utf8CheckByte(byte) {
      if (byte <= 127) return 0;
      else if (byte >> 5 === 6) return 2;
      else if (byte >> 4 === 14) return 3;
      else if (byte >> 3 === 30) return 4;
      return byte >> 6 === 2 ? -1 : -2;
    }
    function utf8CheckIncomplete(self2, buf, i2) {
      var j = buf.length - 1;
      if (j < i2) return 0;
      var nb = utf8CheckByte(buf[j]);
      if (nb >= 0) {
        if (nb > 0) self2.lastNeed = nb - 1;
        return nb;
      }
      if (--j < i2 || nb === -2) return 0;
      nb = utf8CheckByte(buf[j]);
      if (nb >= 0) {
        if (nb > 0) self2.lastNeed = nb - 2;
        return nb;
      }
      if (--j < i2 || nb === -2) return 0;
      nb = utf8CheckByte(buf[j]);
      if (nb >= 0) {
        if (nb > 0) {
          if (nb === 2) nb = 0;
          else self2.lastNeed = nb - 3;
        }
        return nb;
      }
      return 0;
    }
    function utf8CheckExtraBytes(self2, buf, p5) {
      if ((buf[0] & 192) !== 128) {
        self2.lastNeed = 0;
        return "\uFFFD";
      }
      if (self2.lastNeed > 1 && buf.length > 1) {
        if ((buf[1] & 192) !== 128) {
          self2.lastNeed = 1;
          return "\uFFFD";
        }
        if (self2.lastNeed > 2 && buf.length > 2) {
          if ((buf[2] & 192) !== 128) {
            self2.lastNeed = 2;
            return "\uFFFD";
          }
        }
      }
    }
    function utf8FillLast(buf) {
      var p5 = this.lastTotal - this.lastNeed;
      var r2 = utf8CheckExtraBytes(this, buf, p5);
      if (r2 !== void 0) return r2;
      if (this.lastNeed <= buf.length) {
        buf.copy(this.lastChar, p5, 0, this.lastNeed);
        return this.lastChar.toString(this.encoding, 0, this.lastTotal);
      }
      buf.copy(this.lastChar, p5, 0, buf.length);
      this.lastNeed -= buf.length;
    }
    function utf8Text(buf, i2) {
      var total = utf8CheckIncomplete(this, buf, i2);
      if (!this.lastNeed) return buf.toString("utf8", i2);
      this.lastTotal = total;
      var end = buf.length - (total - this.lastNeed);
      buf.copy(this.lastChar, 0, end);
      return buf.toString("utf8", i2, end);
    }
    function utf8End(buf) {
      var r2 = buf && buf.length ? this.write(buf) : "";
      if (this.lastNeed) return r2 + "\uFFFD";
      return r2;
    }
    function utf16Text(buf, i2) {
      if ((buf.length - i2) % 2 === 0) {
        var r2 = buf.toString("utf16le", i2);
        if (r2) {
          var c = r2.charCodeAt(r2.length - 1);
          if (c >= 55296 && c <= 56319) {
            this.lastNeed = 2;
            this.lastTotal = 4;
            this.lastChar[0] = buf[buf.length - 2];
            this.lastChar[1] = buf[buf.length - 1];
            return r2.slice(0, -1);
          }
        }
        return r2;
      }
      this.lastNeed = 1;
      this.lastTotal = 2;
      this.lastChar[0] = buf[buf.length - 1];
      return buf.toString("utf16le", i2, buf.length - 1);
    }
    function utf16End(buf) {
      var r2 = buf && buf.length ? this.write(buf) : "";
      if (this.lastNeed) {
        var end = this.lastTotal - this.lastNeed;
        return r2 + this.lastChar.toString("utf16le", 0, end);
      }
      return r2;
    }
    function base64Text(buf, i2) {
      var n = (buf.length - i2) % 3;
      if (n === 0) return buf.toString("base64", i2);
      this.lastNeed = 3 - n;
      this.lastTotal = 3;
      if (n === 1) {
        this.lastChar[0] = buf[buf.length - 1];
      } else {
        this.lastChar[0] = buf[buf.length - 2];
        this.lastChar[1] = buf[buf.length - 1];
      }
      return buf.toString("base64", i2, buf.length - n);
    }
    function base64End(buf) {
      var r2 = buf && buf.length ? this.write(buf) : "";
      if (this.lastNeed) return r2 + this.lastChar.toString("base64", 0, 3 - this.lastNeed);
      return r2;
    }
    function simpleWrite(buf) {
      return buf.toString(this.encoding);
    }
    function simpleEnd(buf) {
      return buf && buf.length ? this.write(buf) : "";
    }
  }
});

// ../../node_modules/bl/node_modules/readable-stream/lib/internal/streams/end-of-stream.js
var require_end_of_stream = __commonJS({
  "../../node_modules/bl/node_modules/readable-stream/lib/internal/streams/end-of-stream.js"(exports2, module2) {
    "use strict";
    var ERR_STREAM_PREMATURE_CLOSE = require_errors2().codes.ERR_STREAM_PREMATURE_CLOSE;
    function once(callback) {
      var called = false;
      return function() {
        if (called) return;
        called = true;
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        callback.apply(this, args);
      };
    }
    function noop5() {
    }
    function isRequest3(stream3) {
      return stream3.setHeader && typeof stream3.abort === "function";
    }
    function eos(stream3, opts, callback) {
      if (typeof opts === "function") return eos(stream3, null, opts);
      if (!opts) opts = {};
      callback = once(callback || noop5);
      var readable = opts.readable || opts.readable !== false && stream3.readable;
      var writable = opts.writable || opts.writable !== false && stream3.writable;
      var onlegacyfinish = function onlegacyfinish2() {
        if (!stream3.writable) onfinish();
      };
      var writableEnded = stream3._writableState && stream3._writableState.finished;
      var onfinish = function onfinish2() {
        writable = false;
        writableEnded = true;
        if (!readable) callback.call(stream3);
      };
      var readableEnded = stream3._readableState && stream3._readableState.endEmitted;
      var onend = function onend2() {
        readable = false;
        readableEnded = true;
        if (!writable) callback.call(stream3);
      };
      var onerror = function onerror2(err) {
        callback.call(stream3, err);
      };
      var onclose = function onclose2() {
        var err;
        if (readable && !readableEnded) {
          if (!stream3._readableState || !stream3._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();
          return callback.call(stream3, err);
        }
        if (writable && !writableEnded) {
          if (!stream3._writableState || !stream3._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();
          return callback.call(stream3, err);
        }
      };
      var onrequest = function onrequest2() {
        stream3.req.on("finish", onfinish);
      };
      if (isRequest3(stream3)) {
        stream3.on("complete", onfinish);
        stream3.on("abort", onclose);
        if (stream3.req) onrequest();
        else stream3.on("request", onrequest);
      } else if (writable && !stream3._writableState) {
        stream3.on("end", onlegacyfinish);
        stream3.on("close", onlegacyfinish);
      }
      stream3.on("end", onend);
      stream3.on("finish", onfinish);
      if (opts.error !== false) stream3.on("error", onerror);
      stream3.on("close", onclose);
      return function() {
        stream3.removeListener("complete", onfinish);
        stream3.removeListener("abort", onclose);
        stream3.removeListener("request", onrequest);
        if (stream3.req) stream3.req.removeListener("finish", onfinish);
        stream3.removeListener("end", onlegacyfinish);
        stream3.removeListener("close", onlegacyfinish);
        stream3.removeListener("finish", onfinish);
        stream3.removeListener("end", onend);
        stream3.removeListener("error", onerror);
        stream3.removeListener("close", onclose);
      };
    }
    module2.exports = eos;
  }
});

// ../../node_modules/bl/node_modules/readable-stream/lib/internal/streams/async_iterator.js
var require_async_iterator = __commonJS({
  "../../node_modules/bl/node_modules/readable-stream/lib/internal/streams/async_iterator.js"(exports2, module2) {
    "use strict";
    var _Object$setPrototypeO;
    function _defineProperty(obj, key2, value) {
      key2 = _toPropertyKey(key2);
      if (key2 in obj) {
        Object.defineProperty(obj, key2, { value, enumerable: true, configurable: true, writable: true });
      } else {
        obj[key2] = value;
      }
      return obj;
    }
    function _toPropertyKey(arg2) {
      var key2 = _toPrimitive(arg2, "string");
      return typeof key2 === "symbol" ? key2 : String(key2);
    }
    function _toPrimitive(input3, hint) {
      if (typeof input3 !== "object" || input3 === null) return input3;
      var prim = input3[Symbol.toPrimitive];
      if (prim !== void 0) {
        var res = prim.call(input3, hint || "default");
        if (typeof res !== "object") return res;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return (hint === "string" ? String : Number)(input3);
    }
    var finished = require_end_of_stream();
    var kLastResolve = Symbol("lastResolve");
    var kLastReject = Symbol("lastReject");
    var kError = Symbol("error");
    var kEnded = Symbol("ended");
    var kLastPromise = Symbol("lastPromise");
    var kHandlePromise = Symbol("handlePromise");
    var kStream = Symbol("stream");
    function createIterResult(value, done) {
      return {
        value,
        done
      };
    }
    function readAndResolve(iter) {
      var resolve9 = iter[kLastResolve];
      if (resolve9 !== null) {
        var data = iter[kStream].read();
        if (data !== null) {
          iter[kLastPromise] = null;
          iter[kLastResolve] = null;
          iter[kLastReject] = null;
          resolve9(createIterResult(data, false));
        }
      }
    }
    function onReadable(iter) {
      process.nextTick(readAndResolve, iter);
    }
    function wrapForNext(lastPromise, iter) {
      return function(resolve9, reject) {
        lastPromise.then(function() {
          if (iter[kEnded]) {
            resolve9(createIterResult(void 0, true));
            return;
          }
          iter[kHandlePromise](resolve9, reject);
        }, reject);
      };
    }
    var AsyncIteratorPrototype = Object.getPrototypeOf(function() {
    });
    var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {
      get stream() {
        return this[kStream];
      },
      next: function next() {
        var _this = this;
        var error = this[kError];
        if (error !== null) {
          return Promise.reject(error);
        }
        if (this[kEnded]) {
          return Promise.resolve(createIterResult(void 0, true));
        }
        if (this[kStream].destroyed) {
          return new Promise(function(resolve9, reject) {
            process.nextTick(function() {
              if (_this[kError]) {
                reject(_this[kError]);
              } else {
                resolve9(createIterResult(void 0, true));
              }
            });
          });
        }
        var lastPromise = this[kLastPromise];
        var promise;
        if (lastPromise) {
          promise = new Promise(wrapForNext(lastPromise, this));
        } else {
          var data = this[kStream].read();
          if (data !== null) {
            return Promise.resolve(createIterResult(data, false));
          }
          promise = new Promise(this[kHandlePromise]);
        }
        this[kLastPromise] = promise;
        return promise;
      }
    }, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function() {
      return this;
    }), _defineProperty(_Object$setPrototypeO, "return", function _return() {
      var _this2 = this;
      return new Promise(function(resolve9, reject) {
        _this2[kStream].destroy(null, function(err) {
          if (err) {
            reject(err);
            return;
          }
          resolve9(createIterResult(void 0, true));
        });
      });
    }), _Object$setPrototypeO), AsyncIteratorPrototype);
    var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator2(stream3) {
      var _Object$create;
      var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {
        value: stream3,
        writable: true
      }), _defineProperty(_Object$create, kLastResolve, {
        value: null,
        writable: true
      }), _defineProperty(_Object$create, kLastReject, {
        value: null,
        writable: true
      }), _defineProperty(_Object$create, kError, {
        value: null,
        writable: true
      }), _defineProperty(_Object$create, kEnded, {
        value: stream3._readableState.endEmitted,
        writable: true
      }), _defineProperty(_Object$create, kHandlePromise, {
        value: function value(resolve9, reject) {
          var data = iterator[kStream].read();
          if (data) {
            iterator[kLastPromise] = null;
            iterator[kLastResolve] = null;
            iterator[kLastReject] = null;
            resolve9(createIterResult(data, false));
          } else {
            iterator[kLastResolve] = resolve9;
            iterator[kLastReject] = reject;
          }
        },
        writable: true
      }), _Object$create));
      iterator[kLastPromise] = null;
      finished(stream3, function(err) {
        if (err && err.code !== "ERR_STREAM_PREMATURE_CLOSE") {
          var reject = iterator[kLastReject];
          if (reject !== null) {
            iterator[kLastPromise] = null;
            iterator[kLastResolve] = null;
            iterator[kLastReject] = null;
            reject(err);
          }
          iterator[kError] = err;
          return;
        }
        var resolve9 = iterator[kLastResolve];
        if (resolve9 !== null) {
          iterator[kLastPromise] = null;
          iterator[kLastResolve] = null;
          iterator[kLastReject] = null;
          resolve9(createIterResult(void 0, true));
        }
        iterator[kEnded] = true;
      });
      stream3.on("readable", onReadable.bind(null, iterator));
      return iterator;
    };
    module2.exports = createReadableStreamAsyncIterator;
  }
});

// ../../node_modules/bl/node_modules/readable-stream/lib/internal/streams/from.js
var require_from2 = __commonJS({
  "../../node_modules/bl/node_modules/readable-stream/lib/internal/streams/from.js"(exports2, module2) {
    "use strict";
    function asyncGeneratorStep(gen, resolve9, reject, _next2, _throw, key2, arg2) {
      try {
        var info = gen[key2](arg2);
        var value = info.value;
      } catch (error) {
        reject(error);
        return;
      }
      if (info.done) {
        resolve9(value);
      } else {
        Promise.resolve(value).then(_next2, _throw);
      }
    }
    function _asyncToGenerator(fn) {
      return function() {
        var self2 = this, args = arguments;
        return new Promise(function(resolve9, reject) {
          var gen = fn.apply(self2, args);
          function _next2(value) {
            asyncGeneratorStep(gen, resolve9, reject, _next2, _throw, "next", value);
          }
          function _throw(err) {
            asyncGeneratorStep(gen, resolve9, reject, _next2, _throw, "throw", err);
          }
          _next2(void 0);
        });
      };
    }
    function ownKeys(object, enumerableOnly) {
      var keys2 = Object.keys(object);
      if (Object.getOwnPropertySymbols) {
        var symbols4 = Object.getOwnPropertySymbols(object);
        enumerableOnly && (symbols4 = symbols4.filter(function(sym) {
          return Object.getOwnPropertyDescriptor(object, sym).enumerable;
        })), keys2.push.apply(keys2, symbols4);
      }
      return keys2;
    }
    function _objectSpread(target) {
      for (var i2 = 1; i2 < arguments.length; i2++) {
        var source2 = null != arguments[i2] ? arguments[i2] : {};
        i2 % 2 ? ownKeys(Object(source2), true).forEach(function(key2) {
          _defineProperty(target, key2, source2[key2]);
        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source2)) : ownKeys(Object(source2)).forEach(function(key2) {
          Object.defineProperty(target, key2, Object.getOwnPropertyDescriptor(source2, key2));
        });
      }
      return target;
    }
    function _defineProperty(obj, key2, value) {
      key2 = _toPropertyKey(key2);
      if (key2 in obj) {
        Object.defineProperty(obj, key2, { value, enumerable: true, configurable: true, writable: true });
      } else {
        obj[key2] = value;
      }
      return obj;
    }
    function _toPropertyKey(arg2) {
      var key2 = _toPrimitive(arg2, "string");
      return typeof key2 === "symbol" ? key2 : String(key2);
    }
    function _toPrimitive(input3, hint) {
      if (typeof input3 !== "object" || input3 === null) return input3;
      var prim = input3[Symbol.toPrimitive];
      if (prim !== void 0) {
        var res = prim.call(input3, hint || "default");
        if (typeof res !== "object") return res;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return (hint === "string" ? String : Number)(input3);
    }
    var ERR_INVALID_ARG_TYPE = require_errors2().codes.ERR_INVALID_ARG_TYPE;
    function from4(Readable, iterable, opts) {
      var iterator;
      if (iterable && typeof iterable.next === "function") {
        iterator = iterable;
      } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();
      else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();
      else throw new ERR_INVALID_ARG_TYPE("iterable", ["Iterable"], iterable);
      var readable = new Readable(_objectSpread({
        objectMode: true
      }, opts));
      var reading = false;
      readable._read = function() {
        if (!reading) {
          reading = true;
          next();
        }
      };
      function next() {
        return _next2.apply(this, arguments);
      }
      function _next2() {
        _next2 = _asyncToGenerator(function* () {
          try {
            var _yield$iterator$next = yield iterator.next(), value = _yield$iterator$next.value, done = _yield$iterator$next.done;
            if (done) {
              readable.push(null);
            } else if (readable.push(yield value)) {
              next();
            } else {
              reading = false;
            }
          } catch (err) {
            readable.destroy(err);
          }
        });
        return _next2.apply(this, arguments);
      }
      return readable;
    }
    module2.exports = from4;
  }
});

// ../../node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js
var require_stream_readable = __commonJS({
  "../../node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js"(exports2, module2) {
    "use strict";
    module2.exports = Readable;
    var Duplex2;
    Readable.ReadableState = ReadableState;
    var EE = require("events").EventEmitter;
    var EElistenerCount = function EElistenerCount2(emitter, type2) {
      return emitter.listeners(type2).length;
    };
    var Stream4 = require_stream2();
    var Buffer7 = require("buffer").Buffer;
    var OurUint8Array = (typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : {}).Uint8Array || function() {
    };
    function _uint8ArrayToBuffer(chunk) {
      return Buffer7.from(chunk);
    }
    function _isUint8Array(obj) {
      return Buffer7.isBuffer(obj) || obj instanceof OurUint8Array;
    }
    var debugUtil = require("util");
    var debug;
    if (debugUtil && debugUtil.debuglog) {
      debug = debugUtil.debuglog("stream");
    } else {
      debug = function debug2() {
      };
    }
    var BufferList = require_buffer_list();
    var destroyImpl = require_destroy2();
    var _require = require_state();
    var getHighWaterMark = _require.getHighWaterMark;
    var _require$codes = require_errors2().codes;
    var ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE;
    var ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF;
    var ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED;
    var ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;
    var StringDecoder2;
    var createReadableStreamAsyncIterator;
    var from4;
    require_inherits()(Readable, Stream4);
    var errorOrDestroy = destroyImpl.errorOrDestroy;
    var kProxyEvents = ["error", "close", "destroy", "pause", "resume"];
    function prependListener(emitter, event, fn) {
      if (typeof emitter.prependListener === "function") return emitter.prependListener(event, fn);
      if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);
      else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);
      else emitter._events[event] = [fn, emitter._events[event]];
    }
    function ReadableState(options, stream3, isDuplex) {
      Duplex2 = Duplex2 || require_stream_duplex();
      options = options || {};
      if (typeof isDuplex !== "boolean") isDuplex = stream3 instanceof Duplex2;
      this.objectMode = !!options.objectMode;
      if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
      this.highWaterMark = getHighWaterMark(this, options, "readableHighWaterMark", isDuplex);
      this.buffer = new BufferList();
      this.length = 0;
      this.pipes = null;
      this.pipesCount = 0;
      this.flowing = null;
      this.ended = false;
      this.endEmitted = false;
      this.reading = false;
      this.sync = true;
      this.needReadable = false;
      this.emittedReadable = false;
      this.readableListening = false;
      this.resumeScheduled = false;
      this.paused = true;
      this.emitClose = options.emitClose !== false;
      this.autoDestroy = !!options.autoDestroy;
      this.destroyed = false;
      this.defaultEncoding = options.defaultEncoding || "utf8";
      this.awaitDrain = 0;
      this.readingMore = false;
      this.decoder = null;
      this.encoding = null;
      if (options.encoding) {
        if (!StringDecoder2) StringDecoder2 = require_string_decoder().StringDecoder;
        this.decoder = new StringDecoder2(options.encoding);
        this.encoding = options.encoding;
      }
    }
    function Readable(options) {
      Duplex2 = Duplex2 || require_stream_duplex();
      if (!(this instanceof Readable)) return new Readable(options);
      var isDuplex = this instanceof Duplex2;
      this._readableState = new ReadableState(options, this, isDuplex);
      this.readable = true;
      if (options) {
        if (typeof options.read === "function") this._read = options.read;
        if (typeof options.destroy === "function") this._destroy = options.destroy;
      }
      Stream4.call(this);
    }
    Object.defineProperty(Readable.prototype, "destroyed", {
      // making it explicit this property is not enumerable
      // because otherwise some prototype manipulation in
      // userland will fail
      enumerable: false,
      get: function get() {
        if (this._readableState === void 0) {
          return false;
        }
        return this._readableState.destroyed;
      },
      set: function set3(value) {
        if (!this._readableState) {
          return;
        }
        this._readableState.destroyed = value;
      }
    });
    Readable.prototype.destroy = destroyImpl.destroy;
    Readable.prototype._undestroy = destroyImpl.undestroy;
    Readable.prototype._destroy = function(err, cb) {
      cb(err);
    };
    Readable.prototype.push = function(chunk, encoding) {
      var state = this._readableState;
      var skipChunkCheck;
      if (!state.objectMode) {
        if (typeof chunk === "string") {
          encoding = encoding || state.defaultEncoding;
          if (encoding !== state.encoding) {
            chunk = Buffer7.from(chunk, encoding);
            encoding = "";
          }
          skipChunkCheck = true;
        }
      } else {
        skipChunkCheck = true;
      }
      return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
    };
    Readable.prototype.unshift = function(chunk) {
      return readableAddChunk(this, chunk, null, true, false);
    };
    function readableAddChunk(stream3, chunk, encoding, addToFront, skipChunkCheck) {
      debug("readableAddChunk", chunk);
      var state = stream3._readableState;
      if (chunk === null) {
        state.reading = false;
        onEofChunk(stream3, state);
      } else {
        var er;
        if (!skipChunkCheck) er = chunkInvalid(state, chunk);
        if (er) {
          errorOrDestroy(stream3, er);
        } else if (state.objectMode || chunk && chunk.length > 0) {
          if (typeof chunk !== "string" && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer7.prototype) {
            chunk = _uint8ArrayToBuffer(chunk);
          }
          if (addToFront) {
            if (state.endEmitted) errorOrDestroy(stream3, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());
            else addChunk(stream3, state, chunk, true);
          } else if (state.ended) {
            errorOrDestroy(stream3, new ERR_STREAM_PUSH_AFTER_EOF());
          } else if (state.destroyed) {
            return false;
          } else {
            state.reading = false;
            if (state.decoder && !encoding) {
              chunk = state.decoder.write(chunk);
              if (state.objectMode || chunk.length !== 0) addChunk(stream3, state, chunk, false);
              else maybeReadMore(stream3, state);
            } else {
              addChunk(stream3, state, chunk, false);
            }
          }
        } else if (!addToFront) {
          state.reading = false;
          maybeReadMore(stream3, state);
        }
      }
      return !state.ended && (state.length < state.highWaterMark || state.length === 0);
    }
    function addChunk(stream3, state, chunk, addToFront) {
      if (state.flowing && state.length === 0 && !state.sync) {
        state.awaitDrain = 0;
        stream3.emit("data", chunk);
      } else {
        state.length += state.objectMode ? 1 : chunk.length;
        if (addToFront) state.buffer.unshift(chunk);
        else state.buffer.push(chunk);
        if (state.needReadable) emitReadable(stream3);
      }
      maybeReadMore(stream3, state);
    }
    function chunkInvalid(state, chunk) {
      var er;
      if (!_isUint8Array(chunk) && typeof chunk !== "string" && chunk !== void 0 && !state.objectMode) {
        er = new ERR_INVALID_ARG_TYPE("chunk", ["string", "Buffer", "Uint8Array"], chunk);
      }
      return er;
    }
    Readable.prototype.isPaused = function() {
      return this._readableState.flowing === false;
    };
    Readable.prototype.setEncoding = function(enc) {
      if (!StringDecoder2) StringDecoder2 = require_string_decoder().StringDecoder;
      var decoder = new StringDecoder2(enc);
      this._readableState.decoder = decoder;
      this._readableState.encoding = this._readableState.decoder.encoding;
      var p5 = this._readableState.buffer.head;
      var content3 = "";
      while (p5 !== null) {
        content3 += decoder.write(p5.data);
        p5 = p5.next;
      }
      this._readableState.buffer.clear();
      if (content3 !== "") this._readableState.buffer.push(content3);
      this._readableState.length = content3.length;
      return this;
    };
    var MAX_HWM = 1073741824;
    function computeNewHighWaterMark(n) {
      if (n >= MAX_HWM) {
        n = MAX_HWM;
      } else {
        n--;
        n |= n >>> 1;
        n |= n >>> 2;
        n |= n >>> 4;
        n |= n >>> 8;
        n |= n >>> 16;
        n++;
      }
      return n;
    }
    function howMuchToRead(n, state) {
      if (n <= 0 || state.length === 0 && state.ended) return 0;
      if (state.objectMode) return 1;
      if (n !== n) {
        if (state.flowing && state.length) return state.buffer.head.data.length;
        else return state.length;
      }
      if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
      if (n <= state.length) return n;
      if (!state.ended) {
        state.needReadable = true;
        return 0;
      }
      return state.length;
    }
    Readable.prototype.read = function(n) {
      debug("read", n);
      n = parseInt(n, 10);
      var state = this._readableState;
      var nOrig = n;
      if (n !== 0) state.emittedReadable = false;
      if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {
        debug("read: emitReadable", state.length, state.ended);
        if (state.length === 0 && state.ended) endReadable(this);
        else emitReadable(this);
        return null;
      }
      n = howMuchToRead(n, state);
      if (n === 0 && state.ended) {
        if (state.length === 0) endReadable(this);
        return null;
      }
      var doRead = state.needReadable;
      debug("need readable", doRead);
      if (state.length === 0 || state.length - n < state.highWaterMark) {
        doRead = true;
        debug("length less than watermark", doRead);
      }
      if (state.ended || state.reading) {
        doRead = false;
        debug("reading or ended", doRead);
      } else if (doRead) {
        debug("do read");
        state.reading = true;
        state.sync = true;
        if (state.length === 0) state.needReadable = true;
        this._read(state.highWaterMark);
        state.sync = false;
        if (!state.reading) n = howMuchToRead(nOrig, state);
      }
      var ret;
      if (n > 0) ret = fromList(n, state);
      else ret = null;
      if (ret === null) {
        state.needReadable = state.length <= state.highWaterMark;
        n = 0;
      } else {
        state.length -= n;
        state.awaitDrain = 0;
      }
      if (state.length === 0) {
        if (!state.ended) state.needReadable = true;
        if (nOrig !== n && state.ended) endReadable(this);
      }
      if (ret !== null) this.emit("data", ret);
      return ret;
    };
    function onEofChunk(stream3, state) {
      debug("onEofChunk");
      if (state.ended) return;
      if (state.decoder) {
        var chunk = state.decoder.end();
        if (chunk && chunk.length) {
          state.buffer.push(chunk);
          state.length += state.objectMode ? 1 : chunk.length;
        }
      }
      state.ended = true;
      if (state.sync) {
        emitReadable(stream3);
      } else {
        state.needReadable = false;
        if (!state.emittedReadable) {
          state.emittedReadable = true;
          emitReadable_(stream3);
        }
      }
    }
    function emitReadable(stream3) {
      var state = stream3._readableState;
      debug("emitReadable", state.needReadable, state.emittedReadable);
      state.needReadable = false;
      if (!state.emittedReadable) {
        debug("emitReadable", state.flowing);
        state.emittedReadable = true;
        process.nextTick(emitReadable_, stream3);
      }
    }
    function emitReadable_(stream3) {
      var state = stream3._readableState;
      debug("emitReadable_", state.destroyed, state.length, state.ended);
      if (!state.destroyed && (state.length || state.ended)) {
        stream3.emit("readable");
        state.emittedReadable = false;
      }
      state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;
      flow(stream3);
    }
    function maybeReadMore(stream3, state) {
      if (!state.readingMore) {
        state.readingMore = true;
        process.nextTick(maybeReadMore_, stream3, state);
      }
    }
    function maybeReadMore_(stream3, state) {
      while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {
        var len = state.length;
        debug("maybeReadMore read 0");
        stream3.read(0);
        if (len === state.length)
          break;
      }
      state.readingMore = false;
    }
    Readable.prototype._read = function(n) {
      errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED("_read()"));
    };
    Readable.prototype.pipe = function(dest, pipeOpts) {
      var src = this;
      var state = this._readableState;
      switch (state.pipesCount) {
        case 0:
          state.pipes = dest;
          break;
        case 1:
          state.pipes = [state.pipes, dest];
          break;
        default:
          state.pipes.push(dest);
          break;
      }
      state.pipesCount += 1;
      debug("pipe count=%d opts=%j", state.pipesCount, pipeOpts);
      var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
      var endFn = doEnd ? onend : unpipe;
      if (state.endEmitted) process.nextTick(endFn);
      else src.once("end", endFn);
      dest.on("unpipe", onunpipe);
      function onunpipe(readable, unpipeInfo) {
        debug("onunpipe");
        if (readable === src) {
          if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
            unpipeInfo.hasUnpiped = true;
            cleanup();
          }
        }
      }
      function onend() {
        debug("onend");
        dest.end();
      }
      var ondrain = pipeOnDrain(src);
      dest.on("drain", ondrain);
      var cleanedUp = false;
      function cleanup() {
        debug("cleanup");
        dest.removeListener("close", onclose);
        dest.removeListener("finish", onfinish);
        dest.removeListener("drain", ondrain);
        dest.removeListener("error", onerror);
        dest.removeListener("unpipe", onunpipe);
        src.removeListener("end", onend);
        src.removeListener("end", unpipe);
        src.removeListener("data", ondata);
        cleanedUp = true;
        if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
      }
      src.on("data", ondata);
      function ondata(chunk) {
        debug("ondata");
        var ret = dest.write(chunk);
        debug("dest.write", ret);
        if (ret === false) {
          if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf2(state.pipes, dest) !== -1) && !cleanedUp) {
            debug("false write response, pause", state.awaitDrain);
            state.awaitDrain++;
          }
          src.pause();
        }
      }
      function onerror(er) {
        debug("onerror", er);
        unpipe();
        dest.removeListener("error", onerror);
        if (EElistenerCount(dest, "error") === 0) errorOrDestroy(dest, er);
      }
      prependListener(dest, "error", onerror);
      function onclose() {
        dest.removeListener("finish", onfinish);
        unpipe();
      }
      dest.once("close", onclose);
      function onfinish() {
        debug("onfinish");
        dest.removeListener("close", onclose);
        unpipe();
      }
      dest.once("finish", onfinish);
      function unpipe() {
        debug("unpipe");
        src.unpipe(dest);
      }
      dest.emit("pipe", src);
      if (!state.flowing) {
        debug("pipe resume");
        src.resume();
      }
      return dest;
    };
    function pipeOnDrain(src) {
      return function pipeOnDrainFunctionResult() {
        var state = src._readableState;
        debug("pipeOnDrain", state.awaitDrain);
        if (state.awaitDrain) state.awaitDrain--;
        if (state.awaitDrain === 0 && EElistenerCount(src, "data")) {
          state.flowing = true;
          flow(src);
        }
      };
    }
    Readable.prototype.unpipe = function(dest) {
      var state = this._readableState;
      var unpipeInfo = {
        hasUnpiped: false
      };
      if (state.pipesCount === 0) return this;
      if (state.pipesCount === 1) {
        if (dest && dest !== state.pipes) return this;
        if (!dest) dest = state.pipes;
        state.pipes = null;
        state.pipesCount = 0;
        state.flowing = false;
        if (dest) dest.emit("unpipe", this, unpipeInfo);
        return this;
      }
      if (!dest) {
        var dests = state.pipes;
        var len = state.pipesCount;
        state.pipes = null;
        state.pipesCount = 0;
        state.flowing = false;
        for (var i2 = 0; i2 < len; i2++) dests[i2].emit("unpipe", this, {
          hasUnpiped: false
        });
        return this;
      }
      var index4 = indexOf2(state.pipes, dest);
      if (index4 === -1) return this;
      state.pipes.splice(index4, 1);
      state.pipesCount -= 1;
      if (state.pipesCount === 1) state.pipes = state.pipes[0];
      dest.emit("unpipe", this, unpipeInfo);
      return this;
    };
    Readable.prototype.on = function(ev, fn) {
      var res = Stream4.prototype.on.call(this, ev, fn);
      var state = this._readableState;
      if (ev === "data") {
        state.readableListening = this.listenerCount("readable") > 0;
        if (state.flowing !== false) this.resume();
      } else if (ev === "readable") {
        if (!state.endEmitted && !state.readableListening) {
          state.readableListening = state.needReadable = true;
          state.flowing = false;
          state.emittedReadable = false;
          debug("on readable", state.length, state.reading);
          if (state.length) {
            emitReadable(this);
          } else if (!state.reading) {
            process.nextTick(nReadingNextTick, this);
          }
        }
      }
      return res;
    };
    Readable.prototype.addListener = Readable.prototype.on;
    Readable.prototype.removeListener = function(ev, fn) {
      var res = Stream4.prototype.removeListener.call(this, ev, fn);
      if (ev === "readable") {
        process.nextTick(updateReadableListening, this);
      }
      return res;
    };
    Readable.prototype.removeAllListeners = function(ev) {
      var res = Stream4.prototype.removeAllListeners.apply(this, arguments);
      if (ev === "readable" || ev === void 0) {
        process.nextTick(updateReadableListening, this);
      }
      return res;
    };
    function updateReadableListening(self2) {
      var state = self2._readableState;
      state.readableListening = self2.listenerCount("readable") > 0;
      if (state.resumeScheduled && !state.paused) {
        state.flowing = true;
      } else if (self2.listenerCount("data") > 0) {
        self2.resume();
      }
    }
    function nReadingNextTick(self2) {
      debug("readable nexttick read 0");
      self2.read(0);
    }
    Readable.prototype.resume = function() {
      var state = this._readableState;
      if (!state.flowing) {
        debug("resume");
        state.flowing = !state.readableListening;
        resume(this, state);
      }
      state.paused = false;
      return this;
    };
    function resume(stream3, state) {
      if (!state.resumeScheduled) {
        state.resumeScheduled = true;
        process.nextTick(resume_, stream3, state);
      }
    }
    function resume_(stream3, state) {
      debug("resume", state.reading);
      if (!state.reading) {
        stream3.read(0);
      }
      state.resumeScheduled = false;
      stream3.emit("resume");
      flow(stream3);
      if (state.flowing && !state.reading) stream3.read(0);
    }
    Readable.prototype.pause = function() {
      debug("call pause flowing=%j", this._readableState.flowing);
      if (this._readableState.flowing !== false) {
        debug("pause");
        this._readableState.flowing = false;
        this.emit("pause");
      }
      this._readableState.paused = true;
      return this;
    };
    function flow(stream3) {
      var state = stream3._readableState;
      debug("flow", state.flowing);
      while (state.flowing && stream3.read() !== null) ;
    }
    Readable.prototype.wrap = function(stream3) {
      var _this = this;
      var state = this._readableState;
      var paused = false;
      stream3.on("end", function() {
        debug("wrapped end");
        if (state.decoder && !state.ended) {
          var chunk = state.decoder.end();
          if (chunk && chunk.length) _this.push(chunk);
        }
        _this.push(null);
      });
      stream3.on("data", function(chunk) {
        debug("wrapped data");
        if (state.decoder) chunk = state.decoder.write(chunk);
        if (state.objectMode && (chunk === null || chunk === void 0)) return;
        else if (!state.objectMode && (!chunk || !chunk.length)) return;
        var ret = _this.push(chunk);
        if (!ret) {
          paused = true;
          stream3.pause();
        }
      });
      for (var i2 in stream3) {
        if (this[i2] === void 0 && typeof stream3[i2] === "function") {
          this[i2] = /* @__PURE__ */ (function methodWrap(method) {
            return function methodWrapReturnFunction() {
              return stream3[method].apply(stream3, arguments);
            };
          })(i2);
        }
      }
      for (var n = 0; n < kProxyEvents.length; n++) {
        stream3.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
      }
      this._read = function(n2) {
        debug("wrapped _read", n2);
        if (paused) {
          paused = false;
          stream3.resume();
        }
      };
      return this;
    };
    if (typeof Symbol === "function") {
      Readable.prototype[Symbol.asyncIterator] = function() {
        if (createReadableStreamAsyncIterator === void 0) {
          createReadableStreamAsyncIterator = require_async_iterator();
        }
        return createReadableStreamAsyncIterator(this);
      };
    }
    Object.defineProperty(Readable.prototype, "readableHighWaterMark", {
      // making it explicit this property is not enumerable
      // because otherwise some prototype manipulation in
      // userland will fail
      enumerable: false,
      get: function get() {
        return this._readableState.highWaterMark;
      }
    });
    Object.defineProperty(Readable.prototype, "readableBuffer", {
      // making it explicit this property is not enumerable
      // because otherwise some prototype manipulation in
      // userland will fail
      enumerable: false,
      get: function get() {
        return this._readableState && this._readableState.buffer;
      }
    });
    Object.defineProperty(Readable.prototype, "readableFlowing", {
      // making it explicit this property is not enumerable
      // because otherwise some prototype manipulation in
      // userland will fail
      enumerable: false,
      get: function get() {
        return this._readableState.flowing;
      },
      set: function set3(state) {
        if (this._readableState) {
          this._readableState.flowing = state;
        }
      }
    });
    Readable._fromList = fromList;
    Object.defineProperty(Readable.prototype, "readableLength", {
      // making it explicit this property is not enumerable
      // because otherwise some prototype manipulation in
      // userland will fail
      enumerable: false,
      get: function get() {
        return this._readableState.length;
      }
    });
    function fromList(n, state) {
      if (state.length === 0) return null;
      var ret;
      if (state.objectMode) ret = state.buffer.shift();
      else if (!n || n >= state.length) {
        if (state.decoder) ret = state.buffer.join("");
        else if (state.buffer.length === 1) ret = state.buffer.first();
        else ret = state.buffer.concat(state.length);
        state.buffer.clear();
      } else {
        ret = state.buffer.consume(n, state.decoder);
      }
      return ret;
    }
    function endReadable(stream3) {
      var state = stream3._readableState;
      debug("endReadable", state.endEmitted);
      if (!state.endEmitted) {
        state.ended = true;
        process.nextTick(endReadableNT, state, stream3);
      }
    }
    function endReadableNT(state, stream3) {
      debug("endReadableNT", state.endEmitted, state.length);
      if (!state.endEmitted && state.length === 0) {
        state.endEmitted = true;
        stream3.readable = false;
        stream3.emit("end");
        if (state.autoDestroy) {
          var wState = stream3._writableState;
          if (!wState || wState.autoDestroy && wState.finished) {
            stream3.destroy();
          }
        }
      }
    }
    if (typeof Symbol === "function") {
      Readable.from = function(iterable, opts) {
        if (from4 === void 0) {
          from4 = require_from2();
        }
        return from4(Readable, iterable, opts);
      };
    }
    function indexOf2(xs, x2) {
      for (var i2 = 0, l = xs.length; i2 < l; i2++) {
        if (xs[i2] === x2) return i2;
      }
      return -1;
    }
  }
});

// ../../node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js
var require_stream_transform = __commonJS({
  "../../node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js"(exports2, module2) {
    "use strict";
    module2.exports = Transform;
    var _require$codes = require_errors2().codes;
    var ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED;
    var ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK;
    var ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING;
    var ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;
    var Duplex2 = require_stream_duplex();
    require_inherits()(Transform, Duplex2);
    function afterTransform(er, data) {
      var ts = this._transformState;
      ts.transforming = false;
      var cb = ts.writecb;
      if (cb === null) {
        return this.emit("error", new ERR_MULTIPLE_CALLBACK());
      }
      ts.writechunk = null;
      ts.writecb = null;
      if (data != null)
        this.push(data);
      cb(er);
      var rs = this._readableState;
      rs.reading = false;
      if (rs.needReadable || rs.length < rs.highWaterMark) {
        this._read(rs.highWaterMark);
      }
    }
    function Transform(options) {
      if (!(this instanceof Transform)) return new Transform(options);
      Duplex2.call(this, options);
      this._transformState = {
        afterTransform: afterTransform.bind(this),
        needTransform: false,
        transforming: false,
        writecb: null,
        writechunk: null,
        writeencoding: null
      };
      this._readableState.needReadable = true;
      this._readableState.sync = false;
      if (options) {
        if (typeof options.transform === "function") this._transform = options.transform;
        if (typeof options.flush === "function") this._flush = options.flush;
      }
      this.on("prefinish", prefinish);
    }
    function prefinish() {
      var _this = this;
      if (typeof this._flush === "function" && !this._readableState.destroyed) {
        this._flush(function(er, data) {
          done(_this, er, data);
        });
      } else {
        done(this, null, null);
      }
    }
    Transform.prototype.push = function(chunk, encoding) {
      this._transformState.needTransform = false;
      return Duplex2.prototype.push.call(this, chunk, encoding);
    };
    Transform.prototype._transform = function(chunk, encoding, cb) {
      cb(new ERR_METHOD_NOT_IMPLEMENTED("_transform()"));
    };
    Transform.prototype._write = function(chunk, encoding, cb) {
      var ts = this._transformState;
      ts.writecb = cb;
      ts.writechunk = chunk;
      ts.writeencoding = encoding;
      if (!ts.transforming) {
        var rs = this._readableState;
        if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
      }
    };
    Transform.prototype._read = function(n) {
      var ts = this._transformState;
      if (ts.writechunk !== null && !ts.transforming) {
        ts.transforming = true;
        this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
      } else {
        ts.needTransform = true;
      }
    };
    Transform.prototype._destroy = function(err, cb) {
      Duplex2.prototype._destroy.call(this, err, function(err2) {
        cb(err2);
      });
    };
    function done(stream3, er, data) {
      if (er) return stream3.emit("error", er);
      if (data != null)
        stream3.push(data);
      if (stream3._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();
      if (stream3._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();
      return stream3.push(null);
    }
  }
});

// ../../node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js
var require_stream_passthrough = __commonJS({
  "../../node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js"(exports2, module2) {
    "use strict";
    module2.exports = PassThrough3;
    var Transform = require_stream_transform();
    require_inherits()(PassThrough3, Transform);
    function PassThrough3(options) {
      if (!(this instanceof PassThrough3)) return new PassThrough3(options);
      Transform.call(this, options);
    }
    PassThrough3.prototype._transform = function(chunk, encoding, cb) {
      cb(null, chunk);
    };
  }
});

// ../../node_modules/bl/node_modules/readable-stream/lib/internal/streams/pipeline.js
var require_pipeline = __commonJS({
  "../../node_modules/bl/node_modules/readable-stream/lib/internal/streams/pipeline.js"(exports2, module2) {
    "use strict";
    var eos;
    function once(callback) {
      var called = false;
      return function() {
        if (called) return;
        called = true;
        callback.apply(void 0, arguments);
      };
    }
    var _require$codes = require_errors2().codes;
    var ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;
    var ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;
    function noop5(err) {
      if (err) throw err;
    }
    function isRequest3(stream3) {
      return stream3.setHeader && typeof stream3.abort === "function";
    }
    function destroyer(stream3, reading, writing, callback) {
      callback = once(callback);
      var closed = false;
      stream3.on("close", function() {
        closed = true;
      });
      if (eos === void 0) eos = require_end_of_stream();
      eos(stream3, {
        readable: reading,
        writable: writing
      }, function(err) {
        if (err) return callback(err);
        closed = true;
        callback();
      });
      var destroyed = false;
      return function(err) {
        if (closed) return;
        if (destroyed) return;
        destroyed = true;
        if (isRequest3(stream3)) return stream3.abort();
        if (typeof stream3.destroy === "function") return stream3.destroy();
        callback(err || new ERR_STREAM_DESTROYED("pipe"));
      };
    }
    function call(fn) {
      fn();
    }
    function pipe(from4, to) {
      return from4.pipe(to);
    }
    function popCallback(streams) {
      if (!streams.length) return noop5;
      if (typeof streams[streams.length - 1] !== "function") return noop5;
      return streams.pop();
    }
    function pipeline2() {
      for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {
        streams[_key] = arguments[_key];
      }
      var callback = popCallback(streams);
      if (Array.isArray(streams[0])) streams = streams[0];
      if (streams.length < 2) {
        throw new ERR_MISSING_ARGS("streams");
      }
      var error;
      var destroys = streams.map(function(stream3, i2) {
        var reading = i2 < streams.length - 1;
        var writing = i2 > 0;
        return destroyer(stream3, reading, writing, function(err) {
          if (!error) error = err;
          if (err) destroys.forEach(call);
          if (reading) return;
          destroys.forEach(call);
          callback(error);
        });
      });
      return streams.reduce(pipe);
    }
    module2.exports = pipeline2;
  }
});

// ../../node_modules/bl/node_modules/readable-stream/readable.js
var require_readable = __commonJS({
  "../../node_modules/bl/node_modules/readable-stream/readable.js"(exports2, module2) {
    var Stream4 = require("stream");
    if (process.env.READABLE_STREAM === "disable" && Stream4) {
      module2.exports = Stream4.Readable;
      Object.assign(module2.exports, Stream4);
      module2.exports.Stream = Stream4;
    } else {
      exports2 = module2.exports = require_stream_readable();
      exports2.Stream = Stream4 || exports2;
      exports2.Readable = exports2;
      exports2.Writable = require_stream_writable();
      exports2.Duplex = require_stream_duplex();
      exports2.Transform = require_stream_transform();
      exports2.PassThrough = require_stream_passthrough();
      exports2.finished = require_end_of_stream();
      exports2.pipeline = require_pipeline();
    }
  }
});

// ../../node_modules/bl/BufferList.js
var require_BufferList = __commonJS({
  "../../node_modules/bl/BufferList.js"(exports2, module2) {
    "use strict";
    var { Buffer: Buffer7 } = require("buffer");
    var symbol = Symbol.for("BufferList");
    function BufferList(buf) {
      if (!(this instanceof BufferList)) {
        return new BufferList(buf);
      }
      BufferList._init.call(this, buf);
    }
    BufferList._init = function _init(buf) {
      Object.defineProperty(this, symbol, { value: true });
      this._bufs = [];
      this.length = 0;
      if (buf) {
        this.append(buf);
      }
    };
    BufferList.prototype._new = function _new(buf) {
      return new BufferList(buf);
    };
    BufferList.prototype._offset = function _offset(offset) {
      if (offset === 0) {
        return [0, 0];
      }
      let tot = 0;
      for (let i2 = 0; i2 < this._bufs.length; i2++) {
        const _t = tot + this._bufs[i2].length;
        if (offset < _t || i2 === this._bufs.length - 1) {
          return [i2, offset - tot];
        }
        tot = _t;
      }
    };
    BufferList.prototype._reverseOffset = function(blOffset) {
      const bufferId = blOffset[0];
      let offset = blOffset[1];
      for (let i2 = 0; i2 < bufferId; i2++) {
        offset += this._bufs[i2].length;
      }
      return offset;
    };
    BufferList.prototype.get = function get(index4) {
      if (index4 > this.length || index4 < 0) {
        return void 0;
      }
      const offset = this._offset(index4);
      return this._bufs[offset[0]][offset[1]];
    };
    BufferList.prototype.slice = function slice2(start, end) {
      if (typeof start === "number" && start < 0) {
        start += this.length;
      }
      if (typeof end === "number" && end < 0) {
        end += this.length;
      }
      return this.copy(null, 0, start, end);
    };
    BufferList.prototype.copy = function copy2(dst, dstStart, srcStart, srcEnd) {
      if (typeof srcStart !== "number" || srcStart < 0) {
        srcStart = 0;
      }
      if (typeof srcEnd !== "number" || srcEnd > this.length) {
        srcEnd = this.length;
      }
      if (srcStart >= this.length) {
        return dst || Buffer7.alloc(0);
      }
      if (srcEnd <= 0) {
        return dst || Buffer7.alloc(0);
      }
      const copy3 = !!dst;
      const off = this._offset(srcStart);
      const len = srcEnd - srcStart;
      let bytes = len;
      let bufoff = copy3 && dstStart || 0;
      let start = off[1];
      if (srcStart === 0 && srcEnd === this.length) {
        if (!copy3) {
          return this._bufs.length === 1 ? this._bufs[0] : Buffer7.concat(this._bufs, this.length);
        }
        for (let i2 = 0; i2 < this._bufs.length; i2++) {
          this._bufs[i2].copy(dst, bufoff);
          bufoff += this._bufs[i2].length;
        }
        return dst;
      }
      if (bytes <= this._bufs[off[0]].length - start) {
        return copy3 ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes) : this._bufs[off[0]].slice(start, start + bytes);
      }
      if (!copy3) {
        dst = Buffer7.allocUnsafe(len);
      }
      for (let i2 = off[0]; i2 < this._bufs.length; i2++) {
        const l = this._bufs[i2].length - start;
        if (bytes > l) {
          this._bufs[i2].copy(dst, bufoff, start);
          bufoff += l;
        } else {
          this._bufs[i2].copy(dst, bufoff, start, start + bytes);
          bufoff += l;
          break;
        }
        bytes -= l;
        if (start) {
          start = 0;
        }
      }
      if (dst.length > bufoff) return dst.slice(0, bufoff);
      return dst;
    };
    BufferList.prototype.shallowSlice = function shallowSlice(start, end) {
      start = start || 0;
      end = typeof end !== "number" ? this.length : end;
      if (start < 0) {
        start += this.length;
      }
      if (end < 0) {
        end += this.length;
      }
      if (start === end) {
        return this._new();
      }
      const startOffset = this._offset(start);
      const endOffset = this._offset(end);
      const buffers = this._bufs.slice(startOffset[0], endOffset[0] + 1);
      if (endOffset[1] === 0) {
        buffers.pop();
      } else {
        buffers[buffers.length - 1] = buffers[buffers.length - 1].slice(0, endOffset[1]);
      }
      if (startOffset[1] !== 0) {
        buffers[0] = buffers[0].slice(startOffset[1]);
      }
      return this._new(buffers);
    };
    BufferList.prototype.toString = function toString6(encoding, start, end) {
      return this.slice(start, end).toString(encoding);
    };
    BufferList.prototype.consume = function consume(bytes) {
      bytes = Math.trunc(bytes);
      if (Number.isNaN(bytes) || bytes <= 0) return this;
      while (this._bufs.length) {
        if (bytes >= this._bufs[0].length) {
          bytes -= this._bufs[0].length;
          this.length -= this._bufs[0].length;
          this._bufs.shift();
        } else {
          this._bufs[0] = this._bufs[0].slice(bytes);
          this.length -= bytes;
          break;
        }
      }
      return this;
    };
    BufferList.prototype.duplicate = function duplicate() {
      const copy2 = this._new();
      for (let i2 = 0; i2 < this._bufs.length; i2++) {
        copy2.append(this._bufs[i2]);
      }
      return copy2;
    };
    BufferList.prototype.append = function append(buf) {
      if (buf == null) {
        return this;
      }
      if (buf.buffer) {
        this._appendBuffer(Buffer7.from(buf.buffer, buf.byteOffset, buf.byteLength));
      } else if (Array.isArray(buf)) {
        for (let i2 = 0; i2 < buf.length; i2++) {
          this.append(buf[i2]);
        }
      } else if (this._isBufferList(buf)) {
        for (let i2 = 0; i2 < buf._bufs.length; i2++) {
          this.append(buf._bufs[i2]);
        }
      } else {
        if (typeof buf === "number") {
          buf = buf.toString();
        }
        this._appendBuffer(Buffer7.from(buf));
      }
      return this;
    };
    BufferList.prototype._appendBuffer = function appendBuffer(buf) {
      this._bufs.push(buf);
      this.length += buf.length;
    };
    BufferList.prototype.indexOf = function(search4, offset, encoding) {
      if (encoding === void 0 && typeof offset === "string") {
        encoding = offset;
        offset = void 0;
      }
      if (typeof search4 === "function" || Array.isArray(search4)) {
        throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');
      } else if (typeof search4 === "number") {
        search4 = Buffer7.from([search4]);
      } else if (typeof search4 === "string") {
        search4 = Buffer7.from(search4, encoding);
      } else if (this._isBufferList(search4)) {
        search4 = search4.slice();
      } else if (Array.isArray(search4.buffer)) {
        search4 = Buffer7.from(search4.buffer, search4.byteOffset, search4.byteLength);
      } else if (!Buffer7.isBuffer(search4)) {
        search4 = Buffer7.from(search4);
      }
      offset = Number(offset || 0);
      if (isNaN(offset)) {
        offset = 0;
      }
      if (offset < 0) {
        offset = this.length + offset;
      }
      if (offset < 0) {
        offset = 0;
      }
      if (search4.length === 0) {
        return offset > this.length ? this.length : offset;
      }
      const blOffset = this._offset(offset);
      let blIndex = blOffset[0];
      let buffOffset = blOffset[1];
      for (; blIndex < this._bufs.length; blIndex++) {
        const buff = this._bufs[blIndex];
        while (buffOffset < buff.length) {
          const availableWindow = buff.length - buffOffset;
          if (availableWindow >= search4.length) {
            const nativeSearchResult = buff.indexOf(search4, buffOffset);
            if (nativeSearchResult !== -1) {
              return this._reverseOffset([blIndex, nativeSearchResult]);
            }
            buffOffset = buff.length - search4.length + 1;
          } else {
            const revOffset = this._reverseOffset([blIndex, buffOffset]);
            if (this._match(revOffset, search4)) {
              return revOffset;
            }
            buffOffset++;
          }
        }
        buffOffset = 0;
      }
      return -1;
    };
    BufferList.prototype._match = function(offset, search4) {
      if (this.length - offset < search4.length) {
        return false;
      }
      for (let searchOffset = 0; searchOffset < search4.length; searchOffset++) {
        if (this.get(offset + searchOffset) !== search4[searchOffset]) {
          return false;
        }
      }
      return true;
    };
    (function() {
      const methods = {
        readDoubleBE: 8,
        readDoubleLE: 8,
        readFloatBE: 4,
        readFloatLE: 4,
        readInt32BE: 4,
        readInt32LE: 4,
        readUInt32BE: 4,
        readUInt32LE: 4,
        readInt16BE: 2,
        readInt16LE: 2,
        readUInt16BE: 2,
        readUInt16LE: 2,
        readInt8: 1,
        readUInt8: 1,
        readIntBE: null,
        readIntLE: null,
        readUIntBE: null,
        readUIntLE: null
      };
      for (const m2 in methods) {
        (function(m3) {
          if (methods[m3] === null) {
            BufferList.prototype[m3] = function(offset, byteLength2) {
              return this.slice(offset, offset + byteLength2)[m3](0, byteLength2);
            };
          } else {
            BufferList.prototype[m3] = function(offset = 0) {
              return this.slice(offset, offset + methods[m3])[m3](0);
            };
          }
        })(m2);
      }
    })();
    BufferList.prototype._isBufferList = function _isBufferList(b) {
      return b instanceof BufferList || BufferList.isBufferList(b);
    };
    BufferList.isBufferList = function isBufferList(b) {
      return b != null && b[symbol];
    };
    module2.exports = BufferList;
  }
});

// ../../node_modules/bl/bl.js
var require_bl = __commonJS({
  "../../node_modules/bl/bl.js"(exports2, module2) {
    "use strict";
    var DuplexStream = require_readable().Duplex;
    var inherits = require_inherits();
    var BufferList = require_BufferList();
    function BufferListStream(callback) {
      if (!(this instanceof BufferListStream)) {
        return new BufferListStream(callback);
      }
      if (typeof callback === "function") {
        this._callback = callback;
        const piper = function piper2(err) {
          if (this._callback) {
            this._callback(err);
            this._callback = null;
          }
        }.bind(this);
        this.on("pipe", function onPipe(src) {
          src.on("error", piper);
        });
        this.on("unpipe", function onUnpipe(src) {
          src.removeListener("error", piper);
        });
        callback = null;
      }
      BufferList._init.call(this, callback);
      DuplexStream.call(this);
    }
    inherits(BufferListStream, DuplexStream);
    Object.assign(BufferListStream.prototype, BufferList.prototype);
    BufferListStream.prototype._new = function _new(callback) {
      return new BufferListStream(callback);
    };
    BufferListStream.prototype._write = function _write(buf, encoding, callback) {
      this._appendBuffer(buf);
      if (typeof callback === "function") {
        callback();
      }
    };
    BufferListStream.prototype._read = function _read(size) {
      if (!this.length) {
        return this.push(null);
      }
      size = Math.min(size, this.length);
      this.push(this.slice(0, size));
      this.consume(size);
    };
    BufferListStream.prototype.end = function end(chunk) {
      DuplexStream.prototype.end.call(this, chunk);
      if (this._callback) {
        this._callback(null, this.slice());
        this._callback = null;
      }
    };
    BufferListStream.prototype._destroy = function _destroy(err, cb) {
      this._bufs.length = 0;
      this.length = 0;
      cb(err);
    };
    BufferListStream.prototype._isBufferList = function _isBufferList(b) {
      return b instanceof BufferListStream || b instanceof BufferList || BufferListStream.isBufferList(b);
    };
    BufferListStream.isBufferList = BufferList.isBufferList;
    module2.exports = BufferListStream;
    module2.exports.BufferListStream = BufferListStream;
    module2.exports.BufferList = BufferList;
  }
});

// ../../node_modules/ora/index.js
var require_ora = __commonJS({
  "../../node_modules/ora/index.js"(exports2, module2) {
    "use strict";
    var readline2 = require("readline");
    var chalk6 = require_source();
    var cliCursor = require_cli_cursor();
    var cliSpinners = require_cli_spinners();
    var logSymbols = require_log_symbols();
    var stripAnsi3 = require_strip_ansi2();
    var wcwidth = require_wcwidth();
    var isInteractive = require_is_interactive();
    var isUnicodeSupported2 = require_is_unicode_supported();
    var { BufferListStream } = require_bl();
    var TEXT = Symbol("text");
    var PREFIX_TEXT = Symbol("prefixText");
    var ASCII_ETX_CODE = 3;
    var StdinDiscarder = class {
      constructor() {
        this.requests = 0;
        this.mutedStream = new BufferListStream();
        this.mutedStream.pipe(process.stdout);
        const self2 = this;
        this.ourEmit = function(event, data, ...args) {
          const { stdin } = process;
          if (self2.requests > 0 || stdin.emit === self2.ourEmit) {
            if (event === "keypress") {
              return;
            }
            if (event === "data" && data.includes(ASCII_ETX_CODE)) {
              process.emit("SIGINT");
            }
            Reflect.apply(self2.oldEmit, this, [event, data, ...args]);
          } else {
            Reflect.apply(process.stdin.emit, this, [event, data, ...args]);
          }
        };
      }
      start() {
        this.requests++;
        if (this.requests === 1) {
          this.realStart();
        }
      }
      stop() {
        if (this.requests <= 0) {
          throw new Error("`stop` called more times than `start`");
        }
        this.requests--;
        if (this.requests === 0) {
          this.realStop();
        }
      }
      realStart() {
        if (process.platform === "win32") {
          return;
        }
        this.rl = readline2.createInterface({
          input: process.stdin,
          output: this.mutedStream
        });
        this.rl.on("SIGINT", () => {
          if (process.listenerCount("SIGINT") === 0) {
            process.emit("SIGINT");
          } else {
            this.rl.close();
            process.kill(process.pid, "SIGINT");
          }
        });
      }
      realStop() {
        if (process.platform === "win32") {
          return;
        }
        this.rl.close();
        this.rl = void 0;
      }
    };
    var stdinDiscarder;
    var Ora = class {
      constructor(options) {
        if (!stdinDiscarder) {
          stdinDiscarder = new StdinDiscarder();
        }
        if (typeof options === "string") {
          options = {
            text: options
          };
        }
        this.options = {
          text: "",
          color: "cyan",
          stream: process.stderr,
          discardStdin: true,
          ...options
        };
        this.spinner = this.options.spinner;
        this.color = this.options.color;
        this.hideCursor = this.options.hideCursor !== false;
        this.interval = this.options.interval || this.spinner.interval || 100;
        this.stream = this.options.stream;
        this.id = void 0;
        this.isEnabled = typeof this.options.isEnabled === "boolean" ? this.options.isEnabled : isInteractive({ stream: this.stream });
        this.isSilent = typeof this.options.isSilent === "boolean" ? this.options.isSilent : false;
        this.text = this.options.text;
        this.prefixText = this.options.prefixText;
        this.linesToClear = 0;
        this.indent = this.options.indent;
        this.discardStdin = this.options.discardStdin;
        this.isDiscardingStdin = false;
      }
      get indent() {
        return this._indent;
      }
      set indent(indent2 = 0) {
        if (!(indent2 >= 0 && Number.isInteger(indent2))) {
          throw new Error("The `indent` option must be an integer from 0 and up");
        }
        this._indent = indent2;
      }
      _updateInterval(interval2) {
        if (interval2 !== void 0) {
          this.interval = interval2;
        }
      }
      get spinner() {
        return this._spinner;
      }
      set spinner(spinner) {
        this.frameIndex = 0;
        if (typeof spinner === "object") {
          if (spinner.frames === void 0) {
            throw new Error("The given spinner must have a `frames` property");
          }
          this._spinner = spinner;
        } else if (!isUnicodeSupported2()) {
          this._spinner = cliSpinners.line;
        } else if (spinner === void 0) {
          this._spinner = cliSpinners.dots;
        } else if (spinner !== "default" && cliSpinners[spinner]) {
          this._spinner = cliSpinners[spinner];
        } else {
          throw new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`);
        }
        this._updateInterval(this._spinner.interval);
      }
      get text() {
        return this[TEXT];
      }
      set text(value) {
        this[TEXT] = value;
        this.updateLineCount();
      }
      get prefixText() {
        return this[PREFIX_TEXT];
      }
      set prefixText(value) {
        this[PREFIX_TEXT] = value;
        this.updateLineCount();
      }
      get isSpinning() {
        return this.id !== void 0;
      }
      getFullPrefixText(prefixText = this[PREFIX_TEXT], postfix = " ") {
        if (typeof prefixText === "string") {
          return prefixText + postfix;
        }
        if (typeof prefixText === "function") {
          return prefixText() + postfix;
        }
        return "";
      }
      updateLineCount() {
        const columns = this.stream.columns || 80;
        const fullPrefixText = this.getFullPrefixText(this.prefixText, "-");
        this.lineCount = 0;
        for (const line2 of stripAnsi3(fullPrefixText + "--" + this[TEXT]).split("\n")) {
          this.lineCount += Math.max(1, Math.ceil(wcwidth(line2) / columns));
        }
      }
      get isEnabled() {
        return this._isEnabled && !this.isSilent;
      }
      set isEnabled(value) {
        if (typeof value !== "boolean") {
          throw new TypeError("The `isEnabled` option must be a boolean");
        }
        this._isEnabled = value;
      }
      get isSilent() {
        return this._isSilent;
      }
      set isSilent(value) {
        if (typeof value !== "boolean") {
          throw new TypeError("The `isSilent` option must be a boolean");
        }
        this._isSilent = value;
      }
      frame() {
        const { frames } = this.spinner;
        let frame = frames[this.frameIndex];
        if (this.color) {
          frame = chalk6[this.color](frame);
        }
        this.frameIndex = ++this.frameIndex % frames.length;
        const fullPrefixText = typeof this.prefixText === "string" && this.prefixText !== "" ? this.prefixText + " " : "";
        const fullText = typeof this.text === "string" ? " " + this.text : "";
        return fullPrefixText + frame + fullText;
      }
      clear() {
        if (!this.isEnabled || !this.stream.isTTY) {
          return this;
        }
        for (let i2 = 0; i2 < this.linesToClear; i2++) {
          if (i2 > 0) {
            this.stream.moveCursor(0, -1);
          }
          this.stream.clearLine();
          this.stream.cursorTo(this.indent);
        }
        this.linesToClear = 0;
        return this;
      }
      render() {
        if (this.isSilent) {
          return this;
        }
        this.clear();
        this.stream.write(this.frame());
        this.linesToClear = this.lineCount;
        return this;
      }
      start(text7) {
        if (text7) {
          this.text = text7;
        }
        if (this.isSilent) {
          return this;
        }
        if (!this.isEnabled) {
          if (this.text) {
            this.stream.write(`- ${this.text}
`);
          }
          return this;
        }
        if (this.isSpinning) {
          return this;
        }
        if (this.hideCursor) {
          cliCursor.hide(this.stream);
        }
        if (this.discardStdin && process.stdin.isTTY) {
          this.isDiscardingStdin = true;
          stdinDiscarder.start();
        }
        this.render();
        this.id = setInterval(this.render.bind(this), this.interval);
        return this;
      }
      stop() {
        if (!this.isEnabled) {
          return this;
        }
        clearInterval(this.id);
        this.id = void 0;
        this.frameIndex = 0;
        this.clear();
        if (this.hideCursor) {
          cliCursor.show(this.stream);
        }
        if (this.discardStdin && process.stdin.isTTY && this.isDiscardingStdin) {
          stdinDiscarder.stop();
          this.isDiscardingStdin = false;
        }
        return this;
      }
      succeed(text7) {
        return this.stopAndPersist({ symbol: logSymbols.success, text: text7 });
      }
      fail(text7) {
        return this.stopAndPersist({ symbol: logSymbols.error, text: text7 });
      }
      warn(text7) {
        return this.stopAndPersist({ symbol: logSymbols.warning, text: text7 });
      }
      info(text7) {
        return this.stopAndPersist({ symbol: logSymbols.info, text: text7 });
      }
      stopAndPersist(options = {}) {
        if (this.isSilent) {
          return this;
        }
        const prefixText = options.prefixText || this.prefixText;
        const text7 = options.text || this.text;
        const fullText = typeof text7 === "string" ? " " + text7 : "";
        this.stop();
        this.stream.write(`${this.getFullPrefixText(prefixText, " ")}${options.symbol || " "}${fullText}
`);
        return this;
      }
    };
    var oraFactory = function(options) {
      return new Ora(options);
    };
    module2.exports = oraFactory;
    module2.exports.promise = (action, options) => {
      if (typeof action.then !== "function") {
        throw new TypeError("Parameter `action` must be a Promise");
      }
      const spinner = new Ora(options);
      spinner.start();
      (async () => {
        try {
          await action;
          spinner.succeed();
        } catch {
          spinner.fail();
        }
      })();
      return spinner;
    };
  }
});

// ../../node_modules/chardet/lib/fs/node.js
var require_node8 = __commonJS({
  "../../node_modules/chardet/lib/fs/node.js"(exports2, module2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var fsModule;
    exports2.default = () => {
      if (typeof module2 === "object" && typeof module2.exports === "object") {
        fsModule = fsModule ? fsModule : require("fs");
        return fsModule;
      }
      throw new Error("File system is not available");
    };
  }
});

// ../../node_modules/chardet/lib/match.js
var require_match = __commonJS({
  "../../node_modules/chardet/lib/match.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.default = (ctx, rec, confidence) => ({
      confidence,
      name: rec.name(ctx),
      lang: rec.language ? rec.language() : void 0
    });
  }
});

// ../../node_modules/chardet/lib/encoding/ascii.js
var require_ascii = __commonJS({
  "../../node_modules/chardet/lib/encoding/ascii.js"(exports2) {
    "use strict";
    var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    var match_1 = __importDefault2(require_match());
    var Ascii = class {
      name() {
        return "ASCII";
      }
      match(det) {
        const input3 = det.rawInput;
        for (let i2 = 0; i2 < det.rawLen; i2++) {
          const b = input3[i2];
          if (b < 32 || b > 126) {
            return (0, match_1.default)(det, this, 0);
          }
        }
        return (0, match_1.default)(det, this, 100);
      }
    };
    exports2.default = Ascii;
  }
});

// ../../node_modules/chardet/lib/encoding/utf8.js
var require_utf8 = __commonJS({
  "../../node_modules/chardet/lib/encoding/utf8.js"(exports2) {
    "use strict";
    var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    var match_1 = __importDefault2(require_match());
    var Utf8 = class {
      name() {
        return "UTF-8";
      }
      match(det) {
        let hasBOM = false, numValid = 0, numInvalid = 0, trailBytes = 0, confidence;
        const input3 = det.rawInput;
        if (det.rawLen >= 3 && (input3[0] & 255) == 239 && (input3[1] & 255) == 187 && (input3[2] & 255) == 191) {
          hasBOM = true;
        }
        for (let i2 = 0; i2 < det.rawLen; i2++) {
          const b = input3[i2];
          if ((b & 128) == 0)
            continue;
          if ((b & 224) == 192) {
            trailBytes = 1;
          } else if ((b & 240) == 224) {
            trailBytes = 2;
          } else if ((b & 248) == 240) {
            trailBytes = 3;
          } else {
            numInvalid++;
            if (numInvalid > 5)
              break;
            trailBytes = 0;
          }
          for (; ; ) {
            i2++;
            if (i2 >= det.rawLen)
              break;
            if ((input3[i2] & 192) != 128) {
              numInvalid++;
              break;
            }
            if (--trailBytes == 0) {
              numValid++;
              break;
            }
          }
        }
        confidence = 0;
        if (hasBOM && numInvalid == 0)
          confidence = 100;
        else if (hasBOM && numValid > numInvalid * 10)
          confidence = 80;
        else if (numValid > 3 && numInvalid == 0)
          confidence = 100;
        else if (numValid > 0 && numInvalid == 0)
          confidence = 80;
        else if (numValid == 0 && numInvalid == 0)
          confidence = 10;
        else if (numValid > numInvalid * 10)
          confidence = 25;
        else
          return null;
        return (0, match_1.default)(det, this, confidence);
      }
    };
    exports2.default = Utf8;
  }
});

// ../../node_modules/chardet/lib/encoding/unicode.js
var require_unicode3 = __commonJS({
  "../../node_modules/chardet/lib/encoding/unicode.js"(exports2) {
    "use strict";
    var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.UTF_32LE = exports2.UTF_32BE = exports2.UTF_16LE = exports2.UTF_16BE = void 0;
    var match_1 = __importDefault2(require_match());
    var UTF_16BE = class {
      name() {
        return "UTF-16BE";
      }
      match(det) {
        const input3 = det.rawInput;
        if (input3.length >= 2 && (input3[0] & 255) == 254 && (input3[1] & 255) == 255) {
          return (0, match_1.default)(det, this, 100);
        }
        return null;
      }
    };
    exports2.UTF_16BE = UTF_16BE;
    var UTF_16LE = class {
      name() {
        return "UTF-16LE";
      }
      match(det) {
        const input3 = det.rawInput;
        if (input3.length >= 2 && (input3[0] & 255) == 255 && (input3[1] & 255) == 254) {
          if (input3.length >= 4 && input3[2] == 0 && input3[3] == 0) {
            return null;
          }
          return (0, match_1.default)(det, this, 100);
        }
        return null;
      }
    };
    exports2.UTF_16LE = UTF_16LE;
    var UTF_32 = class {
      name() {
        return "UTF-32";
      }
      getChar(_input, _index4) {
        return -1;
      }
      match(det) {
        let numValid = 0, numInvalid = 0, hasBOM = false, confidence = 0;
        const limit = det.rawLen / 4 * 4;
        const input3 = det.rawInput;
        if (limit == 0) {
          return null;
        }
        if (this.getChar(input3, 0) == 65279) {
          hasBOM = true;
        }
        for (let i2 = 0; i2 < limit; i2 += 4) {
          const ch = this.getChar(input3, i2);
          if (ch < 0 || ch >= 1114111 || ch >= 55296 && ch <= 57343) {
            numInvalid += 1;
          } else {
            numValid += 1;
          }
        }
        if (hasBOM && numInvalid == 0) {
          confidence = 100;
        } else if (hasBOM && numValid > numInvalid * 10) {
          confidence = 80;
        } else if (numValid > 3 && numInvalid == 0) {
          confidence = 100;
        } else if (numValid > 0 && numInvalid == 0) {
          confidence = 80;
        } else if (numValid > numInvalid * 10) {
          confidence = 25;
        }
        return confidence == 0 ? null : (0, match_1.default)(det, this, confidence);
      }
    };
    var UTF_32BE = class extends UTF_32 {
      name() {
        return "UTF-32BE";
      }
      getChar(input3, index4) {
        return (input3[index4 + 0] & 255) << 24 | (input3[index4 + 1] & 255) << 16 | (input3[index4 + 2] & 255) << 8 | input3[index4 + 3] & 255;
      }
    };
    exports2.UTF_32BE = UTF_32BE;
    var UTF_32LE = class extends UTF_32 {
      name() {
        return "UTF-32LE";
      }
      getChar(input3, index4) {
        return (input3[index4 + 3] & 255) << 24 | (input3[index4 + 2] & 255) << 16 | (input3[index4 + 1] & 255) << 8 | input3[index4 + 0] & 255;
      }
    };
    exports2.UTF_32LE = UTF_32LE;
  }
});

// ../../node_modules/chardet/lib/encoding/mbcs.js
var require_mbcs = __commonJS({
  "../../node_modules/chardet/lib/encoding/mbcs.js"(exports2) {
    "use strict";
    var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.gb_18030 = exports2.euc_kr = exports2.euc_jp = exports2.big5 = exports2.sjis = void 0;
    var match_1 = __importDefault2(require_match());
    function binarySearch(arr, searchValue) {
      const find2 = (arr2, searchValue2, left2, right2) => {
        if (right2 < left2)
          return -1;
        const mid = Math.floor(left2 + right2 >>> 1);
        if (searchValue2 > arr2[mid])
          return find2(arr2, searchValue2, mid + 1, right2);
        if (searchValue2 < arr2[mid])
          return find2(arr2, searchValue2, left2, mid - 1);
        return mid;
      };
      return find2(arr, searchValue, 0, arr.length - 1);
    }
    var IteratedChar = class {
      constructor() {
        this.charValue = 0;
        this.index = 0;
        this.nextIndex = 0;
        this.error = false;
        this.done = false;
      }
      reset() {
        this.charValue = 0;
        this.index = -1;
        this.nextIndex = 0;
        this.error = false;
        this.done = false;
      }
      nextByte(det) {
        if (this.nextIndex >= det.rawLen) {
          this.done = true;
          return -1;
        }
        const byteValue = det.rawInput[this.nextIndex++] & 255;
        return byteValue;
      }
    };
    var mbcs = class {
      constructor() {
        this.commonChars = [];
      }
      name() {
        return "mbcs";
      }
      match(det) {
        let doubleByteCharCount = 0, commonCharCount = 0, badCharCount = 0, totalCharCount = 0, confidence = 0;
        const iter = new IteratedChar();
        detectBlock: {
          for (iter.reset(); this.nextChar(iter, det); ) {
            totalCharCount++;
            if (iter.error) {
              badCharCount++;
            } else {
              const cv = iter.charValue & 4294967295;
              if (cv > 255) {
                doubleByteCharCount++;
                if (this.commonChars != null) {
                  if (binarySearch(this.commonChars, cv) >= 0) {
                    commonCharCount++;
                  }
                }
              }
            }
            if (badCharCount >= 2 && badCharCount * 5 >= doubleByteCharCount) {
              break detectBlock;
            }
          }
          if (doubleByteCharCount <= 10 && badCharCount == 0) {
            if (doubleByteCharCount == 0 && totalCharCount < 10) {
              confidence = 0;
            } else {
              confidence = 10;
            }
            break detectBlock;
          }
          if (doubleByteCharCount < 20 * badCharCount) {
            confidence = 0;
            break detectBlock;
          }
          if (this.commonChars == null) {
            confidence = 30 + doubleByteCharCount - 20 * badCharCount;
            if (confidence > 100) {
              confidence = 100;
            }
          } else {
            const maxVal = Math.log(doubleByteCharCount / 4);
            const scaleFactor = 90 / maxVal;
            confidence = Math.floor(Math.log(commonCharCount + 1) * scaleFactor + 10);
            confidence = Math.min(confidence, 100);
          }
        }
        return confidence == 0 ? null : (0, match_1.default)(det, this, confidence);
      }
      nextChar(_iter, _det) {
        return true;
      }
    };
    var sjis = class extends mbcs {
      constructor() {
        super(...arguments);
        this.commonChars = [
          33088,
          33089,
          33090,
          33093,
          33115,
          33129,
          33130,
          33141,
          33142,
          33440,
          33442,
          33444,
          33449,
          33450,
          33451,
          33453,
          33455,
          33457,
          33459,
          33461,
          33463,
          33469,
          33470,
          33473,
          33476,
          33477,
          33478,
          33480,
          33481,
          33484,
          33485,
          33500,
          33504,
          33511,
          33512,
          33513,
          33514,
          33520,
          33521,
          33601,
          33603,
          33614,
          33615,
          33624,
          33630,
          33634,
          33639,
          33653,
          33654,
          33673,
          33674,
          33675,
          33677,
          33683,
          36502,
          37882,
          38314
        ];
      }
      name() {
        return "Shift_JIS";
      }
      language() {
        return "ja";
      }
      nextChar(iter, det) {
        iter.index = iter.nextIndex;
        iter.error = false;
        const firstByte = iter.charValue = iter.nextByte(det);
        if (firstByte < 0)
          return false;
        if (firstByte <= 127 || firstByte > 160 && firstByte <= 223)
          return true;
        const secondByte = iter.nextByte(det);
        if (secondByte < 0)
          return false;
        iter.charValue = firstByte << 8 | secondByte;
        if (!(secondByte >= 64 && secondByte <= 127 || secondByte >= 128 && secondByte <= 255)) {
          iter.error = true;
        }
        return true;
      }
    };
    exports2.sjis = sjis;
    var big5 = class extends mbcs {
      constructor() {
        super(...arguments);
        this.commonChars = [
          41280,
          41281,
          41282,
          41283,
          41287,
          41289,
          41333,
          41334,
          42048,
          42054,
          42055,
          42056,
          42065,
          42068,
          42071,
          42084,
          42090,
          42092,
          42103,
          42147,
          42148,
          42151,
          42177,
          42190,
          42193,
          42207,
          42216,
          42237,
          42304,
          42312,
          42328,
          42345,
          42445,
          42471,
          42583,
          42593,
          42594,
          42600,
          42608,
          42664,
          42675,
          42681,
          42707,
          42715,
          42726,
          42738,
          42816,
          42833,
          42841,
          42970,
          43171,
          43173,
          43181,
          43217,
          43219,
          43236,
          43260,
          43456,
          43474,
          43507,
          43627,
          43706,
          43710,
          43724,
          43772,
          44103,
          44111,
          44208,
          44242,
          44377,
          44745,
          45024,
          45290,
          45423,
          45747,
          45764,
          45935,
          46156,
          46158,
          46412,
          46501,
          46525,
          46544,
          46552,
          46705,
          47085,
          47207,
          47428,
          47832,
          47940,
          48033,
          48593,
          49860,
          50105,
          50240,
          50271
        ];
      }
      name() {
        return "Big5";
      }
      language() {
        return "zh";
      }
      nextChar(iter, det) {
        iter.index = iter.nextIndex;
        iter.error = false;
        const firstByte = iter.charValue = iter.nextByte(det);
        if (firstByte < 0)
          return false;
        if (firstByte <= 127 || firstByte == 255)
          return true;
        const secondByte = iter.nextByte(det);
        if (secondByte < 0)
          return false;
        iter.charValue = iter.charValue << 8 | secondByte;
        if (secondByte < 64 || secondByte == 127 || secondByte == 255)
          iter.error = true;
        return true;
      }
    };
    exports2.big5 = big5;
    function eucNextChar(iter, det) {
      iter.index = iter.nextIndex;
      iter.error = false;
      let firstByte = 0;
      let secondByte = 0;
      let thirdByte = 0;
      buildChar: {
        firstByte = iter.charValue = iter.nextByte(det);
        if (firstByte < 0) {
          iter.done = true;
          break buildChar;
        }
        if (firstByte <= 141) {
          break buildChar;
        }
        secondByte = iter.nextByte(det);
        iter.charValue = iter.charValue << 8 | secondByte;
        if (firstByte >= 161 && firstByte <= 254) {
          if (secondByte < 161) {
            iter.error = true;
          }
          break buildChar;
        }
        if (firstByte == 142) {
          if (secondByte < 161) {
            iter.error = true;
          }
          break buildChar;
        }
        if (firstByte == 143) {
          thirdByte = iter.nextByte(det);
          iter.charValue = iter.charValue << 8 | thirdByte;
          if (thirdByte < 161) {
            iter.error = true;
          }
        }
      }
      return iter.done == false;
    }
    var euc_jp = class extends mbcs {
      constructor() {
        super(...arguments);
        this.commonChars = [
          41377,
          41378,
          41379,
          41382,
          41404,
          41418,
          41419,
          41430,
          41431,
          42146,
          42148,
          42150,
          42152,
          42154,
          42155,
          42156,
          42157,
          42159,
          42161,
          42163,
          42165,
          42167,
          42169,
          42171,
          42173,
          42175,
          42176,
          42177,
          42179,
          42180,
          42182,
          42183,
          42184,
          42185,
          42186,
          42187,
          42190,
          42191,
          42192,
          42206,
          42207,
          42209,
          42210,
          42212,
          42216,
          42217,
          42218,
          42219,
          42220,
          42223,
          42226,
          42227,
          42402,
          42403,
          42404,
          42406,
          42407,
          42410,
          42413,
          42415,
          42416,
          42419,
          42421,
          42423,
          42424,
          42425,
          42431,
          42435,
          42438,
          42439,
          42440,
          42441,
          42443,
          42448,
          42453,
          42454,
          42455,
          42462,
          42464,
          42465,
          42469,
          42473,
          42474,
          42475,
          42476,
          42477,
          42483,
          47273,
          47572,
          47854,
          48072,
          48880,
          49079,
          50410,
          50940,
          51133,
          51896,
          51955,
          52188,
          52689
        ];
        this.nextChar = eucNextChar;
      }
      name() {
        return "EUC-JP";
      }
      language() {
        return "ja";
      }
    };
    exports2.euc_jp = euc_jp;
    var euc_kr = class extends mbcs {
      constructor() {
        super(...arguments);
        this.commonChars = [
          45217,
          45235,
          45253,
          45261,
          45268,
          45286,
          45293,
          45304,
          45306,
          45308,
          45496,
          45497,
          45511,
          45527,
          45538,
          45994,
          46011,
          46274,
          46287,
          46297,
          46315,
          46501,
          46517,
          46527,
          46535,
          46569,
          46835,
          47023,
          47042,
          47054,
          47270,
          47278,
          47286,
          47288,
          47291,
          47337,
          47531,
          47534,
          47564,
          47566,
          47613,
          47800,
          47822,
          47824,
          47857,
          48103,
          48115,
          48125,
          48301,
          48314,
          48338,
          48374,
          48570,
          48576,
          48579,
          48581,
          48838,
          48840,
          48863,
          48878,
          48888,
          48890,
          49057,
          49065,
          49088,
          49124,
          49131,
          49132,
          49144,
          49319,
          49327,
          49336,
          49338,
          49339,
          49341,
          49351,
          49356,
          49358,
          49359,
          49366,
          49370,
          49381,
          49403,
          49404,
          49572,
          49574,
          49590,
          49622,
          49631,
          49654,
          49656,
          50337,
          50637,
          50862,
          51151,
          51153,
          51154,
          51160,
          51173,
          51373
        ];
        this.nextChar = eucNextChar;
      }
      name() {
        return "EUC-KR";
      }
      language() {
        return "ko";
      }
    };
    exports2.euc_kr = euc_kr;
    var gb_18030 = class extends mbcs {
      constructor() {
        super(...arguments);
        this.commonChars = [
          41377,
          41378,
          41379,
          41380,
          41392,
          41393,
          41457,
          41459,
          41889,
          41900,
          41914,
          45480,
          45496,
          45502,
          45755,
          46025,
          46070,
          46323,
          46525,
          46532,
          46563,
          46767,
          46804,
          46816,
          47010,
          47016,
          47037,
          47062,
          47069,
          47284,
          47327,
          47350,
          47531,
          47561,
          47576,
          47610,
          47613,
          47821,
          48039,
          48086,
          48097,
          48122,
          48316,
          48347,
          48382,
          48588,
          48845,
          48861,
          49076,
          49094,
          49097,
          49332,
          49389,
          49611,
          49883,
          50119,
          50396,
          50410,
          50636,
          50935,
          51192,
          51371,
          51403,
          51413,
          51431,
          51663,
          51706,
          51889,
          51893,
          51911,
          51920,
          51926,
          51957,
          51965,
          52460,
          52728,
          52906,
          52932,
          52946,
          52965,
          53173,
          53186,
          53206,
          53442,
          53445,
          53456,
          53460,
          53671,
          53930,
          53938,
          53941,
          53947,
          53972,
          54211,
          54224,
          54269,
          54466,
          54490,
          54754,
          54992
        ];
      }
      name() {
        return "GB18030";
      }
      language() {
        return "zh";
      }
      nextChar(iter, det) {
        iter.index = iter.nextIndex;
        iter.error = false;
        let firstByte = 0;
        let secondByte = 0;
        let thirdByte = 0;
        let fourthByte = 0;
        buildChar: {
          firstByte = iter.charValue = iter.nextByte(det);
          if (firstByte < 0) {
            iter.done = true;
            break buildChar;
          }
          if (firstByte <= 128) {
            break buildChar;
          }
          secondByte = iter.nextByte(det);
          iter.charValue = iter.charValue << 8 | secondByte;
          if (firstByte >= 129 && firstByte <= 254) {
            if (secondByte >= 64 && secondByte <= 126 || secondByte >= 80 && secondByte <= 254) {
              break buildChar;
            }
            if (secondByte >= 48 && secondByte <= 57) {
              thirdByte = iter.nextByte(det);
              if (thirdByte >= 129 && thirdByte <= 254) {
                fourthByte = iter.nextByte(det);
                if (fourthByte >= 48 && fourthByte <= 57) {
                  iter.charValue = iter.charValue << 16 | thirdByte << 8 | fourthByte;
                  break buildChar;
                }
              }
            }
            iter.error = true;
            break buildChar;
          }
        }
        return iter.done == false;
      }
    };
    exports2.gb_18030 = gb_18030;
  }
});

// ../../node_modules/chardet/lib/encoding/sbcs.js
var require_sbcs = __commonJS({
  "../../node_modules/chardet/lib/encoding/sbcs.js"(exports2) {
    "use strict";
    var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.KOI8_R = exports2.windows_1256 = exports2.windows_1251 = exports2.ISO_8859_9 = exports2.ISO_8859_8 = exports2.ISO_8859_7 = exports2.ISO_8859_6 = exports2.ISO_8859_5 = exports2.ISO_8859_2 = exports2.ISO_8859_1 = void 0;
    var match_1 = __importDefault2(require_match());
    var N_GRAM_MASK = 16777215;
    var NGramParser = class {
      constructor(theNgramList, theByteMap) {
        this.byteIndex = 0;
        this.ngram = 0;
        this.ngramCount = 0;
        this.hitCount = 0;
        this.spaceChar = 32;
        this.ngramList = theNgramList;
        this.byteMap = theByteMap;
      }
      search(table5, value) {
        let index4 = 0;
        if (table5[index4 + 32] <= value)
          index4 += 32;
        if (table5[index4 + 16] <= value)
          index4 += 16;
        if (table5[index4 + 8] <= value)
          index4 += 8;
        if (table5[index4 + 4] <= value)
          index4 += 4;
        if (table5[index4 + 2] <= value)
          index4 += 2;
        if (table5[index4 + 1] <= value)
          index4 += 1;
        if (table5[index4] > value)
          index4 -= 1;
        if (index4 < 0 || table5[index4] != value)
          return -1;
        return index4;
      }
      lookup(thisNgram) {
        this.ngramCount += 1;
        if (this.search(this.ngramList, thisNgram) >= 0) {
          this.hitCount += 1;
        }
      }
      addByte(b) {
        this.ngram = (this.ngram << 8) + (b & 255) & N_GRAM_MASK;
        this.lookup(this.ngram);
      }
      nextByte(det) {
        if (this.byteIndex >= det.inputLen)
          return -1;
        return det.inputBytes[this.byteIndex++] & 255;
      }
      parse(det, spaceCh) {
        let b, ignoreSpace = false;
        this.spaceChar = spaceCh;
        while ((b = this.nextByte(det)) >= 0) {
          const mb = this.byteMap[b];
          if (mb != 0) {
            if (!(mb == this.spaceChar && ignoreSpace)) {
              this.addByte(mb);
            }
            ignoreSpace = mb == this.spaceChar;
          }
        }
        this.addByte(this.spaceChar);
        const rawPercent = this.hitCount / this.ngramCount;
        if (rawPercent > 0.33)
          return 98;
        return Math.floor(rawPercent * 300);
      }
    };
    var NGramsPlusLang = class {
      constructor(la, ng) {
        this.fLang = la;
        this.fNGrams = ng;
      }
    };
    var isFlatNgrams = (val) => Array.isArray(val) && isFinite(val[0]);
    var sbcs = class {
      constructor() {
        this.spaceChar = 32;
        this.nGramLang = void 0;
      }
      ngrams() {
        return [];
      }
      byteMap() {
        return [];
      }
      name(_input) {
        return "sbcs";
      }
      language() {
        return this.nGramLang;
      }
      match(det) {
        this.nGramLang = void 0;
        const ngrams = this.ngrams();
        if (isFlatNgrams(ngrams)) {
          const parser3 = new NGramParser(ngrams, this.byteMap());
          const confidence = parser3.parse(det, this.spaceChar);
          return confidence <= 0 ? null : (0, match_1.default)(det, this, confidence);
        }
        let bestConfidence = -1;
        for (let i2 = ngrams.length - 1; i2 >= 0; i2--) {
          const ngl = ngrams[i2];
          const parser3 = new NGramParser(ngl.fNGrams, this.byteMap());
          const confidence = parser3.parse(det, this.spaceChar);
          if (confidence > bestConfidence) {
            bestConfidence = confidence;
            this.nGramLang = ngl.fLang;
          }
        }
        return bestConfidence <= 0 ? null : (0, match_1.default)(det, this, bestConfidence);
      }
    };
    var ISO_8859_1 = class extends sbcs {
      byteMap() {
        return [
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          0,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          170,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          181,
          32,
          32,
          32,
          32,
          186,
          32,
          32,
          32,
          32,
          32,
          224,
          225,
          226,
          227,
          228,
          229,
          230,
          231,
          232,
          233,
          234,
          235,
          236,
          237,
          238,
          239,
          240,
          241,
          242,
          243,
          244,
          245,
          246,
          32,
          248,
          249,
          250,
          251,
          252,
          253,
          254,
          223,
          224,
          225,
          226,
          227,
          228,
          229,
          230,
          231,
          232,
          233,
          234,
          235,
          236,
          237,
          238,
          239,
          240,
          241,
          242,
          243,
          244,
          245,
          246,
          32,
          248,
          249,
          250,
          251,
          252,
          253,
          254,
          255
        ];
      }
      ngrams() {
        return [
          new NGramsPlusLang("da", [
            2122086,
            2122100,
            2122853,
            2123118,
            2123122,
            2123375,
            2123873,
            2124064,
            2125157,
            2125671,
            2126053,
            2126697,
            2126708,
            2126953,
            2127465,
            6383136,
            6385184,
            6385252,
            6386208,
            6386720,
            6579488,
            6579566,
            6579570,
            6579572,
            6627443,
            6644768,
            6644837,
            6647328,
            6647396,
            6648352,
            6648421,
            6648608,
            6648864,
            6713202,
            6776096,
            6776174,
            6776178,
            6907749,
            6908960,
            6909543,
            7038240,
            7039845,
            7103858,
            7104871,
            7105637,
            7169380,
            7234661,
            7234848,
            7235360,
            7235429,
            7300896,
            7302432,
            7303712,
            7398688,
            7479396,
            7479397,
            7479411,
            7496992,
            7566437,
            7610483,
            7628064,
            7628146,
            7629164,
            7759218
          ]),
          new NGramsPlusLang("de", [
            2122094,
            2122101,
            2122341,
            2122849,
            2122853,
            2122857,
            2123113,
            2123621,
            2123873,
            2124142,
            2125161,
            2126691,
            2126693,
            2127214,
            2127461,
            2127471,
            2127717,
            2128501,
            6448498,
            6514720,
            6514789,
            6514804,
            6578547,
            6579566,
            6579570,
            6580581,
            6627428,
            6627443,
            6646126,
            6646132,
            6647328,
            6648352,
            6648608,
            6776174,
            6841710,
            6845472,
            6906728,
            6907168,
            6909472,
            6909541,
            6911008,
            7104867,
            7105637,
            7217249,
            7217252,
            7217267,
            7234592,
            7234661,
            7234848,
            7235360,
            7235429,
            7238757,
            7479396,
            7496805,
            7497065,
            7562088,
            7566437,
            7610468,
            7628064,
            7628142,
            7628146,
            7695972,
            7695975,
            7759218
          ]),
          new NGramsPlusLang("en", [
            2122016,
            2122094,
            2122341,
            2122607,
            2123375,
            2123873,
            2123877,
            2124142,
            2125153,
            2125670,
            2125938,
            2126437,
            2126689,
            2126708,
            2126952,
            2126959,
            2127720,
            6383972,
            6384672,
            6385184,
            6385252,
            6386464,
            6386720,
            6386789,
            6386793,
            6561889,
            6561908,
            6627425,
            6627443,
            6627444,
            6644768,
            6647412,
            6648352,
            6648608,
            6713202,
            6840692,
            6841632,
            6841714,
            6906912,
            6909472,
            6909543,
            6909806,
            6910752,
            7217249,
            7217268,
            7234592,
            7235360,
            7238688,
            7300640,
            7302688,
            7303712,
            7496992,
            7500576,
            7544929,
            7544948,
            7561577,
            7566368,
            7610484,
            7628146,
            7628897,
            7628901,
            7629167,
            7630624,
            7631648
          ]),
          new NGramsPlusLang("es", [
            2122016,
            2122593,
            2122607,
            2122853,
            2123116,
            2123118,
            2123123,
            2124142,
            2124897,
            2124911,
            2125921,
            2125935,
            2125938,
            2126197,
            2126437,
            2126693,
            2127214,
            2128160,
            6365283,
            6365284,
            6365285,
            6365292,
            6365296,
            6382441,
            6382703,
            6384672,
            6386208,
            6386464,
            6515187,
            6516590,
            6579488,
            6579564,
            6582048,
            6627428,
            6627429,
            6627436,
            6646816,
            6647328,
            6647412,
            6648608,
            6648692,
            6907246,
            6943598,
            7102752,
            7106419,
            7217253,
            7238757,
            7282788,
            7282789,
            7302688,
            7303712,
            7303968,
            7364978,
            7435621,
            7495968,
            7497075,
            7544932,
            7544933,
            7544944,
            7562528,
            7628064,
            7630624,
            7693600,
            15953440
          ]),
          new NGramsPlusLang("fr", [
            2122101,
            2122607,
            2122849,
            2122853,
            2122869,
            2123118,
            2123124,
            2124897,
            2124901,
            2125921,
            2125935,
            2125938,
            2126197,
            2126693,
            2126703,
            2127214,
            2154528,
            6385268,
            6386793,
            6513952,
            6516590,
            6579488,
            6579571,
            6583584,
            6627425,
            6627427,
            6627428,
            6627429,
            6627436,
            6627440,
            6627443,
            6647328,
            6647412,
            6648352,
            6648608,
            6648864,
            6649202,
            6909806,
            6910752,
            6911008,
            7102752,
            7103776,
            7103859,
            7169390,
            7217252,
            7234848,
            7238432,
            7238688,
            7302688,
            7302772,
            7304562,
            7435621,
            7479404,
            7496992,
            7544929,
            7544932,
            7544933,
            7544940,
            7544944,
            7610468,
            7628064,
            7629167,
            7693600,
            7696928
          ]),
          new NGramsPlusLang("it", [
            2122092,
            2122600,
            2122607,
            2122853,
            2122857,
            2123040,
            2124140,
            2124142,
            2124897,
            2125925,
            2125938,
            2127214,
            6365283,
            6365284,
            6365296,
            6365299,
            6386799,
            6514789,
            6516590,
            6579564,
            6580512,
            6627425,
            6627427,
            6627428,
            6627433,
            6627436,
            6627440,
            6627443,
            6646816,
            6646892,
            6647412,
            6648352,
            6841632,
            6889569,
            6889571,
            6889572,
            6889587,
            6906144,
            6908960,
            6909472,
            6909806,
            7102752,
            7103776,
            7104800,
            7105633,
            7234848,
            7235872,
            7237408,
            7238757,
            7282785,
            7282788,
            7282793,
            7282803,
            7302688,
            7302757,
            7366002,
            7495968,
            7496992,
            7563552,
            7627040,
            7628064,
            7629088,
            7630624,
            8022383
          ]),
          new NGramsPlusLang("nl", [
            2122092,
            2122341,
            2122849,
            2122853,
            2122857,
            2123109,
            2123118,
            2123621,
            2123877,
            2124142,
            2125153,
            2125157,
            2125680,
            2126949,
            2127457,
            2127461,
            2127471,
            2127717,
            2128489,
            6381934,
            6381938,
            6385184,
            6385252,
            6386208,
            6386720,
            6514804,
            6579488,
            6579566,
            6579570,
            6627426,
            6627446,
            6645102,
            6645106,
            6647328,
            6648352,
            6648435,
            6648864,
            6776174,
            6841716,
            6907168,
            6909472,
            6909543,
            6910752,
            7217250,
            7217252,
            7217253,
            7217256,
            7217263,
            7217270,
            7234661,
            7235360,
            7302756,
            7303026,
            7303200,
            7303712,
            7562088,
            7566437,
            7610468,
            7628064,
            7628142,
            7628146,
            7758190,
            7759218,
            7761775
          ]),
          new NGramsPlusLang("no", [
            2122100,
            2122102,
            2122853,
            2123118,
            2123122,
            2123375,
            2123873,
            2124064,
            2125157,
            2125671,
            2126053,
            2126693,
            2126699,
            2126703,
            2126708,
            2126953,
            2127465,
            2155808,
            6385252,
            6386208,
            6386720,
            6579488,
            6579566,
            6579572,
            6627443,
            6644768,
            6647328,
            6647397,
            6648352,
            6648421,
            6648864,
            6648948,
            6713202,
            6776174,
            6908779,
            6908960,
            6909543,
            7038240,
            7039845,
            7103776,
            7105637,
            7169380,
            7169390,
            7217267,
            7234848,
            7235360,
            7235429,
            7237221,
            7300896,
            7302432,
            7303712,
            7398688,
            7479411,
            7496992,
            7565165,
            7566437,
            7610483,
            7628064,
            7628142,
            7628146,
            7629164,
            7631904,
            7631973,
            7759218
          ]),
          new NGramsPlusLang("pt", [
            2122016,
            2122607,
            2122849,
            2122853,
            2122863,
            2123040,
            2123123,
            2125153,
            2125423,
            2125600,
            2125921,
            2125935,
            2125938,
            2126197,
            2126437,
            2126693,
            2127213,
            6365281,
            6365283,
            6365284,
            6365296,
            6382693,
            6382703,
            6384672,
            6386208,
            6386273,
            6386464,
            6516589,
            6516590,
            6578464,
            6579488,
            6582048,
            6582131,
            6627425,
            6627428,
            6647072,
            6647412,
            6648608,
            6648692,
            6906144,
            6906721,
            7169390,
            7238757,
            7238767,
            7282785,
            7282787,
            7282788,
            7282789,
            7282800,
            7303968,
            7364978,
            7435621,
            7495968,
            7497075,
            7544929,
            7544932,
            7544933,
            7544944,
            7566433,
            7628064,
            7630624,
            7693600,
            14905120,
            15197039
          ]),
          new NGramsPlusLang("sv", [
            2122100,
            2122102,
            2122853,
            2123118,
            2123510,
            2123873,
            2124064,
            2124142,
            2124655,
            2125157,
            2125667,
            2126053,
            2126699,
            2126703,
            2126708,
            2126953,
            2127457,
            2127465,
            2155634,
            6382693,
            6385184,
            6385252,
            6386208,
            6386804,
            6514720,
            6579488,
            6579566,
            6579570,
            6579572,
            6644768,
            6647328,
            6648352,
            6648864,
            6747762,
            6776174,
            6909036,
            6909543,
            7037216,
            7105568,
            7169380,
            7217267,
            7233824,
            7234661,
            7235360,
            7235429,
            7235950,
            7299944,
            7302432,
            7302688,
            7398688,
            7479393,
            7479411,
            7495968,
            7564129,
            7565165,
            7610483,
            7627040,
            7628064,
            7628146,
            7629164,
            7631904,
            7758194,
            14971424,
            16151072
          ])
        ];
      }
      name(input3) {
        return input3 && input3.c1Bytes ? "windows-1252" : "ISO-8859-1";
      }
    };
    exports2.ISO_8859_1 = ISO_8859_1;
    var ISO_8859_2 = class extends sbcs {
      byteMap() {
        return [
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          0,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          177,
          32,
          179,
          32,
          181,
          182,
          32,
          32,
          185,
          186,
          187,
          188,
          32,
          190,
          191,
          32,
          177,
          32,
          179,
          32,
          181,
          182,
          183,
          32,
          185,
          186,
          187,
          188,
          32,
          190,
          191,
          224,
          225,
          226,
          227,
          228,
          229,
          230,
          231,
          232,
          233,
          234,
          235,
          236,
          237,
          238,
          239,
          240,
          241,
          242,
          243,
          244,
          245,
          246,
          32,
          248,
          249,
          250,
          251,
          252,
          253,
          254,
          223,
          224,
          225,
          226,
          227,
          228,
          229,
          230,
          231,
          232,
          233,
          234,
          235,
          236,
          237,
          238,
          239,
          240,
          241,
          242,
          243,
          244,
          245,
          246,
          32,
          248,
          249,
          250,
          251,
          252,
          253,
          254,
          32
        ];
      }
      ngrams() {
        return [
          new NGramsPlusLang("cs", [
            2122016,
            2122361,
            2122863,
            2124389,
            2125409,
            2125413,
            2125600,
            2125668,
            2125935,
            2125938,
            2126072,
            2126447,
            2126693,
            2126703,
            2126708,
            2126959,
            2127392,
            2127481,
            2128481,
            6365296,
            6513952,
            6514720,
            6627440,
            6627443,
            6627446,
            6647072,
            6647533,
            6844192,
            6844260,
            6910836,
            6972704,
            7042149,
            7103776,
            7104800,
            7233824,
            7268640,
            7269408,
            7269664,
            7282800,
            7300206,
            7301737,
            7304052,
            7304480,
            7304801,
            7368548,
            7368554,
            7369327,
            7403621,
            7562528,
            7565173,
            7566433,
            7566441,
            7566446,
            7628146,
            7630573,
            7630624,
            7676016,
            12477728,
            14773997,
            15296623,
            15540336,
            15540339,
            15559968,
            16278884
          ]),
          new NGramsPlusLang("hu", [
            2122016,
            2122106,
            2122341,
            2123111,
            2123116,
            2123365,
            2123873,
            2123887,
            2124147,
            2124645,
            2124649,
            2124790,
            2124901,
            2125153,
            2125157,
            2125161,
            2125413,
            2126714,
            2126949,
            2156915,
            6365281,
            6365291,
            6365293,
            6365299,
            6384416,
            6385184,
            6388256,
            6447470,
            6448494,
            6645625,
            6646560,
            6646816,
            6646885,
            6647072,
            6647328,
            6648421,
            6648864,
            6648933,
            6648948,
            6781216,
            6844263,
            6909556,
            6910752,
            7020641,
            7075450,
            7169383,
            7170414,
            7217249,
            7233899,
            7234923,
            7234925,
            7238688,
            7300985,
            7544929,
            7567973,
            7567988,
            7568097,
            7596391,
            7610465,
            7631904,
            7659891,
            8021362,
            14773792,
            15299360
          ]),
          new NGramsPlusLang("pl", [
            2122618,
            2122863,
            2124064,
            2124389,
            2124655,
            2125153,
            2125161,
            2125409,
            2125417,
            2125668,
            2125935,
            2125938,
            2126697,
            2127648,
            2127721,
            2127737,
            2128416,
            2128481,
            6365296,
            6365303,
            6385257,
            6514720,
            6519397,
            6519417,
            6582048,
            6584937,
            6627440,
            6627443,
            6627447,
            6627450,
            6645615,
            6646304,
            6647072,
            6647401,
            6778656,
            6906144,
            6907168,
            6907242,
            7037216,
            7039264,
            7039333,
            7170405,
            7233824,
            7235937,
            7235941,
            7282800,
            7305057,
            7305065,
            7368556,
            7369313,
            7369327,
            7369338,
            7502437,
            7502457,
            7563754,
            7564137,
            7566433,
            7825765,
            7955304,
            7957792,
            8021280,
            8022373,
            8026400,
            15955744
          ]),
          new NGramsPlusLang("ro", [
            2122016,
            2122083,
            2122593,
            2122597,
            2122607,
            2122613,
            2122853,
            2122857,
            2124897,
            2125153,
            2125925,
            2125938,
            2126693,
            2126819,
            2127214,
            2144873,
            2158190,
            6365283,
            6365284,
            6386277,
            6386720,
            6386789,
            6386976,
            6513010,
            6516590,
            6518048,
            6546208,
            6579488,
            6627425,
            6627427,
            6627428,
            6627440,
            6627443,
            6644e3,
            6646048,
            6646885,
            6647412,
            6648692,
            6889569,
            6889571,
            6889572,
            6889584,
            6907168,
            6908192,
            6909472,
            7102752,
            7103776,
            7106418,
            7107945,
            7234848,
            7238770,
            7303712,
            7365998,
            7496992,
            7497057,
            7501088,
            7594784,
            7628064,
            7631477,
            7660320,
            7694624,
            7695392,
            12216608,
            15625760
          ])
        ];
      }
      name(det) {
        return det && det.c1Bytes ? "windows-1250" : "ISO-8859-2";
      }
    };
    exports2.ISO_8859_2 = ISO_8859_2;
    var ISO_8859_5 = class extends sbcs {
      byteMap() {
        return [
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          0,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          241,
          242,
          243,
          244,
          245,
          246,
          247,
          248,
          249,
          250,
          251,
          252,
          32,
          254,
          255,
          208,
          209,
          210,
          211,
          212,
          213,
          214,
          215,
          216,
          217,
          218,
          219,
          220,
          221,
          222,
          223,
          224,
          225,
          226,
          227,
          228,
          229,
          230,
          231,
          232,
          233,
          234,
          235,
          236,
          237,
          238,
          239,
          208,
          209,
          210,
          211,
          212,
          213,
          214,
          215,
          216,
          217,
          218,
          219,
          220,
          221,
          222,
          223,
          224,
          225,
          226,
          227,
          228,
          229,
          230,
          231,
          232,
          233,
          234,
          235,
          236,
          237,
          238,
          239,
          32,
          241,
          242,
          243,
          244,
          245,
          246,
          247,
          248,
          249,
          250,
          251,
          252,
          32,
          254,
          255
        ];
      }
      ngrams() {
        return [
          2150944,
          2151134,
          2151646,
          2152400,
          2152480,
          2153168,
          2153182,
          2153936,
          2153941,
          2154193,
          2154462,
          2154464,
          2154704,
          2154974,
          2154978,
          2155230,
          2156514,
          2158050,
          13688280,
          13689580,
          13884960,
          14015468,
          14015960,
          14016994,
          14017056,
          14164191,
          14210336,
          14211104,
          14216992,
          14407133,
          14407712,
          14413021,
          14536736,
          14538016,
          14538965,
          14538991,
          14540320,
          14540498,
          14557394,
          14557407,
          14557409,
          14602784,
          14602960,
          14603230,
          14604576,
          14605292,
          14605344,
          14606818,
          14671579,
          14672085,
          14672088,
          14672094,
          14733522,
          14734804,
          14803664,
          14803666,
          14803672,
          14806816,
          14865883,
          14868e3,
          14868192,
          14871584,
          15196894,
          15459616
        ];
      }
      name() {
        return "ISO-8859-5";
      }
      language() {
        return "ru";
      }
    };
    exports2.ISO_8859_5 = ISO_8859_5;
    var ISO_8859_6 = class extends sbcs {
      byteMap() {
        return [
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          0,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          193,
          194,
          195,
          196,
          197,
          198,
          199,
          200,
          201,
          202,
          203,
          204,
          205,
          206,
          207,
          208,
          209,
          210,
          211,
          212,
          213,
          214,
          215,
          216,
          217,
          218,
          32,
          32,
          32,
          32,
          32,
          224,
          225,
          226,
          227,
          228,
          229,
          230,
          231,
          232,
          233,
          234,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32
        ];
      }
      ngrams() {
        return [
          2148324,
          2148326,
          2148551,
          2152932,
          2154986,
          2155748,
          2156006,
          2156743,
          13050055,
          13091104,
          13093408,
          13095200,
          13100064,
          13100227,
          13100231,
          13100232,
          13100234,
          13100236,
          13100237,
          13100239,
          13100243,
          13100249,
          13100258,
          13100261,
          13100264,
          13100266,
          13100320,
          13100576,
          13100746,
          13115591,
          13181127,
          13181153,
          13181156,
          13181157,
          13181160,
          13246663,
          13574343,
          13617440,
          13705415,
          13748512,
          13836487,
          14229703,
          14279913,
          14805536,
          14950599,
          14993696,
          15001888,
          15002144,
          15016135,
          15058720,
          15059232,
          15066656,
          15081671,
          15147207,
          15189792,
          15255524,
          15263264,
          15278279,
          15343815,
          15343845,
          15343848,
          15386912,
          15388960,
          15394336
        ];
      }
      name() {
        return "ISO-8859-6";
      }
      language() {
        return "ar";
      }
    };
    exports2.ISO_8859_6 = ISO_8859_6;
    var ISO_8859_7 = class extends sbcs {
      byteMap() {
        return [
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          0,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          161,
          162,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          220,
          32,
          221,
          222,
          223,
          32,
          252,
          32,
          253,
          254,
          192,
          225,
          226,
          227,
          228,
          229,
          230,
          231,
          232,
          233,
          234,
          235,
          236,
          237,
          238,
          239,
          240,
          241,
          32,
          243,
          244,
          245,
          246,
          247,
          248,
          249,
          250,
          251,
          220,
          221,
          222,
          223,
          224,
          225,
          226,
          227,
          228,
          229,
          230,
          231,
          232,
          233,
          234,
          235,
          236,
          237,
          238,
          239,
          240,
          241,
          242,
          243,
          244,
          245,
          246,
          247,
          248,
          249,
          250,
          251,
          252,
          253,
          254,
          32
        ];
      }
      ngrams() {
        return [
          2154989,
          2154992,
          2155497,
          2155753,
          2156016,
          2156320,
          2157281,
          2157797,
          2158049,
          2158368,
          2158817,
          2158831,
          2158833,
          2159604,
          2159605,
          2159847,
          2159855,
          14672160,
          14754017,
          14754036,
          14805280,
          14806304,
          14807292,
          14807584,
          14936545,
          15067424,
          15069728,
          15147252,
          15199520,
          15200800,
          15278324,
          15327520,
          15330014,
          15331872,
          15393257,
          15393268,
          15525152,
          15540449,
          15540453,
          15540464,
          15589664,
          15725088,
          15725856,
          15790069,
          15790575,
          15793184,
          15868129,
          15868133,
          15868138,
          15868144,
          15868148,
          15983904,
          15984416,
          15987951,
          16048416,
          16048617,
          16050157,
          16050162,
          16050666,
          16052e3,
          16052213,
          16054765,
          16379168,
          16706848
        ];
      }
      name(det) {
        return det && det.c1Bytes ? "windows-1253" : "ISO-8859-7";
      }
      language() {
        return "el";
      }
    };
    exports2.ISO_8859_7 = ISO_8859_7;
    var ISO_8859_8 = class extends sbcs {
      byteMap() {
        return [
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          0,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          181,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          224,
          225,
          226,
          227,
          228,
          229,
          230,
          231,
          232,
          233,
          234,
          235,
          236,
          237,
          238,
          239,
          240,
          241,
          242,
          243,
          244,
          245,
          246,
          247,
          248,
          249,
          250,
          32,
          32,
          32,
          32,
          32
        ];
      }
      ngrams() {
        return [
          new NGramsPlusLang("he", [
            2154725,
            2154727,
            2154729,
            2154746,
            2154985,
            2154990,
            2155744,
            2155749,
            2155753,
            2155758,
            2155762,
            2155769,
            2155770,
            2157792,
            2157796,
            2158304,
            2159340,
            2161132,
            14744096,
            14950624,
            14950625,
            14950628,
            14950636,
            14950638,
            14950649,
            15001056,
            15065120,
            15068448,
            15068960,
            15071264,
            15071776,
            15278308,
            15328288,
            15328762,
            15329773,
            15330592,
            15331104,
            15333408,
            15333920,
            15474912,
            15474916,
            15523872,
            15524896,
            15540448,
            15540449,
            15540452,
            15540460,
            15540462,
            15540473,
            15655968,
            15671524,
            15787040,
            15788320,
            15788525,
            15920160,
            16261348,
            16312813,
            16378912,
            16392416,
            16392417,
            16392420,
            16392428,
            16392430,
            16392441
          ]),
          new NGramsPlusLang("he", [
            2154725,
            2154732,
            2155753,
            2155756,
            2155758,
            2155760,
            2157040,
            2157810,
            2157817,
            2158053,
            2158057,
            2158565,
            2158569,
            2160869,
            2160873,
            2161376,
            2161381,
            2161385,
            14688484,
            14688492,
            14688493,
            14688506,
            14738464,
            14738916,
            14740512,
            14741024,
            14754020,
            14754029,
            14754042,
            14950628,
            14950633,
            14950636,
            14950637,
            14950639,
            14950648,
            14950650,
            15002656,
            15065120,
            15066144,
            15196192,
            15327264,
            15327520,
            15328288,
            15474916,
            15474925,
            15474938,
            15528480,
            15530272,
            15591913,
            15591920,
            15591928,
            15605988,
            15605997,
            15606010,
            15655200,
            15655968,
            15918112,
            16326884,
            16326893,
            16326906,
            16376864,
            16441376,
            16442400,
            16442857
          ])
        ];
      }
      name(det) {
        return det && det.c1Bytes ? "windows-1255" : "ISO-8859-8";
      }
      language() {
        return "he";
      }
    };
    exports2.ISO_8859_8 = ISO_8859_8;
    var ISO_8859_9 = class extends sbcs {
      byteMap() {
        return [
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          0,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          170,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          181,
          32,
          32,
          32,
          32,
          186,
          32,
          32,
          32,
          32,
          32,
          224,
          225,
          226,
          227,
          228,
          229,
          230,
          231,
          232,
          233,
          234,
          235,
          236,
          237,
          238,
          239,
          240,
          241,
          242,
          243,
          244,
          245,
          246,
          32,
          248,
          249,
          250,
          251,
          252,
          105,
          254,
          223,
          224,
          225,
          226,
          227,
          228,
          229,
          230,
          231,
          232,
          233,
          234,
          235,
          236,
          237,
          238,
          239,
          240,
          241,
          242,
          243,
          244,
          245,
          246,
          32,
          248,
          249,
          250,
          251,
          252,
          253,
          254,
          255
        ];
      }
      ngrams() {
        return [
          2122337,
          2122345,
          2122357,
          2122849,
          2122853,
          2123621,
          2123873,
          2124140,
          2124641,
          2124655,
          2125153,
          2125676,
          2126689,
          2126945,
          2127461,
          2128225,
          6365282,
          6384416,
          6384737,
          6384993,
          6385184,
          6385405,
          6386208,
          6386273,
          6386429,
          6386685,
          6388065,
          6449522,
          6578464,
          6579488,
          6580512,
          6627426,
          6627435,
          6644841,
          6647328,
          6648352,
          6648425,
          6648681,
          6909029,
          6909472,
          6909545,
          6910496,
          7102830,
          7102834,
          7103776,
          7103858,
          7217249,
          7217250,
          7217259,
          7234657,
          7234661,
          7234848,
          7235872,
          7235950,
          7273760,
          7498094,
          7535982,
          7759136,
          7954720,
          7958386,
          16608800,
          16608868,
          16609021,
          16642301
        ];
      }
      name(det) {
        return det && det.c1Bytes ? "windows-1254" : "ISO-8859-9";
      }
      language() {
        return "tr";
      }
    };
    exports2.ISO_8859_9 = ISO_8859_9;
    var windows_1251 = class extends sbcs {
      byteMap() {
        return [
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          0,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          144,
          131,
          32,
          131,
          32,
          32,
          32,
          32,
          32,
          32,
          154,
          32,
          156,
          157,
          158,
          159,
          144,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          154,
          32,
          156,
          157,
          158,
          159,
          32,
          162,
          162,
          188,
          32,
          180,
          32,
          32,
          184,
          32,
          186,
          32,
          32,
          32,
          32,
          191,
          32,
          32,
          179,
          179,
          180,
          181,
          32,
          32,
          184,
          32,
          186,
          32,
          188,
          190,
          190,
          191,
          224,
          225,
          226,
          227,
          228,
          229,
          230,
          231,
          232,
          233,
          234,
          235,
          236,
          237,
          238,
          239,
          240,
          241,
          242,
          243,
          244,
          245,
          246,
          247,
          248,
          249,
          250,
          251,
          252,
          253,
          254,
          255,
          224,
          225,
          226,
          227,
          228,
          229,
          230,
          231,
          232,
          233,
          234,
          235,
          236,
          237,
          238,
          239,
          240,
          241,
          242,
          243,
          244,
          245,
          246,
          247,
          248,
          249,
          250,
          251,
          252,
          253,
          254,
          255
        ];
      }
      ngrams() {
        return [
          2155040,
          2155246,
          2155758,
          2156512,
          2156576,
          2157280,
          2157294,
          2158048,
          2158053,
          2158305,
          2158574,
          2158576,
          2158816,
          2159086,
          2159090,
          2159342,
          2160626,
          2162162,
          14740968,
          14742268,
          14937632,
          15068156,
          15068648,
          15069682,
          15069728,
          15212783,
          15263008,
          15263776,
          15269664,
          15459821,
          15460384,
          15465709,
          15589408,
          15590688,
          15591653,
          15591679,
          15592992,
          15593186,
          15605986,
          15605999,
          15606001,
          15655456,
          15655648,
          15655918,
          15657248,
          15657980,
          15658016,
          15659506,
          15724267,
          15724773,
          15724776,
          15724782,
          15786210,
          15787492,
          15856352,
          15856354,
          15856360,
          15859488,
          15918571,
          15920672,
          15920880,
          15924256,
          16249582,
          16512288
        ];
      }
      name() {
        return "windows-1251";
      }
      language() {
        return "ru";
      }
    };
    exports2.windows_1251 = windows_1251;
    var windows_1256 = class extends sbcs {
      byteMap() {
        return [
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          0,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          129,
          32,
          131,
          32,
          32,
          32,
          32,
          136,
          32,
          138,
          32,
          156,
          141,
          142,
          143,
          144,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          152,
          32,
          154,
          32,
          156,
          32,
          32,
          159,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          170,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          181,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          192,
          193,
          194,
          195,
          196,
          197,
          198,
          199,
          200,
          201,
          202,
          203,
          204,
          205,
          206,
          207,
          208,
          209,
          210,
          211,
          212,
          213,
          214,
          32,
          216,
          217,
          218,
          219,
          220,
          221,
          222,
          223,
          224,
          225,
          226,
          227,
          228,
          229,
          230,
          231,
          232,
          233,
          234,
          235,
          236,
          237,
          238,
          239,
          32,
          32,
          32,
          32,
          244,
          32,
          32,
          32,
          32,
          249,
          32,
          251,
          252,
          32,
          32,
          255
        ];
      }
      ngrams() {
        return [
          2148321,
          2148324,
          2148551,
          2153185,
          2153965,
          2154977,
          2155492,
          2156231,
          13050055,
          13091104,
          13093408,
          13095200,
          13099296,
          13099459,
          13099463,
          13099464,
          13099466,
          13099468,
          13099469,
          13099471,
          13099475,
          13099482,
          13099486,
          13099491,
          13099494,
          13099501,
          13099808,
          13100064,
          13100234,
          13115591,
          13181127,
          13181149,
          13181153,
          13181155,
          13181158,
          13246663,
          13574343,
          13617440,
          13705415,
          13748512,
          13836487,
          14295239,
          14344684,
          14544160,
          14753991,
          14797088,
          14806048,
          14806304,
          14885063,
          14927648,
          14928160,
          14935072,
          14950599,
          15016135,
          15058720,
          15124449,
          15131680,
          15474887,
          15540423,
          15540451,
          15540454,
          15583520,
          15585568,
          15590432
        ];
      }
      name() {
        return "windows-1256";
      }
      language() {
        return "ar";
      }
    };
    exports2.windows_1256 = windows_1256;
    var KOI8_R = class extends sbcs {
      byteMap() {
        return [
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          0,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          97,
          98,
          99,
          100,
          101,
          102,
          103,
          104,
          105,
          106,
          107,
          108,
          109,
          110,
          111,
          112,
          113,
          114,
          115,
          116,
          117,
          118,
          119,
          120,
          121,
          122,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          163,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          163,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          32,
          192,
          193,
          194,
          195,
          196,
          197,
          198,
          199,
          200,
          201,
          202,
          203,
          204,
          205,
          206,
          207,
          208,
          209,
          210,
          211,
          212,
          213,
          214,
          215,
          216,
          217,
          218,
          219,
          220,
          221,
          222,
          223,
          192,
          193,
          194,
          195,
          196,
          197,
          198,
          199,
          200,
          201,
          202,
          203,
          204,
          205,
          206,
          207,
          208,
          209,
          210,
          211,
          212,
          213,
          214,
          215,
          216,
          217,
          218,
          219,
          220,
          221,
          222,
          223
        ];
      }
      ngrams() {
        return [
          2147535,
          2148640,
          2149313,
          2149327,
          2150081,
          2150085,
          2150338,
          2150607,
          2150610,
          2151105,
          2151375,
          2151380,
          2151631,
          2152224,
          2152399,
          2153153,
          2153684,
          2154196,
          12701385,
          12702936,
          12963032,
          12963529,
          12964820,
          12964896,
          13094688,
          13181136,
          13223200,
          13224224,
          13226272,
          13419982,
          13420832,
          13424846,
          13549856,
          13550880,
          13552069,
          13552081,
          13553440,
          13553623,
          13574352,
          13574355,
          13574359,
          13617103,
          13617696,
          13618392,
          13618464,
          13620180,
          13621024,
          13621185,
          13684684,
          13685445,
          13685449,
          13685455,
          13812183,
          13813188,
          13881632,
          13882561,
          13882569,
          13882583,
          13944268,
          13946656,
          13946834,
          13948960,
          14272544,
          14603471
        ];
      }
      name() {
        return "KOI8-R";
      }
      language() {
        return "ru";
      }
    };
    exports2.KOI8_R = KOI8_R;
  }
});

// ../../node_modules/chardet/lib/encoding/iso2022.js
var require_iso2022 = __commonJS({
  "../../node_modules/chardet/lib/encoding/iso2022.js"(exports2) {
    "use strict";
    var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ISO_2022_CN = exports2.ISO_2022_KR = exports2.ISO_2022_JP = void 0;
    var match_1 = __importDefault2(require_match());
    var ISO_2022 = class {
      constructor() {
        this.escapeSequences = [];
      }
      name() {
        return "ISO_2022";
      }
      match(det) {
        let i2, j;
        let escN;
        let hits = 0;
        let misses = 0;
        let shifts = 0;
        let confidence;
        const text7 = det.inputBytes;
        const textLen2 = det.inputLen;
        scanInput: for (i2 = 0; i2 < textLen2; i2++) {
          if (text7[i2] == 27) {
            checkEscapes: for (escN = 0; escN < this.escapeSequences.length; escN++) {
              const seq2 = this.escapeSequences[escN];
              if (textLen2 - i2 < seq2.length)
                continue checkEscapes;
              for (j = 1; j < seq2.length; j++)
                if (seq2[j] != text7[i2 + j])
                  continue checkEscapes;
              hits++;
              i2 += seq2.length - 1;
              continue scanInput;
            }
            misses++;
          }
          if (text7[i2] == 14 || text7[i2] == 15)
            shifts++;
        }
        if (hits == 0)
          return null;
        confidence = (100 * hits - 100 * misses) / (hits + misses);
        if (hits + shifts < 5)
          confidence -= (5 - (hits + shifts)) * 10;
        return confidence <= 0 ? null : (0, match_1.default)(det, this, confidence);
      }
    };
    var ISO_2022_JP = class extends ISO_2022 {
      constructor() {
        super(...arguments);
        this.escapeSequences = [
          [27, 36, 40, 67],
          [27, 36, 40, 68],
          [27, 36, 64],
          [27, 36, 65],
          [27, 36, 66],
          [27, 38, 64],
          [27, 40, 66],
          [27, 40, 72],
          [27, 40, 73],
          [27, 40, 74],
          [27, 46, 65],
          [27, 46, 70]
        ];
      }
      name() {
        return "ISO-2022-JP";
      }
      language() {
        return "ja";
      }
    };
    exports2.ISO_2022_JP = ISO_2022_JP;
    var ISO_2022_KR = class extends ISO_2022 {
      constructor() {
        super(...arguments);
        this.escapeSequences = [[27, 36, 41, 67]];
      }
      name() {
        return "ISO-2022-KR";
      }
      language() {
        return "kr";
      }
    };
    exports2.ISO_2022_KR = ISO_2022_KR;
    var ISO_2022_CN = class extends ISO_2022 {
      constructor() {
        super(...arguments);
        this.escapeSequences = [
          [27, 36, 41, 65],
          [27, 36, 41, 71],
          [27, 36, 42, 72],
          [27, 36, 41, 69],
          [27, 36, 43, 73],
          [27, 36, 43, 74],
          [27, 36, 43, 75],
          [27, 36, 43, 76],
          [27, 36, 43, 77],
          [27, 78],
          [27, 79]
        ];
      }
      name() {
        return "ISO-2022-CN";
      }
      language() {
        return "zh";
      }
    };
    exports2.ISO_2022_CN = ISO_2022_CN;
  }
});

// ../../node_modules/chardet/lib/utils.js
var require_utils12 = __commonJS({
  "../../node_modules/chardet/lib/utils.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isByteArray = void 0;
    var isByteArray = (input3) => {
      if (input3 == null || typeof input3 != "object")
        return false;
      return isFinite(input3.length) && input3.length >= 0;
    };
    exports2.isByteArray = isByteArray;
  }
});

// ../../node_modules/chardet/lib/index.js
var require_lib24 = __commonJS({
  "../../node_modules/chardet/lib/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || /* @__PURE__ */ (function() {
      var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function(o2) {
          var ar = [];
          for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k;
          return ar;
        };
        return ownKeys(o);
      };
      return function(mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) {
          for (var k = ownKeys(mod), i2 = 0; i2 < k.length; i2++) if (k[i2] !== "default") __createBinding(result, mod, k[i2]);
        }
        __setModuleDefault(result, mod);
        return result;
      };
    })();
    var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.detectFileSync = exports2.detectFile = exports2.analyse = exports2.detect = void 0;
    var node_1 = __importDefault2(require_node8());
    var ascii_1 = __importDefault2(require_ascii());
    var utf8_1 = __importDefault2(require_utf8());
    var unicode = __importStar(require_unicode3());
    var mbcs = __importStar(require_mbcs());
    var sbcs = __importStar(require_sbcs());
    var iso2022 = __importStar(require_iso2022());
    var utils_1 = require_utils12();
    var recognisers = [
      new utf8_1.default(),
      new unicode.UTF_16BE(),
      new unicode.UTF_16LE(),
      new unicode.UTF_32BE(),
      new unicode.UTF_32LE(),
      new mbcs.sjis(),
      new mbcs.big5(),
      new mbcs.euc_jp(),
      new mbcs.euc_kr(),
      new mbcs.gb_18030(),
      new iso2022.ISO_2022_JP(),
      new iso2022.ISO_2022_KR(),
      new iso2022.ISO_2022_CN(),
      new sbcs.ISO_8859_1(),
      new sbcs.ISO_8859_2(),
      new sbcs.ISO_8859_5(),
      new sbcs.ISO_8859_6(),
      new sbcs.ISO_8859_7(),
      new sbcs.ISO_8859_8(),
      new sbcs.ISO_8859_9(),
      new sbcs.windows_1251(),
      new sbcs.windows_1256(),
      new sbcs.KOI8_R(),
      new ascii_1.default()
    ];
    var detect2 = (buffer2) => {
      const matches4 = (0, exports2.analyse)(buffer2);
      return matches4.length > 0 ? matches4[0].name : null;
    };
    exports2.detect = detect2;
    var analyse = (buffer2) => {
      if (!(0, utils_1.isByteArray)(buffer2)) {
        throw new Error("Input must be a byte array, e.g. Buffer or Uint8Array");
      }
      const byteStats = [];
      for (let i2 = 0; i2 < 256; i2++)
        byteStats[i2] = 0;
      for (let i2 = buffer2.length - 1; i2 >= 0; i2--)
        byteStats[buffer2[i2] & 255]++;
      let c1Bytes = false;
      for (let i2 = 128; i2 <= 159; i2 += 1) {
        if (byteStats[i2] !== 0) {
          c1Bytes = true;
          break;
        }
      }
      const context = {
        byteStats,
        c1Bytes,
        rawInput: buffer2,
        rawLen: buffer2.length,
        inputBytes: buffer2,
        inputLen: buffer2.length
      };
      const matches4 = recognisers.map((rec) => {
        return rec.match(context);
      }).filter((match3) => {
        return !!match3;
      }).sort((a2, b) => {
        return b.confidence - a2.confidence;
      });
      return matches4;
    };
    exports2.analyse = analyse;
    var detectFile = (filepath, opts = {}) => new Promise((resolve9, reject) => {
      let fd;
      const fs50 = (0, node_1.default)();
      const handler = (err, buffer2) => {
        if (fd) {
          fs50.closeSync(fd);
        }
        if (err) {
          reject(err);
        } else {
          resolve9((0, exports2.detect)(buffer2));
        }
      };
      if (opts && opts.sampleSize) {
        fd = fs50.openSync(filepath, "r");
        const sample = Buffer.allocUnsafe(opts.sampleSize);
        fs50.read(fd, sample, 0, opts.sampleSize, opts.offset, (err) => {
          handler(err, sample);
        });
        return;
      }
      fs50.readFile(filepath, handler);
    });
    exports2.detectFile = detectFile;
    var detectFileSync = (filepath, opts = {}) => {
      const fs50 = (0, node_1.default)();
      if (opts && opts.sampleSize) {
        const fd = fs50.openSync(filepath, "r");
        const sample = Buffer.allocUnsafe(opts.sampleSize);
        fs50.readSync(fd, sample, 0, opts.sampleSize, opts.offset);
        fs50.closeSync(fd);
        return (0, exports2.detect)(sample);
      }
      return (0, exports2.detect)(fs50.readFileSync(filepath));
    };
    exports2.detectFileSync = detectFileSync;
    exports2.default = {
      analyse: exports2.analyse,
      detect: exports2.detect,
      detectFileSync: exports2.detectFileSync,
      detectFile: exports2.detectFile
    };
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/lib/bom-handling.js
var require_bom_handling2 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/lib/bom-handling.js"(exports2) {
    "use strict";
    var BOMChar = "\uFEFF";
    exports2.PrependBOM = PrependBOMWrapper;
    function PrependBOMWrapper(encoder, options) {
      this.encoder = encoder;
      this.addBOM = true;
    }
    PrependBOMWrapper.prototype.write = function(str2) {
      if (this.addBOM) {
        str2 = BOMChar + str2;
        this.addBOM = false;
      }
      return this.encoder.write(str2);
    };
    PrependBOMWrapper.prototype.end = function() {
      return this.encoder.end();
    };
    exports2.StripBOM = StripBOMWrapper;
    function StripBOMWrapper(decoder, options) {
      this.decoder = decoder;
      this.pass = false;
      this.options = options || {};
    }
    StripBOMWrapper.prototype.write = function(buf) {
      var res = this.decoder.write(buf);
      if (this.pass || !res) {
        return res;
      }
      if (res[0] === BOMChar) {
        res = res.slice(1);
        if (typeof this.options.stripBOM === "function") {
          this.options.stripBOM();
        }
      }
      this.pass = true;
      return res;
    };
    StripBOMWrapper.prototype.end = function() {
      return this.decoder.end();
    };
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/lib/helpers/merge-exports.js
var require_merge_exports = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/lib/helpers/merge-exports.js"(exports2, module2) {
    "use strict";
    var hasOwn = typeof Object.hasOwn === "undefined" ? Function.call.bind(Object.prototype.hasOwnProperty) : Object.hasOwn;
    function mergeModules(target, module3) {
      for (var key2 in module3) {
        if (hasOwn(module3, key2)) {
          target[key2] = module3[key2];
        }
      }
    }
    module2.exports = mergeModules;
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/internal.js
var require_internal2 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/internal.js"(exports2, module2) {
    "use strict";
    var Buffer7 = require_safer().Buffer;
    module2.exports = {
      // Encodings
      utf8: { type: "_internal", bomAware: true },
      cesu8: { type: "_internal", bomAware: true },
      unicode11utf8: "utf8",
      ucs2: { type: "_internal", bomAware: true },
      utf16le: "ucs2",
      binary: { type: "_internal" },
      base64: { type: "_internal" },
      hex: { type: "_internal" },
      // Codec.
      _internal: InternalCodec
    };
    function InternalCodec(codecOptions, iconv2) {
      this.enc = codecOptions.encodingName;
      this.bomAware = codecOptions.bomAware;
      if (this.enc === "base64") {
        this.encoder = InternalEncoderBase64;
      } else if (this.enc === "utf8") {
        this.encoder = InternalEncoderUtf8;
      } else if (this.enc === "cesu8") {
        this.enc = "utf8";
        this.encoder = InternalEncoderCesu8;
        if (Buffer7.from("eda0bdedb2a9", "hex").toString() !== "\u{1F4A9}") {
          this.decoder = InternalDecoderCesu8;
          this.defaultCharUnicode = iconv2.defaultCharUnicode;
        }
      }
    }
    InternalCodec.prototype.encoder = InternalEncoder;
    InternalCodec.prototype.decoder = InternalDecoder;
    var StringDecoder2 = require("string_decoder").StringDecoder;
    function InternalDecoder(options, codec) {
      this.decoder = new StringDecoder2(codec.enc);
    }
    InternalDecoder.prototype.write = function(buf) {
      if (!Buffer7.isBuffer(buf)) {
        buf = Buffer7.from(buf);
      }
      return this.decoder.write(buf);
    };
    InternalDecoder.prototype.end = function() {
      return this.decoder.end();
    };
    function InternalEncoder(options, codec) {
      this.enc = codec.enc;
    }
    InternalEncoder.prototype.write = function(str2) {
      return Buffer7.from(str2, this.enc);
    };
    InternalEncoder.prototype.end = function() {
    };
    function InternalEncoderBase64(options, codec) {
      this.prevStr = "";
    }
    InternalEncoderBase64.prototype.write = function(str2) {
      str2 = this.prevStr + str2;
      var completeQuads = str2.length - str2.length % 4;
      this.prevStr = str2.slice(completeQuads);
      str2 = str2.slice(0, completeQuads);
      return Buffer7.from(str2, "base64");
    };
    InternalEncoderBase64.prototype.end = function() {
      return Buffer7.from(this.prevStr, "base64");
    };
    function InternalEncoderCesu8(options, codec) {
    }
    InternalEncoderCesu8.prototype.write = function(str2) {
      var buf = Buffer7.alloc(str2.length * 3);
      var bufIdx = 0;
      for (var i2 = 0; i2 < str2.length; i2++) {
        var charCode = str2.charCodeAt(i2);
        if (charCode < 128) {
          buf[bufIdx++] = charCode;
        } else if (charCode < 2048) {
          buf[bufIdx++] = 192 + (charCode >>> 6);
          buf[bufIdx++] = 128 + (charCode & 63);
        } else {
          buf[bufIdx++] = 224 + (charCode >>> 12);
          buf[bufIdx++] = 128 + (charCode >>> 6 & 63);
          buf[bufIdx++] = 128 + (charCode & 63);
        }
      }
      return buf.slice(0, bufIdx);
    };
    InternalEncoderCesu8.prototype.end = function() {
    };
    function InternalDecoderCesu8(options, codec) {
      this.acc = 0;
      this.contBytes = 0;
      this.accBytes = 0;
      this.defaultCharUnicode = codec.defaultCharUnicode;
    }
    InternalDecoderCesu8.prototype.write = function(buf) {
      var acc = this.acc;
      var contBytes = this.contBytes;
      var accBytes = this.accBytes;
      var res = "";
      for (var i2 = 0; i2 < buf.length; i2++) {
        var curByte = buf[i2];
        if ((curByte & 192) !== 128) {
          if (contBytes > 0) {
            res += this.defaultCharUnicode;
            contBytes = 0;
          }
          if (curByte < 128) {
            res += String.fromCharCode(curByte);
          } else if (curByte < 224) {
            acc = curByte & 31;
            contBytes = 1;
            accBytes = 1;
          } else if (curByte < 240) {
            acc = curByte & 15;
            contBytes = 2;
            accBytes = 1;
          } else {
            res += this.defaultCharUnicode;
          }
        } else {
          if (contBytes > 0) {
            acc = acc << 6 | curByte & 63;
            contBytes--;
            accBytes++;
            if (contBytes === 0) {
              if (accBytes === 2 && acc < 128 && acc > 0) {
                res += this.defaultCharUnicode;
              } else if (accBytes === 3 && acc < 2048) {
                res += this.defaultCharUnicode;
              } else {
                res += String.fromCharCode(acc);
              }
            }
          } else {
            res += this.defaultCharUnicode;
          }
        }
      }
      this.acc = acc;
      this.contBytes = contBytes;
      this.accBytes = accBytes;
      return res;
    };
    InternalDecoderCesu8.prototype.end = function() {
      var res = 0;
      if (this.contBytes > 0) {
        res += this.defaultCharUnicode;
      }
      return res;
    };
    function InternalEncoderUtf8(options, codec) {
      this.highSurrogate = "";
    }
    InternalEncoderUtf8.prototype.write = function(str2) {
      if (this.highSurrogate) {
        str2 = this.highSurrogate + str2;
        this.highSurrogate = "";
      }
      if (str2.length > 0) {
        var charCode = str2.charCodeAt(str2.length - 1);
        if (charCode >= 55296 && charCode < 56320) {
          this.highSurrogate = str2[str2.length - 1];
          str2 = str2.slice(0, str2.length - 1);
        }
      }
      return Buffer7.from(str2, this.enc);
    };
    InternalEncoderUtf8.prototype.end = function() {
      if (this.highSurrogate) {
        var str2 = this.highSurrogate;
        this.highSurrogate = "";
        return Buffer7.from(str2, this.enc);
      }
    };
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/utf32.js
var require_utf32 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/utf32.js"(exports2) {
    "use strict";
    var Buffer7 = require_safer().Buffer;
    exports2._utf32 = Utf32Codec;
    function Utf32Codec(codecOptions, iconv2) {
      this.iconv = iconv2;
      this.bomAware = true;
      this.isLE = codecOptions.isLE;
    }
    exports2.utf32le = { type: "_utf32", isLE: true };
    exports2.utf32be = { type: "_utf32", isLE: false };
    exports2.ucs4le = "utf32le";
    exports2.ucs4be = "utf32be";
    Utf32Codec.prototype.encoder = Utf32Encoder;
    Utf32Codec.prototype.decoder = Utf32Decoder;
    function Utf32Encoder(options, codec) {
      this.isLE = codec.isLE;
      this.highSurrogate = 0;
    }
    Utf32Encoder.prototype.write = function(str2) {
      var src = Buffer7.from(str2, "ucs2");
      var dst = Buffer7.alloc(src.length * 2);
      var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE;
      var offset = 0;
      for (var i2 = 0; i2 < src.length; i2 += 2) {
        var code7 = src.readUInt16LE(i2);
        var isHighSurrogate = code7 >= 55296 && code7 < 56320;
        var isLowSurrogate = code7 >= 56320 && code7 < 57344;
        if (this.highSurrogate) {
          if (isHighSurrogate || !isLowSurrogate) {
            write32.call(dst, this.highSurrogate, offset);
            offset += 4;
          } else {
            var codepoint = (this.highSurrogate - 55296 << 10 | code7 - 56320) + 65536;
            write32.call(dst, codepoint, offset);
            offset += 4;
            this.highSurrogate = 0;
            continue;
          }
        }
        if (isHighSurrogate) {
          this.highSurrogate = code7;
        } else {
          write32.call(dst, code7, offset);
          offset += 4;
          this.highSurrogate = 0;
        }
      }
      if (offset < dst.length) {
        dst = dst.slice(0, offset);
      }
      return dst;
    };
    Utf32Encoder.prototype.end = function() {
      if (!this.highSurrogate) {
        return;
      }
      var buf = Buffer7.alloc(4);
      if (this.isLE) {
        buf.writeUInt32LE(this.highSurrogate, 0);
      } else {
        buf.writeUInt32BE(this.highSurrogate, 0);
      }
      this.highSurrogate = 0;
      return buf;
    };
    function Utf32Decoder(options, codec) {
      this.isLE = codec.isLE;
      this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0);
      this.overflow = [];
    }
    Utf32Decoder.prototype.write = function(src) {
      if (src.length === 0) {
        return "";
      }
      var i2 = 0;
      var codepoint = 0;
      var dst = Buffer7.alloc(src.length + 4);
      var offset = 0;
      var isLE = this.isLE;
      var overflow = this.overflow;
      var badChar = this.badChar;
      if (overflow.length > 0) {
        for (; i2 < src.length && overflow.length < 4; i2++) {
          overflow.push(src[i2]);
        }
        if (overflow.length === 4) {
          if (isLE) {
            codepoint = overflow[i2] | overflow[i2 + 1] << 8 | overflow[i2 + 2] << 16 | overflow[i2 + 3] << 24;
          } else {
            codepoint = overflow[i2 + 3] | overflow[i2 + 2] << 8 | overflow[i2 + 1] << 16 | overflow[i2] << 24;
          }
          overflow.length = 0;
          offset = _writeCodepoint(dst, offset, codepoint, badChar);
        }
      }
      for (; i2 < src.length - 3; i2 += 4) {
        if (isLE) {
          codepoint = src[i2] | src[i2 + 1] << 8 | src[i2 + 2] << 16 | src[i2 + 3] << 24;
        } else {
          codepoint = src[i2 + 3] | src[i2 + 2] << 8 | src[i2 + 1] << 16 | src[i2] << 24;
        }
        offset = _writeCodepoint(dst, offset, codepoint, badChar);
      }
      for (; i2 < src.length; i2++) {
        overflow.push(src[i2]);
      }
      return dst.slice(0, offset).toString("ucs2");
    };
    function _writeCodepoint(dst, offset, codepoint, badChar) {
      if (codepoint < 0 || codepoint > 1114111) {
        codepoint = badChar;
      }
      if (codepoint >= 65536) {
        codepoint -= 65536;
        var high = 55296 | codepoint >> 10;
        dst[offset++] = high & 255;
        dst[offset++] = high >> 8;
        var codepoint = 56320 | codepoint & 1023;
      }
      dst[offset++] = codepoint & 255;
      dst[offset++] = codepoint >> 8;
      return offset;
    }
    Utf32Decoder.prototype.end = function() {
      this.overflow.length = 0;
    };
    exports2.utf32 = Utf32AutoCodec;
    exports2.ucs4 = "utf32";
    function Utf32AutoCodec(options, iconv2) {
      this.iconv = iconv2;
    }
    Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder;
    Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder;
    function Utf32AutoEncoder(options, codec) {
      options = options || {};
      if (options.addBOM === void 0) {
        options.addBOM = true;
      }
      this.encoder = codec.iconv.getEncoder(options.defaultEncoding || "utf-32le", options);
    }
    Utf32AutoEncoder.prototype.write = function(str2) {
      return this.encoder.write(str2);
    };
    Utf32AutoEncoder.prototype.end = function() {
      return this.encoder.end();
    };
    function Utf32AutoDecoder(options, codec) {
      this.decoder = null;
      this.initialBufs = [];
      this.initialBufsLen = 0;
      this.options = options || {};
      this.iconv = codec.iconv;
    }
    Utf32AutoDecoder.prototype.write = function(buf) {
      if (!this.decoder) {
        this.initialBufs.push(buf);
        this.initialBufsLen += buf.length;
        if (this.initialBufsLen < 32) {
          return "";
        }
        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
        this.decoder = this.iconv.getDecoder(encoding, this.options);
        var resStr = "";
        for (var i2 = 0; i2 < this.initialBufs.length; i2++) {
          resStr += this.decoder.write(this.initialBufs[i2]);
        }
        this.initialBufs.length = this.initialBufsLen = 0;
        return resStr;
      }
      return this.decoder.write(buf);
    };
    Utf32AutoDecoder.prototype.end = function() {
      if (!this.decoder) {
        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
        this.decoder = this.iconv.getDecoder(encoding, this.options);
        var resStr = "";
        for (var i2 = 0; i2 < this.initialBufs.length; i2++) {
          resStr += this.decoder.write(this.initialBufs[i2]);
        }
        var trail = this.decoder.end();
        if (trail) {
          resStr += trail;
        }
        this.initialBufs.length = this.initialBufsLen = 0;
        return resStr;
      }
      return this.decoder.end();
    };
    function detectEncoding(bufs, defaultEncoding) {
      var b = [];
      var charsProcessed = 0;
      var invalidLE = 0;
      var invalidBE = 0;
      var bmpCharsLE = 0;
      var bmpCharsBE = 0;
      outerLoop:
        for (var i2 = 0; i2 < bufs.length; i2++) {
          var buf = bufs[i2];
          for (var j = 0; j < buf.length; j++) {
            b.push(buf[j]);
            if (b.length === 4) {
              if (charsProcessed === 0) {
                if (b[0] === 255 && b[1] === 254 && b[2] === 0 && b[3] === 0) {
                  return "utf-32le";
                }
                if (b[0] === 0 && b[1] === 0 && b[2] === 254 && b[3] === 255) {
                  return "utf-32be";
                }
              }
              if (b[0] !== 0 || b[1] > 16) invalidBE++;
              if (b[3] !== 0 || b[2] > 16) invalidLE++;
              if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++;
              if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++;
              b.length = 0;
              charsProcessed++;
              if (charsProcessed >= 100) {
                break outerLoop;
              }
            }
          }
        }
      if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return "utf-32be";
      if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return "utf-32le";
      return defaultEncoding || "utf-32le";
    }
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/utf16.js
var require_utf162 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/utf16.js"(exports2) {
    "use strict";
    var Buffer7 = require_safer().Buffer;
    exports2.utf16be = Utf16BECodec;
    function Utf16BECodec() {
    }
    Utf16BECodec.prototype.encoder = Utf16BEEncoder;
    Utf16BECodec.prototype.decoder = Utf16BEDecoder;
    Utf16BECodec.prototype.bomAware = true;
    function Utf16BEEncoder() {
    }
    Utf16BEEncoder.prototype.write = function(str2) {
      var buf = Buffer7.from(str2, "ucs2");
      for (var i2 = 0; i2 < buf.length; i2 += 2) {
        var tmp = buf[i2];
        buf[i2] = buf[i2 + 1];
        buf[i2 + 1] = tmp;
      }
      return buf;
    };
    Utf16BEEncoder.prototype.end = function() {
    };
    function Utf16BEDecoder() {
      this.overflowByte = -1;
    }
    Utf16BEDecoder.prototype.write = function(buf) {
      if (buf.length == 0) {
        return "";
      }
      var buf2 = Buffer7.alloc(buf.length + 1);
      var i2 = 0;
      var j = 0;
      if (this.overflowByte !== -1) {
        buf2[0] = buf[0];
        buf2[1] = this.overflowByte;
        i2 = 1;
        j = 2;
      }
      for (; i2 < buf.length - 1; i2 += 2, j += 2) {
        buf2[j] = buf[i2 + 1];
        buf2[j + 1] = buf[i2];
      }
      this.overflowByte = i2 == buf.length - 1 ? buf[buf.length - 1] : -1;
      return buf2.slice(0, j).toString("ucs2");
    };
    Utf16BEDecoder.prototype.end = function() {
      this.overflowByte = -1;
    };
    exports2.utf16 = Utf16Codec;
    function Utf16Codec(codecOptions, iconv2) {
      this.iconv = iconv2;
    }
    Utf16Codec.prototype.encoder = Utf16Encoder;
    Utf16Codec.prototype.decoder = Utf16Decoder;
    function Utf16Encoder(options, codec) {
      options = options || {};
      if (options.addBOM === void 0) {
        options.addBOM = true;
      }
      this.encoder = codec.iconv.getEncoder("utf-16le", options);
    }
    Utf16Encoder.prototype.write = function(str2) {
      return this.encoder.write(str2);
    };
    Utf16Encoder.prototype.end = function() {
      return this.encoder.end();
    };
    function Utf16Decoder(options, codec) {
      this.decoder = null;
      this.initialBufs = [];
      this.initialBufsLen = 0;
      this.options = options || {};
      this.iconv = codec.iconv;
    }
    Utf16Decoder.prototype.write = function(buf) {
      if (!this.decoder) {
        this.initialBufs.push(buf);
        this.initialBufsLen += buf.length;
        if (this.initialBufsLen < 16) {
          return "";
        }
        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
        this.decoder = this.iconv.getDecoder(encoding, this.options);
        var resStr = "";
        for (var i2 = 0; i2 < this.initialBufs.length; i2++) {
          resStr += this.decoder.write(this.initialBufs[i2]);
        }
        this.initialBufs.length = this.initialBufsLen = 0;
        return resStr;
      }
      return this.decoder.write(buf);
    };
    Utf16Decoder.prototype.end = function() {
      if (!this.decoder) {
        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
        this.decoder = this.iconv.getDecoder(encoding, this.options);
        var resStr = "";
        for (var i2 = 0; i2 < this.initialBufs.length; i2++) {
          resStr += this.decoder.write(this.initialBufs[i2]);
        }
        var trail = this.decoder.end();
        if (trail) {
          resStr += trail;
        }
        this.initialBufs.length = this.initialBufsLen = 0;
        return resStr;
      }
      return this.decoder.end();
    };
    function detectEncoding(bufs, defaultEncoding) {
      var b = [];
      var charsProcessed = 0;
      var asciiCharsLE = 0;
      var asciiCharsBE = 0;
      outerLoop:
        for (var i2 = 0; i2 < bufs.length; i2++) {
          var buf = bufs[i2];
          for (var j = 0; j < buf.length; j++) {
            b.push(buf[j]);
            if (b.length === 2) {
              if (charsProcessed === 0) {
                if (b[0] === 255 && b[1] === 254) return "utf-16le";
                if (b[0] === 254 && b[1] === 255) return "utf-16be";
              }
              if (b[0] === 0 && b[1] !== 0) asciiCharsBE++;
              if (b[0] !== 0 && b[1] === 0) asciiCharsLE++;
              b.length = 0;
              charsProcessed++;
              if (charsProcessed >= 100) {
                break outerLoop;
              }
            }
          }
        }
      if (asciiCharsBE > asciiCharsLE) return "utf-16be";
      if (asciiCharsBE < asciiCharsLE) return "utf-16le";
      return defaultEncoding || "utf-16le";
    }
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/utf7.js
var require_utf72 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/utf7.js"(exports2) {
    "use strict";
    var Buffer7 = require_safer().Buffer;
    exports2.utf7 = Utf7Codec;
    exports2.unicode11utf7 = "utf7";
    function Utf7Codec(codecOptions, iconv2) {
      this.iconv = iconv2;
    }
    Utf7Codec.prototype.encoder = Utf7Encoder;
    Utf7Codec.prototype.decoder = Utf7Decoder;
    Utf7Codec.prototype.bomAware = true;
    var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;
    function Utf7Encoder(options, codec) {
      this.iconv = codec.iconv;
    }
    Utf7Encoder.prototype.write = function(str2) {
      return Buffer7.from(str2.replace(nonDirectChars, function(chunk) {
        return "+" + (chunk === "+" ? "" : this.iconv.encode(chunk, "utf16-be").toString("base64").replace(/=+$/, "")) + "-";
      }.bind(this)));
    };
    Utf7Encoder.prototype.end = function() {
    };
    function Utf7Decoder(options, codec) {
      this.iconv = codec.iconv;
      this.inBase64 = false;
      this.base64Accum = "";
    }
    var base64Regex2 = /[A-Za-z0-9\/+]/;
    var base64Chars = [];
    for (i2 = 0; i2 < 256; i2++) {
      base64Chars[i2] = base64Regex2.test(String.fromCharCode(i2));
    }
    var i2;
    var plusChar = "+".charCodeAt(0);
    var minusChar = "-".charCodeAt(0);
    var andChar = "&".charCodeAt(0);
    Utf7Decoder.prototype.write = function(buf) {
      var res = "";
      var lastI = 0;
      var inBase64 = this.inBase64;
      var base64Accum = this.base64Accum;
      for (var i3 = 0; i3 < buf.length; i3++) {
        if (!inBase64) {
          if (buf[i3] == plusChar) {
            res += this.iconv.decode(buf.slice(lastI, i3), "ascii");
            lastI = i3 + 1;
            inBase64 = true;
          }
        } else {
          if (!base64Chars[buf[i3]]) {
            if (i3 == lastI && buf[i3] == minusChar) {
              res += "+";
            } else {
              var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i3), "ascii");
              res += this.iconv.decode(Buffer7.from(b64str, "base64"), "utf16-be");
            }
            if (buf[i3] != minusChar) {
              i3--;
            }
            lastI = i3 + 1;
            inBase64 = false;
            base64Accum = "";
          }
        }
      }
      if (!inBase64) {
        res += this.iconv.decode(buf.slice(lastI), "ascii");
      } else {
        var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii");
        var canBeDecoded = b64str.length - b64str.length % 8;
        base64Accum = b64str.slice(canBeDecoded);
        b64str = b64str.slice(0, canBeDecoded);
        res += this.iconv.decode(Buffer7.from(b64str, "base64"), "utf16-be");
      }
      this.inBase64 = inBase64;
      this.base64Accum = base64Accum;
      return res;
    };
    Utf7Decoder.prototype.end = function() {
      var res = "";
      if (this.inBase64 && this.base64Accum.length > 0) {
        res = this.iconv.decode(Buffer7.from(this.base64Accum, "base64"), "utf16-be");
      }
      this.inBase64 = false;
      this.base64Accum = "";
      return res;
    };
    exports2.utf7imap = Utf7IMAPCodec;
    function Utf7IMAPCodec(codecOptions, iconv2) {
      this.iconv = iconv2;
    }
    Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;
    Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;
    Utf7IMAPCodec.prototype.bomAware = true;
    function Utf7IMAPEncoder(options, codec) {
      this.iconv = codec.iconv;
      this.inBase64 = false;
      this.base64Accum = Buffer7.alloc(6);
      this.base64AccumIdx = 0;
    }
    Utf7IMAPEncoder.prototype.write = function(str2) {
      var inBase64 = this.inBase64;
      var base64Accum = this.base64Accum;
      var base64AccumIdx = this.base64AccumIdx;
      var buf = Buffer7.alloc(str2.length * 5 + 10);
      var bufIdx = 0;
      for (var i3 = 0; i3 < str2.length; i3++) {
        var uChar = str2.charCodeAt(i3);
        if (uChar >= 32 && uChar <= 126) {
          if (inBase64) {
            if (base64AccumIdx > 0) {
              bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx);
              base64AccumIdx = 0;
            }
            buf[bufIdx++] = minusChar;
            inBase64 = false;
          }
          if (!inBase64) {
            buf[bufIdx++] = uChar;
            if (uChar === andChar) {
              buf[bufIdx++] = minusChar;
            }
          }
        } else {
          if (!inBase64) {
            buf[bufIdx++] = andChar;
            inBase64 = true;
          }
          if (inBase64) {
            base64Accum[base64AccumIdx++] = uChar >> 8;
            base64Accum[base64AccumIdx++] = uChar & 255;
            if (base64AccumIdx == base64Accum.length) {
              bufIdx += buf.write(base64Accum.toString("base64").replace(/\//g, ","), bufIdx);
              base64AccumIdx = 0;
            }
          }
        }
      }
      this.inBase64 = inBase64;
      this.base64AccumIdx = base64AccumIdx;
      return buf.slice(0, bufIdx);
    };
    Utf7IMAPEncoder.prototype.end = function() {
      var buf = Buffer7.alloc(10);
      var bufIdx = 0;
      if (this.inBase64) {
        if (this.base64AccumIdx > 0) {
          bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx);
          this.base64AccumIdx = 0;
        }
        buf[bufIdx++] = minusChar;
        this.inBase64 = false;
      }
      return buf.slice(0, bufIdx);
    };
    function Utf7IMAPDecoder(options, codec) {
      this.iconv = codec.iconv;
      this.inBase64 = false;
      this.base64Accum = "";
    }
    var base64IMAPChars = base64Chars.slice();
    base64IMAPChars[",".charCodeAt(0)] = true;
    Utf7IMAPDecoder.prototype.write = function(buf) {
      var res = "";
      var lastI = 0;
      var inBase64 = this.inBase64;
      var base64Accum = this.base64Accum;
      for (var i3 = 0; i3 < buf.length; i3++) {
        if (!inBase64) {
          if (buf[i3] == andChar) {
            res += this.iconv.decode(buf.slice(lastI, i3), "ascii");
            lastI = i3 + 1;
            inBase64 = true;
          }
        } else {
          if (!base64IMAPChars[buf[i3]]) {
            if (i3 == lastI && buf[i3] == minusChar) {
              res += "&";
            } else {
              var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i3), "ascii").replace(/,/g, "/");
              res += this.iconv.decode(Buffer7.from(b64str, "base64"), "utf16-be");
            }
            if (buf[i3] != minusChar) {
              i3--;
            }
            lastI = i3 + 1;
            inBase64 = false;
            base64Accum = "";
          }
        }
      }
      if (!inBase64) {
        res += this.iconv.decode(buf.slice(lastI), "ascii");
      } else {
        var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, "/");
        var canBeDecoded = b64str.length - b64str.length % 8;
        base64Accum = b64str.slice(canBeDecoded);
        b64str = b64str.slice(0, canBeDecoded);
        res += this.iconv.decode(Buffer7.from(b64str, "base64"), "utf16-be");
      }
      this.inBase64 = inBase64;
      this.base64Accum = base64Accum;
      return res;
    };
    Utf7IMAPDecoder.prototype.end = function() {
      var res = "";
      if (this.inBase64 && this.base64Accum.length > 0) {
        res = this.iconv.decode(Buffer7.from(this.base64Accum, "base64"), "utf16-be");
      }
      this.inBase64 = false;
      this.base64Accum = "";
      return res;
    };
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/sbcs-codec.js
var require_sbcs_codec2 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/sbcs-codec.js"(exports2) {
    "use strict";
    var Buffer7 = require_safer().Buffer;
    exports2._sbcs = SBCSCodec;
    function SBCSCodec(codecOptions, iconv2) {
      if (!codecOptions) {
        throw new Error("SBCS codec is called without the data.");
      }
      if (!codecOptions.chars || codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256) {
        throw new Error("Encoding '" + codecOptions.type + "' has incorrect 'chars' (must be of len 128 or 256)");
      }
      if (codecOptions.chars.length === 128) {
        var asciiString = "";
        for (var i2 = 0; i2 < 128; i2++) {
          asciiString += String.fromCharCode(i2);
        }
        codecOptions.chars = asciiString + codecOptions.chars;
      }
      this.decodeBuf = Buffer7.from(codecOptions.chars, "ucs2");
      var encodeBuf = Buffer7.alloc(65536, iconv2.defaultCharSingleByte.charCodeAt(0));
      for (var i2 = 0; i2 < codecOptions.chars.length; i2++) {
        encodeBuf[codecOptions.chars.charCodeAt(i2)] = i2;
      }
      this.encodeBuf = encodeBuf;
    }
    SBCSCodec.prototype.encoder = SBCSEncoder;
    SBCSCodec.prototype.decoder = SBCSDecoder;
    function SBCSEncoder(options, codec) {
      this.encodeBuf = codec.encodeBuf;
    }
    SBCSEncoder.prototype.write = function(str2) {
      var buf = Buffer7.alloc(str2.length);
      for (var i2 = 0; i2 < str2.length; i2++) {
        buf[i2] = this.encodeBuf[str2.charCodeAt(i2)];
      }
      return buf;
    };
    SBCSEncoder.prototype.end = function() {
    };
    function SBCSDecoder(options, codec) {
      this.decodeBuf = codec.decodeBuf;
    }
    SBCSDecoder.prototype.write = function(buf) {
      var decodeBuf = this.decodeBuf;
      var newBuf = Buffer7.alloc(buf.length * 2);
      var idx1 = 0;
      var idx2 = 0;
      for (var i2 = 0; i2 < buf.length; i2++) {
        idx1 = buf[i2] * 2;
        idx2 = i2 * 2;
        newBuf[idx2] = decodeBuf[idx1];
        newBuf[idx2 + 1] = decodeBuf[idx1 + 1];
      }
      return newBuf.toString("ucs2");
    };
    SBCSDecoder.prototype.end = function() {
    };
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/sbcs-data.js
var require_sbcs_data2 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/sbcs-data.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      // Not supported by iconv, not sure why.
      10029: "maccenteuro",
      maccenteuro: {
        type: "_sbcs",
        chars: "\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7"
      },
      808: "cp808",
      ibm808: "cp808",
      cp808: {
        type: "_sbcs",
        chars: "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0"
      },
      mik: {
        type: "_sbcs",
        chars: "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      cp720: {
        type: "_sbcs",
        chars: "\x80\x81\xE9\xE2\x84\xE0\x86\xE7\xEA\xEB\xE8\xEF\xEE\x8D\x8E\x8F\x90\u0651\u0652\xF4\xA4\u0640\xFB\xF9\u0621\u0622\u0623\u0624\xA3\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0636\u0637\u0638\u0639\u063A\u0641\xB5\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u2261\u064B\u064C\u064D\u064E\u064F\u0650\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      // Aliases of generated encodings.
      ascii8bit: "ascii",
      usascii: "ascii",
      ansix34: "ascii",
      ansix341968: "ascii",
      ansix341986: "ascii",
      csascii: "ascii",
      cp367: "ascii",
      ibm367: "ascii",
      isoir6: "ascii",
      iso646us: "ascii",
      iso646irv: "ascii",
      us: "ascii",
      latin1: "iso88591",
      latin2: "iso88592",
      latin3: "iso88593",
      latin4: "iso88594",
      latin5: "iso88599",
      latin6: "iso885910",
      latin7: "iso885913",
      latin8: "iso885914",
      latin9: "iso885915",
      latin10: "iso885916",
      csisolatin1: "iso88591",
      csisolatin2: "iso88592",
      csisolatin3: "iso88593",
      csisolatin4: "iso88594",
      csisolatincyrillic: "iso88595",
      csisolatinarabic: "iso88596",
      csisolatingreek: "iso88597",
      csisolatinhebrew: "iso88598",
      csisolatin5: "iso88599",
      csisolatin6: "iso885910",
      l1: "iso88591",
      l2: "iso88592",
      l3: "iso88593",
      l4: "iso88594",
      l5: "iso88599",
      l6: "iso885910",
      l7: "iso885913",
      l8: "iso885914",
      l9: "iso885915",
      l10: "iso885916",
      isoir14: "iso646jp",
      isoir57: "iso646cn",
      isoir100: "iso88591",
      isoir101: "iso88592",
      isoir109: "iso88593",
      isoir110: "iso88594",
      isoir144: "iso88595",
      isoir127: "iso88596",
      isoir126: "iso88597",
      isoir138: "iso88598",
      isoir148: "iso88599",
      isoir157: "iso885910",
      isoir166: "tis620",
      isoir179: "iso885913",
      isoir199: "iso885914",
      isoir203: "iso885915",
      isoir226: "iso885916",
      cp819: "iso88591",
      ibm819: "iso88591",
      cyrillic: "iso88595",
      arabic: "iso88596",
      arabic8: "iso88596",
      ecma114: "iso88596",
      asmo708: "iso88596",
      greek: "iso88597",
      greek8: "iso88597",
      ecma118: "iso88597",
      elot928: "iso88597",
      hebrew: "iso88598",
      hebrew8: "iso88598",
      turkish: "iso88599",
      turkish8: "iso88599",
      thai: "iso885911",
      thai8: "iso885911",
      celtic: "iso885914",
      celtic8: "iso885914",
      isoceltic: "iso885914",
      tis6200: "tis620",
      tis62025291: "tis620",
      tis62025330: "tis620",
      1e4: "macroman",
      10006: "macgreek",
      10007: "maccyrillic",
      10079: "maciceland",
      10081: "macturkish",
      cspc8codepage437: "cp437",
      cspc775baltic: "cp775",
      cspc850multilingual: "cp850",
      cspcp852: "cp852",
      cspc862latinhebrew: "cp862",
      cpgr: "cp869",
      msee: "cp1250",
      mscyrl: "cp1251",
      msansi: "cp1252",
      msgreek: "cp1253",
      msturk: "cp1254",
      mshebr: "cp1255",
      msarab: "cp1256",
      winbaltrim: "cp1257",
      cp20866: "koi8r",
      20866: "koi8r",
      ibm878: "koi8r",
      cskoi8r: "koi8r",
      cp21866: "koi8u",
      21866: "koi8u",
      ibm1168: "koi8u",
      strk10482002: "rk1048",
      tcvn5712: "tcvn",
      tcvn57121: "tcvn",
      gb198880: "iso646cn",
      cn: "iso646cn",
      csiso14jisc6220ro: "iso646jp",
      jisc62201969ro: "iso646jp",
      jp: "iso646jp",
      cshproman8: "hproman8",
      r8: "hproman8",
      roman8: "hproman8",
      xroman8: "hproman8",
      ibm1051: "hproman8",
      mac: "macintosh",
      csmacintosh: "macintosh"
    };
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/sbcs-data-generated.js
var require_sbcs_data_generated2 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/sbcs-data-generated.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      "437": "cp437",
      "737": "cp737",
      "775": "cp775",
      "850": "cp850",
      "852": "cp852",
      "855": "cp855",
      "856": "cp856",
      "857": "cp857",
      "858": "cp858",
      "860": "cp860",
      "861": "cp861",
      "862": "cp862",
      "863": "cp863",
      "864": "cp864",
      "865": "cp865",
      "866": "cp866",
      "869": "cp869",
      "874": "windows874",
      "922": "cp922",
      "1046": "cp1046",
      "1124": "cp1124",
      "1125": "cp1125",
      "1129": "cp1129",
      "1133": "cp1133",
      "1161": "cp1161",
      "1162": "cp1162",
      "1163": "cp1163",
      "1250": "windows1250",
      "1251": "windows1251",
      "1252": "windows1252",
      "1253": "windows1253",
      "1254": "windows1254",
      "1255": "windows1255",
      "1256": "windows1256",
      "1257": "windows1257",
      "1258": "windows1258",
      "28591": "iso88591",
      "28592": "iso88592",
      "28593": "iso88593",
      "28594": "iso88594",
      "28595": "iso88595",
      "28596": "iso88596",
      "28597": "iso88597",
      "28598": "iso88598",
      "28599": "iso88599",
      "28600": "iso885910",
      "28601": "iso885911",
      "28603": "iso885913",
      "28604": "iso885914",
      "28605": "iso885915",
      "28606": "iso885916",
      "windows874": {
        "type": "_sbcs",
        "chars": "\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"
      },
      "win874": "windows874",
      "cp874": "windows874",
      "windows1250": {
        "type": "_sbcs",
        "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"
      },
      "win1250": "windows1250",
      "cp1250": "windows1250",
      "windows1251": {
        "type": "_sbcs",
        "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"
      },
      "win1251": "windows1251",
      "cp1251": "windows1251",
      "windows1252": {
        "type": "_sbcs",
        "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"
      },
      "win1252": "windows1252",
      "cp1252": "windows1252",
      "windows1253": {
        "type": "_sbcs",
        "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"
      },
      "win1253": "windows1253",
      "cp1253": "windows1253",
      "windows1254": {
        "type": "_sbcs",
        "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"
      },
      "win1254": "windows1254",
      "cp1254": "windows1254",
      "windows1255": {
        "type": "_sbcs",
        "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"
      },
      "win1255": "windows1255",
      "cp1255": "windows1255",
      "windows1256": {
        "type": "_sbcs",
        "chars": "\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2"
      },
      "win1256": "windows1256",
      "cp1256": "windows1256",
      "windows1257": {
        "type": "_sbcs",
        "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9"
      },
      "win1257": "windows1257",
      "cp1257": "windows1257",
      "windows1258": {
        "type": "_sbcs",
        "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"
      },
      "win1258": "windows1258",
      "cp1258": "windows1258",
      "iso88591": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"
      },
      "cp28591": "iso88591",
      "iso88592": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"
      },
      "cp28592": "iso88592",
      "iso88593": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9"
      },
      "cp28593": "iso88593",
      "iso88594": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9"
      },
      "cp28594": "iso88594",
      "iso88595": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"
      },
      "cp28595": "iso88595",
      "iso88596": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"
      },
      "cp28596": "iso88596",
      "iso88597": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"
      },
      "cp28597": "iso88597",
      "iso88598": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"
      },
      "cp28598": "iso88598",
      "iso88599": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"
      },
      "cp28599": "iso88599",
      "iso885910": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138"
      },
      "cp28600": "iso885910",
      "iso885911": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"
      },
      "cp28601": "iso885911",
      "iso885913": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019"
      },
      "cp28603": "iso885913",
      "iso885914": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF"
      },
      "cp28604": "iso885914",
      "iso885915": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"
      },
      "cp28605": "iso885915",
      "iso885916": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF"
      },
      "cp28606": "iso885916",
      "cp437": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      "ibm437": "cp437",
      "csibm437": "cp437",
      "cp737": {
        "type": "_sbcs",
        "chars": "\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      "ibm737": "cp737",
      "csibm737": "cp737",
      "cp775": {
        "type": "_sbcs",
        "chars": "\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0"
      },
      "ibm775": "cp775",
      "csibm775": "cp775",
      "cp850": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"
      },
      "ibm850": "cp850",
      "csibm850": "cp850",
      "cp852": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0"
      },
      "ibm852": "cp852",
      "csibm852": "cp852",
      "cp855": {
        "type": "_sbcs",
        "chars": "\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0"
      },
      "ibm855": "cp855",
      "csibm855": "cp855",
      "cp856": {
        "type": "_sbcs",
        "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"
      },
      "ibm856": "cp856",
      "csibm856": "cp856",
      "cp857": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"
      },
      "ibm857": "cp857",
      "csibm857": "cp857",
      "cp858": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"
      },
      "ibm858": "cp858",
      "csibm858": "cp858",
      "cp860": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      "ibm860": "cp860",
      "csibm860": "cp860",
      "cp861": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      "ibm861": "cp861",
      "csibm861": "cp861",
      "cp862": {
        "type": "_sbcs",
        "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      "ibm862": "cp862",
      "csibm862": "cp862",
      "cp863": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      "ibm863": "cp863",
      "csibm863": "cp863",
      "cp864": {
        "type": "_sbcs",
        "chars": "\0\x07\b	\n\v\f\r\x1B !\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD"
      },
      "ibm864": "cp864",
      "csibm864": "cp864",
      "cp865": {
        "type": "_sbcs",
        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
      },
      "ibm865": "cp865",
      "csibm865": "cp865",
      "cp866": {
        "type": "_sbcs",
        "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0"
      },
      "ibm866": "cp866",
      "csibm866": "cp866",
      "cp869": {
        "type": "_sbcs",
        "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0"
      },
      "ibm869": "cp869",
      "csibm869": "cp869",
      "cp922": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF"
      },
      "ibm922": "cp922",
      "csibm922": "cp922",
      "cp1046": {
        "type": "_sbcs",
        "chars": "\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD"
      },
      "ibm1046": "cp1046",
      "csibm1046": "cp1046",
      "cp1124": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"
      },
      "ibm1124": "cp1124",
      "csibm1124": "cp1124",
      "cp1125": {
        "type": "_sbcs",
        "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0"
      },
      "ibm1125": "cp1125",
      "csibm1125": "cp1125",
      "cp1129": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"
      },
      "ibm1129": "cp1129",
      "csibm1129": "cp1129",
      "cp1133": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD"
      },
      "ibm1133": "cp1133",
      "csibm1133": "cp1133",
      "cp1161": {
        "type": "_sbcs",
        "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0"
      },
      "ibm1161": "cp1161",
      "csibm1161": "cp1161",
      "cp1162": {
        "type": "_sbcs",
        "chars": "\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"
      },
      "ibm1162": "cp1162",
      "csibm1162": "cp1162",
      "cp1163": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"
      },
      "ibm1163": "cp1163",
      "csibm1163": "cp1163",
      "maccroatian": {
        "type": "_sbcs",
        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7"
      },
      "maccyrillic": {
        "type": "_sbcs",
        "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"
      },
      "macgreek": {
        "type": "_sbcs",
        "chars": "\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD"
      },
      "maciceland": {
        "type": "_sbcs",
        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"
      },
      "macroman": {
        "type": "_sbcs",
        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"
      },
      "macromania": {
        "type": "_sbcs",
        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"
      },
      "macthai": {
        "type": "_sbcs",
        "chars": "\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD"
      },
      "macturkish": {
        "type": "_sbcs",
        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"
      },
      "macukraine": {
        "type": "_sbcs",
        "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"
      },
      "koi8r": {
        "type": "_sbcs",
        "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"
      },
      "koi8u": {
        "type": "_sbcs",
        "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"
      },
      "koi8ru": {
        "type": "_sbcs",
        "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"
      },
      "koi8t": {
        "type": "_sbcs",
        "chars": "\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"
      },
      "armscii8": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD"
      },
      "rk1048": {
        "type": "_sbcs",
        "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"
      },
      "tcvn": {
        "type": "_sbcs",
        "chars": "\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b	\n\v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0"
      },
      "georgianacademy": {
        "type": "_sbcs",
        "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"
      },
      "georgianps": {
        "type": "_sbcs",
        "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"
      },
      "pt154": {
        "type": "_sbcs",
        "chars": "\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"
      },
      "viscii": {
        "type": "_sbcs",
        "chars": "\0\u1EB2\u1EB4\u1EAA\x07\b	\n\v\f\r\u1EF6\u1EF8\x1B\u1EF4 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE"
      },
      "iso646cn": {
        "type": "_sbcs",
        "chars": "\0\x07\b	\n\v\f\r\x1B !\"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"
      },
      "iso646jp": {
        "type": "_sbcs",
        "chars": "\0\x07\b	\n\v\f\r\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"
      },
      "hproman8": {
        "type": "_sbcs",
        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD"
      },
      "macintosh": {
        "type": "_sbcs",
        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"
      },
      "ascii": {
        "type": "_sbcs",
        "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"
      },
      "tis620": {
        "type": "_sbcs",
        "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"
      }
    };
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/dbcs-codec.js
var require_dbcs_codec2 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/dbcs-codec.js"(exports2) {
    "use strict";
    var Buffer7 = require_safer().Buffer;
    exports2._dbcs = DBCSCodec;
    var UNASSIGNED = -1;
    var GB18030_CODE = -2;
    var SEQ_START = -10;
    var NODE_START = -1e3;
    var UNASSIGNED_NODE = new Array(256);
    var DEF_CHAR = -1;
    for (i2 = 0; i2 < 256; i2++) {
      UNASSIGNED_NODE[i2] = UNASSIGNED;
    }
    var i2;
    function DBCSCodec(codecOptions, iconv2) {
      this.encodingName = codecOptions.encodingName;
      if (!codecOptions) {
        throw new Error("DBCS codec is called without the data.");
      }
      if (!codecOptions.table) {
        throw new Error("Encoding '" + this.encodingName + "' has no data.");
      }
      var mappingTable = codecOptions.table();
      this.decodeTables = [];
      this.decodeTables[0] = UNASSIGNED_NODE.slice(0);
      this.decodeTableSeq = [];
      for (var i3 = 0; i3 < mappingTable.length; i3++) {
        this._addDecodeChunk(mappingTable[i3]);
      }
      if (typeof codecOptions.gb18030 === "function") {
        this.gb18030 = codecOptions.gb18030();
        var commonThirdByteNodeIdx = this.decodeTables.length;
        this.decodeTables.push(UNASSIGNED_NODE.slice(0));
        var commonFourthByteNodeIdx = this.decodeTables.length;
        this.decodeTables.push(UNASSIGNED_NODE.slice(0));
        var firstByteNode = this.decodeTables[0];
        for (var i3 = 129; i3 <= 254; i3++) {
          var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i3]];
          for (var j = 48; j <= 57; j++) {
            if (secondByteNode[j] === UNASSIGNED) {
              secondByteNode[j] = NODE_START - commonThirdByteNodeIdx;
            } else if (secondByteNode[j] > NODE_START) {
              throw new Error("gb18030 decode tables conflict at byte 2");
            }
            var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]];
            for (var k = 129; k <= 254; k++) {
              if (thirdByteNode[k] === UNASSIGNED) {
                thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx;
              } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {
                continue;
              } else if (thirdByteNode[k] > NODE_START) {
                throw new Error("gb18030 decode tables conflict at byte 3");
              }
              var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]];
              for (var l = 48; l <= 57; l++) {
                if (fourthByteNode[l] === UNASSIGNED) {
                  fourthByteNode[l] = GB18030_CODE;
                }
              }
            }
          }
        }
      }
      this.defaultCharUnicode = iconv2.defaultCharUnicode;
      this.encodeTable = [];
      this.encodeTableSeq = [];
      var skipEncodeChars = {};
      if (codecOptions.encodeSkipVals) {
        for (var i3 = 0; i3 < codecOptions.encodeSkipVals.length; i3++) {
          var val = codecOptions.encodeSkipVals[i3];
          if (typeof val === "number") {
            skipEncodeChars[val] = true;
          } else {
            for (var j = val.from; j <= val.to; j++) {
              skipEncodeChars[j] = true;
            }
          }
        }
      }
      this._fillEncodeTable(0, 0, skipEncodeChars);
      if (codecOptions.encodeAdd) {
        for (var uChar in codecOptions.encodeAdd) {
          if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) {
            this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);
          }
        }
      }
      this.defCharSB = this.encodeTable[0][iconv2.defaultCharSingleByte.charCodeAt(0)];
      if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]["?"];
      if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0);
    }
    DBCSCodec.prototype.encoder = DBCSEncoder;
    DBCSCodec.prototype.decoder = DBCSDecoder;
    DBCSCodec.prototype._getDecodeTrieNode = function(addr) {
      var bytes = [];
      for (; addr > 0; addr >>>= 8) {
        bytes.push(addr & 255);
      }
      if (bytes.length == 0) {
        bytes.push(0);
      }
      var node3 = this.decodeTables[0];
      for (var i3 = bytes.length - 1; i3 > 0; i3--) {
        var val = node3[bytes[i3]];
        if (val == UNASSIGNED) {
          node3[bytes[i3]] = NODE_START - this.decodeTables.length;
          this.decodeTables.push(node3 = UNASSIGNED_NODE.slice(0));
        } else if (val <= NODE_START) {
          node3 = this.decodeTables[NODE_START - val];
        } else {
          throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16));
        }
      }
      return node3;
    };
    DBCSCodec.prototype._addDecodeChunk = function(chunk) {
      var curAddr = parseInt(chunk[0], 16);
      var writeTable = this._getDecodeTrieNode(curAddr);
      curAddr = curAddr & 255;
      for (var k = 1; k < chunk.length; k++) {
        var part = chunk[k];
        if (typeof part === "string") {
          for (var l = 0; l < part.length; ) {
            var code7 = part.charCodeAt(l++);
            if (code7 >= 55296 && code7 < 56320) {
              var codeTrail = part.charCodeAt(l++);
              if (codeTrail >= 56320 && codeTrail < 57344) {
                writeTable[curAddr++] = 65536 + (code7 - 55296) * 1024 + (codeTrail - 56320);
              } else {
                throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]);
              }
            } else if (code7 > 4080 && code7 <= 4095) {
              var len = 4095 - code7 + 2;
              var seq2 = [];
              for (var m2 = 0; m2 < len; m2++) {
                seq2.push(part.charCodeAt(l++));
              }
              writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;
              this.decodeTableSeq.push(seq2);
            } else {
              writeTable[curAddr++] = code7;
            }
          }
        } else if (typeof part === "number") {
          var charCode = writeTable[curAddr - 1] + 1;
          for (var l = 0; l < part; l++) {
            writeTable[curAddr++] = charCode++;
          }
        } else {
          throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]);
        }
      }
      if (curAddr > 255) {
        throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr);
      }
    };
    DBCSCodec.prototype._getEncodeBucket = function(uCode) {
      var high = uCode >> 8;
      if (this.encodeTable[high] === void 0) {
        this.encodeTable[high] = UNASSIGNED_NODE.slice(0);
      }
      return this.encodeTable[high];
    };
    DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {
      var bucket = this._getEncodeBucket(uCode);
      var low = uCode & 255;
      if (bucket[low] <= SEQ_START) {
        this.encodeTableSeq[SEQ_START - bucket[low]][DEF_CHAR] = dbcsCode;
      } else if (bucket[low] == UNASSIGNED) {
        bucket[low] = dbcsCode;
      }
    };
    DBCSCodec.prototype._setEncodeSequence = function(seq2, dbcsCode) {
      var uCode = seq2[0];
      var bucket = this._getEncodeBucket(uCode);
      var low = uCode & 255;
      var node3;
      if (bucket[low] <= SEQ_START) {
        node3 = this.encodeTableSeq[SEQ_START - bucket[low]];
      } else {
        node3 = {};
        if (bucket[low] !== UNASSIGNED) node3[DEF_CHAR] = bucket[low];
        bucket[low] = SEQ_START - this.encodeTableSeq.length;
        this.encodeTableSeq.push(node3);
      }
      for (var j = 1; j < seq2.length - 1; j++) {
        var oldVal = node3[uCode];
        if (typeof oldVal === "object") {
          node3 = oldVal;
        } else {
          node3 = node3[uCode] = {};
          if (oldVal !== void 0) {
            node3[DEF_CHAR] = oldVal;
          }
        }
      }
      uCode = seq2[seq2.length - 1];
      node3[uCode] = dbcsCode;
    };
    DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix2, skipEncodeChars) {
      var node3 = this.decodeTables[nodeIdx];
      var hasValues = false;
      var subNodeEmpty = {};
      for (var i3 = 0; i3 < 256; i3++) {
        var uCode = node3[i3];
        var mbCode = prefix2 + i3;
        if (skipEncodeChars[mbCode]) {
          continue;
        }
        if (uCode >= 0) {
          this._setEncodeChar(uCode, mbCode);
          hasValues = true;
        } else if (uCode <= NODE_START) {
          var subNodeIdx = NODE_START - uCode;
          if (!subNodeEmpty[subNodeIdx]) {
            var newPrefix = mbCode << 8 >>> 0;
            if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) {
              hasValues = true;
            } else {
              subNodeEmpty[subNodeIdx] = true;
            }
          }
        } else if (uCode <= SEQ_START) {
          this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);
          hasValues = true;
        }
      }
      return hasValues;
    };
    function DBCSEncoder(options, codec) {
      this.leadSurrogate = -1;
      this.seqObj = void 0;
      this.encodeTable = codec.encodeTable;
      this.encodeTableSeq = codec.encodeTableSeq;
      this.defaultCharSingleByte = codec.defCharSB;
      this.gb18030 = codec.gb18030;
    }
    DBCSEncoder.prototype.write = function(str2) {
      var newBuf = Buffer7.alloc(str2.length * (this.gb18030 ? 4 : 3));
      var leadSurrogate = this.leadSurrogate;
      var seqObj = this.seqObj;
      var nextChar = -1;
      var i3 = 0;
      var j = 0;
      while (true) {
        if (nextChar === -1) {
          if (i3 == str2.length) break;
          var uCode = str2.charCodeAt(i3++);
        } else {
          var uCode = nextChar;
          nextChar = -1;
        }
        if (uCode >= 55296 && uCode < 57344) {
          if (uCode < 56320) {
            if (leadSurrogate === -1) {
              leadSurrogate = uCode;
              continue;
            } else {
              leadSurrogate = uCode;
              uCode = UNASSIGNED;
            }
          } else {
            if (leadSurrogate !== -1) {
              uCode = 65536 + (leadSurrogate - 55296) * 1024 + (uCode - 56320);
              leadSurrogate = -1;
            } else {
              uCode = UNASSIGNED;
            }
          }
        } else if (leadSurrogate !== -1) {
          nextChar = uCode;
          uCode = UNASSIGNED;
          leadSurrogate = -1;
        }
        var dbcsCode = UNASSIGNED;
        if (seqObj !== void 0 && uCode != UNASSIGNED) {
          var resCode = seqObj[uCode];
          if (typeof resCode === "object") {
            seqObj = resCode;
            continue;
          } else if (typeof resCode === "number") {
            dbcsCode = resCode;
          } else if (resCode == void 0) {
            resCode = seqObj[DEF_CHAR];
            if (resCode !== void 0) {
              dbcsCode = resCode;
              nextChar = uCode;
            } else {
            }
          }
          seqObj = void 0;
        } else if (uCode >= 0) {
          var subtable = this.encodeTable[uCode >> 8];
          if (subtable !== void 0) {
            dbcsCode = subtable[uCode & 255];
          }
          if (dbcsCode <= SEQ_START) {
            seqObj = this.encodeTableSeq[SEQ_START - dbcsCode];
            continue;
          }
          if (dbcsCode == UNASSIGNED && this.gb18030) {
            var idx = findIdx(this.gb18030.uChars, uCode);
            if (idx != -1) {
              var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);
              newBuf[j++] = 129 + Math.floor(dbcsCode / 12600);
              dbcsCode = dbcsCode % 12600;
              newBuf[j++] = 48 + Math.floor(dbcsCode / 1260);
              dbcsCode = dbcsCode % 1260;
              newBuf[j++] = 129 + Math.floor(dbcsCode / 10);
              dbcsCode = dbcsCode % 10;
              newBuf[j++] = 48 + dbcsCode;
              continue;
            }
          }
        }
        if (dbcsCode === UNASSIGNED) {
          dbcsCode = this.defaultCharSingleByte;
        }
        if (dbcsCode < 256) {
          newBuf[j++] = dbcsCode;
        } else if (dbcsCode < 65536) {
          newBuf[j++] = dbcsCode >> 8;
          newBuf[j++] = dbcsCode & 255;
        } else if (dbcsCode < 16777216) {
          newBuf[j++] = dbcsCode >> 16;
          newBuf[j++] = dbcsCode >> 8 & 255;
          newBuf[j++] = dbcsCode & 255;
        } else {
          newBuf[j++] = dbcsCode >>> 24;
          newBuf[j++] = dbcsCode >>> 16 & 255;
          newBuf[j++] = dbcsCode >>> 8 & 255;
          newBuf[j++] = dbcsCode & 255;
        }
      }
      this.seqObj = seqObj;
      this.leadSurrogate = leadSurrogate;
      return newBuf.slice(0, j);
    };
    DBCSEncoder.prototype.end = function() {
      if (this.leadSurrogate === -1 && this.seqObj === void 0) {
        return;
      }
      var newBuf = Buffer7.alloc(10);
      var j = 0;
      if (this.seqObj) {
        var dbcsCode = this.seqObj[DEF_CHAR];
        if (dbcsCode !== void 0) {
          if (dbcsCode < 256) {
            newBuf[j++] = dbcsCode;
          } else {
            newBuf[j++] = dbcsCode >> 8;
            newBuf[j++] = dbcsCode & 255;
          }
        } else {
        }
        this.seqObj = void 0;
      }
      if (this.leadSurrogate !== -1) {
        newBuf[j++] = this.defaultCharSingleByte;
        this.leadSurrogate = -1;
      }
      return newBuf.slice(0, j);
    };
    DBCSEncoder.prototype.findIdx = findIdx;
    function DBCSDecoder(options, codec) {
      this.nodeIdx = 0;
      this.prevBytes = [];
      this.decodeTables = codec.decodeTables;
      this.decodeTableSeq = codec.decodeTableSeq;
      this.defaultCharUnicode = codec.defaultCharUnicode;
      this.gb18030 = codec.gb18030;
    }
    DBCSDecoder.prototype.write = function(buf) {
      var newBuf = Buffer7.alloc(buf.length * 2);
      var nodeIdx = this.nodeIdx;
      var prevBytes = this.prevBytes;
      var prevOffset = this.prevBytes.length;
      var seqStart = -this.prevBytes.length;
      var uCode;
      for (var i3 = 0, j = 0; i3 < buf.length; i3++) {
        var curByte = i3 >= 0 ? buf[i3] : prevBytes[i3 + prevOffset];
        var uCode = this.decodeTables[nodeIdx][curByte];
        if (uCode >= 0) {
        } else if (uCode === UNASSIGNED) {
          uCode = this.defaultCharUnicode.charCodeAt(0);
          i3 = seqStart;
        } else if (uCode === GB18030_CODE) {
          if (i3 >= 3) {
            var ptr = (buf[i3 - 3] - 129) * 12600 + (buf[i3 - 2] - 48) * 1260 + (buf[i3 - 1] - 129) * 10 + (curByte - 48);
          } else {
            var ptr = (prevBytes[i3 - 3 + prevOffset] - 129) * 12600 + ((i3 - 2 >= 0 ? buf[i3 - 2] : prevBytes[i3 - 2 + prevOffset]) - 48) * 1260 + ((i3 - 1 >= 0 ? buf[i3 - 1] : prevBytes[i3 - 1 + prevOffset]) - 129) * 10 + (curByte - 48);
          }
          var idx = findIdx(this.gb18030.gbChars, ptr);
          uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];
        } else if (uCode <= NODE_START) {
          nodeIdx = NODE_START - uCode;
          continue;
        } else if (uCode <= SEQ_START) {
          var seq2 = this.decodeTableSeq[SEQ_START - uCode];
          for (var k = 0; k < seq2.length - 1; k++) {
            uCode = seq2[k];
            newBuf[j++] = uCode & 255;
            newBuf[j++] = uCode >> 8;
          }
          uCode = seq2[seq2.length - 1];
        } else {
          throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte);
        }
        if (uCode >= 65536) {
          uCode -= 65536;
          var uCodeLead = 55296 | uCode >> 10;
          newBuf[j++] = uCodeLead & 255;
          newBuf[j++] = uCodeLead >> 8;
          uCode = 56320 | uCode & 1023;
        }
        newBuf[j++] = uCode & 255;
        newBuf[j++] = uCode >> 8;
        nodeIdx = 0;
        seqStart = i3 + 1;
      }
      this.nodeIdx = nodeIdx;
      this.prevBytes = seqStart >= 0 ? Array.prototype.slice.call(buf, seqStart) : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf));
      return newBuf.slice(0, j).toString("ucs2");
    };
    DBCSDecoder.prototype.end = function() {
      var ret = "";
      while (this.prevBytes.length > 0) {
        ret += this.defaultCharUnicode;
        var bytesArr = this.prevBytes.slice(1);
        this.prevBytes = [];
        this.nodeIdx = 0;
        if (bytesArr.length > 0) {
          ret += this.write(bytesArr);
        }
      }
      this.prevBytes = [];
      this.nodeIdx = 0;
      return ret;
    };
    function findIdx(table5, val) {
      if (table5[0] > val) {
        return -1;
      }
      var l = 0;
      var r2 = table5.length;
      while (l < r2 - 1) {
        var mid = l + (r2 - l + 1 >> 1);
        if (table5[mid] <= val) {
          l = mid;
        } else {
          r2 = mid;
        }
      }
      return l;
    }
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/tables/shiftjis.json
var require_shiftjis2 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/tables/shiftjis.json"(exports2, module2) {
    module2.exports = [
      ["0", "\0", 128],
      ["a1", "\uFF61", 62],
      ["8140", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7"],
      ["8180", "\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],
      ["81b8", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],
      ["81c8", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],
      ["81da", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],
      ["81f0", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],
      ["81fc", "\u25EF"],
      ["824f", "\uFF10", 9],
      ["8260", "\uFF21", 25],
      ["8281", "\uFF41", 25],
      ["829f", "\u3041", 82],
      ["8340", "\u30A1", 62],
      ["8380", "\u30E0", 22],
      ["839f", "\u0391", 16, "\u03A3", 6],
      ["83bf", "\u03B1", 16, "\u03C3", 6],
      ["8440", "\u0410", 5, "\u0401\u0416", 25],
      ["8470", "\u0430", 5, "\u0451\u0436", 7],
      ["8480", "\u043E", 17],
      ["849f", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],
      ["8740", "\u2460", 19, "\u2160", 9],
      ["875f", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],
      ["877e", "\u337B"],
      ["8780", "\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],
      ["889f", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],
      ["8940", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"],
      ["8980", "\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],
      ["8a40", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"],
      ["8a80", "\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],
      ["8b40", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"],
      ["8b80", "\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],
      ["8c40", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"],
      ["8c80", "\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],
      ["8d40", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"],
      ["8d80", "\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],
      ["8e40", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"],
      ["8e80", "\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],
      ["8f40", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"],
      ["8f80", "\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],
      ["9040", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"],
      ["9080", "\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],
      ["9140", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"],
      ["9180", "\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],
      ["9240", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"],
      ["9280", "\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],
      ["9340", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"],
      ["9380", "\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],
      ["9440", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"],
      ["9480", "\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],
      ["9540", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"],
      ["9580", "\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],
      ["9640", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"],
      ["9680", "\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],
      ["9740", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"],
      ["9780", "\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],
      ["9840", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],
      ["989f", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],
      ["9940", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"],
      ["9980", "\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],
      ["9a40", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"],
      ["9a80", "\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],
      ["9b40", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"],
      ["9b80", "\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],
      ["9c40", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"],
      ["9c80", "\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],
      ["9d40", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"],
      ["9d80", "\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],
      ["9e40", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"],
      ["9e80", "\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],
      ["9f40", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"],
      ["9f80", "\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],
      ["e040", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"],
      ["e080", "\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],
      ["e140", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"],
      ["e180", "\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],
      ["e240", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"],
      ["e280", "\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],
      ["e340", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"],
      ["e380", "\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],
      ["e440", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"],
      ["e480", "\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],
      ["e540", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"],
      ["e580", "\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],
      ["e640", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"],
      ["e680", "\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],
      ["e740", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"],
      ["e780", "\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],
      ["e840", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"],
      ["e880", "\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],
      ["e940", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"],
      ["e980", "\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],
      ["ea40", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"],
      ["ea80", "\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"],
      ["ed40", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"],
      ["ed80", "\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],
      ["ee40", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"],
      ["ee80", "\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],
      ["eeef", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"],
      ["f040", "\uE000", 62],
      ["f080", "\uE03F", 124],
      ["f140", "\uE0BC", 62],
      ["f180", "\uE0FB", 124],
      ["f240", "\uE178", 62],
      ["f280", "\uE1B7", 124],
      ["f340", "\uE234", 62],
      ["f380", "\uE273", 124],
      ["f440", "\uE2F0", 62],
      ["f480", "\uE32F", 124],
      ["f540", "\uE3AC", 62],
      ["f580", "\uE3EB", 124],
      ["f640", "\uE468", 62],
      ["f680", "\uE4A7", 124],
      ["f740", "\uE524", 62],
      ["f780", "\uE563", 124],
      ["f840", "\uE5E0", 62],
      ["f880", "\uE61F", 124],
      ["f940", "\uE69C"],
      ["fa40", "\u2170", 9, "\u2160", 9, "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"],
      ["fa80", "\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"],
      ["fb40", "\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"],
      ["fb80", "\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"],
      ["fc40", "\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"]
    ];
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/tables/eucjp.json
var require_eucjp2 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/tables/eucjp.json"(exports2, module2) {
    module2.exports = [
      ["0", "\0", 127],
      ["8ea1", "\uFF61", 62],
      ["a1a1", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"],
      ["a2a1", "\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],
      ["a2ba", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],
      ["a2ca", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],
      ["a2dc", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],
      ["a2f2", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],
      ["a2fe", "\u25EF"],
      ["a3b0", "\uFF10", 9],
      ["a3c1", "\uFF21", 25],
      ["a3e1", "\uFF41", 25],
      ["a4a1", "\u3041", 82],
      ["a5a1", "\u30A1", 85],
      ["a6a1", "\u0391", 16, "\u03A3", 6],
      ["a6c1", "\u03B1", 16, "\u03C3", 6],
      ["a7a1", "\u0410", 5, "\u0401\u0416", 25],
      ["a7d1", "\u0430", 5, "\u0451\u0436", 25],
      ["a8a1", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],
      ["ada1", "\u2460", 19, "\u2160", 9],
      ["adc0", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],
      ["addf", "\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],
      ["b0a1", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],
      ["b1a1", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"],
      ["b2a1", "\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],
      ["b3a1", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"],
      ["b4a1", "\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],
      ["b5a1", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"],
      ["b6a1", "\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],
      ["b7a1", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"],
      ["b8a1", "\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],
      ["b9a1", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"],
      ["baa1", "\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],
      ["bba1", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"],
      ["bca1", "\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],
      ["bda1", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"],
      ["bea1", "\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],
      ["bfa1", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"],
      ["c0a1", "\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],
      ["c1a1", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"],
      ["c2a1", "\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],
      ["c3a1", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"],
      ["c4a1", "\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],
      ["c5a1", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"],
      ["c6a1", "\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],
      ["c7a1", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"],
      ["c8a1", "\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],
      ["c9a1", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"],
      ["caa1", "\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],
      ["cba1", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"],
      ["cca1", "\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],
      ["cda1", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"],
      ["cea1", "\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],
      ["cfa1", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],
      ["d0a1", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],
      ["d1a1", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"],
      ["d2a1", "\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],
      ["d3a1", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"],
      ["d4a1", "\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],
      ["d5a1", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"],
      ["d6a1", "\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],
      ["d7a1", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"],
      ["d8a1", "\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],
      ["d9a1", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"],
      ["daa1", "\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],
      ["dba1", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"],
      ["dca1", "\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],
      ["dda1", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"],
      ["dea1", "\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],
      ["dfa1", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"],
      ["e0a1", "\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],
      ["e1a1", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"],
      ["e2a1", "\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],
      ["e3a1", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"],
      ["e4a1", "\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],
      ["e5a1", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"],
      ["e6a1", "\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],
      ["e7a1", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"],
      ["e8a1", "\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],
      ["e9a1", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"],
      ["eaa1", "\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],
      ["eba1", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"],
      ["eca1", "\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],
      ["eda1", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"],
      ["eea1", "\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],
      ["efa1", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"],
      ["f0a1", "\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],
      ["f1a1", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"],
      ["f2a1", "\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],
      ["f3a1", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"],
      ["f4a1", "\u582F\u69C7\u9059\u7464\u51DC\u7199"],
      ["f9a1", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"],
      ["faa1", "\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],
      ["fba1", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"],
      ["fca1", "\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],
      ["fcf1", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"],
      ["8fa2af", "\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"],
      ["8fa2c2", "\xA1\xA6\xBF"],
      ["8fa2eb", "\xBA\xAA\xA9\xAE\u2122\xA4\u2116"],
      ["8fa6e1", "\u0386\u0388\u0389\u038A\u03AA"],
      ["8fa6e7", "\u038C"],
      ["8fa6e9", "\u038E\u03AB"],
      ["8fa6ec", "\u038F"],
      ["8fa6f1", "\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"],
      ["8fa7c2", "\u0402", 10, "\u040E\u040F"],
      ["8fa7f2", "\u0452", 10, "\u045E\u045F"],
      ["8fa9a1", "\xC6\u0110"],
      ["8fa9a4", "\u0126"],
      ["8fa9a6", "\u0132"],
      ["8fa9a8", "\u0141\u013F"],
      ["8fa9ab", "\u014A\xD8\u0152"],
      ["8fa9af", "\u0166\xDE"],
      ["8fa9c1", "\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"],
      ["8faaa1", "\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"],
      ["8faaba", "\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"],
      ["8faba1", "\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"],
      ["8fabbd", "\u0121\u0125\xED\xEC\xEF\xEE\u01D0"],
      ["8fabc5", "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"],
      ["8fb0a1", "\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"],
      ["8fb1a1", "\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"],
      ["8fb2a1", "\u5092\u5093\u5094\u5096\u509B\u509C\u509E", 4, "\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"],
      ["8fb3a1", "\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"],
      ["8fb4a1", "\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"],
      ["8fb5a1", "\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"],
      ["8fb6a1", "\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D", 5, "\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4", 4, "\u56F1\u56EB\u56ED"],
      ["8fb7a1", "\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D", 4, "\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"],
      ["8fb8a1", "\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"],
      ["8fb9a1", "\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"],
      ["8fbaa1", "\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6", 4, "\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"],
      ["8fbba1", "\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"],
      ["8fbca1", "\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A", 4, "\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"],
      ["8fbda1", "\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0", 4, "\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"],
      ["8fbea1", "\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110", 4, "\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"],
      ["8fbfa1", "\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"],
      ["8fc0a1", "\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"],
      ["8fc1a1", "\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"],
      ["8fc2a1", "\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"],
      ["8fc3a1", "\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E", 4, "\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"],
      ["8fc4a1", "\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"],
      ["8fc5a1", "\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"],
      ["8fc6a1", "\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"],
      ["8fc7a1", "\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"],
      ["8fc8a1", "\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"],
      ["8fc9a1", "\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094", 4, "\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103", 4, "\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"],
      ["8fcaa1", "\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"],
      ["8fcba1", "\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"],
      ["8fcca1", "\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428", 9, "\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"],
      ["8fcda1", "\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579", 5, "\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"],
      ["8fcea1", "\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2", 6, "\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"],
      ["8fcfa1", "\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"],
      ["8fd0a1", "\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"],
      ["8fd1a1", "\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"],
      ["8fd2a1", "\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59", 5],
      ["8fd3a1", "\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"],
      ["8fd4a1", "\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2", 4, "\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"],
      ["8fd5a1", "\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"],
      ["8fd6a1", "\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"],
      ["8fd7a1", "\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"],
      ["8fd8a1", "\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"],
      ["8fd9a1", "\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F", 4, "\u8556\u8559\u855C", 6, "\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"],
      ["8fdaa1", "\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660", 4, "\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"],
      ["8fdba1", "\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783", 6, "\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"],
      ["8fdca1", "\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA", 4, "\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"],
      ["8fdda1", "\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4", 4, "\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"],
      ["8fdea1", "\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42", 4, "\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"],
      ["8fdfa1", "\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"],
      ["8fe0a1", "\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"],
      ["8fe1a1", "\u8F43\u8F47\u8F4F\u8F51", 4, "\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"],
      ["8fe2a1", "\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"],
      ["8fe3a1", "\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC", 5, "\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275", 4, "\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"],
      ["8fe4a1", "\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF", 4, "\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"],
      ["8fe5a1", "\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9", 4, "\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"],
      ["8fe6a1", "\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"],
      ["8fe7a1", "\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"],
      ["8fe8a1", "\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931", 4, "\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"],
      ["8fe9a1", "\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF", 4],
      ["8feaa1", "\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A", 4, "\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"],
      ["8feba1", "\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26", 4, "\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"],
      ["8feca1", "\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"],
      ["8feda1", "\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43", 4, "\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D", 4, "\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"]
    ];
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/tables/cp936.json
var require_cp9362 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/tables/cp936.json"(exports2, module2) {
    module2.exports = [
      ["0", "\0", 127, "\u20AC"],
      ["8140", "\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A", 5, "\u4E72\u4E74", 9, "\u4E7F", 6, "\u4E87\u4E8A"],
      ["8180", "\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02", 6, "\u4F0B\u4F0C\u4F12", 4, "\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E", 4, "\u4F44\u4F45\u4F47", 5, "\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"],
      ["8240", "\u4FA4\u4FAB\u4FAD\u4FB0", 4, "\u4FB6", 8, "\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2", 4, "\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF", 11],
      ["8280", "\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F", 10, "\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050", 4, "\u5056\u5057\u5058\u5059\u505B\u505D", 7, "\u5066", 5, "\u506D", 8, "\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E", 20, "\u50A4\u50A6\u50AA\u50AB\u50AD", 4, "\u50B3", 6, "\u50BC"],
      ["8340", "\u50BD", 17, "\u50D0", 5, "\u50D7\u50D8\u50D9\u50DB", 10, "\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6", 4, "\u50FC", 9, "\u5108"],
      ["8380", "\u5109\u510A\u510C", 5, "\u5113", 13, "\u5122", 28, "\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D", 4, "\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6", 4, "\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2", 5],
      ["8440", "\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5", 5, "\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244", 5, "\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"],
      ["8480", "\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273", 9, "\u527E\u5280\u5283", 4, "\u5289", 6, "\u5291\u5292\u5294", 6, "\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4", 9, "\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9", 5, "\u52E0\u52E1\u52E2\u52E3\u52E5", 10, "\u52F1", 7, "\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"],
      ["8540", "\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F", 9, "\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"],
      ["8580", "\u5390", 4, "\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF", 6, "\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3", 4, "\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D", 4, "\u5463\u5465\u5467\u5469", 7, "\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"],
      ["8640", "\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0", 4, "\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4", 5, "\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A", 4, "\u5512\u5513\u5515", 5, "\u551C\u551D\u551E\u551F\u5521\u5525\u5526"],
      ["8680", "\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B", 4, "\u5551\u5552\u5553\u5554\u5557", 4, "\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F", 5, "\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0", 6, "\u55A8", 8, "\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF", 4, "\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7", 4, "\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8", 4, "\u55FF\u5602\u5603\u5604\u5605"],
      ["8740", "\u5606\u5607\u560A\u560B\u560D\u5610", 7, "\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640", 11, "\u564F", 4, "\u5655\u5656\u565A\u565B\u565D", 4],
      ["8780", "\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D", 7, "\u5687", 6, "\u5690\u5691\u5692\u5694", 14, "\u56A4", 10, "\u56B0", 6, "\u56B8\u56B9\u56BA\u56BB\u56BD", 12, "\u56CB", 8, "\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5", 5, "\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B", 6],
      ["8840", "\u5712", 9, "\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734", 4, "\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752", 4, "\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"],
      ["8880", "\u5781\u5787\u5788\u5789\u578A\u578D", 4, "\u5794", 6, "\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9", 8, "\u57C4", 6, "\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5", 7, "\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825", 4, "\u582B", 4, "\u5831\u5832\u5833\u5834\u5836", 7],
      ["8940", "\u583E", 5, "\u5845", 6, "\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859", 4, "\u585F", 5, "\u5866", 4, "\u586D", 16, "\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"],
      ["8980", "\u588D", 4, "\u5894", 4, "\u589B\u589C\u589D\u58A0", 7, "\u58AA", 17, "\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6", 10, "\u58D2\u58D3\u58D4\u58D6", 13, "\u58E5", 5, "\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA", 7, "\u5903\u5905\u5906\u5908", 4, "\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"],
      ["8a40", "\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B", 4, "\u5961\u5963\u5964\u5966", 12, "\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"],
      ["8a80", "\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3", 5, "\u59BA\u59BC\u59BD\u59BF", 6, "\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE", 4, "\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED", 11, "\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A", 6, "\u5A33\u5A35\u5A37", 4, "\u5A3D\u5A3E\u5A3F\u5A41", 4, "\u5A47\u5A48\u5A4B", 9, "\u5A56\u5A57\u5A58\u5A59\u5A5B", 5],
      ["8b40", "\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B", 8, "\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80", 17, "\u5A93", 6, "\u5A9C", 13, "\u5AAB\u5AAC"],
      ["8b80", "\u5AAD", 4, "\u5AB4\u5AB6\u5AB7\u5AB9", 4, "\u5ABF\u5AC0\u5AC3", 5, "\u5ACA\u5ACB\u5ACD", 4, "\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC", 4, "\u5AF2", 22, "\u5B0A", 11, "\u5B18", 25, "\u5B33\u5B35\u5B36\u5B38", 7, "\u5B41", 6],
      ["8c40", "\u5B48", 7, "\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"],
      ["8c80", "\u5BD1\u5BD4", 8, "\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9", 4, "\u5BEF\u5BF1", 6, "\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67", 6, "\u5C70\u5C72", 6, "\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83", 4, "\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D", 4, "\u5CA4", 4],
      ["8d40", "\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5", 5, "\u5CCC", 5, "\u5CD3", 5, "\u5CDA", 6, "\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1", 9, "\u5CFC", 4],
      ["8d80", "\u5D01\u5D04\u5D05\u5D08", 5, "\u5D0F", 4, "\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F", 4, "\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F", 4, "\u5D35", 7, "\u5D3F", 7, "\u5D48\u5D49\u5D4D", 10, "\u5D59\u5D5A\u5D5C\u5D5E", 10, "\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75", 12, "\u5D83", 21, "\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"],
      ["8e40", "\u5DA1", 21, "\u5DB8", 12, "\u5DC6", 6, "\u5DCE", 12, "\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"],
      ["8e80", "\u5DF0\u5DF5\u5DF6\u5DF8", 4, "\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E", 7, "\u5E28", 4, "\u5E2F\u5E30\u5E32", 4, "\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46", 5, "\u5E4D", 6, "\u5E56", 4, "\u5E5C\u5E5D\u5E5F\u5E60\u5E63", 14, "\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8", 4, "\u5EAE", 4, "\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF", 6],
      ["8f40", "\u5EC6\u5EC7\u5EC8\u5ECB", 5, "\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC", 11, "\u5EE9\u5EEB", 8, "\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"],
      ["8f80", "\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32", 6, "\u5F3B\u5F3D\u5F3E\u5F3F\u5F41", 14, "\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2", 5, "\u5FA9\u5FAB\u5FAC\u5FAF", 5, "\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE", 4, "\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"],
      ["9040", "\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030", 4, "\u6036", 4, "\u603D\u603E\u6040\u6044", 6, "\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"],
      ["9080", "\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD", 7, "\u60C7\u60C8\u60C9\u60CC", 4, "\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1", 4, "\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB", 4, "\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110", 4, "\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C", 18, "\u6140", 6],
      ["9140", "\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156", 6, "\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169", 6, "\u6171\u6172\u6173\u6174\u6176\u6178", 18, "\u618C\u618D\u618F", 4, "\u6195"],
      ["9180", "\u6196", 6, "\u619E", 8, "\u61AA\u61AB\u61AD", 9, "\u61B8", 5, "\u61BF\u61C0\u61C1\u61C3", 4, "\u61C9\u61CC", 4, "\u61D3\u61D5", 16, "\u61E7", 13, "\u61F6", 8, "\u6200", 5, "\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238", 4, "\u6242\u6244\u6245\u6246\u624A"],
      ["9240", "\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C", 6, "\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B", 5, "\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"],
      ["9280", "\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333", 5, "\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356", 7, "\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399", 6, "\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"],
      ["9340", "\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7", 6, "\u63DF\u63E2\u63E4", 4, "\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406", 4, "\u640D\u640E\u6411\u6412\u6415", 5, "\u641D\u641F\u6422\u6423\u6424"],
      ["9380", "\u6425\u6427\u6428\u6429\u642B\u642E", 5, "\u6435", 4, "\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B", 6, "\u6453\u6455\u6456\u6457\u6459", 4, "\u645F", 7, "\u6468\u646A\u646B\u646C\u646E", 9, "\u647B", 6, "\u6483\u6486\u6488", 8, "\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F", 4, "\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6", 6, "\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"],
      ["9440", "\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7", 24, "\u6501", 7, "\u650A", 7, "\u6513", 4, "\u6519", 8],
      ["9480", "\u6522\u6523\u6524\u6526", 4, "\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540", 4, "\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578", 14, "\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1", 7, "\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8", 7, "\u65E1\u65E3\u65E4\u65EA\u65EB"],
      ["9540", "\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB", 4, "\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637", 4, "\u663D\u663F\u6640\u6642\u6644", 6, "\u664D\u664E\u6650\u6651\u6658"],
      ["9580", "\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669", 4, "\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698", 4, "\u669E", 8, "\u66A9", 4, "\u66AF", 4, "\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF", 25, "\u66DA\u66DE", 7, "\u66E7\u66E8\u66EA", 5, "\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"],
      ["9640", "\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720", 5, "\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757", 4, "\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"],
      ["9680", "\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9", 7, "\u67C2\u67C5", 9, "\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5", 7, "\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818", 4, "\u681E\u681F\u6820\u6822", 6, "\u682B", 6, "\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856", 5],
      ["9740", "\u685C\u685D\u685E\u685F\u686A\u686C", 7, "\u6875\u6878", 8, "\u6882\u6884\u6887", 7, "\u6890\u6891\u6892\u6894\u6895\u6896\u6898", 9, "\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"],
      ["9780", "\u68B9", 6, "\u68C1\u68C3", 5, "\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB", 4, "\u68E1\u68E2\u68E4", 9, "\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906", 4, "\u690C\u690F\u6911\u6913", 11, "\u6921\u6922\u6923\u6925", 7, "\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943", 16, "\u6955\u6956\u6958\u6959\u695B\u695C\u695F"],
      ["9840", "\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972", 4, "\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E", 5, "\u6996\u6997\u6999\u699A\u699D", 9, "\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"],
      ["9880", "\u69BE\u69BF\u69C0\u69C2", 7, "\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5", 5, "\u69DC\u69DD\u69DE\u69E1", 11, "\u69EE\u69EF\u69F0\u69F1\u69F3", 9, "\u69FE\u6A00", 9, "\u6A0B", 11, "\u6A19", 5, "\u6A20\u6A22", 5, "\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36", 6, "\u6A3F", 4, "\u6A45\u6A46\u6A48", 7, "\u6A51", 6, "\u6A5A"],
      ["9940", "\u6A5C", 4, "\u6A62\u6A63\u6A64\u6A66", 10, "\u6A72", 6, "\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85", 8, "\u6A8F\u6A92", 4, "\u6A98", 7, "\u6AA1", 5],
      ["9980", "\u6AA7\u6AA8\u6AAA\u6AAD", 114, "\u6B25\u6B26\u6B28", 6],
      ["9a40", "\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D", 11, "\u6B5A", 7, "\u6B68\u6B69\u6B6B", 13, "\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"],
      ["9a80", "\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C", 4, "\u6BA2", 7, "\u6BAB", 7, "\u6BB6\u6BB8", 6, "\u6BC0\u6BC3\u6BC4\u6BC6", 4, "\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC", 4, "\u6BE2", 7, "\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE", 6, "\u6C08", 4, "\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B", 4, "\u6C51\u6C52\u6C53\u6C56\u6C58"],
      ["9b40", "\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B", 4, "\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"],
      ["9b80", "\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F", 5, "\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D", 4, "\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96", 4, "\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9", 5, "\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"],
      ["9c40", "\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD", 7, "\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"],
      ["9c80", "\u6E36\u6E37\u6E39\u6E3B", 7, "\u6E45", 7, "\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60", 10, "\u6E6C\u6E6D\u6E6F", 14, "\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A", 4, "\u6E91", 6, "\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA", 5],
      ["9d40", "\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA", 7, "\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A", 4, "\u6F10\u6F11\u6F12\u6F16", 9, "\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37", 6, "\u6F3F\u6F40\u6F41\u6F42"],
      ["9d80", "\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E", 9, "\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67", 5, "\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D", 6, "\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F", 12, "\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2", 4, "\u6FA8", 10, "\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA", 5, "\u6FC1\u6FC3", 5, "\u6FCA", 6, "\u6FD3", 10, "\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"],
      ["9e40", "\u6FE6", 7, "\u6FF0", 32, "\u7012", 7, "\u701C", 6, "\u7024", 6],
      ["9e80", "\u702B", 9, "\u7036\u7037\u7038\u703A", 17, "\u704D\u704E\u7050", 13, "\u705F", 11, "\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E", 12, "\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB", 12, "\u70DA"],
      ["9f40", "\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0", 6, "\u70F8\u70FA\u70FB\u70FC\u70FE", 10, "\u710B", 4, "\u7111\u7112\u7114\u7117\u711B", 10, "\u7127", 7, "\u7132\u7133\u7134"],
      ["9f80", "\u7135\u7137", 13, "\u7146\u7147\u7148\u7149\u714B\u714D\u714F", 12, "\u715D\u715F", 4, "\u7165\u7169", 4, "\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E", 5, "\u7185", 4, "\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A", 4, "\u71A1", 6, "\u71A9\u71AA\u71AB\u71AD", 5, "\u71B4\u71B6\u71B7\u71B8\u71BA", 8, "\u71C4", 9, "\u71CF", 4],
      ["a040", "\u71D6", 9, "\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8", 5, "\u71EF", 9, "\u71FA", 11, "\u7207", 19],
      ["a080", "\u721B\u721C\u721E", 9, "\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240", 6, "\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285", 4, "\u728C\u728E\u7290\u7291\u7293", 11, "\u72A0", 11, "\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA", 6, "\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"],
      ["a1a1", "\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 7, "\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"],
      ["a2a1", "\u2170", 9],
      ["a2b1", "\u2488", 19, "\u2474", 19, "\u2460", 9],
      ["a2e5", "\u3220", 9],
      ["a2f1", "\u2160", 11],
      ["a3a1", "\uFF01\uFF02\uFF03\uFFE5\uFF05", 88, "\uFFE3"],
      ["a4a1", "\u3041", 82],
      ["a5a1", "\u30A1", 85],
      ["a6a1", "\u0391", 16, "\u03A3", 6],
      ["a6c1", "\u03B1", 16, "\u03C3", 6],
      ["a6e0", "\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"],
      ["a6ee", "\uFE3B\uFE3C\uFE37\uFE38\uFE31"],
      ["a6f4", "\uFE33\uFE34"],
      ["a7a1", "\u0410", 5, "\u0401\u0416", 25],
      ["a7d1", "\u0430", 5, "\u0451\u0436", 25],
      ["a840", "\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550", 35, "\u2581", 6],
      ["a880", "\u2588", 7, "\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"],
      ["a8a1", "\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"],
      ["a8bd", "\u0144\u0148"],
      ["a8c0", "\u0261"],
      ["a8c5", "\u3105", 36],
      ["a940", "\u3021", 8, "\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"],
      ["a959", "\u2121\u3231"],
      ["a95c", "\u2010"],
      ["a960", "\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49", 9, "\uFE54\uFE55\uFE56\uFE57\uFE59", 8],
      ["a980", "\uFE62", 4, "\uFE68\uFE69\uFE6A\uFE6B"],
      ["a996", "\u3007"],
      ["a9a4", "\u2500", 75],
      ["aa40", "\u72DC\u72DD\u72DF\u72E2", 5, "\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304", 5, "\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340", 8],
      ["aa80", "\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358", 7, "\u7361", 10, "\u736E\u7370\u7371"],
      ["ab40", "\u7372", 11, "\u737F", 4, "\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3", 5, "\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3", 4],
      ["ab80", "\u73CB\u73CC\u73CE\u73D2", 6, "\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3", 4],
      ["ac40", "\u73F8", 10, "\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411", 8, "\u741C", 5, "\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437", 4, "\u743D\u743E\u743F\u7440\u7442", 11],
      ["ac80", "\u744E", 6, "\u7456\u7458\u745D\u7460", 12, "\u746E\u746F\u7471", 4, "\u7478\u7479\u747A"],
      ["ad40", "\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491", 10, "\u749D\u749F", 7, "\u74AA", 15, "\u74BB", 12],
      ["ad80", "\u74C8", 9, "\u74D3", 8, "\u74DD\u74DF\u74E1\u74E5\u74E7", 6, "\u74F0\u74F1\u74F2"],
      ["ae40", "\u74F3\u74F5\u74F8", 6, "\u7500\u7501\u7502\u7503\u7505", 7, "\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520", 4, "\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"],
      ["ae80", "\u755D", 7, "\u7567\u7568\u7569\u756B", 6, "\u7573\u7575\u7576\u7577\u757A", 4, "\u7580\u7581\u7582\u7584\u7585\u7587"],
      ["af40", "\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6", 4, "\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"],
      ["af80", "\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"],
      ["b040", "\u7645", 6, "\u764E", 5, "\u7655\u7657", 4, "\u765D\u765F\u7660\u7661\u7662\u7664", 6, "\u766C\u766D\u766E\u7670", 7, "\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"],
      ["b080", "\u769C", 7, "\u76A5", 8, "\u76AF\u76B0\u76B3\u76B5", 9, "\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"],
      ["b140", "\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0", 4, "\u76E6", 7, "\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E", 10, "\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"],
      ["b180", "\u772C\u772E\u7730", 4, "\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748", 7, "\u7752", 7, "\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"],
      ["b240", "\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D", 11, "\u777A\u777B\u777C\u7781\u7782\u7783\u7786", 5, "\u778F\u7790\u7793", 11, "\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6", 4],
      ["b280", "\u77BC\u77BE\u77C0", 12, "\u77CE", 8, "\u77D8\u77D9\u77DA\u77DD", 4, "\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"],
      ["b340", "\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803", 5, "\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"],
      ["b380", "\u785B\u785C\u785E", 11, "\u786F", 7, "\u7878\u7879\u787A\u787B\u787D", 6, "\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"],
      ["b440", "\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8", 7, "\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA", 9],
      ["b480", "\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED", 4, "\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB", 5, "\u7902\u7903\u7904\u7906", 6, "\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"],
      ["b540", "\u790D", 5, "\u7914", 9, "\u791F", 4, "\u7925", 14, "\u7935", 4, "\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A", 8, "\u7954\u7955\u7958\u7959\u7961\u7963"],
      ["b580", "\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970", 6, "\u7979\u797B", 4, "\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"],
      ["b640", "\u7993", 6, "\u799B", 11, "\u79A8", 10, "\u79B4", 4, "\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9", 5, "\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"],
      ["b680", "\u79EC\u79EE\u79F1", 6, "\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F", 4, "\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"],
      ["b740", "\u7A1D\u7A1F\u7A21\u7A22\u7A24", 14, "\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40", 5, "\u7A47", 9, "\u7A52", 4, "\u7A58", 16],
      ["b780", "\u7A69", 6, "\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"],
      ["b840", "\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE", 4, "\u7AB4", 10, "\u7AC0", 10, "\u7ACC", 9, "\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7", 5, "\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"],
      ["b880", "\u7AF4", 4, "\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"],
      ["b940", "\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F", 5, "\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63", 10, "\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86", 6, "\u7B8E\u7B8F"],
      ["b980", "\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9", 7, "\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"],
      ["ba40", "\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4", 4, "\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2", 4, "\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF", 7, "\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10", 5, "\u7C17\u7C18\u7C19"],
      ["ba80", "\u7C1A", 4, "\u7C20", 5, "\u7C28\u7C29\u7C2B", 12, "\u7C39", 5, "\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"],
      ["bb40", "\u7C43", 9, "\u7C4E", 36, "\u7C75", 5, "\u7C7E", 9],
      ["bb80", "\u7C88\u7C8A", 6, "\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4", 4, "\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"],
      ["bc40", "\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE", 6, "\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1", 6, "\u7CE9", 5, "\u7CF0", 7, "\u7CF9\u7CFA\u7CFC", 13, "\u7D0B", 5],
      ["bc80", "\u7D11", 14, "\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30", 6, "\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"],
      ["bd40", "\u7D37", 54, "\u7D6F", 7],
      ["bd80", "\u7D78", 32, "\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"],
      ["be40", "\u7D99", 12, "\u7DA7", 6, "\u7DAF", 42],
      ["be80", "\u7DDA", 32, "\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"],
      ["bf40", "\u7DFB", 62],
      ["bf80", "\u7E3A\u7E3C", 4, "\u7E42", 4, "\u7E48", 21, "\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"],
      ["c040", "\u7E5E", 35, "\u7E83", 23, "\u7E9C\u7E9D\u7E9E"],
      ["c080", "\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B", 6, "\u7F43\u7F46", 9, "\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"],
      ["c140", "\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63", 4, "\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82", 7, "\u7F8B\u7F8D\u7F8F", 4, "\u7F95", 4, "\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8", 6, "\u7FB1"],
      ["c180", "\u7FB3", 4, "\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF", 4, "\u7FD6\u7FD7\u7FD9", 5, "\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"],
      ["c240", "\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4", 6, "\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B", 5, "\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"],
      ["c280", "\u8059\u805B", 13, "\u806B", 5, "\u8072", 11, "\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"],
      ["c340", "\u807E\u8081\u8082\u8085\u8088\u808A\u808D", 5, "\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7", 4, "\u80CF", 6, "\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"],
      ["c380", "\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F", 12, "\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139", 4, "\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"],
      ["c440", "\u8140", 5, "\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B", 4, "\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183", 4, "\u8189\u818B\u818C\u818D\u818E\u8190\u8192", 5, "\u8199\u819A\u819E", 4, "\u81A4\u81A5"],
      ["c480", "\u81A7\u81A9\u81AB", 7, "\u81B4", 5, "\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD", 6, "\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"],
      ["c540", "\u81D4", 14, "\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE", 4, "\u81F5", 5, "\u81FD\u81FF\u8203\u8207", 4, "\u820E\u820F\u8211\u8213\u8215", 5, "\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"],
      ["c580", "\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250", 7, "\u8259\u825B\u825C\u825D\u825E\u8260", 7, "\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"],
      ["c640", "\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"],
      ["c680", "\u82FA\u82FC", 4, "\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D", 9, "\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"],
      ["c740", "\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A", 4, "\u8353\u8355", 4, "\u835D\u8362\u8370", 6, "\u8379\u837A\u837E", 6, "\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1", 6, "\u83AC\u83AD\u83AE"],
      ["c780", "\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"],
      ["c840", "\u83EE\u83EF\u83F3", 4, "\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412", 5, "\u8419\u841A\u841B\u841E", 5, "\u8429", 7, "\u8432", 5, "\u8439\u843A\u843B\u843E", 7, "\u8447\u8448\u8449"],
      ["c880", "\u844A", 6, "\u8452", 4, "\u8458\u845D\u845E\u845F\u8460\u8462\u8464", 4, "\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"],
      ["c940", "\u847D", 4, "\u8483\u8484\u8485\u8486\u848A\u848D\u848F", 7, "\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2", 12, "\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"],
      ["c980", "\u84D8", 4, "\u84DE\u84E1\u84E2\u84E4\u84E7", 4, "\u84ED\u84EE\u84EF\u84F1", 10, "\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"],
      ["ca40", "\u8503", 8, "\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522", 8, "\u852D", 9, "\u853E", 4, "\u8544\u8545\u8546\u8547\u854B", 10],
      ["ca80", "\u8557\u8558\u855A\u855B\u855C\u855D\u855F", 4, "\u8565\u8566\u8567\u8569", 8, "\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"],
      ["cb40", "\u8582\u8583\u8586\u8588", 6, "\u8590", 10, "\u859D", 6, "\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1", 5, "\u85B8\u85BA", 6, "\u85C2", 6, "\u85CA", 4, "\u85D1\u85D2"],
      ["cb80", "\u85D4\u85D6", 5, "\u85DD", 6, "\u85E5\u85E6\u85E7\u85E8\u85EA", 14, "\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"],
      ["cc40", "\u85F9\u85FA\u85FC\u85FD\u85FE\u8600", 4, "\u8606", 10, "\u8612\u8613\u8614\u8615\u8617", 15, "\u8628\u862A", 13, "\u8639\u863A\u863B\u863D\u863E\u863F\u8640"],
      ["cc80", "\u8641", 11, "\u8652\u8653\u8655", 4, "\u865B\u865C\u865D\u865F\u8660\u8661\u8663", 7, "\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"],
      ["cd40", "\u866D\u866F\u8670\u8672", 6, "\u8683", 6, "\u868E", 4, "\u8694\u8696", 5, "\u869E", 4, "\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB", 4, "\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"],
      ["cd80", "\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"],
      ["ce40", "\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740", 6, "\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A", 5, "\u8761\u8762\u8766", 7, "\u876F\u8771\u8772\u8773\u8775"],
      ["ce80", "\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E", 4, "\u8794\u8795\u8796\u8798", 6, "\u87A0", 4, "\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"],
      ["cf40", "\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1", 4, "\u87C7\u87C8\u87C9\u87CC", 4, "\u87D4", 6, "\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF", 9],
      ["cf80", "\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804", 5, "\u880B", 7, "\u8814\u8817\u8818\u8819\u881A\u881C", 4, "\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"],
      ["d040", "\u8824", 13, "\u8833", 5, "\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846", 5, "\u884E", 5, "\u8855\u8856\u8858\u885A", 6, "\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"],
      ["d080", "\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897", 4, "\u889D", 4, "\u88A3\u88A5", 5, "\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"],
      ["d140", "\u88AC\u88AE\u88AF\u88B0\u88B2", 4, "\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA", 4, "\u88E0\u88E1\u88E6\u88E7\u88E9", 6, "\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903", 5],
      ["d180", "\u8909\u890B", 4, "\u8911\u8914", 4, "\u891C", 4, "\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"],
      ["d240", "\u8938", 8, "\u8942\u8943\u8945", 24, "\u8960", 5, "\u8967", 19, "\u897C"],
      ["d280", "\u897D\u897E\u8980\u8982\u8984\u8985\u8987", 26, "\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"],
      ["d340", "\u89A2", 30, "\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4", 6],
      ["d380", "\u89FB", 4, "\u8A01", 5, "\u8A08", 21, "\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"],
      ["d440", "\u8A1E", 31, "\u8A3F", 8, "\u8A49", 21],
      ["d480", "\u8A5F", 25, "\u8A7A", 6, "\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"],
      ["d540", "\u8A81", 7, "\u8A8B", 7, "\u8A94", 46],
      ["d580", "\u8AC3", 32, "\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"],
      ["d640", "\u8AE4", 34, "\u8B08", 27],
      ["d680", "\u8B24\u8B25\u8B27", 30, "\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"],
      ["d740", "\u8B46", 31, "\u8B67", 4, "\u8B6D", 25],
      ["d780", "\u8B87", 24, "\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"],
      ["d840", "\u8C38", 8, "\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D", 7, "\u8C56\u8C57\u8C58\u8C59\u8C5B", 5, "\u8C63", 6, "\u8C6C", 6, "\u8C74\u8C75\u8C76\u8C77\u8C7B", 6, "\u8C83\u8C84\u8C86\u8C87"],
      ["d880", "\u8C88\u8C8B\u8C8D", 6, "\u8C95\u8C96\u8C97\u8C99", 20, "\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"],
      ["d940", "\u8CAE", 62],
      ["d980", "\u8CED", 32, "\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"],
      ["da40", "\u8D0E", 14, "\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78", 8, "\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C", 4, "\u8D92\u8D93\u8D95", 9, "\u8DA0\u8DA1"],
      ["da80", "\u8DA2\u8DA4", 12, "\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"],
      ["db40", "\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE", 6, "\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15", 7, "\u8E20\u8E21\u8E24", 4, "\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"],
      ["db80", "\u8E3F\u8E43\u8E45\u8E46\u8E4C", 4, "\u8E53", 5, "\u8E5A", 11, "\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"],
      ["dc40", "\u8E73\u8E75\u8E77", 4, "\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88", 6, "\u8E91\u8E92\u8E93\u8E95", 6, "\u8E9D\u8E9F", 11, "\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3", 6, "\u8EBB", 7],
      ["dc80", "\u8EC3", 10, "\u8ECF", 21, "\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"],
      ["dd40", "\u8EE5", 62],
      ["dd80", "\u8F24", 32, "\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"],
      ["de40", "\u8F45", 32, "\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"],
      ["de80", "\u8FC9", 4, "\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"],
      ["df40", "\u9019\u901C\u9023\u9024\u9025\u9027", 5, "\u9030", 4, "\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048", 4, "\u904E\u9054\u9055\u9056\u9059\u905A\u905C", 5, "\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F", 4, "\u9076", 6, "\u907E\u9081"],
      ["df80", "\u9084\u9085\u9086\u9087\u9089\u908A\u908C", 4, "\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"],
      ["e040", "\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105", 19, "\u911A\u911B\u911C"],
      ["e080", "\u911D\u911F\u9120\u9121\u9124", 10, "\u9130\u9132", 6, "\u913A", 8, "\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"],
      ["e140", "\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180", 4, "\u9186\u9188\u918A\u918E\u918F\u9193", 6, "\u919C", 5, "\u91A4", 5, "\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"],
      ["e180", "\u91BC", 10, "\u91C8\u91CB\u91D0\u91D2", 9, "\u91DD", 8, "\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"],
      ["e240", "\u91E6", 62],
      ["e280", "\u9225", 32, "\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967", 5, "\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"],
      ["e340", "\u9246", 45, "\u9275", 16],
      ["e380", "\u9286", 7, "\u928F", 24, "\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"],
      ["e440", "\u92A8", 5, "\u92AF", 24, "\u92C9", 31],
      ["e480", "\u92E9", 32, "\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"],
      ["e540", "\u930A", 51, "\u933F", 10],
      ["e580", "\u934A", 31, "\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"],
      ["e640", "\u936C", 34, "\u9390", 27],
      ["e680", "\u93AC", 29, "\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"],
      ["e740", "\u93CE", 7, "\u93D7", 54],
      ["e780", "\u940E", 32, "\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21", 6, "\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F", 4, "\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"],
      ["e840", "\u942F", 14, "\u943F", 43, "\u946C\u946D\u946E\u946F"],
      ["e880", "\u9470", 20, "\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"],
      ["e940", "\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577", 7, "\u9580", 42],
      ["e980", "\u95AB", 32, "\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"],
      ["ea40", "\u95CC", 27, "\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623", 6, "\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"],
      ["ea80", "\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D", 4, "\u9673\u9678", 12, "\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"],
      ["eb40", "\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D", 9, "\u96A8", 7, "\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6", 9, "\u96E1", 6, "\u96EB"],
      ["eb80", "\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717", 4, "\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"],
      ["ec40", "\u9721", 8, "\u972B\u972C\u972E\u972F\u9731\u9733", 4, "\u973A\u973B\u973C\u973D\u973F", 18, "\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A", 7],
      ["ec80", "\u9772\u9775\u9777", 4, "\u977D", 7, "\u9786", 4, "\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799", 4, "\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"],
      ["ed40", "\u979E\u979F\u97A1\u97A2\u97A4", 6, "\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5", 46],
      ["ed80", "\u97E4\u97E5\u97E8\u97EE", 4, "\u97F4\u97F7", 23, "\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"],
      ["ee40", "\u980F", 62],
      ["ee80", "\u984E", 32, "\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6", 4, "\u94BC\u94BD\u94BF\u94C4\u94C8", 6, "\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"],
      ["ef40", "\u986F", 5, "\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8", 37, "\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0", 4],
      ["ef80", "\u98E5\u98E6\u98E9", 30, "\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512", 4, "\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564", 8, "\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"],
      ["f040", "\u9908", 4, "\u990E\u990F\u9911", 28, "\u992F", 26],
      ["f080", "\u994A", 9, "\u9956", 12, "\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28", 4, "\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66", 6, "\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"],
      ["f140", "\u998C\u998E\u999A", 10, "\u99A6\u99A7\u99A9", 47],
      ["f180", "\u99D9", 32, "\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"],
      ["f240", "\u99FA", 62],
      ["f280", "\u9A39", 32, "\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"],
      ["f340", "\u9A5A", 17, "\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9", 6, "\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6", 4, "\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"],
      ["f380", "\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0", 8, "\u9AFA\u9AFC", 6, "\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"],
      ["f440", "\u9B07\u9B09", 5, "\u9B10\u9B11\u9B12\u9B14", 10, "\u9B20\u9B21\u9B22\u9B24", 10, "\u9B30\u9B31\u9B33", 7, "\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55", 5],
      ["f480", "\u9B5B", 32, "\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"],
      ["f540", "\u9B7C", 62],
      ["f580", "\u9BBB", 32, "\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"],
      ["f640", "\u9BDC", 62],
      ["f680", "\u9C1B", 32, "\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85", 5, "\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E", 5, "\u9CA5", 4, "\u9CAB\u9CAD\u9CAE\u9CB0", 7, "\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"],
      ["f740", "\u9C3C", 62],
      ["f780", "\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE", 4, "\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC", 4, "\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"],
      ["f840", "\u9CE3", 62],
      ["f880", "\u9D22", 32],
      ["f940", "\u9D43", 62],
      ["f980", "\u9D82", 32],
      ["fa40", "\u9DA3", 62],
      ["fa80", "\u9DE2", 32],
      ["fb40", "\u9E03", 27, "\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74", 9, "\u9E80"],
      ["fb80", "\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C", 5, "\u9E94", 8, "\u9E9E\u9EA0", 5, "\u9EA7\u9EA8\u9EA9\u9EAA"],
      ["fc40", "\u9EAB", 8, "\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF", 4, "\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0", 8, "\u9EFA\u9EFD\u9EFF", 6],
      ["fc80", "\u9F06", 4, "\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A", 5, "\u9F21\u9F23", 8, "\u9F2D\u9F2E\u9F30\u9F31"],
      ["fd40", "\u9F32", 4, "\u9F38\u9F3A\u9F3C\u9F3F", 4, "\u9F45", 10, "\u9F52", 38],
      ["fd80", "\u9F79", 5, "\u9F81\u9F82\u9F8D", 11, "\u9F9C\u9F9D\u9F9E\u9FA1", 4, "\uF92C\uF979\uF995\uF9E7\uF9F1"],
      ["fe40", "\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"]
    ];
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/tables/gbk-added.json
var require_gbk_added2 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/tables/gbk-added.json"(exports2, module2) {
    module2.exports = [
      ["a140", "\uE4C6", 62],
      ["a180", "\uE505", 32],
      ["a240", "\uE526", 62],
      ["a280", "\uE565", 32],
      ["a2ab", "\uE766", 5],
      ["a2e3", "\u20AC\uE76D"],
      ["a2ef", "\uE76E\uE76F"],
      ["a2fd", "\uE770\uE771"],
      ["a340", "\uE586", 62],
      ["a380", "\uE5C5", 31, "\u3000"],
      ["a440", "\uE5E6", 62],
      ["a480", "\uE625", 32],
      ["a4f4", "\uE772", 10],
      ["a540", "\uE646", 62],
      ["a580", "\uE685", 32],
      ["a5f7", "\uE77D", 7],
      ["a640", "\uE6A6", 62],
      ["a680", "\uE6E5", 32],
      ["a6b9", "\uE785", 7],
      ["a6d9", "\uE78D", 6],
      ["a6ec", "\uE794\uE795"],
      ["a6f3", "\uE796"],
      ["a6f6", "\uE797", 8],
      ["a740", "\uE706", 62],
      ["a780", "\uE745", 32],
      ["a7c2", "\uE7A0", 14],
      ["a7f2", "\uE7AF", 12],
      ["a896", "\uE7BC", 10],
      ["a8bc", "\u1E3F"],
      ["a8bf", "\u01F9"],
      ["a8c1", "\uE7C9\uE7CA\uE7CB\uE7CC"],
      ["a8ea", "\uE7CD", 20],
      ["a958", "\uE7E2"],
      ["a95b", "\uE7E3"],
      ["a95d", "\uE7E4\uE7E5\uE7E6"],
      ["a989", "\u303E\u2FF0", 11],
      ["a997", "\uE7F4", 12],
      ["a9f0", "\uE801", 14],
      ["aaa1", "\uE000", 93],
      ["aba1", "\uE05E", 93],
      ["aca1", "\uE0BC", 93],
      ["ada1", "\uE11A", 93],
      ["aea1", "\uE178", 93],
      ["afa1", "\uE1D6", 93],
      ["d7fa", "\uE810", 4],
      ["f8a1", "\uE234", 93],
      ["f9a1", "\uE292", 93],
      ["faa1", "\uE2F0", 93],
      ["fba1", "\uE34E", 93],
      ["fca1", "\uE3AC", 93],
      ["fda1", "\uE40A", 93],
      ["fe50", "\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"],
      ["fe80", "\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13", 6, "\u4DAE\uE864\uE468", 93],
      ["8135f437", "\uE7C7"]
    ];
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json
var require_gb18030_ranges2 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json"(exports2, module2) {
    module2.exports = { uChars: [128, 165, 169, 178, 184, 216, 226, 235, 238, 244, 248, 251, 253, 258, 276, 284, 300, 325, 329, 334, 364, 463, 465, 467, 469, 471, 473, 475, 477, 506, 594, 610, 712, 716, 730, 930, 938, 962, 970, 1026, 1104, 1106, 8209, 8215, 8218, 8222, 8231, 8241, 8244, 8246, 8252, 8365, 8452, 8454, 8458, 8471, 8482, 8556, 8570, 8596, 8602, 8713, 8720, 8722, 8726, 8731, 8737, 8740, 8742, 8748, 8751, 8760, 8766, 8777, 8781, 8787, 8802, 8808, 8816, 8854, 8858, 8870, 8896, 8979, 9322, 9372, 9548, 9588, 9616, 9622, 9634, 9652, 9662, 9672, 9676, 9680, 9702, 9735, 9738, 9793, 9795, 11906, 11909, 11913, 11917, 11928, 11944, 11947, 11951, 11956, 11960, 11964, 11979, 12284, 12292, 12312, 12319, 12330, 12351, 12436, 12447, 12535, 12543, 12586, 12842, 12850, 12964, 13200, 13215, 13218, 13253, 13263, 13267, 13270, 13384, 13428, 13727, 13839, 13851, 14617, 14703, 14801, 14816, 14964, 15183, 15471, 15585, 16471, 16736, 17208, 17325, 17330, 17374, 17623, 17997, 18018, 18212, 18218, 18301, 18318, 18760, 18811, 18814, 18820, 18823, 18844, 18848, 18872, 19576, 19620, 19738, 19887, 40870, 59244, 59336, 59367, 59413, 59417, 59423, 59431, 59437, 59443, 59452, 59460, 59478, 59493, 63789, 63866, 63894, 63976, 63986, 64016, 64018, 64021, 64025, 64034, 64037, 64042, 65074, 65093, 65107, 65112, 65127, 65132, 65375, 65510, 65536], gbChars: [0, 36, 38, 45, 50, 81, 89, 95, 96, 100, 103, 104, 105, 109, 126, 133, 148, 172, 175, 179, 208, 306, 307, 308, 309, 310, 311, 312, 313, 341, 428, 443, 544, 545, 558, 741, 742, 749, 750, 805, 819, 820, 7922, 7924, 7925, 7927, 7934, 7943, 7944, 7945, 7950, 8062, 8148, 8149, 8152, 8164, 8174, 8236, 8240, 8262, 8264, 8374, 8380, 8381, 8384, 8388, 8390, 8392, 8393, 8394, 8396, 8401, 8406, 8416, 8419, 8424, 8437, 8439, 8445, 8482, 8485, 8496, 8521, 8603, 8936, 8946, 9046, 9050, 9063, 9066, 9076, 9092, 9100, 9108, 9111, 9113, 9131, 9162, 9164, 9218, 9219, 11329, 11331, 11334, 11336, 11346, 11361, 11363, 11366, 11370, 11372, 11375, 11389, 11682, 11686, 11687, 11692, 11694, 11714, 11716, 11723, 11725, 11730, 11736, 11982, 11989, 12102, 12336, 12348, 12350, 12384, 12393, 12395, 12397, 12510, 12553, 12851, 12962, 12973, 13738, 13823, 13919, 13933, 14080, 14298, 14585, 14698, 15583, 15847, 16318, 16434, 16438, 16481, 16729, 17102, 17122, 17315, 17320, 17402, 17418, 17859, 17909, 17911, 17915, 17916, 17936, 17939, 17961, 18664, 18703, 18814, 18962, 19043, 33469, 33470, 33471, 33484, 33485, 33490, 33497, 33501, 33505, 33513, 33520, 33536, 33550, 37845, 37921, 37948, 38029, 38038, 38064, 38065, 38066, 38069, 38075, 38076, 38078, 39108, 39109, 39113, 39114, 39115, 39116, 39265, 39394, 189e3] };
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/tables/cp949.json
var require_cp9492 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/tables/cp949.json"(exports2, module2) {
    module2.exports = [
      ["0", "\0", 127],
      ["8141", "\uAC02\uAC03\uAC05\uAC06\uAC0B", 4, "\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25", 6, "\uAC2E\uAC32\uAC33\uAC34"],
      ["8161", "\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41", 9, "\uAC4C\uAC4E", 5, "\uAC55"],
      ["8181", "\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D", 18, "\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B", 4, "\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95", 6, "\uAC9E\uACA2", 5, "\uACAB\uACAD\uACAE\uACB1", 6, "\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD", 7, "\uACD6\uACD8", 7, "\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7", 4, "\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07", 4, "\uAD0E\uAD10\uAD12\uAD13"],
      ["8241", "\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21", 7, "\uAD2A\uAD2B\uAD2E", 5],
      ["8261", "\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D", 6, "\uAD46\uAD48\uAD4A", 5, "\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"],
      ["8281", "\uAD59", 7, "\uAD62\uAD64", 7, "\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83", 4, "\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91", 10, "\uAD9E", 5, "\uADA5", 17, "\uADB8", 7, "\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9", 6, "\uADD2\uADD4", 7, "\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5", 18],
      ["8341", "\uADFA\uADFB\uADFD\uADFE\uAE02", 5, "\uAE0A\uAE0C\uAE0E", 5, "\uAE15", 7],
      ["8361", "\uAE1D", 18, "\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"],
      ["8381", "\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57", 4, "\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71", 6, "\uAE7A\uAE7E", 5, "\uAE86", 5, "\uAE8D", 46, "\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5", 6, "\uAECE\uAED2", 5, "\uAEDA\uAEDB\uAEDD", 8],
      ["8441", "\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE", 5, "\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD", 8],
      ["8461", "\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11", 18],
      ["8481", "\uAF24", 7, "\uAF2E\uAF2F\uAF31\uAF33\uAF35", 6, "\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A", 5, "\uAF51", 10, "\uAF5E", 5, "\uAF66", 18, "\uAF7A", 5, "\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89", 6, "\uAF92\uAF93\uAF94\uAF96", 5, "\uAF9D", 26, "\uAFBA\uAFBB\uAFBD\uAFBE"],
      ["8541", "\uAFBF\uAFC1", 5, "\uAFCA\uAFCC\uAFCF", 4, "\uAFD5", 6, "\uAFDD", 4],
      ["8561", "\uAFE2", 5, "\uAFEA", 5, "\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9", 6, "\uB002\uB003"],
      ["8581", "\uB005", 6, "\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015", 6, "\uB01E", 9, "\uB029", 26, "\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E", 29, "\uB07E\uB07F\uB081\uB082\uB083\uB085", 6, "\uB08E\uB090\uB092", 5, "\uB09B\uB09D\uB09E\uB0A3\uB0A4"],
      ["8641", "\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD", 6, "\uB0C6\uB0CA", 5, "\uB0D2"],
      ["8661", "\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9", 6, "\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6", 10],
      ["8681", "\uB0F1", 22, "\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E", 4, "\uB126\uB127\uB129\uB12A\uB12B\uB12D", 6, "\uB136\uB13A", 5, "\uB142\uB143\uB145\uB146\uB147\uB149", 6, "\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161", 22, "\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183", 4, "\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"],
      ["8741", "\uB19E", 9, "\uB1A9", 15],
      ["8761", "\uB1B9", 18, "\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"],
      ["8781", "\uB1D6", 5, "\uB1DE\uB1E0", 7, "\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1", 7, "\uB1FA\uB1FC\uB1FE", 5, "\uB206\uB207\uB209\uB20A\uB20D", 6, "\uB216\uB218\uB21A", 5, "\uB221", 18, "\uB235", 6, "\uB23D", 26, "\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261", 6, "\uB26A", 4],
      ["8841", "\uB26F", 4, "\uB276", 5, "\uB27D", 6, "\uB286\uB287\uB288\uB28A", 4],
      ["8861", "\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B", 4, "\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"],
      ["8881", "\uB2B8", 15, "\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3", 4, "\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309", 6, "\uB312\uB316", 5, "\uB31D", 54, "\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"],
      ["8941", "\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379", 6, "\uB382\uB386", 5, "\uB38D"],
      ["8961", "\uB38E\uB38F\uB391\uB392\uB393\uB395", 10, "\uB3A2", 5, "\uB3A9\uB3AA\uB3AB\uB3AD"],
      ["8981", "\uB3AE", 21, "\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9", 18, "\uB3FD", 18, "\uB411", 6, "\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421", 6, "\uB42A\uB42C", 7, "\uB435", 15],
      ["8a41", "\uB445", 10, "\uB452\uB453\uB455\uB456\uB457\uB459", 6, "\uB462\uB464\uB466"],
      ["8a61", "\uB467", 4, "\uB46D", 18, "\uB481\uB482"],
      ["8a81", "\uB483", 4, "\uB489", 19, "\uB49E", 5, "\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD", 7, "\uB4B6\uB4B8\uB4BA", 5, "\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9", 6, "\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6", 5, "\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7", 4, "\uB4EE\uB4F0\uB4F2", 5, "\uB4F9", 26, "\uB516\uB517\uB519\uB51A\uB51D"],
      ["8b41", "\uB51E", 5, "\uB526\uB52B", 4, "\uB532\uB533\uB535\uB536\uB537\uB539", 6, "\uB542\uB546"],
      ["8b61", "\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555", 6, "\uB55E\uB562", 8],
      ["8b81", "\uB56B", 52, "\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6", 4, "\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5", 6, "\uB5CE\uB5D2", 5, "\uB5D9", 18, "\uB5ED", 18],
      ["8c41", "\uB600", 15, "\uB612\uB613\uB615\uB616\uB617\uB619", 4],
      ["8c61", "\uB61E", 6, "\uB626", 5, "\uB62D", 6, "\uB635", 5],
      ["8c81", "\uB63B", 12, "\uB649", 26, "\uB665\uB666\uB667\uB669", 50, "\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5", 5, "\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2", 16],
      ["8d41", "\uB6C3", 16, "\uB6D5", 8],
      ["8d61", "\uB6DE", 17, "\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"],
      ["8d81", "\uB6FB", 4, "\uB702\uB703\uB704\uB706", 33, "\uB72A\uB72B\uB72D\uB72E\uB731", 6, "\uB73A\uB73C", 7, "\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D", 6, "\uB756", 9, "\uB761\uB762\uB763\uB765\uB766\uB767\uB769", 6, "\uB772\uB774\uB776", 5, "\uB77E\uB77F\uB781\uB782\uB783\uB785", 6, "\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"],
      ["8e41", "\uB79F\uB7A1", 6, "\uB7AA\uB7AE", 5, "\uB7B6\uB7B7\uB7B9", 8],
      ["8e61", "\uB7C2", 4, "\uB7C8\uB7CA", 19],
      ["8e81", "\uB7DE", 13, "\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5", 6, "\uB7FE\uB802", 4, "\uB80A\uB80B\uB80D\uB80E\uB80F\uB811", 6, "\uB81A\uB81C\uB81E", 5, "\uB826\uB827\uB829\uB82A\uB82B\uB82D", 6, "\uB836\uB83A", 5, "\uB841\uB842\uB843\uB845", 11, "\uB852\uB854", 7, "\uB85E\uB85F\uB861\uB862\uB863\uB865", 6, "\uB86E\uB870\uB872", 5, "\uB879\uB87A\uB87B\uB87D", 7],
      ["8f41", "\uB885", 7, "\uB88E", 17],
      ["8f61", "\uB8A0", 7, "\uB8A9", 6, "\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9", 4],
      ["8f81", "\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6", 5, "\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5", 7, "\uB8DE\uB8E0\uB8E2", 5, "\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1", 6, "\uB8FA\uB8FC\uB8FE", 5, "\uB905", 18, "\uB919", 6, "\uB921", 26, "\uB93E\uB93F\uB941\uB942\uB943\uB945", 6, "\uB94D\uB94E\uB950\uB952", 5],
      ["9041", "\uB95A\uB95B\uB95D\uB95E\uB95F\uB961", 6, "\uB96A\uB96C\uB96E", 5, "\uB976\uB977\uB979\uB97A\uB97B\uB97D"],
      ["9061", "\uB97E", 5, "\uB986\uB988\uB98B\uB98C\uB98F", 15],
      ["9081", "\uB99F", 12, "\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5", 6, "\uB9BE\uB9C0\uB9C2", 5, "\uB9CA\uB9CB\uB9CD\uB9D3", 4, "\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED", 6, "\uB9F6\uB9FB", 4, "\uBA02", 5, "\uBA09", 11, "\uBA16", 33, "\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"],
      ["9141", "\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D", 6, "\uBA66\uBA6A", 5],
      ["9161", "\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79", 9, "\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D", 5],
      ["9181", "\uBA93", 20, "\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3", 4, "\uBABA\uBABC\uBABE", 5, "\uBAC5\uBAC6\uBAC7\uBAC9", 14, "\uBADA", 33, "\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05", 7, "\uBB0E\uBB10\uBB12", 5, "\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21", 6],
      ["9241", "\uBB28\uBB2A\uBB2C", 7, "\uBB37\uBB39\uBB3A\uBB3F", 4, "\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"],
      ["9261", "\uBB53\uBB55\uBB56\uBB57\uBB59", 7, "\uBB62\uBB64", 7, "\uBB6D", 4],
      ["9281", "\uBB72", 21, "\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91", 18, "\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD", 6, "\uBBB5\uBBB6\uBBB8", 7, "\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9", 6, "\uBBD1\uBBD2\uBBD4", 35, "\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"],
      ["9341", "\uBC03", 4, "\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"],
      ["9361", "\uBC36\uBC37\uBC39", 6, "\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51", 8],
      ["9381", "\uBC5A\uBC5B\uBC5C\uBC5E", 37, "\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F", 4, "\uBC96\uBC98\uBC9B", 4, "\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9", 6, "\uBCB2\uBCB6", 5, "\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5", 7, "\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD", 22, "\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"],
      ["9441", "\uBCFE", 5, "\uBD06\uBD08\uBD0A", 5, "\uBD11\uBD12\uBD13\uBD15", 8],
      ["9461", "\uBD1E", 5, "\uBD25", 6, "\uBD2D", 12],
      ["9481", "\uBD3A", 5, "\uBD41", 6, "\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51", 6, "\uBD5A", 9, "\uBD65\uBD66\uBD67\uBD69", 22, "\uBD82\uBD83\uBD85\uBD86\uBD8B", 4, "\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D", 6, "\uBDA5", 10, "\uBDB1", 6, "\uBDB9", 24],
      ["9541", "\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD", 11, "\uBDEA", 5, "\uBDF1"],
      ["9561", "\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9", 6, "\uBE01\uBE02\uBE04\uBE06", 5, "\uBE0E\uBE0F\uBE11\uBE12\uBE13"],
      ["9581", "\uBE15", 6, "\uBE1E\uBE20", 35, "\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F", 4, "\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B", 4, "\uBE72\uBE76", 4, "\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85", 6, "\uBE8E\uBE92", 5, "\uBE9A", 13, "\uBEA9", 14],
      ["9641", "\uBEB8", 23, "\uBED2\uBED3"],
      ["9661", "\uBED5\uBED6\uBED9", 6, "\uBEE1\uBEE2\uBEE6", 5, "\uBEED", 8],
      ["9681", "\uBEF6", 10, "\uBF02", 5, "\uBF0A", 13, "\uBF1A\uBF1E", 33, "\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49", 6, "\uBF52\uBF53\uBF54\uBF56", 44],
      ["9741", "\uBF83", 16, "\uBF95", 8],
      ["9761", "\uBF9E", 17, "\uBFB1", 7],
      ["9781", "\uBFB9", 11, "\uBFC6", 5, "\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5", 6, "\uBFDD\uBFDE\uBFE0\uBFE2", 89, "\uC03D\uC03E\uC03F"],
      ["9841", "\uC040", 16, "\uC052", 5, "\uC059\uC05A\uC05B"],
      ["9861", "\uC05D\uC05E\uC05F\uC061", 6, "\uC06A", 15],
      ["9881", "\uC07A", 21, "\uC092\uC093\uC095\uC096\uC097\uC099", 6, "\uC0A2\uC0A4\uC0A6", 5, "\uC0AE\uC0B1\uC0B2\uC0B7", 4, "\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1", 6, "\uC0DA\uC0DE", 5, "\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED", 6, "\uC0F6\uC0F8\uC0FA", 5, "\uC101\uC102\uC103\uC105\uC106\uC107\uC109", 6, "\uC111\uC112\uC113\uC114\uC116", 5, "\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"],
      ["9941", "\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141", 6, "\uC14A\uC14E", 5, "\uC156\uC157"],
      ["9961", "\uC159\uC15A\uC15B\uC15D", 6, "\uC166\uC16A", 5, "\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"],
      ["9981", "\uC17C", 8, "\uC186", 5, "\uC18F\uC191\uC192\uC193\uC195\uC197", 4, "\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1", 11, "\uC1BE", 5, "\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD", 6, "\uC1D5\uC1D6\uC1D9", 6, "\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9", 6, "\uC1F2\uC1F4", 7, "\uC1FE\uC1FF\uC201\uC202\uC203\uC205", 6, "\uC20E\uC210\uC212", 5, "\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"],
      ["9a41", "\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235", 16],
      ["9a61", "\uC246\uC247\uC249", 6, "\uC252\uC253\uC255\uC256\uC257\uC259", 6, "\uC261\uC262\uC263\uC264\uC266"],
      ["9a81", "\uC267", 4, "\uC26E\uC26F\uC271\uC272\uC273\uC275", 6, "\uC27E\uC280\uC282", 5, "\uC28A", 5, "\uC291", 6, "\uC299\uC29A\uC29C\uC29E", 5, "\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE", 5, "\uC2B6\uC2B8\uC2BA", 33, "\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5", 5, "\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301", 6, "\uC30A\uC30B\uC30E\uC30F"],
      ["9b41", "\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D", 6, "\uC326\uC327\uC32A", 8],
      ["9b61", "\uC333", 17, "\uC346", 7],
      ["9b81", "\uC34E", 25, "\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373", 4, "\uC37A\uC37B\uC37E", 5, "\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D", 50, "\uC3C1", 22, "\uC3DA"],
      ["9c41", "\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3", 4, "\uC3EA\uC3EB\uC3EC\uC3EE", 5, "\uC3F6\uC3F7\uC3F9", 5],
      ["9c61", "\uC3FF", 8, "\uC409", 6, "\uC411", 9],
      ["9c81", "\uC41B", 8, "\uC425", 6, "\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435", 6, "\uC43E", 9, "\uC449", 26, "\uC466\uC467\uC469\uC46A\uC46B\uC46D", 6, "\uC476\uC477\uC478\uC47A", 5, "\uC481", 18, "\uC495", 6, "\uC49D", 12],
      ["9d41", "\uC4AA", 13, "\uC4B9\uC4BA\uC4BB\uC4BD", 8],
      ["9d61", "\uC4C6", 25],
      ["9d81", "\uC4E0", 8, "\uC4EA", 5, "\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502", 9, "\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515", 6, "\uC51D", 10, "\uC52A\uC52B\uC52D\uC52E\uC52F\uC531", 6, "\uC53A\uC53C\uC53E", 5, "\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569", 6, "\uC572\uC576", 5, "\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"],
      ["9e41", "\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1", 7, "\uC5AA", 9, "\uC5B6"],
      ["9e61", "\uC5B7\uC5BA\uC5BF", 4, "\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9", 6, "\uC5E2\uC5E4\uC5E6\uC5E7"],
      ["9e81", "\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611", 6, "\uC61A\uC61D", 6, "\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649", 6, "\uC652\uC656", 5, "\uC65E\uC65F\uC661", 10, "\uC66D\uC66E\uC670\uC672", 5, "\uC67A\uC67B\uC67D\uC67E\uC67F\uC681", 6, "\uC68A\uC68C\uC68E", 5, "\uC696\uC697\uC699\uC69A\uC69B\uC69D", 6, "\uC6A6"],
      ["9f41", "\uC6A8\uC6AA", 5, "\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB", 4, "\uC6C2\uC6C4\uC6C6", 5, "\uC6CE"],
      ["9f61", "\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5", 6, "\uC6DE\uC6DF\uC6E2", 5, "\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"],
      ["9f81", "\uC6F3", 4, "\uC6FA\uC6FB\uC6FC\uC6FE", 5, "\uC706\uC707\uC709\uC70A\uC70B\uC70D", 6, "\uC716\uC718\uC71A", 5, "\uC722\uC723\uC725\uC726\uC727\uC729", 6, "\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745", 4, "\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761", 6, "\uC769\uC76A\uC76C", 7, "\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B", 4, "\uC7A2\uC7A7", 4, "\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"],
      ["a041", "\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2", 5, "\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1", 6, "\uC7D9\uC7DA\uC7DB\uC7DC"],
      ["a061", "\uC7DE", 5, "\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED", 13],
      ["a081", "\uC7FB", 4, "\uC802\uC803\uC805\uC806\uC807\uC809\uC80B", 4, "\uC812\uC814\uC817", 4, "\uC81E\uC81F\uC821\uC822\uC823\uC825", 6, "\uC82E\uC830\uC832", 5, "\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841", 6, "\uC84A\uC84B\uC84E", 5, "\uC855", 26, "\uC872\uC873\uC875\uC876\uC877\uC879\uC87B", 4, "\uC882\uC884\uC888\uC889\uC88A\uC88E", 5, "\uC895", 7, "\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"],
      ["a141", "\uC8A5\uC8A6\uC8A7\uC8A9", 18, "\uC8BE\uC8BF\uC8C0\uC8C1"],
      ["a161", "\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD", 6, "\uC8D6\uC8D8\uC8DA", 5, "\uC8E2\uC8E3\uC8E5"],
      ["a181", "\uC8E6", 14, "\uC8F6", 5, "\uC8FE\uC8FF\uC901\uC902\uC903\uC907", 4, "\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 9, "\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"],
      ["a241", "\uC910\uC912", 5, "\uC919", 18],
      ["a261", "\uC92D", 6, "\uC935", 18],
      ["a281", "\uC948", 7, "\uC952\uC953\uC955\uC956\uC957\uC959", 6, "\uC962\uC964", 7, "\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"],
      ["a341", "\uC971\uC972\uC973\uC975", 6, "\uC97D", 10, "\uC98A\uC98B\uC98D\uC98E\uC98F"],
      ["a361", "\uC991", 6, "\uC99A\uC99C\uC99E", 16],
      ["a381", "\uC9AF", 16, "\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB", 4, "\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01", 58, "\uFFE6\uFF3D", 32, "\uFFE3"],
      ["a441", "\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2", 5, "\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"],
      ["a461", "\uCA05\uCA06\uCA07\uCA0A\uCA0E", 5, "\uCA15\uCA16\uCA17\uCA19", 12],
      ["a481", "\uCA26\uCA27\uCA28\uCA2A", 28, "\u3131", 93],
      ["a541", "\uCA47", 4, "\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55", 6, "\uCA5E\uCA62", 5, "\uCA69\uCA6A"],
      ["a561", "\uCA6B", 17, "\uCA7E", 5, "\uCA85\uCA86"],
      ["a581", "\uCA87", 16, "\uCA99", 14, "\u2170", 9],
      ["a5b0", "\u2160", 9],
      ["a5c1", "\u0391", 16, "\u03A3", 6],
      ["a5e1", "\u03B1", 16, "\u03C3", 6],
      ["a641", "\uCAA8", 19, "\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"],
      ["a661", "\uCAC6", 5, "\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA", 5, "\uCAE1", 6],
      ["a681", "\uCAE8\uCAE9\uCAEA\uCAEB\uCAED", 6, "\uCAF5", 18, "\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543", 7],
      ["a741", "\uCB0B", 4, "\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19", 6, "\uCB22", 7],
      ["a761", "\uCB2A", 22, "\uCB42\uCB43\uCB44"],
      ["a781", "\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51", 6, "\uCB5A\uCB5B\uCB5C\uCB5E", 5, "\uCB65", 7, "\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399", 9, "\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0", 9, "\u3380", 4, "\u33BA", 5, "\u3390", 4, "\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"],
      ["a841", "\uCB6D", 10, "\uCB7A", 14],
      ["a861", "\uCB89", 18, "\uCB9D", 6],
      ["a881", "\uCBA4", 19, "\uCBB9", 11, "\xC6\xD0\xAA\u0126"],
      ["a8a6", "\u0132"],
      ["a8a8", "\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"],
      ["a8b1", "\u3260", 27, "\u24D0", 25, "\u2460", 14, "\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"],
      ["a941", "\uCBC5", 14, "\uCBD5", 10],
      ["a961", "\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA", 18],
      ["a981", "\uCBFD", 14, "\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15", 6, "\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200", 27, "\u249C", 25, "\u2474", 14, "\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"],
      ["aa41", "\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31", 6, "\uCC3A\uCC3F", 4, "\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"],
      ["aa61", "\uCC4F", 4, "\uCC56\uCC5A", 5, "\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69", 6, "\uCC71\uCC72"],
      ["aa81", "\uCC73\uCC74\uCC76", 29, "\u3041", 82],
      ["ab41", "\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1", 6, "\uCCAA\uCCAE", 5, "\uCCB6\uCCB7\uCCB9"],
      ["ab61", "\uCCBA\uCCBB\uCCBD", 6, "\uCCC6\uCCC8\uCCCA", 5, "\uCCD1\uCCD2\uCCD3\uCCD5", 5],
      ["ab81", "\uCCDB", 8, "\uCCE5", 6, "\uCCED\uCCEE\uCCEF\uCCF1", 12, "\u30A1", 85],
      ["ac41", "\uCCFE\uCCFF\uCD00\uCD02", 5, "\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11", 6, "\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"],
      ["ac61", "\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D", 11, "\uCD3A", 4],
      ["ac81", "\uCD3F", 28, "\uCD5D\uCD5E\uCD5F\u0410", 5, "\u0401\u0416", 25],
      ["acd1", "\u0430", 5, "\u0451\u0436", 25],
      ["ad41", "\uCD61\uCD62\uCD63\uCD65", 6, "\uCD6E\uCD70\uCD72", 5, "\uCD79", 7],
      ["ad61", "\uCD81", 6, "\uCD89", 10, "\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"],
      ["ad81", "\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA", 5, "\uCDB1", 18, "\uCDC5"],
      ["ae41", "\uCDC6", 5, "\uCDCD\uCDCE\uCDCF\uCDD1", 16],
      ["ae61", "\uCDE2", 5, "\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1", 6, "\uCDFA\uCDFC\uCDFE", 4],
      ["ae81", "\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D", 6, "\uCE15\uCE16\uCE17\uCE18\uCE1A", 5, "\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"],
      ["af41", "\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36", 19],
      ["af61", "\uCE4A", 13, "\uCE5A\uCE5B\uCE5D\uCE5E\uCE62", 5, "\uCE6A\uCE6C"],
      ["af81", "\uCE6E", 5, "\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D", 6, "\uCE86\uCE88\uCE8A", 5, "\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"],
      ["b041", "\uCE9A", 5, "\uCEA2\uCEA6", 5, "\uCEAE", 12],
      ["b061", "\uCEBB", 5, "\uCEC2", 19],
      ["b081", "\uCED6", 13, "\uCEE6\uCEE7\uCEE9\uCEEA\uCEED", 6, "\uCEF6\uCEFA", 5, "\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10", 7, "\uAC19", 4, "\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"],
      ["b141", "\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09", 6, "\uCF12\uCF14\uCF16", 5, "\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"],
      ["b161", "\uCF25", 6, "\uCF2E\uCF32", 5, "\uCF39", 11],
      ["b181", "\uCF45", 14, "\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D", 6, "\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"],
      ["b241", "\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79", 6, "\uCF81\uCF82\uCF83\uCF84\uCF86", 5, "\uCF8D"],
      ["b261", "\uCF8E", 18, "\uCFA2", 5, "\uCFA9"],
      ["b281", "\uCFAA", 5, "\uCFB1", 18, "\uCFC5", 6, "\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"],
      ["b341", "\uCFCC", 19, "\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"],
      ["b361", "\uCFEA", 5, "\uCFF2\uCFF4\uCFF6", 5, "\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005", 5],
      ["b381", "\uD00B", 5, "\uD012", 5, "\uD019", 19, "\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB", 4, "\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"],
      ["b441", "\uD02E", 5, "\uD036\uD037\uD039\uD03A\uD03B\uD03D", 6, "\uD046\uD048\uD04A", 5],
      ["b461", "\uD051\uD052\uD053\uD055\uD056\uD057\uD059", 6, "\uD061", 10, "\uD06E\uD06F"],
      ["b481", "\uD071\uD072\uD073\uD075", 6, "\uD07E\uD07F\uD080\uD082", 18, "\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB", 4, "\uB2F3\uB2F4\uB2F5\uB2F7", 4, "\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"],
      ["b541", "\uD095", 14, "\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD", 5],
      ["b561", "\uD0B3\uD0B6\uD0B8\uD0BA", 5, "\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA", 5, "\uD0D2\uD0D6", 4],
      ["b581", "\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5", 6, "\uD0EE\uD0F2", 5, "\uD0F9", 11, "\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"],
      ["b641", "\uD105", 7, "\uD10E", 17],
      ["b661", "\uD120", 15, "\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"],
      ["b681", "\uD13F\uD142\uD146", 5, "\uD14E\uD14F\uD151\uD152\uD153\uD155", 6, "\uD15E\uD160\uD162", 5, "\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"],
      ["b741", "\uD16E", 13, "\uD17D", 6, "\uD185\uD186\uD187\uD189\uD18A"],
      ["b761", "\uD18B", 20, "\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"],
      ["b781", "\uD1A9", 6, "\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1", 14, "\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"],
      ["b841", "\uD1D0", 7, "\uD1D9", 17],
      ["b861", "\uD1EB", 8, "\uD1F5\uD1F6\uD1F7\uD1F9", 13],
      ["b881", "\uD208\uD20A", 5, "\uD211", 24, "\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE", 4, "\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"],
      ["b941", "\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235", 6, "\uD23E\uD240\uD242", 5, "\uD249\uD24A\uD24B\uD24C"],
      ["b961", "\uD24D", 14, "\uD25D", 6, "\uD265\uD266\uD267\uD268"],
      ["b981", "\uD269", 22, "\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14", 4, "\uBC1B", 4, "\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"],
      ["ba41", "\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296", 5, "\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5", 6, "\uD2AD"],
      ["ba61", "\uD2AE\uD2AF\uD2B0\uD2B2", 5, "\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3", 4, "\uD2CA\uD2CC", 5],
      ["ba81", "\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD", 6, "\uD2E6", 9, "\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"],
      ["bb41", "\uD2FB", 4, "\uD302\uD304\uD306", 5, "\uD30F\uD311\uD312\uD313\uD315\uD317", 4, "\uD31E\uD322\uD323"],
      ["bb61", "\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331", 6, "\uD33A\uD33E", 5, "\uD346\uD347\uD348\uD349"],
      ["bb81", "\uD34A", 31, "\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"],
      ["bc41", "\uD36A", 17, "\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"],
      ["bc61", "\uD388\uD389\uD38A\uD38B\uD38E\uD392", 5, "\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1", 6, "\uD3AA\uD3AC\uD3AE"],
      ["bc81", "\uD3AF", 4, "\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD", 6, "\uD3C6\uD3C7\uD3CA", 5, "\uD3D1", 5, "\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C", 4, "\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"],
      ["bd41", "\uD3D7\uD3D9", 7, "\uD3E2\uD3E4", 7, "\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"],
      ["bd61", "\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402", 5, "\uD409", 13],
      ["bd81", "\uD417", 5, "\uD41E", 25, "\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"],
      ["be41", "\uD438", 7, "\uD441\uD442\uD443\uD445", 14],
      ["be61", "\uD454", 7, "\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465", 7, "\uD46E\uD470\uD471\uD472"],
      ["be81", "\uD473", 4, "\uD47A\uD47B\uD47D\uD47E\uD481\uD483", 4, "\uD48A\uD48C\uD48E", 5, "\uD495", 8, "\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4", 6, "\uC5CC\uC5CE"],
      ["bf41", "\uD49E", 10, "\uD4AA", 14],
      ["bf61", "\uD4B9", 18, "\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"],
      ["bf81", "\uD4D6", 5, "\uD4DD\uD4DE\uD4E0", 7, "\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1", 6, "\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC", 5, "\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"],
      ["c041", "\uD4FE", 5, "\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D", 6, "\uD516\uD518", 5],
      ["c061", "\uD51E", 25],
      ["c081", "\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545", 6, "\uD54E\uD550\uD552", 5, "\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751", 7, "\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"],
      ["c141", "\uD564\uD566\uD567\uD56A\uD56C\uD56E", 5, "\uD576\uD577\uD579\uD57A\uD57B\uD57D", 6, "\uD586\uD58A\uD58B"],
      ["c161", "\uD58C\uD58D\uD58E\uD58F\uD591", 19, "\uD5A6\uD5A7"],
      ["c181", "\uD5A8", 31, "\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"],
      ["c241", "\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3", 4, "\uD5DA\uD5DC\uD5DE", 5, "\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"],
      ["c261", "\uD5EF", 4, "\uD5F6\uD5F8\uD5FA", 5, "\uD602\uD603\uD605\uD606\uD607\uD609", 6, "\uD612"],
      ["c281", "\uD616", 5, "\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625", 7, "\uD62E", 9, "\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"],
      ["c341", "\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D", 4],
      ["c361", "\uD662", 4, "\uD668\uD66A", 5, "\uD672\uD673\uD675", 11],
      ["c381", "\uD681\uD682\uD684\uD686", 5, "\uD68E\uD68F\uD691\uD692\uD693\uD695", 7, "\uD69E\uD6A0\uD6A2", 5, "\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"],
      ["c441", "\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1", 7, "\uD6BA\uD6BC", 7, "\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"],
      ["c461", "\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA", 5, "\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9", 4],
      ["c481", "\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6", 5, "\uD6FE\uD6FF\uD701\uD702\uD703\uD705", 11, "\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"],
      ["c541", "\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721", 6, "\uD72A\uD72C\uD72E", 5, "\uD736\uD737\uD739"],
      ["c561", "\uD73A\uD73B\uD73D", 6, "\uD745\uD746\uD748\uD74A", 5, "\uD752\uD753\uD755\uD75A", 4],
      ["c581", "\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775", 6, "\uD77E\uD77F\uD780\uD782", 5, "\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"],
      ["c641", "\uD78D\uD78E\uD78F\uD791", 6, "\uD79A\uD79C\uD79E", 5],
      ["c6a1", "\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"],
      ["c7a1", "\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"],
      ["c8a1", "\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"],
      ["caa1", "\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"],
      ["cba1", "\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"],
      ["cca1", "\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"],
      ["cda1", "\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"],
      ["cea1", "\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"],
      ["cfa1", "\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"],
      ["d0a1", "\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"],
      ["d1a1", "\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E", 5, "\u90A3\uF914", 4, "\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"],
      ["d2a1", "\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928", 4, "\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933", 5, "\u99D1\uF939", 10, "\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A", 7, "\u5AE9\u8A25\u677B\u7D10\uF952", 5, "\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"],
      ["d3a1", "\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"],
      ["d4a1", "\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"],
      ["d5a1", "\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"],
      ["d6a1", "\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"],
      ["d7a1", "\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"],
      ["d8a1", "\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"],
      ["d9a1", "\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"],
      ["daa1", "\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"],
      ["dba1", "\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"],
      ["dca1", "\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"],
      ["dda1", "\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"],
      ["dea1", "\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"],
      ["dfa1", "\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"],
      ["e0a1", "\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"],
      ["e1a1", "\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"],
      ["e2a1", "\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"],
      ["e3a1", "\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"],
      ["e4a1", "\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"],
      ["e5a1", "\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"],
      ["e6a1", "\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"],
      ["e7a1", "\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"],
      ["e8a1", "\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"],
      ["e9a1", "\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"],
      ["eaa1", "\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"],
      ["eba1", "\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"],
      ["eca1", "\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"],
      ["eda1", "\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"],
      ["eea1", "\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"],
      ["efa1", "\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"],
      ["f0a1", "\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"],
      ["f1a1", "\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"],
      ["f2a1", "\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"],
      ["f3a1", "\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"],
      ["f4a1", "\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"],
      ["f5a1", "\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"],
      ["f6a1", "\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"],
      ["f7a1", "\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"],
      ["f8a1", "\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"],
      ["f9a1", "\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"],
      ["faa1", "\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"],
      ["fba1", "\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"],
      ["fca1", "\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"],
      ["fda1", "\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"]
    ];
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/tables/cp950.json
var require_cp9502 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/tables/cp950.json"(exports2, module2) {
    module2.exports = [
      ["0", "\0", 127],
      ["a140", "\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"],
      ["a1a1", "\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62", 4, "\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"],
      ["a240", "\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581", 7, "\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"],
      ["a2a1", "\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10", 9, "\u2160", 9, "\u3021", 8, "\u5341\u5344\u5345\uFF21", 25, "\uFF41", 21],
      ["a340", "\uFF57\uFF58\uFF59\uFF5A\u0391", 16, "\u03A3", 6, "\u03B1", 16, "\u03C3", 6, "\u3105", 10],
      ["a3a1", "\u3110", 25, "\u02D9\u02C9\u02CA\u02C7\u02CB"],
      ["a3e1", "\u20AC"],
      ["a440", "\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"],
      ["a4a1", "\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"],
      ["a540", "\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"],
      ["a5a1", "\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"],
      ["a640", "\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"],
      ["a6a1", "\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"],
      ["a740", "\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"],
      ["a7a1", "\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"],
      ["a840", "\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"],
      ["a8a1", "\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"],
      ["a940", "\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"],
      ["a9a1", "\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"],
      ["aa40", "\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"],
      ["aaa1", "\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"],
      ["ab40", "\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"],
      ["aba1", "\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"],
      ["ac40", "\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"],
      ["aca1", "\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"],
      ["ad40", "\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"],
      ["ada1", "\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"],
      ["ae40", "\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"],
      ["aea1", "\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"],
      ["af40", "\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"],
      ["afa1", "\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"],
      ["b040", "\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"],
      ["b0a1", "\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"],
      ["b140", "\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"],
      ["b1a1", "\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"],
      ["b240", "\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"],
      ["b2a1", "\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"],
      ["b340", "\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"],
      ["b3a1", "\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"],
      ["b440", "\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"],
      ["b4a1", "\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"],
      ["b540", "\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"],
      ["b5a1", "\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"],
      ["b640", "\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"],
      ["b6a1", "\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"],
      ["b740", "\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"],
      ["b7a1", "\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"],
      ["b840", "\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"],
      ["b8a1", "\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"],
      ["b940", "\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"],
      ["b9a1", "\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"],
      ["ba40", "\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"],
      ["baa1", "\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"],
      ["bb40", "\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"],
      ["bba1", "\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"],
      ["bc40", "\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"],
      ["bca1", "\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"],
      ["bd40", "\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"],
      ["bda1", "\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"],
      ["be40", "\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"],
      ["bea1", "\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"],
      ["bf40", "\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"],
      ["bfa1", "\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"],
      ["c040", "\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"],
      ["c0a1", "\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"],
      ["c140", "\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"],
      ["c1a1", "\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"],
      ["c240", "\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"],
      ["c2a1", "\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"],
      ["c340", "\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"],
      ["c3a1", "\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"],
      ["c440", "\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"],
      ["c4a1", "\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"],
      ["c540", "\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"],
      ["c5a1", "\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"],
      ["c640", "\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"],
      ["c940", "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"],
      ["c9a1", "\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"],
      ["ca40", "\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"],
      ["caa1", "\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"],
      ["cb40", "\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"],
      ["cba1", "\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"],
      ["cc40", "\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"],
      ["cca1", "\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"],
      ["cd40", "\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"],
      ["cda1", "\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"],
      ["ce40", "\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"],
      ["cea1", "\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"],
      ["cf40", "\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"],
      ["cfa1", "\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"],
      ["d040", "\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"],
      ["d0a1", "\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"],
      ["d140", "\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"],
      ["d1a1", "\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"],
      ["d240", "\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"],
      ["d2a1", "\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"],
      ["d340", "\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"],
      ["d3a1", "\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"],
      ["d440", "\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"],
      ["d4a1", "\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"],
      ["d540", "\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"],
      ["d5a1", "\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"],
      ["d640", "\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"],
      ["d6a1", "\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"],
      ["d740", "\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"],
      ["d7a1", "\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"],
      ["d840", "\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"],
      ["d8a1", "\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"],
      ["d940", "\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"],
      ["d9a1", "\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"],
      ["da40", "\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"],
      ["daa1", "\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"],
      ["db40", "\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"],
      ["dba1", "\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"],
      ["dc40", "\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"],
      ["dca1", "\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"],
      ["dd40", "\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"],
      ["dda1", "\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"],
      ["de40", "\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"],
      ["dea1", "\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"],
      ["df40", "\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"],
      ["dfa1", "\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"],
      ["e040", "\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"],
      ["e0a1", "\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"],
      ["e140", "\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"],
      ["e1a1", "\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"],
      ["e240", "\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"],
      ["e2a1", "\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"],
      ["e340", "\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"],
      ["e3a1", "\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"],
      ["e440", "\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"],
      ["e4a1", "\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"],
      ["e540", "\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"],
      ["e5a1", "\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"],
      ["e640", "\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"],
      ["e6a1", "\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"],
      ["e740", "\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"],
      ["e7a1", "\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"],
      ["e840", "\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"],
      ["e8a1", "\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"],
      ["e940", "\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"],
      ["e9a1", "\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"],
      ["ea40", "\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"],
      ["eaa1", "\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"],
      ["eb40", "\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"],
      ["eba1", "\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"],
      ["ec40", "\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"],
      ["eca1", "\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"],
      ["ed40", "\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"],
      ["eda1", "\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"],
      ["ee40", "\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"],
      ["eea1", "\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"],
      ["ef40", "\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"],
      ["efa1", "\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"],
      ["f040", "\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"],
      ["f0a1", "\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"],
      ["f140", "\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"],
      ["f1a1", "\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"],
      ["f240", "\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"],
      ["f2a1", "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"],
      ["f340", "\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"],
      ["f3a1", "\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"],
      ["f440", "\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"],
      ["f4a1", "\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"],
      ["f540", "\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"],
      ["f5a1", "\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"],
      ["f640", "\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"],
      ["f6a1", "\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"],
      ["f740", "\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"],
      ["f7a1", "\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"],
      ["f840", "\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"],
      ["f8a1", "\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"],
      ["f940", "\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"],
      ["f9a1", "\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"]
    ];
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/tables/big5-added.json
var require_big5_added2 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/tables/big5-added.json"(exports2, module2) {
    module2.exports = [
      ["8740", "\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"],
      ["8767", "\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"],
      ["87a1", "\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"],
      ["8840", "\u31C0", 4, "\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"],
      ["88a1", "\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"],
      ["8940", "\u{2A3A9}\u{21145}"],
      ["8943", "\u650A"],
      ["8946", "\u4E3D\u6EDD\u9D4E\u91DF"],
      ["894c", "\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"],
      ["89a1", "\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"],
      ["89ab", "\u918C\u78B8\u915E\u80BC"],
      ["89b0", "\u8D0B\u80F6\u{209E7}"],
      ["89b5", "\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"],
      ["89c1", "\u6E9A\u823E\u7519"],
      ["89c5", "\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"],
      ["8a40", "\u{27D84}\u5525"],
      ["8a43", "\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"],
      ["8a64", "\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"],
      ["8a76", "\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"],
      ["8aa1", "\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"],
      ["8aac", "\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"],
      ["8ab2", "\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"],
      ["8abb", "\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"],
      ["8ac9", "\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"],
      ["8ace", "\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"],
      ["8adf", "\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"],
      ["8af6", "\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"],
      ["8b40", "\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"],
      ["8b55", "\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"],
      ["8ba1", "\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"],
      ["8bde", "\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"],
      ["8c40", "\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"],
      ["8ca1", "\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"],
      ["8ca7", "\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"],
      ["8cc9", "\u9868\u676B\u4276\u573D"],
      ["8cce", "\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"],
      ["8ce6", "\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"],
      ["8d40", "\u{20B9F}"],
      ["8d42", "\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"],
      ["8da1", "\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"],
      ["8e40", "\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"],
      ["8ea1", "\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"],
      ["8f40", "\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"],
      ["8fa1", "\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"],
      ["9040", "\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"],
      ["90a1", "\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"],
      ["9140", "\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"],
      ["91a1", "\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"],
      ["9240", "\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"],
      ["92a1", "\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"],
      ["9340", "\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"],
      ["93a1", "\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"],
      ["9440", "\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"],
      ["94a1", "\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"],
      ["9540", "\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"],
      ["95a1", "\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"],
      ["9640", "\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"],
      ["96a1", "\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"],
      ["9740", "\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"],
      ["97a1", "\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"],
      ["9840", "\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"],
      ["98a1", "\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"],
      ["9940", "\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"],
      ["99a1", "\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"],
      ["9a40", "\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"],
      ["9aa1", "\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"],
      ["9b40", "\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"],
      ["9b62", "\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"],
      ["9ba1", "\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"],
      ["9c40", "\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"],
      ["9ca1", "\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"],
      ["9d40", "\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"],
      ["9da1", "\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"],
      ["9e40", "\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"],
      ["9ea1", "\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"],
      ["9ead", "\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"],
      ["9ec5", "\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"],
      ["9ef5", "\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"],
      ["9f40", "\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"],
      ["9f4f", "\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"],
      ["9fa1", "\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"],
      ["9fae", "\u9159\u9681\u915C"],
      ["9fb2", "\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"],
      ["9fc1", "\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"],
      ["9fc9", "\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"],
      ["9fdb", "\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"],
      ["9fe7", "\u6BFA\u8818\u7F78"],
      ["9feb", "\u5620\u{2A64A}\u8E77\u9F53"],
      ["9ff0", "\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"],
      ["a040", "\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"],
      ["a055", "\u{2183B}\u{26E05}"],
      ["a058", "\u8A7E\u{2251B}"],
      ["a05b", "\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"],
      ["a063", "\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"],
      ["a073", "\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"],
      ["a0a1", "\u5D57\u{28BC2}\u8FDA\u{28E39}"],
      ["a0a6", "\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"],
      ["a0ae", "\u77FE"],
      ["a0b0", "\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"],
      ["a0d4", "\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"],
      ["a0e2", "\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"],
      ["a3c0", "\u2400", 31, "\u2421"],
      ["c6a1", "\u2460", 9, "\u2474", 9, "\u2170", 9, "\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041", 23],
      ["c740", "\u3059", 58, "\u30A1\u30A2\u30A3\u30A4"],
      ["c7a1", "\u30A5", 81, "\u0410", 5, "\u0401\u0416", 4],
      ["c840", "\u041B", 26, "\u0451\u0436", 25, "\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"],
      ["c8a1", "\u9FB0\u5188\u9FB1\u{27607}"],
      ["c8cd", "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"],
      ["c8f5", "\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"],
      ["f9fe", "\uFFED"],
      ["fa40", "\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"],
      ["faa1", "\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"],
      ["fb40", "\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"],
      ["fba1", "\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"],
      ["fc40", "\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"],
      ["fca1", "\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"],
      ["fd40", "\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"],
      ["fda1", "\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"],
      ["fe40", "\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"],
      ["fea1", "\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"]
    ];
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/dbcs-data.js
var require_dbcs_data2 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/dbcs-data.js"(exports2, module2) {
    "use strict";
    module2.exports = {
      // == Japanese/ShiftJIS ====================================================
      // All japanese encodings are based on JIS X set of standards:
      // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.
      // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes.
      //              Has several variations in 1978, 1983, 1990 and 1997.
      // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.
      // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.
      //              2 planes, first is superset of 0208, second - revised 0212.
      //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)
      // Byte encodings are:
      //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte
      //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.
      //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.
      //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.
      //               0x00-0x7F       - lower part of 0201
      //               0x8E, 0xA1-0xDF - upper part of 0201
      //               (0xA1-0xFE)x2   - 0208 plane (94x94).
      //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).
      //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.
      //               Used as-is in ISO2022 family.
      //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII,
      //                0201-1976 Roman, 0208-1978, 0208-1983.
      //  * ISO2022-JP-1: Adds esc seq for 0212-1990.
      //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.
      //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.
      //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.
      //
      // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.
      //
      // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html
      shiftjis: {
        type: "_dbcs",
        table: function() {
          return require_shiftjis2();
        },
        encodeAdd: { "\xA5": 92, "\u203E": 126 },
        encodeSkipVals: [{ from: 60736, to: 63808 }]
      },
      csshiftjis: "shiftjis",
      mskanji: "shiftjis",
      sjis: "shiftjis",
      windows31j: "shiftjis",
      ms31j: "shiftjis",
      xsjis: "shiftjis",
      windows932: "shiftjis",
      ms932: "shiftjis",
      932: "shiftjis",
      cp932: "shiftjis",
      eucjp: {
        type: "_dbcs",
        table: function() {
          return require_eucjp2();
        },
        encodeAdd: { "\xA5": 92, "\u203E": 126 }
      },
      // TODO: KDDI extension to Shift_JIS
      // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.
      // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.
      // == Chinese/GBK ==========================================================
      // http://en.wikipedia.org/wiki/GBK
      // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder
      // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936
      gb2312: "cp936",
      gb231280: "cp936",
      gb23121980: "cp936",
      csgb2312: "cp936",
      csiso58gb231280: "cp936",
      euccn: "cp936",
      // Microsoft's CP936 is a subset and approximation of GBK.
      windows936: "cp936",
      ms936: "cp936",
      936: "cp936",
      cp936: {
        type: "_dbcs",
        table: function() {
          return require_cp9362();
        }
      },
      // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.
      gbk: {
        type: "_dbcs",
        table: function() {
          return require_cp9362().concat(require_gbk_added2());
        }
      },
      xgbk: "gbk",
      isoir58: "gbk",
      // GB18030 is an algorithmic extension of GBK.
      // Main source: https://www.w3.org/TR/encoding/#gbk-encoder
      // http://icu-project.org/docs/papers/gb18030.html
      // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml
      // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0
      gb18030: {
        type: "_dbcs",
        table: function() {
          return require_cp9362().concat(require_gbk_added2());
        },
        gb18030: function() {
          return require_gb18030_ranges2();
        },
        encodeSkipVals: [128],
        encodeAdd: { "\u20AC": 41699 }
      },
      chinese: "gb18030",
      // == Korean ===============================================================
      // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.
      windows949: "cp949",
      ms949: "cp949",
      949: "cp949",
      cp949: {
        type: "_dbcs",
        table: function() {
          return require_cp9492();
        }
      },
      cseuckr: "cp949",
      csksc56011987: "cp949",
      euckr: "cp949",
      isoir149: "cp949",
      korean: "cp949",
      ksc56011987: "cp949",
      ksc56011989: "cp949",
      ksc5601: "cp949",
      // == Big5/Taiwan/Hong Kong ================================================
      // There are lots of tables for Big5 and cp950. Please see the following links for history:
      // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html
      // Variations, in roughly number of defined chars:
      //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT
      //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/
      //  * Big5-2003 (Taiwan standard) almost superset of cp950.
      //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.
      //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard.
      //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.
      //    Plus, it has 4 combining sequences.
      //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299
      //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.
      //    Implementations are not consistent within browsers; sometimes labeled as just big5.
      //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.
      //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31
      //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.
      //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt
      //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt
      //
      // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder
      // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.
      windows950: "cp950",
      ms950: "cp950",
      950: "cp950",
      cp950: {
        type: "_dbcs",
        table: function() {
          return require_cp9502();
        }
      },
      // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.
      big5: "big5hkscs",
      big5hkscs: {
        type: "_dbcs",
        table: function() {
          return require_cp9502().concat(require_big5_added2());
        },
        encodeSkipVals: [
          // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of
          // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.
          // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.
          36457,
          36463,
          36478,
          36523,
          36532,
          36557,
          36560,
          36695,
          36713,
          36718,
          36811,
          36862,
          36973,
          36986,
          37060,
          37084,
          37105,
          37311,
          37551,
          37552,
          37553,
          37554,
          37585,
          37959,
          38090,
          38361,
          38652,
          39285,
          39798,
          39800,
          39803,
          39878,
          39902,
          39916,
          39926,
          40002,
          40019,
          40034,
          40040,
          40043,
          40055,
          40124,
          40125,
          40144,
          40279,
          40282,
          40388,
          40431,
          40443,
          40617,
          40687,
          40701,
          40800,
          40907,
          41079,
          41180,
          41183,
          36812,
          37576,
          38468,
          38637,
          // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345
          41636,
          41637,
          41639,
          41638,
          41676,
          41678
        ]
      },
      cnbig5: "big5hkscs",
      csbig5: "big5hkscs",
      xxbig5: "big5hkscs"
    };
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/index.js
var require_encodings2 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/encodings/index.js"(exports2, module2) {
    "use strict";
    var mergeModules = require_merge_exports();
    var modules = [
      require_internal2(),
      require_utf32(),
      require_utf162(),
      require_utf72(),
      require_sbcs_codec2(),
      require_sbcs_data2(),
      require_sbcs_data_generated2(),
      require_dbcs_codec2(),
      require_dbcs_data2()
    ];
    for (i2 = 0; i2 < modules.length; i2++) {
      module2 = modules[i2];
      mergeModules(exports2, module2);
    }
    var module2;
    var i2;
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/lib/streams.js
var require_streams3 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/lib/streams.js"(exports2, module2) {
    "use strict";
    var Buffer7 = require_safer().Buffer;
    module2.exports = function(streamModule) {
      var Transform = streamModule.Transform;
      function IconvLiteEncoderStream(conv, options) {
        this.conv = conv;
        options = options || {};
        options.decodeStrings = false;
        Transform.call(this, options);
      }
      IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {
        constructor: { value: IconvLiteEncoderStream }
      });
      IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {
        if (typeof chunk !== "string") {
          return done(new Error("Iconv encoding stream needs strings as its input."));
        }
        try {
          var res = this.conv.write(chunk);
          if (res && res.length) this.push(res);
          done();
        } catch (e2) {
          done(e2);
        }
      };
      IconvLiteEncoderStream.prototype._flush = function(done) {
        try {
          var res = this.conv.end();
          if (res && res.length) this.push(res);
          done();
        } catch (e2) {
          done(e2);
        }
      };
      IconvLiteEncoderStream.prototype.collect = function(cb) {
        var chunks = [];
        this.on("error", cb);
        this.on("data", function(chunk) {
          chunks.push(chunk);
        });
        this.on("end", function() {
          cb(null, Buffer7.concat(chunks));
        });
        return this;
      };
      function IconvLiteDecoderStream(conv, options) {
        this.conv = conv;
        options = options || {};
        options.encoding = this.encoding = "utf8";
        Transform.call(this, options);
      }
      IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {
        constructor: { value: IconvLiteDecoderStream }
      });
      IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {
        if (!Buffer7.isBuffer(chunk) && !(chunk instanceof Uint8Array)) {
          return done(new Error("Iconv decoding stream needs buffers as its input."));
        }
        try {
          var res = this.conv.write(chunk);
          if (res && res.length) this.push(res, this.encoding);
          done();
        } catch (e2) {
          done(e2);
        }
      };
      IconvLiteDecoderStream.prototype._flush = function(done) {
        try {
          var res = this.conv.end();
          if (res && res.length) this.push(res, this.encoding);
          done();
        } catch (e2) {
          done(e2);
        }
      };
      IconvLiteDecoderStream.prototype.collect = function(cb) {
        var res = "";
        this.on("error", cb);
        this.on("data", function(chunk) {
          res += chunk;
        });
        this.on("end", function() {
          cb(null, res);
        });
        return this;
      };
      return {
        IconvLiteEncoderStream,
        IconvLiteDecoderStream
      };
    };
  }
});

// ../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/lib/index.js
var require_lib25 = __commonJS({
  "../../node_modules/@inquirer/external-editor/node_modules/iconv-lite/lib/index.js"(exports2, module2) {
    "use strict";
    var Buffer7 = require_safer().Buffer;
    var bomHandling = require_bom_handling2();
    var mergeModules = require_merge_exports();
    var iconv2 = module2.exports;
    iconv2.encodings = null;
    iconv2.defaultCharUnicode = "\uFFFD";
    iconv2.defaultCharSingleByte = "?";
    iconv2.encode = function encode(str2, encoding, options) {
      str2 = "" + (str2 || "");
      var encoder = iconv2.getEncoder(encoding, options);
      var res = encoder.write(str2);
      var trail = encoder.end();
      return trail && trail.length > 0 ? Buffer7.concat([res, trail]) : res;
    };
    iconv2.decode = function decode2(buf, encoding, options) {
      if (typeof buf === "string") {
        if (!iconv2.skipDecodeWarning) {
          console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding");
          iconv2.skipDecodeWarning = true;
        }
        buf = Buffer7.from("" + (buf || ""), "binary");
      }
      var decoder = iconv2.getDecoder(encoding, options);
      var res = decoder.write(buf);
      var trail = decoder.end();
      return trail ? res + trail : res;
    };
    iconv2.encodingExists = function encodingExists(enc) {
      try {
        iconv2.getCodec(enc);
        return true;
      } catch (e2) {
        return false;
      }
    };
    iconv2.toEncoding = iconv2.encode;
    iconv2.fromEncoding = iconv2.decode;
    iconv2._codecDataCache = { __proto__: null };
    iconv2.getCodec = function getCodec(encoding) {
      if (!iconv2.encodings) {
        var raw2 = require_encodings2();
        iconv2.encodings = { __proto__: null };
        mergeModules(iconv2.encodings, raw2);
      }
      var enc = iconv2._canonicalizeEncoding(encoding);
      var codecOptions = {};
      while (true) {
        var codec = iconv2._codecDataCache[enc];
        if (codec) {
          return codec;
        }
        var codecDef = iconv2.encodings[enc];
        switch (typeof codecDef) {
          case "string":
            enc = codecDef;
            break;
          case "object":
            for (var key2 in codecDef) {
              codecOptions[key2] = codecDef[key2];
            }
            if (!codecOptions.encodingName) {
              codecOptions.encodingName = enc;
            }
            enc = codecDef.type;
            break;
          case "function":
            if (!codecOptions.encodingName) {
              codecOptions.encodingName = enc;
            }
            codec = new codecDef(codecOptions, iconv2);
            iconv2._codecDataCache[codecOptions.encodingName] = codec;
            return codec;
          default:
            throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '" + enc + "')");
        }
      }
    };
    iconv2._canonicalizeEncoding = function(encoding) {
      return ("" + encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, "");
    };
    iconv2.getEncoder = function getEncoder(encoding, options) {
      var codec = iconv2.getCodec(encoding);
      var encoder = new codec.encoder(options, codec);
      if (codec.bomAware && options && options.addBOM) {
        encoder = new bomHandling.PrependBOM(encoder, options);
      }
      return encoder;
    };
    iconv2.getDecoder = function getDecoder2(encoding, options) {
      var codec = iconv2.getCodec(encoding);
      var decoder = new codec.decoder(options, codec);
      if (codec.bomAware && !(options && options.stripBOM === false)) {
        decoder = new bomHandling.StripBOM(decoder, options);
      }
      return decoder;
    };
    iconv2.enableStreamingAPI = function enableStreamingAPI(streamModule2) {
      if (iconv2.supportsStreams) {
        return;
      }
      var streams = require_streams3()(streamModule2);
      iconv2.IconvLiteEncoderStream = streams.IconvLiteEncoderStream;
      iconv2.IconvLiteDecoderStream = streams.IconvLiteDecoderStream;
      iconv2.encodeStream = function encodeStream(encoding, options) {
        return new iconv2.IconvLiteEncoderStream(iconv2.getEncoder(encoding, options), options);
      };
      iconv2.decodeStream = function decodeStream(encoding, options) {
        return new iconv2.IconvLiteDecoderStream(iconv2.getDecoder(encoding, options), options);
      };
      iconv2.supportsStreams = true;
    };
    var streamModule;
    try {
      streamModule = require("stream");
    } catch (e2) {
    }
    if (streamModule && streamModule.Transform) {
      iconv2.enableStreamingAPI(streamModule);
    } else {
      iconv2.encodeStream = iconv2.decodeStream = function() {
        throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.");
      };
    }
    if (false) {
      console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.");
    }
  }
});

// ../../node_modules/mute-stream/lib/index.js
var require_lib26 = __commonJS({
  "../../node_modules/mute-stream/lib/index.js"(exports2, module2) {
    var Stream4 = require("stream");
    var _isTTY, _MuteStream_instances, destSrc_fn, proxy_fn;
    var MuteStream2 = class extends Stream4 {
      constructor(opts = {}) {
        super(opts);
        __privateAdd(this, _MuteStream_instances);
        __privateAdd(this, _isTTY, null);
        this.writable = this.readable = true;
        this.muted = false;
        this.on("pipe", this._onpipe);
        this.replace = opts.replace;
        this._prompt = opts.prompt || null;
        this._hadControl = false;
      }
      get isTTY() {
        if (__privateGet(this, _isTTY) !== null) {
          return __privateGet(this, _isTTY);
        }
        return __privateMethod(this, _MuteStream_instances, destSrc_fn).call(this, "isTTY", false);
      }
      // basically just get replace the getter/setter with a regular value
      set isTTY(val) {
        __privateSet(this, _isTTY, val);
      }
      get rows() {
        return __privateMethod(this, _MuteStream_instances, destSrc_fn).call(this, "rows");
      }
      get columns() {
        return __privateMethod(this, _MuteStream_instances, destSrc_fn).call(this, "columns");
      }
      mute() {
        this.muted = true;
      }
      unmute() {
        this.muted = false;
      }
      _onpipe(src) {
        this._src = src;
      }
      pipe(dest, options) {
        this._dest = dest;
        return super.pipe(dest, options);
      }
      pause() {
        if (this._src) {
          return this._src.pause();
        }
      }
      resume() {
        if (this._src) {
          return this._src.resume();
        }
      }
      write(c) {
        if (this.muted) {
          if (!this.replace) {
            return true;
          }
          if (c.match(/^\u001b/)) {
            if (c.indexOf(this._prompt) === 0) {
              c = c.slice(this._prompt.length);
              c = c.replace(/./g, this.replace);
              c = this._prompt + c;
            }
            this._hadControl = true;
            return this.emit("data", c);
          } else {
            if (this._prompt && this._hadControl && c.indexOf(this._prompt) === 0) {
              this._hadControl = false;
              this.emit("data", this._prompt);
              c = c.slice(this._prompt.length);
            }
            c = c.toString().replace(/./g, this.replace);
          }
        }
        this.emit("data", c);
      }
      end(c) {
        if (this.muted) {
          if (c && this.replace) {
            c = c.toString().replace(/./g, this.replace);
          } else {
            c = null;
          }
        }
        if (c) {
          this.emit("data", c);
        }
        this.emit("end");
      }
      destroy(...args) {
        return __privateMethod(this, _MuteStream_instances, proxy_fn).call(this, "destroy", ...args);
      }
      destroySoon(...args) {
        return __privateMethod(this, _MuteStream_instances, proxy_fn).call(this, "destroySoon", ...args);
      }
      close(...args) {
        return __privateMethod(this, _MuteStream_instances, proxy_fn).call(this, "close", ...args);
      }
    };
    _isTTY = new WeakMap();
    _MuteStream_instances = new WeakSet();
    destSrc_fn = function(key2, def) {
      if (this._dest) {
        return this._dest[key2];
      }
      if (this._src) {
        return this._src[key2];
      }
      return def;
    };
    proxy_fn = function(method, ...args) {
      var _a6, _b;
      if (typeof ((_a6 = this._dest) == null ? void 0 : _a6[method]) === "function") {
        this._dest[method](...args);
      }
      if (typeof ((_b = this._src) == null ? void 0 : _b[method]) === "function") {
        this._src[method](...args);
      }
    };
    module2.exports = MuteStream2;
  }
});

// ../../node_modules/defer-to-connect/dist/source/index.js
var require_source3 = __commonJS({
  "../../node_modules/defer-to-connect/dist/source/index.js"(exports2, module2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    function isTLSSocket(socket) {
      return socket.encrypted;
    }
    var deferToConnect2 = (socket, fn) => {
      let listeners;
      if (typeof fn === "function") {
        const connect = fn;
        listeners = { connect };
      } else {
        listeners = fn;
      }
      const hasConnectListener = typeof listeners.connect === "function";
      const hasSecureConnectListener = typeof listeners.secureConnect === "function";
      const hasCloseListener = typeof listeners.close === "function";
      const onConnect = () => {
        if (hasConnectListener) {
          listeners.connect();
        }
        if (isTLSSocket(socket) && hasSecureConnectListener) {
          if (socket.authorized) {
            listeners.secureConnect();
          } else if (!socket.authorizationError) {
            socket.once("secureConnect", listeners.secureConnect);
          }
        }
        if (hasCloseListener) {
          socket.once("close", listeners.close);
        }
      };
      if (socket.writable && !socket.connecting) {
        onConnect();
      } else if (socket.connecting) {
        socket.once("connect", onConnect);
      } else if (socket.destroyed && hasCloseListener) {
        listeners.close(socket._hadError);
      }
    };
    exports2.default = deferToConnect2;
    module2.exports = deferToConnect2;
    module2.exports.default = deferToConnect2;
  }
});

// ../../node_modules/get-stream/buffer-stream.js
var require_buffer_stream = __commonJS({
  "../../node_modules/get-stream/buffer-stream.js"(exports2, module2) {
    "use strict";
    var { PassThrough: PassThroughStream2 } = require("stream");
    module2.exports = (options) => {
      options = { ...options };
      const { array } = options;
      let { encoding } = options;
      const isBuffer3 = encoding === "buffer";
      let objectMode = false;
      if (array) {
        objectMode = !(encoding || isBuffer3);
      } else {
        encoding = encoding || "utf8";
      }
      if (isBuffer3) {
        encoding = null;
      }
      const stream3 = new PassThroughStream2({ objectMode });
      if (encoding) {
        stream3.setEncoding(encoding);
      }
      let length = 0;
      const chunks = [];
      stream3.on("data", (chunk) => {
        chunks.push(chunk);
        if (objectMode) {
          length = chunks.length;
        } else {
          length += chunk.length;
        }
      });
      stream3.getBufferedValue = () => {
        if (array) {
          return chunks;
        }
        return isBuffer3 ? Buffer.concat(chunks, length) : chunks.join("");
      };
      stream3.getBufferedLength = () => length;
      return stream3;
    };
  }
});

// ../../node_modules/get-stream/index.js
var require_get_stream = __commonJS({
  "../../node_modules/get-stream/index.js"(exports2, module2) {
    "use strict";
    var { constants: BufferConstants } = require("buffer");
    var stream3 = require("stream");
    var { promisify: promisify5 } = require("util");
    var bufferStream = require_buffer_stream();
    var streamPipelinePromisified = promisify5(stream3.pipeline);
    var MaxBufferError = class extends Error {
      constructor() {
        super("maxBuffer exceeded");
        this.name = "MaxBufferError";
      }
    };
    async function getStream3(inputStream, options) {
      if (!inputStream) {
        throw new Error("Expected a stream");
      }
      options = {
        maxBuffer: Infinity,
        ...options
      };
      const { maxBuffer } = options;
      const stream4 = bufferStream(options);
      await new Promise((resolve9, reject) => {
        const rejectPromise = (error) => {
          if (error && stream4.getBufferedLength() <= BufferConstants.MAX_LENGTH) {
            error.bufferedData = stream4.getBufferedValue();
          }
          reject(error);
        };
        (async () => {
          try {
            await streamPipelinePromisified(inputStream, stream4);
            resolve9();
          } catch (error) {
            rejectPromise(error);
          }
        })();
        stream4.on("data", () => {
          if (stream4.getBufferedLength() > maxBuffer) {
            rejectPromise(new MaxBufferError());
          }
        });
      });
      return stream4.getBufferedValue();
    }
    module2.exports = getStream3;
    module2.exports.buffer = (stream4, options) => getStream3(stream4, { ...options, encoding: "buffer" });
    module2.exports.array = (stream4, options) => getStream3(stream4, { ...options, array: true });
    module2.exports.MaxBufferError = MaxBufferError;
  }
});

// ../../node_modules/http-cache-semantics/index.js
var require_http_cache_semantics = __commonJS({
  "../../node_modules/http-cache-semantics/index.js"(exports2, module2) {
    "use strict";
    var statusCodeCacheableByDefault = /* @__PURE__ */ new Set([
      200,
      203,
      204,
      206,
      300,
      301,
      308,
      404,
      405,
      410,
      414,
      501
    ]);
    var understoodStatuses = /* @__PURE__ */ new Set([
      200,
      203,
      204,
      300,
      301,
      302,
      303,
      307,
      308,
      404,
      405,
      410,
      414,
      501
    ]);
    var errorStatusCodes = /* @__PURE__ */ new Set([
      500,
      502,
      503,
      504
    ]);
    var hopByHopHeaders = {
      date: true,
      // included, because we add Age update Date
      connection: true,
      "keep-alive": true,
      "proxy-authenticate": true,
      "proxy-authorization": true,
      te: true,
      trailer: true,
      "transfer-encoding": true,
      upgrade: true
    };
    var excludedFromRevalidationUpdate = {
      // Since the old body is reused, it doesn't make sense to change properties of the body
      "content-length": true,
      "content-encoding": true,
      "transfer-encoding": true,
      "content-range": true
    };
    function toNumberOrZero(s5) {
      const n = parseInt(s5, 10);
      return isFinite(n) ? n : 0;
    }
    function isErrorResponse(response) {
      if (!response) {
        return true;
      }
      return errorStatusCodes.has(response.status);
    }
    function parseCacheControl(header) {
      const cc = {};
      if (!header) return cc;
      const parts = header.trim().split(/,/);
      for (const part of parts) {
        const [k, v] = part.split(/=/, 2);
        cc[k.trim()] = v === void 0 ? true : v.trim().replace(/^"|"$/g, "");
      }
      return cc;
    }
    function formatCacheControl(cc) {
      let parts = [];
      for (const k in cc) {
        const v = cc[k];
        parts.push(v === true ? k : k + "=" + v);
      }
      if (!parts.length) {
        return void 0;
      }
      return parts.join(", ");
    }
    module2.exports = class CachePolicy {
      constructor(req, res, {
        shared,
        cacheHeuristic,
        immutableMinTimeToLive,
        ignoreCargoCult,
        _fromObject
      } = {}) {
        if (_fromObject) {
          this._fromObject(_fromObject);
          return;
        }
        if (!res || !res.headers) {
          throw Error("Response headers missing");
        }
        this._assertRequestHasHeaders(req);
        this._responseTime = this.now();
        this._isShared = shared !== false;
        this._cacheHeuristic = void 0 !== cacheHeuristic ? cacheHeuristic : 0.1;
        this._immutableMinTtl = void 0 !== immutableMinTimeToLive ? immutableMinTimeToLive : 24 * 3600 * 1e3;
        this._status = "status" in res ? res.status : 200;
        this._resHeaders = res.headers;
        this._rescc = parseCacheControl(res.headers["cache-control"]);
        this._method = "method" in req ? req.method : "GET";
        this._url = req.url;
        this._host = req.headers.host;
        this._noAuthorization = !req.headers.authorization;
        this._reqHeaders = res.headers.vary ? req.headers : null;
        this._reqcc = parseCacheControl(req.headers["cache-control"]);
        if (ignoreCargoCult && "pre-check" in this._rescc && "post-check" in this._rescc) {
          delete this._rescc["pre-check"];
          delete this._rescc["post-check"];
          delete this._rescc["no-cache"];
          delete this._rescc["no-store"];
          delete this._rescc["must-revalidate"];
          this._resHeaders = Object.assign({}, this._resHeaders, {
            "cache-control": formatCacheControl(this._rescc)
          });
          delete this._resHeaders.expires;
          delete this._resHeaders.pragma;
        }
        if (res.headers["cache-control"] == null && /no-cache/.test(res.headers.pragma)) {
          this._rescc["no-cache"] = true;
        }
      }
      now() {
        return Date.now();
      }
      storable() {
        return !!(!this._reqcc["no-store"] && // A cache MUST NOT store a response to any request, unless:
        // The request method is understood by the cache and defined as being cacheable, and
        ("GET" === this._method || "HEAD" === this._method || "POST" === this._method && this._hasExplicitExpiration()) && // the response status code is understood by the cache, and
        understoodStatuses.has(this._status) && // the "no-store" cache directive does not appear in request or response header fields, and
        !this._rescc["no-store"] && // the "private" response directive does not appear in the response, if the cache is shared, and
        (!this._isShared || !this._rescc.private) && // the Authorization header field does not appear in the request, if the cache is shared,
        (!this._isShared || this._noAuthorization || this._allowsStoringAuthenticated()) && // the response either:
        // contains an Expires header field, or
        (this._resHeaders.expires || // contains a max-age response directive, or
        // contains a s-maxage response directive and the cache is shared, or
        // contains a public response directive.
        this._rescc["max-age"] || this._isShared && this._rescc["s-maxage"] || this._rescc.public || // has a status code that is defined as cacheable by default
        statusCodeCacheableByDefault.has(this._status)));
      }
      _hasExplicitExpiration() {
        return this._isShared && this._rescc["s-maxage"] || this._rescc["max-age"] || this._resHeaders.expires;
      }
      _assertRequestHasHeaders(req) {
        if (!req || !req.headers) {
          throw Error("Request headers missing");
        }
      }
      satisfiesWithoutRevalidation(req) {
        this._assertRequestHasHeaders(req);
        const requestCC = parseCacheControl(req.headers["cache-control"]);
        if (requestCC["no-cache"] || /no-cache/.test(req.headers.pragma)) {
          return false;
        }
        if (requestCC["max-age"] && this.age() > requestCC["max-age"]) {
          return false;
        }
        if (requestCC["min-fresh"] && this.timeToLive() < 1e3 * requestCC["min-fresh"]) {
          return false;
        }
        if (this.stale()) {
          const allowsStale = requestCC["max-stale"] && !this._rescc["must-revalidate"] && (true === requestCC["max-stale"] || requestCC["max-stale"] > this.age() - this.maxAge());
          if (!allowsStale) {
            return false;
          }
        }
        return this._requestMatches(req, false);
      }
      _requestMatches(req, allowHeadMethod) {
        return (!this._url || this._url === req.url) && this._host === req.headers.host && // the request method associated with the stored response allows it to be used for the presented request, and
        (!req.method || this._method === req.method || allowHeadMethod && "HEAD" === req.method) && // selecting header fields nominated by the stored response (if any) match those presented, and
        this._varyMatches(req);
      }
      _allowsStoringAuthenticated() {
        return this._rescc["must-revalidate"] || this._rescc.public || this._rescc["s-maxage"];
      }
      _varyMatches(req) {
        if (!this._resHeaders.vary) {
          return true;
        }
        if (this._resHeaders.vary === "*") {
          return false;
        }
        const fields = this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);
        for (const name3 of fields) {
          if (req.headers[name3] !== this._reqHeaders[name3]) return false;
        }
        return true;
      }
      _copyWithoutHopByHopHeaders(inHeaders) {
        const headers = {};
        for (const name3 in inHeaders) {
          if (hopByHopHeaders[name3]) continue;
          headers[name3] = inHeaders[name3];
        }
        if (inHeaders.connection) {
          const tokens = inHeaders.connection.trim().split(/\s*,\s*/);
          for (const name3 of tokens) {
            delete headers[name3];
          }
        }
        if (headers.warning) {
          const warnings2 = headers.warning.split(/,/).filter((warning2) => {
            return !/^\s*1[0-9][0-9]/.test(warning2);
          });
          if (!warnings2.length) {
            delete headers.warning;
          } else {
            headers.warning = warnings2.join(",").trim();
          }
        }
        return headers;
      }
      responseHeaders() {
        const headers = this._copyWithoutHopByHopHeaders(this._resHeaders);
        const age = this.age();
        if (age > 3600 * 24 && !this._hasExplicitExpiration() && this.maxAge() > 3600 * 24) {
          headers.warning = (headers.warning ? `${headers.warning}, ` : "") + '113 - "rfc7234 5.5.4"';
        }
        headers.age = `${Math.round(age)}`;
        headers.date = new Date(this.now()).toUTCString();
        return headers;
      }
      /**
       * Value of the Date response header or current time if Date was invalid
       * @return timestamp
       */
      date() {
        const serverDate = Date.parse(this._resHeaders.date);
        if (isFinite(serverDate)) {
          return serverDate;
        }
        return this._responseTime;
      }
      /**
       * Value of the Age header, in seconds, updated for the current time.
       * May be fractional.
       *
       * @return Number
       */
      age() {
        let age = this._ageValue();
        const residentTime = (this.now() - this._responseTime) / 1e3;
        return age + residentTime;
      }
      _ageValue() {
        return toNumberOrZero(this._resHeaders.age);
      }
      /**
       * Value of applicable max-age (or heuristic equivalent) in seconds. This counts since response's `Date`.
       *
       * For an up-to-date value, see `timeToLive()`.
       *
       * @return Number
       */
      maxAge() {
        if (!this.storable() || this._rescc["no-cache"]) {
          return 0;
        }
        if (this._isShared && (this._resHeaders["set-cookie"] && !this._rescc.public && !this._rescc.immutable)) {
          return 0;
        }
        if (this._resHeaders.vary === "*") {
          return 0;
        }
        if (this._isShared) {
          if (this._rescc["proxy-revalidate"]) {
            return 0;
          }
          if (this._rescc["s-maxage"]) {
            return toNumberOrZero(this._rescc["s-maxage"]);
          }
        }
        if (this._rescc["max-age"]) {
          return toNumberOrZero(this._rescc["max-age"]);
        }
        const defaultMinTtl = this._rescc.immutable ? this._immutableMinTtl : 0;
        const serverDate = this.date();
        if (this._resHeaders.expires) {
          const expires = Date.parse(this._resHeaders.expires);
          if (Number.isNaN(expires) || expires < serverDate) {
            return 0;
          }
          return Math.max(defaultMinTtl, (expires - serverDate) / 1e3);
        }
        if (this._resHeaders["last-modified"]) {
          const lastModified = Date.parse(this._resHeaders["last-modified"]);
          if (isFinite(lastModified) && serverDate > lastModified) {
            return Math.max(
              defaultMinTtl,
              (serverDate - lastModified) / 1e3 * this._cacheHeuristic
            );
          }
        }
        return defaultMinTtl;
      }
      timeToLive() {
        const age = this.maxAge() - this.age();
        const staleIfErrorAge = age + toNumberOrZero(this._rescc["stale-if-error"]);
        const staleWhileRevalidateAge = age + toNumberOrZero(this._rescc["stale-while-revalidate"]);
        return Math.max(0, age, staleIfErrorAge, staleWhileRevalidateAge) * 1e3;
      }
      stale() {
        return this.maxAge() <= this.age();
      }
      _useStaleIfError() {
        return this.maxAge() + toNumberOrZero(this._rescc["stale-if-error"]) > this.age();
      }
      useStaleWhileRevalidate() {
        return this.maxAge() + toNumberOrZero(this._rescc["stale-while-revalidate"]) > this.age();
      }
      static fromObject(obj) {
        return new this(void 0, void 0, { _fromObject: obj });
      }
      _fromObject(obj) {
        if (this._responseTime) throw Error("Reinitialized");
        if (!obj || obj.v !== 1) throw Error("Invalid serialization");
        this._responseTime = obj.t;
        this._isShared = obj.sh;
        this._cacheHeuristic = obj.ch;
        this._immutableMinTtl = obj.imm !== void 0 ? obj.imm : 24 * 3600 * 1e3;
        this._status = obj.st;
        this._resHeaders = obj.resh;
        this._rescc = obj.rescc;
        this._method = obj.m;
        this._url = obj.u;
        this._host = obj.h;
        this._noAuthorization = obj.a;
        this._reqHeaders = obj.reqh;
        this._reqcc = obj.reqcc;
      }
      toObject() {
        return {
          v: 1,
          t: this._responseTime,
          sh: this._isShared,
          ch: this._cacheHeuristic,
          imm: this._immutableMinTtl,
          st: this._status,
          resh: this._resHeaders,
          rescc: this._rescc,
          m: this._method,
          u: this._url,
          h: this._host,
          a: this._noAuthorization,
          reqh: this._reqHeaders,
          reqcc: this._reqcc
        };
      }
      /**
       * Headers for sending to the origin server to revalidate stale response.
       * Allows server to return 304 to allow reuse of the previous response.
       *
       * Hop by hop headers are always stripped.
       * Revalidation headers may be added or removed, depending on request.
       */
      revalidationHeaders(incomingReq) {
        this._assertRequestHasHeaders(incomingReq);
        const headers = this._copyWithoutHopByHopHeaders(incomingReq.headers);
        delete headers["if-range"];
        if (!this._requestMatches(incomingReq, true) || !this.storable()) {
          delete headers["if-none-match"];
          delete headers["if-modified-since"];
          return headers;
        }
        if (this._resHeaders.etag) {
          headers["if-none-match"] = headers["if-none-match"] ? `${headers["if-none-match"]}, ${this._resHeaders.etag}` : this._resHeaders.etag;
        }
        const forbidsWeakValidators = headers["accept-ranges"] || headers["if-match"] || headers["if-unmodified-since"] || this._method && this._method != "GET";
        if (forbidsWeakValidators) {
          delete headers["if-modified-since"];
          if (headers["if-none-match"]) {
            const etags = headers["if-none-match"].split(/,/).filter((etag) => {
              return !/^\s*W\//.test(etag);
            });
            if (!etags.length) {
              delete headers["if-none-match"];
            } else {
              headers["if-none-match"] = etags.join(",").trim();
            }
          }
        } else if (this._resHeaders["last-modified"] && !headers["if-modified-since"]) {
          headers["if-modified-since"] = this._resHeaders["last-modified"];
        }
        return headers;
      }
      /**
       * Creates new CachePolicy with information combined from the previews response,
       * and the new revalidation response.
       *
       * Returns {policy, modified} where modified is a boolean indicating
       * whether the response body has been modified, and old cached body can't be used.
       *
       * @return {Object} {policy: CachePolicy, modified: Boolean}
       */
      revalidatedPolicy(request, response) {
        this._assertRequestHasHeaders(request);
        if (this._useStaleIfError() && isErrorResponse(response)) {
          return {
            modified: false,
            matches: false,
            policy: this
          };
        }
        if (!response || !response.headers) {
          throw Error("Response headers missing");
        }
        let matches4 = false;
        if (response.status !== void 0 && response.status != 304) {
          matches4 = false;
        } else if (response.headers.etag && !/^\s*W\//.test(response.headers.etag)) {
          matches4 = this._resHeaders.etag && this._resHeaders.etag.replace(/^\s*W\//, "") === response.headers.etag;
        } else if (this._resHeaders.etag && response.headers.etag) {
          matches4 = this._resHeaders.etag.replace(/^\s*W\//, "") === response.headers.etag.replace(/^\s*W\//, "");
        } else if (this._resHeaders["last-modified"]) {
          matches4 = this._resHeaders["last-modified"] === response.headers["last-modified"];
        } else {
          if (!this._resHeaders.etag && !this._resHeaders["last-modified"] && !response.headers.etag && !response.headers["last-modified"]) {
            matches4 = true;
          }
        }
        if (!matches4) {
          return {
            policy: new this.constructor(request, response),
            // Client receiving 304 without body, even if it's invalid/mismatched has no option
            // but to reuse a cached body. We don't have a good way to tell clients to do
            // error recovery in such case.
            modified: response.status != 304,
            matches: false
          };
        }
        const headers = {};
        for (const k in this._resHeaders) {
          headers[k] = k in response.headers && !excludedFromRevalidationUpdate[k] ? response.headers[k] : this._resHeaders[k];
        }
        const newResponse = Object.assign({}, response, {
          status: this._status,
          method: this._method,
          headers
        });
        return {
          policy: new this.constructor(request, newResponse, {
            shared: this._isShared,
            cacheHeuristic: this._cacheHeuristic,
            immutableMinTimeToLive: this._immutableMinTtl
          }),
          modified: false,
          matches: true
        };
      }
    };
  }
});

// ../../node_modules/json-buffer/index.js
var require_json_buffer = __commonJS({
  "../../node_modules/json-buffer/index.js"(exports2) {
    exports2.stringify = function stringify4(o) {
      if ("undefined" == typeof o) return o;
      if (o && Buffer.isBuffer(o))
        return JSON.stringify(":base64:" + o.toString("base64"));
      if (o && o.toJSON)
        o = o.toJSON();
      if (o && "object" === typeof o) {
        var s5 = "";
        var array = Array.isArray(o);
        s5 = array ? "[" : "{";
        var first2 = true;
        for (var k in o) {
          var ignore3 = "function" == typeof o[k] || !array && "undefined" === typeof o[k];
          if (Object.hasOwnProperty.call(o, k) && !ignore3) {
            if (!first2)
              s5 += ",";
            first2 = false;
            if (array) {
              if (o[k] == void 0)
                s5 += "null";
              else
                s5 += stringify4(o[k]);
            } else if (o[k] !== void 0) {
              s5 += stringify4(k) + ":" + stringify4(o[k]);
            }
          }
        }
        s5 += array ? "]" : "}";
        return s5;
      } else if ("string" === typeof o) {
        return JSON.stringify(/^:/.test(o) ? ":" + o : o);
      } else if ("undefined" === typeof o) {
        return "null";
      } else
        return JSON.stringify(o);
    };
    exports2.parse = function(s5) {
      return JSON.parse(s5, function(key2, value) {
        if ("string" === typeof value) {
          if (/^:base64:/.test(value))
            return Buffer.from(value.substring(8), "base64");
          else
            return /^:/.test(value) ? value.substring(1) : value;
        }
        return value;
      });
    };
  }
});

// ../../node_modules/keyv/src/index.js
var require_src5 = __commonJS({
  "../../node_modules/keyv/src/index.js"(exports2, module2) {
    "use strict";
    var EventEmitter4 = require("events");
    var JSONB = require_json_buffer();
    var loadStore = (options) => {
      const adapters = {
        redis: "@keyv/redis",
        rediss: "@keyv/redis",
        mongodb: "@keyv/mongo",
        mongo: "@keyv/mongo",
        sqlite: "@keyv/sqlite",
        postgresql: "@keyv/postgres",
        postgres: "@keyv/postgres",
        mysql: "@keyv/mysql",
        etcd: "@keyv/etcd",
        offline: "@keyv/offline",
        tiered: "@keyv/tiered"
      };
      if (options.adapter || options.uri) {
        const adapter = options.adapter || /^[^:+]*/.exec(options.uri)[0];
        return new (require(adapters[adapter]))(options);
      }
      return /* @__PURE__ */ new Map();
    };
    var iterableAdapters = [
      "sqlite",
      "postgres",
      "mysql",
      "mongo",
      "redis",
      "tiered"
    ];
    var Keyv2 = class extends EventEmitter4 {
      constructor(uri, { emitErrors = true, ...options } = {}) {
        super();
        this.opts = {
          namespace: "keyv",
          serialize: JSONB.stringify,
          deserialize: JSONB.parse,
          ...typeof uri === "string" ? { uri } : uri,
          ...options
        };
        if (!this.opts.store) {
          const adapterOptions = { ...this.opts };
          this.opts.store = loadStore(adapterOptions);
        }
        if (this.opts.compression) {
          const compression = this.opts.compression;
          this.opts.serialize = compression.serialize.bind(compression);
          this.opts.deserialize = compression.deserialize.bind(compression);
        }
        if (typeof this.opts.store.on === "function" && emitErrors) {
          this.opts.store.on("error", (error) => this.emit("error", error));
        }
        this.opts.store.namespace = this.opts.namespace;
        const generateIterator = (iterator) => async function* () {
          for await (const [key2, raw2] of typeof iterator === "function" ? iterator(this.opts.store.namespace) : iterator) {
            const data = this.opts.deserialize(raw2);
            if (this.opts.store.namespace && !key2.includes(this.opts.store.namespace)) {
              continue;
            }
            if (typeof data.expires === "number" && Date.now() > data.expires) {
              this.delete(key2);
              continue;
            }
            yield [this._getKeyUnprefix(key2), data.value];
          }
        };
        if (typeof this.opts.store[Symbol.iterator] === "function" && this.opts.store instanceof Map) {
          this.iterator = generateIterator(this.opts.store);
        } else if (typeof this.opts.store.iterator === "function" && this.opts.store.opts && this._checkIterableAdaptar()) {
          this.iterator = generateIterator(this.opts.store.iterator.bind(this.opts.store));
        }
      }
      _checkIterableAdaptar() {
        return iterableAdapters.includes(this.opts.store.opts.dialect) || iterableAdapters.findIndex((element5) => this.opts.store.opts.url.includes(element5)) >= 0;
      }
      _getKeyPrefix(key2) {
        return `${this.opts.namespace}:${key2}`;
      }
      _getKeyPrefixArray(keys2) {
        return keys2.map((key2) => `${this.opts.namespace}:${key2}`);
      }
      _getKeyUnprefix(key2) {
        return key2.split(":").splice(1).join(":");
      }
      get(key2, options) {
        const { store } = this.opts;
        const isArray2 = Array.isArray(key2);
        const keyPrefixed = isArray2 ? this._getKeyPrefixArray(key2) : this._getKeyPrefix(key2);
        if (isArray2 && store.getMany === void 0) {
          const promises = [];
          for (const key3 of keyPrefixed) {
            promises.push(
              Promise.resolve().then(() => store.get(key3)).then((data) => typeof data === "string" ? this.opts.deserialize(data) : this.opts.compression ? this.opts.deserialize(data) : data).then((data) => {
                if (data === void 0 || data === null) {
                  return void 0;
                }
                if (typeof data.expires === "number" && Date.now() > data.expires) {
                  return this.delete(key3).then(() => void 0);
                }
                return options && options.raw ? data : data.value;
              })
            );
          }
          return Promise.allSettled(promises).then((values) => {
            const data = [];
            for (const value of values) {
              data.push(value.value);
            }
            return data;
          });
        }
        return Promise.resolve().then(() => isArray2 ? store.getMany(keyPrefixed) : store.get(keyPrefixed)).then((data) => typeof data === "string" ? this.opts.deserialize(data) : this.opts.compression ? this.opts.deserialize(data) : data).then((data) => {
          if (data === void 0 || data === null) {
            return void 0;
          }
          if (isArray2) {
            const result = [];
            for (let row2 of data) {
              if (typeof row2 === "string") {
                row2 = this.opts.deserialize(row2);
              }
              if (row2 === void 0 || row2 === null) {
                result.push(void 0);
                continue;
              }
              if (typeof row2.expires === "number" && Date.now() > row2.expires) {
                this.delete(key2).then(() => void 0);
                result.push(void 0);
              } else {
                result.push(options && options.raw ? row2 : row2.value);
              }
            }
            return result;
          }
          if (typeof data.expires === "number" && Date.now() > data.expires) {
            return this.delete(key2).then(() => void 0);
          }
          return options && options.raw ? data : data.value;
        });
      }
      set(key2, value, ttl2) {
        const keyPrefixed = this._getKeyPrefix(key2);
        if (typeof ttl2 === "undefined") {
          ttl2 = this.opts.ttl;
        }
        if (ttl2 === 0) {
          ttl2 = void 0;
        }
        const { store } = this.opts;
        return Promise.resolve().then(() => {
          const expires = typeof ttl2 === "number" ? Date.now() + ttl2 : null;
          if (typeof value === "symbol") {
            this.emit("error", "symbol cannot be serialized");
          }
          value = { value, expires };
          return this.opts.serialize(value);
        }).then((value2) => store.set(keyPrefixed, value2, ttl2)).then(() => true);
      }
      delete(key2) {
        const { store } = this.opts;
        if (Array.isArray(key2)) {
          const keyPrefixed2 = this._getKeyPrefixArray(key2);
          if (store.deleteMany === void 0) {
            const promises = [];
            for (const key3 of keyPrefixed2) {
              promises.push(store.delete(key3));
            }
            return Promise.allSettled(promises).then((values) => values.every((x2) => x2.value === true));
          }
          return Promise.resolve().then(() => store.deleteMany(keyPrefixed2));
        }
        const keyPrefixed = this._getKeyPrefix(key2);
        return Promise.resolve().then(() => store.delete(keyPrefixed));
      }
      clear() {
        const { store } = this.opts;
        return Promise.resolve().then(() => store.clear());
      }
      has(key2) {
        const keyPrefixed = this._getKeyPrefix(key2);
        const { store } = this.opts;
        return Promise.resolve().then(async () => {
          if (typeof store.has === "function") {
            return store.has(keyPrefixed);
          }
          const value = await store.get(keyPrefixed);
          return value !== void 0;
        });
      }
      disconnect() {
        const { store } = this.opts;
        if (typeof store.disconnect === "function") {
          return store.disconnect();
        }
      }
    };
    module2.exports = Keyv2;
  }
});

// ../../node_modules/decompress-response/node_modules/mimic-response/index.js
var require_mimic_response = __commonJS({
  "../../node_modules/decompress-response/node_modules/mimic-response/index.js"(exports2, module2) {
    "use strict";
    var knownProperties2 = [
      "aborted",
      "complete",
      "headers",
      "httpVersion",
      "httpVersionMinor",
      "httpVersionMajor",
      "method",
      "rawHeaders",
      "rawTrailers",
      "setTimeout",
      "socket",
      "statusCode",
      "statusMessage",
      "trailers",
      "url"
    ];
    module2.exports = (fromStream, toStream) => {
      if (toStream._readableState.autoDestroy) {
        throw new Error("The second stream must have the `autoDestroy` option set to `false`");
      }
      const fromProperties = new Set(Object.keys(fromStream).concat(knownProperties2));
      const properties = {};
      for (const property of fromProperties) {
        if (property in toStream) {
          continue;
        }
        properties[property] = {
          get() {
            const value = fromStream[property];
            const isFunction2 = typeof value === "function";
            return isFunction2 ? value.bind(fromStream) : value;
          },
          set(value) {
            fromStream[property] = value;
          },
          enumerable: true,
          configurable: false
        };
      }
      Object.defineProperties(toStream, properties);
      fromStream.once("aborted", () => {
        toStream.destroy();
        toStream.emit("aborted");
      });
      fromStream.once("close", () => {
        if (fromStream.complete) {
          if (toStream.readable) {
            toStream.once("end", () => {
              toStream.emit("close");
            });
          } else {
            toStream.emit("close");
          }
        } else {
          toStream.emit("close");
        }
      });
      return toStream;
    };
  }
});

// ../../node_modules/decompress-response/index.js
var require_decompress_response = __commonJS({
  "../../node_modules/decompress-response/index.js"(exports2, module2) {
    "use strict";
    var { Transform, PassThrough: PassThrough3 } = require("stream");
    var zlib3 = require("zlib");
    var mimicResponse2 = require_mimic_response();
    module2.exports = (response) => {
      const contentEncoding = (response.headers["content-encoding"] || "").toLowerCase();
      if (!["gzip", "deflate", "br"].includes(contentEncoding)) {
        return response;
      }
      const isBrotli = contentEncoding === "br";
      if (isBrotli && typeof zlib3.createBrotliDecompress !== "function") {
        response.destroy(new Error("Brotli is not supported on Node.js < 12"));
        return response;
      }
      let isEmpty = true;
      const checker = new Transform({
        transform(data, _encoding, callback) {
          isEmpty = false;
          callback(null, data);
        },
        flush(callback) {
          callback();
        }
      });
      const finalStream = new PassThrough3({
        autoDestroy: false,
        destroy(error, callback) {
          response.destroy();
          callback(error);
        }
      });
      const decompressStream = isBrotli ? zlib3.createBrotliDecompress() : zlib3.createUnzip();
      decompressStream.once("error", (error) => {
        if (isEmpty && !response.readable) {
          finalStream.end();
          return;
        }
        finalStream.destroy(error);
      });
      mimicResponse2(response, finalStream);
      response.pipe(checker).pipe(decompressStream).pipe(finalStream);
      return finalStream;
    };
  }
});

// ../../node_modules/http2-wrapper/node_modules/quick-lru/index.js
var require_quick_lru = __commonJS({
  "../../node_modules/http2-wrapper/node_modules/quick-lru/index.js"(exports2, module2) {
    "use strict";
    var QuickLRU = class {
      constructor(options = {}) {
        if (!(options.maxSize && options.maxSize > 0)) {
          throw new TypeError("`maxSize` must be a number greater than 0");
        }
        this.maxSize = options.maxSize;
        this.onEviction = options.onEviction;
        this.cache = /* @__PURE__ */ new Map();
        this.oldCache = /* @__PURE__ */ new Map();
        this._size = 0;
      }
      _set(key2, value) {
        this.cache.set(key2, value);
        this._size++;
        if (this._size >= this.maxSize) {
          this._size = 0;
          if (typeof this.onEviction === "function") {
            for (const [key3, value2] of this.oldCache.entries()) {
              this.onEviction(key3, value2);
            }
          }
          this.oldCache = this.cache;
          this.cache = /* @__PURE__ */ new Map();
        }
      }
      get(key2) {
        if (this.cache.has(key2)) {
          return this.cache.get(key2);
        }
        if (this.oldCache.has(key2)) {
          const value = this.oldCache.get(key2);
          this.oldCache.delete(key2);
          this._set(key2, value);
          return value;
        }
      }
      set(key2, value) {
        if (this.cache.has(key2)) {
          this.cache.set(key2, value);
        } else {
          this._set(key2, value);
        }
        return this;
      }
      has(key2) {
        return this.cache.has(key2) || this.oldCache.has(key2);
      }
      peek(key2) {
        if (this.cache.has(key2)) {
          return this.cache.get(key2);
        }
        if (this.oldCache.has(key2)) {
          return this.oldCache.get(key2);
        }
      }
      delete(key2) {
        const deleted = this.cache.delete(key2);
        if (deleted) {
          this._size--;
        }
        return this.oldCache.delete(key2) || deleted;
      }
      clear() {
        this.cache.clear();
        this.oldCache.clear();
        this._size = 0;
      }
      *keys() {
        for (const [key2] of this) {
          yield key2;
        }
      }
      *values() {
        for (const [, value] of this) {
          yield value;
        }
      }
      *[Symbol.iterator]() {
        for (const item of this.cache) {
          yield item;
        }
        for (const item of this.oldCache) {
          const [key2] = item;
          if (!this.cache.has(key2)) {
            yield item;
          }
        }
      }
      get size() {
        let oldCacheSize = 0;
        for (const key2 of this.oldCache.keys()) {
          if (!this.cache.has(key2)) {
            oldCacheSize++;
          }
        }
        return Math.min(this._size + oldCacheSize, this.maxSize);
      }
    };
    module2.exports = QuickLRU;
  }
});

// ../../node_modules/http2-wrapper/source/utils/delay-async-destroy.js
var require_delay_async_destroy = __commonJS({
  "../../node_modules/http2-wrapper/source/utils/delay-async-destroy.js"(exports2, module2) {
    "use strict";
    module2.exports = (stream3) => {
      if (stream3.listenerCount("error") !== 0) {
        return stream3;
      }
      stream3.__destroy = stream3._destroy;
      stream3._destroy = (...args) => {
        const callback = args.pop();
        stream3.__destroy(...args, async (error) => {
          await Promise.resolve();
          callback(error);
        });
      };
      const onError = (error) => {
        Promise.resolve().then(() => {
          stream3.emit("error", error);
        });
      };
      stream3.once("error", onError);
      Promise.resolve().then(() => {
        stream3.off("error", onError);
      });
      return stream3;
    };
  }
});

// ../../node_modules/http2-wrapper/source/agent.js
var require_agent = __commonJS({
  "../../node_modules/http2-wrapper/source/agent.js"(exports2, module2) {
    "use strict";
    var { URL: URL4 } = require("url");
    var EventEmitter4 = require("events");
    var tls = require("tls");
    var http22 = require("http2");
    var QuickLRU = require_quick_lru();
    var delayAsyncDestroy = require_delay_async_destroy();
    var kCurrentStreamCount = Symbol("currentStreamCount");
    var kRequest = Symbol("request");
    var kOriginSet = Symbol("cachedOriginSet");
    var kGracefullyClosing = Symbol("gracefullyClosing");
    var kLength = Symbol("length");
    var nameKeys = [
      // Not an Agent option actually
      "createConnection",
      // `http2.connect()` options
      "maxDeflateDynamicTableSize",
      "maxSettings",
      "maxSessionMemory",
      "maxHeaderListPairs",
      "maxOutstandingPings",
      "maxReservedRemoteStreams",
      "maxSendHeaderBlockLength",
      "paddingStrategy",
      "peerMaxConcurrentStreams",
      "settings",
      // `tls.connect()` source options
      "family",
      "localAddress",
      "rejectUnauthorized",
      // `tls.connect()` secure context options
      "pskCallback",
      "minDHSize",
      // `tls.connect()` destination options
      // - `servername` is automatically validated, skip it
      // - `host` and `port` just describe the destination server,
      "path",
      "socket",
      // `tls.createSecureContext()` options
      "ca",
      "cert",
      "sigalgs",
      "ciphers",
      "clientCertEngine",
      "crl",
      "dhparam",
      "ecdhCurve",
      "honorCipherOrder",
      "key",
      "privateKeyEngine",
      "privateKeyIdentifier",
      "maxVersion",
      "minVersion",
      "pfx",
      "secureOptions",
      "secureProtocol",
      "sessionIdContext",
      "ticketKeys"
    ];
    var getSortedIndex = (array, value, compare3) => {
      let low = 0;
      let high = array.length;
      while (low < high) {
        const mid = low + high >>> 1;
        if (compare3(array[mid], value)) {
          low = mid + 1;
        } else {
          high = mid;
        }
      }
      return low;
    };
    var compareSessions = (a2, b) => a2.remoteSettings.maxConcurrentStreams > b.remoteSettings.maxConcurrentStreams;
    var closeCoveredSessions = (where, session) => {
      for (let index4 = 0; index4 < where.length; index4++) {
        const coveredSession = where[index4];
        if (
          // Unfortunately `.every()` returns true for an empty array
          coveredSession[kOriginSet].length > 0 && coveredSession[kOriginSet].length < session[kOriginSet].length && coveredSession[kOriginSet].every((origin) => session[kOriginSet].includes(origin)) && coveredSession[kCurrentStreamCount] + session[kCurrentStreamCount] <= session.remoteSettings.maxConcurrentStreams
        ) {
          gracefullyClose(coveredSession);
        }
      }
    };
    var closeSessionIfCovered = (where, coveredSession) => {
      for (let index4 = 0; index4 < where.length; index4++) {
        const session = where[index4];
        if (coveredSession[kOriginSet].length > 0 && coveredSession[kOriginSet].length < session[kOriginSet].length && coveredSession[kOriginSet].every((origin) => session[kOriginSet].includes(origin)) && coveredSession[kCurrentStreamCount] + session[kCurrentStreamCount] <= session.remoteSettings.maxConcurrentStreams) {
          gracefullyClose(coveredSession);
          return true;
        }
      }
      return false;
    };
    var gracefullyClose = (session) => {
      session[kGracefullyClosing] = true;
      if (session[kCurrentStreamCount] === 0) {
        session.close();
      }
    };
    var Agent = class _Agent extends EventEmitter4 {
      constructor({ timeout = 0, maxSessions = Number.POSITIVE_INFINITY, maxEmptySessions = 10, maxCachedTlsSessions = 100 } = {}) {
        super();
        this.sessions = {};
        this.queue = {};
        this.timeout = timeout;
        this.maxSessions = maxSessions;
        this.maxEmptySessions = maxEmptySessions;
        this._emptySessionCount = 0;
        this._sessionCount = 0;
        this.settings = {
          enablePush: false,
          initialWindowSize: 1024 * 1024 * 32
          // 32MB, see https://github.com/nodejs/node/issues/38426
        };
        this.tlsSessionCache = new QuickLRU({ maxSize: maxCachedTlsSessions });
      }
      get protocol() {
        return "https:";
      }
      normalizeOptions(options) {
        let normalized = "";
        for (let index4 = 0; index4 < nameKeys.length; index4++) {
          const key2 = nameKeys[index4];
          normalized += ":";
          if (options && options[key2] !== void 0) {
            normalized += options[key2];
          }
        }
        return normalized;
      }
      _processQueue() {
        if (this._sessionCount >= this.maxSessions) {
          this.closeEmptySessions(this.maxSessions - this._sessionCount + 1);
          return;
        }
        for (const normalizedOptions in this.queue) {
          for (const normalizedOrigin in this.queue[normalizedOptions]) {
            const item = this.queue[normalizedOptions][normalizedOrigin];
            if (!item.completed) {
              item.completed = true;
              item();
            }
          }
        }
      }
      _isBetterSession(thisStreamCount, thatStreamCount) {
        return thisStreamCount > thatStreamCount;
      }
      _accept(session, listeners, normalizedOrigin, options) {
        let index4 = 0;
        while (index4 < listeners.length && session[kCurrentStreamCount] < session.remoteSettings.maxConcurrentStreams) {
          listeners[index4].resolve(session);
          index4++;
        }
        listeners.splice(0, index4);
        if (listeners.length > 0) {
          this.getSession(normalizedOrigin, options, listeners);
          listeners.length = 0;
        }
      }
      getSession(origin, options, listeners) {
        return new Promise((resolve9, reject) => {
          if (Array.isArray(listeners) && listeners.length > 0) {
            listeners = [...listeners];
            resolve9();
          } else {
            listeners = [{ resolve: resolve9, reject }];
          }
          try {
            if (typeof origin === "string") {
              origin = new URL4(origin);
            } else if (!(origin instanceof URL4)) {
              throw new TypeError("The `origin` argument needs to be a string or an URL object");
            }
            if (options) {
              const { servername } = options;
              const { hostname } = origin;
              if (servername && hostname !== servername) {
                throw new Error(`Origin ${hostname} differs from servername ${servername}`);
              }
            }
          } catch (error) {
            for (let index4 = 0; index4 < listeners.length; index4++) {
              listeners[index4].reject(error);
            }
            return;
          }
          const normalizedOptions = this.normalizeOptions(options);
          const normalizedOrigin = origin.origin;
          if (normalizedOptions in this.sessions) {
            const sessions = this.sessions[normalizedOptions];
            let maxConcurrentStreams = -1;
            let currentStreamsCount = -1;
            let optimalSession;
            for (let index4 = 0; index4 < sessions.length; index4++) {
              const session = sessions[index4];
              const sessionMaxConcurrentStreams = session.remoteSettings.maxConcurrentStreams;
              if (sessionMaxConcurrentStreams < maxConcurrentStreams) {
                break;
              }
              if (!session[kOriginSet].includes(normalizedOrigin)) {
                continue;
              }
              const sessionCurrentStreamsCount = session[kCurrentStreamCount];
              if (sessionCurrentStreamsCount >= sessionMaxConcurrentStreams || session[kGracefullyClosing] || session.destroyed) {
                continue;
              }
              if (!optimalSession) {
                maxConcurrentStreams = sessionMaxConcurrentStreams;
              }
              if (this._isBetterSession(sessionCurrentStreamsCount, currentStreamsCount)) {
                optimalSession = session;
                currentStreamsCount = sessionCurrentStreamsCount;
              }
            }
            if (optimalSession) {
              this._accept(optimalSession, listeners, normalizedOrigin, options);
              return;
            }
          }
          if (normalizedOptions in this.queue) {
            if (normalizedOrigin in this.queue[normalizedOptions]) {
              this.queue[normalizedOptions][normalizedOrigin].listeners.push(...listeners);
              return;
            }
          } else {
            this.queue[normalizedOptions] = {
              [kLength]: 0
            };
          }
          const removeFromQueue = () => {
            if (normalizedOptions in this.queue && this.queue[normalizedOptions][normalizedOrigin] === entry) {
              delete this.queue[normalizedOptions][normalizedOrigin];
              if (--this.queue[normalizedOptions][kLength] === 0) {
                delete this.queue[normalizedOptions];
              }
            }
          };
          const entry = async () => {
            this._sessionCount++;
            const name3 = `${normalizedOrigin}:${normalizedOptions}`;
            let receivedSettings = false;
            let socket;
            try {
              const computedOptions = { ...options };
              if (computedOptions.settings === void 0) {
                computedOptions.settings = this.settings;
              }
              if (computedOptions.session === void 0) {
                computedOptions.session = this.tlsSessionCache.get(name3);
              }
              const createConnection = computedOptions.createConnection || this.createConnection;
              socket = await createConnection.call(this, origin, computedOptions);
              computedOptions.createConnection = () => socket;
              const session = http22.connect(origin, computedOptions);
              session[kCurrentStreamCount] = 0;
              session[kGracefullyClosing] = false;
              const getOriginSet = () => {
                const { socket: socket2 } = session;
                let originSet;
                if (socket2.servername === false) {
                  socket2.servername = socket2.remoteAddress;
                  originSet = session.originSet;
                  socket2.servername = false;
                } else {
                  originSet = session.originSet;
                }
                return originSet;
              };
              const isFree = () => session[kCurrentStreamCount] < session.remoteSettings.maxConcurrentStreams;
              session.socket.once("session", (tlsSession) => {
                this.tlsSessionCache.set(name3, tlsSession);
              });
              session.once("error", (error) => {
                for (let index4 = 0; index4 < listeners.length; index4++) {
                  listeners[index4].reject(error);
                }
                this.tlsSessionCache.delete(name3);
              });
              session.setTimeout(this.timeout, () => {
                session.destroy();
              });
              session.once("close", () => {
                this._sessionCount--;
                if (receivedSettings) {
                  this._emptySessionCount--;
                  const where = this.sessions[normalizedOptions];
                  if (where.length === 1) {
                    delete this.sessions[normalizedOptions];
                  } else {
                    where.splice(where.indexOf(session), 1);
                  }
                } else {
                  removeFromQueue();
                  const error = new Error("Session closed without receiving a SETTINGS frame");
                  error.code = "HTTP2WRAPPER_NOSETTINGS";
                  for (let index4 = 0; index4 < listeners.length; index4++) {
                    listeners[index4].reject(error);
                  }
                }
                this._processQueue();
              });
              const processListeners = () => {
                const queue = this.queue[normalizedOptions];
                if (!queue) {
                  return;
                }
                const originSet = session[kOriginSet];
                for (let index4 = 0; index4 < originSet.length; index4++) {
                  const origin2 = originSet[index4];
                  if (origin2 in queue) {
                    const { listeners: listeners2, completed: completed2 } = queue[origin2];
                    let index5 = 0;
                    while (index5 < listeners2.length && isFree()) {
                      listeners2[index5].resolve(session);
                      index5++;
                    }
                    queue[origin2].listeners.splice(0, index5);
                    if (queue[origin2].listeners.length === 0 && !completed2) {
                      delete queue[origin2];
                      if (--queue[kLength] === 0) {
                        delete this.queue[normalizedOptions];
                        break;
                      }
                    }
                    if (!isFree()) {
                      break;
                    }
                  }
                }
              };
              session.on("origin", () => {
                session[kOriginSet] = getOriginSet() || [];
                session[kGracefullyClosing] = false;
                closeSessionIfCovered(this.sessions[normalizedOptions], session);
                if (session[kGracefullyClosing] || !isFree()) {
                  return;
                }
                processListeners();
                if (!isFree()) {
                  return;
                }
                closeCoveredSessions(this.sessions[normalizedOptions], session);
              });
              session.once("remoteSettings", () => {
                if (entry.destroyed) {
                  const error = new Error("Agent has been destroyed");
                  for (let index4 = 0; index4 < listeners.length; index4++) {
                    listeners[index4].reject(error);
                  }
                  session.destroy();
                  return;
                }
                if (session.setLocalWindowSize) {
                  session.setLocalWindowSize(1024 * 1024 * 4);
                }
                session[kOriginSet] = getOriginSet() || [];
                if (session.socket.encrypted) {
                  const mainOrigin = session[kOriginSet][0];
                  if (mainOrigin !== normalizedOrigin) {
                    const error = new Error(`Requested origin ${normalizedOrigin} does not match server ${mainOrigin}`);
                    for (let index4 = 0; index4 < listeners.length; index4++) {
                      listeners[index4].reject(error);
                    }
                    session.destroy();
                    return;
                  }
                }
                removeFromQueue();
                {
                  const where = this.sessions;
                  if (normalizedOptions in where) {
                    const sessions = where[normalizedOptions];
                    sessions.splice(getSortedIndex(sessions, session, compareSessions), 0, session);
                  } else {
                    where[normalizedOptions] = [session];
                  }
                }
                receivedSettings = true;
                this._emptySessionCount++;
                this.emit("session", session);
                this._accept(session, listeners, normalizedOrigin, options);
                if (session[kCurrentStreamCount] === 0 && this._emptySessionCount > this.maxEmptySessions) {
                  this.closeEmptySessions(this._emptySessionCount - this.maxEmptySessions);
                }
                session.on("remoteSettings", () => {
                  if (!isFree()) {
                    return;
                  }
                  processListeners();
                  if (!isFree()) {
                    return;
                  }
                  closeCoveredSessions(this.sessions[normalizedOptions], session);
                });
              });
              session[kRequest] = session.request;
              session.request = (headers, streamOptions) => {
                if (session[kGracefullyClosing]) {
                  throw new Error("The session is gracefully closing. No new streams are allowed.");
                }
                const stream3 = session[kRequest](headers, streamOptions);
                session.ref();
                if (session[kCurrentStreamCount]++ === 0) {
                  this._emptySessionCount--;
                }
                stream3.once("close", () => {
                  if (--session[kCurrentStreamCount] === 0) {
                    this._emptySessionCount++;
                    session.unref();
                    if (this._emptySessionCount > this.maxEmptySessions || session[kGracefullyClosing]) {
                      session.close();
                      return;
                    }
                  }
                  if (session.destroyed || session.closed) {
                    return;
                  }
                  if (isFree() && !closeSessionIfCovered(this.sessions[normalizedOptions], session)) {
                    closeCoveredSessions(this.sessions[normalizedOptions], session);
                    processListeners();
                    if (session[kCurrentStreamCount] === 0) {
                      this._processQueue();
                    }
                  }
                });
                return stream3;
              };
            } catch (error) {
              removeFromQueue();
              this._sessionCount--;
              for (let index4 = 0; index4 < listeners.length; index4++) {
                listeners[index4].reject(error);
              }
            }
          };
          entry.listeners = listeners;
          entry.completed = false;
          entry.destroyed = false;
          this.queue[normalizedOptions][normalizedOrigin] = entry;
          this.queue[normalizedOptions][kLength]++;
          this._processQueue();
        });
      }
      request(origin, options, headers, streamOptions) {
        return new Promise((resolve9, reject) => {
          this.getSession(origin, options, [{
            reject,
            resolve: (session) => {
              try {
                const stream3 = session.request(headers, streamOptions);
                delayAsyncDestroy(stream3);
                resolve9(stream3);
              } catch (error) {
                reject(error);
              }
            }
          }]);
        });
      }
      async createConnection(origin, options) {
        return _Agent.connect(origin, options);
      }
      static connect(origin, options) {
        options.ALPNProtocols = ["h2"];
        const port = origin.port || 443;
        const host = origin.hostname;
        if (typeof options.servername === "undefined") {
          options.servername = host;
        }
        const socket = tls.connect(port, host, options);
        if (options.socket) {
          socket._peername = {
            family: void 0,
            address: void 0,
            port
          };
        }
        return socket;
      }
      closeEmptySessions(maxCount = Number.POSITIVE_INFINITY) {
        let closedCount = 0;
        const { sessions } = this;
        for (const key2 in sessions) {
          const thisSessions = sessions[key2];
          for (let index4 = 0; index4 < thisSessions.length; index4++) {
            const session = thisSessions[index4];
            if (session[kCurrentStreamCount] === 0) {
              closedCount++;
              session.close();
              if (closedCount >= maxCount) {
                return closedCount;
              }
            }
          }
        }
        return closedCount;
      }
      destroy(reason) {
        const { sessions, queue } = this;
        for (const key2 in sessions) {
          const thisSessions = sessions[key2];
          for (let index4 = 0; index4 < thisSessions.length; index4++) {
            thisSessions[index4].destroy(reason);
          }
        }
        for (const normalizedOptions in queue) {
          const entries2 = queue[normalizedOptions];
          for (const normalizedOrigin in entries2) {
            entries2[normalizedOrigin].destroyed = true;
          }
        }
        this.queue = {};
        this.tlsSessionCache.clear();
      }
      get emptySessionCount() {
        return this._emptySessionCount;
      }
      get pendingSessionCount() {
        return this._sessionCount - this._emptySessionCount;
      }
      get sessionCount() {
        return this._sessionCount;
      }
    };
    Agent.kCurrentStreamCount = kCurrentStreamCount;
    Agent.kGracefullyClosing = kGracefullyClosing;
    module2.exports = {
      Agent,
      globalAgent: new Agent()
    };
  }
});

// ../../node_modules/http2-wrapper/source/incoming-message.js
var require_incoming_message = __commonJS({
  "../../node_modules/http2-wrapper/source/incoming-message.js"(exports2, module2) {
    "use strict";
    var { Readable } = require("stream");
    var IncomingMessage = class extends Readable {
      constructor(socket, highWaterMark) {
        super({
          emitClose: false,
          autoDestroy: true,
          highWaterMark
        });
        this.statusCode = null;
        this.statusMessage = "";
        this.httpVersion = "2.0";
        this.httpVersionMajor = 2;
        this.httpVersionMinor = 0;
        this.headers = {};
        this.trailers = {};
        this.req = null;
        this.aborted = false;
        this.complete = false;
        this.upgrade = null;
        this.rawHeaders = [];
        this.rawTrailers = [];
        this.socket = socket;
        this._dumped = false;
      }
      get connection() {
        return this.socket;
      }
      set connection(value) {
        this.socket = value;
      }
      _destroy(error, callback) {
        if (!this.readableEnded) {
          this.aborted = true;
        }
        callback();
        this.req._request.destroy(error);
      }
      setTimeout(ms, callback) {
        this.req.setTimeout(ms, callback);
        return this;
      }
      _dump() {
        if (!this._dumped) {
          this._dumped = true;
          this.removeAllListeners("data");
          this.resume();
        }
      }
      _read() {
        if (this.req) {
          this.req._request.resume();
        }
      }
    };
    module2.exports = IncomingMessage;
  }
});

// ../../node_modules/http2-wrapper/source/utils/proxy-events.js
var require_proxy_events = __commonJS({
  "../../node_modules/http2-wrapper/source/utils/proxy-events.js"(exports2, module2) {
    "use strict";
    module2.exports = (from4, to, events) => {
      for (const event of events) {
        from4.on(event, (...args) => to.emit(event, ...args));
      }
    };
  }
});

// ../../node_modules/http2-wrapper/source/utils/errors.js
var require_errors3 = __commonJS({
  "../../node_modules/http2-wrapper/source/utils/errors.js"(exports2, module2) {
    "use strict";
    var makeError = (Base, key2, getMessage) => {
      module2.exports[key2] = class NodeError extends Base {
        constructor(...args) {
          super(typeof getMessage === "string" ? getMessage : getMessage(args));
          this.name = `${super.name} [${key2}]`;
          this.code = key2;
        }
      };
    };
    makeError(TypeError, "ERR_INVALID_ARG_TYPE", (args) => {
      const type2 = args[0].includes(".") ? "property" : "argument";
      let valid2 = args[1];
      const isManyTypes = Array.isArray(valid2);
      if (isManyTypes) {
        valid2 = `${valid2.slice(0, -1).join(", ")} or ${valid2.slice(-1)}`;
      }
      return `The "${args[0]}" ${type2} must be ${isManyTypes ? "one of" : "of"} type ${valid2}. Received ${typeof args[2]}`;
    });
    makeError(
      TypeError,
      "ERR_INVALID_PROTOCOL",
      (args) => `Protocol "${args[0]}" not supported. Expected "${args[1]}"`
    );
    makeError(
      Error,
      "ERR_HTTP_HEADERS_SENT",
      (args) => `Cannot ${args[0]} headers after they are sent to the client`
    );
    makeError(
      TypeError,
      "ERR_INVALID_HTTP_TOKEN",
      (args) => `${args[0]} must be a valid HTTP token [${args[1]}]`
    );
    makeError(
      TypeError,
      "ERR_HTTP_INVALID_HEADER_VALUE",
      (args) => `Invalid value "${args[0]} for header "${args[1]}"`
    );
    makeError(
      TypeError,
      "ERR_INVALID_CHAR",
      (args) => `Invalid character in ${args[0]} [${args[1]}]`
    );
    makeError(
      Error,
      "ERR_HTTP2_NO_SOCKET_MANIPULATION",
      "HTTP/2 sockets should not be directly manipulated (e.g. read and written)"
    );
  }
});

// ../../node_modules/http2-wrapper/source/utils/is-request-pseudo-header.js
var require_is_request_pseudo_header = __commonJS({
  "../../node_modules/http2-wrapper/source/utils/is-request-pseudo-header.js"(exports2, module2) {
    "use strict";
    module2.exports = (header) => {
      switch (header) {
        case ":method":
        case ":scheme":
        case ":authority":
        case ":path":
          return true;
        default:
          return false;
      }
    };
  }
});

// ../../node_modules/http2-wrapper/source/utils/validate-header-name.js
var require_validate_header_name = __commonJS({
  "../../node_modules/http2-wrapper/source/utils/validate-header-name.js"(exports2, module2) {
    "use strict";
    var { ERR_INVALID_HTTP_TOKEN } = require_errors3();
    var isRequestPseudoHeader = require_is_request_pseudo_header();
    var isValidHttpToken = /^[\^`\-\w!#$%&*+.|~]+$/;
    module2.exports = (name3) => {
      if (typeof name3 !== "string" || !isValidHttpToken.test(name3) && !isRequestPseudoHeader(name3)) {
        throw new ERR_INVALID_HTTP_TOKEN("Header name", name3);
      }
    };
  }
});

// ../../node_modules/http2-wrapper/source/utils/validate-header-value.js
var require_validate_header_value = __commonJS({
  "../../node_modules/http2-wrapper/source/utils/validate-header-value.js"(exports2, module2) {
    "use strict";
    var {
      ERR_HTTP_INVALID_HEADER_VALUE,
      ERR_INVALID_CHAR
    } = require_errors3();
    var isInvalidHeaderValue = /[^\t\u0020-\u007E\u0080-\u00FF]/;
    module2.exports = (name3, value) => {
      if (typeof value === "undefined") {
        throw new ERR_HTTP_INVALID_HEADER_VALUE(value, name3);
      }
      if (isInvalidHeaderValue.test(value)) {
        throw new ERR_INVALID_CHAR("header content", name3);
      }
    };
  }
});

// ../../node_modules/http2-wrapper/source/utils/proxy-socket-handler.js
var require_proxy_socket_handler = __commonJS({
  "../../node_modules/http2-wrapper/source/utils/proxy-socket-handler.js"(exports2, module2) {
    "use strict";
    var { ERR_HTTP2_NO_SOCKET_MANIPULATION } = require_errors3();
    var proxySocketHandler = {
      has(stream3, property) {
        const reference = stream3.session === void 0 ? stream3 : stream3.session.socket;
        return property in stream3 || property in reference;
      },
      get(stream3, property) {
        switch (property) {
          case "on":
          case "once":
          case "end":
          case "emit":
          case "destroy":
            return stream3[property].bind(stream3);
          case "writable":
          case "destroyed":
            return stream3[property];
          case "readable":
            if (stream3.destroyed) {
              return false;
            }
            return stream3.readable;
          case "setTimeout": {
            const { session } = stream3;
            if (session !== void 0) {
              return session.setTimeout.bind(session);
            }
            return stream3.setTimeout.bind(stream3);
          }
          case "write":
          case "read":
          case "pause":
          case "resume":
            throw new ERR_HTTP2_NO_SOCKET_MANIPULATION();
          default: {
            const reference = stream3.session === void 0 ? stream3 : stream3.session.socket;
            const value = reference[property];
            return typeof value === "function" ? value.bind(reference) : value;
          }
        }
      },
      getPrototypeOf(stream3) {
        if (stream3.session !== void 0) {
          return Reflect.getPrototypeOf(stream3.session.socket);
        }
        return Reflect.getPrototypeOf(stream3);
      },
      set(stream3, property, value) {
        switch (property) {
          case "writable":
          case "readable":
          case "destroyed":
          case "on":
          case "once":
          case "end":
          case "emit":
          case "destroy":
            stream3[property] = value;
            return true;
          case "setTimeout": {
            const { session } = stream3;
            if (session === void 0) {
              stream3.setTimeout = value;
            } else {
              session.setTimeout = value;
            }
            return true;
          }
          case "write":
          case "read":
          case "pause":
          case "resume":
            throw new ERR_HTTP2_NO_SOCKET_MANIPULATION();
          default: {
            const reference = stream3.session === void 0 ? stream3 : stream3.session.socket;
            reference[property] = value;
            return true;
          }
        }
      }
    };
    module2.exports = proxySocketHandler;
  }
});

// ../../node_modules/http2-wrapper/source/client-request.js
var require_client_request = __commonJS({
  "../../node_modules/http2-wrapper/source/client-request.js"(exports2, module2) {
    "use strict";
    var { URL: URL4, urlToHttpOptions } = require("url");
    var http22 = require("http2");
    var { Writable: Writable2 } = require("stream");
    var { Agent, globalAgent } = require_agent();
    var IncomingMessage = require_incoming_message();
    var proxyEvents2 = require_proxy_events();
    var {
      ERR_INVALID_ARG_TYPE,
      ERR_INVALID_PROTOCOL,
      ERR_HTTP_HEADERS_SENT
    } = require_errors3();
    var validateHeaderName2 = require_validate_header_name();
    var validateHeaderValue2 = require_validate_header_value();
    var proxySocketHandler = require_proxy_socket_handler();
    var {
      HTTP2_HEADER_STATUS,
      HTTP2_HEADER_METHOD,
      HTTP2_HEADER_PATH,
      HTTP2_HEADER_AUTHORITY,
      HTTP2_METHOD_CONNECT
    } = http22.constants;
    var kHeaders = Symbol("headers");
    var kOrigin = Symbol("origin");
    var kSession = Symbol("session");
    var kOptions = Symbol("options");
    var kFlushedHeaders = Symbol("flushedHeaders");
    var kJobs = Symbol("jobs");
    var kPendingAgentPromise = Symbol("pendingAgentPromise");
    var ClientRequest = class extends Writable2 {
      constructor(input3, options, callback) {
        super({
          autoDestroy: false,
          emitClose: false
        });
        if (typeof input3 === "string") {
          input3 = urlToHttpOptions(new URL4(input3));
        } else if (input3 instanceof URL4) {
          input3 = urlToHttpOptions(input3);
        } else {
          input3 = { ...input3 };
        }
        if (typeof options === "function" || options === void 0) {
          callback = options;
          options = input3;
        } else {
          options = Object.assign(input3, options);
        }
        if (options.h2session) {
          this[kSession] = options.h2session;
          if (this[kSession].destroyed) {
            throw new Error("The session has been closed already");
          }
          this.protocol = this[kSession].socket.encrypted ? "https:" : "http:";
        } else if (options.agent === false) {
          this.agent = new Agent({ maxEmptySessions: 0 });
        } else if (typeof options.agent === "undefined" || options.agent === null) {
          this.agent = globalAgent;
        } else if (typeof options.agent.request === "function") {
          this.agent = options.agent;
        } else {
          throw new ERR_INVALID_ARG_TYPE("options.agent", ["http2wrapper.Agent-like Object", "undefined", "false"], options.agent);
        }
        if (this.agent) {
          this.protocol = this.agent.protocol;
        }
        if (options.protocol && options.protocol !== this.protocol) {
          throw new ERR_INVALID_PROTOCOL(options.protocol, this.protocol);
        }
        if (!options.port) {
          options.port = options.defaultPort || this.agent && this.agent.defaultPort || 443;
        }
        options.host = options.hostname || options.host || "localhost";
        delete options.hostname;
        const { timeout } = options;
        options.timeout = void 0;
        this[kHeaders] = /* @__PURE__ */ Object.create(null);
        this[kJobs] = [];
        this[kPendingAgentPromise] = void 0;
        this.socket = null;
        this.connection = null;
        this.method = options.method || "GET";
        if (!(this.method === "CONNECT" && (options.path === "/" || options.path === void 0))) {
          this.path = options.path;
        }
        this.res = null;
        this.aborted = false;
        this.reusedSocket = false;
        const { headers } = options;
        if (headers) {
          for (const header in headers) {
            this.setHeader(header, headers[header]);
          }
        }
        if (options.auth && !("authorization" in this[kHeaders])) {
          this[kHeaders].authorization = "Basic " + Buffer.from(options.auth).toString("base64");
        }
        options.session = options.tlsSession;
        options.path = options.socketPath;
        this[kOptions] = options;
        this[kOrigin] = new URL4(`${this.protocol}//${options.servername || options.host}:${options.port}`);
        const reuseSocket = options._reuseSocket;
        if (reuseSocket) {
          options.createConnection = (...args) => {
            if (reuseSocket.destroyed) {
              return this.agent.createConnection(...args);
            }
            return reuseSocket;
          };
          this.agent.getSession(this[kOrigin], this[kOptions]).catch(() => {
          });
        }
        if (timeout) {
          this.setTimeout(timeout);
        }
        if (callback) {
          this.once("response", callback);
        }
        this[kFlushedHeaders] = false;
      }
      get method() {
        return this[kHeaders][HTTP2_HEADER_METHOD];
      }
      set method(value) {
        if (value) {
          this[kHeaders][HTTP2_HEADER_METHOD] = value.toUpperCase();
        }
      }
      get path() {
        const header = this.method === "CONNECT" ? HTTP2_HEADER_AUTHORITY : HTTP2_HEADER_PATH;
        return this[kHeaders][header];
      }
      set path(value) {
        if (value) {
          const header = this.method === "CONNECT" ? HTTP2_HEADER_AUTHORITY : HTTP2_HEADER_PATH;
          this[kHeaders][header] = value;
        }
      }
      get host() {
        return this[kOrigin].hostname;
      }
      set host(_value) {
      }
      get _mustNotHaveABody() {
        return this.method === "GET" || this.method === "HEAD" || this.method === "DELETE";
      }
      _write(chunk, encoding, callback) {
        if (this._mustNotHaveABody) {
          callback(new Error("The GET, HEAD and DELETE methods must NOT have a body"));
          return;
        }
        this.flushHeaders();
        const callWrite = () => this._request.write(chunk, encoding, callback);
        if (this._request) {
          callWrite();
        } else {
          this[kJobs].push(callWrite);
        }
      }
      _final(callback) {
        this.flushHeaders();
        const callEnd = () => {
          if (this._mustNotHaveABody || this.method === "CONNECT") {
            callback();
            return;
          }
          this._request.end(callback);
        };
        if (this._request) {
          callEnd();
        } else {
          this[kJobs].push(callEnd);
        }
      }
      abort() {
        if (this.res && this.res.complete) {
          return;
        }
        if (!this.aborted) {
          process.nextTick(() => this.emit("abort"));
        }
        this.aborted = true;
        this.destroy();
      }
      async _destroy(error, callback) {
        if (this.res) {
          this.res._dump();
        }
        if (this._request) {
          this._request.destroy();
        } else {
          process.nextTick(() => {
            this.emit("close");
          });
        }
        try {
          await this[kPendingAgentPromise];
        } catch (internalError) {
          if (this.aborted) {
            error = internalError;
          }
        }
        callback(error);
      }
      async flushHeaders() {
        if (this[kFlushedHeaders] || this.destroyed) {
          return;
        }
        this[kFlushedHeaders] = true;
        const isConnectMethod = this.method === HTTP2_METHOD_CONNECT;
        const onStream = (stream3) => {
          this._request = stream3;
          if (this.destroyed) {
            stream3.destroy();
            return;
          }
          if (!isConnectMethod) {
            proxyEvents2(stream3, this, ["timeout", "continue"]);
          }
          stream3.once("error", (error) => {
            this.destroy(error);
          });
          stream3.once("aborted", () => {
            const { res } = this;
            if (res) {
              res.aborted = true;
              res.emit("aborted");
              res.destroy();
            } else {
              this.destroy(new Error("The server aborted the HTTP/2 stream"));
            }
          });
          const onResponse = (headers, flags, rawHeaders) => {
            const response = new IncomingMessage(this.socket, stream3.readableHighWaterMark);
            this.res = response;
            response.url = `${this[kOrigin].origin}${this.path}`;
            response.req = this;
            response.statusCode = headers[HTTP2_HEADER_STATUS];
            response.headers = headers;
            response.rawHeaders = rawHeaders;
            response.once("end", () => {
              response.complete = true;
              response.socket = null;
              response.connection = null;
            });
            if (isConnectMethod) {
              response.upgrade = true;
              if (this.emit("connect", response, stream3, Buffer.alloc(0))) {
                this.emit("close");
              } else {
                stream3.destroy();
              }
            } else {
              stream3.on("data", (chunk) => {
                if (!response._dumped && !response.push(chunk)) {
                  stream3.pause();
                }
              });
              stream3.once("end", () => {
                if (!this.aborted) {
                  response.push(null);
                }
              });
              if (!this.emit("response", response)) {
                response._dump();
              }
            }
          };
          stream3.once("response", onResponse);
          stream3.once("headers", (headers) => this.emit("information", { statusCode: headers[HTTP2_HEADER_STATUS] }));
          stream3.once("trailers", (trailers, flags, rawTrailers) => {
            const { res } = this;
            if (res === null) {
              onResponse(trailers, flags, rawTrailers);
              return;
            }
            res.trailers = trailers;
            res.rawTrailers = rawTrailers;
          });
          stream3.once("close", () => {
            const { aborted, res } = this;
            if (res) {
              if (aborted) {
                res.aborted = true;
                res.emit("aborted");
                res.destroy();
              }
              const finish = () => {
                res.emit("close");
                this.destroy();
                this.emit("close");
              };
              if (res.readable) {
                res.once("end", finish);
              } else {
                finish();
              }
              return;
            }
            if (!this.destroyed) {
              this.destroy(new Error("The HTTP/2 stream has been early terminated"));
              this.emit("close");
              return;
            }
            this.destroy();
            this.emit("close");
          });
          this.socket = new Proxy(stream3, proxySocketHandler);
          for (const job of this[kJobs]) {
            job();
          }
          this[kJobs].length = 0;
          this.emit("socket", this.socket);
        };
        if (!(HTTP2_HEADER_AUTHORITY in this[kHeaders]) && !isConnectMethod) {
          this[kHeaders][HTTP2_HEADER_AUTHORITY] = this[kOrigin].host;
        }
        if (this[kSession]) {
          try {
            onStream(this[kSession].request(this[kHeaders]));
          } catch (error) {
            this.destroy(error);
          }
        } else {
          this.reusedSocket = true;
          try {
            const promise = this.agent.request(this[kOrigin], this[kOptions], this[kHeaders]);
            this[kPendingAgentPromise] = promise;
            onStream(await promise);
            this[kPendingAgentPromise] = false;
          } catch (error) {
            this[kPendingAgentPromise] = false;
            this.destroy(error);
          }
        }
      }
      get connection() {
        return this.socket;
      }
      set connection(value) {
        this.socket = value;
      }
      getHeaderNames() {
        return Object.keys(this[kHeaders]);
      }
      hasHeader(name3) {
        if (typeof name3 !== "string") {
          throw new ERR_INVALID_ARG_TYPE("name", "string", name3);
        }
        return Boolean(this[kHeaders][name3.toLowerCase()]);
      }
      getHeader(name3) {
        if (typeof name3 !== "string") {
          throw new ERR_INVALID_ARG_TYPE("name", "string", name3);
        }
        return this[kHeaders][name3.toLowerCase()];
      }
      get headersSent() {
        return this[kFlushedHeaders];
      }
      removeHeader(name3) {
        if (typeof name3 !== "string") {
          throw new ERR_INVALID_ARG_TYPE("name", "string", name3);
        }
        if (this.headersSent) {
          throw new ERR_HTTP_HEADERS_SENT("remove");
        }
        delete this[kHeaders][name3.toLowerCase()];
      }
      setHeader(name3, value) {
        if (this.headersSent) {
          throw new ERR_HTTP_HEADERS_SENT("set");
        }
        validateHeaderName2(name3);
        validateHeaderValue2(name3, value);
        const lowercased = name3.toLowerCase();
        if (lowercased === "connection") {
          if (value.toLowerCase() === "keep-alive") {
            return;
          }
          throw new Error(`Invalid 'connection' header: ${value}`);
        }
        if (lowercased === "host" && this.method === "CONNECT") {
          this[kHeaders][HTTP2_HEADER_AUTHORITY] = value;
        } else {
          this[kHeaders][lowercased] = value;
        }
      }
      setNoDelay() {
      }
      setSocketKeepAlive() {
      }
      setTimeout(ms, callback) {
        const applyTimeout = () => this._request.setTimeout(ms, callback);
        if (this._request) {
          applyTimeout();
        } else {
          this[kJobs].push(applyTimeout);
        }
        return this;
      }
      get maxHeadersCount() {
        if (!this.destroyed && this._request) {
          return this._request.session.localSettings.maxHeaderListSize;
        }
        return void 0;
      }
      set maxHeadersCount(_value) {
      }
    };
    module2.exports = ClientRequest;
  }
});

// ../../node_modules/resolve-alpn/index.js
var require_resolve_alpn = __commonJS({
  "../../node_modules/resolve-alpn/index.js"(exports2, module2) {
    "use strict";
    var tls = require("tls");
    module2.exports = (options = {}, connect = tls.connect) => new Promise((resolve9, reject) => {
      let timeout = false;
      let socket;
      const callback = async () => {
        await socketPromise;
        socket.off("timeout", onTimeout);
        socket.off("error", reject);
        if (options.resolveSocket) {
          resolve9({ alpnProtocol: socket.alpnProtocol, socket, timeout });
          if (timeout) {
            await Promise.resolve();
            socket.emit("timeout");
          }
        } else {
          socket.destroy();
          resolve9({ alpnProtocol: socket.alpnProtocol, timeout });
        }
      };
      const onTimeout = async () => {
        timeout = true;
        callback();
      };
      const socketPromise = (async () => {
        try {
          socket = await connect(options, callback);
          socket.on("error", reject);
          socket.once("timeout", onTimeout);
        } catch (error) {
          reject(error);
        }
      })();
    });
  }
});

// ../../node_modules/http2-wrapper/source/utils/calculate-server-name.js
var require_calculate_server_name = __commonJS({
  "../../node_modules/http2-wrapper/source/utils/calculate-server-name.js"(exports2, module2) {
    "use strict";
    var { isIP: isIP2 } = require("net");
    var assert8 = require("assert");
    var getHost = (host) => {
      if (host[0] === "[") {
        const idx2 = host.indexOf("]");
        assert8(idx2 !== -1);
        return host.slice(1, idx2);
      }
      const idx = host.indexOf(":");
      if (idx === -1) {
        return host;
      }
      return host.slice(0, idx);
    };
    module2.exports = (host) => {
      const servername = getHost(host);
      if (isIP2(servername)) {
        return "";
      }
      return servername;
    };
  }
});

// ../../node_modules/http2-wrapper/source/auto.js
var require_auto = __commonJS({
  "../../node_modules/http2-wrapper/source/auto.js"(exports2, module2) {
    "use strict";
    var { URL: URL4, urlToHttpOptions } = require("url");
    var http5 = require("http");
    var https3 = require("https");
    var resolveALPN = require_resolve_alpn();
    var QuickLRU = require_quick_lru();
    var { Agent, globalAgent } = require_agent();
    var Http2ClientRequest = require_client_request();
    var calculateServerName = require_calculate_server_name();
    var delayAsyncDestroy = require_delay_async_destroy();
    var cache = new QuickLRU({ maxSize: 100 });
    var queue = /* @__PURE__ */ new Map();
    var installSocket = (agent, socket, options) => {
      socket._httpMessage = { shouldKeepAlive: true };
      const onFree = () => {
        agent.emit("free", socket, options);
      };
      socket.on("free", onFree);
      const onClose = () => {
        agent.removeSocket(socket, options);
      };
      socket.on("close", onClose);
      const onTimeout = () => {
        const { freeSockets } = agent;
        for (const sockets of Object.values(freeSockets)) {
          if (sockets.includes(socket)) {
            socket.destroy();
            return;
          }
        }
      };
      socket.on("timeout", onTimeout);
      const onRemove = () => {
        agent.removeSocket(socket, options);
        socket.off("close", onClose);
        socket.off("free", onFree);
        socket.off("timeout", onTimeout);
        socket.off("agentRemove", onRemove);
      };
      socket.on("agentRemove", onRemove);
      agent.emit("free", socket, options);
    };
    var createResolveProtocol = (cache2, queue2 = /* @__PURE__ */ new Map(), connect = void 0) => {
      return async (options) => {
        const name3 = `${options.host}:${options.port}:${options.ALPNProtocols.sort()}`;
        if (!cache2.has(name3)) {
          if (queue2.has(name3)) {
            const result = await queue2.get(name3);
            return { alpnProtocol: result.alpnProtocol };
          }
          const { path: path45 } = options;
          options.path = options.socketPath;
          const resultPromise = resolveALPN(options, connect);
          queue2.set(name3, resultPromise);
          try {
            const result = await resultPromise;
            cache2.set(name3, result.alpnProtocol);
            queue2.delete(name3);
            options.path = path45;
            return result;
          } catch (error) {
            queue2.delete(name3);
            options.path = path45;
            throw error;
          }
        }
        return { alpnProtocol: cache2.get(name3) };
      };
    };
    var defaultResolveProtocol = createResolveProtocol(cache, queue);
    module2.exports = async (input3, options, callback) => {
      if (typeof input3 === "string") {
        input3 = urlToHttpOptions(new URL4(input3));
      } else if (input3 instanceof URL4) {
        input3 = urlToHttpOptions(input3);
      } else {
        input3 = { ...input3 };
      }
      if (typeof options === "function" || options === void 0) {
        callback = options;
        options = input3;
      } else {
        options = Object.assign(input3, options);
      }
      options.ALPNProtocols = options.ALPNProtocols || ["h2", "http/1.1"];
      if (!Array.isArray(options.ALPNProtocols) || options.ALPNProtocols.length === 0) {
        throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");
      }
      options.protocol = options.protocol || "https:";
      const isHttps = options.protocol === "https:";
      options.host = options.hostname || options.host || "localhost";
      options.session = options.tlsSession;
      options.servername = options.servername || calculateServerName(options.headers && options.headers.host || options.host);
      options.port = options.port || (isHttps ? 443 : 80);
      options._defaultAgent = isHttps ? https3.globalAgent : http5.globalAgent;
      const resolveProtocol = options.resolveProtocol || defaultResolveProtocol;
      let { agent } = options;
      if (agent !== void 0 && agent !== false && agent.constructor.name !== "Object") {
        throw new Error("The `options.agent` can be only an object `http`, `https` or `http2` properties");
      }
      if (isHttps) {
        options.resolveSocket = true;
        let { socket, alpnProtocol, timeout } = await resolveProtocol(options);
        if (timeout) {
          if (socket) {
            socket.destroy();
          }
          const error = new Error(`Timed out resolving ALPN: ${options.timeout} ms`);
          error.code = "ETIMEDOUT";
          error.ms = options.timeout;
          throw error;
        }
        if (socket && options.createConnection) {
          socket.destroy();
          socket = void 0;
        }
        delete options.resolveSocket;
        const isHttp2 = alpnProtocol === "h2";
        if (agent) {
          agent = isHttp2 ? agent.http2 : agent.https;
          options.agent = agent;
        }
        if (agent === void 0) {
          agent = isHttp2 ? globalAgent : https3.globalAgent;
        }
        if (socket) {
          if (agent === false) {
            socket.destroy();
          } else {
            const defaultCreateConnection = (isHttp2 ? Agent : https3.Agent).prototype.createConnection;
            if (agent.createConnection === defaultCreateConnection) {
              if (isHttp2) {
                options._reuseSocket = socket;
              } else {
                installSocket(agent, socket, options);
              }
            } else {
              socket.destroy();
            }
          }
        }
        if (isHttp2) {
          return delayAsyncDestroy(new Http2ClientRequest(options, callback));
        }
      } else if (agent) {
        options.agent = agent.http;
      }
      return delayAsyncDestroy(http5.request(options, callback));
    };
    module2.exports.protocolCache = cache;
    module2.exports.resolveProtocol = defaultResolveProtocol;
    module2.exports.createResolveProtocol = createResolveProtocol;
  }
});

// ../../node_modules/http2-wrapper/source/utils/js-stream-socket.js
var require_js_stream_socket = __commonJS({
  "../../node_modules/http2-wrapper/source/utils/js-stream-socket.js"(exports2, module2) {
    "use strict";
    var stream3 = require("stream");
    var tls = require("tls");
    var JSStreamSocket = new tls.TLSSocket(new stream3.PassThrough())._handle._parentWrap.constructor;
    module2.exports = JSStreamSocket;
  }
});

// ../../node_modules/http2-wrapper/source/proxies/unexpected-status-code-error.js
var require_unexpected_status_code_error = __commonJS({
  "../../node_modules/http2-wrapper/source/proxies/unexpected-status-code-error.js"(exports2, module2) {
    "use strict";
    var UnexpectedStatusCodeError = class extends Error {
      constructor(statusCode, statusMessage = "") {
        super(`The proxy server rejected the request with status code ${statusCode} (${statusMessage || "empty status message"})`);
        this.statusCode = statusCode;
        this.statusMessage = statusMessage;
      }
    };
    module2.exports = UnexpectedStatusCodeError;
  }
});

// ../../node_modules/http2-wrapper/source/utils/check-type.js
var require_check_type = __commonJS({
  "../../node_modules/http2-wrapper/source/utils/check-type.js"(exports2, module2) {
    "use strict";
    var checkType = (name3, value, types6) => {
      const valid2 = types6.some((type2) => {
        const typeofType = typeof type2;
        if (typeofType === "string") {
          return typeof value === type2;
        }
        return value instanceof type2;
      });
      if (!valid2) {
        const names = types6.map((type2) => typeof type2 === "string" ? type2 : type2.name);
        throw new TypeError(`Expected '${name3}' to be a type of ${names.join(" or ")}, got ${typeof value}`);
      }
    };
    module2.exports = checkType;
  }
});

// ../../node_modules/http2-wrapper/source/proxies/initialize.js
var require_initialize = __commonJS({
  "../../node_modules/http2-wrapper/source/proxies/initialize.js"(exports2, module2) {
    "use strict";
    var { URL: URL4 } = require("url");
    var checkType = require_check_type();
    module2.exports = (self2, proxyOptions) => {
      checkType("proxyOptions", proxyOptions, ["object"]);
      checkType("proxyOptions.headers", proxyOptions.headers, ["object", "undefined"]);
      checkType("proxyOptions.raw", proxyOptions.raw, ["boolean", "undefined"]);
      checkType("proxyOptions.url", proxyOptions.url, [URL4, "string"]);
      const url = new URL4(proxyOptions.url);
      self2.proxyOptions = {
        raw: true,
        ...proxyOptions,
        headers: { ...proxyOptions.headers },
        url
      };
    };
  }
});

// ../../node_modules/http2-wrapper/source/proxies/get-auth-headers.js
var require_get_auth_headers = __commonJS({
  "../../node_modules/http2-wrapper/source/proxies/get-auth-headers.js"(exports2, module2) {
    "use strict";
    module2.exports = (self2) => {
      const { username, password } = self2.proxyOptions.url;
      if (username || password) {
        const data = `${username}:${password}`;
        const authorization = `Basic ${Buffer.from(data).toString("base64")}`;
        return {
          "proxy-authorization": authorization,
          authorization
        };
      }
      return {};
    };
  }
});

// ../../node_modules/http2-wrapper/source/proxies/h1-over-h2.js
var require_h1_over_h2 = __commonJS({
  "../../node_modules/http2-wrapper/source/proxies/h1-over-h2.js"(exports2, module2) {
    "use strict";
    var tls = require("tls");
    var http5 = require("http");
    var https3 = require("https");
    var JSStreamSocket = require_js_stream_socket();
    var { globalAgent } = require_agent();
    var UnexpectedStatusCodeError = require_unexpected_status_code_error();
    var initialize = require_initialize();
    var getAuthorizationHeaders = require_get_auth_headers();
    var createConnection = (self2, options, callback) => {
      (async () => {
        try {
          const { proxyOptions } = self2;
          const { url, headers, raw: raw2 } = proxyOptions;
          const stream3 = await globalAgent.request(url, proxyOptions, {
            ...getAuthorizationHeaders(self2),
            ...headers,
            ":method": "CONNECT",
            ":authority": `${options.host}:${options.port}`
          });
          stream3.once("error", callback);
          stream3.once("response", (headers2) => {
            const statusCode = headers2[":status"];
            if (statusCode !== 200) {
              callback(new UnexpectedStatusCodeError(statusCode, ""));
              return;
            }
            const encrypted = self2 instanceof https3.Agent;
            if (raw2 && encrypted) {
              options.socket = stream3;
              const secureStream = tls.connect(options);
              secureStream.once("close", () => {
                stream3.destroy();
              });
              callback(null, secureStream);
              return;
            }
            const socket = new JSStreamSocket(stream3);
            socket.encrypted = false;
            socket._handle.getpeername = (out) => {
              out.family = void 0;
              out.address = void 0;
              out.port = void 0;
            };
            callback(null, socket);
          });
        } catch (error) {
          callback(error);
        }
      })();
    };
    var HttpOverHttp2 = class extends http5.Agent {
      constructor(options) {
        super(options);
        initialize(this, options.proxyOptions);
      }
      createConnection(options, callback) {
        createConnection(this, options, callback);
      }
    };
    var HttpsOverHttp2 = class extends https3.Agent {
      constructor(options) {
        super(options);
        initialize(this, options.proxyOptions);
      }
      createConnection(options, callback) {
        createConnection(this, options, callback);
      }
    };
    module2.exports = {
      HttpOverHttp2,
      HttpsOverHttp2
    };
  }
});

// ../../node_modules/http2-wrapper/source/proxies/h2-over-hx.js
var require_h2_over_hx = __commonJS({
  "../../node_modules/http2-wrapper/source/proxies/h2-over-hx.js"(exports2, module2) {
    "use strict";
    var { Agent } = require_agent();
    var JSStreamSocket = require_js_stream_socket();
    var UnexpectedStatusCodeError = require_unexpected_status_code_error();
    var initialize = require_initialize();
    var Http2OverHttpX = class extends Agent {
      constructor(options) {
        super(options);
        initialize(this, options.proxyOptions);
      }
      async createConnection(origin, options) {
        const authority = `${origin.hostname}:${origin.port || 443}`;
        const [stream3, statusCode, statusMessage] = await this._getProxyStream(authority);
        if (statusCode !== 200) {
          throw new UnexpectedStatusCodeError(statusCode, statusMessage);
        }
        if (this.proxyOptions.raw) {
          options.socket = stream3;
        } else {
          const socket = new JSStreamSocket(stream3);
          socket.encrypted = false;
          socket._handle.getpeername = (out) => {
            out.family = void 0;
            out.address = void 0;
            out.port = void 0;
          };
          return socket;
        }
        return super.createConnection(origin, options);
      }
    };
    module2.exports = Http2OverHttpX;
  }
});

// ../../node_modules/http2-wrapper/source/proxies/h2-over-h2.js
var require_h2_over_h2 = __commonJS({
  "../../node_modules/http2-wrapper/source/proxies/h2-over-h2.js"(exports2, module2) {
    "use strict";
    var { globalAgent } = require_agent();
    var Http2OverHttpX = require_h2_over_hx();
    var getAuthorizationHeaders = require_get_auth_headers();
    var getStatusCode = (stream3) => new Promise((resolve9, reject) => {
      stream3.once("error", reject);
      stream3.once("response", (headers) => {
        stream3.off("error", reject);
        resolve9(headers[":status"]);
      });
    });
    var Http2OverHttp2 = class extends Http2OverHttpX {
      async _getProxyStream(authority) {
        const { proxyOptions } = this;
        const headers = {
          ...getAuthorizationHeaders(this),
          ...proxyOptions.headers,
          ":method": "CONNECT",
          ":authority": authority
        };
        const stream3 = await globalAgent.request(proxyOptions.url, proxyOptions, headers);
        const statusCode = await getStatusCode(stream3);
        return [stream3, statusCode, ""];
      }
    };
    module2.exports = Http2OverHttp2;
  }
});

// ../../node_modules/http2-wrapper/source/proxies/h2-over-h1.js
var require_h2_over_h1 = __commonJS({
  "../../node_modules/http2-wrapper/source/proxies/h2-over-h1.js"(exports2, module2) {
    "use strict";
    var http5 = require("http");
    var https3 = require("https");
    var Http2OverHttpX = require_h2_over_hx();
    var getAuthorizationHeaders = require_get_auth_headers();
    var getStream3 = (request) => new Promise((resolve9, reject) => {
      const onConnect = (response, socket, head2) => {
        socket.unshift(head2);
        request.off("error", reject);
        resolve9([socket, response.statusCode, response.statusMessage]);
      };
      request.once("error", reject);
      request.once("connect", onConnect);
    });
    var Http2OverHttp = class extends Http2OverHttpX {
      async _getProxyStream(authority) {
        const { proxyOptions } = this;
        const { url, headers } = this.proxyOptions;
        const network = url.protocol === "https:" ? https3 : http5;
        const request = network.request({
          ...proxyOptions,
          hostname: url.hostname,
          port: url.port,
          path: authority,
          headers: {
            ...getAuthorizationHeaders(this),
            ...headers,
            host: authority
          },
          method: "CONNECT"
        }).end();
        return getStream3(request);
      }
    };
    module2.exports = {
      Http2OverHttp,
      Http2OverHttps: Http2OverHttp
    };
  }
});

// ../../node_modules/http2-wrapper/source/index.js
var require_source4 = __commonJS({
  "../../node_modules/http2-wrapper/source/index.js"(exports2, module2) {
    "use strict";
    var http22 = require("http2");
    var {
      Agent,
      globalAgent
    } = require_agent();
    var ClientRequest = require_client_request();
    var IncomingMessage = require_incoming_message();
    var auto = require_auto();
    var {
      HttpOverHttp2,
      HttpsOverHttp2
    } = require_h1_over_h2();
    var Http2OverHttp2 = require_h2_over_h2();
    var {
      Http2OverHttp,
      Http2OverHttps
    } = require_h2_over_h1();
    var validateHeaderName2 = require_validate_header_name();
    var validateHeaderValue2 = require_validate_header_value();
    var request = (url, options, callback) => new ClientRequest(url, options, callback);
    var get = (url, options, callback) => {
      const req = new ClientRequest(url, options, callback);
      req.end();
      return req;
    };
    module2.exports = {
      ...http22,
      ClientRequest,
      IncomingMessage,
      Agent,
      globalAgent,
      request,
      get,
      auto,
      proxies: {
        HttpOverHttp2,
        HttpsOverHttp2,
        Http2OverHttp2,
        Http2OverHttp,
        Http2OverHttps
      },
      validateHeaderName: validateHeaderName2,
      validateHeaderValue: validateHeaderValue2
    };
  }
});

// ../../node_modules/ini/ini.js
var require_ini = __commonJS({
  "../../node_modules/ini/ini.js"(exports2) {
    exports2.parse = exports2.decode = decode2;
    exports2.stringify = exports2.encode = encode;
    exports2.safe = safe2;
    exports2.unsafe = unsafe2;
    var eol2 = typeof process !== "undefined" && process.platform === "win32" ? "\r\n" : "\n";
    function encode(obj, opt) {
      var children = [];
      var out = "";
      if (typeof opt === "string") {
        opt = {
          section: opt,
          whitespace: false
        };
      } else {
        opt = opt || {};
        opt.whitespace = opt.whitespace === true;
      }
      var separator = opt.whitespace ? " = " : "=";
      Object.keys(obj).forEach(function(k, _2, __) {
        var val = obj[k];
        if (val && Array.isArray(val)) {
          val.forEach(function(item) {
            out += safe2(k + "[]") + separator + safe2(item) + "\n";
          });
        } else if (val && typeof val === "object")
          children.push(k);
        else
          out += safe2(k) + separator + safe2(val) + eol2;
      });
      if (opt.section && out.length)
        out = "[" + safe2(opt.section) + "]" + eol2 + out;
      children.forEach(function(k, _2, __) {
        var nk = dotSplit(k).join("\\.");
        var section = (opt.section ? opt.section + "." : "") + nk;
        var child = encode(obj[k], {
          section,
          whitespace: opt.whitespace
        });
        if (out.length && child.length)
          out += eol2;
        out += child;
      });
      return out;
    }
    function dotSplit(str2) {
      return str2.replace(/\1/g, "LITERAL\\1LITERAL").replace(/\\\./g, "").split(/\./).map(function(part) {
        return part.replace(/\1/g, "\\.").replace(/\2LITERAL\\1LITERAL\2/g, "");
      });
    }
    function decode2(str2) {
      var out = {};
      var p5 = out;
      var section = null;
      var re = /^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i;
      var lines = str2.split(/[\r\n]+/g);
      lines.forEach(function(line2, _2, __) {
        if (!line2 || line2.match(/^\s*[;#]/))
          return;
        var match3 = line2.match(re);
        if (!match3)
          return;
        if (match3[1] !== void 0) {
          section = unsafe2(match3[1]);
          if (section === "__proto__") {
            p5 = {};
            return;
          }
          p5 = out[section] = out[section] || {};
          return;
        }
        var key2 = unsafe2(match3[2]);
        if (key2 === "__proto__")
          return;
        var value = match3[3] ? unsafe2(match3[4]) : true;
        switch (value) {
          case "true":
          case "false":
          case "null":
            value = JSON.parse(value);
        }
        if (key2.length > 2 && key2.slice(-2) === "[]") {
          key2 = key2.substring(0, key2.length - 2);
          if (key2 === "__proto__")
            return;
          if (!p5[key2])
            p5[key2] = [];
          else if (!Array.isArray(p5[key2]))
            p5[key2] = [p5[key2]];
        }
        if (Array.isArray(p5[key2]))
          p5[key2].push(value);
        else
          p5[key2] = value;
      });
      Object.keys(out).filter(function(k, _2, __) {
        if (!out[k] || typeof out[k] !== "object" || Array.isArray(out[k]))
          return false;
        var parts = dotSplit(k);
        var p6 = out;
        var l = parts.pop();
        var nl2 = l.replace(/\\\./g, ".");
        parts.forEach(function(part, _3, __2) {
          if (part === "__proto__")
            return;
          if (!p6[part] || typeof p6[part] !== "object")
            p6[part] = {};
          p6 = p6[part];
        });
        if (p6 === out && nl2 === l)
          return false;
        p6[nl2] = out[k];
        return true;
      }).forEach(function(del2, _2, __) {
        delete out[del2];
      });
      return out;
    }
    function isQuoted(val) {
      return val.charAt(0) === '"' && val.slice(-1) === '"' || val.charAt(0) === "'" && val.slice(-1) === "'";
    }
    function safe2(val) {
      return typeof val !== "string" || val.match(/[=\r\n]/) || val.match(/^\[/) || val.length > 1 && isQuoted(val) || val !== val.trim() ? JSON.stringify(val) : val.replace(/;/g, "\\;").replace(/#/g, "\\#");
    }
    function unsafe2(val, doUnesc) {
      val = (val || "").trim();
      if (isQuoted(val)) {
        if (val.charAt(0) === "'")
          val = val.substr(1, val.length - 2);
        try {
          val = JSON.parse(val);
        } catch (_2) {
        }
      } else {
        var esc = false;
        var unesc = "";
        for (var i2 = 0, l = val.length; i2 < l; i2++) {
          var c = val.charAt(i2);
          if (esc) {
            if ("\\;#".indexOf(c) !== -1)
              unesc += c;
            else
              unesc += "\\" + c;
            esc = false;
          } else if (";#".indexOf(c) !== -1)
            break;
          else if (c === "\\")
            esc = true;
          else
            unesc += c;
        }
        if (esc)
          unesc += "\\";
        return unesc.trim();
      }
      return val;
    }
  }
});

// ../../node_modules/rc/node_modules/strip-json-comments/index.js
var require_strip_json_comments = __commonJS({
  "../../node_modules/rc/node_modules/strip-json-comments/index.js"(exports2, module2) {
    "use strict";
    var singleComment = 1;
    var multiComment = 2;
    function stripWithoutWhitespace() {
      return "";
    }
    function stripWithWhitespace(str2, start, end) {
      return str2.slice(start, end).replace(/\S/g, " ");
    }
    module2.exports = function(str2, opts) {
      opts = opts || {};
      var currentChar;
      var nextChar;
      var insideString = false;
      var insideComment = false;
      var offset = 0;
      var ret = "";
      var strip = opts.whitespace === false ? stripWithoutWhitespace : stripWithWhitespace;
      for (var i2 = 0; i2 < str2.length; i2++) {
        currentChar = str2[i2];
        nextChar = str2[i2 + 1];
        if (!insideComment && currentChar === '"') {
          var escaped = str2[i2 - 1] === "\\" && str2[i2 - 2] !== "\\";
          if (!escaped) {
            insideString = !insideString;
          }
        }
        if (insideString) {
          continue;
        }
        if (!insideComment && currentChar + nextChar === "//") {
          ret += str2.slice(offset, i2);
          offset = i2;
          insideComment = singleComment;
          i2++;
        } else if (insideComment === singleComment && currentChar + nextChar === "\r\n") {
          i2++;
          insideComment = false;
          ret += strip(str2, offset, i2);
          offset = i2;
          continue;
        } else if (insideComment === singleComment && currentChar === "\n") {
          insideComment = false;
          ret += strip(str2, offset, i2);
          offset = i2;
        } else if (!insideComment && currentChar + nextChar === "/*") {
          ret += str2.slice(offset, i2);
          offset = i2;
          insideComment = multiComment;
          i2++;
          continue;
        } else if (insideComment === multiComment && currentChar + nextChar === "*/") {
          i2++;
          insideComment = false;
          ret += strip(str2, offset, i2 + 1);
          offset = i2 + 1;
          continue;
        }
      }
      return ret + (insideComment ? strip(str2.substr(offset)) : str2.substr(offset));
    };
  }
});

// ../../node_modules/rc/lib/utils.js
var require_utils13 = __commonJS({
  "../../node_modules/rc/lib/utils.js"(exports2) {
    "use strict";
    var fs50 = require("fs");
    var ini = require_ini();
    var path45 = require("path");
    var stripJsonComments = require_strip_json_comments();
    var parse16 = exports2.parse = function(content3) {
      if (/^\s*{/.test(content3))
        return JSON.parse(stripJsonComments(content3));
      return ini.parse(content3);
    };
    var file = exports2.file = function() {
      var args = [].slice.call(arguments).filter(function(arg2) {
        return arg2 != null;
      });
      for (var i2 in args)
        if ("string" !== typeof args[i2])
          return;
      var file2 = path45.join.apply(null, args);
      var content3;
      try {
        return fs50.readFileSync(file2, "utf-8");
      } catch (err) {
        return;
      }
    };
    var json2 = exports2.json = function() {
      var content3 = file.apply(null, arguments);
      return content3 ? parse16(content3) : null;
    };
    var env6 = exports2.env = function(prefix2, env7) {
      env7 = env7 || process.env;
      var obj = {};
      var l = prefix2.length;
      for (var k in env7) {
        if (k.toLowerCase().indexOf(prefix2.toLowerCase()) === 0) {
          var keypath = k.substring(l).split("__");
          var _emptyStringIndex;
          while ((_emptyStringIndex = keypath.indexOf("")) > -1) {
            keypath.splice(_emptyStringIndex, 1);
          }
          var cursor = obj;
          keypath.forEach(function _buildSubObj(_subkey, i2) {
            if (!_subkey || typeof cursor !== "object")
              return;
            if (i2 === keypath.length - 1)
              cursor[_subkey] = env7[k];
            if (cursor[_subkey] === void 0)
              cursor[_subkey] = {};
            cursor = cursor[_subkey];
          });
        }
      }
      return obj;
    };
    var find2 = exports2.find = function() {
      var rel2 = path45.join.apply(null, [].slice.call(arguments));
      function find3(start, rel3) {
        var file2 = path45.join(start, rel3);
        try {
          fs50.statSync(file2);
          return file2;
        } catch (err) {
          if (path45.dirname(start) !== start)
            return find3(path45.dirname(start), rel3);
        }
      }
      return find3(process.cwd(), rel2);
    };
  }
});

// ../../node_modules/deep-extend/lib/deep-extend.js
var require_deep_extend = __commonJS({
  "../../node_modules/deep-extend/lib/deep-extend.js"(exports2, module2) {
    "use strict";
    function isSpecificValue(val) {
      return val instanceof Buffer || val instanceof Date || val instanceof RegExp ? true : false;
    }
    function cloneSpecificValue(val) {
      if (val instanceof Buffer) {
        var x2 = Buffer.alloc ? Buffer.alloc(val.length) : new Buffer(val.length);
        val.copy(x2);
        return x2;
      } else if (val instanceof Date) {
        return new Date(val.getTime());
      } else if (val instanceof RegExp) {
        return new RegExp(val);
      } else {
        throw new Error("Unexpected situation");
      }
    }
    function deepCloneArray(arr) {
      var clone3 = [];
      arr.forEach(function(item, index4) {
        if (typeof item === "object" && item !== null) {
          if (Array.isArray(item)) {
            clone3[index4] = deepCloneArray(item);
          } else if (isSpecificValue(item)) {
            clone3[index4] = cloneSpecificValue(item);
          } else {
            clone3[index4] = deepExtend({}, item);
          }
        } else {
          clone3[index4] = item;
        }
      });
      return clone3;
    }
    function safeGetProperty(object, property) {
      return property === "__proto__" ? void 0 : object[property];
    }
    var deepExtend = module2.exports = function() {
      if (arguments.length < 1 || typeof arguments[0] !== "object") {
        return false;
      }
      if (arguments.length < 2) {
        return arguments[0];
      }
      var target = arguments[0];
      var args = Array.prototype.slice.call(arguments, 1);
      var val, src, clone3;
      args.forEach(function(obj) {
        if (typeof obj !== "object" || obj === null || Array.isArray(obj)) {
          return;
        }
        Object.keys(obj).forEach(function(key2) {
          src = safeGetProperty(target, key2);
          val = safeGetProperty(obj, key2);
          if (val === target) {
            return;
          } else if (typeof val !== "object" || val === null) {
            target[key2] = val;
            return;
          } else if (Array.isArray(val)) {
            target[key2] = deepCloneArray(val);
            return;
          } else if (isSpecificValue(val)) {
            target[key2] = cloneSpecificValue(val);
            return;
          } else if (typeof src !== "object" || src === null || Array.isArray(src)) {
            target[key2] = deepExtend({}, val);
            return;
          } else {
            target[key2] = deepExtend(src, val);
            return;
          }
        });
      });
      return target;
    };
  }
});

// ../../node_modules/minimist/index.js
var require_minimist = __commonJS({
  "../../node_modules/minimist/index.js"(exports2, module2) {
    "use strict";
    function hasKey(obj, keys2) {
      var o = obj;
      keys2.slice(0, -1).forEach(function(key3) {
        o = o[key3] || {};
      });
      var key2 = keys2[keys2.length - 1];
      return key2 in o;
    }
    function isNumber2(x2) {
      if (typeof x2 === "number") {
        return true;
      }
      if (/^0x[0-9a-f]+$/i.test(x2)) {
        return true;
      }
      return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x2);
    }
    function isConstructorOrProto(obj, key2) {
      return key2 === "constructor" && typeof obj[key2] === "function" || key2 === "__proto__";
    }
    module2.exports = function(args, opts) {
      if (!opts) {
        opts = {};
      }
      var flags = {
        bools: {},
        strings: {},
        unknownFn: null
      };
      if (typeof opts.unknown === "function") {
        flags.unknownFn = opts.unknown;
      }
      if (typeof opts.boolean === "boolean" && opts.boolean) {
        flags.allBools = true;
      } else {
        [].concat(opts.boolean).filter(Boolean).forEach(function(key3) {
          flags.bools[key3] = true;
        });
      }
      var aliases2 = {};
      function aliasIsBoolean(key3) {
        return aliases2[key3].some(function(x2) {
          return flags.bools[x2];
        });
      }
      Object.keys(opts.alias || {}).forEach(function(key3) {
        aliases2[key3] = [].concat(opts.alias[key3]);
        aliases2[key3].forEach(function(x2) {
          aliases2[x2] = [key3].concat(aliases2[key3].filter(function(y) {
            return x2 !== y;
          }));
        });
      });
      [].concat(opts.string).filter(Boolean).forEach(function(key3) {
        flags.strings[key3] = true;
        if (aliases2[key3]) {
          [].concat(aliases2[key3]).forEach(function(k) {
            flags.strings[k] = true;
          });
        }
      });
      var defaults3 = opts.default || {};
      var argv = { _: [] };
      function argDefined(key3, arg3) {
        return flags.allBools && /^--[^=]+$/.test(arg3) || flags.strings[key3] || flags.bools[key3] || aliases2[key3];
      }
      function setKey(obj, keys2, value2) {
        var o = obj;
        for (var i3 = 0; i3 < keys2.length - 1; i3++) {
          var key3 = keys2[i3];
          if (isConstructorOrProto(o, key3)) {
            return;
          }
          if (o[key3] === void 0) {
            o[key3] = {};
          }
          if (o[key3] === Object.prototype || o[key3] === Number.prototype || o[key3] === String.prototype) {
            o[key3] = {};
          }
          if (o[key3] === Array.prototype) {
            o[key3] = [];
          }
          o = o[key3];
        }
        var lastKey = keys2[keys2.length - 1];
        if (isConstructorOrProto(o, lastKey)) {
          return;
        }
        if (o === Object.prototype || o === Number.prototype || o === String.prototype) {
          o = {};
        }
        if (o === Array.prototype) {
          o = [];
        }
        if (o[lastKey] === void 0 || flags.bools[lastKey] || typeof o[lastKey] === "boolean") {
          o[lastKey] = value2;
        } else if (Array.isArray(o[lastKey])) {
          o[lastKey].push(value2);
        } else {
          o[lastKey] = [o[lastKey], value2];
        }
      }
      function setArg(key3, val, arg3) {
        if (arg3 && flags.unknownFn && !argDefined(key3, arg3)) {
          if (flags.unknownFn(arg3) === false) {
            return;
          }
        }
        var value2 = !flags.strings[key3] && isNumber2(val) ? Number(val) : val;
        setKey(argv, key3.split("."), value2);
        (aliases2[key3] || []).forEach(function(x2) {
          setKey(argv, x2.split("."), value2);
        });
      }
      Object.keys(flags.bools).forEach(function(key3) {
        setArg(key3, defaults3[key3] === void 0 ? false : defaults3[key3]);
      });
      var notFlags = [];
      if (args.indexOf("--") !== -1) {
        notFlags = args.slice(args.indexOf("--") + 1);
        args = args.slice(0, args.indexOf("--"));
      }
      for (var i2 = 0; i2 < args.length; i2++) {
        var arg2 = args[i2];
        var key2;
        var next;
        if (/^--.+=/.test(arg2)) {
          var m2 = arg2.match(/^--([^=]+)=([\s\S]*)$/);
          key2 = m2[1];
          var value = m2[2];
          if (flags.bools[key2]) {
            value = value !== "false";
          }
          setArg(key2, value, arg2);
        } else if (/^--no-.+/.test(arg2)) {
          key2 = arg2.match(/^--no-(.+)/)[1];
          setArg(key2, false, arg2);
        } else if (/^--.+/.test(arg2)) {
          key2 = arg2.match(/^--(.+)/)[1];
          next = args[i2 + 1];
          if (next !== void 0 && !/^(-|--)[^-]/.test(next) && !flags.bools[key2] && !flags.allBools && (aliases2[key2] ? !aliasIsBoolean(key2) : true)) {
            setArg(key2, next, arg2);
            i2 += 1;
          } else if (/^(true|false)$/.test(next)) {
            setArg(key2, next === "true", arg2);
            i2 += 1;
          } else {
            setArg(key2, flags.strings[key2] ? "" : true, arg2);
          }
        } else if (/^-[^-]+/.test(arg2)) {
          var letters2 = arg2.slice(1, -1).split("");
          var broken = false;
          for (var j = 0; j < letters2.length; j++) {
            next = arg2.slice(j + 2);
            if (next === "-") {
              setArg(letters2[j], next, arg2);
              continue;
            }
            if (/[A-Za-z]/.test(letters2[j]) && next[0] === "=") {
              setArg(letters2[j], next.slice(1), arg2);
              broken = true;
              break;
            }
            if (/[A-Za-z]/.test(letters2[j]) && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
              setArg(letters2[j], next, arg2);
              broken = true;
              break;
            }
            if (letters2[j + 1] && letters2[j + 1].match(/\W/)) {
              setArg(letters2[j], arg2.slice(j + 2), arg2);
              broken = true;
              break;
            } else {
              setArg(letters2[j], flags.strings[letters2[j]] ? "" : true, arg2);
            }
          }
          key2 = arg2.slice(-1)[0];
          if (!broken && key2 !== "-") {
            if (args[i2 + 1] && !/^(-|--)[^-]/.test(args[i2 + 1]) && !flags.bools[key2] && (aliases2[key2] ? !aliasIsBoolean(key2) : true)) {
              setArg(key2, args[i2 + 1], arg2);
              i2 += 1;
            } else if (args[i2 + 1] && /^(true|false)$/.test(args[i2 + 1])) {
              setArg(key2, args[i2 + 1] === "true", arg2);
              i2 += 1;
            } else {
              setArg(key2, flags.strings[key2] ? "" : true, arg2);
            }
          }
        } else {
          if (!flags.unknownFn || flags.unknownFn(arg2) !== false) {
            argv._.push(flags.strings._ || !isNumber2(arg2) ? arg2 : Number(arg2));
          }
          if (opts.stopEarly) {
            argv._.push.apply(argv._, args.slice(i2 + 1));
            break;
          }
        }
      }
      Object.keys(defaults3).forEach(function(k) {
        if (!hasKey(argv, k.split("."))) {
          setKey(argv, k.split("."), defaults3[k]);
          (aliases2[k] || []).forEach(function(x2) {
            setKey(argv, x2.split("."), defaults3[k]);
          });
        }
      });
      if (opts["--"]) {
        argv["--"] = notFlags.slice();
      } else {
        notFlags.forEach(function(k) {
          argv._.push(k);
        });
      }
      return argv;
    };
  }
});

// ../../node_modules/rc/index.js
var require_rc = __commonJS({
  "../../node_modules/rc/index.js"(exports2, module2) {
    var cc = require_utils13();
    var join19 = require("path").join;
    var deepExtend = require_deep_extend();
    var etc = "/etc";
    var win = process.platform === "win32";
    var home = win ? process.env.USERPROFILE : process.env.HOME;
    module2.exports = function(name3, defaults3, argv, parse16) {
      if ("string" !== typeof name3)
        throw new Error("rc(name): name *must* be string");
      if (!argv)
        argv = require_minimist()(process.argv.slice(2));
      defaults3 = ("string" === typeof defaults3 ? cc.json(defaults3) : defaults3) || {};
      parse16 = parse16 || cc.parse;
      var env6 = cc.env(name3 + "_");
      var configs = [defaults3];
      var configFiles = [];
      function addConfigFile(file) {
        if (configFiles.indexOf(file) >= 0) return;
        var fileConfig = cc.file(file);
        if (fileConfig) {
          configs.push(parse16(fileConfig));
          configFiles.push(file);
        }
      }
      if (!win)
        [
          join19(etc, name3, "config"),
          join19(etc, name3 + "rc")
        ].forEach(addConfigFile);
      if (home)
        [
          join19(home, ".config", name3, "config"),
          join19(home, ".config", name3),
          join19(home, "." + name3, "config"),
          join19(home, "." + name3 + "rc")
        ].forEach(addConfigFile);
      addConfigFile(cc.find("." + name3 + "rc"));
      if (env6.config) addConfigFile(env6.config);
      if (argv.config) addConfigFile(argv.config);
      return deepExtend.apply(null, configs.concat([
        env6,
        argv,
        configFiles.length ? { configs: configFiles, config: configFiles[configFiles.length - 1] } : void 0
      ]));
    };
  }
});

// ../../node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/polyfills.js
var require_polyfills2 = __commonJS({
  "../../node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/polyfills.js"(exports2, module2) {
    var constants2 = require("constants");
    var origCwd = process.cwd;
    var cwd2 = null;
    var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform;
    process.cwd = function() {
      if (!cwd2)
        cwd2 = origCwd.call(process);
      return cwd2;
    };
    try {
      process.cwd();
    } catch (er) {
    }
    if (typeof process.chdir === "function") {
      chdir = process.chdir;
      process.chdir = function(d) {
        cwd2 = null;
        chdir.call(process, d);
      };
      if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir);
    }
    var chdir;
    module2.exports = patch4;
    function patch4(fs50) {
      if (constants2.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
        patchLchmod(fs50);
      }
      if (!fs50.lutimes) {
        patchLutimes(fs50);
      }
      fs50.chown = chownFix(fs50.chown);
      fs50.fchown = chownFix(fs50.fchown);
      fs50.lchown = chownFix(fs50.lchown);
      fs50.chmod = chmodFix(fs50.chmod);
      fs50.fchmod = chmodFix(fs50.fchmod);
      fs50.lchmod = chmodFix(fs50.lchmod);
      fs50.chownSync = chownFixSync(fs50.chownSync);
      fs50.fchownSync = chownFixSync(fs50.fchownSync);
      fs50.lchownSync = chownFixSync(fs50.lchownSync);
      fs50.chmodSync = chmodFixSync(fs50.chmodSync);
      fs50.fchmodSync = chmodFixSync(fs50.fchmodSync);
      fs50.lchmodSync = chmodFixSync(fs50.lchmodSync);
      fs50.stat = statFix(fs50.stat);
      fs50.fstat = statFix(fs50.fstat);
      fs50.lstat = statFix(fs50.lstat);
      fs50.statSync = statFixSync(fs50.statSync);
      fs50.fstatSync = statFixSync(fs50.fstatSync);
      fs50.lstatSync = statFixSync(fs50.lstatSync);
      if (fs50.chmod && !fs50.lchmod) {
        fs50.lchmod = function(path45, mode, cb) {
          if (cb) process.nextTick(cb);
        };
        fs50.lchmodSync = function() {
        };
      }
      if (fs50.chown && !fs50.lchown) {
        fs50.lchown = function(path45, uid, gid, cb) {
          if (cb) process.nextTick(cb);
        };
        fs50.lchownSync = function() {
        };
      }
      if (platform === "win32") {
        fs50.rename = typeof fs50.rename !== "function" ? fs50.rename : (function(fs$rename) {
          function rename(from4, to, cb) {
            var start = Date.now();
            var backoff = 0;
            fs$rename(from4, to, function CB(er) {
              if (er && (er.code === "EACCES" || er.code === "EPERM") && Date.now() - start < 6e4) {
                setTimeout(function() {
                  fs50.stat(to, function(stater, st) {
                    if (stater && stater.code === "ENOENT")
                      fs$rename(from4, to, CB);
                    else
                      cb(er);
                  });
                }, backoff);
                if (backoff < 100)
                  backoff += 10;
                return;
              }
              if (cb) cb(er);
            });
          }
          if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename);
          return rename;
        })(fs50.rename);
      }
      fs50.read = typeof fs50.read !== "function" ? fs50.read : (function(fs$read) {
        function read2(fd, buffer2, offset, length, position6, callback_) {
          var callback;
          if (callback_ && typeof callback_ === "function") {
            var eagCounter = 0;
            callback = function(er, _2, __) {
              if (er && er.code === "EAGAIN" && eagCounter < 10) {
                eagCounter++;
                return fs$read.call(fs50, fd, buffer2, offset, length, position6, callback);
              }
              callback_.apply(this, arguments);
            };
          }
          return fs$read.call(fs50, fd, buffer2, offset, length, position6, callback);
        }
        if (Object.setPrototypeOf) Object.setPrototypeOf(read2, fs$read);
        return read2;
      })(fs50.read);
      fs50.readSync = typeof fs50.readSync !== "function" ? fs50.readSync : /* @__PURE__ */ (function(fs$readSync) {
        return function(fd, buffer2, offset, length, position6) {
          var eagCounter = 0;
          while (true) {
            try {
              return fs$readSync.call(fs50, fd, buffer2, offset, length, position6);
            } catch (er) {
              if (er.code === "EAGAIN" && eagCounter < 10) {
                eagCounter++;
                continue;
              }
              throw er;
            }
          }
        };
      })(fs50.readSync);
      function patchLchmod(fs51) {
        fs51.lchmod = function(path45, mode, callback) {
          fs51.open(
            path45,
            constants2.O_WRONLY | constants2.O_SYMLINK,
            mode,
            function(err, fd) {
              if (err) {
                if (callback) callback(err);
                return;
              }
              fs51.fchmod(fd, mode, function(err2) {
                fs51.close(fd, function(err22) {
                  if (callback) callback(err2 || err22);
                });
              });
            }
          );
        };
        fs51.lchmodSync = function(path45, mode) {
          var fd = fs51.openSync(path45, constants2.O_WRONLY | constants2.O_SYMLINK, mode);
          var threw = true;
          var ret;
          try {
            ret = fs51.fchmodSync(fd, mode);
            threw = false;
          } finally {
            if (threw) {
              try {
                fs51.closeSync(fd);
              } catch (er) {
              }
            } else {
              fs51.closeSync(fd);
            }
          }
          return ret;
        };
      }
      function patchLutimes(fs51) {
        if (constants2.hasOwnProperty("O_SYMLINK") && fs51.futimes) {
          fs51.lutimes = function(path45, at, mt, cb) {
            fs51.open(path45, constants2.O_SYMLINK, function(er, fd) {
              if (er) {
                if (cb) cb(er);
                return;
              }
              fs51.futimes(fd, at, mt, function(er2) {
                fs51.close(fd, function(er22) {
                  if (cb) cb(er2 || er22);
                });
              });
            });
          };
          fs51.lutimesSync = function(path45, at, mt) {
            var fd = fs51.openSync(path45, constants2.O_SYMLINK);
            var ret;
            var threw = true;
            try {
              ret = fs51.futimesSync(fd, at, mt);
              threw = false;
            } finally {
              if (threw) {
                try {
                  fs51.closeSync(fd);
                } catch (er) {
                }
              } else {
                fs51.closeSync(fd);
              }
            }
            return ret;
          };
        } else if (fs51.futimes) {
          fs51.lutimes = function(_a6, _b, _c, cb) {
            if (cb) process.nextTick(cb);
          };
          fs51.lutimesSync = function() {
          };
        }
      }
      function chmodFix(orig) {
        if (!orig) return orig;
        return function(target, mode, cb) {
          return orig.call(fs50, target, mode, function(er) {
            if (chownErOk(er)) er = null;
            if (cb) cb.apply(this, arguments);
          });
        };
      }
      function chmodFixSync(orig) {
        if (!orig) return orig;
        return function(target, mode) {
          try {
            return orig.call(fs50, target, mode);
          } catch (er) {
            if (!chownErOk(er)) throw er;
          }
        };
      }
      function chownFix(orig) {
        if (!orig) return orig;
        return function(target, uid, gid, cb) {
          return orig.call(fs50, target, uid, gid, function(er) {
            if (chownErOk(er)) er = null;
            if (cb) cb.apply(this, arguments);
          });
        };
      }
      function chownFixSync(orig) {
        if (!orig) return orig;
        return function(target, uid, gid) {
          try {
            return orig.call(fs50, target, uid, gid);
          } catch (er) {
            if (!chownErOk(er)) throw er;
          }
        };
      }
      function statFix(orig) {
        if (!orig) return orig;
        return function(target, options, cb) {
          if (typeof options === "function") {
            cb = options;
            options = null;
          }
          function callback(er, stats) {
            if (stats) {
              if (stats.uid < 0) stats.uid += 4294967296;
              if (stats.gid < 0) stats.gid += 4294967296;
            }
            if (cb) cb.apply(this, arguments);
          }
          return options ? orig.call(fs50, target, options, callback) : orig.call(fs50, target, callback);
        };
      }
      function statFixSync(orig) {
        if (!orig) return orig;
        return function(target, options) {
          var stats = options ? orig.call(fs50, target, options) : orig.call(fs50, target);
          if (stats) {
            if (stats.uid < 0) stats.uid += 4294967296;
            if (stats.gid < 0) stats.gid += 4294967296;
          }
          return stats;
        };
      }
      function chownErOk(er) {
        if (!er)
          return true;
        if (er.code === "ENOSYS")
          return true;
        var nonroot = !process.getuid || process.getuid() !== 0;
        if (nonroot) {
          if (er.code === "EINVAL" || er.code === "EPERM")
            return true;
        }
        return false;
      }
    }
  }
});

// ../../node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/legacy-streams.js
var require_legacy_streams2 = __commonJS({
  "../../node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/legacy-streams.js"(exports2, module2) {
    var Stream4 = require("stream").Stream;
    module2.exports = legacy;
    function legacy(fs50) {
      return {
        ReadStream,
        WriteStream
      };
      function ReadStream(path45, options) {
        if (!(this instanceof ReadStream)) return new ReadStream(path45, options);
        Stream4.call(this);
        var self2 = this;
        this.path = path45;
        this.fd = null;
        this.readable = true;
        this.paused = false;
        this.flags = "r";
        this.mode = 438;
        this.bufferSize = 64 * 1024;
        options = options || {};
        var keys2 = Object.keys(options);
        for (var index4 = 0, length = keys2.length; index4 < length; index4++) {
          var key2 = keys2[index4];
          this[key2] = options[key2];
        }
        if (this.encoding) this.setEncoding(this.encoding);
        if (this.start !== void 0) {
          if ("number" !== typeof this.start) {
            throw TypeError("start must be a Number");
          }
          if (this.end === void 0) {
            this.end = Infinity;
          } else if ("number" !== typeof this.end) {
            throw TypeError("end must be a Number");
          }
          if (this.start > this.end) {
            throw new Error("start must be <= end");
          }
          this.pos = this.start;
        }
        if (this.fd !== null) {
          process.nextTick(function() {
            self2._read();
          });
          return;
        }
        fs50.open(this.path, this.flags, this.mode, function(err, fd) {
          if (err) {
            self2.emit("error", err);
            self2.readable = false;
            return;
          }
          self2.fd = fd;
          self2.emit("open", fd);
          self2._read();
        });
      }
      function WriteStream(path45, options) {
        if (!(this instanceof WriteStream)) return new WriteStream(path45, options);
        Stream4.call(this);
        this.path = path45;
        this.fd = null;
        this.writable = true;
        this.flags = "w";
        this.encoding = "binary";
        this.mode = 438;
        this.bytesWritten = 0;
        options = options || {};
        var keys2 = Object.keys(options);
        for (var index4 = 0, length = keys2.length; index4 < length; index4++) {
          var key2 = keys2[index4];
          this[key2] = options[key2];
        }
        if (this.start !== void 0) {
          if ("number" !== typeof this.start) {
            throw TypeError("start must be a Number");
          }
          if (this.start < 0) {
            throw new Error("start must be >= zero");
          }
          this.pos = this.start;
        }
        this.busy = false;
        this._queue = [];
        if (this.fd === null) {
          this._open = fs50.open;
          this._queue.push([this._open, this.path, this.flags, this.mode, void 0]);
          this.flush();
        }
      }
    }
  }
});

// ../../node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/clone.js
var require_clone3 = __commonJS({
  "../../node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/clone.js"(exports2, module2) {
    "use strict";
    module2.exports = clone3;
    var getPrototypeOf2 = Object.getPrototypeOf || function(obj) {
      return obj.__proto__;
    };
    function clone3(obj) {
      if (obj === null || typeof obj !== "object")
        return obj;
      if (obj instanceof Object)
        var copy2 = { __proto__: getPrototypeOf2(obj) };
      else
        var copy2 = /* @__PURE__ */ Object.create(null);
      Object.getOwnPropertyNames(obj).forEach(function(key2) {
        Object.defineProperty(copy2, key2, Object.getOwnPropertyDescriptor(obj, key2));
      });
      return copy2;
    }
  }
});

// ../../node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/graceful-fs.js
var require_graceful_fs2 = __commonJS({
  "../../node_modules/@pnpm/network.ca-file/node_modules/graceful-fs/graceful-fs.js"(exports2, module2) {
    var fs50 = require("fs");
    var polyfills = require_polyfills2();
    var legacy = require_legacy_streams2();
    var clone3 = require_clone3();
    var util4 = require("util");
    var gracefulQueue;
    var previousSymbol;
    if (typeof Symbol === "function" && typeof Symbol.for === "function") {
      gracefulQueue = Symbol.for("graceful-fs.queue");
      previousSymbol = Symbol.for("graceful-fs.previous");
    } else {
      gracefulQueue = "___graceful-fs.queue";
      previousSymbol = "___graceful-fs.previous";
    }
    function noop5() {
    }
    function publishQueue(context, queue2) {
      Object.defineProperty(context, gracefulQueue, {
        get: function() {
          return queue2;
        }
      });
    }
    var debug = noop5;
    if (util4.debuglog)
      debug = util4.debuglog("gfs4");
    else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ""))
      debug = function() {
        var m2 = util4.format.apply(util4, arguments);
        m2 = "GFS4: " + m2.split(/\n/).join("\nGFS4: ");
        console.error(m2);
      };
    if (!fs50[gracefulQueue]) {
      queue = global[gracefulQueue] || [];
      publishQueue(fs50, queue);
      fs50.close = (function(fs$close) {
        function close2(fd, cb) {
          return fs$close.call(fs50, fd, function(err) {
            if (!err) {
              resetQueue();
            }
            if (typeof cb === "function")
              cb.apply(this, arguments);
          });
        }
        Object.defineProperty(close2, previousSymbol, {
          value: fs$close
        });
        return close2;
      })(fs50.close);
      fs50.closeSync = (function(fs$closeSync) {
        function closeSync(fd) {
          fs$closeSync.apply(fs50, arguments);
          resetQueue();
        }
        Object.defineProperty(closeSync, previousSymbol, {
          value: fs$closeSync
        });
        return closeSync;
      })(fs50.closeSync);
      if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) {
        process.on("exit", function() {
          debug(fs50[gracefulQueue]);
          require("assert").equal(fs50[gracefulQueue].length, 0);
        });
      }
    }
    var queue;
    if (!global[gracefulQueue]) {
      publishQueue(global, fs50[gracefulQueue]);
    }
    module2.exports = patch4(clone3(fs50));
    if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs50.__patched) {
      module2.exports = patch4(fs50);
      fs50.__patched = true;
    }
    function patch4(fs51) {
      polyfills(fs51);
      fs51.gracefulify = patch4;
      fs51.createReadStream = createReadStream2;
      fs51.createWriteStream = createWriteStream2;
      var fs$readFile = fs51.readFile;
      fs51.readFile = readFile;
      function readFile(path45, options, cb) {
        if (typeof options === "function")
          cb = options, options = null;
        return go$readFile(path45, options, cb);
        function go$readFile(path46, options2, cb2, startTime) {
          return fs$readFile(path46, options2, function(err) {
            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
              enqueue([go$readFile, [path46, options2, cb2], err, startTime || Date.now(), Date.now()]);
            else {
              if (typeof cb2 === "function")
                cb2.apply(this, arguments);
            }
          });
        }
      }
      var fs$writeFile = fs51.writeFile;
      fs51.writeFile = writeFile2;
      function writeFile2(path45, data, options, cb) {
        if (typeof options === "function")
          cb = options, options = null;
        return go$writeFile(path45, data, options, cb);
        function go$writeFile(path46, data2, options2, cb2, startTime) {
          return fs$writeFile(path46, data2, options2, function(err) {
            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
              enqueue([go$writeFile, [path46, data2, options2, cb2], err, startTime || Date.now(), Date.now()]);
            else {
              if (typeof cb2 === "function")
                cb2.apply(this, arguments);
            }
          });
        }
      }
      var fs$appendFile = fs51.appendFile;
      if (fs$appendFile)
        fs51.appendFile = appendFile;
      function appendFile(path45, data, options, cb) {
        if (typeof options === "function")
          cb = options, options = null;
        return go$appendFile(path45, data, options, cb);
        function go$appendFile(path46, data2, options2, cb2, startTime) {
          return fs$appendFile(path46, data2, options2, function(err) {
            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
              enqueue([go$appendFile, [path46, data2, options2, cb2], err, startTime || Date.now(), Date.now()]);
            else {
              if (typeof cb2 === "function")
                cb2.apply(this, arguments);
            }
          });
        }
      }
      var fs$copyFile = fs51.copyFile;
      if (fs$copyFile)
        fs51.copyFile = copyFile2;
      function copyFile2(src, dest, flags, cb) {
        if (typeof flags === "function") {
          cb = flags;
          flags = 0;
        }
        return go$copyFile(src, dest, flags, cb);
        function go$copyFile(src2, dest2, flags2, cb2, startTime) {
          return fs$copyFile(src2, dest2, flags2, function(err) {
            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
              enqueue([go$copyFile, [src2, dest2, flags2, cb2], err, startTime || Date.now(), Date.now()]);
            else {
              if (typeof cb2 === "function")
                cb2.apply(this, arguments);
            }
          });
        }
      }
      var fs$readdir = fs51.readdir;
      fs51.readdir = readdir2;
      var noReaddirOptionVersions = /^v[0-5]\./;
      function readdir2(path45, options, cb) {
        if (typeof options === "function")
          cb = options, options = null;
        var go$readdir = noReaddirOptionVersions.test(process.version) ? function go$readdir2(path46, options2, cb2, startTime) {
          return fs$readdir(path46, fs$readdirCallback(
            path46,
            options2,
            cb2,
            startTime
          ));
        } : function go$readdir2(path46, options2, cb2, startTime) {
          return fs$readdir(path46, options2, fs$readdirCallback(
            path46,
            options2,
            cb2,
            startTime
          ));
        };
        return go$readdir(path45, options, cb);
        function fs$readdirCallback(path46, options2, cb2, startTime) {
          return function(err, files) {
            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
              enqueue([
                go$readdir,
                [path46, options2, cb2],
                err,
                startTime || Date.now(),
                Date.now()
              ]);
            else {
              if (files && files.sort)
                files.sort();
              if (typeof cb2 === "function")
                cb2.call(this, err, files);
            }
          };
        }
      }
      if (process.version.substr(0, 4) === "v0.8") {
        var legStreams = legacy(fs51);
        ReadStream = legStreams.ReadStream;
        WriteStream = legStreams.WriteStream;
      }
      var fs$ReadStream = fs51.ReadStream;
      if (fs$ReadStream) {
        ReadStream.prototype = Object.create(fs$ReadStream.prototype);
        ReadStream.prototype.open = ReadStream$open;
      }
      var fs$WriteStream = fs51.WriteStream;
      if (fs$WriteStream) {
        WriteStream.prototype = Object.create(fs$WriteStream.prototype);
        WriteStream.prototype.open = WriteStream$open;
      }
      Object.defineProperty(fs51, "ReadStream", {
        get: function() {
          return ReadStream;
        },
        set: function(val) {
          ReadStream = val;
        },
        enumerable: true,
        configurable: true
      });
      Object.defineProperty(fs51, "WriteStream", {
        get: function() {
          return WriteStream;
        },
        set: function(val) {
          WriteStream = val;
        },
        enumerable: true,
        configurable: true
      });
      var FileReadStream = ReadStream;
      Object.defineProperty(fs51, "FileReadStream", {
        get: function() {
          return FileReadStream;
        },
        set: function(val) {
          FileReadStream = val;
        },
        enumerable: true,
        configurable: true
      });
      var FileWriteStream = WriteStream;
      Object.defineProperty(fs51, "FileWriteStream", {
        get: function() {
          return FileWriteStream;
        },
        set: function(val) {
          FileWriteStream = val;
        },
        enumerable: true,
        configurable: true
      });
      function ReadStream(path45, options) {
        if (this instanceof ReadStream)
          return fs$ReadStream.apply(this, arguments), this;
        else
          return ReadStream.apply(Object.create(ReadStream.prototype), arguments);
      }
      function ReadStream$open() {
        var that = this;
        open2(that.path, that.flags, that.mode, function(err, fd) {
          if (err) {
            if (that.autoClose)
              that.destroy();
            that.emit("error", err);
          } else {
            that.fd = fd;
            that.emit("open", fd);
            that.read();
          }
        });
      }
      function WriteStream(path45, options) {
        if (this instanceof WriteStream)
          return fs$WriteStream.apply(this, arguments), this;
        else
          return WriteStream.apply(Object.create(WriteStream.prototype), arguments);
      }
      function WriteStream$open() {
        var that = this;
        open2(that.path, that.flags, that.mode, function(err, fd) {
          if (err) {
            that.destroy();
            that.emit("error", err);
          } else {
            that.fd = fd;
            that.emit("open", fd);
          }
        });
      }
      function createReadStream2(path45, options) {
        return new fs51.ReadStream(path45, options);
      }
      function createWriteStream2(path45, options) {
        return new fs51.WriteStream(path45, options);
      }
      var fs$open = fs51.open;
      fs51.open = open2;
      function open2(path45, flags, mode, cb) {
        if (typeof mode === "function")
          cb = mode, mode = null;
        return go$open(path45, flags, mode, cb);
        function go$open(path46, flags2, mode2, cb2, startTime) {
          return fs$open(path46, flags2, mode2, function(err, fd) {
            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
              enqueue([go$open, [path46, flags2, mode2, cb2], err, startTime || Date.now(), Date.now()]);
            else {
              if (typeof cb2 === "function")
                cb2.apply(this, arguments);
            }
          });
        }
      }
      return fs51;
    }
    function enqueue(elem) {
      debug("ENQUEUE", elem[0].name, elem[1]);
      fs50[gracefulQueue].push(elem);
      retry();
    }
    var retryTimer;
    function resetQueue() {
      var now = Date.now();
      for (var i2 = 0; i2 < fs50[gracefulQueue].length; ++i2) {
        if (fs50[gracefulQueue][i2].length > 2) {
          fs50[gracefulQueue][i2][3] = now;
          fs50[gracefulQueue][i2][4] = now;
        }
      }
      retry();
    }
    function retry() {
      clearTimeout(retryTimer);
      retryTimer = void 0;
      if (fs50[gracefulQueue].length === 0)
        return;
      var elem = fs50[gracefulQueue].shift();
      var fn = elem[0];
      var args = elem[1];
      var err = elem[2];
      var startTime = elem[3];
      var lastTime = elem[4];
      if (startTime === void 0) {
        debug("RETRY", fn.name, args);
        fn.apply(null, args);
      } else if (Date.now() - startTime >= 6e4) {
        debug("TIMEOUT", fn.name, args);
        var cb = args.pop();
        if (typeof cb === "function")
          cb.call(null, err);
      } else {
        var sinceAttempt = Date.now() - lastTime;
        var sinceStart = Math.max(lastTime - startTime, 1);
        var desiredDelay = Math.min(sinceStart * 1.2, 100);
        if (sinceAttempt >= desiredDelay) {
          debug("RETRY", fn.name, args);
          fn.apply(null, args.concat([startTime]));
        } else {
          fs50[gracefulQueue].push(elem);
        }
      }
      if (retryTimer === void 0) {
        retryTimer = setTimeout(retry, 0);
      }
    }
  }
});

// ../../node_modules/@pnpm/network.ca-file/dist/ca-file.js
var require_ca_file = __commonJS({
  "../../node_modules/@pnpm/network.ca-file/dist/ca-file.js"(exports2) {
    "use strict";
    var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.readCAFileSync = void 0;
    var graceful_fs_1 = __importDefault2(require_graceful_fs2());
    function readCAFileSync(filePath) {
      try {
        const contents = graceful_fs_1.default.readFileSync(filePath, "utf8");
        const delim = "-----END CERTIFICATE-----";
        const output2 = contents.split(delim).filter((ca) => Boolean(ca.trim())).map((ca) => `${ca.trimLeft()}${delim}`);
        return output2;
      } catch (err) {
        if (err.code === "ENOENT")
          return void 0;
        throw err;
      }
    }
    exports2.readCAFileSync = readCAFileSync;
  }
});

// ../../node_modules/@pnpm/network.ca-file/dist/index.js
var require_dist2 = __commonJS({
  "../../node_modules/@pnpm/network.ca-file/dist/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __exportStar = exports2 && exports2.__exportStar || function(m2, exports3) {
      for (var p5 in m2) if (p5 !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p5)) __createBinding(exports3, m2, p5);
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    __exportStar(require_ca_file(), exports2);
  }
});

// ../../node_modules/proto-list/proto-list.js
var require_proto_list = __commonJS({
  "../../node_modules/proto-list/proto-list.js"(exports2, module2) {
    module2.exports = ProtoList;
    function setProto(obj, proto9) {
      if (typeof Object.setPrototypeOf === "function")
        return Object.setPrototypeOf(obj, proto9);
      else
        obj.__proto__ = proto9;
    }
    function ProtoList() {
      this.list = [];
      var root6 = null;
      Object.defineProperty(this, "root", {
        get: function() {
          return root6;
        },
        set: function(r2) {
          root6 = r2;
          if (this.list.length) {
            setProto(this.list[this.list.length - 1], r2);
          }
        },
        enumerable: true,
        configurable: true
      });
    }
    ProtoList.prototype = {
      get length() {
        return this.list.length;
      },
      get keys() {
        var k = [];
        for (var i2 in this.list[0]) k.push(i2);
        return k;
      },
      get snapshot() {
        var o = {};
        this.keys.forEach(function(k) {
          o[k] = this.get(k);
        }, this);
        return o;
      },
      get store() {
        return this.list[0];
      },
      push: function(obj) {
        if (typeof obj !== "object") obj = { valueOf: obj };
        if (this.list.length >= 1) {
          setProto(this.list[this.list.length - 1], obj);
        }
        setProto(obj, this.root);
        return this.list.push(obj);
      },
      pop: function() {
        if (this.list.length >= 2) {
          setProto(this.list[this.list.length - 2], this.root);
        }
        return this.list.pop();
      },
      unshift: function(obj) {
        setProto(obj, this.list[0] || this.root);
        return this.list.unshift(obj);
      },
      shift: function() {
        if (this.list.length === 1) {
          setProto(this.list[0], this.root);
        }
        return this.list.shift();
      },
      get: function(key2) {
        return this.list[0][key2];
      },
      set: function(key2, val, save) {
        if (!this.length) this.push({});
        if (save && this.list[0].hasOwnProperty(key2)) this.push({});
        return this.list[0][key2] = val;
      },
      forEach: function(fn, thisp) {
        for (var key2 in this.list[0]) fn.call(thisp, key2, this.list[0][key2]);
      },
      slice: function() {
        return this.list.slice.apply(this.list, arguments);
      },
      splice: function() {
        var ret = this.list.splice.apply(this.list, arguments);
        for (var i2 = 0, l = this.list.length; i2 < l; i2++) {
          setProto(this.list[i2], this.list[i2 + 1] || this.root);
        }
        return ret;
      }
    };
  }
});

// ../../node_modules/config-chain/index.js
var require_config_chain = __commonJS({
  "../../node_modules/config-chain/index.js"(exports2, module2) {
    var ProtoList = require_proto_list();
    var path45 = require("path");
    var fs50 = require("fs");
    var ini = require_ini();
    var EE = require("events").EventEmitter;
    var url = require("url");
    var http5 = require("http");
    var exports2 = module2.exports = function() {
      var args = [].slice.call(arguments), conf = new ConfigChain();
      while (args.length) {
        var a2 = args.shift();
        if (a2) conf.push("string" === typeof a2 ? json2(a2) : a2);
      }
      return conf;
    };
    var find2 = exports2.find = function() {
      var rel2 = path45.join.apply(null, [].slice.call(arguments));
      function find3(start, rel3) {
        var file = path45.join(start, rel3);
        try {
          fs50.statSync(file);
          return file;
        } catch (err) {
          if (path45.dirname(start) !== start)
            return find3(path45.dirname(start), rel3);
        }
      }
      return find3(__dirname, rel2);
    };
    var parse16 = exports2.parse = function(content3, file, type2) {
      content3 = "" + content3;
      if (!type2) {
        try {
          return JSON.parse(content3);
        } catch (er) {
          return ini.parse(content3);
        }
      } else if (type2 === "json") {
        if (this.emit) {
          try {
            return JSON.parse(content3);
          } catch (er) {
            this.emit("error", er);
          }
        } else {
          return JSON.parse(content3);
        }
      } else {
        return ini.parse(content3);
      }
    };
    var json2 = exports2.json = function() {
      var args = [].slice.call(arguments).filter(function(arg2) {
        return arg2 != null;
      });
      var file = path45.join.apply(null, args);
      var content3;
      try {
        content3 = fs50.readFileSync(file, "utf-8");
      } catch (err) {
        return;
      }
      return parse16(content3, file, "json");
    };
    var env6 = exports2.env = function(prefix2, env7) {
      env7 = env7 || process.env;
      var obj = {};
      var l = prefix2.length;
      for (var k in env7) {
        if (k.indexOf(prefix2) === 0)
          obj[k.substring(l)] = env7[k];
      }
      return obj;
    };
    exports2.ConfigChain = ConfigChain;
    function ConfigChain() {
      EE.apply(this);
      ProtoList.apply(this, arguments);
      this._awaiting = 0;
      this._saving = 0;
      this.sources = {};
    }
    var extras = {
      constructor: { value: ConfigChain }
    };
    Object.keys(EE.prototype).forEach(function(k) {
      extras[k] = Object.getOwnPropertyDescriptor(EE.prototype, k);
    });
    ConfigChain.prototype = Object.create(ProtoList.prototype, extras);
    ConfigChain.prototype.del = function(key2, where) {
      if (where) {
        var target = this.sources[where];
        target = target && target.data;
        if (!target) {
          return this.emit("error", new Error("not found " + where));
        }
        delete target[key2];
      } else {
        for (var i2 = 0, l = this.list.length; i2 < l; i2++) {
          delete this.list[i2][key2];
        }
      }
      return this;
    };
    ConfigChain.prototype.set = function(key2, value, where) {
      var target;
      if (where) {
        target = this.sources[where];
        target = target && target.data;
        if (!target) {
          return this.emit("error", new Error("not found " + where));
        }
      } else {
        target = this.list[0];
        if (!target) {
          return this.emit("error", new Error("cannot set, no confs!"));
        }
      }
      target[key2] = value;
      return this;
    };
    ConfigChain.prototype.get = function(key2, where) {
      if (where) {
        where = this.sources[where];
        if (where) where = where.data;
        if (where && Object.hasOwnProperty.call(where, key2)) return where[key2];
        return void 0;
      }
      return this.list[0][key2];
    };
    ConfigChain.prototype.save = function(where, type2, cb) {
      if (typeof type2 === "function") cb = type2, type2 = null;
      var target = this.sources[where];
      if (!target || !(target.path || target.source) || !target.data) {
        return this.emit("error", new Error("bad save target: " + where));
      }
      if (target.source) {
        var pref = target.prefix || "";
        Object.keys(target.data).forEach(function(k) {
          target.source[pref + k] = target.data[k];
        });
        return this;
      }
      var type2 = type2 || target.type;
      var data = target.data;
      if (target.type === "json") {
        data = JSON.stringify(data);
      } else {
        data = ini.stringify(data);
      }
      this._saving++;
      fs50.writeFile(target.path, data, "utf8", function(er) {
        this._saving--;
        if (er) {
          if (cb) return cb(er);
          else return this.emit("error", er);
        }
        if (this._saving === 0) {
          if (cb) cb();
          this.emit("save");
        }
      }.bind(this));
      return this;
    };
    ConfigChain.prototype.addFile = function(file, type2, name3) {
      name3 = name3 || file;
      var marker = { __source__: name3 };
      this.sources[name3] = { path: file, type: type2 };
      this.push(marker);
      this._await();
      fs50.readFile(file, "utf8", function(er, data) {
        if (er) this.emit("error", er);
        this.addString(data, file, type2, marker);
      }.bind(this));
      return this;
    };
    ConfigChain.prototype.addEnv = function(prefix2, env7, name3) {
      name3 = name3 || "env";
      var data = exports2.env(prefix2, env7);
      this.sources[name3] = { data, source: env7, prefix: prefix2 };
      return this.add(data, name3);
    };
    ConfigChain.prototype.addUrl = function(req, type2, name3) {
      this._await();
      var href = url.format(req);
      name3 = name3 || href;
      var marker = { __source__: name3 };
      this.sources[name3] = { href, type: type2 };
      this.push(marker);
      http5.request(req, function(res) {
        var c = [];
        var ct = res.headers["content-type"];
        if (!type2) {
          type2 = ct.indexOf("json") !== -1 ? "json" : ct.indexOf("ini") !== -1 ? "ini" : href.match(/\.json$/) ? "json" : href.match(/\.ini$/) ? "ini" : null;
          marker.type = type2;
        }
        res.on("data", c.push.bind(c)).on("end", function() {
          this.addString(Buffer.concat(c), href, type2, marker);
        }.bind(this)).on("error", this.emit.bind(this, "error"));
      }.bind(this)).on("error", this.emit.bind(this, "error")).end();
      return this;
    };
    ConfigChain.prototype.addString = function(data, file, type2, marker) {
      data = this.parse(data, file, type2);
      this.add(data, marker);
      return this;
    };
    ConfigChain.prototype.add = function(data, marker) {
      if (marker && typeof marker === "object") {
        var i2 = this.list.indexOf(marker);
        if (i2 === -1) {
          return this.emit("error", new Error("bad marker"));
        }
        this.splice(i2, 1, data);
        marker = marker.__source__;
        this.sources[marker] = this.sources[marker] || {};
        this.sources[marker].data = data;
        this._resolve();
      } else {
        if (typeof marker === "string") {
          this.sources[marker] = this.sources[marker] || {};
          this.sources[marker].data = data;
        }
        this._await();
        this.push(data);
        process.nextTick(this._resolve.bind(this));
      }
      return this;
    };
    ConfigChain.prototype.parse = exports2.parse;
    ConfigChain.prototype._await = function() {
      this._awaiting++;
    };
    ConfigChain.prototype._resolve = function() {
      this._awaiting--;
      if (this._awaiting === 0) this.emit("load", this);
    };
  }
});

// ../../node_modules/@pnpm/npm-conf/lib/envKeyToSetting.js
var require_envKeyToSetting = __commonJS({
  "../../node_modules/@pnpm/npm-conf/lib/envKeyToSetting.js"(exports2, module2) {
    module2.exports = function(x2) {
      const colonIndex = x2.indexOf(":");
      if (colonIndex === -1) {
        return normalize6(x2);
      }
      const firstPart = x2.substr(0, colonIndex);
      const secondPart = x2.substr(colonIndex + 1);
      return `${normalize6(firstPart)}:${normalize6(secondPart)}`;
    };
    function normalize6(s5) {
      s5 = s5.toLowerCase();
      if (s5 === "_authtoken") return "_authToken";
      let r2 = s5[0];
      for (let i2 = 1; i2 < s5.length; i2++) {
        r2 += s5[i2] === "_" ? "-" : s5[i2];
      }
      return r2;
    }
  }
});

// ../../node_modules/@pnpm/config.env-replace/dist/env-replace.js
var require_env_replace = __commonJS({
  "../../node_modules/@pnpm/config.env-replace/dist/env-replace.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.envReplace = void 0;
    var ENV_EXPR = /(?<!\\)(\\*)\$\{([^${}]+)\}/g;
    function envReplace(settingValue, env6) {
      return settingValue.replace(ENV_EXPR, replaceEnvMatch.bind(null, env6));
    }
    exports2.envReplace = envReplace;
    function replaceEnvMatch(env6, orig, escape5, name3) {
      if (escape5.length % 2) {
        return orig.slice((escape5.length + 1) / 2);
      }
      const envValue = getEnvValue(env6, name3);
      if (envValue === void 0) {
        throw new Error(`Failed to replace env in config: ${orig}`);
      }
      return `${escape5.slice(escape5.length / 2)}${envValue}`;
    }
    var ENV_VALUE = /([^:-]+)(:?)-(.+)/;
    function getEnvValue(env6, name3) {
      const matched = name3.match(ENV_VALUE);
      if (!matched)
        return env6[name3];
      const [, variableName, colon, fallback] = matched;
      if (Object.prototype.hasOwnProperty.call(env6, variableName)) {
        return !env6[variableName] && colon ? fallback : env6[variableName];
      }
      return fallback;
    }
  }
});

// ../../node_modules/@pnpm/config.env-replace/dist/index.js
var require_dist3 = __commonJS({
  "../../node_modules/@pnpm/config.env-replace/dist/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.envReplace = void 0;
    var env_replace_1 = require_env_replace();
    Object.defineProperty(exports2, "envReplace", { enumerable: true, get: function() {
      return env_replace_1.envReplace;
    } });
  }
});

// ../../node_modules/@pnpm/npm-conf/lib/util.js
var require_util6 = __commonJS({
  "../../node_modules/@pnpm/npm-conf/lib/util.js"(exports2) {
    "use strict";
    var fs50 = require("fs");
    var path45 = require("path");
    var { envReplace } = require_dist3();
    var parseField = (types6, field, key2) => {
      if (typeof field !== "string") {
        return field;
      }
      const typeList = [].concat(types6[key2]);
      const isPath = typeList.indexOf(path45) !== -1;
      const isBool = typeList.indexOf(Boolean) !== -1;
      const isString = typeList.indexOf(String) !== -1;
      const isNumber2 = typeList.indexOf(Number) !== -1;
      field = `${field}`.trim();
      if (/^".*"$/.test(field)) {
        try {
          field = JSON.parse(field);
        } catch (error) {
          throw new Error(`Failed parsing JSON config key ${key2}: ${field}`);
        }
      }
      if (isBool && !isString && field === "") {
        return true;
      }
      switch (field) {
        // eslint-disable-line default-case
        case "true": {
          return true;
        }
        case "false": {
          return false;
        }
        case "null": {
          return null;
        }
        case "undefined": {
          return void 0;
        }
      }
      field = envReplace(field, process.env);
      if (isPath) {
        const regex2 = process.platform === "win32" ? /^~(\/|\\)/ : /^~\//;
        if (regex2.test(field) && process.env.HOME) {
          field = path45.resolve(process.env.HOME, field.substr(2));
        }
        field = path45.resolve(field);
      }
      if (isNumber2 && !isNaN(field)) {
        field = Number(field);
      }
      return field;
    };
    var findPrefix = (name3) => {
      name3 = path45.resolve(name3);
      let walkedUp = false;
      while (path45.basename(name3) === "node_modules") {
        name3 = path45.dirname(name3);
        walkedUp = true;
      }
      if (walkedUp) {
        return name3;
      }
      const find2 = (name4, original) => {
        const regex2 = /^[a-zA-Z]:(\\|\/)?$/;
        if (name4 === "/" || process.platform === "win32" && regex2.test(name4)) {
          return original;
        }
        try {
          const files = fs50.readdirSync(name4);
          if (files.includes("node_modules") || files.includes("package.json") || files.includes("package.json5") || files.includes("package.yaml") || files.includes("pnpm-workspace.yaml")) {
            return name4;
          }
          const dirname8 = path45.dirname(name4);
          if (dirname8 === name4) {
            return original;
          }
          return find2(dirname8, original);
        } catch (error) {
          if (name4 === original) {
            if (error.code === "ENOENT") {
              return original;
            }
            throw error;
          }
          return original;
        }
      };
      return find2(name3, name3);
    };
    exports2.envReplace = envReplace;
    exports2.findPrefix = findPrefix;
    exports2.parseField = parseField;
  }
});

// ../../node_modules/@pnpm/npm-conf/lib/types.js
var require_types4 = __commonJS({
  "../../node_modules/@pnpm/npm-conf/lib/types.js"(exports2) {
    "use strict";
    var path45 = require("path");
    var Stream4 = require("stream").Stream;
    var url = require("url");
    var Umask = () => {
    };
    var getLocalAddresses = () => [];
    var semver2 = () => {
    };
    exports2.types = {
      access: [null, "restricted", "public"],
      "allow-same-version": Boolean,
      "always-auth": Boolean,
      also: [null, "dev", "development"],
      audit: Boolean,
      "auth-type": ["legacy", "sso", "saml", "oauth"],
      "bin-links": Boolean,
      browser: [null, String],
      ca: [null, String, Array],
      cafile: path45,
      cache: path45,
      "cache-lock-stale": Number,
      "cache-lock-retries": Number,
      "cache-lock-wait": Number,
      "cache-max": Number,
      "cache-min": Number,
      cert: [null, String],
      cidr: [null, String, Array],
      color: ["always", Boolean],
      depth: Number,
      description: Boolean,
      dev: Boolean,
      "dry-run": Boolean,
      editor: String,
      "engine-strict": Boolean,
      force: Boolean,
      "fetch-retries": Number,
      "fetch-retry-factor": Number,
      "fetch-retry-mintimeout": Number,
      "fetch-retry-maxtimeout": Number,
      git: String,
      "git-tag-version": Boolean,
      "commit-hooks": Boolean,
      global: Boolean,
      globalconfig: path45,
      "global-style": Boolean,
      group: [Number, String],
      "https-proxy": [null, url],
      "user-agent": String,
      "ham-it-up": Boolean,
      "heading": String,
      "if-present": Boolean,
      "ignore-prepublish": Boolean,
      "ignore-scripts": Boolean,
      "init-module": path45,
      "init-author-name": String,
      "init-author-email": String,
      "init-author-url": ["", url],
      "init-license": String,
      "init-version": semver2,
      json: Boolean,
      key: [null, String],
      "legacy-bundling": Boolean,
      link: Boolean,
      // local-address must be listed as an IP for a local network interface
      // must be IPv4 due to node bug
      "local-address": getLocalAddresses(),
      loglevel: ["silent", "error", "warn", "notice", "http", "timing", "info", "verbose", "silly"],
      logstream: Stream4,
      "logs-max": Number,
      long: Boolean,
      maxsockets: Number,
      message: String,
      "metrics-registry": [null, String],
      "node-options": [null, String],
      "node-version": [null, semver2],
      "no-proxy": [null, String, Array],
      offline: Boolean,
      "onload-script": [null, String],
      only: [null, "dev", "development", "prod", "production"],
      optional: Boolean,
      "package-lock": Boolean,
      otp: [null, String],
      "package-lock-only": Boolean,
      parseable: Boolean,
      "prefer-offline": Boolean,
      "prefer-online": Boolean,
      prefix: path45,
      production: Boolean,
      progress: Boolean,
      proxy: [null, false, url],
      provenance: Boolean,
      // allow proxy to be disabled explicitly
      "read-only": Boolean,
      "rebuild-bundle": Boolean,
      registry: [null, url],
      rollback: Boolean,
      save: Boolean,
      "save-bundle": Boolean,
      "save-dev": Boolean,
      "save-exact": Boolean,
      "save-optional": Boolean,
      "save-prefix": String,
      "save-prod": Boolean,
      scope: String,
      "script-shell": [null, String],
      "scripts-prepend-node-path": [false, true, "auto", "warn-only"],
      searchopts: String,
      searchexclude: [null, String],
      searchlimit: Number,
      searchstaleness: Number,
      "send-metrics": Boolean,
      shell: String,
      shrinkwrap: Boolean,
      "sign-git-tag": Boolean,
      "sso-poll-frequency": Number,
      "sso-type": [null, "oauth", "saml"],
      "strict-ssl": Boolean,
      tag: String,
      timing: Boolean,
      tmp: path45,
      unicode: Boolean,
      "unsafe-perm": Boolean,
      usage: Boolean,
      user: [Number, String],
      userconfig: path45,
      umask: Umask,
      version: Boolean,
      "tag-version-prefix": String,
      versions: Boolean,
      viewer: String,
      _exit: Boolean
    };
  }
});

// ../../node_modules/@pnpm/npm-conf/lib/conf.js
var require_conf = __commonJS({
  "../../node_modules/@pnpm/npm-conf/lib/conf.js"(exports2, module2) {
    "use strict";
    var { readCAFileSync } = require_dist2();
    var fs50 = require("fs");
    var path45 = require("path");
    var { ConfigChain } = require_config_chain();
    var envKeyToSetting = require_envKeyToSetting();
    var util4 = require_util6();
    var Conf = class extends ConfigChain {
      // https://github.com/npm/cli/blob/latest/lib/config/core.js#L203-L217
      constructor(base5, types6) {
        super(base5);
        this.root = base5;
        this._parseField = util4.parseField.bind(null, types6 || require_types4());
      }
      // https://github.com/npm/cli/blob/latest/lib/config/core.js#L326-L338
      add(data, marker) {
        try {
          for (const x2 of Object.keys(data)) {
            data[x2] = this._parseField(data[x2], x2);
          }
        } catch (error) {
          throw error;
        }
        return super.add(data, marker);
      }
      // https://github.com/npm/cli/blob/latest/lib/config/core.js#L306-L319
      addFile(file, name3) {
        name3 = name3 || file;
        const marker = { __source__: name3 };
        this.sources[name3] = { path: file, type: "ini" };
        this.push(marker);
        this._await();
        try {
          const contents = fs50.readFileSync(file, "utf8");
          this.addString(contents, file, "ini", marker);
        } catch (error) {
          if (error.code === "ENOENT") {
            this.add({}, marker);
          } else {
            return `Issue while reading "${file}". ${error.message}`;
          }
        }
      }
      // https://github.com/npm/cli/blob/latest/lib/config/core.js#L341-L357
      addEnv(env6) {
        env6 = env6 || process.env;
        const conf = {};
        Object.keys(env6).filter((x2) => /^npm_config_/i.test(x2)).forEach((x2) => {
          if (!env6[x2]) {
            return;
          }
          conf[envKeyToSetting(x2.substr(11))] = env6[x2];
        });
        return super.addEnv("", conf, "env");
      }
      // https://github.com/npm/cli/blob/latest/lib/config/load-prefix.js
      loadPrefix() {
        const cli2 = this.list[0];
        Object.defineProperty(this, "prefix", {
          enumerable: true,
          set: (prefix2) => {
            const g = this.get("global");
            this[g ? "globalPrefix" : "localPrefix"] = prefix2;
          },
          get: () => {
            const g = this.get("global");
            return g ? this.globalPrefix : this.localPrefix;
          }
        });
        Object.defineProperty(this, "globalPrefix", {
          enumerable: true,
          set: (prefix2) => {
            this.set("prefix", prefix2);
          },
          get: () => {
            return path45.resolve(this.get("prefix"));
          }
        });
        let p5;
        Object.defineProperty(this, "localPrefix", {
          enumerable: true,
          set: (prefix2) => {
            p5 = prefix2;
          },
          get: () => {
            return p5;
          }
        });
        if (Object.prototype.hasOwnProperty.call(cli2, "prefix")) {
          p5 = path45.resolve(cli2.prefix);
        } else {
          try {
            const prefix2 = util4.findPrefix(process.cwd());
            p5 = prefix2;
          } catch (error) {
            throw error;
          }
        }
        return p5;
      }
      // https://github.com/npm/cli/blob/latest/lib/config/load-cafile.js
      loadCAFile(file) {
        if (!file) {
          return;
        }
        const ca = readCAFileSync(file);
        if (ca) {
          this.set("ca", ca);
        }
      }
      // https://github.com/npm/cli/blob/latest/lib/config/set-user.js
      loadUser() {
        const defConf = this.root;
        if (this.get("global")) {
          return;
        }
        if (process.env.SUDO_UID) {
          defConf.user = Number(process.env.SUDO_UID);
          return;
        }
        const prefix2 = path45.resolve(this.get("prefix"));
        try {
          const stats = fs50.statSync(prefix2);
          defConf.user = stats.uid;
        } catch (error) {
          if (error.code === "ENOENT") {
            return;
          }
          throw error;
        }
      }
    };
    module2.exports = Conf;
  }
});

// ../../node_modules/@pnpm/npm-conf/lib/defaults.js
var require_defaults2 = __commonJS({
  "../../node_modules/@pnpm/npm-conf/lib/defaults.js"(exports2) {
    "use strict";
    var os10 = require("os");
    var path45 = require("path");
    var temp = os10.tmpdir();
    var uidOrPid = process.getuid ? process.getuid() : process.pid;
    var hasUnicode = () => true;
    var isWindows = process.platform === "win32";
    var osenv = {
      editor: () => process.env.EDITOR || process.env.VISUAL || (isWindows ? "notepad.exe" : "vi"),
      shell: () => isWindows ? process.env.COMSPEC || "cmd.exe" : process.env.SHELL || "/bin/bash"
    };
    var umask = {
      fromString: () => process.umask()
    };
    var home = os10.homedir();
    if (home) {
      process.env.HOME = home;
    } else {
      home = path45.resolve(temp, "npm-" + uidOrPid);
    }
    var cacheExtra = process.platform === "win32" ? "npm-cache" : ".npm";
    var cacheRoot = process.platform === "win32" && process.env.APPDATA || home;
    var cache = path45.resolve(cacheRoot, cacheExtra);
    var defaults3;
    var globalPrefix;
    Object.defineProperty(exports2, "defaults", {
      get: function() {
        if (defaults3) return defaults3;
        if (process.env.PREFIX) {
          globalPrefix = process.env.PREFIX;
        } else if (process.platform === "win32") {
          globalPrefix = path45.dirname(process.execPath);
        } else {
          globalPrefix = path45.dirname(path45.dirname(process.execPath));
          if (process.env.DESTDIR) {
            globalPrefix = path45.join(process.env.DESTDIR, globalPrefix);
          }
        }
        defaults3 = {
          access: null,
          "allow-same-version": false,
          "always-auth": false,
          also: null,
          audit: true,
          "auth-type": "legacy",
          "bin-links": true,
          browser: null,
          ca: null,
          cafile: null,
          cache,
          "cache-lock-stale": 6e4,
          "cache-lock-retries": 10,
          "cache-lock-wait": 1e4,
          "cache-max": Infinity,
          "cache-min": 10,
          cert: null,
          cidr: null,
          color: process.env.NO_COLOR == null,
          depth: Infinity,
          description: true,
          dev: false,
          "dry-run": false,
          editor: osenv.editor(),
          "engine-strict": false,
          force: false,
          "fetch-retries": 2,
          "fetch-retry-factor": 10,
          "fetch-retry-mintimeout": 1e4,
          "fetch-retry-maxtimeout": 6e4,
          git: "git",
          "git-tag-version": true,
          "commit-hooks": true,
          global: false,
          globalconfig: path45.resolve(globalPrefix, "etc", "npmrc"),
          "global-style": false,
          group: process.platform === "win32" ? 0 : process.env.SUDO_GID || process.getgid && process.getgid(),
          "ham-it-up": false,
          heading: "npm",
          "if-present": false,
          "ignore-prepublish": false,
          "ignore-scripts": false,
          "init-module": path45.resolve(home, ".npm-init.js"),
          "init-author-name": "",
          "init-author-email": "",
          "init-author-url": "",
          "init-version": "1.0.0",
          "init-license": "ISC",
          json: false,
          key: null,
          "legacy-bundling": false,
          link: false,
          "local-address": void 0,
          loglevel: "notice",
          logstream: process.stderr,
          "logs-max": 10,
          long: false,
          maxsockets: 50,
          message: "%s",
          "metrics-registry": null,
          "node-options": null,
          // We remove node-version to fix the issue described here: https://github.com/pnpm/pnpm/issues/4203#issuecomment-1133872769
          "offline": false,
          "onload-script": false,
          only: null,
          optional: true,
          otp: null,
          "package-lock": true,
          "package-lock-only": false,
          parseable: false,
          "prefer-offline": false,
          "prefer-online": false,
          prefix: globalPrefix,
          production: process.env.NODE_ENV === "production",
          "progress": !process.env.TRAVIS && !process.env.CI,
          provenance: false,
          proxy: null,
          "https-proxy": null,
          "no-proxy": null,
          "user-agent": "npm/{npm-version} node/{node-version} {platform} {arch}",
          "read-only": false,
          "rebuild-bundle": true,
          registry: "https://registry.npmjs.org/",
          rollback: true,
          save: true,
          "save-bundle": false,
          "save-dev": false,
          "save-exact": false,
          "save-optional": false,
          "save-prefix": "^",
          "save-prod": false,
          scope: "",
          "script-shell": null,
          "scripts-prepend-node-path": "warn-only",
          searchopts: "",
          searchexclude: null,
          searchlimit: 20,
          searchstaleness: 15 * 60,
          "send-metrics": false,
          shell: osenv.shell(),
          shrinkwrap: true,
          "sign-git-tag": false,
          "sso-poll-frequency": 500,
          "sso-type": "oauth",
          "strict-ssl": true,
          tag: "latest",
          "tag-version-prefix": "v",
          timing: false,
          tmp: temp,
          unicode: hasUnicode(),
          "unsafe-perm": process.platform === "win32" || process.platform === "cygwin" || !(process.getuid && process.setuid && process.getgid && process.setgid) || process.getuid() !== 0,
          usage: false,
          user: process.platform === "win32" ? 0 : "nobody",
          userconfig: path45.resolve(home, ".npmrc"),
          umask: process.umask ? process.umask() : umask.fromString("022"),
          version: false,
          versions: false,
          viewer: process.platform === "win32" ? "browser" : "man",
          _exit: true
        };
        return defaults3;
      }
    });
  }
});

// ../../node_modules/@pnpm/npm-conf/index.js
var require_npm_conf = __commonJS({
  "../../node_modules/@pnpm/npm-conf/index.js"(exports2, module2) {
    "use strict";
    var path45 = require("path");
    var Conf = require_conf();
    var _defaults = require_defaults2();
    module2.exports = (opts, types6, defaults3) => {
      const conf = new Conf(Object.assign({}, _defaults.defaults, defaults3), types6);
      conf.add(Object.assign({}, opts), "cli");
      const warnings2 = [];
      let failedToLoadBuiltInConfig = false;
      if (require.resolve.paths) {
        const paths = require.resolve.paths("npm");
        let npmPath;
        try {
          npmPath = require.resolve("npm", { paths: paths.slice(-1) });
        } catch (error) {
          failedToLoadBuiltInConfig = true;
        }
        if (npmPath) {
          warnings2.push(conf.addFile(path45.resolve(path45.dirname(npmPath), "..", "npmrc"), "builtin"));
        }
      }
      conf.addEnv();
      conf.loadPrefix();
      const projectConf = path45.resolve(conf.localPrefix, ".npmrc");
      const userConf = conf.get("userconfig");
      if (!conf.get("global") && projectConf !== userConf) {
        warnings2.push(conf.addFile(projectConf, "project"));
      } else {
        conf.add({}, "project");
      }
      if (conf.get("workspace-prefix") && conf.get("workspace-prefix") !== projectConf) {
        const workspaceConf = path45.resolve(conf.get("workspace-prefix"), ".npmrc");
        warnings2.push(conf.addFile(workspaceConf, "workspace"));
      }
      warnings2.push(conf.addFile(conf.get("userconfig"), "user"));
      if (conf.get("prefix")) {
        const etc = path45.resolve(conf.get("prefix"), "etc");
        conf.root.globalconfig = path45.resolve(etc, "npmrc");
        conf.root.globalignorefile = path45.resolve(etc, "npmignore");
      }
      warnings2.push(conf.addFile(conf.get("globalconfig"), "global"));
      conf.loadUser();
      const caFile = conf.get("cafile");
      if (caFile) {
        conf.loadCAFile(caFile);
      }
      return {
        config: conf,
        warnings: warnings2.filter(Boolean),
        failedToLoadBuiltInConfig
      };
    };
    Object.defineProperty(module2.exports, "defaults", {
      get() {
        return _defaults.defaults;
      },
      enumerable: true
    });
  }
});

// ../../node_modules/registry-auth-token/index.js
var require_registry_auth_token = __commonJS({
  "../../node_modules/registry-auth-token/index.js"(exports2, module2) {
    var url = require("url");
    var npmConf = require_npm_conf();
    var tokenKey = ":_authToken";
    var legacyTokenKey = ":_auth";
    var userKey = ":username";
    var passwordKey = ":_password";
    module2.exports = function getRegistryAuthToken() {
      let checkUrl;
      let options;
      if (arguments.length >= 2) {
        checkUrl = arguments[0];
        options = Object.assign({}, arguments[1]);
      } else if (typeof arguments[0] === "string") {
        checkUrl = arguments[0];
      } else {
        options = Object.assign({}, arguments[0]);
      }
      options = options || {};
      const providedNpmrc = options.npmrc;
      options.npmrc = (options.npmrc ? {
        config: {
          get: (key2) => providedNpmrc[key2]
        }
      } : npmConf()).config;
      checkUrl = checkUrl || options.npmrc.get("registry") || npmConf.defaults.registry;
      return getRegistryAuthInfo(checkUrl, options) || getLegacyAuthInfo(options.npmrc);
    };
    function getRegistryAuthInfo(checkUrl, options) {
      const parsed = url.parse(checkUrl, false, true);
      let pathname;
      while (pathname !== "/" && parsed.pathname !== pathname) {
        pathname = parsed.pathname || "/";
        const regUrl = "//" + parsed.host + pathname.replace(/\/$/, "");
        const authInfo = getAuthInfoForUrl(regUrl, options.npmrc);
        if (authInfo) {
          return authInfo;
        }
        if (!options.recursive) {
          return /\/$/.test(checkUrl) ? void 0 : getRegistryAuthInfo(url.resolve(checkUrl, "."), options);
        }
        parsed.pathname = url.resolve(normalizePath(pathname), "..") || "/";
      }
      return void 0;
    }
    function getLegacyAuthInfo(npmrc) {
      if (!npmrc.get("_auth")) {
        return void 0;
      }
      const token = replaceEnvironmentVariable(npmrc.get("_auth"));
      return { token, type: "Basic" };
    }
    function normalizePath(path45) {
      return path45[path45.length - 1] === "/" ? path45 : path45 + "/";
    }
    function getAuthInfoForUrl(regUrl, npmrc) {
      const bearerAuth = getBearerToken(npmrc.get(regUrl + tokenKey) || npmrc.get(regUrl + "/" + tokenKey));
      if (bearerAuth) {
        return bearerAuth;
      }
      const username = npmrc.get(regUrl + userKey) || npmrc.get(regUrl + "/" + userKey);
      const password = npmrc.get(regUrl + passwordKey) || npmrc.get(regUrl + "/" + passwordKey);
      const basicAuth = getTokenForUsernameAndPassword(username, password);
      if (basicAuth) {
        return basicAuth;
      }
      const basicAuthWithToken = getLegacyAuthToken(npmrc.get(regUrl + legacyTokenKey) || npmrc.get(regUrl + "/" + legacyTokenKey));
      if (basicAuthWithToken) {
        return basicAuthWithToken;
      }
      return void 0;
    }
    function replaceEnvironmentVariable(token) {
      return token.replace(/^\$\{?([^}]*)\}?$/, function(fullMatch, envVar) {
        return process.env[envVar];
      });
    }
    function getBearerToken(tok) {
      if (!tok) {
        return void 0;
      }
      const token = replaceEnvironmentVariable(tok);
      return { token, type: "Bearer" };
    }
    function getTokenForUsernameAndPassword(username, password) {
      if (!username || !password) {
        return void 0;
      }
      const pass2 = Buffer.from(replaceEnvironmentVariable(password), "base64").toString("utf8");
      const token = Buffer.from(username + ":" + pass2, "utf8").toString("base64");
      return {
        token,
        type: "Basic",
        password: pass2,
        username
      };
    }
    function getLegacyAuthToken(tok) {
      if (!tok) {
        return void 0;
      }
      const token = replaceEnvironmentVariable(tok);
      return { token, type: "Basic" };
    }
  }
});

// ../../node_modules/semver/internal/constants.js
var require_constants7 = __commonJS({
  "../../node_modules/semver/internal/constants.js"(exports2, module2) {
    var SEMVER_SPEC_VERSION = "2.0.0";
    var MAX_LENGTH = 256;
    var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
    9007199254740991;
    var MAX_SAFE_COMPONENT_LENGTH = 16;
    var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;
    var RELEASE_TYPES = [
      "major",
      "premajor",
      "minor",
      "preminor",
      "patch",
      "prepatch",
      "prerelease"
    ];
    module2.exports = {
      MAX_LENGTH,
      MAX_SAFE_COMPONENT_LENGTH,
      MAX_SAFE_BUILD_LENGTH,
      MAX_SAFE_INTEGER,
      RELEASE_TYPES,
      SEMVER_SPEC_VERSION,
      FLAG_INCLUDE_PRERELEASE: 1,
      FLAG_LOOSE: 2
    };
  }
});

// ../../node_modules/semver/internal/debug.js
var require_debug5 = __commonJS({
  "../../node_modules/semver/internal/debug.js"(exports2, module2) {
    var debug = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
    };
    module2.exports = debug;
  }
});

// ../../node_modules/semver/internal/re.js
var require_re2 = __commonJS({
  "../../node_modules/semver/internal/re.js"(exports2, module2) {
    var {
      MAX_SAFE_COMPONENT_LENGTH,
      MAX_SAFE_BUILD_LENGTH,
      MAX_LENGTH
    } = require_constants7();
    var debug = require_debug5();
    exports2 = module2.exports = {};
    var re = exports2.re = [];
    var safeRe = exports2.safeRe = [];
    var src = exports2.src = [];
    var t2 = exports2.t = {};
    var R = 0;
    var LETTERDASHNUMBER = "[a-zA-Z0-9-]";
    var safeRegexReplacements = [
      ["\\s", 1],
      ["\\d", MAX_LENGTH],
      [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]
    ];
    var makeSafeRegex = (value) => {
      for (const [token, max] of safeRegexReplacements) {
        value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);
      }
      return value;
    };
    var createToken = (name3, value, isGlobal) => {
      const safe2 = makeSafeRegex(value);
      const index4 = R++;
      debug(name3, index4, value);
      t2[name3] = index4;
      src[index4] = value;
      re[index4] = new RegExp(value, isGlobal ? "g" : void 0);
      safeRe[index4] = new RegExp(safe2, isGlobal ? "g" : void 0);
    };
    createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*");
    createToken("NUMERICIDENTIFIERLOOSE", "\\d+");
    createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);
    createToken("MAINVERSION", `(${src[t2.NUMERICIDENTIFIER]})\\.(${src[t2.NUMERICIDENTIFIER]})\\.(${src[t2.NUMERICIDENTIFIER]})`);
    createToken("MAINVERSIONLOOSE", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);
    createToken("PRERELEASEIDENTIFIER", `(?:${src[t2.NUMERICIDENTIFIER]}|${src[t2.NONNUMERICIDENTIFIER]})`);
    createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t2.NUMERICIDENTIFIERLOOSE]}|${src[t2.NONNUMERICIDENTIFIER]})`);
    createToken("PRERELEASE", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);
    createToken("PRERELEASELOOSE", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);
    createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`);
    createToken("BUILD", `(?:\\+(${src[t2.BUILDIDENTIFIER]}(?:\\.${src[t2.BUILDIDENTIFIER]})*))`);
    createToken("FULLPLAIN", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);
    createToken("FULL", `^${src[t2.FULLPLAIN]}$`);
    createToken("LOOSEPLAIN", `[v=\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);
    createToken("LOOSE", `^${src[t2.LOOSEPLAIN]}$`);
    createToken("GTLT", "((?:<|>)?=?)");
    createToken("XRANGEIDENTIFIERLOOSE", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);
    createToken("XRANGEIDENTIFIER", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\*`);
    createToken("XRANGEPLAIN", `[v=\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);
    createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);
    createToken("XRANGE", `^${src[t2.GTLT]}\\s*${src[t2.XRANGEPLAIN]}$`);
    createToken("XRANGELOOSE", `^${src[t2.GTLT]}\\s*${src[t2.XRANGEPLAINLOOSE]}$`);
    createToken("COERCE", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:$|[^\\d])`);
    createToken("COERCERTL", src[t2.COERCE], true);
    createToken("LONETILDE", "(?:~>?)");
    createToken("TILDETRIM", `(\\s*)${src[t2.LONETILDE]}\\s+`, true);
    exports2.tildeTrimReplace = "$1~";
    createToken("TILDE", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);
    createToken("TILDELOOSE", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);
    createToken("LONECARET", "(?:\\^)");
    createToken("CARETTRIM", `(\\s*)${src[t2.LONECARET]}\\s+`, true);
    exports2.caretTrimReplace = "$1^";
    createToken("CARET", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);
    createToken("CARETLOOSE", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);
    createToken("COMPARATORLOOSE", `^${src[t2.GTLT]}\\s*(${src[t2.LOOSEPLAIN]})$|^$`);
    createToken("COMPARATOR", `^${src[t2.GTLT]}\\s*(${src[t2.FULLPLAIN]})$|^$`);
    createToken("COMPARATORTRIM", `(\\s*)${src[t2.GTLT]}\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);
    exports2.comparatorTrimReplace = "$1$2$3";
    createToken("HYPHENRANGE", `^\\s*(${src[t2.XRANGEPLAIN]})\\s+-\\s+(${src[t2.XRANGEPLAIN]})\\s*$`);
    createToken("HYPHENRANGELOOSE", `^\\s*(${src[t2.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t2.XRANGEPLAINLOOSE]})\\s*$`);
    createToken("STAR", "(<|>)?=?\\s*\\*");
    createToken("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$");
    createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$");
  }
});

// ../../node_modules/semver/internal/parse-options.js
var require_parse_options = __commonJS({
  "../../node_modules/semver/internal/parse-options.js"(exports2, module2) {
    var looseOption = Object.freeze({ loose: true });
    var emptyOpts = Object.freeze({});
    var parseOptions3 = (options) => {
      if (!options) {
        return emptyOpts;
      }
      if (typeof options !== "object") {
        return looseOption;
      }
      return options;
    };
    module2.exports = parseOptions3;
  }
});

// ../../node_modules/semver/internal/identifiers.js
var require_identifiers = __commonJS({
  "../../node_modules/semver/internal/identifiers.js"(exports2, module2) {
    var numeric = /^[0-9]+$/;
    var compareIdentifiers = (a2, b) => {
      const anum = numeric.test(a2);
      const bnum = numeric.test(b);
      if (anum && bnum) {
        a2 = +a2;
        b = +b;
      }
      return a2 === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b ? -1 : 1;
    };
    var rcompareIdentifiers = (a2, b) => compareIdentifiers(b, a2);
    module2.exports = {
      compareIdentifiers,
      rcompareIdentifiers
    };
  }
});

// ../../node_modules/semver/classes/semver.js
var require_semver2 = __commonJS({
  "../../node_modules/semver/classes/semver.js"(exports2, module2) {
    var debug = require_debug5();
    var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants7();
    var { safeRe: re, t: t2 } = require_re2();
    var parseOptions3 = require_parse_options();
    var { compareIdentifiers } = require_identifiers();
    var SemVer = class _SemVer {
      constructor(version4, options) {
        options = parseOptions3(options);
        if (version4 instanceof _SemVer) {
          if (version4.loose === !!options.loose && version4.includePrerelease === !!options.includePrerelease) {
            return version4;
          } else {
            version4 = version4.version;
          }
        } else if (typeof version4 !== "string") {
          throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version4}".`);
        }
        if (version4.length > MAX_LENGTH) {
          throw new TypeError(
            `version is longer than ${MAX_LENGTH} characters`
          );
        }
        debug("SemVer", version4, options);
        this.options = options;
        this.loose = !!options.loose;
        this.includePrerelease = !!options.includePrerelease;
        const m2 = version4.trim().match(options.loose ? re[t2.LOOSE] : re[t2.FULL]);
        if (!m2) {
          throw new TypeError(`Invalid Version: ${version4}`);
        }
        this.raw = version4;
        this.major = +m2[1];
        this.minor = +m2[2];
        this.patch = +m2[3];
        if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
          throw new TypeError("Invalid major version");
        }
        if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
          throw new TypeError("Invalid minor version");
        }
        if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
          throw new TypeError("Invalid patch version");
        }
        if (!m2[4]) {
          this.prerelease = [];
        } else {
          this.prerelease = m2[4].split(".").map((id) => {
            if (/^[0-9]+$/.test(id)) {
              const num = +id;
              if (num >= 0 && num < MAX_SAFE_INTEGER) {
                return num;
              }
            }
            return id;
          });
        }
        this.build = m2[5] ? m2[5].split(".") : [];
        this.format();
      }
      format() {
        this.version = `${this.major}.${this.minor}.${this.patch}`;
        if (this.prerelease.length) {
          this.version += `-${this.prerelease.join(".")}`;
        }
        return this.version;
      }
      toString() {
        return this.version;
      }
      compare(other) {
        debug("SemVer.compare", this.version, this.options, other);
        if (!(other instanceof _SemVer)) {
          if (typeof other === "string" && other === this.version) {
            return 0;
          }
          other = new _SemVer(other, this.options);
        }
        if (other.version === this.version) {
          return 0;
        }
        return this.compareMain(other) || this.comparePre(other);
      }
      compareMain(other) {
        if (!(other instanceof _SemVer)) {
          other = new _SemVer(other, this.options);
        }
        return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
      }
      comparePre(other) {
        if (!(other instanceof _SemVer)) {
          other = new _SemVer(other, this.options);
        }
        if (this.prerelease.length && !other.prerelease.length) {
          return -1;
        } else if (!this.prerelease.length && other.prerelease.length) {
          return 1;
        } else if (!this.prerelease.length && !other.prerelease.length) {
          return 0;
        }
        let i2 = 0;
        do {
          const a2 = this.prerelease[i2];
          const b = other.prerelease[i2];
          debug("prerelease compare", i2, a2, b);
          if (a2 === void 0 && b === void 0) {
            return 0;
          } else if (b === void 0) {
            return 1;
          } else if (a2 === void 0) {
            return -1;
          } else if (a2 === b) {
            continue;
          } else {
            return compareIdentifiers(a2, b);
          }
        } while (++i2);
      }
      compareBuild(other) {
        if (!(other instanceof _SemVer)) {
          other = new _SemVer(other, this.options);
        }
        let i2 = 0;
        do {
          const a2 = this.build[i2];
          const b = other.build[i2];
          debug("prerelease compare", i2, a2, b);
          if (a2 === void 0 && b === void 0) {
            return 0;
          } else if (b === void 0) {
            return 1;
          } else if (a2 === void 0) {
            return -1;
          } else if (a2 === b) {
            continue;
          } else {
            return compareIdentifiers(a2, b);
          }
        } while (++i2);
      }
      // preminor will bump the version up to the next minor release, and immediately
      // down to pre-release. premajor and prepatch work the same way.
      inc(release, identifier, identifierBase) {
        switch (release) {
          case "premajor":
            this.prerelease.length = 0;
            this.patch = 0;
            this.minor = 0;
            this.major++;
            this.inc("pre", identifier, identifierBase);
            break;
          case "preminor":
            this.prerelease.length = 0;
            this.patch = 0;
            this.minor++;
            this.inc("pre", identifier, identifierBase);
            break;
          case "prepatch":
            this.prerelease.length = 0;
            this.inc("patch", identifier, identifierBase);
            this.inc("pre", identifier, identifierBase);
            break;
          // If the input is a non-prerelease version, this acts the same as
          // prepatch.
          case "prerelease":
            if (this.prerelease.length === 0) {
              this.inc("patch", identifier, identifierBase);
            }
            this.inc("pre", identifier, identifierBase);
            break;
          case "major":
            if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
              this.major++;
            }
            this.minor = 0;
            this.patch = 0;
            this.prerelease = [];
            break;
          case "minor":
            if (this.patch !== 0 || this.prerelease.length === 0) {
              this.minor++;
            }
            this.patch = 0;
            this.prerelease = [];
            break;
          case "patch":
            if (this.prerelease.length === 0) {
              this.patch++;
            }
            this.prerelease = [];
            break;
          // This probably shouldn't be used publicly.
          // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
          case "pre": {
            const base5 = Number(identifierBase) ? 1 : 0;
            if (!identifier && identifierBase === false) {
              throw new Error("invalid increment argument: identifier is empty");
            }
            if (this.prerelease.length === 0) {
              this.prerelease = [base5];
            } else {
              let i2 = this.prerelease.length;
              while (--i2 >= 0) {
                if (typeof this.prerelease[i2] === "number") {
                  this.prerelease[i2]++;
                  i2 = -2;
                }
              }
              if (i2 === -1) {
                if (identifier === this.prerelease.join(".") && identifierBase === false) {
                  throw new Error("invalid increment argument: identifier already exists");
                }
                this.prerelease.push(base5);
              }
            }
            if (identifier) {
              let prerelease = [identifier, base5];
              if (identifierBase === false) {
                prerelease = [identifier];
              }
              if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
                if (isNaN(this.prerelease[1])) {
                  this.prerelease = prerelease;
                }
              } else {
                this.prerelease = prerelease;
              }
            }
            break;
          }
          default:
            throw new Error(`invalid increment argument: ${release}`);
        }
        this.raw = this.format();
        if (this.build.length) {
          this.raw += `+${this.build.join(".")}`;
        }
        return this;
      }
    };
    module2.exports = SemVer;
  }
});

// ../../node_modules/semver/functions/parse.js
var require_parse7 = __commonJS({
  "../../node_modules/semver/functions/parse.js"(exports2, module2) {
    var SemVer = require_semver2();
    var parse16 = (version4, options, throwErrors = false) => {
      if (version4 instanceof SemVer) {
        return version4;
      }
      try {
        return new SemVer(version4, options);
      } catch (er) {
        if (!throwErrors) {
          return null;
        }
        throw er;
      }
    };
    module2.exports = parse16;
  }
});

// ../../node_modules/semver/functions/valid.js
var require_valid = __commonJS({
  "../../node_modules/semver/functions/valid.js"(exports2, module2) {
    var parse16 = require_parse7();
    var valid2 = (version4, options) => {
      const v = parse16(version4, options);
      return v ? v.version : null;
    };
    module2.exports = valid2;
  }
});

// ../../node_modules/semver/functions/clean.js
var require_clean = __commonJS({
  "../../node_modules/semver/functions/clean.js"(exports2, module2) {
    var parse16 = require_parse7();
    var clean3 = (version4, options) => {
      const s5 = parse16(version4.trim().replace(/^[=v]+/, ""), options);
      return s5 ? s5.version : null;
    };
    module2.exports = clean3;
  }
});

// ../../node_modules/semver/functions/inc.js
var require_inc = __commonJS({
  "../../node_modules/semver/functions/inc.js"(exports2, module2) {
    var SemVer = require_semver2();
    var inc = (version4, release, options, identifier, identifierBase) => {
      if (typeof options === "string") {
        identifierBase = identifier;
        identifier = options;
        options = void 0;
      }
      try {
        return new SemVer(
          version4 instanceof SemVer ? version4.version : version4,
          options
        ).inc(release, identifier, identifierBase).version;
      } catch (er) {
        return null;
      }
    };
    module2.exports = inc;
  }
});

// ../../node_modules/semver/functions/diff.js
var require_diff = __commonJS({
  "../../node_modules/semver/functions/diff.js"(exports2, module2) {
    var parse16 = require_parse7();
    var diff = (version1, version22) => {
      const v1 = parse16(version1, null, true);
      const v2 = parse16(version22, null, true);
      const comparison = v1.compare(v2);
      if (comparison === 0) {
        return null;
      }
      const v1Higher = comparison > 0;
      const highVersion = v1Higher ? v1 : v2;
      const lowVersion = v1Higher ? v2 : v1;
      const highHasPre = !!highVersion.prerelease.length;
      const lowHasPre = !!lowVersion.prerelease.length;
      if (lowHasPre && !highHasPre) {
        if (!lowVersion.patch && !lowVersion.minor) {
          return "major";
        }
        if (highVersion.patch) {
          return "patch";
        }
        if (highVersion.minor) {
          return "minor";
        }
        return "major";
      }
      const prefix2 = highHasPre ? "pre" : "";
      if (v1.major !== v2.major) {
        return prefix2 + "major";
      }
      if (v1.minor !== v2.minor) {
        return prefix2 + "minor";
      }
      if (v1.patch !== v2.patch) {
        return prefix2 + "patch";
      }
      return "prerelease";
    };
    module2.exports = diff;
  }
});

// ../../node_modules/semver/functions/major.js
var require_major = __commonJS({
  "../../node_modules/semver/functions/major.js"(exports2, module2) {
    var SemVer = require_semver2();
    var major2 = (a2, loose) => new SemVer(a2, loose).major;
    module2.exports = major2;
  }
});

// ../../node_modules/semver/functions/minor.js
var require_minor = __commonJS({
  "../../node_modules/semver/functions/minor.js"(exports2, module2) {
    var SemVer = require_semver2();
    var minor2 = (a2, loose) => new SemVer(a2, loose).minor;
    module2.exports = minor2;
  }
});

// ../../node_modules/semver/functions/patch.js
var require_patch = __commonJS({
  "../../node_modules/semver/functions/patch.js"(exports2, module2) {
    var SemVer = require_semver2();
    var patch4 = (a2, loose) => new SemVer(a2, loose).patch;
    module2.exports = patch4;
  }
});

// ../../node_modules/semver/functions/prerelease.js
var require_prerelease = __commonJS({
  "../../node_modules/semver/functions/prerelease.js"(exports2, module2) {
    var parse16 = require_parse7();
    var prerelease = (version4, options) => {
      const parsed = parse16(version4, options);
      return parsed && parsed.prerelease.length ? parsed.prerelease : null;
    };
    module2.exports = prerelease;
  }
});

// ../../node_modules/semver/functions/compare.js
var require_compare = __commonJS({
  "../../node_modules/semver/functions/compare.js"(exports2, module2) {
    var SemVer = require_semver2();
    var compare3 = (a2, b, loose) => new SemVer(a2, loose).compare(new SemVer(b, loose));
    module2.exports = compare3;
  }
});

// ../../node_modules/semver/functions/rcompare.js
var require_rcompare = __commonJS({
  "../../node_modules/semver/functions/rcompare.js"(exports2, module2) {
    var compare3 = require_compare();
    var rcompare = (a2, b, loose) => compare3(b, a2, loose);
    module2.exports = rcompare;
  }
});

// ../../node_modules/semver/functions/compare-loose.js
var require_compare_loose = __commonJS({
  "../../node_modules/semver/functions/compare-loose.js"(exports2, module2) {
    var compare3 = require_compare();
    var compareLoose = (a2, b) => compare3(a2, b, true);
    module2.exports = compareLoose;
  }
});

// ../../node_modules/semver/functions/compare-build.js
var require_compare_build = __commonJS({
  "../../node_modules/semver/functions/compare-build.js"(exports2, module2) {
    var SemVer = require_semver2();
    var compareBuild = (a2, b, loose) => {
      const versionA = new SemVer(a2, loose);
      const versionB = new SemVer(b, loose);
      return versionA.compare(versionB) || versionA.compareBuild(versionB);
    };
    module2.exports = compareBuild;
  }
});

// ../../node_modules/semver/functions/sort.js
var require_sort2 = __commonJS({
  "../../node_modules/semver/functions/sort.js"(exports2, module2) {
    var compareBuild = require_compare_build();
    var sort = (list6, loose) => list6.sort((a2, b) => compareBuild(a2, b, loose));
    module2.exports = sort;
  }
});

// ../../node_modules/semver/functions/rsort.js
var require_rsort = __commonJS({
  "../../node_modules/semver/functions/rsort.js"(exports2, module2) {
    var compareBuild = require_compare_build();
    var rsort = (list6, loose) => list6.sort((a2, b) => compareBuild(b, a2, loose));
    module2.exports = rsort;
  }
});

// ../../node_modules/semver/functions/gt.js
var require_gt = __commonJS({
  "../../node_modules/semver/functions/gt.js"(exports2, module2) {
    var compare3 = require_compare();
    var gt = (a2, b, loose) => compare3(a2, b, loose) > 0;
    module2.exports = gt;
  }
});

// ../../node_modules/semver/functions/lt.js
var require_lt = __commonJS({
  "../../node_modules/semver/functions/lt.js"(exports2, module2) {
    var compare3 = require_compare();
    var lt = (a2, b, loose) => compare3(a2, b, loose) < 0;
    module2.exports = lt;
  }
});

// ../../node_modules/semver/functions/eq.js
var require_eq = __commonJS({
  "../../node_modules/semver/functions/eq.js"(exports2, module2) {
    var compare3 = require_compare();
    var eq = (a2, b, loose) => compare3(a2, b, loose) === 0;
    module2.exports = eq;
  }
});

// ../../node_modules/semver/functions/neq.js
var require_neq = __commonJS({
  "../../node_modules/semver/functions/neq.js"(exports2, module2) {
    var compare3 = require_compare();
    var neq = (a2, b, loose) => compare3(a2, b, loose) !== 0;
    module2.exports = neq;
  }
});

// ../../node_modules/semver/functions/gte.js
var require_gte = __commonJS({
  "../../node_modules/semver/functions/gte.js"(exports2, module2) {
    var compare3 = require_compare();
    var gte = (a2, b, loose) => compare3(a2, b, loose) >= 0;
    module2.exports = gte;
  }
});

// ../../node_modules/semver/functions/lte.js
var require_lte = __commonJS({
  "../../node_modules/semver/functions/lte.js"(exports2, module2) {
    var compare3 = require_compare();
    var lte = (a2, b, loose) => compare3(a2, b, loose) <= 0;
    module2.exports = lte;
  }
});

// ../../node_modules/semver/functions/cmp.js
var require_cmp = __commonJS({
  "../../node_modules/semver/functions/cmp.js"(exports2, module2) {
    var eq = require_eq();
    var neq = require_neq();
    var gt = require_gt();
    var gte = require_gte();
    var lt = require_lt();
    var lte = require_lte();
    var cmp = (a2, op2, b, loose) => {
      switch (op2) {
        case "===":
          if (typeof a2 === "object") {
            a2 = a2.version;
          }
          if (typeof b === "object") {
            b = b.version;
          }
          return a2 === b;
        case "!==":
          if (typeof a2 === "object") {
            a2 = a2.version;
          }
          if (typeof b === "object") {
            b = b.version;
          }
          return a2 !== b;
        case "":
        case "=":
        case "==":
          return eq(a2, b, loose);
        case "!=":
          return neq(a2, b, loose);
        case ">":
          return gt(a2, b, loose);
        case ">=":
          return gte(a2, b, loose);
        case "<":
          return lt(a2, b, loose);
        case "<=":
          return lte(a2, b, loose);
        default:
          throw new TypeError(`Invalid operator: ${op2}`);
      }
    };
    module2.exports = cmp;
  }
});

// ../../node_modules/semver/functions/coerce.js
var require_coerce = __commonJS({
  "../../node_modules/semver/functions/coerce.js"(exports2, module2) {
    var SemVer = require_semver2();
    var parse16 = require_parse7();
    var { safeRe: re, t: t2 } = require_re2();
    var coerce2 = (version4, options) => {
      if (version4 instanceof SemVer) {
        return version4;
      }
      if (typeof version4 === "number") {
        version4 = String(version4);
      }
      if (typeof version4 !== "string") {
        return null;
      }
      options = options || {};
      let match3 = null;
      if (!options.rtl) {
        match3 = version4.match(re[t2.COERCE]);
      } else {
        let next;
        while ((next = re[t2.COERCERTL].exec(version4)) && (!match3 || match3.index + match3[0].length !== version4.length)) {
          if (!match3 || next.index + next[0].length !== match3.index + match3[0].length) {
            match3 = next;
          }
          re[t2.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
        }
        re[t2.COERCERTL].lastIndex = -1;
      }
      if (match3 === null) {
        return null;
      }
      return parse16(`${match3[2]}.${match3[3] || "0"}.${match3[4] || "0"}`, options);
    };
    module2.exports = coerce2;
  }
});

// ../../node_modules/yallist/iterator.js
var require_iterator2 = __commonJS({
  "../../node_modules/yallist/iterator.js"(exports2, module2) {
    "use strict";
    module2.exports = function(Yallist) {
      Yallist.prototype[Symbol.iterator] = function* () {
        for (let walker = this.head; walker; walker = walker.next) {
          yield walker.value;
        }
      };
    };
  }
});

// ../../node_modules/yallist/yallist.js
var require_yallist = __commonJS({
  "../../node_modules/yallist/yallist.js"(exports2, module2) {
    "use strict";
    module2.exports = Yallist;
    Yallist.Node = Node;
    Yallist.create = Yallist;
    function Yallist(list6) {
      var self2 = this;
      if (!(self2 instanceof Yallist)) {
        self2 = new Yallist();
      }
      self2.tail = null;
      self2.head = null;
      self2.length = 0;
      if (list6 && typeof list6.forEach === "function") {
        list6.forEach(function(item) {
          self2.push(item);
        });
      } else if (arguments.length > 0) {
        for (var i2 = 0, l = arguments.length; i2 < l; i2++) {
          self2.push(arguments[i2]);
        }
      }
      return self2;
    }
    Yallist.prototype.removeNode = function(node3) {
      if (node3.list !== this) {
        throw new Error("removing node which does not belong to this list");
      }
      var next = node3.next;
      var prev = node3.prev;
      if (next) {
        next.prev = prev;
      }
      if (prev) {
        prev.next = next;
      }
      if (node3 === this.head) {
        this.head = next;
      }
      if (node3 === this.tail) {
        this.tail = prev;
      }
      node3.list.length--;
      node3.next = null;
      node3.prev = null;
      node3.list = null;
      return next;
    };
    Yallist.prototype.unshiftNode = function(node3) {
      if (node3 === this.head) {
        return;
      }
      if (node3.list) {
        node3.list.removeNode(node3);
      }
      var head2 = this.head;
      node3.list = this;
      node3.next = head2;
      if (head2) {
        head2.prev = node3;
      }
      this.head = node3;
      if (!this.tail) {
        this.tail = node3;
      }
      this.length++;
    };
    Yallist.prototype.pushNode = function(node3) {
      if (node3 === this.tail) {
        return;
      }
      if (node3.list) {
        node3.list.removeNode(node3);
      }
      var tail = this.tail;
      node3.list = this;
      node3.prev = tail;
      if (tail) {
        tail.next = node3;
      }
      this.tail = node3;
      if (!this.head) {
        this.head = node3;
      }
      this.length++;
    };
    Yallist.prototype.push = function() {
      for (var i2 = 0, l = arguments.length; i2 < l; i2++) {
        push(this, arguments[i2]);
      }
      return this.length;
    };
    Yallist.prototype.unshift = function() {
      for (var i2 = 0, l = arguments.length; i2 < l; i2++) {
        unshift(this, arguments[i2]);
      }
      return this.length;
    };
    Yallist.prototype.pop = function() {
      if (!this.tail) {
        return void 0;
      }
      var res = this.tail.value;
      this.tail = this.tail.prev;
      if (this.tail) {
        this.tail.next = null;
      } else {
        this.head = null;
      }
      this.length--;
      return res;
    };
    Yallist.prototype.shift = function() {
      if (!this.head) {
        return void 0;
      }
      var res = this.head.value;
      this.head = this.head.next;
      if (this.head) {
        this.head.prev = null;
      } else {
        this.tail = null;
      }
      this.length--;
      return res;
    };
    Yallist.prototype.forEach = function(fn, thisp) {
      thisp = thisp || this;
      for (var walker = this.head, i2 = 0; walker !== null; i2++) {
        fn.call(thisp, walker.value, i2, this);
        walker = walker.next;
      }
    };
    Yallist.prototype.forEachReverse = function(fn, thisp) {
      thisp = thisp || this;
      for (var walker = this.tail, i2 = this.length - 1; walker !== null; i2--) {
        fn.call(thisp, walker.value, i2, this);
        walker = walker.prev;
      }
    };
    Yallist.prototype.get = function(n) {
      for (var i2 = 0, walker = this.head; walker !== null && i2 < n; i2++) {
        walker = walker.next;
      }
      if (i2 === n && walker !== null) {
        return walker.value;
      }
    };
    Yallist.prototype.getReverse = function(n) {
      for (var i2 = 0, walker = this.tail; walker !== null && i2 < n; i2++) {
        walker = walker.prev;
      }
      if (i2 === n && walker !== null) {
        return walker.value;
      }
    };
    Yallist.prototype.map = function(fn, thisp) {
      thisp = thisp || this;
      var res = new Yallist();
      for (var walker = this.head; walker !== null; ) {
        res.push(fn.call(thisp, walker.value, this));
        walker = walker.next;
      }
      return res;
    };
    Yallist.prototype.mapReverse = function(fn, thisp) {
      thisp = thisp || this;
      var res = new Yallist();
      for (var walker = this.tail; walker !== null; ) {
        res.push(fn.call(thisp, walker.value, this));
        walker = walker.prev;
      }
      return res;
    };
    Yallist.prototype.reduce = function(fn, initial) {
      var acc;
      var walker = this.head;
      if (arguments.length > 1) {
        acc = initial;
      } else if (this.head) {
        walker = this.head.next;
        acc = this.head.value;
      } else {
        throw new TypeError("Reduce of empty list with no initial value");
      }
      for (var i2 = 0; walker !== null; i2++) {
        acc = fn(acc, walker.value, i2);
        walker = walker.next;
      }
      return acc;
    };
    Yallist.prototype.reduceReverse = function(fn, initial) {
      var acc;
      var walker = this.tail;
      if (arguments.length > 1) {
        acc = initial;
      } else if (this.tail) {
        walker = this.tail.prev;
        acc = this.tail.value;
      } else {
        throw new TypeError("Reduce of empty list with no initial value");
      }
      for (var i2 = this.length - 1; walker !== null; i2--) {
        acc = fn(acc, walker.value, i2);
        walker = walker.prev;
      }
      return acc;
    };
    Yallist.prototype.toArray = function() {
      var arr = new Array(this.length);
      for (var i2 = 0, walker = this.head; walker !== null; i2++) {
        arr[i2] = walker.value;
        walker = walker.next;
      }
      return arr;
    };
    Yallist.prototype.toArrayReverse = function() {
      var arr = new Array(this.length);
      for (var i2 = 0, walker = this.tail; walker !== null; i2++) {
        arr[i2] = walker.value;
        walker = walker.prev;
      }
      return arr;
    };
    Yallist.prototype.slice = function(from4, to) {
      to = to || this.length;
      if (to < 0) {
        to += this.length;
      }
      from4 = from4 || 0;
      if (from4 < 0) {
        from4 += this.length;
      }
      var ret = new Yallist();
      if (to < from4 || to < 0) {
        return ret;
      }
      if (from4 < 0) {
        from4 = 0;
      }
      if (to > this.length) {
        to = this.length;
      }
      for (var i2 = 0, walker = this.head; walker !== null && i2 < from4; i2++) {
        walker = walker.next;
      }
      for (; walker !== null && i2 < to; i2++, walker = walker.next) {
        ret.push(walker.value);
      }
      return ret;
    };
    Yallist.prototype.sliceReverse = function(from4, to) {
      to = to || this.length;
      if (to < 0) {
        to += this.length;
      }
      from4 = from4 || 0;
      if (from4 < 0) {
        from4 += this.length;
      }
      var ret = new Yallist();
      if (to < from4 || to < 0) {
        return ret;
      }
      if (from4 < 0) {
        from4 = 0;
      }
      if (to > this.length) {
        to = this.length;
      }
      for (var i2 = this.length, walker = this.tail; walker !== null && i2 > to; i2--) {
        walker = walker.prev;
      }
      for (; walker !== null && i2 > from4; i2--, walker = walker.prev) {
        ret.push(walker.value);
      }
      return ret;
    };
    Yallist.prototype.splice = function(start, deleteCount, ...nodes) {
      if (start > this.length) {
        start = this.length - 1;
      }
      if (start < 0) {
        start = this.length + start;
      }
      for (var i2 = 0, walker = this.head; walker !== null && i2 < start; i2++) {
        walker = walker.next;
      }
      var ret = [];
      for (var i2 = 0; walker && i2 < deleteCount; i2++) {
        ret.push(walker.value);
        walker = this.removeNode(walker);
      }
      if (walker === null) {
        walker = this.tail;
      }
      if (walker !== this.head && walker !== this.tail) {
        walker = walker.prev;
      }
      for (var i2 = 0; i2 < nodes.length; i2++) {
        walker = insert(this, walker, nodes[i2]);
      }
      return ret;
    };
    Yallist.prototype.reverse = function() {
      var head2 = this.head;
      var tail = this.tail;
      for (var walker = head2; walker !== null; walker = walker.prev) {
        var p5 = walker.prev;
        walker.prev = walker.next;
        walker.next = p5;
      }
      this.head = tail;
      this.tail = head2;
      return this;
    };
    function insert(self2, node3, value) {
      var inserted = node3 === self2.head ? new Node(value, null, node3, self2) : new Node(value, node3, node3.next, self2);
      if (inserted.next === null) {
        self2.tail = inserted;
      }
      if (inserted.prev === null) {
        self2.head = inserted;
      }
      self2.length++;
      return inserted;
    }
    function push(self2, item) {
      self2.tail = new Node(item, self2.tail, null, self2);
      if (!self2.head) {
        self2.head = self2.tail;
      }
      self2.length++;
    }
    function unshift(self2, item) {
      self2.head = new Node(item, null, self2.head, self2);
      if (!self2.tail) {
        self2.tail = self2.head;
      }
      self2.length++;
    }
    function Node(value, prev, next, list6) {
      if (!(this instanceof Node)) {
        return new Node(value, prev, next, list6);
      }
      this.list = list6;
      this.value = value;
      if (prev) {
        prev.next = this;
        this.prev = prev;
      } else {
        this.prev = null;
      }
      if (next) {
        next.prev = this;
        this.next = next;
      } else {
        this.next = null;
      }
    }
    try {
      require_iterator2()(Yallist);
    } catch (er) {
    }
  }
});

// ../../node_modules/semver/node_modules/lru-cache/index.js
var require_lru_cache = __commonJS({
  "../../node_modules/semver/node_modules/lru-cache/index.js"(exports2, module2) {
    "use strict";
    var Yallist = require_yallist();
    var MAX = Symbol("max");
    var LENGTH = Symbol("length");
    var LENGTH_CALCULATOR = Symbol("lengthCalculator");
    var ALLOW_STALE = Symbol("allowStale");
    var MAX_AGE = Symbol("maxAge");
    var DISPOSE = Symbol("dispose");
    var NO_DISPOSE_ON_SET = Symbol("noDisposeOnSet");
    var LRU_LIST = Symbol("lruList");
    var CACHE = Symbol("cache");
    var UPDATE_AGE_ON_GET = Symbol("updateAgeOnGet");
    var naiveLength = () => 1;
    var LRUCache2 = class {
      constructor(options) {
        if (typeof options === "number")
          options = { max: options };
        if (!options)
          options = {};
        if (options.max && (typeof options.max !== "number" || options.max < 0))
          throw new TypeError("max must be a non-negative number");
        const max = this[MAX] = options.max || Infinity;
        const lc = options.length || naiveLength;
        this[LENGTH_CALCULATOR] = typeof lc !== "function" ? naiveLength : lc;
        this[ALLOW_STALE] = options.stale || false;
        if (options.maxAge && typeof options.maxAge !== "number")
          throw new TypeError("maxAge must be a number");
        this[MAX_AGE] = options.maxAge || 0;
        this[DISPOSE] = options.dispose;
        this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;
        this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;
        this.reset();
      }
      // resize the cache when the max changes.
      set max(mL) {
        if (typeof mL !== "number" || mL < 0)
          throw new TypeError("max must be a non-negative number");
        this[MAX] = mL || Infinity;
        trim2(this);
      }
      get max() {
        return this[MAX];
      }
      set allowStale(allowStale) {
        this[ALLOW_STALE] = !!allowStale;
      }
      get allowStale() {
        return this[ALLOW_STALE];
      }
      set maxAge(mA) {
        if (typeof mA !== "number")
          throw new TypeError("maxAge must be a non-negative number");
        this[MAX_AGE] = mA;
        trim2(this);
      }
      get maxAge() {
        return this[MAX_AGE];
      }
      // resize the cache when the lengthCalculator changes.
      set lengthCalculator(lC) {
        if (typeof lC !== "function")
          lC = naiveLength;
        if (lC !== this[LENGTH_CALCULATOR]) {
          this[LENGTH_CALCULATOR] = lC;
          this[LENGTH] = 0;
          this[LRU_LIST].forEach((hit) => {
            hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key);
            this[LENGTH] += hit.length;
          });
        }
        trim2(this);
      }
      get lengthCalculator() {
        return this[LENGTH_CALCULATOR];
      }
      get length() {
        return this[LENGTH];
      }
      get itemCount() {
        return this[LRU_LIST].length;
      }
      rforEach(fn, thisp) {
        thisp = thisp || this;
        for (let walker = this[LRU_LIST].tail; walker !== null; ) {
          const prev = walker.prev;
          forEachStep(this, fn, walker, thisp);
          walker = prev;
        }
      }
      forEach(fn, thisp) {
        thisp = thisp || this;
        for (let walker = this[LRU_LIST].head; walker !== null; ) {
          const next = walker.next;
          forEachStep(this, fn, walker, thisp);
          walker = next;
        }
      }
      keys() {
        return this[LRU_LIST].toArray().map((k) => k.key);
      }
      values() {
        return this[LRU_LIST].toArray().map((k) => k.value);
      }
      reset() {
        if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {
          this[LRU_LIST].forEach((hit) => this[DISPOSE](hit.key, hit.value));
        }
        this[CACHE] = /* @__PURE__ */ new Map();
        this[LRU_LIST] = new Yallist();
        this[LENGTH] = 0;
      }
      dump() {
        return this[LRU_LIST].map((hit) => isStale(this, hit) ? false : {
          k: hit.key,
          v: hit.value,
          e: hit.now + (hit.maxAge || 0)
        }).toArray().filter((h4) => h4);
      }
      dumpLru() {
        return this[LRU_LIST];
      }
      set(key2, value, maxAge) {
        maxAge = maxAge || this[MAX_AGE];
        if (maxAge && typeof maxAge !== "number")
          throw new TypeError("maxAge must be a number");
        const now = maxAge ? Date.now() : 0;
        const len = this[LENGTH_CALCULATOR](value, key2);
        if (this[CACHE].has(key2)) {
          if (len > this[MAX]) {
            del2(this, this[CACHE].get(key2));
            return false;
          }
          const node3 = this[CACHE].get(key2);
          const item = node3.value;
          if (this[DISPOSE]) {
            if (!this[NO_DISPOSE_ON_SET])
              this[DISPOSE](key2, item.value);
          }
          item.now = now;
          item.maxAge = maxAge;
          item.value = value;
          this[LENGTH] += len - item.length;
          item.length = len;
          this.get(key2);
          trim2(this);
          return true;
        }
        const hit = new Entry(key2, value, len, now, maxAge);
        if (hit.length > this[MAX]) {
          if (this[DISPOSE])
            this[DISPOSE](key2, value);
          return false;
        }
        this[LENGTH] += hit.length;
        this[LRU_LIST].unshift(hit);
        this[CACHE].set(key2, this[LRU_LIST].head);
        trim2(this);
        return true;
      }
      has(key2) {
        if (!this[CACHE].has(key2)) return false;
        const hit = this[CACHE].get(key2).value;
        return !isStale(this, hit);
      }
      get(key2) {
        return get(this, key2, true);
      }
      peek(key2) {
        return get(this, key2, false);
      }
      pop() {
        const node3 = this[LRU_LIST].tail;
        if (!node3)
          return null;
        del2(this, node3);
        return node3.value;
      }
      del(key2) {
        del2(this, this[CACHE].get(key2));
      }
      load(arr) {
        this.reset();
        const now = Date.now();
        for (let l = arr.length - 1; l >= 0; l--) {
          const hit = arr[l];
          const expiresAt = hit.e || 0;
          if (expiresAt === 0)
            this.set(hit.k, hit.v);
          else {
            const maxAge = expiresAt - now;
            if (maxAge > 0) {
              this.set(hit.k, hit.v, maxAge);
            }
          }
        }
      }
      prune() {
        this[CACHE].forEach((value, key2) => get(this, key2, false));
      }
    };
    var get = (self2, key2, doUse) => {
      const node3 = self2[CACHE].get(key2);
      if (node3) {
        const hit = node3.value;
        if (isStale(self2, hit)) {
          del2(self2, node3);
          if (!self2[ALLOW_STALE])
            return void 0;
        } else {
          if (doUse) {
            if (self2[UPDATE_AGE_ON_GET])
              node3.value.now = Date.now();
            self2[LRU_LIST].unshiftNode(node3);
          }
        }
        return hit.value;
      }
    };
    var isStale = (self2, hit) => {
      if (!hit || !hit.maxAge && !self2[MAX_AGE])
        return false;
      const diff = Date.now() - hit.now;
      return hit.maxAge ? diff > hit.maxAge : self2[MAX_AGE] && diff > self2[MAX_AGE];
    };
    var trim2 = (self2) => {
      if (self2[LENGTH] > self2[MAX]) {
        for (let walker = self2[LRU_LIST].tail; self2[LENGTH] > self2[MAX] && walker !== null; ) {
          const prev = walker.prev;
          del2(self2, walker);
          walker = prev;
        }
      }
    };
    var del2 = (self2, node3) => {
      if (node3) {
        const hit = node3.value;
        if (self2[DISPOSE])
          self2[DISPOSE](hit.key, hit.value);
        self2[LENGTH] -= hit.length;
        self2[CACHE].delete(hit.key);
        self2[LRU_LIST].removeNode(node3);
      }
    };
    var Entry = class {
      constructor(key2, value, length, now, maxAge) {
        this.key = key2;
        this.value = value;
        this.length = length;
        this.now = now;
        this.maxAge = maxAge || 0;
      }
    };
    var forEachStep = (self2, fn, node3, thisp) => {
      let hit = node3.value;
      if (isStale(self2, hit)) {
        del2(self2, node3);
        if (!self2[ALLOW_STALE])
          hit = void 0;
      }
      if (hit)
        fn.call(thisp, hit.value, hit.key, self2);
    };
    module2.exports = LRUCache2;
  }
});

// ../../node_modules/semver/classes/range.js
var require_range3 = __commonJS({
  "../../node_modules/semver/classes/range.js"(exports2, module2) {
    var Range = class _Range {
      constructor(range, options) {
        options = parseOptions3(options);
        if (range instanceof _Range) {
          if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
            return range;
          } else {
            return new _Range(range.raw, options);
          }
        }
        if (range instanceof Comparator) {
          this.raw = range.value;
          this.set = [[range]];
          this.format();
          return this;
        }
        this.options = options;
        this.loose = !!options.loose;
        this.includePrerelease = !!options.includePrerelease;
        this.raw = range.trim().split(/\s+/).join(" ");
        this.set = this.raw.split("||").map((r2) => this.parseRange(r2.trim())).filter((c) => c.length);
        if (!this.set.length) {
          throw new TypeError(`Invalid SemVer Range: ${this.raw}`);
        }
        if (this.set.length > 1) {
          const first2 = this.set[0];
          this.set = this.set.filter((c) => !isNullSet(c[0]));
          if (this.set.length === 0) {
            this.set = [first2];
          } else if (this.set.length > 1) {
            for (const c of this.set) {
              if (c.length === 1 && isAny(c[0])) {
                this.set = [c];
                break;
              }
            }
          }
        }
        this.format();
      }
      format() {
        this.range = this.set.map((comps) => comps.join(" ").trim()).join("||").trim();
        return this.range;
      }
      toString() {
        return this.range;
      }
      parseRange(range) {
        const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);
        const memoKey = memoOpts + ":" + range;
        const cached = cache.get(memoKey);
        if (cached) {
          return cached;
        }
        const loose = this.options.loose;
        const hr2 = loose ? re[t2.HYPHENRANGELOOSE] : re[t2.HYPHENRANGE];
        range = range.replace(hr2, hyphenReplace(this.options.includePrerelease));
        debug("hyphen replace", range);
        range = range.replace(re[t2.COMPARATORTRIM], comparatorTrimReplace);
        debug("comparator trim", range);
        range = range.replace(re[t2.TILDETRIM], tildeTrimReplace);
        debug("tilde trim", range);
        range = range.replace(re[t2.CARETTRIM], caretTrimReplace);
        debug("caret trim", range);
        let rangeList = range.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options));
        if (loose) {
          rangeList = rangeList.filter((comp) => {
            debug("loose invalid filter", comp, this.options);
            return !!comp.match(re[t2.COMPARATORLOOSE]);
          });
        }
        debug("range list", rangeList);
        const rangeMap = /* @__PURE__ */ new Map();
        const comparators = rangeList.map((comp) => new Comparator(comp, this.options));
        for (const comp of comparators) {
          if (isNullSet(comp)) {
            return [comp];
          }
          rangeMap.set(comp.value, comp);
        }
        if (rangeMap.size > 1 && rangeMap.has("")) {
          rangeMap.delete("");
        }
        const result = [...rangeMap.values()];
        cache.set(memoKey, result);
        return result;
      }
      intersects(range, options) {
        if (!(range instanceof _Range)) {
          throw new TypeError("a Range is required");
        }
        return this.set.some((thisComparators) => {
          return isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => {
            return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => {
              return rangeComparators.every((rangeComparator) => {
                return thisComparator.intersects(rangeComparator, options);
              });
            });
          });
        });
      }
      // if ANY of the sets match ALL of its comparators, then pass
      test(version4) {
        if (!version4) {
          return false;
        }
        if (typeof version4 === "string") {
          try {
            version4 = new SemVer(version4, this.options);
          } catch (er) {
            return false;
          }
        }
        for (let i2 = 0; i2 < this.set.length; i2++) {
          if (testSet(this.set[i2], version4, this.options)) {
            return true;
          }
        }
        return false;
      }
    };
    module2.exports = Range;
    var LRU = require_lru_cache();
    var cache = new LRU({ max: 1e3 });
    var parseOptions3 = require_parse_options();
    var Comparator = require_comparator();
    var debug = require_debug5();
    var SemVer = require_semver2();
    var {
      safeRe: re,
      t: t2,
      comparatorTrimReplace,
      tildeTrimReplace,
      caretTrimReplace
    } = require_re2();
    var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants7();
    var isNullSet = (c) => c.value === "<0.0.0-0";
    var isAny = (c) => c.value === "";
    var isSatisfiable = (comparators, options) => {
      let result = true;
      const remainingComparators = comparators.slice();
      let testComparator = remainingComparators.pop();
      while (result && remainingComparators.length) {
        result = remainingComparators.every((otherComparator) => {
          return testComparator.intersects(otherComparator, options);
        });
        testComparator = remainingComparators.pop();
      }
      return result;
    };
    var parseComparator = (comp, options) => {
      debug("comp", comp, options);
      comp = replaceCarets(comp, options);
      debug("caret", comp);
      comp = replaceTildes(comp, options);
      debug("tildes", comp);
      comp = replaceXRanges(comp, options);
      debug("xrange", comp);
      comp = replaceStars(comp, options);
      debug("stars", comp);
      return comp;
    };
    var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
    var replaceTildes = (comp, options) => {
      return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" ");
    };
    var replaceTilde = (comp, options) => {
      const r2 = options.loose ? re[t2.TILDELOOSE] : re[t2.TILDE];
      return comp.replace(r2, (_2, M, m2, p5, pr) => {
        debug("tilde", comp, _2, M, m2, p5, pr);
        let ret;
        if (isX(M)) {
          ret = "";
        } else if (isX(m2)) {
          ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;
        } else if (isX(p5)) {
          ret = `>=${M}.${m2}.0 <${M}.${+m2 + 1}.0-0`;
        } else if (pr) {
          debug("replaceTilde pr", pr);
          ret = `>=${M}.${m2}.${p5}-${pr} <${M}.${+m2 + 1}.0-0`;
        } else {
          ret = `>=${M}.${m2}.${p5} <${M}.${+m2 + 1}.0-0`;
        }
        debug("tilde return", ret);
        return ret;
      });
    };
    var replaceCarets = (comp, options) => {
      return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" ");
    };
    var replaceCaret = (comp, options) => {
      debug("caret", comp, options);
      const r2 = options.loose ? re[t2.CARETLOOSE] : re[t2.CARET];
      const z2 = options.includePrerelease ? "-0" : "";
      return comp.replace(r2, (_2, M, m2, p5, pr) => {
        debug("caret", comp, _2, M, m2, p5, pr);
        let ret;
        if (isX(M)) {
          ret = "";
        } else if (isX(m2)) {
          ret = `>=${M}.0.0${z2} <${+M + 1}.0.0-0`;
        } else if (isX(p5)) {
          if (M === "0") {
            ret = `>=${M}.${m2}.0${z2} <${M}.${+m2 + 1}.0-0`;
          } else {
            ret = `>=${M}.${m2}.0${z2} <${+M + 1}.0.0-0`;
          }
        } else if (pr) {
          debug("replaceCaret pr", pr);
          if (M === "0") {
            if (m2 === "0") {
              ret = `>=${M}.${m2}.${p5}-${pr} <${M}.${m2}.${+p5 + 1}-0`;
            } else {
              ret = `>=${M}.${m2}.${p5}-${pr} <${M}.${+m2 + 1}.0-0`;
            }
          } else {
            ret = `>=${M}.${m2}.${p5}-${pr} <${+M + 1}.0.0-0`;
          }
        } else {
          debug("no pr");
          if (M === "0") {
            if (m2 === "0") {
              ret = `>=${M}.${m2}.${p5}${z2} <${M}.${m2}.${+p5 + 1}-0`;
            } else {
              ret = `>=${M}.${m2}.${p5}${z2} <${M}.${+m2 + 1}.0-0`;
            }
          } else {
            ret = `>=${M}.${m2}.${p5} <${+M + 1}.0.0-0`;
          }
        }
        debug("caret return", ret);
        return ret;
      });
    };
    var replaceXRanges = (comp, options) => {
      debug("replaceXRanges", comp, options);
      return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" ");
    };
    var replaceXRange = (comp, options) => {
      comp = comp.trim();
      const r2 = options.loose ? re[t2.XRANGELOOSE] : re[t2.XRANGE];
      return comp.replace(r2, (ret, gtlt, M, m2, p5, pr) => {
        debug("xRange", comp, ret, gtlt, M, m2, p5, pr);
        const xM = isX(M);
        const xm = xM || isX(m2);
        const xp = xm || isX(p5);
        const anyX = xp;
        if (gtlt === "=" && anyX) {
          gtlt = "";
        }
        pr = options.includePrerelease ? "-0" : "";
        if (xM) {
          if (gtlt === ">" || gtlt === "<") {
            ret = "<0.0.0-0";
          } else {
            ret = "*";
          }
        } else if (gtlt && anyX) {
          if (xm) {
            m2 = 0;
          }
          p5 = 0;
          if (gtlt === ">") {
            gtlt = ">=";
            if (xm) {
              M = +M + 1;
              m2 = 0;
              p5 = 0;
            } else {
              m2 = +m2 + 1;
              p5 = 0;
            }
          } else if (gtlt === "<=") {
            gtlt = "<";
            if (xm) {
              M = +M + 1;
            } else {
              m2 = +m2 + 1;
            }
          }
          if (gtlt === "<") {
            pr = "-0";
          }
          ret = `${gtlt + M}.${m2}.${p5}${pr}`;
        } else if (xm) {
          ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;
        } else if (xp) {
          ret = `>=${M}.${m2}.0${pr} <${M}.${+m2 + 1}.0-0`;
        }
        debug("xRange return", ret);
        return ret;
      });
    };
    var replaceStars = (comp, options) => {
      debug("replaceStars", comp, options);
      return comp.trim().replace(re[t2.STAR], "");
    };
    var replaceGTE0 = (comp, options) => {
      debug("replaceGTE0", comp, options);
      return comp.trim().replace(re[options.includePrerelease ? t2.GTE0PRE : t2.GTE0], "");
    };
    var hyphenReplace = (incPr) => ($0, from4, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) => {
      if (isX(fM)) {
        from4 = "";
      } else if (isX(fm)) {
        from4 = `>=${fM}.0.0${incPr ? "-0" : ""}`;
      } else if (isX(fp)) {
        from4 = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`;
      } else if (fpr) {
        from4 = `>=${from4}`;
      } else {
        from4 = `>=${from4}${incPr ? "-0" : ""}`;
      }
      if (isX(tM)) {
        to = "";
      } else if (isX(tm)) {
        to = `<${+tM + 1}.0.0-0`;
      } else if (isX(tp)) {
        to = `<${tM}.${+tm + 1}.0-0`;
      } else if (tpr) {
        to = `<=${tM}.${tm}.${tp}-${tpr}`;
      } else if (incPr) {
        to = `<${tM}.${tm}.${+tp + 1}-0`;
      } else {
        to = `<=${to}`;
      }
      return `${from4} ${to}`.trim();
    };
    var testSet = (set3, version4, options) => {
      for (let i2 = 0; i2 < set3.length; i2++) {
        if (!set3[i2].test(version4)) {
          return false;
        }
      }
      if (version4.prerelease.length && !options.includePrerelease) {
        for (let i2 = 0; i2 < set3.length; i2++) {
          debug(set3[i2].semver);
          if (set3[i2].semver === Comparator.ANY) {
            continue;
          }
          if (set3[i2].semver.prerelease.length > 0) {
            const allowed = set3[i2].semver;
            if (allowed.major === version4.major && allowed.minor === version4.minor && allowed.patch === version4.patch) {
              return true;
            }
          }
        }
        return false;
      }
      return true;
    };
  }
});

// ../../node_modules/semver/classes/comparator.js
var require_comparator = __commonJS({
  "../../node_modules/semver/classes/comparator.js"(exports2, module2) {
    var ANY = Symbol("SemVer ANY");
    var Comparator = class _Comparator {
      static get ANY() {
        return ANY;
      }
      constructor(comp, options) {
        options = parseOptions3(options);
        if (comp instanceof _Comparator) {
          if (comp.loose === !!options.loose) {
            return comp;
          } else {
            comp = comp.value;
          }
        }
        comp = comp.trim().split(/\s+/).join(" ");
        debug("comparator", comp, options);
        this.options = options;
        this.loose = !!options.loose;
        this.parse(comp);
        if (this.semver === ANY) {
          this.value = "";
        } else {
          this.value = this.operator + this.semver.version;
        }
        debug("comp", this);
      }
      parse(comp) {
        const r2 = this.options.loose ? re[t2.COMPARATORLOOSE] : re[t2.COMPARATOR];
        const m2 = comp.match(r2);
        if (!m2) {
          throw new TypeError(`Invalid comparator: ${comp}`);
        }
        this.operator = m2[1] !== void 0 ? m2[1] : "";
        if (this.operator === "=") {
          this.operator = "";
        }
        if (!m2[2]) {
          this.semver = ANY;
        } else {
          this.semver = new SemVer(m2[2], this.options.loose);
        }
      }
      toString() {
        return this.value;
      }
      test(version4) {
        debug("Comparator.test", version4, this.options.loose);
        if (this.semver === ANY || version4 === ANY) {
          return true;
        }
        if (typeof version4 === "string") {
          try {
            version4 = new SemVer(version4, this.options);
          } catch (er) {
            return false;
          }
        }
        return cmp(version4, this.operator, this.semver, this.options);
      }
      intersects(comp, options) {
        if (!(comp instanceof _Comparator)) {
          throw new TypeError("a Comparator is required");
        }
        if (this.operator === "") {
          if (this.value === "") {
            return true;
          }
          return new Range(comp.value, options).test(this.value);
        } else if (comp.operator === "") {
          if (comp.value === "") {
            return true;
          }
          return new Range(this.value, options).test(comp.semver);
        }
        options = parseOptions3(options);
        if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) {
          return false;
        }
        if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) {
          return false;
        }
        if (this.operator.startsWith(">") && comp.operator.startsWith(">")) {
          return true;
        }
        if (this.operator.startsWith("<") && comp.operator.startsWith("<")) {
          return true;
        }
        if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) {
          return true;
        }
        if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) {
          return true;
        }
        if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) {
          return true;
        }
        return false;
      }
    };
    module2.exports = Comparator;
    var parseOptions3 = require_parse_options();
    var { safeRe: re, t: t2 } = require_re2();
    var cmp = require_cmp();
    var debug = require_debug5();
    var SemVer = require_semver2();
    var Range = require_range3();
  }
});

// ../../node_modules/semver/functions/satisfies.js
var require_satisfies = __commonJS({
  "../../node_modules/semver/functions/satisfies.js"(exports2, module2) {
    var Range = require_range3();
    var satisfies = (version4, range, options) => {
      try {
        range = new Range(range, options);
      } catch (er) {
        return false;
      }
      return range.test(version4);
    };
    module2.exports = satisfies;
  }
});

// ../../node_modules/semver/ranges/to-comparators.js
var require_to_comparators = __commonJS({
  "../../node_modules/semver/ranges/to-comparators.js"(exports2, module2) {
    var Range = require_range3();
    var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" "));
    module2.exports = toComparators;
  }
});

// ../../node_modules/semver/ranges/max-satisfying.js
var require_max_satisfying = __commonJS({
  "../../node_modules/semver/ranges/max-satisfying.js"(exports2, module2) {
    var SemVer = require_semver2();
    var Range = require_range3();
    var maxSatisfying = (versions, range, options) => {
      let max = null;
      let maxSV = null;
      let rangeObj = null;
      try {
        rangeObj = new Range(range, options);
      } catch (er) {
        return null;
      }
      versions.forEach((v) => {
        if (rangeObj.test(v)) {
          if (!max || maxSV.compare(v) === -1) {
            max = v;
            maxSV = new SemVer(max, options);
          }
        }
      });
      return max;
    };
    module2.exports = maxSatisfying;
  }
});

// ../../node_modules/semver/ranges/min-satisfying.js
var require_min_satisfying = __commonJS({
  "../../node_modules/semver/ranges/min-satisfying.js"(exports2, module2) {
    var SemVer = require_semver2();
    var Range = require_range3();
    var minSatisfying = (versions, range, options) => {
      let min = null;
      let minSV = null;
      let rangeObj = null;
      try {
        rangeObj = new Range(range, options);
      } catch (er) {
        return null;
      }
      versions.forEach((v) => {
        if (rangeObj.test(v)) {
          if (!min || minSV.compare(v) === 1) {
            min = v;
            minSV = new SemVer(min, options);
          }
        }
      });
      return min;
    };
    module2.exports = minSatisfying;
  }
});

// ../../node_modules/semver/ranges/min-version.js
var require_min_version = __commonJS({
  "../../node_modules/semver/ranges/min-version.js"(exports2, module2) {
    var SemVer = require_semver2();
    var Range = require_range3();
    var gt = require_gt();
    var minVersion = (range, loose) => {
      range = new Range(range, loose);
      let minver = new SemVer("0.0.0");
      if (range.test(minver)) {
        return minver;
      }
      minver = new SemVer("0.0.0-0");
      if (range.test(minver)) {
        return minver;
      }
      minver = null;
      for (let i2 = 0; i2 < range.set.length; ++i2) {
        const comparators = range.set[i2];
        let setMin = null;
        comparators.forEach((comparator) => {
          const compver = new SemVer(comparator.semver.version);
          switch (comparator.operator) {
            case ">":
              if (compver.prerelease.length === 0) {
                compver.patch++;
              } else {
                compver.prerelease.push(0);
              }
              compver.raw = compver.format();
            /* fallthrough */
            case "":
            case ">=":
              if (!setMin || gt(compver, setMin)) {
                setMin = compver;
              }
              break;
            case "<":
            case "<=":
              break;
            /* istanbul ignore next */
            default:
              throw new Error(`Unexpected operation: ${comparator.operator}`);
          }
        });
        if (setMin && (!minver || gt(minver, setMin))) {
          minver = setMin;
        }
      }
      if (minver && range.test(minver)) {
        return minver;
      }
      return null;
    };
    module2.exports = minVersion;
  }
});

// ../../node_modules/semver/ranges/valid.js
var require_valid2 = __commonJS({
  "../../node_modules/semver/ranges/valid.js"(exports2, module2) {
    var Range = require_range3();
    var validRange = (range, options) => {
      try {
        return new Range(range, options).range || "*";
      } catch (er) {
        return null;
      }
    };
    module2.exports = validRange;
  }
});

// ../../node_modules/semver/ranges/outside.js
var require_outside = __commonJS({
  "../../node_modules/semver/ranges/outside.js"(exports2, module2) {
    var SemVer = require_semver2();
    var Comparator = require_comparator();
    var { ANY } = Comparator;
    var Range = require_range3();
    var satisfies = require_satisfies();
    var gt = require_gt();
    var lt = require_lt();
    var lte = require_lte();
    var gte = require_gte();
    var outside = (version4, range, hilo, options) => {
      version4 = new SemVer(version4, options);
      range = new Range(range, options);
      let gtfn, ltefn, ltfn, comp, ecomp;
      switch (hilo) {
        case ">":
          gtfn = gt;
          ltefn = lte;
          ltfn = lt;
          comp = ">";
          ecomp = ">=";
          break;
        case "<":
          gtfn = lt;
          ltefn = gte;
          ltfn = gt;
          comp = "<";
          ecomp = "<=";
          break;
        default:
          throw new TypeError('Must provide a hilo val of "<" or ">"');
      }
      if (satisfies(version4, range, options)) {
        return false;
      }
      for (let i2 = 0; i2 < range.set.length; ++i2) {
        const comparators = range.set[i2];
        let high = null;
        let low = null;
        comparators.forEach((comparator) => {
          if (comparator.semver === ANY) {
            comparator = new Comparator(">=0.0.0");
          }
          high = high || comparator;
          low = low || comparator;
          if (gtfn(comparator.semver, high.semver, options)) {
            high = comparator;
          } else if (ltfn(comparator.semver, low.semver, options)) {
            low = comparator;
          }
        });
        if (high.operator === comp || high.operator === ecomp) {
          return false;
        }
        if ((!low.operator || low.operator === comp) && ltefn(version4, low.semver)) {
          return false;
        } else if (low.operator === ecomp && ltfn(version4, low.semver)) {
          return false;
        }
      }
      return true;
    };
    module2.exports = outside;
  }
});

// ../../node_modules/semver/ranges/gtr.js
var require_gtr = __commonJS({
  "../../node_modules/semver/ranges/gtr.js"(exports2, module2) {
    var outside = require_outside();
    var gtr = (version4, range, options) => outside(version4, range, ">", options);
    module2.exports = gtr;
  }
});

// ../../node_modules/semver/ranges/ltr.js
var require_ltr = __commonJS({
  "../../node_modules/semver/ranges/ltr.js"(exports2, module2) {
    var outside = require_outside();
    var ltr = (version4, range, options) => outside(version4, range, "<", options);
    module2.exports = ltr;
  }
});

// ../../node_modules/semver/ranges/intersects.js
var require_intersects = __commonJS({
  "../../node_modules/semver/ranges/intersects.js"(exports2, module2) {
    var Range = require_range3();
    var intersects = (r1, r2, options) => {
      r1 = new Range(r1, options);
      r2 = new Range(r2, options);
      return r1.intersects(r2, options);
    };
    module2.exports = intersects;
  }
});

// ../../node_modules/semver/ranges/simplify.js
var require_simplify = __commonJS({
  "../../node_modules/semver/ranges/simplify.js"(exports2, module2) {
    var satisfies = require_satisfies();
    var compare3 = require_compare();
    module2.exports = (versions, range, options) => {
      const set3 = [];
      let first2 = null;
      let prev = null;
      const v = versions.sort((a2, b) => compare3(a2, b, options));
      for (const version4 of v) {
        const included = satisfies(version4, range, options);
        if (included) {
          prev = version4;
          if (!first2) {
            first2 = version4;
          }
        } else {
          if (prev) {
            set3.push([first2, prev]);
          }
          prev = null;
          first2 = null;
        }
      }
      if (first2) {
        set3.push([first2, null]);
      }
      const ranges = [];
      for (const [min, max] of set3) {
        if (min === max) {
          ranges.push(min);
        } else if (!max && min === v[0]) {
          ranges.push("*");
        } else if (!max) {
          ranges.push(`>=${min}`);
        } else if (min === v[0]) {
          ranges.push(`<=${max}`);
        } else {
          ranges.push(`${min} - ${max}`);
        }
      }
      const simplified = ranges.join(" || ");
      const original = typeof range.raw === "string" ? range.raw : String(range);
      return simplified.length < original.length ? simplified : range;
    };
  }
});

// ../../node_modules/semver/ranges/subset.js
var require_subset = __commonJS({
  "../../node_modules/semver/ranges/subset.js"(exports2, module2) {
    var Range = require_range3();
    var Comparator = require_comparator();
    var { ANY } = Comparator;
    var satisfies = require_satisfies();
    var compare3 = require_compare();
    var subset = (sub2, dom, options = {}) => {
      if (sub2 === dom) {
        return true;
      }
      sub2 = new Range(sub2, options);
      dom = new Range(dom, options);
      let sawNonNull = false;
      OUTER: for (const simpleSub of sub2.set) {
        for (const simpleDom of dom.set) {
          const isSub = simpleSubset(simpleSub, simpleDom, options);
          sawNonNull = sawNonNull || isSub !== null;
          if (isSub) {
            continue OUTER;
          }
        }
        if (sawNonNull) {
          return false;
        }
      }
      return true;
    };
    var minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")];
    var minimumVersion = [new Comparator(">=0.0.0")];
    var simpleSubset = (sub2, dom, options) => {
      if (sub2 === dom) {
        return true;
      }
      if (sub2.length === 1 && sub2[0].semver === ANY) {
        if (dom.length === 1 && dom[0].semver === ANY) {
          return true;
        } else if (options.includePrerelease) {
          sub2 = minimumVersionWithPreRelease;
        } else {
          sub2 = minimumVersion;
        }
      }
      if (dom.length === 1 && dom[0].semver === ANY) {
        if (options.includePrerelease) {
          return true;
        } else {
          dom = minimumVersion;
        }
      }
      const eqSet = /* @__PURE__ */ new Set();
      let gt, lt;
      for (const c of sub2) {
        if (c.operator === ">" || c.operator === ">=") {
          gt = higherGT(gt, c, options);
        } else if (c.operator === "<" || c.operator === "<=") {
          lt = lowerLT(lt, c, options);
        } else {
          eqSet.add(c.semver);
        }
      }
      if (eqSet.size > 1) {
        return null;
      }
      let gtltComp;
      if (gt && lt) {
        gtltComp = compare3(gt.semver, lt.semver, options);
        if (gtltComp > 0) {
          return null;
        } else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) {
          return null;
        }
      }
      for (const eq of eqSet) {
        if (gt && !satisfies(eq, String(gt), options)) {
          return null;
        }
        if (lt && !satisfies(eq, String(lt), options)) {
          return null;
        }
        for (const c of dom) {
          if (!satisfies(eq, String(c), options)) {
            return false;
          }
        }
        return true;
      }
      let higher, lower2;
      let hasDomLT, hasDomGT;
      let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false;
      let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false;
      if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) {
        needDomLTPre = false;
      }
      for (const c of dom) {
        hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">=";
        hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<=";
        if (gt) {
          if (needDomGTPre) {
            if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch) {
              needDomGTPre = false;
            }
          }
          if (c.operator === ">" || c.operator === ">=") {
            higher = higherGT(gt, c, options);
            if (higher === c && higher !== gt) {
              return false;
            }
          } else if (gt.operator === ">=" && !satisfies(gt.semver, String(c), options)) {
            return false;
          }
        }
        if (lt) {
          if (needDomLTPre) {
            if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) {
              needDomLTPre = false;
            }
          }
          if (c.operator === "<" || c.operator === "<=") {
            lower2 = lowerLT(lt, c, options);
            if (lower2 === c && lower2 !== lt) {
              return false;
            }
          } else if (lt.operator === "<=" && !satisfies(lt.semver, String(c), options)) {
            return false;
          }
        }
        if (!c.operator && (lt || gt) && gtltComp !== 0) {
          return false;
        }
      }
      if (gt && hasDomLT && !lt && gtltComp !== 0) {
        return false;
      }
      if (lt && hasDomGT && !gt && gtltComp !== 0) {
        return false;
      }
      if (needDomGTPre || needDomLTPre) {
        return false;
      }
      return true;
    };
    var higherGT = (a2, b, options) => {
      if (!a2) {
        return b;
      }
      const comp = compare3(a2.semver, b.semver, options);
      return comp > 0 ? a2 : comp < 0 ? b : b.operator === ">" && a2.operator === ">=" ? b : a2;
    };
    var lowerLT = (a2, b, options) => {
      if (!a2) {
        return b;
      }
      const comp = compare3(a2.semver, b.semver, options);
      return comp < 0 ? a2 : comp > 0 ? b : b.operator === "<" && a2.operator === "<=" ? b : a2;
    };
    module2.exports = subset;
  }
});

// ../../node_modules/semver/index.js
var require_semver3 = __commonJS({
  "../../node_modules/semver/index.js"(exports2, module2) {
    var internalRe = require_re2();
    var constants2 = require_constants7();
    var SemVer = require_semver2();
    var identifiers = require_identifiers();
    var parse16 = require_parse7();
    var valid2 = require_valid();
    var clean3 = require_clean();
    var inc = require_inc();
    var diff = require_diff();
    var major2 = require_major();
    var minor2 = require_minor();
    var patch4 = require_patch();
    var prerelease = require_prerelease();
    var compare3 = require_compare();
    var rcompare = require_rcompare();
    var compareLoose = require_compare_loose();
    var compareBuild = require_compare_build();
    var sort = require_sort2();
    var rsort = require_rsort();
    var gt = require_gt();
    var lt = require_lt();
    var eq = require_eq();
    var neq = require_neq();
    var gte = require_gte();
    var lte = require_lte();
    var cmp = require_cmp();
    var coerce2 = require_coerce();
    var Comparator = require_comparator();
    var Range = require_range3();
    var satisfies = require_satisfies();
    var toComparators = require_to_comparators();
    var maxSatisfying = require_max_satisfying();
    var minSatisfying = require_min_satisfying();
    var minVersion = require_min_version();
    var validRange = require_valid2();
    var outside = require_outside();
    var gtr = require_gtr();
    var ltr = require_ltr();
    var intersects = require_intersects();
    var simplifyRange = require_simplify();
    var subset = require_subset();
    module2.exports = {
      parse: parse16,
      valid: valid2,
      clean: clean3,
      inc,
      diff,
      major: major2,
      minor: minor2,
      patch: patch4,
      prerelease,
      compare: compare3,
      rcompare,
      compareLoose,
      compareBuild,
      sort,
      rsort,
      gt,
      lt,
      eq,
      neq,
      gte,
      lte,
      cmp,
      coerce: coerce2,
      Comparator,
      Range,
      satisfies,
      toComparators,
      maxSatisfying,
      minSatisfying,
      minVersion,
      validRange,
      outside,
      gtr,
      ltr,
      intersects,
      simplifyRange,
      subset,
      SemVer,
      re: internalRe.re,
      src: internalRe.src,
      tokens: internalRe.t,
      SEMVER_SPEC_VERSION: constants2.SEMVER_SPEC_VERSION,
      RELEASE_TYPES: constants2.RELEASE_TYPES,
      compareIdentifiers: identifiers.compareIdentifiers,
      rcompareIdentifiers: identifiers.rcompareIdentifiers
    };
  }
});

// ../../node_modules/eastasianwidth/eastasianwidth.js
var require_eastasianwidth = __commonJS({
  "../../node_modules/eastasianwidth/eastasianwidth.js"(exports2, module2) {
    var eaw = {};
    if ("undefined" == typeof module2) {
      window.eastasianwidth = eaw;
    } else {
      module2.exports = eaw;
    }
    eaw.eastAsianWidth = function(character) {
      var x2 = character.charCodeAt(0);
      var y = character.length == 2 ? character.charCodeAt(1) : 0;
      var codePoint = x2;
      if (55296 <= x2 && x2 <= 56319 && (56320 <= y && y <= 57343)) {
        x2 &= 1023;
        y &= 1023;
        codePoint = x2 << 10 | y;
        codePoint += 65536;
      }
      if (12288 == codePoint || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510) {
        return "F";
      }
      if (8361 == codePoint || 65377 <= codePoint && codePoint <= 65470 || 65474 <= codePoint && codePoint <= 65479 || 65482 <= codePoint && codePoint <= 65487 || 65490 <= codePoint && codePoint <= 65495 || 65498 <= codePoint && codePoint <= 65500 || 65512 <= codePoint && codePoint <= 65518) {
        return "H";
      }
      if (4352 <= codePoint && codePoint <= 4447 || 4515 <= codePoint && codePoint <= 4519 || 4602 <= codePoint && codePoint <= 4607 || 9001 <= codePoint && codePoint <= 9002 || 11904 <= codePoint && codePoint <= 11929 || 11931 <= codePoint && codePoint <= 12019 || 12032 <= codePoint && codePoint <= 12245 || 12272 <= codePoint && codePoint <= 12283 || 12289 <= codePoint && codePoint <= 12350 || 12353 <= codePoint && codePoint <= 12438 || 12441 <= codePoint && codePoint <= 12543 || 12549 <= codePoint && codePoint <= 12589 || 12593 <= codePoint && codePoint <= 12686 || 12688 <= codePoint && codePoint <= 12730 || 12736 <= codePoint && codePoint <= 12771 || 12784 <= codePoint && codePoint <= 12830 || 12832 <= codePoint && codePoint <= 12871 || 12880 <= codePoint && codePoint <= 13054 || 13056 <= codePoint && codePoint <= 19903 || 19968 <= codePoint && codePoint <= 42124 || 42128 <= codePoint && codePoint <= 42182 || 43360 <= codePoint && codePoint <= 43388 || 44032 <= codePoint && codePoint <= 55203 || 55216 <= codePoint && codePoint <= 55238 || 55243 <= codePoint && codePoint <= 55291 || 63744 <= codePoint && codePoint <= 64255 || 65040 <= codePoint && codePoint <= 65049 || 65072 <= codePoint && codePoint <= 65106 || 65108 <= codePoint && codePoint <= 65126 || 65128 <= codePoint && codePoint <= 65131 || 110592 <= codePoint && codePoint <= 110593 || 127488 <= codePoint && codePoint <= 127490 || 127504 <= codePoint && codePoint <= 127546 || 127552 <= codePoint && codePoint <= 127560 || 127568 <= codePoint && codePoint <= 127569 || 131072 <= codePoint && codePoint <= 194367 || 177984 <= codePoint && codePoint <= 196605 || 196608 <= codePoint && codePoint <= 262141) {
        return "W";
      }
      if (32 <= codePoint && codePoint <= 126 || 162 <= codePoint && codePoint <= 163 || 165 <= codePoint && codePoint <= 166 || 172 == codePoint || 175 == codePoint || 10214 <= codePoint && codePoint <= 10221 || 10629 <= codePoint && codePoint <= 10630) {
        return "Na";
      }
      if (161 == codePoint || 164 == codePoint || 167 <= codePoint && codePoint <= 168 || 170 == codePoint || 173 <= codePoint && codePoint <= 174 || 176 <= codePoint && codePoint <= 180 || 182 <= codePoint && codePoint <= 186 || 188 <= codePoint && codePoint <= 191 || 198 == codePoint || 208 == codePoint || 215 <= codePoint && codePoint <= 216 || 222 <= codePoint && codePoint <= 225 || 230 == codePoint || 232 <= codePoint && codePoint <= 234 || 236 <= codePoint && codePoint <= 237 || 240 == codePoint || 242 <= codePoint && codePoint <= 243 || 247 <= codePoint && codePoint <= 250 || 252 == codePoint || 254 == codePoint || 257 == codePoint || 273 == codePoint || 275 == codePoint || 283 == codePoint || 294 <= codePoint && codePoint <= 295 || 299 == codePoint || 305 <= codePoint && codePoint <= 307 || 312 == codePoint || 319 <= codePoint && codePoint <= 322 || 324 == codePoint || 328 <= codePoint && codePoint <= 331 || 333 == codePoint || 338 <= codePoint && codePoint <= 339 || 358 <= codePoint && codePoint <= 359 || 363 == codePoint || 462 == codePoint || 464 == codePoint || 466 == codePoint || 468 == codePoint || 470 == codePoint || 472 == codePoint || 474 == codePoint || 476 == codePoint || 593 == codePoint || 609 == codePoint || 708 == codePoint || 711 == codePoint || 713 <= codePoint && codePoint <= 715 || 717 == codePoint || 720 == codePoint || 728 <= codePoint && codePoint <= 731 || 733 == codePoint || 735 == codePoint || 768 <= codePoint && codePoint <= 879 || 913 <= codePoint && codePoint <= 929 || 931 <= codePoint && codePoint <= 937 || 945 <= codePoint && codePoint <= 961 || 963 <= codePoint && codePoint <= 969 || 1025 == codePoint || 1040 <= codePoint && codePoint <= 1103 || 1105 == codePoint || 8208 == codePoint || 8211 <= codePoint && codePoint <= 8214 || 8216 <= codePoint && codePoint <= 8217 || 8220 <= codePoint && codePoint <= 8221 || 8224 <= codePoint && codePoint <= 8226 || 8228 <= codePoint && codePoint <= 8231 || 8240 == codePoint || 8242 <= codePoint && codePoint <= 8243 || 8245 == codePoint || 8251 == codePoint || 8254 == codePoint || 8308 == codePoint || 8319 == codePoint || 8321 <= codePoint && codePoint <= 8324 || 8364 == codePoint || 8451 == codePoint || 8453 == codePoint || 8457 == codePoint || 8467 == codePoint || 8470 == codePoint || 8481 <= codePoint && codePoint <= 8482 || 8486 == codePoint || 8491 == codePoint || 8531 <= codePoint && codePoint <= 8532 || 8539 <= codePoint && codePoint <= 8542 || 8544 <= codePoint && codePoint <= 8555 || 8560 <= codePoint && codePoint <= 8569 || 8585 == codePoint || 8592 <= codePoint && codePoint <= 8601 || 8632 <= codePoint && codePoint <= 8633 || 8658 == codePoint || 8660 == codePoint || 8679 == codePoint || 8704 == codePoint || 8706 <= codePoint && codePoint <= 8707 || 8711 <= codePoint && codePoint <= 8712 || 8715 == codePoint || 8719 == codePoint || 8721 == codePoint || 8725 == codePoint || 8730 == codePoint || 8733 <= codePoint && codePoint <= 8736 || 8739 == codePoint || 8741 == codePoint || 8743 <= codePoint && codePoint <= 8748 || 8750 == codePoint || 8756 <= codePoint && codePoint <= 8759 || 8764 <= codePoint && codePoint <= 8765 || 8776 == codePoint || 8780 == codePoint || 8786 == codePoint || 8800 <= codePoint && codePoint <= 8801 || 8804 <= codePoint && codePoint <= 8807 || 8810 <= codePoint && codePoint <= 8811 || 8814 <= codePoint && codePoint <= 8815 || 8834 <= codePoint && codePoint <= 8835 || 8838 <= codePoint && codePoint <= 8839 || 8853 == codePoint || 8857 == codePoint || 8869 == codePoint || 8895 == codePoint || 8978 == codePoint || 9312 <= codePoint && codePoint <= 9449 || 9451 <= codePoint && codePoint <= 9547 || 9552 <= codePoint && codePoint <= 9587 || 9600 <= codePoint && codePoint <= 9615 || 9618 <= codePoint && codePoint <= 9621 || 9632 <= codePoint && codePoint <= 9633 || 9635 <= codePoint && codePoint <= 9641 || 9650 <= codePoint && codePoint <= 9651 || 9654 <= codePoint && codePoint <= 9655 || 9660 <= codePoint && codePoint <= 9661 || 9664 <= codePoint && codePoint <= 9665 || 9670 <= codePoint && codePoint <= 9672 || 9675 == codePoint || 9678 <= codePoint && codePoint <= 9681 || 9698 <= codePoint && codePoint <= 9701 || 9711 == codePoint || 9733 <= codePoint && codePoint <= 9734 || 9737 == codePoint || 9742 <= codePoint && codePoint <= 9743 || 9748 <= codePoint && codePoint <= 9749 || 9756 == codePoint || 9758 == codePoint || 9792 == codePoint || 9794 == codePoint || 9824 <= codePoint && codePoint <= 9825 || 9827 <= codePoint && codePoint <= 9829 || 9831 <= codePoint && codePoint <= 9834 || 9836 <= codePoint && codePoint <= 9837 || 9839 == codePoint || 9886 <= codePoint && codePoint <= 9887 || 9918 <= codePoint && codePoint <= 9919 || 9924 <= codePoint && codePoint <= 9933 || 9935 <= codePoint && codePoint <= 9953 || 9955 == codePoint || 9960 <= codePoint && codePoint <= 9983 || 10045 == codePoint || 10071 == codePoint || 10102 <= codePoint && codePoint <= 10111 || 11093 <= codePoint && codePoint <= 11097 || 12872 <= codePoint && codePoint <= 12879 || 57344 <= codePoint && codePoint <= 63743 || 65024 <= codePoint && codePoint <= 65039 || 65533 == codePoint || 127232 <= codePoint && codePoint <= 127242 || 127248 <= codePoint && codePoint <= 127277 || 127280 <= codePoint && codePoint <= 127337 || 127344 <= codePoint && codePoint <= 127386 || 917760 <= codePoint && codePoint <= 917999 || 983040 <= codePoint && codePoint <= 1048573 || 1048576 <= codePoint && codePoint <= 1114109) {
        return "A";
      }
      return "N";
    };
    eaw.characterLength = function(character) {
      var code7 = this.eastAsianWidth(character);
      if (code7 == "F" || code7 == "W" || code7 == "A") {
        return 2;
      } else {
        return 1;
      }
    };
    function stringToArray(string2) {
      return string2.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g) || [];
    }
    eaw.length = function(string2) {
      var characters2 = stringToArray(string2);
      var len = 0;
      for (var i2 = 0; i2 < characters2.length; i2++) {
        len = len + this.characterLength(characters2[i2]);
      }
      return len;
    };
    eaw.slice = function(text7, start, end) {
      textLen = eaw.length(text7);
      start = start ? start : 0;
      end = end ? end : 1;
      if (start < 0) {
        start = textLen + start;
      }
      if (end < 0) {
        end = textLen + end;
      }
      var result = "";
      var eawLen = 0;
      var chars = stringToArray(text7);
      for (var i2 = 0; i2 < chars.length; i2++) {
        var char = chars[i2];
        var charLen = eaw.length(char);
        if (eawLen >= start - (charLen == 2 ? 1 : 0)) {
          if (eawLen + charLen <= end) {
            result += char;
          } else {
            break;
          }
        }
        eawLen += charLen;
      }
      return result;
    };
  }
});

// ../../node_modules/emoji-regex/index.js
var require_emoji_regex2 = __commonJS({
  "../../node_modules/emoji-regex/index.js"(exports2, module2) {
    "use strict";
    module2.exports = function() {
      return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
    };
  }
});

// ../../node_modules/cli-boxes/boxes.json
var require_boxes = __commonJS({
  "../../node_modules/cli-boxes/boxes.json"(exports2, module2) {
    module2.exports = {
      single: {
        topLeft: "\u250C",
        top: "\u2500",
        topRight: "\u2510",
        right: "\u2502",
        bottomRight: "\u2518",
        bottom: "\u2500",
        bottomLeft: "\u2514",
        left: "\u2502"
      },
      double: {
        topLeft: "\u2554",
        top: "\u2550",
        topRight: "\u2557",
        right: "\u2551",
        bottomRight: "\u255D",
        bottom: "\u2550",
        bottomLeft: "\u255A",
        left: "\u2551"
      },
      round: {
        topLeft: "\u256D",
        top: "\u2500",
        topRight: "\u256E",
        right: "\u2502",
        bottomRight: "\u256F",
        bottom: "\u2500",
        bottomLeft: "\u2570",
        left: "\u2502"
      },
      bold: {
        topLeft: "\u250F",
        top: "\u2501",
        topRight: "\u2513",
        right: "\u2503",
        bottomRight: "\u251B",
        bottom: "\u2501",
        bottomLeft: "\u2517",
        left: "\u2503"
      },
      singleDouble: {
        topLeft: "\u2553",
        top: "\u2500",
        topRight: "\u2556",
        right: "\u2551",
        bottomRight: "\u255C",
        bottom: "\u2500",
        bottomLeft: "\u2559",
        left: "\u2551"
      },
      doubleSingle: {
        topLeft: "\u2552",
        top: "\u2550",
        topRight: "\u2555",
        right: "\u2502",
        bottomRight: "\u255B",
        bottom: "\u2550",
        bottomLeft: "\u2558",
        left: "\u2502"
      },
      classic: {
        topLeft: "+",
        top: "-",
        topRight: "+",
        right: "|",
        bottomRight: "+",
        bottom: "-",
        bottomLeft: "+",
        left: "|"
      },
      arrow: {
        topLeft: "\u2198",
        top: "\u2193",
        topRight: "\u2199",
        right: "\u2190",
        bottomRight: "\u2196",
        bottom: "\u2191",
        bottomLeft: "\u2197",
        left: "\u2192"
      }
    };
  }
});

// ../../node_modules/cli-boxes/index.js
var require_cli_boxes = __commonJS({
  "../../node_modules/cli-boxes/index.js"(exports2, module2) {
    "use strict";
    var cliBoxes2 = require_boxes();
    module2.exports = cliBoxes2;
    module2.exports.default = cliBoxes2;
  }
});

// ../../node_modules/ansi-align/node_modules/ansi-regex/index.js
var require_ansi_regex3 = __commonJS({
  "../../node_modules/ansi-align/node_modules/ansi-regex/index.js"(exports2, module2) {
    "use strict";
    module2.exports = ({ onlyFirst = false } = {}) => {
      const pattern = [
        "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
        "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"
      ].join("|");
      return new RegExp(pattern, onlyFirst ? void 0 : "g");
    };
  }
});

// ../../node_modules/ansi-align/node_modules/strip-ansi/index.js
var require_strip_ansi3 = __commonJS({
  "../../node_modules/ansi-align/node_modules/strip-ansi/index.js"(exports2, module2) {
    "use strict";
    var ansiRegex2 = require_ansi_regex3();
    module2.exports = (string2) => typeof string2 === "string" ? string2.replace(ansiRegex2(), "") : string2;
  }
});

// ../../node_modules/ansi-align/node_modules/emoji-regex/index.js
var require_emoji_regex3 = __commonJS({
  "../../node_modules/ansi-align/node_modules/emoji-regex/index.js"(exports2, module2) {
    "use strict";
    module2.exports = function() {
      return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
    };
  }
});

// ../../node_modules/ansi-align/node_modules/string-width/index.js
var require_string_width2 = __commonJS({
  "../../node_modules/ansi-align/node_modules/string-width/index.js"(exports2, module2) {
    "use strict";
    var stripAnsi3 = require_strip_ansi3();
    var isFullwidthCodePoint = require_is_fullwidth_code_point();
    var emojiRegex3 = require_emoji_regex3();
    var stringWidth3 = (string2) => {
      if (typeof string2 !== "string" || string2.length === 0) {
        return 0;
      }
      string2 = stripAnsi3(string2);
      if (string2.length === 0) {
        return 0;
      }
      string2 = string2.replace(emojiRegex3(), "  ");
      let width = 0;
      for (let i2 = 0; i2 < string2.length; i2++) {
        const code7 = string2.codePointAt(i2);
        if (code7 <= 31 || code7 >= 127 && code7 <= 159) {
          continue;
        }
        if (code7 >= 768 && code7 <= 879) {
          continue;
        }
        if (code7 > 65535) {
          i2++;
        }
        width += isFullwidthCodePoint(code7) ? 2 : 1;
      }
      return width;
    };
    module2.exports = stringWidth3;
    module2.exports.default = stringWidth3;
  }
});

// ../../node_modules/ansi-align/index.js
var require_ansi_align = __commonJS({
  "../../node_modules/ansi-align/index.js"(exports2, module2) {
    "use strict";
    var stringWidth3 = require_string_width2();
    function ansiAlign2(text7, opts) {
      if (!text7) return text7;
      opts = opts || {};
      const align = opts.align || "center";
      if (align === "left") return text7;
      const split2 = opts.split || "\n";
      const pad2 = opts.pad || " ";
      const widthDiffFn = align !== "right" ? halfDiff : fullDiff;
      let returnString = false;
      if (!Array.isArray(text7)) {
        returnString = true;
        text7 = String(text7).split(split2);
      }
      let width;
      let maxWidth = 0;
      text7 = text7.map(function(str2) {
        str2 = String(str2);
        width = stringWidth3(str2);
        maxWidth = Math.max(width, maxWidth);
        return {
          str: str2,
          width
        };
      }).map(function(obj) {
        return new Array(widthDiffFn(maxWidth, obj.width) + 1).join(pad2) + obj.str;
      });
      return returnString ? text7.join(split2) : text7;
    }
    ansiAlign2.left = function left2(text7) {
      return ansiAlign2(text7, { align: "left" });
    };
    ansiAlign2.center = function center(text7) {
      return ansiAlign2(text7, { align: "center" });
    };
    ansiAlign2.right = function right2(text7) {
      return ansiAlign2(text7, { align: "right" });
    };
    module2.exports = ansiAlign2;
    function halfDiff(maxWidth, curWidth) {
      return Math.floor((maxWidth - curWidth) / 2);
    }
    function fullDiff(maxWidth, curWidth) {
      return maxWidth - curWidth;
    }
  }
});

// ../../node_modules/debug/src/common.js
var require_common = __commonJS({
  "../../node_modules/debug/src/common.js"(exports2, module2) {
    function setup(env6) {
      createDebug.debug = createDebug;
      createDebug.default = createDebug;
      createDebug.coerce = coerce2;
      createDebug.disable = disable;
      createDebug.enable = enable;
      createDebug.enabled = enabled;
      createDebug.humanize = require_ms5();
      createDebug.destroy = destroy;
      Object.keys(env6).forEach((key2) => {
        createDebug[key2] = env6[key2];
      });
      createDebug.names = [];
      createDebug.skips = [];
      createDebug.formatters = {};
      function selectColor(namespace) {
        let hash = 0;
        for (let i2 = 0; i2 < namespace.length; i2++) {
          hash = (hash << 5) - hash + namespace.charCodeAt(i2);
          hash |= 0;
        }
        return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
      }
      createDebug.selectColor = selectColor;
      function createDebug(namespace) {
        let prevTime;
        let enableOverride = null;
        let namespacesCache;
        let enabledCache;
        function debug(...args) {
          if (!debug.enabled) {
            return;
          }
          const self2 = debug;
          const curr = Number(/* @__PURE__ */ new Date());
          const ms = curr - (prevTime || curr);
          self2.diff = ms;
          self2.prev = prevTime;
          self2.curr = curr;
          prevTime = curr;
          args[0] = createDebug.coerce(args[0]);
          if (typeof args[0] !== "string") {
            args.unshift("%O");
          }
          let index4 = 0;
          args[0] = args[0].replace(/%([a-zA-Z%])/g, (match3, format) => {
            if (match3 === "%%") {
              return "%";
            }
            index4++;
            const formatter = createDebug.formatters[format];
            if (typeof formatter === "function") {
              const val = args[index4];
              match3 = formatter.call(self2, val);
              args.splice(index4, 1);
              index4--;
            }
            return match3;
          });
          createDebug.formatArgs.call(self2, args);
          const logFn = self2.log || createDebug.log;
          logFn.apply(self2, args);
        }
        debug.namespace = namespace;
        debug.useColors = createDebug.useColors();
        debug.color = createDebug.selectColor(namespace);
        debug.extend = extend5;
        debug.destroy = createDebug.destroy;
        Object.defineProperty(debug, "enabled", {
          enumerable: true,
          configurable: false,
          get: () => {
            if (enableOverride !== null) {
              return enableOverride;
            }
            if (namespacesCache !== createDebug.namespaces) {
              namespacesCache = createDebug.namespaces;
              enabledCache = createDebug.enabled(namespace);
            }
            return enabledCache;
          },
          set: (v) => {
            enableOverride = v;
          }
        });
        if (typeof createDebug.init === "function") {
          createDebug.init(debug);
        }
        return debug;
      }
      function extend5(namespace, delimiter2) {
        const newDebug = createDebug(this.namespace + (typeof delimiter2 === "undefined" ? ":" : delimiter2) + namespace);
        newDebug.log = this.log;
        return newDebug;
      }
      function enable(namespaces) {
        createDebug.save(namespaces);
        createDebug.namespaces = namespaces;
        createDebug.names = [];
        createDebug.skips = [];
        const split2 = (typeof namespaces === "string" ? namespaces : "").trim().replace(/\s+/g, ",").split(",").filter(Boolean);
        for (const ns of split2) {
          if (ns[0] === "-") {
            createDebug.skips.push(ns.slice(1));
          } else {
            createDebug.names.push(ns);
          }
        }
      }
      function matchesTemplate(search4, template) {
        let searchIndex = 0;
        let templateIndex = 0;
        let starIndex = -1;
        let matchIndex = 0;
        while (searchIndex < search4.length) {
          if (templateIndex < template.length && (template[templateIndex] === search4[searchIndex] || template[templateIndex] === "*")) {
            if (template[templateIndex] === "*") {
              starIndex = templateIndex;
              matchIndex = searchIndex;
              templateIndex++;
            } else {
              searchIndex++;
              templateIndex++;
            }
          } else if (starIndex !== -1) {
            templateIndex = starIndex + 1;
            matchIndex++;
            searchIndex = matchIndex;
          } else {
            return false;
          }
        }
        while (templateIndex < template.length && template[templateIndex] === "*") {
          templateIndex++;
        }
        return templateIndex === template.length;
      }
      function disable() {
        const namespaces = [
          ...createDebug.names,
          ...createDebug.skips.map((namespace) => "-" + namespace)
        ].join(",");
        createDebug.enable("");
        return namespaces;
      }
      function enabled(name3) {
        for (const skip of createDebug.skips) {
          if (matchesTemplate(name3, skip)) {
            return false;
          }
        }
        for (const ns of createDebug.names) {
          if (matchesTemplate(name3, ns)) {
            return true;
          }
        }
        return false;
      }
      function coerce2(val) {
        if (val instanceof Error) {
          return val.stack || val.message;
        }
        return val;
      }
      function destroy() {
        console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
      }
      createDebug.enable(createDebug.load());
      return createDebug;
    }
    module2.exports = setup;
  }
});

// ../../node_modules/debug/src/browser.js
var require_browser5 = __commonJS({
  "../../node_modules/debug/src/browser.js"(exports2, module2) {
    exports2.formatArgs = formatArgs;
    exports2.save = save;
    exports2.load = load2;
    exports2.useColors = useColors;
    exports2.storage = localstorage();
    exports2.destroy = /* @__PURE__ */ (() => {
      let warned2 = false;
      return () => {
        if (!warned2) {
          warned2 = true;
          console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
        }
      };
    })();
    exports2.colors = [
      "#0000CC",
      "#0000FF",
      "#0033CC",
      "#0033FF",
      "#0066CC",
      "#0066FF",
      "#0099CC",
      "#0099FF",
      "#00CC00",
      "#00CC33",
      "#00CC66",
      "#00CC99",
      "#00CCCC",
      "#00CCFF",
      "#3300CC",
      "#3300FF",
      "#3333CC",
      "#3333FF",
      "#3366CC",
      "#3366FF",
      "#3399CC",
      "#3399FF",
      "#33CC00",
      "#33CC33",
      "#33CC66",
      "#33CC99",
      "#33CCCC",
      "#33CCFF",
      "#6600CC",
      "#6600FF",
      "#6633CC",
      "#6633FF",
      "#66CC00",
      "#66CC33",
      "#9900CC",
      "#9900FF",
      "#9933CC",
      "#9933FF",
      "#99CC00",
      "#99CC33",
      "#CC0000",
      "#CC0033",
      "#CC0066",
      "#CC0099",
      "#CC00CC",
      "#CC00FF",
      "#CC3300",
      "#CC3333",
      "#CC3366",
      "#CC3399",
      "#CC33CC",
      "#CC33FF",
      "#CC6600",
      "#CC6633",
      "#CC9900",
      "#CC9933",
      "#CCCC00",
      "#CCCC33",
      "#FF0000",
      "#FF0033",
      "#FF0066",
      "#FF0099",
      "#FF00CC",
      "#FF00FF",
      "#FF3300",
      "#FF3333",
      "#FF3366",
      "#FF3399",
      "#FF33CC",
      "#FF33FF",
      "#FF6600",
      "#FF6633",
      "#FF9900",
      "#FF9933",
      "#FFCC00",
      "#FFCC33"
    ];
    function useColors() {
      if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) {
        return true;
      }
      if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
        return false;
      }
      let m2;
      return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773
      typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?
      // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
      typeof navigator !== "undefined" && navigator.userAgent && (m2 = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m2[1], 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker
      typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
    }
    function formatArgs(args) {
      args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module2.exports.humanize(this.diff);
      if (!this.useColors) {
        return;
      }
      const c = "color: " + this.color;
      args.splice(1, 0, c, "color: inherit");
      let index4 = 0;
      let lastC = 0;
      args[0].replace(/%[a-zA-Z%]/g, (match3) => {
        if (match3 === "%%") {
          return;
        }
        index4++;
        if (match3 === "%c") {
          lastC = index4;
        }
      });
      args.splice(lastC, 0, c);
    }
    exports2.log = console.debug || console.log || (() => {
    });
    function save(namespaces) {
      try {
        if (namespaces) {
          exports2.storage.setItem("debug", namespaces);
        } else {
          exports2.storage.removeItem("debug");
        }
      } catch (error) {
      }
    }
    function load2() {
      let r2;
      try {
        r2 = exports2.storage.getItem("debug") || exports2.storage.getItem("DEBUG");
      } catch (error) {
      }
      if (!r2 && typeof process !== "undefined" && "env" in process) {
        r2 = process.env.DEBUG;
      }
      return r2;
    }
    function localstorage() {
      try {
        return localStorage;
      } catch (error) {
      }
    }
    module2.exports = require_common()(exports2);
    var { formatters } = module2.exports;
    formatters.j = function(v) {
      try {
        return JSON.stringify(v);
      } catch (error) {
        return "[UnexpectedJSONParseError]: " + error.message;
      }
    };
  }
});

// ../../node_modules/has-flag/index.js
var require_has_flag3 = __commonJS({
  "../../node_modules/has-flag/index.js"(exports2, module2) {
    "use strict";
    module2.exports = (flag, argv) => {
      argv = argv || process.argv;
      const prefix2 = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
      const pos = argv.indexOf(prefix2 + flag);
      const terminatorPos = argv.indexOf("--");
      return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);
    };
  }
});

// ../../node_modules/supports-color/index.js
var require_supports_color3 = __commonJS({
  "../../node_modules/supports-color/index.js"(exports2, module2) {
    "use strict";
    var os10 = require("os");
    var hasFlag6 = require_has_flag3();
    var env6 = process.env;
    var forceColor;
    if (hasFlag6("no-color") || hasFlag6("no-colors") || hasFlag6("color=false")) {
      forceColor = false;
    } else if (hasFlag6("color") || hasFlag6("colors") || hasFlag6("color=true") || hasFlag6("color=always")) {
      forceColor = true;
    }
    if ("FORCE_COLOR" in env6) {
      forceColor = env6.FORCE_COLOR.length === 0 || parseInt(env6.FORCE_COLOR, 10) !== 0;
    }
    function translateLevel6(level) {
      if (level === 0) {
        return false;
      }
      return {
        level,
        hasBasic: true,
        has256: level >= 2,
        has16m: level >= 3
      };
    }
    function supportsColor6(stream3) {
      if (forceColor === false) {
        return 0;
      }
      if (hasFlag6("color=16m") || hasFlag6("color=full") || hasFlag6("color=truecolor")) {
        return 3;
      }
      if (hasFlag6("color=256")) {
        return 2;
      }
      if (stream3 && !stream3.isTTY && forceColor !== true) {
        return 0;
      }
      const min = forceColor ? 1 : 0;
      if (process.platform === "win32") {
        const osRelease = os10.release().split(".");
        if (Number(process.versions.node.split(".")[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
          return Number(osRelease[2]) >= 14931 ? 3 : 2;
        }
        return 1;
      }
      if ("CI" in env6) {
        if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI"].some((sign) => sign in env6) || env6.CI_NAME === "codeship") {
          return 1;
        }
        return min;
      }
      if ("TEAMCITY_VERSION" in env6) {
        return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env6.TEAMCITY_VERSION) ? 1 : 0;
      }
      if (env6.COLORTERM === "truecolor") {
        return 3;
      }
      if ("TERM_PROGRAM" in env6) {
        const version4 = parseInt((env6.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
        switch (env6.TERM_PROGRAM) {
          case "iTerm.app":
            return version4 >= 3 ? 3 : 2;
          case "Apple_Terminal":
            return 2;
        }
      }
      if (/-256(color)?$/i.test(env6.TERM)) {
        return 2;
      }
      if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env6.TERM)) {
        return 1;
      }
      if ("COLORTERM" in env6) {
        return 1;
      }
      if (env6.TERM === "dumb") {
        return min;
      }
      return min;
    }
    function getSupportLevel(stream3) {
      const level = supportsColor6(stream3);
      return translateLevel6(level);
    }
    module2.exports = {
      supportsColor: getSupportLevel,
      stdout: getSupportLevel(process.stdout),
      stderr: getSupportLevel(process.stderr)
    };
  }
});

// ../../node_modules/debug/src/node.js
var require_node9 = __commonJS({
  "../../node_modules/debug/src/node.js"(exports2, module2) {
    var tty6 = require("tty");
    var util4 = require("util");
    exports2.init = init4;
    exports2.log = log;
    exports2.formatArgs = formatArgs;
    exports2.save = save;
    exports2.load = load2;
    exports2.useColors = useColors;
    exports2.destroy = util4.deprecate(
      () => {
      },
      "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."
    );
    exports2.colors = [6, 2, 3, 4, 5, 1];
    try {
      const supportsColor6 = require_supports_color3();
      if (supportsColor6 && (supportsColor6.stderr || supportsColor6).level >= 2) {
        exports2.colors = [
          20,
          21,
          26,
          27,
          32,
          33,
          38,
          39,
          40,
          41,
          42,
          43,
          44,
          45,
          56,
          57,
          62,
          63,
          68,
          69,
          74,
          75,
          76,
          77,
          78,
          79,
          80,
          81,
          92,
          93,
          98,
          99,
          112,
          113,
          128,
          129,
          134,
          135,
          148,
          149,
          160,
          161,
          162,
          163,
          164,
          165,
          166,
          167,
          168,
          169,
          170,
          171,
          172,
          173,
          178,
          179,
          184,
          185,
          196,
          197,
          198,
          199,
          200,
          201,
          202,
          203,
          204,
          205,
          206,
          207,
          208,
          209,
          214,
          215,
          220,
          221
        ];
      }
    } catch (error) {
    }
    exports2.inspectOpts = Object.keys(process.env).filter((key2) => {
      return /^debug_/i.test(key2);
    }).reduce((obj, key2) => {
      const prop = key2.substring(6).toLowerCase().replace(/_([a-z])/g, (_2, k) => {
        return k.toUpperCase();
      });
      let val = process.env[key2];
      if (/^(yes|on|true|enabled)$/i.test(val)) {
        val = true;
      } else if (/^(no|off|false|disabled)$/i.test(val)) {
        val = false;
      } else if (val === "null") {
        val = null;
      } else {
        val = Number(val);
      }
      obj[prop] = val;
      return obj;
    }, {});
    function useColors() {
      return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty6.isatty(process.stderr.fd);
    }
    function formatArgs(args) {
      const { namespace: name3, useColors: useColors2 } = this;
      if (useColors2) {
        const c = this.color;
        const colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c);
        const prefix2 = `  ${colorCode};1m${name3} \x1B[0m`;
        args[0] = prefix2 + args[0].split("\n").join("\n" + prefix2);
        args.push(colorCode + "m+" + module2.exports.humanize(this.diff) + "\x1B[0m");
      } else {
        args[0] = getDate() + name3 + " " + args[0];
      }
    }
    function getDate() {
      if (exports2.inspectOpts.hideDate) {
        return "";
      }
      return (/* @__PURE__ */ new Date()).toISOString() + " ";
    }
    function log(...args) {
      return process.stderr.write(util4.formatWithOptions(exports2.inspectOpts, ...args) + "\n");
    }
    function save(namespaces) {
      if (namespaces) {
        process.env.DEBUG = namespaces;
      } else {
        delete process.env.DEBUG;
      }
    }
    function load2() {
      return process.env.DEBUG;
    }
    function init4(debug) {
      debug.inspectOpts = {};
      const keys2 = Object.keys(exports2.inspectOpts);
      for (let i2 = 0; i2 < keys2.length; i2++) {
        debug.inspectOpts[keys2[i2]] = exports2.inspectOpts[keys2[i2]];
      }
    }
    module2.exports = require_common()(exports2);
    var { formatters } = module2.exports;
    formatters.o = function(v) {
      this.inspectOpts.colors = this.useColors;
      return util4.inspect(v, this.inspectOpts).split("\n").map((str2) => str2.trim()).join(" ");
    };
    formatters.O = function(v) {
      this.inspectOpts.colors = this.useColors;
      return util4.inspect(v, this.inspectOpts);
    };
  }
});

// ../../node_modules/debug/src/index.js
var require_src6 = __commonJS({
  "../../node_modules/debug/src/index.js"(exports2, module2) {
    if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) {
      module2.exports = require_browser5();
    } else {
      module2.exports = require_node9();
    }
  }
});

// ../../node_modules/agent-base/dist/helpers.js
var require_helpers3 = __commonJS({
  "../../node_modules/agent-base/dist/helpers.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.req = exports2.json = exports2.toBuffer = void 0;
    var http5 = __importStar(require("http"));
    var https3 = __importStar(require("https"));
    async function toBuffer(stream3) {
      let length = 0;
      const chunks = [];
      for await (const chunk of stream3) {
        length += chunk.length;
        chunks.push(chunk);
      }
      return Buffer.concat(chunks, length);
    }
    exports2.toBuffer = toBuffer;
    async function json2(stream3) {
      const buf = await toBuffer(stream3);
      const str2 = buf.toString("utf8");
      try {
        return JSON.parse(str2);
      } catch (_err) {
        const err = _err;
        err.message += ` (input: ${str2})`;
        throw err;
      }
    }
    exports2.json = json2;
    function req(url, opts = {}) {
      const href = typeof url === "string" ? url : url.href;
      const req2 = (href.startsWith("https:") ? https3 : http5).request(url, opts);
      const promise = new Promise((resolve9, reject) => {
        req2.once("response", resolve9).once("error", reject).end();
      });
      req2.then = promise.then.bind(promise);
      return req2;
    }
    exports2.req = req;
  }
});

// ../../node_modules/agent-base/dist/index.js
var require_dist4 = __commonJS({
  "../../node_modules/agent-base/dist/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    var __exportStar = exports2 && exports2.__exportStar || function(m2, exports3) {
      for (var p5 in m2) if (p5 !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p5)) __createBinding(exports3, m2, p5);
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.Agent = void 0;
    var http5 = __importStar(require("http"));
    __exportStar(require_helpers3(), exports2);
    var INTERNAL = Symbol("AgentBaseInternalState");
    var Agent = class extends http5.Agent {
      constructor(opts) {
        super(opts);
        this[INTERNAL] = {};
      }
      /**
       * Determine whether this is an `http` or `https` request.
       */
      isSecureEndpoint(options) {
        if (options) {
          if (typeof options.secureEndpoint === "boolean") {
            return options.secureEndpoint;
          }
          if (typeof options.protocol === "string") {
            return options.protocol === "https:";
          }
        }
        const { stack } = new Error();
        if (typeof stack !== "string")
          return false;
        return stack.split("\n").some((l) => l.indexOf("(https.js:") !== -1 || l.indexOf("node:https:") !== -1);
      }
      createSocket(req, options, cb) {
        const connectOpts = {
          ...options,
          secureEndpoint: this.isSecureEndpoint(options)
        };
        Promise.resolve().then(() => this.connect(req, connectOpts)).then((socket) => {
          if (socket instanceof http5.Agent) {
            return socket.addRequest(req, connectOpts);
          }
          this[INTERNAL].currentSocket = socket;
          super.createSocket(req, options, cb);
        }, cb);
      }
      createConnection() {
        const socket = this[INTERNAL].currentSocket;
        this[INTERNAL].currentSocket = void 0;
        if (!socket) {
          throw new Error("No socket was returned in the `connect()` function");
        }
        return socket;
      }
      get defaultPort() {
        return this[INTERNAL].defaultPort ?? (this.protocol === "https:" ? 443 : 80);
      }
      set defaultPort(v) {
        if (this[INTERNAL]) {
          this[INTERNAL].defaultPort = v;
        }
      }
      get protocol() {
        return this[INTERNAL].protocol ?? (this.isSecureEndpoint() ? "https:" : "http:");
      }
      set protocol(v) {
        if (this[INTERNAL]) {
          this[INTERNAL].protocol = v;
        }
      }
    };
    exports2.Agent = Agent;
  }
});

// ../../node_modules/https-proxy-agent/dist/parse-proxy-response.js
var require_parse_proxy_response = __commonJS({
  "../../node_modules/https-proxy-agent/dist/parse-proxy-response.js"(exports2) {
    "use strict";
    var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.parseProxyResponse = void 0;
    var debug_1 = __importDefault2(require_src6());
    var debug = (0, debug_1.default)("https-proxy-agent:parse-proxy-response");
    function parseProxyResponse(socket) {
      return new Promise((resolve9, reject) => {
        let buffersLength = 0;
        const buffers = [];
        function read2() {
          const b = socket.read();
          if (b)
            ondata(b);
          else
            socket.once("readable", read2);
        }
        function cleanup() {
          socket.removeListener("end", onend);
          socket.removeListener("error", onerror);
          socket.removeListener("readable", read2);
        }
        function onend() {
          cleanup();
          debug("onend");
          reject(new Error("Proxy connection ended before receiving CONNECT response"));
        }
        function onerror(err) {
          cleanup();
          debug("onerror %o", err);
          reject(err);
        }
        function ondata(b) {
          buffers.push(b);
          buffersLength += b.length;
          const buffered = Buffer.concat(buffers, buffersLength);
          const endOfHeaders = buffered.indexOf("\r\n\r\n");
          if (endOfHeaders === -1) {
            debug("have not received end of HTTP headers yet...");
            read2();
            return;
          }
          const headerParts = buffered.slice(0, endOfHeaders).toString("ascii").split("\r\n");
          const firstLine = headerParts.shift();
          if (!firstLine) {
            socket.destroy();
            return reject(new Error("No header received from proxy CONNECT response"));
          }
          const firstLineParts = firstLine.split(" ");
          const statusCode = +firstLineParts[1];
          const statusText = firstLineParts.slice(2).join(" ");
          const headers = {};
          for (const header of headerParts) {
            if (!header)
              continue;
            const firstColon = header.indexOf(":");
            if (firstColon === -1) {
              socket.destroy();
              return reject(new Error(`Invalid header from proxy CONNECT response: "${header}"`));
            }
            const key2 = header.slice(0, firstColon).toLowerCase();
            const value = header.slice(firstColon + 1).trimStart();
            const current2 = headers[key2];
            if (typeof current2 === "string") {
              headers[key2] = [current2, value];
            } else if (Array.isArray(current2)) {
              current2.push(value);
            } else {
              headers[key2] = value;
            }
          }
          debug("got proxy server response: %o %o", firstLine, headers);
          cleanup();
          resolve9({
            connect: {
              statusCode,
              statusText,
              headers
            },
            buffered
          });
        }
        socket.on("error", onerror);
        socket.on("end", onend);
        read2();
      });
    }
    exports2.parseProxyResponse = parseProxyResponse;
  }
});

// ../../node_modules/https-proxy-agent/dist/index.js
var require_dist5 = __commonJS({
  "../../node_modules/https-proxy-agent/dist/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.HttpsProxyAgent = void 0;
    var net3 = __importStar(require("net"));
    var tls = __importStar(require("tls"));
    var assert_1 = __importDefault2(require("assert"));
    var debug_1 = __importDefault2(require_src6());
    var agent_base_1 = require_dist4();
    var url_12 = require("url");
    var parse_proxy_response_1 = require_parse_proxy_response();
    var debug = (0, debug_1.default)("https-proxy-agent");
    var HttpsProxyAgent2 = class extends agent_base_1.Agent {
      constructor(proxy, opts) {
        super(opts);
        this.options = { path: void 0 };
        this.proxy = typeof proxy === "string" ? new url_12.URL(proxy) : proxy;
        this.proxyHeaders = (opts == null ? void 0 : opts.headers) ?? {};
        debug("Creating new HttpsProxyAgent instance: %o", this.proxy.href);
        const host = (this.proxy.hostname || this.proxy.host).replace(/^\[|\]$/g, "");
        const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === "https:" ? 443 : 80;
        this.connectOpts = {
          // Attempt to negotiate http/1.1 for proxy servers that support http/2
          ALPNProtocols: ["http/1.1"],
          ...opts ? omit(opts, "headers") : null,
          host,
          port
        };
      }
      /**
       * Called when the node-core HTTP client library is creating a
       * new HTTP request.
       */
      async connect(req, opts) {
        const { proxy } = this;
        if (!opts.host) {
          throw new TypeError('No "host" provided');
        }
        let socket;
        if (proxy.protocol === "https:") {
          debug("Creating `tls.Socket`: %o", this.connectOpts);
          const servername = this.connectOpts.servername || this.connectOpts.host;
          socket = tls.connect({
            ...this.connectOpts,
            servername: servername && net3.isIP(servername) ? void 0 : servername
          });
        } else {
          debug("Creating `net.Socket`: %o", this.connectOpts);
          socket = net3.connect(this.connectOpts);
        }
        const headers = typeof this.proxyHeaders === "function" ? this.proxyHeaders() : { ...this.proxyHeaders };
        const host = net3.isIPv6(opts.host) ? `[${opts.host}]` : opts.host;
        let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\r
`;
        if (proxy.username || proxy.password) {
          const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;
          headers["Proxy-Authorization"] = `Basic ${Buffer.from(auth).toString("base64")}`;
        }
        headers.Host = `${host}:${opts.port}`;
        if (!headers["Proxy-Connection"]) {
          headers["Proxy-Connection"] = this.keepAlive ? "Keep-Alive" : "close";
        }
        for (const name3 of Object.keys(headers)) {
          payload += `${name3}: ${headers[name3]}\r
`;
        }
        const proxyResponsePromise = (0, parse_proxy_response_1.parseProxyResponse)(socket);
        socket.write(`${payload}\r
`);
        const { connect, buffered } = await proxyResponsePromise;
        req.emit("proxyConnect", connect);
        this.emit("proxyConnect", connect, req);
        if (connect.statusCode === 200) {
          req.once("socket", resume);
          if (opts.secureEndpoint) {
            debug("Upgrading socket connection to TLS");
            const servername = opts.servername || opts.host;
            return tls.connect({
              ...omit(opts, "host", "path", "port"),
              socket,
              servername: net3.isIP(servername) ? void 0 : servername
            });
          }
          return socket;
        }
        socket.destroy();
        const fakeSocket = new net3.Socket({ writable: false });
        fakeSocket.readable = true;
        req.once("socket", (s5) => {
          debug("Replaying proxy buffer for failed request");
          (0, assert_1.default)(s5.listenerCount("data") > 0);
          s5.push(buffered);
          s5.push(null);
        });
        return fakeSocket;
      }
    };
    HttpsProxyAgent2.protocols = ["http", "https"];
    exports2.HttpsProxyAgent = HttpsProxyAgent2;
    function resume(socket) {
      socket.resume();
    }
    function omit(obj, ...keys2) {
      const ret = {};
      let key2;
      for (key2 in obj) {
        if (!keys2.includes(key2)) {
          ret[key2] = obj[key2];
        }
      }
      return ret;
    }
  }
});

// ../../node_modules/@lumino/algorithm/dist/index.js
var require_dist6 = __commonJS({
  "../../node_modules/@lumino/algorithm/dist/index.js"(exports2, module2) {
    (function(global2, factory) {
      typeof exports2 === "object" && typeof module2 !== "undefined" ? factory(exports2) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.lumino_algorithm = {}));
    })(exports2, (function(exports3) {
      "use strict";
      exports3.ArrayExt = void 0;
      (function(ArrayExt) {
        function firstIndexOf(array, value, start = 0, stop = -1) {
          let n = array.length;
          if (n === 0) {
            return -1;
          }
          if (start < 0) {
            start = Math.max(0, start + n);
          } else {
            start = Math.min(start, n - 1);
          }
          if (stop < 0) {
            stop = Math.max(0, stop + n);
          } else {
            stop = Math.min(stop, n - 1);
          }
          let span;
          if (stop < start) {
            span = stop + 1 + (n - start);
          } else {
            span = stop - start + 1;
          }
          for (let i2 = 0; i2 < span; ++i2) {
            let j = (start + i2) % n;
            if (array[j] === value) {
              return j;
            }
          }
          return -1;
        }
        ArrayExt.firstIndexOf = firstIndexOf;
        function lastIndexOf2(array, value, start = -1, stop = 0) {
          let n = array.length;
          if (n === 0) {
            return -1;
          }
          if (start < 0) {
            start = Math.max(0, start + n);
          } else {
            start = Math.min(start, n - 1);
          }
          if (stop < 0) {
            stop = Math.max(0, stop + n);
          } else {
            stop = Math.min(stop, n - 1);
          }
          let span;
          if (start < stop) {
            span = start + 1 + (n - stop);
          } else {
            span = start - stop + 1;
          }
          for (let i2 = 0; i2 < span; ++i2) {
            let j = (start - i2 + n) % n;
            if (array[j] === value) {
              return j;
            }
          }
          return -1;
        }
        ArrayExt.lastIndexOf = lastIndexOf2;
        function findFirstIndex(array, fn, start = 0, stop = -1) {
          let n = array.length;
          if (n === 0) {
            return -1;
          }
          if (start < 0) {
            start = Math.max(0, start + n);
          } else {
            start = Math.min(start, n - 1);
          }
          if (stop < 0) {
            stop = Math.max(0, stop + n);
          } else {
            stop = Math.min(stop, n - 1);
          }
          let span;
          if (stop < start) {
            span = stop + 1 + (n - start);
          } else {
            span = stop - start + 1;
          }
          for (let i2 = 0; i2 < span; ++i2) {
            let j = (start + i2) % n;
            if (fn(array[j], j)) {
              return j;
            }
          }
          return -1;
        }
        ArrayExt.findFirstIndex = findFirstIndex;
        function findLastIndex(array, fn, start = -1, stop = 0) {
          let n = array.length;
          if (n === 0) {
            return -1;
          }
          if (start < 0) {
            start = Math.max(0, start + n);
          } else {
            start = Math.min(start, n - 1);
          }
          if (stop < 0) {
            stop = Math.max(0, stop + n);
          } else {
            stop = Math.min(stop, n - 1);
          }
          let d;
          if (start < stop) {
            d = start + 1 + (n - stop);
          } else {
            d = start - stop + 1;
          }
          for (let i2 = 0; i2 < d; ++i2) {
            let j = (start - i2 + n) % n;
            if (fn(array[j], j)) {
              return j;
            }
          }
          return -1;
        }
        ArrayExt.findLastIndex = findLastIndex;
        function findFirstValue(array, fn, start = 0, stop = -1) {
          let index4 = findFirstIndex(array, fn, start, stop);
          return index4 !== -1 ? array[index4] : void 0;
        }
        ArrayExt.findFirstValue = findFirstValue;
        function findLastValue(array, fn, start = -1, stop = 0) {
          let index4 = findLastIndex(array, fn, start, stop);
          return index4 !== -1 ? array[index4] : void 0;
        }
        ArrayExt.findLastValue = findLastValue;
        function lowerBound(array, value, fn, start = 0, stop = -1) {
          let n = array.length;
          if (n === 0) {
            return 0;
          }
          if (start < 0) {
            start = Math.max(0, start + n);
          } else {
            start = Math.min(start, n - 1);
          }
          if (stop < 0) {
            stop = Math.max(0, stop + n);
          } else {
            stop = Math.min(stop, n - 1);
          }
          let begin = start;
          let span = stop - start + 1;
          while (span > 0) {
            let half = span >> 1;
            let middle = begin + half;
            if (fn(array[middle], value) < 0) {
              begin = middle + 1;
              span -= half + 1;
            } else {
              span = half;
            }
          }
          return begin;
        }
        ArrayExt.lowerBound = lowerBound;
        function upperBound(array, value, fn, start = 0, stop = -1) {
          let n = array.length;
          if (n === 0) {
            return 0;
          }
          if (start < 0) {
            start = Math.max(0, start + n);
          } else {
            start = Math.min(start, n - 1);
          }
          if (stop < 0) {
            stop = Math.max(0, stop + n);
          } else {
            stop = Math.min(stop, n - 1);
          }
          let begin = start;
          let span = stop - start + 1;
          while (span > 0) {
            let half = span >> 1;
            let middle = begin + half;
            if (fn(array[middle], value) > 0) {
              span = half;
            } else {
              begin = middle + 1;
              span -= half + 1;
            }
          }
          return begin;
        }
        ArrayExt.upperBound = upperBound;
        function shallowEqual(a2, b, fn) {
          if (a2 === b) {
            return true;
          }
          if (a2.length !== b.length) {
            return false;
          }
          for (let i2 = 0, n = a2.length; i2 < n; ++i2) {
            if (fn ? !fn(a2[i2], b[i2]) : a2[i2] !== b[i2]) {
              return false;
            }
          }
          return true;
        }
        ArrayExt.shallowEqual = shallowEqual;
        function slice2(array, options = {}) {
          let { start, stop, step } = options;
          if (step === void 0) {
            step = 1;
          }
          if (step === 0) {
            throw new Error("Slice `step` cannot be zero.");
          }
          let n = array.length;
          if (start === void 0) {
            start = step < 0 ? n - 1 : 0;
          } else if (start < 0) {
            start = Math.max(start + n, step < 0 ? -1 : 0);
          } else if (start >= n) {
            start = step < 0 ? n - 1 : n;
          }
          if (stop === void 0) {
            stop = step < 0 ? -1 : n;
          } else if (stop < 0) {
            stop = Math.max(stop + n, step < 0 ? -1 : 0);
          } else if (stop >= n) {
            stop = step < 0 ? n - 1 : n;
          }
          let length;
          if (step < 0 && stop >= start || step > 0 && start >= stop) {
            length = 0;
          } else if (step < 0) {
            length = Math.floor((stop - start + 1) / step + 1);
          } else {
            length = Math.floor((stop - start - 1) / step + 1);
          }
          let result = [];
          for (let i2 = 0; i2 < length; ++i2) {
            result[i2] = array[start + i2 * step];
          }
          return result;
        }
        ArrayExt.slice = slice2;
        function move(array, fromIndex, toIndex) {
          let n = array.length;
          if (n <= 1) {
            return;
          }
          if (fromIndex < 0) {
            fromIndex = Math.max(0, fromIndex + n);
          } else {
            fromIndex = Math.min(fromIndex, n - 1);
          }
          if (toIndex < 0) {
            toIndex = Math.max(0, toIndex + n);
          } else {
            toIndex = Math.min(toIndex, n - 1);
          }
          if (fromIndex === toIndex) {
            return;
          }
          let value = array[fromIndex];
          let d = fromIndex < toIndex ? 1 : -1;
          for (let i2 = fromIndex; i2 !== toIndex; i2 += d) {
            array[i2] = array[i2 + d];
          }
          array[toIndex] = value;
        }
        ArrayExt.move = move;
        function reverse(array, start = 0, stop = -1) {
          let n = array.length;
          if (n <= 1) {
            return;
          }
          if (start < 0) {
            start = Math.max(0, start + n);
          } else {
            start = Math.min(start, n - 1);
          }
          if (stop < 0) {
            stop = Math.max(0, stop + n);
          } else {
            stop = Math.min(stop, n - 1);
          }
          while (start < stop) {
            let a2 = array[start];
            let b = array[stop];
            array[start++] = b;
            array[stop--] = a2;
          }
        }
        ArrayExt.reverse = reverse;
        function rotate(array, delta, start = 0, stop = -1) {
          let n = array.length;
          if (n <= 1) {
            return;
          }
          if (start < 0) {
            start = Math.max(0, start + n);
          } else {
            start = Math.min(start, n - 1);
          }
          if (stop < 0) {
            stop = Math.max(0, stop + n);
          } else {
            stop = Math.min(stop, n - 1);
          }
          if (start >= stop) {
            return;
          }
          let length = stop - start + 1;
          if (delta > 0) {
            delta = delta % length;
          } else if (delta < 0) {
            delta = (delta % length + length) % length;
          }
          if (delta === 0) {
            return;
          }
          let pivot = start + delta;
          reverse(array, start, pivot - 1);
          reverse(array, pivot, stop);
          reverse(array, start, stop);
        }
        ArrayExt.rotate = rotate;
        function fill3(array, value, start = 0, stop = -1) {
          let n = array.length;
          if (n === 0) {
            return;
          }
          if (start < 0) {
            start = Math.max(0, start + n);
          } else {
            start = Math.min(start, n - 1);
          }
          if (stop < 0) {
            stop = Math.max(0, stop + n);
          } else {
            stop = Math.min(stop, n - 1);
          }
          let span;
          if (stop < start) {
            span = stop + 1 + (n - start);
          } else {
            span = stop - start + 1;
          }
          for (let i2 = 0; i2 < span; ++i2) {
            array[(start + i2) % n] = value;
          }
        }
        ArrayExt.fill = fill3;
        function insert(array, index4, value) {
          let n = array.length;
          if (index4 < 0) {
            index4 = Math.max(0, index4 + n);
          } else {
            index4 = Math.min(index4, n);
          }
          for (let i2 = n; i2 > index4; --i2) {
            array[i2] = array[i2 - 1];
          }
          array[index4] = value;
        }
        ArrayExt.insert = insert;
        function removeAt(array, index4) {
          let n = array.length;
          if (index4 < 0) {
            index4 += n;
          }
          if (index4 < 0 || index4 >= n) {
            return void 0;
          }
          let value = array[index4];
          for (let i2 = index4 + 1; i2 < n; ++i2) {
            array[i2 - 1] = array[i2];
          }
          array.length = n - 1;
          return value;
        }
        ArrayExt.removeAt = removeAt;
        function removeFirstOf(array, value, start = 0, stop = -1) {
          let index4 = firstIndexOf(array, value, start, stop);
          if (index4 !== -1) {
            removeAt(array, index4);
          }
          return index4;
        }
        ArrayExt.removeFirstOf = removeFirstOf;
        function removeLastOf(array, value, start = -1, stop = 0) {
          let index4 = lastIndexOf2(array, value, start, stop);
          if (index4 !== -1) {
            removeAt(array, index4);
          }
          return index4;
        }
        ArrayExt.removeLastOf = removeLastOf;
        function removeAllOf(array, value, start = 0, stop = -1) {
          let n = array.length;
          if (n === 0) {
            return 0;
          }
          if (start < 0) {
            start = Math.max(0, start + n);
          } else {
            start = Math.min(start, n - 1);
          }
          if (stop < 0) {
            stop = Math.max(0, stop + n);
          } else {
            stop = Math.min(stop, n - 1);
          }
          let count2 = 0;
          for (let i2 = 0; i2 < n; ++i2) {
            if (start <= stop && i2 >= start && i2 <= stop && array[i2] === value) {
              count2++;
            } else if (stop < start && (i2 <= stop || i2 >= start) && array[i2] === value) {
              count2++;
            } else if (count2 > 0) {
              array[i2 - count2] = array[i2];
            }
          }
          if (count2 > 0) {
            array.length = n - count2;
          }
          return count2;
        }
        ArrayExt.removeAllOf = removeAllOf;
        function removeFirstWhere(array, fn, start = 0, stop = -1) {
          let value;
          let index4 = findFirstIndex(array, fn, start, stop);
          if (index4 !== -1) {
            value = removeAt(array, index4);
          }
          return { index: index4, value };
        }
        ArrayExt.removeFirstWhere = removeFirstWhere;
        function removeLastWhere(array, fn, start = -1, stop = 0) {
          let value;
          let index4 = findLastIndex(array, fn, start, stop);
          if (index4 !== -1) {
            value = removeAt(array, index4);
          }
          return { index: index4, value };
        }
        ArrayExt.removeLastWhere = removeLastWhere;
        function removeAllWhere(array, fn, start = 0, stop = -1) {
          let n = array.length;
          if (n === 0) {
            return 0;
          }
          if (start < 0) {
            start = Math.max(0, start + n);
          } else {
            start = Math.min(start, n - 1);
          }
          if (stop < 0) {
            stop = Math.max(0, stop + n);
          } else {
            stop = Math.min(stop, n - 1);
          }
          let count2 = 0;
          for (let i2 = 0; i2 < n; ++i2) {
            if (start <= stop && i2 >= start && i2 <= stop && fn(array[i2], i2)) {
              count2++;
            } else if (stop < start && (i2 <= stop || i2 >= start) && fn(array[i2], i2)) {
              count2++;
            } else if (count2 > 0) {
              array[i2 - count2] = array[i2];
            }
          }
          if (count2 > 0) {
            array.length = n - count2;
          }
          return count2;
        }
        ArrayExt.removeAllWhere = removeAllWhere;
      })(exports3.ArrayExt || (exports3.ArrayExt = {}));
      function* chain(...objects) {
        for (const object of objects) {
          yield* object;
        }
      }
      function* empty4() {
        return;
      }
      function* enumerate(object, start = 0) {
        for (const value of object) {
          yield [start++, value];
        }
      }
      function* filter6(object, fn) {
        let index4 = 0;
        for (const value of object) {
          if (fn(value, index4++)) {
            yield value;
          }
        }
      }
      function find2(object, fn) {
        let index4 = 0;
        for (const value of object) {
          if (fn(value, index4++)) {
            return value;
          }
        }
        return void 0;
      }
      function findIndex(object, fn) {
        let index4 = 0;
        for (const value of object) {
          if (fn(value, index4++)) {
            return index4 - 1;
          }
        }
        return -1;
      }
      function min(object, fn) {
        let result = void 0;
        for (const value of object) {
          if (result === void 0) {
            result = value;
            continue;
          }
          if (fn(value, result) < 0) {
            result = value;
          }
        }
        return result;
      }
      function max(object, fn) {
        let result = void 0;
        for (const value of object) {
          if (result === void 0) {
            result = value;
            continue;
          }
          if (fn(value, result) > 0) {
            result = value;
          }
        }
        return result;
      }
      function minmax(object, fn) {
        let empty5 = true;
        let vmin;
        let vmax;
        for (const value of object) {
          if (empty5) {
            vmin = value;
            vmax = value;
            empty5 = false;
          } else if (fn(value, vmin) < 0) {
            vmin = value;
          } else if (fn(value, vmax) > 0) {
            vmax = value;
          }
        }
        return empty5 ? void 0 : [vmin, vmax];
      }
      function toArray2(object) {
        return Array.from(object);
      }
      function toObject(object) {
        const result = {};
        for (const [key2, value] of object) {
          result[key2] = value;
        }
        return result;
      }
      function each2(object, fn) {
        let index4 = 0;
        for (const value of object) {
          if (false === fn(value, index4++)) {
            return;
          }
        }
      }
      function every(object, fn) {
        let index4 = 0;
        for (const value of object) {
          if (false === fn(value, index4++)) {
            return false;
          }
        }
        return true;
      }
      function some(object, fn) {
        let index4 = 0;
        for (const value of object) {
          if (fn(value, index4++)) {
            return true;
          }
        }
        return false;
      }
      function* map13(object, fn) {
        let index4 = 0;
        for (const value of object) {
          yield fn(value, index4++);
        }
      }
      function* range(start, stop, step) {
        if (stop === void 0) {
          stop = start;
          start = 0;
          step = 1;
        } else if (step === void 0) {
          step = 1;
        }
        const length = Private.rangeLength(start, stop, step);
        for (let index4 = 0; index4 < length; index4++) {
          yield start + step * index4;
        }
      }
      var Private;
      (function(Private2) {
        function rangeLength(start, stop, step) {
          if (step === 0) {
            return Infinity;
          }
          if (start > stop && step > 0) {
            return 0;
          }
          if (start < stop && step < 0) {
            return 0;
          }
          return Math.ceil((stop - start) / step);
        }
        Private2.rangeLength = rangeLength;
      })(Private || (Private = {}));
      function reduce2(object, fn, initial) {
        const it = object[Symbol.iterator]();
        let index4 = 0;
        let first2 = it.next();
        if (first2.done && initial === void 0) {
          throw new TypeError("Reduce of empty iterable with no initial value.");
        }
        if (first2.done) {
          return initial;
        }
        let second = it.next();
        if (second.done && initial === void 0) {
          return first2.value;
        }
        if (second.done) {
          return fn(initial, first2.value, index4++);
        }
        let accumulator;
        if (initial === void 0) {
          accumulator = fn(first2.value, second.value, index4++);
        } else {
          accumulator = fn(fn(initial, first2.value, index4++), second.value, index4++);
        }
        let next;
        while (!(next = it.next()).done) {
          accumulator = fn(accumulator, next.value, index4++);
        }
        return accumulator;
      }
      function* repeat2(value, count2) {
        while (0 < count2--) {
          yield value;
        }
      }
      function* once(value) {
        yield value;
      }
      function* retro(object) {
        if (typeof object.retro === "function") {
          yield* object.retro();
        } else {
          for (let index4 = object.length - 1; index4 > -1; index4--) {
            yield object[index4];
          }
        }
      }
      function topologicSort(edges) {
        let sorted = [];
        let visited = /* @__PURE__ */ new Set();
        let graph = /* @__PURE__ */ new Map();
        for (const edge of edges) {
          addEdge(edge);
        }
        for (const [k] of graph) {
          visit3(k);
        }
        return sorted;
        function addEdge(edge) {
          let [fromNode, toNode3] = edge;
          let children = graph.get(toNode3);
          if (children) {
            children.push(fromNode);
          } else {
            graph.set(toNode3, [fromNode]);
          }
        }
        function visit3(node3) {
          if (visited.has(node3)) {
            return;
          }
          visited.add(node3);
          let children = graph.get(node3);
          if (children) {
            for (const child of children) {
              visit3(child);
            }
          }
          sorted.push(node3);
        }
      }
      function* stride(object, step) {
        let count2 = 0;
        for (const value of object) {
          if (0 === count2++ % step) {
            yield value;
          }
        }
      }
      exports3.StringExt = void 0;
      (function(StringExt) {
        function findIndices(source2, query, start = 0) {
          let indices = new Array(query.length);
          for (let i2 = 0, j = start, n = query.length; i2 < n; ++i2, ++j) {
            j = source2.indexOf(query[i2], j);
            if (j === -1) {
              return null;
            }
            indices[i2] = j;
          }
          return indices;
        }
        StringExt.findIndices = findIndices;
        function matchSumOfSquares(source2, query, start = 0) {
          let indices = findIndices(source2, query, start);
          if (!indices) {
            return null;
          }
          let score = 0;
          for (let i2 = 0, n = indices.length; i2 < n; ++i2) {
            let j = indices[i2] - start;
            score += j * j;
          }
          return { score, indices };
        }
        StringExt.matchSumOfSquares = matchSumOfSquares;
        function matchSumOfDeltas(source2, query, start = 0) {
          let indices = findIndices(source2, query, start);
          if (!indices) {
            return null;
          }
          let score = 0;
          let last = start - 1;
          for (let i2 = 0, n = indices.length; i2 < n; ++i2) {
            let j = indices[i2];
            score += j - last - 1;
            last = j;
          }
          return { score, indices };
        }
        StringExt.matchSumOfDeltas = matchSumOfDeltas;
        function highlight(source2, indices, fn) {
          let result = [];
          let k = 0;
          let last = 0;
          let n = indices.length;
          while (k < n) {
            let i2 = indices[k];
            let j = indices[k];
            while (++k < n && indices[k] === j + 1) {
              j++;
            }
            if (last < i2) {
              result.push(source2.slice(last, i2));
            }
            if (i2 < j + 1) {
              result.push(fn(source2.slice(i2, j + 1)));
            }
            last = j + 1;
          }
          if (last < source2.length) {
            result.push(source2.slice(last));
          }
          return result;
        }
        StringExt.highlight = highlight;
        function cmp(a2, b) {
          return a2 < b ? -1 : a2 > b ? 1 : 0;
        }
        StringExt.cmp = cmp;
      })(exports3.StringExt || (exports3.StringExt = {}));
      function* take4(object, count2) {
        if (count2 < 1) {
          return;
        }
        const it = object[Symbol.iterator]();
        let item;
        while (0 < count2-- && !(item = it.next()).done) {
          yield item.value;
        }
      }
      function* zip2(...objects) {
        const iters = objects.map((obj) => obj[Symbol.iterator]());
        let tuple = iters.map((it) => it.next());
        for (; every(tuple, (item) => !item.done); tuple = iters.map((it) => it.next())) {
          yield tuple.map((item) => item.value);
        }
      }
      exports3.chain = chain;
      exports3.each = each2;
      exports3.empty = empty4;
      exports3.enumerate = enumerate;
      exports3.every = every;
      exports3.filter = filter6;
      exports3.find = find2;
      exports3.findIndex = findIndex;
      exports3.map = map13;
      exports3.max = max;
      exports3.min = min;
      exports3.minmax = minmax;
      exports3.once = once;
      exports3.range = range;
      exports3.reduce = reduce2;
      exports3.repeat = repeat2;
      exports3.retro = retro;
      exports3.some = some;
      exports3.stride = stride;
      exports3.take = take4;
      exports3.toArray = toArray2;
      exports3.toObject = toObject;
      exports3.topologicSort = topologicSort;
      exports3.zip = zip2;
    }));
  }
});

// ../../node_modules/@lumino/signaling/node_modules/@lumino/coreutils/dist/index.node.js
var require_index_node = __commonJS({
  "../../node_modules/@lumino/signaling/node_modules/@lumino/coreutils/dist/index.node.js"(exports2) {
    "use strict";
    var algorithm = require_dist6();
    exports2.JSONExt = void 0;
    (function(JSONExt) {
      JSONExt.emptyObject = Object.freeze({});
      JSONExt.emptyArray = Object.freeze([]);
      function isPrimitive(value) {
        return value === null || typeof value === "boolean" || typeof value === "number" || typeof value === "string";
      }
      JSONExt.isPrimitive = isPrimitive;
      function isArray2(value) {
        return Array.isArray(value);
      }
      JSONExt.isArray = isArray2;
      function isObject2(value) {
        return !isPrimitive(value) && !isArray2(value);
      }
      JSONExt.isObject = isObject2;
      function deepEqual(first2, second) {
        if (first2 === second) {
          return true;
        }
        if (isPrimitive(first2) || isPrimitive(second)) {
          return false;
        }
        let a1 = isArray2(first2);
        let a2 = isArray2(second);
        if (a1 !== a2) {
          return false;
        }
        if (a1 && a2) {
          return deepArrayEqual(first2, second);
        }
        return deepObjectEqual(first2, second);
      }
      JSONExt.deepEqual = deepEqual;
      function deepCopy(value) {
        if (isPrimitive(value)) {
          return value;
        }
        if (isArray2(value)) {
          return deepArrayCopy(value);
        }
        return deepObjectCopy(value);
      }
      JSONExt.deepCopy = deepCopy;
      function deepArrayEqual(first2, second) {
        if (first2 === second) {
          return true;
        }
        if (first2.length !== second.length) {
          return false;
        }
        for (let i2 = 0, n = first2.length; i2 < n; ++i2) {
          if (!deepEqual(first2[i2], second[i2])) {
            return false;
          }
        }
        return true;
      }
      function deepObjectEqual(first2, second) {
        if (first2 === second) {
          return true;
        }
        for (let key2 in first2) {
          if (first2[key2] !== void 0 && !(key2 in second)) {
            return false;
          }
        }
        for (let key2 in second) {
          if (second[key2] !== void 0 && !(key2 in first2)) {
            return false;
          }
        }
        for (let key2 in first2) {
          let firstValue = first2[key2];
          let secondValue = second[key2];
          if (firstValue === void 0 && secondValue === void 0) {
            continue;
          }
          if (firstValue === void 0 || secondValue === void 0) {
            return false;
          }
          if (!deepEqual(firstValue, secondValue)) {
            return false;
          }
        }
        return true;
      }
      function deepArrayCopy(value) {
        let result = new Array(value.length);
        for (let i2 = 0, n = value.length; i2 < n; ++i2) {
          result[i2] = deepCopy(value[i2]);
        }
        return result;
      }
      function deepObjectCopy(value) {
        let result = {};
        for (let key2 in value) {
          let subvalue = value[key2];
          if (subvalue === void 0) {
            continue;
          }
          result[key2] = deepCopy(subvalue);
        }
        return result;
      }
    })(exports2.JSONExt || (exports2.JSONExt = {}));
    var MimeData = class {
      constructor() {
        this._types = [];
        this._values = [];
      }
      /**
       * Get an array of the MIME types contained within the dataset.
       *
       * @returns A new array of the MIME types, in order of insertion.
       */
      types() {
        return this._types.slice();
      }
      /**
       * Test whether the dataset has an entry for the given type.
       *
       * @param mime - The MIME type of interest.
       *
       * @returns `true` if the dataset contains a value for the given
       *   MIME type, `false` otherwise.
       */
      hasData(mime3) {
        return this._types.indexOf(mime3) !== -1;
      }
      /**
       * Get the data value for the given MIME type.
       *
       * @param mime - The MIME type of interest.
       *
       * @returns The value for the given MIME type, or `undefined` if
       *   the dataset does not contain a value for the type.
       */
      getData(mime3) {
        let i2 = this._types.indexOf(mime3);
        return i2 !== -1 ? this._values[i2] : void 0;
      }
      /**
       * Set the data value for the given MIME type.
       *
       * @param mime - The MIME type of interest.
       *
       * @param data - The data value for the given MIME type.
       *
       * #### Notes
       * This will overwrite any previous entry for the MIME type.
       */
      setData(mime3, data) {
        this.clearData(mime3);
        this._types.push(mime3);
        this._values.push(data);
      }
      /**
       * Remove the data entry for the given MIME type.
       *
       * @param mime - The MIME type of interest.
       *
       * #### Notes
       * This is a no-op if there is no entry for the given MIME type.
       */
      clearData(mime3) {
        let i2 = this._types.indexOf(mime3);
        if (i2 !== -1) {
          this._types.splice(i2, 1);
          this._values.splice(i2, 1);
        }
      }
      /**
       * Remove all data entries from the dataset.
       */
      clear() {
        this._types.length = 0;
        this._values.length = 0;
      }
    };
    var PluginRegistry = class {
      constructor(options = {}) {
        this._application = null;
        this._validatePlugin = () => true;
        this._plugins = /* @__PURE__ */ new Map();
        this._services = /* @__PURE__ */ new Map();
        if (options.validatePlugin) {
          console.info("Plugins may be rejected by the custom validation plugin method.");
          this._validatePlugin = options.validatePlugin;
        }
      }
      /**
       * The application object.
       *
       * It will be provided as first argument to the
       * plugins activation and deactivation functions.
       *
       * It can only be set once.
       *
       * By default, it is `null`.
       */
      get application() {
        return this._application;
      }
      set application(v) {
        if (this._application !== null) {
          throw Error("PluginRegistry.application is already set. It cannot be overridden.");
        }
        this._application = v;
      }
      /**
       * The list of all the deferred plugins.
       */
      get deferredPlugins() {
        return Array.from(this._plugins).filter(([id, plugin5]) => plugin5.autoStart === "defer").map(([id, plugin5]) => id);
      }
      /**
       * Get a plugin description.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns The plugin description.
       */
      getPluginDescription(id) {
        var _a6, _b;
        return (_b = (_a6 = this._plugins.get(id)) === null || _a6 === void 0 ? void 0 : _a6.description) !== null && _b !== void 0 ? _b : "";
      }
      /**
       * Test whether a plugin is registered with the application.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns `true` if the plugin is registered, `false` otherwise.
       */
      hasPlugin(id) {
        return this._plugins.has(id);
      }
      /**
       * Test whether a plugin is activated with the application.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns `true` if the plugin is activated, `false` otherwise.
       */
      isPluginActivated(id) {
        var _a6, _b;
        return (_b = (_a6 = this._plugins.get(id)) === null || _a6 === void 0 ? void 0 : _a6.activated) !== null && _b !== void 0 ? _b : false;
      }
      /**
       * List the IDs of the plugins registered with the application.
       *
       * @returns A new array of the registered plugin IDs.
       */
      listPlugins() {
        return Array.from(this._plugins.keys());
      }
      /**
       * Register a plugin with the application.
       *
       * @param plugin - The plugin to register.
       *
       * #### Notes
       * An error will be thrown if a plugin with the same ID is already
       * registered, or if the plugin has a circular dependency.
       *
       * If the plugin provides a service which has already been provided
       * by another plugin, the new service will override the old service.
       */
      registerPlugin(plugin5) {
        if (this._plugins.has(plugin5.id)) {
          throw new TypeError(`Plugin '${plugin5.id}' is already registered.`);
        }
        if (!this._validatePlugin(plugin5)) {
          throw new Error(`Plugin '${plugin5.id}' is not valid.`);
        }
        const data = Private.createPluginData(plugin5);
        Private.ensureNoCycle(data, this._plugins, this._services);
        if (data.provides) {
          this._services.set(data.provides, data.id);
        }
        this._plugins.set(data.id, data);
      }
      /**
       * Register multiple plugins with the application.
       *
       * @param plugins - The plugins to register.
       *
       * #### Notes
       * This calls `registerPlugin()` for each of the given plugins.
       */
      registerPlugins(plugins3) {
        for (const plugin5 of plugins3) {
          this.registerPlugin(plugin5);
        }
      }
      /**
       * Deregister a plugin with the application.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @param force - Whether to deregister the plugin even if it is active.
       */
      deregisterPlugin(id, force) {
        const plugin5 = this._plugins.get(id);
        if (!plugin5) {
          return;
        }
        if (plugin5.activated && !force) {
          throw new Error(`Plugin '${id}' is still active.`);
        }
        this._plugins.delete(id);
      }
      /**
       * Activate the plugin with the given ID.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns A promise which resolves when the plugin is activated
       *   or rejects with an error if it cannot be activated.
       */
      async activatePlugin(id) {
        const plugin5 = this._plugins.get(id);
        if (!plugin5) {
          throw new ReferenceError(`Plugin '${id}' is not registered.`);
        }
        if (plugin5.activated) {
          return;
        }
        if (plugin5.promise) {
          return plugin5.promise;
        }
        const required = plugin5.requires.map((t2) => this.resolveRequiredService(t2));
        const optional = plugin5.optional.map((t2) => this.resolveOptionalService(t2));
        plugin5.promise = Promise.all([...required, ...optional]).then((services) => plugin5.activate.apply(void 0, [this.application, ...services])).then((service) => {
          plugin5.service = service;
          plugin5.activated = true;
          plugin5.promise = null;
        }).catch((error) => {
          plugin5.promise = null;
          throw error;
        });
        return plugin5.promise;
      }
      /**
       * Activate all the deferred plugins.
       *
       * @returns A promise which will resolve when each plugin is activated
       * or rejects with an error if one cannot be activated.
       */
      async activatePlugins(kind, options = {}) {
        switch (kind) {
          case "defer": {
            const promises = this.deferredPlugins.filter((pluginId) => this._plugins.get(pluginId).autoStart).map((pluginId) => {
              return this.activatePlugin(pluginId);
            });
            await Promise.all(promises);
            break;
          }
          case "startUp": {
            const startups = Private.collectStartupPlugins(this._plugins, options);
            const promises = startups.map(async (id) => {
              try {
                return await this.activatePlugin(id);
              } catch (error) {
                console.error(`Plugin '${id}' failed to activate.`, error);
              }
            });
            await Promise.all(promises);
            break;
          }
        }
      }
      /**
       * Deactivate the plugin and its downstream dependents if and only if the
       * plugin and its dependents all support `deactivate`.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns A list of IDs of downstream plugins deactivated with this one.
       */
      async deactivatePlugin(id) {
        const plugin5 = this._plugins.get(id);
        if (!plugin5) {
          throw new ReferenceError(`Plugin '${id}' is not registered.`);
        }
        if (!plugin5.activated) {
          return [];
        }
        if (!plugin5.deactivate) {
          throw new TypeError(`Plugin '${id}'#deactivate() method missing`);
        }
        const manifest = Private.findDependents(id, this._plugins, this._services);
        const downstream = manifest.map((id2) => this._plugins.get(id2));
        for (const plugin6 of downstream) {
          if (!plugin6.deactivate) {
            throw new TypeError(`Plugin ${plugin6.id}#deactivate() method missing (depends on ${id})`);
          }
        }
        for (const plugin6 of downstream) {
          const services = [...plugin6.requires, ...plugin6.optional].map((service) => {
            const id2 = this._services.get(service);
            return id2 ? this._plugins.get(id2).service : null;
          });
          await plugin6.deactivate(this.application, ...services);
          plugin6.service = null;
          plugin6.activated = false;
        }
        manifest.pop();
        return manifest;
      }
      /**
       * Resolve a required service of a given type.
       *
       * @param token - The token for the service type of interest.
       *
       * @returns A promise which resolves to an instance of the requested
       *   service, or rejects with an error if it cannot be resolved.
       *
       * #### Notes
       * Services are singletons. The same instance will be returned each
       * time a given service token is resolved.
       *
       * If the plugin which provides the service has not been activated,
       * resolving the service will automatically activate the plugin.
       *
       * User code will not typically call this method directly. Instead,
       * the required services for the user's plugins will be resolved
       * automatically when the plugin is activated.
       */
      async resolveRequiredService(token) {
        const id = this._services.get(token);
        if (!id) {
          throw new TypeError(`No provider for: ${token.name}.`);
        }
        const plugin5 = this._plugins.get(id);
        if (!plugin5.activated) {
          await this.activatePlugin(id);
        }
        return plugin5.service;
      }
      /**
       * Resolve an optional service of a given type.
       *
       * @param token - The token for the service type of interest.
       *
       * @returns A promise which resolves to an instance of the requested
       *   service, or `null` if it cannot be resolved.
       *
       * #### Notes
       * Services are singletons. The same instance will be returned each
       * time a given service token is resolved.
       *
       * If the plugin which provides the service has not been activated,
       * resolving the service will automatically activate the plugin.
       *
       * User code will not typically call this method directly. Instead,
       * the optional services for the user's plugins will be resolved
       * automatically when the plugin is activated.
       */
      async resolveOptionalService(token) {
        const id = this._services.get(token);
        if (!id) {
          return null;
        }
        const plugin5 = this._plugins.get(id);
        if (!plugin5.activated) {
          try {
            await this.activatePlugin(id);
          } catch (reason) {
            console.error(reason);
            return null;
          }
        }
        return plugin5.service;
      }
    };
    var Private;
    (function(Private2) {
      class PluginData {
        constructor(plugin5) {
          var _a6, _b, _c, _d2;
          this._activated = false;
          this._promise = null;
          this._service = null;
          this.id = plugin5.id;
          this.description = (_a6 = plugin5.description) !== null && _a6 !== void 0 ? _a6 : "";
          this.activate = plugin5.activate;
          this.deactivate = (_b = plugin5.deactivate) !== null && _b !== void 0 ? _b : null;
          this.provides = (_c = plugin5.provides) !== null && _c !== void 0 ? _c : null;
          this.autoStart = (_d2 = plugin5.autoStart) !== null && _d2 !== void 0 ? _d2 : false;
          this.requires = plugin5.requires ? plugin5.requires.slice() : [];
          this.optional = plugin5.optional ? plugin5.optional.slice() : [];
        }
        /**
         * Whether the plugin has been activated.
         */
        get activated() {
          return this._activated;
        }
        set activated(a2) {
          this._activated = a2;
        }
        /**
         * The resolved service for the plugin, or `null`.
         */
        get service() {
          return this._service;
        }
        set service(s5) {
          this._service = s5;
        }
        /**
         * The pending resolver promise, or `null`.
         */
        get promise() {
          return this._promise;
        }
        set promise(p5) {
          this._promise = p5;
        }
      }
      function createPluginData(plugin5) {
        return new PluginData(plugin5);
      }
      Private2.createPluginData = createPluginData;
      function ensureNoCycle(plugin5, plugins3, services) {
        const dependencies = [...plugin5.requires, ...plugin5.optional];
        const visit3 = (token) => {
          if (token === plugin5.provides) {
            return true;
          }
          const id = services.get(token);
          if (!id) {
            return false;
          }
          const visited = plugins3.get(id);
          const dependencies2 = [...visited.requires, ...visited.optional];
          if (dependencies2.length === 0) {
            return false;
          }
          trace.push(id);
          if (dependencies2.some(visit3)) {
            return true;
          }
          trace.pop();
          return false;
        };
        if (!plugin5.provides || dependencies.length === 0) {
          return;
        }
        const trace = [plugin5.id];
        if (dependencies.some(visit3)) {
          throw new ReferenceError(`Cycle detected: ${trace.join(" -> ")}.`);
        }
      }
      Private2.ensureNoCycle = ensureNoCycle;
      function findDependents(id, plugins3, services) {
        const edges = new Array();
        const add2 = (id2) => {
          const plugin5 = plugins3.get(id2);
          const dependencies = [...plugin5.requires, ...plugin5.optional];
          edges.push(...dependencies.reduce((acc, dep) => {
            const service = services.get(dep);
            if (service) {
              acc.push([id2, service]);
            }
            return acc;
          }, []));
        };
        for (const id2 of plugins3.keys()) {
          add2(id2);
        }
        const newEdges = edges.filter((edge) => edge[1] === id);
        let oldSize = 0;
        while (newEdges.length > oldSize) {
          const previousSize = newEdges.length;
          const packagesOfInterest = new Set(newEdges.map((edge) => edge[0]));
          for (const poi of packagesOfInterest) {
            edges.filter((edge) => edge[1] === poi).forEach((edge) => {
              if (!newEdges.includes(edge)) {
                newEdges.push(edge);
              }
            });
          }
          oldSize = previousSize;
        }
        const sorted = algorithm.topologicSort(newEdges);
        const index4 = sorted.findIndex((candidate) => candidate === id);
        if (index4 === -1) {
          return [id];
        }
        return sorted.slice(0, index4 + 1);
      }
      Private2.findDependents = findDependents;
      function collectStartupPlugins(plugins3, options) {
        const collection = /* @__PURE__ */ new Set();
        for (const id of plugins3.keys()) {
          if (plugins3.get(id).autoStart === true) {
            collection.add(id);
          }
        }
        if (options.startPlugins) {
          for (const id of options.startPlugins) {
            collection.add(id);
          }
        }
        if (options.ignorePlugins) {
          for (const id of options.ignorePlugins) {
            collection.delete(id);
          }
        }
        return Array.from(collection);
      }
      Private2.collectStartupPlugins = collectStartupPlugins;
    })(Private || (Private = {}));
    var PromiseDelegate = class {
      /**
       * Construct a new promise delegate.
       */
      constructor() {
        this.promise = new Promise((resolve9, reject) => {
          this._resolve = resolve9;
          this._reject = reject;
        });
      }
      /**
       * Resolve the wrapped promise with the given value.
       *
       * @param value - The value to use for resolving the promise.
       */
      resolve(value) {
        let resolve9 = this._resolve;
        resolve9(value);
      }
      /**
       * Reject the wrapped promise with the given value.
       *
       * @reason - The reason for rejecting the promise.
       */
      reject(reason) {
        let reject = this._reject;
        reject(reason);
      }
    };
    var Token2 = class {
      /**
       * Construct a new token.
       *
       * @param name - A human readable name for the token.
       * @param description - Token purpose description for documentation.
       */
      constructor(name3, description) {
        this.name = name3;
        this.description = description !== null && description !== void 0 ? description : "";
        this._tokenStructuralPropertyT = null;
      }
    };
    function fallbackRandomValues(buffer2) {
      let value = 0;
      for (let i2 = 0, n = buffer2.length; i2 < n; ++i2) {
        if (i2 % 4 === 0) {
          value = Math.random() * 4294967295 >>> 0;
        }
        buffer2[i2] = value & 255;
        value >>>= 8;
      }
    }
    exports2.Random = void 0;
    (function(Random) {
      Random.getRandomValues = (() => {
        const crypto4 = typeof require !== "undefined" && require("crypto") || null;
        if (crypto4 && typeof crypto4.randomFillSync === "function") {
          return function getRandomValues(buffer2) {
            return crypto4.randomFillSync(buffer2);
          };
        }
        if (crypto4 && typeof crypto4.randomBytes === "function") {
          return function getRandomValues(buffer2) {
            let bytes = crypto4.randomBytes(buffer2.length);
            for (let i2 = 0, n = bytes.length; i2 < n; ++i2) {
              buffer2[i2] = bytes[i2];
            }
          };
        }
        return fallbackRandomValues;
      })();
    })(exports2.Random || (exports2.Random = {}));
    function uuid4Factory(getRandomValues) {
      const bytes = new Uint8Array(16);
      const lut = new Array(256);
      for (let i2 = 0; i2 < 16; ++i2) {
        lut[i2] = "0" + i2.toString(16);
      }
      for (let i2 = 16; i2 < 256; ++i2) {
        lut[i2] = i2.toString(16);
      }
      return function uuid4() {
        getRandomValues(bytes);
        bytes[6] = 64 | bytes[6] & 15;
        bytes[8] = 128 | bytes[8] & 63;
        return lut[bytes[0]] + lut[bytes[1]] + lut[bytes[2]] + lut[bytes[3]] + "-" + lut[bytes[4]] + lut[bytes[5]] + "-" + lut[bytes[6]] + lut[bytes[7]] + "-" + lut[bytes[8]] + lut[bytes[9]] + "-" + lut[bytes[10]] + lut[bytes[11]] + lut[bytes[12]] + lut[bytes[13]] + lut[bytes[14]] + lut[bytes[15]];
      };
    }
    exports2.UUID = void 0;
    (function(UUID) {
      UUID.uuid4 = uuid4Factory(exports2.Random.getRandomValues);
    })(exports2.UUID || (exports2.UUID = {}));
    exports2.MimeData = MimeData;
    exports2.PluginRegistry = PluginRegistry;
    exports2.PromiseDelegate = PromiseDelegate;
    exports2.Token = Token2;
  }
});

// ../../node_modules/@lumino/signaling/dist/index.js
var require_dist7 = __commonJS({
  "../../node_modules/@lumino/signaling/dist/index.js"(exports2, module2) {
    (function(global2, factory) {
      typeof exports2 === "object" && typeof module2 !== "undefined" ? factory(exports2, require_dist6(), require_index_node()) : typeof define === "function" && define.amd ? define(["exports", "@lumino/algorithm", "@lumino/coreutils"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.lumino_signaling = {}, global2.lumino_algorithm, global2.lumino_coreutils));
    })(exports2, (function(exports3, algorithm, coreutils) {
      "use strict";
      class Signal {
        /**
         * Construct a new signal.
         *
         * @param sender - The sender which owns the signal.
         */
        constructor(sender) {
          this.sender = sender;
        }
        /**
         * Connect a slot to the signal.
         *
         * @param slot - The slot to invoke when the signal is emitted.
         *
         * @param thisArg - The `this` context for the slot. If provided,
         *   this must be a non-primitive object.
         *
         * @returns `true` if the connection succeeds, `false` otherwise.
         */
        connect(slot, thisArg) {
          return Private.connect(this, slot, thisArg);
        }
        /**
         * Disconnect a slot from the signal.
         *
         * @param slot - The slot to disconnect from the signal.
         *
         * @param thisArg - The `this` context for the slot. If provided,
         *   this must be a non-primitive object.
         *
         * @returns `true` if the connection is removed, `false` otherwise.
         */
        disconnect(slot, thisArg) {
          return Private.disconnect(this, slot, thisArg);
        }
        /**
         * Emit the signal and invoke the connected slots.
         *
         * @param args - The args to pass to the connected slots.
         *
         * #### Notes
         * Slots are invoked synchronously in connection order.
         *
         * Exceptions thrown by connected slots will be caught and logged.
         */
        emit(args) {
          Private.emit(this, args);
        }
      }
      (function(Signal2) {
        function disconnectBetween(sender, receiver) {
          Private.disconnectBetween(sender, receiver);
        }
        Signal2.disconnectBetween = disconnectBetween;
        function disconnectSender(sender) {
          Private.disconnectSender(sender);
        }
        Signal2.disconnectSender = disconnectSender;
        function disconnectReceiver(receiver) {
          Private.disconnectReceiver(receiver);
        }
        Signal2.disconnectReceiver = disconnectReceiver;
        function disconnectAll(object) {
          Private.disconnectAll(object);
        }
        Signal2.disconnectAll = disconnectAll;
        function clearData(object) {
          Private.disconnectAll(object);
        }
        Signal2.clearData = clearData;
        function getExceptionHandler() {
          return Private.exceptionHandler;
        }
        Signal2.getExceptionHandler = getExceptionHandler;
        function setExceptionHandler(handler) {
          let old = Private.exceptionHandler;
          Private.exceptionHandler = handler;
          return old;
        }
        Signal2.setExceptionHandler = setExceptionHandler;
      })(Signal || (Signal = {}));
      class Stream4 extends Signal {
        constructor() {
          super(...arguments);
          this._pending = new coreutils.PromiseDelegate();
        }
        /**
         * Return an async iterator that yields every emission.
         */
        async *[Symbol.asyncIterator]() {
          let pending = this._pending;
          while (true) {
            try {
              const { args, next } = await pending.promise;
              pending = next;
              yield args;
            } catch (_2) {
              return;
            }
          }
        }
        /**
         * Emit the signal, invoke the connected slots, and yield the emission.
         *
         * @param args - The args to pass to the connected slots.
         */
        emit(args) {
          const pending = this._pending;
          const next = this._pending = new coreutils.PromiseDelegate();
          pending.resolve({ args, next });
          super.emit(args);
        }
        /**
         * Stop the stream's async iteration.
         */
        stop() {
          this._pending.promise.catch(() => void 0);
          this._pending.reject("stop");
          this._pending = new coreutils.PromiseDelegate();
        }
      }
      var Private;
      (function(Private2) {
        Private2.exceptionHandler = (err) => {
          console.error(err);
        };
        function connect(signal, slot, thisArg) {
          thisArg = thisArg || void 0;
          let receivers = receiversForSender.get(signal.sender);
          if (!receivers) {
            receivers = [];
            receiversForSender.set(signal.sender, receivers);
          }
          if (findConnection(receivers, signal, slot, thisArg)) {
            return false;
          }
          let receiver = thisArg || slot;
          let senders = sendersForReceiver.get(receiver);
          if (!senders) {
            senders = [];
            sendersForReceiver.set(receiver, senders);
          }
          let connection = { signal, slot, thisArg };
          receivers.push(connection);
          senders.push(connection);
          return true;
        }
        Private2.connect = connect;
        function disconnect(signal, slot, thisArg) {
          thisArg = thisArg || void 0;
          let receivers = receiversForSender.get(signal.sender);
          if (!receivers || receivers.length === 0) {
            return false;
          }
          let connection = findConnection(receivers, signal, slot, thisArg);
          if (!connection) {
            return false;
          }
          let receiver = thisArg || slot;
          let senders = sendersForReceiver.get(receiver);
          connection.signal = null;
          scheduleCleanup(receivers);
          scheduleCleanup(senders);
          return true;
        }
        Private2.disconnect = disconnect;
        function disconnectBetween(sender, receiver) {
          let receivers = receiversForSender.get(sender);
          if (!receivers || receivers.length === 0) {
            return;
          }
          let senders = sendersForReceiver.get(receiver);
          if (!senders || senders.length === 0) {
            return;
          }
          for (const connection of senders) {
            if (!connection.signal) {
              continue;
            }
            if (connection.signal.sender === sender) {
              connection.signal = null;
            }
          }
          scheduleCleanup(receivers);
          scheduleCleanup(senders);
        }
        Private2.disconnectBetween = disconnectBetween;
        function disconnectSender(sender) {
          let receivers = receiversForSender.get(sender);
          if (!receivers || receivers.length === 0) {
            return;
          }
          for (const connection of receivers) {
            if (!connection.signal) {
              continue;
            }
            let receiver = connection.thisArg || connection.slot;
            connection.signal = null;
            scheduleCleanup(sendersForReceiver.get(receiver));
          }
          scheduleCleanup(receivers);
        }
        Private2.disconnectSender = disconnectSender;
        function disconnectReceiver(receiver) {
          let senders = sendersForReceiver.get(receiver);
          if (!senders || senders.length === 0) {
            return;
          }
          for (const connection of senders) {
            if (!connection.signal) {
              continue;
            }
            let sender = connection.signal.sender;
            connection.signal = null;
            scheduleCleanup(receiversForSender.get(sender));
          }
          scheduleCleanup(senders);
        }
        Private2.disconnectReceiver = disconnectReceiver;
        function disconnectAll(object) {
          disconnectSender(object);
          disconnectReceiver(object);
        }
        Private2.disconnectAll = disconnectAll;
        function emit(signal, args) {
          let receivers = receiversForSender.get(signal.sender);
          if (!receivers || receivers.length === 0) {
            return;
          }
          for (let i2 = 0, n = receivers.length; i2 < n; ++i2) {
            let connection = receivers[i2];
            if (connection.signal === signal) {
              invokeSlot(connection, args);
            }
          }
        }
        Private2.emit = emit;
        const receiversForSender = /* @__PURE__ */ new WeakMap();
        const sendersForReceiver = /* @__PURE__ */ new WeakMap();
        const dirtySet = /* @__PURE__ */ new Set();
        const schedule = (() => {
          let ok3 = typeof requestAnimationFrame === "function";
          return ok3 ? requestAnimationFrame : setImmediate;
        })();
        function findConnection(connections, signal, slot, thisArg) {
          return algorithm.find(connections, (connection) => connection.signal === signal && connection.slot === slot && connection.thisArg === thisArg);
        }
        function invokeSlot(connection, args) {
          let { signal, slot, thisArg } = connection;
          try {
            slot.call(thisArg, signal.sender, args);
          } catch (err) {
            Private2.exceptionHandler(err);
          }
        }
        function scheduleCleanup(array) {
          if (dirtySet.size === 0) {
            schedule(cleanupDirtySet);
          }
          dirtySet.add(array);
        }
        function cleanupDirtySet() {
          dirtySet.forEach(cleanupConnections);
          dirtySet.clear();
        }
        function cleanupConnections(connections) {
          algorithm.ArrayExt.removeAllWhere(connections, isDeadConnection);
        }
        function isDeadConnection(connection) {
          return connection.signal === null;
        }
      })(Private || (Private = {}));
      exports3.Signal = Signal;
      exports3.Stream = Stream4;
    }));
  }
});

// ../../node_modules/@jupyterlab/coreutils/lib/activitymonitor.js
var require_activitymonitor = __commonJS({
  "../../node_modules/@jupyterlab/coreutils/lib/activitymonitor.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ActivityMonitor = void 0;
    var signaling_1 = require_dist7();
    var ActivityMonitor = class {
      /**
       * Construct a new activity monitor.
       */
      constructor(options) {
        this._timer = -1;
        this._timeout = -1;
        this._isDisposed = false;
        this._activityStopped = new signaling_1.Signal(this);
        options.signal.connect(this._onSignalFired, this);
        this._timeout = options.timeout || 1e3;
      }
      /**
       * A signal emitted when activity has ceased.
       */
      get activityStopped() {
        return this._activityStopped;
      }
      /**
       * The timeout associated with the monitor, in milliseconds.
       */
      get timeout() {
        return this._timeout;
      }
      set timeout(value) {
        this._timeout = value;
      }
      /**
       * Test whether the monitor has been disposed.
       *
       * #### Notes
       * This is a read-only property.
       */
      get isDisposed() {
        return this._isDisposed;
      }
      /**
       * Dispose of the resources used by the activity monitor.
       */
      dispose() {
        if (this._isDisposed) {
          return;
        }
        this._isDisposed = true;
        signaling_1.Signal.clearData(this);
      }
      /**
       * A signal handler for the monitored signal.
       */
      _onSignalFired(sender, args) {
        clearTimeout(this._timer);
        this._sender = sender;
        this._args = args;
        this._timer = setTimeout(() => {
          this._activityStopped.emit({
            sender: this._sender,
            args: this._args
          });
        }, this._timeout);
      }
    };
    exports2.ActivityMonitor = ActivityMonitor;
  }
});

// ../../node_modules/@jupyterlab/coreutils/lib/interfaces.js
var require_interfaces = __commonJS({
  "../../node_modules/@jupyterlab/coreutils/lib/interfaces.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
  }
});

// ../../node_modules/@jupyterlab/coreutils/lib/lru.js
var require_lru = __commonJS({
  "../../node_modules/@jupyterlab/coreutils/lib/lru.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.LruCache = void 0;
    var DEFAULT_MAX_SIZE = 128;
    var LruCache = class {
      constructor(options = {}) {
        this._map = /* @__PURE__ */ new Map();
        this._maxSize = (options === null || options === void 0 ? void 0 : options.maxSize) || DEFAULT_MAX_SIZE;
      }
      /**
       * Return the current size of the cache.
       */
      get size() {
        return this._map.size;
      }
      /**
       * Clear the values in the cache.
       */
      clear() {
        this._map.clear();
      }
      /**
       * Get a value (or null) from the cache, pushing the item to the front of the cache.
       */
      get(key2) {
        const item = this._map.get(key2) || null;
        if (item != null) {
          this._map.delete(key2);
          this._map.set(key2, item);
        }
        return item;
      }
      /**
       * Set a value in the cache, potentially evicting an old item.
       */
      set(key2, value) {
        if (this._map.size >= this._maxSize) {
          this._map.delete(this._map.keys().next().value);
        }
        this._map.set(key2, value);
      }
    };
    exports2.LruCache = LruCache;
  }
});

// ../../node_modules/@jupyterlab/coreutils/lib/markdowncodeblocks.js
var require_markdowncodeblocks = __commonJS({
  "../../node_modules/@jupyterlab/coreutils/lib/markdowncodeblocks.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.MarkdownCodeBlocks = void 0;
    var MarkdownCodeBlocks;
    (function(MarkdownCodeBlocks2) {
      MarkdownCodeBlocks2.CODE_BLOCK_MARKER = "```";
      const markdownExtensions = [
        ".markdown",
        ".mdown",
        ".mkdn",
        ".md",
        ".mkd",
        ".mdwn",
        ".mdtxt",
        ".mdtext",
        ".text",
        ".txt",
        ".Rmd"
      ];
      class MarkdownCodeBlock {
        constructor(startLine) {
          this.startLine = startLine;
          this.code = "";
          this.endLine = -1;
        }
      }
      MarkdownCodeBlocks2.MarkdownCodeBlock = MarkdownCodeBlock;
      function isMarkdown(extension) {
        return markdownExtensions.indexOf(extension) > -1;
      }
      MarkdownCodeBlocks2.isMarkdown = isMarkdown;
      function findMarkdownCodeBlocks(text7) {
        if (!text7 || text7 === "") {
          return [];
        }
        const lines = text7.split("\n");
        const codeBlocks = [];
        let currentBlock = null;
        for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
          const line2 = lines[lineIndex];
          const lineContainsMarker = line2.indexOf(MarkdownCodeBlocks2.CODE_BLOCK_MARKER) === 0;
          const constructingBlock = currentBlock != null;
          if (!lineContainsMarker && !constructingBlock) {
            continue;
          }
          if (!constructingBlock) {
            currentBlock = new MarkdownCodeBlock(lineIndex);
            const firstIndex = line2.indexOf(MarkdownCodeBlocks2.CODE_BLOCK_MARKER);
            const lastIndex = line2.lastIndexOf(MarkdownCodeBlocks2.CODE_BLOCK_MARKER);
            const isSingleLine = firstIndex !== lastIndex;
            if (isSingleLine) {
              currentBlock.code = line2.substring(firstIndex + MarkdownCodeBlocks2.CODE_BLOCK_MARKER.length, lastIndex);
              currentBlock.endLine = lineIndex;
              codeBlocks.push(currentBlock);
              currentBlock = null;
            }
          } else if (currentBlock) {
            if (lineContainsMarker) {
              currentBlock.endLine = lineIndex - 1;
              codeBlocks.push(currentBlock);
              currentBlock = null;
            } else {
              currentBlock.code += line2 + "\n";
            }
          }
        }
        return codeBlocks;
      }
      MarkdownCodeBlocks2.findMarkdownCodeBlocks = findMarkdownCodeBlocks;
    })(MarkdownCodeBlocks || (exports2.MarkdownCodeBlocks = MarkdownCodeBlocks = {}));
  }
});

// ../../node_modules/@jupyterlab/coreutils/node_modules/@lumino/coreutils/dist/index.node.js
var require_index_node2 = __commonJS({
  "../../node_modules/@jupyterlab/coreutils/node_modules/@lumino/coreutils/dist/index.node.js"(exports2) {
    "use strict";
    var algorithm = require_dist6();
    exports2.JSONExt = void 0;
    (function(JSONExt) {
      JSONExt.emptyObject = Object.freeze({});
      JSONExt.emptyArray = Object.freeze([]);
      function isPrimitive(value) {
        return value === null || typeof value === "boolean" || typeof value === "number" || typeof value === "string";
      }
      JSONExt.isPrimitive = isPrimitive;
      function isArray2(value) {
        return Array.isArray(value);
      }
      JSONExt.isArray = isArray2;
      function isObject2(value) {
        return !isPrimitive(value) && !isArray2(value);
      }
      JSONExt.isObject = isObject2;
      function deepEqual(first2, second) {
        if (first2 === second) {
          return true;
        }
        if (isPrimitive(first2) || isPrimitive(second)) {
          return false;
        }
        let a1 = isArray2(first2);
        let a2 = isArray2(second);
        if (a1 !== a2) {
          return false;
        }
        if (a1 && a2) {
          return deepArrayEqual(first2, second);
        }
        return deepObjectEqual(first2, second);
      }
      JSONExt.deepEqual = deepEqual;
      function deepCopy(value) {
        if (isPrimitive(value)) {
          return value;
        }
        if (isArray2(value)) {
          return deepArrayCopy(value);
        }
        return deepObjectCopy(value);
      }
      JSONExt.deepCopy = deepCopy;
      function deepArrayEqual(first2, second) {
        if (first2 === second) {
          return true;
        }
        if (first2.length !== second.length) {
          return false;
        }
        for (let i2 = 0, n = first2.length; i2 < n; ++i2) {
          if (!deepEqual(first2[i2], second[i2])) {
            return false;
          }
        }
        return true;
      }
      function deepObjectEqual(first2, second) {
        if (first2 === second) {
          return true;
        }
        for (let key2 in first2) {
          if (first2[key2] !== void 0 && !(key2 in second)) {
            return false;
          }
        }
        for (let key2 in second) {
          if (second[key2] !== void 0 && !(key2 in first2)) {
            return false;
          }
        }
        for (let key2 in first2) {
          let firstValue = first2[key2];
          let secondValue = second[key2];
          if (firstValue === void 0 && secondValue === void 0) {
            continue;
          }
          if (firstValue === void 0 || secondValue === void 0) {
            return false;
          }
          if (!deepEqual(firstValue, secondValue)) {
            return false;
          }
        }
        return true;
      }
      function deepArrayCopy(value) {
        let result = new Array(value.length);
        for (let i2 = 0, n = value.length; i2 < n; ++i2) {
          result[i2] = deepCopy(value[i2]);
        }
        return result;
      }
      function deepObjectCopy(value) {
        let result = {};
        for (let key2 in value) {
          let subvalue = value[key2];
          if (subvalue === void 0) {
            continue;
          }
          result[key2] = deepCopy(subvalue);
        }
        return result;
      }
    })(exports2.JSONExt || (exports2.JSONExt = {}));
    var MimeData = class {
      constructor() {
        this._types = [];
        this._values = [];
      }
      /**
       * Get an array of the MIME types contained within the dataset.
       *
       * @returns A new array of the MIME types, in order of insertion.
       */
      types() {
        return this._types.slice();
      }
      /**
       * Test whether the dataset has an entry for the given type.
       *
       * @param mime - The MIME type of interest.
       *
       * @returns `true` if the dataset contains a value for the given
       *   MIME type, `false` otherwise.
       */
      hasData(mime3) {
        return this._types.indexOf(mime3) !== -1;
      }
      /**
       * Get the data value for the given MIME type.
       *
       * @param mime - The MIME type of interest.
       *
       * @returns The value for the given MIME type, or `undefined` if
       *   the dataset does not contain a value for the type.
       */
      getData(mime3) {
        let i2 = this._types.indexOf(mime3);
        return i2 !== -1 ? this._values[i2] : void 0;
      }
      /**
       * Set the data value for the given MIME type.
       *
       * @param mime - The MIME type of interest.
       *
       * @param data - The data value for the given MIME type.
       *
       * #### Notes
       * This will overwrite any previous entry for the MIME type.
       */
      setData(mime3, data) {
        this.clearData(mime3);
        this._types.push(mime3);
        this._values.push(data);
      }
      /**
       * Remove the data entry for the given MIME type.
       *
       * @param mime - The MIME type of interest.
       *
       * #### Notes
       * This is a no-op if there is no entry for the given MIME type.
       */
      clearData(mime3) {
        let i2 = this._types.indexOf(mime3);
        if (i2 !== -1) {
          this._types.splice(i2, 1);
          this._values.splice(i2, 1);
        }
      }
      /**
       * Remove all data entries from the dataset.
       */
      clear() {
        this._types.length = 0;
        this._values.length = 0;
      }
    };
    var PluginRegistry = class {
      constructor(options = {}) {
        this._application = null;
        this._validatePlugin = () => true;
        this._plugins = /* @__PURE__ */ new Map();
        this._services = /* @__PURE__ */ new Map();
        if (options.validatePlugin) {
          console.info("Plugins may be rejected by the custom validation plugin method.");
          this._validatePlugin = options.validatePlugin;
        }
      }
      /**
       * The application object.
       *
       * It will be provided as first argument to the
       * plugins activation and deactivation functions.
       *
       * It can only be set once.
       *
       * By default, it is `null`.
       */
      get application() {
        return this._application;
      }
      set application(v) {
        if (this._application !== null) {
          throw Error("PluginRegistry.application is already set. It cannot be overridden.");
        }
        this._application = v;
      }
      /**
       * The list of all the deferred plugins.
       */
      get deferredPlugins() {
        return Array.from(this._plugins).filter(([id, plugin5]) => plugin5.autoStart === "defer").map(([id, plugin5]) => id);
      }
      /**
       * Get a plugin description.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns The plugin description.
       */
      getPluginDescription(id) {
        var _a6, _b;
        return (_b = (_a6 = this._plugins.get(id)) === null || _a6 === void 0 ? void 0 : _a6.description) !== null && _b !== void 0 ? _b : "";
      }
      /**
       * Test whether a plugin is registered with the application.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns `true` if the plugin is registered, `false` otherwise.
       */
      hasPlugin(id) {
        return this._plugins.has(id);
      }
      /**
       * Test whether a plugin is activated with the application.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns `true` if the plugin is activated, `false` otherwise.
       */
      isPluginActivated(id) {
        var _a6, _b;
        return (_b = (_a6 = this._plugins.get(id)) === null || _a6 === void 0 ? void 0 : _a6.activated) !== null && _b !== void 0 ? _b : false;
      }
      /**
       * List the IDs of the plugins registered with the application.
       *
       * @returns A new array of the registered plugin IDs.
       */
      listPlugins() {
        return Array.from(this._plugins.keys());
      }
      /**
       * Register a plugin with the application.
       *
       * @param plugin - The plugin to register.
       *
       * #### Notes
       * An error will be thrown if a plugin with the same ID is already
       * registered, or if the plugin has a circular dependency.
       *
       * If the plugin provides a service which has already been provided
       * by another plugin, the new service will override the old service.
       */
      registerPlugin(plugin5) {
        if (this._plugins.has(plugin5.id)) {
          throw new TypeError(`Plugin '${plugin5.id}' is already registered.`);
        }
        if (!this._validatePlugin(plugin5)) {
          throw new Error(`Plugin '${plugin5.id}' is not valid.`);
        }
        const data = Private.createPluginData(plugin5);
        Private.ensureNoCycle(data, this._plugins, this._services);
        if (data.provides) {
          this._services.set(data.provides, data.id);
        }
        this._plugins.set(data.id, data);
      }
      /**
       * Register multiple plugins with the application.
       *
       * @param plugins - The plugins to register.
       *
       * #### Notes
       * This calls `registerPlugin()` for each of the given plugins.
       */
      registerPlugins(plugins3) {
        for (const plugin5 of plugins3) {
          this.registerPlugin(plugin5);
        }
      }
      /**
       * Deregister a plugin with the application.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @param force - Whether to deregister the plugin even if it is active.
       */
      deregisterPlugin(id, force) {
        const plugin5 = this._plugins.get(id);
        if (!plugin5) {
          return;
        }
        if (plugin5.activated && !force) {
          throw new Error(`Plugin '${id}' is still active.`);
        }
        this._plugins.delete(id);
      }
      /**
       * Activate the plugin with the given ID.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns A promise which resolves when the plugin is activated
       *   or rejects with an error if it cannot be activated.
       */
      async activatePlugin(id) {
        const plugin5 = this._plugins.get(id);
        if (!plugin5) {
          throw new ReferenceError(`Plugin '${id}' is not registered.`);
        }
        if (plugin5.activated) {
          return;
        }
        if (plugin5.promise) {
          return plugin5.promise;
        }
        const required = plugin5.requires.map((t2) => this.resolveRequiredService(t2));
        const optional = plugin5.optional.map((t2) => this.resolveOptionalService(t2));
        plugin5.promise = Promise.all([...required, ...optional]).then((services) => plugin5.activate.apply(void 0, [this.application, ...services])).then((service) => {
          plugin5.service = service;
          plugin5.activated = true;
          plugin5.promise = null;
        }).catch((error) => {
          plugin5.promise = null;
          throw error;
        });
        return plugin5.promise;
      }
      /**
       * Activate all the deferred plugins.
       *
       * @returns A promise which will resolve when each plugin is activated
       * or rejects with an error if one cannot be activated.
       */
      async activatePlugins(kind, options = {}) {
        switch (kind) {
          case "defer": {
            const promises = this.deferredPlugins.filter((pluginId) => this._plugins.get(pluginId).autoStart).map((pluginId) => {
              return this.activatePlugin(pluginId);
            });
            await Promise.all(promises);
            break;
          }
          case "startUp": {
            const startups = Private.collectStartupPlugins(this._plugins, options);
            const promises = startups.map(async (id) => {
              try {
                return await this.activatePlugin(id);
              } catch (error) {
                console.error(`Plugin '${id}' failed to activate.`, error);
              }
            });
            await Promise.all(promises);
            break;
          }
        }
      }
      /**
       * Deactivate the plugin and its downstream dependents if and only if the
       * plugin and its dependents all support `deactivate`.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns A list of IDs of downstream plugins deactivated with this one.
       */
      async deactivatePlugin(id) {
        const plugin5 = this._plugins.get(id);
        if (!plugin5) {
          throw new ReferenceError(`Plugin '${id}' is not registered.`);
        }
        if (!plugin5.activated) {
          return [];
        }
        if (!plugin5.deactivate) {
          throw new TypeError(`Plugin '${id}'#deactivate() method missing`);
        }
        const manifest = Private.findDependents(id, this._plugins, this._services);
        const downstream = manifest.map((id2) => this._plugins.get(id2));
        for (const plugin6 of downstream) {
          if (!plugin6.deactivate) {
            throw new TypeError(`Plugin ${plugin6.id}#deactivate() method missing (depends on ${id})`);
          }
        }
        for (const plugin6 of downstream) {
          const services = [...plugin6.requires, ...plugin6.optional].map((service) => {
            const id2 = this._services.get(service);
            return id2 ? this._plugins.get(id2).service : null;
          });
          await plugin6.deactivate(this.application, ...services);
          plugin6.service = null;
          plugin6.activated = false;
        }
        manifest.pop();
        return manifest;
      }
      /**
       * Resolve a required service of a given type.
       *
       * @param token - The token for the service type of interest.
       *
       * @returns A promise which resolves to an instance of the requested
       *   service, or rejects with an error if it cannot be resolved.
       *
       * #### Notes
       * Services are singletons. The same instance will be returned each
       * time a given service token is resolved.
       *
       * If the plugin which provides the service has not been activated,
       * resolving the service will automatically activate the plugin.
       *
       * User code will not typically call this method directly. Instead,
       * the required services for the user's plugins will be resolved
       * automatically when the plugin is activated.
       */
      async resolveRequiredService(token) {
        const id = this._services.get(token);
        if (!id) {
          throw new TypeError(`No provider for: ${token.name}.`);
        }
        const plugin5 = this._plugins.get(id);
        if (!plugin5.activated) {
          await this.activatePlugin(id);
        }
        return plugin5.service;
      }
      /**
       * Resolve an optional service of a given type.
       *
       * @param token - The token for the service type of interest.
       *
       * @returns A promise which resolves to an instance of the requested
       *   service, or `null` if it cannot be resolved.
       *
       * #### Notes
       * Services are singletons. The same instance will be returned each
       * time a given service token is resolved.
       *
       * If the plugin which provides the service has not been activated,
       * resolving the service will automatically activate the plugin.
       *
       * User code will not typically call this method directly. Instead,
       * the optional services for the user's plugins will be resolved
       * automatically when the plugin is activated.
       */
      async resolveOptionalService(token) {
        const id = this._services.get(token);
        if (!id) {
          return null;
        }
        const plugin5 = this._plugins.get(id);
        if (!plugin5.activated) {
          try {
            await this.activatePlugin(id);
          } catch (reason) {
            console.error(reason);
            return null;
          }
        }
        return plugin5.service;
      }
    };
    var Private;
    (function(Private2) {
      class PluginData {
        constructor(plugin5) {
          var _a6, _b, _c, _d2;
          this._activated = false;
          this._promise = null;
          this._service = null;
          this.id = plugin5.id;
          this.description = (_a6 = plugin5.description) !== null && _a6 !== void 0 ? _a6 : "";
          this.activate = plugin5.activate;
          this.deactivate = (_b = plugin5.deactivate) !== null && _b !== void 0 ? _b : null;
          this.provides = (_c = plugin5.provides) !== null && _c !== void 0 ? _c : null;
          this.autoStart = (_d2 = plugin5.autoStart) !== null && _d2 !== void 0 ? _d2 : false;
          this.requires = plugin5.requires ? plugin5.requires.slice() : [];
          this.optional = plugin5.optional ? plugin5.optional.slice() : [];
        }
        /**
         * Whether the plugin has been activated.
         */
        get activated() {
          return this._activated;
        }
        set activated(a2) {
          this._activated = a2;
        }
        /**
         * The resolved service for the plugin, or `null`.
         */
        get service() {
          return this._service;
        }
        set service(s5) {
          this._service = s5;
        }
        /**
         * The pending resolver promise, or `null`.
         */
        get promise() {
          return this._promise;
        }
        set promise(p5) {
          this._promise = p5;
        }
      }
      function createPluginData(plugin5) {
        return new PluginData(plugin5);
      }
      Private2.createPluginData = createPluginData;
      function ensureNoCycle(plugin5, plugins3, services) {
        const dependencies = [...plugin5.requires, ...plugin5.optional];
        const visit3 = (token) => {
          if (token === plugin5.provides) {
            return true;
          }
          const id = services.get(token);
          if (!id) {
            return false;
          }
          const visited = plugins3.get(id);
          const dependencies2 = [...visited.requires, ...visited.optional];
          if (dependencies2.length === 0) {
            return false;
          }
          trace.push(id);
          if (dependencies2.some(visit3)) {
            return true;
          }
          trace.pop();
          return false;
        };
        if (!plugin5.provides || dependencies.length === 0) {
          return;
        }
        const trace = [plugin5.id];
        if (dependencies.some(visit3)) {
          throw new ReferenceError(`Cycle detected: ${trace.join(" -> ")}.`);
        }
      }
      Private2.ensureNoCycle = ensureNoCycle;
      function findDependents(id, plugins3, services) {
        const edges = new Array();
        const add2 = (id2) => {
          const plugin5 = plugins3.get(id2);
          const dependencies = [...plugin5.requires, ...plugin5.optional];
          edges.push(...dependencies.reduce((acc, dep) => {
            const service = services.get(dep);
            if (service) {
              acc.push([id2, service]);
            }
            return acc;
          }, []));
        };
        for (const id2 of plugins3.keys()) {
          add2(id2);
        }
        const newEdges = edges.filter((edge) => edge[1] === id);
        let oldSize = 0;
        while (newEdges.length > oldSize) {
          const previousSize = newEdges.length;
          const packagesOfInterest = new Set(newEdges.map((edge) => edge[0]));
          for (const poi of packagesOfInterest) {
            edges.filter((edge) => edge[1] === poi).forEach((edge) => {
              if (!newEdges.includes(edge)) {
                newEdges.push(edge);
              }
            });
          }
          oldSize = previousSize;
        }
        const sorted = algorithm.topologicSort(newEdges);
        const index4 = sorted.findIndex((candidate) => candidate === id);
        if (index4 === -1) {
          return [id];
        }
        return sorted.slice(0, index4 + 1);
      }
      Private2.findDependents = findDependents;
      function collectStartupPlugins(plugins3, options) {
        const collection = /* @__PURE__ */ new Set();
        for (const id of plugins3.keys()) {
          if (plugins3.get(id).autoStart === true) {
            collection.add(id);
          }
        }
        if (options.startPlugins) {
          for (const id of options.startPlugins) {
            collection.add(id);
          }
        }
        if (options.ignorePlugins) {
          for (const id of options.ignorePlugins) {
            collection.delete(id);
          }
        }
        return Array.from(collection);
      }
      Private2.collectStartupPlugins = collectStartupPlugins;
    })(Private || (Private = {}));
    var PromiseDelegate = class {
      /**
       * Construct a new promise delegate.
       */
      constructor() {
        this.promise = new Promise((resolve9, reject) => {
          this._resolve = resolve9;
          this._reject = reject;
        });
      }
      /**
       * Resolve the wrapped promise with the given value.
       *
       * @param value - The value to use for resolving the promise.
       */
      resolve(value) {
        let resolve9 = this._resolve;
        resolve9(value);
      }
      /**
       * Reject the wrapped promise with the given value.
       *
       * @reason - The reason for rejecting the promise.
       */
      reject(reason) {
        let reject = this._reject;
        reject(reason);
      }
    };
    var Token2 = class {
      /**
       * Construct a new token.
       *
       * @param name - A human readable name for the token.
       * @param description - Token purpose description for documentation.
       */
      constructor(name3, description) {
        this.name = name3;
        this.description = description !== null && description !== void 0 ? description : "";
        this._tokenStructuralPropertyT = null;
      }
    };
    function fallbackRandomValues(buffer2) {
      let value = 0;
      for (let i2 = 0, n = buffer2.length; i2 < n; ++i2) {
        if (i2 % 4 === 0) {
          value = Math.random() * 4294967295 >>> 0;
        }
        buffer2[i2] = value & 255;
        value >>>= 8;
      }
    }
    exports2.Random = void 0;
    (function(Random) {
      Random.getRandomValues = (() => {
        const crypto4 = typeof require !== "undefined" && require("crypto") || null;
        if (crypto4 && typeof crypto4.randomFillSync === "function") {
          return function getRandomValues(buffer2) {
            return crypto4.randomFillSync(buffer2);
          };
        }
        if (crypto4 && typeof crypto4.randomBytes === "function") {
          return function getRandomValues(buffer2) {
            let bytes = crypto4.randomBytes(buffer2.length);
            for (let i2 = 0, n = bytes.length; i2 < n; ++i2) {
              buffer2[i2] = bytes[i2];
            }
          };
        }
        return fallbackRandomValues;
      })();
    })(exports2.Random || (exports2.Random = {}));
    function uuid4Factory(getRandomValues) {
      const bytes = new Uint8Array(16);
      const lut = new Array(256);
      for (let i2 = 0; i2 < 16; ++i2) {
        lut[i2] = "0" + i2.toString(16);
      }
      for (let i2 = 16; i2 < 256; ++i2) {
        lut[i2] = i2.toString(16);
      }
      return function uuid4() {
        getRandomValues(bytes);
        bytes[6] = 64 | bytes[6] & 15;
        bytes[8] = 128 | bytes[8] & 63;
        return lut[bytes[0]] + lut[bytes[1]] + lut[bytes[2]] + lut[bytes[3]] + "-" + lut[bytes[4]] + lut[bytes[5]] + "-" + lut[bytes[6]] + lut[bytes[7]] + "-" + lut[bytes[8]] + lut[bytes[9]] + "-" + lut[bytes[10]] + lut[bytes[11]] + lut[bytes[12]] + lut[bytes[13]] + lut[bytes[14]] + lut[bytes[15]];
      };
    }
    exports2.UUID = void 0;
    (function(UUID) {
      UUID.uuid4 = uuid4Factory(exports2.Random.getRandomValues);
    })(exports2.UUID || (exports2.UUID = {}));
    exports2.MimeData = MimeData;
    exports2.PluginRegistry = PluginRegistry;
    exports2.PromiseDelegate = PromiseDelegate;
    exports2.Token = Token2;
  }
});

// ../../node_modules/requires-port/index.js
var require_requires_port = __commonJS({
  "../../node_modules/requires-port/index.js"(exports2, module2) {
    "use strict";
    module2.exports = function required(port, protocol) {
      protocol = protocol.split(":")[0];
      port = +port;
      if (!port) return false;
      switch (protocol) {
        case "http":
        case "ws":
          return port !== 80;
        case "https":
        case "wss":
          return port !== 443;
        case "ftp":
          return port !== 21;
        case "gopher":
          return port !== 70;
        case "file":
          return false;
      }
      return port !== 0;
    };
  }
});

// ../../node_modules/querystringify/index.js
var require_querystringify = __commonJS({
  "../../node_modules/querystringify/index.js"(exports2) {
    "use strict";
    var has3 = Object.prototype.hasOwnProperty;
    var undef;
    function decode2(input3) {
      try {
        return decodeURIComponent(input3.replace(/\+/g, " "));
      } catch (e2) {
        return null;
      }
    }
    function encode(input3) {
      try {
        return encodeURIComponent(input3);
      } catch (e2) {
        return null;
      }
    }
    function querystring(query) {
      var parser3 = /([^=?#&]+)=?([^&]*)/g, result = {}, part;
      while (part = parser3.exec(query)) {
        var key2 = decode2(part[1]), value = decode2(part[2]);
        if (key2 === null || value === null || key2 in result) continue;
        result[key2] = value;
      }
      return result;
    }
    function querystringify(obj, prefix2) {
      prefix2 = prefix2 || "";
      var pairs2 = [], value, key2;
      if ("string" !== typeof prefix2) prefix2 = "?";
      for (key2 in obj) {
        if (has3.call(obj, key2)) {
          value = obj[key2];
          if (!value && (value === null || value === undef || isNaN(value))) {
            value = "";
          }
          key2 = encode(key2);
          value = encode(value);
          if (key2 === null || value === null) continue;
          pairs2.push(key2 + "=" + value);
        }
      }
      return pairs2.length ? prefix2 + pairs2.join("&") : "";
    }
    exports2.stringify = querystringify;
    exports2.parse = querystring;
  }
});

// ../../node_modules/url-parse/index.js
var require_url_parse = __commonJS({
  "../../node_modules/url-parse/index.js"(exports2, module2) {
    "use strict";
    var required = require_requires_port();
    var qs = require_querystringify();
    var controlOrWhitespace = /^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/;
    var CRHTLF = /[\n\r\t]/g;
    var slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\/\//;
    var port = /:\d+$/;
    var protocolre = /^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i;
    var windowsDriveLetter = /^[a-zA-Z]:/;
    function trimLeft(str2) {
      return (str2 ? str2 : "").toString().replace(controlOrWhitespace, "");
    }
    var rules = [
      ["#", "hash"],
      // Extract from the back.
      ["?", "query"],
      // Extract from the back.
      function sanitize(address, url) {
        return isSpecial(url.protocol) ? address.replace(/\\/g, "/") : address;
      },
      ["/", "pathname"],
      // Extract from the back.
      ["@", "auth", 1],
      // Extract from the front.
      [NaN, "host", void 0, 1, 1],
      // Set left over value.
      [/:(\d*)$/, "port", void 0, 1],
      // RegExp the back.
      [NaN, "hostname", void 0, 1, 1]
      // Set left over.
    ];
    var ignore3 = { hash: 1, query: 1 };
    function lolcation(loc) {
      var globalVar;
      if (typeof window !== "undefined") globalVar = window;
      else if (typeof global !== "undefined") globalVar = global;
      else if (typeof self !== "undefined") globalVar = self;
      else globalVar = {};
      var location4 = globalVar.location || {};
      loc = loc || location4;
      var finaldestination = {}, type2 = typeof loc, key2;
      if ("blob:" === loc.protocol) {
        finaldestination = new Url(unescape(loc.pathname), {});
      } else if ("string" === type2) {
        finaldestination = new Url(loc, {});
        for (key2 in ignore3) delete finaldestination[key2];
      } else if ("object" === type2) {
        for (key2 in loc) {
          if (key2 in ignore3) continue;
          finaldestination[key2] = loc[key2];
        }
        if (finaldestination.slashes === void 0) {
          finaldestination.slashes = slashes.test(loc.href);
        }
      }
      return finaldestination;
    }
    function isSpecial(scheme) {
      return scheme === "file:" || scheme === "ftp:" || scheme === "http:" || scheme === "https:" || scheme === "ws:" || scheme === "wss:";
    }
    function extractProtocol(address, location4) {
      address = trimLeft(address);
      address = address.replace(CRHTLF, "");
      location4 = location4 || {};
      var match3 = protocolre.exec(address);
      var protocol = match3[1] ? match3[1].toLowerCase() : "";
      var forwardSlashes = !!match3[2];
      var otherSlashes = !!match3[3];
      var slashesCount = 0;
      var rest;
      if (forwardSlashes) {
        if (otherSlashes) {
          rest = match3[2] + match3[3] + match3[4];
          slashesCount = match3[2].length + match3[3].length;
        } else {
          rest = match3[2] + match3[4];
          slashesCount = match3[2].length;
        }
      } else {
        if (otherSlashes) {
          rest = match3[3] + match3[4];
          slashesCount = match3[3].length;
        } else {
          rest = match3[4];
        }
      }
      if (protocol === "file:") {
        if (slashesCount >= 2) {
          rest = rest.slice(2);
        }
      } else if (isSpecial(protocol)) {
        rest = match3[4];
      } else if (protocol) {
        if (forwardSlashes) {
          rest = rest.slice(2);
        }
      } else if (slashesCount >= 2 && isSpecial(location4.protocol)) {
        rest = match3[4];
      }
      return {
        protocol,
        slashes: forwardSlashes || isSpecial(protocol),
        slashesCount,
        rest
      };
    }
    function resolve9(relative6, base5) {
      if (relative6 === "") return base5;
      var path45 = (base5 || "/").split("/").slice(0, -1).concat(relative6.split("/")), i2 = path45.length, last = path45[i2 - 1], unshift = false, up2 = 0;
      while (i2--) {
        if (path45[i2] === ".") {
          path45.splice(i2, 1);
        } else if (path45[i2] === "..") {
          path45.splice(i2, 1);
          up2++;
        } else if (up2) {
          if (i2 === 0) unshift = true;
          path45.splice(i2, 1);
          up2--;
        }
      }
      if (unshift) path45.unshift("");
      if (last === "." || last === "..") path45.push("");
      return path45.join("/");
    }
    function Url(address, location4, parser3) {
      address = trimLeft(address);
      address = address.replace(CRHTLF, "");
      if (!(this instanceof Url)) {
        return new Url(address, location4, parser3);
      }
      var relative6, extracted, parse16, instruction, index4, key2, instructions = rules.slice(), type2 = typeof location4, url = this, i2 = 0;
      if ("object" !== type2 && "string" !== type2) {
        parser3 = location4;
        location4 = null;
      }
      if (parser3 && "function" !== typeof parser3) parser3 = qs.parse;
      location4 = lolcation(location4);
      extracted = extractProtocol(address || "", location4);
      relative6 = !extracted.protocol && !extracted.slashes;
      url.slashes = extracted.slashes || relative6 && location4.slashes;
      url.protocol = extracted.protocol || location4.protocol || "";
      address = extracted.rest;
      if (extracted.protocol === "file:" && (extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) || !extracted.slashes && (extracted.protocol || extracted.slashesCount < 2 || !isSpecial(url.protocol))) {
        instructions[3] = [/(.*)/, "pathname"];
      }
      for (; i2 < instructions.length; i2++) {
        instruction = instructions[i2];
        if (typeof instruction === "function") {
          address = instruction(address, url);
          continue;
        }
        parse16 = instruction[0];
        key2 = instruction[1];
        if (parse16 !== parse16) {
          url[key2] = address;
        } else if ("string" === typeof parse16) {
          index4 = parse16 === "@" ? address.lastIndexOf(parse16) : address.indexOf(parse16);
          if (~index4) {
            if ("number" === typeof instruction[2]) {
              url[key2] = address.slice(0, index4);
              address = address.slice(index4 + instruction[2]);
            } else {
              url[key2] = address.slice(index4);
              address = address.slice(0, index4);
            }
          }
        } else if (index4 = parse16.exec(address)) {
          url[key2] = index4[1];
          address = address.slice(0, index4.index);
        }
        url[key2] = url[key2] || (relative6 && instruction[3] ? location4[key2] || "" : "");
        if (instruction[4]) url[key2] = url[key2].toLowerCase();
      }
      if (parser3) url.query = parser3(url.query);
      if (relative6 && location4.slashes && url.pathname.charAt(0) !== "/" && (url.pathname !== "" || location4.pathname !== "")) {
        url.pathname = resolve9(url.pathname, location4.pathname);
      }
      if (url.pathname.charAt(0) !== "/" && isSpecial(url.protocol)) {
        url.pathname = "/" + url.pathname;
      }
      if (!required(url.port, url.protocol)) {
        url.host = url.hostname;
        url.port = "";
      }
      url.username = url.password = "";
      if (url.auth) {
        index4 = url.auth.indexOf(":");
        if (~index4) {
          url.username = url.auth.slice(0, index4);
          url.username = encodeURIComponent(decodeURIComponent(url.username));
          url.password = url.auth.slice(index4 + 1);
          url.password = encodeURIComponent(decodeURIComponent(url.password));
        } else {
          url.username = encodeURIComponent(decodeURIComponent(url.auth));
        }
        url.auth = url.password ? url.username + ":" + url.password : url.username;
      }
      url.origin = url.protocol !== "file:" && isSpecial(url.protocol) && url.host ? url.protocol + "//" + url.host : "null";
      url.href = url.toString();
    }
    function set3(part, value, fn) {
      var url = this;
      switch (part) {
        case "query":
          if ("string" === typeof value && value.length) {
            value = (fn || qs.parse)(value);
          }
          url[part] = value;
          break;
        case "port":
          url[part] = value;
          if (!required(value, url.protocol)) {
            url.host = url.hostname;
            url[part] = "";
          } else if (value) {
            url.host = url.hostname + ":" + value;
          }
          break;
        case "hostname":
          url[part] = value;
          if (url.port) value += ":" + url.port;
          url.host = value;
          break;
        case "host":
          url[part] = value;
          if (port.test(value)) {
            value = value.split(":");
            url.port = value.pop();
            url.hostname = value.join(":");
          } else {
            url.hostname = value;
            url.port = "";
          }
          break;
        case "protocol":
          url.protocol = value.toLowerCase();
          url.slashes = !fn;
          break;
        case "pathname":
        case "hash":
          if (value) {
            var char = part === "pathname" ? "/" : "#";
            url[part] = value.charAt(0) !== char ? char + value : value;
          } else {
            url[part] = value;
          }
          break;
        case "username":
        case "password":
          url[part] = encodeURIComponent(value);
          break;
        case "auth":
          var index4 = value.indexOf(":");
          if (~index4) {
            url.username = value.slice(0, index4);
            url.username = encodeURIComponent(decodeURIComponent(url.username));
            url.password = value.slice(index4 + 1);
            url.password = encodeURIComponent(decodeURIComponent(url.password));
          } else {
            url.username = encodeURIComponent(decodeURIComponent(value));
          }
      }
      for (var i2 = 0; i2 < rules.length; i2++) {
        var ins = rules[i2];
        if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();
      }
      url.auth = url.password ? url.username + ":" + url.password : url.username;
      url.origin = url.protocol !== "file:" && isSpecial(url.protocol) && url.host ? url.protocol + "//" + url.host : "null";
      url.href = url.toString();
      return url;
    }
    function toString6(stringify4) {
      if (!stringify4 || "function" !== typeof stringify4) stringify4 = qs.stringify;
      var query, url = this, host = url.host, protocol = url.protocol;
      if (protocol && protocol.charAt(protocol.length - 1) !== ":") protocol += ":";
      var result = protocol + (url.protocol && url.slashes || isSpecial(url.protocol) ? "//" : "");
      if (url.username) {
        result += url.username;
        if (url.password) result += ":" + url.password;
        result += "@";
      } else if (url.password) {
        result += ":" + url.password;
        result += "@";
      } else if (url.protocol !== "file:" && isSpecial(url.protocol) && !host && url.pathname !== "/") {
        result += "@";
      }
      if (host[host.length - 1] === ":" || port.test(url.hostname) && !url.port) {
        host += ":";
      }
      result += host + url.pathname;
      query = "object" === typeof url.query ? stringify4(url.query) : url.query;
      if (query) result += "?" !== query.charAt(0) ? "?" + query : query;
      if (url.hash) result += url.hash;
      return result;
    }
    Url.prototype = { set: set3, toString: toString6 };
    Url.extractProtocol = extractProtocol;
    Url.location = lolcation;
    Url.trimLeft = trimLeft;
    Url.qs = qs;
    module2.exports = Url;
  }
});

// ../../node_modules/@jupyterlab/coreutils/lib/url.js
var require_url = __commonJS({
  "../../node_modules/@jupyterlab/coreutils/lib/url.js"(exports2) {
    "use strict";
    var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.URLExt = void 0;
    var path_1 = require("path");
    var url_parse_1 = __importDefault2(require_url_parse());
    var URLExt;
    (function(URLExt2) {
      function parse16(url) {
        if (typeof document !== "undefined" && document) {
          const a2 = document.createElement("a");
          a2.href = url;
          return a2;
        }
        return (0, url_parse_1.default)(url);
      }
      URLExt2.parse = parse16;
      function getHostName(url) {
        return (0, url_parse_1.default)(url).hostname;
      }
      URLExt2.getHostName = getHostName;
      function normalize6(url) {
        return url && parse16(url).toString();
      }
      URLExt2.normalize = normalize6;
      function join19(...parts) {
        let u3 = (0, url_parse_1.default)(parts[0], {});
        const isSchemaLess = u3.protocol === "" && u3.slashes;
        if (isSchemaLess) {
          u3 = (0, url_parse_1.default)(parts[0], "https:" + parts[0]);
        }
        const prefix2 = `${isSchemaLess ? "" : u3.protocol}${u3.slashes ? "//" : ""}${u3.auth}${u3.auth ? "@" : ""}${u3.host}`;
        const path45 = path_1.posix.join(`${!!prefix2 && u3.pathname[0] !== "/" ? "/" : ""}${u3.pathname}`, ...parts.slice(1));
        return `${prefix2}${path45 === "." ? "" : path45}`;
      }
      URLExt2.join = join19;
      function encodeParts(url) {
        return join19(...url.split("/").map(encodeURIComponent));
      }
      URLExt2.encodeParts = encodeParts;
      function objectToQueryString(value) {
        const keys2 = Object.keys(value).filter((key2) => key2.length > 0);
        if (!keys2.length) {
          return "";
        }
        return "?" + keys2.map((key2) => {
          const content3 = encodeURIComponent(String(value[key2]));
          return key2 + (content3 ? "=" + content3 : "");
        }).join("&");
      }
      URLExt2.objectToQueryString = objectToQueryString;
      function queryStringToObject(value) {
        return value.replace(/^\?/, "").split("&").reduce((acc, val) => {
          const [key2, value2] = val.split("=");
          if (key2.length > 0) {
            acc[key2] = decodeURIComponent(value2 || "");
          }
          return acc;
        }, {});
      }
      URLExt2.queryStringToObject = queryStringToObject;
      function isLocal(url, allowRoot = false) {
        const { protocol } = parse16(url);
        return (!protocol || url.toLowerCase().indexOf(protocol) !== 0) && (allowRoot ? url.indexOf("//") !== 0 : url.indexOf("/") !== 0);
      }
      URLExt2.isLocal = isLocal;
    })(URLExt || (exports2.URLExt = URLExt = {}));
  }
});

// ../../node_modules/@jupyterlab/coreutils/lib/pageconfig.js
var require_pageconfig = __commonJS({
  "../../node_modules/@jupyterlab/coreutils/lib/pageconfig.js"(exports, module) {
    "use strict";
    var __importDefault = exports && exports.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.PageConfig = void 0;
    var coreutils_1 = require_index_node2();
    var minimist_1 = __importDefault(require_minimist());
    var url_1 = require_url();
    var PageConfig;
    (function(PageConfig) {
      function getOption(name) {
        if (configData) {
          return configData[name] || getBodyData(name);
        }
        configData = /* @__PURE__ */ Object.create(null);
        let found = false;
        if (typeof document !== "undefined" && document) {
          const el = document.getElementById("jupyter-config-data");
          if (el) {
            configData = JSON.parse(el.textContent || "");
            found = true;
          }
        }
        if (!found && typeof process !== "undefined" && process.argv) {
          try {
            const cli = (0, minimist_1.default)(process.argv.slice(2));
            const path = require("path");
            let fullPath = "";
            if ("jupyter-config-data" in cli) {
              fullPath = path.resolve(cli["jupyter-config-data"]);
            } else if ("JUPYTER_CONFIG_DATA" in process.env) {
              fullPath = path.resolve(process.env["JUPYTER_CONFIG_DATA"]);
            }
            if (fullPath) {
              configData = eval("require")(fullPath);
            }
          } catch (e2) {
            console.error(e2);
          }
        }
        if (!coreutils_1.JSONExt.isObject(configData)) {
          configData = /* @__PURE__ */ Object.create(null);
        } else {
          for (const key2 in configData) {
            if (typeof configData[key2] !== "string") {
              configData[key2] = JSON.stringify(configData[key2]);
            }
          }
        }
        return configData[name] || getBodyData(name);
      }
      PageConfig.getOption = getOption;
      function setOption(name3, value) {
        const last = getOption(name3);
        configData[name3] = value;
        return last;
      }
      PageConfig.setOption = setOption;
      function getBaseUrl() {
        return url_1.URLExt.normalize(getOption("baseUrl") || "/");
      }
      PageConfig.getBaseUrl = getBaseUrl;
      function getTreeUrl() {
        return url_1.URLExt.join(getBaseUrl(), getOption("treeUrl"));
      }
      PageConfig.getTreeUrl = getTreeUrl;
      function getShareUrl() {
        return url_1.URLExt.normalize(getOption("shareUrl") || getBaseUrl());
      }
      PageConfig.getShareUrl = getShareUrl;
      function getTreeShareUrl() {
        return url_1.URLExt.normalize(url_1.URLExt.join(getShareUrl(), getOption("treeUrl")));
      }
      PageConfig.getTreeShareUrl = getTreeShareUrl;
      function getUrl(options) {
        var _a6, _b, _c, _d2;
        let path45 = options.toShare ? getShareUrl() : getBaseUrl();
        const mode = (_a6 = options.mode) !== null && _a6 !== void 0 ? _a6 : getOption("mode");
        const workspace = (_b = options.workspace) !== null && _b !== void 0 ? _b : getOption("workspace");
        const labOrDoc = mode === "single-document" ? "doc" : "lab";
        path45 = url_1.URLExt.join(path45, labOrDoc);
        if (workspace !== PageConfig.defaultWorkspace) {
          path45 = url_1.URLExt.join(path45, "workspaces", encodeURIComponent((_c = getOption("workspace")) !== null && _c !== void 0 ? _c : PageConfig.defaultWorkspace));
        }
        const treePath = (_d2 = options.treePath) !== null && _d2 !== void 0 ? _d2 : getOption("treePath");
        if (treePath) {
          path45 = url_1.URLExt.join(path45, "tree", url_1.URLExt.encodeParts(treePath));
        }
        return path45;
      }
      PageConfig.getUrl = getUrl;
      PageConfig.defaultWorkspace = "default";
      function getWsUrl(baseUrl) {
        let wsUrl = getOption("wsUrl");
        if (!wsUrl) {
          baseUrl = baseUrl ? url_1.URLExt.normalize(baseUrl) : getBaseUrl();
          if (baseUrl.indexOf("http") !== 0) {
            return "";
          }
          wsUrl = "ws" + baseUrl.slice(4);
        }
        return url_1.URLExt.normalize(wsUrl);
      }
      PageConfig.getWsUrl = getWsUrl;
      function getNBConvertURL({ path: path45, format, download }) {
        const notebookPath = url_1.URLExt.encodeParts(path45);
        const url = url_1.URLExt.join(getBaseUrl(), "nbconvert", format, notebookPath);
        if (download) {
          return url + "?download=true";
        }
        return url;
      }
      PageConfig.getNBConvertURL = getNBConvertURL;
      function getToken() {
        return getOption("token") || getBodyData("jupyterApiToken");
      }
      PageConfig.getToken = getToken;
      function getNotebookVersion() {
        const notebookVersion = getOption("notebookVersion");
        if (notebookVersion === "") {
          return [0, 0, 0];
        }
        return JSON.parse(notebookVersion);
      }
      PageConfig.getNotebookVersion = getNotebookVersion;
      let configData = null;
      function getBodyData(key2) {
        if (typeof document === "undefined" || !document.body) {
          return "";
        }
        const val = document.body.dataset[key2];
        if (typeof val === "undefined") {
          return "";
        }
        return decodeURIComponent(val);
      }
      let Extension;
      (function(Extension2) {
        function populate(key2) {
          try {
            const raw2 = getOption(key2);
            if (raw2) {
              return JSON.parse(raw2);
            }
          } catch (error) {
            console.warn(`Unable to parse ${key2}.`, error);
          }
          return [];
        }
        Extension2.deferred = populate("deferredExtensions");
        Extension2.disabled = populate("disabledExtensions");
        function isDeferred(id) {
          const separatorIndex = id.indexOf(":");
          let extName = "";
          if (separatorIndex !== -1) {
            extName = id.slice(0, separatorIndex);
          }
          return Extension2.deferred.some((val) => val === id || extName && val === extName);
        }
        Extension2.isDeferred = isDeferred;
        function isDisabled(id) {
          const separatorIndex = id.indexOf(":");
          let extName = "";
          if (separatorIndex !== -1) {
            extName = id.slice(0, separatorIndex);
          }
          return Extension2.disabled.some((val) => val === id || extName && val === extName);
        }
        Extension2.isDisabled = isDisabled;
      })(Extension = PageConfig.Extension || (PageConfig.Extension = {}));
    })(PageConfig || (exports.PageConfig = PageConfig = {}));
  }
});

// ../../node_modules/@jupyterlab/coreutils/lib/path.js
var require_path2 = __commonJS({
  "../../node_modules/@jupyterlab/coreutils/lib/path.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.PathExt = void 0;
    var path_1 = require("path");
    var PathExt;
    (function(PathExt2) {
      function join19(...paths) {
        const path45 = path_1.posix.join(...paths);
        return path45 === "." ? "" : removeSlash(path45);
      }
      PathExt2.join = join19;
      function joinWithLeadingSlash(...paths) {
        const path45 = path_1.posix.join(...paths);
        return path45 === "." ? "" : path45;
      }
      PathExt2.joinWithLeadingSlash = joinWithLeadingSlash;
      function basename4(path45, ext2) {
        return path_1.posix.basename(path45, ext2);
      }
      PathExt2.basename = basename4;
      function dirname8(path45) {
        const dir = removeSlash(path_1.posix.dirname(path45));
        return dir === "." ? "" : dir;
      }
      PathExt2.dirname = dirname8;
      function extname8(path45) {
        return path_1.posix.extname(path45);
      }
      PathExt2.extname = extname8;
      function normalize6(path45) {
        if (path45 === "") {
          return "";
        }
        return removeSlash(path_1.posix.normalize(path45));
      }
      PathExt2.normalize = normalize6;
      function resolve9(...parts) {
        return removeSlash(path_1.posix.resolve(...parts));
      }
      PathExt2.resolve = resolve9;
      function relative6(from4, to) {
        return removeSlash(path_1.posix.relative(from4, to));
      }
      PathExt2.relative = relative6;
      function normalizeExtension(extension) {
        if (extension.length > 0 && extension.indexOf(".") !== 0) {
          extension = `.${extension}`;
        }
        return extension;
      }
      PathExt2.normalizeExtension = normalizeExtension;
      function removeSlash(path45) {
        if (path45.indexOf("/") === 0) {
          path45 = path45.slice(1);
        }
        return path45;
      }
      PathExt2.removeSlash = removeSlash;
    })(PathExt || (exports2.PathExt = PathExt = {}));
  }
});

// ../../node_modules/@jupyterlab/coreutils/lib/signal.js
var require_signal = __commonJS({
  "../../node_modules/@jupyterlab/coreutils/lib/signal.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.signalToPromise = signalToPromise;
    var coreutils_12 = require_index_node2();
    function signalToPromise(signal, timeout) {
      const waitForSignal = new coreutils_12.PromiseDelegate();
      function cleanup() {
        signal.disconnect(slot);
      }
      function slot(sender, args) {
        cleanup();
        waitForSignal.resolve([sender, args]);
      }
      signal.connect(slot);
      if ((timeout !== null && timeout !== void 0 ? timeout : 0) > 0) {
        setTimeout(() => {
          cleanup();
          waitForSignal.reject(`Signal not emitted within ${timeout} ms.`);
        }, timeout);
      }
      return waitForSignal.promise;
    }
  }
});

// ../../node_modules/@jupyterlab/coreutils/lib/text.js
var require_text3 = __commonJS({
  "../../node_modules/@jupyterlab/coreutils/lib/text.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.Text = void 0;
    var Text;
    (function(Text2) {
      const HAS_SURROGATES = "\u{1D41A}".length > 1;
      function jsIndexToCharIndex(jsIdx, text7) {
        if (HAS_SURROGATES) {
          return jsIdx;
        }
        let charIdx = jsIdx;
        for (let i2 = 0; i2 + 1 < text7.length && i2 < jsIdx; i2++) {
          const charCode = text7.charCodeAt(i2);
          if (charCode >= 55296 && charCode <= 56319) {
            const nextCharCode = text7.charCodeAt(i2 + 1);
            if (nextCharCode >= 56320 && nextCharCode <= 57343) {
              charIdx--;
              i2++;
            }
          }
        }
        return charIdx;
      }
      Text2.jsIndexToCharIndex = jsIndexToCharIndex;
      function charIndexToJsIndex(charIdx, text7) {
        if (HAS_SURROGATES) {
          return charIdx;
        }
        let jsIdx = charIdx;
        for (let i2 = 0; i2 + 1 < text7.length && i2 < jsIdx; i2++) {
          const charCode = text7.charCodeAt(i2);
          if (charCode >= 55296 && charCode <= 56319) {
            const nextCharCode = text7.charCodeAt(i2 + 1);
            if (nextCharCode >= 56320 && nextCharCode <= 57343) {
              jsIdx++;
              i2++;
            }
          }
        }
        return jsIdx;
      }
      Text2.charIndexToJsIndex = charIndexToJsIndex;
      function camelCase2(str2, upper = false) {
        return str2.replace(/^(\w)|[\s-_:]+(\w)/g, function(match3, p1, p22) {
          if (p22) {
            return p22.toUpperCase();
          } else {
            return upper ? p1.toUpperCase() : p1.toLowerCase();
          }
        });
      }
      Text2.camelCase = camelCase2;
      function titleCase(str2) {
        return (str2 || "").toLowerCase().split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
      }
      Text2.titleCase = titleCase;
    })(Text || (exports2.Text = Text = {}));
  }
});

// ../../node_modules/@jupyterlab/coreutils/lib/time.js
var require_time = __commonJS({
  "../../node_modules/@jupyterlab/coreutils/lib/time.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.Time = void 0;
    var UNITS3 = [
      { name: "years", milliseconds: 365 * 24 * 60 * 60 * 1e3 },
      { name: "months", milliseconds: 30 * 24 * 60 * 60 * 1e3 },
      { name: "days", milliseconds: 24 * 60 * 60 * 1e3 },
      { name: "hours", milliseconds: 60 * 60 * 1e3 },
      { name: "minutes", milliseconds: 60 * 1e3 },
      { name: "seconds", milliseconds: 1e3 }
    ];
    var Time;
    (function(Time2) {
      function formatHuman(value, format2 = "long") {
        const lang = document.documentElement.lang || "en";
        const formatter = new Intl.RelativeTimeFormat(lang, {
          numeric: "auto",
          style: format2
        });
        const delta = new Date(value).getTime() - Date.now();
        for (let unit of UNITS3) {
          const amount = Math.ceil(delta / unit.milliseconds);
          if (amount === 0) {
            continue;
          }
          return formatter.format(amount, unit.name);
        }
        return formatter.format(0, "seconds");
      }
      Time2.formatHuman = formatHuman;
      function format(value) {
        const lang = document.documentElement.lang || "en";
        const formatter = new Intl.DateTimeFormat(lang, {
          dateStyle: "short",
          timeStyle: "short"
        });
        return formatter.format(new Date(value));
      }
      Time2.format = format;
    })(Time || (exports2.Time = Time = {}));
  }
});

// ../../node_modules/@jupyterlab/coreutils/lib/index.js
var require_lib27 = __commonJS({
  "../../node_modules/@jupyterlab/coreutils/lib/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __exportStar = exports2 && exports2.__exportStar || function(m2, exports3) {
      for (var p5 in m2) if (p5 !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p5)) __createBinding(exports3, m2, p5);
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    __exportStar(require_activitymonitor(), exports2);
    __exportStar(require_interfaces(), exports2);
    __exportStar(require_lru(), exports2);
    __exportStar(require_markdowncodeblocks(), exports2);
    __exportStar(require_pageconfig(), exports2);
    __exportStar(require_path2(), exports2);
    __exportStar(require_signal(), exports2);
    __exportStar(require_text3(), exports2);
    __exportStar(require_time(), exports2);
    __exportStar(require_url(), exports2);
  }
});

// ../../node_modules/@jupyterlab/services/node_modules/@lumino/coreutils/dist/index.node.js
var require_index_node3 = __commonJS({
  "../../node_modules/@jupyterlab/services/node_modules/@lumino/coreutils/dist/index.node.js"(exports2) {
    "use strict";
    var algorithm = require_dist6();
    exports2.JSONExt = void 0;
    (function(JSONExt) {
      JSONExt.emptyObject = Object.freeze({});
      JSONExt.emptyArray = Object.freeze([]);
      function isPrimitive(value) {
        return value === null || typeof value === "boolean" || typeof value === "number" || typeof value === "string";
      }
      JSONExt.isPrimitive = isPrimitive;
      function isArray2(value) {
        return Array.isArray(value);
      }
      JSONExt.isArray = isArray2;
      function isObject2(value) {
        return !isPrimitive(value) && !isArray2(value);
      }
      JSONExt.isObject = isObject2;
      function deepEqual(first2, second) {
        if (first2 === second) {
          return true;
        }
        if (isPrimitive(first2) || isPrimitive(second)) {
          return false;
        }
        let a1 = isArray2(first2);
        let a2 = isArray2(second);
        if (a1 !== a2) {
          return false;
        }
        if (a1 && a2) {
          return deepArrayEqual(first2, second);
        }
        return deepObjectEqual(first2, second);
      }
      JSONExt.deepEqual = deepEqual;
      function deepCopy(value) {
        if (isPrimitive(value)) {
          return value;
        }
        if (isArray2(value)) {
          return deepArrayCopy(value);
        }
        return deepObjectCopy(value);
      }
      JSONExt.deepCopy = deepCopy;
      function deepArrayEqual(first2, second) {
        if (first2 === second) {
          return true;
        }
        if (first2.length !== second.length) {
          return false;
        }
        for (let i2 = 0, n = first2.length; i2 < n; ++i2) {
          if (!deepEqual(first2[i2], second[i2])) {
            return false;
          }
        }
        return true;
      }
      function deepObjectEqual(first2, second) {
        if (first2 === second) {
          return true;
        }
        for (let key2 in first2) {
          if (first2[key2] !== void 0 && !(key2 in second)) {
            return false;
          }
        }
        for (let key2 in second) {
          if (second[key2] !== void 0 && !(key2 in first2)) {
            return false;
          }
        }
        for (let key2 in first2) {
          let firstValue = first2[key2];
          let secondValue = second[key2];
          if (firstValue === void 0 && secondValue === void 0) {
            continue;
          }
          if (firstValue === void 0 || secondValue === void 0) {
            return false;
          }
          if (!deepEqual(firstValue, secondValue)) {
            return false;
          }
        }
        return true;
      }
      function deepArrayCopy(value) {
        let result = new Array(value.length);
        for (let i2 = 0, n = value.length; i2 < n; ++i2) {
          result[i2] = deepCopy(value[i2]);
        }
        return result;
      }
      function deepObjectCopy(value) {
        let result = {};
        for (let key2 in value) {
          let subvalue = value[key2];
          if (subvalue === void 0) {
            continue;
          }
          result[key2] = deepCopy(subvalue);
        }
        return result;
      }
    })(exports2.JSONExt || (exports2.JSONExt = {}));
    var MimeData = class {
      constructor() {
        this._types = [];
        this._values = [];
      }
      /**
       * Get an array of the MIME types contained within the dataset.
       *
       * @returns A new array of the MIME types, in order of insertion.
       */
      types() {
        return this._types.slice();
      }
      /**
       * Test whether the dataset has an entry for the given type.
       *
       * @param mime - The MIME type of interest.
       *
       * @returns `true` if the dataset contains a value for the given
       *   MIME type, `false` otherwise.
       */
      hasData(mime3) {
        return this._types.indexOf(mime3) !== -1;
      }
      /**
       * Get the data value for the given MIME type.
       *
       * @param mime - The MIME type of interest.
       *
       * @returns The value for the given MIME type, or `undefined` if
       *   the dataset does not contain a value for the type.
       */
      getData(mime3) {
        let i2 = this._types.indexOf(mime3);
        return i2 !== -1 ? this._values[i2] : void 0;
      }
      /**
       * Set the data value for the given MIME type.
       *
       * @param mime - The MIME type of interest.
       *
       * @param data - The data value for the given MIME type.
       *
       * #### Notes
       * This will overwrite any previous entry for the MIME type.
       */
      setData(mime3, data) {
        this.clearData(mime3);
        this._types.push(mime3);
        this._values.push(data);
      }
      /**
       * Remove the data entry for the given MIME type.
       *
       * @param mime - The MIME type of interest.
       *
       * #### Notes
       * This is a no-op if there is no entry for the given MIME type.
       */
      clearData(mime3) {
        let i2 = this._types.indexOf(mime3);
        if (i2 !== -1) {
          this._types.splice(i2, 1);
          this._values.splice(i2, 1);
        }
      }
      /**
       * Remove all data entries from the dataset.
       */
      clear() {
        this._types.length = 0;
        this._values.length = 0;
      }
    };
    var PluginRegistry = class {
      constructor(options = {}) {
        this._application = null;
        this._validatePlugin = () => true;
        this._plugins = /* @__PURE__ */ new Map();
        this._services = /* @__PURE__ */ new Map();
        if (options.validatePlugin) {
          console.info("Plugins may be rejected by the custom validation plugin method.");
          this._validatePlugin = options.validatePlugin;
        }
      }
      /**
       * The application object.
       *
       * It will be provided as first argument to the
       * plugins activation and deactivation functions.
       *
       * It can only be set once.
       *
       * By default, it is `null`.
       */
      get application() {
        return this._application;
      }
      set application(v) {
        if (this._application !== null) {
          throw Error("PluginRegistry.application is already set. It cannot be overridden.");
        }
        this._application = v;
      }
      /**
       * The list of all the deferred plugins.
       */
      get deferredPlugins() {
        return Array.from(this._plugins).filter(([id, plugin5]) => plugin5.autoStart === "defer").map(([id, plugin5]) => id);
      }
      /**
       * Get a plugin description.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns The plugin description.
       */
      getPluginDescription(id) {
        var _a6, _b;
        return (_b = (_a6 = this._plugins.get(id)) === null || _a6 === void 0 ? void 0 : _a6.description) !== null && _b !== void 0 ? _b : "";
      }
      /**
       * Test whether a plugin is registered with the application.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns `true` if the plugin is registered, `false` otherwise.
       */
      hasPlugin(id) {
        return this._plugins.has(id);
      }
      /**
       * Test whether a plugin is activated with the application.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns `true` if the plugin is activated, `false` otherwise.
       */
      isPluginActivated(id) {
        var _a6, _b;
        return (_b = (_a6 = this._plugins.get(id)) === null || _a6 === void 0 ? void 0 : _a6.activated) !== null && _b !== void 0 ? _b : false;
      }
      /**
       * List the IDs of the plugins registered with the application.
       *
       * @returns A new array of the registered plugin IDs.
       */
      listPlugins() {
        return Array.from(this._plugins.keys());
      }
      /**
       * Register a plugin with the application.
       *
       * @param plugin - The plugin to register.
       *
       * #### Notes
       * An error will be thrown if a plugin with the same ID is already
       * registered, or if the plugin has a circular dependency.
       *
       * If the plugin provides a service which has already been provided
       * by another plugin, the new service will override the old service.
       */
      registerPlugin(plugin5) {
        if (this._plugins.has(plugin5.id)) {
          throw new TypeError(`Plugin '${plugin5.id}' is already registered.`);
        }
        if (!this._validatePlugin(plugin5)) {
          throw new Error(`Plugin '${plugin5.id}' is not valid.`);
        }
        const data = Private.createPluginData(plugin5);
        Private.ensureNoCycle(data, this._plugins, this._services);
        if (data.provides) {
          this._services.set(data.provides, data.id);
        }
        this._plugins.set(data.id, data);
      }
      /**
       * Register multiple plugins with the application.
       *
       * @param plugins - The plugins to register.
       *
       * #### Notes
       * This calls `registerPlugin()` for each of the given plugins.
       */
      registerPlugins(plugins3) {
        for (const plugin5 of plugins3) {
          this.registerPlugin(plugin5);
        }
      }
      /**
       * Deregister a plugin with the application.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @param force - Whether to deregister the plugin even if it is active.
       */
      deregisterPlugin(id, force) {
        const plugin5 = this._plugins.get(id);
        if (!plugin5) {
          return;
        }
        if (plugin5.activated && !force) {
          throw new Error(`Plugin '${id}' is still active.`);
        }
        this._plugins.delete(id);
      }
      /**
       * Activate the plugin with the given ID.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns A promise which resolves when the plugin is activated
       *   or rejects with an error if it cannot be activated.
       */
      async activatePlugin(id) {
        const plugin5 = this._plugins.get(id);
        if (!plugin5) {
          throw new ReferenceError(`Plugin '${id}' is not registered.`);
        }
        if (plugin5.activated) {
          return;
        }
        if (plugin5.promise) {
          return plugin5.promise;
        }
        const required = plugin5.requires.map((t2) => this.resolveRequiredService(t2));
        const optional = plugin5.optional.map((t2) => this.resolveOptionalService(t2));
        plugin5.promise = Promise.all([...required, ...optional]).then((services) => plugin5.activate.apply(void 0, [this.application, ...services])).then((service) => {
          plugin5.service = service;
          plugin5.activated = true;
          plugin5.promise = null;
        }).catch((error) => {
          plugin5.promise = null;
          throw error;
        });
        return plugin5.promise;
      }
      /**
       * Activate all the deferred plugins.
       *
       * @returns A promise which will resolve when each plugin is activated
       * or rejects with an error if one cannot be activated.
       */
      async activatePlugins(kind, options = {}) {
        switch (kind) {
          case "defer": {
            const promises = this.deferredPlugins.filter((pluginId) => this._plugins.get(pluginId).autoStart).map((pluginId) => {
              return this.activatePlugin(pluginId);
            });
            await Promise.all(promises);
            break;
          }
          case "startUp": {
            const startups = Private.collectStartupPlugins(this._plugins, options);
            const promises = startups.map(async (id) => {
              try {
                return await this.activatePlugin(id);
              } catch (error) {
                console.error(`Plugin '${id}' failed to activate.`, error);
              }
            });
            await Promise.all(promises);
            break;
          }
        }
      }
      /**
       * Deactivate the plugin and its downstream dependents if and only if the
       * plugin and its dependents all support `deactivate`.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns A list of IDs of downstream plugins deactivated with this one.
       */
      async deactivatePlugin(id) {
        const plugin5 = this._plugins.get(id);
        if (!plugin5) {
          throw new ReferenceError(`Plugin '${id}' is not registered.`);
        }
        if (!plugin5.activated) {
          return [];
        }
        if (!plugin5.deactivate) {
          throw new TypeError(`Plugin '${id}'#deactivate() method missing`);
        }
        const manifest = Private.findDependents(id, this._plugins, this._services);
        const downstream = manifest.map((id2) => this._plugins.get(id2));
        for (const plugin6 of downstream) {
          if (!plugin6.deactivate) {
            throw new TypeError(`Plugin ${plugin6.id}#deactivate() method missing (depends on ${id})`);
          }
        }
        for (const plugin6 of downstream) {
          const services = [...plugin6.requires, ...plugin6.optional].map((service) => {
            const id2 = this._services.get(service);
            return id2 ? this._plugins.get(id2).service : null;
          });
          await plugin6.deactivate(this.application, ...services);
          plugin6.service = null;
          plugin6.activated = false;
        }
        manifest.pop();
        return manifest;
      }
      /**
       * Resolve a required service of a given type.
       *
       * @param token - The token for the service type of interest.
       *
       * @returns A promise which resolves to an instance of the requested
       *   service, or rejects with an error if it cannot be resolved.
       *
       * #### Notes
       * Services are singletons. The same instance will be returned each
       * time a given service token is resolved.
       *
       * If the plugin which provides the service has not been activated,
       * resolving the service will automatically activate the plugin.
       *
       * User code will not typically call this method directly. Instead,
       * the required services for the user's plugins will be resolved
       * automatically when the plugin is activated.
       */
      async resolveRequiredService(token) {
        const id = this._services.get(token);
        if (!id) {
          throw new TypeError(`No provider for: ${token.name}.`);
        }
        const plugin5 = this._plugins.get(id);
        if (!plugin5.activated) {
          await this.activatePlugin(id);
        }
        return plugin5.service;
      }
      /**
       * Resolve an optional service of a given type.
       *
       * @param token - The token for the service type of interest.
       *
       * @returns A promise which resolves to an instance of the requested
       *   service, or `null` if it cannot be resolved.
       *
       * #### Notes
       * Services are singletons. The same instance will be returned each
       * time a given service token is resolved.
       *
       * If the plugin which provides the service has not been activated,
       * resolving the service will automatically activate the plugin.
       *
       * User code will not typically call this method directly. Instead,
       * the optional services for the user's plugins will be resolved
       * automatically when the plugin is activated.
       */
      async resolveOptionalService(token) {
        const id = this._services.get(token);
        if (!id) {
          return null;
        }
        const plugin5 = this._plugins.get(id);
        if (!plugin5.activated) {
          try {
            await this.activatePlugin(id);
          } catch (reason) {
            console.error(reason);
            return null;
          }
        }
        return plugin5.service;
      }
    };
    var Private;
    (function(Private2) {
      class PluginData {
        constructor(plugin5) {
          var _a6, _b, _c, _d2;
          this._activated = false;
          this._promise = null;
          this._service = null;
          this.id = plugin5.id;
          this.description = (_a6 = plugin5.description) !== null && _a6 !== void 0 ? _a6 : "";
          this.activate = plugin5.activate;
          this.deactivate = (_b = plugin5.deactivate) !== null && _b !== void 0 ? _b : null;
          this.provides = (_c = plugin5.provides) !== null && _c !== void 0 ? _c : null;
          this.autoStart = (_d2 = plugin5.autoStart) !== null && _d2 !== void 0 ? _d2 : false;
          this.requires = plugin5.requires ? plugin5.requires.slice() : [];
          this.optional = plugin5.optional ? plugin5.optional.slice() : [];
        }
        /**
         * Whether the plugin has been activated.
         */
        get activated() {
          return this._activated;
        }
        set activated(a2) {
          this._activated = a2;
        }
        /**
         * The resolved service for the plugin, or `null`.
         */
        get service() {
          return this._service;
        }
        set service(s5) {
          this._service = s5;
        }
        /**
         * The pending resolver promise, or `null`.
         */
        get promise() {
          return this._promise;
        }
        set promise(p5) {
          this._promise = p5;
        }
      }
      function createPluginData(plugin5) {
        return new PluginData(plugin5);
      }
      Private2.createPluginData = createPluginData;
      function ensureNoCycle(plugin5, plugins3, services) {
        const dependencies = [...plugin5.requires, ...plugin5.optional];
        const visit3 = (token) => {
          if (token === plugin5.provides) {
            return true;
          }
          const id = services.get(token);
          if (!id) {
            return false;
          }
          const visited = plugins3.get(id);
          const dependencies2 = [...visited.requires, ...visited.optional];
          if (dependencies2.length === 0) {
            return false;
          }
          trace.push(id);
          if (dependencies2.some(visit3)) {
            return true;
          }
          trace.pop();
          return false;
        };
        if (!plugin5.provides || dependencies.length === 0) {
          return;
        }
        const trace = [plugin5.id];
        if (dependencies.some(visit3)) {
          throw new ReferenceError(`Cycle detected: ${trace.join(" -> ")}.`);
        }
      }
      Private2.ensureNoCycle = ensureNoCycle;
      function findDependents(id, plugins3, services) {
        const edges = new Array();
        const add2 = (id2) => {
          const plugin5 = plugins3.get(id2);
          const dependencies = [...plugin5.requires, ...plugin5.optional];
          edges.push(...dependencies.reduce((acc, dep) => {
            const service = services.get(dep);
            if (service) {
              acc.push([id2, service]);
            }
            return acc;
          }, []));
        };
        for (const id2 of plugins3.keys()) {
          add2(id2);
        }
        const newEdges = edges.filter((edge) => edge[1] === id);
        let oldSize = 0;
        while (newEdges.length > oldSize) {
          const previousSize = newEdges.length;
          const packagesOfInterest = new Set(newEdges.map((edge) => edge[0]));
          for (const poi of packagesOfInterest) {
            edges.filter((edge) => edge[1] === poi).forEach((edge) => {
              if (!newEdges.includes(edge)) {
                newEdges.push(edge);
              }
            });
          }
          oldSize = previousSize;
        }
        const sorted = algorithm.topologicSort(newEdges);
        const index4 = sorted.findIndex((candidate) => candidate === id);
        if (index4 === -1) {
          return [id];
        }
        return sorted.slice(0, index4 + 1);
      }
      Private2.findDependents = findDependents;
      function collectStartupPlugins(plugins3, options) {
        const collection = /* @__PURE__ */ new Set();
        for (const id of plugins3.keys()) {
          if (plugins3.get(id).autoStart === true) {
            collection.add(id);
          }
        }
        if (options.startPlugins) {
          for (const id of options.startPlugins) {
            collection.add(id);
          }
        }
        if (options.ignorePlugins) {
          for (const id of options.ignorePlugins) {
            collection.delete(id);
          }
        }
        return Array.from(collection);
      }
      Private2.collectStartupPlugins = collectStartupPlugins;
    })(Private || (Private = {}));
    var PromiseDelegate = class {
      /**
       * Construct a new promise delegate.
       */
      constructor() {
        this.promise = new Promise((resolve9, reject) => {
          this._resolve = resolve9;
          this._reject = reject;
        });
      }
      /**
       * Resolve the wrapped promise with the given value.
       *
       * @param value - The value to use for resolving the promise.
       */
      resolve(value) {
        let resolve9 = this._resolve;
        resolve9(value);
      }
      /**
       * Reject the wrapped promise with the given value.
       *
       * @reason - The reason for rejecting the promise.
       */
      reject(reason) {
        let reject = this._reject;
        reject(reason);
      }
    };
    var Token2 = class {
      /**
       * Construct a new token.
       *
       * @param name - A human readable name for the token.
       * @param description - Token purpose description for documentation.
       */
      constructor(name3, description) {
        this.name = name3;
        this.description = description !== null && description !== void 0 ? description : "";
        this._tokenStructuralPropertyT = null;
      }
    };
    function fallbackRandomValues(buffer2) {
      let value = 0;
      for (let i2 = 0, n = buffer2.length; i2 < n; ++i2) {
        if (i2 % 4 === 0) {
          value = Math.random() * 4294967295 >>> 0;
        }
        buffer2[i2] = value & 255;
        value >>>= 8;
      }
    }
    exports2.Random = void 0;
    (function(Random) {
      Random.getRandomValues = (() => {
        const crypto4 = typeof require !== "undefined" && require("crypto") || null;
        if (crypto4 && typeof crypto4.randomFillSync === "function") {
          return function getRandomValues(buffer2) {
            return crypto4.randomFillSync(buffer2);
          };
        }
        if (crypto4 && typeof crypto4.randomBytes === "function") {
          return function getRandomValues(buffer2) {
            let bytes = crypto4.randomBytes(buffer2.length);
            for (let i2 = 0, n = bytes.length; i2 < n; ++i2) {
              buffer2[i2] = bytes[i2];
            }
          };
        }
        return fallbackRandomValues;
      })();
    })(exports2.Random || (exports2.Random = {}));
    function uuid4Factory(getRandomValues) {
      const bytes = new Uint8Array(16);
      const lut = new Array(256);
      for (let i2 = 0; i2 < 16; ++i2) {
        lut[i2] = "0" + i2.toString(16);
      }
      for (let i2 = 16; i2 < 256; ++i2) {
        lut[i2] = i2.toString(16);
      }
      return function uuid4() {
        getRandomValues(bytes);
        bytes[6] = 64 | bytes[6] & 15;
        bytes[8] = 128 | bytes[8] & 63;
        return lut[bytes[0]] + lut[bytes[1]] + lut[bytes[2]] + lut[bytes[3]] + "-" + lut[bytes[4]] + lut[bytes[5]] + "-" + lut[bytes[6]] + lut[bytes[7]] + "-" + lut[bytes[8]] + lut[bytes[9]] + "-" + lut[bytes[10]] + lut[bytes[11]] + lut[bytes[12]] + lut[bytes[13]] + lut[bytes[14]] + lut[bytes[15]];
      };
    }
    exports2.UUID = void 0;
    (function(UUID) {
      UUID.uuid4 = uuid4Factory(exports2.Random.getRandomValues);
    })(exports2.UUID || (exports2.UUID = {}));
    exports2.MimeData = MimeData;
    exports2.PluginRegistry = PluginRegistry;
    exports2.PromiseDelegate = PromiseDelegate;
    exports2.Token = Token2;
  }
});

// ../../node_modules/@jupyterlab/services/lib/kernel/messages.js
var require_messages = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/kernel/messages.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.supportedKernelWebSocketProtocols = void 0;
    exports2.createMessage = createMessage;
    exports2.isStreamMsg = isStreamMsg;
    exports2.isDisplayDataMsg = isDisplayDataMsg;
    exports2.isUpdateDisplayDataMsg = isUpdateDisplayDataMsg;
    exports2.isExecuteInputMsg = isExecuteInputMsg;
    exports2.isExecuteResultMsg = isExecuteResultMsg;
    exports2.isErrorMsg = isErrorMsg;
    exports2.isStatusMsg = isStatusMsg;
    exports2.isClearOutputMsg = isClearOutputMsg;
    exports2.isDebugEventMsg = isDebugEventMsg;
    exports2.isCommOpenMsg = isCommOpenMsg;
    exports2.isCommCloseMsg = isCommCloseMsg;
    exports2.isCommMsgMsg = isCommMsgMsg;
    exports2.isInfoRequestMsg = isInfoRequestMsg;
    exports2.isExecuteReplyMsg = isExecuteReplyMsg;
    exports2.isDebugRequestMsg = isDebugRequestMsg;
    exports2.isDebugReplyMsg = isDebugReplyMsg;
    exports2.isInputRequestMsg = isInputRequestMsg;
    exports2.isInputReplyMsg = isInputReplyMsg;
    var coreutils_12 = require_index_node3();
    function createMessage(options) {
      var _a6, _b, _c, _d2, _e, _f;
      return {
        buffers: (_a6 = options.buffers) !== null && _a6 !== void 0 ? _a6 : [],
        channel: options.channel,
        content: options.content,
        header: {
          date: (/* @__PURE__ */ new Date()).toISOString(),
          msg_id: (_b = options.msgId) !== null && _b !== void 0 ? _b : coreutils_12.UUID.uuid4(),
          msg_type: options.msgType,
          session: options.session,
          username: (_c = options.username) !== null && _c !== void 0 ? _c : "",
          subshell_id: (_d2 = options.subshellId) !== null && _d2 !== void 0 ? _d2 : null,
          version: "5.2"
        },
        metadata: (_e = options.metadata) !== null && _e !== void 0 ? _e : {},
        parent_header: (_f = options.parentHeader) !== null && _f !== void 0 ? _f : {}
      };
    }
    function isStreamMsg(msg) {
      return msg.header.msg_type === "stream";
    }
    function isDisplayDataMsg(msg) {
      return msg.header.msg_type === "display_data";
    }
    function isUpdateDisplayDataMsg(msg) {
      return msg.header.msg_type === "update_display_data";
    }
    function isExecuteInputMsg(msg) {
      return msg.header.msg_type === "execute_input";
    }
    function isExecuteResultMsg(msg) {
      return msg.header.msg_type === "execute_result";
    }
    function isErrorMsg(msg) {
      return msg.header.msg_type === "error";
    }
    function isStatusMsg(msg) {
      return msg.header.msg_type === "status";
    }
    function isClearOutputMsg(msg) {
      return msg.header.msg_type === "clear_output";
    }
    function isDebugEventMsg(msg) {
      return msg.header.msg_type === "debug_event";
    }
    function isCommOpenMsg(msg) {
      return msg.header.msg_type === "comm_open";
    }
    function isCommCloseMsg(msg) {
      return msg.header.msg_type === "comm_close";
    }
    function isCommMsgMsg(msg) {
      return msg.header.msg_type === "comm_msg";
    }
    function isInfoRequestMsg(msg) {
      return msg.header.msg_type === "kernel_info_request";
    }
    function isExecuteReplyMsg(msg) {
      return msg.header.msg_type === "execute_reply";
    }
    function isDebugRequestMsg(msg) {
      return msg.header.msg_type === "debug_request";
    }
    function isDebugReplyMsg(msg) {
      return msg.header.msg_type === "debug_reply";
    }
    function isInputRequestMsg(msg) {
      return msg.header.msg_type === "input_request";
    }
    function isInputReplyMsg(msg) {
      return msg.header.msg_type === "input_reply";
    }
    var supportedKernelWebSocketProtocols;
    (function(supportedKernelWebSocketProtocols2) {
      supportedKernelWebSocketProtocols2["v1KernelWebsocketJupyterOrg"] = "v1.kernel.websocket.jupyter.org";
    })(supportedKernelWebSocketProtocols || (exports2.supportedKernelWebSocketProtocols = supportedKernelWebSocketProtocols = {}));
  }
});

// ../../node_modules/@jupyterlab/services/lib/kernel/serialize.js
var require_serialize = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/kernel/serialize.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.serialize = serialize3;
    exports2.deserialize = deserialize;
    var KernelMessage = __importStar(require_messages());
    function serialize3(msg, protocol = "") {
      switch (protocol) {
        case KernelMessage.supportedKernelWebSocketProtocols.v1KernelWebsocketJupyterOrg:
          return Private.serializeV1KernelWebsocketJupyterOrg(msg);
        default:
          return Private.serializeDefault(msg);
      }
    }
    function deserialize(data, protocol = "") {
      switch (protocol) {
        case KernelMessage.supportedKernelWebSocketProtocols.v1KernelWebsocketJupyterOrg:
          return Private.deserializeV1KernelWebsocketJupyterOrg(data);
        default:
          return Private.deserializeDefault(data);
      }
    }
    var Private;
    (function(Private2) {
      function deserializeV1KernelWebsocketJupyterOrg(binMsg) {
        let msg;
        const data = new DataView(binMsg);
        const offsetNumber = Number(data.getBigUint64(
          0,
          true
          /* littleEndian */
        ));
        let offsets = [];
        for (let i2 = 0; i2 < offsetNumber; i2++) {
          offsets.push(Number(data.getBigUint64(
            8 * (i2 + 1),
            true
            /* littleEndian */
          )));
        }
        const decoder = new TextDecoder("utf8");
        const channel = decoder.decode(binMsg.slice(offsets[0], offsets[1]));
        const header = JSON.parse(decoder.decode(binMsg.slice(offsets[1], offsets[2])));
        const parent_header = JSON.parse(decoder.decode(binMsg.slice(offsets[2], offsets[3])));
        const metadata = JSON.parse(decoder.decode(binMsg.slice(offsets[3], offsets[4])));
        const content3 = JSON.parse(decoder.decode(binMsg.slice(offsets[4], offsets[5])));
        let buffers = [];
        for (let i2 = 5; i2 < offsets.length - 1; i2++) {
          buffers.push(new DataView(binMsg.slice(offsets[i2], offsets[i2 + 1])));
        }
        msg = {
          channel,
          header,
          parent_header,
          metadata,
          content: content3,
          buffers
        };
        return msg;
      }
      Private2.deserializeV1KernelWebsocketJupyterOrg = deserializeV1KernelWebsocketJupyterOrg;
      function serializeV1KernelWebsocketJupyterOrg(msg) {
        const header = JSON.stringify(msg.header);
        const parentHeader = msg.parent_header == null ? "{}" : JSON.stringify(msg.parent_header);
        const metadata = JSON.stringify(msg.metadata);
        const content3 = JSON.stringify(msg.content);
        const buffers = msg.buffers !== void 0 ? msg.buffers : [];
        const offsetNumber = 1 + 4 + buffers.length + 1;
        let offsets = [];
        offsets.push(8 * (1 + offsetNumber));
        offsets.push(msg.channel.length + offsets[offsets.length - 1]);
        const encoder = new TextEncoder();
        const channelEncoded = encoder.encode(msg.channel);
        const headerEncoded = encoder.encode(header);
        const parentHeaderEncoded = encoder.encode(parentHeader);
        const metadataEncoded = encoder.encode(metadata);
        const contentEncoded = encoder.encode(content3);
        const binMsgNoBuff = new Uint8Array(channelEncoded.length + headerEncoded.length + parentHeaderEncoded.length + metadataEncoded.length + contentEncoded.length);
        binMsgNoBuff.set(channelEncoded);
        binMsgNoBuff.set(headerEncoded, channelEncoded.length);
        binMsgNoBuff.set(parentHeaderEncoded, channelEncoded.length + headerEncoded.length);
        binMsgNoBuff.set(metadataEncoded, channelEncoded.length + headerEncoded.length + parentHeaderEncoded.length);
        binMsgNoBuff.set(contentEncoded, channelEncoded.length + headerEncoded.length + parentHeaderEncoded.length + metadataEncoded.length);
        for (let length of [
          headerEncoded.length,
          parentHeaderEncoded.length,
          metadataEncoded.length,
          contentEncoded.length
        ]) {
          offsets.push(length + offsets[offsets.length - 1]);
        }
        let buffersByteLength = 0;
        for (let buffer2 of buffers) {
          let length = buffer2.byteLength;
          offsets.push(length + offsets[offsets.length - 1]);
          buffersByteLength += length;
        }
        const binMsg = new Uint8Array(8 * (1 + offsetNumber) + binMsgNoBuff.byteLength + buffersByteLength);
        const word = new ArrayBuffer(8);
        const data = new DataView(word);
        data.setBigUint64(
          0,
          BigInt(offsetNumber),
          true
          /* littleEndian */
        );
        binMsg.set(new Uint8Array(word), 0);
        for (let i2 = 0; i2 < offsets.length; i2++) {
          data.setBigUint64(
            0,
            BigInt(offsets[i2]),
            true
            /* littleEndian */
          );
          binMsg.set(new Uint8Array(word), 8 * (i2 + 1));
        }
        binMsg.set(binMsgNoBuff, offsets[0]);
        for (let i2 = 0; i2 < buffers.length; i2++) {
          const buffer2 = buffers[i2];
          binMsg.set(new Uint8Array(ArrayBuffer.isView(buffer2) ? buffer2.buffer : buffer2), offsets[5 + i2]);
        }
        return binMsg.buffer;
      }
      Private2.serializeV1KernelWebsocketJupyterOrg = serializeV1KernelWebsocketJupyterOrg;
      function deserializeDefault(data) {
        let value;
        if (typeof data === "string") {
          value = JSON.parse(data);
        } else {
          value = deserializeBinary(data);
        }
        return value;
      }
      Private2.deserializeDefault = deserializeDefault;
      function serializeDefault(msg) {
        var _a6;
        let value;
        if ((_a6 = msg.buffers) === null || _a6 === void 0 ? void 0 : _a6.length) {
          value = serializeBinary(msg);
        } else {
          value = JSON.stringify(msg);
        }
        return value;
      }
      Private2.serializeDefault = serializeDefault;
      function deserializeBinary(buf) {
        const data = new DataView(buf);
        const nbufs = data.getUint32(0);
        const offsets = [];
        if (nbufs < 2) {
          throw new Error("Invalid incoming Kernel Message");
        }
        for (let i2 = 1; i2 <= nbufs; i2++) {
          offsets.push(data.getUint32(i2 * 4));
        }
        const jsonBytes = new Uint8Array(buf.slice(offsets[0], offsets[1]));
        const msg = JSON.parse(new TextDecoder("utf8").decode(jsonBytes));
        msg.buffers = [];
        for (let i2 = 1; i2 < nbufs; i2++) {
          const start = offsets[i2];
          const stop = offsets[i2 + 1] || buf.byteLength;
          msg.buffers.push(new DataView(buf.slice(start, stop)));
        }
        return msg;
      }
      function serializeBinary(msg) {
        const offsets = [];
        const buffers = [];
        const encoder = new TextEncoder();
        let origBuffers = [];
        if (msg.buffers !== void 0) {
          origBuffers = msg.buffers;
          delete msg["buffers"];
        }
        const jsonUtf8 = encoder.encode(JSON.stringify(msg));
        buffers.push(jsonUtf8.buffer);
        for (let i2 = 0; i2 < origBuffers.length; i2++) {
          const b = origBuffers[i2];
          buffers.push(ArrayBuffer.isView(b) ? b.buffer : b);
        }
        const nbufs = buffers.length;
        offsets.push(4 * (nbufs + 1));
        for (let i2 = 0; i2 + 1 < buffers.length; i2++) {
          offsets.push(offsets[offsets.length - 1] + buffers[i2].byteLength);
        }
        const msgBuf = new Uint8Array(offsets[offsets.length - 1] + buffers[buffers.length - 1].byteLength);
        const view = new DataView(msgBuf.buffer);
        view.setUint32(0, nbufs);
        for (let i2 = 0; i2 < offsets.length; i2++) {
          view.setUint32(4 * (i2 + 1), offsets[i2]);
        }
        for (let i2 = 0; i2 < buffers.length; i2++) {
          msgBuf.set(new Uint8Array(buffers[i2]), offsets[i2]);
        }
        return msgBuf.buffer;
      }
    })(Private || (Private = {}));
  }
});

// ../../node_modules/ws/index.js
var require_ws = __commonJS({
  "../../node_modules/ws/index.js"(exports2, module2) {
    "use strict";
    var WebSocket3 = require_websocket();
    WebSocket3.createWebSocketStream = require_stream();
    WebSocket3.Server = require_websocket_server();
    WebSocket3.Receiver = require_receiver();
    WebSocket3.Sender = require_sender();
    WebSocket3.WebSocket = WebSocket3;
    WebSocket3.WebSocketServer = WebSocket3.Server;
    module2.exports = WebSocket3;
  }
});

// ../../node_modules/@jupyterlab/services/lib/serverconnection.js
var require_serverconnection = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/serverconnection.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ServerConnection = void 0;
    var coreutils_12 = require_lib27();
    var serialize_1 = require_serialize();
    var WEBSOCKET;
    if (typeof window === "undefined") {
      WEBSOCKET = require_ws();
    } else {
      WEBSOCKET = WebSocket;
    }
    var ServerConnection2;
    (function(ServerConnection3) {
      function makeSettings(options) {
        return Private.makeSettings(options);
      }
      ServerConnection3.makeSettings = makeSettings;
      function makeRequest(url, init4, settings) {
        return Private.handleRequest(url, init4, settings);
      }
      ServerConnection3.makeRequest = makeRequest;
      class ResponseError extends Error {
        /**
         * Create a ResponseError from a response, handling the traceback and message
         * as appropriate.
         *
         * @param response The response object.
         *
         * @returns A promise that resolves with a `ResponseError` object.
         */
        static async create(response) {
          try {
            const data = await response.json();
            const { message, traceback } = data;
            if (traceback) {
              console.error(traceback);
            }
            return new ResponseError(response, message !== null && message !== void 0 ? message : ResponseError._defaultMessage(response), traceback !== null && traceback !== void 0 ? traceback : "");
          } catch (e2) {
            console.debug(e2);
            return new ResponseError(response);
          }
        }
        /**
         * Create a new response error.
         */
        constructor(response, message = ResponseError._defaultMessage(response), traceback = "") {
          super(message);
          this.response = response;
          this.traceback = traceback;
        }
        static _defaultMessage(response) {
          return `Invalid response: ${response.status} ${response.statusText}`;
        }
      }
      ServerConnection3.ResponseError = ResponseError;
      class NetworkError extends TypeError {
        /**
         * Create a new network error.
         */
        constructor(original) {
          super(original.message);
          this.stack = original.stack;
        }
      }
      ServerConnection3.NetworkError = NetworkError;
    })(ServerConnection2 || (exports2.ServerConnection = ServerConnection2 = {}));
    var Private;
    (function(Private2) {
      function makeSettings(options = {}) {
        var _a6;
        const pageBaseUrl = coreutils_12.PageConfig.getBaseUrl();
        const pageWsUrl = coreutils_12.PageConfig.getWsUrl();
        const baseUrl = coreutils_12.URLExt.normalize(options.baseUrl) || pageBaseUrl;
        let wsUrl = options.wsUrl;
        if (!wsUrl && baseUrl === pageBaseUrl) {
          wsUrl = pageWsUrl;
        }
        if (!wsUrl && baseUrl.indexOf("http") === 0) {
          wsUrl = "ws" + baseUrl.slice(4);
        }
        wsUrl = wsUrl !== null && wsUrl !== void 0 ? wsUrl : pageWsUrl;
        const appendTokenConfig = coreutils_12.PageConfig.getOption("appendToken").toLowerCase();
        let appendToken;
        if (appendTokenConfig === "") {
          appendToken = typeof window === "undefined" || typeof process !== "undefined" && ((_a6 = process === null || process === void 0 ? void 0 : process.env) === null || _a6 === void 0 ? void 0 : _a6.JEST_WORKER_ID) !== void 0 || coreutils_12.URLExt.getHostName(pageBaseUrl) !== coreutils_12.URLExt.getHostName(wsUrl);
        } else {
          appendToken = appendTokenConfig === "true";
        }
        return {
          init: { cache: "no-store", credentials: "same-origin" },
          fetch,
          Headers,
          Request,
          WebSocket: WEBSOCKET,
          token: coreutils_12.PageConfig.getToken(),
          appUrl: coreutils_12.PageConfig.getOption("appUrl"),
          appendToken,
          serializer: { serialize: serialize_1.serialize, deserialize: serialize_1.deserialize },
          ...options,
          baseUrl,
          wsUrl
        };
      }
      Private2.makeSettings = makeSettings;
      function handleRequest(url, init4, settings) {
        var _a6;
        if (url.indexOf(settings.baseUrl) !== 0) {
          throw new Error("Can only be used for notebook server requests");
        }
        const cache = (_a6 = init4.cache) !== null && _a6 !== void 0 ? _a6 : settings.init.cache;
        if (cache === "no-store") {
          url += (/\?/.test(url) ? "&" : "?") + (/* @__PURE__ */ new Date()).getTime();
        }
        const request = new settings.Request(url, { ...settings.init, ...init4 });
        let authenticated = false;
        if (settings.token) {
          authenticated = true;
          request.headers.append("Authorization", `token ${settings.token}`);
        }
        if (typeof document !== "undefined") {
          const xsrfToken = getCookie("_xsrf");
          if (xsrfToken !== void 0) {
            authenticated = true;
            request.headers.append("X-XSRFToken", xsrfToken);
          }
        }
        if (!request.headers.has("Content-Type") && authenticated) {
          request.headers.set("Content-Type", "application/json");
        }
        return settings.fetch.call(null, request).catch((e2) => {
          throw new ServerConnection2.NetworkError(e2);
        });
      }
      Private2.handleRequest = handleRequest;
      function getCookie(name3) {
        let cookie = "";
        try {
          cookie = document.cookie;
        } catch (e2) {
          return;
        }
        const matches4 = cookie.match("\\b" + name3 + "=([^;]*)\\b");
        return matches4 === null || matches4 === void 0 ? void 0 : matches4[1];
      }
    })(Private || (Private = {}));
  }
});

// ../../node_modules/@jupyterlab/services/lib/basemanager.js
var require_basemanager = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/basemanager.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.BaseManager = void 0;
    var signaling_1 = require_dist7();
    var serverconnection_1 = require_serverconnection();
    var BaseManager = class {
      constructor(options) {
        var _a6;
        this._isDisposed = false;
        this._disposed = new signaling_1.Signal(this);
        this.serverSettings = (_a6 = options.serverSettings) !== null && _a6 !== void 0 ? _a6 : serverconnection_1.ServerConnection.makeSettings();
      }
      /**
       * A signal emitted when the delegate is disposed.
       */
      get disposed() {
        return this._disposed;
      }
      /**
       * Test whether the delegate has been disposed.
       */
      get isDisposed() {
        return this._isDisposed;
      }
      /**
       * Whether the manager is active.
       */
      get isActive() {
        return true;
      }
      /**
       * Dispose of the delegate and invoke the callback function.
       */
      dispose() {
        if (this.isDisposed) {
          return;
        }
        this._isDisposed = true;
        this._disposed.emit(void 0);
        signaling_1.Signal.clearData(this);
      }
    };
    exports2.BaseManager = BaseManager;
  }
});

// ../../node_modules/@jupyterlab/services/lib/config/index.js
var require_config5 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/config/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ConfigWithDefaults = exports2.ConfigSection = exports2.ConfigSectionManager = void 0;
    var coreutils_12 = require_lib27();
    var __1 = require_lib29();
    var SERVICE_CONFIG_URL = "api/config";
    var ConfigSectionManager = class {
      /**
       * Create a config section manager.
       */
      constructor(options) {
        var _a6;
        this.serverSettings = (_a6 = options.serverSettings) !== null && _a6 !== void 0 ? _a6 : __1.ServerConnection.makeSettings();
      }
      /**
       * Create a config section.
       */
      async create(options) {
        const section = new DefaultConfigSection({
          ...options,
          serverSettings: this.serverSettings
        });
        await section.load();
        return section;
      }
    };
    exports2.ConfigSectionManager = ConfigSectionManager;
    var ConfigSection;
    (function(ConfigSection2) {
      async function create3(options) {
        if (!_configSectionManager) {
          const section2 = new DefaultConfigSection(options);
          await section2.load();
          return section2;
        }
        const section = await _configSectionManager.create(options);
        return section;
      }
      ConfigSection2.create = create3;
      let _configSectionManager;
      function _setConfigSectionManager(manager) {
        if (_configSectionManager) {
          throw new Error("ConfigSectionManager already set. If you would like to create a config section, use the `IConfigSectionManager` token in a plugin.");
        }
        _configSectionManager = manager;
      }
      ConfigSection2._setConfigSectionManager = _setConfigSectionManager;
    })(ConfigSection || (exports2.ConfigSection = ConfigSection = {}));
    var DefaultConfigSection = class {
      /**
       * Construct a new config section.
       */
      constructor(options) {
        var _a6;
        this._url = "unknown";
        const settings = this.serverSettings = (_a6 = options.serverSettings) !== null && _a6 !== void 0 ? _a6 : __1.ServerConnection.makeSettings();
        this._url = coreutils_12.URLExt.join(settings.baseUrl, SERVICE_CONFIG_URL, encodeURIComponent(options.name));
      }
      /**
       * Get the data for this section.
       */
      get data() {
        return this._data;
      }
      /**
       * Load the initial data for this section.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/config).
       *
       * The promise is fulfilled on a valid response and rejected otherwise.
       */
      async load() {
        const response = await __1.ServerConnection.makeRequest(this._url, {}, this.serverSettings);
        if (response.status !== 200) {
          const err = await __1.ServerConnection.ResponseError.create(response);
          throw err;
        }
        this._data = await response.json();
      }
      /**
       * Modify the stored config values.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/config).
       *
       * The promise is fulfilled on a valid response and rejected otherwise.
       *
       * Updates the local data immediately, sends the change to the server,
       * and updates the local data with the response, and fulfils the promise
       * with that data.
       */
      async update(newdata) {
        this._data = { ...this._data, ...newdata };
        const init4 = {
          method: "PATCH",
          body: JSON.stringify(newdata)
        };
        const response = await __1.ServerConnection.makeRequest(this._url, init4, this.serverSettings);
        if (response.status !== 200) {
          const err = await __1.ServerConnection.ResponseError.create(response);
          throw err;
        }
        this._data = await response.json();
        return this._data;
      }
    };
    var ConfigWithDefaults = class {
      /**
       * Create a new config with defaults.
       */
      constructor(options) {
        var _a6, _b;
        this._className = "";
        this._section = options.section;
        this._defaults = (_a6 = options.defaults) !== null && _a6 !== void 0 ? _a6 : {};
        this._className = (_b = options.className) !== null && _b !== void 0 ? _b : "";
      }
      /**
       * Get data from the config section or fall back to defaults.
       */
      get(key2) {
        const data = this._classData();
        return key2 in data ? data[key2] : this._defaults[key2];
      }
      /**
       * Set a config value.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/config).
       *
       * The promise is fulfilled on a valid response and rejected otherwise.
       *
       * Sends the update to the server, and changes our local copy of the data
       * immediately.
       */
      set(key2, value) {
        const d = {};
        d[key2] = value;
        if (this._className) {
          const d2 = {};
          d2[this._className] = d;
          return this._section.update(d2);
        } else {
          return this._section.update(d);
        }
      }
      /**
       * Get data from the Section with our classname, if available.
       *
       * #### Notes
       * If we have no classname, get all of the data in the Section
       */
      _classData() {
        const data = this._section.data;
        if (this._className && this._className in data) {
          return data[this._className];
        }
        return data;
      }
    };
    exports2.ConfigWithDefaults = ConfigWithDefaults;
  }
});

// ../../node_modules/@jupyterlab/services/lib/connectionstatus.js
var require_connectionstatus = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/connectionstatus.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ConnectionStatus = void 0;
    var ConnectionStatus = class {
      constructor() {
        this.isConnected = true;
      }
    };
    exports2.ConnectionStatus = ConnectionStatus;
  }
});

// ../../node_modules/@lumino/disposable/dist/index.js
var require_dist8 = __commonJS({
  "../../node_modules/@lumino/disposable/dist/index.js"(exports2, module2) {
    (function(global2, factory) {
      typeof exports2 === "object" && typeof module2 !== "undefined" ? factory(exports2, require_dist7()) : typeof define === "function" && define.amd ? define(["exports", "@lumino/signaling"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.lumino_disposable = {}, global2.lumino_signaling));
    })(exports2, (function(exports3, signaling) {
      "use strict";
      class DisposableDelegate {
        /**
         * Construct a new disposable delegate.
         *
         * @param fn - The callback function to invoke on dispose.
         */
        constructor(fn) {
          this._fn = fn;
        }
        /**
         * Test whether the delegate has been disposed.
         */
        get isDisposed() {
          return !this._fn;
        }
        /**
         * Dispose of the delegate and invoke the callback function.
         */
        dispose() {
          if (!this._fn) {
            return;
          }
          let fn = this._fn;
          this._fn = null;
          fn();
        }
      }
      class ObservableDisposableDelegate extends DisposableDelegate {
        constructor() {
          super(...arguments);
          this._disposed = new signaling.Signal(this);
        }
        /**
         * A signal emitted when the delegate is disposed.
         */
        get disposed() {
          return this._disposed;
        }
        /**
         * Dispose of the delegate and invoke the callback function.
         */
        dispose() {
          if (this.isDisposed) {
            return;
          }
          super.dispose();
          this._disposed.emit(void 0);
          signaling.Signal.clearData(this);
        }
      }
      class DisposableSet {
        constructor() {
          this._isDisposed = false;
          this._items = /* @__PURE__ */ new Set();
        }
        /**
         * Test whether the set has been disposed.
         */
        get isDisposed() {
          return this._isDisposed;
        }
        /**
         * Dispose of the set and the items it contains.
         *
         * #### Notes
         * Items are disposed in the order they are added to the set.
         */
        dispose() {
          if (this._isDisposed) {
            return;
          }
          this._isDisposed = true;
          this._items.forEach((item) => {
            item.dispose();
          });
          this._items.clear();
        }
        /**
         * Test whether the set contains a specific item.
         *
         * @param item - The item of interest.
         *
         * @returns `true` if the set contains the item, `false` otherwise.
         */
        contains(item) {
          return this._items.has(item);
        }
        /**
         * Add a disposable item to the set.
         *
         * @param item - The item to add to the set.
         *
         * #### Notes
         * If the item is already contained in the set, this is a no-op.
         */
        add(item) {
          this._items.add(item);
        }
        /**
         * Remove a disposable item from the set.
         *
         * @param item - The item to remove from the set.
         *
         * #### Notes
         * If the item is not contained in the set, this is a no-op.
         */
        remove(item) {
          this._items.delete(item);
        }
        /**
         * Remove all items from the set.
         */
        clear() {
          this._items.clear();
        }
      }
      (function(DisposableSet2) {
        function from4(items) {
          let set3 = new DisposableSet2();
          for (const item of items) {
            set3.add(item);
          }
          return set3;
        }
        DisposableSet2.from = from4;
      })(DisposableSet || (DisposableSet = {}));
      class ObservableDisposableSet extends DisposableSet {
        constructor() {
          super(...arguments);
          this._disposed = new signaling.Signal(this);
        }
        /**
         * A signal emitted when the set is disposed.
         */
        get disposed() {
          return this._disposed;
        }
        /**
         * Dispose of the set and the items it contains.
         *
         * #### Notes
         * Items are disposed in the order they are added to the set.
         */
        dispose() {
          if (this.isDisposed) {
            return;
          }
          super.dispose();
          this._disposed.emit(void 0);
          signaling.Signal.clearData(this);
        }
      }
      (function(ObservableDisposableSet2) {
        function from4(items) {
          let set3 = new ObservableDisposableSet2();
          for (const item of items) {
            set3.add(item);
          }
          return set3;
        }
        ObservableDisposableSet2.from = from4;
      })(ObservableDisposableSet || (ObservableDisposableSet = {}));
      exports3.DisposableDelegate = DisposableDelegate;
      exports3.DisposableSet = DisposableSet;
      exports3.ObservableDisposableDelegate = ObservableDisposableDelegate;
      exports3.ObservableDisposableSet = ObservableDisposableSet;
    }));
  }
});

// ../../node_modules/@jupyterlab/services/lib/validate.js
var require_validate2 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/validate.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.validateProperty = validateProperty;
    function validateProperty(object, name3, typeName, values = []) {
      if (!object.hasOwnProperty(name3)) {
        throw Error(`Missing property '${name3}'`);
      }
      const value = object[name3];
      if (typeName !== void 0) {
        let valid2 = true;
        switch (typeName) {
          case "array":
            valid2 = Array.isArray(value);
            break;
          case "object":
            valid2 = typeof value !== "undefined";
            break;
          default:
            valid2 = typeof value === typeName;
        }
        if (!valid2) {
          throw new Error(`Property '${name3}' is not of type '${typeName}'`);
        }
        if (values.length > 0) {
          let valid3 = true;
          switch (typeName) {
            case "string":
            case "number":
            case "boolean":
              valid3 = values.includes(value);
              break;
            default:
              valid3 = values.findIndex((v) => v === value) >= 0;
              break;
          }
          if (!valid3) {
            throw new Error(`Property '${name3}' is not one of the valid values ${JSON.stringify(values)}`);
          }
        }
      }
    }
  }
});

// ../../node_modules/@jupyterlab/services/lib/contents/validate.js
var require_validate3 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/contents/validate.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.validateContentsModel = validateContentsModel;
    exports2.validateCheckpointModel = validateCheckpointModel;
    var validate_1 = require_validate2();
    function validateContentsModel(model) {
      (0, validate_1.validateProperty)(model, "name", "string");
      (0, validate_1.validateProperty)(model, "path", "string");
      (0, validate_1.validateProperty)(model, "type", "string");
      (0, validate_1.validateProperty)(model, "created", "string");
      (0, validate_1.validateProperty)(model, "last_modified", "string");
      (0, validate_1.validateProperty)(model, "mimetype", "object");
      (0, validate_1.validateProperty)(model, "content", "object");
      (0, validate_1.validateProperty)(model, "format", "object");
    }
    function validateCheckpointModel(model) {
      (0, validate_1.validateProperty)(model, "id", "string");
      (0, validate_1.validateProperty)(model, "last_modified", "string");
    }
  }
});

// ../../node_modules/@jupyterlab/services/lib/contents/index.js
var require_contents = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/contents/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.RestContentProvider = exports2.Drive = exports2.ContentsManager = exports2.Contents = void 0;
    var coreutils_12 = require_lib27();
    var disposable_1 = require_dist8();
    var signaling_1 = require_dist7();
    var __1 = require_lib29();
    var validate5 = __importStar(require_validate3());
    var SERVICE_DRIVE_URL = "api/contents";
    var FILES_URL = "files";
    var Contents;
    (function(Contents2) {
      function validateContentsModel(contents) {
        validate5.validateContentsModel(contents);
      }
      Contents2.validateContentsModel = validateContentsModel;
      function validateCheckpointModel(checkpoint) {
        validate5.validateCheckpointModel(checkpoint);
      }
      Contents2.validateCheckpointModel = validateCheckpointModel;
    })(Contents || (exports2.Contents = Contents = {}));
    var ContentsManager = class {
      /**
       * Construct a new contents manager object.
       *
       * @param options - The options used to initialize the object.
       */
      constructor(options = {}) {
        var _a6, _b;
        this._isDisposed = false;
        this._additionalDrives = /* @__PURE__ */ new Map();
        this._fileChanged = new signaling_1.Signal(this);
        const serverSettings = this.serverSettings = (_a6 = options.serverSettings) !== null && _a6 !== void 0 ? _a6 : __1.ServerConnection.makeSettings();
        this._defaultDrive = (_b = options.defaultDrive) !== null && _b !== void 0 ? _b : new Drive({ serverSettings });
        this._defaultDrive.fileChanged.connect(this._onFileChanged, this);
      }
      /**
       * The default drive associated with the manager.
       */
      get defaultDrive() {
        return this._defaultDrive;
      }
      /**
       * A signal emitted when a file operation takes place.
       */
      get fileChanged() {
        return this._fileChanged;
      }
      /**
       * Test whether the manager has been disposed.
       */
      get isDisposed() {
        return this._isDisposed;
      }
      /**
       * Dispose of the resources held by the manager.
       */
      dispose() {
        if (this.isDisposed) {
          return;
        }
        this._isDisposed = true;
        signaling_1.Signal.clearData(this);
      }
      /**
       * Add an `IDrive` to the manager.
       */
      addDrive(drive) {
        this._additionalDrives.set(drive.name, drive);
        drive.fileChanged.connect(this._onFileChanged, this);
      }
      /**
       * Given a path, get a shared model factory from the relevant backend.
       * The factory defined on content provider best matching the given path
       * takes precedence over the factory defined on the drive as a whole.
       * Returns `null` if the backend does not provide one.
       */
      getSharedModelFactory(path45, options) {
        var _a6, _b;
        const [drive] = this._driveForPath(path45);
        const provider = (_a6 = drive.contentProviderRegistry) === null || _a6 === void 0 ? void 0 : _a6.getProvider(options === null || options === void 0 ? void 0 : options.contentProviderId);
        if (provider === null || provider === void 0 ? void 0 : provider.sharedModelFactory) {
          return provider.sharedModelFactory;
        }
        return (_b = drive.sharedModelFactory) !== null && _b !== void 0 ? _b : null;
      }
      /**
       * Given a path of the form `drive:local/portion/of/it.txt`
       * get the local part of it.
       *
       * @param path the path.
       *
       * @returns The local part of the path.
       */
      localPath(path45) {
        const parts = path45.split("/");
        const firstParts = parts[0].split(":");
        if (firstParts.length === 1 || !this._additionalDrives.has(firstParts[0])) {
          return coreutils_12.PathExt.removeSlash(path45);
        }
        return coreutils_12.PathExt.join(firstParts.slice(1).join(":"), ...parts.slice(1));
      }
      /**
       * Normalize a global path. Reduces '..' and '.' parts, and removes
       * leading slashes from the local part of the path, while retaining
       * the drive name if it exists.
       *
       * @param path the path.
       *
       * @returns The normalized path.
       */
      normalize(path45) {
        const parts = path45.split(":");
        if (parts.length === 1) {
          return coreutils_12.PathExt.normalize(path45);
        }
        return `${parts[0]}:${coreutils_12.PathExt.normalize(parts.slice(1).join(":"))}`;
      }
      /**
       * Resolve a global path, starting from the root path. Behaves like
       * posix-path.resolve, with 3 differences:
       *  - will never prepend cwd
       *  - if root has a drive name, the result is prefixed with "<drive>:"
       *  - before adding drive name, leading slashes are removed
       *
       * @param path the path.
       *
       * @returns The normalized path.
       */
      resolvePath(root6, path45) {
        const driveName = this.driveName(root6);
        const localPath = this.localPath(root6);
        const resolved = coreutils_12.PathExt.resolve("/", localPath, path45);
        return driveName ? `${driveName}:${resolved}` : resolved;
      }
      /**
       * Given a path of the form `drive:local/portion/of/it.txt`
       * get the name of the drive. If the path is missing
       * a drive portion, returns an empty string.
       *
       * @param path the path.
       *
       * @returns The drive name for the path, or the empty string.
       */
      driveName(path45) {
        const parts = path45.split("/");
        const firstParts = parts[0].split(":");
        if (firstParts.length === 1) {
          return "";
        }
        if (this._additionalDrives.has(firstParts[0])) {
          return firstParts[0];
        }
        return "";
      }
      /**
       * Get a file or directory.
       *
       * @param path The path to the file.
       *
       * @param options The options used to fetch the file.
       *
       * @returns A promise which resolves with the file content.
       */
      get(path45, options) {
        const [drive, localPath] = this._driveForPath(path45);
        return drive.get(localPath, options).then((contentsModel) => {
          const listing = [];
          if (contentsModel.type === "directory" && contentsModel.content) {
            for (const item of contentsModel.content) {
              listing.push({ ...item, path: this._toGlobalPath(drive, item.path) });
            }
            return {
              ...contentsModel,
              path: this._toGlobalPath(drive, localPath),
              content: listing,
              serverPath: contentsModel.path
            };
          } else {
            return {
              ...contentsModel,
              path: this._toGlobalPath(drive, localPath),
              serverPath: contentsModel.path
            };
          }
        });
      }
      /**
       * Get an encoded download url given a file path.
       *
       * @param path - An absolute POSIX file path on the server.
       *
       * #### Notes
       * It is expected that the path contains no relative paths.
       *
       * The returned URL may include a query parameter.
       */
      getDownloadUrl(path45) {
        const [drive, localPath] = this._driveForPath(path45);
        return drive.getDownloadUrl(localPath);
      }
      /**
       * Create a new untitled file or directory in the specified directory path.
       *
       * @param options The options used to create the file.
       *
       * @returns A promise which resolves with the created file content when the
       *    file is created.
       */
      newUntitled(options = {}) {
        if (options.path) {
          const globalPath = this.normalize(options.path);
          const [drive, localPath] = this._driveForPath(globalPath);
          return drive.newUntitled({ ...options, path: localPath }).then((contentsModel) => {
            return {
              ...contentsModel,
              path: coreutils_12.PathExt.join(globalPath, contentsModel.name),
              serverPath: contentsModel.path
            };
          });
        } else {
          return this._defaultDrive.newUntitled(options);
        }
      }
      /**
       * Delete a file.
       *
       * @param path - The path to the file.
       *
       * @returns A promise which resolves when the file is deleted.
       */
      delete(path45) {
        const [drive, localPath] = this._driveForPath(path45);
        return drive.delete(localPath);
      }
      /**
       * Rename a file or directory.
       *
       * @param path - The original file path.
       *
       * @param newPath - The new file path.
       *
       * @returns A promise which resolves with the new file contents model when
       *   the file is renamed.
       */
      rename(path45, newPath) {
        const [drive1, path1] = this._driveForPath(path45);
        const [drive2, path210] = this._driveForPath(newPath);
        if (drive1 !== drive2) {
          throw Error("ContentsManager: renaming files must occur within a Drive");
        }
        return drive1.rename(path1, path210).then((contentsModel) => {
          return {
            ...contentsModel,
            path: this._toGlobalPath(drive1, path210),
            serverPath: contentsModel.path
          };
        });
      }
      /**
       * Save a file.
       *
       * @param path - The desired file path.
       *
       * @param options - Optional overrides to the model.
       *
       * @returns A promise which resolves with the file content model when the
       *   file is saved.
       *
       * #### Notes
       * Ensure that `model.content` is populated for the file.
       */
      save(path45, options = {}) {
        const globalPath = this.normalize(path45);
        const [drive, localPath] = this._driveForPath(path45);
        return drive.save(localPath, { ...options, path: localPath }).then((contentsModel) => {
          return {
            ...contentsModel,
            path: globalPath,
            serverPath: contentsModel.path
          };
        });
      }
      /**
       * Copy a file into a given directory.
       *
       * @param path - The original file path.
       *
       * @param toDir - The destination directory path.
       *
       * @returns A promise which resolves with the new contents model when the
       *  file is copied.
       *
       * #### Notes
       * The server will select the name of the copied file.
       */
      copy(fromFile, toDir) {
        const [drive1, path1] = this._driveForPath(fromFile);
        const [drive2, path210] = this._driveForPath(toDir);
        if (drive1 === drive2) {
          return drive1.copy(path1, path210).then((contentsModel) => {
            return {
              ...contentsModel,
              path: this._toGlobalPath(drive1, contentsModel.path),
              serverPath: contentsModel.path
            };
          });
        } else {
          throw Error("Copying files between drives is not currently implemented");
        }
      }
      /**
       * Create a checkpoint for a file.
       *
       * @param path - The path of the file.
       *
       * @returns A promise which resolves with the new checkpoint model when the
       *   checkpoint is created.
       */
      createCheckpoint(path45) {
        const [drive, localPath] = this._driveForPath(path45);
        return drive.createCheckpoint(localPath);
      }
      /**
       * List available checkpoints for a file.
       *
       * @param path - The path of the file.
       *
       * @returns A promise which resolves with a list of checkpoint models for
       *    the file.
       */
      listCheckpoints(path45) {
        const [drive, localPath] = this._driveForPath(path45);
        return drive.listCheckpoints(localPath);
      }
      /**
       * Restore a file to a known checkpoint state.
       *
       * @param path - The path of the file.
       *
       * @param checkpointID - The id of the checkpoint to restore.
       *
       * @returns A promise which resolves when the checkpoint is restored.
       */
      restoreCheckpoint(path45, checkpointID) {
        const [drive, localPath] = this._driveForPath(path45);
        return drive.restoreCheckpoint(localPath, checkpointID);
      }
      /**
       * Delete a checkpoint for a file.
       *
       * @param path - The path of the file.
       *
       * @param checkpointID - The id of the checkpoint to delete.
       *
       * @returns A promise which resolves when the checkpoint is deleted.
       */
      deleteCheckpoint(path45, checkpointID) {
        const [drive, localPath] = this._driveForPath(path45);
        return drive.deleteCheckpoint(localPath, checkpointID);
      }
      /**
       * Given a drive and a local path, construct a fully qualified
       * path. The inverse of `_driveForPath`.
       *
       * @param drive an `IDrive`.
       *
       * @param localPath the local path on the drive.
       *
       * @returns the fully qualified path.
       */
      _toGlobalPath(drive, localPath) {
        if (drive === this._defaultDrive) {
          return coreutils_12.PathExt.removeSlash(localPath);
        } else {
          return `${drive.name}:${coreutils_12.PathExt.removeSlash(localPath)}`;
        }
      }
      /**
       * Given a path, get the `IDrive to which it refers,
       * where the path satisfies the pattern
       * `'driveName:path/to/file'`. If there is no `driveName`
       * prepended to the path, it returns the default drive.
       *
       * @param path a path to a file.
       *
       * @returns A tuple containing an `IDrive` object for the path,
       * and a local path for that drive.
       */
      _driveForPath(path45) {
        const driveName = this.driveName(path45);
        const localPath = this.localPath(path45);
        if (driveName) {
          return [this._additionalDrives.get(driveName), localPath];
        } else {
          return [this._defaultDrive, localPath];
        }
      }
      /**
       * Respond to fileChanged signals from the drives attached to
       * the manager. This prepends the drive name to the path if necessary,
       * and then forwards the signal.
       */
      _onFileChanged(sender, args) {
        var _a6, _b;
        if (sender === this._defaultDrive) {
          this._fileChanged.emit(args);
        } else {
          let newValue = null;
          let oldValue = null;
          if ((_a6 = args.newValue) === null || _a6 === void 0 ? void 0 : _a6.path) {
            newValue = {
              ...args.newValue,
              path: this._toGlobalPath(sender, args.newValue.path)
            };
          }
          if ((_b = args.oldValue) === null || _b === void 0 ? void 0 : _b.path) {
            oldValue = {
              ...args.oldValue,
              path: this._toGlobalPath(sender, args.oldValue.path)
            };
          }
          this._fileChanged.emit({
            type: args.type,
            newValue,
            oldValue
          });
        }
      }
    };
    exports2.ContentsManager = ContentsManager;
    var Drive = class {
      /**
       * Construct a new contents manager object.
       *
       * @param options - The options used to initialize the object.
       */
      constructor(options = {}) {
        var _a6, _b, _c;
        this._isDisposed = false;
        this._fileChanged = new signaling_1.Signal(this);
        this.name = (_a6 = options.name) !== null && _a6 !== void 0 ? _a6 : "Default";
        this._apiEndpoint = (_b = options.apiEndpoint) !== null && _b !== void 0 ? _b : SERVICE_DRIVE_URL;
        this.serverSettings = (_c = options.serverSettings) !== null && _c !== void 0 ? _c : __1.ServerConnection.makeSettings();
        const restContentProvider = new RestContentProvider({
          apiEndpoint: this._apiEndpoint,
          serverSettings: this.serverSettings
        });
        this.contentProviderRegistry = new ContentProviderRegistry({
          defaultProvider: restContentProvider
        });
        this.contentProviderRegistry.fileChanged.connect((registry, change) => {
          this._fileChanged.emit(change);
        });
      }
      /**
       * A signal emitted when a file operation takes place.
       */
      get fileChanged() {
        return this._fileChanged;
      }
      /**
       * Test whether the manager has been disposed.
       */
      get isDisposed() {
        return this._isDisposed;
      }
      /**
       * Dispose of the resources held by the manager.
       */
      dispose() {
        if (this.isDisposed) {
          return;
        }
        this._isDisposed = true;
        signaling_1.Signal.clearData(this);
      }
      /**
       * Get a file or directory.
       *
       * @param localPath The path to the file.
       *
       * @param options The options used to fetch the file.
       *
       * @returns A promise which resolves with the file content.
       *
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model.
       */
      async get(localPath, options) {
        const contentProvider = this.contentProviderRegistry.getProvider(options === null || options === void 0 ? void 0 : options.contentProviderId);
        return contentProvider.get(localPath, options);
      }
      /**
       * Get an encoded download url given a file path.
       *
       * @param localPath - An absolute POSIX file path on the server.
       *
       * #### Notes
       * It is expected that the path contains no relative paths.
       *
       * The returned URL may include a query parameter.
       */
      getDownloadUrl(localPath) {
        const baseUrl = this.serverSettings.baseUrl;
        let url = coreutils_12.URLExt.join(baseUrl, FILES_URL, coreutils_12.URLExt.encodeParts(localPath));
        let cookie = "";
        try {
          cookie = document.cookie;
        } catch (e2) {
        }
        const xsrfTokenMatch = cookie.match("\\b_xsrf=([^;]*)\\b");
        if (xsrfTokenMatch) {
          const fullUrl = new URL(url);
          fullUrl.searchParams.append("_xsrf", xsrfTokenMatch[1]);
          url = fullUrl.toString();
        }
        return Promise.resolve(url);
      }
      /**
       * Create a new untitled file or directory in the specified directory path.
       *
       * @param options The options used to create the file.
       *
       * @returns A promise which resolves with the created file content when the
       *    file is created.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model.
       */
      async newUntitled(options = {}) {
        var _a6;
        let body3 = "{}";
        if (options) {
          if (options.ext) {
            options.ext = Private.normalizeExtension(options.ext);
          }
          body3 = JSON.stringify(options);
        }
        const settings = this.serverSettings;
        const url = this._getUrl((_a6 = options.path) !== null && _a6 !== void 0 ? _a6 : "");
        const init4 = {
          method: "POST",
          body: body3
        };
        const response = await __1.ServerConnection.makeRequest(url, init4, settings);
        if (response.status !== 201) {
          const err = await __1.ServerConnection.ResponseError.create(response);
          throw err;
        }
        const data = await response.json();
        validate5.validateContentsModel(data);
        this._fileChanged.emit({
          type: "new",
          oldValue: null,
          newValue: data
        });
        return data;
      }
      /**
       * Delete a file.
       *
       * @param localPath - The path to the file.
       *
       * @returns A promise which resolves when the file is deleted.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents).
       */
      async delete(localPath) {
        const url = this._getUrl(localPath);
        const settings = this.serverSettings;
        const init4 = { method: "DELETE" };
        const response = await __1.ServerConnection.makeRequest(url, init4, settings);
        if (response.status !== 204) {
          const err = await __1.ServerConnection.ResponseError.create(response);
          throw err;
        }
        this._fileChanged.emit({
          type: "delete",
          oldValue: { path: localPath },
          newValue: null
        });
      }
      /**
       * Rename a file or directory.
       *
       * @param oldLocalPath - The original file path.
       *
       * @param newLocalPath - The new file path.
       *
       * @returns A promise which resolves with the new file contents model when
       *   the file is renamed.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model.
       */
      async rename(oldLocalPath, newLocalPath) {
        const settings = this.serverSettings;
        const url = this._getUrl(oldLocalPath);
        const init4 = {
          method: "PATCH",
          body: JSON.stringify({ path: newLocalPath })
        };
        const response = await __1.ServerConnection.makeRequest(url, init4, settings);
        if (response.status !== 200) {
          const err = await __1.ServerConnection.ResponseError.create(response);
          throw err;
        }
        const data = await response.json();
        validate5.validateContentsModel(data);
        this._fileChanged.emit({
          type: "rename",
          oldValue: { path: oldLocalPath },
          newValue: data
        });
        return data;
      }
      /**
       * Save a file.
       *
       * @param localPath - The desired file path.
       *
       * @param options - Optional overrides to the model.
       *
       * @returns A promise which resolves with the file content model when the
       *   file is saved.
       *
       * #### Notes
       * Ensure that `model.content` is populated for the file.
       *
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model.
       */
      async save(localPath, options = {}) {
        const contentProvider = this.contentProviderRegistry.getProvider(options === null || options === void 0 ? void 0 : options.contentProviderId);
        const data = await contentProvider.save(localPath, options);
        this._fileChanged.emit({
          type: "save",
          oldValue: null,
          newValue: data
        });
        return data;
      }
      /**
       * Copy a file into a given directory.
       *
       * @param localPath - The original file path.
       *
       * @param toDir - The destination directory path.
       *
       * @returns A promise which resolves with the new contents model when the
       *  file is copied.
       *
       * #### Notes
       * The server will select the name of the copied file.
       *
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model.
       */
      async copy(fromFile, toDir) {
        const settings = this.serverSettings;
        const url = this._getUrl(toDir);
        const init4 = {
          method: "POST",
          body: JSON.stringify({ copy_from: fromFile })
        };
        const response = await __1.ServerConnection.makeRequest(url, init4, settings);
        if (response.status !== 201) {
          const err = await __1.ServerConnection.ResponseError.create(response);
          throw err;
        }
        const data = await response.json();
        validate5.validateContentsModel(data);
        this._fileChanged.emit({
          type: "new",
          oldValue: null,
          newValue: data
        });
        return data;
      }
      /**
       * Create a checkpoint for a file.
       *
       * @param localPath - The path of the file.
       *
       * @returns A promise which resolves with the new checkpoint model when the
       *   checkpoint is created.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model.
       */
      async createCheckpoint(localPath) {
        const url = this._getUrl(localPath, "checkpoints");
        const init4 = { method: "POST" };
        const response = await __1.ServerConnection.makeRequest(url, init4, this.serverSettings);
        if (response.status !== 201) {
          const err = await __1.ServerConnection.ResponseError.create(response);
          throw err;
        }
        const data = await response.json();
        validate5.validateCheckpointModel(data);
        return data;
      }
      /**
       * List available checkpoints for a file.
       *
       * @param localPath - The path of the file.
       *
       * @returns A promise which resolves with a list of checkpoint models for
       *    the file.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model.
       */
      async listCheckpoints(localPath) {
        const url = this._getUrl(localPath, "checkpoints");
        const response = await __1.ServerConnection.makeRequest(url, {}, this.serverSettings);
        if (response.status !== 200) {
          const err = await __1.ServerConnection.ResponseError.create(response);
          throw err;
        }
        const data = await response.json();
        if (!Array.isArray(data)) {
          throw new Error("Invalid Checkpoint list");
        }
        for (let i2 = 0; i2 < data.length; i2++) {
          validate5.validateCheckpointModel(data[i2]);
        }
        return data;
      }
      /**
       * Restore a file to a known checkpoint state.
       *
       * @param localPath - The path of the file.
       *
       * @param checkpointID - The id of the checkpoint to restore.
       *
       * @returns A promise which resolves when the checkpoint is restored.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents).
       */
      async restoreCheckpoint(localPath, checkpointID) {
        const url = this._getUrl(localPath, "checkpoints", checkpointID);
        const init4 = { method: "POST" };
        const response = await __1.ServerConnection.makeRequest(url, init4, this.serverSettings);
        if (response.status !== 204) {
          const err = await __1.ServerConnection.ResponseError.create(response);
          throw err;
        }
      }
      /**
       * Delete a checkpoint for a file.
       *
       * @param localPath - The path of the file.
       *
       * @param checkpointID - The id of the checkpoint to delete.
       *
       * @returns A promise which resolves when the checkpoint is deleted.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents).
       */
      async deleteCheckpoint(localPath, checkpointID) {
        const url = this._getUrl(localPath, "checkpoints", checkpointID);
        const init4 = { method: "DELETE" };
        const response = await __1.ServerConnection.makeRequest(url, init4, this.serverSettings);
        if (response.status !== 204) {
          const err = await __1.ServerConnection.ResponseError.create(response);
          throw err;
        }
      }
      /**
       * Get a REST url for a file given a path.
       */
      _getUrl(...args) {
        const parts = args.map((path45) => coreutils_12.URLExt.encodeParts(path45));
        const baseUrl = this.serverSettings.baseUrl;
        return coreutils_12.URLExt.join(baseUrl, this._apiEndpoint, ...parts);
      }
    };
    exports2.Drive = Drive;
    var Private;
    (function(Private2) {
      function normalizeExtension(extension) {
        if (extension.length > 0 && extension.indexOf(".") !== 0) {
          extension = `.${extension}`;
        }
        return extension;
      }
      Private2.normalizeExtension = normalizeExtension;
    })(Private || (Private = {}));
    var ContentProviderRegistry = class {
      /**
       * Construct a new content provider registry.
       *
       * @param options - The options used to initialize the registry.
       */
      constructor(options) {
        this._providers = /* @__PURE__ */ new Map();
        this._fileChanged = new signaling_1.Signal(this);
        this.register("default", options.defaultProvider);
        this._defaultProvider = options.defaultProvider;
      }
      /**
       * Add a content provider to the registry.
       *
       * @param identifier - The identifier of the provider; it can be reused between drives.
       * @param provider - The content provider to register.
       */
      register(identifier, provider) {
        if (this._providers.has(identifier)) {
          throw Error(`Provider with ${identifier} identifier was already registered on this drive`);
        }
        this._providers.set(identifier, provider);
        const fileChangedProxy = (_provider, change) => {
          this._fileChanged.emit(change);
        };
        if (provider.fileChanged) {
          provider.fileChanged.connect(fileChangedProxy);
        }
        return new disposable_1.DisposableDelegate(() => {
          if (provider.fileChanged) {
            provider.fileChanged.disconnect(fileChangedProxy);
          }
          if (this._providers.has(identifier)) {
            this._providers.delete(identifier);
          }
        });
      }
      /**
       * Get a content provider matching provided identifier.
       *
       * If no identifier is provided, return the default provider.
       * Throws an error if a provider with given identifier is not found.
       *
       * @param identifier - identifier of the content provider.
       */
      getProvider(identifier) {
        if (!identifier) {
          return this._defaultProvider;
        }
        const provider = this._providers.get(identifier);
        if (!provider) {
          throw Error(`Provider ${identifier} is not registered`);
        }
        return provider;
      }
      /**
       * A proxy of the file changed signal for all the providers.
       */
      get fileChanged() {
        return this._fileChanged;
      }
    };
    var RestContentProvider = class {
      constructor(options) {
        this._options = options;
      }
      /**
       * Get a file or directory.
       *
       * @param localPath The path to the file.
       *
       * @param options The options used to fetch the file.
       *
       * @returns A promise which resolves with the file content.
       *
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model.
       */
      async get(localPath, options) {
        let url = this._getUrl(localPath);
        if (options) {
          if (options.type === "notebook") {
            delete options["format"];
          }
          const content3 = options.content ? "1" : "0";
          const hash = options.hash ? "1" : "0";
          const params = { ...options, content: content3, hash };
          url += coreutils_12.URLExt.objectToQueryString(params);
        }
        const settings = this._options.serverSettings;
        const response = await __1.ServerConnection.makeRequest(url, {}, settings);
        if (response.status !== 200) {
          const err = await __1.ServerConnection.ResponseError.create(response);
          throw err;
        }
        const data = await response.json();
        validate5.validateContentsModel(data);
        return data;
      }
      /**
       * Save a file.
       *
       * @param localPath - The desired file path.
       *
       * @param options - Optional overrides to the model.
       *
       * @returns A promise which resolves with the file content model when the
       *   file is saved.
       *
       * #### Notes
       * Ensure that `model.content` is populated for the file.
       *
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model.
       */
      async save(localPath, options = {}) {
        const settings = this._options.serverSettings;
        const url = this._getUrl(localPath);
        const file = new File([JSON.stringify(options)], "data.json", {
          type: "application/json"
        });
        const init4 = {
          method: "PUT",
          body: file
        };
        const response = await __1.ServerConnection.makeRequest(url, init4, settings);
        if (response.status !== 200 && response.status !== 201) {
          const err = await __1.ServerConnection.ResponseError.create(response);
          throw err;
        }
        const data = await response.json();
        validate5.validateContentsModel(data);
        return data;
      }
      /**
       * Get a REST url for a file given a path.
       */
      _getUrl(...args) {
        const parts = args.map((path45) => coreutils_12.URLExt.encodeParts(path45));
        const baseUrl = this._options.serverSettings.baseUrl;
        return coreutils_12.URLExt.join(baseUrl, this._options.apiEndpoint, ...parts);
      }
    };
    exports2.RestContentProvider = RestContentProvider;
  }
});

// ../../node_modules/@lumino/polling/node_modules/@lumino/coreutils/dist/index.node.js
var require_index_node4 = __commonJS({
  "../../node_modules/@lumino/polling/node_modules/@lumino/coreutils/dist/index.node.js"(exports2) {
    "use strict";
    var algorithm = require_dist6();
    exports2.JSONExt = void 0;
    (function(JSONExt) {
      JSONExt.emptyObject = Object.freeze({});
      JSONExt.emptyArray = Object.freeze([]);
      function isPrimitive(value) {
        return value === null || typeof value === "boolean" || typeof value === "number" || typeof value === "string";
      }
      JSONExt.isPrimitive = isPrimitive;
      function isArray2(value) {
        return Array.isArray(value);
      }
      JSONExt.isArray = isArray2;
      function isObject2(value) {
        return !isPrimitive(value) && !isArray2(value);
      }
      JSONExt.isObject = isObject2;
      function deepEqual(first2, second) {
        if (first2 === second) {
          return true;
        }
        if (isPrimitive(first2) || isPrimitive(second)) {
          return false;
        }
        let a1 = isArray2(first2);
        let a2 = isArray2(second);
        if (a1 !== a2) {
          return false;
        }
        if (a1 && a2) {
          return deepArrayEqual(first2, second);
        }
        return deepObjectEqual(first2, second);
      }
      JSONExt.deepEqual = deepEqual;
      function deepCopy(value) {
        if (isPrimitive(value)) {
          return value;
        }
        if (isArray2(value)) {
          return deepArrayCopy(value);
        }
        return deepObjectCopy(value);
      }
      JSONExt.deepCopy = deepCopy;
      function deepArrayEqual(first2, second) {
        if (first2 === second) {
          return true;
        }
        if (first2.length !== second.length) {
          return false;
        }
        for (let i2 = 0, n = first2.length; i2 < n; ++i2) {
          if (!deepEqual(first2[i2], second[i2])) {
            return false;
          }
        }
        return true;
      }
      function deepObjectEqual(first2, second) {
        if (first2 === second) {
          return true;
        }
        for (let key2 in first2) {
          if (first2[key2] !== void 0 && !(key2 in second)) {
            return false;
          }
        }
        for (let key2 in second) {
          if (second[key2] !== void 0 && !(key2 in first2)) {
            return false;
          }
        }
        for (let key2 in first2) {
          let firstValue = first2[key2];
          let secondValue = second[key2];
          if (firstValue === void 0 && secondValue === void 0) {
            continue;
          }
          if (firstValue === void 0 || secondValue === void 0) {
            return false;
          }
          if (!deepEqual(firstValue, secondValue)) {
            return false;
          }
        }
        return true;
      }
      function deepArrayCopy(value) {
        let result = new Array(value.length);
        for (let i2 = 0, n = value.length; i2 < n; ++i2) {
          result[i2] = deepCopy(value[i2]);
        }
        return result;
      }
      function deepObjectCopy(value) {
        let result = {};
        for (let key2 in value) {
          let subvalue = value[key2];
          if (subvalue === void 0) {
            continue;
          }
          result[key2] = deepCopy(subvalue);
        }
        return result;
      }
    })(exports2.JSONExt || (exports2.JSONExt = {}));
    var MimeData = class {
      constructor() {
        this._types = [];
        this._values = [];
      }
      /**
       * Get an array of the MIME types contained within the dataset.
       *
       * @returns A new array of the MIME types, in order of insertion.
       */
      types() {
        return this._types.slice();
      }
      /**
       * Test whether the dataset has an entry for the given type.
       *
       * @param mime - The MIME type of interest.
       *
       * @returns `true` if the dataset contains a value for the given
       *   MIME type, `false` otherwise.
       */
      hasData(mime3) {
        return this._types.indexOf(mime3) !== -1;
      }
      /**
       * Get the data value for the given MIME type.
       *
       * @param mime - The MIME type of interest.
       *
       * @returns The value for the given MIME type, or `undefined` if
       *   the dataset does not contain a value for the type.
       */
      getData(mime3) {
        let i2 = this._types.indexOf(mime3);
        return i2 !== -1 ? this._values[i2] : void 0;
      }
      /**
       * Set the data value for the given MIME type.
       *
       * @param mime - The MIME type of interest.
       *
       * @param data - The data value for the given MIME type.
       *
       * #### Notes
       * This will overwrite any previous entry for the MIME type.
       */
      setData(mime3, data) {
        this.clearData(mime3);
        this._types.push(mime3);
        this._values.push(data);
      }
      /**
       * Remove the data entry for the given MIME type.
       *
       * @param mime - The MIME type of interest.
       *
       * #### Notes
       * This is a no-op if there is no entry for the given MIME type.
       */
      clearData(mime3) {
        let i2 = this._types.indexOf(mime3);
        if (i2 !== -1) {
          this._types.splice(i2, 1);
          this._values.splice(i2, 1);
        }
      }
      /**
       * Remove all data entries from the dataset.
       */
      clear() {
        this._types.length = 0;
        this._values.length = 0;
      }
    };
    var PluginRegistry = class {
      constructor(options = {}) {
        this._application = null;
        this._validatePlugin = () => true;
        this._plugins = /* @__PURE__ */ new Map();
        this._services = /* @__PURE__ */ new Map();
        if (options.validatePlugin) {
          console.info("Plugins may be rejected by the custom validation plugin method.");
          this._validatePlugin = options.validatePlugin;
        }
      }
      /**
       * The application object.
       *
       * It will be provided as first argument to the
       * plugins activation and deactivation functions.
       *
       * It can only be set once.
       *
       * By default, it is `null`.
       */
      get application() {
        return this._application;
      }
      set application(v) {
        if (this._application !== null) {
          throw Error("PluginRegistry.application is already set. It cannot be overridden.");
        }
        this._application = v;
      }
      /**
       * The list of all the deferred plugins.
       */
      get deferredPlugins() {
        return Array.from(this._plugins).filter(([id, plugin5]) => plugin5.autoStart === "defer").map(([id, plugin5]) => id);
      }
      /**
       * Get a plugin description.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns The plugin description.
       */
      getPluginDescription(id) {
        var _a6, _b;
        return (_b = (_a6 = this._plugins.get(id)) === null || _a6 === void 0 ? void 0 : _a6.description) !== null && _b !== void 0 ? _b : "";
      }
      /**
       * Test whether a plugin is registered with the application.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns `true` if the plugin is registered, `false` otherwise.
       */
      hasPlugin(id) {
        return this._plugins.has(id);
      }
      /**
       * Test whether a plugin is activated with the application.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns `true` if the plugin is activated, `false` otherwise.
       */
      isPluginActivated(id) {
        var _a6, _b;
        return (_b = (_a6 = this._plugins.get(id)) === null || _a6 === void 0 ? void 0 : _a6.activated) !== null && _b !== void 0 ? _b : false;
      }
      /**
       * List the IDs of the plugins registered with the application.
       *
       * @returns A new array of the registered plugin IDs.
       */
      listPlugins() {
        return Array.from(this._plugins.keys());
      }
      /**
       * Register a plugin with the application.
       *
       * @param plugin - The plugin to register.
       *
       * #### Notes
       * An error will be thrown if a plugin with the same ID is already
       * registered, or if the plugin has a circular dependency.
       *
       * If the plugin provides a service which has already been provided
       * by another plugin, the new service will override the old service.
       */
      registerPlugin(plugin5) {
        if (this._plugins.has(plugin5.id)) {
          throw new TypeError(`Plugin '${plugin5.id}' is already registered.`);
        }
        if (!this._validatePlugin(plugin5)) {
          throw new Error(`Plugin '${plugin5.id}' is not valid.`);
        }
        const data = Private.createPluginData(plugin5);
        Private.ensureNoCycle(data, this._plugins, this._services);
        if (data.provides) {
          this._services.set(data.provides, data.id);
        }
        this._plugins.set(data.id, data);
      }
      /**
       * Register multiple plugins with the application.
       *
       * @param plugins - The plugins to register.
       *
       * #### Notes
       * This calls `registerPlugin()` for each of the given plugins.
       */
      registerPlugins(plugins3) {
        for (const plugin5 of plugins3) {
          this.registerPlugin(plugin5);
        }
      }
      /**
       * Deregister a plugin with the application.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @param force - Whether to deregister the plugin even if it is active.
       */
      deregisterPlugin(id, force) {
        const plugin5 = this._plugins.get(id);
        if (!plugin5) {
          return;
        }
        if (plugin5.activated && !force) {
          throw new Error(`Plugin '${id}' is still active.`);
        }
        this._plugins.delete(id);
      }
      /**
       * Activate the plugin with the given ID.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns A promise which resolves when the plugin is activated
       *   or rejects with an error if it cannot be activated.
       */
      async activatePlugin(id) {
        const plugin5 = this._plugins.get(id);
        if (!plugin5) {
          throw new ReferenceError(`Plugin '${id}' is not registered.`);
        }
        if (plugin5.activated) {
          return;
        }
        if (plugin5.promise) {
          return plugin5.promise;
        }
        const required = plugin5.requires.map((t2) => this.resolveRequiredService(t2));
        const optional = plugin5.optional.map((t2) => this.resolveOptionalService(t2));
        plugin5.promise = Promise.all([...required, ...optional]).then((services) => plugin5.activate.apply(void 0, [this.application, ...services])).then((service) => {
          plugin5.service = service;
          plugin5.activated = true;
          plugin5.promise = null;
        }).catch((error) => {
          plugin5.promise = null;
          throw error;
        });
        return plugin5.promise;
      }
      /**
       * Activate all the deferred plugins.
       *
       * @returns A promise which will resolve when each plugin is activated
       * or rejects with an error if one cannot be activated.
       */
      async activatePlugins(kind, options = {}) {
        switch (kind) {
          case "defer": {
            const promises = this.deferredPlugins.filter((pluginId) => this._plugins.get(pluginId).autoStart).map((pluginId) => {
              return this.activatePlugin(pluginId);
            });
            await Promise.all(promises);
            break;
          }
          case "startUp": {
            const startups = Private.collectStartupPlugins(this._plugins, options);
            const promises = startups.map(async (id) => {
              try {
                return await this.activatePlugin(id);
              } catch (error) {
                console.error(`Plugin '${id}' failed to activate.`, error);
              }
            });
            await Promise.all(promises);
            break;
          }
        }
      }
      /**
       * Deactivate the plugin and its downstream dependents if and only if the
       * plugin and its dependents all support `deactivate`.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns A list of IDs of downstream plugins deactivated with this one.
       */
      async deactivatePlugin(id) {
        const plugin5 = this._plugins.get(id);
        if (!plugin5) {
          throw new ReferenceError(`Plugin '${id}' is not registered.`);
        }
        if (!plugin5.activated) {
          return [];
        }
        if (!plugin5.deactivate) {
          throw new TypeError(`Plugin '${id}'#deactivate() method missing`);
        }
        const manifest = Private.findDependents(id, this._plugins, this._services);
        const downstream = manifest.map((id2) => this._plugins.get(id2));
        for (const plugin6 of downstream) {
          if (!plugin6.deactivate) {
            throw new TypeError(`Plugin ${plugin6.id}#deactivate() method missing (depends on ${id})`);
          }
        }
        for (const plugin6 of downstream) {
          const services = [...plugin6.requires, ...plugin6.optional].map((service) => {
            const id2 = this._services.get(service);
            return id2 ? this._plugins.get(id2).service : null;
          });
          await plugin6.deactivate(this.application, ...services);
          plugin6.service = null;
          plugin6.activated = false;
        }
        manifest.pop();
        return manifest;
      }
      /**
       * Resolve a required service of a given type.
       *
       * @param token - The token for the service type of interest.
       *
       * @returns A promise which resolves to an instance of the requested
       *   service, or rejects with an error if it cannot be resolved.
       *
       * #### Notes
       * Services are singletons. The same instance will be returned each
       * time a given service token is resolved.
       *
       * If the plugin which provides the service has not been activated,
       * resolving the service will automatically activate the plugin.
       *
       * User code will not typically call this method directly. Instead,
       * the required services for the user's plugins will be resolved
       * automatically when the plugin is activated.
       */
      async resolveRequiredService(token) {
        const id = this._services.get(token);
        if (!id) {
          throw new TypeError(`No provider for: ${token.name}.`);
        }
        const plugin5 = this._plugins.get(id);
        if (!plugin5.activated) {
          await this.activatePlugin(id);
        }
        return plugin5.service;
      }
      /**
       * Resolve an optional service of a given type.
       *
       * @param token - The token for the service type of interest.
       *
       * @returns A promise which resolves to an instance of the requested
       *   service, or `null` if it cannot be resolved.
       *
       * #### Notes
       * Services are singletons. The same instance will be returned each
       * time a given service token is resolved.
       *
       * If the plugin which provides the service has not been activated,
       * resolving the service will automatically activate the plugin.
       *
       * User code will not typically call this method directly. Instead,
       * the optional services for the user's plugins will be resolved
       * automatically when the plugin is activated.
       */
      async resolveOptionalService(token) {
        const id = this._services.get(token);
        if (!id) {
          return null;
        }
        const plugin5 = this._plugins.get(id);
        if (!plugin5.activated) {
          try {
            await this.activatePlugin(id);
          } catch (reason) {
            console.error(reason);
            return null;
          }
        }
        return plugin5.service;
      }
    };
    var Private;
    (function(Private2) {
      class PluginData {
        constructor(plugin5) {
          var _a6, _b, _c, _d2;
          this._activated = false;
          this._promise = null;
          this._service = null;
          this.id = plugin5.id;
          this.description = (_a6 = plugin5.description) !== null && _a6 !== void 0 ? _a6 : "";
          this.activate = plugin5.activate;
          this.deactivate = (_b = plugin5.deactivate) !== null && _b !== void 0 ? _b : null;
          this.provides = (_c = plugin5.provides) !== null && _c !== void 0 ? _c : null;
          this.autoStart = (_d2 = plugin5.autoStart) !== null && _d2 !== void 0 ? _d2 : false;
          this.requires = plugin5.requires ? plugin5.requires.slice() : [];
          this.optional = plugin5.optional ? plugin5.optional.slice() : [];
        }
        /**
         * Whether the plugin has been activated.
         */
        get activated() {
          return this._activated;
        }
        set activated(a2) {
          this._activated = a2;
        }
        /**
         * The resolved service for the plugin, or `null`.
         */
        get service() {
          return this._service;
        }
        set service(s5) {
          this._service = s5;
        }
        /**
         * The pending resolver promise, or `null`.
         */
        get promise() {
          return this._promise;
        }
        set promise(p5) {
          this._promise = p5;
        }
      }
      function createPluginData(plugin5) {
        return new PluginData(plugin5);
      }
      Private2.createPluginData = createPluginData;
      function ensureNoCycle(plugin5, plugins3, services) {
        const dependencies = [...plugin5.requires, ...plugin5.optional];
        const visit3 = (token) => {
          if (token === plugin5.provides) {
            return true;
          }
          const id = services.get(token);
          if (!id) {
            return false;
          }
          const visited = plugins3.get(id);
          const dependencies2 = [...visited.requires, ...visited.optional];
          if (dependencies2.length === 0) {
            return false;
          }
          trace.push(id);
          if (dependencies2.some(visit3)) {
            return true;
          }
          trace.pop();
          return false;
        };
        if (!plugin5.provides || dependencies.length === 0) {
          return;
        }
        const trace = [plugin5.id];
        if (dependencies.some(visit3)) {
          throw new ReferenceError(`Cycle detected: ${trace.join(" -> ")}.`);
        }
      }
      Private2.ensureNoCycle = ensureNoCycle;
      function findDependents(id, plugins3, services) {
        const edges = new Array();
        const add2 = (id2) => {
          const plugin5 = plugins3.get(id2);
          const dependencies = [...plugin5.requires, ...plugin5.optional];
          edges.push(...dependencies.reduce((acc, dep) => {
            const service = services.get(dep);
            if (service) {
              acc.push([id2, service]);
            }
            return acc;
          }, []));
        };
        for (const id2 of plugins3.keys()) {
          add2(id2);
        }
        const newEdges = edges.filter((edge) => edge[1] === id);
        let oldSize = 0;
        while (newEdges.length > oldSize) {
          const previousSize = newEdges.length;
          const packagesOfInterest = new Set(newEdges.map((edge) => edge[0]));
          for (const poi of packagesOfInterest) {
            edges.filter((edge) => edge[1] === poi).forEach((edge) => {
              if (!newEdges.includes(edge)) {
                newEdges.push(edge);
              }
            });
          }
          oldSize = previousSize;
        }
        const sorted = algorithm.topologicSort(newEdges);
        const index4 = sorted.findIndex((candidate) => candidate === id);
        if (index4 === -1) {
          return [id];
        }
        return sorted.slice(0, index4 + 1);
      }
      Private2.findDependents = findDependents;
      function collectStartupPlugins(plugins3, options) {
        const collection = /* @__PURE__ */ new Set();
        for (const id of plugins3.keys()) {
          if (plugins3.get(id).autoStart === true) {
            collection.add(id);
          }
        }
        if (options.startPlugins) {
          for (const id of options.startPlugins) {
            collection.add(id);
          }
        }
        if (options.ignorePlugins) {
          for (const id of options.ignorePlugins) {
            collection.delete(id);
          }
        }
        return Array.from(collection);
      }
      Private2.collectStartupPlugins = collectStartupPlugins;
    })(Private || (Private = {}));
    var PromiseDelegate = class {
      /**
       * Construct a new promise delegate.
       */
      constructor() {
        this.promise = new Promise((resolve9, reject) => {
          this._resolve = resolve9;
          this._reject = reject;
        });
      }
      /**
       * Resolve the wrapped promise with the given value.
       *
       * @param value - The value to use for resolving the promise.
       */
      resolve(value) {
        let resolve9 = this._resolve;
        resolve9(value);
      }
      /**
       * Reject the wrapped promise with the given value.
       *
       * @reason - The reason for rejecting the promise.
       */
      reject(reason) {
        let reject = this._reject;
        reject(reason);
      }
    };
    var Token2 = class {
      /**
       * Construct a new token.
       *
       * @param name - A human readable name for the token.
       * @param description - Token purpose description for documentation.
       */
      constructor(name3, description) {
        this.name = name3;
        this.description = description !== null && description !== void 0 ? description : "";
        this._tokenStructuralPropertyT = null;
      }
    };
    function fallbackRandomValues(buffer2) {
      let value = 0;
      for (let i2 = 0, n = buffer2.length; i2 < n; ++i2) {
        if (i2 % 4 === 0) {
          value = Math.random() * 4294967295 >>> 0;
        }
        buffer2[i2] = value & 255;
        value >>>= 8;
      }
    }
    exports2.Random = void 0;
    (function(Random) {
      Random.getRandomValues = (() => {
        const crypto4 = typeof require !== "undefined" && require("crypto") || null;
        if (crypto4 && typeof crypto4.randomFillSync === "function") {
          return function getRandomValues(buffer2) {
            return crypto4.randomFillSync(buffer2);
          };
        }
        if (crypto4 && typeof crypto4.randomBytes === "function") {
          return function getRandomValues(buffer2) {
            let bytes = crypto4.randomBytes(buffer2.length);
            for (let i2 = 0, n = bytes.length; i2 < n; ++i2) {
              buffer2[i2] = bytes[i2];
            }
          };
        }
        return fallbackRandomValues;
      })();
    })(exports2.Random || (exports2.Random = {}));
    function uuid4Factory(getRandomValues) {
      const bytes = new Uint8Array(16);
      const lut = new Array(256);
      for (let i2 = 0; i2 < 16; ++i2) {
        lut[i2] = "0" + i2.toString(16);
      }
      for (let i2 = 16; i2 < 256; ++i2) {
        lut[i2] = i2.toString(16);
      }
      return function uuid4() {
        getRandomValues(bytes);
        bytes[6] = 64 | bytes[6] & 15;
        bytes[8] = 128 | bytes[8] & 63;
        return lut[bytes[0]] + lut[bytes[1]] + lut[bytes[2]] + lut[bytes[3]] + "-" + lut[bytes[4]] + lut[bytes[5]] + "-" + lut[bytes[6]] + lut[bytes[7]] + "-" + lut[bytes[8]] + lut[bytes[9]] + "-" + lut[bytes[10]] + lut[bytes[11]] + lut[bytes[12]] + lut[bytes[13]] + lut[bytes[14]] + lut[bytes[15]];
      };
    }
    exports2.UUID = void 0;
    (function(UUID) {
      UUID.uuid4 = uuid4Factory(exports2.Random.getRandomValues);
    })(exports2.UUID || (exports2.UUID = {}));
    exports2.MimeData = MimeData;
    exports2.PluginRegistry = PluginRegistry;
    exports2.PromiseDelegate = PromiseDelegate;
    exports2.Token = Token2;
  }
});

// ../../node_modules/@lumino/polling/dist/index.js
var require_dist9 = __commonJS({
  "../../node_modules/@lumino/polling/dist/index.js"(exports2, module2) {
    (function(global2, factory) {
      typeof exports2 === "object" && typeof module2 !== "undefined" ? factory(exports2, require_index_node4(), require_dist7()) : typeof define === "function" && define.amd ? define(["exports", "@lumino/coreutils", "@lumino/signaling"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.lumino_polling = {}, global2.lumino_coreutils, global2.lumino_signaling));
    })(exports2, (function(exports3, coreutils, signaling) {
      "use strict";
      class Poll {
        /**
         * Instantiate a new poll with exponential backoff in case of failure.
         *
         * @param options - The poll instantiation options.
         */
        constructor(options) {
          var _a6;
          this._disposed = new signaling.Signal(this);
          this._lingered = 0;
          this._tick = new coreutils.PromiseDelegate();
          this._ticked = new signaling.Signal(this);
          this._factory = options.factory;
          this._linger = (_a6 = options.linger) !== null && _a6 !== void 0 ? _a6 : Private.DEFAULT_LINGER;
          this._standby = options.standby || Private.DEFAULT_STANDBY;
          this._state = { ...Private.DEFAULT_STATE, timestamp: (/* @__PURE__ */ new Date()).getTime() };
          const frequency = options.frequency || {};
          const max = Math.max(frequency.interval || 0, frequency.max || 0, Private.DEFAULT_FREQUENCY.max);
          this.frequency = { ...Private.DEFAULT_FREQUENCY, ...frequency, ...{ max } };
          this.name = options.name || Private.DEFAULT_NAME;
          if ("auto" in options ? options.auto : true) {
            setTimeout(() => this.start());
          }
        }
        /**
         * A signal emitted when the poll is disposed.
         */
        get disposed() {
          return this._disposed;
        }
        /**
         * The polling frequency parameters.
         */
        get frequency() {
          return this._frequency;
        }
        set frequency(frequency) {
          if (this.isDisposed || coreutils.JSONExt.deepEqual(frequency, this.frequency || {})) {
            return;
          }
          let { backoff, interval: interval2, max } = frequency;
          interval2 = Math.round(interval2);
          max = Math.round(max);
          if (typeof backoff === "number" && backoff < 1) {
            throw new Error("Poll backoff growth factor must be at least 1");
          }
          if ((interval2 < 0 || interval2 > max) && interval2 !== Poll.NEVER) {
            throw new Error("Poll interval must be between 0 and max");
          }
          if (max > Poll.MAX_INTERVAL && max !== Poll.NEVER) {
            throw new Error(`Max interval must be less than ${Poll.MAX_INTERVAL}`);
          }
          this._frequency = { backoff, interval: interval2, max };
        }
        /**
         * Whether the poll is disposed.
         */
        get isDisposed() {
          return this.state.phase === "disposed";
        }
        /**
         * Indicates when the poll switches to standby.
         */
        get standby() {
          return this._standby;
        }
        set standby(standby) {
          if (this.isDisposed || this.standby === standby) {
            return;
          }
          this._standby = standby;
        }
        /**
         * The poll state, which is the content of the current poll tick.
         */
        get state() {
          return this._state;
        }
        /**
         * A promise that resolves when the poll next ticks.
         */
        get tick() {
          return this._tick.promise;
        }
        /**
         * A signal emitted when the poll ticks and fires off a new request.
         */
        get ticked() {
          return this._ticked;
        }
        /**
         * Return an async iterator that yields every tick.
         */
        async *[Symbol.asyncIterator]() {
          while (!this.isDisposed) {
            yield this.state;
            await this.tick.catch(() => void 0);
          }
        }
        /**
         * Dispose the poll.
         */
        dispose() {
          if (this.isDisposed) {
            return;
          }
          this._state = {
            ...Private.DISPOSED_STATE,
            timestamp: (/* @__PURE__ */ new Date()).getTime()
          };
          this._tick.promise.catch((_2) => void 0);
          this._tick.reject(new Error(`Poll (${this.name}) is disposed.`));
          this._disposed.emit(void 0);
          signaling.Signal.clearData(this);
        }
        /**
         * Refreshes the poll. Schedules `refreshed` tick if necessary.
         *
         * @returns A promise that resolves after tick is scheduled and never rejects.
         *
         * #### Notes
         * The returned promise resolves after the tick is scheduled, but before
         * the polling action is run. To wait until after the poll action executes,
         * await the `poll.tick` promise: `await poll.refresh(); await poll.tick;`
         */
        refresh() {
          return this.schedule({
            cancel: ({ phase }) => phase === "refreshed",
            interval: Poll.IMMEDIATE,
            phase: "refreshed"
          });
        }
        /**
         * Schedule the next poll tick.
         *
         * @param next - The next poll state data to schedule. Defaults to standby.
         *
         * @param next.cancel - Cancels state transition if function returns `true`.
         *
         * @returns A promise that resolves when the next poll state is active.
         *
         * #### Notes
         * This method is not meant to be invoked by user code typically. It is public
         * to allow poll instances to be composed into classes that schedule ticks.
         */
        async schedule(next = {}) {
          if (this.isDisposed) {
            return;
          }
          if (next.cancel && next.cancel(this.state)) {
            return;
          }
          const pending = this._tick;
          const scheduled = new coreutils.PromiseDelegate();
          const state = {
            interval: this.frequency.interval,
            payload: null,
            phase: "standby",
            timestamp: (/* @__PURE__ */ new Date()).getTime(),
            ...next
          };
          this._state = state;
          this._tick = scheduled;
          clearTimeout(this._timeout);
          this._ticked.emit(this.state);
          pending.resolve(this);
          await pending.promise;
          if (state.interval === Poll.NEVER) {
            this._timeout = void 0;
            return;
          }
          const execute = () => {
            if (this.isDisposed || this.tick !== scheduled.promise) {
              return;
            }
            this._execute();
          };
          this._timeout = setTimeout(execute, state.interval);
        }
        /**
         * Starts the poll. Schedules `started` tick if necessary.
         *
         * @returns A promise that resolves after tick is scheduled and never rejects.
         */
        start() {
          return this.schedule({
            cancel: ({ phase }) => phase !== "constructed" && phase !== "standby" && phase !== "stopped",
            interval: Poll.IMMEDIATE,
            phase: "started"
          });
        }
        /**
         * Stops the poll. Schedules `stopped` tick if necessary.
         *
         * @returns A promise that resolves after tick is scheduled and never rejects.
         */
        stop() {
          return this.schedule({
            cancel: ({ phase }) => phase === "stopped",
            interval: Poll.NEVER,
            phase: "stopped"
          });
        }
        /**
         * Whether the poll is hidden.
         *
         * #### Notes
         * This property is only relevant in a browser context.
         */
        get hidden() {
          return Private.hidden;
        }
        /**
         * Execute a new poll factory promise or stand by if necessary.
         */
        _execute() {
          let standby = typeof this.standby === "function" ? this.standby() : this.standby;
          if (standby === "never") {
            standby = false;
          } else if (standby === "when-hidden") {
            if (this.hidden) {
              standby = ++this._lingered > this._linger;
            } else {
              this._lingered = 0;
              standby = false;
            }
          }
          if (standby) {
            void this.schedule();
            return;
          }
          const pending = this.tick;
          this._factory(this.state).then((resolved) => {
            if (this.isDisposed || this.tick !== pending) {
              return;
            }
            void this.schedule({
              payload: resolved,
              phase: this.state.phase === "rejected" ? "reconnected" : "resolved"
            });
          }).catch((rejected) => {
            if (this.isDisposed || this.tick !== pending) {
              return;
            }
            void this.schedule({
              interval: Private.sleep(this.frequency, this.state),
              payload: rejected,
              phase: "rejected"
            });
          });
        }
      }
      (function(Poll2) {
        Poll2.IMMEDIATE = 0;
        Poll2.MAX_INTERVAL = 2147483647;
        Poll2.NEVER = Infinity;
      })(Poll || (Poll = {}));
      var Private;
      (function(Private2) {
        Private2.DEFAULT_BACKOFF = 3;
        Private2.DEFAULT_FREQUENCY = {
          backoff: true,
          interval: 1e3,
          max: 30 * 1e3
        };
        Private2.DEFAULT_LINGER = 1;
        Private2.DEFAULT_NAME = "unknown";
        Private2.DEFAULT_STANDBY = "when-hidden";
        Private2.DEFAULT_STATE = {
          interval: Poll.NEVER,
          payload: null,
          phase: "constructed",
          timestamp: (/* @__PURE__ */ new Date(0)).getTime()
        };
        Private2.DISPOSED_STATE = {
          interval: Poll.NEVER,
          payload: null,
          phase: "disposed",
          timestamp: (/* @__PURE__ */ new Date(0)).getTime()
        };
        function sleep(frequency, last) {
          const { backoff, interval: interval2, max } = frequency;
          if (interval2 === Poll.NEVER) {
            return interval2;
          }
          const growth = backoff === true ? Private2.DEFAULT_BACKOFF : backoff === false ? 1 : backoff;
          const random2 = getRandomIntInclusive(interval2, last.interval * growth);
          return Math.min(max, random2);
        }
        Private2.sleep = sleep;
        Private2.hidden = (() => {
          if (typeof document === "undefined") {
            return false;
          }
          document.addEventListener("visibilitychange", () => {
            Private2.hidden = document.visibilityState === "hidden";
          });
          document.addEventListener("pagehide", () => {
            Private2.hidden = document.visibilityState === "hidden";
          });
          return document.visibilityState === "hidden";
        })();
        function getRandomIntInclusive(min, max) {
          min = Math.ceil(min);
          max = Math.floor(max);
          return Math.floor(Math.random() * (max - min + 1)) + min;
        }
      })(Private || (Private = {}));
      class RateLimiter {
        /**
         * Instantiate a rate limiter.
         *
         * @param fn - The function to rate limit.
         *
         * @param limit - The rate limit; defaults to 500ms.
         */
        constructor(fn, limit = 500) {
          this.args = void 0;
          this.payload = null;
          this.limit = limit;
          this.poll = new Poll({
            auto: false,
            factory: async () => {
              const { args } = this;
              this.args = void 0;
              return fn(...args);
            },
            frequency: { backoff: false, interval: Poll.NEVER, max: Poll.NEVER },
            standby: "never"
          });
          this.payload = new coreutils.PromiseDelegate();
          this.poll.ticked.connect((_2, state) => {
            const { payload } = this;
            if (state.phase === "resolved") {
              this.payload = new coreutils.PromiseDelegate();
              payload.resolve(state.payload);
              return;
            }
            if (state.phase === "rejected" || state.phase === "stopped") {
              this.payload = new coreutils.PromiseDelegate();
              payload.promise.catch((_3) => void 0);
              payload.reject(state.payload);
              return;
            }
          }, this);
        }
        /**
         * Whether the rate limiter is disposed.
         */
        get isDisposed() {
          return this.payload === null;
        }
        /**
         * Disposes the rate limiter.
         */
        dispose() {
          if (this.isDisposed) {
            return;
          }
          this.args = void 0;
          this.payload = null;
          this.poll.dispose();
        }
        /**
         * Stop the function if it is mid-flight.
         */
        async stop() {
          return this.poll.stop();
        }
      }
      class Debouncer extends RateLimiter {
        /**
         * Invokes the function and only executes after rate limit has elapsed.
         * Each invocation resets the timer.
         */
        invoke(...args) {
          this.args = args;
          void this.poll.schedule({ interval: this.limit, phase: "invoked" });
          return this.payload.promise;
        }
      }
      class Throttler extends RateLimiter {
        /**
         * Instantiate a throttler.
         *
         * @param fn - The function being throttled.
         *
         * @param options - Throttling configuration or throttling limit in ms.
         *
         * #### Notes
         * The `edge` defaults to `leading`; the `limit` defaults to `500`.
         */
        constructor(fn, options) {
          super(fn, typeof options === "number" ? options : options && options.limit);
          this._trailing = false;
          if (typeof options !== "number" && options && options.edge === "trailing") {
            this._trailing = true;
          }
          this._interval = this._trailing ? this.limit : Poll.IMMEDIATE;
        }
        /**
         * Throttles function invocations if one is currently in flight.
         */
        invoke(...args) {
          const idle = this.poll.state.phase !== "invoked";
          if (idle || this._trailing) {
            this.args = args;
          }
          if (idle) {
            void this.poll.schedule({ interval: this._interval, phase: "invoked" });
          }
          return this.payload.promise;
        }
      }
      exports3.Debouncer = Debouncer;
      exports3.Poll = Poll;
      exports3.RateLimiter = RateLimiter;
      exports3.Throttler = Throttler;
    }));
  }
});

// ../../node_modules/@jupyterlab/services/lib/event/index.js
var require_event = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/event/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.EventManager = void 0;
    var coreutils_12 = require_lib27();
    var polling_1 = require_dist9();
    var signaling_1 = require_dist7();
    var serverconnection_1 = require_serverconnection();
    var SERVICE_EVENTS_URL = "api/events";
    var EventManager = class {
      /**
       * Create a new event manager.
       */
      constructor(options = {}) {
        var _a6, _b;
        this._socket = null;
        this.serverSettings = (_a6 = options.serverSettings) !== null && _a6 !== void 0 ? _a6 : serverconnection_1.ServerConnection.makeSettings();
        this._poll = new polling_1.Poll({
          factory: () => this._subscribe(),
          standby: (_b = options.standby) !== null && _b !== void 0 ? _b : "when-hidden"
        });
        this._stream = new signaling_1.Stream(this);
        void this._poll.start();
      }
      /**
       * Whether the event manager is disposed.
       */
      get isDisposed() {
        return this._poll.isDisposed;
      }
      /**
       * An event stream that emits and yields each new event.
       */
      get stream() {
        return this._stream;
      }
      /**
       * Dispose the event manager.
       */
      dispose() {
        if (this.isDisposed) {
          return;
        }
        this._poll.dispose();
        const socket = this._socket;
        if (socket) {
          this._socket = null;
          socket.onopen = () => void 0;
          socket.onerror = () => void 0;
          socket.onmessage = () => void 0;
          socket.onclose = () => void 0;
          socket.close();
        }
        signaling_1.Signal.clearData(this);
        this._stream.stop();
      }
      /**
       * Post an event request to be emitted by the event bus.
       */
      async emit(event) {
        const { serverSettings } = this;
        const { baseUrl } = serverSettings;
        const { makeRequest, ResponseError } = serverconnection_1.ServerConnection;
        const url = coreutils_12.URLExt.join(baseUrl, SERVICE_EVENTS_URL);
        const init4 = { body: JSON.stringify(event), method: "POST" };
        const response = await makeRequest(url, init4, serverSettings);
        if (response.status !== 204) {
          throw new ResponseError(response);
        }
      }
      /**
       * Subscribe to event bus emissions.
       */
      _subscribe() {
        return new Promise((_2, reject) => {
          if (this.isDisposed) {
            return;
          }
          const { appendToken, token, WebSocket: WebSocket3, wsUrl } = this.serverSettings;
          let url = coreutils_12.URLExt.join(wsUrl, SERVICE_EVENTS_URL, "subscribe");
          if (appendToken && token !== "") {
            url += `?token=${encodeURIComponent(token)}`;
          }
          const socket = this._socket = new WebSocket3(url);
          const stream3 = this._stream;
          socket.onclose = () => reject(new Error("EventManager socket closed"));
          socket.onmessage = (msg) => msg.data && stream3.emit(JSON.parse(msg.data));
        });
      }
    };
    exports2.EventManager = EventManager;
  }
});

// ../../node_modules/@jupyterlab/services/lib/kernel/comm.js
var require_comm = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/kernel/comm.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.CommHandler = exports2.CommsOverSubshells = void 0;
    var coreutils_12 = require_index_node3();
    var disposable_1 = require_dist8();
    var KernelMessage = __importStar(require_messages());
    var CommsOverSubshells;
    (function(CommsOverSubshells2) {
      CommsOverSubshells2["Disabled"] = "disabled";
      CommsOverSubshells2["PerComm"] = "perComm";
      CommsOverSubshells2["PerCommTarget"] = "perCommTarget";
    })(CommsOverSubshells || (exports2.CommsOverSubshells = CommsOverSubshells = {}));
    var CommHandler = class _CommHandler extends disposable_1.DisposableDelegate {
      /**
       * Construct a new comm channel.
       */
      constructor(target, id, kernel, disposeCb, commsOverSubshells) {
        super(disposeCb);
        this._subshellStarted = new coreutils_12.PromiseDelegate();
        this._subshellId = null;
        this._target = "";
        this._id = "";
        this._id = id;
        this._target = target;
        this._kernel = kernel;
        this._kernel.statusChanged.connect(() => {
          if (this._kernel.status === "restarting") {
            this._cleanSubshells();
          }
        });
        this.commsOverSubshells = commsOverSubshells !== null && commsOverSubshells !== void 0 ? commsOverSubshells : CommsOverSubshells.PerCommTarget;
      }
      /**
       * The unique id for the comm channel.
       */
      get commId() {
        return this._id;
      }
      /**
       * The target name for the comm channel.
       */
      get targetName() {
        return this._target;
      }
      /**
       * The current subshell id.
       */
      get subshellId() {
        return this._subshellId;
      }
      /**
       * Promise that resolves when the subshell started, if any
       */
      get subshellStarted() {
        return this._subshellStarted.promise;
      }
      /**
       * Whether comms are running on a subshell, or not
       */
      get commsOverSubshells() {
        return this._commsOverSubshells;
      }
      /**
       * Set whether comms are running on subshells, or not
       */
      set commsOverSubshells(value) {
        this._commsOverSubshells = value;
        if (this._commsOverSubshells === CommsOverSubshells.Disabled) {
          this._maybeCloseSubshell();
        } else {
          void this._maybeStartSubshell();
        }
      }
      /**
       * Get the callback for a comm close event.
       *
       * #### Notes
       * This is called when the comm is closed from either the server or client.
       *
       * **See also:** [[ICommClose]], [[close]]
       */
      get onClose() {
        return this._onClose;
      }
      /**
       * Set the callback for a comm close event.
       *
       * #### Notes
       * This is called when the comm is closed from either the server or client. If
       * the function returns a promise, and the kernel was closed from the server,
       * kernel message processing will pause until the returned promise is
       * fulfilled.
       *
       * **See also:** [[close]]
       */
      set onClose(cb) {
        this._onClose = cb;
      }
      /**
       * Get the callback for a comm message received event.
       */
      get onMsg() {
        return this._onMsg;
      }
      /**
       * Set the callback for a comm message received event.
       *
       * #### Notes
       * This is called when a comm message is received. If the function returns a
       * promise, kernel message processing will pause until it is fulfilled.
       */
      set onMsg(cb) {
        this._onMsg = cb;
      }
      /**
       * Open a comm with optional data and metadata.
       *
       * #### Notes
       * This sends a `comm_open` message to the server.
       *
       * **See also:** [[ICommOpen]]
       */
      open(data, metadata, buffers = []) {
        if (this.isDisposed || this._kernel.isDisposed) {
          throw new Error("Cannot open");
        }
        const msg = KernelMessage.createMessage({
          msgType: "comm_open",
          channel: "shell",
          username: this._kernel.username,
          session: this._kernel.clientId,
          subshellId: this._subshellId || this._kernel.subshellId,
          content: {
            comm_id: this._id,
            target_name: this._target,
            data: data !== null && data !== void 0 ? data : {}
          },
          metadata,
          buffers
        });
        return this._kernel.sendShellMessage(msg, false, true);
      }
      /**
       * Send a `comm_msg` message to the kernel.
       *
       * #### Notes
       * This is a no-op if the comm has been closed.
       *
       * **See also:** [[ICommMsg]]
       */
      send(data, metadata, buffers = [], disposeOnDone = true) {
        if (this.isDisposed || this._kernel.isDisposed) {
          throw new Error("Cannot send");
        }
        const msg = KernelMessage.createMessage({
          msgType: "comm_msg",
          channel: "shell",
          username: this._kernel.username,
          session: this._kernel.clientId,
          subshellId: this._subshellId || this._kernel.subshellId,
          content: {
            comm_id: this._id,
            data
          },
          metadata,
          buffers
        });
        return this._kernel.sendShellMessage(msg, false, disposeOnDone);
      }
      /**
       * Close the comm.
       *
       * #### Notes
       * This will send a `comm_close` message to the kernel, and call the
       * `onClose` callback if set.
       *
       * This is a no-op if the comm is already closed.
       *
       * **See also:** [[ICommClose]], [[onClose]]
       */
      close(data, metadata, buffers = []) {
        if (this.isDisposed || this._kernel.isDisposed) {
          throw new Error("Cannot close");
        }
        const msg = KernelMessage.createMessage({
          msgType: "comm_close",
          channel: "shell",
          username: this._kernel.username,
          session: this._kernel.clientId,
          subshellId: this._subshellId || this._kernel.subshellId,
          content: {
            comm_id: this._id,
            data: data !== null && data !== void 0 ? data : {}
          },
          metadata,
          buffers
        });
        const future = this._kernel.sendShellMessage(msg, false, true);
        const onClose = this._onClose;
        if (onClose) {
          const ioMsg = KernelMessage.createMessage({
            msgType: "comm_close",
            channel: "iopub",
            username: this._kernel.username,
            session: this._kernel.clientId,
            subshellId: this._subshellId || this._kernel.subshellId,
            content: {
              comm_id: this._id,
              data: data !== null && data !== void 0 ? data : {}
            },
            metadata,
            buffers
          });
          void onClose(ioMsg);
        }
        this.dispose();
        return future;
      }
      dispose() {
        this._maybeCloseSubshell();
        super.dispose();
      }
      _cleanSubshells() {
        const kernelId = this._kernel.id;
        if (_CommHandler._commTargetSubShellsId.hasOwnProperty(kernelId)) {
          delete _CommHandler._commTargetSubShellsId[kernelId];
        }
      }
      async _maybeStartSubshell() {
        await this._kernel.info;
        if (!this._kernel.supportsSubshells) {
          return;
        }
        if (this._commsOverSubshells === CommsOverSubshells.PerComm) {
          const replyMsg = await this._kernel.requestCreateSubshell({}).done;
          this._subshellId = replyMsg.content.subshell_id;
          this._subshellStarted.resolve();
          return;
        }
        const kernelId = this._kernel.id;
        if (!_CommHandler._commTargetSubShellsId.hasOwnProperty(kernelId)) {
          _CommHandler._commTargetSubShellsId[kernelId] = {};
        }
        const kernelCommTargetSubShells = _CommHandler._commTargetSubShellsId[kernelId];
        if (kernelCommTargetSubShells[this._target]) {
          this._subshellId = await kernelCommTargetSubShells[this._target];
          this._subshellStarted.resolve();
        } else {
          kernelCommTargetSubShells[this._target] = this._kernel.requestCreateSubshell({}).done.then((replyMsg) => {
            this._subshellId = replyMsg.content.subshell_id;
            return this._subshellId;
          });
          await kernelCommTargetSubShells[this._target];
          this._subshellStarted.resolve();
        }
      }
      _maybeCloseSubshell() {
        if (this._commsOverSubshells !== CommsOverSubshells.PerComm) {
          this._subshellId = null;
          return;
        }
        if (this._subshellId && this._kernel.status !== "dead") {
          this._kernel.requestDeleteSubshell({ subshell_id: this._subshellId }, true);
        }
        this._subshellId = null;
      }
    };
    exports2.CommHandler = CommHandler;
    CommHandler._commTargetSubShellsId = {};
  }
});

// ../../node_modules/@jupyterlab/services/lib/kernel/kernel.js
var require_kernel = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/kernel/kernel.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
  }
});

// ../../node_modules/@jupyterlab/services/lib/kernel/validate.js
var require_validate4 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/kernel/validate.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.validateMessage = validateMessage;
    exports2.validateModel = validateModel;
    exports2.validateModels = validateModels;
    var validate_1 = require_validate2();
    var HEADER_FIELDS = ["username", "version", "session", "msg_id", "msg_type"];
    var IOPUB_CONTENT_FIELDS = {
      stream: { name: "string", text: "string" },
      display_data: { data: "object", metadata: "object" },
      execute_input: { code: "string", execution_count: "number" },
      execute_result: {
        execution_count: "number",
        data: "object",
        metadata: "object"
      },
      error: { ename: "string", evalue: "string", traceback: "object" },
      status: {
        execution_state: [
          "string",
          ["starting", "idle", "busy", "restarting", "dead"]
        ]
      },
      clear_output: { wait: "boolean" },
      comm_open: { comm_id: "string", target_name: "string", data: "object" },
      comm_msg: { comm_id: "string", data: "object" },
      comm_close: { comm_id: "string" },
      shutdown_reply: { restart: "boolean" }
      // Emitted by the IPython kernel.
    };
    function validateHeader(header) {
      for (let i2 = 0; i2 < HEADER_FIELDS.length; i2++) {
        (0, validate_1.validateProperty)(header, HEADER_FIELDS[i2], "string");
      }
    }
    function validateMessage(msg) {
      (0, validate_1.validateProperty)(msg, "metadata", "object");
      (0, validate_1.validateProperty)(msg, "content", "object");
      (0, validate_1.validateProperty)(msg, "channel", "string");
      validateHeader(msg.header);
      if (msg.channel === "iopub") {
        validateIOPubContent(msg);
      }
    }
    function validateIOPubContent(msg) {
      if (msg.channel === "iopub") {
        const fields = IOPUB_CONTENT_FIELDS[msg.header.msg_type];
        if (fields === void 0) {
          return;
        }
        const names = Object.keys(fields);
        const content3 = msg.content;
        for (let i2 = 0; i2 < names.length; i2++) {
          let args = fields[names[i2]];
          if (!Array.isArray(args)) {
            args = [args];
          }
          (0, validate_1.validateProperty)(content3, names[i2], ...args);
        }
      }
    }
    function validateModel(model) {
      (0, validate_1.validateProperty)(model, "name", "string");
      (0, validate_1.validateProperty)(model, "id", "string");
    }
    function validateModels(models) {
      if (!Array.isArray(models)) {
        throw new Error("Invalid kernel list");
      }
      models.forEach((d) => validateModel(d));
    }
  }
});

// ../../node_modules/@jupyterlab/services/lib/kernel/restapi.js
var require_restapi = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/kernel/restapi.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.KernelAPIClient = exports2.KERNEL_SERVICE_URL = void 0;
    exports2.listRunning = listRunning;
    exports2.startNew = startNew;
    exports2.restartKernel = restartKernel;
    exports2.interruptKernel = interruptKernel;
    exports2.shutdownKernel = shutdownKernel;
    exports2.getKernelModel = getKernelModel;
    var serverconnection_1 = require_serverconnection();
    var coreutils_12 = require_lib27();
    var validate_1 = require_validate4();
    exports2.KERNEL_SERVICE_URL = "api/kernels";
    async function listRunning(settings = serverconnection_1.ServerConnection.makeSettings()) {
      const url = coreutils_12.URLExt.join(settings.baseUrl, exports2.KERNEL_SERVICE_URL);
      const response = await serverconnection_1.ServerConnection.makeRequest(url, {}, settings);
      if (response.status !== 200) {
        const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
        throw err;
      }
      const data = await response.json();
      (0, validate_1.validateModels)(data);
      return data;
    }
    async function startNew(options = {}, settings = serverconnection_1.ServerConnection.makeSettings()) {
      const url = coreutils_12.URLExt.join(settings.baseUrl, exports2.KERNEL_SERVICE_URL);
      const init4 = {
        method: "POST",
        body: JSON.stringify(options)
      };
      const response = await serverconnection_1.ServerConnection.makeRequest(url, init4, settings);
      if (response.status !== 201) {
        const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
        throw err;
      }
      const data = await response.json();
      (0, validate_1.validateModel)(data);
      return data;
    }
    async function restartKernel(id, settings = serverconnection_1.ServerConnection.makeSettings()) {
      const url = coreutils_12.URLExt.join(settings.baseUrl, exports2.KERNEL_SERVICE_URL, encodeURIComponent(id), "restart");
      const init4 = { method: "POST" };
      const response = await serverconnection_1.ServerConnection.makeRequest(url, init4, settings);
      if (response.status !== 200) {
        const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
        throw err;
      }
      const data = await response.json();
      (0, validate_1.validateModel)(data);
    }
    async function interruptKernel(id, settings = serverconnection_1.ServerConnection.makeSettings()) {
      const url = coreutils_12.URLExt.join(settings.baseUrl, exports2.KERNEL_SERVICE_URL, encodeURIComponent(id), "interrupt");
      const init4 = { method: "POST" };
      const response = await serverconnection_1.ServerConnection.makeRequest(url, init4, settings);
      if (response.status !== 204) {
        const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
        throw err;
      }
    }
    async function shutdownKernel(id, settings = serverconnection_1.ServerConnection.makeSettings()) {
      const url = coreutils_12.URLExt.join(settings.baseUrl, exports2.KERNEL_SERVICE_URL, encodeURIComponent(id));
      const init4 = { method: "DELETE" };
      const response = await serverconnection_1.ServerConnection.makeRequest(url, init4, settings);
      if (response.status === 404) {
        const msg = `The kernel "${id}" does not exist on the server`;
        console.warn(msg);
      } else if (response.status !== 204) {
        const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
        throw err;
      }
    }
    async function getKernelModel(id, settings = serverconnection_1.ServerConnection.makeSettings()) {
      const url = coreutils_12.URLExt.join(settings.baseUrl, exports2.KERNEL_SERVICE_URL, encodeURIComponent(id));
      const response = await serverconnection_1.ServerConnection.makeRequest(url, {}, settings);
      if (response.status === 404) {
        return void 0;
      } else if (response.status !== 200) {
        const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
        throw err;
      }
      const data = await response.json();
      (0, validate_1.validateModel)(data);
      return data;
    }
    var KernelAPIClient = class {
      /**
       * Create a new kernel API client.
       *
       * @param options - The options used to create the client.
       */
      constructor(options = {}) {
        var _a6;
        this.serverSettings = (_a6 = options.serverSettings) !== null && _a6 !== void 0 ? _a6 : serverconnection_1.ServerConnection.makeSettings();
      }
      /**
       * List the running kernels.
       *
       * @returns A promise that resolves with the list of running kernel models.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model.
       *
       * The promise is fulfilled on a valid response and rejected otherwise.
       */
      async listRunning() {
        return listRunning(this.serverSettings);
      }
      /**
       * Get a kernel model.
       *
       * @param id - The id of the kernel of interest.
       *
       * @returns A promise that resolves with the kernel model.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model.
       *
       * The promise is fulfilled on a valid response and rejected otherwise.
       * If the kernel does not exist on the server, the promise is resolved with `undefined`.
       */
      async getModel(id) {
        return getKernelModel(id, this.serverSettings);
      }
      /**
       * Start a new kernel.
       *
       * @param options - The options used to create the kernel.
       *
       * @returns A promise that resolves with the kernel model.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model.
       *
       * The promise is fulfilled on a valid response and rejected otherwise.
       */
      async startNew(options = {}) {
        return startNew(options, this.serverSettings);
      }
      /**
       * Restart a kernel.
       *
       * @param id - The id of the kernel to restart.
       *
       * @returns A promise that resolves when the kernel is restarted.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model.
       *
       * The promise is fulfilled on a valid response and rejected otherwise.
       */
      async restart(id) {
        return restartKernel(id, this.serverSettings);
      }
      /**
       * Interrupt a kernel.
       *
       * @param id - The id of the kernel to interrupt.
       *
       * @returns A promise that resolves when the kernel is interrupted.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model.
       *
       * The promise is fulfilled on a valid response and rejected otherwise.
       */
      async interrupt(id) {
        return interruptKernel(id, this.serverSettings);
      }
      /**
       * Shut down a kernel by id.
       *
       * @param id - The id of the kernel to shut down.
       *
       * @returns A promise that resolves when the kernel is shut down.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels) and validates the response model.
       *
       * The promise is fulfilled on a valid response and rejected otherwise.
       */
      async shutdown(id) {
        return shutdownKernel(id, this.serverSettings);
      }
    };
    exports2.KernelAPIClient = KernelAPIClient;
  }
});

// ../../node_modules/@jupyterlab/services/lib/kernel/future.js
var require_future = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/kernel/future.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.KernelShellFutureHandler = exports2.KernelControlFutureHandler = exports2.KernelFutureHandler = void 0;
    var coreutils_12 = require_index_node3();
    var disposable_1 = require_dist8();
    var KernelMessage = __importStar(require_messages());
    var KernelFutureHandler = class extends disposable_1.DisposableDelegate {
      /**
       * Construct a new KernelFutureHandler.
       */
      constructor(cb, msg, expectReply, disposeOnDone, kernel) {
        super(cb);
        this._status = 0;
        this._stdin = Private.noOp;
        this._iopub = Private.noOp;
        this._reply = Private.noOp;
        this._done = new coreutils_12.PromiseDelegate();
        this._hooks = new Private.HookList();
        this._disposeOnDone = true;
        this._msg = msg;
        if (!expectReply) {
          this._setFlag(Private.KernelFutureFlag.GotReply);
        }
        this._disposeOnDone = disposeOnDone;
        this._kernel = kernel;
      }
      /**
       * Get the original outgoing message.
       */
      get msg() {
        return this._msg;
      }
      /**
       * A promise that resolves when the future is done.
       */
      get done() {
        return this._done.promise;
      }
      /**
       * Get the reply handler.
       */
      get onReply() {
        return this._reply;
      }
      /**
       * Set the reply handler.
       */
      set onReply(cb) {
        this._reply = cb;
      }
      /**
       * Get the iopub handler.
       */
      get onIOPub() {
        return this._iopub;
      }
      /**
       * Set the iopub handler.
       */
      set onIOPub(cb) {
        this._iopub = cb;
      }
      /**
       * Get the stdin handler.
       */
      get onStdin() {
        return this._stdin;
      }
      /**
       * Set the stdin handler.
       */
      set onStdin(cb) {
        this._stdin = cb;
      }
      /**
       * Register hook for IOPub messages.
       *
       * @param hook - The callback invoked for an IOPub message.
       *
       * #### Notes
       * The IOPub hook system allows you to preempt the handlers for IOPub
       * messages handled by the future.
       *
       * The most recently registered hook is run first. A hook can return a
       * boolean or a promise to a boolean, in which case all kernel message
       * processing pauses until the promise is fulfilled. If a hook return value
       * resolves to false, any later hooks will not run and the function will
       * return a promise resolving to false. If a hook throws an error, the error
       * is logged to the console and the next hook is run. If a hook is
       * registered during the hook processing, it will not run until the next
       * message. If a hook is removed during the hook processing, it will be
       * deactivated immediately.
       */
      registerMessageHook(hook) {
        if (this.isDisposed) {
          throw new Error("Kernel future is disposed");
        }
        this._hooks.add(hook);
      }
      /**
       * Remove a hook for IOPub messages.
       *
       * @param hook - The hook to remove.
       *
       * #### Notes
       * If a hook is removed during the hook processing, it will be deactivated immediately.
       */
      removeMessageHook(hook) {
        if (this.isDisposed) {
          return;
        }
        this._hooks.remove(hook);
      }
      /**
       * Send an `input_reply` message.
       */
      sendInputReply(content3, parent_header) {
        this._kernel.sendInputReply(content3, parent_header);
      }
      /**
       * Dispose and unregister the future.
       */
      dispose() {
        this._stdin = Private.noOp;
        this._iopub = Private.noOp;
        this._reply = Private.noOp;
        this._hooks = null;
        if (!this._testFlag(Private.KernelFutureFlag.IsDone)) {
          this._done.promise.catch(() => {
          });
          this._done.reject(new Error(`Canceled future for ${this.msg.header.msg_type} message before replies were done`));
        }
        super.dispose();
      }
      /**
       * Handle an incoming kernel message.
       */
      async handleMsg(msg) {
        switch (msg.channel) {
          case "control":
          case "shell":
            if (msg.channel === this.msg.channel && msg.parent_header.msg_id === this.msg.header.msg_id) {
              await this._handleReply(msg);
            }
            break;
          case "stdin":
            await this._handleStdin(msg);
            break;
          case "iopub":
            await this._handleIOPub(msg);
            break;
          default:
            break;
        }
      }
      async _handleReply(msg) {
        const reply = this._reply;
        if (reply) {
          await reply(msg);
        }
        this._replyMsg = msg;
        this._setFlag(Private.KernelFutureFlag.GotReply);
        if (this._testFlag(Private.KernelFutureFlag.GotIdle)) {
          this._handleDone();
        }
      }
      async _handleStdin(msg) {
        this._kernel.hasPendingInput = true;
        const stdin = this._stdin;
        if (stdin) {
          await stdin(msg);
        }
      }
      async _handleIOPub(msg) {
        const process11 = await this._hooks.process(msg);
        const iopub = this._iopub;
        if (process11 && iopub) {
          await iopub(msg);
        }
        if (KernelMessage.isStatusMsg(msg) && msg.content.execution_state === "idle") {
          this._setFlag(Private.KernelFutureFlag.GotIdle);
          if (this._testFlag(Private.KernelFutureFlag.GotReply)) {
            this._handleDone();
          }
        }
      }
      _handleDone() {
        if (this._testFlag(Private.KernelFutureFlag.IsDone)) {
          return;
        }
        this._setFlag(Private.KernelFutureFlag.IsDone);
        this._done.resolve(this._replyMsg);
        if (this._disposeOnDone) {
          this.dispose();
        }
      }
      /**
       * Test whether the given future flag is set.
       */
      _testFlag(flag) {
        return (this._status & flag) !== 0;
      }
      /**
       * Set the given future flag.
       */
      _setFlag(flag) {
        this._status |= flag;
      }
    };
    exports2.KernelFutureHandler = KernelFutureHandler;
    var KernelControlFutureHandler = class extends KernelFutureHandler {
    };
    exports2.KernelControlFutureHandler = KernelControlFutureHandler;
    var KernelShellFutureHandler = class extends KernelFutureHandler {
    };
    exports2.KernelShellFutureHandler = KernelShellFutureHandler;
    var Private;
    (function(Private2) {
      Private2.noOp = () => {
      };
      const defer3 = (() => {
        const ok3 = typeof requestAnimationFrame === "function";
        return ok3 ? requestAnimationFrame : setImmediate;
      })();
      class HookList {
        constructor() {
          this._hooks = [];
        }
        /**
         * Register a hook.
         *
         * @param hook - The callback to register.
         */
        add(hook) {
          this.remove(hook);
          this._hooks.push(hook);
        }
        /**
         * Remove a hook, if it exists in the hook list.
         *
         * @param hook - The callback to remove.
         */
        remove(hook) {
          const index4 = this._hooks.indexOf(hook);
          if (index4 >= 0) {
            this._hooks[index4] = null;
            this._scheduleCompact();
          }
        }
        /**
         * Process a message through the hooks.
         *
         * @returns a promise resolving to false if any hook resolved as false,
         * otherwise true
         *
         * #### Notes
         * The most recently registered hook is run first. A hook can return a
         * boolean or a promise to a boolean, in which case processing pauses until
         * the promise is fulfilled. If a hook return value resolves to false, any
         * later hooks will not run and the function will return a promise resolving
         * to false. If a hook throws an error, the error is logged to the console
         * and the next hook is run. If a hook is registered during the hook
         * processing, it will not run until the next message. If a hook is removed
         * during the hook processing, it will be deactivated immediately.
         */
        async process(msg) {
          await this._processing;
          const processing = new coreutils_12.PromiseDelegate();
          this._processing = processing.promise;
          let continueHandling;
          for (let i2 = this._hooks.length - 1; i2 >= 0; i2--) {
            const hook = this._hooks[i2];
            if (hook === null) {
              continue;
            }
            try {
              continueHandling = await hook(msg);
            } catch (err) {
              continueHandling = true;
              console.error(err);
            }
            if (continueHandling === false) {
              processing.resolve(void 0);
              return false;
            }
          }
          processing.resolve(void 0);
          return true;
        }
        /**
         * Schedule a cleanup of the list, removing any hooks that have been nulled out.
         */
        _scheduleCompact() {
          if (!this._compactScheduled) {
            this._compactScheduled = true;
            defer3(() => {
              this._processing = this._processing.then(() => {
                this._compactScheduled = false;
                this._compact();
              });
            });
          }
        }
        /**
         * Compact the list, removing any nulls.
         */
        _compact() {
          let numNulls = 0;
          for (let i2 = 0, len = this._hooks.length; i2 < len; i2++) {
            const hook = this._hooks[i2];
            if (this._hooks[i2] === null) {
              numNulls++;
            } else {
              this._hooks[i2 - numNulls] = hook;
            }
          }
          this._hooks.length -= numNulls;
        }
      }
      Private2.HookList = HookList;
      let KernelFutureFlag;
      (function(KernelFutureFlag2) {
        KernelFutureFlag2[KernelFutureFlag2["GotReply"] = 1] = "GotReply";
        KernelFutureFlag2[KernelFutureFlag2["GotIdle"] = 2] = "GotIdle";
        KernelFutureFlag2[KernelFutureFlag2["IsDone"] = 4] = "IsDone";
        KernelFutureFlag2[KernelFutureFlag2["DisposeOnDone"] = 8] = "DisposeOnDone";
      })(KernelFutureFlag = Private2.KernelFutureFlag || (Private2.KernelFutureFlag = {}));
    })(Private || (Private = {}));
  }
});

// ../../node_modules/@jupyterlab/services/lib/kernelspec/validate.js
var require_validate5 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/kernelspec/validate.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.validateSpecModel = validateSpecModel;
    exports2.validateSpecModels = validateSpecModels;
    var validate_1 = require_validate2();
    function validateSpecModel(data) {
      const spec = data.spec;
      if (!spec) {
        throw new Error("Invalid kernel spec");
      }
      (0, validate_1.validateProperty)(data, "name", "string");
      (0, validate_1.validateProperty)(data, "resources", "object");
      (0, validate_1.validateProperty)(spec, "language", "string");
      (0, validate_1.validateProperty)(spec, "display_name", "string");
      (0, validate_1.validateProperty)(spec, "argv", "array");
      let metadata = null;
      if (spec.hasOwnProperty("metadata")) {
        (0, validate_1.validateProperty)(spec, "metadata", "object");
        metadata = spec.metadata;
      }
      let env6 = null;
      if (spec.hasOwnProperty("env")) {
        (0, validate_1.validateProperty)(spec, "env", "object");
        env6 = spec.env;
      }
      return {
        name: data.name,
        resources: data.resources,
        language: spec.language,
        display_name: spec.display_name,
        argv: spec.argv,
        metadata,
        env: env6
      };
    }
    function validateSpecModels(data) {
      if (!data.hasOwnProperty("kernelspecs")) {
        throw new Error("No kernelspecs found");
      }
      let keys2 = Object.keys(data.kernelspecs);
      const kernelspecs = /* @__PURE__ */ Object.create(null);
      let defaultSpec = data.default;
      for (let i2 = 0; i2 < keys2.length; i2++) {
        const ks = data.kernelspecs[keys2[i2]];
        try {
          kernelspecs[keys2[i2]] = validateSpecModel(ks);
        } catch (err) {
          console.warn(`Removing errant kernel spec: ${keys2[i2]}`);
        }
      }
      keys2 = Object.keys(kernelspecs);
      if (!keys2.length) {
        throw new Error("No valid kernelspecs found");
      }
      if (!defaultSpec || typeof defaultSpec !== "string" || !(defaultSpec in kernelspecs)) {
        defaultSpec = keys2[0];
        console.warn(`Default kernel not found, using '${keys2[0]}'`);
      }
      return {
        default: defaultSpec,
        kernelspecs
      };
    }
  }
});

// ../../node_modules/@jupyterlab/services/lib/kernelspec/restapi.js
var require_restapi2 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/kernelspec/restapi.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.KernelSpecAPIClient = void 0;
    exports2.getSpecs = getSpecs;
    var serverconnection_1 = require_serverconnection();
    var validate_1 = require_validate5();
    var coreutils_12 = require_lib27();
    var KERNELSPEC_SERVICE_URL = "api/kernelspecs";
    async function getSpecs(settings = serverconnection_1.ServerConnection.makeSettings()) {
      const url = coreutils_12.URLExt.join(settings.baseUrl, KERNELSPEC_SERVICE_URL);
      const response = await serverconnection_1.ServerConnection.makeRequest(url, {}, settings);
      if (response.status !== 200) {
        const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
        throw err;
      }
      const data = await response.json();
      return (0, validate_1.validateSpecModels)(data);
    }
    var KernelSpecAPIClient = class {
      /**
       * Create a new Kernel Spec API client.
       *
       * @param options - The options used to create the client.
       */
      constructor(options = {}) {
        var _a6;
        this.serverSettings = (_a6 = options.serverSettings) !== null && _a6 !== void 0 ? _a6 : serverconnection_1.ServerConnection.makeSettings();
      }
      /**
       * Fetch all of the kernel specs.
       *
       * @returns A promise that resolves with the kernel specs.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernelspecs).
       */
      async get() {
        return getSpecs(this.serverSettings);
      }
    };
    exports2.KernelSpecAPIClient = KernelSpecAPIClient;
  }
});

// ../../node_modules/@jupyterlab/services/lib/kernel/default.js
var require_default3 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/kernel/default.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.KernelConnection = void 0;
    var coreutils_12 = require_lib27();
    var coreutils_2 = require_index_node3();
    var signaling_1 = require_dist7();
    var __1 = require_lib29();
    var comm_1 = require_comm();
    var KernelMessage = __importStar(require_messages());
    var future_1 = require_future();
    var validate5 = __importStar(require_validate4());
    var restapi_1 = require_restapi();
    var restapi_2 = require_restapi2();
    var KERNEL_INFO_TIMEOUT = 3e3;
    var RESTARTING_KERNEL_SESSION = "_RESTARTING_";
    var STARTING_KERNEL_SESSION = "";
    var KernelConnection = class _KernelConnection {
      /**
       * Construct a kernel object.
       */
      constructor(options) {
        var _a6, _b, _c, _d2, _e, _f, _g, _h;
        this._createSocket = (useProtocols = true) => {
          this._errorIfDisposed();
          this._clearSocket();
          this._updateConnectionStatus("connecting");
          const settings = this.serverSettings;
          const partialUrl = coreutils_12.URLExt.join(settings.wsUrl, restapi_1.KERNEL_SERVICE_URL, encodeURIComponent(this._id));
          const display = partialUrl.replace(/^((?:\w+:)?\/\/)(?:[^@\/]+@)/, "$1");
          console.debug(`Starting WebSocket: ${display}`);
          let url = coreutils_12.URLExt.join(partialUrl, "channels?session_id=" + encodeURIComponent(this._clientId));
          const token = settings.token;
          if (settings.appendToken && token !== "") {
            url = url + `&token=${encodeURIComponent(token)}`;
          }
          const supportedProtocols2 = useProtocols ? this._supportedProtocols : [];
          this._ws = new settings.WebSocket(url, supportedProtocols2);
          this._ws.binaryType = "arraybuffer";
          let alreadyCalledOnclose = false;
          const getKernelModel = async (evt) => {
            var _a7, _b2;
            if (this._isDisposed) {
              return;
            }
            this._reason = "";
            this._model = void 0;
            try {
              const model = await this._kernelAPIClient.getModel(this._id);
              this._model = model;
              if ((model === null || model === void 0 ? void 0 : model.execution_state) === "dead") {
                this._updateStatus("dead");
              } else {
                this._onWSClose(evt);
              }
            } catch (err) {
              if (err instanceof __1.ServerConnection.NetworkError || ((_a7 = err.response) === null || _a7 === void 0 ? void 0 : _a7.status) === 503 || ((_b2 = err.response) === null || _b2 === void 0 ? void 0 : _b2.status) === 424) {
                const timeout = Private.getRandomIntInclusive(10, 30) * 1e3;
                setTimeout(getKernelModel, timeout, evt);
              } else {
                this._reason = "Kernel died unexpectedly";
                this._updateStatus("dead");
              }
            }
            return;
          };
          const earlyClose = async (evt) => {
            if (alreadyCalledOnclose) {
              return;
            }
            alreadyCalledOnclose = true;
            await getKernelModel(evt);
            return;
          };
          this._ws.onmessage = this._onWSMessage;
          this._ws.onopen = this._onWSOpen;
          this._ws.onclose = earlyClose;
          this._ws.onerror = earlyClose;
        };
        this._onWSOpen = (evt) => {
          if (this._ws.protocol !== "" && !this._supportedProtocols.includes(this._ws.protocol)) {
            console.log("Server selected unknown kernel wire protocol:", this._ws.protocol);
            this._updateStatus("dead");
            throw new Error(`Unknown kernel wire protocol:  ${this._ws.protocol}`);
          }
          this._selectedProtocol = this._ws.protocol;
          this._ws.onclose = this._onWSClose;
          this._ws.onerror = this._onWSClose;
          this._updateConnectionStatus("connected");
        };
        this._onWSMessage = (evt) => {
          let msg;
          try {
            msg = this.serverSettings.serializer.deserialize(evt.data, this._ws.protocol);
            validate5.validateMessage(msg);
          } catch (error) {
            error.message = `Kernel message validation error: ${error.message}`;
            throw error;
          }
          this._kernelSession = msg.header.session;
          this._msgChain = this._msgChain.then(() => {
            return this._handleMessage(msg);
          }).catch((error) => {
            if (error.message.startsWith("Canceled future for ")) {
              console.error(error);
            }
          });
          this._anyMessage.emit({ msg, direction: "recv" });
        };
        this._onWSClose = (evt) => {
          if (!this.isDisposed) {
            this._reconnect();
          }
        };
        this._id = "";
        this._name = "";
        this._status = "unknown";
        this._connectionStatus = "connecting";
        this._kernelSession = "";
        this._isDisposed = false;
        this._ws = null;
        this._username = "";
        this._reconnectLimit = 7;
        this._reconnectAttempt = 0;
        this._reconnectTimeout = null;
        this._supportedProtocols = Object.values(KernelMessage.supportedKernelWebSocketProtocols);
        this._selectedProtocol = "";
        this._commsOverSubshells = __1.CommsOverSubshells.PerCommTarget;
        this._futures = /* @__PURE__ */ new Map();
        this._comms = /* @__PURE__ */ new Map();
        this._targetRegistry = /* @__PURE__ */ Object.create(null);
        this._info = new coreutils_2.PromiseDelegate();
        this._pendingMessages = [];
        this._statusChanged = new signaling_1.Signal(this);
        this._connectionStatusChanged = new signaling_1.Signal(this);
        this._disposed = new signaling_1.Signal(this);
        this._iopubMessage = new signaling_1.Signal(this);
        this._anyMessage = new signaling_1.Signal(this);
        this._pendingInput = new signaling_1.Signal(this);
        this._unhandledMessage = new signaling_1.Signal(this);
        this._displayIdToParentIds = /* @__PURE__ */ new Map();
        this._msgIdToDisplayIds = /* @__PURE__ */ new Map();
        this._msgChain = Promise.resolve();
        this._hasPendingInput = false;
        this._reason = "";
        this._noOp = () => {
        };
        this._supportsSubshells = false;
        this._name = options.model.name;
        this._id = options.model.id;
        this.serverSettings = (_a6 = options.serverSettings) !== null && _a6 !== void 0 ? _a6 : __1.ServerConnection.makeSettings();
        this._kernelAPIClient = (_b = options.kernelAPIClient) !== null && _b !== void 0 ? _b : new restapi_1.KernelAPIClient({ serverSettings: this.serverSettings });
        this._kernelSpecAPIClient = (_c = options.kernelSpecAPIClient) !== null && _c !== void 0 ? _c : new restapi_2.KernelSpecAPIClient({ serverSettings: this.serverSettings });
        this._clientId = (_d2 = options.clientId) !== null && _d2 !== void 0 ? _d2 : coreutils_2.UUID.uuid4();
        this._username = (_e = options.username) !== null && _e !== void 0 ? _e : "";
        this.handleComms = (_f = options.handleComms) !== null && _f !== void 0 ? _f : true;
        this._commsOverSubshells = (_g = options.commsOverSubshells) !== null && _g !== void 0 ? _g : __1.CommsOverSubshells.PerCommTarget;
        this._subshellId = (_h = options.subshellId) !== null && _h !== void 0 ? _h : null;
        this._createSocket();
      }
      get disposed() {
        return this._disposed;
      }
      /**
       * Whether comm messages should be sent to kernel subshells, if the
       * kernel supports it.
       *
       * #### Notes
       * Sending comm messages over subshells allows processing comms whilst
       * processing execute-request on the "main shell". This prevents blocking
       * comm processing.
       * Options are:
       * - disabled: not using subshells
       * - one subshell per comm-target (default)
       * - one subshell per comm (can lead to issues if creating many comms)
       */
      get commsOverSubshells() {
        return this._commsOverSubshells;
      }
      set commsOverSubshells(value) {
        this._commsOverSubshells = value;
        for (const [_2, comm] of this._comms) {
          comm.commsOverSubshells = value;
        }
      }
      /**
       * A signal emitted when the kernel status changes.
       */
      get statusChanged() {
        return this._statusChanged;
      }
      /**
       * A signal emitted when the kernel status changes.
       */
      get connectionStatusChanged() {
        return this._connectionStatusChanged;
      }
      /**
       * A signal emitted for iopub kernel messages.
       *
       * #### Notes
       * This signal is emitted after the iopub message is handled asynchronously.
       */
      get iopubMessage() {
        return this._iopubMessage;
      }
      /**
       * A signal emitted for unhandled kernel message.
       *
       * #### Notes
       * This signal is emitted for a message that was not handled. It is emitted
       * during the asynchronous message handling code.
       */
      get unhandledMessage() {
        return this._unhandledMessage;
      }
      /**
       * The kernel model
       */
      get model() {
        return this._model || {
          id: this.id,
          name: this.name,
          reason: this._reason
        };
      }
      /**
       * A signal emitted for any kernel message.
       *
       * #### Notes
       * This signal is emitted when a message is received, before it is handled
       * asynchronously.
       *
       * This message is emitted when a message is queued for sending (either in
       * the websocket buffer, or our own pending message buffer). The message may
       * actually be sent across the wire at a later time.
       *
       * The message emitted in this signal should not be modified in any way.
       */
      get anyMessage() {
        return this._anyMessage;
      }
      /**
       * A signal emitted when a kernel has pending inputs from the user.
       */
      get pendingInput() {
        return this._pendingInput;
      }
      /**
       * The id of the server-side kernel.
       */
      get id() {
        return this._id;
      }
      /**
       * The name of the server-side kernel.
       */
      get name() {
        return this._name;
      }
      /**
       * The client username.
       */
      get username() {
        return this._username;
      }
      /**
       * The client unique id.
       */
      get clientId() {
        return this._clientId;
      }
      /**
       * The subshell ID.
       */
      get subshellId() {
        return this._subshellId;
      }
      /**
       * Set the subshell ID.
       */
      set subshellId(value) {
        this._subshellId = value;
      }
      /**
       * The current status of the kernel.
       */
      get status() {
        return this._status;
      }
      /**
       * The current connection status of the kernel connection.
       */
      get connectionStatus() {
        return this._connectionStatus;
      }
      /**
       * Test whether the kernel has been disposed.
       */
      get isDisposed() {
        return this._isDisposed;
      }
      /**
       * The cached kernel info.
       *
       * @returns A promise that resolves to the kernel info.
       */
      get info() {
        return this._info.promise;
      }
      /**
       * The kernel spec.
       *
       * @returns A promise that resolves to the kernel spec.
       */
      get spec() {
        if (this._specPromise) {
          return this._specPromise;
        }
        this._specPromise = this._kernelSpecAPIClient.get().then((specs) => {
          return specs.kernelspecs[this._name];
        });
        return this._specPromise;
      }
      /**
       * Check if this kernel supports JEP 91 kernel subshells.
       */
      get supportsSubshells() {
        return this._supportsSubshells;
      }
      /**
       * Clone the current kernel with a new clientId.
       */
      clone(options = {}) {
        return new _KernelConnection({
          model: this.model,
          username: this.username,
          serverSettings: this.serverSettings,
          // handleComms defaults to false since that is safer
          handleComms: false,
          kernelAPIClient: this._kernelAPIClient,
          commsOverSubshells: __1.CommsOverSubshells.Disabled,
          ...options
        });
      }
      /**
       * Dispose of the resources held by the kernel.
       */
      dispose() {
        if (this.isDisposed) {
          return;
        }
        const cleanup = () => {
          this._isDisposed = true;
          this._disposed.emit();
          this._updateConnectionStatus("disconnected");
          this._clearKernelState();
          this._pendingMessages = [];
          this._clearSocket();
          signaling_1.Signal.clearData(this);
        };
        if (this._subshellId !== null) {
          const future = this.requestDeleteSubshell({ subshell_id: this._subshellId }, true);
          future.onReply = (msg) => {
            cleanup();
          };
        } else {
          cleanup();
        }
      }
      /**
       * Send a shell message to the kernel.
       *
       * #### Notes
       * Send a message to the kernel's shell channel, yielding a future object
       * for accepting replies.
       *
       * If `expectReply` is given and `true`, the future is disposed when both a
       * shell reply and an idle status message are received. If `expectReply`
       * is not given or is `false`, the future is resolved when an idle status
       * message is received.
       * If `disposeOnDone` is not given or is `true`, the Future is disposed at this point.
       * If `disposeOnDone` is given and `false`, it is up to the caller to dispose of the Future.
       *
       * All replies are validated as valid kernel messages.
       *
       * If the kernel status is `dead`, this will throw an error.
       */
      sendShellMessage(msg, expectReply = false, disposeOnDone = true) {
        return this._sendKernelShellControl(future_1.KernelShellFutureHandler, msg, expectReply, disposeOnDone);
      }
      /**
       * Send a control message to the kernel.
       *
       * #### Notes
       * Send a message to the kernel's control channel, yielding a future object
       * for accepting replies.
       *
       * If `expectReply` is given and `true`, the future is disposed when both a
       * control reply and an idle status message are received. If `expectReply`
       * is not given or is `false`, the future is resolved when an idle status
       * message is received.
       * If `disposeOnDone` is not given or is `true`, the Future is disposed at this point.
       * If `disposeOnDone` is given and `false`, it is up to the caller to dispose of the Future.
       *
       * All replies are validated as valid kernel messages.
       *
       * If the kernel status is `dead`, this will throw an error.
       */
      sendControlMessage(msg, expectReply = false, disposeOnDone = true) {
        return this._sendKernelShellControl(future_1.KernelControlFutureHandler, msg, expectReply, disposeOnDone);
      }
      _sendKernelShellControl(ctor, msg, expectReply = false, disposeOnDone = true) {
        this._sendMessage(msg);
        this._anyMessage.emit({ msg, direction: "send" });
        const future = new ctor(() => {
          const msgId = msg.header.msg_id;
          this._futures.delete(msgId);
          const displayIds = this._msgIdToDisplayIds.get(msgId);
          if (!displayIds) {
            return;
          }
          displayIds.forEach((displayId) => {
            const msgIds = this._displayIdToParentIds.get(displayId);
            if (msgIds) {
              const idx = msgIds.indexOf(msgId);
              if (idx === -1) {
                return;
              }
              if (msgIds.length === 1) {
                this._displayIdToParentIds.delete(displayId);
              } else {
                msgIds.splice(idx, 1);
                this._displayIdToParentIds.set(displayId, msgIds);
              }
            }
          });
          this._msgIdToDisplayIds.delete(msgId);
        }, msg, expectReply, disposeOnDone, this);
        this._futures.set(msg.header.msg_id, future);
        return future;
      }
      /**
       * Send a message on the websocket.
       *
       * If queue is true, queue the message for later sending if we cannot send
       * now. Otherwise throw an error.
       *
       * #### Notes
       * As an exception to the queueing, if we are sending a kernel_info_request
       * message while we think the kernel is restarting, we send the message
       * immediately without queueing. This is so that we can trigger a message
       * back, which will then clear the kernel restarting state.
       */
      _sendMessage(msg, queue = true) {
        if (this.status === "dead") {
          throw new Error("Kernel is dead");
        }
        if ((this._kernelSession === STARTING_KERNEL_SESSION || this._kernelSession === RESTARTING_KERNEL_SESSION) && KernelMessage.isInfoRequestMsg(msg)) {
          if (this.connectionStatus === "connected") {
            this._ws.send(this.serverSettings.serializer.serialize(msg, this._ws.protocol));
            return;
          } else {
            throw new Error("Could not send message: status is not connected");
          }
        }
        if (queue && this._pendingMessages.length > 0) {
          this._pendingMessages.push(msg);
          return;
        }
        if (this.connectionStatus === "connected" && this._kernelSession !== RESTARTING_KERNEL_SESSION) {
          this._ws.send(this.serverSettings.serializer.serialize(msg, this._ws.protocol));
        } else if (queue) {
          this._pendingMessages.push(msg);
        } else {
          throw new Error("Could not send message");
        }
      }
      /**
       * Interrupt a kernel.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels).
       *
       * The promise is fulfilled on a valid response and rejected otherwise.
       *
       * It is assumed that the API call does not mutate the kernel id or name.
       *
       * The promise will be rejected if the kernel status is `Dead` or if the
       * request fails or the response is invalid.
       */
      async interrupt() {
        this.hasPendingInput = false;
        if (this.status === "dead") {
          throw new Error("Kernel is dead");
        }
        return this._kernelAPIClient.interrupt(this.id);
      }
      /**
       * Request a kernel restart.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels)
       * and validates the response model.
       *
       * Any existing Future or Comm objects are cleared once the kernel has
       * actually be restarted.
       *
       * The promise is fulfilled on a valid server response (after the kernel restarts)
       * and rejected otherwise.
       *
       * It is assumed that the API call does not mutate the kernel id or name.
       *
       * The promise will be rejected if the request fails or the response is
       * invalid.
       */
      async restart() {
        if (this.status === "dead") {
          throw new Error("Kernel is dead");
        }
        this._updateStatus("restarting");
        this._clearKernelState();
        this._kernelSession = RESTARTING_KERNEL_SESSION;
        await this._kernelAPIClient.restart(this.id);
        await this.reconnect();
        this.hasPendingInput = false;
      }
      /**
       * Reconnect to a kernel.
       *
       * #### Notes
       * This may try multiple times to reconnect to a kernel, and will sever any
       * existing connection.
       */
      reconnect() {
        this._errorIfDisposed();
        const result = new coreutils_2.PromiseDelegate();
        const fulfill = (sender, status) => {
          if (status === "connected") {
            result.resolve();
            this.connectionStatusChanged.disconnect(fulfill, this);
          } else if (status === "disconnected") {
            result.reject(new Error("Kernel connection disconnected"));
            this.connectionStatusChanged.disconnect(fulfill, this);
          }
        };
        this.connectionStatusChanged.connect(fulfill, this);
        this._reconnectAttempt = 0;
        this._reconnect();
        return result.promise;
      }
      /**
       * Shutdown a kernel.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/kernels).
       *
       * The promise is fulfilled on a valid response and rejected otherwise.
       *
       * On a valid response, disposes this kernel connection.
       *
       * If the kernel is already `dead`, disposes this kernel connection without
       * a server request.
       */
      async shutdown() {
        if (this.status !== "dead") {
          await this._kernelAPIClient.shutdown(this.id);
        }
        this.handleShutdown();
      }
      /**
       * Handles a kernel shutdown.
       *
       * #### Notes
       * This method should be called if we know from outside information that a
       * kernel is dead (for example, we cannot find the kernel model on the
       * server).
       */
      handleShutdown() {
        this._updateStatus("dead");
        this.dispose();
      }
      /**
       * Send a `kernel_info_request` message.
       *
       * #### Notes
       * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#kernel-info).
       *
       * Fulfills with the `kernel_info_response` content when the shell reply is
       * received and validated.
       */
      async requestKernelInfo() {
        const msg = KernelMessage.createMessage({
          msgType: "kernel_info_request",
          channel: "shell",
          username: this._username,
          session: this._clientId,
          subshellId: this._subshellId,
          content: {}
        });
        let reply;
        try {
          reply = await Private.handleShellMessage(this, msg);
        } catch (e2) {
          if (this.isDisposed) {
            return;
          } else {
            throw e2;
          }
        }
        this._errorIfDisposed();
        if (!reply) {
          return;
        }
        if (reply.content.status === void 0) {
          reply.content.status = "ok";
        }
        if (reply.content.status !== "ok") {
          this._info.reject("Kernel info reply errored");
          return reply;
        }
        this._info.resolve(reply.content);
        this._kernelSession = reply.header.session;
        const supportedFeatures = reply.content.supported_features;
        this._supportsSubshells = supportedFeatures !== void 0 && supportedFeatures.includes("kernel subshells");
        return reply;
      }
      /**
       * Send a `complete_request` message.
       *
       * #### Notes
       * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#completion).
       *
       * Fulfills with the `complete_reply` content when the shell reply is
       * received and validated.
       */
      requestComplete(content3) {
        const msg = KernelMessage.createMessage({
          msgType: "complete_request",
          channel: "shell",
          username: this._username,
          session: this._clientId,
          subshellId: this._subshellId,
          content: content3
        });
        return Private.handleShellMessage(this, msg);
      }
      /**
       * Send an `inspect_request` message.
       *
       * #### Notes
       * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#introspection).
       *
       * Fulfills with the `inspect_reply` content when the shell reply is
       * received and validated.
       */
      requestInspect(content3) {
        const msg = KernelMessage.createMessage({
          msgType: "inspect_request",
          channel: "shell",
          username: this._username,
          session: this._clientId,
          subshellId: this._subshellId,
          content: content3
        });
        return Private.handleShellMessage(this, msg);
      }
      /**
       * Send a `history_request` message.
       *
       * #### Notes
       * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#history).
       *
       * Fulfills with the `history_reply` content when the shell reply is
       * received and validated.
       */
      requestHistory(content3) {
        const msg = KernelMessage.createMessage({
          msgType: "history_request",
          channel: "shell",
          username: this._username,
          session: this._clientId,
          subshellId: this._subshellId,
          content: content3
        });
        return Private.handleShellMessage(this, msg);
      }
      /**
       * Send an `execute_request` message.
       *
       * #### Notes
       * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#execute).
       *
       * Future `onReply` is called with the `execute_reply` content when the
       * shell reply is received and validated. The future will resolve when
       * this message is received and the `idle` iopub status is received.
       * The future will also be disposed at this point unless `disposeOnDone`
       * is specified and `false`, in which case it is up to the caller to dispose
       * of the future.
       *
       * **See also:** [[IExecuteReply]]
       */
      requestExecute(content3, disposeOnDone = true, metadata) {
        const defaults3 = {
          silent: false,
          store_history: true,
          user_expressions: {},
          allow_stdin: true,
          stop_on_error: false
        };
        const msg = KernelMessage.createMessage({
          msgType: "execute_request",
          channel: "shell",
          username: this._username,
          session: this._clientId,
          subshellId: this._subshellId,
          content: { ...defaults3, ...content3 },
          metadata
        });
        return this.sendShellMessage(msg, true, disposeOnDone);
      }
      /**
       * Send an experimental `debug_request` message.
       *
       * @hidden
       *
       * #### Notes
       * Debug messages are experimental messages that are not in the official
       * kernel message specification. As such, this function is *NOT* considered
       * part of the public API, and may change without notice.
       */
      requestDebug(content3, disposeOnDone = true) {
        const msg = KernelMessage.createMessage({
          msgType: "debug_request",
          channel: "control",
          username: this._username,
          session: this._clientId,
          content: content3
        });
        return this.sendControlMessage(msg, true, disposeOnDone);
      }
      /**
       * Send a `create_subshell_request` message.
       *
       * https://github.com/jupyter/enhancement-proposals/pull/91
       */
      requestCreateSubshell(content3, disposeOnDone = true) {
        if (!this.supportsSubshells) {
          throw new Error("Kernel subshells are not supported");
        }
        const msg = KernelMessage.createMessage({
          msgType: "create_subshell_request",
          channel: "control",
          username: this._username,
          session: this._clientId,
          content: content3
        });
        return this.sendControlMessage(msg, true, disposeOnDone);
      }
      /**
       * Send a `delete_subshell_request` message.
       *
       * https://github.com/jupyter/enhancement-proposals/pull/91
       */
      requestDeleteSubshell(content3, disposeOnDone = true) {
        if (!this.supportsSubshells) {
          throw new Error("Kernel subshells are not supported");
        }
        const msg = KernelMessage.createMessage({
          msgType: "delete_subshell_request",
          channel: "control",
          username: this._username,
          session: this._clientId,
          content: content3
        });
        return this.sendControlMessage(msg, true, disposeOnDone);
      }
      /**
       * Send a `list_subshell_request` message.
       *
       * https://github.com/jupyter/enhancement-proposals/pull/91
       */
      requestListSubshell(content3, disposeOnDone = true) {
        if (!this.supportsSubshells) {
          throw new Error("Kernel subshells are not supported");
        }
        const msg = KernelMessage.createMessage({
          msgType: "list_subshell_request",
          channel: "control",
          username: this._username,
          session: this._clientId,
          content: content3
        });
        return this.sendControlMessage(msg, true, disposeOnDone);
      }
      /**
       * Send an `is_complete_request` message.
       *
       * #### Notes
       * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#code-completeness).
       *
       * Fulfills with the `is_complete_response` content when the shell reply is
       * received and validated.
       */
      requestIsComplete(content3) {
        const msg = KernelMessage.createMessage({
          msgType: "is_complete_request",
          channel: "shell",
          username: this._username,
          session: this._clientId,
          subshellId: this._subshellId,
          content: content3
        });
        return Private.handleShellMessage(this, msg);
      }
      /**
       * Send a `comm_info_request` message.
       *
       * #### Notes
       * Fulfills with the `comm_info_reply` content when the shell reply is
       * received and validated.
       */
      requestCommInfo(content3) {
        const msg = KernelMessage.createMessage({
          msgType: "comm_info_request",
          channel: "shell",
          username: this._username,
          session: this._clientId,
          subshellId: this._subshellId,
          content: content3
        });
        return Private.handleShellMessage(this, msg);
      }
      /**
       * Send an `input_reply` message.
       *
       * #### Notes
       * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#messages-on-the-stdin-router-dealer-sockets).
       */
      sendInputReply(content3, parent_header) {
        const msg = KernelMessage.createMessage({
          msgType: "input_reply",
          channel: "stdin",
          username: this._username,
          session: this._clientId,
          content: content3
        });
        msg.parent_header = parent_header;
        this._sendMessage(msg);
        this._anyMessage.emit({ msg, direction: "send" });
        this.hasPendingInput = false;
      }
      /**
       * Create a new comm.
       *
       * #### Notes
       * If a client-side comm already exists with the given commId, an error is thrown.
       * If the kernel does not handle comms, an error is thrown.
       */
      createComm(targetName, commId = coreutils_2.UUID.uuid4()) {
        if (!this.handleComms) {
          throw new Error("Comms are disabled on this kernel connection");
        }
        if (this._comms.has(commId)) {
          throw new Error("Comm is already created");
        }
        const comm = new comm_1.CommHandler(targetName, commId, this, () => {
          this._unregisterComm(commId);
        }, this._commsOverSubshells);
        this._comms.set(commId, comm);
        return comm;
      }
      /**
       * Check if a comm exists.
       */
      hasComm(commId) {
        return this._comms.has(commId);
      }
      /**
       * Register a comm target handler.
       *
       * @param targetName - The name of the comm target.
       *
       * @param callback - The callback invoked for a comm open message.
       *
       * @returns A disposable used to unregister the comm target.
       *
       * #### Notes
       * Only one comm target can be registered to a target name at a time, an
       * existing callback for the same target name will be overridden.  A registered
       * comm target handler will take precedence over a comm which specifies a
       * `target_module`.
       *
       * If the callback returns a promise, kernel message processing will pause
       * until the returned promise is fulfilled.
       */
      registerCommTarget(targetName, callback) {
        if (!this.handleComms) {
          return;
        }
        this._targetRegistry[targetName] = callback;
      }
      /**
       * Remove a comm target handler.
       *
       * @param targetName - The name of the comm target to remove.
       *
       * @param callback - The callback to remove.
       *
       * #### Notes
       * The comm target is only removed if the callback argument matches.
       */
      removeCommTarget(targetName, callback) {
        if (!this.handleComms) {
          return;
        }
        if (!this.isDisposed && this._targetRegistry[targetName] === callback) {
          delete this._targetRegistry[targetName];
        }
      }
      /**
       * Register an IOPub message hook.
       *
       * @param msg_id - The parent_header message id the hook will intercept.
       *
       * @param hook - The callback invoked for the message.
       *
       * #### Notes
       * The IOPub hook system allows you to preempt the handlers for IOPub
       * messages that are responses to a given message id.
       *
       * The most recently registered hook is run first. A hook can return a
       * boolean or a promise to a boolean, in which case all kernel message
       * processing pauses until the promise is fulfilled. If a hook return value
       * resolves to false, any later hooks will not run and the function will
       * return a promise resolving to false. If a hook throws an error, the error
       * is logged to the console and the next hook is run. If a hook is
       * registered during the hook processing, it will not run until the next
       * message. If a hook is removed during the hook processing, it will be
       * deactivated immediately.
       *
       * See also [[IFuture.registerMessageHook]].
       */
      registerMessageHook(msgId, hook) {
        var _a6;
        const future = (_a6 = this._futures) === null || _a6 === void 0 ? void 0 : _a6.get(msgId);
        if (future) {
          future.registerMessageHook(hook);
        }
      }
      /**
       * Remove an IOPub message hook.
       *
       * @param msg_id - The parent_header message id the hook intercepted.
       *
       * @param hook - The callback invoked for the message.
       *
       */
      removeMessageHook(msgId, hook) {
        var _a6;
        const future = (_a6 = this._futures) === null || _a6 === void 0 ? void 0 : _a6.get(msgId);
        if (future) {
          future.removeMessageHook(hook);
        }
      }
      /**
       * Remove the input guard, if any.
       */
      removeInputGuard() {
        this.hasPendingInput = false;
      }
      /**
       * Handle a message with a display id.
       *
       * @returns Whether the message was handled.
       */
      async _handleDisplayId(displayId, msg) {
        var _a6, _b;
        const msgId = msg.parent_header.msg_id;
        let parentIds = this._displayIdToParentIds.get(displayId);
        if (parentIds) {
          const updateMsg = {
            header: coreutils_2.JSONExt.deepCopy(msg.header),
            parent_header: coreutils_2.JSONExt.deepCopy(msg.parent_header),
            metadata: coreutils_2.JSONExt.deepCopy(msg.metadata),
            content: coreutils_2.JSONExt.deepCopy(msg.content),
            channel: msg.channel,
            buffers: msg.buffers ? msg.buffers.slice() : []
          };
          updateMsg.header.msg_type = "update_display_data";
          await Promise.all(parentIds.map(async (parentId) => {
            const future = this._futures && this._futures.get(parentId);
            if (future) {
              await future.handleMsg(updateMsg);
            }
          }));
        }
        if (msg.header.msg_type === "update_display_data") {
          return true;
        }
        parentIds = (_a6 = this._displayIdToParentIds.get(displayId)) !== null && _a6 !== void 0 ? _a6 : [];
        if (parentIds.indexOf(msgId) === -1) {
          parentIds.push(msgId);
        }
        this._displayIdToParentIds.set(displayId, parentIds);
        const displayIds = (_b = this._msgIdToDisplayIds.get(msgId)) !== null && _b !== void 0 ? _b : [];
        if (displayIds.indexOf(msgId) === -1) {
          displayIds.push(msgId);
        }
        this._msgIdToDisplayIds.set(msgId, displayIds);
        return false;
      }
      /**
       * Forcefully clear the socket state.
       *
       * #### Notes
       * This will clear all socket state without calling any handlers and will
       * not update the connection status. If you call this method, you are
       * responsible for updating the connection status as needed and recreating
       * the socket if you plan to reconnect.
       */
      _clearSocket() {
        if (this._ws !== null) {
          this._ws.onopen = this._noOp;
          this._ws.onclose = this._noOp;
          this._ws.onerror = this._noOp;
          this._ws.onmessage = this._noOp;
          this._ws.close();
          this._ws = null;
        }
      }
      /**
       * Handle status iopub messages from the kernel.
       */
      _updateStatus(status) {
        if (this._status === status || this._status === "dead") {
          return;
        }
        this._status = status;
        Private.logKernelStatus(this);
        this._statusChanged.emit(status);
        if (status === "dead") {
          this.dispose();
        }
      }
      /**
       * Send pending messages to the kernel.
       */
      _sendPending() {
        while (this.connectionStatus === "connected" && this._kernelSession !== RESTARTING_KERNEL_SESSION && this._pendingMessages.length > 0) {
          this._sendMessage(this._pendingMessages[0], false);
          this._pendingMessages.shift();
        }
      }
      /**
       * Clear the internal state.
       */
      _clearKernelState() {
        this._kernelSession = "";
        this._pendingMessages = [];
        this._futures.forEach((future) => {
          future.dispose();
        });
        this._comms.forEach((comm) => {
          comm.dispose();
        });
        this._msgChain = Promise.resolve();
        this._futures = /* @__PURE__ */ new Map();
        this._comms = /* @__PURE__ */ new Map();
        this._displayIdToParentIds.clear();
        this._msgIdToDisplayIds.clear();
      }
      /**
       * Check to make sure it is okay to proceed to handle a message.
       *
       * #### Notes
       * Because we handle messages asynchronously, before a message is handled the
       * kernel might be disposed or restarted (and have a different session id).
       * This function throws an error in each of these cases. This is meant to be
       * called at the start of an asynchronous message handler to cancel message
       * processing if the message no longer is valid.
       */
      _assertCurrentMessage(msg) {
        this._errorIfDisposed();
        if (msg.header.session !== this._kernelSession) {
          throw new Error(`Canceling handling of old message: ${msg.header.msg_type}`);
        }
      }
      /**
       * Handle a `comm_open` kernel message.
       */
      async _handleCommOpen(msg) {
        this._assertCurrentMessage(msg);
        const content3 = msg.content;
        const comm = new comm_1.CommHandler(content3.target_name, content3.comm_id, this, () => {
          this._unregisterComm(content3.comm_id);
        }, this.commsOverSubshells);
        this._comms.set(content3.comm_id, comm);
        try {
          const target = await Private.loadObject(content3.target_name, content3.target_module, this._targetRegistry);
          await target(comm, msg);
        } catch (e2) {
          comm.close();
          console.error("Exception opening new comm");
          throw e2;
        }
      }
      /**
       * Handle 'comm_close' kernel message.
       */
      async _handleCommClose(msg) {
        this._assertCurrentMessage(msg);
        const content3 = msg.content;
        const comm = this._comms.get(content3.comm_id);
        if (!comm) {
          console.error("Comm not found for comm id " + content3.comm_id);
          return;
        }
        this._unregisterComm(comm.commId);
        const onClose = comm.onClose;
        if (onClose) {
          await onClose(msg);
        }
        comm.dispose();
      }
      /**
       * Handle a 'comm_msg' kernel message.
       */
      async _handleCommMsg(msg) {
        this._assertCurrentMessage(msg);
        const content3 = msg.content;
        const comm = this._comms.get(content3.comm_id);
        if (!comm) {
          return;
        }
        const onMsg = comm.onMsg;
        if (onMsg) {
          await onMsg(msg);
        }
      }
      /**
       * Unregister a comm instance.
       */
      _unregisterComm(commId) {
        this._comms.delete(commId);
      }
      /**
       * Handle connection status changes.
       */
      _updateConnectionStatus(connectionStatus) {
        if (this._connectionStatus === connectionStatus) {
          return;
        }
        this._connectionStatus = connectionStatus;
        if (connectionStatus !== "connecting") {
          this._reconnectAttempt = 0;
          clearTimeout(this._reconnectTimeout);
        }
        if (this.status !== "dead") {
          if (connectionStatus === "connected") {
            let restarting = this._kernelSession === RESTARTING_KERNEL_SESSION;
            let p5 = this.requestKernelInfo();
            let sendPendingCalled = false;
            let sendPendingOnce = () => {
              if (sendPendingCalled) {
                return;
              }
              sendPendingCalled = true;
              if (restarting && this._kernelSession === RESTARTING_KERNEL_SESSION) {
                this._kernelSession = "";
              }
              clearTimeout(timeoutHandle);
              if (this._pendingMessages.length > 0) {
                this._sendPending();
              }
            };
            void p5.then(sendPendingOnce);
            let timeoutHandle = setTimeout(sendPendingOnce, KERNEL_INFO_TIMEOUT);
          } else {
            this._updateStatus("unknown");
          }
        }
        this._connectionStatusChanged.emit(connectionStatus);
      }
      async _handleMessage(msg) {
        var _a6, _b;
        let handled = false;
        if (msg.parent_header && msg.channel === "iopub" && (KernelMessage.isDisplayDataMsg(msg) || KernelMessage.isUpdateDisplayDataMsg(msg) || KernelMessage.isExecuteResultMsg(msg))) {
          const transient = (_a6 = msg.content.transient) !== null && _a6 !== void 0 ? _a6 : {};
          const displayId = transient["display_id"];
          if (displayId) {
            handled = await this._handleDisplayId(displayId, msg);
            this._assertCurrentMessage(msg);
          }
        }
        if (!handled && msg.parent_header) {
          const parentHeader = msg.parent_header;
          const future = (_b = this._futures) === null || _b === void 0 ? void 0 : _b.get(parentHeader.msg_id);
          if (future) {
            await future.handleMsg(msg);
            this._assertCurrentMessage(msg);
          } else {
            const owned = parentHeader.session === this.clientId;
            if (msg.channel !== "iopub" && owned) {
              this._unhandledMessage.emit(msg);
            }
          }
        }
        if (msg.channel === "iopub") {
          switch (msg.header.msg_type) {
            case "status": {
              const executionState = msg.content.execution_state;
              if (executionState === "restarting") {
                void Promise.resolve().then(async () => {
                  this._updateStatus("autorestarting");
                  this._clearKernelState();
                  await this.reconnect();
                });
              }
              this._updateStatus(executionState);
              break;
            }
            case "comm_open":
              if (this.handleComms) {
                await this._handleCommOpen(msg);
              }
              break;
            case "comm_msg":
              if (this.handleComms) {
                await this._handleCommMsg(msg);
              }
              break;
            case "comm_close":
              if (this.handleComms) {
                await this._handleCommClose(msg);
              }
              break;
            default:
              break;
          }
          if (!this.isDisposed) {
            this._assertCurrentMessage(msg);
            this._iopubMessage.emit(msg);
          }
        }
      }
      /**
       * Attempt a connection if we have not exhausted connection attempts.
       */
      _reconnect() {
        this._errorIfDisposed();
        clearTimeout(this._reconnectTimeout);
        if (this._reconnectAttempt < this._reconnectLimit) {
          this._updateConnectionStatus("connecting");
          const timeout = Private.getRandomIntInclusive(0, 1e3 * (Math.pow(2, this._reconnectAttempt) - 1));
          console.warn(`Connection lost, reconnecting in ${Math.floor(timeout / 1e3)} seconds.`);
          const useProtocols = this._selectedProtocol !== "" ? true : false;
          this._reconnectTimeout = setTimeout(this._createSocket, timeout, useProtocols);
          this._reconnectAttempt += 1;
        } else {
          this._updateConnectionStatus("disconnected");
        }
        this._clearSocket();
      }
      /**
       * Utility function to throw an error if this instance is disposed.
       */
      _errorIfDisposed() {
        if (this.isDisposed) {
          throw new Error("Kernel connection is disposed");
        }
      }
      get hasPendingInput() {
        return this._hasPendingInput;
      }
      set hasPendingInput(value) {
        this._hasPendingInput = value;
        this._pendingInput.emit(value);
      }
    };
    exports2.KernelConnection = KernelConnection;
    var Private;
    (function(Private2) {
      function logKernelStatus(kernel) {
        switch (kernel.status) {
          case "idle":
          case "busy":
          case "unknown":
            return;
          default:
            console.debug(`Kernel: ${kernel.status} (${kernel.id})`);
            break;
        }
      }
      Private2.logKernelStatus = logKernelStatus;
      async function handleShellMessage(kernel, msg) {
        const future = kernel.sendShellMessage(msg, true);
        return future.done;
      }
      Private2.handleShellMessage = handleShellMessage;
      function loadObject(name3, moduleName, registry) {
        return new Promise((resolve9, reject) => {
          if (moduleName) {
            if (typeof requirejs === "undefined") {
              throw new Error("requirejs not found");
            }
            requirejs([moduleName], (mod) => {
              if (mod[name3] === void 0) {
                const msg = `Object '${name3}' not found in module '${moduleName}'`;
                reject(new Error(msg));
              } else {
                resolve9(mod[name3]);
              }
            }, reject);
          } else {
            if (registry === null || registry === void 0 ? void 0 : registry[name3]) {
              resolve9(registry[name3]);
            } else {
              reject(new Error(`Object '${name3}' not found in registry`));
            }
          }
        });
      }
      Private2.loadObject = loadObject;
      function getRandomIntInclusive(min, max) {
        min = Math.ceil(min);
        max = Math.floor(max);
        return Math.floor(Math.random() * (max - min + 1)) + min;
      }
      Private2.getRandomIntInclusive = getRandomIntInclusive;
    })(Private || (Private = {}));
  }
});

// ../../node_modules/@jupyterlab/services/lib/kernel/manager.js
var require_manager = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/kernel/manager.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.KernelManager = void 0;
    var polling_1 = require_dist9();
    var signaling_1 = require_dist7();
    var __1 = require_lib29();
    var basemanager_1 = require_basemanager();
    var restapi_1 = require_restapi();
    var default_1 = require_default3();
    var restapi_2 = require_restapi2();
    var KernelManager2 = class extends basemanager_1.BaseManager {
      /**
       * Construct a new kernel manager.
       *
       * @param options - The default options for kernel.
       */
      constructor(options = {}) {
        var _a6, _b, _c;
        super(options);
        this._commsOverSubshells = __1.CommsOverSubshells.PerCommTarget;
        this._isReady = false;
        this._kernelConnections = /* @__PURE__ */ new Set();
        this._models = /* @__PURE__ */ new Map();
        this._runningChanged = new signaling_1.Signal(this);
        this._connectionFailure = new signaling_1.Signal(this);
        this._kernelAPIClient = (_a6 = options.kernelAPIClient) !== null && _a6 !== void 0 ? _a6 : new restapi_1.KernelAPIClient({ serverSettings: this.serverSettings });
        this._kernelSpecAPIClient = (_b = options.kernelSpecAPIClient) !== null && _b !== void 0 ? _b : new restapi_2.KernelSpecAPIClient({
          serverSettings: this.serverSettings
        });
        this._pollModels = new polling_1.Poll({
          auto: false,
          factory: () => this.requestRunning(),
          frequency: {
            interval: 10 * 1e3,
            backoff: true,
            max: 300 * 1e3
          },
          name: `@jupyterlab/services:KernelManager#models`,
          standby: (_c = options.standby) !== null && _c !== void 0 ? _c : "when-hidden"
        });
        this._ready = (async () => {
          await this._pollModels.start();
          await this._pollModels.tick;
          this._isReady = true;
        })();
      }
      /**
       * Test whether the manager is ready.
       */
      get isReady() {
        return this._isReady;
      }
      /**
       * A promise that fulfills when the manager is ready.
       */
      get ready() {
        return this._ready;
      }
      /**
       * A signal emitted when the running kernels change.
       */
      get runningChanged() {
        return this._runningChanged;
      }
      /**
       * A signal emitted when there is a connection failure.
       */
      get connectionFailure() {
        return this._connectionFailure;
      }
      /**
       * Dispose of the resources used by the manager.
       */
      dispose() {
        if (this.isDisposed) {
          return;
        }
        this._models.clear();
        this._kernelConnections.forEach((x2) => x2.dispose());
        this._pollModels.dispose();
        super.dispose();
      }
      /**
       * Connect to an existing kernel.
       *
       * @returns The new kernel connection.
       *
       * #### Notes
       * This will use the manager's server settings and ignore any server
       * settings passed in the options.
       */
      connectTo(options) {
        var _a6;
        const { id } = options.model;
        let handleComms = (_a6 = options.handleComms) !== null && _a6 !== void 0 ? _a6 : true;
        if (options.handleComms === void 0) {
          for (const kc of this._kernelConnections) {
            if (kc.id === id && kc.handleComms) {
              handleComms = false;
              break;
            }
          }
        }
        options.commsOverSubshells = this._commsOverSubshells;
        const kernelConnection = new default_1.KernelConnection({
          handleComms,
          ...options,
          serverSettings: this.serverSettings,
          kernelAPIClient: this._kernelAPIClient,
          kernelSpecAPIClient: this._kernelSpecAPIClient
        });
        this._onStarted(kernelConnection);
        if (!this._models.has(id)) {
          void this.refreshRunning().catch(() => {
          });
        }
        return kernelConnection;
      }
      /**
       * Create an iterator over the most recent running kernels.
       *
       * @returns A new iterator over the running kernels.
       */
      running() {
        return this._models.values();
      }
      /**
       * The number of running kernels.
       */
      get runningCount() {
        return this._models.size;
      }
      /**
       * Whether comms are running on subshell or not.
       */
      get commsOverSubshells() {
        return this._commsOverSubshells;
      }
      set commsOverSubshells(value) {
        this._commsOverSubshells = value;
        for (const connection of this._kernelConnections) {
          connection.commsOverSubshells = value;
        }
      }
      /**
       * Force a refresh of the running kernels.
       *
       * @returns A promise that resolves when the running list has been refreshed.
       *
       * #### Notes
       * This is not typically meant to be called by the user, since the
       * manager maintains its own internal state.
       */
      async refreshRunning() {
        await this._pollModels.refresh();
        await this._pollModels.tick;
      }
      /**
       * Start a new kernel.
       *
       * @param createOptions - The kernel creation options
       *
       * @param connectOptions - The kernel connection options
       *
       * @returns A promise that resolves with the kernel connection.
       *
       * #### Notes
       * The manager `serverSettings` will be always be used.
       */
      async startNew(createOptions = {}, connectOptions = {}) {
        const model = await this._kernelAPIClient.startNew(createOptions);
        return this.connectTo({
          ...connectOptions,
          model
        });
      }
      /**
       * Shut down a kernel by id.
       *
       * @param id - The id of the target kernel.
       *
       * @returns A promise that resolves when the operation is complete.
       */
      async shutdown(id) {
        await this._kernelAPIClient.shutdown(id);
        await this.refreshRunning();
      }
      /**
       * Shut down all kernels.
       *
       * @returns A promise that resolves when all of the kernels are shut down.
       */
      async shutdownAll() {
        await this.refreshRunning();
        await Promise.all([...this._models.keys()].map((id) => this._kernelAPIClient.shutdown(id)));
        await this.refreshRunning();
      }
      /**
       * Find a kernel by id.
       *
       * @param id - The id of the target kernel.
       *
       * @returns A promise that resolves with the kernel's model.
       */
      async findById(id) {
        if (this._models.has(id)) {
          return this._models.get(id);
        }
        await this.refreshRunning();
        return this._models.get(id);
      }
      /**
       * Execute a request to the server to poll running kernels and update state.
       */
      async requestRunning() {
        var _a6, _b;
        let models;
        try {
          models = await this._kernelAPIClient.listRunning();
        } catch (err) {
          if (err instanceof __1.ServerConnection.NetworkError || ((_a6 = err.response) === null || _a6 === void 0 ? void 0 : _a6.status) === 503 || ((_b = err.response) === null || _b === void 0 ? void 0 : _b.status) === 424) {
            this._connectionFailure.emit(err);
          }
          throw err;
        }
        if (this.isDisposed) {
          return;
        }
        if (this._models.size === models.length && models.every((model) => {
          const existing = this._models.get(model.id);
          if (!existing) {
            return false;
          }
          return existing.connections === model.connections && existing.execution_state === model.execution_state && existing.last_activity === model.last_activity && existing.name === model.name && existing.reason === model.reason && existing.traceback === model.traceback;
        })) {
          return;
        }
        this._models = new Map(models.map((x2) => [x2.id, x2]));
        this._kernelConnections.forEach((kc) => {
          if (!this._models.has(kc.id)) {
            kc.handleShutdown();
          }
        });
        this._runningChanged.emit(models);
      }
      /**
       * Handle a kernel starting.
       */
      _onStarted(kernelConnection) {
        this._kernelConnections.add(kernelConnection);
        kernelConnection.statusChanged.connect(this._onStatusChanged, this);
        kernelConnection.disposed.connect(this._onDisposed, this);
      }
      _onDisposed(kernelConnection) {
        this._kernelConnections.delete(kernelConnection);
        void this.refreshRunning().catch(() => {
        });
      }
      _onStatusChanged(kernelConnection, status) {
        if (status === "dead") {
          void this.refreshRunning().catch(() => {
          });
        }
      }
    };
    exports2.KernelManager = KernelManager2;
    (function(KernelManager3) {
      class NoopManager extends KernelManager3 {
        constructor() {
          super(...arguments);
          this._readyPromise = new Promise(() => {
          });
        }
        /**
         * Whether the manager is active.
         */
        get isActive() {
          return false;
        }
        /**
         * Used for testing.
         */
        get parentReady() {
          return super.ready;
        }
        /**
         * Start a new kernel - throws an error since it is not supported.
         */
        async startNew(createOptions = {}, connectOptions = {}) {
          return Promise.reject(new Error("Not implemented in no-op Kernel Manager"));
        }
        /**
         * Connect to an existing kernel - throws an error since it is not supported.
         */
        connectTo(options) {
          throw new Error("Not implemented in no-op Kernel Manager");
        }
        /**
         * Shut down a kernel by id - throws an error since it is not supported.
         */
        async shutdown(id) {
          return Promise.reject(new Error("Not implemented in no-op Kernel Manager"));
        }
        /**
         * A promise that fulfills when the manager is ready (never).
         */
        get ready() {
          return this.parentReady.then(() => this._readyPromise);
        }
        /**
         * Execute a request to the server to poll running kernels and update state.
         */
        async requestRunning() {
          return Promise.resolve();
        }
      }
      KernelManager3.NoopManager = NoopManager;
    })(KernelManager2 || (exports2.KernelManager = KernelManager2 = {}));
  }
});

// ../../node_modules/@jupyterlab/services/lib/kernel/index.js
var require_kernel2 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/kernel/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    var __exportStar = exports2 && exports2.__exportStar || function(m2, exports3) {
      for (var p5 in m2) if (p5 !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p5)) __createBinding(exports3, m2, p5);
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.CommsOverSubshells = exports2.KernelConnection = exports2.KernelAPI = exports2.KernelMessage = exports2.Kernel = void 0;
    var comm_1 = require_comm();
    Object.defineProperty(exports2, "CommsOverSubshells", { enumerable: true, get: function() {
      return comm_1.CommsOverSubshells;
    } });
    var Kernel = __importStar(require_kernel());
    exports2.Kernel = Kernel;
    var KernelMessage = __importStar(require_messages());
    exports2.KernelMessage = KernelMessage;
    var KernelAPI = __importStar(require_restapi());
    exports2.KernelAPI = KernelAPI;
    var default_1 = require_default3();
    Object.defineProperty(exports2, "KernelConnection", { enumerable: true, get: function() {
      return default_1.KernelConnection;
    } });
    __exportStar(require_manager(), exports2);
  }
});

// ../../node_modules/@jupyterlab/services/lib/kernelspec/kernelspec.js
var require_kernelspec = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/kernelspec/kernelspec.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
  }
});

// ../../node_modules/@jupyterlab/services/lib/kernelspec/manager.js
var require_manager2 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/kernelspec/manager.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.KernelSpecManager = void 0;
    var coreutils_12 = require_index_node3();
    var polling_1 = require_dist9();
    var signaling_1 = require_dist7();
    var basemanager_1 = require_basemanager();
    var restapi_1 = require_restapi2();
    var KernelSpecManager = class extends basemanager_1.BaseManager {
      /**
       * Construct a new kernel spec manager.
       *
       * @param options - The default options for kernel.
       */
      constructor(options = {}) {
        var _a6, _b;
        super(options);
        this._isReady = false;
        this._connectionFailure = new signaling_1.Signal(this);
        this._specs = null;
        this._specsChanged = new signaling_1.Signal(this);
        this._kernelSpecAPIClient = (_a6 = options.kernelSpecAPIClient) !== null && _a6 !== void 0 ? _a6 : new restapi_1.KernelSpecAPIClient({ serverSettings: this.serverSettings });
        this._ready = Promise.all([this.requestSpecs()]).then((_2) => void 0).catch((_2) => void 0).then(() => {
          if (this.isDisposed) {
            return;
          }
          this._isReady = true;
        });
        this._pollSpecs = new polling_1.Poll({
          auto: false,
          factory: () => this.requestSpecs(),
          frequency: {
            interval: 61 * 1e3,
            backoff: true,
            max: 300 * 1e3
          },
          name: `@jupyterlab/services:KernelSpecManager#specs`,
          standby: (_b = options.standby) !== null && _b !== void 0 ? _b : "when-hidden"
        });
        void this.ready.then(() => {
          void this._pollSpecs.start();
        });
      }
      /**
       * Test whether the manager is ready.
       */
      get isReady() {
        return this._isReady;
      }
      /**
       * A promise that fulfills when the manager is ready.
       */
      get ready() {
        return this._ready;
      }
      /**
       * Get the most recently fetched kernel specs.
       */
      get specs() {
        return this._specs;
      }
      /**
       * A signal emitted when the specs change.
       */
      get specsChanged() {
        return this._specsChanged;
      }
      /**
       * A signal emitted when there is a connection failure.
       */
      get connectionFailure() {
        return this._connectionFailure;
      }
      /**
       * Dispose of the resources used by the manager.
       */
      dispose() {
        this._pollSpecs.dispose();
        super.dispose();
      }
      /**
       * Force a refresh of the specs from the server.
       *
       * @returns A promise that resolves when the specs are fetched.
       *
       * #### Notes
       * This is intended to be called only in response to a user action,
       * since the manager maintains its internal state.
       */
      async refreshSpecs() {
        await this._pollSpecs.refresh();
        await this._pollSpecs.tick;
      }
      /**
       * Execute a request to the server to poll specs and update state.
       */
      async requestSpecs() {
        const specs = await this._kernelSpecAPIClient.get();
        if (this.isDisposed) {
          return;
        }
        if (!coreutils_12.JSONExt.deepEqual(specs, this._specs)) {
          this._specs = specs;
          this._specsChanged.emit(specs);
        }
      }
    };
    exports2.KernelSpecManager = KernelSpecManager;
  }
});

// ../../node_modules/@jupyterlab/services/lib/kernelspec/index.js
var require_kernelspec2 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/kernelspec/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    var __exportStar = exports2 && exports2.__exportStar || function(m2, exports3) {
      for (var p5 in m2) if (p5 !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p5)) __createBinding(exports3, m2, p5);
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.KernelSpecAPI = exports2.KernelSpec = void 0;
    var KernelSpec = __importStar(require_kernelspec());
    exports2.KernelSpec = KernelSpec;
    var KernelSpecAPI = __importStar(require_restapi2());
    exports2.KernelSpecAPI = KernelSpecAPI;
    __exportStar(require_manager2(), exports2);
  }
});

// ../../node_modules/@jupyterlab/services/lib/builder/index.js
var require_builder = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/builder/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.BuildManager = void 0;
    var coreutils_12 = require_lib27();
    var serverconnection_1 = require_serverconnection();
    var BUILD_SETTINGS_URL = "api/build";
    var BuildManager = class {
      /**
       * Create a new setting manager.
       */
      constructor(options = {}) {
        var _a6;
        this._url = "";
        this.serverSettings = (_a6 = options.serverSettings) !== null && _a6 !== void 0 ? _a6 : serverconnection_1.ServerConnection.makeSettings();
        const { baseUrl, appUrl } = this.serverSettings;
        this._url = coreutils_12.URLExt.join(baseUrl, appUrl, BUILD_SETTINGS_URL);
      }
      /**
       * Test whether the build service is available.
       */
      get isAvailable() {
        return coreutils_12.PageConfig.getOption("buildAvailable").toLowerCase() === "true";
      }
      /**
       * Test whether to check build status automatically.
       */
      get shouldCheck() {
        return coreutils_12.PageConfig.getOption("buildCheck").toLowerCase() === "true";
      }
      /**
       * Get whether the application should be built.
       */
      getStatus() {
        const { _url, serverSettings } = this;
        const promise = serverconnection_1.ServerConnection.makeRequest(_url, {}, serverSettings);
        return promise.then((response) => {
          if (response.status !== 200) {
            throw new serverconnection_1.ServerConnection.ResponseError(response);
          }
          return response.json();
        }).then((data) => {
          if (typeof data.status !== "string") {
            throw new Error("Invalid data");
          }
          if (typeof data.message !== "string") {
            throw new Error("Invalid data");
          }
          return data;
        });
      }
      /**
       * Build the application.
       */
      build() {
        const { _url, serverSettings } = this;
        const init4 = { method: "POST" };
        const promise = serverconnection_1.ServerConnection.makeRequest(_url, init4, serverSettings);
        return promise.then((response) => {
          if (response.status === 400) {
            throw new serverconnection_1.ServerConnection.ResponseError(response, "Build aborted");
          }
          if (response.status !== 200) {
            const message = `Build failed with ${response.status}.

        If you are experiencing the build failure after installing an extension (or trying to include previously installed extension after updating JupyterLab) please check the extension repository for new installation instructions as many extensions migrated to the prebuilt extensions system which no longer requires rebuilding JupyterLab (but uses a different installation procedure, typically involving a package manager such as 'pip' or 'conda').

        If you specifically intended to install a source extension, please run 'jupyter lab build' on the server for full output.`;
            throw new serverconnection_1.ServerConnection.ResponseError(response, message);
          }
        });
      }
      /**
       * Cancel an active build.
       */
      cancel() {
        const { _url, serverSettings } = this;
        const init4 = { method: "DELETE" };
        const promise = serverconnection_1.ServerConnection.makeRequest(_url, init4, serverSettings);
        return promise.then((response) => {
          if (response.status !== 204) {
            throw new serverconnection_1.ServerConnection.ResponseError(response);
          }
        });
      }
    };
    exports2.BuildManager = BuildManager;
  }
});

// ../../node_modules/@jupyterlab/services/lib/nbconvert/index.js
var require_nbconvert = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/nbconvert/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.NbConvertManager = void 0;
    var coreutils_12 = require_lib27();
    var serverconnection_1 = require_serverconnection();
    var coreutils_2 = require_index_node3();
    var NBCONVERT_SETTINGS_URL = "api/nbconvert";
    var NbConvertManager = class {
      /**
       * Create a new nbconvert manager.
       */
      constructor(options = {}) {
        var _a6;
        this._exportFormats = null;
        this.serverSettings = (_a6 = options.serverSettings) !== null && _a6 !== void 0 ? _a6 : serverconnection_1.ServerConnection.makeSettings();
      }
      /**
       * Fetch and cache the export formats from the expensive nbconvert handler.
       */
      async fetchExportFormats() {
        this._requestingFormats = new coreutils_2.PromiseDelegate();
        this._exportFormats = null;
        const base5 = this.serverSettings.baseUrl;
        const url = coreutils_12.URLExt.join(base5, NBCONVERT_SETTINGS_URL);
        const { serverSettings } = this;
        const response = await serverconnection_1.ServerConnection.makeRequest(url, {}, serverSettings);
        if (response.status !== 200) {
          const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
          throw err;
        }
        const data = await response.json();
        const exportList = {};
        const keys2 = Object.keys(data);
        keys2.forEach(function(key2) {
          const mimeType = data[key2].output_mimetype;
          exportList[key2] = { output_mimetype: mimeType };
        });
        this._exportFormats = exportList;
        this._requestingFormats.resolve(exportList);
        return exportList;
      }
      /**
       * Get the list of export formats, preferring pre-cached ones.
       */
      async getExportFormats(force = true) {
        if (this._requestingFormats) {
          return this._requestingFormats.promise;
        }
        if (force || !this._exportFormats) {
          return await this.fetchExportFormats();
        }
        return this._exportFormats;
      }
    };
    exports2.NbConvertManager = NbConvertManager;
  }
});

// ../../node_modules/@jupyterlab/services/lib/session/session.js
var require_session = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/session/session.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
  }
});

// ../../node_modules/@jupyterlab/services/lib/session/validate.js
var require_validate6 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/session/validate.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.validateModel = validateModel;
    exports2.updateLegacySessionModel = updateLegacySessionModel;
    exports2.validateModels = validateModels;
    var validate_1 = require_validate4();
    var validate_2 = require_validate2();
    function validateModel(data) {
      (0, validate_2.validateProperty)(data, "id", "string");
      (0, validate_2.validateProperty)(data, "type", "string");
      (0, validate_2.validateProperty)(data, "name", "string");
      (0, validate_2.validateProperty)(data, "path", "string");
      (0, validate_2.validateProperty)(data, "kernel", "object");
      (0, validate_1.validateModel)(data.kernel);
    }
    function updateLegacySessionModel(data) {
      if (data.path === void 0 && data.notebook !== void 0) {
        data.path = data.notebook.path;
        data.type = "notebook";
        data.name = "";
      }
    }
    function validateModels(models) {
      if (!Array.isArray(models)) {
        throw new Error("Invalid session list");
      }
      models.forEach((d) => validateModel(d));
    }
  }
});

// ../../node_modules/@jupyterlab/services/lib/session/restapi.js
var require_restapi3 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/session/restapi.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.SessionAPIClient = exports2.SESSION_SERVICE_URL = void 0;
    exports2.listRunning = listRunning;
    exports2.getSessionUrl = getSessionUrl;
    exports2.shutdownSession = shutdownSession;
    exports2.getSessionModel = getSessionModel;
    exports2.startSession = startSession;
    exports2.updateSession = updateSession;
    var serverconnection_1 = require_serverconnection();
    var coreutils_12 = require_lib27();
    var validate_1 = require_validate6();
    exports2.SESSION_SERVICE_URL = "api/sessions";
    async function listRunning(settings = serverconnection_1.ServerConnection.makeSettings()) {
      const url = coreutils_12.URLExt.join(settings.baseUrl, exports2.SESSION_SERVICE_URL);
      const response = await serverconnection_1.ServerConnection.makeRequest(url, {}, settings);
      if (response.status !== 200) {
        const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
        throw err;
      }
      const data = await response.json();
      if (!Array.isArray(data)) {
        throw new Error("Invalid Session list");
      }
      data.forEach((m2) => {
        (0, validate_1.updateLegacySessionModel)(m2);
        (0, validate_1.validateModel)(m2);
      });
      return data;
    }
    function getSessionUrl(baseUrl, id) {
      const servicesBase = coreutils_12.URLExt.join(baseUrl, exports2.SESSION_SERVICE_URL);
      const result = coreutils_12.URLExt.join(servicesBase, id);
      if (!result.startsWith(servicesBase)) {
        throw new Error("Can only be used for services requests");
      }
      return result;
    }
    async function shutdownSession(id, settings = serverconnection_1.ServerConnection.makeSettings()) {
      var _a6;
      const url = getSessionUrl(settings.baseUrl, id);
      const init4 = { method: "DELETE" };
      const response = await serverconnection_1.ServerConnection.makeRequest(url, init4, settings);
      if (response.status === 404) {
        const data = await response.json();
        const msg = (_a6 = data.message) !== null && _a6 !== void 0 ? _a6 : `The session "${id}"" does not exist on the server`;
        console.warn(msg);
      } else if (response.status === 410) {
        throw new serverconnection_1.ServerConnection.ResponseError(response, "The kernel was deleted but the session was not");
      } else if (response.status !== 204) {
        const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
        throw err;
      }
    }
    async function getSessionModel(id, settings = serverconnection_1.ServerConnection.makeSettings()) {
      const url = getSessionUrl(settings.baseUrl, id);
      const response = await serverconnection_1.ServerConnection.makeRequest(url, {}, settings);
      if (response.status !== 200) {
        const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
        throw err;
      }
      const data = await response.json();
      (0, validate_1.updateLegacySessionModel)(data);
      (0, validate_1.validateModel)(data);
      return data;
    }
    async function startSession(options, settings = serverconnection_1.ServerConnection.makeSettings()) {
      const url = coreutils_12.URLExt.join(settings.baseUrl, exports2.SESSION_SERVICE_URL);
      const init4 = {
        method: "POST",
        body: JSON.stringify(options)
      };
      const response = await serverconnection_1.ServerConnection.makeRequest(url, init4, settings);
      if (response.status !== 201) {
        const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
        throw err;
      }
      const data = await response.json();
      (0, validate_1.updateLegacySessionModel)(data);
      (0, validate_1.validateModel)(data);
      return data;
    }
    async function updateSession(model, settings = serverconnection_1.ServerConnection.makeSettings()) {
      const url = getSessionUrl(settings.baseUrl, model.id);
      const init4 = {
        method: "PATCH",
        body: JSON.stringify(model)
      };
      const response = await serverconnection_1.ServerConnection.makeRequest(url, init4, settings);
      if (response.status !== 200) {
        const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
        throw err;
      }
      const data = await response.json();
      (0, validate_1.updateLegacySessionModel)(data);
      (0, validate_1.validateModel)(data);
      return data;
    }
    var SessionAPIClient = class {
      /**
       * Create a new session API client.
       *
       * @param options - The options used to create the client.
       */
      constructor(options) {
        var _a6;
        this.serverSettings = (_a6 = options.serverSettings) !== null && _a6 !== void 0 ? _a6 : serverconnection_1.ServerConnection.makeSettings();
      }
      /**
       * List the running sessions.
       *
       * @returns A promise that resolves with the list of running session models.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/sessions) and validates the response model.
       *
       * The promise is fulfilled on a valid response and rejected otherwise.
       */
      async listRunning() {
        return listRunning(this.serverSettings);
      }
      /**
       * Get a session model.
       *
       * @param id - The id of the session of interest.
       *
       * @returns A promise that resolves with the session model.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/sessions) and validates the response model.
       *
       * The promise is fulfilled on a valid response and rejected otherwise.
       */
      async getModel(id) {
        return getSessionModel(id, this.serverSettings);
      }
      /**
       * Create a new session.
       *
       * @param options - The options used to create the session.
       *
       * @returns A promise that resolves with the session model.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/sessions) and validates the response model.
       *
       * The promise is fulfilled on a valid response and rejected otherwise.
       */
      async startNew(options) {
        return startSession(options, this.serverSettings);
      }
      /**
       * Shut down a session by id.
       *
       * @param id - The id of the session to shut down.
       *
       * @returns A promise that resolves when the session is shut down.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/sessions) and validates the response model.
       *
       * The promise is fulfilled on a valid response and rejected otherwise.
       */
      async shutdown(id) {
        return shutdownSession(id, this.serverSettings);
      }
      /**
       * Update a session by id.
       *
       * @param model - The session model to update.
       *
       * @returns A promise that resolves with the updated session model.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/sessions) and validates the response model.
       *
       * The promise is fulfilled on a valid response and rejected otherwise.
       */
      async update(model) {
        return updateSession(model, this.serverSettings);
      }
    };
    exports2.SessionAPIClient = SessionAPIClient;
  }
});

// ../../node_modules/@jupyterlab/services/lib/session/default.js
var require_default4 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/session/default.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.SessionConnection = void 0;
    var signaling_1 = require_dist7();
    var __1 = require_lib29();
    var coreutils_12 = require_index_node3();
    var restapi_1 = require_restapi3();
    var SessionConnection = class {
      /**
       * Construct a new session.
       */
      constructor(options) {
        var _a6, _b, _c, _d2, _e;
        this._id = "";
        this._path = "";
        this._name = "";
        this._type = "";
        this._kernel = null;
        this._isDisposed = false;
        this._disposed = new signaling_1.Signal(this);
        this._kernelChanged = new signaling_1.Signal(this);
        this._statusChanged = new signaling_1.Signal(this);
        this._connectionStatusChanged = new signaling_1.Signal(this);
        this._pendingInput = new signaling_1.Signal(this);
        this._iopubMessage = new signaling_1.Signal(this);
        this._unhandledMessage = new signaling_1.Signal(this);
        this._anyMessage = new signaling_1.Signal(this);
        this._propertyChanged = new signaling_1.Signal(this);
        this._id = options.model.id;
        this._name = options.model.name;
        this._path = options.model.path;
        this._type = options.model.type;
        this._username = (_a6 = options.username) !== null && _a6 !== void 0 ? _a6 : "";
        this._clientId = (_b = options.clientId) !== null && _b !== void 0 ? _b : coreutils_12.UUID.uuid4();
        this._connectToKernel = options.connectToKernel;
        this._kernelConnectionOptions = (_c = options.kernelConnectionOptions) !== null && _c !== void 0 ? _c : {};
        this.serverSettings = (_d2 = options.serverSettings) !== null && _d2 !== void 0 ? _d2 : __1.ServerConnection.makeSettings();
        this._sessionAPIClient = (_e = options.sessionAPIClient) !== null && _e !== void 0 ? _e : new restapi_1.SessionAPIClient({ serverSettings: this.serverSettings });
        this.setupKernel(options.model.kernel);
      }
      /**
       * A signal emitted when the session is disposed.
       */
      get disposed() {
        return this._disposed;
      }
      /**
       * A signal emitted when the kernel changes.
       */
      get kernelChanged() {
        return this._kernelChanged;
      }
      /**
       * A signal proxied from the connection about the kernel status.
       */
      get statusChanged() {
        return this._statusChanged;
      }
      /**
       * A signal proxied from the kernel about the connection status.
       */
      get connectionStatusChanged() {
        return this._connectionStatusChanged;
      }
      /**
       * A signal proxied from the kernel pending input.
       */
      get pendingInput() {
        return this._pendingInput;
      }
      /**
       * A signal proxied from the kernel about iopub kernel messages.
       */
      get iopubMessage() {
        return this._iopubMessage;
      }
      /**
       * A signal proxied from the kernel for an unhandled kernel message.
       */
      get unhandledMessage() {
        return this._unhandledMessage;
      }
      /**
       * A signal proxied from the kernel emitted for any kernel message.
       *
       * #### Notes
       * The behavior is undefined if the message is modified during message
       * handling. As such, it should be treated as read-only.
       */
      get anyMessage() {
        return this._anyMessage;
      }
      /**
       * A signal emitted when a session property changes.
       */
      get propertyChanged() {
        return this._propertyChanged;
      }
      /**
       * Get the session id.
       */
      get id() {
        return this._id;
      }
      /**
       * Get the session kernel connection object.
       *
       * #### Notes
       * This is a read-only property, and can be altered by [changeKernel].
       */
      get kernel() {
        return this._kernel;
      }
      /**
       * Get the session path.
       */
      get path() {
        return this._path;
      }
      /**
       * Get the session type.
       */
      get type() {
        return this._type;
      }
      /**
       * Get the session name.
       */
      get name() {
        return this._name;
      }
      /**
       * Get the model associated with the session.
       */
      get model() {
        return {
          id: this.id,
          kernel: this.kernel && { id: this.kernel.id, name: this.kernel.name },
          path: this._path,
          type: this._type,
          name: this._name
        };
      }
      /**
       * Test whether the session has been disposed.
       */
      get isDisposed() {
        return this._isDisposed;
      }
      /**
       * Update the session based on a session model from the server.
       *
       * #### Notes
       * This only updates this session connection instance. Use `setPath`,
       * `setName`, `setType`, and `changeKernel` to change the session values on
       * the server.
       */
      update(model) {
        const oldModel = this.model;
        this._path = model.path;
        this._name = model.name;
        this._type = model.type;
        if (this._kernel === null && model.kernel !== null || this._kernel !== null && model.kernel === null || this._kernel !== null && model.kernel !== null && this._kernel.id !== model.kernel.id) {
          if (this._kernel !== null) {
            this._kernel.dispose();
          }
          const oldValue = this._kernel || null;
          this.setupKernel(model.kernel);
          const newValue = this._kernel || null;
          this._kernelChanged.emit({ name: "kernel", oldValue, newValue });
        }
        this._handleModelChange(oldModel);
      }
      /**
       * Dispose of the resources held by the session.
       */
      dispose() {
        if (this.isDisposed) {
          return;
        }
        this._isDisposed = true;
        this._disposed.emit();
        if (this._kernel) {
          this._kernel.dispose();
          const oldValue = this._kernel;
          this._kernel = null;
          const newValue = this._kernel;
          this._kernelChanged.emit({ name: "kernel", oldValue, newValue });
        }
        signaling_1.Signal.clearData(this);
      }
      /**
       * Change the session path.
       *
       * @param path - The new session path.
       *
       * @returns A promise that resolves when the session has renamed.
       *
       * #### Notes
       * This uses the Jupyter REST API, and the response is validated.
       * The promise is fulfilled on a valid response and rejected otherwise.
       */
      async setPath(path45) {
        if (this.isDisposed) {
          throw new Error("Session is disposed");
        }
        await this._patch({ path: path45 });
      }
      /**
       * Change the session name.
       */
      async setName(name3) {
        if (this.isDisposed) {
          throw new Error("Session is disposed");
        }
        await this._patch({ name: name3 });
      }
      /**
       * Change the session type.
       */
      async setType(type2) {
        if (this.isDisposed) {
          throw new Error("Session is disposed");
        }
        await this._patch({ type: type2 });
      }
      /**
       * Change the kernel.
       *
       * @param options - The name or id of the new kernel.
       *
       * #### Notes
       * This shuts down the existing kernel and creates a new kernel,
       * keeping the existing session ID and session path.
       */
      async changeKernel(options) {
        if (this.isDisposed) {
          throw new Error("Session is disposed");
        }
        await this._patch({ kernel: options });
        return this.kernel;
      }
      /**
       * Kill the kernel and shutdown the session.
       *
       * @returns - The promise fulfilled on a valid response from the server.
       *
       * #### Notes
       * Uses the [Jupyter Server API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/sessions), and validates the response.
       * Disposes of the session and emits a [sessionDied] signal on success.
       */
      async shutdown() {
        if (this.isDisposed) {
          throw new Error("Session is disposed");
        }
        await this._sessionAPIClient.shutdown(this.id);
        this.dispose();
      }
      /**
       * Create a new kernel connection and connect to its signals.
       *
       * #### Notes
       * This method is not meant to be subclassed.
       */
      setupKernel(model) {
        if (model === null) {
          this._kernel = null;
          return;
        }
        const kc = this._connectToKernel({
          ...this._kernelConnectionOptions,
          model,
          username: this._username,
          clientId: this._clientId,
          serverSettings: this.serverSettings
        });
        this._kernel = kc;
        kc.statusChanged.connect(this.onKernelStatus, this);
        kc.connectionStatusChanged.connect(this.onKernelConnectionStatus, this);
        kc.pendingInput.connect(this.onPendingInput, this);
        kc.unhandledMessage.connect(this.onUnhandledMessage, this);
        kc.iopubMessage.connect(this.onIOPubMessage, this);
        kc.anyMessage.connect(this.onAnyMessage, this);
      }
      /**
       * Handle to changes in the Kernel status.
       */
      onKernelStatus(sender, state) {
        this._statusChanged.emit(state);
      }
      /**
       * Handle to changes in the Kernel status.
       */
      onKernelConnectionStatus(sender, state) {
        this._connectionStatusChanged.emit(state);
      }
      /**
       * Handle a change in the pendingInput.
       */
      onPendingInput(sender, state) {
        this._pendingInput.emit(state);
      }
      /**
       * Handle iopub kernel messages.
       */
      onIOPubMessage(sender, msg) {
        this._iopubMessage.emit(msg);
      }
      /**
       * Handle unhandled kernel messages.
       */
      onUnhandledMessage(sender, msg) {
        this._unhandledMessage.emit(msg);
      }
      /**
       * Handle any kernel messages.
       */
      onAnyMessage(sender, args) {
        this._anyMessage.emit(args);
      }
      /**
       * Send a PATCH to the server, updating the session path or the kernel.
       */
      async _patch(body3) {
        const model = await this._sessionAPIClient.update({
          ...body3,
          id: this._id
        });
        this.update(model);
        return model;
      }
      /**
       * Handle a change to the model.
       */
      _handleModelChange(oldModel) {
        if (oldModel.name !== this._name) {
          this._propertyChanged.emit("name");
        }
        if (oldModel.type !== this._type) {
          this._propertyChanged.emit("type");
        }
        if (oldModel.path !== this._path) {
          this._propertyChanged.emit("path");
        }
      }
    };
    exports2.SessionConnection = SessionConnection;
  }
});

// ../../node_modules/@jupyterlab/services/lib/session/manager.js
var require_manager3 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/session/manager.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.SessionManager = void 0;
    var polling_1 = require_dist9();
    var signaling_1 = require_dist7();
    var serverconnection_1 = require_serverconnection();
    var basemanager_1 = require_basemanager();
    var default_1 = require_default4();
    var restapi_1 = require_restapi3();
    var SessionManager2 = class extends basemanager_1.BaseManager {
      /**
       * Construct a new session manager.
       *
       * @param options - The default options for each session.
       */
      constructor(options) {
        var _a6, _b;
        super(options);
        this._isReady = false;
        this._sessionConnections = /* @__PURE__ */ new Set();
        this._models = /* @__PURE__ */ new Map();
        this._runningChanged = new signaling_1.Signal(this);
        this._connectionFailure = new signaling_1.Signal(this);
        this._connectToKernel = (options2) => {
          return this._kernelManager.connectTo(options2);
        };
        this._kernelManager = options.kernelManager;
        this._sessionAPIClient = (_a6 = options.sessionAPIClient) !== null && _a6 !== void 0 ? _a6 : new restapi_1.SessionAPIClient({ serverSettings: options.serverSettings });
        this._pollModels = new polling_1.Poll({
          auto: false,
          factory: () => this.requestRunning(),
          frequency: {
            interval: 10 * 1e3,
            backoff: true,
            max: 300 * 1e3
          },
          name: `@jupyterlab/services:SessionManager#models`,
          standby: (_b = options.standby) !== null && _b !== void 0 ? _b : "when-hidden"
        });
        this._ready = (async () => {
          await this._pollModels.start();
          await this._pollModels.tick;
          if (this._kernelManager.isActive) {
            await this._kernelManager.ready;
          }
          this._isReady = true;
        })();
      }
      /**
       * Test whether the manager is ready.
       */
      get isReady() {
        return this._isReady;
      }
      /**
       * A promise that fulfills when the manager is ready.
       */
      get ready() {
        return this._ready;
      }
      /**
       * A signal emitted when the running sessions change.
       */
      get runningChanged() {
        return this._runningChanged;
      }
      /**
       * A signal emitted when there is a connection failure.
       */
      get connectionFailure() {
        return this._connectionFailure;
      }
      /**
       * Dispose of the resources used by the manager.
       */
      dispose() {
        if (this.isDisposed) {
          return;
        }
        this._models.clear();
        this._sessionConnections.forEach((x2) => x2.dispose());
        this._pollModels.dispose();
        super.dispose();
      }
      /*
       * Connect to a running session.  See also [[connectToSession]].
       */
      connectTo(options) {
        const sessionConnection = new default_1.SessionConnection({
          ...options,
          connectToKernel: this._connectToKernel,
          serverSettings: this.serverSettings,
          sessionAPIClient: this._sessionAPIClient
        });
        this._onStarted(sessionConnection);
        if (!this._models.has(options.model.id)) {
          void this.refreshRunning().catch(() => {
          });
        }
        return sessionConnection;
      }
      /**
       * Create an iterator over the most recent running sessions.
       *
       * @returns A new iterator over the running sessions.
       */
      running() {
        return this._models.values();
      }
      /**
       * Force a refresh of the running sessions.
       *
       * @returns A promise that with the list of running sessions.
       *
       * #### Notes
       * This is not typically meant to be called by the user, since the
       * manager maintains its own internal state.
       */
      async refreshRunning() {
        await this._pollModels.refresh();
        await this._pollModels.tick;
      }
      /**
       * Start a new session.  See also [[startNewSession]].
       *
       * @param createOptions - Options for creating the session
       *
       * @param connectOptions - Options for connecting to the session
       */
      async startNew(createOptions, connectOptions = {}) {
        const model = await this._sessionAPIClient.startNew(createOptions);
        await this.refreshRunning();
        return this.connectTo({ ...connectOptions, model });
      }
      /**
       * Shut down a session by id.
       */
      async shutdown(id) {
        await this._sessionAPIClient.shutdown(id);
        await this.refreshRunning();
      }
      /**
       * Shut down all sessions.
       *
       * @returns A promise that resolves when all of the kernels are shut down.
       */
      async shutdownAll() {
        await this.refreshRunning();
        await Promise.all([...this._models.keys()].map((id) => this._sessionAPIClient.shutdown(id)));
        await this.refreshRunning();
      }
      /**
       * Find a session associated with a path and stop it if it is the only session
       * using that kernel.
       *
       * @param path - The path in question.
       *
       * @returns A promise that resolves when the relevant sessions are stopped.
       */
      async stopIfNeeded(path45) {
        try {
          const sessions = await this._sessionAPIClient.listRunning();
          const matches4 = sessions.filter((value) => value.path === path45);
          if (matches4.length === 1) {
            const id = matches4[0].id;
            await this.shutdown(id);
          }
        } catch (error) {
        }
      }
      /**
       * Find a session by id.
       */
      async findById(id) {
        if (this._models.has(id)) {
          return this._models.get(id);
        }
        await this.refreshRunning();
        return this._models.get(id);
      }
      /**
       * Find a session by path.
       */
      async findByPath(path45) {
        for (const m2 of this._models.values()) {
          if (m2.path === path45) {
            return m2;
          }
        }
        await this.refreshRunning();
        for (const m2 of this._models.values()) {
          if (m2.path === path45) {
            return m2;
          }
        }
        return void 0;
      }
      /**
       * Execute a request to the server to poll running kernels and update state.
       */
      async requestRunning() {
        var _a6, _b;
        let models;
        try {
          models = await this._sessionAPIClient.listRunning();
        } catch (err) {
          if (err instanceof serverconnection_1.ServerConnection.NetworkError || ((_a6 = err.response) === null || _a6 === void 0 ? void 0 : _a6.status) === 503 || ((_b = err.response) === null || _b === void 0 ? void 0 : _b.status) === 424) {
            this._connectionFailure.emit(err);
          }
          throw err;
        }
        if (this.isDisposed) {
          return;
        }
        if (this._models.size === models.length && models.every((model) => {
          var _a7, _b2, _c, _d2;
          const existing = this._models.get(model.id);
          if (!existing) {
            return false;
          }
          return ((_a7 = existing.kernel) === null || _a7 === void 0 ? void 0 : _a7.id) === ((_b2 = model.kernel) === null || _b2 === void 0 ? void 0 : _b2.id) && ((_c = existing.kernel) === null || _c === void 0 ? void 0 : _c.name) === ((_d2 = model.kernel) === null || _d2 === void 0 ? void 0 : _d2.name) && existing.name === model.name && existing.path === model.path && existing.type === model.type;
        })) {
          return;
        }
        this._models = new Map(models.map((x2) => [x2.id, x2]));
        this._sessionConnections.forEach((sc) => {
          if (this._models.has(sc.id)) {
            sc.update(this._models.get(sc.id));
          } else {
            sc.dispose();
          }
        });
        this._runningChanged.emit(models);
      }
      /**
       * Handle a session starting.
       */
      _onStarted(sessionConnection) {
        this._sessionConnections.add(sessionConnection);
        sessionConnection.disposed.connect(this._onDisposed, this);
        sessionConnection.propertyChanged.connect(this._onChanged, this);
        sessionConnection.kernelChanged.connect(this._onChanged, this);
      }
      _onDisposed(sessionConnection) {
        this._sessionConnections.delete(sessionConnection);
        void this.refreshRunning().catch(() => {
        });
      }
      _onChanged() {
        void this.refreshRunning().catch(() => {
        });
      }
    };
    exports2.SessionManager = SessionManager2;
    (function(SessionManager3) {
      class NoopManager extends SessionManager3 {
        constructor() {
          super(...arguments);
          this._readyPromise = new Promise(() => {
          });
        }
        /**
         * Whether the manager is active.
         */
        get isActive() {
          return false;
        }
        /**
         * Used for testing.
         */
        get parentReady() {
          return super.ready;
        }
        /**
         * Start a new session - throw an error since it is not supported.
         */
        async startNew(createOptions, connectOptions = {}) {
          return Promise.reject(new Error("Not implemented in no-op Session Manager"));
        }
        /*
         * Connect to a running session - throw an error since it is not supported.
         */
        connectTo(options) {
          throw Error("Not implemented in no-op Session Manager");
        }
        /**
         * A promise that fulfills when the manager is ready (never).
         */
        get ready() {
          return this.parentReady.then(() => this._readyPromise);
        }
        /**
         * Shut down a session by id - throw an error since it is not supported.
         */
        async shutdown(id) {
          return Promise.reject(new Error("Not implemented in no-op Session Manager"));
        }
        /**
         * Execute a request to the server to poll running sessions and update state.
         */
        async requestRunning() {
          return Promise.resolve();
        }
      }
      SessionManager3.NoopManager = NoopManager;
    })(SessionManager2 || (exports2.SessionManager = SessionManager2 = {}));
  }
});

// ../../node_modules/@jupyterlab/services/lib/session/index.js
var require_session2 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/session/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    var __exportStar = exports2 && exports2.__exportStar || function(m2, exports3) {
      for (var p5 in m2) if (p5 !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p5)) __createBinding(exports3, m2, p5);
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.SessionAPI = exports2.Session = void 0;
    var Session2 = __importStar(require_session());
    exports2.Session = Session2;
    var SessionAPI = __importStar(require_restapi3());
    exports2.SessionAPI = SessionAPI;
    __exportStar(require_manager3(), exports2);
  }
});

// ../../node_modules/@jupyterlab/statedb/lib/dataconnector.js
var require_dataconnector = __commonJS({
  "../../node_modules/@jupyterlab/statedb/lib/dataconnector.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.DataConnector = void 0;
    var DataConnector = class {
      /**
       * Retrieve the list of items available from the data connector.
       *
       * @param query - The optional query filter to apply to the connector request.
       *
       * @returns A promise that always rejects with an error.
       *
       * #### Notes
       * Subclasses should reimplement if they support a back-end that can list.
       */
      async list(query) {
        throw new Error("DataConnector#list method has not been implemented.");
      }
      /**
       * Remove a value using the data connector.
       *
       * @param id - The identifier for the data being removed.
       *
       * @returns A promise that always rejects with an error.
       *
       * #### Notes
       * Subclasses should reimplement if they support a back-end that can remove.
       */
      async remove(id) {
        throw new Error("DataConnector#remove method has not been implemented.");
      }
      /**
       * Save a value using the data connector.
       *
       * @param id - The identifier for the data being saved.
       *
       * @param value - The data being saved.
       *
       * @returns A promise that always rejects with an error.
       *
       * #### Notes
       * Subclasses should reimplement if they support a back-end that can save.
       */
      async save(id, value) {
        throw new Error("DataConnector#save method has not been implemented.");
      }
    };
    exports2.DataConnector = DataConnector;
  }
});

// ../../node_modules/@jupyterlab/statedb/lib/interfaces.js
var require_interfaces2 = __commonJS({
  "../../node_modules/@jupyterlab/statedb/lib/interfaces.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
  }
});

// ../../node_modules/@jupyterlab/statedb/node_modules/@lumino/coreutils/dist/index.node.js
var require_index_node5 = __commonJS({
  "../../node_modules/@jupyterlab/statedb/node_modules/@lumino/coreutils/dist/index.node.js"(exports2) {
    "use strict";
    var algorithm = require_dist6();
    exports2.JSONExt = void 0;
    (function(JSONExt) {
      JSONExt.emptyObject = Object.freeze({});
      JSONExt.emptyArray = Object.freeze([]);
      function isPrimitive(value) {
        return value === null || typeof value === "boolean" || typeof value === "number" || typeof value === "string";
      }
      JSONExt.isPrimitive = isPrimitive;
      function isArray2(value) {
        return Array.isArray(value);
      }
      JSONExt.isArray = isArray2;
      function isObject2(value) {
        return !isPrimitive(value) && !isArray2(value);
      }
      JSONExt.isObject = isObject2;
      function deepEqual(first2, second) {
        if (first2 === second) {
          return true;
        }
        if (isPrimitive(first2) || isPrimitive(second)) {
          return false;
        }
        let a1 = isArray2(first2);
        let a2 = isArray2(second);
        if (a1 !== a2) {
          return false;
        }
        if (a1 && a2) {
          return deepArrayEqual(first2, second);
        }
        return deepObjectEqual(first2, second);
      }
      JSONExt.deepEqual = deepEqual;
      function deepCopy(value) {
        if (isPrimitive(value)) {
          return value;
        }
        if (isArray2(value)) {
          return deepArrayCopy(value);
        }
        return deepObjectCopy(value);
      }
      JSONExt.deepCopy = deepCopy;
      function deepArrayEqual(first2, second) {
        if (first2 === second) {
          return true;
        }
        if (first2.length !== second.length) {
          return false;
        }
        for (let i2 = 0, n = first2.length; i2 < n; ++i2) {
          if (!deepEqual(first2[i2], second[i2])) {
            return false;
          }
        }
        return true;
      }
      function deepObjectEqual(first2, second) {
        if (first2 === second) {
          return true;
        }
        for (let key2 in first2) {
          if (first2[key2] !== void 0 && !(key2 in second)) {
            return false;
          }
        }
        for (let key2 in second) {
          if (second[key2] !== void 0 && !(key2 in first2)) {
            return false;
          }
        }
        for (let key2 in first2) {
          let firstValue = first2[key2];
          let secondValue = second[key2];
          if (firstValue === void 0 && secondValue === void 0) {
            continue;
          }
          if (firstValue === void 0 || secondValue === void 0) {
            return false;
          }
          if (!deepEqual(firstValue, secondValue)) {
            return false;
          }
        }
        return true;
      }
      function deepArrayCopy(value) {
        let result = new Array(value.length);
        for (let i2 = 0, n = value.length; i2 < n; ++i2) {
          result[i2] = deepCopy(value[i2]);
        }
        return result;
      }
      function deepObjectCopy(value) {
        let result = {};
        for (let key2 in value) {
          let subvalue = value[key2];
          if (subvalue === void 0) {
            continue;
          }
          result[key2] = deepCopy(subvalue);
        }
        return result;
      }
    })(exports2.JSONExt || (exports2.JSONExt = {}));
    var MimeData = class {
      constructor() {
        this._types = [];
        this._values = [];
      }
      /**
       * Get an array of the MIME types contained within the dataset.
       *
       * @returns A new array of the MIME types, in order of insertion.
       */
      types() {
        return this._types.slice();
      }
      /**
       * Test whether the dataset has an entry for the given type.
       *
       * @param mime - The MIME type of interest.
       *
       * @returns `true` if the dataset contains a value for the given
       *   MIME type, `false` otherwise.
       */
      hasData(mime3) {
        return this._types.indexOf(mime3) !== -1;
      }
      /**
       * Get the data value for the given MIME type.
       *
       * @param mime - The MIME type of interest.
       *
       * @returns The value for the given MIME type, or `undefined` if
       *   the dataset does not contain a value for the type.
       */
      getData(mime3) {
        let i2 = this._types.indexOf(mime3);
        return i2 !== -1 ? this._values[i2] : void 0;
      }
      /**
       * Set the data value for the given MIME type.
       *
       * @param mime - The MIME type of interest.
       *
       * @param data - The data value for the given MIME type.
       *
       * #### Notes
       * This will overwrite any previous entry for the MIME type.
       */
      setData(mime3, data) {
        this.clearData(mime3);
        this._types.push(mime3);
        this._values.push(data);
      }
      /**
       * Remove the data entry for the given MIME type.
       *
       * @param mime - The MIME type of interest.
       *
       * #### Notes
       * This is a no-op if there is no entry for the given MIME type.
       */
      clearData(mime3) {
        let i2 = this._types.indexOf(mime3);
        if (i2 !== -1) {
          this._types.splice(i2, 1);
          this._values.splice(i2, 1);
        }
      }
      /**
       * Remove all data entries from the dataset.
       */
      clear() {
        this._types.length = 0;
        this._values.length = 0;
      }
    };
    var PluginRegistry = class {
      constructor(options = {}) {
        this._application = null;
        this._validatePlugin = () => true;
        this._plugins = /* @__PURE__ */ new Map();
        this._services = /* @__PURE__ */ new Map();
        if (options.validatePlugin) {
          console.info("Plugins may be rejected by the custom validation plugin method.");
          this._validatePlugin = options.validatePlugin;
        }
      }
      /**
       * The application object.
       *
       * It will be provided as first argument to the
       * plugins activation and deactivation functions.
       *
       * It can only be set once.
       *
       * By default, it is `null`.
       */
      get application() {
        return this._application;
      }
      set application(v) {
        if (this._application !== null) {
          throw Error("PluginRegistry.application is already set. It cannot be overridden.");
        }
        this._application = v;
      }
      /**
       * The list of all the deferred plugins.
       */
      get deferredPlugins() {
        return Array.from(this._plugins).filter(([id, plugin5]) => plugin5.autoStart === "defer").map(([id, plugin5]) => id);
      }
      /**
       * Get a plugin description.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns The plugin description.
       */
      getPluginDescription(id) {
        var _a6, _b;
        return (_b = (_a6 = this._plugins.get(id)) === null || _a6 === void 0 ? void 0 : _a6.description) !== null && _b !== void 0 ? _b : "";
      }
      /**
       * Test whether a plugin is registered with the application.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns `true` if the plugin is registered, `false` otherwise.
       */
      hasPlugin(id) {
        return this._plugins.has(id);
      }
      /**
       * Test whether a plugin is activated with the application.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns `true` if the plugin is activated, `false` otherwise.
       */
      isPluginActivated(id) {
        var _a6, _b;
        return (_b = (_a6 = this._plugins.get(id)) === null || _a6 === void 0 ? void 0 : _a6.activated) !== null && _b !== void 0 ? _b : false;
      }
      /**
       * List the IDs of the plugins registered with the application.
       *
       * @returns A new array of the registered plugin IDs.
       */
      listPlugins() {
        return Array.from(this._plugins.keys());
      }
      /**
       * Register a plugin with the application.
       *
       * @param plugin - The plugin to register.
       *
       * #### Notes
       * An error will be thrown if a plugin with the same ID is already
       * registered, or if the plugin has a circular dependency.
       *
       * If the plugin provides a service which has already been provided
       * by another plugin, the new service will override the old service.
       */
      registerPlugin(plugin5) {
        if (this._plugins.has(plugin5.id)) {
          throw new TypeError(`Plugin '${plugin5.id}' is already registered.`);
        }
        if (!this._validatePlugin(plugin5)) {
          throw new Error(`Plugin '${plugin5.id}' is not valid.`);
        }
        const data = Private.createPluginData(plugin5);
        Private.ensureNoCycle(data, this._plugins, this._services);
        if (data.provides) {
          this._services.set(data.provides, data.id);
        }
        this._plugins.set(data.id, data);
      }
      /**
       * Register multiple plugins with the application.
       *
       * @param plugins - The plugins to register.
       *
       * #### Notes
       * This calls `registerPlugin()` for each of the given plugins.
       */
      registerPlugins(plugins3) {
        for (const plugin5 of plugins3) {
          this.registerPlugin(plugin5);
        }
      }
      /**
       * Deregister a plugin with the application.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @param force - Whether to deregister the plugin even if it is active.
       */
      deregisterPlugin(id, force) {
        const plugin5 = this._plugins.get(id);
        if (!plugin5) {
          return;
        }
        if (plugin5.activated && !force) {
          throw new Error(`Plugin '${id}' is still active.`);
        }
        this._plugins.delete(id);
      }
      /**
       * Activate the plugin with the given ID.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns A promise which resolves when the plugin is activated
       *   or rejects with an error if it cannot be activated.
       */
      async activatePlugin(id) {
        const plugin5 = this._plugins.get(id);
        if (!plugin5) {
          throw new ReferenceError(`Plugin '${id}' is not registered.`);
        }
        if (plugin5.activated) {
          return;
        }
        if (plugin5.promise) {
          return plugin5.promise;
        }
        const required = plugin5.requires.map((t2) => this.resolveRequiredService(t2));
        const optional = plugin5.optional.map((t2) => this.resolveOptionalService(t2));
        plugin5.promise = Promise.all([...required, ...optional]).then((services) => plugin5.activate.apply(void 0, [this.application, ...services])).then((service) => {
          plugin5.service = service;
          plugin5.activated = true;
          plugin5.promise = null;
        }).catch((error) => {
          plugin5.promise = null;
          throw error;
        });
        return plugin5.promise;
      }
      /**
       * Activate all the deferred plugins.
       *
       * @returns A promise which will resolve when each plugin is activated
       * or rejects with an error if one cannot be activated.
       */
      async activatePlugins(kind, options = {}) {
        switch (kind) {
          case "defer": {
            const promises = this.deferredPlugins.filter((pluginId) => this._plugins.get(pluginId).autoStart).map((pluginId) => {
              return this.activatePlugin(pluginId);
            });
            await Promise.all(promises);
            break;
          }
          case "startUp": {
            const startups = Private.collectStartupPlugins(this._plugins, options);
            const promises = startups.map(async (id) => {
              try {
                return await this.activatePlugin(id);
              } catch (error) {
                console.error(`Plugin '${id}' failed to activate.`, error);
              }
            });
            await Promise.all(promises);
            break;
          }
        }
      }
      /**
       * Deactivate the plugin and its downstream dependents if and only if the
       * plugin and its dependents all support `deactivate`.
       *
       * @param id - The ID of the plugin of interest.
       *
       * @returns A list of IDs of downstream plugins deactivated with this one.
       */
      async deactivatePlugin(id) {
        const plugin5 = this._plugins.get(id);
        if (!plugin5) {
          throw new ReferenceError(`Plugin '${id}' is not registered.`);
        }
        if (!plugin5.activated) {
          return [];
        }
        if (!plugin5.deactivate) {
          throw new TypeError(`Plugin '${id}'#deactivate() method missing`);
        }
        const manifest = Private.findDependents(id, this._plugins, this._services);
        const downstream = manifest.map((id2) => this._plugins.get(id2));
        for (const plugin6 of downstream) {
          if (!plugin6.deactivate) {
            throw new TypeError(`Plugin ${plugin6.id}#deactivate() method missing (depends on ${id})`);
          }
        }
        for (const plugin6 of downstream) {
          const services = [...plugin6.requires, ...plugin6.optional].map((service) => {
            const id2 = this._services.get(service);
            return id2 ? this._plugins.get(id2).service : null;
          });
          await plugin6.deactivate(this.application, ...services);
          plugin6.service = null;
          plugin6.activated = false;
        }
        manifest.pop();
        return manifest;
      }
      /**
       * Resolve a required service of a given type.
       *
       * @param token - The token for the service type of interest.
       *
       * @returns A promise which resolves to an instance of the requested
       *   service, or rejects with an error if it cannot be resolved.
       *
       * #### Notes
       * Services are singletons. The same instance will be returned each
       * time a given service token is resolved.
       *
       * If the plugin which provides the service has not been activated,
       * resolving the service will automatically activate the plugin.
       *
       * User code will not typically call this method directly. Instead,
       * the required services for the user's plugins will be resolved
       * automatically when the plugin is activated.
       */
      async resolveRequiredService(token) {
        const id = this._services.get(token);
        if (!id) {
          throw new TypeError(`No provider for: ${token.name}.`);
        }
        const plugin5 = this._plugins.get(id);
        if (!plugin5.activated) {
          await this.activatePlugin(id);
        }
        return plugin5.service;
      }
      /**
       * Resolve an optional service of a given type.
       *
       * @param token - The token for the service type of interest.
       *
       * @returns A promise which resolves to an instance of the requested
       *   service, or `null` if it cannot be resolved.
       *
       * #### Notes
       * Services are singletons. The same instance will be returned each
       * time a given service token is resolved.
       *
       * If the plugin which provides the service has not been activated,
       * resolving the service will automatically activate the plugin.
       *
       * User code will not typically call this method directly. Instead,
       * the optional services for the user's plugins will be resolved
       * automatically when the plugin is activated.
       */
      async resolveOptionalService(token) {
        const id = this._services.get(token);
        if (!id) {
          return null;
        }
        const plugin5 = this._plugins.get(id);
        if (!plugin5.activated) {
          try {
            await this.activatePlugin(id);
          } catch (reason) {
            console.error(reason);
            return null;
          }
        }
        return plugin5.service;
      }
    };
    var Private;
    (function(Private2) {
      class PluginData {
        constructor(plugin5) {
          var _a6, _b, _c, _d2;
          this._activated = false;
          this._promise = null;
          this._service = null;
          this.id = plugin5.id;
          this.description = (_a6 = plugin5.description) !== null && _a6 !== void 0 ? _a6 : "";
          this.activate = plugin5.activate;
          this.deactivate = (_b = plugin5.deactivate) !== null && _b !== void 0 ? _b : null;
          this.provides = (_c = plugin5.provides) !== null && _c !== void 0 ? _c : null;
          this.autoStart = (_d2 = plugin5.autoStart) !== null && _d2 !== void 0 ? _d2 : false;
          this.requires = plugin5.requires ? plugin5.requires.slice() : [];
          this.optional = plugin5.optional ? plugin5.optional.slice() : [];
        }
        /**
         * Whether the plugin has been activated.
         */
        get activated() {
          return this._activated;
        }
        set activated(a2) {
          this._activated = a2;
        }
        /**
         * The resolved service for the plugin, or `null`.
         */
        get service() {
          return this._service;
        }
        set service(s5) {
          this._service = s5;
        }
        /**
         * The pending resolver promise, or `null`.
         */
        get promise() {
          return this._promise;
        }
        set promise(p5) {
          this._promise = p5;
        }
      }
      function createPluginData(plugin5) {
        return new PluginData(plugin5);
      }
      Private2.createPluginData = createPluginData;
      function ensureNoCycle(plugin5, plugins3, services) {
        const dependencies = [...plugin5.requires, ...plugin5.optional];
        const visit3 = (token) => {
          if (token === plugin5.provides) {
            return true;
          }
          const id = services.get(token);
          if (!id) {
            return false;
          }
          const visited = plugins3.get(id);
          const dependencies2 = [...visited.requires, ...visited.optional];
          if (dependencies2.length === 0) {
            return false;
          }
          trace.push(id);
          if (dependencies2.some(visit3)) {
            return true;
          }
          trace.pop();
          return false;
        };
        if (!plugin5.provides || dependencies.length === 0) {
          return;
        }
        const trace = [plugin5.id];
        if (dependencies.some(visit3)) {
          throw new ReferenceError(`Cycle detected: ${trace.join(" -> ")}.`);
        }
      }
      Private2.ensureNoCycle = ensureNoCycle;
      function findDependents(id, plugins3, services) {
        const edges = new Array();
        const add2 = (id2) => {
          const plugin5 = plugins3.get(id2);
          const dependencies = [...plugin5.requires, ...plugin5.optional];
          edges.push(...dependencies.reduce((acc, dep) => {
            const service = services.get(dep);
            if (service) {
              acc.push([id2, service]);
            }
            return acc;
          }, []));
        };
        for (const id2 of plugins3.keys()) {
          add2(id2);
        }
        const newEdges = edges.filter((edge) => edge[1] === id);
        let oldSize = 0;
        while (newEdges.length > oldSize) {
          const previousSize = newEdges.length;
          const packagesOfInterest = new Set(newEdges.map((edge) => edge[0]));
          for (const poi of packagesOfInterest) {
            edges.filter((edge) => edge[1] === poi).forEach((edge) => {
              if (!newEdges.includes(edge)) {
                newEdges.push(edge);
              }
            });
          }
          oldSize = previousSize;
        }
        const sorted = algorithm.topologicSort(newEdges);
        const index4 = sorted.findIndex((candidate) => candidate === id);
        if (index4 === -1) {
          return [id];
        }
        return sorted.slice(0, index4 + 1);
      }
      Private2.findDependents = findDependents;
      function collectStartupPlugins(plugins3, options) {
        const collection = /* @__PURE__ */ new Set();
        for (const id of plugins3.keys()) {
          if (plugins3.get(id).autoStart === true) {
            collection.add(id);
          }
        }
        if (options.startPlugins) {
          for (const id of options.startPlugins) {
            collection.add(id);
          }
        }
        if (options.ignorePlugins) {
          for (const id of options.ignorePlugins) {
            collection.delete(id);
          }
        }
        return Array.from(collection);
      }
      Private2.collectStartupPlugins = collectStartupPlugins;
    })(Private || (Private = {}));
    var PromiseDelegate = class {
      /**
       * Construct a new promise delegate.
       */
      constructor() {
        this.promise = new Promise((resolve9, reject) => {
          this._resolve = resolve9;
          this._reject = reject;
        });
      }
      /**
       * Resolve the wrapped promise with the given value.
       *
       * @param value - The value to use for resolving the promise.
       */
      resolve(value) {
        let resolve9 = this._resolve;
        resolve9(value);
      }
      /**
       * Reject the wrapped promise with the given value.
       *
       * @reason - The reason for rejecting the promise.
       */
      reject(reason) {
        let reject = this._reject;
        reject(reason);
      }
    };
    var Token2 = class {
      /**
       * Construct a new token.
       *
       * @param name - A human readable name for the token.
       * @param description - Token purpose description for documentation.
       */
      constructor(name3, description) {
        this.name = name3;
        this.description = description !== null && description !== void 0 ? description : "";
        this._tokenStructuralPropertyT = null;
      }
    };
    function fallbackRandomValues(buffer2) {
      let value = 0;
      for (let i2 = 0, n = buffer2.length; i2 < n; ++i2) {
        if (i2 % 4 === 0) {
          value = Math.random() * 4294967295 >>> 0;
        }
        buffer2[i2] = value & 255;
        value >>>= 8;
      }
    }
    exports2.Random = void 0;
    (function(Random) {
      Random.getRandomValues = (() => {
        const crypto4 = typeof require !== "undefined" && require("crypto") || null;
        if (crypto4 && typeof crypto4.randomFillSync === "function") {
          return function getRandomValues(buffer2) {
            return crypto4.randomFillSync(buffer2);
          };
        }
        if (crypto4 && typeof crypto4.randomBytes === "function") {
          return function getRandomValues(buffer2) {
            let bytes = crypto4.randomBytes(buffer2.length);
            for (let i2 = 0, n = bytes.length; i2 < n; ++i2) {
              buffer2[i2] = bytes[i2];
            }
          };
        }
        return fallbackRandomValues;
      })();
    })(exports2.Random || (exports2.Random = {}));
    function uuid4Factory(getRandomValues) {
      const bytes = new Uint8Array(16);
      const lut = new Array(256);
      for (let i2 = 0; i2 < 16; ++i2) {
        lut[i2] = "0" + i2.toString(16);
      }
      for (let i2 = 16; i2 < 256; ++i2) {
        lut[i2] = i2.toString(16);
      }
      return function uuid4() {
        getRandomValues(bytes);
        bytes[6] = 64 | bytes[6] & 15;
        bytes[8] = 128 | bytes[8] & 63;
        return lut[bytes[0]] + lut[bytes[1]] + lut[bytes[2]] + lut[bytes[3]] + "-" + lut[bytes[4]] + lut[bytes[5]] + "-" + lut[bytes[6]] + lut[bytes[7]] + "-" + lut[bytes[8]] + lut[bytes[9]] + "-" + lut[bytes[10]] + lut[bytes[11]] + lut[bytes[12]] + lut[bytes[13]] + lut[bytes[14]] + lut[bytes[15]];
      };
    }
    exports2.UUID = void 0;
    (function(UUID) {
      UUID.uuid4 = uuid4Factory(exports2.Random.getRandomValues);
    })(exports2.UUID || (exports2.UUID = {}));
    exports2.MimeData = MimeData;
    exports2.PluginRegistry = PluginRegistry;
    exports2.PromiseDelegate = PromiseDelegate;
    exports2.Token = Token2;
  }
});

// ../../node_modules/@lumino/properties/dist/index.js
var require_dist10 = __commonJS({
  "../../node_modules/@lumino/properties/dist/index.js"(exports2, module2) {
    (function(global2, factory) {
      typeof exports2 === "object" && typeof module2 !== "undefined" ? factory(exports2) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.lumino_properties = {}));
    })(exports2, (function(exports3) {
      "use strict";
      class AttachedProperty {
        /**
         * Construct a new attached property.
         *
         * @param options - The options for initializing the property.
         */
        constructor(options) {
          this._pid = Private.nextPID();
          this.name = options.name;
          this._create = options.create;
          this._coerce = options.coerce || null;
          this._compare = options.compare || null;
          this._changed = options.changed || null;
        }
        /**
         * Get the current value of the property for a given owner.
         *
         * @param owner - The property owner of interest.
         *
         * @returns The current value of the property.
         *
         * #### Notes
         * If the value has not yet been set, the default value will be
         * computed and assigned as the current value of the property.
         */
        get(owner) {
          let value;
          let map13 = Private.ensureMap(owner);
          if (this._pid in map13) {
            value = map13[this._pid];
          } else {
            value = map13[this._pid] = this._createValue(owner);
          }
          return value;
        }
        /**
         * Set the current value of the property for a given owner.
         *
         * @param owner - The property owner of interest.
         *
         * @param value - The value for the property.
         *
         * #### Notes
         * If the value has not yet been set, the default value will be
         * computed and used as the previous value for the comparison.
         */
        set(owner, value) {
          let oldValue;
          let map13 = Private.ensureMap(owner);
          if (this._pid in map13) {
            oldValue = map13[this._pid];
          } else {
            oldValue = map13[this._pid] = this._createValue(owner);
          }
          let newValue = this._coerceValue(owner, value);
          this._maybeNotify(owner, oldValue, map13[this._pid] = newValue);
        }
        /**
         * Explicitly coerce the current property value for a given owner.
         *
         * @param owner - The property owner of interest.
         *
         * #### Notes
         * If the value has not yet been set, the default value will be
         * computed and used as the previous value for the comparison.
         */
        coerce(owner) {
          let oldValue;
          let map13 = Private.ensureMap(owner);
          if (this._pid in map13) {
            oldValue = map13[this._pid];
          } else {
            oldValue = map13[this._pid] = this._createValue(owner);
          }
          let newValue = this._coerceValue(owner, oldValue);
          this._maybeNotify(owner, oldValue, map13[this._pid] = newValue);
        }
        /**
         * Get or create the default value for the given owner.
         */
        _createValue(owner) {
          let create3 = this._create;
          return create3(owner);
        }
        /**
         * Coerce the value for the given owner.
         */
        _coerceValue(owner, value) {
          let coerce2 = this._coerce;
          return coerce2 ? coerce2(owner, value) : value;
        }
        /**
         * Compare the old value and new value for equality.
         */
        _compareValue(oldValue, newValue) {
          let compare3 = this._compare;
          return compare3 ? compare3(oldValue, newValue) : oldValue === newValue;
        }
        /**
         * Run the change notification if the given values are different.
         */
        _maybeNotify(owner, oldValue, newValue) {
          let changed = this._changed;
          if (changed && !this._compareValue(oldValue, newValue)) {
            changed(owner, oldValue, newValue);
          }
        }
      }
      (function(AttachedProperty2) {
        function clearData(owner) {
          Private.ownerData.delete(owner);
        }
        AttachedProperty2.clearData = clearData;
      })(AttachedProperty || (AttachedProperty = {}));
      var Private;
      (function(Private2) {
        Private2.ownerData = /* @__PURE__ */ new WeakMap();
        Private2.nextPID = /* @__PURE__ */ (() => {
          let id = 0;
          return () => {
            let rand = Math.random();
            let stem = `${rand}`.slice(2);
            return `pid-${stem}-${id++}`;
          };
        })();
        function ensureMap(owner) {
          let map13 = Private2.ownerData.get(owner);
          if (map13) {
            return map13;
          }
          map13 = /* @__PURE__ */ Object.create(null);
          Private2.ownerData.set(owner, map13);
          return map13;
        }
        Private2.ensureMap = ensureMap;
      })(Private || (Private = {}));
      exports3.AttachedProperty = AttachedProperty;
    }));
  }
});

// ../../node_modules/@jupyterlab/statedb/lib/restorablepool.js
var require_restorablepool = __commonJS({
  "../../node_modules/@jupyterlab/statedb/lib/restorablepool.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.RestorablePool = void 0;
    var coreutils_12 = require_index_node5();
    var properties_1 = require_dist10();
    var signaling_1 = require_dist7();
    var RestorablePool = class {
      /**
       * Create a new restorable pool.
       *
       * @param options - The instantiation options for a restorable pool.
       */
      constructor(options) {
        this._added = new signaling_1.Signal(this);
        this._current = null;
        this._currentChanged = new signaling_1.Signal(this);
        this._hasRestored = false;
        this._isDisposed = false;
        this._objects = /* @__PURE__ */ new Set();
        this._restore = null;
        this._restored = new coreutils_12.PromiseDelegate();
        this._updated = new signaling_1.Signal(this);
        this.namespace = options.namespace;
      }
      /**
       * A signal emitted when an object object is added.
       *
       * #### Notes
       * This signal will only fire when an object is added to the pool.
       * It will not fire if an object injected into the pool.
       */
      get added() {
        return this._added;
      }
      /**
       * The current object.
       *
       * #### Notes
       * The restorable pool does not set `current`. It is intended for client use.
       *
       * If `current` is set to an object that does not exist in the pool, it is a
       * no-op.
       */
      get current() {
        return this._current;
      }
      set current(obj) {
        if (this._current === obj) {
          return;
        }
        if (obj !== null && this._objects.has(obj)) {
          this._current = obj;
          this._currentChanged.emit(this._current);
        }
      }
      /**
       * A signal emitted when the current widget changes.
       */
      get currentChanged() {
        return this._currentChanged;
      }
      /**
       * Test whether the pool is disposed.
       */
      get isDisposed() {
        return this._isDisposed;
      }
      /**
       * A promise resolved when the restorable pool has been restored.
       */
      get restored() {
        return this._restored.promise;
      }
      /**
       * The number of objects held by the pool.
       */
      get size() {
        return this._objects.size;
      }
      /**
       * A signal emitted when an object is updated.
       */
      get updated() {
        return this._updated;
      }
      /**
       * Add a new object to the pool.
       *
       * @param obj - The object object being added.
       *
       * #### Notes
       * The object passed into the pool is added synchronously; its existence in
       * the pool can be checked with the `has()` method. The promise this method
       * returns resolves after the object has been added and saved to an underlying
       * restoration connector, if one is available.
       */
      async add(obj) {
        var _a6, _b;
        if (obj.isDisposed) {
          const warning2 = "A disposed object cannot be added.";
          console.warn(warning2, obj);
          throw new Error(warning2);
        }
        if (this._objects.has(obj)) {
          const warning2 = "This object already exists in the pool.";
          console.warn(warning2, obj);
          throw new Error(warning2);
        }
        this._objects.add(obj);
        obj.disposed.connect(this._onInstanceDisposed, this);
        if (Private.injectedProperty.get(obj)) {
          return;
        }
        if (this._restore) {
          const { connector } = this._restore;
          const objName = this._restore.name(obj);
          if (objName) {
            const name3 = `${this.namespace}:${objName}`;
            const data = (_b = (_a6 = this._restore).args) === null || _b === void 0 ? void 0 : _b.call(_a6, obj);
            Private.nameProperty.set(obj, name3);
            await connector.save(name3, { data });
          }
        }
        this._added.emit(obj);
      }
      /**
       * Dispose of the resources held by the pool.
       *
       * #### Notes
       * Disposing a pool does not affect the underlying data in the data connector,
       * it simply disposes the client-side pool without making any connector calls.
       */
      dispose() {
        if (this.isDisposed) {
          return;
        }
        this._current = null;
        this._isDisposed = true;
        this._objects.clear();
        signaling_1.Signal.clearData(this);
      }
      /**
       * Find the first object in the pool that satisfies a filter function.
       *
       * @param fn The filter function to call on each object.
       */
      find(fn) {
        const values = this._objects.values();
        for (const value of values) {
          if (fn(value)) {
            return value;
          }
        }
        return void 0;
      }
      /**
       * Iterate through each object in the pool.
       *
       * @param fn - The function to call on each object.
       */
      forEach(fn) {
        this._objects.forEach(fn);
      }
      /**
       * Filter the objects in the pool based on a predicate.
       *
       * @param fn - The function by which to filter.
       */
      filter(fn) {
        const filtered = [];
        this.forEach((obj) => {
          if (fn(obj)) {
            filtered.push(obj);
          }
        });
        return filtered;
      }
      /**
       * Inject an object into the restorable pool without the pool handling its
       * restoration lifecycle.
       *
       * @param obj - The object to inject into the pool.
       */
      inject(obj) {
        Private.injectedProperty.set(obj, true);
        return this.add(obj);
      }
      /**
       * Check if this pool has the specified object.
       *
       * @param obj - The object whose existence is being checked.
       */
      has(obj) {
        return this._objects.has(obj);
      }
      /**
       * Restore the objects in this pool's namespace.
       *
       * @param options - The configuration options that describe restoration.
       *
       * @returns A promise that resolves when restoration has completed.
       *
       * #### Notes
       * This function should almost never be invoked by client code. Its primary
       * use case is to be invoked by a layout restorer plugin that handles
       * multiple restorable pools and, when ready, asks them each to restore their
       * respective objects.
       */
      async restore(options) {
        if (this._hasRestored) {
          throw new Error("This pool has already been restored.");
        }
        this._hasRestored = true;
        const { command, connector, registry, when } = options;
        const namespace = this.namespace;
        const promises = when ? [connector.list(namespace)].concat(when) : [connector.list(namespace)];
        this._restore = options;
        const [saved] = await Promise.all(promises);
        const values = await Promise.all(saved.ids.map(async (id, index4) => {
          const value = saved.values[index4];
          const args = value && value.data;
          if (args === void 0) {
            return connector.remove(id);
          }
          return registry.execute(command, args).catch(() => connector.remove(id));
        }));
        this._restored.resolve();
        return values;
      }
      /**
       * Save the restore data for a given object.
       *
       * @param obj - The object being saved.
       */
      async save(obj) {
        var _a6, _b;
        const injected = Private.injectedProperty.get(obj);
        if (!this._restore || !this.has(obj) || injected) {
          return;
        }
        const { connector } = this._restore;
        const objName = this._restore.name(obj);
        const oldName = Private.nameProperty.get(obj);
        const newName = objName ? `${this.namespace}:${objName}` : "";
        if (oldName && oldName !== newName) {
          await connector.remove(oldName);
        }
        Private.nameProperty.set(obj, newName);
        if (newName) {
          const data = (_b = (_a6 = this._restore).args) === null || _b === void 0 ? void 0 : _b.call(_a6, obj);
          await connector.save(newName, { data });
        }
        if (oldName !== newName) {
          this._updated.emit(obj);
        }
      }
      /**
       * Clean up after disposed objects.
       */
      _onInstanceDisposed(obj) {
        this._objects.delete(obj);
        if (obj === this._current) {
          this._current = null;
          this._currentChanged.emit(this._current);
        }
        if (Private.injectedProperty.get(obj)) {
          return;
        }
        if (!this._restore) {
          return;
        }
        const { connector } = this._restore;
        const name3 = Private.nameProperty.get(obj);
        if (name3) {
          void connector.remove(name3);
        }
      }
    };
    exports2.RestorablePool = RestorablePool;
    var Private;
    (function(Private2) {
      Private2.injectedProperty = new properties_1.AttachedProperty({
        name: "injected",
        create: () => false
      });
      Private2.nameProperty = new properties_1.AttachedProperty({
        name: "name",
        create: () => ""
      });
    })(Private || (Private = {}));
  }
});

// ../../node_modules/@jupyterlab/statedb/lib/statedb.js
var require_statedb = __commonJS({
  "../../node_modules/@jupyterlab/statedb/lib/statedb.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.StateDB = void 0;
    var signaling_1 = require_dist7();
    var StateDB = class _StateDB {
      /**
       * Create a new state database.
       *
       * @param options - The instantiation options for a state database.
       */
      constructor(options = {}) {
        this._changed = new signaling_1.Signal(this);
        const { connector, transform: transform3 } = options;
        this._connector = connector || new _StateDB.Connector();
        if (!transform3) {
          this._ready = Promise.resolve(void 0);
        } else {
          this._ready = transform3.then((transformation) => {
            const { contents, type: type2 } = transformation;
            switch (type2) {
              case "cancel":
                return;
              case "clear":
                return this._clear();
              case "merge":
                return this._merge(contents || {});
              case "overwrite":
                return this._overwrite(contents || {});
              default:
                return;
            }
          });
        }
      }
      /**
       * A signal that emits the change type any time a value changes.
       */
      get changed() {
        return this._changed;
      }
      /**
       * Clear the entire database.
       */
      async clear() {
        await this._ready;
        await this._clear();
      }
      /**
       * Retrieve a saved bundle from the database.
       *
       * @param id - The identifier used to retrieve a data bundle.
       *
       * @returns A promise that bears a data payload if available.
       *
       * #### Notes
       * The `id` values of stored items in the state database are formatted:
       * `'namespace:identifier'`, which is the same convention that command
       * identifiers in JupyterLab use as well. While this is not a technical
       * requirement for `fetch()`, `remove()`, and `save()`, it *is* necessary for
       * using the `list(namespace: string)` method.
       *
       * The promise returned by this method may be rejected if an error occurs in
       * retrieving the data. Non-existence of an `id` will succeed with the `value`
       * `undefined`.
       */
      async fetch(id) {
        await this._ready;
        return this._fetch(id);
      }
      /**
       * Retrieve all the saved bundles for a namespace.
       *
       * @param namespace The namespace prefix to retrieve.
       *
       * @returns A promise that bears a collection of payloads for a namespace.
       *
       * #### Notes
       * Namespaces are entirely conventional entities. The `id` values of stored
       * items in the state database are formatted: `'namespace:identifier'`, which
       * is the same convention that command identifiers in JupyterLab use as well.
       *
       * If there are any errors in retrieving the data, they will be logged to the
       * console in order to optimistically return any extant data without failing.
       * This promise will always succeed.
       */
      async list(namespace) {
        await this._ready;
        return this._list(namespace);
      }
      /**
       * Remove a value from the database.
       *
       * @param id - The identifier for the data being removed.
       *
       * @returns A promise that is rejected if remove fails and succeeds otherwise.
       */
      async remove(id) {
        await this._ready;
        await this._remove(id);
        this._changed.emit({ id, type: "remove" });
      }
      /**
       * Save a value in the database.
       *
       * @param id - The identifier for the data being saved.
       *
       * @param value - The data being saved.
       *
       * @returns A promise that is rejected if saving fails and succeeds otherwise.
       *
       * #### Notes
       * The `id` values of stored items in the state database are formatted:
       * `'namespace:identifier'`, which is the same convention that command
       * identifiers in JupyterLab use as well. While this is not a technical
       * requirement for `fetch()`, `remove()`, and `save()`, it *is* necessary for
       * using the `list(namespace: string)` method.
       */
      async save(id, value) {
        await this._ready;
        await this._save(id, value);
        this._changed.emit({ id, type: "save" });
      }
      /**
       * Return a serialized copy of the state database's entire contents.
       *
       * @returns A promise that resolves with the database contents as JSON.
       */
      async toJSON() {
        await this._ready;
        const { ids, values } = await this._list();
        return values.reduce((acc, val, idx) => {
          acc[ids[idx]] = val;
          return acc;
        }, {});
      }
      /**
       * Clear the entire database.
       */
      async _clear() {
        await Promise.all((await this._list()).ids.map((id) => this._remove(id)));
      }
      /**
       * Fetch a value from the database.
       */
      async _fetch(id) {
        const value = await this._connector.fetch(id);
        if (value) {
          return JSON.parse(value).v;
        }
      }
      /**
       * Fetch a list from the database.
       */
      async _list(namespace = "") {
        const { ids, values } = await this._connector.list(namespace);
        return {
          ids,
          values: values.map((val) => JSON.parse(val).v)
        };
      }
      /**
       * Merge data into the state database.
       */
      async _merge(contents) {
        await Promise.all(Object.keys(contents).map((key2) => contents[key2] && this._save(key2, contents[key2])));
      }
      /**
       * Overwrite the entire database with new contents.
       */
      async _overwrite(contents) {
        await this._clear();
        await this._merge(contents);
      }
      /**
       * Remove a key in the database.
       */
      async _remove(id) {
        return this._connector.remove(id);
      }
      /**
       * Save a key and its value in the database.
       */
      async _save(id, value) {
        return this._connector.save(id, JSON.stringify({ v: value }));
      }
    };
    exports2.StateDB = StateDB;
    (function(StateDB2) {
      class Connector {
        constructor() {
          this._storage = {};
        }
        /**
         * Retrieve an item from the data connector.
         */
        async fetch(id) {
          return this._storage[id];
        }
        /**
         * Retrieve the list of items available from the data connector.
         *
         * @param namespace - If not empty, only keys whose first token before `:`
         * exactly match `namespace` will be returned, e.g. `foo` in `foo:bar`.
         */
        async list(namespace = "") {
          return Object.keys(this._storage).reduce((acc, val) => {
            if (namespace === "" ? true : namespace === val.split(":")[0]) {
              acc.ids.push(val);
              acc.values.push(this._storage[val]);
            }
            return acc;
          }, { ids: [], values: [] });
        }
        /**
         * Remove a value using the data connector.
         */
        async remove(id) {
          delete this._storage[id];
        }
        /**
         * Save a value using the data connector.
         */
        async save(id, value) {
          this._storage[id] = value;
        }
      }
      StateDB2.Connector = Connector;
    })(StateDB || (exports2.StateDB = StateDB = {}));
  }
});

// ../../node_modules/@jupyterlab/statedb/lib/tokens.js
var require_tokens = __commonJS({
  "../../node_modules/@jupyterlab/statedb/lib/tokens.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.IStateDB = void 0;
    var coreutils_12 = require_index_node5();
    exports2.IStateDB = new coreutils_12.Token("@jupyterlab/coreutils:IStateDB", `A service for the JupyterLab state database.
  Use this if you want to store data that will persist across page loads.
  See "state database" for more information.`);
  }
});

// ../../node_modules/@jupyterlab/statedb/lib/index.js
var require_lib28 = __commonJS({
  "../../node_modules/@jupyterlab/statedb/lib/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __exportStar = exports2 && exports2.__exportStar || function(m2, exports3) {
      for (var p5 in m2) if (p5 !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p5)) __createBinding(exports3, m2, p5);
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    __exportStar(require_dataconnector(), exports2);
    __exportStar(require_interfaces2(), exports2);
    __exportStar(require_restorablepool(), exports2);
    __exportStar(require_statedb(), exports2);
    __exportStar(require_tokens(), exports2);
  }
});

// ../../node_modules/@jupyterlab/services/lib/setting/index.js
var require_setting = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/setting/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.SettingManager = void 0;
    var coreutils_12 = require_lib27();
    var statedb_1 = require_lib28();
    var serverconnection_1 = require_serverconnection();
    var SERVICE_SETTINGS_URL = "api/settings";
    var SettingManager = class extends statedb_1.DataConnector {
      /**
       * Create a new setting manager.
       */
      constructor(options = {}) {
        var _a6;
        super();
        this.serverSettings = (_a6 = options.serverSettings) !== null && _a6 !== void 0 ? _a6 : serverconnection_1.ServerConnection.makeSettings();
      }
      /**
       * Fetch a plugin's settings.
       *
       * @param id - The plugin's ID.
       *
       * @returns A promise that resolves if successful.
       */
      async fetch(id) {
        if (!id) {
          throw new Error("Plugin `id` parameter is required for settings fetch.");
        }
        const { serverSettings } = this;
        const { baseUrl, appUrl } = serverSettings;
        const { makeRequest, ResponseError } = serverconnection_1.ServerConnection;
        const base5 = baseUrl + appUrl;
        const url = Private.url(base5, id);
        const response = await makeRequest(url, {}, serverSettings);
        if (response.status !== 200) {
          const err = await ResponseError.create(response);
          throw err;
        }
        return response.json();
      }
      /**
       * Fetch the list of all plugin setting bundles.
       *
       * @returns A promise that resolves if successful.
       */
      async list(query) {
        var _a6, _b, _c, _d2;
        const { serverSettings } = this;
        const { baseUrl, appUrl } = serverSettings;
        const { makeRequest, ResponseError } = serverconnection_1.ServerConnection;
        const base5 = baseUrl + appUrl;
        const url = Private.url(base5, "", query === "ids");
        const response = await makeRequest(url, {}, serverSettings);
        if (response.status !== 200) {
          throw new ResponseError(response);
        }
        const json2 = await response.json();
        const ids = (_b = (_a6 = json2 === null || json2 === void 0 ? void 0 : json2["settings"]) === null || _a6 === void 0 ? void 0 : _a6.map((plugin5) => plugin5.id)) !== null && _b !== void 0 ? _b : [];
        let values = [];
        if (!query) {
          values = (_d2 = (_c = json2 === null || json2 === void 0 ? void 0 : json2["settings"]) === null || _c === void 0 ? void 0 : _c.map((plugin5) => {
            plugin5.data = { composite: {}, user: {} };
            return plugin5;
          })) !== null && _d2 !== void 0 ? _d2 : [];
        }
        return { ids, values };
      }
      /**
       * Save a plugin's settings.
       *
       * @param id - The plugin's ID.
       *
       * @param raw - The user setting values as a raw string of JSON with comments.
       *
       * @returns A promise that resolves if successful.
       */
      async save(id, raw2) {
        const { serverSettings } = this;
        const { baseUrl, appUrl } = serverSettings;
        const { makeRequest, ResponseError } = serverconnection_1.ServerConnection;
        const base5 = baseUrl + appUrl;
        const url = Private.url(base5, id);
        const init4 = { body: JSON.stringify({ raw: raw2 }), method: "PUT" };
        const response = await makeRequest(url, init4, serverSettings);
        if (response.status !== 204) {
          throw new ResponseError(response);
        }
      }
    };
    exports2.SettingManager = SettingManager;
    var Private;
    (function(Private2) {
      function url(base5, id, idsOnly) {
        const idsOnlyParam = idsOnly ? coreutils_12.URLExt.objectToQueryString({ ids_only: true }) : "";
        const settingsBase = coreutils_12.URLExt.join(base5, SERVICE_SETTINGS_URL);
        const result = coreutils_12.URLExt.join(settingsBase, id);
        if (!result.startsWith(settingsBase)) {
          throw new Error("Can only be used for workspaces requests");
        }
        return `${result}${idsOnlyParam}`;
      }
      Private2.url = url;
    })(Private || (Private = {}));
  }
});

// ../../node_modules/@jupyterlab/services/lib/terminal/restapi.js
var require_restapi4 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/terminal/restapi.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.TerminalAPIClient = exports2.TERMINAL_SERVICE_URL = void 0;
    exports2.isAvailable = isAvailable;
    exports2.startNew = startNew;
    exports2.listRunning = listRunning;
    exports2.shutdownTerminal = shutdownTerminal;
    var coreutils_12 = require_lib27();
    var serverconnection_1 = require_serverconnection();
    exports2.TERMINAL_SERVICE_URL = "api/terminals";
    function isAvailable() {
      const available = String(coreutils_12.PageConfig.getOption("terminalsAvailable"));
      return available.toLowerCase() === "true";
    }
    async function startNew(settings = serverconnection_1.ServerConnection.makeSettings(), name3, cwd2) {
      Private.errorIfNotAvailable();
      const url = coreutils_12.URLExt.join(settings.baseUrl, exports2.TERMINAL_SERVICE_URL);
      const init4 = {
        method: "POST",
        body: JSON.stringify({ name: name3, cwd: cwd2 })
      };
      const response = await serverconnection_1.ServerConnection.makeRequest(url, init4, settings);
      if (response.status !== 200) {
        const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
        throw err;
      }
      const data = await response.json();
      return data;
    }
    async function listRunning(settings = serverconnection_1.ServerConnection.makeSettings()) {
      Private.errorIfNotAvailable();
      const url = coreutils_12.URLExt.join(settings.baseUrl, exports2.TERMINAL_SERVICE_URL);
      const response = await serverconnection_1.ServerConnection.makeRequest(url, {}, settings);
      if (response.status !== 200) {
        const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
        throw err;
      }
      const data = await response.json();
      if (!Array.isArray(data)) {
        throw new Error("Invalid terminal list");
      }
      return data;
    }
    async function shutdownTerminal(name3, settings = serverconnection_1.ServerConnection.makeSettings()) {
      var _a6;
      Private.errorIfNotAvailable();
      const workspacesBase = coreutils_12.URLExt.join(settings.baseUrl, exports2.TERMINAL_SERVICE_URL);
      const url = coreutils_12.URLExt.join(workspacesBase, name3);
      if (!url.startsWith(workspacesBase)) {
        throw new Error("Can only be used for terminal requests");
      }
      const init4 = { method: "DELETE" };
      const response = await serverconnection_1.ServerConnection.makeRequest(url, init4, settings);
      if (response.status === 404) {
        const data = await response.json();
        const msg = (_a6 = data.message) !== null && _a6 !== void 0 ? _a6 : `The terminal session "${name3}"" does not exist on the server`;
        console.warn(msg);
      } else if (response.status !== 204) {
        const err = await serverconnection_1.ServerConnection.ResponseError.create(response);
        throw err;
      }
    }
    var TerminalAPIClient = class {
      /**
       * Create a new Terminal API client.
       */
      constructor(options = {}) {
        var _a6;
        this.serverSettings = (_a6 = options.serverSettings) !== null && _a6 !== void 0 ? _a6 : serverconnection_1.ServerConnection.makeSettings();
      }
      /**
       * Whether terminals are available.
       */
      get isAvailable() {
        return isAvailable();
      }
      /**
       * Start a new terminal session.
       *
       * @param options - The options used to create the terminal.
       *
       * @returns A promise that resolves with the terminal session model.
       */
      async startNew(options = {}) {
        const { name: name3, cwd: cwd2 } = options;
        return startNew(this.serverSettings, name3, cwd2);
      }
      /**
       * List the running terminal sessions.
       *
       * @returns A promise that resolves with the list of running session models.
       */
      async listRunning() {
        return listRunning(this.serverSettings);
      }
      /**
       * Shut down a terminal session by name.
       *
       * @param name - The name of the target session.
       *
       * @returns A promise that resolves when the session is shut down.
       */
      async shutdown(name3) {
        return shutdownTerminal(name3, this.serverSettings);
      }
    };
    exports2.TerminalAPIClient = TerminalAPIClient;
    var Private;
    (function(Private2) {
      function errorIfNotAvailable() {
        if (!isAvailable()) {
          throw new Error("Terminals Unavailable");
        }
      }
      Private2.errorIfNotAvailable = errorIfNotAvailable;
    })(Private || (Private = {}));
  }
});

// ../../node_modules/@jupyterlab/services/lib/terminal/terminal.js
var require_terminal = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/terminal/terminal.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.isAvailable = void 0;
    var restapi_1 = require_restapi4();
    Object.defineProperty(exports2, "isAvailable", { enumerable: true, get: function() {
      return restapi_1.isAvailable;
    } });
  }
});

// ../../node_modules/@jupyterlab/services/lib/terminal/default.js
var require_default5 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/terminal/default.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.TerminalConnection = void 0;
    var coreutils_12 = require_lib27();
    var coreutils_2 = require_index_node3();
    var signaling_1 = require_dist7();
    var __1 = require_lib29();
    var restapi_1 = require_restapi4();
    var TerminalConnection = class _TerminalConnection {
      /**
       * Construct a new terminal session.
       */
      constructor(options) {
        var _a6, _b;
        this._createSocket = () => {
          this._errorIfDisposed();
          this._clearSocket();
          this._updateConnectionStatus("connecting");
          const name3 = this._name;
          const settings = this.serverSettings;
          let url = coreutils_12.URLExt.join(settings.wsUrl, "terminals", "websocket", encodeURIComponent(name3));
          const token = settings.token;
          if (settings.appendToken && token !== "") {
            url = url + `?token=${encodeURIComponent(token)}`;
          }
          this._ws = new settings.WebSocket(url);
          this._ws.onmessage = this._onWSMessage;
          this._ws.onclose = this._onWSClose;
          this._ws.onerror = this._onWSClose;
        };
        this._onWSMessage = (event) => {
          if (this._isDisposed) {
            return;
          }
          const data = JSON.parse(event.data);
          if (data[0] === "disconnect") {
            this.dispose();
          }
          if (this._connectionStatus === "connecting") {
            if (data[0] === "setup") {
              this._updateConnectionStatus("connected");
            }
            return;
          }
          this._messageReceived.emit({
            type: data[0],
            content: data.slice(1)
          });
        };
        this._onWSClose = (event) => {
          console.warn(`Terminal websocket closed: ${event.code}`);
          if (!this.isDisposed) {
            this._reconnect();
          }
        };
        this._connectionStatus = "connecting";
        this._connectionStatusChanged = new signaling_1.Signal(this);
        this._isDisposed = false;
        this._disposed = new signaling_1.Signal(this);
        this._messageReceived = new signaling_1.Signal(this);
        this._reconnectTimeout = null;
        this._ws = null;
        this._noOp = () => {
        };
        this._reconnectLimit = 7;
        this._reconnectAttempt = 0;
        this._pendingMessages = [];
        this._name = options.model.name;
        this.serverSettings = (_a6 = options.serverSettings) !== null && _a6 !== void 0 ? _a6 : __1.ServerConnection.makeSettings();
        this._terminalAPIClient = (_b = options.terminalAPIClient) !== null && _b !== void 0 ? _b : new restapi_1.TerminalAPIClient({ serverSettings: this.serverSettings });
        this._createSocket();
      }
      /**
       * A signal emitted when the session is disposed.
       */
      get disposed() {
        return this._disposed;
      }
      /**
       * A signal emitted when a message is received from the server.
       */
      get messageReceived() {
        return this._messageReceived;
      }
      /**
       * Get the name of the terminal session.
       */
      get name() {
        return this._name;
      }
      /**
       * Get the model for the terminal session.
       */
      get model() {
        return { name: this._name };
      }
      /**
       * Test whether the session is disposed.
       */
      get isDisposed() {
        return this._isDisposed;
      }
      /**
       * Dispose of the resources held by the session.
       */
      dispose() {
        if (this._isDisposed) {
          return;
        }
        this._isDisposed = true;
        this._disposed.emit();
        this._updateConnectionStatus("disconnected");
        this._clearSocket();
        signaling_1.Signal.clearData(this);
      }
      /**
       * Send a message to the terminal session.
       *
       * #### Notes
       * If the connection is down, the message will be queued for sending when
       * the connection comes back up.
       */
      send(message) {
        this._sendMessage(message);
      }
      /**
       * Send a message on the websocket, or possibly queue for later sending.
       *
       * @param queue - whether to queue the message if it cannot be sent
       */
      _sendMessage(message, queue = true) {
        if (this._isDisposed || !message.content) {
          return;
        }
        if (this.connectionStatus === "connected" && this._ws) {
          const msg = [message.type, ...message.content];
          this._ws.send(JSON.stringify(msg));
        } else if (queue) {
          this._pendingMessages.push(message);
        } else {
          throw new Error(`Could not send message: ${JSON.stringify(message)}`);
        }
      }
      /**
       * Send pending messages to the kernel.
       */
      _sendPending() {
        while (this.connectionStatus === "connected" && this._pendingMessages.length > 0) {
          this._sendMessage(this._pendingMessages[0], false);
          this._pendingMessages.shift();
        }
      }
      /**
       * Reconnect to a terminal.
       *
       * #### Notes
       * This may try multiple times to reconnect to a terminal, and will sever
       * any existing connection.
       */
      reconnect() {
        this._errorIfDisposed();
        const result = new coreutils_2.PromiseDelegate();
        const fulfill = (sender, status) => {
          if (status === "connected") {
            result.resolve();
            this.connectionStatusChanged.disconnect(fulfill, this);
          } else if (status === "disconnected") {
            result.reject(new Error("Terminal connection disconnected"));
            this.connectionStatusChanged.disconnect(fulfill, this);
          }
        };
        this.connectionStatusChanged.connect(fulfill, this);
        this._reconnectAttempt = 0;
        this._reconnect();
        return result.promise;
      }
      /**
       * Attempt a connection if we have not exhausted connection attempts.
       */
      _reconnect() {
        this._errorIfDisposed();
        clearTimeout(this._reconnectTimeout);
        if (this._reconnectAttempt < this._reconnectLimit) {
          this._updateConnectionStatus("connecting");
          const timeout = Private.getRandomIntInclusive(0, 1e3 * (Math.pow(2, this._reconnectAttempt) - 1));
          console.error(`Connection lost, reconnecting in ${Math.floor(timeout / 1e3)} seconds.`);
          this._reconnectTimeout = setTimeout(this._createSocket, timeout);
          this._reconnectAttempt += 1;
        } else {
          this._updateConnectionStatus("disconnected");
        }
        this._clearSocket();
      }
      /**
       * Forcefully clear the socket state.
       *
       * #### Notes
       * This will clear all socket state without calling any handlers and will
       * not update the connection status. If you call this method, you are
       * responsible for updating the connection status as needed and recreating
       * the socket if you plan to reconnect.
       */
      _clearSocket() {
        if (this._ws !== null) {
          this._ws.onopen = this._noOp;
          this._ws.onclose = this._noOp;
          this._ws.onerror = this._noOp;
          this._ws.onmessage = this._noOp;
          this._ws.close();
          this._ws = null;
        }
      }
      /**
       * Shut down the terminal session.
       */
      async shutdown() {
        await this._terminalAPIClient.shutdown(this.name);
        this.dispose();
      }
      /**
       * Clone the current terminal connection.
       */
      clone() {
        return new _TerminalConnection({
          model: this.model,
          serverSettings: this.serverSettings,
          terminalAPIClient: this._terminalAPIClient
        });
      }
      /**
       * Handle connection status changes.
       */
      _updateConnectionStatus(connectionStatus) {
        if (this._connectionStatus === connectionStatus) {
          return;
        }
        this._connectionStatus = connectionStatus;
        if (connectionStatus !== "connecting") {
          this._reconnectAttempt = 0;
          clearTimeout(this._reconnectTimeout);
        }
        if (connectionStatus === "connected") {
          this._sendPending();
        }
        this._connectionStatusChanged.emit(connectionStatus);
      }
      /**
       * Utility function to throw an error if this instance is disposed.
       */
      _errorIfDisposed() {
        if (this.isDisposed) {
          throw new Error("Terminal connection is disposed");
        }
      }
      /**
       * A signal emitted when the terminal connection status changes.
       */
      get connectionStatusChanged() {
        return this._connectionStatusChanged;
      }
      /**
       * The current connection status of the terminal connection.
       */
      get connectionStatus() {
        return this._connectionStatus;
      }
    };
    exports2.TerminalConnection = TerminalConnection;
    var Private;
    (function(Private2) {
      function getRandomIntInclusive(min, max) {
        min = Math.ceil(min);
        max = Math.floor(max);
        return Math.floor(Math.random() * (max - min + 1)) + min;
      }
      Private2.getRandomIntInclusive = getRandomIntInclusive;
    })(Private || (Private = {}));
  }
});

// ../../node_modules/@jupyterlab/services/lib/terminal/manager.js
var require_manager4 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/terminal/manager.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.TerminalManager = void 0;
    var polling_1 = require_dist9();
    var signaling_1 = require_dist7();
    var __1 = require_lib29();
    var basemanager_1 = require_basemanager();
    var restapi_1 = require_restapi4();
    var default_1 = require_default5();
    var TerminalManager = class extends basemanager_1.BaseManager {
      /**
       * Construct a new terminal manager.
       */
      constructor(options = {}) {
        var _a6, _b;
        super(options);
        this._isReady = false;
        this._names = [];
        this._terminalConnections = /* @__PURE__ */ new Set();
        this._runningChanged = new signaling_1.Signal(this);
        this._connectionFailure = new signaling_1.Signal(this);
        this._terminalAPIClient = (_a6 = options.terminalAPIClient) !== null && _a6 !== void 0 ? _a6 : new restapi_1.TerminalAPIClient({ serverSettings: this.serverSettings });
        if (!this.isAvailable()) {
          this._ready = Promise.reject("Terminals unavailable");
          this._ready.catch((_2) => void 0);
          return;
        }
        this._pollModels = new polling_1.Poll({
          auto: false,
          factory: () => this.requestRunning(),
          frequency: {
            interval: 10 * 1e3,
            backoff: true,
            max: 300 * 1e3
          },
          name: `@jupyterlab/services:TerminalManager#models`,
          standby: (_b = options.standby) !== null && _b !== void 0 ? _b : "when-hidden"
        });
        this._ready = (async () => {
          await this._pollModels.start();
          await this._pollModels.tick;
          this._isReady = true;
        })();
      }
      /**
       * Test whether the manager is ready.
       */
      get isReady() {
        return this._isReady;
      }
      /**
       * A promise that fulfills when the manager is ready.
       */
      get ready() {
        return this._ready;
      }
      /**
       * A signal emitted when the running terminals change.
       */
      get runningChanged() {
        return this._runningChanged;
      }
      /**
       * A signal emitted when there is a connection failure.
       */
      get connectionFailure() {
        return this._connectionFailure;
      }
      /**
       * Dispose of the resources used by the manager.
       */
      dispose() {
        if (this.isDisposed) {
          return;
        }
        this._names.length = 0;
        this._terminalConnections.forEach((x2) => x2.dispose());
        this._pollModels.dispose();
        super.dispose();
      }
      /**
       * Whether the terminal service is available.
       */
      isAvailable() {
        return this._terminalAPIClient.isAvailable;
      }
      /*
       * Connect to a running terminal.
       *
       * @param options - The options used to connect to the terminal.
       *
       * @returns The new terminal connection instance.
       *
       * #### Notes
       * The manager `serverSettings` will be used.
       */
      connectTo(options) {
        const terminalConnection = new default_1.TerminalConnection({
          ...options,
          serverSettings: this.serverSettings,
          terminalAPIClient: this._terminalAPIClient
        });
        this._onStarted(terminalConnection);
        if (!this._names.includes(options.model.name)) {
          void this.refreshRunning().catch(() => {
          });
        }
        return terminalConnection;
      }
      /**
       * Create an iterator over the most recent running terminals.
       *
       * @returns A new iterator over the running terminals.
       */
      running() {
        return this._models[Symbol.iterator]();
      }
      /**
       * Force a refresh of the running terminals.
       *
       * @returns A promise that with the list of running terminals.
       *
       * #### Notes
       * This is intended to be called only in response to a user action,
       * since the manager maintains its internal state.
       */
      async refreshRunning() {
        await this._pollModels.refresh();
        await this._pollModels.tick;
      }
      /**
       * Create a new terminal session.
       *
       * @param options - The options used to create the terminal.
       *
       * @returns A promise that resolves with the terminal connection instance.
       *
       * #### Notes
       * The manager `serverSettings` will be used unless overridden in the
       * options.
       */
      async startNew(options = {}) {
        const { name: name3, cwd: cwd2 } = options;
        const model = await this._terminalAPIClient.startNew({
          name: name3,
          cwd: cwd2
        });
        await this.refreshRunning();
        return this.connectTo({ model });
      }
      /**
       * Shut down a terminal session by name.
       */
      async shutdown(name3) {
        await this._terminalAPIClient.shutdown(name3);
        await this.refreshRunning();
      }
      /**
       * Shut down all terminal sessions.
       *
       * @returns A promise that resolves when all of the sessions are shut down.
       */
      async shutdownAll() {
        await this.refreshRunning();
        await Promise.all(this._names.map((name3) => this._terminalAPIClient.shutdown(name3)));
        await this.refreshRunning();
      }
      /**
       * Execute a request to the server to poll running terminals and update state.
       */
      async requestRunning() {
        var _a6, _b;
        let models;
        try {
          models = await this._terminalAPIClient.listRunning();
        } catch (err) {
          if (err instanceof __1.ServerConnection.NetworkError || ((_a6 = err.response) === null || _a6 === void 0 ? void 0 : _a6.status) === 503 || ((_b = err.response) === null || _b === void 0 ? void 0 : _b.status) === 424) {
            this._connectionFailure.emit(err);
          }
          throw err;
        }
        if (this.isDisposed) {
          return;
        }
        const names = models.map(({ name: name3 }) => name3).sort();
        if (names === this._names) {
          return;
        }
        this._names = names;
        this._terminalConnections.forEach((tc) => {
          if (!names.includes(tc.name)) {
            tc.dispose();
          }
        });
        this._runningChanged.emit(this._models);
      }
      /**
       * Handle a session starting.
       */
      _onStarted(terminalConnection) {
        this._terminalConnections.add(terminalConnection);
        terminalConnection.disposed.connect(this._onDisposed, this);
      }
      /**
       * Handle a session terminating.
       */
      _onDisposed(terminalConnection) {
        this._terminalConnections.delete(terminalConnection);
        void this.refreshRunning().catch(() => {
        });
      }
      get _models() {
        return this._names.map((name3) => {
          return { name: name3 };
        });
      }
    };
    exports2.TerminalManager = TerminalManager;
    (function(TerminalManager2) {
      class NoopManager extends TerminalManager2 {
        constructor() {
          super(...arguments);
          this._readyPromise = new Promise(() => {
          });
        }
        /**
         * Whether the manager is active.
         */
        get isActive() {
          return false;
        }
        /**
         * Used for testing.
         */
        get parentReady() {
          return super.ready;
        }
        /**
         * A promise that fulfills when the manager is ready (never).
         */
        get ready() {
          return this.parentReady.then(() => this._readyPromise);
        }
        /**
         * Create a new terminal session - throw an error since it is not supported.
         *
         */
        async startNew(options) {
          return Promise.reject(new Error("Not implemented in no-op Terminal Manager"));
        }
        /*
         * Connect to a running terminal - throw an error since it is not supported.
         */
        connectTo(options) {
          throw Error("Not implemented in no-op Terminal Manager");
        }
        /**
         * Shut down a session by id - throw an error since it is not supported.
         */
        async shutdown(id) {
          return Promise.reject(new Error("Not implemented in no-op Terminal Manager"));
        }
        /**
         * Execute a request to the server to poll running sessions and update state.
         */
        async requestRunning() {
          return Promise.resolve();
        }
      }
      TerminalManager2.NoopManager = NoopManager;
    })(TerminalManager || (exports2.TerminalManager = TerminalManager = {}));
  }
});

// ../../node_modules/@jupyterlab/services/lib/terminal/index.js
var require_terminal2 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/terminal/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    }) : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports2 && exports2.__importStar || function(mod) {
      if (mod && mod.__esModule) return mod;
      var result = {};
      if (mod != null) {
        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
      }
      __setModuleDefault(result, mod);
      return result;
    };
    var __exportStar = exports2 && exports2.__exportStar || function(m2, exports3) {
      for (var p5 in m2) if (p5 !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p5)) __createBinding(exports3, m2, p5);
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.TerminalAPI = exports2.Terminal = void 0;
    var Terminal = __importStar(require_terminal());
    exports2.Terminal = Terminal;
    var TerminalAPI = __importStar(require_restapi4());
    exports2.TerminalAPI = TerminalAPI;
    __exportStar(require_manager4(), exports2);
  }
});

// ../../node_modules/@jupyterlab/services/lib/user/index.js
var require_user = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/user/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.UserManager = void 0;
    var coreutils_12 = require_lib27();
    var coreutils_2 = require_index_node3();
    var polling_1 = require_dist9();
    var signaling_1 = require_dist7();
    var serverconnection_1 = require_serverconnection();
    var basemanager_1 = require_basemanager();
    var SERVICE_USER_URL = "api/me";
    var SERVICE_ID = "@jupyterlab/services:UserManager#user";
    var UserManager = class extends basemanager_1.BaseManager {
      /**
       * Create a new user manager.
       */
      constructor(options = {}) {
        var _a6;
        super(options);
        this._isReady = false;
        this._userChanged = new signaling_1.Signal(this);
        this._connectionFailure = new signaling_1.Signal(this);
        this._ready = this.requestUser().then(() => {
          if (this.isDisposed) {
            return;
          }
          this._isReady = true;
        }).catch((_2) => (
          // Return a promise that will never resolve, so user service is never ready
          // This typically occurs when the backend has no user service
          new Promise(() => {
          })
        ));
        this._pollSpecs = new polling_1.Poll({
          auto: false,
          factory: () => this.requestUser(),
          frequency: {
            interval: 61 * 1e3,
            backoff: true,
            max: 300 * 1e3
          },
          name: SERVICE_ID,
          standby: (_a6 = options.standby) !== null && _a6 !== void 0 ? _a6 : "when-hidden"
        });
        void this.ready.then(() => {
          void this._pollSpecs.start();
        });
      }
      /**
       * Test whether the manager is ready.
       */
      get isReady() {
        return this._isReady;
      }
      /**
       * A promise that fulfills when the manager is ready.
       */
      get ready() {
        return this._ready;
      }
      /**
       * Get the most recently fetched identity.
       */
      get identity() {
        return this._identity;
      }
      /**
       * Get the most recently fetched permissions.
       */
      get permissions() {
        return this._permissions;
      }
      /**
       * A signal emitted when the user changes.
       */
      get userChanged() {
        return this._userChanged;
      }
      /**
       * A signal emitted when there is a connection failure.
       */
      get connectionFailure() {
        return this._connectionFailure;
      }
      /**
       * Dispose of the resources used by the manager.
       */
      dispose() {
        this._pollSpecs.dispose();
        super.dispose();
      }
      /**
       * Force a refresh of the specs from the server.
       *
       * @returns A promise that resolves when the specs are fetched.
       *
       * #### Notes
       * This is intended to be called only in response to a user action,
       * since the manager maintains its internal state.
       */
      async refreshUser() {
        await this._pollSpecs.refresh();
        await this._pollSpecs.tick;
      }
      /**
       * Execute a request to the server to poll the user and update state.
       */
      async requestUser() {
        if (this.isDisposed) {
          return;
        }
        const { baseUrl } = this.serverSettings;
        const { makeRequest, ResponseError } = serverconnection_1.ServerConnection;
        const url = coreutils_12.URLExt.join(baseUrl, SERVICE_USER_URL);
        const response = await makeRequest(url, {}, this.serverSettings);
        if (response.status !== 200) {
          const err = await ResponseError.create(response);
          throw err;
        }
        const oldUser = {
          identity: this._identity,
          permissions: this._permissions
        };
        const newUser = await response.json();
        const identity2 = newUser.identity;
        const { localStorage: localStorage2 } = window;
        const data = localStorage2.getItem(SERVICE_ID);
        if (data && (!identity2.initials || !identity2.color)) {
          const localUser = JSON.parse(data);
          identity2.initials = identity2.initials || localUser.initials || identity2.name.substring(0, 1);
          identity2.color = identity2.color || localUser.color || Private.getRandomColor();
        }
        if (!coreutils_2.JSONExt.deepEqual(newUser, oldUser)) {
          this._identity = identity2;
          this._permissions = newUser.permissions;
          localStorage2.setItem(SERVICE_ID, JSON.stringify(identity2));
          this._userChanged.emit(newUser);
        }
      }
    };
    exports2.UserManager = UserManager;
    var Private;
    (function(Private2) {
      const userColors = [
        "var(--jp-collaborator-color1)",
        "var(--jp-collaborator-color2)",
        "var(--jp-collaborator-color3)",
        "var(--jp-collaborator-color4)",
        "var(--jp-collaborator-color5)",
        "var(--jp-collaborator-color6)",
        "var(--jp-collaborator-color7)"
      ];
      Private2.getRandomColor = () => userColors[Math.floor(Math.random() * userColors.length)];
    })(Private || (Private = {}));
  }
});

// ../../node_modules/@jupyterlab/services/lib/workspace/index.js
var require_workspace = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/workspace/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.WorkspaceManager = void 0;
    var coreutils_12 = require_lib27();
    var statedb_1 = require_lib28();
    var serverconnection_1 = require_serverconnection();
    var SERVICE_WORKSPACES_URL = "api/workspaces";
    var WorkspaceManager = class extends statedb_1.DataConnector {
      /**
       * Create a new workspace manager.
       */
      constructor(options = {}) {
        var _a6;
        super();
        this.serverSettings = (_a6 = options.serverSettings) !== null && _a6 !== void 0 ? _a6 : serverconnection_1.ServerConnection.makeSettings();
      }
      /**
       * Fetch a workspace.
       *
       * @param id - The workspace's ID.
       *
       * @returns A promise that resolves if successful.
       */
      async fetch(id) {
        const { serverSettings } = this;
        const { baseUrl, appUrl } = serverSettings;
        const { makeRequest, ResponseError } = serverconnection_1.ServerConnection;
        const base5 = baseUrl + appUrl;
        const url = Private.url(base5, id);
        const response = await makeRequest(url, {}, serverSettings);
        if (response.status !== 200) {
          const err = await ResponseError.create(response);
          throw err;
        }
        return response.json();
      }
      /**
       * Fetch the list of workspace IDs that exist on the server.
       *
       * @returns A promise that resolves if successful.
       */
      async list() {
        const { serverSettings } = this;
        const { baseUrl, appUrl } = serverSettings;
        const { makeRequest, ResponseError } = serverconnection_1.ServerConnection;
        const base5 = baseUrl + appUrl;
        const url = Private.url(base5, "");
        const response = await makeRequest(url, {}, serverSettings);
        if (response.status !== 200) {
          const err = await ResponseError.create(response);
          throw err;
        }
        const result = await response.json();
        return result.workspaces;
      }
      /**
       * Remove a workspace from the server.
       *
       * @param id - The workspaces's ID.
       *
       * @returns A promise that resolves if successful.
       */
      async remove(id) {
        const { serverSettings } = this;
        const { baseUrl, appUrl } = serverSettings;
        const { makeRequest, ResponseError } = serverconnection_1.ServerConnection;
        const base5 = baseUrl + appUrl;
        const url = Private.url(base5, id);
        const init4 = { method: "DELETE" };
        const response = await makeRequest(url, init4, serverSettings);
        if (response.status !== 204) {
          const err = await ResponseError.create(response);
          throw err;
        }
      }
      /**
       * Save a workspace.
       *
       * @param id - The workspace's ID.
       *
       * @param workspace - The workspace being saved.
       *
       * @returns A promise that resolves if successful.
       */
      async save(id, workspace) {
        const { serverSettings } = this;
        const { baseUrl, appUrl } = serverSettings;
        const { makeRequest, ResponseError } = serverconnection_1.ServerConnection;
        const base5 = baseUrl + appUrl;
        const url = Private.url(base5, id);
        const init4 = { body: JSON.stringify(workspace), method: "PUT" };
        const response = await makeRequest(url, init4, serverSettings);
        if (response.status !== 204) {
          const err = await ResponseError.create(response);
          throw err;
        }
      }
    };
    exports2.WorkspaceManager = WorkspaceManager;
    var Private;
    (function(Private2) {
      function url(base5, id) {
        const workspacesBase = coreutils_12.URLExt.join(base5, SERVICE_WORKSPACES_URL);
        const result = coreutils_12.URLExt.join(workspacesBase, id);
        if (!result.startsWith(workspacesBase)) {
          throw new Error("Can only be used for workspaces requests");
        }
        return result;
      }
      Private2.url = url;
    })(Private || (Private = {}));
  }
});

// ../../node_modules/@jupyterlab/services/lib/manager.js
var require_manager5 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/manager.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ServiceManager = void 0;
    var signaling_1 = require_dist7();
    var builder_1 = require_builder();
    var contents_1 = require_contents();
    var event_1 = require_event();
    var kernel_1 = require_kernel2();
    var kernelspec_1 = require_kernelspec2();
    var nbconvert_1 = require_nbconvert();
    var serverconnection_1 = require_serverconnection();
    var session_1 = require_session2();
    var setting_1 = require_setting();
    var terminal_1 = require_terminal2();
    var user_1 = require_user();
    var workspace_1 = require_workspace();
    var ServiceManager = class {
      /**
       * Construct a new services provider.
       */
      constructor(options = {}) {
        var _a6, _b;
        this._isDisposed = false;
        this._connectionFailure = new signaling_1.Signal(this);
        this._isReady = false;
        const defaultDrive = options.defaultDrive;
        const serverSettings = (_a6 = options.serverSettings) !== null && _a6 !== void 0 ? _a6 : serverconnection_1.ServerConnection.makeSettings();
        const standby = (_b = options.standby) !== null && _b !== void 0 ? _b : "when-hidden";
        const normalized = { defaultDrive, serverSettings, standby };
        this.serverSettings = serverSettings;
        this.contents = options.contents || new contents_1.ContentsManager(normalized);
        this.events = options.events || new event_1.EventManager(normalized);
        this.kernels = options.kernels || new kernel_1.KernelManager(normalized);
        this.sessions = options.sessions || new session_1.SessionManager({
          ...normalized,
          kernelManager: this.kernels
        });
        this.settings = options.settings || new setting_1.SettingManager(normalized);
        this.terminals = options.terminals || new terminal_1.TerminalManager(normalized);
        this.builder = options.builder || new builder_1.BuildManager(normalized);
        this.workspaces = options.workspaces || new workspace_1.WorkspaceManager(normalized);
        this.nbconvert = options.nbconvert || new nbconvert_1.NbConvertManager(normalized);
        this.kernelspecs = options.kernelspecs || new kernelspec_1.KernelSpecManager(normalized);
        this.user = options.user || new user_1.UserManager(normalized);
        this.kernelspecs.connectionFailure.connect(this._onConnectionFailure, this);
        this.sessions.connectionFailure.connect(this._onConnectionFailure, this);
        this.terminals.connectionFailure.connect(this._onConnectionFailure, this);
        const readyList = [this.sessions.ready, this.kernelspecs.ready];
        if (this.terminals.isAvailable()) {
          readyList.push(this.terminals.ready);
        }
        this._readyPromise = Promise.all(readyList).then(() => {
          this._isReady = true;
        });
      }
      /**
       * A signal emitted when there is a connection failure with the kernel.
       */
      get connectionFailure() {
        return this._connectionFailure;
      }
      /**
       * Test whether the service manager is disposed.
       */
      get isDisposed() {
        return this._isDisposed;
      }
      /**
       * Dispose of the resources used by the manager.
       */
      dispose() {
        if (this.isDisposed) {
          return;
        }
        this._isDisposed = true;
        signaling_1.Signal.clearData(this);
        this.contents.dispose();
        this.events.dispose();
        this.sessions.dispose();
        this.terminals.dispose();
      }
      /**
       * Test whether the manager is ready.
       */
      get isReady() {
        return this._isReady;
      }
      /**
       * A promise that fulfills when the manager is ready.
       */
      get ready() {
        return this._readyPromise;
      }
      _onConnectionFailure(sender, err) {
        this._connectionFailure.emit(err);
      }
    };
    exports2.ServiceManager = ServiceManager;
  }
});

// ../../node_modules/@jupyterlab/services/lib/tokens.js
var require_tokens2 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/tokens.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.IWorkspaceManager = exports2.IUserManager = exports2.ITerminalManager = exports2.IServiceManager = exports2.ISettingManager = exports2.ISessionManager = exports2.IServerSettings = exports2.INbConvertManager = exports2.IKernelSpecManager = exports2.IKernelManager = exports2.IEventManager = exports2.IDefaultDrive = exports2.IContentsManager = exports2.IConfigSectionManager = exports2.IConnectionStatus = void 0;
    var coreutils_12 = require_index_node3();
    exports2.IConnectionStatus = new coreutils_12.Token("@jupyterlab/application:IConnectionStatus", "A service providing the application connection status.");
    exports2.IConfigSectionManager = new coreutils_12.Token("@jupyterlab/services:IConfigSectionManager", "A service providing the config section manager.");
    exports2.IContentsManager = new coreutils_12.Token("@jupyterlab/services:IContentsManager", "The contents manager token.");
    exports2.IDefaultDrive = new coreutils_12.Token("@jupyterlab/services:IDefaultDrive", "The default drive for the contents manager.");
    exports2.IEventManager = new coreutils_12.Token("@jupyterlab/services:IEventManager", "The event manager token.");
    exports2.IKernelManager = new coreutils_12.Token("@jupyterlab/services:IKernelManager", "The kernel manager token.");
    exports2.IKernelSpecManager = new coreutils_12.Token("@jupyterlab/services:IKernelSpecManager", "The kernel spec manager token.");
    exports2.INbConvertManager = new coreutils_12.Token("@jupyterlab/services:INbConvertManager", "The nbconvert manager token.");
    exports2.IServerSettings = new coreutils_12.Token("@jupyterlab/services:IServerSettings", "The server settings for the application.");
    exports2.ISessionManager = new coreutils_12.Token("@jupyterlab/services:ISessionManager", "The session manager token.");
    exports2.ISettingManager = new coreutils_12.Token("@jupyterlab/services:ISettingManager", "The setting manager token.");
    exports2.IServiceManager = new coreutils_12.Token("@jupyterlab/services:IServiceManager", "The service manager for the application.");
    exports2.ITerminalManager = new coreutils_12.Token("@jupyterlab/services:ITerminalManager", "The terminal manager token.");
    exports2.IUserManager = new coreutils_12.Token("@jupyterlab/services:IUserManager", "The user manager token.");
    exports2.IWorkspaceManager = new coreutils_12.Token("@jupyterlab/services:IWorkspaceManager", "The workspace manager token.");
  }
});

// ../../node_modules/@jupyterlab/services/lib/index.js
var require_lib29 = __commonJS({
  "../../node_modules/@jupyterlab/services/lib/index.js"(exports2) {
    "use strict";
    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m2, k);
      if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m2[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    }) : (function(o, m2, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m2[k];
    }));
    var __exportStar = exports2 && exports2.__exportStar || function(m2, exports3) {
      for (var p5 in m2) if (p5 !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p5)) __createBinding(exports3, m2, p5);
    };
    Object.defineProperty(exports2, "__esModule", { value: true });
    __exportStar(require_basemanager(), exports2);
    __exportStar(require_config5(), exports2);
    __exportStar(require_connectionstatus(), exports2);
    __exportStar(require_contents(), exports2);
    __exportStar(require_event(), exports2);
    __exportStar(require_kernel2(), exports2);
    __exportStar(require_kernelspec2(), exports2);
    __exportStar(require_manager5(), exports2);
    __exportStar(require_serverconnection(), exports2);
    __exportStar(require_session2(), exports2);
    __exportStar(require_setting(), exports2);
    __exportStar(require_terminal2(), exports2);
    __exportStar(require_tokens2(), exports2);
    __exportStar(require_user(), exports2);
    __exportStar(require_workspace(), exports2);
    __exportStar(require_nbconvert(), exports2);
  }
});

// src/index.ts
var import_actual = __toESM(require_actual(), 1);

// ../../node_modules/commander/esm.mjs
var import_index = __toESM(require_commander(), 1);
var {
  program,
  createCommand,
  createArgument,
  createOption,
  CommanderError,
  InvalidArgumentError,
  InvalidOptionArgumentError,
  // deprecated old name
  Command,
  Argument,
  Option,
  Help
} = import_index.default;

// src/version.ts
var version = "1.6.5";
var version_default = version;

// ../myst-cli/dist/build/build.js
var import_node_path58 = __toESM(require("path"), 1);

// ../myst-cli/node_modules/chalk/source/vendor/ansi-styles/index.js
var ANSI_BACKGROUND_OFFSET = 10;
var wrapAnsi16 = (offset = 0) => (code7) => `\x1B[${code7 + offset}m`;
var wrapAnsi256 = (offset = 0) => (code7) => `\x1B[${38 + offset};5;${code7}m`;
var wrapAnsi16m = (offset = 0) => (red, green, blue) => `\x1B[${38 + offset};2;${red};${green};${blue}m`;
var styles = {
  modifier: {
    reset: [0, 0],
    // 21 isn't widely supported and 22 does the same thing
    bold: [1, 22],
    dim: [2, 22],
    italic: [3, 23],
    underline: [4, 24],
    overline: [53, 55],
    inverse: [7, 27],
    hidden: [8, 28],
    strikethrough: [9, 29]
  },
  color: {
    black: [30, 39],
    red: [31, 39],
    green: [32, 39],
    yellow: [33, 39],
    blue: [34, 39],
    magenta: [35, 39],
    cyan: [36, 39],
    white: [37, 39],
    // Bright color
    blackBright: [90, 39],
    gray: [90, 39],
    // Alias of `blackBright`
    grey: [90, 39],
    // Alias of `blackBright`
    redBright: [91, 39],
    greenBright: [92, 39],
    yellowBright: [93, 39],
    blueBright: [94, 39],
    magentaBright: [95, 39],
    cyanBright: [96, 39],
    whiteBright: [97, 39]
  },
  bgColor: {
    bgBlack: [40, 49],
    bgRed: [41, 49],
    bgGreen: [42, 49],
    bgYellow: [43, 49],
    bgBlue: [44, 49],
    bgMagenta: [45, 49],
    bgCyan: [46, 49],
    bgWhite: [47, 49],
    // Bright color
    bgBlackBright: [100, 49],
    bgGray: [100, 49],
    // Alias of `bgBlackBright`
    bgGrey: [100, 49],
    // Alias of `bgBlackBright`
    bgRedBright: [101, 49],
    bgGreenBright: [102, 49],
    bgYellowBright: [103, 49],
    bgBlueBright: [104, 49],
    bgMagentaBright: [105, 49],
    bgCyanBright: [106, 49],
    bgWhiteBright: [107, 49]
  }
};
var modifierNames = Object.keys(styles.modifier);
var foregroundColorNames = Object.keys(styles.color);
var backgroundColorNames = Object.keys(styles.bgColor);
var colorNames = [...foregroundColorNames, ...backgroundColorNames];
function assembleStyles() {
  const codes = /* @__PURE__ */ new Map();
  for (const [groupName, group3] of Object.entries(styles)) {
    for (const [styleName, style3] of Object.entries(group3)) {
      styles[styleName] = {
        open: `\x1B[${style3[0]}m`,
        close: `\x1B[${style3[1]}m`
      };
      group3[styleName] = styles[styleName];
      codes.set(style3[0], style3[1]);
    }
    Object.defineProperty(styles, groupName, {
      value: group3,
      enumerable: false
    });
  }
  Object.defineProperty(styles, "codes", {
    value: codes,
    enumerable: false
  });
  styles.color.close = "\x1B[39m";
  styles.bgColor.close = "\x1B[49m";
  styles.color.ansi = wrapAnsi16();
  styles.color.ansi256 = wrapAnsi256();
  styles.color.ansi16m = wrapAnsi16m();
  styles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);
  styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);
  styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
  Object.defineProperties(styles, {
    rgbToAnsi256: {
      value(red, green, blue) {
        if (red === green && green === blue) {
          if (red < 8) {
            return 16;
          }
          if (red > 248) {
            return 231;
          }
          return Math.round((red - 8) / 247 * 24) + 232;
        }
        return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
      },
      enumerable: false
    },
    hexToRgb: {
      value(hex) {
        const matches4 = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
        if (!matches4) {
          return [0, 0, 0];
        }
        let [colorString] = matches4;
        if (colorString.length === 3) {
          colorString = [...colorString].map((character) => character + character).join("");
        }
        const integer = Number.parseInt(colorString, 16);
        return [
          /* eslint-disable no-bitwise */
          integer >> 16 & 255,
          integer >> 8 & 255,
          integer & 255
          /* eslint-enable no-bitwise */
        ];
      },
      enumerable: false
    },
    hexToAnsi256: {
      value: (hex) => styles.rgbToAnsi256(...styles.hexToRgb(hex)),
      enumerable: false
    },
    ansi256ToAnsi: {
      value(code7) {
        if (code7 < 8) {
          return 30 + code7;
        }
        if (code7 < 16) {
          return 90 + (code7 - 8);
        }
        let red;
        let green;
        let blue;
        if (code7 >= 232) {
          red = ((code7 - 232) * 10 + 8) / 255;
          green = red;
          blue = red;
        } else {
          code7 -= 16;
          const remainder = code7 % 36;
          red = Math.floor(code7 / 36) / 5;
          green = Math.floor(remainder / 6) / 5;
          blue = remainder % 6 / 5;
        }
        const value = Math.max(red, green, blue) * 2;
        if (value === 0) {
          return 30;
        }
        let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
        if (value === 2) {
          result += 60;
        }
        return result;
      },
      enumerable: false
    },
    rgbToAnsi: {
      value: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),
      enumerable: false
    },
    hexToAnsi: {
      value: (hex) => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),
      enumerable: false
    }
  });
  return styles;
}
var ansiStyles = assembleStyles();
var ansi_styles_default = ansiStyles;

// ../myst-cli/node_modules/chalk/source/vendor/supports-color/index.js
var import_node_process = __toESM(require("process"), 1);
var import_node_os = __toESM(require("os"), 1);
var import_node_tty = __toESM(require("tty"), 1);
function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : import_node_process.default.argv) {
  const prefix2 = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
  const position6 = argv.indexOf(prefix2 + flag);
  const terminatorPosition = argv.indexOf("--");
  return position6 !== -1 && (terminatorPosition === -1 || position6 < terminatorPosition);
}
var { env } = import_node_process.default;
var flagForceColor;
if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
  flagForceColor = 0;
} else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
  flagForceColor = 1;
}
function envForceColor() {
  if ("FORCE_COLOR" in env) {
    if (env.FORCE_COLOR === "true") {
      return 1;
    }
    if (env.FORCE_COLOR === "false") {
      return 0;
    }
    return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);
  }
}
function translateLevel(level) {
  if (level === 0) {
    return false;
  }
  return {
    level,
    hasBasic: true,
    has256: level >= 2,
    has16m: level >= 3
  };
}
function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
  const noFlagForceColor = envForceColor();
  if (noFlagForceColor !== void 0) {
    flagForceColor = noFlagForceColor;
  }
  const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
  if (forceColor === 0) {
    return 0;
  }
  if (sniffFlags) {
    if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
      return 3;
    }
    if (hasFlag("color=256")) {
      return 2;
    }
  }
  if ("TF_BUILD" in env && "AGENT_NAME" in env) {
    return 1;
  }
  if (haveStream && !streamIsTTY && forceColor === void 0) {
    return 0;
  }
  const min = forceColor || 0;
  if (env.TERM === "dumb") {
    return min;
  }
  if (import_node_process.default.platform === "win32") {
    const osRelease = import_node_os.default.release().split(".");
    if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
      return Number(osRelease[2]) >= 14931 ? 3 : 2;
    }
    return 1;
  }
  if ("CI" in env) {
    if ("GITHUB_ACTIONS" in env || "GITEA_ACTIONS" in env) {
      return 3;
    }
    if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) || env.CI_NAME === "codeship") {
      return 1;
    }
    return min;
  }
  if ("TEAMCITY_VERSION" in env) {
    return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
  }
  if (env.COLORTERM === "truecolor") {
    return 3;
  }
  if (env.TERM === "xterm-kitty") {
    return 3;
  }
  if ("TERM_PROGRAM" in env) {
    const version4 = Number.parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
    switch (env.TERM_PROGRAM) {
      case "iTerm.app": {
        return version4 >= 3 ? 3 : 2;
      }
      case "Apple_Terminal": {
        return 2;
      }
    }
  }
  if (/-256(color)?$/i.test(env.TERM)) {
    return 2;
  }
  if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
    return 1;
  }
  if ("COLORTERM" in env) {
    return 1;
  }
  return min;
}
function createSupportsColor(stream3, options = {}) {
  const level = _supportsColor(stream3, {
    streamIsTTY: stream3 && stream3.isTTY,
    ...options
  });
  return translateLevel(level);
}
var supportsColor = {
  stdout: createSupportsColor({ isTTY: import_node_tty.default.isatty(1) }),
  stderr: createSupportsColor({ isTTY: import_node_tty.default.isatty(2) })
};
var supports_color_default = supportsColor;

// ../myst-cli/node_modules/chalk/source/utilities.js
function stringReplaceAll(string2, substring, replacer) {
  let index4 = string2.indexOf(substring);
  if (index4 === -1) {
    return string2;
  }
  const substringLength = substring.length;
  let endIndex = 0;
  let returnValue = "";
  do {
    returnValue += string2.slice(endIndex, index4) + substring + replacer;
    endIndex = index4 + substringLength;
    index4 = string2.indexOf(substring, endIndex);
  } while (index4 !== -1);
  returnValue += string2.slice(endIndex);
  return returnValue;
}
function stringEncaseCRLFWithFirstIndex(string2, prefix2, postfix, index4) {
  let endIndex = 0;
  let returnValue = "";
  do {
    const gotCR = string2[index4 - 1] === "\r";
    returnValue += string2.slice(endIndex, gotCR ? index4 - 1 : index4) + prefix2 + (gotCR ? "\r\n" : "\n") + postfix;
    endIndex = index4 + 1;
    index4 = string2.indexOf("\n", endIndex);
  } while (index4 !== -1);
  returnValue += string2.slice(endIndex);
  return returnValue;
}

// ../myst-cli/node_modules/chalk/source/index.js
var { stdout: stdoutColor, stderr: stderrColor } = supports_color_default;
var GENERATOR = Symbol("GENERATOR");
var STYLER = Symbol("STYLER");
var IS_EMPTY = Symbol("IS_EMPTY");
var levelMapping = [
  "ansi",
  "ansi",
  "ansi256",
  "ansi16m"
];
var styles2 = /* @__PURE__ */ Object.create(null);
var applyOptions = (object, options = {}) => {
  if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
    throw new Error("The `level` option should be an integer from 0 to 3");
  }
  const colorLevel = stdoutColor ? stdoutColor.level : 0;
  object.level = options.level === void 0 ? colorLevel : options.level;
};
var chalkFactory = (options) => {
  const chalk6 = (...strings) => strings.join(" ");
  applyOptions(chalk6, options);
  Object.setPrototypeOf(chalk6, createChalk.prototype);
  return chalk6;
};
function createChalk(options) {
  return chalkFactory(options);
}
Object.setPrototypeOf(createChalk.prototype, Function.prototype);
for (const [styleName, style3] of Object.entries(ansi_styles_default)) {
  styles2[styleName] = {
    get() {
      const builder = createBuilder(this, createStyler(style3.open, style3.close, this[STYLER]), this[IS_EMPTY]);
      Object.defineProperty(this, styleName, { value: builder });
      return builder;
    }
  };
}
styles2.visible = {
  get() {
    const builder = createBuilder(this, this[STYLER], true);
    Object.defineProperty(this, "visible", { value: builder });
    return builder;
  }
};
var getModelAnsi = (model, level, type2, ...arguments_) => {
  if (model === "rgb") {
    if (level === "ansi16m") {
      return ansi_styles_default[type2].ansi16m(...arguments_);
    }
    if (level === "ansi256") {
      return ansi_styles_default[type2].ansi256(ansi_styles_default.rgbToAnsi256(...arguments_));
    }
    return ansi_styles_default[type2].ansi(ansi_styles_default.rgbToAnsi(...arguments_));
  }
  if (model === "hex") {
    return getModelAnsi("rgb", level, type2, ...ansi_styles_default.hexToRgb(...arguments_));
  }
  return ansi_styles_default[type2][model](...arguments_);
};
var usedModels = ["rgb", "hex", "ansi256"];
for (const model of usedModels) {
  styles2[model] = {
    get() {
      const { level } = this;
      return function(...arguments_) {
        const styler = createStyler(getModelAnsi(model, levelMapping[level], "color", ...arguments_), ansi_styles_default.color.close, this[STYLER]);
        return createBuilder(this, styler, this[IS_EMPTY]);
      };
    }
  };
  const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
  styles2[bgModel] = {
    get() {
      const { level } = this;
      return function(...arguments_) {
        const styler = createStyler(getModelAnsi(model, levelMapping[level], "bgColor", ...arguments_), ansi_styles_default.bgColor.close, this[STYLER]);
        return createBuilder(this, styler, this[IS_EMPTY]);
      };
    }
  };
}
var proto = Object.defineProperties(() => {
}, {
  ...styles2,
  level: {
    enumerable: true,
    get() {
      return this[GENERATOR].level;
    },
    set(level) {
      this[GENERATOR].level = level;
    }
  }
});
var createStyler = (open2, close2, parent2) => {
  let openAll;
  let closeAll;
  if (parent2 === void 0) {
    openAll = open2;
    closeAll = close2;
  } else {
    openAll = parent2.openAll + open2;
    closeAll = close2 + parent2.closeAll;
  }
  return {
    open: open2,
    close: close2,
    openAll,
    closeAll,
    parent: parent2
  };
};
var createBuilder = (self2, _styler, _isEmpty) => {
  const builder = (...arguments_) => applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
  Object.setPrototypeOf(builder, proto);
  builder[GENERATOR] = self2;
  builder[STYLER] = _styler;
  builder[IS_EMPTY] = _isEmpty;
  return builder;
};
var applyStyle = (self2, string2) => {
  if (self2.level <= 0 || !string2) {
    return self2[IS_EMPTY] ? "" : string2;
  }
  let styler = self2[STYLER];
  if (styler === void 0) {
    return string2;
  }
  const { openAll, closeAll } = styler;
  if (string2.includes("\x1B")) {
    while (styler !== void 0) {
      string2 = stringReplaceAll(string2, styler.close, styler.open);
      styler = styler.parent;
    }
  }
  const lfIndex = string2.indexOf("\n");
  if (lfIndex !== -1) {
    string2 = stringEncaseCRLFWithFirstIndex(string2, closeAll, openAll, lfIndex);
  }
  return openAll + string2 + closeAll;
};
Object.defineProperties(createChalk.prototype, styles2);
var chalk = createChalk();
var chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });
var source_default = chalk;

// ../simple-validators/dist/validators.js
function defined(val) {
  return val != null;
}
function locationSuffix(opts) {
  if (opts.file && opts.location)
    return ` (at ${opts.file}#${opts.location})`;
  if (opts.file || opts.location)
    return ` (at ${opts.file || opts.location})`;
  return "";
}
function incrementOptions(property, opts) {
  let location4 = opts.property;
  if (opts.location)
    location4 = `${opts.location}.${opts.property}`;
  return { ...opts, property, location: location4 };
}
function validationError(message, opts) {
  if (opts.suppressErrors)
    return void 0;
  const { messages } = opts;
  if (!messages.errors)
    messages.errors = [];
  const fullMessage = `'${opts.property}' ${message}${locationSuffix(opts)}`;
  messages.errors.push({
    property: opts.property,
    message: fullMessage
  });
  if (opts.errorLogFn)
    opts.errorLogFn(fullMessage);
  return void 0;
}
function validationWarning(message, opts) {
  if (opts.suppressWarnings)
    return void 0;
  const { messages } = opts;
  if (!messages.warnings)
    messages.warnings = [];
  const fullMessage = `'${opts.property}' ${message}${locationSuffix(opts)}`;
  messages.warnings.push({
    property: opts.property,
    message: fullMessage
  });
  if (opts.warningLogFn)
    opts.warningLogFn(fullMessage);
  return void 0;
}
function validateBoolean(input3, opts) {
  if (typeof input3 === "string") {
    if (input3.toLowerCase() === "true")
      return true;
    if (input3.toLowerCase() === "false")
      return false;
  }
  if (input3 === true || input3 === false)
    return input3;
  return validationError("must be boolean", opts);
}
function validateNumber(input3, opts) {
  const value = Number(input3);
  if (Number.isNaN(value)) {
    return validationError(`must be a number: ${input3}`, opts);
  }
  if (defined(opts.min) && value < opts.min) {
    return validationError(`must be greater than or equal to ${opts.min}: ${value}`, opts);
  }
  if (defined(opts.max) && value > opts.max) {
    return validationError(`must be less than or equal to ${opts.max}: ${value}`, opts);
  }
  if (opts.integer && !Number.isInteger(value)) {
    return validationError(`must be an integer: ${value}`, opts);
  }
  return value;
}
function validateString(input3, opts) {
  let value = input3;
  if (opts.coerceNumber && typeof value === "number") {
    if (Number.isNaN(value))
      validationWarning("is not a number", opts);
    value = String(value);
  }
  if (typeof value !== "string")
    return validationError(`must be string`, opts);
  if (opts.minLength && value.length < opts.minLength) {
    return validationError(`must be greater than ${opts.minLength} chars`, opts);
  }
  if (opts.maxLength && value.length > opts.maxLength) {
    return validationError(`must be less than ${opts.maxLength} chars`, opts);
  }
  if (opts.regex && !value.match(opts.regex)) {
    return validationError(`must match regex ${opts.regex}`, opts);
  }
  if (opts.escapeFn) {
    value = opts.escapeFn(value);
  }
  return value;
}
function validateUrl(input3, opts) {
  const value = validateString(input3, { ...opts, maxLength: 2048 });
  if (value === void 0)
    return value;
  let url;
  try {
    url = new URL(value);
  } catch {
    return validationError(`must be valid URL: ${value}`, opts);
  }
  if (opts.includes && !url.origin.includes(opts.includes)) {
    return validationError(`must include "${opts.includes}": ${value}`, opts);
  }
  return value;
}
function validateDomain(input3, opts) {
  let value = validateString(input3, { ...opts, maxLength: 2048 });
  if (value === void 0)
    return value;
  if (!value.startsWith("https://") && !value.startsWith("http://")) {
    value = `http://${value}`;
  }
  let url;
  try {
    url = new URL(value);
  } catch {
    return validationError(`domain must be valid when used as a URL: ${input3}`, opts);
  }
  const { hash, host, pathname, protocol, search: search4 } = url;
  if (protocol !== "http:" && protocol !== "https:") {
    return validationError(`must have http/https protocol or no protocol: ${input3}`, opts);
  }
  if (pathname && pathname !== "/" || hash || search4) {
    return validationError(`must not specify path, query, or fragment: ${input3}`, opts);
  }
  const numParts = host.split(".").length;
  if (opts.minParts !== void 0 && opts.minParts > numParts)
    return validationError(`must have at least ${opts.minParts} parts: ${input3}`, opts);
  if (opts.maxParts !== void 0 && opts.maxParts < numParts)
    return validationError(`must have at most ${opts.minParts} parts: ${input3}`, opts);
  return host.toLowerCase();
}
function validateSubdomain(input3, opts) {
  return validateDomain(input3, { ...opts, minParts: 3 });
}
function validateEmail(input3, opts) {
  const value = validateString(input3, opts);
  if (value === void 0)
    return value;
  const valid2 = value.toLowerCase().match(/^(([^<>()[\]\\.,;:\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,}))$/);
  if (!valid2) {
    return validationError(`must be valid email address: ${value}`, opts);
  }
  return value;
}
function validateChoice(input3, opts) {
  if (!opts.choices.includes(input3)) {
    return validationError(`invalid value '${input3}' - must be one of [${opts.choices.join(", ")}]`, opts);
  }
  return input3;
}
function validateEnum(input3, opts) {
  if (!Object.values(opts.enum).includes(input3)) {
    return validationError(`invalid value '${input3}' - must be one of [${Object.values(opts.enum).join(", ")}]`, opts);
  }
  return input3;
}
var ISO8601_DATE_PATTERN = /^(\d\d\d\d)(?:-(\d\d))?(?:-(\d\d))?(T.*)?$/;
var RFC2822_DATE_PATTERN = /^(?:(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\d\d\d)\s*([^\s].*)?$/;
var MONTH_TO_NUMBER = new Map(["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"].map((elem, index4) => [elem, index4 + 1]));
function buildISO8601DateString(year, month, day) {
  const paddedMonth = `${month}`.padStart(2, "0");
  const paddedDay = `${day}`.padStart(2, "0");
  return `${year}-${paddedMonth}-${paddedDay}`;
}
function dateErrorString(input3) {
  return `invalid date "${input3}" - must be a full date "YYYY-MM-DD" (ISO 8601) or calendar date "Sat, 1 Jan 2000" (RFC 2822)`;
}
function revalidateDate(input3, result, opts) {
  const validated = validateDate(new Date(result), {
    ...opts,
    suppressErrors: true,
    suppressWarnings: true
  });
  if (validated !== result) {
    return validationError(dateErrorString(input3), opts);
  }
  return result;
}
function validateDate(input3, opts) {
  if (typeof input3 === "string") {
    let match3 = input3.match(ISO8601_DATE_PATTERN);
    if (match3) {
      const [year, month, day, tail] = match3.slice(1, 5);
      if (tail !== void 0) {
        validationWarning(`Date "${input3}" should not include a time component ("${tail}"), which has been ignored`, opts);
      }
      const result2 = [year, month !== null && month !== void 0 ? month : "01", day !== null && day !== void 0 ? day : "01"].join("-");
      if (month === void 0 || day === void 0) {
        validationWarning(`non-standard date "${input3}": interpreting date as "${result2}".
Please use a full date "YYYY-MM-DD" (ISO 8601).`, opts);
      }
      return revalidateDate(input3, result2, opts);
    }
    match3 = input3.match(RFC2822_DATE_PATTERN);
    if (match3) {
      const [day, month, year, tail] = match3.slice(2, 6);
      if (tail !== void 0) {
        validationWarning(`Date "${input3}" should not include a time component ("${tail}"), which has been ignored`, opts);
      }
      const numericYear = parseInt(year);
      const numericMonth = MONTH_TO_NUMBER.get(month);
      const numericDay = parseInt(day);
      const result2 = buildISO8601DateString(numericYear, numericMonth, numericDay);
      return revalidateDate(input3, result2, opts);
    }
    const parsed = Date.parse(input3);
    if (isNaN(parsed)) {
      return validationError(dateErrorString(input3), opts);
    }
    const localDate = new Date(parsed);
    const result = buildISO8601DateString(localDate.getFullYear(), localDate.getMonth() + 1, localDate.getDate());
    validationWarning(`non-standard date "${input3}": interpreting date as "${result}".
Please use a full date "YYYY-MM-DD" (ISO 8601).`, opts);
    return result;
  } else if (input3 instanceof Date) {
    return opts.dateIsLocal ? buildISO8601DateString(input3.getFullYear(), input3.getMonth() + 1, input3.getDate()) : buildISO8601DateString(input3.getUTCFullYear(), input3.getUTCMonth() + 1, input3.getUTCDate());
  } else {
    return validationError(dateErrorString(input3), opts);
  }
}
function validateObject(input3, opts) {
  if (typeof input3 !== "object")
    return validationError(`must be object`, opts);
  if (Array.isArray(input3))
    return validationError(`must be object, not array`, opts);
  return input3;
}
function validateKeys(input3, keys2, opts) {
  var _a6;
  const value = {};
  let required = keys2.required || [];
  const optional = keys2.optional || [];
  const aliasKeys = Object.entries((_a6 = keys2.alias) !== null && _a6 !== void 0 ? _a6 : {}).filter((alias) => required.includes(alias[1]) || optional.includes(alias[1])).map((alias) => alias[0]);
  const ignored = [];
  Object.keys(input3).forEach((k) => {
    var _a7;
    if (required.includes(k) || optional.includes(k)) {
      value[k] = input3[k];
      required = required.filter((val) => val !== k);
    } else if (aliasKeys.includes(k)) {
      const normalized = (_a7 = keys2.alias) === null || _a7 === void 0 ? void 0 : _a7[k];
      if (input3[normalized] === void 0) {
        value[normalized] = input3[k];
        required = required.filter((val) => val !== normalized);
      } else {
        validationWarning(`both "${normalized}" and "${k}" were provided, "${k}" was ignored.`, opts);
      }
    } else {
      ignored.push(k);
      if (opts.keepExtraKeys)
        value[k] = input3[k];
    }
  });
  if (required.length) {
    validationError(`missing required key${required.length > 1 ? "s" : ""}: ${required.join(", ")}`, opts);
    if (!opts.returnInvalidPartial)
      return void 0;
  }
  if (ignored.length) {
    validationWarning(`extra key${ignored.length > 1 ? "s" : ""} ignored: ${ignored.join(", ")}`, opts);
  }
  return value;
}
function validateObjectKeys(input3, keys2, opts) {
  const value = validateObject(input3, opts);
  if (value === void 0)
    return void 0;
  return validateKeys(value, keys2, opts);
}
function validateList(input3, opts, itemValidator) {
  let value;
  if (Array.isArray(input3)) {
    value = input3;
  } else if (opts.coerce) {
    value = [input3];
  } else {
    return validationError("must be an array", opts);
  }
  return value.map((item, index4) => itemValidator(item, index4)).filter((item) => item !== void 0);
}
function fillMissingKeys(base5, filler, keys2) {
  const output2 = { ...base5 };
  keys2.forEach((key2) => {
    if (!defined(output2[key2]) && defined(filler[key2])) {
      const k = key2;
      output2[k] = filler[k];
    }
  });
  return output2;
}
function filterKeys(value, keys2) {
  return fillMissingKeys({}, value, keys2);
}

// ../myst-frontmatter/dist/utils/normalizeString.js
function normalizeJsonToString(value) {
  return JSON.stringify(Object.entries(value).filter(([, val]) => val !== void 0).sort());
}

// ../myst-frontmatter/dist/utils/referenceStash.js
function pseudoUniqueId(kind, index4, file) {
  let suffix = "";
  if (file) {
    const fileParts = file.replace("\\", "/").split("/");
    const nameParts = fileParts[fileParts.length - 1].split(".");
    if (nameParts.length === 1) {
      suffix = `-${nameParts[0]}`;
    } else {
      suffix = `-${nameParts.slice(0, nameParts.length - 1).join("-")}`;
    }
  }
  return `${kind}${suffix}-generated-uid-${index4}`;
}
function stashPlaceholder(value) {
  return { id: value, name: value };
}
function isStashPlaceholder(object) {
  var _a6;
  if (!object.name || !object.id || object.name !== object.id)
    return false;
  const nKeys = Object.keys(object).length;
  if (nKeys === 2)
    return true;
  return nKeys === 3 && ((_a6 = object.nameParsed) === null || _a6 === void 0 ? void 0 : _a6.literal) === object.id;
}
function validateAndStashObject(input3, stash, kind, validateFn, opts) {
  var _a6, _b, _c;
  const lookup2 = {};
  const lookupNorm2Id = {};
  (_a6 = stash[kind]) === null || _a6 === void 0 ? void 0 : _a6.forEach((item) => {
    if (item.id) {
      lookup2[item.id] = item;
      lookupNorm2Id[normalizeJsonToString({ ...item, id: void 0 })] = item.id;
    }
  });
  if (typeof input3 === "string" && Object.keys(lookup2).includes(input3)) {
    return input3;
  }
  const value = validateFn(input3, opts);
  if (!value)
    return;
  let warnOnDuplicate = !isStashPlaceholder(value);
  if (!value.id) {
    if (lookupNorm2Id[normalizeJsonToString(value)]) {
      value.id = lookupNorm2Id[normalizeJsonToString(value)];
      warnOnDuplicate = false;
    } else {
      value.id = pseudoUniqueId(kind, (_c = (_b = stash[kind]) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0, opts.file);
    }
  }
  if (!Object.keys(lookup2).includes(value.id)) {
    lookup2[value.id] = value;
  } else if (isStashPlaceholder(lookup2[value.id])) {
    lookup2[value.id] = value;
  } else if (warnOnDuplicate) {
    validationWarning(`duplicate id for ${kind} found in frontmatter: ${value.id}`, opts);
  }
  stash[kind] = Object.values(lookup2);
  return value.id;
}

// ../../node_modules/doi-utils/dist/validatePart.js
var DOI_VALIDATION_PATTERN = /^10\.\d{4,9}\/[-._;()/:A-Z0-9]+$/i;
function validatePart(possibleDOI) {
  if (!possibleDOI)
    return false;
  return possibleDOI.match(DOI_VALIDATION_PATTERN) !== null;
}

// ../../node_modules/doi-utils/dist/resolvers.js
var doiOrg = {
  test(url) {
    return !!url.hostname.match(/(?:dx\.)?(?:www\.)?doi\.org/);
  },
  parse(url) {
    return url.pathname.replace(/^\//, "");
  }
};
var elife = {
  test(url) {
    return url.hostname.endsWith("elifesciences.org") && /^\/(?:articles|reviewed-preprints)\/\d+$/.test(url.pathname);
  },
  parse(url) {
    return `10.7554/eLife.${url.pathname.replace(/^\/(?:articles|reviewed-preprints)\//, "")}`;
  }
};
var zenodo = {
  test(url) {
    return url.hostname.endsWith("zenodo.org") && !!url.pathname.match(/^\/(?:record|badge\/latestdoi)\//);
  },
  parse(url) {
    return `10.5281/zenodo.${url.pathname.replace(/^\/(?:record|badge\/latestdoi)\//, "")}`;
  }
};
var biorxiv = {
  test(url) {
    return url.hostname.endsWith("biorxiv.org") && !!clumpParts(url).find(validatePart);
  },
  parse(url) {
    var _a6;
    return (_a6 = clumpParts(url).find(validatePart)) === null || _a6 === void 0 ? void 0 : _a6.replace(/v([\d]*)$/, "");
  }
};
function clumpParts(url) {
  const parts = url.pathname.split("/").filter((p5) => !!p5);
  return parts.slice(0, -1).map((a2, i2) => `${a2}/${parts[i2 + 1]}`);
}
var pathParts = {
  test(url) {
    return !!clumpParts(url).find(validatePart);
  },
  parse(url) {
    return clumpParts(url).find(validatePart);
  }
};
var idInQuery = {
  test(url) {
    return validatePart(url.searchParams.get("id"));
  },
  parse(url) {
    var _a6;
    return (_a6 = url.searchParams.get("id")) !== null && _a6 !== void 0 ? _a6 : void 0;
  }
};
var STRICT_RESOLVERS = [doiOrg];
var DEFAULT_RESOLVERS = [doiOrg, biorxiv, pathParts, elife, zenodo, idInQuery];

// ../../node_modules/doi-utils/dist/index.js
var OPEN_FUNDER_REGISTRY_PREFIX = "10.13039";
function validate(possibleDOI, opts) {
  if (!possibleDOI)
    return false;
  return !!normalize(possibleDOI, opts);
}
function normalize(possibleDOI, opts) {
  let doi2 = void 0;
  if (!possibleDOI)
    return void 0;
  if (validatePart(possibleDOI))
    return possibleDOI;
  if (possibleDOI.startsWith("doi:")) {
    doi2 = possibleDOI.slice(4);
    if (validatePart(doi2))
      return doi2;
  }
  try {
    const url = new URL(possibleDOI.startsWith("http") ? possibleDOI : `http://${possibleDOI}`);
    const strictResolver = STRICT_RESOLVERS.find((r2) => r2.test(url));
    const nonStrictResolver = DEFAULT_RESOLVERS.find((r2) => r2.test(url));
    if ((opts === null || opts === void 0 ? void 0 : opts.strict) && !strictResolver)
      return void 0;
    const resolver = strictResolver !== null && strictResolver !== void 0 ? strictResolver : nonStrictResolver;
    if (!resolver)
      return void 0;
    doi2 = resolver.parse(url);
    if (!(opts === null || opts === void 0 ? void 0 : opts.strict) && strictResolver)
      return doi2;
  } catch (error) {
  }
  if (validatePart(doi2))
    return doi2;
  return void 0;
}
function buildUrl(possibleDOI, opts) {
  const doi2 = normalize(possibleDOI, opts);
  if (!doi2)
    return void 0;
  return `https://doi.org/${doi2}`;
}
function isOpenFunderRegistry(possibleDOI) {
  const doi2 = normalize(possibleDOI);
  if (!doi2)
    return false;
  return doi2.startsWith(`${OPEN_FUNDER_REGISTRY_PREFIX}/`);
}
var doi = {
  validatePart,
  validate,
  normalize,
  buildUrl,
  isOpenFunderRegistry
};

// ../myst-frontmatter/dist/utils/validators.js
var GITHUB_USERNAME_REPO_REGEX = "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$";
function validateDoi(value, opts) {
  const doiString = validateString(value, opts);
  if (doiString !== void 0) {
    if (doi.validate(doiString, { strict: true })) {
      return doiString;
    } else {
      validationError("must be valid DOI", opts);
    }
  }
  return void 0;
}
function validateGithubUrl(value, opts) {
  let github = value;
  if (typeof github === "string") {
    const repo = github.match(GITHUB_USERNAME_REPO_REGEX);
    if (repo) {
      github = `https://github.com/${repo}`;
    }
  }
  return validateUrl(github, {
    ...incrementOptions("github", opts),
    includes: "github"
  });
}
function validateStringOrNumber(input3, opts) {
  if (typeof input3 === "string")
    return validateString(input3, opts);
  if (typeof input3 === "number")
    return input3;
  return validationError("must be string or number", opts);
}

// ../myst-frontmatter/dist/socials/types.js
var SOCIAL_LINKS_KEYS = [
  "url",
  "github",
  "bluesky",
  "mastodon",
  "linkedin",
  "threads",
  "twitter",
  // Change to 'x' in future
  "youtube",
  "discourse",
  "discord",
  "slack",
  "facebook",
  "telegram"
];
var SOCIAL_LINKS_ALIASES = {
  website: "url",
  x: "twitter",
  // Can change this in a future release to be the other way
  bsky: "bluesky",
  instagram: "threads"
  // This is the same username
};

// ../myst-frontmatter/dist/socials/validators.js
var MASTODON_REGEX = /^@?([a-zA-Z0-9_]+)@([^@]+\.[^@]*[^.])$/;
var BLUESKY_REGEX = /^@?([^/:]+\..*[^.])$/;
var BLUESKY_URL_REGEX = /^https:\/\/bsky\.app\/profile\/@?(.+\..*[^.])$/;
var YOUTUBE_REGEX = /^@?([a-zA-Z0-9.]+)$/;
var THREADS_REGEX = /^[a-zA-Z0-9_.]+$/;
var TWITTER_REGEX = /^@?([a-zA-Z0-9_]{4,15})$/;
var TWITTER_URL_REGEX = /^https:\/\/(?:twitter\.com|x\.com)\/@?([a-zA-Z0-9_]{4,15})$/;
var GITHUB_USERNAME_REGEX = /^@?([a-zA-Z0-9_.-]+)$/;
var GITHUB_ORG_URL_REGEX = /^https:\/\/github\.com\/orgs\/[a-zA-Z0-9_.-]+$/;
var TELEGRAM_REGEX = /^@?([a-zA-Z0-9_]{5,})$/;
var TELEGRAM_URL_REGEX = /^https:\/\/(?:t\.me|telegram\.me)\/?([a-zA-Z0-9_]{5,})$/;
function validateMastodon(input3, opts) {
  const value = validateString(input3, opts);
  if (value === void 0)
    return void 0;
  const match3 = value.match(MASTODON_REGEX);
  if (match3 === null)
    return validationError(`must be a user ID of the form @username@server e.g. @mystmarkdown@fosstodon.org`, opts);
  const username = match3[1];
  const host = validateDomain(match3[2], opts);
  if (host === void 0)
    return void 0;
  return `@${username}@${host}`;
}
function validateBluesky(input3, opts) {
  const value = validateString(input3, opts);
  if (value === void 0)
    return void 0;
  let match3;
  if (match3 = value.match(BLUESKY_REGEX)) {
    const domain = validateDomain(match3[1], opts);
    if (domain === void 0)
      return void 0;
    return `@${domain}`;
  } else {
    const result = validateUrl(value, opts);
    if (result === void 0)
      return void 0;
    match3 = result.match(BLUESKY_URL_REGEX);
    if (match3 === null) {
      return validationError(`Bluesky profile URL must be a valid URL starting with https://bsky.app/profile/: ${value}`, opts);
    }
    const domain = validateDomain(match3[1], opts);
    if (domain === void 0)
      return void 0;
    return `@${domain}`;
  }
}
function validateTwitter(input3, opts) {
  const value = validateString(input3, opts);
  if (value === void 0)
    return void 0;
  let match3;
  if (match3 = value.match(TWITTER_URL_REGEX)) {
    return match3[1];
  } else if (match3 = value.match(TWITTER_REGEX)) {
    return match3[1];
  } else {
    return validationError(`Twitter social identity must be a valid URL starting with https://twitter.com/, https://x.com/, or a valid username: ${value}`, opts);
  }
}
function validateTelegram(input3, opts) {
  const value = validateString(input3, opts);
  if (value === void 0)
    return void 0;
  let match3;
  if (match3 = value.match(TELEGRAM_URL_REGEX)) {
    return match3[1];
  } else if (match3 = value.match(TELEGRAM_REGEX)) {
    return match3[1];
  } else {
    return validationError(`Telegram social identity must be a valid URL starting with either https://t.me/ or https://telegram.me/, or a valid username: ${value}`, opts);
  }
}
function validateYouTube(input3, opts) {
  const value = validateString(input3, opts);
  if (value === void 0)
    return void 0;
  if (/^https?:\/\//.test(value)) {
    return validateUrl(input3, { ...opts, includes: "youtube.com" });
  }
  let match3;
  if (match3 = value.match(YOUTUBE_REGEX)) {
    return match3[1];
  } else {
    return validationError(`YouTube social identity must be a valid URL starting with https://youtube.com/ or a valid handle: ${value}`, opts);
  }
}
function validateGitHub(input3, opts) {
  const value = validateString(input3, opts);
  if (value === void 0)
    return void 0;
  let match3;
  if (match3 = value.match(GITHUB_USERNAME_REGEX)) {
    return match3[1];
  } else if (match3 = value.match(GITHUB_USERNAME_REPO_REGEX)) {
    return match3[0];
  } else if (match3 = value.match(GITHUB_ORG_URL_REGEX)) {
    return match3[0];
  } else {
    return validationError(`GitHub social identity must be a valid username, org/repo, or org URL: ${value}`, opts);
  }
}
function validateSocialLinks(input3, opts, output2) {
  const value = output2 ? input3 : validateObjectKeys(input3, { optional: SOCIAL_LINKS_KEYS, alias: SOCIAL_LINKS_ALIASES }, opts);
  if (value === void 0)
    return void 0;
  const result = output2 !== null && output2 !== void 0 ? output2 : {};
  if (defined(value.url)) {
    result.url = validateUrl(value.url, incrementOptions("url", opts));
  }
  if (defined(value.github)) {
    result.github = validateGitHub(value.github, incrementOptions("github", opts));
  }
  if (defined(value.bluesky)) {
    result.bluesky = validateBluesky(value.bluesky, incrementOptions("bluesky", opts));
  }
  if (defined(value.mastodon)) {
    result.mastodon = validateMastodon(value.mastodon, incrementOptions("mastodon", opts));
  }
  if (defined(value.linkedin)) {
    result.linkedin = validateUrl(value.linkedin, {
      ...incrementOptions("linkedin", opts),
      includes: "linkedin.com"
    });
  }
  if (defined(value.threads)) {
    result.threads = validateString(value.threads, {
      ...incrementOptions("threads", opts),
      regex: THREADS_REGEX
    });
  }
  if (defined(value.twitter)) {
    result.twitter = validateTwitter(value.twitter, incrementOptions("twitter", opts));
  }
  if (defined(value.telegram)) {
    result.telegram = validateTelegram(value.telegram, incrementOptions("telegram", opts));
  }
  if (defined(value.youtube)) {
    result.youtube = validateYouTube(value.youtube, incrementOptions("youtube", opts));
  }
  if (defined(value.discourse)) {
    result.discourse = validateUrl(value.discourse, incrementOptions("discourse", opts));
  }
  if (defined(value.discord)) {
    result.discord = validateUrl(value.discord, {
      ...incrementOptions("discord", opts),
      includes: "discord"
    });
  }
  if (defined(value.slack)) {
    result.slack = validateUrl(value.slack, {
      ...incrementOptions("slack", opts),
      includes: "slack.com"
    });
  }
  if (defined(value.facebook)) {
    result.facebook = validateUrl(value.facebook, {
      ...incrementOptions("facebook", opts),
      includes: "facebook.com"
    });
  }
  return result;
}

// ../myst-frontmatter/dist/affiliations/validators.js
var AFFILIATION_KEYS = [
  "id",
  "address",
  "city",
  "state",
  "postal_code",
  "country",
  "name",
  "department",
  "collaboration",
  "isni",
  "ringgold",
  "ror",
  "doi",
  "email",
  "phone",
  "fax",
  ...SOCIAL_LINKS_KEYS
];
var AFFILIATION_ALIASES = {
  ref: "id",
  // Used in QMD to reference an affiliation
  region: "state",
  province: "state",
  zipcode: "postal_code",
  zip_code: "postal_code",
  institution: "name",
  ...SOCIAL_LINKS_ALIASES
};
function validateAffiliation(input3, opts) {
  if (typeof input3 === "string") {
    input3 = stashPlaceholder(input3);
  }
  const value = validateObjectKeys(input3, { optional: AFFILIATION_KEYS, alias: AFFILIATION_ALIASES }, opts);
  if (value === void 0)
    return void 0;
  if (Object.keys(value).length === 1 && value.id) {
    value.name = value.id;
  }
  const output2 = {};
  if (defined(value.id)) {
    output2.id = validateString(value.id, incrementOptions("id", opts));
  }
  if (defined(value.name)) {
    output2.name = validateString(value.name, incrementOptions("name", opts));
  } else {
    validationWarning("affiliation should include name/institution", opts);
  }
  if (defined(value.department)) {
    output2.department = validateString(value.department, incrementOptions("department", opts));
  }
  if (defined(value.address)) {
    output2.address = validateString(value.address, incrementOptions("address", opts));
  }
  if (defined(value.city)) {
    output2.city = validateString(value.city, incrementOptions("city", opts));
  }
  if (defined(value.state)) {
    output2.state = validateString(value.state, incrementOptions("state", opts));
  }
  if (defined(value.postal_code)) {
    output2.postal_code = validateString(value.postal_code, {
      coerceNumber: true,
      ...incrementOptions("postal_code", opts)
    });
  }
  if (defined(value.country)) {
    output2.country = validateString(value.country, incrementOptions("country", opts));
  }
  if (defined(value.isni)) {
    output2.isni = validateString(value.isni, incrementOptions("isni", opts));
  }
  if (defined(value.ror)) {
    output2.ror = validateString(value.ror, incrementOptions("ror", opts));
  }
  if (defined(value.ringgold)) {
    output2.ringgold = validateNumber(value.ringgold, {
      min: 1e3,
      max: 999999,
      ...incrementOptions("ringgold", opts)
    });
  }
  if (defined(value.doi)) {
    output2.doi = validateDoi(value.doi, incrementOptions("doi", opts));
  }
  if (defined(value.collaboration)) {
    output2.collaboration = validateBoolean(value.collaboration, incrementOptions("collaboration", opts));
  }
  if (defined(value.email)) {
    output2.email = validateEmail(value.email, incrementOptions("email", opts));
  }
  validateSocialLinks(value, opts, output2);
  if (defined(value.phone)) {
    output2.phone = validateString(value.phone, incrementOptions("phone", opts));
  }
  if (defined(value.fax)) {
    output2.fax = validateString(value.fax, incrementOptions("fax", opts));
  }
  return output2;
}

// ../myst-frontmatter/dist/biblio/validators.js
var PUBLICATION_META_KEYS = ["number", "doi", "title", "subject"];
function validatePublicationMeta(input3, opts) {
  if (typeof input3 !== "object") {
    input3 = { number: input3 };
  }
  const value = validateObjectKeys(input3, { optional: PUBLICATION_META_KEYS, alias: { name: "number" } }, opts);
  if (value === void 0)
    return void 0;
  const output2 = {};
  if (defined(value.number)) {
    output2.number = validateStringOrNumber(value.number, incrementOptions("number", opts));
  }
  if (defined(value.doi)) {
    output2.doi = validateDoi(value.doi, incrementOptions("doi", opts));
  }
  if (defined(value.title)) {
    output2.title = validateString(value.title, incrementOptions("title", opts));
  }
  if (defined(value.subject)) {
    output2.subject = validateString(value.subject, incrementOptions("subject", opts));
  }
  if (Object.keys(output2).length === 0)
    return void 0;
  return output2;
}

// ../../node_modules/credit-roles/dist/index.js
var CREDIT_URL = "https://credit.niso.org/";
var CreditRole;
(function(CreditRole2) {
  CreditRole2["Conceptualization"] = "Conceptualization";
  CreditRole2["DataCuration"] = "Data curation";
  CreditRole2["FormalAnalysis"] = "Formal analysis";
  CreditRole2["FundingAcquisition"] = "Funding acquisition";
  CreditRole2["Investigation"] = "Investigation";
  CreditRole2["Methodology"] = "Methodology";
  CreditRole2["ProjectAdministration"] = "Project administration";
  CreditRole2["Resources"] = "Resources";
  CreditRole2["Software"] = "Software";
  CreditRole2["Supervision"] = "Supervision";
  CreditRole2["Validation"] = "Validation";
  CreditRole2["Visualization"] = "Visualization";
  CreditRole2["WritingOriginalDraft"] = "Writing \u2013 original draft";
  CreditRole2["WritingReviewEditing"] = "Writing \u2013 review & editing";
})(CreditRole || (CreditRole = {}));
var CreditDescriptions = {
  [CreditRole.Conceptualization]: "Ideas; formulation or evolution of overarching research goals and aims.",
  [CreditRole.DataCuration]: "Management activities to annotate (produce metadata), scrub data and maintain research data (including software code, where it is necessary for interpreting the data itself) for initial use and later re-use.",
  [CreditRole.FormalAnalysis]: "Application of statistical, mathematical, computational, or other formal techniques to analyse or synthesize study data.",
  [CreditRole.FundingAcquisition]: "Acquisition of the financial support for the project leading to this publication.",
  [CreditRole.Investigation]: "Conducting a research and investigation process, specifically performing the experiments, or data/evidence collection.",
  [CreditRole.Methodology]: "Development or design of methodology; creation of models.",
  [CreditRole.ProjectAdministration]: "Management and coordination responsibility for the research activity planning and execution.",
  [CreditRole.Resources]: "Provision of study materials, reagents, materials, patients, laboratory samples, animals, instrumentation, computing resources, or other analysis tools.",
  [CreditRole.Software]: "Programming, software development; designing computer programs; implementation of the computer code and supporting algorithms; testing of existing code components.",
  [CreditRole.Supervision]: "Oversight and leadership responsibility for the research activity planning and execution, including mentorship external to the core team.",
  [CreditRole.Validation]: "Verification, whether as a part of the activity or separate, of the overall replication/reproducibility of results/experiments and other research outputs.",
  [CreditRole.Visualization]: "Preparation, creation and/or presentation of the published work, specifically visualization/data presentation.",
  [CreditRole.WritingOriginalDraft]: "Preparation, creation and/or presentation of the published work, specifically writing the initial draft (including substantive translation).",
  [CreditRole.WritingReviewEditing]: "Preparation, creation and/or presentation of the published work by those from the original research group, specifically critical review, commentary or revision \u2013 including pre- or post-publication stages."
};
var ROLES = Object.keys(CreditDescriptions);
var ALIAS_ROLES = {
  writing: CreditRole.WritingOriginalDraft,
  editing: CreditRole.WritingReviewEditing,
  review: CreditRole.WritingReviewEditing,
  analysis: CreditRole.FormalAnalysis,
  funding: CreditRole.FundingAcquisition,
  admin: CreditRole.ProjectAdministration,
  administration: CreditRole.ProjectAdministration
};
function standardize(v) {
  return v.trim().toLowerCase().replaceAll("z", "s").split("").reduce((s5, n) => {
    if (n.match(/([a-z])/))
      return [...s5, n];
    const last = s5[s5.length - 1];
    if (!(last === null || last === void 0 ? void 0 : last.match(/([a-z])/)))
      return s5;
    return [...s5, "-"];
  }, []).join("");
}
var STANDARDIZED_ROLES = Object.fromEntries(ROLES.map((v) => [standardize(v), v]));
function normalize2(value, opts) {
  var _a6, _b;
  if (!value)
    return void 0;
  if (ROLES.includes(value))
    return value;
  if (opts === null || opts === void 0 ? void 0 : opts.strict)
    return void 0;
  return (_b = (_a6 = STANDARDIZED_ROLES[standardize(value)]) !== null && _a6 !== void 0 ? _a6 : ALIAS_ROLES[value.toLowerCase().trim()]) !== null && _b !== void 0 ? _b : void 0;
}
function validate2(value, opts) {
  if (!value)
    return false;
  return !!normalize2(value, opts);
}
function buildUrl2(value, opts) {
  const role = normalize2(value, opts);
  if (!role)
    return void 0;
  const url = role.toLowerCase().replace("\u2013 ", "").replace("& ", "").replaceAll(" ", "-");
  return `${CREDIT_URL}contributor-roles/${url}/`;
}
var credit = {
  validate: validate2,
  normalize: normalize2,
  buildUrl: buildUrl2
};

// ../../node_modules/orcid/dist/index.js
var ORCID_URL = "https://orcid.org";
var ORCID_REGEX_STRICT = "^([0-9]{4}-){3}[0-9]{3}[0-9X]$";
var ORCID_REGEX = "^((http(s)?://)?(www.)?orcid.org/)?([0-9]{4}-){3}[0-9]{3}[0-9X]$";
function validate3(value, opts) {
  const match3 = value === null || value === void 0 ? void 0 : value.match((opts === null || opts === void 0 ? void 0 : opts.strict) ? ORCID_REGEX_STRICT : ORCID_REGEX);
  if (!match3)
    return false;
  return true;
}
function normalize3(value, opts) {
  if (!value || !validate3(value, opts))
    return void 0;
  return value.replace(/^(https?:\/\/)?(www\.)?orcid\.org\//, "");
}
function buildUrl3(value, opts) {
  const orcid2 = normalize3(value, opts);
  if (!orcid2)
    return void 0;
  return `${ORCID_URL}/${orcid2}`;
}
var orcid = {
  validate: validate3,
  normalize: normalize3,
  buildUrl: buildUrl3
};

// ../myst-frontmatter/dist/utils/parseName.js
function startsWithUpperCase(word) {
  for (const letter of word) {
    if (letter.toLowerCase() === letter.toUpperCase())
      continue;
    return letter === letter.toUpperCase();
  }
  return true;
}
function parseName(literal) {
  var _a6, _b;
  const displayParts = literal.split(",");
  if (displayParts.length === 1) {
    return { literal, ...parseGivenParticleFamily(literal) };
  }
  const lastPart = (_a6 = displayParts.pop()) === null || _a6 === void 0 ? void 0 : _a6.trim();
  const givenAndParticle = parseGivenParticle(lastPart);
  if (displayParts.length === 1) {
    return { literal, ...givenAndParticle, ...parseParticleFamily(displayParts[0]) };
  }
  const suffix = (_b = displayParts.pop()) === null || _b === void 0 ? void 0 : _b.trim();
  const particleAndFamily = parseParticleFamily(displayParts.join(","));
  if (!suffix)
    return { literal, ...givenAndParticle, ...particleAndFamily };
  return { literal, ...givenAndParticle, ...particleAndFamily, suffix };
}
function parseGivenParticle(name3) {
  const nameParts = name3 === null || name3 === void 0 ? void 0 : name3.trim().split(/\s+/);
  if (!(nameParts === null || nameParts === void 0 ? void 0 : nameParts.length))
    return {};
  let given = nameParts.shift();
  if (!given)
    return {};
  while (nameParts.length && startsWithUpperCase(nameParts[0])) {
    given = `${given} ${nameParts.shift()}`;
  }
  if (!nameParts.length)
    return { given };
  return { given, dropping_particle: nameParts.join(" ") };
}
function parseParticleFamily(name3) {
  const nameParts = name3.trim().split(/\s+/);
  if (!nameParts.length)
    return {};
  let family = nameParts.pop();
  if (!family)
    return {};
  if (nameParts.length && startsWithUpperCase(nameParts[0])) {
    return { family: [...nameParts, family].join(" ") };
  }
  while (nameParts.length && startsWithUpperCase(nameParts[nameParts.length - 1])) {
    family = `${nameParts.pop()} ${family}`;
  }
  if (!nameParts.length)
    return { family };
  return { non_dropping_particle: nameParts.join(" "), family };
}
function parseGivenParticleFamily(name3) {
  const nameParts = name3.trim().split(/\s+/);
  if (!nameParts.length)
    return {};
  let family = nameParts.pop();
  if (!family)
    return {};
  if (!nameParts.length)
    return { family };
  let given = nameParts.shift();
  while (nameParts.length && startsWithUpperCase(nameParts[0])) {
    given = `${given} ${nameParts.shift()}`;
  }
  while (nameParts.length && startsWithUpperCase(nameParts[nameParts.length - 1])) {
    family = `${nameParts.pop()} ${family}`;
  }
  if (!nameParts.length)
    return { given, family };
  return { given, non_dropping_particle: nameParts.join(" "), family };
}
function formatName(name3, alwaysReversed = false) {
  const { literal, given, dropping_particle, non_dropping_particle, family, suffix } = name3;
  if (literal)
    return literal;
  const hasCommas = [given, dropping_particle, non_dropping_particle, family, suffix].join("").includes(",");
  if (!alwaysReversed && !hasCommas && !dropping_particle && !suffix) {
    const formattedName = [given, non_dropping_particle, family].filter(Boolean).join(" ");
    const reParsedName = parseName(formattedName);
    delete reParsedName.literal;
    const serializedParsedName = JSON.stringify(Object.entries(reParsedName).sort());
    const serializedSourceName = JSON.stringify(Object.entries(name3).sort());
    if (serializedParsedName === serializedSourceName) {
      return formattedName;
    }
  }
  let output2 = ",";
  if (suffix || hasCommas)
    output2 = `${output2}${suffix ? " " : ""}${suffix !== null && suffix !== void 0 ? suffix : ""},`;
  if (given)
    output2 = `${output2} ${given}`;
  if (family)
    output2 = `${family}${output2}`;
  if (dropping_particle)
    output2 = `${output2} ${dropping_particle}`;
  if (non_dropping_particle)
    output2 = `${non_dropping_particle} ${output2}`;
  if (output2 === ",")
    return "";
  return output2;
}

// ../myst-frontmatter/dist/contributors/validators.js
var PERSON_KEYS = [
  "id",
  "userId",
  "name",
  "nameParsed",
  "orcid",
  "corresponding",
  "equal_contributor",
  "deceased",
  "email",
  "roles",
  "affiliations",
  "collaborations",
  "note",
  "phone",
  "fax",
  ...SOCIAL_LINKS_KEYS
];
var PERSON_ALIASES = {
  ref: "id",
  // Used in QMD to reference a contributor
  role: "roles",
  "equal-contributor": "equal_contributor",
  affiliation: "affiliations",
  ...SOCIAL_LINKS_ALIASES
};
var NAME_KEYS = [
  "literal",
  "given",
  "family",
  "suffix",
  "non_dropping_particle",
  "dropping_particle"
];
var NAME_ALIASES = {
  surname: "family",
  last: "family",
  forename: "given",
  first: "given",
  particle: "non_dropping_particle",
  "non-dropping-particle": "non_dropping_particle",
  "dropping-particle": "dropping_particle"
};
function validateName(input3, opts) {
  let output2;
  let raiseCommaWarnings = false;
  if (typeof input3 === "string") {
    output2 = parseName(input3);
    raiseCommaWarnings = true;
  } else {
    const value = validateObjectKeys(input3, { optional: NAME_KEYS, alias: NAME_ALIASES }, opts);
    if (value === void 0)
      return void 0;
    output2 = {};
    if (defined(value.literal)) {
      output2.literal = validateString(value.literal, incrementOptions("literal", opts));
    }
    if (defined(value.given)) {
      output2.given = validateString(value.given, incrementOptions("given", opts));
    }
    if (defined(value.non_dropping_particle)) {
      output2.non_dropping_particle = validateString(value.non_dropping_particle, incrementOptions("non_dropping_particle", opts));
    }
    if (defined(value.dropping_particle)) {
      output2.dropping_particle = validateString(value.dropping_particle, incrementOptions("dropping_particle", opts));
    }
    if (defined(value.family)) {
      output2.family = validateString(value.family, incrementOptions("family", opts));
    }
    if (defined(value.suffix)) {
      output2.suffix = validateString(value.suffix, incrementOptions("suffix", opts));
    }
    if (Object.keys(output2).length === 1 && output2.literal) {
      output2 = { ...output2, ...parseName(output2.literal) };
      raiseCommaWarnings = true;
    } else if (!output2.literal) {
      output2.literal = formatName(output2);
      if (output2.literal.startsWith(",")) {
        validationWarning(`unexpected comma at beginning of name: ${output2.literal} - you may need to define 'name.literal' explicitly`, opts);
      }
    }
  }
  if (raiseCommaWarnings) {
    const warnOnComma = (part, o) => {
      if (part && part.includes(",")) {
        validationWarning(`unexpected comma in name part: ${part} - you may need to define 'name' explicitly as an object`, o);
      }
    };
    warnOnComma(output2.given, incrementOptions("given", opts));
    warnOnComma(output2.family, incrementOptions("family", opts));
    warnOnComma(output2.non_dropping_particle, incrementOptions("non_dropping_particle", opts));
    warnOnComma(output2.dropping_particle, incrementOptions("dropping_particle", opts));
    warnOnComma(output2.suffix, incrementOptions("suffix", opts));
  }
  return output2;
}
function validateContributor(input3, stash, opts) {
  var _a6, _b, _c;
  const inputAff = validateObjectKeys(input3, { optional: AFFILIATION_KEYS, alias: AFFILIATION_ALIASES }, {
    ...opts,
    suppressErrors: true,
    suppressWarnings: true
  });
  if ((inputAff === null || inputAff === void 0 ? void 0 : inputAff.collaboration) === true) {
    return validateAffiliation(input3, opts);
  }
  if (typeof input3 === "string") {
    input3 = stashPlaceholder(input3);
  }
  const value = validateObjectKeys(input3, { optional: PERSON_KEYS, alias: PERSON_ALIASES }, opts);
  if (value === void 0)
    return void 0;
  if (inputAff && Object.keys(inputAff).length > Object.keys(value).length) {
    validationWarning('contributor may be a collaboration, not a person - if so, add "collaboration: true"', opts);
  }
  if (Object.keys(value).length === 1 && value.id) {
    value.name = value.id;
  }
  const output2 = {};
  if (defined(value.id)) {
    output2.id = validateString(value.id, incrementOptions("id", opts));
  }
  if (defined(value.userId)) {
    output2.userId = validateString(value.userId, incrementOptions("userId", opts));
  }
  if (defined(value.nameParsed)) {
    output2.nameParsed = validateName(value.nameParsed, incrementOptions("nameParsed", opts));
    output2.name = value.name ? validateString(value.name, incrementOptions("name", opts)) : (_a6 = output2.nameParsed) === null || _a6 === void 0 ? void 0 : _a6.literal;
    if (output2.name !== ((_b = output2.nameParsed) === null || _b === void 0 ? void 0 : _b.literal)) {
      validationWarning(`"name" and "parsedName.literal" should match`, opts);
    }
  } else if (defined(value.name)) {
    output2.nameParsed = validateName(value.name, incrementOptions("name", opts));
    output2.name = (_c = output2.nameParsed) === null || _c === void 0 ? void 0 : _c.literal;
  } else {
    validationWarning("contributor should include name", opts);
  }
  if (defined(value.orcid)) {
    const orcidOpts = incrementOptions("orcid", opts);
    const id = orcid.normalize(value.orcid);
    if (id) {
      output2.orcid = id;
    } else {
      validationError(`ORCID "${value.orcid}" is not valid, try an ID of the form "0000-0000-0000-0000"`, orcidOpts);
    }
  }
  if (defined(value.corresponding)) {
    const correspondingOpts = incrementOptions("corresponding", opts);
    output2.corresponding = validateBoolean(value.corresponding, correspondingOpts);
    if (value.corresponding && !defined(value.email)) {
      validationError(`must include email for corresponding author`, correspondingOpts);
      output2.corresponding = false;
    }
  }
  if (defined(value.equal_contributor)) {
    output2.equal_contributor = validateBoolean(value.equal_contributor, incrementOptions("equal_contributor", opts));
  }
  if (defined(value.deceased)) {
    output2.deceased = validateBoolean(value.deceased, incrementOptions("deceased", opts));
  }
  if (defined(value.email)) {
    output2.email = validateEmail(value.email, incrementOptions("email", opts));
  }
  if (defined(value.roles)) {
    const rolesOpts = incrementOptions("roles", opts);
    let roles = value.roles;
    if (typeof roles === "string") {
      roles = roles.split(/[,;]/);
    }
    output2.roles = validateList(roles, rolesOpts, (r2) => {
      const roleString = validateString(r2, rolesOpts);
      if (roleString === void 0)
        return void 0;
      const role = credit.normalize(roleString);
      if (!role) {
        validationWarning(`unknown value "${roleString}" - should be a CRediT role - see https://credit.niso.org/`, rolesOpts);
        return roleString.trim();
      }
      return role;
    });
  }
  if (defined(value.collaborations)) {
    validationError('collaborations must be defined in frontmatter as affiliations with "collaboration: true"', incrementOptions("collaborations", opts));
  }
  if (defined(value.affiliations)) {
    const affiliationsOpts = incrementOptions("affiliations", opts);
    let affiliations2 = value.affiliations;
    if (typeof affiliations2 === "string") {
      affiliations2 = affiliations2.split(";").map((aff) => aff.trim());
    }
    if (!Array.isArray(affiliations2)) {
      affiliations2 = [affiliations2];
    }
    output2.affiliations = validateList(affiliations2, affiliationsOpts, (aff) => {
      return validateAndStashObject(aff, stash, "affiliations", validateAffiliation, affiliationsOpts);
    });
  }
  validateSocialLinks(value, opts, output2);
  if (defined(value.phone)) {
    output2.phone = validateString(value.phone, incrementOptions("phone", opts));
  }
  if (defined(value.fax)) {
    output2.fax = validateString(value.fax, incrementOptions("fax", opts));
  }
  if (defined(value.note)) {
    output2.note = validateString(value.note, incrementOptions("note", opts));
  }
  if (isStashPlaceholder(output2) || !output2.nameParsed)
    return output2;
  if (value.nameParsed || value.name && typeof value.name !== "string")
    return output2;
  const suffix = " - if this is intended, you may define 'name' explicitly as an object";
  if (!output2.nameParsed.given) {
    validationWarning(`No given name for name '${output2.nameParsed.literal}'${suffix}`, opts);
  }
  if (!output2.nameParsed.family) {
    validationWarning(`No family name for name '${output2.nameParsed.literal}'${suffix}`, opts);
  }
  return output2;
}

// ../myst-frontmatter/dist/site/types.js
var PAGE_KNOWN_PARTS = [
  "abstract",
  "summary",
  "keypoints",
  "dedication",
  "epigraph",
  "data_availability",
  "acknowledgments"
];
var SITE_FRONTMATTER_KEYS = [
  "title",
  "subtitle",
  "short_title",
  "description",
  "thumbnail",
  "thumbnailOptimized",
  "banner",
  "bannerOptimized",
  "tags",
  "authors",
  "reviewers",
  "editors",
  "contributors",
  "venue",
  "github",
  "keywords",
  "affiliations",
  "funding",
  "copyright",
  "options",
  "parts",
  "social",
  ...PAGE_KNOWN_PARTS
];
var FRONTMATTER_ALIASES = {
  author: "authors",
  reviewer: "reviewers",
  editor: "editors",
  contributor: "contributors",
  affiliation: "affiliations",
  export: "exports",
  download: "downloads",
  jupyter: "thebe",
  part: "parts",
  ack: "acknowledgments",
  acknowledgements: "acknowledgments",
  acknowledgment: "acknowledgments",
  acknowledgement: "acknowledgments",
  availability: "data_availability",
  dataAvailability: "data_availability",
  "data-availability": "data_availability",
  quote: "epigraph",
  plain_language_summary: "summary",
  "plain-language-summary": "summary",
  plainLanguageSummary: "summary",
  lay_summary: "summary",
  "lay-summary": "summary",
  keyPoints: "keypoints",
  key_points: "keypoints",
  "key-points": "keypoints",
  image: "thumbnail",
  identifier: "identifiers",
  socials: "social"
};

// ../myst-frontmatter/dist/project/types.js
var KNOWN_EXTERNAL_IDENTIFIERS = ["arxiv", "pmid", "pmcid", "zenodo"];
var PROJECT_AND_PAGE_FRONTMATTER_KEYS = [
  "date",
  "doi",
  "identifiers",
  "open_access",
  "license",
  "binder",
  "source",
  "subject",
  "volume",
  "issue",
  "first_page",
  "last_page",
  "oxa",
  "numbering",
  "bibliography",
  "math",
  "abbreviations",
  "exports",
  "downloads",
  "settings",
  // We maybe want to move this into site frontmatter in the future
  "edit_url",
  "source_url",
  ...KNOWN_EXTERNAL_IDENTIFIERS,
  // Do not add any project specific keys here!
  ...SITE_FRONTMATTER_KEYS
];
var PROJECT_FRONTMATTER_KEYS = [
  ...PROJECT_AND_PAGE_FRONTMATTER_KEYS,
  // These keys only exist on the project
  "id",
  "references",
  "requirements",
  "resources",
  "thebe",
  "toc"
];

// ../myst-frontmatter/dist/page/types.js
var PAGE_FRONTMATTER_KEYS = [
  ...PROJECT_AND_PAGE_FRONTMATTER_KEYS,
  // These keys only exist on the page
  "label",
  "kernelspec",
  "jupytext",
  "tags",
  "site",
  "enumerator",
  "content_includes_title",
  "skip_execution",
  "execute"
];

// ../myst-frontmatter/dist/exports/types.js
var ExportFormats;
(function(ExportFormats2) {
  ExportFormats2["pdf"] = "pdf";
  ExportFormats2["tex"] = "tex";
  ExportFormats2["pdftex"] = "pdf+tex";
  ExportFormats2["typst"] = "typst";
  ExportFormats2["docx"] = "docx";
  ExportFormats2["xml"] = "xml";
  ExportFormats2["md"] = "md";
  ExportFormats2["meca"] = "meca";
  ExportFormats2["cff"] = "cff";
})(ExportFormats || (ExportFormats = {}));

// ../myst-toc/dist/toc.js
var COMMON_ENTRY_KEYS = ["title", "hidden"];
function validateCommonEntry(entry, opts) {
  const output2 = {};
  if (defined(entry.title)) {
    output2.title = validateString(entry.title, incrementOptions("title", opts));
  }
  if (defined(entry.hidden)) {
    output2.hidden = validateBoolean(entry.hidden, incrementOptions("hidden", opts));
  }
  return output2;
}
function validateFileEntry(entry, opts) {
  const intermediate = validateObjectKeys(entry, {
    required: ["file"],
    optional: [...COMMON_ENTRY_KEYS, "children"]
  }, opts);
  if (!intermediate) {
    return void 0;
  }
  const file = validateString(intermediate.file, incrementOptions("file", opts));
  if (!file) {
    return void 0;
  }
  const commonEntry = validateCommonEntry(intermediate, opts);
  let output2 = { file, ...commonEntry };
  if (defined(entry.children)) {
    const children = validateList(intermediate.children, incrementOptions("children", opts), (item, ind) => validateEntry(item, incrementOptions(`children.${ind}`, opts)));
    output2 = { children, ...output2 };
  }
  return output2;
}
function validateURLEntry(entry, opts) {
  const intermediate = validateObjectKeys(entry, {
    required: ["url"],
    optional: [...COMMON_ENTRY_KEYS, "children", "open_in_same_tab"]
  }, opts);
  if (!intermediate) {
    return void 0;
  }
  const url = validateString(intermediate.url, incrementOptions("url", opts));
  if (!url) {
    return void 0;
  }
  const commonEntry = validateCommonEntry(intermediate, opts);
  let output2 = { url, ...commonEntry };
  if (defined(entry.open_in_same_tab)) {
    output2.open_in_same_tab = validateBoolean(entry.open_in_same_tab, incrementOptions("open_in_same_tab", opts));
  }
  if (defined(entry.children)) {
    const children = validateList(intermediate.children, incrementOptions("children", opts), (item, ind) => validateEntry(item, incrementOptions(`children.${ind}`, opts)));
    output2 = { children, ...output2 };
  }
  return output2;
}
function validatePatternEntry(entry, opts) {
  const intermediate = validateObjectKeys(entry, {
    required: ["pattern"],
    optional: [...COMMON_ENTRY_KEYS]
  }, opts);
  if (!intermediate) {
    return void 0;
  }
  const pattern = validateString(intermediate.pattern, incrementOptions("pattern", opts));
  if (!pattern) {
    return void 0;
  }
  const commonEntry = validateCommonEntry(intermediate, opts);
  return { pattern, ...commonEntry };
}
function validateParentEntry(entry, opts) {
  const intermediate = validateObjectKeys(entry, {
    required: ["title", "children"],
    optional: [...COMMON_ENTRY_KEYS]
  }, opts);
  if (!intermediate) {
    return void 0;
  }
  const title = validateString(intermediate.title, incrementOptions("title", opts));
  if (!title) {
    return void 0;
  }
  const children = validateList(intermediate.children, incrementOptions("children", opts), (item, ind) => validateEntry(item, incrementOptions(`children.${ind}`, opts)));
  if (!children) {
    return void 0;
  }
  const commonEntry = validateCommonEntry(intermediate, opts);
  return {
    children,
    title,
    ...commonEntry
  };
}
function validateEntry(entry, opts) {
  const intermediate = validateObject(entry, opts);
  if (!intermediate) {
    return void 0;
  }
  if (defined(intermediate.file)) {
    return validateFileEntry(intermediate, opts);
  } else if (defined(intermediate.url)) {
    return validateURLEntry(intermediate, opts);
  } else if (defined(intermediate.pattern)) {
    return validatePatternEntry(intermediate, opts);
  } else if (defined(intermediate.title)) {
    return validateParentEntry(intermediate, opts);
  } else {
    return validationError("expected an entry with 'file', 'url', 'pattern', or 'title'", opts);
  }
}
function validateTOC(toc, opts) {
  return validateList(toc, opts, (item, ind) => validateEntry(item, incrementOptions(`${ind}`, opts)));
}

// ../myst-toc/dist/guards.js
function isFile(entry) {
  return entry.file !== void 0;
}
function isURL(entry) {
  return entry.url !== void 0;
}
function isPattern(entry) {
  return entry.pattern !== void 0;
}

// ../myst-frontmatter/dist/exports/validators.js
var EXPORT_KEY_OBJECT = {
  required: [],
  optional: [
    "format",
    "template",
    "output",
    "zip",
    "id",
    "name",
    "renderer",
    "articles",
    "top_level",
    "sub_articles"
  ],
  alias: {
    article: "articles",
    sub_article: "sub_articles"
  }
};
var EXPORT_ARTICLE_KEY_OBJECT = {
  optional: [
    "file",
    "title",
    "level",
    ...PAGE_FRONTMATTER_KEYS,
    ...Object.keys(FRONTMATTER_ALIASES)
  ]
};
var EXT_TO_FORMAT = {
  ".pdf": ExportFormats.pdf,
  ".tex": ExportFormats.tex,
  ".doc": ExportFormats.docx,
  ".docx": ExportFormats.docx,
  ".md": ExportFormats.md,
  ".zip": ExportFormats.meca,
  ".meca": ExportFormats.meca,
  ".xml": ExportFormats.xml,
  ".jats": ExportFormats.xml,
  ".typ": ExportFormats.typst,
  ".typst": ExportFormats.typst,
  ".cff": ExportFormats.cff
};
var RESERVED_EXPORT_KEYS = [
  ...EXPORT_KEY_OBJECT.required,
  ...EXPORT_KEY_OBJECT.optional,
  ...Object.keys(EXPORT_KEY_OBJECT.alias),
  ...PROJECT_FRONTMATTER_KEYS,
  ...Object.keys(FRONTMATTER_ALIASES)
];
var MULTI_ARTICLE_EXPORT_FORMATS = [
  ExportFormats.typst,
  ExportFormats.pdf,
  ExportFormats.tex,
  ExportFormats.pdftex
];
function validateExportsList(input3, opts) {
  if (input3 === void 0)
    return void 0;
  const exportsOptions = { coerce: true, ...incrementOptions("exports", opts) };
  const output2 = validateList(input3, exportsOptions, (exp, ind) => {
    return validateExport(exp, incrementOptions(`exports.${ind}`, opts));
  });
  if (!output2 || output2.length === 0)
    return void 0;
  const duplicates = /* @__PURE__ */ new Set();
  output2.forEach((exp, ind) => {
    if (exp.id && output2.slice(ind + 1).map(({ id }) => id).includes(exp.id)) {
      duplicates.add(exp.id);
    }
  });
  if (duplicates.size) {
    validationError(`duplicate export ids: ${[...duplicates].join(", ")}`, exportsOptions);
  }
  return output2;
}
function validateExportFormat(input3, opts) {
  if (input3 === void 0)
    return void 0;
  if (input3 === "tex+pdf")
    input3 = "pdf+tex";
  if (input3 === "jats")
    input3 = "xml";
  const format = validateEnum(input3, { ...opts, enum: ExportFormats });
  return format;
}
function validateExportArticle(input3, opts) {
  if (typeof input3 === "string") {
    input3 = { file: input3 };
  }
  const value = validateObjectKeys(input3, EXPORT_ARTICLE_KEY_OBJECT, opts);
  if (!value)
    return void 0;
  const output2 = { ...value };
  if (defined(value.file)) {
    output2.file = validateString(value.file, opts);
  }
  if (defined(value.title)) {
    output2.title = validateString(value.title, incrementOptions("title", opts));
  }
  if (defined(value.level)) {
    output2.level = validateNumber(value.level, {
      min: -1,
      max: 6,
      integer: true,
      ...incrementOptions("level", opts)
    });
  }
  if (!output2.title && !output2.file) {
    return validationError("export articles must specify file or part/chapter title", opts);
  }
  return output2;
}
function articlesWithFile(articles) {
  var _a6;
  return (_a6 = articles === null || articles === void 0 ? void 0 : articles.filter((article) => {
    return !!article.file;
  })) !== null && _a6 !== void 0 ? _a6 : [];
}
function singleArticleWithFile(articles) {
  return articlesWithFile(articles)[0];
}
function validateExport(input3, opts) {
  if (typeof input3 === "string") {
    let format2;
    let output3;
    if (input3.startsWith(".")) {
      Object.entries(EXT_TO_FORMAT).forEach(([ext2, fmt]) => {
        if (input3 === ext2)
          format2 = fmt;
      });
    } else if (input3.includes(".")) {
      output3 = input3;
    }
    if (!format2 && !output3) {
      format2 = validateExportFormat(input3, opts);
      if (!format2)
        return void 0;
    }
    input3 = { format: format2, output: output3 };
  }
  const value = validateObjectKeys(input3, EXPORT_KEY_OBJECT, {
    ...opts,
    suppressWarnings: true,
    keepExtraKeys: true
  });
  if (value === void 0)
    return void 0;
  let format;
  let output2;
  let template;
  if (value.template === null) {
    template = null;
  } else if (defined(value.template)) {
    template = validateString(value.template, incrementOptions("template", opts));
  }
  if (defined(value.output)) {
    const outputOpts = incrementOptions("output", opts);
    const outputString = validateString(value.output, outputOpts);
    if (outputString) {
      Object.keys(EXT_TO_FORMAT).forEach((ext2) => {
        if (outputString.endsWith(ext2))
          output2 = outputString;
      });
      if (!outputString.slice(1).includes(".")) {
        output2 = outputString;
      }
      if (!output2) {
        return validationError(`unknown export output extension: ${outputString}`, outputOpts);
      }
    }
  }
  if (defined(value.format)) {
    format = validateExportFormat(value.format, incrementOptions("format", opts));
    if (!format)
      return void 0;
  }
  if (!format && !template && !output2) {
    return validationError("export must specify one of: format, template, or output", opts);
  }
  const validExport = { ...value, format, output: output2, template };
  if (defined(value.id)) {
    validExport.id = validateString(value.id, incrementOptions("id", opts));
  }
  if (defined(value.zip)) {
    validExport.zip = validateBoolean(value.zip, incrementOptions("zip", opts));
  }
  if (defined(value.articles)) {
    const articles = validateList(value.articles, { coerce: true, ...incrementOptions("articles", opts) }, (item, ind) => validateExportArticle(item, incrementOptions(`articles.${ind}`, opts)));
    const singleArticle = singleArticleWithFile(articles);
    if (articles === null || articles === void 0 ? void 0 : articles.length) {
      if (!singleArticle) {
        validationError("no files found in export article list", opts);
        validExport.articles = void 0;
      } else if (articles.length > 1 && validExport.format && !MULTI_ARTICLE_EXPORT_FORMATS.includes(validExport.format)) {
        if (validExport.format === ExportFormats.xml && !defined(value.sub_articles)) {
          validationError("multiple articles are not supported for 'jats' export - instead specify one article with additional sub_articles", opts);
        } else {
          validationError("multiple articles are only supported for 'tex', 'typst', and 'pdf' exports", opts);
        }
        validExport.articles = [singleArticle];
      } else {
        validExport.articles = articles;
      }
    } else {
      validExport.articles = void 0;
    }
  }
  if (defined(value.top_level)) {
    validExport.top_level = validateChoice(value.top_level || "sections", {
      ...incrementOptions("top_level", opts),
      choices: ["parts", "chapters", "sections"]
    });
  }
  if (defined(value.sub_articles)) {
    if (validExport.format !== ExportFormats.xml) {
      validationError("sub_articles are only supported for 'jats' export", opts);
      validExport.sub_articles = void 0;
    } else {
      validExport.sub_articles = validateList(value.sub_articles, { coerce: true, ...incrementOptions("sub_articles", opts) }, (file, ind) => {
        return validateString(file, incrementOptions(`sub_articles.${ind}`, opts));
      });
    }
  }
  if (defined(value.toc)) {
    const tocOpts = incrementOptions("toc", opts);
    if (validExport.articles || validExport.sub_articles) {
      validationError("export cannot define both toc and articles/sub_articles; ignoring toc", tocOpts);
      validExport.toc = void 0;
    } else if (typeof value.toc === "string") {
      validExport.tocFile = value.toc;
      validExport.toc = void 0;
    } else {
      validExport.toc = validateTOC(value.toc, tocOpts);
    }
  }
  return validExport;
}

// ../myst-frontmatter/dist/downloads/validators.js
var DOWNLOAD_KEY_OBJECT = {
  required: [],
  optional: ["title", "url", "id", "filename", "format", "static"],
  alias: {
    ref: "id",
    file: "url"
  }
};
function validateDownload(input3, opts) {
  if (typeof input3 === "string") {
    input3 = { url: input3 };
  }
  const value = validateObjectKeys(input3, DOWNLOAD_KEY_OBJECT, opts);
  if (value === void 0)
    return void 0;
  const output2 = {};
  if (defined(value.id)) {
    output2.id = validateString(value.id, incrementOptions("id", opts));
  }
  if (defined(value.url)) {
    output2.url = validateString(value.url, incrementOptions("url", opts));
  }
  if (output2.url && output2.id) {
    return validationError(`download must define only one of id and file/url, not both`, opts);
  }
  if (!output2.url && !output2.id) {
    return validationError(`download must define either id or file/url`, opts);
  }
  if (defined(value.title)) {
    output2.title = validateString(value.title, incrementOptions("title", opts));
  }
  if (defined(value.filename)) {
    output2.filename = validateString(value.filename, incrementOptions("filename", opts));
  }
  if (defined(value.format)) {
    output2.format = validateExportFormat(value.format, incrementOptions("format", opts));
  }
  if (defined(value.static)) {
    output2.static = validateBoolean(value.static, incrementOptions("static", opts));
  }
  return output2;
}
function validateDownloadsList(input3, opts) {
  if (input3 === void 0)
    return void 0;
  const downloadOptions = { coerce: true, ...incrementOptions("downloads", opts) };
  const output2 = validateList(input3, downloadOptions, (exp, ind) => {
    return validateDownload(exp, incrementOptions(`downloads.${ind}`, opts));
  });
  if (!output2)
    return void 0;
  const duplicateIds = /* @__PURE__ */ new Set();
  const duplicateUrls = /* @__PURE__ */ new Set();
  output2.forEach((download, ind) => {
    if (download.id && output2.slice(ind + 1).map(({ id }) => id).includes(download.id)) {
      duplicateIds.add(download.id);
    }
    if (download.url && output2.slice(ind + 1).map(({ url }) => url).includes(download.url)) {
      duplicateUrls.add(download.url);
    }
  });
  if (duplicateIds.size) {
    validationError(`duplicate download ids: ${[...duplicateIds].join(", ")}`, downloadOptions);
  }
  if (duplicateUrls.size) {
    validationError(`duplicate download urls: ${[...duplicateUrls].join(", ")}`, downloadOptions);
  }
  return output2;
}

// ../myst-frontmatter/dist/funding/validators.js
var AWARD_KEYS = ["id", "name", "description", "sources", "recipients", "investigators"];
var AWARD_ALIASES = { source: "sources", recipient: "recipients", investigator: "investigators" };
var FUNDING_KEYS = ["statement", "open_access", "awards"];
var FUNDING_ALIASES = { award: "awards" };
function validateAward(input3, stash, opts) {
  const value = validateObjectKeys(input3, { optional: AWARD_KEYS, alias: AWARD_ALIASES }, opts);
  if (value === void 0)
    return void 0;
  const output2 = {};
  if (defined(value.id)) {
    output2.id = validateString(value.id, { ...incrementOptions("id", opts), coerceNumber: true });
  }
  if (defined(value.name)) {
    output2.name = validateString(value.name, incrementOptions("name", opts));
  }
  if (defined(value.description)) {
    output2.description = validateString(value.description, incrementOptions("description", opts));
  }
  if (defined(value.sources)) {
    output2.sources = validateList(value.sources, { coerce: true, ...incrementOptions("sources", opts) }, (source2, index4) => {
      return validateAndStashObject(source2, stash, "affiliations", validateAffiliation, incrementOptions(`sources.${index4}`, opts));
    });
  }
  if (defined(value.recipients)) {
    output2.recipients = validateList(value.recipients, { coerce: true, ...incrementOptions("recipients", opts) }, (recipient, index4) => {
      return validateAndStashObject(recipient, stash, "contributors", (v, o) => validateContributor(v, stash, o), incrementOptions(`recipients.${index4}`, opts));
    });
  }
  if (defined(value.investigators)) {
    output2.investigators = validateList(value.investigators, { coerce: true, ...incrementOptions("investigators", opts) }, (investigator, index4) => {
      return validateAndStashObject(investigator, stash, "contributors", (v, o) => validateContributor(v, stash, o), incrementOptions(`investigators.${index4}`, opts));
    });
  }
  return output2;
}
function validateFunding(input3, stash, opts) {
  if (typeof input3 === "string") {
    input3 = { statement: input3 };
  }
  const valueAsObj = validateObject(input3, opts);
  if (valueAsObj === void 0)
    return void 0;
  const value = validateKeys(valueAsObj, { optional: FUNDING_KEYS, alias: FUNDING_ALIASES }, { ...opts, suppressErrors: true, suppressWarnings: true });
  if (value === void 0)
    return void 0;
  if (!value.awards) {
    validateKeys(valueAsObj, {
      optional: [...FUNDING_KEYS, ...AWARD_KEYS],
      alias: { ...FUNDING_ALIASES, ...AWARD_ALIASES }
    }, opts);
    const valueAsAward = validateObjectKeys(input3, { optional: AWARD_KEYS, alias: AWARD_ALIASES }, { ...opts, suppressErrors: true, suppressWarnings: true });
    if (valueAsAward && Object.keys(valueAsAward).length > 0) {
      value.awards = [
        validateObjectKeys(input3, { optional: AWARD_KEYS, alias: AWARD_ALIASES }, { ...opts, suppressErrors: true, suppressWarnings: true })
      ];
    }
  } else {
    validateKeys(valueAsObj, { optional: FUNDING_KEYS, alias: FUNDING_ALIASES }, opts);
  }
  const output2 = {};
  if (defined(value.statement)) {
    output2.statement = validateString(value.statement, incrementOptions("statement", opts));
  }
  if (defined(value.open_access)) {
    output2.open_access = validateString(value.open_access, incrementOptions("open_access", opts));
  }
  if (defined(value.awards)) {
    output2.awards = validateList(value.awards, { coerce: true, ...incrementOptions("awards", opts) }, (award, index4) => {
      return validateAward(award, stash, incrementOptions(`awards.${index4}`, opts));
    });
  }
  return output2;
}

// ../myst-frontmatter/dist/jupytext/validators.js
var TEXT_REPRESENTATION_KEYS = ["extension", "format_name", "format_version", "jupytext_version"];
var JUPYTEXT_KEYS = ["formats", "text_representation"];
function validateTextRepresentation(input3, opts) {
  const value = validateObjectKeys(input3, { optional: TEXT_REPRESENTATION_KEYS }, opts);
  if (value === void 0)
    return void 0;
  const output2 = {};
  if (defined(value.extension)) {
    output2.extension = validateString(value.extension, incrementOptions("extension", opts));
  }
  if (defined(value.format_name)) {
    output2.format_name = validateString(value.format_name, incrementOptions("format_name", opts));
  }
  if (defined(value.format_version)) {
    const format_version = typeof value.format_version === "number" ? String(value.format_version) : value.format_version;
    output2.format_version = validateString(format_version, incrementOptions("format_version", opts));
  }
  if (defined(value.jupytext_version)) {
    output2.jupytext_version = validateString(value.jupytext_version, incrementOptions("jupytext_version", opts));
  }
  return output2;
}
function validateJupytext(input3, opts) {
  const value = validateObjectKeys(input3, { optional: JUPYTEXT_KEYS }, opts);
  if (value === void 0)
    return void 0;
  const output2 = {};
  if (defined(value.formats)) {
    output2.formats = validateString(value.formats, incrementOptions("formats", opts));
  }
  if (defined(value.text_representation)) {
    output2.text_representation = validateTextRepresentation(value.text_representation, incrementOptions("text_representation", opts));
  }
  return output2;
}

// ../myst-frontmatter/dist/kernelspec/validators.js
var KERNELSPEC_KEYS = ["name", "display_name", "language", "argv", "env"];
function validateKernelSpec(input3, opts) {
  const value = validateObjectKeys(input3, { optional: KERNELSPEC_KEYS }, opts);
  if (value === void 0)
    return void 0;
  let name3;
  if (defined(value.name)) {
    const validatedName = validateString(value.name, incrementOptions("name", opts));
    if (validatedName === void 0)
      return void 0;
    name3 = validatedName;
  } else {
    name3 = "python3";
    validationWarning(`"name" key is required; using '${name3}' as placeholder value`, opts);
  }
  let displayName;
  if (defined(value.display_name)) {
    const validatedDisplayName = validateString(value.display_name, incrementOptions("display_name", opts));
    if (validatedDisplayName === void 0)
      return void 0;
    displayName = validatedDisplayName;
  } else {
    displayName = `${name3} Kernel`;
    validationWarning(`"display_name" key is required; using '${displayName}' as placeholder value`, opts);
  }
  const output2 = { name: name3, display_name: displayName };
  if (defined(value.language)) {
    output2.language = validateString(value.language, incrementOptions("language", opts));
  }
  if (defined(value.env)) {
    output2.env = validateObject(value.env, incrementOptions("env", opts));
  }
  if (defined(value.argv)) {
    output2.argv = validateList(value.argv, incrementOptions("argv", opts), (arg2, index4) => {
      return validateString(arg2, incrementOptions(`argv.${index4}`, opts));
    });
  }
  return output2;
}

// ../myst-frontmatter/dist/licenses/licenses.js
var licenses = {
  "0BSD": {
    name: "BSD Zero Clause License",
    osi: true
  },
  "3D-Slicer-1.0": {
    name: "3D Slicer License v1.0"
  },
  AAL: {
    name: "Attribution Assurance License",
    osi: true
  },
  Abstyles: {
    name: "Abstyles License"
  },
  "AdaCore-doc": {
    name: "AdaCore Doc License"
  },
  "Adobe-2006": {
    name: "Adobe Systems Incorporated Source Code License Agreement"
  },
  "Adobe-Display-PostScript": {
    name: "Adobe Display PostScript License"
  },
  "Adobe-Glyph": {
    name: "Adobe Glyph List License"
  },
  "Adobe-Utopia": {
    name: "Adobe Utopia Font License"
  },
  ADSL: {
    name: "Amazon Digital Services License"
  },
  "AFL-1.1": {
    name: "Academic Free License v1.1",
    osi: true,
    free: true
  },
  "AFL-1.2": {
    name: "Academic Free License v1.2",
    osi: true,
    free: true
  },
  "AFL-2.0": {
    name: "Academic Free License v2.0",
    osi: true,
    free: true
  },
  "AFL-2.1": {
    name: "Academic Free License v2.1",
    osi: true,
    free: true
  },
  "AFL-3.0": {
    name: "Academic Free License v3.0",
    osi: true,
    free: true
  },
  Afmparse: {
    name: "Afmparse License"
  },
  "AGPL-1.0-only": {
    name: "Affero General Public License v1.0 only"
  },
  "AGPL-1.0-or-later": {
    name: "Affero General Public License v1.0 or later"
  },
  "AGPL-3.0-only": {
    name: "GNU Affero General Public License v3.0 only",
    osi: true,
    free: true
  },
  "AGPL-3.0-or-later": {
    name: "GNU Affero General Public License v3.0 or later",
    osi: true,
    free: true
  },
  Aladdin: {
    name: "Aladdin Free Public License"
  },
  "AMD-newlib": {
    name: "AMD newlib License"
  },
  AMDPLPA: {
    name: "AMD's plpa_map.c License"
  },
  AML: {
    name: "Apple MIT License"
  },
  "AML-glslang": {
    name: "AML glslang variant License"
  },
  AMPAS: {
    name: "Academy of Motion Picture Arts and Sciences BSD"
  },
  "ANTLR-PD": {
    name: "ANTLR Software Rights Notice"
  },
  "ANTLR-PD-fallback": {
    name: "ANTLR Software Rights Notice with license fallback"
  },
  "any-OSI": {
    name: "Any OSI License"
  },
  "any-OSI-perl-modules": {
    name: "Any OSI License - Perl Modules"
  },
  "Apache-1.0": {
    name: "Apache License 1.0",
    free: true
  },
  "Apache-1.1": {
    name: "Apache License 1.1",
    osi: true,
    free: true
  },
  "Apache-2.0": {
    name: "Apache License 2.0",
    osi: true,
    free: true
  },
  APAFML: {
    name: "Adobe Postscript AFM License"
  },
  "APL-1.0": {
    name: "Adaptive Public License 1.0",
    osi: true
  },
  "App-s2p": {
    name: "App::s2p License"
  },
  "APSL-1.0": {
    name: "Apple Public Source License 1.0",
    osi: true
  },
  "APSL-1.1": {
    name: "Apple Public Source License 1.1",
    osi: true
  },
  "APSL-1.2": {
    name: "Apple Public Source License 1.2",
    osi: true
  },
  "APSL-2.0": {
    name: "Apple Public Source License 2.0",
    osi: true,
    free: true
  },
  "Arphic-1999": {
    name: "Arphic Public License"
  },
  "Artistic-1.0": {
    name: "Artistic License 1.0",
    osi: true
  },
  "Artistic-1.0-cl8": {
    name: "Artistic License 1.0 w/clause 8",
    osi: true
  },
  "Artistic-1.0-Perl": {
    name: "Artistic License 1.0 (Perl)",
    osi: true
  },
  "Artistic-2.0": {
    name: "Artistic License 2.0",
    osi: true,
    free: true
  },
  "Artistic-dist": {
    name: "Artistic License 1.0 (dist)"
  },
  "Aspell-RU": {
    name: "Aspell Russian License"
  },
  "ASWF-Digital-Assets-1.0": {
    name: "ASWF Digital Assets License version 1.0"
  },
  "ASWF-Digital-Assets-1.1": {
    name: "ASWF Digital Assets License 1.1"
  },
  Baekmuk: {
    name: "Baekmuk License"
  },
  Bahyph: {
    name: "Bahyph License"
  },
  Barr: {
    name: "Barr License"
  },
  "bcrypt-Solar-Designer": {
    name: "bcrypt Solar Designer License"
  },
  Beerware: {
    name: "Beerware License"
  },
  "Bitstream-Charter": {
    name: "Bitstream Charter Font License"
  },
  "Bitstream-Vera": {
    name: "Bitstream Vera Font License"
  },
  "BitTorrent-1.0": {
    name: "BitTorrent Open Source License v1.0"
  },
  "BitTorrent-1.1": {
    name: "BitTorrent Open Source License v1.1",
    free: true
  },
  blessing: {
    name: "SQLite Blessing"
  },
  "BlueOak-1.0.0": {
    name: "Blue Oak Model License 1.0.0",
    osi: true
  },
  "Boehm-GC": {
    name: "Boehm-Demers-Weiser GC License"
  },
  "Boehm-GC-without-fee": {
    name: "Boehm-Demers-Weiser GC License (without fee)"
  },
  Borceux: {
    name: "Borceux license"
  },
  "Brian-Gladman-2-Clause": {
    name: "Brian Gladman 2-Clause License"
  },
  "Brian-Gladman-3-Clause": {
    name: "Brian Gladman 3-Clause License"
  },
  "BSD-1-Clause": {
    name: "BSD 1-Clause License",
    osi: true
  },
  "BSD-2-Clause": {
    name: 'BSD 2-Clause "Simplified" License',
    osi: true,
    free: true
  },
  "BSD-2-Clause-Darwin": {
    name: "BSD 2-Clause - Ian Darwin variant"
  },
  "BSD-2-Clause-first-lines": {
    name: "BSD 2-Clause - first lines requirement"
  },
  "BSD-2-Clause-Patent": {
    name: "BSD-2-Clause Plus Patent License",
    osi: true
  },
  "BSD-2-Clause-pkgconf-disclaimer": {
    name: "BSD 2-Clause pkgconf disclaimer variant"
  },
  "BSD-2-Clause-Views": {
    name: "BSD 2-Clause with views sentence"
  },
  "BSD-3-Clause": {
    name: 'BSD 3-Clause "New" or "Revised" License',
    osi: true,
    free: true
  },
  "BSD-3-Clause-acpica": {
    name: "BSD 3-Clause acpica variant"
  },
  "BSD-3-Clause-Attribution": {
    name: "BSD with attribution"
  },
  "BSD-3-Clause-Clear": {
    name: "BSD 3-Clause Clear License",
    free: true
  },
  "BSD-3-Clause-flex": {
    name: "BSD 3-Clause Flex variant"
  },
  "BSD-3-Clause-HP": {
    name: "Hewlett-Packard BSD variant license"
  },
  "BSD-3-Clause-LBNL": {
    name: "Lawrence Berkeley National Labs BSD variant license",
    osi: true
  },
  "BSD-3-Clause-Modification": {
    name: "BSD 3-Clause Modification"
  },
  "BSD-3-Clause-No-Military-License": {
    name: "BSD 3-Clause No Military License"
  },
  "BSD-3-Clause-No-Nuclear-License": {
    name: "BSD 3-Clause No Nuclear License"
  },
  "BSD-3-Clause-No-Nuclear-License-2014": {
    name: "BSD 3-Clause No Nuclear License 2014"
  },
  "BSD-3-Clause-No-Nuclear-Warranty": {
    name: "BSD 3-Clause No Nuclear Warranty"
  },
  "BSD-3-Clause-Open-MPI": {
    name: "BSD 3-Clause Open MPI variant"
  },
  "BSD-3-Clause-Sun": {
    name: "BSD 3-Clause Sun Microsystems"
  },
  "BSD-4-Clause": {
    name: 'BSD 4-Clause "Original" or "Old" License',
    free: true
  },
  "BSD-4-Clause-Shortened": {
    name: "BSD 4 Clause Shortened"
  },
  "BSD-4-Clause-UC": {
    name: "BSD-4-Clause (University of California-Specific)"
  },
  "BSD-4.3RENO": {
    name: "BSD 4.3 RENO License"
  },
  "BSD-4.3TAHOE": {
    name: "BSD 4.3 TAHOE License"
  },
  "BSD-Advertising-Acknowledgement": {
    name: "BSD Advertising Acknowledgement License"
  },
  "BSD-Attribution-HPND-disclaimer": {
    name: "BSD with Attribution and HPND disclaimer"
  },
  "BSD-Inferno-Nettverk": {
    name: "BSD-Inferno-Nettverk"
  },
  "BSD-Protection": {
    name: "BSD Protection License"
  },
  "BSD-Source-beginning-file": {
    name: "BSD Source Code Attribution - beginning of file variant"
  },
  "BSD-Source-Code": {
    name: "BSD Source Code Attribution"
  },
  "BSD-Systemics": {
    name: "Systemics BSD variant license"
  },
  "BSD-Systemics-W3Works": {
    name: "Systemics W3Works BSD variant license"
  },
  "BSL-1.0": {
    name: "Boost Software License 1.0",
    osi: true,
    free: true
  },
  "BUSL-1.1": {
    name: "Business Source License 1.1"
  },
  "bzip2-1.0.6": {
    name: "bzip2 and libbzip2 License v1.0.6"
  },
  "C-UDA-1.0": {
    name: "Computational Use of Data Agreement v1.0"
  },
  "CAL-1.0": {
    name: "Cryptographic Autonomy License 1.0",
    osi: true
  },
  "CAL-1.0-Combined-Work-Exception": {
    name: "Cryptographic Autonomy License 1.0 (Combined Work Exception)",
    osi: true
  },
  Caldera: {
    name: "Caldera License"
  },
  "Caldera-no-preamble": {
    name: "Caldera License (without preamble)"
  },
  Catharon: {
    name: "Catharon License"
  },
  "CATOSL-1.1": {
    name: "Computer Associates Trusted Open Source License 1.1",
    osi: true
  },
  "CC-BY-1.0": {
    name: "Creative Commons Attribution 1.0 Generic",
    CC: true
  },
  "CC-BY-2.0": {
    name: "Creative Commons Attribution 2.0 Generic",
    CC: true
  },
  "CC-BY-2.5": {
    name: "Creative Commons Attribution 2.5 Generic",
    CC: true
  },
  "CC-BY-2.5-AU": {
    name: "Creative Commons Attribution 2.5 Australia",
    CC: true
  },
  "CC-BY-3.0": {
    name: "Creative Commons Attribution 3.0 Unported",
    CC: true
  },
  "CC-BY-3.0-AT": {
    name: "Creative Commons Attribution 3.0 Austria",
    CC: true
  },
  "CC-BY-3.0-AU": {
    name: "Creative Commons Attribution 3.0 Australia",
    CC: true
  },
  "CC-BY-3.0-DE": {
    name: "Creative Commons Attribution 3.0 Germany",
    CC: true
  },
  "CC-BY-3.0-IGO": {
    name: "Creative Commons Attribution 3.0 IGO",
    CC: true
  },
  "CC-BY-3.0-NL": {
    name: "Creative Commons Attribution 3.0 Netherlands",
    CC: true
  },
  "CC-BY-3.0-US": {
    name: "Creative Commons Attribution 3.0 United States",
    CC: true
  },
  "CC-BY-4.0": {
    name: "Creative Commons Attribution 4.0 International",
    free: true,
    CC: true
  },
  "CC-BY-NC-1.0": {
    name: "Creative Commons Attribution Non Commercial 1.0 Generic",
    CC: true
  },
  "CC-BY-NC-2.0": {
    name: "Creative Commons Attribution Non Commercial 2.0 Generic",
    CC: true
  },
  "CC-BY-NC-2.5": {
    name: "Creative Commons Attribution Non Commercial 2.5 Generic",
    CC: true
  },
  "CC-BY-NC-3.0": {
    name: "Creative Commons Attribution Non Commercial 3.0 Unported",
    CC: true
  },
  "CC-BY-NC-3.0-DE": {
    name: "Creative Commons Attribution Non Commercial 3.0 Germany",
    CC: true
  },
  "CC-BY-NC-4.0": {
    name: "Creative Commons Attribution Non Commercial 4.0 International",
    CC: true
  },
  "CC-BY-NC-ND-1.0": {
    name: "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic",
    CC: true
  },
  "CC-BY-NC-ND-2.0": {
    name: "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic",
    CC: true
  },
  "CC-BY-NC-ND-2.5": {
    name: "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic",
    CC: true
  },
  "CC-BY-NC-ND-3.0": {
    name: "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported",
    CC: true
  },
  "CC-BY-NC-ND-3.0-DE": {
    name: "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany",
    CC: true
  },
  "CC-BY-NC-ND-3.0-IGO": {
    name: "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO",
    CC: true
  },
  "CC-BY-NC-ND-4.0": {
    name: "Creative Commons Attribution Non Commercial No Derivatives 4.0 International",
    CC: true
  },
  "CC-BY-NC-SA-1.0": {
    name: "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic",
    CC: true
  },
  "CC-BY-NC-SA-2.0": {
    name: "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic",
    CC: true
  },
  "CC-BY-NC-SA-2.0-DE": {
    name: "Creative Commons Attribution Non Commercial Share Alike 2.0 Germany",
    CC: true
  },
  "CC-BY-NC-SA-2.0-FR": {
    name: "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France",
    CC: true
  },
  "CC-BY-NC-SA-2.0-UK": {
    name: "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales",
    CC: true
  },
  "CC-BY-NC-SA-2.5": {
    name: "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic",
    CC: true
  },
  "CC-BY-NC-SA-3.0": {
    name: "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported",
    CC: true
  },
  "CC-BY-NC-SA-3.0-DE": {
    name: "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany",
    CC: true
  },
  "CC-BY-NC-SA-3.0-IGO": {
    name: "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO",
    CC: true
  },
  "CC-BY-NC-SA-4.0": {
    name: "Creative Commons Attribution Non Commercial Share Alike 4.0 International",
    CC: true
  },
  "CC-BY-ND-1.0": {
    name: "Creative Commons Attribution No Derivatives 1.0 Generic",
    CC: true
  },
  "CC-BY-ND-2.0": {
    name: "Creative Commons Attribution No Derivatives 2.0 Generic",
    CC: true
  },
  "CC-BY-ND-2.5": {
    name: "Creative Commons Attribution No Derivatives 2.5 Generic",
    CC: true
  },
  "CC-BY-ND-3.0": {
    name: "Creative Commons Attribution No Derivatives 3.0 Unported",
    CC: true
  },
  "CC-BY-ND-3.0-DE": {
    name: "Creative Commons Attribution No Derivatives 3.0 Germany",
    CC: true
  },
  "CC-BY-ND-4.0": {
    name: "Creative Commons Attribution No Derivatives 4.0 International",
    CC: true
  },
  "CC-BY-SA-1.0": {
    name: "Creative Commons Attribution Share Alike 1.0 Generic",
    CC: true
  },
  "CC-BY-SA-2.0": {
    name: "Creative Commons Attribution Share Alike 2.0 Generic",
    CC: true
  },
  "CC-BY-SA-2.0-UK": {
    name: "Creative Commons Attribution Share Alike 2.0 England and Wales",
    CC: true
  },
  "CC-BY-SA-2.1-JP": {
    name: "Creative Commons Attribution Share Alike 2.1 Japan",
    CC: true
  },
  "CC-BY-SA-2.5": {
    name: "Creative Commons Attribution Share Alike 2.5 Generic",
    CC: true
  },
  "CC-BY-SA-3.0": {
    name: "Creative Commons Attribution Share Alike 3.0 Unported",
    CC: true
  },
  "CC-BY-SA-3.0-AT": {
    name: "Creative Commons Attribution Share Alike 3.0 Austria",
    CC: true
  },
  "CC-BY-SA-3.0-DE": {
    name: "Creative Commons Attribution Share Alike 3.0 Germany",
    CC: true
  },
  "CC-BY-SA-3.0-IGO": {
    name: "Creative Commons Attribution-ShareAlike 3.0 IGO",
    CC: true
  },
  "CC-BY-SA-4.0": {
    name: "Creative Commons Attribution Share Alike 4.0 International",
    free: true,
    CC: true
  },
  "CC-PDDC": {
    name: "Creative Commons Public Domain Dedication and Certification",
    CC: true
  },
  "CC-PDM-1.0": {
    name: "Creative    Commons Public Domain Mark 1.0 Universal",
    CC: true
  },
  "CC-SA-1.0": {
    name: "Creative Commons Share Alike 1.0 Generic",
    CC: true
  },
  "CC0-1.0": {
    name: "Creative Commons Zero v1.0 Universal",
    free: true,
    CC: true
  },
  "CDDL-1.0": {
    name: "Common Development and Distribution License 1.0",
    osi: true,
    free: true
  },
  "CDDL-1.1": {
    name: "Common Development and Distribution License 1.1"
  },
  "CDL-1.0": {
    name: "Common Documentation License 1.0"
  },
  "CDLA-Permissive-1.0": {
    name: "Community Data License Agreement Permissive 1.0"
  },
  "CDLA-Permissive-2.0": {
    name: "Community Data License Agreement Permissive 2.0"
  },
  "CDLA-Sharing-1.0": {
    name: "Community Data License Agreement Sharing 1.0"
  },
  "CECILL-1.0": {
    name: "CeCILL Free Software License Agreement v1.0"
  },
  "CECILL-1.1": {
    name: "CeCILL Free Software License Agreement v1.1"
  },
  "CECILL-2.0": {
    name: "CeCILL Free Software License Agreement v2.0",
    free: true
  },
  "CECILL-2.1": {
    name: "CeCILL Free Software License Agreement v2.1",
    osi: true
  },
  "CECILL-B": {
    name: "CeCILL-B Free Software License Agreement",
    free: true
  },
  "CECILL-C": {
    name: "CeCILL-C Free Software License Agreement",
    free: true
  },
  "CERN-OHL-1.1": {
    name: "CERN Open Hardware Licence v1.1"
  },
  "CERN-OHL-1.2": {
    name: "CERN Open Hardware Licence v1.2"
  },
  "CERN-OHL-P-2.0": {
    name: "CERN Open Hardware Licence Version 2 - Permissive",
    osi: true
  },
  "CERN-OHL-S-2.0": {
    name: "CERN Open Hardware Licence Version 2 - Strongly Reciprocal",
    osi: true
  },
  "CERN-OHL-W-2.0": {
    name: "CERN Open Hardware Licence Version 2 - Weakly Reciprocal",
    osi: true
  },
  CFITSIO: {
    name: "CFITSIO License"
  },
  "check-cvs": {
    name: "check-cvs License"
  },
  checkmk: {
    name: "Checkmk License"
  },
  ClArtistic: {
    name: "Clarified Artistic License",
    free: true
  },
  Clips: {
    name: "Clips License"
  },
  "CMU-Mach": {
    name: "CMU Mach License"
  },
  "CMU-Mach-nodoc": {
    name: "CMU    Mach - no notices-in-documentation variant"
  },
  "CNRI-Jython": {
    name: "CNRI Jython License"
  },
  "CNRI-Python": {
    name: "CNRI Python License",
    osi: true
  },
  "CNRI-Python-GPL-Compatible": {
    name: "CNRI Python Open Source GPL Compatible License Agreement"
  },
  "COIL-1.0": {
    name: "Copyfree Open Innovation License"
  },
  "Community-Spec-1.0": {
    name: "Community Specification License 1.0"
  },
  "Condor-1.1": {
    name: "Condor Public License v1.1",
    free: true
  },
  "copyleft-next-0.3.0": {
    name: "copyleft-next 0.3.0"
  },
  "copyleft-next-0.3.1": {
    name: "copyleft-next 0.3.1"
  },
  "Cornell-Lossless-JPEG": {
    name: "Cornell Lossless JPEG License"
  },
  "CPAL-1.0": {
    name: "Common Public Attribution License 1.0",
    osi: true,
    free: true
  },
  "CPL-1.0": {
    name: "Common Public License 1.0",
    osi: true,
    free: true
  },
  "CPOL-1.02": {
    name: "Code Project Open License 1.02"
  },
  Cronyx: {
    name: "Cronyx License"
  },
  Crossword: {
    name: "Crossword License"
  },
  CryptoSwift: {
    name: "CryptoSwift License"
  },
  CrystalStacker: {
    name: "CrystalStacker License"
  },
  "CUA-OPL-1.0": {
    name: "CUA Office Public License v1.0",
    osi: true
  },
  Cube: {
    name: "Cube License"
  },
  curl: {
    name: "curl License"
  },
  "cve-tou": {
    name: "Common Vulnerability Enumeration ToU License"
  },
  "D-FSL-1.0": {
    name: "Deutsche Freie Software Lizenz"
  },
  "DEC-3-Clause": {
    name: "DEC 3-Clause License"
  },
  diffmark: {
    name: "diffmark license"
  },
  "DL-DE-BY-2.0": {
    name: "Data licence Germany \u2013 attribution \u2013 version 2.0"
  },
  "DL-DE-ZERO-2.0": {
    name: "Data licence Germany \u2013 zero \u2013 version 2.0"
  },
  DOC: {
    name: "DOC License"
  },
  "DocBook-DTD": {
    name: "DocBook DTD License"
  },
  "DocBook-Schema": {
    name: "DocBook Schema License"
  },
  "DocBook-Stylesheet": {
    name: "DocBook Stylesheet License"
  },
  "DocBook-XML": {
    name: "DocBook XML License"
  },
  Dotseqn: {
    name: "Dotseqn License"
  },
  "DRL-1.0": {
    name: "Detection Rule License 1.0"
  },
  "DRL-1.1": {
    name: "Detection Rule License 1.1"
  },
  DSDP: {
    name: "DSDP License"
  },
  dtoa: {
    name: "David M. Gay dtoa License"
  },
  dvipdfm: {
    name: "dvipdfm License"
  },
  "ECL-1.0": {
    name: "Educational Community License v1.0",
    osi: true
  },
  "ECL-2.0": {
    name: "Educational Community License v2.0",
    osi: true,
    free: true
  },
  "EFL-1.0": {
    name: "Eiffel Forum License v1.0",
    osi: true
  },
  "EFL-2.0": {
    name: "Eiffel Forum License v2.0",
    osi: true,
    free: true
  },
  eGenix: {
    name: "eGenix.com Public License 1.1.0"
  },
  "Elastic-2.0": {
    name: "Elastic License 2.0"
  },
  Entessa: {
    name: "Entessa Public License v1.0",
    osi: true
  },
  EPICS: {
    name: "EPICS Open License"
  },
  "EPL-1.0": {
    name: "Eclipse Public License 1.0",
    osi: true,
    free: true
  },
  "EPL-2.0": {
    name: "Eclipse Public License 2.0",
    osi: true,
    free: true
  },
  "ErlPL-1.1": {
    name: "Erlang Public License v1.1"
  },
  "etalab-2.0": {
    name: "Etalab Open License 2.0"
  },
  EUDatagrid: {
    name: "EU DataGrid Software License",
    osi: true,
    free: true
  },
  "EUPL-1.0": {
    name: "European Union Public License 1.0"
  },
  "EUPL-1.1": {
    name: "European Union Public License 1.1",
    osi: true,
    free: true
  },
  "EUPL-1.2": {
    name: "European Union Public License 1.2",
    osi: true,
    free: true
  },
  Eurosym: {
    name: "Eurosym License"
  },
  Fair: {
    name: "Fair License",
    osi: true
  },
  FBM: {
    name: "Fuzzy Bitmap License"
  },
  "FDK-AAC": {
    name: "Fraunhofer FDK AAC Codec Library"
  },
  "Ferguson-Twofish": {
    name: "Ferguson Twofish License"
  },
  "Frameworx-1.0": {
    name: "Frameworx Open License 1.0",
    osi: true
  },
  "FreeBSD-DOC": {
    name: "FreeBSD Documentation License"
  },
  FreeImage: {
    name: "FreeImage Public License v1.0"
  },
  FSFAP: {
    name: "FSF All Permissive License",
    free: true
  },
  "FSFAP-no-warranty-disclaimer": {
    name: "FSF All Permissive License (without Warranty)"
  },
  FSFUL: {
    name: "FSF Unlimited License"
  },
  FSFULLR: {
    name: "FSF Unlimited License (with License Retention)"
  },
  FSFULLRSD: {
    name: "FSF Unlimited License (with License Retention and Short Disclaimer)"
  },
  FSFULLRWD: {
    name: "FSF Unlimited License (With License Retention and Warranty Disclaimer)"
  },
  "FSL-1.1-ALv2": {
    name: "Functional Source License, Version 1.1, ALv2 Future License"
  },
  "FSL-1.1-MIT": {
    name: "Functional Source License, Version 1.1, MIT Future License"
  },
  FTL: {
    name: "Freetype Project License",
    free: true
  },
  Furuseth: {
    name: "Furuseth License"
  },
  fwlw: {
    name: "fwlw License"
  },
  "Game-Programming-Gems": {
    name: "Game Programming Gems License"
  },
  "GCR-docs": {
    name: "Gnome GCR Documentation License"
  },
  GD: {
    name: "GD License"
  },
  "generic-xts": {
    name: "Generic XTS License"
  },
  "GFDL-1.1-invariants-only": {
    name: "GNU Free Documentation License v1.1 only - invariants"
  },
  "GFDL-1.1-invariants-or-later": {
    name: "GNU Free Documentation License v1.1 or later - invariants"
  },
  "GFDL-1.1-no-invariants-only": {
    name: "GNU Free Documentation License v1.1 only - no invariants"
  },
  "GFDL-1.1-no-invariants-or-later": {
    name: "GNU Free Documentation License v1.1 or later - no invariants"
  },
  "GFDL-1.1-only": {
    name: "GNU Free Documentation License v1.1 only",
    free: true
  },
  "GFDL-1.1-or-later": {
    name: "GNU Free Documentation License v1.1 or later",
    free: true
  },
  "GFDL-1.2-invariants-only": {
    name: "GNU Free Documentation License v1.2 only - invariants"
  },
  "GFDL-1.2-invariants-or-later": {
    name: "GNU Free Documentation License v1.2 or later - invariants"
  },
  "GFDL-1.2-no-invariants-only": {
    name: "GNU Free Documentation License v1.2 only - no invariants"
  },
  "GFDL-1.2-no-invariants-or-later": {
    name: "GNU Free Documentation License v1.2 or later - no invariants"
  },
  "GFDL-1.2-only": {
    name: "GNU Free Documentation License v1.2 only",
    free: true
  },
  "GFDL-1.2-or-later": {
    name: "GNU Free Documentation License v1.2 or later",
    free: true
  },
  "GFDL-1.3-invariants-only": {
    name: "GNU Free Documentation License v1.3 only - invariants"
  },
  "GFDL-1.3-invariants-or-later": {
    name: "GNU Free Documentation License v1.3 or later - invariants"
  },
  "GFDL-1.3-no-invariants-only": {
    name: "GNU Free Documentation License v1.3 only - no invariants"
  },
  "GFDL-1.3-no-invariants-or-later": {
    name: "GNU Free Documentation License v1.3 or later - no invariants"
  },
  "GFDL-1.3-only": {
    name: "GNU Free Documentation License v1.3 only",
    free: true
  },
  "GFDL-1.3-or-later": {
    name: "GNU Free Documentation License v1.3 or later",
    free: true
  },
  Giftware: {
    name: "Giftware License"
  },
  GL2PS: {
    name: "GL2PS License"
  },
  Glide: {
    name: "3dfx Glide License"
  },
  Glulxe: {
    name: "Glulxe License"
  },
  GLWTPL: {
    name: "Good Luck With That Public License"
  },
  gnuplot: {
    name: "gnuplot License",
    free: true
  },
  "GPL-1.0-only": {
    name: "GNU General Public License v1.0 only"
  },
  "GPL-1.0-or-later": {
    name: "GNU General Public License v1.0 or later"
  },
  "GPL-2.0-only": {
    name: "GNU General Public License v2.0 only",
    osi: true,
    free: true
  },
  "GPL-2.0-or-later": {
    name: "GNU General Public License v2.0 or later",
    osi: true,
    free: true
  },
  "GPL-3.0-only": {
    name: "GNU General Public License v3.0 only",
    osi: true,
    free: true
  },
  "GPL-3.0-or-later": {
    name: "GNU General Public License v3.0 or later",
    osi: true,
    free: true
  },
  "Graphics-Gems": {
    name: "Graphics Gems License"
  },
  "gSOAP-1.3b": {
    name: "gSOAP Public License v1.3b"
  },
  gtkbook: {
    name: "gtkbook License"
  },
  Gutmann: {
    name: "Gutmann License"
  },
  HaskellReport: {
    name: "Haskell Language Report License"
  },
  HDF5: {
    name: "HDF5 License"
  },
  hdparm: {
    name: "hdparm License"
  },
  HIDAPI: {
    name: "HIDAPI License"
  },
  "Hippocratic-2.1": {
    name: "Hippocratic License 2.1"
  },
  "HP-1986": {
    name: "Hewlett-Packard 1986 License"
  },
  "HP-1989": {
    name: "Hewlett-Packard 1989 License"
  },
  HPND: {
    name: "Historical Permission Notice and Disclaimer",
    osi: true,
    free: true
  },
  "HPND-DEC": {
    name: "Historical Permission Notice and Disclaimer - DEC variant"
  },
  "HPND-doc": {
    name: "Historical Permission Notice and Disclaimer - documentation variant"
  },
  "HPND-doc-sell": {
    name: "Historical Permission Notice and Disclaimer - documentation sell variant"
  },
  "HPND-export-US": {
    name: "HPND with US Government export control warning"
  },
  "HPND-export-US-acknowledgement": {
    name: "HPND with US Government export control warning and acknowledgment"
  },
  "HPND-export-US-modify": {
    name: "HPND with US Government export control warning and modification rqmt"
  },
  "HPND-export2-US": {
    name: "HPND with US Government export control and 2 disclaimers"
  },
  "HPND-Fenneberg-Livingston": {
    name: "Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant"
  },
  "HPND-INRIA-IMAG": {
    name: "Historical Permission Notice and Disclaimer    - INRIA-IMAG variant"
  },
  "HPND-Intel": {
    name: "Historical Permission Notice and Disclaimer - Intel variant"
  },
  "HPND-Kevlin-Henney": {
    name: "Historical Permission Notice and Disclaimer - Kevlin Henney variant"
  },
  "HPND-Markus-Kuhn": {
    name: "Historical Permission Notice and Disclaimer - Markus Kuhn variant"
  },
  "HPND-merchantability-variant": {
    name: "Historical Permission Notice and Disclaimer - merchantability variant"
  },
  "HPND-MIT-disclaimer": {
    name: "Historical Permission Notice and Disclaimer with MIT disclaimer"
  },
  "HPND-Netrek": {
    name: "Historical Permission Notice and Disclaimer - Netrek variant"
  },
  "HPND-Pbmplus": {
    name: "Historical Permission Notice and Disclaimer - Pbmplus variant"
  },
  "HPND-sell-MIT-disclaimer-xserver": {
    name: "Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer"
  },
  "HPND-sell-regexpr": {
    name: "Historical Permission Notice and Disclaimer - sell regexpr variant"
  },
  "HPND-sell-variant": {
    name: "Historical Permission Notice and Disclaimer - sell variant"
  },
  "HPND-sell-variant-MIT-disclaimer": {
    name: "HPND sell variant with MIT disclaimer"
  },
  "HPND-sell-variant-MIT-disclaimer-rev": {
    name: "HPND sell variant with MIT disclaimer - reverse"
  },
  "HPND-UC": {
    name: "Historical Permission Notice and Disclaimer - University of California variant"
  },
  "HPND-UC-export-US": {
    name: "Historical Permission Notice and Disclaimer - University of California, US export warning"
  },
  HTMLTIDY: {
    name: "HTML Tidy License"
  },
  "IBM-pibs": {
    name: "IBM PowerPC Initialization and Boot Software"
  },
  ICU: {
    name: "ICU License",
    osi: true
  },
  "IEC-Code-Components-EULA": {
    name: "IEC    Code Components End-user licence agreement"
  },
  IJG: {
    name: "Independent JPEG Group License",
    free: true
  },
  "IJG-short": {
    name: "Independent JPEG Group License - short"
  },
  ImageMagick: {
    name: "ImageMagick License"
  },
  iMatix: {
    name: "iMatix Standard Function Library Agreement",
    free: true
  },
  Imlib2: {
    name: "Imlib2 License",
    free: true
  },
  "Info-ZIP": {
    name: "Info-ZIP License"
  },
  "Inner-Net-2.0": {
    name: "Inner Net License v2.0"
  },
  InnoSetup: {
    name: "Inno Setup License"
  },
  Intel: {
    name: "Intel Open Source License",
    osi: true,
    free: true
  },
  "Intel-ACPI": {
    name: "Intel ACPI Software License Agreement"
  },
  "Interbase-1.0": {
    name: "Interbase Public License v1.0"
  },
  IPA: {
    name: "IPA Font License",
    osi: true,
    free: true
  },
  "IPL-1.0": {
    name: "IBM Public License v1.0",
    osi: true,
    free: true
  },
  ISC: {
    name: "ISC License",
    osi: true,
    free: true
  },
  "ISC-Veillard": {
    name: "ISC Veillard variant"
  },
  Jam: {
    name: "Jam License",
    osi: true
  },
  "JasPer-2.0": {
    name: "JasPer License"
  },
  jove: {
    name: "Jove License"
  },
  "JPL-image": {
    name: "JPL Image Use Policy"
  },
  JPNIC: {
    name: "Japan Network Information Center License"
  },
  JSON: {
    name: "JSON License"
  },
  Kastrup: {
    name: "Kastrup License"
  },
  Kazlib: {
    name: "Kazlib License"
  },
  "Knuth-CTAN": {
    name: "Knuth CTAN License"
  },
  "LAL-1.2": {
    name: "Licence Art Libre 1.2"
  },
  "LAL-1.3": {
    name: "Licence Art Libre 1.3"
  },
  Latex2e: {
    name: "Latex2e License"
  },
  "Latex2e-translated-notice": {
    name: "Latex2e with translated notice permission"
  },
  Leptonica: {
    name: "Leptonica License"
  },
  "LGPL-2.0-only": {
    name: "GNU Library General Public License v2 only",
    osi: true
  },
  "LGPL-2.0-or-later": {
    name: "GNU Library General Public License v2 or later",
    osi: true
  },
  "LGPL-2.1-only": {
    name: "GNU Lesser General Public License v2.1 only",
    osi: true,
    free: true
  },
  "LGPL-2.1-or-later": {
    name: "GNU Lesser General Public License v2.1 or later",
    osi: true,
    free: true
  },
  "LGPL-3.0-only": {
    name: "GNU Lesser General Public License v3.0 only",
    osi: true,
    free: true
  },
  "LGPL-3.0-or-later": {
    name: "GNU Lesser General Public License v3.0 or later",
    osi: true,
    free: true
  },
  LGPLLR: {
    name: "Lesser General Public License For Linguistic Resources"
  },
  Libpng: {
    name: "libpng License"
  },
  "libpng-1.6.35": {
    name: "PNG Reference Library License v1 (for libpng 0.5 through 1.6.35)"
  },
  "libpng-2.0": {
    name: "PNG Reference Library version 2"
  },
  "libselinux-1.0": {
    name: "libselinux public domain notice"
  },
  libtiff: {
    name: "libtiff License"
  },
  "libutil-David-Nugent": {
    name: "libutil David Nugent License"
  },
  "LiLiQ-P-1.1": {
    name: "Licence Libre du Qu\xE9bec \u2013 Permissive version 1.1",
    osi: true
  },
  "LiLiQ-R-1.1": {
    name: "Licence Libre du Qu\xE9bec \u2013 R\xE9ciprocit\xE9 version 1.1",
    osi: true
  },
  "LiLiQ-Rplus-1.1": {
    name: "Licence Libre du Qu\xE9bec \u2013 R\xE9ciprocit\xE9 forte version 1.1",
    osi: true
  },
  "Linux-man-pages-1-para": {
    name: "Linux man-pages - 1 paragraph"
  },
  "Linux-man-pages-copyleft": {
    name: "Linux man-pages Copyleft"
  },
  "Linux-man-pages-copyleft-2-para": {
    name: "Linux man-pages Copyleft - 2 paragraphs"
  },
  "Linux-man-pages-copyleft-var": {
    name: "Linux man-pages Copyleft Variant"
  },
  "Linux-OpenIB": {
    name: "Linux Kernel Variant of OpenIB.org license"
  },
  LOOP: {
    name: "Common Lisp LOOP License"
  },
  "LPD-document": {
    name: "LPD Documentation License"
  },
  "LPL-1.0": {
    name: "Lucent Public License Version 1.0",
    osi: true
  },
  "LPL-1.02": {
    name: "Lucent Public License v1.02",
    osi: true,
    free: true
  },
  "LPPL-1.0": {
    name: "LaTeX Project Public License v1.0"
  },
  "LPPL-1.1": {
    name: "LaTeX Project Public License v1.1"
  },
  "LPPL-1.2": {
    name: "LaTeX Project Public License v1.2",
    free: true
  },
  "LPPL-1.3a": {
    name: "LaTeX Project Public License v1.3a",
    free: true
  },
  "LPPL-1.3c": {
    name: "LaTeX Project Public License v1.3c",
    osi: true
  },
  lsof: {
    name: "lsof License"
  },
  "Lucida-Bitmap-Fonts": {
    name: "Lucida Bitmap Fonts License"
  },
  "LZMA-SDK-9.11-to-9.20": {
    name: "LZMA SDK License (versions 9.11 to 9.20)"
  },
  "LZMA-SDK-9.22": {
    name: "LZMA SDK License (versions 9.22 and beyond)"
  },
  "Mackerras-3-Clause": {
    name: "Mackerras 3-Clause License"
  },
  "Mackerras-3-Clause-acknowledgment": {
    name: "Mackerras 3-Clause - acknowledgment variant"
  },
  magaz: {
    name: "magaz License"
  },
  mailprio: {
    name: "mailprio License"
  },
  MakeIndex: {
    name: "MakeIndex License"
  },
  man2html: {
    name: "man2html License"
  },
  "Martin-Birgmeier": {
    name: "Martin Birgmeier License"
  },
  "McPhee-slideshow": {
    name: "McPhee Slideshow License"
  },
  metamail: {
    name: "metamail License"
  },
  Minpack: {
    name: "Minpack License"
  },
  MIPS: {
    name: "MIPS License"
  },
  MirOS: {
    name: "The MirOS Licence",
    osi: true
  },
  MIT: {
    name: "MIT License",
    osi: true,
    free: true
  },
  "MIT-0": {
    name: "MIT No Attribution",
    osi: true
  },
  "MIT-advertising": {
    name: "Enlightenment License (e16)"
  },
  "MIT-Click": {
    name: "MIT Click License"
  },
  "MIT-CMU": {
    name: "CMU License"
  },
  "MIT-enna": {
    name: "enna License"
  },
  "MIT-feh": {
    name: "feh License"
  },
  "MIT-Festival": {
    name: "MIT Festival Variant"
  },
  "MIT-Khronos-old": {
    name: "MIT Khronos - old variant"
  },
  "MIT-Modern-Variant": {
    name: "MIT License Modern Variant",
    osi: true
  },
  "MIT-open-group": {
    name: "MIT Open Group variant"
  },
  "MIT-testregex": {
    name: "MIT testregex Variant"
  },
  "MIT-Wu": {
    name: "MIT Tom Wu Variant"
  },
  MITNFA: {
    name: "MIT +no-false-attribs license"
  },
  MMIXware: {
    name: "MMIXware License"
  },
  Motosoto: {
    name: "Motosoto License",
    osi: true
  },
  "MPEG-SSG": {
    name: "MPEG Software Simulation"
  },
  "mpi-permissive": {
    name: "mpi Permissive License"
  },
  mpich2: {
    name: "mpich2 License"
  },
  "MPL-1.0": {
    name: "Mozilla Public License 1.0",
    osi: true
  },
  "MPL-1.1": {
    name: "Mozilla Public License 1.1",
    osi: true,
    free: true
  },
  "MPL-2.0": {
    name: "Mozilla Public License 2.0",
    osi: true,
    free: true
  },
  "MPL-2.0-no-copyleft-exception": {
    name: "Mozilla Public License 2.0 (no copyleft exception)",
    osi: true
  },
  mplus: {
    name: "mplus Font License"
  },
  "MS-LPL": {
    name: "Microsoft Limited Public License"
  },
  "MS-PL": {
    name: "Microsoft Public License",
    osi: true,
    free: true
  },
  "MS-RL": {
    name: "Microsoft Reciprocal License",
    osi: true,
    free: true
  },
  MTLL: {
    name: "Matrix Template Library License"
  },
  "MulanPSL-1.0": {
    name: "Mulan Permissive Software License, Version 1"
  },
  "MulanPSL-2.0": {
    name: "Mulan Permissive Software License, Version 2",
    osi: true
  },
  Multics: {
    name: "Multics License",
    osi: true
  },
  Mup: {
    name: "Mup License"
  },
  "NAIST-2003": {
    name: "Nara Institute of Science and Technology License (2003)"
  },
  "NASA-1.3": {
    name: "NASA Open Source Agreement 1.3",
    osi: true
  },
  Naumen: {
    name: "Naumen Public License",
    osi: true
  },
  "NBPL-1.0": {
    name: "Net Boolean Public License v1"
  },
  "NCBI-PD": {
    name: "NCBI Public Domain Notice"
  },
  "NCGL-UK-2.0": {
    name: "Non-Commercial Government Licence"
  },
  NCL: {
    name: "NCL Source Code License"
  },
  NCSA: {
    name: "University of Illinois/NCSA Open Source License",
    osi: true,
    free: true
  },
  NetCDF: {
    name: "NetCDF license"
  },
  Newsletr: {
    name: "Newsletr License"
  },
  NGPL: {
    name: "Nethack General Public License",
    osi: true
  },
  ngrep: {
    name: "ngrep License"
  },
  "NICTA-1.0": {
    name: "NICTA Public Software License, Version 1.0"
  },
  "NIST-PD": {
    name: "NIST Public Domain Notice"
  },
  "NIST-PD-fallback": {
    name: "NIST Public Domain Notice with license fallback"
  },
  "NIST-Software": {
    name: "NIST Software License"
  },
  "NLOD-1.0": {
    name: "Norwegian Licence for Open Government Data (NLOD) 1.0"
  },
  "NLOD-2.0": {
    name: "Norwegian Licence for Open Government Data (NLOD) 2.0"
  },
  NLPL: {
    name: "No Limit Public License"
  },
  Nokia: {
    name: "Nokia Open Source License",
    osi: true,
    free: true
  },
  NOSL: {
    name: "Netizen Open Source License",
    free: true
  },
  Noweb: {
    name: "Noweb License"
  },
  "NPL-1.0": {
    name: "Netscape Public License v1.0",
    free: true
  },
  "NPL-1.1": {
    name: "Netscape Public License v1.1",
    free: true
  },
  "NPOSL-3.0": {
    name: "Non-Profit Open Software License 3.0",
    osi: true
  },
  NRL: {
    name: "NRL License"
  },
  "NTIA-PD": {
    name: "NTIA Public Domain Notice"
  },
  NTP: {
    name: "NTP License",
    osi: true
  },
  "NTP-0": {
    name: "NTP No Attribution"
  },
  "O-UDA-1.0": {
    name: "Open Use of Data Agreement v1.0"
  },
  OAR: {
    name: "OAR License"
  },
  "OCCT-PL": {
    name: "Open CASCADE Technology Public License"
  },
  "OCLC-2.0": {
    name: "OCLC Research Public License 2.0",
    osi: true
  },
  "ODbL-1.0": {
    name: "Open Data Commons Open Database License v1.0",
    free: true
  },
  "ODC-By-1.0": {
    name: "Open Data Commons Attribution License v1.0"
  },
  OFFIS: {
    name: "OFFIS License"
  },
  "OFL-1.0": {
    name: "SIL Open Font License 1.0",
    free: true
  },
  "OFL-1.0-no-RFN": {
    name: "SIL Open Font License 1.0 with no Reserved Font Name"
  },
  "OFL-1.0-RFN": {
    name: "SIL Open Font License 1.0 with Reserved Font Name"
  },
  "OFL-1.1": {
    name: "SIL Open Font License 1.1",
    osi: true,
    free: true
  },
  "OFL-1.1-no-RFN": {
    name: "SIL Open Font License 1.1 with no Reserved Font Name",
    osi: true
  },
  "OFL-1.1-RFN": {
    name: "SIL Open Font License 1.1 with Reserved Font Name",
    osi: true
  },
  "OGC-1.0": {
    name: "OGC Software License, Version 1.0"
  },
  "OGDL-Taiwan-1.0": {
    name: "Taiwan Open Government Data License, version 1.0"
  },
  "OGL-Canada-2.0": {
    name: "Open Government Licence - Canada"
  },
  "OGL-UK-1.0": {
    name: "Open Government Licence v1.0"
  },
  "OGL-UK-2.0": {
    name: "Open Government Licence v2.0"
  },
  "OGL-UK-3.0": {
    name: "Open Government Licence v3.0"
  },
  OGTSL: {
    name: "Open Group Test Suite License",
    osi: true
  },
  "OLDAP-1.1": {
    name: "Open LDAP Public License v1.1"
  },
  "OLDAP-1.2": {
    name: "Open LDAP Public License v1.2"
  },
  "OLDAP-1.3": {
    name: "Open LDAP Public License v1.3"
  },
  "OLDAP-1.4": {
    name: "Open LDAP Public License v1.4"
  },
  "OLDAP-2.0": {
    name: "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)"
  },
  "OLDAP-2.0.1": {
    name: "Open LDAP Public License v2.0.1"
  },
  "OLDAP-2.1": {
    name: "Open LDAP Public License v2.1"
  },
  "OLDAP-2.2": {
    name: "Open LDAP Public License v2.2"
  },
  "OLDAP-2.2.1": {
    name: "Open LDAP Public License v2.2.1"
  },
  "OLDAP-2.2.2": {
    name: "Open LDAP Public License 2.2.2"
  },
  "OLDAP-2.3": {
    name: "Open LDAP Public License v2.3",
    free: true
  },
  "OLDAP-2.4": {
    name: "Open LDAP Public License v2.4"
  },
  "OLDAP-2.5": {
    name: "Open LDAP Public License v2.5"
  },
  "OLDAP-2.6": {
    name: "Open LDAP Public License v2.6"
  },
  "OLDAP-2.7": {
    name: "Open LDAP Public License v2.7",
    free: true
  },
  "OLDAP-2.8": {
    name: "Open LDAP Public License v2.8",
    osi: true
  },
  "OLFL-1.3": {
    name: "Open Logistics Foundation License Version 1.3",
    osi: true
  },
  OML: {
    name: "Open Market License"
  },
  "OpenPBS-2.3": {
    name: "OpenPBS v2.3 Software License"
  },
  OpenSSL: {
    name: "OpenSSL License",
    free: true
  },
  "OpenSSL-standalone": {
    name: "OpenSSL License - standalone"
  },
  OpenVision: {
    name: "OpenVision License"
  },
  "OPL-1.0": {
    name: "Open Public License v1.0"
  },
  "OPL-UK-3.0": {
    name: "United    Kingdom Open Parliament Licence v3.0"
  },
  "OPUBL-1.0": {
    name: "Open Publication License v1.0"
  },
  "OSET-PL-2.1": {
    name: "OSET Public License version 2.1",
    osi: true
  },
  "OSL-1.0": {
    name: "Open Software License 1.0",
    osi: true,
    free: true
  },
  "OSL-1.1": {
    name: "Open Software License 1.1",
    free: true
  },
  "OSL-2.0": {
    name: "Open Software License 2.0",
    osi: true,
    free: true
  },
  "OSL-2.1": {
    name: "Open Software License 2.1",
    osi: true,
    free: true
  },
  "OSL-3.0": {
    name: "Open Software License 3.0",
    osi: true,
    free: true
  },
  PADL: {
    name: "PADL License"
  },
  "Parity-6.0.0": {
    name: "The Parity Public License 6.0.0"
  },
  "Parity-7.0.0": {
    name: "The Parity Public License 7.0.0"
  },
  "PDDL-1.0": {
    name: "Open Data Commons Public Domain Dedication & License 1.0"
  },
  "PHP-3.0": {
    name: "PHP License v3.0",
    osi: true
  },
  "PHP-3.01": {
    name: "PHP License v3.01",
    osi: true,
    free: true
  },
  Pixar: {
    name: "Pixar License"
  },
  pkgconf: {
    name: "pkgconf License"
  },
  Plexus: {
    name: "Plexus Classworlds License"
  },
  pnmstitch: {
    name: "pnmstitch License"
  },
  "PolyForm-Noncommercial-1.0.0": {
    name: "PolyForm Noncommercial License 1.0.0"
  },
  "PolyForm-Small-Business-1.0.0": {
    name: "PolyForm Small Business License 1.0.0"
  },
  PostgreSQL: {
    name: "PostgreSQL License",
    osi: true
  },
  PPL: {
    name: "Peer Production License"
  },
  "PSF-2.0": {
    name: "Python Software Foundation License 2.0"
  },
  psfrag: {
    name: "psfrag License"
  },
  psutils: {
    name: "psutils License"
  },
  "Python-2.0": {
    name: "Python License 2.0",
    osi: true,
    free: true
  },
  "Python-2.0.1": {
    name: "Python License 2.0.1"
  },
  "python-ldap": {
    name: "Python ldap License"
  },
  Qhull: {
    name: "Qhull License"
  },
  "QPL-1.0": {
    name: "Q Public License 1.0",
    osi: true,
    free: true
  },
  "QPL-1.0-INRIA-2004": {
    name: "Q Public License 1.0 - INRIA 2004 variant"
  },
  radvd: {
    name: "radvd License"
  },
  Rdisc: {
    name: "Rdisc License"
  },
  "RHeCos-1.1": {
    name: "Red Hat eCos Public License v1.1"
  },
  "RPL-1.1": {
    name: "Reciprocal Public License 1.1",
    osi: true
  },
  "RPL-1.5": {
    name: "Reciprocal Public License 1.5",
    osi: true
  },
  "RPSL-1.0": {
    name: "RealNetworks Public Source License v1.0",
    osi: true,
    free: true
  },
  "RSA-MD": {
    name: "RSA Message-Digest License"
  },
  RSCPL: {
    name: "Ricoh Source Code Public License",
    osi: true
  },
  Ruby: {
    name: "Ruby License",
    free: true
  },
  "Ruby-pty": {
    name: "Ruby pty extension license"
  },
  "SAX-PD": {
    name: "Sax Public Domain Notice"
  },
  "SAX-PD-2.0": {
    name: "Sax Public Domain Notice 2.0"
  },
  Saxpath: {
    name: "Saxpath License"
  },
  SCEA: {
    name: "SCEA Shared Source License"
  },
  SchemeReport: {
    name: "Scheme Language Report License"
  },
  Sendmail: {
    name: "Sendmail License"
  },
  "Sendmail-8.23": {
    name: "Sendmail License 8.23"
  },
  "Sendmail-Open-Source-1.1": {
    name: "Sendmail Open Source License v1.1"
  },
  "SGI-B-1.0": {
    name: "SGI Free Software License B v1.0"
  },
  "SGI-B-1.1": {
    name: "SGI Free Software License B v1.1"
  },
  "SGI-B-2.0": {
    name: "SGI Free Software License B v2.0",
    free: true
  },
  "SGI-OpenGL": {
    name: "SGI OpenGL License"
  },
  SGP4: {
    name: "SGP4 Permission Notice"
  },
  "SHL-0.5": {
    name: "Solderpad Hardware License v0.5"
  },
  "SHL-0.51": {
    name: "Solderpad Hardware License, Version 0.51"
  },
  "SimPL-2.0": {
    name: "Simple Public License 2.0",
    osi: true
  },
  SISSL: {
    name: "Sun Industry Standards Source License v1.1",
    osi: true,
    free: true
  },
  "SISSL-1.2": {
    name: "Sun Industry Standards Source License v1.2"
  },
  SL: {
    name: "SL License"
  },
  Sleepycat: {
    name: "Sleepycat License",
    osi: true,
    free: true
  },
  "SMAIL-GPL": {
    name: "SMAIL General Public License"
  },
  SMLNJ: {
    name: "Standard ML of New Jersey License",
    free: true
  },
  SMPPL: {
    name: "Secure Messaging Protocol Public License"
  },
  SNIA: {
    name: "SNIA Public License 1.1"
  },
  snprintf: {
    name: "snprintf License"
  },
  SOFA: {
    name: "SOFA Software License"
  },
  softSurfer: {
    name: "softSurfer License"
  },
  Soundex: {
    name: "Soundex License"
  },
  "Spencer-86": {
    name: "Spencer License 86"
  },
  "Spencer-94": {
    name: "Spencer License 94"
  },
  "Spencer-99": {
    name: "Spencer License 99"
  },
  "SPL-1.0": {
    name: "Sun Public License v1.0",
    osi: true,
    free: true
  },
  "ssh-keyscan": {
    name: "ssh-keyscan License"
  },
  "SSH-OpenSSH": {
    name: "SSH OpenSSH license"
  },
  "SSH-short": {
    name: "SSH short notice"
  },
  "SSLeay-standalone": {
    name: "SSLeay License - standalone"
  },
  "SSPL-1.0": {
    name: "Server Side Public License, v 1"
  },
  "SugarCRM-1.1.3": {
    name: "SugarCRM Public License v1.1.3"
  },
  "SUL-1.0": {
    name: "Sustainable Use License v1.0"
  },
  "Sun-PPP": {
    name: "Sun PPP License"
  },
  "Sun-PPP-2000": {
    name: "Sun PPP License (2000)"
  },
  SunPro: {
    name: "SunPro License"
  },
  SWL: {
    name: "Scheme Widget Library (SWL) Software License Agreement"
  },
  swrule: {
    name: "swrule License"
  },
  Symlinks: {
    name: "Symlinks License"
  },
  "TAPR-OHL-1.0": {
    name: "TAPR Open Hardware License v1.0"
  },
  TCL: {
    name: "TCL/TK License"
  },
  "TCP-wrappers": {
    name: "TCP Wrappers License"
  },
  TermReadKey: {
    name: "TermReadKey License"
  },
  "TGPPL-1.0": {
    name: "Transitive Grace Period Public Licence 1.0"
  },
  ThirdEye: {
    name: "ThirdEye License"
  },
  threeparttable: {
    name: "threeparttable License"
  },
  TMate: {
    name: "TMate Open Source License"
  },
  "TORQUE-1.1": {
    name: "TORQUE v2.5+ Software License v1.1"
  },
  TOSL: {
    name: "Trusster Open Source License"
  },
  TPDL: {
    name: "Time::ParseDate License"
  },
  "TPL-1.0": {
    name: "THOR Public License 1.0"
  },
  TrustedQSL: {
    name: "TrustedQSL License"
  },
  TTWL: {
    name: "Text-Tabs+Wrap License"
  },
  TTYP0: {
    name: "TTYP0 License"
  },
  "TU-Berlin-1.0": {
    name: "Technische Universitaet Berlin License 1.0"
  },
  "TU-Berlin-2.0": {
    name: "Technische Universitaet Berlin License 2.0"
  },
  "Ubuntu-font-1.0": {
    name: "Ubuntu Font Licence v1.0"
  },
  UCAR: {
    name: "UCAR License"
  },
  "UCL-1.0": {
    name: "Upstream Compatibility License v1.0",
    osi: true
  },
  ulem: {
    name: "ulem License"
  },
  "UMich-Merit": {
    name: "Michigan/Merit Networks License"
  },
  "Unicode-3.0": {
    name: "Unicode License v3",
    osi: true
  },
  "Unicode-DFS-2015": {
    name: "Unicode License Agreement - Data Files and Software (2015)"
  },
  "Unicode-DFS-2016": {
    name: "Unicode License Agreement - Data Files and Software (2016)",
    osi: true
  },
  "Unicode-TOU": {
    name: "Unicode Terms of Use"
  },
  UnixCrypt: {
    name: "UnixCrypt License"
  },
  Unlicense: {
    name: "The Unlicense",
    osi: true,
    free: true
  },
  "Unlicense-libtelnet": {
    name: "Unlicense - libtelnet variant"
  },
  "Unlicense-libwhirlpool": {
    name: "Unlicense - libwhirlpool variant"
  },
  "UPL-1.0": {
    name: "Universal Permissive License v1.0",
    osi: true,
    free: true
  },
  "URT-RLE": {
    name: "Utah Raster Toolkit Run Length Encoded License"
  },
  Vim: {
    name: "Vim License",
    free: true
  },
  VOSTROM: {
    name: "VOSTROM Public License for Open Source"
  },
  "VSL-1.0": {
    name: "Vovida Software License v1.0",
    osi: true
  },
  W3C: {
    name: "W3C Software Notice and License (2002-12-31)",
    osi: true,
    free: true
  },
  "W3C-19980720": {
    name: "W3C Software Notice and License (1998-07-20)"
  },
  "W3C-20150513": {
    name: "W3C Software Notice and Document License (2015-05-13)",
    osi: true
  },
  w3m: {
    name: "w3m License"
  },
  "Watcom-1.0": {
    name: "Sybase Open Watcom Public License 1.0",
    osi: true
  },
  "Widget-Workshop": {
    name: "Widget Workshop License"
  },
  Wsuipa: {
    name: "Wsuipa License"
  },
  WTFPL: {
    name: "Do What The F*ck You Want To Public License",
    free: true
  },
  wwl: {
    name: "WWL License"
  },
  X11: {
    name: "X11 License",
    free: true
  },
  "X11-distribute-modifications-variant": {
    name: "X11 License Distribution Modification Variant"
  },
  "X11-swapped": {
    name: "X11 swapped final paragraphs"
  },
  "Xdebug-1.03": {
    name: "Xdebug License v 1.03"
  },
  Xerox: {
    name: "Xerox License"
  },
  Xfig: {
    name: "Xfig License"
  },
  "XFree86-1.1": {
    name: "XFree86 License 1.1",
    free: true
  },
  xinetd: {
    name: "xinetd License",
    free: true
  },
  "xkeyboard-config-Zinoviev": {
    name: "xkeyboard-config Zinoviev License"
  },
  xlock: {
    name: "xlock License"
  },
  Xnet: {
    name: "X.Net License",
    osi: true
  },
  xpp: {
    name: "XPP License"
  },
  XSkat: {
    name: "XSkat License"
  },
  xzoom: {
    name: "xzoom License"
  },
  "YPL-1.0": {
    name: "Yahoo! Public License v1.0"
  },
  "YPL-1.1": {
    name: "Yahoo! Public License v1.1",
    free: true
  },
  Zed: {
    name: "Zed License"
  },
  Zeeff: {
    name: "Zeeff License"
  },
  "Zend-2.0": {
    name: "Zend License v2.0",
    free: true
  },
  "Zimbra-1.3": {
    name: "Zimbra Public License v1.3",
    free: true
  },
  "Zimbra-1.4": {
    name: "Zimbra Public License v1.4"
  },
  Zlib: {
    name: "zlib License",
    osi: true,
    free: true
  },
  "zlib-acknowledgement": {
    name: "zlib/libpng License with Acknowledgement"
  },
  "ZPL-1.1": {
    name: "Zope Public License 1.1"
  },
  "ZPL-2.0": {
    name: "Zope Public License 2.0",
    osi: true,
    free: true
  },
  "ZPL-2.1": {
    name: "Zope Public License 2.1",
    osi: true,
    free: true
  }
};
var licenses_default = licenses;

// ../myst-frontmatter/dist/licenses/validators.js
var import_spdx_correct = __toESM(require_spdx_correct(), 1);
function correctLicense(license) {
  if (!license)
    return void 0;
  const value = (0, import_spdx_correct.default)(license);
  if (value)
    return value;
  if (license.toUpperCase() === "CC-BY")
    return "CC-BY-4.0";
  return void 0;
}
function createURL(id, cc, osi) {
  var _a6, _b;
  if (cc) {
    const match3 = /^([CBYSAND0ZEROPDM-]+)(?:(?:-)([0-9].[0-9]))?(?:(?:-)([A-Z]{2,3}))?$/.exec(id);
    if (!match3) {
      throw new Error("Creative Commons license not found");
    }
    const kind = match3[1].toUpperCase();
    const version4 = (_a6 = match3[2]) !== null && _a6 !== void 0 ? _a6 : "4.0";
    const extra = (_b = match3[3]) !== null && _b !== void 0 ? _b : "";
    let link4 = "";
    switch (kind) {
      case "CC-BY":
        link4 = `/by/${version4}/`;
        break;
      case "CC-BY-SA":
        link4 = `/by-sa/${version4}/`;
        break;
      case "CC-BY-NC":
        link4 = `/by-nc/${version4}/`;
        break;
      case "CC-BY-NC-SA":
        link4 = `/by-nc-sa/${version4}/`;
        break;
      case "CC-BY-ND":
        link4 = `/by-nd/${version4}/`;
        break;
      case "CC-BY-NC-ND":
        link4 = `/by-nc-nd/${version4}/`;
        break;
      case "CC-ZERO":
      case "CC-0":
      case "CC0":
        link4 = "/zero/1.0/";
        break;
      case "CC-PDDC":
        link4 = "/publicdomain/";
        break;
      case "CC-PDM":
        link4 = "/publicdomain/mark/1.0/";
        break;
      default:
        break;
    }
    if (extra)
      link4 += `${extra}/`;
    return `https://creativecommons.org/licenses${link4}`;
  }
  if (osi) {
    return `https://opensource.org/licenses/${id.replace(/(-or-later)|(-only)$/, "")}`;
  }
  return `https://spdx.org/licenses/${id}`;
}
function cleanUrl(url) {
  return url.replace(/^http:/, "https:").replace(/\/$/, "");
}
function isUrl(url) {
  try {
    const parsed = new URL(url);
    return parsed.protocol.includes("http");
  } catch (error) {
    return false;
  }
}
var ID_LICENSE_LOOKUP = Object.fromEntries(Object.entries(licenses_default).map(([key2, value]) => {
  return [key2, { id: key2, ...value, url: createURL(key2, value.CC, value.osi) }];
}));
var URL_ID_LOOKUP = Object.fromEntries(Object.values(ID_LICENSE_LOOKUP).filter((value) => !!value.url && !!value.id).map((value) => {
  return [cleanUrl(value.url), value.id];
}));
function validateLicense(input3, opts) {
  var _a6;
  if (typeof input3 === "string") {
    const value2 = validateString(input3, opts);
    if (value2 === void 0)
      return void 0;
    const valueSpdx = value2.length < 15 ? correctLicense(value2) : void 0;
    if (URL_ID_LOOKUP[cleanUrl(value2)]) {
      input3 = { id: URL_ID_LOOKUP[cleanUrl(value2)] };
    } else if (isUrl(value2)) {
      input3 = { url: value2 };
    } else if (valueSpdx) {
      input3 = { id: value2 };
    } else if (value2.match(/^[^\s]*$/)) {
      input3 = { id: value2 };
    } else if (value2.length < 100) {
      input3 = { name: value2 };
    } else {
      input3 = { note: value2 };
    }
  }
  const value = validateObjectKeys(input3, {
    optional: ["id", "name", "url", "note", "free", "CC", "osi"],
    alias: { cc: "CC" }
  }, opts);
  if (!value)
    return void 0;
  const output2 = {};
  if (value.id != null) {
    const id = validateString(value.id, incrementOptions("id", opts));
    const idSpdx = correctLicense(id);
    if (!idSpdx) {
      validationWarning(`unknown license ID "${id}" - using a SPDX license ID is recommended, see https://spdx.org/licenses/`, opts);
    } else if (idSpdx !== id) {
      validationWarning(`The SPDX ID for the license is "${idSpdx}". Corrected from "${id}".`, opts);
    }
    output2.id = idSpdx !== null && idSpdx !== void 0 ? idSpdx : id;
  } else {
    if (value.url) {
      const url = (_a6 = validateUrl(value.url, { property: "", messages: {} })) !== null && _a6 !== void 0 ? _a6 : "";
      const idFromUrl = URL_ID_LOOKUP[cleanUrl(url)];
      if (idFromUrl) {
        output2.id = idFromUrl;
        value.url = ID_LICENSE_LOOKUP[idFromUrl].url;
      }
    }
    if (!output2.id) {
      validationWarning(`no license ID - using a SPDX license ID is recommended, see https://spdx.org/licenses/`, opts);
    }
  }
  const expected = output2.id ? ID_LICENSE_LOOKUP[output2.id] : void 0;
  if (value.url != null) {
    const urlOpts = incrementOptions("url", opts);
    const url = validateUrl(value.url, urlOpts);
    if (url && (expected === null || expected === void 0 ? void 0 : expected.url) && cleanUrl(url) !== cleanUrl(expected.url)) {
      validationWarning(`incorrect URL for SPDX license ${expected.id} - "${url}"`, urlOpts);
    }
    output2.url = url;
  } else if (expected === null || expected === void 0 ? void 0 : expected.url) {
    output2.url = expected.url;
  }
  if (value.name != null) {
    const nameOpts = incrementOptions("name", opts);
    const name3 = validateString(value.name, nameOpts);
    if (name3 && (expected === null || expected === void 0 ? void 0 : expected.name) && name3 !== expected.name) {
      validationWarning(`incorrect name for SPDX license ${expected.id} - "${name3}"`, nameOpts);
    }
    output2.name = name3;
  } else if (expected === null || expected === void 0 ? void 0 : expected.name) {
    output2.name = expected.name;
  }
  if (value.note != null) {
    output2.note = validateString(value.note, incrementOptions("note", opts));
  }
  if (value.free != null) {
    const freeOpts = incrementOptions("free", opts);
    const free = validateBoolean(value.free, freeOpts);
    if (free && !(expected === null || expected === void 0 ? void 0 : expected.free)) {
      validationWarning('only SPDX licenses may specify they are "free" as listed by the FSF', freeOpts);
    } else {
      output2.free = free;
    }
  } else if ((expected === null || expected === void 0 ? void 0 : expected.free) != null) {
    output2.free = expected.free;
  }
  if (value.CC != null) {
    const ccOpts = incrementOptions("CC", opts);
    const cc = validateBoolean(value.CC, ccOpts);
    if (cc && !((expected === null || expected === void 0 ? void 0 : expected.CC) || output2.url && new URL(output2.url).host === "creativecommons.org")) {
      validationWarning('only licenses that link to creativecommons.org may specify that they are "CC"', ccOpts);
    } else {
      output2.CC = cc;
    }
  } else if ((expected === null || expected === void 0 ? void 0 : expected.CC) != null) {
    output2.CC = expected.CC;
  }
  if (value.osi != null) {
    const osiOpts = incrementOptions("osi", opts);
    const osi = validateBoolean(value.osi, osiOpts);
    if (osi && !(expected === null || expected === void 0 ? void 0 : expected.osi)) {
      validationWarning('only SPDX licenses may specify they are "OSI approved"', osiOpts);
    } else {
      output2.osi = osi;
    }
  } else if ((expected === null || expected === void 0 ? void 0 : expected.osi) != null) {
    output2.osi = expected.osi;
  }
  if (Object.keys(output2).length === 0)
    return void 0;
  return output2;
}
function validateLicenses(input3, opts) {
  let contentOpts;
  if (typeof input3 === "string" || typeof input3 === "object" && input3.content == null && input3.code == null) {
    input3 = { content: input3 };
    contentOpts = opts;
  } else {
    contentOpts = incrementOptions("content", opts);
  }
  const value = validateObjectKeys(input3, { optional: ["content", "code"] }, opts);
  if (value === void 0)
    return void 0;
  const output2 = {};
  if (defined(value.content)) {
    const content3 = validateLicense(value.content, contentOpts);
    if (content3)
      output2.content = content3;
  }
  if (defined(value.code) && value.code !== value.content) {
    const code7 = validateLicense(value.code, incrementOptions("code", opts));
    if (code7)
      output2.code = code7;
  }
  if (Object.keys(output2).length === 0)
    return void 0;
  return output2;
}
function removeExpectedKeys(license, expected) {
  const output2 = {};
  Object.entries(license).forEach(([key2, val]) => {
    const licenseKey = key2;
    if (licenseKey === "id" || val !== expected[licenseKey]) {
      output2[licenseKey] = val;
    }
  });
  if (Object.keys(output2).length === 1 && output2.id)
    return output2.id;
  return output2;
}
function objectsEqual(a2, b) {
  if (a2 == null || b == null)
    return false;
  const aAsString = typeof a2 === "string" ? a2 : JSON.stringify(Object.entries(a2).sort());
  const bAsString = typeof b === "string" ? b : JSON.stringify(Object.entries(b).sort());
  return aAsString === bAsString;
}
function simplifyLicenses(licenses2) {
  var _a6, _b;
  const { content: content3, code: code7 } = licenses2;
  const simplified = {};
  if (content3) {
    if (content3.id) {
      simplified.content = removeExpectedKeys(content3, (_a6 = ID_LICENSE_LOOKUP[content3.id]) !== null && _a6 !== void 0 ? _a6 : {});
    } else {
      simplified.content = { ...content3 };
    }
  }
  if (code7) {
    if (code7.id) {
      simplified.code = removeExpectedKeys(code7, (_b = ID_LICENSE_LOOKUP[code7.id]) !== null && _b !== void 0 ? _b : {});
    } else {
      simplified.code = { ...code7 };
    }
  }
  if (objectsEqual(simplified.content, simplified.code)) {
    delete simplified.code;
  }
  if (!simplified.code && typeof simplified.content === "string") {
    return simplified.content;
  }
  return simplified;
}

// ../myst-frontmatter/dist/numbering/validators.js
var NUMBERING_OPTIONS = ["enumerator", "all", "headings", "title"];
var HEADING_KEYS = ["heading_1", "heading_2", "heading_3", "heading_4", "heading_5", "heading_6"];
var NUMBERING_KEYS = [
  "figure",
  "subfigure",
  "equation",
  "subequation",
  "table",
  "code",
  ...HEADING_KEYS
];
var NUMBERING_ITEM_KEYS = ["enabled", "start", "enumerator", "template", "continue"];
var CONTINUE_STRINGS = ["continue", "next"];
var NUMBERING_ALIAS = {
  sections: "headings",
  h1: "heading_1",
  h2: "heading_2",
  h3: "heading_3",
  h4: "heading_4",
  h5: "heading_5",
  h6: "heading_6",
  heading1: "heading_1",
  heading2: "heading_2",
  heading3: "heading_3",
  heading4: "heading_4",
  heading5: "heading_5",
  heading6: "heading_6",
  figures: "figure",
  subfigures: "subfigure",
  equations: "equation",
  math: "equation",
  subequations: "subequation",
  tables: "table",
  titles: "title"
};
function isBoolean(input3) {
  if (typeof input3 === "string") {
    return ["true", "false"].includes(input3.toLowerCase());
  }
  return typeof input3 === "boolean";
}
function validateNumberingItem(input3, opts) {
  var _a6, _b, _c, _d2, _e;
  if (isBoolean(input3)) {
    input3 = { enabled: input3 };
  } else if (typeof input3 === "number") {
    input3 = { start: input3 };
  } else if (CONTINUE_STRINGS.includes(input3)) {
    input3 = { continue: true };
  } else if (typeof input3 === "string") {
    input3 = { template: input3 };
  }
  const value = validateObjectKeys(input3, { optional: NUMBERING_ITEM_KEYS }, opts);
  if (value === void 0)
    return void 0;
  const output2 = {};
  if (defined(value.enabled)) {
    const enabled = validateBoolean(value.enabled, incrementOptions("enabled", opts));
    if (defined(enabled))
      output2.enabled = enabled;
  }
  if (defined(value.start)) {
    if (CONTINUE_STRINGS.includes(value.start) && !defined(value.continue)) {
      output2.continue = true;
      output2.enabled = (_a6 = output2.enabled) !== null && _a6 !== void 0 ? _a6 : true;
    } else {
      const start = validateNumber(value.start, {
        ...incrementOptions("start", opts),
        integer: true,
        min: 1
      });
      if (start) {
        output2.start = start;
        output2.enabled = (_b = output2.enabled) !== null && _b !== void 0 ? _b : true;
      }
    }
  }
  if (defined(value.template)) {
    const template = validateString(value.template, incrementOptions("template", opts));
    if (defined(template)) {
      output2.template = template;
      output2.enabled = (_c = output2.enabled) !== null && _c !== void 0 ? _c : true;
    }
  }
  if (defined(value.enumerator)) {
    const enumerator = validateString(value.enumerator, incrementOptions("enumerator", opts));
    if (defined(enumerator)) {
      output2.enumerator = enumerator;
      output2.enabled = (_d2 = output2.enabled) !== null && _d2 !== void 0 ? _d2 : true;
    }
  }
  if (defined(value.continue)) {
    const cont = validateBoolean(value.continue, incrementOptions("continue", opts));
    if (defined(cont)) {
      output2.continue = cont;
      output2.enabled = (_e = output2.enabled) !== null && _e !== void 0 ? _e : true;
    }
  }
  if (Object.keys(output2).length === 0)
    return void 0;
  return output2;
}
function validateTitleItem(input3, opts) {
  var _a6, _b;
  if (isBoolean(input3)) {
    input3 = { enabled: input3 };
  } else if (typeof input3 === "number") {
    input3 = { offset: input3 };
  }
  const value = validateObjectKeys(input3, { optional: ["enabled", "offset", "enumerator"] }, opts);
  if (value === void 0)
    return void 0;
  const output2 = {};
  if (defined(value.enabled)) {
    const enabled = validateBoolean(value.enabled, incrementOptions("enabled", opts));
    if (defined(enabled))
      output2.enabled = enabled;
  }
  if (defined(value.offset)) {
    const offset = validateNumber(value.offset, {
      integer: true,
      min: 0,
      max: 5,
      ...incrementOptions("offset", opts)
    });
    if (defined(offset)) {
      output2.offset = offset;
      output2.enabled = (_a6 = output2.enabled) !== null && _a6 !== void 0 ? _a6 : true;
    }
  }
  if (defined(value.enumerator)) {
    const enumerator = validateString(value.enumerator, incrementOptions("enumerator", opts));
    if (defined(enumerator)) {
      output2.enumerator = enumerator;
      output2.enabled = (_b = output2.enabled) !== null && _b !== void 0 ? _b : true;
    }
  }
  if (Object.keys(output2).length === 0)
    return void 0;
  return output2;
}
function validateNumbering(input3, opts) {
  var _a6, _b, _c, _d2, _e;
  if (isBoolean(input3)) {
    input3 = { all: input3 };
  }
  const value = validateObjectKeys(input3, { optional: [...NUMBERING_KEYS, ...NUMBERING_OPTIONS], alias: NUMBERING_ALIAS }, { ...opts, suppressWarnings: true, keepExtraKeys: true });
  if (value === void 0)
    return void 0;
  const output2 = {};
  let headings;
  if (defined(value.enumerator)) {
    const enumeratorOpts = incrementOptions("enumerator", opts);
    if (typeof value.enumerator === "string") {
      value.enumerator = { enumerator: value.enumerator };
    }
    output2.enumerator = validateNumberingItem(value.enumerator, enumeratorOpts);
    if (((_a6 = output2.enumerator) === null || _a6 === void 0 ? void 0 : _a6.enabled) != null) {
      if (output2.enumerator.enabled !== true) {
        validationWarning("value for 'enabled' is ignored", enumeratorOpts);
      }
      delete output2.enumerator.enabled;
    }
    if (((_b = output2.enumerator) === null || _b === void 0 ? void 0 : _b.start) != null) {
      validationWarning("value for 'start' is ignored", enumeratorOpts);
      delete output2.enumerator.start;
    }
    if (((_c = output2.enumerator) === null || _c === void 0 ? void 0 : _c.continue) != null) {
      validationWarning("value for 'continue' is ignored", enumeratorOpts);
      delete output2.enumerator.continue;
    }
    if (!output2.enumerator || Object.keys(output2.enumerator).length === 0) {
      delete output2.enumerator;
    }
  }
  if (defined(value.all)) {
    const allOpts = incrementOptions("all", opts);
    output2.all = validateNumberingItem(value.all, allOpts);
    if (((_d2 = output2.all) === null || _d2 === void 0 ? void 0 : _d2.template) != null) {
      validationWarning("value for 'template' is ignored", allOpts);
      delete output2.all.template;
    }
    if (((_e = output2.all) === null || _e === void 0 ? void 0 : _e.start) != null) {
      validationWarning("value for 'start' is ignored", allOpts);
      delete output2.all.start;
    }
    if (!output2.all || Object.keys(output2.all).length === 0) {
      delete output2.all;
    }
  }
  if (defined(value.title)) {
    output2.title = validateTitleItem(value.title, incrementOptions("title", opts));
  }
  if (defined(value.headings)) {
    headings = validateNumberingItem(value.headings, incrementOptions("headings", opts));
    HEADING_KEYS.forEach((headingKey) => {
      if (headings && !defined(value[headingKey])) {
        value[headingKey] = headings;
      }
    });
  }
  Object.keys(value).filter((key2) => !NUMBERING_OPTIONS.includes(key2)).forEach((key2) => {
    if (defined(value[key2])) {
      const item = validateNumberingItem(value[key2], incrementOptions(key2, opts));
      if (!defined(item))
        return;
      if (headings && HEADING_KEYS.includes(key2)) {
        output2[key2] = { ...headings, ...item };
      } else {
        output2[key2] = item;
      }
    }
  });
  if (Object.keys(output2).length === 0)
    return void 0;
  return output2;
}
function fillNumbering(base5, filler) {
  const output2 = { ...filler, ...base5 };
  Object.entries(filler !== null && filler !== void 0 ? filler : {}).filter(([key2]) => !NUMBERING_OPTIONS.includes(key2)).forEach(([key2, val]) => {
    var _a6, _b, _c, _d2, _e;
    output2[key2] = fillMissingKeys(
      (_a6 = base5 === null || base5 === void 0 ? void 0 : base5[key2]) !== null && _a6 !== void 0 ? _a6 : {},
      // Enabling/disabling all in base overrides filler
      {
        ...val,
        enabled: (_c = (_b = base5 === null || base5 === void 0 ? void 0 : base5.all) === null || _b === void 0 ? void 0 : _b.enabled) !== null && _c !== void 0 ? _c : val.enabled,
        continue: (_e = (_d2 = base5 === null || base5 === void 0 ? void 0 : base5.all) === null || _d2 === void 0 ? void 0 : _d2.continue) !== null && _e !== void 0 ? _e : val.continue
      },
      NUMBERING_ITEM_KEYS
    );
  });
  return output2;
}

// ../myst-frontmatter/dist/references/types.js
var KNOWN_REFERENCE_KINDS = ["myst", "intersphinx"];

// ../myst-frontmatter/dist/references/validators.js
function validateExternalReference(input3, opts) {
  var _a6;
  if (typeof input3 === "string") {
    input3 = { url: input3 };
  }
  const value = validateObjectKeys(input3, { required: ["url"], optional: ["kind"] }, opts);
  if (!value)
    return void 0;
  let url = validateUrl(value.url, incrementOptions("url", opts));
  if (!url)
    return void 0;
  if (url.endsWith("/")) {
    url = url.slice(0, url.length - 1);
  }
  const output2 = { url };
  if (defined(value.kind)) {
    const kindOpts = incrementOptions(value.kind, opts);
    let kind = (_a6 = validateString(value.kind, kindOpts)) === null || _a6 === void 0 ? void 0 : _a6.toLowerCase();
    if (kind === "sphinx" || kind === "inv")
      kind = "intersphinx";
    if (kind && !KNOWN_REFERENCE_KINDS.includes(kind)) {
      validationWarning(`Unknown external reference kind "${kind}"`, kindOpts);
    }
    if (kind)
      output2.kind = kind;
  }
  return output2;
}
function validateExternalReferences(input3, opts) {
  const value = validateObject(input3, opts);
  if (!value)
    return void 0;
  const output2 = Object.fromEntries(Object.entries(value).map(([key2, ref]) => {
    const outputKey = validateString(key2, { ...opts, regex: "^[a-zA-Z0-9_-]*$" });
    if (!outputKey)
      return void 0;
    const outputRef = validateExternalReference(ref, incrementOptions(key2, opts));
    if (!outputRef)
      return void 0;
    return [outputKey, outputRef];
  }).filter((exists2) => !!exists2));
  return Object.keys(output2).length ? output2 : void 0;
}

// ../myst-frontmatter/dist/venues/validators.js
function validateVenue(input3, opts) {
  let titleOpts;
  if (typeof input3 === "string") {
    input3 = { title: input3 };
    titleOpts = opts;
  } else {
    titleOpts = incrementOptions("title", opts);
  }
  const value = validateObjectKeys(input3, {
    optional: [
      "title",
      "short_title",
      "url",
      "doi",
      "number",
      "location",
      "date",
      "series",
      "issn",
      "publisher"
    ]
  }, opts);
  if (value === void 0)
    return void 0;
  const output2 = {};
  if (defined(value.title)) {
    output2.title = validateString(value.title, titleOpts);
  }
  if (defined(value.short_title)) {
    output2.short_title = validateString(value.short_title, incrementOptions("short_title", opts));
  }
  if (defined(value.url)) {
    output2.url = validateUrl(value.url, incrementOptions("url", opts));
  }
  if (defined(value.doi)) {
    output2.doi = validateDoi(value.doi, incrementOptions("doi", opts));
  }
  if (defined(value.number)) {
    output2.number = validateStringOrNumber(value.number, incrementOptions("number", opts));
  }
  if (defined(value.location)) {
    output2.location = validateString(value.location, incrementOptions("location", opts));
  }
  if (defined(value.date)) {
    output2.date = validateString(value.date, incrementOptions("date", opts));
  }
  if (defined(value.series)) {
    output2.series = validateString(value.series, incrementOptions("series", opts));
  }
  if (defined(value.issn)) {
    output2.issn = validateString(value.issn, incrementOptions("issn", opts));
  }
  if (defined(value.publisher)) {
    output2.publisher = validateString(value.publisher, incrementOptions("publisher", opts));
  }
  return output2;
}

// ../myst-frontmatter/dist/site/validators.js
function validateSiteFrontmatterKeys(value, opts) {
  var _a6, _b, _c, _d2, _e;
  const output2 = {};
  if (defined(value.title)) {
    output2.title = validateString(value.title, incrementOptions("title", opts));
  }
  if (defined(value.description)) {
    output2.description = validateString(value.description, incrementOptions("description", opts));
  }
  if (defined(value.short_title)) {
    output2.short_title = validateString(value.short_title, incrementOptions("short_title", opts));
  }
  if (defined(value.subtitle)) {
    output2.subtitle = validateString(value.subtitle, incrementOptions("subtitle", opts));
  }
  if (value.banner === null) {
    output2.banner = null;
  } else if (defined(value.banner)) {
    output2.banner = validateString(value.banner, incrementOptions("banner", opts));
  }
  if (defined(value.bannerOptimized)) {
    output2.bannerOptimized = value.bannerOptimized;
  }
  if (defined(value.tags)) {
    output2.tags = validateList(value.tags, incrementOptions("tags", opts), (file, index4) => {
      return validateString(file, incrementOptions(`tags.${index4}`, opts));
    });
  }
  const stash = {};
  if (defined(value.affiliations)) {
    const affiliationsOpts = incrementOptions("affiliations", opts);
    let affiliations2 = value.affiliations;
    if (typeof affiliations2 === "string") {
      affiliations2 = affiliations2.split(";").map((aff) => aff.trim());
    }
    validateList(affiliations2, affiliationsOpts, (aff) => {
      return validateAndStashObject(aff, stash, "affiliations", validateAffiliation, affiliationsOpts);
    });
  }
  if (defined(value.authors)) {
    stash.authorIds = validateList(value.authors, { coerce: true, ...incrementOptions("authors", opts) }, (author, index4) => {
      return validateAndStashObject(author, stash, "contributors", (v, o) => validateContributor(v, stash, o), incrementOptions(`authors.${index4}`, opts));
    });
  }
  if (defined(value.contributors)) {
    validateList(value.contributors, { coerce: true, ...incrementOptions("contributors", opts) }, (contributor, index4) => {
      return validateAndStashObject(contributor, stash, "contributors", (v, o) => validateContributor(v, stash, o), incrementOptions(`contributors.${index4}`, opts));
    });
  }
  if (defined(value.reviewers)) {
    output2.reviewers = validateList(value.reviewers, { coerce: true, ...incrementOptions("reviewers", opts) }, (reviewer, ind) => {
      return validateAndStashObject(reviewer, stash, "contributors", (v, o) => validateContributor(v, stash, o), incrementOptions(`reviewers.${ind}`, opts));
    });
  }
  if (defined(value.editors)) {
    output2.editors = validateList(value.editors, { coerce: true, ...incrementOptions("editors", opts) }, (editor, ind) => {
      return validateAndStashObject(editor, stash, "contributors", (v, o) => validateContributor(v, stash, o), incrementOptions(`editors.${ind}`, opts));
    });
  }
  if (defined(value.venue)) {
    output2.venue = validateVenue(value.venue, incrementOptions("venue", opts));
  }
  if (defined(value.github)) {
    output2.github = validateGithubUrl(value.github, incrementOptions("github", opts));
  }
  if (defined(value.keywords)) {
    let keywords = value.keywords;
    if (typeof keywords === "string") {
      keywords = keywords.split(/[,;]/).map((k) => k.trim());
    }
    output2.keywords = validateList(keywords, incrementOptions("keywords", opts), (word, ind) => {
      return validateString(word, incrementOptions(`keywords.${ind}`, opts));
    });
  }
  if (defined(value.funding)) {
    output2.funding = validateList(value.funding, { coerce: true, ...incrementOptions("funding", opts) }, (fund, index4) => {
      return validateFunding(fund, stash, incrementOptions(`funding.${index4}`, opts));
    });
  }
  if (defined(value.copyright)) {
    output2.copyright = validateString(value.copyright, incrementOptions("copyright", opts));
  }
  if (defined(value.options)) {
    const optionsOptions = incrementOptions("options", opts);
    const options = validateObject(value.options, optionsOptions);
    if (options) {
      Object.entries(options).forEach(([key2, val]) => {
        var _a7;
        if (RESERVED_EXPORT_KEYS.includes(key2)) {
          validationError(`options cannot include reserved key ${key2}`, optionsOptions);
        } else {
          ((_a7 = output2.options) !== null && _a7 !== void 0 ? _a7 : output2.options = {})[key2] = val;
        }
      });
    }
  }
  const partsOptions = incrementOptions("parts", opts);
  let parts;
  if (defined(value.parts)) {
    parts = validateObjectKeys(value.parts, { optional: PAGE_KNOWN_PARTS, alias: FRONTMATTER_ALIASES }, { keepExtraKeys: true, suppressWarnings: true, ...partsOptions });
  }
  PAGE_KNOWN_PARTS.forEach((partKey) => {
    if (defined(value[partKey])) {
      parts !== null && parts !== void 0 ? parts : parts = {};
      if (parts[partKey]) {
        validationError(`duplicate value for part ${partKey}`, partsOptions);
      } else {
        parts[partKey] = value[partKey];
      }
    }
  });
  if (parts) {
    const partsEntries = Object.entries(parts).map(([k, v]) => {
      return [
        k,
        validateList(v, { coerce: true, ...incrementOptions(k, partsOptions) }, (item, index4) => {
          return validateString(item, incrementOptions(`${k}.${index4}`, partsOptions));
        })
      ];
    }).filter((entry) => {
      var _a7;
      return !!((_a7 = entry[1]) === null || _a7 === void 0 ? void 0 : _a7.length);
    });
    if (partsEntries.length > 0) {
      output2.parts = Object.fromEntries(partsEntries);
    }
  }
  const stashContribAuthors = (_a6 = stash.contributors) === null || _a6 === void 0 ? void 0 : _a6.filter((contrib) => {
    var _a7;
    return (_a7 = stash.authorIds) === null || _a7 === void 0 ? void 0 : _a7.includes(contrib.id);
  });
  const stashContribNonAuthors = (_b = stash.contributors) === null || _b === void 0 ? void 0 : _b.filter((contrib) => {
    var _a7;
    return !((_a7 = stash.authorIds) === null || _a7 === void 0 ? void 0 : _a7.includes(contrib.id));
  });
  if (stashContribAuthors === null || stashContribAuthors === void 0 ? void 0 : stashContribAuthors.length) {
    output2.authors = stashContribAuthors;
    const correspondingAuthor = (_c = output2.authors) === null || _c === void 0 ? void 0 : _c.find((a2) => a2.corresponding);
    const personWithEmail = (_d2 = output2.authors) === null || _d2 === void 0 ? void 0 : _d2.find((a2) => a2.email && !a2.collaboration && a2.corresponding === void 0);
    if (!correspondingAuthor && personWithEmail) {
      personWithEmail.corresponding = true;
    }
  }
  if (stashContribNonAuthors === null || stashContribNonAuthors === void 0 ? void 0 : stashContribNonAuthors.length) {
    output2.contributors = stashContribNonAuthors;
  }
  if ((_e = stash.affiliations) === null || _e === void 0 ? void 0 : _e.length) {
    output2.affiliations = stash.affiliations;
  }
  return output2;
}

// ../myst-frontmatter/dist/thebe/validators.js
var THEBE_KEYS = [
  "lite",
  "binder",
  "server",
  "kernelName",
  "sessionName",
  "disableSessionSaving",
  "mathjaxUrl",
  "mathjaxConfig",
  "local"
];
var BINDER_HUB_OPTIONS_KEYS = ["url", "ref", "repo", "provider"];
var JUPYTER_SERVER_OPTIONS_KEYS = ["url", "token"];
function validateThebe(input3, github, opts) {
  if (input3 === false)
    return void 0;
  if (input3 === "lite")
    return { lite: true };
  if (typeof input3 === "string" && input3 !== "binder") {
    return validationError(`thebe must be a boolean, an object, "lite" or "binder", not a string: ${input3}`, opts);
  }
  let inputObject;
  if (input3 === true || input3 === "binder") {
    inputObject = { binder: true };
  } else {
    inputObject = input3;
  }
  const value = validateObjectKeys(inputObject, { optional: THEBE_KEYS }, opts);
  if (value === void 0)
    return void 0;
  const output2 = {};
  if (defined(value.lite)) {
    output2.lite = validateBoolean(value.lite, incrementOptions("lite", opts));
  }
  if (value.binder) {
    output2.binder = validateBinderHubOptions(value.binder === true ? {} : value.binder, github, {
      ...incrementOptions("binder", opts),
      errorLogFn: (msg) => validationError(msg.split("object").join("an object or boolean"), opts)
    });
  }
  if (defined(value.server)) {
    const serverOpts = incrementOptions("server", opts);
    output2.server = validateJupyterServerOptions(value.server, serverOpts);
  }
  if (defined(value.kernelName)) {
    output2.kernelName = validateString(value.kernelName, incrementOptions("kernelName", opts));
  }
  if (defined(value.sessionName)) {
    output2.sessionName = validateString(value.sessionName, incrementOptions("sessionName", opts));
  }
  if (defined(value.disableSessionSaving)) {
    output2.disableSessionSaving = validateBoolean(value.disableSessionSaving, incrementOptions("disableSessionSaving", opts));
  }
  if (defined(value.mathjaxUrl)) {
    output2.mathjaxUrl = validateUrl(value.mathjaxUrl, incrementOptions("mathjaxUrl", opts));
  }
  if (defined(value.mathjaxConfig)) {
    output2.mathjaxConfig = validateString(value.mathjaxConfig, incrementOptions("mathjaxConfig", opts));
  }
  return output2;
}
function validateBinderHubOptions(input3, github, opts) {
  var _a6, _b;
  const value = validateObjectKeys(input3, { optional: BINDER_HUB_OPTIONS_KEYS }, opts);
  if (value === void 0)
    return void 0;
  const output2 = {};
  output2.url = validateUrl((_a6 = value.url) !== null && _a6 !== void 0 ? _a6 : "https://mybinder.org/", incrementOptions("url", opts));
  output2.provider = value.provider ? validateString(value.provider, {
    ...incrementOptions("provider", opts),
    regex: /.+/
  }) : "github";
  if ((_b = output2.provider) === null || _b === void 0 ? void 0 : _b.match(/^(git|github|gitlab|gist)$/i)) {
    const fallbackRepo = github ? github : "executablebooks/thebe-binder-base";
    output2.repo = value.repo ? validateString(value.repo, {
      ...incrementOptions("repo", opts),
      regex: GITHUB_USERNAME_REPO_REGEX,
      suppressErrors: true,
      suppressWarnings: true
    }) : fallbackRepo;
    if (!output2.repo) {
      output2.repo = validateUrl(value.repo, incrementOptions("repo", opts));
    }
    output2.ref = value.ref ? validateString(value.ref, incrementOptions("ref", opts)) : "HEAD";
  } else {
    output2.repo = validateString(value.repo, {
      ...incrementOptions("repo", opts),
      regex: /.+/
    });
    output2.ref = value.ref ? validateString(value.ref, incrementOptions("ref", opts)) : "";
  }
  return output2;
}
function validateJupyterServerOptions(input3, opts) {
  const value = validateObjectKeys(input3, { required: JUPYTER_SERVER_OPTIONS_KEYS }, opts);
  if (value === void 0)
    return void 0;
  const output2 = {};
  if (defined(value.url)) {
    output2.url = validateUrl(value.url, incrementOptions("url", opts));
  }
  if (defined(value.token)) {
    output2.token = validateString(value.token, incrementOptions("token", opts));
  }
  return output2.url && output2.token ? output2 : void 0;
}

// ../myst-frontmatter/dist/settings/validatorsMystToTex.js
var MYST_TO_TEX_SETTINGS = ["codeStyle", "beamer"];
var MYST_TO_TEX_SETTINGS_ALIAS = {
  code_style: "codeStyle"
};
function validateMystToTexSettings(value, opts) {
  const output2 = {};
  const settings = validateObjectKeys(value, { optional: MYST_TO_TEX_SETTINGS, alias: MYST_TO_TEX_SETTINGS_ALIAS }, opts);
  if (!settings)
    return void 0;
  if (defined(settings.codeStyle)) {
    const codeStyle = validateChoice(settings.codeStyle, {
      ...incrementOptions("codeStyle", opts),
      choices: ["verbatim", "minted", "listings"]
    });
    if (codeStyle)
      output2.codeStyle = codeStyle;
  }
  if (defined(settings.beamer)) {
    const beamer = validateBoolean(settings.beamer, incrementOptions("beamer", opts));
    if (beamer != null)
      output2.beamer = beamer;
  }
  if (Object.keys(output2).length === 0)
    return void 0;
  return output2;
}

// ../myst-frontmatter/dist/settings/validators.js
var OUTPUT_REMOVAL_OPTIONS = [
  "show",
  "remove",
  "remove-warn",
  "remove-error",
  "warn",
  "error"
];
var PROJECT_SETTINGS = [
  "output_stderr",
  "output_stdout",
  "output_matplotlib_strings",
  "myst_to_tex"
];
var PROJECT_SETTINGS_ALIAS = {
  stderr_output: "output_stderr",
  stdout_output: "output_stdout",
  mystToTex: "myst_to_tex",
  tex: "myst_to_tex"
  // The default is the renderer, not the parser
};
function validateProjectAndPageSettings(value, opts) {
  const output2 = {};
  const settings = validateObjectKeys(value, { optional: PROJECT_SETTINGS, alias: PROJECT_SETTINGS_ALIAS }, opts);
  if (!settings)
    return void 0;
  if (defined(settings.output_stderr)) {
    const output_stderr = validateChoice(settings.output_stderr, {
      ...incrementOptions("output_stderr", opts),
      choices: OUTPUT_REMOVAL_OPTIONS
    });
    if (output_stderr)
      output2.output_stderr = output_stderr;
  }
  if (defined(settings.output_stdout)) {
    const output_stdout = validateChoice(settings.output_stdout, {
      ...incrementOptions("output_stdout", opts),
      choices: OUTPUT_REMOVAL_OPTIONS
    });
    if (output_stdout)
      output2.output_stdout = output_stdout;
  }
  if (defined(settings.output_matplotlib_strings)) {
    const output_matplotlib_strings = validateChoice(settings.output_matplotlib_strings, {
      ...incrementOptions("output_matplotlib_strings", opts),
      choices: OUTPUT_REMOVAL_OPTIONS
    });
    if (output_matplotlib_strings)
      output2.output_matplotlib_strings = output_matplotlib_strings;
  }
  if (defined(settings.myst_to_tex)) {
    const myst_to_tex = validateMystToTexSettings(settings.myst_to_tex, incrementOptions("myst_to_tex", opts));
    if (myst_to_tex)
      output2.myst_to_tex = myst_to_tex;
  }
  if (Object.keys(output2).length === 0)
    return void 0;
  return output2;
}

// ../myst-frontmatter/dist/math/validators.js
function validateMathMacro(input3, opts) {
  if (typeof input3 === "string") {
    input3 = { macro: input3 };
  }
  const value = validateObjectKeys(input3, { required: ["macro"], optional: ["title", "description"] }, opts);
  if (!value)
    return;
  const macro2 = validateString(value.macro, incrementOptions("macro", opts));
  if (!macro2)
    return;
  const output2 = { macro: macro2 };
  if (defined(value.title)) {
    output2.title = validateString(value.title, incrementOptions("title", opts));
  }
  if (defined(value.description)) {
    output2.description = validateString(value.description, incrementOptions("description", opts));
  }
  return output2;
}
function validateMathMacroObject(input3, opts) {
  const value = validateObject(input3, opts);
  if (!value)
    return;
  const validMacros = Object.entries(value).map(([key2, val]) => {
    const macro2 = validateMathMacro(val, incrementOptions(key2, opts));
    if (!macro2)
      return false;
    return [key2, macro2];
  }).filter((valid2) => !!valid2);
  return Object.fromEntries(validMacros);
}

// ../myst-frontmatter/dist/project/validators.js
function getExternalIdentifierValidator(key2) {
  if (key2 === "arxiv") {
    return (value, opts) => {
      return validateUrl(value, {
        ...incrementOptions("arxiv", opts),
        includes: "arxiv.org"
      });
    };
  }
  if (key2 === "pmid") {
    return (value, opts) => {
      return validateNumber(value, {
        ...incrementOptions("pmid", opts),
        integer: true,
        min: 1
      });
    };
  }
  if (key2 === "pmcid") {
    return (value, opts) => {
      return validateString(value, {
        ...incrementOptions("pmcid", opts),
        regex: "^PMC[0-9]+$"
      });
    };
  }
  if (key2 === "zenodo") {
    return (value, opts) => {
      return validateUrl(value, {
        ...incrementOptions("zenodo", opts),
        includes: "zenodo.org"
      });
    };
  }
  return (value, opts) => {
    return validateStringOrNumber(value, incrementOptions(key2, opts));
  };
}
function validateProjectAndPageFrontmatterKeys(value, opts) {
  var _a6;
  const output2 = validateSiteFrontmatterKeys(value, opts);
  if (defined(value.date)) {
    output2.date = validateDate(value.date, incrementOptions("date", opts));
  }
  const identifiersOpts = incrementOptions("identifiers", opts);
  let identifiers;
  if (defined(value.identifiers)) {
    identifiers = validateObjectKeys(value.identifiers, { optional: KNOWN_EXTERNAL_IDENTIFIERS }, { keepExtraKeys: true, suppressWarnings: true, ...identifiersOpts });
  }
  KNOWN_EXTERNAL_IDENTIFIERS.forEach((identifierKey) => {
    if (defined(value[identifierKey])) {
      identifiers !== null && identifiers !== void 0 ? identifiers : identifiers = {};
      if (identifiers[identifierKey]) {
        validationError(`duplicate value for identifier ${identifierKey}`, identifiersOpts);
      } else {
        identifiers[identifierKey] = value[identifierKey];
      }
    }
  });
  if (identifiers === null || identifiers === void 0 ? void 0 : identifiers.doi) {
    if (defined(value.doi)) {
      validationError(`duplicate value for DOI`, identifiersOpts);
    } else {
      value.doi = identifiers.doi;
      validationWarning("DOI should be defined directly on the project frontmatter, not under 'identifiers'", identifiersOpts);
    }
    delete identifiers.doi;
  }
  if (identifiers) {
    const identifiersEntries = Object.entries(identifiers).map(([k, v]) => {
      const validator = getExternalIdentifierValidator(k);
      return [k, validator(v, identifiersOpts)];
    }).filter((entry) => entry[1] != null);
    if (identifiersEntries.length > 0) {
      output2.identifiers = Object.fromEntries(identifiersEntries);
    }
  }
  if (defined(value.doi)) {
    output2.doi = validateDoi(value.doi, incrementOptions("doi", opts));
  }
  if (defined(value.open_access)) {
    output2.open_access = validateBoolean(value.open_access, incrementOptions("open_access", opts));
  }
  if (defined(value.license)) {
    output2.license = validateLicenses(value.license, incrementOptions("license", opts));
  }
  if (defined(value.binder)) {
    output2.binder = validateUrl(value.binder, incrementOptions("binder", opts));
  }
  if (defined(value.source)) {
    output2.source = validateUrl(value.source, incrementOptions("source", opts));
  }
  if (defined(value.subject)) {
    output2.subject = validateString(value.subject, {
      ...incrementOptions("subject", opts),
      maxLength: 40
    });
  }
  if (defined(value.bibliography)) {
    output2.bibliography = validateList(value.bibliography, { coerce: true, ...incrementOptions("bibliography", opts) }, (req, index4) => {
      return validateString(req, incrementOptions(`bibliography.${index4}`, opts));
    });
  }
  if (defined(value.volume)) {
    output2.volume = validatePublicationMeta(value.volume, incrementOptions("volume", opts));
  }
  if (defined(value.issue)) {
    output2.issue = validatePublicationMeta(value.issue, incrementOptions("issue", opts));
  }
  if (defined(value.first_page)) {
    output2.first_page = validateStringOrNumber(value.first_page, incrementOptions("first_page", opts));
  }
  if (defined(value.last_page)) {
    output2.last_page = validateStringOrNumber(value.last_page, incrementOptions("last_page", opts));
  }
  if (defined(value.oxa)) {
    output2.oxa = validateString(value.oxa, incrementOptions("oxa", opts));
  }
  if (defined(value.numbering)) {
    output2.numbering = validateNumbering(value.numbering, incrementOptions("numbering", opts));
  }
  if (defined(value.math)) {
    output2.math = validateMathMacroObject(value.math, incrementOptions("math", opts));
  }
  if (defined(value.abbreviations)) {
    const abbreviationsOpts = incrementOptions("abbreviations", opts);
    const abbreviations = Object.fromEntries(Object.entries((_a6 = validateObject(value.abbreviations, abbreviationsOpts)) !== null && _a6 !== void 0 ? _a6 : {}).map(([k, v]) => {
      if (v === null || v === false)
        return [k, null];
      const title = validateString(v, incrementOptions(k, abbreviationsOpts));
      const key2 = validateString(k, {
        ...incrementOptions(k, abbreviationsOpts),
        minLength: 2
      });
      if (!(key2 && title))
        return null;
      return [k, title];
    }).filter((v) => !!v));
    if (abbreviations && Object.keys(abbreviations).length > 0) {
      output2.abbreviations = abbreviations;
    }
  }
  if (defined(value.exports)) {
    const exports2 = validateExportsList(value.exports, opts);
    if (exports2)
      output2.exports = exports2;
  }
  if (defined(value.downloads)) {
    const downloads = validateDownloadsList(value.downloads, opts);
    if (downloads)
      output2.downloads = downloads;
  }
  if (value.thumbnail === null) {
    output2.thumbnail = null;
  } else if (defined(value.thumbnail)) {
    output2.thumbnail = validateString(value.thumbnail, incrementOptions("thumbnail", opts));
  }
  if (defined(value.thumbnailOptimized)) {
    output2.thumbnailOptimized = value.thumbnailOptimized;
  }
  if (value.banner === null) {
    output2.banner = null;
  } else if (defined(value.banner)) {
    output2.banner = validateString(value.banner, incrementOptions("banner", opts));
  }
  if (defined(value.bannerOptimized)) {
    output2.bannerOptimized = value.bannerOptimized;
  }
  if (defined(value.settings)) {
    const settings = validateProjectAndPageSettings(value.settings, incrementOptions("settings", opts));
    if (settings)
      output2.settings = settings;
  }
  if (value.edit_url === null) {
    output2.edit_url = null;
  } else if (defined(value.edit_url)) {
    output2.edit_url = validateUrl(value.edit_url, incrementOptions("edit_url", opts));
  }
  if (value.source_url === null) {
    output2.source_url = null;
  } else if (defined(value.source_url)) {
    output2.source_url = validateUrl(value.source_url, incrementOptions("source_url", opts));
  }
  return output2;
}
function validateProjectFrontmatterKeys(value, opts) {
  const output2 = validateProjectAndPageFrontmatterKeys(value, opts);
  if (defined(value.id)) {
    output2.id = validateString(value.id, incrementOptions("id", opts));
  }
  if (defined(value.references)) {
    output2.references = validateExternalReferences(value.references, incrementOptions("references", opts));
  }
  if (defined(value.thebe)) {
    const result = validateThebe(value.thebe, output2.github, incrementOptions("thebe", opts));
    if (result && Object.values(result).filter((val) => val !== void 0).length > 0) {
      output2.thebe = result;
    } else {
      delete output2.thebe;
    }
  }
  if (defined(value.toc)) {
    output2.toc = validateTOC(value.toc, incrementOptions("toc", opts));
  }
  if (defined(value.social)) {
    output2.social = validateSocialLinks(value.social, incrementOptions("social", opts));
  }
  if (defined(value.requirements)) {
    output2.requirements = validateList(value.requirements, incrementOptions("requirements", opts), (req, index4) => {
      return validateString(req, incrementOptions(`requirements.${index4}`, opts));
    });
  }
  if (defined(value.resources)) {
    output2.resources = validateList(value.resources, incrementOptions("resources", opts), (res, index4) => {
      return validateString(res, incrementOptions(`resources.${index4}`, opts));
    });
  }
  return output2;
}
function validateProjectFrontmatter(input3, opts) {
  const value = validateObjectKeys(input3, { optional: PROJECT_FRONTMATTER_KEYS, alias: { ...FRONTMATTER_ALIASES, name: "label" } }, opts) || {};
  return validateProjectFrontmatterKeys(value, opts);
}

// ../myst-frontmatter/dist/execute/validators.js
var EXECUTE_KEYS = ["skip", "depends_on_env", "cache"];
function validateExecute(input3, opts) {
  const value = validateObjectKeys(input3, { optional: EXECUTE_KEYS }, opts);
  if (value === void 0)
    return void 0;
  const output2 = {};
  if (defined(value.skip)) {
    output2.skip = validateBoolean(value.skip, incrementOptions("skip", opts));
  }
  if (defined(value.depends_on_env)) {
    output2.depends_on_env = validateList(value.depends_on_env, incrementOptions("depends_on_env", opts), (item, index4) => validateString(item, incrementOptions(`depends_on_env.${index4}`, opts)));
  }
  if (defined(value.cache)) {
    output2.cache = validateBoolean(value.cache, incrementOptions("cache", opts));
  }
  return output2;
}

// ../myst-frontmatter/dist/page/validators.js
var USE_PROJECT_FALLBACK = [
  "authors",
  "reviewers",
  "editors",
  "date",
  "doi",
  "arxiv",
  "pmid",
  "pmcid",
  "open_access",
  "license",
  "github",
  "binder",
  "source",
  "subject",
  "venue",
  "volume",
  "issue",
  "first_page",
  "last_page",
  "numbering",
  "keywords",
  "funding",
  "copyright",
  "affiliations"
];
function validatePageFrontmatterKeys(value, opts) {
  var _a6;
  const output2 = validateProjectAndPageFrontmatterKeys(value, opts);
  if (defined(value.label)) {
    output2.label = validateString(value.label, incrementOptions("label", opts));
  }
  if (defined(value.kernelspec)) {
    output2.kernelspec = validateKernelSpec(value.kernelspec, incrementOptions("kernelspec", opts));
  }
  if (defined(value.jupytext)) {
    output2.jupytext = validateJupytext(value.jupytext, incrementOptions("jupytext", opts));
  }
  if (defined(value.execute)) {
    output2.execute = validateExecute(value.execute, incrementOptions("execute", opts));
  }
  if (defined(value.skip_execution)) {
    (_a6 = output2.execute) !== null && _a6 !== void 0 ? _a6 : output2.execute = {};
    if (defined(output2.execute.skip)) {
      validationWarning(`both execute.skip and deprecated skip_execution are defined, taking execute.skip`, opts);
    } else {
      validationWarning(`skip_execution is deprecated in favour of execute.skip`, opts);
      output2.execute.skip = validateBoolean(value.skip_execution, incrementOptions("skip_execution", opts));
    }
  }
  if (defined(value.enumerator)) {
    output2.enumerator = validateString(value.enumerator, incrementOptions("enumerator", opts));
  }
  if (defined(value.content_includes_title)) {
    output2.content_includes_title = validateBoolean(value.content_includes_title, incrementOptions("content_includes_title", opts));
  }
  if (defined(value.site)) {
    output2.site = validateObject(value.site, incrementOptions("site", opts));
  }
  return output2;
}
function validatePageFrontmatter(input3, opts) {
  const value = validateObjectKeys(input3, { optional: PAGE_FRONTMATTER_KEYS, alias: { ...FRONTMATTER_ALIASES, name: "label" } }, opts) || {};
  return validatePageFrontmatterKeys(value, opts);
}

// ../myst-frontmatter/dist/utils/fillPageFrontmatter.js
function fillPageFrontmatter(pageFrontmatter, projectFrontmatter, opts) {
  return fillProjectFrontmatter(pageFrontmatter, projectFrontmatter, opts, USE_PROJECT_FALLBACK, true);
}
function fillSiteFrontmatter(base5, filler, opts, keys2, trimUnused) {
  var _a6, _b, _c, _d2, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x2, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7;
  const frontmatter = fillMissingKeys(base5, filler, keys2 !== null && keys2 !== void 0 ? keys2 : Object.keys(filler));
  if (filler.options || base5.options) {
    frontmatter.options = {
      ...(_a6 = filler.options) !== null && _a6 !== void 0 ? _a6 : {},
      ...(_b = base5.options) !== null && _b !== void 0 ? _b : {}
    };
  }
  const contributorIds = /* @__PURE__ */ new Set();
  const affiliationIds = /* @__PURE__ */ new Set();
  (_c = frontmatter.funding) === null || _c === void 0 ? void 0 : _c.forEach((fund) => {
    var _a7;
    (_a7 = fund.awards) === null || _a7 === void 0 ? void 0 : _a7.forEach((award) => {
      var _a8, _b2, _c2;
      (_a8 = award.investigators) === null || _a8 === void 0 ? void 0 : _a8.forEach((inv) => {
        contributorIds.add(inv);
      });
      (_b2 = award.recipients) === null || _b2 === void 0 ? void 0 : _b2.forEach((rec) => {
        contributorIds.add(rec);
      });
      (_c2 = award.sources) === null || _c2 === void 0 ? void 0 : _c2.forEach((aff) => {
        affiliationIds.add(aff);
      });
    });
  });
  (_d2 = frontmatter.reviewers) === null || _d2 === void 0 ? void 0 : _d2.forEach((reviewer) => {
    contributorIds.add(reviewer);
  });
  (_e = frontmatter.editors) === null || _e === void 0 ? void 0 : _e.forEach((editor) => {
    contributorIds.add(editor);
  });
  if (!trimUnused) {
    [
      ...(_f = base5.authors) !== null && _f !== void 0 ? _f : [],
      ...(_g = filler.authors) !== null && _g !== void 0 ? _g : [],
      ...(_h = base5.contributors) !== null && _h !== void 0 ? _h : [],
      ...(_j = filler.contributors) !== null && _j !== void 0 ? _j : []
    ].forEach((auth) => {
      if (auth.id)
        contributorIds.add(auth.id);
    });
    [...(_k = base5.affiliations) !== null && _k !== void 0 ? _k : [], ...(_l = filler.affiliations) !== null && _l !== void 0 ? _l : []].forEach((aff) => {
      if (aff.id)
        affiliationIds.add(aff.id);
    });
    if (filler.tags || base5.tags) {
      frontmatter.tags = [.../* @__PURE__ */ new Set([...(_m = filler.tags) !== null && _m !== void 0 ? _m : [], ...(_o = base5.tags) !== null && _o !== void 0 ? _o : []])];
    }
    if (filler.reviewers || base5.reviewers) {
      frontmatter.reviewers = [
        .../* @__PURE__ */ new Set([...(_p = filler.reviewers) !== null && _p !== void 0 ? _p : [], ...(_q = base5.reviewers) !== null && _q !== void 0 ? _q : []])
      ];
    }
    if (filler.editors || base5.editors) {
      frontmatter.editors = [.../* @__PURE__ */ new Set([...(_r = filler.editors) !== null && _r !== void 0 ? _r : [], ...(_s = base5.editors) !== null && _s !== void 0 ? _s : []])];
    }
    if (filler.keywords || base5.keywords) {
      frontmatter.keywords = [.../* @__PURE__ */ new Set([...(_t = filler.keywords) !== null && _t !== void 0 ? _t : [], ...(_u = base5.keywords) !== null && _u !== void 0 ? _u : []])];
    }
    if (filler.funding || base5.funding) {
      frontmatter.funding = [...(_v = filler.funding) !== null && _v !== void 0 ? _v : [], ...(_w = base5.funding) !== null && _w !== void 0 ? _w : []];
    }
  }
  if (((_x2 = frontmatter.authors) === null || _x2 === void 0 ? void 0 : _x2.length) || contributorIds.size) {
    const people = [
      ...(_y = base5.authors) !== null && _y !== void 0 ? _y : [],
      ...(_z = filler.authors) !== null && _z !== void 0 ? _z : [],
      ...(_0 = base5.contributors) !== null && _0 !== void 0 ? _0 : [],
      ...(_1 = filler.contributors) !== null && _1 !== void 0 ? _1 : []
    ];
    const peopleLookup = {};
    people.forEach((auth) => {
      if (!auth.id || isStashPlaceholder(auth))
        return;
      if (!peopleLookup[auth.id]) {
        peopleLookup[auth.id] = auth;
      } else if (normalizeJsonToString(auth) !== normalizeJsonToString(peopleLookup[auth.id])) {
        validationWarning(`Duplicate contributor id within project: ${auth.id}`, incrementOptions("authors", opts));
      }
    });
    if ((_2 = frontmatter.authors) === null || _2 === void 0 ? void 0 : _2.length) {
      frontmatter.authors = frontmatter.authors.map((auth) => {
        var _a7;
        if (!auth.id)
          return auth;
        contributorIds.delete(auth.id);
        return (_a7 = peopleLookup[auth.id]) !== null && _a7 !== void 0 ? _a7 : stashPlaceholder(auth.id);
      });
    }
    if (contributorIds.size) {
      frontmatter.contributors = [...contributorIds].map((id) => {
        var _a7;
        return (_a7 = peopleLookup[id]) !== null && _a7 !== void 0 ? _a7 : stashPlaceholder(id);
      });
    }
  }
  [...(_3 = frontmatter.authors) !== null && _3 !== void 0 ? _3 : [], ...(_4 = frontmatter.contributors) !== null && _4 !== void 0 ? _4 : []].forEach((auth) => {
    var _a7;
    (_a7 = auth.affiliations) === null || _a7 === void 0 ? void 0 : _a7.forEach((aff) => {
      affiliationIds.add(aff);
    });
  });
  (_5 = frontmatter.affiliations) === null || _5 === void 0 ? void 0 : _5.forEach((aff) => {
    if (aff.id)
      affiliationIds.add(aff.id);
  });
  if (affiliationIds.size) {
    const affiliations2 = [...(_6 = base5.affiliations) !== null && _6 !== void 0 ? _6 : [], ...(_7 = filler.affiliations) !== null && _7 !== void 0 ? _7 : []];
    const affiliationLookup = {};
    affiliations2.forEach((aff) => {
      if (!aff.id || isStashPlaceholder(aff))
        return;
      if (!affiliationLookup[aff.id]) {
        affiliationLookup[aff.id] = aff;
      } else if (normalizeJsonToString(aff) !== normalizeJsonToString(affiliationLookup[aff.id])) {
        validationWarning(`Duplicate affiliation id within project: ${aff.id}`, incrementOptions("affiliations", opts));
      }
    });
    frontmatter.affiliations = [...affiliationIds].map((id) => {
      var _a7;
      return (_a7 = affiliationLookup[id]) !== null && _a7 !== void 0 ? _a7 : stashPlaceholder(id);
    });
  }
  return frontmatter;
}
function fillProjectFrontmatter(base5, filler, opts, keys2, trimUnused) {
  var _a6, _b, _c, _d2, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x2, _y, _z, _0, _1;
  const frontmatter = fillSiteFrontmatter(base5, filler, opts, keys2 !== null && keys2 !== void 0 ? keys2 : Object.keys(filler), trimUnused);
  if (filler.numbering || base5.numbering) {
    frontmatter.numbering = fillNumbering(base5.numbering, filler.numbering);
  }
  if (filler.math || base5.math) {
    frontmatter.math = { ...(_a6 = filler.math) !== null && _a6 !== void 0 ? _a6 : {}, ...(_b = base5.math) !== null && _b !== void 0 ? _b : {} };
  }
  if (filler.abbreviations || base5.abbreviations) {
    frontmatter.abbreviations = {
      ...(_c = filler.abbreviations) !== null && _c !== void 0 ? _c : {},
      ...(_d2 = base5.abbreviations) !== null && _d2 !== void 0 ? _d2 : {}
    };
  }
  if (filler.settings || base5.settings) {
    frontmatter.settings = {
      ...(_e = filler.settings) !== null && _e !== void 0 ? _e : {},
      ...(_f = base5.settings) !== null && _f !== void 0 ? _f : {}
    };
  }
  if (filler.identifiers || base5.identifiers) {
    frontmatter.identifiers = {
      ...(_g = filler.identifiers) !== null && _g !== void 0 ? _g : {},
      ...(_h = base5.identifiers) !== null && _h !== void 0 ? _h : {}
    };
  }
  if (!trimUnused) {
    if (filler.bibliography || base5.bibliography) {
      frontmatter.bibliography = [
        .../* @__PURE__ */ new Set([...(_j = filler.bibliography) !== null && _j !== void 0 ? _j : [], ...(_k = base5.bibliography) !== null && _k !== void 0 ? _k : []])
      ];
    }
    if (filler.requirements || base5.requirements) {
      frontmatter.requirements = [
        .../* @__PURE__ */ new Set([...(_l = filler.requirements) !== null && _l !== void 0 ? _l : [], ...(_m = base5.requirements) !== null && _m !== void 0 ? _m : []])
      ];
    }
    if (filler.resources || base5.resources) {
      frontmatter.resources = [
        .../* @__PURE__ */ new Set([...(_o = filler.resources) !== null && _o !== void 0 ? _o : [], ...(_p = base5.resources) !== null && _p !== void 0 ? _p : []])
      ];
    }
    if (filler.exports || base5.exports) {
      frontmatter.exports = [];
      const ids = (_r = (_q = base5.exports) === null || _q === void 0 ? void 0 : _q.map(({ id }) => id)) !== null && _r !== void 0 ? _r : [];
      (_s = filler.exports) === null || _s === void 0 ? void 0 : _s.forEach((exp) => {
        var _a7;
        if (!exp.id || !ids.includes(exp.id)) {
          (_a7 = frontmatter.exports) === null || _a7 === void 0 ? void 0 : _a7.push(exp);
        }
      });
      (_t = frontmatter.exports) === null || _t === void 0 ? void 0 : _t.push(...(_u = base5.exports) !== null && _u !== void 0 ? _u : []);
    }
    if (filler.downloads || base5.downloads) {
      frontmatter.downloads = [];
      const ids = (_w = (_v = base5.downloads) === null || _v === void 0 ? void 0 : _v.map(({ id }) => id).filter(Boolean)) !== null && _w !== void 0 ? _w : [];
      const urls = (_y = (_x2 = base5.downloads) === null || _x2 === void 0 ? void 0 : _x2.map(({ url }) => url).filter(Boolean)) !== null && _y !== void 0 ? _y : [];
      (_z = filler.downloads) === null || _z === void 0 ? void 0 : _z.forEach((download) => {
        var _a7, _b2;
        if (download.id && !ids.includes(download.id)) {
          (_a7 = frontmatter.downloads) === null || _a7 === void 0 ? void 0 : _a7.push(download);
        }
        if (download.url && !urls.includes(download.url)) {
          (_b2 = frontmatter.downloads) === null || _b2 === void 0 ? void 0 : _b2.push(download);
        }
      });
      (_0 = frontmatter.downloads) === null || _0 === void 0 ? void 0 : _0.push(...(_1 = base5.downloads) !== null && _1 !== void 0 ? _1 : []);
    }
  }
  return frontmatter;
}

// ../myst-frontmatter/dist/utils/unnestKernelSpec.js
function unnestKernelSpec(pageFrontmatter) {
  var _a6;
  if ((_a6 = pageFrontmatter.jupyter) === null || _a6 === void 0 ? void 0 : _a6.kernelspec) {
    pageFrontmatter.kernelspec = pageFrontmatter.jupyter.kernelspec;
    delete pageFrontmatter.jupyter.kernelspec;
    if (!Object.keys(pageFrontmatter.jupyter).length) {
      delete pageFrontmatter.jupyter;
    }
  }
}

// ../myst-cli/dist/config.js
var import_node_fs14 = __toESM(require("fs"), 1);
var import_node_path19 = require("path");

// ../../node_modules/js-yaml/dist/js-yaml.mjs
function isNothing(subject) {
  return typeof subject === "undefined" || subject === null;
}
function isObject(subject) {
  return typeof subject === "object" && subject !== null;
}
function toArray(sequence) {
  if (Array.isArray(sequence)) return sequence;
  else if (isNothing(sequence)) return [];
  return [sequence];
}
function extend(target, source2) {
  var index4, length, key2, sourceKeys;
  if (source2) {
    sourceKeys = Object.keys(source2);
    for (index4 = 0, length = sourceKeys.length; index4 < length; index4 += 1) {
      key2 = sourceKeys[index4];
      target[key2] = source2[key2];
    }
  }
  return target;
}
function repeat(string2, count2) {
  var result = "", cycle;
  for (cycle = 0; cycle < count2; cycle += 1) {
    result += string2;
  }
  return result;
}
function isNegativeZero(number2) {
  return number2 === 0 && Number.NEGATIVE_INFINITY === 1 / number2;
}
var isNothing_1 = isNothing;
var isObject_1 = isObject;
var toArray_1 = toArray;
var repeat_1 = repeat;
var isNegativeZero_1 = isNegativeZero;
var extend_1 = extend;
var common = {
  isNothing: isNothing_1,
  isObject: isObject_1,
  toArray: toArray_1,
  repeat: repeat_1,
  isNegativeZero: isNegativeZero_1,
  extend: extend_1
};
function formatError(exception2, compact) {
  var where = "", message = exception2.reason || "(unknown reason)";
  if (!exception2.mark) return message;
  if (exception2.mark.name) {
    where += 'in "' + exception2.mark.name + '" ';
  }
  where += "(" + (exception2.mark.line + 1) + ":" + (exception2.mark.column + 1) + ")";
  if (!compact && exception2.mark.snippet) {
    where += "\n\n" + exception2.mark.snippet;
  }
  return message + " " + where;
}
function YAMLException$1(reason, mark2) {
  Error.call(this);
  this.name = "YAMLException";
  this.reason = reason;
  this.mark = mark2;
  this.message = formatError(this, false);
  if (Error.captureStackTrace) {
    Error.captureStackTrace(this, this.constructor);
  } else {
    this.stack = new Error().stack || "";
  }
}
YAMLException$1.prototype = Object.create(Error.prototype);
YAMLException$1.prototype.constructor = YAMLException$1;
YAMLException$1.prototype.toString = function toString(compact) {
  return this.name + ": " + formatError(this, compact);
};
var exception = YAMLException$1;
function getLine(buffer2, lineStart, lineEnd, position6, maxLineLength) {
  var head2 = "";
  var tail = "";
  var maxHalfLength = Math.floor(maxLineLength / 2) - 1;
  if (position6 - lineStart > maxHalfLength) {
    head2 = " ... ";
    lineStart = position6 - maxHalfLength + head2.length;
  }
  if (lineEnd - position6 > maxHalfLength) {
    tail = " ...";
    lineEnd = position6 + maxHalfLength - tail.length;
  }
  return {
    str: head2 + buffer2.slice(lineStart, lineEnd).replace(/\t/g, "\u2192") + tail,
    pos: position6 - lineStart + head2.length
    // relative position
  };
}
function padStart(string2, max) {
  return common.repeat(" ", max - string2.length) + string2;
}
function makeSnippet(mark2, options) {
  options = Object.create(options || null);
  if (!mark2.buffer) return null;
  if (!options.maxLength) options.maxLength = 79;
  if (typeof options.indent !== "number") options.indent = 1;
  if (typeof options.linesBefore !== "number") options.linesBefore = 3;
  if (typeof options.linesAfter !== "number") options.linesAfter = 2;
  var re = /\r?\n|\r|\0/g;
  var lineStarts = [0];
  var lineEnds = [];
  var match3;
  var foundLineNo = -1;
  while (match3 = re.exec(mark2.buffer)) {
    lineEnds.push(match3.index);
    lineStarts.push(match3.index + match3[0].length);
    if (mark2.position <= match3.index && foundLineNo < 0) {
      foundLineNo = lineStarts.length - 2;
    }
  }
  if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;
  var result = "", i2, line2;
  var lineNoLength = Math.min(mark2.line + options.linesAfter, lineEnds.length).toString().length;
  var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);
  for (i2 = 1; i2 <= options.linesBefore; i2++) {
    if (foundLineNo - i2 < 0) break;
    line2 = getLine(
      mark2.buffer,
      lineStarts[foundLineNo - i2],
      lineEnds[foundLineNo - i2],
      mark2.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i2]),
      maxLineLength
    );
    result = common.repeat(" ", options.indent) + padStart((mark2.line - i2 + 1).toString(), lineNoLength) + " | " + line2.str + "\n" + result;
  }
  line2 = getLine(mark2.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark2.position, maxLineLength);
  result += common.repeat(" ", options.indent) + padStart((mark2.line + 1).toString(), lineNoLength) + " | " + line2.str + "\n";
  result += common.repeat("-", options.indent + lineNoLength + 3 + line2.pos) + "^\n";
  for (i2 = 1; i2 <= options.linesAfter; i2++) {
    if (foundLineNo + i2 >= lineEnds.length) break;
    line2 = getLine(
      mark2.buffer,
      lineStarts[foundLineNo + i2],
      lineEnds[foundLineNo + i2],
      mark2.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i2]),
      maxLineLength
    );
    result += common.repeat(" ", options.indent) + padStart((mark2.line + i2 + 1).toString(), lineNoLength) + " | " + line2.str + "\n";
  }
  return result.replace(/\n$/, "");
}
var snippet = makeSnippet;
var TYPE_CONSTRUCTOR_OPTIONS = [
  "kind",
  "multi",
  "resolve",
  "construct",
  "instanceOf",
  "predicate",
  "represent",
  "representName",
  "defaultStyle",
  "styleAliases"
];
var YAML_NODE_KINDS = [
  "scalar",
  "sequence",
  "mapping"
];
function compileStyleAliases(map13) {
  var result = {};
  if (map13 !== null) {
    Object.keys(map13).forEach(function(style3) {
      map13[style3].forEach(function(alias) {
        result[String(alias)] = style3;
      });
    });
  }
  return result;
}
function Type$1(tag, options) {
  options = options || {};
  Object.keys(options).forEach(function(name3) {
    if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name3) === -1) {
      throw new exception('Unknown option "' + name3 + '" is met in definition of "' + tag + '" YAML type.');
    }
  });
  this.options = options;
  this.tag = tag;
  this.kind = options["kind"] || null;
  this.resolve = options["resolve"] || function() {
    return true;
  };
  this.construct = options["construct"] || function(data) {
    return data;
  };
  this.instanceOf = options["instanceOf"] || null;
  this.predicate = options["predicate"] || null;
  this.represent = options["represent"] || null;
  this.representName = options["representName"] || null;
  this.defaultStyle = options["defaultStyle"] || null;
  this.multi = options["multi"] || false;
  this.styleAliases = compileStyleAliases(options["styleAliases"] || null);
  if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {
    throw new exception('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.');
  }
}
var type = Type$1;
function compileList(schema2, name3) {
  var result = [];
  schema2[name3].forEach(function(currentType) {
    var newIndex = result.length;
    result.forEach(function(previousType, previousIndex) {
      if (previousType.tag === currentType.tag && previousType.kind === currentType.kind && previousType.multi === currentType.multi) {
        newIndex = previousIndex;
      }
    });
    result[newIndex] = currentType;
  });
  return result;
}
function compileMap() {
  var result = {
    scalar: {},
    sequence: {},
    mapping: {},
    fallback: {},
    multi: {
      scalar: [],
      sequence: [],
      mapping: [],
      fallback: []
    }
  }, index4, length;
  function collectType(type2) {
    if (type2.multi) {
      result.multi[type2.kind].push(type2);
      result.multi["fallback"].push(type2);
    } else {
      result[type2.kind][type2.tag] = result["fallback"][type2.tag] = type2;
    }
  }
  for (index4 = 0, length = arguments.length; index4 < length; index4 += 1) {
    arguments[index4].forEach(collectType);
  }
  return result;
}
function Schema$1(definition2) {
  return this.extend(definition2);
}
Schema$1.prototype.extend = function extend2(definition2) {
  var implicit = [];
  var explicit = [];
  if (definition2 instanceof type) {
    explicit.push(definition2);
  } else if (Array.isArray(definition2)) {
    explicit = explicit.concat(definition2);
  } else if (definition2 && (Array.isArray(definition2.implicit) || Array.isArray(definition2.explicit))) {
    if (definition2.implicit) implicit = implicit.concat(definition2.implicit);
    if (definition2.explicit) explicit = explicit.concat(definition2.explicit);
  } else {
    throw new exception("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");
  }
  implicit.forEach(function(type$1) {
    if (!(type$1 instanceof type)) {
      throw new exception("Specified list of YAML types (or a single Type object) contains a non-Type object.");
    }
    if (type$1.loadKind && type$1.loadKind !== "scalar") {
      throw new exception("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");
    }
    if (type$1.multi) {
      throw new exception("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.");
    }
  });
  explicit.forEach(function(type$1) {
    if (!(type$1 instanceof type)) {
      throw new exception("Specified list of YAML types (or a single Type object) contains a non-Type object.");
    }
  });
  var result = Object.create(Schema$1.prototype);
  result.implicit = (this.implicit || []).concat(implicit);
  result.explicit = (this.explicit || []).concat(explicit);
  result.compiledImplicit = compileList(result, "implicit");
  result.compiledExplicit = compileList(result, "explicit");
  result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);
  return result;
};
var schema = Schema$1;
var str = new type("tag:yaml.org,2002:str", {
  kind: "scalar",
  construct: function(data) {
    return data !== null ? data : "";
  }
});
var seq = new type("tag:yaml.org,2002:seq", {
  kind: "sequence",
  construct: function(data) {
    return data !== null ? data : [];
  }
});
var map = new type("tag:yaml.org,2002:map", {
  kind: "mapping",
  construct: function(data) {
    return data !== null ? data : {};
  }
});
var failsafe = new schema({
  explicit: [
    str,
    seq,
    map
  ]
});
function resolveYamlNull(data) {
  if (data === null) return true;
  var max = data.length;
  return max === 1 && data === "~" || max === 4 && (data === "null" || data === "Null" || data === "NULL");
}
function constructYamlNull() {
  return null;
}
function isNull(object) {
  return object === null;
}
var _null = new type("tag:yaml.org,2002:null", {
  kind: "scalar",
  resolve: resolveYamlNull,
  construct: constructYamlNull,
  predicate: isNull,
  represent: {
    canonical: function() {
      return "~";
    },
    lowercase: function() {
      return "null";
    },
    uppercase: function() {
      return "NULL";
    },
    camelcase: function() {
      return "Null";
    },
    empty: function() {
      return "";
    }
  },
  defaultStyle: "lowercase"
});
function resolveYamlBoolean(data) {
  if (data === null) return false;
  var max = data.length;
  return max === 4 && (data === "true" || data === "True" || data === "TRUE") || max === 5 && (data === "false" || data === "False" || data === "FALSE");
}
function constructYamlBoolean(data) {
  return data === "true" || data === "True" || data === "TRUE";
}
function isBoolean2(object) {
  return Object.prototype.toString.call(object) === "[object Boolean]";
}
var bool = new type("tag:yaml.org,2002:bool", {
  kind: "scalar",
  resolve: resolveYamlBoolean,
  construct: constructYamlBoolean,
  predicate: isBoolean2,
  represent: {
    lowercase: function(object) {
      return object ? "true" : "false";
    },
    uppercase: function(object) {
      return object ? "TRUE" : "FALSE";
    },
    camelcase: function(object) {
      return object ? "True" : "False";
    }
  },
  defaultStyle: "lowercase"
});
function isHexCode(c) {
  return 48 <= c && c <= 57 || 65 <= c && c <= 70 || 97 <= c && c <= 102;
}
function isOctCode(c) {
  return 48 <= c && c <= 55;
}
function isDecCode(c) {
  return 48 <= c && c <= 57;
}
function resolveYamlInteger(data) {
  if (data === null) return false;
  var max = data.length, index4 = 0, hasDigits = false, ch;
  if (!max) return false;
  ch = data[index4];
  if (ch === "-" || ch === "+") {
    ch = data[++index4];
  }
  if (ch === "0") {
    if (index4 + 1 === max) return true;
    ch = data[++index4];
    if (ch === "b") {
      index4++;
      for (; index4 < max; index4++) {
        ch = data[index4];
        if (ch === "_") continue;
        if (ch !== "0" && ch !== "1") return false;
        hasDigits = true;
      }
      return hasDigits && ch !== "_";
    }
    if (ch === "x") {
      index4++;
      for (; index4 < max; index4++) {
        ch = data[index4];
        if (ch === "_") continue;
        if (!isHexCode(data.charCodeAt(index4))) return false;
        hasDigits = true;
      }
      return hasDigits && ch !== "_";
    }
    if (ch === "o") {
      index4++;
      for (; index4 < max; index4++) {
        ch = data[index4];
        if (ch === "_") continue;
        if (!isOctCode(data.charCodeAt(index4))) return false;
        hasDigits = true;
      }
      return hasDigits && ch !== "_";
    }
  }
  if (ch === "_") return false;
  for (; index4 < max; index4++) {
    ch = data[index4];
    if (ch === "_") continue;
    if (!isDecCode(data.charCodeAt(index4))) {
      return false;
    }
    hasDigits = true;
  }
  if (!hasDigits || ch === "_") return false;
  return true;
}
function constructYamlInteger(data) {
  var value = data, sign = 1, ch;
  if (value.indexOf("_") !== -1) {
    value = value.replace(/_/g, "");
  }
  ch = value[0];
  if (ch === "-" || ch === "+") {
    if (ch === "-") sign = -1;
    value = value.slice(1);
    ch = value[0];
  }
  if (value === "0") return 0;
  if (ch === "0") {
    if (value[1] === "b") return sign * parseInt(value.slice(2), 2);
    if (value[1] === "x") return sign * parseInt(value.slice(2), 16);
    if (value[1] === "o") return sign * parseInt(value.slice(2), 8);
  }
  return sign * parseInt(value, 10);
}
function isInteger(object) {
  return Object.prototype.toString.call(object) === "[object Number]" && (object % 1 === 0 && !common.isNegativeZero(object));
}
var int = new type("tag:yaml.org,2002:int", {
  kind: "scalar",
  resolve: resolveYamlInteger,
  construct: constructYamlInteger,
  predicate: isInteger,
  represent: {
    binary: function(obj) {
      return obj >= 0 ? "0b" + obj.toString(2) : "-0b" + obj.toString(2).slice(1);
    },
    octal: function(obj) {
      return obj >= 0 ? "0o" + obj.toString(8) : "-0o" + obj.toString(8).slice(1);
    },
    decimal: function(obj) {
      return obj.toString(10);
    },
    /* eslint-disable max-len */
    hexadecimal: function(obj) {
      return obj >= 0 ? "0x" + obj.toString(16).toUpperCase() : "-0x" + obj.toString(16).toUpperCase().slice(1);
    }
  },
  defaultStyle: "decimal",
  styleAliases: {
    binary: [2, "bin"],
    octal: [8, "oct"],
    decimal: [10, "dec"],
    hexadecimal: [16, "hex"]
  }
});
var YAML_FLOAT_PATTERN = new RegExp(
  // 2.5e4, 2.5 and integers
  "^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"
);
function resolveYamlFloat(data) {
  if (data === null) return false;
  if (!YAML_FLOAT_PATTERN.test(data) || // Quick hack to not allow integers end with `_`
  // Probably should update regexp & check speed
  data[data.length - 1] === "_") {
    return false;
  }
  return true;
}
function constructYamlFloat(data) {
  var value, sign;
  value = data.replace(/_/g, "").toLowerCase();
  sign = value[0] === "-" ? -1 : 1;
  if ("+-".indexOf(value[0]) >= 0) {
    value = value.slice(1);
  }
  if (value === ".inf") {
    return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;
  } else if (value === ".nan") {
    return NaN;
  }
  return sign * parseFloat(value, 10);
}
var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;
function representYamlFloat(object, style3) {
  var res;
  if (isNaN(object)) {
    switch (style3) {
      case "lowercase":
        return ".nan";
      case "uppercase":
        return ".NAN";
      case "camelcase":
        return ".NaN";
    }
  } else if (Number.POSITIVE_INFINITY === object) {
    switch (style3) {
      case "lowercase":
        return ".inf";
      case "uppercase":
        return ".INF";
      case "camelcase":
        return ".Inf";
    }
  } else if (Number.NEGATIVE_INFINITY === object) {
    switch (style3) {
      case "lowercase":
        return "-.inf";
      case "uppercase":
        return "-.INF";
      case "camelcase":
        return "-.Inf";
    }
  } else if (common.isNegativeZero(object)) {
    return "-0.0";
  }
  res = object.toString(10);
  return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace("e", ".e") : res;
}
function isFloat(object) {
  return Object.prototype.toString.call(object) === "[object Number]" && (object % 1 !== 0 || common.isNegativeZero(object));
}
var float = new type("tag:yaml.org,2002:float", {
  kind: "scalar",
  resolve: resolveYamlFloat,
  construct: constructYamlFloat,
  predicate: isFloat,
  represent: representYamlFloat,
  defaultStyle: "lowercase"
});
var json = failsafe.extend({
  implicit: [
    _null,
    bool,
    int,
    float
  ]
});
var core = json;
var YAML_DATE_REGEXP = new RegExp(
  "^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"
);
var YAML_TIMESTAMP_REGEXP = new RegExp(
  "^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"
);
function resolveYamlTimestamp(data) {
  if (data === null) return false;
  if (YAML_DATE_REGEXP.exec(data) !== null) return true;
  if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;
  return false;
}
function constructYamlTimestamp(data) {
  var match3, year, month, day, hour, minute, second, fraction = 0, delta = null, tz_hour, tz_minute, date;
  match3 = YAML_DATE_REGEXP.exec(data);
  if (match3 === null) match3 = YAML_TIMESTAMP_REGEXP.exec(data);
  if (match3 === null) throw new Error("Date resolve error");
  year = +match3[1];
  month = +match3[2] - 1;
  day = +match3[3];
  if (!match3[4]) {
    return new Date(Date.UTC(year, month, day));
  }
  hour = +match3[4];
  minute = +match3[5];
  second = +match3[6];
  if (match3[7]) {
    fraction = match3[7].slice(0, 3);
    while (fraction.length < 3) {
      fraction += "0";
    }
    fraction = +fraction;
  }
  if (match3[9]) {
    tz_hour = +match3[10];
    tz_minute = +(match3[11] || 0);
    delta = (tz_hour * 60 + tz_minute) * 6e4;
    if (match3[9] === "-") delta = -delta;
  }
  date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));
  if (delta) date.setTime(date.getTime() - delta);
  return date;
}
function representYamlTimestamp(object) {
  return object.toISOString();
}
var timestamp = new type("tag:yaml.org,2002:timestamp", {
  kind: "scalar",
  resolve: resolveYamlTimestamp,
  construct: constructYamlTimestamp,
  instanceOf: Date,
  represent: representYamlTimestamp
});
function resolveYamlMerge(data) {
  return data === "<<" || data === null;
}
var merge = new type("tag:yaml.org,2002:merge", {
  kind: "scalar",
  resolve: resolveYamlMerge
});
var BASE64_MAP = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";
function resolveYamlBinary(data) {
  if (data === null) return false;
  var code7, idx, bitlen = 0, max = data.length, map13 = BASE64_MAP;
  for (idx = 0; idx < max; idx++) {
    code7 = map13.indexOf(data.charAt(idx));
    if (code7 > 64) continue;
    if (code7 < 0) return false;
    bitlen += 6;
  }
  return bitlen % 8 === 0;
}
function constructYamlBinary(data) {
  var idx, tailbits, input3 = data.replace(/[\r\n=]/g, ""), max = input3.length, map13 = BASE64_MAP, bits = 0, result = [];
  for (idx = 0; idx < max; idx++) {
    if (idx % 4 === 0 && idx) {
      result.push(bits >> 16 & 255);
      result.push(bits >> 8 & 255);
      result.push(bits & 255);
    }
    bits = bits << 6 | map13.indexOf(input3.charAt(idx));
  }
  tailbits = max % 4 * 6;
  if (tailbits === 0) {
    result.push(bits >> 16 & 255);
    result.push(bits >> 8 & 255);
    result.push(bits & 255);
  } else if (tailbits === 18) {
    result.push(bits >> 10 & 255);
    result.push(bits >> 2 & 255);
  } else if (tailbits === 12) {
    result.push(bits >> 4 & 255);
  }
  return new Uint8Array(result);
}
function representYamlBinary(object) {
  var result = "", bits = 0, idx, tail, max = object.length, map13 = BASE64_MAP;
  for (idx = 0; idx < max; idx++) {
    if (idx % 3 === 0 && idx) {
      result += map13[bits >> 18 & 63];
      result += map13[bits >> 12 & 63];
      result += map13[bits >> 6 & 63];
      result += map13[bits & 63];
    }
    bits = (bits << 8) + object[idx];
  }
  tail = max % 3;
  if (tail === 0) {
    result += map13[bits >> 18 & 63];
    result += map13[bits >> 12 & 63];
    result += map13[bits >> 6 & 63];
    result += map13[bits & 63];
  } else if (tail === 2) {
    result += map13[bits >> 10 & 63];
    result += map13[bits >> 4 & 63];
    result += map13[bits << 2 & 63];
    result += map13[64];
  } else if (tail === 1) {
    result += map13[bits >> 2 & 63];
    result += map13[bits << 4 & 63];
    result += map13[64];
    result += map13[64];
  }
  return result;
}
function isBinary(obj) {
  return Object.prototype.toString.call(obj) === "[object Uint8Array]";
}
var binary = new type("tag:yaml.org,2002:binary", {
  kind: "scalar",
  resolve: resolveYamlBinary,
  construct: constructYamlBinary,
  predicate: isBinary,
  represent: representYamlBinary
});
var _hasOwnProperty$3 = Object.prototype.hasOwnProperty;
var _toString$2 = Object.prototype.toString;
function resolveYamlOmap(data) {
  if (data === null) return true;
  var objectKeys = [], index4, length, pair, pairKey, pairHasKey, object = data;
  for (index4 = 0, length = object.length; index4 < length; index4 += 1) {
    pair = object[index4];
    pairHasKey = false;
    if (_toString$2.call(pair) !== "[object Object]") return false;
    for (pairKey in pair) {
      if (_hasOwnProperty$3.call(pair, pairKey)) {
        if (!pairHasKey) pairHasKey = true;
        else return false;
      }
    }
    if (!pairHasKey) return false;
    if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);
    else return false;
  }
  return true;
}
function constructYamlOmap(data) {
  return data !== null ? data : [];
}
var omap = new type("tag:yaml.org,2002:omap", {
  kind: "sequence",
  resolve: resolveYamlOmap,
  construct: constructYamlOmap
});
var _toString$1 = Object.prototype.toString;
function resolveYamlPairs(data) {
  if (data === null) return true;
  var index4, length, pair, keys2, result, object = data;
  result = new Array(object.length);
  for (index4 = 0, length = object.length; index4 < length; index4 += 1) {
    pair = object[index4];
    if (_toString$1.call(pair) !== "[object Object]") return false;
    keys2 = Object.keys(pair);
    if (keys2.length !== 1) return false;
    result[index4] = [keys2[0], pair[keys2[0]]];
  }
  return true;
}
function constructYamlPairs(data) {
  if (data === null) return [];
  var index4, length, pair, keys2, result, object = data;
  result = new Array(object.length);
  for (index4 = 0, length = object.length; index4 < length; index4 += 1) {
    pair = object[index4];
    keys2 = Object.keys(pair);
    result[index4] = [keys2[0], pair[keys2[0]]];
  }
  return result;
}
var pairs = new type("tag:yaml.org,2002:pairs", {
  kind: "sequence",
  resolve: resolveYamlPairs,
  construct: constructYamlPairs
});
var _hasOwnProperty$2 = Object.prototype.hasOwnProperty;
function resolveYamlSet(data) {
  if (data === null) return true;
  var key2, object = data;
  for (key2 in object) {
    if (_hasOwnProperty$2.call(object, key2)) {
      if (object[key2] !== null) return false;
    }
  }
  return true;
}
function constructYamlSet(data) {
  return data !== null ? data : {};
}
var set = new type("tag:yaml.org,2002:set", {
  kind: "mapping",
  resolve: resolveYamlSet,
  construct: constructYamlSet
});
var _default = core.extend({
  implicit: [
    timestamp,
    merge
  ],
  explicit: [
    binary,
    omap,
    pairs,
    set
  ]
});
var _hasOwnProperty$1 = Object.prototype.hasOwnProperty;
var CONTEXT_FLOW_IN = 1;
var CONTEXT_FLOW_OUT = 2;
var CONTEXT_BLOCK_IN = 3;
var CONTEXT_BLOCK_OUT = 4;
var CHOMPING_CLIP = 1;
var CHOMPING_STRIP = 2;
var CHOMPING_KEEP = 3;
var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/;
var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/;
var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i;
var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;
function _class(obj) {
  return Object.prototype.toString.call(obj);
}
function is_EOL(c) {
  return c === 10 || c === 13;
}
function is_WHITE_SPACE(c) {
  return c === 9 || c === 32;
}
function is_WS_OR_EOL(c) {
  return c === 9 || c === 32 || c === 10 || c === 13;
}
function is_FLOW_INDICATOR(c) {
  return c === 44 || c === 91 || c === 93 || c === 123 || c === 125;
}
function fromHexCode(c) {
  var lc;
  if (48 <= c && c <= 57) {
    return c - 48;
  }
  lc = c | 32;
  if (97 <= lc && lc <= 102) {
    return lc - 97 + 10;
  }
  return -1;
}
function escapedHexLen(c) {
  if (c === 120) {
    return 2;
  }
  if (c === 117) {
    return 4;
  }
  if (c === 85) {
    return 8;
  }
  return 0;
}
function fromDecimalCode(c) {
  if (48 <= c && c <= 57) {
    return c - 48;
  }
  return -1;
}
function simpleEscapeSequence(c) {
  return c === 48 ? "\0" : c === 97 ? "\x07" : c === 98 ? "\b" : c === 116 ? "	" : c === 9 ? "	" : c === 110 ? "\n" : c === 118 ? "\v" : c === 102 ? "\f" : c === 114 ? "\r" : c === 101 ? "\x1B" : c === 32 ? " " : c === 34 ? '"' : c === 47 ? "/" : c === 92 ? "\\" : c === 78 ? "\x85" : c === 95 ? "\xA0" : c === 76 ? "\u2028" : c === 80 ? "\u2029" : "";
}
function charFromCodepoint(c) {
  if (c <= 65535) {
    return String.fromCharCode(c);
  }
  return String.fromCharCode(
    (c - 65536 >> 10) + 55296,
    (c - 65536 & 1023) + 56320
  );
}
var simpleEscapeCheck = new Array(256);
var simpleEscapeMap = new Array(256);
for (i2 = 0; i2 < 256; i2++) {
  simpleEscapeCheck[i2] = simpleEscapeSequence(i2) ? 1 : 0;
  simpleEscapeMap[i2] = simpleEscapeSequence(i2);
}
var i2;
function State$1(input3, options) {
  this.input = input3;
  this.filename = options["filename"] || null;
  this.schema = options["schema"] || _default;
  this.onWarning = options["onWarning"] || null;
  this.legacy = options["legacy"] || false;
  this.json = options["json"] || false;
  this.listener = options["listener"] || null;
  this.implicitTypes = this.schema.compiledImplicit;
  this.typeMap = this.schema.compiledTypeMap;
  this.length = input3.length;
  this.position = 0;
  this.line = 0;
  this.lineStart = 0;
  this.lineIndent = 0;
  this.firstTabInLine = -1;
  this.documents = [];
}
function generateError(state, message) {
  var mark2 = {
    name: state.filename,
    buffer: state.input.slice(0, -1),
    // omit trailing \0
    position: state.position,
    line: state.line,
    column: state.position - state.lineStart
  };
  mark2.snippet = snippet(mark2);
  return new exception(message, mark2);
}
function throwError(state, message) {
  throw generateError(state, message);
}
function throwWarning(state, message) {
  if (state.onWarning) {
    state.onWarning.call(null, generateError(state, message));
  }
}
var directiveHandlers = {
  YAML: function handleYamlDirective(state, name3, args) {
    var match3, major2, minor2;
    if (state.version !== null) {
      throwError(state, "duplication of %YAML directive");
    }
    if (args.length !== 1) {
      throwError(state, "YAML directive accepts exactly one argument");
    }
    match3 = /^([0-9]+)\.([0-9]+)$/.exec(args[0]);
    if (match3 === null) {
      throwError(state, "ill-formed argument of the YAML directive");
    }
    major2 = parseInt(match3[1], 10);
    minor2 = parseInt(match3[2], 10);
    if (major2 !== 1) {
      throwError(state, "unacceptable YAML version of the document");
    }
    state.version = args[0];
    state.checkLineBreaks = minor2 < 2;
    if (minor2 !== 1 && minor2 !== 2) {
      throwWarning(state, "unsupported YAML version of the document");
    }
  },
  TAG: function handleTagDirective(state, name3, args) {
    var handle6, prefix2;
    if (args.length !== 2) {
      throwError(state, "TAG directive accepts exactly two arguments");
    }
    handle6 = args[0];
    prefix2 = args[1];
    if (!PATTERN_TAG_HANDLE.test(handle6)) {
      throwError(state, "ill-formed tag handle (first argument) of the TAG directive");
    }
    if (_hasOwnProperty$1.call(state.tagMap, handle6)) {
      throwError(state, 'there is a previously declared suffix for "' + handle6 + '" tag handle');
    }
    if (!PATTERN_TAG_URI.test(prefix2)) {
      throwError(state, "ill-formed tag prefix (second argument) of the TAG directive");
    }
    try {
      prefix2 = decodeURIComponent(prefix2);
    } catch (err) {
      throwError(state, "tag prefix is malformed: " + prefix2);
    }
    state.tagMap[handle6] = prefix2;
  }
};
function captureSegment(state, start, end, checkJson) {
  var _position, _length, _character, _result;
  if (start < end) {
    _result = state.input.slice(start, end);
    if (checkJson) {
      for (_position = 0, _length = _result.length; _position < _length; _position += 1) {
        _character = _result.charCodeAt(_position);
        if (!(_character === 9 || 32 <= _character && _character <= 1114111)) {
          throwError(state, "expected valid JSON character");
        }
      }
    } else if (PATTERN_NON_PRINTABLE.test(_result)) {
      throwError(state, "the stream contains non-printable characters");
    }
    state.result += _result;
  }
}
function mergeMappings(state, destination, source2, overridableKeys) {
  var sourceKeys, key2, index4, quantity;
  if (!common.isObject(source2)) {
    throwError(state, "cannot merge mappings; the provided source object is unacceptable");
  }
  sourceKeys = Object.keys(source2);
  for (index4 = 0, quantity = sourceKeys.length; index4 < quantity; index4 += 1) {
    key2 = sourceKeys[index4];
    if (!_hasOwnProperty$1.call(destination, key2)) {
      destination[key2] = source2[key2];
      overridableKeys[key2] = true;
    }
  }
}
function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) {
  var index4, quantity;
  if (Array.isArray(keyNode)) {
    keyNode = Array.prototype.slice.call(keyNode);
    for (index4 = 0, quantity = keyNode.length; index4 < quantity; index4 += 1) {
      if (Array.isArray(keyNode[index4])) {
        throwError(state, "nested arrays are not supported inside keys");
      }
      if (typeof keyNode === "object" && _class(keyNode[index4]) === "[object Object]") {
        keyNode[index4] = "[object Object]";
      }
    }
  }
  if (typeof keyNode === "object" && _class(keyNode) === "[object Object]") {
    keyNode = "[object Object]";
  }
  keyNode = String(keyNode);
  if (_result === null) {
    _result = {};
  }
  if (keyTag === "tag:yaml.org,2002:merge") {
    if (Array.isArray(valueNode)) {
      for (index4 = 0, quantity = valueNode.length; index4 < quantity; index4 += 1) {
        mergeMappings(state, _result, valueNode[index4], overridableKeys);
      }
    } else {
      mergeMappings(state, _result, valueNode, overridableKeys);
    }
  } else {
    if (!state.json && !_hasOwnProperty$1.call(overridableKeys, keyNode) && _hasOwnProperty$1.call(_result, keyNode)) {
      state.line = startLine || state.line;
      state.lineStart = startLineStart || state.lineStart;
      state.position = startPos || state.position;
      throwError(state, "duplicated mapping key");
    }
    if (keyNode === "__proto__") {
      Object.defineProperty(_result, keyNode, {
        configurable: true,
        enumerable: true,
        writable: true,
        value: valueNode
      });
    } else {
      _result[keyNode] = valueNode;
    }
    delete overridableKeys[keyNode];
  }
  return _result;
}
function readLineBreak(state) {
  var ch;
  ch = state.input.charCodeAt(state.position);
  if (ch === 10) {
    state.position++;
  } else if (ch === 13) {
    state.position++;
    if (state.input.charCodeAt(state.position) === 10) {
      state.position++;
    }
  } else {
    throwError(state, "a line break is expected");
  }
  state.line += 1;
  state.lineStart = state.position;
  state.firstTabInLine = -1;
}
function skipSeparationSpace(state, allowComments, checkIndent) {
  var lineBreaks = 0, ch = state.input.charCodeAt(state.position);
  while (ch !== 0) {
    while (is_WHITE_SPACE(ch)) {
      if (ch === 9 && state.firstTabInLine === -1) {
        state.firstTabInLine = state.position;
      }
      ch = state.input.charCodeAt(++state.position);
    }
    if (allowComments && ch === 35) {
      do {
        ch = state.input.charCodeAt(++state.position);
      } while (ch !== 10 && ch !== 13 && ch !== 0);
    }
    if (is_EOL(ch)) {
      readLineBreak(state);
      ch = state.input.charCodeAt(state.position);
      lineBreaks++;
      state.lineIndent = 0;
      while (ch === 32) {
        state.lineIndent++;
        ch = state.input.charCodeAt(++state.position);
      }
    } else {
      break;
    }
  }
  if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {
    throwWarning(state, "deficient indentation");
  }
  return lineBreaks;
}
function testDocumentSeparator(state) {
  var _position = state.position, ch;
  ch = state.input.charCodeAt(_position);
  if ((ch === 45 || ch === 46) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) {
    _position += 3;
    ch = state.input.charCodeAt(_position);
    if (ch === 0 || is_WS_OR_EOL(ch)) {
      return true;
    }
  }
  return false;
}
function writeFoldedLines(state, count2) {
  if (count2 === 1) {
    state.result += " ";
  } else if (count2 > 1) {
    state.result += common.repeat("\n", count2 - 1);
  }
}
function readPlainScalar(state, nodeIndent, withinFlowCollection) {
  var preceding, following, captureStart, captureEnd, hasPendingContent, _line, _lineStart, _lineIndent, _kind = state.kind, _result = state.result, ch;
  ch = state.input.charCodeAt(state.position);
  if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) {
    return false;
  }
  if (ch === 63 || ch === 45) {
    following = state.input.charCodeAt(state.position + 1);
    if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {
      return false;
    }
  }
  state.kind = "scalar";
  state.result = "";
  captureStart = captureEnd = state.position;
  hasPendingContent = false;
  while (ch !== 0) {
    if (ch === 58) {
      following = state.input.charCodeAt(state.position + 1);
      if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {
        break;
      }
    } else if (ch === 35) {
      preceding = state.input.charCodeAt(state.position - 1);
      if (is_WS_OR_EOL(preceding)) {
        break;
      }
    } else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && is_FLOW_INDICATOR(ch)) {
      break;
    } else if (is_EOL(ch)) {
      _line = state.line;
      _lineStart = state.lineStart;
      _lineIndent = state.lineIndent;
      skipSeparationSpace(state, false, -1);
      if (state.lineIndent >= nodeIndent) {
        hasPendingContent = true;
        ch = state.input.charCodeAt(state.position);
        continue;
      } else {
        state.position = captureEnd;
        state.line = _line;
        state.lineStart = _lineStart;
        state.lineIndent = _lineIndent;
        break;
      }
    }
    if (hasPendingContent) {
      captureSegment(state, captureStart, captureEnd, false);
      writeFoldedLines(state, state.line - _line);
      captureStart = captureEnd = state.position;
      hasPendingContent = false;
    }
    if (!is_WHITE_SPACE(ch)) {
      captureEnd = state.position + 1;
    }
    ch = state.input.charCodeAt(++state.position);
  }
  captureSegment(state, captureStart, captureEnd, false);
  if (state.result) {
    return true;
  }
  state.kind = _kind;
  state.result = _result;
  return false;
}
function readSingleQuotedScalar(state, nodeIndent) {
  var ch, captureStart, captureEnd;
  ch = state.input.charCodeAt(state.position);
  if (ch !== 39) {
    return false;
  }
  state.kind = "scalar";
  state.result = "";
  state.position++;
  captureStart = captureEnd = state.position;
  while ((ch = state.input.charCodeAt(state.position)) !== 0) {
    if (ch === 39) {
      captureSegment(state, captureStart, state.position, true);
      ch = state.input.charCodeAt(++state.position);
      if (ch === 39) {
        captureStart = state.position;
        state.position++;
        captureEnd = state.position;
      } else {
        return true;
      }
    } else if (is_EOL(ch)) {
      captureSegment(state, captureStart, captureEnd, true);
      writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
      captureStart = captureEnd = state.position;
    } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
      throwError(state, "unexpected end of the document within a single quoted scalar");
    } else {
      state.position++;
      captureEnd = state.position;
    }
  }
  throwError(state, "unexpected end of the stream within a single quoted scalar");
}
function readDoubleQuotedScalar(state, nodeIndent) {
  var captureStart, captureEnd, hexLength, hexResult, tmp, ch;
  ch = state.input.charCodeAt(state.position);
  if (ch !== 34) {
    return false;
  }
  state.kind = "scalar";
  state.result = "";
  state.position++;
  captureStart = captureEnd = state.position;
  while ((ch = state.input.charCodeAt(state.position)) !== 0) {
    if (ch === 34) {
      captureSegment(state, captureStart, state.position, true);
      state.position++;
      return true;
    } else if (ch === 92) {
      captureSegment(state, captureStart, state.position, true);
      ch = state.input.charCodeAt(++state.position);
      if (is_EOL(ch)) {
        skipSeparationSpace(state, false, nodeIndent);
      } else if (ch < 256 && simpleEscapeCheck[ch]) {
        state.result += simpleEscapeMap[ch];
        state.position++;
      } else if ((tmp = escapedHexLen(ch)) > 0) {
        hexLength = tmp;
        hexResult = 0;
        for (; hexLength > 0; hexLength--) {
          ch = state.input.charCodeAt(++state.position);
          if ((tmp = fromHexCode(ch)) >= 0) {
            hexResult = (hexResult << 4) + tmp;
          } else {
            throwError(state, "expected hexadecimal character");
          }
        }
        state.result += charFromCodepoint(hexResult);
        state.position++;
      } else {
        throwError(state, "unknown escape sequence");
      }
      captureStart = captureEnd = state.position;
    } else if (is_EOL(ch)) {
      captureSegment(state, captureStart, captureEnd, true);
      writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
      captureStart = captureEnd = state.position;
    } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
      throwError(state, "unexpected end of the document within a double quoted scalar");
    } else {
      state.position++;
      captureEnd = state.position;
    }
  }
  throwError(state, "unexpected end of the stream within a double quoted scalar");
}
function readFlowCollection(state, nodeIndent) {
  var readNext = true, _line, _lineStart, _pos, _tag = state.tag, _result, _anchor = state.anchor, following, terminator, isPair, isExplicitPair, isMapping, overridableKeys = /* @__PURE__ */ Object.create(null), keyNode, keyTag, valueNode, ch;
  ch = state.input.charCodeAt(state.position);
  if (ch === 91) {
    terminator = 93;
    isMapping = false;
    _result = [];
  } else if (ch === 123) {
    terminator = 125;
    isMapping = true;
    _result = {};
  } else {
    return false;
  }
  if (state.anchor !== null) {
    state.anchorMap[state.anchor] = _result;
  }
  ch = state.input.charCodeAt(++state.position);
  while (ch !== 0) {
    skipSeparationSpace(state, true, nodeIndent);
    ch = state.input.charCodeAt(state.position);
    if (ch === terminator) {
      state.position++;
      state.tag = _tag;
      state.anchor = _anchor;
      state.kind = isMapping ? "mapping" : "sequence";
      state.result = _result;
      return true;
    } else if (!readNext) {
      throwError(state, "missed comma between flow collection entries");
    } else if (ch === 44) {
      throwError(state, "expected the node content, but found ','");
    }
    keyTag = keyNode = valueNode = null;
    isPair = isExplicitPair = false;
    if (ch === 63) {
      following = state.input.charCodeAt(state.position + 1);
      if (is_WS_OR_EOL(following)) {
        isPair = isExplicitPair = true;
        state.position++;
        skipSeparationSpace(state, true, nodeIndent);
      }
    }
    _line = state.line;
    _lineStart = state.lineStart;
    _pos = state.position;
    composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
    keyTag = state.tag;
    keyNode = state.result;
    skipSeparationSpace(state, true, nodeIndent);
    ch = state.input.charCodeAt(state.position);
    if ((isExplicitPair || state.line === _line) && ch === 58) {
      isPair = true;
      ch = state.input.charCodeAt(++state.position);
      skipSeparationSpace(state, true, nodeIndent);
      composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
      valueNode = state.result;
    }
    if (isMapping) {
      storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);
    } else if (isPair) {
      _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));
    } else {
      _result.push(keyNode);
    }
    skipSeparationSpace(state, true, nodeIndent);
    ch = state.input.charCodeAt(state.position);
    if (ch === 44) {
      readNext = true;
      ch = state.input.charCodeAt(++state.position);
    } else {
      readNext = false;
    }
  }
  throwError(state, "unexpected end of the stream within a flow collection");
}
function readBlockScalar(state, nodeIndent) {
  var captureStart, folding, chomping = CHOMPING_CLIP, didReadContent = false, detectedIndent = false, textIndent = nodeIndent, emptyLines = 0, atMoreIndented = false, tmp, ch;
  ch = state.input.charCodeAt(state.position);
  if (ch === 124) {
    folding = false;
  } else if (ch === 62) {
    folding = true;
  } else {
    return false;
  }
  state.kind = "scalar";
  state.result = "";
  while (ch !== 0) {
    ch = state.input.charCodeAt(++state.position);
    if (ch === 43 || ch === 45) {
      if (CHOMPING_CLIP === chomping) {
        chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP;
      } else {
        throwError(state, "repeat of a chomping mode identifier");
      }
    } else if ((tmp = fromDecimalCode(ch)) >= 0) {
      if (tmp === 0) {
        throwError(state, "bad explicit indentation width of a block scalar; it cannot be less than one");
      } else if (!detectedIndent) {
        textIndent = nodeIndent + tmp - 1;
        detectedIndent = true;
      } else {
        throwError(state, "repeat of an indentation width identifier");
      }
    } else {
      break;
    }
  }
  if (is_WHITE_SPACE(ch)) {
    do {
      ch = state.input.charCodeAt(++state.position);
    } while (is_WHITE_SPACE(ch));
    if (ch === 35) {
      do {
        ch = state.input.charCodeAt(++state.position);
      } while (!is_EOL(ch) && ch !== 0);
    }
  }
  while (ch !== 0) {
    readLineBreak(state);
    state.lineIndent = 0;
    ch = state.input.charCodeAt(state.position);
    while ((!detectedIndent || state.lineIndent < textIndent) && ch === 32) {
      state.lineIndent++;
      ch = state.input.charCodeAt(++state.position);
    }
    if (!detectedIndent && state.lineIndent > textIndent) {
      textIndent = state.lineIndent;
    }
    if (is_EOL(ch)) {
      emptyLines++;
      continue;
    }
    if (state.lineIndent < textIndent) {
      if (chomping === CHOMPING_KEEP) {
        state.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines);
      } else if (chomping === CHOMPING_CLIP) {
        if (didReadContent) {
          state.result += "\n";
        }
      }
      break;
    }
    if (folding) {
      if (is_WHITE_SPACE(ch)) {
        atMoreIndented = true;
        state.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines);
      } else if (atMoreIndented) {
        atMoreIndented = false;
        state.result += common.repeat("\n", emptyLines + 1);
      } else if (emptyLines === 0) {
        if (didReadContent) {
          state.result += " ";
        }
      } else {
        state.result += common.repeat("\n", emptyLines);
      }
    } else {
      state.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines);
    }
    didReadContent = true;
    detectedIndent = true;
    emptyLines = 0;
    captureStart = state.position;
    while (!is_EOL(ch) && ch !== 0) {
      ch = state.input.charCodeAt(++state.position);
    }
    captureSegment(state, captureStart, state.position, false);
  }
  return true;
}
function readBlockSequence(state, nodeIndent) {
  var _line, _tag = state.tag, _anchor = state.anchor, _result = [], following, detected = false, ch;
  if (state.firstTabInLine !== -1) return false;
  if (state.anchor !== null) {
    state.anchorMap[state.anchor] = _result;
  }
  ch = state.input.charCodeAt(state.position);
  while (ch !== 0) {
    if (state.firstTabInLine !== -1) {
      state.position = state.firstTabInLine;
      throwError(state, "tab characters must not be used in indentation");
    }
    if (ch !== 45) {
      break;
    }
    following = state.input.charCodeAt(state.position + 1);
    if (!is_WS_OR_EOL(following)) {
      break;
    }
    detected = true;
    state.position++;
    if (skipSeparationSpace(state, true, -1)) {
      if (state.lineIndent <= nodeIndent) {
        _result.push(null);
        ch = state.input.charCodeAt(state.position);
        continue;
      }
    }
    _line = state.line;
    composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);
    _result.push(state.result);
    skipSeparationSpace(state, true, -1);
    ch = state.input.charCodeAt(state.position);
    if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) {
      throwError(state, "bad indentation of a sequence entry");
    } else if (state.lineIndent < nodeIndent) {
      break;
    }
  }
  if (detected) {
    state.tag = _tag;
    state.anchor = _anchor;
    state.kind = "sequence";
    state.result = _result;
    return true;
  }
  return false;
}
function readBlockMapping(state, nodeIndent, flowIndent) {
  var following, allowCompact, _line, _keyLine, _keyLineStart, _keyPos, _tag = state.tag, _anchor = state.anchor, _result = {}, overridableKeys = /* @__PURE__ */ Object.create(null), keyTag = null, keyNode = null, valueNode = null, atExplicitKey = false, detected = false, ch;
  if (state.firstTabInLine !== -1) return false;
  if (state.anchor !== null) {
    state.anchorMap[state.anchor] = _result;
  }
  ch = state.input.charCodeAt(state.position);
  while (ch !== 0) {
    if (!atExplicitKey && state.firstTabInLine !== -1) {
      state.position = state.firstTabInLine;
      throwError(state, "tab characters must not be used in indentation");
    }
    following = state.input.charCodeAt(state.position + 1);
    _line = state.line;
    if ((ch === 63 || ch === 58) && is_WS_OR_EOL(following)) {
      if (ch === 63) {
        if (atExplicitKey) {
          storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);
          keyTag = keyNode = valueNode = null;
        }
        detected = true;
        atExplicitKey = true;
        allowCompact = true;
      } else if (atExplicitKey) {
        atExplicitKey = false;
        allowCompact = true;
      } else {
        throwError(state, "incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line");
      }
      state.position += 1;
      ch = following;
    } else {
      _keyLine = state.line;
      _keyLineStart = state.lineStart;
      _keyPos = state.position;
      if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {
        break;
      }
      if (state.line === _line) {
        ch = state.input.charCodeAt(state.position);
        while (is_WHITE_SPACE(ch)) {
          ch = state.input.charCodeAt(++state.position);
        }
        if (ch === 58) {
          ch = state.input.charCodeAt(++state.position);
          if (!is_WS_OR_EOL(ch)) {
            throwError(state, "a whitespace character is expected after the key-value separator within a block mapping");
          }
          if (atExplicitKey) {
            storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);
            keyTag = keyNode = valueNode = null;
          }
          detected = true;
          atExplicitKey = false;
          allowCompact = false;
          keyTag = state.tag;
          keyNode = state.result;
        } else if (detected) {
          throwError(state, "can not read an implicit mapping pair; a colon is missed");
        } else {
          state.tag = _tag;
          state.anchor = _anchor;
          return true;
        }
      } else if (detected) {
        throwError(state, "can not read a block mapping entry; a multiline key may not be an implicit key");
      } else {
        state.tag = _tag;
        state.anchor = _anchor;
        return true;
      }
    }
    if (state.line === _line || state.lineIndent > nodeIndent) {
      if (atExplicitKey) {
        _keyLine = state.line;
        _keyLineStart = state.lineStart;
        _keyPos = state.position;
      }
      if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {
        if (atExplicitKey) {
          keyNode = state.result;
        } else {
          valueNode = state.result;
        }
      }
      if (!atExplicitKey) {
        storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);
        keyTag = keyNode = valueNode = null;
      }
      skipSeparationSpace(state, true, -1);
      ch = state.input.charCodeAt(state.position);
    }
    if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) {
      throwError(state, "bad indentation of a mapping entry");
    } else if (state.lineIndent < nodeIndent) {
      break;
    }
  }
  if (atExplicitKey) {
    storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);
  }
  if (detected) {
    state.tag = _tag;
    state.anchor = _anchor;
    state.kind = "mapping";
    state.result = _result;
  }
  return detected;
}
function readTagProperty(state) {
  var _position, isVerbatim = false, isNamed = false, tagHandle, tagName, ch;
  ch = state.input.charCodeAt(state.position);
  if (ch !== 33) return false;
  if (state.tag !== null) {
    throwError(state, "duplication of a tag property");
  }
  ch = state.input.charCodeAt(++state.position);
  if (ch === 60) {
    isVerbatim = true;
    ch = state.input.charCodeAt(++state.position);
  } else if (ch === 33) {
    isNamed = true;
    tagHandle = "!!";
    ch = state.input.charCodeAt(++state.position);
  } else {
    tagHandle = "!";
  }
  _position = state.position;
  if (isVerbatim) {
    do {
      ch = state.input.charCodeAt(++state.position);
    } while (ch !== 0 && ch !== 62);
    if (state.position < state.length) {
      tagName = state.input.slice(_position, state.position);
      ch = state.input.charCodeAt(++state.position);
    } else {
      throwError(state, "unexpected end of the stream within a verbatim tag");
    }
  } else {
    while (ch !== 0 && !is_WS_OR_EOL(ch)) {
      if (ch === 33) {
        if (!isNamed) {
          tagHandle = state.input.slice(_position - 1, state.position + 1);
          if (!PATTERN_TAG_HANDLE.test(tagHandle)) {
            throwError(state, "named tag handle cannot contain such characters");
          }
          isNamed = true;
          _position = state.position + 1;
        } else {
          throwError(state, "tag suffix cannot contain exclamation marks");
        }
      }
      ch = state.input.charCodeAt(++state.position);
    }
    tagName = state.input.slice(_position, state.position);
    if (PATTERN_FLOW_INDICATORS.test(tagName)) {
      throwError(state, "tag suffix cannot contain flow indicator characters");
    }
  }
  if (tagName && !PATTERN_TAG_URI.test(tagName)) {
    throwError(state, "tag name cannot contain such characters: " + tagName);
  }
  try {
    tagName = decodeURIComponent(tagName);
  } catch (err) {
    throwError(state, "tag name is malformed: " + tagName);
  }
  if (isVerbatim) {
    state.tag = tagName;
  } else if (_hasOwnProperty$1.call(state.tagMap, tagHandle)) {
    state.tag = state.tagMap[tagHandle] + tagName;
  } else if (tagHandle === "!") {
    state.tag = "!" + tagName;
  } else if (tagHandle === "!!") {
    state.tag = "tag:yaml.org,2002:" + tagName;
  } else {
    throwError(state, 'undeclared tag handle "' + tagHandle + '"');
  }
  return true;
}
function readAnchorProperty(state) {
  var _position, ch;
  ch = state.input.charCodeAt(state.position);
  if (ch !== 38) return false;
  if (state.anchor !== null) {
    throwError(state, "duplication of an anchor property");
  }
  ch = state.input.charCodeAt(++state.position);
  _position = state.position;
  while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
    ch = state.input.charCodeAt(++state.position);
  }
  if (state.position === _position) {
    throwError(state, "name of an anchor node must contain at least one character");
  }
  state.anchor = state.input.slice(_position, state.position);
  return true;
}
function readAlias(state) {
  var _position, alias, ch;
  ch = state.input.charCodeAt(state.position);
  if (ch !== 42) return false;
  ch = state.input.charCodeAt(++state.position);
  _position = state.position;
  while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
    ch = state.input.charCodeAt(++state.position);
  }
  if (state.position === _position) {
    throwError(state, "name of an alias node must contain at least one character");
  }
  alias = state.input.slice(_position, state.position);
  if (!_hasOwnProperty$1.call(state.anchorMap, alias)) {
    throwError(state, 'unidentified alias "' + alias + '"');
  }
  state.result = state.anchorMap[alias];
  skipSeparationSpace(state, true, -1);
  return true;
}
function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {
  var allowBlockStyles, allowBlockScalars, allowBlockCollections, indentStatus = 1, atNewLine = false, hasContent = false, typeIndex, typeQuantity, typeList, type2, flowIndent, blockIndent;
  if (state.listener !== null) {
    state.listener("open", state);
  }
  state.tag = null;
  state.anchor = null;
  state.kind = null;
  state.result = null;
  allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext;
  if (allowToSeek) {
    if (skipSeparationSpace(state, true, -1)) {
      atNewLine = true;
      if (state.lineIndent > parentIndent) {
        indentStatus = 1;
      } else if (state.lineIndent === parentIndent) {
        indentStatus = 0;
      } else if (state.lineIndent < parentIndent) {
        indentStatus = -1;
      }
    }
  }
  if (indentStatus === 1) {
    while (readTagProperty(state) || readAnchorProperty(state)) {
      if (skipSeparationSpace(state, true, -1)) {
        atNewLine = true;
        allowBlockCollections = allowBlockStyles;
        if (state.lineIndent > parentIndent) {
          indentStatus = 1;
        } else if (state.lineIndent === parentIndent) {
          indentStatus = 0;
        } else if (state.lineIndent < parentIndent) {
          indentStatus = -1;
        }
      } else {
        allowBlockCollections = false;
      }
    }
  }
  if (allowBlockCollections) {
    allowBlockCollections = atNewLine || allowCompact;
  }
  if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {
    if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {
      flowIndent = parentIndent;
    } else {
      flowIndent = parentIndent + 1;
    }
    blockIndent = state.position - state.lineStart;
    if (indentStatus === 1) {
      if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) {
        hasContent = true;
      } else {
        if (allowBlockScalars && readBlockScalar(state, flowIndent) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) {
          hasContent = true;
        } else if (readAlias(state)) {
          hasContent = true;
          if (state.tag !== null || state.anchor !== null) {
            throwError(state, "alias node should not have any properties");
          }
        } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {
          hasContent = true;
          if (state.tag === null) {
            state.tag = "?";
          }
        }
        if (state.anchor !== null) {
          state.anchorMap[state.anchor] = state.result;
        }
      }
    } else if (indentStatus === 0) {
      hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);
    }
  }
  if (state.tag === null) {
    if (state.anchor !== null) {
      state.anchorMap[state.anchor] = state.result;
    }
  } else if (state.tag === "?") {
    if (state.result !== null && state.kind !== "scalar") {
      throwError(state, 'unacceptable node kind for !<?> tag; it should be "scalar", not "' + state.kind + '"');
    }
    for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {
      type2 = state.implicitTypes[typeIndex];
      if (type2.resolve(state.result)) {
        state.result = type2.construct(state.result);
        state.tag = type2.tag;
        if (state.anchor !== null) {
          state.anchorMap[state.anchor] = state.result;
        }
        break;
      }
    }
  } else if (state.tag !== "!") {
    if (_hasOwnProperty$1.call(state.typeMap[state.kind || "fallback"], state.tag)) {
      type2 = state.typeMap[state.kind || "fallback"][state.tag];
    } else {
      type2 = null;
      typeList = state.typeMap.multi[state.kind || "fallback"];
      for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {
        if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {
          type2 = typeList[typeIndex];
          break;
        }
      }
    }
    if (!type2) {
      throwError(state, "unknown tag !<" + state.tag + ">");
    }
    if (state.result !== null && type2.kind !== state.kind) {
      throwError(state, "unacceptable node kind for !<" + state.tag + '> tag; it should be "' + type2.kind + '", not "' + state.kind + '"');
    }
    if (!type2.resolve(state.result, state.tag)) {
      throwError(state, "cannot resolve a node with !<" + state.tag + "> explicit tag");
    } else {
      state.result = type2.construct(state.result, state.tag);
      if (state.anchor !== null) {
        state.anchorMap[state.anchor] = state.result;
      }
    }
  }
  if (state.listener !== null) {
    state.listener("close", state);
  }
  return state.tag !== null || state.anchor !== null || hasContent;
}
function readDocument(state) {
  var documentStart = state.position, _position, directiveName, directiveArgs, hasDirectives = false, ch;
  state.version = null;
  state.checkLineBreaks = state.legacy;
  state.tagMap = /* @__PURE__ */ Object.create(null);
  state.anchorMap = /* @__PURE__ */ Object.create(null);
  while ((ch = state.input.charCodeAt(state.position)) !== 0) {
    skipSeparationSpace(state, true, -1);
    ch = state.input.charCodeAt(state.position);
    if (state.lineIndent > 0 || ch !== 37) {
      break;
    }
    hasDirectives = true;
    ch = state.input.charCodeAt(++state.position);
    _position = state.position;
    while (ch !== 0 && !is_WS_OR_EOL(ch)) {
      ch = state.input.charCodeAt(++state.position);
    }
    directiveName = state.input.slice(_position, state.position);
    directiveArgs = [];
    if (directiveName.length < 1) {
      throwError(state, "directive name must not be less than one character in length");
    }
    while (ch !== 0) {
      while (is_WHITE_SPACE(ch)) {
        ch = state.input.charCodeAt(++state.position);
      }
      if (ch === 35) {
        do {
          ch = state.input.charCodeAt(++state.position);
        } while (ch !== 0 && !is_EOL(ch));
        break;
      }
      if (is_EOL(ch)) break;
      _position = state.position;
      while (ch !== 0 && !is_WS_OR_EOL(ch)) {
        ch = state.input.charCodeAt(++state.position);
      }
      directiveArgs.push(state.input.slice(_position, state.position));
    }
    if (ch !== 0) readLineBreak(state);
    if (_hasOwnProperty$1.call(directiveHandlers, directiveName)) {
      directiveHandlers[directiveName](state, directiveName, directiveArgs);
    } else {
      throwWarning(state, 'unknown document directive "' + directiveName + '"');
    }
  }
  skipSeparationSpace(state, true, -1);
  if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 45 && state.input.charCodeAt(state.position + 1) === 45 && state.input.charCodeAt(state.position + 2) === 45) {
    state.position += 3;
    skipSeparationSpace(state, true, -1);
  } else if (hasDirectives) {
    throwError(state, "directives end mark is expected");
  }
  composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);
  skipSeparationSpace(state, true, -1);
  if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {
    throwWarning(state, "non-ASCII line breaks are interpreted as content");
  }
  state.documents.push(state.result);
  if (state.position === state.lineStart && testDocumentSeparator(state)) {
    if (state.input.charCodeAt(state.position) === 46) {
      state.position += 3;
      skipSeparationSpace(state, true, -1);
    }
    return;
  }
  if (state.position < state.length - 1) {
    throwError(state, "end of the stream or a document separator is expected");
  } else {
    return;
  }
}
function loadDocuments(input3, options) {
  input3 = String(input3);
  options = options || {};
  if (input3.length !== 0) {
    if (input3.charCodeAt(input3.length - 1) !== 10 && input3.charCodeAt(input3.length - 1) !== 13) {
      input3 += "\n";
    }
    if (input3.charCodeAt(0) === 65279) {
      input3 = input3.slice(1);
    }
  }
  var state = new State$1(input3, options);
  var nullpos = input3.indexOf("\0");
  if (nullpos !== -1) {
    state.position = nullpos;
    throwError(state, "null byte is not allowed in input");
  }
  state.input += "\0";
  while (state.input.charCodeAt(state.position) === 32) {
    state.lineIndent += 1;
    state.position += 1;
  }
  while (state.position < state.length - 1) {
    readDocument(state);
  }
  return state.documents;
}
function loadAll$1(input3, iterator, options) {
  if (iterator !== null && typeof iterator === "object" && typeof options === "undefined") {
    options = iterator;
    iterator = null;
  }
  var documents = loadDocuments(input3, options);
  if (typeof iterator !== "function") {
    return documents;
  }
  for (var index4 = 0, length = documents.length; index4 < length; index4 += 1) {
    iterator(documents[index4]);
  }
}
function load$1(input3, options) {
  var documents = loadDocuments(input3, options);
  if (documents.length === 0) {
    return void 0;
  } else if (documents.length === 1) {
    return documents[0];
  }
  throw new exception("expected a single document in the stream, but found more");
}
var loadAll_1 = loadAll$1;
var load_1 = load$1;
var loader = {
  loadAll: loadAll_1,
  load: load_1
};
var _toString = Object.prototype.toString;
var _hasOwnProperty = Object.prototype.hasOwnProperty;
var CHAR_BOM = 65279;
var CHAR_TAB = 9;
var CHAR_LINE_FEED = 10;
var CHAR_CARRIAGE_RETURN = 13;
var CHAR_SPACE = 32;
var CHAR_EXCLAMATION = 33;
var CHAR_DOUBLE_QUOTE = 34;
var CHAR_SHARP = 35;
var CHAR_PERCENT = 37;
var CHAR_AMPERSAND = 38;
var CHAR_SINGLE_QUOTE = 39;
var CHAR_ASTERISK = 42;
var CHAR_COMMA = 44;
var CHAR_MINUS = 45;
var CHAR_COLON = 58;
var CHAR_EQUALS = 61;
var CHAR_GREATER_THAN = 62;
var CHAR_QUESTION = 63;
var CHAR_COMMERCIAL_AT = 64;
var CHAR_LEFT_SQUARE_BRACKET = 91;
var CHAR_RIGHT_SQUARE_BRACKET = 93;
var CHAR_GRAVE_ACCENT = 96;
var CHAR_LEFT_CURLY_BRACKET = 123;
var CHAR_VERTICAL_LINE = 124;
var CHAR_RIGHT_CURLY_BRACKET = 125;
var ESCAPE_SEQUENCES = {};
ESCAPE_SEQUENCES[0] = "\\0";
ESCAPE_SEQUENCES[7] = "\\a";
ESCAPE_SEQUENCES[8] = "\\b";
ESCAPE_SEQUENCES[9] = "\\t";
ESCAPE_SEQUENCES[10] = "\\n";
ESCAPE_SEQUENCES[11] = "\\v";
ESCAPE_SEQUENCES[12] = "\\f";
ESCAPE_SEQUENCES[13] = "\\r";
ESCAPE_SEQUENCES[27] = "\\e";
ESCAPE_SEQUENCES[34] = '\\"';
ESCAPE_SEQUENCES[92] = "\\\\";
ESCAPE_SEQUENCES[133] = "\\N";
ESCAPE_SEQUENCES[160] = "\\_";
ESCAPE_SEQUENCES[8232] = "\\L";
ESCAPE_SEQUENCES[8233] = "\\P";
var DEPRECATED_BOOLEANS_SYNTAX = [
  "y",
  "Y",
  "yes",
  "Yes",
  "YES",
  "on",
  "On",
  "ON",
  "n",
  "N",
  "no",
  "No",
  "NO",
  "off",
  "Off",
  "OFF"
];
var DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;
function compileStyleMap(schema2, map13) {
  var result, keys2, index4, length, tag, style3, type2;
  if (map13 === null) return {};
  result = {};
  keys2 = Object.keys(map13);
  for (index4 = 0, length = keys2.length; index4 < length; index4 += 1) {
    tag = keys2[index4];
    style3 = String(map13[tag]);
    if (tag.slice(0, 2) === "!!") {
      tag = "tag:yaml.org,2002:" + tag.slice(2);
    }
    type2 = schema2.compiledTypeMap["fallback"][tag];
    if (type2 && _hasOwnProperty.call(type2.styleAliases, style3)) {
      style3 = type2.styleAliases[style3];
    }
    result[tag] = style3;
  }
  return result;
}
function encodeHex(character) {
  var string2, handle6, length;
  string2 = character.toString(16).toUpperCase();
  if (character <= 255) {
    handle6 = "x";
    length = 2;
  } else if (character <= 65535) {
    handle6 = "u";
    length = 4;
  } else if (character <= 4294967295) {
    handle6 = "U";
    length = 8;
  } else {
    throw new exception("code point within a string may not be greater than 0xFFFFFFFF");
  }
  return "\\" + handle6 + common.repeat("0", length - string2.length) + string2;
}
var QUOTING_TYPE_SINGLE = 1;
var QUOTING_TYPE_DOUBLE = 2;
function State(options) {
  this.schema = options["schema"] || _default;
  this.indent = Math.max(1, options["indent"] || 2);
  this.noArrayIndent = options["noArrayIndent"] || false;
  this.skipInvalid = options["skipInvalid"] || false;
  this.flowLevel = common.isNothing(options["flowLevel"]) ? -1 : options["flowLevel"];
  this.styleMap = compileStyleMap(this.schema, options["styles"] || null);
  this.sortKeys = options["sortKeys"] || false;
  this.lineWidth = options["lineWidth"] || 80;
  this.noRefs = options["noRefs"] || false;
  this.noCompatMode = options["noCompatMode"] || false;
  this.condenseFlow = options["condenseFlow"] || false;
  this.quotingType = options["quotingType"] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;
  this.forceQuotes = options["forceQuotes"] || false;
  this.replacer = typeof options["replacer"] === "function" ? options["replacer"] : null;
  this.implicitTypes = this.schema.compiledImplicit;
  this.explicitTypes = this.schema.compiledExplicit;
  this.tag = null;
  this.result = "";
  this.duplicates = [];
  this.usedDuplicates = null;
}
function indentString(string2, spaces) {
  var ind = common.repeat(" ", spaces), position6 = 0, next = -1, result = "", line2, length = string2.length;
  while (position6 < length) {
    next = string2.indexOf("\n", position6);
    if (next === -1) {
      line2 = string2.slice(position6);
      position6 = length;
    } else {
      line2 = string2.slice(position6, next + 1);
      position6 = next + 1;
    }
    if (line2.length && line2 !== "\n") result += ind;
    result += line2;
  }
  return result;
}
function generateNextLine(state, level) {
  return "\n" + common.repeat(" ", state.indent * level);
}
function testImplicitResolving(state, str2) {
  var index4, length, type2;
  for (index4 = 0, length = state.implicitTypes.length; index4 < length; index4 += 1) {
    type2 = state.implicitTypes[index4];
    if (type2.resolve(str2)) {
      return true;
    }
  }
  return false;
}
function isWhitespace(c) {
  return c === CHAR_SPACE || c === CHAR_TAB;
}
function isPrintable(c) {
  return 32 <= c && c <= 126 || 161 <= c && c <= 55295 && c !== 8232 && c !== 8233 || 57344 <= c && c <= 65533 && c !== CHAR_BOM || 65536 <= c && c <= 1114111;
}
function isNsCharOrWhitespace(c) {
  return isPrintable(c) && c !== CHAR_BOM && c !== CHAR_CARRIAGE_RETURN && c !== CHAR_LINE_FEED;
}
function isPlainSafe(c, prev, inblock) {
  var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);
  var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);
  return (
    // ns-plain-safe
    (inblock ? (
      // c = flow-in
      cIsNsCharOrWhitespace
    ) : cIsNsCharOrWhitespace && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET) && c !== CHAR_SHARP && !(prev === CHAR_COLON && !cIsNsChar) || isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP || prev === CHAR_COLON && cIsNsChar
  );
}
function isPlainSafeFirst(c) {
  return isPrintable(c) && c !== CHAR_BOM && !isWhitespace(c) && c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_EQUALS && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE && c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT;
}
function isPlainSafeLast(c) {
  return !isWhitespace(c) && c !== CHAR_COLON;
}
function codePointAt(string2, pos) {
  var first2 = string2.charCodeAt(pos), second;
  if (first2 >= 55296 && first2 <= 56319 && pos + 1 < string2.length) {
    second = string2.charCodeAt(pos + 1);
    if (second >= 56320 && second <= 57343) {
      return (first2 - 55296) * 1024 + second - 56320 + 65536;
    }
  }
  return first2;
}
function needIndentIndicator(string2) {
  var leadingSpaceRe = /^\n* /;
  return leadingSpaceRe.test(string2);
}
var STYLE_PLAIN = 1;
var STYLE_SINGLE = 2;
var STYLE_LITERAL = 3;
var STYLE_FOLDED = 4;
var STYLE_DOUBLE = 5;
function chooseScalarStyle(string2, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType, quotingType, forceQuotes, inblock) {
  var i2;
  var char = 0;
  var prevChar = null;
  var hasLineBreak = false;
  var hasFoldableLine = false;
  var shouldTrackWidth = lineWidth !== -1;
  var previousLineBreak = -1;
  var plain = isPlainSafeFirst(codePointAt(string2, 0)) && isPlainSafeLast(codePointAt(string2, string2.length - 1));
  if (singleLineOnly || forceQuotes) {
    for (i2 = 0; i2 < string2.length; char >= 65536 ? i2 += 2 : i2++) {
      char = codePointAt(string2, i2);
      if (!isPrintable(char)) {
        return STYLE_DOUBLE;
      }
      plain = plain && isPlainSafe(char, prevChar, inblock);
      prevChar = char;
    }
  } else {
    for (i2 = 0; i2 < string2.length; char >= 65536 ? i2 += 2 : i2++) {
      char = codePointAt(string2, i2);
      if (char === CHAR_LINE_FEED) {
        hasLineBreak = true;
        if (shouldTrackWidth) {
          hasFoldableLine = hasFoldableLine || // Foldable line = too long, and not more-indented.
          i2 - previousLineBreak - 1 > lineWidth && string2[previousLineBreak + 1] !== " ";
          previousLineBreak = i2;
        }
      } else if (!isPrintable(char)) {
        return STYLE_DOUBLE;
      }
      plain = plain && isPlainSafe(char, prevChar, inblock);
      prevChar = char;
    }
    hasFoldableLine = hasFoldableLine || shouldTrackWidth && (i2 - previousLineBreak - 1 > lineWidth && string2[previousLineBreak + 1] !== " ");
  }
  if (!hasLineBreak && !hasFoldableLine) {
    if (plain && !forceQuotes && !testAmbiguousType(string2)) {
      return STYLE_PLAIN;
    }
    return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;
  }
  if (indentPerLevel > 9 && needIndentIndicator(string2)) {
    return STYLE_DOUBLE;
  }
  if (!forceQuotes) {
    return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;
  }
  return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;
}
function writeScalar(state, string2, level, iskey, inblock) {
  state.dump = (function() {
    if (string2.length === 0) {
      return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''";
    }
    if (!state.noCompatMode) {
      if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string2) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string2)) {
        return state.quotingType === QUOTING_TYPE_DOUBLE ? '"' + string2 + '"' : "'" + string2 + "'";
      }
    }
    var indent2 = state.indent * Math.max(1, level);
    var lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent2);
    var singleLineOnly = iskey || state.flowLevel > -1 && level >= state.flowLevel;
    function testAmbiguity(string3) {
      return testImplicitResolving(state, string3);
    }
    switch (chooseScalarStyle(
      string2,
      singleLineOnly,
      state.indent,
      lineWidth,
      testAmbiguity,
      state.quotingType,
      state.forceQuotes && !iskey,
      inblock
    )) {
      case STYLE_PLAIN:
        return string2;
      case STYLE_SINGLE:
        return "'" + string2.replace(/'/g, "''") + "'";
      case STYLE_LITERAL:
        return "|" + blockHeader(string2, state.indent) + dropEndingNewline(indentString(string2, indent2));
      case STYLE_FOLDED:
        return ">" + blockHeader(string2, state.indent) + dropEndingNewline(indentString(foldString(string2, lineWidth), indent2));
      case STYLE_DOUBLE:
        return '"' + escapeString(string2) + '"';
      default:
        throw new exception("impossible error: invalid scalar style");
    }
  })();
}
function blockHeader(string2, indentPerLevel) {
  var indentIndicator = needIndentIndicator(string2) ? String(indentPerLevel) : "";
  var clip = string2[string2.length - 1] === "\n";
  var keep = clip && (string2[string2.length - 2] === "\n" || string2 === "\n");
  var chomp = keep ? "+" : clip ? "" : "-";
  return indentIndicator + chomp + "\n";
}
function dropEndingNewline(string2) {
  return string2[string2.length - 1] === "\n" ? string2.slice(0, -1) : string2;
}
function foldString(string2, width) {
  var lineRe = /(\n+)([^\n]*)/g;
  var result = (function() {
    var nextLF = string2.indexOf("\n");
    nextLF = nextLF !== -1 ? nextLF : string2.length;
    lineRe.lastIndex = nextLF;
    return foldLine(string2.slice(0, nextLF), width);
  })();
  var prevMoreIndented = string2[0] === "\n" || string2[0] === " ";
  var moreIndented;
  var match3;
  while (match3 = lineRe.exec(string2)) {
    var prefix2 = match3[1], line2 = match3[2];
    moreIndented = line2[0] === " ";
    result += prefix2 + (!prevMoreIndented && !moreIndented && line2 !== "" ? "\n" : "") + foldLine(line2, width);
    prevMoreIndented = moreIndented;
  }
  return result;
}
function foldLine(line2, width) {
  if (line2 === "" || line2[0] === " ") return line2;
  var breakRe = / [^ ]/g;
  var match3;
  var start = 0, end, curr = 0, next = 0;
  var result = "";
  while (match3 = breakRe.exec(line2)) {
    next = match3.index;
    if (next - start > width) {
      end = curr > start ? curr : next;
      result += "\n" + line2.slice(start, end);
      start = end + 1;
    }
    curr = next;
  }
  result += "\n";
  if (line2.length - start > width && curr > start) {
    result += line2.slice(start, curr) + "\n" + line2.slice(curr + 1);
  } else {
    result += line2.slice(start);
  }
  return result.slice(1);
}
function escapeString(string2) {
  var result = "";
  var char = 0;
  var escapeSeq;
  for (var i2 = 0; i2 < string2.length; char >= 65536 ? i2 += 2 : i2++) {
    char = codePointAt(string2, i2);
    escapeSeq = ESCAPE_SEQUENCES[char];
    if (!escapeSeq && isPrintable(char)) {
      result += string2[i2];
      if (char >= 65536) result += string2[i2 + 1];
    } else {
      result += escapeSeq || encodeHex(char);
    }
  }
  return result;
}
function writeFlowSequence(state, level, object) {
  var _result = "", _tag = state.tag, index4, length, value;
  for (index4 = 0, length = object.length; index4 < length; index4 += 1) {
    value = object[index4];
    if (state.replacer) {
      value = state.replacer.call(object, String(index4), value);
    }
    if (writeNode(state, level, value, false, false) || typeof value === "undefined" && writeNode(state, level, null, false, false)) {
      if (_result !== "") _result += "," + (!state.condenseFlow ? " " : "");
      _result += state.dump;
    }
  }
  state.tag = _tag;
  state.dump = "[" + _result + "]";
}
function writeBlockSequence(state, level, object, compact) {
  var _result = "", _tag = state.tag, index4, length, value;
  for (index4 = 0, length = object.length; index4 < length; index4 += 1) {
    value = object[index4];
    if (state.replacer) {
      value = state.replacer.call(object, String(index4), value);
    }
    if (writeNode(state, level + 1, value, true, true, false, true) || typeof value === "undefined" && writeNode(state, level + 1, null, true, true, false, true)) {
      if (!compact || _result !== "") {
        _result += generateNextLine(state, level);
      }
      if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
        _result += "-";
      } else {
        _result += "- ";
      }
      _result += state.dump;
    }
  }
  state.tag = _tag;
  state.dump = _result || "[]";
}
function writeFlowMapping(state, level, object) {
  var _result = "", _tag = state.tag, objectKeyList = Object.keys(object), index4, length, objectKey, objectValue, pairBuffer;
  for (index4 = 0, length = objectKeyList.length; index4 < length; index4 += 1) {
    pairBuffer = "";
    if (_result !== "") pairBuffer += ", ";
    if (state.condenseFlow) pairBuffer += '"';
    objectKey = objectKeyList[index4];
    objectValue = object[objectKey];
    if (state.replacer) {
      objectValue = state.replacer.call(object, objectKey, objectValue);
    }
    if (!writeNode(state, level, objectKey, false, false)) {
      continue;
    }
    if (state.dump.length > 1024) pairBuffer += "? ";
    pairBuffer += state.dump + (state.condenseFlow ? '"' : "") + ":" + (state.condenseFlow ? "" : " ");
    if (!writeNode(state, level, objectValue, false, false)) {
      continue;
    }
    pairBuffer += state.dump;
    _result += pairBuffer;
  }
  state.tag = _tag;
  state.dump = "{" + _result + "}";
}
function writeBlockMapping(state, level, object, compact) {
  var _result = "", _tag = state.tag, objectKeyList = Object.keys(object), index4, length, objectKey, objectValue, explicitPair, pairBuffer;
  if (state.sortKeys === true) {
    objectKeyList.sort();
  } else if (typeof state.sortKeys === "function") {
    objectKeyList.sort(state.sortKeys);
  } else if (state.sortKeys) {
    throw new exception("sortKeys must be a boolean or a function");
  }
  for (index4 = 0, length = objectKeyList.length; index4 < length; index4 += 1) {
    pairBuffer = "";
    if (!compact || _result !== "") {
      pairBuffer += generateNextLine(state, level);
    }
    objectKey = objectKeyList[index4];
    objectValue = object[objectKey];
    if (state.replacer) {
      objectValue = state.replacer.call(object, objectKey, objectValue);
    }
    if (!writeNode(state, level + 1, objectKey, true, true, true)) {
      continue;
    }
    explicitPair = state.tag !== null && state.tag !== "?" || state.dump && state.dump.length > 1024;
    if (explicitPair) {
      if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
        pairBuffer += "?";
      } else {
        pairBuffer += "? ";
      }
    }
    pairBuffer += state.dump;
    if (explicitPair) {
      pairBuffer += generateNextLine(state, level);
    }
    if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {
      continue;
    }
    if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
      pairBuffer += ":";
    } else {
      pairBuffer += ": ";
    }
    pairBuffer += state.dump;
    _result += pairBuffer;
  }
  state.tag = _tag;
  state.dump = _result || "{}";
}
function detectType(state, object, explicit) {
  var _result, typeList, index4, length, type2, style3;
  typeList = explicit ? state.explicitTypes : state.implicitTypes;
  for (index4 = 0, length = typeList.length; index4 < length; index4 += 1) {
    type2 = typeList[index4];
    if ((type2.instanceOf || type2.predicate) && (!type2.instanceOf || typeof object === "object" && object instanceof type2.instanceOf) && (!type2.predicate || type2.predicate(object))) {
      if (explicit) {
        if (type2.multi && type2.representName) {
          state.tag = type2.representName(object);
        } else {
          state.tag = type2.tag;
        }
      } else {
        state.tag = "?";
      }
      if (type2.represent) {
        style3 = state.styleMap[type2.tag] || type2.defaultStyle;
        if (_toString.call(type2.represent) === "[object Function]") {
          _result = type2.represent(object, style3);
        } else if (_hasOwnProperty.call(type2.represent, style3)) {
          _result = type2.represent[style3](object, style3);
        } else {
          throw new exception("!<" + type2.tag + '> tag resolver accepts not "' + style3 + '" style');
        }
        state.dump = _result;
      }
      return true;
    }
  }
  return false;
}
function writeNode(state, level, object, block5, compact, iskey, isblockseq) {
  state.tag = null;
  state.dump = object;
  if (!detectType(state, object, false)) {
    detectType(state, object, true);
  }
  var type2 = _toString.call(state.dump);
  var inblock = block5;
  var tagStr;
  if (block5) {
    block5 = state.flowLevel < 0 || state.flowLevel > level;
  }
  var objectOrArray = type2 === "[object Object]" || type2 === "[object Array]", duplicateIndex, duplicate;
  if (objectOrArray) {
    duplicateIndex = state.duplicates.indexOf(object);
    duplicate = duplicateIndex !== -1;
  }
  if (state.tag !== null && state.tag !== "?" || duplicate || state.indent !== 2 && level > 0) {
    compact = false;
  }
  if (duplicate && state.usedDuplicates[duplicateIndex]) {
    state.dump = "*ref_" + duplicateIndex;
  } else {
    if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {
      state.usedDuplicates[duplicateIndex] = true;
    }
    if (type2 === "[object Object]") {
      if (block5 && Object.keys(state.dump).length !== 0) {
        writeBlockMapping(state, level, state.dump, compact);
        if (duplicate) {
          state.dump = "&ref_" + duplicateIndex + state.dump;
        }
      } else {
        writeFlowMapping(state, level, state.dump);
        if (duplicate) {
          state.dump = "&ref_" + duplicateIndex + " " + state.dump;
        }
      }
    } else if (type2 === "[object Array]") {
      if (block5 && state.dump.length !== 0) {
        if (state.noArrayIndent && !isblockseq && level > 0) {
          writeBlockSequence(state, level - 1, state.dump, compact);
        } else {
          writeBlockSequence(state, level, state.dump, compact);
        }
        if (duplicate) {
          state.dump = "&ref_" + duplicateIndex + state.dump;
        }
      } else {
        writeFlowSequence(state, level, state.dump);
        if (duplicate) {
          state.dump = "&ref_" + duplicateIndex + " " + state.dump;
        }
      }
    } else if (type2 === "[object String]") {
      if (state.tag !== "?") {
        writeScalar(state, state.dump, level, iskey, inblock);
      }
    } else if (type2 === "[object Undefined]") {
      return false;
    } else {
      if (state.skipInvalid) return false;
      throw new exception("unacceptable kind of an object to dump " + type2);
    }
    if (state.tag !== null && state.tag !== "?") {
      tagStr = encodeURI(
        state.tag[0] === "!" ? state.tag.slice(1) : state.tag
      ).replace(/!/g, "%21");
      if (state.tag[0] === "!") {
        tagStr = "!" + tagStr;
      } else if (tagStr.slice(0, 18) === "tag:yaml.org,2002:") {
        tagStr = "!!" + tagStr.slice(18);
      } else {
        tagStr = "!<" + tagStr + ">";
      }
      state.dump = tagStr + " " + state.dump;
    }
  }
  return true;
}
function getDuplicateReferences(object, state) {
  var objects = [], duplicatesIndexes = [], index4, length;
  inspectNode(object, objects, duplicatesIndexes);
  for (index4 = 0, length = duplicatesIndexes.length; index4 < length; index4 += 1) {
    state.duplicates.push(objects[duplicatesIndexes[index4]]);
  }
  state.usedDuplicates = new Array(length);
}
function inspectNode(object, objects, duplicatesIndexes) {
  var objectKeyList, index4, length;
  if (object !== null && typeof object === "object") {
    index4 = objects.indexOf(object);
    if (index4 !== -1) {
      if (duplicatesIndexes.indexOf(index4) === -1) {
        duplicatesIndexes.push(index4);
      }
    } else {
      objects.push(object);
      if (Array.isArray(object)) {
        for (index4 = 0, length = object.length; index4 < length; index4 += 1) {
          inspectNode(object[index4], objects, duplicatesIndexes);
        }
      } else {
        objectKeyList = Object.keys(object);
        for (index4 = 0, length = objectKeyList.length; index4 < length; index4 += 1) {
          inspectNode(object[objectKeyList[index4]], objects, duplicatesIndexes);
        }
      }
    }
  }
}
function dump$1(input3, options) {
  options = options || {};
  var state = new State(options);
  if (!state.noRefs) getDuplicateReferences(input3, state);
  var value = input3;
  if (state.replacer) {
    value = state.replacer.call({ "": value }, "", value);
  }
  if (writeNode(state, 0, value, true, true)) return state.dump + "\n";
  return "";
}
var dump_1 = dump$1;
var dumper = {
  dump: dump_1
};
function renamed(from4, to) {
  return function() {
    throw new Error("Function yaml." + from4 + " is removed in js-yaml 4. Use yaml." + to + " instead, which is now safe by default.");
  };
}
var Type = type;
var Schema = schema;
var FAILSAFE_SCHEMA = failsafe;
var JSON_SCHEMA = json;
var CORE_SCHEMA = core;
var DEFAULT_SCHEMA = _default;
var load = loader.load;
var loadAll = loader.loadAll;
var dump2 = dumper.dump;
var YAMLException = exception;
var types = {
  binary,
  float,
  map,
  null: _null,
  pairs,
  set,
  timestamp,
  bool,
  int,
  merge,
  omap,
  seq,
  str
};
var safeLoad = renamed("safeLoad", "load");
var safeLoadAll = renamed("safeLoadAll", "loadAll");
var safeDump = renamed("safeDump", "dump");
var jsYaml = {
  Type,
  Schema,
  FAILSAFE_SCHEMA,
  JSON_SCHEMA,
  CORE_SCHEMA,
  DEFAULT_SCHEMA,
  load,
  loadAll,
  dump: dump2,
  YAMLException,
  types,
  safeLoad,
  safeLoadAll,
  safeDump
};
var js_yaml_default = jsYaml;

// ../myst-cli-utils/node_modules/chalk/source/vendor/ansi-styles/index.js
var ANSI_BACKGROUND_OFFSET2 = 10;
var wrapAnsi162 = (offset = 0) => (code7) => `\x1B[${code7 + offset}m`;
var wrapAnsi2562 = (offset = 0) => (code7) => `\x1B[${38 + offset};5;${code7}m`;
var wrapAnsi16m2 = (offset = 0) => (red, green, blue) => `\x1B[${38 + offset};2;${red};${green};${blue}m`;
var styles3 = {
  modifier: {
    reset: [0, 0],
    // 21 isn't widely supported and 22 does the same thing
    bold: [1, 22],
    dim: [2, 22],
    italic: [3, 23],
    underline: [4, 24],
    overline: [53, 55],
    inverse: [7, 27],
    hidden: [8, 28],
    strikethrough: [9, 29]
  },
  color: {
    black: [30, 39],
    red: [31, 39],
    green: [32, 39],
    yellow: [33, 39],
    blue: [34, 39],
    magenta: [35, 39],
    cyan: [36, 39],
    white: [37, 39],
    // Bright color
    blackBright: [90, 39],
    gray: [90, 39],
    // Alias of `blackBright`
    grey: [90, 39],
    // Alias of `blackBright`
    redBright: [91, 39],
    greenBright: [92, 39],
    yellowBright: [93, 39],
    blueBright: [94, 39],
    magentaBright: [95, 39],
    cyanBright: [96, 39],
    whiteBright: [97, 39]
  },
  bgColor: {
    bgBlack: [40, 49],
    bgRed: [41, 49],
    bgGreen: [42, 49],
    bgYellow: [43, 49],
    bgBlue: [44, 49],
    bgMagenta: [45, 49],
    bgCyan: [46, 49],
    bgWhite: [47, 49],
    // Bright color
    bgBlackBright: [100, 49],
    bgGray: [100, 49],
    // Alias of `bgBlackBright`
    bgGrey: [100, 49],
    // Alias of `bgBlackBright`
    bgRedBright: [101, 49],
    bgGreenBright: [102, 49],
    bgYellowBright: [103, 49],
    bgBlueBright: [104, 49],
    bgMagentaBright: [105, 49],
    bgCyanBright: [106, 49],
    bgWhiteBright: [107, 49]
  }
};
var modifierNames2 = Object.keys(styles3.modifier);
var foregroundColorNames2 = Object.keys(styles3.color);
var backgroundColorNames2 = Object.keys(styles3.bgColor);
var colorNames2 = [...foregroundColorNames2, ...backgroundColorNames2];
function assembleStyles2() {
  const codes = /* @__PURE__ */ new Map();
  for (const [groupName, group3] of Object.entries(styles3)) {
    for (const [styleName, style3] of Object.entries(group3)) {
      styles3[styleName] = {
        open: `\x1B[${style3[0]}m`,
        close: `\x1B[${style3[1]}m`
      };
      group3[styleName] = styles3[styleName];
      codes.set(style3[0], style3[1]);
    }
    Object.defineProperty(styles3, groupName, {
      value: group3,
      enumerable: false
    });
  }
  Object.defineProperty(styles3, "codes", {
    value: codes,
    enumerable: false
  });
  styles3.color.close = "\x1B[39m";
  styles3.bgColor.close = "\x1B[49m";
  styles3.color.ansi = wrapAnsi162();
  styles3.color.ansi256 = wrapAnsi2562();
  styles3.color.ansi16m = wrapAnsi16m2();
  styles3.bgColor.ansi = wrapAnsi162(ANSI_BACKGROUND_OFFSET2);
  styles3.bgColor.ansi256 = wrapAnsi2562(ANSI_BACKGROUND_OFFSET2);
  styles3.bgColor.ansi16m = wrapAnsi16m2(ANSI_BACKGROUND_OFFSET2);
  Object.defineProperties(styles3, {
    rgbToAnsi256: {
      value(red, green, blue) {
        if (red === green && green === blue) {
          if (red < 8) {
            return 16;
          }
          if (red > 248) {
            return 231;
          }
          return Math.round((red - 8) / 247 * 24) + 232;
        }
        return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
      },
      enumerable: false
    },
    hexToRgb: {
      value(hex) {
        const matches4 = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
        if (!matches4) {
          return [0, 0, 0];
        }
        let [colorString] = matches4;
        if (colorString.length === 3) {
          colorString = [...colorString].map((character) => character + character).join("");
        }
        const integer = Number.parseInt(colorString, 16);
        return [
          /* eslint-disable no-bitwise */
          integer >> 16 & 255,
          integer >> 8 & 255,
          integer & 255
          /* eslint-enable no-bitwise */
        ];
      },
      enumerable: false
    },
    hexToAnsi256: {
      value: (hex) => styles3.rgbToAnsi256(...styles3.hexToRgb(hex)),
      enumerable: false
    },
    ansi256ToAnsi: {
      value(code7) {
        if (code7 < 8) {
          return 30 + code7;
        }
        if (code7 < 16) {
          return 90 + (code7 - 8);
        }
        let red;
        let green;
        let blue;
        if (code7 >= 232) {
          red = ((code7 - 232) * 10 + 8) / 255;
          green = red;
          blue = red;
        } else {
          code7 -= 16;
          const remainder = code7 % 36;
          red = Math.floor(code7 / 36) / 5;
          green = Math.floor(remainder / 6) / 5;
          blue = remainder % 6 / 5;
        }
        const value = Math.max(red, green, blue) * 2;
        if (value === 0) {
          return 30;
        }
        let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
        if (value === 2) {
          result += 60;
        }
        return result;
      },
      enumerable: false
    },
    rgbToAnsi: {
      value: (red, green, blue) => styles3.ansi256ToAnsi(styles3.rgbToAnsi256(red, green, blue)),
      enumerable: false
    },
    hexToAnsi: {
      value: (hex) => styles3.ansi256ToAnsi(styles3.hexToAnsi256(hex)),
      enumerable: false
    }
  });
  return styles3;
}
var ansiStyles2 = assembleStyles2();
var ansi_styles_default2 = ansiStyles2;

// ../myst-cli-utils/node_modules/chalk/source/vendor/supports-color/index.js
var import_node_process2 = __toESM(require("process"), 1);
var import_node_os2 = __toESM(require("os"), 1);
var import_node_tty2 = __toESM(require("tty"), 1);
function hasFlag2(flag, argv = globalThis.Deno ? globalThis.Deno.args : import_node_process2.default.argv) {
  const prefix2 = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
  const position6 = argv.indexOf(prefix2 + flag);
  const terminatorPosition = argv.indexOf("--");
  return position6 !== -1 && (terminatorPosition === -1 || position6 < terminatorPosition);
}
var { env: env2 } = import_node_process2.default;
var flagForceColor2;
if (hasFlag2("no-color") || hasFlag2("no-colors") || hasFlag2("color=false") || hasFlag2("color=never")) {
  flagForceColor2 = 0;
} else if (hasFlag2("color") || hasFlag2("colors") || hasFlag2("color=true") || hasFlag2("color=always")) {
  flagForceColor2 = 1;
}
function envForceColor2() {
  if ("FORCE_COLOR" in env2) {
    if (env2.FORCE_COLOR === "true") {
      return 1;
    }
    if (env2.FORCE_COLOR === "false") {
      return 0;
    }
    return env2.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env2.FORCE_COLOR, 10), 3);
  }
}
function translateLevel2(level) {
  if (level === 0) {
    return false;
  }
  return {
    level,
    hasBasic: true,
    has256: level >= 2,
    has16m: level >= 3
  };
}
function _supportsColor2(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
  const noFlagForceColor = envForceColor2();
  if (noFlagForceColor !== void 0) {
    flagForceColor2 = noFlagForceColor;
  }
  const forceColor = sniffFlags ? flagForceColor2 : noFlagForceColor;
  if (forceColor === 0) {
    return 0;
  }
  if (sniffFlags) {
    if (hasFlag2("color=16m") || hasFlag2("color=full") || hasFlag2("color=truecolor")) {
      return 3;
    }
    if (hasFlag2("color=256")) {
      return 2;
    }
  }
  if ("TF_BUILD" in env2 && "AGENT_NAME" in env2) {
    return 1;
  }
  if (haveStream && !streamIsTTY && forceColor === void 0) {
    return 0;
  }
  const min = forceColor || 0;
  if (env2.TERM === "dumb") {
    return min;
  }
  if (import_node_process2.default.platform === "win32") {
    const osRelease = import_node_os2.default.release().split(".");
    if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
      return Number(osRelease[2]) >= 14931 ? 3 : 2;
    }
    return 1;
  }
  if ("CI" in env2) {
    if ("GITHUB_ACTIONS" in env2 || "GITEA_ACTIONS" in env2) {
      return 3;
    }
    if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env2) || env2.CI_NAME === "codeship") {
      return 1;
    }
    return min;
  }
  if ("TEAMCITY_VERSION" in env2) {
    return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env2.TEAMCITY_VERSION) ? 1 : 0;
  }
  if (env2.COLORTERM === "truecolor") {
    return 3;
  }
  if (env2.TERM === "xterm-kitty") {
    return 3;
  }
  if ("TERM_PROGRAM" in env2) {
    const version4 = Number.parseInt((env2.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
    switch (env2.TERM_PROGRAM) {
      case "iTerm.app": {
        return version4 >= 3 ? 3 : 2;
      }
      case "Apple_Terminal": {
        return 2;
      }
    }
  }
  if (/-256(color)?$/i.test(env2.TERM)) {
    return 2;
  }
  if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env2.TERM)) {
    return 1;
  }
  if ("COLORTERM" in env2) {
    return 1;
  }
  return min;
}
function createSupportsColor2(stream3, options = {}) {
  const level = _supportsColor2(stream3, {
    streamIsTTY: stream3 && stream3.isTTY,
    ...options
  });
  return translateLevel2(level);
}
var supportsColor2 = {
  stdout: createSupportsColor2({ isTTY: import_node_tty2.default.isatty(1) }),
  stderr: createSupportsColor2({ isTTY: import_node_tty2.default.isatty(2) })
};
var supports_color_default2 = supportsColor2;

// ../myst-cli-utils/node_modules/chalk/source/utilities.js
function stringReplaceAll2(string2, substring, replacer) {
  let index4 = string2.indexOf(substring);
  if (index4 === -1) {
    return string2;
  }
  const substringLength = substring.length;
  let endIndex = 0;
  let returnValue = "";
  do {
    returnValue += string2.slice(endIndex, index4) + substring + replacer;
    endIndex = index4 + substringLength;
    index4 = string2.indexOf(substring, endIndex);
  } while (index4 !== -1);
  returnValue += string2.slice(endIndex);
  return returnValue;
}
function stringEncaseCRLFWithFirstIndex2(string2, prefix2, postfix, index4) {
  let endIndex = 0;
  let returnValue = "";
  do {
    const gotCR = string2[index4 - 1] === "\r";
    returnValue += string2.slice(endIndex, gotCR ? index4 - 1 : index4) + prefix2 + (gotCR ? "\r\n" : "\n") + postfix;
    endIndex = index4 + 1;
    index4 = string2.indexOf("\n", endIndex);
  } while (index4 !== -1);
  returnValue += string2.slice(endIndex);
  return returnValue;
}

// ../myst-cli-utils/node_modules/chalk/source/index.js
var { stdout: stdoutColor2, stderr: stderrColor2 } = supports_color_default2;
var GENERATOR2 = Symbol("GENERATOR");
var STYLER2 = Symbol("STYLER");
var IS_EMPTY2 = Symbol("IS_EMPTY");
var levelMapping2 = [
  "ansi",
  "ansi",
  "ansi256",
  "ansi16m"
];
var styles4 = /* @__PURE__ */ Object.create(null);
var applyOptions2 = (object, options = {}) => {
  if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
    throw new Error("The `level` option should be an integer from 0 to 3");
  }
  const colorLevel = stdoutColor2 ? stdoutColor2.level : 0;
  object.level = options.level === void 0 ? colorLevel : options.level;
};
var chalkFactory2 = (options) => {
  const chalk6 = (...strings) => strings.join(" ");
  applyOptions2(chalk6, options);
  Object.setPrototypeOf(chalk6, createChalk2.prototype);
  return chalk6;
};
function createChalk2(options) {
  return chalkFactory2(options);
}
Object.setPrototypeOf(createChalk2.prototype, Function.prototype);
for (const [styleName, style3] of Object.entries(ansi_styles_default2)) {
  styles4[styleName] = {
    get() {
      const builder = createBuilder2(this, createStyler2(style3.open, style3.close, this[STYLER2]), this[IS_EMPTY2]);
      Object.defineProperty(this, styleName, { value: builder });
      return builder;
    }
  };
}
styles4.visible = {
  get() {
    const builder = createBuilder2(this, this[STYLER2], true);
    Object.defineProperty(this, "visible", { value: builder });
    return builder;
  }
};
var getModelAnsi2 = (model, level, type2, ...arguments_) => {
  if (model === "rgb") {
    if (level === "ansi16m") {
      return ansi_styles_default2[type2].ansi16m(...arguments_);
    }
    if (level === "ansi256") {
      return ansi_styles_default2[type2].ansi256(ansi_styles_default2.rgbToAnsi256(...arguments_));
    }
    return ansi_styles_default2[type2].ansi(ansi_styles_default2.rgbToAnsi(...arguments_));
  }
  if (model === "hex") {
    return getModelAnsi2("rgb", level, type2, ...ansi_styles_default2.hexToRgb(...arguments_));
  }
  return ansi_styles_default2[type2][model](...arguments_);
};
var usedModels2 = ["rgb", "hex", "ansi256"];
for (const model of usedModels2) {
  styles4[model] = {
    get() {
      const { level } = this;
      return function(...arguments_) {
        const styler = createStyler2(getModelAnsi2(model, levelMapping2[level], "color", ...arguments_), ansi_styles_default2.color.close, this[STYLER2]);
        return createBuilder2(this, styler, this[IS_EMPTY2]);
      };
    }
  };
  const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
  styles4[bgModel] = {
    get() {
      const { level } = this;
      return function(...arguments_) {
        const styler = createStyler2(getModelAnsi2(model, levelMapping2[level], "bgColor", ...arguments_), ansi_styles_default2.bgColor.close, this[STYLER2]);
        return createBuilder2(this, styler, this[IS_EMPTY2]);
      };
    }
  };
}
var proto2 = Object.defineProperties(() => {
}, {
  ...styles4,
  level: {
    enumerable: true,
    get() {
      return this[GENERATOR2].level;
    },
    set(level) {
      this[GENERATOR2].level = level;
    }
  }
});
var createStyler2 = (open2, close2, parent2) => {
  let openAll;
  let closeAll;
  if (parent2 === void 0) {
    openAll = open2;
    closeAll = close2;
  } else {
    openAll = parent2.openAll + open2;
    closeAll = close2 + parent2.closeAll;
  }
  return {
    open: open2,
    close: close2,
    openAll,
    closeAll,
    parent: parent2
  };
};
var createBuilder2 = (self2, _styler, _isEmpty) => {
  const builder = (...arguments_) => applyStyle2(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
  Object.setPrototypeOf(builder, proto2);
  builder[GENERATOR2] = self2;
  builder[STYLER2] = _styler;
  builder[IS_EMPTY2] = _isEmpty;
  return builder;
};
var applyStyle2 = (self2, string2) => {
  if (self2.level <= 0 || !string2) {
    return self2[IS_EMPTY2] ? "" : string2;
  }
  let styler = self2[STYLER2];
  if (styler === void 0) {
    return string2;
  }
  const { openAll, closeAll } = styler;
  if (string2.includes("\x1B")) {
    while (styler !== void 0) {
      string2 = stringReplaceAll2(string2, styler.close, styler.open);
      styler = styler.parent;
    }
  }
  const lfIndex = string2.indexOf("\n");
  if (lfIndex !== -1) {
    string2 = stringEncaseCRLFWithFirstIndex2(string2, closeAll, openAll, lfIndex);
  }
  return openAll + string2 + closeAll;
};
Object.defineProperties(createChalk2.prototype, styles4);
var chalk2 = createChalk2();
var chalkStderr2 = createChalk2({ level: stderrColor2 ? stderrColor2.level : 0 });
var source_default2 = chalk2;

// ../myst-cli-utils/dist/logger.js
var import_node_path = require("path");
var LogLevel;
(function(LogLevel2) {
  LogLevel2[LogLevel2["fatal"] = 60] = "fatal";
  LogLevel2[LogLevel2["error"] = 50] = "error";
  LogLevel2[LogLevel2["warn"] = 40] = "warn";
  LogLevel2[LogLevel2["info"] = 30] = "info";
  LogLevel2[LogLevel2["debug"] = 20] = "debug";
  LogLevel2[LogLevel2["trace"] = 10] = "trace";
})(LogLevel || (LogLevel = {}));
function silentLogger() {
  return {
    debug() {
    },
    info() {
    },
    warn() {
    },
    error() {
    }
  };
}
function replaceCwd(cwd2, args) {
  if (!cwd2)
    return args;
  return args.map((a2) => {
    if (typeof a2 === "string") {
      return a2.replaceAll(cwd2 + import_node_path.sep, "");
    }
    return a2;
  });
}
function chalkLogger(level, cwd2) {
  return {
    debug(...args) {
      if (level > LogLevel.debug)
        return;
      console.debug(source_default2.dim(...args));
    },
    info(...args) {
      if (level > LogLevel.info)
        return;
      console.log(source_default2.reset(...replaceCwd(cwd2, args)));
    },
    warn(...args) {
      if (level > LogLevel.warn)
        return;
      console.warn(source_default2.yellow(...replaceCwd(cwd2, args)));
    },
    error(...args) {
      if (level > LogLevel.error)
        return;
      console.error(source_default2.red(...replaceCwd(cwd2, args)));
    }
  };
}
function createNpmLogger(session) {
  const logger = {
    debug(data) {
      const line2 = data.trim();
      if (!line2)
        return;
      session.log.debug(data);
    },
    error(data) {
      const line2 = data.trim();
      if (!line2)
        return;
      const lower2 = line2.toLowerCase();
      if (
        // There are a lot of deprecation warnings that we want to hide to myst users
        lower2.includes("deprecated") || lower2.includes("no longer supported") || lower2.includes("do not need") || lower2.includes("please use") || lower2.includes("functionality") || lower2.includes("has been moved") || line2 === "npm" || line2.includes("WARN")
      ) {
        session.log.debug(line2);
        return;
      }
      session.log.error(data);
    }
  };
  return logger;
}

// ../myst-cli-utils/dist/exec.js
var import_util = __toESM(require("util"), 1);
var import_child_process = __toESM(require("child_process"), 1);
function execWrapper(command, options, callback) {
  var _a6, _b;
  const childProcess = import_child_process.default.exec(command, options !== null && options !== void 0 ? options : {}, callback);
  (_a6 = childProcess.stdout) === null || _a6 === void 0 ? void 0 : _a6.pipe(process.stdout);
  (_b = childProcess.stderr) === null || _b === void 0 ? void 0 : _b.pipe(process.stderr);
  return childProcess;
}
var exec = import_util.default.promisify(execWrapper);
function makeExecWrapper(command, log, options) {
  return function inner2(callback) {
    var _a6, _b, _c;
    const childProcess = import_child_process.default.exec(command, options !== null && options !== void 0 ? options : {}, callback);
    (_a6 = childProcess.stdout) === null || _a6 === void 0 ? void 0 : _a6.on("data", (data) => log === null || log === void 0 ? void 0 : log.debug(data));
    (_b = childProcess.stderr) === null || _b === void 0 ? void 0 : _b.on("data", (data) => log === null || log === void 0 ? void 0 : log.error(data));
    (_c = options === null || options === void 0 ? void 0 : options.getProcess) === null || _c === void 0 ? void 0 : _c.call(options, childProcess);
    return childProcess;
  };
}
function makeExecutable(command, log, options) {
  return import_util.default.promisify(makeExecWrapper(command, log, options));
}

// ../myst-cli-utils/dist/utils.js
var import_pretty_hrtime = __toESM(require_pretty_hrtime(), 1);
function tic() {
  let start = process.hrtime();
  function toc(f3 = "") {
    const time = (0, import_pretty_hrtime.default)(process.hrtime(start));
    start = process.hrtime();
    return f3 ? f3.replace("%s", time) : time;
  }
  return toc;
}

// ../myst-cli-utils/dist/isUrl.js
function isUrl2(url) {
  if (!url)
    return false;
  try {
    const parsed = new URL(url);
    return parsed.protocol.includes("http");
  } catch (error) {
    return false;
  }
}

// ../myst-cli-utils/dist/filesystem.js
var import_node_fs = __toESM(require("fs"), 1);
var import_node_path2 = __toESM(require("path"), 1);
var import_node_crypto = require("crypto");
function computeHash(content3) {
  return (0, import_node_crypto.createHash)("md5").update(content3).digest("hex");
}
function isDirectory(file) {
  return import_node_fs.default.lstatSync(file).isDirectory();
}
function writeFileToFolder(filename, data, opts) {
  if (!import_node_fs.default.existsSync(filename))
    import_node_fs.default.mkdirSync(import_node_path2.default.dirname(filename), { recursive: true });
  import_node_fs.default.writeFileSync(filename, data, opts);
}
function hashAndCopyStaticFile(session, file, writeFolder, errorLogFn) {
  const { name: name3, ext: ext2 } = import_node_path2.default.parse(file);
  const fd = import_node_fs.default.openSync(file, "r");
  const { mtime, size } = import_node_fs.default.fstatSync(fd);
  import_node_fs.default.closeSync(fd);
  const hash = computeHash(`${file}${mtime.toString()}${size.toString()}`);
  const fileHash = `${name3.slice(0, 20)}-${hash}${ext2}`;
  const destination = import_node_path2.default.join(writeFolder, fileHash);
  if (import_node_fs.default.existsSync(destination)) {
    session.log.debug(`Cached file found for: ${file}`);
  } else {
    try {
      if (!import_node_fs.default.existsSync(writeFolder))
        import_node_fs.default.mkdirSync(writeFolder, { recursive: true });
      import_node_fs.default.copyFileSync(file, destination);
      session.log.debug(`File successfully copied: ${file}`);
    } catch {
      const message = `Error copying file to ${writeFolder}`;
      errorLogFn ? errorLogFn(message) : session.log.error(message);
      return void 0;
    }
  }
  return fileHash;
}
function copyFileMaintainPath(session, file, from4, to, errorLogFn) {
  if (!import_node_path2.default.resolve(file).startsWith(import_node_path2.default.resolve(from4))) {
    const message = `Cannot include files outside of 'from' directory: ${file}

`;
    errorLogFn ? errorLogFn(message) : session.log.error(message);
    return void 0;
  }
  const destination = import_node_path2.default.resolve(to, import_node_path2.default.relative(from4, file));
  const destinationFolder = import_node_path2.default.dirname(destination);
  try {
    if (!import_node_fs.default.existsSync(destinationFolder))
      import_node_fs.default.mkdirSync(destinationFolder, { recursive: true });
    import_node_fs.default.copyFileSync(file, destination);
    session.log.debug(`File successfully copied: ${file}`);
    return destination;
  } catch {
    const message = `Error copying file to: ${to}`;
    errorLogFn ? errorLogFn(message) : session.log.error(message);
    return void 0;
  }
}
function copyFileToFolder(session, file, to, errorLogFn) {
  const destination = import_node_path2.default.join(to, import_node_path2.default.basename(file));
  if (import_node_fs.default.existsSync(destination)) {
    const message = `File already exists with name: ${import_node_path2.default.basename(file)}`;
    errorLogFn ? errorLogFn(message) : session.log.error(message);
  }
  const destinationFolder = import_node_path2.default.dirname(destination);
  try {
    if (!import_node_fs.default.existsSync(destinationFolder))
      import_node_fs.default.mkdirSync(destinationFolder, { recursive: true });
    import_node_fs.default.copyFileSync(file, destination);
    session.log.debug(`File successfully copied: ${file}`);
    return destination;
  } catch {
    const message = `Error copying file to: ${to}`;
    errorLogFn ? errorLogFn(message) : session.log.error(message);
    return void 0;
  }
}

// ../../node_modules/nanoid/index.js
var import_node_crypto2 = require("crypto");

// ../../node_modules/nanoid/url-alphabet/index.js
var urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";

// ../../node_modules/nanoid/index.js
var POOL_SIZE_MULTIPLIER = 128;
var pool;
var poolOffset;
function fillPool(bytes) {
  if (!pool || pool.length < bytes) {
    pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER);
    import_node_crypto2.webcrypto.getRandomValues(pool);
    poolOffset = 0;
  } else if (poolOffset + bytes > pool.length) {
    import_node_crypto2.webcrypto.getRandomValues(pool);
    poolOffset = 0;
  }
  poolOffset += bytes;
}
function random(bytes) {
  fillPool(bytes |= 0);
  return pool.subarray(poolOffset - bytes, poolOffset);
}
function customRandom(alphabet2, defaultSize, getRandom) {
  let mask2 = (2 << 31 - Math.clz32(alphabet2.length - 1 | 1)) - 1;
  let step = Math.ceil(1.6 * mask2 * defaultSize / alphabet2.length);
  return (size = defaultSize) => {
    if (!size) return "";
    let id = "";
    while (true) {
      let bytes = getRandom(step);
      let i2 = step;
      while (i2--) {
        id += alphabet2[bytes[i2] & mask2] || "";
        if (id.length >= size) return id;
      }
    }
  };
}
function customAlphabet(alphabet2, size = 21) {
  return customRandom(alphabet2, size, random);
}
function nanoid(size = 21) {
  fillPool(size |= 0);
  let id = "";
  for (let i2 = poolOffset - size; i2 < poolOffset; i2++) {
    id += urlAlphabet[pool[i2] & 63];
  }
  return id;
}

// ../myst-common/dist/utils.js
function addMessageInfo(message, info) {
  if (info === null || info === void 0 ? void 0 : info.note)
    message.note = info.note;
  if (info === null || info === void 0 ? void 0 : info.url)
    message.url = info.url;
  if (info === null || info === void 0 ? void 0 : info.ruleId)
    message.ruleId = info.ruleId;
  if (info === null || info === void 0 ? void 0 : info.fatal)
    message.fatal = true;
  return message;
}
function fileError(file, message, opts) {
  return addMessageInfo(file.message(message, opts === null || opts === void 0 ? void 0 : opts.node, opts === null || opts === void 0 ? void 0 : opts.source), { ...opts, fatal: true });
}
function fileWarn(file, message, opts) {
  return addMessageInfo(file.message(message, opts === null || opts === void 0 ? void 0 : opts.node, opts === null || opts === void 0 ? void 0 : opts.source), opts);
}
var az = "abcdefghijklmnopqrstuvwxyz";
var alpha = az + az.toUpperCase();
var numbers = "0123456789";
var nanoidAZ = customAlphabet(alpha, 1);
var nanoidAZ9 = customAlphabet(alpha + numbers, 9);
function createId() {
  return nanoidAZ() + nanoidAZ9();
}
function normalizeLabel(label) {
  if (!label)
    return void 0;
  const identifier = label.replace(/[\t\n\r ]+/g, " ").replace(/['‘’"“”]+/g, "").trim().toLowerCase();
  const html_id = createHtmlId(identifier);
  return { identifier, label, html_id };
}
function createHtmlId(identifier) {
  if (!identifier)
    return void 0;
  return identifier.toLowerCase().replace(/[^a-z0-9-]/g, "-").replace(/^([0-9-])/, "id-$1").replace(/-[-]+/g, "-").replace(/(?:^[-]+)|(?:[-]+$)/g, "");
}
function transferTargetAttrs(sourceNode, destNode, vfile2) {
  if (sourceNode.label) {
    if (destNode.label && vfile2 && destNode.label !== sourceNode.label) {
      fileWarn(vfile2, `label "${destNode.label}" replaced with "${sourceNode.label}"`, {
        node: destNode
      });
    }
    if (destNode.label && vfile2 && destNode.label === sourceNode.label) {
      fileWarn(vfile2, `duplicate label "${destNode.label}" replacement`, {
        node: destNode
      });
    }
    destNode.label = sourceNode.label;
    delete sourceNode.label;
  }
  if (sourceNode.identifier) {
    destNode.identifier = sourceNode.identifier;
    delete sourceNode.identifier;
  }
  if (sourceNode.html_id) {
    destNode.html_id = sourceNode.html_id;
    delete sourceNode.html_id;
  }
  if (sourceNode.indexEntries) {
    if (!destNode.indexEntries)
      destNode.indexEntries = [];
    destNode.indexEntries.push(...sourceNode.indexEntries);
    delete sourceNode.indexEntries;
  }
}
function getNodeOrLiftedChildren(node3, removeType) {
  if (!node3.children)
    return [node3];
  const children = node3.children.map((child) => getNodeOrLiftedChildren(child, removeType)).flat();
  if (node3.type === removeType) {
    if (node3 && node3.children == null)
      delete node3.children;
    return children;
  }
  node3.children = children;
  return [node3];
}
function liftChildren(tree, removeType) {
  if (!tree.children)
    return;
  tree.children = tree.children.map((child) => getNodeOrLiftedChildren(child, removeType)).flat();
}
function setTextAsChild(node3, text7) {
  node3.children = [{ type: "text", value: text7 }];
}
function toText(content3) {
  if (!content3)
    return "";
  if (!Array.isArray(content3))
    return toText([content3]);
  return content3.map((n) => {
    if (!n || typeof n === "string")
      return n || "";
    if ("value" in n)
      return n.value;
    if ("children" in n && n.children)
      return toText(n.children);
    return "";
  }).join("");
}
function copyNode(node3) {
  return structuredClone(node3);
}
function mergeTextNodes(node3) {
  var _a6;
  const children = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.reduce((c, n) => {
    var _a7;
    if ((n === null || n === void 0 ? void 0 : n.type) !== "text") {
      c.push(mergeTextNodes(n));
      return c;
    }
    const last = c[c.length - 1];
    if ((last === null || last === void 0 ? void 0 : last.type) !== "text") {
      c.push(n);
      return c;
    }
    if ((_a7 = n.position) === null || _a7 === void 0 ? void 0 : _a7.end) {
      if (!last.position)
        last.position = {};
      last.position.end = n.position.end;
    }
    if (!last.value)
      last.value = "";
    if (n.value)
      last.value += n.value;
    return c;
  }, []);
  if (children)
    node3.children = children;
  return node3;
}
function admonitionKindToTitle(kind) {
  const transform3 = {
    attention: "Attention",
    caution: "Caution",
    danger: "Danger",
    error: "Error",
    important: "Important",
    hint: "Hint",
    note: "Note",
    seealso: "See Also",
    tip: "Tip",
    warning: "Warning"
  };
  return transform3[kind] || `Unknown Admonition "${kind}"`;
}
function writeTexLabelledComment(title, commands, commentLength2) {
  if (!commands || (commands === null || commands === void 0 ? void 0 : commands.length) === 0)
    return "";
  const len = (commentLength2 - title.length - 4) / 2;
  const start = "".padEnd(Math.ceil(len), "%");
  const end = "".padEnd(Math.floor(len), "%");
  const titleBlock = `${start}  ${title}  ${end}
`;
  return `${titleBlock}${commands.join("\n")}
`;
}
function getMetadataTags(node3) {
  var _a6;
  if (!node3.data)
    return [];
  const tags = (_a6 = node3.data.tags) !== null && _a6 !== void 0 ? _a6 : [];
  Object.entries(node3.data).forEach(([key2, val]) => {
    if (val === true || typeof val === "string" && val.toLowerCase() === "true") {
      tags.push(key2);
    }
  });
  return tags.map((tag) => tag.toLowerCase());
}
function slugToUrl(slug) {
  if (slug == null)
    return void 0;
  return slug.replace(/\.index$/, "").replace(/\./g, "/");
}

// ../myst-common/dist/plural.js
function plural(f3, count2) {
  var _a6;
  const num = (_a6 = typeof count2 === "number" ? count2 : Array.isArray(count2) ? count2 === null || count2 === void 0 ? void 0 : count2.length : Object.keys(count2 !== null && count2 !== void 0 ? count2 : {}).length) !== null && _a6 !== void 0 ? _a6 : 0;
  return f3.replace("%s", String(num)).replace(/\((?:([a-z0-9A-Z-]*)\|)?([a-z0-9A-Z-]*)\)/g, num === 1 ? "$1" : "$2");
}

// ../../node_modules/unist-util-is/lib/index.js
var convert = (
  /**
   * @type {(
   *   (<Kind extends Node>(test: PredicateTest<Kind>) => AssertPredicate<Kind>) &
   *   ((test?: Test) => AssertAnything)
   * )}
   */
  /**
   * @param {Test} [test]
   * @returns {AssertAnything}
   */
  (function(test2) {
    if (test2 === void 0 || test2 === null) {
      return ok;
    }
    if (typeof test2 === "string") {
      return typeFactory(test2);
    }
    if (typeof test2 === "object") {
      return Array.isArray(test2) ? anyFactory(test2) : propsFactory(test2);
    }
    if (typeof test2 === "function") {
      return castFactory(test2);
    }
    throw new Error("Expected function, string, or object as test");
  })
);
function anyFactory(tests) {
  const checks2 = [];
  let index4 = -1;
  while (++index4 < tests.length) {
    checks2[index4] = convert(tests[index4]);
  }
  return castFactory(any);
  function any(...parameters) {
    let index5 = -1;
    while (++index5 < checks2.length) {
      if (checks2[index5].call(this, ...parameters)) return true;
    }
    return false;
  }
}
function propsFactory(check2) {
  return castFactory(all10);
  function all10(node3) {
    let key2;
    for (key2 in check2) {
      if (node3[key2] !== check2[key2]) return false;
    }
    return true;
  }
}
function typeFactory(check2) {
  return castFactory(type2);
  function type2(node3) {
    return node3 && node3.type === check2;
  }
}
function castFactory(check2) {
  return assertion;
  function assertion(node3, ...parameters) {
    return Boolean(
      node3 && typeof node3 === "object" && "type" in node3 && // @ts-expect-error: fine.
      Boolean(check2.call(this, node3, ...parameters))
    );
  }
}
function ok() {
  return true;
}

// ../../node_modules/unist-util-remove/lib/index.js
var empty = [];
var remove = (
  /**
   * @type {(
   *  (<Tree extends Node>(node: Tree, options: Options, test: Test) => Tree | null) &
   *  (<Tree extends Node>(node: Tree, test: Test) => Tree | null)
   * )}
   */
  /**
   * @param {Node} tree
   * @param {Options | null | undefined} [options]
   * @param {Test | null | undefined} [test]
   * @returns {Node | null}
   */
  (function(tree, options, test2) {
    const is4 = convert(test2 || options);
    const cascade = !options || options.cascade === void 0 || options.cascade === null ? true : options.cascade;
    return preorder(tree);
    function preorder(node3, index4, parent2) {
      const children = node3.children || empty;
      let childIndex = -1;
      let position6 = 0;
      if (is4(node3, index4, parent2)) {
        return null;
      }
      if (children.length > 0) {
        while (++childIndex < children.length) {
          if (preorder(children[childIndex], childIndex, node3)) {
            children[position6++] = children[childIndex];
          }
        }
        if (cascade && !position6) {
          return null;
        }
        children.length = position6;
      }
      return node3;
    }
  })
);

// ../../node_modules/zwitch/index.js
var own = {}.hasOwnProperty;
function zwitch(key2, options) {
  const settings = options || {};
  function one8(value, ...parameters) {
    let fn = one8.invalid;
    const handlers6 = one8.handlers;
    if (value && own.call(value, key2)) {
      const id = String(value[key2]);
      fn = own.call(handlers6, id) ? handlers6[id] : one8.unknown;
    }
    if (fn) {
      return fn.call(this, value, ...parameters);
    }
  }
  one8.handlers = settings.handlers || {};
  one8.invalid = settings.invalid;
  one8.unknown = settings.unknown;
  return one8;
}

// ../../node_modules/unist-util-select/lib/attribute.js
var handle = zwitch("operator", {
  unknown: unknownOperator,
  // @ts-expect-error: hush.
  invalid: exists,
  handlers: {
    "=": exact,
    "^=": begins,
    "$=": ends,
    "*=": containsString,
    "~=": containsArray
  }
});
function attribute(query, node3) {
  let index4 = -1;
  while (++index4 < query.attrs.length) {
    if (!handle(query.attrs[index4], node3)) return false;
  }
  return true;
}
function exists(query, node3) {
  return node3[query.name] !== null && node3[query.name] !== void 0;
}
function exact(query, node3) {
  return exists(query, node3) && String(node3[query.name]) === query.value;
}
function containsArray(query, node3) {
  const value = node3[query.name];
  if (value === null || value === void 0) return false;
  if (Array.isArray(value) && value.includes(query.value)) {
    return true;
  }
  return String(value) === query.value;
}
function begins(query, node3) {
  const value = node3[query.name];
  return Boolean(
    query.value && typeof value === "string" && value.slice(0, query.value.length) === query.value
  );
}
function ends(query, node3) {
  const value = node3[query.name];
  return Boolean(
    query.value && typeof value === "string" && value.slice(-query.value.length) === query.value
  );
}
function containsString(query, node3) {
  const value = node3[query.name];
  return Boolean(
    query.value && typeof value === "string" && value.includes(query.value)
  );
}
function unknownOperator(query) {
  throw new Error("Unknown operator `" + query.operator + "`");
}

// ../../node_modules/unist-util-select/lib/name.js
function name2(query, node3) {
  return query.tagName === "*" || query.tagName === node3.type;
}

// ../../node_modules/nth-check/lib/esm/parse.js
var whitespace = /* @__PURE__ */ new Set([9, 10, 12, 13, 32]);
var ZERO = "0".charCodeAt(0);
var NINE = "9".charCodeAt(0);
function parse(formula) {
  formula = formula.trim().toLowerCase();
  if (formula === "even") {
    return [2, 0];
  } else if (formula === "odd") {
    return [2, 1];
  }
  let idx = 0;
  let a2 = 0;
  let sign = readSign();
  let number2 = readNumber();
  if (idx < formula.length && formula.charAt(idx) === "n") {
    idx++;
    a2 = sign * (number2 !== null && number2 !== void 0 ? number2 : 1);
    skipWhitespace();
    if (idx < formula.length) {
      sign = readSign();
      skipWhitespace();
      number2 = readNumber();
    } else {
      sign = number2 = 0;
    }
  }
  if (number2 === null || idx < formula.length) {
    throw new Error(`n-th rule couldn't be parsed ('${formula}')`);
  }
  return [a2, sign * number2];
  function readSign() {
    if (formula.charAt(idx) === "-") {
      idx++;
      return -1;
    }
    if (formula.charAt(idx) === "+") {
      idx++;
    }
    return 1;
  }
  function readNumber() {
    const start = idx;
    let value = 0;
    while (idx < formula.length && formula.charCodeAt(idx) >= ZERO && formula.charCodeAt(idx) <= NINE) {
      value = value * 10 + (formula.charCodeAt(idx) - ZERO);
      idx++;
    }
    return idx === start ? null : value;
  }
  function skipWhitespace() {
    while (idx < formula.length && whitespace.has(formula.charCodeAt(idx))) {
      idx++;
    }
  }
}

// ../../node_modules/nth-check/lib/esm/compile.js
var import_boolbase = __toESM(require_boolbase(), 1);
function compile(parsed) {
  const a2 = parsed[0];
  const b = parsed[1] - 1;
  if (b < 0 && a2 <= 0)
    return import_boolbase.default.falseFunc;
  if (a2 === -1)
    return (index4) => index4 <= b;
  if (a2 === 0)
    return (index4) => index4 === b;
  if (a2 === 1)
    return b < 0 ? import_boolbase.default.trueFunc : (index4) => index4 >= b;
  const absA = Math.abs(a2);
  const bMod = (b % absA + absA) % absA;
  return a2 > 1 ? (index4) => index4 >= b && index4 % absA === bMod : (index4) => index4 <= b && index4 % absA === bMod;
}

// ../../node_modules/nth-check/lib/esm/index.js
function nthCheck(formula) {
  return compile(parse(formula));
}

// ../../node_modules/unist-util-select/lib/util.js
function parent(node3) {
  return Array.isArray(node3.children);
}

// ../../node_modules/unist-util-select/lib/pseudo.js
var nthCheck2 = nthCheck.default || nthCheck;
var handle2 = zwitch("name", {
  unknown: unknownPseudo,
  invalid: invalidPseudo,
  handlers: {
    any: matches,
    blank: empty2,
    empty: empty2,
    "first-child": firstChild,
    "first-of-type": firstOfType,
    has,
    "last-child": lastChild,
    "last-of-type": lastOfType,
    matches,
    not,
    "nth-child": nthChild,
    "nth-last-child": nthLastChild,
    "nth-of-type": nthOfType,
    "nth-last-of-type": nthLastOfType,
    "only-child": onlyChild,
    "only-of-type": onlyOfType,
    root,
    scope
  }
});
pseudo.needsIndex = [
  "any",
  "first-child",
  "first-of-type",
  "last-child",
  "last-of-type",
  "matches",
  "not",
  "nth-child",
  "nth-last-child",
  "nth-of-type",
  "nth-last-of-type",
  "only-child",
  "only-of-type"
];
function pseudo(query, node3, index4, parent2, state) {
  const pseudos = query.pseudos;
  let offset = -1;
  while (++offset < pseudos.length) {
    if (!handle2(pseudos[offset], node3, index4, parent2, state)) return false;
  }
  return true;
}
function empty2(_1, node3) {
  return parent(node3) ? node3.children.length === 0 : !("value" in node3);
}
function firstChild(query, _1, _2, _3, state) {
  assertDeep(state, query);
  return state.nodeIndex === 0;
}
function firstOfType(query, _1, _2, _3, state) {
  assertDeep(state, query);
  return state.typeIndex === 0;
}
function has(query, node3, _1, _2, state) {
  const fragment = { type: "root", children: parent(node3) ? node3.children : [] };
  const childState = {
    ...state,
    // Not found yet.
    found: false,
    // Do walk deep.
    shallow: false,
    // One result is enough.
    one: true,
    scopeNodes: [node3],
    results: [],
    rootQuery: queryToSelectors(query.value)
  };
  walk(childState, fragment);
  return childState.results.length > 0;
}
function lastChild(query, _1, _2, _3, state) {
  assertDeep(state, query);
  return typeof state.nodeCount === "number" && state.nodeIndex === state.nodeCount - 1;
}
function lastOfType(query, _1, _2, _3, state) {
  assertDeep(state, query);
  return typeof state.typeCount === "number" && state.typeIndex === state.typeCount - 1;
}
function matches(query, node3, _1, _2, state) {
  const childState = {
    ...state,
    // Not found yet.
    found: false,
    // Do walk deep.
    shallow: false,
    // One result is enough.
    one: true,
    scopeNodes: [node3],
    results: [],
    rootQuery: queryToSelectors(query.value)
  };
  walk(childState, node3);
  return childState.results[0] === node3;
}
function not(query, node3, index4, parent2, state) {
  return !matches(query, node3, index4, parent2, state);
}
function nthChild(query, _1, _2, _3, state) {
  const fn = getCachedNthCheck(query);
  assertDeep(state, query);
  return typeof state.nodeIndex === "number" && fn(state.nodeIndex);
}
function nthLastChild(query, _1, _2, _3, state) {
  const fn = getCachedNthCheck(query);
  assertDeep(state, query);
  return typeof state.nodeCount === "number" && typeof state.nodeIndex === "number" && fn(state.nodeCount - state.nodeIndex - 1);
}
function nthLastOfType(query, _1, _2, _3, state) {
  const fn = getCachedNthCheck(query);
  assertDeep(state, query);
  return typeof state.typeIndex === "number" && typeof state.typeCount === "number" && fn(state.typeCount - 1 - state.typeIndex);
}
function nthOfType(query, _1, _2, _3, state) {
  const fn = getCachedNthCheck(query);
  assertDeep(state, query);
  return typeof state.typeIndex === "number" && fn(state.typeIndex);
}
function onlyChild(query, _1, _2, _3, state) {
  assertDeep(state, query);
  return state.nodeCount === 1;
}
function onlyOfType(query, _1, _2, _3, state) {
  assertDeep(state, query);
  return state.typeCount === 1;
}
function root(_1, node3, _2, parent2) {
  return node3 && !parent2;
}
function scope(_1, node3, _2, _3, state) {
  return node3 && state.scopeNodes.includes(node3);
}
function invalidPseudo() {
  throw new Error("Invalid pseudo-selector");
}
function unknownPseudo(query) {
  if (query.name) {
    throw new Error("Unknown pseudo-selector `" + query.name + "`");
  }
  throw new Error("Unexpected pseudo-element or empty pseudo-class");
}
function assertDeep(state, query) {
  if (state.shallow) {
    throw new Error("Cannot use `:" + query.name + "` without parent");
  }
}
function getCachedNthCheck(query) {
  let fn = query._cachedFn;
  if (!fn) {
    fn = nthCheck2(query.value);
    query._cachedFn = fn;
  }
  return fn;
}

// ../../node_modules/unist-util-select/lib/test.js
function test(query, node3, index4, parent2, state) {
  if (query.id) throw new Error("Invalid selector: id");
  if (query.classNames) throw new Error("Invalid selector: class");
  return Boolean(
    node3 && (!query.tagName || name2(query, node3)) && (!query.attrs || attribute(query, node3)) && (!query.pseudos || pseudo(query, node3, index4, parent2, state))
  );
}

// ../../node_modules/unist-util-select/lib/walk.js
var empty3 = [];
function queryToSelectors(query) {
  if (query === null) {
    return { type: "selectors", selectors: [] };
  }
  if (query.type === "ruleSet") {
    return { type: "selectors", selectors: [query] };
  }
  return query;
}
function walk(state, tree) {
  if (tree) {
    one(state, [], tree, void 0, void 0);
  }
}
function one(state, currentRules, node3, index4, parentNode) {
  let nestResult = {
    directChild: void 0,
    descendant: void 0,
    adjacentSibling: void 0,
    generalSibling: void 0
  };
  nestResult = applySelectors(
    state,
    // Try the root rules for this node too.
    combine(currentRules, state.rootQuery.selectors),
    node3,
    index4,
    parentNode
  );
  if (parent(node3) && !state.shallow && !(state.one && state.found)) {
    all(state, nestResult, node3);
  }
  return nestResult;
}
function all(state, nest, node3) {
  const fromParent = combine(nest.descendant, nest.directChild);
  let fromSibling;
  let index4 = -1;
  const total = { count: 0, types: /* @__PURE__ */ new Map() };
  const before = { count: 0, types: /* @__PURE__ */ new Map() };
  while (++index4 < node3.children.length) {
    count(total, node3.children[index4]);
  }
  index4 = -1;
  while (++index4 < node3.children.length) {
    const child = node3.children[index4];
    const name3 = child.type.toUpperCase();
    state.nodeIndex = before.count;
    state.typeIndex = before.types.get(name3) || 0;
    state.nodeCount = total.count;
    state.typeCount = total.types.get(name3);
    const forSibling = combine(fromParent, fromSibling);
    const nest2 = one(state, forSibling, node3.children[index4], index4, node3);
    fromSibling = combine(nest2.generalSibling, nest2.adjacentSibling);
    if (state.one && state.found) {
      break;
    }
    count(before, node3.children[index4]);
  }
}
function applySelectors(state, rules, node3, index4, parent2) {
  const nestResult = {
    directChild: void 0,
    descendant: void 0,
    adjacentSibling: void 0,
    generalSibling: void 0
  };
  let selectorIndex = -1;
  while (++selectorIndex < rules.length) {
    const ruleSet = rules[selectorIndex];
    if (state.one && state.found) {
      break;
    }
    if (state.shallow && ruleSet.rule.rule) {
      throw new Error("Expected selector without nesting");
    }
    if (test(ruleSet.rule, node3, index4, parent2, state)) {
      const nest = ruleSet.rule.rule;
      if (nest) {
        const rule = { type: "ruleSet", rule: nest };
        const label = nest.nestingOperator === "+" ? "adjacentSibling" : nest.nestingOperator === "~" ? "generalSibling" : nest.nestingOperator === ">" ? "directChild" : "descendant";
        add(nestResult, label, rule);
      } else {
        state.found = true;
        if (!state.results.includes(node3)) {
          state.results.push(node3);
        }
      }
    }
    if (ruleSet.rule.nestingOperator === null) {
      add(nestResult, "descendant", ruleSet);
    } else if (ruleSet.rule.nestingOperator === "~") {
      add(nestResult, "generalSibling", ruleSet);
    }
  }
  return nestResult;
}
function combine(left2, right2) {
  return left2 && right2 && left2.length > 0 && right2.length > 0 ? [...left2, ...right2] : left2 && left2.length > 0 ? left2 : right2 && right2.length > 0 ? right2 : empty3;
}
function add(nest, field, rule) {
  const list6 = nest[field];
  if (list6) {
    list6.push(rule);
  } else {
    nest[field] = [rule];
  }
}
function count(counts, node3) {
  const name3 = node3.type.toUpperCase();
  const count2 = (counts.types.get(name3) || 0) + 1;
  counts.count++;
  counts.types.set(name3, count2);
}

// ../../node_modules/unist-util-select/lib/parse.js
var import_css_selector_parser = __toESM(require_lib(), 1);
var parser = new import_css_selector_parser.CssSelectorParser();
parser.registerAttrEqualityMods("~", "^", "$", "*");
parser.registerSelectorPseudos("any", "matches", "not", "has");
parser.registerNestingOperators(">", "+", "~");
function parse2(selector) {
  if (typeof selector !== "string") {
    throw new TypeError("Expected `string` as selector, not `" + selector + "`");
  }
  return parser.parse(selector);
}

// ../../node_modules/unist-util-select/index.js
function matches2(selector, node3) {
  const state = createState(selector, node3);
  state.one = true;
  state.shallow = true;
  walk(state, node3 || void 0);
  return state.results.length > 0;
}
function select(selector, tree) {
  const state = createState(selector, tree);
  state.one = true;
  walk(state, tree || void 0);
  return state.results[0] || null;
}
function selectAll(selector, tree) {
  const state = createState(selector, tree);
  walk(state, tree || void 0);
  return state.results;
}
function createState(selector, tree) {
  return {
    // State of the query.
    rootQuery: queryToSelectors(parse2(selector)),
    results: [],
    scopeNodes: tree ? parent(tree) && // Root in nlcst.
    (tree.type === "RootNode" || tree.type === "root") ? tree.children : [tree] : [],
    one: false,
    shallow: false,
    found: false,
    // State in the tree.
    typeIndex: void 0,
    nodeIndex: void 0,
    typeCount: void 0,
    nodeCount: void 0
  };
}

// ../myst-common/dist/extractParts.js
function coercePart(part) {
  if (!part) {
    return [];
  }
  if (typeof part === "string")
    return coercePart([part]);
  const parts = [];
  part.map((p5) => p5.toLowerCase()).forEach((p5) => {
    parts.push(p5);
    Object.entries(FRONTMATTER_ALIASES).forEach(([alias, value]) => {
      if (p5 === alias || p5 === value) {
        if (!parts.includes(value))
          parts.unshift(value);
        if (!parts.includes(alias))
          parts.push(alias);
      }
    });
  });
  return parts;
}
function selectBlockParts(tree, part) {
  const parts = coercePart(part);
  if (parts.length === 0)
    return [];
  const blockParts = selectAll("block", tree).filter((block5) => {
    var _a6, _b, _c;
    const blockTags = (((_a6 = block5.data) === null || _a6 === void 0 ? void 0 : _a6.tags) && Array.isArray(block5.data.tags) ? block5.data.tags : []).map((tag) => tag === null || tag === void 0 ? void 0 : tag.toLowerCase());
    const blockPart = (_c = (_b = block5.data) === null || _b === void 0 ? void 0 : _b.part) === null || _c === void 0 ? void 0 : _c.toLowerCase();
    return parts.map((p5) => blockPart === p5 || blockTags.includes(p5)).reduce((a2, b) => a2 || b, false);
  });
  return blockParts;
}
function selectFrontmatterParts(frontmatterParts, part) {
  if (!frontmatterParts)
    return [];
  const parts = coercePart(part);
  if (parts.length === 0)
    return [];
  const blockParts = [];
  parts.forEach((p5) => {
    Object.entries(frontmatterParts).forEach(([key2, value]) => {
      if (p5 === key2.toLowerCase())
        blockParts.push(...value.mdast.children);
    });
  });
  return blockParts;
}
function createPartBlock(children, part, opts) {
  var _a6;
  const block5 = { type: "block", children };
  if (!(opts === null || opts === void 0 ? void 0 : opts.removePartData)) {
    (_a6 = block5.data) !== null && _a6 !== void 0 ? _a6 : block5.data = {};
    block5.data.part = part;
  }
  return block5;
}
function forcedRemove(tree, test2) {
  let success = remove(tree, test2);
  if (!success) {
    success = remove(tree, { cascade: false }, test2);
  }
  return success;
}
function extractImplicitPart(tree, part, opts) {
  var _a6;
  const parts = coercePart(part);
  if (parts.length === 0)
    return;
  let insideImplicitPart = false;
  const blockParts = [];
  let paragraphs = [];
  (_a6 = tree.children) === null || _a6 === void 0 ? void 0 : _a6.forEach((child, index4) => {
    var _a7;
    if (insideImplicitPart && child.type === "paragraph") {
      paragraphs.push(copyNode(child));
      child.type = "__part_delete__";
    }
    if (child.type !== "__part_delete__" || index4 === tree.children.length - 1) {
      insideImplicitPart = false;
      if (paragraphs.length > 0) {
        blockParts.push(createPartBlock(paragraphs, parts[0], opts));
        paragraphs = [];
        selectAll("__part_heading__", tree).forEach((node3) => {
          node3.type = "__part_delete__";
        });
      }
    }
    if (child.type === "block") {
      if ((_a7 = child.data) === null || _a7 === void 0 ? void 0 : _a7.part)
        return;
      if (tree.type !== "root")
        return;
      const blockPartsTree = extractImplicitPart(child, parts);
      if (blockPartsTree)
        blockParts.push(...blockPartsTree.children);
    } else if (child.type === "heading" && parts.includes(toText(child).toLowerCase())) {
      insideImplicitPart = true;
      child.type = "__part_heading__";
    }
  });
  selectAll("__part_heading__", tree).forEach((node3) => {
    node3.type = "heading";
  });
  if (blockParts.length === 0)
    return;
  const partsTree = { type: "root", children: blockParts };
  forcedRemove(tree, "__part_delete__");
  return partsTree;
}
function extractPart(tree, part, opts) {
  const partStrings = coercePart(part);
  if (partStrings.length === 0)
    return;
  const frontmatterParts = selectFrontmatterParts(opts === null || opts === void 0 ? void 0 : opts.frontmatterParts, part);
  const blockParts = selectBlockParts(tree, part);
  if (frontmatterParts.length === 0 && blockParts.length === 0) {
    if (opts === null || opts === void 0 ? void 0 : opts.requireExplicitPart)
      return;
    return extractImplicitPart(tree, partStrings);
  }
  const children = copyNode(frontmatterParts.length > 0 ? frontmatterParts : blockParts).map((block5) => {
    var _a6;
    (_a6 = block5.data) !== null && _a6 !== void 0 ? _a6 : block5.data = {};
    block5.data.part = partStrings[0];
    if (block5.data.tags && Array.isArray(block5.data.tags) && block5.data.tags.reduce((a2, t2) => a2 || partStrings.includes(t2.toLowerCase()), false)) {
      block5.data.tags = block5.data.tags.filter((tag) => !partStrings.includes(tag.toLowerCase()));
      if (block5.data.tags.length === 0) {
        delete block5.data.tags;
      }
    }
    if (opts === null || opts === void 0 ? void 0 : opts.removePartData)
      delete block5.data.part;
    if (!(opts === null || opts === void 0 ? void 0 : opts.keepVisibility))
      delete block5.visibility;
    return block5;
  });
  const partsTree = { type: "root", children };
  blockParts.forEach((block5) => {
    block5.type = "__delete__";
  });
  forcedRemove(tree, "__delete__");
  return partsTree;
}

// ../myst-common/dist/indices.js
function parseIndexLine(line2, { single, pair, triple, see, seealso }, vfile2, node3) {
  if (line2.trim().length === 0)
    return;
  const splitLine = line2.split(/(?<!\\):/).map((val) => val.trim().replace("\\:", ":"));
  if (splitLine.length > 2) {
    fileError(vfile2, `Too many colons encountered in index line "${line2}"`, {
      node: node3,
      note: 'Index entry must follow pattern "type: entry; sub entry"'
    });
  } else if (splitLine.length === 2) {
    const [entryType, entryValue] = splitLine;
    if (entryType === "single")
      single.push(entryValue);
    else if (entryType === "pair")
      pair.push(entryValue);
    else if (entryType === "triple")
      triple.push(entryValue);
    else if (entryType === "see")
      see.push(entryValue);
    else if (entryType === "seealso")
      seealso.push(entryValue);
    else {
      fileError(vfile2, `Unknown index entry type "${entryType}"`, {
        node: node3,
        note: "Allowed types include: single, pair, triple, see, and seealso"
      });
    }
  } else {
    single.push(...splitLine[0].split(/(?<!\\),/).map((val) => val.trim().replace("\\,", ",")));
  }
}
function splitEntryValue(entry) {
  const emphasis4 = entry.startsWith("!");
  const splitEntry = entry.replace(/^!/, "").replace(/^\\!/, "!").split(/(?<!\\);/).map((val) => val.trim().replace("\\;", ";")).filter((val) => val !== "");
  return { emphasis: emphasis4, splitEntry };
}
function createIndexEntry(entry, sub2, emphasis4, kind) {
  const subEntry = sub2 ? { value: sub2, kind: kind !== null && kind !== void 0 ? kind : "entry" } : void 0;
  return { entry, subEntry, emphasis: emphasis4 };
}
function createIndexEntries({ single, pair, triple, see, seealso }, vfile2, node3) {
  const entries2 = [];
  single.forEach((singleEntry) => {
    const { emphasis: emphasis4, splitEntry } = splitEntryValue(singleEntry);
    if (splitEntry.length !== 1 && splitEntry.length !== 2) {
      fileError(vfile2, `Unable to parse index "single" entry "${singleEntry}"`, {
        node: node3,
        note: 'Single index entry must follow pattern "entry" or "entry; sub entry"'
      });
    } else {
      const [entry, subEntry] = splitEntry;
      entries2.push(createIndexEntry(entry, subEntry, emphasis4));
    }
  });
  pair.forEach((pairEntry) => {
    const { emphasis: emphasis4, splitEntry } = splitEntryValue(pairEntry);
    if (splitEntry.length !== 2) {
      fileError(vfile2, `Unable to parse index "pair" entry "${pairEntry}"`, {
        node: node3,
        note: 'Pair index entry must follow pattern "entry; sub entry"'
      });
    } else {
      const [entry, subEntry] = splitEntry;
      entries2.push(createIndexEntry(entry, subEntry, emphasis4));
      entries2.push(createIndexEntry(subEntry, entry, emphasis4));
    }
  });
  triple.forEach((tripleEntry) => {
    const { emphasis: emphasis4, splitEntry } = splitEntryValue(tripleEntry);
    if (splitEntry.length !== 3) {
      fileError(vfile2, `Unable to parse index "triple" entry "${tripleEntry}"`, {
        node: node3,
        note: 'Triple index entry must follow pattern "entry one; entry two; entry three"'
      });
    } else {
      entries2.push(createIndexEntry(splitEntry[0], splitEntry[1], emphasis4));
      entries2.push(createIndexEntry(splitEntry[1], splitEntry[0], emphasis4));
      entries2.push(createIndexEntry(splitEntry[1], splitEntry[2], emphasis4));
      entries2.push(createIndexEntry(splitEntry[2], splitEntry[1], emphasis4));
      entries2.push(createIndexEntry(splitEntry[0], splitEntry[2], emphasis4));
      entries2.push(createIndexEntry(splitEntry[2], splitEntry[0], emphasis4));
    }
  });
  const addSeeEntry = (seeEntry, kind) => {
    const { emphasis: emphasis4, splitEntry } = splitEntryValue(seeEntry);
    if (splitEntry.length !== 2) {
      fileError(vfile2, `Unable to parse index "${kind}" entry "${seeEntry}"`, {
        node: node3,
        note: 'See index entry must follow pattern "entry; sub entry"'
      });
    } else {
      const [entry, subEntry] = splitEntry;
      entries2.push(createIndexEntry(entry, subEntry, emphasis4, kind));
    }
  };
  see.forEach((seeEntry) => {
    addSeeEntry(seeEntry, "see");
  });
  seealso.forEach((seealsoEntry) => {
    addSeeEntry(seealsoEntry, "seealso");
  });
  if (entries2.length === 0) {
    fileError(vfile2, "No entries parsed from index directive", { node: node3 });
  }
  return entries2;
}

// ../myst-common/dist/ruleids.js
var RuleId;
(function(RuleId2) {
  RuleId2["validConfigStructure"] = "valid-config-structure";
  RuleId2["siteConfigExists"] = "site-config-exists";
  RuleId2["projectConfigExists"] = "project-config-exists";
  RuleId2["validSiteConfig"] = "valid-site-config";
  RuleId2["validProjectConfig"] = "valid-project-config";
  RuleId2["configHasNoDeprecatedFields"] = "config-has-no-deprecated-fields";
  RuleId2["frontmatterIsYaml"] = "frontmatter-is-yaml";
  RuleId2["validPageFrontmatter"] = "valid-page-frontmatter";
  RuleId2["validFrontmatterExportList"] = "valid-frontmatter-export-list";
  RuleId2["docxRenders"] = "docx-renders";
  RuleId2["jatsRenders"] = "jats-renders";
  RuleId2["mdRenders"] = "md-renders";
  RuleId2["mecaIncludesJats"] = "meca-includes-jats";
  RuleId2["mecaExportsBuilt"] = "meca-exports-built";
  RuleId2["mecaFilesCopied"] = "meca-files-copied";
  RuleId2["pdfBuildCommandsAvailable"] = "pdf-build-commands-available";
  RuleId2["pdfBuildsWithoutErrors"] = "pdf-builds-without-errors";
  RuleId2["pdfBuilds"] = "pdf-builds";
  RuleId2["texRenders"] = "tex-renders";
  RuleId2["exportExtensionCorrect"] = "export-extension-correct";
  RuleId2["exportArticleExists"] = "export-article-exists";
  RuleId2["texParses"] = "tex-parses";
  RuleId2["jatsParses"] = "jats-parses";
  RuleId2["mystFileLoads"] = "myst-file-loads";
  RuleId2["selectedFileIsProcessed"] = "selected-file-is-processed";
  RuleId2["directiveRegistered"] = "directive-registered";
  RuleId2["directiveKnown"] = "directive-known";
  RuleId2["directiveArgumentCorrect"] = "directive-argument-correct";
  RuleId2["directiveOptionsCorrect"] = "directive-options-correct";
  RuleId2["directiveBodyCorrect"] = "directive-body-correct";
  RuleId2["roleRegistered"] = "role-registered";
  RuleId2["roleKnown"] = "role-known";
  RuleId2["roleBodyCorrect"] = "role-body-correct";
  RuleId2["tocContentsExist"] = "toc-contents-exist";
  RuleId2["encounteredLegacyTOC"] = "encountered-legacy-toc";
  RuleId2["validTOCStructure"] = "valid-toc-structure";
  RuleId2["validTOC"] = "valid-toc";
  RuleId2["imageDownloads"] = "image-downloads";
  RuleId2["imageExists"] = "image-exists";
  RuleId2["imageFormatConverts"] = "image-format-converts";
  RuleId2["imageCopied"] = "image-copied";
  RuleId2["imageFormatOptimizes"] = "image-format-optimizes";
  RuleId2["mathLabelLifted"] = "math-label-lifted";
  RuleId2["mathEquationEnvRemoved"] = "math-equation-env-removed";
  RuleId2["mathEqnarrayReplaced"] = "math-eqnarray-replaced";
  RuleId2["mathAlignmentAdjusted"] = "math-alignment-adjusted";
  RuleId2["mathRenders"] = "math-renders";
  RuleId2["referenceTemplateFills"] = "reference-template-fills";
  RuleId2["identifierIsUnique"] = "identifier-is-unique";
  RuleId2["referenceTargetResolves"] = "reference-target-resolves";
  RuleId2["referenceSyntaxValid"] = "reference-syntax-valid";
  RuleId2["referenceTargetExplicit"] = "reference-target-explicit";
  RuleId2["footnoteReferencesDefinition"] = "footnote-references-definition";
  RuleId2["intersphinxReferencesResolve"] = "intersphinx-references-resolve";
  RuleId2["mystLinkValid"] = "myst-link-valid";
  RuleId2["sphinxLinkValid"] = "sphinx-link-valid";
  RuleId2["rridLinkValid"] = "rrid-link-valid";
  RuleId2["rorLinkValid"] = "ror-link-valid";
  RuleId2["wikipediaLinkValid"] = "wikipedia-link-valid";
  RuleId2["doiLinkValid"] = "doi-link-valid";
  RuleId2["linkResolves"] = "link-resolves";
  RuleId2["linkTextExists"] = "link-text-exists";
  RuleId2["notebookAttachmentsResolve"] = "notebook-attachments-resolve";
  RuleId2["notebookOutputCopied"] = "notebook-output-copied";
  RuleId2["mdastSnippetImports"] = "mdast-snippet-imports";
  RuleId2["includeContentFilters"] = "include-content-filters";
  RuleId2["includeContentLoads"] = "include-content-loads";
  RuleId2["gatedNodesJoin"] = "gated-nodes-join";
  RuleId2["glossaryUsesDefinitionList"] = "glossary-uses-definition-list";
  RuleId2["blockMetadataLoads"] = "block-metadata-loads";
  RuleId2["indexEntriesResolve"] = "index-entries-resolve";
  RuleId2["citationIsUnique"] = "citation-is-unique";
  RuleId2["bibFileExists"] = "bib-file-exists";
  RuleId2["citationRenders"] = "citation-renders";
  RuleId2["codeMetadataLifted"] = "code-metadata-lifted";
  RuleId2["codeMetatagsValid"] = "code-metatags-valid";
  RuleId2["codeLangDefined"] = "code-lang-defined";
  RuleId2["codeMetadataLoads"] = "code-metadata-loads";
  RuleId2["inlineCodeMalformed"] = "inline-code-malformed";
  RuleId2["inlineExpressionRenders"] = "inline-expression-renders";
  RuleId2["staticFileCopied"] = "static-file-copied";
  RuleId2["exportFileCopied"] = "export-file-copied";
  RuleId2["sourceFileCopied"] = "source-file-copied";
  RuleId2["templateFileCopied"] = "template-file-copied";
  RuleId2["staticActionFileCopied"] = "static-action-file-copied";
  RuleId2["pluginLoads"] = "plugin-loads";
  RuleId2["containerChildrenValid"] = "container-children-valid";
  RuleId2["mystJsonValid"] = "myst-json-valid";
  RuleId2["codeCellExecutes"] = "code-cell-executes";
  RuleId2["inlineExpressionExecutes"] = "inline-expression-executes";
})(RuleId || (RuleId = {}));
var RULE_ID_DESCRIPTIONS = {
  // Frontmatter rules
  [RuleId.validConfigStructure]: "Configuration file structure is valid and can be parsed",
  [RuleId.siteConfigExists]: "Site configuration is found in project",
  [RuleId.projectConfigExists]: "Project configuration file exists in the directory",
  [RuleId.validSiteConfig]: "Site configuration passes validation",
  [RuleId.validProjectConfig]: "Project configuration passes validation",
  [RuleId.configHasNoDeprecatedFields]: "Configuration uses current field names without deprecated options",
  [RuleId.frontmatterIsYaml]: "Frontmatter can be parsed as valid YAML",
  [RuleId.validPageFrontmatter]: "Page frontmatter passes validation",
  [RuleId.validFrontmatterExportList]: "Export list in frontmatter is valid for the specified format",
  // Export rules
  [RuleId.docxRenders]: "DOCX document renders without errors",
  [RuleId.jatsRenders]: "JATS XML renders without errors",
  [RuleId.mdRenders]: "Markdown output renders without errors",
  [RuleId.mecaIncludesJats]: "MECA bundle contains required JATS file",
  [RuleId.mecaExportsBuilt]: "MECA archive builds without errors",
  [RuleId.mecaFilesCopied]: "MECA files copy to output successfully",
  [RuleId.pdfBuildCommandsAvailable]: "Required PDF build tools (LaTeX/Typst) are installed",
  [RuleId.pdfBuildsWithoutErrors]: "PDF compilation completes without LaTeX/Typst errors",
  [RuleId.pdfBuilds]: "PDF file generates successfully",
  [RuleId.texRenders]: "LaTeX/Typst document renders without errors",
  [RuleId.exportExtensionCorrect]: "Export file has the correct extension for its format",
  [RuleId.exportArticleExists]: "Article file specified in export configuration exists",
  // Parse rules
  [RuleId.texParses]: "LaTeX content parses without syntax errors",
  [RuleId.jatsParses]: "JATS XML parses without syntax errors",
  [RuleId.mystFileLoads]: "MyST markdown file loads and parses successfully",
  [RuleId.selectedFileIsProcessed]: "File specified for processing is found and processed",
  // Directive and role rules
  [RuleId.directiveRegistered]: "Directive is registered without name conflicts",
  [RuleId.directiveKnown]: "Directive name is recognized",
  [RuleId.directiveArgumentCorrect]: "Directive argument matches specification",
  [RuleId.directiveOptionsCorrect]: "Directive options are valid and properly formatted",
  [RuleId.directiveBodyCorrect]: "Directive body content meets requirements",
  [RuleId.roleRegistered]: "Role is registered without name conflicts",
  [RuleId.roleKnown]: "Role name is recognized",
  [RuleId.roleBodyCorrect]: "Role content meets requirements",
  // Project structure rules
  [RuleId.tocContentsExist]: "Files referenced in table of contents exist",
  [RuleId.encounteredLegacyTOC]: "Table of contents uses deprecated format",
  [RuleId.validTOCStructure]: "Table of contents structure passes schema validation",
  [RuleId.validTOC]: "Table of contents is valid",
  // Image rules
  [RuleId.imageDownloads]: "Remote image downloads successfully",
  [RuleId.imageExists]: "Image file exists at specified path",
  [RuleId.imageFormatConverts]: "Image format converts successfully using available tools",
  [RuleId.imageCopied]: "Image copies to output directory successfully",
  [RuleId.imageFormatOptimizes]: "Image format optimizes successfully",
  // Math rules
  [RuleId.mathLabelLifted]: "Math equation label extracts successfully",
  [RuleId.mathEquationEnvRemoved]: "Nested equation environment removes successfully",
  [RuleId.mathEqnarrayReplaced]: "Deprecated eqnarray environment replaces with align",
  [RuleId.mathAlignmentAdjusted]: "Math alignment adjusts successfully",
  [RuleId.mathRenders]: "Math expression renders with KaTeX without errors",
  // Reference rules
  [RuleId.referenceTemplateFills]: "Reference template populates with values successfully",
  [RuleId.identifierIsUnique]: "Identifier is unique across the project",
  [RuleId.referenceTargetResolves]: "Cross-reference target is found",
  [RuleId.referenceSyntaxValid]: "Reference syntax is valid",
  [RuleId.referenceTargetExplicit]: "Reference target is explicitly specified",
  [RuleId.footnoteReferencesDefinition]: "Footnote reference links to an existing definition",
  [RuleId.intersphinxReferencesResolve]: "Intersphinx cross-reference resolves to external documentation",
  // Link rules
  [RuleId.mystLinkValid]: "MyST-formatted link is valid",
  [RuleId.sphinxLinkValid]: "Sphinx-style link is valid",
  [RuleId.rridLinkValid]: "RRID (Research Resource Identifier) link is valid",
  [RuleId.rorLinkValid]: "ROR (Research Organization Registry) link is valid",
  [RuleId.wikipediaLinkValid]: "Wikipedia link is valid",
  [RuleId.doiLinkValid]: "DOI (Digital Object Identifier) link is valid",
  [RuleId.linkResolves]: "Link URL resolves successfully",
  [RuleId.linkTextExists]: "Link has non-empty text content",
  // Notebook rules
  [RuleId.notebookAttachmentsResolve]: "Jupyter notebook attachments resolve and decode successfully",
  [RuleId.notebookOutputCopied]: "Notebook cell output copies to disk successfully",
  // Content rules
  [RuleId.mdastSnippetImports]: "MDAST snippet imports successfully",
  [RuleId.includeContentFilters]: "Include directive filters apply correctly",
  [RuleId.includeContentLoads]: "Include directive loads target file successfully without circular dependencies",
  [RuleId.gatedNodesJoin]: "Conditional content nodes merge correctly",
  [RuleId.glossaryUsesDefinitionList]: "Glossary directive contains a definition list",
  [RuleId.blockMetadataLoads]: "Block-level metadata loads and parses successfully",
  [RuleId.indexEntriesResolve]: "Index entries resolve successfully",
  // Citation rules
  [RuleId.citationIsUnique]: "Citation identifier is unique across bibliography files",
  [RuleId.bibFileExists]: "Bibliography file specified in configuration exists",
  [RuleId.citationRenders]: "Citation processes with citation-js successfully",
  // Code rules
  [RuleId.codeMetadataLifted]: "Code cell metadata extracts without conflicts",
  [RuleId.codeMetatagsValid]: "Code cell tags are valid",
  [RuleId.codeLangDefined]: "Code block has a language specified",
  [RuleId.codeMetadataLoads]: "Code metadata loads successfully",
  [RuleId.inlineCodeMalformed]: "Inline code has either value or children but not both",
  [RuleId.inlineExpressionRenders]: "Inline expression evaluates successfully",
  // Static file rules
  [RuleId.staticFileCopied]: "Static file copies to output successfully",
  [RuleId.exportFileCopied]: "Export output file copies to public directory successfully",
  [RuleId.sourceFileCopied]: "Source file copies to output successfully",
  [RuleId.templateFileCopied]: "Template file copies successfully",
  [RuleId.staticActionFileCopied]: "Static action file copies successfully",
  // Plugins
  [RuleId.pluginLoads]: "Plugin loads and executes without errors",
  // Container rules
  [RuleId.containerChildrenValid]: "Container has valid child elements",
  // File rules
  [RuleId.mystJsonValid]: "MyST JSON file is valid",
  [RuleId.codeCellExecutes]: "Code cell executes without errors",
  [RuleId.inlineExpressionExecutes]: "Inline expression evaluates without errors"
};

// ../../node_modules/unist-util-visit-parents/lib/color.js
function color(d) {
  return "\x1B[33m" + d + "\x1B[39m";
}

// ../../node_modules/unist-util-visit-parents/lib/index.js
var CONTINUE = true;
var EXIT = false;
var SKIP = "skip";
var visitParents = (
  /**
   * @type {(
   *   (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: BuildVisitor<Tree, Check>, reverse?: boolean | null | undefined) => void) &
   *   (<Tree extends Node>(tree: Tree, visitor: BuildVisitor<Tree>, reverse?: boolean | null | undefined) => void)
   * )}
   */
  /**
   * @param {Node} tree
   * @param {Test} test
   * @param {Visitor<Node>} visitor
   * @param {boolean | null | undefined} [reverse]
   * @returns {void}
   */
  (function(tree, test2, visitor, reverse) {
    if (typeof test2 === "function" && typeof visitor !== "function") {
      reverse = visitor;
      visitor = test2;
      test2 = null;
    }
    const is4 = convert(test2);
    const step = reverse ? -1 : 1;
    factory(tree, void 0, [])();
    function factory(node3, index4, parents) {
      const value = node3 && typeof node3 === "object" ? node3 : {};
      if (typeof value.type === "string") {
        const name3 = (
          // `hast`
          typeof value.tagName === "string" ? value.tagName : (
            // `xast`
            typeof value.name === "string" ? value.name : void 0
          )
        );
        Object.defineProperty(visit3, "name", {
          value: "node (" + color(node3.type + (name3 ? "<" + name3 + ">" : "")) + ")"
        });
      }
      return visit3;
      function visit3() {
        let result = [];
        let subresult;
        let offset;
        let grandparents;
        if (!test2 || is4(node3, index4, parents[parents.length - 1] || null)) {
          result = toResult(visitor(node3, parents));
          if (result[0] === EXIT) {
            return result;
          }
        }
        if (node3.children && result[0] !== SKIP) {
          offset = (reverse ? node3.children.length : -1) + step;
          grandparents = parents.concat(node3);
          while (offset > -1 && offset < node3.children.length) {
            subresult = factory(node3.children[offset], offset, grandparents)();
            if (subresult[0] === EXIT) {
              return subresult;
            }
            offset = typeof subresult[1] === "number" ? subresult[1] : offset + step;
          }
        }
        return result;
      }
    }
  })
);
function toResult(value) {
  if (Array.isArray(value)) {
    return value;
  }
  if (typeof value === "number") {
    return [CONTINUE, value];
  }
  return [value];
}

// ../../node_modules/unist-util-visit/lib/index.js
var visit = (
  /**
   * @type {(
   *   (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: BuildVisitor<Tree, Check>, reverse?: boolean | null | undefined) => void) &
   *   (<Tree extends Node>(tree: Tree, visitor: BuildVisitor<Tree>, reverse?: boolean | null | undefined) => void)
   * )}
   */
  /**
   * @param {Node} tree
   * @param {Test} test
   * @param {Visitor} visitor
   * @param {boolean | null | undefined} [reverse]
   * @returns {void}
   */
  (function(tree, test2, visitor, reverse) {
    if (typeof test2 === "function" && typeof visitor !== "function") {
      reverse = visitor;
      visitor = test2;
      test2 = null;
    }
    visitParents(tree, test2, overload, reverse);
    function overload(node3, parents) {
      const parent2 = parents[parents.length - 1];
      return visitor(
        node3,
        parent2 ? parent2.children.indexOf(node3) : null,
        parent2
      );
    }
  })
);

// ../myst-common/dist/selectNodes.js
function isTargetIdentifierNode(node3) {
  const nonTargetTypes = [
    "crossReference",
    "cite",
    "footnoteDefinition",
    "footnoteReference",
    "captionNumber",
    "link"
  ];
  return !nonTargetTypes.includes(node3.type);
}
var hiddenNodes = /* @__PURE__ */ new Set(["comment", "mystComment"]);
function selectHeadingNodes(mdast2, identifier, maxNodes) {
  let begin = false;
  let htmlId = void 0;
  const nodes = [];
  visit(mdast2, (node3) => {
    if (begin && node3.type === "heading" || maxNodes && nodes.length >= maxNodes) {
      return EXIT;
    }
    if (node3.identifier === identifier && node3.type === "heading") {
      begin = true;
      htmlId = node3.html_id || node3.identifier;
    }
    if (begin) {
      if (!hiddenNodes.has(node3.type))
        nodes.push(node3);
      return SKIP;
    }
  });
  return { htmlId, nodes };
}
function selectDefinitionTerm(mdast2, identifier, maxNodes) {
  var _a6, _b;
  let begin = false;
  const nodes = [];
  visit(mdast2, (node3) => {
    if (begin && node3.type === "definitionTerm") {
      if (nodes.length > 1)
        return EXIT;
    } else if (begin && node3.type !== "definitionDescription") {
      return EXIT;
    }
    if (node3.identifier === identifier && node3.type === "definitionTerm") {
      nodes.push(node3);
      begin = true;
    }
    if (begin) {
      if (node3.type === "definitionDescription")
        nodes.push(node3);
      return SKIP;
    }
  });
  return {
    htmlId: ((_a6 = nodes === null || nodes === void 0 ? void 0 : nodes[0]) === null || _a6 === void 0 ? void 0 : _a6.html_id) || ((_b = nodes === null || nodes === void 0 ? void 0 : nodes[0]) === null || _b === void 0 ? void 0 : _b.identifier),
    nodes: [{ type: "definitionList", key: "dl", children: nodes.slice(0, maxNodes) }]
  };
}
function selectMdastNodes(mdast2, identifier, maxNodes) {
  if (maxNodes === 0)
    return { nodes: [] };
  const node3 = selectAll(`[identifier=${identifier}],[key=${identifier}]`, mdast2).find((n) => isTargetIdentifierNode(n));
  if (!node3)
    return { nodes: [] };
  switch (node3.type) {
    case "heading":
      return selectHeadingNodes(mdast2, identifier, maxNodes);
    case "definitionTerm":
      return selectDefinitionTerm(mdast2, identifier, maxNodes);
    default:
      return { htmlId: node3.html_id || node3.identifier, nodes: [node3] };
  }
}

// ../myst-common/dist/templates.js
var TemplateKind;
(function(TemplateKind2) {
  TemplateKind2["tex"] = "tex";
  TemplateKind2["typst"] = "typst";
  TemplateKind2["docx"] = "docx";
  TemplateKind2["site"] = "site";
})(TemplateKind || (TemplateKind = {}));
var TemplateOptionType;
(function(TemplateOptionType2) {
  TemplateOptionType2["boolean"] = "boolean";
  TemplateOptionType2["string"] = "string";
  TemplateOptionType2["number"] = "number";
  TemplateOptionType2["choice"] = "choice";
  TemplateOptionType2["file"] = "file";
})(TemplateOptionType || (TemplateOptionType = {}));

// ../myst-common/dist/types.js
var NotebookCell;
(function(NotebookCell2) {
  NotebookCell2["content"] = "notebook-content";
  NotebookCell2["code"] = "notebook-code";
})(NotebookCell || (NotebookCell = {}));
var NotebookCellTags;
(function(NotebookCellTags2) {
  NotebookCellTags2["removeStderr"] = "remove-stderr";
  NotebookCellTags2["removeStdout"] = "remove-stdout";
  NotebookCellTags2["hideCell"] = "hide-cell";
  NotebookCellTags2["hideInput"] = "hide-input";
  NotebookCellTags2["hideOutput"] = "hide-output";
  NotebookCellTags2["removeCell"] = "remove-cell";
  NotebookCellTags2["removeInput"] = "remove-input";
  NotebookCellTags2["removeOutput"] = "remove-output";
  NotebookCellTags2["skipExecution"] = "skip-execution";
  NotebookCellTags2["raisesException"] = "raises-exception";
})(NotebookCellTags || (NotebookCellTags = {}));
var ParseTypesEnum;
(function(ParseTypesEnum2) {
  ParseTypesEnum2["string"] = "string";
  ParseTypesEnum2["number"] = "number";
  ParseTypesEnum2["boolean"] = "boolean";
  ParseTypesEnum2["parsed"] = "parsed";
})(ParseTypesEnum || (ParseTypesEnum = {}));
var TargetKind;
(function(TargetKind3) {
  TargetKind3["heading"] = "heading";
  TargetKind3["equation"] = "equation";
  TargetKind3["subequation"] = "subequation";
  TargetKind3["figure"] = "figure";
  TargetKind3["table"] = "table";
  TargetKind3["code"] = "code";
})(TargetKind || (TargetKind = {}));
var AdmonitionKind;
(function(AdmonitionKind2) {
  AdmonitionKind2["admonition"] = "admonition";
  AdmonitionKind2["attention"] = "attention";
  AdmonitionKind2["caution"] = "caution";
  AdmonitionKind2["danger"] = "danger";
  AdmonitionKind2["error"] = "error";
  AdmonitionKind2["important"] = "important";
  AdmonitionKind2["hint"] = "hint";
  AdmonitionKind2["note"] = "note";
  AdmonitionKind2["seealso"] = "seealso";
  AdmonitionKind2["tip"] = "tip";
  AdmonitionKind2["warning"] = "warning";
})(AdmonitionKind || (AdmonitionKind = {}));

// ../myst-config/dist/project/types.js
var PluginTypes;
(function(PluginTypes2) {
  PluginTypes2["javascript"] = "javascript";
  PluginTypes2["executable"] = "executable";
})(PluginTypes || (PluginTypes = {}));

// ../myst-config/dist/errorRules/validators.js
var ERROR_RULE_KEY_OBJECT = {
  required: ["id"],
  optional: ["severity", "keys"],
  alias: {
    rule: "id",
    key: "keys"
  }
};
function validateErrorRule(input3, opts) {
  if (typeof input3 === "string") {
    input3 = { id: input3 };
  }
  const value = validateObjectKeys(input3, ERROR_RULE_KEY_OBJECT, {
    ...opts
  });
  if (value === void 0)
    return void 0;
  const id = validateString(value.id, incrementOptions("id", opts));
  const severity = validateChoice(value.severity || "ignore", {
    ...incrementOptions("severity", opts),
    choices: ["ignore", "warn", "error"]
  });
  if (!id || !severity)
    return void 0;
  const output2 = { id, severity };
  if (!defined(value.keys))
    return [output2];
  const keyList = validateList(value.keys, { ...incrementOptions("keys", opts), coerce: true }, (key2, ind) => {
    return validateString(key2, incrementOptions(`keys.${ind}`, opts));
  });
  if (!keyList)
    return void 0;
  return keyList.map((key2) => ({ ...output2, key: key2 }));
}
function validateErrorRuleList(input3, opts) {
  if (input3 === void 0)
    return void 0;
  const output2 = validateList(input3, { coerce: true, ...incrementOptions("error_rules", opts) }, (exp, ind) => {
    return validateErrorRule(exp, incrementOptions(`error_rules.${ind}`, opts));
  });
  if (!output2)
    return void 0;
  return output2.flat();
}

// ../myst-config/dist/project/validators.js
var PROJECT_CONFIG_KEYS = {
  optional: ["remote", "index", "exclude", "plugins", "error_rules", ...PROJECT_FRONTMATTER_KEYS],
  alias: FRONTMATTER_ALIASES
};
function validatePluginInfo(input3, opts) {
  if (typeof input3 === "string") {
    input3 = { type: PluginTypes.javascript, path: input3 };
  }
  const value = validateObjectKeys(input3, { required: ["type", "path"] }, opts);
  if (value === void 0) {
    return void 0;
  }
  const path45 = validateString(value.path, incrementOptions("path", opts));
  if (path45 === void 0) {
    return void 0;
  }
  const type2 = validateEnum(value.type, {
    ...incrementOptions("type", opts),
    enum: PluginTypes
  });
  if (type2 === void 0) {
    return void 0;
  }
  return { type: type2, path: path45 };
}
function validateProjectConfigKeys(input3, opts) {
  const output2 = validateProjectFrontmatterKeys(input3, opts);
  if (defined(input3.remote)) {
    output2.remote = validateString(input3.remote, incrementOptions("remote", opts));
  }
  if (defined(input3.index)) {
    output2.index = validateString(input3.index, incrementOptions("index", opts));
  }
  if (defined(input3.exclude)) {
    output2.exclude = validateList(input3.exclude, { coerce: true, ...incrementOptions("exclude", opts) }, (value, index4) => {
      return validateString(value, incrementOptions(`exclude.${index4}`, opts));
    });
  }
  if (defined(input3.plugins)) {
    output2.plugins = validateList(input3.plugins, incrementOptions("plugins", opts), (file, index4) => {
      return validatePluginInfo(file, incrementOptions(`plugins.${index4}`, opts));
    });
  }
  if (defined(input3.error_rules)) {
    const error_rules = validateErrorRuleList(input3.error_rules, opts);
    if (error_rules)
      output2.error_rules = error_rules;
  }
  return output2;
}
function validateProjectConfig(input3, opts) {
  const value = validateObjectKeys(input3, PROJECT_CONFIG_KEYS, opts) || {};
  return validateProjectConfigKeys(value, opts);
}

// ../myst-config/dist/site/validators.js
var SITE_CONFIG_KEYS = {
  optional: [...SITE_FRONTMATTER_KEYS, "projects", "nav", "actions", "domains", "template"],
  alias: FRONTMATTER_ALIASES
};
function validateUrlOrPath(input3, opts) {
  const value = validateString(input3, opts);
  if (!defined(value))
    return void 0;
  if (value.match("^(/[a-zA-Z0-9._-]+)+$"))
    return value;
  const urlValue = validateUrl(value, { ...opts, suppressErrors: true });
  if (!urlValue) {
    return validationError(`invalid URL or relative path: ${value}`, opts);
  }
  return urlValue;
}
function validateSiteProject(input3, opts) {
  const value = validateObjectKeys(input3, { required: ["slug"], optional: ["remote", "path"] }, opts);
  if (value === void 0)
    return void 0;
  const slug = validateString(value.slug, {
    ...incrementOptions("slug", opts),
    regex: "^[a-zA-Z0-9._-]+$"
  });
  if (!slug)
    return void 0;
  const output2 = { slug };
  if (defined(value.path)) {
    output2.path = validateString(value.path, incrementOptions("path", opts));
  }
  if (defined(value.remote)) {
    output2.remote = validateString(value.remote, incrementOptions("remote", opts));
  }
  return output2;
}
function validateSiteNavItem(input3, opts) {
  if (validateObject(input3, opts) === void 0)
    return void 0;
  if (defined(input3.children)) {
    const value2 = validateKeys(input3, { required: ["title", "children"] }, opts);
    if (value2 === void 0)
      return void 0;
    const title2 = validateString(value2.title, incrementOptions("title", opts));
    const children = validateList(value2.children, incrementOptions("children", opts), (child, index4) => {
      return validateSiteNavItem(child, incrementOptions(`children.${index4}`, opts));
    });
    if (title2 === void 0 || !children)
      return void 0;
    return { title: title2, children };
  }
  const value = validateKeys(input3, { required: ["title", "url"] }, opts);
  if (value === void 0)
    return void 0;
  const title = validateString(value.title, incrementOptions("title", opts));
  const url = validateUrlOrPath(value.url, incrementOptions("url", opts));
  if (title === void 0 || !url)
    return void 0;
  return { title, url };
}
function validateSiteAction(input3, opts) {
  const value = validateObjectKeys(input3, { required: ["title", "url"], optional: ["static"] }, opts);
  if (value === void 0)
    return void 0;
  const title = validateString(value.title, incrementOptions("title", opts));
  const url = validateString(value.url, incrementOptions("url", opts));
  if (!title || !url)
    return void 0;
  const output2 = { title, url };
  if (defined(value.static)) {
    output2.static = validateBoolean(value.static, incrementOptions("static", opts));
  }
  return output2;
}
function validateSiteConfigKeys(value, opts) {
  const output2 = validateSiteFrontmatterKeys(value, opts) || {};
  if (defined(value.projects)) {
    output2.projects = validateList(value.projects, incrementOptions("projects", opts), (proj, index4) => {
      return validateSiteProject(proj, incrementOptions(`projects.${index4}`, opts));
    });
  }
  if (defined(value.nav)) {
    output2.nav = validateList(value.nav, incrementOptions("nav", opts), (item, index4) => {
      return validateSiteNavItem(item, incrementOptions(`nav.${index4}`, opts));
    });
  }
  if (defined(value.actions)) {
    output2.actions = validateList(value.actions, incrementOptions("actions", opts), (action, index4) => {
      return validateSiteAction(action, incrementOptions(`actions.${index4}`, opts));
    });
  }
  if (defined(value.domains)) {
    const domains = validateList(value.domains, incrementOptions("domains", opts), (domain, index4) => {
      return validateSubdomain(domain, incrementOptions(`domains.${index4}`, opts));
    });
    if (domains)
      output2.domains = [...new Set(domains)];
  }
  if (defined(value.template)) {
    output2.template = validateString(value.template, incrementOptions("template", opts));
  }
  return output2;
}
function validateSiteConfig(input3, opts) {
  const valueAsObject = validateObject(input3, opts);
  if (valueAsObject === void 0)
    return void 0;
  const value = validateKeys(valueAsObject, SITE_CONFIG_KEYS, {
    ...opts,
    returnInvalidPartial: true,
    // Template options will appear as extra keys here; no need for warnings.
    suppressWarnings: true
  });
  if (value === void 0)
    return void 0;
  Object.keys(valueAsObject).filter((key2) => !SITE_CONFIG_KEYS.optional.includes(key2)).forEach((key2) => {
    var _a6, _b, _c;
    if ((_a6 = value.options) === null || _a6 === void 0 ? void 0 : _a6[key2]) {
      (_b = opts.errorLogFn) === null || _b === void 0 ? void 0 : _b.call(opts, `duplicate value for site option ${key2}`);
    } else {
      (_c = opts.warningLogFn) === null || _c === void 0 ? void 0 : _c.call(opts, `extra site options should be nested under "options" key: ${key2}`);
      value.options = { ...value.options, [key2]: valueAsObject[key2] };
    }
  });
  return validateSiteConfigKeys(value, opts);
}

// ../../node_modules/vfile/lib/index.js
var import_is_buffer = __toESM(require_is_buffer(), 1);

// ../../node_modules/unist-util-stringify-position/lib/index.js
function stringifyPosition(value) {
  if (!value || typeof value !== "object") {
    return "";
  }
  if ("position" in value || "type" in value) {
    return position(value.position);
  }
  if ("start" in value || "end" in value) {
    return position(value);
  }
  if ("line" in value || "column" in value) {
    return point(value);
  }
  return "";
}
function point(point6) {
  return index(point6 && point6.line) + ":" + index(point6 && point6.column);
}
function position(pos) {
  return point(pos && pos.start) + "-" + point(pos && pos.end);
}
function index(value) {
  return value && typeof value === "number" ? value : 1;
}

// ../../node_modules/vfile-message/lib/index.js
var VFileMessage = class extends Error {
  /**
   * Create a message for `reason` at `place` from `origin`.
   *
   * When an error is passed in as `reason`, the `stack` is copied.
   *
   * @param {string | Error | VFileMessage} reason
   *   Reason for message, uses the stack and message of the error if given.
   *
   *   > 👉 **Note**: you should use markdown.
   * @param {Node | NodeLike | Position | Point | null | undefined} [place]
   *   Place in file where the message occurred.
   * @param {string | null | undefined} [origin]
   *   Place in code where the message originates (example:
   *   `'my-package:my-rule'` or `'my-rule'`).
   * @returns
   *   Instance of `VFileMessage`.
   */
  // To do: next major: expose `undefined` everywhere instead of `null`.
  constructor(reason, place, origin) {
    const parts = [null, null];
    let position6 = {
      // @ts-expect-error: we always follows the structure of `position`.
      start: { line: null, column: null },
      // @ts-expect-error: "
      end: { line: null, column: null }
    };
    super();
    if (typeof place === "string") {
      origin = place;
      place = void 0;
    }
    if (typeof origin === "string") {
      const index4 = origin.indexOf(":");
      if (index4 === -1) {
        parts[1] = origin;
      } else {
        parts[0] = origin.slice(0, index4);
        parts[1] = origin.slice(index4 + 1);
      }
    }
    if (place) {
      if ("type" in place || "position" in place) {
        if (place.position) {
          position6 = place.position;
        }
      } else if ("start" in place || "end" in place) {
        position6 = place;
      } else if ("line" in place || "column" in place) {
        position6.start = place;
      }
    }
    this.name = stringifyPosition(place) || "1:1";
    this.message = typeof reason === "object" ? reason.message : reason;
    this.stack = "";
    if (typeof reason === "object" && reason.stack) {
      this.stack = reason.stack;
    }
    this.reason = this.message;
    this.fatal;
    this.line = position6.start.line;
    this.column = position6.start.column;
    this.position = position6;
    this.source = parts[0];
    this.ruleId = parts[1];
    this.file;
    this.actual;
    this.expected;
    this.url;
    this.note;
  }
};
VFileMessage.prototype.file = "";
VFileMessage.prototype.name = "";
VFileMessage.prototype.reason = "";
VFileMessage.prototype.message = "";
VFileMessage.prototype.stack = "";
VFileMessage.prototype.fatal = null;
VFileMessage.prototype.column = null;
VFileMessage.prototype.line = null;
VFileMessage.prototype.source = null;
VFileMessage.prototype.ruleId = null;
VFileMessage.prototype.position = null;

// ../../node_modules/vfile/lib/minpath.js
var import_path = __toESM(require("path"), 1);

// ../../node_modules/vfile/lib/minproc.js
var import_process = __toESM(require("process"), 1);

// ../../node_modules/vfile/lib/minurl.js
var import_url = require("url");

// ../../node_modules/vfile/lib/minurl.shared.js
function isUrl3(fileUrlOrPath) {
  return fileUrlOrPath !== null && typeof fileUrlOrPath === "object" && // @ts-expect-error: indexable.
  fileUrlOrPath.href && // @ts-expect-error: indexable.
  fileUrlOrPath.origin;
}

// ../../node_modules/vfile/lib/index.js
var order = ["history", "path", "basename", "stem", "extname", "dirname"];
var VFile = class {
  /**
   * Create a new virtual file.
   *
   * `options` is treated as:
   *
   * *   `string` or `Buffer` — `{value: options}`
   * *   `URL` — `{path: options}`
   * *   `VFile` — shallow copies its data over to the new file
   * *   `object` — all fields are shallow copied over to the new file
   *
   * Path related fields are set in the following order (least specific to
   * most specific): `history`, `path`, `basename`, `stem`, `extname`,
   * `dirname`.
   *
   * You cannot set `dirname` or `extname` without setting either `history`,
   * `path`, `basename`, or `stem` too.
   *
   * @param {Compatible | null | undefined} [value]
   *   File value.
   * @returns
   *   New instance.
   */
  constructor(value) {
    let options;
    if (!value) {
      options = {};
    } else if (typeof value === "string" || buffer(value)) {
      options = { value };
    } else if (isUrl3(value)) {
      options = { path: value };
    } else {
      options = value;
    }
    this.data = {};
    this.messages = [];
    this.history = [];
    this.cwd = import_process.default.cwd();
    this.value;
    this.stored;
    this.result;
    this.map;
    let index4 = -1;
    while (++index4 < order.length) {
      const prop2 = order[index4];
      if (prop2 in options && options[prop2] !== void 0 && options[prop2] !== null) {
        this[prop2] = prop2 === "history" ? [...options[prop2]] : options[prop2];
      }
    }
    let prop;
    for (prop in options) {
      if (!order.includes(prop)) {
        this[prop] = options[prop];
      }
    }
  }
  /**
   * Get the full path (example: `'~/index.min.js'`).
   *
   * @returns {string}
   */
  get path() {
    return this.history[this.history.length - 1];
  }
  /**
   * Set the full path (example: `'~/index.min.js'`).
   *
   * Cannot be nullified.
   * You can set a file URL (a `URL` object with a `file:` protocol) which will
   * be turned into a path with `url.fileURLToPath`.
   *
   * @param {string | URL} path
   */
  set path(path45) {
    if (isUrl3(path45)) {
      path45 = (0, import_url.fileURLToPath)(path45);
    }
    assertNonEmpty(path45, "path");
    if (this.path !== path45) {
      this.history.push(path45);
    }
  }
  /**
   * Get the parent path (example: `'~'`).
   */
  get dirname() {
    return typeof this.path === "string" ? import_path.default.dirname(this.path) : void 0;
  }
  /**
   * Set the parent path (example: `'~'`).
   *
   * Cannot be set if there’s no `path` yet.
   */
  set dirname(dirname8) {
    assertPath(this.basename, "dirname");
    this.path = import_path.default.join(dirname8 || "", this.basename);
  }
  /**
   * Get the basename (including extname) (example: `'index.min.js'`).
   */
  get basename() {
    return typeof this.path === "string" ? import_path.default.basename(this.path) : void 0;
  }
  /**
   * Set basename (including extname) (`'index.min.js'`).
   *
   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'`
   * on windows).
   * Cannot be nullified (use `file.path = file.dirname` instead).
   */
  set basename(basename4) {
    assertNonEmpty(basename4, "basename");
    assertPart(basename4, "basename");
    this.path = import_path.default.join(this.dirname || "", basename4);
  }
  /**
   * Get the extname (including dot) (example: `'.js'`).
   */
  get extname() {
    return typeof this.path === "string" ? import_path.default.extname(this.path) : void 0;
  }
  /**
   * Set the extname (including dot) (example: `'.js'`).
   *
   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'`
   * on windows).
   * Cannot be set if there’s no `path` yet.
   */
  set extname(extname8) {
    assertPart(extname8, "extname");
    assertPath(this.dirname, "extname");
    if (extname8) {
      if (extname8.charCodeAt(0) !== 46) {
        throw new Error("`extname` must start with `.`");
      }
      if (extname8.includes(".", 1)) {
        throw new Error("`extname` cannot contain multiple dots");
      }
    }
    this.path = import_path.default.join(this.dirname, this.stem + (extname8 || ""));
  }
  /**
   * Get the stem (basename w/o extname) (example: `'index.min'`).
   */
  get stem() {
    return typeof this.path === "string" ? import_path.default.basename(this.path, this.extname) : void 0;
  }
  /**
   * Set the stem (basename w/o extname) (example: `'index.min'`).
   *
   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'`
   * on windows).
   * Cannot be nullified (use `file.path = file.dirname` instead).
   */
  set stem(stem) {
    assertNonEmpty(stem, "stem");
    assertPart(stem, "stem");
    this.path = import_path.default.join(this.dirname || "", stem + (this.extname || ""));
  }
  /**
   * Serialize the file.
   *
   * @param {BufferEncoding | null | undefined} [encoding='utf8']
   *   Character encoding to understand `value` as when it’s a `Buffer`
   *   (default: `'utf8'`).
   * @returns {string}
   *   Serialized file.
   */
  toString(encoding) {
    return (this.value || "").toString(encoding || void 0);
  }
  /**
   * Create a warning message associated with the file.
   *
   * Its `fatal` is set to `false` and `file` is set to the current file path.
   * Its added to `file.messages`.
   *
   * @param {string | Error | VFileMessage} reason
   *   Reason for message, uses the stack and message of the error if given.
   * @param {Node | NodeLike | Position | Point | null | undefined} [place]
   *   Place in file where the message occurred.
   * @param {string | null | undefined} [origin]
   *   Place in code where the message originates (example:
   *   `'my-package:my-rule'` or `'my-rule'`).
   * @returns {VFileMessage}
   *   Message.
   */
  message(reason, place, origin) {
    const message = new VFileMessage(reason, place, origin);
    if (this.path) {
      message.name = this.path + ":" + message.name;
      message.file = this.path;
    }
    message.fatal = false;
    this.messages.push(message);
    return message;
  }
  /**
   * Create an info message associated with the file.
   *
   * Its `fatal` is set to `null` and `file` is set to the current file path.
   * Its added to `file.messages`.
   *
   * @param {string | Error | VFileMessage} reason
   *   Reason for message, uses the stack and message of the error if given.
   * @param {Node | NodeLike | Position | Point | null | undefined} [place]
   *   Place in file where the message occurred.
   * @param {string | null | undefined} [origin]
   *   Place in code where the message originates (example:
   *   `'my-package:my-rule'` or `'my-rule'`).
   * @returns {VFileMessage}
   *   Message.
   */
  info(reason, place, origin) {
    const message = this.message(reason, place, origin);
    message.fatal = null;
    return message;
  }
  /**
   * Create a fatal error associated with the file.
   *
   * Its `fatal` is set to `true` and `file` is set to the current file path.
   * Its added to `file.messages`.
   *
   * > 👉 **Note**: a fatal error means that a file is no longer processable.
   *
   * @param {string | Error | VFileMessage} reason
   *   Reason for message, uses the stack and message of the error if given.
   * @param {Node | NodeLike | Position | Point | null | undefined} [place]
   *   Place in file where the message occurred.
   * @param {string | null | undefined} [origin]
   *   Place in code where the message originates (example:
   *   `'my-package:my-rule'` or `'my-rule'`).
   * @returns {never}
   *   Message.
   * @throws {VFileMessage}
   *   Message.
   */
  fail(reason, place, origin) {
    const message = this.message(reason, place, origin);
    message.fatal = true;
    throw message;
  }
};
function assertPart(part, name3) {
  if (part && part.includes(import_path.default.sep)) {
    throw new Error(
      "`" + name3 + "` cannot be a path: did not expect `" + import_path.default.sep + "`"
    );
  }
}
function assertNonEmpty(part, name3) {
  if (!part) {
    throw new Error("`" + name3 + "` cannot be empty");
  }
}
function assertPath(path45, name3) {
  if (!path45) {
    throw new Error("Setting `" + name3 + "` requires `path` to be set too");
  }
}
function buffer(value) {
  return (0, import_is_buffer.default)(value);
}

// ../myst-transforms/dist/admonitions.js
var githubAdmonitionKinds = ["note", "tip", "important", "warning", "caution"];
function getPossibleAdmonitionHeaderChildren(possibleHeading) {
  var _a6;
  if ((possibleHeading === null || possibleHeading === void 0 ? void 0 : possibleHeading.type) === "paragraph" && ((_a6 = possibleHeading.children) === null || _a6 === void 0 ? void 0 : _a6.length) === 1 && possibleHeading.children[0].type === "strong") {
    return possibleHeading.children[0].children;
  } else if ((possibleHeading === null || possibleHeading === void 0 ? void 0 : possibleHeading.type) === "heading") {
    return possibleHeading.children;
  }
  return void 0;
}
function admonitionHeadersTransform(tree, opts) {
  const admonitions = selectAll("admonition", tree);
  admonitions.forEach((node3) => {
    var _a6, _b, _c, _d2;
    if (!node3.kind || node3.kind === AdmonitionKind.admonition || // This condition is legacy
    ((_b = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6[0]) === null || _b === void 0 ? void 0 : _b.type) === "admonitionTitle") {
      return;
    }
    node3.children = [
      {
        type: "admonitionTitle",
        children: [{ type: "text", value: admonitionKindToTitle(node3.kind) }]
      },
      ...(_c = node3.children) !== null && _c !== void 0 ? _c : []
    ];
    if ((_d2 = opts === null || opts === void 0 ? void 0 : opts.replaceAdmonitionTitles) !== null && _d2 !== void 0 ? _d2 : true) {
      const [admonitionHeader, possibleHeading, ...rest] = node3.children;
      const headerChildren = getPossibleAdmonitionHeaderChildren(possibleHeading);
      if (headerChildren) {
        admonitionHeader.children = headerChildren;
        node3.children = [admonitionHeader, ...rest];
      }
    }
  });
}
function transformGitHubBoldTitle(node3) {
  var _a6, _b, _c, _d2, _e, _f, _g;
  if (!node3.children || ((_b = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6[0]) === null || _b === void 0 ? void 0 : _b.type) !== "paragraph" || ((_d2 = (_c = node3.children[0].children) === null || _c === void 0 ? void 0 : _c[0]) === null || _d2 === void 0 ? void 0 : _d2.type) !== "strong") {
    return false;
  }
  const strong5 = node3.children[0].children[0];
  if (((_e = strong5.children) === null || _e === void 0 ? void 0 : _e[0].type) !== "text")
    return false;
  const kind = (_g = (_f = strong5.children[0].value) === null || _f === void 0 ? void 0 : _f.trim().toLowerCase()) !== null && _g !== void 0 ? _g : "";
  if (!githubAdmonitionKinds.includes(kind))
    return false;
  node3.type = "admonition";
  node3.kind = kind;
  node3.class = node3.class ? node3.class + " simple" : "simple";
  node3.children[0].children.splice(0, 1);
  node3.children = [
    {
      type: "admonitionTitle",
      children: [{ type: "text", value: admonitionKindToTitle(node3.kind) }]
    },
    ...node3.children
  ];
  return true;
}
function transformGitHubBracketedAdmonition(node3) {
  var _a6, _b, _c, _d2, _e, _f;
  if (!node3.children || ((_b = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6[0]) === null || _b === void 0 ? void 0 : _b.type) !== "paragraph")
    return false;
  const firstNode = (_d2 = (_c = node3.children[0]) === null || _c === void 0 ? void 0 : _c.children) === null || _d2 === void 0 ? void 0 : _d2[0];
  if ((firstNode === null || firstNode === void 0 ? void 0 : firstNode.type) !== "text")
    return false;
  const match3 = (_e = firstNode.value) === null || _e === void 0 ? void 0 : _e.trim().match(/^\[!([A-Za-z]+)\]/);
  if (!match3)
    return false;
  const [, kind] = match3;
  if (!githubAdmonitionKinds.includes(kind.toLowerCase()))
    return false;
  node3.type = "admonition";
  node3.kind = kind.toLowerCase();
  node3.class = node3.class ? node3.class + " simple" : "simple";
  firstNode.value = (_f = firstNode.value) === null || _f === void 0 ? void 0 : _f.replace(/^\[!([A-Za-z]+)\](?:[\s]*)/, "");
  node3.children = [
    {
      type: "admonitionTitle",
      children: [{ type: "text", value: admonitionKindToTitle(node3.kind) }]
    },
    ...node3.children
  ];
  return true;
}
var QmdCallouts = [
  "callout-note",
  "callout-warning",
  "callout-important",
  "callout-tip",
  "callout-caution"
];
function admonitionQmdTransform(tree) {
  const divs = selectAll("div", tree);
  divs.forEach((node3) => {
    var _a6;
    const classNames3 = (_a6 = node3.class) === null || _a6 === void 0 ? void 0 : _a6.split(/\s/).map((c) => c.trim());
    if (!classNames3)
      return;
    const match3 = classNames3 === null || classNames3 === void 0 ? void 0 : classNames3.find((s5) => QmdCallouts.find((c) => c === s5));
    if (!match3)
      return;
    node3.type = "admonition";
    node3.kind = match3.replace("callout-", "");
    node3.class = classNames3.filter((c) => c && c !== match3).join(" ");
    if (!node3.class)
      delete node3.class;
  });
}
function admonitionBlockquoteTransform(tree) {
  const blockquote5 = selectAll("blockquote", tree);
  blockquote5.forEach((node3) => {
    [transformGitHubBracketedAdmonition, transformGitHubBoldTitle].reduce((complete, fn) => complete || fn(node3), false);
  });
}

// ../myst-transforms/dist/caption.js
function captionParagraphTransform(tree) {
  visit(tree, "caption", (node3) => {
    var _a6;
    if (node3.children && ((_a6 = node3.children[0]) === null || _a6 === void 0 ? void 0 : _a6.type) !== "paragraph") {
      node3.children = [
        { type: "paragraph", children: node3.children }
      ];
    }
  });
}

// ../myst-transforms/dist/footnotes.js
function nextNumber(current2, reserved) {
  do {
    current2 += 1;
  } while (reserved.has(current2));
  return current2;
}
var TRANSFORM_SOURCE = "myst-transforms:footnotes";
function footnotesTransform(mdast2, file) {
  const footnotes = selectAll("footnoteDefinition", mdast2);
  const footnotesLookup = Object.fromEntries(footnotes.map((n) => {
    return [n.identifier, n];
  }));
  const references = selectAll("footnoteReference", mdast2);
  const reserved = new Set(references.map((r2) => Number(r2.identifier)).filter((num) => !Number.isNaN(num) && num > 0));
  let footnoteCount = 0;
  references.forEach((node3) => {
    if (!node3.identifier) {
      fileWarn(file, "FootnoteReference does not have an identifier", {
        node: node3,
        source: TRANSFORM_SOURCE,
        ruleId: RuleId.footnoteReferencesDefinition
      });
      return;
    }
    const def = footnotesLookup[node3.identifier];
    if (!def) {
      fileWarn(file, `No footnoteDefinition found for ${node3.identifier}`, {
        node: node3,
        source: TRANSFORM_SOURCE,
        ruleId: RuleId.footnoteReferencesDefinition
      });
      return;
    }
    if (def.enumerator) {
      node3.enumerator = def.enumerator;
      return;
    }
    const identifierNumber = Number(node3.identifier);
    if (!Number.isNaN(identifierNumber) && identifierNumber > 0) {
      def.enumerator = String(identifierNumber);
      node3.enumerator = String(identifierNumber);
    } else {
      footnoteCount = nextNumber(footnoteCount, reserved);
      def.enumerator = String(footnoteCount);
      node3.enumerator = String(footnoteCount);
    }
  });
}
var footnotesPlugin = () => (tree, file) => {
  footnotesTransform(tree, file);
};

// ../../node_modules/bail/index.js
function bail(error) {
  if (error) {
    throw error;
  }
}

// ../../node_modules/unified/lib/index.js
var import_is_buffer2 = __toESM(require_is_buffer(), 1);
var import_extend = __toESM(require_extend(), 1);

// ../../node_modules/unified/node_modules/is-plain-obj/index.js
function isPlainObject(value) {
  if (typeof value !== "object" || value === null) {
    return false;
  }
  const prototype = Object.getPrototypeOf(value);
  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);
}

// ../../node_modules/trough/index.js
function trough() {
  const fns = [];
  const pipeline2 = { run, use };
  return pipeline2;
  function run(...values) {
    let middlewareIndex = -1;
    const callback = values.pop();
    if (typeof callback !== "function") {
      throw new TypeError("Expected function as last argument, not " + callback);
    }
    next(null, ...values);
    function next(error, ...output2) {
      const fn = fns[++middlewareIndex];
      let index4 = -1;
      if (error) {
        callback(error);
        return;
      }
      while (++index4 < values.length) {
        if (output2[index4] === null || output2[index4] === void 0) {
          output2[index4] = values[index4];
        }
      }
      values = output2;
      if (fn) {
        wrap(fn, next)(...output2);
      } else {
        callback(null, ...output2);
      }
    }
  }
  function use(middelware) {
    if (typeof middelware !== "function") {
      throw new TypeError(
        "Expected `middelware` to be a function, not " + middelware
      );
    }
    fns.push(middelware);
    return pipeline2;
  }
}
function wrap(middleware, callback) {
  let called;
  return wrapped;
  function wrapped(...parameters) {
    const fnExpectsCallback = middleware.length > parameters.length;
    let result;
    if (fnExpectsCallback) {
      parameters.push(done);
    }
    try {
      result = middleware.apply(this, parameters);
    } catch (error) {
      const exception2 = (
        /** @type {Error} */
        error
      );
      if (fnExpectsCallback && called) {
        throw exception2;
      }
      return done(exception2);
    }
    if (!fnExpectsCallback) {
      if (result instanceof Promise) {
        result.then(then, done);
      } else if (result instanceof Error) {
        done(result);
      } else {
        then(result);
      }
    }
  }
  function done(error, ...output2) {
    if (!called) {
      called = true;
      callback(error, ...output2);
    }
  }
  function then(value) {
    done(null, value);
  }
}

// ../../node_modules/unified/lib/index.js
var unified = base().freeze();
var own2 = {}.hasOwnProperty;
function base() {
  const transformers = trough();
  const attachers = [];
  let namespace = {};
  let frozen;
  let freezeIndex = -1;
  processor2.data = data;
  processor2.Parser = void 0;
  processor2.Compiler = void 0;
  processor2.freeze = freeze2;
  processor2.attachers = attachers;
  processor2.use = use;
  processor2.parse = parse16;
  processor2.stringify = stringify4;
  processor2.run = run;
  processor2.runSync = runSync;
  processor2.process = process11;
  processor2.processSync = processSync;
  return processor2;
  function processor2() {
    const destination = base();
    let index4 = -1;
    while (++index4 < attachers.length) {
      destination.use(...attachers[index4]);
    }
    destination.data((0, import_extend.default)(true, {}, namespace));
    return destination;
  }
  function data(key2, value) {
    if (typeof key2 === "string") {
      if (arguments.length === 2) {
        assertUnfrozen("data", frozen);
        namespace[key2] = value;
        return processor2;
      }
      return own2.call(namespace, key2) && namespace[key2] || null;
    }
    if (key2) {
      assertUnfrozen("data", frozen);
      namespace = key2;
      return processor2;
    }
    return namespace;
  }
  function freeze2() {
    if (frozen) {
      return processor2;
    }
    while (++freezeIndex < attachers.length) {
      const [attacher, ...options] = attachers[freezeIndex];
      if (options[0] === false) {
        continue;
      }
      if (options[0] === true) {
        options[0] = void 0;
      }
      const transformer = attacher.call(processor2, ...options);
      if (typeof transformer === "function") {
        transformers.use(transformer);
      }
    }
    frozen = true;
    freezeIndex = Number.POSITIVE_INFINITY;
    return processor2;
  }
  function use(value, ...options) {
    let settings;
    assertUnfrozen("use", frozen);
    if (value === null || value === void 0) {
    } else if (typeof value === "function") {
      addPlugin(value, ...options);
    } else if (typeof value === "object") {
      if (Array.isArray(value)) {
        addList(value);
      } else {
        addPreset(value);
      }
    } else {
      throw new TypeError("Expected usable value, not `" + value + "`");
    }
    if (settings) {
      namespace.settings = Object.assign(namespace.settings || {}, settings);
    }
    return processor2;
    function add2(value2) {
      if (typeof value2 === "function") {
        addPlugin(value2);
      } else if (typeof value2 === "object") {
        if (Array.isArray(value2)) {
          const [plugin5, ...options2] = value2;
          addPlugin(plugin5, ...options2);
        } else {
          addPreset(value2);
        }
      } else {
        throw new TypeError("Expected usable value, not `" + value2 + "`");
      }
    }
    function addPreset(result) {
      addList(result.plugins);
      if (result.settings) {
        settings = Object.assign(settings || {}, result.settings);
      }
    }
    function addList(plugins3) {
      let index4 = -1;
      if (plugins3 === null || plugins3 === void 0) {
      } else if (Array.isArray(plugins3)) {
        while (++index4 < plugins3.length) {
          const thing = plugins3[index4];
          add2(thing);
        }
      } else {
        throw new TypeError("Expected a list of plugins, not `" + plugins3 + "`");
      }
    }
    function addPlugin(plugin5, value2) {
      let index4 = -1;
      let entry;
      while (++index4 < attachers.length) {
        if (attachers[index4][0] === plugin5) {
          entry = attachers[index4];
          break;
        }
      }
      if (entry) {
        if (isPlainObject(entry[1]) && isPlainObject(value2)) {
          value2 = (0, import_extend.default)(true, entry[1], value2);
        }
        entry[1] = value2;
      } else {
        attachers.push([...arguments]);
      }
    }
  }
  function parse16(doc) {
    processor2.freeze();
    const file = vfile(doc);
    const Parser3 = processor2.Parser;
    assertParser("parse", Parser3);
    if (newable(Parser3, "parse")) {
      return new Parser3(String(file), file).parse();
    }
    return Parser3(String(file), file);
  }
  function stringify4(node3, doc) {
    processor2.freeze();
    const file = vfile(doc);
    const Compiler = processor2.Compiler;
    assertCompiler("stringify", Compiler);
    assertNode(node3);
    if (newable(Compiler, "compile")) {
      return new Compiler(node3, file).compile();
    }
    return Compiler(node3, file);
  }
  function run(node3, doc, callback) {
    assertNode(node3);
    processor2.freeze();
    if (!callback && typeof doc === "function") {
      callback = doc;
      doc = void 0;
    }
    if (!callback) {
      return new Promise(executor);
    }
    executor(null, callback);
    function executor(resolve9, reject) {
      transformers.run(node3, vfile(doc), done);
      function done(error, tree, file) {
        tree = tree || node3;
        if (error) {
          reject(error);
        } else if (resolve9) {
          resolve9(tree);
        } else {
          callback(null, tree, file);
        }
      }
    }
  }
  function runSync(node3, file) {
    let result;
    let complete;
    processor2.run(node3, file, done);
    assertDone("runSync", "run", complete);
    return result;
    function done(error, tree) {
      bail(error);
      result = tree;
      complete = true;
    }
  }
  function process11(doc, callback) {
    processor2.freeze();
    assertParser("process", processor2.Parser);
    assertCompiler("process", processor2.Compiler);
    if (!callback) {
      return new Promise(executor);
    }
    executor(null, callback);
    function executor(resolve9, reject) {
      const file = vfile(doc);
      processor2.run(processor2.parse(file), file, (error, tree, file2) => {
        if (error || !tree || !file2) {
          done(error);
        } else {
          const result = processor2.stringify(tree, file2);
          if (result === void 0 || result === null) {
          } else if (looksLikeAVFileValue(result)) {
            file2.value = result;
          } else {
            file2.result = result;
          }
          done(error, file2);
        }
      });
      function done(error, file2) {
        if (error || !file2) {
          reject(error);
        } else if (resolve9) {
          resolve9(file2);
        } else {
          callback(null, file2);
        }
      }
    }
  }
  function processSync(doc) {
    let complete;
    processor2.freeze();
    assertParser("processSync", processor2.Parser);
    assertCompiler("processSync", processor2.Compiler);
    const file = vfile(doc);
    processor2.process(file, done);
    assertDone("processSync", "process", complete);
    return file;
    function done(error) {
      complete = true;
      bail(error);
    }
  }
}
function newable(value, name3) {
  return typeof value === "function" && // Prototypes do exist.
  // type-coverage:ignore-next-line
  value.prototype && // A function with keys in its prototype is probably a constructor.
  // Classes’ prototype methods are not enumerable, so we check if some value
  // exists in the prototype.
  // type-coverage:ignore-next-line
  (keys(value.prototype) || name3 in value.prototype);
}
function keys(value) {
  let key2;
  for (key2 in value) {
    if (own2.call(value, key2)) {
      return true;
    }
  }
  return false;
}
function assertParser(name3, value) {
  if (typeof value !== "function") {
    throw new TypeError("Cannot `" + name3 + "` without `Parser`");
  }
}
function assertCompiler(name3, value) {
  if (typeof value !== "function") {
    throw new TypeError("Cannot `" + name3 + "` without `Compiler`");
  }
}
function assertUnfrozen(name3, frozen) {
  if (frozen) {
    throw new Error(
      "Cannot call `" + name3 + "` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`."
    );
  }
}
function assertNode(node3) {
  if (!isPlainObject(node3) || typeof node3.type !== "string") {
    throw new TypeError("Expected node, got `" + node3 + "`");
  }
}
function assertDone(name3, asyncName, complete) {
  if (!complete) {
    throw new Error(
      "`" + name3 + "` finished async. Use `" + asyncName + "` instead"
    );
  }
}
function vfile(value) {
  return looksLikeAVFile(value) ? value : new VFile(value);
}
function looksLikeAVFile(value) {
  return Boolean(
    value && typeof value === "object" && "message" in value && "messages" in value
  );
}
function looksLikeAVFileValue(value) {
  return typeof value === "string" || (0, import_is_buffer2.default)(value);
}

// ../../node_modules/hast-util-is-element/index.js
var isElement = (
  /**
   * @type {(
   *   (() => false) &
   *   (<T extends Element = Element>(node: unknown, test?: PredicateTest<T>, index?: number, parent?: Parent, context?: unknown) => node is T) &
   *   ((node: unknown, test: Test, index?: number, parent?: Parent, context?: unknown) => boolean)
   * )}
   */
  /**
   * @param {unknown} [node]
   * @param {Test | undefined} [test]
   * @param {number | null | undefined} [index]
   * @param {Parent | null | undefined} [parent]
   * @param {unknown} [context]
   * @returns {boolean}
   */
  // eslint-disable-next-line max-params
  (function(node3, test2, index4, parent2, context) {
    const check2 = convertElement(test2);
    if (index4 !== void 0 && index4 !== null && (typeof index4 !== "number" || index4 < 0 || index4 === Number.POSITIVE_INFINITY)) {
      throw new Error("Expected positive finite index for child node");
    }
    if (parent2 !== void 0 && parent2 !== null && (!parent2.type || !parent2.children)) {
      throw new Error("Expected parent node");
    }
    if (!node3 || !node3.type || typeof node3.type !== "string") {
      return false;
    }
    if ((parent2 === void 0 || parent2 === null) !== (index4 === void 0 || index4 === null)) {
      throw new Error("Expected both parent and index");
    }
    return check2.call(context, node3, index4, parent2);
  })
);
var convertElement = (
  /**
   * @type {(
   *   (<T extends Element>(test: T['tagName'] | TestFunctionPredicate<T>) => AssertPredicate<T>) &
   *   ((test?: Test) => AssertAnything)
   * )}
   */
  /**
   * @param {Test | null | undefined} [test]
   * @returns {AssertAnything}
   */
  (function(test2) {
    if (test2 === void 0 || test2 === null) {
      return element;
    }
    if (typeof test2 === "string") {
      return tagNameFactory(test2);
    }
    if (typeof test2 === "object") {
      return anyFactory2(test2);
    }
    if (typeof test2 === "function") {
      return castFactory2(test2);
    }
    throw new Error("Expected function, string, or array as test");
  })
);
function anyFactory2(tests) {
  const checks2 = [];
  let index4 = -1;
  while (++index4 < tests.length) {
    checks2[index4] = convertElement(tests[index4]);
  }
  return castFactory2(any);
  function any(...parameters) {
    let index5 = -1;
    while (++index5 < checks2.length) {
      if (checks2[index5].call(this, ...parameters)) {
        return true;
      }
    }
    return false;
  }
}
function tagNameFactory(check2) {
  return tagName;
  function tagName(node3) {
    return element(node3) && node3.tagName === check2;
  }
}
function castFactory2(check2) {
  return assertion;
  function assertion(node3, ...parameters) {
    return element(node3) && Boolean(check2.call(this, node3, ...parameters));
  }
}
function element(node3) {
  return Boolean(
    node3 && typeof node3 === "object" && // @ts-expect-error Looks like a node.
    node3.type === "element" && // @ts-expect-error Looks like an element.
    typeof node3.tagName === "string"
  );
}

// ../../node_modules/hast-util-embedded/lib/index.js
var embedded = convertElement([
  "audio",
  "canvas",
  "embed",
  "iframe",
  "img",
  "math",
  "object",
  "picture",
  "svg",
  "video"
]);

// ../../node_modules/hast-util-whitespace/index.js
function whitespace2(thing) {
  const value = (
    // @ts-expect-error looks like a node.
    thing && typeof thing === "object" && thing.type === "text" ? (
      // @ts-expect-error looks like a text.
      thing.value || ""
    ) : thing
  );
  return typeof value === "string" && value.replace(/[ \t\n\f\r]/g, "") === "";
}

// ../../node_modules/rehype-minify-whitespace/block.js
var blocks = [
  "address",
  // Flow content.
  "article",
  // Sections and headings.
  "aside",
  // Sections and headings.
  "blockquote",
  // Flow content.
  "body",
  // Page.
  "br",
  // Contribute whitespace intrinsically.
  "caption",
  // Similar to block.
  "center",
  // Flow content, legacy.
  "col",
  // Similar to block.
  "colgroup",
  // Similar to block.
  "dd",
  // Lists.
  "dialog",
  // Flow content.
  "dir",
  // Lists, legacy.
  "div",
  // Flow content.
  "dl",
  // Lists.
  "dt",
  // Lists.
  "figcaption",
  // Flow content.
  "figure",
  // Flow content.
  "footer",
  // Flow content.
  "form",
  // Flow content.
  "h1",
  // Sections and headings.
  "h2",
  // Sections and headings.
  "h3",
  // Sections and headings.
  "h4",
  // Sections and headings.
  "h5",
  // Sections and headings.
  "h6",
  // Sections and headings.
  "head",
  // Page.
  "header",
  // Flow content.
  "hgroup",
  // Sections and headings.
  "hr",
  // Flow content.
  "html",
  // Page.
  "legend",
  // Flow content.
  "li",
  // Block-like.
  "li",
  // Similar to block.
  "listing",
  // Flow content, legacy
  "main",
  // Flow content.
  "menu",
  // Lists.
  "nav",
  // Sections and headings.
  "ol",
  // Lists.
  "optgroup",
  // Similar to block.
  "option",
  // Similar to block.
  "p",
  // Flow content.
  "plaintext",
  // Flow content, legacy
  "pre",
  // Flow content.
  "section",
  // Sections and headings.
  "summary",
  // Similar to block.
  "table",
  // Similar to block.
  "tbody",
  // Similar to block.
  "td",
  // Block-like.
  "td",
  // Similar to block.
  "tfoot",
  // Similar to block.
  "th",
  // Block-like.
  "th",
  // Similar to block.
  "thead",
  // Similar to block.
  "tr",
  // Similar to block.
  "ul",
  // Lists.
  "wbr",
  // Contribute whitespace intrinsically.
  "xmp"
  // Flow content, legacy
];

// ../../node_modules/rehype-minify-whitespace/content.js
var content = [
  // Form.
  "button",
  "input",
  "select",
  "textarea"
];

// ../../node_modules/rehype-minify-whitespace/skippable.js
var skippable = [
  "area",
  "base",
  "basefont",
  "dialog",
  "datalist",
  "head",
  "link",
  "meta",
  "noembed",
  "noframes",
  "param",
  "rp",
  "script",
  "source",
  "style",
  "template",
  "track",
  "title"
];

// ../../node_modules/rehype-minify-whitespace/index.js
var ignorableNode = convert(["doctype", "comment"]);
function rehypeMinifyWhitespace(options = {}) {
  const collapse = collapseFactory(
    options.newlines ? replaceNewlines : replaceWhitespace
  );
  return (tree) => {
    minify(tree, { collapse, whitespace: "normal" });
  };
}
function minify(node3, context) {
  if ("children" in node3) {
    const settings = Object.assign({}, context);
    if (node3.type === "root" || blocklike(node3)) {
      settings.before = true;
      settings.after = true;
    }
    settings.whitespace = inferWhiteSpace(node3, context);
    return all2(node3, settings);
  }
  if (node3.type === "text") {
    if (context.whitespace === "normal") {
      return minifyText(node3, context);
    }
    if (context.whitespace === "nowrap") {
      node3.value = context.collapse(node3.value);
    }
  }
  return { remove: false, ignore: ignorableNode(node3), stripAtStart: false };
}
function minifyText(node3, context) {
  const value = context.collapse(node3.value);
  const result = { remove: false, ignore: false, stripAtStart: false };
  let start = 0;
  let end = value.length;
  if (context.before && removable(value.charAt(0))) {
    start++;
  }
  if (start !== end && removable(value.charAt(end - 1))) {
    if (context.after) {
      end--;
    } else {
      result.stripAtStart = true;
    }
  }
  if (start === end) {
    result.remove = true;
  } else {
    node3.value = value.slice(start, end);
  }
  return result;
}
function all2(parent2, context) {
  let before = context.before;
  const after = context.after;
  const children = parent2.children;
  let length = children.length;
  let index4 = -1;
  while (++index4 < length) {
    const result = minify(
      children[index4],
      Object.assign({}, context, {
        before,
        after: collapsableAfter(children, index4, after)
      })
    );
    if (result.remove) {
      children.splice(index4, 1);
      index4--;
      length--;
    } else if (!result.ignore) {
      before = result.stripAtStart;
    }
    if (content2(children[index4])) {
      before = false;
    }
  }
  return { remove: false, ignore: false, stripAtStart: Boolean(before || after) };
}
function collapsableAfter(nodes, index4, after) {
  while (++index4 < nodes.length) {
    const node3 = nodes[index4];
    let result = inferBoundary(node3);
    if (result === void 0 && "children" in node3 && !skippable2(node3)) {
      result = collapsableAfter(node3.children, -1);
    }
    if (typeof result === "boolean") {
      return result;
    }
  }
  return after;
}
function inferBoundary(node3) {
  if (node3.type === "element") {
    if (content2(node3)) {
      return false;
    }
    if (blocklike(node3)) {
      return true;
    }
  } else if (node3.type === "text") {
    if (!whitespace2(node3)) {
      return false;
    }
  } else if (!ignorableNode(node3)) {
    return false;
  }
}
function content2(node3) {
  return embedded(node3) || isElement(node3, content);
}
function blocklike(node3) {
  return isElement(node3, blocks);
}
function skippable2(node3) {
  return Boolean(
    "properties" in node3 && node3.properties && node3.properties.hidden
  ) || ignorableNode(node3) || isElement(node3, skippable);
}
function removable(character) {
  return character === " " || character === "\n";
}
function replaceNewlines(value) {
  const match3 = /\r?\n|\r/.exec(value);
  return match3 ? match3[0] : " ";
}
function replaceWhitespace() {
  return " ";
}
function collapseFactory(replace) {
  return collapse;
  function collapse(value) {
    return String(value).replace(/[\t\n\v\f\r ]+/g, replace);
  }
}
function inferWhiteSpace(node3, context) {
  if ("tagName" in node3 && node3.properties) {
    switch (node3.tagName) {
      // Whitespace in script/style, while not displayed by CSS as significant,
      // could have some meaning in JS/CSS, so we can’t touch them.
      case "listing":
      case "plaintext":
      case "script":
      case "style":
      case "xmp":
        return "pre";
      case "nobr":
        return "nowrap";
      case "pre":
        return node3.properties.wrap ? "pre-wrap" : "pre";
      case "td":
      case "th":
        return node3.properties.noWrap ? "nowrap" : context.whitespace;
      case "textarea":
        return "pre-wrap";
      default:
    }
  }
  return context.whitespace;
}

// ../../node_modules/hast-util-has-property/lib/index.js
var own3 = {}.hasOwnProperty;
function hasProperty(node3, field) {
  const value = typeof field === "string" && isNode(node3) && node3.type === "element" && node3.properties && own3.call(node3.properties, field) && node3.properties[field];
  return value !== null && value !== void 0 && value !== false;
}
function isNode(value) {
  return Boolean(value && typeof value === "object" && "type" in value);
}

// ../../node_modules/hast-util-is-body-ok-link/index.js
var list = /* @__PURE__ */ new Set(["pingback", "prefetch", "stylesheet"]);
function isBodyOkLink(node3) {
  if (!isElement(node3, "link")) {
    return false;
  }
  if (hasProperty(node3, "itemProp")) {
    return true;
  }
  const props = node3.properties || {};
  const rel2 = props.rel || [];
  let index4 = -1;
  if (!Array.isArray(rel2) || rel2.length === 0) {
    return false;
  }
  while (++index4 < rel2.length) {
    if (!list.has(String(rel2[index4]))) {
      return false;
    }
  }
  return true;
}

// ../../node_modules/hast-util-phrasing/lib/index.js
var basic = convertElement([
  "a",
  "abbr",
  // `area` is in fact only phrasing if it is inside a `map` element.
  // However, since `area`s are required to be inside a `map` element, and it’s
  // a rather involved check, it’s ignored here for now.
  "area",
  "b",
  "bdi",
  "bdo",
  "br",
  "button",
  "cite",
  "code",
  "data",
  "datalist",
  "del",
  "dfn",
  "em",
  "i",
  "input",
  "ins",
  "kbd",
  "keygen",
  "label",
  "map",
  "mark",
  "meter",
  "noscript",
  "output",
  "progress",
  "q",
  "ruby",
  "s",
  "samp",
  "script",
  "select",
  "small",
  "span",
  "strong",
  "sub",
  "sup",
  "template",
  "textarea",
  "time",
  "u",
  "var",
  "wbr"
]);
var meta = convertElement("meta");
function phrasing(value) {
  return Boolean(
    node(value) && (value.type === "text" || basic(value) || embedded(value) || isBodyOkLink(value) || meta(value) && hasProperty(value, "itemProp"))
  );
}
function node(value) {
  return value && typeof value === "object" && "type" in value;
}

// ../../node_modules/html-whitespace-sensitive-tag-names/index.js
var whitespaceSensitiveTagNames = [
  "pre",
  "script",
  "style",
  "textarea"
];

// ../../node_modules/rehype-format/index.js
var minify2 = rehypeMinifyWhitespace({ newlines: true });
function rehypeFormat(options = {}) {
  let indent2 = options.indent || 2;
  let indentInitial = options.indentInitial;
  if (typeof indent2 === "number") {
    indent2 = " ".repeat(indent2);
  }
  if (indentInitial === null || indentInitial === void 0) {
    indentInitial = true;
  }
  return (tree) => {
    let head2;
    minify2(tree);
    visitParents(tree, (node3, parents) => {
      let index4 = -1;
      if (!("children" in node3)) {
        return;
      }
      if (isElement(node3, "head")) {
        head2 = true;
      }
      if (head2 && isElement(node3, "body")) {
        head2 = void 0;
      }
      if (isElement(node3, whitespaceSensitiveTagNames)) {
        return SKIP;
      }
      const children = node3.children;
      let level = parents.length;
      if (children.length === 0 || !padding(node3, head2)) {
        return;
      }
      if (!indentInitial) {
        level--;
      }
      let eol2;
      while (++index4 < children.length) {
        const child = children[index4];
        if (child.type === "text" || child.type === "comment") {
          if (child.value.includes("\n")) {
            eol2 = true;
          }
          child.value = child.value.replace(
            / *\n/g,
            "$&" + String(indent2).repeat(level)
          );
        }
      }
      const result = [];
      let previous;
      index4 = -1;
      while (++index4 < children.length) {
        const child = children[index4];
        if (padding(child, head2) || eol2 && !index4) {
          addBreak(result, level, child);
          eol2 = true;
        }
        previous = child;
        result.push(child);
      }
      if (previous && (eol2 || padding(previous, head2))) {
        if (whitespace2(previous)) {
          result.pop();
          previous = result[result.length - 1];
        }
        addBreak(result, level - 1);
      }
      node3.children = result;
    });
  };
  function addBreak(list6, level, next) {
    const tail = list6[list6.length - 1];
    const previous = whitespace2(tail) ? list6[list6.length - 2] : tail;
    const replace = (blank(previous) && blank(next) ? "\n\n" : "\n") + String(indent2).repeat(Math.max(level, 0));
    if (tail && tail.type === "text") {
      tail.value = whitespace2(tail) ? replace : tail.value + replace;
    } else {
      list6.push({ type: "text", value: replace });
    }
  }
  function blank(node3) {
    return Boolean(
      node3 && node3.type === "element" && options.blanks && options.blanks.length > 0 && options.blanks.includes(node3.tagName)
    );
  }
}
function padding(node3, head2) {
  return node3.type === "root" || (node3.type === "element" ? head2 || isElement(node3, "script") || embedded(node3) || !phrasing(node3) : false);
}

// ../myst-to-html/dist/format.js
var formatHtml = function formatHtml2(opt) {
  if (!opt)
    return () => void 0;
  return rehypeFormat(typeof opt === "boolean" ? {} : opt);
};

// ../myst-to-html/dist/utils.js
var import_utils5 = __toESM(require_utils2(), 1);

// ../../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js
function blockquote(state, node3) {
  const result = {
    type: "element",
    tagName: "blockquote",
    properties: {},
    children: state.wrap(state.all(node3), true)
  };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/break.js
function hardBreak(state, node3) {
  const result = { type: "element", tagName: "br", properties: {}, children: [] };
  state.patch(node3, result);
  return [state.applyData(node3, result), { type: "text", value: "\n" }];
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/code.js
function code(state, node3) {
  const value = node3.value ? node3.value + "\n" : "";
  const lang = node3.lang ? node3.lang.match(/^[^ \t]+(?=[ \t]|$)/) : null;
  const properties = {};
  if (lang) {
    properties.className = ["language-" + lang];
  }
  let result = {
    type: "element",
    tagName: "code",
    properties,
    children: [{ type: "text", value }]
  };
  if (node3.meta) {
    result.data = { meta: node3.meta };
  }
  state.patch(node3, result);
  result = state.applyData(node3, result);
  result = { type: "element", tagName: "pre", properties: {}, children: [result] };
  state.patch(node3, result);
  return result;
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/delete.js
function strikethrough(state, node3) {
  const result = {
    type: "element",
    tagName: "del",
    properties: {},
    children: state.all(node3)
  };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js
function emphasis(state, node3) {
  const result = {
    type: "element",
    tagName: "em",
    properties: {},
    children: state.all(node3)
  };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/micromark-util-character/lib/unicode-punctuation-regex.js
var unicodePunctuationRegex = /[!-\/:-@\[-`\{-~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/;

// ../../node_modules/micromark-util-character/index.js
var asciiAlpha = regexCheck(/[A-Za-z]/);
var asciiAlphanumeric = regexCheck(/[\dA-Za-z]/);
var asciiAtext = regexCheck(/[#-'*+\--9=?A-Z^-~]/);
var asciiDigit = regexCheck(/\d/);
var asciiHexDigit = regexCheck(/[\dA-Fa-f]/);
var asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);
var unicodePunctuation = regexCheck(unicodePunctuationRegex);
var unicodeWhitespace = regexCheck(/\s/);
function regexCheck(regex2) {
  return check2;
  function check2(code7) {
    return code7 !== null && regex2.test(String.fromCharCode(code7));
  }
}

// ../../node_modules/micromark-util-sanitize-uri/index.js
function normalizeUri(value) {
  const result = [];
  let index4 = -1;
  let start = 0;
  let skip = 0;
  while (++index4 < value.length) {
    const code7 = value.charCodeAt(index4);
    let replace = "";
    if (code7 === 37 && asciiAlphanumeric(value.charCodeAt(index4 + 1)) && asciiAlphanumeric(value.charCodeAt(index4 + 2))) {
      skip = 2;
    } else if (code7 < 128) {
      if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code7))) {
        replace = String.fromCharCode(code7);
      }
    } else if (code7 > 55295 && code7 < 57344) {
      const next = value.charCodeAt(index4 + 1);
      if (code7 < 56320 && next > 56319 && next < 57344) {
        replace = String.fromCharCode(code7, next);
        skip = 1;
      } else {
        replace = "\uFFFD";
      }
    } else {
      replace = String.fromCharCode(code7);
    }
    if (replace) {
      result.push(value.slice(start, index4), encodeURIComponent(replace));
      start = index4 + skip + 1;
      replace = "";
    }
    if (skip) {
      index4 += skip;
      skip = 0;
    }
  }
  return result.join("") + value.slice(start);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js
function footnoteReference(state, node3) {
  const id = String(node3.identifier).toUpperCase();
  const safeId = normalizeUri(id.toLowerCase());
  const index4 = state.footnoteOrder.indexOf(id);
  let counter;
  if (index4 === -1) {
    state.footnoteOrder.push(id);
    state.footnoteCounts[id] = 1;
    counter = state.footnoteOrder.length;
  } else {
    state.footnoteCounts[id]++;
    counter = index4 + 1;
  }
  const reuseCounter = state.footnoteCounts[id];
  const link4 = {
    type: "element",
    tagName: "a",
    properties: {
      href: "#" + state.clobberPrefix + "fn-" + safeId,
      id: state.clobberPrefix + "fnref-" + safeId + (reuseCounter > 1 ? "-" + reuseCounter : ""),
      dataFootnoteRef: true,
      ariaDescribedBy: ["footnote-label"]
    },
    children: [{ type: "text", value: String(counter) }]
  };
  state.patch(node3, link4);
  const sup2 = {
    type: "element",
    tagName: "sup",
    properties: {},
    children: [link4]
  };
  state.patch(node3, sup2);
  return state.applyData(node3, sup2);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/footnote.js
function footnote(state, node3) {
  const footnoteById = state.footnoteById;
  let no = 1;
  while (no in footnoteById) no++;
  const identifier = String(no);
  footnoteById[identifier] = {
    type: "footnoteDefinition",
    identifier,
    children: [{ type: "paragraph", children: node3.children }],
    position: node3.position
  };
  return footnoteReference(state, {
    type: "footnoteReference",
    identifier,
    position: node3.position
  });
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/heading.js
function heading(state, node3) {
  const result = {
    type: "element",
    tagName: "h" + node3.depth,
    properties: {},
    children: state.all(node3)
  };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/html.js
function html(state, node3) {
  if (state.dangerous) {
    const result = { type: "raw", value: node3.value };
    state.patch(node3, result);
    return state.applyData(node3, result);
  }
  return null;
}

// ../../node_modules/mdast-util-to-hast/lib/revert.js
function revert(state, node3) {
  const subtype = node3.referenceType;
  let suffix = "]";
  if (subtype === "collapsed") {
    suffix += "[]";
  } else if (subtype === "full") {
    suffix += "[" + (node3.label || node3.identifier) + "]";
  }
  if (node3.type === "imageReference") {
    return { type: "text", value: "![" + node3.alt + suffix };
  }
  const contents = state.all(node3);
  const head2 = contents[0];
  if (head2 && head2.type === "text") {
    head2.value = "[" + head2.value;
  } else {
    contents.unshift({ type: "text", value: "[" });
  }
  const tail = contents[contents.length - 1];
  if (tail && tail.type === "text") {
    tail.value += suffix;
  } else {
    contents.push({ type: "text", value: suffix });
  }
  return contents;
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js
function imageReference(state, node3) {
  const def = state.definition(node3.identifier);
  if (!def) {
    return revert(state, node3);
  }
  const properties = { src: normalizeUri(def.url || ""), alt: node3.alt };
  if (def.title !== null && def.title !== void 0) {
    properties.title = def.title;
  }
  const result = { type: "element", tagName: "img", properties, children: [] };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/image.js
function image(state, node3) {
  const properties = { src: normalizeUri(node3.url) };
  if (node3.alt !== null && node3.alt !== void 0) {
    properties.alt = node3.alt;
  }
  if (node3.title !== null && node3.title !== void 0) {
    properties.title = node3.title;
  }
  const result = { type: "element", tagName: "img", properties, children: [] };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js
function inlineCode(state, node3) {
  const text7 = { type: "text", value: node3.value.replace(/\r?\n|\r/g, " ") };
  state.patch(node3, text7);
  const result = {
    type: "element",
    tagName: "code",
    properties: {},
    children: [text7]
  };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js
function linkReference(state, node3) {
  const def = state.definition(node3.identifier);
  if (!def) {
    return revert(state, node3);
  }
  const properties = { href: normalizeUri(def.url || "") };
  if (def.title !== null && def.title !== void 0) {
    properties.title = def.title;
  }
  const result = {
    type: "element",
    tagName: "a",
    properties,
    children: state.all(node3)
  };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/link.js
function link(state, node3) {
  const properties = { href: normalizeUri(node3.url) };
  if (node3.title !== null && node3.title !== void 0) {
    properties.title = node3.title;
  }
  const result = {
    type: "element",
    tagName: "a",
    properties,
    children: state.all(node3)
  };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/list-item.js
function listItem(state, node3, parent2) {
  const results = state.all(node3);
  const loose = parent2 ? listLoose(parent2) : listItemLoose(node3);
  const properties = {};
  const children = [];
  if (typeof node3.checked === "boolean") {
    const head2 = results[0];
    let paragraph4;
    if (head2 && head2.type === "element" && head2.tagName === "p") {
      paragraph4 = head2;
    } else {
      paragraph4 = { type: "element", tagName: "p", properties: {}, children: [] };
      results.unshift(paragraph4);
    }
    if (paragraph4.children.length > 0) {
      paragraph4.children.unshift({ type: "text", value: " " });
    }
    paragraph4.children.unshift({
      type: "element",
      tagName: "input",
      properties: { type: "checkbox", checked: node3.checked, disabled: true },
      children: []
    });
    properties.className = ["task-list-item"];
  }
  let index4 = -1;
  while (++index4 < results.length) {
    const child = results[index4];
    if (loose || index4 !== 0 || child.type !== "element" || child.tagName !== "p") {
      children.push({ type: "text", value: "\n" });
    }
    if (child.type === "element" && child.tagName === "p" && !loose) {
      children.push(...child.children);
    } else {
      children.push(child);
    }
  }
  const tail = results[results.length - 1];
  if (tail && (loose || tail.type !== "element" || tail.tagName !== "p")) {
    children.push({ type: "text", value: "\n" });
  }
  const result = { type: "element", tagName: "li", properties, children };
  state.patch(node3, result);
  return state.applyData(node3, result);
}
function listLoose(node3) {
  let loose = false;
  if (node3.type === "list") {
    loose = node3.spread || false;
    const children = node3.children;
    let index4 = -1;
    while (!loose && ++index4 < children.length) {
      loose = listItemLoose(children[index4]);
    }
  }
  return loose;
}
function listItemLoose(node3) {
  const spread = node3.spread;
  return spread === void 0 || spread === null ? node3.children.length > 1 : spread;
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/list.js
function list2(state, node3) {
  const properties = {};
  const results = state.all(node3);
  let index4 = -1;
  if (typeof node3.start === "number" && node3.start !== 1) {
    properties.start = node3.start;
  }
  while (++index4 < results.length) {
    const child = results[index4];
    if (child.type === "element" && child.tagName === "li" && child.properties && Array.isArray(child.properties.className) && child.properties.className.includes("task-list-item")) {
      properties.className = ["contains-task-list"];
      break;
    }
  }
  const result = {
    type: "element",
    tagName: node3.ordered ? "ol" : "ul",
    properties,
    children: state.wrap(results, true)
  };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js
function paragraph(state, node3) {
  const result = {
    type: "element",
    tagName: "p",
    properties: {},
    children: state.all(node3)
  };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/root.js
function root2(state, node3) {
  const result = { type: "root", children: state.wrap(state.all(node3)) };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/strong.js
function strong(state, node3) {
  const result = {
    type: "element",
    tagName: "strong",
    properties: {},
    children: state.all(node3)
  };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/unist-util-position/lib/index.js
var pointStart = point2("start");
var pointEnd = point2("end");
function position2(node3) {
  return { start: pointStart(node3), end: pointEnd(node3) };
}
function point2(type2) {
  return point6;
  function point6(node3) {
    const point7 = node3 && node3.position && node3.position[type2] || {};
    return {
      // @ts-expect-error: in practice, null is allowed.
      line: point7.line || null,
      // @ts-expect-error: in practice, null is allowed.
      column: point7.column || null,
      // @ts-expect-error: in practice, null is allowed.
      offset: point7.offset > -1 ? point7.offset : null
    };
  }
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/table.js
function table(state, node3) {
  const rows = state.all(node3);
  const firstRow = rows.shift();
  const tableContent = [];
  if (firstRow) {
    const head2 = {
      type: "element",
      tagName: "thead",
      properties: {},
      children: state.wrap([firstRow], true)
    };
    state.patch(node3.children[0], head2);
    tableContent.push(head2);
  }
  if (rows.length > 0) {
    const body3 = {
      type: "element",
      tagName: "tbody",
      properties: {},
      children: state.wrap(rows, true)
    };
    const start = pointStart(node3.children[1]);
    const end = pointEnd(node3.children[node3.children.length - 1]);
    if (start.line && end.line) body3.position = { start, end };
    tableContent.push(body3);
  }
  const result = {
    type: "element",
    tagName: "table",
    properties: {},
    children: state.wrap(tableContent, true)
  };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/table-row.js
function tableRow(state, node3, parent2) {
  const siblings2 = parent2 ? parent2.children : void 0;
  const rowIndex = siblings2 ? siblings2.indexOf(node3) : 1;
  const tagName = rowIndex === 0 ? "th" : "td";
  const align = parent2 && parent2.type === "table" ? parent2.align : void 0;
  const length = align ? align.length : node3.children.length;
  let cellIndex = -1;
  const cells2 = [];
  while (++cellIndex < length) {
    const cell3 = node3.children[cellIndex];
    const properties = {};
    const alignValue = align ? align[cellIndex] : void 0;
    if (alignValue) {
      properties.align = alignValue;
    }
    let result2 = { type: "element", tagName, properties, children: [] };
    if (cell3) {
      result2.children = state.all(cell3);
      state.patch(cell3, result2);
      result2 = state.applyData(node3, result2);
    }
    cells2.push(result2);
  }
  const result = {
    type: "element",
    tagName: "tr",
    properties: {},
    children: state.wrap(cells2, true)
  };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js
function tableCell(state, node3) {
  const result = {
    type: "element",
    tagName: "td",
    // Assume body cell.
    properties: {},
    children: state.all(node3)
  };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/trim-lines/index.js
var tab = 9;
var space = 32;
function trimLines(value) {
  const source2 = String(value);
  const search4 = /\r?\n|\r/g;
  let match3 = search4.exec(source2);
  let last = 0;
  const lines = [];
  while (match3) {
    lines.push(
      trimLine(source2.slice(last, match3.index), last > 0, true),
      match3[0]
    );
    last = match3.index + match3[0].length;
    match3 = search4.exec(source2);
  }
  lines.push(trimLine(source2.slice(last), last > 0, false));
  return lines.join("");
}
function trimLine(value, start, end) {
  let startIndex = 0;
  let endIndex = value.length;
  if (start) {
    let code7 = value.codePointAt(startIndex);
    while (code7 === tab || code7 === space) {
      startIndex++;
      code7 = value.codePointAt(startIndex);
    }
  }
  if (end) {
    let code7 = value.codePointAt(endIndex - 1);
    while (code7 === tab || code7 === space) {
      endIndex--;
      code7 = value.codePointAt(endIndex - 1);
    }
  }
  return endIndex > startIndex ? value.slice(startIndex, endIndex) : "";
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/text.js
function text(state, node3) {
  const result = { type: "text", value: trimLines(String(node3.value)) };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js
function thematicBreak(state, node3) {
  const result = {
    type: "element",
    tagName: "hr",
    properties: {},
    children: []
  };
  state.patch(node3, result);
  return state.applyData(node3, result);
}

// ../../node_modules/mdast-util-to-hast/lib/handlers/index.js
var handlers = {
  blockquote,
  break: hardBreak,
  code,
  delete: strikethrough,
  emphasis,
  footnoteReference,
  footnote,
  heading,
  html,
  imageReference,
  image,
  inlineCode,
  linkReference,
  link,
  listItem,
  list: list2,
  paragraph,
  root: root2,
  strong,
  table,
  tableCell,
  tableRow,
  text,
  thematicBreak,
  toml: ignore,
  yaml: ignore,
  definition: ignore,
  footnoteDefinition: ignore
};
function ignore() {
  return null;
}

// ../../node_modules/unist-util-generated/lib/index.js
function generated(node3) {
  return !node3 || !node3.position || !node3.position.start || !node3.position.start.line || !node3.position.start.column || !node3.position.end || !node3.position.end.line || !node3.position.end.column;
}

// ../../node_modules/mdast-util-definitions/lib/index.js
var own4 = {}.hasOwnProperty;
function definitions(tree) {
  const cache = /* @__PURE__ */ Object.create(null);
  if (!tree || !tree.type) {
    throw new Error("mdast-util-definitions expected node");
  }
  visit(tree, "definition", (definition3) => {
    const id = clean(definition3.identifier);
    if (id && !own4.call(cache, id)) {
      cache[id] = definition3;
    }
  });
  return definition2;
  function definition2(identifier) {
    const id = clean(identifier);
    return id && own4.call(cache, id) ? cache[id] : null;
  }
}
function clean(value) {
  return String(value || "").toUpperCase();
}

// ../../node_modules/mdast-util-to-hast/lib/state.js
var own5 = {}.hasOwnProperty;
function createState2(tree, options) {
  const settings = options || {};
  const dangerous2 = settings.allowDangerousHtml || false;
  const footnoteById = {};
  state.dangerous = dangerous2;
  state.clobberPrefix = settings.clobberPrefix === void 0 || settings.clobberPrefix === null ? "user-content-" : settings.clobberPrefix;
  state.footnoteLabel = settings.footnoteLabel || "Footnotes";
  state.footnoteLabelTagName = settings.footnoteLabelTagName || "h2";
  state.footnoteLabelProperties = settings.footnoteLabelProperties || {
    className: ["sr-only"]
  };
  state.footnoteBackLabel = settings.footnoteBackLabel || "Back to content";
  state.unknownHandler = settings.unknownHandler;
  state.passThrough = settings.passThrough;
  state.handlers = { ...handlers, ...settings.handlers };
  state.definition = definitions(tree);
  state.footnoteById = footnoteById;
  state.footnoteOrder = [];
  state.footnoteCounts = {};
  state.patch = patch;
  state.applyData = applyData;
  state.one = oneBound;
  state.all = allBound;
  state.wrap = wrap2;
  state.augment = augment;
  visit(tree, "footnoteDefinition", (definition2) => {
    const id = String(definition2.identifier).toUpperCase();
    if (!own5.call(footnoteById, id)) {
      footnoteById[id] = definition2;
    }
  });
  return state;
  function augment(left2, right2) {
    if (left2 && "data" in left2 && left2.data) {
      const data = left2.data;
      if (data.hName) {
        if (right2.type !== "element") {
          right2 = {
            type: "element",
            tagName: "",
            properties: {},
            children: []
          };
        }
        right2.tagName = data.hName;
      }
      if (right2.type === "element" && data.hProperties) {
        right2.properties = { ...right2.properties, ...data.hProperties };
      }
      if ("children" in right2 && right2.children && data.hChildren) {
        right2.children = data.hChildren;
      }
    }
    if (left2) {
      const ctx = "type" in left2 ? left2 : { position: left2 };
      if (!generated(ctx)) {
        right2.position = { start: pointStart(ctx), end: pointEnd(ctx) };
      }
    }
    return right2;
  }
  function state(node3, tagName, props, children) {
    if (Array.isArray(props)) {
      children = props;
      props = {};
    }
    return augment(node3, {
      type: "element",
      tagName,
      properties: props || {},
      children: children || []
    });
  }
  function oneBound(node3, parent2) {
    return one2(state, node3, parent2);
  }
  function allBound(parent2) {
    return all3(state, parent2);
  }
}
function patch(from4, to) {
  if (from4.position) to.position = position2(from4);
}
function applyData(from4, to) {
  let result = to;
  if (from4 && from4.data) {
    const hName = from4.data.hName;
    const hChildren = from4.data.hChildren;
    const hProperties = from4.data.hProperties;
    if (typeof hName === "string") {
      if (result.type === "element") {
        result.tagName = hName;
      } else {
        result = {
          type: "element",
          tagName: hName,
          properties: {},
          children: []
        };
      }
    }
    if (result.type === "element" && hProperties) {
      result.properties = { ...result.properties, ...hProperties };
    }
    if ("children" in result && result.children && hChildren !== null && hChildren !== void 0) {
      result.children = hChildren;
    }
  }
  return result;
}
function one2(state, node3, parent2) {
  const type2 = node3 && node3.type;
  if (!type2) {
    throw new Error("Expected node, got `" + node3 + "`");
  }
  if (own5.call(state.handlers, type2)) {
    return state.handlers[type2](state, node3, parent2);
  }
  if (state.passThrough && state.passThrough.includes(type2)) {
    return "children" in node3 ? { ...node3, children: all3(state, node3) } : node3;
  }
  if (state.unknownHandler) {
    return state.unknownHandler(state, node3, parent2);
  }
  return defaultUnknownHandler(state, node3);
}
function all3(state, parent2) {
  const values = [];
  if ("children" in parent2) {
    const nodes = parent2.children;
    let index4 = -1;
    while (++index4 < nodes.length) {
      const result = one2(state, nodes[index4], parent2);
      if (result) {
        if (index4 && nodes[index4 - 1].type === "break") {
          if (!Array.isArray(result) && result.type === "text") {
            result.value = result.value.replace(/^\s+/, "");
          }
          if (!Array.isArray(result) && result.type === "element") {
            const head2 = result.children[0];
            if (head2 && head2.type === "text") {
              head2.value = head2.value.replace(/^\s+/, "");
            }
          }
        }
        if (Array.isArray(result)) {
          values.push(...result);
        } else {
          values.push(result);
        }
      }
    }
  }
  return values;
}
function defaultUnknownHandler(state, node3) {
  const data = node3.data || {};
  const result = "value" in node3 && !(own5.call(data, "hProperties") || own5.call(data, "hChildren")) ? { type: "text", value: node3.value } : {
    type: "element",
    tagName: "div",
    properties: {},
    children: all3(state, node3)
  };
  state.patch(node3, result);
  return state.applyData(node3, result);
}
function wrap2(nodes, loose) {
  const result = [];
  let index4 = -1;
  if (loose) {
    result.push({ type: "text", value: "\n" });
  }
  while (++index4 < nodes.length) {
    if (index4) result.push({ type: "text", value: "\n" });
    result.push(nodes[index4]);
  }
  if (loose && nodes.length > 0) {
    result.push({ type: "text", value: "\n" });
  }
  return result;
}

// ../../node_modules/mdast-util-to-hast/lib/footer.js
function footer(state) {
  const listItems = [];
  let index4 = -1;
  while (++index4 < state.footnoteOrder.length) {
    const def = state.footnoteById[state.footnoteOrder[index4]];
    if (!def) {
      continue;
    }
    const content3 = state.all(def);
    const id = String(def.identifier).toUpperCase();
    const safeId = normalizeUri(id.toLowerCase());
    let referenceIndex = 0;
    const backReferences = [];
    while (++referenceIndex <= state.footnoteCounts[id]) {
      const backReference = {
        type: "element",
        tagName: "a",
        properties: {
          href: "#" + state.clobberPrefix + "fnref-" + safeId + (referenceIndex > 1 ? "-" + referenceIndex : ""),
          dataFootnoteBackref: true,
          className: ["data-footnote-backref"],
          ariaLabel: state.footnoteBackLabel
        },
        children: [{ type: "text", value: "\u21A9" }]
      };
      if (referenceIndex > 1) {
        backReference.children.push({
          type: "element",
          tagName: "sup",
          children: [{ type: "text", value: String(referenceIndex) }]
        });
      }
      if (backReferences.length > 0) {
        backReferences.push({ type: "text", value: " " });
      }
      backReferences.push(backReference);
    }
    const tail = content3[content3.length - 1];
    if (tail && tail.type === "element" && tail.tagName === "p") {
      const tailTail = tail.children[tail.children.length - 1];
      if (tailTail && tailTail.type === "text") {
        tailTail.value += " ";
      } else {
        tail.children.push({ type: "text", value: " " });
      }
      tail.children.push(...backReferences);
    } else {
      content3.push(...backReferences);
    }
    const listItem4 = {
      type: "element",
      tagName: "li",
      properties: { id: state.clobberPrefix + "fn-" + safeId },
      children: state.wrap(content3, true)
    };
    state.patch(def, listItem4);
    listItems.push(listItem4);
  }
  if (listItems.length === 0) {
    return;
  }
  return {
    type: "element",
    tagName: "section",
    properties: { dataFootnotes: true, className: ["footnotes"] },
    children: [
      {
        type: "element",
        tagName: state.footnoteLabelTagName,
        properties: {
          // To do: use structured clone.
          ...JSON.parse(JSON.stringify(state.footnoteLabelProperties)),
          id: "footnote-label"
        },
        children: [{ type: "text", value: state.footnoteLabel }]
      },
      { type: "text", value: "\n" },
      {
        type: "element",
        tagName: "ol",
        properties: {},
        children: state.wrap(listItems, true)
      },
      { type: "text", value: "\n" }
    ]
  };
}

// ../../node_modules/mdast-util-to-hast/lib/index.js
function toHast(tree, options) {
  const state = createState2(tree, options);
  const node3 = state.one(tree, null);
  const foot = footer(state);
  if (foot) {
    node3.children.push({ type: "text", value: "\n" }, foot);
  }
  return Array.isArray(node3) ? { type: "root", children: node3 } : node3;
}

// ../myst-to-html/node_modules/unist-builder/lib/index.js
var u = (
  /**
   * @type {(
   *   (<T extends string>(type: T) => {type: T}) &
   *   (<T extends string, P extends Props>(type: T, props: P) => {type: T} & P) &
   *   (<T extends string>(type: T, value: string) => {type: T, value: string}) &
   *   (<T extends string, P extends Props>(type: T, props: P, value: string) => {type: T, value: string} & P) &
   *   (<T extends string, C extends Array<Node>>(type: T, children: C) => {type: T, children: C}) &
   *   (<T extends string, P extends Props, C extends Array<Node>>(type: T, props: P, children: C) => {type: T, children: C} & P)
   * )}
   */
  /**
   * @param {string} type
   * @param {Props | ChildrenOrValue | null | undefined} [props]
   * @param {ChildrenOrValue | null | undefined} [value]
   * @returns {Node}
   */
  (function(type2, props, value) {
    const node3 = { type: String(type2) };
    if ((value === void 0 || value === null) && (typeof props === "string" || Array.isArray(props))) {
      value = props;
    } else {
      Object.assign(node3, props);
    }
    if (Array.isArray(value)) {
      node3.children = value;
    } else if (value !== void 0 && value !== null) {
      node3.value = String(value);
    }
    return node3;
  })
);

// ../myst-to-html/dist/schema.js
var import_classnames = __toESM(require_classnames(), 1);
var abbreviation = (h4, node3) => h4(node3, "abbr", { title: node3.title }, all3(h4, node3));
var subscript = (h4, node3) => h4(node3, "sub", all3(h4, node3));
var superscript = (h4, node3) => h4(node3, "sup", all3(h4, node3));
var image2 = (h4, node3) => h4(node3, "img", {
  src: node3.url,
  alt: node3.alt,
  title: node3.title,
  class: (0, import_classnames.default)(node3.align ? `align-${node3.align}` : "", node3.class) || void 0,
  height: node3.height,
  width: node3.width
});
var caption = (h4, node3) => h4(node3, "figcaption", all3(h4, node3));
var legend = (h4, node3) => h4(node3, "div", { class: "legend" }, all3(h4, node3));
var container = (h4, node3) => h4(node3, "figure", {
  id: node3.identifier || node3.label || void 0,
  class: (0, import_classnames.default)({ numbered: node3.enumerated !== false }, node3.class) || void 0
}, all3(h4, node3));
var admonitionTitle = (h4, node3) => h4(node3, "p", { class: "admonition-title" }, all3(h4, node3));
var admonition = (h4, node3) => h4(node3, "aside", {
  class: (0, import_classnames.default)({
    [node3.class]: node3.class,
    // The custom class is first!!
    admonition: true,
    [node3.kind]: node3.kind && node3.kind !== "admonition"
  })
}, all3(h4, node3));
var captionNumber = (h4, node3) => {
  var _a6, _b;
  const captionKind = ((_a6 = node3.kind) === null || _a6 === void 0 ? void 0 : _a6.charAt(0).toUpperCase()) + ((_b = node3.kind) === null || _b === void 0 ? void 0 : _b.slice(1));
  return h4(node3, "span", { class: "caption-number" }, [u("text", `${captionKind} ${node3.value}`)]);
};
var math = (h4, node3) => {
  const attrs = { id: node3.identifier || void 0, class: "math-display" };
  if (node3.value.indexOf("\n") !== -1) {
    const mathHast = h4(node3, "div", attrs, [u("text", node3.value)]);
    return h4(node3, "pre", [mathHast]);
  }
  return h4(node3, "div", attrs, [u("text", node3.value.replace(/\r?\n|\r/g, " "))]);
};
var inlineMath = (h4, node3) => {
  return h4(node3, "span", { class: "math-inline" }, [
    u("text", node3.value.replace(/\r?\n|\r/g, " "))
  ]);
};
var definitionList = (h4, node3) => h4(node3, "dl", all3(h4, node3));
var definitionTerm = (h4, node3) => h4(node3, "dt", all3(h4, node3));
var definitionDescription = (h4, node3) => h4(node3, "dd", all3(h4, node3));
var mystRole = (h4, node3) => {
  const children = [h4(node3, "code", { class: "kind" }, [u("text", `{${node3.name}}`)])];
  if (node3.value) {
    children.push(h4(node3, "code", {}, [u("text", node3.value)]));
  }
  return h4(node3, "span", { class: "role unhandled" }, children);
};
var mystDirective = (h4, node3) => {
  const directiveHeader = [
    h4(node3, "code", { class: "kind" }, [u("text", `{${node3.name}}`)])
  ];
  if (node3.args) {
    directiveHeader.push(h4(node3, "code", { class: "args" }, [u("text", node3.args)]));
  }
  const directiveBody = [];
  if (node3.options) {
    const optionsString = Object.keys(node3.options).map((k) => `:${k}: ${node3.options[k]}`).join("\n");
    directiveBody.push(h4(node3, "pre", [h4(node3, "code", { class: "options" }, [u("text", optionsString)])]));
  }
  directiveBody.push(h4(node3, "pre", [h4(node3, "code", [u("text", node3.value)])]));
  return h4(node3, "div", { class: "directive unhandled" }, [
    h4(node3, "p", {}, directiveHeader),
    ...directiveBody
  ]);
};
var block = (h4, node3) => h4(node3, "div", { class: "block", "data-block": node3.meta }, all3(h4, node3));
var comment = (h4, node3) => u("comment", node3.value);
var heading2 = (h4, node3) => h4(node3, `h${node3.depth}`, { id: node3.identifier || void 0 }, all3(h4, node3));
var crossReference = (h4, node3) => {
  if (node3.resolved) {
    return h4(node3, "a", { href: `#${node3.identifier}`, title: node3.title || void 0 }, all3(h4, node3));
  } else {
    return h4(node3, "span", { class: "reference role unhandled" }, [
      h4(node3, "code", { class: "kind" }, [u("text", `{${node3.kind}}`)]),
      h4(node3, "code", {}, [u("text", node3.identifier)])
    ]);
  }
};
var table2 = (h4, node3) => {
  node3.data = { hProperties: { align: node3.align } };
  delete node3.align;
  return handlers.table(h4, node3);
};
var code2 = (h4, node3) => {
  const value = node3.value ? node3.value + "\n" : "";
  const props = {};
  if (node3.identifier) {
    props.id = node3.identifier;
  }
  props.className = (0, import_classnames.default)({ ["language-" + node3.lang]: node3.lang }, node3.class) || void 0;
  const codeHast = h4(node3, "code", props, [u("text", value)]);
  return h4(node3.position, "pre", [codeHast]);
};
var iframe = (h4, node3) => h4(node3, "div", { class: "iframe" });
var bibliography = (h4, node3) => h4(node3, "div", { class: "bibliography" });
var details = (h4, node3) => h4(node3, "details");
var summary = (h4, node3) => h4(node3, "summary");
var embed = (h4, node3) => h4(node3, "div");
var include = (h4, node3) => h4(node3, "div", { file: node3.file });
var linkBlock = (h4, node3) => h4(node3, "a");
var margin = (h4, node3) => h4(node3, "aside", { class: "margin" });
var mdast = (h4, node3) => h4(node3, "div", { id: node3.id });
var mermaid = (h4, node3) => h4(node3, "div", { class: "margin" });
var myst = (h4, node3) => h4(node3, "div", { class: "margin" });
var output = (h4, node3) => h4(node3, "div", { class: "output" });
var keyboard = (h4, node3) => h4(node3, "kbd", all3(h4, node3));
var mystToHast = (opts) => (tree) => {
  return toHast(tree, {
    ...opts,
    handlers: {
      admonition,
      admonitionTitle,
      container,
      image: image2,
      caption,
      captionNumber,
      legend,
      abbreviation,
      subscript,
      superscript,
      math,
      inlineMath,
      definitionList,
      definitionTerm,
      definitionDescription,
      mystRole,
      mystDirective,
      block,
      comment,
      heading: heading2,
      crossReference,
      code: code2,
      table: table2,
      iframe,
      bibliography,
      details,
      summary,
      embed,
      include,
      linkBlock,
      margin,
      mdast,
      mermaid,
      myst,
      output,
      keyboard,
      ...opts === null || opts === void 0 ? void 0 : opts.handlers
    }
  });
};

// ../../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js
function escapeStringRegexp(string2) {
  if (typeof string2 !== "string") {
    throw new TypeError("Expected a string");
  }
  return string2.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
}

// ../../node_modules/mdast-util-find-and-replace/lib/index.js
var own6 = {}.hasOwnProperty;
var findAndReplace = (
  /**
   * @type {(
   *   (<Tree extends Node>(tree: Tree, find: Find, replace?: Replace | null | undefined, options?: Options | null | undefined) => Tree) &
   *   (<Tree extends Node>(tree: Tree, schema: FindAndReplaceSchema | FindAndReplaceList, options?: Options | null | undefined) => Tree)
   * )}
   **/
  /**
   * @template {Node} Tree
   * @param {Tree} tree
   * @param {Find | FindAndReplaceSchema | FindAndReplaceList} find
   * @param {Replace | Options | null | undefined} [replace]
   * @param {Options | null | undefined} [options]
   * @returns {Tree}
   */
  (function(tree, find2, replace, options) {
    let settings;
    let schema2;
    if (typeof find2 === "string" || find2 instanceof RegExp) {
      schema2 = [[find2, replace]];
      settings = options;
    } else {
      schema2 = find2;
      settings = replace;
    }
    if (!settings) {
      settings = {};
    }
    const ignored = convert(settings.ignore || []);
    const pairs2 = toPairs(schema2);
    let pairIndex = -1;
    while (++pairIndex < pairs2.length) {
      visitParents(tree, "text", visitor);
    }
    return tree;
    function visitor(node3, parents) {
      let index4 = -1;
      let grandparent;
      while (++index4 < parents.length) {
        const parent2 = parents[index4];
        if (ignored(
          parent2,
          // @ts-expect-error: TS doesn’t understand but it’s perfect.
          grandparent ? grandparent.children.indexOf(parent2) : void 0,
          grandparent
        )) {
          return;
        }
        grandparent = parent2;
      }
      if (grandparent) {
        return handler(node3, parents);
      }
    }
    function handler(node3, parents) {
      const parent2 = parents[parents.length - 1];
      const find3 = pairs2[pairIndex][0];
      const replace2 = pairs2[pairIndex][1];
      let start = 0;
      const index4 = parent2.children.indexOf(node3);
      let change = false;
      let nodes = [];
      find3.lastIndex = 0;
      let match3 = find3.exec(node3.value);
      while (match3) {
        const position6 = match3.index;
        const matchObject = {
          index: match3.index,
          input: match3.input,
          // @ts-expect-error: stack is fine.
          stack: [...parents, node3]
        };
        let value = replace2(...match3, matchObject);
        if (typeof value === "string") {
          value = value.length > 0 ? { type: "text", value } : void 0;
        }
        if (value !== false) {
          if (start !== position6) {
            nodes.push({
              type: "text",
              value: node3.value.slice(start, position6)
            });
          }
          if (Array.isArray(value)) {
            nodes.push(...value);
          } else if (value) {
            nodes.push(value);
          }
          start = position6 + match3[0].length;
          change = true;
        }
        if (!find3.global) {
          break;
        }
        match3 = find3.exec(node3.value);
      }
      if (change) {
        if (start < node3.value.length) {
          nodes.push({ type: "text", value: node3.value.slice(start) });
        }
        parent2.children.splice(index4, 1, ...nodes);
      } else {
        nodes = [node3];
      }
      return index4 + nodes.length;
    }
  })
);
function toPairs(schema2) {
  const result = [];
  if (typeof schema2 !== "object") {
    throw new TypeError("Expected array or object as schema");
  }
  if (Array.isArray(schema2)) {
    let index4 = -1;
    while (++index4 < schema2.length) {
      result.push([
        toExpression(schema2[index4][0]),
        toFunction(schema2[index4][1])
      ]);
    }
  } else {
    let key2;
    for (key2 in schema2) {
      if (own6.call(schema2, key2)) {
        result.push([toExpression(key2), toFunction(schema2[key2])]);
      }
    }
  }
  return result;
}
function toExpression(find2) {
  return typeof find2 === "string" ? new RegExp(escapeStringRegexp(find2), "g") : find2;
}
function toFunction(replace) {
  return typeof replace === "function" ? replace : () => replace;
}

// ../myst-to-html/dist/state.js
var TargetKind2;
(function(TargetKind3) {
  TargetKind3["heading"] = "heading";
  TargetKind3["math"] = "math";
  TargetKind3["figure"] = "figure";
  TargetKind3["table"] = "table";
  TargetKind3["code"] = "code";
})(TargetKind2 || (TargetKind2 = {}));
var ReferenceKind;
(function(ReferenceKind3) {
  ReferenceKind3["ref"] = "ref";
  ReferenceKind3["numref"] = "numref";
  ReferenceKind3["eq"] = "eq";
})(ReferenceKind || (ReferenceKind = {}));
function fillReferenceEnumerators(node3, enumerator) {
  const num = String(enumerator);
  findAndReplace(node3, { "%s": num, "{number}": num });
}
function kindFromNode(node3) {
  return node3.type === "container" ? node3.kind : node3.type;
}
function incrementHeadingCounts(depth, counts) {
  const incrementIndex = depth - 1;
  return counts.map((count2, index4) => {
    if (count2 === null || index4 < incrementIndex)
      return count2;
    if (index4 === incrementIndex)
      return count2 + 1;
    return 0;
  });
}
function formatHeadingEnumerator(counts) {
  counts = counts.filter((d) => d !== null);
  while (counts && counts[counts.length - 1] === 0) {
    counts.pop();
  }
  return counts.join(".");
}
var State2 = class {
  constructor(targetCounts, targets) {
    this.targetCounts = targetCounts || {};
    this.targets = targets || {};
  }
  addTarget(node3) {
    const kind = kindFromNode(node3);
    if (kind && kind in TargetKind2) {
      let enumerator = null;
      if (node3.enumerated !== false) {
        enumerator = this.incrementCount(node3, kind);
        node3.enumerator = enumerator;
      }
      if (node3.identifier) {
        this.targets[node3.identifier] = {
          node: structuredClone(node3),
          kind
        };
      }
    }
  }
  initializeNumberedHeadingDepths(tree) {
    const headings = selectAll("heading", tree).filter((node3) => node3.enumerated !== false);
    const headingDepths = new Set(headings.map((node3) => node3.depth));
    this.targetCounts.heading = [1, 2, 3, 4, 5, 6].map((depth) => headingDepths.has(depth) ? 0 : null);
  }
  incrementCount(node3, kind) {
    if (kind === TargetKind2.heading) {
      if (!this.targetCounts.heading)
        this.targetCounts.heading = [0, 0, 0, 0, 0, 0];
      this.targetCounts.heading = incrementHeadingCounts(node3.depth, this.targetCounts.heading);
      return formatHeadingEnumerator(this.targetCounts.heading);
    }
    if (kind in this.targetCounts) {
      this.targetCounts[kind] += 1;
    } else {
      this.targetCounts[kind] = 1;
    }
    return String(this.targetCounts[kind]);
  }
  getTarget(identifier) {
    if (!identifier)
      return void 0;
    return this.targets[identifier];
  }
  resolveReferenceContent(node3) {
    var _a6;
    const target = this.getTarget(node3.identifier);
    if (!target) {
      return;
    }
    const kinds = {
      ref: {
        eq: node3.kind === ReferenceKind.eq,
        ref: node3.kind === ReferenceKind.ref,
        numref: node3.kind === ReferenceKind.numref
      },
      target: {
        math: target.kind === TargetKind2.math,
        figure: target.kind === TargetKind2.figure,
        table: target.kind === TargetKind2.table,
        heading: target.kind === TargetKind2.heading
      }
    };
    const noNodeChildren = !((_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.length);
    if (kinds.ref.eq && kinds.target.math && target.node.enumerator) {
      if (noNodeChildren) {
        setTextAsChild(node3, `(${target.node.enumerator})`);
      }
      node3.resolved = true;
    } else if (kinds.ref.ref && kinds.target.heading) {
      if (noNodeChildren) {
        node3.children = structuredClone(target.node).children;
      }
      node3.resolved = true;
    } else if (kinds.ref.ref && (kinds.target.figure || kinds.target.table)) {
      if (noNodeChildren) {
        const caption3 = select("caption > paragraph", target.node);
        node3.children = structuredClone(caption3).children;
      }
      node3.resolved = true;
    } else if (kinds.ref.numref && kinds.target.figure && target.node.enumerator) {
      if (noNodeChildren) {
        setTextAsChild(node3, "Figure %s");
      }
      fillReferenceEnumerators(node3, target.node.enumerator);
      node3.resolved = true;
    } else if (kinds.ref.numref && kinds.target.table && target.node.enumerator) {
      if (noNodeChildren) {
        setTextAsChild(node3, "Table %s");
      }
      fillReferenceEnumerators(node3, target.node.enumerator);
      node3.resolved = true;
    }
  }
};
var enumerateTargets = (state, tree, opts) => {
  state.initializeNumberedHeadingDepths(tree);
  if (!opts.disableContainerEnumeration) {
    visit(tree, "container", (node3) => state.addTarget(node3));
  }
  if (!opts.disableEquationEnumeration) {
    visit(tree, "math", (node3) => state.addTarget(node3));
  }
  if (!opts.disableHeadingEnumeration) {
    visit(tree, "heading", (node3) => state.addTarget(node3));
  }
  return tree;
};
var resolveReferences = (state, tree) => {
  selectAll("link", tree).forEach((node3) => {
    const reference = normalizeLabel(node3.url);
    if (reference && reference.identifier in state.targets) {
      node3.type = "crossReference";
      node3.kind = state.targets[reference.identifier].kind === TargetKind2.math ? "eq" : "ref";
      node3.identifier = reference.identifier;
      node3.label = reference.label;
      delete node3.url;
    }
  });
  visit(tree, "crossReference", (node3) => {
    state.resolveReferenceContent(node3);
  });
};

// ../../node_modules/rehype-parse/lib/index.js
var import_parser = __toESM(require_parser(), 1);

// ../../node_modules/property-information/lib/util/schema.js
var Schema2 = class {
  /**
   * @constructor
   * @param {Properties} property
   * @param {Normal} normal
   * @param {string} [space]
   */
  constructor(property, normal, space3) {
    this.property = property;
    this.normal = normal;
    if (space3) {
      this.space = space3;
    }
  }
};
Schema2.prototype.property = {};
Schema2.prototype.normal = {};
Schema2.prototype.space = null;

// ../../node_modules/property-information/lib/util/merge.js
function merge2(definitions2, space3) {
  const property = {};
  const normal = {};
  let index4 = -1;
  while (++index4 < definitions2.length) {
    Object.assign(property, definitions2[index4].property);
    Object.assign(normal, definitions2[index4].normal);
  }
  return new Schema2(property, normal, space3);
}

// ../../node_modules/property-information/lib/normalize.js
function normalize4(value) {
  return value.toLowerCase();
}

// ../../node_modules/property-information/lib/util/info.js
var Info = class {
  /**
   * @constructor
   * @param {string} property
   * @param {string} attribute
   */
  constructor(property, attribute2) {
    this.property = property;
    this.attribute = attribute2;
  }
};
Info.prototype.space = null;
Info.prototype.boolean = false;
Info.prototype.booleanish = false;
Info.prototype.overloadedBoolean = false;
Info.prototype.number = false;
Info.prototype.commaSeparated = false;
Info.prototype.spaceSeparated = false;
Info.prototype.commaOrSpaceSeparated = false;
Info.prototype.mustUseProperty = false;
Info.prototype.defined = false;

// ../../node_modules/property-information/lib/util/types.js
var types_exports = {};
__export(types_exports, {
  boolean: () => boolean,
  booleanish: () => booleanish,
  commaOrSpaceSeparated: () => commaOrSpaceSeparated,
  commaSeparated: () => commaSeparated,
  number: () => number,
  overloadedBoolean: () => overloadedBoolean,
  spaceSeparated: () => spaceSeparated
});
var powers = 0;
var boolean = increment();
var booleanish = increment();
var overloadedBoolean = increment();
var number = increment();
var spaceSeparated = increment();
var commaSeparated = increment();
var commaOrSpaceSeparated = increment();
function increment() {
  return 2 ** ++powers;
}

// ../../node_modules/property-information/lib/util/defined-info.js
var checks = Object.keys(types_exports);
var DefinedInfo = class extends Info {
  /**
   * @constructor
   * @param {string} property
   * @param {string} attribute
   * @param {number|null} [mask]
   * @param {string} [space]
   */
  constructor(property, attribute2, mask2, space3) {
    let index4 = -1;
    super(property, attribute2);
    mark(this, "space", space3);
    if (typeof mask2 === "number") {
      while (++index4 < checks.length) {
        const check2 = checks[index4];
        mark(this, checks[index4], (mask2 & types_exports[check2]) === types_exports[check2]);
      }
    }
  }
};
DefinedInfo.prototype.defined = true;
function mark(values, key2, value) {
  if (value) {
    values[key2] = value;
  }
}

// ../../node_modules/property-information/lib/util/create.js
var own7 = {}.hasOwnProperty;
function create(definition2) {
  const property = {};
  const normal = {};
  let prop;
  for (prop in definition2.properties) {
    if (own7.call(definition2.properties, prop)) {
      const value = definition2.properties[prop];
      const info = new DefinedInfo(
        prop,
        definition2.transform(definition2.attributes || {}, prop),
        value,
        definition2.space
      );
      if (definition2.mustUseProperty && definition2.mustUseProperty.includes(prop)) {
        info.mustUseProperty = true;
      }
      property[prop] = info;
      normal[normalize4(prop)] = prop;
      normal[normalize4(info.attribute)] = prop;
    }
  }
  return new Schema2(property, normal, definition2.space);
}

// ../../node_modules/property-information/lib/xlink.js
var xlink = create({
  space: "xlink",
  transform(_2, prop) {
    return "xlink:" + prop.slice(5).toLowerCase();
  },
  properties: {
    xLinkActuate: null,
    xLinkArcRole: null,
    xLinkHref: null,
    xLinkRole: null,
    xLinkShow: null,
    xLinkTitle: null,
    xLinkType: null
  }
});

// ../../node_modules/property-information/lib/xml.js
var xml = create({
  space: "xml",
  transform(_2, prop) {
    return "xml:" + prop.slice(3).toLowerCase();
  },
  properties: { xmlLang: null, xmlBase: null, xmlSpace: null }
});

// ../../node_modules/property-information/lib/util/case-sensitive-transform.js
function caseSensitiveTransform(attributes, attribute2) {
  return attribute2 in attributes ? attributes[attribute2] : attribute2;
}

// ../../node_modules/property-information/lib/util/case-insensitive-transform.js
function caseInsensitiveTransform(attributes, property) {
  return caseSensitiveTransform(attributes, property.toLowerCase());
}

// ../../node_modules/property-information/lib/xmlns.js
var xmlns = create({
  space: "xmlns",
  attributes: { xmlnsxlink: "xmlns:xlink" },
  transform: caseInsensitiveTransform,
  properties: { xmlns: null, xmlnsXLink: null }
});

// ../../node_modules/property-information/lib/aria.js
var aria = create({
  transform(_2, prop) {
    return prop === "role" ? prop : "aria-" + prop.slice(4).toLowerCase();
  },
  properties: {
    ariaActiveDescendant: null,
    ariaAtomic: booleanish,
    ariaAutoComplete: null,
    ariaBusy: booleanish,
    ariaChecked: booleanish,
    ariaColCount: number,
    ariaColIndex: number,
    ariaColSpan: number,
    ariaControls: spaceSeparated,
    ariaCurrent: null,
    ariaDescribedBy: spaceSeparated,
    ariaDetails: null,
    ariaDisabled: booleanish,
    ariaDropEffect: spaceSeparated,
    ariaErrorMessage: null,
    ariaExpanded: booleanish,
    ariaFlowTo: spaceSeparated,
    ariaGrabbed: booleanish,
    ariaHasPopup: null,
    ariaHidden: booleanish,
    ariaInvalid: null,
    ariaKeyShortcuts: null,
    ariaLabel: null,
    ariaLabelledBy: spaceSeparated,
    ariaLevel: number,
    ariaLive: null,
    ariaModal: booleanish,
    ariaMultiLine: booleanish,
    ariaMultiSelectable: booleanish,
    ariaOrientation: null,
    ariaOwns: spaceSeparated,
    ariaPlaceholder: null,
    ariaPosInSet: number,
    ariaPressed: booleanish,
    ariaReadOnly: booleanish,
    ariaRelevant: null,
    ariaRequired: booleanish,
    ariaRoleDescription: spaceSeparated,
    ariaRowCount: number,
    ariaRowIndex: number,
    ariaRowSpan: number,
    ariaSelected: booleanish,
    ariaSetSize: number,
    ariaSort: null,
    ariaValueMax: number,
    ariaValueMin: number,
    ariaValueNow: number,
    ariaValueText: null,
    role: null
  }
});

// ../../node_modules/property-information/lib/html.js
var html2 = create({
  space: "html",
  attributes: {
    acceptcharset: "accept-charset",
    classname: "class",
    htmlfor: "for",
    httpequiv: "http-equiv"
  },
  transform: caseInsensitiveTransform,
  mustUseProperty: ["checked", "multiple", "muted", "selected"],
  properties: {
    // Standard Properties.
    abbr: null,
    accept: commaSeparated,
    acceptCharset: spaceSeparated,
    accessKey: spaceSeparated,
    action: null,
    allow: null,
    allowFullScreen: boolean,
    allowPaymentRequest: boolean,
    allowUserMedia: boolean,
    alt: null,
    as: null,
    async: boolean,
    autoCapitalize: null,
    autoComplete: spaceSeparated,
    autoFocus: boolean,
    autoPlay: boolean,
    capture: boolean,
    charSet: null,
    checked: boolean,
    cite: null,
    className: spaceSeparated,
    cols: number,
    colSpan: null,
    content: null,
    contentEditable: booleanish,
    controls: boolean,
    controlsList: spaceSeparated,
    coords: number | commaSeparated,
    crossOrigin: null,
    data: null,
    dateTime: null,
    decoding: null,
    default: boolean,
    defer: boolean,
    dir: null,
    dirName: null,
    disabled: boolean,
    download: overloadedBoolean,
    draggable: booleanish,
    encType: null,
    enterKeyHint: null,
    form: null,
    formAction: null,
    formEncType: null,
    formMethod: null,
    formNoValidate: boolean,
    formTarget: null,
    headers: spaceSeparated,
    height: number,
    hidden: boolean,
    high: number,
    href: null,
    hrefLang: null,
    htmlFor: spaceSeparated,
    httpEquiv: spaceSeparated,
    id: null,
    imageSizes: null,
    imageSrcSet: null,
    inputMode: null,
    integrity: null,
    is: null,
    isMap: boolean,
    itemId: null,
    itemProp: spaceSeparated,
    itemRef: spaceSeparated,
    itemScope: boolean,
    itemType: spaceSeparated,
    kind: null,
    label: null,
    lang: null,
    language: null,
    list: null,
    loading: null,
    loop: boolean,
    low: number,
    manifest: null,
    max: null,
    maxLength: number,
    media: null,
    method: null,
    min: null,
    minLength: number,
    multiple: boolean,
    muted: boolean,
    name: null,
    nonce: null,
    noModule: boolean,
    noValidate: boolean,
    onAbort: null,
    onAfterPrint: null,
    onAuxClick: null,
    onBeforeMatch: null,
    onBeforePrint: null,
    onBeforeUnload: null,
    onBlur: null,
    onCancel: null,
    onCanPlay: null,
    onCanPlayThrough: null,
    onChange: null,
    onClick: null,
    onClose: null,
    onContextLost: null,
    onContextMenu: null,
    onContextRestored: null,
    onCopy: null,
    onCueChange: null,
    onCut: null,
    onDblClick: null,
    onDrag: null,
    onDragEnd: null,
    onDragEnter: null,
    onDragExit: null,
    onDragLeave: null,
    onDragOver: null,
    onDragStart: null,
    onDrop: null,
    onDurationChange: null,
    onEmptied: null,
    onEnded: null,
    onError: null,
    onFocus: null,
    onFormData: null,
    onHashChange: null,
    onInput: null,
    onInvalid: null,
    onKeyDown: null,
    onKeyPress: null,
    onKeyUp: null,
    onLanguageChange: null,
    onLoad: null,
    onLoadedData: null,
    onLoadedMetadata: null,
    onLoadEnd: null,
    onLoadStart: null,
    onMessage: null,
    onMessageError: null,
    onMouseDown: null,
    onMouseEnter: null,
    onMouseLeave: null,
    onMouseMove: null,
    onMouseOut: null,
    onMouseOver: null,
    onMouseUp: null,
    onOffline: null,
    onOnline: null,
    onPageHide: null,
    onPageShow: null,
    onPaste: null,
    onPause: null,
    onPlay: null,
    onPlaying: null,
    onPopState: null,
    onProgress: null,
    onRateChange: null,
    onRejectionHandled: null,
    onReset: null,
    onResize: null,
    onScroll: null,
    onScrollEnd: null,
    onSecurityPolicyViolation: null,
    onSeeked: null,
    onSeeking: null,
    onSelect: null,
    onSlotChange: null,
    onStalled: null,
    onStorage: null,
    onSubmit: null,
    onSuspend: null,
    onTimeUpdate: null,
    onToggle: null,
    onUnhandledRejection: null,
    onUnload: null,
    onVolumeChange: null,
    onWaiting: null,
    onWheel: null,
    open: boolean,
    optimum: number,
    pattern: null,
    ping: spaceSeparated,
    placeholder: null,
    playsInline: boolean,
    poster: null,
    preload: null,
    readOnly: boolean,
    referrerPolicy: null,
    rel: spaceSeparated,
    required: boolean,
    reversed: boolean,
    rows: number,
    rowSpan: number,
    sandbox: spaceSeparated,
    scope: null,
    scoped: boolean,
    seamless: boolean,
    selected: boolean,
    shape: null,
    size: number,
    sizes: null,
    slot: null,
    span: number,
    spellCheck: booleanish,
    src: null,
    srcDoc: null,
    srcLang: null,
    srcSet: null,
    start: number,
    step: null,
    style: null,
    tabIndex: number,
    target: null,
    title: null,
    translate: null,
    type: null,
    typeMustMatch: boolean,
    useMap: null,
    value: booleanish,
    width: number,
    wrap: null,
    // Legacy.
    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis
    align: null,
    // Several. Use CSS `text-align` instead,
    aLink: null,
    // `<body>`. Use CSS `a:active {color}` instead
    archive: spaceSeparated,
    // `<object>`. List of URIs to archives
    axis: null,
    // `<td>` and `<th>`. Use `scope` on `<th>`
    background: null,
    // `<body>`. Use CSS `background-image` instead
    bgColor: null,
    // `<body>` and table elements. Use CSS `background-color` instead
    border: number,
    // `<table>`. Use CSS `border-width` instead,
    borderColor: null,
    // `<table>`. Use CSS `border-color` instead,
    bottomMargin: number,
    // `<body>`
    cellPadding: null,
    // `<table>`
    cellSpacing: null,
    // `<table>`
    char: null,
    // Several table elements. When `align=char`, sets the character to align on
    charOff: null,
    // Several table elements. When `char`, offsets the alignment
    classId: null,
    // `<object>`
    clear: null,
    // `<br>`. Use CSS `clear` instead
    code: null,
    // `<object>`
    codeBase: null,
    // `<object>`
    codeType: null,
    // `<object>`
    color: null,
    // `<font>` and `<hr>`. Use CSS instead
    compact: boolean,
    // Lists. Use CSS to reduce space between items instead
    declare: boolean,
    // `<object>`
    event: null,
    // `<script>`
    face: null,
    // `<font>`. Use CSS instead
    frame: null,
    // `<table>`
    frameBorder: null,
    // `<iframe>`. Use CSS `border` instead
    hSpace: number,
    // `<img>` and `<object>`
    leftMargin: number,
    // `<body>`
    link: null,
    // `<body>`. Use CSS `a:link {color: *}` instead
    longDesc: null,
    // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`
    lowSrc: null,
    // `<img>`. Use a `<picture>`
    marginHeight: number,
    // `<body>`
    marginWidth: number,
    // `<body>`
    noResize: boolean,
    // `<frame>`
    noHref: boolean,
    // `<area>`. Use no href instead of an explicit `nohref`
    noShade: boolean,
    // `<hr>`. Use background-color and height instead of borders
    noWrap: boolean,
    // `<td>` and `<th>`
    object: null,
    // `<applet>`
    profile: null,
    // `<head>`
    prompt: null,
    // `<isindex>`
    rev: null,
    // `<link>`
    rightMargin: number,
    // `<body>`
    rules: null,
    // `<table>`
    scheme: null,
    // `<meta>`
    scrolling: booleanish,
    // `<frame>`. Use overflow in the child context
    standby: null,
    // `<object>`
    summary: null,
    // `<table>`
    text: null,
    // `<body>`. Use CSS `color` instead
    topMargin: number,
    // `<body>`
    valueType: null,
    // `<param>`
    version: null,
    // `<html>`. Use a doctype.
    vAlign: null,
    // Several. Use CSS `vertical-align` instead
    vLink: null,
    // `<body>`. Use CSS `a:visited {color}` instead
    vSpace: number,
    // `<img>` and `<object>`
    // Non-standard Properties.
    allowTransparency: null,
    autoCorrect: null,
    autoSave: null,
    disablePictureInPicture: boolean,
    disableRemotePlayback: boolean,
    prefix: null,
    property: null,
    results: number,
    security: null,
    unselectable: null
  }
});

// ../../node_modules/property-information/lib/svg.js
var svg = create({
  space: "svg",
  attributes: {
    accentHeight: "accent-height",
    alignmentBaseline: "alignment-baseline",
    arabicForm: "arabic-form",
    baselineShift: "baseline-shift",
    capHeight: "cap-height",
    className: "class",
    clipPath: "clip-path",
    clipRule: "clip-rule",
    colorInterpolation: "color-interpolation",
    colorInterpolationFilters: "color-interpolation-filters",
    colorProfile: "color-profile",
    colorRendering: "color-rendering",
    crossOrigin: "crossorigin",
    dataType: "datatype",
    dominantBaseline: "dominant-baseline",
    enableBackground: "enable-background",
    fillOpacity: "fill-opacity",
    fillRule: "fill-rule",
    floodColor: "flood-color",
    floodOpacity: "flood-opacity",
    fontFamily: "font-family",
    fontSize: "font-size",
    fontSizeAdjust: "font-size-adjust",
    fontStretch: "font-stretch",
    fontStyle: "font-style",
    fontVariant: "font-variant",
    fontWeight: "font-weight",
    glyphName: "glyph-name",
    glyphOrientationHorizontal: "glyph-orientation-horizontal",
    glyphOrientationVertical: "glyph-orientation-vertical",
    hrefLang: "hreflang",
    horizAdvX: "horiz-adv-x",
    horizOriginX: "horiz-origin-x",
    horizOriginY: "horiz-origin-y",
    imageRendering: "image-rendering",
    letterSpacing: "letter-spacing",
    lightingColor: "lighting-color",
    markerEnd: "marker-end",
    markerMid: "marker-mid",
    markerStart: "marker-start",
    navDown: "nav-down",
    navDownLeft: "nav-down-left",
    navDownRight: "nav-down-right",
    navLeft: "nav-left",
    navNext: "nav-next",
    navPrev: "nav-prev",
    navRight: "nav-right",
    navUp: "nav-up",
    navUpLeft: "nav-up-left",
    navUpRight: "nav-up-right",
    onAbort: "onabort",
    onActivate: "onactivate",
    onAfterPrint: "onafterprint",
    onBeforePrint: "onbeforeprint",
    onBegin: "onbegin",
    onCancel: "oncancel",
    onCanPlay: "oncanplay",
    onCanPlayThrough: "oncanplaythrough",
    onChange: "onchange",
    onClick: "onclick",
    onClose: "onclose",
    onCopy: "oncopy",
    onCueChange: "oncuechange",
    onCut: "oncut",
    onDblClick: "ondblclick",
    onDrag: "ondrag",
    onDragEnd: "ondragend",
    onDragEnter: "ondragenter",
    onDragExit: "ondragexit",
    onDragLeave: "ondragleave",
    onDragOver: "ondragover",
    onDragStart: "ondragstart",
    onDrop: "ondrop",
    onDurationChange: "ondurationchange",
    onEmptied: "onemptied",
    onEnd: "onend",
    onEnded: "onended",
    onError: "onerror",
    onFocus: "onfocus",
    onFocusIn: "onfocusin",
    onFocusOut: "onfocusout",
    onHashChange: "onhashchange",
    onInput: "oninput",
    onInvalid: "oninvalid",
    onKeyDown: "onkeydown",
    onKeyPress: "onkeypress",
    onKeyUp: "onkeyup",
    onLoad: "onload",
    onLoadedData: "onloadeddata",
    onLoadedMetadata: "onloadedmetadata",
    onLoadStart: "onloadstart",
    onMessage: "onmessage",
    onMouseDown: "onmousedown",
    onMouseEnter: "onmouseenter",
    onMouseLeave: "onmouseleave",
    onMouseMove: "onmousemove",
    onMouseOut: "onmouseout",
    onMouseOver: "onmouseover",
    onMouseUp: "onmouseup",
    onMouseWheel: "onmousewheel",
    onOffline: "onoffline",
    onOnline: "ononline",
    onPageHide: "onpagehide",
    onPageShow: "onpageshow",
    onPaste: "onpaste",
    onPause: "onpause",
    onPlay: "onplay",
    onPlaying: "onplaying",
    onPopState: "onpopstate",
    onProgress: "onprogress",
    onRateChange: "onratechange",
    onRepeat: "onrepeat",
    onReset: "onreset",
    onResize: "onresize",
    onScroll: "onscroll",
    onSeeked: "onseeked",
    onSeeking: "onseeking",
    onSelect: "onselect",
    onShow: "onshow",
    onStalled: "onstalled",
    onStorage: "onstorage",
    onSubmit: "onsubmit",
    onSuspend: "onsuspend",
    onTimeUpdate: "ontimeupdate",
    onToggle: "ontoggle",
    onUnload: "onunload",
    onVolumeChange: "onvolumechange",
    onWaiting: "onwaiting",
    onZoom: "onzoom",
    overlinePosition: "overline-position",
    overlineThickness: "overline-thickness",
    paintOrder: "paint-order",
    panose1: "panose-1",
    pointerEvents: "pointer-events",
    referrerPolicy: "referrerpolicy",
    renderingIntent: "rendering-intent",
    shapeRendering: "shape-rendering",
    stopColor: "stop-color",
    stopOpacity: "stop-opacity",
    strikethroughPosition: "strikethrough-position",
    strikethroughThickness: "strikethrough-thickness",
    strokeDashArray: "stroke-dasharray",
    strokeDashOffset: "stroke-dashoffset",
    strokeLineCap: "stroke-linecap",
    strokeLineJoin: "stroke-linejoin",
    strokeMiterLimit: "stroke-miterlimit",
    strokeOpacity: "stroke-opacity",
    strokeWidth: "stroke-width",
    tabIndex: "tabindex",
    textAnchor: "text-anchor",
    textDecoration: "text-decoration",
    textRendering: "text-rendering",
    typeOf: "typeof",
    underlinePosition: "underline-position",
    underlineThickness: "underline-thickness",
    unicodeBidi: "unicode-bidi",
    unicodeRange: "unicode-range",
    unitsPerEm: "units-per-em",
    vAlphabetic: "v-alphabetic",
    vHanging: "v-hanging",
    vIdeographic: "v-ideographic",
    vMathematical: "v-mathematical",
    vectorEffect: "vector-effect",
    vertAdvY: "vert-adv-y",
    vertOriginX: "vert-origin-x",
    vertOriginY: "vert-origin-y",
    wordSpacing: "word-spacing",
    writingMode: "writing-mode",
    xHeight: "x-height",
    // These were camelcased in Tiny. Now lowercased in SVG 2
    playbackOrder: "playbackorder",
    timelineBegin: "timelinebegin"
  },
  transform: caseSensitiveTransform,
  properties: {
    about: commaOrSpaceSeparated,
    accentHeight: number,
    accumulate: null,
    additive: null,
    alignmentBaseline: null,
    alphabetic: number,
    amplitude: number,
    arabicForm: null,
    ascent: number,
    attributeName: null,
    attributeType: null,
    azimuth: number,
    bandwidth: null,
    baselineShift: null,
    baseFrequency: null,
    baseProfile: null,
    bbox: null,
    begin: null,
    bias: number,
    by: null,
    calcMode: null,
    capHeight: number,
    className: spaceSeparated,
    clip: null,
    clipPath: null,
    clipPathUnits: null,
    clipRule: null,
    color: null,
    colorInterpolation: null,
    colorInterpolationFilters: null,
    colorProfile: null,
    colorRendering: null,
    content: null,
    contentScriptType: null,
    contentStyleType: null,
    crossOrigin: null,
    cursor: null,
    cx: null,
    cy: null,
    d: null,
    dataType: null,
    defaultAction: null,
    descent: number,
    diffuseConstant: number,
    direction: null,
    display: null,
    dur: null,
    divisor: number,
    dominantBaseline: null,
    download: boolean,
    dx: null,
    dy: null,
    edgeMode: null,
    editable: null,
    elevation: number,
    enableBackground: null,
    end: null,
    event: null,
    exponent: number,
    externalResourcesRequired: null,
    fill: null,
    fillOpacity: number,
    fillRule: null,
    filter: null,
    filterRes: null,
    filterUnits: null,
    floodColor: null,
    floodOpacity: null,
    focusable: null,
    focusHighlight: null,
    fontFamily: null,
    fontSize: null,
    fontSizeAdjust: null,
    fontStretch: null,
    fontStyle: null,
    fontVariant: null,
    fontWeight: null,
    format: null,
    fr: null,
    from: null,
    fx: null,
    fy: null,
    g1: commaSeparated,
    g2: commaSeparated,
    glyphName: commaSeparated,
    glyphOrientationHorizontal: null,
    glyphOrientationVertical: null,
    glyphRef: null,
    gradientTransform: null,
    gradientUnits: null,
    handler: null,
    hanging: number,
    hatchContentUnits: null,
    hatchUnits: null,
    height: null,
    href: null,
    hrefLang: null,
    horizAdvX: number,
    horizOriginX: number,
    horizOriginY: number,
    id: null,
    ideographic: number,
    imageRendering: null,
    initialVisibility: null,
    in: null,
    in2: null,
    intercept: number,
    k: number,
    k1: number,
    k2: number,
    k3: number,
    k4: number,
    kernelMatrix: commaOrSpaceSeparated,
    kernelUnitLength: null,
    keyPoints: null,
    // SEMI_COLON_SEPARATED
    keySplines: null,
    // SEMI_COLON_SEPARATED
    keyTimes: null,
    // SEMI_COLON_SEPARATED
    kerning: null,
    lang: null,
    lengthAdjust: null,
    letterSpacing: null,
    lightingColor: null,
    limitingConeAngle: number,
    local: null,
    markerEnd: null,
    markerMid: null,
    markerStart: null,
    markerHeight: null,
    markerUnits: null,
    markerWidth: null,
    mask: null,
    maskContentUnits: null,
    maskUnits: null,
    mathematical: null,
    max: null,
    media: null,
    mediaCharacterEncoding: null,
    mediaContentEncodings: null,
    mediaSize: number,
    mediaTime: null,
    method: null,
    min: null,
    mode: null,
    name: null,
    navDown: null,
    navDownLeft: null,
    navDownRight: null,
    navLeft: null,
    navNext: null,
    navPrev: null,
    navRight: null,
    navUp: null,
    navUpLeft: null,
    navUpRight: null,
    numOctaves: null,
    observer: null,
    offset: null,
    onAbort: null,
    onActivate: null,
    onAfterPrint: null,
    onBeforePrint: null,
    onBegin: null,
    onCancel: null,
    onCanPlay: null,
    onCanPlayThrough: null,
    onChange: null,
    onClick: null,
    onClose: null,
    onCopy: null,
    onCueChange: null,
    onCut: null,
    onDblClick: null,
    onDrag: null,
    onDragEnd: null,
    onDragEnter: null,
    onDragExit: null,
    onDragLeave: null,
    onDragOver: null,
    onDragStart: null,
    onDrop: null,
    onDurationChange: null,
    onEmptied: null,
    onEnd: null,
    onEnded: null,
    onError: null,
    onFocus: null,
    onFocusIn: null,
    onFocusOut: null,
    onHashChange: null,
    onInput: null,
    onInvalid: null,
    onKeyDown: null,
    onKeyPress: null,
    onKeyUp: null,
    onLoad: null,
    onLoadedData: null,
    onLoadedMetadata: null,
    onLoadStart: null,
    onMessage: null,
    onMouseDown: null,
    onMouseEnter: null,
    onMouseLeave: null,
    onMouseMove: null,
    onMouseOut: null,
    onMouseOver: null,
    onMouseUp: null,
    onMouseWheel: null,
    onOffline: null,
    onOnline: null,
    onPageHide: null,
    onPageShow: null,
    onPaste: null,
    onPause: null,
    onPlay: null,
    onPlaying: null,
    onPopState: null,
    onProgress: null,
    onRateChange: null,
    onRepeat: null,
    onReset: null,
    onResize: null,
    onScroll: null,
    onSeeked: null,
    onSeeking: null,
    onSelect: null,
    onShow: null,
    onStalled: null,
    onStorage: null,
    onSubmit: null,
    onSuspend: null,
    onTimeUpdate: null,
    onToggle: null,
    onUnload: null,
    onVolumeChange: null,
    onWaiting: null,
    onZoom: null,
    opacity: null,
    operator: null,
    order: null,
    orient: null,
    orientation: null,
    origin: null,
    overflow: null,
    overlay: null,
    overlinePosition: number,
    overlineThickness: number,
    paintOrder: null,
    panose1: null,
    path: null,
    pathLength: number,
    patternContentUnits: null,
    patternTransform: null,
    patternUnits: null,
    phase: null,
    ping: spaceSeparated,
    pitch: null,
    playbackOrder: null,
    pointerEvents: null,
    points: null,
    pointsAtX: number,
    pointsAtY: number,
    pointsAtZ: number,
    preserveAlpha: null,
    preserveAspectRatio: null,
    primitiveUnits: null,
    propagate: null,
    property: commaOrSpaceSeparated,
    r: null,
    radius: null,
    referrerPolicy: null,
    refX: null,
    refY: null,
    rel: commaOrSpaceSeparated,
    rev: commaOrSpaceSeparated,
    renderingIntent: null,
    repeatCount: null,
    repeatDur: null,
    requiredExtensions: commaOrSpaceSeparated,
    requiredFeatures: commaOrSpaceSeparated,
    requiredFonts: commaOrSpaceSeparated,
    requiredFormats: commaOrSpaceSeparated,
    resource: null,
    restart: null,
    result: null,
    rotate: null,
    rx: null,
    ry: null,
    scale: null,
    seed: null,
    shapeRendering: null,
    side: null,
    slope: null,
    snapshotTime: null,
    specularConstant: number,
    specularExponent: number,
    spreadMethod: null,
    spacing: null,
    startOffset: null,
    stdDeviation: null,
    stemh: null,
    stemv: null,
    stitchTiles: null,
    stopColor: null,
    stopOpacity: null,
    strikethroughPosition: number,
    strikethroughThickness: number,
    string: null,
    stroke: null,
    strokeDashArray: commaOrSpaceSeparated,
    strokeDashOffset: null,
    strokeLineCap: null,
    strokeLineJoin: null,
    strokeMiterLimit: number,
    strokeOpacity: number,
    strokeWidth: null,
    style: null,
    surfaceScale: number,
    syncBehavior: null,
    syncBehaviorDefault: null,
    syncMaster: null,
    syncTolerance: null,
    syncToleranceDefault: null,
    systemLanguage: commaOrSpaceSeparated,
    tabIndex: number,
    tableValues: null,
    target: null,
    targetX: number,
    targetY: number,
    textAnchor: null,
    textDecoration: null,
    textRendering: null,
    textLength: null,
    timelineBegin: null,
    title: null,
    transformBehavior: null,
    type: null,
    typeOf: commaOrSpaceSeparated,
    to: null,
    transform: null,
    u1: null,
    u2: null,
    underlinePosition: number,
    underlineThickness: number,
    unicode: null,
    unicodeBidi: null,
    unicodeRange: null,
    unitsPerEm: number,
    values: null,
    vAlphabetic: number,
    vMathematical: number,
    vectorEffect: null,
    vHanging: number,
    vIdeographic: number,
    version: null,
    vertAdvY: number,
    vertOriginX: number,
    vertOriginY: number,
    viewBox: null,
    viewTarget: null,
    visibility: null,
    width: null,
    widths: null,
    wordSpacing: null,
    writingMode: null,
    x: null,
    x1: null,
    x2: null,
    xChannelSelector: null,
    xHeight: number,
    y: null,
    y1: null,
    y2: null,
    yChannelSelector: null,
    z: null,
    zoomAndPan: null
  }
});

// ../../node_modules/property-information/lib/find.js
var valid = /^data[-\w.:]+$/i;
var dash = /-[a-z]/g;
var cap = /[A-Z]/g;
function find(schema2, value) {
  const normal = normalize4(value);
  let prop = value;
  let Type2 = Info;
  if (normal in schema2.normal) {
    return schema2.property[schema2.normal[normal]];
  }
  if (normal.length > 4 && normal.slice(0, 4) === "data" && valid.test(value)) {
    if (value.charAt(4) === "-") {
      const rest = value.slice(5).replace(dash, camelcase);
      prop = "data" + rest.charAt(0).toUpperCase() + rest.slice(1);
    } else {
      const rest = value.slice(4);
      if (!dash.test(rest)) {
        let dashes = rest.replace(cap, kebab);
        if (dashes.charAt(0) !== "-") {
          dashes = "-" + dashes;
        }
        value = "data" + dashes;
      }
    }
    Type2 = DefinedInfo;
  }
  return new Type2(prop, value);
}
function kebab($0) {
  return "-" + $0.toLowerCase();
}
function camelcase($0) {
  return $0.charAt(1).toUpperCase();
}

// ../../node_modules/property-information/index.js
var html3 = merge2([xml, xlink, xmlns, aria, html2], "html");
var svg2 = merge2([xml, xlink, xmlns, aria, svg], "svg");

// ../../node_modules/hast-util-parse-selector/lib/index.js
var search = /[#.]/g;
function parseSelector(selector, defaultTagName) {
  const value = selector || "";
  const props = {};
  let start = 0;
  let previous;
  let tagName;
  while (start < value.length) {
    search.lastIndex = start;
    const match3 = search.exec(value);
    const subvalue = value.slice(start, match3 ? match3.index : value.length);
    if (subvalue) {
      if (!previous) {
        tagName = subvalue;
      } else if (previous === "#") {
        props.id = subvalue;
      } else if (Array.isArray(props.className)) {
        props.className.push(subvalue);
      } else {
        props.className = [subvalue];
      }
      start += subvalue.length;
    }
    if (match3) {
      previous = match3[0];
      start++;
    }
  }
  return {
    type: "element",
    // @ts-expect-error: fine.
    tagName: tagName || defaultTagName || "div",
    properties: props,
    children: []
  };
}

// ../../node_modules/space-separated-tokens/index.js
function parse3(value) {
  const input3 = String(value || "").trim();
  return input3 ? input3.split(/[ \t\n\r\f]+/g) : [];
}
function stringify(values) {
  return values.join(" ").trim();
}

// ../../node_modules/comma-separated-tokens/index.js
function parse4(value) {
  const tokens = [];
  const input3 = String(value || "");
  let index4 = input3.indexOf(",");
  let start = 0;
  let end = false;
  while (!end) {
    if (index4 === -1) {
      index4 = input3.length;
      end = true;
    }
    const token = input3.slice(start, index4).trim();
    if (token || !end) {
      tokens.push(token);
    }
    start = index4 + 1;
    index4 = input3.indexOf(",", start);
  }
  return tokens;
}
function stringify2(values, options) {
  const settings = options || {};
  const input3 = values[values.length - 1] === "" ? [...values, ""] : values;
  return input3.join(
    (settings.padRight ? " " : "") + "," + (settings.padLeft === false ? "" : " ")
  ).trim();
}

// ../../node_modules/hastscript/lib/core.js
var buttonTypes = /* @__PURE__ */ new Set(["menu", "submit", "reset", "button"]);
var own8 = {}.hasOwnProperty;
function core2(schema2, defaultTagName, caseSensitive) {
  const adjust = caseSensitive && createAdjustMap(caseSensitive);
  const h4 = (
    /**
     * @type {{
     *   (): Root
     *   (selector: null | undefined, ...children: Array<HChild>): Root
     *   (selector: string, properties?: HProperties, ...children: Array<HChild>): Element
     *   (selector: string, ...children: Array<HChild>): Element
     * }}
     */
    /**
     * Hyperscript compatible DSL for creating virtual hast trees.
     *
     * @param {string | null} [selector]
     * @param {HProperties | HChild} [properties]
     * @param {Array<HChild>} children
     * @returns {HResult}
     */
    (function(selector, properties, ...children) {
      let index4 = -1;
      let node3;
      if (selector === void 0 || selector === null) {
        node3 = { type: "root", children: [] };
        children.unshift(properties);
      } else {
        node3 = parseSelector(selector, defaultTagName);
        node3.tagName = node3.tagName.toLowerCase();
        if (adjust && own8.call(adjust, node3.tagName)) {
          node3.tagName = adjust[node3.tagName];
        }
        if (isProperties(properties, node3.tagName)) {
          let key2;
          for (key2 in properties) {
            if (own8.call(properties, key2)) {
              addProperty(schema2, node3.properties, key2, properties[key2]);
            }
          }
        } else {
          children.unshift(properties);
        }
      }
      while (++index4 < children.length) {
        addChild(node3.children, children[index4]);
      }
      if (node3.type === "element" && node3.tagName === "template") {
        node3.content = { type: "root", children: node3.children };
        node3.children = [];
      }
      return node3;
    })
  );
  return h4;
}
function isProperties(value, name3) {
  if (value === null || value === void 0 || typeof value !== "object" || Array.isArray(value)) {
    return false;
  }
  if (name3 === "input" || !value.type || typeof value.type !== "string") {
    return true;
  }
  if ("children" in value && Array.isArray(value.children)) {
    return false;
  }
  if (name3 === "button") {
    return buttonTypes.has(value.type.toLowerCase());
  }
  return !("value" in value);
}
function addProperty(schema2, properties, key2, value) {
  const info = find(schema2, key2);
  let index4 = -1;
  let result;
  if (value === void 0 || value === null) return;
  if (typeof value === "number") {
    if (Number.isNaN(value)) return;
    result = value;
  } else if (typeof value === "boolean") {
    result = value;
  } else if (typeof value === "string") {
    if (info.spaceSeparated) {
      result = parse3(value);
    } else if (info.commaSeparated) {
      result = parse4(value);
    } else if (info.commaOrSpaceSeparated) {
      result = parse3(parse4(value).join(" "));
    } else {
      result = parsePrimitive(info, info.property, value);
    }
  } else if (Array.isArray(value)) {
    result = value.concat();
  } else {
    result = info.property === "style" ? style(value) : String(value);
  }
  if (Array.isArray(result)) {
    const finalResult = [];
    while (++index4 < result.length) {
      finalResult[index4] = parsePrimitive(info, info.property, result[index4]);
    }
    result = finalResult;
  }
  if (info.property === "className" && Array.isArray(properties.className)) {
    result = properties.className.concat(result);
  }
  properties[info.property] = result;
}
function addChild(nodes, value) {
  let index4 = -1;
  if (value === void 0 || value === null) {
  } else if (typeof value === "string" || typeof value === "number") {
    nodes.push({ type: "text", value: String(value) });
  } else if (Array.isArray(value)) {
    while (++index4 < value.length) {
      addChild(nodes, value[index4]);
    }
  } else if (typeof value === "object" && "type" in value) {
    if (value.type === "root") {
      addChild(nodes, value.children);
    } else {
      nodes.push(value);
    }
  } else {
    throw new Error("Expected node, nodes, or string, got `" + value + "`");
  }
}
function parsePrimitive(info, name3, value) {
  if (typeof value === "string") {
    if (info.number && value && !Number.isNaN(Number(value))) {
      return Number(value);
    }
    if ((info.boolean || info.overloadedBoolean) && (value === "" || normalize4(value) === normalize4(name3))) {
      return true;
    }
  }
  return value;
}
function style(value) {
  const result = [];
  let key2;
  for (key2 in value) {
    if (own8.call(value, key2)) {
      result.push([key2, value[key2]].join(": "));
    }
  }
  return result.join("; ");
}
function createAdjustMap(values) {
  const result = {};
  let index4 = -1;
  while (++index4 < values.length) {
    result[values[index4].toLowerCase()] = values[index4];
  }
  return result;
}

// ../../node_modules/hastscript/lib/html.js
var h = core2(html3, "div");

// ../../node_modules/hastscript/lib/svg-case-sensitive-tag-names.js
var svgCaseSensitiveTagNames = [
  "altGlyph",
  "altGlyphDef",
  "altGlyphItem",
  "animateColor",
  "animateMotion",
  "animateTransform",
  "clipPath",
  "feBlend",
  "feColorMatrix",
  "feComponentTransfer",
  "feComposite",
  "feConvolveMatrix",
  "feDiffuseLighting",
  "feDisplacementMap",
  "feDistantLight",
  "feDropShadow",
  "feFlood",
  "feFuncA",
  "feFuncB",
  "feFuncG",
  "feFuncR",
  "feGaussianBlur",
  "feImage",
  "feMerge",
  "feMergeNode",
  "feMorphology",
  "feOffset",
  "fePointLight",
  "feSpecularLighting",
  "feSpotLight",
  "feTile",
  "feTurbulence",
  "foreignObject",
  "glyphRef",
  "linearGradient",
  "radialGradient",
  "solidColor",
  "textArea",
  "textPath"
];

// ../../node_modules/hastscript/lib/svg.js
var s = core2(svg2, "g", svgCaseSensitiveTagNames);

// ../../node_modules/vfile-location/lib/index.js
function location2(file) {
  const value = String(file);
  const indices = [];
  const search4 = /\r?\n|\r/g;
  while (search4.test(value)) {
    indices.push(search4.lastIndex);
  }
  indices.push(value.length + 1);
  return { toPoint, toOffset };
  function toPoint(offset) {
    let index4 = -1;
    if (typeof offset === "number" && offset > -1 && offset < indices[indices.length - 1]) {
      while (++index4 < indices.length) {
        if (indices[index4] > offset) {
          return {
            line: index4 + 1,
            column: offset - (index4 > 0 ? indices[index4 - 1] : 0) + 1,
            offset
          };
        }
      }
    }
    return { line: void 0, column: void 0, offset: void 0 };
  }
  function toOffset(point6) {
    const line2 = point6 && point6.line;
    const column = point6 && point6.column;
    if (typeof line2 === "number" && typeof column === "number" && !Number.isNaN(line2) && !Number.isNaN(column) && line2 - 1 in indices) {
      const offset = (indices[line2 - 2] || 0) + column - 1 || 0;
      if (offset > -1 && offset < indices[indices.length - 1]) {
        return offset;
      }
    }
    return -1;
  }
}

// ../../node_modules/web-namespaces/index.js
var webNamespaces = {
  html: "http://www.w3.org/1999/xhtml",
  mathml: "http://www.w3.org/1998/Math/MathML",
  svg: "http://www.w3.org/2000/svg",
  xlink: "http://www.w3.org/1999/xlink",
  xml: "http://www.w3.org/XML/1998/namespace",
  xmlns: "http://www.w3.org/2000/xmlns/"
};

// ../../node_modules/hast-util-from-parse5/lib/index.js
var own9 = {}.hasOwnProperty;
var proto3 = Object.prototype;
function fromParse5(tree, options) {
  const options_ = options || {};
  let settings;
  let file;
  if (isFile2(options_)) {
    file = options_;
    settings = {};
  } else {
    file = options_.file || void 0;
    settings = options_;
  }
  return one3(
    {
      schema: settings.space === "svg" ? svg2 : html3,
      file,
      verbose: settings.verbose,
      location: false
    },
    tree
  );
}
function one3(state, node3) {
  let result;
  switch (node3.nodeName) {
    case "#comment": {
      const reference = (
        /** @type {P5Comment} */
        node3
      );
      result = { type: "comment", value: reference.data };
      patch2(state, reference, result);
      return result;
    }
    case "#document":
    case "#document-fragment": {
      const reference = (
        /** @type {P5Document | P5DocumentFragment} */
        node3
      );
      const quirksMode = "mode" in reference ? reference.mode === "quirks" || reference.mode === "limited-quirks" : false;
      result = {
        type: "root",
        children: all4(state, node3.childNodes),
        data: { quirksMode }
      };
      if (state.file && state.location) {
        const doc = String(state.file);
        const loc = location2(doc);
        const start = loc.toPoint(0);
        const end = loc.toPoint(doc.length);
        result.position = { start, end };
      }
      return result;
    }
    case "#documentType": {
      const reference = (
        /** @type {P5DocumentType} */
        node3
      );
      result = { type: "doctype" };
      patch2(state, reference, result);
      return result;
    }
    case "#text": {
      const reference = (
        /** @type {P5Text} */
        node3
      );
      result = { type: "text", value: reference.value };
      patch2(state, reference, result);
      return result;
    }
    // Element.
    default: {
      const reference = (
        /** @type {P5Element} */
        node3
      );
      result = element2(state, reference);
      return result;
    }
  }
}
function all4(state, nodes) {
  let index4 = -1;
  const result = [];
  while (++index4 < nodes.length) {
    result[index4] = one3(state, nodes[index4]);
  }
  return result;
}
function element2(state, node3) {
  const schema2 = state.schema;
  state.schema = node3.namespaceURI === webNamespaces.svg ? svg2 : html3;
  let index4 = -1;
  const props = {};
  while (++index4 < node3.attrs.length) {
    const attribute2 = node3.attrs[index4];
    const name3 = (attribute2.prefix ? attribute2.prefix + ":" : "") + attribute2.name;
    if (!own9.call(proto3, name3)) {
      props[name3] = attribute2.value;
    }
  }
  const fn = state.schema.space === "svg" ? s : h;
  const result = fn(node3.tagName, props, all4(state, node3.childNodes));
  patch2(state, node3, result);
  if (result.tagName === "template") {
    const reference = (
      /** @type {P5Template} */
      node3
    );
    const pos = reference.sourceCodeLocation;
    const startTag = pos && pos.startTag && position3(pos.startTag);
    const endTag = pos && pos.endTag && position3(pos.endTag);
    const content3 = one3(state, reference.content);
    if (startTag && endTag && state.file) {
      content3.position = { start: startTag.end, end: endTag.start };
    }
    result.content = content3;
  }
  state.schema = schema2;
  return result;
}
function patch2(state, from4, to) {
  if ("sourceCodeLocation" in from4 && from4.sourceCodeLocation && state.file) {
    const position6 = createLocation(state, to, from4.sourceCodeLocation);
    if (position6) {
      state.location = true;
      to.position = position6;
    }
  }
}
function createLocation(state, node3, location4) {
  const result = position3(location4);
  if (node3.type === "element") {
    const tail = node3.children[node3.children.length - 1];
    if (result && !location4.endTag && tail && tail.position && tail.position.end) {
      result.end = Object.assign({}, tail.position.end);
    }
    if (state.verbose) {
      const props = {};
      let key2;
      if (location4.attrs) {
        for (key2 in location4.attrs) {
          if (own9.call(location4.attrs, key2)) {
            props[find(state.schema, key2).property] = position3(
              location4.attrs[key2]
            );
          }
        }
      }
      node3.data = {
        position: {
          // @ts-expect-error: assume not `undefined`.
          opening: position3(location4.startTag),
          closing: location4.endTag ? position3(location4.endTag) : null,
          properties: props
        }
      };
    }
  }
  return result;
}
function position3(loc) {
  const start = point3({
    line: loc.startLine,
    column: loc.startCol,
    offset: loc.startOffset
  });
  const end = point3({
    line: loc.endLine,
    column: loc.endCol,
    offset: loc.endOffset
  });
  return start || end ? { start, end } : void 0;
}
function point3(point6) {
  return point6.line && point6.column ? point6 : void 0;
}
function isFile2(value) {
  return "messages" in value;
}

// ../../node_modules/rehype-parse/lib/errors.js
var errors = {
  abandonedHeadElementChild: {
    reason: "Unexpected metadata element after head",
    description: "Unexpected element after head. Expected the element before `</head>`",
    url: false
  },
  abruptClosingOfEmptyComment: {
    reason: "Unexpected abruptly closed empty comment",
    description: "Unexpected `>` or `->`. Expected `-->` to close comments"
  },
  abruptDoctypePublicIdentifier: {
    reason: "Unexpected abruptly closed public identifier",
    description: "Unexpected `>`. Expected a closing `\"` or `'` after the public identifier"
  },
  abruptDoctypeSystemIdentifier: {
    reason: "Unexpected abruptly closed system identifier",
    description: "Unexpected `>`. Expected a closing `\"` or `'` after the identifier identifier"
  },
  absenceOfDigitsInNumericCharacterReference: {
    reason: "Unexpected non-digit at start of numeric character reference",
    description: "Unexpected `%c`. Expected `[0-9]` for decimal references or `[0-9a-fA-F]` for hexadecimal references"
  },
  cdataInHtmlContent: {
    reason: "Unexpected CDATA section in HTML",
    description: "Unexpected `<![CDATA[` in HTML. Remove it, use a comment, or encode special characters instead"
  },
  characterReferenceOutsideUnicodeRange: {
    reason: "Unexpected too big numeric character reference",
    description: "Unexpectedly high character reference. Expected character references to be at most hexadecimal 10ffff (or decimal 1114111)"
  },
  closingOfElementWithOpenChildElements: {
    reason: "Unexpected closing tag with open child elements",
    description: "Unexpectedly closing tag. Expected other tags to be closed first",
    url: false
  },
  controlCharacterInInputStream: {
    reason: "Unexpected control character",
    description: "Unexpected control character `%x`. Expected a non-control code point, 0x00, or ASCII whitespace"
  },
  controlCharacterReference: {
    reason: "Unexpected control character reference",
    description: "Unexpectedly control character in reference. Expected a non-control code point, 0x00, or ASCII whitespace"
  },
  disallowedContentInNoscriptInHead: {
    reason: "Disallowed content inside `<noscript>` in `<head>`",
    description: "Unexpected text character `%c`. Only use text in `<noscript>`s in `<body>`",
    url: false
  },
  duplicateAttribute: {
    reason: "Unexpected duplicate attribute",
    description: "Unexpectedly double attribute. Expected attributes to occur only once"
  },
  endTagWithAttributes: {
    reason: "Unexpected attribute on closing tag",
    description: "Unexpected attribute. Expected `>` instead"
  },
  endTagWithTrailingSolidus: {
    reason: "Unexpected slash at end of closing tag",
    description: "Unexpected `%c-1`. Expected `>` instead"
  },
  endTagWithoutMatchingOpenElement: {
    reason: "Unexpected unopened end tag",
    description: "Unexpected end tag. Expected no end tag or another end tag",
    url: false
  },
  eofBeforeTagName: {
    reason: "Unexpected end of file",
    description: "Unexpected end of file. Expected tag name instead"
  },
  eofInCdata: {
    reason: "Unexpected end of file in CDATA",
    description: "Unexpected end of file. Expected `]]>` to close the CDATA"
  },
  eofInComment: {
    reason: "Unexpected end of file in comment",
    description: "Unexpected end of file. Expected `-->` to close the comment"
  },
  eofInDoctype: {
    reason: "Unexpected end of file in doctype",
    description: "Unexpected end of file. Expected a valid doctype (such as `<!doctype html>`)"
  },
  eofInElementThatCanContainOnlyText: {
    reason: "Unexpected end of file in element that can only contain text",
    description: "Unexpected end of file. Expected text or a closing tag",
    url: false
  },
  eofInScriptHtmlCommentLikeText: {
    reason: "Unexpected end of file in comment inside script",
    description: "Unexpected end of file. Expected `-->` to close the comment"
  },
  eofInTag: {
    reason: "Unexpected end of file in tag",
    description: "Unexpected end of file. Expected `>` to close the tag"
  },
  incorrectlyClosedComment: {
    reason: "Incorrectly closed comment",
    description: "Unexpected `%c-1`. Expected `-->` to close the comment"
  },
  incorrectlyOpenedComment: {
    reason: "Incorrectly opened comment",
    description: "Unexpected `%c`. Expected `<!--` to open the comment"
  },
  invalidCharacterSequenceAfterDoctypeName: {
    reason: "Invalid sequence after doctype name",
    description: "Unexpected sequence at `%c`. Expected `public` or `system`"
  },
  invalidFirstCharacterOfTagName: {
    reason: "Invalid first character in tag name",
    description: "Unexpected `%c`. Expected an ASCII letter instead"
  },
  misplacedDoctype: {
    reason: "Misplaced doctype",
    description: "Unexpected doctype. Expected doctype before head",
    url: false
  },
  misplacedStartTagForHeadElement: {
    reason: "Misplaced `<head>` start tag",
    description: "Unexpected start tag `<head>`. Expected `<head>` directly after doctype",
    url: false
  },
  missingAttributeValue: {
    reason: "Missing attribute value",
    description: "Unexpected `%c-1`. Expected an attribute value or no `%c-1` instead"
  },
  missingDoctype: {
    reason: "Missing doctype before other content",
    description: "Expected a `<!doctype html>` before anything else",
    url: false
  },
  missingDoctypeName: {
    reason: "Missing doctype name",
    description: "Unexpected doctype end at `%c`. Expected `html` instead"
  },
  missingDoctypePublicIdentifier: {
    reason: "Missing public identifier in doctype",
    description: "Unexpected `%c`. Expected identifier for `public` instead"
  },
  missingDoctypeSystemIdentifier: {
    reason: "Missing system identifier in doctype",
    description: 'Unexpected `%c`. Expected identifier for `system` instead (suggested: `"about:legacy-compat"`)'
  },
  missingEndTagName: {
    reason: "Missing name in end tag",
    description: "Unexpected `%c`. Expected an ASCII letter instead"
  },
  missingQuoteBeforeDoctypePublicIdentifier: {
    reason: "Missing quote before public identifier in doctype",
    description: "Unexpected `%c`. Expected `\"` or `'` instead"
  },
  missingQuoteBeforeDoctypeSystemIdentifier: {
    reason: "Missing quote before system identifier in doctype",
    description: "Unexpected `%c`. Expected `\"` or `'` instead"
  },
  missingSemicolonAfterCharacterReference: {
    reason: "Missing semicolon after character reference",
    description: "Unexpected `%c`. Expected `;` instead"
  },
  missingWhitespaceAfterDoctypePublicKeyword: {
    reason: "Missing whitespace after public identifier in doctype",
    description: "Unexpected `%c`. Expected ASCII whitespace instead"
  },
  missingWhitespaceAfterDoctypeSystemKeyword: {
    reason: "Missing whitespace after system identifier in doctype",
    description: "Unexpected `%c`. Expected ASCII whitespace instead"
  },
  missingWhitespaceBeforeDoctypeName: {
    reason: "Missing whitespace before doctype name",
    description: "Unexpected `%c`. Expected ASCII whitespace instead"
  },
  missingWhitespaceBetweenAttributes: {
    reason: "Missing whitespace between attributes",
    description: "Unexpected `%c`. Expected ASCII whitespace instead"
  },
  missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers: {
    reason: "Missing whitespace between public and system identifiers in doctype",
    description: "Unexpected `%c`. Expected ASCII whitespace instead"
  },
  nestedComment: {
    reason: "Unexpected nested comment",
    description: "Unexpected `<!--`. Expected `-->`"
  },
  nestedNoscriptInHead: {
    reason: "Unexpected nested `<noscript>` in `<head>`",
    description: "Unexpected `<noscript>`. Expected a closing tag or a meta element",
    url: false
  },
  nonConformingDoctype: {
    reason: "Unexpected non-conforming doctype declaration",
    description: 'Expected `<!doctype html>` or `<!doctype html system "about:legacy-compat">`',
    url: false
  },
  nonVoidHtmlElementStartTagWithTrailingSolidus: {
    reason: "Unexpected trailing slash on start tag of non-void element",
    description: "Unexpected `/`. Expected `>` instead"
  },
  noncharacterCharacterReference: {
    reason: "Unexpected noncharacter code point referenced by character reference",
    description: "Unexpected code point. Do not use noncharacters in HTML"
  },
  noncharacterInInputStream: {
    reason: "Unexpected noncharacter character",
    description: "Unexpected code point `%x`. Do not use noncharacters in HTML"
  },
  nullCharacterReference: {
    reason: "Unexpected NULL character referenced by character reference",
    description: "Unexpected code point. Do not use NULL characters in HTML"
  },
  openElementsLeftAfterEof: {
    reason: "Unexpected end of file",
    description: "Unexpected end of file. Expected closing tag instead",
    url: false
  },
  surrogateCharacterReference: {
    reason: "Unexpected surrogate character referenced by character reference",
    description: "Unexpected code point. Do not use lone surrogate characters in HTML"
  },
  surrogateInInputStream: {
    reason: "Unexpected surrogate character",
    description: "Unexpected code point `%x`. Do not use lone surrogate characters in HTML"
  },
  unexpectedCharacterAfterDoctypeSystemIdentifier: {
    reason: "Invalid character after system identifier in doctype",
    description: "Unexpected character at `%c`. Expected `>`"
  },
  unexpectedCharacterInAttributeName: {
    reason: "Unexpected character in attribute name",
    description: "Unexpected `%c`. Expected whitespace, `/`, `>`, `=`, or probably an ASCII letter"
  },
  unexpectedCharacterInUnquotedAttributeValue: {
    reason: "Unexpected character in unquoted attribute value",
    description: "Unexpected `%c`. Quote the attribute value to include it"
  },
  unexpectedEqualsSignBeforeAttributeName: {
    reason: "Unexpected equals sign before attribute name",
    description: "Unexpected `%c`. Add an attribute name before it"
  },
  unexpectedNullCharacter: {
    reason: "Unexpected NULL character",
    description: "Unexpected code point `%x`. Do not use NULL characters in HTML"
  },
  unexpectedQuestionMarkInsteadOfTagName: {
    reason: "Unexpected question mark instead of tag name",
    description: "Unexpected `%c`. Expected an ASCII letter instead"
  },
  unexpectedSolidusInTag: {
    reason: "Unexpected slash in tag",
    description: "Unexpected `%c-1`. Expected it followed by `>` or in a quoted attribute value"
  },
  unknownNamedCharacterReference: {
    reason: "Unexpected unknown named character reference",
    description: "Unexpected character reference. Expected known named character references"
  }
};

// ../../node_modules/rehype-parse/lib/index.js
var base2 = "https://html.spec.whatwg.org/multipage/parsing.html#parse-error-";
var fatalities = { 2: true, 1: false, 0: null };
function rehypeParse(options) {
  const processorSettings = (
    /** @type {Options} */
    this.data("settings")
  );
  const settings = Object.assign({}, processorSettings, options);
  Object.assign(this, { Parser: parser3 });
  function parser3(doc, file) {
    const fn = settings.fragment ? "parseFragment" : "parse";
    const onParseError = settings.emitParseErrors ? onerror : null;
    const parse52 = new import_parser.default({
      sourceCodeLocationInfo: true,
      onParseError,
      scriptingEnabled: false
    });
    return fromParse5(parse52[fn](doc), {
      space: settings.space,
      file,
      verbose: settings.verbose
    });
    function onerror(error) {
      const code7 = error.code;
      const name3 = camelcase2(code7);
      const setting = settings[name3];
      const config3 = setting === void 0 || setting === null ? true : setting;
      const level = typeof config3 === "number" ? config3 : config3 ? 1 : 0;
      const start = {
        line: error.startLine,
        column: error.startCol,
        offset: error.startOffset
      };
      const end = {
        line: error.endLine,
        column: error.endCol,
        offset: error.endOffset
      };
      if (level) {
        const info = errors[name3] || { reason: "", description: "", url: "" };
        const message = file.message(format(info.reason), { start, end });
        message.source = "parse-error";
        message.ruleId = code7;
        message.fatal = fatalities[level];
        message.note = format(info.description);
        message.url = "url" in info && info.url === false ? null : base2 + code7;
      }
      function format(value) {
        return value.replace(/%c(?:-(\d+))?/g, (_2, $1) => {
          const offset = $1 ? -Number.parseInt($1, 10) : 0;
          const char = doc.charAt(error.startOffset + offset);
          return char === "`" ? "` ` `" : char;
        }).replace(
          /%x/g,
          () => "0x" + doc.charCodeAt(error.startOffset).toString(16).toUpperCase()
        );
      }
    }
  }
}
function camelcase2(value) {
  return value.replace(/-[a-z]/g, ($0) => $0.charAt(1).toUpperCase());
}

// ../../node_modules/hast-util-to-mdast/lib/all.js
function all5(h4, parent2) {
  const nodes = parent2.children || [];
  const values = [];
  let index4 = -1;
  while (++index4 < nodes.length) {
    const result = one4(h4, nodes[index4], parent2);
    if (Array.isArray(result)) {
      values.push(...result);
    } else if (result) {
      values.push(result);
    }
  }
  let start = 0;
  let end = values.length;
  while (start < end && values[start].type === "break") {
    start++;
  }
  while (end > start && values[end - 1].type === "break") {
    end--;
  }
  return start === 0 && end === values.length ? values : values.slice(start, end);
}

// ../../node_modules/hast-util-to-mdast/lib/util/own.js
var own10 = {}.hasOwnProperty;

// ../../node_modules/hast-util-to-mdast/lib/util/wrap-text.js
function wrapText(h4, value) {
  return h4.wrapText ? value : value.replace(/\r?\n|\r/g, " ");
}

// ../../node_modules/hast-util-to-mdast/lib/one.js
function one4(h4, node3, parent2) {
  let fn;
  if (node3.type === "element") {
    if (node3.properties && node3.properties.dataMdast === "ignore") {
      return;
    }
    if (own10.call(h4.handlers, node3.tagName)) {
      fn = h4.handlers[node3.tagName];
    }
  } else if (own10.call(h4.handlers, node3.type)) {
    fn = h4.handlers[node3.type];
  }
  if (typeof fn === "function") {
    return fn(h4, node3, parent2);
  }
  return unknown(h4, node3);
}
function unknown(h4, node3) {
  if (typeof node3.value === "string") {
    return h4(node3, "text", wrapText(h4, node3.value));
  }
  return all5(h4, node3);
}

// ../../node_modules/hast-util-to-mdast/lib/util/wrap.js
var import_extend2 = __toESM(require_extend(), 1);

// ../../node_modules/mdast-util-phrasing/lib/index.js
var phrasing2 = (
  /** @type {AssertPredicatePhrasing} */
  convert([
    "break",
    "delete",
    "emphasis",
    "footnote",
    "footnoteReference",
    "image",
    "imageReference",
    "inlineCode",
    "link",
    "linkReference",
    "strong",
    "text"
  ])
);

// ../../node_modules/hast-util-to-mdast/lib/util/wrap.js
function wrap3(nodes) {
  return runs(nodes, onphrasing);
  function onphrasing(nodes2) {
    const head2 = nodes2[0];
    if (nodes2.length === 1 && head2.type === "text" && (head2.value === " " || head2.value === "\n")) {
      return [];
    }
    return { type: "paragraph", children: nodes2 };
  }
}
function wrapNeeded(nodes) {
  let index4 = -1;
  let node3;
  while (++index4 < nodes.length) {
    node3 = nodes[index4];
    if (!phrasing3(node3) || "children" in node3 && wrapNeeded(node3.children)) {
      return true;
    }
  }
  return false;
}
function runs(nodes, onphrasing, onnonphrasing) {
  const nonphrasing = onnonphrasing || identity;
  const flattened = flatten(nodes);
  let result = [];
  let index4 = -1;
  let queue;
  let node3;
  while (++index4 < flattened.length) {
    node3 = flattened[index4];
    if (phrasing3(node3)) {
      if (!queue) queue = [];
      queue.push(node3);
    } else {
      if (queue) {
        result = result.concat(onphrasing(queue));
        queue = void 0;
      }
      result = result.concat(nonphrasing(node3));
    }
  }
  if (queue) {
    result = result.concat(onphrasing(queue));
  }
  return result;
}
function flatten(nodes) {
  let flattened = [];
  let index4 = -1;
  let node3;
  while (++index4 < nodes.length) {
    node3 = nodes[index4];
    if ((node3.type === "delete" || node3.type === "link") && wrapNeeded(node3.children)) {
      flattened = flattened.concat(split(node3));
    } else {
      flattened.push(node3);
    }
  }
  return flattened;
}
function split(node3) {
  return runs(node3.children, onphrasing, onnonphrasing);
  function onnonphrasing(child) {
    if ("children" in child && "children" in node3) {
      const { children, ...rest } = node3;
      return {
        ...child,
        // @ts-expect-error: assume matching parent & child.
        children: [{ ...(0, import_extend2.default)(true, {}, rest), children: child.children }]
      };
    }
    return { ...child };
  }
  function onphrasing(nodes) {
    const { children, ...rest } = node3;
    return { ...(0, import_extend2.default)(true, {}, rest), children: nodes };
  }
}
function phrasing3(node3) {
  return node3.data && node3.data.hName ? phrasing({
    type: "element",
    tagName: node3.data.hName,
    properties: {},
    children: []
  }) : phrasing2(node3);
}
function identity(n) {
  return n;
}

// ../../node_modules/hast-util-to-mdast/lib/util/wrap-children.js
function wrapChildren(h4, node3) {
  return wrap3(all5(h4, node3));
}

// ../../node_modules/hast-util-to-mdast/lib/util/resolve.js
function resolve(h4, url) {
  if (url === null || url === void 0) {
    return "";
  }
  if (h4.frozenBaseUrl) {
    return String(new URL(url, h4.frozenBaseUrl));
  }
  return url;
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/a.js
function a(h4, node3) {
  const props = node3.properties;
  return h4(
    node3,
    "link",
    {
      title: props.title || null,
      url: resolve(h4, String(props.href || "") || null)
    },
    all5(h4, node3)
  );
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/base.js
function base3(h4, node3) {
  if (!h4.baseFound) {
    h4.frozenBaseUrl = String(node3.properties && node3.properties.href || "") || null;
    h4.baseFound = true;
  }
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/blockquote.js
function blockquote2(h4, node3) {
  return h4(node3, "blockquote", wrapChildren(h4, node3));
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/br.js
function br(h4, node3) {
  return h4.wrapText ? h4(node3, "break") : h4(node3, "text", " ");
}

// ../../node_modules/unist-util-find-after/lib/index.js
var findAfter = (
  /**
   * @type {(
   *  (<T extends Node>(node: Parent, index: Node | number, test: import('unist-util-is').PredicateTest<T>) => T | null) &
   *  ((node: Parent, index: Node | number, test?: Test) => Node | null)
   * )}
   */
  /**
   * @param {Parent} parent
   * @param {Node | number} index
   * @param {Test} [test]
   * @returns {Node | null}
   */
  (function(parent2, index4, test2) {
    const is4 = convert(test2);
    if (!parent2 || !parent2.type || !parent2.children) {
      throw new Error("Expected parent node");
    }
    if (typeof index4 === "number") {
      if (index4 < 0 || index4 === Number.POSITIVE_INFINITY) {
        throw new Error("Expected positive finite number as index");
      }
    } else {
      index4 = parent2.children.indexOf(index4);
      if (index4 < 0) {
        throw new Error("Expected child node or index");
      }
    }
    while (++index4 < parent2.children.length) {
      if (is4(parent2.children[index4], index4, parent2)) {
        return parent2.children[index4];
      }
    }
    return null;
  })
);

// ../../node_modules/hast-util-to-text/lib/index.js
var searchLineFeeds = /\n/g;
var searchTabOrSpaces = /[\t ]+/g;
var br2 = convertElement("br");
var p = convertElement("p");
var cell = convertElement(["th", "td"]);
var row = convertElement("tr");
var notRendered = convertElement([
  // List from: <https://html.spec.whatwg.org/#hidden-elements>
  "datalist",
  "head",
  "noembed",
  "noframes",
  "noscript",
  // Act as if we support scripting.
  "rp",
  "script",
  "style",
  "template",
  "title",
  // Hidden attribute.
  hidden,
  // From: <https://html.spec.whatwg.org/#flow-content-3>
  closedDialog
]);
var blockOrCaption = convertElement([
  "address",
  // Flow content
  "article",
  // Sections and headings
  "aside",
  // Sections and headings
  "blockquote",
  // Flow content
  "body",
  // Page
  "caption",
  // `table-caption`
  "center",
  // Flow content (legacy)
  "dd",
  // Lists
  "dialog",
  // Flow content
  "dir",
  // Lists (legacy)
  "dl",
  // Lists
  "dt",
  // Lists
  "div",
  // Flow content
  "figure",
  // Flow content
  "figcaption",
  // Flow content
  "footer",
  // Flow content
  "form,",
  // Flow content
  "h1",
  // Sections and headings
  "h2",
  // Sections and headings
  "h3",
  // Sections and headings
  "h4",
  // Sections and headings
  "h5",
  // Sections and headings
  "h6",
  // Sections and headings
  "header",
  // Flow content
  "hgroup",
  // Sections and headings
  "hr",
  // Flow content
  "html",
  // Page
  "legend",
  // Flow content
  "listing",
  // Flow content (legacy)
  "main",
  // Flow content
  "menu",
  // Lists
  "nav",
  // Sections and headings
  "ol",
  // Lists
  "p",
  // Flow content
  "plaintext",
  // Flow content (legacy)
  "pre",
  // Flow content
  "section",
  // Sections and headings
  "ul",
  // Lists
  "xmp"
  // Flow content (legacy)
]);
function toText2(tree, options = {}) {
  const children = "children" in tree ? tree.children : [];
  const block5 = blockOrCaption(tree);
  const whitespace4 = inferWhitespace(tree, {
    whitespace: options.whitespace || "normal",
    breakBefore: false,
    breakAfter: false
  });
  const results = [];
  if (tree.type === "text" || tree.type === "comment") {
    results.push(
      ...collectText(tree, {
        whitespace: whitespace4,
        breakBefore: true,
        breakAfter: true
      })
    );
  }
  let index4 = -1;
  while (++index4 < children.length) {
    results.push(
      ...innerTextCollection(children[index4], tree, {
        whitespace: whitespace4,
        breakBefore: index4 ? void 0 : block5,
        breakAfter: index4 < children.length - 1 ? br2(children[index4 + 1]) : block5
      })
    );
  }
  const result = [];
  let count2;
  index4 = -1;
  while (++index4 < results.length) {
    const value = results[index4];
    if (typeof value === "number") {
      if (count2 !== void 0 && value > count2) count2 = value;
    } else if (value) {
      if (count2 !== void 0 && count2 > -1) {
        result.push("\n".repeat(count2) || " ");
      }
      count2 = -1;
      result.push(value);
    }
  }
  return result.join("");
}
function innerTextCollection(node3, parent2, info) {
  if (node3.type === "element") {
    return collectElement(node3, parent2, info);
  }
  if (node3.type === "text") {
    return info.whitespace === "normal" ? collectText(node3, info) : collectPreText(node3);
  }
  return [];
}
function collectElement(node3, parent2, info) {
  const whitespace4 = inferWhitespace(node3, info);
  const children = node3.children || [];
  let index4 = -1;
  let items = [];
  if (notRendered(node3)) {
    return items;
  }
  let prefix2;
  let suffix;
  if (br2(node3)) {
    suffix = "\n";
  } else if (row(node3) && findAfter(parent2, node3, row)) {
    suffix = "\n";
  } else if (p(node3)) {
    prefix2 = 2;
    suffix = 2;
  } else if (blockOrCaption(node3)) {
    prefix2 = 1;
    suffix = 1;
  }
  while (++index4 < children.length) {
    items = items.concat(
      innerTextCollection(children[index4], node3, {
        whitespace: whitespace4,
        breakBefore: index4 ? void 0 : prefix2,
        breakAfter: index4 < children.length - 1 ? br2(children[index4 + 1]) : suffix
      })
    );
  }
  if (cell(node3) && findAfter(parent2, node3, cell)) {
    items.push("	");
  }
  if (prefix2) items.unshift(prefix2);
  if (suffix) items.push(suffix);
  return items;
}
function collectText(node3, info) {
  const value = String(node3.value);
  const lines = [];
  const result = [];
  let start = 0;
  while (start <= value.length) {
    searchLineFeeds.lastIndex = start;
    const match3 = searchLineFeeds.exec(value);
    const end = match3 && "index" in match3 ? match3.index : value.length;
    lines.push(
      // Any sequence of collapsible spaces and tabs immediately preceding or
      // following a segment break is removed.
      trimAndCollapseSpacesAndTabs(
        // […] ignoring bidi formatting characters (characters with the
        // Bidi_Control property [UAX9]: ALM, LTR, RTL, LRE-RLO, LRI-PDI) as if
        // they were not there.
        value.slice(start, end).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/g, ""),
        start === 0 ? info.breakBefore : true,
        end === value.length ? info.breakAfter : true
      )
    );
    start = end + 1;
  }
  let index4 = -1;
  let join19;
  while (++index4 < lines.length) {
    if (lines[index4].charCodeAt(lines[index4].length - 1) === 8203 || index4 < lines.length - 1 && lines[index4 + 1].charCodeAt(0) === 8203) {
      result.push(lines[index4]);
      join19 = void 0;
    } else if (lines[index4]) {
      if (typeof join19 === "number") result.push(join19);
      result.push(lines[index4]);
      join19 = 0;
    } else if (index4 === 0 || index4 === lines.length - 1) {
      result.push(0);
    }
  }
  return result;
}
function collectPreText(node3) {
  return [String(node3.value)];
}
function trimAndCollapseSpacesAndTabs(value, breakBefore, breakAfter) {
  const result = [];
  let start = 0;
  let end;
  while (start < value.length) {
    searchTabOrSpaces.lastIndex = start;
    const match3 = searchTabOrSpaces.exec(value);
    end = match3 ? match3.index : value.length;
    if (!start && !end && match3 && !breakBefore) {
      result.push("");
    }
    if (start !== end) {
      result.push(value.slice(start, end));
    }
    start = match3 ? end + match3[0].length : end;
  }
  if (start !== end && !breakAfter) {
    result.push("");
  }
  return result.join(" ");
}
function inferWhitespace(node3, info) {
  if (node3.type === "element") {
    const props = node3.properties || {};
    switch (node3.tagName) {
      case "listing":
      case "plaintext":
      case "xmp": {
        return "pre";
      }
      case "nobr": {
        return "nowrap";
      }
      case "pre": {
        return props.wrap ? "pre-wrap" : "pre";
      }
      case "td":
      case "th": {
        return props.noWrap ? "nowrap" : info.whitespace;
      }
      case "textarea": {
        return "pre-wrap";
      }
      default:
    }
  }
  return info.whitespace;
}
function hidden(node3) {
  return Boolean((node3.properties || {}).hidden);
}
function closedDialog(node3) {
  return node3.tagName === "dialog" && !(node3.properties || {}).open;
}

// ../../node_modules/trim-trailing-lines/index.js
function trimTrailingLines(value) {
  const input3 = String(value);
  let end = input3.length;
  while (end > 0) {
    const code7 = input3.codePointAt(end - 1);
    if (code7 !== void 0 && (code7 === 10 || code7 === 13)) {
      end--;
    } else {
      break;
    }
  }
  return input3.slice(0, end);
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/code.js
var prefix = "language-";
var pre = convertElement("pre");
var isCode = convertElement("code");
function code3(h4, node3) {
  const children = node3.children;
  let index4 = -1;
  let classList;
  let lang;
  if (pre(node3)) {
    while (++index4 < children.length) {
      const child = children[index4];
      if (isCode(child) && child.properties && child.properties.className && Array.isArray(child.properties.className)) {
        classList = child.properties.className;
        break;
      }
    }
  }
  if (classList) {
    index4 = -1;
    while (++index4 < classList.length) {
      if (String(classList[index4]).slice(0, prefix.length) === prefix) {
        lang = String(classList[index4]).slice(prefix.length);
        break;
      }
    }
  }
  return h4(
    node3,
    "code",
    { lang: lang || null, meta: null },
    trimTrailingLines(wrapText(h4, toText2(node3)))
  );
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/comment.js
function comment2(h4, node3) {
  return h4(node3, "html", "<!--" + wrapText(h4, node3.value) + "-->");
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/del.js
function del(h4, node3) {
  return h4(node3, "delete", all5(h4, node3));
}

// ../../node_modules/hast-util-to-mdast/lib/util/list-items-spread.js
function listItemsSpread(children) {
  let index4 = -1;
  if (children.length > 1) {
    while (++index4 < children.length) {
      if (children[index4].spread) {
        return true;
      }
    }
  }
  return false;
}

// ../../node_modules/hast-util-to-mdast/lib/util/wrap-list-items.js
function wrapListItems(h4, node3) {
  const children = all5(h4, node3);
  let index4 = -1;
  while (++index4 < children.length) {
    const child = children[index4];
    if (child.type !== "listItem") {
      children[index4] = {
        type: "listItem",
        spread: false,
        checked: null,
        // @ts-expect-error Assume `children[index]` is block content.
        children: [child]
      };
    }
  }
  return children;
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/dl.js
var div = convertElement("div");
var dt = convertElement("dt");
var dd = convertElement("dd");
function dl(h4, node3) {
  const children = node3.children;
  let index4 = -1;
  let clean3 = [];
  const groups = [];
  let group3 = { titles: [], definitions: [] };
  let child;
  let result;
  while (++index4 < children.length) {
    child = children[index4];
    clean3 = clean3.concat(div(child) ? child.children : child);
  }
  index4 = -1;
  while (++index4 < clean3.length) {
    child = clean3[index4];
    if (dt(child)) {
      if (dd(clean3[index4 - 1])) {
        groups.push(group3);
        group3 = { titles: [], definitions: [] };
      }
      group3.titles.push(child);
    } else {
      group3.definitions.push(child);
    }
  }
  groups.push(group3);
  index4 = -1;
  const content3 = [];
  while (++index4 < groups.length) {
    result = [
      ...handle3(h4, groups[index4].titles),
      ...handle3(h4, groups[index4].definitions)
    ];
    if (result.length > 0) {
      content3.push({
        type: "listItem",
        spread: result.length > 1,
        checked: null,
        children: result
      });
    }
  }
  if (content3.length > 0) {
    return h4(
      node3,
      "list",
      { ordered: false, start: null, spread: listItemsSpread(content3) },
      content3
    );
  }
}
function handle3(h4, children) {
  const nodes = wrapListItems(h4, { type: "element", tagName: "x", children });
  if (nodes.length === 0) {
    return [];
  }
  if (nodes.length === 1) {
    return nodes[0].children;
  }
  return [
    {
      type: "list",
      ordered: false,
      start: null,
      spread: listItemsSpread(nodes),
      children: nodes
    }
  ];
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/em.js
function em(h4, node3) {
  return h4(node3, "emphasis", all5(h4, node3));
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/heading.js
function heading3(h4, node3) {
  const depth = Number(node3.tagName.charAt(1)) || 1;
  const wrap4 = h4.wrapText;
  h4.wrapText = false;
  const result = h4(node3, "heading", { depth }, all5(h4, node3));
  h4.wrapText = wrap4;
  return result;
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/hr.js
function hr(h4, node3) {
  return h4(node3, "thematicBreak");
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/iframe.js
function iframe2(h4, node3) {
  const props = node3.properties;
  const src = String(props.src || "");
  const title = String(props.title || "");
  if (src && title) {
    return {
      type: "link",
      title: null,
      url: resolve(h4, src),
      children: [{ type: "text", value: wrapText(h4, title) }]
    };
  }
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/img.js
function img(h4, node3) {
  const props = node3.properties;
  return h4(node3, "image", {
    url: resolve(h4, String(props.src || "") || null),
    title: props.title || null,
    alt: props.alt || ""
  });
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/inline-code.js
function inlineCode2(h4, node3) {
  return h4(node3, "inlineCode", wrapText(h4, toText2(node3)));
}

// ../../node_modules/hast-util-to-mdast/lib/util/find-selected-options.js
var option = convertElement("option");
function findSelectedOptions(h4, node3, properties) {
  const props = properties || node3.properties;
  let options = findOptions(node3);
  const size = Math.min(Number.parseInt(String(props.size), 10), 0) || (props.multiple ? 4 : 1);
  let index4 = -1;
  const selectedOptions = [];
  const values = [];
  while (++index4 < options.length) {
    if (hasProperty(options[index4], "selected")) {
      selectedOptions.push(options[index4]);
    }
  }
  const list6 = selectedOptions.length > 0 ? selectedOptions : options;
  options = list6.slice(0, size);
  index4 = -1;
  while (++index4 < options.length) {
    const option3 = options[index4];
    const content3 = wrapText(h4, toText2(option3));
    const props2 = option3.properties;
    const label = content3 || String(props2.label || "");
    const value = String(props2.value || "") || content3;
    values.push([value, label === value ? null : label]);
  }
  return values;
}
function findOptions(node3) {
  const children = node3.children;
  let index4 = -1;
  let results = [];
  let child;
  while (++index4 < children.length) {
    child = children[index4];
    if (Array.isArray(child.children)) {
      results = results.concat(findOptions(child));
    }
    if (option(child) && !hasProperty(child, "disabled")) {
      results.push(child);
    }
  }
  return results;
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/input.js
var datalist = convertElement("datalist");
function input(h4, node3) {
  const props = node3.properties;
  let value = String(props.value || props.placeholder || "");
  const results = [];
  const texts = [];
  let values = [];
  let index4 = -1;
  let list6;
  if (props.disabled || props.type === "hidden" || props.type === "file") {
    return;
  }
  if (props.type === "checkbox" || props.type === "radio") {
    return h4(
      node3,
      "text",
      wrapText(h4, h4[props.checked ? "checked" : "unchecked"])
    );
  }
  if (props.type === "image") {
    return props.alt || value ? h4(node3, "image", {
      url: resolve(h4, String(props.src || "") || null),
      title: wrapText(h4, String(props.title || "")) || null,
      alt: wrapText(h4, String(props.alt || value))
    }) : [];
  }
  if (value) {
    values = [[value, null]];
  } else if (
    // `list` is not supported on these types:
    props.type !== "password" && props.type !== "file" && props.type !== "submit" && props.type !== "reset" && props.type !== "button" && props.list
  ) {
    list6 = String(props.list).toUpperCase();
    if (own10.call(h4.nodeById, list6) && datalist(h4.nodeById[list6])) {
      values = findSelectedOptions(h4, h4.nodeById[list6], props);
    }
  }
  if (values.length === 0) {
    return;
  }
  if (props.type === "password") {
    values[0] = ["\u2022".repeat(values[0][0].length), null];
  }
  if (props.type === "url" || props.type === "email") {
    while (++index4 < values.length) {
      value = resolve(h4, values[index4][0]);
      results.push(
        h4(
          node3,
          "link",
          {
            title: null,
            url: wrapText(h4, props.type === "email" ? "mailto:" + value : value)
          },
          [{ type: "text", value: wrapText(h4, values[index4][1] || value) }]
        )
      );
      if (index4 !== values.length - 1) {
        results.push({ type: "text", value: ", " });
      }
    }
    return results;
  }
  while (++index4 < values.length) {
    texts.push(
      values[index4][1] ? values[index4][1] + " (" + values[index4][0] + ")" : values[index4][0]
    );
  }
  return h4(node3, "text", wrapText(h4, texts.join(", ")));
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/li.js
var p2 = convertElement("p");
var input2 = convertElement("input");
function li(h4, node3) {
  const head2 = node3.children[0];
  let checked2 = null;
  let checkbox;
  let clone3;
  if (p2(head2)) {
    checkbox = head2.children[0];
    if (input2(checkbox) && checkbox.properties && (checkbox.properties.type === "checkbox" || checkbox.properties.type === "radio")) {
      checked2 = Boolean(checkbox.properties.checked);
      clone3 = {
        ...node3,
        children: [
          { ...head2, children: head2.children.slice(1) },
          ...node3.children.slice(1)
        ]
      };
    }
  }
  const content3 = wrapChildren(h4, clone3 || node3);
  return h4(node3, "listItem", { spread: content3.length > 1, checked: checked2 }, content3);
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/list.js
var ol = convertElement("ol");
function list3(h4, node3) {
  const ordered = ol(node3);
  const children = wrapListItems(h4, node3);
  let start = null;
  if (ordered) {
    start = hasProperty(node3, "start") ? (
      // @ts-expect-error: `props` exist.
      Number.parseInt(String(node3.properties.start), 10)
    ) : 1;
  }
  return h4(
    node3,
    "list",
    { ordered, start, spread: listItemsSpread(children) },
    children
  );
}

// ../../node_modules/mdast-util-to-string/lib/index.js
var emptyOptions = {};
function toString2(value, options) {
  const settings = options || emptyOptions;
  const includeImageAlt = typeof settings.includeImageAlt === "boolean" ? settings.includeImageAlt : true;
  const includeHtml = typeof settings.includeHtml === "boolean" ? settings.includeHtml : true;
  return one5(value, includeImageAlt, includeHtml);
}
function one5(value, includeImageAlt, includeHtml) {
  if (node2(value)) {
    if ("value" in value) {
      return value.type === "html" && !includeHtml ? "" : value.value;
    }
    if (includeImageAlt && "alt" in value && value.alt) {
      return value.alt;
    }
    if ("children" in value) {
      return all6(value.children, includeImageAlt, includeHtml);
    }
  }
  if (Array.isArray(value)) {
    return all6(value, includeImageAlt, includeHtml);
  }
  return "";
}
function all6(values, includeImageAlt, includeHtml) {
  const result = [];
  let index4 = -1;
  while (++index4 < values.length) {
    result[index4] = one5(values[index4], includeImageAlt, includeHtml);
  }
  return result.join("");
}
function node2(value) {
  return Boolean(value && typeof value === "object");
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/media.js
var source = convertElement("source");
var video = convertElement("video");
function media(h4, node3) {
  let nodes = all5(h4, node3);
  const properties = node3.properties;
  const poster = video(node3) && String(properties.poster || "");
  let src = String(properties.src || "");
  let index4 = -1;
  let linkInFallbackContent = false;
  let child;
  visit({ type: "root", children: nodes }, "link", findLink);
  if (linkInFallbackContent || wrapNeeded(nodes)) {
    return nodes;
  }
  while (!src && ++index4 < node3.children.length) {
    child = node3.children[index4];
    if (source(child)) {
      src = String(child.properties.src || "");
    }
  }
  if (poster) {
    nodes = [
      {
        type: "image",
        title: null,
        url: resolve(h4, poster),
        alt: toString2({ children: nodes })
      }
    ];
  }
  return {
    type: "link",
    // @ts-expect-error Types are broken.
    title: node3.properties.title || null,
    url: resolve(h4, src),
    // @ts-expect-error Assume phrasing content.
    children: nodes
  };
  function findLink() {
    linkInFallbackContent = true;
    return EXIT;
  }
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/p.js
function p3(h4, node3) {
  const nodes = all5(h4, node3);
  if (nodes.length > 0) {
    return h4(node3, "paragraph", nodes);
  }
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/q.js
function q(h4, node3) {
  const expected = h4.quotes[h4.qNesting % h4.quotes.length];
  h4.qNesting++;
  const contents = all5(h4, node3);
  h4.qNesting--;
  contents.unshift({ type: "text", value: expected.charAt(0) });
  contents.push({
    type: "text",
    value: expected.length > 1 ? expected.charAt(1) : expected
  });
  return contents;
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/root.js
function root3(h4, node3) {
  let children = all5(h4, node3);
  if (h4.document || wrapNeeded(children)) {
    children = wrap3(children);
  }
  return h4(node3, "root", children);
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/select.js
function select2(h4, node3) {
  const values = findSelectedOptions(h4, node3);
  let index4 = -1;
  const results = [];
  let value;
  while (++index4 < values.length) {
    value = values[index4];
    results.push(value[1] ? value[1] + " (" + value[0] + ")" : value[0]);
  }
  if (results.length > 0) {
    return h4(node3, "text", wrapText(h4, results.join(", ")));
  }
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/strong.js
function strong2(h4, node3) {
  return h4(node3, "strong", all5(h4, node3));
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/table-cell.js
function tableCell2(h4, node3) {
  const wrap4 = h4.wrapText;
  h4.wrapText = false;
  const result = h4(node3, "tableCell", all5(h4, node3));
  if (node3.properties && (node3.properties.rowSpan || node3.properties.colSpan)) {
    const data = result.data || (result.data = {});
    if (node3.properties.rowSpan) data.rowSpan = node3.properties.rowSpan;
    if (node3.properties.colSpan) data.colSpan = node3.properties.colSpan;
  }
  h4.wrapText = wrap4;
  return result;
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/table-row.js
function tableRow2(h4, node3) {
  return h4(node3, "tableRow", all5(h4, node3));
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/table.js
var thead = convertElement("thead");
var tr = convertElement("tr");
var cell2 = convertElement(["th", "td"]);
function table3(h4, node3) {
  if (h4.inTable) {
    return h4(node3, "text", wrapText(h4, toText2(node3)));
  }
  h4.inTable = true;
  const { headless, align } = inspect(node3);
  const rows = toRows(all5(h4, node3), headless);
  let columns = 1;
  let rowIndex = -1;
  while (++rowIndex < rows.length) {
    const cells2 = rows[rowIndex].children;
    let cellIndex = -1;
    while (++cellIndex < cells2.length) {
      const cell3 = cells2[cellIndex];
      if (cell3.data) {
        const colSpan = Number.parseInt(String(cell3.data.colSpan), 10) || 1;
        const rowSpan = Number.parseInt(String(cell3.data.rowSpan), 10) || 1;
        if (colSpan > 1 || rowSpan > 1) {
          let otherRowIndex = rowIndex - 1;
          while (++otherRowIndex < rowIndex + rowSpan) {
            let colIndex = cellIndex - 1;
            while (++colIndex < cellIndex + colSpan) {
              if (!rows[otherRowIndex]) {
                break;
              }
              const newCells = [];
              if (otherRowIndex !== rowIndex || colIndex !== cellIndex) {
                newCells.push({ type: "tableCell", children: [] });
              }
              rows[otherRowIndex].children.splice(colIndex, 0, ...newCells);
            }
          }
        }
        if ("colSpan" in cell3.data) delete cell3.data.colSpan;
        if ("rowSpan" in cell3.data) delete cell3.data.rowSpan;
        if (Object.keys(cell3.data).length === 0) delete cell3.data;
      }
    }
    if (cells2.length > columns) columns = cells2.length;
  }
  rowIndex = -1;
  while (++rowIndex < rows.length) {
    const cells2 = rows[rowIndex].children;
    let cellIndex = cells2.length - 1;
    while (++cellIndex < columns) {
      cells2.push({ type: "tableCell", children: [] });
    }
  }
  let alignIndex = align.length - 1;
  while (++alignIndex < columns) {
    align.push(null);
  }
  h4.inTable = false;
  return h4(node3, "table", { align }, rows);
}
function inspect(node3) {
  let headless = true;
  let rowIndex = 0;
  let cellIndex = 0;
  const align = [null];
  visit(node3, "element", (child) => {
    if (child.tagName === "table" && node3 !== child) {
      return SKIP;
    }
    if (cell2(child) && child.properties) {
      if (!align[cellIndex]) {
        align[cellIndex] = String(child.properties.align || "") || null;
      }
      if (headless && rowIndex < 2 && child.tagName === "th") {
        headless = false;
      }
      cellIndex++;
    } else if (thead(child)) {
      headless = false;
    } else if (tr(child)) {
      rowIndex++;
      cellIndex = 0;
    }
  });
  return { align, headless };
}
function toRows(children, headless) {
  let index4 = -1;
  const nodes = [];
  let queue;
  if (headless) {
    nodes.push({ type: "tableRow", children: [] });
  }
  while (++index4 < children.length) {
    const node3 = children[index4];
    if (node3.type === "tableRow") {
      if (queue) {
        node3.children.unshift(...queue);
        queue = void 0;
      }
      nodes.push(node3);
    } else {
      if (!queue) queue = [];
      queue.push(node3);
    }
  }
  if (queue) {
    nodes[nodes.length - 1].children.push(...queue);
  }
  index4 = -1;
  while (++index4 < nodes.length) {
    nodes[index4].children = toCells(nodes[index4].children);
  }
  return nodes;
}
function toCells(children) {
  const nodes = [];
  let index4 = -1;
  let node3;
  let queue;
  while (++index4 < children.length) {
    node3 = children[index4];
    if (node3.type === "tableCell") {
      if (queue) {
        node3.children.unshift(...queue);
        queue = void 0;
      }
      nodes.push(node3);
    } else {
      if (!queue) queue = [];
      queue.push(node3);
    }
  }
  if (queue) {
    node3 = nodes[nodes.length - 1];
    if (!node3) {
      node3 = { type: "tableCell", children: [] };
      nodes.push(node3);
    }
    node3.children.push(...queue);
  }
  return nodes;
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/text.js
function text2(h4, node3) {
  return h4(node3, "text", wrapText(h4, node3.value));
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/textarea.js
function textarea(h4, node3) {
  return h4(node3, "text", wrapText(h4, toText2(node3)));
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/wbr.js
function wbr(h4, node3) {
  return h4(node3, "text", "\u200B");
}

// ../../node_modules/hast-util-to-mdast/lib/handlers/index.js
var handlers2 = {
  root: root3,
  text: text2,
  comment: comment2,
  doctype: ignore2,
  applet: ignore2,
  area: ignore2,
  basefont: ignore2,
  bgsound: ignore2,
  caption: ignore2,
  col: ignore2,
  colgroup: ignore2,
  command: ignore2,
  content: ignore2,
  datalist: ignore2,
  dialog: ignore2,
  element: ignore2,
  embed: ignore2,
  frame: ignore2,
  frameset: ignore2,
  isindex: ignore2,
  keygen: ignore2,
  link: ignore2,
  math: ignore2,
  menu: ignore2,
  menuitem: ignore2,
  meta: ignore2,
  nextid: ignore2,
  noembed: ignore2,
  noframes: ignore2,
  optgroup: ignore2,
  option: ignore2,
  param: ignore2,
  script: ignore2,
  shadow: ignore2,
  source: ignore2,
  spacer: ignore2,
  style: ignore2,
  svg: ignore2,
  template: ignore2,
  title: ignore2,
  track: ignore2,
  abbr: all5,
  acronym: all5,
  bdi: all5,
  bdo: all5,
  big: all5,
  blink: all5,
  button: all5,
  canvas: all5,
  cite: all5,
  data: all5,
  details: all5,
  dfn: all5,
  font: all5,
  ins: all5,
  label: all5,
  map: all5,
  marquee: all5,
  meter: all5,
  nobr: all5,
  noscript: all5,
  object: all5,
  output: all5,
  progress: all5,
  rb: all5,
  rbc: all5,
  rp: all5,
  rt: all5,
  rtc: all5,
  ruby: all5,
  slot: all5,
  small: all5,
  span: all5,
  sup: all5,
  sub: all5,
  tbody: all5,
  tfoot: all5,
  thead: all5,
  time: all5,
  address: wrapChildren,
  article: wrapChildren,
  aside: wrapChildren,
  body: wrapChildren,
  center: wrapChildren,
  div: wrapChildren,
  fieldset: wrapChildren,
  figcaption: wrapChildren,
  figure: wrapChildren,
  form: wrapChildren,
  footer: wrapChildren,
  header: wrapChildren,
  hgroup: wrapChildren,
  html: wrapChildren,
  legend: wrapChildren,
  main: wrapChildren,
  multicol: wrapChildren,
  nav: wrapChildren,
  picture: wrapChildren,
  section: wrapChildren,
  a,
  audio: media,
  b: strong2,
  base: base3,
  blockquote: blockquote2,
  br,
  code: inlineCode2,
  dir: list3,
  dl,
  dt: li,
  dd: li,
  del,
  em,
  h1: heading3,
  h2: heading3,
  h3: heading3,
  h4: heading3,
  h5: heading3,
  h6: heading3,
  hr,
  i: em,
  iframe: iframe2,
  img,
  image: img,
  input,
  kbd: inlineCode2,
  li,
  listing: code3,
  mark: em,
  ol: list3,
  p: p3,
  plaintext: code3,
  pre: code3,
  q,
  s: del,
  samp: inlineCode2,
  select: select2,
  strike: del,
  strong: strong2,
  summary: p3,
  table: table3,
  td: tableCell2,
  textarea,
  th: tableCell2,
  tr: tableRow2,
  tt: inlineCode2,
  u: em,
  ul: list3,
  var: inlineCode2,
  video: media,
  wbr,
  xmp: code3
};
function ignore2() {
}

// ../../node_modules/hast-util-to-mdast/lib/index.js
var block2 = convert(["heading", "paragraph", "root"]);
function toMdast(tree, options = {}) {
  const byId = {};
  let mdast2;
  const h4 = Object.assign(
    /**
     * @type {HWithProps & HWithoutProps}
     */
    /**
     * @param {Node} node
     * @param {string} type
     * @param {Properties|string|Array<Node>} [props]
     * @param {string|Array<Node>} [children]
     */
    ((node3, type2, props, children) => {
      let properties;
      if (typeof props === "string" || Array.isArray(props)) {
        children = props;
        properties = {};
      } else {
        properties = props;
      }
      const result2 = { type: type2, ...properties };
      if (typeof children === "string") {
        result2.value = children;
      } else if (children) {
        result2.children = children;
      }
      if (node3.position) {
        result2.position = node3.position;
      }
      return result2;
    }),
    {
      nodeById: byId,
      baseFound: false,
      inTable: false,
      wrapText: true,
      /** @type {string|null} */
      frozenBaseUrl: null,
      qNesting: 0,
      handlers: options.handlers ? { ...handlers2, ...options.handlers } : handlers2,
      document: options.document,
      checked: options.checked || "[x]",
      unchecked: options.unchecked || "[ ]",
      quotes: options.quotes || ['"']
    }
  );
  visit(tree, "element", (node3) => {
    const id = node3.properties && "id" in node3.properties && String(node3.properties.id).toUpperCase();
    if (id && !own10.call(byId, id)) {
      byId[id] = node3;
    }
  });
  rehypeMinifyWhitespace({ newlines: options.newlines === true })(tree);
  const result = one4(h4, tree, void 0);
  if (!result) {
    mdast2 = { type: "root", children: [] };
  } else if (Array.isArray(result)) {
    mdast2 = { type: "root", children: result };
  } else {
    mdast2 = result;
  }
  visit(mdast2, "text", ontext);
  return mdast2;
  function ontext(node3, index4, parent2) {
    if (index4 === null || !parent2) {
      return;
    }
    const previous = parent2.children[index4 - 1];
    if (previous && previous.type === node3.type) {
      previous.value += node3.value;
      parent2.children.splice(index4, 1);
      if (previous.position && node3.position) {
        previous.position.end = node3.position.end;
      }
      return index4 - 1;
    }
    node3.value = node3.value.replace(/[\t ]*(\r?\n|\r)[\t ]*/, "$1");
    if (parent2 && block2(parent2)) {
      if (!index4) {
        node3.value = node3.value.replace(/^[\t ]+/, "");
      }
      if (index4 === parent2.children.length - 1) {
        node3.value = node3.value.replace(/[\t ]+$/, "");
      }
    }
    if (!node3.value) {
      parent2.children.splice(index4, 1);
      return index4;
    }
  }
}

// ../../node_modules/rehype-remark/lib/index.js
var rehypeRemark = (
  /**
   * @type {(import('unified').Plugin<[Processor, Options?], HastRoot> & import('unified').Plugin<[Options?]|void[], HastRoot, MdastRoot>)}
   */
  /**
   * @param {Processor|Options} [destination]
   * @param {Options} [options]
   */
  (function(destination, options) {
    let settings;
    let processor2;
    if (typeof destination === "function") {
      processor2 = destination;
      settings = options || {};
    } else {
      settings = destination || {};
    }
    if (settings.document === void 0 || settings.document === null) {
      settings = Object.assign({}, settings, { document: true });
    }
    return processor2 ? bridge(processor2, settings) : mutate(settings);
  })
);
var lib_default = rehypeRemark;
function bridge(destination, options) {
  return (node3, file, next) => {
    destination.run(toMdast(node3, options), file, (error) => {
      next(error);
    });
  };
}
function mutate(options = {}) {
  return (node3) => {
    const result = (
      /** @type {MdastRoot} */
      toMdast(node3, options)
    );
    return result;
  };
}

// ../myst-to-html/dist/transforms.js
var defaultOptions = {
  addAdmonitionHeaders: true,
  addContainerCaptionNumbers: true,
  disableHeadingEnumeration: false,
  disableContainerEnumeration: false,
  disableEquationEnumeration: false
};
function addAdmonitionHeaders(tree) {
  visit(tree, "admonition", (node3) => {
    var _a6;
    if (!node3.kind || node3.kind === AdmonitionKind.admonition)
      return;
    node3.children = [
      {
        type: "admonitionTitle",
        children: [{ type: "text", value: admonitionKindToTitle(node3.kind) }]
      },
      ...(_a6 = node3.children) !== null && _a6 !== void 0 ? _a6 : []
    ];
  });
}
function addContainerCaptionNumbers(tree, state) {
  selectAll("container", tree).filter((container4) => container4.enumerator !== false).forEach((container4) => {
    var _a6, _b;
    const enumerator = (_a6 = state.getTarget(container4.identifier)) === null || _a6 === void 0 ? void 0 : _a6.node.enumerator;
    const para = select("caption > paragraph", container4);
    if (enumerator && para) {
      para.children = [
        { type: "captionNumber", kind: container4.kind, value: enumerator },
        ...(_b = para === null || para === void 0 ? void 0 : para.children) !== null && _b !== void 0 ? _b : []
      ];
    }
  });
}
function propagateTargets(tree) {
  visit(tree, "mystTarget", (node3, index4) => {
    const nextNode = findAfter(tree, index4);
    const normalized = normalizeLabel(node3.label);
    if (nextNode && normalized) {
      nextNode.identifier = normalized.identifier;
      nextNode.label = normalized.label;
    }
  });
  remove(tree, "mystTarget");
}
function ensureCaptionIsParagraph(tree) {
  visit(tree, "caption", (node3) => {
    if (node3.children && node3.children[0].type !== "paragraph") {
      node3.children = [{ type: "paragraph", children: node3.children }];
    }
  });
}
var transform = (state, o) => (tree) => {
  const opts = {
    ...defaultOptions,
    ...o
  };
  ensureCaptionIsParagraph(tree);
  propagateTargets(tree);
  enumerateTargets(state, tree, opts);
  resolveReferences(state, tree);
  liftChildren(tree, "mystDirective");
  liftChildren(tree, "mystRole");
  if (opts.addAdmonitionHeaders)
    addAdmonitionHeaders(tree);
  if (opts.addContainerCaptionNumbers)
    addContainerCaptionNumbers(tree, state);
};

// ../../node_modules/html-void-elements/index.js
var htmlVoidElements = [
  "area",
  "base",
  "basefont",
  "bgsound",
  "br",
  "col",
  "command",
  "embed",
  "frame",
  "hr",
  "image",
  "img",
  "input",
  "isindex",
  "keygen",
  "link",
  "menuitem",
  "meta",
  "nextid",
  "param",
  "source",
  "track",
  "wbr"
];

// ../../node_modules/stringify-entities/lib/core.js
function core3(value, options) {
  value = value.replace(
    options.subset ? charactersToExpression(options.subset) : /["&'<>`]/g,
    basic2
  );
  if (options.subset || options.escapeOnly) {
    return value;
  }
  return value.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, surrogate).replace(
    // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape
    /[\x01-\t\v\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,
    basic2
  );
  function surrogate(pair, index4, all10) {
    return options.format(
      (pair.charCodeAt(0) - 55296) * 1024 + pair.charCodeAt(1) - 56320 + 65536,
      all10.charCodeAt(index4 + 2),
      options
    );
  }
  function basic2(character, index4, all10) {
    return options.format(
      character.charCodeAt(0),
      all10.charCodeAt(index4 + 1),
      options
    );
  }
}
function charactersToExpression(subset) {
  const groups = [];
  let index4 = -1;
  while (++index4 < subset.length) {
    groups.push(subset[index4].replace(/[|\\{}()[\]^$+*?.]/g, "\\$&"));
  }
  return new RegExp("(?:" + groups.join("|") + ")", "g");
}

// ../../node_modules/stringify-entities/lib/util/to-hexadecimal.js
function toHexadecimal(code7, next, omit) {
  const value = "&#x" + code7.toString(16).toUpperCase();
  return omit && next && !/[\dA-Fa-f]/.test(String.fromCharCode(next)) ? value : value + ";";
}

// ../../node_modules/stringify-entities/lib/util/to-decimal.js
function toDecimal(code7, next, omit) {
  const value = "&#" + String(code7);
  return omit && next && !/\d/.test(String.fromCharCode(next)) ? value : value + ";";
}

// ../../node_modules/character-entities-legacy/index.js
var characterEntitiesLegacy = [
  "AElig",
  "AMP",
  "Aacute",
  "Acirc",
  "Agrave",
  "Aring",
  "Atilde",
  "Auml",
  "COPY",
  "Ccedil",
  "ETH",
  "Eacute",
  "Ecirc",
  "Egrave",
  "Euml",
  "GT",
  "Iacute",
  "Icirc",
  "Igrave",
  "Iuml",
  "LT",
  "Ntilde",
  "Oacute",
  "Ocirc",
  "Ograve",
  "Oslash",
  "Otilde",
  "Ouml",
  "QUOT",
  "REG",
  "THORN",
  "Uacute",
  "Ucirc",
  "Ugrave",
  "Uuml",
  "Yacute",
  "aacute",
  "acirc",
  "acute",
  "aelig",
  "agrave",
  "amp",
  "aring",
  "atilde",
  "auml",
  "brvbar",
  "ccedil",
  "cedil",
  "cent",
  "copy",
  "curren",
  "deg",
  "divide",
  "eacute",
  "ecirc",
  "egrave",
  "eth",
  "euml",
  "frac12",
  "frac14",
  "frac34",
  "gt",
  "iacute",
  "icirc",
  "iexcl",
  "igrave",
  "iquest",
  "iuml",
  "laquo",
  "lt",
  "macr",
  "micro",
  "middot",
  "nbsp",
  "not",
  "ntilde",
  "oacute",
  "ocirc",
  "ograve",
  "ordf",
  "ordm",
  "oslash",
  "otilde",
  "ouml",
  "para",
  "plusmn",
  "pound",
  "quot",
  "raquo",
  "reg",
  "sect",
  "shy",
  "sup1",
  "sup2",
  "sup3",
  "szlig",
  "thorn",
  "times",
  "uacute",
  "ucirc",
  "ugrave",
  "uml",
  "uuml",
  "yacute",
  "yen",
  "yuml"
];

// ../../node_modules/character-entities-html4/index.js
var characterEntitiesHtml4 = {
  nbsp: "\xA0",
  iexcl: "\xA1",
  cent: "\xA2",
  pound: "\xA3",
  curren: "\xA4",
  yen: "\xA5",
  brvbar: "\xA6",
  sect: "\xA7",
  uml: "\xA8",
  copy: "\xA9",
  ordf: "\xAA",
  laquo: "\xAB",
  not: "\xAC",
  shy: "\xAD",
  reg: "\xAE",
  macr: "\xAF",
  deg: "\xB0",
  plusmn: "\xB1",
  sup2: "\xB2",
  sup3: "\xB3",
  acute: "\xB4",
  micro: "\xB5",
  para: "\xB6",
  middot: "\xB7",
  cedil: "\xB8",
  sup1: "\xB9",
  ordm: "\xBA",
  raquo: "\xBB",
  frac14: "\xBC",
  frac12: "\xBD",
  frac34: "\xBE",
  iquest: "\xBF",
  Agrave: "\xC0",
  Aacute: "\xC1",
  Acirc: "\xC2",
  Atilde: "\xC3",
  Auml: "\xC4",
  Aring: "\xC5",
  AElig: "\xC6",
  Ccedil: "\xC7",
  Egrave: "\xC8",
  Eacute: "\xC9",
  Ecirc: "\xCA",
  Euml: "\xCB",
  Igrave: "\xCC",
  Iacute: "\xCD",
  Icirc: "\xCE",
  Iuml: "\xCF",
  ETH: "\xD0",
  Ntilde: "\xD1",
  Ograve: "\xD2",
  Oacute: "\xD3",
  Ocirc: "\xD4",
  Otilde: "\xD5",
  Ouml: "\xD6",
  times: "\xD7",
  Oslash: "\xD8",
  Ugrave: "\xD9",
  Uacute: "\xDA",
  Ucirc: "\xDB",
  Uuml: "\xDC",
  Yacute: "\xDD",
  THORN: "\xDE",
  szlig: "\xDF",
  agrave: "\xE0",
  aacute: "\xE1",
  acirc: "\xE2",
  atilde: "\xE3",
  auml: "\xE4",
  aring: "\xE5",
  aelig: "\xE6",
  ccedil: "\xE7",
  egrave: "\xE8",
  eacute: "\xE9",
  ecirc: "\xEA",
  euml: "\xEB",
  igrave: "\xEC",
  iacute: "\xED",
  icirc: "\xEE",
  iuml: "\xEF",
  eth: "\xF0",
  ntilde: "\xF1",
  ograve: "\xF2",
  oacute: "\xF3",
  ocirc: "\xF4",
  otilde: "\xF5",
  ouml: "\xF6",
  divide: "\xF7",
  oslash: "\xF8",
  ugrave: "\xF9",
  uacute: "\xFA",
  ucirc: "\xFB",
  uuml: "\xFC",
  yacute: "\xFD",
  thorn: "\xFE",
  yuml: "\xFF",
  fnof: "\u0192",
  Alpha: "\u0391",
  Beta: "\u0392",
  Gamma: "\u0393",
  Delta: "\u0394",
  Epsilon: "\u0395",
  Zeta: "\u0396",
  Eta: "\u0397",
  Theta: "\u0398",
  Iota: "\u0399",
  Kappa: "\u039A",
  Lambda: "\u039B",
  Mu: "\u039C",
  Nu: "\u039D",
  Xi: "\u039E",
  Omicron: "\u039F",
  Pi: "\u03A0",
  Rho: "\u03A1",
  Sigma: "\u03A3",
  Tau: "\u03A4",
  Upsilon: "\u03A5",
  Phi: "\u03A6",
  Chi: "\u03A7",
  Psi: "\u03A8",
  Omega: "\u03A9",
  alpha: "\u03B1",
  beta: "\u03B2",
  gamma: "\u03B3",
  delta: "\u03B4",
  epsilon: "\u03B5",
  zeta: "\u03B6",
  eta: "\u03B7",
  theta: "\u03B8",
  iota: "\u03B9",
  kappa: "\u03BA",
  lambda: "\u03BB",
  mu: "\u03BC",
  nu: "\u03BD",
  xi: "\u03BE",
  omicron: "\u03BF",
  pi: "\u03C0",
  rho: "\u03C1",
  sigmaf: "\u03C2",
  sigma: "\u03C3",
  tau: "\u03C4",
  upsilon: "\u03C5",
  phi: "\u03C6",
  chi: "\u03C7",
  psi: "\u03C8",
  omega: "\u03C9",
  thetasym: "\u03D1",
  upsih: "\u03D2",
  piv: "\u03D6",
  bull: "\u2022",
  hellip: "\u2026",
  prime: "\u2032",
  Prime: "\u2033",
  oline: "\u203E",
  frasl: "\u2044",
  weierp: "\u2118",
  image: "\u2111",
  real: "\u211C",
  trade: "\u2122",
  alefsym: "\u2135",
  larr: "\u2190",
  uarr: "\u2191",
  rarr: "\u2192",
  darr: "\u2193",
  harr: "\u2194",
  crarr: "\u21B5",
  lArr: "\u21D0",
  uArr: "\u21D1",
  rArr: "\u21D2",
  dArr: "\u21D3",
  hArr: "\u21D4",
  forall: "\u2200",
  part: "\u2202",
  exist: "\u2203",
  empty: "\u2205",
  nabla: "\u2207",
  isin: "\u2208",
  notin: "\u2209",
  ni: "\u220B",
  prod: "\u220F",
  sum: "\u2211",
  minus: "\u2212",
  lowast: "\u2217",
  radic: "\u221A",
  prop: "\u221D",
  infin: "\u221E",
  ang: "\u2220",
  and: "\u2227",
  or: "\u2228",
  cap: "\u2229",
  cup: "\u222A",
  int: "\u222B",
  there4: "\u2234",
  sim: "\u223C",
  cong: "\u2245",
  asymp: "\u2248",
  ne: "\u2260",
  equiv: "\u2261",
  le: "\u2264",
  ge: "\u2265",
  sub: "\u2282",
  sup: "\u2283",
  nsub: "\u2284",
  sube: "\u2286",
  supe: "\u2287",
  oplus: "\u2295",
  otimes: "\u2297",
  perp: "\u22A5",
  sdot: "\u22C5",
  lceil: "\u2308",
  rceil: "\u2309",
  lfloor: "\u230A",
  rfloor: "\u230B",
  lang: "\u2329",
  rang: "\u232A",
  loz: "\u25CA",
  spades: "\u2660",
  clubs: "\u2663",
  hearts: "\u2665",
  diams: "\u2666",
  quot: '"',
  amp: "&",
  lt: "<",
  gt: ">",
  OElig: "\u0152",
  oelig: "\u0153",
  Scaron: "\u0160",
  scaron: "\u0161",
  Yuml: "\u0178",
  circ: "\u02C6",
  tilde: "\u02DC",
  ensp: "\u2002",
  emsp: "\u2003",
  thinsp: "\u2009",
  zwnj: "\u200C",
  zwj: "\u200D",
  lrm: "\u200E",
  rlm: "\u200F",
  ndash: "\u2013",
  mdash: "\u2014",
  lsquo: "\u2018",
  rsquo: "\u2019",
  sbquo: "\u201A",
  ldquo: "\u201C",
  rdquo: "\u201D",
  bdquo: "\u201E",
  dagger: "\u2020",
  Dagger: "\u2021",
  permil: "\u2030",
  lsaquo: "\u2039",
  rsaquo: "\u203A",
  euro: "\u20AC"
};

// ../../node_modules/stringify-entities/lib/constant/dangerous.js
var dangerous = [
  "cent",
  "copy",
  "divide",
  "gt",
  "lt",
  "not",
  "para",
  "times"
];

// ../../node_modules/stringify-entities/lib/util/to-named.js
var own11 = {}.hasOwnProperty;
var characters = {};
var key;
for (key in characterEntitiesHtml4) {
  if (own11.call(characterEntitiesHtml4, key)) {
    characters[characterEntitiesHtml4[key]] = key;
  }
}
function toNamed(code7, next, omit, attribute2) {
  const character = String.fromCharCode(code7);
  if (own11.call(characters, character)) {
    const name3 = characters[character];
    const value = "&" + name3;
    if (omit && characterEntitiesLegacy.includes(name3) && !dangerous.includes(name3) && (!attribute2 || next && next !== 61 && /[^\da-z]/i.test(String.fromCharCode(next)))) {
      return value;
    }
    return value + ";";
  }
  return "";
}

// ../../node_modules/stringify-entities/lib/util/format-smart.js
function formatSmart(code7, next, options) {
  let numeric = toHexadecimal(code7, next, options.omitOptionalSemicolons);
  let named;
  if (options.useNamedReferences || options.useShortestReferences) {
    named = toNamed(
      code7,
      next,
      options.omitOptionalSemicolons,
      options.attribute
    );
  }
  if ((options.useShortestReferences || !named) && options.useShortestReferences) {
    const decimal = toDecimal(code7, next, options.omitOptionalSemicolons);
    if (decimal.length < numeric.length) {
      numeric = decimal;
    }
  }
  return named && (!options.useShortestReferences || named.length < numeric.length) ? named : numeric;
}

// ../../node_modules/stringify-entities/lib/index.js
function stringifyEntities(value, options) {
  return core3(value, Object.assign({ format: formatSmart }, options));
}

// ../../node_modules/hast-util-to-html/lib/handle/comment.js
function comment3(node3, _1, _2, state) {
  return state.settings.bogusComments ? "<?" + stringifyEntities(
    node3.value,
    Object.assign({}, state.settings.characterReferences, { subset: [">"] })
  ) + ">" : "<!--" + node3.value.replace(/^>|^->|<!--|-->|--!>|<!-$/g, encode) + "-->";
  function encode($0) {
    return stringifyEntities(
      $0,
      Object.assign({}, state.settings.characterReferences, {
        subset: ["<", ">"]
      })
    );
  }
}

// ../../node_modules/hast-util-to-html/lib/handle/doctype.js
function doctype(_1, _2, _3, state) {
  return "<!" + (state.settings.upperDoctype ? "DOCTYPE" : "doctype") + (state.settings.tightDoctype ? "" : " ") + "html>";
}

// ../../node_modules/ccount/index.js
function ccount(value, character) {
  const source2 = String(value);
  if (typeof character !== "string") {
    throw new TypeError("Expected character");
  }
  let count2 = 0;
  let index4 = source2.indexOf(character);
  while (index4 !== -1) {
    count2++;
    index4 = source2.indexOf(character, index4 + character.length);
  }
  return count2;
}

// ../../node_modules/hast-util-to-html/lib/omission/util/siblings.js
var siblingAfter = siblings(1);
var siblingBefore = siblings(-1);
function siblings(increment2) {
  return sibling;
  function sibling(parent2, index4, includeWhitespace) {
    const siblings2 = parent2 ? parent2.children : [];
    let offset = (index4 || 0) + increment2;
    let next = siblings2 && siblings2[offset];
    if (!includeWhitespace) {
      while (next && whitespace2(next)) {
        offset += increment2;
        next = siblings2[offset];
      }
    }
    return next;
  }
}

// ../../node_modules/hast-util-to-html/lib/omission/omission.js
var own12 = {}.hasOwnProperty;
function omission(handlers6) {
  return omit;
  function omit(node3, index4, parent2) {
    return own12.call(handlers6, node3.tagName) && handlers6[node3.tagName](node3, index4, parent2);
  }
}

// ../../node_modules/hast-util-to-html/lib/omission/closing.js
var closing = omission({
  html: html4,
  head: headOrColgroupOrCaption,
  body,
  p: p4,
  li: li2,
  dt: dt2,
  dd: dd2,
  rt: rubyElement,
  rp: rubyElement,
  optgroup,
  option: option2,
  menuitem,
  colgroup: headOrColgroupOrCaption,
  caption: headOrColgroupOrCaption,
  thead: thead2,
  tbody,
  tfoot,
  tr: tr2,
  td: cells,
  th: cells
});
function headOrColgroupOrCaption(_2, index4, parent2) {
  const next = siblingAfter(parent2, index4, true);
  return !next || next.type !== "comment" && !(next.type === "text" && whitespace2(next.value.charAt(0)));
}
function html4(_2, index4, parent2) {
  const next = siblingAfter(parent2, index4);
  return !next || next.type !== "comment";
}
function body(_2, index4, parent2) {
  const next = siblingAfter(parent2, index4);
  return !next || next.type !== "comment";
}
function p4(_2, index4, parent2) {
  const next = siblingAfter(parent2, index4);
  return next ? next.type === "element" && (next.tagName === "address" || next.tagName === "article" || next.tagName === "aside" || next.tagName === "blockquote" || next.tagName === "details" || next.tagName === "div" || next.tagName === "dl" || next.tagName === "fieldset" || next.tagName === "figcaption" || next.tagName === "figure" || next.tagName === "footer" || next.tagName === "form" || next.tagName === "h1" || next.tagName === "h2" || next.tagName === "h3" || next.tagName === "h4" || next.tagName === "h5" || next.tagName === "h6" || next.tagName === "header" || next.tagName === "hgroup" || next.tagName === "hr" || next.tagName === "main" || next.tagName === "menu" || next.tagName === "nav" || next.tagName === "ol" || next.tagName === "p" || next.tagName === "pre" || next.tagName === "section" || next.tagName === "table" || next.tagName === "ul") : !parent2 || // Confusing parent.
  !(parent2.type === "element" && (parent2.tagName === "a" || parent2.tagName === "audio" || parent2.tagName === "del" || parent2.tagName === "ins" || parent2.tagName === "map" || parent2.tagName === "noscript" || parent2.tagName === "video"));
}
function li2(_2, index4, parent2) {
  const next = siblingAfter(parent2, index4);
  return !next || next.type === "element" && next.tagName === "li";
}
function dt2(_2, index4, parent2) {
  const next = siblingAfter(parent2, index4);
  return next && next.type === "element" && (next.tagName === "dt" || next.tagName === "dd");
}
function dd2(_2, index4, parent2) {
  const next = siblingAfter(parent2, index4);
  return !next || next.type === "element" && (next.tagName === "dt" || next.tagName === "dd");
}
function rubyElement(_2, index4, parent2) {
  const next = siblingAfter(parent2, index4);
  return !next || next.type === "element" && (next.tagName === "rp" || next.tagName === "rt");
}
function optgroup(_2, index4, parent2) {
  const next = siblingAfter(parent2, index4);
  return !next || next.type === "element" && next.tagName === "optgroup";
}
function option2(_2, index4, parent2) {
  const next = siblingAfter(parent2, index4);
  return !next || next.type === "element" && (next.tagName === "option" || next.tagName === "optgroup");
}
function menuitem(_2, index4, parent2) {
  const next = siblingAfter(parent2, index4);
  return !next || next.type === "element" && (next.tagName === "menuitem" || next.tagName === "hr" || next.tagName === "menu");
}
function thead2(_2, index4, parent2) {
  const next = siblingAfter(parent2, index4);
  return next && next.type === "element" && (next.tagName === "tbody" || next.tagName === "tfoot");
}
function tbody(_2, index4, parent2) {
  const next = siblingAfter(parent2, index4);
  return !next || next.type === "element" && (next.tagName === "tbody" || next.tagName === "tfoot");
}
function tfoot(_2, index4, parent2) {
  return !siblingAfter(parent2, index4);
}
function tr2(_2, index4, parent2) {
  const next = siblingAfter(parent2, index4);
  return !next || next.type === "element" && next.tagName === "tr";
}
function cells(_2, index4, parent2) {
  const next = siblingAfter(parent2, index4);
  return !next || next.type === "element" && (next.tagName === "td" || next.tagName === "th");
}

// ../../node_modules/hast-util-to-html/lib/omission/opening.js
var opening = omission({
  html: html5,
  head,
  body: body2,
  colgroup,
  tbody: tbody2
});
function html5(node3) {
  const head2 = siblingAfter(node3, -1);
  return !head2 || head2.type !== "comment";
}
function head(node3) {
  const children = node3.children;
  const seen = [];
  let index4 = -1;
  while (++index4 < children.length) {
    const child = children[index4];
    if (child.type === "element" && (child.tagName === "title" || child.tagName === "base")) {
      if (seen.includes(child.tagName)) return false;
      seen.push(child.tagName);
    }
  }
  return children.length > 0;
}
function body2(node3) {
  const head2 = siblingAfter(node3, -1, true);
  return !head2 || head2.type !== "comment" && !(head2.type === "text" && whitespace2(head2.value.charAt(0))) && !(head2.type === "element" && (head2.tagName === "meta" || head2.tagName === "link" || head2.tagName === "script" || head2.tagName === "style" || head2.tagName === "template"));
}
function colgroup(node3, index4, parent2) {
  const previous = siblingBefore(parent2, index4);
  const head2 = siblingAfter(node3, -1, true);
  if (parent2 && previous && previous.type === "element" && previous.tagName === "colgroup" && closing(previous, parent2.children.indexOf(previous), parent2)) {
    return false;
  }
  return head2 && head2.type === "element" && head2.tagName === "col";
}
function tbody2(node3, index4, parent2) {
  const previous = siblingBefore(parent2, index4);
  const head2 = siblingAfter(node3, -1);
  if (parent2 && previous && previous.type === "element" && (previous.tagName === "thead" || previous.tagName === "tbody") && closing(previous, parent2.children.indexOf(previous), parent2)) {
    return false;
  }
  return head2 && head2.type === "element" && head2.tagName === "tr";
}

// ../../node_modules/hast-util-to-html/lib/handle/element.js
var constants = {
  // See: <https://html.spec.whatwg.org/#attribute-name-state>.
  name: [
    ["	\n\f\r &/=>".split(""), "	\n\f\r \"&'/=>`".split("")],
    [`\0	
\f\r "&'/<=>`.split(""), "\0	\n\f\r \"&'/<=>`".split("")]
  ],
  // See: <https://html.spec.whatwg.org/#attribute-value-(unquoted)-state>.
  unquoted: [
    ["	\n\f\r &>".split(""), "\0	\n\f\r \"&'<=>`".split("")],
    ["\0	\n\f\r \"&'<=>`".split(""), "\0	\n\f\r \"&'<=>`".split("")]
  ],
  // See: <https://html.spec.whatwg.org/#attribute-value-(single-quoted)-state>.
  single: [
    ["&'".split(""), "\"&'`".split("")],
    ["\0&'".split(""), "\0\"&'`".split("")]
  ],
  // See: <https://html.spec.whatwg.org/#attribute-value-(double-quoted)-state>.
  double: [
    ['"&'.split(""), "\"&'`".split("")],
    ['\0"&'.split(""), "\0\"&'`".split("")]
  ]
};
function element3(node3, index4, parent2, state) {
  const schema2 = state.schema;
  const omit = schema2.space === "svg" ? false : state.settings.omitOptionalTags;
  let selfClosing = schema2.space === "svg" ? state.settings.closeEmptyElements : state.settings.voids.includes(node3.tagName.toLowerCase());
  const parts = [];
  let last;
  if (schema2.space === "html" && node3.tagName === "svg") {
    state.schema = svg2;
  }
  const attrs = serializeAttributes(state, node3.properties);
  const content3 = state.all(
    schema2.space === "html" && node3.tagName === "template" ? node3.content : node3
  );
  state.schema = schema2;
  if (content3) selfClosing = false;
  if (attrs || !omit || !opening(node3, index4, parent2)) {
    parts.push("<", node3.tagName, attrs ? " " + attrs : "");
    if (selfClosing && (schema2.space === "svg" || state.settings.closeSelfClosing)) {
      last = attrs.charAt(attrs.length - 1);
      if (!state.settings.tightSelfClosing || last === "/" || last && last !== '"' && last !== "'") {
        parts.push(" ");
      }
      parts.push("/");
    }
    parts.push(">");
  }
  parts.push(content3);
  if (!selfClosing && (!omit || !closing(node3, index4, parent2))) {
    parts.push("</" + node3.tagName + ">");
  }
  return parts.join("");
}
function serializeAttributes(state, props) {
  const values = [];
  let index4 = -1;
  let key2;
  if (props) {
    for (key2 in props) {
      if (props[key2] !== void 0 && props[key2] !== null) {
        const value = serializeAttribute(state, key2, props[key2]);
        if (value) values.push(value);
      }
    }
  }
  while (++index4 < values.length) {
    const last = state.settings.tightAttributes ? values[index4].charAt(values[index4].length - 1) : null;
    if (index4 !== values.length - 1 && last !== '"' && last !== "'") {
      values[index4] += " ";
    }
  }
  return values.join("");
}
function serializeAttribute(state, key2, value) {
  const info = find(state.schema, key2);
  const x2 = state.settings.allowParseErrors && state.schema.space === "html" ? 0 : 1;
  const y = state.settings.allowDangerousCharacters ? 0 : 1;
  let quote = state.quote;
  let result;
  if (info.overloadedBoolean && (value === info.attribute || value === "")) {
    value = true;
  } else if (info.boolean || info.overloadedBoolean && typeof value !== "string") {
    value = Boolean(value);
  }
  if (value === void 0 || value === null || value === false || typeof value === "number" && Number.isNaN(value)) {
    return "";
  }
  const name3 = stringifyEntities(
    info.attribute,
    Object.assign({}, state.settings.characterReferences, {
      // Always encode without parse errors in non-HTML.
      subset: constants.name[x2][y]
    })
  );
  if (value === true) return name3;
  value = Array.isArray(value) ? (info.commaSeparated ? stringify2 : stringify)(value, {
    padLeft: !state.settings.tightCommaSeparatedLists
  }) : String(value);
  if (state.settings.collapseEmptyAttributes && !value) return name3;
  if (state.settings.preferUnquoted) {
    result = stringifyEntities(
      value,
      Object.assign({}, state.settings.characterReferences, {
        subset: constants.unquoted[x2][y],
        attribute: true
      })
    );
  }
  if (result !== value) {
    if (state.settings.quoteSmart && ccount(value, quote) > ccount(value, state.alternative)) {
      quote = state.alternative;
    }
    result = quote + stringifyEntities(
      value,
      Object.assign({}, state.settings.characterReferences, {
        // Always encode without parse errors in non-HTML.
        subset: (quote === "'" ? constants.single : constants.double)[x2][y],
        attribute: true
      })
    ) + quote;
  }
  return name3 + (result ? "=" + result : result);
}

// ../../node_modules/hast-util-to-html/lib/handle/text.js
function text3(node3, _2, parent2, state) {
  return parent2 && parent2.type === "element" && (parent2.tagName === "script" || parent2.tagName === "style") ? node3.value : stringifyEntities(
    node3.value,
    Object.assign({}, state.settings.characterReferences, {
      subset: ["<", "&"]
    })
  );
}

// ../../node_modules/hast-util-to-html/lib/handle/raw.js
function raw(node3, index4, parent2, state) {
  return state.settings.allowDangerousHtml ? node3.value : text3(node3, index4, parent2, state);
}

// ../../node_modules/hast-util-to-html/lib/handle/root.js
function root4(node3, _1, _2, state) {
  return state.all(node3);
}

// ../../node_modules/hast-util-to-html/lib/handle/index.js
var handle4 = zwitch("type", {
  invalid,
  unknown: unknown2,
  handlers: { comment: comment3, doctype, element: element3, raw, root: root4, text: text3 }
});
function invalid(node3) {
  throw new Error("Expected node, not `" + node3 + "`");
}
function unknown2(node3) {
  throw new Error("Cannot compile unknown node `" + node3.type + "`");
}

// ../../node_modules/hast-util-to-html/lib/index.js
function toHtml(tree, options) {
  const options_ = options || {};
  const quote = options_.quote || '"';
  const alternative = quote === '"' ? "'" : '"';
  if (quote !== '"' && quote !== "'") {
    throw new Error("Invalid quote `" + quote + "`, expected `'` or `\"`");
  }
  const state = {
    one: one6,
    all: all7,
    settings: {
      omitOptionalTags: options_.omitOptionalTags || false,
      allowParseErrors: options_.allowParseErrors || false,
      allowDangerousCharacters: options_.allowDangerousCharacters || false,
      quoteSmart: options_.quoteSmart || false,
      preferUnquoted: options_.preferUnquoted || false,
      tightAttributes: options_.tightAttributes || false,
      upperDoctype: options_.upperDoctype || false,
      tightDoctype: options_.tightDoctype || false,
      bogusComments: options_.bogusComments || false,
      tightCommaSeparatedLists: options_.tightCommaSeparatedLists || false,
      tightSelfClosing: options_.tightSelfClosing || false,
      collapseEmptyAttributes: options_.collapseEmptyAttributes || false,
      allowDangerousHtml: options_.allowDangerousHtml || false,
      voids: options_.voids || htmlVoidElements,
      characterReferences: options_.characterReferences || options_.entities || {},
      closeSelfClosing: options_.closeSelfClosing || false,
      closeEmptyElements: options_.closeEmptyElements || false
    },
    schema: options_.space === "svg" ? svg2 : html3,
    quote,
    alternative
  };
  return state.one(
    Array.isArray(tree) ? { type: "root", children: tree } : tree,
    void 0,
    void 0
  );
}
function one6(node3, index4, parent2) {
  return handle4(node3, index4, parent2, this);
}
function all7(parent2) {
  const results = [];
  const children = parent2 && parent2.children || [];
  let index4 = -1;
  while (++index4 < children.length) {
    results[index4] = this.one(children[index4], index4, parent2);
  }
  return results.join("");
}

// ../../node_modules/rehype-stringify/lib/index.js
function rehypeStringify(config3) {
  const processorSettings = (
    /** @type {Options} */
    this.data("settings")
  );
  const settings = Object.assign({}, processorSettings, config3);
  Object.assign(this, { Compiler: compiler });
  function compiler(tree) {
    return toHtml(tree, settings);
  }
}

// ../myst-to-html/dist/renderMdast.js
function mystToHtml(tree, opts) {
  const state = new State2();
  const pipe = unified().use(transform, state).use(mystToHast, opts === null || opts === void 0 ? void 0 : opts.hast).use(formatHtml, opts === null || opts === void 0 ? void 0 : opts.formatHtml).use(rehypeStringify, opts === null || opts === void 0 ? void 0 : opts.stringifyHtml);
  const result = pipe.runSync(tree);
  const html7 = pipe.stringify(result);
  return html7.trim();
}

// ../../node_modules/devlop/lib/default.js
function ok2() {
}

// ../../node_modules/hast-util-from-html/node_modules/hast-util-parse-selector/lib/index.js
var search2 = /[#.]/g;
function parseSelector2(selector, defaultTagName) {
  const value = selector || "";
  const props = {};
  let start = 0;
  let previous;
  let tagName;
  while (start < value.length) {
    search2.lastIndex = start;
    const match3 = search2.exec(value);
    const subvalue = value.slice(start, match3 ? match3.index : value.length);
    if (subvalue) {
      if (!previous) {
        tagName = subvalue;
      } else if (previous === "#") {
        props.id = subvalue;
      } else if (Array.isArray(props.className)) {
        props.className.push(subvalue);
      } else {
        props.className = [subvalue];
      }
      start += subvalue.length;
    }
    if (match3) {
      previous = match3[0];
      start++;
    }
  }
  return {
    type: "element",
    // @ts-expect-error: tag name is parsed.
    tagName: tagName || defaultTagName || "div",
    properties: props,
    children: []
  };
}

// ../../node_modules/hast-util-from-html/node_modules/hastscript/lib/create-h.js
var buttonTypes2 = /* @__PURE__ */ new Set(["button", "menu", "reset", "submit"]);
var own13 = {}.hasOwnProperty;
function createH(schema2, defaultTagName, caseSensitive) {
  const adjust = caseSensitive && createAdjustMap2(caseSensitive);
  function h4(selector, properties, ...children) {
    let index4 = -1;
    let node3;
    if (selector === void 0 || selector === null) {
      node3 = { type: "root", children: [] };
      const child = (
        /** @type {Child} */
        properties
      );
      children.unshift(child);
    } else {
      node3 = parseSelector2(selector, defaultTagName);
      node3.tagName = node3.tagName.toLowerCase();
      if (adjust && own13.call(adjust, node3.tagName)) {
        node3.tagName = adjust[node3.tagName];
      }
      if (isProperties2(properties, node3.tagName)) {
        let key2;
        for (key2 in properties) {
          if (own13.call(properties, key2)) {
            addProperty2(schema2, node3.properties, key2, properties[key2]);
          }
        }
      } else {
        children.unshift(properties);
      }
    }
    while (++index4 < children.length) {
      addChild2(node3.children, children[index4]);
    }
    if (node3.type === "element" && node3.tagName === "template") {
      node3.content = { type: "root", children: node3.children };
      node3.children = [];
    }
    return node3;
  }
  return h4;
}
function isProperties2(value, name3) {
  if (value === null || value === void 0 || typeof value !== "object" || Array.isArray(value)) {
    return false;
  }
  if (name3 === "input" || !value.type || typeof value.type !== "string") {
    return true;
  }
  if ("children" in value && Array.isArray(value.children)) {
    return false;
  }
  if (name3 === "button") {
    return buttonTypes2.has(value.type.toLowerCase());
  }
  return !("value" in value);
}
function addProperty2(schema2, properties, key2, value) {
  const info = find(schema2, key2);
  let index4 = -1;
  let result;
  if (value === void 0 || value === null) return;
  if (typeof value === "number") {
    if (Number.isNaN(value)) return;
    result = value;
  } else if (typeof value === "boolean") {
    result = value;
  } else if (typeof value === "string") {
    if (info.spaceSeparated) {
      result = parse3(value);
    } else if (info.commaSeparated) {
      result = parse4(value);
    } else if (info.commaOrSpaceSeparated) {
      result = parse3(parse4(value).join(" "));
    } else {
      result = parsePrimitive2(info, info.property, value);
    }
  } else if (Array.isArray(value)) {
    result = value.concat();
  } else {
    result = info.property === "style" ? style2(value) : String(value);
  }
  if (Array.isArray(result)) {
    const finalResult = [];
    while (++index4 < result.length) {
      const value2 = (
        /** @type {number | string} */
        parsePrimitive2(info, info.property, result[index4])
      );
      finalResult[index4] = value2;
    }
    result = finalResult;
  }
  if (info.property === "className" && Array.isArray(properties.className)) {
    const value2 = (
      /** @type {number | string} */
      result
    );
    result = properties.className.concat(value2);
  }
  properties[info.property] = result;
}
function addChild2(nodes, value) {
  let index4 = -1;
  if (value === void 0 || value === null) {
  } else if (typeof value === "string" || typeof value === "number") {
    nodes.push({ type: "text", value: String(value) });
  } else if (Array.isArray(value)) {
    while (++index4 < value.length) {
      addChild2(nodes, value[index4]);
    }
  } else if (typeof value === "object" && "type" in value) {
    if (value.type === "root") {
      addChild2(nodes, value.children);
    } else {
      nodes.push(value);
    }
  } else {
    throw new Error("Expected node, nodes, or string, got `" + value + "`");
  }
}
function parsePrimitive2(info, name3, value) {
  if (typeof value === "string") {
    if (info.number && value && !Number.isNaN(Number(value))) {
      return Number(value);
    }
    if ((info.boolean || info.overloadedBoolean) && (value === "" || normalize4(value) === normalize4(name3))) {
      return true;
    }
  }
  return value;
}
function style2(value) {
  const result = [];
  let key2;
  for (key2 in value) {
    if (own13.call(value, key2)) {
      result.push([key2, value[key2]].join(": "));
    }
  }
  return result.join("; ");
}
function createAdjustMap2(values) {
  const result = {};
  let index4 = -1;
  while (++index4 < values.length) {
    result[values[index4].toLowerCase()] = values[index4];
  }
  return result;
}

// ../../node_modules/hast-util-from-html/node_modules/hastscript/lib/svg-case-sensitive-tag-names.js
var svgCaseSensitiveTagNames2 = [
  "altGlyph",
  "altGlyphDef",
  "altGlyphItem",
  "animateColor",
  "animateMotion",
  "animateTransform",
  "clipPath",
  "feBlend",
  "feColorMatrix",
  "feComponentTransfer",
  "feComposite",
  "feConvolveMatrix",
  "feDiffuseLighting",
  "feDisplacementMap",
  "feDistantLight",
  "feDropShadow",
  "feFlood",
  "feFuncA",
  "feFuncB",
  "feFuncG",
  "feFuncR",
  "feGaussianBlur",
  "feImage",
  "feMerge",
  "feMergeNode",
  "feMorphology",
  "feOffset",
  "fePointLight",
  "feSpecularLighting",
  "feSpotLight",
  "feTile",
  "feTurbulence",
  "foreignObject",
  "glyphRef",
  "linearGradient",
  "radialGradient",
  "solidColor",
  "textArea",
  "textPath"
];

// ../../node_modules/hast-util-from-html/node_modules/hastscript/lib/index.js
var h2 = createH(html3, "div");
var s2 = createH(svg2, "g", svgCaseSensitiveTagNames2);

// ../../node_modules/hast-util-from-html/node_modules/vfile-location/lib/index.js
var search3 = /\r?\n|\r/g;
function location3(file) {
  const value = String(file);
  const indices = [];
  search3.lastIndex = 0;
  while (search3.test(value)) {
    indices.push(search3.lastIndex);
  }
  indices.push(value.length + 1);
  return { toPoint, toOffset };
  function toPoint(offset) {
    let index4 = -1;
    if (typeof offset === "number" && offset > -1 && offset < indices[indices.length - 1]) {
      while (++index4 < indices.length) {
        if (indices[index4] > offset) {
          return {
            line: index4 + 1,
            column: offset - (index4 > 0 ? indices[index4 - 1] : 0) + 1,
            offset
          };
        }
      }
    }
  }
  function toOffset(point6) {
    const line2 = point6 && point6.line;
    const column = point6 && point6.column;
    if (typeof line2 === "number" && typeof column === "number" && !Number.isNaN(line2) && !Number.isNaN(column) && line2 - 1 in indices) {
      const offset = (indices[line2 - 2] || 0) + column - 1 || 0;
      if (offset > -1 && offset < indices[indices.length - 1]) {
        return offset;
      }
    }
  }
}

// ../../node_modules/hast-util-from-html/node_modules/hast-util-from-parse5/lib/index.js
var own14 = {}.hasOwnProperty;
var proto4 = Object.prototype;
function fromParse52(tree, options) {
  const settings = options || {};
  return one7(
    {
      file: settings.file || void 0,
      location: false,
      schema: settings.space === "svg" ? svg2 : html3,
      verbose: settings.verbose || false
    },
    tree
  );
}
function one7(state, node3) {
  let result;
  switch (node3.nodeName) {
    case "#comment": {
      const reference = (
        /** @type {P5Comment} */
        node3
      );
      result = { type: "comment", value: reference.data };
      patch3(state, reference, result);
      return result;
    }
    case "#document":
    case "#document-fragment": {
      const reference = (
        /** @type {P5Document | P5DocumentFragment} */
        node3
      );
      const quirksMode = "mode" in reference ? reference.mode === "quirks" || reference.mode === "limited-quirks" : false;
      result = {
        type: "root",
        children: all8(state, node3.childNodes),
        data: { quirksMode }
      };
      if (state.file && state.location) {
        const doc = String(state.file);
        const loc = location3(doc);
        const start = loc.toPoint(0);
        const end = loc.toPoint(doc.length);
        ok2(start, "expected `start`");
        ok2(end, "expected `end`");
        result.position = { start, end };
      }
      return result;
    }
    case "#documentType": {
      const reference = (
        /** @type {P5DocumentType} */
        node3
      );
      result = { type: "doctype" };
      patch3(state, reference, result);
      return result;
    }
    case "#text": {
      const reference = (
        /** @type {P5Text} */
        node3
      );
      result = { type: "text", value: reference.value };
      patch3(state, reference, result);
      return result;
    }
    // Element.
    default: {
      const reference = (
        /** @type {P5Element} */
        node3
      );
      result = element4(state, reference);
      return result;
    }
  }
}
function all8(state, nodes) {
  let index4 = -1;
  const results = [];
  while (++index4 < nodes.length) {
    const result = (
      /** @type {RootContent} */
      one7(state, nodes[index4])
    );
    results.push(result);
  }
  return results;
}
function element4(state, node3) {
  const schema2 = state.schema;
  state.schema = node3.namespaceURI === webNamespaces.svg ? svg2 : html3;
  let index4 = -1;
  const props = {};
  while (++index4 < node3.attrs.length) {
    const attribute2 = node3.attrs[index4];
    const name3 = (attribute2.prefix ? attribute2.prefix + ":" : "") + attribute2.name;
    if (!own14.call(proto4, name3)) {
      props[name3] = attribute2.value;
    }
  }
  const fn = state.schema.space === "svg" ? s2 : h2;
  const result = fn(node3.tagName, props, all8(state, node3.childNodes));
  patch3(state, node3, result);
  if (result.tagName === "template") {
    const reference = (
      /** @type {P5Template} */
      node3
    );
    const pos = reference.sourceCodeLocation;
    const startTag = pos && pos.startTag && position4(pos.startTag);
    const endTag = pos && pos.endTag && position4(pos.endTag);
    const content3 = (
      /** @type {Root} */
      one7(state, reference.content)
    );
    if (startTag && endTag && state.file) {
      content3.position = { start: startTag.end, end: endTag.start };
    }
    result.content = content3;
  }
  state.schema = schema2;
  return result;
}
function patch3(state, from4, to) {
  if ("sourceCodeLocation" in from4 && from4.sourceCodeLocation && state.file) {
    const position6 = createLocation2(state, to, from4.sourceCodeLocation);
    if (position6) {
      state.location = true;
      to.position = position6;
    }
  }
}
function createLocation2(state, node3, location4) {
  const result = position4(location4);
  if (node3.type === "element") {
    const tail = node3.children[node3.children.length - 1];
    if (result && !location4.endTag && tail && tail.position && tail.position.end) {
      result.end = Object.assign({}, tail.position.end);
    }
    if (state.verbose) {
      const props = {};
      let key2;
      if (location4.attrs) {
        for (key2 in location4.attrs) {
          if (own14.call(location4.attrs, key2)) {
            props[find(state.schema, key2).property] = position4(
              location4.attrs[key2]
            );
          }
        }
      }
      ok2(location4.startTag, "a start tag should exist");
      const opening2 = position4(location4.startTag);
      const closing2 = location4.endTag ? position4(location4.endTag) : void 0;
      const data = { opening: opening2 };
      if (closing2) data.closing = closing2;
      data.properties = props;
      node3.data = { position: data };
    }
  }
  return result;
}
function position4(loc) {
  const start = point4({
    line: loc.startLine,
    column: loc.startCol,
    offset: loc.startOffset
  });
  const end = point4({
    line: loc.endLine,
    column: loc.endCol,
    offset: loc.endOffset
  });
  return start || end ? { start, end } : void 0;
}
function point4(point6) {
  return point6.line && point6.column ? point6 : void 0;
}

// ../../node_modules/hast-util-from-html/node_modules/parse5/dist/common/unicode.js
var UNDEFINED_CODE_POINTS = /* @__PURE__ */ new Set([
  65534,
  65535,
  131070,
  131071,
  196606,
  196607,
  262142,
  262143,
  327678,
  327679,
  393214,
  393215,
  458750,
  458751,
  524286,
  524287,
  589822,
  589823,
  655358,
  655359,
  720894,
  720895,
  786430,
  786431,
  851966,
  851967,
  917502,
  917503,
  983038,
  983039,
  1048574,
  1048575,
  1114110,
  1114111
]);
var REPLACEMENT_CHARACTER = "\uFFFD";
var CODE_POINTS;
(function(CODE_POINTS2) {
  CODE_POINTS2[CODE_POINTS2["EOF"] = -1] = "EOF";
  CODE_POINTS2[CODE_POINTS2["NULL"] = 0] = "NULL";
  CODE_POINTS2[CODE_POINTS2["TABULATION"] = 9] = "TABULATION";
  CODE_POINTS2[CODE_POINTS2["CARRIAGE_RETURN"] = 13] = "CARRIAGE_RETURN";
  CODE_POINTS2[CODE_POINTS2["LINE_FEED"] = 10] = "LINE_FEED";
  CODE_POINTS2[CODE_POINTS2["FORM_FEED"] = 12] = "FORM_FEED";
  CODE_POINTS2[CODE_POINTS2["SPACE"] = 32] = "SPACE";
  CODE_POINTS2[CODE_POINTS2["EXCLAMATION_MARK"] = 33] = "EXCLAMATION_MARK";
  CODE_POINTS2[CODE_POINTS2["QUOTATION_MARK"] = 34] = "QUOTATION_MARK";
  CODE_POINTS2[CODE_POINTS2["NUMBER_SIGN"] = 35] = "NUMBER_SIGN";
  CODE_POINTS2[CODE_POINTS2["AMPERSAND"] = 38] = "AMPERSAND";
  CODE_POINTS2[CODE_POINTS2["APOSTROPHE"] = 39] = "APOSTROPHE";
  CODE_POINTS2[CODE_POINTS2["HYPHEN_MINUS"] = 45] = "HYPHEN_MINUS";
  CODE_POINTS2[CODE_POINTS2["SOLIDUS"] = 47] = "SOLIDUS";
  CODE_POINTS2[CODE_POINTS2["DIGIT_0"] = 48] = "DIGIT_0";
  CODE_POINTS2[CODE_POINTS2["DIGIT_9"] = 57] = "DIGIT_9";
  CODE_POINTS2[CODE_POINTS2["SEMICOLON"] = 59] = "SEMICOLON";
  CODE_POINTS2[CODE_POINTS2["LESS_THAN_SIGN"] = 60] = "LESS_THAN_SIGN";
  CODE_POINTS2[CODE_POINTS2["EQUALS_SIGN"] = 61] = "EQUALS_SIGN";
  CODE_POINTS2[CODE_POINTS2["GREATER_THAN_SIGN"] = 62] = "GREATER_THAN_SIGN";
  CODE_POINTS2[CODE_POINTS2["QUESTION_MARK"] = 63] = "QUESTION_MARK";
  CODE_POINTS2[CODE_POINTS2["LATIN_CAPITAL_A"] = 65] = "LATIN_CAPITAL_A";
  CODE_POINTS2[CODE_POINTS2["LATIN_CAPITAL_F"] = 70] = "LATIN_CAPITAL_F";
  CODE_POINTS2[CODE_POINTS2["LATIN_CAPITAL_X"] = 88] = "LATIN_CAPITAL_X";
  CODE_POINTS2[CODE_POINTS2["LATIN_CAPITAL_Z"] = 90] = "LATIN_CAPITAL_Z";
  CODE_POINTS2[CODE_POINTS2["RIGHT_SQUARE_BRACKET"] = 93] = "RIGHT_SQUARE_BRACKET";
  CODE_POINTS2[CODE_POINTS2["GRAVE_ACCENT"] = 96] = "GRAVE_ACCENT";
  CODE_POINTS2[CODE_POINTS2["LATIN_SMALL_A"] = 97] = "LATIN_SMALL_A";
  CODE_POINTS2[CODE_POINTS2["LATIN_SMALL_F"] = 102] = "LATIN_SMALL_F";
  CODE_POINTS2[CODE_POINTS2["LATIN_SMALL_X"] = 120] = "LATIN_SMALL_X";
  CODE_POINTS2[CODE_POINTS2["LATIN_SMALL_Z"] = 122] = "LATIN_SMALL_Z";
  CODE_POINTS2[CODE_POINTS2["REPLACEMENT_CHARACTER"] = 65533] = "REPLACEMENT_CHARACTER";
})(CODE_POINTS = CODE_POINTS || (CODE_POINTS = {}));
var SEQUENCES = {
  DASH_DASH: "--",
  CDATA_START: "[CDATA[",
  DOCTYPE: "doctype",
  SCRIPT: "script",
  PUBLIC: "public",
  SYSTEM: "system"
};
function isSurrogate(cp) {
  return cp >= 55296 && cp <= 57343;
}
function isSurrogatePair(cp) {
  return cp >= 56320 && cp <= 57343;
}
function getSurrogatePairCodePoint(cp1, cp2) {
  return (cp1 - 55296) * 1024 + 9216 + cp2;
}
function isControlCodePoint(cp) {
  return cp !== 32 && cp !== 10 && cp !== 13 && cp !== 9 && cp !== 12 && cp >= 1 && cp <= 31 || cp >= 127 && cp <= 159;
}
function isUndefinedCodePoint(cp) {
  return cp >= 64976 && cp <= 65007 || UNDEFINED_CODE_POINTS.has(cp);
}

// ../../node_modules/hast-util-from-html/node_modules/parse5/dist/common/error-codes.js
var ERR;
(function(ERR2) {
  ERR2["controlCharacterInInputStream"] = "control-character-in-input-stream";
  ERR2["noncharacterInInputStream"] = "noncharacter-in-input-stream";
  ERR2["surrogateInInputStream"] = "surrogate-in-input-stream";
  ERR2["nonVoidHtmlElementStartTagWithTrailingSolidus"] = "non-void-html-element-start-tag-with-trailing-solidus";
  ERR2["endTagWithAttributes"] = "end-tag-with-attributes";
  ERR2["endTagWithTrailingSolidus"] = "end-tag-with-trailing-solidus";
  ERR2["unexpectedSolidusInTag"] = "unexpected-solidus-in-tag";
  ERR2["unexpectedNullCharacter"] = "unexpected-null-character";
  ERR2["unexpectedQuestionMarkInsteadOfTagName"] = "unexpected-question-mark-instead-of-tag-name";
  ERR2["invalidFirstCharacterOfTagName"] = "invalid-first-character-of-tag-name";
  ERR2["unexpectedEqualsSignBeforeAttributeName"] = "unexpected-equals-sign-before-attribute-name";
  ERR2["missingEndTagName"] = "missing-end-tag-name";
  ERR2["unexpectedCharacterInAttributeName"] = "unexpected-character-in-attribute-name";
  ERR2["unknownNamedCharacterReference"] = "unknown-named-character-reference";
  ERR2["missingSemicolonAfterCharacterReference"] = "missing-semicolon-after-character-reference";
  ERR2["unexpectedCharacterAfterDoctypeSystemIdentifier"] = "unexpected-character-after-doctype-system-identifier";
  ERR2["unexpectedCharacterInUnquotedAttributeValue"] = "unexpected-character-in-unquoted-attribute-value";
  ERR2["eofBeforeTagName"] = "eof-before-tag-name";
  ERR2["eofInTag"] = "eof-in-tag";
  ERR2["missingAttributeValue"] = "missing-attribute-value";
  ERR2["missingWhitespaceBetweenAttributes"] = "missing-whitespace-between-attributes";
  ERR2["missingWhitespaceAfterDoctypePublicKeyword"] = "missing-whitespace-after-doctype-public-keyword";
  ERR2["missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers"] = "missing-whitespace-between-doctype-public-and-system-identifiers";
  ERR2["missingWhitespaceAfterDoctypeSystemKeyword"] = "missing-whitespace-after-doctype-system-keyword";
  ERR2["missingQuoteBeforeDoctypePublicIdentifier"] = "missing-quote-before-doctype-public-identifier";
  ERR2["missingQuoteBeforeDoctypeSystemIdentifier"] = "missing-quote-before-doctype-system-identifier";
  ERR2["missingDoctypePublicIdentifier"] = "missing-doctype-public-identifier";
  ERR2["missingDoctypeSystemIdentifier"] = "missing-doctype-system-identifier";
  ERR2["abruptDoctypePublicIdentifier"] = "abrupt-doctype-public-identifier";
  ERR2["abruptDoctypeSystemIdentifier"] = "abrupt-doctype-system-identifier";
  ERR2["cdataInHtmlContent"] = "cdata-in-html-content";
  ERR2["incorrectlyOpenedComment"] = "incorrectly-opened-comment";
  ERR2["eofInScriptHtmlCommentLikeText"] = "eof-in-script-html-comment-like-text";
  ERR2["eofInDoctype"] = "eof-in-doctype";
  ERR2["nestedComment"] = "nested-comment";
  ERR2["abruptClosingOfEmptyComment"] = "abrupt-closing-of-empty-comment";
  ERR2["eofInComment"] = "eof-in-comment";
  ERR2["incorrectlyClosedComment"] = "incorrectly-closed-comment";
  ERR2["eofInCdata"] = "eof-in-cdata";
  ERR2["absenceOfDigitsInNumericCharacterReference"] = "absence-of-digits-in-numeric-character-reference";
  ERR2["nullCharacterReference"] = "null-character-reference";
  ERR2["surrogateCharacterReference"] = "surrogate-character-reference";
  ERR2["characterReferenceOutsideUnicodeRange"] = "character-reference-outside-unicode-range";
  ERR2["controlCharacterReference"] = "control-character-reference";
  ERR2["noncharacterCharacterReference"] = "noncharacter-character-reference";
  ERR2["missingWhitespaceBeforeDoctypeName"] = "missing-whitespace-before-doctype-name";
  ERR2["missingDoctypeName"] = "missing-doctype-name";
  ERR2["invalidCharacterSequenceAfterDoctypeName"] = "invalid-character-sequence-after-doctype-name";
  ERR2["duplicateAttribute"] = "duplicate-attribute";
  ERR2["nonConformingDoctype"] = "non-conforming-doctype";
  ERR2["missingDoctype"] = "missing-doctype";
  ERR2["misplacedDoctype"] = "misplaced-doctype";
  ERR2["endTagWithoutMatchingOpenElement"] = "end-tag-without-matching-open-element";
  ERR2["closingOfElementWithOpenChildElements"] = "closing-of-element-with-open-child-elements";
  ERR2["disallowedContentInNoscriptInHead"] = "disallowed-content-in-noscript-in-head";
  ERR2["openElementsLeftAfterEof"] = "open-elements-left-after-eof";
  ERR2["abandonedHeadElementChild"] = "abandoned-head-element-child";
  ERR2["misplacedStartTagForHeadElement"] = "misplaced-start-tag-for-head-element";
  ERR2["nestedNoscriptInHead"] = "nested-noscript-in-head";
  ERR2["eofInElementThatCanContainOnlyText"] = "eof-in-element-that-can-contain-only-text";
})(ERR = ERR || (ERR = {}));

// ../../node_modules/hast-util-from-html/node_modules/parse5/dist/tokenizer/preprocessor.js
var DEFAULT_BUFFER_WATERLINE = 1 << 16;
var Preprocessor = class {
  constructor(handler) {
    this.handler = handler;
    this.html = "";
    this.pos = -1;
    this.lastGapPos = -2;
    this.gapStack = [];
    this.skipNextNewLine = false;
    this.lastChunkWritten = false;
    this.endOfChunkHit = false;
    this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;
    this.isEol = false;
    this.lineStartPos = 0;
    this.droppedBufferSize = 0;
    this.line = 1;
    this.lastErrOffset = -1;
  }
  /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */
  get col() {
    return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);
  }
  get offset() {
    return this.droppedBufferSize + this.pos;
  }
  getError(code7) {
    const { line: line2, col, offset } = this;
    return {
      code: code7,
      startLine: line2,
      endLine: line2,
      startCol: col,
      endCol: col,
      startOffset: offset,
      endOffset: offset
    };
  }
  _err(code7) {
    if (this.handler.onParseError && this.lastErrOffset !== this.offset) {
      this.lastErrOffset = this.offset;
      this.handler.onParseError(this.getError(code7));
    }
  }
  _addGap() {
    this.gapStack.push(this.lastGapPos);
    this.lastGapPos = this.pos;
  }
  _processSurrogate(cp) {
    if (this.pos !== this.html.length - 1) {
      const nextCp = this.html.charCodeAt(this.pos + 1);
      if (isSurrogatePair(nextCp)) {
        this.pos++;
        this._addGap();
        return getSurrogatePairCodePoint(cp, nextCp);
      }
    } else if (!this.lastChunkWritten) {
      this.endOfChunkHit = true;
      return CODE_POINTS.EOF;
    }
    this._err(ERR.surrogateInInputStream);
    return cp;
  }
  willDropParsedChunk() {
    return this.pos > this.bufferWaterline;
  }
  dropParsedChunk() {
    if (this.willDropParsedChunk()) {
      this.html = this.html.substring(this.pos);
      this.lineStartPos -= this.pos;
      this.droppedBufferSize += this.pos;
      this.pos = 0;
      this.lastGapPos = -2;
      this.gapStack.length = 0;
    }
  }
  write(chunk, isLastChunk) {
    if (this.html.length > 0) {
      this.html += chunk;
    } else {
      this.html = chunk;
    }
    this.endOfChunkHit = false;
    this.lastChunkWritten = isLastChunk;
  }
  insertHtmlAtCurrentPos(chunk) {
    this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);
    this.endOfChunkHit = false;
  }
  startsWith(pattern, caseSensitive) {
    if (this.pos + pattern.length > this.html.length) {
      this.endOfChunkHit = !this.lastChunkWritten;
      return false;
    }
    if (caseSensitive) {
      return this.html.startsWith(pattern, this.pos);
    }
    for (let i2 = 0; i2 < pattern.length; i2++) {
      const cp = this.html.charCodeAt(this.pos + i2) | 32;
      if (cp !== pattern.charCodeAt(i2)) {
        return false;
      }
    }
    return true;
  }
  peek(offset) {
    const pos = this.pos + offset;
    if (pos >= this.html.length) {
      this.endOfChunkHit = !this.lastChunkWritten;
      return CODE_POINTS.EOF;
    }
    const code7 = this.html.charCodeAt(pos);
    return code7 === CODE_POINTS.CARRIAGE_RETURN ? CODE_POINTS.LINE_FEED : code7;
  }
  advance() {
    this.pos++;
    if (this.isEol) {
      this.isEol = false;
      this.line++;
      this.lineStartPos = this.pos;
    }
    if (this.pos >= this.html.length) {
      this.endOfChunkHit = !this.lastChunkWritten;
      return CODE_POINTS.EOF;
    }
    let cp = this.html.charCodeAt(this.pos);
    if (cp === CODE_POINTS.CARRIAGE_RETURN) {
      this.isEol = true;
      this.skipNextNewLine = true;
      return CODE_POINTS.LINE_FEED;
    }
    if (cp === CODE_POINTS.LINE_FEED) {
      this.isEol = true;
      if (this.skipNextNewLine) {
        this.line--;
        this.skipNextNewLine = false;
        this._addGap();
        return this.advance();
      }
    }
    this.skipNextNewLine = false;
    if (isSurrogate(cp)) {
      cp = this._processSurrogate(cp);
    }
    const isCommonValidRange = this.handler.onParseError === null || cp > 31 && cp < 127 || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.CARRIAGE_RETURN || cp > 159 && cp < 64976;
    if (!isCommonValidRange) {
      this._checkForProblematicCharacters(cp);
    }
    return cp;
  }
  _checkForProblematicCharacters(cp) {
    if (isControlCodePoint(cp)) {
      this._err(ERR.controlCharacterInInputStream);
    } else if (isUndefinedCodePoint(cp)) {
      this._err(ERR.noncharacterInInputStream);
    }
  }
  retreat(count2) {
    this.pos -= count2;
    while (this.pos < this.lastGapPos) {
      this.lastGapPos = this.gapStack.pop();
      this.pos--;
    }
    this.isEol = false;
  }
};

// ../../node_modules/hast-util-from-html/node_modules/parse5/dist/common/token.js
var TokenType;
(function(TokenType2) {
  TokenType2[TokenType2["CHARACTER"] = 0] = "CHARACTER";
  TokenType2[TokenType2["NULL_CHARACTER"] = 1] = "NULL_CHARACTER";
  TokenType2[TokenType2["WHITESPACE_CHARACTER"] = 2] = "WHITESPACE_CHARACTER";
  TokenType2[TokenType2["START_TAG"] = 3] = "START_TAG";
  TokenType2[TokenType2["END_TAG"] = 4] = "END_TAG";
  TokenType2[TokenType2["COMMENT"] = 5] = "COMMENT";
  TokenType2[TokenType2["DOCTYPE"] = 6] = "DOCTYPE";
  TokenType2[TokenType2["EOF"] = 7] = "EOF";
  TokenType2[TokenType2["HIBERNATION"] = 8] = "HIBERNATION";
})(TokenType = TokenType || (TokenType = {}));
function getTokenAttr(token, attrName) {
  for (let i2 = token.attrs.length - 1; i2 >= 0; i2--) {
    if (token.attrs[i2].name === attrName) {
      return token.attrs[i2].value;
    }
  }
  return null;
}

// ../../node_modules/entities/lib/esm/generated/decode-data-html.js
var decode_data_html_default = new Uint16Array(
  // prettier-ignore
  '\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map((c) => c.charCodeAt(0))
);

// ../../node_modules/entities/lib/esm/generated/decode-data-xml.js
var decode_data_xml_default = new Uint16Array(
  // prettier-ignore
  "\u0200aglq	\x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map((c) => c.charCodeAt(0))
);

// ../../node_modules/entities/lib/esm/decode_codepoint.js
var _a;
var decodeMap = /* @__PURE__ */ new Map([
  [0, 65533],
  // C1 Unicode control character reference replacements
  [128, 8364],
  [130, 8218],
  [131, 402],
  [132, 8222],
  [133, 8230],
  [134, 8224],
  [135, 8225],
  [136, 710],
  [137, 8240],
  [138, 352],
  [139, 8249],
  [140, 338],
  [142, 381],
  [145, 8216],
  [146, 8217],
  [147, 8220],
  [148, 8221],
  [149, 8226],
  [150, 8211],
  [151, 8212],
  [152, 732],
  [153, 8482],
  [154, 353],
  [155, 8250],
  [156, 339],
  [158, 382],
  [159, 376]
]);
var fromCodePoint = (
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
  (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function(codePoint) {
    let output2 = "";
    if (codePoint > 65535) {
      codePoint -= 65536;
      output2 += String.fromCharCode(codePoint >>> 10 & 1023 | 55296);
      codePoint = 56320 | codePoint & 1023;
    }
    output2 += String.fromCharCode(codePoint);
    return output2;
  }
);
function replaceCodePoint(codePoint) {
  var _a6;
  if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {
    return 65533;
  }
  return (_a6 = decodeMap.get(codePoint)) !== null && _a6 !== void 0 ? _a6 : codePoint;
}

// ../../node_modules/entities/lib/esm/decode.js
var CharCodes;
(function(CharCodes2) {
  CharCodes2[CharCodes2["NUM"] = 35] = "NUM";
  CharCodes2[CharCodes2["SEMI"] = 59] = "SEMI";
  CharCodes2[CharCodes2["EQUALS"] = 61] = "EQUALS";
  CharCodes2[CharCodes2["ZERO"] = 48] = "ZERO";
  CharCodes2[CharCodes2["NINE"] = 57] = "NINE";
  CharCodes2[CharCodes2["LOWER_A"] = 97] = "LOWER_A";
  CharCodes2[CharCodes2["LOWER_F"] = 102] = "LOWER_F";
  CharCodes2[CharCodes2["LOWER_X"] = 120] = "LOWER_X";
  CharCodes2[CharCodes2["LOWER_Z"] = 122] = "LOWER_Z";
  CharCodes2[CharCodes2["UPPER_A"] = 65] = "UPPER_A";
  CharCodes2[CharCodes2["UPPER_F"] = 70] = "UPPER_F";
  CharCodes2[CharCodes2["UPPER_Z"] = 90] = "UPPER_Z";
})(CharCodes || (CharCodes = {}));
var TO_LOWER_BIT = 32;
var BinTrieFlags;
(function(BinTrieFlags2) {
  BinTrieFlags2[BinTrieFlags2["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
  BinTrieFlags2[BinTrieFlags2["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
  BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE";
})(BinTrieFlags || (BinTrieFlags = {}));
function isNumber(code7) {
  return code7 >= CharCodes.ZERO && code7 <= CharCodes.NINE;
}
function isHexadecimalCharacter(code7) {
  return code7 >= CharCodes.UPPER_A && code7 <= CharCodes.UPPER_F || code7 >= CharCodes.LOWER_A && code7 <= CharCodes.LOWER_F;
}
function isAsciiAlphaNumeric(code7) {
  return code7 >= CharCodes.UPPER_A && code7 <= CharCodes.UPPER_Z || code7 >= CharCodes.LOWER_A && code7 <= CharCodes.LOWER_Z || isNumber(code7);
}
function isEntityInAttributeInvalidEnd(code7) {
  return code7 === CharCodes.EQUALS || isAsciiAlphaNumeric(code7);
}
var EntityDecoderState;
(function(EntityDecoderState2) {
  EntityDecoderState2[EntityDecoderState2["EntityStart"] = 0] = "EntityStart";
  EntityDecoderState2[EntityDecoderState2["NumericStart"] = 1] = "NumericStart";
  EntityDecoderState2[EntityDecoderState2["NumericDecimal"] = 2] = "NumericDecimal";
  EntityDecoderState2[EntityDecoderState2["NumericHex"] = 3] = "NumericHex";
  EntityDecoderState2[EntityDecoderState2["NamedEntity"] = 4] = "NamedEntity";
})(EntityDecoderState || (EntityDecoderState = {}));
var DecodingMode;
(function(DecodingMode2) {
  DecodingMode2[DecodingMode2["Legacy"] = 0] = "Legacy";
  DecodingMode2[DecodingMode2["Strict"] = 1] = "Strict";
  DecodingMode2[DecodingMode2["Attribute"] = 2] = "Attribute";
})(DecodingMode || (DecodingMode = {}));
var EntityDecoder = class {
  constructor(decodeTree, emitCodePoint, errors4) {
    this.decodeTree = decodeTree;
    this.emitCodePoint = emitCodePoint;
    this.errors = errors4;
    this.state = EntityDecoderState.EntityStart;
    this.consumed = 1;
    this.result = 0;
    this.treeIndex = 0;
    this.excess = 1;
    this.decodeMode = DecodingMode.Strict;
  }
  /** Resets the instance to make it reusable. */
  startEntity(decodeMode) {
    this.decodeMode = decodeMode;
    this.state = EntityDecoderState.EntityStart;
    this.result = 0;
    this.treeIndex = 0;
    this.excess = 1;
    this.consumed = 1;
  }
  /**
   * Write an entity to the decoder. This can be called multiple times with partial entities.
   * If the entity is incomplete, the decoder will return -1.
   *
   * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
   * entity is incomplete, and resume when the next string is written.
   *
   * @param string The string containing the entity (or a continuation of the entity).
   * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
   * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
   */
  write(str2, offset) {
    switch (this.state) {
      case EntityDecoderState.EntityStart: {
        if (str2.charCodeAt(offset) === CharCodes.NUM) {
          this.state = EntityDecoderState.NumericStart;
          this.consumed += 1;
          return this.stateNumericStart(str2, offset + 1);
        }
        this.state = EntityDecoderState.NamedEntity;
        return this.stateNamedEntity(str2, offset);
      }
      case EntityDecoderState.NumericStart: {
        return this.stateNumericStart(str2, offset);
      }
      case EntityDecoderState.NumericDecimal: {
        return this.stateNumericDecimal(str2, offset);
      }
      case EntityDecoderState.NumericHex: {
        return this.stateNumericHex(str2, offset);
      }
      case EntityDecoderState.NamedEntity: {
        return this.stateNamedEntity(str2, offset);
      }
    }
  }
  /**
   * Switches between the numeric decimal and hexadecimal states.
   *
   * Equivalent to the `Numeric character reference state` in the HTML spec.
   *
   * @param str The string containing the entity (or a continuation of the entity).
   * @param offset The current offset.
   * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
   */
  stateNumericStart(str2, offset) {
    if (offset >= str2.length) {
      return -1;
    }
    if ((str2.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
      this.state = EntityDecoderState.NumericHex;
      this.consumed += 1;
      return this.stateNumericHex(str2, offset + 1);
    }
    this.state = EntityDecoderState.NumericDecimal;
    return this.stateNumericDecimal(str2, offset);
  }
  addToNumericResult(str2, start, end, base5) {
    if (start !== end) {
      const digitCount = end - start;
      this.result = this.result * Math.pow(base5, digitCount) + parseInt(str2.substr(start, digitCount), base5);
      this.consumed += digitCount;
    }
  }
  /**
   * Parses a hexadecimal numeric entity.
   *
   * Equivalent to the `Hexademical character reference state` in the HTML spec.
   *
   * @param str The string containing the entity (or a continuation of the entity).
   * @param offset The current offset.
   * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
   */
  stateNumericHex(str2, offset) {
    const startIdx = offset;
    while (offset < str2.length) {
      const char = str2.charCodeAt(offset);
      if (isNumber(char) || isHexadecimalCharacter(char)) {
        offset += 1;
      } else {
        this.addToNumericResult(str2, startIdx, offset, 16);
        return this.emitNumericEntity(char, 3);
      }
    }
    this.addToNumericResult(str2, startIdx, offset, 16);
    return -1;
  }
  /**
   * Parses a decimal numeric entity.
   *
   * Equivalent to the `Decimal character reference state` in the HTML spec.
   *
   * @param str The string containing the entity (or a continuation of the entity).
   * @param offset The current offset.
   * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
   */
  stateNumericDecimal(str2, offset) {
    const startIdx = offset;
    while (offset < str2.length) {
      const char = str2.charCodeAt(offset);
      if (isNumber(char)) {
        offset += 1;
      } else {
        this.addToNumericResult(str2, startIdx, offset, 10);
        return this.emitNumericEntity(char, 2);
      }
    }
    this.addToNumericResult(str2, startIdx, offset, 10);
    return -1;
  }
  /**
   * Validate and emit a numeric entity.
   *
   * Implements the logic from the `Hexademical character reference start
   * state` and `Numeric character reference end state` in the HTML spec.
   *
   * @param lastCp The last code point of the entity. Used to see if the
   *               entity was terminated with a semicolon.
   * @param expectedLength The minimum number of characters that should be
   *                       consumed. Used to validate that at least one digit
   *                       was consumed.
   * @returns The number of characters that were consumed.
   */
  emitNumericEntity(lastCp, expectedLength) {
    var _a6;
    if (this.consumed <= expectedLength) {
      (_a6 = this.errors) === null || _a6 === void 0 ? void 0 : _a6.absenceOfDigitsInNumericCharacterReference(this.consumed);
      return 0;
    }
    if (lastCp === CharCodes.SEMI) {
      this.consumed += 1;
    } else if (this.decodeMode === DecodingMode.Strict) {
      return 0;
    }
    this.emitCodePoint(replaceCodePoint(this.result), this.consumed);
    if (this.errors) {
      if (lastCp !== CharCodes.SEMI) {
        this.errors.missingSemicolonAfterCharacterReference();
      }
      this.errors.validateNumericCharacterReference(this.result);
    }
    return this.consumed;
  }
  /**
   * Parses a named entity.
   *
   * Equivalent to the `Named character reference state` in the HTML spec.
   *
   * @param str The string containing the entity (or a continuation of the entity).
   * @param offset The current offset.
   * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
   */
  stateNamedEntity(str2, offset) {
    const { decodeTree } = this;
    let current2 = decodeTree[this.treeIndex];
    let valueLength = (current2 & BinTrieFlags.VALUE_LENGTH) >> 14;
    for (; offset < str2.length; offset++, this.excess++) {
      const char = str2.charCodeAt(offset);
      this.treeIndex = determineBranch(decodeTree, current2, this.treeIndex + Math.max(1, valueLength), char);
      if (this.treeIndex < 0) {
        return this.result === 0 || // If we are parsing an attribute
        this.decodeMode === DecodingMode.Attribute && // We shouldn't have consumed any characters after the entity,
        (valueLength === 0 || // And there should be no invalid characters.
        isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity();
      }
      current2 = decodeTree[this.treeIndex];
      valueLength = (current2 & BinTrieFlags.VALUE_LENGTH) >> 14;
      if (valueLength !== 0) {
        if (char === CharCodes.SEMI) {
          return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
        }
        if (this.decodeMode !== DecodingMode.Strict) {
          this.result = this.treeIndex;
          this.consumed += this.excess;
          this.excess = 0;
        }
      }
    }
    return -1;
  }
  /**
   * Emit a named entity that was not terminated with a semicolon.
   *
   * @returns The number of characters consumed.
   */
  emitNotTerminatedNamedEntity() {
    var _a6;
    const { result, decodeTree } = this;
    const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;
    this.emitNamedEntityData(result, valueLength, this.consumed);
    (_a6 = this.errors) === null || _a6 === void 0 ? void 0 : _a6.missingSemicolonAfterCharacterReference();
    return this.consumed;
  }
  /**
   * Emit a named entity.
   *
   * @param result The index of the entity in the decode tree.
   * @param valueLength The number of bytes in the entity.
   * @param consumed The number of characters consumed.
   *
   * @returns The number of characters consumed.
   */
  emitNamedEntityData(result, valueLength, consumed) {
    const { decodeTree } = this;
    this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed);
    if (valueLength === 3) {
      this.emitCodePoint(decodeTree[result + 2], consumed);
    }
    return consumed;
  }
  /**
   * Signal to the parser that the end of the input was reached.
   *
   * Remaining data will be emitted and relevant errors will be produced.
   *
   * @returns The number of characters consumed.
   */
  end() {
    var _a6;
    switch (this.state) {
      case EntityDecoderState.NamedEntity: {
        return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;
      }
      // Otherwise, emit a numeric entity if we have one.
      case EntityDecoderState.NumericDecimal: {
        return this.emitNumericEntity(0, 2);
      }
      case EntityDecoderState.NumericHex: {
        return this.emitNumericEntity(0, 3);
      }
      case EntityDecoderState.NumericStart: {
        (_a6 = this.errors) === null || _a6 === void 0 ? void 0 : _a6.absenceOfDigitsInNumericCharacterReference(this.consumed);
        return 0;
      }
      case EntityDecoderState.EntityStart: {
        return 0;
      }
    }
  }
};
function getDecoder(decodeTree) {
  let ret = "";
  const decoder = new EntityDecoder(decodeTree, (str2) => ret += fromCodePoint(str2));
  return function decodeWithTrie(str2, decodeMode) {
    let lastIndex = 0;
    let offset = 0;
    while ((offset = str2.indexOf("&", offset)) >= 0) {
      ret += str2.slice(lastIndex, offset);
      decoder.startEntity(decodeMode);
      const len = decoder.write(
        str2,
        // Skip the "&"
        offset + 1
      );
      if (len < 0) {
        lastIndex = offset + decoder.end();
        break;
      }
      lastIndex = offset + len;
      offset = len === 0 ? lastIndex + 1 : lastIndex;
    }
    const result = ret + str2.slice(lastIndex);
    ret = "";
    return result;
  };
}
function determineBranch(decodeTree, current2, nodeIdx, char) {
  const branchCount = (current2 & BinTrieFlags.BRANCH_LENGTH) >> 7;
  const jumpOffset = current2 & BinTrieFlags.JUMP_TABLE;
  if (branchCount === 0) {
    return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
  }
  if (jumpOffset) {
    const value = char - jumpOffset;
    return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1;
  }
  let lo = nodeIdx;
  let hi = lo + branchCount - 1;
  while (lo <= hi) {
    const mid = lo + hi >>> 1;
    const midVal = decodeTree[mid];
    if (midVal < char) {
      lo = mid + 1;
    } else if (midVal > char) {
      hi = mid - 1;
    } else {
      return decodeTree[mid + branchCount];
    }
  }
  return -1;
}
var htmlDecoder = getDecoder(decode_data_html_default);
var xmlDecoder = getDecoder(decode_data_xml_default);

// ../../node_modules/hast-util-from-html/node_modules/parse5/dist/common/html.js
var NS;
(function(NS2) {
  NS2["HTML"] = "http://www.w3.org/1999/xhtml";
  NS2["MATHML"] = "http://www.w3.org/1998/Math/MathML";
  NS2["SVG"] = "http://www.w3.org/2000/svg";
  NS2["XLINK"] = "http://www.w3.org/1999/xlink";
  NS2["XML"] = "http://www.w3.org/XML/1998/namespace";
  NS2["XMLNS"] = "http://www.w3.org/2000/xmlns/";
})(NS = NS || (NS = {}));
var ATTRS;
(function(ATTRS2) {
  ATTRS2["TYPE"] = "type";
  ATTRS2["ACTION"] = "action";
  ATTRS2["ENCODING"] = "encoding";
  ATTRS2["PROMPT"] = "prompt";
  ATTRS2["NAME"] = "name";
  ATTRS2["COLOR"] = "color";
  ATTRS2["FACE"] = "face";
  ATTRS2["SIZE"] = "size";
})(ATTRS = ATTRS || (ATTRS = {}));
var DOCUMENT_MODE;
(function(DOCUMENT_MODE2) {
  DOCUMENT_MODE2["NO_QUIRKS"] = "no-quirks";
  DOCUMENT_MODE2["QUIRKS"] = "quirks";
  DOCUMENT_MODE2["LIMITED_QUIRKS"] = "limited-quirks";
})(DOCUMENT_MODE = DOCUMENT_MODE || (DOCUMENT_MODE = {}));
var TAG_NAMES;
(function(TAG_NAMES2) {
  TAG_NAMES2["A"] = "a";
  TAG_NAMES2["ADDRESS"] = "address";
  TAG_NAMES2["ANNOTATION_XML"] = "annotation-xml";
  TAG_NAMES2["APPLET"] = "applet";
  TAG_NAMES2["AREA"] = "area";
  TAG_NAMES2["ARTICLE"] = "article";
  TAG_NAMES2["ASIDE"] = "aside";
  TAG_NAMES2["B"] = "b";
  TAG_NAMES2["BASE"] = "base";
  TAG_NAMES2["BASEFONT"] = "basefont";
  TAG_NAMES2["BGSOUND"] = "bgsound";
  TAG_NAMES2["BIG"] = "big";
  TAG_NAMES2["BLOCKQUOTE"] = "blockquote";
  TAG_NAMES2["BODY"] = "body";
  TAG_NAMES2["BR"] = "br";
  TAG_NAMES2["BUTTON"] = "button";
  TAG_NAMES2["CAPTION"] = "caption";
  TAG_NAMES2["CENTER"] = "center";
  TAG_NAMES2["CODE"] = "code";
  TAG_NAMES2["COL"] = "col";
  TAG_NAMES2["COLGROUP"] = "colgroup";
  TAG_NAMES2["DD"] = "dd";
  TAG_NAMES2["DESC"] = "desc";
  TAG_NAMES2["DETAILS"] = "details";
  TAG_NAMES2["DIALOG"] = "dialog";
  TAG_NAMES2["DIR"] = "dir";
  TAG_NAMES2["DIV"] = "div";
  TAG_NAMES2["DL"] = "dl";
  TAG_NAMES2["DT"] = "dt";
  TAG_NAMES2["EM"] = "em";
  TAG_NAMES2["EMBED"] = "embed";
  TAG_NAMES2["FIELDSET"] = "fieldset";
  TAG_NAMES2["FIGCAPTION"] = "figcaption";
  TAG_NAMES2["FIGURE"] = "figure";
  TAG_NAMES2["FONT"] = "font";
  TAG_NAMES2["FOOTER"] = "footer";
  TAG_NAMES2["FOREIGN_OBJECT"] = "foreignObject";
  TAG_NAMES2["FORM"] = "form";
  TAG_NAMES2["FRAME"] = "frame";
  TAG_NAMES2["FRAMESET"] = "frameset";
  TAG_NAMES2["H1"] = "h1";
  TAG_NAMES2["H2"] = "h2";
  TAG_NAMES2["H3"] = "h3";
  TAG_NAMES2["H4"] = "h4";
  TAG_NAMES2["H5"] = "h5";
  TAG_NAMES2["H6"] = "h6";
  TAG_NAMES2["HEAD"] = "head";
  TAG_NAMES2["HEADER"] = "header";
  TAG_NAMES2["HGROUP"] = "hgroup";
  TAG_NAMES2["HR"] = "hr";
  TAG_NAMES2["HTML"] = "html";
  TAG_NAMES2["I"] = "i";
  TAG_NAMES2["IMG"] = "img";
  TAG_NAMES2["IMAGE"] = "image";
  TAG_NAMES2["INPUT"] = "input";
  TAG_NAMES2["IFRAME"] = "iframe";
  TAG_NAMES2["KEYGEN"] = "keygen";
  TAG_NAMES2["LABEL"] = "label";
  TAG_NAMES2["LI"] = "li";
  TAG_NAMES2["LINK"] = "link";
  TAG_NAMES2["LISTING"] = "listing";
  TAG_NAMES2["MAIN"] = "main";
  TAG_NAMES2["MALIGNMARK"] = "malignmark";
  TAG_NAMES2["MARQUEE"] = "marquee";
  TAG_NAMES2["MATH"] = "math";
  TAG_NAMES2["MENU"] = "menu";
  TAG_NAMES2["META"] = "meta";
  TAG_NAMES2["MGLYPH"] = "mglyph";
  TAG_NAMES2["MI"] = "mi";
  TAG_NAMES2["MO"] = "mo";
  TAG_NAMES2["MN"] = "mn";
  TAG_NAMES2["MS"] = "ms";
  TAG_NAMES2["MTEXT"] = "mtext";
  TAG_NAMES2["NAV"] = "nav";
  TAG_NAMES2["NOBR"] = "nobr";
  TAG_NAMES2["NOFRAMES"] = "noframes";
  TAG_NAMES2["NOEMBED"] = "noembed";
  TAG_NAMES2["NOSCRIPT"] = "noscript";
  TAG_NAMES2["OBJECT"] = "object";
  TAG_NAMES2["OL"] = "ol";
  TAG_NAMES2["OPTGROUP"] = "optgroup";
  TAG_NAMES2["OPTION"] = "option";
  TAG_NAMES2["P"] = "p";
  TAG_NAMES2["PARAM"] = "param";
  TAG_NAMES2["PLAINTEXT"] = "plaintext";
  TAG_NAMES2["PRE"] = "pre";
  TAG_NAMES2["RB"] = "rb";
  TAG_NAMES2["RP"] = "rp";
  TAG_NAMES2["RT"] = "rt";
  TAG_NAMES2["RTC"] = "rtc";
  TAG_NAMES2["RUBY"] = "ruby";
  TAG_NAMES2["S"] = "s";
  TAG_NAMES2["SCRIPT"] = "script";
  TAG_NAMES2["SECTION"] = "section";
  TAG_NAMES2["SELECT"] = "select";
  TAG_NAMES2["SOURCE"] = "source";
  TAG_NAMES2["SMALL"] = "small";
  TAG_NAMES2["SPAN"] = "span";
  TAG_NAMES2["STRIKE"] = "strike";
  TAG_NAMES2["STRONG"] = "strong";
  TAG_NAMES2["STYLE"] = "style";
  TAG_NAMES2["SUB"] = "sub";
  TAG_NAMES2["SUMMARY"] = "summary";
  TAG_NAMES2["SUP"] = "sup";
  TAG_NAMES2["TABLE"] = "table";
  TAG_NAMES2["TBODY"] = "tbody";
  TAG_NAMES2["TEMPLATE"] = "template";
  TAG_NAMES2["TEXTAREA"] = "textarea";
  TAG_NAMES2["TFOOT"] = "tfoot";
  TAG_NAMES2["TD"] = "td";
  TAG_NAMES2["TH"] = "th";
  TAG_NAMES2["THEAD"] = "thead";
  TAG_NAMES2["TITLE"] = "title";
  TAG_NAMES2["TR"] = "tr";
  TAG_NAMES2["TRACK"] = "track";
  TAG_NAMES2["TT"] = "tt";
  TAG_NAMES2["U"] = "u";
  TAG_NAMES2["UL"] = "ul";
  TAG_NAMES2["SVG"] = "svg";
  TAG_NAMES2["VAR"] = "var";
  TAG_NAMES2["WBR"] = "wbr";
  TAG_NAMES2["XMP"] = "xmp";
})(TAG_NAMES = TAG_NAMES || (TAG_NAMES = {}));
var TAG_ID;
(function(TAG_ID2) {
  TAG_ID2[TAG_ID2["UNKNOWN"] = 0] = "UNKNOWN";
  TAG_ID2[TAG_ID2["A"] = 1] = "A";
  TAG_ID2[TAG_ID2["ADDRESS"] = 2] = "ADDRESS";
  TAG_ID2[TAG_ID2["ANNOTATION_XML"] = 3] = "ANNOTATION_XML";
  TAG_ID2[TAG_ID2["APPLET"] = 4] = "APPLET";
  TAG_ID2[TAG_ID2["AREA"] = 5] = "AREA";
  TAG_ID2[TAG_ID2["ARTICLE"] = 6] = "ARTICLE";
  TAG_ID2[TAG_ID2["ASIDE"] = 7] = "ASIDE";
  TAG_ID2[TAG_ID2["B"] = 8] = "B";
  TAG_ID2[TAG_ID2["BASE"] = 9] = "BASE";
  TAG_ID2[TAG_ID2["BASEFONT"] = 10] = "BASEFONT";
  TAG_ID2[TAG_ID2["BGSOUND"] = 11] = "BGSOUND";
  TAG_ID2[TAG_ID2["BIG"] = 12] = "BIG";
  TAG_ID2[TAG_ID2["BLOCKQUOTE"] = 13] = "BLOCKQUOTE";
  TAG_ID2[TAG_ID2["BODY"] = 14] = "BODY";
  TAG_ID2[TAG_ID2["BR"] = 15] = "BR";
  TAG_ID2[TAG_ID2["BUTTON"] = 16] = "BUTTON";
  TAG_ID2[TAG_ID2["CAPTION"] = 17] = "CAPTION";
  TAG_ID2[TAG_ID2["CENTER"] = 18] = "CENTER";
  TAG_ID2[TAG_ID2["CODE"] = 19] = "CODE";
  TAG_ID2[TAG_ID2["COL"] = 20] = "COL";
  TAG_ID2[TAG_ID2["COLGROUP"] = 21] = "COLGROUP";
  TAG_ID2[TAG_ID2["DD"] = 22] = "DD";
  TAG_ID2[TAG_ID2["DESC"] = 23] = "DESC";
  TAG_ID2[TAG_ID2["DETAILS"] = 24] = "DETAILS";
  TAG_ID2[TAG_ID2["DIALOG"] = 25] = "DIALOG";
  TAG_ID2[TAG_ID2["DIR"] = 26] = "DIR";
  TAG_ID2[TAG_ID2["DIV"] = 27] = "DIV";
  TAG_ID2[TAG_ID2["DL"] = 28] = "DL";
  TAG_ID2[TAG_ID2["DT"] = 29] = "DT";
  TAG_ID2[TAG_ID2["EM"] = 30] = "EM";
  TAG_ID2[TAG_ID2["EMBED"] = 31] = "EMBED";
  TAG_ID2[TAG_ID2["FIELDSET"] = 32] = "FIELDSET";
  TAG_ID2[TAG_ID2["FIGCAPTION"] = 33] = "FIGCAPTION";
  TAG_ID2[TAG_ID2["FIGURE"] = 34] = "FIGURE";
  TAG_ID2[TAG_ID2["FONT"] = 35] = "FONT";
  TAG_ID2[TAG_ID2["FOOTER"] = 36] = "FOOTER";
  TAG_ID2[TAG_ID2["FOREIGN_OBJECT"] = 37] = "FOREIGN_OBJECT";
  TAG_ID2[TAG_ID2["FORM"] = 38] = "FORM";
  TAG_ID2[TAG_ID2["FRAME"] = 39] = "FRAME";
  TAG_ID2[TAG_ID2["FRAMESET"] = 40] = "FRAMESET";
  TAG_ID2[TAG_ID2["H1"] = 41] = "H1";
  TAG_ID2[TAG_ID2["H2"] = 42] = "H2";
  TAG_ID2[TAG_ID2["H3"] = 43] = "H3";
  TAG_ID2[TAG_ID2["H4"] = 44] = "H4";
  TAG_ID2[TAG_ID2["H5"] = 45] = "H5";
  TAG_ID2[TAG_ID2["H6"] = 46] = "H6";
  TAG_ID2[TAG_ID2["HEAD"] = 47] = "HEAD";
  TAG_ID2[TAG_ID2["HEADER"] = 48] = "HEADER";
  TAG_ID2[TAG_ID2["HGROUP"] = 49] = "HGROUP";
  TAG_ID2[TAG_ID2["HR"] = 50] = "HR";
  TAG_ID2[TAG_ID2["HTML"] = 51] = "HTML";
  TAG_ID2[TAG_ID2["I"] = 52] = "I";
  TAG_ID2[TAG_ID2["IMG"] = 53] = "IMG";
  TAG_ID2[TAG_ID2["IMAGE"] = 54] = "IMAGE";
  TAG_ID2[TAG_ID2["INPUT"] = 55] = "INPUT";
  TAG_ID2[TAG_ID2["IFRAME"] = 56] = "IFRAME";
  TAG_ID2[TAG_ID2["KEYGEN"] = 57] = "KEYGEN";
  TAG_ID2[TAG_ID2["LABEL"] = 58] = "LABEL";
  TAG_ID2[TAG_ID2["LI"] = 59] = "LI";
  TAG_ID2[TAG_ID2["LINK"] = 60] = "LINK";
  TAG_ID2[TAG_ID2["LISTING"] = 61] = "LISTING";
  TAG_ID2[TAG_ID2["MAIN"] = 62] = "MAIN";
  TAG_ID2[TAG_ID2["MALIGNMARK"] = 63] = "MALIGNMARK";
  TAG_ID2[TAG_ID2["MARQUEE"] = 64] = "MARQUEE";
  TAG_ID2[TAG_ID2["MATH"] = 65] = "MATH";
  TAG_ID2[TAG_ID2["MENU"] = 66] = "MENU";
  TAG_ID2[TAG_ID2["META"] = 67] = "META";
  TAG_ID2[TAG_ID2["MGLYPH"] = 68] = "MGLYPH";
  TAG_ID2[TAG_ID2["MI"] = 69] = "MI";
  TAG_ID2[TAG_ID2["MO"] = 70] = "MO";
  TAG_ID2[TAG_ID2["MN"] = 71] = "MN";
  TAG_ID2[TAG_ID2["MS"] = 72] = "MS";
  TAG_ID2[TAG_ID2["MTEXT"] = 73] = "MTEXT";
  TAG_ID2[TAG_ID2["NAV"] = 74] = "NAV";
  TAG_ID2[TAG_ID2["NOBR"] = 75] = "NOBR";
  TAG_ID2[TAG_ID2["NOFRAMES"] = 76] = "NOFRAMES";
  TAG_ID2[TAG_ID2["NOEMBED"] = 77] = "NOEMBED";
  TAG_ID2[TAG_ID2["NOSCRIPT"] = 78] = "NOSCRIPT";
  TAG_ID2[TAG_ID2["OBJECT"] = 79] = "OBJECT";
  TAG_ID2[TAG_ID2["OL"] = 80] = "OL";
  TAG_ID2[TAG_ID2["OPTGROUP"] = 81] = "OPTGROUP";
  TAG_ID2[TAG_ID2["OPTION"] = 82] = "OPTION";
  TAG_ID2[TAG_ID2["P"] = 83] = "P";
  TAG_ID2[TAG_ID2["PARAM"] = 84] = "PARAM";
  TAG_ID2[TAG_ID2["PLAINTEXT"] = 85] = "PLAINTEXT";
  TAG_ID2[TAG_ID2["PRE"] = 86] = "PRE";
  TAG_ID2[TAG_ID2["RB"] = 87] = "RB";
  TAG_ID2[TAG_ID2["RP"] = 88] = "RP";
  TAG_ID2[TAG_ID2["RT"] = 89] = "RT";
  TAG_ID2[TAG_ID2["RTC"] = 90] = "RTC";
  TAG_ID2[TAG_ID2["RUBY"] = 91] = "RUBY";
  TAG_ID2[TAG_ID2["S"] = 92] = "S";
  TAG_ID2[TAG_ID2["SCRIPT"] = 93] = "SCRIPT";
  TAG_ID2[TAG_ID2["SECTION"] = 94] = "SECTION";
  TAG_ID2[TAG_ID2["SELECT"] = 95] = "SELECT";
  TAG_ID2[TAG_ID2["SOURCE"] = 96] = "SOURCE";
  TAG_ID2[TAG_ID2["SMALL"] = 97] = "SMALL";
  TAG_ID2[TAG_ID2["SPAN"] = 98] = "SPAN";
  TAG_ID2[TAG_ID2["STRIKE"] = 99] = "STRIKE";
  TAG_ID2[TAG_ID2["STRONG"] = 100] = "STRONG";
  TAG_ID2[TAG_ID2["STYLE"] = 101] = "STYLE";
  TAG_ID2[TAG_ID2["SUB"] = 102] = "SUB";
  TAG_ID2[TAG_ID2["SUMMARY"] = 103] = "SUMMARY";
  TAG_ID2[TAG_ID2["SUP"] = 104] = "SUP";
  TAG_ID2[TAG_ID2["TABLE"] = 105] = "TABLE";
  TAG_ID2[TAG_ID2["TBODY"] = 106] = "TBODY";
  TAG_ID2[TAG_ID2["TEMPLATE"] = 107] = "TEMPLATE";
  TAG_ID2[TAG_ID2["TEXTAREA"] = 108] = "TEXTAREA";
  TAG_ID2[TAG_ID2["TFOOT"] = 109] = "TFOOT";
  TAG_ID2[TAG_ID2["TD"] = 110] = "TD";
  TAG_ID2[TAG_ID2["TH"] = 111] = "TH";
  TAG_ID2[TAG_ID2["THEAD"] = 112] = "THEAD";
  TAG_ID2[TAG_ID2["TITLE"] = 113] = "TITLE";
  TAG_ID2[TAG_ID2["TR"] = 114] = "TR";
  TAG_ID2[TAG_ID2["TRACK"] = 115] = "TRACK";
  TAG_ID2[TAG_ID2["TT"] = 116] = "TT";
  TAG_ID2[TAG_ID2["U"] = 117] = "U";
  TAG_ID2[TAG_ID2["UL"] = 118] = "UL";
  TAG_ID2[TAG_ID2["SVG"] = 119] = "SVG";
  TAG_ID2[TAG_ID2["VAR"] = 120] = "VAR";
  TAG_ID2[TAG_ID2["WBR"] = 121] = "WBR";
  TAG_ID2[TAG_ID2["XMP"] = 122] = "XMP";
})(TAG_ID = TAG_ID || (TAG_ID = {}));
var TAG_NAME_TO_ID = /* @__PURE__ */ new Map([
  [TAG_NAMES.A, TAG_ID.A],
  [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],
  [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],
  [TAG_NAMES.APPLET, TAG_ID.APPLET],
  [TAG_NAMES.AREA, TAG_ID.AREA],
  [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],
  [TAG_NAMES.ASIDE, TAG_ID.ASIDE],
  [TAG_NAMES.B, TAG_ID.B],
  [TAG_NAMES.BASE, TAG_ID.BASE],
  [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],
  [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],
  [TAG_NAMES.BIG, TAG_ID.BIG],
  [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],
  [TAG_NAMES.BODY, TAG_ID.BODY],
  [TAG_NAMES.BR, TAG_ID.BR],
  [TAG_NAMES.BUTTON, TAG_ID.BUTTON],
  [TAG_NAMES.CAPTION, TAG_ID.CAPTION],
  [TAG_NAMES.CENTER, TAG_ID.CENTER],
  [TAG_NAMES.CODE, TAG_ID.CODE],
  [TAG_NAMES.COL, TAG_ID.COL],
  [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],
  [TAG_NAMES.DD, TAG_ID.DD],
  [TAG_NAMES.DESC, TAG_ID.DESC],
  [TAG_NAMES.DETAILS, TAG_ID.DETAILS],
  [TAG_NAMES.DIALOG, TAG_ID.DIALOG],
  [TAG_NAMES.DIR, TAG_ID.DIR],
  [TAG_NAMES.DIV, TAG_ID.DIV],
  [TAG_NAMES.DL, TAG_ID.DL],
  [TAG_NAMES.DT, TAG_ID.DT],
  [TAG_NAMES.EM, TAG_ID.EM],
  [TAG_NAMES.EMBED, TAG_ID.EMBED],
  [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],
  [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],
  [TAG_NAMES.FIGURE, TAG_ID.FIGURE],
  [TAG_NAMES.FONT, TAG_ID.FONT],
  [TAG_NAMES.FOOTER, TAG_ID.FOOTER],
  [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],
  [TAG_NAMES.FORM, TAG_ID.FORM],
  [TAG_NAMES.FRAME, TAG_ID.FRAME],
  [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],
  [TAG_NAMES.H1, TAG_ID.H1],
  [TAG_NAMES.H2, TAG_ID.H2],
  [TAG_NAMES.H3, TAG_ID.H3],
  [TAG_NAMES.H4, TAG_ID.H4],
  [TAG_NAMES.H5, TAG_ID.H5],
  [TAG_NAMES.H6, TAG_ID.H6],
  [TAG_NAMES.HEAD, TAG_ID.HEAD],
  [TAG_NAMES.HEADER, TAG_ID.HEADER],
  [TAG_NAMES.HGROUP, TAG_ID.HGROUP],
  [TAG_NAMES.HR, TAG_ID.HR],
  [TAG_NAMES.HTML, TAG_ID.HTML],
  [TAG_NAMES.I, TAG_ID.I],
  [TAG_NAMES.IMG, TAG_ID.IMG],
  [TAG_NAMES.IMAGE, TAG_ID.IMAGE],
  [TAG_NAMES.INPUT, TAG_ID.INPUT],
  [TAG_NAMES.IFRAME, TAG_ID.IFRAME],
  [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],
  [TAG_NAMES.LABEL, TAG_ID.LABEL],
  [TAG_NAMES.LI, TAG_ID.LI],
  [TAG_NAMES.LINK, TAG_ID.LINK],
  [TAG_NAMES.LISTING, TAG_ID.LISTING],
  [TAG_NAMES.MAIN, TAG_ID.MAIN],
  [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],
  [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],
  [TAG_NAMES.MATH, TAG_ID.MATH],
  [TAG_NAMES.MENU, TAG_ID.MENU],
  [TAG_NAMES.META, TAG_ID.META],
  [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],
  [TAG_NAMES.MI, TAG_ID.MI],
  [TAG_NAMES.MO, TAG_ID.MO],
  [TAG_NAMES.MN, TAG_ID.MN],
  [TAG_NAMES.MS, TAG_ID.MS],
  [TAG_NAMES.MTEXT, TAG_ID.MTEXT],
  [TAG_NAMES.NAV, TAG_ID.NAV],
  [TAG_NAMES.NOBR, TAG_ID.NOBR],
  [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],
  [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],
  [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],
  [TAG_NAMES.OBJECT, TAG_ID.OBJECT],
  [TAG_NAMES.OL, TAG_ID.OL],
  [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],
  [TAG_NAMES.OPTION, TAG_ID.OPTION],
  [TAG_NAMES.P, TAG_ID.P],
  [TAG_NAMES.PARAM, TAG_ID.PARAM],
  [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],
  [TAG_NAMES.PRE, TAG_ID.PRE],
  [TAG_NAMES.RB, TAG_ID.RB],
  [TAG_NAMES.RP, TAG_ID.RP],
  [TAG_NAMES.RT, TAG_ID.RT],
  [TAG_NAMES.RTC, TAG_ID.RTC],
  [TAG_NAMES.RUBY, TAG_ID.RUBY],
  [TAG_NAMES.S, TAG_ID.S],
  [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],
  [TAG_NAMES.SECTION, TAG_ID.SECTION],
  [TAG_NAMES.SELECT, TAG_ID.SELECT],
  [TAG_NAMES.SOURCE, TAG_ID.SOURCE],
  [TAG_NAMES.SMALL, TAG_ID.SMALL],
  [TAG_NAMES.SPAN, TAG_ID.SPAN],
  [TAG_NAMES.STRIKE, TAG_ID.STRIKE],
  [TAG_NAMES.STRONG, TAG_ID.STRONG],
  [TAG_NAMES.STYLE, TAG_ID.STYLE],
  [TAG_NAMES.SUB, TAG_ID.SUB],
  [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],
  [TAG_NAMES.SUP, TAG_ID.SUP],
  [TAG_NAMES.TABLE, TAG_ID.TABLE],
  [TAG_NAMES.TBODY, TAG_ID.TBODY],
  [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],
  [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],
  [TAG_NAMES.TFOOT, TAG_ID.TFOOT],
  [TAG_NAMES.TD, TAG_ID.TD],
  [TAG_NAMES.TH, TAG_ID.TH],
  [TAG_NAMES.THEAD, TAG_ID.THEAD],
  [TAG_NAMES.TITLE, TAG_ID.TITLE],
  [TAG_NAMES.TR, TAG_ID.TR],
  [TAG_NAMES.TRACK, TAG_ID.TRACK],
  [TAG_NAMES.TT, TAG_ID.TT],
  [TAG_NAMES.U, TAG_ID.U],
  [TAG_NAMES.UL, TAG_ID.UL],
  [TAG_NAMES.SVG, TAG_ID.SVG],
  [TAG_NAMES.VAR, TAG_ID.VAR],
  [TAG_NAMES.WBR, TAG_ID.WBR],
  [TAG_NAMES.XMP, TAG_ID.XMP]
]);
function getTagID(tagName) {
  var _a6;
  return (_a6 = TAG_NAME_TO_ID.get(tagName)) !== null && _a6 !== void 0 ? _a6 : TAG_ID.UNKNOWN;
}
var $ = TAG_ID;
var SPECIAL_ELEMENTS = {
  [NS.HTML]: /* @__PURE__ */ new Set([
    $.ADDRESS,
    $.APPLET,
    $.AREA,
    $.ARTICLE,
    $.ASIDE,
    $.BASE,
    $.BASEFONT,
    $.BGSOUND,
    $.BLOCKQUOTE,
    $.BODY,
    $.BR,
    $.BUTTON,
    $.CAPTION,
    $.CENTER,
    $.COL,
    $.COLGROUP,
    $.DD,
    $.DETAILS,
    $.DIR,
    $.DIV,
    $.DL,
    $.DT,
    $.EMBED,
    $.FIELDSET,
    $.FIGCAPTION,
    $.FIGURE,
    $.FOOTER,
    $.FORM,
    $.FRAME,
    $.FRAMESET,
    $.H1,
    $.H2,
    $.H3,
    $.H4,
    $.H5,
    $.H6,
    $.HEAD,
    $.HEADER,
    $.HGROUP,
    $.HR,
    $.HTML,
    $.IFRAME,
    $.IMG,
    $.INPUT,
    $.LI,
    $.LINK,
    $.LISTING,
    $.MAIN,
    $.MARQUEE,
    $.MENU,
    $.META,
    $.NAV,
    $.NOEMBED,
    $.NOFRAMES,
    $.NOSCRIPT,
    $.OBJECT,
    $.OL,
    $.P,
    $.PARAM,
    $.PLAINTEXT,
    $.PRE,
    $.SCRIPT,
    $.SECTION,
    $.SELECT,
    $.SOURCE,
    $.STYLE,
    $.SUMMARY,
    $.TABLE,
    $.TBODY,
    $.TD,
    $.TEMPLATE,
    $.TEXTAREA,
    $.TFOOT,
    $.TH,
    $.THEAD,
    $.TITLE,
    $.TR,
    $.TRACK,
    $.UL,
    $.WBR,
    $.XMP
  ]),
  [NS.MATHML]: /* @__PURE__ */ new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),
  [NS.SVG]: /* @__PURE__ */ new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),
  [NS.XLINK]: /* @__PURE__ */ new Set(),
  [NS.XML]: /* @__PURE__ */ new Set(),
  [NS.XMLNS]: /* @__PURE__ */ new Set()
};
function isNumberedHeader(tn) {
  return tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6;
}
var UNESCAPED_TEXT = /* @__PURE__ */ new Set([
  TAG_NAMES.STYLE,
  TAG_NAMES.SCRIPT,
  TAG_NAMES.XMP,
  TAG_NAMES.IFRAME,
  TAG_NAMES.NOEMBED,
  TAG_NAMES.NOFRAMES,
  TAG_NAMES.PLAINTEXT
]);

// ../../node_modules/hast-util-from-html/node_modules/parse5/dist/tokenizer/index.js
var C1_CONTROLS_REFERENCE_REPLACEMENTS = /* @__PURE__ */ new Map([
  [128, 8364],
  [130, 8218],
  [131, 402],
  [132, 8222],
  [133, 8230],
  [134, 8224],
  [135, 8225],
  [136, 710],
  [137, 8240],
  [138, 352],
  [139, 8249],
  [140, 338],
  [142, 381],
  [145, 8216],
  [146, 8217],
  [147, 8220],
  [148, 8221],
  [149, 8226],
  [150, 8211],
  [151, 8212],
  [152, 732],
  [153, 8482],
  [154, 353],
  [155, 8250],
  [156, 339],
  [158, 382],
  [159, 376]
]);
var State3;
(function(State5) {
  State5[State5["DATA"] = 0] = "DATA";
  State5[State5["RCDATA"] = 1] = "RCDATA";
  State5[State5["RAWTEXT"] = 2] = "RAWTEXT";
  State5[State5["SCRIPT_DATA"] = 3] = "SCRIPT_DATA";
  State5[State5["PLAINTEXT"] = 4] = "PLAINTEXT";
  State5[State5["TAG_OPEN"] = 5] = "TAG_OPEN";
  State5[State5["END_TAG_OPEN"] = 6] = "END_TAG_OPEN";
  State5[State5["TAG_NAME"] = 7] = "TAG_NAME";
  State5[State5["RCDATA_LESS_THAN_SIGN"] = 8] = "RCDATA_LESS_THAN_SIGN";
  State5[State5["RCDATA_END_TAG_OPEN"] = 9] = "RCDATA_END_TAG_OPEN";
  State5[State5["RCDATA_END_TAG_NAME"] = 10] = "RCDATA_END_TAG_NAME";
  State5[State5["RAWTEXT_LESS_THAN_SIGN"] = 11] = "RAWTEXT_LESS_THAN_SIGN";
  State5[State5["RAWTEXT_END_TAG_OPEN"] = 12] = "RAWTEXT_END_TAG_OPEN";
  State5[State5["RAWTEXT_END_TAG_NAME"] = 13] = "RAWTEXT_END_TAG_NAME";
  State5[State5["SCRIPT_DATA_LESS_THAN_SIGN"] = 14] = "SCRIPT_DATA_LESS_THAN_SIGN";
  State5[State5["SCRIPT_DATA_END_TAG_OPEN"] = 15] = "SCRIPT_DATA_END_TAG_OPEN";
  State5[State5["SCRIPT_DATA_END_TAG_NAME"] = 16] = "SCRIPT_DATA_END_TAG_NAME";
  State5[State5["SCRIPT_DATA_ESCAPE_START"] = 17] = "SCRIPT_DATA_ESCAPE_START";
  State5[State5["SCRIPT_DATA_ESCAPE_START_DASH"] = 18] = "SCRIPT_DATA_ESCAPE_START_DASH";
  State5[State5["SCRIPT_DATA_ESCAPED"] = 19] = "SCRIPT_DATA_ESCAPED";
  State5[State5["SCRIPT_DATA_ESCAPED_DASH"] = 20] = "SCRIPT_DATA_ESCAPED_DASH";
  State5[State5["SCRIPT_DATA_ESCAPED_DASH_DASH"] = 21] = "SCRIPT_DATA_ESCAPED_DASH_DASH";
  State5[State5["SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"] = 22] = "SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN";
  State5[State5["SCRIPT_DATA_ESCAPED_END_TAG_OPEN"] = 23] = "SCRIPT_DATA_ESCAPED_END_TAG_OPEN";
  State5[State5["SCRIPT_DATA_ESCAPED_END_TAG_NAME"] = 24] = "SCRIPT_DATA_ESCAPED_END_TAG_NAME";
  State5[State5["SCRIPT_DATA_DOUBLE_ESCAPE_START"] = 25] = "SCRIPT_DATA_DOUBLE_ESCAPE_START";
  State5[State5["SCRIPT_DATA_DOUBLE_ESCAPED"] = 26] = "SCRIPT_DATA_DOUBLE_ESCAPED";
  State5[State5["SCRIPT_DATA_DOUBLE_ESCAPED_DASH"] = 27] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH";
  State5[State5["SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"] = 28] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH";
  State5[State5["SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"] = 29] = "SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN";
  State5[State5["SCRIPT_DATA_DOUBLE_ESCAPE_END"] = 30] = "SCRIPT_DATA_DOUBLE_ESCAPE_END";
  State5[State5["BEFORE_ATTRIBUTE_NAME"] = 31] = "BEFORE_ATTRIBUTE_NAME";
  State5[State5["ATTRIBUTE_NAME"] = 32] = "ATTRIBUTE_NAME";
  State5[State5["AFTER_ATTRIBUTE_NAME"] = 33] = "AFTER_ATTRIBUTE_NAME";
  State5[State5["BEFORE_ATTRIBUTE_VALUE"] = 34] = "BEFORE_ATTRIBUTE_VALUE";
  State5[State5["ATTRIBUTE_VALUE_DOUBLE_QUOTED"] = 35] = "ATTRIBUTE_VALUE_DOUBLE_QUOTED";
  State5[State5["ATTRIBUTE_VALUE_SINGLE_QUOTED"] = 36] = "ATTRIBUTE_VALUE_SINGLE_QUOTED";
  State5[State5["ATTRIBUTE_VALUE_UNQUOTED"] = 37] = "ATTRIBUTE_VALUE_UNQUOTED";
  State5[State5["AFTER_ATTRIBUTE_VALUE_QUOTED"] = 38] = "AFTER_ATTRIBUTE_VALUE_QUOTED";
  State5[State5["SELF_CLOSING_START_TAG"] = 39] = "SELF_CLOSING_START_TAG";
  State5[State5["BOGUS_COMMENT"] = 40] = "BOGUS_COMMENT";
  State5[State5["MARKUP_DECLARATION_OPEN"] = 41] = "MARKUP_DECLARATION_OPEN";
  State5[State5["COMMENT_START"] = 42] = "COMMENT_START";
  State5[State5["COMMENT_START_DASH"] = 43] = "COMMENT_START_DASH";
  State5[State5["COMMENT"] = 44] = "COMMENT";
  State5[State5["COMMENT_LESS_THAN_SIGN"] = 45] = "COMMENT_LESS_THAN_SIGN";
  State5[State5["COMMENT_LESS_THAN_SIGN_BANG"] = 46] = "COMMENT_LESS_THAN_SIGN_BANG";
  State5[State5["COMMENT_LESS_THAN_SIGN_BANG_DASH"] = 47] = "COMMENT_LESS_THAN_SIGN_BANG_DASH";
  State5[State5["COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"] = 48] = "COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH";
  State5[State5["COMMENT_END_DASH"] = 49] = "COMMENT_END_DASH";
  State5[State5["COMMENT_END"] = 50] = "COMMENT_END";
  State5[State5["COMMENT_END_BANG"] = 51] = "COMMENT_END_BANG";
  State5[State5["DOCTYPE"] = 52] = "DOCTYPE";
  State5[State5["BEFORE_DOCTYPE_NAME"] = 53] = "BEFORE_DOCTYPE_NAME";
  State5[State5["DOCTYPE_NAME"] = 54] = "DOCTYPE_NAME";
  State5[State5["AFTER_DOCTYPE_NAME"] = 55] = "AFTER_DOCTYPE_NAME";
  State5[State5["AFTER_DOCTYPE_PUBLIC_KEYWORD"] = 56] = "AFTER_DOCTYPE_PUBLIC_KEYWORD";
  State5[State5["BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"] = 57] = "BEFORE_DOCTYPE_PUBLIC_IDENTIFIER";
  State5[State5["DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"] = 58] = "DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED";
  State5[State5["DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"] = 59] = "DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED";
  State5[State5["AFTER_DOCTYPE_PUBLIC_IDENTIFIER"] = 60] = "AFTER_DOCTYPE_PUBLIC_IDENTIFIER";
  State5[State5["BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"] = 61] = "BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS";
  State5[State5["AFTER_DOCTYPE_SYSTEM_KEYWORD"] = 62] = "AFTER_DOCTYPE_SYSTEM_KEYWORD";
  State5[State5["BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"] = 63] = "BEFORE_DOCTYPE_SYSTEM_IDENTIFIER";
  State5[State5["DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"] = 64] = "DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED";
  State5[State5["DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"] = 65] = "DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED";
  State5[State5["AFTER_DOCTYPE_SYSTEM_IDENTIFIER"] = 66] = "AFTER_DOCTYPE_SYSTEM_IDENTIFIER";
  State5[State5["BOGUS_DOCTYPE"] = 67] = "BOGUS_DOCTYPE";
  State5[State5["CDATA_SECTION"] = 68] = "CDATA_SECTION";
  State5[State5["CDATA_SECTION_BRACKET"] = 69] = "CDATA_SECTION_BRACKET";
  State5[State5["CDATA_SECTION_END"] = 70] = "CDATA_SECTION_END";
  State5[State5["CHARACTER_REFERENCE"] = 71] = "CHARACTER_REFERENCE";
  State5[State5["NAMED_CHARACTER_REFERENCE"] = 72] = "NAMED_CHARACTER_REFERENCE";
  State5[State5["AMBIGUOUS_AMPERSAND"] = 73] = "AMBIGUOUS_AMPERSAND";
  State5[State5["NUMERIC_CHARACTER_REFERENCE"] = 74] = "NUMERIC_CHARACTER_REFERENCE";
  State5[State5["HEXADEMICAL_CHARACTER_REFERENCE_START"] = 75] = "HEXADEMICAL_CHARACTER_REFERENCE_START";
  State5[State5["HEXADEMICAL_CHARACTER_REFERENCE"] = 76] = "HEXADEMICAL_CHARACTER_REFERENCE";
  State5[State5["DECIMAL_CHARACTER_REFERENCE"] = 77] = "DECIMAL_CHARACTER_REFERENCE";
  State5[State5["NUMERIC_CHARACTER_REFERENCE_END"] = 78] = "NUMERIC_CHARACTER_REFERENCE_END";
})(State3 || (State3 = {}));
var TokenizerMode = {
  DATA: State3.DATA,
  RCDATA: State3.RCDATA,
  RAWTEXT: State3.RAWTEXT,
  SCRIPT_DATA: State3.SCRIPT_DATA,
  PLAINTEXT: State3.PLAINTEXT,
  CDATA_SECTION: State3.CDATA_SECTION
};
function isAsciiDigit(cp) {
  return cp >= CODE_POINTS.DIGIT_0 && cp <= CODE_POINTS.DIGIT_9;
}
function isAsciiUpper(cp) {
  return cp >= CODE_POINTS.LATIN_CAPITAL_A && cp <= CODE_POINTS.LATIN_CAPITAL_Z;
}
function isAsciiLower(cp) {
  return cp >= CODE_POINTS.LATIN_SMALL_A && cp <= CODE_POINTS.LATIN_SMALL_Z;
}
function isAsciiLetter(cp) {
  return isAsciiLower(cp) || isAsciiUpper(cp);
}
function isAsciiAlphaNumeric2(cp) {
  return isAsciiLetter(cp) || isAsciiDigit(cp);
}
function isAsciiUpperHexDigit(cp) {
  return cp >= CODE_POINTS.LATIN_CAPITAL_A && cp <= CODE_POINTS.LATIN_CAPITAL_F;
}
function isAsciiLowerHexDigit(cp) {
  return cp >= CODE_POINTS.LATIN_SMALL_A && cp <= CODE_POINTS.LATIN_SMALL_F;
}
function isAsciiHexDigit(cp) {
  return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);
}
function toAsciiLower(cp) {
  return cp + 32;
}
function isWhitespace2(cp) {
  return cp === CODE_POINTS.SPACE || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.TABULATION || cp === CODE_POINTS.FORM_FEED;
}
function isEntityInAttributeInvalidEnd2(nextCp) {
  return nextCp === CODE_POINTS.EQUALS_SIGN || isAsciiAlphaNumeric2(nextCp);
}
function isScriptDataDoubleEscapeSequenceEnd(cp) {
  return isWhitespace2(cp) || cp === CODE_POINTS.SOLIDUS || cp === CODE_POINTS.GREATER_THAN_SIGN;
}
var Tokenizer = class {
  constructor(options, handler) {
    this.options = options;
    this.handler = handler;
    this.paused = false;
    this.inLoop = false;
    this.inForeignNode = false;
    this.lastStartTagName = "";
    this.active = false;
    this.state = State3.DATA;
    this.returnState = State3.DATA;
    this.charRefCode = -1;
    this.consumedAfterSnapshot = -1;
    this.currentCharacterToken = null;
    this.currentToken = null;
    this.currentAttr = { name: "", value: "" };
    this.preprocessor = new Preprocessor(handler);
    this.currentLocation = this.getCurrentLocation(-1);
  }
  //Errors
  _err(code7) {
    var _a6, _b;
    (_b = (_a6 = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a6, this.preprocessor.getError(code7));
  }
  // NOTE: `offset` may never run across line boundaries.
  getCurrentLocation(offset) {
    if (!this.options.sourceCodeLocationInfo) {
      return null;
    }
    return {
      startLine: this.preprocessor.line,
      startCol: this.preprocessor.col - offset,
      startOffset: this.preprocessor.offset - offset,
      endLine: -1,
      endCol: -1,
      endOffset: -1
    };
  }
  _runParsingLoop() {
    if (this.inLoop)
      return;
    this.inLoop = true;
    while (this.active && !this.paused) {
      this.consumedAfterSnapshot = 0;
      const cp = this._consume();
      if (!this._ensureHibernation()) {
        this._callState(cp);
      }
    }
    this.inLoop = false;
  }
  //API
  pause() {
    this.paused = true;
  }
  resume(writeCallback) {
    if (!this.paused) {
      throw new Error("Parser was already resumed");
    }
    this.paused = false;
    if (this.inLoop)
      return;
    this._runParsingLoop();
    if (!this.paused) {
      writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();
    }
  }
  write(chunk, isLastChunk, writeCallback) {
    this.active = true;
    this.preprocessor.write(chunk, isLastChunk);
    this._runParsingLoop();
    if (!this.paused) {
      writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();
    }
  }
  insertHtmlAtCurrentPos(chunk) {
    this.active = true;
    this.preprocessor.insertHtmlAtCurrentPos(chunk);
    this._runParsingLoop();
  }
  //Hibernation
  _ensureHibernation() {
    if (this.preprocessor.endOfChunkHit) {
      this._unconsume(this.consumedAfterSnapshot);
      this.active = false;
      return true;
    }
    return false;
  }
  //Consumption
  _consume() {
    this.consumedAfterSnapshot++;
    return this.preprocessor.advance();
  }
  _unconsume(count2) {
    this.consumedAfterSnapshot -= count2;
    this.preprocessor.retreat(count2);
  }
  _reconsumeInState(state, cp) {
    this.state = state;
    this._callState(cp);
  }
  _advanceBy(count2) {
    this.consumedAfterSnapshot += count2;
    for (let i2 = 0; i2 < count2; i2++) {
      this.preprocessor.advance();
    }
  }
  _consumeSequenceIfMatch(pattern, caseSensitive) {
    if (this.preprocessor.startsWith(pattern, caseSensitive)) {
      this._advanceBy(pattern.length - 1);
      return true;
    }
    return false;
  }
  //Token creation
  _createStartTagToken() {
    this.currentToken = {
      type: TokenType.START_TAG,
      tagName: "",
      tagID: TAG_ID.UNKNOWN,
      selfClosing: false,
      ackSelfClosing: false,
      attrs: [],
      location: this.getCurrentLocation(1)
    };
  }
  _createEndTagToken() {
    this.currentToken = {
      type: TokenType.END_TAG,
      tagName: "",
      tagID: TAG_ID.UNKNOWN,
      selfClosing: false,
      ackSelfClosing: false,
      attrs: [],
      location: this.getCurrentLocation(2)
    };
  }
  _createCommentToken(offset) {
    this.currentToken = {
      type: TokenType.COMMENT,
      data: "",
      location: this.getCurrentLocation(offset)
    };
  }
  _createDoctypeToken(initialName) {
    this.currentToken = {
      type: TokenType.DOCTYPE,
      name: initialName,
      forceQuirks: false,
      publicId: null,
      systemId: null,
      location: this.currentLocation
    };
  }
  _createCharacterToken(type2, chars) {
    this.currentCharacterToken = {
      type: type2,
      chars,
      location: this.currentLocation
    };
  }
  //Tag attributes
  _createAttr(attrNameFirstCh) {
    this.currentAttr = {
      name: attrNameFirstCh,
      value: ""
    };
    this.currentLocation = this.getCurrentLocation(0);
  }
  _leaveAttrName() {
    var _a6;
    var _b;
    const token = this.currentToken;
    if (getTokenAttr(token, this.currentAttr.name) === null) {
      token.attrs.push(this.currentAttr);
      if (token.location && this.currentLocation) {
        const attrLocations = (_a6 = (_b = token.location).attrs) !== null && _a6 !== void 0 ? _a6 : _b.attrs = /* @__PURE__ */ Object.create(null);
        attrLocations[this.currentAttr.name] = this.currentLocation;
        this._leaveAttrValue();
      }
    } else {
      this._err(ERR.duplicateAttribute);
    }
  }
  _leaveAttrValue() {
    if (this.currentLocation) {
      this.currentLocation.endLine = this.preprocessor.line;
      this.currentLocation.endCol = this.preprocessor.col;
      this.currentLocation.endOffset = this.preprocessor.offset;
    }
  }
  //Token emission
  prepareToken(ct) {
    this._emitCurrentCharacterToken(ct.location);
    this.currentToken = null;
    if (ct.location) {
      ct.location.endLine = this.preprocessor.line;
      ct.location.endCol = this.preprocessor.col + 1;
      ct.location.endOffset = this.preprocessor.offset + 1;
    }
    this.currentLocation = this.getCurrentLocation(-1);
  }
  emitCurrentTagToken() {
    const ct = this.currentToken;
    this.prepareToken(ct);
    ct.tagID = getTagID(ct.tagName);
    if (ct.type === TokenType.START_TAG) {
      this.lastStartTagName = ct.tagName;
      this.handler.onStartTag(ct);
    } else {
      if (ct.attrs.length > 0) {
        this._err(ERR.endTagWithAttributes);
      }
      if (ct.selfClosing) {
        this._err(ERR.endTagWithTrailingSolidus);
      }
      this.handler.onEndTag(ct);
    }
    this.preprocessor.dropParsedChunk();
  }
  emitCurrentComment(ct) {
    this.prepareToken(ct);
    this.handler.onComment(ct);
    this.preprocessor.dropParsedChunk();
  }
  emitCurrentDoctype(ct) {
    this.prepareToken(ct);
    this.handler.onDoctype(ct);
    this.preprocessor.dropParsedChunk();
  }
  _emitCurrentCharacterToken(nextLocation) {
    if (this.currentCharacterToken) {
      if (nextLocation && this.currentCharacterToken.location) {
        this.currentCharacterToken.location.endLine = nextLocation.startLine;
        this.currentCharacterToken.location.endCol = nextLocation.startCol;
        this.currentCharacterToken.location.endOffset = nextLocation.startOffset;
      }
      switch (this.currentCharacterToken.type) {
        case TokenType.CHARACTER: {
          this.handler.onCharacter(this.currentCharacterToken);
          break;
        }
        case TokenType.NULL_CHARACTER: {
          this.handler.onNullCharacter(this.currentCharacterToken);
          break;
        }
        case TokenType.WHITESPACE_CHARACTER: {
          this.handler.onWhitespaceCharacter(this.currentCharacterToken);
          break;
        }
      }
      this.currentCharacterToken = null;
    }
  }
  _emitEOFToken() {
    const location4 = this.getCurrentLocation(0);
    if (location4) {
      location4.endLine = location4.startLine;
      location4.endCol = location4.startCol;
      location4.endOffset = location4.startOffset;
    }
    this._emitCurrentCharacterToken(location4);
    this.handler.onEof({ type: TokenType.EOF, location: location4 });
    this.active = false;
  }
  //Characters emission
  //OPTIMIZATION: specification uses only one type of character tokens (one token per character).
  //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.
  //If we have a sequence of characters that belong to the same group, the parser can process it
  //as a single solid character token.
  //So, there are 3 types of character tokens in parse5:
  //1)TokenType.NULL_CHARACTER - \u0000-character sequences (e.g. '\u0000\u0000\u0000')
  //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\n  \r\t   \f')
  //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')
  _appendCharToCurrentCharacterToken(type2, ch) {
    if (this.currentCharacterToken) {
      if (this.currentCharacterToken.type !== type2) {
        this.currentLocation = this.getCurrentLocation(0);
        this._emitCurrentCharacterToken(this.currentLocation);
        this.preprocessor.dropParsedChunk();
      } else {
        this.currentCharacterToken.chars += ch;
        return;
      }
    }
    this._createCharacterToken(type2, ch);
  }
  _emitCodePoint(cp) {
    const type2 = isWhitespace2(cp) ? TokenType.WHITESPACE_CHARACTER : cp === CODE_POINTS.NULL ? TokenType.NULL_CHARACTER : TokenType.CHARACTER;
    this._appendCharToCurrentCharacterToken(type2, String.fromCodePoint(cp));
  }
  //NOTE: used when we emit characters explicitly.
  //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.
  _emitChars(ch) {
    this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);
  }
  // Character reference helpers
  _matchNamedCharacterReference(cp) {
    let result = null;
    let excess = 0;
    let withoutSemicolon = false;
    for (let i2 = 0, current2 = decode_data_html_default[0]; i2 >= 0; cp = this._consume()) {
      i2 = determineBranch(decode_data_html_default, current2, i2 + 1, cp);
      if (i2 < 0)
        break;
      excess += 1;
      current2 = decode_data_html_default[i2];
      const masked = current2 & BinTrieFlags.VALUE_LENGTH;
      if (masked) {
        const valueLength = (masked >> 14) - 1;
        if (cp !== CODE_POINTS.SEMICOLON && this._isCharacterReferenceInAttribute() && isEntityInAttributeInvalidEnd2(this.preprocessor.peek(1))) {
          result = [CODE_POINTS.AMPERSAND];
          i2 += valueLength;
        } else {
          result = valueLength === 0 ? [decode_data_html_default[i2] & ~BinTrieFlags.VALUE_LENGTH] : valueLength === 1 ? [decode_data_html_default[++i2]] : [decode_data_html_default[++i2], decode_data_html_default[++i2]];
          excess = 0;
          withoutSemicolon = cp !== CODE_POINTS.SEMICOLON;
        }
        if (valueLength === 0) {
          this._consume();
          break;
        }
      }
    }
    this._unconsume(excess);
    if (withoutSemicolon && !this.preprocessor.endOfChunkHit) {
      this._err(ERR.missingSemicolonAfterCharacterReference);
    }
    this._unconsume(1);
    return result;
  }
  _isCharacterReferenceInAttribute() {
    return this.returnState === State3.ATTRIBUTE_VALUE_DOUBLE_QUOTED || this.returnState === State3.ATTRIBUTE_VALUE_SINGLE_QUOTED || this.returnState === State3.ATTRIBUTE_VALUE_UNQUOTED;
  }
  _flushCodePointConsumedAsCharacterReference(cp) {
    if (this._isCharacterReferenceInAttribute()) {
      this.currentAttr.value += String.fromCodePoint(cp);
    } else {
      this._emitCodePoint(cp);
    }
  }
  // Calling states this way turns out to be much faster than any other approach.
  _callState(cp) {
    switch (this.state) {
      case State3.DATA: {
        this._stateData(cp);
        break;
      }
      case State3.RCDATA: {
        this._stateRcdata(cp);
        break;
      }
      case State3.RAWTEXT: {
        this._stateRawtext(cp);
        break;
      }
      case State3.SCRIPT_DATA: {
        this._stateScriptData(cp);
        break;
      }
      case State3.PLAINTEXT: {
        this._statePlaintext(cp);
        break;
      }
      case State3.TAG_OPEN: {
        this._stateTagOpen(cp);
        break;
      }
      case State3.END_TAG_OPEN: {
        this._stateEndTagOpen(cp);
        break;
      }
      case State3.TAG_NAME: {
        this._stateTagName(cp);
        break;
      }
      case State3.RCDATA_LESS_THAN_SIGN: {
        this._stateRcdataLessThanSign(cp);
        break;
      }
      case State3.RCDATA_END_TAG_OPEN: {
        this._stateRcdataEndTagOpen(cp);
        break;
      }
      case State3.RCDATA_END_TAG_NAME: {
        this._stateRcdataEndTagName(cp);
        break;
      }
      case State3.RAWTEXT_LESS_THAN_SIGN: {
        this._stateRawtextLessThanSign(cp);
        break;
      }
      case State3.RAWTEXT_END_TAG_OPEN: {
        this._stateRawtextEndTagOpen(cp);
        break;
      }
      case State3.RAWTEXT_END_TAG_NAME: {
        this._stateRawtextEndTagName(cp);
        break;
      }
      case State3.SCRIPT_DATA_LESS_THAN_SIGN: {
        this._stateScriptDataLessThanSign(cp);
        break;
      }
      case State3.SCRIPT_DATA_END_TAG_OPEN: {
        this._stateScriptDataEndTagOpen(cp);
        break;
      }
      case State3.SCRIPT_DATA_END_TAG_NAME: {
        this._stateScriptDataEndTagName(cp);
        break;
      }
      case State3.SCRIPT_DATA_ESCAPE_START: {
        this._stateScriptDataEscapeStart(cp);
        break;
      }
      case State3.SCRIPT_DATA_ESCAPE_START_DASH: {
        this._stateScriptDataEscapeStartDash(cp);
        break;
      }
      case State3.SCRIPT_DATA_ESCAPED: {
        this._stateScriptDataEscaped(cp);
        break;
      }
      case State3.SCRIPT_DATA_ESCAPED_DASH: {
        this._stateScriptDataEscapedDash(cp);
        break;
      }
      case State3.SCRIPT_DATA_ESCAPED_DASH_DASH: {
        this._stateScriptDataEscapedDashDash(cp);
        break;
      }
      case State3.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {
        this._stateScriptDataEscapedLessThanSign(cp);
        break;
      }
      case State3.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {
        this._stateScriptDataEscapedEndTagOpen(cp);
        break;
      }
      case State3.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {
        this._stateScriptDataEscapedEndTagName(cp);
        break;
      }
      case State3.SCRIPT_DATA_DOUBLE_ESCAPE_START: {
        this._stateScriptDataDoubleEscapeStart(cp);
        break;
      }
      case State3.SCRIPT_DATA_DOUBLE_ESCAPED: {
        this._stateScriptDataDoubleEscaped(cp);
        break;
      }
      case State3.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {
        this._stateScriptDataDoubleEscapedDash(cp);
        break;
      }
      case State3.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {
        this._stateScriptDataDoubleEscapedDashDash(cp);
        break;
      }
      case State3.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {
        this._stateScriptDataDoubleEscapedLessThanSign(cp);
        break;
      }
      case State3.SCRIPT_DATA_DOUBLE_ESCAPE_END: {
        this._stateScriptDataDoubleEscapeEnd(cp);
        break;
      }
      case State3.BEFORE_ATTRIBUTE_NAME: {
        this._stateBeforeAttributeName(cp);
        break;
      }
      case State3.ATTRIBUTE_NAME: {
        this._stateAttributeName(cp);
        break;
      }
      case State3.AFTER_ATTRIBUTE_NAME: {
        this._stateAfterAttributeName(cp);
        break;
      }
      case State3.BEFORE_ATTRIBUTE_VALUE: {
        this._stateBeforeAttributeValue(cp);
        break;
      }
      case State3.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {
        this._stateAttributeValueDoubleQuoted(cp);
        break;
      }
      case State3.ATTRIBUTE_VALUE_SINGLE_QUOTED: {
        this._stateAttributeValueSingleQuoted(cp);
        break;
      }
      case State3.ATTRIBUTE_VALUE_UNQUOTED: {
        this._stateAttributeValueUnquoted(cp);
        break;
      }
      case State3.AFTER_ATTRIBUTE_VALUE_QUOTED: {
        this._stateAfterAttributeValueQuoted(cp);
        break;
      }
      case State3.SELF_CLOSING_START_TAG: {
        this._stateSelfClosingStartTag(cp);
        break;
      }
      case State3.BOGUS_COMMENT: {
        this._stateBogusComment(cp);
        break;
      }
      case State3.MARKUP_DECLARATION_OPEN: {
        this._stateMarkupDeclarationOpen(cp);
        break;
      }
      case State3.COMMENT_START: {
        this._stateCommentStart(cp);
        break;
      }
      case State3.COMMENT_START_DASH: {
        this._stateCommentStartDash(cp);
        break;
      }
      case State3.COMMENT: {
        this._stateComment(cp);
        break;
      }
      case State3.COMMENT_LESS_THAN_SIGN: {
        this._stateCommentLessThanSign(cp);
        break;
      }
      case State3.COMMENT_LESS_THAN_SIGN_BANG: {
        this._stateCommentLessThanSignBang(cp);
        break;
      }
      case State3.COMMENT_LESS_THAN_SIGN_BANG_DASH: {
        this._stateCommentLessThanSignBangDash(cp);
        break;
      }
      case State3.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {
        this._stateCommentLessThanSignBangDashDash(cp);
        break;
      }
      case State3.COMMENT_END_DASH: {
        this._stateCommentEndDash(cp);
        break;
      }
      case State3.COMMENT_END: {
        this._stateCommentEnd(cp);
        break;
      }
      case State3.COMMENT_END_BANG: {
        this._stateCommentEndBang(cp);
        break;
      }
      case State3.DOCTYPE: {
        this._stateDoctype(cp);
        break;
      }
      case State3.BEFORE_DOCTYPE_NAME: {
        this._stateBeforeDoctypeName(cp);
        break;
      }
      case State3.DOCTYPE_NAME: {
        this._stateDoctypeName(cp);
        break;
      }
      case State3.AFTER_DOCTYPE_NAME: {
        this._stateAfterDoctypeName(cp);
        break;
      }
      case State3.AFTER_DOCTYPE_PUBLIC_KEYWORD: {
        this._stateAfterDoctypePublicKeyword(cp);
        break;
      }
      case State3.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {
        this._stateBeforeDoctypePublicIdentifier(cp);
        break;
      }
      case State3.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {
        this._stateDoctypePublicIdentifierDoubleQuoted(cp);
        break;
      }
      case State3.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {
        this._stateDoctypePublicIdentifierSingleQuoted(cp);
        break;
      }
      case State3.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {
        this._stateAfterDoctypePublicIdentifier(cp);
        break;
      }
      case State3.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {
        this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);
        break;
      }
      case State3.AFTER_DOCTYPE_SYSTEM_KEYWORD: {
        this._stateAfterDoctypeSystemKeyword(cp);
        break;
      }
      case State3.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {
        this._stateBeforeDoctypeSystemIdentifier(cp);
        break;
      }
      case State3.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {
        this._stateDoctypeSystemIdentifierDoubleQuoted(cp);
        break;
      }
      case State3.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {
        this._stateDoctypeSystemIdentifierSingleQuoted(cp);
        break;
      }
      case State3.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {
        this._stateAfterDoctypeSystemIdentifier(cp);
        break;
      }
      case State3.BOGUS_DOCTYPE: {
        this._stateBogusDoctype(cp);
        break;
      }
      case State3.CDATA_SECTION: {
        this._stateCdataSection(cp);
        break;
      }
      case State3.CDATA_SECTION_BRACKET: {
        this._stateCdataSectionBracket(cp);
        break;
      }
      case State3.CDATA_SECTION_END: {
        this._stateCdataSectionEnd(cp);
        break;
      }
      case State3.CHARACTER_REFERENCE: {
        this._stateCharacterReference(cp);
        break;
      }
      case State3.NAMED_CHARACTER_REFERENCE: {
        this._stateNamedCharacterReference(cp);
        break;
      }
      case State3.AMBIGUOUS_AMPERSAND: {
        this._stateAmbiguousAmpersand(cp);
        break;
      }
      case State3.NUMERIC_CHARACTER_REFERENCE: {
        this._stateNumericCharacterReference(cp);
        break;
      }
      case State3.HEXADEMICAL_CHARACTER_REFERENCE_START: {
        this._stateHexademicalCharacterReferenceStart(cp);
        break;
      }
      case State3.HEXADEMICAL_CHARACTER_REFERENCE: {
        this._stateHexademicalCharacterReference(cp);
        break;
      }
      case State3.DECIMAL_CHARACTER_REFERENCE: {
        this._stateDecimalCharacterReference(cp);
        break;
      }
      case State3.NUMERIC_CHARACTER_REFERENCE_END: {
        this._stateNumericCharacterReferenceEnd(cp);
        break;
      }
      default: {
        throw new Error("Unknown state");
      }
    }
  }
  // State machine
  // Data state
  //------------------------------------------------------------------
  _stateData(cp) {
    switch (cp) {
      case CODE_POINTS.LESS_THAN_SIGN: {
        this.state = State3.TAG_OPEN;
        break;
      }
      case CODE_POINTS.AMPERSAND: {
        this.returnState = State3.DATA;
        this.state = State3.CHARACTER_REFERENCE;
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        this._emitCodePoint(cp);
        break;
      }
      case CODE_POINTS.EOF: {
        this._emitEOFToken();
        break;
      }
      default: {
        this._emitCodePoint(cp);
      }
    }
  }
  //  RCDATA state
  //------------------------------------------------------------------
  _stateRcdata(cp) {
    switch (cp) {
      case CODE_POINTS.AMPERSAND: {
        this.returnState = State3.RCDATA;
        this.state = State3.CHARACTER_REFERENCE;
        break;
      }
      case CODE_POINTS.LESS_THAN_SIGN: {
        this.state = State3.RCDATA_LESS_THAN_SIGN;
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        this._emitChars(REPLACEMENT_CHARACTER);
        break;
      }
      case CODE_POINTS.EOF: {
        this._emitEOFToken();
        break;
      }
      default: {
        this._emitCodePoint(cp);
      }
    }
  }
  // RAWTEXT state
  //------------------------------------------------------------------
  _stateRawtext(cp) {
    switch (cp) {
      case CODE_POINTS.LESS_THAN_SIGN: {
        this.state = State3.RAWTEXT_LESS_THAN_SIGN;
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        this._emitChars(REPLACEMENT_CHARACTER);
        break;
      }
      case CODE_POINTS.EOF: {
        this._emitEOFToken();
        break;
      }
      default: {
        this._emitCodePoint(cp);
      }
    }
  }
  // Script data state
  //------------------------------------------------------------------
  _stateScriptData(cp) {
    switch (cp) {
      case CODE_POINTS.LESS_THAN_SIGN: {
        this.state = State3.SCRIPT_DATA_LESS_THAN_SIGN;
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        this._emitChars(REPLACEMENT_CHARACTER);
        break;
      }
      case CODE_POINTS.EOF: {
        this._emitEOFToken();
        break;
      }
      default: {
        this._emitCodePoint(cp);
      }
    }
  }
  // PLAINTEXT state
  //------------------------------------------------------------------
  _statePlaintext(cp) {
    switch (cp) {
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        this._emitChars(REPLACEMENT_CHARACTER);
        break;
      }
      case CODE_POINTS.EOF: {
        this._emitEOFToken();
        break;
      }
      default: {
        this._emitCodePoint(cp);
      }
    }
  }
  // Tag open state
  //------------------------------------------------------------------
  _stateTagOpen(cp) {
    if (isAsciiLetter(cp)) {
      this._createStartTagToken();
      this.state = State3.TAG_NAME;
      this._stateTagName(cp);
    } else
      switch (cp) {
        case CODE_POINTS.EXCLAMATION_MARK: {
          this.state = State3.MARKUP_DECLARATION_OPEN;
          break;
        }
        case CODE_POINTS.SOLIDUS: {
          this.state = State3.END_TAG_OPEN;
          break;
        }
        case CODE_POINTS.QUESTION_MARK: {
          this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);
          this._createCommentToken(1);
          this.state = State3.BOGUS_COMMENT;
          this._stateBogusComment(cp);
          break;
        }
        case CODE_POINTS.EOF: {
          this._err(ERR.eofBeforeTagName);
          this._emitChars("<");
          this._emitEOFToken();
          break;
        }
        default: {
          this._err(ERR.invalidFirstCharacterOfTagName);
          this._emitChars("<");
          this.state = State3.DATA;
          this._stateData(cp);
        }
      }
  }
  // End tag open state
  //------------------------------------------------------------------
  _stateEndTagOpen(cp) {
    if (isAsciiLetter(cp)) {
      this._createEndTagToken();
      this.state = State3.TAG_NAME;
      this._stateTagName(cp);
    } else
      switch (cp) {
        case CODE_POINTS.GREATER_THAN_SIGN: {
          this._err(ERR.missingEndTagName);
          this.state = State3.DATA;
          break;
        }
        case CODE_POINTS.EOF: {
          this._err(ERR.eofBeforeTagName);
          this._emitChars("</");
          this._emitEOFToken();
          break;
        }
        default: {
          this._err(ERR.invalidFirstCharacterOfTagName);
          this._createCommentToken(2);
          this.state = State3.BOGUS_COMMENT;
          this._stateBogusComment(cp);
        }
      }
  }
  // Tag name state
  //------------------------------------------------------------------
  _stateTagName(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        this.state = State3.BEFORE_ATTRIBUTE_NAME;
        break;
      }
      case CODE_POINTS.SOLIDUS: {
        this.state = State3.SELF_CLOSING_START_TAG;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this.state = State3.DATA;
        this.emitCurrentTagToken();
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        token.tagName += REPLACEMENT_CHARACTER;
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInTag);
        this._emitEOFToken();
        break;
      }
      default: {
        token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);
      }
    }
  }
  // RCDATA less-than sign state
  //------------------------------------------------------------------
  _stateRcdataLessThanSign(cp) {
    if (cp === CODE_POINTS.SOLIDUS) {
      this.state = State3.RCDATA_END_TAG_OPEN;
    } else {
      this._emitChars("<");
      this.state = State3.RCDATA;
      this._stateRcdata(cp);
    }
  }
  // RCDATA end tag open state
  //------------------------------------------------------------------
  _stateRcdataEndTagOpen(cp) {
    if (isAsciiLetter(cp)) {
      this.state = State3.RCDATA_END_TAG_NAME;
      this._stateRcdataEndTagName(cp);
    } else {
      this._emitChars("</");
      this.state = State3.RCDATA;
      this._stateRcdata(cp);
    }
  }
  handleSpecialEndTag(_cp) {
    if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {
      return !this._ensureHibernation();
    }
    this._createEndTagToken();
    const token = this.currentToken;
    token.tagName = this.lastStartTagName;
    const cp = this.preprocessor.peek(this.lastStartTagName.length);
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        this._advanceBy(this.lastStartTagName.length);
        this.state = State3.BEFORE_ATTRIBUTE_NAME;
        return false;
      }
      case CODE_POINTS.SOLIDUS: {
        this._advanceBy(this.lastStartTagName.length);
        this.state = State3.SELF_CLOSING_START_TAG;
        return false;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this._advanceBy(this.lastStartTagName.length);
        this.emitCurrentTagToken();
        this.state = State3.DATA;
        return false;
      }
      default: {
        return !this._ensureHibernation();
      }
    }
  }
  // RCDATA end tag name state
  //------------------------------------------------------------------
  _stateRcdataEndTagName(cp) {
    if (this.handleSpecialEndTag(cp)) {
      this._emitChars("</");
      this.state = State3.RCDATA;
      this._stateRcdata(cp);
    }
  }
  // RAWTEXT less-than sign state
  //------------------------------------------------------------------
  _stateRawtextLessThanSign(cp) {
    if (cp === CODE_POINTS.SOLIDUS) {
      this.state = State3.RAWTEXT_END_TAG_OPEN;
    } else {
      this._emitChars("<");
      this.state = State3.RAWTEXT;
      this._stateRawtext(cp);
    }
  }
  // RAWTEXT end tag open state
  //------------------------------------------------------------------
  _stateRawtextEndTagOpen(cp) {
    if (isAsciiLetter(cp)) {
      this.state = State3.RAWTEXT_END_TAG_NAME;
      this._stateRawtextEndTagName(cp);
    } else {
      this._emitChars("</");
      this.state = State3.RAWTEXT;
      this._stateRawtext(cp);
    }
  }
  // RAWTEXT end tag name state
  //------------------------------------------------------------------
  _stateRawtextEndTagName(cp) {
    if (this.handleSpecialEndTag(cp)) {
      this._emitChars("</");
      this.state = State3.RAWTEXT;
      this._stateRawtext(cp);
    }
  }
  // Script data less-than sign state
  //------------------------------------------------------------------
  _stateScriptDataLessThanSign(cp) {
    switch (cp) {
      case CODE_POINTS.SOLIDUS: {
        this.state = State3.SCRIPT_DATA_END_TAG_OPEN;
        break;
      }
      case CODE_POINTS.EXCLAMATION_MARK: {
        this.state = State3.SCRIPT_DATA_ESCAPE_START;
        this._emitChars("<!");
        break;
      }
      default: {
        this._emitChars("<");
        this.state = State3.SCRIPT_DATA;
        this._stateScriptData(cp);
      }
    }
  }
  // Script data end tag open state
  //------------------------------------------------------------------
  _stateScriptDataEndTagOpen(cp) {
    if (isAsciiLetter(cp)) {
      this.state = State3.SCRIPT_DATA_END_TAG_NAME;
      this._stateScriptDataEndTagName(cp);
    } else {
      this._emitChars("</");
      this.state = State3.SCRIPT_DATA;
      this._stateScriptData(cp);
    }
  }
  // Script data end tag name state
  //------------------------------------------------------------------
  _stateScriptDataEndTagName(cp) {
    if (this.handleSpecialEndTag(cp)) {
      this._emitChars("</");
      this.state = State3.SCRIPT_DATA;
      this._stateScriptData(cp);
    }
  }
  // Script data escape start state
  //------------------------------------------------------------------
  _stateScriptDataEscapeStart(cp) {
    if (cp === CODE_POINTS.HYPHEN_MINUS) {
      this.state = State3.SCRIPT_DATA_ESCAPE_START_DASH;
      this._emitChars("-");
    } else {
      this.state = State3.SCRIPT_DATA;
      this._stateScriptData(cp);
    }
  }
  // Script data escape start dash state
  //------------------------------------------------------------------
  _stateScriptDataEscapeStartDash(cp) {
    if (cp === CODE_POINTS.HYPHEN_MINUS) {
      this.state = State3.SCRIPT_DATA_ESCAPED_DASH_DASH;
      this._emitChars("-");
    } else {
      this.state = State3.SCRIPT_DATA;
      this._stateScriptData(cp);
    }
  }
  // Script data escaped state
  //------------------------------------------------------------------
  _stateScriptDataEscaped(cp) {
    switch (cp) {
      case CODE_POINTS.HYPHEN_MINUS: {
        this.state = State3.SCRIPT_DATA_ESCAPED_DASH;
        this._emitChars("-");
        break;
      }
      case CODE_POINTS.LESS_THAN_SIGN: {
        this.state = State3.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        this._emitChars(REPLACEMENT_CHARACTER);
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInScriptHtmlCommentLikeText);
        this._emitEOFToken();
        break;
      }
      default: {
        this._emitCodePoint(cp);
      }
    }
  }
  // Script data escaped dash state
  //------------------------------------------------------------------
  _stateScriptDataEscapedDash(cp) {
    switch (cp) {
      case CODE_POINTS.HYPHEN_MINUS: {
        this.state = State3.SCRIPT_DATA_ESCAPED_DASH_DASH;
        this._emitChars("-");
        break;
      }
      case CODE_POINTS.LESS_THAN_SIGN: {
        this.state = State3.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        this.state = State3.SCRIPT_DATA_ESCAPED;
        this._emitChars(REPLACEMENT_CHARACTER);
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInScriptHtmlCommentLikeText);
        this._emitEOFToken();
        break;
      }
      default: {
        this.state = State3.SCRIPT_DATA_ESCAPED;
        this._emitCodePoint(cp);
      }
    }
  }
  // Script data escaped dash dash state
  //------------------------------------------------------------------
  _stateScriptDataEscapedDashDash(cp) {
    switch (cp) {
      case CODE_POINTS.HYPHEN_MINUS: {
        this._emitChars("-");
        break;
      }
      case CODE_POINTS.LESS_THAN_SIGN: {
        this.state = State3.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this.state = State3.SCRIPT_DATA;
        this._emitChars(">");
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        this.state = State3.SCRIPT_DATA_ESCAPED;
        this._emitChars(REPLACEMENT_CHARACTER);
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInScriptHtmlCommentLikeText);
        this._emitEOFToken();
        break;
      }
      default: {
        this.state = State3.SCRIPT_DATA_ESCAPED;
        this._emitCodePoint(cp);
      }
    }
  }
  // Script data escaped less-than sign state
  //------------------------------------------------------------------
  _stateScriptDataEscapedLessThanSign(cp) {
    if (cp === CODE_POINTS.SOLIDUS) {
      this.state = State3.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;
    } else if (isAsciiLetter(cp)) {
      this._emitChars("<");
      this.state = State3.SCRIPT_DATA_DOUBLE_ESCAPE_START;
      this._stateScriptDataDoubleEscapeStart(cp);
    } else {
      this._emitChars("<");
      this.state = State3.SCRIPT_DATA_ESCAPED;
      this._stateScriptDataEscaped(cp);
    }
  }
  // Script data escaped end tag open state
  //------------------------------------------------------------------
  _stateScriptDataEscapedEndTagOpen(cp) {
    if (isAsciiLetter(cp)) {
      this.state = State3.SCRIPT_DATA_ESCAPED_END_TAG_NAME;
      this._stateScriptDataEscapedEndTagName(cp);
    } else {
      this._emitChars("</");
      this.state = State3.SCRIPT_DATA_ESCAPED;
      this._stateScriptDataEscaped(cp);
    }
  }
  // Script data escaped end tag name state
  //------------------------------------------------------------------
  _stateScriptDataEscapedEndTagName(cp) {
    if (this.handleSpecialEndTag(cp)) {
      this._emitChars("</");
      this.state = State3.SCRIPT_DATA_ESCAPED;
      this._stateScriptDataEscaped(cp);
    }
  }
  // Script data double escape start state
  //------------------------------------------------------------------
  _stateScriptDataDoubleEscapeStart(cp) {
    if (this.preprocessor.startsWith(SEQUENCES.SCRIPT, false) && isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(SEQUENCES.SCRIPT.length))) {
      this._emitCodePoint(cp);
      for (let i2 = 0; i2 < SEQUENCES.SCRIPT.length; i2++) {
        this._emitCodePoint(this._consume());
      }
      this.state = State3.SCRIPT_DATA_DOUBLE_ESCAPED;
    } else if (!this._ensureHibernation()) {
      this.state = State3.SCRIPT_DATA_ESCAPED;
      this._stateScriptDataEscaped(cp);
    }
  }
  // Script data double escaped state
  //------------------------------------------------------------------
  _stateScriptDataDoubleEscaped(cp) {
    switch (cp) {
      case CODE_POINTS.HYPHEN_MINUS: {
        this.state = State3.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;
        this._emitChars("-");
        break;
      }
      case CODE_POINTS.LESS_THAN_SIGN: {
        this.state = State3.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;
        this._emitChars("<");
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        this._emitChars(REPLACEMENT_CHARACTER);
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInScriptHtmlCommentLikeText);
        this._emitEOFToken();
        break;
      }
      default: {
        this._emitCodePoint(cp);
      }
    }
  }
  // Script data double escaped dash state
  //------------------------------------------------------------------
  _stateScriptDataDoubleEscapedDash(cp) {
    switch (cp) {
      case CODE_POINTS.HYPHEN_MINUS: {
        this.state = State3.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;
        this._emitChars("-");
        break;
      }
      case CODE_POINTS.LESS_THAN_SIGN: {
        this.state = State3.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;
        this._emitChars("<");
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        this.state = State3.SCRIPT_DATA_DOUBLE_ESCAPED;
        this._emitChars(REPLACEMENT_CHARACTER);
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInScriptHtmlCommentLikeText);
        this._emitEOFToken();
        break;
      }
      default: {
        this.state = State3.SCRIPT_DATA_DOUBLE_ESCAPED;
        this._emitCodePoint(cp);
      }
    }
  }
  // Script data double escaped dash dash state
  //------------------------------------------------------------------
  _stateScriptDataDoubleEscapedDashDash(cp) {
    switch (cp) {
      case CODE_POINTS.HYPHEN_MINUS: {
        this._emitChars("-");
        break;
      }
      case CODE_POINTS.LESS_THAN_SIGN: {
        this.state = State3.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;
        this._emitChars("<");
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this.state = State3.SCRIPT_DATA;
        this._emitChars(">");
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        this.state = State3.SCRIPT_DATA_DOUBLE_ESCAPED;
        this._emitChars(REPLACEMENT_CHARACTER);
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInScriptHtmlCommentLikeText);
        this._emitEOFToken();
        break;
      }
      default: {
        this.state = State3.SCRIPT_DATA_DOUBLE_ESCAPED;
        this._emitCodePoint(cp);
      }
    }
  }
  // Script data double escaped less-than sign state
  //------------------------------------------------------------------
  _stateScriptDataDoubleEscapedLessThanSign(cp) {
    if (cp === CODE_POINTS.SOLIDUS) {
      this.state = State3.SCRIPT_DATA_DOUBLE_ESCAPE_END;
      this._emitChars("/");
    } else {
      this.state = State3.SCRIPT_DATA_DOUBLE_ESCAPED;
      this._stateScriptDataDoubleEscaped(cp);
    }
  }
  // Script data double escape end state
  //------------------------------------------------------------------
  _stateScriptDataDoubleEscapeEnd(cp) {
    if (this.preprocessor.startsWith(SEQUENCES.SCRIPT, false) && isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(SEQUENCES.SCRIPT.length))) {
      this._emitCodePoint(cp);
      for (let i2 = 0; i2 < SEQUENCES.SCRIPT.length; i2++) {
        this._emitCodePoint(this._consume());
      }
      this.state = State3.SCRIPT_DATA_ESCAPED;
    } else if (!this._ensureHibernation()) {
      this.state = State3.SCRIPT_DATA_DOUBLE_ESCAPED;
      this._stateScriptDataDoubleEscaped(cp);
    }
  }
  // Before attribute name state
  //------------------------------------------------------------------
  _stateBeforeAttributeName(cp) {
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        break;
      }
      case CODE_POINTS.SOLIDUS:
      case CODE_POINTS.GREATER_THAN_SIGN:
      case CODE_POINTS.EOF: {
        this.state = State3.AFTER_ATTRIBUTE_NAME;
        this._stateAfterAttributeName(cp);
        break;
      }
      case CODE_POINTS.EQUALS_SIGN: {
        this._err(ERR.unexpectedEqualsSignBeforeAttributeName);
        this._createAttr("=");
        this.state = State3.ATTRIBUTE_NAME;
        break;
      }
      default: {
        this._createAttr("");
        this.state = State3.ATTRIBUTE_NAME;
        this._stateAttributeName(cp);
      }
    }
  }
  // Attribute name state
  //------------------------------------------------------------------
  _stateAttributeName(cp) {
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED:
      case CODE_POINTS.SOLIDUS:
      case CODE_POINTS.GREATER_THAN_SIGN:
      case CODE_POINTS.EOF: {
        this._leaveAttrName();
        this.state = State3.AFTER_ATTRIBUTE_NAME;
        this._stateAfterAttributeName(cp);
        break;
      }
      case CODE_POINTS.EQUALS_SIGN: {
        this._leaveAttrName();
        this.state = State3.BEFORE_ATTRIBUTE_VALUE;
        break;
      }
      case CODE_POINTS.QUOTATION_MARK:
      case CODE_POINTS.APOSTROPHE:
      case CODE_POINTS.LESS_THAN_SIGN: {
        this._err(ERR.unexpectedCharacterInAttributeName);
        this.currentAttr.name += String.fromCodePoint(cp);
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        this.currentAttr.name += REPLACEMENT_CHARACTER;
        break;
      }
      default: {
        this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);
      }
    }
  }
  // After attribute name state
  //------------------------------------------------------------------
  _stateAfterAttributeName(cp) {
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        break;
      }
      case CODE_POINTS.SOLIDUS: {
        this.state = State3.SELF_CLOSING_START_TAG;
        break;
      }
      case CODE_POINTS.EQUALS_SIGN: {
        this.state = State3.BEFORE_ATTRIBUTE_VALUE;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this.state = State3.DATA;
        this.emitCurrentTagToken();
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInTag);
        this._emitEOFToken();
        break;
      }
      default: {
        this._createAttr("");
        this.state = State3.ATTRIBUTE_NAME;
        this._stateAttributeName(cp);
      }
    }
  }
  // Before attribute value state
  //------------------------------------------------------------------
  _stateBeforeAttributeValue(cp) {
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        break;
      }
      case CODE_POINTS.QUOTATION_MARK: {
        this.state = State3.ATTRIBUTE_VALUE_DOUBLE_QUOTED;
        break;
      }
      case CODE_POINTS.APOSTROPHE: {
        this.state = State3.ATTRIBUTE_VALUE_SINGLE_QUOTED;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this._err(ERR.missingAttributeValue);
        this.state = State3.DATA;
        this.emitCurrentTagToken();
        break;
      }
      default: {
        this.state = State3.ATTRIBUTE_VALUE_UNQUOTED;
        this._stateAttributeValueUnquoted(cp);
      }
    }
  }
  // Attribute value (double-quoted) state
  //------------------------------------------------------------------
  _stateAttributeValueDoubleQuoted(cp) {
    switch (cp) {
      case CODE_POINTS.QUOTATION_MARK: {
        this.state = State3.AFTER_ATTRIBUTE_VALUE_QUOTED;
        break;
      }
      case CODE_POINTS.AMPERSAND: {
        this.returnState = State3.ATTRIBUTE_VALUE_DOUBLE_QUOTED;
        this.state = State3.CHARACTER_REFERENCE;
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        this.currentAttr.value += REPLACEMENT_CHARACTER;
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInTag);
        this._emitEOFToken();
        break;
      }
      default: {
        this.currentAttr.value += String.fromCodePoint(cp);
      }
    }
  }
  // Attribute value (single-quoted) state
  //------------------------------------------------------------------
  _stateAttributeValueSingleQuoted(cp) {
    switch (cp) {
      case CODE_POINTS.APOSTROPHE: {
        this.state = State3.AFTER_ATTRIBUTE_VALUE_QUOTED;
        break;
      }
      case CODE_POINTS.AMPERSAND: {
        this.returnState = State3.ATTRIBUTE_VALUE_SINGLE_QUOTED;
        this.state = State3.CHARACTER_REFERENCE;
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        this.currentAttr.value += REPLACEMENT_CHARACTER;
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInTag);
        this._emitEOFToken();
        break;
      }
      default: {
        this.currentAttr.value += String.fromCodePoint(cp);
      }
    }
  }
  // Attribute value (unquoted) state
  //------------------------------------------------------------------
  _stateAttributeValueUnquoted(cp) {
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        this._leaveAttrValue();
        this.state = State3.BEFORE_ATTRIBUTE_NAME;
        break;
      }
      case CODE_POINTS.AMPERSAND: {
        this.returnState = State3.ATTRIBUTE_VALUE_UNQUOTED;
        this.state = State3.CHARACTER_REFERENCE;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this._leaveAttrValue();
        this.state = State3.DATA;
        this.emitCurrentTagToken();
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        this.currentAttr.value += REPLACEMENT_CHARACTER;
        break;
      }
      case CODE_POINTS.QUOTATION_MARK:
      case CODE_POINTS.APOSTROPHE:
      case CODE_POINTS.LESS_THAN_SIGN:
      case CODE_POINTS.EQUALS_SIGN:
      case CODE_POINTS.GRAVE_ACCENT: {
        this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);
        this.currentAttr.value += String.fromCodePoint(cp);
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInTag);
        this._emitEOFToken();
        break;
      }
      default: {
        this.currentAttr.value += String.fromCodePoint(cp);
      }
    }
  }
  // After attribute value (quoted) state
  //------------------------------------------------------------------
  _stateAfterAttributeValueQuoted(cp) {
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        this._leaveAttrValue();
        this.state = State3.BEFORE_ATTRIBUTE_NAME;
        break;
      }
      case CODE_POINTS.SOLIDUS: {
        this._leaveAttrValue();
        this.state = State3.SELF_CLOSING_START_TAG;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this._leaveAttrValue();
        this.state = State3.DATA;
        this.emitCurrentTagToken();
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInTag);
        this._emitEOFToken();
        break;
      }
      default: {
        this._err(ERR.missingWhitespaceBetweenAttributes);
        this.state = State3.BEFORE_ATTRIBUTE_NAME;
        this._stateBeforeAttributeName(cp);
      }
    }
  }
  // Self-closing start tag state
  //------------------------------------------------------------------
  _stateSelfClosingStartTag(cp) {
    switch (cp) {
      case CODE_POINTS.GREATER_THAN_SIGN: {
        const token = this.currentToken;
        token.selfClosing = true;
        this.state = State3.DATA;
        this.emitCurrentTagToken();
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInTag);
        this._emitEOFToken();
        break;
      }
      default: {
        this._err(ERR.unexpectedSolidusInTag);
        this.state = State3.BEFORE_ATTRIBUTE_NAME;
        this._stateBeforeAttributeName(cp);
      }
    }
  }
  // Bogus comment state
  //------------------------------------------------------------------
  _stateBogusComment(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this.state = State3.DATA;
        this.emitCurrentComment(token);
        break;
      }
      case CODE_POINTS.EOF: {
        this.emitCurrentComment(token);
        this._emitEOFToken();
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        token.data += REPLACEMENT_CHARACTER;
        break;
      }
      default: {
        token.data += String.fromCodePoint(cp);
      }
    }
  }
  // Markup declaration open state
  //------------------------------------------------------------------
  _stateMarkupDeclarationOpen(cp) {
    if (this._consumeSequenceIfMatch(SEQUENCES.DASH_DASH, true)) {
      this._createCommentToken(SEQUENCES.DASH_DASH.length + 1);
      this.state = State3.COMMENT_START;
    } else if (this._consumeSequenceIfMatch(SEQUENCES.DOCTYPE, false)) {
      this.currentLocation = this.getCurrentLocation(SEQUENCES.DOCTYPE.length + 1);
      this.state = State3.DOCTYPE;
    } else if (this._consumeSequenceIfMatch(SEQUENCES.CDATA_START, true)) {
      if (this.inForeignNode) {
        this.state = State3.CDATA_SECTION;
      } else {
        this._err(ERR.cdataInHtmlContent);
        this._createCommentToken(SEQUENCES.CDATA_START.length + 1);
        this.currentToken.data = "[CDATA[";
        this.state = State3.BOGUS_COMMENT;
      }
    } else if (!this._ensureHibernation()) {
      this._err(ERR.incorrectlyOpenedComment);
      this._createCommentToken(2);
      this.state = State3.BOGUS_COMMENT;
      this._stateBogusComment(cp);
    }
  }
  // Comment start state
  //------------------------------------------------------------------
  _stateCommentStart(cp) {
    switch (cp) {
      case CODE_POINTS.HYPHEN_MINUS: {
        this.state = State3.COMMENT_START_DASH;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this._err(ERR.abruptClosingOfEmptyComment);
        this.state = State3.DATA;
        const token = this.currentToken;
        this.emitCurrentComment(token);
        break;
      }
      default: {
        this.state = State3.COMMENT;
        this._stateComment(cp);
      }
    }
  }
  // Comment start dash state
  //------------------------------------------------------------------
  _stateCommentStartDash(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.HYPHEN_MINUS: {
        this.state = State3.COMMENT_END;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this._err(ERR.abruptClosingOfEmptyComment);
        this.state = State3.DATA;
        this.emitCurrentComment(token);
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInComment);
        this.emitCurrentComment(token);
        this._emitEOFToken();
        break;
      }
      default: {
        token.data += "-";
        this.state = State3.COMMENT;
        this._stateComment(cp);
      }
    }
  }
  // Comment state
  //------------------------------------------------------------------
  _stateComment(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.HYPHEN_MINUS: {
        this.state = State3.COMMENT_END_DASH;
        break;
      }
      case CODE_POINTS.LESS_THAN_SIGN: {
        token.data += "<";
        this.state = State3.COMMENT_LESS_THAN_SIGN;
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        token.data += REPLACEMENT_CHARACTER;
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInComment);
        this.emitCurrentComment(token);
        this._emitEOFToken();
        break;
      }
      default: {
        token.data += String.fromCodePoint(cp);
      }
    }
  }
  // Comment less-than sign state
  //------------------------------------------------------------------
  _stateCommentLessThanSign(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.EXCLAMATION_MARK: {
        token.data += "!";
        this.state = State3.COMMENT_LESS_THAN_SIGN_BANG;
        break;
      }
      case CODE_POINTS.LESS_THAN_SIGN: {
        token.data += "<";
        break;
      }
      default: {
        this.state = State3.COMMENT;
        this._stateComment(cp);
      }
    }
  }
  // Comment less-than sign bang state
  //------------------------------------------------------------------
  _stateCommentLessThanSignBang(cp) {
    if (cp === CODE_POINTS.HYPHEN_MINUS) {
      this.state = State3.COMMENT_LESS_THAN_SIGN_BANG_DASH;
    } else {
      this.state = State3.COMMENT;
      this._stateComment(cp);
    }
  }
  // Comment less-than sign bang dash state
  //------------------------------------------------------------------
  _stateCommentLessThanSignBangDash(cp) {
    if (cp === CODE_POINTS.HYPHEN_MINUS) {
      this.state = State3.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;
    } else {
      this.state = State3.COMMENT_END_DASH;
      this._stateCommentEndDash(cp);
    }
  }
  // Comment less-than sign bang dash dash state
  //------------------------------------------------------------------
  _stateCommentLessThanSignBangDashDash(cp) {
    if (cp !== CODE_POINTS.GREATER_THAN_SIGN && cp !== CODE_POINTS.EOF) {
      this._err(ERR.nestedComment);
    }
    this.state = State3.COMMENT_END;
    this._stateCommentEnd(cp);
  }
  // Comment end dash state
  //------------------------------------------------------------------
  _stateCommentEndDash(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.HYPHEN_MINUS: {
        this.state = State3.COMMENT_END;
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInComment);
        this.emitCurrentComment(token);
        this._emitEOFToken();
        break;
      }
      default: {
        token.data += "-";
        this.state = State3.COMMENT;
        this._stateComment(cp);
      }
    }
  }
  // Comment end state
  //------------------------------------------------------------------
  _stateCommentEnd(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this.state = State3.DATA;
        this.emitCurrentComment(token);
        break;
      }
      case CODE_POINTS.EXCLAMATION_MARK: {
        this.state = State3.COMMENT_END_BANG;
        break;
      }
      case CODE_POINTS.HYPHEN_MINUS: {
        token.data += "-";
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInComment);
        this.emitCurrentComment(token);
        this._emitEOFToken();
        break;
      }
      default: {
        token.data += "--";
        this.state = State3.COMMENT;
        this._stateComment(cp);
      }
    }
  }
  // Comment end bang state
  //------------------------------------------------------------------
  _stateCommentEndBang(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.HYPHEN_MINUS: {
        token.data += "--!";
        this.state = State3.COMMENT_END_DASH;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this._err(ERR.incorrectlyClosedComment);
        this.state = State3.DATA;
        this.emitCurrentComment(token);
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInComment);
        this.emitCurrentComment(token);
        this._emitEOFToken();
        break;
      }
      default: {
        token.data += "--!";
        this.state = State3.COMMENT;
        this._stateComment(cp);
      }
    }
  }
  // DOCTYPE state
  //------------------------------------------------------------------
  _stateDoctype(cp) {
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        this.state = State3.BEFORE_DOCTYPE_NAME;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this.state = State3.BEFORE_DOCTYPE_NAME;
        this._stateBeforeDoctypeName(cp);
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInDoctype);
        this._createDoctypeToken(null);
        const token = this.currentToken;
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this._emitEOFToken();
        break;
      }
      default: {
        this._err(ERR.missingWhitespaceBeforeDoctypeName);
        this.state = State3.BEFORE_DOCTYPE_NAME;
        this._stateBeforeDoctypeName(cp);
      }
    }
  }
  // Before DOCTYPE name state
  //------------------------------------------------------------------
  _stateBeforeDoctypeName(cp) {
    if (isAsciiUpper(cp)) {
      this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));
      this.state = State3.DOCTYPE_NAME;
    } else
      switch (cp) {
        case CODE_POINTS.SPACE:
        case CODE_POINTS.LINE_FEED:
        case CODE_POINTS.TABULATION:
        case CODE_POINTS.FORM_FEED: {
          break;
        }
        case CODE_POINTS.NULL: {
          this._err(ERR.unexpectedNullCharacter);
          this._createDoctypeToken(REPLACEMENT_CHARACTER);
          this.state = State3.DOCTYPE_NAME;
          break;
        }
        case CODE_POINTS.GREATER_THAN_SIGN: {
          this._err(ERR.missingDoctypeName);
          this._createDoctypeToken(null);
          const token = this.currentToken;
          token.forceQuirks = true;
          this.emitCurrentDoctype(token);
          this.state = State3.DATA;
          break;
        }
        case CODE_POINTS.EOF: {
          this._err(ERR.eofInDoctype);
          this._createDoctypeToken(null);
          const token = this.currentToken;
          token.forceQuirks = true;
          this.emitCurrentDoctype(token);
          this._emitEOFToken();
          break;
        }
        default: {
          this._createDoctypeToken(String.fromCodePoint(cp));
          this.state = State3.DOCTYPE_NAME;
        }
      }
  }
  // DOCTYPE name state
  //------------------------------------------------------------------
  _stateDoctypeName(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        this.state = State3.AFTER_DOCTYPE_NAME;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this.state = State3.DATA;
        this.emitCurrentDoctype(token);
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        token.name += REPLACEMENT_CHARACTER;
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInDoctype);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this._emitEOFToken();
        break;
      }
      default: {
        token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);
      }
    }
  }
  // After DOCTYPE name state
  //------------------------------------------------------------------
  _stateAfterDoctypeName(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this.state = State3.DATA;
        this.emitCurrentDoctype(token);
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInDoctype);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this._emitEOFToken();
        break;
      }
      default: {
        if (this._consumeSequenceIfMatch(SEQUENCES.PUBLIC, false)) {
          this.state = State3.AFTER_DOCTYPE_PUBLIC_KEYWORD;
        } else if (this._consumeSequenceIfMatch(SEQUENCES.SYSTEM, false)) {
          this.state = State3.AFTER_DOCTYPE_SYSTEM_KEYWORD;
        } else if (!this._ensureHibernation()) {
          this._err(ERR.invalidCharacterSequenceAfterDoctypeName);
          token.forceQuirks = true;
          this.state = State3.BOGUS_DOCTYPE;
          this._stateBogusDoctype(cp);
        }
      }
    }
  }
  // After DOCTYPE public keyword state
  //------------------------------------------------------------------
  _stateAfterDoctypePublicKeyword(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        this.state = State3.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;
        break;
      }
      case CODE_POINTS.QUOTATION_MARK: {
        this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);
        token.publicId = "";
        this.state = State3.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;
        break;
      }
      case CODE_POINTS.APOSTROPHE: {
        this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);
        token.publicId = "";
        this.state = State3.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this._err(ERR.missingDoctypePublicIdentifier);
        token.forceQuirks = true;
        this.state = State3.DATA;
        this.emitCurrentDoctype(token);
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInDoctype);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this._emitEOFToken();
        break;
      }
      default: {
        this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);
        token.forceQuirks = true;
        this.state = State3.BOGUS_DOCTYPE;
        this._stateBogusDoctype(cp);
      }
    }
  }
  // Before DOCTYPE public identifier state
  //------------------------------------------------------------------
  _stateBeforeDoctypePublicIdentifier(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        break;
      }
      case CODE_POINTS.QUOTATION_MARK: {
        token.publicId = "";
        this.state = State3.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;
        break;
      }
      case CODE_POINTS.APOSTROPHE: {
        token.publicId = "";
        this.state = State3.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this._err(ERR.missingDoctypePublicIdentifier);
        token.forceQuirks = true;
        this.state = State3.DATA;
        this.emitCurrentDoctype(token);
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInDoctype);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this._emitEOFToken();
        break;
      }
      default: {
        this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);
        token.forceQuirks = true;
        this.state = State3.BOGUS_DOCTYPE;
        this._stateBogusDoctype(cp);
      }
    }
  }
  // DOCTYPE public identifier (double-quoted) state
  //------------------------------------------------------------------
  _stateDoctypePublicIdentifierDoubleQuoted(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.QUOTATION_MARK: {
        this.state = State3.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        token.publicId += REPLACEMENT_CHARACTER;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this._err(ERR.abruptDoctypePublicIdentifier);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this.state = State3.DATA;
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInDoctype);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this._emitEOFToken();
        break;
      }
      default: {
        token.publicId += String.fromCodePoint(cp);
      }
    }
  }
  // DOCTYPE public identifier (single-quoted) state
  //------------------------------------------------------------------
  _stateDoctypePublicIdentifierSingleQuoted(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.APOSTROPHE: {
        this.state = State3.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        token.publicId += REPLACEMENT_CHARACTER;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this._err(ERR.abruptDoctypePublicIdentifier);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this.state = State3.DATA;
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInDoctype);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this._emitEOFToken();
        break;
      }
      default: {
        token.publicId += String.fromCodePoint(cp);
      }
    }
  }
  // After DOCTYPE public identifier state
  //------------------------------------------------------------------
  _stateAfterDoctypePublicIdentifier(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        this.state = State3.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this.state = State3.DATA;
        this.emitCurrentDoctype(token);
        break;
      }
      case CODE_POINTS.QUOTATION_MARK: {
        this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);
        token.systemId = "";
        this.state = State3.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;
        break;
      }
      case CODE_POINTS.APOSTROPHE: {
        this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);
        token.systemId = "";
        this.state = State3.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInDoctype);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this._emitEOFToken();
        break;
      }
      default: {
        this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);
        token.forceQuirks = true;
        this.state = State3.BOGUS_DOCTYPE;
        this._stateBogusDoctype(cp);
      }
    }
  }
  // Between DOCTYPE public and system identifiers state
  //------------------------------------------------------------------
  _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this.emitCurrentDoctype(token);
        this.state = State3.DATA;
        break;
      }
      case CODE_POINTS.QUOTATION_MARK: {
        token.systemId = "";
        this.state = State3.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;
        break;
      }
      case CODE_POINTS.APOSTROPHE: {
        token.systemId = "";
        this.state = State3.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInDoctype);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this._emitEOFToken();
        break;
      }
      default: {
        this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);
        token.forceQuirks = true;
        this.state = State3.BOGUS_DOCTYPE;
        this._stateBogusDoctype(cp);
      }
    }
  }
  // After DOCTYPE system keyword state
  //------------------------------------------------------------------
  _stateAfterDoctypeSystemKeyword(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        this.state = State3.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;
        break;
      }
      case CODE_POINTS.QUOTATION_MARK: {
        this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);
        token.systemId = "";
        this.state = State3.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;
        break;
      }
      case CODE_POINTS.APOSTROPHE: {
        this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);
        token.systemId = "";
        this.state = State3.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this._err(ERR.missingDoctypeSystemIdentifier);
        token.forceQuirks = true;
        this.state = State3.DATA;
        this.emitCurrentDoctype(token);
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInDoctype);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this._emitEOFToken();
        break;
      }
      default: {
        this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);
        token.forceQuirks = true;
        this.state = State3.BOGUS_DOCTYPE;
        this._stateBogusDoctype(cp);
      }
    }
  }
  // Before DOCTYPE system identifier state
  //------------------------------------------------------------------
  _stateBeforeDoctypeSystemIdentifier(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        break;
      }
      case CODE_POINTS.QUOTATION_MARK: {
        token.systemId = "";
        this.state = State3.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;
        break;
      }
      case CODE_POINTS.APOSTROPHE: {
        token.systemId = "";
        this.state = State3.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this._err(ERR.missingDoctypeSystemIdentifier);
        token.forceQuirks = true;
        this.state = State3.DATA;
        this.emitCurrentDoctype(token);
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInDoctype);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this._emitEOFToken();
        break;
      }
      default: {
        this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);
        token.forceQuirks = true;
        this.state = State3.BOGUS_DOCTYPE;
        this._stateBogusDoctype(cp);
      }
    }
  }
  // DOCTYPE system identifier (double-quoted) state
  //------------------------------------------------------------------
  _stateDoctypeSystemIdentifierDoubleQuoted(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.QUOTATION_MARK: {
        this.state = State3.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        token.systemId += REPLACEMENT_CHARACTER;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this._err(ERR.abruptDoctypeSystemIdentifier);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this.state = State3.DATA;
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInDoctype);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this._emitEOFToken();
        break;
      }
      default: {
        token.systemId += String.fromCodePoint(cp);
      }
    }
  }
  // DOCTYPE system identifier (single-quoted) state
  //------------------------------------------------------------------
  _stateDoctypeSystemIdentifierSingleQuoted(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.APOSTROPHE: {
        this.state = State3.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        token.systemId += REPLACEMENT_CHARACTER;
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this._err(ERR.abruptDoctypeSystemIdentifier);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this.state = State3.DATA;
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInDoctype);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this._emitEOFToken();
        break;
      }
      default: {
        token.systemId += String.fromCodePoint(cp);
      }
    }
  }
  // After DOCTYPE system identifier state
  //------------------------------------------------------------------
  _stateAfterDoctypeSystemIdentifier(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.SPACE:
      case CODE_POINTS.LINE_FEED:
      case CODE_POINTS.TABULATION:
      case CODE_POINTS.FORM_FEED: {
        break;
      }
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this.emitCurrentDoctype(token);
        this.state = State3.DATA;
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInDoctype);
        token.forceQuirks = true;
        this.emitCurrentDoctype(token);
        this._emitEOFToken();
        break;
      }
      default: {
        this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);
        this.state = State3.BOGUS_DOCTYPE;
        this._stateBogusDoctype(cp);
      }
    }
  }
  // Bogus DOCTYPE state
  //------------------------------------------------------------------
  _stateBogusDoctype(cp) {
    const token = this.currentToken;
    switch (cp) {
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this.emitCurrentDoctype(token);
        this.state = State3.DATA;
        break;
      }
      case CODE_POINTS.NULL: {
        this._err(ERR.unexpectedNullCharacter);
        break;
      }
      case CODE_POINTS.EOF: {
        this.emitCurrentDoctype(token);
        this._emitEOFToken();
        break;
      }
      default:
    }
  }
  // CDATA section state
  //------------------------------------------------------------------
  _stateCdataSection(cp) {
    switch (cp) {
      case CODE_POINTS.RIGHT_SQUARE_BRACKET: {
        this.state = State3.CDATA_SECTION_BRACKET;
        break;
      }
      case CODE_POINTS.EOF: {
        this._err(ERR.eofInCdata);
        this._emitEOFToken();
        break;
      }
      default: {
        this._emitCodePoint(cp);
      }
    }
  }
  // CDATA section bracket state
  //------------------------------------------------------------------
  _stateCdataSectionBracket(cp) {
    if (cp === CODE_POINTS.RIGHT_SQUARE_BRACKET) {
      this.state = State3.CDATA_SECTION_END;
    } else {
      this._emitChars("]");
      this.state = State3.CDATA_SECTION;
      this._stateCdataSection(cp);
    }
  }
  // CDATA section end state
  //------------------------------------------------------------------
  _stateCdataSectionEnd(cp) {
    switch (cp) {
      case CODE_POINTS.GREATER_THAN_SIGN: {
        this.state = State3.DATA;
        break;
      }
      case CODE_POINTS.RIGHT_SQUARE_BRACKET: {
        this._emitChars("]");
        break;
      }
      default: {
        this._emitChars("]]");
        this.state = State3.CDATA_SECTION;
        this._stateCdataSection(cp);
      }
    }
  }
  // Character reference state
  //------------------------------------------------------------------
  _stateCharacterReference(cp) {
    if (cp === CODE_POINTS.NUMBER_SIGN) {
      this.state = State3.NUMERIC_CHARACTER_REFERENCE;
    } else if (isAsciiAlphaNumeric2(cp)) {
      this.state = State3.NAMED_CHARACTER_REFERENCE;
      this._stateNamedCharacterReference(cp);
    } else {
      this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);
      this._reconsumeInState(this.returnState, cp);
    }
  }
  // Named character reference state
  //------------------------------------------------------------------
  _stateNamedCharacterReference(cp) {
    const matchResult = this._matchNamedCharacterReference(cp);
    if (this._ensureHibernation()) {
    } else if (matchResult) {
      for (let i2 = 0; i2 < matchResult.length; i2++) {
        this._flushCodePointConsumedAsCharacterReference(matchResult[i2]);
      }
      this.state = this.returnState;
    } else {
      this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);
      this.state = State3.AMBIGUOUS_AMPERSAND;
    }
  }
  // Ambiguos ampersand state
  //------------------------------------------------------------------
  _stateAmbiguousAmpersand(cp) {
    if (isAsciiAlphaNumeric2(cp)) {
      this._flushCodePointConsumedAsCharacterReference(cp);
    } else {
      if (cp === CODE_POINTS.SEMICOLON) {
        this._err(ERR.unknownNamedCharacterReference);
      }
      this._reconsumeInState(this.returnState, cp);
    }
  }
  // Numeric character reference state
  //------------------------------------------------------------------
  _stateNumericCharacterReference(cp) {
    this.charRefCode = 0;
    if (cp === CODE_POINTS.LATIN_SMALL_X || cp === CODE_POINTS.LATIN_CAPITAL_X) {
      this.state = State3.HEXADEMICAL_CHARACTER_REFERENCE_START;
    } else if (isAsciiDigit(cp)) {
      this.state = State3.DECIMAL_CHARACTER_REFERENCE;
      this._stateDecimalCharacterReference(cp);
    } else {
      this._err(ERR.absenceOfDigitsInNumericCharacterReference);
      this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);
      this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.NUMBER_SIGN);
      this._reconsumeInState(this.returnState, cp);
    }
  }
  // Hexademical character reference start state
  //------------------------------------------------------------------
  _stateHexademicalCharacterReferenceStart(cp) {
    if (isAsciiHexDigit(cp)) {
      this.state = State3.HEXADEMICAL_CHARACTER_REFERENCE;
      this._stateHexademicalCharacterReference(cp);
    } else {
      this._err(ERR.absenceOfDigitsInNumericCharacterReference);
      this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);
      this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.NUMBER_SIGN);
      this._unconsume(2);
      this.state = this.returnState;
    }
  }
  // Hexademical character reference state
  //------------------------------------------------------------------
  _stateHexademicalCharacterReference(cp) {
    if (isAsciiUpperHexDigit(cp)) {
      this.charRefCode = this.charRefCode * 16 + cp - 55;
    } else if (isAsciiLowerHexDigit(cp)) {
      this.charRefCode = this.charRefCode * 16 + cp - 87;
    } else if (isAsciiDigit(cp)) {
      this.charRefCode = this.charRefCode * 16 + cp - 48;
    } else if (cp === CODE_POINTS.SEMICOLON) {
      this.state = State3.NUMERIC_CHARACTER_REFERENCE_END;
    } else {
      this._err(ERR.missingSemicolonAfterCharacterReference);
      this.state = State3.NUMERIC_CHARACTER_REFERENCE_END;
      this._stateNumericCharacterReferenceEnd(cp);
    }
  }
  // Decimal character reference state
  //------------------------------------------------------------------
  _stateDecimalCharacterReference(cp) {
    if (isAsciiDigit(cp)) {
      this.charRefCode = this.charRefCode * 10 + cp - 48;
    } else if (cp === CODE_POINTS.SEMICOLON) {
      this.state = State3.NUMERIC_CHARACTER_REFERENCE_END;
    } else {
      this._err(ERR.missingSemicolonAfterCharacterReference);
      this.state = State3.NUMERIC_CHARACTER_REFERENCE_END;
      this._stateNumericCharacterReferenceEnd(cp);
    }
  }
  // Numeric character reference end state
  //------------------------------------------------------------------
  _stateNumericCharacterReferenceEnd(cp) {
    if (this.charRefCode === CODE_POINTS.NULL) {
      this._err(ERR.nullCharacterReference);
      this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER;
    } else if (this.charRefCode > 1114111) {
      this._err(ERR.characterReferenceOutsideUnicodeRange);
      this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER;
    } else if (isSurrogate(this.charRefCode)) {
      this._err(ERR.surrogateCharacterReference);
      this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER;
    } else if (isUndefinedCodePoint(this.charRefCode)) {
      this._err(ERR.noncharacterCharacterReference);
    } else if (isControlCodePoint(this.charRefCode) || this.charRefCode === CODE_POINTS.CARRIAGE_RETURN) {
      this._err(ERR.controlCharacterReference);
      const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS.get(this.charRefCode);
      if (replacement !== void 0) {
        this.charRefCode = replacement;
      }
    }
    this._flushCodePointConsumedAsCharacterReference(this.charRefCode);
    this._reconsumeInState(this.returnState, cp);
  }
};

// ../../node_modules/hast-util-from-html/node_modules/parse5/dist/parser/open-element-stack.js
var IMPLICIT_END_TAG_REQUIRED = /* @__PURE__ */ new Set([TAG_ID.DD, TAG_ID.DT, TAG_ID.LI, TAG_ID.OPTGROUP, TAG_ID.OPTION, TAG_ID.P, TAG_ID.RB, TAG_ID.RP, TAG_ID.RT, TAG_ID.RTC]);
var IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = /* @__PURE__ */ new Set([
  ...IMPLICIT_END_TAG_REQUIRED,
  TAG_ID.CAPTION,
  TAG_ID.COLGROUP,
  TAG_ID.TBODY,
  TAG_ID.TD,
  TAG_ID.TFOOT,
  TAG_ID.TH,
  TAG_ID.THEAD,
  TAG_ID.TR
]);
var SCOPING_ELEMENT_NS = /* @__PURE__ */ new Map([
  [TAG_ID.APPLET, NS.HTML],
  [TAG_ID.CAPTION, NS.HTML],
  [TAG_ID.HTML, NS.HTML],
  [TAG_ID.MARQUEE, NS.HTML],
  [TAG_ID.OBJECT, NS.HTML],
  [TAG_ID.TABLE, NS.HTML],
  [TAG_ID.TD, NS.HTML],
  [TAG_ID.TEMPLATE, NS.HTML],
  [TAG_ID.TH, NS.HTML],
  [TAG_ID.ANNOTATION_XML, NS.MATHML],
  [TAG_ID.MI, NS.MATHML],
  [TAG_ID.MN, NS.MATHML],
  [TAG_ID.MO, NS.MATHML],
  [TAG_ID.MS, NS.MATHML],
  [TAG_ID.MTEXT, NS.MATHML],
  [TAG_ID.DESC, NS.SVG],
  [TAG_ID.FOREIGN_OBJECT, NS.SVG],
  [TAG_ID.TITLE, NS.SVG]
]);
var NAMED_HEADERS = [TAG_ID.H1, TAG_ID.H2, TAG_ID.H3, TAG_ID.H4, TAG_ID.H5, TAG_ID.H6];
var TABLE_ROW_CONTEXT = [TAG_ID.TR, TAG_ID.TEMPLATE, TAG_ID.HTML];
var TABLE_BODY_CONTEXT = [TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TEMPLATE, TAG_ID.HTML];
var TABLE_CONTEXT = [TAG_ID.TABLE, TAG_ID.TEMPLATE, TAG_ID.HTML];
var TABLE_CELLS = [TAG_ID.TD, TAG_ID.TH];
var OpenElementStack = class {
  get currentTmplContentOrNode() {
    return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;
  }
  constructor(document2, treeAdapter, handler) {
    this.treeAdapter = treeAdapter;
    this.handler = handler;
    this.items = [];
    this.tagIDs = [];
    this.stackTop = -1;
    this.tmplCount = 0;
    this.currentTagId = TAG_ID.UNKNOWN;
    this.current = document2;
  }
  //Index of element
  _indexOf(element5) {
    return this.items.lastIndexOf(element5, this.stackTop);
  }
  //Update current element
  _isInTemplate() {
    return this.currentTagId === TAG_ID.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;
  }
  _updateCurrentElement() {
    this.current = this.items[this.stackTop];
    this.currentTagId = this.tagIDs[this.stackTop];
  }
  //Mutations
  push(element5, tagID) {
    this.stackTop++;
    this.items[this.stackTop] = element5;
    this.current = element5;
    this.tagIDs[this.stackTop] = tagID;
    this.currentTagId = tagID;
    if (this._isInTemplate()) {
      this.tmplCount++;
    }
    this.handler.onItemPush(element5, tagID, true);
  }
  pop() {
    const popped = this.current;
    if (this.tmplCount > 0 && this._isInTemplate()) {
      this.tmplCount--;
    }
    this.stackTop--;
    this._updateCurrentElement();
    this.handler.onItemPop(popped, true);
  }
  replace(oldElement, newElement) {
    const idx = this._indexOf(oldElement);
    this.items[idx] = newElement;
    if (idx === this.stackTop) {
      this.current = newElement;
    }
  }
  insertAfter(referenceElement, newElement, newElementID) {
    const insertionIdx = this._indexOf(referenceElement) + 1;
    this.items.splice(insertionIdx, 0, newElement);
    this.tagIDs.splice(insertionIdx, 0, newElementID);
    this.stackTop++;
    if (insertionIdx === this.stackTop) {
      this._updateCurrentElement();
    }
    this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);
  }
  popUntilTagNamePopped(tagName) {
    let targetIdx = this.stackTop + 1;
    do {
      targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);
    } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML);
    this.shortenToLength(targetIdx < 0 ? 0 : targetIdx);
  }
  shortenToLength(idx) {
    while (this.stackTop >= idx) {
      const popped = this.current;
      if (this.tmplCount > 0 && this._isInTemplate()) {
        this.tmplCount -= 1;
      }
      this.stackTop--;
      this._updateCurrentElement();
      this.handler.onItemPop(popped, this.stackTop < idx);
    }
  }
  popUntilElementPopped(element5) {
    const idx = this._indexOf(element5);
    this.shortenToLength(idx < 0 ? 0 : idx);
  }
  popUntilPopped(tagNames, targetNS) {
    const idx = this._indexOfTagNames(tagNames, targetNS);
    this.shortenToLength(idx < 0 ? 0 : idx);
  }
  popUntilNumberedHeaderPopped() {
    this.popUntilPopped(NAMED_HEADERS, NS.HTML);
  }
  popUntilTableCellPopped() {
    this.popUntilPopped(TABLE_CELLS, NS.HTML);
  }
  popAllUpToHtmlElement() {
    this.tmplCount = 0;
    this.shortenToLength(1);
  }
  _indexOfTagNames(tagNames, namespace) {
    for (let i2 = this.stackTop; i2 >= 0; i2--) {
      if (tagNames.includes(this.tagIDs[i2]) && this.treeAdapter.getNamespaceURI(this.items[i2]) === namespace) {
        return i2;
      }
    }
    return -1;
  }
  clearBackTo(tagNames, targetNS) {
    const idx = this._indexOfTagNames(tagNames, targetNS);
    this.shortenToLength(idx + 1);
  }
  clearBackToTableContext() {
    this.clearBackTo(TABLE_CONTEXT, NS.HTML);
  }
  clearBackToTableBodyContext() {
    this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML);
  }
  clearBackToTableRowContext() {
    this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML);
  }
  remove(element5) {
    const idx = this._indexOf(element5);
    if (idx >= 0) {
      if (idx === this.stackTop) {
        this.pop();
      } else {
        this.items.splice(idx, 1);
        this.tagIDs.splice(idx, 1);
        this.stackTop--;
        this._updateCurrentElement();
        this.handler.onItemPop(element5, false);
      }
    }
  }
  //Search
  tryPeekProperlyNestedBodyElement() {
    return this.stackTop >= 1 && this.tagIDs[1] === TAG_ID.BODY ? this.items[1] : null;
  }
  contains(element5) {
    return this._indexOf(element5) > -1;
  }
  getCommonAncestor(element5) {
    const elementIdx = this._indexOf(element5) - 1;
    return elementIdx >= 0 ? this.items[elementIdx] : null;
  }
  isRootHtmlElementCurrent() {
    return this.stackTop === 0 && this.tagIDs[0] === TAG_ID.HTML;
  }
  //Element in scope
  hasInScope(tagName) {
    for (let i2 = this.stackTop; i2 >= 0; i2--) {
      const tn = this.tagIDs[i2];
      const ns = this.treeAdapter.getNamespaceURI(this.items[i2]);
      if (tn === tagName && ns === NS.HTML) {
        return true;
      }
      if (SCOPING_ELEMENT_NS.get(tn) === ns) {
        return false;
      }
    }
    return true;
  }
  hasNumberedHeaderInScope() {
    for (let i2 = this.stackTop; i2 >= 0; i2--) {
      const tn = this.tagIDs[i2];
      const ns = this.treeAdapter.getNamespaceURI(this.items[i2]);
      if (isNumberedHeader(tn) && ns === NS.HTML) {
        return true;
      }
      if (SCOPING_ELEMENT_NS.get(tn) === ns) {
        return false;
      }
    }
    return true;
  }
  hasInListItemScope(tagName) {
    for (let i2 = this.stackTop; i2 >= 0; i2--) {
      const tn = this.tagIDs[i2];
      const ns = this.treeAdapter.getNamespaceURI(this.items[i2]);
      if (tn === tagName && ns === NS.HTML) {
        return true;
      }
      if ((tn === TAG_ID.UL || tn === TAG_ID.OL) && ns === NS.HTML || SCOPING_ELEMENT_NS.get(tn) === ns) {
        return false;
      }
    }
    return true;
  }
  hasInButtonScope(tagName) {
    for (let i2 = this.stackTop; i2 >= 0; i2--) {
      const tn = this.tagIDs[i2];
      const ns = this.treeAdapter.getNamespaceURI(this.items[i2]);
      if (tn === tagName && ns === NS.HTML) {
        return true;
      }
      if (tn === TAG_ID.BUTTON && ns === NS.HTML || SCOPING_ELEMENT_NS.get(tn) === ns) {
        return false;
      }
    }
    return true;
  }
  hasInTableScope(tagName) {
    for (let i2 = this.stackTop; i2 >= 0; i2--) {
      const tn = this.tagIDs[i2];
      const ns = this.treeAdapter.getNamespaceURI(this.items[i2]);
      if (ns !== NS.HTML) {
        continue;
      }
      if (tn === tagName) {
        return true;
      }
      if (tn === TAG_ID.TABLE || tn === TAG_ID.TEMPLATE || tn === TAG_ID.HTML) {
        return false;
      }
    }
    return true;
  }
  hasTableBodyContextInTableScope() {
    for (let i2 = this.stackTop; i2 >= 0; i2--) {
      const tn = this.tagIDs[i2];
      const ns = this.treeAdapter.getNamespaceURI(this.items[i2]);
      if (ns !== NS.HTML) {
        continue;
      }
      if (tn === TAG_ID.TBODY || tn === TAG_ID.THEAD || tn === TAG_ID.TFOOT) {
        return true;
      }
      if (tn === TAG_ID.TABLE || tn === TAG_ID.HTML) {
        return false;
      }
    }
    return true;
  }
  hasInSelectScope(tagName) {
    for (let i2 = this.stackTop; i2 >= 0; i2--) {
      const tn = this.tagIDs[i2];
      const ns = this.treeAdapter.getNamespaceURI(this.items[i2]);
      if (ns !== NS.HTML) {
        continue;
      }
      if (tn === tagName) {
        return true;
      }
      if (tn !== TAG_ID.OPTION && tn !== TAG_ID.OPTGROUP) {
        return false;
      }
    }
    return true;
  }
  //Implied end tags
  generateImpliedEndTags() {
    while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {
      this.pop();
    }
  }
  generateImpliedEndTagsThoroughly() {
    while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {
      this.pop();
    }
  }
  generateImpliedEndTagsWithExclusion(exclusionId) {
    while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {
      this.pop();
    }
  }
};

// ../../node_modules/hast-util-from-html/node_modules/parse5/dist/parser/formatting-element-list.js
var NOAH_ARK_CAPACITY = 3;
var EntryType;
(function(EntryType2) {
  EntryType2[EntryType2["Marker"] = 0] = "Marker";
  EntryType2[EntryType2["Element"] = 1] = "Element";
})(EntryType = EntryType || (EntryType = {}));
var MARKER = { type: EntryType.Marker };
var FormattingElementList = class {
  constructor(treeAdapter) {
    this.treeAdapter = treeAdapter;
    this.entries = [];
    this.bookmark = null;
  }
  //Noah Ark's condition
  //OPTIMIZATION: at first we try to find possible candidates for exclusion using
  //lightweight heuristics without thorough attributes check.
  _getNoahArkConditionCandidates(newElement, neAttrs) {
    const candidates = [];
    const neAttrsLength = neAttrs.length;
    const neTagName = this.treeAdapter.getTagName(newElement);
    const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);
    for (let i2 = 0; i2 < this.entries.length; i2++) {
      const entry = this.entries[i2];
      if (entry.type === EntryType.Marker) {
        break;
      }
      const { element: element5 } = entry;
      if (this.treeAdapter.getTagName(element5) === neTagName && this.treeAdapter.getNamespaceURI(element5) === neNamespaceURI) {
        const elementAttrs = this.treeAdapter.getAttrList(element5);
        if (elementAttrs.length === neAttrsLength) {
          candidates.push({ idx: i2, attrs: elementAttrs });
        }
      }
    }
    return candidates;
  }
  _ensureNoahArkCondition(newElement) {
    if (this.entries.length < NOAH_ARK_CAPACITY)
      return;
    const neAttrs = this.treeAdapter.getAttrList(newElement);
    const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);
    if (candidates.length < NOAH_ARK_CAPACITY)
      return;
    const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));
    let validCandidates = 0;
    for (let i2 = 0; i2 < candidates.length; i2++) {
      const candidate = candidates[i2];
      if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {
        validCandidates += 1;
        if (validCandidates >= NOAH_ARK_CAPACITY) {
          this.entries.splice(candidate.idx, 1);
        }
      }
    }
  }
  //Mutations
  insertMarker() {
    this.entries.unshift(MARKER);
  }
  pushElement(element5, token) {
    this._ensureNoahArkCondition(element5);
    this.entries.unshift({
      type: EntryType.Element,
      element: element5,
      token
    });
  }
  insertElementAfterBookmark(element5, token) {
    const bookmarkIdx = this.entries.indexOf(this.bookmark);
    this.entries.splice(bookmarkIdx, 0, {
      type: EntryType.Element,
      element: element5,
      token
    });
  }
  removeEntry(entry) {
    const entryIndex = this.entries.indexOf(entry);
    if (entryIndex >= 0) {
      this.entries.splice(entryIndex, 1);
    }
  }
  /**
   * Clears the list of formatting elements up to the last marker.
   *
   * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker
   */
  clearToLastMarker() {
    const markerIdx = this.entries.indexOf(MARKER);
    if (markerIdx >= 0) {
      this.entries.splice(0, markerIdx + 1);
    } else {
      this.entries.length = 0;
    }
  }
  //Search
  getElementEntryInScopeWithTagName(tagName) {
    const entry = this.entries.find((entry2) => entry2.type === EntryType.Marker || this.treeAdapter.getTagName(entry2.element) === tagName);
    return entry && entry.type === EntryType.Element ? entry : null;
  }
  getElementEntry(element5) {
    return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element5);
  }
};

// ../../node_modules/hast-util-from-html/node_modules/parse5/dist/tree-adapters/default.js
function createTextNode(value) {
  return {
    nodeName: "#text",
    value,
    parentNode: null
  };
}
var defaultTreeAdapter = {
  //Node construction
  createDocument() {
    return {
      nodeName: "#document",
      mode: DOCUMENT_MODE.NO_QUIRKS,
      childNodes: []
    };
  },
  createDocumentFragment() {
    return {
      nodeName: "#document-fragment",
      childNodes: []
    };
  },
  createElement(tagName, namespaceURI, attrs) {
    return {
      nodeName: tagName,
      tagName,
      attrs,
      namespaceURI,
      childNodes: [],
      parentNode: null
    };
  },
  createCommentNode(data) {
    return {
      nodeName: "#comment",
      data,
      parentNode: null
    };
  },
  //Tree mutation
  appendChild(parentNode, newNode) {
    parentNode.childNodes.push(newNode);
    newNode.parentNode = parentNode;
  },
  insertBefore(parentNode, newNode, referenceNode) {
    const insertionIdx = parentNode.childNodes.indexOf(referenceNode);
    parentNode.childNodes.splice(insertionIdx, 0, newNode);
    newNode.parentNode = parentNode;
  },
  setTemplateContent(templateElement, contentElement) {
    templateElement.content = contentElement;
  },
  getTemplateContent(templateElement) {
    return templateElement.content;
  },
  setDocumentType(document2, name3, publicId, systemId) {
    const doctypeNode = document2.childNodes.find((node3) => node3.nodeName === "#documentType");
    if (doctypeNode) {
      doctypeNode.name = name3;
      doctypeNode.publicId = publicId;
      doctypeNode.systemId = systemId;
    } else {
      const node3 = {
        nodeName: "#documentType",
        name: name3,
        publicId,
        systemId,
        parentNode: null
      };
      defaultTreeAdapter.appendChild(document2, node3);
    }
  },
  setDocumentMode(document2, mode) {
    document2.mode = mode;
  },
  getDocumentMode(document2) {
    return document2.mode;
  },
  detachNode(node3) {
    if (node3.parentNode) {
      const idx = node3.parentNode.childNodes.indexOf(node3);
      node3.parentNode.childNodes.splice(idx, 1);
      node3.parentNode = null;
    }
  },
  insertText(parentNode, text7) {
    if (parentNode.childNodes.length > 0) {
      const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];
      if (defaultTreeAdapter.isTextNode(prevNode)) {
        prevNode.value += text7;
        return;
      }
    }
    defaultTreeAdapter.appendChild(parentNode, createTextNode(text7));
  },
  insertTextBefore(parentNode, text7, referenceNode) {
    const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];
    if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {
      prevNode.value += text7;
    } else {
      defaultTreeAdapter.insertBefore(parentNode, createTextNode(text7), referenceNode);
    }
  },
  adoptAttributes(recipient, attrs) {
    const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));
    for (let j = 0; j < attrs.length; j++) {
      if (!recipientAttrsMap.has(attrs[j].name)) {
        recipient.attrs.push(attrs[j]);
      }
    }
  },
  //Tree traversing
  getFirstChild(node3) {
    return node3.childNodes[0];
  },
  getChildNodes(node3) {
    return node3.childNodes;
  },
  getParentNode(node3) {
    return node3.parentNode;
  },
  getAttrList(element5) {
    return element5.attrs;
  },
  //Node data
  getTagName(element5) {
    return element5.tagName;
  },
  getNamespaceURI(element5) {
    return element5.namespaceURI;
  },
  getTextNodeContent(textNode) {
    return textNode.value;
  },
  getCommentNodeContent(commentNode) {
    return commentNode.data;
  },
  getDocumentTypeNodeName(doctypeNode) {
    return doctypeNode.name;
  },
  getDocumentTypeNodePublicId(doctypeNode) {
    return doctypeNode.publicId;
  },
  getDocumentTypeNodeSystemId(doctypeNode) {
    return doctypeNode.systemId;
  },
  //Node types
  isTextNode(node3) {
    return node3.nodeName === "#text";
  },
  isCommentNode(node3) {
    return node3.nodeName === "#comment";
  },
  isDocumentTypeNode(node3) {
    return node3.nodeName === "#documentType";
  },
  isElementNode(node3) {
    return Object.prototype.hasOwnProperty.call(node3, "tagName");
  },
  // Source code location
  setNodeSourceCodeLocation(node3, location4) {
    node3.sourceCodeLocation = location4;
  },
  getNodeSourceCodeLocation(node3) {
    return node3.sourceCodeLocation;
  },
  updateNodeSourceCodeLocation(node3, endLocation) {
    node3.sourceCodeLocation = { ...node3.sourceCodeLocation, ...endLocation };
  }
};

// ../../node_modules/hast-util-from-html/node_modules/parse5/dist/common/doctype.js
var VALID_DOCTYPE_NAME = "html";
var VALID_SYSTEM_ID = "about:legacy-compat";
var QUIRKS_MODE_SYSTEM_ID = "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd";
var QUIRKS_MODE_PUBLIC_ID_PREFIXES = [
  "+//silmaril//dtd html pro v0r11 19970101//",
  "-//as//dtd html 3.0 aswedit + extensions//",
  "-//advasoft ltd//dtd html 3.0 aswedit + extensions//",
  "-//ietf//dtd html 2.0 level 1//",
  "-//ietf//dtd html 2.0 level 2//",
  "-//ietf//dtd html 2.0 strict level 1//",
  "-//ietf//dtd html 2.0 strict level 2//",
  "-//ietf//dtd html 2.0 strict//",
  "-//ietf//dtd html 2.0//",
  "-//ietf//dtd html 2.1e//",
  "-//ietf//dtd html 3.0//",
  "-//ietf//dtd html 3.2 final//",
  "-//ietf//dtd html 3.2//",
  "-//ietf//dtd html 3//",
  "-//ietf//dtd html level 0//",
  "-//ietf//dtd html level 1//",
  "-//ietf//dtd html level 2//",
  "-//ietf//dtd html level 3//",
  "-//ietf//dtd html strict level 0//",
  "-//ietf//dtd html strict level 1//",
  "-//ietf//dtd html strict level 2//",
  "-//ietf//dtd html strict level 3//",
  "-//ietf//dtd html strict//",
  "-//ietf//dtd html//",
  "-//metrius//dtd metrius presentational//",
  "-//microsoft//dtd internet explorer 2.0 html strict//",
  "-//microsoft//dtd internet explorer 2.0 html//",
  "-//microsoft//dtd internet explorer 2.0 tables//",
  "-//microsoft//dtd internet explorer 3.0 html strict//",
  "-//microsoft//dtd internet explorer 3.0 html//",
  "-//microsoft//dtd internet explorer 3.0 tables//",
  "-//netscape comm. corp.//dtd html//",
  "-//netscape comm. corp.//dtd strict html//",
  "-//o'reilly and associates//dtd html 2.0//",
  "-//o'reilly and associates//dtd html extended 1.0//",
  "-//o'reilly and associates//dtd html extended relaxed 1.0//",
  "-//sq//dtd html 2.0 hotmetal + extensions//",
  "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//",
  "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//",
  "-//spyglass//dtd html 2.0 extended//",
  "-//sun microsystems corp.//dtd hotjava html//",
  "-//sun microsystems corp.//dtd hotjava strict html//",
  "-//w3c//dtd html 3 1995-03-24//",
  "-//w3c//dtd html 3.2 draft//",
  "-//w3c//dtd html 3.2 final//",
  "-//w3c//dtd html 3.2//",
  "-//w3c//dtd html 3.2s draft//",
  "-//w3c//dtd html 4.0 frameset//",
  "-//w3c//dtd html 4.0 transitional//",
  "-//w3c//dtd html experimental 19960712//",
  "-//w3c//dtd html experimental 970421//",
  "-//w3c//dtd w3 html//",
  "-//w3o//dtd w3 html 3.0//",
  "-//webtechs//dtd mozilla html 2.0//",
  "-//webtechs//dtd mozilla html//"
];
var QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [
  ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,
  "-//w3c//dtd html 4.01 frameset//",
  "-//w3c//dtd html 4.01 transitional//"
];
var QUIRKS_MODE_PUBLIC_IDS = /* @__PURE__ */ new Set([
  "-//w3o//dtd w3 html strict 3.0//en//",
  "-/w3c/dtd html 4.0 transitional/en",
  "html"
]);
var LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ["-//w3c//dtd xhtml 1.0 frameset//", "-//w3c//dtd xhtml 1.0 transitional//"];
var LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [
  ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,
  "-//w3c//dtd html 4.01 frameset//",
  "-//w3c//dtd html 4.01 transitional//"
];
function hasPrefix(publicId, prefixes) {
  return prefixes.some((prefix2) => publicId.startsWith(prefix2));
}
function isConforming(token) {
  return token.name === VALID_DOCTYPE_NAME && token.publicId === null && (token.systemId === null || token.systemId === VALID_SYSTEM_ID);
}
function getDocumentMode(token) {
  if (token.name !== VALID_DOCTYPE_NAME) {
    return DOCUMENT_MODE.QUIRKS;
  }
  const { systemId } = token;
  if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {
    return DOCUMENT_MODE.QUIRKS;
  }
  let { publicId } = token;
  if (publicId !== null) {
    publicId = publicId.toLowerCase();
    if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {
      return DOCUMENT_MODE.QUIRKS;
    }
    let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;
    if (hasPrefix(publicId, prefixes)) {
      return DOCUMENT_MODE.QUIRKS;
    }
    prefixes = systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;
    if (hasPrefix(publicId, prefixes)) {
      return DOCUMENT_MODE.LIMITED_QUIRKS;
    }
  }
  return DOCUMENT_MODE.NO_QUIRKS;
}

// ../../node_modules/hast-util-from-html/node_modules/parse5/dist/common/foreign-content.js
var MIME_TYPES = {
  TEXT_HTML: "text/html",
  APPLICATION_XML: "application/xhtml+xml"
};
var DEFINITION_URL_ATTR = "definitionurl";
var ADJUSTED_DEFINITION_URL_ATTR = "definitionURL";
var SVG_ATTRS_ADJUSTMENT_MAP = new Map([
  "attributeName",
  "attributeType",
  "baseFrequency",
  "baseProfile",
  "calcMode",
  "clipPathUnits",
  "diffuseConstant",
  "edgeMode",
  "filterUnits",
  "glyphRef",
  "gradientTransform",
  "gradientUnits",
  "kernelMatrix",
  "kernelUnitLength",
  "keyPoints",
  "keySplines",
  "keyTimes",
  "lengthAdjust",
  "limitingConeAngle",
  "markerHeight",
  "markerUnits",
  "markerWidth",
  "maskContentUnits",
  "maskUnits",
  "numOctaves",
  "pathLength",
  "patternContentUnits",
  "patternTransform",
  "patternUnits",
  "pointsAtX",
  "pointsAtY",
  "pointsAtZ",
  "preserveAlpha",
  "preserveAspectRatio",
  "primitiveUnits",
  "refX",
  "refY",
  "repeatCount",
  "repeatDur",
  "requiredExtensions",
  "requiredFeatures",
  "specularConstant",
  "specularExponent",
  "spreadMethod",
  "startOffset",
  "stdDeviation",
  "stitchTiles",
  "surfaceScale",
  "systemLanguage",
  "tableValues",
  "targetX",
  "targetY",
  "textLength",
  "viewBox",
  "viewTarget",
  "xChannelSelector",
  "yChannelSelector",
  "zoomAndPan"
].map((attr) => [attr.toLowerCase(), attr]));
var XML_ATTRS_ADJUSTMENT_MAP = /* @__PURE__ */ new Map([
  ["xlink:actuate", { prefix: "xlink", name: "actuate", namespace: NS.XLINK }],
  ["xlink:arcrole", { prefix: "xlink", name: "arcrole", namespace: NS.XLINK }],
  ["xlink:href", { prefix: "xlink", name: "href", namespace: NS.XLINK }],
  ["xlink:role", { prefix: "xlink", name: "role", namespace: NS.XLINK }],
  ["xlink:show", { prefix: "xlink", name: "show", namespace: NS.XLINK }],
  ["xlink:title", { prefix: "xlink", name: "title", namespace: NS.XLINK }],
  ["xlink:type", { prefix: "xlink", name: "type", namespace: NS.XLINK }],
  ["xml:base", { prefix: "xml", name: "base", namespace: NS.XML }],
  ["xml:lang", { prefix: "xml", name: "lang", namespace: NS.XML }],
  ["xml:space", { prefix: "xml", name: "space", namespace: NS.XML }],
  ["xmlns", { prefix: "", name: "xmlns", namespace: NS.XMLNS }],
  ["xmlns:xlink", { prefix: "xmlns", name: "xlink", namespace: NS.XMLNS }]
]);
var SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([
  "altGlyph",
  "altGlyphDef",
  "altGlyphItem",
  "animateColor",
  "animateMotion",
  "animateTransform",
  "clipPath",
  "feBlend",
  "feColorMatrix",
  "feComponentTransfer",
  "feComposite",
  "feConvolveMatrix",
  "feDiffuseLighting",
  "feDisplacementMap",
  "feDistantLight",
  "feFlood",
  "feFuncA",
  "feFuncB",
  "feFuncG",
  "feFuncR",
  "feGaussianBlur",
  "feImage",
  "feMerge",
  "feMergeNode",
  "feMorphology",
  "feOffset",
  "fePointLight",
  "feSpecularLighting",
  "feSpotLight",
  "feTile",
  "feTurbulence",
  "foreignObject",
  "glyphRef",
  "linearGradient",
  "radialGradient",
  "textPath"
].map((tn) => [tn.toLowerCase(), tn]));
var EXITS_FOREIGN_CONTENT = /* @__PURE__ */ new Set([
  TAG_ID.B,
  TAG_ID.BIG,
  TAG_ID.BLOCKQUOTE,
  TAG_ID.BODY,
  TAG_ID.BR,
  TAG_ID.CENTER,
  TAG_ID.CODE,
  TAG_ID.DD,
  TAG_ID.DIV,
  TAG_ID.DL,
  TAG_ID.DT,
  TAG_ID.EM,
  TAG_ID.EMBED,
  TAG_ID.H1,
  TAG_ID.H2,
  TAG_ID.H3,
  TAG_ID.H4,
  TAG_ID.H5,
  TAG_ID.H6,
  TAG_ID.HEAD,
  TAG_ID.HR,
  TAG_ID.I,
  TAG_ID.IMG,
  TAG_ID.LI,
  TAG_ID.LISTING,
  TAG_ID.MENU,
  TAG_ID.META,
  TAG_ID.NOBR,
  TAG_ID.OL,
  TAG_ID.P,
  TAG_ID.PRE,
  TAG_ID.RUBY,
  TAG_ID.S,
  TAG_ID.SMALL,
  TAG_ID.SPAN,
  TAG_ID.STRONG,
  TAG_ID.STRIKE,
  TAG_ID.SUB,
  TAG_ID.SUP,
  TAG_ID.TABLE,
  TAG_ID.TT,
  TAG_ID.U,
  TAG_ID.UL,
  TAG_ID.VAR
]);
function causesExit(startTagToken) {
  const tn = startTagToken.tagID;
  const isFontWithAttrs = tn === TAG_ID.FONT && startTagToken.attrs.some(({ name: name3 }) => name3 === ATTRS.COLOR || name3 === ATTRS.SIZE || name3 === ATTRS.FACE);
  return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);
}
function adjustTokenMathMLAttrs(token) {
  for (let i2 = 0; i2 < token.attrs.length; i2++) {
    if (token.attrs[i2].name === DEFINITION_URL_ATTR) {
      token.attrs[i2].name = ADJUSTED_DEFINITION_URL_ATTR;
      break;
    }
  }
}
function adjustTokenSVGAttrs(token) {
  for (let i2 = 0; i2 < token.attrs.length; i2++) {
    const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i2].name);
    if (adjustedAttrName != null) {
      token.attrs[i2].name = adjustedAttrName;
    }
  }
}
function adjustTokenXMLAttrs(token) {
  for (let i2 = 0; i2 < token.attrs.length; i2++) {
    const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i2].name);
    if (adjustedAttrEntry) {
      token.attrs[i2].prefix = adjustedAttrEntry.prefix;
      token.attrs[i2].name = adjustedAttrEntry.name;
      token.attrs[i2].namespace = adjustedAttrEntry.namespace;
    }
  }
}
function adjustTokenSVGTagName(token) {
  const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);
  if (adjustedTagName != null) {
    token.tagName = adjustedTagName;
    token.tagID = getTagID(token.tagName);
  }
}
function isMathMLTextIntegrationPoint(tn, ns) {
  return ns === NS.MATHML && (tn === TAG_ID.MI || tn === TAG_ID.MO || tn === TAG_ID.MN || tn === TAG_ID.MS || tn === TAG_ID.MTEXT);
}
function isHtmlIntegrationPoint(tn, ns, attrs) {
  if (ns === NS.MATHML && tn === TAG_ID.ANNOTATION_XML) {
    for (let i2 = 0; i2 < attrs.length; i2++) {
      if (attrs[i2].name === ATTRS.ENCODING) {
        const value = attrs[i2].value.toLowerCase();
        return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;
      }
    }
  }
  return ns === NS.SVG && (tn === TAG_ID.FOREIGN_OBJECT || tn === TAG_ID.DESC || tn === TAG_ID.TITLE);
}
function isIntegrationPoint(tn, ns, attrs, foreignNS) {
  return (!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs) || (!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns);
}

// ../../node_modules/hast-util-from-html/node_modules/parse5/dist/parser/index.js
var HIDDEN_INPUT_TYPE = "hidden";
var AA_OUTER_LOOP_ITER = 8;
var AA_INNER_LOOP_ITER = 3;
var InsertionMode;
(function(InsertionMode2) {
  InsertionMode2[InsertionMode2["INITIAL"] = 0] = "INITIAL";
  InsertionMode2[InsertionMode2["BEFORE_HTML"] = 1] = "BEFORE_HTML";
  InsertionMode2[InsertionMode2["BEFORE_HEAD"] = 2] = "BEFORE_HEAD";
  InsertionMode2[InsertionMode2["IN_HEAD"] = 3] = "IN_HEAD";
  InsertionMode2[InsertionMode2["IN_HEAD_NO_SCRIPT"] = 4] = "IN_HEAD_NO_SCRIPT";
  InsertionMode2[InsertionMode2["AFTER_HEAD"] = 5] = "AFTER_HEAD";
  InsertionMode2[InsertionMode2["IN_BODY"] = 6] = "IN_BODY";
  InsertionMode2[InsertionMode2["TEXT"] = 7] = "TEXT";
  InsertionMode2[InsertionMode2["IN_TABLE"] = 8] = "IN_TABLE";
  InsertionMode2[InsertionMode2["IN_TABLE_TEXT"] = 9] = "IN_TABLE_TEXT";
  InsertionMode2[InsertionMode2["IN_CAPTION"] = 10] = "IN_CAPTION";
  InsertionMode2[InsertionMode2["IN_COLUMN_GROUP"] = 11] = "IN_COLUMN_GROUP";
  InsertionMode2[InsertionMode2["IN_TABLE_BODY"] = 12] = "IN_TABLE_BODY";
  InsertionMode2[InsertionMode2["IN_ROW"] = 13] = "IN_ROW";
  InsertionMode2[InsertionMode2["IN_CELL"] = 14] = "IN_CELL";
  InsertionMode2[InsertionMode2["IN_SELECT"] = 15] = "IN_SELECT";
  InsertionMode2[InsertionMode2["IN_SELECT_IN_TABLE"] = 16] = "IN_SELECT_IN_TABLE";
  InsertionMode2[InsertionMode2["IN_TEMPLATE"] = 17] = "IN_TEMPLATE";
  InsertionMode2[InsertionMode2["AFTER_BODY"] = 18] = "AFTER_BODY";
  InsertionMode2[InsertionMode2["IN_FRAMESET"] = 19] = "IN_FRAMESET";
  InsertionMode2[InsertionMode2["AFTER_FRAMESET"] = 20] = "AFTER_FRAMESET";
  InsertionMode2[InsertionMode2["AFTER_AFTER_BODY"] = 21] = "AFTER_AFTER_BODY";
  InsertionMode2[InsertionMode2["AFTER_AFTER_FRAMESET"] = 22] = "AFTER_AFTER_FRAMESET";
})(InsertionMode || (InsertionMode = {}));
var BASE_LOC = {
  startLine: -1,
  startCol: -1,
  startOffset: -1,
  endLine: -1,
  endCol: -1,
  endOffset: -1
};
var TABLE_STRUCTURE_TAGS = /* @__PURE__ */ new Set([TAG_ID.TABLE, TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TR]);
var defaultParserOptions = {
  scriptingEnabled: true,
  sourceCodeLocationInfo: false,
  treeAdapter: defaultTreeAdapter,
  onParseError: null
};
var Parser = class {
  constructor(options, document2, fragmentContext = null, scriptHandler = null) {
    this.fragmentContext = fragmentContext;
    this.scriptHandler = scriptHandler;
    this.currentToken = null;
    this.stopped = false;
    this.insertionMode = InsertionMode.INITIAL;
    this.originalInsertionMode = InsertionMode.INITIAL;
    this.headElement = null;
    this.formElement = null;
    this.currentNotInHTML = false;
    this.tmplInsertionModeStack = [];
    this.pendingCharacterTokens = [];
    this.hasNonWhitespacePendingCharacterToken = false;
    this.framesetOk = true;
    this.skipNextNewLine = false;
    this.fosterParentingEnabled = false;
    this.options = {
      ...defaultParserOptions,
      ...options
    };
    this.treeAdapter = this.options.treeAdapter;
    this.onParseError = this.options.onParseError;
    if (this.onParseError) {
      this.options.sourceCodeLocationInfo = true;
    }
    this.document = document2 !== null && document2 !== void 0 ? document2 : this.treeAdapter.createDocument();
    this.tokenizer = new Tokenizer(this.options, this);
    this.activeFormattingElements = new FormattingElementList(this.treeAdapter);
    this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : TAG_ID.UNKNOWN;
    this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);
    this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);
  }
  // API
  static parse(html7, options) {
    const parser3 = new this(options);
    parser3.tokenizer.write(html7, true);
    return parser3.document;
  }
  static getFragmentParser(fragmentContext, options) {
    const opts = {
      ...defaultParserOptions,
      ...options
    };
    fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : fragmentContext = opts.treeAdapter.createElement(TAG_NAMES.TEMPLATE, NS.HTML, []);
    const documentMock = opts.treeAdapter.createElement("documentmock", NS.HTML, []);
    const parser3 = new this(opts, documentMock, fragmentContext);
    if (parser3.fragmentContextID === TAG_ID.TEMPLATE) {
      parser3.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);
    }
    parser3._initTokenizerForFragmentParsing();
    parser3._insertFakeRootElement();
    parser3._resetInsertionMode();
    parser3._findFormInFragmentContext();
    return parser3;
  }
  getFragment() {
    const rootElement = this.treeAdapter.getFirstChild(this.document);
    const fragment = this.treeAdapter.createDocumentFragment();
    this._adoptNodes(rootElement, fragment);
    return fragment;
  }
  //Errors
  _err(token, code7, beforeToken) {
    var _a6;
    if (!this.onParseError)
      return;
    const loc = (_a6 = token.location) !== null && _a6 !== void 0 ? _a6 : BASE_LOC;
    const err = {
      code: code7,
      startLine: loc.startLine,
      startCol: loc.startCol,
      startOffset: loc.startOffset,
      endLine: beforeToken ? loc.startLine : loc.endLine,
      endCol: beforeToken ? loc.startCol : loc.endCol,
      endOffset: beforeToken ? loc.startOffset : loc.endOffset
    };
    this.onParseError(err);
  }
  //Stack events
  onItemPush(node3, tid, isTop) {
    var _a6, _b;
    (_b = (_a6 = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a6, node3);
    if (isTop && this.openElements.stackTop > 0)
      this._setContextModes(node3, tid);
  }
  onItemPop(node3, isTop) {
    var _a6, _b;
    if (this.options.sourceCodeLocationInfo) {
      this._setEndLocation(node3, this.currentToken);
    }
    (_b = (_a6 = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a6, node3, this.openElements.current);
    if (isTop) {
      let current2;
      let currentTagId;
      if (this.openElements.stackTop === 0 && this.fragmentContext) {
        current2 = this.fragmentContext;
        currentTagId = this.fragmentContextID;
      } else {
        ({ current: current2, currentTagId } = this.openElements);
      }
      this._setContextModes(current2, currentTagId);
    }
  }
  _setContextModes(current2, tid) {
    const isHTML = current2 === this.document || this.treeAdapter.getNamespaceURI(current2) === NS.HTML;
    this.currentNotInHTML = !isHTML;
    this.tokenizer.inForeignNode = !isHTML && !this._isIntegrationPoint(tid, current2);
  }
  _switchToTextParsing(currentToken, nextTokenizerState) {
    this._insertElement(currentToken, NS.HTML);
    this.tokenizer.state = nextTokenizerState;
    this.originalInsertionMode = this.insertionMode;
    this.insertionMode = InsertionMode.TEXT;
  }
  switchToPlaintextParsing() {
    this.insertionMode = InsertionMode.TEXT;
    this.originalInsertionMode = InsertionMode.IN_BODY;
    this.tokenizer.state = TokenizerMode.PLAINTEXT;
  }
  //Fragment parsing
  _getAdjustedCurrentElement() {
    return this.openElements.stackTop === 0 && this.fragmentContext ? this.fragmentContext : this.openElements.current;
  }
  _findFormInFragmentContext() {
    let node3 = this.fragmentContext;
    while (node3) {
      if (this.treeAdapter.getTagName(node3) === TAG_NAMES.FORM) {
        this.formElement = node3;
        break;
      }
      node3 = this.treeAdapter.getParentNode(node3);
    }
  }
  _initTokenizerForFragmentParsing() {
    if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) {
      return;
    }
    switch (this.fragmentContextID) {
      case TAG_ID.TITLE:
      case TAG_ID.TEXTAREA: {
        this.tokenizer.state = TokenizerMode.RCDATA;
        break;
      }
      case TAG_ID.STYLE:
      case TAG_ID.XMP:
      case TAG_ID.IFRAME:
      case TAG_ID.NOEMBED:
      case TAG_ID.NOFRAMES:
      case TAG_ID.NOSCRIPT: {
        this.tokenizer.state = TokenizerMode.RAWTEXT;
        break;
      }
      case TAG_ID.SCRIPT: {
        this.tokenizer.state = TokenizerMode.SCRIPT_DATA;
        break;
      }
      case TAG_ID.PLAINTEXT: {
        this.tokenizer.state = TokenizerMode.PLAINTEXT;
        break;
      }
      default:
    }
  }
  //Tree mutation
  _setDocumentType(token) {
    const name3 = token.name || "";
    const publicId = token.publicId || "";
    const systemId = token.systemId || "";
    this.treeAdapter.setDocumentType(this.document, name3, publicId, systemId);
    if (token.location) {
      const documentChildren = this.treeAdapter.getChildNodes(this.document);
      const docTypeNode = documentChildren.find((node3) => this.treeAdapter.isDocumentTypeNode(node3));
      if (docTypeNode) {
        this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);
      }
    }
  }
  _attachElementToTree(element5, location4) {
    if (this.options.sourceCodeLocationInfo) {
      const loc = location4 && {
        ...location4,
        startTag: location4
      };
      this.treeAdapter.setNodeSourceCodeLocation(element5, loc);
    }
    if (this._shouldFosterParentOnInsertion()) {
      this._fosterParentElement(element5);
    } else {
      const parent2 = this.openElements.currentTmplContentOrNode;
      this.treeAdapter.appendChild(parent2, element5);
    }
  }
  _appendElement(token, namespaceURI) {
    const element5 = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);
    this._attachElementToTree(element5, token.location);
  }
  _insertElement(token, namespaceURI) {
    const element5 = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);
    this._attachElementToTree(element5, token.location);
    this.openElements.push(element5, token.tagID);
  }
  _insertFakeElement(tagName, tagID) {
    const element5 = this.treeAdapter.createElement(tagName, NS.HTML, []);
    this._attachElementToTree(element5, null);
    this.openElements.push(element5, tagID);
  }
  _insertTemplate(token) {
    const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);
    const content3 = this.treeAdapter.createDocumentFragment();
    this.treeAdapter.setTemplateContent(tmpl, content3);
    this._attachElementToTree(tmpl, token.location);
    this.openElements.push(tmpl, token.tagID);
    if (this.options.sourceCodeLocationInfo)
      this.treeAdapter.setNodeSourceCodeLocation(content3, null);
  }
  _insertFakeRootElement() {
    const element5 = this.treeAdapter.createElement(TAG_NAMES.HTML, NS.HTML, []);
    if (this.options.sourceCodeLocationInfo)
      this.treeAdapter.setNodeSourceCodeLocation(element5, null);
    this.treeAdapter.appendChild(this.openElements.current, element5);
    this.openElements.push(element5, TAG_ID.HTML);
  }
  _appendCommentNode(token, parent2) {
    const commentNode = this.treeAdapter.createCommentNode(token.data);
    this.treeAdapter.appendChild(parent2, commentNode);
    if (this.options.sourceCodeLocationInfo) {
      this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);
    }
  }
  _insertCharacters(token) {
    let parent2;
    let beforeElement;
    if (this._shouldFosterParentOnInsertion()) {
      ({ parent: parent2, beforeElement } = this._findFosterParentingLocation());
      if (beforeElement) {
        this.treeAdapter.insertTextBefore(parent2, token.chars, beforeElement);
      } else {
        this.treeAdapter.insertText(parent2, token.chars);
      }
    } else {
      parent2 = this.openElements.currentTmplContentOrNode;
      this.treeAdapter.insertText(parent2, token.chars);
    }
    if (!token.location)
      return;
    const siblings2 = this.treeAdapter.getChildNodes(parent2);
    const textNodeIdx = beforeElement ? siblings2.lastIndexOf(beforeElement) : siblings2.length;
    const textNode = siblings2[textNodeIdx - 1];
    const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);
    if (tnLoc) {
      const { endLine, endCol, endOffset } = token.location;
      this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });
    } else if (this.options.sourceCodeLocationInfo) {
      this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);
    }
  }
  _adoptNodes(donor, recipient) {
    for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {
      this.treeAdapter.detachNode(child);
      this.treeAdapter.appendChild(recipient, child);
    }
  }
  _setEndLocation(element5, closingToken) {
    if (this.treeAdapter.getNodeSourceCodeLocation(element5) && closingToken.location) {
      const ctLoc = closingToken.location;
      const tn = this.treeAdapter.getTagName(element5);
      const endLoc = (
        // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing
        // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.
        closingToken.type === TokenType.END_TAG && tn === closingToken.tagName ? {
          endTag: { ...ctLoc },
          endLine: ctLoc.endLine,
          endCol: ctLoc.endCol,
          endOffset: ctLoc.endOffset
        } : {
          endLine: ctLoc.startLine,
          endCol: ctLoc.startCol,
          endOffset: ctLoc.startOffset
        }
      );
      this.treeAdapter.updateNodeSourceCodeLocation(element5, endLoc);
    }
  }
  //Token processing
  shouldProcessStartTagTokenInForeignContent(token) {
    if (!this.currentNotInHTML)
      return false;
    let current2;
    let currentTagId;
    if (this.openElements.stackTop === 0 && this.fragmentContext) {
      current2 = this.fragmentContext;
      currentTagId = this.fragmentContextID;
    } else {
      ({ current: current2, currentTagId } = this.openElements);
    }
    if (token.tagID === TAG_ID.SVG && this.treeAdapter.getTagName(current2) === TAG_NAMES.ANNOTATION_XML && this.treeAdapter.getNamespaceURI(current2) === NS.MATHML) {
      return false;
    }
    return (
      // Check that `current` is not an integration point for HTML or MathML elements.
      this.tokenizer.inForeignNode || // If it _is_ an integration point, then we might have to check that it is not an HTML
      // integration point.
      (token.tagID === TAG_ID.MGLYPH || token.tagID === TAG_ID.MALIGNMARK) && !this._isIntegrationPoint(currentTagId, current2, NS.HTML)
    );
  }
  _processToken(token) {
    switch (token.type) {
      case TokenType.CHARACTER: {
        this.onCharacter(token);
        break;
      }
      case TokenType.NULL_CHARACTER: {
        this.onNullCharacter(token);
        break;
      }
      case TokenType.COMMENT: {
        this.onComment(token);
        break;
      }
      case TokenType.DOCTYPE: {
        this.onDoctype(token);
        break;
      }
      case TokenType.START_TAG: {
        this._processStartTag(token);
        break;
      }
      case TokenType.END_TAG: {
        this.onEndTag(token);
        break;
      }
      case TokenType.EOF: {
        this.onEof(token);
        break;
      }
      case TokenType.WHITESPACE_CHARACTER: {
        this.onWhitespaceCharacter(token);
        break;
      }
    }
  }
  //Integration points
  _isIntegrationPoint(tid, element5, foreignNS) {
    const ns = this.treeAdapter.getNamespaceURI(element5);
    const attrs = this.treeAdapter.getAttrList(element5);
    return isIntegrationPoint(tid, ns, attrs, foreignNS);
  }
  //Active formatting elements reconstruction
  _reconstructActiveFormattingElements() {
    const listLength = this.activeFormattingElements.entries.length;
    if (listLength) {
      const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));
      const unopenIdx = endIndex < 0 ? listLength - 1 : endIndex - 1;
      for (let i2 = unopenIdx; i2 >= 0; i2--) {
        const entry = this.activeFormattingElements.entries[i2];
        this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));
        entry.element = this.openElements.current;
      }
    }
  }
  //Close elements
  _closeTableCell() {
    this.openElements.generateImpliedEndTags();
    this.openElements.popUntilTableCellPopped();
    this.activeFormattingElements.clearToLastMarker();
    this.insertionMode = InsertionMode.IN_ROW;
  }
  _closePElement() {
    this.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.P);
    this.openElements.popUntilTagNamePopped(TAG_ID.P);
  }
  //Insertion modes
  _resetInsertionMode() {
    for (let i2 = this.openElements.stackTop; i2 >= 0; i2--) {
      switch (i2 === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i2]) {
        case TAG_ID.TR: {
          this.insertionMode = InsertionMode.IN_ROW;
          return;
        }
        case TAG_ID.TBODY:
        case TAG_ID.THEAD:
        case TAG_ID.TFOOT: {
          this.insertionMode = InsertionMode.IN_TABLE_BODY;
          return;
        }
        case TAG_ID.CAPTION: {
          this.insertionMode = InsertionMode.IN_CAPTION;
          return;
        }
        case TAG_ID.COLGROUP: {
          this.insertionMode = InsertionMode.IN_COLUMN_GROUP;
          return;
        }
        case TAG_ID.TABLE: {
          this.insertionMode = InsertionMode.IN_TABLE;
          return;
        }
        case TAG_ID.BODY: {
          this.insertionMode = InsertionMode.IN_BODY;
          return;
        }
        case TAG_ID.FRAMESET: {
          this.insertionMode = InsertionMode.IN_FRAMESET;
          return;
        }
        case TAG_ID.SELECT: {
          this._resetInsertionModeForSelect(i2);
          return;
        }
        case TAG_ID.TEMPLATE: {
          this.insertionMode = this.tmplInsertionModeStack[0];
          return;
        }
        case TAG_ID.HTML: {
          this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;
          return;
        }
        case TAG_ID.TD:
        case TAG_ID.TH: {
          if (i2 > 0) {
            this.insertionMode = InsertionMode.IN_CELL;
            return;
          }
          break;
        }
        case TAG_ID.HEAD: {
          if (i2 > 0) {
            this.insertionMode = InsertionMode.IN_HEAD;
            return;
          }
          break;
        }
      }
    }
    this.insertionMode = InsertionMode.IN_BODY;
  }
  _resetInsertionModeForSelect(selectIdx) {
    if (selectIdx > 0) {
      for (let i2 = selectIdx - 1; i2 > 0; i2--) {
        const tn = this.openElements.tagIDs[i2];
        if (tn === TAG_ID.TEMPLATE) {
          break;
        } else if (tn === TAG_ID.TABLE) {
          this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;
          return;
        }
      }
    }
    this.insertionMode = InsertionMode.IN_SELECT;
  }
  //Foster parenting
  _isElementCausesFosterParenting(tn) {
    return TABLE_STRUCTURE_TAGS.has(tn);
  }
  _shouldFosterParentOnInsertion() {
    return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId);
  }
  _findFosterParentingLocation() {
    for (let i2 = this.openElements.stackTop; i2 >= 0; i2--) {
      const openElement = this.openElements.items[i2];
      switch (this.openElements.tagIDs[i2]) {
        case TAG_ID.TEMPLATE: {
          if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) {
            return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };
          }
          break;
        }
        case TAG_ID.TABLE: {
          const parent2 = this.treeAdapter.getParentNode(openElement);
          if (parent2) {
            return { parent: parent2, beforeElement: openElement };
          }
          return { parent: this.openElements.items[i2 - 1], beforeElement: null };
        }
        default:
      }
    }
    return { parent: this.openElements.items[0], beforeElement: null };
  }
  _fosterParentElement(element5) {
    const location4 = this._findFosterParentingLocation();
    if (location4.beforeElement) {
      this.treeAdapter.insertBefore(location4.parent, element5, location4.beforeElement);
    } else {
      this.treeAdapter.appendChild(location4.parent, element5);
    }
  }
  //Special elements
  _isSpecialElement(element5, id) {
    const ns = this.treeAdapter.getNamespaceURI(element5);
    return SPECIAL_ELEMENTS[ns].has(id);
  }
  onCharacter(token) {
    this.skipNextNewLine = false;
    if (this.tokenizer.inForeignNode) {
      characterInForeignContent(this, token);
      return;
    }
    switch (this.insertionMode) {
      case InsertionMode.INITIAL: {
        tokenInInitialMode(this, token);
        break;
      }
      case InsertionMode.BEFORE_HTML: {
        tokenBeforeHtml(this, token);
        break;
      }
      case InsertionMode.BEFORE_HEAD: {
        tokenBeforeHead(this, token);
        break;
      }
      case InsertionMode.IN_HEAD: {
        tokenInHead(this, token);
        break;
      }
      case InsertionMode.IN_HEAD_NO_SCRIPT: {
        tokenInHeadNoScript(this, token);
        break;
      }
      case InsertionMode.AFTER_HEAD: {
        tokenAfterHead(this, token);
        break;
      }
      case InsertionMode.IN_BODY:
      case InsertionMode.IN_CAPTION:
      case InsertionMode.IN_CELL:
      case InsertionMode.IN_TEMPLATE: {
        characterInBody(this, token);
        break;
      }
      case InsertionMode.TEXT:
      case InsertionMode.IN_SELECT:
      case InsertionMode.IN_SELECT_IN_TABLE: {
        this._insertCharacters(token);
        break;
      }
      case InsertionMode.IN_TABLE:
      case InsertionMode.IN_TABLE_BODY:
      case InsertionMode.IN_ROW: {
        characterInTable(this, token);
        break;
      }
      case InsertionMode.IN_TABLE_TEXT: {
        characterInTableText(this, token);
        break;
      }
      case InsertionMode.IN_COLUMN_GROUP: {
        tokenInColumnGroup(this, token);
        break;
      }
      case InsertionMode.AFTER_BODY: {
        tokenAfterBody(this, token);
        break;
      }
      case InsertionMode.AFTER_AFTER_BODY: {
        tokenAfterAfterBody(this, token);
        break;
      }
      default:
    }
  }
  onNullCharacter(token) {
    this.skipNextNewLine = false;
    if (this.tokenizer.inForeignNode) {
      nullCharacterInForeignContent(this, token);
      return;
    }
    switch (this.insertionMode) {
      case InsertionMode.INITIAL: {
        tokenInInitialMode(this, token);
        break;
      }
      case InsertionMode.BEFORE_HTML: {
        tokenBeforeHtml(this, token);
        break;
      }
      case InsertionMode.BEFORE_HEAD: {
        tokenBeforeHead(this, token);
        break;
      }
      case InsertionMode.IN_HEAD: {
        tokenInHead(this, token);
        break;
      }
      case InsertionMode.IN_HEAD_NO_SCRIPT: {
        tokenInHeadNoScript(this, token);
        break;
      }
      case InsertionMode.AFTER_HEAD: {
        tokenAfterHead(this, token);
        break;
      }
      case InsertionMode.TEXT: {
        this._insertCharacters(token);
        break;
      }
      case InsertionMode.IN_TABLE:
      case InsertionMode.IN_TABLE_BODY:
      case InsertionMode.IN_ROW: {
        characterInTable(this, token);
        break;
      }
      case InsertionMode.IN_COLUMN_GROUP: {
        tokenInColumnGroup(this, token);
        break;
      }
      case InsertionMode.AFTER_BODY: {
        tokenAfterBody(this, token);
        break;
      }
      case InsertionMode.AFTER_AFTER_BODY: {
        tokenAfterAfterBody(this, token);
        break;
      }
      default:
    }
  }
  onComment(token) {
    this.skipNextNewLine = false;
    if (this.currentNotInHTML) {
      appendComment(this, token);
      return;
    }
    switch (this.insertionMode) {
      case InsertionMode.INITIAL:
      case InsertionMode.BEFORE_HTML:
      case InsertionMode.BEFORE_HEAD:
      case InsertionMode.IN_HEAD:
      case InsertionMode.IN_HEAD_NO_SCRIPT:
      case InsertionMode.AFTER_HEAD:
      case InsertionMode.IN_BODY:
      case InsertionMode.IN_TABLE:
      case InsertionMode.IN_CAPTION:
      case InsertionMode.IN_COLUMN_GROUP:
      case InsertionMode.IN_TABLE_BODY:
      case InsertionMode.IN_ROW:
      case InsertionMode.IN_CELL:
      case InsertionMode.IN_SELECT:
      case InsertionMode.IN_SELECT_IN_TABLE:
      case InsertionMode.IN_TEMPLATE:
      case InsertionMode.IN_FRAMESET:
      case InsertionMode.AFTER_FRAMESET: {
        appendComment(this, token);
        break;
      }
      case InsertionMode.IN_TABLE_TEXT: {
        tokenInTableText(this, token);
        break;
      }
      case InsertionMode.AFTER_BODY: {
        appendCommentToRootHtmlElement(this, token);
        break;
      }
      case InsertionMode.AFTER_AFTER_BODY:
      case InsertionMode.AFTER_AFTER_FRAMESET: {
        appendCommentToDocument(this, token);
        break;
      }
      default:
    }
  }
  onDoctype(token) {
    this.skipNextNewLine = false;
    switch (this.insertionMode) {
      case InsertionMode.INITIAL: {
        doctypeInInitialMode(this, token);
        break;
      }
      case InsertionMode.BEFORE_HEAD:
      case InsertionMode.IN_HEAD:
      case InsertionMode.IN_HEAD_NO_SCRIPT:
      case InsertionMode.AFTER_HEAD: {
        this._err(token, ERR.misplacedDoctype);
        break;
      }
      case InsertionMode.IN_TABLE_TEXT: {
        tokenInTableText(this, token);
        break;
      }
      default:
    }
  }
  onStartTag(token) {
    this.skipNextNewLine = false;
    this.currentToken = token;
    this._processStartTag(token);
    if (token.selfClosing && !token.ackSelfClosing) {
      this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);
    }
  }
  /**
   * Processes a given start tag.
   *
   * `onStartTag` checks if a self-closing tag was recognized. When a token
   * is moved inbetween multiple insertion modes, this check for self-closing
   * could lead to false positives. To avoid this, `_processStartTag` is used
   * for nested calls.
   *
   * @param token The token to process.
   */
  _processStartTag(token) {
    if (this.shouldProcessStartTagTokenInForeignContent(token)) {
      startTagInForeignContent(this, token);
    } else {
      this._startTagOutsideForeignContent(token);
    }
  }
  _startTagOutsideForeignContent(token) {
    switch (this.insertionMode) {
      case InsertionMode.INITIAL: {
        tokenInInitialMode(this, token);
        break;
      }
      case InsertionMode.BEFORE_HTML: {
        startTagBeforeHtml(this, token);
        break;
      }
      case InsertionMode.BEFORE_HEAD: {
        startTagBeforeHead(this, token);
        break;
      }
      case InsertionMode.IN_HEAD: {
        startTagInHead(this, token);
        break;
      }
      case InsertionMode.IN_HEAD_NO_SCRIPT: {
        startTagInHeadNoScript(this, token);
        break;
      }
      case InsertionMode.AFTER_HEAD: {
        startTagAfterHead(this, token);
        break;
      }
      case InsertionMode.IN_BODY: {
        startTagInBody(this, token);
        break;
      }
      case InsertionMode.IN_TABLE: {
        startTagInTable(this, token);
        break;
      }
      case InsertionMode.IN_TABLE_TEXT: {
        tokenInTableText(this, token);
        break;
      }
      case InsertionMode.IN_CAPTION: {
        startTagInCaption(this, token);
        break;
      }
      case InsertionMode.IN_COLUMN_GROUP: {
        startTagInColumnGroup(this, token);
        break;
      }
      case InsertionMode.IN_TABLE_BODY: {
        startTagInTableBody(this, token);
        break;
      }
      case InsertionMode.IN_ROW: {
        startTagInRow(this, token);
        break;
      }
      case InsertionMode.IN_CELL: {
        startTagInCell(this, token);
        break;
      }
      case InsertionMode.IN_SELECT: {
        startTagInSelect(this, token);
        break;
      }
      case InsertionMode.IN_SELECT_IN_TABLE: {
        startTagInSelectInTable(this, token);
        break;
      }
      case InsertionMode.IN_TEMPLATE: {
        startTagInTemplate(this, token);
        break;
      }
      case InsertionMode.AFTER_BODY: {
        startTagAfterBody(this, token);
        break;
      }
      case InsertionMode.IN_FRAMESET: {
        startTagInFrameset(this, token);
        break;
      }
      case InsertionMode.AFTER_FRAMESET: {
        startTagAfterFrameset(this, token);
        break;
      }
      case InsertionMode.AFTER_AFTER_BODY: {
        startTagAfterAfterBody(this, token);
        break;
      }
      case InsertionMode.AFTER_AFTER_FRAMESET: {
        startTagAfterAfterFrameset(this, token);
        break;
      }
      default:
    }
  }
  onEndTag(token) {
    this.skipNextNewLine = false;
    this.currentToken = token;
    if (this.currentNotInHTML) {
      endTagInForeignContent(this, token);
    } else {
      this._endTagOutsideForeignContent(token);
    }
  }
  _endTagOutsideForeignContent(token) {
    switch (this.insertionMode) {
      case InsertionMode.INITIAL: {
        tokenInInitialMode(this, token);
        break;
      }
      case InsertionMode.BEFORE_HTML: {
        endTagBeforeHtml(this, token);
        break;
      }
      case InsertionMode.BEFORE_HEAD: {
        endTagBeforeHead(this, token);
        break;
      }
      case InsertionMode.IN_HEAD: {
        endTagInHead(this, token);
        break;
      }
      case InsertionMode.IN_HEAD_NO_SCRIPT: {
        endTagInHeadNoScript(this, token);
        break;
      }
      case InsertionMode.AFTER_HEAD: {
        endTagAfterHead(this, token);
        break;
      }
      case InsertionMode.IN_BODY: {
        endTagInBody(this, token);
        break;
      }
      case InsertionMode.TEXT: {
        endTagInText(this, token);
        break;
      }
      case InsertionMode.IN_TABLE: {
        endTagInTable(this, token);
        break;
      }
      case InsertionMode.IN_TABLE_TEXT: {
        tokenInTableText(this, token);
        break;
      }
      case InsertionMode.IN_CAPTION: {
        endTagInCaption(this, token);
        break;
      }
      case InsertionMode.IN_COLUMN_GROUP: {
        endTagInColumnGroup(this, token);
        break;
      }
      case InsertionMode.IN_TABLE_BODY: {
        endTagInTableBody(this, token);
        break;
      }
      case InsertionMode.IN_ROW: {
        endTagInRow(this, token);
        break;
      }
      case InsertionMode.IN_CELL: {
        endTagInCell(this, token);
        break;
      }
      case InsertionMode.IN_SELECT: {
        endTagInSelect(this, token);
        break;
      }
      case InsertionMode.IN_SELECT_IN_TABLE: {
        endTagInSelectInTable(this, token);
        break;
      }
      case InsertionMode.IN_TEMPLATE: {
        endTagInTemplate(this, token);
        break;
      }
      case InsertionMode.AFTER_BODY: {
        endTagAfterBody(this, token);
        break;
      }
      case InsertionMode.IN_FRAMESET: {
        endTagInFrameset(this, token);
        break;
      }
      case InsertionMode.AFTER_FRAMESET: {
        endTagAfterFrameset(this, token);
        break;
      }
      case InsertionMode.AFTER_AFTER_BODY: {
        tokenAfterAfterBody(this, token);
        break;
      }
      default:
    }
  }
  onEof(token) {
    switch (this.insertionMode) {
      case InsertionMode.INITIAL: {
        tokenInInitialMode(this, token);
        break;
      }
      case InsertionMode.BEFORE_HTML: {
        tokenBeforeHtml(this, token);
        break;
      }
      case InsertionMode.BEFORE_HEAD: {
        tokenBeforeHead(this, token);
        break;
      }
      case InsertionMode.IN_HEAD: {
        tokenInHead(this, token);
        break;
      }
      case InsertionMode.IN_HEAD_NO_SCRIPT: {
        tokenInHeadNoScript(this, token);
        break;
      }
      case InsertionMode.AFTER_HEAD: {
        tokenAfterHead(this, token);
        break;
      }
      case InsertionMode.IN_BODY:
      case InsertionMode.IN_TABLE:
      case InsertionMode.IN_CAPTION:
      case InsertionMode.IN_COLUMN_GROUP:
      case InsertionMode.IN_TABLE_BODY:
      case InsertionMode.IN_ROW:
      case InsertionMode.IN_CELL:
      case InsertionMode.IN_SELECT:
      case InsertionMode.IN_SELECT_IN_TABLE: {
        eofInBody(this, token);
        break;
      }
      case InsertionMode.TEXT: {
        eofInText(this, token);
        break;
      }
      case InsertionMode.IN_TABLE_TEXT: {
        tokenInTableText(this, token);
        break;
      }
      case InsertionMode.IN_TEMPLATE: {
        eofInTemplate(this, token);
        break;
      }
      case InsertionMode.AFTER_BODY:
      case InsertionMode.IN_FRAMESET:
      case InsertionMode.AFTER_FRAMESET:
      case InsertionMode.AFTER_AFTER_BODY:
      case InsertionMode.AFTER_AFTER_FRAMESET: {
        stopParsing(this, token);
        break;
      }
      default:
    }
  }
  onWhitespaceCharacter(token) {
    if (this.skipNextNewLine) {
      this.skipNextNewLine = false;
      if (token.chars.charCodeAt(0) === CODE_POINTS.LINE_FEED) {
        if (token.chars.length === 1) {
          return;
        }
        token.chars = token.chars.substr(1);
      }
    }
    if (this.tokenizer.inForeignNode) {
      this._insertCharacters(token);
      return;
    }
    switch (this.insertionMode) {
      case InsertionMode.IN_HEAD:
      case InsertionMode.IN_HEAD_NO_SCRIPT:
      case InsertionMode.AFTER_HEAD:
      case InsertionMode.TEXT:
      case InsertionMode.IN_COLUMN_GROUP:
      case InsertionMode.IN_SELECT:
      case InsertionMode.IN_SELECT_IN_TABLE:
      case InsertionMode.IN_FRAMESET:
      case InsertionMode.AFTER_FRAMESET: {
        this._insertCharacters(token);
        break;
      }
      case InsertionMode.IN_BODY:
      case InsertionMode.IN_CAPTION:
      case InsertionMode.IN_CELL:
      case InsertionMode.IN_TEMPLATE:
      case InsertionMode.AFTER_BODY:
      case InsertionMode.AFTER_AFTER_BODY:
      case InsertionMode.AFTER_AFTER_FRAMESET: {
        whitespaceCharacterInBody(this, token);
        break;
      }
      case InsertionMode.IN_TABLE:
      case InsertionMode.IN_TABLE_BODY:
      case InsertionMode.IN_ROW: {
        characterInTable(this, token);
        break;
      }
      case InsertionMode.IN_TABLE_TEXT: {
        whitespaceCharacterInTableText(this, token);
        break;
      }
      default:
    }
  }
};
function aaObtainFormattingElementEntry(p5, token) {
  let formattingElementEntry = p5.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);
  if (formattingElementEntry) {
    if (!p5.openElements.contains(formattingElementEntry.element)) {
      p5.activeFormattingElements.removeEntry(formattingElementEntry);
      formattingElementEntry = null;
    } else if (!p5.openElements.hasInScope(token.tagID)) {
      formattingElementEntry = null;
    }
  } else {
    genericEndTagInBody(p5, token);
  }
  return formattingElementEntry;
}
function aaObtainFurthestBlock(p5, formattingElementEntry) {
  let furthestBlock = null;
  let idx = p5.openElements.stackTop;
  for (; idx >= 0; idx--) {
    const element5 = p5.openElements.items[idx];
    if (element5 === formattingElementEntry.element) {
      break;
    }
    if (p5._isSpecialElement(element5, p5.openElements.tagIDs[idx])) {
      furthestBlock = element5;
    }
  }
  if (!furthestBlock) {
    p5.openElements.shortenToLength(idx < 0 ? 0 : idx);
    p5.activeFormattingElements.removeEntry(formattingElementEntry);
  }
  return furthestBlock;
}
function aaInnerLoop(p5, furthestBlock, formattingElement) {
  let lastElement = furthestBlock;
  let nextElement = p5.openElements.getCommonAncestor(furthestBlock);
  for (let i2 = 0, element5 = nextElement; element5 !== formattingElement; i2++, element5 = nextElement) {
    nextElement = p5.openElements.getCommonAncestor(element5);
    const elementEntry = p5.activeFormattingElements.getElementEntry(element5);
    const counterOverflow = elementEntry && i2 >= AA_INNER_LOOP_ITER;
    const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;
    if (shouldRemoveFromOpenElements) {
      if (counterOverflow) {
        p5.activeFormattingElements.removeEntry(elementEntry);
      }
      p5.openElements.remove(element5);
    } else {
      element5 = aaRecreateElementFromEntry(p5, elementEntry);
      if (lastElement === furthestBlock) {
        p5.activeFormattingElements.bookmark = elementEntry;
      }
      p5.treeAdapter.detachNode(lastElement);
      p5.treeAdapter.appendChild(element5, lastElement);
      lastElement = element5;
    }
  }
  return lastElement;
}
function aaRecreateElementFromEntry(p5, elementEntry) {
  const ns = p5.treeAdapter.getNamespaceURI(elementEntry.element);
  const newElement = p5.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);
  p5.openElements.replace(elementEntry.element, newElement);
  elementEntry.element = newElement;
  return newElement;
}
function aaInsertLastNodeInCommonAncestor(p5, commonAncestor, lastElement) {
  const tn = p5.treeAdapter.getTagName(commonAncestor);
  const tid = getTagID(tn);
  if (p5._isElementCausesFosterParenting(tid)) {
    p5._fosterParentElement(lastElement);
  } else {
    const ns = p5.treeAdapter.getNamespaceURI(commonAncestor);
    if (tid === TAG_ID.TEMPLATE && ns === NS.HTML) {
      commonAncestor = p5.treeAdapter.getTemplateContent(commonAncestor);
    }
    p5.treeAdapter.appendChild(commonAncestor, lastElement);
  }
}
function aaReplaceFormattingElement(p5, furthestBlock, formattingElementEntry) {
  const ns = p5.treeAdapter.getNamespaceURI(formattingElementEntry.element);
  const { token } = formattingElementEntry;
  const newElement = p5.treeAdapter.createElement(token.tagName, ns, token.attrs);
  p5._adoptNodes(furthestBlock, newElement);
  p5.treeAdapter.appendChild(furthestBlock, newElement);
  p5.activeFormattingElements.insertElementAfterBookmark(newElement, token);
  p5.activeFormattingElements.removeEntry(formattingElementEntry);
  p5.openElements.remove(formattingElementEntry.element);
  p5.openElements.insertAfter(furthestBlock, newElement, token.tagID);
}
function callAdoptionAgency(p5, token) {
  for (let i2 = 0; i2 < AA_OUTER_LOOP_ITER; i2++) {
    const formattingElementEntry = aaObtainFormattingElementEntry(p5, token);
    if (!formattingElementEntry) {
      break;
    }
    const furthestBlock = aaObtainFurthestBlock(p5, formattingElementEntry);
    if (!furthestBlock) {
      break;
    }
    p5.activeFormattingElements.bookmark = formattingElementEntry;
    const lastElement = aaInnerLoop(p5, furthestBlock, formattingElementEntry.element);
    const commonAncestor = p5.openElements.getCommonAncestor(formattingElementEntry.element);
    p5.treeAdapter.detachNode(lastElement);
    if (commonAncestor)
      aaInsertLastNodeInCommonAncestor(p5, commonAncestor, lastElement);
    aaReplaceFormattingElement(p5, furthestBlock, formattingElementEntry);
  }
}
function appendComment(p5, token) {
  p5._appendCommentNode(token, p5.openElements.currentTmplContentOrNode);
}
function appendCommentToRootHtmlElement(p5, token) {
  p5._appendCommentNode(token, p5.openElements.items[0]);
}
function appendCommentToDocument(p5, token) {
  p5._appendCommentNode(token, p5.document);
}
function stopParsing(p5, token) {
  p5.stopped = true;
  if (token.location) {
    const target = p5.fragmentContext ? 0 : 2;
    for (let i2 = p5.openElements.stackTop; i2 >= target; i2--) {
      p5._setEndLocation(p5.openElements.items[i2], token);
    }
    if (!p5.fragmentContext && p5.openElements.stackTop >= 0) {
      const htmlElement = p5.openElements.items[0];
      const htmlLocation = p5.treeAdapter.getNodeSourceCodeLocation(htmlElement);
      if (htmlLocation && !htmlLocation.endTag) {
        p5._setEndLocation(htmlElement, token);
        if (p5.openElements.stackTop >= 1) {
          const bodyElement = p5.openElements.items[1];
          const bodyLocation = p5.treeAdapter.getNodeSourceCodeLocation(bodyElement);
          if (bodyLocation && !bodyLocation.endTag) {
            p5._setEndLocation(bodyElement, token);
          }
        }
      }
    }
  }
}
function doctypeInInitialMode(p5, token) {
  p5._setDocumentType(token);
  const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : getDocumentMode(token);
  if (!isConforming(token)) {
    p5._err(token, ERR.nonConformingDoctype);
  }
  p5.treeAdapter.setDocumentMode(p5.document, mode);
  p5.insertionMode = InsertionMode.BEFORE_HTML;
}
function tokenInInitialMode(p5, token) {
  p5._err(token, ERR.missingDoctype, true);
  p5.treeAdapter.setDocumentMode(p5.document, DOCUMENT_MODE.QUIRKS);
  p5.insertionMode = InsertionMode.BEFORE_HTML;
  p5._processToken(token);
}
function startTagBeforeHtml(p5, token) {
  if (token.tagID === TAG_ID.HTML) {
    p5._insertElement(token, NS.HTML);
    p5.insertionMode = InsertionMode.BEFORE_HEAD;
  } else {
    tokenBeforeHtml(p5, token);
  }
}
function endTagBeforeHtml(p5, token) {
  const tn = token.tagID;
  if (tn === TAG_ID.HTML || tn === TAG_ID.HEAD || tn === TAG_ID.BODY || tn === TAG_ID.BR) {
    tokenBeforeHtml(p5, token);
  }
}
function tokenBeforeHtml(p5, token) {
  p5._insertFakeRootElement();
  p5.insertionMode = InsertionMode.BEFORE_HEAD;
  p5._processToken(token);
}
function startTagBeforeHead(p5, token) {
  switch (token.tagID) {
    case TAG_ID.HTML: {
      startTagInBody(p5, token);
      break;
    }
    case TAG_ID.HEAD: {
      p5._insertElement(token, NS.HTML);
      p5.headElement = p5.openElements.current;
      p5.insertionMode = InsertionMode.IN_HEAD;
      break;
    }
    default: {
      tokenBeforeHead(p5, token);
    }
  }
}
function endTagBeforeHead(p5, token) {
  const tn = token.tagID;
  if (tn === TAG_ID.HEAD || tn === TAG_ID.BODY || tn === TAG_ID.HTML || tn === TAG_ID.BR) {
    tokenBeforeHead(p5, token);
  } else {
    p5._err(token, ERR.endTagWithoutMatchingOpenElement);
  }
}
function tokenBeforeHead(p5, token) {
  p5._insertFakeElement(TAG_NAMES.HEAD, TAG_ID.HEAD);
  p5.headElement = p5.openElements.current;
  p5.insertionMode = InsertionMode.IN_HEAD;
  p5._processToken(token);
}
function startTagInHead(p5, token) {
  switch (token.tagID) {
    case TAG_ID.HTML: {
      startTagInBody(p5, token);
      break;
    }
    case TAG_ID.BASE:
    case TAG_ID.BASEFONT:
    case TAG_ID.BGSOUND:
    case TAG_ID.LINK:
    case TAG_ID.META: {
      p5._appendElement(token, NS.HTML);
      token.ackSelfClosing = true;
      break;
    }
    case TAG_ID.TITLE: {
      p5._switchToTextParsing(token, TokenizerMode.RCDATA);
      break;
    }
    case TAG_ID.NOSCRIPT: {
      if (p5.options.scriptingEnabled) {
        p5._switchToTextParsing(token, TokenizerMode.RAWTEXT);
      } else {
        p5._insertElement(token, NS.HTML);
        p5.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;
      }
      break;
    }
    case TAG_ID.NOFRAMES:
    case TAG_ID.STYLE: {
      p5._switchToTextParsing(token, TokenizerMode.RAWTEXT);
      break;
    }
    case TAG_ID.SCRIPT: {
      p5._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA);
      break;
    }
    case TAG_ID.TEMPLATE: {
      p5._insertTemplate(token);
      p5.activeFormattingElements.insertMarker();
      p5.framesetOk = false;
      p5.insertionMode = InsertionMode.IN_TEMPLATE;
      p5.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);
      break;
    }
    case TAG_ID.HEAD: {
      p5._err(token, ERR.misplacedStartTagForHeadElement);
      break;
    }
    default: {
      tokenInHead(p5, token);
    }
  }
}
function endTagInHead(p5, token) {
  switch (token.tagID) {
    case TAG_ID.HEAD: {
      p5.openElements.pop();
      p5.insertionMode = InsertionMode.AFTER_HEAD;
      break;
    }
    case TAG_ID.BODY:
    case TAG_ID.BR:
    case TAG_ID.HTML: {
      tokenInHead(p5, token);
      break;
    }
    case TAG_ID.TEMPLATE: {
      templateEndTagInHead(p5, token);
      break;
    }
    default: {
      p5._err(token, ERR.endTagWithoutMatchingOpenElement);
    }
  }
}
function templateEndTagInHead(p5, token) {
  if (p5.openElements.tmplCount > 0) {
    p5.openElements.generateImpliedEndTagsThoroughly();
    if (p5.openElements.currentTagId !== TAG_ID.TEMPLATE) {
      p5._err(token, ERR.closingOfElementWithOpenChildElements);
    }
    p5.openElements.popUntilTagNamePopped(TAG_ID.TEMPLATE);
    p5.activeFormattingElements.clearToLastMarker();
    p5.tmplInsertionModeStack.shift();
    p5._resetInsertionMode();
  } else {
    p5._err(token, ERR.endTagWithoutMatchingOpenElement);
  }
}
function tokenInHead(p5, token) {
  p5.openElements.pop();
  p5.insertionMode = InsertionMode.AFTER_HEAD;
  p5._processToken(token);
}
function startTagInHeadNoScript(p5, token) {
  switch (token.tagID) {
    case TAG_ID.HTML: {
      startTagInBody(p5, token);
      break;
    }
    case TAG_ID.BASEFONT:
    case TAG_ID.BGSOUND:
    case TAG_ID.HEAD:
    case TAG_ID.LINK:
    case TAG_ID.META:
    case TAG_ID.NOFRAMES:
    case TAG_ID.STYLE: {
      startTagInHead(p5, token);
      break;
    }
    case TAG_ID.NOSCRIPT: {
      p5._err(token, ERR.nestedNoscriptInHead);
      break;
    }
    default: {
      tokenInHeadNoScript(p5, token);
    }
  }
}
function endTagInHeadNoScript(p5, token) {
  switch (token.tagID) {
    case TAG_ID.NOSCRIPT: {
      p5.openElements.pop();
      p5.insertionMode = InsertionMode.IN_HEAD;
      break;
    }
    case TAG_ID.BR: {
      tokenInHeadNoScript(p5, token);
      break;
    }
    default: {
      p5._err(token, ERR.endTagWithoutMatchingOpenElement);
    }
  }
}
function tokenInHeadNoScript(p5, token) {
  const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;
  p5._err(token, errCode);
  p5.openElements.pop();
  p5.insertionMode = InsertionMode.IN_HEAD;
  p5._processToken(token);
}
function startTagAfterHead(p5, token) {
  switch (token.tagID) {
    case TAG_ID.HTML: {
      startTagInBody(p5, token);
      break;
    }
    case TAG_ID.BODY: {
      p5._insertElement(token, NS.HTML);
      p5.framesetOk = false;
      p5.insertionMode = InsertionMode.IN_BODY;
      break;
    }
    case TAG_ID.FRAMESET: {
      p5._insertElement(token, NS.HTML);
      p5.insertionMode = InsertionMode.IN_FRAMESET;
      break;
    }
    case TAG_ID.BASE:
    case TAG_ID.BASEFONT:
    case TAG_ID.BGSOUND:
    case TAG_ID.LINK:
    case TAG_ID.META:
    case TAG_ID.NOFRAMES:
    case TAG_ID.SCRIPT:
    case TAG_ID.STYLE:
    case TAG_ID.TEMPLATE:
    case TAG_ID.TITLE: {
      p5._err(token, ERR.abandonedHeadElementChild);
      p5.openElements.push(p5.headElement, TAG_ID.HEAD);
      startTagInHead(p5, token);
      p5.openElements.remove(p5.headElement);
      break;
    }
    case TAG_ID.HEAD: {
      p5._err(token, ERR.misplacedStartTagForHeadElement);
      break;
    }
    default: {
      tokenAfterHead(p5, token);
    }
  }
}
function endTagAfterHead(p5, token) {
  switch (token.tagID) {
    case TAG_ID.BODY:
    case TAG_ID.HTML:
    case TAG_ID.BR: {
      tokenAfterHead(p5, token);
      break;
    }
    case TAG_ID.TEMPLATE: {
      templateEndTagInHead(p5, token);
      break;
    }
    default: {
      p5._err(token, ERR.endTagWithoutMatchingOpenElement);
    }
  }
}
function tokenAfterHead(p5, token) {
  p5._insertFakeElement(TAG_NAMES.BODY, TAG_ID.BODY);
  p5.insertionMode = InsertionMode.IN_BODY;
  modeInBody(p5, token);
}
function modeInBody(p5, token) {
  switch (token.type) {
    case TokenType.CHARACTER: {
      characterInBody(p5, token);
      break;
    }
    case TokenType.WHITESPACE_CHARACTER: {
      whitespaceCharacterInBody(p5, token);
      break;
    }
    case TokenType.COMMENT: {
      appendComment(p5, token);
      break;
    }
    case TokenType.START_TAG: {
      startTagInBody(p5, token);
      break;
    }
    case TokenType.END_TAG: {
      endTagInBody(p5, token);
      break;
    }
    case TokenType.EOF: {
      eofInBody(p5, token);
      break;
    }
    default:
  }
}
function whitespaceCharacterInBody(p5, token) {
  p5._reconstructActiveFormattingElements();
  p5._insertCharacters(token);
}
function characterInBody(p5, token) {
  p5._reconstructActiveFormattingElements();
  p5._insertCharacters(token);
  p5.framesetOk = false;
}
function htmlStartTagInBody(p5, token) {
  if (p5.openElements.tmplCount === 0) {
    p5.treeAdapter.adoptAttributes(p5.openElements.items[0], token.attrs);
  }
}
function bodyStartTagInBody(p5, token) {
  const bodyElement = p5.openElements.tryPeekProperlyNestedBodyElement();
  if (bodyElement && p5.openElements.tmplCount === 0) {
    p5.framesetOk = false;
    p5.treeAdapter.adoptAttributes(bodyElement, token.attrs);
  }
}
function framesetStartTagInBody(p5, token) {
  const bodyElement = p5.openElements.tryPeekProperlyNestedBodyElement();
  if (p5.framesetOk && bodyElement) {
    p5.treeAdapter.detachNode(bodyElement);
    p5.openElements.popAllUpToHtmlElement();
    p5._insertElement(token, NS.HTML);
    p5.insertionMode = InsertionMode.IN_FRAMESET;
  }
}
function addressStartTagInBody(p5, token) {
  if (p5.openElements.hasInButtonScope(TAG_ID.P)) {
    p5._closePElement();
  }
  p5._insertElement(token, NS.HTML);
}
function numberedHeaderStartTagInBody(p5, token) {
  if (p5.openElements.hasInButtonScope(TAG_ID.P)) {
    p5._closePElement();
  }
  if (isNumberedHeader(p5.openElements.currentTagId)) {
    p5.openElements.pop();
  }
  p5._insertElement(token, NS.HTML);
}
function preStartTagInBody(p5, token) {
  if (p5.openElements.hasInButtonScope(TAG_ID.P)) {
    p5._closePElement();
  }
  p5._insertElement(token, NS.HTML);
  p5.skipNextNewLine = true;
  p5.framesetOk = false;
}
function formStartTagInBody(p5, token) {
  const inTemplate = p5.openElements.tmplCount > 0;
  if (!p5.formElement || inTemplate) {
    if (p5.openElements.hasInButtonScope(TAG_ID.P)) {
      p5._closePElement();
    }
    p5._insertElement(token, NS.HTML);
    if (!inTemplate) {
      p5.formElement = p5.openElements.current;
    }
  }
}
function listItemStartTagInBody(p5, token) {
  p5.framesetOk = false;
  const tn = token.tagID;
  for (let i2 = p5.openElements.stackTop; i2 >= 0; i2--) {
    const elementId = p5.openElements.tagIDs[i2];
    if (tn === TAG_ID.LI && elementId === TAG_ID.LI || (tn === TAG_ID.DD || tn === TAG_ID.DT) && (elementId === TAG_ID.DD || elementId === TAG_ID.DT)) {
      p5.openElements.generateImpliedEndTagsWithExclusion(elementId);
      p5.openElements.popUntilTagNamePopped(elementId);
      break;
    }
    if (elementId !== TAG_ID.ADDRESS && elementId !== TAG_ID.DIV && elementId !== TAG_ID.P && p5._isSpecialElement(p5.openElements.items[i2], elementId)) {
      break;
    }
  }
  if (p5.openElements.hasInButtonScope(TAG_ID.P)) {
    p5._closePElement();
  }
  p5._insertElement(token, NS.HTML);
}
function plaintextStartTagInBody(p5, token) {
  if (p5.openElements.hasInButtonScope(TAG_ID.P)) {
    p5._closePElement();
  }
  p5._insertElement(token, NS.HTML);
  p5.tokenizer.state = TokenizerMode.PLAINTEXT;
}
function buttonStartTagInBody(p5, token) {
  if (p5.openElements.hasInScope(TAG_ID.BUTTON)) {
    p5.openElements.generateImpliedEndTags();
    p5.openElements.popUntilTagNamePopped(TAG_ID.BUTTON);
  }
  p5._reconstructActiveFormattingElements();
  p5._insertElement(token, NS.HTML);
  p5.framesetOk = false;
}
function aStartTagInBody(p5, token) {
  const activeElementEntry = p5.activeFormattingElements.getElementEntryInScopeWithTagName(TAG_NAMES.A);
  if (activeElementEntry) {
    callAdoptionAgency(p5, token);
    p5.openElements.remove(activeElementEntry.element);
    p5.activeFormattingElements.removeEntry(activeElementEntry);
  }
  p5._reconstructActiveFormattingElements();
  p5._insertElement(token, NS.HTML);
  p5.activeFormattingElements.pushElement(p5.openElements.current, token);
}
function bStartTagInBody(p5, token) {
  p5._reconstructActiveFormattingElements();
  p5._insertElement(token, NS.HTML);
  p5.activeFormattingElements.pushElement(p5.openElements.current, token);
}
function nobrStartTagInBody(p5, token) {
  p5._reconstructActiveFormattingElements();
  if (p5.openElements.hasInScope(TAG_ID.NOBR)) {
    callAdoptionAgency(p5, token);
    p5._reconstructActiveFormattingElements();
  }
  p5._insertElement(token, NS.HTML);
  p5.activeFormattingElements.pushElement(p5.openElements.current, token);
}
function appletStartTagInBody(p5, token) {
  p5._reconstructActiveFormattingElements();
  p5._insertElement(token, NS.HTML);
  p5.activeFormattingElements.insertMarker();
  p5.framesetOk = false;
}
function tableStartTagInBody(p5, token) {
  if (p5.treeAdapter.getDocumentMode(p5.document) !== DOCUMENT_MODE.QUIRKS && p5.openElements.hasInButtonScope(TAG_ID.P)) {
    p5._closePElement();
  }
  p5._insertElement(token, NS.HTML);
  p5.framesetOk = false;
  p5.insertionMode = InsertionMode.IN_TABLE;
}
function areaStartTagInBody(p5, token) {
  p5._reconstructActiveFormattingElements();
  p5._appendElement(token, NS.HTML);
  p5.framesetOk = false;
  token.ackSelfClosing = true;
}
function isHiddenInput(token) {
  const inputType = getTokenAttr(token, ATTRS.TYPE);
  return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;
}
function inputStartTagInBody(p5, token) {
  p5._reconstructActiveFormattingElements();
  p5._appendElement(token, NS.HTML);
  if (!isHiddenInput(token)) {
    p5.framesetOk = false;
  }
  token.ackSelfClosing = true;
}
function paramStartTagInBody(p5, token) {
  p5._appendElement(token, NS.HTML);
  token.ackSelfClosing = true;
}
function hrStartTagInBody(p5, token) {
  if (p5.openElements.hasInButtonScope(TAG_ID.P)) {
    p5._closePElement();
  }
  p5._appendElement(token, NS.HTML);
  p5.framesetOk = false;
  token.ackSelfClosing = true;
}
function imageStartTagInBody(p5, token) {
  token.tagName = TAG_NAMES.IMG;
  token.tagID = TAG_ID.IMG;
  areaStartTagInBody(p5, token);
}
function textareaStartTagInBody(p5, token) {
  p5._insertElement(token, NS.HTML);
  p5.skipNextNewLine = true;
  p5.tokenizer.state = TokenizerMode.RCDATA;
  p5.originalInsertionMode = p5.insertionMode;
  p5.framesetOk = false;
  p5.insertionMode = InsertionMode.TEXT;
}
function xmpStartTagInBody(p5, token) {
  if (p5.openElements.hasInButtonScope(TAG_ID.P)) {
    p5._closePElement();
  }
  p5._reconstructActiveFormattingElements();
  p5.framesetOk = false;
  p5._switchToTextParsing(token, TokenizerMode.RAWTEXT);
}
function iframeStartTagInBody(p5, token) {
  p5.framesetOk = false;
  p5._switchToTextParsing(token, TokenizerMode.RAWTEXT);
}
function noembedStartTagInBody(p5, token) {
  p5._switchToTextParsing(token, TokenizerMode.RAWTEXT);
}
function selectStartTagInBody(p5, token) {
  p5._reconstructActiveFormattingElements();
  p5._insertElement(token, NS.HTML);
  p5.framesetOk = false;
  p5.insertionMode = p5.insertionMode === InsertionMode.IN_TABLE || p5.insertionMode === InsertionMode.IN_CAPTION || p5.insertionMode === InsertionMode.IN_TABLE_BODY || p5.insertionMode === InsertionMode.IN_ROW || p5.insertionMode === InsertionMode.IN_CELL ? InsertionMode.IN_SELECT_IN_TABLE : InsertionMode.IN_SELECT;
}
function optgroupStartTagInBody(p5, token) {
  if (p5.openElements.currentTagId === TAG_ID.OPTION) {
    p5.openElements.pop();
  }
  p5._reconstructActiveFormattingElements();
  p5._insertElement(token, NS.HTML);
}
function rbStartTagInBody(p5, token) {
  if (p5.openElements.hasInScope(TAG_ID.RUBY)) {
    p5.openElements.generateImpliedEndTags();
  }
  p5._insertElement(token, NS.HTML);
}
function rtStartTagInBody(p5, token) {
  if (p5.openElements.hasInScope(TAG_ID.RUBY)) {
    p5.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.RTC);
  }
  p5._insertElement(token, NS.HTML);
}
function mathStartTagInBody(p5, token) {
  p5._reconstructActiveFormattingElements();
  adjustTokenMathMLAttrs(token);
  adjustTokenXMLAttrs(token);
  if (token.selfClosing) {
    p5._appendElement(token, NS.MATHML);
  } else {
    p5._insertElement(token, NS.MATHML);
  }
  token.ackSelfClosing = true;
}
function svgStartTagInBody(p5, token) {
  p5._reconstructActiveFormattingElements();
  adjustTokenSVGAttrs(token);
  adjustTokenXMLAttrs(token);
  if (token.selfClosing) {
    p5._appendElement(token, NS.SVG);
  } else {
    p5._insertElement(token, NS.SVG);
  }
  token.ackSelfClosing = true;
}
function genericStartTagInBody(p5, token) {
  p5._reconstructActiveFormattingElements();
  p5._insertElement(token, NS.HTML);
}
function startTagInBody(p5, token) {
  switch (token.tagID) {
    case TAG_ID.I:
    case TAG_ID.S:
    case TAG_ID.B:
    case TAG_ID.U:
    case TAG_ID.EM:
    case TAG_ID.TT:
    case TAG_ID.BIG:
    case TAG_ID.CODE:
    case TAG_ID.FONT:
    case TAG_ID.SMALL:
    case TAG_ID.STRIKE:
    case TAG_ID.STRONG: {
      bStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.A: {
      aStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.H1:
    case TAG_ID.H2:
    case TAG_ID.H3:
    case TAG_ID.H4:
    case TAG_ID.H5:
    case TAG_ID.H6: {
      numberedHeaderStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.P:
    case TAG_ID.DL:
    case TAG_ID.OL:
    case TAG_ID.UL:
    case TAG_ID.DIV:
    case TAG_ID.DIR:
    case TAG_ID.NAV:
    case TAG_ID.MAIN:
    case TAG_ID.MENU:
    case TAG_ID.ASIDE:
    case TAG_ID.CENTER:
    case TAG_ID.FIGURE:
    case TAG_ID.FOOTER:
    case TAG_ID.HEADER:
    case TAG_ID.HGROUP:
    case TAG_ID.DIALOG:
    case TAG_ID.DETAILS:
    case TAG_ID.ADDRESS:
    case TAG_ID.ARTICLE:
    case TAG_ID.SECTION:
    case TAG_ID.SUMMARY:
    case TAG_ID.FIELDSET:
    case TAG_ID.BLOCKQUOTE:
    case TAG_ID.FIGCAPTION: {
      addressStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.LI:
    case TAG_ID.DD:
    case TAG_ID.DT: {
      listItemStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.BR:
    case TAG_ID.IMG:
    case TAG_ID.WBR:
    case TAG_ID.AREA:
    case TAG_ID.EMBED:
    case TAG_ID.KEYGEN: {
      areaStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.HR: {
      hrStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.RB:
    case TAG_ID.RTC: {
      rbStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.RT:
    case TAG_ID.RP: {
      rtStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.PRE:
    case TAG_ID.LISTING: {
      preStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.XMP: {
      xmpStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.SVG: {
      svgStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.HTML: {
      htmlStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.BASE:
    case TAG_ID.LINK:
    case TAG_ID.META:
    case TAG_ID.STYLE:
    case TAG_ID.TITLE:
    case TAG_ID.SCRIPT:
    case TAG_ID.BGSOUND:
    case TAG_ID.BASEFONT:
    case TAG_ID.TEMPLATE: {
      startTagInHead(p5, token);
      break;
    }
    case TAG_ID.BODY: {
      bodyStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.FORM: {
      formStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.NOBR: {
      nobrStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.MATH: {
      mathStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.TABLE: {
      tableStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.INPUT: {
      inputStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.PARAM:
    case TAG_ID.TRACK:
    case TAG_ID.SOURCE: {
      paramStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.IMAGE: {
      imageStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.BUTTON: {
      buttonStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.APPLET:
    case TAG_ID.OBJECT:
    case TAG_ID.MARQUEE: {
      appletStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.IFRAME: {
      iframeStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.SELECT: {
      selectStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.OPTION:
    case TAG_ID.OPTGROUP: {
      optgroupStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.NOEMBED: {
      noembedStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.FRAMESET: {
      framesetStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.TEXTAREA: {
      textareaStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.NOSCRIPT: {
      if (p5.options.scriptingEnabled) {
        noembedStartTagInBody(p5, token);
      } else {
        genericStartTagInBody(p5, token);
      }
      break;
    }
    case TAG_ID.PLAINTEXT: {
      plaintextStartTagInBody(p5, token);
      break;
    }
    case TAG_ID.COL:
    case TAG_ID.TH:
    case TAG_ID.TD:
    case TAG_ID.TR:
    case TAG_ID.HEAD:
    case TAG_ID.FRAME:
    case TAG_ID.TBODY:
    case TAG_ID.TFOOT:
    case TAG_ID.THEAD:
    case TAG_ID.CAPTION:
    case TAG_ID.COLGROUP: {
      break;
    }
    default: {
      genericStartTagInBody(p5, token);
    }
  }
}
function bodyEndTagInBody(p5, token) {
  if (p5.openElements.hasInScope(TAG_ID.BODY)) {
    p5.insertionMode = InsertionMode.AFTER_BODY;
    if (p5.options.sourceCodeLocationInfo) {
      const bodyElement = p5.openElements.tryPeekProperlyNestedBodyElement();
      if (bodyElement) {
        p5._setEndLocation(bodyElement, token);
      }
    }
  }
}
function htmlEndTagInBody(p5, token) {
  if (p5.openElements.hasInScope(TAG_ID.BODY)) {
    p5.insertionMode = InsertionMode.AFTER_BODY;
    endTagAfterBody(p5, token);
  }
}
function addressEndTagInBody(p5, token) {
  const tn = token.tagID;
  if (p5.openElements.hasInScope(tn)) {
    p5.openElements.generateImpliedEndTags();
    p5.openElements.popUntilTagNamePopped(tn);
  }
}
function formEndTagInBody(p5) {
  const inTemplate = p5.openElements.tmplCount > 0;
  const { formElement } = p5;
  if (!inTemplate) {
    p5.formElement = null;
  }
  if ((formElement || inTemplate) && p5.openElements.hasInScope(TAG_ID.FORM)) {
    p5.openElements.generateImpliedEndTags();
    if (inTemplate) {
      p5.openElements.popUntilTagNamePopped(TAG_ID.FORM);
    } else if (formElement) {
      p5.openElements.remove(formElement);
    }
  }
}
function pEndTagInBody(p5) {
  if (!p5.openElements.hasInButtonScope(TAG_ID.P)) {
    p5._insertFakeElement(TAG_NAMES.P, TAG_ID.P);
  }
  p5._closePElement();
}
function liEndTagInBody(p5) {
  if (p5.openElements.hasInListItemScope(TAG_ID.LI)) {
    p5.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.LI);
    p5.openElements.popUntilTagNamePopped(TAG_ID.LI);
  }
}
function ddEndTagInBody(p5, token) {
  const tn = token.tagID;
  if (p5.openElements.hasInScope(tn)) {
    p5.openElements.generateImpliedEndTagsWithExclusion(tn);
    p5.openElements.popUntilTagNamePopped(tn);
  }
}
function numberedHeaderEndTagInBody(p5) {
  if (p5.openElements.hasNumberedHeaderInScope()) {
    p5.openElements.generateImpliedEndTags();
    p5.openElements.popUntilNumberedHeaderPopped();
  }
}
function appletEndTagInBody(p5, token) {
  const tn = token.tagID;
  if (p5.openElements.hasInScope(tn)) {
    p5.openElements.generateImpliedEndTags();
    p5.openElements.popUntilTagNamePopped(tn);
    p5.activeFormattingElements.clearToLastMarker();
  }
}
function brEndTagInBody(p5) {
  p5._reconstructActiveFormattingElements();
  p5._insertFakeElement(TAG_NAMES.BR, TAG_ID.BR);
  p5.openElements.pop();
  p5.framesetOk = false;
}
function genericEndTagInBody(p5, token) {
  const tn = token.tagName;
  const tid = token.tagID;
  for (let i2 = p5.openElements.stackTop; i2 > 0; i2--) {
    const element5 = p5.openElements.items[i2];
    const elementId = p5.openElements.tagIDs[i2];
    if (tid === elementId && (tid !== TAG_ID.UNKNOWN || p5.treeAdapter.getTagName(element5) === tn)) {
      p5.openElements.generateImpliedEndTagsWithExclusion(tid);
      if (p5.openElements.stackTop >= i2)
        p5.openElements.shortenToLength(i2);
      break;
    }
    if (p5._isSpecialElement(element5, elementId)) {
      break;
    }
  }
}
function endTagInBody(p5, token) {
  switch (token.tagID) {
    case TAG_ID.A:
    case TAG_ID.B:
    case TAG_ID.I:
    case TAG_ID.S:
    case TAG_ID.U:
    case TAG_ID.EM:
    case TAG_ID.TT:
    case TAG_ID.BIG:
    case TAG_ID.CODE:
    case TAG_ID.FONT:
    case TAG_ID.NOBR:
    case TAG_ID.SMALL:
    case TAG_ID.STRIKE:
    case TAG_ID.STRONG: {
      callAdoptionAgency(p5, token);
      break;
    }
    case TAG_ID.P: {
      pEndTagInBody(p5);
      break;
    }
    case TAG_ID.DL:
    case TAG_ID.UL:
    case TAG_ID.OL:
    case TAG_ID.DIR:
    case TAG_ID.DIV:
    case TAG_ID.NAV:
    case TAG_ID.PRE:
    case TAG_ID.MAIN:
    case TAG_ID.MENU:
    case TAG_ID.ASIDE:
    case TAG_ID.BUTTON:
    case TAG_ID.CENTER:
    case TAG_ID.FIGURE:
    case TAG_ID.FOOTER:
    case TAG_ID.HEADER:
    case TAG_ID.HGROUP:
    case TAG_ID.DIALOG:
    case TAG_ID.ADDRESS:
    case TAG_ID.ARTICLE:
    case TAG_ID.DETAILS:
    case TAG_ID.SECTION:
    case TAG_ID.SUMMARY:
    case TAG_ID.LISTING:
    case TAG_ID.FIELDSET:
    case TAG_ID.BLOCKQUOTE:
    case TAG_ID.FIGCAPTION: {
      addressEndTagInBody(p5, token);
      break;
    }
    case TAG_ID.LI: {
      liEndTagInBody(p5);
      break;
    }
    case TAG_ID.DD:
    case TAG_ID.DT: {
      ddEndTagInBody(p5, token);
      break;
    }
    case TAG_ID.H1:
    case TAG_ID.H2:
    case TAG_ID.H3:
    case TAG_ID.H4:
    case TAG_ID.H5:
    case TAG_ID.H6: {
      numberedHeaderEndTagInBody(p5);
      break;
    }
    case TAG_ID.BR: {
      brEndTagInBody(p5);
      break;
    }
    case TAG_ID.BODY: {
      bodyEndTagInBody(p5, token);
      break;
    }
    case TAG_ID.HTML: {
      htmlEndTagInBody(p5, token);
      break;
    }
    case TAG_ID.FORM: {
      formEndTagInBody(p5);
      break;
    }
    case TAG_ID.APPLET:
    case TAG_ID.OBJECT:
    case TAG_ID.MARQUEE: {
      appletEndTagInBody(p5, token);
      break;
    }
    case TAG_ID.TEMPLATE: {
      templateEndTagInHead(p5, token);
      break;
    }
    default: {
      genericEndTagInBody(p5, token);
    }
  }
}
function eofInBody(p5, token) {
  if (p5.tmplInsertionModeStack.length > 0) {
    eofInTemplate(p5, token);
  } else {
    stopParsing(p5, token);
  }
}
function endTagInText(p5, token) {
  var _a6;
  if (token.tagID === TAG_ID.SCRIPT) {
    (_a6 = p5.scriptHandler) === null || _a6 === void 0 ? void 0 : _a6.call(p5, p5.openElements.current);
  }
  p5.openElements.pop();
  p5.insertionMode = p5.originalInsertionMode;
}
function eofInText(p5, token) {
  p5._err(token, ERR.eofInElementThatCanContainOnlyText);
  p5.openElements.pop();
  p5.insertionMode = p5.originalInsertionMode;
  p5.onEof(token);
}
function characterInTable(p5, token) {
  if (TABLE_STRUCTURE_TAGS.has(p5.openElements.currentTagId)) {
    p5.pendingCharacterTokens.length = 0;
    p5.hasNonWhitespacePendingCharacterToken = false;
    p5.originalInsertionMode = p5.insertionMode;
    p5.insertionMode = InsertionMode.IN_TABLE_TEXT;
    switch (token.type) {
      case TokenType.CHARACTER: {
        characterInTableText(p5, token);
        break;
      }
      case TokenType.WHITESPACE_CHARACTER: {
        whitespaceCharacterInTableText(p5, token);
        break;
      }
    }
  } else {
    tokenInTable(p5, token);
  }
}
function captionStartTagInTable(p5, token) {
  p5.openElements.clearBackToTableContext();
  p5.activeFormattingElements.insertMarker();
  p5._insertElement(token, NS.HTML);
  p5.insertionMode = InsertionMode.IN_CAPTION;
}
function colgroupStartTagInTable(p5, token) {
  p5.openElements.clearBackToTableContext();
  p5._insertElement(token, NS.HTML);
  p5.insertionMode = InsertionMode.IN_COLUMN_GROUP;
}
function colStartTagInTable(p5, token) {
  p5.openElements.clearBackToTableContext();
  p5._insertFakeElement(TAG_NAMES.COLGROUP, TAG_ID.COLGROUP);
  p5.insertionMode = InsertionMode.IN_COLUMN_GROUP;
  startTagInColumnGroup(p5, token);
}
function tbodyStartTagInTable(p5, token) {
  p5.openElements.clearBackToTableContext();
  p5._insertElement(token, NS.HTML);
  p5.insertionMode = InsertionMode.IN_TABLE_BODY;
}
function tdStartTagInTable(p5, token) {
  p5.openElements.clearBackToTableContext();
  p5._insertFakeElement(TAG_NAMES.TBODY, TAG_ID.TBODY);
  p5.insertionMode = InsertionMode.IN_TABLE_BODY;
  startTagInTableBody(p5, token);
}
function tableStartTagInTable(p5, token) {
  if (p5.openElements.hasInTableScope(TAG_ID.TABLE)) {
    p5.openElements.popUntilTagNamePopped(TAG_ID.TABLE);
    p5._resetInsertionMode();
    p5._processStartTag(token);
  }
}
function inputStartTagInTable(p5, token) {
  if (isHiddenInput(token)) {
    p5._appendElement(token, NS.HTML);
  } else {
    tokenInTable(p5, token);
  }
  token.ackSelfClosing = true;
}
function formStartTagInTable(p5, token) {
  if (!p5.formElement && p5.openElements.tmplCount === 0) {
    p5._insertElement(token, NS.HTML);
    p5.formElement = p5.openElements.current;
    p5.openElements.pop();
  }
}
function startTagInTable(p5, token) {
  switch (token.tagID) {
    case TAG_ID.TD:
    case TAG_ID.TH:
    case TAG_ID.TR: {
      tdStartTagInTable(p5, token);
      break;
    }
    case TAG_ID.STYLE:
    case TAG_ID.SCRIPT:
    case TAG_ID.TEMPLATE: {
      startTagInHead(p5, token);
      break;
    }
    case TAG_ID.COL: {
      colStartTagInTable(p5, token);
      break;
    }
    case TAG_ID.FORM: {
      formStartTagInTable(p5, token);
      break;
    }
    case TAG_ID.TABLE: {
      tableStartTagInTable(p5, token);
      break;
    }
    case TAG_ID.TBODY:
    case TAG_ID.TFOOT:
    case TAG_ID.THEAD: {
      tbodyStartTagInTable(p5, token);
      break;
    }
    case TAG_ID.INPUT: {
      inputStartTagInTable(p5, token);
      break;
    }
    case TAG_ID.CAPTION: {
      captionStartTagInTable(p5, token);
      break;
    }
    case TAG_ID.COLGROUP: {
      colgroupStartTagInTable(p5, token);
      break;
    }
    default: {
      tokenInTable(p5, token);
    }
  }
}
function endTagInTable(p5, token) {
  switch (token.tagID) {
    case TAG_ID.TABLE: {
      if (p5.openElements.hasInTableScope(TAG_ID.TABLE)) {
        p5.openElements.popUntilTagNamePopped(TAG_ID.TABLE);
        p5._resetInsertionMode();
      }
      break;
    }
    case TAG_ID.TEMPLATE: {
      templateEndTagInHead(p5, token);
      break;
    }
    case TAG_ID.BODY:
    case TAG_ID.CAPTION:
    case TAG_ID.COL:
    case TAG_ID.COLGROUP:
    case TAG_ID.HTML:
    case TAG_ID.TBODY:
    case TAG_ID.TD:
    case TAG_ID.TFOOT:
    case TAG_ID.TH:
    case TAG_ID.THEAD:
    case TAG_ID.TR: {
      break;
    }
    default: {
      tokenInTable(p5, token);
    }
  }
}
function tokenInTable(p5, token) {
  const savedFosterParentingState = p5.fosterParentingEnabled;
  p5.fosterParentingEnabled = true;
  modeInBody(p5, token);
  p5.fosterParentingEnabled = savedFosterParentingState;
}
function whitespaceCharacterInTableText(p5, token) {
  p5.pendingCharacterTokens.push(token);
}
function characterInTableText(p5, token) {
  p5.pendingCharacterTokens.push(token);
  p5.hasNonWhitespacePendingCharacterToken = true;
}
function tokenInTableText(p5, token) {
  let i2 = 0;
  if (p5.hasNonWhitespacePendingCharacterToken) {
    for (; i2 < p5.pendingCharacterTokens.length; i2++) {
      tokenInTable(p5, p5.pendingCharacterTokens[i2]);
    }
  } else {
    for (; i2 < p5.pendingCharacterTokens.length; i2++) {
      p5._insertCharacters(p5.pendingCharacterTokens[i2]);
    }
  }
  p5.insertionMode = p5.originalInsertionMode;
  p5._processToken(token);
}
var TABLE_VOID_ELEMENTS = /* @__PURE__ */ new Set([TAG_ID.CAPTION, TAG_ID.COL, TAG_ID.COLGROUP, TAG_ID.TBODY, TAG_ID.TD, TAG_ID.TFOOT, TAG_ID.TH, TAG_ID.THEAD, TAG_ID.TR]);
function startTagInCaption(p5, token) {
  const tn = token.tagID;
  if (TABLE_VOID_ELEMENTS.has(tn)) {
    if (p5.openElements.hasInTableScope(TAG_ID.CAPTION)) {
      p5.openElements.generateImpliedEndTags();
      p5.openElements.popUntilTagNamePopped(TAG_ID.CAPTION);
      p5.activeFormattingElements.clearToLastMarker();
      p5.insertionMode = InsertionMode.IN_TABLE;
      startTagInTable(p5, token);
    }
  } else {
    startTagInBody(p5, token);
  }
}
function endTagInCaption(p5, token) {
  const tn = token.tagID;
  switch (tn) {
    case TAG_ID.CAPTION:
    case TAG_ID.TABLE: {
      if (p5.openElements.hasInTableScope(TAG_ID.CAPTION)) {
        p5.openElements.generateImpliedEndTags();
        p5.openElements.popUntilTagNamePopped(TAG_ID.CAPTION);
        p5.activeFormattingElements.clearToLastMarker();
        p5.insertionMode = InsertionMode.IN_TABLE;
        if (tn === TAG_ID.TABLE) {
          endTagInTable(p5, token);
        }
      }
      break;
    }
    case TAG_ID.BODY:
    case TAG_ID.COL:
    case TAG_ID.COLGROUP:
    case TAG_ID.HTML:
    case TAG_ID.TBODY:
    case TAG_ID.TD:
    case TAG_ID.TFOOT:
    case TAG_ID.TH:
    case TAG_ID.THEAD:
    case TAG_ID.TR: {
      break;
    }
    default: {
      endTagInBody(p5, token);
    }
  }
}
function startTagInColumnGroup(p5, token) {
  switch (token.tagID) {
    case TAG_ID.HTML: {
      startTagInBody(p5, token);
      break;
    }
    case TAG_ID.COL: {
      p5._appendElement(token, NS.HTML);
      token.ackSelfClosing = true;
      break;
    }
    case TAG_ID.TEMPLATE: {
      startTagInHead(p5, token);
      break;
    }
    default: {
      tokenInColumnGroup(p5, token);
    }
  }
}
function endTagInColumnGroup(p5, token) {
  switch (token.tagID) {
    case TAG_ID.COLGROUP: {
      if (p5.openElements.currentTagId === TAG_ID.COLGROUP) {
        p5.openElements.pop();
        p5.insertionMode = InsertionMode.IN_TABLE;
      }
      break;
    }
    case TAG_ID.TEMPLATE: {
      templateEndTagInHead(p5, token);
      break;
    }
    case TAG_ID.COL: {
      break;
    }
    default: {
      tokenInColumnGroup(p5, token);
    }
  }
}
function tokenInColumnGroup(p5, token) {
  if (p5.openElements.currentTagId === TAG_ID.COLGROUP) {
    p5.openElements.pop();
    p5.insertionMode = InsertionMode.IN_TABLE;
    p5._processToken(token);
  }
}
function startTagInTableBody(p5, token) {
  switch (token.tagID) {
    case TAG_ID.TR: {
      p5.openElements.clearBackToTableBodyContext();
      p5._insertElement(token, NS.HTML);
      p5.insertionMode = InsertionMode.IN_ROW;
      break;
    }
    case TAG_ID.TH:
    case TAG_ID.TD: {
      p5.openElements.clearBackToTableBodyContext();
      p5._insertFakeElement(TAG_NAMES.TR, TAG_ID.TR);
      p5.insertionMode = InsertionMode.IN_ROW;
      startTagInRow(p5, token);
      break;
    }
    case TAG_ID.CAPTION:
    case TAG_ID.COL:
    case TAG_ID.COLGROUP:
    case TAG_ID.TBODY:
    case TAG_ID.TFOOT:
    case TAG_ID.THEAD: {
      if (p5.openElements.hasTableBodyContextInTableScope()) {
        p5.openElements.clearBackToTableBodyContext();
        p5.openElements.pop();
        p5.insertionMode = InsertionMode.IN_TABLE;
        startTagInTable(p5, token);
      }
      break;
    }
    default: {
      startTagInTable(p5, token);
    }
  }
}
function endTagInTableBody(p5, token) {
  const tn = token.tagID;
  switch (token.tagID) {
    case TAG_ID.TBODY:
    case TAG_ID.TFOOT:
    case TAG_ID.THEAD: {
      if (p5.openElements.hasInTableScope(tn)) {
        p5.openElements.clearBackToTableBodyContext();
        p5.openElements.pop();
        p5.insertionMode = InsertionMode.IN_TABLE;
      }
      break;
    }
    case TAG_ID.TABLE: {
      if (p5.openElements.hasTableBodyContextInTableScope()) {
        p5.openElements.clearBackToTableBodyContext();
        p5.openElements.pop();
        p5.insertionMode = InsertionMode.IN_TABLE;
        endTagInTable(p5, token);
      }
      break;
    }
    case TAG_ID.BODY:
    case TAG_ID.CAPTION:
    case TAG_ID.COL:
    case TAG_ID.COLGROUP:
    case TAG_ID.HTML:
    case TAG_ID.TD:
    case TAG_ID.TH:
    case TAG_ID.TR: {
      break;
    }
    default: {
      endTagInTable(p5, token);
    }
  }
}
function startTagInRow(p5, token) {
  switch (token.tagID) {
    case TAG_ID.TH:
    case TAG_ID.TD: {
      p5.openElements.clearBackToTableRowContext();
      p5._insertElement(token, NS.HTML);
      p5.insertionMode = InsertionMode.IN_CELL;
      p5.activeFormattingElements.insertMarker();
      break;
    }
    case TAG_ID.CAPTION:
    case TAG_ID.COL:
    case TAG_ID.COLGROUP:
    case TAG_ID.TBODY:
    case TAG_ID.TFOOT:
    case TAG_ID.THEAD:
    case TAG_ID.TR: {
      if (p5.openElements.hasInTableScope(TAG_ID.TR)) {
        p5.openElements.clearBackToTableRowContext();
        p5.openElements.pop();
        p5.insertionMode = InsertionMode.IN_TABLE_BODY;
        startTagInTableBody(p5, token);
      }
      break;
    }
    default: {
      startTagInTable(p5, token);
    }
  }
}
function endTagInRow(p5, token) {
  switch (token.tagID) {
    case TAG_ID.TR: {
      if (p5.openElements.hasInTableScope(TAG_ID.TR)) {
        p5.openElements.clearBackToTableRowContext();
        p5.openElements.pop();
        p5.insertionMode = InsertionMode.IN_TABLE_BODY;
      }
      break;
    }
    case TAG_ID.TABLE: {
      if (p5.openElements.hasInTableScope(TAG_ID.TR)) {
        p5.openElements.clearBackToTableRowContext();
        p5.openElements.pop();
        p5.insertionMode = InsertionMode.IN_TABLE_BODY;
        endTagInTableBody(p5, token);
      }
      break;
    }
    case TAG_ID.TBODY:
    case TAG_ID.TFOOT:
    case TAG_ID.THEAD: {
      if (p5.openElements.hasInTableScope(token.tagID) || p5.openElements.hasInTableScope(TAG_ID.TR)) {
        p5.openElements.clearBackToTableRowContext();
        p5.openElements.pop();
        p5.insertionMode = InsertionMode.IN_TABLE_BODY;
        endTagInTableBody(p5, token);
      }
      break;
    }
    case TAG_ID.BODY:
    case TAG_ID.CAPTION:
    case TAG_ID.COL:
    case TAG_ID.COLGROUP:
    case TAG_ID.HTML:
    case TAG_ID.TD:
    case TAG_ID.TH: {
      break;
    }
    default: {
      endTagInTable(p5, token);
    }
  }
}
function startTagInCell(p5, token) {
  const tn = token.tagID;
  if (TABLE_VOID_ELEMENTS.has(tn)) {
    if (p5.openElements.hasInTableScope(TAG_ID.TD) || p5.openElements.hasInTableScope(TAG_ID.TH)) {
      p5._closeTableCell();
      startTagInRow(p5, token);
    }
  } else {
    startTagInBody(p5, token);
  }
}
function endTagInCell(p5, token) {
  const tn = token.tagID;
  switch (tn) {
    case TAG_ID.TD:
    case TAG_ID.TH: {
      if (p5.openElements.hasInTableScope(tn)) {
        p5.openElements.generateImpliedEndTags();
        p5.openElements.popUntilTagNamePopped(tn);
        p5.activeFormattingElements.clearToLastMarker();
        p5.insertionMode = InsertionMode.IN_ROW;
      }
      break;
    }
    case TAG_ID.TABLE:
    case TAG_ID.TBODY:
    case TAG_ID.TFOOT:
    case TAG_ID.THEAD:
    case TAG_ID.TR: {
      if (p5.openElements.hasInTableScope(tn)) {
        p5._closeTableCell();
        endTagInRow(p5, token);
      }
      break;
    }
    case TAG_ID.BODY:
    case TAG_ID.CAPTION:
    case TAG_ID.COL:
    case TAG_ID.COLGROUP:
    case TAG_ID.HTML: {
      break;
    }
    default: {
      endTagInBody(p5, token);
    }
  }
}
function startTagInSelect(p5, token) {
  switch (token.tagID) {
    case TAG_ID.HTML: {
      startTagInBody(p5, token);
      break;
    }
    case TAG_ID.OPTION: {
      if (p5.openElements.currentTagId === TAG_ID.OPTION) {
        p5.openElements.pop();
      }
      p5._insertElement(token, NS.HTML);
      break;
    }
    case TAG_ID.OPTGROUP: {
      if (p5.openElements.currentTagId === TAG_ID.OPTION) {
        p5.openElements.pop();
      }
      if (p5.openElements.currentTagId === TAG_ID.OPTGROUP) {
        p5.openElements.pop();
      }
      p5._insertElement(token, NS.HTML);
      break;
    }
    case TAG_ID.INPUT:
    case TAG_ID.KEYGEN:
    case TAG_ID.TEXTAREA:
    case TAG_ID.SELECT: {
      if (p5.openElements.hasInSelectScope(TAG_ID.SELECT)) {
        p5.openElements.popUntilTagNamePopped(TAG_ID.SELECT);
        p5._resetInsertionMode();
        if (token.tagID !== TAG_ID.SELECT) {
          p5._processStartTag(token);
        }
      }
      break;
    }
    case TAG_ID.SCRIPT:
    case TAG_ID.TEMPLATE: {
      startTagInHead(p5, token);
      break;
    }
    default:
  }
}
function endTagInSelect(p5, token) {
  switch (token.tagID) {
    case TAG_ID.OPTGROUP: {
      if (p5.openElements.stackTop > 0 && p5.openElements.currentTagId === TAG_ID.OPTION && p5.openElements.tagIDs[p5.openElements.stackTop - 1] === TAG_ID.OPTGROUP) {
        p5.openElements.pop();
      }
      if (p5.openElements.currentTagId === TAG_ID.OPTGROUP) {
        p5.openElements.pop();
      }
      break;
    }
    case TAG_ID.OPTION: {
      if (p5.openElements.currentTagId === TAG_ID.OPTION) {
        p5.openElements.pop();
      }
      break;
    }
    case TAG_ID.SELECT: {
      if (p5.openElements.hasInSelectScope(TAG_ID.SELECT)) {
        p5.openElements.popUntilTagNamePopped(TAG_ID.SELECT);
        p5._resetInsertionMode();
      }
      break;
    }
    case TAG_ID.TEMPLATE: {
      templateEndTagInHead(p5, token);
      break;
    }
    default:
  }
}
function startTagInSelectInTable(p5, token) {
  const tn = token.tagID;
  if (tn === TAG_ID.CAPTION || tn === TAG_ID.TABLE || tn === TAG_ID.TBODY || tn === TAG_ID.TFOOT || tn === TAG_ID.THEAD || tn === TAG_ID.TR || tn === TAG_ID.TD || tn === TAG_ID.TH) {
    p5.openElements.popUntilTagNamePopped(TAG_ID.SELECT);
    p5._resetInsertionMode();
    p5._processStartTag(token);
  } else {
    startTagInSelect(p5, token);
  }
}
function endTagInSelectInTable(p5, token) {
  const tn = token.tagID;
  if (tn === TAG_ID.CAPTION || tn === TAG_ID.TABLE || tn === TAG_ID.TBODY || tn === TAG_ID.TFOOT || tn === TAG_ID.THEAD || tn === TAG_ID.TR || tn === TAG_ID.TD || tn === TAG_ID.TH) {
    if (p5.openElements.hasInTableScope(tn)) {
      p5.openElements.popUntilTagNamePopped(TAG_ID.SELECT);
      p5._resetInsertionMode();
      p5.onEndTag(token);
    }
  } else {
    endTagInSelect(p5, token);
  }
}
function startTagInTemplate(p5, token) {
  switch (token.tagID) {
    // First, handle tags that can start without a mode change
    case TAG_ID.BASE:
    case TAG_ID.BASEFONT:
    case TAG_ID.BGSOUND:
    case TAG_ID.LINK:
    case TAG_ID.META:
    case TAG_ID.NOFRAMES:
    case TAG_ID.SCRIPT:
    case TAG_ID.STYLE:
    case TAG_ID.TEMPLATE:
    case TAG_ID.TITLE: {
      startTagInHead(p5, token);
      break;
    }
    // Re-process the token in the appropriate mode
    case TAG_ID.CAPTION:
    case TAG_ID.COLGROUP:
    case TAG_ID.TBODY:
    case TAG_ID.TFOOT:
    case TAG_ID.THEAD: {
      p5.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;
      p5.insertionMode = InsertionMode.IN_TABLE;
      startTagInTable(p5, token);
      break;
    }
    case TAG_ID.COL: {
      p5.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;
      p5.insertionMode = InsertionMode.IN_COLUMN_GROUP;
      startTagInColumnGroup(p5, token);
      break;
    }
    case TAG_ID.TR: {
      p5.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;
      p5.insertionMode = InsertionMode.IN_TABLE_BODY;
      startTagInTableBody(p5, token);
      break;
    }
    case TAG_ID.TD:
    case TAG_ID.TH: {
      p5.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;
      p5.insertionMode = InsertionMode.IN_ROW;
      startTagInRow(p5, token);
      break;
    }
    default: {
      p5.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;
      p5.insertionMode = InsertionMode.IN_BODY;
      startTagInBody(p5, token);
    }
  }
}
function endTagInTemplate(p5, token) {
  if (token.tagID === TAG_ID.TEMPLATE) {
    templateEndTagInHead(p5, token);
  }
}
function eofInTemplate(p5, token) {
  if (p5.openElements.tmplCount > 0) {
    p5.openElements.popUntilTagNamePopped(TAG_ID.TEMPLATE);
    p5.activeFormattingElements.clearToLastMarker();
    p5.tmplInsertionModeStack.shift();
    p5._resetInsertionMode();
    p5.onEof(token);
  } else {
    stopParsing(p5, token);
  }
}
function startTagAfterBody(p5, token) {
  if (token.tagID === TAG_ID.HTML) {
    startTagInBody(p5, token);
  } else {
    tokenAfterBody(p5, token);
  }
}
function endTagAfterBody(p5, token) {
  var _a6;
  if (token.tagID === TAG_ID.HTML) {
    if (!p5.fragmentContext) {
      p5.insertionMode = InsertionMode.AFTER_AFTER_BODY;
    }
    if (p5.options.sourceCodeLocationInfo && p5.openElements.tagIDs[0] === TAG_ID.HTML) {
      p5._setEndLocation(p5.openElements.items[0], token);
      const bodyElement = p5.openElements.items[1];
      if (bodyElement && !((_a6 = p5.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a6 === void 0 ? void 0 : _a6.endTag)) {
        p5._setEndLocation(bodyElement, token);
      }
    }
  } else {
    tokenAfterBody(p5, token);
  }
}
function tokenAfterBody(p5, token) {
  p5.insertionMode = InsertionMode.IN_BODY;
  modeInBody(p5, token);
}
function startTagInFrameset(p5, token) {
  switch (token.tagID) {
    case TAG_ID.HTML: {
      startTagInBody(p5, token);
      break;
    }
    case TAG_ID.FRAMESET: {
      p5._insertElement(token, NS.HTML);
      break;
    }
    case TAG_ID.FRAME: {
      p5._appendElement(token, NS.HTML);
      token.ackSelfClosing = true;
      break;
    }
    case TAG_ID.NOFRAMES: {
      startTagInHead(p5, token);
      break;
    }
    default:
  }
}
function endTagInFrameset(p5, token) {
  if (token.tagID === TAG_ID.FRAMESET && !p5.openElements.isRootHtmlElementCurrent()) {
    p5.openElements.pop();
    if (!p5.fragmentContext && p5.openElements.currentTagId !== TAG_ID.FRAMESET) {
      p5.insertionMode = InsertionMode.AFTER_FRAMESET;
    }
  }
}
function startTagAfterFrameset(p5, token) {
  switch (token.tagID) {
    case TAG_ID.HTML: {
      startTagInBody(p5, token);
      break;
    }
    case TAG_ID.NOFRAMES: {
      startTagInHead(p5, token);
      break;
    }
    default:
  }
}
function endTagAfterFrameset(p5, token) {
  if (token.tagID === TAG_ID.HTML) {
    p5.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;
  }
}
function startTagAfterAfterBody(p5, token) {
  if (token.tagID === TAG_ID.HTML) {
    startTagInBody(p5, token);
  } else {
    tokenAfterAfterBody(p5, token);
  }
}
function tokenAfterAfterBody(p5, token) {
  p5.insertionMode = InsertionMode.IN_BODY;
  modeInBody(p5, token);
}
function startTagAfterAfterFrameset(p5, token) {
  switch (token.tagID) {
    case TAG_ID.HTML: {
      startTagInBody(p5, token);
      break;
    }
    case TAG_ID.NOFRAMES: {
      startTagInHead(p5, token);
      break;
    }
    default:
  }
}
function nullCharacterInForeignContent(p5, token) {
  token.chars = REPLACEMENT_CHARACTER;
  p5._insertCharacters(token);
}
function characterInForeignContent(p5, token) {
  p5._insertCharacters(token);
  p5.framesetOk = false;
}
function popUntilHtmlOrIntegrationPoint(p5) {
  while (p5.treeAdapter.getNamespaceURI(p5.openElements.current) !== NS.HTML && !p5._isIntegrationPoint(p5.openElements.currentTagId, p5.openElements.current)) {
    p5.openElements.pop();
  }
}
function startTagInForeignContent(p5, token) {
  if (causesExit(token)) {
    popUntilHtmlOrIntegrationPoint(p5);
    p5._startTagOutsideForeignContent(token);
  } else {
    const current2 = p5._getAdjustedCurrentElement();
    const currentNs = p5.treeAdapter.getNamespaceURI(current2);
    if (currentNs === NS.MATHML) {
      adjustTokenMathMLAttrs(token);
    } else if (currentNs === NS.SVG) {
      adjustTokenSVGTagName(token);
      adjustTokenSVGAttrs(token);
    }
    adjustTokenXMLAttrs(token);
    if (token.selfClosing) {
      p5._appendElement(token, currentNs);
    } else {
      p5._insertElement(token, currentNs);
    }
    token.ackSelfClosing = true;
  }
}
function endTagInForeignContent(p5, token) {
  if (token.tagID === TAG_ID.P || token.tagID === TAG_ID.BR) {
    popUntilHtmlOrIntegrationPoint(p5);
    p5._endTagOutsideForeignContent(token);
    return;
  }
  for (let i2 = p5.openElements.stackTop; i2 > 0; i2--) {
    const element5 = p5.openElements.items[i2];
    if (p5.treeAdapter.getNamespaceURI(element5) === NS.HTML) {
      p5._endTagOutsideForeignContent(token);
      break;
    }
    const tagName = p5.treeAdapter.getTagName(element5);
    if (tagName.toLowerCase() === token.tagName) {
      token.tagName = tagName;
      p5.openElements.shortenToLength(i2);
      break;
    }
  }
}

// ../../node_modules/entities/lib/esm/escape.js
var xmlCodeMap = /* @__PURE__ */ new Map([
  [34, "&quot;"],
  [38, "&amp;"],
  [39, "&apos;"],
  [60, "&lt;"],
  [62, "&gt;"]
]);
var getCodePoint = (
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
  String.prototype.codePointAt != null ? (str2, index4) => str2.codePointAt(index4) : (
    // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
    (c, index4) => (c.charCodeAt(index4) & 64512) === 55296 ? (c.charCodeAt(index4) - 55296) * 1024 + c.charCodeAt(index4 + 1) - 56320 + 65536 : c.charCodeAt(index4)
  )
);
function getEscaper(regex2, map13) {
  return function escape5(data) {
    let match3;
    let lastIdx = 0;
    let result = "";
    while (match3 = regex2.exec(data)) {
      if (lastIdx !== match3.index) {
        result += data.substring(lastIdx, match3.index);
      }
      result += map13.get(match3[0].charCodeAt(0));
      lastIdx = match3.index + 1;
    }
    return result + data.substring(lastIdx);
  };
}
var escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap);
var escapeAttribute = getEscaper(/["&\u00A0]/g, /* @__PURE__ */ new Map([
  [34, "&quot;"],
  [38, "&amp;"],
  [160, "&nbsp;"]
]));
var escapeText = getEscaper(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([
  [38, "&amp;"],
  [60, "&lt;"],
  [62, "&gt;"],
  [160, "&nbsp;"]
]));

// ../../node_modules/hast-util-from-html/node_modules/parse5/dist/serializer/index.js
var VOID_ELEMENTS = /* @__PURE__ */ new Set([
  TAG_NAMES.AREA,
  TAG_NAMES.BASE,
  TAG_NAMES.BASEFONT,
  TAG_NAMES.BGSOUND,
  TAG_NAMES.BR,
  TAG_NAMES.COL,
  TAG_NAMES.EMBED,
  TAG_NAMES.FRAME,
  TAG_NAMES.HR,
  TAG_NAMES.IMG,
  TAG_NAMES.INPUT,
  TAG_NAMES.KEYGEN,
  TAG_NAMES.LINK,
  TAG_NAMES.META,
  TAG_NAMES.PARAM,
  TAG_NAMES.SOURCE,
  TAG_NAMES.TRACK,
  TAG_NAMES.WBR
]);

// ../../node_modules/hast-util-from-html/node_modules/parse5/dist/index.js
function parse5(html7, options) {
  return Parser.parse(html7, options);
}
function parseFragment(fragmentContext, html7, options) {
  if (typeof fragmentContext === "string") {
    options = html7;
    html7 = fragmentContext;
    fragmentContext = null;
  }
  const parser3 = Parser.getFragmentParser(fragmentContext, options);
  parser3.tokenizer.write(html7, true);
  return parser3.getFragment();
}

// ../../node_modules/hast-util-from-html/node_modules/unist-util-stringify-position/lib/index.js
function stringifyPosition2(value) {
  if (!value || typeof value !== "object") {
    return "";
  }
  if ("position" in value || "type" in value) {
    return position5(value.position);
  }
  if ("start" in value || "end" in value) {
    return position5(value);
  }
  if ("line" in value || "column" in value) {
    return point5(value);
  }
  return "";
}
function point5(point6) {
  return index2(point6 && point6.line) + ":" + index2(point6 && point6.column);
}
function position5(pos) {
  return point5(pos && pos.start) + "-" + point5(pos && pos.end);
}
function index2(value) {
  return value && typeof value === "number" ? value : 1;
}

// ../../node_modules/hast-util-from-html/node_modules/vfile-message/lib/index.js
var VFileMessage2 = class extends Error {
  /**
   * Create a message for `reason`.
   *
   * > 🪦 **Note**: also has obsolete signatures.
   *
   * @overload
   * @param {string} reason
   * @param {Options | null | undefined} [options]
   * @returns
   *
   * @overload
   * @param {string} reason
   * @param {Node | NodeLike | null | undefined} parent
   * @param {string | null | undefined} [origin]
   * @returns
   *
   * @overload
   * @param {string} reason
   * @param {Point | Position | null | undefined} place
   * @param {string | null | undefined} [origin]
   * @returns
   *
   * @overload
   * @param {string} reason
   * @param {string | null | undefined} [origin]
   * @returns
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {Node | NodeLike | null | undefined} parent
   * @param {string | null | undefined} [origin]
   * @returns
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {Point | Position | null | undefined} place
   * @param {string | null | undefined} [origin]
   * @returns
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {string | null | undefined} [origin]
   * @returns
   *
   * @param {Error | VFileMessage | string} causeOrReason
   *   Reason for message, should use markdown.
   * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]
   *   Configuration (optional).
   * @param {string | null | undefined} [origin]
   *   Place in code where the message originates (example:
   *   `'my-package:my-rule'` or `'my-rule'`).
   * @returns
   *   Instance of `VFileMessage`.
   */
  // eslint-disable-next-line complexity
  constructor(causeOrReason, optionsOrParentOrPlace, origin) {
    super();
    if (typeof optionsOrParentOrPlace === "string") {
      origin = optionsOrParentOrPlace;
      optionsOrParentOrPlace = void 0;
    }
    let reason = "";
    let options = {};
    let legacyCause = false;
    if (optionsOrParentOrPlace) {
      if ("line" in optionsOrParentOrPlace && "column" in optionsOrParentOrPlace) {
        options = { place: optionsOrParentOrPlace };
      } else if ("start" in optionsOrParentOrPlace && "end" in optionsOrParentOrPlace) {
        options = { place: optionsOrParentOrPlace };
      } else if ("type" in optionsOrParentOrPlace) {
        options = {
          ancestors: [optionsOrParentOrPlace],
          place: optionsOrParentOrPlace.position
        };
      } else {
        options = { ...optionsOrParentOrPlace };
      }
    }
    if (typeof causeOrReason === "string") {
      reason = causeOrReason;
    } else if (!options.cause && causeOrReason) {
      legacyCause = true;
      reason = causeOrReason.message;
      options.cause = causeOrReason;
    }
    if (!options.ruleId && !options.source && typeof origin === "string") {
      const index4 = origin.indexOf(":");
      if (index4 === -1) {
        options.ruleId = origin;
      } else {
        options.source = origin.slice(0, index4);
        options.ruleId = origin.slice(index4 + 1);
      }
    }
    if (!options.place && options.ancestors && options.ancestors) {
      const parent2 = options.ancestors[options.ancestors.length - 1];
      if (parent2) {
        options.place = parent2.position;
      }
    }
    const start = options.place && "start" in options.place ? options.place.start : options.place;
    this.ancestors = options.ancestors || void 0;
    this.cause = options.cause || void 0;
    this.column = start ? start.column : void 0;
    this.fatal = void 0;
    this.file;
    this.message = reason;
    this.line = start ? start.line : void 0;
    this.name = stringifyPosition2(options.place) || "1:1";
    this.place = options.place || void 0;
    this.reason = this.message;
    this.ruleId = options.ruleId || void 0;
    this.source = options.source || void 0;
    this.stack = legacyCause && options.cause && typeof options.cause.stack === "string" ? options.cause.stack : "";
    this.actual;
    this.expected;
    this.note;
    this.url;
  }
};
VFileMessage2.prototype.file = "";
VFileMessage2.prototype.name = "";
VFileMessage2.prototype.reason = "";
VFileMessage2.prototype.message = "";
VFileMessage2.prototype.stack = "";
VFileMessage2.prototype.column = void 0;
VFileMessage2.prototype.line = void 0;
VFileMessage2.prototype.ancestors = void 0;
VFileMessage2.prototype.cause = void 0;
VFileMessage2.prototype.fatal = void 0;
VFileMessage2.prototype.place = void 0;
VFileMessage2.prototype.ruleId = void 0;
VFileMessage2.prototype.source = void 0;

// ../../node_modules/hast-util-from-html/node_modules/vfile/lib/minpath.js
var import_node_path3 = __toESM(require("path"), 1);

// ../../node_modules/hast-util-from-html/node_modules/vfile/lib/minproc.js
var import_node_process3 = __toESM(require("process"), 1);

// ../../node_modules/hast-util-from-html/node_modules/vfile/lib/minurl.js
var import_node_url = require("url");

// ../../node_modules/hast-util-from-html/node_modules/vfile/lib/minurl.shared.js
function isUrl4(fileUrlOrPath) {
  return Boolean(
    fileUrlOrPath !== null && typeof fileUrlOrPath === "object" && "href" in fileUrlOrPath && fileUrlOrPath.href && "protocol" in fileUrlOrPath && fileUrlOrPath.protocol && // @ts-expect-error: indexing is fine.
    fileUrlOrPath.auth === void 0
  );
}

// ../../node_modules/hast-util-from-html/node_modules/vfile/lib/index.js
var order2 = (
  /** @type {const} */
  [
    "history",
    "path",
    "basename",
    "stem",
    "extname",
    "dirname"
  ]
);
var VFile2 = class {
  /**
   * Create a new virtual file.
   *
   * `options` is treated as:
   *
   * *   `string` or `Uint8Array` — `{value: options}`
   * *   `URL` — `{path: options}`
   * *   `VFile` — shallow copies its data over to the new file
   * *   `object` — all fields are shallow copied over to the new file
   *
   * Path related fields are set in the following order (least specific to
   * most specific): `history`, `path`, `basename`, `stem`, `extname`,
   * `dirname`.
   *
   * You cannot set `dirname` or `extname` without setting either `history`,
   * `path`, `basename`, or `stem` too.
   *
   * @param {Compatible | null | undefined} [value]
   *   File value.
   * @returns
   *   New instance.
   */
  constructor(value) {
    let options;
    if (!value) {
      options = {};
    } else if (isUrl4(value)) {
      options = { path: value };
    } else if (typeof value === "string" || isUint8Array(value)) {
      options = { value };
    } else {
      options = value;
    }
    this.cwd = import_node_process3.default.cwd();
    this.data = {};
    this.history = [];
    this.messages = [];
    this.value;
    this.map;
    this.result;
    this.stored;
    let index4 = -1;
    while (++index4 < order2.length) {
      const prop2 = order2[index4];
      if (prop2 in options && options[prop2] !== void 0 && options[prop2] !== null) {
        this[prop2] = prop2 === "history" ? [...options[prop2]] : options[prop2];
      }
    }
    let prop;
    for (prop in options) {
      if (!order2.includes(prop)) {
        this[prop] = options[prop];
      }
    }
  }
  /**
   * Get the basename (including extname) (example: `'index.min.js'`).
   *
   * @returns {string | undefined}
   *   Basename.
   */
  get basename() {
    return typeof this.path === "string" ? import_node_path3.default.basename(this.path) : void 0;
  }
  /**
   * Set basename (including extname) (`'index.min.js'`).
   *
   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'`
   * on windows).
   * Cannot be nullified (use `file.path = file.dirname` instead).
   *
   * @param {string} basename
   *   Basename.
   * @returns {undefined}
   *   Nothing.
   */
  set basename(basename4) {
    assertNonEmpty2(basename4, "basename");
    assertPart2(basename4, "basename");
    this.path = import_node_path3.default.join(this.dirname || "", basename4);
  }
  /**
   * Get the parent path (example: `'~'`).
   *
   * @returns {string | undefined}
   *   Dirname.
   */
  get dirname() {
    return typeof this.path === "string" ? import_node_path3.default.dirname(this.path) : void 0;
  }
  /**
   * Set the parent path (example: `'~'`).
   *
   * Cannot be set if there’s no `path` yet.
   *
   * @param {string | undefined} dirname
   *   Dirname.
   * @returns {undefined}
   *   Nothing.
   */
  set dirname(dirname8) {
    assertPath2(this.basename, "dirname");
    this.path = import_node_path3.default.join(dirname8 || "", this.basename);
  }
  /**
   * Get the extname (including dot) (example: `'.js'`).
   *
   * @returns {string | undefined}
   *   Extname.
   */
  get extname() {
    return typeof this.path === "string" ? import_node_path3.default.extname(this.path) : void 0;
  }
  /**
   * Set the extname (including dot) (example: `'.js'`).
   *
   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'`
   * on windows).
   * Cannot be set if there’s no `path` yet.
   *
   * @param {string | undefined} extname
   *   Extname.
   * @returns {undefined}
   *   Nothing.
   */
  set extname(extname8) {
    assertPart2(extname8, "extname");
    assertPath2(this.dirname, "extname");
    if (extname8) {
      if (extname8.codePointAt(0) !== 46) {
        throw new Error("`extname` must start with `.`");
      }
      if (extname8.includes(".", 1)) {
        throw new Error("`extname` cannot contain multiple dots");
      }
    }
    this.path = import_node_path3.default.join(this.dirname, this.stem + (extname8 || ""));
  }
  /**
   * Get the full path (example: `'~/index.min.js'`).
   *
   * @returns {string}
   *   Path.
   */
  get path() {
    return this.history[this.history.length - 1];
  }
  /**
   * Set the full path (example: `'~/index.min.js'`).
   *
   * Cannot be nullified.
   * You can set a file URL (a `URL` object with a `file:` protocol) which will
   * be turned into a path with `url.fileURLToPath`.
   *
   * @param {URL | string} path
   *   Path.
   * @returns {undefined}
   *   Nothing.
   */
  set path(path45) {
    if (isUrl4(path45)) {
      path45 = (0, import_node_url.fileURLToPath)(path45);
    }
    assertNonEmpty2(path45, "path");
    if (this.path !== path45) {
      this.history.push(path45);
    }
  }
  /**
   * Get the stem (basename w/o extname) (example: `'index.min'`).
   *
   * @returns {string | undefined}
   *   Stem.
   */
  get stem() {
    return typeof this.path === "string" ? import_node_path3.default.basename(this.path, this.extname) : void 0;
  }
  /**
   * Set the stem (basename w/o extname) (example: `'index.min'`).
   *
   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'`
   * on windows).
   * Cannot be nullified (use `file.path = file.dirname` instead).
   *
   * @param {string} stem
   *   Stem.
   * @returns {undefined}
   *   Nothing.
   */
  set stem(stem) {
    assertNonEmpty2(stem, "stem");
    assertPart2(stem, "stem");
    this.path = import_node_path3.default.join(this.dirname || "", stem + (this.extname || ""));
  }
  // Normal prototypal methods.
  /**
   * Create a fatal message for `reason` associated with the file.
   *
   * The `fatal` field of the message is set to `true` (error; file not usable)
   * and the `file` field is set to the current file path.
   * The message is added to the `messages` field on `file`.
   *
   * > 🪦 **Note**: also has obsolete signatures.
   *
   * @overload
   * @param {string} reason
   * @param {MessageOptions | null | undefined} [options]
   * @returns {never}
   *
   * @overload
   * @param {string} reason
   * @param {Node | NodeLike | null | undefined} parent
   * @param {string | null | undefined} [origin]
   * @returns {never}
   *
   * @overload
   * @param {string} reason
   * @param {Point | Position | null | undefined} place
   * @param {string | null | undefined} [origin]
   * @returns {never}
   *
   * @overload
   * @param {string} reason
   * @param {string | null | undefined} [origin]
   * @returns {never}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {Node | NodeLike | null | undefined} parent
   * @param {string | null | undefined} [origin]
   * @returns {never}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {Point | Position | null | undefined} place
   * @param {string | null | undefined} [origin]
   * @returns {never}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {string | null | undefined} [origin]
   * @returns {never}
   *
   * @param {Error | VFileMessage | string} causeOrReason
   *   Reason for message, should use markdown.
   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]
   *   Configuration (optional).
   * @param {string | null | undefined} [origin]
   *   Place in code where the message originates (example:
   *   `'my-package:my-rule'` or `'my-rule'`).
   * @returns {never}
   *   Never.
   * @throws {VFileMessage}
   *   Message.
   */
  fail(causeOrReason, optionsOrParentOrPlace, origin) {
    const message = this.message(causeOrReason, optionsOrParentOrPlace, origin);
    message.fatal = true;
    throw message;
  }
  /**
   * Create an info message for `reason` associated with the file.
   *
   * The `fatal` field of the message is set to `undefined` (info; change
   * likely not needed) and the `file` field is set to the current file path.
   * The message is added to the `messages` field on `file`.
   *
   * > 🪦 **Note**: also has obsolete signatures.
   *
   * @overload
   * @param {string} reason
   * @param {MessageOptions | null | undefined} [options]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {string} reason
   * @param {Node | NodeLike | null | undefined} parent
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {string} reason
   * @param {Point | Position | null | undefined} place
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {string} reason
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {Node | NodeLike | null | undefined} parent
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {Point | Position | null | undefined} place
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @param {Error | VFileMessage | string} causeOrReason
   *   Reason for message, should use markdown.
   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]
   *   Configuration (optional).
   * @param {string | null | undefined} [origin]
   *   Place in code where the message originates (example:
   *   `'my-package:my-rule'` or `'my-rule'`).
   * @returns {VFileMessage}
   *   Message.
   */
  info(causeOrReason, optionsOrParentOrPlace, origin) {
    const message = this.message(causeOrReason, optionsOrParentOrPlace, origin);
    message.fatal = void 0;
    return message;
  }
  /**
   * Create a message for `reason` associated with the file.
   *
   * The `fatal` field of the message is set to `false` (warning; change may be
   * needed) and the `file` field is set to the current file path.
   * The message is added to the `messages` field on `file`.
   *
   * > 🪦 **Note**: also has obsolete signatures.
   *
   * @overload
   * @param {string} reason
   * @param {MessageOptions | null | undefined} [options]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {string} reason
   * @param {Node | NodeLike | null | undefined} parent
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {string} reason
   * @param {Point | Position | null | undefined} place
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {string} reason
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {Node | NodeLike | null | undefined} parent
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {Point | Position | null | undefined} place
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @param {Error | VFileMessage | string} causeOrReason
   *   Reason for message, should use markdown.
   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]
   *   Configuration (optional).
   * @param {string | null | undefined} [origin]
   *   Place in code where the message originates (example:
   *   `'my-package:my-rule'` or `'my-rule'`).
   * @returns {VFileMessage}
   *   Message.
   */
  message(causeOrReason, optionsOrParentOrPlace, origin) {
    const message = new VFileMessage2(
      // @ts-expect-error: the overloads are fine.
      causeOrReason,
      optionsOrParentOrPlace,
      origin
    );
    if (this.path) {
      message.name = this.path + ":" + message.name;
      message.file = this.path;
    }
    message.fatal = false;
    this.messages.push(message);
    return message;
  }
  /**
   * Serialize the file.
   *
   * > **Note**: which encodings are supported depends on the engine.
   * > For info on Node.js, see:
   * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.
   *
   * @param {string | null | undefined} [encoding='utf8']
   *   Character encoding to understand `value` as when it’s a `Uint8Array`
   *   (default: `'utf-8'`).
   * @returns {string}
   *   Serialized file.
   */
  toString(encoding) {
    if (this.value === void 0) {
      return "";
    }
    if (typeof this.value === "string") {
      return this.value;
    }
    const decoder = new TextDecoder(encoding || void 0);
    return decoder.decode(this.value);
  }
};
function assertPart2(part, name3) {
  if (part && part.includes(import_node_path3.default.sep)) {
    throw new Error(
      "`" + name3 + "` cannot be a path: did not expect `" + import_node_path3.default.sep + "`"
    );
  }
}
function assertNonEmpty2(part, name3) {
  if (!part) {
    throw new Error("`" + name3 + "` cannot be empty");
  }
}
function assertPath2(path45, name3) {
  if (!path45) {
    throw new Error("Setting `" + name3 + "` requires `path` to be set too");
  }
}
function isUint8Array(value) {
  return Boolean(
    value && typeof value === "object" && "byteLength" in value && "byteOffset" in value
  );
}

// ../../node_modules/hast-util-from-html/lib/errors.js
var errors2 = {
  /** @type {ErrorInfo} */
  abandonedHeadElementChild: {
    reason: "Unexpected metadata element after head",
    description: "Unexpected element after head. Expected the element before `</head>`",
    url: false
  },
  /** @type {ErrorInfo} */
  abruptClosingOfEmptyComment: {
    reason: "Unexpected abruptly closed empty comment",
    description: "Unexpected `>` or `->`. Expected `-->` to close comments"
  },
  /** @type {ErrorInfo} */
  abruptDoctypePublicIdentifier: {
    reason: "Unexpected abruptly closed public identifier",
    description: "Unexpected `>`. Expected a closing `\"` or `'` after the public identifier"
  },
  /** @type {ErrorInfo} */
  abruptDoctypeSystemIdentifier: {
    reason: "Unexpected abruptly closed system identifier",
    description: "Unexpected `>`. Expected a closing `\"` or `'` after the identifier identifier"
  },
  /** @type {ErrorInfo} */
  absenceOfDigitsInNumericCharacterReference: {
    reason: "Unexpected non-digit at start of numeric character reference",
    description: "Unexpected `%c`. Expected `[0-9]` for decimal references or `[0-9a-fA-F]` for hexadecimal references"
  },
  /** @type {ErrorInfo} */
  cdataInHtmlContent: {
    reason: "Unexpected CDATA section in HTML",
    description: "Unexpected `<![CDATA[` in HTML. Remove it, use a comment, or encode special characters instead"
  },
  /** @type {ErrorInfo} */
  characterReferenceOutsideUnicodeRange: {
    reason: "Unexpected too big numeric character reference",
    description: "Unexpectedly high character reference. Expected character references to be at most hexadecimal 10ffff (or decimal 1114111)"
  },
  /** @type {ErrorInfo} */
  closingOfElementWithOpenChildElements: {
    reason: "Unexpected closing tag with open child elements",
    description: "Unexpectedly closing tag. Expected other tags to be closed first",
    url: false
  },
  /** @type {ErrorInfo} */
  controlCharacterInInputStream: {
    reason: "Unexpected control character",
    description: "Unexpected control character `%x`. Expected a non-control code point, 0x00, or ASCII whitespace"
  },
  /** @type {ErrorInfo} */
  controlCharacterReference: {
    reason: "Unexpected control character reference",
    description: "Unexpectedly control character in reference. Expected a non-control code point, 0x00, or ASCII whitespace"
  },
  /** @type {ErrorInfo} */
  disallowedContentInNoscriptInHead: {
    reason: "Disallowed content inside `<noscript>` in `<head>`",
    description: "Unexpected text character `%c`. Only use text in `<noscript>`s in `<body>`",
    url: false
  },
  /** @type {ErrorInfo} */
  duplicateAttribute: {
    reason: "Unexpected duplicate attribute",
    description: "Unexpectedly double attribute. Expected attributes to occur only once"
  },
  /** @type {ErrorInfo} */
  endTagWithAttributes: {
    reason: "Unexpected attribute on closing tag",
    description: "Unexpected attribute. Expected `>` instead"
  },
  /** @type {ErrorInfo} */
  endTagWithTrailingSolidus: {
    reason: "Unexpected slash at end of closing tag",
    description: "Unexpected `%c-1`. Expected `>` instead"
  },
  /** @type {ErrorInfo} */
  endTagWithoutMatchingOpenElement: {
    reason: "Unexpected unopened end tag",
    description: "Unexpected end tag. Expected no end tag or another end tag",
    url: false
  },
  /** @type {ErrorInfo} */
  eofBeforeTagName: {
    reason: "Unexpected end of file",
    description: "Unexpected end of file. Expected tag name instead"
  },
  /** @type {ErrorInfo} */
  eofInCdata: {
    reason: "Unexpected end of file in CDATA",
    description: "Unexpected end of file. Expected `]]>` to close the CDATA"
  },
  /** @type {ErrorInfo} */
  eofInComment: {
    reason: "Unexpected end of file in comment",
    description: "Unexpected end of file. Expected `-->` to close the comment"
  },
  /** @type {ErrorInfo} */
  eofInDoctype: {
    reason: "Unexpected end of file in doctype",
    description: "Unexpected end of file. Expected a valid doctype (such as `<!doctype html>`)"
  },
  /** @type {ErrorInfo} */
  eofInElementThatCanContainOnlyText: {
    reason: "Unexpected end of file in element that can only contain text",
    description: "Unexpected end of file. Expected text or a closing tag",
    url: false
  },
  /** @type {ErrorInfo} */
  eofInScriptHtmlCommentLikeText: {
    reason: "Unexpected end of file in comment inside script",
    description: "Unexpected end of file. Expected `-->` to close the comment"
  },
  /** @type {ErrorInfo} */
  eofInTag: {
    reason: "Unexpected end of file in tag",
    description: "Unexpected end of file. Expected `>` to close the tag"
  },
  /** @type {ErrorInfo} */
  incorrectlyClosedComment: {
    reason: "Incorrectly closed comment",
    description: "Unexpected `%c-1`. Expected `-->` to close the comment"
  },
  /** @type {ErrorInfo} */
  incorrectlyOpenedComment: {
    reason: "Incorrectly opened comment",
    description: "Unexpected `%c`. Expected `<!--` to open the comment"
  },
  /** @type {ErrorInfo} */
  invalidCharacterSequenceAfterDoctypeName: {
    reason: "Invalid sequence after doctype name",
    description: "Unexpected sequence at `%c`. Expected `public` or `system`"
  },
  /** @type {ErrorInfo} */
  invalidFirstCharacterOfTagName: {
    reason: "Invalid first character in tag name",
    description: "Unexpected `%c`. Expected an ASCII letter instead"
  },
  /** @type {ErrorInfo} */
  misplacedDoctype: {
    reason: "Misplaced doctype",
    description: "Unexpected doctype. Expected doctype before head",
    url: false
  },
  /** @type {ErrorInfo} */
  misplacedStartTagForHeadElement: {
    reason: "Misplaced `<head>` start tag",
    description: "Unexpected start tag `<head>`. Expected `<head>` directly after doctype",
    url: false
  },
  /** @type {ErrorInfo} */
  missingAttributeValue: {
    reason: "Missing attribute value",
    description: "Unexpected `%c-1`. Expected an attribute value or no `%c-1` instead"
  },
  /** @type {ErrorInfo} */
  missingDoctype: {
    reason: "Missing doctype before other content",
    description: "Expected a `<!doctype html>` before anything else",
    url: false
  },
  /** @type {ErrorInfo} */
  missingDoctypeName: {
    reason: "Missing doctype name",
    description: "Unexpected doctype end at `%c`. Expected `html` instead"
  },
  /** @type {ErrorInfo} */
  missingDoctypePublicIdentifier: {
    reason: "Missing public identifier in doctype",
    description: "Unexpected `%c`. Expected identifier for `public` instead"
  },
  /** @type {ErrorInfo} */
  missingDoctypeSystemIdentifier: {
    reason: "Missing system identifier in doctype",
    description: 'Unexpected `%c`. Expected identifier for `system` instead (suggested: `"about:legacy-compat"`)'
  },
  /** @type {ErrorInfo} */
  missingEndTagName: {
    reason: "Missing name in end tag",
    description: "Unexpected `%c`. Expected an ASCII letter instead"
  },
  /** @type {ErrorInfo} */
  missingQuoteBeforeDoctypePublicIdentifier: {
    reason: "Missing quote before public identifier in doctype",
    description: "Unexpected `%c`. Expected `\"` or `'` instead"
  },
  /** @type {ErrorInfo} */
  missingQuoteBeforeDoctypeSystemIdentifier: {
    reason: "Missing quote before system identifier in doctype",
    description: "Unexpected `%c`. Expected `\"` or `'` instead"
  },
  /** @type {ErrorInfo} */
  missingSemicolonAfterCharacterReference: {
    reason: "Missing semicolon after character reference",
    description: "Unexpected `%c`. Expected `;` instead"
  },
  /** @type {ErrorInfo} */
  missingWhitespaceAfterDoctypePublicKeyword: {
    reason: "Missing whitespace after public identifier in doctype",
    description: "Unexpected `%c`. Expected ASCII whitespace instead"
  },
  /** @type {ErrorInfo} */
  missingWhitespaceAfterDoctypeSystemKeyword: {
    reason: "Missing whitespace after system identifier in doctype",
    description: "Unexpected `%c`. Expected ASCII whitespace instead"
  },
  /** @type {ErrorInfo} */
  missingWhitespaceBeforeDoctypeName: {
    reason: "Missing whitespace before doctype name",
    description: "Unexpected `%c`. Expected ASCII whitespace instead"
  },
  /** @type {ErrorInfo} */
  missingWhitespaceBetweenAttributes: {
    reason: "Missing whitespace between attributes",
    description: "Unexpected `%c`. Expected ASCII whitespace instead"
  },
  /** @type {ErrorInfo} */
  missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers: {
    reason: "Missing whitespace between public and system identifiers in doctype",
    description: "Unexpected `%c`. Expected ASCII whitespace instead"
  },
  /** @type {ErrorInfo} */
  nestedComment: {
    reason: "Unexpected nested comment",
    description: "Unexpected `<!--`. Expected `-->`"
  },
  /** @type {ErrorInfo} */
  nestedNoscriptInHead: {
    reason: "Unexpected nested `<noscript>` in `<head>`",
    description: "Unexpected `<noscript>`. Expected a closing tag or a meta element",
    url: false
  },
  /** @type {ErrorInfo} */
  nonConformingDoctype: {
    reason: "Unexpected non-conforming doctype declaration",
    description: 'Expected `<!doctype html>` or `<!doctype html system "about:legacy-compat">`',
    url: false
  },
  /** @type {ErrorInfo} */
  nonVoidHtmlElementStartTagWithTrailingSolidus: {
    reason: "Unexpected trailing slash on start tag of non-void element",
    description: "Unexpected `/`. Expected `>` instead"
  },
  /** @type {ErrorInfo} */
  noncharacterCharacterReference: {
    reason: "Unexpected noncharacter code point referenced by character reference",
    description: "Unexpected code point. Do not use noncharacters in HTML"
  },
  /** @type {ErrorInfo} */
  noncharacterInInputStream: {
    reason: "Unexpected noncharacter character",
    description: "Unexpected code point `%x`. Do not use noncharacters in HTML"
  },
  /** @type {ErrorInfo} */
  nullCharacterReference: {
    reason: "Unexpected NULL character referenced by character reference",
    description: "Unexpected code point. Do not use NULL characters in HTML"
  },
  /** @type {ErrorInfo} */
  openElementsLeftAfterEof: {
    reason: "Unexpected end of file",
    description: "Unexpected end of file. Expected closing tag instead",
    url: false
  },
  /** @type {ErrorInfo} */
  surrogateCharacterReference: {
    reason: "Unexpected surrogate character referenced by character reference",
    description: "Unexpected code point. Do not use lone surrogate characters in HTML"
  },
  /** @type {ErrorInfo} */
  surrogateInInputStream: {
    reason: "Unexpected surrogate character",
    description: "Unexpected code point `%x`. Do not use lone surrogate characters in HTML"
  },
  /** @type {ErrorInfo} */
  unexpectedCharacterAfterDoctypeSystemIdentifier: {
    reason: "Invalid character after system identifier in doctype",
    description: "Unexpected character at `%c`. Expected `>`"
  },
  /** @type {ErrorInfo} */
  unexpectedCharacterInAttributeName: {
    reason: "Unexpected character in attribute name",
    description: "Unexpected `%c`. Expected whitespace, `/`, `>`, `=`, or probably an ASCII letter"
  },
  /** @type {ErrorInfo} */
  unexpectedCharacterInUnquotedAttributeValue: {
    reason: "Unexpected character in unquoted attribute value",
    description: "Unexpected `%c`. Quote the attribute value to include it"
  },
  /** @type {ErrorInfo} */
  unexpectedEqualsSignBeforeAttributeName: {
    reason: "Unexpected equals sign before attribute name",
    description: "Unexpected `%c`. Add an attribute name before it"
  },
  /** @type {ErrorInfo} */
  unexpectedNullCharacter: {
    reason: "Unexpected NULL character",
    description: "Unexpected code point `%x`. Do not use NULL characters in HTML"
  },
  /** @type {ErrorInfo} */
  unexpectedQuestionMarkInsteadOfTagName: {
    reason: "Unexpected question mark instead of tag name",
    description: "Unexpected `%c`. Expected an ASCII letter instead"
  },
  /** @type {ErrorInfo} */
  unexpectedSolidusInTag: {
    reason: "Unexpected slash in tag",
    description: "Unexpected `%c-1`. Expected it followed by `>` or in a quoted attribute value"
  },
  /** @type {ErrorInfo} */
  unknownNamedCharacterReference: {
    reason: "Unexpected unknown named character reference",
    description: "Unexpected character reference. Expected known named character references"
  }
};

// ../../node_modules/hast-util-from-html/lib/index.js
var base4 = "https://html.spec.whatwg.org/multipage/parsing.html#parse-error-";
var dashToCamelRe = /-[a-z]/g;
var formatCRe = /%c(?:([-+])(\d+))?/g;
var formatXRe = /%x/g;
var fatalities2 = { 2: true, 1: false, 0: null };
var emptyOptions2 = {};
function fromHtml(value, options) {
  const settings = options || emptyOptions2;
  const onerror = settings.onerror;
  const file = value instanceof VFile2 ? value : new VFile2(value);
  const fn = settings.fragment ? parseFragment : parse5;
  const doc = String(file);
  const p5doc = fn(doc, {
    sourceCodeLocationInfo: true,
    // Note `parse5` types currently do not allow `undefined`.
    onParseError: settings.onerror ? internalOnerror : null,
    scriptingEnabled: false
  });
  return (
    /** @type {Root} */
    fromParse52(p5doc, {
      file,
      space: settings.space,
      verbose: settings.verbose
    })
  );
  function internalOnerror(error) {
    const code7 = error.code;
    const name3 = camelcase3(code7);
    const setting = settings[name3];
    const config3 = setting === null || setting === void 0 ? true : setting;
    const level = typeof config3 === "number" ? config3 : config3 ? 1 : 0;
    if (level) {
      const info = errors2[name3];
      ok2(info, "expected known error from `parse5`");
      const message = new VFileMessage2(format(info.reason), {
        place: {
          start: {
            line: error.startLine,
            column: error.startCol,
            offset: error.startOffset
          },
          end: {
            line: error.endLine,
            column: error.endCol,
            offset: error.endOffset
          }
        },
        ruleId: code7,
        source: "hast-util-from-html"
      });
      if (file.path) {
        message.file = file.path;
        message.name = file.path + ":" + message.name;
      }
      message.fatal = fatalities2[level];
      message.note = format(info.description);
      message.url = info.url === false ? void 0 : base4 + code7;
      ok2(onerror, "`internalOnerror` is not passed if `onerror` is not set");
      onerror(message);
    }
    function format(value2) {
      return value2.replace(formatCRe, formatC).replace(formatXRe, formatX);
      function formatC(_2, $1, $2) {
        const offset = ($2 ? Number.parseInt($2, 10) : 0) * ($1 === "-" ? -1 : 1);
        const char = doc.charAt(error.startOffset + offset);
        return visualizeCharacter(char);
      }
      function formatX() {
        return visualizeCharacterCode(doc.charCodeAt(error.startOffset));
      }
    }
  }
}
function camelcase3(value) {
  return (
    /** @type {ErrorCode} */
    value.replace(dashToCamelRe, dashToCamel)
  );
}
function dashToCamel($0) {
  return $0.charAt(1).toUpperCase();
}
function visualizeCharacter(char) {
  return char === "`" ? "` ` `" : char;
}
function visualizeCharacterCode(charCode) {
  return "0x" + charCode.toString(16).toUpperCase();
}

// ../myst-transforms/dist/html.js
function convertStylesStringToObject(stringStyles) {
  if (!stringStyles || typeof stringStyles !== "string")
    return void 0;
  return stringStyles.split(";").reduce((acc, style3) => {
    const colonPosition = style3.indexOf(":");
    if (colonPosition === -1)
      return acc;
    const camelCaseProperty = style3.slice(0, colonPosition).trim().replace(/^-ms-/, "ms-").replace(/-./g, (c) => c.slice(1).toUpperCase()), value = style3.slice(colonPosition + 1).trim();
    return value ? { ...acc, [camelCaseProperty]: value } : acc;
  }, {});
}
function getAlignment(alignment) {
  if (!alignment)
    return void 0;
  if (alignment === "center")
    return "center";
  if (alignment === "left")
    return "left";
  if (alignment === "right")
    return "right";
}
function addClassAndIdentifier(node3, attrs = {}) {
  var _a6;
  const props = (_a6 = node3.properties) !== null && _a6 !== void 0 ? _a6 : {};
  if (props.id || props.dataLabel) {
    const normalized = normalizeLabel(props.id || props.dataLabel);
    if (normalized === null || normalized === void 0 ? void 0 : normalized.identifier)
      attrs.identifier = normalized.identifier;
    if (normalized === null || normalized === void 0 ? void 0 : normalized.label)
      attrs.label = normalized.label;
  }
  if (props.className)
    attrs.class = props.className.join(" ");
  const style3 = convertStylesStringToObject(node3.properties.style);
  if (style3)
    attrs.style = style3;
  return attrs;
}
var defaultHtmlToMdastOptions = {
  keepBreaks: true,
  htmlHandlers: {
    table(h4, node3) {
      const attrs = addClassAndIdentifier(node3);
      return h4(node3, "table", attrs, all5(h4, node3));
    },
    th(h4, node3) {
      const attrs = addClassAndIdentifier(node3, { header: true });
      const rowSpan = Number.parseInt(node3.properties.rowSpan, 10);
      const colSpan = Number.parseInt(node3.properties.colSpan, 10);
      const align = getAlignment(node3.properties.align);
      if (align && align !== "left")
        attrs.align = align;
      if (Number.isInteger(rowSpan) && rowSpan > 1)
        attrs.rowspan = rowSpan;
      if (Number.isInteger(colSpan) && colSpan > 1)
        attrs.colspan = colSpan;
      return h4(node3, "tableCell", attrs, all5(h4, node3));
    },
    tr(h4, node3) {
      const attrs = addClassAndIdentifier(node3);
      return h4(node3, "tableRow", attrs, all5(h4, node3));
    },
    td(h4, node3) {
      const attrs = addClassAndIdentifier(node3);
      const rowSpan = Number.parseInt(node3.properties.rowSpan, 10);
      const colSpan = Number.parseInt(node3.properties.colSpan, 10);
      const align = getAlignment(node3.properties.align);
      if (align && align !== "left")
        attrs.align = align;
      if (Number.isInteger(rowSpan) && rowSpan > 1)
        attrs.rowspan = rowSpan;
      if (Number.isInteger(colSpan) && colSpan > 1)
        attrs.colspan = colSpan;
      return h4(node3, "tableCell", attrs, all5(h4, node3));
    },
    _brKeep(h4, node3) {
      return h4(node3, "_break");
    },
    span(h4, node3) {
      const attrs = addClassAndIdentifier(node3);
      return h4(node3, "span", attrs, all5(h4, node3));
    },
    div(h4, node3) {
      const attrs = addClassAndIdentifier(node3);
      return h4(node3, "div", attrs, all5(h4, node3));
    },
    a(h4, node3) {
      const attrs = addClassAndIdentifier(node3);
      attrs.url = String(node3.properties.href || "");
      if (node3.properties.title)
        attrs.title = node3.properties.title;
      return h4(node3, "link", attrs, all5(h4, node3));
    },
    img(h4, node3) {
      const attrs = addClassAndIdentifier(node3);
      attrs.url = String(node3.properties.src || "");
      if (node3.properties.title)
        attrs.title = node3.properties.title;
      if (node3.properties.alt)
        attrs.alt = node3.properties.alt;
      if (node3.properties.width)
        attrs.width = node3.properties.width;
      if (node3.properties.height)
        attrs.height = node3.properties.height;
      return h4(node3, "image", attrs);
    },
    video(h4, node3) {
      const attrs = addClassAndIdentifier(node3);
      attrs.url = String(node3.properties.src || "");
      if (node3.properties.title)
        attrs.title = node3.properties.title;
      if (node3.properties.alt)
        attrs.alt = node3.properties.alt;
      return h4(node3, "image", attrs);
    },
    iframe(h4, node3) {
      const attrs = addClassAndIdentifier(node3);
      attrs.src = String(node3.properties.src || "");
      attrs.width = "100%";
      if (node3.properties.title)
        attrs.title = node3.properties.title;
      return h4(node3, "iframe", attrs);
    },
    figure(h4, node3) {
      const attrs = addClassAndIdentifier(node3);
      return h4(node3, "container", attrs, all5(h4, node3));
    },
    figcaption(h4, node3) {
      return h4(node3, "caption", all5(h4, node3));
    },
    comment(h4, node3) {
      return h4(node3, "comment", node3.value);
    },
    sup(h4, node3) {
      return h4(node3, "superscript", all5(h4, node3));
    },
    sub(h4, node3) {
      return h4(node3, "subscript", all5(h4, node3));
    },
    kbd(h4, node3) {
      return h4(node3, "keyboard", all5(h4, node3));
    },
    cite(h4, node3) {
      const attrs = addClassAndIdentifier(node3);
      return attrs.label ? h4(node3, "cite", attrs, all5(h4, node3)) : all5(h4, node3);
    },
    details(h4, node3) {
      const attrs = addClassAndIdentifier(node3);
      return h4(node3, "details", attrs, all5(h4, node3));
    },
    summary(h4, node3) {
      return h4(node3, "summary", all5(h4, node3));
    },
    u(h4, node3) {
      const attrs = addClassAndIdentifier(node3);
      return h4(node3, "underline", attrs, all5(h4, node3));
    }
  }
};
function htmlTransform(tree, opts) {
  const handlers6 = { ...defaultHtmlToMdastOptions.htmlHandlers, ...opts === null || opts === void 0 ? void 0 : opts.htmlHandlers };
  const otherOptions = { ...defaultHtmlToMdastOptions, ...opts };
  const htmlNodes = selectAll("html", tree);
  htmlNodes.forEach((node3) => {
    const hast = unified().use(rehypeParse, { fragment: true }).parse(node3.value);
    if (otherOptions.keepBreaks) {
      selectAll("[tagName=br]", hast).forEach((n) => {
        n.tagName = "_brKeep";
      });
    }
    const mdast2 = unified().use(lib_default, { handlers: handlers6, document: false }).runSync(hast);
    node3.type = "htmlParsed";
    node3.children = mdast2.children;
    visit(node3, (n) => delete n.position);
  });
  selectAll("paragraph > htmlParsed", tree).forEach((parsed) => {
    var _a6;
    const node3 = parsed;
    if (((_a6 = node3 === null || node3 === void 0 ? void 0 : node3.children) === null || _a6 === void 0 ? void 0 : _a6.length) === 1 && node3.children[0].type === "paragraph") {
      node3.children = node3.children[0].children;
    }
  });
  liftChildren(tree, "htmlParsed");
  selectAll("_break", tree).forEach((node3) => {
    node3.type = "break";
  });
  return tree;
}
function finalizeNode(htmlOpenNodeWithChildren, htmlCloseNode) {
  var _a6, _b;
  const innerHtml = mystToHtml({ type: "root", children: htmlOpenNodeWithChildren.children }, {
    hast: {
      handlers: {
        html: (h4, node3) => {
          return fromHtml(node3.value, { fragment: true }).children;
        }
      }
    }
  });
  htmlOpenNodeWithChildren.value = `${(_a6 = htmlOpenNodeWithChildren.value) === null || _a6 === void 0 ? void 0 : _a6.trim()}${innerHtml}${(_b = htmlCloseNode.value) === null || _b === void 0 ? void 0 : _b.trim()}`;
  htmlOpenNodeWithChildren.children.forEach((child) => {
    child.type = "__delete__";
  });
  htmlCloseNode.type = "__delete__";
  delete htmlOpenNodeWithChildren.children;
}
var HTML_EMPTY_ELEMENTS = [
  "area",
  "base",
  "br",
  "col",
  "embed",
  "hr",
  "img",
  "input",
  "keygen",
  "link",
  "meta",
  "param",
  "source",
  "track",
  "wbr"
];
function reconstructHtml(tree) {
  const htmlOpenNodes = [];
  tree.children.forEach((child) => {
    var _a6;
    if (child.type === "html") {
      const value = (_a6 = child.value) === null || _a6 === void 0 ? void 0 : _a6.trim();
      const selfClosing = (value === null || value === void 0 ? void 0 : value.startsWith("<")) && (value === null || value === void 0 ? void 0 : value.endsWith("/>")) || (value === null || value === void 0 ? void 0 : value.match(new RegExp(`<(${HTML_EMPTY_ELEMENTS.join("|")})([^>]*)?/?>`)));
      if (selfClosing) {
        if (htmlOpenNodes.length) {
          htmlOpenNodes[htmlOpenNodes.length - 1].children.push(child);
        }
      } else if (value === null || value === void 0 ? void 0 : value.startsWith("</")) {
        const htmlOpenNode = htmlOpenNodes.pop();
        if (!htmlOpenNode)
          return;
        finalizeNode(htmlOpenNode, child);
        if (htmlOpenNodes.length) {
          htmlOpenNodes[htmlOpenNodes.length - 1].children.push(htmlOpenNode);
        }
      } else if (!(value === null || value === void 0 ? void 0 : value.endsWith("/>")) && !(value === null || value === void 0 ? void 0 : value.endsWith("-->"))) {
        child.children = [];
        htmlOpenNodes.push(child);
      }
    } else {
      if (child.children) {
        reconstructHtml(child);
      }
      if (htmlOpenNodes.length) {
        htmlOpenNodes[htmlOpenNodes.length - 1].children.push(child);
      }
    }
  });
  htmlOpenNodes.forEach((node3) => {
    delete node3.children;
  });
  const combined = [];
  tree.children.forEach((child) => {
    var _a6;
    if (((_a6 = combined[combined.length - 1]) === null || _a6 === void 0 ? void 0 : _a6.type) === "html" && child.type === "html") {
      combined[combined.length - 1].value = `${combined[combined.length - 1].value}${child.value}`;
    } else if (child.type !== "__delete__") {
      combined.push(child);
    }
  });
  tree.children = combined;
}
function reconstructHtmlTransform(tree) {
  reconstructHtml(tree);
  remove(tree, "__delete__");
  return tree;
}
var reconstructHtmlPlugin = () => (tree) => {
  reconstructHtmlTransform(tree);
};
var htmlPlugin = (opts) => (tree) => {
  htmlTransform(tree, opts);
};

// ../../node_modules/unist-util-map/lib/index.js
function map2(tree, mapFunction) {
  return preorder(tree, null, null);
  function preorder(node3, index4, parent2) {
    const newNode = Object.assign({}, mapFunction(node3, index4, parent2));
    if ("children" in node3) {
      newNode.children = node3.children.map(function(child, index5) {
        return preorder(child, index5, node3);
      });
    }
    return newNode;
  }
}

// ../myst-transforms/dist/htmlIds.js
function htmlIdsTransform(mdast2) {
  const ids = /* @__PURE__ */ new Set();
  map2(mdast2, (node3) => {
    if (!node3.html_id)
      return;
    if (!ids.has(node3.html_id)) {
      ids.add(node3.html_id);
      return;
    }
    const original = node3.html_id;
    let number2 = 1;
    let next = `${original}-${number2}`;
    while (ids.has(next)) {
      number2 += 1;
      next = `${original}-${number2}`;
    }
    node3.html_id = next;
    ids.add(node3.html_id);
    return node3;
  });
}

// ../myst-transforms/dist/keys.js
function addKeys(node3) {
  if (node3.key)
    return;
  node3.key = createId();
  return node3;
}
function keysTransform(mdast2) {
  return map2(mdast2, addKeys);
}

// ../../node_modules/katex/dist/katex.mjs
var SourceLocation = class _SourceLocation {
  // The + prefix indicates that these fields aren't writeable
  // Lexer holding the input string.
  // Start offset, zero-based inclusive.
  // End offset, zero-based exclusive.
  constructor(lexer, start, end) {
    this.lexer = void 0;
    this.start = void 0;
    this.end = void 0;
    this.lexer = lexer;
    this.start = start;
    this.end = end;
  }
  /**
   * Merges two `SourceLocation`s from location providers, given they are
   * provided in order of appearance.
   * - Returns the first one's location if only the first is provided.
   * - Returns a merged range of the first and the last if both are provided
   *   and their lexers match.
   * - Otherwise, returns null.
   */
  static range(first2, second) {
    if (!second) {
      return first2 && first2.loc;
    } else if (!first2 || !first2.loc || !second.loc || first2.loc.lexer !== second.loc.lexer) {
      return null;
    } else {
      return new _SourceLocation(first2.loc.lexer, first2.loc.start, second.loc.end);
    }
  }
};
var Token = class _Token {
  // don't expand the token
  // used in \noexpand
  constructor(text7, loc) {
    this.text = void 0;
    this.loc = void 0;
    this.noexpand = void 0;
    this.treatAsRelax = void 0;
    this.text = text7;
    this.loc = loc;
  }
  /**
   * Given a pair of tokens (this and endToken), compute a `Token` encompassing
   * the whole input range enclosed by these two.
   */
  range(endToken, text7) {
    return new _Token(text7, SourceLocation.range(this, endToken));
  }
};
var ParseError = class _ParseError {
  // Error position based on passed-in Token or ParseNode.
  constructor(message, token) {
    this.position = void 0;
    var error = "KaTeX parse error: " + message;
    var start;
    var loc = token && token.loc;
    if (loc && loc.start <= loc.end) {
      var input3 = loc.lexer.input;
      start = loc.start;
      var end = loc.end;
      if (start === input3.length) {
        error += " at end of input: ";
      } else {
        error += " at position " + (start + 1) + ": ";
      }
      var underlined = input3.slice(start, end).replace(/[^]/g, "$&\u0332");
      var left2;
      if (start > 15) {
        left2 = "\u2026" + input3.slice(start - 15, start);
      } else {
        left2 = input3.slice(0, start);
      }
      var right2;
      if (end + 15 < input3.length) {
        right2 = input3.slice(end, end + 15) + "\u2026";
      } else {
        right2 = input3.slice(end);
      }
      error += left2 + underlined + right2;
    }
    var self2 = new Error(error);
    self2.name = "ParseError";
    self2.__proto__ = _ParseError.prototype;
    self2.position = start;
    return self2;
  }
};
ParseError.prototype.__proto__ = Error.prototype;
var contains = function contains2(list6, elem) {
  return list6.indexOf(elem) !== -1;
};
var deflt = function deflt2(setting, defaultIfUndefined) {
  return setting === void 0 ? defaultIfUndefined : setting;
};
var uppercase = /([A-Z])/g;
var hyphenate = function hyphenate2(str2) {
  return str2.replace(uppercase, "-$1").toLowerCase();
};
var ESCAPE_LOOKUP = {
  "&": "&amp;",
  ">": "&gt;",
  "<": "&lt;",
  '"': "&quot;",
  "'": "&#x27;"
};
var ESCAPE_REGEX = /[&><"']/g;
function escape2(text7) {
  return String(text7).replace(ESCAPE_REGEX, (match3) => ESCAPE_LOOKUP[match3]);
}
var getBaseElem = function getBaseElem2(group3) {
  if (group3.type === "ordgroup") {
    if (group3.body.length === 1) {
      return getBaseElem2(group3.body[0]);
    } else {
      return group3;
    }
  } else if (group3.type === "color") {
    if (group3.body.length === 1) {
      return getBaseElem2(group3.body[0]);
    } else {
      return group3;
    }
  } else if (group3.type === "font") {
    return getBaseElem2(group3.body);
  } else {
    return group3;
  }
};
var isCharacterBox = function isCharacterBox2(group3) {
  var baseElem = getBaseElem(group3);
  return baseElem.type === "mathord" || baseElem.type === "textord" || baseElem.type === "atom";
};
var assert = function assert2(value) {
  if (!value) {
    throw new Error("Expected non-null, but got " + String(value));
  }
  return value;
};
var protocolFromUrl = function protocolFromUrl2(url) {
  var protocol = /^\s*([^\\/#]*?)(?::|&#0*58|&#x0*3a)/i.exec(url);
  return protocol != null ? protocol[1] : "_relative";
};
var utils = {
  contains,
  deflt,
  escape: escape2,
  hyphenate,
  getBaseElem,
  isCharacterBox,
  protocolFromUrl
};
var SETTINGS_SCHEMA = {
  displayMode: {
    type: "boolean",
    description: "Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",
    cli: "-d, --display-mode"
  },
  output: {
    type: {
      enum: ["htmlAndMathml", "html", "mathml"]
    },
    description: "Determines the markup language of the output.",
    cli: "-F, --format <type>"
  },
  leqno: {
    type: "boolean",
    description: "Render display math in leqno style (left-justified tags)."
  },
  fleqn: {
    type: "boolean",
    description: "Render display math flush left."
  },
  throwOnError: {
    type: "boolean",
    default: true,
    cli: "-t, --no-throw-on-error",
    cliDescription: "Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."
  },
  errorColor: {
    type: "string",
    default: "#cc0000",
    cli: "-c, --error-color <color>",
    cliDescription: "A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",
    cliProcessor: (color2) => "#" + color2
  },
  macros: {
    type: "object",
    cli: "-m, --macro <def>",
    cliDescription: "Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",
    cliDefault: [],
    cliProcessor: (def, defs) => {
      defs.push(def);
      return defs;
    }
  },
  minRuleThickness: {
    type: "number",
    description: "Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",
    processor: (t2) => Math.max(0, t2),
    cli: "--min-rule-thickness <size>",
    cliProcessor: parseFloat
  },
  colorIsTextColor: {
    type: "boolean",
    description: "Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",
    cli: "-b, --color-is-text-color"
  },
  strict: {
    type: [{
      enum: ["warn", "ignore", "error"]
    }, "boolean", "function"],
    description: "Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",
    cli: "-S, --strict",
    cliDefault: false
  },
  trust: {
    type: ["boolean", "function"],
    description: "Trust the input, enabling all HTML features such as \\url.",
    cli: "-T, --trust"
  },
  maxSize: {
    type: "number",
    default: Infinity,
    description: "If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",
    processor: (s5) => Math.max(0, s5),
    cli: "-s, --max-size <n>",
    cliProcessor: parseInt
  },
  maxExpand: {
    type: "number",
    default: 1e3,
    description: "Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",
    processor: (n) => Math.max(0, n),
    cli: "-e, --max-expand <n>",
    cliProcessor: (n) => n === "Infinity" ? Infinity : parseInt(n)
  },
  globalGroup: {
    type: "boolean",
    cli: false
  }
};
function getDefaultValue(schema2) {
  if (schema2.default) {
    return schema2.default;
  }
  var type2 = schema2.type;
  var defaultType = Array.isArray(type2) ? type2[0] : type2;
  if (typeof defaultType !== "string") {
    return defaultType.enum[0];
  }
  switch (defaultType) {
    case "boolean":
      return false;
    case "string":
      return "";
    case "number":
      return 0;
    case "object":
      return {};
  }
}
var Settings = class {
  constructor(options) {
    this.displayMode = void 0;
    this.output = void 0;
    this.leqno = void 0;
    this.fleqn = void 0;
    this.throwOnError = void 0;
    this.errorColor = void 0;
    this.macros = void 0;
    this.minRuleThickness = void 0;
    this.colorIsTextColor = void 0;
    this.strict = void 0;
    this.trust = void 0;
    this.maxSize = void 0;
    this.maxExpand = void 0;
    this.globalGroup = void 0;
    options = options || {};
    for (var prop in SETTINGS_SCHEMA) {
      if (SETTINGS_SCHEMA.hasOwnProperty(prop)) {
        var schema2 = SETTINGS_SCHEMA[prop];
        this[prop] = options[prop] !== void 0 ? schema2.processor ? schema2.processor(options[prop]) : options[prop] : getDefaultValue(schema2);
      }
    }
  }
  /**
   * Report nonstrict (non-LaTeX-compatible) input.
   * Can safely not be called if `this.strict` is false in JavaScript.
   */
  reportNonstrict(errorCode, errorMsg, token) {
    var strict = this.strict;
    if (typeof strict === "function") {
      strict = strict(errorCode, errorMsg, token);
    }
    if (!strict || strict === "ignore") {
      return;
    } else if (strict === true || strict === "error") {
      throw new ParseError("LaTeX-incompatible input and strict mode is set to 'error': " + (errorMsg + " [" + errorCode + "]"), token);
    } else if (strict === "warn") {
      typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + (errorMsg + " [" + errorCode + "]"));
    } else {
      typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to " + ("unrecognized '" + strict + "': " + errorMsg + " [" + errorCode + "]"));
    }
  }
  /**
   * Check whether to apply strict (LaTeX-adhering) behavior for unusual
   * input (like `\\`).  Unlike `nonstrict`, will not throw an error;
   * instead, "error" translates to a return value of `true`, while "ignore"
   * translates to a return value of `false`.  May still print a warning:
   * "warn" prints a warning and returns `false`.
   * This is for the second category of `errorCode`s listed in the README.
   */
  useStrictBehavior(errorCode, errorMsg, token) {
    var strict = this.strict;
    if (typeof strict === "function") {
      try {
        strict = strict(errorCode, errorMsg, token);
      } catch (error) {
        strict = "error";
      }
    }
    if (!strict || strict === "ignore") {
      return false;
    } else if (strict === true || strict === "error") {
      return true;
    } else if (strict === "warn") {
      typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + (errorMsg + " [" + errorCode + "]"));
      return false;
    } else {
      typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to " + ("unrecognized '" + strict + "': " + errorMsg + " [" + errorCode + "]"));
      return false;
    }
  }
  /**
   * Check whether to test potentially dangerous input, and return
   * `true` (trusted) or `false` (untrusted).  The sole argument `context`
   * should be an object with `command` field specifying the relevant LaTeX
   * command (as a string starting with `\`), and any other arguments, etc.
   * If `context` has a `url` field, a `protocol` field will automatically
   * get added by this function (changing the specified object).
   */
  isTrusted(context) {
    if (context.url && !context.protocol) {
      context.protocol = utils.protocolFromUrl(context.url);
    }
    var trust = typeof this.trust === "function" ? this.trust(context) : this.trust;
    return Boolean(trust);
  }
};
var Style = class {
  constructor(id, size, cramped) {
    this.id = void 0;
    this.size = void 0;
    this.cramped = void 0;
    this.id = id;
    this.size = size;
    this.cramped = cramped;
  }
  /**
   * Get the style of a superscript given a base in the current style.
   */
  sup() {
    return styles5[sup[this.id]];
  }
  /**
   * Get the style of a subscript given a base in the current style.
   */
  sub() {
    return styles5[sub[this.id]];
  }
  /**
   * Get the style of a fraction numerator given the fraction in the current
   * style.
   */
  fracNum() {
    return styles5[fracNum[this.id]];
  }
  /**
   * Get the style of a fraction denominator given the fraction in the current
   * style.
   */
  fracDen() {
    return styles5[fracDen[this.id]];
  }
  /**
   * Get the cramped version of a style (in particular, cramping a cramped style
   * doesn't change the style).
   */
  cramp() {
    return styles5[cramp[this.id]];
  }
  /**
   * Get a text or display version of this style.
   */
  text() {
    return styles5[text$1[this.id]];
  }
  /**
   * Return true if this style is tightly spaced (scriptstyle/scriptscriptstyle)
   */
  isTight() {
    return this.size >= 2;
  }
};
var D = 0;
var Dc = 1;
var T = 2;
var Tc = 3;
var S = 4;
var Sc = 5;
var SS = 6;
var SSc = 7;
var styles5 = [new Style(D, 0, false), new Style(Dc, 0, true), new Style(T, 1, false), new Style(Tc, 1, true), new Style(S, 2, false), new Style(Sc, 2, true), new Style(SS, 3, false), new Style(SSc, 3, true)];
var sup = [S, Sc, S, Sc, SS, SSc, SS, SSc];
var sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc];
var fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc];
var fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc];
var cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc];
var text$1 = [D, Dc, T, Tc, T, Tc, T, Tc];
var Style$1 = {
  DISPLAY: styles5[D],
  TEXT: styles5[T],
  SCRIPT: styles5[S],
  SCRIPTSCRIPT: styles5[SS]
};
var scriptData = [{
  // Latin characters beyond the Latin-1 characters we have metrics for.
  // Needed for Czech, Hungarian and Turkish text, for example.
  name: "latin",
  blocks: [
    [256, 591],
    // Latin Extended-A and Latin Extended-B
    [768, 879]
    // Combining Diacritical marks
  ]
}, {
  // The Cyrillic script used by Russian and related languages.
  // A Cyrillic subset used to be supported as explicitly defined
  // symbols in symbols.js
  name: "cyrillic",
  blocks: [[1024, 1279]]
}, {
  // Armenian
  name: "armenian",
  blocks: [[1328, 1423]]
}, {
  // The Brahmic scripts of South and Southeast Asia
  // Devanagari (0900–097F)
  // Bengali (0980–09FF)
  // Gurmukhi (0A00–0A7F)
  // Gujarati (0A80–0AFF)
  // Oriya (0B00–0B7F)
  // Tamil (0B80–0BFF)
  // Telugu (0C00–0C7F)
  // Kannada (0C80–0CFF)
  // Malayalam (0D00–0D7F)
  // Sinhala (0D80–0DFF)
  // Thai (0E00–0E7F)
  // Lao (0E80–0EFF)
  // Tibetan (0F00–0FFF)
  // Myanmar (1000–109F)
  name: "brahmic",
  blocks: [[2304, 4255]]
}, {
  name: "georgian",
  blocks: [[4256, 4351]]
}, {
  // Chinese and Japanese.
  // The "k" in cjk is for Korean, but we've separated Korean out
  name: "cjk",
  blocks: [
    [12288, 12543],
    // CJK symbols and punctuation, Hiragana, Katakana
    [19968, 40879],
    // CJK ideograms
    [65280, 65376]
    // Fullwidth punctuation
    // TODO: add halfwidth Katakana and Romanji glyphs
  ]
}, {
  // Korean
  name: "hangul",
  blocks: [[44032, 55215]]
}];
function scriptFromCodepoint(codepoint) {
  for (var i2 = 0; i2 < scriptData.length; i2++) {
    var script = scriptData[i2];
    for (var _i = 0; _i < script.blocks.length; _i++) {
      var block5 = script.blocks[_i];
      if (codepoint >= block5[0] && codepoint <= block5[1]) {
        return script.name;
      }
    }
  }
  return null;
}
var allBlocks = [];
scriptData.forEach((s5) => s5.blocks.forEach((b) => allBlocks.push(...b)));
function supportedCodepoint(codepoint) {
  for (var i2 = 0; i2 < allBlocks.length; i2 += 2) {
    if (codepoint >= allBlocks[i2] && codepoint <= allBlocks[i2 + 1]) {
      return true;
    }
  }
  return false;
}
var hLinePad = 80;
var sqrtMain = function sqrtMain2(extraViniculum, hLinePad2) {
  return "M95," + (622 + extraViniculum + hLinePad2) + "\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl" + extraViniculum / 2.075 + " -" + extraViniculum + "\nc5.3,-9.3,12,-14,20,-14\nH400000v" + (40 + extraViniculum) + "H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM" + (834 + extraViniculum) + " " + hLinePad2 + "h400000v" + (40 + extraViniculum) + "h-400000z";
};
var sqrtSize1 = function sqrtSize12(extraViniculum, hLinePad2) {
  return "M263," + (601 + extraViniculum + hLinePad2) + "c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl" + extraViniculum / 2.084 + " -" + extraViniculum + "\nc4.7,-7.3,11,-11,19,-11\nH40000v" + (40 + extraViniculum) + "H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM" + (1001 + extraViniculum) + " " + hLinePad2 + "h400000v" + (40 + extraViniculum) + "h-400000z";
};
var sqrtSize2 = function sqrtSize22(extraViniculum, hLinePad2) {
  return "M983 " + (10 + extraViniculum + hLinePad2) + "\nl" + extraViniculum / 3.13 + " -" + extraViniculum + "\nc4,-6.7,10,-10,18,-10 H400000v" + (40 + extraViniculum) + "\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM" + (1001 + extraViniculum) + " " + hLinePad2 + "h400000v" + (40 + extraViniculum) + "h-400000z";
};
var sqrtSize3 = function sqrtSize32(extraViniculum, hLinePad2) {
  return "M424," + (2398 + extraViniculum + hLinePad2) + "\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl" + extraViniculum / 4.223 + " -" + extraViniculum + "c4,-6.7,10,-10,18,-10 H400000\nv" + (40 + extraViniculum) + "H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M" + (1001 + extraViniculum) + " " + hLinePad2 + "\nh400000v" + (40 + extraViniculum) + "h-400000z";
};
var sqrtSize4 = function sqrtSize42(extraViniculum, hLinePad2) {
  return "M473," + (2713 + extraViniculum + hLinePad2) + "\nc339.3,-1799.3,509.3,-2700,510,-2702 l" + extraViniculum / 5.298 + " -" + extraViniculum + "\nc3.3,-7.3,9.3,-11,18,-11 H400000v" + (40 + extraViniculum) + "H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM" + (1001 + extraViniculum) + " " + hLinePad2 + "h400000v" + (40 + extraViniculum) + "H1017.7z";
};
var phasePath = function phasePath2(y) {
  var x2 = y / 2;
  return "M400000 " + y + " H0 L" + x2 + " 0 l65 45 L145 " + (y - 80) + " H400000z";
};
var sqrtTall = function sqrtTall2(extraViniculum, hLinePad2, viewBoxHeight) {
  var vertSegment = viewBoxHeight - 54 - hLinePad2 - extraViniculum;
  return "M702 " + (extraViniculum + hLinePad2) + "H400000" + (40 + extraViniculum) + "\nH742v" + vertSegment + "l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 " + hLinePad2 + "H400000v" + (40 + extraViniculum) + "H742z";
};
var sqrtPath = function sqrtPath2(size, extraViniculum, viewBoxHeight) {
  extraViniculum = 1e3 * extraViniculum;
  var path45 = "";
  switch (size) {
    case "sqrtMain":
      path45 = sqrtMain(extraViniculum, hLinePad);
      break;
    case "sqrtSize1":
      path45 = sqrtSize1(extraViniculum, hLinePad);
      break;
    case "sqrtSize2":
      path45 = sqrtSize2(extraViniculum, hLinePad);
      break;
    case "sqrtSize3":
      path45 = sqrtSize3(extraViniculum, hLinePad);
      break;
    case "sqrtSize4":
      path45 = sqrtSize4(extraViniculum, hLinePad);
      break;
    case "sqrtTall":
      path45 = sqrtTall(extraViniculum, hLinePad, viewBoxHeight);
  }
  return path45;
};
var innerPath = function innerPath2(name3, height2) {
  switch (name3) {
    case "\u239C":
      return "M291 0 H417 V" + height2 + " H291z M291 0 H417 V" + height2 + " H291z";
    case "\u2223":
      return "M145 0 H188 V" + height2 + " H145z M145 0 H188 V" + height2 + " H145z";
    case "\u2225":
      return "M145 0 H188 V" + height2 + " H145z M145 0 H188 V" + height2 + " H145z" + ("M367 0 H410 V" + height2 + " H367z M367 0 H410 V" + height2 + " H367z");
    case "\u239F":
      return "M457 0 H583 V" + height2 + " H457z M457 0 H583 V" + height2 + " H457z";
    case "\u23A2":
      return "M319 0 H403 V" + height2 + " H319z M319 0 H403 V" + height2 + " H319z";
    case "\u23A5":
      return "M263 0 H347 V" + height2 + " H263z M263 0 H347 V" + height2 + " H263z";
    case "\u23AA":
      return "M384 0 H504 V" + height2 + " H384z M384 0 H504 V" + height2 + " H384z";
    case "\u23D0":
      return "M312 0 H355 V" + height2 + " H312z M312 0 H355 V" + height2 + " H312z";
    case "\u2016":
      return "M257 0 H300 V" + height2 + " H257z M257 0 H300 V" + height2 + " H257z" + ("M478 0 H521 V" + height2 + " H478z M478 0 H521 V" + height2 + " H478z");
    default:
      return "";
  }
};
var path3 = {
  // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main
  doubleleftarrow: "M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",
  // doublerightarrow is from glyph U+21D2 in font KaTeX Main
  doublerightarrow: "M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",
  // leftarrow is from glyph U+2190 in font KaTeX Main
  leftarrow: "M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",
  // overbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular
  leftbrace: "M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",
  leftbraceunder: "M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",
  // overgroup is from the MnSymbol package (public domain)
  leftgroup: "M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",
  leftgroupunder: "M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",
  // Harpoons are from glyph U+21BD in font KaTeX Main
  leftharpoon: "M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",
  leftharpoonplus: "M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",
  leftharpoondown: "M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",
  leftharpoondownplus: "M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",
  // hook is from glyph U+21A9 in font KaTeX Main
  lefthook: "M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",
  leftlinesegment: "M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",
  leftmapsto: "M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",
  // tofrom is from glyph U+21C4 in font KaTeX AMS Regular
  leftToFrom: "M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",
  longequal: "M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",
  midbrace: "M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",
  midbraceunder: "M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",
  oiintSize1: "M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",
  oiintSize2: "M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",
  oiiintSize1: "M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",
  oiiintSize2: "M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",
  rightarrow: "M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",
  rightbrace: "M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",
  rightbraceunder: "M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",
  rightgroup: "M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",
  rightgroupunder: "M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",
  rightharpoon: "M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",
  rightharpoonplus: "M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",
  rightharpoondown: "M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",
  rightharpoondownplus: "M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",
  righthook: "M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",
  rightlinesegment: "M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",
  rightToFrom: "M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",
  // twoheadleftarrow is from glyph U+219E in font KaTeX AMS Regular
  twoheadleftarrow: "M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",
  twoheadrightarrow: "M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",
  // tilde1 is a modified version of a glyph from the MnSymbol package
  tilde1: "M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",
  // ditto tilde2, tilde3, & tilde4
  tilde2: "M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",
  tilde3: "M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",
  tilde4: "M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",
  // vec is from glyph U+20D7 in font KaTeX Main
  vec: "M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",
  // widehat1 is a modified version of a glyph from the MnSymbol package
  widehat1: "M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",
  // ditto widehat2, widehat3, & widehat4
  widehat2: "M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",
  widehat3: "M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",
  widehat4: "M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",
  // widecheck paths are all inverted versions of widehat
  widecheck1: "M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",
  widecheck2: "M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",
  widecheck3: "M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",
  widecheck4: "M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",
  // The next ten paths support reaction arrows from the mhchem package.
  // Arrows for \ce{<-->} are offset from xAxis by 0.22ex, per mhchem in LaTeX
  // baraboveleftarrow is mostly from from glyph U+2190 in font KaTeX Main
  baraboveleftarrow: "M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",
  // rightarrowabovebar is mostly from glyph U+2192, KaTeX Main
  rightarrowabovebar: "M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",
  // The short left harpoon has 0.5em (i.e. 500 units) kern on the left end.
  // Ref from mhchem.sty: \rlap{\raisebox{-.22ex}{$\kern0.5em
  baraboveshortleftharpoon: "M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",
  rightharpoonaboveshortbar: "M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",
  shortbaraboveleftharpoon: "M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",
  shortrightharpoonabovebar: "M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"
};
var DocumentFragment = class {
  // HtmlDomNode
  // Never used; needed for satisfying interface.
  constructor(children) {
    this.children = void 0;
    this.classes = void 0;
    this.height = void 0;
    this.depth = void 0;
    this.maxFontSize = void 0;
    this.style = void 0;
    this.children = children;
    this.classes = [];
    this.height = 0;
    this.depth = 0;
    this.maxFontSize = 0;
    this.style = {};
  }
  hasClass(className) {
    return utils.contains(this.classes, className);
  }
  /** Convert the fragment into a node. */
  toNode() {
    var frag = document.createDocumentFragment();
    for (var i2 = 0; i2 < this.children.length; i2++) {
      frag.appendChild(this.children[i2].toNode());
    }
    return frag;
  }
  /** Convert the fragment into HTML markup. */
  toMarkup() {
    var markup = "";
    for (var i2 = 0; i2 < this.children.length; i2++) {
      markup += this.children[i2].toMarkup();
    }
    return markup;
  }
  /**
   * Converts the math node into a string, similar to innerText. Applies to
   * MathDomNode's only.
   */
  toText() {
    var toText3 = (child) => child.toText();
    return this.children.map(toText3).join("");
  }
};
var fontMetricsData = {
  "AMS-Regular": {
    "32": [0, 0, 0, 0, 0.25],
    "65": [0, 0.68889, 0, 0, 0.72222],
    "66": [0, 0.68889, 0, 0, 0.66667],
    "67": [0, 0.68889, 0, 0, 0.72222],
    "68": [0, 0.68889, 0, 0, 0.72222],
    "69": [0, 0.68889, 0, 0, 0.66667],
    "70": [0, 0.68889, 0, 0, 0.61111],
    "71": [0, 0.68889, 0, 0, 0.77778],
    "72": [0, 0.68889, 0, 0, 0.77778],
    "73": [0, 0.68889, 0, 0, 0.38889],
    "74": [0.16667, 0.68889, 0, 0, 0.5],
    "75": [0, 0.68889, 0, 0, 0.77778],
    "76": [0, 0.68889, 0, 0, 0.66667],
    "77": [0, 0.68889, 0, 0, 0.94445],
    "78": [0, 0.68889, 0, 0, 0.72222],
    "79": [0.16667, 0.68889, 0, 0, 0.77778],
    "80": [0, 0.68889, 0, 0, 0.61111],
    "81": [0.16667, 0.68889, 0, 0, 0.77778],
    "82": [0, 0.68889, 0, 0, 0.72222],
    "83": [0, 0.68889, 0, 0, 0.55556],
    "84": [0, 0.68889, 0, 0, 0.66667],
    "85": [0, 0.68889, 0, 0, 0.72222],
    "86": [0, 0.68889, 0, 0, 0.72222],
    "87": [0, 0.68889, 0, 0, 1],
    "88": [0, 0.68889, 0, 0, 0.72222],
    "89": [0, 0.68889, 0, 0, 0.72222],
    "90": [0, 0.68889, 0, 0, 0.66667],
    "107": [0, 0.68889, 0, 0, 0.55556],
    "160": [0, 0, 0, 0, 0.25],
    "165": [0, 0.675, 0.025, 0, 0.75],
    "174": [0.15559, 0.69224, 0, 0, 0.94666],
    "240": [0, 0.68889, 0, 0, 0.55556],
    "295": [0, 0.68889, 0, 0, 0.54028],
    "710": [0, 0.825, 0, 0, 2.33334],
    "732": [0, 0.9, 0, 0, 2.33334],
    "770": [0, 0.825, 0, 0, 2.33334],
    "771": [0, 0.9, 0, 0, 2.33334],
    "989": [0.08167, 0.58167, 0, 0, 0.77778],
    "1008": [0, 0.43056, 0.04028, 0, 0.66667],
    "8245": [0, 0.54986, 0, 0, 0.275],
    "8463": [0, 0.68889, 0, 0, 0.54028],
    "8487": [0, 0.68889, 0, 0, 0.72222],
    "8498": [0, 0.68889, 0, 0, 0.55556],
    "8502": [0, 0.68889, 0, 0, 0.66667],
    "8503": [0, 0.68889, 0, 0, 0.44445],
    "8504": [0, 0.68889, 0, 0, 0.66667],
    "8513": [0, 0.68889, 0, 0, 0.63889],
    "8592": [-0.03598, 0.46402, 0, 0, 0.5],
    "8594": [-0.03598, 0.46402, 0, 0, 0.5],
    "8602": [-0.13313, 0.36687, 0, 0, 1],
    "8603": [-0.13313, 0.36687, 0, 0, 1],
    "8606": [0.01354, 0.52239, 0, 0, 1],
    "8608": [0.01354, 0.52239, 0, 0, 1],
    "8610": [0.01354, 0.52239, 0, 0, 1.11111],
    "8611": [0.01354, 0.52239, 0, 0, 1.11111],
    "8619": [0, 0.54986, 0, 0, 1],
    "8620": [0, 0.54986, 0, 0, 1],
    "8621": [-0.13313, 0.37788, 0, 0, 1.38889],
    "8622": [-0.13313, 0.36687, 0, 0, 1],
    "8624": [0, 0.69224, 0, 0, 0.5],
    "8625": [0, 0.69224, 0, 0, 0.5],
    "8630": [0, 0.43056, 0, 0, 1],
    "8631": [0, 0.43056, 0, 0, 1],
    "8634": [0.08198, 0.58198, 0, 0, 0.77778],
    "8635": [0.08198, 0.58198, 0, 0, 0.77778],
    "8638": [0.19444, 0.69224, 0, 0, 0.41667],
    "8639": [0.19444, 0.69224, 0, 0, 0.41667],
    "8642": [0.19444, 0.69224, 0, 0, 0.41667],
    "8643": [0.19444, 0.69224, 0, 0, 0.41667],
    "8644": [0.1808, 0.675, 0, 0, 1],
    "8646": [0.1808, 0.675, 0, 0, 1],
    "8647": [0.1808, 0.675, 0, 0, 1],
    "8648": [0.19444, 0.69224, 0, 0, 0.83334],
    "8649": [0.1808, 0.675, 0, 0, 1],
    "8650": [0.19444, 0.69224, 0, 0, 0.83334],
    "8651": [0.01354, 0.52239, 0, 0, 1],
    "8652": [0.01354, 0.52239, 0, 0, 1],
    "8653": [-0.13313, 0.36687, 0, 0, 1],
    "8654": [-0.13313, 0.36687, 0, 0, 1],
    "8655": [-0.13313, 0.36687, 0, 0, 1],
    "8666": [0.13667, 0.63667, 0, 0, 1],
    "8667": [0.13667, 0.63667, 0, 0, 1],
    "8669": [-0.13313, 0.37788, 0, 0, 1],
    "8672": [-0.064, 0.437, 0, 0, 1.334],
    "8674": [-0.064, 0.437, 0, 0, 1.334],
    "8705": [0, 0.825, 0, 0, 0.5],
    "8708": [0, 0.68889, 0, 0, 0.55556],
    "8709": [0.08167, 0.58167, 0, 0, 0.77778],
    "8717": [0, 0.43056, 0, 0, 0.42917],
    "8722": [-0.03598, 0.46402, 0, 0, 0.5],
    "8724": [0.08198, 0.69224, 0, 0, 0.77778],
    "8726": [0.08167, 0.58167, 0, 0, 0.77778],
    "8733": [0, 0.69224, 0, 0, 0.77778],
    "8736": [0, 0.69224, 0, 0, 0.72222],
    "8737": [0, 0.69224, 0, 0, 0.72222],
    "8738": [0.03517, 0.52239, 0, 0, 0.72222],
    "8739": [0.08167, 0.58167, 0, 0, 0.22222],
    "8740": [0.25142, 0.74111, 0, 0, 0.27778],
    "8741": [0.08167, 0.58167, 0, 0, 0.38889],
    "8742": [0.25142, 0.74111, 0, 0, 0.5],
    "8756": [0, 0.69224, 0, 0, 0.66667],
    "8757": [0, 0.69224, 0, 0, 0.66667],
    "8764": [-0.13313, 0.36687, 0, 0, 0.77778],
    "8765": [-0.13313, 0.37788, 0, 0, 0.77778],
    "8769": [-0.13313, 0.36687, 0, 0, 0.77778],
    "8770": [-0.03625, 0.46375, 0, 0, 0.77778],
    "8774": [0.30274, 0.79383, 0, 0, 0.77778],
    "8776": [-0.01688, 0.48312, 0, 0, 0.77778],
    "8778": [0.08167, 0.58167, 0, 0, 0.77778],
    "8782": [0.06062, 0.54986, 0, 0, 0.77778],
    "8783": [0.06062, 0.54986, 0, 0, 0.77778],
    "8785": [0.08198, 0.58198, 0, 0, 0.77778],
    "8786": [0.08198, 0.58198, 0, 0, 0.77778],
    "8787": [0.08198, 0.58198, 0, 0, 0.77778],
    "8790": [0, 0.69224, 0, 0, 0.77778],
    "8791": [0.22958, 0.72958, 0, 0, 0.77778],
    "8796": [0.08198, 0.91667, 0, 0, 0.77778],
    "8806": [0.25583, 0.75583, 0, 0, 0.77778],
    "8807": [0.25583, 0.75583, 0, 0, 0.77778],
    "8808": [0.25142, 0.75726, 0, 0, 0.77778],
    "8809": [0.25142, 0.75726, 0, 0, 0.77778],
    "8812": [0.25583, 0.75583, 0, 0, 0.5],
    "8814": [0.20576, 0.70576, 0, 0, 0.77778],
    "8815": [0.20576, 0.70576, 0, 0, 0.77778],
    "8816": [0.30274, 0.79383, 0, 0, 0.77778],
    "8817": [0.30274, 0.79383, 0, 0, 0.77778],
    "8818": [0.22958, 0.72958, 0, 0, 0.77778],
    "8819": [0.22958, 0.72958, 0, 0, 0.77778],
    "8822": [0.1808, 0.675, 0, 0, 0.77778],
    "8823": [0.1808, 0.675, 0, 0, 0.77778],
    "8828": [0.13667, 0.63667, 0, 0, 0.77778],
    "8829": [0.13667, 0.63667, 0, 0, 0.77778],
    "8830": [0.22958, 0.72958, 0, 0, 0.77778],
    "8831": [0.22958, 0.72958, 0, 0, 0.77778],
    "8832": [0.20576, 0.70576, 0, 0, 0.77778],
    "8833": [0.20576, 0.70576, 0, 0, 0.77778],
    "8840": [0.30274, 0.79383, 0, 0, 0.77778],
    "8841": [0.30274, 0.79383, 0, 0, 0.77778],
    "8842": [0.13597, 0.63597, 0, 0, 0.77778],
    "8843": [0.13597, 0.63597, 0, 0, 0.77778],
    "8847": [0.03517, 0.54986, 0, 0, 0.77778],
    "8848": [0.03517, 0.54986, 0, 0, 0.77778],
    "8858": [0.08198, 0.58198, 0, 0, 0.77778],
    "8859": [0.08198, 0.58198, 0, 0, 0.77778],
    "8861": [0.08198, 0.58198, 0, 0, 0.77778],
    "8862": [0, 0.675, 0, 0, 0.77778],
    "8863": [0, 0.675, 0, 0, 0.77778],
    "8864": [0, 0.675, 0, 0, 0.77778],
    "8865": [0, 0.675, 0, 0, 0.77778],
    "8872": [0, 0.69224, 0, 0, 0.61111],
    "8873": [0, 0.69224, 0, 0, 0.72222],
    "8874": [0, 0.69224, 0, 0, 0.88889],
    "8876": [0, 0.68889, 0, 0, 0.61111],
    "8877": [0, 0.68889, 0, 0, 0.61111],
    "8878": [0, 0.68889, 0, 0, 0.72222],
    "8879": [0, 0.68889, 0, 0, 0.72222],
    "8882": [0.03517, 0.54986, 0, 0, 0.77778],
    "8883": [0.03517, 0.54986, 0, 0, 0.77778],
    "8884": [0.13667, 0.63667, 0, 0, 0.77778],
    "8885": [0.13667, 0.63667, 0, 0, 0.77778],
    "8888": [0, 0.54986, 0, 0, 1.11111],
    "8890": [0.19444, 0.43056, 0, 0, 0.55556],
    "8891": [0.19444, 0.69224, 0, 0, 0.61111],
    "8892": [0.19444, 0.69224, 0, 0, 0.61111],
    "8901": [0, 0.54986, 0, 0, 0.27778],
    "8903": [0.08167, 0.58167, 0, 0, 0.77778],
    "8905": [0.08167, 0.58167, 0, 0, 0.77778],
    "8906": [0.08167, 0.58167, 0, 0, 0.77778],
    "8907": [0, 0.69224, 0, 0, 0.77778],
    "8908": [0, 0.69224, 0, 0, 0.77778],
    "8909": [-0.03598, 0.46402, 0, 0, 0.77778],
    "8910": [0, 0.54986, 0, 0, 0.76042],
    "8911": [0, 0.54986, 0, 0, 0.76042],
    "8912": [0.03517, 0.54986, 0, 0, 0.77778],
    "8913": [0.03517, 0.54986, 0, 0, 0.77778],
    "8914": [0, 0.54986, 0, 0, 0.66667],
    "8915": [0, 0.54986, 0, 0, 0.66667],
    "8916": [0, 0.69224, 0, 0, 0.66667],
    "8918": [0.0391, 0.5391, 0, 0, 0.77778],
    "8919": [0.0391, 0.5391, 0, 0, 0.77778],
    "8920": [0.03517, 0.54986, 0, 0, 1.33334],
    "8921": [0.03517, 0.54986, 0, 0, 1.33334],
    "8922": [0.38569, 0.88569, 0, 0, 0.77778],
    "8923": [0.38569, 0.88569, 0, 0, 0.77778],
    "8926": [0.13667, 0.63667, 0, 0, 0.77778],
    "8927": [0.13667, 0.63667, 0, 0, 0.77778],
    "8928": [0.30274, 0.79383, 0, 0, 0.77778],
    "8929": [0.30274, 0.79383, 0, 0, 0.77778],
    "8934": [0.23222, 0.74111, 0, 0, 0.77778],
    "8935": [0.23222, 0.74111, 0, 0, 0.77778],
    "8936": [0.23222, 0.74111, 0, 0, 0.77778],
    "8937": [0.23222, 0.74111, 0, 0, 0.77778],
    "8938": [0.20576, 0.70576, 0, 0, 0.77778],
    "8939": [0.20576, 0.70576, 0, 0, 0.77778],
    "8940": [0.30274, 0.79383, 0, 0, 0.77778],
    "8941": [0.30274, 0.79383, 0, 0, 0.77778],
    "8994": [0.19444, 0.69224, 0, 0, 0.77778],
    "8995": [0.19444, 0.69224, 0, 0, 0.77778],
    "9416": [0.15559, 0.69224, 0, 0, 0.90222],
    "9484": [0, 0.69224, 0, 0, 0.5],
    "9488": [0, 0.69224, 0, 0, 0.5],
    "9492": [0, 0.37788, 0, 0, 0.5],
    "9496": [0, 0.37788, 0, 0, 0.5],
    "9585": [0.19444, 0.68889, 0, 0, 0.88889],
    "9586": [0.19444, 0.74111, 0, 0, 0.88889],
    "9632": [0, 0.675, 0, 0, 0.77778],
    "9633": [0, 0.675, 0, 0, 0.77778],
    "9650": [0, 0.54986, 0, 0, 0.72222],
    "9651": [0, 0.54986, 0, 0, 0.72222],
    "9654": [0.03517, 0.54986, 0, 0, 0.77778],
    "9660": [0, 0.54986, 0, 0, 0.72222],
    "9661": [0, 0.54986, 0, 0, 0.72222],
    "9664": [0.03517, 0.54986, 0, 0, 0.77778],
    "9674": [0.11111, 0.69224, 0, 0, 0.66667],
    "9733": [0.19444, 0.69224, 0, 0, 0.94445],
    "10003": [0, 0.69224, 0, 0, 0.83334],
    "10016": [0, 0.69224, 0, 0, 0.83334],
    "10731": [0.11111, 0.69224, 0, 0, 0.66667],
    "10846": [0.19444, 0.75583, 0, 0, 0.61111],
    "10877": [0.13667, 0.63667, 0, 0, 0.77778],
    "10878": [0.13667, 0.63667, 0, 0, 0.77778],
    "10885": [0.25583, 0.75583, 0, 0, 0.77778],
    "10886": [0.25583, 0.75583, 0, 0, 0.77778],
    "10887": [0.13597, 0.63597, 0, 0, 0.77778],
    "10888": [0.13597, 0.63597, 0, 0, 0.77778],
    "10889": [0.26167, 0.75726, 0, 0, 0.77778],
    "10890": [0.26167, 0.75726, 0, 0, 0.77778],
    "10891": [0.48256, 0.98256, 0, 0, 0.77778],
    "10892": [0.48256, 0.98256, 0, 0, 0.77778],
    "10901": [0.13667, 0.63667, 0, 0, 0.77778],
    "10902": [0.13667, 0.63667, 0, 0, 0.77778],
    "10933": [0.25142, 0.75726, 0, 0, 0.77778],
    "10934": [0.25142, 0.75726, 0, 0, 0.77778],
    "10935": [0.26167, 0.75726, 0, 0, 0.77778],
    "10936": [0.26167, 0.75726, 0, 0, 0.77778],
    "10937": [0.26167, 0.75726, 0, 0, 0.77778],
    "10938": [0.26167, 0.75726, 0, 0, 0.77778],
    "10949": [0.25583, 0.75583, 0, 0, 0.77778],
    "10950": [0.25583, 0.75583, 0, 0, 0.77778],
    "10955": [0.28481, 0.79383, 0, 0, 0.77778],
    "10956": [0.28481, 0.79383, 0, 0, 0.77778],
    "57350": [0.08167, 0.58167, 0, 0, 0.22222],
    "57351": [0.08167, 0.58167, 0, 0, 0.38889],
    "57352": [0.08167, 0.58167, 0, 0, 0.77778],
    "57353": [0, 0.43056, 0.04028, 0, 0.66667],
    "57356": [0.25142, 0.75726, 0, 0, 0.77778],
    "57357": [0.25142, 0.75726, 0, 0, 0.77778],
    "57358": [0.41951, 0.91951, 0, 0, 0.77778],
    "57359": [0.30274, 0.79383, 0, 0, 0.77778],
    "57360": [0.30274, 0.79383, 0, 0, 0.77778],
    "57361": [0.41951, 0.91951, 0, 0, 0.77778],
    "57366": [0.25142, 0.75726, 0, 0, 0.77778],
    "57367": [0.25142, 0.75726, 0, 0, 0.77778],
    "57368": [0.25142, 0.75726, 0, 0, 0.77778],
    "57369": [0.25142, 0.75726, 0, 0, 0.77778],
    "57370": [0.13597, 0.63597, 0, 0, 0.77778],
    "57371": [0.13597, 0.63597, 0, 0, 0.77778]
  },
  "Caligraphic-Regular": {
    "32": [0, 0, 0, 0, 0.25],
    "65": [0, 0.68333, 0, 0.19445, 0.79847],
    "66": [0, 0.68333, 0.03041, 0.13889, 0.65681],
    "67": [0, 0.68333, 0.05834, 0.13889, 0.52653],
    "68": [0, 0.68333, 0.02778, 0.08334, 0.77139],
    "69": [0, 0.68333, 0.08944, 0.11111, 0.52778],
    "70": [0, 0.68333, 0.09931, 0.11111, 0.71875],
    "71": [0.09722, 0.68333, 0.0593, 0.11111, 0.59487],
    "72": [0, 0.68333, 965e-5, 0.11111, 0.84452],
    "73": [0, 0.68333, 0.07382, 0, 0.54452],
    "74": [0.09722, 0.68333, 0.18472, 0.16667, 0.67778],
    "75": [0, 0.68333, 0.01445, 0.05556, 0.76195],
    "76": [0, 0.68333, 0, 0.13889, 0.68972],
    "77": [0, 0.68333, 0, 0.13889, 1.2009],
    "78": [0, 0.68333, 0.14736, 0.08334, 0.82049],
    "79": [0, 0.68333, 0.02778, 0.11111, 0.79611],
    "80": [0, 0.68333, 0.08222, 0.08334, 0.69556],
    "81": [0.09722, 0.68333, 0, 0.11111, 0.81667],
    "82": [0, 0.68333, 0, 0.08334, 0.8475],
    "83": [0, 0.68333, 0.075, 0.13889, 0.60556],
    "84": [0, 0.68333, 0.25417, 0, 0.54464],
    "85": [0, 0.68333, 0.09931, 0.08334, 0.62583],
    "86": [0, 0.68333, 0.08222, 0, 0.61278],
    "87": [0, 0.68333, 0.08222, 0.08334, 0.98778],
    "88": [0, 0.68333, 0.14643, 0.13889, 0.7133],
    "89": [0.09722, 0.68333, 0.08222, 0.08334, 0.66834],
    "90": [0, 0.68333, 0.07944, 0.13889, 0.72473],
    "160": [0, 0, 0, 0, 0.25]
  },
  "Fraktur-Regular": {
    "32": [0, 0, 0, 0, 0.25],
    "33": [0, 0.69141, 0, 0, 0.29574],
    "34": [0, 0.69141, 0, 0, 0.21471],
    "38": [0, 0.69141, 0, 0, 0.73786],
    "39": [0, 0.69141, 0, 0, 0.21201],
    "40": [0.24982, 0.74947, 0, 0, 0.38865],
    "41": [0.24982, 0.74947, 0, 0, 0.38865],
    "42": [0, 0.62119, 0, 0, 0.27764],
    "43": [0.08319, 0.58283, 0, 0, 0.75623],
    "44": [0, 0.10803, 0, 0, 0.27764],
    "45": [0.08319, 0.58283, 0, 0, 0.75623],
    "46": [0, 0.10803, 0, 0, 0.27764],
    "47": [0.24982, 0.74947, 0, 0, 0.50181],
    "48": [0, 0.47534, 0, 0, 0.50181],
    "49": [0, 0.47534, 0, 0, 0.50181],
    "50": [0, 0.47534, 0, 0, 0.50181],
    "51": [0.18906, 0.47534, 0, 0, 0.50181],
    "52": [0.18906, 0.47534, 0, 0, 0.50181],
    "53": [0.18906, 0.47534, 0, 0, 0.50181],
    "54": [0, 0.69141, 0, 0, 0.50181],
    "55": [0.18906, 0.47534, 0, 0, 0.50181],
    "56": [0, 0.69141, 0, 0, 0.50181],
    "57": [0.18906, 0.47534, 0, 0, 0.50181],
    "58": [0, 0.47534, 0, 0, 0.21606],
    "59": [0.12604, 0.47534, 0, 0, 0.21606],
    "61": [-0.13099, 0.36866, 0, 0, 0.75623],
    "63": [0, 0.69141, 0, 0, 0.36245],
    "65": [0, 0.69141, 0, 0, 0.7176],
    "66": [0, 0.69141, 0, 0, 0.88397],
    "67": [0, 0.69141, 0, 0, 0.61254],
    "68": [0, 0.69141, 0, 0, 0.83158],
    "69": [0, 0.69141, 0, 0, 0.66278],
    "70": [0.12604, 0.69141, 0, 0, 0.61119],
    "71": [0, 0.69141, 0, 0, 0.78539],
    "72": [0.06302, 0.69141, 0, 0, 0.7203],
    "73": [0, 0.69141, 0, 0, 0.55448],
    "74": [0.12604, 0.69141, 0, 0, 0.55231],
    "75": [0, 0.69141, 0, 0, 0.66845],
    "76": [0, 0.69141, 0, 0, 0.66602],
    "77": [0, 0.69141, 0, 0, 1.04953],
    "78": [0, 0.69141, 0, 0, 0.83212],
    "79": [0, 0.69141, 0, 0, 0.82699],
    "80": [0.18906, 0.69141, 0, 0, 0.82753],
    "81": [0.03781, 0.69141, 0, 0, 0.82699],
    "82": [0, 0.69141, 0, 0, 0.82807],
    "83": [0, 0.69141, 0, 0, 0.82861],
    "84": [0, 0.69141, 0, 0, 0.66899],
    "85": [0, 0.69141, 0, 0, 0.64576],
    "86": [0, 0.69141, 0, 0, 0.83131],
    "87": [0, 0.69141, 0, 0, 1.04602],
    "88": [0, 0.69141, 0, 0, 0.71922],
    "89": [0.18906, 0.69141, 0, 0, 0.83293],
    "90": [0.12604, 0.69141, 0, 0, 0.60201],
    "91": [0.24982, 0.74947, 0, 0, 0.27764],
    "93": [0.24982, 0.74947, 0, 0, 0.27764],
    "94": [0, 0.69141, 0, 0, 0.49965],
    "97": [0, 0.47534, 0, 0, 0.50046],
    "98": [0, 0.69141, 0, 0, 0.51315],
    "99": [0, 0.47534, 0, 0, 0.38946],
    "100": [0, 0.62119, 0, 0, 0.49857],
    "101": [0, 0.47534, 0, 0, 0.40053],
    "102": [0.18906, 0.69141, 0, 0, 0.32626],
    "103": [0.18906, 0.47534, 0, 0, 0.5037],
    "104": [0.18906, 0.69141, 0, 0, 0.52126],
    "105": [0, 0.69141, 0, 0, 0.27899],
    "106": [0, 0.69141, 0, 0, 0.28088],
    "107": [0, 0.69141, 0, 0, 0.38946],
    "108": [0, 0.69141, 0, 0, 0.27953],
    "109": [0, 0.47534, 0, 0, 0.76676],
    "110": [0, 0.47534, 0, 0, 0.52666],
    "111": [0, 0.47534, 0, 0, 0.48885],
    "112": [0.18906, 0.52396, 0, 0, 0.50046],
    "113": [0.18906, 0.47534, 0, 0, 0.48912],
    "114": [0, 0.47534, 0, 0, 0.38919],
    "115": [0, 0.47534, 0, 0, 0.44266],
    "116": [0, 0.62119, 0, 0, 0.33301],
    "117": [0, 0.47534, 0, 0, 0.5172],
    "118": [0, 0.52396, 0, 0, 0.5118],
    "119": [0, 0.52396, 0, 0, 0.77351],
    "120": [0.18906, 0.47534, 0, 0, 0.38865],
    "121": [0.18906, 0.47534, 0, 0, 0.49884],
    "122": [0.18906, 0.47534, 0, 0, 0.39054],
    "160": [0, 0, 0, 0, 0.25],
    "8216": [0, 0.69141, 0, 0, 0.21471],
    "8217": [0, 0.69141, 0, 0, 0.21471],
    "58112": [0, 0.62119, 0, 0, 0.49749],
    "58113": [0, 0.62119, 0, 0, 0.4983],
    "58114": [0.18906, 0.69141, 0, 0, 0.33328],
    "58115": [0.18906, 0.69141, 0, 0, 0.32923],
    "58116": [0.18906, 0.47534, 0, 0, 0.50343],
    "58117": [0, 0.69141, 0, 0, 0.33301],
    "58118": [0, 0.62119, 0, 0, 0.33409],
    "58119": [0, 0.47534, 0, 0, 0.50073]
  },
  "Main-Bold": {
    "32": [0, 0, 0, 0, 0.25],
    "33": [0, 0.69444, 0, 0, 0.35],
    "34": [0, 0.69444, 0, 0, 0.60278],
    "35": [0.19444, 0.69444, 0, 0, 0.95833],
    "36": [0.05556, 0.75, 0, 0, 0.575],
    "37": [0.05556, 0.75, 0, 0, 0.95833],
    "38": [0, 0.69444, 0, 0, 0.89444],
    "39": [0, 0.69444, 0, 0, 0.31944],
    "40": [0.25, 0.75, 0, 0, 0.44722],
    "41": [0.25, 0.75, 0, 0, 0.44722],
    "42": [0, 0.75, 0, 0, 0.575],
    "43": [0.13333, 0.63333, 0, 0, 0.89444],
    "44": [0.19444, 0.15556, 0, 0, 0.31944],
    "45": [0, 0.44444, 0, 0, 0.38333],
    "46": [0, 0.15556, 0, 0, 0.31944],
    "47": [0.25, 0.75, 0, 0, 0.575],
    "48": [0, 0.64444, 0, 0, 0.575],
    "49": [0, 0.64444, 0, 0, 0.575],
    "50": [0, 0.64444, 0, 0, 0.575],
    "51": [0, 0.64444, 0, 0, 0.575],
    "52": [0, 0.64444, 0, 0, 0.575],
    "53": [0, 0.64444, 0, 0, 0.575],
    "54": [0, 0.64444, 0, 0, 0.575],
    "55": [0, 0.64444, 0, 0, 0.575],
    "56": [0, 0.64444, 0, 0, 0.575],
    "57": [0, 0.64444, 0, 0, 0.575],
    "58": [0, 0.44444, 0, 0, 0.31944],
    "59": [0.19444, 0.44444, 0, 0, 0.31944],
    "60": [0.08556, 0.58556, 0, 0, 0.89444],
    "61": [-0.10889, 0.39111, 0, 0, 0.89444],
    "62": [0.08556, 0.58556, 0, 0, 0.89444],
    "63": [0, 0.69444, 0, 0, 0.54305],
    "64": [0, 0.69444, 0, 0, 0.89444],
    "65": [0, 0.68611, 0, 0, 0.86944],
    "66": [0, 0.68611, 0, 0, 0.81805],
    "67": [0, 0.68611, 0, 0, 0.83055],
    "68": [0, 0.68611, 0, 0, 0.88194],
    "69": [0, 0.68611, 0, 0, 0.75555],
    "70": [0, 0.68611, 0, 0, 0.72361],
    "71": [0, 0.68611, 0, 0, 0.90416],
    "72": [0, 0.68611, 0, 0, 0.9],
    "73": [0, 0.68611, 0, 0, 0.43611],
    "74": [0, 0.68611, 0, 0, 0.59444],
    "75": [0, 0.68611, 0, 0, 0.90138],
    "76": [0, 0.68611, 0, 0, 0.69166],
    "77": [0, 0.68611, 0, 0, 1.09166],
    "78": [0, 0.68611, 0, 0, 0.9],
    "79": [0, 0.68611, 0, 0, 0.86388],
    "80": [0, 0.68611, 0, 0, 0.78611],
    "81": [0.19444, 0.68611, 0, 0, 0.86388],
    "82": [0, 0.68611, 0, 0, 0.8625],
    "83": [0, 0.68611, 0, 0, 0.63889],
    "84": [0, 0.68611, 0, 0, 0.8],
    "85": [0, 0.68611, 0, 0, 0.88472],
    "86": [0, 0.68611, 0.01597, 0, 0.86944],
    "87": [0, 0.68611, 0.01597, 0, 1.18888],
    "88": [0, 0.68611, 0, 0, 0.86944],
    "89": [0, 0.68611, 0.02875, 0, 0.86944],
    "90": [0, 0.68611, 0, 0, 0.70277],
    "91": [0.25, 0.75, 0, 0, 0.31944],
    "92": [0.25, 0.75, 0, 0, 0.575],
    "93": [0.25, 0.75, 0, 0, 0.31944],
    "94": [0, 0.69444, 0, 0, 0.575],
    "95": [0.31, 0.13444, 0.03194, 0, 0.575],
    "97": [0, 0.44444, 0, 0, 0.55902],
    "98": [0, 0.69444, 0, 0, 0.63889],
    "99": [0, 0.44444, 0, 0, 0.51111],
    "100": [0, 0.69444, 0, 0, 0.63889],
    "101": [0, 0.44444, 0, 0, 0.52708],
    "102": [0, 0.69444, 0.10903, 0, 0.35139],
    "103": [0.19444, 0.44444, 0.01597, 0, 0.575],
    "104": [0, 0.69444, 0, 0, 0.63889],
    "105": [0, 0.69444, 0, 0, 0.31944],
    "106": [0.19444, 0.69444, 0, 0, 0.35139],
    "107": [0, 0.69444, 0, 0, 0.60694],
    "108": [0, 0.69444, 0, 0, 0.31944],
    "109": [0, 0.44444, 0, 0, 0.95833],
    "110": [0, 0.44444, 0, 0, 0.63889],
    "111": [0, 0.44444, 0, 0, 0.575],
    "112": [0.19444, 0.44444, 0, 0, 0.63889],
    "113": [0.19444, 0.44444, 0, 0, 0.60694],
    "114": [0, 0.44444, 0, 0, 0.47361],
    "115": [0, 0.44444, 0, 0, 0.45361],
    "116": [0, 0.63492, 0, 0, 0.44722],
    "117": [0, 0.44444, 0, 0, 0.63889],
    "118": [0, 0.44444, 0.01597, 0, 0.60694],
    "119": [0, 0.44444, 0.01597, 0, 0.83055],
    "120": [0, 0.44444, 0, 0, 0.60694],
    "121": [0.19444, 0.44444, 0.01597, 0, 0.60694],
    "122": [0, 0.44444, 0, 0, 0.51111],
    "123": [0.25, 0.75, 0, 0, 0.575],
    "124": [0.25, 0.75, 0, 0, 0.31944],
    "125": [0.25, 0.75, 0, 0, 0.575],
    "126": [0.35, 0.34444, 0, 0, 0.575],
    "160": [0, 0, 0, 0, 0.25],
    "163": [0, 0.69444, 0, 0, 0.86853],
    "168": [0, 0.69444, 0, 0, 0.575],
    "172": [0, 0.44444, 0, 0, 0.76666],
    "176": [0, 0.69444, 0, 0, 0.86944],
    "177": [0.13333, 0.63333, 0, 0, 0.89444],
    "184": [0.17014, 0, 0, 0, 0.51111],
    "198": [0, 0.68611, 0, 0, 1.04166],
    "215": [0.13333, 0.63333, 0, 0, 0.89444],
    "216": [0.04861, 0.73472, 0, 0, 0.89444],
    "223": [0, 0.69444, 0, 0, 0.59722],
    "230": [0, 0.44444, 0, 0, 0.83055],
    "247": [0.13333, 0.63333, 0, 0, 0.89444],
    "248": [0.09722, 0.54167, 0, 0, 0.575],
    "305": [0, 0.44444, 0, 0, 0.31944],
    "338": [0, 0.68611, 0, 0, 1.16944],
    "339": [0, 0.44444, 0, 0, 0.89444],
    "567": [0.19444, 0.44444, 0, 0, 0.35139],
    "710": [0, 0.69444, 0, 0, 0.575],
    "711": [0, 0.63194, 0, 0, 0.575],
    "713": [0, 0.59611, 0, 0, 0.575],
    "714": [0, 0.69444, 0, 0, 0.575],
    "715": [0, 0.69444, 0, 0, 0.575],
    "728": [0, 0.69444, 0, 0, 0.575],
    "729": [0, 0.69444, 0, 0, 0.31944],
    "730": [0, 0.69444, 0, 0, 0.86944],
    "732": [0, 0.69444, 0, 0, 0.575],
    "733": [0, 0.69444, 0, 0, 0.575],
    "915": [0, 0.68611, 0, 0, 0.69166],
    "916": [0, 0.68611, 0, 0, 0.95833],
    "920": [0, 0.68611, 0, 0, 0.89444],
    "923": [0, 0.68611, 0, 0, 0.80555],
    "926": [0, 0.68611, 0, 0, 0.76666],
    "928": [0, 0.68611, 0, 0, 0.9],
    "931": [0, 0.68611, 0, 0, 0.83055],
    "933": [0, 0.68611, 0, 0, 0.89444],
    "934": [0, 0.68611, 0, 0, 0.83055],
    "936": [0, 0.68611, 0, 0, 0.89444],
    "937": [0, 0.68611, 0, 0, 0.83055],
    "8211": [0, 0.44444, 0.03194, 0, 0.575],
    "8212": [0, 0.44444, 0.03194, 0, 1.14999],
    "8216": [0, 0.69444, 0, 0, 0.31944],
    "8217": [0, 0.69444, 0, 0, 0.31944],
    "8220": [0, 0.69444, 0, 0, 0.60278],
    "8221": [0, 0.69444, 0, 0, 0.60278],
    "8224": [0.19444, 0.69444, 0, 0, 0.51111],
    "8225": [0.19444, 0.69444, 0, 0, 0.51111],
    "8242": [0, 0.55556, 0, 0, 0.34444],
    "8407": [0, 0.72444, 0.15486, 0, 0.575],
    "8463": [0, 0.69444, 0, 0, 0.66759],
    "8465": [0, 0.69444, 0, 0, 0.83055],
    "8467": [0, 0.69444, 0, 0, 0.47361],
    "8472": [0.19444, 0.44444, 0, 0, 0.74027],
    "8476": [0, 0.69444, 0, 0, 0.83055],
    "8501": [0, 0.69444, 0, 0, 0.70277],
    "8592": [-0.10889, 0.39111, 0, 0, 1.14999],
    "8593": [0.19444, 0.69444, 0, 0, 0.575],
    "8594": [-0.10889, 0.39111, 0, 0, 1.14999],
    "8595": [0.19444, 0.69444, 0, 0, 0.575],
    "8596": [-0.10889, 0.39111, 0, 0, 1.14999],
    "8597": [0.25, 0.75, 0, 0, 0.575],
    "8598": [0.19444, 0.69444, 0, 0, 1.14999],
    "8599": [0.19444, 0.69444, 0, 0, 1.14999],
    "8600": [0.19444, 0.69444, 0, 0, 1.14999],
    "8601": [0.19444, 0.69444, 0, 0, 1.14999],
    "8636": [-0.10889, 0.39111, 0, 0, 1.14999],
    "8637": [-0.10889, 0.39111, 0, 0, 1.14999],
    "8640": [-0.10889, 0.39111, 0, 0, 1.14999],
    "8641": [-0.10889, 0.39111, 0, 0, 1.14999],
    "8656": [-0.10889, 0.39111, 0, 0, 1.14999],
    "8657": [0.19444, 0.69444, 0, 0, 0.70277],
    "8658": [-0.10889, 0.39111, 0, 0, 1.14999],
    "8659": [0.19444, 0.69444, 0, 0, 0.70277],
    "8660": [-0.10889, 0.39111, 0, 0, 1.14999],
    "8661": [0.25, 0.75, 0, 0, 0.70277],
    "8704": [0, 0.69444, 0, 0, 0.63889],
    "8706": [0, 0.69444, 0.06389, 0, 0.62847],
    "8707": [0, 0.69444, 0, 0, 0.63889],
    "8709": [0.05556, 0.75, 0, 0, 0.575],
    "8711": [0, 0.68611, 0, 0, 0.95833],
    "8712": [0.08556, 0.58556, 0, 0, 0.76666],
    "8715": [0.08556, 0.58556, 0, 0, 0.76666],
    "8722": [0.13333, 0.63333, 0, 0, 0.89444],
    "8723": [0.13333, 0.63333, 0, 0, 0.89444],
    "8725": [0.25, 0.75, 0, 0, 0.575],
    "8726": [0.25, 0.75, 0, 0, 0.575],
    "8727": [-0.02778, 0.47222, 0, 0, 0.575],
    "8728": [-0.02639, 0.47361, 0, 0, 0.575],
    "8729": [-0.02639, 0.47361, 0, 0, 0.575],
    "8730": [0.18, 0.82, 0, 0, 0.95833],
    "8733": [0, 0.44444, 0, 0, 0.89444],
    "8734": [0, 0.44444, 0, 0, 1.14999],
    "8736": [0, 0.69224, 0, 0, 0.72222],
    "8739": [0.25, 0.75, 0, 0, 0.31944],
    "8741": [0.25, 0.75, 0, 0, 0.575],
    "8743": [0, 0.55556, 0, 0, 0.76666],
    "8744": [0, 0.55556, 0, 0, 0.76666],
    "8745": [0, 0.55556, 0, 0, 0.76666],
    "8746": [0, 0.55556, 0, 0, 0.76666],
    "8747": [0.19444, 0.69444, 0.12778, 0, 0.56875],
    "8764": [-0.10889, 0.39111, 0, 0, 0.89444],
    "8768": [0.19444, 0.69444, 0, 0, 0.31944],
    "8771": [222e-5, 0.50222, 0, 0, 0.89444],
    "8773": [0.027, 0.638, 0, 0, 0.894],
    "8776": [0.02444, 0.52444, 0, 0, 0.89444],
    "8781": [222e-5, 0.50222, 0, 0, 0.89444],
    "8801": [222e-5, 0.50222, 0, 0, 0.89444],
    "8804": [0.19667, 0.69667, 0, 0, 0.89444],
    "8805": [0.19667, 0.69667, 0, 0, 0.89444],
    "8810": [0.08556, 0.58556, 0, 0, 1.14999],
    "8811": [0.08556, 0.58556, 0, 0, 1.14999],
    "8826": [0.08556, 0.58556, 0, 0, 0.89444],
    "8827": [0.08556, 0.58556, 0, 0, 0.89444],
    "8834": [0.08556, 0.58556, 0, 0, 0.89444],
    "8835": [0.08556, 0.58556, 0, 0, 0.89444],
    "8838": [0.19667, 0.69667, 0, 0, 0.89444],
    "8839": [0.19667, 0.69667, 0, 0, 0.89444],
    "8846": [0, 0.55556, 0, 0, 0.76666],
    "8849": [0.19667, 0.69667, 0, 0, 0.89444],
    "8850": [0.19667, 0.69667, 0, 0, 0.89444],
    "8851": [0, 0.55556, 0, 0, 0.76666],
    "8852": [0, 0.55556, 0, 0, 0.76666],
    "8853": [0.13333, 0.63333, 0, 0, 0.89444],
    "8854": [0.13333, 0.63333, 0, 0, 0.89444],
    "8855": [0.13333, 0.63333, 0, 0, 0.89444],
    "8856": [0.13333, 0.63333, 0, 0, 0.89444],
    "8857": [0.13333, 0.63333, 0, 0, 0.89444],
    "8866": [0, 0.69444, 0, 0, 0.70277],
    "8867": [0, 0.69444, 0, 0, 0.70277],
    "8868": [0, 0.69444, 0, 0, 0.89444],
    "8869": [0, 0.69444, 0, 0, 0.89444],
    "8900": [-0.02639, 0.47361, 0, 0, 0.575],
    "8901": [-0.02639, 0.47361, 0, 0, 0.31944],
    "8902": [-0.02778, 0.47222, 0, 0, 0.575],
    "8968": [0.25, 0.75, 0, 0, 0.51111],
    "8969": [0.25, 0.75, 0, 0, 0.51111],
    "8970": [0.25, 0.75, 0, 0, 0.51111],
    "8971": [0.25, 0.75, 0, 0, 0.51111],
    "8994": [-0.13889, 0.36111, 0, 0, 1.14999],
    "8995": [-0.13889, 0.36111, 0, 0, 1.14999],
    "9651": [0.19444, 0.69444, 0, 0, 1.02222],
    "9657": [-0.02778, 0.47222, 0, 0, 0.575],
    "9661": [0.19444, 0.69444, 0, 0, 1.02222],
    "9667": [-0.02778, 0.47222, 0, 0, 0.575],
    "9711": [0.19444, 0.69444, 0, 0, 1.14999],
    "9824": [0.12963, 0.69444, 0, 0, 0.89444],
    "9825": [0.12963, 0.69444, 0, 0, 0.89444],
    "9826": [0.12963, 0.69444, 0, 0, 0.89444],
    "9827": [0.12963, 0.69444, 0, 0, 0.89444],
    "9837": [0, 0.75, 0, 0, 0.44722],
    "9838": [0.19444, 0.69444, 0, 0, 0.44722],
    "9839": [0.19444, 0.69444, 0, 0, 0.44722],
    "10216": [0.25, 0.75, 0, 0, 0.44722],
    "10217": [0.25, 0.75, 0, 0, 0.44722],
    "10815": [0, 0.68611, 0, 0, 0.9],
    "10927": [0.19667, 0.69667, 0, 0, 0.89444],
    "10928": [0.19667, 0.69667, 0, 0, 0.89444],
    "57376": [0.19444, 0.69444, 0, 0, 0]
  },
  "Main-BoldItalic": {
    "32": [0, 0, 0, 0, 0.25],
    "33": [0, 0.69444, 0.11417, 0, 0.38611],
    "34": [0, 0.69444, 0.07939, 0, 0.62055],
    "35": [0.19444, 0.69444, 0.06833, 0, 0.94444],
    "37": [0.05556, 0.75, 0.12861, 0, 0.94444],
    "38": [0, 0.69444, 0.08528, 0, 0.88555],
    "39": [0, 0.69444, 0.12945, 0, 0.35555],
    "40": [0.25, 0.75, 0.15806, 0, 0.47333],
    "41": [0.25, 0.75, 0.03306, 0, 0.47333],
    "42": [0, 0.75, 0.14333, 0, 0.59111],
    "43": [0.10333, 0.60333, 0.03306, 0, 0.88555],
    "44": [0.19444, 0.14722, 0, 0, 0.35555],
    "45": [0, 0.44444, 0.02611, 0, 0.41444],
    "46": [0, 0.14722, 0, 0, 0.35555],
    "47": [0.25, 0.75, 0.15806, 0, 0.59111],
    "48": [0, 0.64444, 0.13167, 0, 0.59111],
    "49": [0, 0.64444, 0.13167, 0, 0.59111],
    "50": [0, 0.64444, 0.13167, 0, 0.59111],
    "51": [0, 0.64444, 0.13167, 0, 0.59111],
    "52": [0.19444, 0.64444, 0.13167, 0, 0.59111],
    "53": [0, 0.64444, 0.13167, 0, 0.59111],
    "54": [0, 0.64444, 0.13167, 0, 0.59111],
    "55": [0.19444, 0.64444, 0.13167, 0, 0.59111],
    "56": [0, 0.64444, 0.13167, 0, 0.59111],
    "57": [0, 0.64444, 0.13167, 0, 0.59111],
    "58": [0, 0.44444, 0.06695, 0, 0.35555],
    "59": [0.19444, 0.44444, 0.06695, 0, 0.35555],
    "61": [-0.10889, 0.39111, 0.06833, 0, 0.88555],
    "63": [0, 0.69444, 0.11472, 0, 0.59111],
    "64": [0, 0.69444, 0.09208, 0, 0.88555],
    "65": [0, 0.68611, 0, 0, 0.86555],
    "66": [0, 0.68611, 0.0992, 0, 0.81666],
    "67": [0, 0.68611, 0.14208, 0, 0.82666],
    "68": [0, 0.68611, 0.09062, 0, 0.87555],
    "69": [0, 0.68611, 0.11431, 0, 0.75666],
    "70": [0, 0.68611, 0.12903, 0, 0.72722],
    "71": [0, 0.68611, 0.07347, 0, 0.89527],
    "72": [0, 0.68611, 0.17208, 0, 0.8961],
    "73": [0, 0.68611, 0.15681, 0, 0.47166],
    "74": [0, 0.68611, 0.145, 0, 0.61055],
    "75": [0, 0.68611, 0.14208, 0, 0.89499],
    "76": [0, 0.68611, 0, 0, 0.69777],
    "77": [0, 0.68611, 0.17208, 0, 1.07277],
    "78": [0, 0.68611, 0.17208, 0, 0.8961],
    "79": [0, 0.68611, 0.09062, 0, 0.85499],
    "80": [0, 0.68611, 0.0992, 0, 0.78721],
    "81": [0.19444, 0.68611, 0.09062, 0, 0.85499],
    "82": [0, 0.68611, 0.02559, 0, 0.85944],
    "83": [0, 0.68611, 0.11264, 0, 0.64999],
    "84": [0, 0.68611, 0.12903, 0, 0.7961],
    "85": [0, 0.68611, 0.17208, 0, 0.88083],
    "86": [0, 0.68611, 0.18625, 0, 0.86555],
    "87": [0, 0.68611, 0.18625, 0, 1.15999],
    "88": [0, 0.68611, 0.15681, 0, 0.86555],
    "89": [0, 0.68611, 0.19803, 0, 0.86555],
    "90": [0, 0.68611, 0.14208, 0, 0.70888],
    "91": [0.25, 0.75, 0.1875, 0, 0.35611],
    "93": [0.25, 0.75, 0.09972, 0, 0.35611],
    "94": [0, 0.69444, 0.06709, 0, 0.59111],
    "95": [0.31, 0.13444, 0.09811, 0, 0.59111],
    "97": [0, 0.44444, 0.09426, 0, 0.59111],
    "98": [0, 0.69444, 0.07861, 0, 0.53222],
    "99": [0, 0.44444, 0.05222, 0, 0.53222],
    "100": [0, 0.69444, 0.10861, 0, 0.59111],
    "101": [0, 0.44444, 0.085, 0, 0.53222],
    "102": [0.19444, 0.69444, 0.21778, 0, 0.4],
    "103": [0.19444, 0.44444, 0.105, 0, 0.53222],
    "104": [0, 0.69444, 0.09426, 0, 0.59111],
    "105": [0, 0.69326, 0.11387, 0, 0.35555],
    "106": [0.19444, 0.69326, 0.1672, 0, 0.35555],
    "107": [0, 0.69444, 0.11111, 0, 0.53222],
    "108": [0, 0.69444, 0.10861, 0, 0.29666],
    "109": [0, 0.44444, 0.09426, 0, 0.94444],
    "110": [0, 0.44444, 0.09426, 0, 0.64999],
    "111": [0, 0.44444, 0.07861, 0, 0.59111],
    "112": [0.19444, 0.44444, 0.07861, 0, 0.59111],
    "113": [0.19444, 0.44444, 0.105, 0, 0.53222],
    "114": [0, 0.44444, 0.11111, 0, 0.50167],
    "115": [0, 0.44444, 0.08167, 0, 0.48694],
    "116": [0, 0.63492, 0.09639, 0, 0.385],
    "117": [0, 0.44444, 0.09426, 0, 0.62055],
    "118": [0, 0.44444, 0.11111, 0, 0.53222],
    "119": [0, 0.44444, 0.11111, 0, 0.76777],
    "120": [0, 0.44444, 0.12583, 0, 0.56055],
    "121": [0.19444, 0.44444, 0.105, 0, 0.56166],
    "122": [0, 0.44444, 0.13889, 0, 0.49055],
    "126": [0.35, 0.34444, 0.11472, 0, 0.59111],
    "160": [0, 0, 0, 0, 0.25],
    "168": [0, 0.69444, 0.11473, 0, 0.59111],
    "176": [0, 0.69444, 0, 0, 0.94888],
    "184": [0.17014, 0, 0, 0, 0.53222],
    "198": [0, 0.68611, 0.11431, 0, 1.02277],
    "216": [0.04861, 0.73472, 0.09062, 0, 0.88555],
    "223": [0.19444, 0.69444, 0.09736, 0, 0.665],
    "230": [0, 0.44444, 0.085, 0, 0.82666],
    "248": [0.09722, 0.54167, 0.09458, 0, 0.59111],
    "305": [0, 0.44444, 0.09426, 0, 0.35555],
    "338": [0, 0.68611, 0.11431, 0, 1.14054],
    "339": [0, 0.44444, 0.085, 0, 0.82666],
    "567": [0.19444, 0.44444, 0.04611, 0, 0.385],
    "710": [0, 0.69444, 0.06709, 0, 0.59111],
    "711": [0, 0.63194, 0.08271, 0, 0.59111],
    "713": [0, 0.59444, 0.10444, 0, 0.59111],
    "714": [0, 0.69444, 0.08528, 0, 0.59111],
    "715": [0, 0.69444, 0, 0, 0.59111],
    "728": [0, 0.69444, 0.10333, 0, 0.59111],
    "729": [0, 0.69444, 0.12945, 0, 0.35555],
    "730": [0, 0.69444, 0, 0, 0.94888],
    "732": [0, 0.69444, 0.11472, 0, 0.59111],
    "733": [0, 0.69444, 0.11472, 0, 0.59111],
    "915": [0, 0.68611, 0.12903, 0, 0.69777],
    "916": [0, 0.68611, 0, 0, 0.94444],
    "920": [0, 0.68611, 0.09062, 0, 0.88555],
    "923": [0, 0.68611, 0, 0, 0.80666],
    "926": [0, 0.68611, 0.15092, 0, 0.76777],
    "928": [0, 0.68611, 0.17208, 0, 0.8961],
    "931": [0, 0.68611, 0.11431, 0, 0.82666],
    "933": [0, 0.68611, 0.10778, 0, 0.88555],
    "934": [0, 0.68611, 0.05632, 0, 0.82666],
    "936": [0, 0.68611, 0.10778, 0, 0.88555],
    "937": [0, 0.68611, 0.0992, 0, 0.82666],
    "8211": [0, 0.44444, 0.09811, 0, 0.59111],
    "8212": [0, 0.44444, 0.09811, 0, 1.18221],
    "8216": [0, 0.69444, 0.12945, 0, 0.35555],
    "8217": [0, 0.69444, 0.12945, 0, 0.35555],
    "8220": [0, 0.69444, 0.16772, 0, 0.62055],
    "8221": [0, 0.69444, 0.07939, 0, 0.62055]
  },
  "Main-Italic": {
    "32": [0, 0, 0, 0, 0.25],
    "33": [0, 0.69444, 0.12417, 0, 0.30667],
    "34": [0, 0.69444, 0.06961, 0, 0.51444],
    "35": [0.19444, 0.69444, 0.06616, 0, 0.81777],
    "37": [0.05556, 0.75, 0.13639, 0, 0.81777],
    "38": [0, 0.69444, 0.09694, 0, 0.76666],
    "39": [0, 0.69444, 0.12417, 0, 0.30667],
    "40": [0.25, 0.75, 0.16194, 0, 0.40889],
    "41": [0.25, 0.75, 0.03694, 0, 0.40889],
    "42": [0, 0.75, 0.14917, 0, 0.51111],
    "43": [0.05667, 0.56167, 0.03694, 0, 0.76666],
    "44": [0.19444, 0.10556, 0, 0, 0.30667],
    "45": [0, 0.43056, 0.02826, 0, 0.35778],
    "46": [0, 0.10556, 0, 0, 0.30667],
    "47": [0.25, 0.75, 0.16194, 0, 0.51111],
    "48": [0, 0.64444, 0.13556, 0, 0.51111],
    "49": [0, 0.64444, 0.13556, 0, 0.51111],
    "50": [0, 0.64444, 0.13556, 0, 0.51111],
    "51": [0, 0.64444, 0.13556, 0, 0.51111],
    "52": [0.19444, 0.64444, 0.13556, 0, 0.51111],
    "53": [0, 0.64444, 0.13556, 0, 0.51111],
    "54": [0, 0.64444, 0.13556, 0, 0.51111],
    "55": [0.19444, 0.64444, 0.13556, 0, 0.51111],
    "56": [0, 0.64444, 0.13556, 0, 0.51111],
    "57": [0, 0.64444, 0.13556, 0, 0.51111],
    "58": [0, 0.43056, 0.0582, 0, 0.30667],
    "59": [0.19444, 0.43056, 0.0582, 0, 0.30667],
    "61": [-0.13313, 0.36687, 0.06616, 0, 0.76666],
    "63": [0, 0.69444, 0.1225, 0, 0.51111],
    "64": [0, 0.69444, 0.09597, 0, 0.76666],
    "65": [0, 0.68333, 0, 0, 0.74333],
    "66": [0, 0.68333, 0.10257, 0, 0.70389],
    "67": [0, 0.68333, 0.14528, 0, 0.71555],
    "68": [0, 0.68333, 0.09403, 0, 0.755],
    "69": [0, 0.68333, 0.12028, 0, 0.67833],
    "70": [0, 0.68333, 0.13305, 0, 0.65277],
    "71": [0, 0.68333, 0.08722, 0, 0.77361],
    "72": [0, 0.68333, 0.16389, 0, 0.74333],
    "73": [0, 0.68333, 0.15806, 0, 0.38555],
    "74": [0, 0.68333, 0.14028, 0, 0.525],
    "75": [0, 0.68333, 0.14528, 0, 0.76888],
    "76": [0, 0.68333, 0, 0, 0.62722],
    "77": [0, 0.68333, 0.16389, 0, 0.89666],
    "78": [0, 0.68333, 0.16389, 0, 0.74333],
    "79": [0, 0.68333, 0.09403, 0, 0.76666],
    "80": [0, 0.68333, 0.10257, 0, 0.67833],
    "81": [0.19444, 0.68333, 0.09403, 0, 0.76666],
    "82": [0, 0.68333, 0.03868, 0, 0.72944],
    "83": [0, 0.68333, 0.11972, 0, 0.56222],
    "84": [0, 0.68333, 0.13305, 0, 0.71555],
    "85": [0, 0.68333, 0.16389, 0, 0.74333],
    "86": [0, 0.68333, 0.18361, 0, 0.74333],
    "87": [0, 0.68333, 0.18361, 0, 0.99888],
    "88": [0, 0.68333, 0.15806, 0, 0.74333],
    "89": [0, 0.68333, 0.19383, 0, 0.74333],
    "90": [0, 0.68333, 0.14528, 0, 0.61333],
    "91": [0.25, 0.75, 0.1875, 0, 0.30667],
    "93": [0.25, 0.75, 0.10528, 0, 0.30667],
    "94": [0, 0.69444, 0.06646, 0, 0.51111],
    "95": [0.31, 0.12056, 0.09208, 0, 0.51111],
    "97": [0, 0.43056, 0.07671, 0, 0.51111],
    "98": [0, 0.69444, 0.06312, 0, 0.46],
    "99": [0, 0.43056, 0.05653, 0, 0.46],
    "100": [0, 0.69444, 0.10333, 0, 0.51111],
    "101": [0, 0.43056, 0.07514, 0, 0.46],
    "102": [0.19444, 0.69444, 0.21194, 0, 0.30667],
    "103": [0.19444, 0.43056, 0.08847, 0, 0.46],
    "104": [0, 0.69444, 0.07671, 0, 0.51111],
    "105": [0, 0.65536, 0.1019, 0, 0.30667],
    "106": [0.19444, 0.65536, 0.14467, 0, 0.30667],
    "107": [0, 0.69444, 0.10764, 0, 0.46],
    "108": [0, 0.69444, 0.10333, 0, 0.25555],
    "109": [0, 0.43056, 0.07671, 0, 0.81777],
    "110": [0, 0.43056, 0.07671, 0, 0.56222],
    "111": [0, 0.43056, 0.06312, 0, 0.51111],
    "112": [0.19444, 0.43056, 0.06312, 0, 0.51111],
    "113": [0.19444, 0.43056, 0.08847, 0, 0.46],
    "114": [0, 0.43056, 0.10764, 0, 0.42166],
    "115": [0, 0.43056, 0.08208, 0, 0.40889],
    "116": [0, 0.61508, 0.09486, 0, 0.33222],
    "117": [0, 0.43056, 0.07671, 0, 0.53666],
    "118": [0, 0.43056, 0.10764, 0, 0.46],
    "119": [0, 0.43056, 0.10764, 0, 0.66444],
    "120": [0, 0.43056, 0.12042, 0, 0.46389],
    "121": [0.19444, 0.43056, 0.08847, 0, 0.48555],
    "122": [0, 0.43056, 0.12292, 0, 0.40889],
    "126": [0.35, 0.31786, 0.11585, 0, 0.51111],
    "160": [0, 0, 0, 0, 0.25],
    "168": [0, 0.66786, 0.10474, 0, 0.51111],
    "176": [0, 0.69444, 0, 0, 0.83129],
    "184": [0.17014, 0, 0, 0, 0.46],
    "198": [0, 0.68333, 0.12028, 0, 0.88277],
    "216": [0.04861, 0.73194, 0.09403, 0, 0.76666],
    "223": [0.19444, 0.69444, 0.10514, 0, 0.53666],
    "230": [0, 0.43056, 0.07514, 0, 0.71555],
    "248": [0.09722, 0.52778, 0.09194, 0, 0.51111],
    "338": [0, 0.68333, 0.12028, 0, 0.98499],
    "339": [0, 0.43056, 0.07514, 0, 0.71555],
    "710": [0, 0.69444, 0.06646, 0, 0.51111],
    "711": [0, 0.62847, 0.08295, 0, 0.51111],
    "713": [0, 0.56167, 0.10333, 0, 0.51111],
    "714": [0, 0.69444, 0.09694, 0, 0.51111],
    "715": [0, 0.69444, 0, 0, 0.51111],
    "728": [0, 0.69444, 0.10806, 0, 0.51111],
    "729": [0, 0.66786, 0.11752, 0, 0.30667],
    "730": [0, 0.69444, 0, 0, 0.83129],
    "732": [0, 0.66786, 0.11585, 0, 0.51111],
    "733": [0, 0.69444, 0.1225, 0, 0.51111],
    "915": [0, 0.68333, 0.13305, 0, 0.62722],
    "916": [0, 0.68333, 0, 0, 0.81777],
    "920": [0, 0.68333, 0.09403, 0, 0.76666],
    "923": [0, 0.68333, 0, 0, 0.69222],
    "926": [0, 0.68333, 0.15294, 0, 0.66444],
    "928": [0, 0.68333, 0.16389, 0, 0.74333],
    "931": [0, 0.68333, 0.12028, 0, 0.71555],
    "933": [0, 0.68333, 0.11111, 0, 0.76666],
    "934": [0, 0.68333, 0.05986, 0, 0.71555],
    "936": [0, 0.68333, 0.11111, 0, 0.76666],
    "937": [0, 0.68333, 0.10257, 0, 0.71555],
    "8211": [0, 0.43056, 0.09208, 0, 0.51111],
    "8212": [0, 0.43056, 0.09208, 0, 1.02222],
    "8216": [0, 0.69444, 0.12417, 0, 0.30667],
    "8217": [0, 0.69444, 0.12417, 0, 0.30667],
    "8220": [0, 0.69444, 0.1685, 0, 0.51444],
    "8221": [0, 0.69444, 0.06961, 0, 0.51444],
    "8463": [0, 0.68889, 0, 0, 0.54028]
  },
  "Main-Regular": {
    "32": [0, 0, 0, 0, 0.25],
    "33": [0, 0.69444, 0, 0, 0.27778],
    "34": [0, 0.69444, 0, 0, 0.5],
    "35": [0.19444, 0.69444, 0, 0, 0.83334],
    "36": [0.05556, 0.75, 0, 0, 0.5],
    "37": [0.05556, 0.75, 0, 0, 0.83334],
    "38": [0, 0.69444, 0, 0, 0.77778],
    "39": [0, 0.69444, 0, 0, 0.27778],
    "40": [0.25, 0.75, 0, 0, 0.38889],
    "41": [0.25, 0.75, 0, 0, 0.38889],
    "42": [0, 0.75, 0, 0, 0.5],
    "43": [0.08333, 0.58333, 0, 0, 0.77778],
    "44": [0.19444, 0.10556, 0, 0, 0.27778],
    "45": [0, 0.43056, 0, 0, 0.33333],
    "46": [0, 0.10556, 0, 0, 0.27778],
    "47": [0.25, 0.75, 0, 0, 0.5],
    "48": [0, 0.64444, 0, 0, 0.5],
    "49": [0, 0.64444, 0, 0, 0.5],
    "50": [0, 0.64444, 0, 0, 0.5],
    "51": [0, 0.64444, 0, 0, 0.5],
    "52": [0, 0.64444, 0, 0, 0.5],
    "53": [0, 0.64444, 0, 0, 0.5],
    "54": [0, 0.64444, 0, 0, 0.5],
    "55": [0, 0.64444, 0, 0, 0.5],
    "56": [0, 0.64444, 0, 0, 0.5],
    "57": [0, 0.64444, 0, 0, 0.5],
    "58": [0, 0.43056, 0, 0, 0.27778],
    "59": [0.19444, 0.43056, 0, 0, 0.27778],
    "60": [0.0391, 0.5391, 0, 0, 0.77778],
    "61": [-0.13313, 0.36687, 0, 0, 0.77778],
    "62": [0.0391, 0.5391, 0, 0, 0.77778],
    "63": [0, 0.69444, 0, 0, 0.47222],
    "64": [0, 0.69444, 0, 0, 0.77778],
    "65": [0, 0.68333, 0, 0, 0.75],
    "66": [0, 0.68333, 0, 0, 0.70834],
    "67": [0, 0.68333, 0, 0, 0.72222],
    "68": [0, 0.68333, 0, 0, 0.76389],
    "69": [0, 0.68333, 0, 0, 0.68056],
    "70": [0, 0.68333, 0, 0, 0.65278],
    "71": [0, 0.68333, 0, 0, 0.78472],
    "72": [0, 0.68333, 0, 0, 0.75],
    "73": [0, 0.68333, 0, 0, 0.36111],
    "74": [0, 0.68333, 0, 0, 0.51389],
    "75": [0, 0.68333, 0, 0, 0.77778],
    "76": [0, 0.68333, 0, 0, 0.625],
    "77": [0, 0.68333, 0, 0, 0.91667],
    "78": [0, 0.68333, 0, 0, 0.75],
    "79": [0, 0.68333, 0, 0, 0.77778],
    "80": [0, 0.68333, 0, 0, 0.68056],
    "81": [0.19444, 0.68333, 0, 0, 0.77778],
    "82": [0, 0.68333, 0, 0, 0.73611],
    "83": [0, 0.68333, 0, 0, 0.55556],
    "84": [0, 0.68333, 0, 0, 0.72222],
    "85": [0, 0.68333, 0, 0, 0.75],
    "86": [0, 0.68333, 0.01389, 0, 0.75],
    "87": [0, 0.68333, 0.01389, 0, 1.02778],
    "88": [0, 0.68333, 0, 0, 0.75],
    "89": [0, 0.68333, 0.025, 0, 0.75],
    "90": [0, 0.68333, 0, 0, 0.61111],
    "91": [0.25, 0.75, 0, 0, 0.27778],
    "92": [0.25, 0.75, 0, 0, 0.5],
    "93": [0.25, 0.75, 0, 0, 0.27778],
    "94": [0, 0.69444, 0, 0, 0.5],
    "95": [0.31, 0.12056, 0.02778, 0, 0.5],
    "97": [0, 0.43056, 0, 0, 0.5],
    "98": [0, 0.69444, 0, 0, 0.55556],
    "99": [0, 0.43056, 0, 0, 0.44445],
    "100": [0, 0.69444, 0, 0, 0.55556],
    "101": [0, 0.43056, 0, 0, 0.44445],
    "102": [0, 0.69444, 0.07778, 0, 0.30556],
    "103": [0.19444, 0.43056, 0.01389, 0, 0.5],
    "104": [0, 0.69444, 0, 0, 0.55556],
    "105": [0, 0.66786, 0, 0, 0.27778],
    "106": [0.19444, 0.66786, 0, 0, 0.30556],
    "107": [0, 0.69444, 0, 0, 0.52778],
    "108": [0, 0.69444, 0, 0, 0.27778],
    "109": [0, 0.43056, 0, 0, 0.83334],
    "110": [0, 0.43056, 0, 0, 0.55556],
    "111": [0, 0.43056, 0, 0, 0.5],
    "112": [0.19444, 0.43056, 0, 0, 0.55556],
    "113": [0.19444, 0.43056, 0, 0, 0.52778],
    "114": [0, 0.43056, 0, 0, 0.39167],
    "115": [0, 0.43056, 0, 0, 0.39445],
    "116": [0, 0.61508, 0, 0, 0.38889],
    "117": [0, 0.43056, 0, 0, 0.55556],
    "118": [0, 0.43056, 0.01389, 0, 0.52778],
    "119": [0, 0.43056, 0.01389, 0, 0.72222],
    "120": [0, 0.43056, 0, 0, 0.52778],
    "121": [0.19444, 0.43056, 0.01389, 0, 0.52778],
    "122": [0, 0.43056, 0, 0, 0.44445],
    "123": [0.25, 0.75, 0, 0, 0.5],
    "124": [0.25, 0.75, 0, 0, 0.27778],
    "125": [0.25, 0.75, 0, 0, 0.5],
    "126": [0.35, 0.31786, 0, 0, 0.5],
    "160": [0, 0, 0, 0, 0.25],
    "163": [0, 0.69444, 0, 0, 0.76909],
    "167": [0.19444, 0.69444, 0, 0, 0.44445],
    "168": [0, 0.66786, 0, 0, 0.5],
    "172": [0, 0.43056, 0, 0, 0.66667],
    "176": [0, 0.69444, 0, 0, 0.75],
    "177": [0.08333, 0.58333, 0, 0, 0.77778],
    "182": [0.19444, 0.69444, 0, 0, 0.61111],
    "184": [0.17014, 0, 0, 0, 0.44445],
    "198": [0, 0.68333, 0, 0, 0.90278],
    "215": [0.08333, 0.58333, 0, 0, 0.77778],
    "216": [0.04861, 0.73194, 0, 0, 0.77778],
    "223": [0, 0.69444, 0, 0, 0.5],
    "230": [0, 0.43056, 0, 0, 0.72222],
    "247": [0.08333, 0.58333, 0, 0, 0.77778],
    "248": [0.09722, 0.52778, 0, 0, 0.5],
    "305": [0, 0.43056, 0, 0, 0.27778],
    "338": [0, 0.68333, 0, 0, 1.01389],
    "339": [0, 0.43056, 0, 0, 0.77778],
    "567": [0.19444, 0.43056, 0, 0, 0.30556],
    "710": [0, 0.69444, 0, 0, 0.5],
    "711": [0, 0.62847, 0, 0, 0.5],
    "713": [0, 0.56778, 0, 0, 0.5],
    "714": [0, 0.69444, 0, 0, 0.5],
    "715": [0, 0.69444, 0, 0, 0.5],
    "728": [0, 0.69444, 0, 0, 0.5],
    "729": [0, 0.66786, 0, 0, 0.27778],
    "730": [0, 0.69444, 0, 0, 0.75],
    "732": [0, 0.66786, 0, 0, 0.5],
    "733": [0, 0.69444, 0, 0, 0.5],
    "915": [0, 0.68333, 0, 0, 0.625],
    "916": [0, 0.68333, 0, 0, 0.83334],
    "920": [0, 0.68333, 0, 0, 0.77778],
    "923": [0, 0.68333, 0, 0, 0.69445],
    "926": [0, 0.68333, 0, 0, 0.66667],
    "928": [0, 0.68333, 0, 0, 0.75],
    "931": [0, 0.68333, 0, 0, 0.72222],
    "933": [0, 0.68333, 0, 0, 0.77778],
    "934": [0, 0.68333, 0, 0, 0.72222],
    "936": [0, 0.68333, 0, 0, 0.77778],
    "937": [0, 0.68333, 0, 0, 0.72222],
    "8211": [0, 0.43056, 0.02778, 0, 0.5],
    "8212": [0, 0.43056, 0.02778, 0, 1],
    "8216": [0, 0.69444, 0, 0, 0.27778],
    "8217": [0, 0.69444, 0, 0, 0.27778],
    "8220": [0, 0.69444, 0, 0, 0.5],
    "8221": [0, 0.69444, 0, 0, 0.5],
    "8224": [0.19444, 0.69444, 0, 0, 0.44445],
    "8225": [0.19444, 0.69444, 0, 0, 0.44445],
    "8230": [0, 0.123, 0, 0, 1.172],
    "8242": [0, 0.55556, 0, 0, 0.275],
    "8407": [0, 0.71444, 0.15382, 0, 0.5],
    "8463": [0, 0.68889, 0, 0, 0.54028],
    "8465": [0, 0.69444, 0, 0, 0.72222],
    "8467": [0, 0.69444, 0, 0.11111, 0.41667],
    "8472": [0.19444, 0.43056, 0, 0.11111, 0.63646],
    "8476": [0, 0.69444, 0, 0, 0.72222],
    "8501": [0, 0.69444, 0, 0, 0.61111],
    "8592": [-0.13313, 0.36687, 0, 0, 1],
    "8593": [0.19444, 0.69444, 0, 0, 0.5],
    "8594": [-0.13313, 0.36687, 0, 0, 1],
    "8595": [0.19444, 0.69444, 0, 0, 0.5],
    "8596": [-0.13313, 0.36687, 0, 0, 1],
    "8597": [0.25, 0.75, 0, 0, 0.5],
    "8598": [0.19444, 0.69444, 0, 0, 1],
    "8599": [0.19444, 0.69444, 0, 0, 1],
    "8600": [0.19444, 0.69444, 0, 0, 1],
    "8601": [0.19444, 0.69444, 0, 0, 1],
    "8614": [0.011, 0.511, 0, 0, 1],
    "8617": [0.011, 0.511, 0, 0, 1.126],
    "8618": [0.011, 0.511, 0, 0, 1.126],
    "8636": [-0.13313, 0.36687, 0, 0, 1],
    "8637": [-0.13313, 0.36687, 0, 0, 1],
    "8640": [-0.13313, 0.36687, 0, 0, 1],
    "8641": [-0.13313, 0.36687, 0, 0, 1],
    "8652": [0.011, 0.671, 0, 0, 1],
    "8656": [-0.13313, 0.36687, 0, 0, 1],
    "8657": [0.19444, 0.69444, 0, 0, 0.61111],
    "8658": [-0.13313, 0.36687, 0, 0, 1],
    "8659": [0.19444, 0.69444, 0, 0, 0.61111],
    "8660": [-0.13313, 0.36687, 0, 0, 1],
    "8661": [0.25, 0.75, 0, 0, 0.61111],
    "8704": [0, 0.69444, 0, 0, 0.55556],
    "8706": [0, 0.69444, 0.05556, 0.08334, 0.5309],
    "8707": [0, 0.69444, 0, 0, 0.55556],
    "8709": [0.05556, 0.75, 0, 0, 0.5],
    "8711": [0, 0.68333, 0, 0, 0.83334],
    "8712": [0.0391, 0.5391, 0, 0, 0.66667],
    "8715": [0.0391, 0.5391, 0, 0, 0.66667],
    "8722": [0.08333, 0.58333, 0, 0, 0.77778],
    "8723": [0.08333, 0.58333, 0, 0, 0.77778],
    "8725": [0.25, 0.75, 0, 0, 0.5],
    "8726": [0.25, 0.75, 0, 0, 0.5],
    "8727": [-0.03472, 0.46528, 0, 0, 0.5],
    "8728": [-0.05555, 0.44445, 0, 0, 0.5],
    "8729": [-0.05555, 0.44445, 0, 0, 0.5],
    "8730": [0.2, 0.8, 0, 0, 0.83334],
    "8733": [0, 0.43056, 0, 0, 0.77778],
    "8734": [0, 0.43056, 0, 0, 1],
    "8736": [0, 0.69224, 0, 0, 0.72222],
    "8739": [0.25, 0.75, 0, 0, 0.27778],
    "8741": [0.25, 0.75, 0, 0, 0.5],
    "8743": [0, 0.55556, 0, 0, 0.66667],
    "8744": [0, 0.55556, 0, 0, 0.66667],
    "8745": [0, 0.55556, 0, 0, 0.66667],
    "8746": [0, 0.55556, 0, 0, 0.66667],
    "8747": [0.19444, 0.69444, 0.11111, 0, 0.41667],
    "8764": [-0.13313, 0.36687, 0, 0, 0.77778],
    "8768": [0.19444, 0.69444, 0, 0, 0.27778],
    "8771": [-0.03625, 0.46375, 0, 0, 0.77778],
    "8773": [-0.022, 0.589, 0, 0, 0.778],
    "8776": [-0.01688, 0.48312, 0, 0, 0.77778],
    "8781": [-0.03625, 0.46375, 0, 0, 0.77778],
    "8784": [-0.133, 0.673, 0, 0, 0.778],
    "8801": [-0.03625, 0.46375, 0, 0, 0.77778],
    "8804": [0.13597, 0.63597, 0, 0, 0.77778],
    "8805": [0.13597, 0.63597, 0, 0, 0.77778],
    "8810": [0.0391, 0.5391, 0, 0, 1],
    "8811": [0.0391, 0.5391, 0, 0, 1],
    "8826": [0.0391, 0.5391, 0, 0, 0.77778],
    "8827": [0.0391, 0.5391, 0, 0, 0.77778],
    "8834": [0.0391, 0.5391, 0, 0, 0.77778],
    "8835": [0.0391, 0.5391, 0, 0, 0.77778],
    "8838": [0.13597, 0.63597, 0, 0, 0.77778],
    "8839": [0.13597, 0.63597, 0, 0, 0.77778],
    "8846": [0, 0.55556, 0, 0, 0.66667],
    "8849": [0.13597, 0.63597, 0, 0, 0.77778],
    "8850": [0.13597, 0.63597, 0, 0, 0.77778],
    "8851": [0, 0.55556, 0, 0, 0.66667],
    "8852": [0, 0.55556, 0, 0, 0.66667],
    "8853": [0.08333, 0.58333, 0, 0, 0.77778],
    "8854": [0.08333, 0.58333, 0, 0, 0.77778],
    "8855": [0.08333, 0.58333, 0, 0, 0.77778],
    "8856": [0.08333, 0.58333, 0, 0, 0.77778],
    "8857": [0.08333, 0.58333, 0, 0, 0.77778],
    "8866": [0, 0.69444, 0, 0, 0.61111],
    "8867": [0, 0.69444, 0, 0, 0.61111],
    "8868": [0, 0.69444, 0, 0, 0.77778],
    "8869": [0, 0.69444, 0, 0, 0.77778],
    "8872": [0.249, 0.75, 0, 0, 0.867],
    "8900": [-0.05555, 0.44445, 0, 0, 0.5],
    "8901": [-0.05555, 0.44445, 0, 0, 0.27778],
    "8902": [-0.03472, 0.46528, 0, 0, 0.5],
    "8904": [5e-3, 0.505, 0, 0, 0.9],
    "8942": [0.03, 0.903, 0, 0, 0.278],
    "8943": [-0.19, 0.313, 0, 0, 1.172],
    "8945": [-0.1, 0.823, 0, 0, 1.282],
    "8968": [0.25, 0.75, 0, 0, 0.44445],
    "8969": [0.25, 0.75, 0, 0, 0.44445],
    "8970": [0.25, 0.75, 0, 0, 0.44445],
    "8971": [0.25, 0.75, 0, 0, 0.44445],
    "8994": [-0.14236, 0.35764, 0, 0, 1],
    "8995": [-0.14236, 0.35764, 0, 0, 1],
    "9136": [0.244, 0.744, 0, 0, 0.412],
    "9137": [0.244, 0.745, 0, 0, 0.412],
    "9651": [0.19444, 0.69444, 0, 0, 0.88889],
    "9657": [-0.03472, 0.46528, 0, 0, 0.5],
    "9661": [0.19444, 0.69444, 0, 0, 0.88889],
    "9667": [-0.03472, 0.46528, 0, 0, 0.5],
    "9711": [0.19444, 0.69444, 0, 0, 1],
    "9824": [0.12963, 0.69444, 0, 0, 0.77778],
    "9825": [0.12963, 0.69444, 0, 0, 0.77778],
    "9826": [0.12963, 0.69444, 0, 0, 0.77778],
    "9827": [0.12963, 0.69444, 0, 0, 0.77778],
    "9837": [0, 0.75, 0, 0, 0.38889],
    "9838": [0.19444, 0.69444, 0, 0, 0.38889],
    "9839": [0.19444, 0.69444, 0, 0, 0.38889],
    "10216": [0.25, 0.75, 0, 0, 0.38889],
    "10217": [0.25, 0.75, 0, 0, 0.38889],
    "10222": [0.244, 0.744, 0, 0, 0.412],
    "10223": [0.244, 0.745, 0, 0, 0.412],
    "10229": [0.011, 0.511, 0, 0, 1.609],
    "10230": [0.011, 0.511, 0, 0, 1.638],
    "10231": [0.011, 0.511, 0, 0, 1.859],
    "10232": [0.024, 0.525, 0, 0, 1.609],
    "10233": [0.024, 0.525, 0, 0, 1.638],
    "10234": [0.024, 0.525, 0, 0, 1.858],
    "10236": [0.011, 0.511, 0, 0, 1.638],
    "10815": [0, 0.68333, 0, 0, 0.75],
    "10927": [0.13597, 0.63597, 0, 0, 0.77778],
    "10928": [0.13597, 0.63597, 0, 0, 0.77778],
    "57376": [0.19444, 0.69444, 0, 0, 0]
  },
  "Math-BoldItalic": {
    "32": [0, 0, 0, 0, 0.25],
    "48": [0, 0.44444, 0, 0, 0.575],
    "49": [0, 0.44444, 0, 0, 0.575],
    "50": [0, 0.44444, 0, 0, 0.575],
    "51": [0.19444, 0.44444, 0, 0, 0.575],
    "52": [0.19444, 0.44444, 0, 0, 0.575],
    "53": [0.19444, 0.44444, 0, 0, 0.575],
    "54": [0, 0.64444, 0, 0, 0.575],
    "55": [0.19444, 0.44444, 0, 0, 0.575],
    "56": [0, 0.64444, 0, 0, 0.575],
    "57": [0.19444, 0.44444, 0, 0, 0.575],
    "65": [0, 0.68611, 0, 0, 0.86944],
    "66": [0, 0.68611, 0.04835, 0, 0.8664],
    "67": [0, 0.68611, 0.06979, 0, 0.81694],
    "68": [0, 0.68611, 0.03194, 0, 0.93812],
    "69": [0, 0.68611, 0.05451, 0, 0.81007],
    "70": [0, 0.68611, 0.15972, 0, 0.68889],
    "71": [0, 0.68611, 0, 0, 0.88673],
    "72": [0, 0.68611, 0.08229, 0, 0.98229],
    "73": [0, 0.68611, 0.07778, 0, 0.51111],
    "74": [0, 0.68611, 0.10069, 0, 0.63125],
    "75": [0, 0.68611, 0.06979, 0, 0.97118],
    "76": [0, 0.68611, 0, 0, 0.75555],
    "77": [0, 0.68611, 0.11424, 0, 1.14201],
    "78": [0, 0.68611, 0.11424, 0, 0.95034],
    "79": [0, 0.68611, 0.03194, 0, 0.83666],
    "80": [0, 0.68611, 0.15972, 0, 0.72309],
    "81": [0.19444, 0.68611, 0, 0, 0.86861],
    "82": [0, 0.68611, 421e-5, 0, 0.87235],
    "83": [0, 0.68611, 0.05382, 0, 0.69271],
    "84": [0, 0.68611, 0.15972, 0, 0.63663],
    "85": [0, 0.68611, 0.11424, 0, 0.80027],
    "86": [0, 0.68611, 0.25555, 0, 0.67778],
    "87": [0, 0.68611, 0.15972, 0, 1.09305],
    "88": [0, 0.68611, 0.07778, 0, 0.94722],
    "89": [0, 0.68611, 0.25555, 0, 0.67458],
    "90": [0, 0.68611, 0.06979, 0, 0.77257],
    "97": [0, 0.44444, 0, 0, 0.63287],
    "98": [0, 0.69444, 0, 0, 0.52083],
    "99": [0, 0.44444, 0, 0, 0.51342],
    "100": [0, 0.69444, 0, 0, 0.60972],
    "101": [0, 0.44444, 0, 0, 0.55361],
    "102": [0.19444, 0.69444, 0.11042, 0, 0.56806],
    "103": [0.19444, 0.44444, 0.03704, 0, 0.5449],
    "104": [0, 0.69444, 0, 0, 0.66759],
    "105": [0, 0.69326, 0, 0, 0.4048],
    "106": [0.19444, 0.69326, 0.0622, 0, 0.47083],
    "107": [0, 0.69444, 0.01852, 0, 0.6037],
    "108": [0, 0.69444, 88e-4, 0, 0.34815],
    "109": [0, 0.44444, 0, 0, 1.0324],
    "110": [0, 0.44444, 0, 0, 0.71296],
    "111": [0, 0.44444, 0, 0, 0.58472],
    "112": [0.19444, 0.44444, 0, 0, 0.60092],
    "113": [0.19444, 0.44444, 0.03704, 0, 0.54213],
    "114": [0, 0.44444, 0.03194, 0, 0.5287],
    "115": [0, 0.44444, 0, 0, 0.53125],
    "116": [0, 0.63492, 0, 0, 0.41528],
    "117": [0, 0.44444, 0, 0, 0.68102],
    "118": [0, 0.44444, 0.03704, 0, 0.56666],
    "119": [0, 0.44444, 0.02778, 0, 0.83148],
    "120": [0, 0.44444, 0, 0, 0.65903],
    "121": [0.19444, 0.44444, 0.03704, 0, 0.59028],
    "122": [0, 0.44444, 0.04213, 0, 0.55509],
    "160": [0, 0, 0, 0, 0.25],
    "915": [0, 0.68611, 0.15972, 0, 0.65694],
    "916": [0, 0.68611, 0, 0, 0.95833],
    "920": [0, 0.68611, 0.03194, 0, 0.86722],
    "923": [0, 0.68611, 0, 0, 0.80555],
    "926": [0, 0.68611, 0.07458, 0, 0.84125],
    "928": [0, 0.68611, 0.08229, 0, 0.98229],
    "931": [0, 0.68611, 0.05451, 0, 0.88507],
    "933": [0, 0.68611, 0.15972, 0, 0.67083],
    "934": [0, 0.68611, 0, 0, 0.76666],
    "936": [0, 0.68611, 0.11653, 0, 0.71402],
    "937": [0, 0.68611, 0.04835, 0, 0.8789],
    "945": [0, 0.44444, 0, 0, 0.76064],
    "946": [0.19444, 0.69444, 0.03403, 0, 0.65972],
    "947": [0.19444, 0.44444, 0.06389, 0, 0.59003],
    "948": [0, 0.69444, 0.03819, 0, 0.52222],
    "949": [0, 0.44444, 0, 0, 0.52882],
    "950": [0.19444, 0.69444, 0.06215, 0, 0.50833],
    "951": [0.19444, 0.44444, 0.03704, 0, 0.6],
    "952": [0, 0.69444, 0.03194, 0, 0.5618],
    "953": [0, 0.44444, 0, 0, 0.41204],
    "954": [0, 0.44444, 0, 0, 0.66759],
    "955": [0, 0.69444, 0, 0, 0.67083],
    "956": [0.19444, 0.44444, 0, 0, 0.70787],
    "957": [0, 0.44444, 0.06898, 0, 0.57685],
    "958": [0.19444, 0.69444, 0.03021, 0, 0.50833],
    "959": [0, 0.44444, 0, 0, 0.58472],
    "960": [0, 0.44444, 0.03704, 0, 0.68241],
    "961": [0.19444, 0.44444, 0, 0, 0.6118],
    "962": [0.09722, 0.44444, 0.07917, 0, 0.42361],
    "963": [0, 0.44444, 0.03704, 0, 0.68588],
    "964": [0, 0.44444, 0.13472, 0, 0.52083],
    "965": [0, 0.44444, 0.03704, 0, 0.63055],
    "966": [0.19444, 0.44444, 0, 0, 0.74722],
    "967": [0.19444, 0.44444, 0, 0, 0.71805],
    "968": [0.19444, 0.69444, 0.03704, 0, 0.75833],
    "969": [0, 0.44444, 0.03704, 0, 0.71782],
    "977": [0, 0.69444, 0, 0, 0.69155],
    "981": [0.19444, 0.69444, 0, 0, 0.7125],
    "982": [0, 0.44444, 0.03194, 0, 0.975],
    "1009": [0.19444, 0.44444, 0, 0, 0.6118],
    "1013": [0, 0.44444, 0, 0, 0.48333],
    "57649": [0, 0.44444, 0, 0, 0.39352],
    "57911": [0.19444, 0.44444, 0, 0, 0.43889]
  },
  "Math-Italic": {
    "32": [0, 0, 0, 0, 0.25],
    "48": [0, 0.43056, 0, 0, 0.5],
    "49": [0, 0.43056, 0, 0, 0.5],
    "50": [0, 0.43056, 0, 0, 0.5],
    "51": [0.19444, 0.43056, 0, 0, 0.5],
    "52": [0.19444, 0.43056, 0, 0, 0.5],
    "53": [0.19444, 0.43056, 0, 0, 0.5],
    "54": [0, 0.64444, 0, 0, 0.5],
    "55": [0.19444, 0.43056, 0, 0, 0.5],
    "56": [0, 0.64444, 0, 0, 0.5],
    "57": [0.19444, 0.43056, 0, 0, 0.5],
    "65": [0, 0.68333, 0, 0.13889, 0.75],
    "66": [0, 0.68333, 0.05017, 0.08334, 0.75851],
    "67": [0, 0.68333, 0.07153, 0.08334, 0.71472],
    "68": [0, 0.68333, 0.02778, 0.05556, 0.82792],
    "69": [0, 0.68333, 0.05764, 0.08334, 0.7382],
    "70": [0, 0.68333, 0.13889, 0.08334, 0.64306],
    "71": [0, 0.68333, 0, 0.08334, 0.78625],
    "72": [0, 0.68333, 0.08125, 0.05556, 0.83125],
    "73": [0, 0.68333, 0.07847, 0.11111, 0.43958],
    "74": [0, 0.68333, 0.09618, 0.16667, 0.55451],
    "75": [0, 0.68333, 0.07153, 0.05556, 0.84931],
    "76": [0, 0.68333, 0, 0.02778, 0.68056],
    "77": [0, 0.68333, 0.10903, 0.08334, 0.97014],
    "78": [0, 0.68333, 0.10903, 0.08334, 0.80347],
    "79": [0, 0.68333, 0.02778, 0.08334, 0.76278],
    "80": [0, 0.68333, 0.13889, 0.08334, 0.64201],
    "81": [0.19444, 0.68333, 0, 0.08334, 0.79056],
    "82": [0, 0.68333, 773e-5, 0.08334, 0.75929],
    "83": [0, 0.68333, 0.05764, 0.08334, 0.6132],
    "84": [0, 0.68333, 0.13889, 0.08334, 0.58438],
    "85": [0, 0.68333, 0.10903, 0.02778, 0.68278],
    "86": [0, 0.68333, 0.22222, 0, 0.58333],
    "87": [0, 0.68333, 0.13889, 0, 0.94445],
    "88": [0, 0.68333, 0.07847, 0.08334, 0.82847],
    "89": [0, 0.68333, 0.22222, 0, 0.58056],
    "90": [0, 0.68333, 0.07153, 0.08334, 0.68264],
    "97": [0, 0.43056, 0, 0, 0.52859],
    "98": [0, 0.69444, 0, 0, 0.42917],
    "99": [0, 0.43056, 0, 0.05556, 0.43276],
    "100": [0, 0.69444, 0, 0.16667, 0.52049],
    "101": [0, 0.43056, 0, 0.05556, 0.46563],
    "102": [0.19444, 0.69444, 0.10764, 0.16667, 0.48959],
    "103": [0.19444, 0.43056, 0.03588, 0.02778, 0.47697],
    "104": [0, 0.69444, 0, 0, 0.57616],
    "105": [0, 0.65952, 0, 0, 0.34451],
    "106": [0.19444, 0.65952, 0.05724, 0, 0.41181],
    "107": [0, 0.69444, 0.03148, 0, 0.5206],
    "108": [0, 0.69444, 0.01968, 0.08334, 0.29838],
    "109": [0, 0.43056, 0, 0, 0.87801],
    "110": [0, 0.43056, 0, 0, 0.60023],
    "111": [0, 0.43056, 0, 0.05556, 0.48472],
    "112": [0.19444, 0.43056, 0, 0.08334, 0.50313],
    "113": [0.19444, 0.43056, 0.03588, 0.08334, 0.44641],
    "114": [0, 0.43056, 0.02778, 0.05556, 0.45116],
    "115": [0, 0.43056, 0, 0.05556, 0.46875],
    "116": [0, 0.61508, 0, 0.08334, 0.36111],
    "117": [0, 0.43056, 0, 0.02778, 0.57246],
    "118": [0, 0.43056, 0.03588, 0.02778, 0.48472],
    "119": [0, 0.43056, 0.02691, 0.08334, 0.71592],
    "120": [0, 0.43056, 0, 0.02778, 0.57153],
    "121": [0.19444, 0.43056, 0.03588, 0.05556, 0.49028],
    "122": [0, 0.43056, 0.04398, 0.05556, 0.46505],
    "160": [0, 0, 0, 0, 0.25],
    "915": [0, 0.68333, 0.13889, 0.08334, 0.61528],
    "916": [0, 0.68333, 0, 0.16667, 0.83334],
    "920": [0, 0.68333, 0.02778, 0.08334, 0.76278],
    "923": [0, 0.68333, 0, 0.16667, 0.69445],
    "926": [0, 0.68333, 0.07569, 0.08334, 0.74236],
    "928": [0, 0.68333, 0.08125, 0.05556, 0.83125],
    "931": [0, 0.68333, 0.05764, 0.08334, 0.77986],
    "933": [0, 0.68333, 0.13889, 0.05556, 0.58333],
    "934": [0, 0.68333, 0, 0.08334, 0.66667],
    "936": [0, 0.68333, 0.11, 0.05556, 0.61222],
    "937": [0, 0.68333, 0.05017, 0.08334, 0.7724],
    "945": [0, 0.43056, 37e-4, 0.02778, 0.6397],
    "946": [0.19444, 0.69444, 0.05278, 0.08334, 0.56563],
    "947": [0.19444, 0.43056, 0.05556, 0, 0.51773],
    "948": [0, 0.69444, 0.03785, 0.05556, 0.44444],
    "949": [0, 0.43056, 0, 0.08334, 0.46632],
    "950": [0.19444, 0.69444, 0.07378, 0.08334, 0.4375],
    "951": [0.19444, 0.43056, 0.03588, 0.05556, 0.49653],
    "952": [0, 0.69444, 0.02778, 0.08334, 0.46944],
    "953": [0, 0.43056, 0, 0.05556, 0.35394],
    "954": [0, 0.43056, 0, 0, 0.57616],
    "955": [0, 0.69444, 0, 0, 0.58334],
    "956": [0.19444, 0.43056, 0, 0.02778, 0.60255],
    "957": [0, 0.43056, 0.06366, 0.02778, 0.49398],
    "958": [0.19444, 0.69444, 0.04601, 0.11111, 0.4375],
    "959": [0, 0.43056, 0, 0.05556, 0.48472],
    "960": [0, 0.43056, 0.03588, 0, 0.57003],
    "961": [0.19444, 0.43056, 0, 0.08334, 0.51702],
    "962": [0.09722, 0.43056, 0.07986, 0.08334, 0.36285],
    "963": [0, 0.43056, 0.03588, 0, 0.57141],
    "964": [0, 0.43056, 0.1132, 0.02778, 0.43715],
    "965": [0, 0.43056, 0.03588, 0.02778, 0.54028],
    "966": [0.19444, 0.43056, 0, 0.08334, 0.65417],
    "967": [0.19444, 0.43056, 0, 0.05556, 0.62569],
    "968": [0.19444, 0.69444, 0.03588, 0.11111, 0.65139],
    "969": [0, 0.43056, 0.03588, 0, 0.62245],
    "977": [0, 0.69444, 0, 0.08334, 0.59144],
    "981": [0.19444, 0.69444, 0, 0.08334, 0.59583],
    "982": [0, 0.43056, 0.02778, 0, 0.82813],
    "1009": [0.19444, 0.43056, 0, 0.08334, 0.51702],
    "1013": [0, 0.43056, 0, 0.05556, 0.4059],
    "57649": [0, 0.43056, 0, 0.02778, 0.32246],
    "57911": [0.19444, 0.43056, 0, 0.08334, 0.38403]
  },
  "SansSerif-Bold": {
    "32": [0, 0, 0, 0, 0.25],
    "33": [0, 0.69444, 0, 0, 0.36667],
    "34": [0, 0.69444, 0, 0, 0.55834],
    "35": [0.19444, 0.69444, 0, 0, 0.91667],
    "36": [0.05556, 0.75, 0, 0, 0.55],
    "37": [0.05556, 0.75, 0, 0, 1.02912],
    "38": [0, 0.69444, 0, 0, 0.83056],
    "39": [0, 0.69444, 0, 0, 0.30556],
    "40": [0.25, 0.75, 0, 0, 0.42778],
    "41": [0.25, 0.75, 0, 0, 0.42778],
    "42": [0, 0.75, 0, 0, 0.55],
    "43": [0.11667, 0.61667, 0, 0, 0.85556],
    "44": [0.10556, 0.13056, 0, 0, 0.30556],
    "45": [0, 0.45833, 0, 0, 0.36667],
    "46": [0, 0.13056, 0, 0, 0.30556],
    "47": [0.25, 0.75, 0, 0, 0.55],
    "48": [0, 0.69444, 0, 0, 0.55],
    "49": [0, 0.69444, 0, 0, 0.55],
    "50": [0, 0.69444, 0, 0, 0.55],
    "51": [0, 0.69444, 0, 0, 0.55],
    "52": [0, 0.69444, 0, 0, 0.55],
    "53": [0, 0.69444, 0, 0, 0.55],
    "54": [0, 0.69444, 0, 0, 0.55],
    "55": [0, 0.69444, 0, 0, 0.55],
    "56": [0, 0.69444, 0, 0, 0.55],
    "57": [0, 0.69444, 0, 0, 0.55],
    "58": [0, 0.45833, 0, 0, 0.30556],
    "59": [0.10556, 0.45833, 0, 0, 0.30556],
    "61": [-0.09375, 0.40625, 0, 0, 0.85556],
    "63": [0, 0.69444, 0, 0, 0.51945],
    "64": [0, 0.69444, 0, 0, 0.73334],
    "65": [0, 0.69444, 0, 0, 0.73334],
    "66": [0, 0.69444, 0, 0, 0.73334],
    "67": [0, 0.69444, 0, 0, 0.70278],
    "68": [0, 0.69444, 0, 0, 0.79445],
    "69": [0, 0.69444, 0, 0, 0.64167],
    "70": [0, 0.69444, 0, 0, 0.61111],
    "71": [0, 0.69444, 0, 0, 0.73334],
    "72": [0, 0.69444, 0, 0, 0.79445],
    "73": [0, 0.69444, 0, 0, 0.33056],
    "74": [0, 0.69444, 0, 0, 0.51945],
    "75": [0, 0.69444, 0, 0, 0.76389],
    "76": [0, 0.69444, 0, 0, 0.58056],
    "77": [0, 0.69444, 0, 0, 0.97778],
    "78": [0, 0.69444, 0, 0, 0.79445],
    "79": [0, 0.69444, 0, 0, 0.79445],
    "80": [0, 0.69444, 0, 0, 0.70278],
    "81": [0.10556, 0.69444, 0, 0, 0.79445],
    "82": [0, 0.69444, 0, 0, 0.70278],
    "83": [0, 0.69444, 0, 0, 0.61111],
    "84": [0, 0.69444, 0, 0, 0.73334],
    "85": [0, 0.69444, 0, 0, 0.76389],
    "86": [0, 0.69444, 0.01528, 0, 0.73334],
    "87": [0, 0.69444, 0.01528, 0, 1.03889],
    "88": [0, 0.69444, 0, 0, 0.73334],
    "89": [0, 0.69444, 0.0275, 0, 0.73334],
    "90": [0, 0.69444, 0, 0, 0.67223],
    "91": [0.25, 0.75, 0, 0, 0.34306],
    "93": [0.25, 0.75, 0, 0, 0.34306],
    "94": [0, 0.69444, 0, 0, 0.55],
    "95": [0.35, 0.10833, 0.03056, 0, 0.55],
    "97": [0, 0.45833, 0, 0, 0.525],
    "98": [0, 0.69444, 0, 0, 0.56111],
    "99": [0, 0.45833, 0, 0, 0.48889],
    "100": [0, 0.69444, 0, 0, 0.56111],
    "101": [0, 0.45833, 0, 0, 0.51111],
    "102": [0, 0.69444, 0.07639, 0, 0.33611],
    "103": [0.19444, 0.45833, 0.01528, 0, 0.55],
    "104": [0, 0.69444, 0, 0, 0.56111],
    "105": [0, 0.69444, 0, 0, 0.25556],
    "106": [0.19444, 0.69444, 0, 0, 0.28611],
    "107": [0, 0.69444, 0, 0, 0.53056],
    "108": [0, 0.69444, 0, 0, 0.25556],
    "109": [0, 0.45833, 0, 0, 0.86667],
    "110": [0, 0.45833, 0, 0, 0.56111],
    "111": [0, 0.45833, 0, 0, 0.55],
    "112": [0.19444, 0.45833, 0, 0, 0.56111],
    "113": [0.19444, 0.45833, 0, 0, 0.56111],
    "114": [0, 0.45833, 0.01528, 0, 0.37222],
    "115": [0, 0.45833, 0, 0, 0.42167],
    "116": [0, 0.58929, 0, 0, 0.40417],
    "117": [0, 0.45833, 0, 0, 0.56111],
    "118": [0, 0.45833, 0.01528, 0, 0.5],
    "119": [0, 0.45833, 0.01528, 0, 0.74445],
    "120": [0, 0.45833, 0, 0, 0.5],
    "121": [0.19444, 0.45833, 0.01528, 0, 0.5],
    "122": [0, 0.45833, 0, 0, 0.47639],
    "126": [0.35, 0.34444, 0, 0, 0.55],
    "160": [0, 0, 0, 0, 0.25],
    "168": [0, 0.69444, 0, 0, 0.55],
    "176": [0, 0.69444, 0, 0, 0.73334],
    "180": [0, 0.69444, 0, 0, 0.55],
    "184": [0.17014, 0, 0, 0, 0.48889],
    "305": [0, 0.45833, 0, 0, 0.25556],
    "567": [0.19444, 0.45833, 0, 0, 0.28611],
    "710": [0, 0.69444, 0, 0, 0.55],
    "711": [0, 0.63542, 0, 0, 0.55],
    "713": [0, 0.63778, 0, 0, 0.55],
    "728": [0, 0.69444, 0, 0, 0.55],
    "729": [0, 0.69444, 0, 0, 0.30556],
    "730": [0, 0.69444, 0, 0, 0.73334],
    "732": [0, 0.69444, 0, 0, 0.55],
    "733": [0, 0.69444, 0, 0, 0.55],
    "915": [0, 0.69444, 0, 0, 0.58056],
    "916": [0, 0.69444, 0, 0, 0.91667],
    "920": [0, 0.69444, 0, 0, 0.85556],
    "923": [0, 0.69444, 0, 0, 0.67223],
    "926": [0, 0.69444, 0, 0, 0.73334],
    "928": [0, 0.69444, 0, 0, 0.79445],
    "931": [0, 0.69444, 0, 0, 0.79445],
    "933": [0, 0.69444, 0, 0, 0.85556],
    "934": [0, 0.69444, 0, 0, 0.79445],
    "936": [0, 0.69444, 0, 0, 0.85556],
    "937": [0, 0.69444, 0, 0, 0.79445],
    "8211": [0, 0.45833, 0.03056, 0, 0.55],
    "8212": [0, 0.45833, 0.03056, 0, 1.10001],
    "8216": [0, 0.69444, 0, 0, 0.30556],
    "8217": [0, 0.69444, 0, 0, 0.30556],
    "8220": [0, 0.69444, 0, 0, 0.55834],
    "8221": [0, 0.69444, 0, 0, 0.55834]
  },
  "SansSerif-Italic": {
    "32": [0, 0, 0, 0, 0.25],
    "33": [0, 0.69444, 0.05733, 0, 0.31945],
    "34": [0, 0.69444, 316e-5, 0, 0.5],
    "35": [0.19444, 0.69444, 0.05087, 0, 0.83334],
    "36": [0.05556, 0.75, 0.11156, 0, 0.5],
    "37": [0.05556, 0.75, 0.03126, 0, 0.83334],
    "38": [0, 0.69444, 0.03058, 0, 0.75834],
    "39": [0, 0.69444, 0.07816, 0, 0.27778],
    "40": [0.25, 0.75, 0.13164, 0, 0.38889],
    "41": [0.25, 0.75, 0.02536, 0, 0.38889],
    "42": [0, 0.75, 0.11775, 0, 0.5],
    "43": [0.08333, 0.58333, 0.02536, 0, 0.77778],
    "44": [0.125, 0.08333, 0, 0, 0.27778],
    "45": [0, 0.44444, 0.01946, 0, 0.33333],
    "46": [0, 0.08333, 0, 0, 0.27778],
    "47": [0.25, 0.75, 0.13164, 0, 0.5],
    "48": [0, 0.65556, 0.11156, 0, 0.5],
    "49": [0, 0.65556, 0.11156, 0, 0.5],
    "50": [0, 0.65556, 0.11156, 0, 0.5],
    "51": [0, 0.65556, 0.11156, 0, 0.5],
    "52": [0, 0.65556, 0.11156, 0, 0.5],
    "53": [0, 0.65556, 0.11156, 0, 0.5],
    "54": [0, 0.65556, 0.11156, 0, 0.5],
    "55": [0, 0.65556, 0.11156, 0, 0.5],
    "56": [0, 0.65556, 0.11156, 0, 0.5],
    "57": [0, 0.65556, 0.11156, 0, 0.5],
    "58": [0, 0.44444, 0.02502, 0, 0.27778],
    "59": [0.125, 0.44444, 0.02502, 0, 0.27778],
    "61": [-0.13, 0.37, 0.05087, 0, 0.77778],
    "63": [0, 0.69444, 0.11809, 0, 0.47222],
    "64": [0, 0.69444, 0.07555, 0, 0.66667],
    "65": [0, 0.69444, 0, 0, 0.66667],
    "66": [0, 0.69444, 0.08293, 0, 0.66667],
    "67": [0, 0.69444, 0.11983, 0, 0.63889],
    "68": [0, 0.69444, 0.07555, 0, 0.72223],
    "69": [0, 0.69444, 0.11983, 0, 0.59722],
    "70": [0, 0.69444, 0.13372, 0, 0.56945],
    "71": [0, 0.69444, 0.11983, 0, 0.66667],
    "72": [0, 0.69444, 0.08094, 0, 0.70834],
    "73": [0, 0.69444, 0.13372, 0, 0.27778],
    "74": [0, 0.69444, 0.08094, 0, 0.47222],
    "75": [0, 0.69444, 0.11983, 0, 0.69445],
    "76": [0, 0.69444, 0, 0, 0.54167],
    "77": [0, 0.69444, 0.08094, 0, 0.875],
    "78": [0, 0.69444, 0.08094, 0, 0.70834],
    "79": [0, 0.69444, 0.07555, 0, 0.73611],
    "80": [0, 0.69444, 0.08293, 0, 0.63889],
    "81": [0.125, 0.69444, 0.07555, 0, 0.73611],
    "82": [0, 0.69444, 0.08293, 0, 0.64584],
    "83": [0, 0.69444, 0.09205, 0, 0.55556],
    "84": [0, 0.69444, 0.13372, 0, 0.68056],
    "85": [0, 0.69444, 0.08094, 0, 0.6875],
    "86": [0, 0.69444, 0.1615, 0, 0.66667],
    "87": [0, 0.69444, 0.1615, 0, 0.94445],
    "88": [0, 0.69444, 0.13372, 0, 0.66667],
    "89": [0, 0.69444, 0.17261, 0, 0.66667],
    "90": [0, 0.69444, 0.11983, 0, 0.61111],
    "91": [0.25, 0.75, 0.15942, 0, 0.28889],
    "93": [0.25, 0.75, 0.08719, 0, 0.28889],
    "94": [0, 0.69444, 0.0799, 0, 0.5],
    "95": [0.35, 0.09444, 0.08616, 0, 0.5],
    "97": [0, 0.44444, 981e-5, 0, 0.48056],
    "98": [0, 0.69444, 0.03057, 0, 0.51667],
    "99": [0, 0.44444, 0.08336, 0, 0.44445],
    "100": [0, 0.69444, 0.09483, 0, 0.51667],
    "101": [0, 0.44444, 0.06778, 0, 0.44445],
    "102": [0, 0.69444, 0.21705, 0, 0.30556],
    "103": [0.19444, 0.44444, 0.10836, 0, 0.5],
    "104": [0, 0.69444, 0.01778, 0, 0.51667],
    "105": [0, 0.67937, 0.09718, 0, 0.23889],
    "106": [0.19444, 0.67937, 0.09162, 0, 0.26667],
    "107": [0, 0.69444, 0.08336, 0, 0.48889],
    "108": [0, 0.69444, 0.09483, 0, 0.23889],
    "109": [0, 0.44444, 0.01778, 0, 0.79445],
    "110": [0, 0.44444, 0.01778, 0, 0.51667],
    "111": [0, 0.44444, 0.06613, 0, 0.5],
    "112": [0.19444, 0.44444, 0.0389, 0, 0.51667],
    "113": [0.19444, 0.44444, 0.04169, 0, 0.51667],
    "114": [0, 0.44444, 0.10836, 0, 0.34167],
    "115": [0, 0.44444, 0.0778, 0, 0.38333],
    "116": [0, 0.57143, 0.07225, 0, 0.36111],
    "117": [0, 0.44444, 0.04169, 0, 0.51667],
    "118": [0, 0.44444, 0.10836, 0, 0.46111],
    "119": [0, 0.44444, 0.10836, 0, 0.68334],
    "120": [0, 0.44444, 0.09169, 0, 0.46111],
    "121": [0.19444, 0.44444, 0.10836, 0, 0.46111],
    "122": [0, 0.44444, 0.08752, 0, 0.43472],
    "126": [0.35, 0.32659, 0.08826, 0, 0.5],
    "160": [0, 0, 0, 0, 0.25],
    "168": [0, 0.67937, 0.06385, 0, 0.5],
    "176": [0, 0.69444, 0, 0, 0.73752],
    "184": [0.17014, 0, 0, 0, 0.44445],
    "305": [0, 0.44444, 0.04169, 0, 0.23889],
    "567": [0.19444, 0.44444, 0.04169, 0, 0.26667],
    "710": [0, 0.69444, 0.0799, 0, 0.5],
    "711": [0, 0.63194, 0.08432, 0, 0.5],
    "713": [0, 0.60889, 0.08776, 0, 0.5],
    "714": [0, 0.69444, 0.09205, 0, 0.5],
    "715": [0, 0.69444, 0, 0, 0.5],
    "728": [0, 0.69444, 0.09483, 0, 0.5],
    "729": [0, 0.67937, 0.07774, 0, 0.27778],
    "730": [0, 0.69444, 0, 0, 0.73752],
    "732": [0, 0.67659, 0.08826, 0, 0.5],
    "733": [0, 0.69444, 0.09205, 0, 0.5],
    "915": [0, 0.69444, 0.13372, 0, 0.54167],
    "916": [0, 0.69444, 0, 0, 0.83334],
    "920": [0, 0.69444, 0.07555, 0, 0.77778],
    "923": [0, 0.69444, 0, 0, 0.61111],
    "926": [0, 0.69444, 0.12816, 0, 0.66667],
    "928": [0, 0.69444, 0.08094, 0, 0.70834],
    "931": [0, 0.69444, 0.11983, 0, 0.72222],
    "933": [0, 0.69444, 0.09031, 0, 0.77778],
    "934": [0, 0.69444, 0.04603, 0, 0.72222],
    "936": [0, 0.69444, 0.09031, 0, 0.77778],
    "937": [0, 0.69444, 0.08293, 0, 0.72222],
    "8211": [0, 0.44444, 0.08616, 0, 0.5],
    "8212": [0, 0.44444, 0.08616, 0, 1],
    "8216": [0, 0.69444, 0.07816, 0, 0.27778],
    "8217": [0, 0.69444, 0.07816, 0, 0.27778],
    "8220": [0, 0.69444, 0.14205, 0, 0.5],
    "8221": [0, 0.69444, 316e-5, 0, 0.5]
  },
  "SansSerif-Regular": {
    "32": [0, 0, 0, 0, 0.25],
    "33": [0, 0.69444, 0, 0, 0.31945],
    "34": [0, 0.69444, 0, 0, 0.5],
    "35": [0.19444, 0.69444, 0, 0, 0.83334],
    "36": [0.05556, 0.75, 0, 0, 0.5],
    "37": [0.05556, 0.75, 0, 0, 0.83334],
    "38": [0, 0.69444, 0, 0, 0.75834],
    "39": [0, 0.69444, 0, 0, 0.27778],
    "40": [0.25, 0.75, 0, 0, 0.38889],
    "41": [0.25, 0.75, 0, 0, 0.38889],
    "42": [0, 0.75, 0, 0, 0.5],
    "43": [0.08333, 0.58333, 0, 0, 0.77778],
    "44": [0.125, 0.08333, 0, 0, 0.27778],
    "45": [0, 0.44444, 0, 0, 0.33333],
    "46": [0, 0.08333, 0, 0, 0.27778],
    "47": [0.25, 0.75, 0, 0, 0.5],
    "48": [0, 0.65556, 0, 0, 0.5],
    "49": [0, 0.65556, 0, 0, 0.5],
    "50": [0, 0.65556, 0, 0, 0.5],
    "51": [0, 0.65556, 0, 0, 0.5],
    "52": [0, 0.65556, 0, 0, 0.5],
    "53": [0, 0.65556, 0, 0, 0.5],
    "54": [0, 0.65556, 0, 0, 0.5],
    "55": [0, 0.65556, 0, 0, 0.5],
    "56": [0, 0.65556, 0, 0, 0.5],
    "57": [0, 0.65556, 0, 0, 0.5],
    "58": [0, 0.44444, 0, 0, 0.27778],
    "59": [0.125, 0.44444, 0, 0, 0.27778],
    "61": [-0.13, 0.37, 0, 0, 0.77778],
    "63": [0, 0.69444, 0, 0, 0.47222],
    "64": [0, 0.69444, 0, 0, 0.66667],
    "65": [0, 0.69444, 0, 0, 0.66667],
    "66": [0, 0.69444, 0, 0, 0.66667],
    "67": [0, 0.69444, 0, 0, 0.63889],
    "68": [0, 0.69444, 0, 0, 0.72223],
    "69": [0, 0.69444, 0, 0, 0.59722],
    "70": [0, 0.69444, 0, 0, 0.56945],
    "71": [0, 0.69444, 0, 0, 0.66667],
    "72": [0, 0.69444, 0, 0, 0.70834],
    "73": [0, 0.69444, 0, 0, 0.27778],
    "74": [0, 0.69444, 0, 0, 0.47222],
    "75": [0, 0.69444, 0, 0, 0.69445],
    "76": [0, 0.69444, 0, 0, 0.54167],
    "77": [0, 0.69444, 0, 0, 0.875],
    "78": [0, 0.69444, 0, 0, 0.70834],
    "79": [0, 0.69444, 0, 0, 0.73611],
    "80": [0, 0.69444, 0, 0, 0.63889],
    "81": [0.125, 0.69444, 0, 0, 0.73611],
    "82": [0, 0.69444, 0, 0, 0.64584],
    "83": [0, 0.69444, 0, 0, 0.55556],
    "84": [0, 0.69444, 0, 0, 0.68056],
    "85": [0, 0.69444, 0, 0, 0.6875],
    "86": [0, 0.69444, 0.01389, 0, 0.66667],
    "87": [0, 0.69444, 0.01389, 0, 0.94445],
    "88": [0, 0.69444, 0, 0, 0.66667],
    "89": [0, 0.69444, 0.025, 0, 0.66667],
    "90": [0, 0.69444, 0, 0, 0.61111],
    "91": [0.25, 0.75, 0, 0, 0.28889],
    "93": [0.25, 0.75, 0, 0, 0.28889],
    "94": [0, 0.69444, 0, 0, 0.5],
    "95": [0.35, 0.09444, 0.02778, 0, 0.5],
    "97": [0, 0.44444, 0, 0, 0.48056],
    "98": [0, 0.69444, 0, 0, 0.51667],
    "99": [0, 0.44444, 0, 0, 0.44445],
    "100": [0, 0.69444, 0, 0, 0.51667],
    "101": [0, 0.44444, 0, 0, 0.44445],
    "102": [0, 0.69444, 0.06944, 0, 0.30556],
    "103": [0.19444, 0.44444, 0.01389, 0, 0.5],
    "104": [0, 0.69444, 0, 0, 0.51667],
    "105": [0, 0.67937, 0, 0, 0.23889],
    "106": [0.19444, 0.67937, 0, 0, 0.26667],
    "107": [0, 0.69444, 0, 0, 0.48889],
    "108": [0, 0.69444, 0, 0, 0.23889],
    "109": [0, 0.44444, 0, 0, 0.79445],
    "110": [0, 0.44444, 0, 0, 0.51667],
    "111": [0, 0.44444, 0, 0, 0.5],
    "112": [0.19444, 0.44444, 0, 0, 0.51667],
    "113": [0.19444, 0.44444, 0, 0, 0.51667],
    "114": [0, 0.44444, 0.01389, 0, 0.34167],
    "115": [0, 0.44444, 0, 0, 0.38333],
    "116": [0, 0.57143, 0, 0, 0.36111],
    "117": [0, 0.44444, 0, 0, 0.51667],
    "118": [0, 0.44444, 0.01389, 0, 0.46111],
    "119": [0, 0.44444, 0.01389, 0, 0.68334],
    "120": [0, 0.44444, 0, 0, 0.46111],
    "121": [0.19444, 0.44444, 0.01389, 0, 0.46111],
    "122": [0, 0.44444, 0, 0, 0.43472],
    "126": [0.35, 0.32659, 0, 0, 0.5],
    "160": [0, 0, 0, 0, 0.25],
    "168": [0, 0.67937, 0, 0, 0.5],
    "176": [0, 0.69444, 0, 0, 0.66667],
    "184": [0.17014, 0, 0, 0, 0.44445],
    "305": [0, 0.44444, 0, 0, 0.23889],
    "567": [0.19444, 0.44444, 0, 0, 0.26667],
    "710": [0, 0.69444, 0, 0, 0.5],
    "711": [0, 0.63194, 0, 0, 0.5],
    "713": [0, 0.60889, 0, 0, 0.5],
    "714": [0, 0.69444, 0, 0, 0.5],
    "715": [0, 0.69444, 0, 0, 0.5],
    "728": [0, 0.69444, 0, 0, 0.5],
    "729": [0, 0.67937, 0, 0, 0.27778],
    "730": [0, 0.69444, 0, 0, 0.66667],
    "732": [0, 0.67659, 0, 0, 0.5],
    "733": [0, 0.69444, 0, 0, 0.5],
    "915": [0, 0.69444, 0, 0, 0.54167],
    "916": [0, 0.69444, 0, 0, 0.83334],
    "920": [0, 0.69444, 0, 0, 0.77778],
    "923": [0, 0.69444, 0, 0, 0.61111],
    "926": [0, 0.69444, 0, 0, 0.66667],
    "928": [0, 0.69444, 0, 0, 0.70834],
    "931": [0, 0.69444, 0, 0, 0.72222],
    "933": [0, 0.69444, 0, 0, 0.77778],
    "934": [0, 0.69444, 0, 0, 0.72222],
    "936": [0, 0.69444, 0, 0, 0.77778],
    "937": [0, 0.69444, 0, 0, 0.72222],
    "8211": [0, 0.44444, 0.02778, 0, 0.5],
    "8212": [0, 0.44444, 0.02778, 0, 1],
    "8216": [0, 0.69444, 0, 0, 0.27778],
    "8217": [0, 0.69444, 0, 0, 0.27778],
    "8220": [0, 0.69444, 0, 0, 0.5],
    "8221": [0, 0.69444, 0, 0, 0.5]
  },
  "Script-Regular": {
    "32": [0, 0, 0, 0, 0.25],
    "65": [0, 0.7, 0.22925, 0, 0.80253],
    "66": [0, 0.7, 0.04087, 0, 0.90757],
    "67": [0, 0.7, 0.1689, 0, 0.66619],
    "68": [0, 0.7, 0.09371, 0, 0.77443],
    "69": [0, 0.7, 0.18583, 0, 0.56162],
    "70": [0, 0.7, 0.13634, 0, 0.89544],
    "71": [0, 0.7, 0.17322, 0, 0.60961],
    "72": [0, 0.7, 0.29694, 0, 0.96919],
    "73": [0, 0.7, 0.19189, 0, 0.80907],
    "74": [0.27778, 0.7, 0.19189, 0, 1.05159],
    "75": [0, 0.7, 0.31259, 0, 0.91364],
    "76": [0, 0.7, 0.19189, 0, 0.87373],
    "77": [0, 0.7, 0.15981, 0, 1.08031],
    "78": [0, 0.7, 0.3525, 0, 0.9015],
    "79": [0, 0.7, 0.08078, 0, 0.73787],
    "80": [0, 0.7, 0.08078, 0, 1.01262],
    "81": [0, 0.7, 0.03305, 0, 0.88282],
    "82": [0, 0.7, 0.06259, 0, 0.85],
    "83": [0, 0.7, 0.19189, 0, 0.86767],
    "84": [0, 0.7, 0.29087, 0, 0.74697],
    "85": [0, 0.7, 0.25815, 0, 0.79996],
    "86": [0, 0.7, 0.27523, 0, 0.62204],
    "87": [0, 0.7, 0.27523, 0, 0.80532],
    "88": [0, 0.7, 0.26006, 0, 0.94445],
    "89": [0, 0.7, 0.2939, 0, 0.70961],
    "90": [0, 0.7, 0.24037, 0, 0.8212],
    "160": [0, 0, 0, 0, 0.25]
  },
  "Size1-Regular": {
    "32": [0, 0, 0, 0, 0.25],
    "40": [0.35001, 0.85, 0, 0, 0.45834],
    "41": [0.35001, 0.85, 0, 0, 0.45834],
    "47": [0.35001, 0.85, 0, 0, 0.57778],
    "91": [0.35001, 0.85, 0, 0, 0.41667],
    "92": [0.35001, 0.85, 0, 0, 0.57778],
    "93": [0.35001, 0.85, 0, 0, 0.41667],
    "123": [0.35001, 0.85, 0, 0, 0.58334],
    "125": [0.35001, 0.85, 0, 0, 0.58334],
    "160": [0, 0, 0, 0, 0.25],
    "710": [0, 0.72222, 0, 0, 0.55556],
    "732": [0, 0.72222, 0, 0, 0.55556],
    "770": [0, 0.72222, 0, 0, 0.55556],
    "771": [0, 0.72222, 0, 0, 0.55556],
    "8214": [-99e-5, 0.601, 0, 0, 0.77778],
    "8593": [1e-5, 0.6, 0, 0, 0.66667],
    "8595": [1e-5, 0.6, 0, 0, 0.66667],
    "8657": [1e-5, 0.6, 0, 0, 0.77778],
    "8659": [1e-5, 0.6, 0, 0, 0.77778],
    "8719": [0.25001, 0.75, 0, 0, 0.94445],
    "8720": [0.25001, 0.75, 0, 0, 0.94445],
    "8721": [0.25001, 0.75, 0, 0, 1.05556],
    "8730": [0.35001, 0.85, 0, 0, 1],
    "8739": [-599e-5, 0.606, 0, 0, 0.33333],
    "8741": [-599e-5, 0.606, 0, 0, 0.55556],
    "8747": [0.30612, 0.805, 0.19445, 0, 0.47222],
    "8748": [0.306, 0.805, 0.19445, 0, 0.47222],
    "8749": [0.306, 0.805, 0.19445, 0, 0.47222],
    "8750": [0.30612, 0.805, 0.19445, 0, 0.47222],
    "8896": [0.25001, 0.75, 0, 0, 0.83334],
    "8897": [0.25001, 0.75, 0, 0, 0.83334],
    "8898": [0.25001, 0.75, 0, 0, 0.83334],
    "8899": [0.25001, 0.75, 0, 0, 0.83334],
    "8968": [0.35001, 0.85, 0, 0, 0.47222],
    "8969": [0.35001, 0.85, 0, 0, 0.47222],
    "8970": [0.35001, 0.85, 0, 0, 0.47222],
    "8971": [0.35001, 0.85, 0, 0, 0.47222],
    "9168": [-99e-5, 0.601, 0, 0, 0.66667],
    "10216": [0.35001, 0.85, 0, 0, 0.47222],
    "10217": [0.35001, 0.85, 0, 0, 0.47222],
    "10752": [0.25001, 0.75, 0, 0, 1.11111],
    "10753": [0.25001, 0.75, 0, 0, 1.11111],
    "10754": [0.25001, 0.75, 0, 0, 1.11111],
    "10756": [0.25001, 0.75, 0, 0, 0.83334],
    "10758": [0.25001, 0.75, 0, 0, 0.83334]
  },
  "Size2-Regular": {
    "32": [0, 0, 0, 0, 0.25],
    "40": [0.65002, 1.15, 0, 0, 0.59722],
    "41": [0.65002, 1.15, 0, 0, 0.59722],
    "47": [0.65002, 1.15, 0, 0, 0.81111],
    "91": [0.65002, 1.15, 0, 0, 0.47222],
    "92": [0.65002, 1.15, 0, 0, 0.81111],
    "93": [0.65002, 1.15, 0, 0, 0.47222],
    "123": [0.65002, 1.15, 0, 0, 0.66667],
    "125": [0.65002, 1.15, 0, 0, 0.66667],
    "160": [0, 0, 0, 0, 0.25],
    "710": [0, 0.75, 0, 0, 1],
    "732": [0, 0.75, 0, 0, 1],
    "770": [0, 0.75, 0, 0, 1],
    "771": [0, 0.75, 0, 0, 1],
    "8719": [0.55001, 1.05, 0, 0, 1.27778],
    "8720": [0.55001, 1.05, 0, 0, 1.27778],
    "8721": [0.55001, 1.05, 0, 0, 1.44445],
    "8730": [0.65002, 1.15, 0, 0, 1],
    "8747": [0.86225, 1.36, 0.44445, 0, 0.55556],
    "8748": [0.862, 1.36, 0.44445, 0, 0.55556],
    "8749": [0.862, 1.36, 0.44445, 0, 0.55556],
    "8750": [0.86225, 1.36, 0.44445, 0, 0.55556],
    "8896": [0.55001, 1.05, 0, 0, 1.11111],
    "8897": [0.55001, 1.05, 0, 0, 1.11111],
    "8898": [0.55001, 1.05, 0, 0, 1.11111],
    "8899": [0.55001, 1.05, 0, 0, 1.11111],
    "8968": [0.65002, 1.15, 0, 0, 0.52778],
    "8969": [0.65002, 1.15, 0, 0, 0.52778],
    "8970": [0.65002, 1.15, 0, 0, 0.52778],
    "8971": [0.65002, 1.15, 0, 0, 0.52778],
    "10216": [0.65002, 1.15, 0, 0, 0.61111],
    "10217": [0.65002, 1.15, 0, 0, 0.61111],
    "10752": [0.55001, 1.05, 0, 0, 1.51112],
    "10753": [0.55001, 1.05, 0, 0, 1.51112],
    "10754": [0.55001, 1.05, 0, 0, 1.51112],
    "10756": [0.55001, 1.05, 0, 0, 1.11111],
    "10758": [0.55001, 1.05, 0, 0, 1.11111]
  },
  "Size3-Regular": {
    "32": [0, 0, 0, 0, 0.25],
    "40": [0.95003, 1.45, 0, 0, 0.73611],
    "41": [0.95003, 1.45, 0, 0, 0.73611],
    "47": [0.95003, 1.45, 0, 0, 1.04445],
    "91": [0.95003, 1.45, 0, 0, 0.52778],
    "92": [0.95003, 1.45, 0, 0, 1.04445],
    "93": [0.95003, 1.45, 0, 0, 0.52778],
    "123": [0.95003, 1.45, 0, 0, 0.75],
    "125": [0.95003, 1.45, 0, 0, 0.75],
    "160": [0, 0, 0, 0, 0.25],
    "710": [0, 0.75, 0, 0, 1.44445],
    "732": [0, 0.75, 0, 0, 1.44445],
    "770": [0, 0.75, 0, 0, 1.44445],
    "771": [0, 0.75, 0, 0, 1.44445],
    "8730": [0.95003, 1.45, 0, 0, 1],
    "8968": [0.95003, 1.45, 0, 0, 0.58334],
    "8969": [0.95003, 1.45, 0, 0, 0.58334],
    "8970": [0.95003, 1.45, 0, 0, 0.58334],
    "8971": [0.95003, 1.45, 0, 0, 0.58334],
    "10216": [0.95003, 1.45, 0, 0, 0.75],
    "10217": [0.95003, 1.45, 0, 0, 0.75]
  },
  "Size4-Regular": {
    "32": [0, 0, 0, 0, 0.25],
    "40": [1.25003, 1.75, 0, 0, 0.79167],
    "41": [1.25003, 1.75, 0, 0, 0.79167],
    "47": [1.25003, 1.75, 0, 0, 1.27778],
    "91": [1.25003, 1.75, 0, 0, 0.58334],
    "92": [1.25003, 1.75, 0, 0, 1.27778],
    "93": [1.25003, 1.75, 0, 0, 0.58334],
    "123": [1.25003, 1.75, 0, 0, 0.80556],
    "125": [1.25003, 1.75, 0, 0, 0.80556],
    "160": [0, 0, 0, 0, 0.25],
    "710": [0, 0.825, 0, 0, 1.8889],
    "732": [0, 0.825, 0, 0, 1.8889],
    "770": [0, 0.825, 0, 0, 1.8889],
    "771": [0, 0.825, 0, 0, 1.8889],
    "8730": [1.25003, 1.75, 0, 0, 1],
    "8968": [1.25003, 1.75, 0, 0, 0.63889],
    "8969": [1.25003, 1.75, 0, 0, 0.63889],
    "8970": [1.25003, 1.75, 0, 0, 0.63889],
    "8971": [1.25003, 1.75, 0, 0, 0.63889],
    "9115": [0.64502, 1.155, 0, 0, 0.875],
    "9116": [1e-5, 0.6, 0, 0, 0.875],
    "9117": [0.64502, 1.155, 0, 0, 0.875],
    "9118": [0.64502, 1.155, 0, 0, 0.875],
    "9119": [1e-5, 0.6, 0, 0, 0.875],
    "9120": [0.64502, 1.155, 0, 0, 0.875],
    "9121": [0.64502, 1.155, 0, 0, 0.66667],
    "9122": [-99e-5, 0.601, 0, 0, 0.66667],
    "9123": [0.64502, 1.155, 0, 0, 0.66667],
    "9124": [0.64502, 1.155, 0, 0, 0.66667],
    "9125": [-99e-5, 0.601, 0, 0, 0.66667],
    "9126": [0.64502, 1.155, 0, 0, 0.66667],
    "9127": [1e-5, 0.9, 0, 0, 0.88889],
    "9128": [0.65002, 1.15, 0, 0, 0.88889],
    "9129": [0.90001, 0, 0, 0, 0.88889],
    "9130": [0, 0.3, 0, 0, 0.88889],
    "9131": [1e-5, 0.9, 0, 0, 0.88889],
    "9132": [0.65002, 1.15, 0, 0, 0.88889],
    "9133": [0.90001, 0, 0, 0, 0.88889],
    "9143": [0.88502, 0.915, 0, 0, 1.05556],
    "10216": [1.25003, 1.75, 0, 0, 0.80556],
    "10217": [1.25003, 1.75, 0, 0, 0.80556],
    "57344": [-499e-5, 0.605, 0, 0, 1.05556],
    "57345": [-499e-5, 0.605, 0, 0, 1.05556],
    "57680": [0, 0.12, 0, 0, 0.45],
    "57681": [0, 0.12, 0, 0, 0.45],
    "57682": [0, 0.12, 0, 0, 0.45],
    "57683": [0, 0.12, 0, 0, 0.45]
  },
  "Typewriter-Regular": {
    "32": [0, 0, 0, 0, 0.525],
    "33": [0, 0.61111, 0, 0, 0.525],
    "34": [0, 0.61111, 0, 0, 0.525],
    "35": [0, 0.61111, 0, 0, 0.525],
    "36": [0.08333, 0.69444, 0, 0, 0.525],
    "37": [0.08333, 0.69444, 0, 0, 0.525],
    "38": [0, 0.61111, 0, 0, 0.525],
    "39": [0, 0.61111, 0, 0, 0.525],
    "40": [0.08333, 0.69444, 0, 0, 0.525],
    "41": [0.08333, 0.69444, 0, 0, 0.525],
    "42": [0, 0.52083, 0, 0, 0.525],
    "43": [-0.08056, 0.53055, 0, 0, 0.525],
    "44": [0.13889, 0.125, 0, 0, 0.525],
    "45": [-0.08056, 0.53055, 0, 0, 0.525],
    "46": [0, 0.125, 0, 0, 0.525],
    "47": [0.08333, 0.69444, 0, 0, 0.525],
    "48": [0, 0.61111, 0, 0, 0.525],
    "49": [0, 0.61111, 0, 0, 0.525],
    "50": [0, 0.61111, 0, 0, 0.525],
    "51": [0, 0.61111, 0, 0, 0.525],
    "52": [0, 0.61111, 0, 0, 0.525],
    "53": [0, 0.61111, 0, 0, 0.525],
    "54": [0, 0.61111, 0, 0, 0.525],
    "55": [0, 0.61111, 0, 0, 0.525],
    "56": [0, 0.61111, 0, 0, 0.525],
    "57": [0, 0.61111, 0, 0, 0.525],
    "58": [0, 0.43056, 0, 0, 0.525],
    "59": [0.13889, 0.43056, 0, 0, 0.525],
    "60": [-0.05556, 0.55556, 0, 0, 0.525],
    "61": [-0.19549, 0.41562, 0, 0, 0.525],
    "62": [-0.05556, 0.55556, 0, 0, 0.525],
    "63": [0, 0.61111, 0, 0, 0.525],
    "64": [0, 0.61111, 0, 0, 0.525],
    "65": [0, 0.61111, 0, 0, 0.525],
    "66": [0, 0.61111, 0, 0, 0.525],
    "67": [0, 0.61111, 0, 0, 0.525],
    "68": [0, 0.61111, 0, 0, 0.525],
    "69": [0, 0.61111, 0, 0, 0.525],
    "70": [0, 0.61111, 0, 0, 0.525],
    "71": [0, 0.61111, 0, 0, 0.525],
    "72": [0, 0.61111, 0, 0, 0.525],
    "73": [0, 0.61111, 0, 0, 0.525],
    "74": [0, 0.61111, 0, 0, 0.525],
    "75": [0, 0.61111, 0, 0, 0.525],
    "76": [0, 0.61111, 0, 0, 0.525],
    "77": [0, 0.61111, 0, 0, 0.525],
    "78": [0, 0.61111, 0, 0, 0.525],
    "79": [0, 0.61111, 0, 0, 0.525],
    "80": [0, 0.61111, 0, 0, 0.525],
    "81": [0.13889, 0.61111, 0, 0, 0.525],
    "82": [0, 0.61111, 0, 0, 0.525],
    "83": [0, 0.61111, 0, 0, 0.525],
    "84": [0, 0.61111, 0, 0, 0.525],
    "85": [0, 0.61111, 0, 0, 0.525],
    "86": [0, 0.61111, 0, 0, 0.525],
    "87": [0, 0.61111, 0, 0, 0.525],
    "88": [0, 0.61111, 0, 0, 0.525],
    "89": [0, 0.61111, 0, 0, 0.525],
    "90": [0, 0.61111, 0, 0, 0.525],
    "91": [0.08333, 0.69444, 0, 0, 0.525],
    "92": [0.08333, 0.69444, 0, 0, 0.525],
    "93": [0.08333, 0.69444, 0, 0, 0.525],
    "94": [0, 0.61111, 0, 0, 0.525],
    "95": [0.09514, 0, 0, 0, 0.525],
    "96": [0, 0.61111, 0, 0, 0.525],
    "97": [0, 0.43056, 0, 0, 0.525],
    "98": [0, 0.61111, 0, 0, 0.525],
    "99": [0, 0.43056, 0, 0, 0.525],
    "100": [0, 0.61111, 0, 0, 0.525],
    "101": [0, 0.43056, 0, 0, 0.525],
    "102": [0, 0.61111, 0, 0, 0.525],
    "103": [0.22222, 0.43056, 0, 0, 0.525],
    "104": [0, 0.61111, 0, 0, 0.525],
    "105": [0, 0.61111, 0, 0, 0.525],
    "106": [0.22222, 0.61111, 0, 0, 0.525],
    "107": [0, 0.61111, 0, 0, 0.525],
    "108": [0, 0.61111, 0, 0, 0.525],
    "109": [0, 0.43056, 0, 0, 0.525],
    "110": [0, 0.43056, 0, 0, 0.525],
    "111": [0, 0.43056, 0, 0, 0.525],
    "112": [0.22222, 0.43056, 0, 0, 0.525],
    "113": [0.22222, 0.43056, 0, 0, 0.525],
    "114": [0, 0.43056, 0, 0, 0.525],
    "115": [0, 0.43056, 0, 0, 0.525],
    "116": [0, 0.55358, 0, 0, 0.525],
    "117": [0, 0.43056, 0, 0, 0.525],
    "118": [0, 0.43056, 0, 0, 0.525],
    "119": [0, 0.43056, 0, 0, 0.525],
    "120": [0, 0.43056, 0, 0, 0.525],
    "121": [0.22222, 0.43056, 0, 0, 0.525],
    "122": [0, 0.43056, 0, 0, 0.525],
    "123": [0.08333, 0.69444, 0, 0, 0.525],
    "124": [0.08333, 0.69444, 0, 0, 0.525],
    "125": [0.08333, 0.69444, 0, 0, 0.525],
    "126": [0, 0.61111, 0, 0, 0.525],
    "127": [0, 0.61111, 0, 0, 0.525],
    "160": [0, 0, 0, 0, 0.525],
    "176": [0, 0.61111, 0, 0, 0.525],
    "184": [0.19445, 0, 0, 0, 0.525],
    "305": [0, 0.43056, 0, 0, 0.525],
    "567": [0.22222, 0.43056, 0, 0, 0.525],
    "711": [0, 0.56597, 0, 0, 0.525],
    "713": [0, 0.56555, 0, 0, 0.525],
    "714": [0, 0.61111, 0, 0, 0.525],
    "715": [0, 0.61111, 0, 0, 0.525],
    "728": [0, 0.61111, 0, 0, 0.525],
    "730": [0, 0.61111, 0, 0, 0.525],
    "770": [0, 0.61111, 0, 0, 0.525],
    "771": [0, 0.61111, 0, 0, 0.525],
    "776": [0, 0.61111, 0, 0, 0.525],
    "915": [0, 0.61111, 0, 0, 0.525],
    "916": [0, 0.61111, 0, 0, 0.525],
    "920": [0, 0.61111, 0, 0, 0.525],
    "923": [0, 0.61111, 0, 0, 0.525],
    "926": [0, 0.61111, 0, 0, 0.525],
    "928": [0, 0.61111, 0, 0, 0.525],
    "931": [0, 0.61111, 0, 0, 0.525],
    "933": [0, 0.61111, 0, 0, 0.525],
    "934": [0, 0.61111, 0, 0, 0.525],
    "936": [0, 0.61111, 0, 0, 0.525],
    "937": [0, 0.61111, 0, 0, 0.525],
    "8216": [0, 0.61111, 0, 0, 0.525],
    "8217": [0, 0.61111, 0, 0, 0.525],
    "8242": [0, 0.61111, 0, 0, 0.525],
    "9251": [0.11111, 0.21944, 0, 0, 0.525]
  }
};
var sigmasAndXis = {
  slant: [0.25, 0.25, 0.25],
  // sigma1
  space: [0, 0, 0],
  // sigma2
  stretch: [0, 0, 0],
  // sigma3
  shrink: [0, 0, 0],
  // sigma4
  xHeight: [0.431, 0.431, 0.431],
  // sigma5
  quad: [1, 1.171, 1.472],
  // sigma6
  extraSpace: [0, 0, 0],
  // sigma7
  num1: [0.677, 0.732, 0.925],
  // sigma8
  num2: [0.394, 0.384, 0.387],
  // sigma9
  num3: [0.444, 0.471, 0.504],
  // sigma10
  denom1: [0.686, 0.752, 1.025],
  // sigma11
  denom2: [0.345, 0.344, 0.532],
  // sigma12
  sup1: [0.413, 0.503, 0.504],
  // sigma13
  sup2: [0.363, 0.431, 0.404],
  // sigma14
  sup3: [0.289, 0.286, 0.294],
  // sigma15
  sub1: [0.15, 0.143, 0.2],
  // sigma16
  sub2: [0.247, 0.286, 0.4],
  // sigma17
  supDrop: [0.386, 0.353, 0.494],
  // sigma18
  subDrop: [0.05, 0.071, 0.1],
  // sigma19
  delim1: [2.39, 1.7, 1.98],
  // sigma20
  delim2: [1.01, 1.157, 1.42],
  // sigma21
  axisHeight: [0.25, 0.25, 0.25],
  // sigma22
  // These font metrics are extracted from TeX by using tftopl on cmex10.tfm;
  // they correspond to the font parameters of the extension fonts (family 3).
  // See the TeXbook, page 441. In AMSTeX, the extension fonts scale; to
  // match cmex7, we'd use cmex7.tfm values for script and scriptscript
  // values.
  defaultRuleThickness: [0.04, 0.049, 0.049],
  // xi8; cmex7: 0.049
  bigOpSpacing1: [0.111, 0.111, 0.111],
  // xi9
  bigOpSpacing2: [0.166, 0.166, 0.166],
  // xi10
  bigOpSpacing3: [0.2, 0.2, 0.2],
  // xi11
  bigOpSpacing4: [0.6, 0.611, 0.611],
  // xi12; cmex7: 0.611
  bigOpSpacing5: [0.1, 0.143, 0.143],
  // xi13; cmex7: 0.143
  // The \sqrt rule width is taken from the height of the surd character.
  // Since we use the same font at all sizes, this thickness doesn't scale.
  sqrtRuleThickness: [0.04, 0.04, 0.04],
  // This value determines how large a pt is, for metrics which are defined
  // in terms of pts.
  // This value is also used in katex.less; if you change it make sure the
  // values match.
  ptPerEm: [10, 10, 10],
  // The space between adjacent `|` columns in an array definition. From
  // `\showthe\doublerulesep` in LaTeX. Equals 2.0 / ptPerEm.
  doubleRuleSep: [0.2, 0.2, 0.2],
  // The width of separator lines in {array} environments. From
  // `\showthe\arrayrulewidth` in LaTeX. Equals 0.4 / ptPerEm.
  arrayRuleWidth: [0.04, 0.04, 0.04],
  // Two values from LaTeX source2e:
  fboxsep: [0.3, 0.3, 0.3],
  //        3 pt / ptPerEm
  fboxrule: [0.04, 0.04, 0.04]
  // 0.4 pt / ptPerEm
};
var extraCharacterMap = {
  // Latin-1
  "\xC5": "A",
  "\xD0": "D",
  "\xDE": "o",
  "\xE5": "a",
  "\xF0": "d",
  "\xFE": "o",
  // Cyrillic
  "\u0410": "A",
  "\u0411": "B",
  "\u0412": "B",
  "\u0413": "F",
  "\u0414": "A",
  "\u0415": "E",
  "\u0416": "K",
  "\u0417": "3",
  "\u0418": "N",
  "\u0419": "N",
  "\u041A": "K",
  "\u041B": "N",
  "\u041C": "M",
  "\u041D": "H",
  "\u041E": "O",
  "\u041F": "N",
  "\u0420": "P",
  "\u0421": "C",
  "\u0422": "T",
  "\u0423": "y",
  "\u0424": "O",
  "\u0425": "X",
  "\u0426": "U",
  "\u0427": "h",
  "\u0428": "W",
  "\u0429": "W",
  "\u042A": "B",
  "\u042B": "X",
  "\u042C": "B",
  "\u042D": "3",
  "\u042E": "X",
  "\u042F": "R",
  "\u0430": "a",
  "\u0431": "b",
  "\u0432": "a",
  "\u0433": "r",
  "\u0434": "y",
  "\u0435": "e",
  "\u0436": "m",
  "\u0437": "e",
  "\u0438": "n",
  "\u0439": "n",
  "\u043A": "n",
  "\u043B": "n",
  "\u043C": "m",
  "\u043D": "n",
  "\u043E": "o",
  "\u043F": "n",
  "\u0440": "p",
  "\u0441": "c",
  "\u0442": "o",
  "\u0443": "y",
  "\u0444": "b",
  "\u0445": "x",
  "\u0446": "n",
  "\u0447": "n",
  "\u0448": "w",
  "\u0449": "w",
  "\u044A": "a",
  "\u044B": "m",
  "\u044C": "a",
  "\u044D": "e",
  "\u044E": "m",
  "\u044F": "r"
};
function setFontMetrics(fontName, metrics) {
  fontMetricsData[fontName] = metrics;
}
function getCharacterMetrics(character, font, mode) {
  if (!fontMetricsData[font]) {
    throw new Error("Font metrics not found for font: " + font + ".");
  }
  var ch = character.charCodeAt(0);
  var metrics = fontMetricsData[font][ch];
  if (!metrics && character[0] in extraCharacterMap) {
    ch = extraCharacterMap[character[0]].charCodeAt(0);
    metrics = fontMetricsData[font][ch];
  }
  if (!metrics && mode === "text") {
    if (supportedCodepoint(ch)) {
      metrics = fontMetricsData[font][77];
    }
  }
  if (metrics) {
    return {
      depth: metrics[0],
      height: metrics[1],
      italic: metrics[2],
      skew: metrics[3],
      width: metrics[4]
    };
  }
}
var fontMetricsBySizeIndex = {};
function getGlobalMetrics(size) {
  var sizeIndex;
  if (size >= 5) {
    sizeIndex = 0;
  } else if (size >= 3) {
    sizeIndex = 1;
  } else {
    sizeIndex = 2;
  }
  if (!fontMetricsBySizeIndex[sizeIndex]) {
    var metrics = fontMetricsBySizeIndex[sizeIndex] = {
      cssEmPerMu: sigmasAndXis.quad[sizeIndex] / 18
    };
    for (var key2 in sigmasAndXis) {
      if (sigmasAndXis.hasOwnProperty(key2)) {
        metrics[key2] = sigmasAndXis[key2][sizeIndex];
      }
    }
  }
  return fontMetricsBySizeIndex[sizeIndex];
}
var sizeStyleMap = [
  // Each element contains [textsize, scriptsize, scriptscriptsize].
  // The size mappings are taken from TeX with \normalsize=10pt.
  [1, 1, 1],
  // size1: [5, 5, 5]              \tiny
  [2, 1, 1],
  // size2: [6, 5, 5]
  [3, 1, 1],
  // size3: [7, 5, 5]              \scriptsize
  [4, 2, 1],
  // size4: [8, 6, 5]              \footnotesize
  [5, 2, 1],
  // size5: [9, 6, 5]              \small
  [6, 3, 1],
  // size6: [10, 7, 5]             \normalsize
  [7, 4, 2],
  // size7: [12, 8, 6]             \large
  [8, 6, 3],
  // size8: [14.4, 10, 7]          \Large
  [9, 7, 6],
  // size9: [17.28, 12, 10]        \LARGE
  [10, 8, 7],
  // size10: [20.74, 14.4, 12]     \huge
  [11, 10, 9]
  // size11: [24.88, 20.74, 17.28] \HUGE
];
var sizeMultipliers = [
  // fontMetrics.js:getGlobalMetrics also uses size indexes, so if
  // you change size indexes, change that function.
  0.5,
  0.6,
  0.7,
  0.8,
  0.9,
  1,
  1.2,
  1.44,
  1.728,
  2.074,
  2.488
];
var sizeAtStyle = function sizeAtStyle2(size, style3) {
  return style3.size < 2 ? size : sizeStyleMap[size - 1][style3.size - 1];
};
var Options = class _Options {
  // A font family applies to a group of fonts (i.e. SansSerif), while a font
  // represents a specific font (i.e. SansSerif Bold).
  // See: https://tex.stackexchange.com/questions/22350/difference-between-textrm-and-mathrm
  /**
   * The base size index.
   */
  constructor(data) {
    this.style = void 0;
    this.color = void 0;
    this.size = void 0;
    this.textSize = void 0;
    this.phantom = void 0;
    this.font = void 0;
    this.fontFamily = void 0;
    this.fontWeight = void 0;
    this.fontShape = void 0;
    this.sizeMultiplier = void 0;
    this.maxSize = void 0;
    this.minRuleThickness = void 0;
    this._fontMetrics = void 0;
    this.style = data.style;
    this.color = data.color;
    this.size = data.size || _Options.BASESIZE;
    this.textSize = data.textSize || this.size;
    this.phantom = !!data.phantom;
    this.font = data.font || "";
    this.fontFamily = data.fontFamily || "";
    this.fontWeight = data.fontWeight || "";
    this.fontShape = data.fontShape || "";
    this.sizeMultiplier = sizeMultipliers[this.size - 1];
    this.maxSize = data.maxSize;
    this.minRuleThickness = data.minRuleThickness;
    this._fontMetrics = void 0;
  }
  /**
   * Returns a new options object with the same properties as "this".  Properties
   * from "extension" will be copied to the new options object.
   */
  extend(extension) {
    var data = {
      style: this.style,
      size: this.size,
      textSize: this.textSize,
      color: this.color,
      phantom: this.phantom,
      font: this.font,
      fontFamily: this.fontFamily,
      fontWeight: this.fontWeight,
      fontShape: this.fontShape,
      maxSize: this.maxSize,
      minRuleThickness: this.minRuleThickness
    };
    for (var key2 in extension) {
      if (extension.hasOwnProperty(key2)) {
        data[key2] = extension[key2];
      }
    }
    return new _Options(data);
  }
  /**
   * Return an options object with the given style. If `this.style === style`,
   * returns `this`.
   */
  havingStyle(style3) {
    if (this.style === style3) {
      return this;
    } else {
      return this.extend({
        style: style3,
        size: sizeAtStyle(this.textSize, style3)
      });
    }
  }
  /**
   * Return an options object with a cramped version of the current style. If
   * the current style is cramped, returns `this`.
   */
  havingCrampedStyle() {
    return this.havingStyle(this.style.cramp());
  }
  /**
   * Return an options object with the given size and in at least `\textstyle`.
   * Returns `this` if appropriate.
   */
  havingSize(size) {
    if (this.size === size && this.textSize === size) {
      return this;
    } else {
      return this.extend({
        style: this.style.text(),
        size,
        textSize: size,
        sizeMultiplier: sizeMultipliers[size - 1]
      });
    }
  }
  /**
   * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted,
   * changes to at least `\textstyle`.
   */
  havingBaseStyle(style3) {
    style3 = style3 || this.style.text();
    var wantSize = sizeAtStyle(_Options.BASESIZE, style3);
    if (this.size === wantSize && this.textSize === _Options.BASESIZE && this.style === style3) {
      return this;
    } else {
      return this.extend({
        style: style3,
        size: wantSize
      });
    }
  }
  /**
   * Remove the effect of sizing changes such as \Huge.
   * Keep the effect of the current style, such as \scriptstyle.
   */
  havingBaseSizing() {
    var size;
    switch (this.style.id) {
      case 4:
      case 5:
        size = 3;
        break;
      case 6:
      case 7:
        size = 1;
        break;
      default:
        size = 6;
    }
    return this.extend({
      style: this.style.text(),
      size
    });
  }
  /**
   * Create a new options object with the given color.
   */
  withColor(color2) {
    return this.extend({
      color: color2
    });
  }
  /**
   * Create a new options object with "phantom" set to true.
   */
  withPhantom() {
    return this.extend({
      phantom: true
    });
  }
  /**
   * Creates a new options object with the given math font or old text font.
   * @type {[type]}
   */
  withFont(font) {
    return this.extend({
      font
    });
  }
  /**
   * Create a new options objects with the given fontFamily.
   */
  withTextFontFamily(fontFamily) {
    return this.extend({
      fontFamily,
      font: ""
    });
  }
  /**
   * Creates a new options object with the given font weight
   */
  withTextFontWeight(fontWeight) {
    return this.extend({
      fontWeight,
      font: ""
    });
  }
  /**
   * Creates a new options object with the given font weight
   */
  withTextFontShape(fontShape) {
    return this.extend({
      fontShape,
      font: ""
    });
  }
  /**
   * Return the CSS sizing classes required to switch from enclosing options
   * `oldOptions` to `this`. Returns an array of classes.
   */
  sizingClasses(oldOptions) {
    if (oldOptions.size !== this.size) {
      return ["sizing", "reset-size" + oldOptions.size, "size" + this.size];
    } else {
      return [];
    }
  }
  /**
   * Return the CSS sizing classes required to switch to the base size. Like
   * `this.havingSize(BASESIZE).sizingClasses(this)`.
   */
  baseSizingClasses() {
    if (this.size !== _Options.BASESIZE) {
      return ["sizing", "reset-size" + this.size, "size" + _Options.BASESIZE];
    } else {
      return [];
    }
  }
  /**
   * Return the font metrics for this size.
   */
  fontMetrics() {
    if (!this._fontMetrics) {
      this._fontMetrics = getGlobalMetrics(this.size);
    }
    return this._fontMetrics;
  }
  /**
   * Gets the CSS color of the current options object
   */
  getColor() {
    if (this.phantom) {
      return "transparent";
    } else {
      return this.color;
    }
  }
};
Options.BASESIZE = 6;
var ptPerUnit = {
  // https://en.wikibooks.org/wiki/LaTeX/Lengths and
  // https://tex.stackexchange.com/a/8263
  "pt": 1,
  // TeX point
  "mm": 7227 / 2540,
  // millimeter
  "cm": 7227 / 254,
  // centimeter
  "in": 72.27,
  // inch
  "bp": 803 / 800,
  // big (PostScript) points
  "pc": 12,
  // pica
  "dd": 1238 / 1157,
  // didot
  "cc": 14856 / 1157,
  // cicero (12 didot)
  "nd": 685 / 642,
  // new didot
  "nc": 1370 / 107,
  // new cicero (12 new didot)
  "sp": 1 / 65536,
  // scaled point (TeX's internal smallest unit)
  // https://tex.stackexchange.com/a/41371
  "px": 803 / 800
  // \pdfpxdimen defaults to 1 bp in pdfTeX and LuaTeX
};
var relativeUnit = {
  "ex": true,
  "em": true,
  "mu": true
};
var validUnit = function validUnit2(unit) {
  if (typeof unit !== "string") {
    unit = unit.unit;
  }
  return unit in ptPerUnit || unit in relativeUnit || unit === "ex";
};
var calculateSize = function calculateSize2(sizeValue, options) {
  var scale;
  if (sizeValue.unit in ptPerUnit) {
    scale = ptPerUnit[sizeValue.unit] / options.fontMetrics().ptPerEm / options.sizeMultiplier;
  } else if (sizeValue.unit === "mu") {
    scale = options.fontMetrics().cssEmPerMu;
  } else {
    var unitOptions;
    if (options.style.isTight()) {
      unitOptions = options.havingStyle(options.style.text());
    } else {
      unitOptions = options;
    }
    if (sizeValue.unit === "ex") {
      scale = unitOptions.fontMetrics().xHeight;
    } else if (sizeValue.unit === "em") {
      scale = unitOptions.fontMetrics().quad;
    } else {
      throw new ParseError("Invalid unit: '" + sizeValue.unit + "'");
    }
    if (unitOptions !== options) {
      scale *= unitOptions.sizeMultiplier / options.sizeMultiplier;
    }
  }
  return Math.min(sizeValue.number * scale, options.maxSize);
};
var makeEm = function makeEm2(n) {
  return +n.toFixed(4) + "em";
};
var createClass = function createClass2(classes) {
  return classes.filter((cls) => cls).join(" ");
};
var initNode = function initNode2(classes, options, style3) {
  this.classes = classes || [];
  this.attributes = {};
  this.height = 0;
  this.depth = 0;
  this.maxFontSize = 0;
  this.style = style3 || {};
  if (options) {
    if (options.style.isTight()) {
      this.classes.push("mtight");
    }
    var color2 = options.getColor();
    if (color2) {
      this.style.color = color2;
    }
  }
};
var toNode = function toNode2(tagName) {
  var node3 = document.createElement(tagName);
  node3.className = createClass(this.classes);
  for (var style3 in this.style) {
    if (this.style.hasOwnProperty(style3)) {
      node3.style[style3] = this.style[style3];
    }
  }
  for (var attr in this.attributes) {
    if (this.attributes.hasOwnProperty(attr)) {
      node3.setAttribute(attr, this.attributes[attr]);
    }
  }
  for (var i2 = 0; i2 < this.children.length; i2++) {
    node3.appendChild(this.children[i2].toNode());
  }
  return node3;
};
var toMarkup = function toMarkup2(tagName) {
  var markup = "<" + tagName;
  if (this.classes.length) {
    markup += ' class="' + utils.escape(createClass(this.classes)) + '"';
  }
  var styles14 = "";
  for (var style3 in this.style) {
    if (this.style.hasOwnProperty(style3)) {
      styles14 += utils.hyphenate(style3) + ":" + this.style[style3] + ";";
    }
  }
  if (styles14) {
    markup += ' style="' + utils.escape(styles14) + '"';
  }
  for (var attr in this.attributes) {
    if (this.attributes.hasOwnProperty(attr)) {
      markup += " " + attr + '="' + utils.escape(this.attributes[attr]) + '"';
    }
  }
  markup += ">";
  for (var i2 = 0; i2 < this.children.length; i2++) {
    markup += this.children[i2].toMarkup();
  }
  markup += "</" + tagName + ">";
  return markup;
};
var Span = class {
  constructor(classes, children, options, style3) {
    this.children = void 0;
    this.attributes = void 0;
    this.classes = void 0;
    this.height = void 0;
    this.depth = void 0;
    this.width = void 0;
    this.maxFontSize = void 0;
    this.style = void 0;
    initNode.call(this, classes, options, style3);
    this.children = children || [];
  }
  /**
   * Sets an arbitrary attribute on the span. Warning: use this wisely. Not
   * all browsers support attributes the same, and having too many custom
   * attributes is probably bad.
   */
  setAttribute(attribute2, value) {
    this.attributes[attribute2] = value;
  }
  hasClass(className) {
    return utils.contains(this.classes, className);
  }
  toNode() {
    return toNode.call(this, "span");
  }
  toMarkup() {
    return toMarkup.call(this, "span");
  }
};
var Anchor = class {
  constructor(href, classes, children, options) {
    this.children = void 0;
    this.attributes = void 0;
    this.classes = void 0;
    this.height = void 0;
    this.depth = void 0;
    this.maxFontSize = void 0;
    this.style = void 0;
    initNode.call(this, classes, options);
    this.children = children || [];
    this.setAttribute("href", href);
  }
  setAttribute(attribute2, value) {
    this.attributes[attribute2] = value;
  }
  hasClass(className) {
    return utils.contains(this.classes, className);
  }
  toNode() {
    return toNode.call(this, "a");
  }
  toMarkup() {
    return toMarkup.call(this, "a");
  }
};
var Img = class {
  constructor(src, alt, style3) {
    this.src = void 0;
    this.alt = void 0;
    this.classes = void 0;
    this.height = void 0;
    this.depth = void 0;
    this.maxFontSize = void 0;
    this.style = void 0;
    this.alt = alt;
    this.src = src;
    this.classes = ["mord"];
    this.style = style3;
  }
  hasClass(className) {
    return utils.contains(this.classes, className);
  }
  toNode() {
    var node3 = document.createElement("img");
    node3.src = this.src;
    node3.alt = this.alt;
    node3.className = "mord";
    for (var style3 in this.style) {
      if (this.style.hasOwnProperty(style3)) {
        node3.style[style3] = this.style[style3];
      }
    }
    return node3;
  }
  toMarkup() {
    var markup = "<img  src='" + this.src + " 'alt='" + this.alt + "' ";
    var styles14 = "";
    for (var style3 in this.style) {
      if (this.style.hasOwnProperty(style3)) {
        styles14 += utils.hyphenate(style3) + ":" + this.style[style3] + ";";
      }
    }
    if (styles14) {
      markup += ' style="' + utils.escape(styles14) + '"';
    }
    markup += "'/>";
    return markup;
  }
};
var iCombinations = {
  "\xEE": "\u0131\u0302",
  "\xEF": "\u0131\u0308",
  "\xED": "\u0131\u0301",
  // 'ī': '\u0131\u0304', // enable when we add Extended Latin
  "\xEC": "\u0131\u0300"
};
var SymbolNode = class {
  constructor(text7, height2, depth, italic, skew, width, classes, style3) {
    this.text = void 0;
    this.height = void 0;
    this.depth = void 0;
    this.italic = void 0;
    this.skew = void 0;
    this.width = void 0;
    this.maxFontSize = void 0;
    this.classes = void 0;
    this.style = void 0;
    this.text = text7;
    this.height = height2 || 0;
    this.depth = depth || 0;
    this.italic = italic || 0;
    this.skew = skew || 0;
    this.width = width || 0;
    this.classes = classes || [];
    this.style = style3 || {};
    this.maxFontSize = 0;
    var script = scriptFromCodepoint(this.text.charCodeAt(0));
    if (script) {
      this.classes.push(script + "_fallback");
    }
    if (/[îïíì]/.test(this.text)) {
      this.text = iCombinations[this.text];
    }
  }
  hasClass(className) {
    return utils.contains(this.classes, className);
  }
  /**
   * Creates a text node or span from a symbol node. Note that a span is only
   * created if it is needed.
   */
  toNode() {
    var node3 = document.createTextNode(this.text);
    var span = null;
    if (this.italic > 0) {
      span = document.createElement("span");
      span.style.marginRight = makeEm(this.italic);
    }
    if (this.classes.length > 0) {
      span = span || document.createElement("span");
      span.className = createClass(this.classes);
    }
    for (var style3 in this.style) {
      if (this.style.hasOwnProperty(style3)) {
        span = span || document.createElement("span");
        span.style[style3] = this.style[style3];
      }
    }
    if (span) {
      span.appendChild(node3);
      return span;
    } else {
      return node3;
    }
  }
  /**
   * Creates markup for a symbol node.
   */
  toMarkup() {
    var needsSpan = false;
    var markup = "<span";
    if (this.classes.length) {
      needsSpan = true;
      markup += ' class="';
      markup += utils.escape(createClass(this.classes));
      markup += '"';
    }
    var styles14 = "";
    if (this.italic > 0) {
      styles14 += "margin-right:" + this.italic + "em;";
    }
    for (var style3 in this.style) {
      if (this.style.hasOwnProperty(style3)) {
        styles14 += utils.hyphenate(style3) + ":" + this.style[style3] + ";";
      }
    }
    if (styles14) {
      needsSpan = true;
      markup += ' style="' + utils.escape(styles14) + '"';
    }
    var escaped = utils.escape(this.text);
    if (needsSpan) {
      markup += ">";
      markup += escaped;
      markup += "</span>";
      return markup;
    } else {
      return escaped;
    }
  }
};
var SvgNode = class {
  constructor(children, attributes) {
    this.children = void 0;
    this.attributes = void 0;
    this.children = children || [];
    this.attributes = attributes || {};
  }
  toNode() {
    var svgNS = "http://www.w3.org/2000/svg";
    var node3 = document.createElementNS(svgNS, "svg");
    for (var attr in this.attributes) {
      if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
        node3.setAttribute(attr, this.attributes[attr]);
      }
    }
    for (var i2 = 0; i2 < this.children.length; i2++) {
      node3.appendChild(this.children[i2].toNode());
    }
    return node3;
  }
  toMarkup() {
    var markup = '<svg xmlns="http://www.w3.org/2000/svg"';
    for (var attr in this.attributes) {
      if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
        markup += " " + attr + "='" + this.attributes[attr] + "'";
      }
    }
    markup += ">";
    for (var i2 = 0; i2 < this.children.length; i2++) {
      markup += this.children[i2].toMarkup();
    }
    markup += "</svg>";
    return markup;
  }
};
var PathNode = class {
  constructor(pathName, alternate) {
    this.pathName = void 0;
    this.alternate = void 0;
    this.pathName = pathName;
    this.alternate = alternate;
  }
  toNode() {
    var svgNS = "http://www.w3.org/2000/svg";
    var node3 = document.createElementNS(svgNS, "path");
    if (this.alternate) {
      node3.setAttribute("d", this.alternate);
    } else {
      node3.setAttribute("d", path3[this.pathName]);
    }
    return node3;
  }
  toMarkup() {
    if (this.alternate) {
      return "<path d='" + this.alternate + "'/>";
    } else {
      return "<path d='" + path3[this.pathName] + "'/>";
    }
  }
};
var LineNode = class {
  constructor(attributes) {
    this.attributes = void 0;
    this.attributes = attributes || {};
  }
  toNode() {
    var svgNS = "http://www.w3.org/2000/svg";
    var node3 = document.createElementNS(svgNS, "line");
    for (var attr in this.attributes) {
      if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
        node3.setAttribute(attr, this.attributes[attr]);
      }
    }
    return node3;
  }
  toMarkup() {
    var markup = "<line";
    for (var attr in this.attributes) {
      if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
        markup += " " + attr + "='" + this.attributes[attr] + "'";
      }
    }
    markup += "/>";
    return markup;
  }
};
function assertSymbolDomNode(group3) {
  if (group3 instanceof SymbolNode) {
    return group3;
  } else {
    throw new Error("Expected symbolNode but got " + String(group3) + ".");
  }
}
function assertSpan(group3) {
  if (group3 instanceof Span) {
    return group3;
  } else {
    throw new Error("Expected span<HtmlDomNode> but got " + String(group3) + ".");
  }
}
var ATOMS = {
  "bin": 1,
  "close": 1,
  "inner": 1,
  "open": 1,
  "punct": 1,
  "rel": 1
};
var NON_ATOMS = {
  "accent-token": 1,
  "mathord": 1,
  "op-token": 1,
  "spacing": 1,
  "textord": 1
};
var symbols = {
  "math": {},
  "text": {}
};
function defineSymbol(mode, font, group3, replace, name3, acceptUnicodeChar) {
  symbols[mode][name3] = {
    font,
    group: group3,
    replace
  };
  if (acceptUnicodeChar && replace) {
    symbols[mode][replace] = symbols[mode][name3];
  }
}
var math2 = "math";
var text4 = "text";
var main = "main";
var ams = "ams";
var accent = "accent-token";
var bin = "bin";
var close = "close";
var inner = "inner";
var mathord = "mathord";
var op = "op-token";
var open = "open";
var punct = "punct";
var rel = "rel";
var spacing = "spacing";
var textord = "textord";
defineSymbol(math2, main, rel, "\u2261", "\\equiv", true);
defineSymbol(math2, main, rel, "\u227A", "\\prec", true);
defineSymbol(math2, main, rel, "\u227B", "\\succ", true);
defineSymbol(math2, main, rel, "\u223C", "\\sim", true);
defineSymbol(math2, main, rel, "\u22A5", "\\perp");
defineSymbol(math2, main, rel, "\u2AAF", "\\preceq", true);
defineSymbol(math2, main, rel, "\u2AB0", "\\succeq", true);
defineSymbol(math2, main, rel, "\u2243", "\\simeq", true);
defineSymbol(math2, main, rel, "\u2223", "\\mid", true);
defineSymbol(math2, main, rel, "\u226A", "\\ll", true);
defineSymbol(math2, main, rel, "\u226B", "\\gg", true);
defineSymbol(math2, main, rel, "\u224D", "\\asymp", true);
defineSymbol(math2, main, rel, "\u2225", "\\parallel");
defineSymbol(math2, main, rel, "\u22C8", "\\bowtie", true);
defineSymbol(math2, main, rel, "\u2323", "\\smile", true);
defineSymbol(math2, main, rel, "\u2291", "\\sqsubseteq", true);
defineSymbol(math2, main, rel, "\u2292", "\\sqsupseteq", true);
defineSymbol(math2, main, rel, "\u2250", "\\doteq", true);
defineSymbol(math2, main, rel, "\u2322", "\\frown", true);
defineSymbol(math2, main, rel, "\u220B", "\\ni", true);
defineSymbol(math2, main, rel, "\u221D", "\\propto", true);
defineSymbol(math2, main, rel, "\u22A2", "\\vdash", true);
defineSymbol(math2, main, rel, "\u22A3", "\\dashv", true);
defineSymbol(math2, main, rel, "\u220B", "\\owns");
defineSymbol(math2, main, punct, ".", "\\ldotp");
defineSymbol(math2, main, punct, "\u22C5", "\\cdotp");
defineSymbol(math2, main, textord, "#", "\\#");
defineSymbol(text4, main, textord, "#", "\\#");
defineSymbol(math2, main, textord, "&", "\\&");
defineSymbol(text4, main, textord, "&", "\\&");
defineSymbol(math2, main, textord, "\u2135", "\\aleph", true);
defineSymbol(math2, main, textord, "\u2200", "\\forall", true);
defineSymbol(math2, main, textord, "\u210F", "\\hbar", true);
defineSymbol(math2, main, textord, "\u2203", "\\exists", true);
defineSymbol(math2, main, textord, "\u2207", "\\nabla", true);
defineSymbol(math2, main, textord, "\u266D", "\\flat", true);
defineSymbol(math2, main, textord, "\u2113", "\\ell", true);
defineSymbol(math2, main, textord, "\u266E", "\\natural", true);
defineSymbol(math2, main, textord, "\u2663", "\\clubsuit", true);
defineSymbol(math2, main, textord, "\u2118", "\\wp", true);
defineSymbol(math2, main, textord, "\u266F", "\\sharp", true);
defineSymbol(math2, main, textord, "\u2662", "\\diamondsuit", true);
defineSymbol(math2, main, textord, "\u211C", "\\Re", true);
defineSymbol(math2, main, textord, "\u2661", "\\heartsuit", true);
defineSymbol(math2, main, textord, "\u2111", "\\Im", true);
defineSymbol(math2, main, textord, "\u2660", "\\spadesuit", true);
defineSymbol(math2, main, textord, "\xA7", "\\S", true);
defineSymbol(text4, main, textord, "\xA7", "\\S");
defineSymbol(math2, main, textord, "\xB6", "\\P", true);
defineSymbol(text4, main, textord, "\xB6", "\\P");
defineSymbol(math2, main, textord, "\u2020", "\\dag");
defineSymbol(text4, main, textord, "\u2020", "\\dag");
defineSymbol(text4, main, textord, "\u2020", "\\textdagger");
defineSymbol(math2, main, textord, "\u2021", "\\ddag");
defineSymbol(text4, main, textord, "\u2021", "\\ddag");
defineSymbol(text4, main, textord, "\u2021", "\\textdaggerdbl");
defineSymbol(math2, main, close, "\u23B1", "\\rmoustache", true);
defineSymbol(math2, main, open, "\u23B0", "\\lmoustache", true);
defineSymbol(math2, main, close, "\u27EF", "\\rgroup", true);
defineSymbol(math2, main, open, "\u27EE", "\\lgroup", true);
defineSymbol(math2, main, bin, "\u2213", "\\mp", true);
defineSymbol(math2, main, bin, "\u2296", "\\ominus", true);
defineSymbol(math2, main, bin, "\u228E", "\\uplus", true);
defineSymbol(math2, main, bin, "\u2293", "\\sqcap", true);
defineSymbol(math2, main, bin, "\u2217", "\\ast");
defineSymbol(math2, main, bin, "\u2294", "\\sqcup", true);
defineSymbol(math2, main, bin, "\u25EF", "\\bigcirc", true);
defineSymbol(math2, main, bin, "\u2219", "\\bullet", true);
defineSymbol(math2, main, bin, "\u2021", "\\ddagger");
defineSymbol(math2, main, bin, "\u2240", "\\wr", true);
defineSymbol(math2, main, bin, "\u2A3F", "\\amalg");
defineSymbol(math2, main, bin, "&", "\\And");
defineSymbol(math2, main, rel, "\u27F5", "\\longleftarrow", true);
defineSymbol(math2, main, rel, "\u21D0", "\\Leftarrow", true);
defineSymbol(math2, main, rel, "\u27F8", "\\Longleftarrow", true);
defineSymbol(math2, main, rel, "\u27F6", "\\longrightarrow", true);
defineSymbol(math2, main, rel, "\u21D2", "\\Rightarrow", true);
defineSymbol(math2, main, rel, "\u27F9", "\\Longrightarrow", true);
defineSymbol(math2, main, rel, "\u2194", "\\leftrightarrow", true);
defineSymbol(math2, main, rel, "\u27F7", "\\longleftrightarrow", true);
defineSymbol(math2, main, rel, "\u21D4", "\\Leftrightarrow", true);
defineSymbol(math2, main, rel, "\u27FA", "\\Longleftrightarrow", true);
defineSymbol(math2, main, rel, "\u21A6", "\\mapsto", true);
defineSymbol(math2, main, rel, "\u27FC", "\\longmapsto", true);
defineSymbol(math2, main, rel, "\u2197", "\\nearrow", true);
defineSymbol(math2, main, rel, "\u21A9", "\\hookleftarrow", true);
defineSymbol(math2, main, rel, "\u21AA", "\\hookrightarrow", true);
defineSymbol(math2, main, rel, "\u2198", "\\searrow", true);
defineSymbol(math2, main, rel, "\u21BC", "\\leftharpoonup", true);
defineSymbol(math2, main, rel, "\u21C0", "\\rightharpoonup", true);
defineSymbol(math2, main, rel, "\u2199", "\\swarrow", true);
defineSymbol(math2, main, rel, "\u21BD", "\\leftharpoondown", true);
defineSymbol(math2, main, rel, "\u21C1", "\\rightharpoondown", true);
defineSymbol(math2, main, rel, "\u2196", "\\nwarrow", true);
defineSymbol(math2, main, rel, "\u21CC", "\\rightleftharpoons", true);
defineSymbol(math2, ams, rel, "\u226E", "\\nless", true);
defineSymbol(math2, ams, rel, "\uE010", "\\@nleqslant");
defineSymbol(math2, ams, rel, "\uE011", "\\@nleqq");
defineSymbol(math2, ams, rel, "\u2A87", "\\lneq", true);
defineSymbol(math2, ams, rel, "\u2268", "\\lneqq", true);
defineSymbol(math2, ams, rel, "\uE00C", "\\@lvertneqq");
defineSymbol(math2, ams, rel, "\u22E6", "\\lnsim", true);
defineSymbol(math2, ams, rel, "\u2A89", "\\lnapprox", true);
defineSymbol(math2, ams, rel, "\u2280", "\\nprec", true);
defineSymbol(math2, ams, rel, "\u22E0", "\\npreceq", true);
defineSymbol(math2, ams, rel, "\u22E8", "\\precnsim", true);
defineSymbol(math2, ams, rel, "\u2AB9", "\\precnapprox", true);
defineSymbol(math2, ams, rel, "\u2241", "\\nsim", true);
defineSymbol(math2, ams, rel, "\uE006", "\\@nshortmid");
defineSymbol(math2, ams, rel, "\u2224", "\\nmid", true);
defineSymbol(math2, ams, rel, "\u22AC", "\\nvdash", true);
defineSymbol(math2, ams, rel, "\u22AD", "\\nvDash", true);
defineSymbol(math2, ams, rel, "\u22EA", "\\ntriangleleft");
defineSymbol(math2, ams, rel, "\u22EC", "\\ntrianglelefteq", true);
defineSymbol(math2, ams, rel, "\u228A", "\\subsetneq", true);
defineSymbol(math2, ams, rel, "\uE01A", "\\@varsubsetneq");
defineSymbol(math2, ams, rel, "\u2ACB", "\\subsetneqq", true);
defineSymbol(math2, ams, rel, "\uE017", "\\@varsubsetneqq");
defineSymbol(math2, ams, rel, "\u226F", "\\ngtr", true);
defineSymbol(math2, ams, rel, "\uE00F", "\\@ngeqslant");
defineSymbol(math2, ams, rel, "\uE00E", "\\@ngeqq");
defineSymbol(math2, ams, rel, "\u2A88", "\\gneq", true);
defineSymbol(math2, ams, rel, "\u2269", "\\gneqq", true);
defineSymbol(math2, ams, rel, "\uE00D", "\\@gvertneqq");
defineSymbol(math2, ams, rel, "\u22E7", "\\gnsim", true);
defineSymbol(math2, ams, rel, "\u2A8A", "\\gnapprox", true);
defineSymbol(math2, ams, rel, "\u2281", "\\nsucc", true);
defineSymbol(math2, ams, rel, "\u22E1", "\\nsucceq", true);
defineSymbol(math2, ams, rel, "\u22E9", "\\succnsim", true);
defineSymbol(math2, ams, rel, "\u2ABA", "\\succnapprox", true);
defineSymbol(math2, ams, rel, "\u2246", "\\ncong", true);
defineSymbol(math2, ams, rel, "\uE007", "\\@nshortparallel");
defineSymbol(math2, ams, rel, "\u2226", "\\nparallel", true);
defineSymbol(math2, ams, rel, "\u22AF", "\\nVDash", true);
defineSymbol(math2, ams, rel, "\u22EB", "\\ntriangleright");
defineSymbol(math2, ams, rel, "\u22ED", "\\ntrianglerighteq", true);
defineSymbol(math2, ams, rel, "\uE018", "\\@nsupseteqq");
defineSymbol(math2, ams, rel, "\u228B", "\\supsetneq", true);
defineSymbol(math2, ams, rel, "\uE01B", "\\@varsupsetneq");
defineSymbol(math2, ams, rel, "\u2ACC", "\\supsetneqq", true);
defineSymbol(math2, ams, rel, "\uE019", "\\@varsupsetneqq");
defineSymbol(math2, ams, rel, "\u22AE", "\\nVdash", true);
defineSymbol(math2, ams, rel, "\u2AB5", "\\precneqq", true);
defineSymbol(math2, ams, rel, "\u2AB6", "\\succneqq", true);
defineSymbol(math2, ams, rel, "\uE016", "\\@nsubseteqq");
defineSymbol(math2, ams, bin, "\u22B4", "\\unlhd");
defineSymbol(math2, ams, bin, "\u22B5", "\\unrhd");
defineSymbol(math2, ams, rel, "\u219A", "\\nleftarrow", true);
defineSymbol(math2, ams, rel, "\u219B", "\\nrightarrow", true);
defineSymbol(math2, ams, rel, "\u21CD", "\\nLeftarrow", true);
defineSymbol(math2, ams, rel, "\u21CF", "\\nRightarrow", true);
defineSymbol(math2, ams, rel, "\u21AE", "\\nleftrightarrow", true);
defineSymbol(math2, ams, rel, "\u21CE", "\\nLeftrightarrow", true);
defineSymbol(math2, ams, rel, "\u25B3", "\\vartriangle");
defineSymbol(math2, ams, textord, "\u210F", "\\hslash");
defineSymbol(math2, ams, textord, "\u25BD", "\\triangledown");
defineSymbol(math2, ams, textord, "\u25CA", "\\lozenge");
defineSymbol(math2, ams, textord, "\u24C8", "\\circledS");
defineSymbol(math2, ams, textord, "\xAE", "\\circledR");
defineSymbol(text4, ams, textord, "\xAE", "\\circledR");
defineSymbol(math2, ams, textord, "\u2221", "\\measuredangle", true);
defineSymbol(math2, ams, textord, "\u2204", "\\nexists");
defineSymbol(math2, ams, textord, "\u2127", "\\mho");
defineSymbol(math2, ams, textord, "\u2132", "\\Finv", true);
defineSymbol(math2, ams, textord, "\u2141", "\\Game", true);
defineSymbol(math2, ams, textord, "\u2035", "\\backprime");
defineSymbol(math2, ams, textord, "\u25B2", "\\blacktriangle");
defineSymbol(math2, ams, textord, "\u25BC", "\\blacktriangledown");
defineSymbol(math2, ams, textord, "\u25A0", "\\blacksquare");
defineSymbol(math2, ams, textord, "\u29EB", "\\blacklozenge");
defineSymbol(math2, ams, textord, "\u2605", "\\bigstar");
defineSymbol(math2, ams, textord, "\u2222", "\\sphericalangle", true);
defineSymbol(math2, ams, textord, "\u2201", "\\complement", true);
defineSymbol(math2, ams, textord, "\xF0", "\\eth", true);
defineSymbol(text4, main, textord, "\xF0", "\xF0");
defineSymbol(math2, ams, textord, "\u2571", "\\diagup");
defineSymbol(math2, ams, textord, "\u2572", "\\diagdown");
defineSymbol(math2, ams, textord, "\u25A1", "\\square");
defineSymbol(math2, ams, textord, "\u25A1", "\\Box");
defineSymbol(math2, ams, textord, "\u25CA", "\\Diamond");
defineSymbol(math2, ams, textord, "\xA5", "\\yen", true);
defineSymbol(text4, ams, textord, "\xA5", "\\yen", true);
defineSymbol(math2, ams, textord, "\u2713", "\\checkmark", true);
defineSymbol(text4, ams, textord, "\u2713", "\\checkmark");
defineSymbol(math2, ams, textord, "\u2136", "\\beth", true);
defineSymbol(math2, ams, textord, "\u2138", "\\daleth", true);
defineSymbol(math2, ams, textord, "\u2137", "\\gimel", true);
defineSymbol(math2, ams, textord, "\u03DD", "\\digamma", true);
defineSymbol(math2, ams, textord, "\u03F0", "\\varkappa");
defineSymbol(math2, ams, open, "\u250C", "\\@ulcorner", true);
defineSymbol(math2, ams, close, "\u2510", "\\@urcorner", true);
defineSymbol(math2, ams, open, "\u2514", "\\@llcorner", true);
defineSymbol(math2, ams, close, "\u2518", "\\@lrcorner", true);
defineSymbol(math2, ams, rel, "\u2266", "\\leqq", true);
defineSymbol(math2, ams, rel, "\u2A7D", "\\leqslant", true);
defineSymbol(math2, ams, rel, "\u2A95", "\\eqslantless", true);
defineSymbol(math2, ams, rel, "\u2272", "\\lesssim", true);
defineSymbol(math2, ams, rel, "\u2A85", "\\lessapprox", true);
defineSymbol(math2, ams, rel, "\u224A", "\\approxeq", true);
defineSymbol(math2, ams, bin, "\u22D6", "\\lessdot");
defineSymbol(math2, ams, rel, "\u22D8", "\\lll", true);
defineSymbol(math2, ams, rel, "\u2276", "\\lessgtr", true);
defineSymbol(math2, ams, rel, "\u22DA", "\\lesseqgtr", true);
defineSymbol(math2, ams, rel, "\u2A8B", "\\lesseqqgtr", true);
defineSymbol(math2, ams, rel, "\u2251", "\\doteqdot");
defineSymbol(math2, ams, rel, "\u2253", "\\risingdotseq", true);
defineSymbol(math2, ams, rel, "\u2252", "\\fallingdotseq", true);
defineSymbol(math2, ams, rel, "\u223D", "\\backsim", true);
defineSymbol(math2, ams, rel, "\u22CD", "\\backsimeq", true);
defineSymbol(math2, ams, rel, "\u2AC5", "\\subseteqq", true);
defineSymbol(math2, ams, rel, "\u22D0", "\\Subset", true);
defineSymbol(math2, ams, rel, "\u228F", "\\sqsubset", true);
defineSymbol(math2, ams, rel, "\u227C", "\\preccurlyeq", true);
defineSymbol(math2, ams, rel, "\u22DE", "\\curlyeqprec", true);
defineSymbol(math2, ams, rel, "\u227E", "\\precsim", true);
defineSymbol(math2, ams, rel, "\u2AB7", "\\precapprox", true);
defineSymbol(math2, ams, rel, "\u22B2", "\\vartriangleleft");
defineSymbol(math2, ams, rel, "\u22B4", "\\trianglelefteq");
defineSymbol(math2, ams, rel, "\u22A8", "\\vDash", true);
defineSymbol(math2, ams, rel, "\u22AA", "\\Vvdash", true);
defineSymbol(math2, ams, rel, "\u2323", "\\smallsmile");
defineSymbol(math2, ams, rel, "\u2322", "\\smallfrown");
defineSymbol(math2, ams, rel, "\u224F", "\\bumpeq", true);
defineSymbol(math2, ams, rel, "\u224E", "\\Bumpeq", true);
defineSymbol(math2, ams, rel, "\u2267", "\\geqq", true);
defineSymbol(math2, ams, rel, "\u2A7E", "\\geqslant", true);
defineSymbol(math2, ams, rel, "\u2A96", "\\eqslantgtr", true);
defineSymbol(math2, ams, rel, "\u2273", "\\gtrsim", true);
defineSymbol(math2, ams, rel, "\u2A86", "\\gtrapprox", true);
defineSymbol(math2, ams, bin, "\u22D7", "\\gtrdot");
defineSymbol(math2, ams, rel, "\u22D9", "\\ggg", true);
defineSymbol(math2, ams, rel, "\u2277", "\\gtrless", true);
defineSymbol(math2, ams, rel, "\u22DB", "\\gtreqless", true);
defineSymbol(math2, ams, rel, "\u2A8C", "\\gtreqqless", true);
defineSymbol(math2, ams, rel, "\u2256", "\\eqcirc", true);
defineSymbol(math2, ams, rel, "\u2257", "\\circeq", true);
defineSymbol(math2, ams, rel, "\u225C", "\\triangleq", true);
defineSymbol(math2, ams, rel, "\u223C", "\\thicksim");
defineSymbol(math2, ams, rel, "\u2248", "\\thickapprox");
defineSymbol(math2, ams, rel, "\u2AC6", "\\supseteqq", true);
defineSymbol(math2, ams, rel, "\u22D1", "\\Supset", true);
defineSymbol(math2, ams, rel, "\u2290", "\\sqsupset", true);
defineSymbol(math2, ams, rel, "\u227D", "\\succcurlyeq", true);
defineSymbol(math2, ams, rel, "\u22DF", "\\curlyeqsucc", true);
defineSymbol(math2, ams, rel, "\u227F", "\\succsim", true);
defineSymbol(math2, ams, rel, "\u2AB8", "\\succapprox", true);
defineSymbol(math2, ams, rel, "\u22B3", "\\vartriangleright");
defineSymbol(math2, ams, rel, "\u22B5", "\\trianglerighteq");
defineSymbol(math2, ams, rel, "\u22A9", "\\Vdash", true);
defineSymbol(math2, ams, rel, "\u2223", "\\shortmid");
defineSymbol(math2, ams, rel, "\u2225", "\\shortparallel");
defineSymbol(math2, ams, rel, "\u226C", "\\between", true);
defineSymbol(math2, ams, rel, "\u22D4", "\\pitchfork", true);
defineSymbol(math2, ams, rel, "\u221D", "\\varpropto");
defineSymbol(math2, ams, rel, "\u25C0", "\\blacktriangleleft");
defineSymbol(math2, ams, rel, "\u2234", "\\therefore", true);
defineSymbol(math2, ams, rel, "\u220D", "\\backepsilon");
defineSymbol(math2, ams, rel, "\u25B6", "\\blacktriangleright");
defineSymbol(math2, ams, rel, "\u2235", "\\because", true);
defineSymbol(math2, ams, rel, "\u22D8", "\\llless");
defineSymbol(math2, ams, rel, "\u22D9", "\\gggtr");
defineSymbol(math2, ams, bin, "\u22B2", "\\lhd");
defineSymbol(math2, ams, bin, "\u22B3", "\\rhd");
defineSymbol(math2, ams, rel, "\u2242", "\\eqsim", true);
defineSymbol(math2, main, rel, "\u22C8", "\\Join");
defineSymbol(math2, ams, rel, "\u2251", "\\Doteq", true);
defineSymbol(math2, ams, bin, "\u2214", "\\dotplus", true);
defineSymbol(math2, ams, bin, "\u2216", "\\smallsetminus");
defineSymbol(math2, ams, bin, "\u22D2", "\\Cap", true);
defineSymbol(math2, ams, bin, "\u22D3", "\\Cup", true);
defineSymbol(math2, ams, bin, "\u2A5E", "\\doublebarwedge", true);
defineSymbol(math2, ams, bin, "\u229F", "\\boxminus", true);
defineSymbol(math2, ams, bin, "\u229E", "\\boxplus", true);
defineSymbol(math2, ams, bin, "\u22C7", "\\divideontimes", true);
defineSymbol(math2, ams, bin, "\u22C9", "\\ltimes", true);
defineSymbol(math2, ams, bin, "\u22CA", "\\rtimes", true);
defineSymbol(math2, ams, bin, "\u22CB", "\\leftthreetimes", true);
defineSymbol(math2, ams, bin, "\u22CC", "\\rightthreetimes", true);
defineSymbol(math2, ams, bin, "\u22CF", "\\curlywedge", true);
defineSymbol(math2, ams, bin, "\u22CE", "\\curlyvee", true);
defineSymbol(math2, ams, bin, "\u229D", "\\circleddash", true);
defineSymbol(math2, ams, bin, "\u229B", "\\circledast", true);
defineSymbol(math2, ams, bin, "\u22C5", "\\centerdot");
defineSymbol(math2, ams, bin, "\u22BA", "\\intercal", true);
defineSymbol(math2, ams, bin, "\u22D2", "\\doublecap");
defineSymbol(math2, ams, bin, "\u22D3", "\\doublecup");
defineSymbol(math2, ams, bin, "\u22A0", "\\boxtimes", true);
defineSymbol(math2, ams, rel, "\u21E2", "\\dashrightarrow", true);
defineSymbol(math2, ams, rel, "\u21E0", "\\dashleftarrow", true);
defineSymbol(math2, ams, rel, "\u21C7", "\\leftleftarrows", true);
defineSymbol(math2, ams, rel, "\u21C6", "\\leftrightarrows", true);
defineSymbol(math2, ams, rel, "\u21DA", "\\Lleftarrow", true);
defineSymbol(math2, ams, rel, "\u219E", "\\twoheadleftarrow", true);
defineSymbol(math2, ams, rel, "\u21A2", "\\leftarrowtail", true);
defineSymbol(math2, ams, rel, "\u21AB", "\\looparrowleft", true);
defineSymbol(math2, ams, rel, "\u21CB", "\\leftrightharpoons", true);
defineSymbol(math2, ams, rel, "\u21B6", "\\curvearrowleft", true);
defineSymbol(math2, ams, rel, "\u21BA", "\\circlearrowleft", true);
defineSymbol(math2, ams, rel, "\u21B0", "\\Lsh", true);
defineSymbol(math2, ams, rel, "\u21C8", "\\upuparrows", true);
defineSymbol(math2, ams, rel, "\u21BF", "\\upharpoonleft", true);
defineSymbol(math2, ams, rel, "\u21C3", "\\downharpoonleft", true);
defineSymbol(math2, main, rel, "\u22B6", "\\origof", true);
defineSymbol(math2, main, rel, "\u22B7", "\\imageof", true);
defineSymbol(math2, ams, rel, "\u22B8", "\\multimap", true);
defineSymbol(math2, ams, rel, "\u21AD", "\\leftrightsquigarrow", true);
defineSymbol(math2, ams, rel, "\u21C9", "\\rightrightarrows", true);
defineSymbol(math2, ams, rel, "\u21C4", "\\rightleftarrows", true);
defineSymbol(math2, ams, rel, "\u21A0", "\\twoheadrightarrow", true);
defineSymbol(math2, ams, rel, "\u21A3", "\\rightarrowtail", true);
defineSymbol(math2, ams, rel, "\u21AC", "\\looparrowright", true);
defineSymbol(math2, ams, rel, "\u21B7", "\\curvearrowright", true);
defineSymbol(math2, ams, rel, "\u21BB", "\\circlearrowright", true);
defineSymbol(math2, ams, rel, "\u21B1", "\\Rsh", true);
defineSymbol(math2, ams, rel, "\u21CA", "\\downdownarrows", true);
defineSymbol(math2, ams, rel, "\u21BE", "\\upharpoonright", true);
defineSymbol(math2, ams, rel, "\u21C2", "\\downharpoonright", true);
defineSymbol(math2, ams, rel, "\u21DD", "\\rightsquigarrow", true);
defineSymbol(math2, ams, rel, "\u21DD", "\\leadsto");
defineSymbol(math2, ams, rel, "\u21DB", "\\Rrightarrow", true);
defineSymbol(math2, ams, rel, "\u21BE", "\\restriction");
defineSymbol(math2, main, textord, "\u2018", "`");
defineSymbol(math2, main, textord, "$", "\\$");
defineSymbol(text4, main, textord, "$", "\\$");
defineSymbol(text4, main, textord, "$", "\\textdollar");
defineSymbol(math2, main, textord, "%", "\\%");
defineSymbol(text4, main, textord, "%", "\\%");
defineSymbol(math2, main, textord, "_", "\\_");
defineSymbol(text4, main, textord, "_", "\\_");
defineSymbol(text4, main, textord, "_", "\\textunderscore");
defineSymbol(math2, main, textord, "\u2220", "\\angle", true);
defineSymbol(math2, main, textord, "\u221E", "\\infty", true);
defineSymbol(math2, main, textord, "\u2032", "\\prime");
defineSymbol(math2, main, textord, "\u25B3", "\\triangle");
defineSymbol(math2, main, textord, "\u0393", "\\Gamma", true);
defineSymbol(math2, main, textord, "\u0394", "\\Delta", true);
defineSymbol(math2, main, textord, "\u0398", "\\Theta", true);
defineSymbol(math2, main, textord, "\u039B", "\\Lambda", true);
defineSymbol(math2, main, textord, "\u039E", "\\Xi", true);
defineSymbol(math2, main, textord, "\u03A0", "\\Pi", true);
defineSymbol(math2, main, textord, "\u03A3", "\\Sigma", true);
defineSymbol(math2, main, textord, "\u03A5", "\\Upsilon", true);
defineSymbol(math2, main, textord, "\u03A6", "\\Phi", true);
defineSymbol(math2, main, textord, "\u03A8", "\\Psi", true);
defineSymbol(math2, main, textord, "\u03A9", "\\Omega", true);
defineSymbol(math2, main, textord, "A", "\u0391");
defineSymbol(math2, main, textord, "B", "\u0392");
defineSymbol(math2, main, textord, "E", "\u0395");
defineSymbol(math2, main, textord, "Z", "\u0396");
defineSymbol(math2, main, textord, "H", "\u0397");
defineSymbol(math2, main, textord, "I", "\u0399");
defineSymbol(math2, main, textord, "K", "\u039A");
defineSymbol(math2, main, textord, "M", "\u039C");
defineSymbol(math2, main, textord, "N", "\u039D");
defineSymbol(math2, main, textord, "O", "\u039F");
defineSymbol(math2, main, textord, "P", "\u03A1");
defineSymbol(math2, main, textord, "T", "\u03A4");
defineSymbol(math2, main, textord, "X", "\u03A7");
defineSymbol(math2, main, textord, "\xAC", "\\neg", true);
defineSymbol(math2, main, textord, "\xAC", "\\lnot");
defineSymbol(math2, main, textord, "\u22A4", "\\top");
defineSymbol(math2, main, textord, "\u22A5", "\\bot");
defineSymbol(math2, main, textord, "\u2205", "\\emptyset");
defineSymbol(math2, ams, textord, "\u2205", "\\varnothing");
defineSymbol(math2, main, mathord, "\u03B1", "\\alpha", true);
defineSymbol(math2, main, mathord, "\u03B2", "\\beta", true);
defineSymbol(math2, main, mathord, "\u03B3", "\\gamma", true);
defineSymbol(math2, main, mathord, "\u03B4", "\\delta", true);
defineSymbol(math2, main, mathord, "\u03F5", "\\epsilon", true);
defineSymbol(math2, main, mathord, "\u03B6", "\\zeta", true);
defineSymbol(math2, main, mathord, "\u03B7", "\\eta", true);
defineSymbol(math2, main, mathord, "\u03B8", "\\theta", true);
defineSymbol(math2, main, mathord, "\u03B9", "\\iota", true);
defineSymbol(math2, main, mathord, "\u03BA", "\\kappa", true);
defineSymbol(math2, main, mathord, "\u03BB", "\\lambda", true);
defineSymbol(math2, main, mathord, "\u03BC", "\\mu", true);
defineSymbol(math2, main, mathord, "\u03BD", "\\nu", true);
defineSymbol(math2, main, mathord, "\u03BE", "\\xi", true);
defineSymbol(math2, main, mathord, "\u03BF", "\\omicron", true);
defineSymbol(math2, main, mathord, "\u03C0", "\\pi", true);
defineSymbol(math2, main, mathord, "\u03C1", "\\rho", true);
defineSymbol(math2, main, mathord, "\u03C3", "\\sigma", true);
defineSymbol(math2, main, mathord, "\u03C4", "\\tau", true);
defineSymbol(math2, main, mathord, "\u03C5", "\\upsilon", true);
defineSymbol(math2, main, mathord, "\u03D5", "\\phi", true);
defineSymbol(math2, main, mathord, "\u03C7", "\\chi", true);
defineSymbol(math2, main, mathord, "\u03C8", "\\psi", true);
defineSymbol(math2, main, mathord, "\u03C9", "\\omega", true);
defineSymbol(math2, main, mathord, "\u03B5", "\\varepsilon", true);
defineSymbol(math2, main, mathord, "\u03D1", "\\vartheta", true);
defineSymbol(math2, main, mathord, "\u03D6", "\\varpi", true);
defineSymbol(math2, main, mathord, "\u03F1", "\\varrho", true);
defineSymbol(math2, main, mathord, "\u03C2", "\\varsigma", true);
defineSymbol(math2, main, mathord, "\u03C6", "\\varphi", true);
defineSymbol(math2, main, bin, "\u2217", "*", true);
defineSymbol(math2, main, bin, "+", "+");
defineSymbol(math2, main, bin, "\u2212", "-", true);
defineSymbol(math2, main, bin, "\u22C5", "\\cdot", true);
defineSymbol(math2, main, bin, "\u2218", "\\circ", true);
defineSymbol(math2, main, bin, "\xF7", "\\div", true);
defineSymbol(math2, main, bin, "\xB1", "\\pm", true);
defineSymbol(math2, main, bin, "\xD7", "\\times", true);
defineSymbol(math2, main, bin, "\u2229", "\\cap", true);
defineSymbol(math2, main, bin, "\u222A", "\\cup", true);
defineSymbol(math2, main, bin, "\u2216", "\\setminus", true);
defineSymbol(math2, main, bin, "\u2227", "\\land");
defineSymbol(math2, main, bin, "\u2228", "\\lor");
defineSymbol(math2, main, bin, "\u2227", "\\wedge", true);
defineSymbol(math2, main, bin, "\u2228", "\\vee", true);
defineSymbol(math2, main, textord, "\u221A", "\\surd");
defineSymbol(math2, main, open, "\u27E8", "\\langle", true);
defineSymbol(math2, main, open, "\u2223", "\\lvert");
defineSymbol(math2, main, open, "\u2225", "\\lVert");
defineSymbol(math2, main, close, "?", "?");
defineSymbol(math2, main, close, "!", "!");
defineSymbol(math2, main, close, "\u27E9", "\\rangle", true);
defineSymbol(math2, main, close, "\u2223", "\\rvert");
defineSymbol(math2, main, close, "\u2225", "\\rVert");
defineSymbol(math2, main, rel, "=", "=");
defineSymbol(math2, main, rel, ":", ":");
defineSymbol(math2, main, rel, "\u2248", "\\approx", true);
defineSymbol(math2, main, rel, "\u2245", "\\cong", true);
defineSymbol(math2, main, rel, "\u2265", "\\ge");
defineSymbol(math2, main, rel, "\u2265", "\\geq", true);
defineSymbol(math2, main, rel, "\u2190", "\\gets");
defineSymbol(math2, main, rel, ">", "\\gt", true);
defineSymbol(math2, main, rel, "\u2208", "\\in", true);
defineSymbol(math2, main, rel, "\uE020", "\\@not");
defineSymbol(math2, main, rel, "\u2282", "\\subset", true);
defineSymbol(math2, main, rel, "\u2283", "\\supset", true);
defineSymbol(math2, main, rel, "\u2286", "\\subseteq", true);
defineSymbol(math2, main, rel, "\u2287", "\\supseteq", true);
defineSymbol(math2, ams, rel, "\u2288", "\\nsubseteq", true);
defineSymbol(math2, ams, rel, "\u2289", "\\nsupseteq", true);
defineSymbol(math2, main, rel, "\u22A8", "\\models");
defineSymbol(math2, main, rel, "\u2190", "\\leftarrow", true);
defineSymbol(math2, main, rel, "\u2264", "\\le");
defineSymbol(math2, main, rel, "\u2264", "\\leq", true);
defineSymbol(math2, main, rel, "<", "\\lt", true);
defineSymbol(math2, main, rel, "\u2192", "\\rightarrow", true);
defineSymbol(math2, main, rel, "\u2192", "\\to");
defineSymbol(math2, ams, rel, "\u2271", "\\ngeq", true);
defineSymbol(math2, ams, rel, "\u2270", "\\nleq", true);
defineSymbol(math2, main, spacing, "\xA0", "\\ ");
defineSymbol(math2, main, spacing, "\xA0", "\\space");
defineSymbol(math2, main, spacing, "\xA0", "\\nobreakspace");
defineSymbol(text4, main, spacing, "\xA0", "\\ ");
defineSymbol(text4, main, spacing, "\xA0", " ");
defineSymbol(text4, main, spacing, "\xA0", "\\space");
defineSymbol(text4, main, spacing, "\xA0", "\\nobreakspace");
defineSymbol(math2, main, spacing, null, "\\nobreak");
defineSymbol(math2, main, spacing, null, "\\allowbreak");
defineSymbol(math2, main, punct, ",", ",");
defineSymbol(math2, main, punct, ";", ";");
defineSymbol(math2, ams, bin, "\u22BC", "\\barwedge", true);
defineSymbol(math2, ams, bin, "\u22BB", "\\veebar", true);
defineSymbol(math2, main, bin, "\u2299", "\\odot", true);
defineSymbol(math2, main, bin, "\u2295", "\\oplus", true);
defineSymbol(math2, main, bin, "\u2297", "\\otimes", true);
defineSymbol(math2, main, textord, "\u2202", "\\partial", true);
defineSymbol(math2, main, bin, "\u2298", "\\oslash", true);
defineSymbol(math2, ams, bin, "\u229A", "\\circledcirc", true);
defineSymbol(math2, ams, bin, "\u22A1", "\\boxdot", true);
defineSymbol(math2, main, bin, "\u25B3", "\\bigtriangleup");
defineSymbol(math2, main, bin, "\u25BD", "\\bigtriangledown");
defineSymbol(math2, main, bin, "\u2020", "\\dagger");
defineSymbol(math2, main, bin, "\u22C4", "\\diamond");
defineSymbol(math2, main, bin, "\u22C6", "\\star");
defineSymbol(math2, main, bin, "\u25C3", "\\triangleleft");
defineSymbol(math2, main, bin, "\u25B9", "\\triangleright");
defineSymbol(math2, main, open, "{", "\\{");
defineSymbol(text4, main, textord, "{", "\\{");
defineSymbol(text4, main, textord, "{", "\\textbraceleft");
defineSymbol(math2, main, close, "}", "\\}");
defineSymbol(text4, main, textord, "}", "\\}");
defineSymbol(text4, main, textord, "}", "\\textbraceright");
defineSymbol(math2, main, open, "{", "\\lbrace");
defineSymbol(math2, main, close, "}", "\\rbrace");
defineSymbol(math2, main, open, "[", "\\lbrack", true);
defineSymbol(text4, main, textord, "[", "\\lbrack", true);
defineSymbol(math2, main, close, "]", "\\rbrack", true);
defineSymbol(text4, main, textord, "]", "\\rbrack", true);
defineSymbol(math2, main, open, "(", "\\lparen", true);
defineSymbol(math2, main, close, ")", "\\rparen", true);
defineSymbol(text4, main, textord, "<", "\\textless", true);
defineSymbol(text4, main, textord, ">", "\\textgreater", true);
defineSymbol(math2, main, open, "\u230A", "\\lfloor", true);
defineSymbol(math2, main, close, "\u230B", "\\rfloor", true);
defineSymbol(math2, main, open, "\u2308", "\\lceil", true);
defineSymbol(math2, main, close, "\u2309", "\\rceil", true);
defineSymbol(math2, main, textord, "\\", "\\backslash");
defineSymbol(math2, main, textord, "\u2223", "|");
defineSymbol(math2, main, textord, "\u2223", "\\vert");
defineSymbol(text4, main, textord, "|", "\\textbar", true);
defineSymbol(math2, main, textord, "\u2225", "\\|");
defineSymbol(math2, main, textord, "\u2225", "\\Vert");
defineSymbol(text4, main, textord, "\u2225", "\\textbardbl");
defineSymbol(text4, main, textord, "~", "\\textasciitilde");
defineSymbol(text4, main, textord, "\\", "\\textbackslash");
defineSymbol(text4, main, textord, "^", "\\textasciicircum");
defineSymbol(math2, main, rel, "\u2191", "\\uparrow", true);
defineSymbol(math2, main, rel, "\u21D1", "\\Uparrow", true);
defineSymbol(math2, main, rel, "\u2193", "\\downarrow", true);
defineSymbol(math2, main, rel, "\u21D3", "\\Downarrow", true);
defineSymbol(math2, main, rel, "\u2195", "\\updownarrow", true);
defineSymbol(math2, main, rel, "\u21D5", "\\Updownarrow", true);
defineSymbol(math2, main, op, "\u2210", "\\coprod");
defineSymbol(math2, main, op, "\u22C1", "\\bigvee");
defineSymbol(math2, main, op, "\u22C0", "\\bigwedge");
defineSymbol(math2, main, op, "\u2A04", "\\biguplus");
defineSymbol(math2, main, op, "\u22C2", "\\bigcap");
defineSymbol(math2, main, op, "\u22C3", "\\bigcup");
defineSymbol(math2, main, op, "\u222B", "\\int");
defineSymbol(math2, main, op, "\u222B", "\\intop");
defineSymbol(math2, main, op, "\u222C", "\\iint");
defineSymbol(math2, main, op, "\u222D", "\\iiint");
defineSymbol(math2, main, op, "\u220F", "\\prod");
defineSymbol(math2, main, op, "\u2211", "\\sum");
defineSymbol(math2, main, op, "\u2A02", "\\bigotimes");
defineSymbol(math2, main, op, "\u2A01", "\\bigoplus");
defineSymbol(math2, main, op, "\u2A00", "\\bigodot");
defineSymbol(math2, main, op, "\u222E", "\\oint");
defineSymbol(math2, main, op, "\u222F", "\\oiint");
defineSymbol(math2, main, op, "\u2230", "\\oiiint");
defineSymbol(math2, main, op, "\u2A06", "\\bigsqcup");
defineSymbol(math2, main, op, "\u222B", "\\smallint");
defineSymbol(text4, main, inner, "\u2026", "\\textellipsis");
defineSymbol(math2, main, inner, "\u2026", "\\mathellipsis");
defineSymbol(text4, main, inner, "\u2026", "\\ldots", true);
defineSymbol(math2, main, inner, "\u2026", "\\ldots", true);
defineSymbol(math2, main, inner, "\u22EF", "\\@cdots", true);
defineSymbol(math2, main, inner, "\u22F1", "\\ddots", true);
defineSymbol(math2, main, textord, "\u22EE", "\\varvdots");
defineSymbol(math2, main, accent, "\u02CA", "\\acute");
defineSymbol(math2, main, accent, "\u02CB", "\\grave");
defineSymbol(math2, main, accent, "\xA8", "\\ddot");
defineSymbol(math2, main, accent, "~", "\\tilde");
defineSymbol(math2, main, accent, "\u02C9", "\\bar");
defineSymbol(math2, main, accent, "\u02D8", "\\breve");
defineSymbol(math2, main, accent, "\u02C7", "\\check");
defineSymbol(math2, main, accent, "^", "\\hat");
defineSymbol(math2, main, accent, "\u20D7", "\\vec");
defineSymbol(math2, main, accent, "\u02D9", "\\dot");
defineSymbol(math2, main, accent, "\u02DA", "\\mathring");
defineSymbol(math2, main, mathord, "\uE131", "\\@imath");
defineSymbol(math2, main, mathord, "\uE237", "\\@jmath");
defineSymbol(math2, main, textord, "\u0131", "\u0131");
defineSymbol(math2, main, textord, "\u0237", "\u0237");
defineSymbol(text4, main, textord, "\u0131", "\\i", true);
defineSymbol(text4, main, textord, "\u0237", "\\j", true);
defineSymbol(text4, main, textord, "\xDF", "\\ss", true);
defineSymbol(text4, main, textord, "\xE6", "\\ae", true);
defineSymbol(text4, main, textord, "\u0153", "\\oe", true);
defineSymbol(text4, main, textord, "\xF8", "\\o", true);
defineSymbol(text4, main, textord, "\xC6", "\\AE", true);
defineSymbol(text4, main, textord, "\u0152", "\\OE", true);
defineSymbol(text4, main, textord, "\xD8", "\\O", true);
defineSymbol(text4, main, accent, "\u02CA", "\\'");
defineSymbol(text4, main, accent, "\u02CB", "\\`");
defineSymbol(text4, main, accent, "\u02C6", "\\^");
defineSymbol(text4, main, accent, "\u02DC", "\\~");
defineSymbol(text4, main, accent, "\u02C9", "\\=");
defineSymbol(text4, main, accent, "\u02D8", "\\u");
defineSymbol(text4, main, accent, "\u02D9", "\\.");
defineSymbol(text4, main, accent, "\xB8", "\\c");
defineSymbol(text4, main, accent, "\u02DA", "\\r");
defineSymbol(text4, main, accent, "\u02C7", "\\v");
defineSymbol(text4, main, accent, "\xA8", '\\"');
defineSymbol(text4, main, accent, "\u02DD", "\\H");
defineSymbol(text4, main, accent, "\u25EF", "\\textcircled");
var ligatures = {
  "--": true,
  "---": true,
  "``": true,
  "''": true
};
defineSymbol(text4, main, textord, "\u2013", "--", true);
defineSymbol(text4, main, textord, "\u2013", "\\textendash");
defineSymbol(text4, main, textord, "\u2014", "---", true);
defineSymbol(text4, main, textord, "\u2014", "\\textemdash");
defineSymbol(text4, main, textord, "\u2018", "`", true);
defineSymbol(text4, main, textord, "\u2018", "\\textquoteleft");
defineSymbol(text4, main, textord, "\u2019", "'", true);
defineSymbol(text4, main, textord, "\u2019", "\\textquoteright");
defineSymbol(text4, main, textord, "\u201C", "``", true);
defineSymbol(text4, main, textord, "\u201C", "\\textquotedblleft");
defineSymbol(text4, main, textord, "\u201D", "''", true);
defineSymbol(text4, main, textord, "\u201D", "\\textquotedblright");
defineSymbol(math2, main, textord, "\xB0", "\\degree", true);
defineSymbol(text4, main, textord, "\xB0", "\\degree");
defineSymbol(text4, main, textord, "\xB0", "\\textdegree", true);
defineSymbol(math2, main, textord, "\xA3", "\\pounds");
defineSymbol(math2, main, textord, "\xA3", "\\mathsterling", true);
defineSymbol(text4, main, textord, "\xA3", "\\pounds");
defineSymbol(text4, main, textord, "\xA3", "\\textsterling", true);
defineSymbol(math2, ams, textord, "\u2720", "\\maltese");
defineSymbol(text4, ams, textord, "\u2720", "\\maltese");
var mathTextSymbols = '0123456789/@."';
for (i2 = 0; i2 < mathTextSymbols.length; i2++) {
  ch = mathTextSymbols.charAt(i2);
  defineSymbol(math2, main, textord, ch, ch);
}
var ch;
var i2;
var textSymbols = '0123456789!@*()-=+";:?/.,';
for (_i = 0; _i < textSymbols.length; _i++) {
  _ch = textSymbols.charAt(_i);
  defineSymbol(text4, main, textord, _ch, _ch);
}
var _ch;
var _i;
var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
for (_i2 = 0; _i2 < letters.length; _i2++) {
  _ch2 = letters.charAt(_i2);
  defineSymbol(math2, main, mathord, _ch2, _ch2);
  defineSymbol(text4, main, textord, _ch2, _ch2);
}
var _ch2;
var _i2;
defineSymbol(math2, ams, textord, "C", "\u2102");
defineSymbol(text4, ams, textord, "C", "\u2102");
defineSymbol(math2, ams, textord, "H", "\u210D");
defineSymbol(text4, ams, textord, "H", "\u210D");
defineSymbol(math2, ams, textord, "N", "\u2115");
defineSymbol(text4, ams, textord, "N", "\u2115");
defineSymbol(math2, ams, textord, "P", "\u2119");
defineSymbol(text4, ams, textord, "P", "\u2119");
defineSymbol(math2, ams, textord, "Q", "\u211A");
defineSymbol(text4, ams, textord, "Q", "\u211A");
defineSymbol(math2, ams, textord, "R", "\u211D");
defineSymbol(text4, ams, textord, "R", "\u211D");
defineSymbol(math2, ams, textord, "Z", "\u2124");
defineSymbol(text4, ams, textord, "Z", "\u2124");
defineSymbol(math2, main, mathord, "h", "\u210E");
defineSymbol(text4, main, mathord, "h", "\u210E");
var wideChar = "";
for (_i3 = 0; _i3 < letters.length; _i3++) {
  _ch3 = letters.charAt(_i3);
  wideChar = String.fromCharCode(55349, 56320 + _i3);
  defineSymbol(math2, main, mathord, _ch3, wideChar);
  defineSymbol(text4, main, textord, _ch3, wideChar);
  wideChar = String.fromCharCode(55349, 56372 + _i3);
  defineSymbol(math2, main, mathord, _ch3, wideChar);
  defineSymbol(text4, main, textord, _ch3, wideChar);
  wideChar = String.fromCharCode(55349, 56424 + _i3);
  defineSymbol(math2, main, mathord, _ch3, wideChar);
  defineSymbol(text4, main, textord, _ch3, wideChar);
  wideChar = String.fromCharCode(55349, 56580 + _i3);
  defineSymbol(math2, main, mathord, _ch3, wideChar);
  defineSymbol(text4, main, textord, _ch3, wideChar);
  wideChar = String.fromCharCode(55349, 56736 + _i3);
  defineSymbol(math2, main, mathord, _ch3, wideChar);
  defineSymbol(text4, main, textord, _ch3, wideChar);
  wideChar = String.fromCharCode(55349, 56788 + _i3);
  defineSymbol(math2, main, mathord, _ch3, wideChar);
  defineSymbol(text4, main, textord, _ch3, wideChar);
  wideChar = String.fromCharCode(55349, 56840 + _i3);
  defineSymbol(math2, main, mathord, _ch3, wideChar);
  defineSymbol(text4, main, textord, _ch3, wideChar);
  wideChar = String.fromCharCode(55349, 56944 + _i3);
  defineSymbol(math2, main, mathord, _ch3, wideChar);
  defineSymbol(text4, main, textord, _ch3, wideChar);
  if (_i3 < 26) {
    wideChar = String.fromCharCode(55349, 56632 + _i3);
    defineSymbol(math2, main, mathord, _ch3, wideChar);
    defineSymbol(text4, main, textord, _ch3, wideChar);
    wideChar = String.fromCharCode(55349, 56476 + _i3);
    defineSymbol(math2, main, mathord, _ch3, wideChar);
    defineSymbol(text4, main, textord, _ch3, wideChar);
  }
}
var _ch3;
var _i3;
wideChar = String.fromCharCode(55349, 56668);
defineSymbol(math2, main, mathord, "k", wideChar);
defineSymbol(text4, main, textord, "k", wideChar);
for (_i4 = 0; _i4 < 10; _i4++) {
  _ch4 = _i4.toString();
  wideChar = String.fromCharCode(55349, 57294 + _i4);
  defineSymbol(math2, main, mathord, _ch4, wideChar);
  defineSymbol(text4, main, textord, _ch4, wideChar);
  wideChar = String.fromCharCode(55349, 57314 + _i4);
  defineSymbol(math2, main, mathord, _ch4, wideChar);
  defineSymbol(text4, main, textord, _ch4, wideChar);
  wideChar = String.fromCharCode(55349, 57324 + _i4);
  defineSymbol(math2, main, mathord, _ch4, wideChar);
  defineSymbol(text4, main, textord, _ch4, wideChar);
  wideChar = String.fromCharCode(55349, 57334 + _i4);
  defineSymbol(math2, main, mathord, _ch4, wideChar);
  defineSymbol(text4, main, textord, _ch4, wideChar);
}
var _ch4;
var _i4;
var extraLatin = "\xD0\xDE\xFE";
for (_i5 = 0; _i5 < extraLatin.length; _i5++) {
  _ch5 = extraLatin.charAt(_i5);
  defineSymbol(math2, main, mathord, _ch5, _ch5);
  defineSymbol(text4, main, textord, _ch5, _ch5);
}
var _ch5;
var _i5;
var wideLatinLetterData = [
  ["mathbf", "textbf", "Main-Bold"],
  // A-Z bold upright
  ["mathbf", "textbf", "Main-Bold"],
  // a-z bold upright
  ["mathnormal", "textit", "Math-Italic"],
  // A-Z italic
  ["mathnormal", "textit", "Math-Italic"],
  // a-z italic
  ["boldsymbol", "boldsymbol", "Main-BoldItalic"],
  // A-Z bold italic
  ["boldsymbol", "boldsymbol", "Main-BoldItalic"],
  // a-z bold italic
  // Map fancy A-Z letters to script, not calligraphic.
  // This aligns with unicode-math and math fonts (except Cambria Math).
  ["mathscr", "textscr", "Script-Regular"],
  // A-Z script
  ["", "", ""],
  // a-z script.  No font
  ["", "", ""],
  // A-Z bold script. No font
  ["", "", ""],
  // a-z bold script. No font
  ["mathfrak", "textfrak", "Fraktur-Regular"],
  // A-Z Fraktur
  ["mathfrak", "textfrak", "Fraktur-Regular"],
  // a-z Fraktur
  ["mathbb", "textbb", "AMS-Regular"],
  // A-Z double-struck
  ["mathbb", "textbb", "AMS-Regular"],
  // k double-struck
  ["", "", ""],
  // A-Z bold Fraktur No font metrics
  ["", "", ""],
  // a-z bold Fraktur.   No font.
  ["mathsf", "textsf", "SansSerif-Regular"],
  // A-Z sans-serif
  ["mathsf", "textsf", "SansSerif-Regular"],
  // a-z sans-serif
  ["mathboldsf", "textboldsf", "SansSerif-Bold"],
  // A-Z bold sans-serif
  ["mathboldsf", "textboldsf", "SansSerif-Bold"],
  // a-z bold sans-serif
  ["mathitsf", "textitsf", "SansSerif-Italic"],
  // A-Z italic sans-serif
  ["mathitsf", "textitsf", "SansSerif-Italic"],
  // a-z italic sans-serif
  ["", "", ""],
  // A-Z bold italic sans. No font
  ["", "", ""],
  // a-z bold italic sans. No font
  ["mathtt", "texttt", "Typewriter-Regular"],
  // A-Z monospace
  ["mathtt", "texttt", "Typewriter-Regular"]
  // a-z monospace
];
var wideNumeralData = [
  ["mathbf", "textbf", "Main-Bold"],
  // 0-9 bold
  ["", "", ""],
  // 0-9 double-struck. No KaTeX font.
  ["mathsf", "textsf", "SansSerif-Regular"],
  // 0-9 sans-serif
  ["mathboldsf", "textboldsf", "SansSerif-Bold"],
  // 0-9 bold sans-serif
  ["mathtt", "texttt", "Typewriter-Regular"]
  // 0-9 monospace
];
var wideCharacterFont = function wideCharacterFont2(wideChar2, mode) {
  var H = wideChar2.charCodeAt(0);
  var L = wideChar2.charCodeAt(1);
  var codePoint = (H - 55296) * 1024 + (L - 56320) + 65536;
  var j = mode === "math" ? 0 : 1;
  if (119808 <= codePoint && codePoint < 120484) {
    var i2 = Math.floor((codePoint - 119808) / 26);
    return [wideLatinLetterData[i2][2], wideLatinLetterData[i2][j]];
  } else if (120782 <= codePoint && codePoint <= 120831) {
    var _i = Math.floor((codePoint - 120782) / 10);
    return [wideNumeralData[_i][2], wideNumeralData[_i][j]];
  } else if (codePoint === 120485 || codePoint === 120486) {
    return [wideLatinLetterData[0][2], wideLatinLetterData[0][j]];
  } else if (120486 < codePoint && codePoint < 120782) {
    return ["", ""];
  } else {
    throw new ParseError("Unsupported character: " + wideChar2);
  }
};
var lookupSymbol = function lookupSymbol2(value, fontName, mode) {
  if (symbols[mode][value] && symbols[mode][value].replace) {
    value = symbols[mode][value].replace;
  }
  return {
    value,
    metrics: getCharacterMetrics(value, fontName, mode)
  };
};
var makeSymbol = function makeSymbol2(value, fontName, mode, options, classes) {
  var lookup2 = lookupSymbol(value, fontName, mode);
  var metrics = lookup2.metrics;
  value = lookup2.value;
  var symbolNode;
  if (metrics) {
    var italic = metrics.italic;
    if (mode === "text" || options && options.font === "mathit") {
      italic = 0;
    }
    symbolNode = new SymbolNode(value, metrics.height, metrics.depth, italic, metrics.skew, metrics.width, classes);
  } else {
    typeof console !== "undefined" && console.warn("No character metrics " + ("for '" + value + "' in style '" + fontName + "' and mode '" + mode + "'"));
    symbolNode = new SymbolNode(value, 0, 0, 0, 0, 0, classes);
  }
  if (options) {
    symbolNode.maxFontSize = options.sizeMultiplier;
    if (options.style.isTight()) {
      symbolNode.classes.push("mtight");
    }
    var color2 = options.getColor();
    if (color2) {
      symbolNode.style.color = color2;
    }
  }
  return symbolNode;
};
var mathsym = function mathsym2(value, mode, options, classes) {
  if (classes === void 0) {
    classes = [];
  }
  if (options.font === "boldsymbol" && lookupSymbol(value, "Main-Bold", mode).metrics) {
    return makeSymbol(value, "Main-Bold", mode, options, classes.concat(["mathbf"]));
  } else if (value === "\\" || symbols[mode][value].font === "main") {
    return makeSymbol(value, "Main-Regular", mode, options, classes);
  } else {
    return makeSymbol(value, "AMS-Regular", mode, options, classes.concat(["amsrm"]));
  }
};
var boldsymbol = function boldsymbol2(value, mode, options, classes, type2) {
  if (type2 !== "textord" && lookupSymbol(value, "Math-BoldItalic", mode).metrics) {
    return {
      fontName: "Math-BoldItalic",
      fontClass: "boldsymbol"
    };
  } else {
    return {
      fontName: "Main-Bold",
      fontClass: "mathbf"
    };
  }
};
var makeOrd = function makeOrd2(group3, options, type2) {
  var mode = group3.mode;
  var text7 = group3.text;
  var classes = ["mord"];
  var isFont = mode === "math" || mode === "text" && options.font;
  var fontOrFamily = isFont ? options.font : options.fontFamily;
  if (text7.charCodeAt(0) === 55349) {
    var [wideFontName, wideFontClass] = wideCharacterFont(text7, mode);
    return makeSymbol(text7, wideFontName, mode, options, classes.concat(wideFontClass));
  } else if (fontOrFamily) {
    var fontName;
    var fontClasses;
    if (fontOrFamily === "boldsymbol") {
      var fontData = boldsymbol(text7, mode, options, classes, type2);
      fontName = fontData.fontName;
      fontClasses = [fontData.fontClass];
    } else if (isFont) {
      fontName = fontMap[fontOrFamily].fontName;
      fontClasses = [fontOrFamily];
    } else {
      fontName = retrieveTextFontName(fontOrFamily, options.fontWeight, options.fontShape);
      fontClasses = [fontOrFamily, options.fontWeight, options.fontShape];
    }
    if (lookupSymbol(text7, fontName, mode).metrics) {
      return makeSymbol(text7, fontName, mode, options, classes.concat(fontClasses));
    } else if (ligatures.hasOwnProperty(text7) && fontName.substr(0, 10) === "Typewriter") {
      var parts = [];
      for (var i2 = 0; i2 < text7.length; i2++) {
        parts.push(makeSymbol(text7[i2], fontName, mode, options, classes.concat(fontClasses)));
      }
      return makeFragment(parts);
    }
  }
  if (type2 === "mathord") {
    return makeSymbol(text7, "Math-Italic", mode, options, classes.concat(["mathnormal"]));
  } else if (type2 === "textord") {
    var font = symbols[mode][text7] && symbols[mode][text7].font;
    if (font === "ams") {
      var _fontName = retrieveTextFontName("amsrm", options.fontWeight, options.fontShape);
      return makeSymbol(text7, _fontName, mode, options, classes.concat("amsrm", options.fontWeight, options.fontShape));
    } else if (font === "main" || !font) {
      var _fontName2 = retrieveTextFontName("textrm", options.fontWeight, options.fontShape);
      return makeSymbol(text7, _fontName2, mode, options, classes.concat(options.fontWeight, options.fontShape));
    } else {
      var _fontName3 = retrieveTextFontName(font, options.fontWeight, options.fontShape);
      return makeSymbol(text7, _fontName3, mode, options, classes.concat(_fontName3, options.fontWeight, options.fontShape));
    }
  } else {
    throw new Error("unexpected type: " + type2 + " in makeOrd");
  }
};
var canCombine = (prev, next) => {
  if (createClass(prev.classes) !== createClass(next.classes) || prev.skew !== next.skew || prev.maxFontSize !== next.maxFontSize) {
    return false;
  }
  if (prev.classes.length === 1) {
    var cls = prev.classes[0];
    if (cls === "mbin" || cls === "mord") {
      return false;
    }
  }
  for (var style3 in prev.style) {
    if (prev.style.hasOwnProperty(style3) && prev.style[style3] !== next.style[style3]) {
      return false;
    }
  }
  for (var _style in next.style) {
    if (next.style.hasOwnProperty(_style) && prev.style[_style] !== next.style[_style]) {
      return false;
    }
  }
  return true;
};
var tryCombineChars = (chars) => {
  for (var i2 = 0; i2 < chars.length - 1; i2++) {
    var prev = chars[i2];
    var next = chars[i2 + 1];
    if (prev instanceof SymbolNode && next instanceof SymbolNode && canCombine(prev, next)) {
      prev.text += next.text;
      prev.height = Math.max(prev.height, next.height);
      prev.depth = Math.max(prev.depth, next.depth);
      prev.italic = next.italic;
      chars.splice(i2 + 1, 1);
      i2--;
    }
  }
  return chars;
};
var sizeElementFromChildren = function sizeElementFromChildren2(elem) {
  var height2 = 0;
  var depth = 0;
  var maxFontSize = 0;
  for (var i2 = 0; i2 < elem.children.length; i2++) {
    var child = elem.children[i2];
    if (child.height > height2) {
      height2 = child.height;
    }
    if (child.depth > depth) {
      depth = child.depth;
    }
    if (child.maxFontSize > maxFontSize) {
      maxFontSize = child.maxFontSize;
    }
  }
  elem.height = height2;
  elem.depth = depth;
  elem.maxFontSize = maxFontSize;
};
var makeSpan$2 = function makeSpan(classes, children, options, style3) {
  var span = new Span(classes, children, options, style3);
  sizeElementFromChildren(span);
  return span;
};
var makeSvgSpan = (classes, children, options, style3) => new Span(classes, children, options, style3);
var makeLineSpan = function makeLineSpan2(className, options, thickness) {
  var line2 = makeSpan$2([className], [], options);
  line2.height = Math.max(thickness || options.fontMetrics().defaultRuleThickness, options.minRuleThickness);
  line2.style.borderBottomWidth = makeEm(line2.height);
  line2.maxFontSize = 1;
  return line2;
};
var makeAnchor = function makeAnchor2(href, classes, children, options) {
  var anchor = new Anchor(href, classes, children, options);
  sizeElementFromChildren(anchor);
  return anchor;
};
var makeFragment = function makeFragment2(children) {
  var fragment = new DocumentFragment(children);
  sizeElementFromChildren(fragment);
  return fragment;
};
var wrapFragment = function wrapFragment2(group3, options) {
  if (group3 instanceof DocumentFragment) {
    return makeSpan$2([], [group3], options);
  }
  return group3;
};
var getVListChildrenAndDepth = function getVListChildrenAndDepth2(params) {
  if (params.positionType === "individualShift") {
    var oldChildren = params.children;
    var children = [oldChildren[0]];
    var _depth2 = -oldChildren[0].shift - oldChildren[0].elem.depth;
    var currPos = _depth2;
    for (var i2 = 1; i2 < oldChildren.length; i2++) {
      var diff = -oldChildren[i2].shift - currPos - oldChildren[i2].elem.depth;
      var size = diff - (oldChildren[i2 - 1].elem.height + oldChildren[i2 - 1].elem.depth);
      currPos = currPos + diff;
      children.push({
        type: "kern",
        size
      });
      children.push(oldChildren[i2]);
    }
    return {
      children,
      depth: _depth2
    };
  }
  var depth;
  if (params.positionType === "top") {
    var bottom = params.positionData;
    for (var _i = 0; _i < params.children.length; _i++) {
      var child = params.children[_i];
      bottom -= child.type === "kern" ? child.size : child.elem.height + child.elem.depth;
    }
    depth = bottom;
  } else if (params.positionType === "bottom") {
    depth = -params.positionData;
  } else {
    var firstChild2 = params.children[0];
    if (firstChild2.type !== "elem") {
      throw new Error('First child must have type "elem".');
    }
    if (params.positionType === "shift") {
      depth = -firstChild2.elem.depth - params.positionData;
    } else if (params.positionType === "firstBaseline") {
      depth = -firstChild2.elem.depth;
    } else {
      throw new Error("Invalid positionType " + params.positionType + ".");
    }
  }
  return {
    children: params.children,
    depth
  };
};
var makeVList = function makeVList2(params, options) {
  var {
    children,
    depth
  } = getVListChildrenAndDepth(params);
  var pstrutSize = 0;
  for (var i2 = 0; i2 < children.length; i2++) {
    var child = children[i2];
    if (child.type === "elem") {
      var elem = child.elem;
      pstrutSize = Math.max(pstrutSize, elem.maxFontSize, elem.height);
    }
  }
  pstrutSize += 2;
  var pstrut = makeSpan$2(["pstrut"], []);
  pstrut.style.height = makeEm(pstrutSize);
  var realChildren = [];
  var minPos = depth;
  var maxPos = depth;
  var currPos = depth;
  for (var _i2 = 0; _i2 < children.length; _i2++) {
    var _child = children[_i2];
    if (_child.type === "kern") {
      currPos += _child.size;
    } else {
      var _elem = _child.elem;
      var classes = _child.wrapperClasses || [];
      var style3 = _child.wrapperStyle || {};
      var childWrap = makeSpan$2(classes, [pstrut, _elem], void 0, style3);
      childWrap.style.top = makeEm(-pstrutSize - currPos - _elem.depth);
      if (_child.marginLeft) {
        childWrap.style.marginLeft = _child.marginLeft;
      }
      if (_child.marginRight) {
        childWrap.style.marginRight = _child.marginRight;
      }
      realChildren.push(childWrap);
      currPos += _elem.height + _elem.depth;
    }
    minPos = Math.min(minPos, currPos);
    maxPos = Math.max(maxPos, currPos);
  }
  var vlist = makeSpan$2(["vlist"], realChildren);
  vlist.style.height = makeEm(maxPos);
  var rows;
  if (minPos < 0) {
    var emptySpan = makeSpan$2([], []);
    var depthStrut = makeSpan$2(["vlist"], [emptySpan]);
    depthStrut.style.height = makeEm(-minPos);
    var topStrut = makeSpan$2(["vlist-s"], [new SymbolNode("\u200B")]);
    rows = [makeSpan$2(["vlist-r"], [vlist, topStrut]), makeSpan$2(["vlist-r"], [depthStrut])];
  } else {
    rows = [makeSpan$2(["vlist-r"], [vlist])];
  }
  var vtable = makeSpan$2(["vlist-t"], rows);
  if (rows.length === 2) {
    vtable.classes.push("vlist-t2");
  }
  vtable.height = maxPos;
  vtable.depth = -minPos;
  return vtable;
};
var makeGlue = (measurement, options) => {
  var rule = makeSpan$2(["mspace"], [], options);
  var size = calculateSize(measurement, options);
  rule.style.marginRight = makeEm(size);
  return rule;
};
var retrieveTextFontName = function retrieveTextFontName2(fontFamily, fontWeight, fontShape) {
  var baseFontName = "";
  switch (fontFamily) {
    case "amsrm":
      baseFontName = "AMS";
      break;
    case "textrm":
      baseFontName = "Main";
      break;
    case "textsf":
      baseFontName = "SansSerif";
      break;
    case "texttt":
      baseFontName = "Typewriter";
      break;
    default:
      baseFontName = fontFamily;
  }
  var fontStylesName;
  if (fontWeight === "textbf" && fontShape === "textit") {
    fontStylesName = "BoldItalic";
  } else if (fontWeight === "textbf") {
    fontStylesName = "Bold";
  } else if (fontWeight === "textit") {
    fontStylesName = "Italic";
  } else {
    fontStylesName = "Regular";
  }
  return baseFontName + "-" + fontStylesName;
};
var fontMap = {
  // styles
  "mathbf": {
    variant: "bold",
    fontName: "Main-Bold"
  },
  "mathrm": {
    variant: "normal",
    fontName: "Main-Regular"
  },
  "textit": {
    variant: "italic",
    fontName: "Main-Italic"
  },
  "mathit": {
    variant: "italic",
    fontName: "Main-Italic"
  },
  "mathnormal": {
    variant: "italic",
    fontName: "Math-Italic"
  },
  // "boldsymbol" is missing because they require the use of multiple fonts:
  // Math-BoldItalic and Main-Bold.  This is handled by a special case in
  // makeOrd which ends up calling boldsymbol.
  // families
  "mathbb": {
    variant: "double-struck",
    fontName: "AMS-Regular"
  },
  "mathcal": {
    variant: "script",
    fontName: "Caligraphic-Regular"
  },
  "mathfrak": {
    variant: "fraktur",
    fontName: "Fraktur-Regular"
  },
  "mathscr": {
    variant: "script",
    fontName: "Script-Regular"
  },
  "mathsf": {
    variant: "sans-serif",
    fontName: "SansSerif-Regular"
  },
  "mathtt": {
    variant: "monospace",
    fontName: "Typewriter-Regular"
  }
};
var svgData = {
  //   path, width, height
  vec: ["vec", 0.471, 0.714],
  // values from the font glyph
  oiintSize1: ["oiintSize1", 0.957, 0.499],
  // oval to overlay the integrand
  oiintSize2: ["oiintSize2", 1.472, 0.659],
  oiiintSize1: ["oiiintSize1", 1.304, 0.499],
  oiiintSize2: ["oiiintSize2", 1.98, 0.659]
};
var staticSvg = function staticSvg2(value, options) {
  var [pathName, width, height2] = svgData[value];
  var path45 = new PathNode(pathName);
  var svgNode = new SvgNode([path45], {
    "width": makeEm(width),
    "height": makeEm(height2),
    // Override CSS rule `.katex svg { width: 100% }`
    "style": "width:" + makeEm(width),
    "viewBox": "0 0 " + 1e3 * width + " " + 1e3 * height2,
    "preserveAspectRatio": "xMinYMin"
  });
  var span = makeSvgSpan(["overlay"], [svgNode], options);
  span.height = height2;
  span.style.height = makeEm(height2);
  span.style.width = makeEm(width);
  return span;
};
var buildCommon = {
  fontMap,
  makeSymbol,
  mathsym,
  makeSpan: makeSpan$2,
  makeSvgSpan,
  makeLineSpan,
  makeAnchor,
  makeFragment,
  wrapFragment,
  makeVList,
  makeOrd,
  makeGlue,
  staticSvg,
  svgData,
  tryCombineChars
};
var thinspace = {
  number: 3,
  unit: "mu"
};
var mediumspace = {
  number: 4,
  unit: "mu"
};
var thickspace = {
  number: 5,
  unit: "mu"
};
var spacings = {
  mord: {
    mop: thinspace,
    mbin: mediumspace,
    mrel: thickspace,
    minner: thinspace
  },
  mop: {
    mord: thinspace,
    mop: thinspace,
    mrel: thickspace,
    minner: thinspace
  },
  mbin: {
    mord: mediumspace,
    mop: mediumspace,
    mopen: mediumspace,
    minner: mediumspace
  },
  mrel: {
    mord: thickspace,
    mop: thickspace,
    mopen: thickspace,
    minner: thickspace
  },
  mopen: {},
  mclose: {
    mop: thinspace,
    mbin: mediumspace,
    mrel: thickspace,
    minner: thinspace
  },
  mpunct: {
    mord: thinspace,
    mop: thinspace,
    mrel: thickspace,
    mopen: thinspace,
    mclose: thinspace,
    mpunct: thinspace,
    minner: thinspace
  },
  minner: {
    mord: thinspace,
    mop: thinspace,
    mbin: mediumspace,
    mrel: thickspace,
    mopen: thinspace,
    mpunct: thinspace,
    minner: thinspace
  }
};
var tightSpacings = {
  mord: {
    mop: thinspace
  },
  mop: {
    mord: thinspace,
    mop: thinspace
  },
  mbin: {},
  mrel: {},
  mopen: {},
  mclose: {
    mop: thinspace
  },
  mpunct: {},
  minner: {
    mop: thinspace
  }
};
var _functions = {};
var _htmlGroupBuilders = {};
var _mathmlGroupBuilders = {};
function defineFunction(_ref) {
  var {
    type: type2,
    names,
    props,
    handler,
    htmlBuilder: htmlBuilder3,
    mathmlBuilder: mathmlBuilder3
  } = _ref;
  var data = {
    type: type2,
    numArgs: props.numArgs,
    argTypes: props.argTypes,
    allowedInArgument: !!props.allowedInArgument,
    allowedInText: !!props.allowedInText,
    allowedInMath: props.allowedInMath === void 0 ? true : props.allowedInMath,
    numOptionalArgs: props.numOptionalArgs || 0,
    infix: !!props.infix,
    primitive: !!props.primitive,
    handler
  };
  for (var i2 = 0; i2 < names.length; ++i2) {
    _functions[names[i2]] = data;
  }
  if (type2) {
    if (htmlBuilder3) {
      _htmlGroupBuilders[type2] = htmlBuilder3;
    }
    if (mathmlBuilder3) {
      _mathmlGroupBuilders[type2] = mathmlBuilder3;
    }
  }
}
function defineFunctionBuilders(_ref2) {
  var {
    type: type2,
    htmlBuilder: htmlBuilder3,
    mathmlBuilder: mathmlBuilder3
  } = _ref2;
  defineFunction({
    type: type2,
    names: [],
    props: {
      numArgs: 0
    },
    handler() {
      throw new Error("Should never be called.");
    },
    htmlBuilder: htmlBuilder3,
    mathmlBuilder: mathmlBuilder3
  });
}
var normalizeArgument = function normalizeArgument2(arg2) {
  return arg2.type === "ordgroup" && arg2.body.length === 1 ? arg2.body[0] : arg2;
};
var ordargument = function ordargument2(arg2) {
  return arg2.type === "ordgroup" ? arg2.body : [arg2];
};
var makeSpan$1 = buildCommon.makeSpan;
var binLeftCanceller = ["leftmost", "mbin", "mopen", "mrel", "mop", "mpunct"];
var binRightCanceller = ["rightmost", "mrel", "mclose", "mpunct"];
var styleMap$1 = {
  "display": Style$1.DISPLAY,
  "text": Style$1.TEXT,
  "script": Style$1.SCRIPT,
  "scriptscript": Style$1.SCRIPTSCRIPT
};
var DomEnum = {
  mord: "mord",
  mop: "mop",
  mbin: "mbin",
  mrel: "mrel",
  mopen: "mopen",
  mclose: "mclose",
  mpunct: "mpunct",
  minner: "minner"
};
var buildExpression$1 = function buildExpression(expression, options, isRealGroup, surrounding) {
  if (surrounding === void 0) {
    surrounding = [null, null];
  }
  var groups = [];
  for (var i2 = 0; i2 < expression.length; i2++) {
    var output2 = buildGroup$1(expression[i2], options);
    if (output2 instanceof DocumentFragment) {
      var children = output2.children;
      groups.push(...children);
    } else {
      groups.push(output2);
    }
  }
  buildCommon.tryCombineChars(groups);
  if (!isRealGroup) {
    return groups;
  }
  var glueOptions = options;
  if (expression.length === 1) {
    var node3 = expression[0];
    if (node3.type === "sizing") {
      glueOptions = options.havingSize(node3.size);
    } else if (node3.type === "styling") {
      glueOptions = options.havingStyle(styleMap$1[node3.style]);
    }
  }
  var dummyPrev = makeSpan$1([surrounding[0] || "leftmost"], [], options);
  var dummyNext = makeSpan$1([surrounding[1] || "rightmost"], [], options);
  var isRoot = isRealGroup === "root";
  traverseNonSpaceNodes(groups, (node4, prev) => {
    var prevType = prev.classes[0];
    var type2 = node4.classes[0];
    if (prevType === "mbin" && utils.contains(binRightCanceller, type2)) {
      prev.classes[0] = "mord";
    } else if (type2 === "mbin" && utils.contains(binLeftCanceller, prevType)) {
      node4.classes[0] = "mord";
    }
  }, {
    node: dummyPrev
  }, dummyNext, isRoot);
  traverseNonSpaceNodes(groups, (node4, prev) => {
    var prevType = getTypeOfDomTree(prev);
    var type2 = getTypeOfDomTree(node4);
    var space3 = prevType && type2 ? node4.hasClass("mtight") ? tightSpacings[prevType][type2] : spacings[prevType][type2] : null;
    if (space3) {
      return buildCommon.makeGlue(space3, glueOptions);
    }
  }, {
    node: dummyPrev
  }, dummyNext, isRoot);
  return groups;
};
var traverseNonSpaceNodes = function traverseNonSpaceNodes2(nodes, callback, prev, next, isRoot) {
  if (next) {
    nodes.push(next);
  }
  var i2 = 0;
  for (; i2 < nodes.length; i2++) {
    var node3 = nodes[i2];
    var partialGroup = checkPartialGroup(node3);
    if (partialGroup) {
      traverseNonSpaceNodes2(partialGroup.children, callback, prev, null, isRoot);
      continue;
    }
    var nonspace = !node3.hasClass("mspace");
    if (nonspace) {
      var result = callback(node3, prev.node);
      if (result) {
        if (prev.insertAfter) {
          prev.insertAfter(result);
        } else {
          nodes.unshift(result);
          i2++;
        }
      }
    }
    if (nonspace) {
      prev.node = node3;
    } else if (isRoot && node3.hasClass("newline")) {
      prev.node = makeSpan$1(["leftmost"]);
    }
    prev.insertAfter = /* @__PURE__ */ ((index4) => (n) => {
      nodes.splice(index4 + 1, 0, n);
      i2++;
    })(i2);
  }
  if (next) {
    nodes.pop();
  }
};
var checkPartialGroup = function checkPartialGroup2(node3) {
  if (node3 instanceof DocumentFragment || node3 instanceof Anchor || node3 instanceof Span && node3.hasClass("enclosing")) {
    return node3;
  }
  return null;
};
var getOutermostNode = function getOutermostNode2(node3, side) {
  var partialGroup = checkPartialGroup(node3);
  if (partialGroup) {
    var children = partialGroup.children;
    if (children.length) {
      if (side === "right") {
        return getOutermostNode2(children[children.length - 1], "right");
      } else if (side === "left") {
        return getOutermostNode2(children[0], "left");
      }
    }
  }
  return node3;
};
var getTypeOfDomTree = function getTypeOfDomTree2(node3, side) {
  if (!node3) {
    return null;
  }
  if (side) {
    node3 = getOutermostNode(node3, side);
  }
  return DomEnum[node3.classes[0]] || null;
};
var makeNullDelimiter = function makeNullDelimiter2(options, classes) {
  var moreClasses = ["nulldelimiter"].concat(options.baseSizingClasses());
  return makeSpan$1(classes.concat(moreClasses));
};
var buildGroup$1 = function buildGroup(group3, options, baseOptions) {
  if (!group3) {
    return makeSpan$1();
  }
  if (_htmlGroupBuilders[group3.type]) {
    var groupNode = _htmlGroupBuilders[group3.type](group3, options);
    if (baseOptions && options.size !== baseOptions.size) {
      groupNode = makeSpan$1(options.sizingClasses(baseOptions), [groupNode], options);
      var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier;
      groupNode.height *= multiplier;
      groupNode.depth *= multiplier;
    }
    return groupNode;
  } else {
    throw new ParseError("Got group of unknown type: '" + group3.type + "'");
  }
};
function buildHTMLUnbreakable(children, options) {
  var body3 = makeSpan$1(["base"], children, options);
  var strut = makeSpan$1(["strut"]);
  strut.style.height = makeEm(body3.height + body3.depth);
  if (body3.depth) {
    strut.style.verticalAlign = makeEm(-body3.depth);
  }
  body3.children.unshift(strut);
  return body3;
}
function buildHTML(tree, options) {
  var tag = null;
  if (tree.length === 1 && tree[0].type === "tag") {
    tag = tree[0].tag;
    tree = tree[0].body;
  }
  var expression = buildExpression$1(tree, options, "root");
  var eqnNum;
  if (expression.length === 2 && expression[1].hasClass("tag")) {
    eqnNum = expression.pop();
  }
  var children = [];
  var parts = [];
  for (var i2 = 0; i2 < expression.length; i2++) {
    parts.push(expression[i2]);
    if (expression[i2].hasClass("mbin") || expression[i2].hasClass("mrel") || expression[i2].hasClass("allowbreak")) {
      var nobreak = false;
      while (i2 < expression.length - 1 && expression[i2 + 1].hasClass("mspace") && !expression[i2 + 1].hasClass("newline")) {
        i2++;
        parts.push(expression[i2]);
        if (expression[i2].hasClass("nobreak")) {
          nobreak = true;
        }
      }
      if (!nobreak) {
        children.push(buildHTMLUnbreakable(parts, options));
        parts = [];
      }
    } else if (expression[i2].hasClass("newline")) {
      parts.pop();
      if (parts.length > 0) {
        children.push(buildHTMLUnbreakable(parts, options));
        parts = [];
      }
      children.push(expression[i2]);
    }
  }
  if (parts.length > 0) {
    children.push(buildHTMLUnbreakable(parts, options));
  }
  var tagChild;
  if (tag) {
    tagChild = buildHTMLUnbreakable(buildExpression$1(tag, options, true));
    tagChild.classes = ["tag"];
    children.push(tagChild);
  } else if (eqnNum) {
    children.push(eqnNum);
  }
  var htmlNode = makeSpan$1(["katex-html"], children);
  htmlNode.setAttribute("aria-hidden", "true");
  if (tagChild) {
    var strut = tagChild.children[0];
    strut.style.height = makeEm(htmlNode.height + htmlNode.depth);
    if (htmlNode.depth) {
      strut.style.verticalAlign = makeEm(-htmlNode.depth);
    }
  }
  return htmlNode;
}
function newDocumentFragment(children) {
  return new DocumentFragment(children);
}
var MathNode = class {
  constructor(type2, children, classes) {
    this.type = void 0;
    this.attributes = void 0;
    this.children = void 0;
    this.classes = void 0;
    this.type = type2;
    this.attributes = {};
    this.children = children || [];
    this.classes = classes || [];
  }
  /**
   * Sets an attribute on a MathML node. MathML depends on attributes to convey a
   * semantic content, so this is used heavily.
   */
  setAttribute(name3, value) {
    this.attributes[name3] = value;
  }
  /**
   * Gets an attribute on a MathML node.
   */
  getAttribute(name3) {
    return this.attributes[name3];
  }
  /**
   * Converts the math node into a MathML-namespaced DOM element.
   */
  toNode() {
    var node3 = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type);
    for (var attr in this.attributes) {
      if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
        node3.setAttribute(attr, this.attributes[attr]);
      }
    }
    if (this.classes.length > 0) {
      node3.className = createClass(this.classes);
    }
    for (var i2 = 0; i2 < this.children.length; i2++) {
      node3.appendChild(this.children[i2].toNode());
    }
    return node3;
  }
  /**
   * Converts the math node into an HTML markup string.
   */
  toMarkup() {
    var markup = "<" + this.type;
    for (var attr in this.attributes) {
      if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
        markup += " " + attr + '="';
        markup += utils.escape(this.attributes[attr]);
        markup += '"';
      }
    }
    if (this.classes.length > 0) {
      markup += ' class ="' + utils.escape(createClass(this.classes)) + '"';
    }
    markup += ">";
    for (var i2 = 0; i2 < this.children.length; i2++) {
      markup += this.children[i2].toMarkup();
    }
    markup += "</" + this.type + ">";
    return markup;
  }
  /**
   * Converts the math node into a string, similar to innerText, but escaped.
   */
  toText() {
    return this.children.map((child) => child.toText()).join("");
  }
};
var TextNode = class {
  constructor(text7) {
    this.text = void 0;
    this.text = text7;
  }
  /**
   * Converts the text node into a DOM text node.
   */
  toNode() {
    return document.createTextNode(this.text);
  }
  /**
   * Converts the text node into escaped HTML markup
   * (representing the text itself).
   */
  toMarkup() {
    return utils.escape(this.toText());
  }
  /**
   * Converts the text node into a string
   * (representing the text iteself).
   */
  toText() {
    return this.text;
  }
};
var SpaceNode = class {
  /**
   * Create a Space node with width given in CSS ems.
   */
  constructor(width) {
    this.width = void 0;
    this.character = void 0;
    this.width = width;
    if (width >= 0.05555 && width <= 0.05556) {
      this.character = "\u200A";
    } else if (width >= 0.1666 && width <= 0.1667) {
      this.character = "\u2009";
    } else if (width >= 0.2222 && width <= 0.2223) {
      this.character = "\u2005";
    } else if (width >= 0.2777 && width <= 0.2778) {
      this.character = "\u2005\u200A";
    } else if (width >= -0.05556 && width <= -0.05555) {
      this.character = "\u200A\u2063";
    } else if (width >= -0.1667 && width <= -0.1666) {
      this.character = "\u2009\u2063";
    } else if (width >= -0.2223 && width <= -0.2222) {
      this.character = "\u205F\u2063";
    } else if (width >= -0.2778 && width <= -0.2777) {
      this.character = "\u2005\u2063";
    } else {
      this.character = null;
    }
  }
  /**
   * Converts the math node into a MathML-namespaced DOM element.
   */
  toNode() {
    if (this.character) {
      return document.createTextNode(this.character);
    } else {
      var node3 = document.createElementNS("http://www.w3.org/1998/Math/MathML", "mspace");
      node3.setAttribute("width", makeEm(this.width));
      return node3;
    }
  }
  /**
   * Converts the math node into an HTML markup string.
   */
  toMarkup() {
    if (this.character) {
      return "<mtext>" + this.character + "</mtext>";
    } else {
      return '<mspace width="' + makeEm(this.width) + '"/>';
    }
  }
  /**
   * Converts the math node into a string, similar to innerText.
   */
  toText() {
    if (this.character) {
      return this.character;
    } else {
      return " ";
    }
  }
};
var mathMLTree = {
  MathNode,
  TextNode,
  SpaceNode,
  newDocumentFragment
};
var makeText = function makeText2(text7, mode, options) {
  if (symbols[mode][text7] && symbols[mode][text7].replace && text7.charCodeAt(0) !== 55349 && !(ligatures.hasOwnProperty(text7) && options && (options.fontFamily && options.fontFamily.substr(4, 2) === "tt" || options.font && options.font.substr(4, 2) === "tt"))) {
    text7 = symbols[mode][text7].replace;
  }
  return new mathMLTree.TextNode(text7);
};
var makeRow = function makeRow2(body3) {
  if (body3.length === 1) {
    return body3[0];
  } else {
    return new mathMLTree.MathNode("mrow", body3);
  }
};
var getVariant = function getVariant2(group3, options) {
  if (options.fontFamily === "texttt") {
    return "monospace";
  } else if (options.fontFamily === "textsf") {
    if (options.fontShape === "textit" && options.fontWeight === "textbf") {
      return "sans-serif-bold-italic";
    } else if (options.fontShape === "textit") {
      return "sans-serif-italic";
    } else if (options.fontWeight === "textbf") {
      return "bold-sans-serif";
    } else {
      return "sans-serif";
    }
  } else if (options.fontShape === "textit" && options.fontWeight === "textbf") {
    return "bold-italic";
  } else if (options.fontShape === "textit") {
    return "italic";
  } else if (options.fontWeight === "textbf") {
    return "bold";
  }
  var font = options.font;
  if (!font || font === "mathnormal") {
    return null;
  }
  var mode = group3.mode;
  if (font === "mathit") {
    return "italic";
  } else if (font === "boldsymbol") {
    return group3.type === "textord" ? "bold" : "bold-italic";
  } else if (font === "mathbf") {
    return "bold";
  } else if (font === "mathbb") {
    return "double-struck";
  } else if (font === "mathfrak") {
    return "fraktur";
  } else if (font === "mathscr" || font === "mathcal") {
    return "script";
  } else if (font === "mathsf") {
    return "sans-serif";
  } else if (font === "mathtt") {
    return "monospace";
  }
  var text7 = group3.text;
  if (utils.contains(["\\imath", "\\jmath"], text7)) {
    return null;
  }
  if (symbols[mode][text7] && symbols[mode][text7].replace) {
    text7 = symbols[mode][text7].replace;
  }
  var fontName = buildCommon.fontMap[font].fontName;
  if (getCharacterMetrics(text7, fontName, mode)) {
    return buildCommon.fontMap[font].variant;
  }
  return null;
};
var buildExpression2 = function buildExpression3(expression, options, isOrdgroup) {
  if (expression.length === 1) {
    var group3 = buildGroup2(expression[0], options);
    if (isOrdgroup && group3 instanceof MathNode && group3.type === "mo") {
      group3.setAttribute("lspace", "0em");
      group3.setAttribute("rspace", "0em");
    }
    return [group3];
  }
  var groups = [];
  var lastGroup;
  for (var i2 = 0; i2 < expression.length; i2++) {
    var _group = buildGroup2(expression[i2], options);
    if (_group instanceof MathNode && lastGroup instanceof MathNode) {
      if (_group.type === "mtext" && lastGroup.type === "mtext" && _group.getAttribute("mathvariant") === lastGroup.getAttribute("mathvariant")) {
        lastGroup.children.push(..._group.children);
        continue;
      } else if (_group.type === "mn" && lastGroup.type === "mn") {
        lastGroup.children.push(..._group.children);
        continue;
      } else if (_group.type === "mi" && _group.children.length === 1 && lastGroup.type === "mn") {
        var child = _group.children[0];
        if (child instanceof TextNode && child.text === ".") {
          lastGroup.children.push(..._group.children);
          continue;
        }
      } else if (lastGroup.type === "mi" && lastGroup.children.length === 1) {
        var lastChild2 = lastGroup.children[0];
        if (lastChild2 instanceof TextNode && lastChild2.text === "\u0338" && (_group.type === "mo" || _group.type === "mi" || _group.type === "mn")) {
          var _child = _group.children[0];
          if (_child instanceof TextNode && _child.text.length > 0) {
            _child.text = _child.text.slice(0, 1) + "\u0338" + _child.text.slice(1);
            groups.pop();
          }
        }
      }
    }
    groups.push(_group);
    lastGroup = _group;
  }
  return groups;
};
var buildExpressionRow = function buildExpressionRow2(expression, options, isOrdgroup) {
  return makeRow(buildExpression2(expression, options, isOrdgroup));
};
var buildGroup2 = function buildGroup3(group3, options) {
  if (!group3) {
    return new mathMLTree.MathNode("mrow");
  }
  if (_mathmlGroupBuilders[group3.type]) {
    var result = _mathmlGroupBuilders[group3.type](group3, options);
    return result;
  } else {
    throw new ParseError("Got group of unknown type: '" + group3.type + "'");
  }
};
function buildMathML(tree, texExpression, options, isDisplayMode, forMathmlOnly) {
  var expression = buildExpression2(tree, options);
  var wrapper;
  if (expression.length === 1 && expression[0] instanceof MathNode && utils.contains(["mrow", "mtable"], expression[0].type)) {
    wrapper = expression[0];
  } else {
    wrapper = new mathMLTree.MathNode("mrow", expression);
  }
  var annotation = new mathMLTree.MathNode("annotation", [new mathMLTree.TextNode(texExpression)]);
  annotation.setAttribute("encoding", "application/x-tex");
  var semantics = new mathMLTree.MathNode("semantics", [wrapper, annotation]);
  var math7 = new mathMLTree.MathNode("math", [semantics]);
  math7.setAttribute("xmlns", "http://www.w3.org/1998/Math/MathML");
  if (isDisplayMode) {
    math7.setAttribute("display", "block");
  }
  var wrapperClass = forMathmlOnly ? "katex" : "katex-mathml";
  return buildCommon.makeSpan([wrapperClass], [math7]);
}
var optionsFromSettings = function optionsFromSettings2(settings) {
  return new Options({
    style: settings.displayMode ? Style$1.DISPLAY : Style$1.TEXT,
    maxSize: settings.maxSize,
    minRuleThickness: settings.minRuleThickness
  });
};
var displayWrap = function displayWrap2(node3, settings) {
  if (settings.displayMode) {
    var classes = ["katex-display"];
    if (settings.leqno) {
      classes.push("leqno");
    }
    if (settings.fleqn) {
      classes.push("fleqn");
    }
    node3 = buildCommon.makeSpan(classes, [node3]);
  }
  return node3;
};
var buildTree = function buildTree2(tree, expression, settings) {
  var options = optionsFromSettings(settings);
  var katexNode;
  if (settings.output === "mathml") {
    return buildMathML(tree, expression, options, settings.displayMode, true);
  } else if (settings.output === "html") {
    var htmlNode = buildHTML(tree, options);
    katexNode = buildCommon.makeSpan(["katex"], [htmlNode]);
  } else {
    var mathMLNode = buildMathML(tree, expression, options, settings.displayMode, false);
    var _htmlNode = buildHTML(tree, options);
    katexNode = buildCommon.makeSpan(["katex"], [mathMLNode, _htmlNode]);
  }
  return displayWrap(katexNode, settings);
};
var buildHTMLTree = function buildHTMLTree2(tree, expression, settings) {
  var options = optionsFromSettings(settings);
  var htmlNode = buildHTML(tree, options);
  var katexNode = buildCommon.makeSpan(["katex"], [htmlNode]);
  return displayWrap(katexNode, settings);
};
var stretchyCodePoint = {
  widehat: "^",
  widecheck: "\u02C7",
  widetilde: "~",
  utilde: "~",
  overleftarrow: "\u2190",
  underleftarrow: "\u2190",
  xleftarrow: "\u2190",
  overrightarrow: "\u2192",
  underrightarrow: "\u2192",
  xrightarrow: "\u2192",
  underbrace: "\u23DF",
  overbrace: "\u23DE",
  overgroup: "\u23E0",
  undergroup: "\u23E1",
  overleftrightarrow: "\u2194",
  underleftrightarrow: "\u2194",
  xleftrightarrow: "\u2194",
  Overrightarrow: "\u21D2",
  xRightarrow: "\u21D2",
  overleftharpoon: "\u21BC",
  xleftharpoonup: "\u21BC",
  overrightharpoon: "\u21C0",
  xrightharpoonup: "\u21C0",
  xLeftarrow: "\u21D0",
  xLeftrightarrow: "\u21D4",
  xhookleftarrow: "\u21A9",
  xhookrightarrow: "\u21AA",
  xmapsto: "\u21A6",
  xrightharpoondown: "\u21C1",
  xleftharpoondown: "\u21BD",
  xrightleftharpoons: "\u21CC",
  xleftrightharpoons: "\u21CB",
  xtwoheadleftarrow: "\u219E",
  xtwoheadrightarrow: "\u21A0",
  xlongequal: "=",
  xtofrom: "\u21C4",
  xrightleftarrows: "\u21C4",
  xrightequilibrium: "\u21CC",
  // Not a perfect match.
  xleftequilibrium: "\u21CB",
  // None better available.
  "\\cdrightarrow": "\u2192",
  "\\cdleftarrow": "\u2190",
  "\\cdlongequal": "="
};
var mathMLnode = function mathMLnode2(label) {
  var node3 = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(stretchyCodePoint[label.replace(/^\\/, "")])]);
  node3.setAttribute("stretchy", "true");
  return node3;
};
var katexImagesData = {
  //   path(s), minWidth, height, align
  overrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"],
  overleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"],
  underrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"],
  underleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"],
  xrightarrow: [["rightarrow"], 1.469, 522, "xMaxYMin"],
  "\\cdrightarrow": [["rightarrow"], 3, 522, "xMaxYMin"],
  // CD minwwidth2.5pc
  xleftarrow: [["leftarrow"], 1.469, 522, "xMinYMin"],
  "\\cdleftarrow": [["leftarrow"], 3, 522, "xMinYMin"],
  Overrightarrow: [["doublerightarrow"], 0.888, 560, "xMaxYMin"],
  xRightarrow: [["doublerightarrow"], 1.526, 560, "xMaxYMin"],
  xLeftarrow: [["doubleleftarrow"], 1.526, 560, "xMinYMin"],
  overleftharpoon: [["leftharpoon"], 0.888, 522, "xMinYMin"],
  xleftharpoonup: [["leftharpoon"], 0.888, 522, "xMinYMin"],
  xleftharpoondown: [["leftharpoondown"], 0.888, 522, "xMinYMin"],
  overrightharpoon: [["rightharpoon"], 0.888, 522, "xMaxYMin"],
  xrightharpoonup: [["rightharpoon"], 0.888, 522, "xMaxYMin"],
  xrightharpoondown: [["rightharpoondown"], 0.888, 522, "xMaxYMin"],
  xlongequal: [["longequal"], 0.888, 334, "xMinYMin"],
  "\\cdlongequal": [["longequal"], 3, 334, "xMinYMin"],
  xtwoheadleftarrow: [["twoheadleftarrow"], 0.888, 334, "xMinYMin"],
  xtwoheadrightarrow: [["twoheadrightarrow"], 0.888, 334, "xMaxYMin"],
  overleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522],
  overbrace: [["leftbrace", "midbrace", "rightbrace"], 1.6, 548],
  underbrace: [["leftbraceunder", "midbraceunder", "rightbraceunder"], 1.6, 548],
  underleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522],
  xleftrightarrow: [["leftarrow", "rightarrow"], 1.75, 522],
  xLeftrightarrow: [["doubleleftarrow", "doublerightarrow"], 1.75, 560],
  xrightleftharpoons: [["leftharpoondownplus", "rightharpoonplus"], 1.75, 716],
  xleftrightharpoons: [["leftharpoonplus", "rightharpoondownplus"], 1.75, 716],
  xhookleftarrow: [["leftarrow", "righthook"], 1.08, 522],
  xhookrightarrow: [["lefthook", "rightarrow"], 1.08, 522],
  overlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522],
  underlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522],
  overgroup: [["leftgroup", "rightgroup"], 0.888, 342],
  undergroup: [["leftgroupunder", "rightgroupunder"], 0.888, 342],
  xmapsto: [["leftmapsto", "rightarrow"], 1.5, 522],
  xtofrom: [["leftToFrom", "rightToFrom"], 1.75, 528],
  // The next three arrows are from the mhchem package.
  // In mhchem.sty, min-length is 2.0em. But these arrows might appear in the
  // document as \xrightarrow or \xrightleftharpoons. Those have
  // min-length = 1.75em, so we set min-length on these next three to match.
  xrightleftarrows: [["baraboveleftarrow", "rightarrowabovebar"], 1.75, 901],
  xrightequilibrium: [["baraboveshortleftharpoon", "rightharpoonaboveshortbar"], 1.75, 716],
  xleftequilibrium: [["shortbaraboveleftharpoon", "shortrightharpoonabovebar"], 1.75, 716]
};
var groupLength = function groupLength2(arg2) {
  if (arg2.type === "ordgroup") {
    return arg2.body.length;
  } else {
    return 1;
  }
};
var svgSpan = function svgSpan2(group3, options) {
  function buildSvgSpan_() {
    var viewBoxWidth = 4e5;
    var label = group3.label.substr(1);
    if (utils.contains(["widehat", "widecheck", "widetilde", "utilde"], label)) {
      var grp = group3;
      var numChars = groupLength(grp.base);
      var viewBoxHeight;
      var pathName;
      var _height;
      if (numChars > 5) {
        if (label === "widehat" || label === "widecheck") {
          viewBoxHeight = 420;
          viewBoxWidth = 2364;
          _height = 0.42;
          pathName = label + "4";
        } else {
          viewBoxHeight = 312;
          viewBoxWidth = 2340;
          _height = 0.34;
          pathName = "tilde4";
        }
      } else {
        var imgIndex = [1, 1, 2, 2, 3, 3][numChars];
        if (label === "widehat" || label === "widecheck") {
          viewBoxWidth = [0, 1062, 2364, 2364, 2364][imgIndex];
          viewBoxHeight = [0, 239, 300, 360, 420][imgIndex];
          _height = [0, 0.24, 0.3, 0.3, 0.36, 0.42][imgIndex];
          pathName = label + imgIndex;
        } else {
          viewBoxWidth = [0, 600, 1033, 2339, 2340][imgIndex];
          viewBoxHeight = [0, 260, 286, 306, 312][imgIndex];
          _height = [0, 0.26, 0.286, 0.3, 0.306, 0.34][imgIndex];
          pathName = "tilde" + imgIndex;
        }
      }
      var path45 = new PathNode(pathName);
      var svgNode = new SvgNode([path45], {
        "width": "100%",
        "height": makeEm(_height),
        "viewBox": "0 0 " + viewBoxWidth + " " + viewBoxHeight,
        "preserveAspectRatio": "none"
      });
      return {
        span: buildCommon.makeSvgSpan([], [svgNode], options),
        minWidth: 0,
        height: _height
      };
    } else {
      var spans = [];
      var data = katexImagesData[label];
      var [paths, _minWidth, _viewBoxHeight] = data;
      var _height2 = _viewBoxHeight / 1e3;
      var numSvgChildren = paths.length;
      var widthClasses;
      var aligns;
      if (numSvgChildren === 1) {
        var align1 = data[3];
        widthClasses = ["hide-tail"];
        aligns = [align1];
      } else if (numSvgChildren === 2) {
        widthClasses = ["halfarrow-left", "halfarrow-right"];
        aligns = ["xMinYMin", "xMaxYMin"];
      } else if (numSvgChildren === 3) {
        widthClasses = ["brace-left", "brace-center", "brace-right"];
        aligns = ["xMinYMin", "xMidYMin", "xMaxYMin"];
      } else {
        throw new Error("Correct katexImagesData or update code here to support\n                    " + numSvgChildren + " children.");
      }
      for (var i2 = 0; i2 < numSvgChildren; i2++) {
        var _path2 = new PathNode(paths[i2]);
        var _svgNode = new SvgNode([_path2], {
          "width": "400em",
          "height": makeEm(_height2),
          "viewBox": "0 0 " + viewBoxWidth + " " + _viewBoxHeight,
          "preserveAspectRatio": aligns[i2] + " slice"
        });
        var _span = buildCommon.makeSvgSpan([widthClasses[i2]], [_svgNode], options);
        if (numSvgChildren === 1) {
          return {
            span: _span,
            minWidth: _minWidth,
            height: _height2
          };
        } else {
          _span.style.height = makeEm(_height2);
          spans.push(_span);
        }
      }
      return {
        span: buildCommon.makeSpan(["stretchy"], spans, options),
        minWidth: _minWidth,
        height: _height2
      };
    }
  }
  var {
    span,
    minWidth,
    height: height2
  } = buildSvgSpan_();
  span.height = height2;
  span.style.height = makeEm(height2);
  if (minWidth > 0) {
    span.style.minWidth = makeEm(minWidth);
  }
  return span;
};
var encloseSpan = function encloseSpan2(inner2, label, topPad, bottomPad, options) {
  var img2;
  var totalHeight = inner2.height + inner2.depth + topPad + bottomPad;
  if (/fbox|color|angl/.test(label)) {
    img2 = buildCommon.makeSpan(["stretchy", label], [], options);
    if (label === "fbox") {
      var color2 = options.color && options.getColor();
      if (color2) {
        img2.style.borderColor = color2;
      }
    }
  } else {
    var lines = [];
    if (/^[bx]cancel$/.test(label)) {
      lines.push(new LineNode({
        "x1": "0",
        "y1": "0",
        "x2": "100%",
        "y2": "100%",
        "stroke-width": "0.046em"
      }));
    }
    if (/^x?cancel$/.test(label)) {
      lines.push(new LineNode({
        "x1": "0",
        "y1": "100%",
        "x2": "100%",
        "y2": "0",
        "stroke-width": "0.046em"
      }));
    }
    var svgNode = new SvgNode(lines, {
      "width": "100%",
      "height": makeEm(totalHeight)
    });
    img2 = buildCommon.makeSvgSpan([], [svgNode], options);
  }
  img2.height = totalHeight;
  img2.style.height = makeEm(totalHeight);
  return img2;
};
var stretchy = {
  encloseSpan,
  mathMLnode,
  svgSpan
};
function assertNodeType(node3, type2) {
  if (!node3 || node3.type !== type2) {
    throw new Error("Expected node of type " + type2 + ", but got " + (node3 ? "node of type " + node3.type : String(node3)));
  }
  return node3;
}
function assertSymbolNodeType(node3) {
  var typedNode = checkSymbolNodeType(node3);
  if (!typedNode) {
    throw new Error("Expected node of symbol group type, but got " + (node3 ? "node of type " + node3.type : String(node3)));
  }
  return typedNode;
}
function checkSymbolNodeType(node3) {
  if (node3 && (node3.type === "atom" || NON_ATOMS.hasOwnProperty(node3.type))) {
    return node3;
  }
  return null;
}
var htmlBuilder$a = (grp, options) => {
  var base5;
  var group3;
  var supSubGroup;
  if (grp && grp.type === "supsub") {
    group3 = assertNodeType(grp.base, "accent");
    base5 = group3.base;
    grp.base = base5;
    supSubGroup = assertSpan(buildGroup$1(grp, options));
    grp.base = group3;
  } else {
    group3 = assertNodeType(grp, "accent");
    base5 = group3.base;
  }
  var body3 = buildGroup$1(base5, options.havingCrampedStyle());
  var mustShift = group3.isShifty && utils.isCharacterBox(base5);
  var skew = 0;
  if (mustShift) {
    var baseChar = utils.getBaseElem(base5);
    var baseGroup = buildGroup$1(baseChar, options.havingCrampedStyle());
    skew = assertSymbolDomNode(baseGroup).skew;
  }
  var accentBelow = group3.label === "\\c";
  var clearance = accentBelow ? body3.height + body3.depth : Math.min(body3.height, options.fontMetrics().xHeight);
  var accentBody;
  if (!group3.isStretchy) {
    var accent2;
    var width;
    if (group3.label === "\\vec") {
      accent2 = buildCommon.staticSvg("vec", options);
      width = buildCommon.svgData.vec[1];
    } else {
      accent2 = buildCommon.makeOrd({
        mode: group3.mode,
        text: group3.label
      }, options, "textord");
      accent2 = assertSymbolDomNode(accent2);
      accent2.italic = 0;
      width = accent2.width;
      if (accentBelow) {
        clearance += accent2.depth;
      }
    }
    accentBody = buildCommon.makeSpan(["accent-body"], [accent2]);
    var accentFull = group3.label === "\\textcircled";
    if (accentFull) {
      accentBody.classes.push("accent-full");
      clearance = body3.height;
    }
    var left2 = skew;
    if (!accentFull) {
      left2 -= width / 2;
    }
    accentBody.style.left = makeEm(left2);
    if (group3.label === "\\textcircled") {
      accentBody.style.top = ".2em";
    }
    accentBody = buildCommon.makeVList({
      positionType: "firstBaseline",
      children: [{
        type: "elem",
        elem: body3
      }, {
        type: "kern",
        size: -clearance
      }, {
        type: "elem",
        elem: accentBody
      }]
    }, options);
  } else {
    accentBody = stretchy.svgSpan(group3, options);
    accentBody = buildCommon.makeVList({
      positionType: "firstBaseline",
      children: [{
        type: "elem",
        elem: body3
      }, {
        type: "elem",
        elem: accentBody,
        wrapperClasses: ["svg-align"],
        wrapperStyle: skew > 0 ? {
          width: "calc(100% - " + makeEm(2 * skew) + ")",
          marginLeft: makeEm(2 * skew)
        } : void 0
      }]
    }, options);
  }
  var accentWrap = buildCommon.makeSpan(["mord", "accent"], [accentBody], options);
  if (supSubGroup) {
    supSubGroup.children[0] = accentWrap;
    supSubGroup.height = Math.max(accentWrap.height, supSubGroup.height);
    supSubGroup.classes[0] = "mord";
    return supSubGroup;
  } else {
    return accentWrap;
  }
};
var mathmlBuilder$9 = (group3, options) => {
  var accentNode = group3.isStretchy ? stretchy.mathMLnode(group3.label) : new mathMLTree.MathNode("mo", [makeText(group3.label, group3.mode)]);
  var node3 = new mathMLTree.MathNode("mover", [buildGroup2(group3.base, options), accentNode]);
  node3.setAttribute("accent", "true");
  return node3;
};
var NON_STRETCHY_ACCENT_REGEX = new RegExp(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring"].map((accent2) => "\\" + accent2).join("|"));
defineFunction({
  type: "accent",
  names: ["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring", "\\widecheck", "\\widehat", "\\widetilde", "\\overrightarrow", "\\overleftarrow", "\\Overrightarrow", "\\overleftrightarrow", "\\overgroup", "\\overlinesegment", "\\overleftharpoon", "\\overrightharpoon"],
  props: {
    numArgs: 1
  },
  handler: (context, args) => {
    var base5 = normalizeArgument(args[0]);
    var isStretchy = !NON_STRETCHY_ACCENT_REGEX.test(context.funcName);
    var isShifty = !isStretchy || context.funcName === "\\widehat" || context.funcName === "\\widetilde" || context.funcName === "\\widecheck";
    return {
      type: "accent",
      mode: context.parser.mode,
      label: context.funcName,
      isStretchy,
      isShifty,
      base: base5
    };
  },
  htmlBuilder: htmlBuilder$a,
  mathmlBuilder: mathmlBuilder$9
});
defineFunction({
  type: "accent",
  names: ["\\'", "\\`", "\\^", "\\~", "\\=", "\\u", "\\.", '\\"', "\\c", "\\r", "\\H", "\\v", "\\textcircled"],
  props: {
    numArgs: 1,
    allowedInText: true,
    allowedInMath: true,
    // unless in strict mode
    argTypes: ["primitive"]
  },
  handler: (context, args) => {
    var base5 = args[0];
    var mode = context.parser.mode;
    if (mode === "math") {
      context.parser.settings.reportNonstrict("mathVsTextAccents", "LaTeX's accent " + context.funcName + " works only in text mode");
      mode = "text";
    }
    return {
      type: "accent",
      mode,
      label: context.funcName,
      isStretchy: false,
      isShifty: true,
      base: base5
    };
  },
  htmlBuilder: htmlBuilder$a,
  mathmlBuilder: mathmlBuilder$9
});
defineFunction({
  type: "accentUnder",
  names: ["\\underleftarrow", "\\underrightarrow", "\\underleftrightarrow", "\\undergroup", "\\underlinesegment", "\\utilde"],
  props: {
    numArgs: 1
  },
  handler: (_ref, args) => {
    var {
      parser: parser3,
      funcName
    } = _ref;
    var base5 = args[0];
    return {
      type: "accentUnder",
      mode: parser3.mode,
      label: funcName,
      base: base5
    };
  },
  htmlBuilder: (group3, options) => {
    var innerGroup = buildGroup$1(group3.base, options);
    var accentBody = stretchy.svgSpan(group3, options);
    var kern = group3.label === "\\utilde" ? 0.12 : 0;
    var vlist = buildCommon.makeVList({
      positionType: "top",
      positionData: innerGroup.height,
      children: [{
        type: "elem",
        elem: accentBody,
        wrapperClasses: ["svg-align"]
      }, {
        type: "kern",
        size: kern
      }, {
        type: "elem",
        elem: innerGroup
      }]
    }, options);
    return buildCommon.makeSpan(["mord", "accentunder"], [vlist], options);
  },
  mathmlBuilder: (group3, options) => {
    var accentNode = stretchy.mathMLnode(group3.label);
    var node3 = new mathMLTree.MathNode("munder", [buildGroup2(group3.base, options), accentNode]);
    node3.setAttribute("accentunder", "true");
    return node3;
  }
});
var paddedNode = (group3) => {
  var node3 = new mathMLTree.MathNode("mpadded", group3 ? [group3] : []);
  node3.setAttribute("width", "+0.6em");
  node3.setAttribute("lspace", "0.3em");
  return node3;
};
defineFunction({
  type: "xArrow",
  names: [
    "\\xleftarrow",
    "\\xrightarrow",
    "\\xLeftarrow",
    "\\xRightarrow",
    "\\xleftrightarrow",
    "\\xLeftrightarrow",
    "\\xhookleftarrow",
    "\\xhookrightarrow",
    "\\xmapsto",
    "\\xrightharpoondown",
    "\\xrightharpoonup",
    "\\xleftharpoondown",
    "\\xleftharpoonup",
    "\\xrightleftharpoons",
    "\\xleftrightharpoons",
    "\\xlongequal",
    "\\xtwoheadrightarrow",
    "\\xtwoheadleftarrow",
    "\\xtofrom",
    // The next 3 functions are here to support the mhchem extension.
    // Direct use of these functions is discouraged and may break someday.
    "\\xrightleftarrows",
    "\\xrightequilibrium",
    "\\xleftequilibrium",
    // The next 3 functions are here only to support the {CD} environment.
    "\\\\cdrightarrow",
    "\\\\cdleftarrow",
    "\\\\cdlongequal"
  ],
  props: {
    numArgs: 1,
    numOptionalArgs: 1
  },
  handler(_ref, args, optArgs) {
    var {
      parser: parser3,
      funcName
    } = _ref;
    return {
      type: "xArrow",
      mode: parser3.mode,
      label: funcName,
      body: args[0],
      below: optArgs[0]
    };
  },
  // Flow is unable to correctly infer the type of `group`, even though it's
  // unamibiguously determined from the passed-in `type` above.
  htmlBuilder(group3, options) {
    var style3 = options.style;
    var newOptions = options.havingStyle(style3.sup());
    var upperGroup = buildCommon.wrapFragment(buildGroup$1(group3.body, newOptions, options), options);
    var arrowPrefix = group3.label.slice(0, 2) === "\\x" ? "x" : "cd";
    upperGroup.classes.push(arrowPrefix + "-arrow-pad");
    var lowerGroup;
    if (group3.below) {
      newOptions = options.havingStyle(style3.sub());
      lowerGroup = buildCommon.wrapFragment(buildGroup$1(group3.below, newOptions, options), options);
      lowerGroup.classes.push(arrowPrefix + "-arrow-pad");
    }
    var arrowBody = stretchy.svgSpan(group3, options);
    var arrowShift = -options.fontMetrics().axisHeight + 0.5 * arrowBody.height;
    var upperShift = -options.fontMetrics().axisHeight - 0.5 * arrowBody.height - 0.111;
    if (upperGroup.depth > 0.25 || group3.label === "\\xleftequilibrium") {
      upperShift -= upperGroup.depth;
    }
    var vlist;
    if (lowerGroup) {
      var lowerShift = -options.fontMetrics().axisHeight + lowerGroup.height + 0.5 * arrowBody.height + 0.111;
      vlist = buildCommon.makeVList({
        positionType: "individualShift",
        children: [{
          type: "elem",
          elem: upperGroup,
          shift: upperShift
        }, {
          type: "elem",
          elem: arrowBody,
          shift: arrowShift
        }, {
          type: "elem",
          elem: lowerGroup,
          shift: lowerShift
        }]
      }, options);
    } else {
      vlist = buildCommon.makeVList({
        positionType: "individualShift",
        children: [{
          type: "elem",
          elem: upperGroup,
          shift: upperShift
        }, {
          type: "elem",
          elem: arrowBody,
          shift: arrowShift
        }]
      }, options);
    }
    vlist.children[0].children[0].children[1].classes.push("svg-align");
    return buildCommon.makeSpan(["mrel", "x-arrow"], [vlist], options);
  },
  mathmlBuilder(group3, options) {
    var arrowNode = stretchy.mathMLnode(group3.label);
    arrowNode.setAttribute("minsize", group3.label.charAt(0) === "x" ? "1.75em" : "3.0em");
    var node3;
    if (group3.body) {
      var upperNode = paddedNode(buildGroup2(group3.body, options));
      if (group3.below) {
        var lowerNode = paddedNode(buildGroup2(group3.below, options));
        node3 = new mathMLTree.MathNode("munderover", [arrowNode, lowerNode, upperNode]);
      } else {
        node3 = new mathMLTree.MathNode("mover", [arrowNode, upperNode]);
      }
    } else if (group3.below) {
      var _lowerNode = paddedNode(buildGroup2(group3.below, options));
      node3 = new mathMLTree.MathNode("munder", [arrowNode, _lowerNode]);
    } else {
      node3 = paddedNode();
      node3 = new mathMLTree.MathNode("mover", [arrowNode, node3]);
    }
    return node3;
  }
});
var cdArrowFunctionName = {
  ">": "\\\\cdrightarrow",
  "<": "\\\\cdleftarrow",
  "=": "\\\\cdlongequal",
  "A": "\\uparrow",
  "V": "\\downarrow",
  "|": "\\Vert",
  ".": "no arrow"
};
var newCell = () => {
  return {
    type: "styling",
    body: [],
    mode: "math",
    style: "display"
  };
};
var isStartOfArrow = (node3) => {
  return node3.type === "textord" && node3.text === "@";
};
var isLabelEnd = (node3, endChar) => {
  return (node3.type === "mathord" || node3.type === "atom") && node3.text === endChar;
};
function cdArrow(arrowChar, labels, parser3) {
  var funcName = cdArrowFunctionName[arrowChar];
  switch (funcName) {
    case "\\\\cdrightarrow":
    case "\\\\cdleftarrow":
      return parser3.callFunction(funcName, [labels[0]], [labels[1]]);
    case "\\uparrow":
    case "\\downarrow": {
      var leftLabel = parser3.callFunction("\\\\cdleft", [labels[0]], []);
      var bareArrow = {
        type: "atom",
        text: funcName,
        mode: "math",
        family: "rel"
      };
      var sizedArrow = parser3.callFunction("\\Big", [bareArrow], []);
      var rightLabel = parser3.callFunction("\\\\cdright", [labels[1]], []);
      var arrowGroup = {
        type: "ordgroup",
        mode: "math",
        body: [leftLabel, sizedArrow, rightLabel]
      };
      return parser3.callFunction("\\\\cdparent", [arrowGroup], []);
    }
    case "\\\\cdlongequal":
      return parser3.callFunction("\\\\cdlongequal", [], []);
    case "\\Vert": {
      var arrow = {
        type: "textord",
        text: "\\Vert",
        mode: "math"
      };
      return parser3.callFunction("\\Big", [arrow], []);
    }
    default:
      return {
        type: "textord",
        text: " ",
        mode: "math"
      };
  }
}
function parseCD(parser3) {
  var parsedRows = [];
  parser3.gullet.beginGroup();
  parser3.gullet.macros.set("\\cr", "\\\\\\relax");
  parser3.gullet.beginGroup();
  while (true) {
    parsedRows.push(parser3.parseExpression(false, "\\\\"));
    parser3.gullet.endGroup();
    parser3.gullet.beginGroup();
    var next = parser3.fetch().text;
    if (next === "&" || next === "\\\\") {
      parser3.consume();
    } else if (next === "\\end") {
      if (parsedRows[parsedRows.length - 1].length === 0) {
        parsedRows.pop();
      }
      break;
    } else {
      throw new ParseError("Expected \\\\ or \\cr or \\end", parser3.nextToken);
    }
  }
  var row2 = [];
  var body3 = [row2];
  for (var i2 = 0; i2 < parsedRows.length; i2++) {
    var rowNodes = parsedRows[i2];
    var cell3 = newCell();
    for (var j = 0; j < rowNodes.length; j++) {
      if (!isStartOfArrow(rowNodes[j])) {
        cell3.body.push(rowNodes[j]);
      } else {
        row2.push(cell3);
        j += 1;
        var arrowChar = assertSymbolNodeType(rowNodes[j]).text;
        var labels = new Array(2);
        labels[0] = {
          type: "ordgroup",
          mode: "math",
          body: []
        };
        labels[1] = {
          type: "ordgroup",
          mode: "math",
          body: []
        };
        if ("=|.".indexOf(arrowChar) > -1) ;
        else if ("<>AV".indexOf(arrowChar) > -1) {
          for (var labelNum = 0; labelNum < 2; labelNum++) {
            var inLabel = true;
            for (var k = j + 1; k < rowNodes.length; k++) {
              if (isLabelEnd(rowNodes[k], arrowChar)) {
                inLabel = false;
                j = k;
                break;
              }
              if (isStartOfArrow(rowNodes[k])) {
                throw new ParseError("Missing a " + arrowChar + " character to complete a CD arrow.", rowNodes[k]);
              }
              labels[labelNum].body.push(rowNodes[k]);
            }
            if (inLabel) {
              throw new ParseError("Missing a " + arrowChar + " character to complete a CD arrow.", rowNodes[j]);
            }
          }
        } else {
          throw new ParseError('Expected one of "<>AV=|." after @', rowNodes[j]);
        }
        var arrow = cdArrow(arrowChar, labels, parser3);
        var wrappedArrow = {
          type: "styling",
          body: [arrow],
          mode: "math",
          style: "display"
          // CD is always displaystyle.
        };
        row2.push(wrappedArrow);
        cell3 = newCell();
      }
    }
    if (i2 % 2 === 0) {
      row2.push(cell3);
    } else {
      row2.shift();
    }
    row2 = [];
    body3.push(row2);
  }
  parser3.gullet.endGroup();
  parser3.gullet.endGroup();
  var cols = new Array(body3[0].length).fill({
    type: "align",
    align: "c",
    pregap: 0.25,
    // CD package sets \enskip between columns.
    postgap: 0.25
    // So pre and post each get half an \enskip, i.e. 0.25em.
  });
  return {
    type: "array",
    mode: "math",
    body: body3,
    arraystretch: 1,
    addJot: true,
    rowGaps: [null],
    cols,
    colSeparationType: "CD",
    hLinesBeforeRow: new Array(body3.length + 1).fill([])
  };
}
defineFunction({
  type: "cdlabel",
  names: ["\\\\cdleft", "\\\\cdright"],
  props: {
    numArgs: 1
  },
  handler(_ref, args) {
    var {
      parser: parser3,
      funcName
    } = _ref;
    return {
      type: "cdlabel",
      mode: parser3.mode,
      side: funcName.slice(4),
      label: args[0]
    };
  },
  htmlBuilder(group3, options) {
    var newOptions = options.havingStyle(options.style.sup());
    var label = buildCommon.wrapFragment(buildGroup$1(group3.label, newOptions, options), options);
    label.classes.push("cd-label-" + group3.side);
    label.style.bottom = makeEm(0.8 - label.depth);
    label.height = 0;
    label.depth = 0;
    return label;
  },
  mathmlBuilder(group3, options) {
    var label = new mathMLTree.MathNode("mrow", [buildGroup2(group3.label, options)]);
    label = new mathMLTree.MathNode("mpadded", [label]);
    label.setAttribute("width", "0");
    if (group3.side === "left") {
      label.setAttribute("lspace", "-1width");
    }
    label.setAttribute("voffset", "0.7em");
    label = new mathMLTree.MathNode("mstyle", [label]);
    label.setAttribute("displaystyle", "false");
    label.setAttribute("scriptlevel", "1");
    return label;
  }
});
defineFunction({
  type: "cdlabelparent",
  names: ["\\\\cdparent"],
  props: {
    numArgs: 1
  },
  handler(_ref2, args) {
    var {
      parser: parser3
    } = _ref2;
    return {
      type: "cdlabelparent",
      mode: parser3.mode,
      fragment: args[0]
    };
  },
  htmlBuilder(group3, options) {
    var parent2 = buildCommon.wrapFragment(buildGroup$1(group3.fragment, options), options);
    parent2.classes.push("cd-vert-arrow");
    return parent2;
  },
  mathmlBuilder(group3, options) {
    return new mathMLTree.MathNode("mrow", [buildGroup2(group3.fragment, options)]);
  }
});
defineFunction({
  type: "textord",
  names: ["\\@char"],
  props: {
    numArgs: 1,
    allowedInText: true
  },
  handler(_ref, args) {
    var {
      parser: parser3
    } = _ref;
    var arg2 = assertNodeType(args[0], "ordgroup");
    var group3 = arg2.body;
    var number2 = "";
    for (var i2 = 0; i2 < group3.length; i2++) {
      var node3 = assertNodeType(group3[i2], "textord");
      number2 += node3.text;
    }
    var code7 = parseInt(number2);
    var text7;
    if (isNaN(code7)) {
      throw new ParseError("\\@char has non-numeric argument " + number2);
    } else if (code7 < 0 || code7 >= 1114111) {
      throw new ParseError("\\@char with invalid code point " + number2);
    } else if (code7 <= 65535) {
      text7 = String.fromCharCode(code7);
    } else {
      code7 -= 65536;
      text7 = String.fromCharCode((code7 >> 10) + 55296, (code7 & 1023) + 56320);
    }
    return {
      type: "textord",
      mode: parser3.mode,
      text: text7
    };
  }
});
var htmlBuilder$9 = (group3, options) => {
  var elements = buildExpression$1(group3.body, options.withColor(group3.color), false);
  return buildCommon.makeFragment(elements);
};
var mathmlBuilder$8 = (group3, options) => {
  var inner2 = buildExpression2(group3.body, options.withColor(group3.color));
  var node3 = new mathMLTree.MathNode("mstyle", inner2);
  node3.setAttribute("mathcolor", group3.color);
  return node3;
};
defineFunction({
  type: "color",
  names: ["\\textcolor"],
  props: {
    numArgs: 2,
    allowedInText: true,
    argTypes: ["color", "original"]
  },
  handler(_ref, args) {
    var {
      parser: parser3
    } = _ref;
    var color2 = assertNodeType(args[0], "color-token").color;
    var body3 = args[1];
    return {
      type: "color",
      mode: parser3.mode,
      color: color2,
      body: ordargument(body3)
    };
  },
  htmlBuilder: htmlBuilder$9,
  mathmlBuilder: mathmlBuilder$8
});
defineFunction({
  type: "color",
  names: ["\\color"],
  props: {
    numArgs: 1,
    allowedInText: true,
    argTypes: ["color"]
  },
  handler(_ref2, args) {
    var {
      parser: parser3,
      breakOnTokenText
    } = _ref2;
    var color2 = assertNodeType(args[0], "color-token").color;
    parser3.gullet.macros.set("\\current@color", color2);
    var body3 = parser3.parseExpression(true, breakOnTokenText);
    return {
      type: "color",
      mode: parser3.mode,
      color: color2,
      body: body3
    };
  },
  htmlBuilder: htmlBuilder$9,
  mathmlBuilder: mathmlBuilder$8
});
defineFunction({
  type: "cr",
  names: ["\\\\"],
  props: {
    numArgs: 0,
    numOptionalArgs: 1,
    argTypes: ["size"],
    allowedInText: true
  },
  handler(_ref, args, optArgs) {
    var {
      parser: parser3
    } = _ref;
    var size = optArgs[0];
    var newLine = !parser3.settings.displayMode || !parser3.settings.useStrictBehavior("newLineInDisplayMode", "In LaTeX, \\\\ or \\newline does nothing in display mode");
    return {
      type: "cr",
      mode: parser3.mode,
      newLine,
      size: size && assertNodeType(size, "size").value
    };
  },
  // The following builders are called only at the top level,
  // not within tabular/array environments.
  htmlBuilder(group3, options) {
    var span = buildCommon.makeSpan(["mspace"], [], options);
    if (group3.newLine) {
      span.classes.push("newline");
      if (group3.size) {
        span.style.marginTop = makeEm(calculateSize(group3.size, options));
      }
    }
    return span;
  },
  mathmlBuilder(group3, options) {
    var node3 = new mathMLTree.MathNode("mspace");
    if (group3.newLine) {
      node3.setAttribute("linebreak", "newline");
      if (group3.size) {
        node3.setAttribute("height", makeEm(calculateSize(group3.size, options)));
      }
    }
    return node3;
  }
});
var globalMap = {
  "\\global": "\\global",
  "\\long": "\\\\globallong",
  "\\\\globallong": "\\\\globallong",
  "\\def": "\\gdef",
  "\\gdef": "\\gdef",
  "\\edef": "\\xdef",
  "\\xdef": "\\xdef",
  "\\let": "\\\\globallet",
  "\\futurelet": "\\\\globalfuture"
};
var checkControlSequence = (tok) => {
  var name3 = tok.text;
  if (/^(?:[\\{}$&#^_]|EOF)$/.test(name3)) {
    throw new ParseError("Expected a control sequence", tok);
  }
  return name3;
};
var getRHS = (parser3) => {
  var tok = parser3.gullet.popToken();
  if (tok.text === "=") {
    tok = parser3.gullet.popToken();
    if (tok.text === " ") {
      tok = parser3.gullet.popToken();
    }
  }
  return tok;
};
var letCommand = (parser3, name3, tok, global2) => {
  var macro2 = parser3.gullet.macros.get(tok.text);
  if (macro2 == null) {
    tok.noexpand = true;
    macro2 = {
      tokens: [tok],
      numArgs: 0,
      // reproduce the same behavior in expansion
      unexpandable: !parser3.gullet.isExpandable(tok.text)
    };
  }
  parser3.gullet.macros.set(name3, macro2, global2);
};
defineFunction({
  type: "internal",
  names: [
    "\\global",
    "\\long",
    "\\\\globallong"
    // can’t be entered directly
  ],
  props: {
    numArgs: 0,
    allowedInText: true
  },
  handler(_ref) {
    var {
      parser: parser3,
      funcName
    } = _ref;
    parser3.consumeSpaces();
    var token = parser3.fetch();
    if (globalMap[token.text]) {
      if (funcName === "\\global" || funcName === "\\\\globallong") {
        token.text = globalMap[token.text];
      }
      return assertNodeType(parser3.parseFunction(), "internal");
    }
    throw new ParseError("Invalid token after macro prefix", token);
  }
});
defineFunction({
  type: "internal",
  names: ["\\def", "\\gdef", "\\edef", "\\xdef"],
  props: {
    numArgs: 0,
    allowedInText: true,
    primitive: true
  },
  handler(_ref2) {
    var {
      parser: parser3,
      funcName
    } = _ref2;
    var tok = parser3.gullet.popToken();
    var name3 = tok.text;
    if (/^(?:[\\{}$&#^_]|EOF)$/.test(name3)) {
      throw new ParseError("Expected a control sequence", tok);
    }
    var numArgs = 0;
    var insert;
    var delimiters2 = [[]];
    while (parser3.gullet.future().text !== "{") {
      tok = parser3.gullet.popToken();
      if (tok.text === "#") {
        if (parser3.gullet.future().text === "{") {
          insert = parser3.gullet.future();
          delimiters2[numArgs].push("{");
          break;
        }
        tok = parser3.gullet.popToken();
        if (!/^[1-9]$/.test(tok.text)) {
          throw new ParseError('Invalid argument number "' + tok.text + '"');
        }
        if (parseInt(tok.text) !== numArgs + 1) {
          throw new ParseError('Argument number "' + tok.text + '" out of order');
        }
        numArgs++;
        delimiters2.push([]);
      } else if (tok.text === "EOF") {
        throw new ParseError("Expected a macro definition");
      } else {
        delimiters2[numArgs].push(tok.text);
      }
    }
    var {
      tokens
    } = parser3.gullet.consumeArg();
    if (insert) {
      tokens.unshift(insert);
    }
    if (funcName === "\\edef" || funcName === "\\xdef") {
      tokens = parser3.gullet.expandTokens(tokens);
      tokens.reverse();
    }
    parser3.gullet.macros.set(name3, {
      tokens,
      numArgs,
      delimiters: delimiters2
    }, funcName === globalMap[funcName]);
    return {
      type: "internal",
      mode: parser3.mode
    };
  }
});
defineFunction({
  type: "internal",
  names: [
    "\\let",
    "\\\\globallet"
    // can’t be entered directly
  ],
  props: {
    numArgs: 0,
    allowedInText: true,
    primitive: true
  },
  handler(_ref3) {
    var {
      parser: parser3,
      funcName
    } = _ref3;
    var name3 = checkControlSequence(parser3.gullet.popToken());
    parser3.gullet.consumeSpaces();
    var tok = getRHS(parser3);
    letCommand(parser3, name3, tok, funcName === "\\\\globallet");
    return {
      type: "internal",
      mode: parser3.mode
    };
  }
});
defineFunction({
  type: "internal",
  names: [
    "\\futurelet",
    "\\\\globalfuture"
    // can’t be entered directly
  ],
  props: {
    numArgs: 0,
    allowedInText: true,
    primitive: true
  },
  handler(_ref4) {
    var {
      parser: parser3,
      funcName
    } = _ref4;
    var name3 = checkControlSequence(parser3.gullet.popToken());
    var middle = parser3.gullet.popToken();
    var tok = parser3.gullet.popToken();
    letCommand(parser3, name3, tok, funcName === "\\\\globalfuture");
    parser3.gullet.pushToken(tok);
    parser3.gullet.pushToken(middle);
    return {
      type: "internal",
      mode: parser3.mode
    };
  }
});
var getMetrics = function getMetrics2(symbol, font, mode) {
  var replace = symbols.math[symbol] && symbols.math[symbol].replace;
  var metrics = getCharacterMetrics(replace || symbol, font, mode);
  if (!metrics) {
    throw new Error("Unsupported symbol " + symbol + " and font size " + font + ".");
  }
  return metrics;
};
var styleWrap = function styleWrap2(delim, toStyle, options, classes) {
  var newOptions = options.havingBaseStyle(toStyle);
  var span = buildCommon.makeSpan(classes.concat(newOptions.sizingClasses(options)), [delim], options);
  var delimSizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier;
  span.height *= delimSizeMultiplier;
  span.depth *= delimSizeMultiplier;
  span.maxFontSize = newOptions.sizeMultiplier;
  return span;
};
var centerSpan = function centerSpan2(span, options, style3) {
  var newOptions = options.havingBaseStyle(style3);
  var shift = (1 - options.sizeMultiplier / newOptions.sizeMultiplier) * options.fontMetrics().axisHeight;
  span.classes.push("delimcenter");
  span.style.top = makeEm(shift);
  span.height -= shift;
  span.depth += shift;
};
var makeSmallDelim = function makeSmallDelim2(delim, style3, center, options, mode, classes) {
  var text7 = buildCommon.makeSymbol(delim, "Main-Regular", mode, options);
  var span = styleWrap(text7, style3, options, classes);
  if (center) {
    centerSpan(span, options, style3);
  }
  return span;
};
var mathrmSize = function mathrmSize2(value, size, mode, options) {
  return buildCommon.makeSymbol(value, "Size" + size + "-Regular", mode, options);
};
var makeLargeDelim = function makeLargeDelim2(delim, size, center, options, mode, classes) {
  var inner2 = mathrmSize(delim, size, mode, options);
  var span = styleWrap(buildCommon.makeSpan(["delimsizing", "size" + size], [inner2], options), Style$1.TEXT, options, classes);
  if (center) {
    centerSpan(span, options, Style$1.TEXT);
  }
  return span;
};
var makeGlyphSpan = function makeGlyphSpan2(symbol, font, mode) {
  var sizeClass;
  if (font === "Size1-Regular") {
    sizeClass = "delim-size1";
  } else {
    sizeClass = "delim-size4";
  }
  var corner = buildCommon.makeSpan(["delimsizinginner", sizeClass], [buildCommon.makeSpan([], [buildCommon.makeSymbol(symbol, font, mode)])]);
  return {
    type: "elem",
    elem: corner
  };
};
var makeInner = function makeInner2(ch, height2, options) {
  var width = fontMetricsData["Size4-Regular"][ch.charCodeAt(0)] ? fontMetricsData["Size4-Regular"][ch.charCodeAt(0)][4] : fontMetricsData["Size1-Regular"][ch.charCodeAt(0)][4];
  var path45 = new PathNode("inner", innerPath(ch, Math.round(1e3 * height2)));
  var svgNode = new SvgNode([path45], {
    "width": makeEm(width),
    "height": makeEm(height2),
    // Override CSS rule `.katex svg { width: 100% }`
    "style": "width:" + makeEm(width),
    "viewBox": "0 0 " + 1e3 * width + " " + Math.round(1e3 * height2),
    "preserveAspectRatio": "xMinYMin"
  });
  var span = buildCommon.makeSvgSpan([], [svgNode], options);
  span.height = height2;
  span.style.height = makeEm(height2);
  span.style.width = makeEm(width);
  return {
    type: "elem",
    elem: span
  };
};
var lapInEms = 8e-3;
var lap = {
  type: "kern",
  size: -1 * lapInEms
};
var verts = ["|", "\\lvert", "\\rvert", "\\vert"];
var doubleVerts = ["\\|", "\\lVert", "\\rVert", "\\Vert"];
var makeStackedDelim = function makeStackedDelim2(delim, heightTotal, center, options, mode, classes) {
  var top;
  var middle;
  var repeat2;
  var bottom;
  top = repeat2 = bottom = delim;
  middle = null;
  var font = "Size1-Regular";
  if (delim === "\\uparrow") {
    repeat2 = bottom = "\u23D0";
  } else if (delim === "\\Uparrow") {
    repeat2 = bottom = "\u2016";
  } else if (delim === "\\downarrow") {
    top = repeat2 = "\u23D0";
  } else if (delim === "\\Downarrow") {
    top = repeat2 = "\u2016";
  } else if (delim === "\\updownarrow") {
    top = "\\uparrow";
    repeat2 = "\u23D0";
    bottom = "\\downarrow";
  } else if (delim === "\\Updownarrow") {
    top = "\\Uparrow";
    repeat2 = "\u2016";
    bottom = "\\Downarrow";
  } else if (utils.contains(verts, delim)) {
    repeat2 = "\u2223";
  } else if (utils.contains(doubleVerts, delim)) {
    repeat2 = "\u2225";
  } else if (delim === "[" || delim === "\\lbrack") {
    top = "\u23A1";
    repeat2 = "\u23A2";
    bottom = "\u23A3";
    font = "Size4-Regular";
  } else if (delim === "]" || delim === "\\rbrack") {
    top = "\u23A4";
    repeat2 = "\u23A5";
    bottom = "\u23A6";
    font = "Size4-Regular";
  } else if (delim === "\\lfloor" || delim === "\u230A") {
    repeat2 = top = "\u23A2";
    bottom = "\u23A3";
    font = "Size4-Regular";
  } else if (delim === "\\lceil" || delim === "\u2308") {
    top = "\u23A1";
    repeat2 = bottom = "\u23A2";
    font = "Size4-Regular";
  } else if (delim === "\\rfloor" || delim === "\u230B") {
    repeat2 = top = "\u23A5";
    bottom = "\u23A6";
    font = "Size4-Regular";
  } else if (delim === "\\rceil" || delim === "\u2309") {
    top = "\u23A4";
    repeat2 = bottom = "\u23A5";
    font = "Size4-Regular";
  } else if (delim === "(" || delim === "\\lparen") {
    top = "\u239B";
    repeat2 = "\u239C";
    bottom = "\u239D";
    font = "Size4-Regular";
  } else if (delim === ")" || delim === "\\rparen") {
    top = "\u239E";
    repeat2 = "\u239F";
    bottom = "\u23A0";
    font = "Size4-Regular";
  } else if (delim === "\\{" || delim === "\\lbrace") {
    top = "\u23A7";
    middle = "\u23A8";
    bottom = "\u23A9";
    repeat2 = "\u23AA";
    font = "Size4-Regular";
  } else if (delim === "\\}" || delim === "\\rbrace") {
    top = "\u23AB";
    middle = "\u23AC";
    bottom = "\u23AD";
    repeat2 = "\u23AA";
    font = "Size4-Regular";
  } else if (delim === "\\lgroup" || delim === "\u27EE") {
    top = "\u23A7";
    bottom = "\u23A9";
    repeat2 = "\u23AA";
    font = "Size4-Regular";
  } else if (delim === "\\rgroup" || delim === "\u27EF") {
    top = "\u23AB";
    bottom = "\u23AD";
    repeat2 = "\u23AA";
    font = "Size4-Regular";
  } else if (delim === "\\lmoustache" || delim === "\u23B0") {
    top = "\u23A7";
    bottom = "\u23AD";
    repeat2 = "\u23AA";
    font = "Size4-Regular";
  } else if (delim === "\\rmoustache" || delim === "\u23B1") {
    top = "\u23AB";
    bottom = "\u23A9";
    repeat2 = "\u23AA";
    font = "Size4-Regular";
  }
  var topMetrics = getMetrics(top, font, mode);
  var topHeightTotal = topMetrics.height + topMetrics.depth;
  var repeatMetrics = getMetrics(repeat2, font, mode);
  var repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth;
  var bottomMetrics = getMetrics(bottom, font, mode);
  var bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth;
  var middleHeightTotal = 0;
  var middleFactor = 1;
  if (middle !== null) {
    var middleMetrics = getMetrics(middle, font, mode);
    middleHeightTotal = middleMetrics.height + middleMetrics.depth;
    middleFactor = 2;
  }
  var minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal;
  var repeatCount = Math.max(0, Math.ceil((heightTotal - minHeight) / (middleFactor * repeatHeightTotal)));
  var realHeightTotal = minHeight + repeatCount * middleFactor * repeatHeightTotal;
  var axisHeight = options.fontMetrics().axisHeight;
  if (center) {
    axisHeight *= options.sizeMultiplier;
  }
  var depth = realHeightTotal / 2 - axisHeight;
  var stack = [];
  stack.push(makeGlyphSpan(bottom, font, mode));
  stack.push(lap);
  if (middle === null) {
    var innerHeight = realHeightTotal - topHeightTotal - bottomHeightTotal + 2 * lapInEms;
    stack.push(makeInner(repeat2, innerHeight, options));
  } else {
    var _innerHeight = (realHeightTotal - topHeightTotal - bottomHeightTotal - middleHeightTotal) / 2 + 2 * lapInEms;
    stack.push(makeInner(repeat2, _innerHeight, options));
    stack.push(lap);
    stack.push(makeGlyphSpan(middle, font, mode));
    stack.push(lap);
    stack.push(makeInner(repeat2, _innerHeight, options));
  }
  stack.push(lap);
  stack.push(makeGlyphSpan(top, font, mode));
  var newOptions = options.havingBaseStyle(Style$1.TEXT);
  var inner2 = buildCommon.makeVList({
    positionType: "bottom",
    positionData: depth,
    children: stack
  }, newOptions);
  return styleWrap(buildCommon.makeSpan(["delimsizing", "mult"], [inner2], newOptions), Style$1.TEXT, options, classes);
};
var vbPad = 80;
var emPad = 0.08;
var sqrtSvg = function sqrtSvg2(sqrtName, height2, viewBoxHeight, extraViniculum, options) {
  var path45 = sqrtPath(sqrtName, extraViniculum, viewBoxHeight);
  var pathNode = new PathNode(sqrtName, path45);
  var svg3 = new SvgNode([pathNode], {
    // Note: 1000:1 ratio of viewBox to document em width.
    "width": "400em",
    "height": makeEm(height2),
    "viewBox": "0 0 400000 " + viewBoxHeight,
    "preserveAspectRatio": "xMinYMin slice"
  });
  return buildCommon.makeSvgSpan(["hide-tail"], [svg3], options);
};
var makeSqrtImage = function makeSqrtImage2(height2, options) {
  var newOptions = options.havingBaseSizing();
  var delim = traverseSequence("\\surd", height2 * newOptions.sizeMultiplier, stackLargeDelimiterSequence, newOptions);
  var sizeMultiplier = newOptions.sizeMultiplier;
  var extraViniculum = Math.max(0, options.minRuleThickness - options.fontMetrics().sqrtRuleThickness);
  var span;
  var spanHeight = 0;
  var texHeight = 0;
  var viewBoxHeight = 0;
  var advanceWidth;
  if (delim.type === "small") {
    viewBoxHeight = 1e3 + 1e3 * extraViniculum + vbPad;
    if (height2 < 1) {
      sizeMultiplier = 1;
    } else if (height2 < 1.4) {
      sizeMultiplier = 0.7;
    }
    spanHeight = (1 + extraViniculum + emPad) / sizeMultiplier;
    texHeight = (1 + extraViniculum) / sizeMultiplier;
    span = sqrtSvg("sqrtMain", spanHeight, viewBoxHeight, extraViniculum, options);
    span.style.minWidth = "0.853em";
    advanceWidth = 0.833 / sizeMultiplier;
  } else if (delim.type === "large") {
    viewBoxHeight = (1e3 + vbPad) * sizeToMaxHeight[delim.size];
    texHeight = (sizeToMaxHeight[delim.size] + extraViniculum) / sizeMultiplier;
    spanHeight = (sizeToMaxHeight[delim.size] + extraViniculum + emPad) / sizeMultiplier;
    span = sqrtSvg("sqrtSize" + delim.size, spanHeight, viewBoxHeight, extraViniculum, options);
    span.style.minWidth = "1.02em";
    advanceWidth = 1 / sizeMultiplier;
  } else {
    spanHeight = height2 + extraViniculum + emPad;
    texHeight = height2 + extraViniculum;
    viewBoxHeight = Math.floor(1e3 * height2 + extraViniculum) + vbPad;
    span = sqrtSvg("sqrtTall", spanHeight, viewBoxHeight, extraViniculum, options);
    span.style.minWidth = "0.742em";
    advanceWidth = 1.056;
  }
  span.height = texHeight;
  span.style.height = makeEm(spanHeight);
  return {
    span,
    advanceWidth,
    // Calculate the actual line width.
    // This actually should depend on the chosen font -- e.g. \boldmath
    // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and
    // have thicker rules.
    ruleWidth: (options.fontMetrics().sqrtRuleThickness + extraViniculum) * sizeMultiplier
  };
};
var stackLargeDelimiters = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\u230A", "\u230B", "\\lceil", "\\rceil", "\u2308", "\u2309", "\\surd"];
var stackAlwaysDelimiters = ["\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", "|", "\\|", "\\vert", "\\Vert", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\u27EE", "\u27EF", "\\lmoustache", "\\rmoustache", "\u23B0", "\u23B1"];
var stackNeverDelimiters = ["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"];
var sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3];
var makeSizedDelim = function makeSizedDelim2(delim, size, options, mode, classes) {
  if (delim === "<" || delim === "\\lt" || delim === "\u27E8") {
    delim = "\\langle";
  } else if (delim === ">" || delim === "\\gt" || delim === "\u27E9") {
    delim = "\\rangle";
  }
  if (utils.contains(stackLargeDelimiters, delim) || utils.contains(stackNeverDelimiters, delim)) {
    return makeLargeDelim(delim, size, false, options, mode, classes);
  } else if (utils.contains(stackAlwaysDelimiters, delim)) {
    return makeStackedDelim(delim, sizeToMaxHeight[size], false, options, mode, classes);
  } else {
    throw new ParseError("Illegal delimiter: '" + delim + "'");
  }
};
var stackNeverDelimiterSequence = [{
  type: "small",
  style: Style$1.SCRIPTSCRIPT
}, {
  type: "small",
  style: Style$1.SCRIPT
}, {
  type: "small",
  style: Style$1.TEXT
}, {
  type: "large",
  size: 1
}, {
  type: "large",
  size: 2
}, {
  type: "large",
  size: 3
}, {
  type: "large",
  size: 4
}];
var stackAlwaysDelimiterSequence = [{
  type: "small",
  style: Style$1.SCRIPTSCRIPT
}, {
  type: "small",
  style: Style$1.SCRIPT
}, {
  type: "small",
  style: Style$1.TEXT
}, {
  type: "stack"
}];
var stackLargeDelimiterSequence = [{
  type: "small",
  style: Style$1.SCRIPTSCRIPT
}, {
  type: "small",
  style: Style$1.SCRIPT
}, {
  type: "small",
  style: Style$1.TEXT
}, {
  type: "large",
  size: 1
}, {
  type: "large",
  size: 2
}, {
  type: "large",
  size: 3
}, {
  type: "large",
  size: 4
}, {
  type: "stack"
}];
var delimTypeToFont = function delimTypeToFont2(type2) {
  if (type2.type === "small") {
    return "Main-Regular";
  } else if (type2.type === "large") {
    return "Size" + type2.size + "-Regular";
  } else if (type2.type === "stack") {
    return "Size4-Regular";
  } else {
    throw new Error("Add support for delim type '" + type2.type + "' here.");
  }
};
var traverseSequence = function traverseSequence2(delim, height2, sequence, options) {
  var start = Math.min(2, 3 - options.style.size);
  for (var i2 = start; i2 < sequence.length; i2++) {
    if (sequence[i2].type === "stack") {
      break;
    }
    var metrics = getMetrics(delim, delimTypeToFont(sequence[i2]), "math");
    var heightDepth = metrics.height + metrics.depth;
    if (sequence[i2].type === "small") {
      var newOptions = options.havingBaseStyle(sequence[i2].style);
      heightDepth *= newOptions.sizeMultiplier;
    }
    if (heightDepth > height2) {
      return sequence[i2];
    }
  }
  return sequence[sequence.length - 1];
};
var makeCustomSizedDelim = function makeCustomSizedDelim2(delim, height2, center, options, mode, classes) {
  if (delim === "<" || delim === "\\lt" || delim === "\u27E8") {
    delim = "\\langle";
  } else if (delim === ">" || delim === "\\gt" || delim === "\u27E9") {
    delim = "\\rangle";
  }
  var sequence;
  if (utils.contains(stackNeverDelimiters, delim)) {
    sequence = stackNeverDelimiterSequence;
  } else if (utils.contains(stackLargeDelimiters, delim)) {
    sequence = stackLargeDelimiterSequence;
  } else {
    sequence = stackAlwaysDelimiterSequence;
  }
  var delimType = traverseSequence(delim, height2, sequence, options);
  if (delimType.type === "small") {
    return makeSmallDelim(delim, delimType.style, center, options, mode, classes);
  } else if (delimType.type === "large") {
    return makeLargeDelim(delim, delimType.size, center, options, mode, classes);
  } else {
    return makeStackedDelim(delim, height2, center, options, mode, classes);
  }
};
var makeLeftRightDelim = function makeLeftRightDelim2(delim, height2, depth, options, mode, classes) {
  var axisHeight = options.fontMetrics().axisHeight * options.sizeMultiplier;
  var delimiterFactor = 901;
  var delimiterExtend = 5 / options.fontMetrics().ptPerEm;
  var maxDistFromAxis = Math.max(height2 - axisHeight, depth + axisHeight);
  var totalHeight = Math.max(
    // In real TeX, calculations are done using integral values which are
    // 65536 per pt, or 655360 per em. So, the division here truncates in
    // TeX but doesn't here, producing different results. If we wanted to
    // exactly match TeX's calculation, we could do
    //   Math.floor(655360 * maxDistFromAxis / 500) *
    //    delimiterFactor / 655360
    // (To see the difference, compare
    //    x^{x^{\left(\rule{0.1em}{0.68em}\right)}}
    // in TeX and KaTeX)
    maxDistFromAxis / 500 * delimiterFactor,
    2 * maxDistFromAxis - delimiterExtend
  );
  return makeCustomSizedDelim(delim, totalHeight, true, options, mode, classes);
};
var delimiter = {
  sqrtImage: makeSqrtImage,
  sizedDelim: makeSizedDelim,
  sizeToMaxHeight,
  customSizedDelim: makeCustomSizedDelim,
  leftRightDelim: makeLeftRightDelim
};
var delimiterSizes = {
  "\\bigl": {
    mclass: "mopen",
    size: 1
  },
  "\\Bigl": {
    mclass: "mopen",
    size: 2
  },
  "\\biggl": {
    mclass: "mopen",
    size: 3
  },
  "\\Biggl": {
    mclass: "mopen",
    size: 4
  },
  "\\bigr": {
    mclass: "mclose",
    size: 1
  },
  "\\Bigr": {
    mclass: "mclose",
    size: 2
  },
  "\\biggr": {
    mclass: "mclose",
    size: 3
  },
  "\\Biggr": {
    mclass: "mclose",
    size: 4
  },
  "\\bigm": {
    mclass: "mrel",
    size: 1
  },
  "\\Bigm": {
    mclass: "mrel",
    size: 2
  },
  "\\biggm": {
    mclass: "mrel",
    size: 3
  },
  "\\Biggm": {
    mclass: "mrel",
    size: 4
  },
  "\\big": {
    mclass: "mord",
    size: 1
  },
  "\\Big": {
    mclass: "mord",
    size: 2
  },
  "\\bigg": {
    mclass: "mord",
    size: 3
  },
  "\\Bigg": {
    mclass: "mord",
    size: 4
  }
};
var delimiters = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\u230A", "\u230B", "\\lceil", "\\rceil", "\u2308", "\u2309", "<", ">", "\\langle", "\u27E8", "\\rangle", "\u27E9", "\\lt", "\\gt", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\u27EE", "\u27EF", "\\lmoustache", "\\rmoustache", "\u23B0", "\u23B1", "/", "\\backslash", "|", "\\vert", "\\|", "\\Vert", "\\uparrow", "\\Uparrow", "\\downarrow", "\\Downarrow", "\\updownarrow", "\\Updownarrow", "."];
function checkDelimiter(delim, context) {
  var symDelim = checkSymbolNodeType(delim);
  if (symDelim && utils.contains(delimiters, symDelim.text)) {
    return symDelim;
  } else if (symDelim) {
    throw new ParseError("Invalid delimiter '" + symDelim.text + "' after '" + context.funcName + "'", delim);
  } else {
    throw new ParseError("Invalid delimiter type '" + delim.type + "'", delim);
  }
}
defineFunction({
  type: "delimsizing",
  names: ["\\bigl", "\\Bigl", "\\biggl", "\\Biggl", "\\bigr", "\\Bigr", "\\biggr", "\\Biggr", "\\bigm", "\\Bigm", "\\biggm", "\\Biggm", "\\big", "\\Big", "\\bigg", "\\Bigg"],
  props: {
    numArgs: 1,
    argTypes: ["primitive"]
  },
  handler: (context, args) => {
    var delim = checkDelimiter(args[0], context);
    return {
      type: "delimsizing",
      mode: context.parser.mode,
      size: delimiterSizes[context.funcName].size,
      mclass: delimiterSizes[context.funcName].mclass,
      delim: delim.text
    };
  },
  htmlBuilder: (group3, options) => {
    if (group3.delim === ".") {
      return buildCommon.makeSpan([group3.mclass]);
    }
    return delimiter.sizedDelim(group3.delim, group3.size, options, group3.mode, [group3.mclass]);
  },
  mathmlBuilder: (group3) => {
    var children = [];
    if (group3.delim !== ".") {
      children.push(makeText(group3.delim, group3.mode));
    }
    var node3 = new mathMLTree.MathNode("mo", children);
    if (group3.mclass === "mopen" || group3.mclass === "mclose") {
      node3.setAttribute("fence", "true");
    } else {
      node3.setAttribute("fence", "false");
    }
    node3.setAttribute("stretchy", "true");
    var size = makeEm(delimiter.sizeToMaxHeight[group3.size]);
    node3.setAttribute("minsize", size);
    node3.setAttribute("maxsize", size);
    return node3;
  }
});
function assertParsed(group3) {
  if (!group3.body) {
    throw new Error("Bug: The leftright ParseNode wasn't fully parsed.");
  }
}
defineFunction({
  type: "leftright-right",
  names: ["\\right"],
  props: {
    numArgs: 1,
    primitive: true
  },
  handler: (context, args) => {
    var color2 = context.parser.gullet.macros.get("\\current@color");
    if (color2 && typeof color2 !== "string") {
      throw new ParseError("\\current@color set to non-string in \\right");
    }
    return {
      type: "leftright-right",
      mode: context.parser.mode,
      delim: checkDelimiter(args[0], context).text,
      color: color2
      // undefined if not set via \color
    };
  }
});
defineFunction({
  type: "leftright",
  names: ["\\left"],
  props: {
    numArgs: 1,
    primitive: true
  },
  handler: (context, args) => {
    var delim = checkDelimiter(args[0], context);
    var parser3 = context.parser;
    ++parser3.leftrightDepth;
    var body3 = parser3.parseExpression(false);
    --parser3.leftrightDepth;
    parser3.expect("\\right", false);
    var right2 = assertNodeType(parser3.parseFunction(), "leftright-right");
    return {
      type: "leftright",
      mode: parser3.mode,
      body: body3,
      left: delim.text,
      right: right2.delim,
      rightColor: right2.color
    };
  },
  htmlBuilder: (group3, options) => {
    assertParsed(group3);
    var inner2 = buildExpression$1(group3.body, options, true, ["mopen", "mclose"]);
    var innerHeight = 0;
    var innerDepth = 0;
    var hadMiddle = false;
    for (var i2 = 0; i2 < inner2.length; i2++) {
      if (inner2[i2].isMiddle) {
        hadMiddle = true;
      } else {
        innerHeight = Math.max(inner2[i2].height, innerHeight);
        innerDepth = Math.max(inner2[i2].depth, innerDepth);
      }
    }
    innerHeight *= options.sizeMultiplier;
    innerDepth *= options.sizeMultiplier;
    var leftDelim;
    if (group3.left === ".") {
      leftDelim = makeNullDelimiter(options, ["mopen"]);
    } else {
      leftDelim = delimiter.leftRightDelim(group3.left, innerHeight, innerDepth, options, group3.mode, ["mopen"]);
    }
    inner2.unshift(leftDelim);
    if (hadMiddle) {
      for (var _i = 1; _i < inner2.length; _i++) {
        var middleDelim = inner2[_i];
        var isMiddle = middleDelim.isMiddle;
        if (isMiddle) {
          inner2[_i] = delimiter.leftRightDelim(isMiddle.delim, innerHeight, innerDepth, isMiddle.options, group3.mode, []);
        }
      }
    }
    var rightDelim;
    if (group3.right === ".") {
      rightDelim = makeNullDelimiter(options, ["mclose"]);
    } else {
      var colorOptions = group3.rightColor ? options.withColor(group3.rightColor) : options;
      rightDelim = delimiter.leftRightDelim(group3.right, innerHeight, innerDepth, colorOptions, group3.mode, ["mclose"]);
    }
    inner2.push(rightDelim);
    return buildCommon.makeSpan(["minner"], inner2, options);
  },
  mathmlBuilder: (group3, options) => {
    assertParsed(group3);
    var inner2 = buildExpression2(group3.body, options);
    if (group3.left !== ".") {
      var leftNode = new mathMLTree.MathNode("mo", [makeText(group3.left, group3.mode)]);
      leftNode.setAttribute("fence", "true");
      inner2.unshift(leftNode);
    }
    if (group3.right !== ".") {
      var rightNode = new mathMLTree.MathNode("mo", [makeText(group3.right, group3.mode)]);
      rightNode.setAttribute("fence", "true");
      if (group3.rightColor) {
        rightNode.setAttribute("mathcolor", group3.rightColor);
      }
      inner2.push(rightNode);
    }
    return makeRow(inner2);
  }
});
defineFunction({
  type: "middle",
  names: ["\\middle"],
  props: {
    numArgs: 1,
    primitive: true
  },
  handler: (context, args) => {
    var delim = checkDelimiter(args[0], context);
    if (!context.parser.leftrightDepth) {
      throw new ParseError("\\middle without preceding \\left", delim);
    }
    return {
      type: "middle",
      mode: context.parser.mode,
      delim: delim.text
    };
  },
  htmlBuilder: (group3, options) => {
    var middleDelim;
    if (group3.delim === ".") {
      middleDelim = makeNullDelimiter(options, []);
    } else {
      middleDelim = delimiter.sizedDelim(group3.delim, 1, options, group3.mode, []);
      var isMiddle = {
        delim: group3.delim,
        options
      };
      middleDelim.isMiddle = isMiddle;
    }
    return middleDelim;
  },
  mathmlBuilder: (group3, options) => {
    var textNode = group3.delim === "\\vert" || group3.delim === "|" ? makeText("|", "text") : makeText(group3.delim, group3.mode);
    var middleNode = new mathMLTree.MathNode("mo", [textNode]);
    middleNode.setAttribute("fence", "true");
    middleNode.setAttribute("lspace", "0.05em");
    middleNode.setAttribute("rspace", "0.05em");
    return middleNode;
  }
});
var htmlBuilder$8 = (group3, options) => {
  var inner2 = buildCommon.wrapFragment(buildGroup$1(group3.body, options), options);
  var label = group3.label.substr(1);
  var scale = options.sizeMultiplier;
  var img2;
  var imgShift = 0;
  var isSingleChar = utils.isCharacterBox(group3.body);
  if (label === "sout") {
    img2 = buildCommon.makeSpan(["stretchy", "sout"]);
    img2.height = options.fontMetrics().defaultRuleThickness / scale;
    imgShift = -0.5 * options.fontMetrics().xHeight;
  } else if (label === "phase") {
    var lineWeight = calculateSize({
      number: 0.6,
      unit: "pt"
    }, options);
    var clearance = calculateSize({
      number: 0.35,
      unit: "ex"
    }, options);
    var newOptions = options.havingBaseSizing();
    scale = scale / newOptions.sizeMultiplier;
    var angleHeight = inner2.height + inner2.depth + lineWeight + clearance;
    inner2.style.paddingLeft = makeEm(angleHeight / 2 + lineWeight);
    var viewBoxHeight = Math.floor(1e3 * angleHeight * scale);
    var path45 = phasePath(viewBoxHeight);
    var svgNode = new SvgNode([new PathNode("phase", path45)], {
      "width": "400em",
      "height": makeEm(viewBoxHeight / 1e3),
      "viewBox": "0 0 400000 " + viewBoxHeight,
      "preserveAspectRatio": "xMinYMin slice"
    });
    img2 = buildCommon.makeSvgSpan(["hide-tail"], [svgNode], options);
    img2.style.height = makeEm(angleHeight);
    imgShift = inner2.depth + lineWeight + clearance;
  } else {
    if (/cancel/.test(label)) {
      if (!isSingleChar) {
        inner2.classes.push("cancel-pad");
      }
    } else if (label === "angl") {
      inner2.classes.push("anglpad");
    } else {
      inner2.classes.push("boxpad");
    }
    var topPad = 0;
    var bottomPad = 0;
    var ruleThickness = 0;
    if (/box/.test(label)) {
      ruleThickness = Math.max(
        options.fontMetrics().fboxrule,
        // default
        options.minRuleThickness
        // User override.
      );
      topPad = options.fontMetrics().fboxsep + (label === "colorbox" ? 0 : ruleThickness);
      bottomPad = topPad;
    } else if (label === "angl") {
      ruleThickness = Math.max(options.fontMetrics().defaultRuleThickness, options.minRuleThickness);
      topPad = 4 * ruleThickness;
      bottomPad = Math.max(0, 0.25 - inner2.depth);
    } else {
      topPad = isSingleChar ? 0.2 : 0;
      bottomPad = topPad;
    }
    img2 = stretchy.encloseSpan(inner2, label, topPad, bottomPad, options);
    if (/fbox|boxed|fcolorbox/.test(label)) {
      img2.style.borderStyle = "solid";
      img2.style.borderWidth = makeEm(ruleThickness);
    } else if (label === "angl" && ruleThickness !== 0.049) {
      img2.style.borderTopWidth = makeEm(ruleThickness);
      img2.style.borderRightWidth = makeEm(ruleThickness);
    }
    imgShift = inner2.depth + bottomPad;
    if (group3.backgroundColor) {
      img2.style.backgroundColor = group3.backgroundColor;
      if (group3.borderColor) {
        img2.style.borderColor = group3.borderColor;
      }
    }
  }
  var vlist;
  if (group3.backgroundColor) {
    vlist = buildCommon.makeVList({
      positionType: "individualShift",
      children: [
        // Put the color background behind inner;
        {
          type: "elem",
          elem: img2,
          shift: imgShift
        },
        {
          type: "elem",
          elem: inner2,
          shift: 0
        }
      ]
    }, options);
  } else {
    var classes = /cancel|phase/.test(label) ? ["svg-align"] : [];
    vlist = buildCommon.makeVList({
      positionType: "individualShift",
      children: [
        // Write the \cancel stroke on top of inner.
        {
          type: "elem",
          elem: inner2,
          shift: 0
        },
        {
          type: "elem",
          elem: img2,
          shift: imgShift,
          wrapperClasses: classes
        }
      ]
    }, options);
  }
  if (/cancel/.test(label)) {
    vlist.height = inner2.height;
    vlist.depth = inner2.depth;
  }
  if (/cancel/.test(label) && !isSingleChar) {
    return buildCommon.makeSpan(["mord", "cancel-lap"], [vlist], options);
  } else {
    return buildCommon.makeSpan(["mord"], [vlist], options);
  }
};
var mathmlBuilder$7 = (group3, options) => {
  var fboxsep = 0;
  var node3 = new mathMLTree.MathNode(group3.label.indexOf("colorbox") > -1 ? "mpadded" : "menclose", [buildGroup2(group3.body, options)]);
  switch (group3.label) {
    case "\\cancel":
      node3.setAttribute("notation", "updiagonalstrike");
      break;
    case "\\bcancel":
      node3.setAttribute("notation", "downdiagonalstrike");
      break;
    case "\\phase":
      node3.setAttribute("notation", "phasorangle");
      break;
    case "\\sout":
      node3.setAttribute("notation", "horizontalstrike");
      break;
    case "\\fbox":
      node3.setAttribute("notation", "box");
      break;
    case "\\angl":
      node3.setAttribute("notation", "actuarial");
      break;
    case "\\fcolorbox":
    case "\\colorbox":
      fboxsep = options.fontMetrics().fboxsep * options.fontMetrics().ptPerEm;
      node3.setAttribute("width", "+" + 2 * fboxsep + "pt");
      node3.setAttribute("height", "+" + 2 * fboxsep + "pt");
      node3.setAttribute("lspace", fboxsep + "pt");
      node3.setAttribute("voffset", fboxsep + "pt");
      if (group3.label === "\\fcolorbox") {
        var thk = Math.max(
          options.fontMetrics().fboxrule,
          // default
          options.minRuleThickness
          // user override
        );
        node3.setAttribute("style", "border: " + thk + "em solid " + String(group3.borderColor));
      }
      break;
    case "\\xcancel":
      node3.setAttribute("notation", "updiagonalstrike downdiagonalstrike");
      break;
  }
  if (group3.backgroundColor) {
    node3.setAttribute("mathbackground", group3.backgroundColor);
  }
  return node3;
};
defineFunction({
  type: "enclose",
  names: ["\\colorbox"],
  props: {
    numArgs: 2,
    allowedInText: true,
    argTypes: ["color", "text"]
  },
  handler(_ref, args, optArgs) {
    var {
      parser: parser3,
      funcName
    } = _ref;
    var color2 = assertNodeType(args[0], "color-token").color;
    var body3 = args[1];
    return {
      type: "enclose",
      mode: parser3.mode,
      label: funcName,
      backgroundColor: color2,
      body: body3
    };
  },
  htmlBuilder: htmlBuilder$8,
  mathmlBuilder: mathmlBuilder$7
});
defineFunction({
  type: "enclose",
  names: ["\\fcolorbox"],
  props: {
    numArgs: 3,
    allowedInText: true,
    argTypes: ["color", "color", "text"]
  },
  handler(_ref2, args, optArgs) {
    var {
      parser: parser3,
      funcName
    } = _ref2;
    var borderColor = assertNodeType(args[0], "color-token").color;
    var backgroundColor = assertNodeType(args[1], "color-token").color;
    var body3 = args[2];
    return {
      type: "enclose",
      mode: parser3.mode,
      label: funcName,
      backgroundColor,
      borderColor,
      body: body3
    };
  },
  htmlBuilder: htmlBuilder$8,
  mathmlBuilder: mathmlBuilder$7
});
defineFunction({
  type: "enclose",
  names: ["\\fbox"],
  props: {
    numArgs: 1,
    argTypes: ["hbox"],
    allowedInText: true
  },
  handler(_ref3, args) {
    var {
      parser: parser3
    } = _ref3;
    return {
      type: "enclose",
      mode: parser3.mode,
      label: "\\fbox",
      body: args[0]
    };
  }
});
defineFunction({
  type: "enclose",
  names: ["\\cancel", "\\bcancel", "\\xcancel", "\\sout", "\\phase"],
  props: {
    numArgs: 1
  },
  handler(_ref4, args) {
    var {
      parser: parser3,
      funcName
    } = _ref4;
    var body3 = args[0];
    return {
      type: "enclose",
      mode: parser3.mode,
      label: funcName,
      body: body3
    };
  },
  htmlBuilder: htmlBuilder$8,
  mathmlBuilder: mathmlBuilder$7
});
defineFunction({
  type: "enclose",
  names: ["\\angl"],
  props: {
    numArgs: 1,
    argTypes: ["hbox"],
    allowedInText: false
  },
  handler(_ref5, args) {
    var {
      parser: parser3
    } = _ref5;
    return {
      type: "enclose",
      mode: parser3.mode,
      label: "\\angl",
      body: args[0]
    };
  }
});
var _environments = {};
function defineEnvironment(_ref) {
  var {
    type: type2,
    names,
    props,
    handler,
    htmlBuilder: htmlBuilder3,
    mathmlBuilder: mathmlBuilder3
  } = _ref;
  var data = {
    type: type2,
    numArgs: props.numArgs || 0,
    allowedInText: false,
    numOptionalArgs: 0,
    handler
  };
  for (var i2 = 0; i2 < names.length; ++i2) {
    _environments[names[i2]] = data;
  }
  if (htmlBuilder3) {
    _htmlGroupBuilders[type2] = htmlBuilder3;
  }
  if (mathmlBuilder3) {
    _mathmlGroupBuilders[type2] = mathmlBuilder3;
  }
}
var _macros = {};
function defineMacro(name3, body3) {
  _macros[name3] = body3;
}
function getHLines(parser3) {
  var hlineInfo = [];
  parser3.consumeSpaces();
  var nxt = parser3.fetch().text;
  while (nxt === "\\hline" || nxt === "\\hdashline") {
    parser3.consume();
    hlineInfo.push(nxt === "\\hdashline");
    parser3.consumeSpaces();
    nxt = parser3.fetch().text;
  }
  return hlineInfo;
}
var validateAmsEnvironmentContext = (context) => {
  var settings = context.parser.settings;
  if (!settings.displayMode) {
    throw new ParseError("{" + context.envName + "} can be used only in display mode.");
  }
};
function getAutoTag(name3) {
  if (name3.indexOf("ed") === -1) {
    return name3.indexOf("*") === -1;
  }
}
function parseArray(parser3, _ref, style3) {
  var {
    hskipBeforeAndAfter,
    addJot,
    cols,
    arraystretch,
    colSeparationType,
    autoTag,
    singleRow,
    emptySingleRow,
    maxNumCols,
    leqno
  } = _ref;
  parser3.gullet.beginGroup();
  if (!singleRow) {
    parser3.gullet.macros.set("\\cr", "\\\\\\relax");
  }
  if (!arraystretch) {
    var stretch = parser3.gullet.expandMacroAsText("\\arraystretch");
    if (stretch == null) {
      arraystretch = 1;
    } else {
      arraystretch = parseFloat(stretch);
      if (!arraystretch || arraystretch < 0) {
        throw new ParseError("Invalid \\arraystretch: " + stretch);
      }
    }
  }
  parser3.gullet.beginGroup();
  var row2 = [];
  var body3 = [row2];
  var rowGaps = [];
  var hLinesBeforeRow = [];
  var tags = autoTag != null ? [] : void 0;
  function beginRow() {
    if (autoTag) {
      parser3.gullet.macros.set("\\@eqnsw", "1", true);
    }
  }
  function endRow() {
    if (tags) {
      if (parser3.gullet.macros.get("\\df@tag")) {
        tags.push(parser3.subparse([new Token("\\df@tag")]));
        parser3.gullet.macros.set("\\df@tag", void 0, true);
      } else {
        tags.push(Boolean(autoTag) && parser3.gullet.macros.get("\\@eqnsw") === "1");
      }
    }
  }
  beginRow();
  hLinesBeforeRow.push(getHLines(parser3));
  while (true) {
    var cell3 = parser3.parseExpression(false, singleRow ? "\\end" : "\\\\");
    parser3.gullet.endGroup();
    parser3.gullet.beginGroup();
    cell3 = {
      type: "ordgroup",
      mode: parser3.mode,
      body: cell3
    };
    if (style3) {
      cell3 = {
        type: "styling",
        mode: parser3.mode,
        style: style3,
        body: [cell3]
      };
    }
    row2.push(cell3);
    var next = parser3.fetch().text;
    if (next === "&") {
      if (maxNumCols && row2.length === maxNumCols) {
        if (singleRow || colSeparationType) {
          throw new ParseError("Too many tab characters: &", parser3.nextToken);
        } else {
          parser3.settings.reportNonstrict("textEnv", "Too few columns specified in the {array} column argument.");
        }
      }
      parser3.consume();
    } else if (next === "\\end") {
      endRow();
      if (row2.length === 1 && cell3.type === "styling" && cell3.body[0].body.length === 0 && (body3.length > 1 || !emptySingleRow)) {
        body3.pop();
      }
      if (hLinesBeforeRow.length < body3.length + 1) {
        hLinesBeforeRow.push([]);
      }
      break;
    } else if (next === "\\\\") {
      parser3.consume();
      var size = void 0;
      if (parser3.gullet.future().text !== " ") {
        size = parser3.parseSizeGroup(true);
      }
      rowGaps.push(size ? size.value : null);
      endRow();
      hLinesBeforeRow.push(getHLines(parser3));
      row2 = [];
      body3.push(row2);
      beginRow();
    } else {
      throw new ParseError("Expected & or \\\\ or \\cr or \\end", parser3.nextToken);
    }
  }
  parser3.gullet.endGroup();
  parser3.gullet.endGroup();
  return {
    type: "array",
    mode: parser3.mode,
    addJot,
    arraystretch,
    body: body3,
    cols,
    rowGaps,
    hskipBeforeAndAfter,
    hLinesBeforeRow,
    colSeparationType,
    tags,
    leqno
  };
}
function dCellStyle(envName) {
  if (envName.substr(0, 1) === "d") {
    return "display";
  } else {
    return "text";
  }
}
var htmlBuilder$7 = function htmlBuilder(group3, options) {
  var r2;
  var c;
  var nr = group3.body.length;
  var hLinesBeforeRow = group3.hLinesBeforeRow;
  var nc = 0;
  var body3 = new Array(nr);
  var hlines = [];
  var ruleThickness = Math.max(
    // From LaTeX \showthe\arrayrulewidth. Equals 0.04 em.
    options.fontMetrics().arrayRuleWidth,
    options.minRuleThickness
    // User override.
  );
  var pt = 1 / options.fontMetrics().ptPerEm;
  var arraycolsep = 5 * pt;
  if (group3.colSeparationType && group3.colSeparationType === "small") {
    var localMultiplier = options.havingStyle(Style$1.SCRIPT).sizeMultiplier;
    arraycolsep = 0.2778 * (localMultiplier / options.sizeMultiplier);
  }
  var baselineskip = group3.colSeparationType === "CD" ? calculateSize({
    number: 3,
    unit: "ex"
  }, options) : 12 * pt;
  var jot = 3 * pt;
  var arrayskip = group3.arraystretch * baselineskip;
  var arstrutHeight = 0.7 * arrayskip;
  var arstrutDepth = 0.3 * arrayskip;
  var totalHeight = 0;
  function setHLinePos(hlinesInGap) {
    for (var i2 = 0; i2 < hlinesInGap.length; ++i2) {
      if (i2 > 0) {
        totalHeight += 0.25;
      }
      hlines.push({
        pos: totalHeight,
        isDashed: hlinesInGap[i2]
      });
    }
  }
  setHLinePos(hLinesBeforeRow[0]);
  for (r2 = 0; r2 < group3.body.length; ++r2) {
    var inrow = group3.body[r2];
    var height2 = arstrutHeight;
    var depth = arstrutDepth;
    if (nc < inrow.length) {
      nc = inrow.length;
    }
    var outrow = new Array(inrow.length);
    for (c = 0; c < inrow.length; ++c) {
      var elt = buildGroup$1(inrow[c], options);
      if (depth < elt.depth) {
        depth = elt.depth;
      }
      if (height2 < elt.height) {
        height2 = elt.height;
      }
      outrow[c] = elt;
    }
    var rowGap = group3.rowGaps[r2];
    var gap = 0;
    if (rowGap) {
      gap = calculateSize(rowGap, options);
      if (gap > 0) {
        gap += arstrutDepth;
        if (depth < gap) {
          depth = gap;
        }
        gap = 0;
      }
    }
    if (group3.addJot) {
      depth += jot;
    }
    outrow.height = height2;
    outrow.depth = depth;
    totalHeight += height2;
    outrow.pos = totalHeight;
    totalHeight += depth + gap;
    body3[r2] = outrow;
    setHLinePos(hLinesBeforeRow[r2 + 1]);
  }
  var offset = totalHeight / 2 + options.fontMetrics().axisHeight;
  var colDescriptions = group3.cols || [];
  var cols = [];
  var colSep;
  var colDescrNum;
  var tagSpans = [];
  if (group3.tags && group3.tags.some((tag2) => tag2)) {
    for (r2 = 0; r2 < nr; ++r2) {
      var rw = body3[r2];
      var shift = rw.pos - offset;
      var tag = group3.tags[r2];
      var tagSpan = void 0;
      if (tag === true) {
        tagSpan = buildCommon.makeSpan(["eqn-num"], [], options);
      } else if (tag === false) {
        tagSpan = buildCommon.makeSpan([], [], options);
      } else {
        tagSpan = buildCommon.makeSpan([], buildExpression$1(tag, options, true), options);
      }
      tagSpan.depth = rw.depth;
      tagSpan.height = rw.height;
      tagSpans.push({
        type: "elem",
        elem: tagSpan,
        shift
      });
    }
  }
  for (
    c = 0, colDescrNum = 0;
    // Continue while either there are more columns or more column
    // descriptions, so trailing separators don't get lost.
    c < nc || colDescrNum < colDescriptions.length;
    ++c, ++colDescrNum
  ) {
    var colDescr = colDescriptions[colDescrNum] || {};
    var firstSeparator = true;
    while (colDescr.type === "separator") {
      if (!firstSeparator) {
        colSep = buildCommon.makeSpan(["arraycolsep"], []);
        colSep.style.width = makeEm(options.fontMetrics().doubleRuleSep);
        cols.push(colSep);
      }
      if (colDescr.separator === "|" || colDescr.separator === ":") {
        var lineType = colDescr.separator === "|" ? "solid" : "dashed";
        var separator = buildCommon.makeSpan(["vertical-separator"], [], options);
        separator.style.height = makeEm(totalHeight);
        separator.style.borderRightWidth = makeEm(ruleThickness);
        separator.style.borderRightStyle = lineType;
        separator.style.margin = "0 " + makeEm(-ruleThickness / 2);
        var _shift = totalHeight - offset;
        if (_shift) {
          separator.style.verticalAlign = makeEm(-_shift);
        }
        cols.push(separator);
      } else {
        throw new ParseError("Invalid separator type: " + colDescr.separator);
      }
      colDescrNum++;
      colDescr = colDescriptions[colDescrNum] || {};
      firstSeparator = false;
    }
    if (c >= nc) {
      continue;
    }
    var sepwidth = void 0;
    if (c > 0 || group3.hskipBeforeAndAfter) {
      sepwidth = utils.deflt(colDescr.pregap, arraycolsep);
      if (sepwidth !== 0) {
        colSep = buildCommon.makeSpan(["arraycolsep"], []);
        colSep.style.width = makeEm(sepwidth);
        cols.push(colSep);
      }
    }
    var col = [];
    for (r2 = 0; r2 < nr; ++r2) {
      var row2 = body3[r2];
      var elem = row2[c];
      if (!elem) {
        continue;
      }
      var _shift2 = row2.pos - offset;
      elem.depth = row2.depth;
      elem.height = row2.height;
      col.push({
        type: "elem",
        elem,
        shift: _shift2
      });
    }
    col = buildCommon.makeVList({
      positionType: "individualShift",
      children: col
    }, options);
    col = buildCommon.makeSpan(["col-align-" + (colDescr.align || "c")], [col]);
    cols.push(col);
    if (c < nc - 1 || group3.hskipBeforeAndAfter) {
      sepwidth = utils.deflt(colDescr.postgap, arraycolsep);
      if (sepwidth !== 0) {
        colSep = buildCommon.makeSpan(["arraycolsep"], []);
        colSep.style.width = makeEm(sepwidth);
        cols.push(colSep);
      }
    }
  }
  body3 = buildCommon.makeSpan(["mtable"], cols);
  if (hlines.length > 0) {
    var line2 = buildCommon.makeLineSpan("hline", options, ruleThickness);
    var dashes = buildCommon.makeLineSpan("hdashline", options, ruleThickness);
    var vListElems = [{
      type: "elem",
      elem: body3,
      shift: 0
    }];
    while (hlines.length > 0) {
      var hline = hlines.pop();
      var lineShift = hline.pos - offset;
      if (hline.isDashed) {
        vListElems.push({
          type: "elem",
          elem: dashes,
          shift: lineShift
        });
      } else {
        vListElems.push({
          type: "elem",
          elem: line2,
          shift: lineShift
        });
      }
    }
    body3 = buildCommon.makeVList({
      positionType: "individualShift",
      children: vListElems
    }, options);
  }
  if (tagSpans.length === 0) {
    return buildCommon.makeSpan(["mord"], [body3], options);
  } else {
    var eqnNumCol = buildCommon.makeVList({
      positionType: "individualShift",
      children: tagSpans
    }, options);
    eqnNumCol = buildCommon.makeSpan(["tag"], [eqnNumCol], options);
    return buildCommon.makeFragment([body3, eqnNumCol]);
  }
};
var alignMap = {
  c: "center ",
  l: "left ",
  r: "right "
};
var mathmlBuilder$6 = function mathmlBuilder(group3, options) {
  var tbl = [];
  var glue = new mathMLTree.MathNode("mtd", [], ["mtr-glue"]);
  var tag = new mathMLTree.MathNode("mtd", [], ["mml-eqn-num"]);
  for (var i2 = 0; i2 < group3.body.length; i2++) {
    var rw = group3.body[i2];
    var row2 = [];
    for (var j = 0; j < rw.length; j++) {
      row2.push(new mathMLTree.MathNode("mtd", [buildGroup2(rw[j], options)]));
    }
    if (group3.tags && group3.tags[i2]) {
      row2.unshift(glue);
      row2.push(glue);
      if (group3.leqno) {
        row2.unshift(tag);
      } else {
        row2.push(tag);
      }
    }
    tbl.push(new mathMLTree.MathNode("mtr", row2));
  }
  var table5 = new mathMLTree.MathNode("mtable", tbl);
  var gap = group3.arraystretch === 0.5 ? 0.1 : 0.16 + group3.arraystretch - 1 + (group3.addJot ? 0.09 : 0);
  table5.setAttribute("rowspacing", makeEm(gap));
  var menclose = "";
  var align = "";
  if (group3.cols && group3.cols.length > 0) {
    var cols = group3.cols;
    var columnLines = "";
    var prevTypeWasAlign = false;
    var iStart = 0;
    var iEnd = cols.length;
    if (cols[0].type === "separator") {
      menclose += "top ";
      iStart = 1;
    }
    if (cols[cols.length - 1].type === "separator") {
      menclose += "bottom ";
      iEnd -= 1;
    }
    for (var _i = iStart; _i < iEnd; _i++) {
      if (cols[_i].type === "align") {
        align += alignMap[cols[_i].align];
        if (prevTypeWasAlign) {
          columnLines += "none ";
        }
        prevTypeWasAlign = true;
      } else if (cols[_i].type === "separator") {
        if (prevTypeWasAlign) {
          columnLines += cols[_i].separator === "|" ? "solid " : "dashed ";
          prevTypeWasAlign = false;
        }
      }
    }
    table5.setAttribute("columnalign", align.trim());
    if (/[sd]/.test(columnLines)) {
      table5.setAttribute("columnlines", columnLines.trim());
    }
  }
  if (group3.colSeparationType === "align") {
    var _cols = group3.cols || [];
    var spacing2 = "";
    for (var _i2 = 1; _i2 < _cols.length; _i2++) {
      spacing2 += _i2 % 2 ? "0em " : "1em ";
    }
    table5.setAttribute("columnspacing", spacing2.trim());
  } else if (group3.colSeparationType === "alignat" || group3.colSeparationType === "gather") {
    table5.setAttribute("columnspacing", "0em");
  } else if (group3.colSeparationType === "small") {
    table5.setAttribute("columnspacing", "0.2778em");
  } else if (group3.colSeparationType === "CD") {
    table5.setAttribute("columnspacing", "0.5em");
  } else {
    table5.setAttribute("columnspacing", "1em");
  }
  var rowLines = "";
  var hlines = group3.hLinesBeforeRow;
  menclose += hlines[0].length > 0 ? "left " : "";
  menclose += hlines[hlines.length - 1].length > 0 ? "right " : "";
  for (var _i3 = 1; _i3 < hlines.length - 1; _i3++) {
    rowLines += hlines[_i3].length === 0 ? "none " : hlines[_i3][0] ? "dashed " : "solid ";
  }
  if (/[sd]/.test(rowLines)) {
    table5.setAttribute("rowlines", rowLines.trim());
  }
  if (menclose !== "") {
    table5 = new mathMLTree.MathNode("menclose", [table5]);
    table5.setAttribute("notation", menclose.trim());
  }
  if (group3.arraystretch && group3.arraystretch < 1) {
    table5 = new mathMLTree.MathNode("mstyle", [table5]);
    table5.setAttribute("scriptlevel", "1");
  }
  return table5;
};
var alignedHandler = function alignedHandler2(context, args) {
  if (context.envName.indexOf("ed") === -1) {
    validateAmsEnvironmentContext(context);
  }
  var cols = [];
  var separationType = context.envName.indexOf("at") > -1 ? "alignat" : "align";
  var isSplit = context.envName === "split";
  var res = parseArray(context.parser, {
    cols,
    addJot: true,
    autoTag: isSplit ? void 0 : getAutoTag(context.envName),
    emptySingleRow: true,
    colSeparationType: separationType,
    maxNumCols: isSplit ? 2 : void 0,
    leqno: context.parser.settings.leqno
  }, "display");
  var numMaths;
  var numCols = 0;
  var emptyGroup = {
    type: "ordgroup",
    mode: context.mode,
    body: []
  };
  if (args[0] && args[0].type === "ordgroup") {
    var arg0 = "";
    for (var i2 = 0; i2 < args[0].body.length; i2++) {
      var textord2 = assertNodeType(args[0].body[i2], "textord");
      arg0 += textord2.text;
    }
    numMaths = Number(arg0);
    numCols = numMaths * 2;
  }
  var isAligned = !numCols;
  res.body.forEach(function(row2) {
    for (var _i4 = 1; _i4 < row2.length; _i4 += 2) {
      var styling = assertNodeType(row2[_i4], "styling");
      var ordgroup = assertNodeType(styling.body[0], "ordgroup");
      ordgroup.body.unshift(emptyGroup);
    }
    if (!isAligned) {
      var curMaths = row2.length / 2;
      if (numMaths < curMaths) {
        throw new ParseError("Too many math in a row: " + ("expected " + numMaths + ", but got " + curMaths), row2[0]);
      }
    } else if (numCols < row2.length) {
      numCols = row2.length;
    }
  });
  for (var _i5 = 0; _i5 < numCols; ++_i5) {
    var align = "r";
    var pregap = 0;
    if (_i5 % 2 === 1) {
      align = "l";
    } else if (_i5 > 0 && isAligned) {
      pregap = 1;
    }
    cols[_i5] = {
      type: "align",
      align,
      pregap,
      postgap: 0
    };
  }
  res.colSeparationType = isAligned ? "align" : "alignat";
  return res;
};
defineEnvironment({
  type: "array",
  names: ["array", "darray"],
  props: {
    numArgs: 1
  },
  handler(context, args) {
    var symNode = checkSymbolNodeType(args[0]);
    var colalign = symNode ? [args[0]] : assertNodeType(args[0], "ordgroup").body;
    var cols = colalign.map(function(nde) {
      var node3 = assertSymbolNodeType(nde);
      var ca = node3.text;
      if ("lcr".indexOf(ca) !== -1) {
        return {
          type: "align",
          align: ca
        };
      } else if (ca === "|") {
        return {
          type: "separator",
          separator: "|"
        };
      } else if (ca === ":") {
        return {
          type: "separator",
          separator: ":"
        };
      }
      throw new ParseError("Unknown column alignment: " + ca, nde);
    });
    var res = {
      cols,
      hskipBeforeAndAfter: true,
      // \@preamble in lttab.dtx
      maxNumCols: cols.length
    };
    return parseArray(context.parser, res, dCellStyle(context.envName));
  },
  htmlBuilder: htmlBuilder$7,
  mathmlBuilder: mathmlBuilder$6
});
defineEnvironment({
  type: "array",
  names: ["matrix", "pmatrix", "bmatrix", "Bmatrix", "vmatrix", "Vmatrix", "matrix*", "pmatrix*", "bmatrix*", "Bmatrix*", "vmatrix*", "Vmatrix*"],
  props: {
    numArgs: 0
  },
  handler(context) {
    var delimiters2 = {
      "matrix": null,
      "pmatrix": ["(", ")"],
      "bmatrix": ["[", "]"],
      "Bmatrix": ["\\{", "\\}"],
      "vmatrix": ["|", "|"],
      "Vmatrix": ["\\Vert", "\\Vert"]
    }[context.envName.replace("*", "")];
    var colAlign = "c";
    var payload = {
      hskipBeforeAndAfter: false,
      cols: [{
        type: "align",
        align: colAlign
      }]
    };
    if (context.envName.charAt(context.envName.length - 1) === "*") {
      var parser3 = context.parser;
      parser3.consumeSpaces();
      if (parser3.fetch().text === "[") {
        parser3.consume();
        parser3.consumeSpaces();
        colAlign = parser3.fetch().text;
        if ("lcr".indexOf(colAlign) === -1) {
          throw new ParseError("Expected l or c or r", parser3.nextToken);
        }
        parser3.consume();
        parser3.consumeSpaces();
        parser3.expect("]");
        parser3.consume();
        payload.cols = [{
          type: "align",
          align: colAlign
        }];
      }
    }
    var res = parseArray(context.parser, payload, dCellStyle(context.envName));
    var numCols = Math.max(0, ...res.body.map((row2) => row2.length));
    res.cols = new Array(numCols).fill({
      type: "align",
      align: colAlign
    });
    return delimiters2 ? {
      type: "leftright",
      mode: context.mode,
      body: [res],
      left: delimiters2[0],
      right: delimiters2[1],
      rightColor: void 0
      // \right uninfluenced by \color in array
    } : res;
  },
  htmlBuilder: htmlBuilder$7,
  mathmlBuilder: mathmlBuilder$6
});
defineEnvironment({
  type: "array",
  names: ["smallmatrix"],
  props: {
    numArgs: 0
  },
  handler(context) {
    var payload = {
      arraystretch: 0.5
    };
    var res = parseArray(context.parser, payload, "script");
    res.colSeparationType = "small";
    return res;
  },
  htmlBuilder: htmlBuilder$7,
  mathmlBuilder: mathmlBuilder$6
});
defineEnvironment({
  type: "array",
  names: ["subarray"],
  props: {
    numArgs: 1
  },
  handler(context, args) {
    var symNode = checkSymbolNodeType(args[0]);
    var colalign = symNode ? [args[0]] : assertNodeType(args[0], "ordgroup").body;
    var cols = colalign.map(function(nde) {
      var node3 = assertSymbolNodeType(nde);
      var ca = node3.text;
      if ("lc".indexOf(ca) !== -1) {
        return {
          type: "align",
          align: ca
        };
      }
      throw new ParseError("Unknown column alignment: " + ca, nde);
    });
    if (cols.length > 1) {
      throw new ParseError("{subarray} can contain only one column");
    }
    var res = {
      cols,
      hskipBeforeAndAfter: false,
      arraystretch: 0.5
    };
    res = parseArray(context.parser, res, "script");
    if (res.body.length > 0 && res.body[0].length > 1) {
      throw new ParseError("{subarray} can contain only one column");
    }
    return res;
  },
  htmlBuilder: htmlBuilder$7,
  mathmlBuilder: mathmlBuilder$6
});
defineEnvironment({
  type: "array",
  names: ["cases", "dcases", "rcases", "drcases"],
  props: {
    numArgs: 0
  },
  handler(context) {
    var payload = {
      arraystretch: 1.2,
      cols: [{
        type: "align",
        align: "l",
        pregap: 0,
        // TODO(kevinb) get the current style.
        // For now we use the metrics for TEXT style which is what we were
        // doing before.  Before attempting to get the current style we
        // should look at TeX's behavior especially for \over and matrices.
        postgap: 1
        /* 1em quad */
      }, {
        type: "align",
        align: "l",
        pregap: 0,
        postgap: 0
      }]
    };
    var res = parseArray(context.parser, payload, dCellStyle(context.envName));
    return {
      type: "leftright",
      mode: context.mode,
      body: [res],
      left: context.envName.indexOf("r") > -1 ? "." : "\\{",
      right: context.envName.indexOf("r") > -1 ? "\\}" : ".",
      rightColor: void 0
    };
  },
  htmlBuilder: htmlBuilder$7,
  mathmlBuilder: mathmlBuilder$6
});
defineEnvironment({
  type: "array",
  names: ["align", "align*", "aligned", "split"],
  props: {
    numArgs: 0
  },
  handler: alignedHandler,
  htmlBuilder: htmlBuilder$7,
  mathmlBuilder: mathmlBuilder$6
});
defineEnvironment({
  type: "array",
  names: ["gathered", "gather", "gather*"],
  props: {
    numArgs: 0
  },
  handler(context) {
    if (utils.contains(["gather", "gather*"], context.envName)) {
      validateAmsEnvironmentContext(context);
    }
    var res = {
      cols: [{
        type: "align",
        align: "c"
      }],
      addJot: true,
      colSeparationType: "gather",
      autoTag: getAutoTag(context.envName),
      emptySingleRow: true,
      leqno: context.parser.settings.leqno
    };
    return parseArray(context.parser, res, "display");
  },
  htmlBuilder: htmlBuilder$7,
  mathmlBuilder: mathmlBuilder$6
});
defineEnvironment({
  type: "array",
  names: ["alignat", "alignat*", "alignedat"],
  props: {
    numArgs: 1
  },
  handler: alignedHandler,
  htmlBuilder: htmlBuilder$7,
  mathmlBuilder: mathmlBuilder$6
});
defineEnvironment({
  type: "array",
  names: ["equation", "equation*"],
  props: {
    numArgs: 0
  },
  handler(context) {
    validateAmsEnvironmentContext(context);
    var res = {
      autoTag: getAutoTag(context.envName),
      emptySingleRow: true,
      singleRow: true,
      maxNumCols: 1,
      leqno: context.parser.settings.leqno
    };
    return parseArray(context.parser, res, "display");
  },
  htmlBuilder: htmlBuilder$7,
  mathmlBuilder: mathmlBuilder$6
});
defineEnvironment({
  type: "array",
  names: ["CD"],
  props: {
    numArgs: 0
  },
  handler(context) {
    validateAmsEnvironmentContext(context);
    return parseCD(context.parser);
  },
  htmlBuilder: htmlBuilder$7,
  mathmlBuilder: mathmlBuilder$6
});
defineMacro("\\nonumber", "\\gdef\\@eqnsw{0}");
defineMacro("\\notag", "\\nonumber");
defineFunction({
  type: "text",
  // Doesn't matter what this is.
  names: ["\\hline", "\\hdashline"],
  props: {
    numArgs: 0,
    allowedInText: true,
    allowedInMath: true
  },
  handler(context, args) {
    throw new ParseError(context.funcName + " valid only within array environment");
  }
});
var environments = _environments;
defineFunction({
  type: "environment",
  names: ["\\begin", "\\end"],
  props: {
    numArgs: 1,
    argTypes: ["text"]
  },
  handler(_ref, args) {
    var {
      parser: parser3,
      funcName
    } = _ref;
    var nameGroup = args[0];
    if (nameGroup.type !== "ordgroup") {
      throw new ParseError("Invalid environment name", nameGroup);
    }
    var envName = "";
    for (var i2 = 0; i2 < nameGroup.body.length; ++i2) {
      envName += assertNodeType(nameGroup.body[i2], "textord").text;
    }
    if (funcName === "\\begin") {
      if (!environments.hasOwnProperty(envName)) {
        throw new ParseError("No such environment: " + envName, nameGroup);
      }
      var env6 = environments[envName];
      var {
        args: _args,
        optArgs
      } = parser3.parseArguments("\\begin{" + envName + "}", env6);
      var context = {
        mode: parser3.mode,
        envName,
        parser: parser3
      };
      var result = env6.handler(context, _args, optArgs);
      parser3.expect("\\end", false);
      var endNameToken = parser3.nextToken;
      var end = assertNodeType(parser3.parseFunction(), "environment");
      if (end.name !== envName) {
        throw new ParseError("Mismatch: \\begin{" + envName + "} matched by \\end{" + end.name + "}", endNameToken);
      }
      return result;
    }
    return {
      type: "environment",
      mode: parser3.mode,
      name: envName,
      nameGroup
    };
  }
});
var makeSpan2 = buildCommon.makeSpan;
function htmlBuilder$6(group3, options) {
  var elements = buildExpression$1(group3.body, options, true);
  return makeSpan2([group3.mclass], elements, options);
}
function mathmlBuilder$5(group3, options) {
  var node3;
  var inner2 = buildExpression2(group3.body, options);
  if (group3.mclass === "minner") {
    node3 = new mathMLTree.MathNode("mpadded", inner2);
  } else if (group3.mclass === "mord") {
    if (group3.isCharacterBox) {
      node3 = inner2[0];
      node3.type = "mi";
    } else {
      node3 = new mathMLTree.MathNode("mi", inner2);
    }
  } else {
    if (group3.isCharacterBox) {
      node3 = inner2[0];
      node3.type = "mo";
    } else {
      node3 = new mathMLTree.MathNode("mo", inner2);
    }
    if (group3.mclass === "mbin") {
      node3.attributes.lspace = "0.22em";
      node3.attributes.rspace = "0.22em";
    } else if (group3.mclass === "mpunct") {
      node3.attributes.lspace = "0em";
      node3.attributes.rspace = "0.17em";
    } else if (group3.mclass === "mopen" || group3.mclass === "mclose") {
      node3.attributes.lspace = "0em";
      node3.attributes.rspace = "0em";
    } else if (group3.mclass === "minner") {
      node3.attributes.lspace = "0.0556em";
      node3.attributes.width = "+0.1111em";
    }
  }
  return node3;
}
defineFunction({
  type: "mclass",
  names: ["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclose", "\\mathpunct", "\\mathinner"],
  props: {
    numArgs: 1,
    primitive: true
  },
  handler(_ref, args) {
    var {
      parser: parser3,
      funcName
    } = _ref;
    var body3 = args[0];
    return {
      type: "mclass",
      mode: parser3.mode,
      mclass: "m" + funcName.substr(5),
      // TODO(kevinb): don't prefix with 'm'
      body: ordargument(body3),
      isCharacterBox: utils.isCharacterBox(body3)
    };
  },
  htmlBuilder: htmlBuilder$6,
  mathmlBuilder: mathmlBuilder$5
});
var binrelClass = (arg2) => {
  var atom = arg2.type === "ordgroup" && arg2.body.length ? arg2.body[0] : arg2;
  if (atom.type === "atom" && (atom.family === "bin" || atom.family === "rel")) {
    return "m" + atom.family;
  } else {
    return "mord";
  }
};
defineFunction({
  type: "mclass",
  names: ["\\@binrel"],
  props: {
    numArgs: 2
  },
  handler(_ref2, args) {
    var {
      parser: parser3
    } = _ref2;
    return {
      type: "mclass",
      mode: parser3.mode,
      mclass: binrelClass(args[0]),
      body: ordargument(args[1]),
      isCharacterBox: utils.isCharacterBox(args[1])
    };
  }
});
defineFunction({
  type: "mclass",
  names: ["\\stackrel", "\\overset", "\\underset"],
  props: {
    numArgs: 2
  },
  handler(_ref3, args) {
    var {
      parser: parser3,
      funcName
    } = _ref3;
    var baseArg = args[1];
    var shiftedArg = args[0];
    var mclass;
    if (funcName !== "\\stackrel") {
      mclass = binrelClass(baseArg);
    } else {
      mclass = "mrel";
    }
    var baseOp = {
      type: "op",
      mode: baseArg.mode,
      limits: true,
      alwaysHandleSupSub: true,
      parentIsSupSub: false,
      symbol: false,
      suppressBaseShift: funcName !== "\\stackrel",
      body: ordargument(baseArg)
    };
    var supsub = {
      type: "supsub",
      mode: shiftedArg.mode,
      base: baseOp,
      sup: funcName === "\\underset" ? null : shiftedArg,
      sub: funcName === "\\underset" ? shiftedArg : null
    };
    return {
      type: "mclass",
      mode: parser3.mode,
      mclass,
      body: [supsub],
      isCharacterBox: utils.isCharacterBox(supsub)
    };
  },
  htmlBuilder: htmlBuilder$6,
  mathmlBuilder: mathmlBuilder$5
});
var htmlBuilder$5 = (group3, options) => {
  var font = group3.font;
  var newOptions = options.withFont(font);
  return buildGroup$1(group3.body, newOptions);
};
var mathmlBuilder$4 = (group3, options) => {
  var font = group3.font;
  var newOptions = options.withFont(font);
  return buildGroup2(group3.body, newOptions);
};
var fontAliases = {
  "\\Bbb": "\\mathbb",
  "\\bold": "\\mathbf",
  "\\frak": "\\mathfrak",
  "\\bm": "\\boldsymbol"
};
defineFunction({
  type: "font",
  names: [
    // styles, except \boldsymbol defined below
    "\\mathrm",
    "\\mathit",
    "\\mathbf",
    "\\mathnormal",
    // families
    "\\mathbb",
    "\\mathcal",
    "\\mathfrak",
    "\\mathscr",
    "\\mathsf",
    "\\mathtt",
    // aliases, except \bm defined below
    "\\Bbb",
    "\\bold",
    "\\frak"
  ],
  props: {
    numArgs: 1,
    allowedInArgument: true
  },
  handler: (_ref, args) => {
    var {
      parser: parser3,
      funcName
    } = _ref;
    var body3 = normalizeArgument(args[0]);
    var func = funcName;
    if (func in fontAliases) {
      func = fontAliases[func];
    }
    return {
      type: "font",
      mode: parser3.mode,
      font: func.slice(1),
      body: body3
    };
  },
  htmlBuilder: htmlBuilder$5,
  mathmlBuilder: mathmlBuilder$4
});
defineFunction({
  type: "mclass",
  names: ["\\boldsymbol", "\\bm"],
  props: {
    numArgs: 1
  },
  handler: (_ref2, args) => {
    var {
      parser: parser3
    } = _ref2;
    var body3 = args[0];
    var isCharacterBox3 = utils.isCharacterBox(body3);
    return {
      type: "mclass",
      mode: parser3.mode,
      mclass: binrelClass(body3),
      body: [{
        type: "font",
        mode: parser3.mode,
        font: "boldsymbol",
        body: body3
      }],
      isCharacterBox: isCharacterBox3
    };
  }
});
defineFunction({
  type: "font",
  names: ["\\rm", "\\sf", "\\tt", "\\bf", "\\it", "\\cal"],
  props: {
    numArgs: 0,
    allowedInText: true
  },
  handler: (_ref3, args) => {
    var {
      parser: parser3,
      funcName,
      breakOnTokenText
    } = _ref3;
    var {
      mode
    } = parser3;
    var body3 = parser3.parseExpression(true, breakOnTokenText);
    var style3 = "math" + funcName.slice(1);
    return {
      type: "font",
      mode,
      font: style3,
      body: {
        type: "ordgroup",
        mode: parser3.mode,
        body: body3
      }
    };
  },
  htmlBuilder: htmlBuilder$5,
  mathmlBuilder: mathmlBuilder$4
});
var adjustStyle = (size, originalStyle) => {
  var style3 = originalStyle;
  if (size === "display") {
    style3 = style3.id >= Style$1.SCRIPT.id ? style3.text() : Style$1.DISPLAY;
  } else if (size === "text" && style3.size === Style$1.DISPLAY.size) {
    style3 = Style$1.TEXT;
  } else if (size === "script") {
    style3 = Style$1.SCRIPT;
  } else if (size === "scriptscript") {
    style3 = Style$1.SCRIPTSCRIPT;
  }
  return style3;
};
var htmlBuilder$4 = (group3, options) => {
  var style3 = adjustStyle(group3.size, options.style);
  var nstyle = style3.fracNum();
  var dstyle = style3.fracDen();
  var newOptions;
  newOptions = options.havingStyle(nstyle);
  var numerm = buildGroup$1(group3.numer, newOptions, options);
  if (group3.continued) {
    var hStrut = 8.5 / options.fontMetrics().ptPerEm;
    var dStrut = 3.5 / options.fontMetrics().ptPerEm;
    numerm.height = numerm.height < hStrut ? hStrut : numerm.height;
    numerm.depth = numerm.depth < dStrut ? dStrut : numerm.depth;
  }
  newOptions = options.havingStyle(dstyle);
  var denomm = buildGroup$1(group3.denom, newOptions, options);
  var rule;
  var ruleWidth;
  var ruleSpacing;
  if (group3.hasBarLine) {
    if (group3.barSize) {
      ruleWidth = calculateSize(group3.barSize, options);
      rule = buildCommon.makeLineSpan("frac-line", options, ruleWidth);
    } else {
      rule = buildCommon.makeLineSpan("frac-line", options);
    }
    ruleWidth = rule.height;
    ruleSpacing = rule.height;
  } else {
    rule = null;
    ruleWidth = 0;
    ruleSpacing = options.fontMetrics().defaultRuleThickness;
  }
  var numShift;
  var clearance;
  var denomShift;
  if (style3.size === Style$1.DISPLAY.size || group3.size === "display") {
    numShift = options.fontMetrics().num1;
    if (ruleWidth > 0) {
      clearance = 3 * ruleSpacing;
    } else {
      clearance = 7 * ruleSpacing;
    }
    denomShift = options.fontMetrics().denom1;
  } else {
    if (ruleWidth > 0) {
      numShift = options.fontMetrics().num2;
      clearance = ruleSpacing;
    } else {
      numShift = options.fontMetrics().num3;
      clearance = 3 * ruleSpacing;
    }
    denomShift = options.fontMetrics().denom2;
  }
  var frac;
  if (!rule) {
    var candidateClearance = numShift - numerm.depth - (denomm.height - denomShift);
    if (candidateClearance < clearance) {
      numShift += 0.5 * (clearance - candidateClearance);
      denomShift += 0.5 * (clearance - candidateClearance);
    }
    frac = buildCommon.makeVList({
      positionType: "individualShift",
      children: [{
        type: "elem",
        elem: denomm,
        shift: denomShift
      }, {
        type: "elem",
        elem: numerm,
        shift: -numShift
      }]
    }, options);
  } else {
    var axisHeight = options.fontMetrics().axisHeight;
    if (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth) < clearance) {
      numShift += clearance - (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth));
    }
    if (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift) < clearance) {
      denomShift += clearance - (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift));
    }
    var midShift = -(axisHeight - 0.5 * ruleWidth);
    frac = buildCommon.makeVList({
      positionType: "individualShift",
      children: [{
        type: "elem",
        elem: denomm,
        shift: denomShift
      }, {
        type: "elem",
        elem: rule,
        shift: midShift
      }, {
        type: "elem",
        elem: numerm,
        shift: -numShift
      }]
    }, options);
  }
  newOptions = options.havingStyle(style3);
  frac.height *= newOptions.sizeMultiplier / options.sizeMultiplier;
  frac.depth *= newOptions.sizeMultiplier / options.sizeMultiplier;
  var delimSize;
  if (style3.size === Style$1.DISPLAY.size) {
    delimSize = options.fontMetrics().delim1;
  } else if (style3.size === Style$1.SCRIPTSCRIPT.size) {
    delimSize = options.havingStyle(Style$1.SCRIPT).fontMetrics().delim2;
  } else {
    delimSize = options.fontMetrics().delim2;
  }
  var leftDelim;
  var rightDelim;
  if (group3.leftDelim == null) {
    leftDelim = makeNullDelimiter(options, ["mopen"]);
  } else {
    leftDelim = delimiter.customSizedDelim(group3.leftDelim, delimSize, true, options.havingStyle(style3), group3.mode, ["mopen"]);
  }
  if (group3.continued) {
    rightDelim = buildCommon.makeSpan([]);
  } else if (group3.rightDelim == null) {
    rightDelim = makeNullDelimiter(options, ["mclose"]);
  } else {
    rightDelim = delimiter.customSizedDelim(group3.rightDelim, delimSize, true, options.havingStyle(style3), group3.mode, ["mclose"]);
  }
  return buildCommon.makeSpan(["mord"].concat(newOptions.sizingClasses(options)), [leftDelim, buildCommon.makeSpan(["mfrac"], [frac]), rightDelim], options);
};
var mathmlBuilder$3 = (group3, options) => {
  var node3 = new mathMLTree.MathNode("mfrac", [buildGroup2(group3.numer, options), buildGroup2(group3.denom, options)]);
  if (!group3.hasBarLine) {
    node3.setAttribute("linethickness", "0px");
  } else if (group3.barSize) {
    var ruleWidth = calculateSize(group3.barSize, options);
    node3.setAttribute("linethickness", makeEm(ruleWidth));
  }
  var style3 = adjustStyle(group3.size, options.style);
  if (style3.size !== options.style.size) {
    node3 = new mathMLTree.MathNode("mstyle", [node3]);
    var isDisplay = style3.size === Style$1.DISPLAY.size ? "true" : "false";
    node3.setAttribute("displaystyle", isDisplay);
    node3.setAttribute("scriptlevel", "0");
  }
  if (group3.leftDelim != null || group3.rightDelim != null) {
    var withDelims = [];
    if (group3.leftDelim != null) {
      var leftOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group3.leftDelim.replace("\\", ""))]);
      leftOp.setAttribute("fence", "true");
      withDelims.push(leftOp);
    }
    withDelims.push(node3);
    if (group3.rightDelim != null) {
      var rightOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group3.rightDelim.replace("\\", ""))]);
      rightOp.setAttribute("fence", "true");
      withDelims.push(rightOp);
    }
    return makeRow(withDelims);
  }
  return node3;
};
defineFunction({
  type: "genfrac",
  names: [
    "\\dfrac",
    "\\frac",
    "\\tfrac",
    "\\dbinom",
    "\\binom",
    "\\tbinom",
    "\\\\atopfrac",
    // can’t be entered directly
    "\\\\bracefrac",
    "\\\\brackfrac"
    // ditto
  ],
  props: {
    numArgs: 2,
    allowedInArgument: true
  },
  handler: (_ref, args) => {
    var {
      parser: parser3,
      funcName
    } = _ref;
    var numer = args[0];
    var denom = args[1];
    var hasBarLine;
    var leftDelim = null;
    var rightDelim = null;
    var size = "auto";
    switch (funcName) {
      case "\\dfrac":
      case "\\frac":
      case "\\tfrac":
        hasBarLine = true;
        break;
      case "\\\\atopfrac":
        hasBarLine = false;
        break;
      case "\\dbinom":
      case "\\binom":
      case "\\tbinom":
        hasBarLine = false;
        leftDelim = "(";
        rightDelim = ")";
        break;
      case "\\\\bracefrac":
        hasBarLine = false;
        leftDelim = "\\{";
        rightDelim = "\\}";
        break;
      case "\\\\brackfrac":
        hasBarLine = false;
        leftDelim = "[";
        rightDelim = "]";
        break;
      default:
        throw new Error("Unrecognized genfrac command");
    }
    switch (funcName) {
      case "\\dfrac":
      case "\\dbinom":
        size = "display";
        break;
      case "\\tfrac":
      case "\\tbinom":
        size = "text";
        break;
    }
    return {
      type: "genfrac",
      mode: parser3.mode,
      continued: false,
      numer,
      denom,
      hasBarLine,
      leftDelim,
      rightDelim,
      size,
      barSize: null
    };
  },
  htmlBuilder: htmlBuilder$4,
  mathmlBuilder: mathmlBuilder$3
});
defineFunction({
  type: "genfrac",
  names: ["\\cfrac"],
  props: {
    numArgs: 2
  },
  handler: (_ref2, args) => {
    var {
      parser: parser3,
      funcName
    } = _ref2;
    var numer = args[0];
    var denom = args[1];
    return {
      type: "genfrac",
      mode: parser3.mode,
      continued: true,
      numer,
      denom,
      hasBarLine: true,
      leftDelim: null,
      rightDelim: null,
      size: "display",
      barSize: null
    };
  }
});
defineFunction({
  type: "infix",
  names: ["\\over", "\\choose", "\\atop", "\\brace", "\\brack"],
  props: {
    numArgs: 0,
    infix: true
  },
  handler(_ref3) {
    var {
      parser: parser3,
      funcName,
      token
    } = _ref3;
    var replaceWith;
    switch (funcName) {
      case "\\over":
        replaceWith = "\\frac";
        break;
      case "\\choose":
        replaceWith = "\\binom";
        break;
      case "\\atop":
        replaceWith = "\\\\atopfrac";
        break;
      case "\\brace":
        replaceWith = "\\\\bracefrac";
        break;
      case "\\brack":
        replaceWith = "\\\\brackfrac";
        break;
      default:
        throw new Error("Unrecognized infix genfrac command");
    }
    return {
      type: "infix",
      mode: parser3.mode,
      replaceWith,
      token
    };
  }
});
var stylArray = ["display", "text", "script", "scriptscript"];
var delimFromValue = function delimFromValue2(delimString) {
  var delim = null;
  if (delimString.length > 0) {
    delim = delimString;
    delim = delim === "." ? null : delim;
  }
  return delim;
};
defineFunction({
  type: "genfrac",
  names: ["\\genfrac"],
  props: {
    numArgs: 6,
    allowedInArgument: true,
    argTypes: ["math", "math", "size", "text", "math", "math"]
  },
  handler(_ref4, args) {
    var {
      parser: parser3
    } = _ref4;
    var numer = args[4];
    var denom = args[5];
    var leftNode = normalizeArgument(args[0]);
    var leftDelim = leftNode.type === "atom" && leftNode.family === "open" ? delimFromValue(leftNode.text) : null;
    var rightNode = normalizeArgument(args[1]);
    var rightDelim = rightNode.type === "atom" && rightNode.family === "close" ? delimFromValue(rightNode.text) : null;
    var barNode = assertNodeType(args[2], "size");
    var hasBarLine;
    var barSize = null;
    if (barNode.isBlank) {
      hasBarLine = true;
    } else {
      barSize = barNode.value;
      hasBarLine = barSize.number > 0;
    }
    var size = "auto";
    var styl = args[3];
    if (styl.type === "ordgroup") {
      if (styl.body.length > 0) {
        var textOrd = assertNodeType(styl.body[0], "textord");
        size = stylArray[Number(textOrd.text)];
      }
    } else {
      styl = assertNodeType(styl, "textord");
      size = stylArray[Number(styl.text)];
    }
    return {
      type: "genfrac",
      mode: parser3.mode,
      numer,
      denom,
      continued: false,
      hasBarLine,
      barSize,
      leftDelim,
      rightDelim,
      size
    };
  },
  htmlBuilder: htmlBuilder$4,
  mathmlBuilder: mathmlBuilder$3
});
defineFunction({
  type: "infix",
  names: ["\\above"],
  props: {
    numArgs: 1,
    argTypes: ["size"],
    infix: true
  },
  handler(_ref5, args) {
    var {
      parser: parser3,
      funcName,
      token
    } = _ref5;
    return {
      type: "infix",
      mode: parser3.mode,
      replaceWith: "\\\\abovefrac",
      size: assertNodeType(args[0], "size").value,
      token
    };
  }
});
defineFunction({
  type: "genfrac",
  names: ["\\\\abovefrac"],
  props: {
    numArgs: 3,
    argTypes: ["math", "size", "math"]
  },
  handler: (_ref6, args) => {
    var {
      parser: parser3,
      funcName
    } = _ref6;
    var numer = args[0];
    var barSize = assert(assertNodeType(args[1], "infix").size);
    var denom = args[2];
    var hasBarLine = barSize.number > 0;
    return {
      type: "genfrac",
      mode: parser3.mode,
      numer,
      denom,
      continued: false,
      hasBarLine,
      barSize,
      leftDelim: null,
      rightDelim: null,
      size: "auto"
    };
  },
  htmlBuilder: htmlBuilder$4,
  mathmlBuilder: mathmlBuilder$3
});
var htmlBuilder$3 = (grp, options) => {
  var style3 = options.style;
  var supSubGroup;
  var group3;
  if (grp.type === "supsub") {
    supSubGroup = grp.sup ? buildGroup$1(grp.sup, options.havingStyle(style3.sup()), options) : buildGroup$1(grp.sub, options.havingStyle(style3.sub()), options);
    group3 = assertNodeType(grp.base, "horizBrace");
  } else {
    group3 = assertNodeType(grp, "horizBrace");
  }
  var body3 = buildGroup$1(group3.base, options.havingBaseStyle(Style$1.DISPLAY));
  var braceBody = stretchy.svgSpan(group3, options);
  var vlist;
  if (group3.isOver) {
    vlist = buildCommon.makeVList({
      positionType: "firstBaseline",
      children: [{
        type: "elem",
        elem: body3
      }, {
        type: "kern",
        size: 0.1
      }, {
        type: "elem",
        elem: braceBody
      }]
    }, options);
    vlist.children[0].children[0].children[1].classes.push("svg-align");
  } else {
    vlist = buildCommon.makeVList({
      positionType: "bottom",
      positionData: body3.depth + 0.1 + braceBody.height,
      children: [{
        type: "elem",
        elem: braceBody
      }, {
        type: "kern",
        size: 0.1
      }, {
        type: "elem",
        elem: body3
      }]
    }, options);
    vlist.children[0].children[0].children[0].classes.push("svg-align");
  }
  if (supSubGroup) {
    var vSpan = buildCommon.makeSpan(["mord", group3.isOver ? "mover" : "munder"], [vlist], options);
    if (group3.isOver) {
      vlist = buildCommon.makeVList({
        positionType: "firstBaseline",
        children: [{
          type: "elem",
          elem: vSpan
        }, {
          type: "kern",
          size: 0.2
        }, {
          type: "elem",
          elem: supSubGroup
        }]
      }, options);
    } else {
      vlist = buildCommon.makeVList({
        positionType: "bottom",
        positionData: vSpan.depth + 0.2 + supSubGroup.height + supSubGroup.depth,
        children: [{
          type: "elem",
          elem: supSubGroup
        }, {
          type: "kern",
          size: 0.2
        }, {
          type: "elem",
          elem: vSpan
        }]
      }, options);
    }
  }
  return buildCommon.makeSpan(["mord", group3.isOver ? "mover" : "munder"], [vlist], options);
};
var mathmlBuilder$2 = (group3, options) => {
  var accentNode = stretchy.mathMLnode(group3.label);
  return new mathMLTree.MathNode(group3.isOver ? "mover" : "munder", [buildGroup2(group3.base, options), accentNode]);
};
defineFunction({
  type: "horizBrace",
  names: ["\\overbrace", "\\underbrace"],
  props: {
    numArgs: 1
  },
  handler(_ref, args) {
    var {
      parser: parser3,
      funcName
    } = _ref;
    return {
      type: "horizBrace",
      mode: parser3.mode,
      label: funcName,
      isOver: /^\\over/.test(funcName),
      base: args[0]
    };
  },
  htmlBuilder: htmlBuilder$3,
  mathmlBuilder: mathmlBuilder$2
});
defineFunction({
  type: "href",
  names: ["\\href"],
  props: {
    numArgs: 2,
    argTypes: ["url", "original"],
    allowedInText: true
  },
  handler: (_ref, args) => {
    var {
      parser: parser3
    } = _ref;
    var body3 = args[1];
    var href = assertNodeType(args[0], "url").url;
    if (!parser3.settings.isTrusted({
      command: "\\href",
      url: href
    })) {
      return parser3.formatUnsupportedCmd("\\href");
    }
    return {
      type: "href",
      mode: parser3.mode,
      href,
      body: ordargument(body3)
    };
  },
  htmlBuilder: (group3, options) => {
    var elements = buildExpression$1(group3.body, options, false);
    return buildCommon.makeAnchor(group3.href, [], elements, options);
  },
  mathmlBuilder: (group3, options) => {
    var math7 = buildExpressionRow(group3.body, options);
    if (!(math7 instanceof MathNode)) {
      math7 = new MathNode("mrow", [math7]);
    }
    math7.setAttribute("href", group3.href);
    return math7;
  }
});
defineFunction({
  type: "href",
  names: ["\\url"],
  props: {
    numArgs: 1,
    argTypes: ["url"],
    allowedInText: true
  },
  handler: (_ref2, args) => {
    var {
      parser: parser3
    } = _ref2;
    var href = assertNodeType(args[0], "url").url;
    if (!parser3.settings.isTrusted({
      command: "\\url",
      url: href
    })) {
      return parser3.formatUnsupportedCmd("\\url");
    }
    var chars = [];
    for (var i2 = 0; i2 < href.length; i2++) {
      var c = href[i2];
      if (c === "~") {
        c = "\\textasciitilde";
      }
      chars.push({
        type: "textord",
        mode: "text",
        text: c
      });
    }
    var body3 = {
      type: "text",
      mode: parser3.mode,
      font: "\\texttt",
      body: chars
    };
    return {
      type: "href",
      mode: parser3.mode,
      href,
      body: ordargument(body3)
    };
  }
});
defineFunction({
  type: "hbox",
  names: ["\\hbox"],
  props: {
    numArgs: 1,
    argTypes: ["text"],
    allowedInText: true,
    primitive: true
  },
  handler(_ref, args) {
    var {
      parser: parser3
    } = _ref;
    return {
      type: "hbox",
      mode: parser3.mode,
      body: ordargument(args[0])
    };
  },
  htmlBuilder(group3, options) {
    var elements = buildExpression$1(group3.body, options, false);
    return buildCommon.makeFragment(elements);
  },
  mathmlBuilder(group3, options) {
    return new mathMLTree.MathNode("mrow", buildExpression2(group3.body, options));
  }
});
defineFunction({
  type: "html",
  names: ["\\htmlClass", "\\htmlId", "\\htmlStyle", "\\htmlData"],
  props: {
    numArgs: 2,
    argTypes: ["raw", "original"],
    allowedInText: true
  },
  handler: (_ref, args) => {
    var {
      parser: parser3,
      funcName,
      token
    } = _ref;
    var value = assertNodeType(args[0], "raw").string;
    var body3 = args[1];
    if (parser3.settings.strict) {
      parser3.settings.reportNonstrict("htmlExtension", "HTML extension is disabled on strict mode");
    }
    var trustContext;
    var attributes = {};
    switch (funcName) {
      case "\\htmlClass":
        attributes.class = value;
        trustContext = {
          command: "\\htmlClass",
          class: value
        };
        break;
      case "\\htmlId":
        attributes.id = value;
        trustContext = {
          command: "\\htmlId",
          id: value
        };
        break;
      case "\\htmlStyle":
        attributes.style = value;
        trustContext = {
          command: "\\htmlStyle",
          style: value
        };
        break;
      case "\\htmlData": {
        var data = value.split(",");
        for (var i2 = 0; i2 < data.length; i2++) {
          var keyVal = data[i2].split("=");
          if (keyVal.length !== 2) {
            throw new ParseError("Error parsing key-value for \\htmlData");
          }
          attributes["data-" + keyVal[0].trim()] = keyVal[1].trim();
        }
        trustContext = {
          command: "\\htmlData",
          attributes
        };
        break;
      }
      default:
        throw new Error("Unrecognized html command");
    }
    if (!parser3.settings.isTrusted(trustContext)) {
      return parser3.formatUnsupportedCmd(funcName);
    }
    return {
      type: "html",
      mode: parser3.mode,
      attributes,
      body: ordargument(body3)
    };
  },
  htmlBuilder: (group3, options) => {
    var elements = buildExpression$1(group3.body, options, false);
    var classes = ["enclosing"];
    if (group3.attributes.class) {
      classes.push(...group3.attributes.class.trim().split(/\s+/));
    }
    var span = buildCommon.makeSpan(classes, elements, options);
    for (var attr in group3.attributes) {
      if (attr !== "class" && group3.attributes.hasOwnProperty(attr)) {
        span.setAttribute(attr, group3.attributes[attr]);
      }
    }
    return span;
  },
  mathmlBuilder: (group3, options) => {
    return buildExpressionRow(group3.body, options);
  }
});
defineFunction({
  type: "htmlmathml",
  names: ["\\html@mathml"],
  props: {
    numArgs: 2,
    allowedInText: true
  },
  handler: (_ref, args) => {
    var {
      parser: parser3
    } = _ref;
    return {
      type: "htmlmathml",
      mode: parser3.mode,
      html: ordargument(args[0]),
      mathml: ordargument(args[1])
    };
  },
  htmlBuilder: (group3, options) => {
    var elements = buildExpression$1(group3.html, options, false);
    return buildCommon.makeFragment(elements);
  },
  mathmlBuilder: (group3, options) => {
    return buildExpressionRow(group3.mathml, options);
  }
});
var sizeData = function sizeData2(str2) {
  if (/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(str2)) {
    return {
      number: +str2,
      unit: "bp"
    };
  } else {
    var match3 = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(str2);
    if (!match3) {
      throw new ParseError("Invalid size: '" + str2 + "' in \\includegraphics");
    }
    var data = {
      number: +(match3[1] + match3[2]),
      // sign + magnitude, cast to number
      unit: match3[3]
    };
    if (!validUnit(data)) {
      throw new ParseError("Invalid unit: '" + data.unit + "' in \\includegraphics.");
    }
    return data;
  }
};
defineFunction({
  type: "includegraphics",
  names: ["\\includegraphics"],
  props: {
    numArgs: 1,
    numOptionalArgs: 1,
    argTypes: ["raw", "url"],
    allowedInText: false
  },
  handler: (_ref, args, optArgs) => {
    var {
      parser: parser3
    } = _ref;
    var width = {
      number: 0,
      unit: "em"
    };
    var height2 = {
      number: 0.9,
      unit: "em"
    };
    var totalheight = {
      number: 0,
      unit: "em"
    };
    var alt = "";
    if (optArgs[0]) {
      var attributeStr = assertNodeType(optArgs[0], "raw").string;
      var attributes = attributeStr.split(",");
      for (var i2 = 0; i2 < attributes.length; i2++) {
        var keyVal = attributes[i2].split("=");
        if (keyVal.length === 2) {
          var str2 = keyVal[1].trim();
          switch (keyVal[0].trim()) {
            case "alt":
              alt = str2;
              break;
            case "width":
              width = sizeData(str2);
              break;
            case "height":
              height2 = sizeData(str2);
              break;
            case "totalheight":
              totalheight = sizeData(str2);
              break;
            default:
              throw new ParseError("Invalid key: '" + keyVal[0] + "' in \\includegraphics.");
          }
        }
      }
    }
    var src = assertNodeType(args[0], "url").url;
    if (alt === "") {
      alt = src;
      alt = alt.replace(/^.*[\\/]/, "");
      alt = alt.substring(0, alt.lastIndexOf("."));
    }
    if (!parser3.settings.isTrusted({
      command: "\\includegraphics",
      url: src
    })) {
      return parser3.formatUnsupportedCmd("\\includegraphics");
    }
    return {
      type: "includegraphics",
      mode: parser3.mode,
      alt,
      width,
      height: height2,
      totalheight,
      src
    };
  },
  htmlBuilder: (group3, options) => {
    var height2 = calculateSize(group3.height, options);
    var depth = 0;
    if (group3.totalheight.number > 0) {
      depth = calculateSize(group3.totalheight, options) - height2;
    }
    var width = 0;
    if (group3.width.number > 0) {
      width = calculateSize(group3.width, options);
    }
    var style3 = {
      height: makeEm(height2 + depth)
    };
    if (width > 0) {
      style3.width = makeEm(width);
    }
    if (depth > 0) {
      style3.verticalAlign = makeEm(-depth);
    }
    var node3 = new Img(group3.src, group3.alt, style3);
    node3.height = height2;
    node3.depth = depth;
    return node3;
  },
  mathmlBuilder: (group3, options) => {
    var node3 = new mathMLTree.MathNode("mglyph", []);
    node3.setAttribute("alt", group3.alt);
    var height2 = calculateSize(group3.height, options);
    var depth = 0;
    if (group3.totalheight.number > 0) {
      depth = calculateSize(group3.totalheight, options) - height2;
      node3.setAttribute("valign", makeEm(-depth));
    }
    node3.setAttribute("height", makeEm(height2 + depth));
    if (group3.width.number > 0) {
      var width = calculateSize(group3.width, options);
      node3.setAttribute("width", makeEm(width));
    }
    node3.setAttribute("src", group3.src);
    return node3;
  }
});
defineFunction({
  type: "kern",
  names: ["\\kern", "\\mkern", "\\hskip", "\\mskip"],
  props: {
    numArgs: 1,
    argTypes: ["size"],
    primitive: true,
    allowedInText: true
  },
  handler(_ref, args) {
    var {
      parser: parser3,
      funcName
    } = _ref;
    var size = assertNodeType(args[0], "size");
    if (parser3.settings.strict) {
      var mathFunction = funcName[1] === "m";
      var muUnit = size.value.unit === "mu";
      if (mathFunction) {
        if (!muUnit) {
          parser3.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + funcName + " supports only mu units, " + ("not " + size.value.unit + " units"));
        }
        if (parser3.mode !== "math") {
          parser3.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + funcName + " works only in math mode");
        }
      } else {
        if (muUnit) {
          parser3.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + funcName + " doesn't support mu units");
        }
      }
    }
    return {
      type: "kern",
      mode: parser3.mode,
      dimension: size.value
    };
  },
  htmlBuilder(group3, options) {
    return buildCommon.makeGlue(group3.dimension, options);
  },
  mathmlBuilder(group3, options) {
    var dimension = calculateSize(group3.dimension, options);
    return new mathMLTree.SpaceNode(dimension);
  }
});
defineFunction({
  type: "lap",
  names: ["\\mathllap", "\\mathrlap", "\\mathclap"],
  props: {
    numArgs: 1,
    allowedInText: true
  },
  handler: (_ref, args) => {
    var {
      parser: parser3,
      funcName
    } = _ref;
    var body3 = args[0];
    return {
      type: "lap",
      mode: parser3.mode,
      alignment: funcName.slice(5),
      body: body3
    };
  },
  htmlBuilder: (group3, options) => {
    var inner2;
    if (group3.alignment === "clap") {
      inner2 = buildCommon.makeSpan([], [buildGroup$1(group3.body, options)]);
      inner2 = buildCommon.makeSpan(["inner"], [inner2], options);
    } else {
      inner2 = buildCommon.makeSpan(["inner"], [buildGroup$1(group3.body, options)]);
    }
    var fix = buildCommon.makeSpan(["fix"], []);
    var node3 = buildCommon.makeSpan([group3.alignment], [inner2, fix], options);
    var strut = buildCommon.makeSpan(["strut"]);
    strut.style.height = makeEm(node3.height + node3.depth);
    if (node3.depth) {
      strut.style.verticalAlign = makeEm(-node3.depth);
    }
    node3.children.unshift(strut);
    node3 = buildCommon.makeSpan(["thinbox"], [node3], options);
    return buildCommon.makeSpan(["mord", "vbox"], [node3], options);
  },
  mathmlBuilder: (group3, options) => {
    var node3 = new mathMLTree.MathNode("mpadded", [buildGroup2(group3.body, options)]);
    if (group3.alignment !== "rlap") {
      var offset = group3.alignment === "llap" ? "-1" : "-0.5";
      node3.setAttribute("lspace", offset + "width");
    }
    node3.setAttribute("width", "0px");
    return node3;
  }
});
defineFunction({
  type: "styling",
  names: ["\\(", "$"],
  props: {
    numArgs: 0,
    allowedInText: true,
    allowedInMath: false
  },
  handler(_ref, args) {
    var {
      funcName,
      parser: parser3
    } = _ref;
    var outerMode = parser3.mode;
    parser3.switchMode("math");
    var close2 = funcName === "\\(" ? "\\)" : "$";
    var body3 = parser3.parseExpression(false, close2);
    parser3.expect(close2);
    parser3.switchMode(outerMode);
    return {
      type: "styling",
      mode: parser3.mode,
      style: "text",
      body: body3
    };
  }
});
defineFunction({
  type: "text",
  // Doesn't matter what this is.
  names: ["\\)", "\\]"],
  props: {
    numArgs: 0,
    allowedInText: true,
    allowedInMath: false
  },
  handler(context, args) {
    throw new ParseError("Mismatched " + context.funcName);
  }
});
var chooseMathStyle = (group3, options) => {
  switch (options.style.size) {
    case Style$1.DISPLAY.size:
      return group3.display;
    case Style$1.TEXT.size:
      return group3.text;
    case Style$1.SCRIPT.size:
      return group3.script;
    case Style$1.SCRIPTSCRIPT.size:
      return group3.scriptscript;
    default:
      return group3.text;
  }
};
defineFunction({
  type: "mathchoice",
  names: ["\\mathchoice"],
  props: {
    numArgs: 4,
    primitive: true
  },
  handler: (_ref, args) => {
    var {
      parser: parser3
    } = _ref;
    return {
      type: "mathchoice",
      mode: parser3.mode,
      display: ordargument(args[0]),
      text: ordargument(args[1]),
      script: ordargument(args[2]),
      scriptscript: ordargument(args[3])
    };
  },
  htmlBuilder: (group3, options) => {
    var body3 = chooseMathStyle(group3, options);
    var elements = buildExpression$1(body3, options, false);
    return buildCommon.makeFragment(elements);
  },
  mathmlBuilder: (group3, options) => {
    var body3 = chooseMathStyle(group3, options);
    return buildExpressionRow(body3, options);
  }
});
var assembleSupSub = (base5, supGroup, subGroup, options, style3, slant, baseShift) => {
  base5 = buildCommon.makeSpan([], [base5]);
  var subIsSingleCharacter = subGroup && utils.isCharacterBox(subGroup);
  var sub2;
  var sup2;
  if (supGroup) {
    var elem = buildGroup$1(supGroup, options.havingStyle(style3.sup()), options);
    sup2 = {
      elem,
      kern: Math.max(options.fontMetrics().bigOpSpacing1, options.fontMetrics().bigOpSpacing3 - elem.depth)
    };
  }
  if (subGroup) {
    var _elem = buildGroup$1(subGroup, options.havingStyle(style3.sub()), options);
    sub2 = {
      elem: _elem,
      kern: Math.max(options.fontMetrics().bigOpSpacing2, options.fontMetrics().bigOpSpacing4 - _elem.height)
    };
  }
  var finalGroup;
  if (sup2 && sub2) {
    var bottom = options.fontMetrics().bigOpSpacing5 + sub2.elem.height + sub2.elem.depth + sub2.kern + base5.depth + baseShift;
    finalGroup = buildCommon.makeVList({
      positionType: "bottom",
      positionData: bottom,
      children: [{
        type: "kern",
        size: options.fontMetrics().bigOpSpacing5
      }, {
        type: "elem",
        elem: sub2.elem,
        marginLeft: makeEm(-slant)
      }, {
        type: "kern",
        size: sub2.kern
      }, {
        type: "elem",
        elem: base5
      }, {
        type: "kern",
        size: sup2.kern
      }, {
        type: "elem",
        elem: sup2.elem,
        marginLeft: makeEm(slant)
      }, {
        type: "kern",
        size: options.fontMetrics().bigOpSpacing5
      }]
    }, options);
  } else if (sub2) {
    var top = base5.height - baseShift;
    finalGroup = buildCommon.makeVList({
      positionType: "top",
      positionData: top,
      children: [{
        type: "kern",
        size: options.fontMetrics().bigOpSpacing5
      }, {
        type: "elem",
        elem: sub2.elem,
        marginLeft: makeEm(-slant)
      }, {
        type: "kern",
        size: sub2.kern
      }, {
        type: "elem",
        elem: base5
      }]
    }, options);
  } else if (sup2) {
    var _bottom = base5.depth + baseShift;
    finalGroup = buildCommon.makeVList({
      positionType: "bottom",
      positionData: _bottom,
      children: [{
        type: "elem",
        elem: base5
      }, {
        type: "kern",
        size: sup2.kern
      }, {
        type: "elem",
        elem: sup2.elem,
        marginLeft: makeEm(slant)
      }, {
        type: "kern",
        size: options.fontMetrics().bigOpSpacing5
      }]
    }, options);
  } else {
    return base5;
  }
  var parts = [finalGroup];
  if (sub2 && slant !== 0 && !subIsSingleCharacter) {
    var spacer = buildCommon.makeSpan(["mspace"], [], options);
    spacer.style.marginRight = makeEm(slant);
    parts.unshift(spacer);
  }
  return buildCommon.makeSpan(["mop", "op-limits"], parts, options);
};
var noSuccessor = ["\\smallint"];
var htmlBuilder$2 = (grp, options) => {
  var supGroup;
  var subGroup;
  var hasLimits = false;
  var group3;
  if (grp.type === "supsub") {
    supGroup = grp.sup;
    subGroup = grp.sub;
    group3 = assertNodeType(grp.base, "op");
    hasLimits = true;
  } else {
    group3 = assertNodeType(grp, "op");
  }
  var style3 = options.style;
  var large = false;
  if (style3.size === Style$1.DISPLAY.size && group3.symbol && !utils.contains(noSuccessor, group3.name)) {
    large = true;
  }
  var base5;
  if (group3.symbol) {
    var fontName = large ? "Size2-Regular" : "Size1-Regular";
    var stash = "";
    if (group3.name === "\\oiint" || group3.name === "\\oiiint") {
      stash = group3.name.substr(1);
      group3.name = stash === "oiint" ? "\\iint" : "\\iiint";
    }
    base5 = buildCommon.makeSymbol(group3.name, fontName, "math", options, ["mop", "op-symbol", large ? "large-op" : "small-op"]);
    if (stash.length > 0) {
      var italic = base5.italic;
      var oval = buildCommon.staticSvg(stash + "Size" + (large ? "2" : "1"), options);
      base5 = buildCommon.makeVList({
        positionType: "individualShift",
        children: [{
          type: "elem",
          elem: base5,
          shift: 0
        }, {
          type: "elem",
          elem: oval,
          shift: large ? 0.08 : 0
        }]
      }, options);
      group3.name = "\\" + stash;
      base5.classes.unshift("mop");
      base5.italic = italic;
    }
  } else if (group3.body) {
    var inner2 = buildExpression$1(group3.body, options, true);
    if (inner2.length === 1 && inner2[0] instanceof SymbolNode) {
      base5 = inner2[0];
      base5.classes[0] = "mop";
    } else {
      base5 = buildCommon.makeSpan(["mop"], inner2, options);
    }
  } else {
    var output2 = [];
    for (var i2 = 1; i2 < group3.name.length; i2++) {
      output2.push(buildCommon.mathsym(group3.name[i2], group3.mode, options));
    }
    base5 = buildCommon.makeSpan(["mop"], output2, options);
  }
  var baseShift = 0;
  var slant = 0;
  if ((base5 instanceof SymbolNode || group3.name === "\\oiint" || group3.name === "\\oiiint") && !group3.suppressBaseShift) {
    baseShift = (base5.height - base5.depth) / 2 - options.fontMetrics().axisHeight;
    slant = base5.italic;
  }
  if (hasLimits) {
    return assembleSupSub(base5, supGroup, subGroup, options, style3, slant, baseShift);
  } else {
    if (baseShift) {
      base5.style.position = "relative";
      base5.style.top = makeEm(baseShift);
    }
    return base5;
  }
};
var mathmlBuilder$1 = (group3, options) => {
  var node3;
  if (group3.symbol) {
    node3 = new MathNode("mo", [makeText(group3.name, group3.mode)]);
    if (utils.contains(noSuccessor, group3.name)) {
      node3.setAttribute("largeop", "false");
    }
  } else if (group3.body) {
    node3 = new MathNode("mo", buildExpression2(group3.body, options));
  } else {
    node3 = new MathNode("mi", [new TextNode(group3.name.slice(1))]);
    var operator = new MathNode("mo", [makeText("\u2061", "text")]);
    if (group3.parentIsSupSub) {
      node3 = new MathNode("mrow", [node3, operator]);
    } else {
      node3 = newDocumentFragment([node3, operator]);
    }
  }
  return node3;
};
var singleCharBigOps = {
  "\u220F": "\\prod",
  "\u2210": "\\coprod",
  "\u2211": "\\sum",
  "\u22C0": "\\bigwedge",
  "\u22C1": "\\bigvee",
  "\u22C2": "\\bigcap",
  "\u22C3": "\\bigcup",
  "\u2A00": "\\bigodot",
  "\u2A01": "\\bigoplus",
  "\u2A02": "\\bigotimes",
  "\u2A04": "\\biguplus",
  "\u2A06": "\\bigsqcup"
};
defineFunction({
  type: "op",
  names: ["\\coprod", "\\bigvee", "\\bigwedge", "\\biguplus", "\\bigcap", "\\bigcup", "\\intop", "\\prod", "\\sum", "\\bigotimes", "\\bigoplus", "\\bigodot", "\\bigsqcup", "\\smallint", "\u220F", "\u2210", "\u2211", "\u22C0", "\u22C1", "\u22C2", "\u22C3", "\u2A00", "\u2A01", "\u2A02", "\u2A04", "\u2A06"],
  props: {
    numArgs: 0
  },
  handler: (_ref, args) => {
    var {
      parser: parser3,
      funcName
    } = _ref;
    var fName = funcName;
    if (fName.length === 1) {
      fName = singleCharBigOps[fName];
    }
    return {
      type: "op",
      mode: parser3.mode,
      limits: true,
      parentIsSupSub: false,
      symbol: true,
      name: fName
    };
  },
  htmlBuilder: htmlBuilder$2,
  mathmlBuilder: mathmlBuilder$1
});
defineFunction({
  type: "op",
  names: ["\\mathop"],
  props: {
    numArgs: 1,
    primitive: true
  },
  handler: (_ref2, args) => {
    var {
      parser: parser3
    } = _ref2;
    var body3 = args[0];
    return {
      type: "op",
      mode: parser3.mode,
      limits: false,
      parentIsSupSub: false,
      symbol: false,
      body: ordargument(body3)
    };
  },
  htmlBuilder: htmlBuilder$2,
  mathmlBuilder: mathmlBuilder$1
});
var singleCharIntegrals = {
  "\u222B": "\\int",
  "\u222C": "\\iint",
  "\u222D": "\\iiint",
  "\u222E": "\\oint",
  "\u222F": "\\oiint",
  "\u2230": "\\oiiint"
};
defineFunction({
  type: "op",
  names: ["\\arcsin", "\\arccos", "\\arctan", "\\arctg", "\\arcctg", "\\arg", "\\ch", "\\cos", "\\cosec", "\\cosh", "\\cot", "\\cotg", "\\coth", "\\csc", "\\ctg", "\\cth", "\\deg", "\\dim", "\\exp", "\\hom", "\\ker", "\\lg", "\\ln", "\\log", "\\sec", "\\sin", "\\sinh", "\\sh", "\\tan", "\\tanh", "\\tg", "\\th"],
  props: {
    numArgs: 0
  },
  handler(_ref3) {
    var {
      parser: parser3,
      funcName
    } = _ref3;
    return {
      type: "op",
      mode: parser3.mode,
      limits: false,
      parentIsSupSub: false,
      symbol: false,
      name: funcName
    };
  },
  htmlBuilder: htmlBuilder$2,
  mathmlBuilder: mathmlBuilder$1
});
defineFunction({
  type: "op",
  names: ["\\det", "\\gcd", "\\inf", "\\lim", "\\max", "\\min", "\\Pr", "\\sup"],
  props: {
    numArgs: 0
  },
  handler(_ref4) {
    var {
      parser: parser3,
      funcName
    } = _ref4;
    return {
      type: "op",
      mode: parser3.mode,
      limits: true,
      parentIsSupSub: false,
      symbol: false,
      name: funcName
    };
  },
  htmlBuilder: htmlBuilder$2,
  mathmlBuilder: mathmlBuilder$1
});
defineFunction({
  type: "op",
  names: ["\\int", "\\iint", "\\iiint", "\\oint", "\\oiint", "\\oiiint", "\u222B", "\u222C", "\u222D", "\u222E", "\u222F", "\u2230"],
  props: {
    numArgs: 0
  },
  handler(_ref5) {
    var {
      parser: parser3,
      funcName
    } = _ref5;
    var fName = funcName;
    if (fName.length === 1) {
      fName = singleCharIntegrals[fName];
    }
    return {
      type: "op",
      mode: parser3.mode,
      limits: false,
      parentIsSupSub: false,
      symbol: true,
      name: fName
    };
  },
  htmlBuilder: htmlBuilder$2,
  mathmlBuilder: mathmlBuilder$1
});
var htmlBuilder$1 = (grp, options) => {
  var supGroup;
  var subGroup;
  var hasLimits = false;
  var group3;
  if (grp.type === "supsub") {
    supGroup = grp.sup;
    subGroup = grp.sub;
    group3 = assertNodeType(grp.base, "operatorname");
    hasLimits = true;
  } else {
    group3 = assertNodeType(grp, "operatorname");
  }
  var base5;
  if (group3.body.length > 0) {
    var body3 = group3.body.map((child2) => {
      var childText = child2.text;
      if (typeof childText === "string") {
        return {
          type: "textord",
          mode: child2.mode,
          text: childText
        };
      } else {
        return child2;
      }
    });
    var expression = buildExpression$1(body3, options.withFont("mathrm"), true);
    for (var i2 = 0; i2 < expression.length; i2++) {
      var child = expression[i2];
      if (child instanceof SymbolNode) {
        child.text = child.text.replace(/\u2212/, "-").replace(/\u2217/, "*");
      }
    }
    base5 = buildCommon.makeSpan(["mop"], expression, options);
  } else {
    base5 = buildCommon.makeSpan(["mop"], [], options);
  }
  if (hasLimits) {
    return assembleSupSub(base5, supGroup, subGroup, options, options.style, 0, 0);
  } else {
    return base5;
  }
};
var mathmlBuilder2 = (group3, options) => {
  var expression = buildExpression2(group3.body, options.withFont("mathrm"));
  var isAllString = true;
  for (var i2 = 0; i2 < expression.length; i2++) {
    var node3 = expression[i2];
    if (node3 instanceof mathMLTree.SpaceNode) ;
    else if (node3 instanceof mathMLTree.MathNode) {
      switch (node3.type) {
        case "mi":
        case "mn":
        case "ms":
        case "mspace":
        case "mtext":
          break;
        // Do nothing yet.
        case "mo": {
          var child = node3.children[0];
          if (node3.children.length === 1 && child instanceof mathMLTree.TextNode) {
            child.text = child.text.replace(/\u2212/, "-").replace(/\u2217/, "*");
          } else {
            isAllString = false;
          }
          break;
        }
        default:
          isAllString = false;
      }
    } else {
      isAllString = false;
    }
  }
  if (isAllString) {
    var word = expression.map((node4) => node4.toText()).join("");
    expression = [new mathMLTree.TextNode(word)];
  }
  var identifier = new mathMLTree.MathNode("mi", expression);
  identifier.setAttribute("mathvariant", "normal");
  var operator = new mathMLTree.MathNode("mo", [makeText("\u2061", "text")]);
  if (group3.parentIsSupSub) {
    return new mathMLTree.MathNode("mrow", [identifier, operator]);
  } else {
    return mathMLTree.newDocumentFragment([identifier, operator]);
  }
};
defineFunction({
  type: "operatorname",
  names: ["\\operatorname@", "\\operatornamewithlimits"],
  props: {
    numArgs: 1
  },
  handler: (_ref, args) => {
    var {
      parser: parser3,
      funcName
    } = _ref;
    var body3 = args[0];
    return {
      type: "operatorname",
      mode: parser3.mode,
      body: ordargument(body3),
      alwaysHandleSupSub: funcName === "\\operatornamewithlimits",
      limits: false,
      parentIsSupSub: false
    };
  },
  htmlBuilder: htmlBuilder$1,
  mathmlBuilder: mathmlBuilder2
});
defineMacro("\\operatorname", "\\@ifstar\\operatornamewithlimits\\operatorname@");
defineFunctionBuilders({
  type: "ordgroup",
  htmlBuilder(group3, options) {
    if (group3.semisimple) {
      return buildCommon.makeFragment(buildExpression$1(group3.body, options, false));
    }
    return buildCommon.makeSpan(["mord"], buildExpression$1(group3.body, options, true), options);
  },
  mathmlBuilder(group3, options) {
    return buildExpressionRow(group3.body, options, true);
  }
});
defineFunction({
  type: "overline",
  names: ["\\overline"],
  props: {
    numArgs: 1
  },
  handler(_ref, args) {
    var {
      parser: parser3
    } = _ref;
    var body3 = args[0];
    return {
      type: "overline",
      mode: parser3.mode,
      body: body3
    };
  },
  htmlBuilder(group3, options) {
    var innerGroup = buildGroup$1(group3.body, options.havingCrampedStyle());
    var line2 = buildCommon.makeLineSpan("overline-line", options);
    var defaultRuleThickness = options.fontMetrics().defaultRuleThickness;
    var vlist = buildCommon.makeVList({
      positionType: "firstBaseline",
      children: [{
        type: "elem",
        elem: innerGroup
      }, {
        type: "kern",
        size: 3 * defaultRuleThickness
      }, {
        type: "elem",
        elem: line2
      }, {
        type: "kern",
        size: defaultRuleThickness
      }]
    }, options);
    return buildCommon.makeSpan(["mord", "overline"], [vlist], options);
  },
  mathmlBuilder(group3, options) {
    var operator = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode("\u203E")]);
    operator.setAttribute("stretchy", "true");
    var node3 = new mathMLTree.MathNode("mover", [buildGroup2(group3.body, options), operator]);
    node3.setAttribute("accent", "true");
    return node3;
  }
});
defineFunction({
  type: "phantom",
  names: ["\\phantom"],
  props: {
    numArgs: 1,
    allowedInText: true
  },
  handler: (_ref, args) => {
    var {
      parser: parser3
    } = _ref;
    var body3 = args[0];
    return {
      type: "phantom",
      mode: parser3.mode,
      body: ordargument(body3)
    };
  },
  htmlBuilder: (group3, options) => {
    var elements = buildExpression$1(group3.body, options.withPhantom(), false);
    return buildCommon.makeFragment(elements);
  },
  mathmlBuilder: (group3, options) => {
    var inner2 = buildExpression2(group3.body, options);
    return new mathMLTree.MathNode("mphantom", inner2);
  }
});
defineFunction({
  type: "hphantom",
  names: ["\\hphantom"],
  props: {
    numArgs: 1,
    allowedInText: true
  },
  handler: (_ref2, args) => {
    var {
      parser: parser3
    } = _ref2;
    var body3 = args[0];
    return {
      type: "hphantom",
      mode: parser3.mode,
      body: body3
    };
  },
  htmlBuilder: (group3, options) => {
    var node3 = buildCommon.makeSpan([], [buildGroup$1(group3.body, options.withPhantom())]);
    node3.height = 0;
    node3.depth = 0;
    if (node3.children) {
      for (var i2 = 0; i2 < node3.children.length; i2++) {
        node3.children[i2].height = 0;
        node3.children[i2].depth = 0;
      }
    }
    node3 = buildCommon.makeVList({
      positionType: "firstBaseline",
      children: [{
        type: "elem",
        elem: node3
      }]
    }, options);
    return buildCommon.makeSpan(["mord"], [node3], options);
  },
  mathmlBuilder: (group3, options) => {
    var inner2 = buildExpression2(ordargument(group3.body), options);
    var phantom = new mathMLTree.MathNode("mphantom", inner2);
    var node3 = new mathMLTree.MathNode("mpadded", [phantom]);
    node3.setAttribute("height", "0px");
    node3.setAttribute("depth", "0px");
    return node3;
  }
});
defineFunction({
  type: "vphantom",
  names: ["\\vphantom"],
  props: {
    numArgs: 1,
    allowedInText: true
  },
  handler: (_ref3, args) => {
    var {
      parser: parser3
    } = _ref3;
    var body3 = args[0];
    return {
      type: "vphantom",
      mode: parser3.mode,
      body: body3
    };
  },
  htmlBuilder: (group3, options) => {
    var inner2 = buildCommon.makeSpan(["inner"], [buildGroup$1(group3.body, options.withPhantom())]);
    var fix = buildCommon.makeSpan(["fix"], []);
    return buildCommon.makeSpan(["mord", "rlap"], [inner2, fix], options);
  },
  mathmlBuilder: (group3, options) => {
    var inner2 = buildExpression2(ordargument(group3.body), options);
    var phantom = new mathMLTree.MathNode("mphantom", inner2);
    var node3 = new mathMLTree.MathNode("mpadded", [phantom]);
    node3.setAttribute("width", "0px");
    return node3;
  }
});
defineFunction({
  type: "raisebox",
  names: ["\\raisebox"],
  props: {
    numArgs: 2,
    argTypes: ["size", "hbox"],
    allowedInText: true
  },
  handler(_ref, args) {
    var {
      parser: parser3
    } = _ref;
    var amount = assertNodeType(args[0], "size").value;
    var body3 = args[1];
    return {
      type: "raisebox",
      mode: parser3.mode,
      dy: amount,
      body: body3
    };
  },
  htmlBuilder(group3, options) {
    var body3 = buildGroup$1(group3.body, options);
    var dy = calculateSize(group3.dy, options);
    return buildCommon.makeVList({
      positionType: "shift",
      positionData: -dy,
      children: [{
        type: "elem",
        elem: body3
      }]
    }, options);
  },
  mathmlBuilder(group3, options) {
    var node3 = new mathMLTree.MathNode("mpadded", [buildGroup2(group3.body, options)]);
    var dy = group3.dy.number + group3.dy.unit;
    node3.setAttribute("voffset", dy);
    return node3;
  }
});
defineFunction({
  type: "internal",
  names: ["\\relax"],
  props: {
    numArgs: 0,
    allowedInText: true
  },
  handler(_ref) {
    var {
      parser: parser3
    } = _ref;
    return {
      type: "internal",
      mode: parser3.mode
    };
  }
});
defineFunction({
  type: "rule",
  names: ["\\rule"],
  props: {
    numArgs: 2,
    numOptionalArgs: 1,
    argTypes: ["size", "size", "size"]
  },
  handler(_ref, args, optArgs) {
    var {
      parser: parser3
    } = _ref;
    var shift = optArgs[0];
    var width = assertNodeType(args[0], "size");
    var height2 = assertNodeType(args[1], "size");
    return {
      type: "rule",
      mode: parser3.mode,
      shift: shift && assertNodeType(shift, "size").value,
      width: width.value,
      height: height2.value
    };
  },
  htmlBuilder(group3, options) {
    var rule = buildCommon.makeSpan(["mord", "rule"], [], options);
    var width = calculateSize(group3.width, options);
    var height2 = calculateSize(group3.height, options);
    var shift = group3.shift ? calculateSize(group3.shift, options) : 0;
    rule.style.borderRightWidth = makeEm(width);
    rule.style.borderTopWidth = makeEm(height2);
    rule.style.bottom = makeEm(shift);
    rule.width = width;
    rule.height = height2 + shift;
    rule.depth = -shift;
    rule.maxFontSize = height2 * 1.125 * options.sizeMultiplier;
    return rule;
  },
  mathmlBuilder(group3, options) {
    var width = calculateSize(group3.width, options);
    var height2 = calculateSize(group3.height, options);
    var shift = group3.shift ? calculateSize(group3.shift, options) : 0;
    var color2 = options.color && options.getColor() || "black";
    var rule = new mathMLTree.MathNode("mspace");
    rule.setAttribute("mathbackground", color2);
    rule.setAttribute("width", makeEm(width));
    rule.setAttribute("height", makeEm(height2));
    var wrapper = new mathMLTree.MathNode("mpadded", [rule]);
    if (shift >= 0) {
      wrapper.setAttribute("height", makeEm(shift));
    } else {
      wrapper.setAttribute("height", makeEm(shift));
      wrapper.setAttribute("depth", makeEm(-shift));
    }
    wrapper.setAttribute("voffset", makeEm(shift));
    return wrapper;
  }
});
function sizingGroup(value, options, baseOptions) {
  var inner2 = buildExpression$1(value, options, false);
  var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier;
  for (var i2 = 0; i2 < inner2.length; i2++) {
    var pos = inner2[i2].classes.indexOf("sizing");
    if (pos < 0) {
      Array.prototype.push.apply(inner2[i2].classes, options.sizingClasses(baseOptions));
    } else if (inner2[i2].classes[pos + 1] === "reset-size" + options.size) {
      inner2[i2].classes[pos + 1] = "reset-size" + baseOptions.size;
    }
    inner2[i2].height *= multiplier;
    inner2[i2].depth *= multiplier;
  }
  return buildCommon.makeFragment(inner2);
}
var sizeFuncs = ["\\tiny", "\\sixptsize", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"];
var htmlBuilder2 = (group3, options) => {
  var newOptions = options.havingSize(group3.size);
  return sizingGroup(group3.body, newOptions, options);
};
defineFunction({
  type: "sizing",
  names: sizeFuncs,
  props: {
    numArgs: 0,
    allowedInText: true
  },
  handler: (_ref, args) => {
    var {
      breakOnTokenText,
      funcName,
      parser: parser3
    } = _ref;
    var body3 = parser3.parseExpression(false, breakOnTokenText);
    return {
      type: "sizing",
      mode: parser3.mode,
      // Figure out what size to use based on the list of functions above
      size: sizeFuncs.indexOf(funcName) + 1,
      body: body3
    };
  },
  htmlBuilder: htmlBuilder2,
  mathmlBuilder: (group3, options) => {
    var newOptions = options.havingSize(group3.size);
    var inner2 = buildExpression2(group3.body, newOptions);
    var node3 = new mathMLTree.MathNode("mstyle", inner2);
    node3.setAttribute("mathsize", makeEm(newOptions.sizeMultiplier));
    return node3;
  }
});
defineFunction({
  type: "smash",
  names: ["\\smash"],
  props: {
    numArgs: 1,
    numOptionalArgs: 1,
    allowedInText: true
  },
  handler: (_ref, args, optArgs) => {
    var {
      parser: parser3
    } = _ref;
    var smashHeight = false;
    var smashDepth = false;
    var tbArg = optArgs[0] && assertNodeType(optArgs[0], "ordgroup");
    if (tbArg) {
      var letter = "";
      for (var i2 = 0; i2 < tbArg.body.length; ++i2) {
        var node3 = tbArg.body[i2];
        letter = node3.text;
        if (letter === "t") {
          smashHeight = true;
        } else if (letter === "b") {
          smashDepth = true;
        } else {
          smashHeight = false;
          smashDepth = false;
          break;
        }
      }
    } else {
      smashHeight = true;
      smashDepth = true;
    }
    var body3 = args[0];
    return {
      type: "smash",
      mode: parser3.mode,
      body: body3,
      smashHeight,
      smashDepth
    };
  },
  htmlBuilder: (group3, options) => {
    var node3 = buildCommon.makeSpan([], [buildGroup$1(group3.body, options)]);
    if (!group3.smashHeight && !group3.smashDepth) {
      return node3;
    }
    if (group3.smashHeight) {
      node3.height = 0;
      if (node3.children) {
        for (var i2 = 0; i2 < node3.children.length; i2++) {
          node3.children[i2].height = 0;
        }
      }
    }
    if (group3.smashDepth) {
      node3.depth = 0;
      if (node3.children) {
        for (var _i = 0; _i < node3.children.length; _i++) {
          node3.children[_i].depth = 0;
        }
      }
    }
    var smashedNode = buildCommon.makeVList({
      positionType: "firstBaseline",
      children: [{
        type: "elem",
        elem: node3
      }]
    }, options);
    return buildCommon.makeSpan(["mord"], [smashedNode], options);
  },
  mathmlBuilder: (group3, options) => {
    var node3 = new mathMLTree.MathNode("mpadded", [buildGroup2(group3.body, options)]);
    if (group3.smashHeight) {
      node3.setAttribute("height", "0px");
    }
    if (group3.smashDepth) {
      node3.setAttribute("depth", "0px");
    }
    return node3;
  }
});
defineFunction({
  type: "sqrt",
  names: ["\\sqrt"],
  props: {
    numArgs: 1,
    numOptionalArgs: 1
  },
  handler(_ref, args, optArgs) {
    var {
      parser: parser3
    } = _ref;
    var index4 = optArgs[0];
    var body3 = args[0];
    return {
      type: "sqrt",
      mode: parser3.mode,
      body: body3,
      index: index4
    };
  },
  htmlBuilder(group3, options) {
    var inner2 = buildGroup$1(group3.body, options.havingCrampedStyle());
    if (inner2.height === 0) {
      inner2.height = options.fontMetrics().xHeight;
    }
    inner2 = buildCommon.wrapFragment(inner2, options);
    var metrics = options.fontMetrics();
    var theta = metrics.defaultRuleThickness;
    var phi = theta;
    if (options.style.id < Style$1.TEXT.id) {
      phi = options.fontMetrics().xHeight;
    }
    var lineClearance = theta + phi / 4;
    var minDelimiterHeight = inner2.height + inner2.depth + lineClearance + theta;
    var {
      span: img2,
      ruleWidth,
      advanceWidth
    } = delimiter.sqrtImage(minDelimiterHeight, options);
    var delimDepth = img2.height - ruleWidth;
    if (delimDepth > inner2.height + inner2.depth + lineClearance) {
      lineClearance = (lineClearance + delimDepth - inner2.height - inner2.depth) / 2;
    }
    var imgShift = img2.height - inner2.height - lineClearance - ruleWidth;
    inner2.style.paddingLeft = makeEm(advanceWidth);
    var body3 = buildCommon.makeVList({
      positionType: "firstBaseline",
      children: [{
        type: "elem",
        elem: inner2,
        wrapperClasses: ["svg-align"]
      }, {
        type: "kern",
        size: -(inner2.height + imgShift)
      }, {
        type: "elem",
        elem: img2
      }, {
        type: "kern",
        size: ruleWidth
      }]
    }, options);
    if (!group3.index) {
      return buildCommon.makeSpan(["mord", "sqrt"], [body3], options);
    } else {
      var newOptions = options.havingStyle(Style$1.SCRIPTSCRIPT);
      var rootm = buildGroup$1(group3.index, newOptions, options);
      var toShift = 0.6 * (body3.height - body3.depth);
      var rootVList = buildCommon.makeVList({
        positionType: "shift",
        positionData: -toShift,
        children: [{
          type: "elem",
          elem: rootm
        }]
      }, options);
      var rootVListWrap = buildCommon.makeSpan(["root"], [rootVList]);
      return buildCommon.makeSpan(["mord", "sqrt"], [rootVListWrap, body3], options);
    }
  },
  mathmlBuilder(group3, options) {
    var {
      body: body3,
      index: index4
    } = group3;
    return index4 ? new mathMLTree.MathNode("mroot", [buildGroup2(body3, options), buildGroup2(index4, options)]) : new mathMLTree.MathNode("msqrt", [buildGroup2(body3, options)]);
  }
});
var styleMap = {
  "display": Style$1.DISPLAY,
  "text": Style$1.TEXT,
  "script": Style$1.SCRIPT,
  "scriptscript": Style$1.SCRIPTSCRIPT
};
defineFunction({
  type: "styling",
  names: ["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"],
  props: {
    numArgs: 0,
    allowedInText: true,
    primitive: true
  },
  handler(_ref, args) {
    var {
      breakOnTokenText,
      funcName,
      parser: parser3
    } = _ref;
    var body3 = parser3.parseExpression(true, breakOnTokenText);
    var style3 = funcName.slice(1, funcName.length - 5);
    return {
      type: "styling",
      mode: parser3.mode,
      // Figure out what style to use by pulling out the style from
      // the function name
      style: style3,
      body: body3
    };
  },
  htmlBuilder(group3, options) {
    var newStyle = styleMap[group3.style];
    var newOptions = options.havingStyle(newStyle).withFont("");
    return sizingGroup(group3.body, newOptions, options);
  },
  mathmlBuilder(group3, options) {
    var newStyle = styleMap[group3.style];
    var newOptions = options.havingStyle(newStyle);
    var inner2 = buildExpression2(group3.body, newOptions);
    var node3 = new mathMLTree.MathNode("mstyle", inner2);
    var styleAttributes = {
      "display": ["0", "true"],
      "text": ["0", "false"],
      "script": ["1", "false"],
      "scriptscript": ["2", "false"]
    };
    var attr = styleAttributes[group3.style];
    node3.setAttribute("scriptlevel", attr[0]);
    node3.setAttribute("displaystyle", attr[1]);
    return node3;
  }
});
var htmlBuilderDelegate = function htmlBuilderDelegate2(group3, options) {
  var base5 = group3.base;
  if (!base5) {
    return null;
  } else if (base5.type === "op") {
    var delegate = base5.limits && (options.style.size === Style$1.DISPLAY.size || base5.alwaysHandleSupSub);
    return delegate ? htmlBuilder$2 : null;
  } else if (base5.type === "operatorname") {
    var _delegate = base5.alwaysHandleSupSub && (options.style.size === Style$1.DISPLAY.size || base5.limits);
    return _delegate ? htmlBuilder$1 : null;
  } else if (base5.type === "accent") {
    return utils.isCharacterBox(base5.base) ? htmlBuilder$a : null;
  } else if (base5.type === "horizBrace") {
    var isSup = !group3.sub;
    return isSup === base5.isOver ? htmlBuilder$3 : null;
  } else {
    return null;
  }
};
defineFunctionBuilders({
  type: "supsub",
  htmlBuilder(group3, options) {
    var builderDelegate = htmlBuilderDelegate(group3, options);
    if (builderDelegate) {
      return builderDelegate(group3, options);
    }
    var {
      base: valueBase,
      sup: valueSup,
      sub: valueSub
    } = group3;
    var base5 = buildGroup$1(valueBase, options);
    var supm;
    var subm;
    var metrics = options.fontMetrics();
    var supShift = 0;
    var subShift = 0;
    var isCharacterBox3 = valueBase && utils.isCharacterBox(valueBase);
    if (valueSup) {
      var newOptions = options.havingStyle(options.style.sup());
      supm = buildGroup$1(valueSup, newOptions, options);
      if (!isCharacterBox3) {
        supShift = base5.height - newOptions.fontMetrics().supDrop * newOptions.sizeMultiplier / options.sizeMultiplier;
      }
    }
    if (valueSub) {
      var _newOptions = options.havingStyle(options.style.sub());
      subm = buildGroup$1(valueSub, _newOptions, options);
      if (!isCharacterBox3) {
        subShift = base5.depth + _newOptions.fontMetrics().subDrop * _newOptions.sizeMultiplier / options.sizeMultiplier;
      }
    }
    var minSupShift;
    if (options.style === Style$1.DISPLAY) {
      minSupShift = metrics.sup1;
    } else if (options.style.cramped) {
      minSupShift = metrics.sup3;
    } else {
      minSupShift = metrics.sup2;
    }
    var multiplier = options.sizeMultiplier;
    var marginRight = makeEm(0.5 / metrics.ptPerEm / multiplier);
    var marginLeft = null;
    if (subm) {
      var isOiint = group3.base && group3.base.type === "op" && group3.base.name && (group3.base.name === "\\oiint" || group3.base.name === "\\oiiint");
      if (base5 instanceof SymbolNode || isOiint) {
        marginLeft = makeEm(-base5.italic);
      }
    }
    var supsub;
    if (supm && subm) {
      supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight);
      subShift = Math.max(subShift, metrics.sub2);
      var ruleWidth = metrics.defaultRuleThickness;
      var maxWidth = 4 * ruleWidth;
      if (supShift - supm.depth - (subm.height - subShift) < maxWidth) {
        subShift = maxWidth - (supShift - supm.depth) + subm.height;
        var psi = 0.8 * metrics.xHeight - (supShift - supm.depth);
        if (psi > 0) {
          supShift += psi;
          subShift -= psi;
        }
      }
      var vlistElem = [{
        type: "elem",
        elem: subm,
        shift: subShift,
        marginRight,
        marginLeft
      }, {
        type: "elem",
        elem: supm,
        shift: -supShift,
        marginRight
      }];
      supsub = buildCommon.makeVList({
        positionType: "individualShift",
        children: vlistElem
      }, options);
    } else if (subm) {
      subShift = Math.max(subShift, metrics.sub1, subm.height - 0.8 * metrics.xHeight);
      var _vlistElem = [{
        type: "elem",
        elem: subm,
        marginLeft,
        marginRight
      }];
      supsub = buildCommon.makeVList({
        positionType: "shift",
        positionData: subShift,
        children: _vlistElem
      }, options);
    } else if (supm) {
      supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight);
      supsub = buildCommon.makeVList({
        positionType: "shift",
        positionData: -supShift,
        children: [{
          type: "elem",
          elem: supm,
          marginRight
        }]
      }, options);
    } else {
      throw new Error("supsub must have either sup or sub.");
    }
    var mclass = getTypeOfDomTree(base5, "right") || "mord";
    return buildCommon.makeSpan([mclass], [base5, buildCommon.makeSpan(["msupsub"], [supsub])], options);
  },
  mathmlBuilder(group3, options) {
    var isBrace = false;
    var isOver;
    var isSup;
    if (group3.base && group3.base.type === "horizBrace") {
      isSup = !!group3.sup;
      if (isSup === group3.base.isOver) {
        isBrace = true;
        isOver = group3.base.isOver;
      }
    }
    if (group3.base && (group3.base.type === "op" || group3.base.type === "operatorname")) {
      group3.base.parentIsSupSub = true;
    }
    var children = [buildGroup2(group3.base, options)];
    if (group3.sub) {
      children.push(buildGroup2(group3.sub, options));
    }
    if (group3.sup) {
      children.push(buildGroup2(group3.sup, options));
    }
    var nodeType;
    if (isBrace) {
      nodeType = isOver ? "mover" : "munder";
    } else if (!group3.sub) {
      var base5 = group3.base;
      if (base5 && base5.type === "op" && base5.limits && (options.style === Style$1.DISPLAY || base5.alwaysHandleSupSub)) {
        nodeType = "mover";
      } else if (base5 && base5.type === "operatorname" && base5.alwaysHandleSupSub && (base5.limits || options.style === Style$1.DISPLAY)) {
        nodeType = "mover";
      } else {
        nodeType = "msup";
      }
    } else if (!group3.sup) {
      var _base = group3.base;
      if (_base && _base.type === "op" && _base.limits && (options.style === Style$1.DISPLAY || _base.alwaysHandleSupSub)) {
        nodeType = "munder";
      } else if (_base && _base.type === "operatorname" && _base.alwaysHandleSupSub && (_base.limits || options.style === Style$1.DISPLAY)) {
        nodeType = "munder";
      } else {
        nodeType = "msub";
      }
    } else {
      var _base2 = group3.base;
      if (_base2 && _base2.type === "op" && _base2.limits && options.style === Style$1.DISPLAY) {
        nodeType = "munderover";
      } else if (_base2 && _base2.type === "operatorname" && _base2.alwaysHandleSupSub && (options.style === Style$1.DISPLAY || _base2.limits)) {
        nodeType = "munderover";
      } else {
        nodeType = "msubsup";
      }
    }
    return new mathMLTree.MathNode(nodeType, children);
  }
});
defineFunctionBuilders({
  type: "atom",
  htmlBuilder(group3, options) {
    return buildCommon.mathsym(group3.text, group3.mode, options, ["m" + group3.family]);
  },
  mathmlBuilder(group3, options) {
    var node3 = new mathMLTree.MathNode("mo", [makeText(group3.text, group3.mode)]);
    if (group3.family === "bin") {
      var variant = getVariant(group3, options);
      if (variant === "bold-italic") {
        node3.setAttribute("mathvariant", variant);
      }
    } else if (group3.family === "punct") {
      node3.setAttribute("separator", "true");
    } else if (group3.family === "open" || group3.family === "close") {
      node3.setAttribute("stretchy", "false");
    }
    return node3;
  }
});
var defaultVariant = {
  "mi": "italic",
  "mn": "normal",
  "mtext": "normal"
};
defineFunctionBuilders({
  type: "mathord",
  htmlBuilder(group3, options) {
    return buildCommon.makeOrd(group3, options, "mathord");
  },
  mathmlBuilder(group3, options) {
    var node3 = new mathMLTree.MathNode("mi", [makeText(group3.text, group3.mode, options)]);
    var variant = getVariant(group3, options) || "italic";
    if (variant !== defaultVariant[node3.type]) {
      node3.setAttribute("mathvariant", variant);
    }
    return node3;
  }
});
defineFunctionBuilders({
  type: "textord",
  htmlBuilder(group3, options) {
    return buildCommon.makeOrd(group3, options, "textord");
  },
  mathmlBuilder(group3, options) {
    var text7 = makeText(group3.text, group3.mode, options);
    var variant = getVariant(group3, options) || "normal";
    var node3;
    if (group3.mode === "text") {
      node3 = new mathMLTree.MathNode("mtext", [text7]);
    } else if (/[0-9]/.test(group3.text)) {
      node3 = new mathMLTree.MathNode("mn", [text7]);
    } else if (group3.text === "\\prime") {
      node3 = new mathMLTree.MathNode("mo", [text7]);
    } else {
      node3 = new mathMLTree.MathNode("mi", [text7]);
    }
    if (variant !== defaultVariant[node3.type]) {
      node3.setAttribute("mathvariant", variant);
    }
    return node3;
  }
});
var cssSpace = {
  "\\nobreak": "nobreak",
  "\\allowbreak": "allowbreak"
};
var regularSpace = {
  " ": {},
  "\\ ": {},
  "~": {
    className: "nobreak"
  },
  "\\space": {},
  "\\nobreakspace": {
    className: "nobreak"
  }
};
defineFunctionBuilders({
  type: "spacing",
  htmlBuilder(group3, options) {
    if (regularSpace.hasOwnProperty(group3.text)) {
      var className = regularSpace[group3.text].className || "";
      if (group3.mode === "text") {
        var ord = buildCommon.makeOrd(group3, options, "textord");
        ord.classes.push(className);
        return ord;
      } else {
        return buildCommon.makeSpan(["mspace", className], [buildCommon.mathsym(group3.text, group3.mode, options)], options);
      }
    } else if (cssSpace.hasOwnProperty(group3.text)) {
      return buildCommon.makeSpan(["mspace", cssSpace[group3.text]], [], options);
    } else {
      throw new ParseError('Unknown type of space "' + group3.text + '"');
    }
  },
  mathmlBuilder(group3, options) {
    var node3;
    if (regularSpace.hasOwnProperty(group3.text)) {
      node3 = new mathMLTree.MathNode("mtext", [new mathMLTree.TextNode("\xA0")]);
    } else if (cssSpace.hasOwnProperty(group3.text)) {
      return new mathMLTree.MathNode("mspace");
    } else {
      throw new ParseError('Unknown type of space "' + group3.text + '"');
    }
    return node3;
  }
});
var pad = () => {
  var padNode = new mathMLTree.MathNode("mtd", []);
  padNode.setAttribute("width", "50%");
  return padNode;
};
defineFunctionBuilders({
  type: "tag",
  mathmlBuilder(group3, options) {
    var table5 = new mathMLTree.MathNode("mtable", [new mathMLTree.MathNode("mtr", [pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group3.body, options)]), pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group3.tag, options)])])]);
    table5.setAttribute("width", "100%");
    return table5;
  }
});
var textFontFamilies = {
  "\\text": void 0,
  "\\textrm": "textrm",
  "\\textsf": "textsf",
  "\\texttt": "texttt",
  "\\textnormal": "textrm"
};
var textFontWeights = {
  "\\textbf": "textbf",
  "\\textmd": "textmd"
};
var textFontShapes = {
  "\\textit": "textit",
  "\\textup": "textup"
};
var optionsWithFont = (group3, options) => {
  var font = group3.font;
  if (!font) {
    return options;
  } else if (textFontFamilies[font]) {
    return options.withTextFontFamily(textFontFamilies[font]);
  } else if (textFontWeights[font]) {
    return options.withTextFontWeight(textFontWeights[font]);
  } else {
    return options.withTextFontShape(textFontShapes[font]);
  }
};
defineFunction({
  type: "text",
  names: [
    // Font families
    "\\text",
    "\\textrm",
    "\\textsf",
    "\\texttt",
    "\\textnormal",
    // Font weights
    "\\textbf",
    "\\textmd",
    // Font Shapes
    "\\textit",
    "\\textup"
  ],
  props: {
    numArgs: 1,
    argTypes: ["text"],
    allowedInArgument: true,
    allowedInText: true
  },
  handler(_ref, args) {
    var {
      parser: parser3,
      funcName
    } = _ref;
    var body3 = args[0];
    return {
      type: "text",
      mode: parser3.mode,
      body: ordargument(body3),
      font: funcName
    };
  },
  htmlBuilder(group3, options) {
    var newOptions = optionsWithFont(group3, options);
    var inner2 = buildExpression$1(group3.body, newOptions, true);
    return buildCommon.makeSpan(["mord", "text"], inner2, newOptions);
  },
  mathmlBuilder(group3, options) {
    var newOptions = optionsWithFont(group3, options);
    return buildExpressionRow(group3.body, newOptions);
  }
});
defineFunction({
  type: "underline",
  names: ["\\underline"],
  props: {
    numArgs: 1,
    allowedInText: true
  },
  handler(_ref, args) {
    var {
      parser: parser3
    } = _ref;
    return {
      type: "underline",
      mode: parser3.mode,
      body: args[0]
    };
  },
  htmlBuilder(group3, options) {
    var innerGroup = buildGroup$1(group3.body, options);
    var line2 = buildCommon.makeLineSpan("underline-line", options);
    var defaultRuleThickness = options.fontMetrics().defaultRuleThickness;
    var vlist = buildCommon.makeVList({
      positionType: "top",
      positionData: innerGroup.height,
      children: [{
        type: "kern",
        size: defaultRuleThickness
      }, {
        type: "elem",
        elem: line2
      }, {
        type: "kern",
        size: 3 * defaultRuleThickness
      }, {
        type: "elem",
        elem: innerGroup
      }]
    }, options);
    return buildCommon.makeSpan(["mord", "underline"], [vlist], options);
  },
  mathmlBuilder(group3, options) {
    var operator = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode("\u203E")]);
    operator.setAttribute("stretchy", "true");
    var node3 = new mathMLTree.MathNode("munder", [buildGroup2(group3.body, options), operator]);
    node3.setAttribute("accentunder", "true");
    return node3;
  }
});
defineFunction({
  type: "vcenter",
  names: ["\\vcenter"],
  props: {
    numArgs: 1,
    argTypes: ["original"],
    // In LaTeX, \vcenter can act only on a box.
    allowedInText: false
  },
  handler(_ref, args) {
    var {
      parser: parser3
    } = _ref;
    return {
      type: "vcenter",
      mode: parser3.mode,
      body: args[0]
    };
  },
  htmlBuilder(group3, options) {
    var body3 = buildGroup$1(group3.body, options);
    var axisHeight = options.fontMetrics().axisHeight;
    var dy = 0.5 * (body3.height - axisHeight - (body3.depth + axisHeight));
    return buildCommon.makeVList({
      positionType: "shift",
      positionData: dy,
      children: [{
        type: "elem",
        elem: body3
      }]
    }, options);
  },
  mathmlBuilder(group3, options) {
    return new mathMLTree.MathNode("mpadded", [buildGroup2(group3.body, options)], ["vcenter"]);
  }
});
defineFunction({
  type: "verb",
  names: ["\\verb"],
  props: {
    numArgs: 0,
    allowedInText: true
  },
  handler(context, args, optArgs) {
    throw new ParseError("\\verb ended by end of line instead of matching delimiter");
  },
  htmlBuilder(group3, options) {
    var text7 = makeVerb(group3);
    var body3 = [];
    var newOptions = options.havingStyle(options.style.text());
    for (var i2 = 0; i2 < text7.length; i2++) {
      var c = text7[i2];
      if (c === "~") {
        c = "\\textasciitilde";
      }
      body3.push(buildCommon.makeSymbol(c, "Typewriter-Regular", group3.mode, newOptions, ["mord", "texttt"]));
    }
    return buildCommon.makeSpan(["mord", "text"].concat(newOptions.sizingClasses(options)), buildCommon.tryCombineChars(body3), newOptions);
  },
  mathmlBuilder(group3, options) {
    var text7 = new mathMLTree.TextNode(makeVerb(group3));
    var node3 = new mathMLTree.MathNode("mtext", [text7]);
    node3.setAttribute("mathvariant", "monospace");
    return node3;
  }
});
var makeVerb = (group3) => group3.body.replace(/ /g, group3.star ? "\u2423" : "\xA0");
var functions = _functions;
var spaceRegexString = "[ \r\n	]";
var controlWordRegexString = "\\\\[a-zA-Z@]+";
var controlSymbolRegexString = "\\\\[^\uD800-\uDFFF]";
var controlWordWhitespaceRegexString = "(" + controlWordRegexString + ")" + spaceRegexString + "*";
var controlSpaceRegexString = "\\\\(\n|[ \r	]+\n?)[ \r	]*";
var combiningDiacriticalMarkString = "[\u0300-\u036F]";
var combiningDiacriticalMarksEndRegex = new RegExp(combiningDiacriticalMarkString + "+$");
var tokenRegexString = "(" + spaceRegexString + "+)|" + // whitespace
(controlSpaceRegexString + "|") + // \whitespace
"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]" + // single codepoint
(combiningDiacriticalMarkString + "*") + // ...plus accents
"|[\uD800-\uDBFF][\uDC00-\uDFFF]" + // surrogate pair
(combiningDiacriticalMarkString + "*") + // ...plus accents
"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5" + // \verb unstarred
("|" + controlWordWhitespaceRegexString) + // \macroName + spaces
("|" + controlSymbolRegexString + ")");
var Lexer = class {
  // Category codes. The lexer only supports comment characters (14) for now.
  // MacroExpander additionally distinguishes active (13).
  constructor(input3, settings) {
    this.input = void 0;
    this.settings = void 0;
    this.tokenRegex = void 0;
    this.catcodes = void 0;
    this.input = input3;
    this.settings = settings;
    this.tokenRegex = new RegExp(tokenRegexString, "g");
    this.catcodes = {
      "%": 14,
      // comment character
      "~": 13
      // active character
    };
  }
  setCatcode(char, code7) {
    this.catcodes[char] = code7;
  }
  /**
   * This function lexes a single token.
   */
  lex() {
    var input3 = this.input;
    var pos = this.tokenRegex.lastIndex;
    if (pos === input3.length) {
      return new Token("EOF", new SourceLocation(this, pos, pos));
    }
    var match3 = this.tokenRegex.exec(input3);
    if (match3 === null || match3.index !== pos) {
      throw new ParseError("Unexpected character: '" + input3[pos] + "'", new Token(input3[pos], new SourceLocation(this, pos, pos + 1)));
    }
    var text7 = match3[6] || match3[3] || (match3[2] ? "\\ " : " ");
    if (this.catcodes[text7] === 14) {
      var nlIndex = input3.indexOf("\n", this.tokenRegex.lastIndex);
      if (nlIndex === -1) {
        this.tokenRegex.lastIndex = input3.length;
        this.settings.reportNonstrict("commentAtEnd", "% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)");
      } else {
        this.tokenRegex.lastIndex = nlIndex + 1;
      }
      return this.lex();
    }
    return new Token(text7, new SourceLocation(this, pos, this.tokenRegex.lastIndex));
  }
};
var Namespace = class {
  /**
   * Both arguments are optional.  The first argument is an object of
   * built-in mappings which never change.  The second argument is an object
   * of initial (global-level) mappings, which will constantly change
   * according to any global/top-level `set`s done.
   */
  constructor(builtins, globalMacros) {
    if (builtins === void 0) {
      builtins = {};
    }
    if (globalMacros === void 0) {
      globalMacros = {};
    }
    this.current = void 0;
    this.builtins = void 0;
    this.undefStack = void 0;
    this.current = globalMacros;
    this.builtins = builtins;
    this.undefStack = [];
  }
  /**
   * Start a new nested group, affecting future local `set`s.
   */
  beginGroup() {
    this.undefStack.push({});
  }
  /**
   * End current nested group, restoring values before the group began.
   */
  endGroup() {
    if (this.undefStack.length === 0) {
      throw new ParseError("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");
    }
    var undefs = this.undefStack.pop();
    for (var undef in undefs) {
      if (undefs.hasOwnProperty(undef)) {
        if (undefs[undef] == null) {
          delete this.current[undef];
        } else {
          this.current[undef] = undefs[undef];
        }
      }
    }
  }
  /**
   * Ends all currently nested groups (if any), restoring values before the
   * groups began.  Useful in case of an error in the middle of parsing.
   */
  endGroups() {
    while (this.undefStack.length > 0) {
      this.endGroup();
    }
  }
  /**
   * Detect whether `name` has a definition.  Equivalent to
   * `get(name) != null`.
   */
  has(name3) {
    return this.current.hasOwnProperty(name3) || this.builtins.hasOwnProperty(name3);
  }
  /**
   * Get the current value of a name, or `undefined` if there is no value.
   *
   * Note: Do not use `if (namespace.get(...))` to detect whether a macro
   * is defined, as the definition may be the empty string which evaluates
   * to `false` in JavaScript.  Use `if (namespace.get(...) != null)` or
   * `if (namespace.has(...))`.
   */
  get(name3) {
    if (this.current.hasOwnProperty(name3)) {
      return this.current[name3];
    } else {
      return this.builtins[name3];
    }
  }
  /**
   * Set the current value of a name, and optionally set it globally too.
   * Local set() sets the current value and (when appropriate) adds an undo
   * operation to the undo stack.  Global set() may change the undo
   * operation at every level, so takes time linear in their number.
   * A value of undefined means to delete existing definitions.
   */
  set(name3, value, global2) {
    if (global2 === void 0) {
      global2 = false;
    }
    if (global2) {
      for (var i2 = 0; i2 < this.undefStack.length; i2++) {
        delete this.undefStack[i2][name3];
      }
      if (this.undefStack.length > 0) {
        this.undefStack[this.undefStack.length - 1][name3] = value;
      }
    } else {
      var top = this.undefStack[this.undefStack.length - 1];
      if (top && !top.hasOwnProperty(name3)) {
        top[name3] = this.current[name3];
      }
    }
    if (value == null) {
      delete this.current[name3];
    } else {
      this.current[name3] = value;
    }
  }
};
var macros = _macros;
defineMacro("\\noexpand", function(context) {
  var t2 = context.popToken();
  if (context.isExpandable(t2.text)) {
    t2.noexpand = true;
    t2.treatAsRelax = true;
  }
  return {
    tokens: [t2],
    numArgs: 0
  };
});
defineMacro("\\expandafter", function(context) {
  var t2 = context.popToken();
  context.expandOnce(true);
  return {
    tokens: [t2],
    numArgs: 0
  };
});
defineMacro("\\@firstoftwo", function(context) {
  var args = context.consumeArgs(2);
  return {
    tokens: args[0],
    numArgs: 0
  };
});
defineMacro("\\@secondoftwo", function(context) {
  var args = context.consumeArgs(2);
  return {
    tokens: args[1],
    numArgs: 0
  };
});
defineMacro("\\@ifnextchar", function(context) {
  var args = context.consumeArgs(3);
  context.consumeSpaces();
  var nextToken = context.future();
  if (args[0].length === 1 && args[0][0].text === nextToken.text) {
    return {
      tokens: args[1],
      numArgs: 0
    };
  } else {
    return {
      tokens: args[2],
      numArgs: 0
    };
  }
});
defineMacro("\\@ifstar", "\\@ifnextchar *{\\@firstoftwo{#1}}");
defineMacro("\\TextOrMath", function(context) {
  var args = context.consumeArgs(2);
  if (context.mode === "text") {
    return {
      tokens: args[0],
      numArgs: 0
    };
  } else {
    return {
      tokens: args[1],
      numArgs: 0
    };
  }
});
var digitToNumber = {
  "0": 0,
  "1": 1,
  "2": 2,
  "3": 3,
  "4": 4,
  "5": 5,
  "6": 6,
  "7": 7,
  "8": 8,
  "9": 9,
  "a": 10,
  "A": 10,
  "b": 11,
  "B": 11,
  "c": 12,
  "C": 12,
  "d": 13,
  "D": 13,
  "e": 14,
  "E": 14,
  "f": 15,
  "F": 15
};
defineMacro("\\char", function(context) {
  var token = context.popToken();
  var base5;
  var number2 = "";
  if (token.text === "'") {
    base5 = 8;
    token = context.popToken();
  } else if (token.text === '"') {
    base5 = 16;
    token = context.popToken();
  } else if (token.text === "`") {
    token = context.popToken();
    if (token.text[0] === "\\") {
      number2 = token.text.charCodeAt(1);
    } else if (token.text === "EOF") {
      throw new ParseError("\\char` missing argument");
    } else {
      number2 = token.text.charCodeAt(0);
    }
  } else {
    base5 = 10;
  }
  if (base5) {
    number2 = digitToNumber[token.text];
    if (number2 == null || number2 >= base5) {
      throw new ParseError("Invalid base-" + base5 + " digit " + token.text);
    }
    var digit;
    while ((digit = digitToNumber[context.future().text]) != null && digit < base5) {
      number2 *= base5;
      number2 += digit;
      context.popToken();
    }
  }
  return "\\@char{" + number2 + "}";
});
var newcommand = (context, existsOK, nonexistsOK) => {
  var arg2 = context.consumeArg().tokens;
  if (arg2.length !== 1) {
    throw new ParseError("\\newcommand's first argument must be a macro name");
  }
  var name3 = arg2[0].text;
  var exists2 = context.isDefined(name3);
  if (exists2 && !existsOK) {
    throw new ParseError("\\newcommand{" + name3 + "} attempting to redefine " + (name3 + "; use \\renewcommand"));
  }
  if (!exists2 && !nonexistsOK) {
    throw new ParseError("\\renewcommand{" + name3 + "} when command " + name3 + " does not yet exist; use \\newcommand");
  }
  var numArgs = 0;
  arg2 = context.consumeArg().tokens;
  if (arg2.length === 1 && arg2[0].text === "[") {
    var argText = "";
    var token = context.expandNextToken();
    while (token.text !== "]" && token.text !== "EOF") {
      argText += token.text;
      token = context.expandNextToken();
    }
    if (!argText.match(/^\s*[0-9]+\s*$/)) {
      throw new ParseError("Invalid number of arguments: " + argText);
    }
    numArgs = parseInt(argText);
    arg2 = context.consumeArg().tokens;
  }
  context.macros.set(name3, {
    tokens: arg2,
    numArgs
  });
  return "";
};
defineMacro("\\newcommand", (context) => newcommand(context, false, true));
defineMacro("\\renewcommand", (context) => newcommand(context, true, false));
defineMacro("\\providecommand", (context) => newcommand(context, true, true));
defineMacro("\\message", (context) => {
  var arg2 = context.consumeArgs(1)[0];
  console.log(arg2.reverse().map((token) => token.text).join(""));
  return "";
});
defineMacro("\\errmessage", (context) => {
  var arg2 = context.consumeArgs(1)[0];
  console.error(arg2.reverse().map((token) => token.text).join(""));
  return "";
});
defineMacro("\\show", (context) => {
  var tok = context.popToken();
  var name3 = tok.text;
  console.log(tok, context.macros.get(name3), functions[name3], symbols.math[name3], symbols.text[name3]);
  return "";
});
defineMacro("\\bgroup", "{");
defineMacro("\\egroup", "}");
defineMacro("~", "\\nobreakspace");
defineMacro("\\lq", "`");
defineMacro("\\rq", "'");
defineMacro("\\aa", "\\r a");
defineMacro("\\AA", "\\r A");
defineMacro("\\textcopyright", "\\html@mathml{\\textcircled{c}}{\\char`\xA9}");
defineMacro("\\copyright", "\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");
defineMacro("\\textregistered", "\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");
defineMacro("\u212C", "\\mathscr{B}");
defineMacro("\u2130", "\\mathscr{E}");
defineMacro("\u2131", "\\mathscr{F}");
defineMacro("\u210B", "\\mathscr{H}");
defineMacro("\u2110", "\\mathscr{I}");
defineMacro("\u2112", "\\mathscr{L}");
defineMacro("\u2133", "\\mathscr{M}");
defineMacro("\u211B", "\\mathscr{R}");
defineMacro("\u212D", "\\mathfrak{C}");
defineMacro("\u210C", "\\mathfrak{H}");
defineMacro("\u2128", "\\mathfrak{Z}");
defineMacro("\\Bbbk", "\\Bbb{k}");
defineMacro("\xB7", "\\cdotp");
defineMacro("\\llap", "\\mathllap{\\textrm{#1}}");
defineMacro("\\rlap", "\\mathrlap{\\textrm{#1}}");
defineMacro("\\clap", "\\mathclap{\\textrm{#1}}");
defineMacro("\\mathstrut", "\\vphantom{(}");
defineMacro("\\underbar", "\\underline{\\text{#1}}");
defineMacro("\\not", '\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');
defineMacro("\\neq", "\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");
defineMacro("\\ne", "\\neq");
defineMacro("\u2260", "\\neq");
defineMacro("\\notin", "\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");
defineMacro("\u2209", "\\notin");
defineMacro("\u2258", "\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");
defineMacro("\u2259", "\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");
defineMacro("\u225A", "\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");
defineMacro("\u225B", "\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");
defineMacro("\u225D", "\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");
defineMacro("\u225E", "\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");
defineMacro("\u225F", "\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");
defineMacro("\u27C2", "\\perp");
defineMacro("\u203C", "\\mathclose{!\\mkern-0.8mu!}");
defineMacro("\u220C", "\\notni");
defineMacro("\u231C", "\\ulcorner");
defineMacro("\u231D", "\\urcorner");
defineMacro("\u231E", "\\llcorner");
defineMacro("\u231F", "\\lrcorner");
defineMacro("\xA9", "\\copyright");
defineMacro("\xAE", "\\textregistered");
defineMacro("\uFE0F", "\\textregistered");
defineMacro("\\ulcorner", '\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');
defineMacro("\\urcorner", '\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');
defineMacro("\\llcorner", '\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');
defineMacro("\\lrcorner", '\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');
defineMacro("\\vdots", "\\mathord{\\varvdots\\rule{0pt}{15pt}}");
defineMacro("\u22EE", "\\vdots");
defineMacro("\\varGamma", "\\mathit{\\Gamma}");
defineMacro("\\varDelta", "\\mathit{\\Delta}");
defineMacro("\\varTheta", "\\mathit{\\Theta}");
defineMacro("\\varLambda", "\\mathit{\\Lambda}");
defineMacro("\\varXi", "\\mathit{\\Xi}");
defineMacro("\\varPi", "\\mathit{\\Pi}");
defineMacro("\\varSigma", "\\mathit{\\Sigma}");
defineMacro("\\varUpsilon", "\\mathit{\\Upsilon}");
defineMacro("\\varPhi", "\\mathit{\\Phi}");
defineMacro("\\varPsi", "\\mathit{\\Psi}");
defineMacro("\\varOmega", "\\mathit{\\Omega}");
defineMacro("\\substack", "\\begin{subarray}{c}#1\\end{subarray}");
defineMacro("\\colon", "\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");
defineMacro("\\boxed", "\\fbox{$\\displaystyle{#1}$}");
defineMacro("\\iff", "\\DOTSB\\;\\Longleftrightarrow\\;");
defineMacro("\\implies", "\\DOTSB\\;\\Longrightarrow\\;");
defineMacro("\\impliedby", "\\DOTSB\\;\\Longleftarrow\\;");
var dotsByToken = {
  ",": "\\dotsc",
  "\\not": "\\dotsb",
  // \keybin@ checks for the following:
  "+": "\\dotsb",
  "=": "\\dotsb",
  "<": "\\dotsb",
  ">": "\\dotsb",
  "-": "\\dotsb",
  "*": "\\dotsb",
  ":": "\\dotsb",
  // Symbols whose definition starts with \DOTSB:
  "\\DOTSB": "\\dotsb",
  "\\coprod": "\\dotsb",
  "\\bigvee": "\\dotsb",
  "\\bigwedge": "\\dotsb",
  "\\biguplus": "\\dotsb",
  "\\bigcap": "\\dotsb",
  "\\bigcup": "\\dotsb",
  "\\prod": "\\dotsb",
  "\\sum": "\\dotsb",
  "\\bigotimes": "\\dotsb",
  "\\bigoplus": "\\dotsb",
  "\\bigodot": "\\dotsb",
  "\\bigsqcup": "\\dotsb",
  "\\And": "\\dotsb",
  "\\longrightarrow": "\\dotsb",
  "\\Longrightarrow": "\\dotsb",
  "\\longleftarrow": "\\dotsb",
  "\\Longleftarrow": "\\dotsb",
  "\\longleftrightarrow": "\\dotsb",
  "\\Longleftrightarrow": "\\dotsb",
  "\\mapsto": "\\dotsb",
  "\\longmapsto": "\\dotsb",
  "\\hookrightarrow": "\\dotsb",
  "\\doteq": "\\dotsb",
  // Symbols whose definition starts with \mathbin:
  "\\mathbin": "\\dotsb",
  // Symbols whose definition starts with \mathrel:
  "\\mathrel": "\\dotsb",
  "\\relbar": "\\dotsb",
  "\\Relbar": "\\dotsb",
  "\\xrightarrow": "\\dotsb",
  "\\xleftarrow": "\\dotsb",
  // Symbols whose definition starts with \DOTSI:
  "\\DOTSI": "\\dotsi",
  "\\int": "\\dotsi",
  "\\oint": "\\dotsi",
  "\\iint": "\\dotsi",
  "\\iiint": "\\dotsi",
  "\\iiiint": "\\dotsi",
  "\\idotsint": "\\dotsi",
  // Symbols whose definition starts with \DOTSX:
  "\\DOTSX": "\\dotsx"
};
defineMacro("\\dots", function(context) {
  var thedots = "\\dotso";
  var next = context.expandAfterFuture().text;
  if (next in dotsByToken) {
    thedots = dotsByToken[next];
  } else if (next.substr(0, 4) === "\\not") {
    thedots = "\\dotsb";
  } else if (next in symbols.math) {
    if (utils.contains(["bin", "rel"], symbols.math[next].group)) {
      thedots = "\\dotsb";
    }
  }
  return thedots;
});
var spaceAfterDots = {
  // \rightdelim@ checks for the following:
  ")": true,
  "]": true,
  "\\rbrack": true,
  "\\}": true,
  "\\rbrace": true,
  "\\rangle": true,
  "\\rceil": true,
  "\\rfloor": true,
  "\\rgroup": true,
  "\\rmoustache": true,
  "\\right": true,
  "\\bigr": true,
  "\\biggr": true,
  "\\Bigr": true,
  "\\Biggr": true,
  // \extra@ also tests for the following:
  "$": true,
  // \extrap@ checks for the following:
  ";": true,
  ".": true,
  ",": true
};
defineMacro("\\dotso", function(context) {
  var next = context.future().text;
  if (next in spaceAfterDots) {
    return "\\ldots\\,";
  } else {
    return "\\ldots";
  }
});
defineMacro("\\dotsc", function(context) {
  var next = context.future().text;
  if (next in spaceAfterDots && next !== ",") {
    return "\\ldots\\,";
  } else {
    return "\\ldots";
  }
});
defineMacro("\\cdots", function(context) {
  var next = context.future().text;
  if (next in spaceAfterDots) {
    return "\\@cdots\\,";
  } else {
    return "\\@cdots";
  }
});
defineMacro("\\dotsb", "\\cdots");
defineMacro("\\dotsm", "\\cdots");
defineMacro("\\dotsi", "\\!\\cdots");
defineMacro("\\dotsx", "\\ldots\\,");
defineMacro("\\DOTSI", "\\relax");
defineMacro("\\DOTSB", "\\relax");
defineMacro("\\DOTSX", "\\relax");
defineMacro("\\tmspace", "\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");
defineMacro("\\,", "\\tmspace+{3mu}{.1667em}");
defineMacro("\\thinspace", "\\,");
defineMacro("\\>", "\\mskip{4mu}");
defineMacro("\\:", "\\tmspace+{4mu}{.2222em}");
defineMacro("\\medspace", "\\:");
defineMacro("\\;", "\\tmspace+{5mu}{.2777em}");
defineMacro("\\thickspace", "\\;");
defineMacro("\\!", "\\tmspace-{3mu}{.1667em}");
defineMacro("\\negthinspace", "\\!");
defineMacro("\\negmedspace", "\\tmspace-{4mu}{.2222em}");
defineMacro("\\negthickspace", "\\tmspace-{5mu}{.277em}");
defineMacro("\\enspace", "\\kern.5em ");
defineMacro("\\enskip", "\\hskip.5em\\relax");
defineMacro("\\quad", "\\hskip1em\\relax");
defineMacro("\\qquad", "\\hskip2em\\relax");
defineMacro("\\tag", "\\@ifstar\\tag@literal\\tag@paren");
defineMacro("\\tag@paren", "\\tag@literal{({#1})}");
defineMacro("\\tag@literal", (context) => {
  if (context.macros.get("\\df@tag")) {
    throw new ParseError("Multiple \\tag");
  }
  return "\\gdef\\df@tag{\\text{#1}}";
});
defineMacro("\\bmod", "\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");
defineMacro("\\pod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");
defineMacro("\\pmod", "\\pod{{\\rm mod}\\mkern6mu#1}");
defineMacro("\\mod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");
defineMacro("\\pmb", "\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}");
defineMacro("\\newline", "\\\\\\relax");
defineMacro("\\TeX", "\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");
var latexRaiseA = makeEm(fontMetricsData["Main-Regular"]["T".charCodeAt(0)][1] - 0.7 * fontMetricsData["Main-Regular"]["A".charCodeAt(0)][1]);
defineMacro("\\LaTeX", "\\textrm{\\html@mathml{" + ("L\\kern-.36em\\raisebox{" + latexRaiseA + "}{\\scriptstyle A}") + "\\kern-.15em\\TeX}{LaTeX}}");
defineMacro("\\KaTeX", "\\textrm{\\html@mathml{" + ("K\\kern-.17em\\raisebox{" + latexRaiseA + "}{\\scriptstyle A}") + "\\kern-.15em\\TeX}{KaTeX}}");
defineMacro("\\hspace", "\\@ifstar\\@hspacer\\@hspace");
defineMacro("\\@hspace", "\\hskip #1\\relax");
defineMacro("\\@hspacer", "\\rule{0pt}{0pt}\\hskip #1\\relax");
defineMacro("\\ordinarycolon", ":");
defineMacro("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}");
defineMacro("\\dblcolon", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');
defineMacro("\\coloneqq", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');
defineMacro("\\Coloneqq", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');
defineMacro("\\coloneq", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');
defineMacro("\\Coloneq", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');
defineMacro("\\eqqcolon", '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');
defineMacro("\\Eqqcolon", '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');
defineMacro("\\eqcolon", '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');
defineMacro("\\Eqcolon", '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');
defineMacro("\\colonapprox", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');
defineMacro("\\Colonapprox", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');
defineMacro("\\colonsim", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');
defineMacro("\\Colonsim", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');
defineMacro("\u2237", "\\dblcolon");
defineMacro("\u2239", "\\eqcolon");
defineMacro("\u2254", "\\coloneqq");
defineMacro("\u2255", "\\eqqcolon");
defineMacro("\u2A74", "\\Coloneqq");
defineMacro("\\ratio", "\\vcentcolon");
defineMacro("\\coloncolon", "\\dblcolon");
defineMacro("\\colonequals", "\\coloneqq");
defineMacro("\\coloncolonequals", "\\Coloneqq");
defineMacro("\\equalscolon", "\\eqqcolon");
defineMacro("\\equalscoloncolon", "\\Eqqcolon");
defineMacro("\\colonminus", "\\coloneq");
defineMacro("\\coloncolonminus", "\\Coloneq");
defineMacro("\\minuscolon", "\\eqcolon");
defineMacro("\\minuscoloncolon", "\\Eqcolon");
defineMacro("\\coloncolonapprox", "\\Colonapprox");
defineMacro("\\coloncolonsim", "\\Colonsim");
defineMacro("\\simcolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");
defineMacro("\\simcoloncolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");
defineMacro("\\approxcolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");
defineMacro("\\approxcoloncolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");
defineMacro("\\notni", "\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");
defineMacro("\\limsup", "\\DOTSB\\operatorname*{lim\\,sup}");
defineMacro("\\liminf", "\\DOTSB\\operatorname*{lim\\,inf}");
defineMacro("\\injlim", "\\DOTSB\\operatorname*{inj\\,lim}");
defineMacro("\\projlim", "\\DOTSB\\operatorname*{proj\\,lim}");
defineMacro("\\varlimsup", "\\DOTSB\\operatorname*{\\overline{lim}}");
defineMacro("\\varliminf", "\\DOTSB\\operatorname*{\\underline{lim}}");
defineMacro("\\varinjlim", "\\DOTSB\\operatorname*{\\underrightarrow{lim}}");
defineMacro("\\varprojlim", "\\DOTSB\\operatorname*{\\underleftarrow{lim}}");
defineMacro("\\gvertneqq", "\\html@mathml{\\@gvertneqq}{\u2269}");
defineMacro("\\lvertneqq", "\\html@mathml{\\@lvertneqq}{\u2268}");
defineMacro("\\ngeqq", "\\html@mathml{\\@ngeqq}{\u2271}");
defineMacro("\\ngeqslant", "\\html@mathml{\\@ngeqslant}{\u2271}");
defineMacro("\\nleqq", "\\html@mathml{\\@nleqq}{\u2270}");
defineMacro("\\nleqslant", "\\html@mathml{\\@nleqslant}{\u2270}");
defineMacro("\\nshortmid", "\\html@mathml{\\@nshortmid}{\u2224}");
defineMacro("\\nshortparallel", "\\html@mathml{\\@nshortparallel}{\u2226}");
defineMacro("\\nsubseteqq", "\\html@mathml{\\@nsubseteqq}{\u2288}");
defineMacro("\\nsupseteqq", "\\html@mathml{\\@nsupseteqq}{\u2289}");
defineMacro("\\varsubsetneq", "\\html@mathml{\\@varsubsetneq}{\u228A}");
defineMacro("\\varsubsetneqq", "\\html@mathml{\\@varsubsetneqq}{\u2ACB}");
defineMacro("\\varsupsetneq", "\\html@mathml{\\@varsupsetneq}{\u228B}");
defineMacro("\\varsupsetneqq", "\\html@mathml{\\@varsupsetneqq}{\u2ACC}");
defineMacro("\\imath", "\\html@mathml{\\@imath}{\u0131}");
defineMacro("\\jmath", "\\html@mathml{\\@jmath}{\u0237}");
defineMacro("\\llbracket", "\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");
defineMacro("\\rrbracket", "\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");
defineMacro("\u27E6", "\\llbracket");
defineMacro("\u27E7", "\\rrbracket");
defineMacro("\\lBrace", "\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");
defineMacro("\\rBrace", "\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");
defineMacro("\u2983", "\\lBrace");
defineMacro("\u2984", "\\rBrace");
defineMacro("\\minuso", "\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");
defineMacro("\u29B5", "\\minuso");
defineMacro("\\darr", "\\downarrow");
defineMacro("\\dArr", "\\Downarrow");
defineMacro("\\Darr", "\\Downarrow");
defineMacro("\\lang", "\\langle");
defineMacro("\\rang", "\\rangle");
defineMacro("\\uarr", "\\uparrow");
defineMacro("\\uArr", "\\Uparrow");
defineMacro("\\Uarr", "\\Uparrow");
defineMacro("\\N", "\\mathbb{N}");
defineMacro("\\R", "\\mathbb{R}");
defineMacro("\\Z", "\\mathbb{Z}");
defineMacro("\\alef", "\\aleph");
defineMacro("\\alefsym", "\\aleph");
defineMacro("\\Alpha", "\\mathrm{A}");
defineMacro("\\Beta", "\\mathrm{B}");
defineMacro("\\bull", "\\bullet");
defineMacro("\\Chi", "\\mathrm{X}");
defineMacro("\\clubs", "\\clubsuit");
defineMacro("\\cnums", "\\mathbb{C}");
defineMacro("\\Complex", "\\mathbb{C}");
defineMacro("\\Dagger", "\\ddagger");
defineMacro("\\diamonds", "\\diamondsuit");
defineMacro("\\empty", "\\emptyset");
defineMacro("\\Epsilon", "\\mathrm{E}");
defineMacro("\\Eta", "\\mathrm{H}");
defineMacro("\\exist", "\\exists");
defineMacro("\\harr", "\\leftrightarrow");
defineMacro("\\hArr", "\\Leftrightarrow");
defineMacro("\\Harr", "\\Leftrightarrow");
defineMacro("\\hearts", "\\heartsuit");
defineMacro("\\image", "\\Im");
defineMacro("\\infin", "\\infty");
defineMacro("\\Iota", "\\mathrm{I}");
defineMacro("\\isin", "\\in");
defineMacro("\\Kappa", "\\mathrm{K}");
defineMacro("\\larr", "\\leftarrow");
defineMacro("\\lArr", "\\Leftarrow");
defineMacro("\\Larr", "\\Leftarrow");
defineMacro("\\lrarr", "\\leftrightarrow");
defineMacro("\\lrArr", "\\Leftrightarrow");
defineMacro("\\Lrarr", "\\Leftrightarrow");
defineMacro("\\Mu", "\\mathrm{M}");
defineMacro("\\natnums", "\\mathbb{N}");
defineMacro("\\Nu", "\\mathrm{N}");
defineMacro("\\Omicron", "\\mathrm{O}");
defineMacro("\\plusmn", "\\pm");
defineMacro("\\rarr", "\\rightarrow");
defineMacro("\\rArr", "\\Rightarrow");
defineMacro("\\Rarr", "\\Rightarrow");
defineMacro("\\real", "\\Re");
defineMacro("\\reals", "\\mathbb{R}");
defineMacro("\\Reals", "\\mathbb{R}");
defineMacro("\\Rho", "\\mathrm{P}");
defineMacro("\\sdot", "\\cdot");
defineMacro("\\sect", "\\S");
defineMacro("\\spades", "\\spadesuit");
defineMacro("\\sub", "\\subset");
defineMacro("\\sube", "\\subseteq");
defineMacro("\\supe", "\\supseteq");
defineMacro("\\Tau", "\\mathrm{T}");
defineMacro("\\thetasym", "\\vartheta");
defineMacro("\\weierp", "\\wp");
defineMacro("\\Zeta", "\\mathrm{Z}");
defineMacro("\\argmin", "\\DOTSB\\operatorname*{arg\\,min}");
defineMacro("\\argmax", "\\DOTSB\\operatorname*{arg\\,max}");
defineMacro("\\plim", "\\DOTSB\\mathop{\\operatorname{plim}}\\limits");
defineMacro("\\bra", "\\mathinner{\\langle{#1}|}");
defineMacro("\\ket", "\\mathinner{|{#1}\\rangle}");
defineMacro("\\braket", "\\mathinner{\\langle{#1}\\rangle}");
defineMacro("\\Bra", "\\left\\langle#1\\right|");
defineMacro("\\Ket", "\\left|#1\\right\\rangle");
var braketHelper = (one8) => (context) => {
  var left2 = context.consumeArg().tokens;
  var middle = context.consumeArg().tokens;
  var middleDouble = context.consumeArg().tokens;
  var right2 = context.consumeArg().tokens;
  var oldMiddle = context.macros.get("|");
  var oldMiddleDouble = context.macros.get("\\|");
  context.macros.beginGroup();
  var midMacro = (double) => (context2) => {
    if (one8) {
      context2.macros.set("|", oldMiddle);
      if (middleDouble.length) {
        context2.macros.set("\\|", oldMiddleDouble);
      }
    }
    var doubled = double;
    if (!double && middleDouble.length) {
      var nextToken = context2.future();
      if (nextToken.text === "|") {
        context2.popToken();
        doubled = true;
      }
    }
    return {
      tokens: doubled ? middleDouble : middle,
      numArgs: 0
    };
  };
  context.macros.set("|", midMacro(false));
  if (middleDouble.length) {
    context.macros.set("\\|", midMacro(true));
  }
  var arg2 = context.consumeArg().tokens;
  var expanded = context.expandTokens([
    ...right2,
    ...arg2,
    ...left2
    // reversed
  ]);
  context.macros.endGroup();
  return {
    tokens: expanded.reverse(),
    numArgs: 0
  };
};
defineMacro("\\bra@ket", braketHelper(false));
defineMacro("\\bra@set", braketHelper(true));
defineMacro("\\Braket", "\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");
defineMacro("\\Set", "\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");
defineMacro("\\set", "\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");
defineMacro("\\angln", "{\\angl n}");
defineMacro("\\blue", "\\textcolor{##6495ed}{#1}");
defineMacro("\\orange", "\\textcolor{##ffa500}{#1}");
defineMacro("\\pink", "\\textcolor{##ff00af}{#1}");
defineMacro("\\red", "\\textcolor{##df0030}{#1}");
defineMacro("\\green", "\\textcolor{##28ae7b}{#1}");
defineMacro("\\gray", "\\textcolor{gray}{#1}");
defineMacro("\\purple", "\\textcolor{##9d38bd}{#1}");
defineMacro("\\blueA", "\\textcolor{##ccfaff}{#1}");
defineMacro("\\blueB", "\\textcolor{##80f6ff}{#1}");
defineMacro("\\blueC", "\\textcolor{##63d9ea}{#1}");
defineMacro("\\blueD", "\\textcolor{##11accd}{#1}");
defineMacro("\\blueE", "\\textcolor{##0c7f99}{#1}");
defineMacro("\\tealA", "\\textcolor{##94fff5}{#1}");
defineMacro("\\tealB", "\\textcolor{##26edd5}{#1}");
defineMacro("\\tealC", "\\textcolor{##01d1c1}{#1}");
defineMacro("\\tealD", "\\textcolor{##01a995}{#1}");
defineMacro("\\tealE", "\\textcolor{##208170}{#1}");
defineMacro("\\greenA", "\\textcolor{##b6ffb0}{#1}");
defineMacro("\\greenB", "\\textcolor{##8af281}{#1}");
defineMacro("\\greenC", "\\textcolor{##74cf70}{#1}");
defineMacro("\\greenD", "\\textcolor{##1fab54}{#1}");
defineMacro("\\greenE", "\\textcolor{##0d923f}{#1}");
defineMacro("\\goldA", "\\textcolor{##ffd0a9}{#1}");
defineMacro("\\goldB", "\\textcolor{##ffbb71}{#1}");
defineMacro("\\goldC", "\\textcolor{##ff9c39}{#1}");
defineMacro("\\goldD", "\\textcolor{##e07d10}{#1}");
defineMacro("\\goldE", "\\textcolor{##a75a05}{#1}");
defineMacro("\\redA", "\\textcolor{##fca9a9}{#1}");
defineMacro("\\redB", "\\textcolor{##ff8482}{#1}");
defineMacro("\\redC", "\\textcolor{##f9685d}{#1}");
defineMacro("\\redD", "\\textcolor{##e84d39}{#1}");
defineMacro("\\redE", "\\textcolor{##bc2612}{#1}");
defineMacro("\\maroonA", "\\textcolor{##ffbde0}{#1}");
defineMacro("\\maroonB", "\\textcolor{##ff92c6}{#1}");
defineMacro("\\maroonC", "\\textcolor{##ed5fa6}{#1}");
defineMacro("\\maroonD", "\\textcolor{##ca337c}{#1}");
defineMacro("\\maroonE", "\\textcolor{##9e034e}{#1}");
defineMacro("\\purpleA", "\\textcolor{##ddd7ff}{#1}");
defineMacro("\\purpleB", "\\textcolor{##c6b9fc}{#1}");
defineMacro("\\purpleC", "\\textcolor{##aa87ff}{#1}");
defineMacro("\\purpleD", "\\textcolor{##7854ab}{#1}");
defineMacro("\\purpleE", "\\textcolor{##543b78}{#1}");
defineMacro("\\mintA", "\\textcolor{##f5f9e8}{#1}");
defineMacro("\\mintB", "\\textcolor{##edf2df}{#1}");
defineMacro("\\mintC", "\\textcolor{##e0e5cc}{#1}");
defineMacro("\\grayA", "\\textcolor{##f6f7f7}{#1}");
defineMacro("\\grayB", "\\textcolor{##f0f1f2}{#1}");
defineMacro("\\grayC", "\\textcolor{##e3e5e6}{#1}");
defineMacro("\\grayD", "\\textcolor{##d6d8da}{#1}");
defineMacro("\\grayE", "\\textcolor{##babec2}{#1}");
defineMacro("\\grayF", "\\textcolor{##888d93}{#1}");
defineMacro("\\grayG", "\\textcolor{##626569}{#1}");
defineMacro("\\grayH", "\\textcolor{##3b3e40}{#1}");
defineMacro("\\grayI", "\\textcolor{##21242c}{#1}");
defineMacro("\\kaBlue", "\\textcolor{##314453}{#1}");
defineMacro("\\kaGreen", "\\textcolor{##71B307}{#1}");
var implicitCommands = {
  "^": true,
  // Parser.js
  "_": true,
  // Parser.js
  "\\limits": true,
  // Parser.js
  "\\nolimits": true
  // Parser.js
};
var MacroExpander = class {
  constructor(input3, settings, mode) {
    this.settings = void 0;
    this.expansionCount = void 0;
    this.lexer = void 0;
    this.macros = void 0;
    this.stack = void 0;
    this.mode = void 0;
    this.settings = settings;
    this.expansionCount = 0;
    this.feed(input3);
    this.macros = new Namespace(macros, settings.macros);
    this.mode = mode;
    this.stack = [];
  }
  /**
   * Feed a new input string to the same MacroExpander
   * (with existing macros etc.).
   */
  feed(input3) {
    this.lexer = new Lexer(input3, this.settings);
  }
  /**
   * Switches between "text" and "math" modes.
   */
  switchMode(newMode) {
    this.mode = newMode;
  }
  /**
   * Start a new group nesting within all namespaces.
   */
  beginGroup() {
    this.macros.beginGroup();
  }
  /**
   * End current group nesting within all namespaces.
   */
  endGroup() {
    this.macros.endGroup();
  }
  /**
   * Ends all currently nested groups (if any), restoring values before the
   * groups began.  Useful in case of an error in the middle of parsing.
   */
  endGroups() {
    this.macros.endGroups();
  }
  /**
   * Returns the topmost token on the stack, without expanding it.
   * Similar in behavior to TeX's `\futurelet`.
   */
  future() {
    if (this.stack.length === 0) {
      this.pushToken(this.lexer.lex());
    }
    return this.stack[this.stack.length - 1];
  }
  /**
   * Remove and return the next unexpanded token.
   */
  popToken() {
    this.future();
    return this.stack.pop();
  }
  /**
   * Add a given token to the token stack.  In particular, this get be used
   * to put back a token returned from one of the other methods.
   */
  pushToken(token) {
    this.stack.push(token);
  }
  /**
   * Append an array of tokens to the token stack.
   */
  pushTokens(tokens) {
    this.stack.push(...tokens);
  }
  /**
   * Find an macro argument without expanding tokens and append the array of
   * tokens to the token stack. Uses Token as a container for the result.
   */
  scanArgument(isOptional) {
    var start;
    var end;
    var tokens;
    if (isOptional) {
      this.consumeSpaces();
      if (this.future().text !== "[") {
        return null;
      }
      start = this.popToken();
      ({
        tokens,
        end
      } = this.consumeArg(["]"]));
    } else {
      ({
        tokens,
        start,
        end
      } = this.consumeArg());
    }
    this.pushToken(new Token("EOF", end.loc));
    this.pushTokens(tokens);
    return start.range(end, "");
  }
  /**
   * Consume all following space tokens, without expansion.
   */
  consumeSpaces() {
    for (; ; ) {
      var token = this.future();
      if (token.text === " ") {
        this.stack.pop();
      } else {
        break;
      }
    }
  }
  /**
   * Consume an argument from the token stream, and return the resulting array
   * of tokens and start/end token.
   */
  consumeArg(delims) {
    var tokens = [];
    var isDelimited = delims && delims.length > 0;
    if (!isDelimited) {
      this.consumeSpaces();
    }
    var start = this.future();
    var tok;
    var depth = 0;
    var match3 = 0;
    do {
      tok = this.popToken();
      tokens.push(tok);
      if (tok.text === "{") {
        ++depth;
      } else if (tok.text === "}") {
        --depth;
        if (depth === -1) {
          throw new ParseError("Extra }", tok);
        }
      } else if (tok.text === "EOF") {
        throw new ParseError("Unexpected end of input in a macro argument, expected '" + (delims && isDelimited ? delims[match3] : "}") + "'", tok);
      }
      if (delims && isDelimited) {
        if ((depth === 0 || depth === 1 && delims[match3] === "{") && tok.text === delims[match3]) {
          ++match3;
          if (match3 === delims.length) {
            tokens.splice(-match3, match3);
            break;
          }
        } else {
          match3 = 0;
        }
      }
    } while (depth !== 0 || isDelimited);
    if (start.text === "{" && tokens[tokens.length - 1].text === "}") {
      tokens.pop();
      tokens.shift();
    }
    tokens.reverse();
    return {
      tokens,
      start,
      end: tok
    };
  }
  /**
   * Consume the specified number of (delimited) arguments from the token
   * stream and return the resulting array of arguments.
   */
  consumeArgs(numArgs, delimiters2) {
    if (delimiters2) {
      if (delimiters2.length !== numArgs + 1) {
        throw new ParseError("The length of delimiters doesn't match the number of args!");
      }
      var delims = delimiters2[0];
      for (var i2 = 0; i2 < delims.length; i2++) {
        var tok = this.popToken();
        if (delims[i2] !== tok.text) {
          throw new ParseError("Use of the macro doesn't match its definition", tok);
        }
      }
    }
    var args = [];
    for (var _i = 0; _i < numArgs; _i++) {
      args.push(this.consumeArg(delimiters2 && delimiters2[_i + 1]).tokens);
    }
    return args;
  }
  /**
   * Expand the next token only once if possible.
   *
   * If the token is expanded, the resulting tokens will be pushed onto
   * the stack in reverse order and will be returned as an array,
   * also in reverse order.
   *
   * If not, the next token will be returned without removing it
   * from the stack.  This case can be detected by a `Token` return value
   * instead of an `Array` return value.
   *
   * In either case, the next token will be on the top of the stack,
   * or the stack will be empty.
   *
   * Used to implement `expandAfterFuture` and `expandNextToken`.
   *
   * If expandableOnly, only expandable tokens are expanded and
   * an undefined control sequence results in an error.
   */
  expandOnce(expandableOnly) {
    var topToken = this.popToken();
    var name3 = topToken.text;
    var expansion = !topToken.noexpand ? this._getExpansion(name3) : null;
    if (expansion == null || expandableOnly && expansion.unexpandable) {
      if (expandableOnly && expansion == null && name3[0] === "\\" && !this.isDefined(name3)) {
        throw new ParseError("Undefined control sequence: " + name3);
      }
      this.pushToken(topToken);
      return topToken;
    }
    this.expansionCount++;
    if (this.expansionCount > this.settings.maxExpand) {
      throw new ParseError("Too many expansions: infinite loop or need to increase maxExpand setting");
    }
    var tokens = expansion.tokens;
    var args = this.consumeArgs(expansion.numArgs, expansion.delimiters);
    if (expansion.numArgs) {
      tokens = tokens.slice();
      for (var i2 = tokens.length - 1; i2 >= 0; --i2) {
        var tok = tokens[i2];
        if (tok.text === "#") {
          if (i2 === 0) {
            throw new ParseError("Incomplete placeholder at end of macro body", tok);
          }
          tok = tokens[--i2];
          if (tok.text === "#") {
            tokens.splice(i2 + 1, 1);
          } else if (/^[1-9]$/.test(tok.text)) {
            tokens.splice(i2, 2, ...args[+tok.text - 1]);
          } else {
            throw new ParseError("Not a valid argument number", tok);
          }
        }
      }
    }
    this.pushTokens(tokens);
    return tokens;
  }
  /**
   * Expand the next token only once (if possible), and return the resulting
   * top token on the stack (without removing anything from the stack).
   * Similar in behavior to TeX's `\expandafter\futurelet`.
   * Equivalent to expandOnce() followed by future().
   */
  expandAfterFuture() {
    this.expandOnce();
    return this.future();
  }
  /**
   * Recursively expand first token, then return first non-expandable token.
   */
  expandNextToken() {
    for (; ; ) {
      var expanded = this.expandOnce();
      if (expanded instanceof Token) {
        if (expanded.treatAsRelax) {
          expanded.text = "\\relax";
        }
        return this.stack.pop();
      }
    }
    throw new Error();
  }
  /**
   * Fully expand the given macro name and return the resulting list of
   * tokens, or return `undefined` if no such macro is defined.
   */
  expandMacro(name3) {
    return this.macros.has(name3) ? this.expandTokens([new Token(name3)]) : void 0;
  }
  /**
   * Fully expand the given token stream and return the resulting list of
   * tokens.  Note that the input tokens are in reverse order, but the
   * output tokens are in forward order.
   */
  expandTokens(tokens) {
    var output2 = [];
    var oldStackLength = this.stack.length;
    this.pushTokens(tokens);
    while (this.stack.length > oldStackLength) {
      var expanded = this.expandOnce(true);
      if (expanded instanceof Token) {
        if (expanded.treatAsRelax) {
          expanded.noexpand = false;
          expanded.treatAsRelax = false;
        }
        output2.push(this.stack.pop());
      }
    }
    return output2;
  }
  /**
   * Fully expand the given macro name and return the result as a string,
   * or return `undefined` if no such macro is defined.
   */
  expandMacroAsText(name3) {
    var tokens = this.expandMacro(name3);
    if (tokens) {
      return tokens.map((token) => token.text).join("");
    } else {
      return tokens;
    }
  }
  /**
   * Returns the expanded macro as a reversed array of tokens and a macro
   * argument count.  Or returns `null` if no such macro.
   */
  _getExpansion(name3) {
    var definition2 = this.macros.get(name3);
    if (definition2 == null) {
      return definition2;
    }
    if (name3.length === 1) {
      var catcode = this.lexer.catcodes[name3];
      if (catcode != null && catcode !== 13) {
        return;
      }
    }
    var expansion = typeof definition2 === "function" ? definition2(this) : definition2;
    if (typeof expansion === "string") {
      var numArgs = 0;
      if (expansion.indexOf("#") !== -1) {
        var stripped = expansion.replace(/##/g, "");
        while (stripped.indexOf("#" + (numArgs + 1)) !== -1) {
          ++numArgs;
        }
      }
      var bodyLexer = new Lexer(expansion, this.settings);
      var tokens = [];
      var tok = bodyLexer.lex();
      while (tok.text !== "EOF") {
        tokens.push(tok);
        tok = bodyLexer.lex();
      }
      tokens.reverse();
      var expanded = {
        tokens,
        numArgs
      };
      return expanded;
    }
    return expansion;
  }
  /**
   * Determine whether a command is currently "defined" (has some
   * functionality), meaning that it's a macro (in the current group),
   * a function, a symbol, or one of the special commands listed in
   * `implicitCommands`.
   */
  isDefined(name3) {
    return this.macros.has(name3) || functions.hasOwnProperty(name3) || symbols.math.hasOwnProperty(name3) || symbols.text.hasOwnProperty(name3) || implicitCommands.hasOwnProperty(name3);
  }
  /**
   * Determine whether a command is expandable.
   */
  isExpandable(name3) {
    var macro2 = this.macros.get(name3);
    return macro2 != null ? typeof macro2 === "string" || typeof macro2 === "function" || !macro2.unexpandable : functions.hasOwnProperty(name3) && !functions[name3].primitive;
  }
};
var unicodeSubRegEx = /^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/;
var uSubsAndSups = Object.freeze({
  "\u208A": "+",
  "\u208B": "-",
  "\u208C": "=",
  "\u208D": "(",
  "\u208E": ")",
  "\u2080": "0",
  "\u2081": "1",
  "\u2082": "2",
  "\u2083": "3",
  "\u2084": "4",
  "\u2085": "5",
  "\u2086": "6",
  "\u2087": "7",
  "\u2088": "8",
  "\u2089": "9",
  "\u2090": "a",
  "\u2091": "e",
  "\u2095": "h",
  "\u1D62": "i",
  "\u2C7C": "j",
  "\u2096": "k",
  "\u2097": "l",
  "\u2098": "m",
  "\u2099": "n",
  "\u2092": "o",
  "\u209A": "p",
  "\u1D63": "r",
  "\u209B": "s",
  "\u209C": "t",
  "\u1D64": "u",
  "\u1D65": "v",
  "\u2093": "x",
  "\u1D66": "\u03B2",
  "\u1D67": "\u03B3",
  "\u1D68": "\u03C1",
  "\u1D69": "\u03D5",
  "\u1D6A": "\u03C7",
  "\u207A": "+",
  "\u207B": "-",
  "\u207C": "=",
  "\u207D": "(",
  "\u207E": ")",
  "\u2070": "0",
  "\xB9": "1",
  "\xB2": "2",
  "\xB3": "3",
  "\u2074": "4",
  "\u2075": "5",
  "\u2076": "6",
  "\u2077": "7",
  "\u2078": "8",
  "\u2079": "9",
  "\u1D2C": "A",
  "\u1D2E": "B",
  "\u1D30": "D",
  "\u1D31": "E",
  "\u1D33": "G",
  "\u1D34": "H",
  "\u1D35": "I",
  "\u1D36": "J",
  "\u1D37": "K",
  "\u1D38": "L",
  "\u1D39": "M",
  "\u1D3A": "N",
  "\u1D3C": "O",
  "\u1D3E": "P",
  "\u1D3F": "R",
  "\u1D40": "T",
  "\u1D41": "U",
  "\u2C7D": "V",
  "\u1D42": "W",
  "\u1D43": "a",
  "\u1D47": "b",
  "\u1D9C": "c",
  "\u1D48": "d",
  "\u1D49": "e",
  "\u1DA0": "f",
  "\u1D4D": "g",
  "\u02B0": "h",
  "\u2071": "i",
  "\u02B2": "j",
  "\u1D4F": "k",
  "\u02E1": "l",
  "\u1D50": "m",
  "\u207F": "n",
  "\u1D52": "o",
  "\u1D56": "p",
  "\u02B3": "r",
  "\u02E2": "s",
  "\u1D57": "t",
  "\u1D58": "u",
  "\u1D5B": "v",
  "\u02B7": "w",
  "\u02E3": "x",
  "\u02B8": "y",
  "\u1DBB": "z",
  "\u1D5D": "\u03B2",
  "\u1D5E": "\u03B3",
  "\u1D5F": "\u03B4",
  "\u1D60": "\u03D5",
  "\u1D61": "\u03C7",
  "\u1DBF": "\u03B8"
});
var unicodeAccents = {
  "\u0301": {
    "text": "\\'",
    "math": "\\acute"
  },
  "\u0300": {
    "text": "\\`",
    "math": "\\grave"
  },
  "\u0308": {
    "text": '\\"',
    "math": "\\ddot"
  },
  "\u0303": {
    "text": "\\~",
    "math": "\\tilde"
  },
  "\u0304": {
    "text": "\\=",
    "math": "\\bar"
  },
  "\u0306": {
    "text": "\\u",
    "math": "\\breve"
  },
  "\u030C": {
    "text": "\\v",
    "math": "\\check"
  },
  "\u0302": {
    "text": "\\^",
    "math": "\\hat"
  },
  "\u0307": {
    "text": "\\.",
    "math": "\\dot"
  },
  "\u030A": {
    "text": "\\r",
    "math": "\\mathring"
  },
  "\u030B": {
    "text": "\\H"
  },
  "\u0327": {
    "text": "\\c"
  }
};
var unicodeSymbols = {
  "\xE1": "a\u0301",
  "\xE0": "a\u0300",
  "\xE4": "a\u0308",
  "\u01DF": "a\u0308\u0304",
  "\xE3": "a\u0303",
  "\u0101": "a\u0304",
  "\u0103": "a\u0306",
  "\u1EAF": "a\u0306\u0301",
  "\u1EB1": "a\u0306\u0300",
  "\u1EB5": "a\u0306\u0303",
  "\u01CE": "a\u030C",
  "\xE2": "a\u0302",
  "\u1EA5": "a\u0302\u0301",
  "\u1EA7": "a\u0302\u0300",
  "\u1EAB": "a\u0302\u0303",
  "\u0227": "a\u0307",
  "\u01E1": "a\u0307\u0304",
  "\xE5": "a\u030A",
  "\u01FB": "a\u030A\u0301",
  "\u1E03": "b\u0307",
  "\u0107": "c\u0301",
  "\u1E09": "c\u0327\u0301",
  "\u010D": "c\u030C",
  "\u0109": "c\u0302",
  "\u010B": "c\u0307",
  "\xE7": "c\u0327",
  "\u010F": "d\u030C",
  "\u1E0B": "d\u0307",
  "\u1E11": "d\u0327",
  "\xE9": "e\u0301",
  "\xE8": "e\u0300",
  "\xEB": "e\u0308",
  "\u1EBD": "e\u0303",
  "\u0113": "e\u0304",
  "\u1E17": "e\u0304\u0301",
  "\u1E15": "e\u0304\u0300",
  "\u0115": "e\u0306",
  "\u1E1D": "e\u0327\u0306",
  "\u011B": "e\u030C",
  "\xEA": "e\u0302",
  "\u1EBF": "e\u0302\u0301",
  "\u1EC1": "e\u0302\u0300",
  "\u1EC5": "e\u0302\u0303",
  "\u0117": "e\u0307",
  "\u0229": "e\u0327",
  "\u1E1F": "f\u0307",
  "\u01F5": "g\u0301",
  "\u1E21": "g\u0304",
  "\u011F": "g\u0306",
  "\u01E7": "g\u030C",
  "\u011D": "g\u0302",
  "\u0121": "g\u0307",
  "\u0123": "g\u0327",
  "\u1E27": "h\u0308",
  "\u021F": "h\u030C",
  "\u0125": "h\u0302",
  "\u1E23": "h\u0307",
  "\u1E29": "h\u0327",
  "\xED": "i\u0301",
  "\xEC": "i\u0300",
  "\xEF": "i\u0308",
  "\u1E2F": "i\u0308\u0301",
  "\u0129": "i\u0303",
  "\u012B": "i\u0304",
  "\u012D": "i\u0306",
  "\u01D0": "i\u030C",
  "\xEE": "i\u0302",
  "\u01F0": "j\u030C",
  "\u0135": "j\u0302",
  "\u1E31": "k\u0301",
  "\u01E9": "k\u030C",
  "\u0137": "k\u0327",
  "\u013A": "l\u0301",
  "\u013E": "l\u030C",
  "\u013C": "l\u0327",
  "\u1E3F": "m\u0301",
  "\u1E41": "m\u0307",
  "\u0144": "n\u0301",
  "\u01F9": "n\u0300",
  "\xF1": "n\u0303",
  "\u0148": "n\u030C",
  "\u1E45": "n\u0307",
  "\u0146": "n\u0327",
  "\xF3": "o\u0301",
  "\xF2": "o\u0300",
  "\xF6": "o\u0308",
  "\u022B": "o\u0308\u0304",
  "\xF5": "o\u0303",
  "\u1E4D": "o\u0303\u0301",
  "\u1E4F": "o\u0303\u0308",
  "\u022D": "o\u0303\u0304",
  "\u014D": "o\u0304",
  "\u1E53": "o\u0304\u0301",
  "\u1E51": "o\u0304\u0300",
  "\u014F": "o\u0306",
  "\u01D2": "o\u030C",
  "\xF4": "o\u0302",
  "\u1ED1": "o\u0302\u0301",
  "\u1ED3": "o\u0302\u0300",
  "\u1ED7": "o\u0302\u0303",
  "\u022F": "o\u0307",
  "\u0231": "o\u0307\u0304",
  "\u0151": "o\u030B",
  "\u1E55": "p\u0301",
  "\u1E57": "p\u0307",
  "\u0155": "r\u0301",
  "\u0159": "r\u030C",
  "\u1E59": "r\u0307",
  "\u0157": "r\u0327",
  "\u015B": "s\u0301",
  "\u1E65": "s\u0301\u0307",
  "\u0161": "s\u030C",
  "\u1E67": "s\u030C\u0307",
  "\u015D": "s\u0302",
  "\u1E61": "s\u0307",
  "\u015F": "s\u0327",
  "\u1E97": "t\u0308",
  "\u0165": "t\u030C",
  "\u1E6B": "t\u0307",
  "\u0163": "t\u0327",
  "\xFA": "u\u0301",
  "\xF9": "u\u0300",
  "\xFC": "u\u0308",
  "\u01D8": "u\u0308\u0301",
  "\u01DC": "u\u0308\u0300",
  "\u01D6": "u\u0308\u0304",
  "\u01DA": "u\u0308\u030C",
  "\u0169": "u\u0303",
  "\u1E79": "u\u0303\u0301",
  "\u016B": "u\u0304",
  "\u1E7B": "u\u0304\u0308",
  "\u016D": "u\u0306",
  "\u01D4": "u\u030C",
  "\xFB": "u\u0302",
  "\u016F": "u\u030A",
  "\u0171": "u\u030B",
  "\u1E7D": "v\u0303",
  "\u1E83": "w\u0301",
  "\u1E81": "w\u0300",
  "\u1E85": "w\u0308",
  "\u0175": "w\u0302",
  "\u1E87": "w\u0307",
  "\u1E98": "w\u030A",
  "\u1E8D": "x\u0308",
  "\u1E8B": "x\u0307",
  "\xFD": "y\u0301",
  "\u1EF3": "y\u0300",
  "\xFF": "y\u0308",
  "\u1EF9": "y\u0303",
  "\u0233": "y\u0304",
  "\u0177": "y\u0302",
  "\u1E8F": "y\u0307",
  "\u1E99": "y\u030A",
  "\u017A": "z\u0301",
  "\u017E": "z\u030C",
  "\u1E91": "z\u0302",
  "\u017C": "z\u0307",
  "\xC1": "A\u0301",
  "\xC0": "A\u0300",
  "\xC4": "A\u0308",
  "\u01DE": "A\u0308\u0304",
  "\xC3": "A\u0303",
  "\u0100": "A\u0304",
  "\u0102": "A\u0306",
  "\u1EAE": "A\u0306\u0301",
  "\u1EB0": "A\u0306\u0300",
  "\u1EB4": "A\u0306\u0303",
  "\u01CD": "A\u030C",
  "\xC2": "A\u0302",
  "\u1EA4": "A\u0302\u0301",
  "\u1EA6": "A\u0302\u0300",
  "\u1EAA": "A\u0302\u0303",
  "\u0226": "A\u0307",
  "\u01E0": "A\u0307\u0304",
  "\xC5": "A\u030A",
  "\u01FA": "A\u030A\u0301",
  "\u1E02": "B\u0307",
  "\u0106": "C\u0301",
  "\u1E08": "C\u0327\u0301",
  "\u010C": "C\u030C",
  "\u0108": "C\u0302",
  "\u010A": "C\u0307",
  "\xC7": "C\u0327",
  "\u010E": "D\u030C",
  "\u1E0A": "D\u0307",
  "\u1E10": "D\u0327",
  "\xC9": "E\u0301",
  "\xC8": "E\u0300",
  "\xCB": "E\u0308",
  "\u1EBC": "E\u0303",
  "\u0112": "E\u0304",
  "\u1E16": "E\u0304\u0301",
  "\u1E14": "E\u0304\u0300",
  "\u0114": "E\u0306",
  "\u1E1C": "E\u0327\u0306",
  "\u011A": "E\u030C",
  "\xCA": "E\u0302",
  "\u1EBE": "E\u0302\u0301",
  "\u1EC0": "E\u0302\u0300",
  "\u1EC4": "E\u0302\u0303",
  "\u0116": "E\u0307",
  "\u0228": "E\u0327",
  "\u1E1E": "F\u0307",
  "\u01F4": "G\u0301",
  "\u1E20": "G\u0304",
  "\u011E": "G\u0306",
  "\u01E6": "G\u030C",
  "\u011C": "G\u0302",
  "\u0120": "G\u0307",
  "\u0122": "G\u0327",
  "\u1E26": "H\u0308",
  "\u021E": "H\u030C",
  "\u0124": "H\u0302",
  "\u1E22": "H\u0307",
  "\u1E28": "H\u0327",
  "\xCD": "I\u0301",
  "\xCC": "I\u0300",
  "\xCF": "I\u0308",
  "\u1E2E": "I\u0308\u0301",
  "\u0128": "I\u0303",
  "\u012A": "I\u0304",
  "\u012C": "I\u0306",
  "\u01CF": "I\u030C",
  "\xCE": "I\u0302",
  "\u0130": "I\u0307",
  "\u0134": "J\u0302",
  "\u1E30": "K\u0301",
  "\u01E8": "K\u030C",
  "\u0136": "K\u0327",
  "\u0139": "L\u0301",
  "\u013D": "L\u030C",
  "\u013B": "L\u0327",
  "\u1E3E": "M\u0301",
  "\u1E40": "M\u0307",
  "\u0143": "N\u0301",
  "\u01F8": "N\u0300",
  "\xD1": "N\u0303",
  "\u0147": "N\u030C",
  "\u1E44": "N\u0307",
  "\u0145": "N\u0327",
  "\xD3": "O\u0301",
  "\xD2": "O\u0300",
  "\xD6": "O\u0308",
  "\u022A": "O\u0308\u0304",
  "\xD5": "O\u0303",
  "\u1E4C": "O\u0303\u0301",
  "\u1E4E": "O\u0303\u0308",
  "\u022C": "O\u0303\u0304",
  "\u014C": "O\u0304",
  "\u1E52": "O\u0304\u0301",
  "\u1E50": "O\u0304\u0300",
  "\u014E": "O\u0306",
  "\u01D1": "O\u030C",
  "\xD4": "O\u0302",
  "\u1ED0": "O\u0302\u0301",
  "\u1ED2": "O\u0302\u0300",
  "\u1ED6": "O\u0302\u0303",
  "\u022E": "O\u0307",
  "\u0230": "O\u0307\u0304",
  "\u0150": "O\u030B",
  "\u1E54": "P\u0301",
  "\u1E56": "P\u0307",
  "\u0154": "R\u0301",
  "\u0158": "R\u030C",
  "\u1E58": "R\u0307",
  "\u0156": "R\u0327",
  "\u015A": "S\u0301",
  "\u1E64": "S\u0301\u0307",
  "\u0160": "S\u030C",
  "\u1E66": "S\u030C\u0307",
  "\u015C": "S\u0302",
  "\u1E60": "S\u0307",
  "\u015E": "S\u0327",
  "\u0164": "T\u030C",
  "\u1E6A": "T\u0307",
  "\u0162": "T\u0327",
  "\xDA": "U\u0301",
  "\xD9": "U\u0300",
  "\xDC": "U\u0308",
  "\u01D7": "U\u0308\u0301",
  "\u01DB": "U\u0308\u0300",
  "\u01D5": "U\u0308\u0304",
  "\u01D9": "U\u0308\u030C",
  "\u0168": "U\u0303",
  "\u1E78": "U\u0303\u0301",
  "\u016A": "U\u0304",
  "\u1E7A": "U\u0304\u0308",
  "\u016C": "U\u0306",
  "\u01D3": "U\u030C",
  "\xDB": "U\u0302",
  "\u016E": "U\u030A",
  "\u0170": "U\u030B",
  "\u1E7C": "V\u0303",
  "\u1E82": "W\u0301",
  "\u1E80": "W\u0300",
  "\u1E84": "W\u0308",
  "\u0174": "W\u0302",
  "\u1E86": "W\u0307",
  "\u1E8C": "X\u0308",
  "\u1E8A": "X\u0307",
  "\xDD": "Y\u0301",
  "\u1EF2": "Y\u0300",
  "\u0178": "Y\u0308",
  "\u1EF8": "Y\u0303",
  "\u0232": "Y\u0304",
  "\u0176": "Y\u0302",
  "\u1E8E": "Y\u0307",
  "\u0179": "Z\u0301",
  "\u017D": "Z\u030C",
  "\u1E90": "Z\u0302",
  "\u017B": "Z\u0307",
  "\u03AC": "\u03B1\u0301",
  "\u1F70": "\u03B1\u0300",
  "\u1FB1": "\u03B1\u0304",
  "\u1FB0": "\u03B1\u0306",
  "\u03AD": "\u03B5\u0301",
  "\u1F72": "\u03B5\u0300",
  "\u03AE": "\u03B7\u0301",
  "\u1F74": "\u03B7\u0300",
  "\u03AF": "\u03B9\u0301",
  "\u1F76": "\u03B9\u0300",
  "\u03CA": "\u03B9\u0308",
  "\u0390": "\u03B9\u0308\u0301",
  "\u1FD2": "\u03B9\u0308\u0300",
  "\u1FD1": "\u03B9\u0304",
  "\u1FD0": "\u03B9\u0306",
  "\u03CC": "\u03BF\u0301",
  "\u1F78": "\u03BF\u0300",
  "\u03CD": "\u03C5\u0301",
  "\u1F7A": "\u03C5\u0300",
  "\u03CB": "\u03C5\u0308",
  "\u03B0": "\u03C5\u0308\u0301",
  "\u1FE2": "\u03C5\u0308\u0300",
  "\u1FE1": "\u03C5\u0304",
  "\u1FE0": "\u03C5\u0306",
  "\u03CE": "\u03C9\u0301",
  "\u1F7C": "\u03C9\u0300",
  "\u038E": "\u03A5\u0301",
  "\u1FEA": "\u03A5\u0300",
  "\u03AB": "\u03A5\u0308",
  "\u1FE9": "\u03A5\u0304",
  "\u1FE8": "\u03A5\u0306",
  "\u038F": "\u03A9\u0301",
  "\u1FFA": "\u03A9\u0300"
};
var Parser2 = class _Parser {
  constructor(input3, settings) {
    this.mode = void 0;
    this.gullet = void 0;
    this.settings = void 0;
    this.leftrightDepth = void 0;
    this.nextToken = void 0;
    this.mode = "math";
    this.gullet = new MacroExpander(input3, settings, this.mode);
    this.settings = settings;
    this.leftrightDepth = 0;
  }
  /**
   * Checks a result to make sure it has the right type, and throws an
   * appropriate error otherwise.
   */
  expect(text7, consume) {
    if (consume === void 0) {
      consume = true;
    }
    if (this.fetch().text !== text7) {
      throw new ParseError("Expected '" + text7 + "', got '" + this.fetch().text + "'", this.fetch());
    }
    if (consume) {
      this.consume();
    }
  }
  /**
   * Discards the current lookahead token, considering it consumed.
   */
  consume() {
    this.nextToken = null;
  }
  /**
   * Return the current lookahead token, or if there isn't one (at the
   * beginning, or if the previous lookahead token was consume()d),
   * fetch the next token as the new lookahead token and return it.
   */
  fetch() {
    if (this.nextToken == null) {
      this.nextToken = this.gullet.expandNextToken();
    }
    return this.nextToken;
  }
  /**
   * Switches between "text" and "math" modes.
   */
  switchMode(newMode) {
    this.mode = newMode;
    this.gullet.switchMode(newMode);
  }
  /**
   * Main parsing function, which parses an entire input.
   */
  parse() {
    if (!this.settings.globalGroup) {
      this.gullet.beginGroup();
    }
    if (this.settings.colorIsTextColor) {
      this.gullet.macros.set("\\color", "\\textcolor");
    }
    try {
      var parse16 = this.parseExpression(false);
      this.expect("EOF");
      if (!this.settings.globalGroup) {
        this.gullet.endGroup();
      }
      return parse16;
    } finally {
      this.gullet.endGroups();
    }
  }
  /**
   * Fully parse a separate sequence of tokens as a separate job.
   * Tokens should be specified in reverse order, as in a MacroDefinition.
   */
  subparse(tokens) {
    var oldToken = this.nextToken;
    this.consume();
    this.gullet.pushToken(new Token("}"));
    this.gullet.pushTokens(tokens);
    var parse16 = this.parseExpression(false);
    this.expect("}");
    this.nextToken = oldToken;
    return parse16;
  }
  /**
   * Parses an "expression", which is a list of atoms.
   *
   * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This
   *                 happens when functions have higher precendence han infix
   *                 nodes in implicit parses.
   *
   * `breakOnTokenText`: The text of the token that the expression should end
   *                     with, or `null` if something else should end the
   *                     expression.
   */
  parseExpression(breakOnInfix, breakOnTokenText) {
    var body3 = [];
    while (true) {
      if (this.mode === "math") {
        this.consumeSpaces();
      }
      var lex = this.fetch();
      if (_Parser.endOfExpression.indexOf(lex.text) !== -1) {
        break;
      }
      if (breakOnTokenText && lex.text === breakOnTokenText) {
        break;
      }
      if (breakOnInfix && functions[lex.text] && functions[lex.text].infix) {
        break;
      }
      var atom = this.parseAtom(breakOnTokenText);
      if (!atom) {
        break;
      } else if (atom.type === "internal") {
        continue;
      }
      body3.push(atom);
    }
    if (this.mode === "text") {
      this.formLigatures(body3);
    }
    return this.handleInfixNodes(body3);
  }
  /**
   * Rewrites infix operators such as \over with corresponding commands such
   * as \frac.
   *
   * There can only be one infix operator per group.  If there's more than one
   * then the expression is ambiguous.  This can be resolved by adding {}.
   */
  handleInfixNodes(body3) {
    var overIndex = -1;
    var funcName;
    for (var i2 = 0; i2 < body3.length; i2++) {
      if (body3[i2].type === "infix") {
        if (overIndex !== -1) {
          throw new ParseError("only one infix operator per group", body3[i2].token);
        }
        overIndex = i2;
        funcName = body3[i2].replaceWith;
      }
    }
    if (overIndex !== -1 && funcName) {
      var numerNode;
      var denomNode;
      var numerBody = body3.slice(0, overIndex);
      var denomBody = body3.slice(overIndex + 1);
      if (numerBody.length === 1 && numerBody[0].type === "ordgroup") {
        numerNode = numerBody[0];
      } else {
        numerNode = {
          type: "ordgroup",
          mode: this.mode,
          body: numerBody
        };
      }
      if (denomBody.length === 1 && denomBody[0].type === "ordgroup") {
        denomNode = denomBody[0];
      } else {
        denomNode = {
          type: "ordgroup",
          mode: this.mode,
          body: denomBody
        };
      }
      var node3;
      if (funcName === "\\\\abovefrac") {
        node3 = this.callFunction(funcName, [numerNode, body3[overIndex], denomNode], []);
      } else {
        node3 = this.callFunction(funcName, [numerNode, denomNode], []);
      }
      return [node3];
    } else {
      return body3;
    }
  }
  /**
   * Handle a subscript or superscript with nice errors.
   */
  handleSupSubscript(name3) {
    var symbolToken = this.fetch();
    var symbol = symbolToken.text;
    this.consume();
    this.consumeSpaces();
    var group3 = this.parseGroup(name3);
    if (!group3) {
      throw new ParseError("Expected group after '" + symbol + "'", symbolToken);
    }
    return group3;
  }
  /**
   * Converts the textual input of an unsupported command into a text node
   * contained within a color node whose color is determined by errorColor
   */
  formatUnsupportedCmd(text7) {
    var textordArray = [];
    for (var i2 = 0; i2 < text7.length; i2++) {
      textordArray.push({
        type: "textord",
        mode: "text",
        text: text7[i2]
      });
    }
    var textNode = {
      type: "text",
      mode: this.mode,
      body: textordArray
    };
    var colorNode = {
      type: "color",
      mode: this.mode,
      color: this.settings.errorColor,
      body: [textNode]
    };
    return colorNode;
  }
  /**
   * Parses a group with optional super/subscripts.
   */
  parseAtom(breakOnTokenText) {
    var base5 = this.parseGroup("atom", breakOnTokenText);
    if (this.mode === "text") {
      return base5;
    }
    var superscript3;
    var subscript3;
    while (true) {
      this.consumeSpaces();
      var lex = this.fetch();
      if (lex.text === "\\limits" || lex.text === "\\nolimits") {
        if (base5 && base5.type === "op") {
          var limits = lex.text === "\\limits";
          base5.limits = limits;
          base5.alwaysHandleSupSub = true;
        } else if (base5 && base5.type === "operatorname") {
          if (base5.alwaysHandleSupSub) {
            base5.limits = lex.text === "\\limits";
          }
        } else {
          throw new ParseError("Limit controls must follow a math operator", lex);
        }
        this.consume();
      } else if (lex.text === "^") {
        if (superscript3) {
          throw new ParseError("Double superscript", lex);
        }
        superscript3 = this.handleSupSubscript("superscript");
      } else if (lex.text === "_") {
        if (subscript3) {
          throw new ParseError("Double subscript", lex);
        }
        subscript3 = this.handleSupSubscript("subscript");
      } else if (lex.text === "'") {
        if (superscript3) {
          throw new ParseError("Double superscript", lex);
        }
        var prime = {
          type: "textord",
          mode: this.mode,
          text: "\\prime"
        };
        var primes = [prime];
        this.consume();
        while (this.fetch().text === "'") {
          primes.push(prime);
          this.consume();
        }
        if (this.fetch().text === "^") {
          primes.push(this.handleSupSubscript("superscript"));
        }
        superscript3 = {
          type: "ordgroup",
          mode: this.mode,
          body: primes
        };
      } else if (uSubsAndSups[lex.text]) {
        var str2 = uSubsAndSups[lex.text];
        var isSub = unicodeSubRegEx.test(lex.text);
        this.consume();
        while (true) {
          var token = this.fetch().text;
          if (!uSubsAndSups[token]) {
            break;
          }
          if (unicodeSubRegEx.test(token) !== isSub) {
            break;
          }
          this.consume();
          str2 += uSubsAndSups[token];
        }
        var body3 = new _Parser(str2, this.settings).parse();
        if (isSub) {
          subscript3 = {
            type: "ordgroup",
            mode: "math",
            body: body3
          };
        } else {
          superscript3 = {
            type: "ordgroup",
            mode: "math",
            body: body3
          };
        }
      } else {
        break;
      }
    }
    if (superscript3 || subscript3) {
      return {
        type: "supsub",
        mode: this.mode,
        base: base5,
        sup: superscript3,
        sub: subscript3
      };
    } else {
      return base5;
    }
  }
  /**
   * Parses an entire function, including its base and all of its arguments.
   */
  parseFunction(breakOnTokenText, name3) {
    var token = this.fetch();
    var func = token.text;
    var funcData = functions[func];
    if (!funcData) {
      return null;
    }
    this.consume();
    if (name3 && name3 !== "atom" && !funcData.allowedInArgument) {
      throw new ParseError("Got function '" + func + "' with no arguments" + (name3 ? " as " + name3 : ""), token);
    } else if (this.mode === "text" && !funcData.allowedInText) {
      throw new ParseError("Can't use function '" + func + "' in text mode", token);
    } else if (this.mode === "math" && funcData.allowedInMath === false) {
      throw new ParseError("Can't use function '" + func + "' in math mode", token);
    }
    var {
      args,
      optArgs
    } = this.parseArguments(func, funcData);
    return this.callFunction(func, args, optArgs, token, breakOnTokenText);
  }
  /**
   * Call a function handler with a suitable context and arguments.
   */
  callFunction(name3, args, optArgs, token, breakOnTokenText) {
    var context = {
      funcName: name3,
      parser: this,
      token,
      breakOnTokenText
    };
    var func = functions[name3];
    if (func && func.handler) {
      return func.handler(context, args, optArgs);
    } else {
      throw new ParseError("No function handler for " + name3);
    }
  }
  /**
   * Parses the arguments of a function or environment
   */
  parseArguments(func, funcData) {
    var totalArgs = funcData.numArgs + funcData.numOptionalArgs;
    if (totalArgs === 0) {
      return {
        args: [],
        optArgs: []
      };
    }
    var args = [];
    var optArgs = [];
    for (var i2 = 0; i2 < totalArgs; i2++) {
      var argType = funcData.argTypes && funcData.argTypes[i2];
      var isOptional = i2 < funcData.numOptionalArgs;
      if (funcData.primitive && argType == null || // \sqrt expands into primitive if optional argument doesn't exist
      funcData.type === "sqrt" && i2 === 1 && optArgs[0] == null) {
        argType = "primitive";
      }
      var arg2 = this.parseGroupOfType("argument to '" + func + "'", argType, isOptional);
      if (isOptional) {
        optArgs.push(arg2);
      } else if (arg2 != null) {
        args.push(arg2);
      } else {
        throw new ParseError("Null argument, please report this as a bug");
      }
    }
    return {
      args,
      optArgs
    };
  }
  /**
   * Parses a group when the mode is changing.
   */
  parseGroupOfType(name3, type2, optional) {
    switch (type2) {
      case "color":
        return this.parseColorGroup(optional);
      case "size":
        return this.parseSizeGroup(optional);
      case "url":
        return this.parseUrlGroup(optional);
      case "math":
      case "text":
        return this.parseArgumentGroup(optional, type2);
      case "hbox": {
        var group3 = this.parseArgumentGroup(optional, "text");
        return group3 != null ? {
          type: "styling",
          mode: group3.mode,
          body: [group3],
          style: "text"
          // simulate \textstyle
        } : null;
      }
      case "raw": {
        var token = this.parseStringGroup("raw", optional);
        return token != null ? {
          type: "raw",
          mode: "text",
          string: token.text
        } : null;
      }
      case "primitive": {
        if (optional) {
          throw new ParseError("A primitive argument cannot be optional");
        }
        var _group = this.parseGroup(name3);
        if (_group == null) {
          throw new ParseError("Expected group as " + name3, this.fetch());
        }
        return _group;
      }
      case "original":
      case null:
      case void 0:
        return this.parseArgumentGroup(optional);
      default:
        throw new ParseError("Unknown group type as " + name3, this.fetch());
    }
  }
  /**
   * Discard any space tokens, fetching the next non-space token.
   */
  consumeSpaces() {
    while (this.fetch().text === " ") {
      this.consume();
    }
  }
  /**
   * Parses a group, essentially returning the string formed by the
   * brace-enclosed tokens plus some position information.
   */
  parseStringGroup(modeName, optional) {
    var argToken = this.gullet.scanArgument(optional);
    if (argToken == null) {
      return null;
    }
    var str2 = "";
    var nextToken;
    while ((nextToken = this.fetch()).text !== "EOF") {
      str2 += nextToken.text;
      this.consume();
    }
    this.consume();
    argToken.text = str2;
    return argToken;
  }
  /**
   * Parses a regex-delimited group: the largest sequence of tokens
   * whose concatenated strings match `regex`. Returns the string
   * formed by the tokens plus some position information.
   */
  parseRegexGroup(regex2, modeName) {
    var firstToken = this.fetch();
    var lastToken = firstToken;
    var str2 = "";
    var nextToken;
    while ((nextToken = this.fetch()).text !== "EOF" && regex2.test(str2 + nextToken.text)) {
      lastToken = nextToken;
      str2 += lastToken.text;
      this.consume();
    }
    if (str2 === "") {
      throw new ParseError("Invalid " + modeName + ": '" + firstToken.text + "'", firstToken);
    }
    return firstToken.range(lastToken, str2);
  }
  /**
   * Parses a color description.
   */
  parseColorGroup(optional) {
    var res = this.parseStringGroup("color", optional);
    if (res == null) {
      return null;
    }
    var match3 = /^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(res.text);
    if (!match3) {
      throw new ParseError("Invalid color: '" + res.text + "'", res);
    }
    var color2 = match3[0];
    if (/^[0-9a-f]{6}$/i.test(color2)) {
      color2 = "#" + color2;
    }
    return {
      type: "color-token",
      mode: this.mode,
      color: color2
    };
  }
  /**
   * Parses a size specification, consisting of magnitude and unit.
   */
  parseSizeGroup(optional) {
    var res;
    var isBlank = false;
    this.gullet.consumeSpaces();
    if (!optional && this.gullet.future().text !== "{") {
      res = this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, "size");
    } else {
      res = this.parseStringGroup("size", optional);
    }
    if (!res) {
      return null;
    }
    if (!optional && res.text.length === 0) {
      res.text = "0pt";
      isBlank = true;
    }
    var match3 = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(res.text);
    if (!match3) {
      throw new ParseError("Invalid size: '" + res.text + "'", res);
    }
    var data = {
      number: +(match3[1] + match3[2]),
      // sign + magnitude, cast to number
      unit: match3[3]
    };
    if (!validUnit(data)) {
      throw new ParseError("Invalid unit: '" + data.unit + "'", res);
    }
    return {
      type: "size",
      mode: this.mode,
      value: data,
      isBlank
    };
  }
  /**
   * Parses an URL, checking escaped letters and allowed protocols,
   * and setting the catcode of % as an active character (as in \hyperref).
   */
  parseUrlGroup(optional) {
    this.gullet.lexer.setCatcode("%", 13);
    this.gullet.lexer.setCatcode("~", 12);
    var res = this.parseStringGroup("url", optional);
    this.gullet.lexer.setCatcode("%", 14);
    this.gullet.lexer.setCatcode("~", 13);
    if (res == null) {
      return null;
    }
    var url = res.text.replace(/\\([#$%&~_^{}])/g, "$1");
    return {
      type: "url",
      mode: this.mode,
      url
    };
  }
  /**
   * Parses an argument with the mode specified.
   */
  parseArgumentGroup(optional, mode) {
    var argToken = this.gullet.scanArgument(optional);
    if (argToken == null) {
      return null;
    }
    var outerMode = this.mode;
    if (mode) {
      this.switchMode(mode);
    }
    this.gullet.beginGroup();
    var expression = this.parseExpression(false, "EOF");
    this.expect("EOF");
    this.gullet.endGroup();
    var result = {
      type: "ordgroup",
      mode: this.mode,
      loc: argToken.loc,
      body: expression
    };
    if (mode) {
      this.switchMode(outerMode);
    }
    return result;
  }
  /**
   * Parses an ordinary group, which is either a single nucleus (like "x")
   * or an expression in braces (like "{x+y}") or an implicit group, a group
   * that starts at the current position, and ends right before a higher explicit
   * group ends, or at EOF.
   */
  parseGroup(name3, breakOnTokenText) {
    var firstToken = this.fetch();
    var text7 = firstToken.text;
    var result;
    if (text7 === "{" || text7 === "\\begingroup") {
      this.consume();
      var groupEnd = text7 === "{" ? "}" : "\\endgroup";
      this.gullet.beginGroup();
      var expression = this.parseExpression(false, groupEnd);
      var lastToken = this.fetch();
      this.expect(groupEnd);
      this.gullet.endGroup();
      result = {
        type: "ordgroup",
        mode: this.mode,
        loc: SourceLocation.range(firstToken, lastToken),
        body: expression,
        // A group formed by \begingroup...\endgroup is a semi-simple group
        // which doesn't affect spacing in math mode, i.e., is transparent.
        // https://tex.stackexchange.com/questions/1930/when-should-one-
        // use-begingroup-instead-of-bgroup
        semisimple: text7 === "\\begingroup" || void 0
      };
    } else {
      result = this.parseFunction(breakOnTokenText, name3) || this.parseSymbol();
      if (result == null && text7[0] === "\\" && !implicitCommands.hasOwnProperty(text7)) {
        if (this.settings.throwOnError) {
          throw new ParseError("Undefined control sequence: " + text7, firstToken);
        }
        result = this.formatUnsupportedCmd(text7);
        this.consume();
      }
    }
    return result;
  }
  /**
   * Form ligature-like combinations of characters for text mode.
   * This includes inputs like "--", "---", "``" and "''".
   * The result will simply replace multiple textord nodes with a single
   * character in each value by a single textord node having multiple
   * characters in its value.  The representation is still ASCII source.
   * The group will be modified in place.
   */
  formLigatures(group3) {
    var n = group3.length - 1;
    for (var i2 = 0; i2 < n; ++i2) {
      var a2 = group3[i2];
      var v = a2.text;
      if (v === "-" && group3[i2 + 1].text === "-") {
        if (i2 + 1 < n && group3[i2 + 2].text === "-") {
          group3.splice(i2, 3, {
            type: "textord",
            mode: "text",
            loc: SourceLocation.range(a2, group3[i2 + 2]),
            text: "---"
          });
          n -= 2;
        } else {
          group3.splice(i2, 2, {
            type: "textord",
            mode: "text",
            loc: SourceLocation.range(a2, group3[i2 + 1]),
            text: "--"
          });
          n -= 1;
        }
      }
      if ((v === "'" || v === "`") && group3[i2 + 1].text === v) {
        group3.splice(i2, 2, {
          type: "textord",
          mode: "text",
          loc: SourceLocation.range(a2, group3[i2 + 1]),
          text: v + v
        });
        n -= 1;
      }
    }
  }
  /**
   * Parse a single symbol out of the string. Here, we handle single character
   * symbols and special functions like \verb.
   */
  parseSymbol() {
    var nucleus = this.fetch();
    var text7 = nucleus.text;
    if (/^\\verb[^a-zA-Z]/.test(text7)) {
      this.consume();
      var arg2 = text7.slice(5);
      var star3 = arg2.charAt(0) === "*";
      if (star3) {
        arg2 = arg2.slice(1);
      }
      if (arg2.length < 2 || arg2.charAt(0) !== arg2.slice(-1)) {
        throw new ParseError("\\verb assertion failed --\n                    please report what input caused this bug");
      }
      arg2 = arg2.slice(1, -1);
      return {
        type: "verb",
        mode: "text",
        body: arg2,
        star: star3
      };
    }
    if (unicodeSymbols.hasOwnProperty(text7[0]) && !symbols[this.mode][text7[0]]) {
      if (this.settings.strict && this.mode === "math") {
        this.settings.reportNonstrict("unicodeTextInMathMode", 'Accented Unicode text character "' + text7[0] + '" used in math mode', nucleus);
      }
      text7 = unicodeSymbols[text7[0]] + text7.substr(1);
    }
    var match3 = combiningDiacriticalMarksEndRegex.exec(text7);
    if (match3) {
      text7 = text7.substring(0, match3.index);
      if (text7 === "i") {
        text7 = "\u0131";
      } else if (text7 === "j") {
        text7 = "\u0237";
      }
    }
    var symbol;
    if (symbols[this.mode][text7]) {
      if (this.settings.strict && this.mode === "math" && extraLatin.indexOf(text7) >= 0) {
        this.settings.reportNonstrict("unicodeTextInMathMode", 'Latin-1/Unicode text character "' + text7[0] + '" used in math mode', nucleus);
      }
      var group3 = symbols[this.mode][text7].group;
      var loc = SourceLocation.range(nucleus);
      var s5;
      if (ATOMS.hasOwnProperty(group3)) {
        var family = group3;
        s5 = {
          type: "atom",
          mode: this.mode,
          family,
          loc,
          text: text7
        };
      } else {
        s5 = {
          type: group3,
          mode: this.mode,
          loc,
          text: text7
        };
      }
      symbol = s5;
    } else if (text7.charCodeAt(0) >= 128) {
      if (this.settings.strict) {
        if (!supportedCodepoint(text7.charCodeAt(0))) {
          this.settings.reportNonstrict("unknownSymbol", 'Unrecognized Unicode character "' + text7[0] + '"' + (" (" + text7.charCodeAt(0) + ")"), nucleus);
        } else if (this.mode === "math") {
          this.settings.reportNonstrict("unicodeTextInMathMode", 'Unicode text character "' + text7[0] + '" used in math mode', nucleus);
        }
      }
      symbol = {
        type: "textord",
        mode: "text",
        loc: SourceLocation.range(nucleus),
        text: text7
      };
    } else {
      return null;
    }
    this.consume();
    if (match3) {
      for (var i2 = 0; i2 < match3[0].length; i2++) {
        var accent2 = match3[0][i2];
        if (!unicodeAccents[accent2]) {
          throw new ParseError("Unknown accent ' " + accent2 + "'", nucleus);
        }
        var command = unicodeAccents[accent2][this.mode] || unicodeAccents[accent2].text;
        if (!command) {
          throw new ParseError("Accent " + accent2 + " unsupported in " + this.mode + " mode", nucleus);
        }
        symbol = {
          type: "accent",
          mode: this.mode,
          loc: SourceLocation.range(nucleus),
          label: command,
          isStretchy: false,
          isShifty: true,
          // $FlowFixMe
          base: symbol
        };
      }
    }
    return symbol;
  }
};
Parser2.endOfExpression = ["}", "\\endgroup", "\\end", "\\right", "&"];
var parseTree = function parseTree2(toParse, settings) {
  if (!(typeof toParse === "string" || toParse instanceof String)) {
    throw new TypeError("KaTeX can only parse string typed expression");
  }
  var parser3 = new Parser2(toParse, settings);
  delete parser3.gullet.macros.current["\\df@tag"];
  var tree = parser3.parse();
  delete parser3.gullet.macros.current["\\current@color"];
  delete parser3.gullet.macros.current["\\color"];
  if (parser3.gullet.macros.get("\\df@tag")) {
    if (!settings.displayMode) {
      throw new ParseError("\\tag works only in display equations");
    }
    tree = [{
      type: "tag",
      mode: "text",
      body: tree,
      tag: parser3.subparse([new Token("\\df@tag")])
    }];
  }
  return tree;
};
var render = function render2(expression, baseNode, options) {
  baseNode.textContent = "";
  var node3 = renderToDomTree(expression, options).toNode();
  baseNode.appendChild(node3);
};
if (typeof document !== "undefined") {
  if (document.compatMode !== "CSS1Compat") {
    typeof console !== "undefined" && console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype.");
    render = function render3() {
      throw new ParseError("KaTeX doesn't work in quirks mode.");
    };
  }
}
var renderToString = function renderToString2(expression, options) {
  var markup = renderToDomTree(expression, options).toMarkup();
  return markup;
};
var generateParseTree = function generateParseTree2(expression, options) {
  var settings = new Settings(options);
  return parseTree(expression, settings);
};
var renderError = function renderError2(error, expression, options) {
  if (options.throwOnError || !(error instanceof ParseError)) {
    throw error;
  }
  var node3 = buildCommon.makeSpan(["katex-error"], [new SymbolNode(expression)]);
  node3.setAttribute("title", error.toString());
  node3.setAttribute("style", "color:" + options.errorColor);
  return node3;
};
var renderToDomTree = function renderToDomTree2(expression, options) {
  var settings = new Settings(options);
  try {
    var tree = parseTree(expression, settings);
    return buildTree(tree, expression, settings);
  } catch (error) {
    return renderError(error, expression, settings);
  }
};
var renderToHTMLTree = function renderToHTMLTree2(expression, options) {
  var settings = new Settings(options);
  try {
    var tree = parseTree(expression, settings);
    return buildHTMLTree(tree, expression, settings);
  } catch (error) {
    return renderError(error, expression, settings);
  }
};
var katex = {
  /**
   * Current KaTeX version
   */
  version: "0.15.6",
  /**
   * Renders the given LaTeX into an HTML+MathML combination, and adds
   * it as a child to the specified DOM node.
   */
  render,
  /**
   * Renders the given LaTeX into an HTML+MathML combination string,
   * for sending to the client.
   */
  renderToString,
  /**
   * KaTeX error, usually during parsing.
   */
  ParseError,
  /**
   * The shema of Settings
   */
  SETTINGS_SCHEMA,
  /**
   * Parses the given LaTeX into KaTeX's internal parse tree structure,
   * without rendering to HTML or MathML.
   *
   * NOTE: This method is not currently recommended for public use.
   * The internal tree representation is unstable and is very likely
   * to change. Use at your own risk.
   */
  __parse: generateParseTree,
  /**
   * Renders the given LaTeX into an HTML+MathML internal DOM tree
   * representation, without flattening that representation to a string.
   *
   * NOTE: This method is not currently recommended for public use.
   * The internal tree representation is unstable and is very likely
   * to change. Use at your own risk.
   */
  __renderToDomTree: renderToDomTree,
  /**
   * Renders the given LaTeX into an HTML internal DOM tree representation,
   * without MathML and without flattening that representation to a string.
   *
   * NOTE: This method is not currently recommended for public use.
   * The internal tree representation is unstable and is very likely
   * to change. Use at your own risk.
   */
  __renderToHTMLTree: renderToHTMLTree,
  /**
   * extends internal font metrics object with a new object
   * each key in the new object represents a font name
  */
  __setFontMetrics: setFontMetrics,
  /**
   * adds a new symbol to builtin symbols table
   */
  __defineSymbol: defineSymbol,
  /**
   * adds a new macro to builtin macro list
   */
  __defineMacro: defineMacro,
  /**
   * Expose the dom tree node types, which can be useful for type checking nodes.
   *
   * NOTE: This method is not currently recommended for public use.
   * The internal tree representation is unstable and is very likely
   * to change. Use at your own risk.
   */
  __domTree: {
    Span,
    Anchor,
    SymbolNode,
    SvgNode,
    PathNode,
    LineNode
  }
};

// ../../node_modules/katex/contrib/mhchem/mhchem.js
katex.__defineMacro("\\ce", function(context) {
  return chemParse(context.consumeArgs(1)[0], "ce");
});
katex.__defineMacro("\\pu", function(context) {
  return chemParse(context.consumeArgs(1)[0], "pu");
});
katex.__defineMacro("\\tripledash", "{\\vphantom{-}\\raisebox{2.56mu}{$\\mkern2mu\\tiny\\text{-}\\mkern1mu\\text{-}\\mkern1mu\\text{-}\\mkern2mu$}}");
var chemParse = function(tokens, stateMachine) {
  var str2 = "";
  var expectedLoc = tokens.length && tokens[tokens.length - 1].loc.start;
  for (var i2 = tokens.length - 1; i2 >= 0; i2--) {
    if (tokens[i2].loc.start > expectedLoc) {
      str2 += " ";
      expectedLoc = tokens[i2].loc.start;
    }
    str2 += tokens[i2].text;
    expectedLoc += tokens[i2].text.length;
  }
  var tex = texify.go(mhchemParser.go(str2, stateMachine));
  return tex;
};
var mhchemParser = {
  //
  // Parses mchem \ce syntax
  //
  // Call like
  //   go("H2O");
  //
  go: function(input3, stateMachine) {
    if (!input3) {
      return [];
    }
    if (stateMachine === void 0) {
      stateMachine = "ce";
    }
    var state = "0";
    var buffer2 = {};
    buffer2["parenthesisLevel"] = 0;
    input3 = input3.replace(/\n/g, " ");
    input3 = input3.replace(/[\u2212\u2013\u2014\u2010]/g, "-");
    input3 = input3.replace(/[\u2026]/g, "...");
    var lastInput;
    var watchdog = 10;
    var output2 = [];
    while (true) {
      if (lastInput !== input3) {
        watchdog = 10;
        lastInput = input3;
      } else {
        watchdog--;
      }
      var machine = mhchemParser.stateMachines[stateMachine];
      var t2 = machine.transitions[state] || machine.transitions["*"];
      iterateTransitions:
        for (var i2 = 0; i2 < t2.length; i2++) {
          var matches4 = mhchemParser.patterns.match_(t2[i2].pattern, input3);
          if (matches4) {
            var task = t2[i2].task;
            for (var iA = 0; iA < task.action_.length; iA++) {
              var o;
              if (machine.actions[task.action_[iA].type_]) {
                o = machine.actions[task.action_[iA].type_](buffer2, matches4.match_, task.action_[iA].option);
              } else if (mhchemParser.actions[task.action_[iA].type_]) {
                o = mhchemParser.actions[task.action_[iA].type_](buffer2, matches4.match_, task.action_[iA].option);
              } else {
                throw ["MhchemBugA", "mhchem bug A. Please report. (" + task.action_[iA].type_ + ")"];
              }
              mhchemParser.concatArray(output2, o);
            }
            state = task.nextState || state;
            if (input3.length > 0) {
              if (!task.revisit) {
                input3 = matches4.remainder;
              }
              if (!task.toContinue) {
                break iterateTransitions;
              }
            } else {
              return output2;
            }
          }
        }
      if (watchdog <= 0) {
        throw ["MhchemBugU", "mhchem bug U. Please report."];
      }
    }
  },
  concatArray: function(a2, b) {
    if (b) {
      if (Array.isArray(b)) {
        for (var iB = 0; iB < b.length; iB++) {
          a2.push(b[iB]);
        }
      } else {
        a2.push(b);
      }
    }
  },
  patterns: {
    //
    // Matching patterns
    // either regexps or function that return null or {match_:"a", remainder:"bc"}
    //
    patterns: {
      // property names must not look like integers ("2") for correct property traversal order, later on
      "empty": /^$/,
      "else": /^./,
      "else2": /^./,
      "space": /^\s/,
      "space A": /^\s(?=[A-Z\\$])/,
      "space$": /^\s$/,
      "a-z": /^[a-z]/,
      "x": /^x/,
      "x$": /^x$/,
      "i$": /^i$/,
      "letters": /^(?:[a-zA-Z\u03B1-\u03C9\u0391-\u03A9?@]|(?:\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))))+/,
      "\\greek": /^\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))/,
      "one lowercase latin letter $": /^(?:([a-z])(?:$|[^a-zA-Z]))$/,
      "$one lowercase latin letter$ $": /^\$(?:([a-z])(?:$|[^a-zA-Z]))\$$/,
      "one lowercase greek letter $": /^(?:\$?[\u03B1-\u03C9]\$?|\$?\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\s*\$?)(?:\s+|\{\}|(?![a-zA-Z]))$/,
      "digits": /^[0-9]+/,
      "-9.,9": /^[+\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))/,
      "-9.,9 no missing 0": /^[+\-]?[0-9]+(?:[.,][0-9]+)?/,
      "(-)(9.,9)(e)(99)": function(input3) {
        var m2 = input3.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))?(\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))\))?(?:([eE]|\s*(\*|x|\\times|\u00D7)\s*10\^)([+\-]?[0-9]+|\{[+\-]?[0-9]+\}))?/);
        if (m2 && m2[0]) {
          return { match_: m2.splice(1), remainder: input3.substr(m2[0].length) };
        }
        return null;
      },
      "(-)(9)^(-9)": function(input3) {
        var m2 = input3.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)\^([+\-]?[0-9]+|\{[+\-]?[0-9]+\})/);
        if (m2 && m2[0]) {
          return { match_: m2.splice(1), remainder: input3.substr(m2[0].length) };
        }
        return null;
      },
      "state of aggregation $": function(input3) {
        var a2 = mhchemParser.patterns.findObserveGroups(input3, "", /^\([a-z]{1,3}(?=[\),])/, ")", "");
        if (a2 && a2.remainder.match(/^($|[\s,;\)\]\}])/)) {
          return a2;
        }
        var m2 = input3.match(/^(?:\((?:\\ca\s?)?\$[amothc]\$\))/);
        if (m2) {
          return { match_: m2[0], remainder: input3.substr(m2[0].length) };
        }
        return null;
      },
      "_{(state of aggregation)}$": /^_\{(\([a-z]{1,3}\))\}/,
      "{[(": /^(?:\\\{|\[|\()/,
      ")]}": /^(?:\)|\]|\\\})/,
      ", ": /^[,;]\s*/,
      ",": /^[,;]/,
      ".": /^[.]/,
      ". ": /^([.\u22C5\u00B7\u2022])\s*/,
      "...": /^\.\.\.(?=$|[^.])/,
      "* ": /^([*])\s*/,
      "^{(...)}": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "^{", "", "", "}");
      },
      "^($...$)": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "^", "$", "$", "");
      },
      "^a": /^\^([0-9]+|[^\\_])/,
      "^\\x{}{}": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "^", /^\\[a-zA-Z]+\{/, "}", "", "", "{", "}", "", true);
      },
      "^\\x{}": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "^", /^\\[a-zA-Z]+\{/, "}", "");
      },
      "^\\x": /^\^(\\[a-zA-Z]+)\s*/,
      "^(-1)": /^\^(-?\d+)/,
      "'": /^'/,
      "_{(...)}": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "_{", "", "", "}");
      },
      "_($...$)": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "_", "$", "$", "");
      },
      "_9": /^_([+\-]?[0-9]+|[^\\])/,
      "_\\x{}{}": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "_", /^\\[a-zA-Z]+\{/, "}", "", "", "{", "}", "", true);
      },
      "_\\x{}": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "_", /^\\[a-zA-Z]+\{/, "}", "");
      },
      "_\\x": /^_(\\[a-zA-Z]+)\s*/,
      "^_": /^(?:\^(?=_)|\_(?=\^)|[\^_]$)/,
      "{}": /^\{\}/,
      "{...}": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "", "{", "}", "");
      },
      "{(...)}": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "{", "", "", "}");
      },
      "$...$": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "", "$", "$", "");
      },
      "${(...)}$": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "${", "", "", "}$");
      },
      "$(...)$": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "$", "", "", "$");
      },
      "=<>": /^[=<>]/,
      "#": /^[#\u2261]/,
      "+": /^\+/,
      "-$": /^-(?=[\s_},;\]/]|$|\([a-z]+\))/,
      // -space -, -; -] -/ -$ -state-of-aggregation
      "-9": /^-(?=[0-9])/,
      "- orbital overlap": /^-(?=(?:[spd]|sp)(?:$|[\s,;\)\]\}]))/,
      "-": /^-/,
      "pm-operator": /^(?:\\pm|\$\\pm\$|\+-|\+\/-)/,
      "operator": /^(?:\+|(?:[\-=<>]|<<|>>|\\approx|\$\\approx\$)(?=\s|$|-?[0-9]))/,
      "arrowUpDown": /^(?:v|\(v\)|\^|\(\^\))(?=$|[\s,;\)\]\}])/,
      "\\bond{(...)}": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "\\bond{", "", "", "}");
      },
      "->": /^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\u2192\u27F6\u21CC])/,
      "CMT": /^[CMT](?=\[)/,
      "[(...)]": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "[", "", "", "]");
      },
      "1st-level escape": /^(&|\\\\|\\hline)\s*/,
      "\\,": /^(?:\\[,\ ;:])/,
      // \\x - but output no space before
      "\\x{}{}": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "", /^\\[a-zA-Z]+\{/, "}", "", "", "{", "}", "", true);
      },
      "\\x{}": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "", /^\\[a-zA-Z]+\{/, "}", "");
      },
      "\\ca": /^\\ca(?:\s+|(?![a-zA-Z]))/,
      "\\x": /^(?:\\[a-zA-Z]+\s*|\\[_&{}%])/,
      "orbital": /^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,
      // only those with numbers in front, because the others will be formatted correctly anyway
      "others": /^[\/~|]/,
      "\\frac{(...)}": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "\\frac{", "", "", "}", "{", "", "", "}");
      },
      "\\overset{(...)}": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "\\overset{", "", "", "}", "{", "", "", "}");
      },
      "\\underset{(...)}": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "\\underset{", "", "", "}", "{", "", "", "}");
      },
      "\\underbrace{(...)}": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "\\underbrace{", "", "", "}_", "{", "", "", "}");
      },
      "\\color{(...)}0": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "\\color{", "", "", "}");
      },
      "\\color{(...)}{(...)}1": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "\\color{", "", "", "}", "{", "", "", "}");
      },
      "\\color(...){(...)}2": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "\\color", "\\", "", /^(?=\{)/, "{", "", "", "}");
      },
      "\\ce{(...)}": function(input3) {
        return mhchemParser.patterns.findObserveGroups(input3, "\\ce{", "", "", "}");
      },
      "oxidation$": /^(?:[+-][IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,
      "d-oxidation$": /^(?:[+-]?\s?[IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,
      // 0 could be oxidation or charge
      "roman numeral": /^[IVX]+/,
      "1/2$": /^[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+(?:\$[a-z]\$|[a-z])?$/,
      "amount": function(input3) {
        var match3;
        match3 = input3.match(/^(?:(?:(?:\([+\-]?[0-9]+\/[0-9]+\)|[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+|[+\-]?[0-9]+[.,][0-9]+|[+\-]?\.[0-9]+|[+\-]?[0-9]+)(?:[a-z](?=\s*[A-Z]))?)|[+\-]?[a-z](?=\s*[A-Z])|\+(?!\s))/);
        if (match3) {
          return { match_: match3[0], remainder: input3.substr(match3[0].length) };
        }
        var a2 = mhchemParser.patterns.findObserveGroups(input3, "", "$", "$", "");
        if (a2) {
          match3 = a2.match_.match(/^\$(?:\(?[+\-]?(?:[0-9]*[a-z]?[+\-])?[0-9]*[a-z](?:[+\-][0-9]*[a-z]?)?\)?|\+|-)\$$/);
          if (match3) {
            return { match_: match3[0], remainder: input3.substr(match3[0].length) };
          }
        }
        return null;
      },
      "amount2": function(input3) {
        return this["amount"](input3);
      },
      "(KV letters),": /^(?:[A-Z][a-z]{0,2}|i)(?=,)/,
      "formula$": function(input3) {
        if (input3.match(/^\([a-z]+\)$/)) {
          return null;
        }
        var match3 = input3.match(/^(?:[a-z]|(?:[0-9\ \+\-\,\.\(\)]+[a-z])+[0-9\ \+\-\,\.\(\)]*|(?:[a-z][0-9\ \+\-\,\.\(\)]+)+[a-z]?)$/);
        if (match3) {
          return { match_: match3[0], remainder: input3.substr(match3[0].length) };
        }
        return null;
      },
      "uprightEntities": /^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,
      "/": /^\s*(\/)\s*/,
      "//": /^\s*(\/\/)\s*/,
      "*": /^\s*[*.]\s*/
    },
    findObserveGroups: function(input3, begExcl, begIncl, endIncl, endExcl, beg2Excl, beg2Incl, end2Incl, end2Excl, combine2) {
      var _match = function(input4, pattern) {
        if (typeof pattern === "string") {
          if (input4.indexOf(pattern) !== 0) {
            return null;
          }
          return pattern;
        } else {
          var match4 = input4.match(pattern);
          if (!match4) {
            return null;
          }
          return match4[0];
        }
      };
      var _findObserveGroups = function(input4, i2, endChars) {
        var braces = 0;
        while (i2 < input4.length) {
          var a2 = input4.charAt(i2);
          var match4 = _match(input4.substr(i2), endChars);
          if (match4 !== null && braces === 0) {
            return { endMatchBegin: i2, endMatchEnd: i2 + match4.length };
          } else if (a2 === "{") {
            braces++;
          } else if (a2 === "}") {
            if (braces === 0) {
              throw ["ExtraCloseMissingOpen", "Extra close brace or missing open brace"];
            } else {
              braces--;
            }
          }
          i2++;
        }
        if (braces > 0) {
          return null;
        }
        return null;
      };
      var match3 = _match(input3, begExcl);
      if (match3 === null) {
        return null;
      }
      input3 = input3.substr(match3.length);
      match3 = _match(input3, begIncl);
      if (match3 === null) {
        return null;
      }
      var e2 = _findObserveGroups(input3, match3.length, endIncl || endExcl);
      if (e2 === null) {
        return null;
      }
      var match1 = input3.substring(0, endIncl ? e2.endMatchEnd : e2.endMatchBegin);
      if (!(beg2Excl || beg2Incl)) {
        return {
          match_: match1,
          remainder: input3.substr(e2.endMatchEnd)
        };
      } else {
        var group22 = this.findObserveGroups(input3.substr(e2.endMatchEnd), beg2Excl, beg2Incl, end2Incl, end2Excl);
        if (group22 === null) {
          return null;
        }
        var matchRet = [match1, group22.match_];
        return {
          match_: combine2 ? matchRet.join("") : matchRet,
          remainder: group22.remainder
        };
      }
    },
    //
    // Matching function
    // e.g. match("a", input) will look for the regexp called "a" and see if it matches
    // returns null or {match_:"a", remainder:"bc"}
    //
    match_: function(m2, input3) {
      var pattern = mhchemParser.patterns.patterns[m2];
      if (pattern === void 0) {
        throw ["MhchemBugP", "mhchem bug P. Please report. (" + m2 + ")"];
      } else if (typeof pattern === "function") {
        return mhchemParser.patterns.patterns[m2](input3);
      } else {
        var match3 = input3.match(pattern);
        if (match3) {
          var mm;
          if (match3[2]) {
            mm = [match3[1], match3[2]];
          } else if (match3[1]) {
            mm = match3[1];
          } else {
            mm = match3[0];
          }
          return { match_: mm, remainder: input3.substr(match3[0].length) };
        }
        return null;
      }
    }
  },
  //
  // Generic state machine actions
  //
  actions: {
    "a=": function(buffer2, m2) {
      buffer2.a = (buffer2.a || "") + m2;
    },
    "b=": function(buffer2, m2) {
      buffer2.b = (buffer2.b || "") + m2;
    },
    "p=": function(buffer2, m2) {
      buffer2.p = (buffer2.p || "") + m2;
    },
    "o=": function(buffer2, m2) {
      buffer2.o = (buffer2.o || "") + m2;
    },
    "q=": function(buffer2, m2) {
      buffer2.q = (buffer2.q || "") + m2;
    },
    "d=": function(buffer2, m2) {
      buffer2.d = (buffer2.d || "") + m2;
    },
    "rm=": function(buffer2, m2) {
      buffer2.rm = (buffer2.rm || "") + m2;
    },
    "text=": function(buffer2, m2) {
      buffer2.text_ = (buffer2.text_ || "") + m2;
    },
    "insert": function(buffer2, m2, a2) {
      return { type_: a2 };
    },
    "insert+p1": function(buffer2, m2, a2) {
      return { type_: a2, p1: m2 };
    },
    "insert+p1+p2": function(buffer2, m2, a2) {
      return { type_: a2, p1: m2[0], p2: m2[1] };
    },
    "copy": function(buffer2, m2) {
      return m2;
    },
    "rm": function(buffer2, m2) {
      return { type_: "rm", p1: m2 || "" };
    },
    "text": function(buffer2, m2) {
      return mhchemParser.go(m2, "text");
    },
    "{text}": function(buffer2, m2) {
      var ret = ["{"];
      mhchemParser.concatArray(ret, mhchemParser.go(m2, "text"));
      ret.push("}");
      return ret;
    },
    "tex-math": function(buffer2, m2) {
      return mhchemParser.go(m2, "tex-math");
    },
    "tex-math tight": function(buffer2, m2) {
      return mhchemParser.go(m2, "tex-math tight");
    },
    "bond": function(buffer2, m2, k) {
      return { type_: "bond", kind_: k || m2 };
    },
    "color0-output": function(buffer2, m2) {
      return { type_: "color0", color: m2[0] };
    },
    "ce": function(buffer2, m2) {
      return mhchemParser.go(m2);
    },
    "1/2": function(buffer2, m2) {
      var ret = [];
      if (m2.match(/^[+\-]/)) {
        ret.push(m2.substr(0, 1));
        m2 = m2.substr(1);
      }
      var n = m2.match(/^([0-9]+|\$[a-z]\$|[a-z])\/([0-9]+)(\$[a-z]\$|[a-z])?$/);
      n[1] = n[1].replace(/\$/g, "");
      ret.push({ type_: "frac", p1: n[1], p2: n[2] });
      if (n[3]) {
        n[3] = n[3].replace(/\$/g, "");
        ret.push({ type_: "tex-math", p1: n[3] });
      }
      return ret;
    },
    "9,9": function(buffer2, m2) {
      return mhchemParser.go(m2, "9,9");
    }
  },
  //
  // createTransitions
  // convert  { 'letter': { 'state': { action_: 'output' } } }  to  { 'state' => [ { pattern: 'letter', task: { action_: [{type_: 'output'}] } } ] }
  // with expansion of 'a|b' to 'a' and 'b' (at 2 places)
  //
  createTransitions: function(o) {
    var pattern, state;
    var stateArray;
    var i2;
    var transitions = {};
    for (pattern in o) {
      for (state in o[pattern]) {
        stateArray = state.split("|");
        o[pattern][state].stateArray = stateArray;
        for (i2 = 0; i2 < stateArray.length; i2++) {
          transitions[stateArray[i2]] = [];
        }
      }
    }
    for (pattern in o) {
      for (state in o[pattern]) {
        stateArray = o[pattern][state].stateArray || [];
        for (i2 = 0; i2 < stateArray.length; i2++) {
          var p5 = o[pattern][state];
          if (p5.action_) {
            p5.action_ = [].concat(p5.action_);
            for (var k = 0; k < p5.action_.length; k++) {
              if (typeof p5.action_[k] === "string") {
                p5.action_[k] = { type_: p5.action_[k] };
              }
            }
          } else {
            p5.action_ = [];
          }
          var patternArray = pattern.split("|");
          for (var j = 0; j < patternArray.length; j++) {
            if (stateArray[i2] === "*") {
              for (var t2 in transitions) {
                transitions[t2].push({ pattern: patternArray[j], task: p5 });
              }
            } else {
              transitions[stateArray[i2]].push({ pattern: patternArray[j], task: p5 });
            }
          }
        }
      }
    }
    return transitions;
  },
  stateMachines: {}
};
mhchemParser.stateMachines = {
  //
  // \ce state machines
  //
  //#region ce
  "ce": {
    // main parser
    transitions: mhchemParser.createTransitions({
      "empty": {
        "*": { action_: "output" }
      },
      "else": {
        "0|1|2": { action_: "beginsWithBond=false", revisit: true, toContinue: true }
      },
      "oxidation$": {
        "0": { action_: "oxidation-output" }
      },
      "CMT": {
        "r": { action_: "rdt=", nextState: "rt" },
        "rd": { action_: "rqt=", nextState: "rdt" }
      },
      "arrowUpDown": {
        "0|1|2|as": { action_: ["sb=false", "output", "operator"], nextState: "1" }
      },
      "uprightEntities": {
        "0|1|2": { action_: ["o=", "output"], nextState: "1" }
      },
      "orbital": {
        "0|1|2|3": { action_: "o=", nextState: "o" }
      },
      "->": {
        "0|1|2|3": { action_: "r=", nextState: "r" },
        "a|as": { action_: ["output", "r="], nextState: "r" },
        "*": { action_: ["output", "r="], nextState: "r" }
      },
      "+": {
        "o": { action_: "d= kv", nextState: "d" },
        "d|D": { action_: "d=", nextState: "d" },
        "q": { action_: "d=", nextState: "qd" },
        "qd|qD": { action_: "d=", nextState: "qd" },
        "dq": { action_: ["output", "d="], nextState: "d" },
        "3": { action_: ["sb=false", "output", "operator"], nextState: "0" }
      },
      "amount": {
        "0|2": { action_: "a=", nextState: "a" }
      },
      "pm-operator": {
        "0|1|2|a|as": { action_: ["sb=false", "output", { type_: "operator", option: "\\pm" }], nextState: "0" }
      },
      "operator": {
        "0|1|2|a|as": { action_: ["sb=false", "output", "operator"], nextState: "0" }
      },
      "-$": {
        "o|q": { action_: ["charge or bond", "output"], nextState: "qd" },
        "d": { action_: "d=", nextState: "d" },
        "D": { action_: ["output", { type_: "bond", option: "-" }], nextState: "3" },
        "q": { action_: "d=", nextState: "qd" },
        "qd": { action_: "d=", nextState: "qd" },
        "qD|dq": { action_: ["output", { type_: "bond", option: "-" }], nextState: "3" }
      },
      "-9": {
        "3|o": { action_: ["output", { type_: "insert", option: "hyphen" }], nextState: "3" }
      },
      "- orbital overlap": {
        "o": { action_: ["output", { type_: "insert", option: "hyphen" }], nextState: "2" },
        "d": { action_: ["output", { type_: "insert", option: "hyphen" }], nextState: "2" }
      },
      "-": {
        "0|1|2": { action_: [{ type_: "output", option: 1 }, "beginsWithBond=true", { type_: "bond", option: "-" }], nextState: "3" },
        "3": { action_: { type_: "bond", option: "-" } },
        "a": { action_: ["output", { type_: "insert", option: "hyphen" }], nextState: "2" },
        "as": { action_: [{ type_: "output", option: 2 }, { type_: "bond", option: "-" }], nextState: "3" },
        "b": { action_: "b=" },
        "o": { action_: { type_: "- after o/d", option: false }, nextState: "2" },
        "q": { action_: { type_: "- after o/d", option: false }, nextState: "2" },
        "d|qd|dq": { action_: { type_: "- after o/d", option: true }, nextState: "2" },
        "D|qD|p": { action_: ["output", { type_: "bond", option: "-" }], nextState: "3" }
      },
      "amount2": {
        "1|3": { action_: "a=", nextState: "a" }
      },
      "letters": {
        "0|1|2|3|a|as|b|p|bp|o": { action_: "o=", nextState: "o" },
        "q|dq": { action_: ["output", "o="], nextState: "o" },
        "d|D|qd|qD": { action_: "o after d", nextState: "o" }
      },
      "digits": {
        "o": { action_: "q=", nextState: "q" },
        "d|D": { action_: "q=", nextState: "dq" },
        "q": { action_: ["output", "o="], nextState: "o" },
        "a": { action_: "o=", nextState: "o" }
      },
      "space A": {
        "b|p|bp": {}
      },
      "space": {
        "a": { nextState: "as" },
        "0": { action_: "sb=false" },
        "1|2": { action_: "sb=true" },
        "r|rt|rd|rdt|rdq": { action_: "output", nextState: "0" },
        "*": { action_: ["output", "sb=true"], nextState: "1" }
      },
      "1st-level escape": {
        "1|2": { action_: ["output", { type_: "insert+p1", option: "1st-level escape" }] },
        "*": { action_: ["output", { type_: "insert+p1", option: "1st-level escape" }], nextState: "0" }
      },
      "[(...)]": {
        "r|rt": { action_: "rd=", nextState: "rd" },
        "rd|rdt": { action_: "rq=", nextState: "rdq" }
      },
      "...": {
        "o|d|D|dq|qd|qD": { action_: ["output", { type_: "bond", option: "..." }], nextState: "3" },
        "*": { action_: [{ type_: "output", option: 1 }, { type_: "insert", option: "ellipsis" }], nextState: "1" }
      },
      ". |* ": {
        "*": { action_: ["output", { type_: "insert", option: "addition compound" }], nextState: "1" }
      },
      "state of aggregation $": {
        "*": { action_: ["output", "state of aggregation"], nextState: "1" }
      },
      "{[(": {
        "a|as|o": { action_: ["o=", "output", "parenthesisLevel++"], nextState: "2" },
        "0|1|2|3": { action_: ["o=", "output", "parenthesisLevel++"], nextState: "2" },
        "*": { action_: ["output", "o=", "output", "parenthesisLevel++"], nextState: "2" }
      },
      ")]}": {
        "0|1|2|3|b|p|bp|o": { action_: ["o=", "parenthesisLevel--"], nextState: "o" },
        "a|as|d|D|q|qd|qD|dq": { action_: ["output", "o=", "parenthesisLevel--"], nextState: "o" }
      },
      ", ": {
        "*": { action_: ["output", "comma"], nextState: "0" }
      },
      "^_": {
        // ^ and _ without a sensible argument
        "*": {}
      },
      "^{(...)}|^($...$)": {
        "0|1|2|as": { action_: "b=", nextState: "b" },
        "p": { action_: "b=", nextState: "bp" },
        "3|o": { action_: "d= kv", nextState: "D" },
        "q": { action_: "d=", nextState: "qD" },
        "d|D|qd|qD|dq": { action_: ["output", "d="], nextState: "D" }
      },
      "^a|^\\x{}{}|^\\x{}|^\\x|'": {
        "0|1|2|as": { action_: "b=", nextState: "b" },
        "p": { action_: "b=", nextState: "bp" },
        "3|o": { action_: "d= kv", nextState: "d" },
        "q": { action_: "d=", nextState: "qd" },
        "d|qd|D|qD": { action_: "d=" },
        "dq": { action_: ["output", "d="], nextState: "d" }
      },
      "_{(state of aggregation)}$": {
        "d|D|q|qd|qD|dq": { action_: ["output", "q="], nextState: "q" }
      },
      "_{(...)}|_($...$)|_9|_\\x{}{}|_\\x{}|_\\x": {
        "0|1|2|as": { action_: "p=", nextState: "p" },
        "b": { action_: "p=", nextState: "bp" },
        "3|o": { action_: "q=", nextState: "q" },
        "d|D": { action_: "q=", nextState: "dq" },
        "q|qd|qD|dq": { action_: ["output", "q="], nextState: "q" }
      },
      "=<>": {
        "0|1|2|3|a|as|o|q|d|D|qd|qD|dq": { action_: [{ type_: "output", option: 2 }, "bond"], nextState: "3" }
      },
      "#": {
        "0|1|2|3|a|as|o": { action_: [{ type_: "output", option: 2 }, { type_: "bond", option: "#" }], nextState: "3" }
      },
      "{}": {
        "*": { action_: { type_: "output", option: 1 }, nextState: "1" }
      },
      "{...}": {
        "0|1|2|3|a|as|b|p|bp": { action_: "o=", nextState: "o" },
        "o|d|D|q|qd|qD|dq": { action_: ["output", "o="], nextState: "o" }
      },
      "$...$": {
        "a": { action_: "a=" },
        // 2$n$
        "0|1|2|3|as|b|p|bp|o": { action_: "o=", nextState: "o" },
        // not 'amount'
        "as|o": { action_: "o=" },
        "q|d|D|qd|qD|dq": { action_: ["output", "o="], nextState: "o" }
      },
      "\\bond{(...)}": {
        "*": { action_: [{ type_: "output", option: 2 }, "bond"], nextState: "3" }
      },
      "\\frac{(...)}": {
        "*": { action_: [{ type_: "output", option: 1 }, "frac-output"], nextState: "3" }
      },
      "\\overset{(...)}": {
        "*": { action_: [{ type_: "output", option: 2 }, "overset-output"], nextState: "3" }
      },
      "\\underset{(...)}": {
        "*": { action_: [{ type_: "output", option: 2 }, "underset-output"], nextState: "3" }
      },
      "\\underbrace{(...)}": {
        "*": { action_: [{ type_: "output", option: 2 }, "underbrace-output"], nextState: "3" }
      },
      "\\color{(...)}{(...)}1|\\color(...){(...)}2": {
        "*": { action_: [{ type_: "output", option: 2 }, "color-output"], nextState: "3" }
      },
      "\\color{(...)}0": {
        "*": { action_: [{ type_: "output", option: 2 }, "color0-output"] }
      },
      "\\ce{(...)}": {
        "*": { action_: [{ type_: "output", option: 2 }, "ce"], nextState: "3" }
      },
      "\\,": {
        "*": { action_: [{ type_: "output", option: 1 }, "copy"], nextState: "1" }
      },
      "\\x{}{}|\\x{}|\\x": {
        "0|1|2|3|a|as|b|p|bp|o|c0": { action_: ["o=", "output"], nextState: "3" },
        "*": { action_: ["output", "o=", "output"], nextState: "3" }
      },
      "others": {
        "*": { action_: [{ type_: "output", option: 1 }, "copy"], nextState: "3" }
      },
      "else2": {
        "a": { action_: "a to o", nextState: "o", revisit: true },
        "as": { action_: ["output", "sb=true"], nextState: "1", revisit: true },
        "r|rt|rd|rdt|rdq": { action_: ["output"], nextState: "0", revisit: true },
        "*": { action_: ["output", "copy"], nextState: "3" }
      }
    }),
    actions: {
      "o after d": function(buffer2, m2) {
        var ret;
        if ((buffer2.d || "").match(/^[0-9]+$/)) {
          var tmp = buffer2.d;
          buffer2.d = void 0;
          ret = this["output"](buffer2);
          buffer2.b = tmp;
        } else {
          ret = this["output"](buffer2);
        }
        mhchemParser.actions["o="](buffer2, m2);
        return ret;
      },
      "d= kv": function(buffer2, m2) {
        buffer2.d = m2;
        buffer2.dType = "kv";
      },
      "charge or bond": function(buffer2, m2) {
        if (buffer2["beginsWithBond"]) {
          var ret = [];
          mhchemParser.concatArray(ret, this["output"](buffer2));
          mhchemParser.concatArray(ret, mhchemParser.actions["bond"](buffer2, m2, "-"));
          return ret;
        } else {
          buffer2.d = m2;
        }
      },
      "- after o/d": function(buffer2, m2, isAfterD) {
        var c1 = mhchemParser.patterns.match_("orbital", buffer2.o || "");
        var c2 = mhchemParser.patterns.match_("one lowercase greek letter $", buffer2.o || "");
        var c3 = mhchemParser.patterns.match_("one lowercase latin letter $", buffer2.o || "");
        var c4 = mhchemParser.patterns.match_("$one lowercase latin letter$ $", buffer2.o || "");
        var hyphenFollows = m2 === "-" && (c1 && c1.remainder === "" || c2 || c3 || c4);
        if (hyphenFollows && !buffer2.a && !buffer2.b && !buffer2.p && !buffer2.d && !buffer2.q && !c1 && c3) {
          buffer2.o = "$" + buffer2.o + "$";
        }
        var ret = [];
        if (hyphenFollows) {
          mhchemParser.concatArray(ret, this["output"](buffer2));
          ret.push({ type_: "hyphen" });
        } else {
          c1 = mhchemParser.patterns.match_("digits", buffer2.d || "");
          if (isAfterD && c1 && c1.remainder === "") {
            mhchemParser.concatArray(ret, mhchemParser.actions["d="](buffer2, m2));
            mhchemParser.concatArray(ret, this["output"](buffer2));
          } else {
            mhchemParser.concatArray(ret, this["output"](buffer2));
            mhchemParser.concatArray(ret, mhchemParser.actions["bond"](buffer2, m2, "-"));
          }
        }
        return ret;
      },
      "a to o": function(buffer2) {
        buffer2.o = buffer2.a;
        buffer2.a = void 0;
      },
      "sb=true": function(buffer2) {
        buffer2.sb = true;
      },
      "sb=false": function(buffer2) {
        buffer2.sb = false;
      },
      "beginsWithBond=true": function(buffer2) {
        buffer2["beginsWithBond"] = true;
      },
      "beginsWithBond=false": function(buffer2) {
        buffer2["beginsWithBond"] = false;
      },
      "parenthesisLevel++": function(buffer2) {
        buffer2["parenthesisLevel"]++;
      },
      "parenthesisLevel--": function(buffer2) {
        buffer2["parenthesisLevel"]--;
      },
      "state of aggregation": function(buffer2, m2) {
        return { type_: "state of aggregation", p1: mhchemParser.go(m2, "o") };
      },
      "comma": function(buffer2, m2) {
        var a2 = m2.replace(/\s*$/, "");
        var withSpace = a2 !== m2;
        if (withSpace && buffer2["parenthesisLevel"] === 0) {
          return { type_: "comma enumeration L", p1: a2 };
        } else {
          return { type_: "comma enumeration M", p1: a2 };
        }
      },
      "output": function(buffer2, m2, entityFollows) {
        var ret;
        if (!buffer2.r) {
          ret = [];
          if (!buffer2.a && !buffer2.b && !buffer2.p && !buffer2.o && !buffer2.q && !buffer2.d && !entityFollows) {
          } else {
            if (buffer2.sb) {
              ret.push({ type_: "entitySkip" });
            }
            if (!buffer2.o && !buffer2.q && !buffer2.d && !buffer2.b && !buffer2.p && entityFollows !== 2) {
              buffer2.o = buffer2.a;
              buffer2.a = void 0;
            } else if (!buffer2.o && !buffer2.q && !buffer2.d && (buffer2.b || buffer2.p)) {
              buffer2.o = buffer2.a;
              buffer2.d = buffer2.b;
              buffer2.q = buffer2.p;
              buffer2.a = buffer2.b = buffer2.p = void 0;
            } else {
              if (buffer2.o && buffer2.dType === "kv" && mhchemParser.patterns.match_("d-oxidation$", buffer2.d || "")) {
                buffer2.dType = "oxidation";
              } else if (buffer2.o && buffer2.dType === "kv" && !buffer2.q) {
                buffer2.dType = void 0;
              }
            }
            ret.push({
              type_: "chemfive",
              a: mhchemParser.go(buffer2.a, "a"),
              b: mhchemParser.go(buffer2.b, "bd"),
              p: mhchemParser.go(buffer2.p, "pq"),
              o: mhchemParser.go(buffer2.o, "o"),
              q: mhchemParser.go(buffer2.q, "pq"),
              d: mhchemParser.go(buffer2.d, buffer2.dType === "oxidation" ? "oxidation" : "bd"),
              dType: buffer2.dType
            });
          }
        } else {
          var rd;
          if (buffer2.rdt === "M") {
            rd = mhchemParser.go(buffer2.rd, "tex-math");
          } else if (buffer2.rdt === "T") {
            rd = [{ type_: "text", p1: buffer2.rd || "" }];
          } else {
            rd = mhchemParser.go(buffer2.rd);
          }
          var rq;
          if (buffer2.rqt === "M") {
            rq = mhchemParser.go(buffer2.rq, "tex-math");
          } else if (buffer2.rqt === "T") {
            rq = [{ type_: "text", p1: buffer2.rq || "" }];
          } else {
            rq = mhchemParser.go(buffer2.rq);
          }
          ret = {
            type_: "arrow",
            r: buffer2.r,
            rd,
            rq
          };
        }
        for (var p5 in buffer2) {
          if (p5 !== "parenthesisLevel" && p5 !== "beginsWithBond") {
            delete buffer2[p5];
          }
        }
        return ret;
      },
      "oxidation-output": function(buffer2, m2) {
        var ret = ["{"];
        mhchemParser.concatArray(ret, mhchemParser.go(m2, "oxidation"));
        ret.push("}");
        return ret;
      },
      "frac-output": function(buffer2, m2) {
        return { type_: "frac-ce", p1: mhchemParser.go(m2[0]), p2: mhchemParser.go(m2[1]) };
      },
      "overset-output": function(buffer2, m2) {
        return { type_: "overset", p1: mhchemParser.go(m2[0]), p2: mhchemParser.go(m2[1]) };
      },
      "underset-output": function(buffer2, m2) {
        return { type_: "underset", p1: mhchemParser.go(m2[0]), p2: mhchemParser.go(m2[1]) };
      },
      "underbrace-output": function(buffer2, m2) {
        return { type_: "underbrace", p1: mhchemParser.go(m2[0]), p2: mhchemParser.go(m2[1]) };
      },
      "color-output": function(buffer2, m2) {
        return { type_: "color", color1: m2[0], color2: mhchemParser.go(m2[1]) };
      },
      "r=": function(buffer2, m2) {
        buffer2.r = m2;
      },
      "rdt=": function(buffer2, m2) {
        buffer2.rdt = m2;
      },
      "rd=": function(buffer2, m2) {
        buffer2.rd = m2;
      },
      "rqt=": function(buffer2, m2) {
        buffer2.rqt = m2;
      },
      "rq=": function(buffer2, m2) {
        buffer2.rq = m2;
      },
      "operator": function(buffer2, m2, p1) {
        return { type_: "operator", kind_: p1 || m2 };
      }
    }
  },
  "a": {
    transitions: mhchemParser.createTransitions({
      "empty": {
        "*": {}
      },
      "1/2$": {
        "0": { action_: "1/2" }
      },
      "else": {
        "0": { nextState: "1", revisit: true }
      },
      "$(...)$": {
        "*": { action_: "tex-math tight", nextState: "1" }
      },
      ",": {
        "*": { action_: { type_: "insert", option: "commaDecimal" } }
      },
      "else2": {
        "*": { action_: "copy" }
      }
    }),
    actions: {}
  },
  "o": {
    transitions: mhchemParser.createTransitions({
      "empty": {
        "*": {}
      },
      "1/2$": {
        "0": { action_: "1/2" }
      },
      "else": {
        "0": { nextState: "1", revisit: true }
      },
      "letters": {
        "*": { action_: "rm" }
      },
      "\\ca": {
        "*": { action_: { type_: "insert", option: "circa" } }
      },
      "\\x{}{}|\\x{}|\\x": {
        "*": { action_: "copy" }
      },
      "${(...)}$|$(...)$": {
        "*": { action_: "tex-math" }
      },
      "{(...)}": {
        "*": { action_: "{text}" }
      },
      "else2": {
        "*": { action_: "copy" }
      }
    }),
    actions: {}
  },
  "text": {
    transitions: mhchemParser.createTransitions({
      "empty": {
        "*": { action_: "output" }
      },
      "{...}": {
        "*": { action_: "text=" }
      },
      "${(...)}$|$(...)$": {
        "*": { action_: "tex-math" }
      },
      "\\greek": {
        "*": { action_: ["output", "rm"] }
      },
      "\\,|\\x{}{}|\\x{}|\\x": {
        "*": { action_: ["output", "copy"] }
      },
      "else": {
        "*": { action_: "text=" }
      }
    }),
    actions: {
      "output": function(buffer2) {
        if (buffer2.text_) {
          var ret = { type_: "text", p1: buffer2.text_ };
          for (var p5 in buffer2) {
            delete buffer2[p5];
          }
          return ret;
        }
      }
    }
  },
  "pq": {
    transitions: mhchemParser.createTransitions({
      "empty": {
        "*": {}
      },
      "state of aggregation $": {
        "*": { action_: "state of aggregation" }
      },
      "i$": {
        "0": { nextState: "!f", revisit: true }
      },
      "(KV letters),": {
        "0": { action_: "rm", nextState: "0" }
      },
      "formula$": {
        "0": { nextState: "f", revisit: true }
      },
      "1/2$": {
        "0": { action_: "1/2" }
      },
      "else": {
        "0": { nextState: "!f", revisit: true }
      },
      "${(...)}$|$(...)$": {
        "*": { action_: "tex-math" }
      },
      "{(...)}": {
        "*": { action_: "text" }
      },
      "a-z": {
        "f": { action_: "tex-math" }
      },
      "letters": {
        "*": { action_: "rm" }
      },
      "-9.,9": {
        "*": { action_: "9,9" }
      },
      ",": {
        "*": { action_: { type_: "insert+p1", option: "comma enumeration S" } }
      },
      "\\color{(...)}{(...)}1|\\color(...){(...)}2": {
        "*": { action_: "color-output" }
      },
      "\\color{(...)}0": {
        "*": { action_: "color0-output" }
      },
      "\\ce{(...)}": {
        "*": { action_: "ce" }
      },
      "\\,|\\x{}{}|\\x{}|\\x": {
        "*": { action_: "copy" }
      },
      "else2": {
        "*": { action_: "copy" }
      }
    }),
    actions: {
      "state of aggregation": function(buffer2, m2) {
        return { type_: "state of aggregation subscript", p1: mhchemParser.go(m2, "o") };
      },
      "color-output": function(buffer2, m2) {
        return { type_: "color", color1: m2[0], color2: mhchemParser.go(m2[1], "pq") };
      }
    }
  },
  "bd": {
    transitions: mhchemParser.createTransitions({
      "empty": {
        "*": {}
      },
      "x$": {
        "0": { nextState: "!f", revisit: true }
      },
      "formula$": {
        "0": { nextState: "f", revisit: true }
      },
      "else": {
        "0": { nextState: "!f", revisit: true }
      },
      "-9.,9 no missing 0": {
        "*": { action_: "9,9" }
      },
      ".": {
        "*": { action_: { type_: "insert", option: "electron dot" } }
      },
      "a-z": {
        "f": { action_: "tex-math" }
      },
      "x": {
        "*": { action_: { type_: "insert", option: "KV x" } }
      },
      "letters": {
        "*": { action_: "rm" }
      },
      "'": {
        "*": { action_: { type_: "insert", option: "prime" } }
      },
      "${(...)}$|$(...)$": {
        "*": { action_: "tex-math" }
      },
      "{(...)}": {
        "*": { action_: "text" }
      },
      "\\color{(...)}{(...)}1|\\color(...){(...)}2": {
        "*": { action_: "color-output" }
      },
      "\\color{(...)}0": {
        "*": { action_: "color0-output" }
      },
      "\\ce{(...)}": {
        "*": { action_: "ce" }
      },
      "\\,|\\x{}{}|\\x{}|\\x": {
        "*": { action_: "copy" }
      },
      "else2": {
        "*": { action_: "copy" }
      }
    }),
    actions: {
      "color-output": function(buffer2, m2) {
        return { type_: "color", color1: m2[0], color2: mhchemParser.go(m2[1], "bd") };
      }
    }
  },
  "oxidation": {
    transitions: mhchemParser.createTransitions({
      "empty": {
        "*": {}
      },
      "roman numeral": {
        "*": { action_: "roman-numeral" }
      },
      "${(...)}$|$(...)$": {
        "*": { action_: "tex-math" }
      },
      "else": {
        "*": { action_: "copy" }
      }
    }),
    actions: {
      "roman-numeral": function(buffer2, m2) {
        return { type_: "roman numeral", p1: m2 || "" };
      }
    }
  },
  "tex-math": {
    transitions: mhchemParser.createTransitions({
      "empty": {
        "*": { action_: "output" }
      },
      "\\ce{(...)}": {
        "*": { action_: ["output", "ce"] }
      },
      "{...}|\\,|\\x{}{}|\\x{}|\\x": {
        "*": { action_: "o=" }
      },
      "else": {
        "*": { action_: "o=" }
      }
    }),
    actions: {
      "output": function(buffer2) {
        if (buffer2.o) {
          var ret = { type_: "tex-math", p1: buffer2.o };
          for (var p5 in buffer2) {
            delete buffer2[p5];
          }
          return ret;
        }
      }
    }
  },
  "tex-math tight": {
    transitions: mhchemParser.createTransitions({
      "empty": {
        "*": { action_: "output" }
      },
      "\\ce{(...)}": {
        "*": { action_: ["output", "ce"] }
      },
      "{...}|\\,|\\x{}{}|\\x{}|\\x": {
        "*": { action_: "o=" }
      },
      "-|+": {
        "*": { action_: "tight operator" }
      },
      "else": {
        "*": { action_: "o=" }
      }
    }),
    actions: {
      "tight operator": function(buffer2, m2) {
        buffer2.o = (buffer2.o || "") + "{" + m2 + "}";
      },
      "output": function(buffer2) {
        if (buffer2.o) {
          var ret = { type_: "tex-math", p1: buffer2.o };
          for (var p5 in buffer2) {
            delete buffer2[p5];
          }
          return ret;
        }
      }
    }
  },
  "9,9": {
    transitions: mhchemParser.createTransitions({
      "empty": {
        "*": {}
      },
      ",": {
        "*": { action_: "comma" }
      },
      "else": {
        "*": { action_: "copy" }
      }
    }),
    actions: {
      "comma": function() {
        return { type_: "commaDecimal" };
      }
    }
  },
  //#endregion
  //
  // \pu state machines
  //
  //#region pu
  "pu": {
    transitions: mhchemParser.createTransitions({
      "empty": {
        "*": { action_: "output" }
      },
      "space$": {
        "*": { action_: ["output", "space"] }
      },
      "{[(|)]}": {
        "0|a": { action_: "copy" }
      },
      "(-)(9)^(-9)": {
        "0": { action_: "number^", nextState: "a" }
      },
      "(-)(9.,9)(e)(99)": {
        "0": { action_: "enumber", nextState: "a" }
      },
      "space": {
        "0|a": {}
      },
      "pm-operator": {
        "0|a": { action_: { type_: "operator", option: "\\pm" }, nextState: "0" }
      },
      "operator": {
        "0|a": { action_: "copy", nextState: "0" }
      },
      "//": {
        "d": { action_: "o=", nextState: "/" }
      },
      "/": {
        "d": { action_: "o=", nextState: "/" }
      },
      "{...}|else": {
        "0|d": { action_: "d=", nextState: "d" },
        "a": { action_: ["space", "d="], nextState: "d" },
        "/|q": { action_: "q=", nextState: "q" }
      }
    }),
    actions: {
      "enumber": function(buffer2, m2) {
        var ret = [];
        if (m2[0] === "+-" || m2[0] === "+/-") {
          ret.push("\\pm ");
        } else if (m2[0]) {
          ret.push(m2[0]);
        }
        if (m2[1]) {
          mhchemParser.concatArray(ret, mhchemParser.go(m2[1], "pu-9,9"));
          if (m2[2]) {
            if (m2[2].match(/[,.]/)) {
              mhchemParser.concatArray(ret, mhchemParser.go(m2[2], "pu-9,9"));
            } else {
              ret.push(m2[2]);
            }
          }
          m2[3] = m2[4] || m2[3];
          if (m2[3]) {
            m2[3] = m2[3].trim();
            if (m2[3] === "e" || m2[3].substr(0, 1) === "*") {
              ret.push({ type_: "cdot" });
            } else {
              ret.push({ type_: "times" });
            }
          }
        }
        if (m2[3]) {
          ret.push("10^{" + m2[5] + "}");
        }
        return ret;
      },
      "number^": function(buffer2, m2) {
        var ret = [];
        if (m2[0] === "+-" || m2[0] === "+/-") {
          ret.push("\\pm ");
        } else if (m2[0]) {
          ret.push(m2[0]);
        }
        mhchemParser.concatArray(ret, mhchemParser.go(m2[1], "pu-9,9"));
        ret.push("^{" + m2[2] + "}");
        return ret;
      },
      "operator": function(buffer2, m2, p1) {
        return { type_: "operator", kind_: p1 || m2 };
      },
      "space": function() {
        return { type_: "pu-space-1" };
      },
      "output": function(buffer2) {
        var ret;
        var md = mhchemParser.patterns.match_("{(...)}", buffer2.d || "");
        if (md && md.remainder === "") {
          buffer2.d = md.match_;
        }
        var mq = mhchemParser.patterns.match_("{(...)}", buffer2.q || "");
        if (mq && mq.remainder === "") {
          buffer2.q = mq.match_;
        }
        if (buffer2.d) {
          buffer2.d = buffer2.d.replace(/\u00B0C|\^oC|\^{o}C/g, "{}^{\\circ}C");
          buffer2.d = buffer2.d.replace(/\u00B0F|\^oF|\^{o}F/g, "{}^{\\circ}F");
        }
        if (buffer2.q) {
          buffer2.q = buffer2.q.replace(/\u00B0C|\^oC|\^{o}C/g, "{}^{\\circ}C");
          buffer2.q = buffer2.q.replace(/\u00B0F|\^oF|\^{o}F/g, "{}^{\\circ}F");
          var b5 = {
            d: mhchemParser.go(buffer2.d, "pu"),
            q: mhchemParser.go(buffer2.q, "pu")
          };
          if (buffer2.o === "//") {
            ret = { type_: "pu-frac", p1: b5.d, p2: b5.q };
          } else {
            ret = b5.d;
            if (b5.d.length > 1 || b5.q.length > 1) {
              ret.push({ type_: " / " });
            } else {
              ret.push({ type_: "/" });
            }
            mhchemParser.concatArray(ret, b5.q);
          }
        } else {
          ret = mhchemParser.go(buffer2.d, "pu-2");
        }
        for (var p5 in buffer2) {
          delete buffer2[p5];
        }
        return ret;
      }
    }
  },
  "pu-2": {
    transitions: mhchemParser.createTransitions({
      "empty": {
        "*": { action_: "output" }
      },
      "*": {
        "*": { action_: ["output", "cdot"], nextState: "0" }
      },
      "\\x": {
        "*": { action_: "rm=" }
      },
      "space": {
        "*": { action_: ["output", "space"], nextState: "0" }
      },
      "^{(...)}|^(-1)": {
        "1": { action_: "^(-1)" }
      },
      "-9.,9": {
        "0": { action_: "rm=", nextState: "0" },
        "1": { action_: "^(-1)", nextState: "0" }
      },
      "{...}|else": {
        "*": { action_: "rm=", nextState: "1" }
      }
    }),
    actions: {
      "cdot": function() {
        return { type_: "tight cdot" };
      },
      "^(-1)": function(buffer2, m2) {
        buffer2.rm += "^{" + m2 + "}";
      },
      "space": function() {
        return { type_: "pu-space-2" };
      },
      "output": function(buffer2) {
        var ret = [];
        if (buffer2.rm) {
          var mrm = mhchemParser.patterns.match_("{(...)}", buffer2.rm || "");
          if (mrm && mrm.remainder === "") {
            ret = mhchemParser.go(mrm.match_, "pu");
          } else {
            ret = { type_: "rm", p1: buffer2.rm };
          }
        }
        for (var p5 in buffer2) {
          delete buffer2[p5];
        }
        return ret;
      }
    }
  },
  "pu-9,9": {
    transitions: mhchemParser.createTransitions({
      "empty": {
        "0": { action_: "output-0" },
        "o": { action_: "output-o" }
      },
      ",": {
        "0": { action_: ["output-0", "comma"], nextState: "o" }
      },
      ".": {
        "0": { action_: ["output-0", "copy"], nextState: "o" }
      },
      "else": {
        "*": { action_: "text=" }
      }
    }),
    actions: {
      "comma": function() {
        return { type_: "commaDecimal" };
      },
      "output-0": function(buffer2) {
        var ret = [];
        buffer2.text_ = buffer2.text_ || "";
        if (buffer2.text_.length > 4) {
          var a2 = buffer2.text_.length % 3;
          if (a2 === 0) {
            a2 = 3;
          }
          for (var i2 = buffer2.text_.length - 3; i2 > 0; i2 -= 3) {
            ret.push(buffer2.text_.substr(i2, 3));
            ret.push({ type_: "1000 separator" });
          }
          ret.push(buffer2.text_.substr(0, a2));
          ret.reverse();
        } else {
          ret.push(buffer2.text_);
        }
        for (var p5 in buffer2) {
          delete buffer2[p5];
        }
        return ret;
      },
      "output-o": function(buffer2) {
        var ret = [];
        buffer2.text_ = buffer2.text_ || "";
        if (buffer2.text_.length > 4) {
          var a2 = buffer2.text_.length - 3;
          for (var i2 = 0; i2 < a2; i2 += 3) {
            ret.push(buffer2.text_.substr(i2, 3));
            ret.push({ type_: "1000 separator" });
          }
          ret.push(buffer2.text_.substr(i2));
        } else {
          ret.push(buffer2.text_);
        }
        for (var p5 in buffer2) {
          delete buffer2[p5];
        }
        return ret;
      }
    }
  }
  //#endregion
};
var texify = {
  go: function(input3, isInner) {
    if (!input3) {
      return "";
    }
    var res = "";
    var cee = false;
    for (var i2 = 0; i2 < input3.length; i2++) {
      var inputi = input3[i2];
      if (typeof inputi === "string") {
        res += inputi;
      } else {
        res += texify._go2(inputi);
        if (inputi.type_ === "1st-level escape") {
          cee = true;
        }
      }
    }
    if (!isInner && !cee && res) {
      res = "{" + res + "}";
    }
    return res;
  },
  _goInner: function(input3) {
    if (!input3) {
      return input3;
    }
    return texify.go(input3, true);
  },
  _go2: function(buf) {
    var res;
    switch (buf.type_) {
      case "chemfive":
        res = "";
        var b5 = {
          a: texify._goInner(buf.a),
          b: texify._goInner(buf.b),
          p: texify._goInner(buf.p),
          o: texify._goInner(buf.o),
          q: texify._goInner(buf.q),
          d: texify._goInner(buf.d)
        };
        if (b5.a) {
          if (b5.a.match(/^[+\-]/)) {
            b5.a = "{" + b5.a + "}";
          }
          res += b5.a + "\\,";
        }
        if (b5.b || b5.p) {
          res += "{\\vphantom{X}}";
          res += "^{\\hphantom{" + (b5.b || "") + "}}_{\\hphantom{" + (b5.p || "") + "}}";
          res += "{\\vphantom{X}}";
          res += "^{\\smash[t]{\\vphantom{2}}\\mathllap{" + (b5.b || "") + "}}";
          res += "_{\\vphantom{2}\\mathllap{\\smash[t]{" + (b5.p || "") + "}}}";
        }
        if (b5.o) {
          if (b5.o.match(/^[+\-]/)) {
            b5.o = "{" + b5.o + "}";
          }
          res += b5.o;
        }
        if (buf.dType === "kv") {
          if (b5.d || b5.q) {
            res += "{\\vphantom{X}}";
          }
          if (b5.d) {
            res += "^{" + b5.d + "}";
          }
          if (b5.q) {
            res += "_{\\smash[t]{" + b5.q + "}}";
          }
        } else if (buf.dType === "oxidation") {
          if (b5.d) {
            res += "{\\vphantom{X}}";
            res += "^{" + b5.d + "}";
          }
          if (b5.q) {
            res += "{\\vphantom{X}}";
            res += "_{\\smash[t]{" + b5.q + "}}";
          }
        } else {
          if (b5.q) {
            res += "{\\vphantom{X}}";
            res += "_{\\smash[t]{" + b5.q + "}}";
          }
          if (b5.d) {
            res += "{\\vphantom{X}}";
            res += "^{" + b5.d + "}";
          }
        }
        break;
      case "rm":
        res = "\\mathrm{" + buf.p1 + "}";
        break;
      case "text":
        if (buf.p1.match(/[\^_]/)) {
          buf.p1 = buf.p1.replace(" ", "~").replace("-", "\\text{-}");
          res = "\\mathrm{" + buf.p1 + "}";
        } else {
          res = "\\text{" + buf.p1 + "}";
        }
        break;
      case "roman numeral":
        res = "\\mathrm{" + buf.p1 + "}";
        break;
      case "state of aggregation":
        res = "\\mskip2mu " + texify._goInner(buf.p1);
        break;
      case "state of aggregation subscript":
        res = "\\mskip1mu " + texify._goInner(buf.p1);
        break;
      case "bond":
        res = texify._getBond(buf.kind_);
        if (!res) {
          throw ["MhchemErrorBond", "mhchem Error. Unknown bond type (" + buf.kind_ + ")"];
        }
        break;
      case "frac":
        var c = "\\frac{" + buf.p1 + "}{" + buf.p2 + "}";
        res = "\\mathchoice{\\textstyle" + c + "}{" + c + "}{" + c + "}{" + c + "}";
        break;
      case "pu-frac":
        var d = "\\frac{" + texify._goInner(buf.p1) + "}{" + texify._goInner(buf.p2) + "}";
        res = "\\mathchoice{\\textstyle" + d + "}{" + d + "}{" + d + "}{" + d + "}";
        break;
      case "tex-math":
        res = buf.p1 + " ";
        break;
      case "frac-ce":
        res = "\\frac{" + texify._goInner(buf.p1) + "}{" + texify._goInner(buf.p2) + "}";
        break;
      case "overset":
        res = "\\overset{" + texify._goInner(buf.p1) + "}{" + texify._goInner(buf.p2) + "}";
        break;
      case "underset":
        res = "\\underset{" + texify._goInner(buf.p1) + "}{" + texify._goInner(buf.p2) + "}";
        break;
      case "underbrace":
        res = "\\underbrace{" + texify._goInner(buf.p1) + "}_{" + texify._goInner(buf.p2) + "}";
        break;
      case "color":
        res = "{\\color{" + buf.color1 + "}{" + texify._goInner(buf.color2) + "}}";
        break;
      case "color0":
        res = "\\color{" + buf.color + "}";
        break;
      case "arrow":
        var b6 = {
          rd: texify._goInner(buf.rd),
          rq: texify._goInner(buf.rq)
        };
        var arrow = "\\x" + texify._getArrow(buf.r);
        if (b6.rq) {
          arrow += "[{" + b6.rq + "}]";
        }
        if (b6.rd) {
          arrow += "{" + b6.rd + "}";
        } else {
          arrow += "{}";
        }
        res = arrow;
        break;
      case "operator":
        res = texify._getOperator(buf.kind_);
        break;
      case "1st-level escape":
        res = buf.p1 + " ";
        break;
      case "space":
        res = " ";
        break;
      case "entitySkip":
        res = "~";
        break;
      case "pu-space-1":
        res = "~";
        break;
      case "pu-space-2":
        res = "\\mkern3mu ";
        break;
      case "1000 separator":
        res = "\\mkern2mu ";
        break;
      case "commaDecimal":
        res = "{,}";
        break;
      case "comma enumeration L":
        res = "{" + buf.p1 + "}\\mkern6mu ";
        break;
      case "comma enumeration M":
        res = "{" + buf.p1 + "}\\mkern3mu ";
        break;
      case "comma enumeration S":
        res = "{" + buf.p1 + "}\\mkern1mu ";
        break;
      case "hyphen":
        res = "\\text{-}";
        break;
      case "addition compound":
        res = "\\,{\\cdot}\\,";
        break;
      case "electron dot":
        res = "\\mkern1mu \\bullet\\mkern1mu ";
        break;
      case "KV x":
        res = "{\\times}";
        break;
      case "prime":
        res = "\\prime ";
        break;
      case "cdot":
        res = "\\cdot ";
        break;
      case "tight cdot":
        res = "\\mkern1mu{\\cdot}\\mkern1mu ";
        break;
      case "times":
        res = "\\times ";
        break;
      case "circa":
        res = "{\\sim}";
        break;
      case "^":
        res = "uparrow";
        break;
      case "v":
        res = "downarrow";
        break;
      case "ellipsis":
        res = "\\ldots ";
        break;
      case "/":
        res = "/";
        break;
      case " / ":
        res = "\\,/\\,";
        break;
      default:
        assertNever(buf);
        throw ["MhchemBugT", "mhchem bug T. Please report."];
    }
    assertString(res);
    return res;
  },
  _getArrow: function(a2) {
    switch (a2) {
      case "->":
        return "rightarrow";
      case "\u2192":
        return "rightarrow";
      case "\u27F6":
        return "rightarrow";
      case "<-":
        return "leftarrow";
      case "<->":
        return "leftrightarrow";
      case "<-->":
        return "rightleftarrows";
      case "<=>":
        return "rightleftharpoons";
      case "\u21CC":
        return "rightleftharpoons";
      case "<=>>":
        return "rightequilibrium";
      case "<<=>":
        return "leftequilibrium";
      default:
        assertNever(a2);
        throw ["MhchemBugT", "mhchem bug T. Please report."];
    }
  },
  _getBond: function(a2) {
    switch (a2) {
      case "-":
        return "{-}";
      case "1":
        return "{-}";
      case "=":
        return "{=}";
      case "2":
        return "{=}";
      case "#":
        return "{\\equiv}";
      case "3":
        return "{\\equiv}";
      case "~":
        return "{\\tripledash}";
      case "~-":
        return "{\\mathrlap{\\raisebox{-.1em}{$-$}}\\raisebox{.1em}{$\\tripledash$}}";
      case "~=":
        return "{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$\\tripledash$}}-}";
      case "~--":
        return "{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$\\tripledash$}}-}";
      case "-~-":
        return "{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$-$}}\\tripledash}";
      case "...":
        return "{{\\cdot}{\\cdot}{\\cdot}}";
      case "....":
        return "{{\\cdot}{\\cdot}{\\cdot}{\\cdot}}";
      case "->":
        return "{\\rightarrow}";
      case "<-":
        return "{\\leftarrow}";
      case "<":
        return "{<}";
      case ">":
        return "{>}";
      default:
        assertNever(a2);
        throw ["MhchemBugT", "mhchem bug T. Please report."];
    }
  },
  _getOperator: function(a2) {
    switch (a2) {
      case "+":
        return " {}+{} ";
      case "-":
        return " {}-{} ";
      case "=":
        return " {}={} ";
      case "<":
        return " {}<{} ";
      case ">":
        return " {}>{} ";
      case "<<":
        return " {}\\ll{} ";
      case ">>":
        return " {}\\gg{} ";
      case "\\pm":
        return " {}\\pm{} ";
      case "\\approx":
        return " {}\\approx{} ";
      case "$\\approx$":
        return " {}\\approx{} ";
      case "v":
        return " \\downarrow{} ";
      case "(v)":
        return " \\downarrow{} ";
      case "^":
        return " \\uparrow{} ";
      case "(^)":
        return " \\uparrow{} ";
      default:
        assertNever(a2);
        throw ["MhchemBugT", "mhchem bug T. Please report."];
    }
  }
};
function assertNever(a2) {
}
function assertString(a2) {
}

// ../../node_modules/array-iterate/lib/index.js
var own15 = {}.hasOwnProperty;
function arrayIterate(values, callbackFn, thisArg) {
  let index4 = -1;
  if (!values) {
    throw new Error("Iterate requires that |this| not be " + values);
  }
  if (!own15.call(values, "length")) {
    throw new Error("Iterate requires that |this| has a `length`");
  }
  if (typeof callbackFn !== "function") {
    throw new TypeError("`callback` must be a function");
  }
  while (++index4 < values.length) {
    if (!(index4 in values)) {
      continue;
    }
    const result = callbackFn.call(thisArg, values[index4], index4, values);
    if (typeof result === "number") {
      if (result < 0) {
        index4 = 0;
      }
      index4 = result - 1;
    }
  }
}

// ../../node_modules/unist-util-modify-children/lib/index.js
function modifyChildren(modifier) {
  return modify;
  function modify(parent2) {
    if (!parent2 || !parent2.children) {
      throw new Error("Missing children in `parent` for `modifier`");
    }
    arrayIterate(parent2.children, iteratee, parent2);
  }
  function iteratee(node3, index4) {
    return modifier(node3, index4, this);
  }
}

// ../myst-transforms/dist/unnest.js
function unnestTransform(tree, parentNodeType, childNodeType) {
  const modify = modifyChildren((node3, index4, parent2) => {
    if (node3.type !== parentNodeType || selectAll(childNodeType, node3).length === 0)
      return;
    const paragraph4 = node3;
    const unnested = [];
    const { children, ...rest } = paragraph4;
    const createTemplate = () => copyNode({ ...rest, children: [] });
    let current2 = createTemplate();
    const pushContent = () => {
      if (current2.children.length > 0) {
        unnested.push(current2);
      }
      current2 = createTemplate();
    };
    children.forEach((child) => {
      if (child.type === childNodeType) {
        const math7 = child;
        pushContent();
        unnested.push(math7);
      } else {
        current2.children.push(child);
      }
    });
    pushContent();
    parent2.children.splice(index4, 1, ...unnested);
    return index4 + unnested.length;
  });
  const parents = selectAll(`*:has(${parentNodeType}:has(${childNodeType}))`, tree);
  parents.forEach((parent2) => {
    modify(parent2);
  });
}

// ../myst-transforms/dist/math.js
var TRANSFORM_NAME = "myst-transforms:math";
var replacements = {
  "\xA0": " "
};
var builtInMacros = {
  "\\mbox": "\\text{#1}"
  // mbox is not supported in KaTeX, this is an OK fallback
};
function transformMathValue(file, node3) {
  let { value } = node3;
  if (!value)
    return void 0;
  Object.entries(replacements).forEach(([from4, to]) => {
    value = value.replace(new RegExp(from4, "g"), to);
  });
  node3.value = value;
}
function labelMathNodes(file, node3) {
  const { value } = node3;
  if (!value)
    return;
  const LABEL = /\\label\{([^}]+)\}/g;
  const match3 = LABEL.exec(value);
  if (!match3)
    return value;
  const label = match3[1];
  const normalized = normalizeLabel(label);
  if (node3.type === "math" && normalized) {
    if (node3.label) {
      fileWarn(file, `Math node is already labeled "${node3.label}" - ignoring inline "\\label{${label}}"`, {
        node: node3,
        source: TRANSFORM_NAME,
        ruleId: RuleId.mathLabelLifted
      });
    } else {
      if (node3.enumerated === false) {
        fileWarn(file, `Labelling an unnumbered math node with "\\label{${label}}"`, {
          node: node3,
          source: TRANSFORM_NAME,
          ruleId: RuleId.mathLabelLifted
        });
      }
      node3.identifier = normalized.identifier;
      node3.label = normalized.label;
      node3.html_id = normalized.html_id;
    }
  } else if (node3.type === "inlineMath") {
    fileWarn(file, `Cannot use "\\label{${label}}" in inline math`, {
      node: node3,
      source: TRANSFORM_NAME,
      ruleId: RuleId.mathLabelLifted
    });
  }
  node3.value = value.replace(LABEL, "").trim();
}
function removeSimpleEquationEnv(file, node3) {
  var _a6, _b, _c, _d2;
  const { value } = node3;
  if (!value)
    return;
  const BEGIN = /\\begin\{equation([*]?)\}/g;
  const END = /\\end\{equation([*]?)\}/g;
  if (((_a6 = value.match(BEGIN)) === null || _a6 === void 0 ? void 0 : _a6.length) !== 1 || ((_b = value.match(END)) === null || _b === void 0 ? void 0 : _b.length) !== 1)
    return;
  if (node3.type === "inlineMath") {
    fileWarn(file, `Unexpected AMS environment in inline math node.`, {
      node: node3,
      note: value,
      source: TRANSFORM_NAME,
      ruleId: RuleId.mathEquationEnvRemoved
    });
    return;
  }
  const beginStar = ((_c = BEGIN.exec(value)) === null || _c === void 0 ? void 0 : _c[1]) === "*";
  const endStar = ((_d2 = END.exec(value)) === null || _d2 === void 0 ? void 0 : _d2[1]) === "*";
  if (beginStar !== endStar) {
    fileWarn(file, `Mismatching begin/end environment numbering`, {
      node: node3,
      note: value,
      source: TRANSFORM_NAME,
      ruleId: RuleId.mathEquationEnvRemoved
    });
    return;
  }
  node3.enumerated = !beginStar;
  node3.value = value.replace(BEGIN, "").replace(END, "").trim();
}
function replaceEqnarray(file, value, node3) {
  if (!value.includes("\\begin{eqnarray}"))
    return value;
  fileWarn(file, "Replacing \\begin{eqnarray} with \\begin{align*}", {
    node: node3,
    note: "Although the standard eqnarray environment is available in LaTeX, it is better to use align or equation+split instead. Within eqnarray, spacing around signs of relation is not the preferred mathematical spacing, and is inconsistent with that spacing as it appears in other environments.",
    source: TRANSFORM_NAME,
    url: "http://anorien.csc.warwick.ac.uk/mirrors/CTAN/macros/latex/required/amsmath/amsldoc.pdf",
    ruleId: RuleId.mathEqnarrayReplaced
  });
  return value.replace(/\\begin{eqnarray}/g, "\\begin{align*}").replace(/\\end{eqnarray}/g, "\\end{align*}").replace(/&=&/g, "&=");
}
function removeWarnings(result, predicate) {
  const { warnings: warnings2, ...rest } = result;
  if (!warnings2)
    return rest;
  const nextWarnings = warnings2.filter(predicate);
  if (nextWarnings.length === 0)
    return rest;
  return {
    ...rest,
    warnings: nextWarnings
  };
}
function tryRender(file, node3, value, opts) {
  const displayMode = node3.type === "math";
  const warnings2 = [];
  let simplifiedMacros = {};
  if (opts === null || opts === void 0 ? void 0 : opts.macros) {
    simplifiedMacros = Object.fromEntries(Object.entries(opts.macros).map(([k, v]) => [k, v.macro]));
  }
  try {
    const html7 = katex.renderToString(value, {
      displayMode,
      output: (opts === null || opts === void 0 ? void 0 : opts.mathML) ? "mathml" : void 0,
      macros: { ...builtInMacros, ...simplifiedMacros },
      strict: (f3, m2) => {
        if (f3 === "newLineInDisplayMode")
          return;
        warnings2.push(`${f3}, ${m2}`);
      }
    });
    if (warnings2.length === 0)
      return { html: html7 };
    return { warnings: warnings2, html: html7 };
  } catch (error) {
    const { message } = error;
    if (message.includes("Expected 'EOF', got '&' at position")) {
      fileWarn(file, "Wrapping with \\begin{align*}", {
        node: node3,
        note: message,
        source: TRANSFORM_NAME,
        ruleId: RuleId.mathAlignmentAdjusted
      });
      const next = `\\begin{align*}
${value}
\\end{align*}`;
      const result = tryRender(file, node3, next, opts);
      if (result.html)
        return result;
    }
    if (message.includes("Unknown column alignment: *")) {
      fileWarn(file, 'Alignment of "*" not supported, using "c"', {
        node: node3,
        note: message,
        source: TRANSFORM_NAME,
        ruleId: RuleId.mathAlignmentAdjusted
      });
      const arrayCentering = /\\begin{array}{((?:\*\{[0-9]+\})c)}/g;
      if (value.match(arrayCentering)) {
        const next = value.replace(arrayCentering, "\\begin{array}{c}");
        const result = tryRender(file, node3, next, opts);
        if (result.html) {
          return removeWarnings(result, (w) => !w.includes("Too few columns specified"));
        }
      }
    }
    return { error: message.replace("KaTeX parse error: ", "") };
  }
}
function renderEquation(file, node3, opts) {
  let value = node3.value;
  if (!value) {
    const message = "No input for math node";
    fileWarn(file, message, {
      node: node3,
      note: node3.value,
      source: TRANSFORM_NAME,
      fatal: true,
      ruleId: RuleId.mathRenders
    });
    node3.error = true;
    node3.message = message;
    return;
  }
  value = replaceEqnarray(file, value, node3);
  const result = tryRender(file, node3, value, opts);
  if (result.html) {
    node3.html = result.html;
  }
  if (result.warnings) {
    result.warnings.forEach((message) => {
      fileWarn(file, message, {
        node: node3,
        note: node3.value,
        source: "KaTeX",
        ruleId: RuleId.mathRenders
      });
    });
  }
  if (result.error) {
    const nodeError = copyNode(node3);
    const match3 = result.error.match(/position ([0-9]+):/);
    if (match3 && nodeError.position) {
      const offset = Number(match3[1]);
      const lines = node3.value.slice(0, offset).split("\n");
      const newLines = lines.length - 1;
      nodeError.position.start.line += newLines;
      if (newLines > 0) {
        nodeError.position.start.column = lines[newLines].length;
      } else {
        nodeError.position.start.column += offset - 1;
      }
    }
    fileError(file, result.error, {
      node: nodeError,
      note: node3.value,
      source: "KaTeX",
      ruleId: RuleId.mathRenders
    });
    node3.error = true;
    node3.message = result.error;
  }
}
function mathNestingTransform(tree, file) {
  const paragraphs = selectAll("paragraph", tree);
  paragraphs.forEach((paragraph4) => {
    if (paragraph4.children.length === 1)
      return;
    paragraph4.children.forEach((child, index4) => {
      var _a6, _b, _c, _d2;
      if (child.type !== "math")
        return;
      const math7 = child;
      const before = paragraph4.children[index4 - 1];
      const after = paragraph4.children[index4 + 1];
      if (index4 === 0) {
        math7.tight = "after";
      } else if (index4 === paragraph4.children.length - 1) {
        math7.tight = "before";
      } else {
        math7.tight = true;
      }
      if ((before === null || before === void 0 ? void 0 : before.type) === "text") {
        before.value = (_b = (_a6 = before.value) === null || _a6 === void 0 ? void 0 : _a6.replace(/\n$/, "")) !== null && _b !== void 0 ? _b : "";
      }
      if ((after === null || after === void 0 ? void 0 : after.type) === "text") {
        after.value = (_d2 = (_c = after.value) === null || _c === void 0 ? void 0 : _c.replace(/^\n/, "")) !== null && _d2 !== void 0 ? _d2 : "";
      }
    });
  });
  unnestTransform(tree, "paragraph", "math");
}
function mathLabelTransform(tree, file) {
  const nodes = selectAll("math,inlineMath", tree);
  nodes.forEach((node3) => {
    transformMathValue(file, node3);
    removeSimpleEquationEnv(file, node3);
    labelMathNodes(file, node3);
  });
}
function subequationTransform(tree, file) {
  const nodes = selectAll("mathGroup > math", tree);
  nodes.forEach((node3) => {
    node3.kind = "subequation";
  });
}
function mathTransform(tree, file, opts) {
  const nodes = selectAll("math,inlineMath", tree);
  nodes.forEach((node3) => {
    renderEquation(file, node3, opts);
  });
}
var mathPlugin = (opts) => (tree, file) => {
  mathTransform(tree, file, opts);
};

// ../myst-transforms/dist/mathSimplifications.js
var TEXT_REPLACEMENTS = {
  "\\pm": "\xB1",
  "\\circ": "\u2218",
  "\\degree": "\xB0"
};
var SYM_REPLACEMENTS = {
  "\\star": "\u22C6",
  "\\times": "\xD7",
  "\\alpha": "\u03B1",
  "\\beta": "\u03B2",
  "\\Gamma": "\u0393",
  "\\gamma": "\u03B3",
  "\\Delta": "\u0394",
  "\\delta": "\u03B4",
  "\\epsilon": "\u03B5",
  "\\zeta": "\u03B6",
  "\\eta": "\u03B7",
  "\\Theta": "\u0398",
  "\\theta": "\u03B8",
  "\\vartheta": "\u03D1",
  "\\iota": "\u03B9",
  "\\kappa": "\u03BA",
  "\\Lambda": "\u039B",
  "\\lambda": "\u03BB",
  "\\mu": "\u03BC",
  "\\nu": "\u03BD",
  "\\Xi": "\u039E",
  "\\xi": "\u03BE",
  "\\Pi": "\u03A0",
  "\\pi": "\u03C0",
  "\\rho": "\u03C1",
  "\\Sigma": "\u03A3",
  "\\sigma": "\u03C3",
  "\\tau": "\u03C4",
  "\\Upsilon": "\u03A5",
  "\\upsilon": "\u03C5",
  "\\Phi": "\u03A6",
  "\\phi": "\u03D5",
  "\\varphi": "\u03C6",
  "\\chi": "\u03C7",
  "\\Psi": "\u03A8",
  "\\psi": "\u03C8",
  "\\Omega": "\u03A9",
  "\\omega": "\u03C9",
  "\\partial": "\u2202",
  "\\infty": "\u221E",
  "\\propto": "\u221D",
  "\\iinfin": "\u29DC",
  "\\tieinfty": "\u29DD",
  "\\acidfree": "\u267E",
  "\\approx": "\u2248",
  "\\neq": "\u2260",
  "\\cdot": "\u2022",
  "\\geq": "\u2265",
  "\\leq": "\u2264"
};
function getReplacement(symbol, options) {
  if (!symbol)
    return void 0;
  if ((options === null || options === void 0 ? void 0 : options.replaceText) !== false && symbol.match(/^([a-zA-Z]+)$/))
    return symbol;
  if ((options === null || options === void 0 ? void 0 : options.replaceNumber) !== false && symbol.match(/^([0-9+-]+)$/))
    return symbol;
  if ((options === null || options === void 0 ? void 0 : options.replaceText) !== false && TEXT_REPLACEMENTS[symbol])
    return TEXT_REPLACEMENTS[symbol];
  if ((options === null || options === void 0 ? void 0 : options.replaceSymbol) !== false && SYM_REPLACEMENTS[symbol])
    return SYM_REPLACEMENTS[symbol];
  return void 0;
}
function replaceSymbol(node3, options) {
  const match3 = node3.value.match(/^(\\[a-zA-Z]+)$/);
  if (!match3)
    return false;
  const text7 = getReplacement(match3[1], options);
  if (!text7)
    return false;
  node3.type = "text";
  node3.value = text7;
  return true;
}
function replaceDirectSubSuperScripts(node3, options) {
  const match3 = node3.value.match(/^(\^|_)(?:(?:\{(\\?[a-zA-Z0-9+-]+)\})|(\\?[a-zA-Z0-9+-]+))$/);
  if (!match3)
    return false;
  const script = match3[1] === "^" ? "superscript" : "subscript";
  const value = getReplacement(match3[2] || match3[3], options);
  if (!value)
    return false;
  if (value === "\u2218" && script === "superscript") {
    node3.type = "text";
    node3.value = "\xB0";
    return true;
  }
  if ((options === null || options === void 0 ? void 0 : options.replaceSymbol) === false)
    return false;
  node3.type = script;
  node3.children = [{ type: "text", value }];
  delete node3.value;
  return true;
}
function replaceNumberedSubSuperScripts(node3, options) {
  const match3 = node3.value.match(/^([+-]?[\d.]+)(\^|_)(?:(?:\{([+-]?[\d.]+)\})|([+-]?[\d.]+))$/);
  if (!match3)
    return false;
  const first2 = match3[1];
  const second = match3[3] || match3[4];
  const script = match3[2] === "^" ? "superscript" : "subscript";
  node3.type = "span";
  node3.children = [
    { type: "text", value: first2 },
    { type: script, children: [{ type: "text", value: second }] }
  ];
  delete node3.value;
  return true;
}
function replaceNumber(node3, options) {
  const match3 = node3.value.match(/^([+-]?[0-9.]+)$/);
  if (!match3)
    return false;
  const text7 = match3[1];
  if (!text7)
    return false;
  node3.type = "text";
  node3.value = text7;
  return true;
}
function inlineMathSimplificationTransform(mdast2, options) {
  const math7 = selectAll("inlineMath", mdast2);
  math7.forEach((node3) => {
    if (replaceSymbol(node3, options)) {
      return;
    }
    if ((options === null || options === void 0 ? void 0 : options.replaceScripts) !== false && replaceDirectSubSuperScripts(node3, options)) {
      return;
    }
    if ((options === null || options === void 0 ? void 0 : options.replaceNumber) !== false && replaceNumberedSubSuperScripts(node3, options)) {
      return;
    }
    if ((options === null || options === void 0 ? void 0 : options.replaceNumber) !== false && replaceNumber(node3, options)) {
      return;
    }
  });
}
var inlineMathSimplificationPlugin = (opts) => (tree) => {
  inlineMathSimplificationTransform(tree, opts);
};

// ../myst-transforms/dist/blocks.js
function nestBlock(tree) {
  const start = tree.children.findIndex((child) => child.type !== "block");
  if (start === -1)
    return;
  const end = tree.children.findIndex((child, i2) => child.type === "block" && i2 > start);
  if (end === -1) {
    tree.children = [
      ...tree.children.slice(0, start),
      { type: "block", children: tree.children.slice(start) }
    ];
    return;
  }
  tree.children = [
    ...tree.children.slice(0, start),
    { type: "block", children: tree.children.slice(start, end) },
    ...tree.children.slice(end)
  ];
  nestBlock(tree);
}
function blockNestingTransform(tree) {
  nestBlock(tree);
}
var TRANSFORM_SOURCE2 = "BlockTransform:BlockMetadata";
function blockMetadataTransform(mdast2, file) {
  const blocks2 = selectAll("block", mdast2);
  blocks2.forEach((block5) => {
    var _a6, _b, _c, _d2, _e, _f;
    if (block5.meta) {
      try {
        const data = JSON.parse(block5.meta);
        block5.data = block5.data ? { ...block5.data, ...data } : data;
        delete block5.meta;
      } catch (error) {
        fileError(file, "Problem parsing JSON for block", {
          node: block5,
          source: TRANSFORM_SOURCE2,
          ruleId: RuleId.blockMetadataLoads
        });
      }
    }
    const kind = (_a6 = block5.data) === null || _a6 === void 0 ? void 0 : _a6.kind;
    if (kind) {
      block5.kind = kind;
      delete block5.data.kind;
    }
    if (typeof ((_b = block5.data) === null || _b === void 0 ? void 0 : _b.class) === "string") {
      block5.class = `${(_c = block5.class) !== null && _c !== void 0 ? _c : ""} ${block5.data.class}`.trim();
      delete block5.data.class;
    }
    if (block5.data && Object.keys(block5.data).length === 0)
      delete block5.data;
    const label = (_e = (_d2 = block5.data) === null || _d2 === void 0 ? void 0 : _d2.label) !== null && _e !== void 0 ? _e : (_f = block5.data) === null || _f === void 0 ? void 0 : _f.id;
    if (typeof label === "string") {
      const normalized = normalizeLabel(label);
      if (normalized) {
        block5.identifier = normalized.identifier;
        block5.label = normalized.label;
        block5.html_id = normalized.html_id;
        delete block5.data.label;
      }
    }
    if (block5.identifier) {
      const codeChildren = selectAll("code", block5);
      codeChildren.forEach((child, index4) => {
        if (child.identifier)
          return;
        if (codeChildren.length === 1) {
          child.identifier = `${block5.identifier}-code`;
        } else {
          child.identifier = `${block5.identifier}-code-${index4}`;
        }
      });
      const outputChildren = selectAll("output", block5);
      outputChildren.forEach((child, index4) => {
        if (child.identifier)
          return;
        if (outputChildren.length === 1) {
          child.identifier = `${block5.identifier}-output`;
        } else {
          child.identifier = `${block5.identifier}-output-${index4}`;
        }
      });
    }
  });
}
var defaultParser = (caption3) => {
  return {
    type: "root",
    children: [
      {
        type: "paragraph",
        children: [{ type: "text", value: caption3 }]
      }
    ]
  };
};
function blockToFigureTransform(mdast2, opts) {
  var _a6;
  const blocks2 = selectAll("block", mdast2);
  const parser3 = (_a6 = opts === null || opts === void 0 ? void 0 : opts.parser) !== null && _a6 !== void 0 ? _a6 : defaultParser;
  blocks2.forEach((block5) => {
    var _a7, _b, _c, _d2, _e, _f, _g, _h, _j;
    const caption3 = (_d2 = (_b = (_a7 = block5.data) === null || _a7 === void 0 ? void 0 : _a7.caption) !== null && _b !== void 0 ? _b : (_c = block5.data) === null || _c === void 0 ? void 0 : _c["fig-cap"]) !== null && _d2 !== void 0 ? _d2 : (_e = block5.data) === null || _e === void 0 ? void 0 : _e["tbl-cap"];
    if (caption3) {
      const kind = (_g = (_f = block5.data) === null || _f === void 0 ? void 0 : _f.kind) !== null && _g !== void 0 ? _g : ((_h = block5.data) === null || _h === void 0 ? void 0 : _h["tbl-cap"]) ? "table" : "figure";
      const children = typeof caption3 === "string" ? (_j = parser3(caption3).children) !== null && _j !== void 0 ? _j : [] : caption3;
      children.push(...block5.children);
      const container4 = {
        type: "container",
        kind,
        label: block5.label,
        identifier: block5.identifier,
        children
      };
      if (block5.kind === NotebookCell.code) {
        container4.noSubcontainers = true;
      }
      block5.children = [container4];
      delete block5.data.caption;
      delete block5.data["fig-cap"];
      delete block5.data["tbl-cap"];
      delete block5.data.kind;
      delete block5.label;
      delete block5.identifier;
    }
  });
}

// ../myst-transforms/dist/code.js
function inlineCodeFlattenTransform(mdast2, file) {
  const code7 = selectAll("inlineCode", mdast2);
  code7.forEach((node3) => {
    if (!(node3 === null || node3 === void 0 ? void 0 : node3.children))
      return;
    if (node3.value) {
      fileWarn(file, "Both children and value defined for inline code.", {
        node: node3,
        ruleId: RuleId.inlineCodeMalformed
      });
      return;
    }
    if (!node3.children.reduce((b, c) => b && c.type === "text", true))
      return;
    node3.value = node3.children.reduce((t2, c) => t2 + c.value, "");
    delete node3.children;
  });
}
function codeTransform(mdast2, file, opts) {
  const code7 = selectAll("code", mdast2);
  code7.forEach((node3) => {
    if (node3.lang === "")
      return;
    if (!node3.lang) {
      if (!(opts === null || opts === void 0 ? void 0 : opts.lang)) {
        fileWarn(file, "Language is not defined for code block", {
          node: node3,
          ruleId: RuleId.codeLangDefined
        });
        return;
      }
      node3.lang = opts === null || opts === void 0 ? void 0 : opts.lang;
    }
    if (node3.lang.toLowerCase().includes("python") && (opts === null || opts === void 0 ? void 0 : opts.transformPython) !== false) {
      node3.lang = "python";
    }
    if (node3.lang.toLowerCase() === "r" && (opts === null || opts === void 0 ? void 0 : opts.transformR) !== false) {
      node3.lang = "r";
    }
  });
}
var codePlugin = (opts) => (tree, file) => {
  codeTransform(tree, file, opts);
};
function codeBlockToDirectiveTransform(tree, file, opts) {
  if (!opts || !opts.translate || opts.translate.length === 0)
    return;
  const nodes = selectAll("code", tree);
  nodes.forEach((node3) => {
    if (!node3.lang)
      return;
    const res = opts.translate.find((t2) => t2 === node3.lang || typeof t2 !== "string" && t2.lang === node3.lang);
    if (!res)
      return;
    node3.type = typeof res === "string" ? res : res.directive || res.lang;
    delete node3.lang;
  });
}

// ../myst-transforms/dist/blockquote.js
var ATTRIBUTION_PATTERN = /^(?:---?|\u2014) +(.*)/;
function maybeLiftAttributionAsCaption(container4, quote) {
  var _a6;
  if (select("caption", container4)) {
    return false;
  }
  const maybeCaptionParagraph = quote.children[quote.children.length - 1];
  if ((maybeCaptionParagraph === null || maybeCaptionParagraph === void 0 ? void 0 : maybeCaptionParagraph.type) !== "paragraph") {
    return false;
  }
  const maybeCaptionText = maybeCaptionParagraph.children[0];
  if ((maybeCaptionText === null || maybeCaptionText === void 0 ? void 0 : maybeCaptionText.type) !== "text") {
    return false;
  }
  const match3 = (_a6 = maybeCaptionText.value) === null || _a6 === void 0 ? void 0 : _a6.match(ATTRIBUTION_PATTERN);
  if (!match3) {
    return false;
  }
  if (match3[1]) {
    maybeCaptionText.value = match3[1];
  } else if (maybeCaptionParagraph.children.length > 1) {
    maybeCaptionText.type = "__delete__";
  } else {
    return false;
  }
  quote.children.pop();
  const caption3 = {
    type: "caption",
    children: [maybeCaptionParagraph]
  };
  container4.children.push(caption3);
  return true;
}
function blockquoteTransform(mdast2) {
  visit(mdast2, "blockquote", (quote, index4, quoteParent) => {
    var _a6;
    if (quoteParent === void 0) {
      throw new Error("parent node was undefined, but there should always be a root node");
    }
    const parentHasCaption = !!((_a6 = quoteParent === null || quoteParent === void 0 ? void 0 : quoteParent.children) === null || _a6 === void 0 ? void 0 : _a6.some((node3) => matches2("caption", node3)));
    if (parentHasCaption) {
      return;
    }
    if (matches2("container[kind=quote]", quoteParent)) {
      const container5 = quoteParent;
      const didLiftAttribution = maybeLiftAttributionAsCaption(container5, quote);
      if (!didLiftAttribution && !container5.class) {
        container5.type = "__lift__";
      }
      return;
    }
    const container4 = {
      type: "container",
      kind: "quote",
      children: [quote]
    };
    if (maybeLiftAttributionAsCaption(container4, quote)) {
      const nextContainer = copyNode(container4);
      const containerDest = quote;
      containerDest.type = "__lift__";
      containerDest.children = [nextContainer];
    }
  });
  liftChildren(mdast2, "__lift__");
  remove(mdast2, "__delete__");
}

// ../myst-transforms/dist/images.js
function imageAltTextTransform(tree) {
  const containers = selectAll("container", tree);
  containers.reverse().forEach((container4) => {
    const images = selectAll("image", container4);
    images.forEach((image6) => {
      var _a6, _b;
      if (!image6 || image6.alt)
        return;
      const para = select("paragraph", container4.children.find((child) => child.type === "caption"));
      if (!para)
        return;
      const content3 = (_a6 = para.children) === null || _a6 === void 0 ? void 0 : _a6.filter((n) => n.type !== "captionNumber");
      if (!content3 || content3.length < 1)
        return;
      image6.alt = toText(content3);
      ((_b = image6.data) !== null && _b !== void 0 ? _b : image6.data = {}).altTextIsAutoGenerated = true;
    });
  });
}

// ../myst-transforms/dist/indices.js
var ALLOWED_INDEX_CHARS = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
function getNormalizedFirstLetter(entry) {
  if (!entry)
    return "Other";
  const char = entry.trim()[0].normalize("NFD").replace(new RegExp("\\p{Diacritic}", "gu"), "").toUpperCase();
  return ALLOWED_INDEX_CHARS.includes(char) ? char : "Other";
}
function indexIdentifierTransform(mdast2) {
  const indexEntryNodes = selectAll("[indexEntries]", mdast2);
  indexEntryNodes.forEach((indexEntryNode) => {
    var _a6;
    if (!indexEntryNode.label) {
      indexEntryNode.label = `index-${createId()}`;
    }
    if (!indexEntryNode.identifier) {
      const { identifier, html_id } = (_a6 = normalizeLabel(indexEntryNode.label)) !== null && _a6 !== void 0 ? _a6 : {};
      indexEntryNode.identifier = identifier;
      indexEntryNode.html_id = html_id;
    }
  });
}
var indexIdentifierPlugin = () => (tree) => {
  indexIdentifierTransform(tree);
};
function organizeTargetEntries(indexTargets, vfile2) {
  const entryDict = {};
  indexTargets.forEach(({ node: node3 }) => {
    var _a6;
    (_a6 = node3.indexEntries) === null || _a6 === void 0 ? void 0 : _a6.forEach(({ entry, subEntry, emphasis: emphasis4 }) => {
      const letter = getNormalizedFirstLetter(entry);
      if (!entryDict[letter])
        entryDict[letter] = {};
      const indexTargetInfo = { node: node3, emphasis: emphasis4 };
      if (!entryDict[letter][entry]) {
        const existing = Object.keys(entryDict[letter]).find((e2) => e2.toUpperCase() === entry.toUpperCase());
        if (existing) {
          fileWarn(vfile2, `Duplicate index entry with different cases: "${existing}" and "${entry}"`, { ruleId: RuleId.indexEntriesResolve, node: node3 });
        }
        entryDict[letter][entry] = { nodes: [], see: [], seeAlso: [], subEntries: {} };
      }
      const indexItem = entryDict[letter][entry];
      if (subEntry === null || subEntry === void 0 ? void 0 : subEntry.value) {
        if (subEntry.kind === "see") {
          indexItem.see.push({ value: subEntry.value, emphasis: emphasis4 });
        } else if (subEntry.kind === "seealso") {
          indexItem.seeAlso.push({ value: subEntry.value, emphasis: emphasis4 });
        } else {
          if (!indexItem.subEntries[subEntry.value]) {
            indexItem.subEntries[subEntry.value] = [];
          }
          indexItem.subEntries[subEntry.value].push(indexTargetInfo);
        }
      } else {
        indexItem.nodes.push(indexTargetInfo);
      }
    });
  });
  return entryDict;
}
function emphasisFirst(items) {
  return [...items.filter((item) => !!item.emphasis), ...items.filter((item) => !item.emphasis)];
}
function resolveIndexReferences(nodes) {
  return emphasisFirst(nodes).map(({ node: node3, emphasis: emphasis4 }, ind) => {
    const out = [];
    if (ind === 0) {
      out.push({
        type: "text",
        value: " "
      });
    } else {
      out.push({
        type: "text",
        value: ", "
      });
    }
    const xref = {
      type: "crossReference",
      identifier: node3.identifier,
      label: node3.label,
      children: node3.type === "span" && node3.children ? copyNode(node3.children) : void 0
    };
    if (emphasis4) {
      out.push({
        type: "emphasis",
        children: [xref]
      });
    } else {
      out.push(xref);
    }
    return out;
  }).flat();
}
function resolveIndexPrefix(nodes, key2, allEntries, vfile2, prefix2) {
  return emphasisFirst(nodes).map(({ value, emphasis: emphasis4 }, ind) => {
    if (!allEntries.includes(value)) {
      fileWarn(vfile2, `"${prefix2}" destination for "${key2}" does not exist: "${value}"`, {
        ruleId: RuleId.indexEntriesResolve
      });
    }
    const out = [];
    if (ind === 0) {
      out.push({
        type: "text",
        value: ` ${prefix2} `
      });
    } else {
      out.push({
        type: "text",
        value: ", "
      });
    }
    const xrefLetter = getNormalizedFirstLetter(value).toLowerCase();
    const xref = {
      type: "crossReference",
      identifier: `index-heading-${xrefLetter}`,
      label: `index-heading-${xrefLetter}`,
      children: [
        {
          type: "text",
          value
        }
      ]
    };
    if (emphasis4) {
      out.push({
        type: "emphasis",
        children: [xref]
      });
    } else {
      out.push(xref);
    }
    return out;
  }).flat();
}
function resolveIndexSee(nodes, key2, allEntries, vfile2) {
  return resolveIndexPrefix(nodes, key2, allEntries, vfile2, "See");
}
function resolveIndexSeeAlso(nodes, key2, allEntries, vfile2) {
  return resolveIndexPrefix(nodes, key2, allEntries, vfile2, "See also");
}
function buildIndexTransform(mdast2, vfile2, state, stateResolver) {
  const genindices = selectAll("genindex", mdast2);
  if (!genindices.length)
    return;
  const indexTargets = stateResolver.getAllTargets().filter((target) => {
    var _a6;
    return !!((_a6 = target.node.indexEntries) === null || _a6 === void 0 ? void 0 : _a6.length);
  });
  const entryDict = organizeTargetEntries(indexTargets, vfile2);
  const allEntries = Object.values(entryDict).map((entryItems) => [...Object.keys(entryItems)]).flat();
  const indexContent = [];
  [...ALLOWED_INDEX_CHARS, "Other"].forEach((letter) => {
    if (!entryDict[letter])
      return;
    const term = {
      type: "definitionTerm",
      children: [
        {
          type: "text",
          value: letter
        }
      ],
      label: `index-heading-${letter.toLowerCase()}`,
      identifier: `index-heading-${letter.toLowerCase()}`,
      html_id: `index-heading-${letter.toLowerCase()}`
    };
    const description = {
      type: "definitionDescription",
      children: Object.keys(entryDict[letter]).sort().map((key2) => {
        const indexItem = entryDict[letter][key2];
        return [
          {
            type: "text",
            value: `${key2}:`
          },
          ...resolveIndexReferences(indexItem.nodes),
          ...resolveIndexSee(indexItem.see, key2, allEntries, vfile2),
          ...resolveIndexSeeAlso(indexItem.seeAlso, key2, allEntries, vfile2),
          {
            type: "list",
            children: Object.keys(indexItem.subEntries).sort().map((sub2) => {
              return {
                type: "listItem",
                children: [
                  {
                    type: "paragraph",
                    children: [
                      {
                        type: "text",
                        value: `${sub2}: `
                      },
                      ...resolveIndexReferences(indexItem.subEntries[sub2])
                    ]
                  }
                ]
              };
            })
          }
        ];
      }).flat()
    };
    state.addTarget(term);
    indexContent.push(term, description);
  });
  genindices.forEach((genindex) => {
    genindex.type = "block";
    genindex.data = { part: "index" };
    if (!genindex.children)
      genindex.children = [];
    genindex.children.push({
      type: "definitionList",
      children: indexContent
    });
  });
}

// ../myst-transforms/dist/liftMystDirectivesAndRoles.js
function liftMystDirectivesAndRolesTransform(tree) {
  const directives = selectAll("mystDirective,mystRole", tree);
  directives.forEach((n) => {
    var _a6;
    const child = (_a6 = n.children) === null || _a6 === void 0 ? void 0 : _a6[0];
    if (!child)
      return;
    if (child.identifier) {
      delete n.identifier;
      delete n.label;
      delete n.html_id;
    }
    transferTargetAttrs(n, child);
  });
  liftChildren(tree, "mystDirective");
  liftChildren(tree, "mystRole");
}

// ../myst-transforms/dist/links/plugin.js
function formatLinkText(link4) {
  var _a6;
  if (((_a6 = link4.children) === null || _a6 === void 0 ? void 0 : _a6.length) !== 1 || link4.children[0].type !== "text")
    return;
  const url = link4.children[0].value;
  if (!url || url.length < 20 || url.match(/\s/))
    return;
  if (url.includes("\u200B"))
    return;
  const doubleSlash = url.split("//");
  const formatted = doubleSlash.map((str2) => str2.replace(/([/~.,\-_?#%])/giu, "\u200B$1").replace(/([=&])/giu, "\u200B$1\u200B")).join("//\u200B").replace(/​(.{1,2})$/, "$1");
  link4.children[0].value = formatted;
}
function linksTransform(mdast2, file, opts) {
  var _a6;
  const linkNodes = selectAll((_a6 = opts.selector) !== null && _a6 !== void 0 ? _a6 : "link,card", mdast2);
  linkNodes.forEach((link4) => {
    if (!link4.urlSource)
      link4.urlSource = link4.url;
    const transform3 = opts.transformers.find((t2) => t2.test(link4.urlSource));
    const result = transform3 === null || transform3 === void 0 ? void 0 : transform3.transform(link4, file);
    if (!(transform3 === null || transform3 === void 0 ? void 0 : transform3.formatsText)) {
      formatLinkText(link4);
    }
    if (!transform3 || result === void 0)
      return;
    if (result) {
      delete link4.error;
      if (transform3.protocol) {
        link4.protocol = transform3.protocol;
      }
    } else {
      link4.error = true;
    }
  });
}

// ../myst-transforms/dist/links/myst.js
var TRANSFORM_SOURCE3 = "LinkTransform:MystTransformer";
function removeMystPrefix(uri, vfile2, link4, source2) {
  if (uri.startsWith("myst:")) {
    const normalized = uri.replace(/^myst/, "xref");
    if (vfile2) {
      fileWarn(vfile2, `"myst:" prefix is deprecated for external reference "${uri}"`, {
        note: `Use "${normalized}" instead.`,
        node: link4,
        source: source2,
        ruleId: RuleId.mystLinkValid
      });
    }
    return normalized;
  }
  return uri;
}
var MystTransformer = class {
  constructor(references) {
    this.protocol = "xref:myst";
    this.mystXRefsList = references.filter((ref) => {
      return ref.kind === "myst";
    }).filter((ref) => {
      return !!ref.value;
    });
  }
  test(uri) {
    if (!uri)
      return false;
    const normalizedUri = removeMystPrefix(uri);
    return !!this.mystXRefsList.find((m2) => m2.key && normalizedUri.startsWith(`xref:${m2.key}`));
  }
  transform(link4, file) {
    var _a6, _b;
    const urlSource = removeMystPrefix(link4.urlSource || link4.url, file, link4, TRANSFORM_SOURCE3);
    let url;
    try {
      url = new URL(urlSource);
    } catch (err) {
      fileError(file, `Could not parse url for "${urlSource}"`, {
        node: link4,
        source: TRANSFORM_SOURCE3,
        ruleId: RuleId.mystLinkValid
      });
      return false;
    }
    const key2 = url.pathname.split("/")[0];
    const page = url.pathname.slice(key2.length);
    const identifier = (_a6 = url.hash) === null || _a6 === void 0 ? void 0 : _a6.replace(/^#/, "");
    const mystXRefs = this.mystXRefsList.find((m2) => m2.key === key2);
    if (!mystXRefs || !mystXRefs.value) {
      fileError(file, `Unknown project "${key2}" for link: ${urlSource}`, {
        node: link4,
        source: TRANSFORM_SOURCE3,
        ruleId: RuleId.mystLinkValid
      });
      return false;
    }
    let match3;
    if (identifier) {
      match3 = mystXRefs.value.references.find((ref) => {
        if (page && ref.url !== page)
          return false;
        if (!page && ref.implicit)
          return false;
        return ref.identifier === identifier || ref.html_id === identifier;
      });
    } else {
      match3 = mystXRefs.value.references.find((ref) => {
        if (ref.kind !== "page")
          return false;
        if (!page && ref.url === "/")
          return true;
        return ref.url === page;
      });
    }
    if (!match3) {
      fileError(file, `"${urlSource}" not found in MyST project ${mystXRefs.key} (${mystXRefs.url})`, {
        node: link4,
        source: TRANSFORM_SOURCE3,
        ruleId: RuleId.mystLinkValid
      });
      return false;
    }
    if (((_b = link4.children) === null || _b === void 0 ? void 0 : _b.length) === 1 && link4.children[0].type === "text" && link4.children[0].value === link4.urlSource) {
      link4.children = [];
    }
    if (match3.kind === "page") {
      link4.url = `${mystXRefs.url}${match3.url}`;
      link4.dataUrl = `${mystXRefs.url}${match3.data}`;
      link4.internal = false;
    } else {
      const xref = link4;
      xref.type = "crossReference";
      xref.remote = true;
      xref.remoteBaseUrl = mystXRefs.url;
      xref.url = match3.url;
      xref.dataUrl = match3.data;
      xref.identifier = match3.identifier;
      xref.label = match3.identifier;
      xref.html_id = match3.html_id;
    }
    return true;
  }
};

// ../myst-transforms/dist/links/utils.js
function withoutHttp(url) {
  return url === null || url === void 0 ? void 0 : url.replace(/https?:\/\//, "");
}
function updateLinkTextIfEmpty(link4, title) {
  var _a6, _b, _c, _d2, _e, _f;
  if (!title)
    return;
  const text7 = title ? [{ type: "text", value: title }] : [];
  if (((_a6 = link4.children) === null || _a6 === void 0 ? void 0 : _a6.length) === 1 && ((_c = (_b = link4.children) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.type) === "text" && ((_e = (_d2 = link4.children) === null || _d2 === void 0 ? void 0 : _d2[0]) === null || _e === void 0 ? void 0 : _e.value) === (link4.urlSource || link4.url)) {
    link4.children = text7;
    return;
  }
  if (!link4.children || ((_f = link4.children) === null || _f === void 0 ? void 0 : _f.length) === 0) {
    link4.children = text7;
    return;
  }
}

// ../myst-transforms/dist/links/sphinx.js
var TRANSFORM_SOURCE4 = "LinkTransform:SphinxTransformer";
var SphinxTransformer = class {
  constructor(references) {
    this.protocol = "xref:sphinx";
    this.intersphinx = references.filter((ref) => {
      return ref.kind === "intersphinx";
    }).filter((ref) => {
      var _a6;
      return !!((_a6 = ref.value) === null || _a6 === void 0 ? void 0 : _a6._loaded);
    }).map((ref) => ref.value);
  }
  test(uri) {
    if (!uri)
      return false;
    const normalizedUri = removeMystPrefix(uri);
    return !!this.intersphinx.find((i2) => i2.id && normalizedUri.startsWith(`xref:${i2.id}`));
  }
  transform(link4, file) {
    var _a6, _b;
    const urlSource = removeMystPrefix(link4.urlSource || link4.url, file, link4, TRANSFORM_SOURCE4);
    let url;
    try {
      url = new URL(urlSource);
    } catch (err) {
      fileError(file, `Could not parse url for "${urlSource}"`, {
        node: link4,
        source: TRANSFORM_SOURCE4,
        ruleId: RuleId.sphinxLinkValid
      });
      return false;
    }
    const id = url.pathname;
    const target = (_b = (_a6 = url.hash) === null || _a6 === void 0 ? void 0 : _a6.replace(/^#/, "")) !== null && _b !== void 0 ? _b : "";
    const project = this.intersphinx.find((i2) => i2.id === id);
    if (!project || !project.path) {
      fileError(file, `Unknown project "${id}" for link: ${urlSource}`, {
        node: link4,
        source: TRANSFORM_SOURCE4,
        ruleId: RuleId.sphinxLinkValid
      });
      return false;
    }
    if (!target) {
      link4.internal = false;
      link4.url = project.path;
      updateLinkTextIfEmpty(link4, project.id || "(see documentation)");
      return true;
    }
    const entry = project.getEntry({ name: target });
    if (!entry) {
      fileError(file, `"${urlSource}" not found in intersphinx ${project.id} (${project.path})`, {
        node: link4,
        source: TRANSFORM_SOURCE4,
        ruleId: RuleId.sphinxLinkValid
      });
      return false;
    }
    link4.internal = false;
    link4.url = entry.location;
    updateLinkTextIfEmpty(link4, entry.display || project.id || "(see documentation)");
    return true;
  }
};

// ../myst-transforms/dist/links/wiki.js
var DEFAULT_LANGUAGE = "en";
var ANY_WIKIPEDIA_ORG = /^(?:https?:\/\/)?(?:([a-z]+)\.)?wikipedia\.org\/wiki\/(.+)$/;
var TRANSFORM_SOURCE5 = "LinkTransform:WikiTransformer";
function removeWiki(url, replace = "") {
  return url.replace(/\/?(wiki\/?)?$/, replace).replace(/^\/?(wiki\/)/, "");
}
var WikiTransformer = class {
  constructor(opts) {
    var _a6, _b;
    this.protocol = "wiki";
    this.formatsText = true;
    this.wikiUrl = removeWiki((_a6 = opts === null || opts === void 0 ? void 0 : opts.url) !== null && _a6 !== void 0 ? _a6 : `https://${(opts === null || opts === void 0 ? void 0 : opts.lang) || DEFAULT_LANGUAGE}.wikipedia.org/`, "/");
    this.lang = (opts === null || opts === void 0 ? void 0 : opts.lang) || ((_b = `${this.wikiUrl}wiki/x`.match(ANY_WIKIPEDIA_ORG)) === null || _b === void 0 ? void 0 : _b[1]) || void 0;
  }
  test(uri) {
    if (!uri)
      return false;
    if (uri.startsWith("wiki:"))
      return true;
    if (uri.match(ANY_WIKIPEDIA_ORG) || withoutHttp(uri).startsWith(withoutHttp(this.wikiUrl))) {
      return !uri.match(/\/w\/index\.php(\?[^/]*)?$/);
    }
    return false;
  }
  pageName(uri) {
    if (uri.startsWith("wiki:")) {
      return { page: uri.replace(/^wiki:/, "").trim(), wiki: this.wikiUrl, lang: this.lang };
    }
    if (withoutHttp(uri).startsWith(withoutHttp(this.wikiUrl))) {
      const page2 = removeWiki(withoutHttp(uri).replace(withoutHttp(this.wikiUrl), ""));
      return { page: page2, wiki: this.wikiUrl, lang: this.lang };
    }
    const match3 = uri.match(ANY_WIKIPEDIA_ORG);
    if (!match3)
      return void 0;
    const [, lang, page] = match3;
    return { page, wiki: `https://${lang || DEFAULT_LANGUAGE}.wikipedia.org/`, lang };
  }
  transform(link4, file) {
    const urlSource = link4.urlSource || link4.url;
    const result = this.pageName(urlSource);
    if (!result) {
      fileWarn(file, `Wikipedia pagenames should not contain spaces in link: ${urlSource}`, {
        node: link4,
        note: "Replace spaces with underscores",
        source: TRANSFORM_SOURCE5,
        ruleId: RuleId.wikipediaLinkValid
      });
      return false;
    }
    let { page } = result;
    if (page.match(/\s/)) {
      fileWarn(file, `Wikipedia pagenames should not contain spaces in link: ${urlSource}`, {
        node: link4,
        note: "Replace spaces with underscores",
        source: TRANSFORM_SOURCE5,
        ruleId: RuleId.wikipediaLinkValid
      });
    }
    if (page.match(/\//)) {
      fileError(file, `Wikipedia pagenames should not contain "/" in link: ${urlSource}`, {
        node: link4,
        note: "Only point to the final page name, do not include any other parts of the Wikipedia URL.",
        source: TRANSFORM_SOURCE5,
        ruleId: RuleId.wikipediaLinkValid
      });
      return false;
    }
    page = page.replace(/[\s]+/g, "_").replace(/_[_]+/, "_").replace(/(?:^_)|(?:_$)/g, "");
    link4.url = `${result.wiki}wiki/${page}`;
    link4.data = {
      ...link4.data,
      page,
      wiki: result.wiki,
      lang: result.lang
    };
    link4.internal = false;
    const title = page.replace(/_/g, " ");
    updateLinkTextIfEmpty(link4, title);
    return true;
  }
};

// ../myst-transforms/dist/links/rrid.js
var RESOLVER = "https://scicrunch.org/resolver/";
var TRANSFORM_SOURCE6 = "LinkTransform:RRIDTransformer";
function isValid(rrid) {
  return !!rrid;
}
function getRRID(uri) {
  if (uri.startsWith("rrid:")) {
    return uri.replace(/^rrid:/, "").trim();
  }
  if (withoutHttp(uri).startsWith(withoutHttp(RESOLVER))) {
    return withoutHttp(uri).replace(withoutHttp(RESOLVER), "").trim();
  }
  return uri.trim();
}
var RRIDTransformer = class {
  constructor() {
    this.protocol = "rrid";
  }
  test(uri) {
    if (!uri)
      return false;
    if (uri.startsWith("rrid:"))
      return true;
    return withoutHttp(uri).startsWith(withoutHttp(RESOLVER));
  }
  transform(link4, file) {
    const urlSource = link4.urlSource || link4.url;
    const rrid = getRRID(urlSource);
    if (!isValid(rrid)) {
      fileWarn(file, `RRID is not valid: ${urlSource}`, {
        node: link4,
        source: TRANSFORM_SOURCE6,
        ruleId: RuleId.rridLinkValid
      });
      return false;
    }
    link4.url = `${RESOLVER}${rrid}`;
    link4.data = { ...link4.data, rrid };
    link4.internal = false;
    updateLinkTextIfEmpty(link4, rrid);
    return true;
  }
};

// ../myst-transforms/dist/links/ror.js
var RESOLVER2 = "https://ror.org/";
var TRANSFORM_SOURCE7 = "LinkTransform:RORTransformer";
function isValid2(rrid) {
  return !!rrid;
}
function getROR(uri) {
  if (uri.startsWith("ror:")) {
    return uri.replace(/^ror:/, "").trim();
  }
  if (withoutHttp(uri).startsWith(withoutHttp(RESOLVER2))) {
    return withoutHttp(uri).replace(withoutHttp(RESOLVER2), "").trim();
  }
  return uri.trim();
}
var RORTransformer = class {
  constructor() {
    this.protocol = "ror";
  }
  test(uri) {
    if (!uri)
      return false;
    if (uri.startsWith("ror:"))
      return true;
    return withoutHttp(uri).startsWith(withoutHttp(RESOLVER2));
  }
  transform(link4, file) {
    const urlSource = link4.urlSource || link4.url;
    const ror = getROR(urlSource);
    if (!isValid2(ror)) {
      fileWarn(file, `ROR is not valid: ${urlSource}`, {
        node: link4,
        source: TRANSFORM_SOURCE7,
        ruleId: RuleId.rorLinkValid
      });
      return false;
    }
    link4.url = `${RESOLVER2}${ror}`;
    link4.data = { ...link4.data, ror };
    link4.internal = false;
    updateLinkTextIfEmpty(link4, ror);
    return true;
  }
};

// ../myst-transforms/dist/links/doi.js
var TRANSFORM_SOURCE8 = "LinkTransform:DOITransformer";
var DOITransformer = class {
  constructor() {
    this.protocol = "doi";
  }
  test(uri) {
    if (uri === null || uri === void 0 ? void 0 : uri.startsWith("doi:")) {
      return true;
    }
    if (uri && doi.validate(uri))
      return true;
    return false;
  }
  transform(link4, file) {
    const urlSource = link4.urlSource || link4.url;
    const doiUrl2 = doi.buildUrl(urlSource);
    if (!doiUrl2) {
      fileError(file, `DOI is not valid: ${urlSource}`, {
        node: link4,
        source: TRANSFORM_SOURCE8,
        ruleId: RuleId.doiLinkValid
      });
      return false;
    }
    link4.url = doiUrl2;
    link4.data = { ...link4.data, doi: doi.normalize(doiUrl2) };
    link4.internal = false;
    updateLinkTextIfEmpty(link4, "");
    return true;
  }
};

// ../myst-transforms/dist/links/github.js
var RESOLVER3 = "https://github.com/";
function safeUrlParse(urlSource) {
  try {
    return new URL(`https://${withoutHttp(urlSource)}`);
  } catch (error) {
    return;
  }
}
function parseGithubFile(urlSource) {
  const url = safeUrlParse(urlSource);
  if ((url === null || url === void 0 ? void 0 : url.host) !== "github.com")
    return;
  const match3 = url.pathname.match(/^\/([^/]+)\/([^/]+)\/blob\/([^/]+)\/(.+)/);
  if (!match3)
    return;
  const [, org, repo, reference, file] = match3;
  const lineNumbers = url.hash.match(/L([0-9]+)(?:-L([0-9]+))?/);
  const [, fromString2, toString6] = lineNumbers !== null && lineNumbers !== void 0 ? lineNumbers : [];
  const from4 = fromString2 ? Number(fromString2) : void 0;
  const to = toString6 ? Number(toString6) : void 0;
  return [
    file,
    {
      kind: "file",
      org,
      repo,
      reference,
      file,
      from: from4,
      to,
      raw: `https://raw.githubusercontent.com/${org}/${repo}/${reference}/${file}`
    }
  ];
}
function parseGithubIssue(urlSource) {
  const url = safeUrlParse(urlSource);
  if ((url === null || url === void 0 ? void 0 : url.host) !== "github.com")
    return;
  const match3 = url.pathname.match(/^\/([^/]+)\/([^/]+)\/(?:issues|pull)\/([0-9]+)(.+)?/);
  if (!match3)
    return;
  const [, org, repo, issue_number] = match3;
  return [
    `${org}/${repo}#${issue_number}`,
    {
      kind: "issue",
      org,
      repo,
      issue_number
    }
  ];
}
var GithubTransformer = class {
  constructor() {
    this.protocol = "github";
  }
  test(uri) {
    if (!uri)
      return false;
    return withoutHttp(uri).startsWith(withoutHttp(RESOLVER3));
  }
  transform(link4, file) {
    const urlSource = link4.urlSource || link4.url;
    const parsed = parseGithubIssue(urlSource) || parseGithubFile(urlSource);
    if (!parsed) {
      return false;
    }
    const [defaultText, data] = parsed;
    link4.data = { ...link4.data, ...data };
    link4.internal = false;
    updateLinkTextIfEmpty(link4, defaultText);
    return true;
  }
};

// ../myst-transforms/dist/links/check.js
function checkLinkTextTransform(mdast2, externalReferences, vfile2) {
  const linkNodes = selectAll("link,linkBlock,card", mdast2);
  const xrefNodes = selectAll("crossReference", mdast2);
  linkNodes.forEach((node3) => {
    var _a6;
    if (node3.url && (node3.url.startsWith("xref:") || node3.url.startsWith("myst:"))) {
      const key2 = node3.url.slice(5).split("/")[0].split("#")[0];
      if (externalReferences.map((ref) => ref.key).includes(key2)) {
      } else {
        fileError(vfile2, `Link did not resolve to valid cross-reference: ${node3.url}`, {
          node: node3,
          ruleId: RuleId.linkTextExists,
          note: key2 ? `You need an entry in your project references with key "${key2}"` : void 0
        });
      }
    } else if (!toText(node3.children) && !select("image", node3)) {
      fileWarn(vfile2, `Link text is empty for <${(_a6 = node3.urlSource) !== null && _a6 !== void 0 ? _a6 : node3.url}${node3.identifier ? `#${node3.identifier}` : ""}>`, {
        node: node3,
        ruleId: RuleId.linkTextExists
      });
    }
  });
  xrefNodes.forEach((node3) => {
    if (!toText(node3.children) && !select("image", node3)) {
      fileWarn(vfile2, `Cross reference text is empty for <${node3.urlSource}>`, {
        node: node3,
        ruleId: RuleId.linkTextExists
      });
    }
  });
}

// ../myst-transforms/dist/targets.js
function mystTargetsTransform(tree, vfile2) {
  visit(tree, "mystTarget", (node3, index4, parent2) => {
    const nextNode = findAfter(parent2, index4);
    const normalized = { ...node3, ...normalizeLabel(node3.label) };
    if (nextNode && normalized) {
      transferTargetAttrs(normalized, nextNode, vfile2);
    }
  });
  remove(tree, "mystTarget");
}
function headingLabelTransform(tree) {
  const headings = selectAll("heading", tree);
  headings.forEach((node3) => {
    if (node3.label || node3.identifier)
      return;
    const normalized = normalizeLabel(toText(node3.children));
    if (normalized) {
      node3.identifier = normalized.html_id;
      node3.label = normalized.label;
      node3.html_id = normalized.html_id;
      node3.implicit = true;
    }
  });
}

// ../myst-transforms/dist/joinGates.js
function joinGatesTransform(tree, file) {
  map2(tree, (node3) => {
    var _a6, _b;
    const nodes = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.reduce((children, child) => {
      var _a7, _b2;
      const [last2] = children.slice(-1);
      const [secondLast] = children.slice(-2);
      if ((last2 === null || last2 === void 0 ? void 0 : last2.gate) !== "start")
        return [...children, child];
      if (child.gate === "start") {
        return [...children, child];
      }
      if (child.gate === "end") {
        if (child.type !== last2.type) {
          fileWarn(file, `Gate close ("${child.type}") does not match opening gate (${child.gate}).`, { node: node3, ruleId: RuleId.gatedNodesJoin });
        }
        delete last2.gate;
        if ((secondLast === null || secondLast === void 0 ? void 0 : secondLast.gate) === "start") {
          const closed = children.pop();
          secondLast.children = [...(_a7 = secondLast.children) !== null && _a7 !== void 0 ? _a7 : [], closed];
        }
        return children;
      }
      last2.children = [...(_b2 = last2.children) !== null && _b2 !== void 0 ? _b2 : [], child];
      return children;
    }, []);
    const [last] = (_b = nodes === null || nodes === void 0 ? void 0 : nodes.slice(-1)) !== null && _b !== void 0 ? _b : [];
    if ((last === null || last === void 0 ? void 0 : last.gate) === "start") {
      fileError(file, `Gated node is not closed, expected a {${last.type}-end} directive.`, {
        node: node3,
        ruleId: RuleId.gatedNodesJoin
      });
    }
    if (nodes !== void 0)
      node3.children = nodes;
    return node3;
  });
}

// ../myst-transforms/dist/glossary.js
function glossaryTransform(mdast2, file) {
  const glossaries = selectAll("glossary", mdast2);
  glossaries.forEach((glossary) => {
    glossary.children.forEach((list6) => {
      var _a6;
      if (list6.type !== "definitionList") {
        fileError(file, "Unexpected node as a child of a glossary, expected only `definitionList` children", {
          node: list6,
          ruleId: RuleId.glossaryUsesDefinitionList
        });
        return;
      }
      (_a6 = list6.children) === null || _a6 === void 0 ? void 0 : _a6.forEach((child) => {
        var _a7;
        if (child.type === "definitionTerm") {
          const { label, identifier, html_id } = (_a7 = normalizeLabel(toText(child))) !== null && _a7 !== void 0 ? _a7 : {};
          child.label = label;
          child.identifier = `term-${identifier}`;
          child.html_id = `term-${html_id}`;
          child.indexEntries = [{ entry: toText(child) }];
        }
      });
    });
  });
}
var glossaryPlugin = () => (tree, file) => {
  glossaryTransform(tree, file);
};

// ../../node_modules/unist-builder/index.js
var u2 = (
  /**
  * @type {BuildVoid & BuildVoidWithProps & BuildLiteral & BuildLiteralWithProps & BuildParent & BuildParentWithProps}
  */
  /**
   * @param {string} type Type of node
   * @param {Props|ChildrenOrValue} [props] Additional properties for node (or `children` or `value`)
   * @param {ChildrenOrValue} [value] `children` or `value` of node
   * @returns {Node}
   */
  (function(type2, props, value) {
    var node3 = { type: String(type2) };
    if ((value === void 0 || value === null) && (typeof props === "string" || Array.isArray(props))) {
      value = props;
    } else {
      Object.assign(node3, props);
    }
    if (Array.isArray(value)) {
      node3.children = value;
    } else if (value !== void 0 && value !== null) {
      node3.value = String(value);
    }
    return node3;
  })
);

// ../myst-transforms/dist/abbreviations.js
var doNotModifyParents = /* @__PURE__ */ new Set(["link", "crossReference", "cite", "code", "abbreviation"]);
function replaceText(mdast2, opts) {
  if (!(opts === null || opts === void 0 ? void 0 : opts.abbreviations) || Object.keys(opts.abbreviations).length === 0)
    return;
  const replacements3 = Object.fromEntries(Object.entries(opts.abbreviations).filter(([abbr]) => abbr.length > 1).sort((a2, b) => b[0].length - a2[0].length || a2[0].localeCompare(b[0])).map(([abbr, title]) => [
    abbr,
    (value, { stack }) => {
      if (!title) {
        return u2("__skippedAbbreviation__", value);
      }
      if (stack.slice(-1)[0].type !== "text")
        return false;
      const parent2 = stack.find((p5) => doNotModifyParents.has(p5.type));
      if (parent2)
        return false;
      return u2("abbreviation", { title }, [u2("text", value)]);
    }
  ]));
  findAndReplace(mdast2, replacements3);
  selectAll("__skippedAbbreviation__", mdast2).forEach((n) => {
    n.type = "text";
  });
}
function abbreviationTransform(mdast2, opts) {
  if (!(opts === null || opts === void 0 ? void 0 : opts.abbreviations) || Object.keys(opts.abbreviations).length === 0)
    return;
  const abbreviations = selectAll("abbreviation", mdast2);
  abbreviations.forEach((node3) => {
    var _a6;
    if (node3.title)
      return;
    const abbr = toText(node3);
    const title = (_a6 = opts.abbreviations) === null || _a6 === void 0 ? void 0 : _a6[abbr];
    if (title)
      node3.title = title;
  });
  replaceText(mdast2, opts);
  if (opts.firstTimeLong) {
    const new_abbreviations = selectAll("abbreviation", mdast2);
    const explained = /* @__PURE__ */ new Set();
    new_abbreviations.forEach((node3) => {
      if (explained.has(node3.title))
        return;
      explained.add(node3.title);
      const short = node3.children[0];
      short.value = `${node3.title} (${short.value})`;
    });
  }
}
var abbreviationPlugin = (opts) => (tree) => {
  abbreviationTransform(tree, opts);
};

// ../myst-transforms/dist/include.js
function updateFrontmatterFromInclude(frontmatter, includeFrontmatter) {
  if (frontmatter.math || (includeFrontmatter === null || includeFrontmatter === void 0 ? void 0 : includeFrontmatter.math)) {
    frontmatter.math = { ...frontmatter.math, ...includeFrontmatter === null || includeFrontmatter === void 0 ? void 0 : includeFrontmatter.math };
  }
  if (frontmatter.abbreviations || (includeFrontmatter === null || includeFrontmatter === void 0 ? void 0 : includeFrontmatter.abbreviations)) {
    frontmatter.abbreviations = {
      ...frontmatter.abbreviations,
      ...includeFrontmatter === null || includeFrontmatter === void 0 ? void 0 : includeFrontmatter.abbreviations
    };
  }
}
async function includeDirectiveTransform(tree, frontmatter, vfile2, opts) {
  const includeNodes = selectAll("include", tree);
  if (includeNodes.length === 0)
    return;
  if (!(opts === null || opts === void 0 ? void 0 : opts.stack))
    opts.stack = [opts.sourceFile];
  await Promise.all(includeNodes.map(async (node3) => {
    var _a6, _b, _c;
    if (node3.children && node3.children.length > 0)
      return;
    const fullFile = opts.resolveFile(node3.file, opts.sourceFile, opts.sourcePath, vfile2);
    if (!fullFile)
      return;
    if ((_a6 = opts.stack) === null || _a6 === void 0 ? void 0 : _a6.includes(fullFile)) {
      fileError(vfile2, `Include Directive: "${fullFile}" depends on itself`, {
        ruleId: RuleId.includeContentLoads,
        note: [...opts.stack, fullFile].join(" > ")
      });
      return;
    }
    const rawContent = await opts.loadFile(fullFile);
    if (rawContent == null)
      return;
    const { content: content3, startingLineNumber } = filterIncludedContent(vfile2, node3.filter, rawContent);
    let children;
    if (node3.literal) {
      const code7 = {
        type: "code",
        value: content3
      };
      if (node3.startingLineNumber === "match") {
        node3.startingLineNumber = startingLineNumber;
      }
      [
        "lang",
        "emphasizeLines",
        "showLineNumbers",
        "startingLineNumber",
        "label",
        "identifier",
        "filename"
      ].forEach((attr) => {
        if (!node3[attr])
          return;
        code7[attr] = node3[attr];
        delete node3[attr];
      });
      if (!node3.caption) {
        children = [code7];
      } else {
        const caption3 = {
          type: "caption",
          children: [
            {
              type: "paragraph",
              children: node3.caption
            }
          ]
        };
        const container4 = {
          type: "container",
          kind: "code",
          children: [code7, caption3]
        };
        transferTargetAttrs(code7, container4, vfile2);
        children = [container4];
      }
    } else {
      const parsed = await opts.parseContent(fullFile, content3);
      children = parsed.mdast.children;
      updateFrontmatterFromInclude(frontmatter, parsed.frontmatter);
    }
    node3.children = children;
    if (!((_b = node3.children) === null || _b === void 0 ? void 0 : _b.length))
      return;
    await includeDirectiveTransform(node3, frontmatter, vfile2, {
      ...opts,
      stack: [...(_c = opts.stack) !== null && _c !== void 0 ? _c : [], fullFile],
      sourceFile: fullFile
    });
  }));
}
function index3(n, total) {
  if (n > 0)
    return [n - 1, n];
  if (n < 0)
    return [total + n, total + n + 1];
  return null;
}
function filterIncludedContent(vfile2, filter6, rawContent) {
  if (!filter6 || Object.keys(filter6).length === 0) {
    return { content: rawContent, startingLineNumber: void 0 };
  }
  const lines = rawContent.split("\n");
  let startingLineNumber;
  if (filter6.lines) {
    const filtered = filter6.lines.map((f3) => {
      var _a6, _b;
      if (typeof f3 === "number") {
        const ind = index3(f3, lines.length);
        if (!ind) {
          fileWarn(vfile2, 'Invalid line number "0", indexing starts at 1', {
            ruleId: RuleId.includeContentFilters
          });
          return [];
        }
        if (!startingLineNumber)
          startingLineNumber = ind[0] + 1;
        return lines.slice(...ind);
      }
      const ind0 = index3(f3[0], lines.length);
      const ind1 = index3((_a6 = f3[1]) !== null && _a6 !== void 0 ? _a6 : lines.length, lines.length);
      if (!ind0 || !ind1) {
        fileWarn(vfile2, 'Invalid line number "0", indexing starts at 1', {
          ruleId: RuleId.includeContentFilters
        });
        return [];
      }
      if (!startingLineNumber)
        startingLineNumber = ind0[0] + 1;
      const slice2 = lines.slice(ind0[0], ind1[1]);
      if (slice2.length === 0) {
        fileWarn(vfile2, `Unexpected lines, from "${f3[0]}" to "${(_b = f3[1]) !== null && _b !== void 0 ? _b : ""}"`, {
          ruleId: RuleId.includeContentFilters
        });
      }
      return slice2;
    });
    return { content: filtered.flat().join("\n"), startingLineNumber };
  }
  let startLine = filter6.startAt || filter6.startAfter ? lines.findIndex((line2) => filter6.startAt && line2.includes(filter6.startAt) || filter6.startAfter && line2.includes(filter6.startAfter)) : 0;
  if (startLine === -1) {
    fileWarn(vfile2, `Could not find starting line including "${filter6.startAt || filter6.startAfter}"`, { ruleId: RuleId.includeContentFilters });
    startLine = 0;
  }
  if (filter6.startAfter)
    startLine += 1;
  let endLine = filter6.endAt || filter6.endBefore ? lines.slice(startLine + 1).findIndex((line2) => filter6.endAt && line2.includes(filter6.endAt) || filter6.endBefore && line2.includes(filter6.endBefore)) : lines.length;
  if (endLine === -1) {
    fileWarn(vfile2, `Could not find ending line including "${filter6.endAt || filter6.endBefore}"`, {
      ruleId: RuleId.includeContentFilters
    });
    endLine = lines.length;
  } else if (filter6.endAt || filter6.endBefore) {
    endLine += startLine;
    if (filter6.endAt)
      endLine += 1;
  }
  startingLineNumber = startLine + 1;
  return { content: lines.slice(startLine, endLine + 1).join("\n"), startingLineNumber };
}

// ../myst-transforms/dist/containers.js
var SUBFIGURE_TYPES = [
  "embed",
  "block",
  "container",
  "image",
  "mermaid",
  "iframe",
  "table",
  "code",
  "output"
];
function warnOnCaptionContent(tree, vfile2) {
  const captions = [...selectAll("caption", tree), ...selectAll("legend", tree)];
  SUBFIGURE_TYPES.forEach((t2) => {
    captions.forEach((caption3) => {
      if (select(t2, caption3)) {
        fileWarn(vfile2, `unexpected figure content of type ${t2} found in ${caption3.type} node`, {
          node: caption3,
          ruleId: RuleId.containerChildrenValid
        });
      }
    });
  });
}
function isPlaceholder(node3) {
  return node3.type === "image" && node3.placeholder;
}
function createSubfigure(node3, parent2) {
  var _a6, _b, _c;
  const children = node3.type === "container" && node3.children ? node3.children : [node3];
  if (node3.type === "image" && node3.alt) {
    children.push({
      type: "caption",
      children: [
        {
          type: "paragraph",
          children: [
            {
              type: "text",
              value: node3.alt
            }
          ]
        }
      ]
    });
    delete node3.alt;
  }
  const { label, identifier } = (_a6 = normalizeLabel(node3.label)) !== null && _a6 !== void 0 ? _a6 : {};
  node3.label = label;
  node3.identifier = identifier;
  const subfigure = {
    type: "container",
    kind: (_c = (_b = node3.kind) !== null && _b !== void 0 ? _b : parent2.kind) !== null && _c !== void 0 ? _c : "figure",
    subcontainer: true,
    children
  };
  transferTargetAttrs(node3, subfigure);
  return subfigure;
}
function hoistContentOutOfParagraphs(tree) {
  const paragraphs = selectAll("paragraph", tree);
  paragraphs.forEach((paragraph4) => {
    const unhoistableChildren = paragraph4.children.filter((child) => {
      if (child.type === "text" && child.value === "\n")
        return false;
      if (SUBFIGURE_TYPES.includes(child.type))
        return false;
      return true;
    });
    if (unhoistableChildren.length > 0)
      return;
    selectAll("text", paragraph4).forEach((child) => {
      child.type = "__delete__";
    });
    paragraph4.type = "__lift__";
  });
  remove(tree, "__delete__");
  liftChildren(tree, "__lift__");
}
function containerChildrenTransform(tree, vfile2) {
  const containers = selectAll("container", tree);
  containers.reverse().forEach((container4) => {
    if (container4.kind === "quote") {
      return;
    }
    hoistContentOutOfParagraphs(container4);
    let subfigures = [];
    let placeholderImage;
    let caption3;
    let legend2;
    const otherNodes = [];
    container4.children.forEach((child) => {
      if (child.type === "caption") {
        if (caption3) {
          fileError(vfile2, "container has multiple captions", {
            node: container4,
            ruleId: RuleId.containerChildrenValid
          });
        } else {
          caption3 = child;
        }
      } else if (child.type === "legend") {
        if (legend2) {
          fileError(vfile2, "container has multiple legends", {
            node: container4,
            ruleId: RuleId.containerChildrenValid
          });
        } else {
          legend2 = child;
        }
      } else if (isPlaceholder(child)) {
        if (placeholderImage) {
          fileError(vfile2, "container has multiple placeholders", {
            node: container4,
            ruleId: RuleId.containerChildrenValid
          });
        } else {
          placeholderImage = child;
        }
      } else if (SUBFIGURE_TYPES.includes(child.type)) {
        subfigures.push(child);
      } else {
        otherNodes.push(child);
      }
    });
    if (!caption3 && otherNodes.length > 0) {
      caption3 = { type: "caption", children: [otherNodes.shift()] };
    }
    if (!legend2 && otherNodes.length > 0) {
      legend2 = { type: "legend", children: [...otherNodes] };
    } else if (otherNodes.length > 0) {
      fileError(vfile2, `container includes unexpected children of ${plural("type(s)", otherNodes)} ${otherNodes.map((n) => n.type).join(", ")}`, { node: container4, ruleId: RuleId.containerChildrenValid });
    }
    if (subfigures.length === 0) {
      const suffix = [
        caption3 ? "caption" : void 0,
        legend2 ? "legend" : void 0,
        placeholderImage ? "placeholder image" : void 0
      ].filter(Boolean).join(", ");
      fileError(vfile2, `container of kind ${container4.kind} contains no valid content${suffix ? " besides " + suffix : ""}`, {
        node: container4,
        ruleId: RuleId.containerChildrenValid,
        note: "Valid content types include image, referenced notebook cell, table, code, iframe, subfigure"
      });
    }
    if (subfigures.length > 1 && !container4.noSubcontainers) {
      subfigures = subfigures.map((node3) => createSubfigure(node3, container4));
    }
    const children = [...subfigures];
    if (placeholderImage)
      children.push(placeholderImage);
    if (container4.kind === "table") {
      if (caption3)
        children.unshift(caption3);
      if (legend2)
        children.push(legend2);
    } else {
      if (caption3)
        children.push(caption3);
      if (legend2)
        children.push(legend2);
    }
    container4.children = children;
  });
  warnOnCaptionContent(tree, vfile2);
}

// ../myst-transforms/dist/headings.js
async function headingDepthTransform(tree, vfile2, opts) {
  if ((opts === null || opts === void 0 ? void 0 : opts.firstDepth) == null)
    return;
  const firstDepth = opts.firstDepth > 0 ? opts.firstDepth : 1;
  const headings = selectAll("heading", tree);
  if (headings.length === 0)
    return;
  const currentDepths = [
    ...new Set(headings.map((heading6) => heading6.depth).filter((depth) => !!depth))
  ].sort();
  for (let i2 = currentDepths[0] + 1; i2 < currentDepths[currentDepths.length - 1]; i2++) {
    if (!currentDepths.includes(i2)) {
      fileWarn(vfile2, `missing heading depth ${i2}`);
    }
  }
  if (currentDepths.length + firstDepth > 7) {
    fileWarn(vfile2, `max number of heading depth levels exceeded; must be \u2264 ${7 - firstDepth}`);
  }
  headings.forEach((heading6) => {
    const depthIndex = currentDepths.indexOf(heading6.depth);
    if (depthIndex < 0)
      return;
    const newDepth = depthIndex + firstDepth;
    heading6.depth = newDepth < 7 ? newDepth : 6;
  });
}

// ../myst-transforms/dist/toc.js
function makeList(children) {
  return { type: "list", children: children != null ? children : [] };
}
function makeListItem(child) {
  return { type: "listItem", children: [child] };
}
function listFromPages(pages, projectSlug) {
  if (pages.length === 0)
    return makeList();
  let ignore3 = false;
  const level = pages[0].level;
  const children = pages.map((page, index4) => {
    if (ignore3)
      return void 0;
    if (page.level < level)
      ignore3 = true;
    if (page.level !== level)
      return void 0;
    return listItemFromPages(pages.slice(index4), projectSlug);
  }).filter((item) => item !== void 0);
  return makeList(children);
}
function listItemFromPages(pages, projectSlug) {
  const page = pages[0];
  const child = transformPage(page, projectSlug);
  const item = makeListItem(child);
  const nextPage = pages[1];
  if (nextPage && nextPage.level > page.level) {
    item.children.push(listFromPages(pages.slice(1), projectSlug));
  }
  return item;
}
function transformPage(page, projectSlug) {
  const { title, slug, url, enumerator, level } = page;
  const text7 = {
    type: "text",
    value: `${enumerator ? `${enumerator} ` : ""}${title}`
  };
  if (url !== void 0) {
    return {
      type: "link",
      url,
      internal: false,
      children: [text7]
    };
  } else if (slug != null) {
    return {
      type: "link",
      url: `${projectSlug ? `/${projectSlug}` : ""}/${slug}`,
      internal: true,
      children: [text7]
    };
  } else {
    return text7;
  }
}
function listFromHeadings(headings) {
  if (headings.length === 0)
    return makeList();
  let ignore3 = false;
  const depth = headings[0].depth;
  const children = headings.map((heading6, index4) => {
    if (ignore3)
      return void 0;
    if (heading6.depth < depth)
      ignore3 = true;
    if (heading6.depth !== depth)
      return void 0;
    return listItemFromHeadings(headings.slice(index4));
  }).filter((item) => item !== void 0);
  return makeList(children);
}
function listItemFromHeadings(headings) {
  const heading6 = headings[0];
  const child = transformHeading(heading6);
  const item = makeListItem(child);
  const nextHeading = headings[1];
  if (nextHeading && nextHeading.depth > heading6.depth) {
    item.children.push(listFromHeadings(headings.slice(1)));
  }
  return item;
}
function transformHeading(heading6) {
  const { children, enumerator, depth, identifier } = heading6;
  const text7 = {
    type: "text",
    value: `${enumerator ? `${enumerator} ` : ""}${toText(children)}`
  };
  return identifier ? {
    type: "link",
    url: `#${identifier}`,
    internal: true,
    children: [text7],
    suppressImplicitWarning: true
  } : text7;
}
function transformProjectTocs(vfile2, tocsAndHeadings, pages, projectSlug) {
  const projectTocs = tocsAndHeadings.filter((node3) => node3.type === "toc" && node3.kind === "project");
  if (projectTocs.length === 0)
    return;
  if (!pages) {
    fileError(vfile2, `Pages not available to build Table of Contents`);
    return;
  }
  if (pages[0].level !== 1) {
    fileWarn(vfile2, `First page of Table of Contents must be level 1`);
  }
  projectTocs.forEach((toc) => {
    const filteredPages = toc.depth ? pages.filter((page) => page.level <= toc.depth) : pages;
    toc.type = "block";
    delete toc.kind;
    toc.data = { part: "toc:project" };
    if (!toc.children)
      toc.children = [];
    toc.children.push(listFromPages(filteredPages, projectSlug));
  });
}
function transformPageTocs(vfile2, tocsAndHeadings) {
  const pageTocs = tocsAndHeadings.filter((node3) => node3.type === "toc" && node3.kind === "page");
  if (pageTocs.length === 0)
    return;
  const headings = tocsAndHeadings.filter((node3) => node3.type === "heading");
  if (headings.length === 0) {
    fileWarn(vfile2, `No page headings found for Table of Contents`);
    return;
  }
  if (Math.min(...headings.map((h4) => h4.depth)) !== headings[0].depth) {
    fileWarn(vfile2, "Page heading levels do not start with highest level");
  }
  pageTocs.forEach((toc) => {
    const filteredHeadings = toc.depth ? headings.filter((heading6) => heading6.depth - headings[0].depth < toc.depth) : headings;
    toc.type = "block";
    delete toc.kind;
    toc.data = { part: "toc:page" };
    if (!toc.children)
      toc.children = [];
    toc.children.push(listFromHeadings(filteredHeadings));
  });
}
function transformSectionTocs(vfile2, tocsAndHeadings) {
  const isSectionToc = (node3) => node3.type === "toc" && node3.kind === "section";
  tocsAndHeadings.forEach((toc, index4) => {
    if (!isSectionToc(toc))
      return;
    const headings = tocsAndHeadings.slice(index4 + 1).filter((h4) => h4.type === "heading");
    if (headings.length === 0) {
      fileWarn(vfile2, `No section headings found for Table of Contents`);
    } else {
      const filteredHeadings = toc.depth ? headings.filter((heading6) => heading6.depth - headings[0].depth < toc.depth) : headings;
      toc.type = "block";
      delete toc.kind;
      toc.data = { part: "toc:section" };
      if (!toc.children)
        toc.children = [];
      const nextSection = filteredHeadings.findIndex((h4) => h4.depth < filteredHeadings[0].depth);
      toc.children.push(listFromHeadings(nextSection === -1 ? filteredHeadings : filteredHeadings.slice(0, nextSection)));
    }
  });
}
function buildTocTransform(mdast2, vfile2, pages, projectSlug) {
  const tocHeadings = selectAll("toc > heading", mdast2);
  const tocsAndHeadings = selectAll("toc,heading", mdast2).filter((item) => {
    return !tocHeadings.includes(item);
  });
  transformProjectTocs(vfile2, tocsAndHeadings, pages, projectSlug);
  transformPageTocs(vfile2, tocsAndHeadings);
  transformSectionTocs(vfile2, tocsAndHeadings);
}

// ../myst-transforms/dist/enumerate.js
var TRANSFORM_NAME2 = "myst-transforms:enumerate";
var DEFAULT_NUMBERING = {
  equation: { enabled: true, template: "(%s)" },
  subequation: { enabled: true, template: "(%s)" },
  figure: { enabled: true, template: "Figure\xA0%s" },
  subfigure: { enabled: true, template: "Figure\xA0%s" },
  table: { enabled: true, template: "Table\xA0%s" },
  code: { enabled: true, template: "Program\xA0%s" },
  heading_1: { template: "Section\xA0%s" },
  heading_2: { template: "Section\xA0%s" },
  heading_3: { template: "Section\xA0%s" },
  heading_4: { template: "Section\xA0%s" },
  heading_5: { template: "Section\xA0%s" },
  heading_6: { template: "Section\xA0%s" }
};
function getDefaultNumberedReferenceTemplate(kind) {
  if (kind === "code")
    kind = "program";
  const domain = kind.includes(":") ? kind.split(":")[1] : kind;
  return `${domain.slice(0, 1).toUpperCase()}${domain.slice(1)}\xA0%s`;
}
function getDefaultNamedReferenceTemplate(kind = "unknown", hasTitle) {
  const domain = kind.includes(":") ? kind.split(":")[1] : kind;
  const name3 = `${domain.slice(0, 1).toUpperCase()}${domain.slice(1)}`;
  switch (kind) {
    // TODO: These need to be moved to the directive definition in an extension
    case "proof":
    case "exercise":
      return hasTitle ? `${name3} ({name})` : name3;
    default:
      if (hasTitle)
        return "{name}";
      return name3;
  }
}
function getReferenceTemplate(target, numbering, numbered2, hasTitle, offset) {
  var _a6, _b, _c, _d2;
  const { kind, node: node3 } = target;
  let template;
  if (numbered2) {
    if (kind === TargetKind.heading && node3.type === "heading") {
      template = (_b = numbering[`heading_${node3.depth - (((_a6 = numbering === null || numbering === void 0 ? void 0 : numbering.title) === null || _a6 === void 0 ? void 0 : _a6.enabled) ? 0 : 1) + (offset !== null && offset !== void 0 ? offset : 0)}`]) === null || _b === void 0 ? void 0 : _b.template;
    } else if (node3.subcontainer) {
      template = (_c = numbering.subfigure) === null || _c === void 0 ? void 0 : _c.template;
    } else {
      template = (_d2 = numbering[kind]) === null || _d2 === void 0 ? void 0 : _d2.template;
    }
    return template !== null && template !== void 0 ? template : getDefaultNumberedReferenceTemplate(kind);
  }
  return getDefaultNamedReferenceTemplate(kind, hasTitle);
}
var ReferenceKind2;
(function(ReferenceKind3) {
  ReferenceKind3["ref"] = "ref";
  ReferenceKind3["numref"] = "numref";
  ReferenceKind3["eq"] = "eq";
})(ReferenceKind2 || (ReferenceKind2 = {}));
var UNKNOWN_REFERENCE_ENUMERATOR = "??";
function fillReferenceEnumerators2(file, node3, template, target, title) {
  var _a6, _b;
  const noNodeChildren = !((_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.length);
  if (noNodeChildren) {
    setTextAsChild(node3, template);
  }
  const num = (target === null || target === void 0 ? void 0 : target.enumerator) != null ? `${(_b = target.parentEnumerator) !== null && _b !== void 0 ? _b : ""}${target.enumerator}` : UNKNOWN_REFERENCE_ENUMERATOR;
  if (!node3.template)
    node3.template = template;
  if (num && num !== UNKNOWN_REFERENCE_ENUMERATOR)
    node3.enumerator = num;
  const used = {
    s: false,
    number: false,
    name: false
  };
  findAndReplace(node3, {
    "%s": () => {
      used.s = true;
      return num;
    },
    "{subEnumerator}": () => {
      var _a7;
      used.number = true;
      return (_a7 = target === null || target === void 0 ? void 0 : target.enumerator) !== null && _a7 !== void 0 ? _a7 : UNKNOWN_REFERENCE_ENUMERATOR;
    },
    "{number}": () => {
      used.number = true;
      return num;
    },
    "{name}": () => {
      used.name = true;
      return title || node3.label || node3.identifier;
    }
  });
  if (num === UNKNOWN_REFERENCE_ENUMERATOR && (used.number || used.s) && file) {
    const numberType2 = used.number && used.s ? '"{number}" and "%s"' : `${used.number ? '"number"' : '"%s"'}`;
    fileWarn(file, `Reference for "${node3.identifier}" uses ${numberType2} in the template, but node is not numbered.`, {
      node: node3,
      note: 'The node was filled in with "??" as the number.',
      source: TRANSFORM_NAME2,
      ruleId: RuleId.referenceTemplateFills
    });
  }
}
function kindFromNode2(node3) {
  if (node3.type === "container")
    return node3.kind || TargetKind.figure;
  if (node3.type === "math" && node3.kind === "subequation")
    return TargetKind.subequation;
  if (node3.type === "math" || node3.type === "mathGroup")
    return TargetKind.equation;
  if (node3.kind)
    return `${node3.type}:${node3.kind}`;
  return node3.type;
}
function shouldEnumerateNode(node3, kind, numbering, offset) {
  var _a6, _b, _c, _d2, _e, _f, _g, _h, _j;
  if (node3.enumerated != null)
    return node3.enumerated;
  const enabledDefault = (_b = (_a6 = numbering.all) === null || _a6 === void 0 ? void 0 : _a6.enabled) !== null && _b !== void 0 ? _b : false;
  if (kind === "heading" && node3.type === "heading") {
    return (_e = (_d2 = numbering[`heading_${node3.depth - (((_c = numbering === null || numbering === void 0 ? void 0 : numbering.title) === null || _c === void 0 ? void 0 : _c.enabled) ? 0 : 1) + (offset !== null && offset !== void 0 ? offset : 0)}`]) === null || _d2 === void 0 ? void 0 : _d2.enabled) !== null && _e !== void 0 ? _e : enabledDefault;
  }
  if (node3.subcontainer)
    return (_g = (_f = numbering.subfigure) === null || _f === void 0 ? void 0 : _f.enabled) !== null && _g !== void 0 ? _g : enabledDefault;
  return (_j = (_h = numbering[kind]) === null || _h === void 0 ? void 0 : _h.enabled) !== null && _j !== void 0 ? _j : enabledDefault;
}
function incrementHeadingCounts2(depth, counts) {
  const incrementIndex = depth - 1;
  return counts.map((count2, index4) => {
    if (count2 === null || index4 < incrementIndex)
      return count2;
    if (index4 === incrementIndex)
      return count2 + 1;
    return 0;
  });
}
function formatHeadingEnumerator2(counts, prefix2) {
  counts = counts.filter((d) => d !== null);
  while (counts && counts[counts.length - 1] === 0) {
    counts.pop();
  }
  const enumerator = counts.join(".");
  const out = prefix2 ? prefix2.replace(/%s/g, String(enumerator)) : String(enumerator);
  return out;
}
function initializeTargetCounts(numbering, previousCounts, offset) {
  const heading6 = [1, 2, 3, 4, 5, 6].map((depth, ind) => {
    var _a6, _b, _c, _d2, _e, _f, _g, _h, _j, _k, _l;
    const cont = (_d2 = (_b = (_a6 = numbering[`heading_${depth}`]) === null || _a6 === void 0 ? void 0 : _a6.continue) !== null && _b !== void 0 ? _b : (_c = numbering.all) === null || _c === void 0 ? void 0 : _c.continue) !== null && _d2 !== void 0 ? _d2 : false;
    const enabled = (_h = (_f = (_e = numbering[`heading_${depth}`]) === null || _e === void 0 ? void 0 : _e.enabled) !== null && _f !== void 0 ? _f : (_g = numbering.all) === null || _g === void 0 ? void 0 : _g.enabled) !== null && _h !== void 0 ? _h : true;
    const prevCount = (_j = previousCounts === null || previousCounts === void 0 ? void 0 : previousCounts.heading) === null || _j === void 0 ? void 0 : _j[ind];
    if (cont && enabled && prevCount !== void 0) {
      return prevCount;
    }
    if (((_k = numbering.title) === null || _k === void 0 ? void 0 : _k.enabled) && depth - 1 <= (offset !== null && offset !== void 0 ? offset : 0) && prevCount != null) {
      return prevCount;
    }
    if (!((_l = numbering.title) === null || _l === void 0 ? void 0 : _l.enabled) && depth <= (offset !== null && offset !== void 0 ? offset : 0)) {
      return null;
    }
    return 0;
  });
  const targetCounts = { heading: heading6 };
  Object.entries(previousCounts !== null && previousCounts !== void 0 ? previousCounts : {}).filter(([key2]) => key2 !== "heading").filter(([key2]) => {
    var _a6, _b;
    return ((_a6 = numbering[key2]) === null || _a6 === void 0 ? void 0 : _a6.continue) || ((_b = numbering.all) === null || _b === void 0 ? void 0 : _b.continue);
  }).forEach(([key2, val]) => {
    targetCounts[key2] = { ...val };
  });
  Object.entries(numbering).forEach(([key2, val]) => {
    if (["heading_1", "heading_2", "heading_3", "heading_4", "heading_5", "heading_6"].includes(key2)) {
      const headingIndex = Number.parseInt(key2.slice(-1), 10) - 1;
      if (val.enabled === false) {
        targetCounts.heading[headingIndex] = null;
      } else if (val.start) {
        targetCounts.heading[headingIndex] = val.start - 1;
      }
    } else if (val.start) {
      targetCounts[key2] = { main: val.start - 1, sub: 0 };
    }
  });
  return targetCounts;
}
var ReferenceState = class {
  constructor(filePath, opts) {
    var _a6, _b, _c, _d2, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
    this.numbering = fillNumbering((_a6 = opts === null || opts === void 0 ? void 0 : opts.frontmatter) === null || _a6 === void 0 ? void 0 : _a6.numbering, DEFAULT_NUMBERING);
    this.offset = (_d2 = (_c = (_b = this.numbering) === null || _b === void 0 ? void 0 : _b.title) === null || _c === void 0 ? void 0 : _c.offset) !== null && _d2 !== void 0 ? _d2 : 0;
    this.targetCounts = initializeTargetCounts(this.numbering, opts === null || opts === void 0 ? void 0 : opts.previousCounts, this.offset);
    if (!(opts === null || opts === void 0 ? void 0 : opts.hidden) && (((_e = this.numbering.title) === null || _e === void 0 ? void 0 : _e.enabled) || ((_f = this.numbering.all) === null || _f === void 0 ? void 0 : _f.enabled)) && !((_g = opts === null || opts === void 0 ? void 0 : opts.frontmatter) === null || _g === void 0 ? void 0 : _g.content_includes_title) && ((_h = this.numbering[`heading_${this.offset + 1}`]) === null || _h === void 0 ? void 0 : _h.enabled) !== false) {
      this.targetCounts.heading = incrementHeadingCounts2(this.offset + 1, this.targetCounts.heading);
      this.enumerator = formatHeadingEnumerator2(this.targetCounts.heading, (_k = (_j = this.numbering.title) === null || _j === void 0 ? void 0 : _j.enumerator) !== null && _k !== void 0 ? _k : (_l = this.numbering.enumerator) === null || _l === void 0 ? void 0 : _l.enumerator);
    }
    this.identifiers = (_m = opts === null || opts === void 0 ? void 0 : opts.identifiers) !== null && _m !== void 0 ? _m : [];
    this.targets = {};
    this.vfile = (_o = opts === null || opts === void 0 ? void 0 : opts.vfile) !== null && _o !== void 0 ? _o : new VFile();
    this.filePath = filePath;
    this.url = opts === null || opts === void 0 ? void 0 : opts.url;
    this.dataUrl = opts === null || opts === void 0 ? void 0 : opts.dataUrl;
    this.title = (_p = opts === null || opts === void 0 ? void 0 : opts.frontmatter) === null || _p === void 0 ? void 0 : _p.title;
  }
  addTarget(node3, hidden2) {
    if (!isTargetIdentifierNode(node3))
      return;
    const kind = kindFromNode2(node3);
    const numberNode = !hidden2 && shouldEnumerateNode(node3, kind, this.numbering, this.offset);
    if (numberNode) {
      this.incrementCount(node3, kind);
    }
    if (!node3.html_id) {
      node3.html_id = createHtmlId(node3.identifier);
    }
    if (!node3.identifier)
      return;
    if (this.targets[node3.identifier] || this.identifiers.includes(node3.identifier)) {
      if (!this.vfile)
        return;
      if (node3.implicit)
        return;
      fileWarn(this.vfile, `Duplicate identifier in file "${node3.identifier}"`, {
        node: node3,
        source: TRANSFORM_NAME2,
        ruleId: RuleId.identifierIsUnique
      });
      return;
    }
    this.targets[node3.identifier] = {
      node: node3,
      kind
    };
  }
  resolveEnumerator(val, enumerator) {
    var _a6;
    const prefix2 = enumerator !== null && enumerator !== void 0 ? enumerator : (_a6 = this.numbering.enumerator) === null || _a6 === void 0 ? void 0 : _a6.enumerator;
    return prefix2 ? prefix2.replace(/%s/g, String(val)) : String(val);
  }
  /**
   * Increment target count state for container/equation nodes
   *
   * Updates node `enumerator` in place.
   *
   * If node is subcontainer/subequation, a sub-count is incremented
   */
  incrementCount(node3, kind) {
    var _a6, _b, _c, _d2, _e, _f, _g, _h, _j, _k, _l;
    var _m;
    if (node3.enumerator) {
      return node3.enumerator;
    }
    let enumerator;
    if (kind === TargetKind.heading && node3.type === "heading") {
      this.targetCounts.heading = incrementHeadingCounts2(node3.depth - (((_b = (_a6 = this.numbering) === null || _a6 === void 0 ? void 0 : _a6.title) === null || _b === void 0 ? void 0 : _b.enabled) ? 0 : 1) + this.offset, this.targetCounts.heading);
      enumerator = formatHeadingEnumerator2(this.targetCounts.heading, (_f = (_e = this.numbering[`heading_${node3.depth - (((_d2 = (_c = this.numbering) === null || _c === void 0 ? void 0 : _c.title) === null || _d2 === void 0 ? void 0 : _d2.enabled) ? 0 : 1) + this.offset}`]) === null || _e === void 0 ? void 0 : _e.enumerator) !== null && _f !== void 0 ? _f : (_g = this.numbering.enumerator) === null || _g === void 0 ? void 0 : _g.enumerator);
      node3.enumerator = enumerator;
      return enumerator;
    }
    const countKind = kind === TargetKind.subequation ? TargetKind.equation : kind;
    (_h = (_m = this.targetCounts)[countKind]) !== null && _h !== void 0 ? _h : _m[countKind] = { main: 0, sub: 0 };
    if (node3.subcontainer || kind === TargetKind.subequation) {
      this.targetCounts[countKind].sub += 1;
      const letter = String.fromCharCode((this.targetCounts[countKind].sub - 1) % 26 + "a".charCodeAt(0));
      if (node3.subcontainer) {
        node3.parentEnumerator = this.resolveEnumerator(this.targetCounts[countKind].main, (_j = this.numbering[countKind]) === null || _j === void 0 ? void 0 : _j.enumerator);
        enumerator = letter;
      } else {
        enumerator = this.resolveEnumerator(this.targetCounts[countKind].main + letter, (_k = this.numbering[countKind]) === null || _k === void 0 ? void 0 : _k.enumerator);
      }
    } else {
      this.targetCounts[kind].main += 1;
      this.targetCounts[kind].sub = 0;
      enumerator = this.resolveEnumerator(this.targetCounts[kind].main, (_l = this.numbering[kind]) === null || _l === void 0 ? void 0 : _l.enumerator);
    }
    node3.enumerator = enumerator;
    return enumerator;
  }
  resolveStateProvider(identifier, page) {
    if (!identifier || !page || page !== this.filePath)
      return;
    if (this.getTarget(identifier) || this.getFileTarget(identifier))
      return this;
  }
  getIdentifiers() {
    return [...this.identifiers, ...Object.keys(this.targets)];
  }
  getTarget(identifier) {
    if (!identifier)
      return void 0;
    return this.targets[identifier];
  }
  getAllTargets() {
    return [...Object.values(this.targets)];
  }
  getFileTarget(identifier) {
    if (!identifier)
      return void 0;
    if (this.identifiers.includes(identifier))
      return this;
  }
  resolveReferenceContent(node3) {
    const fileTarget = this.getFileTarget(node3.identifier);
    if (fileTarget) {
      const { url, title, dataUrl } = fileTarget;
      if (url) {
        const nodeAsLink = node3;
        nodeAsLink.type = "link";
        nodeAsLink.url = url;
        nodeAsLink.internal = true;
        if (dataUrl)
          nodeAsLink.dataUrl = dataUrl;
        updateLinkTextIfEmpty(nodeAsLink, title !== null && title !== void 0 ? title : url);
      }
      return;
    }
    const target = this.getTarget(node3.identifier);
    if (!target) {
      warnNodeTargetNotFound(node3, this.vfile);
      return;
    }
    node3.kind = target.kind;
    addChildrenFromTargetNode(node3, target.node, this.numbering, this.vfile, this.offset);
  }
};
function addChildrenFromTargetNode(node3, targetNode, numbering, vfile2, offset) {
  var _a6, _b, _c, _d2, _e;
  numbering = fillNumbering(numbering, DEFAULT_NUMBERING);
  const kind = kindFromNode2(targetNode);
  const noNodeChildren = !((_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.length);
  if (kind === TargetKind.heading) {
    const numberHeading = shouldEnumerateNode(targetNode, TargetKind.heading, numbering);
    const template = getReferenceTemplate({ node: targetNode, kind }, numbering, numberHeading, true, offset);
    fillReferenceEnumerators2(vfile2, node3, template, targetNode, copyNode(targetNode).children);
  } else {
    const caption3 = select("caption", targetNode) || select("admonitionTitle", targetNode) || select("definitionTerm", targetNode);
    const captionParagraph = caption3 ? (_b = select("paragraph", caption3)) !== null && _b !== void 0 ? _b : caption3 : caption3;
    const title = captionParagraph ? (_c = copyNode(captionParagraph)) === null || _c === void 0 ? void 0 : _c.children : void 0;
    if (title && node3.kind === ReferenceKind2.ref && noNodeChildren) {
      node3.children = title;
    }
    const template = getReferenceTemplate({ node: targetNode, kind }, numbering, !!targetNode.enumerator, !!title, offset);
    fillReferenceEnumerators2(vfile2, node3, template, targetNode, title);
  }
  node3.resolved = true;
  node3.identifier = (_d2 = targetNode.identifier) !== null && _d2 !== void 0 ? _d2 : node3.identifier;
  node3.html_id = (_e = targetNode.html_id) !== null && _e !== void 0 ? _e : node3.html_id;
}
function warnNodeTargetNotFound(node3, vfile2) {
  if (!vfile2)
    return;
  fileWarn(vfile2, `Cross reference target was not found: ${node3.identifier}`, {
    node: node3,
    source: TRANSFORM_NAME2,
    ruleId: RuleId.referenceTargetResolves
  });
}
var MultiPageReferenceResolver = class {
  constructor(states, filePath, vfile2 = new VFile()) {
    this.states = states;
    this.filePath = filePath;
    this.vfile = vfile2;
  }
  resolveStateProvider(identifier, page) {
    if (!identifier)
      return void 0;
    const resolvedState = this.states.find((state) => {
      if (page && page !== state.filePath)
        return false;
      return !!state.getTarget(identifier) || !!state.getFileTarget(identifier);
    });
    return resolvedState;
  }
  getIdentifiers() {
    return this.states.map((state) => state.getIdentifiers()).flat();
  }
  getTarget(identifier, page) {
    const state = this.resolveStateProvider(identifier, page);
    return state === null || state === void 0 ? void 0 : state.getTarget(identifier);
  }
  getAllTargets() {
    return this.states.map((state) => state.getAllTargets()).flat();
  }
  getFileTarget(identifier) {
    if (!identifier)
      return void 0;
    return this.states.map((state) => state.getFileTarget(identifier)).find((file) => !!file);
  }
  resolveReferenceContent(node3) {
    const state = this.resolveStateProvider(node3.identifier);
    if (!state) {
      warnNodeTargetNotFound(node3, this.vfile);
      return;
    }
    state === null || state === void 0 ? void 0 : state.resolveReferenceContent(node3);
    if (node3.resolved && (state === null || state === void 0 ? void 0 : state.filePath) !== this.filePath) {
      node3.remote = true;
      node3.url = state.url || void 0;
      node3.dataUrl = state.dataUrl || void 0;
    }
  }
};
var enumerateTargetsTransform = (tree, opts) => {
  visit(tree, (node3) => {
    if (!isTargetIdentifierNode(node3))
      return;
    if (node3.identifier || node3.enumerated || ["container", "mathGroup", "math", "heading", "proof"].includes(node3.type)) {
      opts.state.addTarget(node3, opts === null || opts === void 0 ? void 0 : opts.hidden);
    }
  });
  selectAll("container", tree).filter((container4) => !container4.subcontainer).forEach((parent2) => {
    selectAll("container[subcontainer]", parent2).forEach((sub2) => {
      var _a6, _b;
      const parentLabel = (_a6 = parent2.label) !== null && _a6 !== void 0 ? _a6 : parent2.identifier;
      if (sub2.identifier || !parentLabel || !sub2.enumerator)
        return;
      const { label, identifier } = (_b = normalizeLabel(`${parentLabel}-${sub2.enumerator}`)) !== null && _b !== void 0 ? _b : {};
      sub2.label = label;
      sub2.identifier = identifier;
      sub2.implicit = true;
      opts.state.addTarget(sub2, opts === null || opts === void 0 ? void 0 : opts.hidden);
    });
  });
  return tree;
};
function getCaptionLabel(kind, subcontainer) {
  if (subcontainer && (kind === "equation" || kind === "subequation"))
    return `(%s)`;
  if (subcontainer)
    return `({subEnumerator})`;
  if (!kind)
    return "Figure\xA0%s:";
  const template = getDefaultNumberedReferenceTemplate(kind);
  return `${template}:`;
}
function addContainerCaptionNumbersTransform(tree, file, opts) {
  const containers = selectAll("container", tree);
  containers.filter((container4) => container4.enumerator).forEach((container4) => {
    var _a6, _b, _c;
    const target = (_a6 = opts.state.getTarget(container4.identifier)) === null || _a6 === void 0 ? void 0 : _a6.node;
    if (!(target === null || target === void 0 ? void 0 : target.enumerator))
      return;
    let para = select("paragraph", container4.children.find((child) => child.type === "caption"));
    if (container4.subcontainer && !para) {
      para = { type: "paragraph", children: [] };
      container4.children.push({ type: "caption", children: [para] });
    }
    if (para && ((_b = para.children[0]) === null || _b === void 0 ? void 0 : _b.type) === "captionNumber") {
      para.children = para.children.slice(1);
    }
    if (para) {
      const captionNumber3 = {
        type: "captionNumber",
        kind: container4.kind,
        label: container4.label,
        identifier: container4.identifier,
        html_id: container4.html_id,
        enumerator: target.enumerator
      };
      fillReferenceEnumerators2(file, captionNumber3, getCaptionLabel(container4.kind, container4.subcontainer), target);
      para.children = [captionNumber3, ...(_c = para === null || para === void 0 ? void 0 : para.children) !== null && _c !== void 0 ? _c : []];
    }
  });
}
function implicitTargetWarning(target, node3, opts) {
  if (target.node.implicit && opts.state.vfile && !node3.suppressImplicitWarning) {
    fileWarn(opts.state.vfile, `Linking "${target.node.identifier}" to an implicit ${target.kind} reference, best practice is to create an explicit reference.`, {
      node: node3,
      note: "Explicit references do not break when you update the title to a section, they are preferred over using the implicit HTML ID created for headers.",
      source: TRANSFORM_NAME2,
      ruleId: RuleId.referenceTargetExplicit
    });
  }
  delete node3.suppressImplicitWarning;
}
var resolveReferenceLinksTransform = (tree, opts) => {
  selectAll("link", tree).forEach((node3) => {
    var _a6;
    const link4 = node3;
    const identifier = link4.url.replace(/^#/, "");
    const reference = normalizeLabel(identifier);
    const target = (_a6 = opts.state.getTarget(identifier)) !== null && _a6 !== void 0 ? _a6 : opts.state.getTarget(reference === null || reference === void 0 ? void 0 : reference.identifier);
    const fileTarget = opts.state.getFileTarget(reference === null || reference === void 0 ? void 0 : reference.identifier);
    if (!(target || fileTarget) || !reference) {
      if (!opts.state.vfile || !link4.url.startsWith("#"))
        return;
      fileWarn(opts.state.vfile, `No target for internal reference "${link4.url}" was found.`, {
        node: node3,
        source: TRANSFORM_NAME2,
        ruleId: RuleId.referenceTargetResolves
      });
      return;
    }
    if (!link4.url.startsWith("#") && opts.state.vfile) {
      fileWarn(opts.state.vfile, `Legacy syntax used for link target, please prepend a '#' to your link url: "${link4.url}"`, {
        node: node3,
        note: "The link target should be of the form `[](#target)`, including the `#` sign.\nThis may be deprecated in the future.",
        source: TRANSFORM_NAME2,
        ruleId: RuleId.referenceSyntaxValid
      });
      const source2 = link4.urlSource;
      if (source2) {
        link4.urlSource = `#${source2}`;
      }
    }
    const xref = link4;
    xref.type = "crossReference";
    xref.identifier = reference.identifier;
    xref.label = reference.label;
    delete xref.kind;
    delete xref.url;
    if (target)
      implicitTargetWarning(target, node3, opts);
  });
};
var resolveUnlinkedCitations = (tree, opts) => {
  selectAll("cite", tree).forEach((node3) => {
    var _a6, _b;
    const cite3 = node3;
    if (!cite3.error)
      return;
    const reference = normalizeLabel(cite3.label);
    if (reference) {
      const target = (_a6 = opts.state.getTarget(cite3.label)) !== null && _a6 !== void 0 ? _a6 : opts.state.getTarget(reference.identifier);
      const fileTarget = opts.state.getFileTarget(reference.identifier);
      if (target || fileTarget) {
        const xref = cite3;
        xref.type = "crossReference";
        xref.identifier = reference.identifier;
        xref.label = reference.label;
        delete cite3.error;
        if (target)
          implicitTargetWarning(target, node3, opts);
        return;
      }
    }
    const transformer = (_b = opts.transformers) === null || _b === void 0 ? void 0 : _b.find((t2) => t2.test(cite3.label));
    if (transformer) {
      const link4 = cite3;
      link4.type = "link";
      link4.url = cite3.label;
      delete cite3.error;
      return;
    }
    if (!opts.state.vfile)
      return;
    fileWarn(opts.state.vfile, `Could not link citation with label "${cite3.label}".`, {
      node: node3,
      source: TRANSFORM_NAME2,
      ruleId: RuleId.referenceTargetResolves
    });
  });
};
function unnestCrossReferencesTransform(tree) {
  const xrefs = selectAll("crossReference", tree);
  xrefs.forEach((xref) => {
    const children = xref.children;
    if (!children)
      return;
    const subtree = { type: "root", children: copyNode(children) };
    const nested = select("crossReference,link", subtree);
    if (!nested)
      return;
    liftChildren(subtree, "link");
    liftChildren(subtree, "crossReference");
    xref.children = subtree.children;
  });
  return tree.children;
}
var resolveCrossReferencesTransform = (tree, opts) => {
  visit(tree, "crossReference", (node3) => {
    const { protocol } = node3;
    if (protocol && protocol !== "file")
      return;
    opts.state.resolveReferenceContent(node3);
  });
};
var resolveLinksAndCitationsTransform = (tree, opts) => {
  resolveReferenceLinksTransform(tree, opts);
  resolveUnlinkedCitations(tree, opts);
};
var resolveReferencesTransform = (tree, file, opts) => {
  resolveCrossReferencesTransform(tree, opts);
  addContainerCaptionNumbersTransform(tree, file, opts);
  unnestCrossReferencesTransform(tree);
};

// ../myst-transforms/dist/removeUnicode.js
var remove2 = ["\x07", "\b", ""];
function removeUnicodeTransform(tree) {
  const textNodes = selectAll("text", tree);
  textNodes.forEach((text7) => {
    text7.value = remove2.reduce((p5, r2) => p5.replaceAll(r2, ""), text7.value);
  });
}

// ../myst-transforms/dist/basic.js
function basicTransformations(tree, file, opts) {
  liftMystDirectivesAndRolesTransform(tree);
  mystTargetsTransform(tree, file);
  captionParagraphTransform(tree);
  codeBlockToDirectiveTransform(tree, file, { translate: ["math", "mermaid"] });
  mathNestingTransform(tree, file);
  mathLabelTransform(tree, file);
  subequationTransform(tree, file);
  headingLabelTransform(tree);
  admonitionQmdTransform(tree);
  admonitionBlockquoteTransform(tree);
  admonitionHeadersTransform(tree);
  joinGatesTransform(tree, file);
  blockNestingTransform(tree);
  blockMetadataTransform(tree, file);
  blockToFigureTransform(tree, opts);
  containerChildrenTransform(tree, file);
  htmlIdsTransform(tree);
  imageAltTextTransform(tree);
  blockquoteTransform(tree);
  removeUnicodeTransform(tree);
  headingDepthTransform(tree, file, opts);
  inlineCodeFlattenTransform(tree, file);
}
var basicTransformationsPlugin = (opts) => (tree, file) => {
  basicTransformations(tree, file, opts);
};

// ../myst-transforms/dist/frontmatter.js
function getFrontmatter(file, tree, opts = { propagateTargets: true }) {
  var _a6, _b, _c, _d2, _e, _f;
  if (opts.propagateTargets) {
    liftMystDirectivesAndRolesTransform(tree);
    mystTargetsTransform(tree, file);
  }
  const firstParent = ((_a6 = tree.children[0]) === null || _a6 === void 0 ? void 0 : _a6.type) === "block" ? tree.children[0] : tree;
  const firstNode = (_b = firstParent.children) === null || _b === void 0 ? void 0 : _b[0];
  const nextNonCommentNode = (_d2 = (_c = firstParent.children) === null || _c === void 0 ? void 0 : _c.slice(1)) === null || _d2 === void 0 ? void 0 : _d2.find((child) => child.type !== "comment");
  let secondNode;
  if ((nextNonCommentNode === null || nextNonCommentNode === void 0 ? void 0 : nextNonCommentNode.type) === "block") {
    secondNode = (_e = nextNonCommentNode === null || nextNonCommentNode === void 0 ? void 0 : nextNonCommentNode.children) === null || _e === void 0 ? void 0 : _e.find((child) => child.type !== "comment");
  } else {
    secondNode = nextNonCommentNode;
  }
  let frontmatter = {};
  const identifiers = [];
  const firstIsYaml = (firstNode === null || firstNode === void 0 ? void 0 : firstNode.type) === "code" && (firstNode === null || firstNode === void 0 ? void 0 : firstNode.lang) === "yaml";
  if (firstIsYaml) {
    try {
      frontmatter = js_yaml_default.load(firstNode.value) || {};
      firstNode.type = "__delete__";
    } catch (err) {
      fileError(file, "Invalid YAML frontmatter", {
        note: err.message,
        ruleId: RuleId.frontmatterIsYaml
      });
    }
  }
  if (opts.preFrontmatter) {
    frontmatter = fillProjectFrontmatter(opts.preFrontmatter, frontmatter, {
      property: "frontmatter",
      file: file.path,
      messages: {},
      errorLogFn: (message) => {
        fileError(file, message, { ruleId: RuleId.validPageFrontmatter });
      },
      warningLogFn: (message) => {
        fileWarn(file, message, { ruleId: RuleId.validPageFrontmatter });
      }
    });
  }
  if (frontmatter.content_includes_title != null) {
    fileWarn(file, `'frontmatter' cannot explicitly set: content_includes_title`, {
      ruleId: RuleId.validPageFrontmatter
    });
    delete frontmatter.content_includes_title;
  }
  const titleNull = frontmatter.title === null;
  if (titleNull)
    delete frontmatter.title;
  const firstHeadingNode = select("heading", tree);
  if (!frontmatter.title && firstHeadingNode) {
    const title = toText(firstHeadingNode.children);
    frontmatter.title = title;
    frontmatter.content_includes_title = true;
  }
  const firstIsComment = (firstNode === null || firstNode === void 0 ? void 0 : firstNode.type) === "comment";
  const nextNode = firstIsYaml || firstIsComment ? secondNode : firstNode;
  const nextNodeIsH1 = (nextNode === null || nextNode === void 0 ? void 0 : nextNode.type) === "heading" && nextNode.depth === 1;
  if (nextNodeIsH1 && !titleNull) {
    const title = toText(nextNode.children);
    if (frontmatter.title && frontmatter.title === title && !opts.keepTitleNode) {
      nextNode.type = "__delete__";
      frontmatter.content_includes_title = false;
      if (nextNode.label) {
        const { identifier } = (_f = normalizeLabel(nextNode.label)) !== null && _f !== void 0 ? _f : {};
        if (identifier)
          identifiers.push(identifier);
      }
    }
  }
  const possibleNull = remove(tree, "__delete__");
  if (possibleNull === null) {
    remove(tree, { cascade: false }, "__delete__");
  }
  return { tree, frontmatter, identifiers };
}

// ../myst-cli/dist/store/selectors.js
var selectors_exports = {};
__export(selectors_exports, {
  selectAffiliation: () => selectAffiliation,
  selectAllDependencies: () => selectAllDependencies,
  selectConfigExtensions: () => selectConfigExtensions,
  selectCurrentProjectConfig: () => selectCurrentProjectConfig,
  selectCurrentProjectFile: () => selectCurrentProjectFile,
  selectCurrentProjectPath: () => selectCurrentProjectPath,
  selectCurrentSiteConfig: () => selectCurrentSiteConfig,
  selectCurrentSiteFile: () => selectCurrentSiteFile,
  selectCurrentSitePath: () => selectCurrentSitePath,
  selectDependentFiles: () => selectDependentFiles,
  selectFileDependencies: () => selectFileDependencies,
  selectFileFromPart: () => selectFileFromPart,
  selectFileInfo: () => selectFileInfo,
  selectFileParts: () => selectFileParts,
  selectFileWarnings: () => selectFileWarnings,
  selectFileWarningsByRule: () => selectFileWarningsByRule,
  selectLinkStatus: () => selectLinkStatus,
  selectLocalConfigFile: () => selectLocalConfigFile,
  selectLocalProject: () => selectLocalProject,
  selectLocalProjectConfig: () => selectLocalProjectConfig,
  selectLocalRawConfig: () => selectLocalRawConfig,
  selectLocalSiteConfig: () => selectLocalSiteConfig,
  selectPageSlug: () => selectPageSlug,
  selectProjectParts: () => selectProjectParts,
  selectReloadingState: () => selectReloadingState
});
var import_node_path4 = require("path");
function mutableCopy(obj) {
  if (!obj)
    return;
  return JSON.parse(JSON.stringify(obj));
}
function selectLocalProject(state, path45) {
  return mutableCopy(state.local.projects[(0, import_node_path4.resolve)(path45)]);
}
function selectAffiliation(state, id) {
  return state.local.affiliations[id];
}
function selectLocalSiteConfig(state, path45) {
  return mutableCopy(state.local.config.sites[(0, import_node_path4.resolve)(path45)]);
}
function selectCurrentSiteConfig(state) {
  if (!state.local.config.currentSitePath)
    return void 0;
  const config3 = state.local.config.sites[(0, import_node_path4.resolve)(state.local.config.currentSitePath)];
  const path45 = selectCurrentProjectPath(state);
  if (config3.projects || !path45)
    return config3;
  return { ...config3, projects: [{ path: path45 }] };
}
function selectCurrentSitePath(state) {
  return state.local.config.currentSitePath;
}
function selectCurrentSiteFile(state) {
  if (!state.local.config.currentSitePath)
    return void 0;
  return state.local.config.filenames[(0, import_node_path4.resolve)(state.local.config.currentSitePath)];
}
function selectLocalProjectConfig(state, path45) {
  return mutableCopy(state.local.config.projects[(0, import_node_path4.resolve)(path45)]);
}
function selectCurrentProjectConfig(state) {
  if (!state.local.config.currentProjectPath)
    return void 0;
  return mutableCopy(state.local.config.projects[(0, import_node_path4.resolve)(state.local.config.currentProjectPath)]);
}
function selectProjectParts(state, path45) {
  var _a6;
  return [...(_a6 = state.local.config.projectParts[(0, import_node_path4.resolve)(path45)]) !== null && _a6 !== void 0 ? _a6 : []];
}
function selectFileParts(state, file) {
  var _a6;
  return [...(_a6 = state.local.config.fileParts[(0, import_node_path4.resolve)(file)]) !== null && _a6 !== void 0 ? _a6 : []];
}
function selectFileFromPart(state, partFile) {
  let file;
  Object.entries(state.local.config.fileParts).forEach(([key2, value]) => {
    if (file)
      return;
    if (value.includes(partFile))
      file = key2;
  });
  return file;
}
function selectCurrentProjectPath(state) {
  return state.local.config.currentProjectPath;
}
function selectCurrentProjectFile(state) {
  if (!state.local.config.currentProjectPath)
    return void 0;
  return state.local.config.filenames[(0, import_node_path4.resolve)(state.local.config.currentProjectPath)];
}
function selectLocalConfigFile(state, path45) {
  return state.local.config.filenames[(0, import_node_path4.resolve)(path45)];
}
function selectLocalRawConfig(state, path45) {
  return mutableCopy(state.local.config.rawConfigs[(0, import_node_path4.resolve)(path45)]);
}
function selectConfigExtensions(state) {
  var _a6;
  return [...(_a6 = state.local.config.configExtensions) !== null && _a6 !== void 0 ? _a6 : []];
}
function selectReloadingState(state) {
  const { reloading, reloadRequested } = state.local.watch;
  return { reloading, reloadRequested };
}
function selectFileInfo(state, path45) {
  var _a6;
  const { title, short_title, description, date, thumbnail, thumbnailOptimized, banner, bannerOptimized, tags, sha256, url, dataUrl } = (_a6 = state.local.watch.files[(0, import_node_path4.resolve)(path45)]) !== null && _a6 !== void 0 ? _a6 : {};
  return {
    title,
    short_title,
    description,
    date,
    thumbnail,
    thumbnailOptimized,
    banner,
    bannerOptimized,
    tags,
    sha256,
    url,
    dataUrl
  };
}
function selectFileDependencies(state, path45) {
  var _a6, _b;
  return (_b = (_a6 = state.local.watch.files[(0, import_node_path4.resolve)(path45)]) === null || _a6 === void 0 ? void 0 : _a6.localDependencies) !== null && _b !== void 0 ? _b : [];
}
function selectAllDependencies(state, projectPath) {
  return Object.entries(state.local.watch.files).filter(([file]) => !projectPath || file.startsWith((0, import_node_path4.resolve)(projectPath))).map(([, value]) => {
    var _a6;
    return (_a6 = value.localDependencies) !== null && _a6 !== void 0 ? _a6 : [];
  }).flat();
}
function selectDependentFiles(state, path45) {
  const dependentFiles = [];
  Object.entries(state.local.watch.files).forEach(([key2, value]) => {
    var _a6;
    if ((_a6 = value.localDependencies) === null || _a6 === void 0 ? void 0 : _a6.includes((0, import_node_path4.resolve)(path45))) {
      dependentFiles.push(key2);
    }
  });
  return dependentFiles;
}
function selectPageSlug(state, projectPath, path45) {
  const project = selectLocalProject(state, projectPath);
  if (!project)
    return void 0;
  if (path45 === project.file)
    return project.index;
  const found2 = project.pages.filter((page) => "file" in page).find(({ file }) => file === path45);
  return found2 === null || found2 === void 0 ? void 0 : found2.slug;
}
function selectLinkStatus(state, url) {
  return mutableCopy(state.local.links[url]);
}
function selectFileWarnings(state, file) {
  return mutableCopy(state.local.warnings[file]);
}
function selectFileWarningsByRule(state, ruleId) {
  const ruleWarnings = [];
  Object.entries(state.local.warnings).forEach(([file, warnings2]) => {
    warnings2.forEach((warning2) => {
      if (warning2.ruleId === ruleId)
        ruleWarnings.push({ file, ...warning2 });
    });
  });
  return ruleWarnings;
}

// ../myst-cli/dist/store/reducers.js
var import_node_path5 = require("path");

// ../../node_modules/redux/dist/redux.mjs
function formatProdErrorMessage(code7) {
  return `Minified Redux error #${code7}; visit https://redux.js.org/Errors?code=${code7} for the full message or use the non-minified dev environment for full errors. `;
}
var $$observable = /* @__PURE__ */ (() => typeof Symbol === "function" && Symbol.observable || "@@observable")();
var symbol_observable_default = $$observable;
var randomString = () => Math.random().toString(36).substring(7).split("").join(".");
var ActionTypes = {
  INIT: `@@redux/INIT${/* @__PURE__ */ randomString()}`,
  REPLACE: `@@redux/REPLACE${/* @__PURE__ */ randomString()}`,
  PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`
};
var actionTypes_default = ActionTypes;
function isPlainObject2(obj) {
  if (typeof obj !== "object" || obj === null)
    return false;
  let proto9 = obj;
  while (Object.getPrototypeOf(proto9) !== null) {
    proto9 = Object.getPrototypeOf(proto9);
  }
  return Object.getPrototypeOf(obj) === proto9 || Object.getPrototypeOf(obj) === null;
}
function miniKindOf(val) {
  if (val === void 0)
    return "undefined";
  if (val === null)
    return "null";
  const type2 = typeof val;
  switch (type2) {
    case "boolean":
    case "string":
    case "number":
    case "symbol":
    case "function": {
      return type2;
    }
  }
  if (Array.isArray(val))
    return "array";
  if (isDate(val))
    return "date";
  if (isError(val))
    return "error";
  const constructorName = ctorName(val);
  switch (constructorName) {
    case "Symbol":
    case "Promise":
    case "WeakMap":
    case "WeakSet":
    case "Map":
    case "Set":
      return constructorName;
  }
  return Object.prototype.toString.call(val).slice(8, -1).toLowerCase().replace(/\s/g, "");
}
function ctorName(val) {
  return typeof val.constructor === "function" ? val.constructor.name : null;
}
function isError(val) {
  return val instanceof Error || typeof val.message === "string" && val.constructor && typeof val.constructor.stackTraceLimit === "number";
}
function isDate(val) {
  if (val instanceof Date)
    return true;
  return typeof val.toDateString === "function" && typeof val.getDate === "function" && typeof val.setDate === "function";
}
function kindOf(val) {
  let typeOfVal = typeof val;
  if (process.env.NODE_ENV !== "production") {
    typeOfVal = miniKindOf(val);
  }
  return typeOfVal;
}
function createStore(reducer, preloadedState, enhancer) {
  if (typeof reducer !== "function") {
    throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);
  }
  if (typeof preloadedState === "function" && typeof enhancer === "function" || typeof enhancer === "function" && typeof arguments[3] === "function") {
    throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage(0) : "It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.");
  }
  if (typeof preloadedState === "function" && typeof enhancer === "undefined") {
    enhancer = preloadedState;
    preloadedState = void 0;
  }
  if (typeof enhancer !== "undefined") {
    if (typeof enhancer !== "function") {
      throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage(1) : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);
    }
    return enhancer(createStore)(reducer, preloadedState);
  }
  let currentReducer = reducer;
  let currentState = preloadedState;
  let currentListeners = /* @__PURE__ */ new Map();
  let nextListeners = currentListeners;
  let listenerIdCounter = 0;
  let isDispatching = false;
  function ensureCanMutateNextListeners() {
    if (nextListeners === currentListeners) {
      nextListeners = /* @__PURE__ */ new Map();
      currentListeners.forEach((listener2, key2) => {
        nextListeners.set(key2, listener2);
      });
    }
  }
  function getState() {
    if (isDispatching) {
      throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage(3) : "You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");
    }
    return currentState;
  }
  function subscribe(listener2) {
    if (typeof listener2 !== "function") {
      throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage(4) : `Expected the listener to be a function. Instead, received: '${kindOf(listener2)}'`);
    }
    if (isDispatching) {
      throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage(5) : "You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.");
    }
    let isSubscribed = true;
    ensureCanMutateNextListeners();
    const listenerId = listenerIdCounter++;
    nextListeners.set(listenerId, listener2);
    return function unsubscribe() {
      if (!isSubscribed) {
        return;
      }
      if (isDispatching) {
        throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage(6) : "You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.");
      }
      isSubscribed = false;
      ensureCanMutateNextListeners();
      nextListeners.delete(listenerId);
      currentListeners = null;
    };
  }
  function dispatch(action) {
    if (!isPlainObject2(action)) {
      throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage(7) : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);
    }
    if (typeof action.type === "undefined") {
      throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage(8) : 'Actions may not have an undefined "type" property. You may have misspelled an action type string constant.');
    }
    if (typeof action.type !== "string") {
      throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage(17) : `Action "type" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);
    }
    if (isDispatching) {
      throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage(9) : "Reducers may not dispatch actions.");
    }
    try {
      isDispatching = true;
      currentState = currentReducer(currentState, action);
    } finally {
      isDispatching = false;
    }
    const listeners = currentListeners = nextListeners;
    listeners.forEach((listener2) => {
      listener2();
    });
    return action;
  }
  function replaceReducer(nextReducer) {
    if (typeof nextReducer !== "function") {
      throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage(10) : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);
    }
    currentReducer = nextReducer;
    dispatch({
      type: actionTypes_default.REPLACE
    });
  }
  function observable() {
    const outerSubscribe = subscribe;
    return {
      /**
       * The minimal observable subscription method.
       * @param observer Any object that can be used as an observer.
       * The observer object should have a `next` method.
       * @returns An object with an `unsubscribe` method that can
       * be used to unsubscribe the observable from the store, and prevent further
       * emission of values from the observable.
       */
      subscribe(observer) {
        if (typeof observer !== "object" || observer === null) {
          throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage(11) : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);
        }
        function observeState() {
          const observerAsObserver = observer;
          if (observerAsObserver.next) {
            observerAsObserver.next(getState());
          }
        }
        observeState();
        const unsubscribe = outerSubscribe(observeState);
        return {
          unsubscribe
        };
      },
      [symbol_observable_default]() {
        return this;
      }
    };
  }
  dispatch({
    type: actionTypes_default.INIT
  });
  const store = {
    dispatch,
    subscribe,
    getState,
    replaceReducer,
    [symbol_observable_default]: observable
  };
  return store;
}
function warning(message) {
  if (typeof console !== "undefined" && typeof console.error === "function") {
    console.error(message);
  }
  try {
    throw new Error(message);
  } catch (e2) {
  }
}
function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {
  const reducerKeys = Object.keys(reducers);
  const argumentName = action && action.type === actionTypes_default.INIT ? "preloadedState argument passed to createStore" : "previous state received by the reducer";
  if (reducerKeys.length === 0) {
    return "Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.";
  }
  if (!isPlainObject2(inputState)) {
    return `The ${argumentName} has unexpected type of "${kindOf(inputState)}". Expected argument to be an object with the following keys: "${reducerKeys.join('", "')}"`;
  }
  const unexpectedKeys = Object.keys(inputState).filter((key2) => !reducers.hasOwnProperty(key2) && !unexpectedKeyCache[key2]);
  unexpectedKeys.forEach((key2) => {
    unexpectedKeyCache[key2] = true;
  });
  if (action && action.type === actionTypes_default.REPLACE)
    return;
  if (unexpectedKeys.length > 0) {
    return `Unexpected ${unexpectedKeys.length > 1 ? "keys" : "key"} "${unexpectedKeys.join('", "')}" found in ${argumentName}. Expected to find one of the known reducer keys instead: "${reducerKeys.join('", "')}". Unexpected keys will be ignored.`;
  }
}
function assertReducerShape(reducers) {
  Object.keys(reducers).forEach((key2) => {
    const reducer = reducers[key2];
    const initialState = reducer(void 0, {
      type: actionTypes_default.INIT
    });
    if (typeof initialState === "undefined") {
      throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage(12) : `The slice reducer for key "${key2}" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);
    }
    if (typeof reducer(void 0, {
      type: actionTypes_default.PROBE_UNKNOWN_ACTION()
    }) === "undefined") {
      throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage(13) : `The slice reducer for key "${key2}" returned undefined when probed with a random type. Don't try to handle '${actionTypes_default.INIT}' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`);
    }
  });
}
function combineReducers(reducers) {
  const reducerKeys = Object.keys(reducers);
  const finalReducers = {};
  for (let i2 = 0; i2 < reducerKeys.length; i2++) {
    const key2 = reducerKeys[i2];
    if (process.env.NODE_ENV !== "production") {
      if (typeof reducers[key2] === "undefined") {
        warning(`No reducer provided for key "${key2}"`);
      }
    }
    if (typeof reducers[key2] === "function") {
      finalReducers[key2] = reducers[key2];
    }
  }
  const finalReducerKeys = Object.keys(finalReducers);
  let unexpectedKeyCache;
  if (process.env.NODE_ENV !== "production") {
    unexpectedKeyCache = {};
  }
  let shapeAssertionError;
  try {
    assertReducerShape(finalReducers);
  } catch (e2) {
    shapeAssertionError = e2;
  }
  return function combination(state = {}, action) {
    if (shapeAssertionError) {
      throw shapeAssertionError;
    }
    if (process.env.NODE_ENV !== "production") {
      const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);
      if (warningMessage) {
        warning(warningMessage);
      }
    }
    let hasChanged = false;
    const nextState = {};
    for (let i2 = 0; i2 < finalReducerKeys.length; i2++) {
      const key2 = finalReducerKeys[i2];
      const reducer = finalReducers[key2];
      const previousStateForKey = state[key2];
      const nextStateForKey = reducer(previousStateForKey, action);
      if (typeof nextStateForKey === "undefined") {
        const actionType = action && action.type;
        throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage(14) : `When called with an action of type ${actionType ? `"${String(actionType)}"` : "(unknown type)"}, the slice reducer for key "${key2}" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`);
      }
      nextState[key2] = nextStateForKey;
      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;
    }
    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;
    return hasChanged ? nextState : state;
  };
}
function compose(...funcs) {
  if (funcs.length === 0) {
    return (arg2) => arg2;
  }
  if (funcs.length === 1) {
    return funcs[0];
  }
  return funcs.reduce((a2, b) => (...args) => a2(b(...args)));
}
function isAction(action) {
  return isPlainObject2(action) && "type" in action && typeof action.type === "string";
}

// ../../node_modules/immer/dist/immer.mjs
var NOTHING = Symbol.for("immer-nothing");
var DRAFTABLE = Symbol.for("immer-draftable");
var DRAFT_STATE = Symbol.for("immer-state");
var errors3 = process.env.NODE_ENV !== "production" ? [
  // All error codes, starting by 0:
  function(plugin5) {
    return `The plugin for '${plugin5}' has not been loaded into Immer. To enable the plugin, import and call \`enable${plugin5}()\` when initializing your application.`;
  },
  function(thing) {
    return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;
  },
  "This object has been frozen and should not be mutated",
  function(data) {
    return "Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? " + data;
  },
  "An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.",
  "Immer forbids circular references",
  "The first or second argument to `produce` must be a function",
  "The third argument to `produce` must be a function or undefined",
  "First argument to `createDraft` must be a plain object, an array, or an immerable object",
  "First argument to `finishDraft` must be a draft returned by `createDraft`",
  function(thing) {
    return `'current' expects a draft, got: ${thing}`;
  },
  "Object.defineProperty() cannot be used on an Immer draft",
  "Object.setPrototypeOf() cannot be used on an Immer draft",
  "Immer only supports deleting array indices",
  "Immer only supports setting array indices and the 'length' property",
  function(thing) {
    return `'original' expects a draft, got: ${thing}`;
  }
  // Note: if more errors are added, the errorOffset in Patches.ts should be increased
  // See Patches.ts for additional errors
] : [];
function die(error, ...args) {
  if (process.env.NODE_ENV !== "production") {
    const e2 = errors3[error];
    const msg = typeof e2 === "function" ? e2.apply(null, args) : e2;
    throw new Error(`[Immer] ${msg}`);
  }
  throw new Error(
    `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`
  );
}
var getPrototypeOf = Object.getPrototypeOf;
function isDraft(value) {
  return !!value && !!value[DRAFT_STATE];
}
function isDraftable(value) {
  var _a6;
  if (!value)
    return false;
  return isPlainObject3(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!((_a6 = value.constructor) == null ? void 0 : _a6[DRAFTABLE]) || isMap(value) || isSet(value);
}
var objectCtorString = Object.prototype.constructor.toString();
function isPlainObject3(value) {
  if (!value || typeof value !== "object")
    return false;
  const proto9 = getPrototypeOf(value);
  if (proto9 === null) {
    return true;
  }
  const Ctor = Object.hasOwnProperty.call(proto9, "constructor") && proto9.constructor;
  if (Ctor === Object)
    return true;
  return typeof Ctor == "function" && Function.toString.call(Ctor) === objectCtorString;
}
function each(obj, iter) {
  if (getArchtype(obj) === 0) {
    Object.entries(obj).forEach(([key2, value]) => {
      iter(key2, value, obj);
    });
  } else {
    obj.forEach((entry, index4) => iter(index4, entry, obj));
  }
}
function getArchtype(thing) {
  const state = thing[DRAFT_STATE];
  return state ? state.type_ : Array.isArray(thing) ? 1 : isMap(thing) ? 2 : isSet(thing) ? 3 : 0;
}
function has2(thing, prop) {
  return getArchtype(thing) === 2 ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);
}
function set2(thing, propOrOldValue, value) {
  const t2 = getArchtype(thing);
  if (t2 === 2)
    thing.set(propOrOldValue, value);
  else if (t2 === 3) {
    thing.add(value);
  } else
    thing[propOrOldValue] = value;
}
function is2(x2, y) {
  if (x2 === y) {
    return x2 !== 0 || 1 / x2 === 1 / y;
  } else {
    return x2 !== x2 && y !== y;
  }
}
function isMap(target) {
  return target instanceof Map;
}
function isSet(target) {
  return target instanceof Set;
}
function latest(state) {
  return state.copy_ || state.base_;
}
function shallowCopy(base5, strict) {
  if (isMap(base5)) {
    return new Map(base5);
  }
  if (isSet(base5)) {
    return new Set(base5);
  }
  if (Array.isArray(base5))
    return Array.prototype.slice.call(base5);
  if (!strict && isPlainObject3(base5)) {
    if (!getPrototypeOf(base5)) {
      const obj = /* @__PURE__ */ Object.create(null);
      return Object.assign(obj, base5);
    }
    return { ...base5 };
  }
  const descriptors = Object.getOwnPropertyDescriptors(base5);
  delete descriptors[DRAFT_STATE];
  let keys2 = Reflect.ownKeys(descriptors);
  for (let i2 = 0; i2 < keys2.length; i2++) {
    const key2 = keys2[i2];
    const desc = descriptors[key2];
    if (desc.writable === false) {
      desc.writable = true;
      desc.configurable = true;
    }
    if (desc.get || desc.set)
      descriptors[key2] = {
        configurable: true,
        writable: true,
        // could live with !!desc.set as well here...
        enumerable: desc.enumerable,
        value: base5[key2]
      };
  }
  return Object.create(getPrototypeOf(base5), descriptors);
}
function freeze(obj, deep = false) {
  if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))
    return obj;
  if (getArchtype(obj) > 1) {
    obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections;
  }
  Object.freeze(obj);
  if (deep)
    each(obj, (_key, value) => freeze(value, true), true);
  return obj;
}
function dontMutateFrozenCollections() {
  die(2);
}
function isFrozen(obj) {
  return Object.isFrozen(obj);
}
var plugins = {};
function getPlugin(pluginKey) {
  const plugin5 = plugins[pluginKey];
  if (!plugin5) {
    die(0, pluginKey);
  }
  return plugin5;
}
var currentScope;
function getCurrentScope() {
  return currentScope;
}
function createScope(parent_, immer_) {
  return {
    drafts_: [],
    parent_,
    immer_,
    // Whenever the modified draft contains a draft from another scope, we
    // need to prevent auto-freezing so the unowned draft can be finalized.
    canAutoFreeze_: true,
    unfinalizedDrafts_: 0
  };
}
function usePatchesInScope(scope2, patchListener) {
  if (patchListener) {
    getPlugin("Patches");
    scope2.patches_ = [];
    scope2.inversePatches_ = [];
    scope2.patchListener_ = patchListener;
  }
}
function revokeScope(scope2) {
  leaveScope(scope2);
  scope2.drafts_.forEach(revokeDraft);
  scope2.drafts_ = null;
}
function leaveScope(scope2) {
  if (scope2 === currentScope) {
    currentScope = scope2.parent_;
  }
}
function enterScope(immer2) {
  return currentScope = createScope(currentScope, immer2);
}
function revokeDraft(draft) {
  const state = draft[DRAFT_STATE];
  if (state.type_ === 0 || state.type_ === 1)
    state.revoke_();
  else
    state.revoked_ = true;
}
function processResult(result, scope2) {
  scope2.unfinalizedDrafts_ = scope2.drafts_.length;
  const baseDraft = scope2.drafts_[0];
  const isReplaced = result !== void 0 && result !== baseDraft;
  if (isReplaced) {
    if (baseDraft[DRAFT_STATE].modified_) {
      revokeScope(scope2);
      die(4);
    }
    if (isDraftable(result)) {
      result = finalize(scope2, result);
      if (!scope2.parent_)
        maybeFreeze(scope2, result);
    }
    if (scope2.patches_) {
      getPlugin("Patches").generateReplacementPatches_(
        baseDraft[DRAFT_STATE].base_,
        result,
        scope2.patches_,
        scope2.inversePatches_
      );
    }
  } else {
    result = finalize(scope2, baseDraft, []);
  }
  revokeScope(scope2);
  if (scope2.patches_) {
    scope2.patchListener_(scope2.patches_, scope2.inversePatches_);
  }
  return result !== NOTHING ? result : void 0;
}
function finalize(rootScope, value, path45) {
  if (isFrozen(value))
    return value;
  const state = value[DRAFT_STATE];
  if (!state) {
    each(
      value,
      (key2, childValue) => finalizeProperty(rootScope, state, value, key2, childValue, path45),
      true
      // See #590, don't recurse into non-enumerable of non drafted objects
    );
    return value;
  }
  if (state.scope_ !== rootScope)
    return value;
  if (!state.modified_) {
    maybeFreeze(rootScope, state.base_, true);
    return state.base_;
  }
  if (!state.finalized_) {
    state.finalized_ = true;
    state.scope_.unfinalizedDrafts_--;
    const result = state.copy_;
    let resultEach = result;
    let isSet2 = false;
    if (state.type_ === 3) {
      resultEach = new Set(result);
      result.clear();
      isSet2 = true;
    }
    each(
      resultEach,
      (key2, childValue) => finalizeProperty(rootScope, state, result, key2, childValue, path45, isSet2)
    );
    maybeFreeze(rootScope, result, false);
    if (path45 && rootScope.patches_) {
      getPlugin("Patches").generatePatches_(
        state,
        path45,
        rootScope.patches_,
        rootScope.inversePatches_
      );
    }
  }
  return state.copy_;
}
function finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {
  if (process.env.NODE_ENV !== "production" && childValue === targetObject)
    die(5);
  if (isDraft(childValue)) {
    const path45 = rootPath && parentState && parentState.type_ !== 3 && // Set objects are atomic since they have no keys.
    !has2(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;
    const res = finalize(rootScope, childValue, path45);
    set2(targetObject, prop, res);
    if (isDraft(res)) {
      rootScope.canAutoFreeze_ = false;
    } else
      return;
  } else if (targetIsSet) {
    targetObject.add(childValue);
  }
  if (isDraftable(childValue) && !isFrozen(childValue)) {
    if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {
      return;
    }
    finalize(rootScope, childValue);
    if (!parentState || !parentState.scope_.parent_)
      maybeFreeze(rootScope, childValue);
  }
}
function maybeFreeze(scope2, value, deep = false) {
  if (!scope2.parent_ && scope2.immer_.autoFreeze_ && scope2.canAutoFreeze_) {
    freeze(value, deep);
  }
}
function createProxyProxy(base5, parent2) {
  const isArray2 = Array.isArray(base5);
  const state = {
    type_: isArray2 ? 1 : 0,
    // Track which produce call this is associated with.
    scope_: parent2 ? parent2.scope_ : getCurrentScope(),
    // True for both shallow and deep changes.
    modified_: false,
    // Used during finalization.
    finalized_: false,
    // Track which properties have been assigned (true) or deleted (false).
    assigned_: {},
    // The parent draft state.
    parent_: parent2,
    // The base state.
    base_: base5,
    // The base proxy.
    draft_: null,
    // set below
    // The base copy with any updated values.
    copy_: null,
    // Called by the `produce` function.
    revoke_: null,
    isManual_: false
  };
  let target = state;
  let traps = objectTraps;
  if (isArray2) {
    target = [state];
    traps = arrayTraps;
  }
  const { revoke, proxy } = Proxy.revocable(target, traps);
  state.draft_ = proxy;
  state.revoke_ = revoke;
  return proxy;
}
var objectTraps = {
  get(state, prop) {
    if (prop === DRAFT_STATE)
      return state;
    const source2 = latest(state);
    if (!has2(source2, prop)) {
      return readPropFromProto(state, source2, prop);
    }
    const value = source2[prop];
    if (state.finalized_ || !isDraftable(value)) {
      return value;
    }
    if (value === peek(state.base_, prop)) {
      prepareCopy(state);
      return state.copy_[prop] = createProxy(value, state);
    }
    return value;
  },
  has(state, prop) {
    return prop in latest(state);
  },
  ownKeys(state) {
    return Reflect.ownKeys(latest(state));
  },
  set(state, prop, value) {
    const desc = getDescriptorFromProto(latest(state), prop);
    if (desc == null ? void 0 : desc.set) {
      desc.set.call(state.draft_, value);
      return true;
    }
    if (!state.modified_) {
      const current2 = peek(latest(state), prop);
      const currentState = current2 == null ? void 0 : current2[DRAFT_STATE];
      if (currentState && currentState.base_ === value) {
        state.copy_[prop] = value;
        state.assigned_[prop] = false;
        return true;
      }
      if (is2(value, current2) && (value !== void 0 || has2(state.base_, prop)))
        return true;
      prepareCopy(state);
      markChanged(state);
    }
    if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'
    (value !== void 0 || prop in state.copy_) || // special case: NaN
    Number.isNaN(value) && Number.isNaN(state.copy_[prop]))
      return true;
    state.copy_[prop] = value;
    state.assigned_[prop] = true;
    return true;
  },
  deleteProperty(state, prop) {
    if (peek(state.base_, prop) !== void 0 || prop in state.base_) {
      state.assigned_[prop] = false;
      prepareCopy(state);
      markChanged(state);
    } else {
      delete state.assigned_[prop];
    }
    if (state.copy_) {
      delete state.copy_[prop];
    }
    return true;
  },
  // Note: We never coerce `desc.value` into an Immer draft, because we can't make
  // the same guarantee in ES5 mode.
  getOwnPropertyDescriptor(state, prop) {
    const owner = latest(state);
    const desc = Reflect.getOwnPropertyDescriptor(owner, prop);
    if (!desc)
      return desc;
    return {
      writable: true,
      configurable: state.type_ !== 1 || prop !== "length",
      enumerable: desc.enumerable,
      value: owner[prop]
    };
  },
  defineProperty() {
    die(11);
  },
  getPrototypeOf(state) {
    return getPrototypeOf(state.base_);
  },
  setPrototypeOf() {
    die(12);
  }
};
var arrayTraps = {};
each(objectTraps, (key2, fn) => {
  arrayTraps[key2] = function() {
    arguments[0] = arguments[0][0];
    return fn.apply(this, arguments);
  };
});
arrayTraps.deleteProperty = function(state, prop) {
  if (process.env.NODE_ENV !== "production" && isNaN(parseInt(prop)))
    die(13);
  return arrayTraps.set.call(this, state, prop, void 0);
};
arrayTraps.set = function(state, prop, value) {
  if (process.env.NODE_ENV !== "production" && prop !== "length" && isNaN(parseInt(prop)))
    die(14);
  return objectTraps.set.call(this, state[0], prop, value, state[0]);
};
function peek(draft, prop) {
  const state = draft[DRAFT_STATE];
  const source2 = state ? latest(state) : draft;
  return source2[prop];
}
function readPropFromProto(state, source2, prop) {
  var _a6;
  const desc = getDescriptorFromProto(source2, prop);
  return desc ? `value` in desc ? desc.value : (
    // This is a very special case, if the prop is a getter defined by the
    // prototype, we should invoke it with the draft as context!
    (_a6 = desc.get) == null ? void 0 : _a6.call(state.draft_)
  ) : void 0;
}
function getDescriptorFromProto(source2, prop) {
  if (!(prop in source2))
    return void 0;
  let proto9 = getPrototypeOf(source2);
  while (proto9) {
    const desc = Object.getOwnPropertyDescriptor(proto9, prop);
    if (desc)
      return desc;
    proto9 = getPrototypeOf(proto9);
  }
  return void 0;
}
function markChanged(state) {
  if (!state.modified_) {
    state.modified_ = true;
    if (state.parent_) {
      markChanged(state.parent_);
    }
  }
}
function prepareCopy(state) {
  if (!state.copy_) {
    state.copy_ = shallowCopy(
      state.base_,
      state.scope_.immer_.useStrictShallowCopy_
    );
  }
}
var Immer2 = class {
  constructor(config3) {
    this.autoFreeze_ = true;
    this.useStrictShallowCopy_ = false;
    this.produce = (base5, recipe, patchListener) => {
      if (typeof base5 === "function" && typeof recipe !== "function") {
        const defaultBase = recipe;
        recipe = base5;
        const self2 = this;
        return function curriedProduce(base22 = defaultBase, ...args) {
          return self2.produce(base22, (draft) => recipe.call(this, draft, ...args));
        };
      }
      if (typeof recipe !== "function")
        die(6);
      if (patchListener !== void 0 && typeof patchListener !== "function")
        die(7);
      let result;
      if (isDraftable(base5)) {
        const scope2 = enterScope(this);
        const proxy = createProxy(base5, void 0);
        let hasError = true;
        try {
          result = recipe(proxy);
          hasError = false;
        } finally {
          if (hasError)
            revokeScope(scope2);
          else
            leaveScope(scope2);
        }
        usePatchesInScope(scope2, patchListener);
        return processResult(result, scope2);
      } else if (!base5 || typeof base5 !== "object") {
        result = recipe(base5);
        if (result === void 0)
          result = base5;
        if (result === NOTHING)
          result = void 0;
        if (this.autoFreeze_)
          freeze(result, true);
        if (patchListener) {
          const p5 = [];
          const ip = [];
          getPlugin("Patches").generateReplacementPatches_(base5, result, p5, ip);
          patchListener(p5, ip);
        }
        return result;
      } else
        die(1, base5);
    };
    this.produceWithPatches = (base5, recipe) => {
      if (typeof base5 === "function") {
        return (state, ...args) => this.produceWithPatches(state, (draft) => base5(draft, ...args));
      }
      let patches, inversePatches;
      const result = this.produce(base5, recipe, (p5, ip) => {
        patches = p5;
        inversePatches = ip;
      });
      return [result, patches, inversePatches];
    };
    if (typeof (config3 == null ? void 0 : config3.autoFreeze) === "boolean")
      this.setAutoFreeze(config3.autoFreeze);
    if (typeof (config3 == null ? void 0 : config3.useStrictShallowCopy) === "boolean")
      this.setUseStrictShallowCopy(config3.useStrictShallowCopy);
  }
  createDraft(base5) {
    if (!isDraftable(base5))
      die(8);
    if (isDraft(base5))
      base5 = current(base5);
    const scope2 = enterScope(this);
    const proxy = createProxy(base5, void 0);
    proxy[DRAFT_STATE].isManual_ = true;
    leaveScope(scope2);
    return proxy;
  }
  finishDraft(draft, patchListener) {
    const state = draft && draft[DRAFT_STATE];
    if (!state || !state.isManual_)
      die(9);
    const { scope_: scope2 } = state;
    usePatchesInScope(scope2, patchListener);
    return processResult(void 0, scope2);
  }
  /**
   * Pass true to automatically freeze all copies created by Immer.
   *
   * By default, auto-freezing is enabled.
   */
  setAutoFreeze(value) {
    this.autoFreeze_ = value;
  }
  /**
   * Pass true to enable strict shallow copy.
   *
   * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.
   */
  setUseStrictShallowCopy(value) {
    this.useStrictShallowCopy_ = value;
  }
  applyPatches(base5, patches) {
    let i2;
    for (i2 = patches.length - 1; i2 >= 0; i2--) {
      const patch4 = patches[i2];
      if (patch4.path.length === 0 && patch4.op === "replace") {
        base5 = patch4.value;
        break;
      }
    }
    if (i2 > -1) {
      patches = patches.slice(i2 + 1);
    }
    const applyPatchesImpl = getPlugin("Patches").applyPatches_;
    if (isDraft(base5)) {
      return applyPatchesImpl(base5, patches);
    }
    return this.produce(
      base5,
      (draft) => applyPatchesImpl(draft, patches)
    );
  }
};
function createProxy(value, parent2) {
  const draft = isMap(value) ? getPlugin("MapSet").proxyMap_(value, parent2) : isSet(value) ? getPlugin("MapSet").proxySet_(value, parent2) : createProxyProxy(value, parent2);
  const scope2 = parent2 ? parent2.scope_ : getCurrentScope();
  scope2.drafts_.push(draft);
  return draft;
}
function current(value) {
  if (!isDraft(value))
    die(10, value);
  return currentImpl(value);
}
function currentImpl(value) {
  if (!isDraftable(value) || isFrozen(value))
    return value;
  const state = value[DRAFT_STATE];
  let copy2;
  if (state) {
    if (!state.modified_)
      return state.base_;
    state.finalized_ = true;
    copy2 = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);
  } else {
    copy2 = shallowCopy(value, true);
  }
  each(copy2, (key2, childValue) => {
    set2(copy2, key2, currentImpl(childValue));
  });
  if (state) {
    state.finalized_ = false;
  }
  return copy2;
}
var immer = new Immer2();
var produce = immer.produce;
var produceWithPatches = immer.produceWithPatches.bind(
  immer
);
var setAutoFreeze = immer.setAutoFreeze.bind(immer);
var setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer);
var applyPatches = immer.applyPatches.bind(immer);
var createDraft = immer.createDraft.bind(immer);
var finishDraft = immer.finishDraft.bind(immer);

// ../../node_modules/reselect/dist/reselect.mjs
var runIdentityFunctionCheck = (resultFunc, inputSelectorsResults, outputSelectorResult) => {
  if (inputSelectorsResults.length === 1 && inputSelectorsResults[0] === outputSelectorResult) {
    let isInputSameAsOutput = false;
    try {
      const emptyObject = {};
      if (resultFunc(emptyObject) === emptyObject)
        isInputSameAsOutput = true;
    } catch {
    }
    if (isInputSameAsOutput) {
      let stack = void 0;
      try {
        throw new Error();
      } catch (e2) {
        ;
        ({ stack } = e2);
      }
      console.warn(
        "The result function returned its own inputs without modification. e.g\n`createSelector([state => state.todos], todos => todos)`\nThis could lead to inefficient memoization and unnecessary re-renders.\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.",
        { stack }
      );
    }
  }
};
var runInputStabilityCheck = (inputSelectorResultsObject, options, inputSelectorArgs) => {
  const { memoize, memoizeOptions } = options;
  const { inputSelectorResults, inputSelectorResultsCopy } = inputSelectorResultsObject;
  const createAnEmptyObject = memoize(() => ({}), ...memoizeOptions);
  const areInputSelectorResultsEqual = createAnEmptyObject.apply(null, inputSelectorResults) === createAnEmptyObject.apply(null, inputSelectorResultsCopy);
  if (!areInputSelectorResultsEqual) {
    let stack = void 0;
    try {
      throw new Error();
    } catch (e2) {
      ;
      ({ stack } = e2);
    }
    console.warn(
      "An input selector returned a different result when passed same arguments.\nThis means your output selector will likely run more frequently than intended.\nAvoid returning a new reference inside your input selector, e.g.\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`",
      {
        arguments: inputSelectorArgs,
        firstInputs: inputSelectorResults,
        secondInputs: inputSelectorResultsCopy,
        stack
      }
    );
  }
};
var globalDevModeChecks = {
  inputStabilityCheck: "once",
  identityFunctionCheck: "once"
};
function assertIsFunction(func, errorMessage = `expected a function, instead received ${typeof func}`) {
  if (typeof func !== "function") {
    throw new TypeError(errorMessage);
  }
}
function assertIsObject(object, errorMessage = `expected an object, instead received ${typeof object}`) {
  if (typeof object !== "object") {
    throw new TypeError(errorMessage);
  }
}
function assertIsArrayOfFunctions(array, errorMessage = `expected all items to be functions, instead received the following types: `) {
  if (!array.every((item) => typeof item === "function")) {
    const itemTypes = array.map(
      (item) => typeof item === "function" ? `function ${item.name || "unnamed"}()` : typeof item
    ).join(", ");
    throw new TypeError(`${errorMessage}[${itemTypes}]`);
  }
}
var ensureIsArray = (item) => {
  return Array.isArray(item) ? item : [item];
};
function getDependencies(createSelectorArgs) {
  const dependencies = Array.isArray(createSelectorArgs[0]) ? createSelectorArgs[0] : createSelectorArgs;
  assertIsArrayOfFunctions(
    dependencies,
    `createSelector expects all input-selectors to be functions, but received the following types: `
  );
  return dependencies;
}
function collectInputSelectorResults(dependencies, inputSelectorArgs) {
  const inputSelectorResults = [];
  const { length } = dependencies;
  for (let i2 = 0; i2 < length; i2++) {
    inputSelectorResults.push(dependencies[i2].apply(null, inputSelectorArgs));
  }
  return inputSelectorResults;
}
var getDevModeChecksExecutionInfo = (firstRun, devModeChecks) => {
  const { identityFunctionCheck, inputStabilityCheck } = {
    ...globalDevModeChecks,
    ...devModeChecks
  };
  return {
    identityFunctionCheck: {
      shouldRun: identityFunctionCheck === "always" || identityFunctionCheck === "once" && firstRun,
      run: runIdentityFunctionCheck
    },
    inputStabilityCheck: {
      shouldRun: inputStabilityCheck === "always" || inputStabilityCheck === "once" && firstRun,
      run: runInputStabilityCheck
    }
  };
};
var REDUX_PROXY_LABEL = Symbol();
var proto5 = Object.getPrototypeOf({});
var StrongRef = class {
  constructor(value) {
    this.value = value;
  }
  deref() {
    return this.value;
  }
};
var Ref = typeof WeakRef !== "undefined" ? WeakRef : StrongRef;
var UNTERMINATED = 0;
var TERMINATED = 1;
function createCacheNode() {
  return {
    s: UNTERMINATED,
    v: void 0,
    o: null,
    p: null
  };
}
function weakMapMemoize(func, options = {}) {
  let fnNode = createCacheNode();
  const { resultEqualityCheck } = options;
  let lastResult;
  let resultsCount = 0;
  function memoized() {
    var _a6;
    let cacheNode = fnNode;
    const { length } = arguments;
    for (let i2 = 0, l = length; i2 < l; i2++) {
      const arg2 = arguments[i2];
      if (typeof arg2 === "function" || typeof arg2 === "object" && arg2 !== null) {
        let objectCache = cacheNode.o;
        if (objectCache === null) {
          cacheNode.o = objectCache = /* @__PURE__ */ new WeakMap();
        }
        const objectNode = objectCache.get(arg2);
        if (objectNode === void 0) {
          cacheNode = createCacheNode();
          objectCache.set(arg2, cacheNode);
        } else {
          cacheNode = objectNode;
        }
      } else {
        let primitiveCache = cacheNode.p;
        if (primitiveCache === null) {
          cacheNode.p = primitiveCache = /* @__PURE__ */ new Map();
        }
        const primitiveNode = primitiveCache.get(arg2);
        if (primitiveNode === void 0) {
          cacheNode = createCacheNode();
          primitiveCache.set(arg2, cacheNode);
        } else {
          cacheNode = primitiveNode;
        }
      }
    }
    const terminatedNode = cacheNode;
    let result;
    if (cacheNode.s === TERMINATED) {
      result = cacheNode.v;
    } else {
      result = func.apply(null, arguments);
      resultsCount++;
    }
    terminatedNode.s = TERMINATED;
    if (resultEqualityCheck) {
      const lastResultValue = ((_a6 = lastResult == null ? void 0 : lastResult.deref) == null ? void 0 : _a6.call(lastResult)) ?? lastResult;
      if (lastResultValue != null && resultEqualityCheck(lastResultValue, result)) {
        result = lastResultValue;
        resultsCount !== 0 && resultsCount--;
      }
      const needsWeakRef = typeof result === "object" && result !== null || typeof result === "function";
      lastResult = needsWeakRef ? new Ref(result) : result;
    }
    terminatedNode.v = result;
    return result;
  }
  memoized.clearCache = () => {
    fnNode = createCacheNode();
    memoized.resetResultsCount();
  };
  memoized.resultsCount = () => resultsCount;
  memoized.resetResultsCount = () => {
    resultsCount = 0;
  };
  return memoized;
}
function createSelectorCreator(memoizeOrOptions, ...memoizeOptionsFromArgs) {
  const createSelectorCreatorOptions = typeof memoizeOrOptions === "function" ? {
    memoize: memoizeOrOptions,
    memoizeOptions: memoizeOptionsFromArgs
  } : memoizeOrOptions;
  const createSelector2 = (...createSelectorArgs) => {
    let recomputations = 0;
    let dependencyRecomputations = 0;
    let lastResult;
    let directlyPassedOptions = {};
    let resultFunc = createSelectorArgs.pop();
    if (typeof resultFunc === "object") {
      directlyPassedOptions = resultFunc;
      resultFunc = createSelectorArgs.pop();
    }
    assertIsFunction(
      resultFunc,
      `createSelector expects an output function after the inputs, but received: [${typeof resultFunc}]`
    );
    const combinedOptions = {
      ...createSelectorCreatorOptions,
      ...directlyPassedOptions
    };
    const {
      memoize,
      memoizeOptions = [],
      argsMemoize = weakMapMemoize,
      argsMemoizeOptions = [],
      devModeChecks = {}
    } = combinedOptions;
    const finalMemoizeOptions = ensureIsArray(memoizeOptions);
    const finalArgsMemoizeOptions = ensureIsArray(argsMemoizeOptions);
    const dependencies = getDependencies(createSelectorArgs);
    const memoizedResultFunc = memoize(function recomputationWrapper() {
      recomputations++;
      return resultFunc.apply(
        null,
        arguments
      );
    }, ...finalMemoizeOptions);
    let firstRun = true;
    const selector = argsMemoize(function dependenciesChecker() {
      dependencyRecomputations++;
      const inputSelectorResults = collectInputSelectorResults(
        dependencies,
        arguments
      );
      lastResult = memoizedResultFunc.apply(null, inputSelectorResults);
      if (process.env.NODE_ENV !== "production") {
        const { identityFunctionCheck, inputStabilityCheck } = getDevModeChecksExecutionInfo(firstRun, devModeChecks);
        if (identityFunctionCheck.shouldRun) {
          identityFunctionCheck.run(
            resultFunc,
            inputSelectorResults,
            lastResult
          );
        }
        if (inputStabilityCheck.shouldRun) {
          const inputSelectorResultsCopy = collectInputSelectorResults(
            dependencies,
            arguments
          );
          inputStabilityCheck.run(
            { inputSelectorResults, inputSelectorResultsCopy },
            { memoize, memoizeOptions: finalMemoizeOptions },
            arguments
          );
        }
        if (firstRun)
          firstRun = false;
      }
      return lastResult;
    }, ...finalArgsMemoizeOptions);
    return Object.assign(selector, {
      resultFunc,
      memoizedResultFunc,
      dependencies,
      dependencyRecomputations: () => dependencyRecomputations,
      resetDependencyRecomputations: () => {
        dependencyRecomputations = 0;
      },
      lastResult: () => lastResult,
      recomputations: () => recomputations,
      resetRecomputations: () => {
        recomputations = 0;
      },
      memoize,
      argsMemoize
    });
  };
  Object.assign(createSelector2, {
    withTypes: () => createSelector2
  });
  return createSelector2;
}
var createSelector = /* @__PURE__ */ createSelectorCreator(weakMapMemoize);
var createStructuredSelector = Object.assign(
  (inputSelectorsObject, selectorCreator = createSelector) => {
    assertIsObject(
      inputSelectorsObject,
      `createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof inputSelectorsObject}`
    );
    const inputSelectorKeys = Object.keys(inputSelectorsObject);
    const dependencies = inputSelectorKeys.map(
      (key2) => inputSelectorsObject[key2]
    );
    const structuredSelector = selectorCreator(
      dependencies,
      (...inputSelectorResults) => {
        return inputSelectorResults.reduce((composition, value, index4) => {
          composition[inputSelectorKeys[index4]] = value;
          return composition;
        }, {});
      }
    );
    return structuredSelector;
  },
  { withTypes: () => createStructuredSelector }
);

// ../../node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs
var createDraftSafeSelectorCreator = (...args) => {
  const createSelector2 = createSelectorCreator(...args);
  const createDraftSafeSelector2 = Object.assign((...args2) => {
    const selector = createSelector2(...args2);
    const wrappedSelector = (value, ...rest) => selector(isDraft(value) ? current(value) : value, ...rest);
    Object.assign(wrappedSelector, selector);
    return wrappedSelector;
  }, {
    withTypes: () => createDraftSafeSelector2
  });
  return createDraftSafeSelector2;
};
var createDraftSafeSelector = createDraftSafeSelectorCreator(weakMapMemoize);
var composeWithDevTools = typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function() {
  if (arguments.length === 0)
    return void 0;
  if (typeof arguments[0] === "object")
    return compose;
  return compose.apply(null, arguments);
};
var devToolsEnhancer = typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function() {
  return function(noop32) {
    return noop32;
  };
};
var hasMatchFunction = (v) => {
  return v && typeof v.match === "function";
};
function createAction(type2, prepareAction) {
  function actionCreator(...args) {
    if (prepareAction) {
      let prepared = prepareAction(...args);
      if (!prepared) {
        throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(0) : "prepareAction did not return an object");
      }
      return {
        type: type2,
        payload: prepared.payload,
        ..."meta" in prepared && {
          meta: prepared.meta
        },
        ..."error" in prepared && {
          error: prepared.error
        }
      };
    }
    return {
      type: type2,
      payload: args[0]
    };
  }
  actionCreator.toString = () => `${type2}`;
  actionCreator.type = type2;
  actionCreator.match = (action) => isAction(action) && action.type === type2;
  return actionCreator;
}
function freezeDraftable(val) {
  return isDraftable(val) ? produce(val, () => {
  }) : val;
}
function emplace(map13, key2, handler) {
  if (map13.has(key2)) {
    let value = map13.get(key2);
    if (handler.update) {
      value = handler.update(value, key2, map13);
      map13.set(key2, value);
    }
    return value;
  }
  if (!handler.insert)
    throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(10) : "No insert provided for key not already in map");
  const inserted = handler.insert(key2, map13);
  map13.set(key2, inserted);
  return inserted;
}
var createQueueWithTimer = (timeout) => {
  return (notify) => {
    setTimeout(notify, timeout);
  };
};
var rAF = typeof window !== "undefined" && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10);
var IS_PRODUCTION = process.env.NODE_ENV === "production";
function executeReducerBuilderCallback(builderCallback) {
  const actionsMap = {};
  const actionMatchers = [];
  let defaultCaseReducer;
  const builder = {
    addCase(typeOrActionCreator, reducer) {
      if (process.env.NODE_ENV !== "production") {
        if (actionMatchers.length > 0) {
          throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(26) : "`builder.addCase` should only be called before calling `builder.addMatcher`");
        }
        if (defaultCaseReducer) {
          throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(27) : "`builder.addCase` should only be called before calling `builder.addDefaultCase`");
        }
      }
      const type2 = typeof typeOrActionCreator === "string" ? typeOrActionCreator : typeOrActionCreator.type;
      if (!type2) {
        throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(28) : "`builder.addCase` cannot be called with an empty action type");
      }
      if (type2 in actionsMap) {
        throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(29) : `\`builder.addCase\` cannot be called with two reducers for the same action type '${type2}'`);
      }
      actionsMap[type2] = reducer;
      return builder;
    },
    addMatcher(matcher, reducer) {
      if (process.env.NODE_ENV !== "production") {
        if (defaultCaseReducer) {
          throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(30) : "`builder.addMatcher` should only be called before calling `builder.addDefaultCase`");
        }
      }
      actionMatchers.push({
        matcher,
        reducer
      });
      return builder;
    },
    addDefaultCase(reducer) {
      if (process.env.NODE_ENV !== "production") {
        if (defaultCaseReducer) {
          throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(31) : "`builder.addDefaultCase` can only be called once");
        }
      }
      defaultCaseReducer = reducer;
      return builder;
    }
  };
  builderCallback(builder);
  return [actionsMap, actionMatchers, defaultCaseReducer];
}
function isStateFunction(x2) {
  return typeof x2 === "function";
}
function createReducer(initialState, mapOrBuilderCallback) {
  if (process.env.NODE_ENV !== "production") {
    if (typeof mapOrBuilderCallback === "object") {
      throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(8) : "The object notation for `createReducer` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer");
    }
  }
  let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] = executeReducerBuilderCallback(mapOrBuilderCallback);
  let getInitialState;
  if (isStateFunction(initialState)) {
    getInitialState = () => freezeDraftable(initialState());
  } else {
    const frozenInitialState = freezeDraftable(initialState);
    getInitialState = () => frozenInitialState;
  }
  function reducer(state = getInitialState(), action) {
    let caseReducers = [actionsMap[action.type], ...finalActionMatchers.filter(({
      matcher
    }) => matcher(action)).map(({
      reducer: reducer2
    }) => reducer2)];
    if (caseReducers.filter((cr2) => !!cr2).length === 0) {
      caseReducers = [finalDefaultCaseReducer];
    }
    return caseReducers.reduce((previousState, caseReducer) => {
      if (caseReducer) {
        if (isDraft(previousState)) {
          const draft = previousState;
          const result = caseReducer(draft, action);
          if (result === void 0) {
            return previousState;
          }
          return result;
        } else if (!isDraftable(previousState)) {
          const result = caseReducer(previousState, action);
          if (result === void 0) {
            if (previousState === null) {
              return previousState;
            }
            throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(9) : "A case reducer on a non-draftable value must not return undefined");
          }
          return result;
        } else {
          return produce(previousState, (draft) => {
            return caseReducer(draft, action);
          });
        }
      }
      return previousState;
    }, state);
  }
  reducer.getInitialState = getInitialState;
  return reducer;
}
var urlAlphabet2 = "ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW";
var nanoid2 = (size = 21) => {
  let id = "";
  let i2 = size;
  while (i2--) {
    id += urlAlphabet2[Math.random() * 64 | 0];
  }
  return id;
};
var matches3 = (matcher, action) => {
  if (hasMatchFunction(matcher)) {
    return matcher.match(action);
  } else {
    return matcher(action);
  }
};
function isAnyOf(...matchers3) {
  return (action) => {
    return matchers3.some((matcher) => matches3(matcher, action));
  };
}
var commonProperties = ["name", "message", "stack", "code"];
var RejectWithValue = class {
  constructor(payload, meta2) {
    this.payload = payload;
    this.meta = meta2;
  }
  /*
  type-only property to distinguish between RejectWithValue and FulfillWithMeta
  does not exist at runtime
  */
  _type;
};
var FulfillWithMeta = class {
  constructor(payload, meta2) {
    this.payload = payload;
    this.meta = meta2;
  }
  /*
  type-only property to distinguish between RejectWithValue and FulfillWithMeta
  does not exist at runtime
  */
  _type;
};
var miniSerializeError = (value) => {
  if (typeof value === "object" && value !== null) {
    const simpleError = {};
    for (const property of commonProperties) {
      if (typeof value[property] === "string") {
        simpleError[property] = value[property];
      }
    }
    return simpleError;
  }
  return {
    message: String(value)
  };
};
var createAsyncThunk = /* @__PURE__ */ (() => {
  function createAsyncThunk2(typePrefix, payloadCreator, options) {
    const fulfilled = createAction(typePrefix + "/fulfilled", (payload, requestId, arg2, meta2) => ({
      payload,
      meta: {
        ...meta2 || {},
        arg: arg2,
        requestId,
        requestStatus: "fulfilled"
      }
    }));
    const pending = createAction(typePrefix + "/pending", (requestId, arg2, meta2) => ({
      payload: void 0,
      meta: {
        ...meta2 || {},
        arg: arg2,
        requestId,
        requestStatus: "pending"
      }
    }));
    const rejected = createAction(typePrefix + "/rejected", (error, requestId, arg2, payload, meta2) => ({
      payload,
      error: (options && options.serializeError || miniSerializeError)(error || "Rejected"),
      meta: {
        ...meta2 || {},
        arg: arg2,
        requestId,
        rejectedWithValue: !!payload,
        requestStatus: "rejected",
        aborted: (error == null ? void 0 : error.name) === "AbortError",
        condition: (error == null ? void 0 : error.name) === "ConditionError"
      }
    }));
    function actionCreator(arg2) {
      return (dispatch, getState, extra) => {
        const requestId = (options == null ? void 0 : options.idGenerator) ? options.idGenerator(arg2) : nanoid2();
        const abortController = new AbortController();
        let abortHandler;
        let abortReason;
        function abort(reason) {
          abortReason = reason;
          abortController.abort();
        }
        const promise = (async function() {
          var _a6, _b;
          let finalAction;
          try {
            let conditionResult = (_a6 = options == null ? void 0 : options.condition) == null ? void 0 : _a6.call(options, arg2, {
              getState,
              extra
            });
            if (isThenable(conditionResult)) {
              conditionResult = await conditionResult;
            }
            if (conditionResult === false || abortController.signal.aborted) {
              throw {
                name: "ConditionError",
                message: "Aborted due to condition callback returning false."
              };
            }
            const abortedPromise = new Promise((_2, reject) => {
              abortHandler = () => {
                reject({
                  name: "AbortError",
                  message: abortReason || "Aborted"
                });
              };
              abortController.signal.addEventListener("abort", abortHandler);
            });
            dispatch(pending(requestId, arg2, (_b = options == null ? void 0 : options.getPendingMeta) == null ? void 0 : _b.call(options, {
              requestId,
              arg: arg2
            }, {
              getState,
              extra
            })));
            finalAction = await Promise.race([abortedPromise, Promise.resolve(payloadCreator(arg2, {
              dispatch,
              getState,
              extra,
              requestId,
              signal: abortController.signal,
              abort,
              rejectWithValue: (value, meta2) => {
                return new RejectWithValue(value, meta2);
              },
              fulfillWithValue: (value, meta2) => {
                return new FulfillWithMeta(value, meta2);
              }
            })).then((result) => {
              if (result instanceof RejectWithValue) {
                throw result;
              }
              if (result instanceof FulfillWithMeta) {
                return fulfilled(result.payload, requestId, arg2, result.meta);
              }
              return fulfilled(result, requestId, arg2);
            })]);
          } catch (err) {
            finalAction = err instanceof RejectWithValue ? rejected(null, requestId, arg2, err.payload, err.meta) : rejected(err, requestId, arg2);
          } finally {
            if (abortHandler) {
              abortController.signal.removeEventListener("abort", abortHandler);
            }
          }
          const skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition;
          if (!skipDispatch) {
            dispatch(finalAction);
          }
          return finalAction;
        })();
        return Object.assign(promise, {
          abort,
          requestId,
          arg: arg2,
          unwrap() {
            return promise.then(unwrapResult);
          }
        });
      };
    }
    return Object.assign(actionCreator, {
      pending,
      rejected,
      fulfilled,
      settled: isAnyOf(rejected, fulfilled),
      typePrefix
    });
  }
  createAsyncThunk2.withTypes = () => createAsyncThunk2;
  return createAsyncThunk2;
})();
function unwrapResult(action) {
  if (action.meta && action.meta.rejectedWithValue) {
    throw action.payload;
  }
  if (action.error) {
    throw action.error;
  }
  return action.payload;
}
function isThenable(value) {
  return value !== null && typeof value === "object" && typeof value.then === "function";
}
var asyncThunkSymbol = Symbol.for("rtk-slice-createasyncthunk");
var asyncThunkCreator = {
  [asyncThunkSymbol]: createAsyncThunk
};
function getType(slice2, actionKey) {
  return `${slice2}/${actionKey}`;
}
function buildCreateSlice({
  creators
} = {}) {
  var _a6;
  const cAT = (_a6 = creators == null ? void 0 : creators.asyncThunk) == null ? void 0 : _a6[asyncThunkSymbol];
  return function createSlice2(options) {
    const {
      name: name3,
      reducerPath = name3
    } = options;
    if (!name3) {
      throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(11) : "`name` is a required option for createSlice");
    }
    if (typeof process !== "undefined" && process.env.NODE_ENV === "development") {
      if (options.initialState === void 0) {
        console.error("You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`");
      }
    }
    const reducers = (typeof options.reducers === "function" ? options.reducers(buildReducerCreators()) : options.reducers) || {};
    const reducerNames = Object.keys(reducers);
    const context = {
      sliceCaseReducersByName: {},
      sliceCaseReducersByType: {},
      actionCreators: {},
      sliceMatchers: []
    };
    const contextMethods = {
      addCase(typeOrActionCreator, reducer2) {
        const type2 = typeof typeOrActionCreator === "string" ? typeOrActionCreator : typeOrActionCreator.type;
        if (!type2) {
          throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(12) : "`context.addCase` cannot be called with an empty action type");
        }
        if (type2 in context.sliceCaseReducersByType) {
          throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(13) : "`context.addCase` cannot be called with two reducers for the same action type: " + type2);
        }
        context.sliceCaseReducersByType[type2] = reducer2;
        return contextMethods;
      },
      addMatcher(matcher, reducer2) {
        context.sliceMatchers.push({
          matcher,
          reducer: reducer2
        });
        return contextMethods;
      },
      exposeAction(name22, actionCreator) {
        context.actionCreators[name22] = actionCreator;
        return contextMethods;
      },
      exposeCaseReducer(name22, reducer2) {
        context.sliceCaseReducersByName[name22] = reducer2;
        return contextMethods;
      }
    };
    reducerNames.forEach((reducerName) => {
      const reducerDefinition = reducers[reducerName];
      const reducerDetails = {
        reducerName,
        type: getType(name3, reducerName),
        createNotation: typeof options.reducers === "function"
      };
      if (isAsyncThunkSliceReducerDefinition(reducerDefinition)) {
        handleThunkCaseReducerDefinition(reducerDetails, reducerDefinition, contextMethods, cAT);
      } else {
        handleNormalReducerDefinition(reducerDetails, reducerDefinition, contextMethods);
      }
    });
    function buildReducer() {
      if (process.env.NODE_ENV !== "production") {
        if (typeof options.extraReducers === "object") {
          throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(14) : "The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice");
        }
      }
      const [extraReducers = {}, actionMatchers = [], defaultCaseReducer = void 0] = typeof options.extraReducers === "function" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers];
      const finalCaseReducers = {
        ...extraReducers,
        ...context.sliceCaseReducersByType
      };
      return createReducer(options.initialState, (builder) => {
        for (let key2 in finalCaseReducers) {
          builder.addCase(key2, finalCaseReducers[key2]);
        }
        for (let sM of context.sliceMatchers) {
          builder.addMatcher(sM.matcher, sM.reducer);
        }
        for (let m2 of actionMatchers) {
          builder.addMatcher(m2.matcher, m2.reducer);
        }
        if (defaultCaseReducer) {
          builder.addDefaultCase(defaultCaseReducer);
        }
      });
    }
    const selectSelf = (state) => state;
    const injectedSelectorCache = /* @__PURE__ */ new Map();
    let _reducer;
    function reducer(state, action) {
      if (!_reducer)
        _reducer = buildReducer();
      return _reducer(state, action);
    }
    function getInitialState() {
      if (!_reducer)
        _reducer = buildReducer();
      return _reducer.getInitialState();
    }
    function makeSelectorProps(reducerPath2, injected = false) {
      function selectSlice(state) {
        let sliceState = state[reducerPath2];
        if (typeof sliceState === "undefined") {
          if (injected) {
            sliceState = getInitialState();
          } else if (process.env.NODE_ENV !== "production") {
            throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(15) : "selectSlice returned undefined for an uninjected slice reducer");
          }
        }
        return sliceState;
      }
      function getSelectors(selectState = selectSelf) {
        const selectorCache = emplace(injectedSelectorCache, injected, {
          insert: () => /* @__PURE__ */ new WeakMap()
        });
        return emplace(selectorCache, selectState, {
          insert: () => {
            const map13 = {};
            for (const [name22, selector] of Object.entries(options.selectors ?? {})) {
              map13[name22] = wrapSelector(selector, selectState, getInitialState, injected);
            }
            return map13;
          }
        });
      }
      return {
        reducerPath: reducerPath2,
        getSelectors,
        get selectors() {
          return getSelectors(selectSlice);
        },
        selectSlice
      };
    }
    const slice2 = {
      name: name3,
      reducer,
      actions: context.actionCreators,
      caseReducers: context.sliceCaseReducersByName,
      getInitialState,
      ...makeSelectorProps(reducerPath),
      injectInto(injectable, {
        reducerPath: pathOpt,
        ...config3
      } = {}) {
        const newReducerPath = pathOpt ?? reducerPath;
        injectable.inject({
          reducerPath: newReducerPath,
          reducer
        }, config3);
        return {
          ...slice2,
          ...makeSelectorProps(newReducerPath, true)
        };
      }
    };
    return slice2;
  };
}
function wrapSelector(selector, selectState, getInitialState, injected) {
  function wrapper(rootState, ...args) {
    let sliceState = selectState(rootState);
    if (typeof sliceState === "undefined") {
      if (injected) {
        sliceState = getInitialState();
      } else if (process.env.NODE_ENV !== "production") {
        throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(16) : "selectState returned undefined for an uninjected slice reducer");
      }
    }
    return selector(sliceState, ...args);
  }
  wrapper.unwrapped = selector;
  return wrapper;
}
var createSlice = buildCreateSlice();
function buildReducerCreators() {
  function asyncThunk(payloadCreator, config3) {
    return {
      _reducerDefinitionType: "asyncThunk",
      payloadCreator,
      ...config3
    };
  }
  asyncThunk.withTypes = () => asyncThunk;
  return {
    reducer(caseReducer) {
      return Object.assign({
        // hack so the wrapping function has the same name as the original
        // we need to create a wrapper so the `reducerDefinitionType` is not assigned to the original
        [caseReducer.name](...args) {
          return caseReducer(...args);
        }
      }[caseReducer.name], {
        _reducerDefinitionType: "reducer"
        /* reducer */
      });
    },
    preparedReducer(prepare, reducer) {
      return {
        _reducerDefinitionType: "reducerWithPrepare",
        prepare,
        reducer
      };
    },
    asyncThunk
  };
}
function handleNormalReducerDefinition({
  type: type2,
  reducerName,
  createNotation
}, maybeReducerWithPrepare, context) {
  let caseReducer;
  let prepareCallback;
  if ("reducer" in maybeReducerWithPrepare) {
    if (createNotation && !isCaseReducerWithPrepareDefinition(maybeReducerWithPrepare)) {
      throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(17) : "Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.");
    }
    caseReducer = maybeReducerWithPrepare.reducer;
    prepareCallback = maybeReducerWithPrepare.prepare;
  } else {
    caseReducer = maybeReducerWithPrepare;
  }
  context.addCase(type2, caseReducer).exposeCaseReducer(reducerName, caseReducer).exposeAction(reducerName, prepareCallback ? createAction(type2, prepareCallback) : createAction(type2));
}
function isAsyncThunkSliceReducerDefinition(reducerDefinition) {
  return reducerDefinition._reducerDefinitionType === "asyncThunk";
}
function isCaseReducerWithPrepareDefinition(reducerDefinition) {
  return reducerDefinition._reducerDefinitionType === "reducerWithPrepare";
}
function handleThunkCaseReducerDefinition({
  type: type2,
  reducerName
}, reducerDefinition, context, cAT) {
  if (!cAT) {
    throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(18) : "Cannot use `create.asyncThunk` in the built-in `createSlice`. Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.");
  }
  const {
    payloadCreator,
    fulfilled,
    pending,
    rejected,
    settled,
    options
  } = reducerDefinition;
  const thunk = cAT(type2, payloadCreator, options);
  context.exposeAction(reducerName, thunk);
  if (fulfilled) {
    context.addCase(thunk.fulfilled, fulfilled);
  }
  if (pending) {
    context.addCase(thunk.pending, pending);
  }
  if (rejected) {
    context.addCase(thunk.rejected, rejected);
  }
  if (settled) {
    context.addMatcher(thunk.settled, settled);
  }
  context.exposeCaseReducer(reducerName, {
    fulfilled: fulfilled || noop,
    pending: pending || noop,
    rejected: rejected || noop,
    settled: settled || noop
  });
}
function noop() {
}
var listener = "listener";
var completed = "completed";
var cancelled = "cancelled";
var taskCancelled = `task-${cancelled}`;
var taskCompleted = `task-${completed}`;
var listenerCancelled = `${listener}-${cancelled}`;
var listenerCompleted = `${listener}-${completed}`;
var assertFunction = (func, expected) => {
  if (typeof func !== "function") {
    throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(32) : `${expected} is not a function`);
  }
};
var {
  assign
} = Object;
var alm = "listenerMiddleware";
var getListenerEntryPropsFrom = (options) => {
  let {
    type: type2,
    actionCreator,
    matcher,
    predicate,
    effect
  } = options;
  if (type2) {
    predicate = createAction(type2).match;
  } else if (actionCreator) {
    type2 = actionCreator.type;
    predicate = actionCreator.match;
  } else if (matcher) {
    predicate = matcher;
  } else if (predicate) {
  } else {
    throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(21) : "Creating or removing a listener requires one of the known fields for matching an action");
  }
  assertFunction(effect, "options.listener");
  return {
    predicate,
    type: type2,
    effect
  };
};
var createListenerEntry = Object.assign((options) => {
  const {
    type: type2,
    predicate,
    effect
  } = getListenerEntryPropsFrom(options);
  const id = nanoid2();
  const entry = {
    id,
    effect,
    type: type2,
    predicate,
    pending: /* @__PURE__ */ new Set(),
    unsubscribe: () => {
      throw new Error(process.env.NODE_ENV === "production" ? formatProdErrorMessage2(22) : "Unsubscribe not initialized");
    }
  };
  return entry;
}, {
  withTypes: () => createListenerEntry
});
var addListener = Object.assign(createAction(`${alm}/add`), {
  withTypes: () => addListener
});
var clearAllListeners = createAction(`${alm}/removeAll`);
var removeListener = Object.assign(createAction(`${alm}/remove`), {
  withTypes: () => removeListener
});
var ORIGINAL_STATE = Symbol.for("rtk-state-proxy-original");
function formatProdErrorMessage2(code7) {
  return `Minified Redux Toolkit error #${code7}; visit https://redux-toolkit.js.org/Errors?code=${code7} for the full message or use the non-minified dev environment for full errors. `;
}

// ../myst-cli/dist/store/reducers.js
var projects = createSlice({
  name: "projects",
  initialState: {},
  reducers: {
    receive(state, action) {
      state[(0, import_node_path5.resolve)(action.payload.path)] = action.payload;
    }
  }
});
var affiliations = createSlice({
  name: "affiliations",
  initialState: {},
  reducers: {
    receive(state, action) {
      action.payload.affiliations.forEach((aff) => {
        state[aff.id] = aff.text;
      });
    }
  }
});
var config = createSlice({
  name: "config",
  initialState: {
    rawConfigs: {},
    projects: {},
    projectParts: {},
    fileParts: {},
    sites: {},
    filenames: {}
  },
  reducers: {
    receiveCurrentProjectPath(state, action) {
      state.currentProjectPath = (0, import_node_path5.resolve)(action.payload.path);
    },
    receiveCurrentSitePath(state, action) {
      state.currentSitePath = (0, import_node_path5.resolve)(action.payload.path);
    },
    receiveRawConfig(state, action) {
      const { path: path45, file, ...payload } = action.payload;
      state.rawConfigs[(0, import_node_path5.resolve)(path45)] = payload;
      state.filenames[(0, import_node_path5.resolve)(path45)] = file;
    },
    receiveSiteConfig(state, action) {
      const { path: path45, ...payload } = action.payload;
      state.sites[(0, import_node_path5.resolve)(path45)] = payload;
    },
    receiveProjectConfig(state, action) {
      const { path: path45, ...payload } = action.payload;
      state.projects[(0, import_node_path5.resolve)(path45)] = payload;
    },
    receiveConfigExtension(state, action) {
      var _a6;
      (_a6 = state.configExtensions) !== null && _a6 !== void 0 ? _a6 : state.configExtensions = [];
      state.configExtensions.push(action.payload.file);
    },
    receiveProjectPart(state, action) {
      var _a6;
      const { path: path45, partFile } = action.payload;
      const partFiles = (_a6 = state.projectParts[(0, import_node_path5.resolve)(path45)]) !== null && _a6 !== void 0 ? _a6 : [];
      if (!partFiles.includes(partFile)) {
        state.projectParts[(0, import_node_path5.resolve)(path45)] = [...partFiles, partFile];
      }
    },
    receiveFilePart(state, action) {
      var _a6;
      const { file, partFile } = action.payload;
      const partFiles = (_a6 = state.fileParts[(0, import_node_path5.resolve)(file)]) !== null && _a6 !== void 0 ? _a6 : [];
      if (!partFiles.includes(partFile)) {
        state.fileParts[(0, import_node_path5.resolve)(file)] = [...partFiles, partFile];
      }
    }
  }
});
var watch = createSlice({
  name: "watch",
  initialState: { files: {}, reloading: false },
  reducers: {
    markReloading(state, action) {
      state.reloading = action.payload;
    },
    markReloadRequested(state, action) {
      state.reloadRequested = action.payload;
    },
    markFileChanged(state, action) {
      const { path: path45, sha256 = null } = action.payload;
      state.files[(0, import_node_path5.resolve)(path45)] = { ...state.files[(0, import_node_path5.resolve)(path45)], sha256 };
    },
    addLocalDependency(state, action) {
      var _a6;
      const { path: path45, dependency } = action.payload;
      if (!state.files[(0, import_node_path5.resolve)(path45)])
        state.files[(0, import_node_path5.resolve)(path45)] = {};
      const existingDeps = [...(_a6 = state.files[(0, import_node_path5.resolve)(path45)].localDependencies) !== null && _a6 !== void 0 ? _a6 : []];
      if (!existingDeps.includes(dependency)) {
        state.files[(0, import_node_path5.resolve)(path45)].localDependencies = [...existingDeps, dependency];
      }
    },
    updateFileInfo(state, action) {
      const { path: path45, sha256, title, short_title, description, date, thumbnail, thumbnailOptimized, banner, bannerOptimized, tags, url, dataUrl } = action.payload;
      const resolvedPath = (0, import_node_path5.resolve)(path45);
      if (!state.files[resolvedPath])
        state.files[resolvedPath] = {};
      if (title)
        state.files[resolvedPath].title = title;
      if (short_title)
        state.files[resolvedPath].short_title = short_title;
      if (description)
        state.files[resolvedPath].description = description;
      if (date)
        state.files[resolvedPath].date = date;
      if (thumbnail)
        state.files[resolvedPath].thumbnail = thumbnail;
      if (thumbnailOptimized)
        state.files[resolvedPath].thumbnailOptimized = thumbnailOptimized;
      if (banner)
        state.files[resolvedPath].banner = banner;
      if (bannerOptimized)
        state.files[resolvedPath].bannerOptimized = bannerOptimized;
      if (tags)
        state.files[resolvedPath].tags = [...tags];
      if (sha256)
        state.files[resolvedPath].sha256 = sha256;
      if (url)
        state.files[resolvedPath].url = url;
      if (dataUrl)
        state.files[resolvedPath].dataUrl = dataUrl;
    }
  }
});
var links = createSlice({
  name: "links",
  initialState: {},
  reducers: {
    updateLink(state, action) {
      const { url, ok: ok3, skipped, status, statusText } = action.payload;
      state[url] = { url, ok: ok3, skipped, status, statusText };
    }
  }
});
var warnings = createSlice({
  name: "warnings",
  initialState: {},
  reducers: {
    addWarning(state, action) {
      var _a6;
      const { file, message, kind, url, note, position: position6, ruleId } = action.payload;
      state[file] = [...(_a6 = state[file]) !== null && _a6 !== void 0 ? _a6 : [], { message, kind, url, note, position: position6, ruleId }];
    },
    clearWarnings(state, action) {
      state[action.payload.file] = [];
    },
    clearAllWarnings(state) {
      Object.keys(state).forEach((key2) => {
        delete state[key2];
      });
    }
  }
});
var localReducer = combineReducers({
  projects: projects.reducer,
  affiliations: affiliations.reducer,
  config: config.reducer,
  watch: watch.reducer,
  links: links.reducer,
  warnings: warnings.reducer
});
var rootReducer = combineReducers({
  local: localReducer
});

// ../myst-cli/dist/utils/addWarningForFile.js
var import_picomatch = __toESM(require_picomatch2(), 1);
function keyMatchesPattern(key2, pattern) {
  if (!key2)
    return false;
  if (key2 === pattern)
    return true;
  const hasWildcard = /[*?{}[\]]/.test(pattern);
  if (!hasWildcard) {
    return false;
  }
  try {
    const isMatch = (0, import_picomatch.default)(pattern, { nocase: false, dot: true });
    return isMatch(key2);
  } catch (error) {
    return false;
  }
}
function addWarningForFile(session, file, message, severity = "warn", opts) {
  var _a6, _b, _c, _d2, _e;
  const line2 = ((_a6 = opts === null || opts === void 0 ? void 0 : opts.position) === null || _a6 === void 0 ? void 0 : _a6.start.line) ? `:${opts === null || opts === void 0 ? void 0 : opts.position.start.line}` : "";
  const column = ((_b = opts === null || opts === void 0 ? void 0 : opts.position) === null || _b === void 0 ? void 0 : _b.start.column) && ((_c = opts === null || opts === void 0 ? void 0 : opts.position) === null || _c === void 0 ? void 0 : _c.start.column) > 1 ? `:${opts === null || opts === void 0 ? void 0 : opts.position.start.column}` : "";
  const note = (opts === null || opts === void 0 ? void 0 : opts.note) ? `
   ${source_default.reset.dim(opts.note)}` : "";
  const url = (opts === null || opts === void 0 ? void 0 : opts.url) ? source_default.reset.dim(`
   See also: ${opts.url}
`) : "";
  const prefix2 = file ? `${file}${line2}${column} ` : "";
  const formatted = `${message}${note}${url}`;
  if (opts === null || opts === void 0 ? void 0 : opts.ruleId) {
    const config3 = selectCurrentProjectConfig(session.store.getState());
    const handler = (_d2 = config3 === null || config3 === void 0 ? void 0 : config3.error_rules) === null || _d2 === void 0 ? void 0 : _d2.find((rule) => {
      if (rule.key) {
        return rule.id === opts.ruleId && keyMatchesPattern(opts.key, rule.key);
      }
      return rule.id === opts.ruleId;
    });
    if (handler) {
      if (handler.severity === "ignore") {
        session.log.debug(`${prefix2}${formatted}`);
        return;
      }
      severity = (_e = handler.severity) !== null && _e !== void 0 ? _e : severity;
    }
  }
  switch (severity) {
    case "info":
      session.log.info(`\u2139\uFE0F  ${prefix2}${formatted}`);
      break;
    case "error":
      session.log.error(`\u26D4\uFE0F ${prefix2}${formatted}`);
      break;
    case "warn":
      session.log.warn(`\u26A0\uFE0F  ${prefix2}${formatted}`);
      break;
    case "debug":
    default:
      session.log.debug(`${prefix2}${formatted}`);
      break;
  }
  if (opts === null || opts === void 0 ? void 0 : opts.ruleId) {
    session.log.debug(`To suppress this message, add rule: "${opts.ruleId}"${opts.key ? ` with key: "${opts.key}"` : ""} to "error_rules" in your project config`);
  }
  if (file) {
    session.store.dispatch(warnings.actions.addWarning({
      file,
      message,
      kind: severity,
      url: opts === null || opts === void 0 ? void 0 : opts.url,
      note: opts === null || opts === void 0 ? void 0 : opts.note,
      position: opts === null || opts === void 0 ? void 0 : opts.position,
      ruleId: opts === null || opts === void 0 ? void 0 : opts.ruleId
    }));
  }
}

// ../myst-cli/dist/utils/logging.js
var import_node_path6 = require("path");
function logMessagesFromVFile(session, file) {
  if (!file)
    return;
  file.messages.forEach((message) => {
    const kind = message.fatal === null ? "info" : message.fatal === false ? "warn" : "error";
    addWarningForFile(session, file.path, message.message, kind, {
      position: message.position,
      note: message.note,
      url: message.url,
      ruleId: message.ruleId
    });
  });
  file.messages = [];
}
function writeJsonLogs(session, name3, logData) {
  const seen = /* @__PURE__ */ new WeakSet();
  const data = JSON.stringify(logData, function(_2, value) {
    if (typeof value === "object" && value !== null) {
      if (seen.has(value)) {
        return "[Circular]";
      }
      seen.add(value);
    }
    return value;
  }, 2);
  writeFileToFolder((0, import_node_path6.join)(session.buildPath(), "logs", name3), data);
}

// ../myst-cli/dist/session/cache.js
var import_node_fs2 = __toESM(require("fs"), 1);
var import_node_path7 = __toESM(require("path"), 1);
function castSession(session) {
  const cache = session;
  if (!cache.$citationRenderers)
    cache.$citationRenderers = {};
  if (!cache.$doiRenderers)
    cache.$doiRenderers = {};
  if (!cache.$externalReferences)
    cache.$externalReferences = {};
  if (!cache.$mdast)
    cache.$mdast = {};
  if (!cache.$outputs)
    cache.$outputs = {};
  cache.$setMdast = (file, data) => {
    cache.$mdast[import_node_path7.default.resolve(file)] = data;
  };
  cache.$getMdast = (file) => {
    return cache.$mdast[import_node_path7.default.resolve(file)];
  };
  return cache;
}
function cachePath(session, filename) {
  return import_node_path7.default.join(session.buildPath(), "cache", filename);
}
function writeToCache(session, filename, data) {
  const file = cachePath(session, filename);
  session.log.debug(`Writing cache file: ${file}`);
  writeFileToFolder(file, data);
}
function checkCache(session, filename, opts) {
  const file = cachePath(session, filename);
  if (!import_node_fs2.default.existsSync(file)) {
    session.log.debug(`Cache file not found: ${file}`);
    return false;
  }
  const { ctimeMs } = import_node_fs2.default.lstatSync(file);
  const age = (Date.now() - ctimeMs) / (1e3 * 60 * 60 * 24);
  if ((opts === null || opts === void 0 ? void 0 : opts.maxAge) != null && age > opts.maxAge) {
    session.log.debug(`Cache file has expired (age: ${age.toFixed(3)} days, max: ${opts.maxAge} days): ${file}`);
    return false;
  }
  return true;
}
function loadFromCache(session, filename, opts) {
  if (!checkCache(session, filename, opts))
    return;
  const file = cachePath(session, filename);
  session.log.debug(`Loading cache file: ${file}`);
  return import_node_fs2.default.readFileSync(file).toString();
}

// ../myst-cli/dist/frontmatter.js
function frontmatterValidationOpts(vfile2, opts) {
  var _a6;
  return {
    property: (_a6 = opts === null || opts === void 0 ? void 0 : opts.property) !== null && _a6 !== void 0 ? _a6 : "frontmatter",
    file: vfile2.path,
    messages: {},
    errorLogFn: (message) => {
      var _a7;
      fileError(vfile2, message, { ruleId: (_a7 = opts === null || opts === void 0 ? void 0 : opts.ruleId) !== null && _a7 !== void 0 ? _a7 : RuleId.validPageFrontmatter });
    },
    warningLogFn: (message) => {
      var _a7;
      fileWarn(vfile2, message, { ruleId: (_a7 = opts === null || opts === void 0 ? void 0 : opts.ruleId) !== null && _a7 !== void 0 ? _a7 : RuleId.validPageFrontmatter });
    }
  };
}
function getPageFrontmatter(session, tree, vfile2, preFrontmatter, keepTitleNode) {
  var _a6;
  const { frontmatter: rawPageFrontmatter, identifiers } = getFrontmatter(vfile2, tree, {
    propagateTargets: true,
    preFrontmatter,
    keepTitleNode
  });
  unnestKernelSpec(rawPageFrontmatter);
  const pageFrontmatter = validatePageFrontmatter(rawPageFrontmatter, frontmatterValidationOpts(vfile2));
  if (pageFrontmatter.label) {
    const { identifier } = (_a6 = normalizeLabel(pageFrontmatter.label)) !== null && _a6 !== void 0 ? _a6 : {};
    if (identifier)
      identifiers.push(identifier);
  }
  logMessagesFromVFile(session, vfile2);
  return { frontmatter: pageFrontmatter, identifiers };
}
function processPageFrontmatter(session, pageFrontmatter, validationOpts, path45) {
  var _a6, _b, _c, _d2, _e, _f;
  const cache = castSession(session);
  const state = session.store.getState();
  const siteFrontmatter = (_a6 = selectors_exports.selectCurrentSiteConfig(state)) !== null && _a6 !== void 0 ? _a6 : {};
  const projectFrontmatter = path45 ? (_b = selectors_exports.selectLocalProjectConfig(state, path45)) !== null && _b !== void 0 ? _b : {} : {};
  const frontmatter = fillPageFrontmatter(pageFrontmatter, projectFrontmatter, validationOpts);
  const siteTemplate = cache.$siteTemplate;
  if (siteTemplate) {
    const siteOptions = siteTemplate.validateOptions((_c = pageFrontmatter.site) !== null && _c !== void 0 ? _c : {}, path45, {
      // The property is different on the page vs the myst.yml
      property: "site",
      // Passing in the log files ensures this isn't prefixed with `myst.yml`.
      warningLogFn: session.log.warn,
      errorLogFn: session.log.error
    });
    if (siteOptions && Object.keys(siteOptions).length > 0)
      frontmatter.site = siteOptions;
  } else {
    session.log.debug(`Site template not available to validate site frontmatter in ${path45}`);
  }
  if (((_d2 = siteFrontmatter === null || siteFrontmatter === void 0 ? void 0 : siteFrontmatter.options) === null || _d2 === void 0 ? void 0 : _d2.hide_authors) || ((_f = (_e = siteFrontmatter === null || siteFrontmatter === void 0 ? void 0 : siteFrontmatter.options) === null || _e === void 0 ? void 0 : _e.design) === null || _f === void 0 ? void 0 : _f.hide_authors)) {
    delete frontmatter.authors;
  }
  return frontmatter;
}
function prepareToWrite(frontmatter) {
  if (!frontmatter.license)
    return { ...frontmatter };
  return { ...frontmatter, license: simplifyLicenses(frontmatter.license) };
}
function getExportListFromRawFrontmatter(session, rawFrontmatter, file) {
  var _a6;
  const vfile2 = new VFile();
  vfile2.path = file;
  const exports2 = validateExportsList((_a6 = rawFrontmatter === null || rawFrontmatter === void 0 ? void 0 : rawFrontmatter.exports) !== null && _a6 !== void 0 ? _a6 : rawFrontmatter === null || rawFrontmatter === void 0 ? void 0 : rawFrontmatter.export, frontmatterValidationOpts(vfile2, {
    property: "exports",
    ruleId: RuleId.validFrontmatterExportList
  }));
  logMessagesFromVFile(session, vfile2);
  return exports2 !== null && exports2 !== void 0 ? exports2 : [];
}
function updateFileInfoFromFrontmatter(session, file, frontmatter, url, dataUrl) {
  session.store.dispatch(watch.actions.updateFileInfo({
    path: file,
    title: frontmatter.title,
    short_title: frontmatter.short_title,
    description: frontmatter.description,
    date: frontmatter.date,
    thumbnail: frontmatter.thumbnail,
    thumbnailOptimized: frontmatter.thumbnailOptimized,
    banner: frontmatter.banner,
    bannerOptimized: frontmatter.bannerOptimized,
    tags: frontmatter.tags,
    url,
    dataUrl
  }));
}

// ../myst-cli/dist/process/file.js
var import_node_fs13 = __toESM(require("fs"), 1);
var import_node_path18 = __toESM(require("path"), 1);
var import_node_crypto3 = require("crypto");

// ../tex-to-myst/dist/utils.js
var THIN_SPACE = "\u2009";
var NARROW_NO_BREAK_SPACE = "\u202F";
var LatexAccents = {
  "`": { o: "\xF2", O: "\xD2" },
  "'": { o: "\xF3", O: "\xD3" },
  "^": { "": "^", e: "\xEA", o: "\xF4", i: "\xEE", y: "\u0177", E: "\xCA", O: "\xD4", I: "\xCE", Y: "\u0176" },
  '"': { o: "\xF6", u: "\xFC", i: "\xEF", O: "\xD6", U: "\xDC", I: "\xCF" },
  H: { o: "\u0151", O: "\u0150" },
  "~": {
    "": "~",
    a: "\xE3",
    A: "\xC3",
    o: "\xF5",
    n: "\xF1",
    O: "\xD5",
    N: "\xD1",
    u: "\u0169",
    U: "\u0168",
    e: "\u1EBD",
    E: "\u1EBC",
    i: "\u0129",
    I: "\u0128"
  },
  c: { c: "\xE7", C: "\xC7", s: "\u015F", S: "\u015E" },
  k: { a: "\u0105", A: "\u0104" },
  l: { "": "\u0142" },
  "=": { o: "\u014D", O: "\u014C" },
  ".": { o: "\u022F", O: "\u022E" },
  d: { u: "\u1EE5", U: "\u1EE4" },
  r: { a: "\xE5", A: "\xC5" },
  u: { o: "\u014F", O: "\u014E" },
  v: { s: "\u0161", S: "\u0160" },
  t: { oo: "o\u0361o", OO: "O\u0361O" },
  o: { "": "\xF8" },
  i: { "": "\u0131" }
};
var LatexSpecialSymbols = {
  "%": "%",
  $: "$",
  "&": "&",
  "{": "{",
  "}": "}",
  _: "_",
  P: "\xB6",
  dag: "\u2020",
  ddag: "\u2021",
  textbar: "|",
  textgreater: ">",
  textless: "<",
  textendash: "\u2013",
  textemdash: "\u2014",
  texttrademark: "\u2122",
  textregistered: "\xAE",
  copyright: "\xA9",
  textexclamdown: "\xA1",
  textquestiondown: "\xBF",
  pounds: "\xA3",
  // \usepackage[official]{eurosym}
  euro: "\u20AC",
  "#": "#",
  S: "\xA7",
  textbackslash: "\\",
  textcelsius: "\u2103",
  degreeCelsius: "\u2103",
  celsius: "\u2103",
  aa: "\xE5",
  AA: "\xC5",
  dots: "\u2026",
  ldots: "\u2026",
  texttimes: "\xD7",
  textellipsis: "\u2026",
  textdegree: "\xB0",
  degree: "\xB0",
  textasciitilde: "~",
  textvisiblespace: " ",
  // Not sure this will work, but close enough
  " ": " ",
  // this is a single backslash followed by a space
  ",": THIN_SPACE
  // this is a thin space (https://en.wikipedia.org/wiki/Thin_space) `\,` in latex
};
var phrasingTypes = /* @__PURE__ */ new Set([
  "paragraph",
  "heading",
  "strong",
  "emphasis",
  "inlineCode",
  "subscript",
  "superscript",
  "smallcaps",
  "link",
  "span",
  "delete",
  "crossReference"
]);
var UNHANDLED_ERROR_TEXT = "Unhandled TEX conversion";
function originalValue(original, node3) {
  var _a6, _b;
  const from4 = (_a6 = node3.position) === null || _a6 === void 0 ? void 0 : _a6.start.offset;
  const to = (_b = node3.position) === null || _b === void 0 ? void 0 : _b.end.offset;
  if (from4 == null || to == null)
    return "";
  return original.slice(from4, to);
}
function hasStar(node3) {
  var _a6, _b;
  const first2 = (_a6 = node3.args) === null || _a6 === void 0 ? void 0 : _a6[0];
  if (!first2)
    return false;
  if (((_b = first2.content) === null || _b === void 0 ? void 0 : _b.length) === 1 && first2.content[0].type === "string" && first2.content[0].content === "*" && first2.openMark === "" && first2.closeMark === "")
    return true;
  return false;
}
function getArguments(node3, type2) {
  var _a6, _b;
  return (_b = (_a6 = node3.args) === null || _a6 === void 0 ? void 0 : _a6.filter((n) => {
    return n.openMark === (type2 === "group" ? "{" : type2 === "implicit" ? "" : "[");
  })) !== null && _b !== void 0 ? _b : [];
}
function renderInfoIndex(node3, name3) {
  var _a6, _b;
  return (_b = (_a6 = node3._renderInfo) === null || _a6 === void 0 ? void 0 : _a6.namedArguments) === null || _b === void 0 ? void 0 : _b.findIndex((a2) => a2 === name3);
}
var textOnlyReplacements = {
  // quotes
  "''": "\u201D",
  "``": "\u201C",
  // Single quotes (must come after double-quotes)
  "'": "\u2019",
  "`": "\u2018",
  "---": "\u2014",
  // must be above the next one
  "--": "\u2013",
  "~": "\u202F"
};
function replaceTextValue(value) {
  if (!value)
    return "";
  return Object.entries(textOnlyReplacements).reduce((v, [k, r2]) => {
    return v.replace(new RegExp(k, "g"), r2);
  }, value);
}
function isAccent(node3) {
  if ((node3 === null || node3 === void 0 ? void 0 : node3.type) !== "macro")
    return false;
  if (node3.content in LatexAccents)
    return true;
  return false;
}
function isSpecialSymbol(node3) {
  if ((node3 === null || node3 === void 0 ? void 0 : node3.type) !== "macro")
    return false;
  if (node3.content in LatexSpecialSymbols)
    return true;
  return false;
}
function texToText(content3) {
  if (!content3)
    return "";
  if (typeof content3 === "string")
    return content3;
  if (!Array.isArray(content3))
    return texToText([content3]);
  return content3.map((n) => {
    if (n.type === "whitespace")
      return " ";
    if (n.type === "comment")
      return "";
    if (isSpecialSymbol(n)) {
      return LatexSpecialSymbols[n.content];
    }
    if (n.children)
      return texToText(n.children);
    if (Array.isArray(n.content))
      return texToText(n.content);
    if (Array.isArray(n.args))
      return texToText(n.args);
    if (typeof n.content === "string")
      return n.content;
    if ("value" in n)
      return n.value;
    return "";
  }).join("");
}
function lastNode(node3) {
  var _a6, _b, _c;
  if (!node3)
    return node3;
  if (Array.isArray(node3.content)) {
    const last = lastNode((_a6 = node3.content) === null || _a6 === void 0 ? void 0 : _a6[node3.content.length - 1]);
    return last;
  }
  if (Array.isArray(node3.args)) {
    const lastArg = (_b = node3.args) === null || _b === void 0 ? void 0 : _b[node3.args.length - 1];
    const last = lastNode(lastArg);
    if (node3.type === "macro" && ((_c = last === null || last === void 0 ? void 0 : last.position) === null || _c === void 0 ? void 0 : _c.end.offset) && lastArg.closeMark.match(/^\}|\]$/)) {
      lastArg.position = {
        ...lastArg.content[0].position,
        end: { ...last.position.end, offset: last.position.end.offset + 1 }
      };
      return lastArg;
    }
    return last;
  }
  const out = copyNode(node3);
  return out;
}
function getPositionExtents(node3) {
  var _a6, _b, _c, _d2, _e, _f, _g, _h, _j, _k, _l, _m, _o;
  const start = (_h = (_d2 = (_c = (_b = (_a6 = node3.content) === null || _a6 === void 0 ? void 0 : _a6[0]) === null || _b === void 0 ? void 0 : _b.position) === null || _c === void 0 ? void 0 : _c.start) !== null && _d2 !== void 0 ? _d2 : (_g = (_f = (_e = node3.content) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.args) === null || _g === void 0 ? void 0 : _g.start) !== null && _h !== void 0 ? _h : (_j = node3.position) === null || _j === void 0 ? void 0 : _j.start;
  const endGroup = (_m = (_l = (_k = node3.content) === null || _k === void 0 ? void 0 : _k[node3.content.length - 1]) === null || _l === void 0 ? void 0 : _l.position) === null || _m === void 0 ? void 0 : _m.end;
  const last = lastNode(node3);
  const endNode = (_o = last === null || last === void 0 ? void 0 : last.position) === null || _o === void 0 ? void 0 : _o.end;
  const end = [endGroup, endNode].sort((a2, b) => {
    var _a7, _b2;
    return ((_a7 = b === null || b === void 0 ? void 0 : b.offset) !== null && _a7 !== void 0 ? _a7 : 0) - ((_b2 = a2 === null || a2 === void 0 ? void 0 : a2.offset) !== null && _b2 !== void 0 ? _b2 : 0);
  })[0];
  if (!start || !end)
    return void 0;
  return { start, end };
}
function unnestParagraphs(node3, selector) {
  const unnest = selectAll(selector, node3);
  unnest.forEach((n) => {
    var _a6;
    if (((_a6 = n.children) === null || _a6 === void 0 ? void 0 : _a6.length) === 1 && n.children[0].type === "paragraph") {
      n.children = n.children[0].children;
    }
  });
}

// ../tex-to-myst/dist/basic.js
function closeParagraph(node3, state) {
  state.closeParagraph();
}
function addText(state, value) {
  if (!value)
    return;
  state.openParagraph();
  state.text(value);
}
var BASIC_TEXT_HANDLERS = {
  string(node3, state) {
    addText(state, node3.content);
  },
  whitespace(node3, state) {
    if (state.data.ignoreNextWhitespace) {
      delete state.data.ignoreNextWhitespace;
      return;
    }
    addText(state, " ");
  },
  argument(node3, state) {
    state.renderChildren(node3);
  },
  group(node3, state) {
    var _a6;
    if (isAccent((_a6 = node3.content) === null || _a6 === void 0 ? void 0 : _a6[0])) {
      const accent2 = { ...node3.content[0] };
      accent2.args = [
        {
          type: "argument",
          openMark: "{",
          closeMark: "}",
          content: node3.content.slice(1).filter((n) => n.type !== "whitespace")
        }
      ];
      state.renderChildren({ type: "group", content: [accent2] });
      return;
    }
    const prev = state.data.openGroups;
    state.renderChildren(node3);
    state.data.openGroups.reverse().forEach((kind) => {
      const topType = state.top().type;
      if (topType === "root")
        return;
      if (topType === kind) {
        state.closeNode();
      }
    });
    state.data.openGroups = prev;
  },
  env_document(node3, state) {
    state.closeParagraph();
    let stack;
    do {
      stack = state.closeNode();
    } while (state.stack.length);
    state.file.messages = state.file.messages.filter((m2) => !m2.message.includes(UNHANDLED_ERROR_TEXT));
    state.stack = [{ type: "root", children: [] }];
    state.renderChildren(node3);
  },
  comment: (node3, state) => {
    if (state.top().type === "paragraph") {
      state.closeNode();
    }
    state.pushNode(u2("comment", { position: state.currentPosition }, node3.content));
  },
  // Ways to break text...
  macro_newline: closeParagraph,
  parbreak: closeParagraph,
  macro_par: closeParagraph,
  macro_break: closeParagraph,
  ["macro_\\"](node3, state) {
    state.addLeaf("break");
  },
  // newpage isn't really appropriate in a web context
  // We could make this into a block in the future?
  macro_newpage: closeParagraph,
  macro_clearpage: closeParagraph,
  macro_pagebreak: closeParagraph,
  macro_FloatBarrier: closeParagraph
};

// ../tex-to-myst/dist/marks.js
var marks = {
  textbf: "strong",
  emph: "emphasis",
  textit: "emphasis",
  texttt: "inlineCode",
  textsc: "smallcaps",
  textsubscript: "subscript",
  textsuperscript: "superscript",
  hl: "strong",
  // This needs to be done!
  cancel: "delete",
  bcancel: "delete",
  xcancel: "delete"
};
var TEXT_MARKS_HANDLERS = {
  ...Object.fromEntries(Object.entries(marks).map(([macro2, kind]) => {
    return [
      `macro_${macro2}`,
      (node3, state) => {
        state.renderInline(node3.args, kind);
      }
    ];
  })),
  macro_bf(node3, state) {
    if (node3.args && node3.args.length > 0) {
      state.renderInline(node3.args, "strong");
      return;
    }
    state.openParagraph();
    state.openNode("strong");
    state.data.openGroups.push("strong");
    state.data.ignoreNextWhitespace = true;
  },
  macro_em(node3, state) {
    if (node3.args && node3.args.length > 0) {
      state.renderInline(node3.args, "emphasis");
      return;
    }
    state.openParagraph();
    state.openNode("emphasis");
    state.data.openGroups.push("emphasis");
    state.data.ignoreNextWhitespace = true;
  },
  macro_ttfamily(node3, state) {
    if (node3.args && node3.args.length > 0) {
      state.renderInline(node3.args, "inlineCode");
      return;
    }
    state.openParagraph();
    state.openNode("inlineCode");
    state.data.openGroups.push("inlineCode");
    state.data.ignoreNextWhitespace = true;
  },
  macro_textrm(node3, state) {
    state.openParagraph();
    state.text(texToText(node3.args));
  },
  verb(node3, state) {
    state.openParagraph();
    state.pushNode(u2("inlineCode", node3.content));
  }
};

// ../tex-to-myst/dist/characters.js
function createText(state, node3, translate, macro2) {
  state.openParagraph();
  const values = texToText(getArguments(node3, "group"));
  const exact2 = translate[values];
  if (exact2) {
    state.text(exact2, false);
    return;
  }
  values.split("").forEach((value) => {
    const converted = translate[value];
    if (converted) {
      state.text(converted, false);
      return;
    }
    state.warn(`Unknown character for accent "\\${macro2}{${value}}"`, node3, "tex-to-myst:characters");
    state.text(converted, false);
  });
}
function addText2(state, value) {
  if (!value)
    return;
  state.openParagraph();
  state.text(value, false);
}
var CHARACTER_HANDLERS = {
  ...Object.fromEntries(Object.entries(LatexAccents).map(([macro2, translate]) => {
    return [
      `macro_${macro2}`,
      (node3, state) => {
        createText(state, node3, translate, macro2);
      }
    ];
  })),
  ...Object.fromEntries(Object.entries(LatexSpecialSymbols).map(([macro2, text7]) => {
    return [
      `macro_${macro2}`,
      (node3, state) => {
        addText2(state, text7);
      }
    ];
  }))
};

// ../tex-to-myst/dist/citations.js
function createCitation(state, node3, { kind, partial, single } = {}) {
  state.openParagraph();
  const value = texToText(getArguments(node3, "group"));
  const citations = value.split(",").map((l) => l.trim());
  const type2 = single ? "cite" : "citeGroup";
  const cite3 = u2(type2);
  if (kind)
    cite3.kind = kind;
  if (node3.star)
    cite3.expand = true;
  if (partial)
    cite3.partial = partial;
  if (single) {
    cite3.label = citations[0];
  } else {
    cite3.children = citations.map((label) => u2("cite", { kind, label }));
  }
  const args = getArguments(node3, "argument");
  if (args.length > 0) {
    const [prefix2, suffix] = args.length === 1 ? [void 0, args[0]] : args;
    const prefixText = texToText(prefix2).trim();
    const suffixText = texToText(suffix).trim();
    const first2 = !single && cite3.children ? cite3.children[0] : cite3;
    const last = !single && cite3.children ? cite3.children[cite3.children.length - 1] : cite3;
    if (first2 && prefixText)
      first2.prefix = replaceTextValue(prefixText);
    if (last && suffixText)
      last.suffix = replaceTextValue(suffixText);
  }
  state.pushNode(cite3);
}
var CITATION_HANDLERS = {
  macro_cite(node3, state) {
    createCitation(state, node3, { kind: "narrative" });
  },
  macro_citet(node3, state) {
    createCitation(state, node3, { kind: "narrative" });
  },
  macro_citep(node3, state) {
    createCitation(state, node3, { kind: "parenthetical" });
  },
  macro_citealp(node3, state) {
    createCitation(state, node3, { kind: "parenthetical", single: true });
  },
  macro_citeauthor(node3, state) {
    createCitation(state, node3, { kind: "narrative", partial: "author" });
  },
  macro_citeyear(node3, state) {
    createCitation(state, node3, { kind: "narrative", partial: "year" });
  },
  macro_citeyearpar(node3, state) {
    createCitation(state, node3, { kind: "parenthetical", partial: "year" });
  },
  macro_citenum(node3, state) {
    createCitation(state, node3, { kind: "narrative", partial: "number" });
  }
};
CITATION_HANDLERS.macro_Citet = CITATION_HANDLERS.macro_citet;
CITATION_HANDLERS.macro_Citep = CITATION_HANDLERS.macro_citep;
CITATION_HANDLERS.macro_Citeauthor = CITATION_HANDLERS.macro_citeauthor;

// ../tex-to-myst/dist/lists.js
var LIST_HANDLERS = {
  env_enumerate(node3, state) {
    const prev = state.data.listType;
    state.data.listType = "list";
    state.renderBlock(node3, "list", { ordered: true });
    if (texToText(node3.args[0]) === "noitemsep") {
      unnestParagraphs(state.top(), "listItem");
    }
    state.data.listType = prev;
  },
  env_itemize(node3, state) {
    const prev = state.data.listType;
    state.data.listType = "list";
    state.renderBlock(node3, "list", { ordered: false });
    if (texToText(node3.args[0]) === "noitemsep") {
      unnestParagraphs(state.top(), "listItem");
    }
    state.data.listType = prev;
  },
  env_description(node3, state) {
    const prev = state.data.listType;
    state.data.listType = "definition";
    state.renderBlock(node3, "definitionList");
    unnestParagraphs(state.top(), "definitionTerm,definitionDescription");
    state.data.listType = prev;
  },
  env_labeling(node3, state) {
    const copy2 = copyNode(node3);
    const group3 = copy2.content.slice(0, 1)[0];
    if (group3.type !== "group") {
      state.warn(`Expected the labelling environment to start with a group, not ${group3.type}`, group3);
    }
    const items = copy2.content.slice(1).reduce((l, n) => {
      const last = l[l.length - 1];
      if (!last)
        return [n];
      if (!last && n.type === "whitespace")
        return [];
      if (n.type === "macro" && n.content === "item") {
        return [...l, n];
      }
      last.args[last.args.length - 1].content.push(n);
      return l;
    }, []);
    const prev = state.data.listType;
    state.data.listType = "definition";
    state.renderBlock({ type: "", content: items }, "definitionList");
    unnestParagraphs(state.top(), "definitionTerm,definitionDescription");
    state.data.listType = prev;
  },
  macro_item(node3, state) {
    if (state.data.listType === "definition") {
      const label = node3.args[renderInfoIndex(node3, "label")];
      const content4 = node3.args[node3.args.length - 1];
      state.renderBlock(label, "definitionTerm");
      state.renderBlock(content4, "definitionDescription");
      return;
    }
    const content3 = node3.args[node3.args.length - 1];
    state.renderBlock(content3, "listItem");
  },
  macro_itemsep() {
  }
};

// ../tex-to-myst/dist/links.js
var LINK_HANDLERS = {
  macro_href(node3, state) {
    state.openParagraph();
    const [urlNode, textNode] = getArguments(node3, "group");
    const url = texToText(urlNode);
    state.renderInline(textNode.content, "link", { url });
  },
  macro_hyperlink(node3, state) {
    state.openParagraph();
    const [urlNode, textNode] = getArguments(node3, "group");
    const url = texToText(urlNode);
    state.renderInline(textNode.content, "link", { url });
  },
  macro_url(node3, state) {
    state.openParagraph();
    const url = texToText(node3);
    state.pushNode(u2("link", { url }, [u2("text", url)]));
  },
  macro_hyperref(node3, state) {
    state.openParagraph();
    const [urlNode] = getArguments(node3, "argument");
    const [textNode] = getArguments(node3, "group");
    const label = texToText(urlNode);
    state.renderInline(textNode.content, "crossReference", { label });
  },
  macro_hypertarget(node3, state) {
    state.openParagraph();
    const [urlNode, content3] = getArguments(node3, "group");
    const label = texToText(urlNode);
    state.renderInline(content3, "span", { label });
  }
};

// ../tex-to-myst/dist/refs.js
var REF_HANDLERS = {
  macro_label(node3, state) {
    var _a6;
    state.closeParagraph();
    const label = texToText(node3);
    const parent2 = state.top();
    const last = (_a6 = parent2 === null || parent2 === void 0 ? void 0 : parent2.children) === null || _a6 === void 0 ? void 0 : _a6.slice(-1)[0];
    const grandparent = state.stack[state.stack.length - 2];
    if (!(parent2 === null || parent2 === void 0 ? void 0 : parent2.label) && ((parent2 === null || parent2 === void 0 ? void 0 : parent2.type) === "container" || (parent2 === null || parent2 === void 0 ? void 0 : parent2.type) === "proof")) {
      parent2.label = label;
    } else if (!(grandparent === null || grandparent === void 0 ? void 0 : grandparent.label) && ((parent2 === null || parent2 === void 0 ? void 0 : parent2.type) === "caption" && (grandparent === null || grandparent === void 0 ? void 0 : grandparent.type) === "container" || (grandparent === null || grandparent === void 0 ? void 0 : grandparent.type) === "proof")) {
      grandparent.label = label;
    } else {
      if (!last) {
        if (parent2 && !parent2.label)
          parent2.label = label;
        return;
      }
      if (!parent2)
        return;
      if (!(last === null || last === void 0 ? void 0 : last.label))
        last.label = label;
    }
  },
  macro_ref(node3, state) {
    state.openParagraph();
    const label = texToText(getArguments(node3, "group"));
    const xref = u2("crossReference", { label }, [u2("text", "%s")]);
    if (hasStar(node3)) {
      xref.noLink = true;
    }
    state.pushNode(xref);
  },
  macro_subref(node3, state) {
    state.openParagraph();
    const label = texToText(getArguments(node3, "group"));
    state.pushNode(u2("crossReference", { label }, [u2("text", "{subEnumerator}")]));
  },
  macro_nameref(node3, state) {
    state.openParagraph();
    const label = texToText(getArguments(node3, "group"));
    state.pushNode(u2("crossReference", { label }, [u2("text", "{name}")]));
  },
  macro_pageref(node3, state) {
    state.openParagraph();
    const label = texToText(getArguments(node3, "group"));
    state.pushNode(u2("crossReference", { label }));
    state.warn("MyST does not support page references.", node3);
  },
  macro_autoref(node3, state) {
    state.openParagraph();
    const label = texToText(getArguments(node3, "group"));
    state.pushNode(u2("crossReference", { label }));
  },
  macro_eqref(node3, state) {
    state.openParagraph();
    const label = texToText(getArguments(node3, "group"));
    state.pushNode(u2("crossReference", { label }));
  },
  macro_cref(node3, state) {
    state.openParagraph();
    const label = texToText(getArguments(node3, "group"));
    state.pushNode(u2("crossReference", { label }, []));
  }
};

// ../tex-to-myst/dist/math.js
function mathBlockAsOriginal(node3, state) {
  state.closeParagraph();
  const original = originalValue(state.tex, node3);
  const value = original === null || original === void 0 ? void 0 : original.replace(/(^(\$\$)|(\\\[))|((\$\$)|(\\\])$)/g, "").trim();
  state.pushNode(u2("math", { value }));
}
function createMacroHandler(command, macro2) {
  return function(node3, state) {
    state.data.ignoreNextWhitespace = true;
    state.renderChildren(macro2);
    state.data.ignoreNextWhitespace = false;
  };
}
var MATH_HANDLERS = {
  inlinemath(node3, state) {
    state.openParagraph();
    const original = originalValue(state.tex, node3);
    const value = original === null || original === void 0 ? void 0 : original.replace(/^\$|(\\\()/g, "").replace(/\$|(\\\))$/g, "").trim();
    state.pushNode(u2("inlineMath", { value }));
  },
  displaymath: mathBlockAsOriginal,
  mathenv: mathBlockAsOriginal,
  env_eqnarray: mathBlockAsOriginal,
  env_multline: mathBlockAsOriginal,
  env_gather: mathBlockAsOriginal,
  env_align: mathBlockAsOriginal,
  env_alignat: mathBlockAsOriginal,
  env_flalign: mathBlockAsOriginal,
  env_pmatrix: mathBlockAsOriginal,
  "env_pmatrix*": mathBlockAsOriginal,
  env_bmatrix: mathBlockAsOriginal,
  "env_bmatrix*": mathBlockAsOriginal,
  env_vmatrix: mathBlockAsOriginal,
  "env_vmatrix*": mathBlockAsOriginal,
  env_Vmatrix: mathBlockAsOriginal,
  "env_Vmatrix*": mathBlockAsOriginal,
  env_subequations(node3, state) {
    state.closeParagraph();
    state.openNode("mathGroup");
    state.renderChildren(node3);
    const mathGroup = state.top();
    transformSubEquations(mathGroup);
    state.closeNode();
  }
};
function transformSubEquations(node3) {
  const mathNodes = selectAll("math", node3);
  node3.equations = mathNodes.map((math7) => math7.value);
  const children = mathNodes.map((math7) => {
    const tex = math7.value.trim();
    if (!tex.match(/^\\begin\{align\*?\}/))
      return math7;
    return tex.replace(/^\\begin\{align\*?\}/, "").replace(/\\end\{align\*?\}$/, "").split("\\\\").map((value) => ({
      ...math7,
      kind: "subequation",
      value: `\\begin{align*}${value.trim()}\\end{align*}`
    }));
  }).flat();
  node3.children = children;
}

// ../../node_modules/@unified-latex/unified-latex-builder/index.js
var BRACES_MAP = {
  "*": { openMark: "", closeMark: "" },
  "{": { openMark: "{", closeMark: "}" },
  "[": { openMark: "[", closeMark: "]" },
  "(": { openMark: "(", closeMark: ")" },
  "<": { openMark: "<", closeMark: ">" }
};
var CLOSE_BRACES = new Set(
  Object.values(BRACES_MAP).map((x2) => x2.closeMark).filter((x2) => x2)
);
function bracesToOpenAndCloseMarks(braces) {
  const ret = [];
  for (const char of braces.split("")) {
    if (CLOSE_BRACES.has(char)) {
      continue;
    }
    const braces2 = BRACES_MAP[char];
    if (braces2 == null) {
      throw new Error(`Unknown open/close mark type "${char}"`);
    }
    braces2;
    ret.push(braces2);
  }
  return ret;
}
function arg(args2, special) {
  if (args2 == null) {
    return { type: "argument", content: [], openMark: "", closeMark: "" };
  }
  if (typeof args2 === "string") {
    args2 = s3(args2);
  }
  if (!Array.isArray(args2) && args2.type === "argument") {
    return args2;
  }
  let openMark = (special == null ? void 0 : special.openMark) ?? "{";
  let closeMark = (special == null ? void 0 : special.closeMark) ?? "}";
  if (special == null ? void 0 : special.braces) {
    const braces = bracesToOpenAndCloseMarks(special.braces);
    if (braces[0]) {
      openMark = braces[0].openMark;
      closeMark = braces[0].closeMark;
    }
  }
  if (!Array.isArray(args2)) {
    args2 = [args2];
  }
  return { type: "argument", content: args2, openMark, closeMark };
}
function s3(value) {
  if (typeof value === "string") {
    return { type: "string", content: value };
  }
  return value;
}

// ../../node_modules/@unified-latex/unified-latex-util-print-raw/index.js
var linebreak = Symbol("linebreak");
var ESCAPE = "\\";
function _printRaw(node3) {
  if (typeof node3 === "string") {
    return [node3];
  }
  if (Array.isArray(node3)) {
    return [].concat(
      ...node3.map((n) => _printRaw(n))
    );
  }
  let argsString, escape5;
  switch (node3.type) {
    case "root":
      return _printRaw(node3.content);
    case "argument":
      return [node3.openMark, ..._printRaw(node3.content), node3.closeMark];
    case "comment":
      var suffix = node3.suffixParbreak ? "" : linebreak;
      var leadingWhitespace = "";
      if (node3.sameline && node3.leadingWhitespace) {
        leadingWhitespace = " ";
      }
      if (node3.sameline) {
        return [
          leadingWhitespace,
          "%",
          ..._printRaw(node3.content),
          suffix
        ];
      }
      return [linebreak, "%", ..._printRaw(node3.content), suffix];
    case "environment":
    case "mathenv":
    case "verbatim":
      var env6 = _printRaw(node3.env);
      var envStart = [ESCAPE + "begin{", ...env6, "}"];
      var envEnd = [ESCAPE + "end{", ...env6, "}"];
      argsString = node3.args == null ? [] : _printRaw(node3.args);
      return [
        ...envStart,
        ...argsString,
        ..._printRaw(node3.content),
        ...envEnd
      ];
    case "displaymath":
      return [ESCAPE + "[", ..._printRaw(node3.content), ESCAPE + "]"];
    case "group":
      return ["{", ..._printRaw(node3.content), "}"];
    case "inlinemath":
      return ["$", ..._printRaw(node3.content), "$"];
    case "macro":
      argsString = node3.args == null ? [] : _printRaw(node3.args);
      escape5 = node3.escapeToken == null ? ESCAPE : node3.escapeToken;
      return [escape5, ..._printRaw(node3.content), ...argsString];
    case "parbreak":
      return [linebreak, linebreak];
    case "string":
      return [node3.content];
    case "verb":
      return [
        ESCAPE,
        node3.env,
        node3.escape,
        ..._printRaw(node3.content),
        node3.escape
      ];
    case "whitespace":
      return [" "];
    default:
      console.warn(
        "Cannot find render for node ",
        node3,
        `(of type ${typeof node3})`
      );
      return ["" + node3];
  }
}
function printRaw(node3, options) {
  const asArray = options != null ? options.asArray : false;
  const printedTokens = _printRaw(node3);
  if (asArray) {
    return printedTokens;
  }
  return printedTokens.map((x2) => x2 === linebreak ? "\n" : x2).join("");
}

// ../../node_modules/@unified-latex/unified-latex-util-match/index.js
function createMacroMatcher(macros18) {
  const macrosHash = Array.isArray(macros18) ? macros18.length > 0 ? typeof macros18[0] === "string" ? Object.fromEntries(
    macros18.map((macro2) => {
      if (typeof macro2 !== "string") {
        throw new Error("Wrong branch of map function");
      }
      return [macro2, {}];
    })
  ) : Object.fromEntries(
    macros18.map((macro2) => {
      if (typeof macro2 === "string") {
        throw new Error("Wrong branch of map function");
      }
      if (macro2.escapeToken != null) {
        return [
          macro2.content,
          { escapeToken: macro2.escapeToken }
        ];
      }
      return [macro2.content, {}];
    })
  ) : {} : macros18;
  return function matchAgainstMacros(node3) {
    if (node3 == null || node3.type !== "macro") {
      return false;
    }
    const spec = macrosHash[node3.content];
    if (!spec) {
      return false;
    }
    if (typeof spec === "object" && "escapeToken" in spec) {
      return spec.escapeToken == null || spec.escapeToken === node3.escapeToken;
    }
    return true;
  };
}
function createEnvironmentMatcher(macros18) {
  const environmentsHash = Array.isArray(macros18) ? Object.fromEntries(
    macros18.map((str2) => {
      return [str2, {}];
    })
  ) : macros18;
  return function matchAgainstEnvironments(node3) {
    if (!match.anyEnvironment(node3)) {
      return false;
    }
    const envName = printRaw(node3.env);
    const spec = environmentsHash[envName];
    if (!spec) {
      return false;
    }
    return true;
  };
}
var match = {
  macro(node3, macroName) {
    if (node3 == null) {
      return false;
    }
    return node3.type === "macro" && (macroName == null || node3.content === macroName);
  },
  anyMacro(node3) {
    return match.macro(node3);
  },
  environment(node3, envName) {
    if (node3 == null) {
      return false;
    }
    return (node3.type === "environment" || node3.type === "mathenv") && (envName == null || printRaw(node3.env) === envName);
  },
  anyEnvironment(node3) {
    return match.environment(node3);
  },
  comment(node3) {
    if (node3 == null) {
      return false;
    }
    return node3.type === "comment";
  },
  parbreak(node3) {
    if (node3 == null) {
      return false;
    }
    return node3.type === "parbreak";
  },
  whitespace(node3) {
    if (node3 == null) {
      return false;
    }
    return node3.type === "whitespace";
  },
  /**
   * Matches whitespace or a comment with leading whitespace.
   */
  whitespaceLike(node3) {
    if (node3 == null) {
      return false;
    }
    return node3.type === "whitespace" || node3.type === "whitespace" && node3.leadingWhitespace === true;
  },
  string(node3, value) {
    if (node3 == null) {
      return false;
    }
    return node3.type === "string" && (value == null || node3.content === value);
  },
  anyString(node3) {
    return match.string(node3);
  },
  group(node3) {
    if (node3 == null) {
      return false;
    }
    return node3.type === "group";
  },
  argument(node3) {
    if (node3 == null) {
      return false;
    }
    return node3.type === "argument";
  },
  blankArgument(node3) {
    if (!match.argument(node3)) {
      return false;
    }
    return node3.openMark === "" && node3.closeMark === "" && node3.content.length === 0;
  },
  math(node3) {
    if (node3 == null) {
      return false;
    }
    return node3.type === "displaymath" || node3.type === "inlinemath";
  },
  createMacroMatcher,
  createEnvironmentMatcher
};
var {
  anyEnvironment,
  anyMacro,
  anyString,
  argument,
  blankArgument,
  comment: comment4,
  environment,
  group,
  macro,
  math: math3,
  parbreak,
  string,
  whitespace: whitespace3
} = match;

// ../../node_modules/@unified-latex/unified-latex-util-visit/index.js
function listMathChildren(node3) {
  const NULL_RETURN = { enter: [], leave: [] };
  if (Array.isArray(node3)) {
    return NULL_RETURN;
  }
  if (match.math(node3)) {
    return { enter: ["content"], leave: [] };
  }
  const renderInfo = node3._renderInfo || {};
  if (renderInfo.inMathMode == null) {
    return NULL_RETURN;
  }
  if (match.macro(node3)) {
    if (renderInfo.inMathMode === true) {
      return { enter: ["args"], leave: [] };
    } else if (renderInfo.inMathMode === false) {
      return { enter: [], leave: ["args"] };
    }
  }
  if (match.environment(node3)) {
    if (renderInfo.inMathMode === true) {
      return { enter: ["content"], leave: [] };
    } else {
      return { enter: [], leave: ["content"] };
    }
  }
  return NULL_RETURN;
}
var CONTINUE2 = Symbol("continue");
var SKIP2 = Symbol("skip");
var EXIT2 = Symbol("exit");
var DEFAULT_CONTEXT = {
  inMathMode: false,
  hasMathModeAncestor: false
};
function visit2(tree, visitor, options) {
  const {
    startingContext = DEFAULT_CONTEXT,
    test: test2 = () => true,
    includeArrays = false
  } = options || {};
  let enter;
  let leave;
  if (typeof visitor === "function") {
    enter = visitor;
  } else if (visitor && typeof visitor === "object") {
    enter = visitor.enter;
    leave = visitor.leave;
  }
  walk2(tree, {
    key: void 0,
    index: void 0,
    parents: [],
    containingArray: void 0,
    context: { ...startingContext }
  });
  function walk2(node3, { key: key2, index: index4, parents, context, containingArray }) {
    const nodePassesTest = includeArrays ? test2(node3, { key: key2, index: index4, parents, context, containingArray }) : !Array.isArray(node3) && test2(node3, { key: key2, index: index4, parents, context, containingArray });
    const result = enter && nodePassesTest ? toResult2(
      enter(node3, {
        key: key2,
        index: index4,
        parents,
        context,
        containingArray
      })
    ) : [CONTINUE2];
    if (result[0] === EXIT2) {
      return result;
    }
    if (result[0] === SKIP2) {
      return leave && nodePassesTest ? toResult2(
        leave(node3, {
          key: key2,
          index: index4,
          parents,
          context,
          containingArray
        })
      ) : result;
    }
    if (Array.isArray(node3)) {
      for (let index22 = 0; index22 > -1 && index22 < node3.length; index22++) {
        const item = node3[index22];
        const result2 = walk2(item, {
          key: key2,
          index: index22,
          parents,
          context,
          containingArray: node3
        });
        if (result2[0] === EXIT2) {
          return result2;
        }
        if (typeof result2[1] === "number") {
          index22 = result2[1] - 1;
        }
      }
    } else {
      let childProps = ["content", "args"];
      switch (node3.type) {
        case "macro":
          childProps = ["args"];
          break;
        case "comment":
        case "string":
        case "verb":
        case "verbatim":
          childProps = [];
          break;
        default:
          break;
      }
      const mathModeProps = listMathChildren(node3);
      for (const key22 of childProps) {
        const value = node3[key22];
        const grandparents = [node3].concat(parents);
        if (value == null) {
          continue;
        }
        const newContext = { ...context };
        if (mathModeProps.enter.includes(key22)) {
          newContext.inMathMode = true;
          newContext.hasMathModeAncestor = true;
        } else if (mathModeProps.leave.includes(key22)) {
          newContext.inMathMode = false;
        }
        const result2 = walk2(value, {
          key: key22,
          index: void 0,
          parents: grandparents,
          context: newContext,
          containingArray: void 0
        });
        if (result2[0] === EXIT2) {
          return result2;
        }
      }
    }
    return leave && nodePassesTest ? toResult2(
      leave(node3, {
        key: key2,
        index: index4,
        parents,
        context,
        containingArray
      })
    ) : result;
  }
}
function toResult2(value) {
  if (value == null) {
    return [CONTINUE2];
  }
  if (Array.isArray(value)) {
    return value;
  }
  if (typeof value === "number") {
    return [CONTINUE2, value];
  }
  return [value];
}

// ../../node_modules/@unified-latex/unified-latex-util-render-info/index.js
function updateRenderInfo(node3, renderInfo) {
  if (renderInfo != null) {
    node3._renderInfo = { ...node3._renderInfo || {}, ...renderInfo };
  }
  return node3;
}

// ../../node_modules/@unified-latex/unified-latex-util-trim/index.js
function trim(nodes) {
  if (!Array.isArray(nodes)) {
    console.warn("Trying to trim a non-array ast", nodes);
    return nodes;
  }
  const { trimmedStart } = trimStart(nodes);
  const { trimmedEnd } = trimEnd(nodes);
  return { trimmedStart, trimmedEnd };
}
function trimStart(nodes) {
  const { start } = amountOfLeadingAndTrailingWhitespace(nodes);
  nodes.splice(0, start);
  for (const leadingToken of nodes) {
    if (!match.comment(leadingToken)) {
      break;
    }
    if (leadingToken.leadingWhitespace || leadingToken.sameline) {
      leadingToken.leadingWhitespace = false;
      delete leadingToken.position;
    }
    if (start > 0 && leadingToken.sameline) {
      leadingToken.sameline = false;
      delete leadingToken.position;
    }
  }
  return { trimmedStart: start };
}
function trimEnd(nodes) {
  const { end } = amountOfLeadingAndTrailingWhitespace(nodes);
  nodes.splice(nodes.length - end, end);
  for (let i2 = nodes.length - 1; i2 >= 0; i2--) {
    const trailingToken = nodes[i2];
    if (!match.comment(trailingToken)) {
      break;
    }
    delete trailingToken.suffixParbreak;
    if (match.comment(trailingToken) && trailingToken.leadingWhitespace && !trailingToken.sameline) {
      trailingToken.leadingWhitespace = false;
      delete trailingToken.position;
    }
  }
  return { trimmedEnd: end };
}
function amountOfLeadingAndTrailingWhitespace(ast) {
  let start = 0;
  let end = 0;
  for (const node3 of ast) {
    if (match.whitespace(node3) || match.parbreak(node3)) {
      start++;
    } else {
      break;
    }
  }
  if (start === ast.length) {
    return { start, end: 0 };
  }
  for (let i2 = ast.length - 1; i2 >= 0; i2--) {
    const node3 = ast[i2];
    if (match.whitespace(node3) || match.parbreak(node3)) {
      end++;
    } else {
      break;
    }
  }
  return { start, end };
}
var unifiedLatexTrimEnvironmentContents = function unifiedLatexTrimEnvironmentContents2() {
  return (tree) => {
    visit2(tree, (node3) => {
      if (!(match.math(node3) || match.anyEnvironment(node3))) {
        return;
      }
      let firstNode = node3.content[0];
      if (match.comment(firstNode) && firstNode.sameline) {
        firstNode.suffixParbreak = false;
        trimEnd(node3.content);
        const { trimmedStart } = trimStart(node3.content.slice(1));
        node3.content.splice(1, trimmedStart);
      } else {
        trim(node3.content);
      }
    });
  };
};
var unifiedLatexTrimRoot = function unifiedLatexTrimRoot2() {
  return (tree) => {
    trim(tree.content);
  };
};

// ../../node_modules/@unified-latex/unified-latex-util-split/index.js
function splitOnCondition(nodes, splitFunc = () => false, options) {
  if (!Array.isArray(nodes)) {
    throw new Error(`Can only split an Array, not ${nodes}`);
  }
  const { onlySplitOnFirstOccurrence = false } = options || {};
  const splitIndices = [];
  for (let i2 = 0; i2 < nodes.length; i2++) {
    if (splitFunc(nodes[i2])) {
      splitIndices.push(i2);
      if (onlySplitOnFirstOccurrence) {
        break;
      }
    }
  }
  if (splitIndices.length === 0) {
    return { segments: [nodes], separators: [] };
  }
  let separators = splitIndices.map((i2) => nodes[i2]);
  let segments = splitIndices.map((splitEnd, i2) => {
    const splitStart = i2 === 0 ? 0 : splitIndices[i2 - 1] + 1;
    return nodes.slice(splitStart, splitEnd);
  });
  segments.push(
    nodes.slice(splitIndices[splitIndices.length - 1] + 1, nodes.length)
  );
  return { segments, separators };
}
function splitOnMacro(ast, macroName) {
  if (typeof macroName === "string") {
    macroName = [macroName];
  }
  if (!Array.isArray(macroName)) {
    throw new Error("Type coercion failed");
  }
  const isSeparator = match.createMacroMatcher(macroName);
  const { segments, separators } = splitOnCondition(ast, isSeparator);
  return { segments, macros: separators };
}

// ../../node_modules/@unified-latex/unified-latex-util-replace/index.js
function lastSignificantNodeIndex(nodes, parbreaksAreInsignificant) {
  for (let i2 = nodes.length - 1; i2 >= 0; i2--) {
    const node3 = nodes[i2];
    if (match.whitespace(node3) || match.comment(node3) || parbreaksAreInsignificant && match.parbreak(node3)) {
      continue;
    }
    return i2;
  }
  return void 0;
}

// ../../node_modules/@unified-latex/unified-latex-util-pegjs/index.js
function decorateArrayForPegjs(array) {
  array.charAt = function(i2) {
    return this[i2];
  };
  array.charCodeAt = () => 0;
  array.substring = function(i2, j) {
    return this.slice(i2, j);
  };
  array.replace = function(a2, b) {
    const ret = JSON.stringify(this);
    return ret.replace(a2, b);
  };
  return array;
}
var latex_default = (
  // Generated by Peggy 2.0.1.
  //
  // https://peggyjs.org/
  (function() {
    "use strict";
    function peg$subclass(child, parent2) {
      function C() {
        this.constructor = child;
      }
      C.prototype = parent2.prototype;
      child.prototype = new C();
    }
    function peg$SyntaxError(message, expected, found2, location4) {
      var self2 = Error.call(this, message);
      if (Object.setPrototypeOf) {
        Object.setPrototypeOf(self2, peg$SyntaxError.prototype);
      }
      self2.expected = expected;
      self2.found = found2;
      self2.location = location4;
      self2.name = "SyntaxError";
      return self2;
    }
    peg$subclass(peg$SyntaxError, Error);
    function peg$padEnd(str2, targetLength, padString) {
      padString = padString || " ";
      if (str2.length > targetLength) {
        return str2;
      }
      targetLength -= str2.length;
      padString += padString.repeat(targetLength);
      return str2 + padString.slice(0, targetLength);
    }
    peg$SyntaxError.prototype.format = function(sources) {
      var str2 = "Error: " + this.message;
      if (this.location) {
        var src = null;
        var k;
        for (k = 0; k < sources.length; k++) {
          if (sources[k].source === this.location.source) {
            src = sources[k].text.split(/\r\n|\n|\r/g);
            break;
          }
        }
        var s5 = this.location.start;
        var loc = this.location.source + ":" + s5.line + ":" + s5.column;
        if (src) {
          var e2 = this.location.end;
          var filler = peg$padEnd("", s5.line.toString().length, " ");
          var line2 = src[s5.line - 1];
          var last = s5.line === e2.line ? e2.column : line2.length + 1;
          var hatLen = last - s5.column || 1;
          str2 += "\n --> " + loc + "\n" + filler + " |\n" + s5.line + " | " + line2 + "\n" + filler + " | " + peg$padEnd("", s5.column - 1, " ") + peg$padEnd("", hatLen, "^");
        } else {
          str2 += "\n at " + loc;
        }
      }
      return str2;
    };
    peg$SyntaxError.buildMessage = function(expected, found2) {
      var DESCRIBE_EXPECTATION_FNS = {
        literal: function(expectation) {
          return '"' + literalEscape(expectation.text) + '"';
        },
        class: function(expectation) {
          var escapedParts = expectation.parts.map(function(part) {
            return Array.isArray(part) ? classEscape(part[0]) + "-" + classEscape(part[1]) : classEscape(part);
          });
          return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
        },
        any: function() {
          return "any character";
        },
        end: function() {
          return "end of input";
        },
        other: function(expectation) {
          return expectation.description;
        }
      };
      function hex(ch) {
        return ch.charCodeAt(0).toString(16).toUpperCase();
      }
      function literalEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function classEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function describeExpectation(expectation) {
        return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
      }
      function describeExpected(expected2) {
        var descriptions = expected2.map(describeExpectation);
        var i2, j;
        descriptions.sort();
        if (descriptions.length > 0) {
          for (i2 = 1, j = 1; i2 < descriptions.length; i2++) {
            if (descriptions[i2 - 1] !== descriptions[i2]) {
              descriptions[j] = descriptions[i2];
              j++;
            }
          }
          descriptions.length = j;
        }
        switch (descriptions.length) {
          case 1:
            return descriptions[0];
          case 2:
            return descriptions[0] + " or " + descriptions[1];
          default:
            return descriptions.slice(0, -1).join(", ") + ", or " + descriptions[descriptions.length - 1];
        }
      }
      function describeFound(found22) {
        return found22 ? '"' + literalEscape(found22) + '"' : "end of input";
      }
      return "Expected " + describeExpected(expected) + " but " + describeFound(found2) + " found.";
    };
    function peg$parse(input3, options) {
      options = options !== void 0 ? options : {};
      var peg$FAILED = {};
      var peg$source = options.grammarSource;
      var peg$startRuleFunctions = { document: peg$parsedocument, math: peg$parsemath };
      var peg$startRuleFunction = peg$parsedocument;
      var peg$c0 = "%";
      var peg$c1 = ".";
      var peg$c2 = "verb*";
      var peg$c3 = "verb";
      var peg$c4 = "[";
      var peg$c5 = "]";
      var peg$c6 = "lstinline";
      var peg$c7 = "mintinline";
      var peg$c8 = "mint";
      var peg$c9 = "minted";
      var peg$c10 = "verbatim*";
      var peg$c11 = "verbatim";
      var peg$c12 = "filecontents*";
      var peg$c13 = "filecontents";
      var peg$c14 = "comment";
      var peg$c15 = "lstlisting";
      var peg$c16 = "(";
      var peg$c17 = ")";
      var peg$c18 = "begin";
      var peg$c19 = "end";
      var peg$c20 = "equation*";
      var peg$c21 = "equation";
      var peg$c22 = "align*";
      var peg$c23 = "align";
      var peg$c24 = "alignat*";
      var peg$c25 = "alignat";
      var peg$c26 = "gather*";
      var peg$c27 = "gather";
      var peg$c28 = "multline*";
      var peg$c29 = "multline";
      var peg$c30 = "flalign*";
      var peg$c31 = "flalign";
      var peg$c32 = "split";
      var peg$c33 = "math";
      var peg$c34 = "displaymath";
      var peg$c35 = "\\";
      var peg$c36 = "{";
      var peg$c37 = "}";
      var peg$c38 = "$";
      var peg$c39 = "&";
      var peg$c40 = "\r";
      var peg$c41 = "\n";
      var peg$c42 = "\r\n";
      var peg$c43 = "#";
      var peg$c44 = "^";
      var peg$c45 = "_";
      var peg$c46 = "\0";
      var peg$r0 = /^[^ \t\n\r]/;
      var peg$r1 = /^[ \t]/;
      var peg$r2 = /^[a-zA-Z]/;
      var peg$r3 = /^[0-9]/;
      var peg$r4 = /^[.,;:\-*\/()!?=+<>[\]`'"~]/;
      var peg$e0 = peg$otherExpectation("document");
      var peg$e1 = peg$otherExpectation("math");
      var peg$e2 = peg$otherExpectation("token");
      var peg$e3 = peg$anyExpectation();
      var peg$e4 = peg$otherExpectation("parbreak");
      var peg$e5 = peg$otherExpectation("math token");
      var peg$e6 = peg$otherExpectation("nonchar token");
      var peg$e7 = peg$literalExpectation("%", false);
      var peg$e8 = peg$otherExpectation("whitespace");
      var peg$e9 = peg$otherExpectation("number");
      var peg$e10 = peg$literalExpectation(".", false);
      var peg$e11 = peg$otherExpectation("special macro");
      var peg$e12 = peg$literalExpectation("verb*", false);
      var peg$e13 = peg$literalExpectation("verb", false);
      var peg$e14 = peg$literalExpectation("[", false);
      var peg$e15 = peg$literalExpectation("]", false);
      var peg$e16 = peg$classExpectation([" ", "	", "\n", "\r"], true, false);
      var peg$e17 = peg$otherExpectation("verbatim listings");
      var peg$e18 = peg$literalExpectation("lstinline", false);
      var peg$e19 = peg$otherExpectation("verbatim minted");
      var peg$e20 = peg$literalExpectation("mintinline", false);
      var peg$e21 = peg$literalExpectation("mint", false);
      var peg$e22 = peg$otherExpectation("verbatim minted environment");
      var peg$e23 = peg$literalExpectation("minted", false);
      var peg$e24 = peg$otherExpectation("verbatim environment");
      var peg$e25 = peg$literalExpectation("verbatim*", false);
      var peg$e26 = peg$literalExpectation("verbatim", false);
      var peg$e27 = peg$literalExpectation("filecontents*", false);
      var peg$e28 = peg$literalExpectation("filecontents", false);
      var peg$e29 = peg$literalExpectation("comment", false);
      var peg$e30 = peg$literalExpectation("lstlisting", false);
      var peg$e31 = peg$otherExpectation("macro");
      var peg$e32 = peg$otherExpectation("group");
      var peg$e33 = peg$otherExpectation("environment");
      var peg$e34 = peg$otherExpectation("math environment");
      var peg$e35 = peg$otherExpectation("math group");
      var peg$e36 = peg$literalExpectation("(", false);
      var peg$e37 = peg$literalExpectation(")", false);
      var peg$e38 = peg$literalExpectation("begin", false);
      var peg$e39 = peg$literalExpectation("end", false);
      var peg$e40 = peg$literalExpectation("equation*", false);
      var peg$e41 = peg$literalExpectation("equation", false);
      var peg$e42 = peg$literalExpectation("align*", false);
      var peg$e43 = peg$literalExpectation("align", false);
      var peg$e44 = peg$literalExpectation("alignat*", false);
      var peg$e45 = peg$literalExpectation("alignat", false);
      var peg$e46 = peg$literalExpectation("gather*", false);
      var peg$e47 = peg$literalExpectation("gather", false);
      var peg$e48 = peg$literalExpectation("multline*", false);
      var peg$e49 = peg$literalExpectation("multline", false);
      var peg$e50 = peg$literalExpectation("flalign*", false);
      var peg$e51 = peg$literalExpectation("flalign", false);
      var peg$e52 = peg$literalExpectation("split", false);
      var peg$e53 = peg$literalExpectation("math", false);
      var peg$e54 = peg$literalExpectation("displaymath", false);
      var peg$e55 = peg$otherExpectation("escape");
      var peg$e56 = peg$literalExpectation("\\", false);
      var peg$e57 = peg$literalExpectation("{", false);
      var peg$e58 = peg$literalExpectation("}", false);
      var peg$e59 = peg$literalExpectation("$", false);
      var peg$e60 = peg$literalExpectation("&", false);
      var peg$e61 = peg$otherExpectation("newline");
      var peg$e62 = peg$literalExpectation("\r", false);
      var peg$e63 = peg$literalExpectation("\n", false);
      var peg$e64 = peg$literalExpectation("\r\n", false);
      var peg$e65 = peg$literalExpectation("#", false);
      var peg$e66 = peg$literalExpectation("^", false);
      var peg$e67 = peg$literalExpectation("_", false);
      var peg$e68 = peg$literalExpectation("\0", false);
      var peg$e69 = peg$classExpectation([" ", "	"], false, false);
      var peg$e70 = peg$otherExpectation("letter");
      var peg$e71 = peg$classExpectation([["a", "z"], ["A", "Z"]], false, false);
      var peg$e72 = peg$otherExpectation("digit");
      var peg$e73 = peg$classExpectation([["0", "9"]], false, false);
      var peg$e74 = peg$otherExpectation("punctuation");
      var peg$e75 = peg$classExpectation([".", ",", ";", ":", "-", "*", "/", "(", ")", "!", "?", "=", "+", "<", ">", "[", "]", "`", "'", '"', "~"], false, false);
      var peg$e76 = peg$otherExpectation("full comment");
      var peg$e77 = peg$otherExpectation("comment");
      var peg$f0 = function(content3) {
        return createNode("root", { content: content3.flatMap((x2) => x2) });
      };
      var peg$f1 = function(t2) {
        return t2;
      };
      var peg$f2 = function(eq) {
        return createNode("inlinemath", { content: eq.flatMap((x2) => x2) });
      };
      var peg$f3 = function(s5) {
        return createNode("string", { content: s5 });
      };
      var peg$f4 = function(s5) {
        return createNode("string", { content: s5 });
      };
      var peg$f5 = function() {
        return createNode("parbreak");
      };
      var peg$f6 = function(x2) {
        return x2;
      };
      var peg$f7 = function(x2) {
        return x2;
      };
      var peg$f8 = function() {
        return createNode("macro", { content: "^", escapeToken: "" });
      };
      var peg$f9 = function() {
        return createNode("macro", { content: "_", escapeToken: "" });
      };
      var peg$f10 = function(s5) {
        return createNode("string", { content: s5 });
      };
      var peg$f11 = function() {
        return createNode("whitespace");
      };
      var peg$f12 = function(a2, b) {
        return a2.join("") + "." + b.join("");
      };
      var peg$f13 = function(b) {
        return "." + b.join("");
      };
      var peg$f14 = function(a2) {
        return a2.join("") + ".";
      };
      var peg$f15 = function(s5) {
        return createNode("string", { content: s5 });
      };
      var peg$f16 = function(env6, e2, end) {
        return end == e2;
      };
      var peg$f17 = function(env6, e2, x2) {
        return x2;
      };
      var peg$f18 = function(env6, e2, x2, end) {
        return end == e2;
      };
      var peg$f19 = function(env6, e2, x2) {
        return createNode("verb", {
          env: env6,
          escape: e2,
          content: x2.join("")
        });
      };
      var peg$f20 = function(x2) {
        return x2;
      };
      var peg$f21 = function(x2) {
        return createNode("displaymath", { content: x2.flatMap((x22) => x22) });
      };
      var peg$f22 = function(x2) {
        return x2;
      };
      var peg$f23 = function(x2) {
        return createNode("inlinemath", { content: x2.flatMap((x22) => x22) });
      };
      var peg$f24 = function(x2) {
        return x2;
      };
      var peg$f25 = function(x2) {
        return createNode("displaymath", { content: x2.flatMap((x22) => x22) });
      };
      var peg$f26 = function(end) {
        return end.type === "string" && end.content === "]";
      };
      var peg$f27 = function(x2) {
        return x2;
      };
      var peg$f28 = function(o) {
        return [
          createNode("string", { content: "[" }),
          ...o,
          createNode("string", { content: "]" })
        ];
      };
      var peg$f29 = function(x2) {
        return x2;
      };
      var peg$f30 = function(v) {
        return createNode("group", {
          content: createNode("string", { content: v.join("") })
        });
      };
      var peg$f31 = function(d, end) {
        return end == d;
      };
      var peg$f32 = function(d, x2) {
        return x2;
      };
      var peg$f33 = function(d, v, end) {
        return end == d;
      };
      var peg$f34 = function(d, v) {
        return [
          createNode("string", { content: d }),
          createNode("string", { content: v.join("") }),
          createNode("string", { content: d })
        ];
      };
      var peg$f35 = function(macro2, option3, verbatim) {
        return [
          createNode("macro", { content: macro2 }),
          ...option3 || [],
          ...[].concat(verbatim)
        ];
      };
      var peg$f36 = function(macro2, option3, language, verbatim) {
        return [
          createNode("macro", { content: macro2 }),
          ...option3 || [],
          language,
          ...[].concat(verbatim)
        ];
      };
      var peg$f37 = function(env6, lang, end_env) {
        return compare_env({ content: [env6] }, end_env);
      };
      var peg$f38 = function(env6, lang, x2) {
        return x2;
      };
      var peg$f39 = function(env6, lang, body3) {
        return createNode("verbatim", {
          env: `${env6}{${lang.content.content}}`,
          content: body3.join("")
        });
      };
      var peg$f40 = function(env6, end_env) {
        return compare_env({ content: [env6] }, end_env);
      };
      var peg$f41 = function(env6, x2) {
        return x2;
      };
      var peg$f42 = function(env6, body3) {
        return createNode("verbatim", {
          env: env6,
          content: body3.join("")
        });
      };
      var peg$f43 = function(n) {
        return n.join("");
      };
      var peg$f44 = function(n) {
        return n;
      };
      var peg$f45 = function(m2) {
        return createNode("macro", { content: m2 });
      };
      var peg$f46 = function(c) {
        return c;
      };
      var peg$f47 = function(x2) {
        return createNode("group", { content: x2.flatMap((x22) => x22) });
      };
      var peg$f48 = function(g) {
        return text7().slice(1, -1);
      };
      var peg$f49 = function(env6, env_comment, end_env) {
        return compare_env(env6, end_env);
      };
      var peg$f50 = function(env6, env_comment, x2) {
        return x2;
      };
      var peg$f51 = function(env6, env_comment, body3) {
        body3 = body3.flatMap((x2) => x2);
        return createNode("environment", {
          env: env6,
          content: env_comment ? [env_comment, ...body3] : body3
        });
      };
      var peg$f52 = function(env6, env_comment, end_env) {
        return compare_env({ content: [env6] }, end_env);
      };
      var peg$f53 = function(env6, env_comment, x2) {
        return x2;
      };
      var peg$f54 = function(env6, env_comment, body3) {
        body3 = body3.flatMap((x2) => x2);
        return createNode("mathenv", {
          env: env6,
          content: env_comment ? [env_comment, ...body3] : body3
        });
      };
      var peg$f55 = function(c) {
        return c;
      };
      var peg$f56 = function(x2) {
        return createNode("group", { content: x2.flatMap((x22) => x22) });
      };
      var peg$f57 = function(e2) {
        return createNode("string", { content: e2 });
      };
      var peg$f58 = function() {
        return createNode("string", { content: "\\" });
      };
      var peg$f59 = function(s5) {
        return createNode("string", { content: s5 });
      };
      var peg$f60 = function(s5) {
        return createNode("string", { content: s5 });
      };
      var peg$f61 = function(s5) {
        return createNode("string", { content: s5 });
      };
      var peg$f62 = function(s5) {
        return createNode("string", { content: s5 });
      };
      var peg$f63 = function(s5) {
        return createNode("string", { content: s5 });
      };
      var peg$f64 = function(s5) {
        return createNode("string", { content: s5 });
      };
      var peg$f65 = function(s5) {
        return createNode("string", { content: s5 });
      };
      var peg$f66 = function() {
        return " ";
      };
      var peg$f67 = function(p5) {
        return createNode("string", { content: p5 });
      };
      var peg$f68 = function(leading_sp, comment7) {
        return createNode("comment", {
          ...comment7,
          sameline: false,
          leadingWhitespace: leading_sp.length > 0
        });
      };
      var peg$f69 = function(spaces, x2) {
        return createNode("comment", {
          ...x2,
          sameline: true,
          leadingWhitespace: spaces.length > 0
        });
      };
      var peg$f70 = function(c) {
        return c;
      };
      var peg$f71 = function(c) {
        return { content: c.join(""), suffixParbreak: true };
      };
      var peg$f72 = function(c) {
        return c;
      };
      var peg$f73 = function(c) {
        return { content: c.join("") };
      };
      var peg$f74 = function() {
        var loc = location4();
        return loc.start.column === 1;
      };
      var peg$currPos = 0;
      var peg$savedPos = 0;
      var peg$posDetailsCache = [{ line: 1, column: 1 }];
      var peg$maxFailPos = 0;
      var peg$maxFailExpected = [];
      var peg$silentFails = 0;
      var peg$result;
      if ("startRule" in options) {
        if (!(options.startRule in peg$startRuleFunctions)) {
          throw new Error(`Can't start parsing from rule "` + options.startRule + '".');
        }
        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
      }
      function text7() {
        return input3.substring(peg$savedPos, peg$currPos);
      }
      function offset() {
        return peg$savedPos;
      }
      function range() {
        return {
          source: peg$source,
          start: peg$savedPos,
          end: peg$currPos
        };
      }
      function location4() {
        return peg$computeLocation(peg$savedPos, peg$currPos);
      }
      function expected(description, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildStructuredError(
          [peg$otherExpectation(description)],
          input3.substring(peg$savedPos, peg$currPos),
          location22
        );
      }
      function error(message, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildSimpleError(message, location22);
      }
      function peg$literalExpectation(text22, ignoreCase) {
        return { type: "literal", text: text22, ignoreCase };
      }
      function peg$classExpectation(parts, inverted, ignoreCase) {
        return { type: "class", parts, inverted, ignoreCase };
      }
      function peg$anyExpectation() {
        return { type: "any" };
      }
      function peg$endExpectation() {
        return { type: "end" };
      }
      function peg$otherExpectation(description) {
        return { type: "other", description };
      }
      function peg$computePosDetails(pos) {
        var details3 = peg$posDetailsCache[pos];
        var p5;
        if (details3) {
          return details3;
        } else {
          p5 = pos - 1;
          while (!peg$posDetailsCache[p5]) {
            p5--;
          }
          details3 = peg$posDetailsCache[p5];
          details3 = {
            line: details3.line,
            column: details3.column
          };
          while (p5 < pos) {
            if (input3.charCodeAt(p5) === 10) {
              details3.line++;
              details3.column = 1;
            } else {
              details3.column++;
            }
            p5++;
          }
          peg$posDetailsCache[pos] = details3;
          return details3;
        }
      }
      function peg$computeLocation(startPos, endPos) {
        var startPosDetails = peg$computePosDetails(startPos);
        var endPosDetails = peg$computePosDetails(endPos);
        return {
          source: peg$source,
          start: {
            offset: startPos,
            line: startPosDetails.line,
            column: startPosDetails.column
          },
          end: {
            offset: endPos,
            line: endPosDetails.line,
            column: endPosDetails.column
          }
        };
      }
      function peg$fail(expected2) {
        if (peg$currPos < peg$maxFailPos) {
          return;
        }
        if (peg$currPos > peg$maxFailPos) {
          peg$maxFailPos = peg$currPos;
          peg$maxFailExpected = [];
        }
        peg$maxFailExpected.push(expected2);
      }
      function peg$buildSimpleError(message, location22) {
        return new peg$SyntaxError(message, null, null, location22);
      }
      function peg$buildStructuredError(expected2, found2, location22) {
        return new peg$SyntaxError(
          peg$SyntaxError.buildMessage(expected2, found2),
          expected2,
          found2,
          location22
        );
      }
      function peg$parsedocument() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parsetoken();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parsetoken();
        }
        peg$savedPos = s0;
        s1 = peg$f0(s1);
        s0 = s1;
        peg$silentFails--;
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e0);
        }
        return s0;
      }
      function peg$parsemath() {
        var s0, s1;
        peg$silentFails++;
        s0 = [];
        s1 = peg$parsemath_token();
        while (s1 !== peg$FAILED) {
          s0.push(s1);
          s1 = peg$parsemath_token();
        }
        peg$silentFails--;
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e1);
        }
        return s0;
      }
      function peg$parsetoken() {
        var s0, s1, s22, s32, s42, s5;
        peg$silentFails++;
        s0 = peg$parsespecial_macro();
        if (s0 === peg$FAILED) {
          s0 = peg$parsemacro();
          if (s0 === peg$FAILED) {
            s0 = peg$parsefull_comment();
            if (s0 === peg$FAILED) {
              s0 = peg$parsegroup();
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parsemath_shift();
                if (s1 !== peg$FAILED) {
                  s22 = [];
                  s32 = peg$currPos;
                  s42 = peg$currPos;
                  peg$silentFails++;
                  s5 = peg$parsemath_shift();
                  peg$silentFails--;
                  if (s5 === peg$FAILED) {
                    s42 = void 0;
                  } else {
                    peg$currPos = s42;
                    s42 = peg$FAILED;
                  }
                  if (s42 !== peg$FAILED) {
                    s5 = peg$parsemath_token();
                    if (s5 !== peg$FAILED) {
                      peg$savedPos = s32;
                      s32 = peg$f1(s5);
                    } else {
                      peg$currPos = s32;
                      s32 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s32;
                    s32 = peg$FAILED;
                  }
                  if (s32 !== peg$FAILED) {
                    while (s32 !== peg$FAILED) {
                      s22.push(s32);
                      s32 = peg$currPos;
                      s42 = peg$currPos;
                      peg$silentFails++;
                      s5 = peg$parsemath_shift();
                      peg$silentFails--;
                      if (s5 === peg$FAILED) {
                        s42 = void 0;
                      } else {
                        peg$currPos = s42;
                        s42 = peg$FAILED;
                      }
                      if (s42 !== peg$FAILED) {
                        s5 = peg$parsemath_token();
                        if (s5 !== peg$FAILED) {
                          peg$savedPos = s32;
                          s32 = peg$f1(s5);
                        } else {
                          peg$currPos = s32;
                          s32 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s32;
                        s32 = peg$FAILED;
                      }
                    }
                  } else {
                    s22 = peg$FAILED;
                  }
                  if (s22 !== peg$FAILED) {
                    s32 = peg$parsemath_shift();
                    if (s32 !== peg$FAILED) {
                      peg$savedPos = s0;
                      s0 = peg$f2(s22);
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$parsealignment_tab();
                  if (s0 === peg$FAILED) {
                    s0 = peg$parseparbreak();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parsemacro_parameter();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseignore();
                        if (s0 === peg$FAILED) {
                          s0 = peg$parsenumber();
                          if (s0 === peg$FAILED) {
                            s0 = peg$parsewhitespace();
                            if (s0 === peg$FAILED) {
                              s0 = peg$parsepunctuation();
                              if (s0 === peg$FAILED) {
                                s0 = peg$currPos;
                                s1 = peg$currPos;
                                s22 = [];
                                s32 = peg$currPos;
                                s42 = peg$currPos;
                                peg$silentFails++;
                                s5 = peg$parsenonchar_token();
                                peg$silentFails--;
                                if (s5 === peg$FAILED) {
                                  s42 = void 0;
                                } else {
                                  peg$currPos = s42;
                                  s42 = peg$FAILED;
                                }
                                if (s42 !== peg$FAILED) {
                                  if (input3.length > peg$currPos) {
                                    s5 = input3.charAt(peg$currPos);
                                    peg$currPos++;
                                  } else {
                                    s5 = peg$FAILED;
                                    if (peg$silentFails === 0) {
                                      peg$fail(peg$e3);
                                    }
                                  }
                                  if (s5 !== peg$FAILED) {
                                    s42 = [s42, s5];
                                    s32 = s42;
                                  } else {
                                    peg$currPos = s32;
                                    s32 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s32;
                                  s32 = peg$FAILED;
                                }
                                if (s32 !== peg$FAILED) {
                                  while (s32 !== peg$FAILED) {
                                    s22.push(s32);
                                    s32 = peg$currPos;
                                    s42 = peg$currPos;
                                    peg$silentFails++;
                                    s5 = peg$parsenonchar_token();
                                    peg$silentFails--;
                                    if (s5 === peg$FAILED) {
                                      s42 = void 0;
                                    } else {
                                      peg$currPos = s42;
                                      s42 = peg$FAILED;
                                    }
                                    if (s42 !== peg$FAILED) {
                                      if (input3.length > peg$currPos) {
                                        s5 = input3.charAt(peg$currPos);
                                        peg$currPos++;
                                      } else {
                                        s5 = peg$FAILED;
                                        if (peg$silentFails === 0) {
                                          peg$fail(peg$e3);
                                        }
                                      }
                                      if (s5 !== peg$FAILED) {
                                        s42 = [s42, s5];
                                        s32 = s42;
                                      } else {
                                        peg$currPos = s32;
                                        s32 = peg$FAILED;
                                      }
                                    } else {
                                      peg$currPos = s32;
                                      s32 = peg$FAILED;
                                    }
                                  }
                                } else {
                                  s22 = peg$FAILED;
                                }
                                if (s22 !== peg$FAILED) {
                                  s1 = input3.substring(s1, peg$currPos);
                                } else {
                                  s1 = s22;
                                }
                                if (s1 !== peg$FAILED) {
                                  peg$savedPos = s0;
                                  s1 = peg$f3(s1);
                                }
                                s0 = s1;
                                if (s0 === peg$FAILED) {
                                  s0 = peg$parsebegin_group();
                                  if (s0 === peg$FAILED) {
                                    s0 = peg$parseend_group();
                                    if (s0 === peg$FAILED) {
                                      s0 = peg$parsemath_shift();
                                      if (s0 === peg$FAILED) {
                                        s0 = peg$currPos;
                                        if (input3.length > peg$currPos) {
                                          s1 = input3.charAt(peg$currPos);
                                          peg$currPos++;
                                        } else {
                                          s1 = peg$FAILED;
                                          if (peg$silentFails === 0) {
                                            peg$fail(peg$e3);
                                          }
                                        }
                                        if (s1 !== peg$FAILED) {
                                          peg$savedPos = s0;
                                          s1 = peg$f4(s1);
                                        }
                                        s0 = s1;
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e2);
          }
        }
        return s0;
      }
      function peg$parseparbreak() {
        var s0, s1, s22, s32, s42, s5, s6, s7;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$currPos;
        s22 = [];
        s32 = peg$parsesp();
        while (s32 !== peg$FAILED) {
          s22.push(s32);
          s32 = peg$parsesp();
        }
        s32 = peg$parsenl();
        if (s32 !== peg$FAILED) {
          s42 = [];
          s5 = peg$currPos;
          s6 = [];
          s7 = peg$parsesp();
          while (s7 !== peg$FAILED) {
            s6.push(s7);
            s7 = peg$parsesp();
          }
          s7 = peg$parsenl();
          if (s7 !== peg$FAILED) {
            s6 = [s6, s7];
            s5 = s6;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            while (s5 !== peg$FAILED) {
              s42.push(s5);
              s5 = peg$currPos;
              s6 = [];
              s7 = peg$parsesp();
              while (s7 !== peg$FAILED) {
                s6.push(s7);
                s7 = peg$parsesp();
              }
              s7 = peg$parsenl();
              if (s7 !== peg$FAILED) {
                s6 = [s6, s7];
                s5 = s6;
              } else {
                peg$currPos = s5;
                s5 = peg$FAILED;
              }
            }
          } else {
            s42 = peg$FAILED;
          }
          if (s42 !== peg$FAILED) {
            s5 = [];
            s6 = peg$parsesp();
            while (s6 !== peg$FAILED) {
              s5.push(s6);
              s6 = peg$parsesp();
            }
            s6 = peg$currPos;
            peg$silentFails++;
            s7 = peg$parsecomment_start();
            peg$silentFails--;
            if (s7 === peg$FAILED) {
              s6 = void 0;
            } else {
              peg$currPos = s6;
              s6 = peg$FAILED;
            }
            if (s6 !== peg$FAILED) {
              s22 = [s22, s32, s42, s5, s6];
              s1 = s22;
            } else {
              peg$currPos = s1;
              s1 = peg$FAILED;
            }
          } else {
            peg$currPos = s1;
            s1 = peg$FAILED;
          }
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 === peg$FAILED) {
          s1 = peg$currPos;
          s22 = [];
          s32 = peg$parsesp();
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$parsesp();
          }
          s32 = peg$parsenl();
          if (s32 !== peg$FAILED) {
            s42 = [];
            s5 = peg$currPos;
            s6 = [];
            s7 = peg$parsesp();
            while (s7 !== peg$FAILED) {
              s6.push(s7);
              s7 = peg$parsesp();
            }
            s7 = peg$parsenl();
            if (s7 !== peg$FAILED) {
              s6 = [s6, s7];
              s5 = s6;
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
            if (s5 !== peg$FAILED) {
              while (s5 !== peg$FAILED) {
                s42.push(s5);
                s5 = peg$currPos;
                s6 = [];
                s7 = peg$parsesp();
                while (s7 !== peg$FAILED) {
                  s6.push(s7);
                  s7 = peg$parsesp();
                }
                s7 = peg$parsenl();
                if (s7 !== peg$FAILED) {
                  s6 = [s6, s7];
                  s5 = s6;
                } else {
                  peg$currPos = s5;
                  s5 = peg$FAILED;
                }
              }
            } else {
              s42 = peg$FAILED;
            }
            if (s42 !== peg$FAILED) {
              s22 = [s22, s32, s42];
              s1 = s22;
            } else {
              peg$currPos = s1;
              s1 = peg$FAILED;
            }
          } else {
            peg$currPos = s1;
            s1 = peg$FAILED;
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f5();
        }
        s0 = s1;
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e4);
          }
        }
        return s0;
      }
      function peg$parsemath_token() {
        var s0, s1, s22, s32, s42;
        peg$silentFails++;
        s0 = peg$parsespecial_macro();
        if (s0 === peg$FAILED) {
          s0 = peg$parsemacro();
          if (s0 === peg$FAILED) {
            s0 = peg$parsefull_comment();
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = [];
              s22 = peg$parsewhitespace();
              while (s22 !== peg$FAILED) {
                s1.push(s22);
                s22 = peg$parsewhitespace();
              }
              s22 = peg$parsegroup();
              if (s22 !== peg$FAILED) {
                s32 = [];
                s42 = peg$parsewhitespace();
                while (s42 !== peg$FAILED) {
                  s32.push(s42);
                  s42 = peg$parsewhitespace();
                }
                peg$savedPos = s0;
                s0 = peg$f6(s22);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = [];
                s22 = peg$parsewhitespace();
                while (s22 !== peg$FAILED) {
                  s1.push(s22);
                  s22 = peg$parsewhitespace();
                }
                s22 = peg$parsealignment_tab();
                if (s22 !== peg$FAILED) {
                  s32 = [];
                  s42 = peg$parsewhitespace();
                  while (s42 !== peg$FAILED) {
                    s32.push(s42);
                    s42 = peg$parsewhitespace();
                  }
                  peg$savedPos = s0;
                  s0 = peg$f7(s22);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$parsemacro_parameter();
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    s1 = [];
                    s22 = peg$parsewhitespace();
                    while (s22 !== peg$FAILED) {
                      s1.push(s22);
                      s22 = peg$parsewhitespace();
                    }
                    s22 = peg$parsesuperscript();
                    if (s22 !== peg$FAILED) {
                      s32 = [];
                      s42 = peg$parsewhitespace();
                      while (s42 !== peg$FAILED) {
                        s32.push(s42);
                        s42 = peg$parsewhitespace();
                      }
                      peg$savedPos = s0;
                      s0 = peg$f8();
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                    if (s0 === peg$FAILED) {
                      s0 = peg$currPos;
                      s1 = [];
                      s22 = peg$parsewhitespace();
                      while (s22 !== peg$FAILED) {
                        s1.push(s22);
                        s22 = peg$parsewhitespace();
                      }
                      s22 = peg$parsesubscript();
                      if (s22 !== peg$FAILED) {
                        s32 = [];
                        s42 = peg$parsewhitespace();
                        while (s42 !== peg$FAILED) {
                          s32.push(s42);
                          s42 = peg$parsewhitespace();
                        }
                        peg$savedPos = s0;
                        s0 = peg$f9();
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseignore();
                        if (s0 === peg$FAILED) {
                          s0 = peg$parsewhitespace();
                          if (s0 === peg$FAILED) {
                            s0 = peg$currPos;
                            if (input3.length > peg$currPos) {
                              s1 = input3.charAt(peg$currPos);
                              peg$currPos++;
                            } else {
                              s1 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e3);
                              }
                            }
                            if (s1 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s1 = peg$f10(s1);
                            }
                            s0 = s1;
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e5);
          }
        }
        return s0;
      }
      function peg$parsenonchar_token() {
        var s0, s1;
        peg$silentFails++;
        s0 = peg$parseescape();
        if (s0 === peg$FAILED) {
          if (input3.charCodeAt(peg$currPos) === 37) {
            s0 = peg$c0;
            peg$currPos++;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e7);
            }
          }
          if (s0 === peg$FAILED) {
            s0 = peg$parsebegin_group();
            if (s0 === peg$FAILED) {
              s0 = peg$parseend_group();
              if (s0 === peg$FAILED) {
                s0 = peg$parsemath_shift();
                if (s0 === peg$FAILED) {
                  s0 = peg$parsealignment_tab();
                  if (s0 === peg$FAILED) {
                    s0 = peg$parsenl();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parsemacro_parameter();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseignore();
                        if (s0 === peg$FAILED) {
                          s0 = peg$parsesp();
                          if (s0 === peg$FAILED) {
                            s0 = peg$parsepunctuation();
                            if (s0 === peg$FAILED) {
                              s0 = peg$parseEOF();
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        return s0;
      }
      function peg$parsewhitespace() {
        var s0, s1, s22, s32, s42, s5, s6, s7;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$currPos;
        s22 = peg$parsenl();
        if (s22 !== peg$FAILED) {
          s32 = [];
          s42 = peg$parsesp();
          while (s42 !== peg$FAILED) {
            s32.push(s42);
            s42 = peg$parsesp();
          }
          s22 = [s22, s32];
          s1 = s22;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 === peg$FAILED) {
          s1 = peg$currPos;
          s22 = [];
          s32 = peg$parsesp();
          if (s32 !== peg$FAILED) {
            while (s32 !== peg$FAILED) {
              s22.push(s32);
              s32 = peg$parsesp();
            }
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s32 = peg$parsenl();
            if (s32 !== peg$FAILED) {
              s42 = peg$currPos;
              peg$silentFails++;
              s5 = peg$parsecomment_start();
              peg$silentFails--;
              if (s5 === peg$FAILED) {
                s42 = void 0;
              } else {
                peg$currPos = s42;
                s42 = peg$FAILED;
              }
              if (s42 !== peg$FAILED) {
                s5 = [];
                s6 = peg$parsesp();
                while (s6 !== peg$FAILED) {
                  s5.push(s6);
                  s6 = peg$parsesp();
                }
                s6 = peg$currPos;
                peg$silentFails++;
                s7 = peg$parsenl();
                peg$silentFails--;
                if (s7 === peg$FAILED) {
                  s6 = void 0;
                } else {
                  peg$currPos = s6;
                  s6 = peg$FAILED;
                }
                if (s6 !== peg$FAILED) {
                  s22 = [s22, s32, s42, s5, s6];
                  s1 = s22;
                } else {
                  peg$currPos = s1;
                  s1 = peg$FAILED;
                }
              } else {
                peg$currPos = s1;
                s1 = peg$FAILED;
              }
            } else {
              peg$currPos = s1;
              s1 = peg$FAILED;
            }
          } else {
            peg$currPos = s1;
            s1 = peg$FAILED;
          }
          if (s1 === peg$FAILED) {
            s1 = [];
            s22 = peg$parsesp();
            if (s22 !== peg$FAILED) {
              while (s22 !== peg$FAILED) {
                s1.push(s22);
                s22 = peg$parsesp();
              }
            } else {
              s1 = peg$FAILED;
            }
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f11();
        }
        s0 = s1;
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        return s0;
      }
      function peg$parsenumber() {
        var s0, s1, s22, s32, s42, s5;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$currPos;
        s22 = [];
        s32 = peg$parsenum();
        if (s32 !== peg$FAILED) {
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$parsenum();
          }
        } else {
          s22 = peg$FAILED;
        }
        if (s22 !== peg$FAILED) {
          if (input3.charCodeAt(peg$currPos) === 46) {
            s32 = peg$c1;
            peg$currPos++;
          } else {
            s32 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e10);
            }
          }
          if (s32 !== peg$FAILED) {
            s42 = [];
            s5 = peg$parsenum();
            if (s5 !== peg$FAILED) {
              while (s5 !== peg$FAILED) {
                s42.push(s5);
                s5 = peg$parsenum();
              }
            } else {
              s42 = peg$FAILED;
            }
            if (s42 !== peg$FAILED) {
              peg$savedPos = s1;
              s1 = peg$f12(s22, s42);
            } else {
              peg$currPos = s1;
              s1 = peg$FAILED;
            }
          } else {
            peg$currPos = s1;
            s1 = peg$FAILED;
          }
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 === peg$FAILED) {
          s1 = peg$currPos;
          if (input3.charCodeAt(peg$currPos) === 46) {
            s22 = peg$c1;
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e10);
            }
          }
          if (s22 !== peg$FAILED) {
            s32 = [];
            s42 = peg$parsenum();
            if (s42 !== peg$FAILED) {
              while (s42 !== peg$FAILED) {
                s32.push(s42);
                s42 = peg$parsenum();
              }
            } else {
              s32 = peg$FAILED;
            }
            if (s32 !== peg$FAILED) {
              peg$savedPos = s1;
              s1 = peg$f13(s32);
            } else {
              peg$currPos = s1;
              s1 = peg$FAILED;
            }
          } else {
            peg$currPos = s1;
            s1 = peg$FAILED;
          }
          if (s1 === peg$FAILED) {
            s1 = peg$currPos;
            s22 = [];
            s32 = peg$parsenum();
            if (s32 !== peg$FAILED) {
              while (s32 !== peg$FAILED) {
                s22.push(s32);
                s32 = peg$parsenum();
              }
            } else {
              s22 = peg$FAILED;
            }
            if (s22 !== peg$FAILED) {
              if (input3.charCodeAt(peg$currPos) === 46) {
                s32 = peg$c1;
                peg$currPos++;
              } else {
                s32 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e10);
                }
              }
              if (s32 !== peg$FAILED) {
                peg$savedPos = s1;
                s1 = peg$f14(s22);
              } else {
                peg$currPos = s1;
                s1 = peg$FAILED;
              }
            } else {
              peg$currPos = s1;
              s1 = peg$FAILED;
            }
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f15(s1);
        }
        s0 = s1;
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e9);
          }
        }
        return s0;
      }
      function peg$parsespecial_macro() {
        var s0, s1, s22, s32, s42, s5, s6, s7, s8, s9;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parseescape();
        if (s1 !== peg$FAILED) {
          if (input3.substr(peg$currPos, 5) === peg$c2) {
            s22 = peg$c2;
            peg$currPos += 5;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e12);
            }
          }
          if (s22 === peg$FAILED) {
            if (input3.substr(peg$currPos, 4) === peg$c3) {
              s22 = peg$c3;
              peg$currPos += 4;
            } else {
              s22 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e13);
              }
            }
          }
          if (s22 !== peg$FAILED) {
            if (input3.length > peg$currPos) {
              s32 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s32 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e3);
              }
            }
            if (s32 !== peg$FAILED) {
              s42 = [];
              s5 = peg$currPos;
              s6 = peg$currPos;
              peg$silentFails++;
              s7 = peg$currPos;
              if (input3.length > peg$currPos) {
                s8 = input3.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s8 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e3);
                }
              }
              if (s8 !== peg$FAILED) {
                peg$savedPos = peg$currPos;
                s9 = peg$f16(s22, s32, s8);
                if (s9) {
                  s9 = void 0;
                } else {
                  s9 = peg$FAILED;
                }
                if (s9 !== peg$FAILED) {
                  s8 = [s8, s9];
                  s7 = s8;
                } else {
                  peg$currPos = s7;
                  s7 = peg$FAILED;
                }
              } else {
                peg$currPos = s7;
                s7 = peg$FAILED;
              }
              peg$silentFails--;
              if (s7 === peg$FAILED) {
                s6 = void 0;
              } else {
                peg$currPos = s6;
                s6 = peg$FAILED;
              }
              if (s6 !== peg$FAILED) {
                if (input3.length > peg$currPos) {
                  s7 = input3.charAt(peg$currPos);
                  peg$currPos++;
                } else {
                  s7 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e3);
                  }
                }
                if (s7 !== peg$FAILED) {
                  peg$savedPos = s5;
                  s5 = peg$f17(s22, s32, s7);
                } else {
                  peg$currPos = s5;
                  s5 = peg$FAILED;
                }
              } else {
                peg$currPos = s5;
                s5 = peg$FAILED;
              }
              while (s5 !== peg$FAILED) {
                s42.push(s5);
                s5 = peg$currPos;
                s6 = peg$currPos;
                peg$silentFails++;
                s7 = peg$currPos;
                if (input3.length > peg$currPos) {
                  s8 = input3.charAt(peg$currPos);
                  peg$currPos++;
                } else {
                  s8 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e3);
                  }
                }
                if (s8 !== peg$FAILED) {
                  peg$savedPos = peg$currPos;
                  s9 = peg$f16(s22, s32, s8);
                  if (s9) {
                    s9 = void 0;
                  } else {
                    s9 = peg$FAILED;
                  }
                  if (s9 !== peg$FAILED) {
                    s8 = [s8, s9];
                    s7 = s8;
                  } else {
                    peg$currPos = s7;
                    s7 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s7;
                  s7 = peg$FAILED;
                }
                peg$silentFails--;
                if (s7 === peg$FAILED) {
                  s6 = void 0;
                } else {
                  peg$currPos = s6;
                  s6 = peg$FAILED;
                }
                if (s6 !== peg$FAILED) {
                  if (input3.length > peg$currPos) {
                    s7 = input3.charAt(peg$currPos);
                    peg$currPos++;
                  } else {
                    s7 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e3);
                    }
                  }
                  if (s7 !== peg$FAILED) {
                    peg$savedPos = s5;
                    s5 = peg$f17(s22, s32, s7);
                  } else {
                    peg$currPos = s5;
                    s5 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s5;
                  s5 = peg$FAILED;
                }
              }
              s5 = peg$currPos;
              if (input3.length > peg$currPos) {
                s6 = input3.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e3);
                }
              }
              if (s6 !== peg$FAILED) {
                peg$savedPos = peg$currPos;
                s7 = peg$f18(s22, s32, s42, s6);
                if (s7) {
                  s7 = void 0;
                } else {
                  s7 = peg$FAILED;
                }
                if (s7 !== peg$FAILED) {
                  s6 = [s6, s7];
                  s5 = s6;
                } else {
                  peg$currPos = s5;
                  s5 = peg$FAILED;
                }
              } else {
                peg$currPos = s5;
                s5 = peg$FAILED;
              }
              if (s5 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f19(s22, s32, s42);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$parseverbatim_listings();
          if (s0 === peg$FAILED) {
            s0 = peg$parseverbatim_minted();
            if (s0 === peg$FAILED) {
              s0 = peg$parseverbatim_environment();
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parsebegin_display_math();
                if (s1 !== peg$FAILED) {
                  s22 = [];
                  s32 = peg$currPos;
                  s42 = peg$currPos;
                  peg$silentFails++;
                  s5 = peg$parseend_display_math();
                  peg$silentFails--;
                  if (s5 === peg$FAILED) {
                    s42 = void 0;
                  } else {
                    peg$currPos = s42;
                    s42 = peg$FAILED;
                  }
                  if (s42 !== peg$FAILED) {
                    s5 = peg$parsemath_token();
                    if (s5 !== peg$FAILED) {
                      peg$savedPos = s32;
                      s32 = peg$f20(s5);
                    } else {
                      peg$currPos = s32;
                      s32 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s32;
                    s32 = peg$FAILED;
                  }
                  while (s32 !== peg$FAILED) {
                    s22.push(s32);
                    s32 = peg$currPos;
                    s42 = peg$currPos;
                    peg$silentFails++;
                    s5 = peg$parseend_display_math();
                    peg$silentFails--;
                    if (s5 === peg$FAILED) {
                      s42 = void 0;
                    } else {
                      peg$currPos = s42;
                      s42 = peg$FAILED;
                    }
                    if (s42 !== peg$FAILED) {
                      s5 = peg$parsemath_token();
                      if (s5 !== peg$FAILED) {
                        peg$savedPos = s32;
                        s32 = peg$f20(s5);
                      } else {
                        peg$currPos = s32;
                        s32 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s32;
                      s32 = peg$FAILED;
                    }
                  }
                  s32 = peg$parseend_display_math();
                  if (s32 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f21(s22);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$parsebegin_inline_math();
                  if (s1 !== peg$FAILED) {
                    s22 = [];
                    s32 = peg$currPos;
                    s42 = peg$currPos;
                    peg$silentFails++;
                    s5 = peg$parseend_inline_math();
                    peg$silentFails--;
                    if (s5 === peg$FAILED) {
                      s42 = void 0;
                    } else {
                      peg$currPos = s42;
                      s42 = peg$FAILED;
                    }
                    if (s42 !== peg$FAILED) {
                      s5 = peg$parsemath_token();
                      if (s5 !== peg$FAILED) {
                        peg$savedPos = s32;
                        s32 = peg$f22(s5);
                      } else {
                        peg$currPos = s32;
                        s32 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s32;
                      s32 = peg$FAILED;
                    }
                    while (s32 !== peg$FAILED) {
                      s22.push(s32);
                      s32 = peg$currPos;
                      s42 = peg$currPos;
                      peg$silentFails++;
                      s5 = peg$parseend_inline_math();
                      peg$silentFails--;
                      if (s5 === peg$FAILED) {
                        s42 = void 0;
                      } else {
                        peg$currPos = s42;
                        s42 = peg$FAILED;
                      }
                      if (s42 !== peg$FAILED) {
                        s5 = peg$parsemath_token();
                        if (s5 !== peg$FAILED) {
                          peg$savedPos = s32;
                          s32 = peg$f22(s5);
                        } else {
                          peg$currPos = s32;
                          s32 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s32;
                        s32 = peg$FAILED;
                      }
                    }
                    s32 = peg$parseend_inline_math();
                    if (s32 !== peg$FAILED) {
                      peg$savedPos = s0;
                      s0 = peg$f23(s22);
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    s1 = peg$parsemath_shift();
                    if (s1 !== peg$FAILED) {
                      s22 = peg$parsemath_shift();
                      if (s22 !== peg$FAILED) {
                        s32 = [];
                        s42 = peg$currPos;
                        s5 = peg$currPos;
                        peg$silentFails++;
                        s6 = peg$currPos;
                        s7 = peg$parsemath_shift();
                        if (s7 !== peg$FAILED) {
                          s8 = peg$parsemath_shift();
                          if (s8 !== peg$FAILED) {
                            s7 = [s7, s8];
                            s6 = s7;
                          } else {
                            peg$currPos = s6;
                            s6 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s6;
                          s6 = peg$FAILED;
                        }
                        peg$silentFails--;
                        if (s6 === peg$FAILED) {
                          s5 = void 0;
                        } else {
                          peg$currPos = s5;
                          s5 = peg$FAILED;
                        }
                        if (s5 !== peg$FAILED) {
                          s6 = peg$parsemath_token();
                          if (s6 !== peg$FAILED) {
                            peg$savedPos = s42;
                            s42 = peg$f24(s6);
                          } else {
                            peg$currPos = s42;
                            s42 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s42;
                          s42 = peg$FAILED;
                        }
                        while (s42 !== peg$FAILED) {
                          s32.push(s42);
                          s42 = peg$currPos;
                          s5 = peg$currPos;
                          peg$silentFails++;
                          s6 = peg$currPos;
                          s7 = peg$parsemath_shift();
                          if (s7 !== peg$FAILED) {
                            s8 = peg$parsemath_shift();
                            if (s8 !== peg$FAILED) {
                              s7 = [s7, s8];
                              s6 = s7;
                            } else {
                              peg$currPos = s6;
                              s6 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s6;
                            s6 = peg$FAILED;
                          }
                          peg$silentFails--;
                          if (s6 === peg$FAILED) {
                            s5 = void 0;
                          } else {
                            peg$currPos = s5;
                            s5 = peg$FAILED;
                          }
                          if (s5 !== peg$FAILED) {
                            s6 = peg$parsemath_token();
                            if (s6 !== peg$FAILED) {
                              peg$savedPos = s42;
                              s42 = peg$f24(s6);
                            } else {
                              peg$currPos = s42;
                              s42 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s42;
                            s42 = peg$FAILED;
                          }
                        }
                        s42 = peg$parsemath_shift();
                        if (s42 !== peg$FAILED) {
                          s5 = peg$parsemath_shift();
                          if (s5 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f25(s32);
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                    if (s0 === peg$FAILED) {
                      s0 = peg$parsemath_environment();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseenvironment();
                      }
                    }
                  }
                }
              }
            }
          }
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e11);
          }
        }
        return s0;
      }
      function peg$parsesquare_bracket_argument() {
        var s0, s1, s22, s32, s42, s5, s6, s7;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 91) {
          s1 = peg$c4;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e14);
          }
        }
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$currPos;
          s42 = peg$currPos;
          peg$silentFails++;
          s5 = peg$currPos;
          s6 = peg$parsetoken();
          if (s6 !== peg$FAILED) {
            peg$savedPos = peg$currPos;
            s7 = peg$f26(s6);
            if (s7) {
              s7 = void 0;
            } else {
              s7 = peg$FAILED;
            }
            if (s7 !== peg$FAILED) {
              s6 = [s6, s7];
              s5 = s6;
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          peg$silentFails--;
          if (s5 === peg$FAILED) {
            s42 = void 0;
          } else {
            peg$currPos = s42;
            s42 = peg$FAILED;
          }
          if (s42 !== peg$FAILED) {
            s5 = peg$parsetoken();
            if (s5 !== peg$FAILED) {
              peg$savedPos = s32;
              s32 = peg$f27(s5);
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          } else {
            peg$currPos = s32;
            s32 = peg$FAILED;
          }
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$currPos;
            s42 = peg$currPos;
            peg$silentFails++;
            s5 = peg$currPos;
            s6 = peg$parsetoken();
            if (s6 !== peg$FAILED) {
              peg$savedPos = peg$currPos;
              s7 = peg$f26(s6);
              if (s7) {
                s7 = void 0;
              } else {
                s7 = peg$FAILED;
              }
              if (s7 !== peg$FAILED) {
                s6 = [s6, s7];
                s5 = s6;
              } else {
                peg$currPos = s5;
                s5 = peg$FAILED;
              }
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
            peg$silentFails--;
            if (s5 === peg$FAILED) {
              s42 = void 0;
            } else {
              peg$currPos = s42;
              s42 = peg$FAILED;
            }
            if (s42 !== peg$FAILED) {
              s5 = peg$parsetoken();
              if (s5 !== peg$FAILED) {
                peg$savedPos = s32;
                s32 = peg$f27(s5);
              } else {
                peg$currPos = s32;
                s32 = peg$FAILED;
              }
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          }
          if (input3.charCodeAt(peg$currPos) === 93) {
            s32 = peg$c5;
            peg$currPos++;
          } else {
            s32 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e15);
            }
          }
          if (s32 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f28(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseverbatim_group() {
        var s0, s1, s22, s32, s42, s5;
        s0 = peg$currPos;
        s1 = peg$parsebegin_group();
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$currPos;
          s42 = peg$currPos;
          peg$silentFails++;
          s5 = peg$parseend_group();
          peg$silentFails--;
          if (s5 === peg$FAILED) {
            s42 = void 0;
          } else {
            peg$currPos = s42;
            s42 = peg$FAILED;
          }
          if (s42 !== peg$FAILED) {
            if (input3.length > peg$currPos) {
              s5 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s5 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e3);
              }
            }
            if (s5 !== peg$FAILED) {
              peg$savedPos = s32;
              s32 = peg$f29(s5);
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          } else {
            peg$currPos = s32;
            s32 = peg$FAILED;
          }
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$currPos;
            s42 = peg$currPos;
            peg$silentFails++;
            s5 = peg$parseend_group();
            peg$silentFails--;
            if (s5 === peg$FAILED) {
              s42 = void 0;
            } else {
              peg$currPos = s42;
              s42 = peg$FAILED;
            }
            if (s42 !== peg$FAILED) {
              if (input3.length > peg$currPos) {
                s5 = input3.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e3);
                }
              }
              if (s5 !== peg$FAILED) {
                peg$savedPos = s32;
                s32 = peg$f29(s5);
              } else {
                peg$currPos = s32;
                s32 = peg$FAILED;
              }
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          }
          s32 = peg$parseend_group();
          if (s32 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f30(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseverbatim_delimited_by_char() {
        var s0, s1, s22, s32, s42, s5, s6, s7;
        s0 = peg$currPos;
        if (peg$r0.test(input3.charAt(peg$currPos))) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e16);
          }
        }
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$currPos;
          s42 = peg$currPos;
          peg$silentFails++;
          s5 = peg$currPos;
          if (input3.length > peg$currPos) {
            s6 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e3);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$savedPos = peg$currPos;
            s7 = peg$f31(s1, s6);
            if (s7) {
              s7 = void 0;
            } else {
              s7 = peg$FAILED;
            }
            if (s7 !== peg$FAILED) {
              s6 = [s6, s7];
              s5 = s6;
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          peg$silentFails--;
          if (s5 === peg$FAILED) {
            s42 = void 0;
          } else {
            peg$currPos = s42;
            s42 = peg$FAILED;
          }
          if (s42 !== peg$FAILED) {
            if (input3.length > peg$currPos) {
              s5 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s5 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e3);
              }
            }
            if (s5 !== peg$FAILED) {
              peg$savedPos = s32;
              s32 = peg$f32(s1, s5);
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          } else {
            peg$currPos = s32;
            s32 = peg$FAILED;
          }
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$currPos;
            s42 = peg$currPos;
            peg$silentFails++;
            s5 = peg$currPos;
            if (input3.length > peg$currPos) {
              s6 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e3);
              }
            }
            if (s6 !== peg$FAILED) {
              peg$savedPos = peg$currPos;
              s7 = peg$f31(s1, s6);
              if (s7) {
                s7 = void 0;
              } else {
                s7 = peg$FAILED;
              }
              if (s7 !== peg$FAILED) {
                s6 = [s6, s7];
                s5 = s6;
              } else {
                peg$currPos = s5;
                s5 = peg$FAILED;
              }
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
            peg$silentFails--;
            if (s5 === peg$FAILED) {
              s42 = void 0;
            } else {
              peg$currPos = s42;
              s42 = peg$FAILED;
            }
            if (s42 !== peg$FAILED) {
              if (input3.length > peg$currPos) {
                s5 = input3.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e3);
                }
              }
              if (s5 !== peg$FAILED) {
                peg$savedPos = s32;
                s32 = peg$f32(s1, s5);
              } else {
                peg$currPos = s32;
                s32 = peg$FAILED;
              }
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          }
          s32 = peg$currPos;
          if (input3.length > peg$currPos) {
            s42 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s42 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e3);
            }
          }
          if (s42 !== peg$FAILED) {
            peg$savedPos = peg$currPos;
            s5 = peg$f33(s1, s22, s42);
            if (s5) {
              s5 = void 0;
            } else {
              s5 = peg$FAILED;
            }
            if (s5 !== peg$FAILED) {
              s42 = [s42, s5];
              s32 = s42;
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          } else {
            peg$currPos = s32;
            s32 = peg$FAILED;
          }
          if (s32 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f34(s1, s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseverbatim_listings() {
        var s0, s1, s22, s32, s42;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parseescape();
        if (s1 !== peg$FAILED) {
          if (input3.substr(peg$currPos, 9) === peg$c6) {
            s22 = peg$c6;
            peg$currPos += 9;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e18);
            }
          }
          if (s22 !== peg$FAILED) {
            s32 = peg$parsesquare_bracket_argument();
            if (s32 === peg$FAILED) {
              s32 = null;
            }
            s42 = peg$parseverbatim_group();
            if (s42 === peg$FAILED) {
              s42 = peg$parseverbatim_delimited_by_char();
            }
            if (s42 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f35(s22, s32, s42);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e17);
          }
        }
        return s0;
      }
      function peg$parseverbatim_minted() {
        var s0, s1, s22, s32, s42, s5;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parseescape();
        if (s1 !== peg$FAILED) {
          if (input3.substr(peg$currPos, 10) === peg$c7) {
            s22 = peg$c7;
            peg$currPos += 10;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e20);
            }
          }
          if (s22 === peg$FAILED) {
            if (input3.substr(peg$currPos, 4) === peg$c8) {
              s22 = peg$c8;
              peg$currPos += 4;
            } else {
              s22 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e21);
              }
            }
          }
          if (s22 !== peg$FAILED) {
            s32 = peg$parsesquare_bracket_argument();
            if (s32 === peg$FAILED) {
              s32 = null;
            }
            s42 = peg$parsegroup();
            if (s42 !== peg$FAILED) {
              s5 = peg$parseverbatim_group();
              if (s5 === peg$FAILED) {
                s5 = peg$parseverbatim_delimited_by_char();
              }
              if (s5 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f36(s22, s32, s42, s5);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e19);
          }
        }
        return s0;
      }
      function peg$parseverbatim_minted_environment() {
        var s0, s1, s22, s32, s42, s5, s6, s7, s8, s9, s10, s11, s12;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parsebegin_env();
        if (s1 !== peg$FAILED) {
          s22 = peg$parsebegin_group();
          if (s22 !== peg$FAILED) {
            if (input3.substr(peg$currPos, 6) === peg$c9) {
              s32 = peg$c9;
              peg$currPos += 6;
            } else {
              s32 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e23);
              }
            }
            if (s32 !== peg$FAILED) {
              s42 = peg$parseend_group();
              if (s42 !== peg$FAILED) {
                s5 = peg$parsegroup();
                if (s5 !== peg$FAILED) {
                  s6 = [];
                  s7 = peg$currPos;
                  s8 = peg$currPos;
                  peg$silentFails++;
                  s9 = peg$currPos;
                  s10 = peg$parseend_env();
                  if (s10 !== peg$FAILED) {
                    s11 = peg$parsegroup();
                    if (s11 !== peg$FAILED) {
                      peg$savedPos = peg$currPos;
                      s12 = peg$f37(s32, s5, s11);
                      if (s12) {
                        s12 = void 0;
                      } else {
                        s12 = peg$FAILED;
                      }
                      if (s12 !== peg$FAILED) {
                        s10 = [s10, s11, s12];
                        s9 = s10;
                      } else {
                        peg$currPos = s9;
                        s9 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s9;
                      s9 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s9;
                    s9 = peg$FAILED;
                  }
                  peg$silentFails--;
                  if (s9 === peg$FAILED) {
                    s8 = void 0;
                  } else {
                    peg$currPos = s8;
                    s8 = peg$FAILED;
                  }
                  if (s8 !== peg$FAILED) {
                    if (input3.length > peg$currPos) {
                      s9 = input3.charAt(peg$currPos);
                      peg$currPos++;
                    } else {
                      s9 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e3);
                      }
                    }
                    if (s9 !== peg$FAILED) {
                      peg$savedPos = s7;
                      s7 = peg$f38(s32, s5, s9);
                    } else {
                      peg$currPos = s7;
                      s7 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s7;
                    s7 = peg$FAILED;
                  }
                  while (s7 !== peg$FAILED) {
                    s6.push(s7);
                    s7 = peg$currPos;
                    s8 = peg$currPos;
                    peg$silentFails++;
                    s9 = peg$currPos;
                    s10 = peg$parseend_env();
                    if (s10 !== peg$FAILED) {
                      s11 = peg$parsegroup();
                      if (s11 !== peg$FAILED) {
                        peg$savedPos = peg$currPos;
                        s12 = peg$f37(s32, s5, s11);
                        if (s12) {
                          s12 = void 0;
                        } else {
                          s12 = peg$FAILED;
                        }
                        if (s12 !== peg$FAILED) {
                          s10 = [s10, s11, s12];
                          s9 = s10;
                        } else {
                          peg$currPos = s9;
                          s9 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s9;
                        s9 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s9;
                      s9 = peg$FAILED;
                    }
                    peg$silentFails--;
                    if (s9 === peg$FAILED) {
                      s8 = void 0;
                    } else {
                      peg$currPos = s8;
                      s8 = peg$FAILED;
                    }
                    if (s8 !== peg$FAILED) {
                      if (input3.length > peg$currPos) {
                        s9 = input3.charAt(peg$currPos);
                        peg$currPos++;
                      } else {
                        s9 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e3);
                        }
                      }
                      if (s9 !== peg$FAILED) {
                        peg$savedPos = s7;
                        s7 = peg$f38(s32, s5, s9);
                      } else {
                        peg$currPos = s7;
                        s7 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s7;
                      s7 = peg$FAILED;
                    }
                  }
                  s7 = peg$parseend_env();
                  if (s7 !== peg$FAILED) {
                    s8 = peg$parsebegin_group();
                    if (s8 !== peg$FAILED) {
                      s9 = peg$parseverbatim_env_name();
                      if (s9 !== peg$FAILED) {
                        s10 = peg$parseend_group();
                        if (s10 !== peg$FAILED) {
                          peg$savedPos = s0;
                          s0 = peg$f39(s32, s5, s6);
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e22);
          }
        }
        return s0;
      }
      function peg$parseverbatim_environment() {
        var s0, s1, s22, s32, s42, s5, s6, s7, s8, s9, s10, s11;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parsebegin_env();
        if (s1 !== peg$FAILED) {
          s22 = peg$parsebegin_group();
          if (s22 !== peg$FAILED) {
            s32 = peg$parseverbatim_env_name();
            if (s32 !== peg$FAILED) {
              s42 = peg$parseend_group();
              if (s42 !== peg$FAILED) {
                s5 = [];
                s6 = peg$currPos;
                s7 = peg$currPos;
                peg$silentFails++;
                s8 = peg$currPos;
                s9 = peg$parseend_env();
                if (s9 !== peg$FAILED) {
                  s10 = peg$parsegroup();
                  if (s10 !== peg$FAILED) {
                    peg$savedPos = peg$currPos;
                    s11 = peg$f40(s32, s10);
                    if (s11) {
                      s11 = void 0;
                    } else {
                      s11 = peg$FAILED;
                    }
                    if (s11 !== peg$FAILED) {
                      s9 = [s9, s10, s11];
                      s8 = s9;
                    } else {
                      peg$currPos = s8;
                      s8 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s8;
                    s8 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s8;
                  s8 = peg$FAILED;
                }
                peg$silentFails--;
                if (s8 === peg$FAILED) {
                  s7 = void 0;
                } else {
                  peg$currPos = s7;
                  s7 = peg$FAILED;
                }
                if (s7 !== peg$FAILED) {
                  if (input3.length > peg$currPos) {
                    s8 = input3.charAt(peg$currPos);
                    peg$currPos++;
                  } else {
                    s8 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e3);
                    }
                  }
                  if (s8 !== peg$FAILED) {
                    peg$savedPos = s6;
                    s6 = peg$f41(s32, s8);
                  } else {
                    peg$currPos = s6;
                    s6 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s6;
                  s6 = peg$FAILED;
                }
                while (s6 !== peg$FAILED) {
                  s5.push(s6);
                  s6 = peg$currPos;
                  s7 = peg$currPos;
                  peg$silentFails++;
                  s8 = peg$currPos;
                  s9 = peg$parseend_env();
                  if (s9 !== peg$FAILED) {
                    s10 = peg$parsegroup();
                    if (s10 !== peg$FAILED) {
                      peg$savedPos = peg$currPos;
                      s11 = peg$f40(s32, s10);
                      if (s11) {
                        s11 = void 0;
                      } else {
                        s11 = peg$FAILED;
                      }
                      if (s11 !== peg$FAILED) {
                        s9 = [s9, s10, s11];
                        s8 = s9;
                      } else {
                        peg$currPos = s8;
                        s8 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s8;
                      s8 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s8;
                    s8 = peg$FAILED;
                  }
                  peg$silentFails--;
                  if (s8 === peg$FAILED) {
                    s7 = void 0;
                  } else {
                    peg$currPos = s7;
                    s7 = peg$FAILED;
                  }
                  if (s7 !== peg$FAILED) {
                    if (input3.length > peg$currPos) {
                      s8 = input3.charAt(peg$currPos);
                      peg$currPos++;
                    } else {
                      s8 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e3);
                      }
                    }
                    if (s8 !== peg$FAILED) {
                      peg$savedPos = s6;
                      s6 = peg$f41(s32, s8);
                    } else {
                      peg$currPos = s6;
                      s6 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s6;
                    s6 = peg$FAILED;
                  }
                }
                s6 = peg$parseend_env();
                if (s6 !== peg$FAILED) {
                  s7 = peg$parsebegin_group();
                  if (s7 !== peg$FAILED) {
                    s8 = peg$parseverbatim_env_name();
                    if (s8 !== peg$FAILED) {
                      s9 = peg$parseend_group();
                      if (s9 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f42(s32, s5);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e24);
          }
        }
        return s0;
      }
      function peg$parseverbatim_env_name() {
        var s0;
        if (input3.substr(peg$currPos, 9) === peg$c10) {
          s0 = peg$c10;
          peg$currPos += 9;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e25);
          }
        }
        if (s0 === peg$FAILED) {
          if (input3.substr(peg$currPos, 8) === peg$c11) {
            s0 = peg$c11;
            peg$currPos += 8;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e26);
            }
          }
          if (s0 === peg$FAILED) {
            if (input3.substr(peg$currPos, 13) === peg$c12) {
              s0 = peg$c12;
              peg$currPos += 13;
            } else {
              s0 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e27);
              }
            }
            if (s0 === peg$FAILED) {
              if (input3.substr(peg$currPos, 12) === peg$c13) {
                s0 = peg$c13;
                peg$currPos += 12;
              } else {
                s0 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e28);
                }
              }
              if (s0 === peg$FAILED) {
                if (input3.substr(peg$currPos, 7) === peg$c14) {
                  s0 = peg$c14;
                  peg$currPos += 7;
                } else {
                  s0 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e29);
                  }
                }
                if (s0 === peg$FAILED) {
                  if (input3.substr(peg$currPos, 10) === peg$c15) {
                    s0 = peg$c15;
                    peg$currPos += 10;
                  } else {
                    s0 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e30);
                    }
                  }
                }
              }
            }
          }
        }
        return s0;
      }
      function peg$parsemacro() {
        var s0, s1, s22, s32, s42;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$currPos;
        s22 = peg$parseescape();
        if (s22 !== peg$FAILED) {
          s32 = [];
          s42 = peg$parsechar();
          if (s42 !== peg$FAILED) {
            while (s42 !== peg$FAILED) {
              s32.push(s42);
              s42 = peg$parsechar();
            }
          } else {
            s32 = peg$FAILED;
          }
          if (s32 !== peg$FAILED) {
            peg$savedPos = s1;
            s1 = peg$f43(s32);
          } else {
            peg$currPos = s1;
            s1 = peg$FAILED;
          }
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 === peg$FAILED) {
          s1 = peg$currPos;
          s22 = peg$parseescape();
          if (s22 !== peg$FAILED) {
            if (input3.length > peg$currPos) {
              s32 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s32 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e3);
              }
            }
            if (s32 !== peg$FAILED) {
              peg$savedPos = s1;
              s1 = peg$f44(s32);
            } else {
              peg$currPos = s1;
              s1 = peg$FAILED;
            }
          } else {
            peg$currPos = s1;
            s1 = peg$FAILED;
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f45(s1);
        }
        s0 = s1;
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e31);
          }
        }
        return s0;
      }
      function peg$parsegroup() {
        var s0, s1, s22, s32, s42, s5;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parsebegin_group();
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$currPos;
          s42 = peg$currPos;
          peg$silentFails++;
          s5 = peg$parseend_group();
          peg$silentFails--;
          if (s5 === peg$FAILED) {
            s42 = void 0;
          } else {
            peg$currPos = s42;
            s42 = peg$FAILED;
          }
          if (s42 !== peg$FAILED) {
            s5 = peg$parsetoken();
            if (s5 !== peg$FAILED) {
              peg$savedPos = s32;
              s32 = peg$f46(s5);
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          } else {
            peg$currPos = s32;
            s32 = peg$FAILED;
          }
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$currPos;
            s42 = peg$currPos;
            peg$silentFails++;
            s5 = peg$parseend_group();
            peg$silentFails--;
            if (s5 === peg$FAILED) {
              s42 = void 0;
            } else {
              peg$currPos = s42;
              s42 = peg$FAILED;
            }
            if (s42 !== peg$FAILED) {
              s5 = peg$parsetoken();
              if (s5 !== peg$FAILED) {
                peg$savedPos = s32;
                s32 = peg$f46(s5);
              } else {
                peg$currPos = s32;
                s32 = peg$FAILED;
              }
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          }
          s32 = peg$parseend_group();
          if (s32 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f47(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e32);
          }
        }
        return s0;
      }
      function peg$parsegroup_contents_as_string() {
        var s0, s1;
        s0 = peg$currPos;
        s1 = peg$parsegroup();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f48(s1);
        }
        s0 = s1;
        return s0;
      }
      function peg$parseenvironment() {
        var s0, s1, s22, s32, s42, s5, s6, s7, s8, s9, s10;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parsebegin_env();
        if (s1 !== peg$FAILED) {
          s22 = peg$parsegroup_contents_as_string();
          if (s22 !== peg$FAILED) {
            s32 = peg$parsesameline_comment();
            if (s32 === peg$FAILED) {
              s32 = null;
            }
            s42 = [];
            s5 = peg$currPos;
            s6 = peg$currPos;
            peg$silentFails++;
            s7 = peg$currPos;
            s8 = peg$parseend_env();
            if (s8 !== peg$FAILED) {
              s9 = peg$parsegroup_contents_as_string();
              if (s9 !== peg$FAILED) {
                peg$savedPos = peg$currPos;
                s10 = peg$f49(s22, s32, s9);
                if (s10) {
                  s10 = void 0;
                } else {
                  s10 = peg$FAILED;
                }
                if (s10 !== peg$FAILED) {
                  s8 = [s8, s9, s10];
                  s7 = s8;
                } else {
                  peg$currPos = s7;
                  s7 = peg$FAILED;
                }
              } else {
                peg$currPos = s7;
                s7 = peg$FAILED;
              }
            } else {
              peg$currPos = s7;
              s7 = peg$FAILED;
            }
            peg$silentFails--;
            if (s7 === peg$FAILED) {
              s6 = void 0;
            } else {
              peg$currPos = s6;
              s6 = peg$FAILED;
            }
            if (s6 !== peg$FAILED) {
              s7 = peg$parsetoken();
              if (s7 !== peg$FAILED) {
                peg$savedPos = s5;
                s5 = peg$f50(s22, s32, s7);
              } else {
                peg$currPos = s5;
                s5 = peg$FAILED;
              }
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
            while (s5 !== peg$FAILED) {
              s42.push(s5);
              s5 = peg$currPos;
              s6 = peg$currPos;
              peg$silentFails++;
              s7 = peg$currPos;
              s8 = peg$parseend_env();
              if (s8 !== peg$FAILED) {
                s9 = peg$parsegroup_contents_as_string();
                if (s9 !== peg$FAILED) {
                  peg$savedPos = peg$currPos;
                  s10 = peg$f49(s22, s32, s9);
                  if (s10) {
                    s10 = void 0;
                  } else {
                    s10 = peg$FAILED;
                  }
                  if (s10 !== peg$FAILED) {
                    s8 = [s8, s9, s10];
                    s7 = s8;
                  } else {
                    peg$currPos = s7;
                    s7 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s7;
                  s7 = peg$FAILED;
                }
              } else {
                peg$currPos = s7;
                s7 = peg$FAILED;
              }
              peg$silentFails--;
              if (s7 === peg$FAILED) {
                s6 = void 0;
              } else {
                peg$currPos = s6;
                s6 = peg$FAILED;
              }
              if (s6 !== peg$FAILED) {
                s7 = peg$parsetoken();
                if (s7 !== peg$FAILED) {
                  peg$savedPos = s5;
                  s5 = peg$f50(s22, s32, s7);
                } else {
                  peg$currPos = s5;
                  s5 = peg$FAILED;
                }
              } else {
                peg$currPos = s5;
                s5 = peg$FAILED;
              }
            }
            s5 = peg$parseend_env();
            if (s5 !== peg$FAILED) {
              s6 = peg$parsegroup_contents_as_string();
              if (s6 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f51(s22, s32, s42);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e33);
          }
        }
        return s0;
      }
      function peg$parsemath_environment() {
        var s0, s1, s22, s32, s42, s5, s6, s7, s8, s9, s10, s11, s12;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parsebegin_env();
        if (s1 !== peg$FAILED) {
          s22 = peg$parsebegin_group();
          if (s22 !== peg$FAILED) {
            s32 = peg$parsemath_env_name();
            if (s32 !== peg$FAILED) {
              s42 = peg$parseend_group();
              if (s42 !== peg$FAILED) {
                s5 = peg$parsesameline_comment();
                if (s5 === peg$FAILED) {
                  s5 = null;
                }
                s6 = [];
                s7 = peg$currPos;
                s8 = peg$currPos;
                peg$silentFails++;
                s9 = peg$currPos;
                s10 = peg$parseend_env();
                if (s10 !== peg$FAILED) {
                  s11 = peg$parsegroup();
                  if (s11 !== peg$FAILED) {
                    peg$savedPos = peg$currPos;
                    s12 = peg$f52(s32, s5, s11);
                    if (s12) {
                      s12 = void 0;
                    } else {
                      s12 = peg$FAILED;
                    }
                    if (s12 !== peg$FAILED) {
                      s10 = [s10, s11, s12];
                      s9 = s10;
                    } else {
                      peg$currPos = s9;
                      s9 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s9;
                    s9 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s9;
                  s9 = peg$FAILED;
                }
                peg$silentFails--;
                if (s9 === peg$FAILED) {
                  s8 = void 0;
                } else {
                  peg$currPos = s8;
                  s8 = peg$FAILED;
                }
                if (s8 !== peg$FAILED) {
                  s9 = peg$parsemath_token();
                  if (s9 !== peg$FAILED) {
                    peg$savedPos = s7;
                    s7 = peg$f53(s32, s5, s9);
                  } else {
                    peg$currPos = s7;
                    s7 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s7;
                  s7 = peg$FAILED;
                }
                while (s7 !== peg$FAILED) {
                  s6.push(s7);
                  s7 = peg$currPos;
                  s8 = peg$currPos;
                  peg$silentFails++;
                  s9 = peg$currPos;
                  s10 = peg$parseend_env();
                  if (s10 !== peg$FAILED) {
                    s11 = peg$parsegroup();
                    if (s11 !== peg$FAILED) {
                      peg$savedPos = peg$currPos;
                      s12 = peg$f52(s32, s5, s11);
                      if (s12) {
                        s12 = void 0;
                      } else {
                        s12 = peg$FAILED;
                      }
                      if (s12 !== peg$FAILED) {
                        s10 = [s10, s11, s12];
                        s9 = s10;
                      } else {
                        peg$currPos = s9;
                        s9 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s9;
                      s9 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s9;
                    s9 = peg$FAILED;
                  }
                  peg$silentFails--;
                  if (s9 === peg$FAILED) {
                    s8 = void 0;
                  } else {
                    peg$currPos = s8;
                    s8 = peg$FAILED;
                  }
                  if (s8 !== peg$FAILED) {
                    s9 = peg$parsemath_token();
                    if (s9 !== peg$FAILED) {
                      peg$savedPos = s7;
                      s7 = peg$f53(s32, s5, s9);
                    } else {
                      peg$currPos = s7;
                      s7 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s7;
                    s7 = peg$FAILED;
                  }
                }
                s7 = peg$parseend_env();
                if (s7 !== peg$FAILED) {
                  s8 = peg$parsebegin_group();
                  if (s8 !== peg$FAILED) {
                    s9 = peg$parsemath_env_name();
                    if (s9 !== peg$FAILED) {
                      s10 = peg$parseend_group();
                      if (s10 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f54(s32, s5, s6);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e34);
          }
        }
        return s0;
      }
      function peg$parsemath_group() {
        var s0, s1, s22, s32, s42, s5;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parsebegin_group();
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$currPos;
          s42 = peg$currPos;
          peg$silentFails++;
          s5 = peg$parseend_group();
          peg$silentFails--;
          if (s5 === peg$FAILED) {
            s42 = void 0;
          } else {
            peg$currPos = s42;
            s42 = peg$FAILED;
          }
          if (s42 !== peg$FAILED) {
            s5 = peg$parsemath_token();
            if (s5 !== peg$FAILED) {
              peg$savedPos = s32;
              s32 = peg$f55(s5);
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          } else {
            peg$currPos = s32;
            s32 = peg$FAILED;
          }
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$currPos;
            s42 = peg$currPos;
            peg$silentFails++;
            s5 = peg$parseend_group();
            peg$silentFails--;
            if (s5 === peg$FAILED) {
              s42 = void 0;
            } else {
              peg$currPos = s42;
              s42 = peg$FAILED;
            }
            if (s42 !== peg$FAILED) {
              s5 = peg$parsemath_token();
              if (s5 !== peg$FAILED) {
                peg$savedPos = s32;
                s32 = peg$f55(s5);
              } else {
                peg$currPos = s32;
                s32 = peg$FAILED;
              }
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          }
          s32 = peg$parseend_group();
          if (s32 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f56(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e35);
          }
        }
        return s0;
      }
      function peg$parsebegin_display_math() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$parseescape();
        if (s1 !== peg$FAILED) {
          if (input3.charCodeAt(peg$currPos) === 91) {
            s22 = peg$c4;
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e14);
            }
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseend_display_math() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$parseescape();
        if (s1 !== peg$FAILED) {
          if (input3.charCodeAt(peg$currPos) === 93) {
            s22 = peg$c5;
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e15);
            }
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsebegin_inline_math() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$parseescape();
        if (s1 !== peg$FAILED) {
          if (input3.charCodeAt(peg$currPos) === 40) {
            s22 = peg$c16;
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e36);
            }
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseend_inline_math() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$parseescape();
        if (s1 !== peg$FAILED) {
          if (input3.charCodeAt(peg$currPos) === 41) {
            s22 = peg$c17;
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e37);
            }
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsebegin_env() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$parseescape();
        if (s1 !== peg$FAILED) {
          if (input3.substr(peg$currPos, 5) === peg$c18) {
            s22 = peg$c18;
            peg$currPos += 5;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e38);
            }
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseend_env() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$parseescape();
        if (s1 !== peg$FAILED) {
          if (input3.substr(peg$currPos, 3) === peg$c19) {
            s22 = peg$c19;
            peg$currPos += 3;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e39);
            }
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsemath_env_name() {
        var s0, s1;
        s0 = peg$currPos;
        if (input3.substr(peg$currPos, 9) === peg$c20) {
          s1 = peg$c20;
          peg$currPos += 9;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e40);
          }
        }
        if (s1 === peg$FAILED) {
          if (input3.substr(peg$currPos, 8) === peg$c21) {
            s1 = peg$c21;
            peg$currPos += 8;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e41);
            }
          }
          if (s1 === peg$FAILED) {
            if (input3.substr(peg$currPos, 6) === peg$c22) {
              s1 = peg$c22;
              peg$currPos += 6;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e42);
              }
            }
            if (s1 === peg$FAILED) {
              if (input3.substr(peg$currPos, 5) === peg$c23) {
                s1 = peg$c23;
                peg$currPos += 5;
              } else {
                s1 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e43);
                }
              }
              if (s1 === peg$FAILED) {
                if (input3.substr(peg$currPos, 8) === peg$c24) {
                  s1 = peg$c24;
                  peg$currPos += 8;
                } else {
                  s1 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e44);
                  }
                }
                if (s1 === peg$FAILED) {
                  if (input3.substr(peg$currPos, 7) === peg$c25) {
                    s1 = peg$c25;
                    peg$currPos += 7;
                  } else {
                    s1 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e45);
                    }
                  }
                  if (s1 === peg$FAILED) {
                    if (input3.substr(peg$currPos, 7) === peg$c26) {
                      s1 = peg$c26;
                      peg$currPos += 7;
                    } else {
                      s1 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e46);
                      }
                    }
                    if (s1 === peg$FAILED) {
                      if (input3.substr(peg$currPos, 6) === peg$c27) {
                        s1 = peg$c27;
                        peg$currPos += 6;
                      } else {
                        s1 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e47);
                        }
                      }
                      if (s1 === peg$FAILED) {
                        if (input3.substr(peg$currPos, 9) === peg$c28) {
                          s1 = peg$c28;
                          peg$currPos += 9;
                        } else {
                          s1 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e48);
                          }
                        }
                        if (s1 === peg$FAILED) {
                          if (input3.substr(peg$currPos, 8) === peg$c29) {
                            s1 = peg$c29;
                            peg$currPos += 8;
                          } else {
                            s1 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e49);
                            }
                          }
                          if (s1 === peg$FAILED) {
                            if (input3.substr(peg$currPos, 8) === peg$c30) {
                              s1 = peg$c30;
                              peg$currPos += 8;
                            } else {
                              s1 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e50);
                              }
                            }
                            if (s1 === peg$FAILED) {
                              if (input3.substr(peg$currPos, 7) === peg$c31) {
                                s1 = peg$c31;
                                peg$currPos += 7;
                              } else {
                                s1 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e51);
                                }
                              }
                              if (s1 === peg$FAILED) {
                                if (input3.substr(peg$currPos, 5) === peg$c32) {
                                  s1 = peg$c32;
                                  peg$currPos += 5;
                                } else {
                                  s1 = peg$FAILED;
                                  if (peg$silentFails === 0) {
                                    peg$fail(peg$e52);
                                  }
                                }
                                if (s1 === peg$FAILED) {
                                  if (input3.substr(peg$currPos, 4) === peg$c33) {
                                    s1 = peg$c33;
                                    peg$currPos += 4;
                                  } else {
                                    s1 = peg$FAILED;
                                    if (peg$silentFails === 0) {
                                      peg$fail(peg$e53);
                                    }
                                  }
                                  if (s1 === peg$FAILED) {
                                    if (input3.substr(peg$currPos, 11) === peg$c34) {
                                      s1 = peg$c34;
                                      peg$currPos += 11;
                                    } else {
                                      s1 = peg$FAILED;
                                      if (peg$silentFails === 0) {
                                        peg$fail(peg$e54);
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f57(s1);
        }
        s0 = s1;
        return s0;
      }
      function peg$parseescape() {
        var s0, s1;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 92) {
          s1 = peg$c35;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e56);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f58();
        }
        s0 = s1;
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e55);
          }
        }
        return s0;
      }
      function peg$parsebegin_group() {
        var s0, s1;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 123) {
          s1 = peg$c36;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e57);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f59(s1);
        }
        s0 = s1;
        return s0;
      }
      function peg$parseend_group() {
        var s0, s1;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 125) {
          s1 = peg$c37;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e58);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f60(s1);
        }
        s0 = s1;
        return s0;
      }
      function peg$parsemath_shift() {
        var s0, s1;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 36) {
          s1 = peg$c38;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e59);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f61(s1);
        }
        s0 = s1;
        return s0;
      }
      function peg$parsealignment_tab() {
        var s0, s1;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 38) {
          s1 = peg$c39;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e60);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f62(s1);
        }
        s0 = s1;
        return s0;
      }
      function peg$parsenl() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        if (input3.charCodeAt(peg$currPos) === 13) {
          s22 = peg$c40;
          peg$currPos++;
        } else {
          s22 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e62);
          }
        }
        peg$silentFails--;
        if (s22 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input3.charCodeAt(peg$currPos) === 10) {
            s22 = peg$c41;
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e63);
            }
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          if (input3.charCodeAt(peg$currPos) === 13) {
            s0 = peg$c40;
            peg$currPos++;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e62);
            }
          }
          if (s0 === peg$FAILED) {
            if (input3.substr(peg$currPos, 2) === peg$c42) {
              s0 = peg$c42;
              peg$currPos += 2;
            } else {
              s0 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e64);
              }
            }
          }
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e61);
          }
        }
        return s0;
      }
      function peg$parsemacro_parameter() {
        var s0, s1;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 35) {
          s1 = peg$c43;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e65);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f63(s1);
        }
        s0 = s1;
        return s0;
      }
      function peg$parsesuperscript() {
        var s0, s1;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 94) {
          s1 = peg$c44;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e66);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f64(s1);
        }
        s0 = s1;
        return s0;
      }
      function peg$parsesubscript() {
        var s0, s1;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 95) {
          s1 = peg$c45;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e67);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f65(s1);
        }
        s0 = s1;
        return s0;
      }
      function peg$parseignore() {
        var s0;
        if (input3.charCodeAt(peg$currPos) === 0) {
          s0 = peg$c46;
          peg$currPos++;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e68);
          }
        }
        return s0;
      }
      function peg$parsesp() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = [];
        if (peg$r1.test(input3.charAt(peg$currPos))) {
          s22 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s22 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e69);
          }
        }
        if (s22 !== peg$FAILED) {
          while (s22 !== peg$FAILED) {
            s1.push(s22);
            if (peg$r1.test(input3.charAt(peg$currPos))) {
              s22 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s22 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e69);
              }
            }
          }
        } else {
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f66();
        }
        s0 = s1;
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        return s0;
      }
      function peg$parsechar() {
        var s0, s1;
        peg$silentFails++;
        if (peg$r2.test(input3.charAt(peg$currPos))) {
          s0 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e71);
          }
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e70);
          }
        }
        return s0;
      }
      function peg$parsenum() {
        var s0, s1;
        peg$silentFails++;
        if (peg$r3.test(input3.charAt(peg$currPos))) {
          s0 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e73);
          }
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e72);
          }
        }
        return s0;
      }
      function peg$parsepunctuation() {
        var s0, s1;
        peg$silentFails++;
        s0 = peg$currPos;
        if (peg$r4.test(input3.charAt(peg$currPos))) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e75);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f67(s1);
        }
        s0 = s1;
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e74);
          }
        }
        return s0;
      }
      function peg$parsecomment_start() {
        var s0;
        if (input3.charCodeAt(peg$currPos) === 37) {
          s0 = peg$c0;
          peg$currPos++;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e7);
          }
        }
        return s0;
      }
      function peg$parsefull_comment() {
        var s0, s1;
        peg$silentFails++;
        s0 = peg$parseownline_comment();
        if (s0 === peg$FAILED) {
          s0 = peg$parsesameline_comment();
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e76);
          }
        }
        return s0;
      }
      function peg$parseownline_comment() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        s1 = peg$currPos;
        s22 = [];
        s32 = peg$parsesp();
        while (s32 !== peg$FAILED) {
          s22.push(s32);
          s32 = peg$parsesp();
        }
        s32 = peg$parsenl();
        if (s32 !== peg$FAILED) {
          s22 = [s22, s32];
          s1 = s22;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 === peg$FAILED) {
          s1 = null;
        }
        s22 = peg$parseleading_sp();
        if (s22 !== peg$FAILED) {
          s32 = peg$parsecomment();
          if (s32 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f68(s22, s32);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsesameline_comment() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parsesp();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parsesp();
        }
        s22 = peg$parsecomment();
        if (s22 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f69(s1, s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsecomment() {
        var s0, s1, s22, s32, s42, s5, s6, s7;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parsecomment_start();
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$currPos;
          s42 = peg$currPos;
          peg$silentFails++;
          s5 = peg$parsenl();
          peg$silentFails--;
          if (s5 === peg$FAILED) {
            s42 = void 0;
          } else {
            peg$currPos = s42;
            s42 = peg$FAILED;
          }
          if (s42 !== peg$FAILED) {
            if (input3.length > peg$currPos) {
              s5 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s5 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e3);
              }
            }
            if (s5 !== peg$FAILED) {
              peg$savedPos = s32;
              s32 = peg$f70(s5);
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          } else {
            peg$currPos = s32;
            s32 = peg$FAILED;
          }
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$currPos;
            s42 = peg$currPos;
            peg$silentFails++;
            s5 = peg$parsenl();
            peg$silentFails--;
            if (s5 === peg$FAILED) {
              s42 = void 0;
            } else {
              peg$currPos = s42;
              s42 = peg$FAILED;
            }
            if (s42 !== peg$FAILED) {
              if (input3.length > peg$currPos) {
                s5 = input3.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e3);
                }
              }
              if (s5 !== peg$FAILED) {
                peg$savedPos = s32;
                s32 = peg$f70(s5);
              } else {
                peg$currPos = s32;
                s32 = peg$FAILED;
              }
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          }
          s32 = peg$currPos;
          peg$silentFails++;
          s42 = peg$parseparbreak();
          peg$silentFails--;
          if (s42 !== peg$FAILED) {
            peg$currPos = s32;
            s32 = void 0;
          } else {
            s32 = peg$FAILED;
          }
          if (s32 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f71(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parsecomment_start();
          if (s1 !== peg$FAILED) {
            s22 = [];
            s32 = peg$currPos;
            s42 = peg$currPos;
            peg$silentFails++;
            s5 = peg$parsenl();
            peg$silentFails--;
            if (s5 === peg$FAILED) {
              s42 = void 0;
            } else {
              peg$currPos = s42;
              s42 = peg$FAILED;
            }
            if (s42 !== peg$FAILED) {
              if (input3.length > peg$currPos) {
                s5 = input3.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e3);
                }
              }
              if (s5 !== peg$FAILED) {
                peg$savedPos = s32;
                s32 = peg$f72(s5);
              } else {
                peg$currPos = s32;
                s32 = peg$FAILED;
              }
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
            while (s32 !== peg$FAILED) {
              s22.push(s32);
              s32 = peg$currPos;
              s42 = peg$currPos;
              peg$silentFails++;
              s5 = peg$parsenl();
              peg$silentFails--;
              if (s5 === peg$FAILED) {
                s42 = void 0;
              } else {
                peg$currPos = s42;
                s42 = peg$FAILED;
              }
              if (s42 !== peg$FAILED) {
                if (input3.length > peg$currPos) {
                  s5 = input3.charAt(peg$currPos);
                  peg$currPos++;
                } else {
                  s5 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e3);
                  }
                }
                if (s5 !== peg$FAILED) {
                  peg$savedPos = s32;
                  s32 = peg$f72(s5);
                } else {
                  peg$currPos = s32;
                  s32 = peg$FAILED;
                }
              } else {
                peg$currPos = s32;
                s32 = peg$FAILED;
              }
            }
            s32 = peg$currPos;
            s42 = peg$parsenl();
            if (s42 !== peg$FAILED) {
              s5 = [];
              s6 = peg$parsesp();
              while (s6 !== peg$FAILED) {
                s5.push(s6);
                s6 = peg$parsesp();
              }
              s6 = peg$currPos;
              peg$silentFails++;
              s7 = peg$parsecomment_start();
              peg$silentFails--;
              if (s7 === peg$FAILED) {
                s6 = void 0;
              } else {
                peg$currPos = s6;
                s6 = peg$FAILED;
              }
              if (s6 !== peg$FAILED) {
                s42 = [s42, s5, s6];
                s32 = s42;
              } else {
                peg$currPos = s32;
                s32 = peg$FAILED;
              }
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
            if (s32 === peg$FAILED) {
              s32 = peg$parsenl();
              if (s32 === peg$FAILED) {
                s32 = peg$parseEOF();
              }
            }
            if (s32 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f73(s22);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e77);
          }
        }
        return s0;
      }
      function peg$parseleading_sp() {
        var s0, s1, s22, s32, s42;
        s0 = peg$currPos;
        s1 = peg$currPos;
        s22 = peg$parsestart_of_line();
        if (s22 !== peg$FAILED) {
          s32 = [];
          s42 = peg$parsesp();
          while (s42 !== peg$FAILED) {
            s32.push(s42);
            s42 = peg$parsesp();
          }
          s22 = [s22, s32];
          s1 = s22;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          s0 = input3.substring(s0, peg$currPos);
        } else {
          s0 = s1;
        }
        return s0;
      }
      function peg$parsestart_of_line() {
        var s0;
        peg$savedPos = peg$currPos;
        s0 = peg$f74();
        if (s0) {
          s0 = void 0;
        } else {
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseEOF() {
        var s0, s1;
        s0 = peg$currPos;
        peg$silentFails++;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        peg$silentFails--;
        if (s1 === peg$FAILED) {
          s0 = void 0;
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function toString6(e2) {
        if (typeof e2 === "string") {
          return e2;
        }
        if (typeof e2.content === "string") {
          return e2.content;
        }
        if (e2 && e2.type === "whitespace") {
          return " ";
        }
        return e2;
      }
      function compare_env(g1, g2) {
        const g1Name = typeof g1 === "string" ? g1 : g1.content.map(toString6).join("");
        const g2Name = typeof g2 === "string" ? g2 : g2.content.map(toString6).join("");
        return g1Name === g2Name;
      }
      function createNode(type2, extra = {}) {
        return { type: type2, ...extra, position: location4() };
      }
      peg$result = peg$startRuleFunction();
      if (peg$result !== peg$FAILED && peg$currPos === input3.length) {
        return peg$result;
      } else {
        if (peg$result !== peg$FAILED && peg$currPos < input3.length) {
          peg$fail(peg$endExpectation());
        }
        throw peg$buildStructuredError(
          peg$maxFailExpected,
          peg$maxFailPos < input3.length ? input3.charAt(peg$maxFailPos) : null,
          peg$maxFailPos < input3.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
        );
      }
    }
    return {
      SyntaxError: peg$SyntaxError,
      parse: peg$parse
    };
  })()
);
var align_environment_default = (
  // Generated by Peggy 2.0.1.
  //
  // https://peggyjs.org/
  (function() {
    "use strict";
    function peg$subclass(child, parent2) {
      function C() {
        this.constructor = child;
      }
      C.prototype = parent2.prototype;
      child.prototype = new C();
    }
    function peg$SyntaxError(message, expected, found2, location4) {
      var self2 = Error.call(this, message);
      if (Object.setPrototypeOf) {
        Object.setPrototypeOf(self2, peg$SyntaxError.prototype);
      }
      self2.expected = expected;
      self2.found = found2;
      self2.location = location4;
      self2.name = "SyntaxError";
      return self2;
    }
    peg$subclass(peg$SyntaxError, Error);
    function peg$padEnd(str2, targetLength, padString) {
      padString = padString || " ";
      if (str2.length > targetLength) {
        return str2;
      }
      targetLength -= str2.length;
      padString += padString.repeat(targetLength);
      return str2 + padString.slice(0, targetLength);
    }
    peg$SyntaxError.prototype.format = function(sources) {
      var str2 = "Error: " + this.message;
      if (this.location) {
        var src = null;
        var k;
        for (k = 0; k < sources.length; k++) {
          if (sources[k].source === this.location.source) {
            src = sources[k].text.split(/\r\n|\n|\r/g);
            break;
          }
        }
        var s5 = this.location.start;
        var loc = this.location.source + ":" + s5.line + ":" + s5.column;
        if (src) {
          var e2 = this.location.end;
          var filler = peg$padEnd("", s5.line.toString().length, " ");
          var line2 = src[s5.line - 1];
          var last = s5.line === e2.line ? e2.column : line2.length + 1;
          var hatLen = last - s5.column || 1;
          str2 += "\n --> " + loc + "\n" + filler + " |\n" + s5.line + " | " + line2 + "\n" + filler + " | " + peg$padEnd("", s5.column - 1, " ") + peg$padEnd("", hatLen, "^");
        } else {
          str2 += "\n at " + loc;
        }
      }
      return str2;
    };
    peg$SyntaxError.buildMessage = function(expected, found2) {
      var DESCRIBE_EXPECTATION_FNS = {
        literal: function(expectation) {
          return '"' + literalEscape(expectation.text) + '"';
        },
        class: function(expectation) {
          var escapedParts = expectation.parts.map(function(part) {
            return Array.isArray(part) ? classEscape(part[0]) + "-" + classEscape(part[1]) : classEscape(part);
          });
          return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
        },
        any: function() {
          return "any character";
        },
        end: function() {
          return "end of input";
        },
        other: function(expectation) {
          return expectation.description;
        }
      };
      function hex(ch) {
        return ch.charCodeAt(0).toString(16).toUpperCase();
      }
      function literalEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function classEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function describeExpectation(expectation) {
        return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
      }
      function describeExpected(expected2) {
        var descriptions = expected2.map(describeExpectation);
        var i2, j;
        descriptions.sort();
        if (descriptions.length > 0) {
          for (i2 = 1, j = 1; i2 < descriptions.length; i2++) {
            if (descriptions[i2 - 1] !== descriptions[i2]) {
              descriptions[j] = descriptions[i2];
              j++;
            }
          }
          descriptions.length = j;
        }
        switch (descriptions.length) {
          case 1:
            return descriptions[0];
          case 2:
            return descriptions[0] + " or " + descriptions[1];
          default:
            return descriptions.slice(0, -1).join(", ") + ", or " + descriptions[descriptions.length - 1];
        }
      }
      function describeFound(found22) {
        return found22 ? '"' + literalEscape(found22) + '"' : "end of input";
      }
      return "Expected " + describeExpected(expected) + " but " + describeFound(found2) + " found.";
    };
    function peg$parse(input3, options) {
      options = options !== void 0 ? options : {};
      var peg$FAILED = {};
      var peg$source = options.grammarSource;
      var peg$startRuleFunctions = { body: peg$parsebody };
      var peg$startRuleFunction = peg$parsebody;
      var peg$e0 = peg$anyExpectation();
      var peg$f0 = function() {
        return [];
      };
      var peg$f1 = function(x2) {
        return { cells: [], colSeps: [], ...x2 };
      };
      var peg$f2 = function(rowItems, rowSep, trailingComment) {
        return { ...rowItems, rowSep, trailingComment };
      };
      var peg$f3 = function(rowItems, trailingComment) {
        return { ...rowItems, rowSep: null, trailingComment };
      };
      var peg$f4 = function(x2) {
        return x2;
      };
      var peg$f5 = function(x2) {
        return {
          cells: [],
          colSeps: [],
          rowSep: null,
          trailingComment: x2
        };
      };
      var peg$f6 = function(x2) {
        return x2;
      };
      var peg$f7 = function(colSep, cell3) {
        return { colSep, cell: cell3 };
      };
      var peg$f8 = function(colSep) {
        return { colSep };
      };
      var peg$f9 = function(a2, b) {
        return processRow(a2, b);
      };
      var peg$f10 = function(b) {
        return processRow(null, b);
      };
      var peg$f11 = function(tok) {
        return options.isSameLineComment(tok);
      };
      var peg$f12 = function(tok) {
        return tok;
      };
      var peg$f13 = function(tok) {
        return options.isOwnLineComment(tok);
      };
      var peg$f14 = function(tok) {
        return tok;
      };
      var peg$f15 = function(tok) {
        return options.isWhitespace(tok);
      };
      var peg$f16 = function(tok) {
        return tok;
      };
      var peg$f17 = function(tok) {
        return options.isRowSep(tok);
      };
      var peg$f18 = function(tok) {
        return tok;
      };
      var peg$f19 = function(tok) {
        return options.isColSep(tok);
      };
      var peg$f20 = function(tok) {
        return tok;
      };
      var peg$currPos = 0;
      var peg$savedPos = 0;
      var peg$posDetailsCache = [{ line: 1, column: 1 }];
      var peg$maxFailPos = 0;
      var peg$maxFailExpected = [];
      var peg$silentFails = 0;
      var peg$result;
      if ("startRule" in options) {
        if (!(options.startRule in peg$startRuleFunctions)) {
          throw new Error(`Can't start parsing from rule "` + options.startRule + '".');
        }
        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
      }
      function text7() {
        return input3.substring(peg$savedPos, peg$currPos);
      }
      function offset() {
        return peg$savedPos;
      }
      function range() {
        return {
          source: peg$source,
          start: peg$savedPos,
          end: peg$currPos
        };
      }
      function location4() {
        return peg$computeLocation(peg$savedPos, peg$currPos);
      }
      function expected(description, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildStructuredError(
          [peg$otherExpectation(description)],
          input3.substring(peg$savedPos, peg$currPos),
          location22
        );
      }
      function error(message, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildSimpleError(message, location22);
      }
      function peg$literalExpectation(text22, ignoreCase) {
        return { type: "literal", text: text22, ignoreCase };
      }
      function peg$classExpectation(parts, inverted, ignoreCase) {
        return { type: "class", parts, inverted, ignoreCase };
      }
      function peg$anyExpectation() {
        return { type: "any" };
      }
      function peg$endExpectation() {
        return { type: "end" };
      }
      function peg$otherExpectation(description) {
        return { type: "other", description };
      }
      function peg$computePosDetails(pos) {
        var details3 = peg$posDetailsCache[pos];
        var p5;
        if (details3) {
          return details3;
        } else {
          p5 = pos - 1;
          while (!peg$posDetailsCache[p5]) {
            p5--;
          }
          details3 = peg$posDetailsCache[p5];
          details3 = {
            line: details3.line,
            column: details3.column
          };
          while (p5 < pos) {
            if (input3.charCodeAt(p5) === 10) {
              details3.line++;
              details3.column = 1;
            } else {
              details3.column++;
            }
            p5++;
          }
          peg$posDetailsCache[pos] = details3;
          return details3;
        }
      }
      function peg$computeLocation(startPos, endPos) {
        var startPosDetails = peg$computePosDetails(startPos);
        var endPosDetails = peg$computePosDetails(endPos);
        return {
          source: peg$source,
          start: {
            offset: startPos,
            line: startPosDetails.line,
            column: startPosDetails.column
          },
          end: {
            offset: endPos,
            line: endPosDetails.line,
            column: endPosDetails.column
          }
        };
      }
      function peg$fail(expected2) {
        if (peg$currPos < peg$maxFailPos) {
          return;
        }
        if (peg$currPos > peg$maxFailPos) {
          peg$maxFailPos = peg$currPos;
          peg$maxFailExpected = [];
        }
        peg$maxFailExpected.push(expected2);
      }
      function peg$buildSimpleError(message, location22) {
        return new peg$SyntaxError(message, null, null, location22);
      }
      function peg$buildStructuredError(expected2, found2, location22) {
        return new peg$SyntaxError(
          peg$SyntaxError.buildMessage(expected2, found2),
          expected2,
          found2,
          location22
        );
      }
      function peg$parsebody() {
        var s0, s1;
        s0 = [];
        s1 = peg$parsecomment_only_line();
        if (s1 === peg$FAILED) {
          s1 = peg$parserow_with_end();
          if (s1 === peg$FAILED) {
            s1 = peg$parserow_without_end();
          }
        }
        if (s1 !== peg$FAILED) {
          while (s1 !== peg$FAILED) {
            s0.push(s1);
            s1 = peg$parsecomment_only_line();
            if (s1 === peg$FAILED) {
              s1 = peg$parserow_with_end();
              if (s1 === peg$FAILED) {
                s1 = peg$parserow_without_end();
              }
            }
          }
        } else {
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseEOL();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f0();
          }
          s0 = s1;
        }
        return s0;
      }
      function peg$parserow_with_end() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        s1 = peg$currPos;
        s22 = peg$parserow_items();
        if (s22 === peg$FAILED) {
          s22 = null;
        }
        peg$savedPos = s1;
        s22 = peg$f1(s22);
        s1 = s22;
        s22 = peg$parserow_sep();
        if (s22 !== peg$FAILED) {
          s32 = peg$parsetrailing_comment();
          if (s32 === peg$FAILED) {
            s32 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f2(s1, s22, s32);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parserow_without_end() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$parserow_items();
        if (s1 !== peg$FAILED) {
          s22 = peg$parsetrailing_comment();
          if (s22 === peg$FAILED) {
            s22 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f3(s1, s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsetrailing_comment() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parsewhitespace();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parsewhitespace();
        }
        s22 = peg$parsesame_line_comment();
        if (s22 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f4(s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsecomment_only_line() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parsewhitespace();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parsewhitespace();
        }
        s22 = peg$parseown_line_comment();
        if (s22 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f5(s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsetoken() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        s22 = peg$parserow_sep();
        if (s22 === peg$FAILED) {
          s22 = peg$parsecol_sep();
          if (s22 === peg$FAILED) {
            s22 = peg$parsetrailing_comment();
            if (s22 === peg$FAILED) {
              s22 = peg$parseown_line_comment();
            }
          }
        }
        peg$silentFails--;
        if (s22 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input3.length > peg$currPos) {
            s22 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e0);
            }
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f6(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsecell() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parsetoken();
        if (s22 !== peg$FAILED) {
          while (s22 !== peg$FAILED) {
            s1.push(s22);
            s22 = peg$parsetoken();
          }
        } else {
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          s0 = input3.substring(s0, peg$currPos);
        } else {
          s0 = s1;
        }
        return s0;
      }
      function peg$parseseparated_cell() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$parsecol_sep();
        if (s1 !== peg$FAILED) {
          s22 = peg$parsecell();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f7(s1, s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parsecol_sep();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f8(s1);
          }
          s0 = s1;
        }
        return s0;
      }
      function peg$parserow_items() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        s1 = peg$parsecell();
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$parseseparated_cell();
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$parseseparated_cell();
          }
          peg$savedPos = s0;
          s0 = peg$f9(s1, s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = [];
          s22 = peg$parseseparated_cell();
          if (s22 !== peg$FAILED) {
            while (s22 !== peg$FAILED) {
              s1.push(s22);
              s22 = peg$parseseparated_cell();
            }
          } else {
            s1 = peg$FAILED;
          }
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f10(s1);
          }
          s0 = s1;
        }
        return s0;
      }
      function peg$parsesame_line_comment() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f11(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f12(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseown_line_comment() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f13(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f14(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsewhitespace() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f15(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f16(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parserow_sep() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f17(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f18(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsecol_sep() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f19(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f20(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseEOL() {
        var s0, s1;
        s0 = peg$currPos;
        peg$silentFails++;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        peg$silentFails--;
        if (s1 === peg$FAILED) {
          s0 = void 0;
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function processRow(leadCell, otherCells) {
        const cells2 = [leadCell || []];
        const seps = [];
        for (const x2 of otherCells) {
          cells2.push(x2.cell || []);
          seps.push(x2.colSep);
        }
        return { cells: cells2, colSeps: seps };
      }
      if (!options.isWhitespace) {
        try {
          Object.assign(
            options,
            createMatchers(["\\", "hline", "cr"], ["&"])
          );
        } catch (e2) {
          console.warn("Error when initializing parser", e2);
        }
      }
      peg$result = peg$startRuleFunction();
      if (peg$result !== peg$FAILED && peg$currPos === input3.length) {
        return peg$result;
      } else {
        if (peg$result !== peg$FAILED && peg$currPos < input3.length) {
          peg$fail(peg$endExpectation());
        }
        throw peg$buildStructuredError(
          peg$maxFailExpected,
          peg$maxFailPos < input3.length ? input3.charAt(peg$maxFailPos) : null,
          peg$maxFailPos < input3.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
        );
      }
    }
    return {
      SyntaxError: peg$SyntaxError,
      parse: peg$parse
    };
  })()
);
var xparse_argspec_default = (
  // Generated by Peggy 2.0.1.
  //
  // https://peggyjs.org/
  (function() {
    "use strict";
    function peg$subclass(child, parent2) {
      function C() {
        this.constructor = child;
      }
      C.prototype = parent2.prototype;
      child.prototype = new C();
    }
    function peg$SyntaxError(message, expected, found2, location4) {
      var self2 = Error.call(this, message);
      if (Object.setPrototypeOf) {
        Object.setPrototypeOf(self2, peg$SyntaxError.prototype);
      }
      self2.expected = expected;
      self2.found = found2;
      self2.location = location4;
      self2.name = "SyntaxError";
      return self2;
    }
    peg$subclass(peg$SyntaxError, Error);
    function peg$padEnd(str2, targetLength, padString) {
      padString = padString || " ";
      if (str2.length > targetLength) {
        return str2;
      }
      targetLength -= str2.length;
      padString += padString.repeat(targetLength);
      return str2 + padString.slice(0, targetLength);
    }
    peg$SyntaxError.prototype.format = function(sources) {
      var str2 = "Error: " + this.message;
      if (this.location) {
        var src = null;
        var k;
        for (k = 0; k < sources.length; k++) {
          if (sources[k].source === this.location.source) {
            src = sources[k].text.split(/\r\n|\n|\r/g);
            break;
          }
        }
        var s5 = this.location.start;
        var loc = this.location.source + ":" + s5.line + ":" + s5.column;
        if (src) {
          var e2 = this.location.end;
          var filler = peg$padEnd("", s5.line.toString().length, " ");
          var line2 = src[s5.line - 1];
          var last = s5.line === e2.line ? e2.column : line2.length + 1;
          var hatLen = last - s5.column || 1;
          str2 += "\n --> " + loc + "\n" + filler + " |\n" + s5.line + " | " + line2 + "\n" + filler + " | " + peg$padEnd("", s5.column - 1, " ") + peg$padEnd("", hatLen, "^");
        } else {
          str2 += "\n at " + loc;
        }
      }
      return str2;
    };
    peg$SyntaxError.buildMessage = function(expected, found2) {
      var DESCRIBE_EXPECTATION_FNS = {
        literal: function(expectation) {
          return '"' + literalEscape(expectation.text) + '"';
        },
        class: function(expectation) {
          var escapedParts = expectation.parts.map(function(part) {
            return Array.isArray(part) ? classEscape(part[0]) + "-" + classEscape(part[1]) : classEscape(part);
          });
          return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
        },
        any: function() {
          return "any character";
        },
        end: function() {
          return "end of input";
        },
        other: function(expectation) {
          return expectation.description;
        }
      };
      function hex(ch) {
        return ch.charCodeAt(0).toString(16).toUpperCase();
      }
      function literalEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function classEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function describeExpectation(expectation) {
        return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
      }
      function describeExpected(expected2) {
        var descriptions = expected2.map(describeExpectation);
        var i2, j;
        descriptions.sort();
        if (descriptions.length > 0) {
          for (i2 = 1, j = 1; i2 < descriptions.length; i2++) {
            if (descriptions[i2 - 1] !== descriptions[i2]) {
              descriptions[j] = descriptions[i2];
              j++;
            }
          }
          descriptions.length = j;
        }
        switch (descriptions.length) {
          case 1:
            return descriptions[0];
          case 2:
            return descriptions[0] + " or " + descriptions[1];
          default:
            return descriptions.slice(0, -1).join(", ") + ", or " + descriptions[descriptions.length - 1];
        }
      }
      function describeFound(found22) {
        return found22 ? '"' + literalEscape(found22) + '"' : "end of input";
      }
      return "Expected " + describeExpected(expected) + " but " + describeFound(found2) + " found.";
    };
    function peg$parse(input3, options) {
      options = options !== void 0 ? options : {};
      var peg$FAILED = {};
      var peg$source = options.grammarSource;
      var peg$startRuleFunctions = { args_spec_list: peg$parseargs_spec_list };
      var peg$startRuleFunction = peg$parseargs_spec_list;
      var peg$c0 = "+";
      var peg$c1 = "v";
      var peg$c2 = "b";
      var peg$c3 = "!";
      var peg$c4 = "D";
      var peg$c5 = "d";
      var peg$c6 = "s";
      var peg$c7 = "O";
      var peg$c8 = "o";
      var peg$c9 = "e";
      var peg$c10 = "E";
      var peg$c11 = "t";
      var peg$c12 = "R";
      var peg$c13 = "r";
      var peg$c14 = "u";
      var peg$c15 = "m";
      var peg$c16 = "{";
      var peg$c17 = "}";
      var peg$c18 = " ";
      var peg$c19 = "\n";
      var peg$c20 = "\r";
      var peg$r0 = /^[{ ]/;
      var peg$e0 = peg$literalExpectation("+", false);
      var peg$e1 = peg$literalExpectation("v", false);
      var peg$e2 = peg$anyExpectation();
      var peg$e3 = peg$literalExpectation("b", false);
      var peg$e4 = peg$literalExpectation("!", false);
      var peg$e5 = peg$literalExpectation("D", false);
      var peg$e6 = peg$literalExpectation("d", false);
      var peg$e7 = peg$literalExpectation("s", false);
      var peg$e8 = peg$literalExpectation("O", false);
      var peg$e9 = peg$literalExpectation("o", false);
      var peg$e10 = peg$literalExpectation("e", false);
      var peg$e11 = peg$literalExpectation("E", false);
      var peg$e12 = peg$literalExpectation("t", false);
      var peg$e13 = peg$literalExpectation("R", false);
      var peg$e14 = peg$literalExpectation("r", false);
      var peg$e15 = peg$literalExpectation("u", false);
      var peg$e16 = peg$classExpectation(["{", " "], false, false);
      var peg$e17 = peg$literalExpectation("m", false);
      var peg$e18 = peg$literalExpectation("{", false);
      var peg$e19 = peg$literalExpectation("}", false);
      var peg$e20 = peg$literalExpectation(" ", false);
      var peg$e21 = peg$literalExpectation("\n", false);
      var peg$e22 = peg$literalExpectation("\r", false);
      var peg$f0 = function(x2) {
        return x2;
      };
      var peg$f1 = function(spec) {
        return spec;
      };
      var peg$f2 = function(spec) {
        return spec;
      };
      var peg$f3 = function(openBrace) {
        return createNode("verbatim", { openBrace, closeBrace: openBrace });
      };
      var peg$f4 = function() {
        return createNode("body");
      };
      var peg$f5 = function(leading_bang, spec) {
        return leading_bang ? { ...spec, noLeadingWhitespace: true } : spec;
      };
      var peg$f6 = function(braceSpec, defaultArg) {
        return createNode("optional", { ...braceSpec, defaultArg });
      };
      var peg$f7 = function(braceSpec) {
        return createNode("optional", braceSpec);
      };
      var peg$f8 = function() {
        return createNode("optionalStar");
      };
      var peg$f9 = function(g) {
        return createNode("optional", { defaultArg: g });
      };
      var peg$f10 = function() {
        return createNode("optional");
      };
      var peg$f11 = function(args) {
        return createNode("embellishment", {
          embellishmentTokens: args.content
        });
      };
      var peg$f12 = function(args, g) {
        return createNode("embellishment", {
          embellishmentTokens: args.content,
          defaultArg: g
        });
      };
      var peg$f13 = function(tok) {
        return createNode("optionalToken", { token: tok });
      };
      var peg$f14 = function(braceSpec, defaultArg) {
        return createNode("mandatory", { ...braceSpec, defaultArg });
      };
      var peg$f15 = function(braceSpec) {
        return createNode("mandatory", braceSpec);
      };
      var peg$f16 = function(stopTokens) {
        return createNode("until", { stopTokens });
      };
      var peg$f17 = function(x2) {
        return [x2];
      };
      var peg$f18 = function(g) {
        return g.content;
      };
      var peg$f19 = function() {
        return createNode("mandatory");
      };
      var peg$f20 = function(openBrace, closeBrace) {
        return { openBrace, closeBrace };
      };
      var peg$f21 = function(content3) {
        return { type: "group", content: content3 };
      };
      var peg$f22 = function() {
        return "";
      };
      var peg$currPos = 0;
      var peg$savedPos = 0;
      var peg$posDetailsCache = [{ line: 1, column: 1 }];
      var peg$maxFailPos = 0;
      var peg$maxFailExpected = [];
      var peg$silentFails = 0;
      var peg$result;
      if ("startRule" in options) {
        if (!(options.startRule in peg$startRuleFunctions)) {
          throw new Error(`Can't start parsing from rule "` + options.startRule + '".');
        }
        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
      }
      function text7() {
        return input3.substring(peg$savedPos, peg$currPos);
      }
      function offset() {
        return peg$savedPos;
      }
      function range() {
        return {
          source: peg$source,
          start: peg$savedPos,
          end: peg$currPos
        };
      }
      function location4() {
        return peg$computeLocation(peg$savedPos, peg$currPos);
      }
      function expected(description, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildStructuredError(
          [peg$otherExpectation(description)],
          input3.substring(peg$savedPos, peg$currPos),
          location22
        );
      }
      function error(message, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildSimpleError(message, location22);
      }
      function peg$literalExpectation(text22, ignoreCase) {
        return { type: "literal", text: text22, ignoreCase };
      }
      function peg$classExpectation(parts, inverted, ignoreCase) {
        return { type: "class", parts, inverted, ignoreCase };
      }
      function peg$anyExpectation() {
        return { type: "any" };
      }
      function peg$endExpectation() {
        return { type: "end" };
      }
      function peg$otherExpectation(description) {
        return { type: "other", description };
      }
      function peg$computePosDetails(pos) {
        var details3 = peg$posDetailsCache[pos];
        var p5;
        if (details3) {
          return details3;
        } else {
          p5 = pos - 1;
          while (!peg$posDetailsCache[p5]) {
            p5--;
          }
          details3 = peg$posDetailsCache[p5];
          details3 = {
            line: details3.line,
            column: details3.column
          };
          while (p5 < pos) {
            if (input3.charCodeAt(p5) === 10) {
              details3.line++;
              details3.column = 1;
            } else {
              details3.column++;
            }
            p5++;
          }
          peg$posDetailsCache[pos] = details3;
          return details3;
        }
      }
      function peg$computeLocation(startPos, endPos) {
        var startPosDetails = peg$computePosDetails(startPos);
        var endPosDetails = peg$computePosDetails(endPos);
        return {
          source: peg$source,
          start: {
            offset: startPos,
            line: startPosDetails.line,
            column: startPosDetails.column
          },
          end: {
            offset: endPos,
            line: endPosDetails.line,
            column: endPosDetails.column
          }
        };
      }
      function peg$fail(expected2) {
        if (peg$currPos < peg$maxFailPos) {
          return;
        }
        if (peg$currPos > peg$maxFailPos) {
          peg$maxFailPos = peg$currPos;
          peg$maxFailExpected = [];
        }
        peg$maxFailExpected.push(expected2);
      }
      function peg$buildSimpleError(message, location22) {
        return new peg$SyntaxError(message, null, null, location22);
      }
      function peg$buildStructuredError(expected2, found2, location22) {
        return new peg$SyntaxError(
          peg$SyntaxError.buildMessage(expected2, found2),
          expected2,
          found2,
          location22
        );
      }
      function peg$parseargs_spec_list() {
        var s0, s1, s22, s32, s42;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$currPos;
        s32 = peg$parsewhitespace();
        s42 = peg$parsearg_spec();
        if (s42 !== peg$FAILED) {
          peg$savedPos = s22;
          s22 = peg$f0(s42);
        } else {
          peg$currPos = s22;
          s22 = peg$FAILED;
        }
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$currPos;
          s32 = peg$parsewhitespace();
          s42 = peg$parsearg_spec();
          if (s42 !== peg$FAILED) {
            peg$savedPos = s22;
            s22 = peg$f0(s42);
          } else {
            peg$currPos = s22;
            s22 = peg$FAILED;
          }
        }
        s22 = peg$parsewhitespace();
        peg$savedPos = s0;
        s0 = peg$f1(s1);
        return s0;
      }
      function peg$parsearg_spec() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 43) {
          s1 = peg$c0;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 === peg$FAILED) {
          s1 = null;
        }
        s22 = peg$parseoptional();
        if (s22 === peg$FAILED) {
          s22 = peg$parsemandatory();
          if (s22 === peg$FAILED) {
            s22 = peg$parseverbatim();
            if (s22 === peg$FAILED) {
              s22 = peg$parserequired();
              if (s22 === peg$FAILED) {
                s22 = peg$parsebody();
                if (s22 === peg$FAILED) {
                  s22 = peg$parseuntil();
                }
              }
            }
          }
        }
        if (s22 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f2(s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseverbatim() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 118) {
          s1 = peg$c1;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e1);
          }
        }
        if (s1 !== peg$FAILED) {
          if (input3.length > peg$currPos) {
            s22 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e2);
            }
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f3(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsebody() {
        var s0, s1;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 98) {
          s1 = peg$c2;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f4();
        }
        s0 = s1;
        return s0;
      }
      function peg$parseoptional() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 33) {
          s1 = peg$c3;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e4);
          }
        }
        if (s1 === peg$FAILED) {
          s1 = null;
        }
        s22 = peg$parseoptional_star();
        if (s22 === peg$FAILED) {
          s22 = peg$parseoptional_standard();
          if (s22 === peg$FAILED) {
            s22 = peg$parseoptional_delimited();
            if (s22 === peg$FAILED) {
              s22 = peg$parseoptional_embellishment();
              if (s22 === peg$FAILED) {
                s22 = peg$parseoptional_token();
              }
            }
          }
        }
        if (s22 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f5(s1, s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseoptional_delimited() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 68) {
          s1 = peg$c4;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e5);
          }
        }
        if (s1 !== peg$FAILED) {
          s22 = peg$parsebrace_spec();
          s32 = peg$parsebraced_group();
          if (s32 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f6(s22, s32);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input3.charCodeAt(peg$currPos) === 100) {
            s1 = peg$c5;
            peg$currPos++;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s1 !== peg$FAILED) {
            s22 = peg$parsebrace_spec();
            peg$savedPos = s0;
            s0 = peg$f7(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
        return s0;
      }
      function peg$parseoptional_star() {
        var s0, s1;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 115) {
          s1 = peg$c6;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e7);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f8();
        }
        s0 = s1;
        return s0;
      }
      function peg$parseoptional_standard() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 79) {
          s1 = peg$c7;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        if (s1 !== peg$FAILED) {
          s22 = peg$parsebraced_group();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f9(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input3.charCodeAt(peg$currPos) === 111) {
            s1 = peg$c8;
            peg$currPos++;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e9);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f10();
          }
          s0 = s1;
        }
        return s0;
      }
      function peg$parseoptional_embellishment() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 101) {
          s1 = peg$c9;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e10);
          }
        }
        if (s1 !== peg$FAILED) {
          s22 = peg$parsebraced_group();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f11(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input3.charCodeAt(peg$currPos) === 69) {
            s1 = peg$c10;
            peg$currPos++;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e11);
            }
          }
          if (s1 !== peg$FAILED) {
            s22 = peg$parsebraced_group();
            if (s22 !== peg$FAILED) {
              s32 = peg$parsebraced_group();
              if (s32 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f12(s22, s32);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
        return s0;
      }
      function peg$parseoptional_token() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 116) {
          s1 = peg$c11;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e12);
          }
        }
        if (s1 !== peg$FAILED) {
          if (input3.length > peg$currPos) {
            s22 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e2);
            }
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f13(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parserequired() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 82) {
          s1 = peg$c12;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e13);
          }
        }
        if (s1 !== peg$FAILED) {
          s22 = peg$parsebrace_spec();
          s32 = peg$parsebraced_group();
          if (s32 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f14(s22, s32);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input3.charCodeAt(peg$currPos) === 114) {
            s1 = peg$c13;
            peg$currPos++;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e14);
            }
          }
          if (s1 !== peg$FAILED) {
            s22 = peg$parsebrace_spec();
            peg$savedPos = s0;
            s0 = peg$f15(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
        return s0;
      }
      function peg$parseuntil() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 117) {
          s1 = peg$c14;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e15);
          }
        }
        if (s1 !== peg$FAILED) {
          s22 = peg$parseuntil_stop_token();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f16(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseuntil_stop_token() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        if (peg$r0.test(input3.charAt(peg$currPos))) {
          s22 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s22 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e16);
          }
        }
        peg$silentFails--;
        if (s22 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input3.length > peg$currPos) {
            s22 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e2);
            }
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f17(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parsebraced_group();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f18(s1);
          }
          s0 = s1;
        }
        return s0;
      }
      function peg$parsemandatory() {
        var s0, s1;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 109) {
          s1 = peg$c15;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e17);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f19();
        }
        s0 = s1;
        return s0;
      }
      function peg$parsebrace_spec() {
        var s0, s1, s22, s32, s42, s5;
        s0 = peg$currPos;
        s1 = peg$currPos;
        s22 = peg$currPos;
        s32 = peg$currPos;
        peg$silentFails++;
        s42 = peg$parsewhitespace_token();
        peg$silentFails--;
        if (s42 === peg$FAILED) {
          s32 = void 0;
        } else {
          peg$currPos = s32;
          s32 = peg$FAILED;
        }
        if (s32 !== peg$FAILED) {
          if (input3.length > peg$currPos) {
            s42 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s42 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e2);
            }
          }
          if (s42 !== peg$FAILED) {
            s32 = [s32, s42];
            s22 = s32;
          } else {
            peg$currPos = s22;
            s22 = peg$FAILED;
          }
        } else {
          peg$currPos = s22;
          s22 = peg$FAILED;
        }
        if (s22 === peg$FAILED) {
          s22 = null;
        }
        s1 = input3.substring(s1, peg$currPos);
        s22 = peg$currPos;
        s32 = peg$currPos;
        s42 = peg$currPos;
        peg$silentFails++;
        s5 = peg$parsewhitespace_token();
        peg$silentFails--;
        if (s5 === peg$FAILED) {
          s42 = void 0;
        } else {
          peg$currPos = s42;
          s42 = peg$FAILED;
        }
        if (s42 !== peg$FAILED) {
          if (input3.length > peg$currPos) {
            s5 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e2);
            }
          }
          if (s5 !== peg$FAILED) {
            s42 = [s42, s5];
            s32 = s42;
          } else {
            peg$currPos = s32;
            s32 = peg$FAILED;
          }
        } else {
          peg$currPos = s32;
          s32 = peg$FAILED;
        }
        if (s32 === peg$FAILED) {
          s32 = null;
        }
        s22 = input3.substring(s22, peg$currPos);
        peg$savedPos = s0;
        s0 = peg$f20(s1, s22);
        return s0;
      }
      function peg$parsebraced_group() {
        var s0, s1, s22, s32, s42, s5, s6, s7;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 123) {
          s1 = peg$c16;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e18);
          }
        }
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$currPos;
          s42 = peg$currPos;
          s5 = peg$currPos;
          peg$silentFails++;
          if (input3.charCodeAt(peg$currPos) === 125) {
            s6 = peg$c17;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e19);
            }
          }
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            s6 = peg$currPos;
            peg$silentFails++;
            s7 = peg$parsebraced_group();
            peg$silentFails--;
            if (s7 === peg$FAILED) {
              s6 = void 0;
            } else {
              peg$currPos = s6;
              s6 = peg$FAILED;
            }
            if (s6 !== peg$FAILED) {
              if (input3.length > peg$currPos) {
                s7 = input3.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e2);
                }
              }
              if (s7 !== peg$FAILED) {
                s5 = [s5, s6, s7];
                s42 = s5;
              } else {
                peg$currPos = s42;
                s42 = peg$FAILED;
              }
            } else {
              peg$currPos = s42;
              s42 = peg$FAILED;
            }
          } else {
            peg$currPos = s42;
            s42 = peg$FAILED;
          }
          if (s42 !== peg$FAILED) {
            s32 = input3.substring(s32, peg$currPos);
          } else {
            s32 = s42;
          }
          if (s32 === peg$FAILED) {
            s32 = peg$parsebraced_group();
          }
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$currPos;
            s42 = peg$currPos;
            s5 = peg$currPos;
            peg$silentFails++;
            if (input3.charCodeAt(peg$currPos) === 125) {
              s6 = peg$c17;
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e19);
              }
            }
            peg$silentFails--;
            if (s6 === peg$FAILED) {
              s5 = void 0;
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
            if (s5 !== peg$FAILED) {
              s6 = peg$currPos;
              peg$silentFails++;
              s7 = peg$parsebraced_group();
              peg$silentFails--;
              if (s7 === peg$FAILED) {
                s6 = void 0;
              } else {
                peg$currPos = s6;
                s6 = peg$FAILED;
              }
              if (s6 !== peg$FAILED) {
                if (input3.length > peg$currPos) {
                  s7 = input3.charAt(peg$currPos);
                  peg$currPos++;
                } else {
                  s7 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e2);
                  }
                }
                if (s7 !== peg$FAILED) {
                  s5 = [s5, s6, s7];
                  s42 = s5;
                } else {
                  peg$currPos = s42;
                  s42 = peg$FAILED;
                }
              } else {
                peg$currPos = s42;
                s42 = peg$FAILED;
              }
            } else {
              peg$currPos = s42;
              s42 = peg$FAILED;
            }
            if (s42 !== peg$FAILED) {
              s32 = input3.substring(s32, peg$currPos);
            } else {
              s32 = s42;
            }
            if (s32 === peg$FAILED) {
              s32 = peg$parsebraced_group();
            }
          }
          if (input3.charCodeAt(peg$currPos) === 125) {
            s32 = peg$c17;
            peg$currPos++;
          } else {
            s32 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e19);
            }
          }
          if (s32 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f21(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsewhitespace() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parsewhitespace_token();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parsewhitespace_token();
        }
        peg$savedPos = s0;
        s1 = peg$f22();
        s0 = s1;
        return s0;
      }
      function peg$parsewhitespace_token() {
        var s0;
        if (input3.charCodeAt(peg$currPos) === 32) {
          s0 = peg$c18;
          peg$currPos++;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e20);
          }
        }
        if (s0 === peg$FAILED) {
          if (input3.charCodeAt(peg$currPos) === 10) {
            s0 = peg$c19;
            peg$currPos++;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e21);
            }
          }
          if (s0 === peg$FAILED) {
            if (input3.charCodeAt(peg$currPos) === 13) {
              s0 = peg$c20;
              peg$currPos++;
            } else {
              s0 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e22);
              }
            }
          }
        }
        return s0;
      }
      const DEFAULT_OPTIONS = {
        optional: { openBrace: "[", closeBrace: "]" },
        mandatory: { openBrace: "{", closeBrace: "}" }
      };
      function createNode(type2, options2) {
        const computedOptions = DEFAULT_OPTIONS[type2] || {};
        return { type: type2, ...computedOptions, ...options2 };
      }
      peg$result = peg$startRuleFunction();
      if (peg$result !== peg$FAILED && peg$currPos === input3.length) {
        return peg$result;
      } else {
        if (peg$result !== peg$FAILED && peg$currPos < input3.length) {
          peg$fail(peg$endExpectation());
        }
        throw peg$buildStructuredError(
          peg$maxFailExpected,
          peg$maxFailPos < input3.length ? input3.charAt(peg$maxFailPos) : null,
          peg$maxFailPos < input3.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
        );
      }
    }
    return {
      SyntaxError: peg$SyntaxError,
      parse: peg$parse
    };
  })()
);
var pgfkeys_default = (
  // Generated by Peggy 2.0.1.
  //
  // https://peggyjs.org/
  (function() {
    "use strict";
    function peg$subclass(child, parent2) {
      function C() {
        this.constructor = child;
      }
      C.prototype = parent2.prototype;
      child.prototype = new C();
    }
    function peg$SyntaxError(message, expected, found2, location4) {
      var self2 = Error.call(this, message);
      if (Object.setPrototypeOf) {
        Object.setPrototypeOf(self2, peg$SyntaxError.prototype);
      }
      self2.expected = expected;
      self2.found = found2;
      self2.location = location4;
      self2.name = "SyntaxError";
      return self2;
    }
    peg$subclass(peg$SyntaxError, Error);
    function peg$padEnd(str2, targetLength, padString) {
      padString = padString || " ";
      if (str2.length > targetLength) {
        return str2;
      }
      targetLength -= str2.length;
      padString += padString.repeat(targetLength);
      return str2 + padString.slice(0, targetLength);
    }
    peg$SyntaxError.prototype.format = function(sources) {
      var str2 = "Error: " + this.message;
      if (this.location) {
        var src = null;
        var k;
        for (k = 0; k < sources.length; k++) {
          if (sources[k].source === this.location.source) {
            src = sources[k].text.split(/\r\n|\n|\r/g);
            break;
          }
        }
        var s5 = this.location.start;
        var loc = this.location.source + ":" + s5.line + ":" + s5.column;
        if (src) {
          var e2 = this.location.end;
          var filler = peg$padEnd("", s5.line.toString().length, " ");
          var line2 = src[s5.line - 1];
          var last = s5.line === e2.line ? e2.column : line2.length + 1;
          var hatLen = last - s5.column || 1;
          str2 += "\n --> " + loc + "\n" + filler + " |\n" + s5.line + " | " + line2 + "\n" + filler + " | " + peg$padEnd("", s5.column - 1, " ") + peg$padEnd("", hatLen, "^");
        } else {
          str2 += "\n at " + loc;
        }
      }
      return str2;
    };
    peg$SyntaxError.buildMessage = function(expected, found2) {
      var DESCRIBE_EXPECTATION_FNS = {
        literal: function(expectation) {
          return '"' + literalEscape(expectation.text) + '"';
        },
        class: function(expectation) {
          var escapedParts = expectation.parts.map(function(part) {
            return Array.isArray(part) ? classEscape(part[0]) + "-" + classEscape(part[1]) : classEscape(part);
          });
          return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
        },
        any: function() {
          return "any character";
        },
        end: function() {
          return "end of input";
        },
        other: function(expectation) {
          return expectation.description;
        }
      };
      function hex(ch) {
        return ch.charCodeAt(0).toString(16).toUpperCase();
      }
      function literalEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function classEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function describeExpectation(expectation) {
        return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
      }
      function describeExpected(expected2) {
        var descriptions = expected2.map(describeExpectation);
        var i2, j;
        descriptions.sort();
        if (descriptions.length > 0) {
          for (i2 = 1, j = 1; i2 < descriptions.length; i2++) {
            if (descriptions[i2 - 1] !== descriptions[i2]) {
              descriptions[j] = descriptions[i2];
              j++;
            }
          }
          descriptions.length = j;
        }
        switch (descriptions.length) {
          case 1:
            return descriptions[0];
          case 2:
            return descriptions[0] + " or " + descriptions[1];
          default:
            return descriptions.slice(0, -1).join(", ") + ", or " + descriptions[descriptions.length - 1];
        }
      }
      function describeFound(found22) {
        return found22 ? '"' + literalEscape(found22) + '"' : "end of input";
      }
      return "Expected " + describeExpected(expected) + " but " + describeFound(found2) + " found.";
    };
    function peg$parse(input3, options) {
      options = options !== void 0 ? options : {};
      var peg$FAILED = {};
      var peg$source = options.grammarSource;
      var peg$startRuleFunctions = { body: peg$parsebody };
      var peg$startRuleFunction = peg$parsebody;
      var peg$e0 = peg$anyExpectation();
      var peg$f0 = function() {
        return [];
      };
      var peg$f1 = function(rowItems, trailingComment) {
        return {
          itemParts: [],
          ...rowItems,
          trailingComment,
          trailingComma: true
        };
      };
      var peg$f2 = function(rowItems, trailingComment) {
        return { ...rowItems, trailingComment };
      };
      var peg$f3 = function(a2, b) {
        return processItem(a2, b);
      };
      var peg$f4 = function(b) {
        return processItem(null, b);
      };
      var peg$f5 = function(cell3) {
        return { cell: cell3 };
      };
      var peg$f6 = function() {
        return {};
      };
      var peg$f7 = function(part) {
        return part;
      };
      var peg$f8 = function(x2) {
        return x2;
      };
      var peg$f9 = function(space3, x2) {
        return {
          trailingComment: x2,
          leadingParbreak: space3.parbreak > 0
        };
      };
      var peg$f10 = function(list6) {
        return {
          whitespace: list6.filter((x2) => options.isWhitespace(x2)).length,
          parbreak: list6.filter((x2) => options.isParbreak(x2)).length
        };
      };
      var peg$f11 = function() {
        return !options.allowParenGroups;
      };
      var peg$f12 = function(tok) {
        return options.isSameLineComment(tok);
      };
      var peg$f13 = function(tok) {
        return tok;
      };
      var peg$f14 = function(tok) {
        return options.isOwnLineComment(tok);
      };
      var peg$f15 = function(tok) {
        return tok;
      };
      var peg$f16 = function(tok) {
        return options.isWhitespace(tok);
      };
      var peg$f17 = function(tok) {
        return tok;
      };
      var peg$f18 = function(tok) {
        return options.isParbreak(tok);
      };
      var peg$f19 = function(tok) {
        return tok;
      };
      var peg$f20 = function(tok) {
        return options.isComma(tok);
      };
      var peg$f21 = function(tok) {
        return tok;
      };
      var peg$f22 = function(tok) {
        return options.isEquals(tok);
      };
      var peg$f23 = function(tok) {
        return tok;
      };
      var peg$f24 = function(tok) {
        return options.isChar(tok, "(");
      };
      var peg$f25 = function(tok) {
        return tok;
      };
      var peg$f26 = function(tok) {
        return options.isChar(tok, ")");
      };
      var peg$f27 = function(tok) {
        return tok;
      };
      var peg$currPos = 0;
      var peg$savedPos = 0;
      var peg$posDetailsCache = [{ line: 1, column: 1 }];
      var peg$maxFailPos = 0;
      var peg$maxFailExpected = [];
      var peg$silentFails = 0;
      var peg$result;
      if ("startRule" in options) {
        if (!(options.startRule in peg$startRuleFunctions)) {
          throw new Error(`Can't start parsing from rule "` + options.startRule + '".');
        }
        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
      }
      function text7() {
        return input3.substring(peg$savedPos, peg$currPos);
      }
      function offset() {
        return peg$savedPos;
      }
      function range() {
        return {
          source: peg$source,
          start: peg$savedPos,
          end: peg$currPos
        };
      }
      function location4() {
        return peg$computeLocation(peg$savedPos, peg$currPos);
      }
      function expected(description, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildStructuredError(
          [peg$otherExpectation(description)],
          input3.substring(peg$savedPos, peg$currPos),
          location22
        );
      }
      function error(message, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildSimpleError(message, location22);
      }
      function peg$literalExpectation(text22, ignoreCase) {
        return { type: "literal", text: text22, ignoreCase };
      }
      function peg$classExpectation(parts, inverted, ignoreCase) {
        return { type: "class", parts, inverted, ignoreCase };
      }
      function peg$anyExpectation() {
        return { type: "any" };
      }
      function peg$endExpectation() {
        return { type: "end" };
      }
      function peg$otherExpectation(description) {
        return { type: "other", description };
      }
      function peg$computePosDetails(pos) {
        var details3 = peg$posDetailsCache[pos];
        var p5;
        if (details3) {
          return details3;
        } else {
          p5 = pos - 1;
          while (!peg$posDetailsCache[p5]) {
            p5--;
          }
          details3 = peg$posDetailsCache[p5];
          details3 = {
            line: details3.line,
            column: details3.column
          };
          while (p5 < pos) {
            if (input3.charCodeAt(p5) === 10) {
              details3.line++;
              details3.column = 1;
            } else {
              details3.column++;
            }
            p5++;
          }
          peg$posDetailsCache[pos] = details3;
          return details3;
        }
      }
      function peg$computeLocation(startPos, endPos) {
        var startPosDetails = peg$computePosDetails(startPos);
        var endPosDetails = peg$computePosDetails(endPos);
        return {
          source: peg$source,
          start: {
            offset: startPos,
            line: startPosDetails.line,
            column: startPosDetails.column
          },
          end: {
            offset: endPos,
            line: endPosDetails.line,
            column: endPosDetails.column
          }
        };
      }
      function peg$fail(expected2) {
        if (peg$currPos < peg$maxFailPos) {
          return;
        }
        if (peg$currPos > peg$maxFailPos) {
          peg$maxFailPos = peg$currPos;
          peg$maxFailExpected = [];
        }
        peg$maxFailExpected.push(expected2);
      }
      function peg$buildSimpleError(message, location22) {
        return new peg$SyntaxError(message, null, null, location22);
      }
      function peg$buildStructuredError(expected2, found2, location22) {
        return new peg$SyntaxError(
          peg$SyntaxError.buildMessage(expected2, found2),
          expected2,
          found2,
          location22
        );
      }
      function peg$parsebody() {
        var s0, s1, s22;
        s0 = [];
        s1 = peg$parsecomment_only_line();
        if (s1 === peg$FAILED) {
          s1 = peg$parseitem_with_end();
          if (s1 === peg$FAILED) {
            s1 = peg$parseitem_without_end();
          }
        }
        if (s1 !== peg$FAILED) {
          while (s1 !== peg$FAILED) {
            s0.push(s1);
            s1 = peg$parsecomment_only_line();
            if (s1 === peg$FAILED) {
              s1 = peg$parseitem_with_end();
              if (s1 === peg$FAILED) {
                s1 = peg$parseitem_without_end();
              }
            }
          }
        } else {
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = [];
          s22 = peg$parsewhitespace();
          while (s22 !== peg$FAILED) {
            s1.push(s22);
            s22 = peg$parsewhitespace();
          }
          s22 = peg$parseEOL();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f0();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
        return s0;
      }
      function peg$parseitem_with_end() {
        var s0, s1, s22, s32, s42, s5, s6, s7, s8;
        s0 = peg$currPos;
        s1 = peg$parsewhitespace_or_parbreaks();
        s22 = peg$parserow_items();
        if (s22 === peg$FAILED) {
          s22 = null;
        }
        s32 = peg$parsewhitespace_or_parbreaks();
        s42 = peg$parseitem_sep();
        if (s42 !== peg$FAILED) {
          s5 = [];
          s6 = peg$parsewhitespace();
          while (s6 !== peg$FAILED) {
            s5.push(s6);
            s6 = peg$parsewhitespace();
          }
          s6 = peg$parsetrailing_comment();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          s7 = [];
          s8 = peg$parsewhitespace();
          while (s8 !== peg$FAILED) {
            s7.push(s8);
            s8 = peg$parsewhitespace();
          }
          peg$savedPos = s0;
          s0 = peg$f1(s22, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseitem_without_end() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        s1 = peg$parsewhitespace_or_parbreaks();
        s22 = peg$parserow_items();
        if (s22 !== peg$FAILED) {
          s32 = peg$parsetrailing_comment();
          if (s32 === peg$FAILED) {
            s32 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f2(s22, s32);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parserow_items() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        s1 = peg$parseitem_part();
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$parseseparated_part();
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$parseseparated_part();
          }
          peg$savedPos = s0;
          s0 = peg$f3(s1, s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = [];
          s22 = peg$parseseparated_part();
          if (s22 !== peg$FAILED) {
            while (s22 !== peg$FAILED) {
              s1.push(s22);
              s22 = peg$parseseparated_part();
            }
          } else {
            s1 = peg$FAILED;
          }
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f4(s1);
          }
          s0 = s1;
        }
        return s0;
      }
      function peg$parseseparated_part() {
        var s0, s1, s22, s32, s42;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parseparbreak();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parseparbreak();
        }
        s22 = peg$parseequals();
        if (s22 !== peg$FAILED) {
          s32 = [];
          s42 = peg$parseparbreak();
          while (s42 !== peg$FAILED) {
            s32.push(s42);
            s42 = peg$parseparbreak();
          }
          s42 = peg$parseitem_part();
          if (s42 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f5(s42);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = [];
          s22 = peg$parseparbreak();
          while (s22 !== peg$FAILED) {
            s1.push(s22);
            s22 = peg$parseparbreak();
          }
          s22 = peg$parseequals();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f6();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
        return s0;
      }
      function peg$parseitem_part() {
        var s0, s1, s22, s32, s42, s5, s6, s7, s8, s9;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parsewhitespace();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parsewhitespace();
        }
        s22 = peg$currPos;
        s32 = [];
        s42 = peg$parsenon_whitespace_non_parbreak_token();
        if (s42 === peg$FAILED) {
          s42 = peg$currPos;
          s5 = peg$parsewhitespace();
          if (s5 === peg$FAILED) {
            s5 = peg$parseparbreak();
          }
          if (s5 !== peg$FAILED) {
            s6 = peg$currPos;
            peg$silentFails++;
            s7 = peg$currPos;
            s8 = [];
            s9 = peg$parsewhitespace();
            if (s9 === peg$FAILED) {
              s9 = peg$parseparbreak();
            }
            while (s9 !== peg$FAILED) {
              s8.push(s9);
              s9 = peg$parsewhitespace();
              if (s9 === peg$FAILED) {
                s9 = peg$parseparbreak();
              }
            }
            s9 = peg$parsenon_whitespace_non_parbreak_token();
            if (s9 !== peg$FAILED) {
              s8 = [s8, s9];
              s7 = s8;
            } else {
              peg$currPos = s7;
              s7 = peg$FAILED;
            }
            peg$silentFails--;
            if (s7 !== peg$FAILED) {
              peg$currPos = s6;
              s6 = void 0;
            } else {
              s6 = peg$FAILED;
            }
            if (s6 !== peg$FAILED) {
              s5 = [s5, s6];
              s42 = s5;
            } else {
              peg$currPos = s42;
              s42 = peg$FAILED;
            }
          } else {
            peg$currPos = s42;
            s42 = peg$FAILED;
          }
        }
        if (s42 !== peg$FAILED) {
          while (s42 !== peg$FAILED) {
            s32.push(s42);
            s42 = peg$parsenon_whitespace_non_parbreak_token();
            if (s42 === peg$FAILED) {
              s42 = peg$currPos;
              s5 = peg$parsewhitespace();
              if (s5 === peg$FAILED) {
                s5 = peg$parseparbreak();
              }
              if (s5 !== peg$FAILED) {
                s6 = peg$currPos;
                peg$silentFails++;
                s7 = peg$currPos;
                s8 = [];
                s9 = peg$parsewhitespace();
                if (s9 === peg$FAILED) {
                  s9 = peg$parseparbreak();
                }
                while (s9 !== peg$FAILED) {
                  s8.push(s9);
                  s9 = peg$parsewhitespace();
                  if (s9 === peg$FAILED) {
                    s9 = peg$parseparbreak();
                  }
                }
                s9 = peg$parsenon_whitespace_non_parbreak_token();
                if (s9 !== peg$FAILED) {
                  s8 = [s8, s9];
                  s7 = s8;
                } else {
                  peg$currPos = s7;
                  s7 = peg$FAILED;
                }
                peg$silentFails--;
                if (s7 !== peg$FAILED) {
                  peg$currPos = s6;
                  s6 = void 0;
                } else {
                  s6 = peg$FAILED;
                }
                if (s6 !== peg$FAILED) {
                  s5 = [s5, s6];
                  s42 = s5;
                } else {
                  peg$currPos = s42;
                  s42 = peg$FAILED;
                }
              } else {
                peg$currPos = s42;
                s42 = peg$FAILED;
              }
            }
          }
        } else {
          s32 = peg$FAILED;
        }
        if (s32 !== peg$FAILED) {
          s22 = input3.substring(s22, peg$currPos);
        } else {
          s22 = s32;
        }
        if (s22 !== peg$FAILED) {
          s32 = [];
          s42 = peg$parsewhitespace();
          while (s42 !== peg$FAILED) {
            s32.push(s42);
            s42 = peg$parsewhitespace();
          }
          peg$savedPos = s0;
          s0 = peg$f7(s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsetrailing_comment() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parsewhitespace();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parsewhitespace();
        }
        s22 = peg$parsesame_line_comment();
        if (s22 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f8(s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsecomment_only_line() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$parsewhitespace_or_parbreaks();
        s22 = peg$parseown_line_comment();
        if (s22 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f9(s1, s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsetoken() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        s1 = peg$currPos;
        s22 = peg$currPos;
        peg$silentFails++;
        s32 = peg$parsenon_token();
        peg$silentFails--;
        if (s32 === peg$FAILED) {
          s22 = void 0;
        } else {
          peg$currPos = s22;
          s22 = peg$FAILED;
        }
        if (s22 !== peg$FAILED) {
          if (input3.length > peg$currPos) {
            s32 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s32 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e0);
            }
          }
          if (s32 !== peg$FAILED) {
            s22 = [s22, s32];
            s1 = s22;
          } else {
            peg$currPos = s1;
            s1 = peg$FAILED;
          }
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          s0 = input3.substring(s0, peg$currPos);
        } else {
          s0 = s1;
        }
        return s0;
      }
      function peg$parsenon_whitespace_non_parbreak_token() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        s1 = peg$currPos;
        s22 = peg$currPos;
        peg$silentFails++;
        s32 = peg$parsewhitespace();
        if (s32 === peg$FAILED) {
          s32 = peg$parseparbreak();
        }
        peg$silentFails--;
        if (s32 === peg$FAILED) {
          s22 = void 0;
        } else {
          peg$currPos = s22;
          s22 = peg$FAILED;
        }
        if (s22 !== peg$FAILED) {
          s32 = peg$parseparen_block();
          if (s32 === peg$FAILED) {
            s32 = peg$parsetoken();
          }
          if (s32 !== peg$FAILED) {
            s22 = [s22, s32];
            s1 = s22;
          } else {
            peg$currPos = s1;
            s1 = peg$FAILED;
          }
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          s0 = input3.substring(s0, peg$currPos);
        } else {
          s0 = s1;
        }
        return s0;
      }
      function peg$parsenon_token() {
        var s0;
        s0 = peg$parseitem_sep();
        if (s0 === peg$FAILED) {
          s0 = peg$parseequals();
          if (s0 === peg$FAILED) {
            s0 = peg$parsetrailing_comment();
            if (s0 === peg$FAILED) {
              s0 = peg$parseown_line_comment();
            }
          }
        }
        return s0;
      }
      function peg$parsewhitespace_or_parbreaks() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parsewhitespace();
        if (s22 === peg$FAILED) {
          s22 = peg$parseparbreak();
        }
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parsewhitespace();
          if (s22 === peg$FAILED) {
            s22 = peg$parseparbreak();
          }
        }
        peg$savedPos = s0;
        s1 = peg$f10(s1);
        s0 = s1;
        return s0;
      }
      function peg$parseparen_block() {
        var s0, s1, s22, s32, s42, s5, s6, s7, s8;
        s0 = peg$currPos;
        peg$savedPos = peg$currPos;
        s1 = peg$f11();
        if (s1) {
          s1 = peg$FAILED;
        } else {
          s1 = void 0;
        }
        if (s1 !== peg$FAILED) {
          s22 = peg$currPos;
          s32 = peg$currPos;
          s42 = peg$parseopen_paren();
          if (s42 !== peg$FAILED) {
            s5 = [];
            s6 = peg$currPos;
            s7 = peg$currPos;
            peg$silentFails++;
            s8 = peg$parseclose_paren();
            peg$silentFails--;
            if (s8 === peg$FAILED) {
              s7 = void 0;
            } else {
              peg$currPos = s7;
              s7 = peg$FAILED;
            }
            if (s7 !== peg$FAILED) {
              if (input3.length > peg$currPos) {
                s8 = input3.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s8 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e0);
                }
              }
              if (s8 !== peg$FAILED) {
                s7 = [s7, s8];
                s6 = s7;
              } else {
                peg$currPos = s6;
                s6 = peg$FAILED;
              }
            } else {
              peg$currPos = s6;
              s6 = peg$FAILED;
            }
            while (s6 !== peg$FAILED) {
              s5.push(s6);
              s6 = peg$currPos;
              s7 = peg$currPos;
              peg$silentFails++;
              s8 = peg$parseclose_paren();
              peg$silentFails--;
              if (s8 === peg$FAILED) {
                s7 = void 0;
              } else {
                peg$currPos = s7;
                s7 = peg$FAILED;
              }
              if (s7 !== peg$FAILED) {
                if (input3.length > peg$currPos) {
                  s8 = input3.charAt(peg$currPos);
                  peg$currPos++;
                } else {
                  s8 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e0);
                  }
                }
                if (s8 !== peg$FAILED) {
                  s7 = [s7, s8];
                  s6 = s7;
                } else {
                  peg$currPos = s6;
                  s6 = peg$FAILED;
                }
              } else {
                peg$currPos = s6;
                s6 = peg$FAILED;
              }
            }
            s6 = peg$parseclose_paren();
            if (s6 !== peg$FAILED) {
              s42 = [s42, s5, s6];
              s32 = s42;
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          } else {
            peg$currPos = s32;
            s32 = peg$FAILED;
          }
          if (s32 !== peg$FAILED) {
            s22 = input3.substring(s22, peg$currPos);
          } else {
            s22 = s32;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsesame_line_comment() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f12(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f13(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseown_line_comment() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f14(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f15(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsewhitespace() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f16(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f17(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseparbreak() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f18(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f19(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseitem_sep() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f20(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f21(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseequals() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f22(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f23(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseopen_paren() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f24(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f25(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseclose_paren() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f26(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f27(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseEOL() {
        var s0, s1;
        s0 = peg$currPos;
        peg$silentFails++;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        peg$silentFails--;
        if (s1 === peg$FAILED) {
          s0 = void 0;
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function processItem(leadCell, otherCells) {
        const cells2 = [leadCell || []];
        for (const x2 of otherCells) {
          cells2.push(x2.cell || []);
        }
        return { itemParts: cells2 };
      }
      if (!options.isWhitespace) {
        try {
          Object.assign(options, {
            isChar: (node3, char) => node3.type === "string" && node3.content === char,
            isComma(node3) {
              return node3.type === "string" && node3.content === ",";
            },
            isEquals(node3) {
              return node3.type === "string" && node3.content === "=";
            },
            isParbreak(node3) {
              return node3.type === "parbreak";
            },
            isWhitespace(node3) {
              return node3.type === "whitespace";
            },
            isSameLineComment: (node3) => node3.type === "comment" && node3.sameline,
            isOwnLineComment: (node3) => node3.type === "comment" && !node3.sameline,
            isComment: (node3) => node3.type === "comment",
            allowParenGroups: true
          });
        } catch (e2) {
          console.warn("Error when initializing parser", e2);
        }
      }
      peg$result = peg$startRuleFunction();
      if (peg$result !== peg$FAILED && peg$currPos === input3.length) {
        return peg$result;
      } else {
        if (peg$result !== peg$FAILED && peg$currPos < input3.length) {
          peg$fail(peg$endExpectation());
        }
        throw peg$buildStructuredError(
          peg$maxFailExpected,
          peg$maxFailPos < input3.length ? input3.charAt(peg$maxFailPos) : null,
          peg$maxFailPos < input3.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
        );
      }
    }
    return {
      SyntaxError: peg$SyntaxError,
      parse: peg$parse
    };
  })()
);
var macro_substitutions_default = (
  // Generated by Peggy 2.0.1.
  //
  // https://peggyjs.org/
  (function() {
    "use strict";
    function peg$subclass(child, parent2) {
      function C() {
        this.constructor = child;
      }
      C.prototype = parent2.prototype;
      child.prototype = new C();
    }
    function peg$SyntaxError(message, expected, found2, location4) {
      var self2 = Error.call(this, message);
      if (Object.setPrototypeOf) {
        Object.setPrototypeOf(self2, peg$SyntaxError.prototype);
      }
      self2.expected = expected;
      self2.found = found2;
      self2.location = location4;
      self2.name = "SyntaxError";
      return self2;
    }
    peg$subclass(peg$SyntaxError, Error);
    function peg$padEnd(str2, targetLength, padString) {
      padString = padString || " ";
      if (str2.length > targetLength) {
        return str2;
      }
      targetLength -= str2.length;
      padString += padString.repeat(targetLength);
      return str2 + padString.slice(0, targetLength);
    }
    peg$SyntaxError.prototype.format = function(sources) {
      var str2 = "Error: " + this.message;
      if (this.location) {
        var src = null;
        var k;
        for (k = 0; k < sources.length; k++) {
          if (sources[k].source === this.location.source) {
            src = sources[k].text.split(/\r\n|\n|\r/g);
            break;
          }
        }
        var s5 = this.location.start;
        var loc = this.location.source + ":" + s5.line + ":" + s5.column;
        if (src) {
          var e2 = this.location.end;
          var filler = peg$padEnd("", s5.line.toString().length, " ");
          var line2 = src[s5.line - 1];
          var last = s5.line === e2.line ? e2.column : line2.length + 1;
          var hatLen = last - s5.column || 1;
          str2 += "\n --> " + loc + "\n" + filler + " |\n" + s5.line + " | " + line2 + "\n" + filler + " | " + peg$padEnd("", s5.column - 1, " ") + peg$padEnd("", hatLen, "^");
        } else {
          str2 += "\n at " + loc;
        }
      }
      return str2;
    };
    peg$SyntaxError.buildMessage = function(expected, found2) {
      var DESCRIBE_EXPECTATION_FNS = {
        literal: function(expectation) {
          return '"' + literalEscape(expectation.text) + '"';
        },
        class: function(expectation) {
          var escapedParts = expectation.parts.map(function(part) {
            return Array.isArray(part) ? classEscape(part[0]) + "-" + classEscape(part[1]) : classEscape(part);
          });
          return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
        },
        any: function() {
          return "any character";
        },
        end: function() {
          return "end of input";
        },
        other: function(expectation) {
          return expectation.description;
        }
      };
      function hex(ch) {
        return ch.charCodeAt(0).toString(16).toUpperCase();
      }
      function literalEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function classEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function describeExpectation(expectation) {
        return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
      }
      function describeExpected(expected2) {
        var descriptions = expected2.map(describeExpectation);
        var i2, j;
        descriptions.sort();
        if (descriptions.length > 0) {
          for (i2 = 1, j = 1; i2 < descriptions.length; i2++) {
            if (descriptions[i2 - 1] !== descriptions[i2]) {
              descriptions[j] = descriptions[i2];
              j++;
            }
          }
          descriptions.length = j;
        }
        switch (descriptions.length) {
          case 1:
            return descriptions[0];
          case 2:
            return descriptions[0] + " or " + descriptions[1];
          default:
            return descriptions.slice(0, -1).join(", ") + ", or " + descriptions[descriptions.length - 1];
        }
      }
      function describeFound(found22) {
        return found22 ? '"' + literalEscape(found22) + '"' : "end of input";
      }
      return "Expected " + describeExpected(expected) + " but " + describeFound(found2) + " found.";
    };
    function peg$parse(input3, options) {
      options = options !== void 0 ? options : {};
      var peg$FAILED = {};
      var peg$source = options.grammarSource;
      var peg$startRuleFunctions = { body: peg$parsebody };
      var peg$startRuleFunction = peg$parsebody;
      var peg$e0 = peg$anyExpectation();
      var peg$f0 = function(e2) {
        return [].concat(...e2).filter((n) => !!n);
      };
      var peg$f1 = function() {
        return [];
      };
      var peg$f2 = function(tok) {
        return options.isHash(tok);
      };
      var peg$f3 = function(tok) {
        return tok;
      };
      var peg$f4 = function(tok) {
        return options.isNumber(tok);
      };
      var peg$f5 = function(tok) {
        return tok;
      };
      var peg$f6 = function() {
        return { type: "string", content: "#" };
      };
      var peg$f7 = function(num) {
        const split2 = options.splitNumber(num);
        return [{ type: "hash_number", number: split2.number }, split2.rest];
      };
      var peg$currPos = 0;
      var peg$savedPos = 0;
      var peg$posDetailsCache = [{ line: 1, column: 1 }];
      var peg$maxFailPos = 0;
      var peg$maxFailExpected = [];
      var peg$silentFails = 0;
      var peg$result;
      if ("startRule" in options) {
        if (!(options.startRule in peg$startRuleFunctions)) {
          throw new Error(`Can't start parsing from rule "` + options.startRule + '".');
        }
        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
      }
      function text7() {
        return input3.substring(peg$savedPos, peg$currPos);
      }
      function offset() {
        return peg$savedPos;
      }
      function range() {
        return {
          source: peg$source,
          start: peg$savedPos,
          end: peg$currPos
        };
      }
      function location4() {
        return peg$computeLocation(peg$savedPos, peg$currPos);
      }
      function expected(description, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildStructuredError(
          [peg$otherExpectation(description)],
          input3.substring(peg$savedPos, peg$currPos),
          location22
        );
      }
      function error(message, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildSimpleError(message, location22);
      }
      function peg$literalExpectation(text22, ignoreCase) {
        return { type: "literal", text: text22, ignoreCase };
      }
      function peg$classExpectation(parts, inverted, ignoreCase) {
        return { type: "class", parts, inverted, ignoreCase };
      }
      function peg$anyExpectation() {
        return { type: "any" };
      }
      function peg$endExpectation() {
        return { type: "end" };
      }
      function peg$otherExpectation(description) {
        return { type: "other", description };
      }
      function peg$computePosDetails(pos) {
        var details3 = peg$posDetailsCache[pos];
        var p5;
        if (details3) {
          return details3;
        } else {
          p5 = pos - 1;
          while (!peg$posDetailsCache[p5]) {
            p5--;
          }
          details3 = peg$posDetailsCache[p5];
          details3 = {
            line: details3.line,
            column: details3.column
          };
          while (p5 < pos) {
            if (input3.charCodeAt(p5) === 10) {
              details3.line++;
              details3.column = 1;
            } else {
              details3.column++;
            }
            p5++;
          }
          peg$posDetailsCache[pos] = details3;
          return details3;
        }
      }
      function peg$computeLocation(startPos, endPos) {
        var startPosDetails = peg$computePosDetails(startPos);
        var endPosDetails = peg$computePosDetails(endPos);
        return {
          source: peg$source,
          start: {
            offset: startPos,
            line: startPosDetails.line,
            column: startPosDetails.column
          },
          end: {
            offset: endPos,
            line: endPosDetails.line,
            column: endPosDetails.column
          }
        };
      }
      function peg$fail(expected2) {
        if (peg$currPos < peg$maxFailPos) {
          return;
        }
        if (peg$currPos > peg$maxFailPos) {
          peg$maxFailPos = peg$currPos;
          peg$maxFailExpected = [];
        }
        peg$maxFailExpected.push(expected2);
      }
      function peg$buildSimpleError(message, location22) {
        return new peg$SyntaxError(message, null, null, location22);
      }
      function peg$buildStructuredError(expected2, found2, location22) {
        return new peg$SyntaxError(
          peg$SyntaxError.buildMessage(expected2, found2),
          expected2,
          found2,
          location22
        );
      }
      function peg$parsebody() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parsedouble_hash();
        if (s22 === peg$FAILED) {
          s22 = peg$parsehash_number();
          if (s22 === peg$FAILED) {
            if (input3.length > peg$currPos) {
              s22 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s22 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e0);
              }
            }
          }
        }
        if (s22 !== peg$FAILED) {
          while (s22 !== peg$FAILED) {
            s1.push(s22);
            s22 = peg$parsedouble_hash();
            if (s22 === peg$FAILED) {
              s22 = peg$parsehash_number();
              if (s22 === peg$FAILED) {
                if (input3.length > peg$currPos) {
                  s22 = input3.charAt(peg$currPos);
                  peg$currPos++;
                } else {
                  s22 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e0);
                  }
                }
              }
            }
          }
        } else {
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f0(s1);
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseEOL();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f1();
          }
          s0 = s1;
        }
        return s0;
      }
      function peg$parsehash() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f2(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f3(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsenumber() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f4(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f5(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsedouble_hash() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$parsehash();
        if (s1 !== peg$FAILED) {
          s22 = peg$parsehash();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f6();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsehash_number() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$parsehash();
        if (s1 !== peg$FAILED) {
          s22 = peg$parsenumber();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f7(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseEOL() {
        var s0, s1;
        s0 = peg$currPos;
        peg$silentFails++;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        peg$silentFails--;
        if (s1 === peg$FAILED) {
          s0 = void 0;
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      if (!options.isHash) {
        try {
          Object.assign(options, {
            isHash: (node3) => node3.type === "string" && node3.content === "#",
            isNumber: (node3) => node3.type === "string" && 0 < +node3.content.charAt(0),
            splitNumber: (node3) => {
              const number2 = +node3.content.charAt(0);
              if (node3.content.length > 1) {
                return {
                  number: number2,
                  rest: {
                    type: "string",
                    content: node3.content.slice(1)
                  }
                };
              }
              return { number: number2 };
            }
          });
        } catch (e2) {
          console.warn("Error when initializing parser", e2);
        }
      }
      peg$result = peg$startRuleFunction();
      if (peg$result !== peg$FAILED && peg$currPos === input3.length) {
        return peg$result;
      } else {
        if (peg$result !== peg$FAILED && peg$currPos < input3.length) {
          peg$fail(peg$endExpectation());
        }
        throw peg$buildStructuredError(
          peg$maxFailExpected,
          peg$maxFailPos < input3.length ? input3.charAt(peg$maxFailPos) : null,
          peg$maxFailPos < input3.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
        );
      }
    }
    return {
      SyntaxError: peg$SyntaxError,
      parse: peg$parse
    };
  })()
);
var ligatures_default = (
  // Generated by Peggy 2.0.1.
  //
  // https://peggyjs.org/
  (function() {
    "use strict";
    function peg$subclass(child, parent2) {
      function C() {
        this.constructor = child;
      }
      C.prototype = parent2.prototype;
      child.prototype = new C();
    }
    function peg$SyntaxError(message, expected, found2, location4) {
      var self2 = Error.call(this, message);
      if (Object.setPrototypeOf) {
        Object.setPrototypeOf(self2, peg$SyntaxError.prototype);
      }
      self2.expected = expected;
      self2.found = found2;
      self2.location = location4;
      self2.name = "SyntaxError";
      return self2;
    }
    peg$subclass(peg$SyntaxError, Error);
    function peg$padEnd(str2, targetLength, padString) {
      padString = padString || " ";
      if (str2.length > targetLength) {
        return str2;
      }
      targetLength -= str2.length;
      padString += padString.repeat(targetLength);
      return str2 + padString.slice(0, targetLength);
    }
    peg$SyntaxError.prototype.format = function(sources) {
      var str2 = "Error: " + this.message;
      if (this.location) {
        var src = null;
        var k;
        for (k = 0; k < sources.length; k++) {
          if (sources[k].source === this.location.source) {
            src = sources[k].text.split(/\r\n|\n|\r/g);
            break;
          }
        }
        var s5 = this.location.start;
        var loc = this.location.source + ":" + s5.line + ":" + s5.column;
        if (src) {
          var e2 = this.location.end;
          var filler = peg$padEnd("", s5.line.toString().length, " ");
          var line2 = src[s5.line - 1];
          var last = s5.line === e2.line ? e2.column : line2.length + 1;
          var hatLen = last - s5.column || 1;
          str2 += "\n --> " + loc + "\n" + filler + " |\n" + s5.line + " | " + line2 + "\n" + filler + " | " + peg$padEnd("", s5.column - 1, " ") + peg$padEnd("", hatLen, "^");
        } else {
          str2 += "\n at " + loc;
        }
      }
      return str2;
    };
    peg$SyntaxError.buildMessage = function(expected, found2) {
      var DESCRIBE_EXPECTATION_FNS = {
        literal: function(expectation) {
          return '"' + literalEscape(expectation.text) + '"';
        },
        class: function(expectation) {
          var escapedParts = expectation.parts.map(function(part) {
            return Array.isArray(part) ? classEscape(part[0]) + "-" + classEscape(part[1]) : classEscape(part);
          });
          return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
        },
        any: function() {
          return "any character";
        },
        end: function() {
          return "end of input";
        },
        other: function(expectation) {
          return expectation.description;
        }
      };
      function hex(ch) {
        return ch.charCodeAt(0).toString(16).toUpperCase();
      }
      function literalEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function classEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function describeExpectation(expectation) {
        return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
      }
      function describeExpected(expected2) {
        var descriptions = expected2.map(describeExpectation);
        var i2, j;
        descriptions.sort();
        if (descriptions.length > 0) {
          for (i2 = 1, j = 1; i2 < descriptions.length; i2++) {
            if (descriptions[i2 - 1] !== descriptions[i2]) {
              descriptions[j] = descriptions[i2];
              j++;
            }
          }
          descriptions.length = j;
        }
        switch (descriptions.length) {
          case 1:
            return descriptions[0];
          case 2:
            return descriptions[0] + " or " + descriptions[1];
          default:
            return descriptions.slice(0, -1).join(", ") + ", or " + descriptions[descriptions.length - 1];
        }
      }
      function describeFound(found22) {
        return found22 ? '"' + literalEscape(found22) + '"' : "end of input";
      }
      return "Expected " + describeExpected(expected) + " but " + describeFound(found2) + " found.";
    };
    function peg$parse(input3, options) {
      options = options !== void 0 ? options : {};
      var peg$FAILED = {};
      var peg$source = options.grammarSource;
      var peg$startRuleFunctions = { body: peg$parsebody };
      var peg$startRuleFunction = peg$parsebody;
      var peg$e0 = peg$anyExpectation();
      var peg$f0 = function(e2) {
        return [].concat(...e2).filter((n) => !!n);
      };
      var peg$f1 = function() {
        return [];
      };
      var peg$f2 = function(toks) {
        return options.isRecognized(toks);
      };
      var peg$f3 = function(toks) {
        return options.isRecognized(toks);
      };
      var peg$f4 = function(tok1, tok2) {
        const split2 = options.split(tok2);
        return options.isRecognized([tok1, split2[0]]);
      };
      var peg$f5 = function(tok1, tok2) {
        const split2 = options.split(tok2);
        return [options.isRecognized([tok1, split2[0]]), split2[1]];
      };
      var peg$f6 = function(tok1, tok2) {
        return options.isRecognized([tok1, tok2]);
      };
      var peg$f7 = function(tok1, tok2) {
        return options.isRecognized([tok1, tok2]);
      };
      var peg$f8 = function(toks) {
        return options.isRecognized(toks);
      };
      var peg$f9 = function(toks) {
        return options.isRecognized(toks);
      };
      var peg$f10 = function(tok) {
        return options.isRecognized([tok]);
      };
      var peg$f11 = function(tok) {
        return options.isRecognized([tok]);
      };
      var peg$f12 = function(tok) {
        return options.isMacro(tok);
      };
      var peg$f13 = function(tok) {
        return tok;
      };
      var peg$f14 = function(tok) {
        return options.isWhitespace(tok);
      };
      var peg$f15 = function(tok) {
        return tok;
      };
      var peg$f16 = function(tok) {
        return options.isSplitable(tok);
      };
      var peg$f17 = function(tok) {
        return tok;
      };
      var peg$currPos = 0;
      var peg$savedPos = 0;
      var peg$posDetailsCache = [{ line: 1, column: 1 }];
      var peg$maxFailPos = 0;
      var peg$maxFailExpected = [];
      var peg$silentFails = 0;
      var peg$result;
      if ("startRule" in options) {
        if (!(options.startRule in peg$startRuleFunctions)) {
          throw new Error(`Can't start parsing from rule "` + options.startRule + '".');
        }
        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
      }
      function text7() {
        return input3.substring(peg$savedPos, peg$currPos);
      }
      function offset() {
        return peg$savedPos;
      }
      function range() {
        return {
          source: peg$source,
          start: peg$savedPos,
          end: peg$currPos
        };
      }
      function location4() {
        return peg$computeLocation(peg$savedPos, peg$currPos);
      }
      function expected(description, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildStructuredError(
          [peg$otherExpectation(description)],
          input3.substring(peg$savedPos, peg$currPos),
          location22
        );
      }
      function error(message, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildSimpleError(message, location22);
      }
      function peg$literalExpectation(text22, ignoreCase) {
        return { type: "literal", text: text22, ignoreCase };
      }
      function peg$classExpectation(parts, inverted, ignoreCase) {
        return { type: "class", parts, inverted, ignoreCase };
      }
      function peg$anyExpectation() {
        return { type: "any" };
      }
      function peg$endExpectation() {
        return { type: "end" };
      }
      function peg$otherExpectation(description) {
        return { type: "other", description };
      }
      function peg$computePosDetails(pos) {
        var details3 = peg$posDetailsCache[pos];
        var p5;
        if (details3) {
          return details3;
        } else {
          p5 = pos - 1;
          while (!peg$posDetailsCache[p5]) {
            p5--;
          }
          details3 = peg$posDetailsCache[p5];
          details3 = {
            line: details3.line,
            column: details3.column
          };
          while (p5 < pos) {
            if (input3.charCodeAt(p5) === 10) {
              details3.line++;
              details3.column = 1;
            } else {
              details3.column++;
            }
            p5++;
          }
          peg$posDetailsCache[pos] = details3;
          return details3;
        }
      }
      function peg$computeLocation(startPos, endPos) {
        var startPosDetails = peg$computePosDetails(startPos);
        var endPosDetails = peg$computePosDetails(endPos);
        return {
          source: peg$source,
          start: {
            offset: startPos,
            line: startPosDetails.line,
            column: startPosDetails.column
          },
          end: {
            offset: endPos,
            line: endPosDetails.line,
            column: endPosDetails.column
          }
        };
      }
      function peg$fail(expected2) {
        if (peg$currPos < peg$maxFailPos) {
          return;
        }
        if (peg$currPos > peg$maxFailPos) {
          peg$maxFailPos = peg$currPos;
          peg$maxFailExpected = [];
        }
        peg$maxFailExpected.push(expected2);
      }
      function peg$buildSimpleError(message, location22) {
        return new peg$SyntaxError(message, null, null, location22);
      }
      function peg$buildStructuredError(expected2, found2, location22) {
        return new peg$SyntaxError(
          peg$SyntaxError.buildMessage(expected2, found2),
          expected2,
          found2,
          location22
        );
      }
      function peg$parsebody() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parsetriple_ligature();
        if (s22 === peg$FAILED) {
          s22 = peg$parsedouble_ligature();
          if (s22 === peg$FAILED) {
            s22 = peg$parsemono_ligature();
            if (s22 === peg$FAILED) {
              if (input3.length > peg$currPos) {
                s22 = input3.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s22 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e0);
                }
              }
            }
          }
        }
        if (s22 !== peg$FAILED) {
          while (s22 !== peg$FAILED) {
            s1.push(s22);
            s22 = peg$parsetriple_ligature();
            if (s22 === peg$FAILED) {
              s22 = peg$parsedouble_ligature();
              if (s22 === peg$FAILED) {
                s22 = peg$parsemono_ligature();
                if (s22 === peg$FAILED) {
                  if (input3.length > peg$currPos) {
                    s22 = input3.charAt(peg$currPos);
                    peg$currPos++;
                  } else {
                    s22 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e0);
                    }
                  }
                }
              }
            }
          }
        } else {
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f0(s1);
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseEOL();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f1();
          }
          s0 = s1;
        }
        return s0;
      }
      function peg$parsetriple_ligature() {
        var s0, s1, s22, s32, s42;
        s0 = peg$currPos;
        s1 = peg$currPos;
        if (input3.length > peg$currPos) {
          s22 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s22 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s22 !== peg$FAILED) {
          if (input3.length > peg$currPos) {
            s32 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s32 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e0);
            }
          }
          if (s32 !== peg$FAILED) {
            if (input3.length > peg$currPos) {
              s42 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s42 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e0);
              }
            }
            if (s42 !== peg$FAILED) {
              s22 = [s22, s32, s42];
              s1 = s22;
            } else {
              peg$currPos = s1;
              s1 = peg$FAILED;
            }
          } else {
            peg$currPos = s1;
            s1 = peg$FAILED;
          }
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f2(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f3(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsedouble_ligature() {
        var s0;
        s0 = peg$parsedouble_macro_ligature();
        if (s0 === peg$FAILED) {
          s0 = peg$parsedouble_macro_ligature_extracted();
          if (s0 === peg$FAILED) {
            s0 = peg$parsedouble_char_ligature();
          }
        }
        return s0;
      }
      function peg$parsedouble_macro_ligature_extracted() {
        var s0, s1, s22, s32, s42;
        s0 = peg$currPos;
        s1 = peg$parsemacro();
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$parsewhitespace();
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$parsewhitespace();
          }
          s32 = peg$parsesplitable();
          if (s32 !== peg$FAILED) {
            peg$savedPos = peg$currPos;
            s42 = peg$f4(s1, s32);
            if (s42) {
              s42 = void 0;
            } else {
              s42 = peg$FAILED;
            }
            if (s42 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f5(s1, s32);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsedouble_macro_ligature() {
        var s0, s1, s22, s32, s42;
        s0 = peg$currPos;
        s1 = peg$parsemacro();
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$parsewhitespace();
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$parsewhitespace();
          }
          if (input3.length > peg$currPos) {
            s32 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s32 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e0);
            }
          }
          if (s32 !== peg$FAILED) {
            peg$savedPos = peg$currPos;
            s42 = peg$f6(s1, s32);
            if (s42) {
              s42 = void 0;
            } else {
              s42 = peg$FAILED;
            }
            if (s42 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f7(s1, s32);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsedouble_char_ligature() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        s1 = peg$currPos;
        if (input3.length > peg$currPos) {
          s22 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s22 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s22 !== peg$FAILED) {
          if (input3.length > peg$currPos) {
            s32 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s32 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e0);
            }
          }
          if (s32 !== peg$FAILED) {
            s22 = [s22, s32];
            s1 = s22;
          } else {
            peg$currPos = s1;
            s1 = peg$FAILED;
          }
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f8(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f9(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsemono_ligature() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f10(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f11(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsemacro() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f12(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f13(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsewhitespace() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f14(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f15(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsesplitable() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f16(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f17(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseEOL() {
        var s0, s1;
        s0 = peg$currPos;
        peg$silentFails++;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        peg$silentFails--;
        if (s1 === peg$FAILED) {
          s0 = void 0;
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      if (!options.isWhitespace) {
        try {
          Object.assign(options, {
            isMacro: (node3) => node3.type === "macro",
            isWhitespace: (node3) => node3.type === "whitespace",
            isRecognized: (nodes) => {
              if (nodes.length == 2 && nodes[0].content === "^" && nodes[1].content === "o") {
                return { type: "string", content: "\xF4" };
              }
              return null;
            },
            isSplitable: (node3) => node3.type === "string" && node3.content.length > 1,
            split: (node3) => [
              { type: "string", content: node3.content.charAt(0) },
              { type: "string", content: node3.content.slice(1) }
            ]
          });
        } catch (e2) {
          console.warn("Error when initializing parser", e2);
        }
      }
      peg$result = peg$startRuleFunction();
      if (peg$result !== peg$FAILED && peg$currPos === input3.length) {
        return peg$result;
      } else {
        if (peg$result !== peg$FAILED && peg$currPos < input3.length) {
          peg$fail(peg$endExpectation());
        }
        throw peg$buildStructuredError(
          peg$maxFailExpected,
          peg$maxFailPos < input3.length ? input3.charAt(peg$maxFailPos) : null,
          peg$maxFailPos < input3.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
        );
      }
    }
    return {
      SyntaxError: peg$SyntaxError,
      parse: peg$parse
    };
  })()
);
var xcolor_expressions_default = (
  // Generated by Peggy 2.0.1.
  //
  // https://peggyjs.org/
  (function() {
    "use strict";
    function peg$subclass(child, parent2) {
      function C() {
        this.constructor = child;
      }
      C.prototype = parent2.prototype;
      child.prototype = new C();
    }
    function peg$SyntaxError(message, expected, found2, location4) {
      var self2 = Error.call(this, message);
      if (Object.setPrototypeOf) {
        Object.setPrototypeOf(self2, peg$SyntaxError.prototype);
      }
      self2.expected = expected;
      self2.found = found2;
      self2.location = location4;
      self2.name = "SyntaxError";
      return self2;
    }
    peg$subclass(peg$SyntaxError, Error);
    function peg$padEnd(str2, targetLength, padString) {
      padString = padString || " ";
      if (str2.length > targetLength) {
        return str2;
      }
      targetLength -= str2.length;
      padString += padString.repeat(targetLength);
      return str2 + padString.slice(0, targetLength);
    }
    peg$SyntaxError.prototype.format = function(sources) {
      var str2 = "Error: " + this.message;
      if (this.location) {
        var src = null;
        var k;
        for (k = 0; k < sources.length; k++) {
          if (sources[k].source === this.location.source) {
            src = sources[k].text.split(/\r\n|\n|\r/g);
            break;
          }
        }
        var s5 = this.location.start;
        var loc = this.location.source + ":" + s5.line + ":" + s5.column;
        if (src) {
          var e2 = this.location.end;
          var filler = peg$padEnd("", s5.line.toString().length, " ");
          var line2 = src[s5.line - 1];
          var last = s5.line === e2.line ? e2.column : line2.length + 1;
          var hatLen = last - s5.column || 1;
          str2 += "\n --> " + loc + "\n" + filler + " |\n" + s5.line + " | " + line2 + "\n" + filler + " | " + peg$padEnd("", s5.column - 1, " ") + peg$padEnd("", hatLen, "^");
        } else {
          str2 += "\n at " + loc;
        }
      }
      return str2;
    };
    peg$SyntaxError.buildMessage = function(expected, found2) {
      var DESCRIBE_EXPECTATION_FNS = {
        literal: function(expectation) {
          return '"' + literalEscape(expectation.text) + '"';
        },
        class: function(expectation) {
          var escapedParts = expectation.parts.map(function(part) {
            return Array.isArray(part) ? classEscape(part[0]) + "-" + classEscape(part[1]) : classEscape(part);
          });
          return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
        },
        any: function() {
          return "any character";
        },
        end: function() {
          return "end of input";
        },
        other: function(expectation) {
          return expectation.description;
        }
      };
      function hex(ch) {
        return ch.charCodeAt(0).toString(16).toUpperCase();
      }
      function literalEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function classEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function describeExpectation(expectation) {
        return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
      }
      function describeExpected(expected2) {
        var descriptions = expected2.map(describeExpectation);
        var i2, j;
        descriptions.sort();
        if (descriptions.length > 0) {
          for (i2 = 1, j = 1; i2 < descriptions.length; i2++) {
            if (descriptions[i2 - 1] !== descriptions[i2]) {
              descriptions[j] = descriptions[i2];
              j++;
            }
          }
          descriptions.length = j;
        }
        switch (descriptions.length) {
          case 1:
            return descriptions[0];
          case 2:
            return descriptions[0] + " or " + descriptions[1];
          default:
            return descriptions.slice(0, -1).join(", ") + ", or " + descriptions[descriptions.length - 1];
        }
      }
      function describeFound(found22) {
        return found22 ? '"' + literalEscape(found22) + '"' : "end of input";
      }
      return "Expected " + describeExpected(expected) + " but " + describeFound(found2) + " found.";
    };
    function peg$parse(input3, options) {
      options = options !== void 0 ? options : {};
      var peg$FAILED = {};
      var peg$source = options.grammarSource;
      var peg$startRuleFunctions = { start: peg$parsestart };
      var peg$startRuleFunction = peg$parsestart;
      var peg$c0 = ";";
      var peg$c1 = ",";
      var peg$c2 = ":";
      var peg$c3 = "/";
      var peg$c4 = ">";
      var peg$c5 = "!";
      var peg$c6 = ".";
      var peg$c7 = "!![";
      var peg$c8 = "]";
      var peg$c9 = "!!";
      var peg$c10 = "+";
      var peg$c11 = "-";
      var peg$r0 = /^[a-zA-Z0-9]/;
      var peg$r1 = /^[0-9]/;
      var peg$r2 = /^[ \t\n\r]/;
      var peg$r3 = /^[0-9a-fA-F]/;
      var peg$e0 = peg$anyExpectation();
      var peg$e1 = peg$literalExpectation(";", false);
      var peg$e2 = peg$literalExpectation(",", false);
      var peg$e3 = peg$otherExpectation("model list");
      var peg$e4 = peg$literalExpectation(":", false);
      var peg$e5 = peg$literalExpectation("/", false);
      var peg$e6 = peg$otherExpectation("model");
      var peg$e7 = peg$otherExpectation("color spec list");
      var peg$e8 = peg$otherExpectation("color spec");
      var peg$e9 = peg$otherExpectation("color");
      var peg$e10 = peg$otherExpectation("function expression");
      var peg$e11 = peg$literalExpectation(">", false);
      var peg$e12 = peg$otherExpectation("function");
      var peg$e13 = peg$otherExpectation("extended expression");
      var peg$e14 = peg$otherExpectation("core model");
      var peg$e15 = peg$otherExpectation("expr");
      var peg$e16 = peg$literalExpectation("!", false);
      var peg$e17 = peg$otherExpectation("mix expr");
      var peg$e18 = peg$otherExpectation("name");
      var peg$e19 = peg$literalExpectation(".", false);
      var peg$e20 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false);
      var peg$e21 = peg$otherExpectation("postfix");
      var peg$e22 = peg$literalExpectation("!![", false);
      var peg$e23 = peg$literalExpectation("]", false);
      var peg$e24 = peg$literalExpectation("!!", false);
      var peg$e25 = peg$otherExpectation("prefix");
      var peg$e26 = peg$otherExpectation("plus");
      var peg$e27 = peg$literalExpectation("+", false);
      var peg$e28 = peg$otherExpectation("minus");
      var peg$e29 = peg$literalExpectation("-", false);
      var peg$e30 = peg$otherExpectation("num");
      var peg$e31 = peg$classExpectation([["0", "9"]], false, false);
      var peg$e32 = peg$otherExpectation("positive float");
      var peg$e33 = peg$otherExpectation("divisor");
      var peg$e34 = peg$otherExpectation("int");
      var peg$e35 = peg$otherExpectation("whitespace");
      var peg$e36 = peg$classExpectation([" ", "	", "\n", "\r"], false, false);
      var peg$e37 = peg$classExpectation([["0", "9"], ["a", "f"], ["A", "F"]], false, false);
      var peg$f0 = function(m2) {
        return m2;
      };
      var peg$f1 = function(m2) {
        return m2;
      };
      var peg$f2 = function(m2) {
        return m2;
      };
      var peg$f3 = function(m2) {
        return m2;
      };
      var peg$f4 = function(m2) {
        return m2;
      };
      var peg$f5 = function(a2) {
        return { type: "invalid_spec", content: a2 };
      };
      var peg$f6 = function(f3, c) {
        return c;
      };
      var peg$f7 = function(f3, r2) {
        return { type: "color_set", content: [f3].concat(r2) };
      };
      var peg$f8 = function(n, s5) {
        return { type: "color_set_item", name: n, spec_list: s5 };
      };
      var peg$f9 = function(c, m2) {
        return { type: "model_list", contents: m2, core_model: c };
      };
      var peg$f10 = function(m2) {
        return { type: "model_list", contents: m2, core_model: null };
      };
      var peg$f11 = function(m2, a2) {
        return a2;
      };
      var peg$f12 = function(m2, r2) {
        return [m2].concat(r2);
      };
      var peg$f13 = function(s5, a2) {
        return a2;
      };
      var peg$f14 = function(s5, r2) {
        return { type: "spec_list", content: [s5].concat(r2) };
      };
      var peg$f15 = function(c) {
        return { type: "hex_spec", content: [c] };
      };
      var peg$f16 = function(c, d) {
        return d;
      };
      var peg$f17 = function(c, d) {
        return d;
      };
      var peg$f18 = function(c, r2) {
        return { type: "num_spec", content: r2 ? [c].concat(r2) : [c] };
      };
      var peg$f19 = function(c, fs50) {
        return { type: "color", color: c, functions: fs50 };
      };
      var peg$f20 = function(f3, n) {
        return n;
      };
      var peg$f21 = function(f3, args) {
        return { type: "function", name: f3, args };
      };
      var peg$f22 = function(core4, d, e2, es) {
        return {
          type: "extended_expr",
          core_model: core4,
          div: d,
          expressions: [e2].concat(es)
        };
      };
      var peg$f23 = function(core4, e2, es) {
        return {
          type: "extended_expr",
          core_model: core4,
          div: null,
          expressions: [e2].concat(es)
        };
      };
      var peg$f24 = function(e2, d) {
        return { type: "weighted_expr", color: e2, weight: d };
      };
      var peg$f25 = function(e2) {
        return e2;
      };
      var peg$f26 = function(p5, n, e2, po) {
        return {
          type: "expr",
          prefix: p5,
          name: n,
          mix_expr: e2,
          postfix: po
        };
      };
      var peg$f27 = function(p5, n) {
        return { type: "complete_mix", mix_percent: p5, name: n };
      };
      var peg$f28 = function(p5) {
        return { type: "partial_mix", mix_percent: p5 };
      };
      var peg$f29 = function(c, p5) {
        return c.concat(p5 || []);
      };
      var peg$f30 = function(n) {
        return { type: "postfix", num: n };
      };
      var peg$f31 = function(p5) {
        return { type: "postfix", plusses: p5 };
      };
      var peg$f32 = function(n) {
        return parseInt(n, 10);
      };
      var peg$f33 = function(n) {
        return parseFloat(n);
      };
      var peg$f34 = function(n) {
        return n;
      };
      var peg$f35 = function(n) {
        return -n;
      };
      var peg$f36 = function(m2, n) {
        return m2 ? -n : n;
      };
      var peg$f37 = function(h4) {
        return h4.toUpperCase();
      };
      var peg$currPos = 0;
      var peg$savedPos = 0;
      var peg$posDetailsCache = [{ line: 1, column: 1 }];
      var peg$maxFailPos = 0;
      var peg$maxFailExpected = [];
      var peg$silentFails = 0;
      var peg$result;
      if ("startRule" in options) {
        if (!(options.startRule in peg$startRuleFunctions)) {
          throw new Error(`Can't start parsing from rule "` + options.startRule + '".');
        }
        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
      }
      function text7() {
        return input3.substring(peg$savedPos, peg$currPos);
      }
      function offset() {
        return peg$savedPos;
      }
      function range() {
        return {
          source: peg$source,
          start: peg$savedPos,
          end: peg$currPos
        };
      }
      function location4() {
        return peg$computeLocation(peg$savedPos, peg$currPos);
      }
      function expected(description, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildStructuredError(
          [peg$otherExpectation(description)],
          input3.substring(peg$savedPos, peg$currPos),
          location22
        );
      }
      function error(message, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildSimpleError(message, location22);
      }
      function peg$literalExpectation(text22, ignoreCase) {
        return { type: "literal", text: text22, ignoreCase };
      }
      function peg$classExpectation(parts, inverted, ignoreCase) {
        return { type: "class", parts, inverted, ignoreCase };
      }
      function peg$anyExpectation() {
        return { type: "any" };
      }
      function peg$endExpectation() {
        return { type: "end" };
      }
      function peg$otherExpectation(description) {
        return { type: "other", description };
      }
      function peg$computePosDetails(pos) {
        var details3 = peg$posDetailsCache[pos];
        var p5;
        if (details3) {
          return details3;
        } else {
          p5 = pos - 1;
          while (!peg$posDetailsCache[p5]) {
            p5--;
          }
          details3 = peg$posDetailsCache[p5];
          details3 = {
            line: details3.line,
            column: details3.column
          };
          while (p5 < pos) {
            if (input3.charCodeAt(p5) === 10) {
              details3.line++;
              details3.column = 1;
            } else {
              details3.column++;
            }
            p5++;
          }
          peg$posDetailsCache[pos] = details3;
          return details3;
        }
      }
      function peg$computeLocation(startPos, endPos) {
        var startPosDetails = peg$computePosDetails(startPos);
        var endPosDetails = peg$computePosDetails(endPos);
        return {
          source: peg$source,
          start: {
            offset: startPos,
            line: startPosDetails.line,
            column: startPosDetails.column
          },
          end: {
            offset: endPos,
            line: endPosDetails.line,
            column: endPosDetails.column
          }
        };
      }
      function peg$fail(expected2) {
        if (peg$currPos < peg$maxFailPos) {
          return;
        }
        if (peg$currPos > peg$maxFailPos) {
          peg$maxFailPos = peg$currPos;
          peg$maxFailExpected = [];
        }
        peg$maxFailExpected.push(expected2);
      }
      function peg$buildSimpleError(message, location22) {
        return new peg$SyntaxError(message, null, null, location22);
      }
      function peg$buildStructuredError(expected2, found2, location22) {
        return new peg$SyntaxError(
          peg$SyntaxError.buildMessage(expected2, found2),
          expected2,
          found2,
          location22
        );
      }
      function peg$parsestart() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        s1 = peg$parsespec();
        if (s1 !== peg$FAILED) {
          s22 = peg$parseEOL();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f0(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parsespec_list();
          if (s1 !== peg$FAILED) {
            s22 = peg$parseEOL();
            if (s22 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f1(s1);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parsecolor();
            if (s1 !== peg$FAILED) {
              s22 = peg$parseEOL();
              if (s22 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f2(s1);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parsemodel_list();
              if (s1 !== peg$FAILED) {
                s22 = peg$parseEOL();
                if (s22 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f3(s1);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parsecolor_set_spec();
                if (s1 !== peg$FAILED) {
                  s22 = peg$parseEOL();
                  if (s22 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f4(s1);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$currPos;
                  s22 = [];
                  if (input3.length > peg$currPos) {
                    s32 = input3.charAt(peg$currPos);
                    peg$currPos++;
                  } else {
                    s32 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e0);
                    }
                  }
                  while (s32 !== peg$FAILED) {
                    s22.push(s32);
                    if (input3.length > peg$currPos) {
                      s32 = input3.charAt(peg$currPos);
                      peg$currPos++;
                    } else {
                      s32 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e0);
                      }
                    }
                  }
                  s1 = input3.substring(s1, peg$currPos);
                  peg$savedPos = s0;
                  s1 = peg$f5(s1);
                  s0 = s1;
                }
              }
            }
          }
        }
        return s0;
      }
      function peg$parsecolor_set_spec() {
        var s0, s1, s22, s32, s42, s5;
        s0 = peg$currPos;
        s1 = peg$parsecolor_set_item();
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$currPos;
          if (input3.charCodeAt(peg$currPos) === 59) {
            s42 = peg$c0;
            peg$currPos++;
          } else {
            s42 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e1);
            }
          }
          if (s42 !== peg$FAILED) {
            s5 = peg$parsecolor_set_item();
            if (s5 !== peg$FAILED) {
              peg$savedPos = s32;
              s32 = peg$f6(s1, s5);
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          } else {
            peg$currPos = s32;
            s32 = peg$FAILED;
          }
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$currPos;
            if (input3.charCodeAt(peg$currPos) === 59) {
              s42 = peg$c0;
              peg$currPos++;
            } else {
              s42 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e1);
              }
            }
            if (s42 !== peg$FAILED) {
              s5 = peg$parsecolor_set_item();
              if (s5 !== peg$FAILED) {
                peg$savedPos = s32;
                s32 = peg$f6(s1, s5);
              } else {
                peg$currPos = s32;
                s32 = peg$FAILED;
              }
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          }
          peg$savedPos = s0;
          s0 = peg$f7(s1, s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsecolor_set_item() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        s1 = peg$parsename();
        if (s1 !== peg$FAILED) {
          if (input3.charCodeAt(peg$currPos) === 44) {
            s22 = peg$c1;
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e2);
            }
          }
          if (s22 !== peg$FAILED) {
            s32 = peg$parsespec_list();
            if (s32 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f8(s1, s32);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsemodel_list() {
        var s0, s1, s22, s32;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parsecore_model();
        if (s1 !== peg$FAILED) {
          if (input3.charCodeAt(peg$currPos) === 58) {
            s22 = peg$c2;
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e4);
            }
          }
          if (s22 !== peg$FAILED) {
            s32 = peg$parsemodel_list_tail();
            if (s32 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f9(s1, s32);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parsemodel_list_tail();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f10(s1);
          }
          s0 = s1;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        return s0;
      }
      function peg$parsemodel_list_tail() {
        var s0, s1, s22, s32, s42, s5;
        s0 = peg$currPos;
        s1 = peg$parsemodel();
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$currPos;
          if (input3.charCodeAt(peg$currPos) === 47) {
            s42 = peg$c3;
            peg$currPos++;
          } else {
            s42 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e5);
            }
          }
          if (s42 !== peg$FAILED) {
            s5 = peg$parsemodel();
            if (s5 !== peg$FAILED) {
              peg$savedPos = s32;
              s32 = peg$f11(s1, s5);
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          } else {
            peg$currPos = s32;
            s32 = peg$FAILED;
          }
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$currPos;
            if (input3.charCodeAt(peg$currPos) === 47) {
              s42 = peg$c3;
              peg$currPos++;
            } else {
              s42 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e5);
              }
            }
            if (s42 !== peg$FAILED) {
              s5 = peg$parsemodel();
              if (s5 !== peg$FAILED) {
                peg$savedPos = s32;
                s32 = peg$f11(s1, s5);
              } else {
                peg$currPos = s32;
                s32 = peg$FAILED;
              }
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          }
          peg$savedPos = s0;
          s0 = peg$f12(s1, s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsemodel() {
        var s0, s1;
        peg$silentFails++;
        s0 = peg$parsecore_model();
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        return s0;
      }
      function peg$parsespec_list() {
        var s0, s1, s22, s32, s42, s5;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parsespec();
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$currPos;
          if (input3.charCodeAt(peg$currPos) === 47) {
            s42 = peg$c3;
            peg$currPos++;
          } else {
            s42 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e5);
            }
          }
          if (s42 !== peg$FAILED) {
            s5 = peg$parsespec();
            if (s5 !== peg$FAILED) {
              peg$savedPos = s32;
              s32 = peg$f13(s1, s5);
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          } else {
            peg$currPos = s32;
            s32 = peg$FAILED;
          }
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$currPos;
            if (input3.charCodeAt(peg$currPos) === 47) {
              s42 = peg$c3;
              peg$currPos++;
            } else {
              s42 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e5);
              }
            }
            if (s42 !== peg$FAILED) {
              s5 = peg$parsespec();
              if (s5 !== peg$FAILED) {
                peg$savedPos = s32;
                s32 = peg$f13(s1, s5);
              } else {
                peg$currPos = s32;
                s32 = peg$FAILED;
              }
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
          }
          peg$savedPos = s0;
          s0 = peg$f14(s1, s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e7);
          }
        }
        return s0;
      }
      function peg$parsespec() {
        var s0, s1, s22, s32, s42, s5, s6, s7, s8;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$currPos;
        s22 = peg$currPos;
        s32 = peg$parsehex();
        if (s32 !== peg$FAILED) {
          s42 = peg$parsehex();
          if (s42 !== peg$FAILED) {
            s5 = peg$parsehex();
            if (s5 !== peg$FAILED) {
              s6 = peg$parsehex();
              if (s6 !== peg$FAILED) {
                s7 = peg$parsehex();
                if (s7 !== peg$FAILED) {
                  s8 = peg$parsehex();
                  if (s8 !== peg$FAILED) {
                    s32 = [s32, s42, s5, s6, s7, s8];
                    s22 = s32;
                  } else {
                    peg$currPos = s22;
                    s22 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s22;
                  s22 = peg$FAILED;
                }
              } else {
                peg$currPos = s22;
                s22 = peg$FAILED;
              }
            } else {
              peg$currPos = s22;
              s22 = peg$FAILED;
            }
          } else {
            peg$currPos = s22;
            s22 = peg$FAILED;
          }
        } else {
          peg$currPos = s22;
          s22 = peg$FAILED;
        }
        if (s22 !== peg$FAILED) {
          s1 = input3.substring(s1, peg$currPos);
        } else {
          s1 = s22;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f15(s1);
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parsedec();
          if (s1 !== peg$FAILED) {
            s22 = [];
            s32 = peg$currPos;
            if (input3.charCodeAt(peg$currPos) === 44) {
              s42 = peg$c1;
              peg$currPos++;
            } else {
              s42 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e2);
              }
            }
            if (s42 !== peg$FAILED) {
              s5 = peg$parsedec();
              if (s5 !== peg$FAILED) {
                peg$savedPos = s32;
                s32 = peg$f16(s1, s5);
              } else {
                peg$currPos = s32;
                s32 = peg$FAILED;
              }
            } else {
              peg$currPos = s32;
              s32 = peg$FAILED;
            }
            if (s32 !== peg$FAILED) {
              while (s32 !== peg$FAILED) {
                s22.push(s32);
                s32 = peg$currPos;
                if (input3.charCodeAt(peg$currPos) === 44) {
                  s42 = peg$c1;
                  peg$currPos++;
                } else {
                  s42 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e2);
                  }
                }
                if (s42 !== peg$FAILED) {
                  s5 = peg$parsedec();
                  if (s5 !== peg$FAILED) {
                    peg$savedPos = s32;
                    s32 = peg$f16(s1, s5);
                  } else {
                    peg$currPos = s32;
                    s32 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s32;
                  s32 = peg$FAILED;
                }
              }
            } else {
              s22 = peg$FAILED;
            }
            if (s22 === peg$FAILED) {
              s22 = [];
              s32 = peg$currPos;
              s42 = peg$parsesp();
              if (s42 !== peg$FAILED) {
                s5 = peg$parsedec();
                if (s5 !== peg$FAILED) {
                  peg$savedPos = s32;
                  s32 = peg$f17(s1, s5);
                } else {
                  peg$currPos = s32;
                  s32 = peg$FAILED;
                }
              } else {
                peg$currPos = s32;
                s32 = peg$FAILED;
              }
              if (s32 !== peg$FAILED) {
                while (s32 !== peg$FAILED) {
                  s22.push(s32);
                  s32 = peg$currPos;
                  s42 = peg$parsesp();
                  if (s42 !== peg$FAILED) {
                    s5 = peg$parsedec();
                    if (s5 !== peg$FAILED) {
                      peg$savedPos = s32;
                      s32 = peg$f17(s1, s5);
                    } else {
                      peg$currPos = s32;
                      s32 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s32;
                    s32 = peg$FAILED;
                  }
                }
              } else {
                s22 = peg$FAILED;
              }
            }
            if (s22 === peg$FAILED) {
              s22 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f18(s1, s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        return s0;
      }
      function peg$parsecolor() {
        var s0, s1, s22, s32;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parsecolor_expr();
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$parsefunc_expr();
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$parsefunc_expr();
          }
          peg$savedPos = s0;
          s0 = peg$f19(s1, s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e9);
          }
        }
        return s0;
      }
      function peg$parsecolor_expr() {
        var s0;
        s0 = peg$parseext_expr();
        if (s0 === peg$FAILED) {
          s0 = peg$parseexpr();
          if (s0 === peg$FAILED) {
            s0 = peg$parsename();
          }
        }
        return s0;
      }
      function peg$parsefunc_expr() {
        var s0, s1, s22, s32, s42, s5, s6;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 62) {
          s1 = peg$c4;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e11);
          }
        }
        if (s1 !== peg$FAILED) {
          s22 = peg$parsefunction();
          if (s22 !== peg$FAILED) {
            s32 = [];
            s42 = peg$currPos;
            if (input3.charCodeAt(peg$currPos) === 44) {
              s5 = peg$c1;
              peg$currPos++;
            } else {
              s5 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e2);
              }
            }
            if (s5 !== peg$FAILED) {
              s6 = peg$parseint();
              if (s6 !== peg$FAILED) {
                peg$savedPos = s42;
                s42 = peg$f20(s22, s6);
              } else {
                peg$currPos = s42;
                s42 = peg$FAILED;
              }
            } else {
              peg$currPos = s42;
              s42 = peg$FAILED;
            }
            while (s42 !== peg$FAILED) {
              s32.push(s42);
              s42 = peg$currPos;
              if (input3.charCodeAt(peg$currPos) === 44) {
                s5 = peg$c1;
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e2);
                }
              }
              if (s5 !== peg$FAILED) {
                s6 = peg$parseint();
                if (s6 !== peg$FAILED) {
                  peg$savedPos = s42;
                  s42 = peg$f20(s22, s6);
                } else {
                  peg$currPos = s42;
                  s42 = peg$FAILED;
                }
              } else {
                peg$currPos = s42;
                s42 = peg$FAILED;
              }
            }
            peg$savedPos = s0;
            s0 = peg$f21(s22, s32);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e10);
          }
        }
        return s0;
      }
      function peg$parsefunction() {
        var s0, s1;
        peg$silentFails++;
        s0 = peg$parsename();
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e12);
          }
        }
        return s0;
      }
      function peg$parseext_expr() {
        var s0, s1, s22, s32, s42, s5, s6, s7;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parsecore_model();
        if (s1 !== peg$FAILED) {
          if (input3.charCodeAt(peg$currPos) === 44) {
            s22 = peg$c1;
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e2);
            }
          }
          if (s22 !== peg$FAILED) {
            s32 = peg$parsediv();
            if (s32 !== peg$FAILED) {
              if (input3.charCodeAt(peg$currPos) === 58) {
                s42 = peg$c2;
                peg$currPos++;
              } else {
                s42 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e4);
                }
              }
              if (s42 !== peg$FAILED) {
                s5 = peg$parseweighted_expr();
                if (s5 !== peg$FAILED) {
                  s6 = [];
                  s7 = peg$parseadditional_weighted_expr();
                  while (s7 !== peg$FAILED) {
                    s6.push(s7);
                    s7 = peg$parseadditional_weighted_expr();
                  }
                  peg$savedPos = s0;
                  s0 = peg$f22(s1, s32, s5, s6);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parsecore_model();
          if (s1 !== peg$FAILED) {
            if (input3.charCodeAt(peg$currPos) === 58) {
              s22 = peg$c2;
              peg$currPos++;
            } else {
              s22 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e4);
              }
            }
            if (s22 !== peg$FAILED) {
              s32 = peg$parseweighted_expr();
              if (s32 !== peg$FAILED) {
                s42 = [];
                s5 = peg$parseadditional_weighted_expr();
                while (s5 !== peg$FAILED) {
                  s42.push(s5);
                  s5 = peg$parseadditional_weighted_expr();
                }
                peg$savedPos = s0;
                s0 = peg$f23(s1, s32, s42);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e13);
          }
        }
        return s0;
      }
      function peg$parseweighted_expr() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        s1 = peg$parseexpr();
        if (s1 !== peg$FAILED) {
          if (input3.charCodeAt(peg$currPos) === 44) {
            s22 = peg$c1;
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e2);
            }
          }
          if (s22 !== peg$FAILED) {
            s32 = peg$parsedec();
            if (s32 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f24(s1, s32);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseadditional_weighted_expr() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 59) {
          s1 = peg$c0;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e1);
          }
        }
        if (s1 !== peg$FAILED) {
          s22 = peg$parseweighted_expr();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f25(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsecore_model() {
        var s0, s1;
        peg$silentFails++;
        s0 = peg$parsename();
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e14);
          }
        }
        return s0;
      }
      function peg$parseexpr() {
        var s0, s1, s22, s32, s42;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parseprefix();
        s22 = peg$parsename();
        if (s22 !== peg$FAILED) {
          s32 = peg$parsemix_expr();
          s42 = peg$parsepostfix();
          if (s42 === peg$FAILED) {
            s42 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f26(s1, s22, s32, s42);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e15);
          }
        }
        return s0;
      }
      function peg$parsecomplete_mix() {
        var s0, s1, s22, s32, s42;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 33) {
          s1 = peg$c5;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e16);
          }
        }
        if (s1 !== peg$FAILED) {
          s22 = peg$parsepct();
          if (s22 !== peg$FAILED) {
            if (input3.charCodeAt(peg$currPos) === 33) {
              s32 = peg$c5;
              peg$currPos++;
            } else {
              s32 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e16);
              }
            }
            if (s32 !== peg$FAILED) {
              s42 = peg$parsename();
              if (s42 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f27(s22, s42);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsepartial_mix() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.charCodeAt(peg$currPos) === 33) {
          s1 = peg$c5;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e16);
          }
        }
        if (s1 !== peg$FAILED) {
          s22 = peg$parsepct();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f28(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsemix_expr() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parsecomplete_mix();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parsecomplete_mix();
        }
        s22 = peg$parsepartial_mix();
        if (s22 === peg$FAILED) {
          s22 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f29(s1, s22);
        peg$silentFails--;
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e17);
        }
        return s0;
      }
      function peg$parsename() {
        var s0, s1, s22;
        peg$silentFails++;
        if (input3.charCodeAt(peg$currPos) === 46) {
          s0 = peg$c6;
          peg$currPos++;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e19);
          }
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = [];
          if (peg$r0.test(input3.charAt(peg$currPos))) {
            s22 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e20);
            }
          }
          if (s22 !== peg$FAILED) {
            while (s22 !== peg$FAILED) {
              s1.push(s22);
              if (peg$r0.test(input3.charAt(peg$currPos))) {
                s22 = input3.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s22 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e20);
                }
              }
            }
          } else {
            s1 = peg$FAILED;
          }
          if (s1 !== peg$FAILED) {
            s0 = input3.substring(s0, peg$currPos);
          } else {
            s0 = s1;
          }
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e18);
          }
        }
        return s0;
      }
      function peg$parsepostfix() {
        var s0, s1, s22, s32, s42;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.substr(peg$currPos, 3) === peg$c7) {
          s1 = peg$c7;
          peg$currPos += 3;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e22);
          }
        }
        if (s1 !== peg$FAILED) {
          s22 = peg$parsenum();
          if (s22 !== peg$FAILED) {
            if (input3.charCodeAt(peg$currPos) === 93) {
              s32 = peg$c8;
              peg$currPos++;
            } else {
              s32 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e23);
              }
            }
            if (s32 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f30(s22);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input3.substr(peg$currPos, 2) === peg$c9) {
            s1 = peg$c9;
            peg$currPos += 2;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e24);
            }
          }
          if (s1 !== peg$FAILED) {
            s22 = peg$currPos;
            s32 = [];
            s42 = peg$parseplus();
            if (s42 !== peg$FAILED) {
              while (s42 !== peg$FAILED) {
                s32.push(s42);
                s42 = peg$parseplus();
              }
            } else {
              s32 = peg$FAILED;
            }
            if (s32 !== peg$FAILED) {
              s22 = input3.substring(s22, peg$currPos);
            } else {
              s22 = s32;
            }
            if (s22 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f31(s22);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e21);
          }
        }
        return s0;
      }
      function peg$parseprefix() {
        var s0, s1;
        peg$silentFails++;
        s0 = peg$parseminus();
        if (s0 === peg$FAILED) {
          s0 = null;
        }
        peg$silentFails--;
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e25);
        }
        return s0;
      }
      function peg$parseplus() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = [];
        if (input3.charCodeAt(peg$currPos) === 43) {
          s22 = peg$c10;
          peg$currPos++;
        } else {
          s22 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e27);
          }
        }
        if (s22 !== peg$FAILED) {
          while (s22 !== peg$FAILED) {
            s1.push(s22);
            if (input3.charCodeAt(peg$currPos) === 43) {
              s22 = peg$c10;
              peg$currPos++;
            } else {
              s22 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e27);
              }
            }
          }
        } else {
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          s0 = input3.substring(s0, peg$currPos);
        } else {
          s0 = s1;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e26);
          }
        }
        return s0;
      }
      function peg$parseminus() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = [];
        if (input3.charCodeAt(peg$currPos) === 45) {
          s22 = peg$c11;
          peg$currPos++;
        } else {
          s22 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e29);
          }
        }
        if (s22 !== peg$FAILED) {
          while (s22 !== peg$FAILED) {
            s1.push(s22);
            if (input3.charCodeAt(peg$currPos) === 45) {
              s22 = peg$c11;
              peg$currPos++;
            } else {
              s22 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e29);
              }
            }
          }
        } else {
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          s0 = input3.substring(s0, peg$currPos);
        } else {
          s0 = s1;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e28);
          }
        }
        return s0;
      }
      function peg$parsenum() {
        var s0, s1, s22, s32;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$currPos;
        s22 = [];
        if (peg$r1.test(input3.charAt(peg$currPos))) {
          s32 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s32 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e31);
          }
        }
        if (s32 !== peg$FAILED) {
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            if (peg$r1.test(input3.charAt(peg$currPos))) {
              s32 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s32 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e31);
              }
            }
          }
        } else {
          s22 = peg$FAILED;
        }
        if (s22 !== peg$FAILED) {
          s1 = input3.substring(s1, peg$currPos);
        } else {
          s1 = s22;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f32(s1);
        }
        s0 = s1;
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e30);
          }
        }
        return s0;
      }
      function peg$parsepct() {
        var s0, s1, s22, s32, s42, s5, s6, s7, s8, s9;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$currPos;
        s22 = peg$currPos;
        s32 = peg$currPos;
        s42 = [];
        if (peg$r1.test(input3.charAt(peg$currPos))) {
          s5 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e31);
          }
        }
        if (s5 !== peg$FAILED) {
          while (s5 !== peg$FAILED) {
            s42.push(s5);
            if (peg$r1.test(input3.charAt(peg$currPos))) {
              s5 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s5 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e31);
              }
            }
          }
        } else {
          s42 = peg$FAILED;
        }
        if (s42 !== peg$FAILED) {
          s32 = input3.substring(s32, peg$currPos);
        } else {
          s32 = s42;
        }
        if (s32 !== peg$FAILED) {
          s42 = peg$currPos;
          s5 = peg$currPos;
          if (input3.charCodeAt(peg$currPos) === 46) {
            s6 = peg$c6;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e19);
            }
          }
          if (s6 !== peg$FAILED) {
            s7 = peg$currPos;
            s8 = [];
            if (peg$r1.test(input3.charAt(peg$currPos))) {
              s9 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e31);
              }
            }
            while (s9 !== peg$FAILED) {
              s8.push(s9);
              if (peg$r1.test(input3.charAt(peg$currPos))) {
                s9 = input3.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s9 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e31);
                }
              }
            }
            s7 = input3.substring(s7, peg$currPos);
            s6 = [s6, s7];
            s5 = s6;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 === peg$FAILED) {
            s5 = null;
          }
          s42 = input3.substring(s42, peg$currPos);
          s32 = [s32, s42];
          s22 = s32;
        } else {
          peg$currPos = s22;
          s22 = peg$FAILED;
        }
        if (s22 !== peg$FAILED) {
          s1 = input3.substring(s1, peg$currPos);
        } else {
          s1 = s22;
        }
        if (s1 === peg$FAILED) {
          s1 = peg$currPos;
          s22 = peg$currPos;
          if (input3.charCodeAt(peg$currPos) === 46) {
            s32 = peg$c6;
            peg$currPos++;
          } else {
            s32 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e19);
            }
          }
          if (s32 !== peg$FAILED) {
            s42 = peg$currPos;
            s5 = [];
            if (peg$r1.test(input3.charAt(peg$currPos))) {
              s6 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e31);
              }
            }
            if (s6 !== peg$FAILED) {
              while (s6 !== peg$FAILED) {
                s5.push(s6);
                if (peg$r1.test(input3.charAt(peg$currPos))) {
                  s6 = input3.charAt(peg$currPos);
                  peg$currPos++;
                } else {
                  s6 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e31);
                  }
                }
              }
            } else {
              s5 = peg$FAILED;
            }
            if (s5 !== peg$FAILED) {
              s42 = input3.substring(s42, peg$currPos);
            } else {
              s42 = s5;
            }
            if (s42 !== peg$FAILED) {
              s32 = [s32, s42];
              s22 = s32;
            } else {
              peg$currPos = s22;
              s22 = peg$FAILED;
            }
          } else {
            peg$currPos = s22;
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = input3.substring(s1, peg$currPos);
          } else {
            s1 = s22;
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f33(s1);
        }
        s0 = s1;
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e32);
          }
        }
        return s0;
      }
      function peg$parsediv() {
        var s0, s1;
        peg$silentFails++;
        s0 = peg$parsepct();
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e33);
          }
        }
        return s0;
      }
      function peg$parsedec() {
        var s0, s1, s22;
        s0 = peg$parsepct();
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input3.charCodeAt(peg$currPos) === 43) {
            s1 = peg$c10;
            peg$currPos++;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e27);
            }
          }
          if (s1 !== peg$FAILED) {
            s22 = peg$parsepct();
            if (s22 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f34(s22);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input3.charCodeAt(peg$currPos) === 45) {
              s1 = peg$c11;
              peg$currPos++;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e29);
              }
            }
            if (s1 !== peg$FAILED) {
              s22 = peg$parsepct();
              if (s22 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f35(s22);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          }
        }
        return s0;
      }
      function peg$parseint() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parseminus();
        if (s1 === peg$FAILED) {
          s1 = null;
        }
        s22 = peg$parsenum();
        if (s22 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f36(s1, s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e34);
          }
        }
        return s0;
      }
      function peg$parse_() {
        var s0, s1;
        peg$silentFails++;
        s0 = [];
        if (peg$r2.test(input3.charAt(peg$currPos))) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e36);
          }
        }
        while (s1 !== peg$FAILED) {
          s0.push(s1);
          if (peg$r2.test(input3.charAt(peg$currPos))) {
            s1 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e36);
            }
          }
        }
        peg$silentFails--;
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e35);
        }
        return s0;
      }
      function peg$parsesp() {
        var s0, s1;
        s0 = [];
        if (peg$r2.test(input3.charAt(peg$currPos))) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e36);
          }
        }
        if (s1 !== peg$FAILED) {
          while (s1 !== peg$FAILED) {
            s0.push(s1);
            if (peg$r2.test(input3.charAt(peg$currPos))) {
              s1 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e36);
              }
            }
          }
        } else {
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsehex() {
        var s0, s1;
        s0 = peg$currPos;
        if (peg$r3.test(input3.charAt(peg$currPos))) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e37);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f37(s1);
        }
        s0 = s1;
        return s0;
      }
      function peg$parseEOL() {
        var s0, s1;
        s0 = peg$currPos;
        peg$silentFails++;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        peg$silentFails--;
        if (s1 === peg$FAILED) {
          s0 = void 0;
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      peg$result = peg$startRuleFunction();
      if (peg$result !== peg$FAILED && peg$currPos === input3.length) {
        return peg$result;
      } else {
        if (peg$result !== peg$FAILED && peg$currPos < input3.length) {
          peg$fail(peg$endExpectation());
        }
        throw peg$buildStructuredError(
          peg$maxFailExpected,
          peg$maxFailPos < input3.length ? input3.charAt(peg$maxFailPos) : null,
          peg$maxFailPos < input3.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
        );
      }
    }
    return {
      SyntaxError: peg$SyntaxError,
      parse: peg$parse
    };
  })()
);
var tabular_spec_default = (
  // Generated by Peggy 2.0.1.
  //
  // https://peggyjs.org/
  (function() {
    "use strict";
    function peg$subclass(child, parent2) {
      function C() {
        this.constructor = child;
      }
      C.prototype = parent2.prototype;
      child.prototype = new C();
    }
    function peg$SyntaxError(message, expected, found2, location4) {
      var self2 = Error.call(this, message);
      if (Object.setPrototypeOf) {
        Object.setPrototypeOf(self2, peg$SyntaxError.prototype);
      }
      self2.expected = expected;
      self2.found = found2;
      self2.location = location4;
      self2.name = "SyntaxError";
      return self2;
    }
    peg$subclass(peg$SyntaxError, Error);
    function peg$padEnd(str2, targetLength, padString) {
      padString = padString || " ";
      if (str2.length > targetLength) {
        return str2;
      }
      targetLength -= str2.length;
      padString += padString.repeat(targetLength);
      return str2 + padString.slice(0, targetLength);
    }
    peg$SyntaxError.prototype.format = function(sources) {
      var str2 = "Error: " + this.message;
      if (this.location) {
        var src = null;
        var k;
        for (k = 0; k < sources.length; k++) {
          if (sources[k].source === this.location.source) {
            src = sources[k].text.split(/\r\n|\n|\r/g);
            break;
          }
        }
        var s5 = this.location.start;
        var loc = this.location.source + ":" + s5.line + ":" + s5.column;
        if (src) {
          var e2 = this.location.end;
          var filler = peg$padEnd("", s5.line.toString().length, " ");
          var line2 = src[s5.line - 1];
          var last = s5.line === e2.line ? e2.column : line2.length + 1;
          var hatLen = last - s5.column || 1;
          str2 += "\n --> " + loc + "\n" + filler + " |\n" + s5.line + " | " + line2 + "\n" + filler + " | " + peg$padEnd("", s5.column - 1, " ") + peg$padEnd("", hatLen, "^");
        } else {
          str2 += "\n at " + loc;
        }
      }
      return str2;
    };
    peg$SyntaxError.buildMessage = function(expected, found2) {
      var DESCRIBE_EXPECTATION_FNS = {
        literal: function(expectation) {
          return '"' + literalEscape(expectation.text) + '"';
        },
        class: function(expectation) {
          var escapedParts = expectation.parts.map(function(part) {
            return Array.isArray(part) ? classEscape(part[0]) + "-" + classEscape(part[1]) : classEscape(part);
          });
          return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
        },
        any: function() {
          return "any character";
        },
        end: function() {
          return "end of input";
        },
        other: function(expectation) {
          return expectation.description;
        }
      };
      function hex(ch) {
        return ch.charCodeAt(0).toString(16).toUpperCase();
      }
      function literalEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function classEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function describeExpectation(expectation) {
        return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
      }
      function describeExpected(expected2) {
        var descriptions = expected2.map(describeExpectation);
        var i2, j;
        descriptions.sort();
        if (descriptions.length > 0) {
          for (i2 = 1, j = 1; i2 < descriptions.length; i2++) {
            if (descriptions[i2 - 1] !== descriptions[i2]) {
              descriptions[j] = descriptions[i2];
              j++;
            }
          }
          descriptions.length = j;
        }
        switch (descriptions.length) {
          case 1:
            return descriptions[0];
          case 2:
            return descriptions[0] + " or " + descriptions[1];
          default:
            return descriptions.slice(0, -1).join(", ") + ", or " + descriptions[descriptions.length - 1];
        }
      }
      function describeFound(found22) {
        return found22 ? '"' + literalEscape(found22) + '"' : "end of input";
      }
      return "Expected " + describeExpected(expected) + " but " + describeFound(found2) + " found.";
    };
    function peg$parse(input3, options) {
      options = options !== void 0 ? options : {};
      var peg$FAILED = {};
      var peg$source = options.grammarSource;
      var peg$startRuleFunctions = { body: peg$parsebody };
      var peg$startRuleFunction = peg$parsebody;
      var peg$e0 = peg$otherExpectation("decl_start");
      var peg$e1 = peg$otherExpectation("decl_end");
      var peg$e2 = peg$otherExpectation("vert");
      var peg$e3 = peg$anyExpectation();
      var peg$e4 = peg$otherExpectation("l");
      var peg$e5 = peg$otherExpectation("r");
      var peg$e6 = peg$otherExpectation("c");
      var peg$e7 = peg$otherExpectation("p");
      var peg$e8 = peg$otherExpectation("m");
      var peg$e9 = peg$otherExpectation("b");
      var peg$e10 = peg$otherExpectation("w");
      var peg$e11 = peg$otherExpectation("W");
      var peg$e12 = peg$otherExpectation("X");
      var peg$e13 = peg$otherExpectation("!");
      var peg$e14 = peg$otherExpectation("@");
      var peg$e15 = peg$otherExpectation("<");
      var peg$e16 = peg$otherExpectation(">");
      var peg$e17 = peg$otherExpectation("group");
      var peg$e18 = peg$otherExpectation("whitespace");
      var peg$f0 = function(c) {
        return c;
      };
      var peg$f1 = function(cols) {
        return cols;
      };
      var peg$f2 = function() {
        return [];
      };
      var peg$f3 = function(divs1, start, a2, end, divs2) {
        return {
          type: "column",
          pre_dividers: divs1,
          post_dividers: divs2,
          before_start_code: start,
          before_end_code: end,
          alignment: a2
        };
      };
      var peg$f4 = function() {
        return {
          type: "vert_divider"
        };
      };
      var peg$f5 = function(b, g) {
        return {
          type: "bang_divider",
          content: g[0].content
        };
      };
      var peg$f6 = function(g) {
        return {
          type: "at_divider",
          content: g[0].content
        };
      };
      var peg$f7 = function(div2) {
        return div2;
      };
      var peg$f8 = function(g) {
        return { type: "decl_code", code: g[0].content };
      };
      var peg$f9 = function(g) {
        return { type: "decl_code", code: g[0].content };
      };
      var peg$f10 = function() {
        return { type: "alignment", alignment: "left" };
      };
      var peg$f11 = function() {
        return { type: "alignment", alignment: "center" };
      };
      var peg$f12 = function() {
        return { type: "alignment", alignment: "right" };
      };
      var peg$f13 = function() {
        return { type: "alignment", alignment: "X" };
      };
      var peg$f14 = function() {
        return "top";
      };
      var peg$f15 = function() {
        return "default";
      };
      var peg$f16 = function() {
        return "bottom";
      };
      var peg$f17 = function(a2, g) {
        return {
          type: "alignment",
          alignment: "parbox",
          baseline: a2,
          size: g[0].content
        };
      };
      var peg$f18 = function(g1, g2) {
        return {
          type: "alignment",
          alignment: "parbox",
          baseline: g1[0].content,
          size: g2[0].content
        };
      };
      var peg$f19 = function(tok) {
        return options.matchChar(tok, "|");
      };
      var peg$f20 = function(tok) {
        return options.matchChar(tok, "l");
      };
      var peg$f21 = function(tok) {
        return options.matchChar(tok, "r");
      };
      var peg$f22 = function(tok) {
        return options.matchChar(tok, "c");
      };
      var peg$f23 = function(tok) {
        return options.matchChar(tok, "p");
      };
      var peg$f24 = function(tok) {
        return options.matchChar(tok, "m");
      };
      var peg$f25 = function(tok) {
        return options.matchChar(tok, "b");
      };
      var peg$f26 = function(tok) {
        return options.matchChar(tok, "w");
      };
      var peg$f27 = function(tok) {
        return options.matchChar(tok, "W");
      };
      var peg$f28 = function(tok) {
        return options.matchChar(tok, "X");
      };
      var peg$f29 = function(tok) {
        return options.matchChar(tok, "!");
      };
      var peg$f30 = function(tok) {
        return options.matchChar(tok, "@");
      };
      var peg$f31 = function(tok) {
        return options.matchChar(tok, "<");
      };
      var peg$f32 = function(tok) {
        return options.matchChar(tok, ">");
      };
      var peg$f33 = function(tok) {
        return options.isGroup(tok);
      };
      var peg$f34 = function(tok) {
        return options.isWhitespace(tok);
      };
      var peg$currPos = 0;
      var peg$savedPos = 0;
      var peg$posDetailsCache = [{ line: 1, column: 1 }];
      var peg$maxFailPos = 0;
      var peg$maxFailExpected = [];
      var peg$silentFails = 0;
      var peg$result;
      if ("startRule" in options) {
        if (!(options.startRule in peg$startRuleFunctions)) {
          throw new Error(`Can't start parsing from rule "` + options.startRule + '".');
        }
        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
      }
      function text7() {
        return input3.substring(peg$savedPos, peg$currPos);
      }
      function offset() {
        return peg$savedPos;
      }
      function range() {
        return {
          source: peg$source,
          start: peg$savedPos,
          end: peg$currPos
        };
      }
      function location4() {
        return peg$computeLocation(peg$savedPos, peg$currPos);
      }
      function expected(description, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildStructuredError(
          [peg$otherExpectation(description)],
          input3.substring(peg$savedPos, peg$currPos),
          location22
        );
      }
      function error(message, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildSimpleError(message, location22);
      }
      function peg$literalExpectation(text22, ignoreCase) {
        return { type: "literal", text: text22, ignoreCase };
      }
      function peg$classExpectation(parts, inverted, ignoreCase) {
        return { type: "class", parts, inverted, ignoreCase };
      }
      function peg$anyExpectation() {
        return { type: "any" };
      }
      function peg$endExpectation() {
        return { type: "end" };
      }
      function peg$otherExpectation(description) {
        return { type: "other", description };
      }
      function peg$computePosDetails(pos) {
        var details3 = peg$posDetailsCache[pos];
        var p5;
        if (details3) {
          return details3;
        } else {
          p5 = pos - 1;
          while (!peg$posDetailsCache[p5]) {
            p5--;
          }
          details3 = peg$posDetailsCache[p5];
          details3 = {
            line: details3.line,
            column: details3.column
          };
          while (p5 < pos) {
            if (input3.charCodeAt(p5) === 10) {
              details3.line++;
              details3.column = 1;
            } else {
              details3.column++;
            }
            p5++;
          }
          peg$posDetailsCache[pos] = details3;
          return details3;
        }
      }
      function peg$computeLocation(startPos, endPos) {
        var startPosDetails = peg$computePosDetails(startPos);
        var endPosDetails = peg$computePosDetails(endPos);
        return {
          source: peg$source,
          start: {
            offset: startPos,
            line: startPosDetails.line,
            column: startPosDetails.column
          },
          end: {
            offset: endPos,
            line: endPosDetails.line,
            column: endPosDetails.column
          }
        };
      }
      function peg$fail(expected2) {
        if (peg$currPos < peg$maxFailPos) {
          return;
        }
        if (peg$currPos > peg$maxFailPos) {
          peg$maxFailPos = peg$currPos;
          peg$maxFailExpected = [];
        }
        peg$maxFailExpected.push(expected2);
      }
      function peg$buildSimpleError(message, location22) {
        return new peg$SyntaxError(message, null, null, location22);
      }
      function peg$buildStructuredError(expected2, found2, location22) {
        return new peg$SyntaxError(
          peg$SyntaxError.buildMessage(expected2, found2),
          expected2,
          found2,
          location22
        );
      }
      function peg$parsebody() {
        var s0, s1, s22, s32, s42, s5;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$currPos;
        s32 = peg$parsecolumn();
        if (s32 !== peg$FAILED) {
          s42 = [];
          s5 = peg$parse_();
          while (s5 !== peg$FAILED) {
            s42.push(s5);
            s5 = peg$parse_();
          }
          peg$savedPos = s22;
          s22 = peg$f0(s32);
        } else {
          peg$currPos = s22;
          s22 = peg$FAILED;
        }
        if (s22 !== peg$FAILED) {
          while (s22 !== peg$FAILED) {
            s1.push(s22);
            s22 = peg$currPos;
            s32 = peg$parsecolumn();
            if (s32 !== peg$FAILED) {
              s42 = [];
              s5 = peg$parse_();
              while (s5 !== peg$FAILED) {
                s42.push(s5);
                s5 = peg$parse_();
              }
              peg$savedPos = s22;
              s22 = peg$f0(s32);
            } else {
              peg$currPos = s22;
              s22 = peg$FAILED;
            }
          }
        } else {
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f1(s1);
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseEOL();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f2();
          }
          s0 = s1;
        }
        return s0;
      }
      function peg$parsecolumn() {
        var s0, s1, s22, s32, s42, s5, s6;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parsecolumn_divider();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parsecolumn_divider();
        }
        s22 = peg$parsedecl_start();
        if (s22 === peg$FAILED) {
          s22 = null;
        }
        s32 = peg$parsealignment();
        if (s32 !== peg$FAILED) {
          s42 = peg$parsedecl_end();
          if (s42 === peg$FAILED) {
            s42 = null;
          }
          s5 = [];
          s6 = peg$parsecolumn_divider();
          while (s6 !== peg$FAILED) {
            s5.push(s6);
            s6 = peg$parsecolumn_divider();
          }
          peg$savedPos = s0;
          s0 = peg$f3(s1, s22, s32, s42, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsecolumn_divider() {
        var s0, s1, s22, s32, s42;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parse_();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parse_();
        }
        s22 = peg$currPos;
        s32 = peg$parsevert();
        if (s32 !== peg$FAILED) {
          peg$savedPos = s22;
          s32 = peg$f4();
        }
        s22 = s32;
        if (s22 === peg$FAILED) {
          s22 = peg$currPos;
          s32 = peg$parsebang();
          if (s32 !== peg$FAILED) {
            s42 = peg$parsegroup();
            if (s42 !== peg$FAILED) {
              peg$savedPos = s22;
              s22 = peg$f5(s32, s42);
            } else {
              peg$currPos = s22;
              s22 = peg$FAILED;
            }
          } else {
            peg$currPos = s22;
            s22 = peg$FAILED;
          }
          if (s22 === peg$FAILED) {
            s22 = peg$currPos;
            s32 = peg$parseat();
            if (s32 !== peg$FAILED) {
              s42 = peg$parsegroup();
              if (s42 !== peg$FAILED) {
                peg$savedPos = s22;
                s22 = peg$f6(s42);
              } else {
                peg$currPos = s22;
                s22 = peg$FAILED;
              }
            } else {
              peg$currPos = s22;
              s22 = peg$FAILED;
            }
          }
        }
        if (s22 !== peg$FAILED) {
          s32 = [];
          s42 = peg$parse_();
          while (s42 !== peg$FAILED) {
            s32.push(s42);
            s42 = peg$parse_();
          }
          peg$savedPos = s0;
          s0 = peg$f7(s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsedecl_start() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parsegreater();
        if (s1 !== peg$FAILED) {
          s22 = peg$parsegroup();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f8(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        return s0;
      }
      function peg$parsedecl_end() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parseless();
        if (s1 !== peg$FAILED) {
          s22 = peg$parsegroup();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f9(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e1);
          }
        }
        return s0;
      }
      function peg$parsealignment() {
        var s0, s1, s22, s32, s42, s5;
        s0 = peg$currPos;
        s1 = peg$parsel();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f10();
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parsec();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f11();
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parser();
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f12();
            }
            s0 = s1;
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseX();
              if (s1 !== peg$FAILED) {
                peg$savedPos = s0;
                s1 = peg$f13();
              }
              s0 = s1;
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$currPos;
                s22 = peg$parsep();
                if (s22 !== peg$FAILED) {
                  peg$savedPos = s1;
                  s22 = peg$f14();
                }
                s1 = s22;
                if (s1 === peg$FAILED) {
                  s1 = peg$currPos;
                  s22 = peg$parsem();
                  if (s22 !== peg$FAILED) {
                    peg$savedPos = s1;
                    s22 = peg$f15();
                  }
                  s1 = s22;
                  if (s1 === peg$FAILED) {
                    s1 = peg$currPos;
                    s22 = peg$parseb();
                    if (s22 !== peg$FAILED) {
                      peg$savedPos = s1;
                      s22 = peg$f16();
                    }
                    s1 = s22;
                  }
                }
                if (s1 !== peg$FAILED) {
                  s22 = [];
                  s32 = peg$parse_();
                  while (s32 !== peg$FAILED) {
                    s22.push(s32);
                    s32 = peg$parse_();
                  }
                  s32 = peg$parsegroup();
                  if (s32 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f17(s1, s32);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$parsew();
                  if (s1 === peg$FAILED) {
                    s1 = peg$parseW();
                  }
                  if (s1 !== peg$FAILED) {
                    s22 = [];
                    s32 = peg$parse_();
                    while (s32 !== peg$FAILED) {
                      s22.push(s32);
                      s32 = peg$parse_();
                    }
                    s32 = peg$parsegroup();
                    if (s32 !== peg$FAILED) {
                      s42 = [];
                      s5 = peg$parse_();
                      while (s5 !== peg$FAILED) {
                        s42.push(s5);
                        s5 = peg$parse_();
                      }
                      s5 = peg$parsegroup();
                      if (s5 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f18(s32, s5);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                }
              }
            }
          }
        }
        return s0;
      }
      function peg$parsevert() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f19(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e2);
          }
        }
        return s0;
      }
      function peg$parsel() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f20(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e4);
          }
        }
        return s0;
      }
      function peg$parser() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f21(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e5);
          }
        }
        return s0;
      }
      function peg$parsec() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f22(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        return s0;
      }
      function peg$parsep() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f23(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e7);
          }
        }
        return s0;
      }
      function peg$parsem() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f24(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        return s0;
      }
      function peg$parseb() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f25(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e9);
          }
        }
        return s0;
      }
      function peg$parsew() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f26(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e10);
          }
        }
        return s0;
      }
      function peg$parseW() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f27(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e11);
          }
        }
        return s0;
      }
      function peg$parseX() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f28(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e12);
          }
        }
        return s0;
      }
      function peg$parsebang() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f29(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e13);
          }
        }
        return s0;
      }
      function peg$parseat() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f30(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e14);
          }
        }
        return s0;
      }
      function peg$parseless() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f31(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e15);
          }
        }
        return s0;
      }
      function peg$parsegreater() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f32(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e16);
          }
        }
        return s0;
      }
      function peg$parsegroup() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f33(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e17);
          }
        }
        return s0;
      }
      function peg$parse_() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f34(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e18);
          }
        }
        return s0;
      }
      function peg$parseEOL() {
        var s0, s1;
        s0 = peg$currPos;
        peg$silentFails++;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        peg$silentFails--;
        if (s1 === peg$FAILED) {
          s0 = void 0;
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      if (!options.isHash) {
        try {
          Object.assign(options, {
            matchChar: (node3, char) => node3.type === "string" && node3.content === char,
            isGroup: (node3) => node3.type === "group",
            isWhitespace: (node3) => node3.type === "whitespace"
          });
        } catch (e2) {
          console.warn("Error when initializing parser", e2);
        }
      }
      peg$result = peg$startRuleFunction();
      if (peg$result !== peg$FAILED && peg$currPos === input3.length) {
        return peg$result;
      } else {
        if (peg$result !== peg$FAILED && peg$currPos < input3.length) {
          peg$fail(peg$endExpectation());
        }
        throw peg$buildStructuredError(
          peg$maxFailExpected,
          peg$maxFailPos < input3.length ? input3.charAt(peg$maxFailPos) : null,
          peg$maxFailPos < input3.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
        );
      }
    }
    return {
      SyntaxError: peg$SyntaxError,
      parse: peg$parse
    };
  })()
);
var systeme_environment_default = (
  // Generated by Peggy 2.0.1.
  //
  // https://peggyjs.org/
  (function() {
    "use strict";
    function peg$subclass(child, parent2) {
      function C() {
        this.constructor = child;
      }
      C.prototype = parent2.prototype;
      child.prototype = new C();
    }
    function peg$SyntaxError(message, expected, found2, location4) {
      var self2 = Error.call(this, message);
      if (Object.setPrototypeOf) {
        Object.setPrototypeOf(self2, peg$SyntaxError.prototype);
      }
      self2.expected = expected;
      self2.found = found2;
      self2.location = location4;
      self2.name = "SyntaxError";
      return self2;
    }
    peg$subclass(peg$SyntaxError, Error);
    function peg$padEnd(str2, targetLength, padString) {
      padString = padString || " ";
      if (str2.length > targetLength) {
        return str2;
      }
      targetLength -= str2.length;
      padString += padString.repeat(targetLength);
      return str2 + padString.slice(0, targetLength);
    }
    peg$SyntaxError.prototype.format = function(sources) {
      var str2 = "Error: " + this.message;
      if (this.location) {
        var src = null;
        var k;
        for (k = 0; k < sources.length; k++) {
          if (sources[k].source === this.location.source) {
            src = sources[k].text.split(/\r\n|\n|\r/g);
            break;
          }
        }
        var s5 = this.location.start;
        var loc = this.location.source + ":" + s5.line + ":" + s5.column;
        if (src) {
          var e2 = this.location.end;
          var filler = peg$padEnd("", s5.line.toString().length, " ");
          var line2 = src[s5.line - 1];
          var last = s5.line === e2.line ? e2.column : line2.length + 1;
          var hatLen = last - s5.column || 1;
          str2 += "\n --> " + loc + "\n" + filler + " |\n" + s5.line + " | " + line2 + "\n" + filler + " | " + peg$padEnd("", s5.column - 1, " ") + peg$padEnd("", hatLen, "^");
        } else {
          str2 += "\n at " + loc;
        }
      }
      return str2;
    };
    peg$SyntaxError.buildMessage = function(expected, found2) {
      var DESCRIBE_EXPECTATION_FNS = {
        literal: function(expectation) {
          return '"' + literalEscape(expectation.text) + '"';
        },
        class: function(expectation) {
          var escapedParts = expectation.parts.map(function(part) {
            return Array.isArray(part) ? classEscape(part[0]) + "-" + classEscape(part[1]) : classEscape(part);
          });
          return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
        },
        any: function() {
          return "any character";
        },
        end: function() {
          return "end of input";
        },
        other: function(expectation) {
          return expectation.description;
        }
      };
      function hex(ch) {
        return ch.charCodeAt(0).toString(16).toUpperCase();
      }
      function literalEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function classEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function describeExpectation(expectation) {
        return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
      }
      function describeExpected(expected2) {
        var descriptions = expected2.map(describeExpectation);
        var i2, j;
        descriptions.sort();
        if (descriptions.length > 0) {
          for (i2 = 1, j = 1; i2 < descriptions.length; i2++) {
            if (descriptions[i2 - 1] !== descriptions[i2]) {
              descriptions[j] = descriptions[i2];
              j++;
            }
          }
          descriptions.length = j;
        }
        switch (descriptions.length) {
          case 1:
            return descriptions[0];
          case 2:
            return descriptions[0] + " or " + descriptions[1];
          default:
            return descriptions.slice(0, -1).join(", ") + ", or " + descriptions[descriptions.length - 1];
        }
      }
      function describeFound(found22) {
        return found22 ? '"' + literalEscape(found22) + '"' : "end of input";
      }
      return "Expected " + describeExpected(expected) + " but " + describeFound(found2) + " found.";
    };
    function peg$parse(input3, options) {
      options = options !== void 0 ? options : {};
      var peg$FAILED = {};
      var peg$source = options.grammarSource;
      var peg$startRuleFunctions = { body: peg$parsebody };
      var peg$startRuleFunction = peg$parsebody;
      var peg$e0 = peg$otherExpectation("partial item");
      var peg$e1 = peg$otherExpectation("item");
      var peg$e2 = peg$anyExpectation();
      var peg$e3 = peg$otherExpectation("equation");
      var peg$e4 = peg$otherExpectation("trailing comment");
      var peg$e5 = peg$otherExpectation("comment only line");
      var peg$e6 = peg$otherExpectation("non-var token");
      var peg$e7 = peg$otherExpectation("token");
      var peg$e8 = peg$otherExpectation("same line comment");
      var peg$e9 = peg$otherExpectation("own line comment");
      var peg$e10 = peg$otherExpectation(",");
      var peg$e11 = peg$otherExpectation("@");
      var peg$e12 = peg$otherExpectation("variable token");
      var peg$e13 = peg$otherExpectation("+/-");
      var peg$e14 = peg$otherExpectation("=");
      var peg$f0 = function(a2, b) {
        return a2.concat(b ? b : []);
      };
      var peg$f1 = function() {
        return [];
      };
      var peg$f2 = function(a2, b, c) {
        return a2.concat(b, c);
      };
      var peg$f3 = function(op2, a2, b, c) {
        return { type: "item", op: op2, variable: b, content: a2.concat(b, c) };
      };
      var peg$f4 = function(op2, a2) {
        return { type: "item", op: op2, variable: null, content: a2 };
      };
      var peg$f5 = function(line2, sep5, comment7) {
        return { ...line2, sep: [].concat(sep5), trailingComment: comment7 };
      };
      var peg$f6 = function(line2, comment7) {
        return { ...line2, trailingComment: comment7 };
      };
      var peg$f7 = function(eq, ann) {
        return {
          type: "line",
          equation: eq,
          annotation: ann,
          sep: null
        };
      };
      var peg$f8 = function(at, ann) {
        return at ? { type: "annotation", marker: at, content: ann } : null;
      };
      var peg$f9 = function(left2, eq, right2) {
        return { type: "equation", left: left2, right: right2, equals: eq };
      };
      var peg$f10 = function(x2) {
        return x2;
      };
      var peg$f11 = function(x2) {
        return {
          type: "line",
          trailingComment: x2
        };
      };
      var peg$f12 = function(v, s5) {
        return [v].concat(s5 ? s5 : []);
      };
      var peg$f13 = function(t2) {
        return t2;
      };
      var peg$f14 = function(x2) {
        return x2;
      };
      var peg$f15 = function(x2) {
        return x2;
      };
      var peg$f16 = function(tok) {
        return options.isSameLineComment(tok);
      };
      var peg$f17 = function(tok) {
        return tok;
      };
      var peg$f18 = function(tok) {
        return options.isOwnLineComment(tok);
      };
      var peg$f19 = function(tok) {
        return tok;
      };
      var peg$f20 = function(tok) {
        return options.isWhitespace(tok);
      };
      var peg$f21 = function(tok) {
        return tok;
      };
      var peg$f22 = function(tok) {
        return options.isSep(tok);
      };
      var peg$f23 = function(tok) {
        return tok;
      };
      var peg$f24 = function(tok) {
        return options.isAt(tok);
      };
      var peg$f25 = function(tok) {
        return tok;
      };
      var peg$f26 = function(tok) {
        return options.isVar(tok);
      };
      var peg$f27 = function(tok) {
        return tok;
      };
      var peg$f28 = function(tok) {
        return options.isOperation(tok);
      };
      var peg$f29 = function(tok) {
        return tok;
      };
      var peg$f30 = function(tok) {
        return options.isEquals(tok);
      };
      var peg$f31 = function(tok) {
        return tok;
      };
      var peg$f32 = function(tok) {
        return options.isSubscript(tok);
      };
      var peg$f33 = function(tok) {
        return tok;
      };
      var peg$currPos = 0;
      var peg$savedPos = 0;
      var peg$posDetailsCache = [{ line: 1, column: 1 }];
      var peg$maxFailPos = 0;
      var peg$maxFailExpected = [];
      var peg$silentFails = 0;
      var peg$result;
      if ("startRule" in options) {
        if (!(options.startRule in peg$startRuleFunctions)) {
          throw new Error(`Can't start parsing from rule "` + options.startRule + '".');
        }
        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
      }
      function text7() {
        return input3.substring(peg$savedPos, peg$currPos);
      }
      function offset() {
        return peg$savedPos;
      }
      function range() {
        return {
          source: peg$source,
          start: peg$savedPos,
          end: peg$currPos
        };
      }
      function location4() {
        return peg$computeLocation(peg$savedPos, peg$currPos);
      }
      function expected(description, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildStructuredError(
          [peg$otherExpectation(description)],
          input3.substring(peg$savedPos, peg$currPos),
          location22
        );
      }
      function error(message, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildSimpleError(message, location22);
      }
      function peg$literalExpectation(text22, ignoreCase) {
        return { type: "literal", text: text22, ignoreCase };
      }
      function peg$classExpectation(parts, inverted, ignoreCase) {
        return { type: "class", parts, inverted, ignoreCase };
      }
      function peg$anyExpectation() {
        return { type: "any" };
      }
      function peg$endExpectation() {
        return { type: "end" };
      }
      function peg$otherExpectation(description) {
        return { type: "other", description };
      }
      function peg$computePosDetails(pos) {
        var details3 = peg$posDetailsCache[pos];
        var p5;
        if (details3) {
          return details3;
        } else {
          p5 = pos - 1;
          while (!peg$posDetailsCache[p5]) {
            p5--;
          }
          details3 = peg$posDetailsCache[p5];
          details3 = {
            line: details3.line,
            column: details3.column
          };
          while (p5 < pos) {
            if (input3.charCodeAt(p5) === 10) {
              details3.line++;
              details3.column = 1;
            } else {
              details3.column++;
            }
            p5++;
          }
          peg$posDetailsCache[pos] = details3;
          return details3;
        }
      }
      function peg$computeLocation(startPos, endPos) {
        var startPosDetails = peg$computePosDetails(startPos);
        var endPosDetails = peg$computePosDetails(endPos);
        return {
          source: peg$source,
          start: {
            offset: startPos,
            line: startPosDetails.line,
            column: startPosDetails.column
          },
          end: {
            offset: endPos,
            line: endPosDetails.line,
            column: endPosDetails.column
          }
        };
      }
      function peg$fail(expected2) {
        if (peg$currPos < peg$maxFailPos) {
          return;
        }
        if (peg$currPos > peg$maxFailPos) {
          peg$maxFailPos = peg$currPos;
          peg$maxFailExpected = [];
        }
        peg$maxFailExpected.push(expected2);
      }
      function peg$buildSimpleError(message, location22) {
        return new peg$SyntaxError(message, null, null, location22);
      }
      function peg$buildStructuredError(expected2, found2, location22) {
        return new peg$SyntaxError(
          peg$SyntaxError.buildMessage(expected2, found2),
          expected2,
          found2,
          location22
        );
      }
      function peg$parsebody() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parsecomment_only_line();
        if (s22 === peg$FAILED) {
          s22 = peg$parseline_with_sep();
          if (s22 === peg$FAILED) {
            s22 = peg$parsepartial_line_with_comment();
          }
        }
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parsecomment_only_line();
          if (s22 === peg$FAILED) {
            s22 = peg$parseline_with_sep();
            if (s22 === peg$FAILED) {
              s22 = peg$parsepartial_line_with_comment();
            }
          }
        }
        s22 = peg$parseline_without_sep();
        if (s22 === peg$FAILED) {
          s22 = peg$parseEOL();
        }
        if (s22 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f0(s1, s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseEOL();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f1();
          }
          s0 = s1;
        }
        return s0;
      }
      function peg$parsepartial_item() {
        var s0, s1, s22, s32, s42, s5, s6, s7, s8;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parse_();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parse_();
        }
        s22 = [];
        s32 = peg$parsenon_var_token();
        while (s32 !== peg$FAILED) {
          s22.push(s32);
          s32 = peg$parsenon_var_token();
        }
        s32 = [];
        s42 = peg$parse_();
        while (s42 !== peg$FAILED) {
          s32.push(s42);
          s42 = peg$parse_();
        }
        s42 = peg$parsevar();
        if (s42 !== peg$FAILED) {
          s5 = [];
          s6 = peg$parse_();
          while (s6 !== peg$FAILED) {
            s5.push(s6);
            s6 = peg$parse_();
          }
          s6 = [];
          s7 = peg$parsetoken();
          while (s7 !== peg$FAILED) {
            s6.push(s7);
            s7 = peg$parsetoken();
          }
          s7 = [];
          s8 = peg$parse_();
          while (s8 !== peg$FAILED) {
            s7.push(s8);
            s8 = peg$parse_();
          }
          peg$savedPos = s0;
          s0 = peg$f2(s22, s42, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        return s0;
      }
      function peg$parseitem() {
        var s0, s1, s22, s32, s42, s5, s6, s7, s8, s9;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$parseoperation();
        if (s1 === peg$FAILED) {
          s1 = null;
        }
        s22 = [];
        s32 = peg$parse_();
        while (s32 !== peg$FAILED) {
          s22.push(s32);
          s32 = peg$parse_();
        }
        s32 = [];
        s42 = peg$parsenon_var_token();
        while (s42 !== peg$FAILED) {
          s32.push(s42);
          s42 = peg$parsenon_var_token();
        }
        s42 = [];
        s5 = peg$parse_();
        while (s5 !== peg$FAILED) {
          s42.push(s5);
          s5 = peg$parse_();
        }
        s5 = peg$parsevar();
        if (s5 !== peg$FAILED) {
          s6 = [];
          s7 = peg$parse_();
          while (s7 !== peg$FAILED) {
            s6.push(s7);
            s7 = peg$parse_();
          }
          s7 = [];
          s8 = peg$parsetoken();
          while (s8 !== peg$FAILED) {
            s7.push(s8);
            s8 = peg$parsetoken();
          }
          s8 = [];
          s9 = peg$parse_();
          while (s9 !== peg$FAILED) {
            s8.push(s9);
            s9 = peg$parse_();
          }
          peg$savedPos = s0;
          s0 = peg$f3(s1, s32, s5, s7);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseoperation();
          if (s1 === peg$FAILED) {
            s1 = null;
          }
          s22 = [];
          s32 = peg$parse_();
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$parse_();
          }
          s32 = [];
          s42 = peg$parsenon_var_token();
          if (s42 !== peg$FAILED) {
            while (s42 !== peg$FAILED) {
              s32.push(s42);
              s42 = peg$parsenon_var_token();
            }
          } else {
            s32 = peg$FAILED;
          }
          if (s32 !== peg$FAILED) {
            s42 = [];
            s5 = peg$parse_();
            while (s5 !== peg$FAILED) {
              s42.push(s5);
              s5 = peg$parse_();
            }
            peg$savedPos = s0;
            s0 = peg$f4(s1, s32);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e1);
          }
        }
        return s0;
      }
      function peg$parseline_with_sep() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        s1 = peg$parseline_without_sep();
        if (s1 !== peg$FAILED) {
          s22 = peg$parsesep();
          if (s22 !== peg$FAILED) {
            s32 = peg$parsetrailing_comment();
            if (s32 === peg$FAILED) {
              s32 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f5(s1, s22, s32);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsepartial_line_with_comment() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$parseline_without_sep();
        if (s1 !== peg$FAILED) {
          s22 = peg$parsetrailing_comment();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f6(s1, s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseline_without_sep() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        if (input3.length > peg$currPos) {
          s22 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s22 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e2);
          }
        }
        peg$silentFails--;
        if (s22 !== peg$FAILED) {
          peg$currPos = s1;
          s1 = void 0;
        } else {
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          s22 = peg$parseequation();
          s32 = peg$parseannotation();
          if (s32 === peg$FAILED) {
            s32 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f7(s22, s32);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseannotation() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        s1 = peg$parseat();
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$parsenon_sep_token();
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$parsenon_sep_token();
          }
          peg$savedPos = s0;
          s0 = peg$f8(s1, s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseequation() {
        var s0, s1, s22, s32, s42;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parseitem();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parseitem();
        }
        s22 = peg$parseequals();
        if (s22 === peg$FAILED) {
          s22 = null;
        }
        s32 = [];
        s42 = peg$parsetoken();
        if (s42 === peg$FAILED) {
          s42 = peg$parseoperation();
        }
        while (s42 !== peg$FAILED) {
          s32.push(s42);
          s42 = peg$parsetoken();
          if (s42 === peg$FAILED) {
            s42 = peg$parseoperation();
          }
        }
        peg$savedPos = s0;
        s0 = peg$f9(s1, s22, s32);
        peg$silentFails--;
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e3);
        }
        return s0;
      }
      function peg$parsetrailing_comment() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parse_();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parse_();
        }
        s22 = peg$parsesame_line_comment();
        if (s22 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f10(s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e4);
          }
        }
        return s0;
      }
      function peg$parsecomment_only_line() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parse_();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parse_();
        }
        s22 = peg$parseown_line_comment();
        if (s22 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f11(s22);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e5);
          }
        }
        return s0;
      }
      function peg$parsevar() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        s1 = peg$parsevar_token();
        if (s1 !== peg$FAILED) {
          s22 = [];
          s32 = peg$parse_();
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            s32 = peg$parse_();
          }
          s32 = peg$parsesubscript();
          if (s32 === peg$FAILED) {
            s32 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f12(s1, s32);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsenon_var_token() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        s22 = peg$parsevar();
        peg$silentFails--;
        if (s22 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          s22 = peg$parsetoken();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f13(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        return s0;
      }
      function peg$parsenon_sep_token() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        s22 = peg$parsesep();
        if (s22 === peg$FAILED) {
          s22 = peg$parsetrailing_comment();
          if (s22 === peg$FAILED) {
            s22 = peg$parseown_line_comment();
          }
        }
        peg$silentFails--;
        if (s22 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input3.length > peg$currPos) {
            s22 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e2);
            }
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f14(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsetoken() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        s22 = peg$parsesep();
        if (s22 === peg$FAILED) {
          s22 = peg$parseat();
          if (s22 === peg$FAILED) {
            s22 = peg$parseoperation();
            if (s22 === peg$FAILED) {
              s22 = peg$parseequals();
              if (s22 === peg$FAILED) {
                s22 = peg$parsetrailing_comment();
                if (s22 === peg$FAILED) {
                  s22 = peg$parseown_line_comment();
                }
              }
            }
          }
        }
        peg$silentFails--;
        if (s22 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input3.length > peg$currPos) {
            s22 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s22 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e2);
            }
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f15(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e7);
          }
        }
        return s0;
      }
      function peg$parsesame_line_comment() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e2);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f16(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f17(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e8);
          }
        }
        return s0;
      }
      function peg$parseown_line_comment() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e2);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f18(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f19(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e9);
          }
        }
        return s0;
      }
      function peg$parse_() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e2);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f20(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f21(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsesep() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e2);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f22(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f23(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e10);
          }
        }
        return s0;
      }
      function peg$parseat() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e2);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f24(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f25(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e11);
          }
        }
        return s0;
      }
      function peg$parsevar_token() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e2);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f26(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f27(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e12);
          }
        }
        return s0;
      }
      function peg$parseoperation() {
        var s0, s1, s22, s32, s42;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parse_();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parse_();
        }
        if (input3.length > peg$currPos) {
          s22 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s22 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e2);
          }
        }
        if (s22 !== peg$FAILED) {
          s32 = [];
          s42 = peg$parse_();
          while (s42 !== peg$FAILED) {
            s32.push(s42);
            s42 = peg$parse_();
          }
          peg$savedPos = peg$currPos;
          s42 = peg$f28(s22);
          if (s42) {
            s42 = void 0;
          } else {
            s42 = peg$FAILED;
          }
          if (s42 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f29(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e13);
          }
        }
        return s0;
      }
      function peg$parseequals() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e2);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f30(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f31(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e14);
          }
        }
        return s0;
      }
      function peg$parsesubscript() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e2);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f32(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f33(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseEOL() {
        var s0, s1;
        s0 = peg$currPos;
        peg$silentFails++;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e2);
          }
        }
        peg$silentFails--;
        if (s1 === peg$FAILED) {
          s0 = void 0;
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      if (!options.isWhitespace) {
        try {
          Object.assign(options, {
            isSep: (node3) => node3.type === "string" && node3.content === ",",
            isVar: (node3) => node3.type === "string" && node3.content.match(/[a-zA-Z]/),
            isOperation: (node3) => node3.type === "string" && node3.content.match(/[+-]/),
            isEquals: (node3) => node3.type === "string" && node3.content === "=",
            isAt: (node3) => node3.type === "string" && node3.content === "@",
            isSubscript: (node3) => node3.content === "_",
            isWhitespace: (node3) => node3.type === "whitespace",
            isSameLineComment: (node3) => node3.type === "comment" && node3.sameline,
            isOwnLineComment: (node3) => node3.type === "comment" && !node3.sameline
          });
        } catch (e2) {
          console.warn("Error when initializing parser", e2);
        }
      }
      peg$result = peg$startRuleFunction();
      if (peg$result !== peg$FAILED && peg$currPos === input3.length) {
        return peg$result;
      } else {
        if (peg$result !== peg$FAILED && peg$currPos < input3.length) {
          peg$fail(peg$endExpectation());
        }
        throw peg$buildStructuredError(
          peg$maxFailExpected,
          peg$maxFailPos < input3.length ? input3.charAt(peg$maxFailPos) : null,
          peg$maxFailPos < input3.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
        );
      }
    }
    return {
      SyntaxError: peg$SyntaxError,
      parse: peg$parse
    };
  })()
);
var tex_glue_default = (
  // Generated by Peggy 2.0.1.
  //
  // https://peggyjs.org/
  (function() {
    "use strict";
    function peg$subclass(child, parent2) {
      function C() {
        this.constructor = child;
      }
      C.prototype = parent2.prototype;
      child.prototype = new C();
    }
    function peg$SyntaxError(message, expected, found2, location4) {
      var self2 = Error.call(this, message);
      if (Object.setPrototypeOf) {
        Object.setPrototypeOf(self2, peg$SyntaxError.prototype);
      }
      self2.expected = expected;
      self2.found = found2;
      self2.location = location4;
      self2.name = "SyntaxError";
      return self2;
    }
    peg$subclass(peg$SyntaxError, Error);
    function peg$padEnd(str2, targetLength, padString) {
      padString = padString || " ";
      if (str2.length > targetLength) {
        return str2;
      }
      targetLength -= str2.length;
      padString += padString.repeat(targetLength);
      return str2 + padString.slice(0, targetLength);
    }
    peg$SyntaxError.prototype.format = function(sources) {
      var str2 = "Error: " + this.message;
      if (this.location) {
        var src = null;
        var k;
        for (k = 0; k < sources.length; k++) {
          if (sources[k].source === this.location.source) {
            src = sources[k].text.split(/\r\n|\n|\r/g);
            break;
          }
        }
        var s5 = this.location.start;
        var loc = this.location.source + ":" + s5.line + ":" + s5.column;
        if (src) {
          var e2 = this.location.end;
          var filler = peg$padEnd("", s5.line.toString().length, " ");
          var line2 = src[s5.line - 1];
          var last = s5.line === e2.line ? e2.column : line2.length + 1;
          var hatLen = last - s5.column || 1;
          str2 += "\n --> " + loc + "\n" + filler + " |\n" + s5.line + " | " + line2 + "\n" + filler + " | " + peg$padEnd("", s5.column - 1, " ") + peg$padEnd("", hatLen, "^");
        } else {
          str2 += "\n at " + loc;
        }
      }
      return str2;
    };
    peg$SyntaxError.buildMessage = function(expected, found2) {
      var DESCRIBE_EXPECTATION_FNS = {
        literal: function(expectation) {
          return '"' + literalEscape(expectation.text) + '"';
        },
        class: function(expectation) {
          var escapedParts = expectation.parts.map(function(part) {
            return Array.isArray(part) ? classEscape(part[0]) + "-" + classEscape(part[1]) : classEscape(part);
          });
          return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
        },
        any: function() {
          return "any character";
        },
        end: function() {
          return "end of input";
        },
        other: function(expectation) {
          return expectation.description;
        }
      };
      function hex(ch) {
        return ch.charCodeAt(0).toString(16).toUpperCase();
      }
      function literalEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function classEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function describeExpectation(expectation) {
        return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
      }
      function describeExpected(expected2) {
        var descriptions = expected2.map(describeExpectation);
        var i2, j;
        descriptions.sort();
        if (descriptions.length > 0) {
          for (i2 = 1, j = 1; i2 < descriptions.length; i2++) {
            if (descriptions[i2 - 1] !== descriptions[i2]) {
              descriptions[j] = descriptions[i2];
              j++;
            }
          }
          descriptions.length = j;
        }
        switch (descriptions.length) {
          case 1:
            return descriptions[0];
          case 2:
            return descriptions[0] + " or " + descriptions[1];
          default:
            return descriptions.slice(0, -1).join(", ") + ", or " + descriptions[descriptions.length - 1];
        }
      }
      function describeFound(found22) {
        return found22 ? '"' + literalEscape(found22) + '"' : "end of input";
      }
      return "Expected " + describeExpected(expected) + " but " + describeFound(found2) + " found.";
    };
    function peg$parse(input3, options) {
      options = options !== void 0 ? options : {};
      var peg$FAILED = {};
      var peg$source = options.grammarSource;
      var peg$startRuleFunctions = { root: peg$parseroot };
      var peg$startRuleFunction = peg$parseroot;
      var peg$c0 = "plus";
      var peg$c1 = "minus";
      var peg$c2 = "pt";
      var peg$c3 = "mm";
      var peg$c4 = "cm";
      var peg$c5 = "in";
      var peg$c6 = "ex";
      var peg$c7 = "em";
      var peg$c8 = "bp";
      var peg$c9 = "pc";
      var peg$c10 = "dd";
      var peg$c11 = "cc";
      var peg$c12 = "nd";
      var peg$c13 = "nc";
      var peg$c14 = "sp";
      var peg$c15 = "filll";
      var peg$c16 = "fill";
      var peg$c17 = "fil";
      var peg$c18 = ".";
      var peg$c19 = "+";
      var peg$c20 = "-";
      var peg$r0 = /^[0-9]/;
      var peg$e0 = peg$anyExpectation();
      var peg$e1 = peg$literalExpectation("plus", false);
      var peg$e2 = peg$literalExpectation("minus", false);
      var peg$e3 = peg$literalExpectation("pt", false);
      var peg$e4 = peg$literalExpectation("mm", false);
      var peg$e5 = peg$literalExpectation("cm", false);
      var peg$e6 = peg$literalExpectation("in", false);
      var peg$e7 = peg$literalExpectation("ex", false);
      var peg$e8 = peg$literalExpectation("em", false);
      var peg$e9 = peg$literalExpectation("bp", false);
      var peg$e10 = peg$literalExpectation("pc", false);
      var peg$e11 = peg$literalExpectation("dd", false);
      var peg$e12 = peg$literalExpectation("cc", false);
      var peg$e13 = peg$literalExpectation("nd", false);
      var peg$e14 = peg$literalExpectation("nc", false);
      var peg$e15 = peg$literalExpectation("sp", false);
      var peg$e16 = peg$literalExpectation("filll", false);
      var peg$e17 = peg$literalExpectation("fill", false);
      var peg$e18 = peg$literalExpectation("fil", false);
      var peg$e19 = peg$otherExpectation("number");
      var peg$e20 = peg$classExpectation([["0", "9"]], false, false);
      var peg$e21 = peg$literalExpectation(".", false);
      var peg$e22 = peg$literalExpectation("+", false);
      var peg$e23 = peg$literalExpectation("-", false);
      var peg$f0 = function(b, st, sh) {
        return {
          type: "glue",
          fixed: b,
          stretchable: st,
          shrinkable: sh,
          position: location4()
        };
      };
      var peg$f1 = function(glue) {
        return glue;
      };
      var peg$f2 = function(n, u3) {
        return { type: "dim", value: n, unit: u3 };
      };
      var peg$f3 = function(n, u3) {
        return { type: "dim", value: n, unit: u3 };
      };
      var peg$f4 = function(n, u3) {
        return { type: "dim", value: n, unit: u3 };
      };
      var peg$f5 = function(n) {
        return parseFloat(n);
      };
      var peg$currPos = 0;
      var peg$savedPos = 0;
      var peg$posDetailsCache = [{ line: 1, column: 1 }];
      var peg$maxFailPos = 0;
      var peg$maxFailExpected = [];
      var peg$silentFails = 0;
      var peg$result;
      if ("startRule" in options) {
        if (!(options.startRule in peg$startRuleFunctions)) {
          throw new Error(`Can't start parsing from rule "` + options.startRule + '".');
        }
        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
      }
      function text7() {
        return input3.substring(peg$savedPos, peg$currPos);
      }
      function offset() {
        return peg$savedPos;
      }
      function range() {
        return {
          source: peg$source,
          start: peg$savedPos,
          end: peg$currPos
        };
      }
      function location4() {
        return peg$computeLocation(peg$savedPos, peg$currPos);
      }
      function expected(description, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildStructuredError(
          [peg$otherExpectation(description)],
          input3.substring(peg$savedPos, peg$currPos),
          location22
        );
      }
      function error(message, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildSimpleError(message, location22);
      }
      function peg$literalExpectation(text22, ignoreCase) {
        return { type: "literal", text: text22, ignoreCase };
      }
      function peg$classExpectation(parts, inverted, ignoreCase) {
        return { type: "class", parts, inverted, ignoreCase };
      }
      function peg$anyExpectation() {
        return { type: "any" };
      }
      function peg$endExpectation() {
        return { type: "end" };
      }
      function peg$otherExpectation(description) {
        return { type: "other", description };
      }
      function peg$computePosDetails(pos) {
        var details3 = peg$posDetailsCache[pos];
        var p5;
        if (details3) {
          return details3;
        } else {
          p5 = pos - 1;
          while (!peg$posDetailsCache[p5]) {
            p5--;
          }
          details3 = peg$posDetailsCache[p5];
          details3 = {
            line: details3.line,
            column: details3.column
          };
          while (p5 < pos) {
            if (input3.charCodeAt(p5) === 10) {
              details3.line++;
              details3.column = 1;
            } else {
              details3.column++;
            }
            p5++;
          }
          peg$posDetailsCache[pos] = details3;
          return details3;
        }
      }
      function peg$computeLocation(startPos, endPos) {
        var startPosDetails = peg$computePosDetails(startPos);
        var endPosDetails = peg$computePosDetails(endPos);
        return {
          source: peg$source,
          start: {
            offset: startPos,
            line: startPosDetails.line,
            column: startPosDetails.column
          },
          end: {
            offset: endPos,
            line: endPosDetails.line,
            column: endPosDetails.column
          }
        };
      }
      function peg$fail(expected2) {
        if (peg$currPos < peg$maxFailPos) {
          return;
        }
        if (peg$currPos > peg$maxFailPos) {
          peg$maxFailPos = peg$currPos;
          peg$maxFailExpected = [];
        }
        peg$maxFailExpected.push(expected2);
      }
      function peg$buildSimpleError(message, location22) {
        return new peg$SyntaxError(message, null, null, location22);
      }
      function peg$buildStructuredError(expected2, found2, location22) {
        return new peg$SyntaxError(
          peg$SyntaxError.buildMessage(expected2, found2),
          expected2,
          found2,
          location22
        );
      }
      function peg$parseroot() {
        var s0, s1, s22, s32, s42;
        s0 = peg$currPos;
        s1 = peg$currPos;
        s22 = peg$parsebase();
        if (s22 !== peg$FAILED) {
          s32 = peg$parsestretchable();
          if (s32 === peg$FAILED) {
            s32 = null;
          }
          s42 = peg$parseshrinkable();
          if (s42 === peg$FAILED) {
            s42 = null;
          }
          peg$savedPos = s1;
          s1 = peg$f0(s22, s32, s42);
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          s22 = [];
          if (input3.length > peg$currPos) {
            s32 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s32 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e0);
            }
          }
          while (s32 !== peg$FAILED) {
            s22.push(s32);
            if (input3.length > peg$currPos) {
              s32 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s32 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e0);
              }
            }
          }
          peg$savedPos = s0;
          s0 = peg$f1(s1);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsebase() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$parsenumber();
        if (s1 !== peg$FAILED) {
          s22 = peg$parseunit();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f2(s1, s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsestretchable() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        if (input3.substr(peg$currPos, 4) === peg$c0) {
          s1 = peg$c0;
          peg$currPos += 4;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e1);
          }
        }
        if (s1 !== peg$FAILED) {
          s22 = peg$parsenumber();
          if (s22 !== peg$FAILED) {
            s32 = peg$parserubber_unit();
            if (s32 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f3(s22, s32);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseshrinkable() {
        var s0, s1, s22, s32;
        s0 = peg$currPos;
        if (input3.substr(peg$currPos, 5) === peg$c1) {
          s1 = peg$c1;
          peg$currPos += 5;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e2);
          }
        }
        if (s1 !== peg$FAILED) {
          s22 = peg$parsenumber();
          if (s22 !== peg$FAILED) {
            s32 = peg$parserubber_unit();
            if (s32 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f4(s22, s32);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseunit() {
        var s0;
        if (input3.substr(peg$currPos, 2) === peg$c2) {
          s0 = peg$c2;
          peg$currPos += 2;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        if (s0 === peg$FAILED) {
          if (input3.substr(peg$currPos, 2) === peg$c3) {
            s0 = peg$c3;
            peg$currPos += 2;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e4);
            }
          }
          if (s0 === peg$FAILED) {
            if (input3.substr(peg$currPos, 2) === peg$c4) {
              s0 = peg$c4;
              peg$currPos += 2;
            } else {
              s0 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e5);
              }
            }
            if (s0 === peg$FAILED) {
              if (input3.substr(peg$currPos, 2) === peg$c5) {
                s0 = peg$c5;
                peg$currPos += 2;
              } else {
                s0 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e6);
                }
              }
              if (s0 === peg$FAILED) {
                if (input3.substr(peg$currPos, 2) === peg$c6) {
                  s0 = peg$c6;
                  peg$currPos += 2;
                } else {
                  s0 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e7);
                  }
                }
                if (s0 === peg$FAILED) {
                  if (input3.substr(peg$currPos, 2) === peg$c7) {
                    s0 = peg$c7;
                    peg$currPos += 2;
                  } else {
                    s0 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e8);
                    }
                  }
                  if (s0 === peg$FAILED) {
                    if (input3.substr(peg$currPos, 2) === peg$c8) {
                      s0 = peg$c8;
                      peg$currPos += 2;
                    } else {
                      s0 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e9);
                      }
                    }
                    if (s0 === peg$FAILED) {
                      if (input3.substr(peg$currPos, 2) === peg$c9) {
                        s0 = peg$c9;
                        peg$currPos += 2;
                      } else {
                        s0 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e10);
                        }
                      }
                      if (s0 === peg$FAILED) {
                        if (input3.substr(peg$currPos, 2) === peg$c10) {
                          s0 = peg$c10;
                          peg$currPos += 2;
                        } else {
                          s0 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e11);
                          }
                        }
                        if (s0 === peg$FAILED) {
                          if (input3.substr(peg$currPos, 2) === peg$c11) {
                            s0 = peg$c11;
                            peg$currPos += 2;
                          } else {
                            s0 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e12);
                            }
                          }
                          if (s0 === peg$FAILED) {
                            if (input3.substr(peg$currPos, 2) === peg$c12) {
                              s0 = peg$c12;
                              peg$currPos += 2;
                            } else {
                              s0 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e13);
                              }
                            }
                            if (s0 === peg$FAILED) {
                              if (input3.substr(peg$currPos, 2) === peg$c13) {
                                s0 = peg$c13;
                                peg$currPos += 2;
                              } else {
                                s0 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e14);
                                }
                              }
                              if (s0 === peg$FAILED) {
                                if (input3.substr(peg$currPos, 2) === peg$c14) {
                                  s0 = peg$c14;
                                  peg$currPos += 2;
                                } else {
                                  s0 = peg$FAILED;
                                  if (peg$silentFails === 0) {
                                    peg$fail(peg$e15);
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
        return s0;
      }
      function peg$parserubber_unit() {
        var s0;
        s0 = peg$parseunit();
        if (s0 === peg$FAILED) {
          if (input3.substr(peg$currPos, 5) === peg$c15) {
            s0 = peg$c15;
            peg$currPos += 5;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e16);
            }
          }
          if (s0 === peg$FAILED) {
            if (input3.substr(peg$currPos, 4) === peg$c16) {
              s0 = peg$c16;
              peg$currPos += 4;
            } else {
              s0 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e17);
              }
            }
            if (s0 === peg$FAILED) {
              if (input3.substr(peg$currPos, 3) === peg$c17) {
                s0 = peg$c17;
                peg$currPos += 3;
              } else {
                s0 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e18);
                }
              }
            }
          }
        }
        return s0;
      }
      function peg$parsenumber() {
        var s0, s1, s22, s32, s42, s5, s6, s7, s8;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = peg$currPos;
        s22 = peg$currPos;
        s32 = peg$parsesign();
        if (s32 === peg$FAILED) {
          s32 = null;
        }
        s42 = peg$currPos;
        s5 = [];
        if (peg$r0.test(input3.charAt(peg$currPos))) {
          s6 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e20);
          }
        }
        while (s6 !== peg$FAILED) {
          s5.push(s6);
          if (peg$r0.test(input3.charAt(peg$currPos))) {
            s6 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e20);
            }
          }
        }
        if (input3.charCodeAt(peg$currPos) === 46) {
          s6 = peg$c18;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e21);
          }
        }
        if (s6 !== peg$FAILED) {
          s7 = [];
          if (peg$r0.test(input3.charAt(peg$currPos))) {
            s8 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e20);
            }
          }
          if (s8 !== peg$FAILED) {
            while (s8 !== peg$FAILED) {
              s7.push(s8);
              if (peg$r0.test(input3.charAt(peg$currPos))) {
                s8 = input3.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s8 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e20);
                }
              }
            }
          } else {
            s7 = peg$FAILED;
          }
          if (s7 !== peg$FAILED) {
            s5 = [s5, s6, s7];
            s42 = s5;
          } else {
            peg$currPos = s42;
            s42 = peg$FAILED;
          }
        } else {
          peg$currPos = s42;
          s42 = peg$FAILED;
        }
        if (s42 === peg$FAILED) {
          s42 = [];
          if (peg$r0.test(input3.charAt(peg$currPos))) {
            s5 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e20);
            }
          }
          if (s5 !== peg$FAILED) {
            while (s5 !== peg$FAILED) {
              s42.push(s5);
              if (peg$r0.test(input3.charAt(peg$currPos))) {
                s5 = input3.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e20);
                }
              }
            }
          } else {
            s42 = peg$FAILED;
          }
        }
        if (s42 !== peg$FAILED) {
          s32 = [s32, s42];
          s22 = s32;
        } else {
          peg$currPos = s22;
          s22 = peg$FAILED;
        }
        if (s22 !== peg$FAILED) {
          s1 = input3.substring(s1, peg$currPos);
        } else {
          s1 = s22;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f5(s1);
        }
        s0 = s1;
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e19);
          }
        }
        return s0;
      }
      function peg$parsesign() {
        var s0;
        if (input3.charCodeAt(peg$currPos) === 43) {
          s0 = peg$c19;
          peg$currPos++;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e22);
          }
        }
        if (s0 === peg$FAILED) {
          if (input3.charCodeAt(peg$currPos) === 45) {
            s0 = peg$c20;
            peg$currPos++;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e23);
            }
          }
        }
        return s0;
      }
      function peg$parseEOL() {
        var s0, s1;
        s0 = peg$currPos;
        peg$silentFails++;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        peg$silentFails--;
        if (s1 === peg$FAILED) {
          s0 = void 0;
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      peg$result = peg$startRuleFunction();
      if (peg$result !== peg$FAILED && peg$currPos === input3.length) {
        return peg$result;
      } else {
        if (peg$result !== peg$FAILED && peg$currPos < input3.length) {
          peg$fail(peg$endExpectation());
        }
        throw peg$buildStructuredError(
          peg$maxFailExpected,
          peg$maxFailPos < input3.length ? input3.charAt(peg$maxFailPos) : null,
          peg$maxFailPos < input3.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
        );
      }
    }
    return {
      SyntaxError: peg$SyntaxError,
      parse: peg$parse
    };
  })()
);
var tikz_default = (
  // Generated by Peggy 2.0.1.
  //
  // https://peggyjs.org/
  (function() {
    "use strict";
    function peg$subclass(child, parent2) {
      function C() {
        this.constructor = child;
      }
      C.prototype = parent2.prototype;
      child.prototype = new C();
    }
    function peg$SyntaxError(message, expected, found2, location4) {
      var self2 = Error.call(this, message);
      if (Object.setPrototypeOf) {
        Object.setPrototypeOf(self2, peg$SyntaxError.prototype);
      }
      self2.expected = expected;
      self2.found = found2;
      self2.location = location4;
      self2.name = "SyntaxError";
      return self2;
    }
    peg$subclass(peg$SyntaxError, Error);
    function peg$padEnd(str2, targetLength, padString) {
      padString = padString || " ";
      if (str2.length > targetLength) {
        return str2;
      }
      targetLength -= str2.length;
      padString += padString.repeat(targetLength);
      return str2 + padString.slice(0, targetLength);
    }
    peg$SyntaxError.prototype.format = function(sources) {
      var str2 = "Error: " + this.message;
      if (this.location) {
        var src = null;
        var k;
        for (k = 0; k < sources.length; k++) {
          if (sources[k].source === this.location.source) {
            src = sources[k].text.split(/\r\n|\n|\r/g);
            break;
          }
        }
        var s5 = this.location.start;
        var loc = this.location.source + ":" + s5.line + ":" + s5.column;
        if (src) {
          var e2 = this.location.end;
          var filler = peg$padEnd("", s5.line.toString().length, " ");
          var line2 = src[s5.line - 1];
          var last = s5.line === e2.line ? e2.column : line2.length + 1;
          var hatLen = last - s5.column || 1;
          str2 += "\n --> " + loc + "\n" + filler + " |\n" + s5.line + " | " + line2 + "\n" + filler + " | " + peg$padEnd("", s5.column - 1, " ") + peg$padEnd("", hatLen, "^");
        } else {
          str2 += "\n at " + loc;
        }
      }
      return str2;
    };
    peg$SyntaxError.buildMessage = function(expected, found2) {
      var DESCRIBE_EXPECTATION_FNS = {
        literal: function(expectation) {
          return '"' + literalEscape(expectation.text) + '"';
        },
        class: function(expectation) {
          var escapedParts = expectation.parts.map(function(part) {
            return Array.isArray(part) ? classEscape(part[0]) + "-" + classEscape(part[1]) : classEscape(part);
          });
          return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
        },
        any: function() {
          return "any character";
        },
        end: function() {
          return "end of input";
        },
        other: function(expectation) {
          return expectation.description;
        }
      };
      function hex(ch) {
        return ch.charCodeAt(0).toString(16).toUpperCase();
      }
      function literalEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function classEscape(s5) {
        return s5.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
          return "\\x0" + hex(ch);
        }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
          return "\\x" + hex(ch);
        });
      }
      function describeExpectation(expectation) {
        return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
      }
      function describeExpected(expected2) {
        var descriptions = expected2.map(describeExpectation);
        var i2, j;
        descriptions.sort();
        if (descriptions.length > 0) {
          for (i2 = 1, j = 1; i2 < descriptions.length; i2++) {
            if (descriptions[i2 - 1] !== descriptions[i2]) {
              descriptions[j] = descriptions[i2];
              j++;
            }
          }
          descriptions.length = j;
        }
        switch (descriptions.length) {
          case 1:
            return descriptions[0];
          case 2:
            return descriptions[0] + " or " + descriptions[1];
          default:
            return descriptions.slice(0, -1).join(", ") + ", or " + descriptions[descriptions.length - 1];
        }
      }
      function describeFound(found22) {
        return found22 ? '"' + literalEscape(found22) + '"' : "end of input";
      }
      return "Expected " + describeExpected(expected) + " but " + describeFound(found2) + " found.";
    };
    function peg$parse(input3, options) {
      options = options !== void 0 ? options : {};
      var peg$FAILED = {};
      var peg$source = options.grammarSource;
      var peg$startRuleFunctions = { path_spec: peg$parsepath_spec, foreach_body: peg$parseforeach_body };
      var peg$startRuleFunction = peg$parsepath_spec;
      var peg$e0 = peg$anyExpectation();
      var peg$e1 = peg$otherExpectation("same line comment");
      var peg$e2 = peg$otherExpectation("own line comment");
      var peg$e3 = peg$otherExpectation("comment");
      var peg$e4 = peg$otherExpectation("floating comment");
      var peg$e5 = peg$otherExpectation("operation");
      var peg$e6 = peg$otherExpectation("=");
      var peg$f0 = function(v) {
        return v;
      };
      var peg$f1 = function(ops) {
        return { type: "path_spec", content: ops };
      };
      var peg$f2 = function(c1, op2, comment7) {
        return { op: op2, comment: comment7 };
      };
      var peg$f3 = function(c1, ops, c2, body3) {
        const comments = [c1, ...ops.map((x2) => x2.comment), c2].filter(
          (x2) => x2
        );
        const attribute2 = ops.map((x2) => x2.op.content.content).join(" ");
        return {
          type: "animation",
          comments,
          attribute: attribute2,
          content: body3.content
        };
      };
      var peg$f4 = function(start, b) {
        return { ...b, start, type: "foreach" };
      };
      var peg$f5 = function(c1, variables, options2, c2, c3, list6, c4, command) {
        const comments = [c1, c2, c3, c4].filter((x2) => x2);
        return {
          type: "foreach_body",
          variables,
          options: options2 && options2.content,
          list: list6,
          command,
          comments
        };
      };
      var peg$f6 = function(c1, options2, c2, body3) {
        const comments = [c1, c2].filter((x2) => x2);
        return {
          type: "svg_operation",
          options: options2 && options2.content,
          content: body3,
          comments
        };
      };
      var peg$f7 = function(c1, c2, coord, c3, c4, x2) {
        return { coord: x2, comment: c4 };
      };
      var peg$f8 = function(c1, c2, coord, c3, a2, c5) {
        const comments = [c1, c2, c3, a2 && a2.comment, c5].filter((x2) => x2);
        return {
          type: "curve_to",
          controls: a2 ? [coord, a2.coord] : [coord],
          comments
        };
      };
      var peg$f9 = function() {
        return { type: "line_to", command: "|-" };
      };
      var peg$f10 = function() {
        return { type: "line_to", command: "-|" };
      };
      var peg$f11 = function() {
        return { type: "line_to", command: "--" };
      };
      var peg$f12 = function(prefix2, content3) {
        return { type: "coordinate", content: content3, prefix: prefix2 };
      };
      var peg$f13 = function(content3) {
        return { type: "square_brace_group", content: content3 };
      };
      var peg$f14 = function(v) {
        return { type: "unknown", content: v };
      };
      var peg$f15 = function(tok) {
        return options.isSameLineComment(tok);
      };
      var peg$f16 = function(tok) {
        return tok;
      };
      var peg$f17 = function(tok) {
        return options.isOwnLineComment(tok);
      };
      var peg$f18 = function(tok) {
        return tok;
      };
      var peg$f19 = function(tok) {
        return options.isComment(tok);
      };
      var peg$f20 = function(tok) {
        return tok;
      };
      var peg$f21 = function(tok) {
        return options.isWhitespace(tok);
      };
      var peg$f22 = function(tok) {
        return tok;
      };
      var peg$f23 = function(c) {
        return c;
      };
      var peg$f24 = function(tok) {
        return options.isOperation(tok);
      };
      var peg$f25 = function(tok) {
        return { type: "operation", content: tok };
      };
      var peg$f26 = function(tok) {
        return options.isChar(tok, "=");
      };
      var peg$f27 = function(tok) {
        return tok;
      };
      var peg$f28 = function(tok) {
        return options.isChar(tok, "[");
      };
      var peg$f29 = function(tok) {
        return tok;
      };
      var peg$f30 = function(tok) {
        return options.isChar(tok, "]");
      };
      var peg$f31 = function(tok) {
        return tok;
      };
      var peg$f32 = function(tok) {
        return options.isChar(tok, "(");
      };
      var peg$f33 = function(tok) {
        return tok;
      };
      var peg$f34 = function(tok) {
        return options.isChar(tok, ")");
      };
      var peg$f35 = function(tok) {
        return tok;
      };
      var peg$f36 = function(tok) {
        return options.isChar(tok, "+");
      };
      var peg$f37 = function(tok) {
        return tok;
      };
      var peg$f38 = function(tok) {
        return options.isChar(tok, "-");
      };
      var peg$f39 = function(tok) {
        return tok;
      };
      var peg$f40 = function(tok) {
        return options.isChar(tok, "|");
      };
      var peg$f41 = function(tok) {
        return tok;
      };
      var peg$f42 = function(tok) {
        return options.isChar(tok, ".");
      };
      var peg$f43 = function(tok) {
        return tok;
      };
      var peg$f44 = function(tok) {
        return options.isChar(tok, "controls");
      };
      var peg$f45 = function(tok) {
        return tok;
      };
      var peg$f46 = function(tok) {
        return options.isChar(tok, "and");
      };
      var peg$f47 = function(tok) {
        return tok;
      };
      var peg$f48 = function(tok) {
        return options.isChar(tok, "svg");
      };
      var peg$f49 = function(tok) {
        return tok;
      };
      var peg$f50 = function(tok) {
        return options.isGroup(tok);
      };
      var peg$f51 = function(tok) {
        return tok;
      };
      var peg$f52 = function(tok) {
        return options.isAnyMacro(tok);
      };
      var peg$f53 = function(tok) {
        return tok;
      };
      var peg$f54 = function(tok) {
        return options.isChar(tok, "foreach");
      };
      var peg$f55 = function(tok) {
        return tok;
      };
      var peg$f56 = function(tok) {
        return options.isMacro(tok, "foreach");
      };
      var peg$f57 = function(tok) {
        return tok;
      };
      var peg$f58 = function(tok) {
        return options.isChar(tok, "in");
      };
      var peg$f59 = function(tok) {
        return tok;
      };
      var peg$f60 = function(tok) {
        return options.isChar(tok, ":");
      };
      var peg$f61 = function(tok) {
        return tok;
      };
      var peg$currPos = 0;
      var peg$savedPos = 0;
      var peg$posDetailsCache = [{ line: 1, column: 1 }];
      var peg$maxFailPos = 0;
      var peg$maxFailExpected = [];
      var peg$silentFails = 0;
      var peg$result;
      if ("startRule" in options) {
        if (!(options.startRule in peg$startRuleFunctions)) {
          throw new Error(`Can't start parsing from rule "` + options.startRule + '".');
        }
        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
      }
      function text7() {
        return input3.substring(peg$savedPos, peg$currPos);
      }
      function offset() {
        return peg$savedPos;
      }
      function range() {
        return {
          source: peg$source,
          start: peg$savedPos,
          end: peg$currPos
        };
      }
      function location4() {
        return peg$computeLocation(peg$savedPos, peg$currPos);
      }
      function expected(description, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildStructuredError(
          [peg$otherExpectation(description)],
          input3.substring(peg$savedPos, peg$currPos),
          location22
        );
      }
      function error(message, location22) {
        location22 = location22 !== void 0 ? location22 : peg$computeLocation(peg$savedPos, peg$currPos);
        throw peg$buildSimpleError(message, location22);
      }
      function peg$literalExpectation(text22, ignoreCase) {
        return { type: "literal", text: text22, ignoreCase };
      }
      function peg$classExpectation(parts, inverted, ignoreCase) {
        return { type: "class", parts, inverted, ignoreCase };
      }
      function peg$anyExpectation() {
        return { type: "any" };
      }
      function peg$endExpectation() {
        return { type: "end" };
      }
      function peg$otherExpectation(description) {
        return { type: "other", description };
      }
      function peg$computePosDetails(pos) {
        var details3 = peg$posDetailsCache[pos];
        var p5;
        if (details3) {
          return details3;
        } else {
          p5 = pos - 1;
          while (!peg$posDetailsCache[p5]) {
            p5--;
          }
          details3 = peg$posDetailsCache[p5];
          details3 = {
            line: details3.line,
            column: details3.column
          };
          while (p5 < pos) {
            if (input3.charCodeAt(p5) === 10) {
              details3.line++;
              details3.column = 1;
            } else {
              details3.column++;
            }
            p5++;
          }
          peg$posDetailsCache[pos] = details3;
          return details3;
        }
      }
      function peg$computeLocation(startPos, endPos) {
        var startPosDetails = peg$computePosDetails(startPos);
        var endPosDetails = peg$computePosDetails(endPos);
        return {
          source: peg$source,
          start: {
            offset: startPos,
            line: startPosDetails.line,
            column: startPosDetails.column
          },
          end: {
            offset: endPos,
            line: endPosDetails.line,
            column: endPosDetails.column
          }
        };
      }
      function peg$fail(expected2) {
        if (peg$currPos < peg$maxFailPos) {
          return;
        }
        if (peg$currPos > peg$maxFailPos) {
          peg$maxFailPos = peg$currPos;
          peg$maxFailExpected = [];
        }
        peg$maxFailExpected.push(expected2);
      }
      function peg$buildSimpleError(message, location22) {
        return new peg$SyntaxError(message, null, null, location22);
      }
      function peg$buildStructuredError(expected2, found2, location22) {
        return new peg$SyntaxError(
          peg$SyntaxError.buildMessage(expected2, found2),
          expected2,
          found2,
          location22
        );
      }
      function peg$parsepath_spec() {
        var s0, s1, s22, s32, s42, s5;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$currPos;
        s32 = peg$parsesquare_brace_group();
        if (s32 === peg$FAILED) {
          s32 = peg$parsecoordinate();
          if (s32 === peg$FAILED) {
            s32 = peg$parsecurve_to();
            if (s32 === peg$FAILED) {
              s32 = peg$parseline_to();
              if (s32 === peg$FAILED) {
                s32 = peg$parsesvg();
                if (s32 === peg$FAILED) {
                  s32 = peg$parseforeach();
                  if (s32 === peg$FAILED) {
                    s32 = peg$parseoperation();
                    if (s32 === peg$FAILED) {
                      s32 = peg$parsecomment();
                      if (s32 === peg$FAILED) {
                        s32 = peg$parseanimation();
                        if (s32 === peg$FAILED) {
                          s32 = peg$parseunknown();
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
        if (s32 !== peg$FAILED) {
          s42 = [];
          s5 = peg$parse_();
          while (s5 !== peg$FAILED) {
            s42.push(s5);
            s5 = peg$parse_();
          }
          peg$savedPos = s22;
          s22 = peg$f0(s32);
        } else {
          peg$currPos = s22;
          s22 = peg$FAILED;
        }
        if (s22 !== peg$FAILED) {
          while (s22 !== peg$FAILED) {
            s1.push(s22);
            s22 = peg$currPos;
            s32 = peg$parsesquare_brace_group();
            if (s32 === peg$FAILED) {
              s32 = peg$parsecoordinate();
              if (s32 === peg$FAILED) {
                s32 = peg$parsecurve_to();
                if (s32 === peg$FAILED) {
                  s32 = peg$parseline_to();
                  if (s32 === peg$FAILED) {
                    s32 = peg$parsesvg();
                    if (s32 === peg$FAILED) {
                      s32 = peg$parseforeach();
                      if (s32 === peg$FAILED) {
                        s32 = peg$parseoperation();
                        if (s32 === peg$FAILED) {
                          s32 = peg$parsecomment();
                          if (s32 === peg$FAILED) {
                            s32 = peg$parseanimation();
                            if (s32 === peg$FAILED) {
                              s32 = peg$parseunknown();
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
            if (s32 !== peg$FAILED) {
              s42 = [];
              s5 = peg$parse_();
              while (s5 !== peg$FAILED) {
                s42.push(s5);
                s5 = peg$parse_();
              }
              peg$savedPos = s22;
              s22 = peg$f0(s32);
            } else {
              peg$currPos = s22;
              s22 = peg$FAILED;
            }
          }
        } else {
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f1(s1);
        }
        s0 = s1;
        return s0;
      }
      function peg$parseanimation() {
        var s0, s1, s22, s32, s42, s5, s6;
        s0 = peg$currPos;
        s1 = peg$parsecolon();
        if (s1 !== peg$FAILED) {
          s22 = peg$parse_comment_();
          s32 = [];
          s42 = peg$currPos;
          s5 = peg$parseoperation();
          if (s5 !== peg$FAILED) {
            s6 = peg$parse_comment_();
            peg$savedPos = s42;
            s42 = peg$f2(s22, s5, s6);
          } else {
            peg$currPos = s42;
            s42 = peg$FAILED;
          }
          if (s42 !== peg$FAILED) {
            while (s42 !== peg$FAILED) {
              s32.push(s42);
              s42 = peg$currPos;
              s5 = peg$parseoperation();
              if (s5 !== peg$FAILED) {
                s6 = peg$parse_comment_();
                peg$savedPos = s42;
                s42 = peg$f2(s22, s5, s6);
              } else {
                peg$currPos = s42;
                s42 = peg$FAILED;
              }
            }
          } else {
            s32 = peg$FAILED;
          }
          if (s32 !== peg$FAILED) {
            s42 = peg$parseequals();
            if (s42 !== peg$FAILED) {
              s5 = peg$parse_comment_();
              s6 = peg$parsegroup();
              if (s6 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f3(s22, s32, s5, s6);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseforeach() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$parseforeach_keyword();
        if (s1 === peg$FAILED) {
          s1 = peg$parseforeach_macro();
        }
        if (s1 !== peg$FAILED) {
          s22 = peg$parseforeach_body();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f4(s1, s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseforeach_body() {
        var s0, s1, s22, s32, s42, s5, s6, s7, s8, s9;
        s0 = peg$currPos;
        s1 = peg$parse_comment_();
        s22 = peg$currPos;
        s32 = [];
        s42 = peg$currPos;
        s5 = peg$currPos;
        peg$silentFails++;
        s6 = peg$parsein_keyword();
        if (s6 === peg$FAILED) {
          s6 = peg$parsesquare_brace_group();
        }
        peg$silentFails--;
        if (s6 === peg$FAILED) {
          s5 = void 0;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input3.length > peg$currPos) {
            s6 = input3.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e0);
            }
          }
          if (s6 !== peg$FAILED) {
            s5 = [s5, s6];
            s42 = s5;
          } else {
            peg$currPos = s42;
            s42 = peg$FAILED;
          }
        } else {
          peg$currPos = s42;
          s42 = peg$FAILED;
        }
        while (s42 !== peg$FAILED) {
          s32.push(s42);
          s42 = peg$currPos;
          s5 = peg$currPos;
          peg$silentFails++;
          s6 = peg$parsein_keyword();
          if (s6 === peg$FAILED) {
            s6 = peg$parsesquare_brace_group();
          }
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            if (input3.length > peg$currPos) {
              s6 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e0);
              }
            }
            if (s6 !== peg$FAILED) {
              s5 = [s5, s6];
              s42 = s5;
            } else {
              peg$currPos = s42;
              s42 = peg$FAILED;
            }
          } else {
            peg$currPos = s42;
            s42 = peg$FAILED;
          }
        }
        s22 = input3.substring(s22, peg$currPos);
        s32 = peg$parsesquare_brace_group();
        if (s32 === peg$FAILED) {
          s32 = null;
        }
        s42 = peg$parse_comment_();
        s5 = peg$parsein_keyword();
        if (s5 !== peg$FAILED) {
          s6 = peg$parse_comment_();
          s7 = peg$parsegroup();
          if (s7 === peg$FAILED) {
            s7 = peg$parsemacro();
          }
          if (s7 !== peg$FAILED) {
            s8 = peg$parse_comment_();
            s9 = peg$parseforeach();
            if (s9 === peg$FAILED) {
              s9 = peg$parsegroup();
              if (s9 === peg$FAILED) {
                s9 = peg$parsemacro();
              }
            }
            if (s9 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f5(s1, s22, s32, s42, s6, s7, s8, s9);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsesvg() {
        var s0, s1, s22, s32, s42, s5;
        s0 = peg$currPos;
        s1 = peg$parsesvg_keyword();
        if (s1 !== peg$FAILED) {
          s22 = peg$parse_comment_();
          s32 = peg$parsesquare_brace_group();
          if (s32 === peg$FAILED) {
            s32 = null;
          }
          s42 = peg$parse_comment_();
          s5 = peg$parsegroup();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f6(s22, s32, s42, s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsecurve_to() {
        var s0, s1, s22, s32, s42, s5, s6, s7, s8, s9, s10;
        s0 = peg$currPos;
        s1 = peg$parsedotdot();
        if (s1 !== peg$FAILED) {
          s22 = peg$parse_comment_();
          s32 = peg$parsecontrols_keyword();
          if (s32 !== peg$FAILED) {
            s42 = peg$parse_comment_();
            s5 = peg$parsecoordinate();
            if (s5 !== peg$FAILED) {
              s6 = peg$parse_comment_();
              s7 = peg$currPos;
              s8 = peg$parseand_keyword();
              if (s8 !== peg$FAILED) {
                s9 = peg$parse_comment_();
                s10 = peg$parsecoordinate();
                if (s10 !== peg$FAILED) {
                  peg$savedPos = s7;
                  s7 = peg$f7(s22, s42, s5, s6, s9, s10);
                } else {
                  peg$currPos = s7;
                  s7 = peg$FAILED;
                }
              } else {
                peg$currPos = s7;
                s7 = peg$FAILED;
              }
              if (s7 === peg$FAILED) {
                s7 = null;
              }
              s8 = peg$parse_comment_();
              s9 = peg$parsedotdot();
              if (s9 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f8(s22, s42, s5, s6, s7, s8);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseline_to() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$parsepipe();
        if (s1 !== peg$FAILED) {
          s22 = peg$parseminus();
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f9();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseminus();
          if (s1 !== peg$FAILED) {
            s22 = peg$parsepipe();
            if (s22 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f10();
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseminus();
            if (s1 !== peg$FAILED) {
              s22 = peg$parseminus();
              if (s22 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f11();
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          }
        }
        return s0;
      }
      function peg$parsecoordinate() {
        var s0, s1, s22, s32, s42, s5, s6, s7;
        s0 = peg$currPos;
        s1 = peg$currPos;
        s22 = peg$currPos;
        s32 = peg$parseplus();
        if (s32 !== peg$FAILED) {
          s42 = peg$parseplus();
          if (s42 === peg$FAILED) {
            s42 = null;
          }
          s32 = [s32, s42];
          s22 = s32;
        } else {
          peg$currPos = s22;
          s22 = peg$FAILED;
        }
        if (s22 === peg$FAILED) {
          s22 = null;
        }
        s1 = input3.substring(s1, peg$currPos);
        s22 = peg$parseopen_paren();
        if (s22 !== peg$FAILED) {
          s32 = peg$currPos;
          s42 = [];
          s5 = peg$currPos;
          s6 = peg$currPos;
          peg$silentFails++;
          s7 = peg$parseclose_paren();
          peg$silentFails--;
          if (s7 === peg$FAILED) {
            s6 = void 0;
          } else {
            peg$currPos = s6;
            s6 = peg$FAILED;
          }
          if (s6 !== peg$FAILED) {
            if (input3.length > peg$currPos) {
              s7 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e0);
              }
            }
            if (s7 !== peg$FAILED) {
              s6 = [s6, s7];
              s5 = s6;
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          while (s5 !== peg$FAILED) {
            s42.push(s5);
            s5 = peg$currPos;
            s6 = peg$currPos;
            peg$silentFails++;
            s7 = peg$parseclose_paren();
            peg$silentFails--;
            if (s7 === peg$FAILED) {
              s6 = void 0;
            } else {
              peg$currPos = s6;
              s6 = peg$FAILED;
            }
            if (s6 !== peg$FAILED) {
              if (input3.length > peg$currPos) {
                s7 = input3.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e0);
                }
              }
              if (s7 !== peg$FAILED) {
                s6 = [s6, s7];
                s5 = s6;
              } else {
                peg$currPos = s5;
                s5 = peg$FAILED;
              }
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
          }
          s32 = input3.substring(s32, peg$currPos);
          s42 = peg$parseclose_paren();
          if (s42 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f12(s1, s32);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsesquare_brace_group() {
        var s0, s1, s22, s32, s42, s5, s6;
        s0 = peg$currPos;
        s1 = peg$parseopen_square_brace();
        if (s1 !== peg$FAILED) {
          s22 = peg$currPos;
          s32 = [];
          s42 = peg$currPos;
          s5 = peg$currPos;
          peg$silentFails++;
          s6 = peg$parseclose_square_brace();
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            if (input3.length > peg$currPos) {
              s6 = input3.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e0);
              }
            }
            if (s6 !== peg$FAILED) {
              s5 = [s5, s6];
              s42 = s5;
            } else {
              peg$currPos = s42;
              s42 = peg$FAILED;
            }
          } else {
            peg$currPos = s42;
            s42 = peg$FAILED;
          }
          while (s42 !== peg$FAILED) {
            s32.push(s42);
            s42 = peg$currPos;
            s5 = peg$currPos;
            peg$silentFails++;
            s6 = peg$parseclose_square_brace();
            peg$silentFails--;
            if (s6 === peg$FAILED) {
              s5 = void 0;
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
            if (s5 !== peg$FAILED) {
              if (input3.length > peg$currPos) {
                s6 = input3.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e0);
                }
              }
              if (s6 !== peg$FAILED) {
                s5 = [s5, s6];
                s42 = s5;
              } else {
                peg$currPos = s42;
                s42 = peg$FAILED;
              }
            } else {
              peg$currPos = s42;
              s42 = peg$FAILED;
            }
          }
          s22 = input3.substring(s22, peg$currPos);
          s32 = peg$parseclose_square_brace();
          if (s32 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f13(s22);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsedotdot() {
        var s0, s1, s22;
        s0 = peg$currPos;
        s1 = peg$parsedot();
        if (s1 !== peg$FAILED) {
          s22 = peg$parsedot();
          if (s22 !== peg$FAILED) {
            s1 = [s1, s22];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseunknown() {
        var s0, s1;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f14(s1);
        }
        s0 = s1;
        return s0;
      }
      function peg$parsesame_line_comment() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f15(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f16(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e1);
          }
        }
        return s0;
      }
      function peg$parseown_line_comment() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f17(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f18(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e2);
          }
        }
        return s0;
      }
      function peg$parsecomment() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f19(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f20(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e3);
          }
        }
        return s0;
      }
      function peg$parse_() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f21(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f22(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parse_comment_() {
        var s0, s1, s22, s32, s42;
        peg$silentFails++;
        s0 = peg$currPos;
        s1 = [];
        s22 = peg$parse_();
        while (s22 !== peg$FAILED) {
          s1.push(s22);
          s22 = peg$parse_();
        }
        s22 = peg$parsecomment();
        if (s22 === peg$FAILED) {
          s22 = null;
        }
        s32 = [];
        s42 = peg$parse_();
        while (s42 !== peg$FAILED) {
          s32.push(s42);
          s42 = peg$parse_();
        }
        peg$savedPos = s0;
        s0 = peg$f23(s22);
        peg$silentFails--;
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e4);
        }
        return s0;
      }
      function peg$parseoperation() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f24(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f25(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e5);
          }
        }
        return s0;
      }
      function peg$parseequals() {
        var s0, s1, s22;
        peg$silentFails++;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f26(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f27(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        peg$silentFails--;
        if (s0 === peg$FAILED) {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        return s0;
      }
      function peg$parseopen_square_brace() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f28(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f29(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseclose_square_brace() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f30(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f31(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseopen_paren() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f32(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f33(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseclose_paren() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f34(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f35(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseplus() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f36(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f37(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseminus() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f38(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f39(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsepipe() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f40(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f41(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsedot() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f42(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f43(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsecontrols_keyword() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f44(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f45(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseand_keyword() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f46(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f47(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsesvg_keyword() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f48(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f49(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsegroup() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f50(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f51(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsemacro() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f52(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f53(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseforeach_keyword() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f54(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f55(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseforeach_macro() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f56(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f57(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsein_keyword() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f58(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f59(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parsecolon() {
        var s0, s1, s22;
        s0 = peg$currPos;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s22 = peg$f60(s1);
          if (s22) {
            s22 = void 0;
          } else {
            s22 = peg$FAILED;
          }
          if (s22 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f61(s1);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      function peg$parseEOL() {
        var s0, s1;
        s0 = peg$currPos;
        peg$silentFails++;
        if (input3.length > peg$currPos) {
          s1 = input3.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        peg$silentFails--;
        if (s1 === peg$FAILED) {
          s0 = void 0;
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        return s0;
      }
      if (!options.isWhitespace) {
        try {
          Object.assign(options, {
            isChar: (node3, char) => node3.type === "string" && node3.content === char,
            isOperation: (node3) => node3.type === "string" && node3.content.match(/[a-zA-Z]/),
            isWhitespace: (node3) => node3.type === "whitespace" || node3.type === "parbreak",
            isSameLineComment: (node3) => node3.type === "comment" && node3.sameline,
            isOwnLineComment: (node3) => node3.type === "comment" && !node3.sameline,
            isComment: (node3) => node3.type === "comment",
            isGroup: (node3) => node3.type === "group",
            isMacro: (node3, name3) => node3.type === "macro" && node3.content === name3,
            isAnyMacro: (node3) => node3.type === "macro"
          });
        } catch (e2) {
          console.warn("Error when initializing parser", e2);
        }
      }
      peg$result = peg$startRuleFunction();
      if (peg$result !== peg$FAILED && peg$currPos === input3.length) {
        return peg$result;
      } else {
        if (peg$result !== peg$FAILED && peg$currPos < input3.length) {
          peg$fail(peg$endExpectation());
        }
        throw peg$buildStructuredError(
          peg$maxFailExpected,
          peg$maxFailPos < input3.length ? input3.charAt(peg$maxFailPos) : null,
          peg$maxFailPos < input3.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
        );
      }
    }
    return {
      SyntaxError: peg$SyntaxError,
      parse: peg$parse
    };
  })()
);
var LatexPegParser = latex_default;
var AlignEnvironmentPegParser = align_environment_default;
var ArgSpecPegParser = xparse_argspec_default;
var PgfkeysPegParser = pgfkeys_default;
var TikzPegParser = tikz_default;

// ../../node_modules/@unified-latex/unified-latex-util-argspec/index.js
var parseCache = {};
function parse6(str2 = "") {
  parseCache[str2] = parseCache[str2] || ArgSpecPegParser.parse(str2);
  return parseCache[str2];
}

// ../../node_modules/@unified-latex/unified-latex-util-scan/index.js
var import_trie_prefix_tree = __toESM(require_dist(), 1);
function scan(nodes, token, options) {
  const { startIndex, onlySkipWhitespaceAndComments, allowSubstringMatches } = options || {};
  if (typeof token === "string") {
    token = { type: "string", content: token };
  }
  for (let i2 = startIndex || 0; i2 < nodes.length; i2++) {
    const node3 = nodes[i2];
    if (node3.type === token.type) {
      switch (node3.type) {
        case "comment":
        case "displaymath":
        case "inlinemath":
        case "root":
        case "parbreak":
        case "whitespace":
        case "verb":
        case "verbatim":
        case "group":
          return i2;
        case "macro":
          if (node3.content === token.content) {
            return i2;
          }
          break;
        case "environment":
        case "mathenv":
          if (printRaw(node3.env) === printRaw(token.env)) {
            return i2;
          }
          break;
        case "string":
          if (node3.content === token.content) {
            return i2;
          }
          if (allowSubstringMatches && node3.content.indexOf(token.content) >= 0) {
            return i2;
          }
          break;
      }
    }
    if (onlySkipWhitespaceAndComments && !match.whitespace(node3) && !match.comment(node3)) {
      return null;
    }
  }
  return null;
}

// ../../node_modules/@unified-latex/unified-latex-util-arguments/index.js
function gobbleSingleArgument(nodes, argSpec, startPos = 0) {
  if (typeof argSpec === "string" || !argSpec.type) {
    throw new Error(
      `argSpec must be an already-parsed argument specification, not "${JSON.stringify(
        argSpec
      )}"`
    );
  }
  let argument2 = null;
  let currPos = startPos;
  const gobbleWhitespace = argSpec.noLeadingWhitespace ? () => {
  } : () => {
    while (currPos < nodes.length) {
      if (!match.whitespace(nodes[currPos])) {
        break;
      }
      currPos++;
    }
  };
  const openMark = argSpec.openBrace || "";
  const closeMark = argSpec.closeBrace || "";
  const acceptGroup = (argSpec.type === "mandatory" || argSpec.type === "optional") && openMark === "{" && closeMark === "}";
  function findBracePositions() {
    let openMarkPos = null;
    if (openMark) {
      openMarkPos = nodes.findIndex(
        (node3, i2) => i2 >= currPos && match.string(node3, openMark)
      );
      if (openMarkPos < currPos) {
        openMarkPos = null;
      }
    }
    let closeMarkPos = null;
    if (openMarkPos != null) {
      closeMarkPos = nodes.findIndex(
        (node3, i2) => i2 >= openMarkPos + 1 && match.string(node3, closeMark)
      );
      if (closeMarkPos < openMarkPos + 1) {
        closeMarkPos = null;
      }
    }
    return [openMarkPos, closeMarkPos];
  }
  gobbleWhitespace();
  const currNode = nodes[currPos];
  if (currNode == null || match.comment(currNode) || match.parbreak(currNode)) {
    return { argument: argument2, nodesRemoved: 0 };
  }
  switch (argSpec.type) {
    case "mandatory":
      if (acceptGroup) {
        let content3 = [currNode];
        if (match.group(currNode)) {
          content3 = currNode.content;
        }
        argument2 = arg(content3, {
          openMark,
          closeMark
        });
        currPos++;
        break;
      }
    case "optional":
      if (acceptGroup && match.group(currNode)) {
        argument2 = arg(currNode.content, {
          openMark,
          closeMark
        });
        currPos++;
        break;
      }
      if (match.string(currNode, openMark)) {
        const [openMarkPos, closeMarkPos] = findBracePositions();
        if (openMarkPos != null && closeMarkPos != null) {
          argument2 = arg(nodes.slice(openMarkPos + 1, closeMarkPos), {
            openMark,
            closeMark
          });
          currPos = closeMarkPos + 1;
          break;
        }
      }
      break;
    case "optionalStar":
    case "optionalToken":
      if (match.string(
        currNode,
        argSpec.type === "optionalStar" ? "*" : argSpec.token
      )) {
        argument2 = arg([currNode], { openMark: "", closeMark: "" });
        currPos++;
        break;
      }
      break;
    case "until": {
      if (argSpec.stopTokens.length > 1) {
        console.warn(
          `"until" matches with multi-token stop conditions are not yet implemented`
        );
        break;
      }
      const rawToken = argSpec.stopTokens[0];
      const stopToken = rawToken === " " ? { type: "whitespace" } : { type: "string", content: argSpec.stopTokens[0] };
      let matchPos = scan(nodes, stopToken, {
        startIndex: startPos,
        allowSubstringMatches: true
      });
      if (matchPos != null && partialStringMatch(nodes[matchPos], stopToken)) {
        console.warn(
          `"until" arguments that stop at non-punctuation symbols is not yet implemented`
        );
        break;
      }
      if (matchPos == null) {
        break;
      }
      argument2 = arg(nodes.slice(startPos, matchPos), {
        openMark: "",
        closeMark: rawToken
      });
      currPos = matchPos;
      if (currPos < nodes.length) {
        currPos++;
      }
      break;
    }
    default:
      console.warn(
        `Don't know how to find an argument of argspec type "${argSpec.type}"`
      );
  }
  const nodesRemoved = argument2 ? currPos - startPos : 0;
  nodes.splice(startPos, nodesRemoved);
  return { argument: argument2, nodesRemoved };
}
function partialStringMatch(node3, token) {
  return match.anyString(node3) && match.anyString(token) && node3.content.length > token.content.length;
}
function gobbleArguments(nodes, argSpec, startPos = 0) {
  if (typeof argSpec === "function") {
    return argSpec(nodes, startPos);
  }
  if (typeof argSpec === "string") {
    argSpec = parse6(argSpec);
  }
  const args = [];
  let nodesRemoved = 0;
  for (const spec of argSpec) {
    const { argument: argument2, nodesRemoved: removed } = gobbleSingleArgument(
      nodes,
      spec,
      startPos
    );
    if (argument2) {
      args.push(argument2);
      nodesRemoved += removed;
    } else {
      args.push(arg([], { openMark: "", closeMark: "" }));
    }
  }
  return { args, nodesRemoved };
}
function attachMacroArgsInArray(nodes, macros18) {
  let currIndex;
  const isRelevantMacro = match.createMacroMatcher(macros18);
  function gobbleUntilMacro() {
    while (currIndex >= 0 && !isRelevantMacro(nodes[currIndex])) {
      currIndex--;
    }
  }
  currIndex = nodes.length - 1;
  while (currIndex >= 0) {
    gobbleUntilMacro();
    if (currIndex < 0) {
      return;
    }
    const macroIndex = currIndex;
    const macro2 = nodes[macroIndex];
    const macroName = macro2.content;
    const macroInfo2 = macros18[macroName];
    updateRenderInfo(macro2, macroInfo2.renderInfo);
    const signatureOrParser = macroInfo2.argumentParser || macroInfo2.signature;
    if (signatureOrParser == null) {
      currIndex--;
      continue;
    }
    if (macro2.args != null) {
      currIndex = macroIndex - 1;
      continue;
    }
    currIndex++;
    const { args } = gobbleArguments(nodes, signatureOrParser, currIndex);
    macro2.args = args;
    currIndex = macroIndex - 1;
  }
}
var unifiedLatexAttachMacroArguments = function unifiedLatexAttachMacroArguments2(options) {
  return (tree) => {
    const { macros: macros18 = {} } = options || {};
    if (Object.keys(macros18).length === 0) {
      console.warn(
        "Attempting to attach macro arguments but no macros are specified."
      );
    }
    visit2(
      tree,
      (nodes) => {
        attachMacroArgsInArray(nodes, macros18);
      },
      { includeArrays: true, test: Array.isArray }
    );
  };
};

// ../../node_modules/@unified-latex/unified-latex-ctan/index.js
var import_color2 = __toESM(require_color(), 1);
var import_color3 = __toESM(require_color(), 1);
var macros2 = {
  cref: { signature: "s m" },
  Cref: { signature: "s m" },
  crefrange: { signature: "s m m" },
  Crefrange: { signature: "s m m" },
  cpageref: { signature: "s m" },
  Cpageref: { signature: "s m" },
  ref: { signature: "m" },
  pageref: { signature: "m" },
  namecref: { signature: "m" },
  nameCref: { signature: "m" },
  lcnamecref: { signature: "m" },
  namecrefs: { signature: "m" },
  nameCrefs: { signature: "m" },
  lcnamecrefs: { signature: "m" },
  labelcref: { signature: "m" },
  labelcpageref: { signature: "m" },
  crefalias: { signature: "m m" },
  crefname: { signature: "m m m" },
  // XXX there are many more obscure commands to add here
  // https://ctan.org/pkg/cleveref
  crefdefaultlabelformat: { signature: "m" },
  crefrangeconjunction: { signature: "m" }
};
var environments2 = {};
function cleanEnumerateBody(ast, itemName = "item") {
  let { segments, macros: macros172 } = splitOnMacro(ast, itemName);
  for (let i2 = 0; i2 < segments.length; i2++) {
    const segment = segments[i2];
    if (i2 === 0) {
      trimEnd(segment);
    } else {
      trim(segment);
    }
    if (segment.length > 0 && i2 > 0) {
      segment.unshift({ type: "whitespace" });
    }
  }
  let insertParbreakBefore = /* @__PURE__ */ new WeakSet();
  let body3 = macros172.flatMap((node3, i2) => {
    var _a6;
    const segment = segments[i2 + 1];
    const trailingComments = popTrailingComments(segment);
    node3.args = node3.args || [];
    node3.args.push(arg(segment, { openMark: "", closeMark: "" }));
    updateRenderInfo(node3, { inParMode: true });
    if (i2 > 0 || ((_a6 = segments[0]) == null ? void 0 : _a6.length) > 0) {
      insertParbreakBefore.add(node3);
    }
    return [node3, ...trailingComments];
  });
  body3 = body3.flatMap(
    (node3) => insertParbreakBefore.has(node3) ? [{ type: "parbreak" }, node3] : node3
  );
  body3.unshift(...segments[0]);
  for (let i2 = 0; i2 < body3.length - 1; i2++) {
    const node3 = body3[i2];
    const nextNode = body3[i2 + 1];
    if (!match.parbreak(nextNode)) {
      continue;
    }
    if (match.comment(node3)) {
      node3.suffixParbreak = true;
    }
    if (match.macro(node3) && node3.args && node3.args[node3.args.length - 1].closeMark === "") {
      const args = node3.args[node3.args.length - 1].content;
      const lastArg = args[args.length - 1];
      if (match.comment(lastArg)) {
        lastArg.suffixParbreak = true;
      }
    }
  }
  return body3;
}
function popTrailingComments(nodes) {
  let lastNodeIndex = lastSignificantNodeIndex(nodes, true);
  if (lastNodeIndex === nodes.length - 1 || lastNodeIndex == null && nodes.length === 0) {
    return [];
  }
  if (lastNodeIndex == null) {
    lastNodeIndex = -1;
  }
  return nodes.splice(lastNodeIndex + 1);
}
var macros22 = {
  answerline: { signature: "o" },
  fillin: { signature: "o o" },
  fullwidth: { signature: "m" },
  fillwidthlines: { signature: "m" },
  fillwidthdottedlines: { signature: "m" },
  fillwidthgrid: { signature: "m" },
  makeemptybox: { signature: "m" },
  CorrectChoiceEmphasis: {
    signature: "m",
    renderInfo: { breakAround: true }
  },
  SolutionEmphasis: { signature: "m", renderInfo: { breakAround: true } },
  uplevel: { signature: "m", renderInfo: { breakAround: true } },
  checkboxchar: { signature: "m", renderInfo: { breakAround: true } },
  checkedchar: { signature: "m", renderInfo: { breakAround: true } },
  pointname: { signature: "m", renderInfo: { breakAround: true } },
  marginpointname: { signature: "m", renderInfo: { breakAround: true } },
  extrawidth: { signature: "m", renderInfo: { breakAround: true } },
  pointformat: { signature: "m", renderInfo: { breakAround: true } },
  bonuspointformat: { signature: "m", renderInfo: { breakAround: true } },
  totalformat: { signature: "m", renderInfo: { breakAround: true } },
  qformat: { signature: "m", renderInfo: { breakAround: true } },
  titledquestion: { signature: "m o", renderInfo: { breakAround: true } },
  pointpoints: { signature: "m m", renderInfo: { breakAround: true } },
  bonuspointpoints: { signature: "m m", renderInfo: { breakAround: true } }
};
var environments22 = {
  choices: {
    signature: "o",
    processContent: (nodes) => cleanEnumerateBody(nodes, "choice")
  },
  checkboxes: {
    signature: "o",
    processContent: (nodes) => cleanEnumerateBody(nodes, "choice")
  },
  oneparchoices: {
    signature: "o",
    processContent: (nodes) => cleanEnumerateBody(nodes, "choice")
  },
  oneparcheckboxes: {
    signature: "o",
    processContent: (nodes) => cleanEnumerateBody(nodes, "choice")
  },
  parts: {
    signature: "o",
    processContent: (nodes) => cleanEnumerateBody(nodes, "part")
  },
  subparts: {
    signature: "o",
    processContent: (nodes) => cleanEnumerateBody(nodes, "subpart")
  },
  subsubparts: {
    signature: "o",
    processContent: (nodes) => cleanEnumerateBody(nodes, "subsubpart")
  },
  questions: {
    signature: "o",
    processContent: (nodes) => cleanEnumerateBody(nodes, "question")
  }
};
var macros3 = {
  geometry: {
    signature: "m",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  }
};
var environments3 = {};
var macros4 = {
  hypersetup: {
    signature: "m",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  href: { signature: "o m m" },
  url: { signature: "m" },
  nolinkurl: { signature: "m" },
  hyperbaseurl: { signature: "m" },
  hyperimage: { signature: "m m" },
  hyperdef: { signature: "m m m" },
  hyperref: { signature: "o m" },
  hyperlink: { signature: "m m" },
  hypertarget: { signature: "m m" },
  autoref: { signature: "s m" },
  pageref: { signature: "s m" },
  autopageref: { signature: "s m" },
  pdfstringdef: { signature: "m m" },
  pdfbookmark: { signature: "o m m" },
  currentpdfbookmark: { signature: "m m" },
  subpdfbookmark: { signature: "m m" },
  belowpdfbookmark: { signature: "m m" },
  texorpdfstring: { signature: "m m" },
  thispdfpagelabel: { signature: "m" },
  hypercalcbp: { signature: "m" }
};
var environments4 = {};
var macros5 = {
  // Special
  "\\": { signature: "!s o" },
  _: { signature: "m", escapeToken: "" },
  "^": { signature: "m", escapeToken: "" },
  // \newcommand arg signature from https://www.texdev.net/2020/08/19/the-good-the-bad-and-the-ugly-creating-document-commands
  // List can be found in latex2e.pdf "An unofficial reference manual"
  newcommand: {
    signature: "s +m o +o +m",
    renderInfo: {
      breakAround: true,
      namedArguments: ["starred", "name", "numArgs", "default", "body"]
    }
  },
  renewcommand: {
    signature: "s +m o +o +m",
    renderInfo: {
      breakAround: true,
      namedArguments: ["starred", "name", "numArgs", "default", "body"]
    }
  },
  providecommand: {
    signature: "s +m o +o +m",
    renderInfo: { breakAround: true }
  },
  // Counters
  newcounter: {
    signature: "m o",
    renderInfo: { breakAround: true }
  },
  usecounter: {
    signature: "m"
  },
  setcounter: {
    signature: "m m",
    renderInfo: { breakAround: true }
  },
  addtocounter: {
    signature: "m m",
    renderInfo: { breakAround: true }
  },
  stepcounter: {
    signature: "m",
    renderInfo: { breakAround: true }
  },
  refstepcounter: {
    signature: "m",
    renderInfo: { breakAround: true }
  },
  // Lengths
  newlength: {
    signature: "m",
    renderInfo: { breakAround: true }
  },
  addtolength: {
    signature: "m m",
    renderInfo: { breakAround: true }
  },
  settodepth: {
    signature: "m m",
    renderInfo: { breakAround: true }
  },
  settoheight: {
    signature: "m m",
    renderInfo: { breakAround: true }
  },
  settowidth: {
    signature: "m m",
    renderInfo: { breakAround: true }
  },
  // Spaces
  stretch: { signature: "m" },
  hspace: { signature: "s m" },
  vspace: { signature: "s m", renderInfo: { breakAround: true } },
  vfill: { renderInfo: { breakAround: true } },
  indent: { renderInfo: { breakAround: true } },
  phantom: { signature: "m" },
  vphantom: { signature: "m" },
  hphantom: { signature: "m" },
  noindent: { renderInfo: { breakAround: true } },
  smallskip: { renderInfo: { breakAround: true } },
  medskip: { renderInfo: { breakAround: true } },
  bigskip: { renderInfo: { breakAround: true } },
  smallbreak: { renderInfo: { breakAround: true } },
  medbreak: { renderInfo: { breakAround: true } },
  bigbreak: { renderInfo: { breakAround: true } },
  newline: { renderInfo: { breakAround: true } },
  linebreak: { signature: "o", renderInfo: { breakAround: true } },
  nolinebreak: { signature: "o", renderInfo: { breakAround: true } },
  clearpage: { renderInfo: { breakAround: true } },
  cleardoublepage: { renderInfo: { breakAround: true } },
  newpage: { renderInfo: { breakAround: true } },
  enlargethispage: { signature: "s", renderInfo: { breakAround: true } },
  pagebreak: { signature: "o", renderInfo: { breakAround: true } },
  nopagebreak: { signature: "o", renderInfo: { breakAround: true } },
  // Boxes
  newsavebox: {
    signature: "m",
    renderInfo: { breakAround: true }
  },
  sbox: {
    signature: "m m",
    renderInfo: { breakAround: true }
  },
  savebox: {
    signature: "m o o m",
    renderInfo: { breakAround: true }
  },
  mbox: { signature: "m" },
  makebox: { signature: "d() o o m", renderInfo: { breakAround: true } },
  fbox: { signature: "m" },
  framebox: { signature: "o o m", renderInfo: { breakAround: true } },
  frame: { signature: "m", renderInfo: { breakAround: true } },
  parbox: { signature: "o o o m m", renderInfo: { breakAround: true } },
  raisebox: { signature: "m o o m" },
  marginpar: { signature: "o m", renderInfo: { breakAround: true } },
  colorbox: { signature: "o m m", renderInfo: { breakAround: true } },
  fcolorbox: { signature: "o m m", renderInfo: { breakAround: true } },
  rotatebox: { signature: "o m m" },
  scalebox: { signature: "m o m" },
  reflectbox: { signature: "m" },
  resizebox: { signature: "s m m m" },
  // Define environments
  newenvironment: {
    signature: "s m o o m m",
    renderInfo: { breakAround: true }
  },
  renewenvironment: {
    signature: "s m o o m m",
    renderInfo: { breakAround: true }
  },
  newtheorem: {
    signature: "s m o m o",
    renderInfo: { breakAround: true }
  },
  newfont: {
    signature: "m m",
    renderInfo: { breakAround: true }
  },
  // Counters
  alph: { signature: "m" },
  Alph: { signature: "m" },
  arabic: { signature: "m" },
  roman: { signature: "m" },
  Roman: { signature: "m" },
  fnsymbol: { signature: "m" },
  // Other
  documentclass: {
    signature: "o m",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  usepackage: {
    signature: "o m",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  item: {
    signature: "o",
    renderInfo: { hangingIndent: true, namedArguments: ["label"] }
  },
  value: { signature: "m" },
  centering: { renderInfo: { breakAround: true } },
  input: { signature: "m", renderInfo: { breakAround: true } },
  include: { signature: "m", renderInfo: { breakAround: true } },
  includeonly: {
    signature: "m",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  discretionary: { signature: "m m m" },
  hyphenation: { signature: "m m m" },
  footnote: { signature: "o m", renderInfo: { inParMode: true } },
  footnotemark: { signature: "o" },
  footnotetext: { signature: "o m", renderInfo: { inParMode: true } },
  caption: {
    signature: "o m",
    renderInfo: { inParMode: true, breakAround: true }
  },
  // Math Commands
  sqrt: { signature: "o m", renderInfo: { inMathMode: true } },
  frac: { signature: "m m", renderInfo: { inMathMode: true } },
  stackrel: { signature: "m m" },
  ensuremath: { signature: "m", renderInfo: { inMathMode: true } },
  // Layout commands
  abstract: {
    signature: "m",
    renderInfo: { breakAround: true, inParMode: true }
  },
  maketitle: { renderInfo: { breakAround: true } },
  doublespacing: { renderInfo: { breakAround: true } },
  singlespacing: { renderInfo: { breakAround: true } },
  author: {
    signature: "m",
    renderInfo: { breakAround: true, inParMode: true }
  },
  date: { signature: "o m", renderInfo: { breakAround: true } },
  thanks: {
    signature: "m",
    renderInfo: { breakAround: true, inParMode: true }
  },
  // amsart document class adds an optional argument
  title: {
    signature: "o m",
    renderInfo: { breakAround: true, inParMode: true }
  },
  pagenumbering: { signature: "m", renderInfo: { breakAround: true } },
  pagestyle: { signature: "m", renderInfo: { breakAround: true } },
  thispagestyle: { signature: "m", renderInfo: { breakAround: true } },
  // Colors
  definecolor: { signature: "m m m", renderInfo: { breakAround: true } },
  pagecolor: { signature: "o m", renderInfo: { breakAround: true } },
  nopagecolor: { renderInfo: { breakAround: true } },
  multicolumn: { signature: "m m m" },
  // Graphics
  includegraphics: {
    signature: "s o o m",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  rule: { signature: "o m m" },
  // Sectioning
  part: {
    signature: "s o m",
    renderInfo: {
      breakAround: true,
      inParMode: true,
      namedArguments: ["starred", "tocTitle", "title"]
    }
  },
  chapter: {
    signature: "s o m",
    renderInfo: {
      breakAround: true,
      inParMode: true,
      namedArguments: ["starred", "tocTitle", "title"]
    }
  },
  section: {
    signature: "s o m",
    renderInfo: {
      breakAround: true,
      inParMode: true,
      namedArguments: ["starred", "tocTitle", "title"]
    }
  },
  subsection: {
    signature: "s o m",
    renderInfo: {
      breakAround: true,
      inParMode: true,
      namedArguments: ["starred", "tocTitle", "title"]
    }
  },
  subsubsection: {
    signature: "s o m",
    renderInfo: {
      breakAround: true,
      inParMode: true,
      namedArguments: ["starred", "tocTitle", "title"]
    }
  },
  paragraph: {
    signature: "s o m",
    renderInfo: {
      breakAround: true,
      inParMode: true,
      namedArguments: ["starred", "tocTitle", "title"]
    }
  },
  subparagraph: {
    signature: "s o m",
    renderInfo: {
      breakAround: true,
      inParMode: true,
      namedArguments: ["starred", "tocTitle", "title"]
    }
  },
  appendix: { renderInfo: { breakAround: true, inParMode: true } },
  frontmatter: { renderInfo: { breakAround: true, inParMode: true } },
  mainmatter: { renderInfo: { breakAround: true, inParMode: true } },
  backmatter: { renderInfo: { breakAround: true, inParMode: true } },
  // Citing and references
  bibitem: { signature: "o m", renderInfo: { hangingIndent: true } },
  cite: { signature: "o m" },
  // Fonts
  textrm: { signature: "m", renderInfo: { inParMode: true } },
  textit: { signature: "m", renderInfo: { inParMode: true } },
  textmd: { signature: "m", renderInfo: { inParMode: true } },
  textbf: { signature: "m", renderInfo: { inParMode: true } },
  textup: { signature: "m", renderInfo: { inParMode: true } },
  textsl: { signature: "m", renderInfo: { inParMode: true } },
  textsf: { signature: "m", renderInfo: { inParMode: true } },
  textsc: { signature: "m", renderInfo: { inParMode: true } },
  texttt: { signature: "m", renderInfo: { inParMode: true } },
  emph: { signature: "m", renderInfo: { inParMode: true } },
  textnormal: { signature: "m", renderInfo: { inParMode: true } },
  uppercase: { signature: "m", renderInfo: { inParMode: true } },
  mathbf: { signature: "m" },
  mathsf: { signature: "m" },
  mathtt: { signature: "m" },
  mathit: { signature: "m" },
  mathnormal: { signature: "m" },
  mathcal: { signature: "m" },
  mathrm: { signature: "m" },
  // Other
  setlength: { signature: "m m", renderInfo: { breakAround: true } },
  ref: { signature: "s m" },
  label: { signature: "o m" },
  // cleveref changes \label to have this signature
  printbibliography: { renderInfo: { breakAround: true } },
  addtocontents: { signature: "m m", renderInfo: { breakAround: true } },
  addcontentsline: { signature: "m m m", renderInfo: { breakAround: true } },
  contentsline: { signature: "m m m", renderInfo: { breakAround: true } },
  bibliography: { signature: "m", renderInfo: { breakAround: true } },
  bibliographystyle: { signature: "m", renderInfo: { breakAround: true } }
};
var environments5 = {
  document: {
    processContent: (nodes) => {
      trim(nodes);
      return nodes;
    }
  },
  array: { signature: "o m", renderInfo: { alignContent: true } },
  description: { signature: "o", processContent: cleanEnumerateBody },
  enumerate: {
    signature: "o",
    processContent: cleanEnumerateBody,
    renderInfo: { pgfkeysArgs: true }
  },
  itemize: { signature: "o", processContent: cleanEnumerateBody },
  trivlist: { signature: "o", processContent: cleanEnumerateBody },
  list: { signature: "m m", processContent: cleanEnumerateBody },
  figure: { signature: "o" },
  "figure*": { signature: "o" },
  filecontents: { signature: "o m" },
  "filecontents*": { signature: "o m" },
  minipage: { signature: "o o o m" },
  picture: { signature: "r() d()" },
  tabbing: { renderInfo: { alignContent: true } },
  table: { signature: "o" },
  tabular: { signature: "o m", renderInfo: { alignContent: true } },
  "tabular*": { signature: "m o m", renderInfo: { alignContent: true } },
  thebibliography: {
    signature: "m",
    processContent: (nodes) => cleanEnumerateBody(nodes, "bibitem")
  },
  // Math
  math: { renderInfo: { inMathMode: true } }
};
var argSpecM = parse6("m")[0];
var argSpecO = parse6("o")[0];
var argSpecRDelim = {};
var argumentParser = (nodes, startPos) => {
  const { argument: optionalArg, nodesRemoved: optionalArgNodesRemoved } = gobbleSingleArgument(nodes, argSpecO, startPos);
  let codeArg = null;
  let codeArgNodesRemoved = 0;
  const nextNode = nodes[startPos];
  if (match.group(nextNode)) {
    const mandatoryArg = gobbleSingleArgument(nodes, argSpecM, startPos);
    codeArg = mandatoryArg.argument;
    codeArgNodesRemoved = mandatoryArg.nodesRemoved;
  } else if (match.string(nextNode) && nextNode.content.length === 1) {
    const delim = nextNode.content;
    argSpecRDelim[delim] = argSpecRDelim[delim] || parse6(`r${delim}${delim}`)[0];
    const delimArg = gobbleSingleArgument(
      nodes,
      argSpecRDelim[delim],
      startPos
    );
    codeArg = delimArg.argument;
    codeArgNodesRemoved = delimArg.nodesRemoved;
  }
  return {
    args: [optionalArg || arg(null), codeArg || arg(null)],
    nodesRemoved: optionalArgNodesRemoved + codeArgNodesRemoved
  };
};
var macros6 = {
  lstset: { signature: "m" },
  lstinline: { argumentParser },
  lstinputlisting: { signature: "o m" },
  lstdefinestyle: { signature: "m m" },
  lstnewenvironment: { signature: "m o o m m" },
  lstMakeShortInline: { signature: "o m" },
  lstDeleteShortInline: { signature: "m" },
  lstdefineformat: { signature: "m m" },
  lstdefinelanguage: { signature: "o m o m o" },
  lstalias: { signature: "o m o m" },
  lstloadlanguages: { signature: "m" }
};
var environments6 = {};
var macros7 = {
  see: { signature: "m m" },
  seealso: { signature: "m m" },
  seename: { signature: "m" },
  alsoname: { signature: "m" },
  index: { signature: "m" }
};
var environments7 = {};
var macros8 = {
  mathtoolsset: {
    signature: "m",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  mathllap: {
    signature: "o m"
  },
  mathrlap: {
    signature: "o m"
  },
  mathclap: {
    signature: "o m"
  },
  clap: {
    signature: "m"
  },
  mathmbox: {
    signature: "m"
  },
  mathmakebox: {
    signature: "o o m"
  },
  cramped: {
    signature: "o m"
  },
  crampedllap: {
    signature: "o m"
  },
  crampedrlap: {
    signature: "o m"
  },
  crampedclap: {
    signature: "o m"
  },
  crampedsubstack: {
    signature: "o m"
  },
  smashoperator: {
    signature: "o m"
  },
  newtagform: {
    signature: "m o m m"
  },
  renewtagform: {
    signature: "m o m m"
  },
  usetagform: {
    signature: "m"
  },
  xleftrightarrow: { signature: "o m" },
  xLeftarrow: { signature: "o m" },
  xhookleftarrow: { signature: "o m" },
  xmapsto: { signature: "o m" },
  xRightarrow: { signature: "o m" },
  xLeftrightarrow: { signature: "o m" },
  xhookrightarrow: { signature: "o m" },
  underbracket: { signature: "o o m" },
  overbracket: { signature: "o o m" },
  underbrace: { signature: "m" },
  overbrace: { signature: "m" },
  shoveleft: { signature: "o m" },
  shoveright: { signature: "o m" },
  ArrowBetweenLines: { signature: "s o" },
  vdotswithin: { signature: "m" },
  shortdotswithin: { signature: "s m" },
  DeclarePairedDelimiter: {
    signature: "m m m",
    renderInfo: { breakAround: true }
  },
  DeclarePairedDelimiterX: {
    signature: "m o m m m",
    renderInfo: { breakAround: true }
  },
  DeclarePairedDelimiterXPP: {
    signature: "m o m m m m m",
    renderInfo: { breakAround: true }
  },
  prescript: { signature: "m m m" },
  DeclareMathSizes: { signature: "m m m m" },
  newgathered: { signature: "m m m m" },
  renewgathered: { signature: "m m m m" },
  splitfrac: { signature: "m m" },
  splitdfrac: { signature: "m m" },
  xmathstrut: { signature: "o m" },
  // amsthm
  newtheorem: { signature: "s m o m o", renderInfo: { breakAround: true } },
  theoremstyle: { signature: "m", renderInfo: { breakAround: true } },
  newtheoremstyle: {
    signature: "m m m m m m m m m",
    renderInfo: { breakAround: true }
  },
  // amsmath
  text: { signature: "m", renderInfo: { inMathMode: false } },
  // amsfonts
  mathbb: { signature: "m" },
  mathscr: { signature: "m" },
  mathfrak: { signature: "m" },
  frak: { signature: "m" },
  Bdd: { signature: "m" },
  bold: { signature: "m" },
  // amsopn
  operatorname: { signature: "s m" },
  DeclareMathOperator: {
    signature: "s m m",
    renderInfo: { breakAround: true }
  }
};
var environments8 = {
  crampedsubarray: {
    signature: "m",
    renderInfo: { alignContent: true, inMathMode: true }
  },
  matrix: { renderInfo: { alignContent: true, inMathMode: true } },
  bmatrix: { renderInfo: { alignContent: true, inMathMode: true } },
  pmatrix: { renderInfo: { alignContent: true, inMathMode: true } },
  vmatrix: { renderInfo: { alignContent: true, inMathMode: true } },
  Bmatrix: { renderInfo: { alignContent: true, inMathMode: true } },
  Vmatrix: { renderInfo: { alignContent: true, inMathMode: true } },
  smallmatrix: { renderInfo: { alignContent: true, inMathMode: true } },
  psmallmatrix: { renderInfo: { alignContent: true, inMathMode: true } },
  vsmallmatrix: { renderInfo: { alignContent: true, inMathMode: true } },
  bsmallmatrix: { renderInfo: { alignContent: true, inMathMode: true } },
  Bsmallmatrix: { renderInfo: { alignContent: true, inMathMode: true } },
  Vsmallmatrix: { renderInfo: { alignContent: true, inMathMode: true } },
  "matrix*": {
    signature: "o",
    renderInfo: { alignContent: true, inMathMode: true }
  },
  "bmatrix*": {
    signature: "o",
    renderInfo: { alignContent: true, inMathMode: true }
  },
  "pmatrix*": {
    signature: "o",
    renderInfo: { alignContent: true, inMathMode: true }
  },
  "vmatrix*": {
    signature: "o",
    renderInfo: { alignContent: true, inMathMode: true }
  },
  "Bmatrix*": {
    signature: "o",
    renderInfo: { alignContent: true, inMathMode: true }
  },
  "Vmatrix*": {
    signature: "o",
    renderInfo: { alignContent: true, inMathMode: true }
  },
  "smallmatrix*": {
    signature: "o",
    renderInfo: { alignContent: true, inMathMode: true }
  },
  "psmallmatrix*": {
    signature: "o",
    renderInfo: { alignContent: true, inMathMode: true }
  },
  "bsmallmatrix*": {
    signature: "o",
    renderInfo: { alignContent: true, inMathMode: true }
  },
  "vsmallmatrix*": {
    signature: "o",
    renderInfo: { alignContent: true, inMathMode: true }
  },
  "Bsmallmatrix*": {
    signature: "o",
    renderInfo: { alignContent: true, inMathMode: true }
  },
  "Vsmallmatrix*": {
    signature: "o",
    renderInfo: { alignContent: true, inMathMode: true }
  },
  multilined: { signature: "o o", renderInfo: { inMathMode: true } },
  cases: { renderInfo: { alignContent: true, inMathMode: true } },
  "cases*": { renderInfo: { alignContent: true, inMathMode: true } },
  dcases: { renderInfo: { alignContent: true, inMathMode: true } },
  "dcases*": { renderInfo: { alignContent: true, inMathMode: true } },
  rcases: { renderInfo: { alignContent: true, inMathMode: true } },
  "rcases*": { renderInfo: { alignContent: true, inMathMode: true } },
  drcases: { renderInfo: { alignContent: true, inMathMode: true } },
  "drcases*": { renderInfo: { alignContent: true, inMathMode: true } },
  spreadlines: { signature: "m", renderInfo: { inMathMode: true } },
  lgathered: { signature: "o", renderInfo: { inMathMode: true } },
  rgathered: { signature: "o", renderInfo: { inMathMode: true } },
  // amsmath
  "align*": { renderInfo: { inMathMode: true, alignContent: true } },
  align: { renderInfo: { inMathMode: true, alignContent: true } },
  aligned: { renderInfo: { inMathMode: true, alignContent: true } },
  "alignat*": { renderInfo: { inMathMode: true, alignContent: true } },
  alignat: { renderInfo: { inMathMode: true, alignContent: true } },
  "equation*": { renderInfo: { inMathMode: true } },
  equation: { renderInfo: { inMathMode: true } },
  "gather*": { renderInfo: { inMathMode: true } },
  gather: { renderInfo: { inMathMode: true } },
  "multline*": { renderInfo: { inMathMode: true } },
  multline: { renderInfo: { inMathMode: true } },
  "flalign*": { renderInfo: { inMathMode: true, alignContent: true } },
  flalign: { renderInfo: { inMathMode: true, alignContent: true } },
  split: { renderInfo: { inMathMode: true } },
  // Math environments
  displaymath: { renderInfo: { inMathMode: true } },
  // Typical amsthm environments
  theorem: { signature: "o" },
  lemma: { signature: "o" },
  definition: { signature: "o" },
  proposition: { signature: "o" },
  corollary: { signature: "o" },
  remark: { signature: "!o" },
  example: { signature: "!o" },
  proof: { signature: "o" }
};
var argSpecM2 = parse6("m")[0];
var argSpecO2 = parse6("o")[0];
var argSpecRDelim2 = {};
var argumentParser2 = (nodes, startPos) => {
  const { argument: optionalArg, nodesRemoved: optionalArgNodesRemoved } = gobbleSingleArgument(nodes, argSpecO2, startPos);
  const { argument: languageArg, nodesRemoved: languageArgNodesRemoved } = gobbleSingleArgument(nodes, argSpecM2, startPos);
  let codeArg = null;
  let codeArgNodesRemoved = 0;
  const nextNode = nodes[startPos];
  if (match.group(nextNode)) {
    const mandatoryArg = gobbleSingleArgument(nodes, argSpecM2, startPos);
    codeArg = mandatoryArg.argument;
    codeArgNodesRemoved = mandatoryArg.nodesRemoved;
  } else if (match.string(nextNode) && nextNode.content.length === 1) {
    const delim = nextNode.content;
    argSpecRDelim2[delim] = argSpecRDelim2[delim] || parse6(`r${delim}${delim}`)[0];
    const delimArg = gobbleSingleArgument(
      nodes,
      argSpecRDelim2[delim],
      startPos
    );
    codeArg = delimArg.argument;
    codeArgNodesRemoved = delimArg.nodesRemoved;
  }
  return {
    args: [
      optionalArg || arg(null),
      languageArg || arg(null),
      codeArg || arg(null)
    ],
    nodesRemoved: optionalArgNodesRemoved + languageArgNodesRemoved + codeArgNodesRemoved
  };
};
var macros9 = {
  mint: { argumentParser: argumentParser2 },
  mintinline: { argumentParser: argumentParser2 },
  inputminted: { argumentParser: argumentParser2 },
  usemintedstyle: { signature: "m" },
  setminted: { signature: "o m" },
  setmintedinline: { signature: "o m" },
  newmint: { signature: "o m m" },
  newminted: { signature: "o m m" },
  newmintinline: { signature: "o m m" },
  newmintedfile: { signature: "o m m" }
};
var environments9 = {};
var macros10 = {
  NiceMatrixOptions: {
    signature: "m",
    renderInfo: { pgfkeysArgs: true, breakAround: true }
  }
};
var environments10 = {
  NiceTabular: {
    signature: "o m !o",
    renderInfo: { pgfkeysArgs: true, alignContent: true }
  },
  NiceMatrixBlock: {
    signature: "!o",
    renderInfo: { pgfkeysArgs: true, alignContent: true }
  },
  NiceArrayWithDelims: {
    signature: "m m o m !o",
    renderInfo: { pgfkeysArgs: true, alignContent: true }
  },
  NiceArray: {
    signature: "o m !o",
    renderInfo: { pgfkeysArgs: true, alignContent: true }
  },
  pNiceArray: {
    signature: "o m !o",
    renderInfo: { pgfkeysArgs: true, alignContent: true }
  },
  bNiceArray: {
    signature: "o m !o",
    renderInfo: { pgfkeysArgs: true, alignContent: true }
  },
  BNiceArray: {
    signature: "o m !o",
    renderInfo: { pgfkeysArgs: true, alignContent: true }
  },
  vNiceArray: {
    signature: "o m !o",
    renderInfo: { pgfkeysArgs: true, alignContent: true }
  },
  VNiceArray: {
    signature: "o m !o",
    renderInfo: { pgfkeysArgs: true, alignContent: true }
  },
  NiceMatrix: {
    signature: "!o",
    renderInfo: { pgfkeysArgs: true, alignContent: true }
  },
  pNiceMatrix: {
    signature: "!o",
    renderInfo: { pgfkeysArgs: true, alignContent: true }
  },
  bNiceMatrix: {
    signature: "!o",
    renderInfo: { pgfkeysArgs: true, alignContent: true }
  },
  BNiceMatrix: {
    signature: "!o",
    renderInfo: { pgfkeysArgs: true, alignContent: true }
  },
  vNiceMatrix: {
    signature: "!o",
    renderInfo: { pgfkeysArgs: true, alignContent: true }
  },
  VNiceMatrix: {
    signature: "!o",
    renderInfo: { pgfkeysArgs: true, alignContent: true }
  }
};
var macros11 = {
  systeme: {
    signature: "s o o m",
    renderInfo: { inMathMode: true }
  },
  sysdelim: {
    signature: "m m"
  },
  syseqsep: { signature: "m" },
  sysalign: { signature: "m" },
  syssignspace: { signature: "m" },
  syseqspace: { signature: "m" },
  syslineskipcoeff: { signature: "m" },
  syseqivsign: { signature: "m" },
  sysaddeqsign: { signature: "m" },
  sysremoveeqsign: { signature: "m" },
  sysextracolonsign: { signature: "m" },
  syscodeextracol: { signature: "m" },
  sysautonum: { signature: "m" },
  syssubstitute: { signature: "m" }
};
var environments11 = {};
(function() {
  if (typeof globalThis === "object")
    return;
  Object.defineProperty(Object.prototype, "__magic__", {
    get: function() {
      return this;
    },
    configurable: true
    // This makes it possible to `delete` the getter later.
  });
  __magic__.globalThis = __magic__;
  delete Object.prototype.__magic__;
})();
var clone = typeof globalThis.structuredClone === "function" ? globalThis.structuredClone : (obj) => JSON.parse(JSON.stringify(obj));
var OPTIONAL_ARGUMENT_ARG_SPEC = parse6("o")[0];
function blankArg() {
  return arg([], { openMark: "", closeMark: "" });
}
var tikzCommandArgumentParser = (nodes, startPos) => {
  const origStartPos = startPos;
  let pos = startPos;
  let nodesRemoved = 0;
  const cursorPosAfterAnimations = eatAllAnimationSpecs(nodes, pos);
  let animationArg = blankArg();
  if (cursorPosAfterAnimations !== pos) {
    const argContent = nodes.splice(pos, cursorPosAfterAnimations - pos);
    trim(argContent);
    animationArg = arg(argContent, {
      openMark: " ",
      closeMark: " "
    });
  }
  nodesRemoved += cursorPosAfterAnimations - pos;
  const {
    argument: _optionalArgument,
    nodesRemoved: optionalArgumentNodesRemoved
  } = gobbleSingleArgument(nodes, OPTIONAL_ARGUMENT_ARG_SPEC, pos);
  nodesRemoved += optionalArgumentNodesRemoved;
  const optionalArg = _optionalArgument || blankArg();
  while (match.whitespace(nodes[pos])) {
    pos++;
  }
  const firstNode = nodes[pos];
  if (!firstNode) {
    return {
      args: [animationArg, optionalArg, blankArg()],
      nodesRemoved: 0
    };
  }
  if (match.group(firstNode)) {
    const args = [animationArg, optionalArg, arg(firstNode.content)];
    nodes.splice(origStartPos, pos - origStartPos + 1);
    return { args, nodesRemoved: pos - origStartPos + 1 + nodesRemoved };
  }
  const semicolonPosition = scan(nodes, ";", { startIndex: pos });
  if (semicolonPosition != null) {
    const argNodes = nodes.splice(
      origStartPos,
      semicolonPosition - origStartPos + 1
    );
    trim(argNodes);
    const args = [animationArg, optionalArg, arg(argNodes)];
    return {
      args,
      nodesRemoved: origStartPos - semicolonPosition + 1 + nodesRemoved
    };
  }
  return {
    args: [animationArg, optionalArg, blankArg()],
    nodesRemoved: 0
  };
};
function eatAllAnimationSpecs(nodes, startPos) {
  const colonPos = scan(nodes, ":", {
    startIndex: startPos,
    allowSubstringMatches: true,
    onlySkipWhitespaceAndComments: true
  });
  if (!colonPos) {
    return startPos;
  }
  let lastMatchPos = startPos;
  let i2 = colonPos + 1;
  for (; i2 < nodes.length; i2++) {
    const node3 = nodes[i2];
    if (match.string(node3, "[")) {
      break;
    }
    if (match.string(node3, "=")) {
      i2++;
      while (match.whitespace(nodes[i2]) || match.comment(nodes[i2])) {
        i2++;
      }
      if (!match.group(nodes[i2])) {
        break;
      }
      lastMatchPos = i2 + 1;
      const colonPos2 = scan(nodes, ":", {
        startIndex: lastMatchPos,
        allowSubstringMatches: true,
        onlySkipWhitespaceAndComments: true
      });
      if (colonPos2 == null) {
        break;
      }
      i2 = colonPos2 + 1;
    }
  }
  return lastMatchPos;
}
var macros12 = {
  pgfkeys: {
    signature: "m",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  tikzoption: {
    signature: "m",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  tikzstyle: {
    signature: "m",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  usetikzlibrary: {
    signature: "m",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  usepgfmodule: { signature: "m", renderInfo: { pgfkeysArgs: true } },
  usepgflibrary: { signature: "m", renderInfo: { pgfkeysArgs: true } },
  pgfplotsset: {
    signature: "m",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  pgfplotstabletypeset: {
    signature: "o m",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  tikz: {
    signature: "o o m",
    argumentParser: tikzCommandArgumentParser,
    renderInfo: { namedArguments: ["animation", "options", "command"] }
  }
};
var environments12 = {
  tikzpicture: {
    signature: "o",
    renderInfo: { pgfkeysArgs: true, tikzEnvironment: true },
    processContent: processTikzEnvironmentContent
  },
  axis: {
    signature: "o",
    renderInfo: { pgfkeysArgs: true, tikzEnvironment: true },
    processContent: processTikzEnvironmentContent
  },
  scope: {
    signature: "o",
    renderInfo: { pgfkeysArgs: true, tikzEnvironment: true },
    processContent: processTikzEnvironmentContent
  },
  pgfonlayer: {
    signature: "m",
    renderInfo: { tikzEnvironment: true },
    processContent: processTikzEnvironmentContent
  },
  pgflowlevelscope: {
    signature: "m",
    renderInfo: { tikzEnvironment: true },
    processContent: processTikzEnvironmentContent
  },
  pgfviewboxscope: {
    signature: "m m m m m",
    renderInfo: { tikzEnvironment: true },
    processContent: processTikzEnvironmentContent
  },
  pgftransparencygroup: {
    signature: "o",
    renderInfo: { pgfkeysArgs: true, tikzEnvironment: true },
    processContent: processTikzEnvironmentContent
  },
  behindforegroundpath: {
    signature: "m",
    processContent: processTikzEnvironmentContent
  },
  pgfmetadecoration: {
    signature: "m",
    processContent: processTikzEnvironmentContent
  },
  colormixin: { signature: "m", renderInfo: { pgfkeysArgs: true } }
};
function processTikzEnvironmentContent(nodes) {
  attachMacroArgsInArray(nodes, conditionalMacros);
  return nodes;
}
var conditionalMacros = {
  pgfextra: { signature: "m" },
  beginpgfgraphicnamed: { signature: "m" },
  pgfrealjobname: { signature: "m" },
  pgfplotstreampoint: { signature: "m" },
  pgfplotstreampointoutlier: { signature: "m" },
  pgfplotstreamspecial: { signature: "m" },
  pgfplotxyfile: { signature: "m" },
  pgfplotxyzfile: { signature: "m" },
  pgfplotfunction: { signature: "mmm" },
  pgfplotgnuplot: { signature: "o m" },
  pgfplothandlerrecord: { signature: "m" },
  pgfdeclareplothandler: { signature: "m m m" },
  pgfdeclarelayer: { signature: "m" },
  pgfsetlayers: { signature: "m", renderInfo: { pgfkeysArgs: true } },
  pgfonlayer: { signature: "m" },
  startpgfonlayer: { signature: "m" },
  pgfdeclarehorizontalshading: { signature: "o m m m " },
  pgfdeclareradialshading: { signature: "o m m m" },
  pgfdeclarefunctionalshading: { signature: "o m m m m m" },
  pgfshadecolortorgb: { signature: "m m" },
  pgfshadecolortocmyk: { signature: "m m" },
  pgfshadecolortogray: { signature: "m m" },
  pgfuseshading: { signature: "m" },
  pgfshadepath: { signature: "m m" },
  pgfsetadditionalshadetransform: { signature: "m" },
  pgfsetstrokeopacity: { signature: "m" },
  pgfsetfillopacity: { signature: "m" },
  pgfsetblendmode: { signature: "m" },
  pgfdeclarefading: { signature: "m m" },
  pgfsetfading: { signature: "m m" },
  pgfsetfadingforcurrentpath: { signature: "m m" },
  pgfsetfadingforcurrentpathstroked: { signature: "m m" },
  pgfanimateattribute: { signature: "m m" },
  pgfsnapshot: { signature: "m" },
  pgfqpoint: { signature: "m m" },
  pgfqpointxy: { signature: "m m" },
  pgfqpointxyz: { signature: "m m m" },
  pgfqpointscale: { signature: "m m" },
  pgfpathqmoveto: { signature: "m m" },
  pgfpathqlineto: { signature: "m m" },
  pgfpathqcurveto: { signature: "m m m m m m" },
  pgfpathqcircle: { signature: "m" },
  pgfqbox: { signature: "m" },
  pgfqboxsynced: { signature: "m" },
  pgfaliasimage: { signature: "m m" },
  pgfuseimage: { signature: "m" },
  pgfimage: { signature: "o m", renderInfo: { pgfkeysArgs: true } },
  pgfdeclaremask: { signature: "o m m", renderInfo: { pgfkeysArgs: true } },
  pgfdeclarepatternformonly: { signature: "o m m m m m" },
  pgfdeclarepatterninherentlycolored: { signature: "o m m m m m" },
  pgfsetfillpattern: { signature: "m m" },
  // Coordinate canvas and nonlinear transformations
  pgftransformshift: { signature: "m" },
  pgftransformxshift: { signature: "m" },
  pgftransformyshift: { signature: "m" },
  pgftransformscale: { signature: "m" },
  pgftransformxscale: { signature: "m" },
  pgftransformyscale: { signature: "m" },
  pgftransformxslant: { signature: "m" },
  pgftransformyslant: { signature: "m" },
  pgftransformrotate: { signature: "m" },
  pgftransformtriangle: { signature: "m m m" },
  pgftransformcm: { signature: "m m m m m" },
  pgftransformarrow: { signature: "m m" },
  pgftransformlineattime: { signature: "m m m" },
  pgftransformcurveattime: { signature: "m m m m m" },
  pgftransformarcaxesattime: { signature: "m m m m m m" },
  pgfgettransform: { signature: "m" },
  pgfsettransform: { signature: "m" },
  pgfgettransformentries: { signature: "m m m m m m" },
  pgfsettransformentries: { signature: "m m m m m m" },
  pgfpointtransformed: { signature: "m" },
  pgflowlevel: { signature: "m" },
  pgflowlevelobj: { signature: "m m" },
  pgflowlevelscope: { signature: "m" },
  startpgflowlevelscope: { signature: "m" },
  pgfviewboxscope: { signature: "m m m m m" },
  startpgfviewboxscope: { signature: "m m m m m" },
  pgftransformnonlinear: { signature: "m" },
  pgfpointtransformednonlinear: { signature: "m" },
  pgfsetcurvilinearbeziercurve: { signature: "m m m m" },
  pgfcurvilineardistancetotime: { signature: "m" },
  pgfpointcurvilinearbezierorthogonal: { signature: "m m" },
  pgfpointcurvilinearbezierpolar: { signature: "m m" },
  // Matrices
  pgfmatrix: { signature: "m m m m m m m" },
  pgfsetmatrixcolumnsep: { signature: "m" },
  pgfmatrixnextcell: { signature: "o" },
  pgfsetmatrixrowsep: { signature: "m" },
  pgfmatrixendrow: { signature: "o" },
  // Nodes and shapes
  pgfnode: { signature: "m m m m m" },
  pgfmultipartnode: { signature: "m m m m" },
  pgfcoordinate: { signature: "m m" },
  pgfnodealias: { signature: "m m" },
  pgfnoderename: { signature: "m m" },
  pgfpositionnodelater: { signature: "m" },
  pgfpositionnodenow: { signature: "m" },
  pgfnodepostsetupcode: { signature: "m m" },
  pgfpointanchor: { signature: "m m" },
  pgfpointshapeborder: { signature: "m m" },
  pgfdeclareshape: { signature: "m m" },
  saveddimen: { signature: "m m" },
  savedmacro: { signature: " m" },
  anchor: { signature: "m m" },
  deferredanchor: { signature: "m m" },
  anchorborder: { signature: "m" },
  backgroundpath: { signature: "m" },
  foregroundpath: { signature: "m" },
  behindbackgroundpath: { signature: "m" },
  beforebackgroundpath: { signature: "m" },
  beforeforegroundpath: { signature: "m" },
  behindforegroundpath: { signature: "m" },
  // Arrows
  pgfdeclarearrow: { signature: "m" },
  pgfarrowssettipend: { signature: "m" },
  pgfarrowssetbackend: { signature: "m" },
  pgfarrowssetlineend: { signature: "m" },
  pgfarrowssetvisualbackend: { signature: "m" },
  pgfarrowssetvisualtipend: { signature: "m" },
  pgfarrowshullpoint: { signature: "m m" },
  pgfarrowsupperhullpoint: { signature: "m m" },
  pgfarrowssave: { signature: "m" },
  pgfarrowssavethe: { signature: "m" },
  pgfarrowsaddtooptions: { signature: "m" },
  pgfarrowsaddtolateoptions: { signature: "m" },
  pgfarrowsaddtolengthscalelist: { signature: "m" },
  pgfarrowsaddtowidthscalelist: { signature: "m" },
  pgfarrowsthreeparameters: { signature: "m" },
  pgfarrowslinewidthdependent: { signature: "m m m" },
  pgfarrowslengthdependent: { signature: "m" },
  // Path
  pgfusepath: { signature: "m" },
  pgfsetlinewidth: { signature: "m" },
  pgfsetmiterlimit: { signature: "m" },
  pgfsetdash: { signature: "m m" },
  pgfsetstrokecolor: { signature: "m" },
  pgfsetcolor: { signature: "m" },
  pgfsetinnerlinewidth: { signature: "m" },
  pgfsetinnerstrokecolor: { signature: "m" },
  pgfsetarrowsstart: { signature: "m" },
  pgfsetarrowsend: { signature: "m" },
  pgfsetarrows: { signature: "m" },
  pgfsetshortenstart: { signature: "m" },
  pgfsetshortenend: { signature: "m" },
  pgfsetfillcolor: { signature: "m" },
  // Decorations
  pgfdeclaredecoration: { signature: "m m m" },
  state: { signature: "m o m" },
  pgfdecoratepath: { signature: "m m" },
  startpgfdecoration: { signature: "m" },
  pgfdecoration: { signature: "m" },
  pgfdecoratecurrentpath: { signature: "m" },
  pgfsetdecorationsegmenttransformation: { signature: "m" },
  pgfdeclaremetadecorate: { signature: "m m m" },
  pgfmetadecoration: { signature: "m" },
  startpgfmetadecoration: { signature: "m" },
  // Constructing paths
  pgfpathmoveto: { signature: "m" },
  pgfpathlineto: { signature: "m" },
  pgfpathcurveto: { signature: "m m m" },
  pgfpathquadraticcurveto: { signature: "m m" },
  pgfpathcurvebetweentime: { signature: "m m m m m m" },
  pgfpathcurvebetweentimecontinue: { signature: "m m m m m m" },
  pgfpatharc: { signature: "m m m" },
  pgfpatharcaxes: { signature: "m m m m" },
  pgfpatharcto: { signature: "m m m m m m" },
  pgfpatharctoprecomputed: { signature: "m m m m m m m m" },
  pgfpathellipse: { signature: "m m m" },
  pgfpathcircle: { signature: "m m" },
  pgfpathrectangle: { signature: "m m" },
  pgfpathrectanglecorners: { signature: "m m" },
  pgfpathgrid: { signature: " o m m" },
  pgfpathparabola: { signature: "m m" },
  pgfpathsine: { signature: "m" },
  pgfpathcosine: { signature: "m" },
  pgfsetcornersarced: { signature: "m" },
  "pgf@protocolsizes": { signature: "m m" },
  // Specifying coordinates
  pgfpoint: { signature: "m m" },
  pgfpointpolar: { signature: "m m m" },
  pgfpointxy: { signature: "m m" },
  pgfsetxvec: { signature: "m" },
  pgfsetyvec: { signature: "m" },
  pgfpointpolarxy: { signature: "m m" },
  pgfpointxyz: { signature: "m m m" },
  pgfsetzvec: { signature: "m" },
  pgfpointcylindrical: { signature: "m m m" },
  pgfpointspherical: { signature: "m m m" },
  pgfpointadd: { signature: "m m" },
  pgfpointscale: { signature: "m m" },
  pgfpointdiff: { signature: "m m" },
  pgfpointnormalised: { signature: "m" },
  pgfpointlineattime: { signature: "m m m" },
  pgfpointlineatdistance: { signature: "m m m" },
  pgfpointarcaxesattime: { signature: "m m m m m m" },
  pgfpointcurveattime: { signature: "m m m m m" },
  pgfpointborderrectangle: { signature: "m m" },
  pgfpointborderellipse: { signature: "m m" },
  pgfpointintersectionoflines: { signature: "m m m m" },
  pgfpointintersectionofcircles: { signature: "m m m m m" },
  pgfintersectionofpaths: { signature: "m m" },
  pgfpointintersectionsolution: { signature: "m" },
  pgfextractx: { signature: "m m" },
  pgfextracty: { signature: "m m" },
  pgfgetlastxy: { signature: "m m" },
  "pgf@process": { signature: "m" },
  // Heirarchical structres ...
  pgfsetbaseline: { signature: "m" },
  pgfsetbaselinepointnow: { signature: "m" },
  pgfsetbaselinepointlater: { signature: "m" },
  pgftext: { signature: "o m", renderInfo: { pgfkeysArgs: true } },
  pgfuseid: { signature: "m" },
  pgfusetype: { signature: "m" },
  pgfidrefnextuse: { signature: "m m" },
  pgfidrefprevuse: { signature: "m m" },
  pgfaliasid: { signature: "m m" },
  pgfgaliasid: { signature: "m m" },
  pgfifidreferenced: { signature: "m m m" },
  pgfrdfabout: { signature: "m" },
  pgfrdfcontent: { signature: "m" },
  pgfrdfdatatype: { signature: "m" },
  pgfrdfhref: { signature: "m" },
  pgfrdfprefix: { signature: "m" },
  pgfrdfproperty: { signature: "m" },
  pgfrdfrel: { signature: "m" },
  pgfrdfresource: { signature: "m" },
  pgfrdfrev: { signature: "m" },
  pgfrdfsrc: { signature: "m" },
  pgfrdftypeof: { signature: "m" },
  pgfrdfvocab: { signature: "m" },
  pgferror: { signature: "m" },
  pgfwarning: { signature: "m" },
  path: {
    signature: "u;",
    renderInfo: { breakAround: true, tikzPathCommand: true }
  },
  draw: {
    signature: "u;",
    renderInfo: { breakAround: true, tikzPathCommand: true }
  },
  fill: {
    signature: "u;",
    renderInfo: { breakAround: true, tikzPathCommand: true }
  },
  filldraw: {
    signature: "u;",
    renderInfo: { breakAround: true, tikzPathCommand: true }
  },
  pattern: {
    signature: "u;",
    renderInfo: { breakAround: true, tikzPathCommand: true }
  },
  shade: {
    signature: "u;",
    renderInfo: { breakAround: true, tikzPathCommand: true }
  },
  clip: {
    signature: "u;",
    renderInfo: { breakAround: true, tikzPathCommand: true }
  },
  useasboundingbox: {
    signature: "u;",
    renderInfo: { breakAround: true, tikzPathCommand: true }
  },
  node: {
    signature: "u;",
    renderInfo: { breakAround: true, tikzPathCommand: true }
  },
  coordinate: {
    signature: "u;",
    renderInfo: { breakAround: true, tikzPathCommand: true }
  },
  graph: {
    signature: "u;",
    renderInfo: { breakAround: true, tikzPathCommand: true }
  },
  scoped: {
    signature: "o o m",
    argumentParser: tikzCommandArgumentParser,
    renderInfo: {
      namedArguments: ["animation", "options", "command"],
      breakAround: true
    }
  }
};
function createMatchers2() {
  return {
    isChar: match.string,
    isTerminal: (node3) => match.string(node3, ";"),
    isOperation: (node3) => match.anyString(node3) && node3.content.match(/[a-zA-Z]/),
    isWhitespace: (node3) => match.whitespace(node3) || match.parbreak(node3),
    isComment: match.comment,
    isGroup: match.group,
    isMacro: match.macro,
    isAnyMacro: match.anyMacro
  };
}
var matchers = createMatchers2();
var macros13 = {
  substitutecolormodel: {
    signature: "m m",
    renderInfo: { breakAround: true }
  },
  selectcolormodel: {
    signature: "m",
    renderInfo: { breakAround: true }
  },
  definecolor: {
    signature: "o m m m",
    renderInfo: { breakAround: true }
  },
  providecolor: {
    signature: "o m m m",
    renderInfo: { breakAround: true }
  },
  colorlet: {
    signature: "o m o m",
    renderInfo: { breakAround: true }
  },
  definecolorset: {
    signature: "o m m m",
    renderInfo: { breakAround: true }
  },
  providecolorset: {
    signature: "o m m m m",
    renderInfo: { breakAround: true }
  },
  preparecolor: {
    signature: "o m m m",
    renderInfo: { breakAround: true }
  },
  preparecolorset: {
    signature: "o m m m m",
    renderInfo: { breakAround: true }
  },
  DefineNamedColor: {
    signature: "m m m m",
    renderInfo: { breakAround: true }
  },
  definecolors: {
    signature: "m",
    renderInfo: { breakAround: true }
  },
  providecolors: {
    signature: "m",
    renderInfo: { breakAround: true }
  },
  color: { signature: "o m", renderInfo: { breakAround: true } },
  textcolor: { signature: "o m m", renderInfo: { inParMode: true } },
  pagecolor: { signature: "o m" },
  colorbox: { signature: "o m m" },
  fcolorbox: { signature: "o m o m m" },
  boxframe: { signature: "o m" },
  testcolor: { signature: "o m" },
  blendcolors: { signature: "s m" },
  maskcolors: { signature: "o m" },
  definecolorseries: {
    signature: "m m m o m o m",
    renderInfo: { breakAround: true }
  },
  resetcolorseries: {
    signature: "o m",
    renderInfo: { breakAround: true }
  },
  rowcolors: { signature: "s o m m m" },
  extractcolorspec: { signature: "m m" },
  extractcolorspecs: { signature: "m m m" },
  convertcolorspec: { signature: "m m m m" }
};
var environments13 = {
  testcolors: { signature: "o", renderInfo: { pgfkeysArgs: true } }
};
var fromRgb = ([r2, g, b]) => (0, import_color3.default)([r2 * 255, g * 255, b * 255], "rgb");
var DVI_PS_NAMES = {
  Apricot: (0, import_color3.default)("#FBB982"),
  Aquamarine: (0, import_color3.default)("#00B5BE"),
  Bittersweet: (0, import_color3.default)("#C04F17"),
  Black: (0, import_color3.default)("#221E1F"),
  Blue: (0, import_color3.default)("#2D2F92"),
  BlueGreen: (0, import_color3.default)("#00B3B8"),
  BlueViolet: (0, import_color3.default)("#473992"),
  BrickRed: (0, import_color3.default)("#B6321C"),
  Brown: (0, import_color3.default)("#792500"),
  BurntOrange: (0, import_color3.default)("#F7921D"),
  CadetBlue: (0, import_color3.default)("#74729A"),
  CarnationPink: (0, import_color3.default)("#F282B4"),
  Cerulean: (0, import_color3.default)("#00A2E3"),
  CornflowerBlue: (0, import_color3.default)("#41B0E4"),
  Cyan: (0, import_color3.default)("#00AEEF"),
  Dandelion: (0, import_color3.default)("#FDBC42"),
  DarkOrchid: (0, import_color3.default)("#A4538A"),
  Emerald: (0, import_color3.default)("#00A99D"),
  ForestGreen: (0, import_color3.default)("#009B55"),
  Fuchsia: (0, import_color3.default)("#8C368C"),
  Goldenrod: (0, import_color3.default)("#FFDF42"),
  Gray: (0, import_color3.default)("#949698"),
  Green: (0, import_color3.default)("#00A64F"),
  GreenYellow: (0, import_color3.default)("#DFE674"),
  JungleGreen: (0, import_color3.default)("#00A99A"),
  Lavender: (0, import_color3.default)("#F49EC4"),
  LimeGreen: (0, import_color3.default)("#8DC73E"),
  Magenta: (0, import_color3.default)("#EC008C"),
  Mahogany: (0, import_color3.default)("#A9341F"),
  Maroon: (0, import_color3.default)("#AF3235"),
  Melon: (0, import_color3.default)("#F89E7B"),
  MidnightBlue: (0, import_color3.default)("#006795"),
  Mulberry: (0, import_color3.default)("#A93C93"),
  NavyBlue: (0, import_color3.default)("#006EB8"),
  OliveGreen: (0, import_color3.default)("#3C8031"),
  Orange: (0, import_color3.default)("#F58137"),
  OrangeRed: (0, import_color3.default)("#ED135A"),
  Orchid: (0, import_color3.default)("#AF72B0"),
  Peach: (0, import_color3.default)("#F7965A"),
  Periwinkle: (0, import_color3.default)("#7977B8"),
  PineGreen: (0, import_color3.default)("#008B72"),
  Plum: (0, import_color3.default)("#92268F"),
  ProcessBlue: (0, import_color3.default)("#00B0F0"),
  Purple: (0, import_color3.default)("#99479B"),
  RawSienna: (0, import_color3.default)("#974006"),
  Red: (0, import_color3.default)("#ED1B23"),
  RedOrange: (0, import_color3.default)("#F26035"),
  RedViolet: (0, import_color3.default)("#A1246B"),
  Rhodamine: (0, import_color3.default)("#EF559F"),
  RoyalBlue: (0, import_color3.default)("#0071BC"),
  RoyalPurple: (0, import_color3.default)("#613F99"),
  RubineRed: (0, import_color3.default)("#ED017D"),
  Salmon: (0, import_color3.default)("#F69289"),
  SeaGreen: (0, import_color3.default)("#3FBC9D"),
  Sepia: (0, import_color3.default)("#671800"),
  SkyBlue: (0, import_color3.default)("#46C5DD"),
  SpringGreen: (0, import_color3.default)("#C6DC67"),
  Tan: (0, import_color3.default)("#DA9D76"),
  TealBlue: (0, import_color3.default)("#00AEB3"),
  Thistle: (0, import_color3.default)("#D883B7"),
  Turquoise: (0, import_color3.default)("#00B4CE"),
  Violet: (0, import_color3.default)("#58429B"),
  VioletRed: (0, import_color3.default)("#EF58A0"),
  White: (0, import_color3.default)("#FFFFFF"),
  WildStrawberry: (0, import_color3.default)("#EE2967"),
  Yellow: (0, import_color3.default)("#FFF200"),
  YellowGreen: (0, import_color3.default)("#98CC70"),
  YellowOrange: (0, import_color3.default)("#FAA21A")
};
var SVG_NAMES = {
  AliceBlue: fromRgb([0.94, 0.972, 1]),
  AntiqueWhite: fromRgb([0.98, 0.92, 0.844]),
  Aqua: fromRgb([0, 1, 1]),
  Aquamarine: fromRgb([0.498, 1, 0.83]),
  Azure: fromRgb([0.94, 1, 1]),
  Beige: fromRgb([0.96, 0.96, 0.864]),
  Bisque: fromRgb([1, 0.894, 0.77]),
  Black: fromRgb([0, 0, 0]),
  BlanchedAlmond: fromRgb([1, 0.92, 0.804]),
  Blue: fromRgb([0, 0, 1]),
  BlueViolet: fromRgb([0.54, 0.17, 0.888]),
  Brown: fromRgb([0.648, 0.165, 0.165]),
  BurlyWood: fromRgb([0.87, 0.72, 0.53]),
  CadetBlue: fromRgb([0.372, 0.62, 0.628]),
  Chartreuse: fromRgb([0.498, 1, 0]),
  Chocolate: fromRgb([0.824, 0.41, 0.116]),
  Coral: fromRgb([1, 0.498, 0.312]),
  CornflowerBlue: fromRgb([0.392, 0.585, 0.93]),
  Cornsilk: fromRgb([1, 0.972, 0.864]),
  Crimson: fromRgb([0.864, 0.08, 0.235]),
  Cyan: fromRgb([0, 1, 1]),
  DarkBlue: fromRgb([0, 0, 0.545]),
  DarkCyan: fromRgb([0, 0.545, 0.545]),
  DarkGoldenrod: fromRgb([0.72, 0.525, 0.044]),
  DarkGray: fromRgb([0.664, 0.664, 0.664]),
  DarkGreen: fromRgb([0, 0.392, 0]),
  DarkGrey: fromRgb([0.664, 0.664, 0.664]),
  DarkKhaki: fromRgb([0.74, 0.716, 0.42]),
  DarkMagenta: fromRgb([0.545, 0, 0.545]),
  DarkOliveGreen: fromRgb([0.332, 0.42, 0.185]),
  DarkOrange: fromRgb([1, 0.55, 0]),
  DarkOrchid: fromRgb([0.6, 0.196, 0.8]),
  DarkRed: fromRgb([0.545, 0, 0]),
  DarkSalmon: fromRgb([0.912, 0.59, 0.48]),
  DarkSeaGreen: fromRgb([0.56, 0.736, 0.56]),
  DarkSlateBlue: fromRgb([0.284, 0.24, 0.545]),
  DarkSlateGray: fromRgb([0.185, 0.31, 0.31]),
  DarkSlateGrey: fromRgb([0.185, 0.31, 0.31]),
  DarkTurquoise: fromRgb([0, 0.808, 0.82]),
  DarkViolet: fromRgb([0.58, 0, 0.828]),
  DeepPink: fromRgb([1, 0.08, 0.576]),
  DeepSkyBlue: fromRgb([0, 0.75, 1]),
  DimGray: fromRgb([0.41, 0.41, 0.41]),
  DimGrey: fromRgb([0.41, 0.41, 0.41]),
  DodgerBlue: fromRgb([0.116, 0.565, 1]),
  FireBrick: fromRgb([0.698, 0.132, 0.132]),
  FloralWhite: fromRgb([1, 0.98, 0.94]),
  ForestGreen: fromRgb([0.132, 0.545, 0.132]),
  Fuchsia: fromRgb([1, 0, 1]),
  Gainsboro: fromRgb([0.864, 0.864, 0.864]),
  GhostWhite: fromRgb([0.972, 0.972, 1]),
  Gold: fromRgb([1, 0.844, 0]),
  Goldenrod: fromRgb([0.855, 0.648, 0.125]),
  Gray: fromRgb([0.5, 0.5, 0.5]),
  Green: fromRgb([0, 0.5, 0]),
  GreenYellow: fromRgb([0.68, 1, 0.185]),
  Grey: fromRgb([0.5, 0.5, 0.5]),
  Honeydew: fromRgb([0.94, 1, 0.94]),
  HotPink: fromRgb([1, 0.41, 0.705]),
  IndianRed: fromRgb([0.804, 0.36, 0.36]),
  Indigo: fromRgb([0.294, 0, 0.51]),
  Ivory: fromRgb([1, 1, 0.94]),
  Khaki: fromRgb([0.94, 0.9, 0.55]),
  Lavender: fromRgb([0.9, 0.9, 0.98]),
  LavenderBlush: fromRgb([1, 0.94, 0.96]),
  LawnGreen: fromRgb([0.488, 0.99, 0]),
  LemonChiffon: fromRgb([1, 0.98, 0.804]),
  LightBlue: fromRgb([0.68, 0.848, 0.9]),
  LightCoral: fromRgb([0.94, 0.5, 0.5]),
  LightCyan: fromRgb([0.88, 1, 1]),
  LightGoldenrod: fromRgb([0.933, 0.867, 0.51]),
  LightGoldenrodYellow: fromRgb([0.98, 0.98, 0.824]),
  LightGray: fromRgb([0.828, 0.828, 0.828]),
  LightGreen: fromRgb([0.565, 0.932, 0.565]),
  LightGrey: fromRgb([0.828, 0.828, 0.828]),
  LightPink: fromRgb([1, 0.712, 0.756]),
  LightSalmon: fromRgb([1, 0.628, 0.48]),
  LightSeaGreen: fromRgb([0.125, 0.698, 0.668]),
  LightSkyBlue: fromRgb([0.53, 0.808, 0.98]),
  LightSlateBlue: fromRgb([0.518, 0.44, 1]),
  LightSlateGray: fromRgb([0.468, 0.532, 0.6]),
  LightSlateGrey: fromRgb([0.468, 0.532, 0.6]),
  LightSteelBlue: fromRgb([0.69, 0.77, 0.87]),
  LightYellow: fromRgb([1, 1, 0.88]),
  Lime: fromRgb([0, 1, 0]),
  LimeGreen: fromRgb([0.196, 0.804, 0.196]),
  Linen: fromRgb([0.98, 0.94, 0.9]),
  Magenta: fromRgb([1, 0, 1]),
  Maroon: fromRgb([0.5, 0, 0]),
  MediumAquamarine: fromRgb([0.4, 0.804, 0.668]),
  MediumBlue: fromRgb([0, 0, 0.804]),
  MediumOrchid: fromRgb([0.73, 0.332, 0.828]),
  MediumPurple: fromRgb([0.576, 0.44, 0.86]),
  MediumSeaGreen: fromRgb([0.235, 0.7, 0.444]),
  MediumSlateBlue: fromRgb([0.484, 0.408, 0.932]),
  MediumSpringGreen: fromRgb([0, 0.98, 0.604]),
  MediumTurquoise: fromRgb([0.284, 0.82, 0.8]),
  MediumVioletRed: fromRgb([0.78, 0.084, 0.52]),
  MidnightBlue: fromRgb([0.098, 0.098, 0.44]),
  MintCream: fromRgb([0.96, 1, 0.98]),
  MistyRose: fromRgb([1, 0.894, 0.884]),
  Moccasin: fromRgb([1, 0.894, 0.71]),
  NavajoWhite: fromRgb([1, 0.87, 0.68]),
  Navy: fromRgb([0, 0, 0.5]),
  NavyBlue: fromRgb([0, 0, 0.5]),
  OldLace: fromRgb([0.992, 0.96, 0.9]),
  Olive: fromRgb([0.5, 0.5, 0]),
  OliveDrab: fromRgb([0.42, 0.556, 0.136]),
  Orange: fromRgb([1, 0.648, 0]),
  OrangeRed: fromRgb([1, 0.27, 0]),
  Orchid: fromRgb([0.855, 0.44, 0.84]),
  PaleGoldenrod: fromRgb([0.932, 0.91, 0.668]),
  PaleGreen: fromRgb([0.596, 0.985, 0.596]),
  PaleTurquoise: fromRgb([0.688, 0.932, 0.932]),
  PaleVioletRed: fromRgb([0.86, 0.44, 0.576]),
  PapayaWhip: fromRgb([1, 0.936, 0.835]),
  PeachPuff: fromRgb([1, 0.855, 0.725]),
  Peru: fromRgb([0.804, 0.52, 0.248]),
  Pink: fromRgb([1, 0.752, 0.796]),
  Plum: fromRgb([0.868, 0.628, 0.868]),
  PowderBlue: fromRgb([0.69, 0.88, 0.9]),
  Purple: fromRgb([0.5, 0, 0.5]),
  Red: fromRgb([1, 0, 0]),
  RosyBrown: fromRgb([0.736, 0.56, 0.56]),
  RoyalBlue: fromRgb([0.255, 0.41, 0.884]),
  SaddleBrown: fromRgb([0.545, 0.27, 0.075]),
  Salmon: fromRgb([0.98, 0.5, 0.448]),
  SandyBrown: fromRgb([0.956, 0.644, 0.376]),
  SeaGreen: fromRgb([0.18, 0.545, 0.34]),
  Seashell: fromRgb([1, 0.96, 0.932]),
  Sienna: fromRgb([0.628, 0.32, 0.176]),
  Silver: fromRgb([0.752, 0.752, 0.752]),
  SkyBlue: fromRgb([0.53, 0.808, 0.92]),
  SlateBlue: fromRgb([0.415, 0.352, 0.804]),
  SlateGray: fromRgb([0.44, 0.5, 0.565]),
  SlateGrey: fromRgb([0.44, 0.5, 0.565]),
  Snow: fromRgb([1, 0.98, 0.98]),
  SpringGreen: fromRgb([0, 1, 0.498]),
  SteelBlue: fromRgb([0.275, 0.51, 0.705]),
  Tan: fromRgb([0.824, 0.705, 0.55]),
  Teal: fromRgb([0, 0.5, 0.5]),
  Thistle: fromRgb([0.848, 0.75, 0.848]),
  Tomato: fromRgb([1, 0.39, 0.28]),
  Turquoise: fromRgb([0.25, 0.88, 0.815]),
  Violet: fromRgb([0.932, 0.51, 0.932]),
  VioletRed: fromRgb([0.816, 0.125, 0.565]),
  Wheat: fromRgb([0.96, 0.87, 0.7]),
  White: fromRgb([1, 1, 1]),
  WhiteSmoke: fromRgb([0.96, 0.96, 0.96]),
  Yellow: fromRgb([1, 1, 0]),
  YellowGreen: fromRgb([0.604, 0.804, 0.196])
};
var X11_NAMES = {
  AntiqueWhite1: fromRgb([1, 0.936, 0.86]),
  AntiqueWhite2: fromRgb([0.932, 0.875, 0.8]),
  AntiqueWhite3: fromRgb([0.804, 0.752, 0.69]),
  AntiqueWhite4: fromRgb([0.545, 0.512, 0.47]),
  Aquamarine1: fromRgb([0.498, 1, 0.83]),
  Aquamarine2: fromRgb([0.464, 0.932, 0.776]),
  Aquamarine3: fromRgb([0.4, 0.804, 0.668]),
  Aquamarine4: fromRgb([0.27, 0.545, 0.455]),
  Azure1: fromRgb([0.94, 1, 1]),
  Azure2: fromRgb([0.88, 0.932, 0.932]),
  Azure3: fromRgb([0.756, 0.804, 0.804]),
  Azure4: fromRgb([0.512, 0.545, 0.545]),
  Bisque1: fromRgb([1, 0.894, 0.77]),
  Bisque2: fromRgb([0.932, 0.835, 0.716]),
  Bisque3: fromRgb([0.804, 0.716, 0.62]),
  Bisque4: fromRgb([0.545, 0.49, 0.42]),
  Blue1: fromRgb([0, 0, 1]),
  Blue2: fromRgb([0, 0, 0.932]),
  Blue3: fromRgb([0, 0, 0.804]),
  Blue4: fromRgb([0, 0, 0.545]),
  Brown1: fromRgb([1, 0.25, 0.25]),
  Brown2: fromRgb([0.932, 0.23, 0.23]),
  Brown3: fromRgb([0.804, 0.2, 0.2]),
  Brown4: fromRgb([0.545, 0.136, 0.136]),
  Burlywood1: fromRgb([1, 0.828, 0.608]),
  Burlywood2: fromRgb([0.932, 0.772, 0.57]),
  Burlywood3: fromRgb([0.804, 0.668, 0.49]),
  Burlywood4: fromRgb([0.545, 0.45, 0.332]),
  CadetBlue1: fromRgb([0.596, 0.96, 1]),
  CadetBlue2: fromRgb([0.556, 0.898, 0.932]),
  CadetBlue3: fromRgb([0.48, 0.772, 0.804]),
  CadetBlue4: fromRgb([0.325, 0.525, 0.545]),
  Chartreuse1: fromRgb([0.498, 1, 0]),
  Chartreuse2: fromRgb([0.464, 0.932, 0]),
  Chartreuse3: fromRgb([0.4, 0.804, 0]),
  Chartreuse4: fromRgb([0.27, 0.545, 0]),
  Chocolate1: fromRgb([1, 0.498, 0.14]),
  Chocolate2: fromRgb([0.932, 0.464, 0.13]),
  Chocolate3: fromRgb([0.804, 0.4, 0.112]),
  Chocolate4: fromRgb([0.545, 0.27, 0.075]),
  Coral1: fromRgb([1, 0.448, 0.336]),
  Coral2: fromRgb([0.932, 0.415, 0.312]),
  Coral3: fromRgb([0.804, 0.356, 0.27]),
  Coral4: fromRgb([0.545, 0.244, 0.185]),
  Cornsilk1: fromRgb([1, 0.972, 0.864]),
  Cornsilk2: fromRgb([0.932, 0.91, 0.804]),
  Cornsilk3: fromRgb([0.804, 0.785, 0.694]),
  Cornsilk4: fromRgb([0.545, 0.532, 0.47]),
  Cyan1: fromRgb([0, 1, 1]),
  Cyan2: fromRgb([0, 0.932, 0.932]),
  Cyan3: fromRgb([0, 0.804, 0.804]),
  Cyan4: fromRgb([0, 0.545, 0.545]),
  DarkGoldenrod1: fromRgb([1, 0.725, 0.06]),
  DarkGoldenrod2: fromRgb([0.932, 0.68, 0.055]),
  DarkGoldenrod3: fromRgb([0.804, 0.585, 0.048]),
  DarkGoldenrod4: fromRgb([0.545, 0.396, 0.03]),
  DarkOliveGreen1: fromRgb([0.792, 1, 0.44]),
  DarkOliveGreen2: fromRgb([0.736, 0.932, 0.408]),
  DarkOliveGreen3: fromRgb([0.635, 0.804, 0.352]),
  DarkOliveGreen4: fromRgb([0.43, 0.545, 0.24]),
  DarkOrange1: fromRgb([1, 0.498, 0]),
  DarkOrange2: fromRgb([0.932, 0.464, 0]),
  DarkOrange3: fromRgb([0.804, 0.4, 0]),
  DarkOrange4: fromRgb([0.545, 0.27, 0]),
  DarkOrchid1: fromRgb([0.75, 0.244, 1]),
  DarkOrchid2: fromRgb([0.698, 0.228, 0.932]),
  DarkOrchid3: fromRgb([0.604, 0.196, 0.804]),
  DarkOrchid4: fromRgb([0.408, 0.132, 0.545]),
  DarkSeaGreen1: fromRgb([0.756, 1, 0.756]),
  DarkSeaGreen2: fromRgb([0.705, 0.932, 0.705]),
  DarkSeaGreen3: fromRgb([0.608, 0.804, 0.608]),
  DarkSeaGreen4: fromRgb([0.41, 0.545, 0.41]),
  DarkSlateGray1: fromRgb([0.592, 1, 1]),
  DarkSlateGray2: fromRgb([0.552, 0.932, 0.932]),
  DarkSlateGray3: fromRgb([0.475, 0.804, 0.804]),
  DarkSlateGray4: fromRgb([0.32, 0.545, 0.545]),
  DeepPink1: fromRgb([1, 0.08, 0.576]),
  DeepPink2: fromRgb([0.932, 0.07, 0.536]),
  DeepPink3: fromRgb([0.804, 0.064, 0.464]),
  DeepPink4: fromRgb([0.545, 0.04, 0.312]),
  DeepSkyBlue1: fromRgb([0, 0.75, 1]),
  DeepSkyBlue2: fromRgb([0, 0.698, 0.932]),
  DeepSkyBlue3: fromRgb([0, 0.604, 0.804]),
  DeepSkyBlue4: fromRgb([0, 0.408, 0.545]),
  DodgerBlue1: fromRgb([0.116, 0.565, 1]),
  DodgerBlue2: fromRgb([0.11, 0.525, 0.932]),
  DodgerBlue3: fromRgb([0.094, 0.455, 0.804]),
  DodgerBlue4: fromRgb([0.064, 0.305, 0.545]),
  Firebrick1: fromRgb([1, 0.19, 0.19]),
  Firebrick2: fromRgb([0.932, 0.172, 0.172]),
  Firebrick3: fromRgb([0.804, 0.15, 0.15]),
  Firebrick4: fromRgb([0.545, 0.1, 0.1]),
  Gold1: fromRgb([1, 0.844, 0]),
  Gold2: fromRgb([0.932, 0.79, 0]),
  Gold3: fromRgb([0.804, 0.68, 0]),
  Gold4: fromRgb([0.545, 0.46, 0]),
  Goldenrod1: fromRgb([1, 0.756, 0.145]),
  Goldenrod2: fromRgb([0.932, 0.705, 0.132]),
  Goldenrod3: fromRgb([0.804, 0.608, 0.112]),
  Goldenrod4: fromRgb([0.545, 0.41, 0.08]),
  Green1: fromRgb([0, 1, 0]),
  Green2: fromRgb([0, 0.932, 0]),
  Green3: fromRgb([0, 0.804, 0]),
  Green4: fromRgb([0, 0.545, 0]),
  Honeydew1: fromRgb([0.94, 1, 0.94]),
  Honeydew2: fromRgb([0.88, 0.932, 0.88]),
  Honeydew3: fromRgb([0.756, 0.804, 0.756]),
  Honeydew4: fromRgb([0.512, 0.545, 0.512]),
  HotPink1: fromRgb([1, 0.43, 0.705]),
  HotPink2: fromRgb([0.932, 0.415, 0.655]),
  HotPink3: fromRgb([0.804, 0.376, 0.565]),
  HotPink4: fromRgb([0.545, 0.228, 0.385]),
  IndianRed1: fromRgb([1, 0.415, 0.415]),
  IndianRed2: fromRgb([0.932, 0.39, 0.39]),
  IndianRed3: fromRgb([0.804, 0.332, 0.332]),
  IndianRed4: fromRgb([0.545, 0.228, 0.228]),
  Ivory1: fromRgb([1, 1, 0.94]),
  Ivory2: fromRgb([0.932, 0.932, 0.88]),
  Ivory3: fromRgb([0.804, 0.804, 0.756]),
  Ivory4: fromRgb([0.545, 0.545, 0.512]),
  Khaki1: fromRgb([1, 0.965, 0.56]),
  Khaki2: fromRgb([0.932, 0.9, 0.52]),
  Khaki3: fromRgb([0.804, 0.776, 0.45]),
  Khaki4: fromRgb([0.545, 0.525, 0.305]),
  LavenderBlush1: fromRgb([1, 0.94, 0.96]),
  LavenderBlush2: fromRgb([0.932, 0.88, 0.898]),
  LavenderBlush3: fromRgb([0.804, 0.756, 0.772]),
  LavenderBlush4: fromRgb([0.545, 0.512, 0.525]),
  LemonChiffon1: fromRgb([1, 0.98, 0.804]),
  LemonChiffon2: fromRgb([0.932, 0.912, 0.75]),
  LemonChiffon3: fromRgb([0.804, 0.79, 0.648]),
  LemonChiffon4: fromRgb([0.545, 0.536, 0.44]),
  LightBlue1: fromRgb([0.75, 0.936, 1]),
  LightBlue2: fromRgb([0.698, 0.875, 0.932]),
  LightBlue3: fromRgb([0.604, 0.752, 0.804]),
  LightBlue4: fromRgb([0.408, 0.512, 0.545]),
  LightCyan1: fromRgb([0.88, 1, 1]),
  LightCyan2: fromRgb([0.82, 0.932, 0.932]),
  LightCyan3: fromRgb([0.705, 0.804, 0.804]),
  LightCyan4: fromRgb([0.48, 0.545, 0.545]),
  LightGoldenrod1: fromRgb([1, 0.925, 0.545]),
  LightGoldenrod2: fromRgb([0.932, 0.864, 0.51]),
  LightGoldenrod3: fromRgb([0.804, 0.745, 0.44]),
  LightGoldenrod4: fromRgb([0.545, 0.505, 0.298]),
  LightPink1: fromRgb([1, 0.684, 0.725]),
  LightPink2: fromRgb([0.932, 0.635, 0.68]),
  LightPink3: fromRgb([0.804, 0.55, 0.585]),
  LightPink4: fromRgb([0.545, 0.372, 0.396]),
  LightSalmon1: fromRgb([1, 0.628, 0.48]),
  LightSalmon2: fromRgb([0.932, 0.585, 0.448]),
  LightSalmon3: fromRgb([0.804, 0.505, 0.385]),
  LightSalmon4: fromRgb([0.545, 0.34, 0.26]),
  LightSkyBlue1: fromRgb([0.69, 0.888, 1]),
  LightSkyBlue2: fromRgb([0.644, 0.828, 0.932]),
  LightSkyBlue3: fromRgb([0.552, 0.712, 0.804]),
  LightSkyBlue4: fromRgb([0.376, 0.484, 0.545]),
  LightSteelBlue1: fromRgb([0.792, 0.884, 1]),
  LightSteelBlue2: fromRgb([0.736, 0.824, 0.932]),
  LightSteelBlue3: fromRgb([0.635, 0.71, 0.804]),
  LightSteelBlue4: fromRgb([0.43, 0.484, 0.545]),
  LightYellow1: fromRgb([1, 1, 0.88]),
  LightYellow2: fromRgb([0.932, 0.932, 0.82]),
  LightYellow3: fromRgb([0.804, 0.804, 0.705]),
  LightYellow4: fromRgb([0.545, 0.545, 0.48]),
  Magenta1: fromRgb([1, 0, 1]),
  Magenta2: fromRgb([0.932, 0, 0.932]),
  Magenta3: fromRgb([0.804, 0, 0.804]),
  Magenta4: fromRgb([0.545, 0, 0.545]),
  Maroon1: fromRgb([1, 0.204, 0.7]),
  Maroon2: fromRgb([0.932, 0.19, 0.655]),
  Maroon3: fromRgb([0.804, 0.16, 0.565]),
  Maroon4: fromRgb([0.545, 0.11, 0.385]),
  MediumOrchid1: fromRgb([0.88, 0.4, 1]),
  MediumOrchid2: fromRgb([0.82, 0.372, 0.932]),
  MediumOrchid3: fromRgb([0.705, 0.32, 0.804]),
  MediumOrchid4: fromRgb([0.48, 0.215, 0.545]),
  MediumPurple1: fromRgb([0.67, 0.51, 1]),
  MediumPurple2: fromRgb([0.624, 0.475, 0.932]),
  MediumPurple3: fromRgb([0.536, 0.408, 0.804]),
  MediumPurple4: fromRgb([0.365, 0.28, 0.545]),
  MistyRose1: fromRgb([1, 0.894, 0.884]),
  MistyRose2: fromRgb([0.932, 0.835, 0.824]),
  MistyRose3: fromRgb([0.804, 0.716, 0.71]),
  MistyRose4: fromRgb([0.545, 0.49, 0.484]),
  NavajoWhite1: fromRgb([1, 0.87, 0.68]),
  NavajoWhite2: fromRgb([0.932, 0.81, 0.63]),
  NavajoWhite3: fromRgb([0.804, 0.7, 0.545]),
  NavajoWhite4: fromRgb([0.545, 0.475, 0.37]),
  OliveDrab1: fromRgb([0.752, 1, 0.244]),
  OliveDrab2: fromRgb([0.7, 0.932, 0.228]),
  OliveDrab3: fromRgb([0.604, 0.804, 0.196]),
  OliveDrab4: fromRgb([0.41, 0.545, 0.132]),
  Orange1: fromRgb([1, 0.648, 0]),
  Orange2: fromRgb([0.932, 0.604, 0]),
  Orange3: fromRgb([0.804, 0.52, 0]),
  Orange4: fromRgb([0.545, 0.352, 0]),
  OrangeRed1: fromRgb([1, 0.27, 0]),
  OrangeRed2: fromRgb([0.932, 0.25, 0]),
  OrangeRed3: fromRgb([0.804, 0.215, 0]),
  OrangeRed4: fromRgb([0.545, 0.145, 0]),
  Orchid1: fromRgb([1, 0.512, 0.98]),
  Orchid2: fromRgb([0.932, 0.48, 0.912]),
  Orchid3: fromRgb([0.804, 0.41, 0.79]),
  Orchid4: fromRgb([0.545, 0.28, 0.536]),
  PaleGreen1: fromRgb([0.604, 1, 0.604]),
  PaleGreen2: fromRgb([0.565, 0.932, 0.565]),
  PaleGreen3: fromRgb([0.488, 0.804, 0.488]),
  PaleGreen4: fromRgb([0.33, 0.545, 0.33]),
  PaleTurquoise1: fromRgb([0.732, 1, 1]),
  PaleTurquoise2: fromRgb([0.684, 0.932, 0.932]),
  PaleTurquoise3: fromRgb([0.59, 0.804, 0.804]),
  PaleTurquoise4: fromRgb([0.4, 0.545, 0.545]),
  PaleVioletRed1: fromRgb([1, 0.51, 0.67]),
  PaleVioletRed2: fromRgb([0.932, 0.475, 0.624]),
  PaleVioletRed3: fromRgb([0.804, 0.408, 0.536]),
  PaleVioletRed4: fromRgb([0.545, 0.28, 0.365]),
  PeachPuff1: fromRgb([1, 0.855, 0.725]),
  PeachPuff2: fromRgb([0.932, 0.796, 0.68]),
  PeachPuff3: fromRgb([0.804, 0.688, 0.585]),
  PeachPuff4: fromRgb([0.545, 0.468, 0.396]),
  Pink1: fromRgb([1, 0.71, 0.772]),
  Pink2: fromRgb([0.932, 0.664, 0.72]),
  Pink3: fromRgb([0.804, 0.57, 0.62]),
  Pink4: fromRgb([0.545, 0.39, 0.424]),
  Plum1: fromRgb([1, 0.732, 1]),
  Plum2: fromRgb([0.932, 0.684, 0.932]),
  Plum3: fromRgb([0.804, 0.59, 0.804]),
  Plum4: fromRgb([0.545, 0.4, 0.545]),
  Purple1: fromRgb([0.608, 0.19, 1]),
  Purple2: fromRgb([0.57, 0.172, 0.932]),
  Purple3: fromRgb([0.49, 0.15, 0.804]),
  Purple4: fromRgb([0.332, 0.1, 0.545]),
  Red1: fromRgb([1, 0, 0]),
  Red2: fromRgb([0.932, 0, 0]),
  Red3: fromRgb([0.804, 0, 0]),
  Red4: fromRgb([0.545, 0, 0]),
  RosyBrown1: fromRgb([1, 0.756, 0.756]),
  RosyBrown2: fromRgb([0.932, 0.705, 0.705]),
  RosyBrown3: fromRgb([0.804, 0.608, 0.608]),
  RosyBrown4: fromRgb([0.545, 0.41, 0.41]),
  RoyalBlue1: fromRgb([0.284, 0.464, 1]),
  RoyalBlue2: fromRgb([0.264, 0.43, 0.932]),
  RoyalBlue3: fromRgb([0.228, 0.372, 0.804]),
  RoyalBlue4: fromRgb([0.152, 0.25, 0.545]),
  Salmon1: fromRgb([1, 0.55, 0.41]),
  Salmon2: fromRgb([0.932, 0.51, 0.385]),
  Salmon3: fromRgb([0.804, 0.44, 0.33]),
  Salmon4: fromRgb([0.545, 0.298, 0.224]),
  SeaGreen1: fromRgb([0.33, 1, 0.624]),
  SeaGreen2: fromRgb([0.305, 0.932, 0.58]),
  SeaGreen3: fromRgb([0.264, 0.804, 0.5]),
  SeaGreen4: fromRgb([0.18, 0.545, 0.34]),
  Seashell1: fromRgb([1, 0.96, 0.932]),
  Seashell2: fromRgb([0.932, 0.898, 0.87]),
  Seashell3: fromRgb([0.804, 0.772, 0.75]),
  Seashell4: fromRgb([0.545, 0.525, 0.51]),
  Sienna1: fromRgb([1, 0.51, 0.28]),
  Sienna2: fromRgb([0.932, 0.475, 0.26]),
  Sienna3: fromRgb([0.804, 0.408, 0.224]),
  Sienna4: fromRgb([0.545, 0.28, 0.15]),
  SkyBlue1: fromRgb([0.53, 0.808, 1]),
  SkyBlue2: fromRgb([0.494, 0.752, 0.932]),
  SkyBlue3: fromRgb([0.424, 0.65, 0.804]),
  SkyBlue4: fromRgb([0.29, 0.44, 0.545]),
  SlateBlue1: fromRgb([0.512, 0.435, 1]),
  SlateBlue2: fromRgb([0.48, 0.404, 0.932]),
  SlateBlue3: fromRgb([0.41, 0.35, 0.804]),
  SlateBlue4: fromRgb([0.28, 0.235, 0.545]),
  SlateGray1: fromRgb([0.776, 0.888, 1]),
  SlateGray2: fromRgb([0.725, 0.828, 0.932]),
  SlateGray3: fromRgb([0.624, 0.712, 0.804]),
  SlateGray4: fromRgb([0.424, 0.484, 0.545]),
  Snow1: fromRgb([1, 0.98, 0.98]),
  Snow2: fromRgb([0.932, 0.912, 0.912]),
  Snow3: fromRgb([0.804, 0.79, 0.79]),
  Snow4: fromRgb([0.545, 0.536, 0.536]),
  SpringGreen1: fromRgb([0, 1, 0.498]),
  SpringGreen2: fromRgb([0, 0.932, 0.464]),
  SpringGreen3: fromRgb([0, 0.804, 0.4]),
  SpringGreen4: fromRgb([0, 0.545, 0.27]),
  SteelBlue1: fromRgb([0.39, 0.72, 1]),
  SteelBlue2: fromRgb([0.36, 0.675, 0.932]),
  SteelBlue3: fromRgb([0.31, 0.58, 0.804]),
  SteelBlue4: fromRgb([0.21, 0.392, 0.545]),
  Tan1: fromRgb([1, 0.648, 0.31]),
  Tan2: fromRgb([0.932, 0.604, 0.288]),
  Tan3: fromRgb([0.804, 0.52, 0.248]),
  Tan4: fromRgb([0.545, 0.352, 0.17]),
  Thistle1: fromRgb([1, 0.884, 1]),
  Thistle2: fromRgb([0.932, 0.824, 0.932]),
  Thistle3: fromRgb([0.804, 0.71, 0.804]),
  Thistle4: fromRgb([0.545, 0.484, 0.545]),
  Tomato1: fromRgb([1, 0.39, 0.28]),
  Tomato2: fromRgb([0.932, 0.36, 0.26]),
  Tomato3: fromRgb([0.804, 0.31, 0.224]),
  Tomato4: fromRgb([0.545, 0.21, 0.15]),
  Turquoise1: fromRgb([0, 0.96, 1]),
  Turquoise2: fromRgb([0, 0.898, 0.932]),
  Turquoise3: fromRgb([0, 0.772, 0.804]),
  Turquoise4: fromRgb([0, 0.525, 0.545]),
  VioletRed1: fromRgb([1, 0.244, 0.59]),
  VioletRed2: fromRgb([0.932, 0.228, 0.55]),
  VioletRed3: fromRgb([0.804, 0.196, 0.47]),
  VioletRed4: fromRgb([0.545, 0.132, 0.32]),
  Wheat1: fromRgb([1, 0.905, 0.73]),
  Wheat2: fromRgb([0.932, 0.848, 0.684]),
  Wheat3: fromRgb([0.804, 0.73, 0.59]),
  Wheat4: fromRgb([0.545, 0.494, 0.4]),
  Yellow1: fromRgb([1, 1, 0]),
  Yellow2: fromRgb([0.932, 0.932, 0]),
  Yellow3: fromRgb([0.804, 0.804, 0]),
  Yellow4: fromRgb([0.545, 0.545, 0]),
  Gray0: fromRgb([0.745, 0.745, 0.745]),
  Green0: fromRgb([0, 1, 0]),
  Grey0: fromRgb([0.745, 0.745, 0.745]),
  Maroon0: fromRgb([0.69, 0.19, 0.376]),
  Purple0: fromRgb([0.628, 0.125, 0.94])
};
var XColorCoreModelToColor = {
  rgb: ([r2, g, b]) => (0, import_color2.default)([r2 * 255, g * 255, b * 255], "rgb"),
  cmy: ([c, m2, y]) => XColorCoreModelToColor.rgb([1 - c, 1 - m2, 1 - y]),
  cmyk: ([c, m2, y, k]) => (0, import_color2.default)([c * 255, m2 * 255, y * 255, k * 100], "cmyk"),
  hsb: ([h4, s5, b]) => (0, import_color2.default)([h4 * 360, s5 * 100, b * 100], "hsv"),
  gray: ([v]) => (0, import_color2.default)([v * 255, v * 255, v * 255], "rgb")
};
var XColorModelToColor = {
  wave: ([lambda]) => {
    const gamma = 0.8;
    let baseRgb = [0, 0, 0];
    if (380 <= lambda && lambda < 440) {
      baseRgb = [(440 - lambda) / (440 - 380), 0, 1];
    }
    if (440 <= lambda && lambda < 490) {
      baseRgb = [0, (lambda - 440) / (490 - 440), 1];
    }
    if (490 <= lambda && lambda < 510) {
      baseRgb = [0, 1, (510 - lambda) / (510 - 490)];
    }
    if (510 <= lambda && lambda < 580) {
      baseRgb = [(lambda - 510) / (580 - 510), 1, 0];
    }
    if (580 <= lambda && lambda < 6450) {
      baseRgb = [1, (645 - lambda) / (645 - 580), 0];
    }
    if (645 <= lambda && lambda <= 780) {
      baseRgb = [1, 0, 0];
    }
    let f3 = 1;
    if (380 <= lambda && 420 < lambda) {
      f3 = 0.3 + 0.7 * (lambda - 380) / (420 - 380);
    }
    if (700 < lambda && lambda <= 780) {
      f3 = 0.3 + 0.7 * (780 - lambda) / (780 - 700);
    }
    const rgb = [
      Math.pow(baseRgb[0] * f3, gamma),
      Math.pow(baseRgb[1] * f3, gamma),
      Math.pow(baseRgb[2] * f3, gamma)
    ];
    return (0, import_color2.default)([rgb[0] * 255, rgb[1] * 255, rgb[2] * 255], "rgb");
  },
  Hsb: ([h4, s5, b]) => XColorCoreModelToColor.hsb([h4 / 360, s5, b]),
  HSB: ([h4, s5, b]) => XColorCoreModelToColor.hsb([h4 / 240, s5 / 240, b / 240]),
  HTML: ([v]) => v.startsWith("#") ? (0, import_color2.default)(v) : (0, import_color2.default)(`#${v}`),
  RGB: ([r2, g, b]) => (0, import_color2.default)([r2, g, b], "rgb"),
  Gray: ([v]) => XColorCoreModelToColor.gray([v / 15]),
  ...XColorCoreModelToColor
};
var PREDEFINED_XCOLOR_COLORS = {
  // Core colors
  red: XColorCoreModelToColor.rgb([1, 0, 0]),
  green: XColorCoreModelToColor.rgb([0, 1, 0]),
  blue: XColorCoreModelToColor.rgb([0, 0, 1]),
  brown: XColorCoreModelToColor.rgb([0.75, 0.5, 0.25]),
  lime: XColorCoreModelToColor.rgb([0.75, 1, 0]),
  orange: XColorCoreModelToColor.rgb([1, 0.5, 0]),
  pink: XColorCoreModelToColor.rgb([1, 0.75, 0.75]),
  purple: XColorCoreModelToColor.rgb([0.75, 0, 0.25]),
  teal: XColorCoreModelToColor.rgb([0, 0.5, 0.5]),
  violet: XColorCoreModelToColor.rgb([0.5, 0, 0.5]),
  cyan: XColorCoreModelToColor.rgb([0, 1, 1]),
  magenta: XColorCoreModelToColor.rgb([1, 0, 1]),
  yellow: XColorCoreModelToColor.rgb([1, 1, 0]),
  olive: XColorCoreModelToColor.rgb([0.5, 0.5, 0]),
  black: XColorCoreModelToColor.rgb([0, 0, 0]),
  darkgray: XColorCoreModelToColor.rgb([0.25, 0.25, 0.25]),
  gray: XColorCoreModelToColor.rgb([0.5, 0.5, 0.5]),
  lightgray: XColorCoreModelToColor.rgb([0.75, 0.75, 0.75]),
  white: XColorCoreModelToColor.rgb([1, 1, 1]),
  ...DVI_PS_NAMES,
  ...SVG_NAMES,
  ...X11_NAMES
};
var macros14 = {
  NewDocumentCommand: {
    signature: "m m m",
    renderInfo: { breakAround: true }
  },
  RenewDocumentCommand: {
    signature: "m m m",
    renderInfo: { breakAround: true }
  },
  ProvideDocumentCommand: {
    signature: "m m m",
    renderInfo: { breakAround: true }
  },
  DeclareDocumentCommand: {
    signature: "m m m",
    renderInfo: { breakAround: true }
  },
  NewDocumentEnvironment: {
    signature: "m m m m",
    renderInfo: { breakAround: true }
  },
  RenewDocumentEnvironment: {
    signature: "m m m m",
    renderInfo: { breakAround: true }
  },
  ProvideDocumentEnvironment: {
    signature: "m m m m",
    renderInfo: { breakAround: true }
  },
  DeclareDocumentEnvironment: {
    signature: "m m m m",
    renderInfo: { breakAround: true }
  },
  NewExpandableDocumentCommand: {
    signature: "m m m",
    renderInfo: { breakAround: true }
  },
  RenewExpandableDocumentCommand: {
    signature: "m m m",
    renderInfo: { breakAround: true }
  },
  ProvideExpandableDocumentCommand: {
    signature: "m m m",
    renderInfo: { breakAround: true }
  },
  DeclareExpandableDocumentCommand: {
    signature: "m m m",
    renderInfo: { breakAround: true }
  },
  RequirePackage: {
    signature: "o m",
    renderInfo: { pgfkeysArgs: true, breakAround: true }
  },
  DeclareOption: { signature: "m m", renderInfo: { breakAround: true } }
};
var environments14 = {};
var macros15 = {
  mode: { signature: "s d<> d{}", renderInfo: { breakAround: true } },
  insertnavigation: { signature: "m", renderInfo: { breakAround: true } },
  insertsectionnavigation: {
    signature: "m",
    renderInfo: { breakAround: true }
  },
  insertsectionnavigationhorizontal: {
    signature: "m m m",
    renderInfo: { breakAround: true }
  },
  insertauthor: { signature: "o", renderInfo: { breakAround: true } },
  insertshortauthor: { signature: "o", renderInfo: { breakAround: true } },
  insertshortdate: { signature: "o", renderInfo: { breakAround: true } },
  insertshortinstitute: { signature: "o", renderInfo: { breakAround: true } },
  insertshortpart: { signature: "o", renderInfo: { breakAround: true } },
  insertshorttitle: { signature: "o", renderInfo: { breakAround: true } },
  insertsubsectionnavigation: {
    signature: "m",
    renderInfo: { breakAround: true }
  },
  insertsubsectionnavigationhorizontal: {
    signature: "m m m",
    renderInfo: { breakAround: true }
  },
  insertverticalnavigation: {
    signature: "m",
    renderInfo: { breakAround: true }
  },
  usebeamercolor: { signature: "s m", renderInfo: { breakAround: true } },
  usebeamertemplate: { signature: "s m", renderInfo: { breakAround: true } },
  setbeamercolor: {
    signature: "m m",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  setbeamersize: {
    signature: "m o o",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  setbeamertemplate: {
    signature: "m o o d{}",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  newcommand: {
    signature: "s d<> +m o +o +m",
    renderInfo: {
      breakAround: true,
      namedArguments: [
        "starred",
        null,
        "name",
        "numArgs",
        "default",
        "body"
      ]
    }
  },
  renewcommand: {
    signature: "s d<> +m o +o +m",
    renderInfo: {
      breakAround: true,
      namedArguments: [
        "starred",
        null,
        "name",
        "numArgs",
        "default",
        "body"
      ]
    }
  },
  newenvironment: {
    signature: "s d<> m o o m m",
    renderInfo: { breakAround: true }
  },
  renewenvironment: {
    signature: "s d<> m o o m m",
    renderInfo: { breakAround: true }
  },
  resetcounteronoverlays: {
    signature: "m",
    renderInfo: { breakAround: true }
  },
  resetcountonoverlays: { signature: "m", renderInfo: { breakAround: true } },
  logo: { signature: "m", renderInfo: { breakAround: true } },
  frametitle: { signature: "d<> o m", renderInfo: { breakAround: true } },
  framesubtitle: { signature: "d<> m", renderInfo: { breakAround: true } },
  pause: { signature: "o" },
  onslide: { signature: "t+ t* d<> d{}" },
  only: { signature: "d<> m d<>" },
  uncover: { signature: "d<> m" },
  visible: { signature: "d<> m" },
  invisible: { signature: "d<> m" },
  alt: { signature: "d<> m m d<>" },
  temporal: { signature: "r<> m m m" },
  item: {
    signature: "d<> o d<>",
    renderInfo: {
      hangingIndent: true,
      namedArguments: [null, "label", null]
    }
  },
  label: { signature: "d<> o m" },
  // cleveref adds an optional argument to label; this gives maximum compatibility.
  action: { signature: "d<> m" },
  beamerdefaultoverlayspecification: { signature: "m" },
  titlegraphic: { signature: "m", renderInfo: { breakAround: true } },
  subject: { signature: "m", renderInfo: { breakAround: true } },
  keywords: { signature: "m", renderInfo: { breakAround: true } },
  lecture: { signature: "o m m", renderInfo: { breakAround: true } },
  partpage: { renderInfo: { breakAround: true } },
  sectionpage: { renderInfo: { breakAround: true } },
  subsectionpage: { renderInfo: { breakAround: true } },
  AtBeginLecture: { signature: "m", renderInfo: { breakAround: true } },
  AtBeginPart: { signature: "m", renderInfo: { breakAround: true } },
  tableofcontents: {
    signature: "o",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  againframe: { signature: "d<> o o m", renderInfo: { breakAround: true } },
  framezoom: {
    signature: "r<> r<> o r() r()",
    renderInfo: { breakAround: true }
  },
  column: { signature: "d<> o m", renderInfo: { breakAround: true } },
  animate: { signature: "r<>", renderInfo: { breakAround: true } },
  animatevalue: { signature: "r<> m m m", renderInfo: { breakAround: true } },
  sound: {
    signature: "o m m",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  hyperlinksound: {
    signature: "o m m",
    renderInfo: { breakAround: true, pgfkeysArgs: true }
  },
  hyperlinkmute: { signature: "m", renderInfo: { breakAround: true } },
  // These signatures conflict with the default signatures.
  // Care must be taken when processing an AST.
  section: {
    signature: "s d<> o m",
    renderInfo: {
      breakAround: true,
      namedArguments: ["starred", null, "tocTitle", "title"]
    }
  },
  subsection: {
    signature: "s d<> o m",
    renderInfo: {
      breakAround: true,
      namedArguments: ["starred", null, "tocTitle", "title"]
    }
  },
  subsubsection: {
    signature: "s d<> o m",
    renderInfo: {
      breakAround: true,
      namedArguments: ["starred", null, "tocTitle", "title"]
    }
  },
  part: {
    signature: "s d<> o m",
    renderInfo: {
      breakAround: true,
      namedArguments: ["starred", null, "tocTitle", "title"]
    }
  },
  bibitem: {
    signature: "s d<> o m",
    renderInfo: {
      hangingIndent: true,
      namedArguments: ["starred", null, "tocTitle", "title"]
    }
  }
};
var environments15 = {
  frame: {
    signature: "!d<> !o !o !d{} !d{}"
  },
  block: {
    signature: "!d<> !d{} !d<>"
  },
  alertblock: {
    signature: "!d<> !d{} !d<>"
  },
  exampleblock: {
    signature: "!d<> !d{} !d<>"
  },
  onlyenv: {
    signature: "!d<>"
  },
  altenv: {
    signature: "!d<> m m m m !d<>"
  },
  overlayarea: { signature: "m m" },
  overprint: { signature: "o" },
  actionenv: { signature: "!d<>" },
  columns: { signature: "d<> o" },
  column: { signature: "d<> o m" }
};
var macros16 = {
  columnbreak: { renderInfo: { breakAround: true } }
};
var environments16 = {
  multicols: {
    signature: "m o o"
  },
  "multicols*": {
    signature: "m o o"
  }
};
var macroInfo = {
  cleveref: macros2,
  exam: macros22,
  geometry: macros3,
  hyperref: macros4,
  latex2e: macros5,
  listings: macros6,
  makeidx: macros7,
  mathtools: macros8,
  minted: macros9,
  nicematrix: macros10,
  systeme: macros11,
  tikz: macros12,
  xcolor: macros13,
  xparse: macros14,
  beamer: macros15,
  multicol: macros16
};
var environmentInfo = {
  cleveref: environments2,
  exam: environments22,
  geometry: environments3,
  hyperref: environments4,
  latex2e: environments5,
  listings: environments6,
  makeidx: environments7,
  mathtools: environments8,
  minted: environments9,
  nicematrix: environments10,
  systeme: environments11,
  tikz: environments12,
  xcolor: environments13,
  xparse: environments14,
  beamer: environments15,
  multicol: environments16
};

// ../../node_modules/@unified-latex/unified-latex-util-environments/index.js
function processEnvironment(envNode, envInfo) {
  if (envInfo.signature && envNode.args == null) {
    const { args } = gobbleArguments(envNode.content, envInfo.signature);
    envNode.args = args;
  }
  updateRenderInfo(envNode, envInfo.renderInfo);
  if (typeof envInfo.processContent === "function") {
    envNode.content = envInfo.processContent(envNode.content);
  }
}

// ../../node_modules/@unified-latex/unified-latex-util-catcode/index.js
function findRegionInArray(tree, start, end) {
  const ret = [];
  let currRegion = { start: void 0, end: tree.length };
  for (let i2 = 0; i2 < tree.length; i2++) {
    const node3 = tree[i2];
    if (start(node3)) {
      currRegion.start = i2;
    }
    if (end(node3)) {
      currRegion.end = i2 + 1;
      ret.push(currRegion);
      currRegion = { start: void 0, end: tree.length };
    }
  }
  if (currRegion.start != null) {
    ret.push(currRegion);
  }
  return ret;
}
function refineRegions(regions) {
  const _regions = [...regions];
  _regions.sort((a2, b) => a2.start - b.start);
  const cutPointsSet = new Set(_regions.flatMap((r2) => [r2.start, r2.end]));
  const cutPoints = Array.from(cutPointsSet);
  cutPoints.sort((a2, b) => a2 - b);
  const retRegions = [];
  const retRegionsContainedIn = [];
  let seekIndex = 0;
  for (let i2 = 0; i2 < cutPoints.length - 1; i2++) {
    const start = cutPoints[i2];
    const end = cutPoints[i2 + 1];
    const region = { start, end };
    const regionContainedIn = /* @__PURE__ */ new Set();
    let encounteredEndPastStart = false;
    for (let j = seekIndex; j < _regions.length; j++) {
      const superRegion = _regions[j];
      if (superRegion.end >= region.start) {
        encounteredEndPastStart = true;
      }
      if (!encounteredEndPastStart && superRegion.end < region.start) {
        seekIndex = j + 1;
        continue;
      }
      if (superRegion.start > end) {
        break;
      }
      if (superRegion.start <= region.start && superRegion.end >= region.end) {
        encounteredEndPastStart = true;
        regionContainedIn.add(superRegion);
      }
    }
    if (regionContainedIn.size > 0) {
      retRegions.push(region);
      retRegionsContainedIn.push(regionContainedIn);
    }
  }
  return { regions: retRegions, regionsContainedIn: retRegionsContainedIn };
}
function splitByRegions(array, regionsRecord) {
  const ret = [];
  const indices = [0, array.length];
  const reverseMap = {};
  for (const [key2, records] of Object.entries(regionsRecord)) {
    indices.push(
      ...records.flatMap((r2) => {
        reverseMap["" + [r2.start, r2.end]] = key2;
        return [r2.start, r2.end];
      })
    );
  }
  indices.sort((a2, b) => a2 - b);
  for (let i2 = 0; i2 < indices.length - 1; i2++) {
    const start = indices[i2];
    const end = indices[i2 + 1];
    if (start === end) {
      continue;
    }
    const regionKey = reverseMap["" + [start, end]];
    ret.push([regionKey || null, array.slice(start, end)]);
  }
  return ret;
}
function escapeRegExp(str2) {
  return str2.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
function buildWordRegex(allowedSet) {
  const regexpStr = `^(${["\\p{L}"].concat(Array.from(allowedSet).map(escapeRegExp)).join("|")})*`;
  return new RegExp(regexpStr, "u");
}
function hasReparsableMacroNamesInArray(tree, allowedTokens) {
  for (let i2 = 0; i2 < tree.length; i2++) {
    const macro2 = tree[i2];
    const string2 = tree[i2 + 1];
    if (match.anyMacro(macro2) && match.anyString(string2)) {
      if (allowedTokens.has(
        macro2.content.charAt(macro2.content.length - 1)
      ) || allowedTokens.has(string2.content.charAt(0))) {
        return true;
      }
    }
  }
  return false;
}
function hasReparsableMacroNames(tree, allowedTokens) {
  if (typeof allowedTokens === "string") {
    allowedTokens = new Set(allowedTokens.split(""));
  }
  const _allowedTokens = allowedTokens;
  for (const v of _allowedTokens) {
    if (v.length > 1) {
      throw new Error(
        `Only single characters are allowed as \`allowedTokens\` when reparsing macro names, not \`${v}\`.`
      );
    }
  }
  let ret = false;
  visit2(
    tree,
    (nodes) => {
      if (hasReparsableMacroNamesInArray(nodes, _allowedTokens)) {
        ret = true;
        return EXIT2;
      }
    },
    { includeArrays: true, test: Array.isArray }
  );
  return ret;
}
function reparseMacroNamesInArray(tree, allowedTokens) {
  var _a6, _b, _c;
  const regex2 = buildWordRegex(allowedTokens);
  let i2 = 0;
  while (i2 < tree.length) {
    const macro2 = tree[i2];
    const string2 = tree[i2 + 1];
    if (match.anyMacro(macro2) && // The _^ macros in math mode should not be extended no-matter what;
    // So we check to make sure that the macro we're dealing with has the default escape token.
    (macro2.escapeToken == null || macro2.escapeToken === "\\") && match.anyString(string2) && // There are two options. Either the macro ends with the special character,
    // e.g. `\@foo` or the special character starts the next string, e.g. `\foo@`.
    (allowedTokens.has(
      macro2.content.charAt(macro2.content.length - 1)
    ) || allowedTokens.has(string2.content.charAt(0)))) {
      const match3 = string2.content.match(regex2);
      const takeable = match3 ? match3[0] : "";
      if (takeable.length > 0) {
        if (takeable.length === string2.content.length) {
          macro2.content += string2.content;
          tree.splice(i2 + 1, 1);
          if (macro2.position && ((_a6 = string2.position) == null ? void 0 : _a6.end)) {
            macro2.position.end = string2.position.end;
          }
        } else {
          macro2.content += takeable;
          string2.content = string2.content.slice(takeable.length);
          if ((_b = macro2.position) == null ? void 0 : _b.end) {
            macro2.position.end.offset += takeable.length;
            macro2.position.end.column += takeable.length;
          }
          if ((_c = string2.position) == null ? void 0 : _c.start) {
            string2.position.start.offset += takeable.length;
            string2.position.start.column += takeable.length;
          }
        }
      } else {
        i2++;
      }
    } else {
      ++i2;
    }
  }
}
function reparseMacroNames(tree, allowedTokens) {
  if (typeof allowedTokens === "string") {
    allowedTokens = new Set(allowedTokens.split(""));
  }
  const _allowedTokens = allowedTokens;
  for (const v of _allowedTokens) {
    if (v.length > 1) {
      throw new Error(
        `Only single characters are allowed as \`allowedTokens\` when reparsing macro names, not \`${v}\`.`
      );
    }
  }
  visit2(
    tree,
    (nodes) => {
      reparseMacroNamesInArray(nodes, _allowedTokens);
    },
    { includeArrays: true, test: Array.isArray }
  );
}
var expl3Find = {
  start: match.createMacroMatcher(["ExplSyntaxOn"]),
  end: match.createMacroMatcher(["ExplSyntaxOff"])
};
var atLetterFind = {
  start: match.createMacroMatcher(["makeatletter"]),
  end: match.createMacroMatcher(["makeatother"])
};
function findExpl3AndAtLetterRegionsInArray(tree) {
  const expl3 = findRegionInArray(tree, expl3Find.start, expl3Find.end);
  const atLetter = findRegionInArray(
    tree,
    atLetterFind.start,
    atLetterFind.end
  );
  const regionMap = new Map([
    ...expl3.map((x2) => [x2, "expl"]),
    ...atLetter.map((x2) => [x2, "atLetter"])
  ]);
  const all10 = refineRegions([...expl3, ...atLetter]);
  const ret = {
    explOnly: [],
    atLetterOnly: [],
    both: []
  };
  for (let i2 = 0; i2 < all10.regions.length; i2++) {
    const region = all10.regions[i2];
    const containedIn = all10.regionsContainedIn[i2];
    if (containedIn.size === 2) {
      ret.both.push(region);
      continue;
    }
    for (const v of containedIn.values()) {
      if (regionMap.get(v) === "expl") {
        ret.explOnly.push(region);
      }
      if (regionMap.get(v) === "atLetter") {
        ret.atLetterOnly.push(region);
      }
    }
  }
  ret.explOnly = ret.explOnly.filter((r2) => r2.end - r2.start > 1);
  ret.atLetterOnly = ret.atLetterOnly.filter((r2) => r2.end - r2.start > 1);
  ret.both = ret.both.filter((r2) => r2.end - r2.start > 1);
  return ret;
}
var atLetterSet = /* @__PURE__ */ new Set(["@"]);
var explSet = /* @__PURE__ */ new Set(["_", ":"]);
var bothSet = /* @__PURE__ */ new Set(["_", ":", "@"]);
function reparseExpl3AndAtLetterRegions(tree) {
  visit2(
    tree,
    {
      leave: (nodes) => {
        const regions = findExpl3AndAtLetterRegionsInArray(nodes);
        const totalNumRegions = regions.both.length + regions.atLetterOnly.length + regions.explOnly.length;
        if (totalNumRegions === 0) {
          return;
        }
        const splits = splitByRegions(nodes, regions);
        const processed = [];
        for (const [key2, slice2] of splits) {
          switch (key2) {
            case null:
              processed.push(...slice2);
              continue;
            case "atLetterOnly":
              reparseMacroNames(slice2, atLetterSet);
              processed.push(...slice2);
              continue;
            case "explOnly":
              reparseMacroNames(slice2, explSet);
              processed.push(...slice2);
              continue;
            case "both":
              reparseMacroNames(slice2, bothSet);
              processed.push(...slice2);
              continue;
            default:
              throw new Error(
                `Unexpected case when splitting ${key2}`
              );
          }
        }
        nodes.length = 0;
        nodes.push(...processed);
        return SKIP2;
      }
    },
    { includeArrays: true, test: Array.isArray }
  );
}

// ../../node_modules/@unified-latex/unified-latex-util-parse/index.js
var unifiedLatexAstComplier = function unifiedLatexAstComplier2() {
  Object.assign(this, { Compiler: (x2) => x2 });
};
function parseMinimal(str2) {
  return LatexPegParser.parse(str2);
}
function parseMathMinimal(str2) {
  return LatexPegParser.parse(str2, { startRule: "math" });
}
var unifiedLatexFromStringMinimal = function unifiedLatexFromStringMinimal2(options) {
  const parser22 = (str2) => {
    if ((options == null ? void 0 : options.mode) === "math") {
      return {
        type: "root",
        content: parseMathMinimal(str2),
        _renderInfo: { inMathMode: true }
      };
    }
    return parseMinimal(str2);
  };
  Object.assign(this, { Parser: parser22 });
};
function unifiedLatexReparseMathConstructPlugin({
  mathEnvs,
  mathMacros
}) {
  const isMathEnvironment = match.createEnvironmentMatcher(mathEnvs);
  const isMathMacro = match.createMacroMatcher(mathMacros);
  return (tree) => {
    visit2(
      tree,
      (node3) => {
        if (match.anyMacro(node3)) {
          for (const arg2 of node3.args || []) {
            if (arg2.content.length > 0 && !wasParsedInMathMode(arg2.content)) {
              arg2.content = parseMathMinimal(
                printRaw(arg2.content)
              );
            }
          }
        }
        if (match.anyEnvironment(node3)) {
          if (!wasParsedInMathMode(node3.content)) {
            node3.content = parseMathMinimal(printRaw(node3.content));
          }
        }
      },
      {
        test: (node3) => isMathEnvironment(node3) || isMathMacro(node3)
      }
    );
  };
}
function wasParsedInMathMode(nodes) {
  return !nodes.some(
    (node3) => (
      // If there are multi-char strings or ^ and _ have been parsed as strings, we know
      // that we were not parsed in math mode.
      match.anyString(node3) && node3.content.length > 1 || match.string(node3, "^") || match.string(node3, "_")
    )
  );
}
var unifiedLatexProcessMacrosAndEnvironmentsWithMathReparse = function unifiedLatexProcessMacrosAndEnvironmentsWithMathReparse2(options) {
  const { environments: environments17 = {}, macros: macros18 = {} } = options || {};
  const mathMacros = Object.fromEntries(
    Object.entries(macros18).filter(
      ([_2, info]) => {
        var _a6;
        return ((_a6 = info.renderInfo) == null ? void 0 : _a6.inMathMode) === true;
      }
    )
  );
  const mathEnvs = Object.fromEntries(
    Object.entries(environments17).filter(
      ([_2, info]) => {
        var _a6;
        return ((_a6 = info.renderInfo) == null ? void 0 : _a6.inMathMode) === true;
      }
    )
  );
  const mathReparser = unifiedLatexReparseMathConstructPlugin({
    mathEnvs: Object.keys(mathEnvs),
    mathMacros: Object.keys(mathMacros)
  });
  const isRelevantEnvironment = match.createEnvironmentMatcher(environments17);
  const isRelevantMathEnvironment = match.createEnvironmentMatcher(mathEnvs);
  return (tree) => {
    visit2(
      tree,
      {
        enter: (nodes) => {
          if (!Array.isArray(nodes)) {
            return;
          }
          attachMacroArgsInArray(nodes, mathMacros);
        },
        leave: (node3) => {
          if (!isRelevantMathEnvironment(node3)) {
            return;
          }
          const envName = printRaw(node3.env);
          const envInfo = environments17[envName];
          if (!envInfo) {
            throw new Error(
              `Could not find environment info for environment "${envName}"`
            );
          }
          processEnvironment(node3, envInfo);
        }
      },
      { includeArrays: true }
    );
    mathReparser(tree);
    visit2(
      tree,
      {
        enter: (nodes) => {
          if (!Array.isArray(nodes)) {
            return;
          }
          attachMacroArgsInArray(nodes, macros18);
        },
        leave: (node3) => {
          if (!isRelevantEnvironment(node3)) {
            return;
          }
          const envName = printRaw(node3.env);
          const envInfo = environments17[envName];
          if (!envInfo) {
            throw new Error(
              `Could not find environment info for environment "${envName}"`
            );
          }
          processEnvironment(node3, envInfo);
        }
      },
      { includeArrays: true }
    );
  };
};
var unifiedLatexProcessAtLetterAndExplMacros = function unifiedLatexProcessAtLetterAndExplMacros2(options) {
  let {
    atLetter = false,
    expl3 = false,
    autodetectExpl3AndAtLetter = false
  } = options || {};
  return (tree) => {
    reparseExpl3AndAtLetterRegions(tree);
    if (atLetter || expl3) {
      autodetectExpl3AndAtLetter = false;
    }
    if (autodetectExpl3AndAtLetter) {
      atLetter = hasReparsableMacroNames(tree, "@");
      expl3 = hasReparsableMacroNames(tree, "_");
    }
    const charSet = /* @__PURE__ */ new Set();
    if (atLetter) {
      charSet.add("@");
    }
    if (expl3) {
      charSet.add(":");
      charSet.add("_");
    }
    if (charSet.size > 0) {
      reparseMacroNames(tree, charSet);
    }
  };
};
var unifiedLatexFromString = function unifiedLatexFromString2(options) {
  const {
    mode = "regular",
    macros: macros18 = {},
    environments: environments17 = {},
    flags: {
      atLetter = false,
      expl3 = false,
      autodetectExpl3AndAtLetter = false
    } = {}
  } = options || {};
  const allMacroInfo = Object.assign(
    {},
    ...Object.values(macroInfo),
    macros18
  );
  const allEnvInfo = Object.assign(
    {},
    ...Object.values(environmentInfo),
    environments17
  );
  const fullParser = unified().use(unifiedLatexFromStringMinimal, { mode }).use(unifiedLatexProcessAtLetterAndExplMacros, {
    atLetter,
    expl3,
    autodetectExpl3AndAtLetter
  }).use(unifiedLatexProcessMacrosAndEnvironmentsWithMathReparse, {
    macros: allMacroInfo,
    environments: allEnvInfo
  }).use(unifiedLatexTrimEnvironmentContents).use(unifiedLatexTrimRoot).use(unifiedLatexAstComplier);
  const parser22 = (str2) => {
    const file = fullParser.processSync({ value: str2 });
    return file.result;
  };
  Object.assign(this, { Parser: parser22 });
};
var parser2 = unified().use(unifiedLatexFromString).freeze();

// ../../node_modules/@unified-latex/unified-latex-ctan/package/tikz/index.js
var OPTIONAL_ARGUMENT_ARG_SPEC2 = parse6("o")[0];
function createMatchers3() {
  return {
    isChar: match.string,
    isTerminal: (node3) => match.string(node3, ";"),
    isOperation: (node3) => match.anyString(node3) && node3.content.match(/[a-zA-Z]/),
    isWhitespace: (node3) => match.whitespace(node3) || match.parbreak(node3),
    isComment: match.comment,
    isGroup: match.group,
    isMacro: match.macro,
    isAnyMacro: match.anyMacro
  };
}
var matchers2 = createMatchers3();
function parse7(ast, options) {
  const { startRule = "path_spec" } = options || {};
  if (!Array.isArray(ast)) {
    throw new Error("You must pass an array of nodes");
  }
  ast = decorateArrayForPegjs([...ast]);
  return TikzPegParser.parse(ast, {
    ...matchers2,
    startRule
  });
}

// ../../node_modules/@unified-latex/unified-latex-util-pgfkeys/index.js
function createMatchers4() {
  return {
    isChar: (node3, char) => match.string(node3, char),
    isComma: (node3) => match.string(node3, ","),
    isEquals: (node3) => match.string(node3, "="),
    isWhitespace: (node3) => match.whitespace(node3),
    isParbreak: (node3) => match.parbreak(node3),
    isSameLineComment: (node3) => match.comment(node3) && node3.sameline,
    isOwnLineComment: (node3) => match.comment(node3) && !node3.sameline
  };
}
function parsePgfkeys(ast, options) {
  if (!Array.isArray(ast)) {
    throw new Error("You must pass an array of nodes");
  }
  const { allowParenGroups = false } = options || {};
  ast = decorateArrayForPegjs([...ast]);
  return PgfkeysPegParser.parse(ast, {
    ...createMatchers4(),
    allowParenGroups
  });
}

// ../../node_modules/@unified-latex/unified-latex-util-align/index.js
function createMatchers5(rowSepMacros, colSep) {
  const isRowSep = match.createMacroMatcher(rowSepMacros);
  return {
    isRowSep,
    isColSep: (node3) => colSep.some((sep5) => match.string(node3, sep5)),
    isWhitespace: (node3) => match.whitespace(node3),
    isSameLineComment: (node3) => match.comment(node3) && node3.sameline,
    isOwnLineComment: (node3) => match.comment(node3) && !node3.sameline
  };
}
function parseAlignEnvironment(ast, colSep = ["&"], rowSepMacros = ["\\", "hline", "cr"]) {
  if (!Array.isArray(ast)) {
    throw new Error("You must pass an array of nodes");
  }
  ast = decorateArrayForPegjs([...ast]);
  return AlignEnvironmentPegParser.parse(
    ast,
    createMatchers5(rowSepMacros, colSep)
  );
}

// ../../node_modules/@unified-latex/unified-latex-prettier/index.js
var __create2 = Object.create;
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __getProtoOf2 = Object.getPrototypeOf;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __commonJS2 = (cb, mod) => function __require() {
  return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __copyProps2 = (to, from4, except, desc) => {
  if (from4 && typeof from4 === "object" || typeof from4 === "function") {
    for (let key2 of __getOwnPropNames2(from4))
      if (!__hasOwnProp2.call(to, key2) && key2 !== except)
        __defProp2(to, key2, { get: () => from4[key2], enumerable: !(desc = __getOwnPropDesc2(from4, key2)) || desc.enumerable });
  }
  return to;
};
var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(
  // If the importer is in node compatibility mode or this is not an ESM
  // file that has been converted to a CommonJS file using a Babel-
  // compatible transform (i.e. "__esModule" has not been set), then set
  // "default" to the CommonJS "module.exports" for node compatibility.
  isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { value: mod, enumerable: true }) : target,
  mod
));
var __accessCheck2 = (obj, member, msg) => {
  if (!member.has(obj))
    throw TypeError("Cannot " + msg);
};
var __privateGet2 = (obj, member, getter) => {
  __accessCheck2(obj, member, "read from private field");
  return getter ? getter.call(obj) : member.get(obj);
};
var __privateAdd2 = (obj, member, value) => {
  if (member.has(obj))
    throw TypeError("Cannot add the same private member more than once");
  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
};
var __privateSet2 = (obj, member, value, setter) => {
  __accessCheck2(obj, member, "write to private field");
  setter ? setter.call(obj, value) : member.set(obj, value);
  return value;
};
var require_doc = __commonJS2({
  "../../node_modules/prettier/doc.js"(exports2, module2) {
    (function(factory) {
      if (typeof exports2 === "object" && typeof module2 === "object") {
        module2.exports = factory();
      } else if (typeof define === "function" && define.amd) {
        define(factory);
      } else {
        var root6 = typeof globalThis !== "undefined" ? globalThis : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : this || {};
        root6.doc = factory();
      }
    })(function() {
      "use strict";
      var __getOwnPropNames22 = Object.getOwnPropertyNames;
      var __commonJS22 = (cb, mod) => function __require() {
        return mod || (0, cb[__getOwnPropNames22(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
      };
      var require_doc_js_umd = __commonJS22({
        "dist/_doc.js.umd.js"(exports22, module22) {
          var __create22 = Object.create;
          var __defProp22 = Object.defineProperty;
          var __getOwnPropDesc22 = Object.getOwnPropertyDescriptor;
          var __getOwnPropNames222 = Object.getOwnPropertyNames;
          var __getProtoOf22 = Object.getPrototypeOf;
          var __hasOwnProp22 = Object.prototype.hasOwnProperty;
          var __esm2 = (fn, res) => function __init() {
            return fn && (res = (0, fn[__getOwnPropNames222(fn)[0]])(fn = 0)), res;
          };
          var __commonJS222 = (cb, mod) => function __require() {
            return mod || (0, cb[__getOwnPropNames222(cb)[0]])((mod = {
              exports: {}
            }).exports, mod), mod.exports;
          };
          var __export2 = (target, all10) => {
            for (var name3 in all10)
              __defProp22(target, name3, {
                get: all10[name3],
                enumerable: true
              });
          };
          var __copyProps22 = (to, from4, except, desc) => {
            if (from4 && typeof from4 === "object" || typeof from4 === "function") {
              for (let key2 of __getOwnPropNames222(from4))
                if (!__hasOwnProp22.call(to, key2) && key2 !== except)
                  __defProp22(to, key2, {
                    get: () => from4[key2],
                    enumerable: !(desc = __getOwnPropDesc22(from4, key2)) || desc.enumerable
                  });
            }
            return to;
          };
          var __toESM22 = (mod, isNodeMode, target) => (target = mod != null ? __create22(__getProtoOf22(mod)) : {}, __copyProps22(isNodeMode || !mod || !mod.__esModule ? __defProp22(target, "default", {
            value: mod,
            enumerable: true
          }) : target, mod));
          var __toCommonJS = (mod) => __copyProps22(__defProp22({}, "__esModule", {
            value: true
          }), mod);
          var init_define_process = __esm2({
            "<define:process>"() {
            }
          });
          var require_doc_builders = __commonJS222({
            "src/document/doc-builders.js"(exports222, module222) {
              "use strict";
              init_define_process();
              function concat2(parts) {
                if (false) {
                  for (const part of parts) {
                    assertDoc(part);
                  }
                }
                return {
                  type: "concat",
                  parts
                };
              }
              function indent2(contents) {
                if (false) {
                  assertDoc(contents);
                }
                return {
                  type: "indent",
                  contents
                };
              }
              function align(widthOrString, contents) {
                if (false) {
                  assertDoc(contents);
                }
                return {
                  type: "align",
                  contents,
                  n: widthOrString
                };
              }
              function group22(contents) {
                let opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
                if (false) {
                  assertDoc(contents);
                }
                return {
                  type: "group",
                  id: opts.id,
                  contents,
                  break: Boolean(opts.shouldBreak),
                  expandedStates: opts.expandedStates
                };
              }
              function dedentToRoot(contents) {
                return align(Number.NEGATIVE_INFINITY, contents);
              }
              function markAsRoot2(contents) {
                return align({
                  type: "root"
                }, contents);
              }
              function dedent(contents) {
                return align(-1, contents);
              }
              function conditionalGroup(states, opts) {
                return group22(states[0], Object.assign(Object.assign({}, opts), {}, {
                  expandedStates: states
                }));
              }
              function fill3(parts) {
                if (false) {
                  for (const part of parts) {
                    assertDoc(part);
                  }
                }
                return {
                  type: "fill",
                  parts
                };
              }
              function ifBreak4(breakContents, flatContents) {
                let opts = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
                if (false) {
                  if (breakContents) {
                    assertDoc(breakContents);
                  }
                  if (flatContents) {
                    assertDoc(flatContents);
                  }
                }
                return {
                  type: "if-break",
                  breakContents,
                  flatContents,
                  groupId: opts.groupId
                };
              }
              function indentIfBreak(contents, opts) {
                return {
                  type: "indent-if-break",
                  contents,
                  groupId: opts.groupId,
                  negate: opts.negate
                };
              }
              function lineSuffix2(contents) {
                if (false) {
                  assertDoc(contents);
                }
                return {
                  type: "line-suffix",
                  contents
                };
              }
              var lineSuffixBoundary2 = {
                type: "line-suffix-boundary"
              };
              var breakParent3 = {
                type: "break-parent"
              };
              var trim4 = {
                type: "trim"
              };
              var hardlineWithoutBreakParent = {
                type: "line",
                hard: true
              };
              var literallineWithoutBreakParent = {
                type: "line",
                hard: true,
                literal: true
              };
              var line4 = {
                type: "line"
              };
              var softline4 = {
                type: "line",
                soft: true
              };
              var hardline2 = concat2([hardlineWithoutBreakParent, breakParent3]);
              var literalline = concat2([literallineWithoutBreakParent, breakParent3]);
              var cursor = {
                type: "cursor",
                placeholder: Symbol("cursor")
              };
              function join22(sep5, arr) {
                const res = [];
                for (let i2 = 0; i2 < arr.length; i2++) {
                  if (i2 !== 0) {
                    res.push(sep5);
                  }
                  res.push(arr[i2]);
                }
                return concat2(res);
              }
              function addAlignmentToDoc(doc, size, tabWidth) {
                let aligned = doc;
                if (size > 0) {
                  for (let i2 = 0; i2 < Math.floor(size / tabWidth); ++i2) {
                    aligned = indent2(aligned);
                  }
                  aligned = align(size % tabWidth, aligned);
                  aligned = align(Number.NEGATIVE_INFINITY, aligned);
                }
                return aligned;
              }
              function label(label2, contents) {
                return {
                  type: "label",
                  label: label2,
                  contents
                };
              }
              module222.exports = {
                concat: concat2,
                join: join22,
                line: line4,
                softline: softline4,
                hardline: hardline2,
                literalline,
                group: group22,
                conditionalGroup,
                fill: fill3,
                lineSuffix: lineSuffix2,
                lineSuffixBoundary: lineSuffixBoundary2,
                cursor,
                breakParent: breakParent3,
                ifBreak: ifBreak4,
                trim: trim4,
                indent: indent2,
                indentIfBreak,
                align,
                addAlignmentToDoc,
                markAsRoot: markAsRoot2,
                dedentToRoot,
                dedent,
                hardlineWithoutBreakParent,
                literallineWithoutBreakParent,
                label
              };
            }
          });
          var require_end_of_line = __commonJS222({
            "src/common/end-of-line.js"(exports222, module222) {
              "use strict";
              init_define_process();
              function guessEndOfLine(text7) {
                const index4 = text7.indexOf("\r");
                if (index4 >= 0) {
                  return text7.charAt(index4 + 1) === "\n" ? "crlf" : "cr";
                }
                return "lf";
              }
              function convertEndOfLineToChars(value) {
                switch (value) {
                  case "cr":
                    return "\r";
                  case "crlf":
                    return "\r\n";
                  default:
                    return "\n";
                }
              }
              function countEndOfLineChars(text7, eol2) {
                let regex2;
                switch (eol2) {
                  case "\n":
                    regex2 = /\n/g;
                    break;
                  case "\r":
                    regex2 = /\r/g;
                    break;
                  case "\r\n":
                    regex2 = /\r\n/g;
                    break;
                  default:
                    throw new Error(`Unexpected "eol" ${JSON.stringify(eol2)}.`);
                }
                const endOfLines = text7.match(regex2);
                return endOfLines ? endOfLines.length : 0;
              }
              function normalizeEndOfLine(text7) {
                return text7.replace(/\r\n?/g, "\n");
              }
              module222.exports = {
                guessEndOfLine,
                convertEndOfLineToChars,
                countEndOfLineChars,
                normalizeEndOfLine
              };
            }
          });
          var require_get_last = __commonJS222({
            "src/utils/get-last.js"(exports222, module222) {
              "use strict";
              init_define_process();
              var getLast = (arr) => arr[arr.length - 1];
              module222.exports = getLast;
            }
          });
          function ansiRegex2() {
            let {
              onlyFirst = false
            } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
            const pattern = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");
            return new RegExp(pattern, onlyFirst ? void 0 : "g");
          }
          var init_ansi_regex = __esm2({
            "node_modules/strip-ansi/node_modules/ansi-regex/index.js"() {
              init_define_process();
            }
          });
          function stripAnsi3(string2) {
            if (typeof string2 !== "string") {
              throw new TypeError(`Expected a \`string\`, got \`${typeof string2}\``);
            }
            return string2.replace(ansiRegex2(), "");
          }
          var init_strip_ansi = __esm2({
            "node_modules/strip-ansi/index.js"() {
              init_define_process();
              init_ansi_regex();
            }
          });
          function isFullwidthCodePoint(codePoint) {
            if (!Number.isInteger(codePoint)) {
              return false;
            }
            return codePoint >= 4352 && (codePoint <= 4447 || codePoint === 9001 || codePoint === 9002 || 11904 <= codePoint && codePoint <= 12871 && codePoint !== 12351 || 12880 <= codePoint && codePoint <= 19903 || 19968 <= codePoint && codePoint <= 42182 || 43360 <= codePoint && codePoint <= 43388 || 44032 <= codePoint && codePoint <= 55203 || 63744 <= codePoint && codePoint <= 64255 || 65040 <= codePoint && codePoint <= 65049 || 65072 <= codePoint && codePoint <= 65131 || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510 || 110592 <= codePoint && codePoint <= 110593 || 127488 <= codePoint && codePoint <= 127569 || 131072 <= codePoint && codePoint <= 262141);
          }
          var init_is_fullwidth_code_point = __esm2({
            "node_modules/is-fullwidth-code-point/index.js"() {
              init_define_process();
            }
          });
          var require_emoji_regex4 = __commonJS222({
            "node_modules/emoji-regex/index.js"(exports222, module222) {
              "use strict";
              init_define_process();
              module222.exports = function() {
                return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
              };
            }
          });
          var string_width_exports = {};
          __export2(string_width_exports, {
            default: () => stringWidth3
          });
          function stringWidth3(string2) {
            if (typeof string2 !== "string" || string2.length === 0) {
              return 0;
            }
            string2 = stripAnsi3(string2);
            if (string2.length === 0) {
              return 0;
            }
            string2 = string2.replace((0, import_emoji_regex2.default)(), "  ");
            let width = 0;
            for (let index4 = 0; index4 < string2.length; index4++) {
              const codePoint = string2.codePointAt(index4);
              if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
                continue;
              }
              if (codePoint >= 768 && codePoint <= 879) {
                continue;
              }
              if (codePoint > 65535) {
                index4++;
              }
              width += isFullwidthCodePoint(codePoint) ? 2 : 1;
            }
            return width;
          }
          var import_emoji_regex2;
          var init_string_width = __esm2({
            "node_modules/string-width/index.js"() {
              init_define_process();
              init_strip_ansi();
              init_is_fullwidth_code_point();
              import_emoji_regex2 = __toESM22(require_emoji_regex4());
            }
          });
          var require_get_string_width = __commonJS222({
            "src/utils/get-string-width.js"(exports222, module222) {
              "use strict";
              init_define_process();
              var stringWidth22 = (init_string_width(), __toCommonJS(string_width_exports)).default;
              var notAsciiRegex = /[^\x20-\x7F]/;
              function getStringWidth(text7) {
                if (!text7) {
                  return 0;
                }
                if (!notAsciiRegex.test(text7)) {
                  return text7.length;
                }
                return stringWidth22(text7);
              }
              module222.exports = getStringWidth;
            }
          });
          var require_doc_utils = __commonJS222({
            "src/document/doc-utils.js"(exports222, module222) {
              "use strict";
              init_define_process();
              var getLast = require_get_last();
              var {
                literalline,
                join: join22
              } = require_doc_builders();
              var isConcat = (doc) => Array.isArray(doc) || doc && doc.type === "concat";
              var getDocParts = (doc) => {
                if (Array.isArray(doc)) {
                  return doc;
                }
                if (doc.type !== "concat" && doc.type !== "fill") {
                  throw new Error("Expect doc type to be `concat` or `fill`.");
                }
                return doc.parts;
              };
              var traverseDocOnExitStackMarker = {};
              function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) {
                const docsStack = [doc];
                while (docsStack.length > 0) {
                  const doc2 = docsStack.pop();
                  if (doc2 === traverseDocOnExitStackMarker) {
                    onExit(docsStack.pop());
                    continue;
                  }
                  if (onExit) {
                    docsStack.push(doc2, traverseDocOnExitStackMarker);
                  }
                  if (!onEnter || onEnter(doc2) !== false) {
                    if (isConcat(doc2) || doc2.type === "fill") {
                      const parts = getDocParts(doc2);
                      for (let ic = parts.length, i2 = ic - 1; i2 >= 0; --i2) {
                        docsStack.push(parts[i2]);
                      }
                    } else if (doc2.type === "if-break") {
                      if (doc2.flatContents) {
                        docsStack.push(doc2.flatContents);
                      }
                      if (doc2.breakContents) {
                        docsStack.push(doc2.breakContents);
                      }
                    } else if (doc2.type === "group" && doc2.expandedStates) {
                      if (shouldTraverseConditionalGroups) {
                        for (let ic = doc2.expandedStates.length, i2 = ic - 1; i2 >= 0; --i2) {
                          docsStack.push(doc2.expandedStates[i2]);
                        }
                      } else {
                        docsStack.push(doc2.contents);
                      }
                    } else if (doc2.contents) {
                      docsStack.push(doc2.contents);
                    }
                  }
                }
              }
              function mapDoc(doc, cb) {
                const mapped = /* @__PURE__ */ new Map();
                return rec(doc);
                function rec(doc2) {
                  if (mapped.has(doc2)) {
                    return mapped.get(doc2);
                  }
                  const result = process22(doc2);
                  mapped.set(doc2, result);
                  return result;
                }
                function process22(doc2) {
                  if (Array.isArray(doc2)) {
                    return cb(doc2.map(rec));
                  }
                  if (doc2.type === "concat" || doc2.type === "fill") {
                    const parts = doc2.parts.map(rec);
                    return cb(Object.assign(Object.assign({}, doc2), {}, {
                      parts
                    }));
                  }
                  if (doc2.type === "if-break") {
                    const breakContents = doc2.breakContents && rec(doc2.breakContents);
                    const flatContents = doc2.flatContents && rec(doc2.flatContents);
                    return cb(Object.assign(Object.assign({}, doc2), {}, {
                      breakContents,
                      flatContents
                    }));
                  }
                  if (doc2.type === "group" && doc2.expandedStates) {
                    const expandedStates = doc2.expandedStates.map(rec);
                    const contents = expandedStates[0];
                    return cb(Object.assign(Object.assign({}, doc2), {}, {
                      contents,
                      expandedStates
                    }));
                  }
                  if (doc2.contents) {
                    const contents = rec(doc2.contents);
                    return cb(Object.assign(Object.assign({}, doc2), {}, {
                      contents
                    }));
                  }
                  return cb(doc2);
                }
              }
              function findInDoc(doc, fn, defaultValue) {
                let result = defaultValue;
                let hasStopped = false;
                function findInDocOnEnterFn(doc2) {
                  const maybeResult = fn(doc2);
                  if (maybeResult !== void 0) {
                    hasStopped = true;
                    result = maybeResult;
                  }
                  if (hasStopped) {
                    return false;
                  }
                }
                traverseDoc(doc, findInDocOnEnterFn);
                return result;
              }
              function willBreakFn(doc) {
                if (doc.type === "group" && doc.break) {
                  return true;
                }
                if (doc.type === "line" && doc.hard) {
                  return true;
                }
                if (doc.type === "break-parent") {
                  return true;
                }
              }
              function willBreak(doc) {
                return findInDoc(doc, willBreakFn, false);
              }
              function breakParentGroup(groupStack) {
                if (groupStack.length > 0) {
                  const parentGroup = getLast(groupStack);
                  if (!parentGroup.expandedStates && !parentGroup.break) {
                    parentGroup.break = "propagated";
                  }
                }
                return null;
              }
              function propagateBreaks(doc) {
                const alreadyVisitedSet = /* @__PURE__ */ new Set();
                const groupStack = [];
                function propagateBreaksOnEnterFn(doc2) {
                  if (doc2.type === "break-parent") {
                    breakParentGroup(groupStack);
                  }
                  if (doc2.type === "group") {
                    groupStack.push(doc2);
                    if (alreadyVisitedSet.has(doc2)) {
                      return false;
                    }
                    alreadyVisitedSet.add(doc2);
                  }
                }
                function propagateBreaksOnExitFn(doc2) {
                  if (doc2.type === "group") {
                    const group22 = groupStack.pop();
                    if (group22.break) {
                      breakParentGroup(groupStack);
                    }
                  }
                }
                traverseDoc(doc, propagateBreaksOnEnterFn, propagateBreaksOnExitFn, true);
              }
              function removeLinesFn(doc) {
                if (doc.type === "line" && !doc.hard) {
                  return doc.soft ? "" : " ";
                }
                if (doc.type === "if-break") {
                  return doc.flatContents || "";
                }
                return doc;
              }
              function removeLines(doc) {
                return mapDoc(doc, removeLinesFn);
              }
              var isHardline = (doc, nextDoc) => doc && doc.type === "line" && doc.hard && nextDoc && nextDoc.type === "break-parent";
              function stripDocTrailingHardlineFromDoc(doc) {
                if (!doc) {
                  return doc;
                }
                if (isConcat(doc) || doc.type === "fill") {
                  const parts = getDocParts(doc);
                  while (parts.length > 1 && isHardline(...parts.slice(-2))) {
                    parts.length -= 2;
                  }
                  if (parts.length > 0) {
                    const lastPart = stripDocTrailingHardlineFromDoc(getLast(parts));
                    parts[parts.length - 1] = lastPart;
                  }
                  return Array.isArray(doc) ? parts : Object.assign(Object.assign({}, doc), {}, {
                    parts
                  });
                }
                switch (doc.type) {
                  case "align":
                  case "indent":
                  case "indent-if-break":
                  case "group":
                  case "line-suffix":
                  case "label": {
                    const contents = stripDocTrailingHardlineFromDoc(doc.contents);
                    return Object.assign(Object.assign({}, doc), {}, {
                      contents
                    });
                  }
                  case "if-break": {
                    const breakContents = stripDocTrailingHardlineFromDoc(doc.breakContents);
                    const flatContents = stripDocTrailingHardlineFromDoc(doc.flatContents);
                    return Object.assign(Object.assign({}, doc), {}, {
                      breakContents,
                      flatContents
                    });
                  }
                }
                return doc;
              }
              function stripTrailingHardline(doc) {
                return stripDocTrailingHardlineFromDoc(cleanDoc(doc));
              }
              function cleanDocFn(doc) {
                switch (doc.type) {
                  case "fill":
                    if (doc.parts.every((part) => part === "")) {
                      return "";
                    }
                    break;
                  case "group":
                    if (!doc.contents && !doc.id && !doc.break && !doc.expandedStates) {
                      return "";
                    }
                    if (doc.contents.type === "group" && doc.contents.id === doc.id && doc.contents.break === doc.break && doc.contents.expandedStates === doc.expandedStates) {
                      return doc.contents;
                    }
                    break;
                  case "align":
                  case "indent":
                  case "indent-if-break":
                  case "line-suffix":
                    if (!doc.contents) {
                      return "";
                    }
                    break;
                  case "if-break":
                    if (!doc.flatContents && !doc.breakContents) {
                      return "";
                    }
                    break;
                }
                if (!isConcat(doc)) {
                  return doc;
                }
                const parts = [];
                for (const part of getDocParts(doc)) {
                  if (!part) {
                    continue;
                  }
                  const [currentPart, ...restParts] = isConcat(part) ? getDocParts(part) : [part];
                  if (typeof currentPart === "string" && typeof getLast(parts) === "string") {
                    parts[parts.length - 1] += currentPart;
                  } else {
                    parts.push(currentPart);
                  }
                  parts.push(...restParts);
                }
                if (parts.length === 0) {
                  return "";
                }
                if (parts.length === 1) {
                  return parts[0];
                }
                return Array.isArray(doc) ? parts : Object.assign(Object.assign({}, doc), {}, {
                  parts
                });
              }
              function cleanDoc(doc) {
                return mapDoc(doc, (currentDoc) => cleanDocFn(currentDoc));
              }
              function normalizeParts(parts) {
                const newParts = [];
                const restParts = parts.filter(Boolean);
                while (restParts.length > 0) {
                  const part = restParts.shift();
                  if (!part) {
                    continue;
                  }
                  if (isConcat(part)) {
                    restParts.unshift(...getDocParts(part));
                    continue;
                  }
                  if (newParts.length > 0 && typeof getLast(newParts) === "string" && typeof part === "string") {
                    newParts[newParts.length - 1] += part;
                    continue;
                  }
                  newParts.push(part);
                }
                return newParts;
              }
              function normalizeDoc(doc) {
                return mapDoc(doc, (currentDoc) => {
                  if (Array.isArray(currentDoc)) {
                    return normalizeParts(currentDoc);
                  }
                  if (!currentDoc.parts) {
                    return currentDoc;
                  }
                  return Object.assign(Object.assign({}, currentDoc), {}, {
                    parts: normalizeParts(currentDoc.parts)
                  });
                });
              }
              function replaceEndOfLine(doc) {
                return mapDoc(doc, (currentDoc) => typeof currentDoc === "string" && currentDoc.includes("\n") ? replaceTextEndOfLine(currentDoc) : currentDoc);
              }
              function replaceTextEndOfLine(text7) {
                let replacement = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : literalline;
                return join22(replacement, text7.split("\n")).parts;
              }
              function canBreakFn(doc) {
                if (doc.type === "line") {
                  return true;
                }
              }
              function canBreak(doc) {
                return findInDoc(doc, canBreakFn, false);
              }
              module222.exports = {
                isConcat,
                getDocParts,
                willBreak,
                traverseDoc,
                findInDoc,
                mapDoc,
                propagateBreaks,
                removeLines,
                stripTrailingHardline,
                normalizeParts,
                normalizeDoc,
                cleanDoc,
                replaceTextEndOfLine,
                replaceEndOfLine,
                canBreak
              };
            }
          });
          var require_doc_printer = __commonJS222({
            "src/document/doc-printer.js"(exports222, module222) {
              "use strict";
              init_define_process();
              var {
                convertEndOfLineToChars
              } = require_end_of_line();
              var getLast = require_get_last();
              var getStringWidth = require_get_string_width();
              var {
                fill: fill3,
                cursor,
                indent: indent2
              } = require_doc_builders();
              var {
                isConcat,
                getDocParts
              } = require_doc_utils();
              var groupModeMap;
              var MODE_BREAK = 1;
              var MODE_FLAT = 2;
              function rootIndent() {
                return {
                  value: "",
                  length: 0,
                  queue: []
                };
              }
              function makeIndent(ind, options) {
                return generateInd(ind, {
                  type: "indent"
                }, options);
              }
              function makeAlign(indent22, widthOrDoc, options) {
                if (widthOrDoc === Number.NEGATIVE_INFINITY) {
                  return indent22.root || rootIndent();
                }
                if (widthOrDoc < 0) {
                  return generateInd(indent22, {
                    type: "dedent"
                  }, options);
                }
                if (!widthOrDoc) {
                  return indent22;
                }
                if (widthOrDoc.type === "root") {
                  return Object.assign(Object.assign({}, indent22), {}, {
                    root: indent22
                  });
                }
                const alignType = typeof widthOrDoc === "string" ? "stringAlign" : "numberAlign";
                return generateInd(indent22, {
                  type: alignType,
                  n: widthOrDoc
                }, options);
              }
              function generateInd(ind, newPart, options) {
                const queue = newPart.type === "dedent" ? ind.queue.slice(0, -1) : [...ind.queue, newPart];
                let value = "";
                let length = 0;
                let lastTabs = 0;
                let lastSpaces = 0;
                for (const part of queue) {
                  switch (part.type) {
                    case "indent":
                      flush();
                      if (options.useTabs) {
                        addTabs(1);
                      } else {
                        addSpaces(options.tabWidth);
                      }
                      break;
                    case "stringAlign":
                      flush();
                      value += part.n;
                      length += part.n.length;
                      break;
                    case "numberAlign":
                      lastTabs += 1;
                      lastSpaces += part.n;
                      break;
                    default:
                      throw new Error(`Unexpected type '${part.type}'`);
                  }
                }
                flushSpaces();
                return Object.assign(Object.assign({}, ind), {}, {
                  value,
                  length,
                  queue
                });
                function addTabs(count2) {
                  value += "	".repeat(count2);
                  length += options.tabWidth * count2;
                }
                function addSpaces(count2) {
                  value += " ".repeat(count2);
                  length += count2;
                }
                function flush() {
                  if (options.useTabs) {
                    flushTabs();
                  } else {
                    flushSpaces();
                  }
                }
                function flushTabs() {
                  if (lastTabs > 0) {
                    addTabs(lastTabs);
                  }
                  resetLast();
                }
                function flushSpaces() {
                  if (lastSpaces > 0) {
                    addSpaces(lastSpaces);
                  }
                  resetLast();
                }
                function resetLast() {
                  lastTabs = 0;
                  lastSpaces = 0;
                }
              }
              function trim4(out) {
                if (out.length === 0) {
                  return 0;
                }
                let trimCount = 0;
                while (out.length > 0 && typeof getLast(out) === "string" && /^[\t ]*$/.test(getLast(out))) {
                  trimCount += out.pop().length;
                }
                if (out.length > 0 && typeof getLast(out) === "string") {
                  const trimmed = getLast(out).replace(/[\t ]*$/, "");
                  trimCount += getLast(out).length - trimmed.length;
                  out[out.length - 1] = trimmed;
                }
                return trimCount;
              }
              function fits(next, restCommands, width, hasLineSuffix, mustBeFlat) {
                let restIdx = restCommands.length;
                const cmds = [next];
                const out = [];
                while (width >= 0) {
                  if (cmds.length === 0) {
                    if (restIdx === 0) {
                      return true;
                    }
                    cmds.push(restCommands[--restIdx]);
                    continue;
                  }
                  const {
                    mode,
                    doc
                  } = cmds.pop();
                  if (typeof doc === "string") {
                    out.push(doc);
                    width -= getStringWidth(doc);
                  } else if (isConcat(doc) || doc.type === "fill") {
                    const parts = getDocParts(doc);
                    for (let i2 = parts.length - 1; i2 >= 0; i2--) {
                      cmds.push({
                        mode,
                        doc: parts[i2]
                      });
                    }
                  } else {
                    switch (doc.type) {
                      case "indent":
                      case "align":
                      case "indent-if-break":
                      case "label":
                        cmds.push({
                          mode,
                          doc: doc.contents
                        });
                        break;
                      case "trim":
                        width += trim4(out);
                        break;
                      case "group": {
                        if (mustBeFlat && doc.break) {
                          return false;
                        }
                        const groupMode = doc.break ? MODE_BREAK : mode;
                        const contents = doc.expandedStates && groupMode === MODE_BREAK ? getLast(doc.expandedStates) : doc.contents;
                        cmds.push({
                          mode: groupMode,
                          doc: contents
                        });
                        break;
                      }
                      case "if-break": {
                        const groupMode = doc.groupId ? groupModeMap[doc.groupId] || MODE_FLAT : mode;
                        const contents = groupMode === MODE_BREAK ? doc.breakContents : doc.flatContents;
                        if (contents) {
                          cmds.push({
                            mode,
                            doc: contents
                          });
                        }
                        break;
                      }
                      case "line":
                        if (mode === MODE_BREAK || doc.hard) {
                          return true;
                        }
                        if (!doc.soft) {
                          out.push(" ");
                          width--;
                        }
                        break;
                      case "line-suffix":
                        hasLineSuffix = true;
                        break;
                      case "line-suffix-boundary":
                        if (hasLineSuffix) {
                          return false;
                        }
                        break;
                    }
                  }
                }
                return false;
              }
              function printDocToString(doc, options) {
                groupModeMap = {};
                const width = options.printWidth;
                const newLine = convertEndOfLineToChars(options.endOfLine);
                let pos = 0;
                const cmds = [{
                  ind: rootIndent(),
                  mode: MODE_BREAK,
                  doc
                }];
                const out = [];
                let shouldRemeasure = false;
                const lineSuffix2 = [];
                while (cmds.length > 0) {
                  const {
                    ind,
                    mode,
                    doc: doc2
                  } = cmds.pop();
                  if (typeof doc2 === "string") {
                    const formatted = newLine !== "\n" ? doc2.replace(/\n/g, newLine) : doc2;
                    out.push(formatted);
                    pos += getStringWidth(formatted);
                  } else if (isConcat(doc2)) {
                    const parts = getDocParts(doc2);
                    for (let i2 = parts.length - 1; i2 >= 0; i2--) {
                      cmds.push({
                        ind,
                        mode,
                        doc: parts[i2]
                      });
                    }
                  } else {
                    switch (doc2.type) {
                      case "cursor":
                        out.push(cursor.placeholder);
                        break;
                      case "indent":
                        cmds.push({
                          ind: makeIndent(ind, options),
                          mode,
                          doc: doc2.contents
                        });
                        break;
                      case "align":
                        cmds.push({
                          ind: makeAlign(ind, doc2.n, options),
                          mode,
                          doc: doc2.contents
                        });
                        break;
                      case "trim":
                        pos -= trim4(out);
                        break;
                      case "group":
                        switch (mode) {
                          case MODE_FLAT:
                            if (!shouldRemeasure) {
                              cmds.push({
                                ind,
                                mode: doc2.break ? MODE_BREAK : MODE_FLAT,
                                doc: doc2.contents
                              });
                              break;
                            }
                          case MODE_BREAK: {
                            shouldRemeasure = false;
                            const next = {
                              ind,
                              mode: MODE_FLAT,
                              doc: doc2.contents
                            };
                            const rem = width - pos;
                            const hasLineSuffix = lineSuffix2.length > 0;
                            if (!doc2.break && fits(next, cmds, rem, hasLineSuffix)) {
                              cmds.push(next);
                            } else {
                              if (doc2.expandedStates) {
                                const mostExpanded = getLast(doc2.expandedStates);
                                if (doc2.break) {
                                  cmds.push({
                                    ind,
                                    mode: MODE_BREAK,
                                    doc: mostExpanded
                                  });
                                  break;
                                } else {
                                  for (let i2 = 1; i2 < doc2.expandedStates.length + 1; i2++) {
                                    if (i2 >= doc2.expandedStates.length) {
                                      cmds.push({
                                        ind,
                                        mode: MODE_BREAK,
                                        doc: mostExpanded
                                      });
                                      break;
                                    } else {
                                      const state = doc2.expandedStates[i2];
                                      const cmd = {
                                        ind,
                                        mode: MODE_FLAT,
                                        doc: state
                                      };
                                      if (fits(cmd, cmds, rem, hasLineSuffix)) {
                                        cmds.push(cmd);
                                        break;
                                      }
                                    }
                                  }
                                }
                              } else {
                                cmds.push({
                                  ind,
                                  mode: MODE_BREAK,
                                  doc: doc2.contents
                                });
                              }
                            }
                            break;
                          }
                        }
                        if (doc2.id) {
                          groupModeMap[doc2.id] = getLast(cmds).mode;
                        }
                        break;
                      case "fill": {
                        const rem = width - pos;
                        const {
                          parts
                        } = doc2;
                        if (parts.length === 0) {
                          break;
                        }
                        const [content3, whitespace4] = parts;
                        const contentFlatCmd = {
                          ind,
                          mode: MODE_FLAT,
                          doc: content3
                        };
                        const contentBreakCmd = {
                          ind,
                          mode: MODE_BREAK,
                          doc: content3
                        };
                        const contentFits = fits(contentFlatCmd, [], rem, lineSuffix2.length > 0, true);
                        if (parts.length === 1) {
                          if (contentFits) {
                            cmds.push(contentFlatCmd);
                          } else {
                            cmds.push(contentBreakCmd);
                          }
                          break;
                        }
                        const whitespaceFlatCmd = {
                          ind,
                          mode: MODE_FLAT,
                          doc: whitespace4
                        };
                        const whitespaceBreakCmd = {
                          ind,
                          mode: MODE_BREAK,
                          doc: whitespace4
                        };
                        if (parts.length === 2) {
                          if (contentFits) {
                            cmds.push(whitespaceFlatCmd, contentFlatCmd);
                          } else {
                            cmds.push(whitespaceBreakCmd, contentBreakCmd);
                          }
                          break;
                        }
                        parts.splice(0, 2);
                        const remainingCmd = {
                          ind,
                          mode,
                          doc: fill3(parts)
                        };
                        const secondContent = parts[0];
                        const firstAndSecondContentFlatCmd = {
                          ind,
                          mode: MODE_FLAT,
                          doc: [content3, whitespace4, secondContent]
                        };
                        const firstAndSecondContentFits = fits(firstAndSecondContentFlatCmd, [], rem, lineSuffix2.length > 0, true);
                        if (firstAndSecondContentFits) {
                          cmds.push(remainingCmd, whitespaceFlatCmd, contentFlatCmd);
                        } else if (contentFits) {
                          cmds.push(remainingCmd, whitespaceBreakCmd, contentFlatCmd);
                        } else {
                          cmds.push(remainingCmd, whitespaceBreakCmd, contentBreakCmd);
                        }
                        break;
                      }
                      case "if-break":
                      case "indent-if-break": {
                        const groupMode = doc2.groupId ? groupModeMap[doc2.groupId] : mode;
                        if (groupMode === MODE_BREAK) {
                          const breakContents = doc2.type === "if-break" ? doc2.breakContents : doc2.negate ? doc2.contents : indent2(doc2.contents);
                          if (breakContents) {
                            cmds.push({
                              ind,
                              mode,
                              doc: breakContents
                            });
                          }
                        }
                        if (groupMode === MODE_FLAT) {
                          const flatContents = doc2.type === "if-break" ? doc2.flatContents : doc2.negate ? indent2(doc2.contents) : doc2.contents;
                          if (flatContents) {
                            cmds.push({
                              ind,
                              mode,
                              doc: flatContents
                            });
                          }
                        }
                        break;
                      }
                      case "line-suffix":
                        lineSuffix2.push({
                          ind,
                          mode,
                          doc: doc2.contents
                        });
                        break;
                      case "line-suffix-boundary":
                        if (lineSuffix2.length > 0) {
                          cmds.push({
                            ind,
                            mode,
                            doc: {
                              type: "line",
                              hard: true
                            }
                          });
                        }
                        break;
                      case "line":
                        switch (mode) {
                          case MODE_FLAT:
                            if (!doc2.hard) {
                              if (!doc2.soft) {
                                out.push(" ");
                                pos += 1;
                              }
                              break;
                            } else {
                              shouldRemeasure = true;
                            }
                          case MODE_BREAK:
                            if (lineSuffix2.length > 0) {
                              cmds.push({
                                ind,
                                mode,
                                doc: doc2
                              }, ...lineSuffix2.reverse());
                              lineSuffix2.length = 0;
                              break;
                            }
                            if (doc2.literal) {
                              if (ind.root) {
                                out.push(newLine, ind.root.value);
                                pos = ind.root.length;
                              } else {
                                out.push(newLine);
                                pos = 0;
                              }
                            } else {
                              pos -= trim4(out);
                              out.push(newLine + ind.value);
                              pos = ind.length;
                            }
                            break;
                        }
                        break;
                      case "label":
                        cmds.push({
                          ind,
                          mode,
                          doc: doc2.contents
                        });
                        break;
                      default:
                    }
                  }
                  if (cmds.length === 0 && lineSuffix2.length > 0) {
                    cmds.push(...lineSuffix2.reverse());
                    lineSuffix2.length = 0;
                  }
                }
                const cursorPlaceholderIndex = out.indexOf(cursor.placeholder);
                if (cursorPlaceholderIndex !== -1) {
                  const otherCursorPlaceholderIndex = out.indexOf(cursor.placeholder, cursorPlaceholderIndex + 1);
                  const beforeCursor = out.slice(0, cursorPlaceholderIndex).join("");
                  const aroundCursor = out.slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex).join("");
                  const afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join("");
                  return {
                    formatted: beforeCursor + aroundCursor + afterCursor,
                    cursorNodeStart: beforeCursor.length,
                    cursorNodeText: aroundCursor
                  };
                }
                return {
                  formatted: out.join("")
                };
              }
              module222.exports = {
                printDocToString
              };
            }
          });
          var require_doc_debug = __commonJS222({
            "src/document/doc-debug.js"(exports222, module222) {
              "use strict";
              init_define_process();
              var {
                isConcat,
                getDocParts
              } = require_doc_utils();
              function flattenDoc(doc) {
                if (!doc) {
                  return "";
                }
                if (isConcat(doc)) {
                  const res = [];
                  for (const part of getDocParts(doc)) {
                    if (isConcat(part)) {
                      res.push(...flattenDoc(part).parts);
                    } else {
                      const flattened = flattenDoc(part);
                      if (flattened !== "") {
                        res.push(flattened);
                      }
                    }
                  }
                  return {
                    type: "concat",
                    parts: res
                  };
                }
                if (doc.type === "if-break") {
                  return Object.assign(Object.assign({}, doc), {}, {
                    breakContents: flattenDoc(doc.breakContents),
                    flatContents: flattenDoc(doc.flatContents)
                  });
                }
                if (doc.type === "group") {
                  return Object.assign(Object.assign({}, doc), {}, {
                    contents: flattenDoc(doc.contents),
                    expandedStates: doc.expandedStates && doc.expandedStates.map(flattenDoc)
                  });
                }
                if (doc.type === "fill") {
                  return {
                    type: "fill",
                    parts: doc.parts.map(flattenDoc)
                  };
                }
                if (doc.contents) {
                  return Object.assign(Object.assign({}, doc), {}, {
                    contents: flattenDoc(doc.contents)
                  });
                }
                return doc;
              }
              function printDocToDebug(doc) {
                const printedSymbols = /* @__PURE__ */ Object.create(null);
                const usedKeysForSymbols = /* @__PURE__ */ new Set();
                return printDoc(flattenDoc(doc));
                function printDoc(doc2, index4, parentParts) {
                  if (typeof doc2 === "string") {
                    return JSON.stringify(doc2);
                  }
                  if (isConcat(doc2)) {
                    const printed = getDocParts(doc2).map(printDoc).filter(Boolean);
                    return printed.length === 1 ? printed[0] : `[${printed.join(", ")}]`;
                  }
                  if (doc2.type === "line") {
                    const withBreakParent = Array.isArray(parentParts) && parentParts[index4 + 1] && parentParts[index4 + 1].type === "break-parent";
                    if (doc2.literal) {
                      return withBreakParent ? "literalline" : "literallineWithoutBreakParent";
                    }
                    if (doc2.hard) {
                      return withBreakParent ? "hardline" : "hardlineWithoutBreakParent";
                    }
                    if (doc2.soft) {
                      return "softline";
                    }
                    return "line";
                  }
                  if (doc2.type === "break-parent") {
                    const afterHardline = Array.isArray(parentParts) && parentParts[index4 - 1] && parentParts[index4 - 1].type === "line" && parentParts[index4 - 1].hard;
                    return afterHardline ? void 0 : "breakParent";
                  }
                  if (doc2.type === "trim") {
                    return "trim";
                  }
                  if (doc2.type === "indent") {
                    return "indent(" + printDoc(doc2.contents) + ")";
                  }
                  if (doc2.type === "align") {
                    return doc2.n === Number.NEGATIVE_INFINITY ? "dedentToRoot(" + printDoc(doc2.contents) + ")" : doc2.n < 0 ? "dedent(" + printDoc(doc2.contents) + ")" : doc2.n.type === "root" ? "markAsRoot(" + printDoc(doc2.contents) + ")" : "align(" + JSON.stringify(doc2.n) + ", " + printDoc(doc2.contents) + ")";
                  }
                  if (doc2.type === "if-break") {
                    return "ifBreak(" + printDoc(doc2.breakContents) + (doc2.flatContents ? ", " + printDoc(doc2.flatContents) : "") + (doc2.groupId ? (!doc2.flatContents ? ', ""' : "") + `, { groupId: ${printGroupId(doc2.groupId)} }` : "") + ")";
                  }
                  if (doc2.type === "indent-if-break") {
                    const optionsParts = [];
                    if (doc2.negate) {
                      optionsParts.push("negate: true");
                    }
                    if (doc2.groupId) {
                      optionsParts.push(`groupId: ${printGroupId(doc2.groupId)}`);
                    }
                    const options = optionsParts.length > 0 ? `, { ${optionsParts.join(", ")} }` : "";
                    return `indentIfBreak(${printDoc(doc2.contents)}${options})`;
                  }
                  if (doc2.type === "group") {
                    const optionsParts = [];
                    if (doc2.break && doc2.break !== "propagated") {
                      optionsParts.push("shouldBreak: true");
                    }
                    if (doc2.id) {
                      optionsParts.push(`id: ${printGroupId(doc2.id)}`);
                    }
                    const options = optionsParts.length > 0 ? `, { ${optionsParts.join(", ")} }` : "";
                    if (doc2.expandedStates) {
                      return `conditionalGroup([${doc2.expandedStates.map((part) => printDoc(part)).join(",")}]${options})`;
                    }
                    return `group(${printDoc(doc2.contents)}${options})`;
                  }
                  if (doc2.type === "fill") {
                    return `fill([${doc2.parts.map((part) => printDoc(part)).join(", ")}])`;
                  }
                  if (doc2.type === "line-suffix") {
                    return "lineSuffix(" + printDoc(doc2.contents) + ")";
                  }
                  if (doc2.type === "line-suffix-boundary") {
                    return "lineSuffixBoundary";
                  }
                  if (doc2.type === "label") {
                    return `label(${JSON.stringify(doc2.label)}, ${printDoc(doc2.contents)})`;
                  }
                  throw new Error("Unknown doc type " + doc2.type);
                }
                function printGroupId(id) {
                  if (typeof id !== "symbol") {
                    return JSON.stringify(String(id));
                  }
                  if (id in printedSymbols) {
                    return printedSymbols[id];
                  }
                  const prefix2 = String(id).slice(7, -1) || "symbol";
                  for (let counter = 0; ; counter++) {
                    const key2 = prefix2 + (counter > 0 ? ` #${counter}` : "");
                    if (!usedKeysForSymbols.has(key2)) {
                      usedKeysForSymbols.add(key2);
                      return printedSymbols[id] = `Symbol.for(${JSON.stringify(key2)})`;
                    }
                  }
                }
              }
              module222.exports = {
                printDocToDebug
              };
            }
          });
          init_define_process();
          module22.exports = {
            builders: require_doc_builders(),
            printer: require_doc_printer(),
            utils: require_doc_utils(),
            debug: require_doc_debug()
          };
        }
      });
      return require_doc_js_umd();
    });
  }
});
var import_doc = __toESM2(require_doc(), 1);
function formatEnvSurround(node3) {
  const env6 = printRaw(node3.env);
  return {
    envName: env6,
    start: ESCAPE2 + "begin{" + env6 + "}",
    end: ESCAPE2 + "end{" + env6 + "}"
  };
}
function isLineType(elm) {
  if (elm == null || typeof elm === "string") {
    return false;
  }
  if (Array.isArray(elm)) {
    return isLineType(elm[0]);
  }
  if (elm.type === "concat") {
    return isLineType(elm.parts);
  }
  return elm.type === "line";
}
function joinWithSoftline(arr) {
  if (arr.length === 0 || arr.length === 1) {
    return arr;
  }
  const ret = [arr[0]];
  for (let i2 = 1; i2 < arr.length; i2++) {
    const prevNode = arr[i2 - 1];
    const nextNode = arr[i2];
    if (!isLineType(prevNode) && !isLineType(nextNode)) {
      ret.push(softline);
    }
    ret.push(nextNode);
  }
  return ret;
}
function getNodeInfo(node3, options) {
  if (!node3) {
    return { renderInfo: {} };
  }
  const renderInfo = node3._renderInfo || {};
  const previousNode = options.referenceMap && options.referenceMap.getPreviousNode(node3);
  const nextNode = options.referenceMap && options.referenceMap.getNextNode(node3);
  const renderCache = options.referenceMap && options.referenceMap.getRenderCache(node3);
  return {
    renderInfo,
    renderCache,
    previousNode,
    nextNode,
    referenceMap: options.referenceMap
  };
}
var ESCAPE2 = "\\";
var {
  group: group2,
  fill,
  ifBreak,
  line,
  softline,
  hardline,
  lineSuffix,
  lineSuffixBoundary,
  breakParent,
  indent,
  markAsRoot,
  join: join2
} = import_doc.builders;
function formatDocArray(nodes, docArray, options) {
  const ret = [];
  for (let i2 = 0; i2 < nodes.length; i2++) {
    const rawNode = nodes[i2];
    const printedNode = docArray[i2];
    const { renderInfo, referenceMap, previousNode, nextNode } = getNodeInfo(rawNode, options);
    const renderCache = referenceMap && referenceMap.getRenderCache(rawNode);
    switch (rawNode.type) {
      case "comment":
        if (!rawNode.sameline && previousNode && !match.comment(previousNode) && !match.parbreak(previousNode)) {
          ret.push(hardline);
        }
        ret.push(printedNode);
        if (nextNode && !rawNode.suffixParbreak) {
          ret.push(hardline);
        }
        break;
      case "environment":
      case "displaymath":
      case "mathenv":
        if (previousNode && (previousNode == null ? void 0 : previousNode.type) !== "parbreak") {
          if (ret[ret.length - 1] === line) {
            ret.pop();
          }
          if (ret[ret.length - 1] !== hardline) {
            ret.push(hardline);
          }
        }
        ret.push(printedNode);
        if ((nextNode == null ? void 0 : nextNode.type) === "whitespace") {
          ret.push(hardline);
          i2++;
        }
        break;
      case "macro":
        if (renderInfo.breakBefore || renderInfo.breakAround) {
          if (previousNode) {
            if (ret[ret.length - 1] === line || ret[ret.length - 1] === hardline) {
              ret.pop();
              ret.push(hardline);
            } else if (!match.comment(previousNode) && !match.parbreak(previousNode)) {
              ret.push(hardline);
            }
          }
        }
        if (renderInfo.inParMode && !renderInfo.hangingIndent && renderCache) {
          ret.push(
            renderCache.content,
            ...renderCache.rawArgs || []
          );
        } else {
          ret.push(printedNode);
        }
        if (renderInfo.breakAfter || renderInfo.breakAround) {
          if (nextNode) {
            if (match.whitespace(nextNode)) {
              ret.push(hardline);
              i2++;
            } else if (match.parbreak(nextNode)) {
            } else if (!match.comment(nextNode)) {
              ret.push(hardline);
            }
          }
        }
        break;
      case "parbreak":
        ret.push(hardline, hardline);
        break;
      default:
        ret.push(printedNode);
        break;
    }
  }
  return ret;
}
function zip(array1, array2) {
  const ret = [];
  const len = Math.min(array1.length, array2.length);
  for (let i2 = 0; i2 < len; i2++) {
    ret.push([array1[i2], array2[i2]]);
  }
  return ret;
}
function printMacro(path45, print, options) {
  const node3 = path45.getNode();
  const { renderInfo, previousNode, nextNode, referenceMap } = getNodeInfo(
    node3,
    options
  );
  const content3 = (node3.escapeToken != null ? node3.escapeToken : ESCAPE2) + node3.content;
  const args = node3.args ? path45.map(print, "args") : [];
  const rawArgs = [];
  for (const [arg2, printedArg] of zip(node3.args || [], args)) {
    const renderCache = referenceMap && referenceMap.getRenderCache(arg2);
    if (renderInfo.inParMode && renderCache) {
      rawArgs.push(...renderCache);
    } else {
      rawArgs.push(printedArg);
    }
  }
  if (referenceMap) {
    referenceMap.setRenderCache(node3, { rawArgs, content: content3 });
  }
  if (renderInfo.hangingIndent) {
    return indent(fill([content3, ...rawArgs]));
  }
  return group2([content3, ...rawArgs]);
}
function printArgumentPgfkeys(nodes, options) {
  const { allowParenGroups = false } = options;
  const parsed = parsePgfkeys(nodes, { allowParenGroups });
  const content3 = [];
  for (const part of parsed) {
    const isLastItem = part === parsed[parsed.length - 1];
    if (part.itemParts) {
      const parts = part.itemParts.map(
        (node3) => printRaw(node3, { asArray: true }).map(
          (token) => token === linebreak ? hardline : token
        )
      );
      const row2 = join2("=", parts);
      content3.push(row2);
      if (part.trailingComma) {
        content3.push(",");
      }
    }
    if (part.trailingComment) {
      const leadingContent = part.itemParts ? [" "] : [];
      if (part.leadingParbreak) {
        leadingContent.push(hardline);
      }
      content3.push(
        ...leadingContent,
        // We're carefully and manually controlling the newlines,
        // so print the comment directly without any newlines
        "%",
        part.trailingComment.content,
        breakParent
      );
    }
    if (!isLastItem) {
      content3.push(line);
    }
  }
  let leadingComment = [""];
  if (options.leadingComment) {
    if (options.leadingComment.leadingWhitespace) {
      leadingComment.push(" ");
    }
    leadingComment.push("%" + options.leadingComment.content, breakParent);
  }
  return group2([
    options.openMark,
    ...leadingComment,
    // If there is no content, we don't want to push an extra `softline`.
    // This matters because the braces group could still be broken by `leadingComment`
    content3.length > 0 ? indent([softline, ...content3]) : "",
    softline,
    options.closeMark
  ]);
}
function printTikzArgument(path45, print, options) {
  const node3 = path45.getNode();
  const { renderInfo, previousNode, nextNode, referenceMap } = getNodeInfo(
    node3,
    options
  );
  const content3 = [];
  const nodes = [...node3.content];
  trim(nodes);
  try {
    const tikzAst = parse7(nodes);
    if (tikzAst.content.length === 0) {
      content3.push(";");
      return content3;
    }
    const printer = new TikzArgumentPrinter(tikzAst, path45, print);
    return printer.toDoc();
  } catch (e2) {
    console.warn("Encountered error when trying to parse tikz argument", e2);
  }
  content3.push(";");
  return content3;
}
function printFragment(fragment, path45, print) {
  const tmpKey = Symbol();
  const currNode = path45.getNode();
  if (!currNode) {
    throw new Error(
      "tried to print a fragment, but the current node is `null`"
    );
  }
  currNode[tmpKey] = fragment;
  const ret = print(tmpKey);
  delete currNode[tmpKey];
  return ret;
}
function printTikzPathSpecNode(node3, path45, print) {
  switch (node3.type) {
    case "comment":
      return printFragment(node3, path45, print);
    case "unknown":
      return printFragment(node3.content, path45, print);
    case "coordinate":
      return [printRaw(node3.prefix), "(", printRaw(node3.content), ")"];
    case "line_to":
      return node3.command;
    case "square_brace_group":
      return printOptionalArgs(node3.content);
    case "operation":
      return node3.content.content;
    case "svg_operation": {
      const comments = node3.comments.map(
        (n) => printTikzPathSpecNode(n, path45, print)
      );
      const options = node3.options ? printOptionalArgs(node3.options) : [];
      const rest = node3.options ? [group2(indent([line, printRaw(node3.content)]))] : [" ", printRaw(node3.content)];
      return [...comments, "svg", options, ...rest];
    }
    case "curve_to": {
      const comments = node3.comments.map(
        (n) => printTikzPathSpecNode(n, path45, print)
      );
      const printedControls = node3.controls.length > 1 ? [
        printTikzPathSpecNode(node3.controls[0], path45, print),
        " ",
        "and",
        line,
        printTikzPathSpecNode(node3.controls[1], path45, print)
      ] : [printTikzPathSpecNode(node3.controls[0], path45, print)];
      return [
        ...comments,
        "..",
        " ",
        group2(
          indent(["controls", line, ...printedControls, " ", ".."])
        )
      ];
    }
    case "animation": {
      const comments = node3.comments.map(
        (n) => printTikzPathSpecNode(n, path45, print)
      );
      return [
        ...comments,
        ":",
        node3.attribute,
        " ",
        "=",
        " ",
        group2(
          indent([
            printArgumentPgfkeys(node3.content, {
              openMark: "{",
              closeMark: "}"
            })
          ])
        )
      ];
    }
    case "foreach": {
      const comments = node3.comments.map(
        (n) => printTikzPathSpecNode(n, path45, print)
      );
      const variables = [...node3.variables];
      trim(variables);
      const list6 = node3.list.type === "macro" ? printFragment(node3.list, path45, print) : printArgumentPgfkeys(node3.list.content, {
        openMark: "{",
        closeMark: "}",
        allowParenGroups: true
      });
      const doc = [
        ...comments,
        printRaw(node3.start),
        " ",
        printRaw(variables)
      ];
      if (node3.options) {
        doc.push(" ", indent(printOptionalArgs(node3.options)));
      }
      doc.push(" ", "in", " ", group2(indent(list6)));
      const commandType = node3.command.type;
      switch (commandType) {
        case "foreach":
          doc.push(
            indent([
              line,
              printTikzPathSpecNode(node3.command, path45, print)
            ])
          );
          break;
        case "macro":
          doc.push(
            indent([line, printFragment(node3.command, path45, print)])
          );
          break;
        case "group": {
          const groupContent = [...node3.command.content];
          trim(groupContent);
          doc.push(
            " ",
            indent(
              group2([
                "{",
                indent([
                  softline,
                  ...groupContent.map(
                    (n) => printFragment(n, path45, print)
                  )
                ]),
                softline,
                "}"
              ])
            )
          );
          break;
        }
        default:
          const invalidType = commandType;
          console.warn(
            `Unhandled command type when printing "foreach": ${invalidType}`
          );
      }
      return indent(doc);
    }
  }
  console.warn(
    `Encountered unknown type when trying to print tikz PathSpec: "${node3.type}"`
  );
  return [];
}
function printOptionalArgs(nodes) {
  return printArgumentPgfkeys(nodes, {
    openMark: "[",
    closeMark: "]"
  });
}
var _path;
var _print;
var TikzArgumentPrinter = class {
  constructor(spec, path45, print) {
    __privateAdd2(this, _path, void 0);
    __privateAdd2(this, _print, void 0);
    __privateSet2(this, _path, path45);
    __privateSet2(this, _print, print);
    this.nodes = [...spec.content];
  }
  nodeToDoc(node3) {
    return printTikzPathSpecNode(node3, __privateGet2(this, _path), __privateGet2(this, _print));
  }
  toDoc() {
    const doc = [];
    const startArg = this.eatOptionalArg();
    if (startArg.optionalArg) {
      doc.push(
        ...startArg.comments.map(
          (c) => printFragment(c, __privateGet2(this, _path), __privateGet2(this, _print))
        )
      );
      doc.push(printOptionalArgs(startArg.optionalArg.content));
    }
    const innerDoc = [];
    doc.push(group2([indent(innerDoc), ";"]));
    let cycle = -1;
    while (this.nodes.length > 0) {
      cycle++;
      const firstSep = cycle === 0 && !startArg.optionalArg ? " " : line;
      const comingUp = this.peek();
      switch (comingUp) {
        case "short_path": {
          const [n0, n1, n2] = this.nodes.splice(0, 3);
          innerDoc.push(
            firstSep,
            this.nodeToDoc(n0),
            " ",
            this.nodeToDoc(n1),
            " ",
            this.nodeToDoc(n2)
          );
          continue;
        }
        case "long_path": {
          const [n0, n1] = this.nodes.splice(0, 2);
          if (n1.type === "operation") {
            this.nodes.unshift(n1);
            innerDoc.push(
              firstSep,
              this.nodeToDoc(n0),
              " ",
              this.eatOperation()
            );
          } else {
            innerDoc.push(
              firstSep,
              this.nodeToDoc(n0),
              " ",
              this.nodeToDoc(n1)
            );
          }
          continue;
        }
        case "node":
          {
            const eatenNode = this.eatNode();
            if (eatenNode) {
              innerDoc.push(line, ...eatenNode);
              continue;
            }
            console.warn(
              "Expected to print a tikz `node` PathSpec but couldn't find the text `node`"
            );
          }
          continue;
        case "operation":
          innerDoc.push(firstSep, this.eatOperation());
          continue;
        case "unknown": {
          const node3 = this.nodes.shift();
          innerDoc.push(firstSep, this.nodeToDoc(node3));
          continue;
        }
      }
      this.nodes.shift();
    }
    return doc;
  }
  /**
   * Look at the current node and the nodes that follow. Return what
   * "type" is recognized.
   */
  peek() {
    const [n0, n1, n2, n3] = [
      this.nodes[0],
      this.nodes[1],
      this.nodes[2],
      this.nodes[3]
    ];
    if ((n0 == null ? void 0 : n0.type) === "coordinate" && isPathJoinOperation(n1)) {
      if ((n2 == null ? void 0 : n2.type) === "coordinate" && !((n3 == null ? void 0 : n3.type) === "coordinate" || isPathJoinOperation(n3))) {
        return "short_path";
      }
      return "long_path";
    }
    if ((n0 == null ? void 0 : n0.type) === "operation") {
      if (n0.content.content === "node") {
        return "node";
      }
      return "operation";
    }
    return "unknown";
  }
  /**
   * Eat comments and an optional arg if present. If no optional
   * arg is present, do nothing.
   */
  eatOptionalArg() {
    let i2 = 0;
    const comments = [];
    let optionalArg = null;
    for (; i2 < this.nodes.length; i2++) {
      const node3 = this.nodes[i2];
      if (node3.type === "square_brace_group") {
        optionalArg = node3;
        i2++;
        break;
      }
      if (node3.type === "comment") {
        comments.push(node3);
        continue;
      }
      break;
    }
    if (optionalArg) {
      this.nodes.splice(0, i2);
    }
    return { optionalArg, comments };
  }
  /**
   * Eat a `type === "operation"` node whose contents is `"node"`. I.e.,
   * the type of thing that shows up in `\path node at (1,1) {foo};`
   */
  eatNode() {
    const firstNode = this.nodes[0];
    if ((firstNode == null ? void 0 : firstNode.type) === "operation" && firstNode.content.content === "node") {
      this.nodes.shift();
    } else {
      return null;
    }
    const innerDoc = [];
    const commentBlock = [];
    const doc = [commentBlock, "node", group2(indent(innerDoc))];
    let hasNodeArgument = false;
    let shouldBail = false;
    let i2 = 0;
    const comments = [];
    const options = [];
    const name3 = [];
    const atLocations = [];
    const animations = [];
    let content3 = [];
    for (; i2 < this.nodes.length && !shouldBail; i2++) {
      const node3 = this.nodes[i2];
      switch (node3.type) {
        case "animation":
          animations.push(this.nodeToDoc(node3));
          continue;
        case "comment": {
          const comment7 = {
            ...node3,
            leadingWhitespace: false
          };
          comments.push(this.nodeToDoc(comment7));
          continue;
        }
        case "square_brace_group":
          options.push(printOptionalArgs(node3.content));
          continue;
        case "coordinate":
          name3.push(this.nodeToDoc(node3));
          continue;
        case "operation": {
          if (node3.content.content === "at") {
            const nextNode = this.nodes[i2 + 1];
            if (!nextNode || !(nextNode.type === "coordinate" || nextNode.type === "unknown" && match.anyMacro(nextNode.content))) {
              shouldBail = true;
              continue;
            }
            atLocations.push(["at", " ", this.nodeToDoc(nextNode)]);
            i2++;
            continue;
          }
          shouldBail = true;
          continue;
        }
        case "unknown": {
          if (match.group(node3.content)) {
            hasNodeArgument = true;
            content3 = this.nodeToDoc(node3);
          }
        }
      }
      break;
    }
    if (!hasNodeArgument) {
      return innerDoc;
    }
    this.nodes.splice(0, i2 + 1);
    let isFirstElement = true;
    let isNamed = !(Array.isArray(name3) && name3.length === 0);
    for (const comment7 of comments) {
      commentBlock.push(comment7, hardline);
    }
    if (options.length > 0) {
      innerDoc.push(join2(" ", options));
      isFirstElement = false;
    }
    if (animations.length > 0) {
      innerDoc.push(isFirstElement ? " " : line);
      innerDoc.push(join2(line, animations));
      isFirstElement = false;
    }
    if (isNamed) {
      innerDoc.push(isFirstElement ? " " : line);
      innerDoc.push(name3);
      isFirstElement = false;
    }
    if (atLocations.length > 0) {
      innerDoc.push(isFirstElement || isNamed ? " " : line);
      innerDoc.push(join2(line, atLocations));
      isFirstElement = false;
    }
    innerDoc.push(line, content3);
    return doc;
  }
  /**
   * Eat a `type === "operation"` node, including its optional arguments.
   */
  eatOperation() {
    const node3 = this.nodes[0];
    if ((node3 == null ? void 0 : node3.type) === "operation") {
      this.nodes.shift();
    } else {
      return [];
    }
    const doc = [];
    if ((node3 == null ? void 0 : node3.type) !== "operation") {
      throw new Error("Expecting `operation` node.");
    }
    const options = this.eatOptionalArg();
    doc.push(
      ...options.comments.map(
        (c) => printFragment(c, __privateGet2(this, _path), __privateGet2(this, _print))
      ),
      node3.content.content
    );
    if (options.optionalArg) {
      doc.push(indent(printOptionalArgs(options.optionalArg.content)));
    }
    return doc;
  }
};
_path = /* @__PURE__ */ new WeakMap();
_print = /* @__PURE__ */ new WeakMap();
var PATH_JOIN_OPERATIONS = /* @__PURE__ */ new Set(["rectangle", "grid", "sin", "cos", "to"]);
function isPathJoinOperation(node3) {
  if (!node3) {
    return false;
  }
  switch (node3.type) {
    case "line_to":
    case "curve_to":
      return true;
    case "operation":
      return PATH_JOIN_OPERATIONS.has(node3.content.content);
  }
  return false;
}
function printArgument(path45, print, options) {
  const node3 = path45.getNode();
  const { renderInfo, previousNode, nextNode, referenceMap } = getNodeInfo(
    node3,
    options
  );
  if (node3.openMark === "" && node3.closeMark === "" && node3.content.length === 0) {
    return [];
  }
  const parentNode = path45.getParentNode();
  const { renderInfo: parentRenderInfo } = getNodeInfo(parentNode, options);
  if (parentRenderInfo.pgfkeysArgs) {
    const leadingComment = node3.content.length > 0 && match.comment(node3.content[0]) && node3.content[0].sameline ? node3.content[0] : null;
    const content22 = leadingComment ? node3.content.slice(1) : node3.content;
    trim(content22);
    return printArgumentPgfkeys(content22, {
      openMark: node3.openMark,
      closeMark: node3.closeMark,
      leadingComment
    });
  }
  if (parentRenderInfo.tikzPathCommand) {
    return printTikzArgument(path45, print, options);
  }
  const openMark = node3.openMark;
  const closeMark = node3.closeMark;
  let content3 = path45.map(print, "content");
  content3 = formatDocArray(node3.content, content3, options);
  if (match.comment(node3.content[node3.content.length - 1])) {
    content3.push(hardline);
  }
  let rawRet = [openMark, fill(content3), closeMark];
  if (renderInfo.inParMode) {
    rawRet = [openMark, ...content3, closeMark];
  }
  if (referenceMap) {
    referenceMap.setRenderCache(node3, rawRet);
  }
  return rawRet;
}
function hasPreambleCode(nodes) {
  return nodes.some((node3) => match.macro(node3, "documentclass"));
}
function printRoot(path45, print, options) {
  const node3 = path45.getNode();
  const { renderInfo, previousNode, nextNode, referenceMap } = getNodeInfo(
    node3,
    options
  );
  const content3 = path45.map(print, "content");
  const rawContent = formatDocArray(node3.content, content3, options);
  const concatFunction = hasPreambleCode(node3.content) ? (x2) => x2 : fill;
  return concatFunction(rawContent);
}
function printComment(path45, _print2, _options2) {
  const node3 = path45.getNode();
  let leadingWhitespace = "";
  if (node3.leadingWhitespace && node3.sameline) {
    leadingWhitespace = " ";
  }
  const content3 = [leadingWhitespace, "%" + printRaw(node3.content)];
  return content3;
}
function printInlineMath(path45, print, options) {
  const node3 = path45.getNode();
  if (node3.content.length === 0) {
    return ["$", " ", "$"];
  }
  let content3 = path45.map(print, "content");
  content3 = formatDocArray(node3.content, content3, options);
  content3 = joinWithSoftline(content3);
  if (node3.content[node3.content.length - 1].type === "comment") {
    content3.push(hardline);
  }
  return fill(["$", ...content3, "$"]);
}
function printDisplayMath(path45, print, options) {
  const node3 = path45.getNode();
  let content3 = path45.map(print, "content");
  content3 = formatDocArray(node3.content, content3, options);
  content3 = joinWithSoftline(content3);
  const bodyStartToken = [hardline];
  if (node3.content.length === 0 || node3.content[0].type === "comment" && node3.content[0].sameline) {
    bodyStartToken.pop();
  }
  return [
    ESCAPE2 + "[",
    indent(fill(bodyStartToken.concat(content3))),
    hardline,
    ESCAPE2 + "]"
  ];
}
function printVerbatimEnvironment(path45, print, options) {
  const node3 = path45.getNode();
  const env6 = formatEnvSurround(node3);
  return [env6.start, node3.content, env6.end];
}
function printEnvironment(path45, print, options) {
  const node3 = path45.getNode();
  const { renderInfo, previousNode, nextNode, referenceMap } = getNodeInfo(
    node3,
    options
  );
  const args = node3.args ? path45.map(print, "args") : [];
  const env6 = formatEnvSurround(node3);
  let content3 = path45.map(print, "content");
  content3 = formatDocArray(node3.content, content3, options);
  if (renderInfo.inMathMode) {
    content3 = joinWithSoftline(content3);
  }
  let bodyStartToken = [hardline];
  if (node3.content.length === 0 || node3.content[0].type === "comment" && node3.content[0].sameline) {
    bodyStartToken.pop();
  }
  return [
    env6.start,
    ...args,
    indent(fill(bodyStartToken.concat(content3))),
    hardline,
    env6.end
  ];
}
function printAlignedEnvironment(path45, print, options) {
  const node3 = path45.getNode();
  const { renderInfo, previousNode, nextNode, referenceMap } = getNodeInfo(
    node3,
    options
  );
  const args = node3.args ? path45.map(print, "args") : [];
  const env6 = formatEnvSurround(node3);
  const leadingComment = node3.content[0] && node3.content[0].type === "comment" && node3.content[0].sameline ? node3.content[0] : null;
  const { rows, rowSeps, trailingComments } = formatAlignedContent(
    leadingComment ? node3.content.slice(1) : node3.content
  );
  const content3 = [];
  for (let i2 = 0; i2 < rows.length; i2++) {
    const row2 = rows[i2];
    const rowSep = rowSeps[i2];
    const trailingComment = trailingComments[i2];
    content3.push(row2);
    if (rowSep) {
      content3.push(printRaw(rowSep));
    }
    if (rowSep && trailingComment) {
      content3.push(" ");
    }
    if (trailingComment) {
      content3.push(["%", printRaw(trailingComment.content)]);
    }
    if (rowSep || trailingComment) {
      content3.push(hardline);
    }
  }
  if (content3[content3.length - 1] === hardline) {
    content3.pop();
  }
  if (leadingComment) {
    content3.unshift(
      leadingComment.leadingWhitespace ? " " : "",
      "%" + printRaw(leadingComment.content),
      hardline
    );
    return [env6.start, ...args, indent(content3), hardline, env6.end];
  }
  return [
    env6.start,
    ...args,
    indent([hardline, ...content3]),
    hardline,
    env6.end
  ];
}
function formatAlignedContent(nodes) {
  function getSpace(len = 1) {
    return " ".repeat(len);
  }
  const rows = parseAlignEnvironment(nodes);
  const numCols = Math.max(...rows.map((r2) => r2.cells.length));
  const rowSeps = rows.map(({ rowSep }) => printRaw(rowSep || []));
  const trailingComments = rows.map(({ trailingComment }) => trailingComment);
  const renderedRows = rows.map(({ cells: cells2, colSeps }) => ({
    cells: cells2.map((nodes2) => {
      trim(nodes2);
      return printRaw(nodes2);
    }),
    seps: colSeps.map((nodes2) => printRaw(nodes2))
  }));
  const colWidths = [];
  for (let i2 = 0; i2 < numCols; i2++) {
    colWidths.push(
      Math.max(
        ...renderedRows.map(
          ({ cells: cells2, seps }) => ((cells2[i2] || "") + (seps[i2] || "")).length
        )
      )
    );
  }
  const joinedRows = renderedRows.map(({ cells: cells2, seps }) => {
    if (cells2.length === 1 && cells2[0] === "") {
      return "";
    }
    let ret = "";
    for (let i2 = 0; i2 < cells2.length; i2++) {
      const width = colWidths[i2] - (seps[i2] || "").length;
      ret += (i2 === 0 ? "" : " ") + cells2[i2] + getSpace(width - cells2[i2].length + 1) + (seps[i2] || "");
    }
    return ret;
  });
  return { rows: joinedRows, rowSeps, trailingComments };
}
var ReferenceMap = class {
  constructor(ast) {
    this.ast = ast;
    this.map = /* @__PURE__ */ new Map();
    visit2(
      this.ast,
      (nodeList) => {
        for (let i2 = 0; i2 < nodeList.length; i2++) {
          this.map.set(nodeList[i2], {
            previous: nodeList[i2 - 1],
            next: nodeList[i2 + 1]
          });
        }
      },
      { includeArrays: true, test: Array.isArray }
    );
  }
  /**
   * Associate render-specific data with this node. This data
   * will be overwritten if `setRenderCache` is called twice.
   *
   * @param {Ast.Ast} node
   * @param {*} data
   * @memberof ReferenceMap
   */
  setRenderCache(node3, data) {
    const currData = this.map.get(node3) || {};
    this.map.set(node3, { ...currData, renderCache: data });
  }
  /**
   * Retrieve data associated with `node` via `setRenderCache`
   *
   * @param {Ast.Ast} node
   * @returns {(object | undefined)}
   * @memberof ReferenceMap
   */
  getRenderCache(node3) {
    var _a6;
    return (_a6 = this.map.get(node3)) == null ? void 0 : _a6.renderCache;
  }
  getPreviousNode(node3) {
    return (this.map.get(node3) || {}).previous;
  }
  getNextNode(node3) {
    return (this.map.get(node3) || {}).next;
  }
};
function printLatexAst(path45, options, print) {
  const node3 = path45.getValue();
  const { renderInfo } = getNodeInfo(node3, options);
  if (node3 == null) {
    return node3;
  }
  if (typeof node3 === "string") {
    return node3;
  }
  switch (node3.type) {
    case "root":
      if (options.referenceMap) {
        console.warn(
          "Processing root node, but ReferenceMap already exists. Are there multiple nodes of type 'root'?"
        );
      }
      options.referenceMap = new ReferenceMap(node3);
      return printRoot(path45, print, options);
    case "argument":
      return printArgument(path45, print, options);
    case "comment":
      return printComment(path45, print, options);
    case "environment":
    case "mathenv":
      if (renderInfo.alignContent) {
        return printAlignedEnvironment(path45, print, options);
      }
      return printEnvironment(path45, print, options);
    case "displaymath":
      return printDisplayMath(path45, print, options);
    case "group":
      const content3 = printRaw(node3.content, {
        asArray: true
      }).map((token) => token === linebreak ? hardline : token);
      return ["{", ...content3, "}"];
    case "inlinemath":
      return printInlineMath(path45, print, options);
    case "macro":
      return printMacro(path45, print, options);
    case "parbreak":
      return [hardline, hardline];
    case "string":
      return node3.content;
    case "verb":
      return [
        ESCAPE2,
        node3.env,
        node3.escape,
        printRaw(node3.content),
        node3.escape
      ];
    case "verbatim":
      return printVerbatimEnvironment(path45, print, options);
    case "whitespace":
      return line;
    default:
      console.warn("Printing unknown type", node3);
      return printRaw(node3);
  }
}

// ../../node_modules/@unified-latex/unified-latex-util-to-string/index.js
var __create3 = Object.create;
var __defProp3 = Object.defineProperty;
var __getOwnPropDesc3 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames3 = Object.getOwnPropertyNames;
var __getProtoOf3 = Object.getPrototypeOf;
var __hasOwnProp3 = Object.prototype.hasOwnProperty;
var __commonJS3 = (cb, mod) => function __require() {
  return mod || (0, cb[__getOwnPropNames3(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __copyProps3 = (to, from4, except, desc) => {
  if (from4 && typeof from4 === "object" || typeof from4 === "function") {
    for (let key2 of __getOwnPropNames3(from4))
      if (!__hasOwnProp3.call(to, key2) && key2 !== except)
        __defProp3(to, key2, { get: () => from4[key2], enumerable: !(desc = __getOwnPropDesc3(from4, key2)) || desc.enumerable });
  }
  return to;
};
var __toESM3 = (mod, isNodeMode, target) => (target = mod != null ? __create3(__getProtoOf3(mod)) : {}, __copyProps3(
  // If the importer is in node compatibility mode or this is not an ESM
  // file that has been converted to a CommonJS file using a Babel-
  // compatible transform (i.e. "__esModule" has not been set), then set
  // "default" to the CommonJS "module.exports" for node compatibility.
  isNodeMode || !mod || !mod.__esModule ? __defProp3(target, "default", { value: mod, enumerable: true }) : target,
  mod
));
var require_standalone = __commonJS3({
  "../../node_modules/prettier/standalone.js"(exports2, module2) {
    (function(e2) {
      if (typeof exports2 == "object" && typeof module2 == "object")
        module2.exports = e2();
      else if (typeof define == "function" && define.amd)
        define(e2);
      else {
        var f3 = typeof globalThis < "u" ? globalThis : typeof global < "u" ? global : typeof self < "u" ? self : this || {};
        f3.prettier = e2();
      }
    })(function() {
      "use strict";
      var xe = (e2, r2) => () => (r2 || e2((r2 = { exports: {} }).exports, r2), r2.exports);
      var pt = xe((t0, pu) => {
        var ir = function(e2) {
          return e2 && e2.Math == Math && e2;
        };
        pu.exports = ir(typeof globalThis == "object" && globalThis) || ir(typeof window == "object" && window) || ir(typeof self == "object" && self) || ir(typeof global == "object" && global) || /* @__PURE__ */ (function() {
          return this;
        })() || Function("return this")();
      });
      var Dt = xe((r0, fu) => {
        fu.exports = function(e2) {
          try {
            return !!e2();
          } catch {
            return true;
          }
        };
      });
      var yt = xe((n0, Du) => {
        var Mo = Dt();
        Du.exports = !Mo(function() {
          return Object.defineProperty({}, 1, { get: function() {
            return 7;
          } })[1] != 7;
        });
      });
      var ar = xe((u0, mu) => {
        var Ro = Dt();
        mu.exports = !Ro(function() {
          var e2 = function() {
          }.bind();
          return typeof e2 != "function" || e2.hasOwnProperty("prototype");
        });
      });
      var At = xe((s0, du) => {
        var $o = ar(), or = Function.prototype.call;
        du.exports = $o ? or.bind(or) : function() {
          return or.apply(or, arguments);
        };
      });
      var vu = xe((hu) => {
        "use strict";
        var gu = {}.propertyIsEnumerable, yu = Object.getOwnPropertyDescriptor, Vo = yu && !gu.call({ 1: 2 }, 1);
        hu.f = Vo ? function(r2) {
          var t2 = yu(this, r2);
          return !!t2 && t2.enumerable;
        } : gu;
      });
      var lr = xe((a0, Cu) => {
        Cu.exports = function(e2, r2) {
          return { enumerable: !(e2 & 1), configurable: !(e2 & 2), writable: !(e2 & 4), value: r2 };
        };
      });
      var mt = xe((o0, Au) => {
        var Eu = ar(), Fu = Function.prototype, Wr = Fu.call, Wo = Eu && Fu.bind.bind(Wr, Wr);
        Au.exports = Eu ? Wo : function(e2) {
          return function() {
            return Wr.apply(e2, arguments);
          };
        };
      });
      var Vt = xe((l0, xu) => {
        var Su = mt(), Ho = Su({}.toString), Go = Su("".slice);
        xu.exports = function(e2) {
          return Go(Ho(e2), 8, -1);
        };
      });
      var Tu = xe((c0, bu) => {
        var Uo = mt(), Jo = Dt(), zo = Vt(), Hr = Object, Xo = Uo("".split);
        bu.exports = Jo(function() {
          return !Hr("z").propertyIsEnumerable(0);
        }) ? function(e2) {
          return zo(e2) == "String" ? Xo(e2, "") : Hr(e2);
        } : Hr;
      });
      var cr2 = xe((p0, Bu) => {
        Bu.exports = function(e2) {
          return e2 == null;
        };
      });
      var Gr = xe((f0, Nu) => {
        var Ko = cr2(), Yo = TypeError;
        Nu.exports = function(e2) {
          if (Ko(e2))
            throw Yo("Can't call method on " + e2);
          return e2;
        };
      });
      var pr = xe((D0, wu) => {
        var Qo = Tu(), Zo = Gr();
        wu.exports = function(e2) {
          return Qo(Zo(e2));
        };
      });
      var Jr = xe((m0, _u) => {
        var Ur = typeof document == "object" && document.all, el = typeof Ur > "u" && Ur !== void 0;
        _u.exports = { all: Ur, IS_HTMLDDA: el };
      });
      var ot = xe((d0, Iu) => {
        var Pu = Jr(), tl = Pu.all;
        Iu.exports = Pu.IS_HTMLDDA ? function(e2) {
          return typeof e2 == "function" || e2 === tl;
        } : function(e2) {
          return typeof e2 == "function";
        };
      });
      var St = xe((g0, Ou) => {
        var ku = ot(), Lu = Jr(), rl = Lu.all;
        Ou.exports = Lu.IS_HTMLDDA ? function(e2) {
          return typeof e2 == "object" ? e2 !== null : ku(e2) || e2 === rl;
        } : function(e2) {
          return typeof e2 == "object" ? e2 !== null : ku(e2);
        };
      });
      var Wt = xe((y0, ju) => {
        var zr = pt(), nl2 = ot(), ul = function(e2) {
          return nl2(e2) ? e2 : void 0;
        };
        ju.exports = function(e2, r2) {
          return arguments.length < 2 ? ul(zr[e2]) : zr[e2] && zr[e2][r2];
        };
      });
      var Xr = xe((h0, qu) => {
        var sl = mt();
        qu.exports = sl({}.isPrototypeOf);
      });
      var Ru = xe((v0, Mu) => {
        var il = Wt();
        Mu.exports = il("navigator", "userAgent") || "";
      });
      var Ju = xe((C0, Uu) => {
        var Gu = pt(), Kr = Ru(), $u = Gu.process, Vu = Gu.Deno, Wu = $u && $u.versions || Vu && Vu.version, Hu = Wu && Wu.v8, dt3, fr;
        Hu && (dt3 = Hu.split("."), fr = dt3[0] > 0 && dt3[0] < 4 ? 1 : +(dt3[0] + dt3[1]));
        !fr && Kr && (dt3 = Kr.match(/Edge\/(\d+)/), (!dt3 || dt3[1] >= 74) && (dt3 = Kr.match(/Chrome\/(\d+)/), dt3 && (fr = +dt3[1])));
        Uu.exports = fr;
      });
      var Yr = xe((E0, Xu) => {
        var zu = Ju(), al = Dt();
        Xu.exports = !!Object.getOwnPropertySymbols && !al(function() {
          var e2 = Symbol();
          return !String(e2) || !(Object(e2) instanceof Symbol) || !Symbol.sham && zu && zu < 41;
        });
      });
      var Qr = xe((F0, Ku) => {
        var ol2 = Yr();
        Ku.exports = ol2 && !Symbol.sham && typeof Symbol.iterator == "symbol";
      });
      var Zr = xe((A0, Yu) => {
        var ll = Wt(), cl = ot(), pl = Xr(), fl = Qr(), Dl = Object;
        Yu.exports = fl ? function(e2) {
          return typeof e2 == "symbol";
        } : function(e2) {
          var r2 = ll("Symbol");
          return cl(r2) && pl(r2.prototype, Dl(e2));
        };
      });
      var Dr = xe((S0, Qu) => {
        var ml = String;
        Qu.exports = function(e2) {
          try {
            return ml(e2);
          } catch {
            return "Object";
          }
        };
      });
      var Ht = xe((x0, Zu) => {
        var dl2 = ot(), gl = Dr(), yl = TypeError;
        Zu.exports = function(e2) {
          if (dl2(e2))
            return e2;
          throw yl(gl(e2) + " is not a function");
        };
      });
      var mr = xe((b0, es) => {
        var hl = Ht(), vl = cr2();
        es.exports = function(e2, r2) {
          var t2 = e2[r2];
          return vl(t2) ? void 0 : hl(t2);
        };
      });
      var rs = xe((T0, ts) => {
        var en = At(), tn = ot(), rn = St(), Cl = TypeError;
        ts.exports = function(e2, r2) {
          var t2, s5;
          if (r2 === "string" && tn(t2 = e2.toString) && !rn(s5 = en(t2, e2)) || tn(t2 = e2.valueOf) && !rn(s5 = en(t2, e2)) || r2 !== "string" && tn(t2 = e2.toString) && !rn(s5 = en(t2, e2)))
            return s5;
          throw Cl("Can't convert object to primitive value");
        };
      });
      var us = xe((B0, ns) => {
        ns.exports = false;
      });
      var dr = xe((N0, is4) => {
        var ss = pt(), El = Object.defineProperty;
        is4.exports = function(e2, r2) {
          try {
            El(ss, e2, { value: r2, configurable: true, writable: true });
          } catch {
            ss[e2] = r2;
          }
          return r2;
        };
      });
      var gr = xe((w0, os10) => {
        var Fl = pt(), Al = dr(), as = "__core-js_shared__", Sl = Fl[as] || Al(as, {});
        os10.exports = Sl;
      });
      var nn = xe((_0, cs) => {
        var xl = us(), ls = gr();
        (cs.exports = function(e2, r2) {
          return ls[e2] || (ls[e2] = r2 !== void 0 ? r2 : {});
        })("versions", []).push({ version: "3.26.1", mode: xl ? "pure" : "global", copyright: "\xA9 2014-2022 Denis Pushkarev (zloirock.ru)", license: "https://github.com/zloirock/core-js/blob/v3.26.1/LICENSE", source: "https://github.com/zloirock/core-js" });
      });
      var yr = xe((P0, ps) => {
        var bl = Gr(), Tl = Object;
        ps.exports = function(e2) {
          return Tl(bl(e2));
        };
      });
      var Ct = xe((I0, fs50) => {
        var Bl = mt(), Nl = yr(), wl = Bl({}.hasOwnProperty);
        fs50.exports = Object.hasOwn || function(r2, t2) {
          return wl(Nl(r2), t2);
        };
      });
      var un = xe((k0, Ds) => {
        var _l = mt(), Pl = 0, Il = Math.random(), kl = _l(1 .toString);
        Ds.exports = function(e2) {
          return "Symbol(" + (e2 === void 0 ? "" : e2) + ")_" + kl(++Pl + Il, 36);
        };
      });
      var bt = xe((L0, hs) => {
        var Ll = pt(), Ol = nn(), ms = Ct(), jl = un(), ds = Yr(), ys = Qr(), Pt = Ol("wks"), xt = Ll.Symbol, gs = xt && xt.for, ql = ys ? xt : xt && xt.withoutSetter || jl;
        hs.exports = function(e2) {
          if (!ms(Pt, e2) || !(ds || typeof Pt[e2] == "string")) {
            var r2 = "Symbol." + e2;
            ds && ms(xt, e2) ? Pt[e2] = xt[e2] : ys && gs ? Pt[e2] = gs(r2) : Pt[e2] = ql(r2);
          }
          return Pt[e2];
        };
      });
      var Fs = xe((O0, Es) => {
        var Ml = At(), vs = St(), Cs = Zr(), Rl = mr(), $l = rs(), Vl = bt(), Wl = TypeError, Hl = Vl("toPrimitive");
        Es.exports = function(e2, r2) {
          if (!vs(e2) || Cs(e2))
            return e2;
          var t2 = Rl(e2, Hl), s5;
          if (t2) {
            if (r2 === void 0 && (r2 = "default"), s5 = Ml(t2, e2, r2), !vs(s5) || Cs(s5))
              return s5;
            throw Wl("Can't convert object to primitive value");
          }
          return r2 === void 0 && (r2 = "number"), $l(e2, r2);
        };
      });
      var hr2 = xe((j0, As) => {
        var Gl = Fs(), Ul = Zr();
        As.exports = function(e2) {
          var r2 = Gl(e2, "string");
          return Ul(r2) ? r2 : r2 + "";
        };
      });
      var bs = xe((q0, xs) => {
        var Jl = pt(), Ss = St(), sn = Jl.document, zl = Ss(sn) && Ss(sn.createElement);
        xs.exports = function(e2) {
          return zl ? sn.createElement(e2) : {};
        };
      });
      var an = xe((M0, Ts) => {
        var Xl = yt(), Kl = Dt(), Yl = bs();
        Ts.exports = !Xl && !Kl(function() {
          return Object.defineProperty(Yl("div"), "a", { get: function() {
            return 7;
          } }).a != 7;
        });
      });
      var on = xe((Ns) => {
        var Ql = yt(), Zl = At(), ec = vu(), tc = lr(), rc2 = pr(), nc = hr2(), uc = Ct(), sc = an(), Bs = Object.getOwnPropertyDescriptor;
        Ns.f = Ql ? Bs : function(r2, t2) {
          if (r2 = rc2(r2), t2 = nc(t2), sc)
            try {
              return Bs(r2, t2);
            } catch {
            }
          if (uc(r2, t2))
            return tc(!Zl(ec.f, r2, t2), r2[t2]);
        };
      });
      var _s = xe(($0, ws) => {
        var ic = yt(), ac = Dt();
        ws.exports = ic && ac(function() {
          return Object.defineProperty(function() {
          }, "prototype", { value: 42, writable: false }).prototype != 42;
        });
      });
      var Tt = xe((V0, Ps) => {
        var oc = St(), lc = String, cc = TypeError;
        Ps.exports = function(e2) {
          if (oc(e2))
            return e2;
          throw cc(lc(e2) + " is not an object");
        };
      });
      var It = xe((ks) => {
        var pc = yt(), fc = an(), Dc2 = _s(), vr = Tt(), Is = hr2(), mc = TypeError, ln = Object.defineProperty, dc = Object.getOwnPropertyDescriptor, cn = "enumerable", pn = "configurable", fn = "writable";
        ks.f = pc ? Dc2 ? function(r2, t2, s5) {
          if (vr(r2), t2 = Is(t2), vr(s5), typeof r2 == "function" && t2 === "prototype" && "value" in s5 && fn in s5 && !s5[fn]) {
            var a2 = dc(r2, t2);
            a2 && a2[fn] && (r2[t2] = s5.value, s5 = { configurable: pn in s5 ? s5[pn] : a2[pn], enumerable: cn in s5 ? s5[cn] : a2[cn], writable: false });
          }
          return ln(r2, t2, s5);
        } : ln : function(r2, t2, s5) {
          if (vr(r2), t2 = Is(t2), vr(s5), fc)
            try {
              return ln(r2, t2, s5);
            } catch {
            }
          if ("get" in s5 || "set" in s5)
            throw mc("Accessors not supported");
          return "value" in s5 && (r2[t2] = s5.value), r2;
        };
      });
      var Dn = xe((H0, Ls) => {
        var gc = yt(), yc = It(), hc = lr();
        Ls.exports = gc ? function(e2, r2, t2) {
          return yc.f(e2, r2, hc(1, t2));
        } : function(e2, r2, t2) {
          return e2[r2] = t2, e2;
        };
      });
      var qs = xe((G0, js) => {
        var mn = yt(), vc = Ct(), Os = Function.prototype, Cc = mn && Object.getOwnPropertyDescriptor, dn = vc(Os, "name"), Ec = dn && function() {
        }.name === "something", Fc = dn && (!mn || mn && Cc(Os, "name").configurable);
        js.exports = { EXISTS: dn, PROPER: Ec, CONFIGURABLE: Fc };
      });
      var yn = xe((U0, Ms) => {
        var Ac = mt(), Sc2 = ot(), gn = gr(), xc = Ac(Function.toString);
        Sc2(gn.inspectSource) || (gn.inspectSource = function(e2) {
          return xc(e2);
        });
        Ms.exports = gn.inspectSource;
      });
      var Vs = xe((J0, $s) => {
        var bc = pt(), Tc2 = ot(), Rs = bc.WeakMap;
        $s.exports = Tc2(Rs) && /native code/.test(String(Rs));
      });
      var Gs = xe((z0, Hs) => {
        var Bc = nn(), Nc = un(), Ws = Bc("keys");
        Hs.exports = function(e2) {
          return Ws[e2] || (Ws[e2] = Nc(e2));
        };
      });
      var hn = xe((X0, Us) => {
        Us.exports = {};
      });
      var Ks = xe((K0, Xs) => {
        var wc = Vs(), zs = pt(), _c = St(), Pc = Dn(), vn = Ct(), Cn = gr(), Ic = Gs(), kc = hn(), Js = "Object already initialized", En = zs.TypeError, Lc = zs.WeakMap, Cr, Gt, Er, Oc = function(e2) {
          return Er(e2) ? Gt(e2) : Cr(e2, {});
        }, jc = function(e2) {
          return function(r2) {
            var t2;
            if (!_c(r2) || (t2 = Gt(r2)).type !== e2)
              throw En("Incompatible receiver, " + e2 + " required");
            return t2;
          };
        };
        wc || Cn.state ? (gt = Cn.state || (Cn.state = new Lc()), gt.get = gt.get, gt.has = gt.has, gt.set = gt.set, Cr = function(e2, r2) {
          if (gt.has(e2))
            throw En(Js);
          return r2.facade = e2, gt.set(e2, r2), r2;
        }, Gt = function(e2) {
          return gt.get(e2) || {};
        }, Er = function(e2) {
          return gt.has(e2);
        }) : (Bt = Ic("state"), kc[Bt] = true, Cr = function(e2, r2) {
          if (vn(e2, Bt))
            throw En(Js);
          return r2.facade = e2, Pc(e2, Bt, r2), r2;
        }, Gt = function(e2) {
          return vn(e2, Bt) ? e2[Bt] : {};
        }, Er = function(e2) {
          return vn(e2, Bt);
        });
        var gt, Bt;
        Xs.exports = { set: Cr, get: Gt, has: Er, enforce: Oc, getterFor: jc };
      });
      var An = xe((Y0, Qs) => {
        var qc = Dt(), Mc = ot(), Fr = Ct(), Fn = yt(), Rc = qs().CONFIGURABLE, $c = yn(), Ys = Ks(), Vc = Ys.enforce, Wc = Ys.get, Ar = Object.defineProperty, Hc = Fn && !qc(function() {
          return Ar(function() {
          }, "length", { value: 8 }).length !== 8;
        }), Gc = String(String).split("String"), Uc = Qs.exports = function(e2, r2, t2) {
          String(r2).slice(0, 7) === "Symbol(" && (r2 = "[" + String(r2).replace(/^Symbol\(([^)]*)\)/, "$1") + "]"), t2 && t2.getter && (r2 = "get " + r2), t2 && t2.setter && (r2 = "set " + r2), (!Fr(e2, "name") || Rc && e2.name !== r2) && (Fn ? Ar(e2, "name", { value: r2, configurable: true }) : e2.name = r2), Hc && t2 && Fr(t2, "arity") && e2.length !== t2.arity && Ar(e2, "length", { value: t2.arity });
          try {
            t2 && Fr(t2, "constructor") && t2.constructor ? Fn && Ar(e2, "prototype", { writable: false }) : e2.prototype && (e2.prototype = void 0);
          } catch {
          }
          var s5 = Vc(e2);
          return Fr(s5, "source") || (s5.source = Gc.join(typeof r2 == "string" ? r2 : "")), e2;
        };
        Function.prototype.toString = Uc(function() {
          return Mc(this) && Wc(this).source || $c(this);
        }, "toString");
      });
      var ei = xe((Q0, Zs) => {
        var Jc = ot(), zc = It(), Xc = An(), Kc = dr();
        Zs.exports = function(e2, r2, t2, s5) {
          s5 || (s5 = {});
          var a2 = s5.enumerable, n = s5.name !== void 0 ? s5.name : r2;
          if (Jc(t2) && Xc(t2, n, s5), s5.global)
            a2 ? e2[r2] = t2 : Kc(r2, t2);
          else {
            try {
              s5.unsafe ? e2[r2] && (a2 = true) : delete e2[r2];
            } catch {
            }
            a2 ? e2[r2] = t2 : zc.f(e2, r2, { value: t2, enumerable: false, configurable: !s5.nonConfigurable, writable: !s5.nonWritable });
          }
          return e2;
        };
      });
      var ri = xe((Z0, ti) => {
        var Yc = Math.ceil, Qc = Math.floor;
        ti.exports = Math.trunc || function(r2) {
          var t2 = +r2;
          return (t2 > 0 ? Qc : Yc)(t2);
        };
      });
      var Sr = xe((ey, ni) => {
        var Zc = ri();
        ni.exports = function(e2) {
          var r2 = +e2;
          return r2 !== r2 || r2 === 0 ? 0 : Zc(r2);
        };
      });
      var si = xe((ty, ui) => {
        var ep = Sr(), tp = Math.max, rp = Math.min;
        ui.exports = function(e2, r2) {
          var t2 = ep(e2);
          return t2 < 0 ? tp(t2 + r2, 0) : rp(t2, r2);
        };
      });
      var ai = xe((ry, ii) => {
        var np2 = Sr(), up2 = Math.min;
        ii.exports = function(e2) {
          return e2 > 0 ? up2(np2(e2), 9007199254740991) : 0;
        };
      });
      var kt = xe((ny, oi) => {
        var sp = ai();
        oi.exports = function(e2) {
          return sp(e2.length);
        };
      });
      var pi = xe((uy, ci) => {
        var ip = pr(), ap = si(), op2 = kt(), li3 = function(e2) {
          return function(r2, t2, s5) {
            var a2 = ip(r2), n = op2(a2), u3 = ap(s5, n), i2;
            if (e2 && t2 != t2) {
              for (; n > u3; )
                if (i2 = a2[u3++], i2 != i2)
                  return true;
            } else
              for (; n > u3; u3++)
                if ((e2 || u3 in a2) && a2[u3] === t2)
                  return e2 || u3 || 0;
            return !e2 && -1;
          };
        };
        ci.exports = { includes: li3(true), indexOf: li3(false) };
      });
      var mi = xe((sy, Di) => {
        var lp = mt(), Sn = Ct(), cp = pr(), pp = pi().indexOf, fp = hn(), fi = lp([].push);
        Di.exports = function(e2, r2) {
          var t2 = cp(e2), s5 = 0, a2 = [], n;
          for (n in t2)
            !Sn(fp, n) && Sn(t2, n) && fi(a2, n);
          for (; r2.length > s5; )
            Sn(t2, n = r2[s5++]) && (~pp(a2, n) || fi(a2, n));
          return a2;
        };
      });
      var gi = xe((iy, di) => {
        di.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"];
      });
      var hi = xe((yi) => {
        var Dp = mi(), mp = gi(), dp = mp.concat("length", "prototype");
        yi.f = Object.getOwnPropertyNames || function(r2) {
          return Dp(r2, dp);
        };
      });
      var Ci = xe((vi) => {
        vi.f = Object.getOwnPropertySymbols;
      });
      var Fi = xe((ly, Ei) => {
        var gp = Wt(), yp = mt(), hp = hi(), vp = Ci(), Cp = Tt(), Ep = yp([].concat);
        Ei.exports = gp("Reflect", "ownKeys") || function(r2) {
          var t2 = hp.f(Cp(r2)), s5 = vp.f;
          return s5 ? Ep(t2, s5(r2)) : t2;
        };
      });
      var xi = xe((cy, Si) => {
        var Ai = Ct(), Fp = Fi(), Ap = on(), Sp = It();
        Si.exports = function(e2, r2, t2) {
          for (var s5 = Fp(r2), a2 = Sp.f, n = Ap.f, u3 = 0; u3 < s5.length; u3++) {
            var i2 = s5[u3];
            !Ai(e2, i2) && !(t2 && Ai(t2, i2)) && a2(e2, i2, n(r2, i2));
          }
        };
      });
      var Ti = xe((py, bi) => {
        var xp = Dt(), bp = ot(), Tp = /#|\.prototype\./, Ut = function(e2, r2) {
          var t2 = Np[Bp(e2)];
          return t2 == _p ? true : t2 == wp ? false : bp(r2) ? xp(r2) : !!r2;
        }, Bp = Ut.normalize = function(e2) {
          return String(e2).replace(Tp, ".").toLowerCase();
        }, Np = Ut.data = {}, wp = Ut.NATIVE = "N", _p = Ut.POLYFILL = "P";
        bi.exports = Ut;
      });
      var Jt = xe((fy, Bi) => {
        var xn = pt(), Pp = on().f, Ip = Dn(), kp = ei(), Lp = dr(), Op = xi(), jp = Ti();
        Bi.exports = function(e2, r2) {
          var t2 = e2.target, s5 = e2.global, a2 = e2.stat, n, u3, i2, l, p5, d;
          if (s5 ? u3 = xn : a2 ? u3 = xn[t2] || Lp(t2, {}) : u3 = (xn[t2] || {}).prototype, u3)
            for (i2 in r2) {
              if (p5 = r2[i2], e2.dontCallGetSet ? (d = Pp(u3, i2), l = d && d.value) : l = u3[i2], n = jp(s5 ? i2 : t2 + (a2 ? "." : "#") + i2, e2.forced), !n && l !== void 0) {
                if (typeof p5 == typeof l)
                  continue;
                Op(p5, l);
              }
              (e2.sham || l && l.sham) && Ip(p5, "sham", true), kp(u3, i2, p5, e2);
            }
        };
      });
      var bn = xe((Dy, Ni) => {
        var qp = Vt();
        Ni.exports = Array.isArray || function(r2) {
          return qp(r2) == "Array";
        };
      });
      var _i = xe((my, wi) => {
        var Mp = TypeError, Rp = 9007199254740991;
        wi.exports = function(e2) {
          if (e2 > Rp)
            throw Mp("Maximum allowed index exceeded");
          return e2;
        };
      });
      var Ii = xe((dy, Pi) => {
        var $p = Vt(), Vp = mt();
        Pi.exports = function(e2) {
          if ($p(e2) === "Function")
            return Vp(e2);
        };
      });
      var Tn = xe((gy, Li) => {
        var ki = Ii(), Wp = Ht(), Hp = ar(), Gp = ki(ki.bind);
        Li.exports = function(e2, r2) {
          return Wp(e2), r2 === void 0 ? e2 : Hp ? Gp(e2, r2) : function() {
            return e2.apply(r2, arguments);
          };
        };
      });
      var Bn = xe((yy, ji) => {
        "use strict";
        var Up = bn(), Jp = kt(), zp = _i(), Xp = Tn(), Oi = function(e2, r2, t2, s5, a2, n, u3, i2) {
          for (var l = a2, p5 = 0, d = u3 ? Xp(u3, i2) : false, y, g; p5 < s5; )
            p5 in t2 && (y = d ? d(t2[p5], p5, r2) : t2[p5], n > 0 && Up(y) ? (g = Jp(y), l = Oi(e2, r2, y, g, l, n - 1) - 1) : (zp(l + 1), e2[l] = y), l++), p5++;
          return l;
        };
        ji.exports = Oi;
      });
      var Ri = xe((hy, Mi) => {
        var Kp = bt(), Yp = Kp("toStringTag"), qi = {};
        qi[Yp] = "z";
        Mi.exports = String(qi) === "[object z]";
      });
      var Nn = xe((vy, $i) => {
        var Qp = Ri(), Zp = ot(), xr = Vt(), ef = bt(), tf = ef("toStringTag"), rf = Object, nf = xr(/* @__PURE__ */ (function() {
          return arguments;
        })()) == "Arguments", uf = function(e2, r2) {
          try {
            return e2[r2];
          } catch {
          }
        };
        $i.exports = Qp ? xr : function(e2) {
          var r2, t2, s5;
          return e2 === void 0 ? "Undefined" : e2 === null ? "Null" : typeof (t2 = uf(r2 = rf(e2), tf)) == "string" ? t2 : nf ? xr(r2) : (s5 = xr(r2)) == "Object" && Zp(r2.callee) ? "Arguments" : s5;
        };
      });
      var Ji = xe((Cy, Ui) => {
        var sf = mt(), af = Dt(), Vi = ot(), of3 = Nn(), lf = Wt(), cf = yn(), Wi = function() {
        }, pf = [], Hi = lf("Reflect", "construct"), wn = /^\s*(?:class|function)\b/, ff = sf(wn.exec), Df = !wn.exec(Wi), zt = function(r2) {
          if (!Vi(r2))
            return false;
          try {
            return Hi(Wi, pf, r2), true;
          } catch {
            return false;
          }
        }, Gi = function(r2) {
          if (!Vi(r2))
            return false;
          switch (of3(r2)) {
            case "AsyncFunction":
            case "GeneratorFunction":
            case "AsyncGeneratorFunction":
              return false;
          }
          try {
            return Df || !!ff(wn, cf(r2));
          } catch {
            return true;
          }
        };
        Gi.sham = true;
        Ui.exports = !Hi || af(function() {
          var e2;
          return zt(zt.call) || !zt(Object) || !zt(function() {
            e2 = true;
          }) || e2;
        }) ? Gi : zt;
      });
      var Yi = xe((Ey, Ki) => {
        var zi = bn(), mf = Ji(), df = St(), gf = bt(), yf = gf("species"), Xi = Array;
        Ki.exports = function(e2) {
          var r2;
          return zi(e2) && (r2 = e2.constructor, mf(r2) && (r2 === Xi || zi(r2.prototype)) ? r2 = void 0 : df(r2) && (r2 = r2[yf], r2 === null && (r2 = void 0))), r2 === void 0 ? Xi : r2;
        };
      });
      var _n = xe((Fy, Qi) => {
        var hf = Yi();
        Qi.exports = function(e2, r2) {
          return new (hf(e2))(r2 === 0 ? 0 : r2);
        };
      });
      var Zi = xe(() => {
        "use strict";
        var vf = Jt(), Cf = Bn(), Ef = Ht(), Ff = yr(), Af = kt(), Sf = _n();
        vf({ target: "Array", proto: true }, { flatMap: function(r2) {
          var t2 = Ff(this), s5 = Af(t2), a2;
          return Ef(r2), a2 = Sf(t2, 0), a2.length = Cf(a2, t2, t2, s5, 0, 1, r2, arguments.length > 1 ? arguments[1] : void 0), a2;
        } });
      });
      var Pn = xe((xy, ea) => {
        ea.exports = {};
      });
      var ra = xe((by, ta) => {
        var xf = bt(), bf = Pn(), Tf = xf("iterator"), Bf = Array.prototype;
        ta.exports = function(e2) {
          return e2 !== void 0 && (bf.Array === e2 || Bf[Tf] === e2);
        };
      });
      var In = xe((Ty, ua) => {
        var Nf = Nn(), na = mr(), wf = cr2(), _f = Pn(), Pf = bt(), If = Pf("iterator");
        ua.exports = function(e2) {
          if (!wf(e2))
            return na(e2, If) || na(e2, "@@iterator") || _f[Nf(e2)];
        };
      });
      var ia = xe((By, sa) => {
        var kf = At(), Lf = Ht(), Of = Tt(), jf = Dr(), qf = In(), Mf = TypeError;
        sa.exports = function(e2, r2) {
          var t2 = arguments.length < 2 ? qf(e2) : r2;
          if (Lf(t2))
            return Of(kf(t2, e2));
          throw Mf(jf(e2) + " is not iterable");
        };
      });
      var la = xe((Ny, oa) => {
        var Rf = At(), aa = Tt(), $f = mr();
        oa.exports = function(e2, r2, t2) {
          var s5, a2;
          aa(e2);
          try {
            if (s5 = $f(e2, "return"), !s5) {
              if (r2 === "throw")
                throw t2;
              return t2;
            }
            s5 = Rf(s5, e2);
          } catch (n) {
            a2 = true, s5 = n;
          }
          if (r2 === "throw")
            throw t2;
          if (a2)
            throw s5;
          return aa(s5), t2;
        };
      });
      var ma = xe((wy, Da) => {
        var Vf = Tn(), Wf = At(), Hf = Tt(), Gf = Dr(), Uf = ra(), Jf = kt(), ca = Xr(), zf = ia(), Xf = In(), pa = la(), Kf = TypeError, br3 = function(e2, r2) {
          this.stopped = e2, this.result = r2;
        }, fa = br3.prototype;
        Da.exports = function(e2, r2, t2) {
          var s5 = t2 && t2.that, a2 = !!(t2 && t2.AS_ENTRIES), n = !!(t2 && t2.IS_RECORD), u3 = !!(t2 && t2.IS_ITERATOR), i2 = !!(t2 && t2.INTERRUPTED), l = Vf(r2, s5), p5, d, y, g, c, D2, E, _2 = function(F2) {
            return p5 && pa(p5, "normal", F2), new br3(true, F2);
          }, w = function(F2) {
            return a2 ? (Hf(F2), i2 ? l(F2[0], F2[1], _2) : l(F2[0], F2[1])) : i2 ? l(F2, _2) : l(F2);
          };
          if (n)
            p5 = e2.iterator;
          else if (u3)
            p5 = e2;
          else {
            if (d = Xf(e2), !d)
              throw Kf(Gf(e2) + " is not iterable");
            if (Uf(d)) {
              for (y = 0, g = Jf(e2); g > y; y++)
                if (c = w(e2[y]), c && ca(fa, c))
                  return c;
              return new br3(false);
            }
            p5 = zf(e2, d);
          }
          for (D2 = n ? e2.next : p5.next; !(E = Wf(D2, p5)).done; ) {
            try {
              c = w(E.value);
            } catch (F2) {
              pa(p5, "throw", F2);
            }
            if (typeof c == "object" && c && ca(fa, c))
              return c;
          }
          return new br3(false);
        };
      });
      var ga = xe((_y, da) => {
        "use strict";
        var Yf = hr2(), Qf = It(), Zf = lr();
        da.exports = function(e2, r2, t2) {
          var s5 = Yf(r2);
          s5 in e2 ? Qf.f(e2, s5, Zf(0, t2)) : e2[s5] = t2;
        };
      });
      var ya = xe(() => {
        var eD = Jt(), tD = ma(), rD = ga();
        eD({ target: "Object", stat: true }, { fromEntries: function(r2) {
          var t2 = {};
          return tD(r2, function(s5, a2) {
            rD(t2, s5, a2);
          }, { AS_ENTRIES: true }), t2;
        } });
      });
      var Ca = xe((ky, va) => {
        var ha = An(), nD = It();
        va.exports = function(e2, r2, t2) {
          return t2.get && ha(t2.get, r2, { getter: true }), t2.set && ha(t2.set, r2, { setter: true }), nD.f(e2, r2, t2);
        };
      });
      var Fa = xe((Ly, Ea) => {
        "use strict";
        var uD = Tt();
        Ea.exports = function() {
          var e2 = uD(this), r2 = "";
          return e2.hasIndices && (r2 += "d"), e2.global && (r2 += "g"), e2.ignoreCase && (r2 += "i"), e2.multiline && (r2 += "m"), e2.dotAll && (r2 += "s"), e2.unicode && (r2 += "u"), e2.unicodeSets && (r2 += "v"), e2.sticky && (r2 += "y"), r2;
        };
      });
      var xa = xe(() => {
        var sD = pt(), iD = yt(), aD = Ca(), oD = Fa(), lD = Dt(), Aa = sD.RegExp, Sa = Aa.prototype, cD = iD && lD(function() {
          var e2 = true;
          try {
            Aa(".", "d");
          } catch {
            e2 = false;
          }
          var r2 = {}, t2 = "", s5 = e2 ? "dgimsy" : "gimsy", a2 = function(l, p5) {
            Object.defineProperty(r2, l, { get: function() {
              return t2 += p5, true;
            } });
          }, n = { dotAll: "s", global: "g", ignoreCase: "i", multiline: "m", sticky: "y" };
          e2 && (n.hasIndices = "d");
          for (var u3 in n)
            a2(u3, n[u3]);
          var i2 = Object.getOwnPropertyDescriptor(Sa, "flags").get.call(r2);
          return i2 !== s5 || t2 !== s5;
        });
        cD && aD(Sa, "flags", { configurable: true, get: oD });
      });
      var ba = xe(() => {
        var pD = Jt(), kn = pt();
        pD({ global: true, forced: kn.globalThis !== kn }, { globalThis: kn });
      });
      var Ta = xe(() => {
        ba();
      });
      var Ba = xe(() => {
        "use strict";
        var fD = Jt(), DD = Bn(), mD = yr(), dD = kt(), gD = Sr(), yD = _n();
        fD({ target: "Array", proto: true }, { flat: function() {
          var r2 = arguments.length ? arguments[0] : void 0, t2 = mD(this), s5 = dD(t2), a2 = yD(t2, 0);
          return a2.length = DD(a2, t2, t2, s5, 0, r2 === void 0 ? 1 : gD(r2)), a2;
        } });
      });
      var Zg = xe((Gy, jo) => {
        var hD = ["cliName", "cliCategory", "cliDescription"], vD = ["_"], CD = ["languageId"];
        function Hn(e2, r2) {
          if (e2 == null)
            return {};
          var t2 = ED(e2, r2), s5, a2;
          if (Object.getOwnPropertySymbols) {
            var n = Object.getOwnPropertySymbols(e2);
            for (a2 = 0; a2 < n.length; a2++)
              s5 = n[a2], !(r2.indexOf(s5) >= 0) && Object.prototype.propertyIsEnumerable.call(e2, s5) && (t2[s5] = e2[s5]);
          }
          return t2;
        }
        function ED(e2, r2) {
          if (e2 == null)
            return {};
          var t2 = {}, s5 = Object.keys(e2), a2, n;
          for (n = 0; n < s5.length; n++)
            a2 = s5[n], !(r2.indexOf(a2) >= 0) && (t2[a2] = e2[a2]);
          return t2;
        }
        Zi();
        ya();
        xa();
        Ta();
        Ba();
        var FD = Object.create, _r = Object.defineProperty, AD = Object.getOwnPropertyDescriptor, Gn = Object.getOwnPropertyNames, SD = Object.getPrototypeOf, xD = Object.prototype.hasOwnProperty, ht = (e2, r2) => function() {
          return e2 && (r2 = (0, e2[Gn(e2)[0]])(e2 = 0)), r2;
        }, te = (e2, r2) => function() {
          return r2 || (0, e2[Gn(e2)[0]])((r2 = { exports: {} }).exports, r2), r2.exports;
        }, Kt = (e2, r2) => {
          for (var t2 in r2)
            _r(e2, t2, { get: r2[t2], enumerable: true });
        }, Pa = (e2, r2, t2, s5) => {
          if (r2 && typeof r2 == "object" || typeof r2 == "function")
            for (let a2 of Gn(r2))
              !xD.call(e2, a2) && a2 !== t2 && _r(e2, a2, { get: () => r2[a2], enumerable: !(s5 = AD(r2, a2)) || s5.enumerable });
          return e2;
        }, bD = (e2, r2, t2) => (t2 = e2 != null ? FD(SD(e2)) : {}, Pa(r2 || !e2 || !e2.__esModule ? _r(t2, "default", { value: e2, enumerable: true }) : t2, e2)), ft = (e2) => Pa(_r({}, "__esModule", { value: true }), e2), wt, ne = ht({ "<define:process>"() {
          wt = { env: {}, argv: [] };
        } }), Ia = te({ "package.json"(e2, r2) {
          r2.exports = { version: "2.8.3" };
        } }), TD = te({ "node_modules/diff/lib/diff/base.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true }), e2.default = r2;
          function r2() {
          }
          r2.prototype = { diff: function(n, u3) {
            var i2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, l = i2.callback;
            typeof i2 == "function" && (l = i2, i2 = {}), this.options = i2;
            var p5 = this;
            function d(S3) {
              return l ? (setTimeout(function() {
                l(void 0, S3);
              }, 0), true) : S3;
            }
            n = this.castInput(n), u3 = this.castInput(u3), n = this.removeEmpty(this.tokenize(n)), u3 = this.removeEmpty(this.tokenize(u3));
            var y = u3.length, g = n.length, c = 1, D2 = y + g, E = [{ newPos: -1, components: [] }], _2 = this.extractCommon(E[0], u3, n, 0);
            if (E[0].newPos + 1 >= y && _2 + 1 >= g)
              return d([{ value: this.join(u3), count: u3.length }]);
            function w() {
              for (var S3 = -1 * c; S3 <= c; S3 += 2) {
                var N = void 0, I = E[S3 - 1], P = E[S3 + 1], $2 = (P ? P.newPos : 0) - S3;
                I && (E[S3 - 1] = void 0);
                var f3 = I && I.newPos + 1 < y, T2 = P && 0 <= $2 && $2 < g;
                if (!f3 && !T2) {
                  E[S3] = void 0;
                  continue;
                }
                if (!f3 || T2 && I.newPos < P.newPos ? (N = s5(P), p5.pushComponent(N.components, void 0, true)) : (N = I, N.newPos++, p5.pushComponent(N.components, true, void 0)), $2 = p5.extractCommon(N, u3, n, S3), N.newPos + 1 >= y && $2 + 1 >= g)
                  return d(t2(p5, N.components, u3, n, p5.useLongestToken));
                E[S3] = N;
              }
              c++;
            }
            if (l)
              (function S3() {
                setTimeout(function() {
                  if (c > D2)
                    return l();
                  w() || S3();
                }, 0);
              })();
            else
              for (; c <= D2; ) {
                var F2 = w();
                if (F2)
                  return F2;
              }
          }, pushComponent: function(n, u3, i2) {
            var l = n[n.length - 1];
            l && l.added === u3 && l.removed === i2 ? n[n.length - 1] = { count: l.count + 1, added: u3, removed: i2 } : n.push({ count: 1, added: u3, removed: i2 });
          }, extractCommon: function(n, u3, i2, l) {
            for (var p5 = u3.length, d = i2.length, y = n.newPos, g = y - l, c = 0; y + 1 < p5 && g + 1 < d && this.equals(u3[y + 1], i2[g + 1]); )
              y++, g++, c++;
            return c && n.components.push({ count: c }), n.newPos = y, g;
          }, equals: function(n, u3) {
            return this.options.comparator ? this.options.comparator(n, u3) : n === u3 || this.options.ignoreCase && n.toLowerCase() === u3.toLowerCase();
          }, removeEmpty: function(n) {
            for (var u3 = [], i2 = 0; i2 < n.length; i2++)
              n[i2] && u3.push(n[i2]);
            return u3;
          }, castInput: function(n) {
            return n;
          }, tokenize: function(n) {
            return n.split("");
          }, join: function(n) {
            return n.join("");
          } };
          function t2(a2, n, u3, i2, l) {
            for (var p5 = 0, d = n.length, y = 0, g = 0; p5 < d; p5++) {
              var c = n[p5];
              if (c.removed) {
                if (c.value = a2.join(i2.slice(g, g + c.count)), g += c.count, p5 && n[p5 - 1].added) {
                  var E = n[p5 - 1];
                  n[p5 - 1] = n[p5], n[p5] = E;
                }
              } else {
                if (!c.added && l) {
                  var D2 = u3.slice(y, y + c.count);
                  D2 = D2.map(function(w, F2) {
                    var S3 = i2[g + F2];
                    return S3.length > w.length ? S3 : w;
                  }), c.value = a2.join(D2);
                } else
                  c.value = a2.join(u3.slice(y, y + c.count));
                y += c.count, c.added || (g += c.count);
              }
            }
            var _2 = n[d - 1];
            return d > 1 && typeof _2.value == "string" && (_2.added || _2.removed) && a2.equals("", _2.value) && (n[d - 2].value += _2.value, n.pop()), n;
          }
          function s5(a2) {
            return { newPos: a2.newPos, components: a2.components.slice(0) };
          }
        } }), BD = te({ "node_modules/diff/lib/diff/array.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true }), e2.diffArrays = a2, e2.arrayDiff = void 0;
          var r2 = t2(TD());
          function t2(n) {
            return n && n.__esModule ? n : { default: n };
          }
          var s5 = new r2.default();
          e2.arrayDiff = s5, s5.tokenize = function(n) {
            return n.slice();
          }, s5.join = s5.removeEmpty = function(n) {
            return n;
          };
          function a2(n, u3, i2) {
            return s5.diff(n, u3, i2);
          }
        } }), Un = te({ "src/document/doc-builders.js"(e2, r2) {
          "use strict";
          ne();
          function t2(v) {
            return { type: "concat", parts: v };
          }
          function s5(v) {
            return { type: "indent", contents: v };
          }
          function a2(v, o) {
            return { type: "align", contents: o, n: v };
          }
          function n(v) {
            let o = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
            return { type: "group", id: o.id, contents: v, break: Boolean(o.shouldBreak), expandedStates: o.expandedStates };
          }
          function u3(v) {
            return a2(Number.NEGATIVE_INFINITY, v);
          }
          function i2(v) {
            return a2({ type: "root" }, v);
          }
          function l(v) {
            return a2(-1, v);
          }
          function p5(v, o) {
            return n(v[0], Object.assign(Object.assign({}, o), {}, { expandedStates: v }));
          }
          function d(v) {
            return { type: "fill", parts: v };
          }
          function y(v, o) {
            let h4 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
            return { type: "if-break", breakContents: v, flatContents: o, groupId: h4.groupId };
          }
          function g(v, o) {
            return { type: "indent-if-break", contents: v, groupId: o.groupId, negate: o.negate };
          }
          function c(v) {
            return { type: "line-suffix", contents: v };
          }
          var D2 = { type: "line-suffix-boundary" }, E = { type: "break-parent" }, _2 = { type: "trim" }, w = { type: "line", hard: true }, F2 = { type: "line", hard: true, literal: true }, S3 = { type: "line" }, N = { type: "line", soft: true }, I = t2([w, E]), P = t2([F2, E]), $2 = { type: "cursor", placeholder: Symbol("cursor") };
          function f3(v, o) {
            let h4 = [];
            for (let C = 0; C < o.length; C++)
              C !== 0 && h4.push(v), h4.push(o[C]);
            return t2(h4);
          }
          function T2(v, o, h4) {
            let C = v;
            if (o > 0) {
              for (let x2 = 0; x2 < Math.floor(o / h4); ++x2)
                C = s5(C);
              C = a2(o % h4, C), C = a2(Number.NEGATIVE_INFINITY, C);
            }
            return C;
          }
          function m2(v, o) {
            return { type: "label", label: v, contents: o };
          }
          r2.exports = { concat: t2, join: f3, line: S3, softline: N, hardline: I, literalline: P, group: n, conditionalGroup: p5, fill: d, lineSuffix: c, lineSuffixBoundary: D2, cursor: $2, breakParent: E, ifBreak: y, trim: _2, indent: s5, indentIfBreak: g, align: a2, addAlignmentToDoc: T2, markAsRoot: i2, dedentToRoot: u3, dedent: l, hardlineWithoutBreakParent: w, literallineWithoutBreakParent: F2, label: m2 };
        } }), Jn = te({ "src/common/end-of-line.js"(e2, r2) {
          "use strict";
          ne();
          function t2(u3) {
            let i2 = u3.indexOf("\r");
            return i2 >= 0 ? u3.charAt(i2 + 1) === `
` ? "crlf" : "cr" : "lf";
          }
          function s5(u3) {
            switch (u3) {
              case "cr":
                return "\r";
              case "crlf":
                return `\r
`;
              default:
                return `
`;
            }
          }
          function a2(u3, i2) {
            let l;
            switch (i2) {
              case `
`:
                l = /\n/g;
                break;
              case "\r":
                l = /\r/g;
                break;
              case `\r
`:
                l = /\r\n/g;
                break;
              default:
                throw new Error(`Unexpected "eol" ${JSON.stringify(i2)}.`);
            }
            let p5 = u3.match(l);
            return p5 ? p5.length : 0;
          }
          function n(u3) {
            return u3.replace(/\r\n?/g, `
`);
          }
          r2.exports = { guessEndOfLine: t2, convertEndOfLineToChars: s5, countEndOfLineChars: a2, normalizeEndOfLine: n };
        } }), lt = te({ "src/utils/get-last.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = (s5) => s5[s5.length - 1];
          r2.exports = t2;
        } });
        function ND() {
          let { onlyFirst: e2 = false } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, r2 = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");
          return new RegExp(r2, e2 ? void 0 : "g");
        }
        var wD = ht({ "node_modules/strip-ansi/node_modules/ansi-regex/index.js"() {
          ne();
        } });
        function _D(e2) {
          if (typeof e2 != "string")
            throw new TypeError(`Expected a \`string\`, got \`${typeof e2}\``);
          return e2.replace(ND(), "");
        }
        var PD = ht({ "node_modules/strip-ansi/index.js"() {
          ne(), wD();
        } });
        function ID(e2) {
          return Number.isInteger(e2) ? e2 >= 4352 && (e2 <= 4447 || e2 === 9001 || e2 === 9002 || 11904 <= e2 && e2 <= 12871 && e2 !== 12351 || 12880 <= e2 && e2 <= 19903 || 19968 <= e2 && e2 <= 42182 || 43360 <= e2 && e2 <= 43388 || 44032 <= e2 && e2 <= 55203 || 63744 <= e2 && e2 <= 64255 || 65040 <= e2 && e2 <= 65049 || 65072 <= e2 && e2 <= 65131 || 65281 <= e2 && e2 <= 65376 || 65504 <= e2 && e2 <= 65510 || 110592 <= e2 && e2 <= 110593 || 127488 <= e2 && e2 <= 127569 || 131072 <= e2 && e2 <= 262141) : false;
        }
        var kD = ht({ "node_modules/is-fullwidth-code-point/index.js"() {
          ne();
        } }), LD = te({ "node_modules/emoji-regex/index.js"(e2, r2) {
          "use strict";
          ne(), r2.exports = function() {
            return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
          };
        } }), ka = {};
        Kt(ka, { default: () => OD });
        function OD(e2) {
          if (typeof e2 != "string" || e2.length === 0 || (e2 = _D(e2), e2.length === 0))
            return 0;
          e2 = e2.replace((0, La.default)(), "  ");
          let r2 = 0;
          for (let t2 = 0; t2 < e2.length; t2++) {
            let s5 = e2.codePointAt(t2);
            s5 <= 31 || s5 >= 127 && s5 <= 159 || s5 >= 768 && s5 <= 879 || (s5 > 65535 && t2++, r2 += ID(s5) ? 2 : 1);
          }
          return r2;
        }
        var La, jD = ht({ "node_modules/string-width/index.js"() {
          ne(), PD(), kD(), La = bD(LD());
        } }), Oa = te({ "src/utils/get-string-width.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = (jD(), ft(ka)).default, s5 = /[^\x20-\x7F]/;
          function a2(n) {
            return n ? s5.test(n) ? t2(n) : n.length : 0;
          }
          r2.exports = a2;
        } }), Yt = te({ "src/document/doc-utils.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = lt(), { literalline: s5, join: a2 } = Un(), n = (o) => Array.isArray(o) || o && o.type === "concat", u3 = (o) => {
            if (Array.isArray(o))
              return o;
            if (o.type !== "concat" && o.type !== "fill")
              throw new Error("Expect doc type to be `concat` or `fill`.");
            return o.parts;
          }, i2 = {};
          function l(o, h4, C, x2) {
            let b = [o];
            for (; b.length > 0; ) {
              let B = b.pop();
              if (B === i2) {
                C(b.pop());
                continue;
              }
              if (C && b.push(B, i2), !h4 || h4(B) !== false)
                if (n(B) || B.type === "fill") {
                  let k = u3(B);
                  for (let M = k.length, R = M - 1; R >= 0; --R)
                    b.push(k[R]);
                } else if (B.type === "if-break")
                  B.flatContents && b.push(B.flatContents), B.breakContents && b.push(B.breakContents);
                else if (B.type === "group" && B.expandedStates)
                  if (x2)
                    for (let k = B.expandedStates.length, M = k - 1; M >= 0; --M)
                      b.push(B.expandedStates[M]);
                  else
                    b.push(B.contents);
                else
                  B.contents && b.push(B.contents);
            }
          }
          function p5(o, h4) {
            let C = /* @__PURE__ */ new Map();
            return x2(o);
            function x2(B) {
              if (C.has(B))
                return C.get(B);
              let k = b(B);
              return C.set(B, k), k;
            }
            function b(B) {
              if (Array.isArray(B))
                return h4(B.map(x2));
              if (B.type === "concat" || B.type === "fill") {
                let k = B.parts.map(x2);
                return h4(Object.assign(Object.assign({}, B), {}, { parts: k }));
              }
              if (B.type === "if-break") {
                let k = B.breakContents && x2(B.breakContents), M = B.flatContents && x2(B.flatContents);
                return h4(Object.assign(Object.assign({}, B), {}, { breakContents: k, flatContents: M }));
              }
              if (B.type === "group" && B.expandedStates) {
                let k = B.expandedStates.map(x2), M = k[0];
                return h4(Object.assign(Object.assign({}, B), {}, { contents: M, expandedStates: k }));
              }
              if (B.contents) {
                let k = x2(B.contents);
                return h4(Object.assign(Object.assign({}, B), {}, { contents: k }));
              }
              return h4(B);
            }
          }
          function d(o, h4, C) {
            let x2 = C, b = false;
            function B(k) {
              let M = h4(k);
              if (M !== void 0 && (b = true, x2 = M), b)
                return false;
            }
            return l(o, B), x2;
          }
          function y(o) {
            if (o.type === "group" && o.break || o.type === "line" && o.hard || o.type === "break-parent")
              return true;
          }
          function g(o) {
            return d(o, y, false);
          }
          function c(o) {
            if (o.length > 0) {
              let h4 = t2(o);
              !h4.expandedStates && !h4.break && (h4.break = "propagated");
            }
            return null;
          }
          function D2(o) {
            let h4 = /* @__PURE__ */ new Set(), C = [];
            function x2(B) {
              if (B.type === "break-parent" && c(C), B.type === "group") {
                if (C.push(B), h4.has(B))
                  return false;
                h4.add(B);
              }
            }
            function b(B) {
              B.type === "group" && C.pop().break && c(C);
            }
            l(o, x2, b, true);
          }
          function E(o) {
            return o.type === "line" && !o.hard ? o.soft ? "" : " " : o.type === "if-break" ? o.flatContents || "" : o;
          }
          function _2(o) {
            return p5(o, E);
          }
          var w = (o, h4) => o && o.type === "line" && o.hard && h4 && h4.type === "break-parent";
          function F2(o) {
            if (!o)
              return o;
            if (n(o) || o.type === "fill") {
              let h4 = u3(o);
              for (; h4.length > 1 && w(...h4.slice(-2)); )
                h4.length -= 2;
              if (h4.length > 0) {
                let C = F2(t2(h4));
                h4[h4.length - 1] = C;
              }
              return Array.isArray(o) ? h4 : Object.assign(Object.assign({}, o), {}, { parts: h4 });
            }
            switch (o.type) {
              case "align":
              case "indent":
              case "indent-if-break":
              case "group":
              case "line-suffix":
              case "label": {
                let h4 = F2(o.contents);
                return Object.assign(Object.assign({}, o), {}, { contents: h4 });
              }
              case "if-break": {
                let h4 = F2(o.breakContents), C = F2(o.flatContents);
                return Object.assign(Object.assign({}, o), {}, { breakContents: h4, flatContents: C });
              }
            }
            return o;
          }
          function S3(o) {
            return F2(I(o));
          }
          function N(o) {
            switch (o.type) {
              case "fill":
                if (o.parts.every((C) => C === ""))
                  return "";
                break;
              case "group":
                if (!o.contents && !o.id && !o.break && !o.expandedStates)
                  return "";
                if (o.contents.type === "group" && o.contents.id === o.id && o.contents.break === o.break && o.contents.expandedStates === o.expandedStates)
                  return o.contents;
                break;
              case "align":
              case "indent":
              case "indent-if-break":
              case "line-suffix":
                if (!o.contents)
                  return "";
                break;
              case "if-break":
                if (!o.flatContents && !o.breakContents)
                  return "";
                break;
            }
            if (!n(o))
              return o;
            let h4 = [];
            for (let C of u3(o)) {
              if (!C)
                continue;
              let [x2, ...b] = n(C) ? u3(C) : [C];
              typeof x2 == "string" && typeof t2(h4) == "string" ? h4[h4.length - 1] += x2 : h4.push(x2), h4.push(...b);
            }
            return h4.length === 0 ? "" : h4.length === 1 ? h4[0] : Array.isArray(o) ? h4 : Object.assign(Object.assign({}, o), {}, { parts: h4 });
          }
          function I(o) {
            return p5(o, (h4) => N(h4));
          }
          function P(o) {
            let h4 = [], C = o.filter(Boolean);
            for (; C.length > 0; ) {
              let x2 = C.shift();
              if (x2) {
                if (n(x2)) {
                  C.unshift(...u3(x2));
                  continue;
                }
                if (h4.length > 0 && typeof t2(h4) == "string" && typeof x2 == "string") {
                  h4[h4.length - 1] += x2;
                  continue;
                }
                h4.push(x2);
              }
            }
            return h4;
          }
          function $2(o) {
            return p5(o, (h4) => Array.isArray(h4) ? P(h4) : h4.parts ? Object.assign(Object.assign({}, h4), {}, { parts: P(h4.parts) }) : h4);
          }
          function f3(o) {
            return p5(o, (h4) => typeof h4 == "string" && h4.includes(`
`) ? T2(h4) : h4);
          }
          function T2(o) {
            let h4 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : s5;
            return a2(h4, o.split(`
`)).parts;
          }
          function m2(o) {
            if (o.type === "line")
              return true;
          }
          function v(o) {
            return d(o, m2, false);
          }
          r2.exports = { isConcat: n, getDocParts: u3, willBreak: g, traverseDoc: l, findInDoc: d, mapDoc: p5, propagateBreaks: D2, removeLines: _2, stripTrailingHardline: S3, normalizeParts: P, normalizeDoc: $2, cleanDoc: I, replaceTextEndOfLine: T2, replaceEndOfLine: f3, canBreak: v };
        } }), qD = te({ "src/document/doc-printer.js"(e2, r2) {
          "use strict";
          ne();
          var { convertEndOfLineToChars: t2 } = Jn(), s5 = lt(), a2 = Oa(), { fill: n, cursor: u3, indent: i2 } = Un(), { isConcat: l, getDocParts: p5 } = Yt(), d, y = 1, g = 2;
          function c() {
            return { value: "", length: 0, queue: [] };
          }
          function D2(N, I) {
            return _2(N, { type: "indent" }, I);
          }
          function E(N, I, P) {
            return I === Number.NEGATIVE_INFINITY ? N.root || c() : I < 0 ? _2(N, { type: "dedent" }, P) : I ? I.type === "root" ? Object.assign(Object.assign({}, N), {}, { root: N }) : _2(N, { type: typeof I == "string" ? "stringAlign" : "numberAlign", n: I }, P) : N;
          }
          function _2(N, I, P) {
            let $2 = I.type === "dedent" ? N.queue.slice(0, -1) : [...N.queue, I], f3 = "", T2 = 0, m2 = 0, v = 0;
            for (let k of $2)
              switch (k.type) {
                case "indent":
                  C(), P.useTabs ? o(1) : h4(P.tabWidth);
                  break;
                case "stringAlign":
                  C(), f3 += k.n, T2 += k.n.length;
                  break;
                case "numberAlign":
                  m2 += 1, v += k.n;
                  break;
                default:
                  throw new Error(`Unexpected type '${k.type}'`);
              }
            return b(), Object.assign(Object.assign({}, N), {}, { value: f3, length: T2, queue: $2 });
            function o(k) {
              f3 += "	".repeat(k), T2 += P.tabWidth * k;
            }
            function h4(k) {
              f3 += " ".repeat(k), T2 += k;
            }
            function C() {
              P.useTabs ? x2() : b();
            }
            function x2() {
              m2 > 0 && o(m2), B();
            }
            function b() {
              v > 0 && h4(v), B();
            }
            function B() {
              m2 = 0, v = 0;
            }
          }
          function w(N) {
            if (N.length === 0)
              return 0;
            let I = 0;
            for (; N.length > 0 && typeof s5(N) == "string" && /^[\t ]*$/.test(s5(N)); )
              I += N.pop().length;
            if (N.length > 0 && typeof s5(N) == "string") {
              let P = s5(N).replace(/[\t ]*$/, "");
              I += s5(N).length - P.length, N[N.length - 1] = P;
            }
            return I;
          }
          function F2(N, I, P, $2, f3) {
            let T2 = I.length, m2 = [N], v = [];
            for (; P >= 0; ) {
              if (m2.length === 0) {
                if (T2 === 0)
                  return true;
                m2.push(I[--T2]);
                continue;
              }
              let { mode: o, doc: h4 } = m2.pop();
              if (typeof h4 == "string")
                v.push(h4), P -= a2(h4);
              else if (l(h4) || h4.type === "fill") {
                let C = p5(h4);
                for (let x2 = C.length - 1; x2 >= 0; x2--)
                  m2.push({ mode: o, doc: C[x2] });
              } else
                switch (h4.type) {
                  case "indent":
                  case "align":
                  case "indent-if-break":
                  case "label":
                    m2.push({ mode: o, doc: h4.contents });
                    break;
                  case "trim":
                    P += w(v);
                    break;
                  case "group": {
                    if (f3 && h4.break)
                      return false;
                    let C = h4.break ? y : o, x2 = h4.expandedStates && C === y ? s5(h4.expandedStates) : h4.contents;
                    m2.push({ mode: C, doc: x2 });
                    break;
                  }
                  case "if-break": {
                    let x2 = (h4.groupId ? d[h4.groupId] || g : o) === y ? h4.breakContents : h4.flatContents;
                    x2 && m2.push({ mode: o, doc: x2 });
                    break;
                  }
                  case "line":
                    if (o === y || h4.hard)
                      return true;
                    h4.soft || (v.push(" "), P--);
                    break;
                  case "line-suffix":
                    $2 = true;
                    break;
                  case "line-suffix-boundary":
                    if ($2)
                      return false;
                    break;
                }
            }
            return false;
          }
          function S3(N, I) {
            d = {};
            let P = I.printWidth, $2 = t2(I.endOfLine), f3 = 0, T2 = [{ ind: c(), mode: y, doc: N }], m2 = [], v = false, o = [];
            for (; T2.length > 0; ) {
              let { ind: C, mode: x2, doc: b } = T2.pop();
              if (typeof b == "string") {
                let B = $2 !== `
` ? b.replace(/\n/g, $2) : b;
                m2.push(B), f3 += a2(B);
              } else if (l(b)) {
                let B = p5(b);
                for (let k = B.length - 1; k >= 0; k--)
                  T2.push({ ind: C, mode: x2, doc: B[k] });
              } else
                switch (b.type) {
                  case "cursor":
                    m2.push(u3.placeholder);
                    break;
                  case "indent":
                    T2.push({ ind: D2(C, I), mode: x2, doc: b.contents });
                    break;
                  case "align":
                    T2.push({ ind: E(C, b.n, I), mode: x2, doc: b.contents });
                    break;
                  case "trim":
                    f3 -= w(m2);
                    break;
                  case "group":
                    switch (x2) {
                      case g:
                        if (!v) {
                          T2.push({ ind: C, mode: b.break ? y : g, doc: b.contents });
                          break;
                        }
                      case y: {
                        v = false;
                        let B = { ind: C, mode: g, doc: b.contents }, k = P - f3, M = o.length > 0;
                        if (!b.break && F2(B, T2, k, M))
                          T2.push(B);
                        else if (b.expandedStates) {
                          let R = s5(b.expandedStates);
                          if (b.break) {
                            T2.push({ ind: C, mode: y, doc: R });
                            break;
                          } else
                            for (let q2 = 1; q2 < b.expandedStates.length + 1; q2++)
                              if (q2 >= b.expandedStates.length) {
                                T2.push({ ind: C, mode: y, doc: R });
                                break;
                              } else {
                                let J = b.expandedStates[q2], L = { ind: C, mode: g, doc: J };
                                if (F2(L, T2, k, M)) {
                                  T2.push(L);
                                  break;
                                }
                              }
                        } else
                          T2.push({ ind: C, mode: y, doc: b.contents });
                        break;
                      }
                    }
                    b.id && (d[b.id] = s5(T2).mode);
                    break;
                  case "fill": {
                    let B = P - f3, { parts: k } = b;
                    if (k.length === 0)
                      break;
                    let [M, R] = k, q2 = { ind: C, mode: g, doc: M }, J = { ind: C, mode: y, doc: M }, L = F2(q2, [], B, o.length > 0, true);
                    if (k.length === 1) {
                      L ? T2.push(q2) : T2.push(J);
                      break;
                    }
                    let Q = { ind: C, mode: g, doc: R }, V = { ind: C, mode: y, doc: R };
                    if (k.length === 2) {
                      L ? T2.push(Q, q2) : T2.push(V, J);
                      break;
                    }
                    k.splice(0, 2);
                    let j = { ind: C, mode: x2, doc: n(k) }, Y = k[0];
                    F2({ ind: C, mode: g, doc: [M, R, Y] }, [], B, o.length > 0, true) ? T2.push(j, Q, q2) : L ? T2.push(j, V, q2) : T2.push(j, V, J);
                    break;
                  }
                  case "if-break":
                  case "indent-if-break": {
                    let B = b.groupId ? d[b.groupId] : x2;
                    if (B === y) {
                      let k = b.type === "if-break" ? b.breakContents : b.negate ? b.contents : i2(b.contents);
                      k && T2.push({ ind: C, mode: x2, doc: k });
                    }
                    if (B === g) {
                      let k = b.type === "if-break" ? b.flatContents : b.negate ? i2(b.contents) : b.contents;
                      k && T2.push({ ind: C, mode: x2, doc: k });
                    }
                    break;
                  }
                  case "line-suffix":
                    o.push({ ind: C, mode: x2, doc: b.contents });
                    break;
                  case "line-suffix-boundary":
                    o.length > 0 && T2.push({ ind: C, mode: x2, doc: { type: "line", hard: true } });
                    break;
                  case "line":
                    switch (x2) {
                      case g:
                        if (b.hard)
                          v = true;
                        else {
                          b.soft || (m2.push(" "), f3 += 1);
                          break;
                        }
                      case y:
                        if (o.length > 0) {
                          T2.push({ ind: C, mode: x2, doc: b }, ...o.reverse()), o.length = 0;
                          break;
                        }
                        b.literal ? C.root ? (m2.push($2, C.root.value), f3 = C.root.length) : (m2.push($2), f3 = 0) : (f3 -= w(m2), m2.push($2 + C.value), f3 = C.length);
                        break;
                    }
                    break;
                  case "label":
                    T2.push({ ind: C, mode: x2, doc: b.contents });
                    break;
                  default:
                }
              T2.length === 0 && o.length > 0 && (T2.push(...o.reverse()), o.length = 0);
            }
            let h4 = m2.indexOf(u3.placeholder);
            if (h4 !== -1) {
              let C = m2.indexOf(u3.placeholder, h4 + 1), x2 = m2.slice(0, h4).join(""), b = m2.slice(h4 + 1, C).join(""), B = m2.slice(C + 1).join("");
              return { formatted: x2 + b + B, cursorNodeStart: x2.length, cursorNodeText: b };
            }
            return { formatted: m2.join("") };
          }
          r2.exports = { printDocToString: S3 };
        } }), MD = te({ "src/document/doc-debug.js"(e2, r2) {
          "use strict";
          ne();
          var { isConcat: t2, getDocParts: s5 } = Yt();
          function a2(u3) {
            if (!u3)
              return "";
            if (t2(u3)) {
              let i2 = [];
              for (let l of s5(u3))
                if (t2(l))
                  i2.push(...a2(l).parts);
                else {
                  let p5 = a2(l);
                  p5 !== "" && i2.push(p5);
                }
              return { type: "concat", parts: i2 };
            }
            return u3.type === "if-break" ? Object.assign(Object.assign({}, u3), {}, { breakContents: a2(u3.breakContents), flatContents: a2(u3.flatContents) }) : u3.type === "group" ? Object.assign(Object.assign({}, u3), {}, { contents: a2(u3.contents), expandedStates: u3.expandedStates && u3.expandedStates.map(a2) }) : u3.type === "fill" ? { type: "fill", parts: u3.parts.map(a2) } : u3.contents ? Object.assign(Object.assign({}, u3), {}, { contents: a2(u3.contents) }) : u3;
          }
          function n(u3) {
            let i2 = /* @__PURE__ */ Object.create(null), l = /* @__PURE__ */ new Set();
            return p5(a2(u3));
            function p5(y, g, c) {
              if (typeof y == "string")
                return JSON.stringify(y);
              if (t2(y)) {
                let D2 = s5(y).map(p5).filter(Boolean);
                return D2.length === 1 ? D2[0] : `[${D2.join(", ")}]`;
              }
              if (y.type === "line") {
                let D2 = Array.isArray(c) && c[g + 1] && c[g + 1].type === "break-parent";
                return y.literal ? D2 ? "literalline" : "literallineWithoutBreakParent" : y.hard ? D2 ? "hardline" : "hardlineWithoutBreakParent" : y.soft ? "softline" : "line";
              }
              if (y.type === "break-parent")
                return Array.isArray(c) && c[g - 1] && c[g - 1].type === "line" && c[g - 1].hard ? void 0 : "breakParent";
              if (y.type === "trim")
                return "trim";
              if (y.type === "indent")
                return "indent(" + p5(y.contents) + ")";
              if (y.type === "align")
                return y.n === Number.NEGATIVE_INFINITY ? "dedentToRoot(" + p5(y.contents) + ")" : y.n < 0 ? "dedent(" + p5(y.contents) + ")" : y.n.type === "root" ? "markAsRoot(" + p5(y.contents) + ")" : "align(" + JSON.stringify(y.n) + ", " + p5(y.contents) + ")";
              if (y.type === "if-break")
                return "ifBreak(" + p5(y.breakContents) + (y.flatContents ? ", " + p5(y.flatContents) : "") + (y.groupId ? (y.flatContents ? "" : ', ""') + `, { groupId: ${d(y.groupId)} }` : "") + ")";
              if (y.type === "indent-if-break") {
                let D2 = [];
                y.negate && D2.push("negate: true"), y.groupId && D2.push(`groupId: ${d(y.groupId)}`);
                let E = D2.length > 0 ? `, { ${D2.join(", ")} }` : "";
                return `indentIfBreak(${p5(y.contents)}${E})`;
              }
              if (y.type === "group") {
                let D2 = [];
                y.break && y.break !== "propagated" && D2.push("shouldBreak: true"), y.id && D2.push(`id: ${d(y.id)}`);
                let E = D2.length > 0 ? `, { ${D2.join(", ")} }` : "";
                return y.expandedStates ? `conditionalGroup([${y.expandedStates.map((_2) => p5(_2)).join(",")}]${E})` : `group(${p5(y.contents)}${E})`;
              }
              if (y.type === "fill")
                return `fill([${y.parts.map((D2) => p5(D2)).join(", ")}])`;
              if (y.type === "line-suffix")
                return "lineSuffix(" + p5(y.contents) + ")";
              if (y.type === "line-suffix-boundary")
                return "lineSuffixBoundary";
              if (y.type === "label")
                return `label(${JSON.stringify(y.label)}, ${p5(y.contents)})`;
              throw new Error("Unknown doc type " + y.type);
            }
            function d(y) {
              if (typeof y != "symbol")
                return JSON.stringify(String(y));
              if (y in i2)
                return i2[y];
              let g = String(y).slice(7, -1) || "symbol";
              for (let c = 0; ; c++) {
                let D2 = g + (c > 0 ? ` #${c}` : "");
                if (!l.has(D2))
                  return l.add(D2), i2[y] = `Symbol.for(${JSON.stringify(D2)})`;
              }
            }
          }
          r2.exports = { printDocToDebug: n };
        } }), qe = te({ "src/document/index.js"(e2, r2) {
          "use strict";
          ne(), r2.exports = { builders: Un(), printer: qD(), utils: Yt(), debug: MD() };
        } }), ja = {};
        Kt(ja, { default: () => RD });
        function RD(e2) {
          if (typeof e2 != "string")
            throw new TypeError("Expected a string");
          return e2.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
        }
        var $D = ht({ "node_modules/escape-string-regexp/index.js"() {
          ne();
        } }), qa = te({ "node_modules/semver/internal/debug.js"(e2, r2) {
          ne();
          var t2 = typeof wt == "object" && wt.env && wt.env.NODE_DEBUG && /\bsemver\b/i.test(wt.env.NODE_DEBUG) ? function() {
            for (var s5 = arguments.length, a2 = new Array(s5), n = 0; n < s5; n++)
              a2[n] = arguments[n];
            return console.error("SEMVER", ...a2);
          } : () => {
          };
          r2.exports = t2;
        } }), Ma = te({ "node_modules/semver/internal/constants.js"(e2, r2) {
          ne();
          var t2 = "2.0.0", s5 = 256, a2 = Number.MAX_SAFE_INTEGER || 9007199254740991, n = 16;
          r2.exports = { SEMVER_SPEC_VERSION: t2, MAX_LENGTH: s5, MAX_SAFE_INTEGER: a2, MAX_SAFE_COMPONENT_LENGTH: n };
        } }), VD = te({ "node_modules/semver/internal/re.js"(e2, r2) {
          ne();
          var { MAX_SAFE_COMPONENT_LENGTH: t2 } = Ma(), s5 = qa();
          e2 = r2.exports = {};
          var a2 = e2.re = [], n = e2.src = [], u3 = e2.t = {}, i2 = 0, l = (p5, d, y) => {
            let g = i2++;
            s5(p5, g, d), u3[p5] = g, n[g] = d, a2[g] = new RegExp(d, y ? "g" : void 0);
          };
          l("NUMERICIDENTIFIER", "0|[1-9]\\d*"), l("NUMERICIDENTIFIERLOOSE", "[0-9]+"), l("NONNUMERICIDENTIFIER", "\\d*[a-zA-Z-][a-zA-Z0-9-]*"), l("MAINVERSION", `(${n[u3.NUMERICIDENTIFIER]})\\.(${n[u3.NUMERICIDENTIFIER]})\\.(${n[u3.NUMERICIDENTIFIER]})`), l("MAINVERSIONLOOSE", `(${n[u3.NUMERICIDENTIFIERLOOSE]})\\.(${n[u3.NUMERICIDENTIFIERLOOSE]})\\.(${n[u3.NUMERICIDENTIFIERLOOSE]})`), l("PRERELEASEIDENTIFIER", `(?:${n[u3.NUMERICIDENTIFIER]}|${n[u3.NONNUMERICIDENTIFIER]})`), l("PRERELEASEIDENTIFIERLOOSE", `(?:${n[u3.NUMERICIDENTIFIERLOOSE]}|${n[u3.NONNUMERICIDENTIFIER]})`), l("PRERELEASE", `(?:-(${n[u3.PRERELEASEIDENTIFIER]}(?:\\.${n[u3.PRERELEASEIDENTIFIER]})*))`), l("PRERELEASELOOSE", `(?:-?(${n[u3.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${n[u3.PRERELEASEIDENTIFIERLOOSE]})*))`), l("BUILDIDENTIFIER", "[0-9A-Za-z-]+"), l("BUILD", `(?:\\+(${n[u3.BUILDIDENTIFIER]}(?:\\.${n[u3.BUILDIDENTIFIER]})*))`), l("FULLPLAIN", `v?${n[u3.MAINVERSION]}${n[u3.PRERELEASE]}?${n[u3.BUILD]}?`), l("FULL", `^${n[u3.FULLPLAIN]}$`), l("LOOSEPLAIN", `[v=\\s]*${n[u3.MAINVERSIONLOOSE]}${n[u3.PRERELEASELOOSE]}?${n[u3.BUILD]}?`), l("LOOSE", `^${n[u3.LOOSEPLAIN]}$`), l("GTLT", "((?:<|>)?=?)"), l("XRANGEIDENTIFIERLOOSE", `${n[u3.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`), l("XRANGEIDENTIFIER", `${n[u3.NUMERICIDENTIFIER]}|x|X|\\*`), l("XRANGEPLAIN", `[v=\\s]*(${n[u3.XRANGEIDENTIFIER]})(?:\\.(${n[u3.XRANGEIDENTIFIER]})(?:\\.(${n[u3.XRANGEIDENTIFIER]})(?:${n[u3.PRERELEASE]})?${n[u3.BUILD]}?)?)?`), l("XRANGEPLAINLOOSE", `[v=\\s]*(${n[u3.XRANGEIDENTIFIERLOOSE]})(?:\\.(${n[u3.XRANGEIDENTIFIERLOOSE]})(?:\\.(${n[u3.XRANGEIDENTIFIERLOOSE]})(?:${n[u3.PRERELEASELOOSE]})?${n[u3.BUILD]}?)?)?`), l("XRANGE", `^${n[u3.GTLT]}\\s*${n[u3.XRANGEPLAIN]}$`), l("XRANGELOOSE", `^${n[u3.GTLT]}\\s*${n[u3.XRANGEPLAINLOOSE]}$`), l("COERCE", `(^|[^\\d])(\\d{1,${t2}})(?:\\.(\\d{1,${t2}}))?(?:\\.(\\d{1,${t2}}))?(?:$|[^\\d])`), l("COERCERTL", n[u3.COERCE], true), l("LONETILDE", "(?:~>?)"), l("TILDETRIM", `(\\s*)${n[u3.LONETILDE]}\\s+`, true), e2.tildeTrimReplace = "$1~", l("TILDE", `^${n[u3.LONETILDE]}${n[u3.XRANGEPLAIN]}$`), l("TILDELOOSE", `^${n[u3.LONETILDE]}${n[u3.XRANGEPLAINLOOSE]}$`), l("LONECARET", "(?:\\^)"), l("CARETTRIM", `(\\s*)${n[u3.LONECARET]}\\s+`, true), e2.caretTrimReplace = "$1^", l("CARET", `^${n[u3.LONECARET]}${n[u3.XRANGEPLAIN]}$`), l("CARETLOOSE", `^${n[u3.LONECARET]}${n[u3.XRANGEPLAINLOOSE]}$`), l("COMPARATORLOOSE", `^${n[u3.GTLT]}\\s*(${n[u3.LOOSEPLAIN]})$|^$`), l("COMPARATOR", `^${n[u3.GTLT]}\\s*(${n[u3.FULLPLAIN]})$|^$`), l("COMPARATORTRIM", `(\\s*)${n[u3.GTLT]}\\s*(${n[u3.LOOSEPLAIN]}|${n[u3.XRANGEPLAIN]})`, true), e2.comparatorTrimReplace = "$1$2$3", l("HYPHENRANGE", `^\\s*(${n[u3.XRANGEPLAIN]})\\s+-\\s+(${n[u3.XRANGEPLAIN]})\\s*$`), l("HYPHENRANGELOOSE", `^\\s*(${n[u3.XRANGEPLAINLOOSE]})\\s+-\\s+(${n[u3.XRANGEPLAINLOOSE]})\\s*$`), l("STAR", "(<|>)?=?\\s*\\*"), l("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"), l("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$");
        } }), WD = te({ "node_modules/semver/internal/parse-options.js"(e2, r2) {
          ne();
          var t2 = ["includePrerelease", "loose", "rtl"], s5 = (a2) => a2 ? typeof a2 != "object" ? { loose: true } : t2.filter((n) => a2[n]).reduce((n, u3) => (n[u3] = true, n), {}) : {};
          r2.exports = s5;
        } }), HD = te({ "node_modules/semver/internal/identifiers.js"(e2, r2) {
          ne();
          var t2 = /^[0-9]+$/, s5 = (n, u3) => {
            let i2 = t2.test(n), l = t2.test(u3);
            return i2 && l && (n = +n, u3 = +u3), n === u3 ? 0 : i2 && !l ? -1 : l && !i2 ? 1 : n < u3 ? -1 : 1;
          }, a2 = (n, u3) => s5(u3, n);
          r2.exports = { compareIdentifiers: s5, rcompareIdentifiers: a2 };
        } }), GD = te({ "node_modules/semver/classes/semver.js"(e2, r2) {
          ne();
          var t2 = qa(), { MAX_LENGTH: s5, MAX_SAFE_INTEGER: a2 } = Ma(), { re: n, t: u3 } = VD(), i2 = WD(), { compareIdentifiers: l } = HD(), p5 = class {
            constructor(d, y) {
              if (y = i2(y), d instanceof p5) {
                if (d.loose === !!y.loose && d.includePrerelease === !!y.includePrerelease)
                  return d;
                d = d.version;
              } else if (typeof d != "string")
                throw new TypeError(`Invalid Version: ${d}`);
              if (d.length > s5)
                throw new TypeError(`version is longer than ${s5} characters`);
              t2("SemVer", d, y), this.options = y, this.loose = !!y.loose, this.includePrerelease = !!y.includePrerelease;
              let g = d.trim().match(y.loose ? n[u3.LOOSE] : n[u3.FULL]);
              if (!g)
                throw new TypeError(`Invalid Version: ${d}`);
              if (this.raw = d, this.major = +g[1], this.minor = +g[2], this.patch = +g[3], this.major > a2 || this.major < 0)
                throw new TypeError("Invalid major version");
              if (this.minor > a2 || this.minor < 0)
                throw new TypeError("Invalid minor version");
              if (this.patch > a2 || this.patch < 0)
                throw new TypeError("Invalid patch version");
              g[4] ? this.prerelease = g[4].split(".").map((c) => {
                if (/^[0-9]+$/.test(c)) {
                  let D2 = +c;
                  if (D2 >= 0 && D2 < a2)
                    return D2;
                }
                return c;
              }) : this.prerelease = [], this.build = g[5] ? g[5].split(".") : [], this.format();
            }
            format() {
              return this.version = `${this.major}.${this.minor}.${this.patch}`, this.prerelease.length && (this.version += `-${this.prerelease.join(".")}`), this.version;
            }
            toString() {
              return this.version;
            }
            compare(d) {
              if (t2("SemVer.compare", this.version, this.options, d), !(d instanceof p5)) {
                if (typeof d == "string" && d === this.version)
                  return 0;
                d = new p5(d, this.options);
              }
              return d.version === this.version ? 0 : this.compareMain(d) || this.comparePre(d);
            }
            compareMain(d) {
              return d instanceof p5 || (d = new p5(d, this.options)), l(this.major, d.major) || l(this.minor, d.minor) || l(this.patch, d.patch);
            }
            comparePre(d) {
              if (d instanceof p5 || (d = new p5(d, this.options)), this.prerelease.length && !d.prerelease.length)
                return -1;
              if (!this.prerelease.length && d.prerelease.length)
                return 1;
              if (!this.prerelease.length && !d.prerelease.length)
                return 0;
              let y = 0;
              do {
                let g = this.prerelease[y], c = d.prerelease[y];
                if (t2("prerelease compare", y, g, c), g === void 0 && c === void 0)
                  return 0;
                if (c === void 0)
                  return 1;
                if (g === void 0)
                  return -1;
                if (g === c)
                  continue;
                return l(g, c);
              } while (++y);
            }
            compareBuild(d) {
              d instanceof p5 || (d = new p5(d, this.options));
              let y = 0;
              do {
                let g = this.build[y], c = d.build[y];
                if (t2("prerelease compare", y, g, c), g === void 0 && c === void 0)
                  return 0;
                if (c === void 0)
                  return 1;
                if (g === void 0)
                  return -1;
                if (g === c)
                  continue;
                return l(g, c);
              } while (++y);
            }
            inc(d, y) {
              switch (d) {
                case "premajor":
                  this.prerelease.length = 0, this.patch = 0, this.minor = 0, this.major++, this.inc("pre", y);
                  break;
                case "preminor":
                  this.prerelease.length = 0, this.patch = 0, this.minor++, this.inc("pre", y);
                  break;
                case "prepatch":
                  this.prerelease.length = 0, this.inc("patch", y), this.inc("pre", y);
                  break;
                case "prerelease":
                  this.prerelease.length === 0 && this.inc("patch", y), this.inc("pre", y);
                  break;
                case "major":
                  (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) && this.major++, this.minor = 0, this.patch = 0, this.prerelease = [];
                  break;
                case "minor":
                  (this.patch !== 0 || this.prerelease.length === 0) && this.minor++, this.patch = 0, this.prerelease = [];
                  break;
                case "patch":
                  this.prerelease.length === 0 && this.patch++, this.prerelease = [];
                  break;
                case "pre":
                  if (this.prerelease.length === 0)
                    this.prerelease = [0];
                  else {
                    let g = this.prerelease.length;
                    for (; --g >= 0; )
                      typeof this.prerelease[g] == "number" && (this.prerelease[g]++, g = -2);
                    g === -1 && this.prerelease.push(0);
                  }
                  y && (l(this.prerelease[0], y) === 0 ? isNaN(this.prerelease[1]) && (this.prerelease = [y, 0]) : this.prerelease = [y, 0]);
                  break;
                default:
                  throw new Error(`invalid increment argument: ${d}`);
              }
              return this.format(), this.raw = this.version, this;
            }
          };
          r2.exports = p5;
        } }), zn = te({ "node_modules/semver/functions/compare.js"(e2, r2) {
          ne();
          var t2 = GD(), s5 = (a2, n, u3) => new t2(a2, u3).compare(new t2(n, u3));
          r2.exports = s5;
        } }), UD = te({ "node_modules/semver/functions/lt.js"(e2, r2) {
          ne();
          var t2 = zn(), s5 = (a2, n, u3) => t2(a2, n, u3) < 0;
          r2.exports = s5;
        } }), JD = te({ "node_modules/semver/functions/gte.js"(e2, r2) {
          ne();
          var t2 = zn(), s5 = (a2, n, u3) => t2(a2, n, u3) >= 0;
          r2.exports = s5;
        } }), zD = te({ "src/utils/arrayify.js"(e2, r2) {
          "use strict";
          ne(), r2.exports = (t2, s5) => Object.entries(t2).map((a2) => {
            let [n, u3] = a2;
            return Object.assign({ [s5]: n }, u3);
          });
        } }), XD = te({ "node_modules/outdent/lib/index.js"(e2, r2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true }), e2.outdent = void 0;
          function t2() {
            for (var F2 = [], S3 = 0; S3 < arguments.length; S3++)
              F2[S3] = arguments[S3];
          }
          function s5() {
            return typeof WeakMap < "u" ? /* @__PURE__ */ new WeakMap() : a2();
          }
          function a2() {
            return { add: t2, delete: t2, get: t2, set: t2, has: function(F2) {
              return false;
            } };
          }
          var n = Object.prototype.hasOwnProperty, u3 = function(F2, S3) {
            return n.call(F2, S3);
          };
          function i2(F2, S3) {
            for (var N in S3)
              u3(S3, N) && (F2[N] = S3[N]);
            return F2;
          }
          var l = /^[ \t]*(?:\r\n|\r|\n)/, p5 = /(?:\r\n|\r|\n)[ \t]*$/, d = /^(?:[\r\n]|$)/, y = /(?:\r\n|\r|\n)([ \t]*)(?:[^ \t\r\n]|$)/, g = /^[ \t]*[\r\n][ \t\r\n]*$/;
          function c(F2, S3, N) {
            var I = 0, P = F2[0].match(y);
            P && (I = P[1].length);
            var $2 = "(\\r\\n|\\r|\\n).{0," + I + "}", f3 = new RegExp($2, "g");
            S3 && (F2 = F2.slice(1));
            var T2 = N.newline, m2 = N.trimLeadingNewline, v = N.trimTrailingNewline, o = typeof T2 == "string", h4 = F2.length, C = F2.map(function(x2, b) {
              return x2 = x2.replace(f3, "$1"), b === 0 && m2 && (x2 = x2.replace(l, "")), b === h4 - 1 && v && (x2 = x2.replace(p5, "")), o && (x2 = x2.replace(/\r\n|\n|\r/g, function(B) {
                return T2;
              })), x2;
            });
            return C;
          }
          function D2(F2, S3) {
            for (var N = "", I = 0, P = F2.length; I < P; I++)
              N += F2[I], I < P - 1 && (N += S3[I]);
            return N;
          }
          function E(F2) {
            return u3(F2, "raw") && u3(F2, "length");
          }
          function _2(F2) {
            var S3 = s5(), N = s5();
            function I($2) {
              for (var f3 = [], T2 = 1; T2 < arguments.length; T2++)
                f3[T2 - 1] = arguments[T2];
              if (E($2)) {
                var m2 = $2, v = (f3[0] === I || f3[0] === w) && g.test(m2[0]) && d.test(m2[1]), o = v ? N : S3, h4 = o.get(m2);
                if (h4 || (h4 = c(m2, v, F2), o.set(m2, h4)), f3.length === 0)
                  return h4[0];
                var C = D2(h4, v ? f3.slice(1) : f3);
                return C;
              } else
                return _2(i2(i2({}, F2), $2 || {}));
            }
            var P = i2(I, { string: function($2) {
              return c([$2], false, F2)[0];
            } });
            return P;
          }
          var w = _2({ trimLeadingNewline: true, trimTrailingNewline: true });
          if (e2.outdent = w, e2.default = w, typeof r2 < "u")
            try {
              r2.exports = w, Object.defineProperty(w, "__esModule", { value: true }), w.default = w, w.outdent = w;
            } catch {
            }
        } }), KD = te({ "src/main/core-options.js"(e2, r2) {
          "use strict";
          ne();
          var { outdent: t2 } = XD(), s5 = "Config", a2 = "Editor", n = "Format", u3 = "Other", i2 = "Output", l = "Global", p5 = "Special", d = { cursorOffset: { since: "1.4.0", category: p5, type: "int", default: -1, range: { start: -1, end: Number.POSITIVE_INFINITY, step: 1 }, description: t2`
      Print (to stderr) where a cursor at the given position would move to after formatting.
      This option cannot be used with --range-start and --range-end.
    `, cliCategory: a2 }, endOfLine: { since: "1.15.0", category: l, type: "choice", default: [{ since: "1.15.0", value: "auto" }, { since: "2.0.0", value: "lf" }], description: "Which end of line characters to apply.", choices: [{ value: "lf", description: "Line Feed only (\\n), common on Linux and macOS as well as inside git repos" }, { value: "crlf", description: "Carriage Return + Line Feed characters (\\r\\n), common on Windows" }, { value: "cr", description: "Carriage Return character only (\\r), used very rarely" }, { value: "auto", description: t2`
          Maintain existing
          (mixed values within one file are normalised by looking at what's used after the first line)
        ` }] }, filepath: { since: "1.4.0", category: p5, type: "path", description: "Specify the input filepath. This will be used to do parser inference.", cliName: "stdin-filepath", cliCategory: u3, cliDescription: "Path to the file to pretend that stdin comes from." }, insertPragma: { since: "1.8.0", category: p5, type: "boolean", default: false, description: "Insert @format pragma into file's first docblock comment.", cliCategory: u3 }, parser: { since: "0.0.10", category: l, type: "choice", default: [{ since: "0.0.10", value: "babylon" }, { since: "1.13.0", value: void 0 }], description: "Which parser to use.", exception: (y) => typeof y == "string" || typeof y == "function", choices: [{ value: "flow", description: "Flow" }, { value: "babel", since: "1.16.0", description: "JavaScript" }, { value: "babel-flow", since: "1.16.0", description: "Flow" }, { value: "babel-ts", since: "2.0.0", description: "TypeScript" }, { value: "typescript", since: "1.4.0", description: "TypeScript" }, { value: "acorn", since: "2.6.0", description: "JavaScript" }, { value: "espree", since: "2.2.0", description: "JavaScript" }, { value: "meriyah", since: "2.2.0", description: "JavaScript" }, { value: "css", since: "1.7.1", description: "CSS" }, { value: "less", since: "1.7.1", description: "Less" }, { value: "scss", since: "1.7.1", description: "SCSS" }, { value: "json", since: "1.5.0", description: "JSON" }, { value: "json5", since: "1.13.0", description: "JSON5" }, { value: "json-stringify", since: "1.13.0", description: "JSON.stringify" }, { value: "graphql", since: "1.5.0", description: "GraphQL" }, { value: "markdown", since: "1.8.0", description: "Markdown" }, { value: "mdx", since: "1.15.0", description: "MDX" }, { value: "vue", since: "1.10.0", description: "Vue" }, { value: "yaml", since: "1.14.0", description: "YAML" }, { value: "glimmer", since: "2.3.0", description: "Ember / Handlebars" }, { value: "html", since: "1.15.0", description: "HTML" }, { value: "angular", since: "1.15.0", description: "Angular" }, { value: "lwc", since: "1.17.0", description: "Lightning Web Components" }] }, plugins: { since: "1.10.0", type: "path", array: true, default: [{ value: [] }], category: l, description: "Add a plugin. Multiple plugins can be passed as separate `--plugin`s.", exception: (y) => typeof y == "string" || typeof y == "object", cliName: "plugin", cliCategory: s5 }, pluginSearchDirs: { since: "1.13.0", type: "path", array: true, default: [{ value: [] }], category: l, description: t2`
      Custom directory that contains prettier plugins in node_modules subdirectory.
      Overrides default behavior when plugins are searched relatively to the location of Prettier.
      Multiple values are accepted.
    `, exception: (y) => typeof y == "string" || typeof y == "object", cliName: "plugin-search-dir", cliCategory: s5 }, printWidth: { since: "0.0.0", category: l, type: "int", default: 80, description: "The line length where Prettier will try wrap.", range: { start: 0, end: Number.POSITIVE_INFINITY, step: 1 } }, rangeEnd: { since: "1.4.0", category: p5, type: "int", default: Number.POSITIVE_INFINITY, range: { start: 0, end: Number.POSITIVE_INFINITY, step: 1 }, description: t2`
      Format code ending at a given character offset (exclusive).
      The range will extend forwards to the end of the selected statement.
      This option cannot be used with --cursor-offset.
    `, cliCategory: a2 }, rangeStart: { since: "1.4.0", category: p5, type: "int", default: 0, range: { start: 0, end: Number.POSITIVE_INFINITY, step: 1 }, description: t2`
      Format code starting at a given character offset.
      The range will extend backwards to the start of the first line containing the selected statement.
      This option cannot be used with --cursor-offset.
    `, cliCategory: a2 }, requirePragma: { since: "1.7.0", category: p5, type: "boolean", default: false, description: t2`
      Require either '@prettier' or '@format' to be present in the file's first docblock comment
      in order for it to be formatted.
    `, cliCategory: u3 }, tabWidth: { type: "int", category: l, default: 2, description: "Number of spaces per indentation level.", range: { start: 0, end: Number.POSITIVE_INFINITY, step: 1 } }, useTabs: { since: "1.0.0", category: l, type: "boolean", default: false, description: "Indent with tabs instead of spaces." }, embeddedLanguageFormatting: { since: "2.1.0", category: l, type: "choice", default: [{ since: "2.1.0", value: "auto" }], description: "Control how Prettier formats quoted code embedded in the file.", choices: [{ value: "auto", description: "Format embedded code if Prettier can automatically identify it." }, { value: "off", description: "Never automatically format embedded code." }] } };
          r2.exports = { CATEGORY_CONFIG: s5, CATEGORY_EDITOR: a2, CATEGORY_FORMAT: n, CATEGORY_OTHER: u3, CATEGORY_OUTPUT: i2, CATEGORY_GLOBAL: l, CATEGORY_SPECIAL: p5, options: d };
        } }), Xn = te({ "src/main/support.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = { compare: zn(), lt: UD(), gte: JD() }, s5 = zD(), a2 = Ia().version, n = KD().options;
          function u3() {
            let { plugins: l = [], showUnreleased: p5 = false, showDeprecated: d = false, showInternal: y = false } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, g = a2.split("-", 1)[0], c = l.flatMap((F2) => F2.languages || []).filter(E), D2 = s5(Object.assign({}, ...l.map((F2) => {
              let { options: S3 } = F2;
              return S3;
            }), n), "name").filter((F2) => E(F2) && _2(F2)).sort((F2, S3) => F2.name === S3.name ? 0 : F2.name < S3.name ? -1 : 1).map(w).map((F2) => {
              F2 = Object.assign({}, F2), Array.isArray(F2.default) && (F2.default = F2.default.length === 1 ? F2.default[0].value : F2.default.filter(E).sort((N, I) => t2.compare(I.since, N.since))[0].value), Array.isArray(F2.choices) && (F2.choices = F2.choices.filter((N) => E(N) && _2(N)), F2.name === "parser" && i2(F2, c, l));
              let S3 = Object.fromEntries(l.filter((N) => N.defaultOptions && N.defaultOptions[F2.name] !== void 0).map((N) => [N.name, N.defaultOptions[F2.name]]));
              return Object.assign(Object.assign({}, F2), {}, { pluginDefaults: S3 });
            });
            return { languages: c, options: D2 };
            function E(F2) {
              return p5 || !("since" in F2) || F2.since && t2.gte(g, F2.since);
            }
            function _2(F2) {
              return d || !("deprecated" in F2) || F2.deprecated && t2.lt(g, F2.deprecated);
            }
            function w(F2) {
              if (y)
                return F2;
              let { cliName: S3, cliCategory: N, cliDescription: I } = F2;
              return Hn(F2, hD);
            }
          }
          function i2(l, p5, d) {
            let y = new Set(l.choices.map((g) => g.value));
            for (let g of p5)
              if (g.parsers) {
                for (let c of g.parsers)
                  if (!y.has(c)) {
                    y.add(c);
                    let D2 = d.find((_2) => _2.parsers && _2.parsers[c]), E = g.name;
                    D2 && D2.name && (E += ` (plugin: ${D2.name})`), l.choices.push({ value: c, description: E });
                  }
              }
          }
          r2.exports = { getSupportInfo: u3 };
        } }), Kn = te({ "src/utils/is-non-empty-array.js"(e2, r2) {
          "use strict";
          ne();
          function t2(s5) {
            return Array.isArray(s5) && s5.length > 0;
          }
          r2.exports = t2;
        } }), Pr = te({ "src/utils/text/skip.js"(e2, r2) {
          "use strict";
          ne();
          function t2(i2) {
            return (l, p5, d) => {
              let y = d && d.backwards;
              if (p5 === false)
                return false;
              let { length: g } = l, c = p5;
              for (; c >= 0 && c < g; ) {
                let D2 = l.charAt(c);
                if (i2 instanceof RegExp) {
                  if (!i2.test(D2))
                    return c;
                } else if (!i2.includes(D2))
                  return c;
                y ? c-- : c++;
              }
              return c === -1 || c === g ? c : false;
            };
          }
          var s5 = t2(/\s/), a2 = t2(" 	"), n = t2(",; 	"), u3 = t2(/[^\n\r]/);
          r2.exports = { skipWhitespace: s5, skipSpaces: a2, skipToLineEnd: n, skipEverythingButNewLine: u3 };
        } }), Ra = te({ "src/utils/text/skip-inline-comment.js"(e2, r2) {
          "use strict";
          ne();
          function t2(s5, a2) {
            if (a2 === false)
              return false;
            if (s5.charAt(a2) === "/" && s5.charAt(a2 + 1) === "*") {
              for (let n = a2 + 2; n < s5.length; ++n)
                if (s5.charAt(n) === "*" && s5.charAt(n + 1) === "/")
                  return n + 2;
            }
            return a2;
          }
          r2.exports = t2;
        } }), $a = te({ "src/utils/text/skip-trailing-comment.js"(e2, r2) {
          "use strict";
          ne();
          var { skipEverythingButNewLine: t2 } = Pr();
          function s5(a2, n) {
            return n === false ? false : a2.charAt(n) === "/" && a2.charAt(n + 1) === "/" ? t2(a2, n) : n;
          }
          r2.exports = s5;
        } }), Va = te({ "src/utils/text/skip-newline.js"(e2, r2) {
          "use strict";
          ne();
          function t2(s5, a2, n) {
            let u3 = n && n.backwards;
            if (a2 === false)
              return false;
            let i2 = s5.charAt(a2);
            if (u3) {
              if (s5.charAt(a2 - 1) === "\r" && i2 === `
`)
                return a2 - 2;
              if (i2 === `
` || i2 === "\r" || i2 === "\u2028" || i2 === "\u2029")
                return a2 - 1;
            } else {
              if (i2 === "\r" && s5.charAt(a2 + 1) === `
`)
                return a2 + 2;
              if (i2 === `
` || i2 === "\r" || i2 === "\u2028" || i2 === "\u2029")
                return a2 + 1;
            }
            return a2;
          }
          r2.exports = t2;
        } }), YD = te({ "src/utils/text/get-next-non-space-non-comment-character-index-with-start-index.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Ra(), s5 = Va(), a2 = $a(), { skipSpaces: n } = Pr();
          function u3(i2, l) {
            let p5 = null, d = l;
            for (; d !== p5; )
              p5 = d, d = n(i2, d), d = t2(i2, d), d = a2(i2, d), d = s5(i2, d);
            return d;
          }
          r2.exports = u3;
        } }), Ue = te({ "src/common/util.js"(e2, r2) {
          "use strict";
          ne();
          var { default: t2 } = ($D(), ft(ja)), s5 = lt(), { getSupportInfo: a2 } = Xn(), n = Kn(), u3 = Oa(), { skipWhitespace: i2, skipSpaces: l, skipToLineEnd: p5, skipEverythingButNewLine: d } = Pr(), y = Ra(), g = $a(), c = Va(), D2 = YD(), E = (V) => V[V.length - 2];
          function _2(V) {
            return (j, Y, ie) => {
              let ee = ie && ie.backwards;
              if (Y === false)
                return false;
              let { length: le } = j, W = Y;
              for (; W >= 0 && W < le; ) {
                let K = j.charAt(W);
                if (V instanceof RegExp) {
                  if (!V.test(K))
                    return W;
                } else if (!V.includes(K))
                  return W;
                ee ? W-- : W++;
              }
              return W === -1 || W === le ? W : false;
            };
          }
          function w(V, j) {
            let Y = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, ie = l(V, Y.backwards ? j - 1 : j, Y), ee = c(V, ie, Y);
            return ie !== ee;
          }
          function F2(V, j, Y) {
            for (let ie = j; ie < Y; ++ie)
              if (V.charAt(ie) === `
`)
                return true;
            return false;
          }
          function S3(V, j, Y) {
            let ie = Y(j) - 1;
            ie = l(V, ie, { backwards: true }), ie = c(V, ie, { backwards: true }), ie = l(V, ie, { backwards: true });
            let ee = c(V, ie, { backwards: true });
            return ie !== ee;
          }
          function N(V, j) {
            let Y = null, ie = j;
            for (; ie !== Y; )
              Y = ie, ie = p5(V, ie), ie = y(V, ie), ie = l(V, ie);
            return ie = g(V, ie), ie = c(V, ie), ie !== false && w(V, ie);
          }
          function I(V, j, Y) {
            return N(V, Y(j));
          }
          function P(V, j, Y) {
            return D2(V, Y(j));
          }
          function $2(V, j, Y) {
            return V.charAt(P(V, j, Y));
          }
          function f3(V, j) {
            let Y = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
            return l(V, Y.backwards ? j - 1 : j, Y) !== j;
          }
          function T2(V, j) {
            let Y = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0, ie = 0;
            for (let ee = Y; ee < V.length; ++ee)
              V[ee] === "	" ? ie = ie + j - ie % j : ie++;
            return ie;
          }
          function m2(V, j) {
            let Y = V.lastIndexOf(`
`);
            return Y === -1 ? 0 : T2(V.slice(Y + 1).match(/^[\t ]*/)[0], j);
          }
          function v(V, j) {
            let Y = { quote: '"', regex: /"/g, escaped: "&quot;" }, ie = { quote: "'", regex: /'/g, escaped: "&apos;" }, ee = j === "'" ? ie : Y, le = ee === ie ? Y : ie, W = ee;
            if (V.includes(ee.quote) || V.includes(le.quote)) {
              let K = (V.match(ee.regex) || []).length, de = (V.match(le.regex) || []).length;
              W = K > de ? le : ee;
            }
            return W;
          }
          function o(V, j) {
            let Y = V.slice(1, -1), ie = j.parser === "json" || j.parser === "json5" && j.quoteProps === "preserve" && !j.singleQuote ? '"' : j.__isInHtmlAttribute ? "'" : v(Y, j.singleQuote ? "'" : '"').quote;
            return h4(Y, ie, !(j.parser === "css" || j.parser === "less" || j.parser === "scss" || j.__embeddedInHtml));
          }
          function h4(V, j, Y) {
            let ie = j === '"' ? "'" : '"', ee = /\\(.)|(["'])/gs, le = V.replace(ee, (W, K, de) => K === ie ? K : de === j ? "\\" + de : de || (Y && /^[^\n\r"'0-7\\bfnrt-vx\u2028\u2029]$/.test(K) ? K : "\\" + K));
            return j + le + j;
          }
          function C(V) {
            return V.toLowerCase().replace(/^([+-]?[\d.]+e)(?:\+|(-))?0*(\d)/, "$1$2$3").replace(/^([+-]?[\d.]+)e[+-]?0+$/, "$1").replace(/^([+-])?\./, "$10.").replace(/(\.\d+?)0+(?=e|$)/, "$1").replace(/\.(?=e|$)/, "");
          }
          function x2(V, j) {
            let Y = V.match(new RegExp(`(${t2(j)})+`, "g"));
            return Y === null ? 0 : Y.reduce((ie, ee) => Math.max(ie, ee.length / j.length), 0);
          }
          function b(V, j) {
            let Y = V.match(new RegExp(`(${t2(j)})+`, "g"));
            if (Y === null)
              return 0;
            let ie = /* @__PURE__ */ new Map(), ee = 0;
            for (let le of Y) {
              let W = le.length / j.length;
              ie.set(W, true), W > ee && (ee = W);
            }
            for (let le = 1; le < ee; le++)
              if (!ie.get(le))
                return le;
            return ee + 1;
          }
          function B(V, j) {
            (V.comments || (V.comments = [])).push(j), j.printed = false, j.nodeDescription = Q(V);
          }
          function k(V, j) {
            j.leading = true, j.trailing = false, B(V, j);
          }
          function M(V, j, Y) {
            j.leading = false, j.trailing = false, Y && (j.marker = Y), B(V, j);
          }
          function R(V, j) {
            j.leading = false, j.trailing = true, B(V, j);
          }
          function q2(V, j) {
            let { languages: Y } = a2({ plugins: j.plugins }), ie = Y.find((ee) => {
              let { name: le } = ee;
              return le.toLowerCase() === V;
            }) || Y.find((ee) => {
              let { aliases: le } = ee;
              return Array.isArray(le) && le.includes(V);
            }) || Y.find((ee) => {
              let { extensions: le } = ee;
              return Array.isArray(le) && le.includes(`.${V}`);
            });
            return ie && ie.parsers[0];
          }
          function J(V) {
            return V && V.type === "front-matter";
          }
          function L(V) {
            let j = /* @__PURE__ */ new WeakMap();
            return function(Y) {
              return j.has(Y) || j.set(Y, Symbol(V)), j.get(Y);
            };
          }
          function Q(V) {
            let j = V.type || V.kind || "(unknown type)", Y = String(V.name || V.id && (typeof V.id == "object" ? V.id.name : V.id) || V.key && (typeof V.key == "object" ? V.key.name : V.key) || V.value && (typeof V.value == "object" ? "" : String(V.value)) || V.operator || "");
            return Y.length > 20 && (Y = Y.slice(0, 19) + "\u2026"), j + (Y ? " " + Y : "");
          }
          r2.exports = { inferParserByLanguage: q2, getStringWidth: u3, getMaxContinuousCount: x2, getMinNotPresentContinuousCount: b, getPenultimate: E, getLast: s5, getNextNonSpaceNonCommentCharacterIndexWithStartIndex: D2, getNextNonSpaceNonCommentCharacterIndex: P, getNextNonSpaceNonCommentCharacter: $2, skip: _2, skipWhitespace: i2, skipSpaces: l, skipToLineEnd: p5, skipEverythingButNewLine: d, skipInlineComment: y, skipTrailingComment: g, skipNewline: c, isNextLineEmptyAfterIndex: N, isNextLineEmpty: I, isPreviousLineEmpty: S3, hasNewline: w, hasNewlineInRange: F2, hasSpaces: f3, getAlignmentSize: T2, getIndentSize: m2, getPreferredQuote: v, printString: o, printNumber: C, makeString: h4, addLeadingComment: k, addDanglingComment: M, addTrailingComment: R, isFrontMatterNode: J, isNonEmptyArray: n, createGroupIdMapper: L };
        } }), Wa = {};
        Kt(Wa, { basename: () => za, default: () => Ka, delimiter: () => Mn, dirname: () => Ja, extname: () => Xa, isAbsolute: () => Qn, join: () => Ga, normalize: () => Yn, relative: () => Ua, resolve: () => wr, sep: () => qn });
        function Ha(e2, r2) {
          for (var t2 = 0, s5 = e2.length - 1; s5 >= 0; s5--) {
            var a2 = e2[s5];
            a2 === "." ? e2.splice(s5, 1) : a2 === ".." ? (e2.splice(s5, 1), t2++) : t2 && (e2.splice(s5, 1), t2--);
          }
          if (r2)
            for (; t2--; t2)
              e2.unshift("..");
          return e2;
        }
        function wr() {
          for (var e2 = "", r2 = false, t2 = arguments.length - 1; t2 >= -1 && !r2; t2--) {
            var s5 = t2 >= 0 ? arguments[t2] : "/";
            if (typeof s5 != "string")
              throw new TypeError("Arguments to path.resolve must be strings");
            if (!s5)
              continue;
            e2 = s5 + "/" + e2, r2 = s5.charAt(0) === "/";
          }
          return e2 = Ha(Zn(e2.split("/"), function(a2) {
            return !!a2;
          }), !r2).join("/"), (r2 ? "/" : "") + e2 || ".";
        }
        function Yn(e2) {
          var r2 = Qn(e2), t2 = Ya(e2, -1) === "/";
          return e2 = Ha(Zn(e2.split("/"), function(s5) {
            return !!s5;
          }), !r2).join("/"), !e2 && !r2 && (e2 = "."), e2 && t2 && (e2 += "/"), (r2 ? "/" : "") + e2;
        }
        function Qn(e2) {
          return e2.charAt(0) === "/";
        }
        function Ga() {
          var e2 = Array.prototype.slice.call(arguments, 0);
          return Yn(Zn(e2, function(r2, t2) {
            if (typeof r2 != "string")
              throw new TypeError("Arguments to path.join must be strings");
            return r2;
          }).join("/"));
        }
        function Ua(e2, r2) {
          e2 = wr(e2).substr(1), r2 = wr(r2).substr(1);
          function t2(p5) {
            for (var d = 0; d < p5.length && p5[d] === ""; d++)
              ;
            for (var y = p5.length - 1; y >= 0 && p5[y] === ""; y--)
              ;
            return d > y ? [] : p5.slice(d, y - d + 1);
          }
          for (var s5 = t2(e2.split("/")), a2 = t2(r2.split("/")), n = Math.min(s5.length, a2.length), u3 = n, i2 = 0; i2 < n; i2++)
            if (s5[i2] !== a2[i2]) {
              u3 = i2;
              break;
            }
          for (var l = [], i2 = u3; i2 < s5.length; i2++)
            l.push("..");
          return l = l.concat(a2.slice(u3)), l.join("/");
        }
        function Ja(e2) {
          var r2 = Ir(e2), t2 = r2[0], s5 = r2[1];
          return !t2 && !s5 ? "." : (s5 && (s5 = s5.substr(0, s5.length - 1)), t2 + s5);
        }
        function za(e2, r2) {
          var t2 = Ir(e2)[2];
          return r2 && t2.substr(-1 * r2.length) === r2 && (t2 = t2.substr(0, t2.length - r2.length)), t2;
        }
        function Xa(e2) {
          return Ir(e2)[3];
        }
        function Zn(e2, r2) {
          if (e2.filter)
            return e2.filter(r2);
          for (var t2 = [], s5 = 0; s5 < e2.length; s5++)
            r2(e2[s5], s5, e2) && t2.push(e2[s5]);
          return t2;
        }
        var Na, Ir, qn, Mn, Ka, Ya, QD = ht({ "node-modules-polyfills:path"() {
          ne(), Na = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/, Ir = function(e2) {
            return Na.exec(e2).slice(1);
          }, qn = "/", Mn = ":", Ka = { extname: Xa, basename: za, dirname: Ja, sep: qn, delimiter: Mn, relative: Ua, join: Ga, isAbsolute: Qn, normalize: Yn, resolve: wr }, Ya = "ab".substr(-1) === "b" ? function(e2, r2, t2) {
            return e2.substr(r2, t2);
          } : function(e2, r2, t2) {
            return r2 < 0 && (r2 = e2.length + r2), e2.substr(r2, t2);
          };
        } }), ZD = te({ "node-modules-polyfills-commonjs:path"(e2, r2) {
          ne();
          var t2 = (QD(), ft(Wa));
          if (t2 && t2.default) {
            r2.exports = t2.default;
            for (let s5 in t2)
              r2.exports[s5] = t2[s5];
          } else
            t2 && (r2.exports = t2);
        } }), Qt = te({ "src/common/errors.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = class extends Error {
          }, s5 = class extends Error {
          }, a2 = class extends Error {
          }, n = class extends Error {
          };
          r2.exports = { ConfigError: t2, DebugError: s5, UndefinedParserError: a2, ArgExpansionBailout: n };
        } }), vt = {};
        Kt(vt, { __assign: () => Nr, __asyncDelegator: () => fm, __asyncGenerator: () => pm, __asyncValues: () => Dm, __await: () => Xt, __awaiter: () => sm, __classPrivateFieldGet: () => ym, __classPrivateFieldSet: () => hm, __createBinding: () => am, __decorate: () => rm, __exportStar: () => om, __extends: () => em2, __generator: () => im, __importDefault: () => gm, __importStar: () => dm, __makeTemplateObject: () => mm, __metadata: () => um, __param: () => nm, __read: () => Qa, __rest: () => tm, __spread: () => lm, __spreadArrays: () => cm, __values: () => Rn });
        function em2(e2, r2) {
          Br(e2, r2);
          function t2() {
            this.constructor = e2;
          }
          e2.prototype = r2 === null ? Object.create(r2) : (t2.prototype = r2.prototype, new t2());
        }
        function tm(e2, r2) {
          var t2 = {};
          for (var s5 in e2)
            Object.prototype.hasOwnProperty.call(e2, s5) && r2.indexOf(s5) < 0 && (t2[s5] = e2[s5]);
          if (e2 != null && typeof Object.getOwnPropertySymbols == "function")
            for (var a2 = 0, s5 = Object.getOwnPropertySymbols(e2); a2 < s5.length; a2++)
              r2.indexOf(s5[a2]) < 0 && Object.prototype.propertyIsEnumerable.call(e2, s5[a2]) && (t2[s5[a2]] = e2[s5[a2]]);
          return t2;
        }
        function rm(e2, r2, t2, s5) {
          var a2 = arguments.length, n = a2 < 3 ? r2 : s5 === null ? s5 = Object.getOwnPropertyDescriptor(r2, t2) : s5, u3;
          if (typeof Reflect == "object" && typeof Reflect.decorate == "function")
            n = Reflect.decorate(e2, r2, t2, s5);
          else
            for (var i2 = e2.length - 1; i2 >= 0; i2--)
              (u3 = e2[i2]) && (n = (a2 < 3 ? u3(n) : a2 > 3 ? u3(r2, t2, n) : u3(r2, t2)) || n);
          return a2 > 3 && n && Object.defineProperty(r2, t2, n), n;
        }
        function nm(e2, r2) {
          return function(t2, s5) {
            r2(t2, s5, e2);
          };
        }
        function um(e2, r2) {
          if (typeof Reflect == "object" && typeof Reflect.metadata == "function")
            return Reflect.metadata(e2, r2);
        }
        function sm(e2, r2, t2, s5) {
          function a2(n) {
            return n instanceof t2 ? n : new t2(function(u3) {
              u3(n);
            });
          }
          return new (t2 || (t2 = Promise))(function(n, u3) {
            function i2(d) {
              try {
                p5(s5.next(d));
              } catch (y) {
                u3(y);
              }
            }
            function l(d) {
              try {
                p5(s5.throw(d));
              } catch (y) {
                u3(y);
              }
            }
            function p5(d) {
              d.done ? n(d.value) : a2(d.value).then(i2, l);
            }
            p5((s5 = s5.apply(e2, r2 || [])).next());
          });
        }
        function im(e2, r2) {
          var t2 = { label: 0, sent: function() {
            if (n[0] & 1)
              throw n[1];
            return n[1];
          }, trys: [], ops: [] }, s5, a2, n, u3;
          return u3 = { next: i2(0), throw: i2(1), return: i2(2) }, typeof Symbol == "function" && (u3[Symbol.iterator] = function() {
            return this;
          }), u3;
          function i2(p5) {
            return function(d) {
              return l([p5, d]);
            };
          }
          function l(p5) {
            if (s5)
              throw new TypeError("Generator is already executing.");
            for (; t2; )
              try {
                if (s5 = 1, a2 && (n = p5[0] & 2 ? a2.return : p5[0] ? a2.throw || ((n = a2.return) && n.call(a2), 0) : a2.next) && !(n = n.call(a2, p5[1])).done)
                  return n;
                switch (a2 = 0, n && (p5 = [p5[0] & 2, n.value]), p5[0]) {
                  case 0:
                  case 1:
                    n = p5;
                    break;
                  case 4:
                    return t2.label++, { value: p5[1], done: false };
                  case 5:
                    t2.label++, a2 = p5[1], p5 = [0];
                    continue;
                  case 7:
                    p5 = t2.ops.pop(), t2.trys.pop();
                    continue;
                  default:
                    if (n = t2.trys, !(n = n.length > 0 && n[n.length - 1]) && (p5[0] === 6 || p5[0] === 2)) {
                      t2 = 0;
                      continue;
                    }
                    if (p5[0] === 3 && (!n || p5[1] > n[0] && p5[1] < n[3])) {
                      t2.label = p5[1];
                      break;
                    }
                    if (p5[0] === 6 && t2.label < n[1]) {
                      t2.label = n[1], n = p5;
                      break;
                    }
                    if (n && t2.label < n[2]) {
                      t2.label = n[2], t2.ops.push(p5);
                      break;
                    }
                    n[2] && t2.ops.pop(), t2.trys.pop();
                    continue;
                }
                p5 = r2.call(e2, t2);
              } catch (d) {
                p5 = [6, d], a2 = 0;
              } finally {
                s5 = n = 0;
              }
            if (p5[0] & 5)
              throw p5[1];
            return { value: p5[0] ? p5[1] : void 0, done: true };
          }
        }
        function am(e2, r2, t2, s5) {
          s5 === void 0 && (s5 = t2), e2[s5] = r2[t2];
        }
        function om(e2, r2) {
          for (var t2 in e2)
            t2 !== "default" && !r2.hasOwnProperty(t2) && (r2[t2] = e2[t2]);
        }
        function Rn(e2) {
          var r2 = typeof Symbol == "function" && Symbol.iterator, t2 = r2 && e2[r2], s5 = 0;
          if (t2)
            return t2.call(e2);
          if (e2 && typeof e2.length == "number")
            return { next: function() {
              return e2 && s5 >= e2.length && (e2 = void 0), { value: e2 && e2[s5++], done: !e2 };
            } };
          throw new TypeError(r2 ? "Object is not iterable." : "Symbol.iterator is not defined.");
        }
        function Qa(e2, r2) {
          var t2 = typeof Symbol == "function" && e2[Symbol.iterator];
          if (!t2)
            return e2;
          var s5 = t2.call(e2), a2, n = [], u3;
          try {
            for (; (r2 === void 0 || r2-- > 0) && !(a2 = s5.next()).done; )
              n.push(a2.value);
          } catch (i2) {
            u3 = { error: i2 };
          } finally {
            try {
              a2 && !a2.done && (t2 = s5.return) && t2.call(s5);
            } finally {
              if (u3)
                throw u3.error;
            }
          }
          return n;
        }
        function lm() {
          for (var e2 = [], r2 = 0; r2 < arguments.length; r2++)
            e2 = e2.concat(Qa(arguments[r2]));
          return e2;
        }
        function cm() {
          for (var e2 = 0, r2 = 0, t2 = arguments.length; r2 < t2; r2++)
            e2 += arguments[r2].length;
          for (var s5 = Array(e2), a2 = 0, r2 = 0; r2 < t2; r2++)
            for (var n = arguments[r2], u3 = 0, i2 = n.length; u3 < i2; u3++, a2++)
              s5[a2] = n[u3];
          return s5;
        }
        function Xt(e2) {
          return this instanceof Xt ? (this.v = e2, this) : new Xt(e2);
        }
        function pm(e2, r2, t2) {
          if (!Symbol.asyncIterator)
            throw new TypeError("Symbol.asyncIterator is not defined.");
          var s5 = t2.apply(e2, r2 || []), a2, n = [];
          return a2 = {}, u3("next"), u3("throw"), u3("return"), a2[Symbol.asyncIterator] = function() {
            return this;
          }, a2;
          function u3(g) {
            s5[g] && (a2[g] = function(c) {
              return new Promise(function(D2, E) {
                n.push([g, c, D2, E]) > 1 || i2(g, c);
              });
            });
          }
          function i2(g, c) {
            try {
              l(s5[g](c));
            } catch (D2) {
              y(n[0][3], D2);
            }
          }
          function l(g) {
            g.value instanceof Xt ? Promise.resolve(g.value.v).then(p5, d) : y(n[0][2], g);
          }
          function p5(g) {
            i2("next", g);
          }
          function d(g) {
            i2("throw", g);
          }
          function y(g, c) {
            g(c), n.shift(), n.length && i2(n[0][0], n[0][1]);
          }
        }
        function fm(e2) {
          var r2, t2;
          return r2 = {}, s5("next"), s5("throw", function(a2) {
            throw a2;
          }), s5("return"), r2[Symbol.iterator] = function() {
            return this;
          }, r2;
          function s5(a2, n) {
            r2[a2] = e2[a2] ? function(u3) {
              return (t2 = !t2) ? { value: Xt(e2[a2](u3)), done: a2 === "return" } : n ? n(u3) : u3;
            } : n;
          }
        }
        function Dm(e2) {
          if (!Symbol.asyncIterator)
            throw new TypeError("Symbol.asyncIterator is not defined.");
          var r2 = e2[Symbol.asyncIterator], t2;
          return r2 ? r2.call(e2) : (e2 = typeof Rn == "function" ? Rn(e2) : e2[Symbol.iterator](), t2 = {}, s5("next"), s5("throw"), s5("return"), t2[Symbol.asyncIterator] = function() {
            return this;
          }, t2);
          function s5(n) {
            t2[n] = e2[n] && function(u3) {
              return new Promise(function(i2, l) {
                u3 = e2[n](u3), a2(i2, l, u3.done, u3.value);
              });
            };
          }
          function a2(n, u3, i2, l) {
            Promise.resolve(l).then(function(p5) {
              n({ value: p5, done: i2 });
            }, u3);
          }
        }
        function mm(e2, r2) {
          return Object.defineProperty ? Object.defineProperty(e2, "raw", { value: r2 }) : e2.raw = r2, e2;
        }
        function dm(e2) {
          if (e2 && e2.__esModule)
            return e2;
          var r2 = {};
          if (e2 != null)
            for (var t2 in e2)
              Object.hasOwnProperty.call(e2, t2) && (r2[t2] = e2[t2]);
          return r2.default = e2, r2;
        }
        function gm(e2) {
          return e2 && e2.__esModule ? e2 : { default: e2 };
        }
        function ym(e2, r2) {
          if (!r2.has(e2))
            throw new TypeError("attempted to get private field on non-instance");
          return r2.get(e2);
        }
        function hm(e2, r2, t2) {
          if (!r2.has(e2))
            throw new TypeError("attempted to set private field on non-instance");
          return r2.set(e2, t2), t2;
        }
        var Br, Nr, Et = ht({ "node_modules/tslib/tslib.es6.js"() {
          ne(), Br = function(e2, r2) {
            return Br = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(t2, s5) {
              t2.__proto__ = s5;
            } || function(t2, s5) {
              for (var a2 in s5)
                s5.hasOwnProperty(a2) && (t2[a2] = s5[a2]);
            }, Br(e2, r2);
          }, Nr = function() {
            return Nr = Object.assign || function(r2) {
              for (var t2, s5 = 1, a2 = arguments.length; s5 < a2; s5++) {
                t2 = arguments[s5];
                for (var n in t2)
                  Object.prototype.hasOwnProperty.call(t2, n) && (r2[n] = t2[n]);
              }
              return r2;
            }, Nr.apply(this, arguments);
          };
        } }), Za = te({ "node_modules/vnopts/lib/descriptors/api.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true }), e2.apiDescriptor = { key: (r2) => /^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(r2) ? r2 : JSON.stringify(r2), value(r2) {
            if (r2 === null || typeof r2 != "object")
              return JSON.stringify(r2);
            if (Array.isArray(r2))
              return `[${r2.map((s5) => e2.apiDescriptor.value(s5)).join(", ")}]`;
            let t2 = Object.keys(r2);
            return t2.length === 0 ? "{}" : `{ ${t2.map((s5) => `${e2.apiDescriptor.key(s5)}: ${e2.apiDescriptor.value(r2[s5])}`).join(", ")} }`;
          }, pair: (r2) => {
            let { key: t2, value: s5 } = r2;
            return e2.apiDescriptor.value({ [t2]: s5 });
          } };
        } }), vm = te({ "node_modules/vnopts/lib/descriptors/index.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = (Et(), ft(vt));
          r2.__exportStar(Za(), e2);
        } }), kr = te({ "scripts/build/shims/chalk.cjs"(e2, r2) {
          "use strict";
          ne();
          var t2 = (s5) => s5;
          t2.grey = t2, t2.red = t2, t2.bold = t2, t2.yellow = t2, t2.blue = t2, t2.default = t2, r2.exports = t2;
        } }), eo = te({ "node_modules/vnopts/lib/handlers/deprecated/common.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = kr();
          e2.commonDeprecatedHandler = (t2, s5, a2) => {
            let { descriptor: n } = a2, u3 = [`${r2.default.yellow(typeof t2 == "string" ? n.key(t2) : n.pair(t2))} is deprecated`];
            return s5 && u3.push(`we now treat it as ${r2.default.blue(typeof s5 == "string" ? n.key(s5) : n.pair(s5))}`), u3.join("; ") + ".";
          };
        } }), Cm = te({ "node_modules/vnopts/lib/handlers/deprecated/index.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = (Et(), ft(vt));
          r2.__exportStar(eo(), e2);
        } }), Em = te({ "node_modules/vnopts/lib/handlers/invalid/common.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = kr();
          e2.commonInvalidHandler = (t2, s5, a2) => [`Invalid ${r2.default.red(a2.descriptor.key(t2))} value.`, `Expected ${r2.default.blue(a2.schemas[t2].expected(a2))},`, `but received ${r2.default.red(a2.descriptor.value(s5))}.`].join(" ");
        } }), to = te({ "node_modules/vnopts/lib/handlers/invalid/index.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = (Et(), ft(vt));
          r2.__exportStar(Em(), e2);
        } }), Fm = te({ "node_modules/vnopts/node_modules/leven/index.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = [], s5 = [];
          r2.exports = function(a2, n) {
            if (a2 === n)
              return 0;
            var u3 = a2;
            a2.length > n.length && (a2 = n, n = u3);
            var i2 = a2.length, l = n.length;
            if (i2 === 0)
              return l;
            if (l === 0)
              return i2;
            for (; i2 > 0 && a2.charCodeAt(~-i2) === n.charCodeAt(~-l); )
              i2--, l--;
            if (i2 === 0)
              return l;
            for (var p5 = 0; p5 < i2 && a2.charCodeAt(p5) === n.charCodeAt(p5); )
              p5++;
            if (i2 -= p5, l -= p5, i2 === 0)
              return l;
            for (var d, y, g, c, D2 = 0, E = 0; D2 < i2; )
              s5[p5 + D2] = a2.charCodeAt(p5 + D2), t2[D2] = ++D2;
            for (; E < l; )
              for (d = n.charCodeAt(p5 + E), g = E++, y = E, D2 = 0; D2 < i2; D2++)
                c = d === s5[p5 + D2] ? g : g + 1, g = t2[D2], y = t2[D2] = g > y ? c > y ? y + 1 : c : c > g ? g + 1 : c;
            return y;
          };
        } }), ro = te({ "node_modules/vnopts/lib/handlers/unknown/leven.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = kr(), t2 = Fm();
          e2.levenUnknownHandler = (s5, a2, n) => {
            let { descriptor: u3, logger: i2, schemas: l } = n, p5 = [`Ignored unknown option ${r2.default.yellow(u3.pair({ key: s5, value: a2 }))}.`], d = Object.keys(l).sort().find((y) => t2(s5, y) < 3);
            d && p5.push(`Did you mean ${r2.default.blue(u3.key(d))}?`), i2.warn(p5.join(" "));
          };
        } }), Am = te({ "node_modules/vnopts/lib/handlers/unknown/index.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = (Et(), ft(vt));
          r2.__exportStar(ro(), e2);
        } }), Sm = te({ "node_modules/vnopts/lib/handlers/index.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = (Et(), ft(vt));
          r2.__exportStar(Cm(), e2), r2.__exportStar(to(), e2), r2.__exportStar(Am(), e2);
        } }), Ft = te({ "node_modules/vnopts/lib/schema.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = ["default", "expected", "validate", "deprecated", "forward", "redirect", "overlap", "preprocess", "postprocess"];
          function t2(n, u3) {
            let i2 = new n(u3), l = Object.create(i2);
            for (let p5 of r2)
              p5 in u3 && (l[p5] = a2(u3[p5], i2, s5.prototype[p5].length));
            return l;
          }
          e2.createSchema = t2;
          var s5 = class {
            constructor(n) {
              this.name = n.name;
            }
            static create(n) {
              return t2(this, n);
            }
            default(n) {
            }
            expected(n) {
              return "nothing";
            }
            validate(n, u3) {
              return false;
            }
            deprecated(n, u3) {
              return false;
            }
            forward(n, u3) {
            }
            redirect(n, u3) {
            }
            overlap(n, u3, i2) {
              return n;
            }
            preprocess(n, u3) {
              return n;
            }
            postprocess(n, u3) {
              return n;
            }
          };
          e2.Schema = s5;
          function a2(n, u3, i2) {
            return typeof n == "function" ? function() {
              for (var l = arguments.length, p5 = new Array(l), d = 0; d < l; d++)
                p5[d] = arguments[d];
              return n(...p5.slice(0, i2 - 1), u3, ...p5.slice(i2 - 1));
            } : () => n;
          }
        } }), xm = te({ "node_modules/vnopts/lib/schemas/alias.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = Ft(), t2 = class extends r2.Schema {
            constructor(s5) {
              super(s5), this._sourceName = s5.sourceName;
            }
            expected(s5) {
              return s5.schemas[this._sourceName].expected(s5);
            }
            validate(s5, a2) {
              return a2.schemas[this._sourceName].validate(s5, a2);
            }
            redirect(s5, a2) {
              return this._sourceName;
            }
          };
          e2.AliasSchema = t2;
        } }), bm = te({ "node_modules/vnopts/lib/schemas/any.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = Ft(), t2 = class extends r2.Schema {
            expected() {
              return "anything";
            }
            validate() {
              return true;
            }
          };
          e2.AnySchema = t2;
        } }), Tm = te({ "node_modules/vnopts/lib/schemas/array.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = (Et(), ft(vt)), t2 = Ft(), s5 = class extends t2.Schema {
            constructor(n) {
              var { valueSchema: u3, name: i2 = u3.name } = n, l = r2.__rest(n, ["valueSchema", "name"]);
              super(Object.assign({}, l, { name: i2 })), this._valueSchema = u3;
            }
            expected(n) {
              return `an array of ${this._valueSchema.expected(n)}`;
            }
            validate(n, u3) {
              if (!Array.isArray(n))
                return false;
              let i2 = [];
              for (let l of n) {
                let p5 = u3.normalizeValidateResult(this._valueSchema.validate(l, u3), l);
                p5 !== true && i2.push(p5.value);
              }
              return i2.length === 0 ? true : { value: i2 };
            }
            deprecated(n, u3) {
              let i2 = [];
              for (let l of n) {
                let p5 = u3.normalizeDeprecatedResult(this._valueSchema.deprecated(l, u3), l);
                p5 !== false && i2.push(...p5.map((d) => {
                  let { value: y } = d;
                  return { value: [y] };
                }));
              }
              return i2;
            }
            forward(n, u3) {
              let i2 = [];
              for (let l of n) {
                let p5 = u3.normalizeForwardResult(this._valueSchema.forward(l, u3), l);
                i2.push(...p5.map(a2));
              }
              return i2;
            }
            redirect(n, u3) {
              let i2 = [], l = [];
              for (let p5 of n) {
                let d = u3.normalizeRedirectResult(this._valueSchema.redirect(p5, u3), p5);
                "remain" in d && i2.push(d.remain), l.push(...d.redirect.map(a2));
              }
              return i2.length === 0 ? { redirect: l } : { redirect: l, remain: i2 };
            }
            overlap(n, u3) {
              return n.concat(u3);
            }
          };
          e2.ArraySchema = s5;
          function a2(n) {
            let { from: u3, to: i2 } = n;
            return { from: [u3], to: i2 };
          }
        } }), Bm = te({ "node_modules/vnopts/lib/schemas/boolean.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = Ft(), t2 = class extends r2.Schema {
            expected() {
              return "true or false";
            }
            validate(s5) {
              return typeof s5 == "boolean";
            }
          };
          e2.BooleanSchema = t2;
        } }), eu = te({ "node_modules/vnopts/lib/utils.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          function r2(c, D2) {
            let E = /* @__PURE__ */ Object.create(null);
            for (let _2 of c) {
              let w = _2[D2];
              if (E[w])
                throw new Error(`Duplicate ${D2} ${JSON.stringify(w)}`);
              E[w] = _2;
            }
            return E;
          }
          e2.recordFromArray = r2;
          function t2(c, D2) {
            let E = /* @__PURE__ */ new Map();
            for (let _2 of c) {
              let w = _2[D2];
              if (E.has(w))
                throw new Error(`Duplicate ${D2} ${JSON.stringify(w)}`);
              E.set(w, _2);
            }
            return E;
          }
          e2.mapFromArray = t2;
          function s5() {
            let c = /* @__PURE__ */ Object.create(null);
            return (D2) => {
              let E = JSON.stringify(D2);
              return c[E] ? true : (c[E] = true, false);
            };
          }
          e2.createAutoChecklist = s5;
          function a2(c, D2) {
            let E = [], _2 = [];
            for (let w of c)
              D2(w) ? E.push(w) : _2.push(w);
            return [E, _2];
          }
          e2.partition = a2;
          function n(c) {
            return c === Math.floor(c);
          }
          e2.isInt = n;
          function u3(c, D2) {
            if (c === D2)
              return 0;
            let E = typeof c, _2 = typeof D2, w = ["undefined", "object", "boolean", "number", "string"];
            return E !== _2 ? w.indexOf(E) - w.indexOf(_2) : E !== "string" ? Number(c) - Number(D2) : c.localeCompare(D2);
          }
          e2.comparePrimitive = u3;
          function i2(c) {
            return c === void 0 ? {} : c;
          }
          e2.normalizeDefaultResult = i2;
          function l(c, D2) {
            return c === true ? true : c === false ? { value: D2 } : c;
          }
          e2.normalizeValidateResult = l;
          function p5(c, D2) {
            let E = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
            return c === false ? false : c === true ? E ? true : [{ value: D2 }] : "value" in c ? [c] : c.length === 0 ? false : c;
          }
          e2.normalizeDeprecatedResult = p5;
          function d(c, D2) {
            return typeof c == "string" || "key" in c ? { from: D2, to: c } : "from" in c ? { from: c.from, to: c.to } : { from: D2, to: c.to };
          }
          e2.normalizeTransferResult = d;
          function y(c, D2) {
            return c === void 0 ? [] : Array.isArray(c) ? c.map((E) => d(E, D2)) : [d(c, D2)];
          }
          e2.normalizeForwardResult = y;
          function g(c, D2) {
            let E = y(typeof c == "object" && "redirect" in c ? c.redirect : c, D2);
            return E.length === 0 ? { remain: D2, redirect: E } : typeof c == "object" && "remain" in c ? { remain: c.remain, redirect: E } : { redirect: E };
          }
          e2.normalizeRedirectResult = g;
        } }), Nm = te({ "node_modules/vnopts/lib/schemas/choice.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = Ft(), t2 = eu(), s5 = class extends r2.Schema {
            constructor(a2) {
              super(a2), this._choices = t2.mapFromArray(a2.choices.map((n) => n && typeof n == "object" ? n : { value: n }), "value");
            }
            expected(a2) {
              let { descriptor: n } = a2, u3 = Array.from(this._choices.keys()).map((p5) => this._choices.get(p5)).filter((p5) => !p5.deprecated).map((p5) => p5.value).sort(t2.comparePrimitive).map(n.value), i2 = u3.slice(0, -2), l = u3.slice(-2);
              return i2.concat(l.join(" or ")).join(", ");
            }
            validate(a2) {
              return this._choices.has(a2);
            }
            deprecated(a2) {
              let n = this._choices.get(a2);
              return n && n.deprecated ? { value: a2 } : false;
            }
            forward(a2) {
              let n = this._choices.get(a2);
              return n ? n.forward : void 0;
            }
            redirect(a2) {
              let n = this._choices.get(a2);
              return n ? n.redirect : void 0;
            }
          };
          e2.ChoiceSchema = s5;
        } }), no = te({ "node_modules/vnopts/lib/schemas/number.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = Ft(), t2 = class extends r2.Schema {
            expected() {
              return "a number";
            }
            validate(s5, a2) {
              return typeof s5 == "number";
            }
          };
          e2.NumberSchema = t2;
        } }), wm = te({ "node_modules/vnopts/lib/schemas/integer.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = eu(), t2 = no(), s5 = class extends t2.NumberSchema {
            expected() {
              return "an integer";
            }
            validate(a2, n) {
              return n.normalizeValidateResult(super.validate(a2, n), a2) === true && r2.isInt(a2);
            }
          };
          e2.IntegerSchema = s5;
        } }), _m = te({ "node_modules/vnopts/lib/schemas/string.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = Ft(), t2 = class extends r2.Schema {
            expected() {
              return "a string";
            }
            validate(s5) {
              return typeof s5 == "string";
            }
          };
          e2.StringSchema = t2;
        } }), Pm = te({ "node_modules/vnopts/lib/schemas/index.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = (Et(), ft(vt));
          r2.__exportStar(xm(), e2), r2.__exportStar(bm(), e2), r2.__exportStar(Tm(), e2), r2.__exportStar(Bm(), e2), r2.__exportStar(Nm(), e2), r2.__exportStar(wm(), e2), r2.__exportStar(no(), e2), r2.__exportStar(_m(), e2);
        } }), Im = te({ "node_modules/vnopts/lib/defaults.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = Za(), t2 = eo(), s5 = to(), a2 = ro();
          e2.defaultDescriptor = r2.apiDescriptor, e2.defaultUnknownHandler = a2.levenUnknownHandler, e2.defaultInvalidHandler = s5.commonInvalidHandler, e2.defaultDeprecatedHandler = t2.commonDeprecatedHandler;
        } }), km = te({ "node_modules/vnopts/lib/normalize.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = Im(), t2 = eu();
          e2.normalize = (a2, n, u3) => new s5(n, u3).normalize(a2);
          var s5 = class {
            constructor(a2, n) {
              let { logger: u3 = console, descriptor: i2 = r2.defaultDescriptor, unknown: l = r2.defaultUnknownHandler, invalid: p5 = r2.defaultInvalidHandler, deprecated: d = r2.defaultDeprecatedHandler } = n || {};
              this._utils = { descriptor: i2, logger: u3 || { warn: () => {
              } }, schemas: t2.recordFromArray(a2, "name"), normalizeDefaultResult: t2.normalizeDefaultResult, normalizeDeprecatedResult: t2.normalizeDeprecatedResult, normalizeForwardResult: t2.normalizeForwardResult, normalizeRedirectResult: t2.normalizeRedirectResult, normalizeValidateResult: t2.normalizeValidateResult }, this._unknownHandler = l, this._invalidHandler = p5, this._deprecatedHandler = d, this.cleanHistory();
            }
            cleanHistory() {
              this._hasDeprecationWarned = t2.createAutoChecklist();
            }
            normalize(a2) {
              let n = {}, u3 = [a2], i2 = () => {
                for (; u3.length !== 0; ) {
                  let l = u3.shift(), p5 = this._applyNormalization(l, n);
                  u3.push(...p5);
                }
              };
              i2();
              for (let l of Object.keys(this._utils.schemas)) {
                let p5 = this._utils.schemas[l];
                if (!(l in n)) {
                  let d = t2.normalizeDefaultResult(p5.default(this._utils));
                  "value" in d && u3.push({ [l]: d.value });
                }
              }
              i2();
              for (let l of Object.keys(this._utils.schemas)) {
                let p5 = this._utils.schemas[l];
                l in n && (n[l] = p5.postprocess(n[l], this._utils));
              }
              return n;
            }
            _applyNormalization(a2, n) {
              let u3 = [], [i2, l] = t2.partition(Object.keys(a2), (p5) => p5 in this._utils.schemas);
              for (let p5 of i2) {
                let d = this._utils.schemas[p5], y = d.preprocess(a2[p5], this._utils), g = t2.normalizeValidateResult(d.validate(y, this._utils), y);
                if (g !== true) {
                  let { value: w } = g, F2 = this._invalidHandler(p5, w, this._utils);
                  throw typeof F2 == "string" ? new Error(F2) : F2;
                }
                let c = (w) => {
                  let { from: F2, to: S3 } = w;
                  u3.push(typeof S3 == "string" ? { [S3]: F2 } : { [S3.key]: S3.value });
                }, D2 = (w) => {
                  let { value: F2, redirectTo: S3 } = w, N = t2.normalizeDeprecatedResult(d.deprecated(F2, this._utils), y, true);
                  if (N !== false)
                    if (N === true)
                      this._hasDeprecationWarned(p5) || this._utils.logger.warn(this._deprecatedHandler(p5, S3, this._utils));
                    else
                      for (let { value: I } of N) {
                        let P = { key: p5, value: I };
                        if (!this._hasDeprecationWarned(P)) {
                          let $2 = typeof S3 == "string" ? { key: S3, value: I } : S3;
                          this._utils.logger.warn(this._deprecatedHandler(P, $2, this._utils));
                        }
                      }
                };
                t2.normalizeForwardResult(d.forward(y, this._utils), y).forEach(c);
                let _2 = t2.normalizeRedirectResult(d.redirect(y, this._utils), y);
                if (_2.redirect.forEach(c), "remain" in _2) {
                  let w = _2.remain;
                  n[p5] = p5 in n ? d.overlap(n[p5], w, this._utils) : w, D2({ value: w });
                }
                for (let { from: w, to: F2 } of _2.redirect)
                  D2({ value: w, redirectTo: F2 });
              }
              for (let p5 of l) {
                let d = a2[p5], y = this._unknownHandler(p5, d, this._utils);
                if (y)
                  for (let g of Object.keys(y)) {
                    let c = { [g]: y[g] };
                    g in this._utils.schemas ? u3.push(c) : Object.assign(n, c);
                  }
              }
              return u3;
            }
          };
          e2.Normalizer = s5;
        } }), Lm = te({ "node_modules/vnopts/lib/index.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = (Et(), ft(vt));
          r2.__exportStar(vm(), e2), r2.__exportStar(Sm(), e2), r2.__exportStar(Pm(), e2), r2.__exportStar(km(), e2), r2.__exportStar(Ft(), e2);
        } }), Om = te({ "src/main/options-normalizer.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Lm(), s5 = lt(), a2 = { key: (g) => g.length === 1 ? `-${g}` : `--${g}`, value: (g) => t2.apiDescriptor.value(g), pair: (g) => {
            let { key: c, value: D2 } = g;
            return D2 === false ? `--no-${c}` : D2 === true ? a2.key(c) : D2 === "" ? `${a2.key(c)} without an argument` : `${a2.key(c)}=${D2}`;
          } }, n = (g) => {
            let { colorsModule: c, levenshteinDistance: D2 } = g;
            return class extends t2.ChoiceSchema {
              constructor(_2) {
                let { name: w, flags: F2 } = _2;
                super({ name: w, choices: F2 }), this._flags = [...F2].sort();
              }
              preprocess(_2, w) {
                if (typeof _2 == "string" && _2.length > 0 && !this._flags.includes(_2)) {
                  let F2 = this._flags.find((S3) => D2(S3, _2) < 3);
                  if (F2)
                    return w.logger.warn([`Unknown flag ${c.yellow(w.descriptor.value(_2))},`, `did you mean ${c.blue(w.descriptor.value(F2))}?`].join(" ")), F2;
                }
                return _2;
              }
              expected() {
                return "a flag";
              }
            };
          }, u3;
          function i2(g, c) {
            let { logger: D2 = false, isCLI: E = false, passThrough: _2 = false, colorsModule: w = null, levenshteinDistance: F2 = null } = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, S3 = _2 ? Array.isArray(_2) ? (T2, m2) => _2.includes(T2) ? { [T2]: m2 } : void 0 : (T2, m2) => ({ [T2]: m2 }) : (T2, m2, v) => {
              let o = v.schemas, { _: h4 } = o, C = Hn(o, vD);
              return t2.levenUnknownHandler(T2, m2, Object.assign(Object.assign({}, v), {}, { schemas: C }));
            }, N = E ? a2 : t2.apiDescriptor, I = l(c, { isCLI: E, colorsModule: w, levenshteinDistance: F2 }), P = new t2.Normalizer(I, { logger: D2, unknown: S3, descriptor: N }), $2 = D2 !== false;
            $2 && u3 && (P._hasDeprecationWarned = u3);
            let f3 = P.normalize(g);
            return $2 && (u3 = P._hasDeprecationWarned), E && f3["plugin-search"] === false && (f3["plugin-search-dir"] = false), f3;
          }
          function l(g, c) {
            let { isCLI: D2, colorsModule: E, levenshteinDistance: _2 } = c, w = [];
            D2 && w.push(t2.AnySchema.create({ name: "_" }));
            for (let F2 of g)
              w.push(p5(F2, { isCLI: D2, optionInfos: g, colorsModule: E, levenshteinDistance: _2 })), F2.alias && D2 && w.push(t2.AliasSchema.create({ name: F2.alias, sourceName: F2.name }));
            return w;
          }
          function p5(g, c) {
            let { isCLI: D2, optionInfos: E, colorsModule: _2, levenshteinDistance: w } = c, { name: F2 } = g;
            if (F2 === "plugin-search-dir" || F2 === "pluginSearchDirs")
              return t2.AnySchema.create({ name: F2, preprocess(P) {
                return P === false || (P = Array.isArray(P) ? P : [P]), P;
              }, validate(P) {
                return P === false ? true : P.every(($2) => typeof $2 == "string");
              }, expected() {
                return "false or paths to plugin search dir";
              } });
            let S3 = { name: F2 }, N, I = {};
            switch (g.type) {
              case "int":
                N = t2.IntegerSchema, D2 && (S3.preprocess = Number);
                break;
              case "string":
                N = t2.StringSchema;
                break;
              case "choice":
                N = t2.ChoiceSchema, S3.choices = g.choices.map((P) => typeof P == "object" && P.redirect ? Object.assign(Object.assign({}, P), {}, { redirect: { to: { key: g.name, value: P.redirect } } }) : P);
                break;
              case "boolean":
                N = t2.BooleanSchema;
                break;
              case "flag":
                N = n({ colorsModule: _2, levenshteinDistance: w }), S3.flags = E.flatMap((P) => [P.alias, P.description && P.name, P.oppositeDescription && `no-${P.name}`].filter(Boolean));
                break;
              case "path":
                N = t2.StringSchema;
                break;
              default:
                throw new Error(`Unexpected type ${g.type}`);
            }
            if (g.exception ? S3.validate = (P, $2, f3) => g.exception(P) || $2.validate(P, f3) : S3.validate = (P, $2, f3) => P === void 0 || $2.validate(P, f3), g.redirect && (I.redirect = (P) => P ? { to: { key: g.redirect.option, value: g.redirect.value } } : void 0), g.deprecated && (I.deprecated = true), D2 && !g.array) {
              let P = S3.preprocess || (($2) => $2);
              S3.preprocess = ($2, f3, T2) => f3.preprocess(P(Array.isArray($2) ? s5($2) : $2), T2);
            }
            return g.array ? t2.ArraySchema.create(Object.assign(Object.assign(Object.assign({}, D2 ? { preprocess: (P) => Array.isArray(P) ? P : [P] } : {}), I), {}, { valueSchema: N.create(S3) })) : N.create(Object.assign(Object.assign({}, S3), I));
          }
          function d(g, c, D2) {
            return i2(g, c, D2);
          }
          function y(g, c, D2) {
            return i2(g, c, Object.assign({ isCLI: true }, D2));
          }
          r2.exports = { normalizeApiOptions: d, normalizeCliOptions: y };
        } }), ut = te({ "src/language-js/loc.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Kn();
          function s5(l) {
            var p5, d;
            let y = l.range ? l.range[0] : l.start, g = (p5 = (d = l.declaration) === null || d === void 0 ? void 0 : d.decorators) !== null && p5 !== void 0 ? p5 : l.decorators;
            return t2(g) ? Math.min(s5(g[0]), y) : y;
          }
          function a2(l) {
            return l.range ? l.range[1] : l.end;
          }
          function n(l, p5) {
            let d = s5(l);
            return Number.isInteger(d) && d === s5(p5);
          }
          function u3(l, p5) {
            let d = a2(l);
            return Number.isInteger(d) && d === a2(p5);
          }
          function i2(l, p5) {
            return n(l, p5) && u3(l, p5);
          }
          r2.exports = { locStart: s5, locEnd: a2, hasSameLocStart: n, hasSameLoc: i2 };
        } }), jm = te({ "src/main/load-parser.js"(e2, r2) {
          ne(), r2.exports = () => {
          };
        } }), qm = te({ "scripts/build/shims/babel-highlight.cjs"(e2, r2) {
          "use strict";
          ne();
          var t2 = kr(), s5 = { shouldHighlight: () => false, getChalk: () => t2 };
          r2.exports = s5;
        } }), Mm = te({ "node_modules/@babel/code-frame/lib/index.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true }), e2.codeFrameColumns = u3, e2.default = i2;
          var r2 = qm(), t2 = false;
          function s5(l) {
            return { gutter: l.grey, marker: l.red.bold, message: l.red.bold };
          }
          var a2 = /\r\n|[\n\r\u2028\u2029]/;
          function n(l, p5, d) {
            let y = Object.assign({ column: 0, line: -1 }, l.start), g = Object.assign({}, y, l.end), { linesAbove: c = 2, linesBelow: D2 = 3 } = d || {}, E = y.line, _2 = y.column, w = g.line, F2 = g.column, S3 = Math.max(E - (c + 1), 0), N = Math.min(p5.length, w + D2);
            E === -1 && (S3 = 0), w === -1 && (N = p5.length);
            let I = w - E, P = {};
            if (I)
              for (let $2 = 0; $2 <= I; $2++) {
                let f3 = $2 + E;
                if (!_2)
                  P[f3] = true;
                else if ($2 === 0) {
                  let T2 = p5[f3 - 1].length;
                  P[f3] = [_2, T2 - _2 + 1];
                } else if ($2 === I)
                  P[f3] = [0, F2];
                else {
                  let T2 = p5[f3 - $2].length;
                  P[f3] = [0, T2];
                }
              }
            else
              _2 === F2 ? _2 ? P[E] = [_2, 0] : P[E] = true : P[E] = [_2, F2 - _2];
            return { start: S3, end: N, markerLines: P };
          }
          function u3(l, p5) {
            let d = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, y = (d.highlightCode || d.forceColor) && (0, r2.shouldHighlight)(d), g = (0, r2.getChalk)(d), c = s5(g), D2 = ($2, f3) => y ? $2(f3) : f3, E = l.split(a2), { start: _2, end: w, markerLines: F2 } = n(p5, E, d), S3 = p5.start && typeof p5.start.column == "number", N = String(w).length, P = (y ? (0, r2.default)(l, d) : l).split(a2, w).slice(_2, w).map(($2, f3) => {
              let T2 = _2 + 1 + f3, v = ` ${` ${T2}`.slice(-N)} |`, o = F2[T2], h4 = !F2[T2 + 1];
              if (o) {
                let C = "";
                if (Array.isArray(o)) {
                  let x2 = $2.slice(0, Math.max(o[0] - 1, 0)).replace(/[^\t]/g, " "), b = o[1] || 1;
                  C = [`
 `, D2(c.gutter, v.replace(/\d/g, " ")), " ", x2, D2(c.marker, "^").repeat(b)].join(""), h4 && d.message && (C += " " + D2(c.message, d.message));
                }
                return [D2(c.marker, ">"), D2(c.gutter, v), $2.length > 0 ? ` ${$2}` : "", C].join("");
              } else
                return ` ${D2(c.gutter, v)}${$2.length > 0 ? ` ${$2}` : ""}`;
            }).join(`
`);
            return d.message && !S3 && (P = `${" ".repeat(N + 1)}${d.message}
${P}`), y ? g.reset(P) : P;
          }
          function i2(l, p5, d) {
            let y = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
            if (!t2) {
              t2 = true;
              let c = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";
              if (wt.emitWarning)
                wt.emitWarning(c, "DeprecationWarning");
              else {
                let D2 = new Error(c);
                D2.name = "DeprecationWarning", console.warn(new Error(c));
              }
            }
            return d = Math.max(d, 0), u3(l, { start: { column: d, line: p5 } }, y);
          }
        } }), tu = te({ "src/main/parser.js"(e2, r2) {
          "use strict";
          ne();
          var { ConfigError: t2 } = Qt(), s5 = ut(), a2 = jm(), { locStart: n, locEnd: u3 } = s5, i2 = Object.getOwnPropertyNames, l = Object.getOwnPropertyDescriptor;
          function p5(g) {
            let c = {};
            for (let D2 of g.plugins)
              if (D2.parsers)
                for (let E of i2(D2.parsers))
                  Object.defineProperty(c, E, l(D2.parsers, E));
            return c;
          }
          function d(g) {
            let c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : p5(g);
            if (typeof g.parser == "function")
              return { parse: g.parser, astFormat: "estree", locStart: n, locEnd: u3 };
            if (typeof g.parser == "string") {
              if (Object.prototype.hasOwnProperty.call(c, g.parser))
                return c[g.parser];
              throw new t2(`Couldn't resolve parser "${g.parser}". Parsers must be explicitly added to the standalone bundle.`);
            }
          }
          function y(g, c) {
            let D2 = p5(c), E = Object.defineProperties({}, Object.fromEntries(Object.keys(D2).map((w) => [w, { enumerable: true, get() {
              return D2[w].parse;
            } }]))), _2 = d(c, D2);
            try {
              return _2.preprocess && (g = _2.preprocess(g, c)), { text: g, ast: _2.parse(g, E, c) };
            } catch (w) {
              let { loc: F2 } = w;
              if (F2) {
                let { codeFrameColumns: S3 } = Mm();
                throw w.codeFrame = S3(g, F2, { highlightCode: true }), w.message += `
` + w.codeFrame, w;
              }
              throw w;
            }
          }
          r2.exports = { parse: y, resolveParser: d };
        } }), uo = te({ "src/main/options.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = ZD(), { UndefinedParserError: s5 } = Qt(), { getSupportInfo: a2 } = Xn(), n = Om(), { resolveParser: u3 } = tu(), i2 = { astFormat: "estree", printer: {}, originalText: void 0, locStart: null, locEnd: null };
          function l(y) {
            let g = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, c = Object.assign({}, y), D2 = a2({ plugins: y.plugins, showUnreleased: true, showDeprecated: true }).options, E = Object.assign(Object.assign({}, i2), Object.fromEntries(D2.filter((N) => N.default !== void 0).map((N) => [N.name, N.default])));
            if (!c.parser) {
              if (!c.filepath)
                (g.logger || console).warn("No parser and no filepath given, using 'babel' the parser now but this will throw an error in the future. Please specify a parser or a filepath so one can be inferred."), c.parser = "babel";
              else if (c.parser = d(c.filepath, c.plugins), !c.parser)
                throw new s5(`No parser could be inferred for file: ${c.filepath}`);
            }
            let _2 = u3(n.normalizeApiOptions(c, [D2.find((N) => N.name === "parser")], { passThrough: true, logger: false }));
            c.astFormat = _2.astFormat, c.locEnd = _2.locEnd, c.locStart = _2.locStart;
            let w = p5(c);
            c.printer = w.printers[c.astFormat];
            let F2 = Object.fromEntries(D2.filter((N) => N.pluginDefaults && N.pluginDefaults[w.name] !== void 0).map((N) => [N.name, N.pluginDefaults[w.name]])), S3 = Object.assign(Object.assign({}, E), F2);
            for (let [N, I] of Object.entries(S3))
              (c[N] === null || c[N] === void 0) && (c[N] = I);
            return c.parser === "json" && (c.trailingComma = "none"), n.normalizeApiOptions(c, D2, Object.assign({ passThrough: Object.keys(i2) }, g));
          }
          function p5(y) {
            let { astFormat: g } = y;
            if (!g)
              throw new Error("getPlugin() requires astFormat to be set");
            let c = y.plugins.find((D2) => D2.printers && D2.printers[g]);
            if (!c)
              throw new Error(`Couldn't find plugin for AST format "${g}"`);
            return c;
          }
          function d(y, g) {
            let c = t2.basename(y).toLowerCase(), E = a2({ plugins: g }).languages.filter((_2) => _2.since !== null).find((_2) => _2.extensions && _2.extensions.some((w) => c.endsWith(w)) || _2.filenames && _2.filenames.some((w) => w.toLowerCase() === c));
            return E && E.parsers[0];
          }
          r2.exports = { normalize: l, hiddenDefaults: i2, inferParser: d };
        } }), Rm = te({ "src/main/massage-ast.js"(e2, r2) {
          "use strict";
          ne();
          function t2(s5, a2, n) {
            if (Array.isArray(s5))
              return s5.map((p5) => t2(p5, a2, n)).filter(Boolean);
            if (!s5 || typeof s5 != "object")
              return s5;
            let u3 = a2.printer.massageAstNode, i2;
            u3 && u3.ignoredProperties ? i2 = u3.ignoredProperties : i2 = /* @__PURE__ */ new Set();
            let l = {};
            for (let [p5, d] of Object.entries(s5))
              !i2.has(p5) && typeof d != "function" && (l[p5] = t2(d, a2, s5));
            if (u3) {
              let p5 = u3(s5, l, n);
              if (p5 === null)
                return;
              if (p5)
                return p5;
            }
            return l;
          }
          r2.exports = t2;
        } }), Zt = te({ "scripts/build/shims/assert.cjs"(e2, r2) {
          "use strict";
          ne();
          var t2 = () => {
          };
          t2.ok = t2, t2.strictEqual = t2, r2.exports = t2;
        } }), et = te({ "src/main/comments.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Zt(), { builders: { line: s5, hardline: a2, breakParent: n, indent: u3, lineSuffix: i2, join: l, cursor: p5 } } = qe(), { hasNewline: d, skipNewline: y, skipSpaces: g, isPreviousLineEmpty: c, addLeadingComment: D2, addDanglingComment: E, addTrailingComment: _2 } = Ue(), w = /* @__PURE__ */ new WeakMap();
          function F2(k, M, R) {
            if (!k)
              return;
            let { printer: q2, locStart: J, locEnd: L } = M;
            if (R) {
              if (q2.canAttachComment && q2.canAttachComment(k)) {
                let V;
                for (V = R.length - 1; V >= 0 && !(J(R[V]) <= J(k) && L(R[V]) <= L(k)); --V)
                  ;
                R.splice(V + 1, 0, k);
                return;
              }
            } else if (w.has(k))
              return w.get(k);
            let Q = q2.getCommentChildNodes && q2.getCommentChildNodes(k, M) || typeof k == "object" && Object.entries(k).filter((V) => {
              let [j] = V;
              return j !== "enclosingNode" && j !== "precedingNode" && j !== "followingNode" && j !== "tokens" && j !== "comments" && j !== "parent";
            }).map((V) => {
              let [, j] = V;
              return j;
            });
            if (Q) {
              R || (R = [], w.set(k, R));
              for (let V of Q)
                F2(V, M, R);
              return R;
            }
          }
          function S3(k, M, R, q2) {
            let { locStart: J, locEnd: L } = R, Q = J(M), V = L(M), j = F2(k, R), Y, ie, ee = 0, le = j.length;
            for (; ee < le; ) {
              let W = ee + le >> 1, K = j[W], de = J(K), ue = L(K);
              if (de <= Q && V <= ue)
                return S3(K, M, R, K);
              if (ue <= Q) {
                Y = K, ee = W + 1;
                continue;
              }
              if (V <= de) {
                ie = K, le = W;
                continue;
              }
              throw new Error("Comment location overlaps with node location");
            }
            if (q2 && q2.type === "TemplateLiteral") {
              let { quasis: W } = q2, K = v(W, M, R);
              Y && v(W, Y, R) !== K && (Y = null), ie && v(W, ie, R) !== K && (ie = null);
            }
            return { enclosingNode: q2, precedingNode: Y, followingNode: ie };
          }
          var N = () => false;
          function I(k, M, R, q2) {
            if (!Array.isArray(k))
              return;
            let J = [], { locStart: L, locEnd: Q, printer: { handleComments: V = {} } } = q2, { avoidAstMutation: j, ownLine: Y = N, endOfLine: ie = N, remaining: ee = N } = V, le = k.map((W, K) => Object.assign(Object.assign({}, S3(M, W, q2)), {}, { comment: W, text: R, options: q2, ast: M, isLastComment: k.length - 1 === K }));
            for (let [W, K] of le.entries()) {
              let { comment: de, precedingNode: ue, enclosingNode: Fe, followingNode: z2, text: U, options: Z2, ast: se, isLastComment: De } = K;
              if (Z2.parser === "json" || Z2.parser === "json5" || Z2.parser === "__js_expression" || Z2.parser === "__vue_expression" || Z2.parser === "__vue_ts_expression") {
                if (L(de) - L(se) <= 0) {
                  D2(se, de);
                  continue;
                }
                if (Q(de) - Q(se) >= 0) {
                  _2(se, de);
                  continue;
                }
              }
              let ge;
              if (j ? ge = [K] : (de.enclosingNode = Fe, de.precedingNode = ue, de.followingNode = z2, ge = [de, U, Z2, se, De]), $2(U, Z2, le, W))
                de.placement = "ownLine", Y(...ge) || (z2 ? D2(z2, de) : ue ? _2(ue, de) : E(Fe || se, de));
              else if (f3(U, Z2, le, W))
                de.placement = "endOfLine", ie(...ge) || (ue ? _2(ue, de) : z2 ? D2(z2, de) : E(Fe || se, de));
              else if (de.placement = "remaining", !ee(...ge))
                if (ue && z2) {
                  let he2 = J.length;
                  he2 > 0 && J[he2 - 1].followingNode !== z2 && T2(J, U, Z2), J.push(K);
                } else
                  ue ? _2(ue, de) : z2 ? D2(z2, de) : E(Fe || se, de);
            }
            if (T2(J, R, q2), !j)
              for (let W of k)
                delete W.precedingNode, delete W.enclosingNode, delete W.followingNode;
          }
          var P = (k) => !/[\S\n\u2028\u2029]/.test(k);
          function $2(k, M, R, q2) {
            let { comment: J, precedingNode: L } = R[q2], { locStart: Q, locEnd: V } = M, j = Q(J);
            if (L)
              for (let Y = q2 - 1; Y >= 0; Y--) {
                let { comment: ie, precedingNode: ee } = R[Y];
                if (ee !== L || !P(k.slice(V(ie), j)))
                  break;
                j = Q(ie);
              }
            return d(k, j, { backwards: true });
          }
          function f3(k, M, R, q2) {
            let { comment: J, followingNode: L } = R[q2], { locStart: Q, locEnd: V } = M, j = V(J);
            if (L)
              for (let Y = q2 + 1; Y < R.length; Y++) {
                let { comment: ie, followingNode: ee } = R[Y];
                if (ee !== L || !P(k.slice(j, Q(ie))))
                  break;
                j = V(ie);
              }
            return d(k, j);
          }
          function T2(k, M, R) {
            let q2 = k.length;
            if (q2 === 0)
              return;
            let { precedingNode: J, followingNode: L, enclosingNode: Q } = k[0], V = R.printer.getGapRegex && R.printer.getGapRegex(Q) || /^[\s(]*$/, j = R.locStart(L), Y;
            for (Y = q2; Y > 0; --Y) {
              let { comment: ie, precedingNode: ee, followingNode: le } = k[Y - 1];
              t2.strictEqual(ee, J), t2.strictEqual(le, L);
              let W = M.slice(R.locEnd(ie), j);
              if (V.test(W))
                j = R.locStart(ie);
              else
                break;
            }
            for (let [ie, { comment: ee }] of k.entries())
              ie < Y ? _2(J, ee) : D2(L, ee);
            for (let ie of [J, L])
              ie.comments && ie.comments.length > 1 && ie.comments.sort((ee, le) => R.locStart(ee) - R.locStart(le));
            k.length = 0;
          }
          function m2(k, M) {
            let R = k.getValue();
            return R.printed = true, M.printer.printComment(k, M);
          }
          function v(k, M, R) {
            let q2 = R.locStart(M) - 1;
            for (let J = 1; J < k.length; ++J)
              if (q2 < R.locStart(k[J]))
                return J - 1;
            return 0;
          }
          function o(k, M) {
            let R = k.getValue(), q2 = [m2(k, M)], { printer: J, originalText: L, locStart: Q, locEnd: V } = M;
            if (J.isBlockComment && J.isBlockComment(R)) {
              let ie = d(L, V(R)) ? d(L, Q(R), { backwards: true }) ? a2 : s5 : " ";
              q2.push(ie);
            } else
              q2.push(a2);
            let Y = y(L, g(L, V(R)));
            return Y !== false && d(L, Y) && q2.push(a2), q2;
          }
          function h4(k, M) {
            let R = k.getValue(), q2 = m2(k, M), { printer: J, originalText: L, locStart: Q } = M, V = J.isBlockComment && J.isBlockComment(R);
            if (d(L, Q(R), { backwards: true })) {
              let Y = c(L, R, Q);
              return i2([a2, Y ? a2 : "", q2]);
            }
            let j = [" ", q2];
            return V || (j = [i2(j), n]), j;
          }
          function C(k, M, R, q2) {
            let J = [], L = k.getValue();
            return !L || !L.comments || (k.each(() => {
              let Q = k.getValue();
              !Q.leading && !Q.trailing && (!q2 || q2(Q)) && J.push(m2(k, M));
            }, "comments"), J.length === 0) ? "" : R ? l(a2, J) : u3([a2, l(a2, J)]);
          }
          function x2(k, M, R) {
            let q2 = k.getValue();
            if (!q2)
              return {};
            let J = q2.comments || [];
            R && (J = J.filter((j) => !R.has(j)));
            let L = q2 === M.cursorNode;
            if (J.length === 0) {
              let j = L ? p5 : "";
              return { leading: j, trailing: j };
            }
            let Q = [], V = [];
            return k.each(() => {
              let j = k.getValue();
              if (R && R.has(j))
                return;
              let { leading: Y, trailing: ie } = j;
              Y ? Q.push(o(k, M)) : ie && V.push(h4(k, M));
            }, "comments"), L && (Q.unshift(p5), V.push(p5)), { leading: Q, trailing: V };
          }
          function b(k, M, R, q2) {
            let { leading: J, trailing: L } = x2(k, R, q2);
            return !J && !L ? M : [J, M, L];
          }
          function B(k) {
            if (k)
              for (let M of k) {
                if (!M.printed)
                  throw new Error('Comment "' + M.value.trim() + '" was not printed. Please report this error!');
                delete M.printed;
              }
          }
          r2.exports = { attach: I, printComments: b, printCommentsSeparately: x2, printDanglingComments: C, getSortedChildNodes: F2, ensureAllCommentsPrinted: B };
        } }), $m = te({ "src/common/ast-path.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = lt();
          function s5(u3, i2) {
            let l = a2(u3.stack, i2);
            return l === -1 ? null : u3.stack[l];
          }
          function a2(u3, i2) {
            for (let l = u3.length - 1; l >= 0; l -= 2) {
              let p5 = u3[l];
              if (p5 && !Array.isArray(p5) && --i2 < 0)
                return l;
            }
            return -1;
          }
          var n = class {
            constructor(u3) {
              this.stack = [u3];
            }
            getName() {
              let { stack: u3 } = this, { length: i2 } = u3;
              return i2 > 1 ? u3[i2 - 2] : null;
            }
            getValue() {
              return t2(this.stack);
            }
            getNode() {
              let u3 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
              return s5(this, u3);
            }
            getParentNode() {
              let u3 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
              return s5(this, u3 + 1);
            }
            call(u3) {
              let { stack: i2 } = this, { length: l } = i2, p5 = t2(i2);
              for (var d = arguments.length, y = new Array(d > 1 ? d - 1 : 0), g = 1; g < d; g++)
                y[g - 1] = arguments[g];
              for (let D2 of y)
                p5 = p5[D2], i2.push(D2, p5);
              let c = u3(this);
              return i2.length = l, c;
            }
            callParent(u3) {
              let i2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, l = a2(this.stack, i2 + 1), p5 = this.stack.splice(l + 1), d = u3(this);
              return this.stack.push(...p5), d;
            }
            each(u3) {
              let { stack: i2 } = this, { length: l } = i2, p5 = t2(i2);
              for (var d = arguments.length, y = new Array(d > 1 ? d - 1 : 0), g = 1; g < d; g++)
                y[g - 1] = arguments[g];
              for (let c of y)
                p5 = p5[c], i2.push(c, p5);
              for (let c = 0; c < p5.length; ++c)
                i2.push(c, p5[c]), u3(this, c, p5), i2.length -= 2;
              i2.length = l;
            }
            map(u3) {
              let i2 = [];
              for (var l = arguments.length, p5 = new Array(l > 1 ? l - 1 : 0), d = 1; d < l; d++)
                p5[d - 1] = arguments[d];
              return this.each((y, g, c) => {
                i2[g] = u3(y, g, c);
              }, ...p5), i2;
            }
            try(u3) {
              let { stack: i2 } = this, l = [...i2];
              try {
                return u3();
              } finally {
                i2.length = 0, i2.push(...l);
              }
            }
            match() {
              let u3 = this.stack.length - 1, i2 = null, l = this.stack[u3--];
              for (var p5 = arguments.length, d = new Array(p5), y = 0; y < p5; y++)
                d[y] = arguments[y];
              for (let g of d) {
                if (l === void 0)
                  return false;
                let c = null;
                if (typeof i2 == "number" && (c = i2, i2 = this.stack[u3--], l = this.stack[u3--]), g && !g(l, i2, c))
                  return false;
                i2 = this.stack[u3--], l = this.stack[u3--];
              }
              return true;
            }
            findAncestor(u3) {
              let i2 = this.stack.length - 1, l = null, p5 = this.stack[i2--];
              for (; p5; ) {
                let d = null;
                if (typeof l == "number" && (d = l, l = this.stack[i2--], p5 = this.stack[i2--]), l !== null && u3(p5, l, d))
                  return p5;
                l = this.stack[i2--], p5 = this.stack[i2--];
              }
            }
          };
          r2.exports = n;
        } }), Vm = te({ "src/main/multiparser.js"(e2, r2) {
          "use strict";
          ne();
          var { utils: { stripTrailingHardline: t2 } } = qe(), { normalize: s5 } = uo(), a2 = et();
          function n(i2, l, p5, d) {
            if (p5.printer.embed && p5.embeddedLanguageFormatting === "auto")
              return p5.printer.embed(i2, l, (y, g, c) => u3(y, g, p5, d, c), p5);
          }
          function u3(i2, l, p5, d) {
            let { stripTrailingHardline: y = false } = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : {}, g = s5(Object.assign(Object.assign(Object.assign({}, p5), l), {}, { parentParser: p5.parser, originalText: i2 }), { passThrough: true }), c = tu().parse(i2, g), { ast: D2 } = c;
            i2 = c.text;
            let E = D2.comments;
            delete D2.comments, a2.attach(E, D2, i2, g), g[Symbol.for("comments")] = E || [], g[Symbol.for("tokens")] = D2.tokens || [];
            let _2 = d(D2, g);
            return a2.ensureAllCommentsPrinted(E), y ? typeof _2 == "string" ? _2.replace(/(?:\r?\n)*$/, "") : t2(_2) : _2;
          }
          r2.exports = { printSubtree: n };
        } }), Wm = te({ "src/main/ast-to-doc.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = $m(), { builders: { hardline: s5, addAlignmentToDoc: a2 }, utils: { propagateBreaks: n } } = qe(), { printComments: u3 } = et(), i2 = Vm();
          function l(y, g) {
            let c = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0, { printer: D2 } = g;
            D2.preprocess && (y = D2.preprocess(y, g));
            let E = /* @__PURE__ */ new Map(), _2 = new t2(y), w = F2();
            return c > 0 && (w = a2([s5, w], c, g.tabWidth)), n(w), w;
            function F2(N, I) {
              return N === void 0 || N === _2 ? S3(I) : Array.isArray(N) ? _2.call(() => S3(I), ...N) : _2.call(() => S3(I), N);
            }
            function S3(N) {
              let I = _2.getValue(), P = I && typeof I == "object" && N === void 0;
              if (P && E.has(I))
                return E.get(I);
              let $2 = d(_2, g, F2, N);
              return P && E.set(I, $2), $2;
            }
          }
          function p5(y, g) {
            let { originalText: c, [Symbol.for("comments")]: D2, locStart: E, locEnd: _2 } = g, w = E(y), F2 = _2(y), S3 = /* @__PURE__ */ new Set();
            for (let N of D2)
              E(N) >= w && _2(N) <= F2 && (N.printed = true, S3.add(N));
            return { doc: c.slice(w, F2), printedComments: S3 };
          }
          function d(y, g, c, D2) {
            let E = y.getValue(), { printer: _2 } = g, w, F2;
            if (_2.hasPrettierIgnore && _2.hasPrettierIgnore(y))
              ({ doc: w, printedComments: F2 } = p5(E, g));
            else {
              if (E)
                try {
                  w = i2.printSubtree(y, c, g, l);
                } catch (S3) {
                  if (globalThis.PRETTIER_DEBUG)
                    throw S3;
                }
              w || (w = _2.print(y, g, c, D2));
            }
            return (!_2.willPrintOwnComments || !_2.willPrintOwnComments(y, g)) && (w = u3(y, w, g, F2)), w;
          }
          r2.exports = l;
        } }), Hm = te({ "src/main/range-util.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Zt(), s5 = et(), a2 = (D2) => {
            let { parser: E } = D2;
            return E === "json" || E === "json5" || E === "json-stringify";
          };
          function n(D2, E) {
            let _2 = [D2.node, ...D2.parentNodes], w = /* @__PURE__ */ new Set([E.node, ...E.parentNodes]);
            return _2.find((F2) => d.has(F2.type) && w.has(F2));
          }
          function u3(D2) {
            let E = D2.length - 1;
            for (; ; ) {
              let _2 = D2[E];
              if (_2 && (_2.type === "Program" || _2.type === "File"))
                E--;
              else
                break;
            }
            return D2.slice(0, E + 1);
          }
          function i2(D2, E, _2) {
            let { locStart: w, locEnd: F2 } = _2, S3 = D2.node, N = E.node;
            if (S3 === N)
              return { startNode: S3, endNode: N };
            let I = w(D2.node);
            for (let $2 of u3(E.parentNodes))
              if (w($2) >= I)
                N = $2;
              else
                break;
            let P = F2(E.node);
            for (let $2 of u3(D2.parentNodes)) {
              if (F2($2) <= P)
                S3 = $2;
              else
                break;
              if (S3 === N)
                break;
            }
            return { startNode: S3, endNode: N };
          }
          function l(D2, E, _2, w) {
            let F2 = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : [], S3 = arguments.length > 5 ? arguments[5] : void 0, { locStart: N, locEnd: I } = _2, P = N(D2), $2 = I(D2);
            if (!(E > $2 || E < P || S3 === "rangeEnd" && E === P || S3 === "rangeStart" && E === $2)) {
              for (let f3 of s5.getSortedChildNodes(D2, _2)) {
                let T2 = l(f3, E, _2, w, [D2, ...F2], S3);
                if (T2)
                  return T2;
              }
              if (!w || w(D2, F2[0]))
                return { node: D2, parentNodes: F2 };
            }
          }
          function p5(D2, E) {
            return E !== "DeclareExportDeclaration" && D2 !== "TypeParameterDeclaration" && (D2 === "Directive" || D2 === "TypeAlias" || D2 === "TSExportAssignment" || D2.startsWith("Declare") || D2.startsWith("TSDeclare") || D2.endsWith("Statement") || D2.endsWith("Declaration"));
          }
          var d = /* @__PURE__ */ new Set(["ObjectExpression", "ArrayExpression", "StringLiteral", "NumericLiteral", "BooleanLiteral", "NullLiteral", "UnaryExpression", "TemplateLiteral"]), y = /* @__PURE__ */ new Set(["OperationDefinition", "FragmentDefinition", "VariableDefinition", "TypeExtensionDefinition", "ObjectTypeDefinition", "FieldDefinition", "DirectiveDefinition", "EnumTypeDefinition", "EnumValueDefinition", "InputValueDefinition", "InputObjectTypeDefinition", "SchemaDefinition", "OperationTypeDefinition", "InterfaceTypeDefinition", "UnionTypeDefinition", "ScalarTypeDefinition"]);
          function g(D2, E, _2) {
            if (!E)
              return false;
            switch (D2.parser) {
              case "flow":
              case "babel":
              case "babel-flow":
              case "babel-ts":
              case "typescript":
              case "acorn":
              case "espree":
              case "meriyah":
              case "__babel_estree":
                return p5(E.type, _2 && _2.type);
              case "json":
              case "json5":
              case "json-stringify":
                return d.has(E.type);
              case "graphql":
                return y.has(E.kind);
              case "vue":
                return E.tag !== "root";
            }
            return false;
          }
          function c(D2, E, _2) {
            let { rangeStart: w, rangeEnd: F2, locStart: S3, locEnd: N } = E;
            t2.ok(F2 > w);
            let I = D2.slice(w, F2).search(/\S/), P = I === -1;
            if (!P)
              for (w += I; F2 > w && !/\S/.test(D2[F2 - 1]); --F2)
                ;
            let $2 = l(_2, w, E, (v, o) => g(E, v, o), [], "rangeStart"), f3 = P ? $2 : l(_2, F2, E, (v) => g(E, v), [], "rangeEnd");
            if (!$2 || !f3)
              return { rangeStart: 0, rangeEnd: 0 };
            let T2, m2;
            if (a2(E)) {
              let v = n($2, f3);
              T2 = v, m2 = v;
            } else
              ({ startNode: T2, endNode: m2 } = i2($2, f3, E));
            return { rangeStart: Math.min(S3(T2), S3(m2)), rangeEnd: Math.max(N(T2), N(m2)) };
          }
          r2.exports = { calculateRange: c, findNodeAtOffset: l };
        } }), Gm = te({ "src/main/core.js"(e2, r2) {
          "use strict";
          ne();
          var { diffArrays: t2 } = BD(), { printer: { printDocToString: s5 }, debug: { printDocToDebug: a2 } } = qe(), { getAlignmentSize: n } = Ue(), { guessEndOfLine: u3, convertEndOfLineToChars: i2, countEndOfLineChars: l, normalizeEndOfLine: p5 } = Jn(), d = uo().normalize, y = Rm(), g = et(), c = tu(), D2 = Wm(), E = Hm(), _2 = "\uFEFF", w = Symbol("cursor");
          function F2(m2, v, o) {
            let h4 = v.comments;
            return h4 && (delete v.comments, g.attach(h4, v, m2, o)), o[Symbol.for("comments")] = h4 || [], o[Symbol.for("tokens")] = v.tokens || [], o.originalText = m2, h4;
          }
          function S3(m2, v) {
            let o = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0;
            if (!m2 || m2.trim().length === 0)
              return { formatted: "", cursorOffset: -1, comments: [] };
            let { ast: h4, text: C } = c.parse(m2, v);
            if (v.cursorOffset >= 0) {
              let k = E.findNodeAtOffset(h4, v.cursorOffset, v);
              k && k.node && (v.cursorNode = k.node);
            }
            let x2 = F2(C, h4, v), b = D2(h4, v, o), B = s5(b, v);
            if (g.ensureAllCommentsPrinted(x2), o > 0) {
              let k = B.formatted.trim();
              B.cursorNodeStart !== void 0 && (B.cursorNodeStart -= B.formatted.indexOf(k)), B.formatted = k + i2(v.endOfLine);
            }
            if (v.cursorOffset >= 0) {
              let k, M, R, q2, J;
              if (v.cursorNode && B.cursorNodeText ? (k = v.locStart(v.cursorNode), M = C.slice(k, v.locEnd(v.cursorNode)), R = v.cursorOffset - k, q2 = B.cursorNodeStart, J = B.cursorNodeText) : (k = 0, M = C, R = v.cursorOffset, q2 = 0, J = B.formatted), M === J)
                return { formatted: B.formatted, cursorOffset: q2 + R, comments: x2 };
              let L = [...M];
              L.splice(R, 0, w);
              let Q = [...J], V = t2(L, Q), j = q2;
              for (let Y of V)
                if (Y.removed) {
                  if (Y.value.includes(w))
                    break;
                } else
                  j += Y.count;
              return { formatted: B.formatted, cursorOffset: j, comments: x2 };
            }
            return { formatted: B.formatted, cursorOffset: -1, comments: x2 };
          }
          function N(m2, v) {
            let { ast: o, text: h4 } = c.parse(m2, v), { rangeStart: C, rangeEnd: x2 } = E.calculateRange(h4, v, o), b = h4.slice(C, x2), B = Math.min(C, h4.lastIndexOf(`
`, C) + 1), k = h4.slice(B, C).match(/^\s*/)[0], M = n(k, v.tabWidth), R = S3(b, Object.assign(Object.assign({}, v), {}, { rangeStart: 0, rangeEnd: Number.POSITIVE_INFINITY, cursorOffset: v.cursorOffset > C && v.cursorOffset <= x2 ? v.cursorOffset - C : -1, endOfLine: "lf" }), M), q2 = R.formatted.trimEnd(), { cursorOffset: J } = v;
            J > x2 ? J += q2.length - b.length : R.cursorOffset >= 0 && (J = R.cursorOffset + C);
            let L = h4.slice(0, C) + q2 + h4.slice(x2);
            if (v.endOfLine !== "lf") {
              let Q = i2(v.endOfLine);
              J >= 0 && Q === `\r
` && (J += l(L.slice(0, J), `
`)), L = L.replace(/\n/g, Q);
            }
            return { formatted: L, cursorOffset: J, comments: R.comments };
          }
          function I(m2, v, o) {
            return typeof v != "number" || Number.isNaN(v) || v < 0 || v > m2.length ? o : v;
          }
          function P(m2, v) {
            let { cursorOffset: o, rangeStart: h4, rangeEnd: C } = v;
            return o = I(m2, o, -1), h4 = I(m2, h4, 0), C = I(m2, C, m2.length), Object.assign(Object.assign({}, v), {}, { cursorOffset: o, rangeStart: h4, rangeEnd: C });
          }
          function $2(m2, v) {
            let { cursorOffset: o, rangeStart: h4, rangeEnd: C, endOfLine: x2 } = P(m2, v), b = m2.charAt(0) === _2;
            if (b && (m2 = m2.slice(1), o--, h4--, C--), x2 === "auto" && (x2 = u3(m2)), m2.includes("\r")) {
              let B = (k) => l(m2.slice(0, Math.max(k, 0)), `\r
`);
              o -= B(o), h4 -= B(h4), C -= B(C), m2 = p5(m2);
            }
            return { hasBOM: b, text: m2, options: P(m2, Object.assign(Object.assign({}, v), {}, { cursorOffset: o, rangeStart: h4, rangeEnd: C, endOfLine: x2 })) };
          }
          function f3(m2, v) {
            let o = c.resolveParser(v);
            return !o.hasPragma || o.hasPragma(m2);
          }
          function T2(m2, v) {
            let { hasBOM: o, text: h4, options: C } = $2(m2, d(v));
            if (C.rangeStart >= C.rangeEnd && h4 !== "" || C.requirePragma && !f3(h4, C))
              return { formatted: m2, cursorOffset: v.cursorOffset, comments: [] };
            let x2;
            return C.rangeStart > 0 || C.rangeEnd < h4.length ? x2 = N(h4, C) : (!C.requirePragma && C.insertPragma && C.printer.insertPragma && !f3(h4, C) && (h4 = C.printer.insertPragma(h4)), x2 = S3(h4, C)), o && (x2.formatted = _2 + x2.formatted, x2.cursorOffset >= 0 && x2.cursorOffset++), x2;
          }
          r2.exports = { formatWithCursor: T2, parse(m2, v, o) {
            let { text: h4, options: C } = $2(m2, d(v)), x2 = c.parse(h4, C);
            return o && (x2.ast = y(x2.ast, C)), x2;
          }, formatAST(m2, v) {
            v = d(v);
            let o = D2(m2, v);
            return s5(o, v);
          }, formatDoc(m2, v) {
            return T2(a2(m2), Object.assign(Object.assign({}, v), {}, { parser: "__js_expression" })).formatted;
          }, printToDoc(m2, v) {
            v = d(v);
            let { ast: o, text: h4 } = c.parse(m2, v);
            return F2(h4, o, v), D2(o, v);
          }, printDocToString(m2, v) {
            return s5(m2, d(v));
          } };
        } }), Um = te({ "src/common/util-shared.js"(e2, r2) {
          "use strict";
          ne();
          var { getMaxContinuousCount: t2, getStringWidth: s5, getAlignmentSize: a2, getIndentSize: n, skip: u3, skipWhitespace: i2, skipSpaces: l, skipNewline: p5, skipToLineEnd: d, skipEverythingButNewLine: y, skipInlineComment: g, skipTrailingComment: c, hasNewline: D2, hasNewlineInRange: E, hasSpaces: _2, isNextLineEmpty: w, isNextLineEmptyAfterIndex: F2, isPreviousLineEmpty: S3, getNextNonSpaceNonCommentCharacterIndex: N, makeString: I, addLeadingComment: P, addDanglingComment: $2, addTrailingComment: f3 } = Ue();
          r2.exports = { getMaxContinuousCount: t2, getStringWidth: s5, getAlignmentSize: a2, getIndentSize: n, skip: u3, skipWhitespace: i2, skipSpaces: l, skipNewline: p5, skipToLineEnd: d, skipEverythingButNewLine: y, skipInlineComment: g, skipTrailingComment: c, hasNewline: D2, hasNewlineInRange: E, hasSpaces: _2, isNextLineEmpty: w, isNextLineEmptyAfterIndex: F2, isPreviousLineEmpty: S3, getNextNonSpaceNonCommentCharacterIndex: N, makeString: I, addLeadingComment: P, addDanglingComment: $2, addTrailingComment: f3 };
        } }), _t = te({ "src/utils/create-language.js"(e2, r2) {
          "use strict";
          ne(), r2.exports = function(t2, s5) {
            let { languageId: a2 } = t2, n = Hn(t2, CD);
            return Object.assign(Object.assign({ linguistLanguageId: a2 }, n), s5(t2));
          };
        } }), Jm = te({ "node_modules/esutils/lib/ast.js"(e2, r2) {
          ne(), (function() {
            "use strict";
            function t2(l) {
              if (l == null)
                return false;
              switch (l.type) {
                case "ArrayExpression":
                case "AssignmentExpression":
                case "BinaryExpression":
                case "CallExpression":
                case "ConditionalExpression":
                case "FunctionExpression":
                case "Identifier":
                case "Literal":
                case "LogicalExpression":
                case "MemberExpression":
                case "NewExpression":
                case "ObjectExpression":
                case "SequenceExpression":
                case "ThisExpression":
                case "UnaryExpression":
                case "UpdateExpression":
                  return true;
              }
              return false;
            }
            function s5(l) {
              if (l == null)
                return false;
              switch (l.type) {
                case "DoWhileStatement":
                case "ForInStatement":
                case "ForStatement":
                case "WhileStatement":
                  return true;
              }
              return false;
            }
            function a2(l) {
              if (l == null)
                return false;
              switch (l.type) {
                case "BlockStatement":
                case "BreakStatement":
                case "ContinueStatement":
                case "DebuggerStatement":
                case "DoWhileStatement":
                case "EmptyStatement":
                case "ExpressionStatement":
                case "ForInStatement":
                case "ForStatement":
                case "IfStatement":
                case "LabeledStatement":
                case "ReturnStatement":
                case "SwitchStatement":
                case "ThrowStatement":
                case "TryStatement":
                case "VariableDeclaration":
                case "WhileStatement":
                case "WithStatement":
                  return true;
              }
              return false;
            }
            function n(l) {
              return a2(l) || l != null && l.type === "FunctionDeclaration";
            }
            function u3(l) {
              switch (l.type) {
                case "IfStatement":
                  return l.alternate != null ? l.alternate : l.consequent;
                case "LabeledStatement":
                case "ForStatement":
                case "ForInStatement":
                case "WhileStatement":
                case "WithStatement":
                  return l.body;
              }
              return null;
            }
            function i2(l) {
              var p5;
              if (l.type !== "IfStatement" || l.alternate == null)
                return false;
              p5 = l.consequent;
              do {
                if (p5.type === "IfStatement" && p5.alternate == null)
                  return true;
                p5 = u3(p5);
              } while (p5);
              return false;
            }
            r2.exports = { isExpression: t2, isStatement: a2, isIterationStatement: s5, isSourceElement: n, isProblematicIfStatement: i2, trailingStatement: u3 };
          })();
        } }), so = te({ "node_modules/esutils/lib/code.js"(e2, r2) {
          ne(), (function() {
            "use strict";
            var t2, s5, a2, n, u3, i2;
            s5 = { NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, NonAsciiIdentifierPart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/ }, t2 = { NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/, NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ };
            function l(F2) {
              return 48 <= F2 && F2 <= 57;
            }
            function p5(F2) {
              return 48 <= F2 && F2 <= 57 || 97 <= F2 && F2 <= 102 || 65 <= F2 && F2 <= 70;
            }
            function d(F2) {
              return F2 >= 48 && F2 <= 55;
            }
            a2 = [5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8239, 8287, 12288, 65279];
            function y(F2) {
              return F2 === 32 || F2 === 9 || F2 === 11 || F2 === 12 || F2 === 160 || F2 >= 5760 && a2.indexOf(F2) >= 0;
            }
            function g(F2) {
              return F2 === 10 || F2 === 13 || F2 === 8232 || F2 === 8233;
            }
            function c(F2) {
              if (F2 <= 65535)
                return String.fromCharCode(F2);
              var S3 = String.fromCharCode(Math.floor((F2 - 65536) / 1024) + 55296), N = String.fromCharCode((F2 - 65536) % 1024 + 56320);
              return S3 + N;
            }
            for (n = new Array(128), i2 = 0; i2 < 128; ++i2)
              n[i2] = i2 >= 97 && i2 <= 122 || i2 >= 65 && i2 <= 90 || i2 === 36 || i2 === 95;
            for (u3 = new Array(128), i2 = 0; i2 < 128; ++i2)
              u3[i2] = i2 >= 97 && i2 <= 122 || i2 >= 65 && i2 <= 90 || i2 >= 48 && i2 <= 57 || i2 === 36 || i2 === 95;
            function D2(F2) {
              return F2 < 128 ? n[F2] : s5.NonAsciiIdentifierStart.test(c(F2));
            }
            function E(F2) {
              return F2 < 128 ? u3[F2] : s5.NonAsciiIdentifierPart.test(c(F2));
            }
            function _2(F2) {
              return F2 < 128 ? n[F2] : t2.NonAsciiIdentifierStart.test(c(F2));
            }
            function w(F2) {
              return F2 < 128 ? u3[F2] : t2.NonAsciiIdentifierPart.test(c(F2));
            }
            r2.exports = { isDecimalDigit: l, isHexDigit: p5, isOctalDigit: d, isWhiteSpace: y, isLineTerminator: g, isIdentifierStartES5: D2, isIdentifierPartES5: E, isIdentifierStartES6: _2, isIdentifierPartES6: w };
          })();
        } }), zm = te({ "node_modules/esutils/lib/keyword.js"(e2, r2) {
          ne(), (function() {
            "use strict";
            var t2 = so();
            function s5(D2) {
              switch (D2) {
                case "implements":
                case "interface":
                case "package":
                case "private":
                case "protected":
                case "public":
                case "static":
                case "let":
                  return true;
                default:
                  return false;
              }
            }
            function a2(D2, E) {
              return !E && D2 === "yield" ? false : n(D2, E);
            }
            function n(D2, E) {
              if (E && s5(D2))
                return true;
              switch (D2.length) {
                case 2:
                  return D2 === "if" || D2 === "in" || D2 === "do";
                case 3:
                  return D2 === "var" || D2 === "for" || D2 === "new" || D2 === "try";
                case 4:
                  return D2 === "this" || D2 === "else" || D2 === "case" || D2 === "void" || D2 === "with" || D2 === "enum";
                case 5:
                  return D2 === "while" || D2 === "break" || D2 === "catch" || D2 === "throw" || D2 === "const" || D2 === "yield" || D2 === "class" || D2 === "super";
                case 6:
                  return D2 === "return" || D2 === "typeof" || D2 === "delete" || D2 === "switch" || D2 === "export" || D2 === "import";
                case 7:
                  return D2 === "default" || D2 === "finally" || D2 === "extends";
                case 8:
                  return D2 === "function" || D2 === "continue" || D2 === "debugger";
                case 10:
                  return D2 === "instanceof";
                default:
                  return false;
              }
            }
            function u3(D2, E) {
              return D2 === "null" || D2 === "true" || D2 === "false" || a2(D2, E);
            }
            function i2(D2, E) {
              return D2 === "null" || D2 === "true" || D2 === "false" || n(D2, E);
            }
            function l(D2) {
              return D2 === "eval" || D2 === "arguments";
            }
            function p5(D2) {
              var E, _2, w;
              if (D2.length === 0 || (w = D2.charCodeAt(0), !t2.isIdentifierStartES5(w)))
                return false;
              for (E = 1, _2 = D2.length; E < _2; ++E)
                if (w = D2.charCodeAt(E), !t2.isIdentifierPartES5(w))
                  return false;
              return true;
            }
            function d(D2, E) {
              return (D2 - 55296) * 1024 + (E - 56320) + 65536;
            }
            function y(D2) {
              var E, _2, w, F2, S3;
              if (D2.length === 0)
                return false;
              for (S3 = t2.isIdentifierStartES6, E = 0, _2 = D2.length; E < _2; ++E) {
                if (w = D2.charCodeAt(E), 55296 <= w && w <= 56319) {
                  if (++E, E >= _2 || (F2 = D2.charCodeAt(E), !(56320 <= F2 && F2 <= 57343)))
                    return false;
                  w = d(w, F2);
                }
                if (!S3(w))
                  return false;
                S3 = t2.isIdentifierPartES6;
              }
              return true;
            }
            function g(D2, E) {
              return p5(D2) && !u3(D2, E);
            }
            function c(D2, E) {
              return y(D2) && !i2(D2, E);
            }
            r2.exports = { isKeywordES5: a2, isKeywordES6: n, isReservedWordES5: u3, isReservedWordES6: i2, isRestrictedWord: l, isIdentifierNameES5: p5, isIdentifierNameES6: y, isIdentifierES5: g, isIdentifierES6: c };
          })();
        } }), Xm = te({ "node_modules/esutils/lib/utils.js"(e2) {
          ne(), (function() {
            "use strict";
            e2.ast = Jm(), e2.code = so(), e2.keyword = zm();
          })();
        } }), Ot = te({ "src/language-js/utils/is-block-comment.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = /* @__PURE__ */ new Set(["Block", "CommentBlock", "MultiLine"]), s5 = (a2) => t2.has(a2 == null ? void 0 : a2.type);
          r2.exports = s5;
        } }), Km = te({ "src/language-js/utils/is-node-matches.js"(e2, r2) {
          "use strict";
          ne();
          function t2(a2, n) {
            let u3 = n.split(".");
            for (let i2 = u3.length - 1; i2 >= 0; i2--) {
              let l = u3[i2];
              if (i2 === 0)
                return a2.type === "Identifier" && a2.name === l;
              if (a2.type !== "MemberExpression" || a2.optional || a2.computed || a2.property.type !== "Identifier" || a2.property.name !== l)
                return false;
              a2 = a2.object;
            }
          }
          function s5(a2, n) {
            return n.some((u3) => t2(a2, u3));
          }
          r2.exports = s5;
        } }), Ke = te({ "src/language-js/utils/index.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Xm().keyword.isIdentifierNameES5, { getLast: s5, hasNewline: a2, skipWhitespace: n, isNonEmptyArray: u3, isNextLineEmptyAfterIndex: i2, getStringWidth: l } = Ue(), { locStart: p5, locEnd: d, hasSameLocStart: y } = ut(), g = Ot(), c = Km(), D2 = "(?:(?=.)\\s)", E = new RegExp(`^${D2}*:`), _2 = new RegExp(`^${D2}*::`);
          function w(O) {
            var me, _e;
            return ((me = O.extra) === null || me === void 0 ? void 0 : me.parenthesized) && g((_e = O.trailingComments) === null || _e === void 0 ? void 0 : _e[0]) && E.test(O.trailingComments[0].value);
          }
          function F2(O) {
            let me = O == null ? void 0 : O[0];
            return g(me) && _2.test(me.value);
          }
          function S3(O, me) {
            if (!O || typeof O != "object")
              return false;
            if (Array.isArray(O))
              return O.some((He) => S3(He, me));
            let _e = me(O);
            return typeof _e == "boolean" ? _e : Object.values(O).some((He) => S3(He, me));
          }
          function N(O) {
            return O.type === "AssignmentExpression" || O.type === "BinaryExpression" || O.type === "LogicalExpression" || O.type === "NGPipeExpression" || O.type === "ConditionalExpression" || de(O) || ue(O) || O.type === "SequenceExpression" || O.type === "TaggedTemplateExpression" || O.type === "BindExpression" || O.type === "UpdateExpression" && !O.prefix || st(O) || O.type === "TSNonNullExpression";
          }
          function I(O) {
            var me, _e, He, Ge, it, Qe;
            return O.expressions ? O.expressions[0] : (me = (_e = (He = (Ge = (it = (Qe = O.left) !== null && Qe !== void 0 ? Qe : O.test) !== null && it !== void 0 ? it : O.callee) !== null && Ge !== void 0 ? Ge : O.object) !== null && He !== void 0 ? He : O.tag) !== null && _e !== void 0 ? _e : O.argument) !== null && me !== void 0 ? me : O.expression;
          }
          function P(O, me) {
            if (me.expressions)
              return ["expressions", 0];
            if (me.left)
              return ["left"];
            if (me.test)
              return ["test"];
            if (me.object)
              return ["object"];
            if (me.callee)
              return ["callee"];
            if (me.tag)
              return ["tag"];
            if (me.argument)
              return ["argument"];
            if (me.expression)
              return ["expression"];
            throw new Error("Unexpected node has no left side.");
          }
          function $2(O) {
            return O = new Set(O), (me) => O.has(me == null ? void 0 : me.type);
          }
          var f3 = $2(["Line", "CommentLine", "SingleLine", "HashbangComment", "HTMLOpen", "HTMLClose"]), T2 = $2(["ExportDefaultDeclaration", "ExportDefaultSpecifier", "DeclareExportDeclaration", "ExportNamedDeclaration", "ExportAllDeclaration"]);
          function m2(O) {
            let me = O.getParentNode();
            return O.getName() === "declaration" && T2(me) ? me : null;
          }
          var v = $2(["BooleanLiteral", "DirectiveLiteral", "Literal", "NullLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "RegExpLiteral", "StringLiteral", "TemplateLiteral", "TSTypeLiteral", "JSXText"]);
          function o(O) {
            return O.type === "NumericLiteral" || O.type === "Literal" && typeof O.value == "number";
          }
          function h4(O) {
            return O.type === "UnaryExpression" && (O.operator === "+" || O.operator === "-") && o(O.argument);
          }
          function C(O) {
            return O.type === "StringLiteral" || O.type === "Literal" && typeof O.value == "string";
          }
          var x2 = $2(["ObjectTypeAnnotation", "TSTypeLiteral", "TSMappedType"]), b = $2(["FunctionExpression", "ArrowFunctionExpression"]);
          function B(O) {
            return O.type === "FunctionExpression" || O.type === "ArrowFunctionExpression" && O.body.type === "BlockStatement";
          }
          function k(O) {
            return de(O) && O.callee.type === "Identifier" && ["async", "inject", "fakeAsync", "waitForAsync"].includes(O.callee.name);
          }
          var M = $2(["JSXElement", "JSXFragment"]);
          function R(O, me) {
            if (O.parentParser !== "markdown" && O.parentParser !== "mdx")
              return false;
            let _e = me.getNode();
            if (!_e.expression || !M(_e.expression))
              return false;
            let He = me.getParentNode();
            return He.type === "Program" && He.body.length === 1;
          }
          function q2(O) {
            return O.kind === "get" || O.kind === "set";
          }
          function J(O) {
            return q2(O) || y(O, O.value);
          }
          function L(O) {
            return (O.type === "ObjectTypeProperty" || O.type === "ObjectTypeInternalSlot") && O.value.type === "FunctionTypeAnnotation" && !O.static && !J(O);
          }
          function Q(O) {
            return (O.type === "TypeAnnotation" || O.type === "TSTypeAnnotation") && O.typeAnnotation.type === "FunctionTypeAnnotation" && !O.static && !y(O, O.typeAnnotation);
          }
          var V = $2(["BinaryExpression", "LogicalExpression", "NGPipeExpression"]);
          function j(O) {
            return ue(O) || O.type === "BindExpression" && Boolean(O.object);
          }
          var Y = /* @__PURE__ */ new Set(["AnyTypeAnnotation", "TSAnyKeyword", "NullLiteralTypeAnnotation", "TSNullKeyword", "ThisTypeAnnotation", "TSThisType", "NumberTypeAnnotation", "TSNumberKeyword", "VoidTypeAnnotation", "TSVoidKeyword", "BooleanTypeAnnotation", "TSBooleanKeyword", "BigIntTypeAnnotation", "TSBigIntKeyword", "SymbolTypeAnnotation", "TSSymbolKeyword", "StringTypeAnnotation", "TSStringKeyword", "BooleanLiteralTypeAnnotation", "StringLiteralTypeAnnotation", "BigIntLiteralTypeAnnotation", "NumberLiteralTypeAnnotation", "TSLiteralType", "TSTemplateLiteralType", "EmptyTypeAnnotation", "MixedTypeAnnotation", "TSNeverKeyword", "TSObjectKeyword", "TSUndefinedKeyword", "TSUnknownKeyword"]);
          function ie(O) {
            return O ? !!((O.type === "GenericTypeAnnotation" || O.type === "TSTypeReference") && !O.typeParameters || Y.has(O.type)) : false;
          }
          function ee(O) {
            let me = /^(?:before|after)(?:Each|All)$/;
            return O.callee.type === "Identifier" && me.test(O.callee.name) && O.arguments.length === 1;
          }
          var le = ["it", "it.only", "it.skip", "describe", "describe.only", "describe.skip", "test", "test.only", "test.skip", "test.step", "test.describe", "test.describe.only", "test.describe.parallel", "test.describe.parallel.only", "test.describe.serial", "test.describe.serial.only", "skip", "xit", "xdescribe", "xtest", "fit", "fdescribe", "ftest"];
          function W(O) {
            return c(O, le);
          }
          function K(O, me) {
            if (O.type !== "CallExpression")
              return false;
            if (O.arguments.length === 1) {
              if (k(O) && me && K(me))
                return b(O.arguments[0]);
              if (ee(O))
                return k(O.arguments[0]);
            } else if ((O.arguments.length === 2 || O.arguments.length === 3) && (O.arguments[0].type === "TemplateLiteral" || C(O.arguments[0])) && W(O.callee))
              return O.arguments[2] && !o(O.arguments[2]) ? false : (O.arguments.length === 2 ? b(O.arguments[1]) : B(O.arguments[1]) && ve(O.arguments[1]).length <= 1) || k(O.arguments[1]);
            return false;
          }
          var de = $2(["CallExpression", "OptionalCallExpression"]), ue = $2(["MemberExpression", "OptionalMemberExpression"]);
          function Fe(O) {
            let me = "expressions";
            O.type === "TSTemplateLiteralType" && (me = "types");
            let _e = O[me];
            return _e.length === 0 ? false : _e.every((He) => {
              if (Me(He))
                return false;
              if (He.type === "Identifier" || He.type === "ThisExpression")
                return true;
              if (ue(He)) {
                let Ge = He;
                for (; ue(Ge); )
                  if (Ge.property.type !== "Identifier" && Ge.property.type !== "Literal" && Ge.property.type !== "StringLiteral" && Ge.property.type !== "NumericLiteral" || (Ge = Ge.object, Me(Ge)))
                    return false;
                return Ge.type === "Identifier" || Ge.type === "ThisExpression";
              }
              return false;
            });
          }
          function z2(O, me) {
            return O === "+" || O === "-" ? O + me : me;
          }
          function U(O, me) {
            let _e = p5(me), He = n(O, d(me));
            return He !== false && O.slice(_e, _e + 2) === "/*" && O.slice(He, He + 2) === "*/";
          }
          function Z2(O, me) {
            return M(me) ? Oe(me) : Me(me, Te.Leading, (_e) => a2(O, d(_e)));
          }
          function se(O, me) {
            return me.parser !== "json" && C(O.key) && oe(O.key).slice(1, -1) === O.key.value && (t2(O.key.value) && !(me.parser === "babel-ts" && O.type === "ClassProperty" || me.parser === "typescript" && O.type === "PropertyDefinition") || De(O.key.value) && String(Number(O.key.value)) === O.key.value && (me.parser === "babel" || me.parser === "acorn" || me.parser === "espree" || me.parser === "meriyah" || me.parser === "__babel_estree"));
          }
          function De(O) {
            return /^(?:\d+|\d+\.\d+)$/.test(O);
          }
          function ge(O, me) {
            let _e = /^[fx]?(?:describe|it|test)$/;
            return me.type === "TaggedTemplateExpression" && me.quasi === O && me.tag.type === "MemberExpression" && me.tag.property.type === "Identifier" && me.tag.property.name === "each" && (me.tag.object.type === "Identifier" && _e.test(me.tag.object.name) || me.tag.object.type === "MemberExpression" && me.tag.object.property.type === "Identifier" && (me.tag.object.property.name === "only" || me.tag.object.property.name === "skip") && me.tag.object.object.type === "Identifier" && _e.test(me.tag.object.object.name));
          }
          function he2(O) {
            return O.quasis.some((me) => me.value.raw.includes(`
`));
          }
          function we(O, me) {
            return (O.type === "TemplateLiteral" && he2(O) || O.type === "TaggedTemplateExpression" && he2(O.quasi)) && !a2(me, p5(O), { backwards: true });
          }
          function ke(O) {
            if (!Me(O))
              return false;
            let me = s5(ae(O, Te.Dangling));
            return me && !g(me);
          }
          function Re(O) {
            if (O.length <= 1)
              return false;
            let me = 0;
            for (let _e of O)
              if (b(_e)) {
                if (me += 1, me > 1)
                  return true;
              } else if (de(_e)) {
                for (let He of _e.arguments)
                  if (b(He))
                    return true;
              }
            return false;
          }
          function Ne(O) {
            let me = O.getValue(), _e = O.getParentNode();
            return de(me) && de(_e) && _e.callee === me && me.arguments.length > _e.arguments.length && _e.arguments.length > 0;
          }
          function Pe(O, me) {
            if (me >= 2)
              return false;
            let _e = (Qe) => Pe(Qe, me + 1), He = O.type === "Literal" && "regex" in O && O.regex.pattern || O.type === "RegExpLiteral" && O.pattern;
            if (He && l(He) > 5)
              return false;
            if (O.type === "Literal" || O.type === "BigIntLiteral" || O.type === "DecimalLiteral" || O.type === "BooleanLiteral" || O.type === "NullLiteral" || O.type === "NumericLiteral" || O.type === "RegExpLiteral" || O.type === "StringLiteral" || O.type === "Identifier" || O.type === "ThisExpression" || O.type === "Super" || O.type === "PrivateName" || O.type === "PrivateIdentifier" || O.type === "ArgumentPlaceholder" || O.type === "Import")
              return true;
            if (O.type === "TemplateLiteral")
              return O.quasis.every((Qe) => !Qe.value.raw.includes(`
`)) && O.expressions.every(_e);
            if (O.type === "ObjectExpression")
              return O.properties.every((Qe) => !Qe.computed && (Qe.shorthand || Qe.value && _e(Qe.value)));
            if (O.type === "ArrayExpression")
              return O.elements.every((Qe) => Qe === null || _e(Qe));
            if (tt(O))
              return (O.type === "ImportExpression" || Pe(O.callee, me)) && Ye(O).every(_e);
            if (ue(O))
              return Pe(O.object, me) && Pe(O.property, me);
            let Ge = { "!": true, "-": true, "+": true, "~": true };
            if (O.type === "UnaryExpression" && Ge[O.operator])
              return Pe(O.argument, me);
            let it = { "++": true, "--": true };
            return O.type === "UpdateExpression" && it[O.operator] ? Pe(O.argument, me) : O.type === "TSNonNullExpression" ? Pe(O.expression, me) : false;
          }
          function oe(O) {
            var me, _e;
            return (me = (_e = O.extra) === null || _e === void 0 ? void 0 : _e.raw) !== null && me !== void 0 ? me : O.raw;
          }
          function H(O) {
            return O;
          }
          function ce(O) {
            return O.filepath && /\.tsx$/i.test(O.filepath);
          }
          function X(O) {
            let me = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "es5";
            return O.trailingComma === "es5" && me === "es5" || O.trailingComma === "all" && (me === "all" || me === "es5");
          }
          function pe(O, me) {
            switch (O.type) {
              case "BinaryExpression":
              case "LogicalExpression":
              case "AssignmentExpression":
              case "NGPipeExpression":
                return pe(O.left, me);
              case "MemberExpression":
              case "OptionalMemberExpression":
                return pe(O.object, me);
              case "TaggedTemplateExpression":
                return O.tag.type === "FunctionExpression" ? false : pe(O.tag, me);
              case "CallExpression":
              case "OptionalCallExpression":
                return O.callee.type === "FunctionExpression" ? false : pe(O.callee, me);
              case "ConditionalExpression":
                return pe(O.test, me);
              case "UpdateExpression":
                return !O.prefix && pe(O.argument, me);
              case "BindExpression":
                return O.object && pe(O.object, me);
              case "SequenceExpression":
                return pe(O.expressions[0], me);
              case "TSSatisfiesExpression":
              case "TSAsExpression":
              case "TSNonNullExpression":
                return pe(O.expression, me);
              default:
                return me(O);
            }
          }
          var Ae = { "==": true, "!=": true, "===": true, "!==": true }, Ce = { "*": true, "/": true, "%": true }, fe = { ">>": true, ">>>": true, "<<": true };
          function A2(O, me) {
            return !(re(me) !== re(O) || O === "**" || Ae[O] && Ae[me] || me === "%" && Ce[O] || O === "%" && Ce[me] || me !== O && Ce[me] && Ce[O] || fe[O] && fe[me]);
          }
          var G = new Map([["|>"], ["??"], ["||"], ["&&"], ["|"], ["^"], ["&"], ["==", "===", "!=", "!=="], ["<", ">", "<=", ">=", "in", "instanceof"], [">>", "<<", ">>>"], ["+", "-"], ["*", "/", "%"], ["**"]].flatMap((O, me) => O.map((_e) => [_e, me])));
          function re(O) {
            return G.get(O);
          }
          function ye(O) {
            return Boolean(fe[O]) || O === "|" || O === "^" || O === "&";
          }
          function Ee(O) {
            var me;
            if (O.rest)
              return true;
            let _e = ve(O);
            return ((me = s5(_e)) === null || me === void 0 ? void 0 : me.type) === "RestElement";
          }
          var Be = /* @__PURE__ */ new WeakMap();
          function ve(O) {
            if (Be.has(O))
              return Be.get(O);
            let me = [];
            return O.this && me.push(O.this), Array.isArray(O.parameters) ? me.push(...O.parameters) : Array.isArray(O.params) && me.push(...O.params), O.rest && me.push(O.rest), Be.set(O, me), me;
          }
          function ze(O, me) {
            let _e = O.getValue(), He = 0, Ge = (it) => me(it, He++);
            _e.this && O.call(Ge, "this"), Array.isArray(_e.parameters) ? O.each(Ge, "parameters") : Array.isArray(_e.params) && O.each(Ge, "params"), _e.rest && O.call(Ge, "rest");
          }
          var be = /* @__PURE__ */ new WeakMap();
          function Ye(O) {
            if (be.has(O))
              return be.get(O);
            let me = O.arguments;
            return O.type === "ImportExpression" && (me = [O.source], O.attributes && me.push(O.attributes)), be.set(O, me), me;
          }
          function Se(O, me) {
            let _e = O.getValue();
            _e.type === "ImportExpression" ? (O.call((He) => me(He, 0), "source"), _e.attributes && O.call((He) => me(He, 1), "attributes")) : O.each(me, "arguments");
          }
          function Ie(O) {
            return O.value.trim() === "prettier-ignore" && !O.unignore;
          }
          function Oe(O) {
            return O && (O.prettierIgnore || Me(O, Te.PrettierIgnore));
          }
          function Je(O) {
            let me = O.getValue();
            return Oe(me);
          }
          var Te = { Leading: 1 << 1, Trailing: 1 << 2, Dangling: 1 << 3, Block: 1 << 4, Line: 1 << 5, PrettierIgnore: 1 << 6, First: 1 << 7, Last: 1 << 8 }, je = (O, me) => {
            if (typeof O == "function" && (me = O, O = 0), O || me)
              return (_e, He, Ge) => !(O & Te.Leading && !_e.leading || O & Te.Trailing && !_e.trailing || O & Te.Dangling && (_e.leading || _e.trailing) || O & Te.Block && !g(_e) || O & Te.Line && !f3(_e) || O & Te.First && He !== 0 || O & Te.Last && He !== Ge.length - 1 || O & Te.PrettierIgnore && !Ie(_e) || me && !me(_e));
          };
          function Me(O, me, _e) {
            if (!u3(O == null ? void 0 : O.comments))
              return false;
            let He = je(me, _e);
            return He ? O.comments.some(He) : true;
          }
          function ae(O, me, _e) {
            if (!Array.isArray(O == null ? void 0 : O.comments))
              return [];
            let He = je(me, _e);
            return He ? O.comments.filter(He) : O.comments;
          }
          var nt = (O, me) => {
            let { originalText: _e } = me;
            return i2(_e, d(O));
          };
          function tt(O) {
            return de(O) || O.type === "NewExpression" || O.type === "ImportExpression";
          }
          function Ve(O) {
            return O && (O.type === "ObjectProperty" || O.type === "Property" && !O.method && O.kind === "init");
          }
          function We(O) {
            return Boolean(O.__isUsingHackPipeline);
          }
          var Xe = Symbol("ifWithoutBlockAndSameLineComment");
          function st(O) {
            return O.type === "TSAsExpression" || O.type === "TSSatisfiesExpression";
          }
          r2.exports = { getFunctionParameters: ve, iterateFunctionParametersPath: ze, getCallArguments: Ye, iterateCallArgumentsPath: Se, hasRestParameter: Ee, getLeftSide: I, getLeftSidePathName: P, getParentExportDeclaration: m2, getTypeScriptMappedTypeModifier: z2, hasFlowAnnotationComment: F2, hasFlowShorthandAnnotationComment: w, hasLeadingOwnLineComment: Z2, hasNakedLeftSide: N, hasNode: S3, hasIgnoreComment: Je, hasNodeIgnoreComment: Oe, identity: H, isBinaryish: V, isCallLikeExpression: tt, isEnabledHackPipeline: We, isLineComment: f3, isPrettierIgnoreComment: Ie, isCallExpression: de, isMemberExpression: ue, isExportDeclaration: T2, isFlowAnnotationComment: U, isFunctionCompositionArgs: Re, isFunctionNotation: J, isFunctionOrArrowExpression: b, isGetterOrSetter: q2, isJestEachTemplateLiteral: ge, isJsxNode: M, isLiteral: v, isLongCurriedCallExpression: Ne, isSimpleCallArgument: Pe, isMemberish: j, isNumericLiteral: o, isSignedNumericLiteral: h4, isObjectProperty: Ve, isObjectType: x2, isObjectTypePropertyAFunction: L, isSimpleType: ie, isSimpleNumber: De, isSimpleTemplateLiteral: Fe, isStringLiteral: C, isStringPropSafeToUnquote: se, isTemplateOnItsOwnLine: we, isTestCall: K, isTheOnlyJsxElementInMarkdown: R, isTSXFile: ce, isTypeAnnotationAFunction: Q, isNextLineEmpty: nt, needsHardlineAfterDanglingComment: ke, rawText: oe, shouldPrintComma: X, isBitwiseOperator: ye, shouldFlatten: A2, startsWithNoLookaheadToken: pe, getPrecedence: re, hasComment: Me, getComments: ae, CommentCheckFlags: Te, markerForIfWithoutBlockAndSameLineComment: Xe, isTSTypeExpression: st };
        } }), jt = te({ "src/language-js/print/template-literal.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = lt(), { getStringWidth: s5, getIndentSize: a2 } = Ue(), { builders: { join: n, hardline: u3, softline: i2, group: l, indent: p5, align: d, lineSuffixBoundary: y, addAlignmentToDoc: g }, printer: { printDocToString: c }, utils: { mapDoc: D2 } } = qe(), { isBinaryish: E, isJestEachTemplateLiteral: _2, isSimpleTemplateLiteral: w, hasComment: F2, isMemberExpression: S3, isTSTypeExpression: N } = Ke();
          function I(v, o, h4) {
            let C = v.getValue();
            if (C.type === "TemplateLiteral" && _2(C, v.getParentNode())) {
              let R = P(v, h4, o);
              if (R)
                return R;
            }
            let b = "expressions";
            C.type === "TSTemplateLiteralType" && (b = "types");
            let B = [], k = v.map(o, b), M = w(C);
            return M && (k = k.map((R) => c(R, Object.assign(Object.assign({}, h4), {}, { printWidth: Number.POSITIVE_INFINITY })).formatted)), B.push(y, "`"), v.each((R) => {
              let q2 = R.getName();
              if (B.push(o()), q2 < k.length) {
                let { tabWidth: J } = h4, L = R.getValue(), Q = a2(L.value.raw, J), V = k[q2];
                if (!M) {
                  let Y = C[b][q2];
                  (F2(Y) || S3(Y) || Y.type === "ConditionalExpression" || Y.type === "SequenceExpression" || N(Y) || E(Y)) && (V = [p5([i2, V]), i2]);
                }
                let j = Q === 0 && L.value.raw.endsWith(`
`) ? d(Number.NEGATIVE_INFINITY, V) : g(V, Q, J);
                B.push(l(["${", j, y, "}"]));
              }
            }, "quasis"), B.push("`"), B;
          }
          function P(v, o, h4) {
            let C = v.getNode(), x2 = C.quasis[0].value.raw.trim().split(/\s*\|\s*/);
            if (x2.length > 1 || x2.some((b) => b.length > 0)) {
              o.__inJestEach = true;
              let b = v.map(h4, "expressions");
              o.__inJestEach = false;
              let B = [], k = b.map((L) => "${" + c(L, Object.assign(Object.assign({}, o), {}, { printWidth: Number.POSITIVE_INFINITY, endOfLine: "lf" })).formatted + "}"), M = [{ hasLineBreak: false, cells: [] }];
              for (let L = 1; L < C.quasis.length; L++) {
                let Q = t2(M), V = k[L - 1];
                Q.cells.push(V), V.includes(`
`) && (Q.hasLineBreak = true), C.quasis[L].value.raw.includes(`
`) && M.push({ hasLineBreak: false, cells: [] });
              }
              let R = Math.max(x2.length, ...M.map((L) => L.cells.length)), q2 = Array.from({ length: R }).fill(0), J = [{ cells: x2 }, ...M.filter((L) => L.cells.length > 0)];
              for (let { cells: L } of J.filter((Q) => !Q.hasLineBreak))
                for (let [Q, V] of L.entries())
                  q2[Q] = Math.max(q2[Q], s5(V));
              return B.push(y, "`", p5([u3, n(u3, J.map((L) => n(" | ", L.cells.map((Q, V) => L.hasLineBreak ? Q : Q + " ".repeat(q2[V] - s5(Q))))))]), u3, "`"), B;
            }
          }
          function $2(v, o) {
            let h4 = v.getValue(), C = o();
            return F2(h4) && (C = l([p5([i2, C]), i2])), ["${", C, y, "}"];
          }
          function f3(v, o) {
            return v.map((h4) => $2(h4, o), "expressions");
          }
          function T2(v, o) {
            return D2(v, (h4) => typeof h4 == "string" ? o ? h4.replace(/(\\*)`/g, "$1$1\\`") : m2(h4) : h4);
          }
          function m2(v) {
            return v.replace(/([\\`]|\${)/g, "\\$1");
          }
          r2.exports = { printTemplateLiteral: I, printTemplateExpressions: f3, escapeTemplateCharacters: T2, uncookTemplateElementValue: m2 };
        } }), Ym = te({ "src/language-js/embed/markdown.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { indent: t2, softline: s5, literalline: a2, dedentToRoot: n } } = qe(), { escapeTemplateCharacters: u3 } = jt();
          function i2(p5, d, y) {
            let c = p5.getValue().quasis[0].value.raw.replace(/((?:\\\\)*)\\`/g, (w, F2) => "\\".repeat(F2.length / 2) + "`"), D2 = l(c), E = D2 !== "";
            E && (c = c.replace(new RegExp(`^${D2}`, "gm"), ""));
            let _2 = u3(y(c, { parser: "markdown", __inJsTemplate: true }, { stripTrailingHardline: true }), true);
            return ["`", E ? t2([s5, _2]) : [a2, n(_2)], s5, "`"];
          }
          function l(p5) {
            let d = p5.match(/^([^\S\n]*)\S/m);
            return d === null ? "" : d[1];
          }
          r2.exports = i2;
        } }), Qm = te({ "src/language-js/embed/css.js"(e2, r2) {
          "use strict";
          ne();
          var { isNonEmptyArray: t2 } = Ue(), { builders: { indent: s5, hardline: a2, softline: n }, utils: { mapDoc: u3, replaceEndOfLine: i2, cleanDoc: l } } = qe(), { printTemplateExpressions: p5 } = jt();
          function d(c, D2, E) {
            let _2 = c.getValue(), w = _2.quasis.map((P) => P.value.raw), F2 = 0, S3 = w.reduce((P, $2, f3) => f3 === 0 ? $2 : P + "@prettier-placeholder-" + F2++ + "-id" + $2, ""), N = E(S3, { parser: "scss" }, { stripTrailingHardline: true }), I = p5(c, D2);
            return y(N, _2, I);
          }
          function y(c, D2, E) {
            if (D2.quasis.length === 1 && !D2.quasis[0].value.raw.trim())
              return "``";
            let w = g(c, E);
            if (!w)
              throw new Error("Couldn't insert all the expressions");
            return ["`", s5([a2, w]), n, "`"];
          }
          function g(c, D2) {
            if (!t2(D2))
              return c;
            let E = 0, _2 = u3(l(c), (w) => typeof w != "string" || !w.includes("@prettier-placeholder") ? w : w.split(/@prettier-placeholder-(\d+)-id/).map((F2, S3) => S3 % 2 === 0 ? i2(F2) : (E++, D2[F2])));
            return D2.length === E ? _2 : null;
          }
          r2.exports = d;
        } }), Zm = te({ "src/language-js/embed/graphql.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { indent: t2, join: s5, hardline: a2 } } = qe(), { escapeTemplateCharacters: n, printTemplateExpressions: u3 } = jt();
          function i2(p5, d, y) {
            let g = p5.getValue(), c = g.quasis.length;
            if (c === 1 && g.quasis[0].value.raw.trim() === "")
              return "``";
            let D2 = u3(p5, d), E = [];
            for (let _2 = 0; _2 < c; _2++) {
              let w = g.quasis[_2], F2 = _2 === 0, S3 = _2 === c - 1, N = w.value.cooked, I = N.split(`
`), P = I.length, $2 = D2[_2], f3 = P > 2 && I[0].trim() === "" && I[1].trim() === "", T2 = P > 2 && I[P - 1].trim() === "" && I[P - 2].trim() === "", m2 = I.every((o) => /^\s*(?:#[^\n\r]*)?$/.test(o));
              if (!S3 && /#[^\n\r]*$/.test(I[P - 1]))
                return null;
              let v = null;
              m2 ? v = l(I) : v = y(N, { parser: "graphql" }, { stripTrailingHardline: true }), v ? (v = n(v, false), !F2 && f3 && E.push(""), E.push(v), !S3 && T2 && E.push("")) : !F2 && !S3 && f3 && E.push(""), $2 && E.push($2);
            }
            return ["`", t2([a2, s5(a2, E)]), a2, "`"];
          }
          function l(p5) {
            let d = [], y = false, g = p5.map((c) => c.trim());
            for (let [c, D2] of g.entries())
              D2 !== "" && (g[c - 1] === "" && y ? d.push([a2, D2]) : d.push(D2), y = true);
            return d.length === 0 ? null : s5(a2, d);
          }
          r2.exports = i2;
        } }), ed = te({ "src/language-js/embed/html.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { indent: t2, line: s5, hardline: a2, group: n }, utils: { mapDoc: u3 } } = qe(), { printTemplateExpressions: i2, uncookTemplateElementValue: l } = jt(), p5 = 0;
          function d(y, g, c, D2, E) {
            let { parser: _2 } = E, w = y.getValue(), F2 = p5;
            p5 = p5 + 1 >>> 0;
            let S3 = (h4) => `PRETTIER_HTML_PLACEHOLDER_${h4}_${F2}_IN_JS`, N = w.quasis.map((h4, C, x2) => C === x2.length - 1 ? h4.value.cooked : h4.value.cooked + S3(C)).join(""), I = i2(y, g);
            if (I.length === 0 && N.trim().length === 0)
              return "``";
            let P = new RegExp(S3("(\\d+)"), "g"), $2 = 0, f3 = c(N, { parser: _2, __onHtmlRoot(h4) {
              $2 = h4.children.length;
            } }, { stripTrailingHardline: true }), T2 = u3(f3, (h4) => {
              if (typeof h4 != "string")
                return h4;
              let C = [], x2 = h4.split(P);
              for (let b = 0; b < x2.length; b++) {
                let B = x2[b];
                if (b % 2 === 0) {
                  B && (B = l(B), D2.__embeddedInHtml && (B = B.replace(/<\/(script)\b/gi, "<\\/$1")), C.push(B));
                  continue;
                }
                let k = Number(B);
                C.push(I[k]);
              }
              return C;
            }), m2 = /^\s/.test(N) ? " " : "", v = /\s$/.test(N) ? " " : "", o = D2.htmlWhitespaceSensitivity === "ignore" ? a2 : m2 && v ? s5 : null;
            return n(o ? ["`", t2([o, n(T2)]), o, "`"] : ["`", m2, $2 > 1 ? t2(n(T2)) : n(T2), v, "`"]);
          }
          r2.exports = d;
        } }), td = te({ "src/language-js/embed.js"(e2, r2) {
          "use strict";
          ne();
          var { hasComment: t2, CommentCheckFlags: s5, isObjectProperty: a2 } = Ke(), n = Ym(), u3 = Qm(), i2 = Zm(), l = ed();
          function p5(f3) {
            if (g(f3) || _2(f3) || w(f3) || c(f3))
              return "css";
            if (N(f3))
              return "graphql";
            if (P(f3))
              return "html";
            if (D2(f3))
              return "angular";
            if (y(f3))
              return "markdown";
          }
          function d(f3, T2, m2, v) {
            let o = f3.getValue();
            if (o.type !== "TemplateLiteral" || $2(o))
              return;
            let h4 = p5(f3);
            if (h4) {
              if (h4 === "markdown")
                return n(f3, T2, m2);
              if (h4 === "css")
                return u3(f3, T2, m2);
              if (h4 === "graphql")
                return i2(f3, T2, m2);
              if (h4 === "html" || h4 === "angular")
                return l(f3, T2, m2, v, { parser: h4 });
            }
          }
          function y(f3) {
            let T2 = f3.getValue(), m2 = f3.getParentNode();
            return m2 && m2.type === "TaggedTemplateExpression" && T2.quasis.length === 1 && m2.tag.type === "Identifier" && (m2.tag.name === "md" || m2.tag.name === "markdown");
          }
          function g(f3) {
            let T2 = f3.getValue(), m2 = f3.getParentNode(), v = f3.getParentNode(1);
            return v && T2.quasis && m2.type === "JSXExpressionContainer" && v.type === "JSXElement" && v.openingElement.name.name === "style" && v.openingElement.attributes.some((o) => o.name.name === "jsx") || m2 && m2.type === "TaggedTemplateExpression" && m2.tag.type === "Identifier" && m2.tag.name === "css" || m2 && m2.type === "TaggedTemplateExpression" && m2.tag.type === "MemberExpression" && m2.tag.object.name === "css" && (m2.tag.property.name === "global" || m2.tag.property.name === "resolve");
          }
          function c(f3) {
            return f3.match((T2) => T2.type === "TemplateLiteral", (T2, m2) => T2.type === "ArrayExpression" && m2 === "elements", (T2, m2) => a2(T2) && T2.key.type === "Identifier" && T2.key.name === "styles" && m2 === "value", ...E);
          }
          function D2(f3) {
            return f3.match((T2) => T2.type === "TemplateLiteral", (T2, m2) => a2(T2) && T2.key.type === "Identifier" && T2.key.name === "template" && m2 === "value", ...E);
          }
          var E = [(f3, T2) => f3.type === "ObjectExpression" && T2 === "properties", (f3, T2) => f3.type === "CallExpression" && f3.callee.type === "Identifier" && f3.callee.name === "Component" && T2 === "arguments", (f3, T2) => f3.type === "Decorator" && T2 === "expression"];
          function _2(f3) {
            let T2 = f3.getParentNode();
            if (!T2 || T2.type !== "TaggedTemplateExpression")
              return false;
            let m2 = T2.tag.type === "ParenthesizedExpression" ? T2.tag.expression : T2.tag;
            switch (m2.type) {
              case "MemberExpression":
                return F2(m2.object) || S3(m2);
              case "CallExpression":
                return F2(m2.callee) || m2.callee.type === "MemberExpression" && (m2.callee.object.type === "MemberExpression" && (F2(m2.callee.object.object) || S3(m2.callee.object)) || m2.callee.object.type === "CallExpression" && F2(m2.callee.object.callee));
              case "Identifier":
                return m2.name === "css";
              default:
                return false;
            }
          }
          function w(f3) {
            let T2 = f3.getParentNode(), m2 = f3.getParentNode(1);
            return m2 && T2.type === "JSXExpressionContainer" && m2.type === "JSXAttribute" && m2.name.type === "JSXIdentifier" && m2.name.name === "css";
          }
          function F2(f3) {
            return f3.type === "Identifier" && f3.name === "styled";
          }
          function S3(f3) {
            return /^[A-Z]/.test(f3.object.name) && f3.property.name === "extend";
          }
          function N(f3) {
            let T2 = f3.getValue(), m2 = f3.getParentNode();
            return I(T2, "GraphQL") || m2 && (m2.type === "TaggedTemplateExpression" && (m2.tag.type === "MemberExpression" && m2.tag.object.name === "graphql" && m2.tag.property.name === "experimental" || m2.tag.type === "Identifier" && (m2.tag.name === "gql" || m2.tag.name === "graphql")) || m2.type === "CallExpression" && m2.callee.type === "Identifier" && m2.callee.name === "graphql");
          }
          function I(f3, T2) {
            return t2(f3, s5.Block | s5.Leading, (m2) => {
              let { value: v } = m2;
              return v === ` ${T2} `;
            });
          }
          function P(f3) {
            return I(f3.getValue(), "HTML") || f3.match((T2) => T2.type === "TemplateLiteral", (T2, m2) => T2.type === "TaggedTemplateExpression" && T2.tag.type === "Identifier" && T2.tag.name === "html" && m2 === "quasi");
          }
          function $2(f3) {
            let { quasis: T2 } = f3;
            return T2.some((m2) => {
              let { value: { cooked: v } } = m2;
              return v === null;
            });
          }
          r2.exports = d;
        } }), rd = te({ "src/language-js/clean.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Ot(), s5 = /* @__PURE__ */ new Set(["range", "raw", "comments", "leadingComments", "trailingComments", "innerComments", "extra", "start", "end", "loc", "flags", "errors", "tokens"]), a2 = (u3) => {
            for (let i2 of u3.quasis)
              delete i2.value;
          };
          function n(u3, i2, l) {
            if (u3.type === "Program" && delete i2.sourceType, (u3.type === "BigIntLiteral" || u3.type === "BigIntLiteralTypeAnnotation") && i2.value && (i2.value = i2.value.toLowerCase()), (u3.type === "BigIntLiteral" || u3.type === "Literal") && i2.bigint && (i2.bigint = i2.bigint.toLowerCase()), u3.type === "DecimalLiteral" && (i2.value = Number(i2.value)), u3.type === "Literal" && i2.decimal && (i2.decimal = Number(i2.decimal)), u3.type === "EmptyStatement" || u3.type === "JSXText" || u3.type === "JSXExpressionContainer" && (u3.expression.type === "Literal" || u3.expression.type === "StringLiteral") && u3.expression.value === " ")
              return null;
            if ((u3.type === "Property" || u3.type === "ObjectProperty" || u3.type === "MethodDefinition" || u3.type === "ClassProperty" || u3.type === "ClassMethod" || u3.type === "PropertyDefinition" || u3.type === "TSDeclareMethod" || u3.type === "TSPropertySignature" || u3.type === "ObjectTypeProperty") && typeof u3.key == "object" && u3.key && (u3.key.type === "Literal" || u3.key.type === "NumericLiteral" || u3.key.type === "StringLiteral" || u3.key.type === "Identifier") && delete i2.key, u3.type === "JSXElement" && u3.openingElement.name.name === "style" && u3.openingElement.attributes.some((y) => y.name.name === "jsx"))
              for (let { type: y, expression: g } of i2.children)
                y === "JSXExpressionContainer" && g.type === "TemplateLiteral" && a2(g);
            u3.type === "JSXAttribute" && u3.name.name === "css" && u3.value.type === "JSXExpressionContainer" && u3.value.expression.type === "TemplateLiteral" && a2(i2.value.expression), u3.type === "JSXAttribute" && u3.value && u3.value.type === "Literal" && /["']|&quot;|&apos;/.test(u3.value.value) && (i2.value.value = i2.value.value.replace(/["']|&quot;|&apos;/g, '"'));
            let p5 = u3.expression || u3.callee;
            if (u3.type === "Decorator" && p5.type === "CallExpression" && p5.callee.name === "Component" && p5.arguments.length === 1) {
              let y = u3.expression.arguments[0].properties;
              for (let [g, c] of i2.expression.arguments[0].properties.entries())
                switch (y[g].key.name) {
                  case "styles":
                    c.value.type === "ArrayExpression" && a2(c.value.elements[0]);
                    break;
                  case "template":
                    c.value.type === "TemplateLiteral" && a2(c.value);
                    break;
                }
            }
            if (u3.type === "TaggedTemplateExpression" && (u3.tag.type === "MemberExpression" || u3.tag.type === "Identifier" && (u3.tag.name === "gql" || u3.tag.name === "graphql" || u3.tag.name === "css" || u3.tag.name === "md" || u3.tag.name === "markdown" || u3.tag.name === "html") || u3.tag.type === "CallExpression") && a2(i2.quasi), u3.type === "TemplateLiteral") {
              var d;
              (((d = u3.leadingComments) === null || d === void 0 ? void 0 : d.some((g) => t2(g) && ["GraphQL", "HTML"].some((c) => g.value === ` ${c} `))) || l.type === "CallExpression" && l.callee.name === "graphql" || !u3.leadingComments) && a2(i2);
            }
            if (u3.type === "InterpreterDirective" && (i2.value = i2.value.trimEnd()), (u3.type === "TSIntersectionType" || u3.type === "TSUnionType") && u3.types.length === 1)
              return i2.types[0];
          }
          n.ignoredProperties = s5, r2.exports = n;
        } }), io = {};
        Kt(io, { EOL: () => Wn, arch: () => nd, cpus: () => Do, default: () => vo, endianness: () => ao, freemem: () => po, getNetworkInterfaces: () => ho, hostname: () => oo, loadavg: () => lo, networkInterfaces: () => yo, platform: () => ud, release: () => go, tmpDir: () => $n, tmpdir: () => Vn, totalmem: () => fo, type: () => mo, uptime: () => co });
        function ao() {
          if (typeof Tr > "u") {
            var e2 = new ArrayBuffer(2), r2 = new Uint8Array(e2), t2 = new Uint16Array(e2);
            if (r2[0] = 1, r2[1] = 2, t2[0] === 258)
              Tr = "BE";
            else if (t2[0] === 513)
              Tr = "LE";
            else
              throw new Error("unable to figure out endianess");
          }
          return Tr;
        }
        function oo() {
          return typeof globalThis.location < "u" ? globalThis.location.hostname : "";
        }
        function lo() {
          return [];
        }
        function co() {
          return 0;
        }
        function po() {
          return Number.MAX_VALUE;
        }
        function fo() {
          return Number.MAX_VALUE;
        }
        function Do() {
          return [];
        }
        function mo() {
          return "Browser";
        }
        function go() {
          return typeof globalThis.navigator < "u" ? globalThis.navigator.appVersion : "";
        }
        function yo() {
        }
        function ho() {
        }
        function nd() {
          return "javascript";
        }
        function ud() {
          return "browser";
        }
        function $n() {
          return "/tmp";
        }
        var Tr, Vn, Wn, vo, sd = ht({ "node-modules-polyfills:os"() {
          ne(), Vn = $n, Wn = `
`, vo = { EOL: Wn, tmpdir: Vn, tmpDir: $n, networkInterfaces: yo, getNetworkInterfaces: ho, release: go, type: mo, cpus: Do, totalmem: fo, freemem: po, uptime: co, loadavg: lo, hostname: oo, endianness: ao };
        } }), id = te({ "node-modules-polyfills-commonjs:os"(e2, r2) {
          ne();
          var t2 = (sd(), ft(io));
          if (t2 && t2.default) {
            r2.exports = t2.default;
            for (let s5 in t2)
              r2.exports[s5] = t2[s5];
          } else
            t2 && (r2.exports = t2);
        } }), ad = te({ "node_modules/detect-newline/index.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = (s5) => {
            if (typeof s5 != "string")
              throw new TypeError("Expected a string");
            let a2 = s5.match(/(?:\r?\n)/g) || [];
            if (a2.length === 0)
              return;
            let n = a2.filter((i2) => i2 === `\r
`).length, u3 = a2.length - n;
            return n > u3 ? `\r
` : `
`;
          };
          r2.exports = t2, r2.exports.graceful = (s5) => typeof s5 == "string" && t2(s5) || `
`;
        } }), od = te({ "node_modules/jest-docblock/build/index.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true }), e2.extract = c, e2.parse = E, e2.parseWithComments = _2, e2.print = w, e2.strip = D2;
          function r2() {
            let S3 = id();
            return r2 = function() {
              return S3;
            }, S3;
          }
          function t2() {
            let S3 = s5(ad());
            return t2 = function() {
              return S3;
            }, S3;
          }
          function s5(S3) {
            return S3 && S3.__esModule ? S3 : { default: S3 };
          }
          var a2 = /\*\/$/, n = /^\/\*\*?/, u3 = /^\s*(\/\*\*?(.|\r?\n)*?\*\/)/, i2 = /(^|\s+)\/\/([^\r\n]*)/g, l = /^(\r?\n)+/, p5 = /(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g, d = /(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g, y = /(\r?\n|^) *\* ?/g, g = [];
          function c(S3) {
            let N = S3.match(u3);
            return N ? N[0].trimLeft() : "";
          }
          function D2(S3) {
            let N = S3.match(u3);
            return N && N[0] ? S3.substring(N[0].length) : S3;
          }
          function E(S3) {
            return _2(S3).pragmas;
          }
          function _2(S3) {
            let N = (0, t2().default)(S3) || r2().EOL;
            S3 = S3.replace(n, "").replace(a2, "").replace(y, "$1");
            let I = "";
            for (; I !== S3; )
              I = S3, S3 = S3.replace(p5, `${N}$1 $2${N}`);
            S3 = S3.replace(l, "").trimRight();
            let P = /* @__PURE__ */ Object.create(null), $2 = S3.replace(d, "").replace(l, "").trimRight(), f3;
            for (; f3 = d.exec(S3); ) {
              let T2 = f3[2].replace(i2, "");
              typeof P[f3[1]] == "string" || Array.isArray(P[f3[1]]) ? P[f3[1]] = g.concat(P[f3[1]], T2) : P[f3[1]] = T2;
            }
            return { comments: $2, pragmas: P };
          }
          function w(S3) {
            let { comments: N = "", pragmas: I = {} } = S3, P = (0, t2().default)(N) || r2().EOL, $2 = "/**", f3 = " *", T2 = " */", m2 = Object.keys(I), v = m2.map((h4) => F2(h4, I[h4])).reduce((h4, C) => h4.concat(C), []).map((h4) => `${f3} ${h4}${P}`).join("");
            if (!N) {
              if (m2.length === 0)
                return "";
              if (m2.length === 1 && !Array.isArray(I[m2[0]])) {
                let h4 = I[m2[0]];
                return `${$2} ${F2(m2[0], h4)[0]}${T2}`;
              }
            }
            let o = N.split(P).map((h4) => `${f3} ${h4}`).join(P) + P;
            return $2 + P + (N ? o : "") + (N && m2.length ? f3 + P : "") + v + T2;
          }
          function F2(S3, N) {
            return g.concat(N).map((I) => `@${S3} ${I}`.trim());
          }
        } }), ld = te({ "src/language-js/utils/get-shebang.js"(e2, r2) {
          "use strict";
          ne();
          function t2(s5) {
            if (!s5.startsWith("#!"))
              return "";
            let a2 = s5.indexOf(`
`);
            return a2 === -1 ? s5 : s5.slice(0, a2);
          }
          r2.exports = t2;
        } }), Co = te({ "src/language-js/pragma.js"(e2, r2) {
          "use strict";
          ne();
          var { parseWithComments: t2, strip: s5, extract: a2, print: n } = od(), { normalizeEndOfLine: u3 } = Jn(), i2 = ld();
          function l(y) {
            let g = i2(y);
            g && (y = y.slice(g.length + 1));
            let c = a2(y), { pragmas: D2, comments: E } = t2(c);
            return { shebang: g, text: y, pragmas: D2, comments: E };
          }
          function p5(y) {
            let g = Object.keys(l(y).pragmas);
            return g.includes("prettier") || g.includes("format");
          }
          function d(y) {
            let { shebang: g, text: c, pragmas: D2, comments: E } = l(y), _2 = s5(c), w = n({ pragmas: Object.assign({ format: "" }, D2), comments: E.trimStart() });
            return (g ? `${g}
` : "") + u3(w) + (_2.startsWith(`
`) ? `
` : `

`) + _2;
          }
          r2.exports = { hasPragma: p5, insertPragma: d };
        } }), Eo = te({ "src/language-js/comments.js"(e2, r2) {
          "use strict";
          ne();
          var { getLast: t2, hasNewline: s5, getNextNonSpaceNonCommentCharacterIndexWithStartIndex: a2, getNextNonSpaceNonCommentCharacter: n, hasNewlineInRange: u3, addLeadingComment: i2, addTrailingComment: l, addDanglingComment: p5, getNextNonSpaceNonCommentCharacterIndex: d, isNonEmptyArray: y } = Ue(), { getFunctionParameters: g, isPrettierIgnoreComment: c, isJsxNode: D2, hasFlowShorthandAnnotationComment: E, hasFlowAnnotationComment: _2, hasIgnoreComment: w, isCallLikeExpression: F2, getCallArguments: S3, isCallExpression: N, isMemberExpression: I, isObjectProperty: P, isLineComment: $2, getComments: f3, CommentCheckFlags: T2, markerForIfWithoutBlockAndSameLineComment: m2 } = Ke(), { locStart: v, locEnd: o } = ut(), h4 = Ot();
          function C(fe) {
            return [oe, ue, L, R, q2, J, Y, ge, Z2, De, he2, we, ee, Fe, z2].some((A2) => A2(fe));
          }
          function x2(fe) {
            return [M, ue, Q, he2, R, q2, J, Y, Fe, U, se, De, Ne, z2, ce].some((A2) => A2(fe));
          }
          function b(fe) {
            return [oe, R, q2, V, de, ee, De, K, W, H, z2, Pe].some((A2) => A2(fe));
          }
          function B(fe, A2) {
            let G = (fe.body || fe.properties).find((re) => {
              let { type: ye } = re;
              return ye !== "EmptyStatement";
            });
            G ? i2(G, A2) : p5(fe, A2);
          }
          function k(fe, A2) {
            fe.type === "BlockStatement" ? B(fe, A2) : i2(fe, A2);
          }
          function M(fe) {
            let { comment: A2, followingNode: G } = fe;
            return G && Ae(A2) ? (i2(G, A2), true) : false;
          }
          function R(fe) {
            let { comment: A2, precedingNode: G, enclosingNode: re, followingNode: ye, text: Ee } = fe;
            if ((re == null ? void 0 : re.type) !== "IfStatement" || !ye)
              return false;
            if (n(Ee, A2, o) === ")")
              return l(G, A2), true;
            if (G === re.consequent && ye === re.alternate) {
              if (G.type === "BlockStatement")
                l(G, A2);
              else {
                let ve = A2.type === "SingleLine" || A2.loc.start.line === A2.loc.end.line, ze = A2.loc.start.line === G.loc.start.line;
                ve && ze ? p5(G, A2, m2) : p5(re, A2);
              }
              return true;
            }
            return ye.type === "BlockStatement" ? (B(ye, A2), true) : ye.type === "IfStatement" ? (k(ye.consequent, A2), true) : re.consequent === ye ? (i2(ye, A2), true) : false;
          }
          function q2(fe) {
            let { comment: A2, precedingNode: G, enclosingNode: re, followingNode: ye, text: Ee } = fe;
            return (re == null ? void 0 : re.type) !== "WhileStatement" || !ye ? false : n(Ee, A2, o) === ")" ? (l(G, A2), true) : ye.type === "BlockStatement" ? (B(ye, A2), true) : re.body === ye ? (i2(ye, A2), true) : false;
          }
          function J(fe) {
            let { comment: A2, precedingNode: G, enclosingNode: re, followingNode: ye } = fe;
            return (re == null ? void 0 : re.type) !== "TryStatement" && (re == null ? void 0 : re.type) !== "CatchClause" || !ye ? false : re.type === "CatchClause" && G ? (l(G, A2), true) : ye.type === "BlockStatement" ? (B(ye, A2), true) : ye.type === "TryStatement" ? (k(ye.finalizer, A2), true) : ye.type === "CatchClause" ? (k(ye.body, A2), true) : false;
          }
          function L(fe) {
            let { comment: A2, enclosingNode: G, followingNode: re } = fe;
            return I(G) && (re == null ? void 0 : re.type) === "Identifier" ? (i2(G, A2), true) : false;
          }
          function Q(fe) {
            let { comment: A2, precedingNode: G, enclosingNode: re, followingNode: ye, text: Ee } = fe, Be = G && !u3(Ee, o(G), v(A2));
            return (!G || !Be) && ((re == null ? void 0 : re.type) === "ConditionalExpression" || (re == null ? void 0 : re.type) === "TSConditionalType") && ye ? (i2(ye, A2), true) : false;
          }
          function V(fe) {
            let { comment: A2, precedingNode: G, enclosingNode: re } = fe;
            return P(re) && re.shorthand && re.key === G && re.value.type === "AssignmentPattern" ? (l(re.value.left, A2), true) : false;
          }
          var j = /* @__PURE__ */ new Set(["ClassDeclaration", "ClassExpression", "DeclareClass", "DeclareInterface", "InterfaceDeclaration", "TSInterfaceDeclaration"]);
          function Y(fe) {
            let { comment: A2, precedingNode: G, enclosingNode: re, followingNode: ye } = fe;
            if (j.has(re == null ? void 0 : re.type)) {
              if (y(re.decorators) && !(ye && ye.type === "Decorator"))
                return l(t2(re.decorators), A2), true;
              if (re.body && ye === re.body)
                return B(re.body, A2), true;
              if (ye) {
                if (re.superClass && ye === re.superClass && G && (G === re.id || G === re.typeParameters))
                  return l(G, A2), true;
                for (let Ee of ["implements", "extends", "mixins"])
                  if (re[Ee] && ye === re[Ee][0])
                    return G && (G === re.id || G === re.typeParameters || G === re.superClass) ? l(G, A2) : p5(re, A2, Ee), true;
              }
            }
            return false;
          }
          var ie = /* @__PURE__ */ new Set(["ClassMethod", "ClassProperty", "PropertyDefinition", "TSAbstractPropertyDefinition", "TSAbstractMethodDefinition", "TSDeclareMethod", "MethodDefinition", "ClassAccessorProperty", "AccessorProperty", "TSAbstractAccessorProperty"]);
          function ee(fe) {
            let { comment: A2, precedingNode: G, enclosingNode: re, text: ye } = fe;
            return re && G && n(ye, A2, o) === "(" && (re.type === "Property" || re.type === "TSDeclareMethod" || re.type === "TSAbstractMethodDefinition") && G.type === "Identifier" && re.key === G && n(ye, G, o) !== ":" || (G == null ? void 0 : G.type) === "Decorator" && ie.has(re == null ? void 0 : re.type) ? (l(G, A2), true) : false;
          }
          var le = /* @__PURE__ */ new Set(["FunctionDeclaration", "FunctionExpression", "ClassMethod", "MethodDefinition", "ObjectMethod"]);
          function W(fe) {
            let { comment: A2, precedingNode: G, enclosingNode: re, text: ye } = fe;
            return n(ye, A2, o) !== "(" ? false : G && le.has(re == null ? void 0 : re.type) ? (l(G, A2), true) : false;
          }
          function K(fe) {
            let { comment: A2, enclosingNode: G, text: re } = fe;
            if ((G == null ? void 0 : G.type) !== "ArrowFunctionExpression")
              return false;
            let ye = d(re, A2, o);
            return ye !== false && re.slice(ye, ye + 2) === "=>" ? (p5(G, A2), true) : false;
          }
          function de(fe) {
            let { comment: A2, enclosingNode: G, text: re } = fe;
            return n(re, A2, o) !== ")" ? false : G && (X(G) && g(G).length === 0 || F2(G) && S3(G).length === 0) ? (p5(G, A2), true) : ((G == null ? void 0 : G.type) === "MethodDefinition" || (G == null ? void 0 : G.type) === "TSAbstractMethodDefinition") && g(G.value).length === 0 ? (p5(G.value, A2), true) : false;
          }
          function ue(fe) {
            let { comment: A2, precedingNode: G, enclosingNode: re, followingNode: ye, text: Ee } = fe;
            if ((G == null ? void 0 : G.type) === "FunctionTypeParam" && (re == null ? void 0 : re.type) === "FunctionTypeAnnotation" && (ye == null ? void 0 : ye.type) !== "FunctionTypeParam" || ((G == null ? void 0 : G.type) === "Identifier" || (G == null ? void 0 : G.type) === "AssignmentPattern") && re && X(re) && n(Ee, A2, o) === ")")
              return l(G, A2), true;
            if ((re == null ? void 0 : re.type) === "FunctionDeclaration" && (ye == null ? void 0 : ye.type) === "BlockStatement") {
              let Be = (() => {
                let ve = g(re);
                if (ve.length > 0)
                  return a2(Ee, o(t2(ve)));
                let ze = a2(Ee, o(re.id));
                return ze !== false && a2(Ee, ze + 1);
              })();
              if (v(A2) > Be)
                return B(ye, A2), true;
            }
            return false;
          }
          function Fe(fe) {
            let { comment: A2, enclosingNode: G } = fe;
            return (G == null ? void 0 : G.type) === "LabeledStatement" ? (i2(G, A2), true) : false;
          }
          function z2(fe) {
            let { comment: A2, enclosingNode: G } = fe;
            return ((G == null ? void 0 : G.type) === "ContinueStatement" || (G == null ? void 0 : G.type) === "BreakStatement") && !G.label ? (l(G, A2), true) : false;
          }
          function U(fe) {
            let { comment: A2, precedingNode: G, enclosingNode: re } = fe;
            return N(re) && G && re.callee === G && re.arguments.length > 0 ? (i2(re.arguments[0], A2), true) : false;
          }
          function Z2(fe) {
            let { comment: A2, precedingNode: G, enclosingNode: re, followingNode: ye } = fe;
            return (re == null ? void 0 : re.type) === "UnionTypeAnnotation" || (re == null ? void 0 : re.type) === "TSUnionType" ? (c(A2) && (ye.prettierIgnore = true, A2.unignore = true), G ? (l(G, A2), true) : false) : (((ye == null ? void 0 : ye.type) === "UnionTypeAnnotation" || (ye == null ? void 0 : ye.type) === "TSUnionType") && c(A2) && (ye.types[0].prettierIgnore = true, A2.unignore = true), false);
          }
          function se(fe) {
            let { comment: A2, enclosingNode: G } = fe;
            return P(G) ? (i2(G, A2), true) : false;
          }
          function De(fe) {
            let { comment: A2, enclosingNode: G, followingNode: re, ast: ye, isLastComment: Ee } = fe;
            return ye && ye.body && ye.body.length === 0 ? (Ee ? p5(ye, A2) : i2(ye, A2), true) : (G == null ? void 0 : G.type) === "Program" && (G == null ? void 0 : G.body.length) === 0 && !y(G.directives) ? (Ee ? p5(G, A2) : i2(G, A2), true) : (re == null ? void 0 : re.type) === "Program" && (re == null ? void 0 : re.body.length) === 0 && (G == null ? void 0 : G.type) === "ModuleExpression" ? (p5(re, A2), true) : false;
          }
          function ge(fe) {
            let { comment: A2, enclosingNode: G } = fe;
            return (G == null ? void 0 : G.type) === "ForInStatement" || (G == null ? void 0 : G.type) === "ForOfStatement" ? (i2(G, A2), true) : false;
          }
          function he2(fe) {
            let { comment: A2, precedingNode: G, enclosingNode: re, text: ye } = fe;
            if ((re == null ? void 0 : re.type) === "ImportSpecifier" || (re == null ? void 0 : re.type) === "ExportSpecifier")
              return i2(re, A2), true;
            let Ee = (G == null ? void 0 : G.type) === "ImportSpecifier" && (re == null ? void 0 : re.type) === "ImportDeclaration", Be = (G == null ? void 0 : G.type) === "ExportSpecifier" && (re == null ? void 0 : re.type) === "ExportNamedDeclaration";
            return (Ee || Be) && s5(ye, o(A2)) ? (l(G, A2), true) : false;
          }
          function we(fe) {
            let { comment: A2, enclosingNode: G } = fe;
            return (G == null ? void 0 : G.type) === "AssignmentPattern" ? (i2(G, A2), true) : false;
          }
          var ke = /* @__PURE__ */ new Set(["VariableDeclarator", "AssignmentExpression", "TypeAlias", "TSTypeAliasDeclaration"]), Re = /* @__PURE__ */ new Set(["ObjectExpression", "ArrayExpression", "TemplateLiteral", "TaggedTemplateExpression", "ObjectTypeAnnotation", "TSTypeLiteral"]);
          function Ne(fe) {
            let { comment: A2, enclosingNode: G, followingNode: re } = fe;
            return ke.has(G == null ? void 0 : G.type) && re && (Re.has(re.type) || h4(A2)) ? (i2(re, A2), true) : false;
          }
          function Pe(fe) {
            let { comment: A2, enclosingNode: G, followingNode: re, text: ye } = fe;
            return !re && ((G == null ? void 0 : G.type) === "TSMethodSignature" || (G == null ? void 0 : G.type) === "TSDeclareFunction" || (G == null ? void 0 : G.type) === "TSAbstractMethodDefinition") && n(ye, A2, o) === ";" ? (l(G, A2), true) : false;
          }
          function oe(fe) {
            let { comment: A2, enclosingNode: G, followingNode: re } = fe;
            if (c(A2) && (G == null ? void 0 : G.type) === "TSMappedType" && (re == null ? void 0 : re.type) === "TSTypeParameter" && re.constraint)
              return G.prettierIgnore = true, A2.unignore = true, true;
          }
          function H(fe) {
            let { comment: A2, precedingNode: G, enclosingNode: re, followingNode: ye } = fe;
            return (re == null ? void 0 : re.type) !== "TSMappedType" ? false : (ye == null ? void 0 : ye.type) === "TSTypeParameter" && ye.name ? (i2(ye.name, A2), true) : (G == null ? void 0 : G.type) === "TSTypeParameter" && G.constraint ? (l(G.constraint, A2), true) : false;
          }
          function ce(fe) {
            let { comment: A2, enclosingNode: G, followingNode: re } = fe;
            return !G || G.type !== "SwitchCase" || G.test || !re || re !== G.consequent[0] ? false : (re.type === "BlockStatement" && $2(A2) ? B(re, A2) : p5(G, A2), true);
          }
          function X(fe) {
            return fe.type === "ArrowFunctionExpression" || fe.type === "FunctionExpression" || fe.type === "FunctionDeclaration" || fe.type === "ObjectMethod" || fe.type === "ClassMethod" || fe.type === "TSDeclareFunction" || fe.type === "TSCallSignatureDeclaration" || fe.type === "TSConstructSignatureDeclaration" || fe.type === "TSMethodSignature" || fe.type === "TSConstructorType" || fe.type === "TSFunctionType" || fe.type === "TSDeclareMethod";
          }
          function pe(fe, A2) {
            if ((A2.parser === "typescript" || A2.parser === "flow" || A2.parser === "acorn" || A2.parser === "espree" || A2.parser === "meriyah" || A2.parser === "__babel_estree") && fe.type === "MethodDefinition" && fe.value && fe.value.type === "FunctionExpression" && g(fe.value).length === 0 && !fe.value.returnType && !y(fe.value.typeParameters) && fe.value.body)
              return [...fe.decorators || [], fe.key, fe.value.body];
          }
          function Ae(fe) {
            return h4(fe) && fe.value[0] === "*" && /@type\b/.test(fe.value);
          }
          function Ce(fe) {
            let A2 = fe.getValue(), G = fe.getParentNode(), re = (ye) => _2(f3(ye, T2.Leading)) || _2(f3(ye, T2.Trailing));
            return (A2 && (D2(A2) || E(A2) || N(G) && re(A2)) || G && (G.type === "JSXSpreadAttribute" || G.type === "JSXSpreadChild" || G.type === "UnionTypeAnnotation" || G.type === "TSUnionType" || (G.type === "ClassDeclaration" || G.type === "ClassExpression") && G.superClass === A2)) && (!w(fe) || G.type === "UnionTypeAnnotation" || G.type === "TSUnionType");
          }
          r2.exports = { handleOwnLineComment: C, handleEndOfLineComment: x2, handleRemainingComment: b, isTypeCastComment: Ae, getCommentChildNodes: pe, willPrintOwnComments: Ce };
        } }), qt = te({ "src/language-js/needs-parens.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = lt(), s5 = Kn(), { getFunctionParameters: a2, getLeftSidePathName: n, hasFlowShorthandAnnotationComment: u3, hasNakedLeftSide: i2, hasNode: l, isBitwiseOperator: p5, startsWithNoLookaheadToken: d, shouldFlatten: y, getPrecedence: g, isCallExpression: c, isMemberExpression: D2, isObjectProperty: E, isTSTypeExpression: _2 } = Ke();
          function w(f3, T2) {
            let m2 = f3.getParentNode();
            if (!m2)
              return false;
            let v = f3.getName(), o = f3.getNode();
            if (T2.__isInHtmlInterpolation && !T2.bracketSpacing && I(o) && P(f3))
              return true;
            if (F2(o))
              return false;
            if (T2.parser !== "flow" && u3(f3.getValue()))
              return true;
            if (o.type === "Identifier") {
              if (o.extra && o.extra.parenthesized && /^PRETTIER_HTML_PLACEHOLDER_\d+_\d+_IN_JS$/.test(o.name) || v === "left" && (o.name === "async" && !m2.await || o.name === "let") && m2.type === "ForOfStatement")
                return true;
              if (o.name === "let") {
                var h4;
                let x2 = (h4 = f3.findAncestor((b) => b.type === "ForOfStatement")) === null || h4 === void 0 ? void 0 : h4.left;
                if (x2 && d(x2, (b) => b === o))
                  return true;
              }
              if (v === "object" && o.name === "let" && m2.type === "MemberExpression" && m2.computed && !m2.optional) {
                let x2 = f3.findAncestor((B) => B.type === "ExpressionStatement" || B.type === "ForStatement" || B.type === "ForInStatement"), b = x2 ? x2.type === "ExpressionStatement" ? x2.expression : x2.type === "ForStatement" ? x2.init : x2.left : void 0;
                if (b && d(b, (B) => B === o))
                  return true;
              }
              return false;
            }
            if (o.type === "ObjectExpression" || o.type === "FunctionExpression" || o.type === "ClassExpression" || o.type === "DoExpression") {
              var C;
              let x2 = (C = f3.findAncestor((b) => b.type === "ExpressionStatement")) === null || C === void 0 ? void 0 : C.expression;
              if (x2 && d(x2, (b) => b === o))
                return true;
            }
            switch (m2.type) {
              case "ParenthesizedExpression":
                return false;
              case "ClassDeclaration":
              case "ClassExpression": {
                if (v === "superClass" && (o.type === "ArrowFunctionExpression" || o.type === "AssignmentExpression" || o.type === "AwaitExpression" || o.type === "BinaryExpression" || o.type === "ConditionalExpression" || o.type === "LogicalExpression" || o.type === "NewExpression" || o.type === "ObjectExpression" || o.type === "SequenceExpression" || o.type === "TaggedTemplateExpression" || o.type === "UnaryExpression" || o.type === "UpdateExpression" || o.type === "YieldExpression" || o.type === "TSNonNullExpression"))
                  return true;
                break;
              }
              case "ExportDefaultDeclaration":
                return $2(f3, T2) || o.type === "SequenceExpression";
              case "Decorator": {
                if (v === "expression") {
                  let x2 = false, b = false, B = o;
                  for (; B; )
                    switch (B.type) {
                      case "MemberExpression":
                        b = true, B = B.object;
                        break;
                      case "CallExpression":
                        if (b || x2)
                          return T2.parser !== "typescript";
                        x2 = true, B = B.callee;
                        break;
                      case "Identifier":
                        return false;
                      case "TaggedTemplateExpression":
                        return T2.parser !== "typescript";
                      default:
                        return true;
                    }
                  return true;
                }
                break;
              }
              case "ArrowFunctionExpression": {
                if (v === "body" && o.type !== "SequenceExpression" && d(o, (x2) => x2.type === "ObjectExpression"))
                  return true;
                break;
              }
            }
            switch (o.type) {
              case "UpdateExpression":
                if (m2.type === "UnaryExpression")
                  return o.prefix && (o.operator === "++" && m2.operator === "+" || o.operator === "--" && m2.operator === "-");
              case "UnaryExpression":
                switch (m2.type) {
                  case "UnaryExpression":
                    return o.operator === m2.operator && (o.operator === "+" || o.operator === "-");
                  case "BindExpression":
                    return true;
                  case "MemberExpression":
                  case "OptionalMemberExpression":
                    return v === "object";
                  case "TaggedTemplateExpression":
                    return true;
                  case "NewExpression":
                  case "CallExpression":
                  case "OptionalCallExpression":
                    return v === "callee";
                  case "BinaryExpression":
                    return v === "left" && m2.operator === "**";
                  case "TSNonNullExpression":
                    return true;
                  default:
                    return false;
                }
              case "BinaryExpression": {
                if (m2.type === "UpdateExpression" || o.operator === "in" && S3(f3))
                  return true;
                if (o.operator === "|>" && o.extra && o.extra.parenthesized) {
                  let x2 = f3.getParentNode(1);
                  if (x2.type === "BinaryExpression" && x2.operator === "|>")
                    return true;
                }
              }
              case "TSTypeAssertion":
              case "TSAsExpression":
              case "TSSatisfiesExpression":
              case "LogicalExpression":
                switch (m2.type) {
                  case "TSSatisfiesExpression":
                  case "TSAsExpression":
                    return !_2(o);
                  case "ConditionalExpression":
                    return _2(o);
                  case "CallExpression":
                  case "NewExpression":
                  case "OptionalCallExpression":
                    return v === "callee";
                  case "ClassExpression":
                  case "ClassDeclaration":
                    return v === "superClass";
                  case "TSTypeAssertion":
                  case "TaggedTemplateExpression":
                  case "UnaryExpression":
                  case "JSXSpreadAttribute":
                  case "SpreadElement":
                  case "SpreadProperty":
                  case "BindExpression":
                  case "AwaitExpression":
                  case "TSNonNullExpression":
                  case "UpdateExpression":
                    return true;
                  case "MemberExpression":
                  case "OptionalMemberExpression":
                    return v === "object";
                  case "AssignmentExpression":
                  case "AssignmentPattern":
                    return v === "left" && (o.type === "TSTypeAssertion" || _2(o));
                  case "LogicalExpression":
                    if (o.type === "LogicalExpression")
                      return m2.operator !== o.operator;
                  case "BinaryExpression": {
                    let { operator: x2, type: b } = o;
                    if (!x2 && b !== "TSTypeAssertion")
                      return true;
                    let B = g(x2), k = m2.operator, M = g(k);
                    return M > B || v === "right" && M === B || M === B && !y(k, x2) ? true : M < B && x2 === "%" ? k === "+" || k === "-" : !!p5(k);
                  }
                  default:
                    return false;
                }
              case "SequenceExpression":
                switch (m2.type) {
                  case "ReturnStatement":
                    return false;
                  case "ForStatement":
                    return false;
                  case "ExpressionStatement":
                    return v !== "expression";
                  case "ArrowFunctionExpression":
                    return v !== "body";
                  default:
                    return true;
                }
              case "YieldExpression":
                if (m2.type === "UnaryExpression" || m2.type === "AwaitExpression" || _2(m2) || m2.type === "TSNonNullExpression")
                  return true;
              case "AwaitExpression":
                switch (m2.type) {
                  case "TaggedTemplateExpression":
                  case "UnaryExpression":
                  case "LogicalExpression":
                  case "SpreadElement":
                  case "SpreadProperty":
                  case "TSAsExpression":
                  case "TSSatisfiesExpression":
                  case "TSNonNullExpression":
                  case "BindExpression":
                    return true;
                  case "MemberExpression":
                  case "OptionalMemberExpression":
                    return v === "object";
                  case "NewExpression":
                  case "CallExpression":
                  case "OptionalCallExpression":
                    return v === "callee";
                  case "ConditionalExpression":
                    return v === "test";
                  case "BinaryExpression":
                    return !(!o.argument && m2.operator === "|>");
                  default:
                    return false;
                }
              case "TSConditionalType":
                if (v === "extendsType" && m2.type === "TSConditionalType")
                  return true;
              case "TSFunctionType":
              case "TSConstructorType":
                if (v === "extendsType" && m2.type === "TSConditionalType") {
                  let x2 = (o.returnType || o.typeAnnotation).typeAnnotation;
                  if (x2.type === "TSInferType" && x2.typeParameter.constraint)
                    return true;
                }
                if (v === "checkType" && m2.type === "TSConditionalType")
                  return true;
              case "TSUnionType":
              case "TSIntersectionType":
                if ((m2.type === "TSUnionType" || m2.type === "TSIntersectionType") && m2.types.length > 1 && (!o.types || o.types.length > 1))
                  return true;
              case "TSInferType":
                if (o.type === "TSInferType" && m2.type === "TSRestType")
                  return false;
              case "TSTypeOperator":
                return m2.type === "TSArrayType" || m2.type === "TSOptionalType" || m2.type === "TSRestType" || v === "objectType" && m2.type === "TSIndexedAccessType" || m2.type === "TSTypeOperator" || m2.type === "TSTypeAnnotation" && f3.getParentNode(1).type.startsWith("TSJSDoc");
              case "TSTypeQuery":
                return v === "objectType" && m2.type === "TSIndexedAccessType" || v === "elementType" && m2.type === "TSArrayType";
              case "ArrayTypeAnnotation":
                return m2.type === "NullableTypeAnnotation";
              case "IntersectionTypeAnnotation":
              case "UnionTypeAnnotation":
                return m2.type === "ArrayTypeAnnotation" || m2.type === "NullableTypeAnnotation" || m2.type === "IntersectionTypeAnnotation" || m2.type === "UnionTypeAnnotation" || v === "objectType" && (m2.type === "IndexedAccessType" || m2.type === "OptionalIndexedAccessType");
              case "NullableTypeAnnotation":
                return m2.type === "ArrayTypeAnnotation" || v === "objectType" && (m2.type === "IndexedAccessType" || m2.type === "OptionalIndexedAccessType");
              case "FunctionTypeAnnotation": {
                let x2 = m2.type === "NullableTypeAnnotation" ? f3.getParentNode(1) : m2;
                return x2.type === "UnionTypeAnnotation" || x2.type === "IntersectionTypeAnnotation" || x2.type === "ArrayTypeAnnotation" || v === "objectType" && (x2.type === "IndexedAccessType" || x2.type === "OptionalIndexedAccessType") || x2.type === "NullableTypeAnnotation" || m2.type === "FunctionTypeParam" && m2.name === null && a2(o).some((b) => b.typeAnnotation && b.typeAnnotation.type === "NullableTypeAnnotation");
              }
              case "OptionalIndexedAccessType":
                return v === "objectType" && m2.type === "IndexedAccessType";
              case "TypeofTypeAnnotation":
                return v === "objectType" && (m2.type === "IndexedAccessType" || m2.type === "OptionalIndexedAccessType");
              case "StringLiteral":
              case "NumericLiteral":
              case "Literal":
                if (typeof o.value == "string" && m2.type === "ExpressionStatement" && !m2.directive) {
                  let x2 = f3.getParentNode(1);
                  return x2.type === "Program" || x2.type === "BlockStatement";
                }
                return v === "object" && m2.type === "MemberExpression" && typeof o.value == "number";
              case "AssignmentExpression": {
                let x2 = f3.getParentNode(1);
                return v === "body" && m2.type === "ArrowFunctionExpression" ? true : v === "key" && (m2.type === "ClassProperty" || m2.type === "PropertyDefinition") && m2.computed || (v === "init" || v === "update") && m2.type === "ForStatement" ? false : m2.type === "ExpressionStatement" ? o.left.type === "ObjectPattern" : !(v === "key" && m2.type === "TSPropertySignature" || m2.type === "AssignmentExpression" || m2.type === "SequenceExpression" && x2 && x2.type === "ForStatement" && (x2.init === m2 || x2.update === m2) || v === "value" && m2.type === "Property" && x2 && x2.type === "ObjectPattern" && x2.properties.includes(m2) || m2.type === "NGChainedExpression");
              }
              case "ConditionalExpression":
                switch (m2.type) {
                  case "TaggedTemplateExpression":
                  case "UnaryExpression":
                  case "SpreadElement":
                  case "SpreadProperty":
                  case "BinaryExpression":
                  case "LogicalExpression":
                  case "NGPipeExpression":
                  case "ExportDefaultDeclaration":
                  case "AwaitExpression":
                  case "JSXSpreadAttribute":
                  case "TSTypeAssertion":
                  case "TypeCastExpression":
                  case "TSAsExpression":
                  case "TSSatisfiesExpression":
                  case "TSNonNullExpression":
                    return true;
                  case "NewExpression":
                  case "CallExpression":
                  case "OptionalCallExpression":
                    return v === "callee";
                  case "ConditionalExpression":
                    return v === "test";
                  case "MemberExpression":
                  case "OptionalMemberExpression":
                    return v === "object";
                  default:
                    return false;
                }
              case "FunctionExpression":
                switch (m2.type) {
                  case "NewExpression":
                  case "CallExpression":
                  case "OptionalCallExpression":
                    return v === "callee";
                  case "TaggedTemplateExpression":
                    return true;
                  default:
                    return false;
                }
              case "ArrowFunctionExpression":
                switch (m2.type) {
                  case "BinaryExpression":
                    return m2.operator !== "|>" || o.extra && o.extra.parenthesized;
                  case "NewExpression":
                  case "CallExpression":
                  case "OptionalCallExpression":
                    return v === "callee";
                  case "MemberExpression":
                  case "OptionalMemberExpression":
                    return v === "object";
                  case "TSAsExpression":
                  case "TSSatisfiesExpression":
                  case "TSNonNullExpression":
                  case "BindExpression":
                  case "TaggedTemplateExpression":
                  case "UnaryExpression":
                  case "LogicalExpression":
                  case "AwaitExpression":
                  case "TSTypeAssertion":
                    return true;
                  case "ConditionalExpression":
                    return v === "test";
                  default:
                    return false;
                }
              case "ClassExpression":
                if (s5(o.decorators))
                  return true;
                switch (m2.type) {
                  case "NewExpression":
                    return v === "callee";
                  default:
                    return false;
                }
              case "OptionalMemberExpression":
              case "OptionalCallExpression": {
                let x2 = f3.getParentNode(1);
                if (v === "object" && m2.type === "MemberExpression" || v === "callee" && (m2.type === "CallExpression" || m2.type === "NewExpression") || m2.type === "TSNonNullExpression" && x2.type === "MemberExpression" && x2.object === m2)
                  return true;
              }
              case "CallExpression":
              case "MemberExpression":
              case "TaggedTemplateExpression":
              case "TSNonNullExpression":
                if (v === "callee" && (m2.type === "BindExpression" || m2.type === "NewExpression")) {
                  let x2 = o;
                  for (; x2; )
                    switch (x2.type) {
                      case "CallExpression":
                      case "OptionalCallExpression":
                        return true;
                      case "MemberExpression":
                      case "OptionalMemberExpression":
                      case "BindExpression":
                        x2 = x2.object;
                        break;
                      case "TaggedTemplateExpression":
                        x2 = x2.tag;
                        break;
                      case "TSNonNullExpression":
                        x2 = x2.expression;
                        break;
                      default:
                        return false;
                    }
                }
                return false;
              case "BindExpression":
                return v === "callee" && (m2.type === "BindExpression" || m2.type === "NewExpression") || v === "object" && D2(m2);
              case "NGPipeExpression":
                return !(m2.type === "NGRoot" || m2.type === "NGMicrosyntaxExpression" || m2.type === "ObjectProperty" && !(o.extra && o.extra.parenthesized) || m2.type === "ArrayExpression" || c(m2) && m2.arguments[v] === o || v === "right" && m2.type === "NGPipeExpression" || v === "property" && m2.type === "MemberExpression" || m2.type === "AssignmentExpression");
              case "JSXFragment":
              case "JSXElement":
                return v === "callee" || v === "left" && m2.type === "BinaryExpression" && m2.operator === "<" || m2.type !== "ArrayExpression" && m2.type !== "ArrowFunctionExpression" && m2.type !== "AssignmentExpression" && m2.type !== "AssignmentPattern" && m2.type !== "BinaryExpression" && m2.type !== "NewExpression" && m2.type !== "ConditionalExpression" && m2.type !== "ExpressionStatement" && m2.type !== "JsExpressionRoot" && m2.type !== "JSXAttribute" && m2.type !== "JSXElement" && m2.type !== "JSXExpressionContainer" && m2.type !== "JSXFragment" && m2.type !== "LogicalExpression" && !c(m2) && !E(m2) && m2.type !== "ReturnStatement" && m2.type !== "ThrowStatement" && m2.type !== "TypeCastExpression" && m2.type !== "VariableDeclarator" && m2.type !== "YieldExpression";
              case "TypeAnnotation":
                return v === "returnType" && m2.type === "ArrowFunctionExpression" && N(o);
            }
            return false;
          }
          function F2(f3) {
            return f3.type === "BlockStatement" || f3.type === "BreakStatement" || f3.type === "ClassBody" || f3.type === "ClassDeclaration" || f3.type === "ClassMethod" || f3.type === "ClassProperty" || f3.type === "PropertyDefinition" || f3.type === "ClassPrivateProperty" || f3.type === "ContinueStatement" || f3.type === "DebuggerStatement" || f3.type === "DeclareClass" || f3.type === "DeclareExportAllDeclaration" || f3.type === "DeclareExportDeclaration" || f3.type === "DeclareFunction" || f3.type === "DeclareInterface" || f3.type === "DeclareModule" || f3.type === "DeclareModuleExports" || f3.type === "DeclareVariable" || f3.type === "DoWhileStatement" || f3.type === "EnumDeclaration" || f3.type === "ExportAllDeclaration" || f3.type === "ExportDefaultDeclaration" || f3.type === "ExportNamedDeclaration" || f3.type === "ExpressionStatement" || f3.type === "ForInStatement" || f3.type === "ForOfStatement" || f3.type === "ForStatement" || f3.type === "FunctionDeclaration" || f3.type === "IfStatement" || f3.type === "ImportDeclaration" || f3.type === "InterfaceDeclaration" || f3.type === "LabeledStatement" || f3.type === "MethodDefinition" || f3.type === "ReturnStatement" || f3.type === "SwitchStatement" || f3.type === "ThrowStatement" || f3.type === "TryStatement" || f3.type === "TSDeclareFunction" || f3.type === "TSEnumDeclaration" || f3.type === "TSImportEqualsDeclaration" || f3.type === "TSInterfaceDeclaration" || f3.type === "TSModuleDeclaration" || f3.type === "TSNamespaceExportDeclaration" || f3.type === "TypeAlias" || f3.type === "VariableDeclaration" || f3.type === "WhileStatement" || f3.type === "WithStatement";
          }
          function S3(f3) {
            let T2 = 0, m2 = f3.getValue();
            for (; m2; ) {
              let v = f3.getParentNode(T2++);
              if (v && v.type === "ForStatement" && v.init === m2)
                return true;
              m2 = v;
            }
            return false;
          }
          function N(f3) {
            return l(f3, (T2) => T2.type === "ObjectTypeAnnotation" && l(T2, (m2) => m2.type === "FunctionTypeAnnotation" || void 0) || void 0);
          }
          function I(f3) {
            switch (f3.type) {
              case "ObjectExpression":
                return true;
              default:
                return false;
            }
          }
          function P(f3) {
            let T2 = f3.getValue(), m2 = f3.getParentNode(), v = f3.getName();
            switch (m2.type) {
              case "NGPipeExpression":
                if (typeof v == "number" && m2.arguments[v] === T2 && m2.arguments.length - 1 === v)
                  return f3.callParent(P);
                break;
              case "ObjectProperty":
                if (v === "value") {
                  let o = f3.getParentNode(1);
                  return t2(o.properties) === m2;
                }
                break;
              case "BinaryExpression":
              case "LogicalExpression":
                if (v === "right")
                  return f3.callParent(P);
                break;
              case "ConditionalExpression":
                if (v === "alternate")
                  return f3.callParent(P);
                break;
              case "UnaryExpression":
                if (m2.prefix)
                  return f3.callParent(P);
                break;
            }
            return false;
          }
          function $2(f3, T2) {
            let m2 = f3.getValue(), v = f3.getParentNode();
            return m2.type === "FunctionExpression" || m2.type === "ClassExpression" ? v.type === "ExportDefaultDeclaration" || !w(f3, T2) : !i2(m2) || v.type !== "ExportDefaultDeclaration" && w(f3, T2) ? false : f3.call((o) => $2(o, T2), ...n(f3, m2));
          }
          r2.exports = w;
        } }), Fo = te({ "src/language-js/print-preprocess.js"(e2, r2) {
          "use strict";
          ne();
          function t2(s5, a2) {
            switch (a2.parser) {
              case "json":
              case "json5":
              case "json-stringify":
              case "__js_expression":
              case "__vue_expression":
              case "__vue_ts_expression":
                return Object.assign(Object.assign({}, s5), {}, { type: a2.parser.startsWith("__") ? "JsExpressionRoot" : "JsonRoot", node: s5, comments: [], rootMarker: a2.rootMarker });
              default:
                return s5;
            }
          }
          r2.exports = t2;
        } }), cd = te({ "src/language-js/print/html-binding.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { join: t2, line: s5, group: a2, softline: n, indent: u3 } } = qe();
          function i2(p5, d, y) {
            let g = p5.getValue();
            if (d.__onHtmlBindingRoot && p5.getName() === null && d.__onHtmlBindingRoot(g, d), g.type === "File") {
              if (d.__isVueForBindingLeft)
                return p5.call((c) => {
                  let D2 = t2([",", s5], c.map(y, "params")), { params: E } = c.getValue();
                  return E.length === 1 ? D2 : ["(", u3([n, a2(D2)]), n, ")"];
                }, "program", "body", 0);
              if (d.__isVueBindings)
                return p5.call((c) => t2([",", s5], c.map(y, "params")), "program", "body", 0);
            }
          }
          function l(p5) {
            switch (p5.type) {
              case "MemberExpression":
                switch (p5.property.type) {
                  case "Identifier":
                  case "NumericLiteral":
                  case "StringLiteral":
                    return l(p5.object);
                }
                return false;
              case "Identifier":
                return true;
              default:
                return false;
            }
          }
          r2.exports = { isVueEventBindingExpression: l, printHtmlBinding: i2 };
        } }), ru = te({ "src/language-js/print/binaryish.js"(e2, r2) {
          "use strict";
          ne();
          var { printComments: t2 } = et(), { getLast: s5 } = Ue(), { builders: { join: a2, line: n, softline: u3, group: i2, indent: l, align: p5, indentIfBreak: d }, utils: { cleanDoc: y, getDocParts: g, isConcat: c } } = qe(), { hasLeadingOwnLineComment: D2, isBinaryish: E, isJsxNode: _2, shouldFlatten: w, hasComment: F2, CommentCheckFlags: S3, isCallExpression: N, isMemberExpression: I, isObjectProperty: P, isEnabledHackPipeline: $2 } = Ke(), f3 = 0;
          function T2(o, h4, C) {
            let x2 = o.getValue(), b = o.getParentNode(), B = o.getParentNode(1), k = x2 !== b.body && (b.type === "IfStatement" || b.type === "WhileStatement" || b.type === "SwitchStatement" || b.type === "DoWhileStatement"), M = $2(h4) && x2.operator === "|>", R = m2(o, C, h4, false, k);
            if (k)
              return R;
            if (M)
              return i2(R);
            if (N(b) && b.callee === x2 || b.type === "UnaryExpression" || I(b) && !b.computed)
              return i2([l([u3, ...R]), u3]);
            let q2 = b.type === "ReturnStatement" || b.type === "ThrowStatement" || b.type === "JSXExpressionContainer" && B.type === "JSXAttribute" || x2.operator !== "|" && b.type === "JsExpressionRoot" || x2.type !== "NGPipeExpression" && (b.type === "NGRoot" && h4.parser === "__ng_binding" || b.type === "NGMicrosyntaxExpression" && B.type === "NGMicrosyntax" && B.body.length === 1) || x2 === b.body && b.type === "ArrowFunctionExpression" || x2 !== b.body && b.type === "ForStatement" || b.type === "ConditionalExpression" && B.type !== "ReturnStatement" && B.type !== "ThrowStatement" && !N(B) || b.type === "TemplateLiteral", J = b.type === "AssignmentExpression" || b.type === "VariableDeclarator" || b.type === "ClassProperty" || b.type === "PropertyDefinition" || b.type === "TSAbstractPropertyDefinition" || b.type === "ClassPrivateProperty" || P(b), L = E(x2.left) && w(x2.operator, x2.left.operator);
            if (q2 || v(x2) && !L || !v(x2) && J)
              return i2(R);
            if (R.length === 0)
              return "";
            let Q = _2(x2.right), V = R.findIndex((W) => typeof W != "string" && !Array.isArray(W) && W.type === "group"), j = R.slice(0, V === -1 ? 1 : V + 1), Y = R.slice(j.length, Q ? -1 : void 0), ie = Symbol("logicalChain-" + ++f3), ee = i2([...j, l(Y)], { id: ie });
            if (!Q)
              return ee;
            let le = s5(R);
            return i2([ee, d(le, { groupId: ie })]);
          }
          function m2(o, h4, C, x2, b) {
            let B = o.getValue();
            if (!E(B))
              return [i2(h4())];
            let k = [];
            w(B.operator, B.left.operator) ? k = o.call((Y) => m2(Y, h4, C, true, b), "left") : k.push(i2(h4("left")));
            let M = v(B), R = (B.operator === "|>" || B.type === "NGPipeExpression" || B.operator === "|" && C.parser === "__vue_expression") && !D2(C.originalText, B.right), q2 = B.type === "NGPipeExpression" ? "|" : B.operator, J = B.type === "NGPipeExpression" && B.arguments.length > 0 ? i2(l([n, ": ", a2([n, ": "], o.map(h4, "arguments").map((Y) => p5(2, i2(Y))))])) : "", L;
            if (M)
              L = [q2, " ", h4("right"), J];
            else {
              let ie = $2(C) && q2 === "|>" ? o.call((ee) => m2(ee, h4, C, true, b), "right") : h4("right");
              L = [R ? n : "", q2, R ? " " : n, ie, J];
            }
            let Q = o.getParentNode(), V = F2(B.left, S3.Trailing | S3.Line), j = V || !(b && B.type === "LogicalExpression") && Q.type !== B.type && B.left.type !== B.type && B.right.type !== B.type;
            if (k.push(R ? "" : " ", j ? i2(L, { shouldBreak: V }) : L), x2 && F2(B)) {
              let Y = y(t2(o, k, C));
              return c(Y) || Y.type === "fill" ? g(Y) : [Y];
            }
            return k;
          }
          function v(o) {
            return o.type !== "LogicalExpression" ? false : !!(o.right.type === "ObjectExpression" && o.right.properties.length > 0 || o.right.type === "ArrayExpression" && o.right.elements.length > 0 || _2(o.right));
          }
          r2.exports = { printBinaryishExpression: T2, shouldInlineLogicalExpression: v };
        } }), pd = te({ "src/language-js/print/angular.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { join: t2, line: s5, group: a2 } } = qe(), { hasNode: n, hasComment: u3, getComments: i2 } = Ke(), { printBinaryishExpression: l } = ru();
          function p5(g, c, D2) {
            let E = g.getValue();
            if (E.type.startsWith("NG"))
              switch (E.type) {
                case "NGRoot":
                  return [D2("node"), u3(E.node) ? " //" + i2(E.node)[0].value.trimEnd() : ""];
                case "NGPipeExpression":
                  return l(g, c, D2);
                case "NGChainedExpression":
                  return a2(t2([";", s5], g.map((_2) => y(_2) ? D2() : ["(", D2(), ")"], "expressions")));
                case "NGEmptyExpression":
                  return "";
                case "NGQuotedExpression":
                  return [E.prefix, ": ", E.value.trim()];
                case "NGMicrosyntax":
                  return g.map((_2, w) => [w === 0 ? "" : d(_2.getValue(), w, E) ? " " : [";", s5], D2()], "body");
                case "NGMicrosyntaxKey":
                  return /^[$_a-z][\w$]*(?:-[$_a-z][\w$])*$/i.test(E.name) ? E.name : JSON.stringify(E.name);
                case "NGMicrosyntaxExpression":
                  return [D2("expression"), E.alias === null ? "" : [" as ", D2("alias")]];
                case "NGMicrosyntaxKeyedExpression": {
                  let _2 = g.getName(), w = g.getParentNode(), F2 = d(E, _2, w) || (_2 === 1 && (E.key.name === "then" || E.key.name === "else") || _2 === 2 && E.key.name === "else" && w.body[_2 - 1].type === "NGMicrosyntaxKeyedExpression" && w.body[_2 - 1].key.name === "then") && w.body[0].type === "NGMicrosyntaxExpression";
                  return [D2("key"), F2 ? " " : ": ", D2("expression")];
                }
                case "NGMicrosyntaxLet":
                  return ["let ", D2("key"), E.value === null ? "" : [" = ", D2("value")]];
                case "NGMicrosyntaxAs":
                  return [D2("key"), " as ", D2("alias")];
                default:
                  throw new Error(`Unknown Angular node type: ${JSON.stringify(E.type)}.`);
              }
          }
          function d(g, c, D2) {
            return g.type === "NGMicrosyntaxKeyedExpression" && g.key.name === "of" && c === 1 && D2.body[0].type === "NGMicrosyntaxLet" && D2.body[0].value === null;
          }
          function y(g) {
            return n(g.getValue(), (c) => {
              switch (c.type) {
                case void 0:
                  return false;
                case "CallExpression":
                case "OptionalCallExpression":
                case "AssignmentExpression":
                  return true;
              }
            });
          }
          r2.exports = { printAngular: p5 };
        } }), fd = te({ "src/language-js/print/jsx.js"(e2, r2) {
          "use strict";
          ne();
          var { printComments: t2, printDanglingComments: s5, printCommentsSeparately: a2 } = et(), { builders: { line: n, hardline: u3, softline: i2, group: l, indent: p5, conditionalGroup: d, fill: y, ifBreak: g, lineSuffixBoundary: c, join: D2 }, utils: { willBreak: E } } = qe(), { getLast: _2, getPreferredQuote: w } = Ue(), { isJsxNode: F2, rawText: S3, isCallExpression: N, isStringLiteral: I, isBinaryish: P, hasComment: $2, CommentCheckFlags: f3, hasNodeIgnoreComment: T2 } = Ke(), m2 = qt(), { willPrintOwnComments: v } = Eo(), o = (U) => U === "" || U === n || U === u3 || U === i2;
          function h4(U, Z2, se) {
            let De = U.getValue();
            if (De.type === "JSXElement" && de(De))
              return [se("openingElement"), se("closingElement")];
            let ge = De.type === "JSXElement" ? se("openingElement") : se("openingFragment"), he2 = De.type === "JSXElement" ? se("closingElement") : se("closingFragment");
            if (De.children.length === 1 && De.children[0].type === "JSXExpressionContainer" && (De.children[0].expression.type === "TemplateLiteral" || De.children[0].expression.type === "TaggedTemplateExpression"))
              return [ge, ...U.map(se, "children"), he2];
            De.children = De.children.map((A2) => Fe(A2) ? { type: "JSXText", value: " ", raw: " " } : A2);
            let we = De.children.some(F2), ke = De.children.filter((A2) => A2.type === "JSXExpressionContainer").length > 1, Re = De.type === "JSXElement" && De.openingElement.attributes.length > 1, Ne = E(ge) || we || Re || ke, Pe = U.getParentNode().rootMarker === "mdx", oe = Z2.singleQuote ? "{' '}" : '{" "}', H = Pe ? " " : g([oe, i2], " "), ce = De.openingElement && De.openingElement.name && De.openingElement.name.name === "fbt", X = C(U, Z2, se, H, ce), pe = De.children.some((A2) => ue(A2));
            for (let A2 = X.length - 2; A2 >= 0; A2--) {
              let G = X[A2] === "" && X[A2 + 1] === "", re = X[A2] === u3 && X[A2 + 1] === "" && X[A2 + 2] === u3, ye = (X[A2] === i2 || X[A2] === u3) && X[A2 + 1] === "" && X[A2 + 2] === H, Ee = X[A2] === H && X[A2 + 1] === "" && (X[A2 + 2] === i2 || X[A2 + 2] === u3), Be = X[A2] === H && X[A2 + 1] === "" && X[A2 + 2] === H, ve = X[A2] === i2 && X[A2 + 1] === "" && X[A2 + 2] === u3 || X[A2] === u3 && X[A2 + 1] === "" && X[A2 + 2] === i2;
              re && pe || G || ye || Be || ve ? X.splice(A2, 2) : Ee && X.splice(A2 + 1, 2);
            }
            for (; X.length > 0 && o(_2(X)); )
              X.pop();
            for (; X.length > 1 && o(X[0]) && o(X[1]); )
              X.shift(), X.shift();
            let Ae = [];
            for (let [A2, G] of X.entries()) {
              if (G === H) {
                if (A2 === 1 && X[A2 - 1] === "") {
                  if (X.length === 2) {
                    Ae.push(oe);
                    continue;
                  }
                  Ae.push([oe, u3]);
                  continue;
                } else if (A2 === X.length - 1) {
                  Ae.push(oe);
                  continue;
                } else if (X[A2 - 1] === "" && X[A2 - 2] === u3) {
                  Ae.push(oe);
                  continue;
                }
              }
              Ae.push(G), E(G) && (Ne = true);
            }
            let Ce = pe ? y(Ae) : l(Ae, { shouldBreak: true });
            if (Pe)
              return Ce;
            let fe = l([ge, p5([u3, Ce]), u3, he2]);
            return Ne ? fe : d([l([ge, ...X, he2]), fe]);
          }
          function C(U, Z2, se, De, ge) {
            let he2 = [];
            return U.each((we, ke, Re) => {
              let Ne = we.getValue();
              if (Ne.type === "JSXText") {
                let Pe = S3(Ne);
                if (ue(Ne)) {
                  let oe = Pe.split(le);
                  if (oe[0] === "") {
                    if (he2.push(""), oe.shift(), /\n/.test(oe[0])) {
                      let ce = Re[ke + 1];
                      he2.push(b(ge, oe[1], Ne, ce));
                    } else
                      he2.push(De);
                    oe.shift();
                  }
                  let H;
                  if (_2(oe) === "" && (oe.pop(), H = oe.pop()), oe.length === 0)
                    return;
                  for (let [ce, X] of oe.entries())
                    ce % 2 === 1 ? he2.push(n) : he2.push(X);
                  if (H !== void 0)
                    if (/\n/.test(H)) {
                      let ce = Re[ke + 1];
                      he2.push(b(ge, _2(he2), Ne, ce));
                    } else
                      he2.push(De);
                  else {
                    let ce = Re[ke + 1];
                    he2.push(x2(ge, _2(he2), Ne, ce));
                  }
                } else
                  /\n/.test(Pe) ? Pe.match(/\n/g).length > 1 && he2.push("", u3) : he2.push("", De);
              } else {
                let Pe = se();
                he2.push(Pe);
                let oe = Re[ke + 1];
                if (oe && ue(oe)) {
                  let ce = K(S3(oe)).split(le)[0];
                  he2.push(x2(ge, ce, Ne, oe));
                } else
                  he2.push(u3);
              }
            }, "children"), he2;
          }
          function x2(U, Z2, se, De) {
            return U ? "" : se.type === "JSXElement" && !se.closingElement || De && De.type === "JSXElement" && !De.closingElement ? Z2.length === 1 ? i2 : u3 : i2;
          }
          function b(U, Z2, se, De) {
            return U ? u3 : Z2.length === 1 ? se.type === "JSXElement" && !se.closingElement || De && De.type === "JSXElement" && !De.closingElement ? u3 : i2 : u3;
          }
          function B(U, Z2, se) {
            let De = U.getParentNode();
            if (!De || { ArrayExpression: true, JSXAttribute: true, JSXElement: true, JSXExpressionContainer: true, JSXFragment: true, ExpressionStatement: true, CallExpression: true, OptionalCallExpression: true, ConditionalExpression: true, JsExpressionRoot: true }[De.type])
              return Z2;
            let he2 = U.match(void 0, (ke) => ke.type === "ArrowFunctionExpression", N, (ke) => ke.type === "JSXExpressionContainer"), we = m2(U, se);
            return l([we ? "" : g("("), p5([i2, Z2]), i2, we ? "" : g(")")], { shouldBreak: he2 });
          }
          function k(U, Z2, se) {
            let De = U.getValue(), ge = [];
            if (ge.push(se("name")), De.value) {
              let he2;
              if (I(De.value)) {
                let ke = S3(De.value).slice(1, -1).replace(/&apos;/g, "'").replace(/&quot;/g, '"'), { escaped: Re, quote: Ne, regex: Pe } = w(ke, Z2.jsxSingleQuote ? "'" : '"');
                ke = ke.replace(Pe, Re);
                let { leading: oe, trailing: H } = U.call(() => a2(U, Z2), "value");
                he2 = [oe, Ne, ke, Ne, H];
              } else
                he2 = se("value");
              ge.push("=", he2);
            }
            return ge;
          }
          function M(U, Z2, se) {
            let De = U.getValue(), ge = (he2, we) => he2.type === "JSXEmptyExpression" || !$2(he2) && (he2.type === "ArrayExpression" || he2.type === "ObjectExpression" || he2.type === "ArrowFunctionExpression" || he2.type === "AwaitExpression" && (ge(he2.argument, he2) || he2.argument.type === "JSXElement") || N(he2) || he2.type === "FunctionExpression" || he2.type === "TemplateLiteral" || he2.type === "TaggedTemplateExpression" || he2.type === "DoExpression" || F2(we) && (he2.type === "ConditionalExpression" || P(he2)));
            return ge(De.expression, U.getParentNode(0)) ? l(["{", se("expression"), c, "}"]) : l(["{", p5([i2, se("expression")]), i2, c, "}"]);
          }
          function R(U, Z2, se) {
            let De = U.getValue(), ge = De.name && $2(De.name) || De.typeParameters && $2(De.typeParameters);
            if (De.selfClosing && De.attributes.length === 0 && !ge)
              return ["<", se("name"), se("typeParameters"), " />"];
            if (De.attributes && De.attributes.length === 1 && De.attributes[0].value && I(De.attributes[0].value) && !De.attributes[0].value.value.includes(`
`) && !ge && !$2(De.attributes[0]))
              return l(["<", se("name"), se("typeParameters"), " ", ...U.map(se, "attributes"), De.selfClosing ? " />" : ">"]);
            let he2 = De.attributes && De.attributes.some((ke) => ke.value && I(ke.value) && ke.value.value.includes(`
`)), we = Z2.singleAttributePerLine && De.attributes.length > 1 ? u3 : n;
            return l(["<", se("name"), se("typeParameters"), p5(U.map(() => [we, se()], "attributes")), ...q2(De, Z2, ge)], { shouldBreak: he2 });
          }
          function q2(U, Z2, se) {
            return U.selfClosing ? [n, "/>"] : J(U, Z2, se) ? [">"] : [i2, ">"];
          }
          function J(U, Z2, se) {
            let De = U.attributes.length > 0 && $2(_2(U.attributes), f3.Trailing);
            return U.attributes.length === 0 && !se || (Z2.bracketSameLine || Z2.jsxBracketSameLine) && (!se || U.attributes.length > 0) && !De;
          }
          function L(U, Z2, se) {
            let De = U.getValue(), ge = [];
            ge.push("</");
            let he2 = se("name");
            return $2(De.name, f3.Leading | f3.Line) ? ge.push(p5([u3, he2]), u3) : $2(De.name, f3.Leading | f3.Block) ? ge.push(" ", he2) : ge.push(he2), ge.push(">"), ge;
          }
          function Q(U, Z2) {
            let se = U.getValue(), De = $2(se), ge = $2(se, f3.Line), he2 = se.type === "JSXOpeningFragment";
            return [he2 ? "<" : "</", p5([ge ? u3 : De && !he2 ? " " : "", s5(U, Z2, true)]), ge ? u3 : "", ">"];
          }
          function V(U, Z2, se) {
            let De = t2(U, h4(U, Z2, se), Z2);
            return B(U, De, Z2);
          }
          function j(U, Z2) {
            let se = U.getValue(), De = $2(se, f3.Line);
            return [s5(U, Z2, !De), De ? u3 : ""];
          }
          function Y(U, Z2, se) {
            let De = U.getValue();
            return ["{", U.call((ge) => {
              let he2 = ["...", se()], we = ge.getValue();
              return !$2(we) || !v(ge) ? he2 : [p5([i2, t2(ge, he2, Z2)]), i2];
            }, De.type === "JSXSpreadAttribute" ? "argument" : "expression"), "}"];
          }
          function ie(U, Z2, se) {
            let De = U.getValue();
            if (De.type.startsWith("JSX"))
              switch (De.type) {
                case "JSXAttribute":
                  return k(U, Z2, se);
                case "JSXIdentifier":
                  return String(De.name);
                case "JSXNamespacedName":
                  return D2(":", [se("namespace"), se("name")]);
                case "JSXMemberExpression":
                  return D2(".", [se("object"), se("property")]);
                case "JSXSpreadAttribute":
                  return Y(U, Z2, se);
                case "JSXSpreadChild":
                  return Y(U, Z2, se);
                case "JSXExpressionContainer":
                  return M(U, Z2, se);
                case "JSXFragment":
                case "JSXElement":
                  return V(U, Z2, se);
                case "JSXOpeningElement":
                  return R(U, Z2, se);
                case "JSXClosingElement":
                  return L(U, Z2, se);
                case "JSXOpeningFragment":
                case "JSXClosingFragment":
                  return Q(U, Z2);
                case "JSXEmptyExpression":
                  return j(U, Z2);
                case "JSXText":
                  throw new Error("JSXText should be handled by JSXElement");
                default:
                  throw new Error(`Unknown JSX node type: ${JSON.stringify(De.type)}.`);
              }
          }
          var ee = ` 
\r	`, le = new RegExp("([" + ee + "]+)"), W = new RegExp("[^" + ee + "]"), K = (U) => U.replace(new RegExp("(?:^" + le.source + "|" + le.source + "$)"), "");
          function de(U) {
            if (U.children.length === 0)
              return true;
            if (U.children.length > 1)
              return false;
            let Z2 = U.children[0];
            return Z2.type === "JSXText" && !ue(Z2);
          }
          function ue(U) {
            return U.type === "JSXText" && (W.test(S3(U)) || !/\n/.test(S3(U)));
          }
          function Fe(U) {
            return U.type === "JSXExpressionContainer" && I(U.expression) && U.expression.value === " " && !$2(U.expression);
          }
          function z2(U) {
            let Z2 = U.getValue(), se = U.getParentNode();
            if (!se || !Z2 || !F2(Z2) || !F2(se))
              return false;
            let De = se.children.indexOf(Z2), ge = null;
            for (let he2 = De; he2 > 0; he2--) {
              let we = se.children[he2 - 1];
              if (!(we.type === "JSXText" && !ue(we))) {
                ge = we;
                break;
              }
            }
            return ge && ge.type === "JSXExpressionContainer" && ge.expression.type === "JSXEmptyExpression" && T2(ge.expression);
          }
          r2.exports = { hasJsxIgnoreComment: z2, printJsx: ie };
        } }), ct = te({ "src/language-js/print/misc.js"(e2, r2) {
          "use strict";
          ne();
          var { isNonEmptyArray: t2 } = Ue(), { builders: { indent: s5, join: a2, line: n } } = qe(), { isFlowAnnotationComment: u3 } = Ke();
          function i2(_2) {
            let w = _2.getValue();
            return !w.optional || w.type === "Identifier" && w === _2.getParentNode().key ? "" : w.type === "OptionalCallExpression" || w.type === "OptionalMemberExpression" && w.computed ? "?." : "?";
          }
          function l(_2) {
            return _2.getValue().definite || _2.match(void 0, (w, F2) => F2 === "id" && w.type === "VariableDeclarator" && w.definite) ? "!" : "";
          }
          function p5(_2, w, F2) {
            let S3 = _2.getValue();
            return S3.typeArguments ? F2("typeArguments") : S3.typeParameters ? F2("typeParameters") : "";
          }
          function d(_2, w, F2) {
            let S3 = _2.getValue();
            if (!S3.typeAnnotation)
              return "";
            let N = _2.getParentNode(), I = N.type === "DeclareFunction" && N.id === S3;
            return u3(w.originalText, S3.typeAnnotation) ? [" /*: ", F2("typeAnnotation"), " */"] : [I ? "" : ": ", F2("typeAnnotation")];
          }
          function y(_2, w, F2) {
            return ["::", F2("callee")];
          }
          function g(_2, w, F2) {
            let S3 = _2.getValue();
            return t2(S3.modifiers) ? [a2(" ", _2.map(F2, "modifiers")), " "] : "";
          }
          function c(_2, w, F2) {
            return _2.type === "EmptyStatement" ? ";" : _2.type === "BlockStatement" || F2 ? [" ", w] : s5([n, w]);
          }
          function D2(_2, w, F2) {
            return ["...", F2("argument"), d(_2, w, F2)];
          }
          function E(_2, w) {
            let F2 = _2.slice(1, -1);
            if (F2.includes('"') || F2.includes("'"))
              return _2;
            let S3 = w.singleQuote ? "'" : '"';
            return S3 + F2 + S3;
          }
          r2.exports = { printOptionalToken: i2, printDefiniteToken: l, printFunctionTypeParameters: p5, printBindExpressionCallee: y, printTypeScriptModifiers: g, printTypeAnnotation: d, printRestSpread: D2, adjustClause: c, printDirective: E };
        } }), er = te({ "src/language-js/print/array.js"(e2, r2) {
          "use strict";
          ne();
          var { printDanglingComments: t2 } = et(), { builders: { line: s5, softline: a2, hardline: n, group: u3, indent: i2, ifBreak: l, fill: p5 } } = qe(), { getLast: d, hasNewline: y } = Ue(), { shouldPrintComma: g, hasComment: c, CommentCheckFlags: D2, isNextLineEmpty: E, isNumericLiteral: _2, isSignedNumericLiteral: w } = Ke(), { locStart: F2 } = ut(), { printOptionalToken: S3, printTypeAnnotation: N } = ct();
          function I(T2, m2, v) {
            let o = T2.getValue(), h4 = [], C = o.type === "TupleExpression" ? "#[" : "[", x2 = "]";
            if (o.elements.length === 0)
              c(o, D2.Dangling) ? h4.push(u3([C, t2(T2, m2), a2, x2])) : h4.push(C, x2);
            else {
              let b = d(o.elements), B = !(b && b.type === "RestElement"), k = b === null, M = Symbol("array"), R = !m2.__inJestEach && o.elements.length > 1 && o.elements.every((L, Q, V) => {
                let j = L && L.type;
                if (j !== "ArrayExpression" && j !== "ObjectExpression")
                  return false;
                let Y = V[Q + 1];
                if (Y && j !== Y.type)
                  return false;
                let ie = j === "ArrayExpression" ? "elements" : "properties";
                return L[ie] && L[ie].length > 1;
              }), q2 = P(o, m2), J = B ? k ? "," : g(m2) ? q2 ? l(",", "", { groupId: M }) : l(",") : "" : "";
              h4.push(u3([C, i2([a2, q2 ? f3(T2, m2, v, J) : [$2(T2, m2, "elements", v), J], t2(T2, m2, true)]), a2, x2], { shouldBreak: R, id: M }));
            }
            return h4.push(S3(T2), N(T2, m2, v)), h4;
          }
          function P(T2, m2) {
            return T2.elements.length > 1 && T2.elements.every((v) => v && (_2(v) || w(v) && !c(v.argument)) && !c(v, D2.Trailing | D2.Line, (o) => !y(m2.originalText, F2(o), { backwards: true })));
          }
          function $2(T2, m2, v, o) {
            let h4 = [], C = [];
            return T2.each((x2) => {
              h4.push(C, u3(o())), C = [",", s5], x2.getValue() && E(x2.getValue(), m2) && C.push(a2);
            }, v), h4;
          }
          function f3(T2, m2, v, o) {
            let h4 = [];
            return T2.each((C, x2, b) => {
              let B = x2 === b.length - 1;
              h4.push([v(), B ? o : ","]), B || h4.push(E(C.getValue(), m2) ? [n, n] : c(b[x2 + 1], D2.Leading | D2.Line) ? n : s5);
            }, "elements"), p5(h4);
          }
          r2.exports = { printArray: I, printArrayItems: $2, isConciselyPrintedArray: P };
        } }), Ao = te({ "src/language-js/print/call-arguments.js"(e2, r2) {
          "use strict";
          ne();
          var { printDanglingComments: t2 } = et(), { getLast: s5, getPenultimate: a2 } = Ue(), { getFunctionParameters: n, hasComment: u3, CommentCheckFlags: i2, isFunctionCompositionArgs: l, isJsxNode: p5, isLongCurriedCallExpression: d, shouldPrintComma: y, getCallArguments: g, iterateCallArgumentsPath: c, isNextLineEmpty: D2, isCallExpression: E, isStringLiteral: _2, isObjectProperty: w, isTSTypeExpression: F2 } = Ke(), { builders: { line: S3, hardline: N, softline: I, group: P, indent: $2, conditionalGroup: f3, ifBreak: T2, breakParent: m2 }, utils: { willBreak: v } } = qe(), { ArgExpansionBailout: o } = Qt(), { isConciselyPrintedArray: h4 } = er();
          function C(q2, J, L) {
            let Q = q2.getValue(), V = Q.type === "ImportExpression", j = g(Q);
            if (j.length === 0)
              return ["(", t2(q2, J, true), ")"];
            if (k(j))
              return ["(", L(["arguments", 0]), ", ", L(["arguments", 1]), ")"];
            let Y = false, ie = false, ee = j.length - 1, le = [];
            c(q2, (z2, U) => {
              let Z2 = z2.getNode(), se = [L()];
              U === ee || (D2(Z2, J) ? (U === 0 && (ie = true), Y = true, se.push(",", N, N)) : se.push(",", S3)), le.push(se);
            });
            let W = !(V || Q.callee && Q.callee.type === "Import") && y(J, "all") ? "," : "";
            function K() {
              return P(["(", $2([S3, ...le]), W, S3, ")"], { shouldBreak: true });
            }
            if (Y || q2.getParentNode().type !== "Decorator" && l(j))
              return K();
            let de = B(j), ue = b(j, J);
            if (de || ue) {
              if (de ? le.slice(1).some(v) : le.slice(0, -1).some(v))
                return K();
              let z2 = [];
              try {
                q2.try(() => {
                  c(q2, (U, Z2) => {
                    de && Z2 === 0 && (z2 = [[L([], { expandFirstArg: true }), le.length > 1 ? "," : "", ie ? N : S3, ie ? N : ""], ...le.slice(1)]), ue && Z2 === ee && (z2 = [...le.slice(0, -1), L([], { expandLastArg: true })]);
                  });
                });
              } catch (U) {
                if (U instanceof o)
                  return K();
                throw U;
              }
              return [le.some(v) ? m2 : "", f3([["(", ...z2, ")"], de ? ["(", P(z2[0], { shouldBreak: true }), ...z2.slice(1), ")"] : ["(", ...le.slice(0, -1), P(s5(z2), { shouldBreak: true }), ")"], K()])];
            }
            let Fe = ["(", $2([I, ...le]), T2(W), I, ")"];
            return d(q2) ? Fe : P(Fe, { shouldBreak: le.some(v) || Y });
          }
          function x2(q2) {
            let J = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
            return q2.type === "ObjectExpression" && (q2.properties.length > 0 || u3(q2)) || q2.type === "ArrayExpression" && (q2.elements.length > 0 || u3(q2)) || q2.type === "TSTypeAssertion" && x2(q2.expression) || F2(q2) && x2(q2.expression) || q2.type === "FunctionExpression" || q2.type === "ArrowFunctionExpression" && (!q2.returnType || !q2.returnType.typeAnnotation || q2.returnType.typeAnnotation.type !== "TSTypeReference" || M(q2.body)) && (q2.body.type === "BlockStatement" || q2.body.type === "ArrowFunctionExpression" && x2(q2.body, true) || q2.body.type === "ObjectExpression" || q2.body.type === "ArrayExpression" || !J && (E(q2.body) || q2.body.type === "ConditionalExpression") || p5(q2.body)) || q2.type === "DoExpression" || q2.type === "ModuleExpression";
          }
          function b(q2, J) {
            let L = s5(q2), Q = a2(q2);
            return !u3(L, i2.Leading) && !u3(L, i2.Trailing) && x2(L) && (!Q || Q.type !== L.type) && (q2.length !== 2 || Q.type !== "ArrowFunctionExpression" || L.type !== "ArrayExpression") && !(q2.length > 1 && L.type === "ArrayExpression" && h4(L, J));
          }
          function B(q2) {
            if (q2.length !== 2)
              return false;
            let [J, L] = q2;
            return J.type === "ModuleExpression" && R(L) ? true : !u3(J) && (J.type === "FunctionExpression" || J.type === "ArrowFunctionExpression" && J.body.type === "BlockStatement") && L.type !== "FunctionExpression" && L.type !== "ArrowFunctionExpression" && L.type !== "ConditionalExpression" && !x2(L);
          }
          function k(q2) {
            return q2.length === 2 && q2[0].type === "ArrowFunctionExpression" && n(q2[0]).length === 0 && q2[0].body.type === "BlockStatement" && q2[1].type === "ArrayExpression" && !q2.some((J) => u3(J));
          }
          function M(q2) {
            return q2.type === "BlockStatement" && (q2.body.some((J) => J.type !== "EmptyStatement") || u3(q2, i2.Dangling));
          }
          function R(q2) {
            return q2.type === "ObjectExpression" && q2.properties.length === 1 && w(q2.properties[0]) && q2.properties[0].key.type === "Identifier" && q2.properties[0].key.name === "type" && _2(q2.properties[0].value) && q2.properties[0].value.value === "module";
          }
          r2.exports = C;
        } }), So = te({ "src/language-js/print/member.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { softline: t2, group: s5, indent: a2, label: n } } = qe(), { isNumericLiteral: u3, isMemberExpression: i2, isCallExpression: l } = Ke(), { printOptionalToken: p5 } = ct();
          function d(g, c, D2) {
            let E = g.getValue(), _2 = g.getParentNode(), w, F2 = 0;
            do
              w = g.getParentNode(F2), F2++;
            while (w && (i2(w) || w.type === "TSNonNullExpression"));
            let S3 = D2("object"), N = y(g, c, D2), I = w && (w.type === "NewExpression" || w.type === "BindExpression" || w.type === "AssignmentExpression" && w.left.type !== "Identifier") || E.computed || E.object.type === "Identifier" && E.property.type === "Identifier" && !i2(_2) || (_2.type === "AssignmentExpression" || _2.type === "VariableDeclarator") && (l(E.object) && E.object.arguments.length > 0 || E.object.type === "TSNonNullExpression" && l(E.object.expression) && E.object.expression.arguments.length > 0 || S3.label === "member-chain");
            return n(S3.label === "member-chain" ? "member-chain" : "member", [S3, I ? N : s5(a2([t2, N]))]);
          }
          function y(g, c, D2) {
            let E = D2("property"), _2 = g.getValue(), w = p5(g);
            return _2.computed ? !_2.property || u3(_2.property) ? [w, "[", E, "]"] : s5([w, "[", a2([t2, E]), t2, "]"]) : [w, ".", E];
          }
          r2.exports = { printMemberExpression: d, printMemberLookup: y };
        } }), Dd = te({ "src/language-js/print/member-chain.js"(e2, r2) {
          "use strict";
          ne();
          var { printComments: t2 } = et(), { getLast: s5, isNextLineEmptyAfterIndex: a2, getNextNonSpaceNonCommentCharacterIndex: n } = Ue(), u3 = qt(), { isCallExpression: i2, isMemberExpression: l, isFunctionOrArrowExpression: p5, isLongCurriedCallExpression: d, isMemberish: y, isNumericLiteral: g, isSimpleCallArgument: c, hasComment: D2, CommentCheckFlags: E, isNextLineEmpty: _2 } = Ke(), { locEnd: w } = ut(), { builders: { join: F2, hardline: S3, group: N, indent: I, conditionalGroup: P, breakParent: $2, label: f3 }, utils: { willBreak: T2 } } = qe(), m2 = Ao(), { printMemberLookup: v } = So(), { printOptionalToken: o, printFunctionTypeParameters: h4, printBindExpressionCallee: C } = ct();
          function x2(b, B, k) {
            let M = b.getParentNode(), R = !M || M.type === "ExpressionStatement", q2 = [];
            function J(Ne) {
              let { originalText: Pe } = B, oe = n(Pe, Ne, w);
              return Pe.charAt(oe) === ")" ? oe !== false && a2(Pe, oe + 1) : _2(Ne, B);
            }
            function L(Ne) {
              let Pe = Ne.getValue();
              i2(Pe) && (y(Pe.callee) || i2(Pe.callee)) ? (q2.unshift({ node: Pe, printed: [t2(Ne, [o(Ne), h4(Ne, B, k), m2(Ne, B, k)], B), J(Pe) ? S3 : ""] }), Ne.call((oe) => L(oe), "callee")) : y(Pe) ? (q2.unshift({ node: Pe, needsParens: u3(Ne, B), printed: t2(Ne, l(Pe) ? v(Ne, B, k) : C(Ne, B, k), B) }), Ne.call((oe) => L(oe), "object")) : Pe.type === "TSNonNullExpression" ? (q2.unshift({ node: Pe, printed: t2(Ne, "!", B) }), Ne.call((oe) => L(oe), "expression")) : q2.unshift({ node: Pe, printed: k() });
            }
            let Q = b.getValue();
            q2.unshift({ node: Q, printed: [o(b), h4(b, B, k), m2(b, B, k)] }), Q.callee && b.call((Ne) => L(Ne), "callee");
            let V = [], j = [q2[0]], Y = 1;
            for (; Y < q2.length && (q2[Y].node.type === "TSNonNullExpression" || i2(q2[Y].node) || l(q2[Y].node) && q2[Y].node.computed && g(q2[Y].node.property)); ++Y)
              j.push(q2[Y]);
            if (!i2(q2[0].node))
              for (; Y + 1 < q2.length && (y(q2[Y].node) && y(q2[Y + 1].node)); ++Y)
                j.push(q2[Y]);
            V.push(j), j = [];
            let ie = false;
            for (; Y < q2.length; ++Y) {
              if (ie && y(q2[Y].node)) {
                if (q2[Y].node.computed && g(q2[Y].node.property)) {
                  j.push(q2[Y]);
                  continue;
                }
                V.push(j), j = [], ie = false;
              }
              (i2(q2[Y].node) || q2[Y].node.type === "ImportExpression") && (ie = true), j.push(q2[Y]), D2(q2[Y].node, E.Trailing) && (V.push(j), j = [], ie = false);
            }
            j.length > 0 && V.push(j);
            function ee(Ne) {
              return /^[A-Z]|^[$_]+$/.test(Ne);
            }
            function le(Ne) {
              return Ne.length <= B.tabWidth;
            }
            function W(Ne) {
              let Pe = Ne[1].length > 0 && Ne[1][0].node.computed;
              if (Ne[0].length === 1) {
                let H = Ne[0][0].node;
                return H.type === "ThisExpression" || H.type === "Identifier" && (ee(H.name) || R && le(H.name) || Pe);
              }
              let oe = s5(Ne[0]).node;
              return l(oe) && oe.property.type === "Identifier" && (ee(oe.property.name) || Pe);
            }
            let K = V.length >= 2 && !D2(V[1][0].node) && W(V);
            function de(Ne) {
              let Pe = Ne.map((oe) => oe.printed);
              return Ne.length > 0 && s5(Ne).needsParens ? ["(", ...Pe, ")"] : Pe;
            }
            function ue(Ne) {
              return Ne.length === 0 ? "" : I(N([S3, F2(S3, Ne.map(de))]));
            }
            let Fe = V.map(de), z2 = Fe, U = K ? 3 : 2, Z2 = V.flat(), se = Z2.slice(1, -1).some((Ne) => D2(Ne.node, E.Leading)) || Z2.slice(0, -1).some((Ne) => D2(Ne.node, E.Trailing)) || V[U] && D2(V[U][0].node, E.Leading);
            if (V.length <= U && !se)
              return d(b) ? z2 : N(z2);
            let De = s5(V[K ? 1 : 0]).node, ge = !i2(De) && J(De), he2 = [de(V[0]), K ? V.slice(1, 2).map(de) : "", ge ? S3 : "", ue(V.slice(K ? 2 : 1))], we = q2.map((Ne) => {
              let { node: Pe } = Ne;
              return Pe;
            }).filter(i2);
            function ke() {
              let Ne = s5(s5(V)).node, Pe = s5(Fe);
              return i2(Ne) && T2(Pe) && we.slice(0, -1).some((oe) => oe.arguments.some(p5));
            }
            let Re;
            return se || we.length > 2 && we.some((Ne) => !Ne.arguments.every((Pe) => c(Pe, 0))) || Fe.slice(0, -1).some(T2) || ke() ? Re = N(he2) : Re = [T2(z2) || ge ? $2 : "", P([z2, he2])], f3("member-chain", Re);
          }
          r2.exports = x2;
        } }), xo = te({ "src/language-js/print/call-expression.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { join: t2, group: s5 } } = qe(), a2 = qt(), { getCallArguments: n, hasFlowAnnotationComment: u3, isCallExpression: i2, isMemberish: l, isStringLiteral: p5, isTemplateOnItsOwnLine: d, isTestCall: y, iterateCallArgumentsPath: g } = Ke(), c = Dd(), D2 = Ao(), { printOptionalToken: E, printFunctionTypeParameters: _2 } = ct();
          function w(S3, N, I) {
            let P = S3.getValue(), $2 = S3.getParentNode(), f3 = P.type === "NewExpression", T2 = P.type === "ImportExpression", m2 = E(S3), v = n(P);
            if (v.length > 0 && (!T2 && !f3 && F2(P, $2) || v.length === 1 && d(v[0], N.originalText) || !f3 && y(P, $2))) {
              let C = [];
              return g(S3, () => {
                C.push(I());
              }), [f3 ? "new " : "", I("callee"), m2, _2(S3, N, I), "(", t2(", ", C), ")"];
            }
            let o = (N.parser === "babel" || N.parser === "babel-flow") && P.callee && P.callee.type === "Identifier" && u3(P.callee.trailingComments);
            if (o && (P.callee.trailingComments[0].printed = true), !T2 && !f3 && l(P.callee) && !S3.call((C) => a2(C, N), "callee"))
              return c(S3, N, I);
            let h4 = [f3 ? "new " : "", T2 ? "import" : I("callee"), m2, o ? `/*:: ${P.callee.trailingComments[0].value.slice(2).trim()} */` : "", _2(S3, N, I), D2(S3, N, I)];
            return T2 || i2(P.callee) ? s5(h4) : h4;
          }
          function F2(S3, N) {
            if (S3.callee.type !== "Identifier")
              return false;
            if (S3.callee.name === "require")
              return true;
            if (S3.callee.name === "define") {
              let I = n(S3);
              return N.type === "ExpressionStatement" && (I.length === 1 || I.length === 2 && I[0].type === "ArrayExpression" || I.length === 3 && p5(I[0]) && I[1].type === "ArrayExpression");
            }
            return false;
          }
          r2.exports = { printCallExpression: w };
        } }), tr3 = te({ "src/language-js/print/assignment.js"(e2, r2) {
          "use strict";
          ne();
          var { isNonEmptyArray: t2, getStringWidth: s5 } = Ue(), { builders: { line: a2, group: n, indent: u3, indentIfBreak: i2, lineSuffixBoundary: l }, utils: { cleanDoc: p5, willBreak: d, canBreak: y } } = qe(), { hasLeadingOwnLineComment: g, isBinaryish: c, isStringLiteral: D2, isLiteral: E, isNumericLiteral: _2, isCallExpression: w, isMemberExpression: F2, getCallArguments: S3, rawText: N, hasComment: I, isSignedNumericLiteral: P, isObjectProperty: $2 } = Ke(), { shouldInlineLogicalExpression: f3 } = ru(), { printCallExpression: T2 } = xo();
          function m2(W, K, de, ue, Fe, z2) {
            let U = h4(W, K, de, ue, z2), Z2 = de(z2, { assignmentLayout: U });
            switch (U) {
              case "break-after-operator":
                return n([n(ue), Fe, n(u3([a2, Z2]))]);
              case "never-break-after-operator":
                return n([n(ue), Fe, " ", Z2]);
              case "fluid": {
                let se = Symbol("assignment");
                return n([n(ue), Fe, n(u3(a2), { id: se }), l, i2(Z2, { groupId: se })]);
              }
              case "break-lhs":
                return n([ue, Fe, " ", n(Z2)]);
              case "chain":
                return [n(ue), Fe, a2, Z2];
              case "chain-tail":
                return [n(ue), Fe, u3([a2, Z2])];
              case "chain-tail-arrow-chain":
                return [n(ue), Fe, Z2];
              case "only-left":
                return ue;
            }
          }
          function v(W, K, de) {
            let ue = W.getValue();
            return m2(W, K, de, de("left"), [" ", ue.operator], "right");
          }
          function o(W, K, de) {
            return m2(W, K, de, de("id"), " =", "init");
          }
          function h4(W, K, de, ue, Fe) {
            let z2 = W.getValue(), U = z2[Fe];
            if (!U)
              return "only-left";
            let Z2 = !b(U);
            if (W.match(b, B, (he2) => !Z2 || he2.type !== "ExpressionStatement" && he2.type !== "VariableDeclaration"))
              return Z2 ? U.type === "ArrowFunctionExpression" && U.body.type === "ArrowFunctionExpression" ? "chain-tail-arrow-chain" : "chain-tail" : "chain";
            if (!Z2 && b(U.right) || g(K.originalText, U))
              return "break-after-operator";
            if (U.type === "CallExpression" && U.callee.name === "require" || K.parser === "json5" || K.parser === "json")
              return "never-break-after-operator";
            if (x2(z2) || k(z2) || q2(z2) || J(z2) && y(ue))
              return "break-lhs";
            let ge = ie(z2, ue, K);
            return W.call(() => C(W, K, de, ge), Fe) ? "break-after-operator" : ge || U.type === "TemplateLiteral" || U.type === "TaggedTemplateExpression" || U.type === "BooleanLiteral" || _2(U) || U.type === "ClassExpression" ? "never-break-after-operator" : "fluid";
          }
          function C(W, K, de, ue) {
            let Fe = W.getValue();
            if (c(Fe) && !f3(Fe))
              return true;
            switch (Fe.type) {
              case "StringLiteralTypeAnnotation":
              case "SequenceExpression":
                return true;
              case "ConditionalExpression": {
                let { test: Z2 } = Fe;
                return c(Z2) && !f3(Z2);
              }
              case "ClassExpression":
                return t2(Fe.decorators);
            }
            if (ue)
              return false;
            let z2 = Fe, U = [];
            for (; ; )
              if (z2.type === "UnaryExpression")
                z2 = z2.argument, U.push("argument");
              else if (z2.type === "TSNonNullExpression")
                z2 = z2.expression, U.push("expression");
              else
                break;
            return !!(D2(z2) || W.call(() => V(W, K, de), ...U));
          }
          function x2(W) {
            if (B(W)) {
              let K = W.left || W.id;
              return K.type === "ObjectPattern" && K.properties.length > 2 && K.properties.some((de) => $2(de) && (!de.shorthand || de.value && de.value.type === "AssignmentPattern"));
            }
            return false;
          }
          function b(W) {
            return W.type === "AssignmentExpression";
          }
          function B(W) {
            return b(W) || W.type === "VariableDeclarator";
          }
          function k(W) {
            let K = M(W);
            if (t2(K)) {
              let de = W.type === "TSTypeAliasDeclaration" ? "constraint" : "bound";
              if (K.length > 1 && K.some((ue) => ue[de] || ue.default))
                return true;
            }
            return false;
          }
          function M(W) {
            return R(W) && W.typeParameters && W.typeParameters.params ? W.typeParameters.params : null;
          }
          function R(W) {
            return W.type === "TSTypeAliasDeclaration" || W.type === "TypeAlias";
          }
          function q2(W) {
            if (W.type !== "VariableDeclarator")
              return false;
            let { typeAnnotation: K } = W.id;
            if (!K || !K.typeAnnotation)
              return false;
            let de = L(K.typeAnnotation);
            return t2(de) && de.length > 1 && de.some((ue) => t2(L(ue)) || ue.type === "TSConditionalType");
          }
          function J(W) {
            return W.type === "VariableDeclarator" && W.init && W.init.type === "ArrowFunctionExpression";
          }
          function L(W) {
            return Q(W) && W.typeParameters && W.typeParameters.params ? W.typeParameters.params : null;
          }
          function Q(W) {
            return W.type === "TSTypeReference" || W.type === "GenericTypeAnnotation";
          }
          function V(W, K, de) {
            let ue = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false, Fe = W.getValue(), z2 = () => V(W, K, de, true);
            if (Fe.type === "TSNonNullExpression")
              return W.call(z2, "expression");
            if (w(Fe)) {
              if (T2(W, K, de).label === "member-chain")
                return false;
              let Z2 = S3(Fe);
              return !(Z2.length === 0 || Z2.length === 1 && Y(Z2[0], K)) || ee(Fe, de) ? false : W.call(z2, "callee");
            }
            return F2(Fe) ? W.call(z2, "object") : ue && (Fe.type === "Identifier" || Fe.type === "ThisExpression");
          }
          var j = 0.25;
          function Y(W, K) {
            let { printWidth: de } = K;
            if (I(W))
              return false;
            let ue = de * j;
            if (W.type === "ThisExpression" || W.type === "Identifier" && W.name.length <= ue || P(W) && !I(W.argument))
              return true;
            let Fe = W.type === "Literal" && "regex" in W && W.regex.pattern || W.type === "RegExpLiteral" && W.pattern;
            return Fe ? Fe.length <= ue : D2(W) ? N(W).length <= ue : W.type === "TemplateLiteral" ? W.expressions.length === 0 && W.quasis[0].value.raw.length <= ue && !W.quasis[0].value.raw.includes(`
`) : E(W);
          }
          function ie(W, K, de) {
            if (!$2(W))
              return false;
            K = p5(K);
            let ue = 3;
            return typeof K == "string" && s5(K) < de.tabWidth + ue;
          }
          function ee(W, K) {
            let de = le(W);
            if (t2(de)) {
              if (de.length > 1)
                return true;
              if (de.length === 1) {
                let Fe = de[0];
                if (Fe.type === "TSUnionType" || Fe.type === "UnionTypeAnnotation" || Fe.type === "TSIntersectionType" || Fe.type === "IntersectionTypeAnnotation" || Fe.type === "TSTypeLiteral" || Fe.type === "ObjectTypeAnnotation")
                  return true;
              }
              let ue = W.typeParameters ? "typeParameters" : "typeArguments";
              if (d(K(ue)))
                return true;
            }
            return false;
          }
          function le(W) {
            return W.typeParameters && W.typeParameters.params || W.typeArguments && W.typeArguments.params;
          }
          r2.exports = { printVariableDeclarator: o, printAssignmentExpression: v, printAssignment: m2, isArrowFunctionVariableDeclarator: J };
        } }), Lr = te({ "src/language-js/print/function-parameters.js"(e2, r2) {
          "use strict";
          ne();
          var { getNextNonSpaceNonCommentCharacter: t2 } = Ue(), { printDanglingComments: s5 } = et(), { builders: { line: a2, hardline: n, softline: u3, group: i2, indent: l, ifBreak: p5 }, utils: { removeLines: d, willBreak: y } } = qe(), { getFunctionParameters: g, iterateFunctionParametersPath: c, isSimpleType: D2, isTestCall: E, isTypeAnnotationAFunction: _2, isObjectType: w, isObjectTypePropertyAFunction: F2, hasRestParameter: S3, shouldPrintComma: N, hasComment: I, isNextLineEmpty: P } = Ke(), { locEnd: $2 } = ut(), { ArgExpansionBailout: f3 } = Qt(), { printFunctionTypeParameters: T2 } = ct();
          function m2(C, x2, b, B, k) {
            let M = C.getValue(), R = g(M), q2 = k ? T2(C, b, x2) : "";
            if (R.length === 0)
              return [q2, "(", s5(C, b, true, (ie) => t2(b.originalText, ie, $2) === ")"), ")"];
            let J = C.getParentNode(), L = E(J), Q = v(M), V = [];
            if (c(C, (ie, ee) => {
              let le = ee === R.length - 1;
              le && M.rest && V.push("..."), V.push(x2()), !le && (V.push(","), L || Q ? V.push(" ") : P(R[ee], b) ? V.push(n, n) : V.push(a2));
            }), B) {
              if (y(q2) || y(V))
                throw new f3();
              return i2([d(q2), "(", d(V), ")"]);
            }
            let j = R.every((ie) => !ie.decorators);
            return Q && j ? [q2, "(", ...V, ")"] : L ? [q2, "(", ...V, ")"] : (F2(J) || _2(J) || J.type === "TypeAlias" || J.type === "UnionTypeAnnotation" || J.type === "TSUnionType" || J.type === "IntersectionTypeAnnotation" || J.type === "FunctionTypeAnnotation" && J.returnType === M) && R.length === 1 && R[0].name === null && M.this !== R[0] && R[0].typeAnnotation && M.typeParameters === null && D2(R[0].typeAnnotation) && !M.rest ? b.arrowParens === "always" ? ["(", ...V, ")"] : V : [q2, "(", l([u3, ...V]), p5(!S3(M) && N(b, "all") ? "," : ""), u3, ")"];
          }
          function v(C) {
            if (!C)
              return false;
            let x2 = g(C);
            if (x2.length !== 1)
              return false;
            let [b] = x2;
            return !I(b) && (b.type === "ObjectPattern" || b.type === "ArrayPattern" || b.type === "Identifier" && b.typeAnnotation && (b.typeAnnotation.type === "TypeAnnotation" || b.typeAnnotation.type === "TSTypeAnnotation") && w(b.typeAnnotation.typeAnnotation) || b.type === "FunctionTypeParam" && w(b.typeAnnotation) || b.type === "AssignmentPattern" && (b.left.type === "ObjectPattern" || b.left.type === "ArrayPattern") && (b.right.type === "Identifier" || b.right.type === "ObjectExpression" && b.right.properties.length === 0 || b.right.type === "ArrayExpression" && b.right.elements.length === 0));
          }
          function o(C) {
            let x2;
            return C.returnType ? (x2 = C.returnType, x2.typeAnnotation && (x2 = x2.typeAnnotation)) : C.typeAnnotation && (x2 = C.typeAnnotation), x2;
          }
          function h4(C, x2) {
            let b = o(C);
            if (!b)
              return false;
            let B = C.typeParameters && C.typeParameters.params;
            if (B) {
              if (B.length > 1)
                return false;
              if (B.length === 1) {
                let k = B[0];
                if (k.constraint || k.default)
                  return false;
              }
            }
            return g(C).length === 1 && (w(b) || y(x2));
          }
          r2.exports = { printFunctionParameters: m2, shouldHugFunctionParameters: v, shouldGroupFunctionParameters: h4 };
        } }), Or = te({ "src/language-js/print/type-annotation.js"(e2, r2) {
          "use strict";
          ne();
          var { printComments: t2, printDanglingComments: s5 } = et(), { isNonEmptyArray: a2 } = Ue(), { builders: { group: n, join: u3, line: i2, softline: l, indent: p5, align: d, ifBreak: y } } = qe(), g = qt(), { locStart: c } = ut(), { isSimpleType: D2, isObjectType: E, hasLeadingOwnLineComment: _2, isObjectTypePropertyAFunction: w, shouldPrintComma: F2 } = Ke(), { printAssignment: S3 } = tr3(), { printFunctionParameters: N, shouldGroupFunctionParameters: I } = Lr(), { printArrayItems: P } = er();
          function $2(b) {
            if (D2(b) || E(b))
              return true;
            if (b.type === "UnionTypeAnnotation" || b.type === "TSUnionType") {
              let B = b.types.filter((M) => M.type === "VoidTypeAnnotation" || M.type === "TSVoidKeyword" || M.type === "NullLiteralTypeAnnotation" || M.type === "TSNullKeyword").length, k = b.types.some((M) => M.type === "ObjectTypeAnnotation" || M.type === "TSTypeLiteral" || M.type === "GenericTypeAnnotation" || M.type === "TSTypeReference");
              if (b.types.length - 1 === B && k)
                return true;
            }
            return false;
          }
          function f3(b, B, k) {
            let M = B.semi ? ";" : "", R = b.getValue(), q2 = [];
            return q2.push("opaque type ", k("id"), k("typeParameters")), R.supertype && q2.push(": ", k("supertype")), R.impltype && q2.push(" = ", k("impltype")), q2.push(M), q2;
          }
          function T2(b, B, k) {
            let M = B.semi ? ";" : "", R = b.getValue(), q2 = [];
            R.declare && q2.push("declare "), q2.push("type ", k("id"), k("typeParameters"));
            let J = R.type === "TSTypeAliasDeclaration" ? "typeAnnotation" : "right";
            return [S3(b, B, k, q2, " =", J), M];
          }
          function m2(b, B, k) {
            let M = b.getValue(), R = b.map(k, "types"), q2 = [], J = false;
            for (let L = 0; L < R.length; ++L)
              L === 0 ? q2.push(R[L]) : E(M.types[L - 1]) && E(M.types[L]) ? q2.push([" & ", J ? p5(R[L]) : R[L]]) : !E(M.types[L - 1]) && !E(M.types[L]) ? q2.push(p5([" &", i2, R[L]])) : (L > 1 && (J = true), q2.push(" & ", L > 1 ? p5(R[L]) : R[L]));
            return n(q2);
          }
          function v(b, B, k) {
            let M = b.getValue(), R = b.getParentNode(), q2 = R.type !== "TypeParameterInstantiation" && R.type !== "TSTypeParameterInstantiation" && R.type !== "GenericTypeAnnotation" && R.type !== "TSTypeReference" && R.type !== "TSTypeAssertion" && R.type !== "TupleTypeAnnotation" && R.type !== "TSTupleType" && !(R.type === "FunctionTypeParam" && !R.name && b.getParentNode(1).this !== R) && !((R.type === "TypeAlias" || R.type === "VariableDeclarator" || R.type === "TSTypeAliasDeclaration") && _2(B.originalText, M)), J = $2(M), L = b.map((j) => {
              let Y = k();
              return J || (Y = d(2, Y)), t2(j, Y, B);
            }, "types");
            if (J)
              return u3(" | ", L);
            let Q = q2 && !_2(B.originalText, M), V = [y([Q ? i2 : "", "| "]), u3([i2, "| "], L)];
            return g(b, B) ? n([p5(V), l]) : R.type === "TupleTypeAnnotation" && R.types.length > 1 || R.type === "TSTupleType" && R.elementTypes.length > 1 ? n([p5([y(["(", l]), V]), l, y(")")]) : n(q2 ? p5(V) : V);
          }
          function o(b, B, k) {
            let M = b.getValue(), R = [], q2 = b.getParentNode(0), J = b.getParentNode(1), L = b.getParentNode(2), Q = M.type === "TSFunctionType" || !((q2.type === "ObjectTypeProperty" || q2.type === "ObjectTypeInternalSlot") && !q2.variance && !q2.optional && c(q2) === c(M) || q2.type === "ObjectTypeCallProperty" || L && L.type === "DeclareFunction"), V = Q && (q2.type === "TypeAnnotation" || q2.type === "TSTypeAnnotation"), j = V && Q && (q2.type === "TypeAnnotation" || q2.type === "TSTypeAnnotation") && J.type === "ArrowFunctionExpression";
            w(q2) && (Q = true, V = true), j && R.push("(");
            let Y = N(b, k, B, false, true), ie = M.returnType || M.predicate || M.typeAnnotation ? [Q ? " => " : ": ", k("returnType"), k("predicate"), k("typeAnnotation")] : "", ee = I(M, ie);
            return R.push(ee ? n(Y) : Y), ie && R.push(ie), j && R.push(")"), n(R);
          }
          function h4(b, B, k) {
            let M = b.getValue(), R = M.type === "TSTupleType" ? "elementTypes" : "types", q2 = M[R], J = a2(q2), L = J ? l : "";
            return n(["[", p5([L, P(b, B, R, k)]), y(J && F2(B, "all") ? "," : ""), s5(b, B, true), L, "]"]);
          }
          function C(b, B, k) {
            let M = b.getValue(), R = M.type === "OptionalIndexedAccessType" && M.optional ? "?.[" : "[";
            return [k("objectType"), R, k("indexType"), "]"];
          }
          function x2(b, B, k) {
            let M = b.getValue();
            return [M.postfix ? "" : k, B("typeAnnotation"), M.postfix ? k : ""];
          }
          r2.exports = { printOpaqueType: f3, printTypeAlias: T2, printIntersectionType: m2, printUnionType: v, printFunctionType: o, printTupleType: h4, printIndexedAccessType: C, shouldHugType: $2, printJSDocType: x2 };
        } }), jr = te({ "src/language-js/print/type-parameters.js"(e2, r2) {
          "use strict";
          ne();
          var { printDanglingComments: t2 } = et(), { builders: { join: s5, line: a2, hardline: n, softline: u3, group: i2, indent: l, ifBreak: p5 } } = qe(), { isTestCall: d, hasComment: y, CommentCheckFlags: g, isTSXFile: c, shouldPrintComma: D2, getFunctionParameters: E, isObjectType: _2 } = Ke(), { createGroupIdMapper: w } = Ue(), { shouldHugType: F2 } = Or(), { isArrowFunctionVariableDeclarator: S3 } = tr3(), N = w("typeParameters");
          function I(f3, T2, m2, v) {
            let o = f3.getValue();
            if (!o[v])
              return "";
            if (!Array.isArray(o[v]))
              return m2(v);
            let h4 = f3.getNode(2), C = h4 && d(h4), x2 = f3.match((k) => !(k[v].length === 1 && _2(k[v][0])), void 0, (k, M) => M === "typeAnnotation", (k) => k.type === "Identifier", S3);
            if (o[v].length === 0 || !x2 && (C || o[v].length === 1 && (o[v][0].type === "NullableTypeAnnotation" || F2(o[v][0]))))
              return ["<", s5(", ", f3.map(m2, v)), P(f3, T2), ">"];
            let B = o.type === "TSTypeParameterInstantiation" ? "" : E(o).length === 1 && c(T2) && !o[v][0].constraint && f3.getParentNode().type === "ArrowFunctionExpression" ? "," : D2(T2, "all") ? p5(",") : "";
            return i2(["<", l([u3, s5([",", a2], f3.map(m2, v))]), B, u3, ">"], { id: N(o) });
          }
          function P(f3, T2) {
            let m2 = f3.getValue();
            if (!y(m2, g.Dangling))
              return "";
            let v = !y(m2, g.Line), o = t2(f3, T2, v);
            return v ? o : [o, n];
          }
          function $2(f3, T2, m2) {
            let v = f3.getValue(), o = [], h4 = f3.getParentNode();
            return h4.type === "TSMappedType" ? (o.push("[", m2("name")), v.constraint && o.push(" in ", m2("constraint")), h4.nameType && o.push(" as ", f3.callParent(() => m2("nameType"))), o.push("]"), o) : (v.variance && o.push(m2("variance")), v.in && o.push("in "), v.out && o.push("out "), o.push(m2("name")), v.bound && o.push(": ", m2("bound")), v.constraint && o.push(" extends ", m2("constraint")), v.default && o.push(" = ", m2("default")), o);
          }
          r2.exports = { printTypeParameter: $2, printTypeParameters: I, getTypeParametersGroupId: N };
        } }), rr = te({ "src/language-js/print/property.js"(e2, r2) {
          "use strict";
          ne();
          var { printComments: t2 } = et(), { printString: s5, printNumber: a2 } = Ue(), { isNumericLiteral: n, isSimpleNumber: u3, isStringLiteral: i2, isStringPropSafeToUnquote: l, rawText: p5 } = Ke(), { printAssignment: d } = tr3(), y = /* @__PURE__ */ new WeakMap();
          function g(D2, E, _2) {
            let w = D2.getNode();
            if (w.computed)
              return ["[", _2("key"), "]"];
            let F2 = D2.getParentNode(), { key: S3 } = w;
            if (E.quoteProps === "consistent" && !y.has(F2)) {
              let N = (F2.properties || F2.body || F2.members).some((I) => !I.computed && I.key && i2(I.key) && !l(I, E));
              y.set(F2, N);
            }
            if ((S3.type === "Identifier" || n(S3) && u3(a2(p5(S3))) && String(S3.value) === a2(p5(S3)) && !(E.parser === "typescript" || E.parser === "babel-ts")) && (E.parser === "json" || E.quoteProps === "consistent" && y.get(F2))) {
              let N = s5(JSON.stringify(S3.type === "Identifier" ? S3.name : S3.value.toString()), E);
              return D2.call((I) => t2(I, N, E), "key");
            }
            return l(w, E) && (E.quoteProps === "as-needed" || E.quoteProps === "consistent" && !y.get(F2)) ? D2.call((N) => t2(N, /^\d/.test(S3.value) ? a2(S3.value) : S3.value, E), "key") : _2("key");
          }
          function c(D2, E, _2) {
            return D2.getValue().shorthand ? _2("value") : d(D2, E, _2, g(D2, E, _2), ":", "value");
          }
          r2.exports = { printProperty: c, printPropertyKey: g };
        } }), qr = te({ "src/language-js/print/function.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Zt(), { printDanglingComments: s5, printCommentsSeparately: a2 } = et(), n = lt(), { getNextNonSpaceNonCommentCharacterIndex: u3 } = Ue(), { builders: { line: i2, softline: l, group: p5, indent: d, ifBreak: y, hardline: g, join: c, indentIfBreak: D2 }, utils: { removeLines: E, willBreak: _2 } } = qe(), { ArgExpansionBailout: w } = Qt(), { getFunctionParameters: F2, hasLeadingOwnLineComment: S3, isFlowAnnotationComment: N, isJsxNode: I, isTemplateOnItsOwnLine: P, shouldPrintComma: $2, startsWithNoLookaheadToken: f3, isBinaryish: T2, isLineComment: m2, hasComment: v, getComments: o, CommentCheckFlags: h4, isCallLikeExpression: C, isCallExpression: x2, getCallArguments: b, hasNakedLeftSide: B, getLeftSide: k } = Ke(), { locEnd: M } = ut(), { printFunctionParameters: R, shouldGroupFunctionParameters: q2 } = Lr(), { printPropertyKey: J } = rr(), { printFunctionTypeParameters: L } = ct();
          function Q(U, Z2, se, De) {
            let ge = U.getValue(), he2 = false;
            if ((ge.type === "FunctionDeclaration" || ge.type === "FunctionExpression") && De && De.expandLastArg) {
              let Pe = U.getParentNode();
              x2(Pe) && b(Pe).length > 1 && (he2 = true);
            }
            let we = [];
            ge.type === "TSDeclareFunction" && ge.declare && we.push("declare "), ge.async && we.push("async "), ge.generator ? we.push("function* ") : we.push("function "), ge.id && we.push(Z2("id"));
            let ke = R(U, Z2, se, he2), Re = K(U, Z2, se), Ne = q2(ge, Re);
            return we.push(L(U, se, Z2), p5([Ne ? p5(ke) : ke, Re]), ge.body ? " " : "", Z2("body")), se.semi && (ge.declare || !ge.body) && we.push(";"), we;
          }
          function V(U, Z2, se) {
            let De = U.getNode(), { kind: ge } = De, he2 = De.value || De, we = [];
            return !ge || ge === "init" || ge === "method" || ge === "constructor" ? he2.async && we.push("async ") : (t2.ok(ge === "get" || ge === "set"), we.push(ge, " ")), he2.generator && we.push("*"), we.push(J(U, Z2, se), De.optional || De.key.optional ? "?" : ""), De === he2 ? we.push(j(U, Z2, se)) : he2.type === "FunctionExpression" ? we.push(U.call((ke) => j(ke, Z2, se), "value")) : we.push(se("value")), we;
          }
          function j(U, Z2, se) {
            let De = U.getNode(), ge = R(U, se, Z2), he2 = K(U, se, Z2), we = q2(De, he2), ke = [L(U, Z2, se), p5([we ? p5(ge) : ge, he2])];
            return De.body ? ke.push(" ", se("body")) : ke.push(Z2.semi ? ";" : ""), ke;
          }
          function Y(U, Z2, se, De) {
            let ge = U.getValue(), he2 = [];
            if (ge.async && he2.push("async "), W(U, Z2))
              he2.push(se(["params", 0]));
            else {
              let ke = De && (De.expandLastArg || De.expandFirstArg), Re = K(U, se, Z2);
              if (ke) {
                if (_2(Re))
                  throw new w();
                Re = p5(E(Re));
              }
              he2.push(p5([R(U, se, Z2, ke, true), Re]));
            }
            let we = s5(U, Z2, true, (ke) => {
              let Re = u3(Z2.originalText, ke, M);
              return Re !== false && Z2.originalText.slice(Re, Re + 2) === "=>";
            });
            return we && he2.push(" ", we), he2;
          }
          function ie(U, Z2, se, De, ge, he2) {
            let we = U.getName(), ke = U.getParentNode(), Re = C(ke) && we === "callee", Ne = Boolean(Z2 && Z2.assignmentLayout), Pe = he2.body.type !== "BlockStatement" && he2.body.type !== "ObjectExpression" && he2.body.type !== "SequenceExpression", oe = Re && Pe || Z2 && Z2.assignmentLayout === "chain-tail-arrow-chain", H = Symbol("arrow-chain");
            return he2.body.type === "SequenceExpression" && (ge = p5(["(", d([l, ge]), l, ")"])), p5([p5(d([Re || Ne ? l : "", p5(c([" =>", i2], se), { shouldBreak: De })]), { id: H, shouldBreak: oe }), " =>", D2(Pe ? d([i2, ge]) : [" ", ge], { groupId: H }), Re ? y(l, "", { groupId: H }) : ""]);
          }
          function ee(U, Z2, se, De) {
            let ge = U.getValue(), he2 = [], we = [], ke = false;
            if ((function H() {
              let ce = Y(U, Z2, se, De);
              if (he2.length === 0)
                he2.push(ce);
              else {
                let { leading: X, trailing: pe } = a2(U, Z2);
                he2.push([X, ce]), we.unshift(pe);
              }
              ke = ke || ge.returnType && F2(ge).length > 0 || ge.typeParameters || F2(ge).some((X) => X.type !== "Identifier"), ge.body.type !== "ArrowFunctionExpression" || De && De.expandLastArg ? we.unshift(se("body", De)) : (ge = ge.body, U.call(H, "body"));
            })(), he2.length > 1)
              return ie(U, De, he2, ke, we, ge);
            let Re = he2;
            if (Re.push(" =>"), !S3(Z2.originalText, ge.body) && (ge.body.type === "ArrayExpression" || ge.body.type === "ObjectExpression" || ge.body.type === "BlockStatement" || I(ge.body) || P(ge.body, Z2.originalText) || ge.body.type === "ArrowFunctionExpression" || ge.body.type === "DoExpression"))
              return p5([...Re, " ", we]);
            if (ge.body.type === "SequenceExpression")
              return p5([...Re, p5([" (", d([l, we]), l, ")"])]);
            let Ne = (De && De.expandLastArg || U.getParentNode().type === "JSXExpressionContainer") && !v(ge), Pe = De && De.expandLastArg && $2(Z2, "all"), oe = ge.body.type === "ConditionalExpression" && !f3(ge.body, (H) => H.type === "ObjectExpression");
            return p5([...Re, p5([d([i2, oe ? y("", "(") : "", we, oe ? y("", ")") : ""]), Ne ? [y(Pe ? "," : ""), l] : ""])]);
          }
          function le(U) {
            let Z2 = F2(U);
            return Z2.length === 1 && !U.typeParameters && !v(U, h4.Dangling) && Z2[0].type === "Identifier" && !Z2[0].typeAnnotation && !v(Z2[0]) && !Z2[0].optional && !U.predicate && !U.returnType;
          }
          function W(U, Z2) {
            if (Z2.arrowParens === "always")
              return false;
            if (Z2.arrowParens === "avoid") {
              let se = U.getValue();
              return le(se);
            }
            return false;
          }
          function K(U, Z2, se) {
            let De = U.getValue(), ge = Z2("returnType");
            if (De.returnType && N(se.originalText, De.returnType))
              return [" /*: ", ge, " */"];
            let he2 = [ge];
            return De.returnType && De.returnType.typeAnnotation && he2.unshift(": "), De.predicate && he2.push(De.returnType ? " " : ": ", Z2("predicate")), he2;
          }
          function de(U, Z2, se) {
            let De = U.getValue(), ge = Z2.semi ? ";" : "", he2 = [];
            De.argument && (z2(Z2, De.argument) ? he2.push([" (", d([g, se("argument")]), g, ")"]) : T2(De.argument) || De.argument.type === "SequenceExpression" ? he2.push(p5([y(" (", " "), d([l, se("argument")]), l, y(")")])) : he2.push(" ", se("argument")));
            let we = o(De), ke = n(we), Re = ke && m2(ke);
            return Re && he2.push(ge), v(De, h4.Dangling) && he2.push(" ", s5(U, Z2, true)), Re || he2.push(ge), he2;
          }
          function ue(U, Z2, se) {
            return ["return", de(U, Z2, se)];
          }
          function Fe(U, Z2, se) {
            return ["throw", de(U, Z2, se)];
          }
          function z2(U, Z2) {
            if (S3(U.originalText, Z2))
              return true;
            if (B(Z2)) {
              let se = Z2, De;
              for (; De = k(se); )
                if (se = De, S3(U.originalText, se))
                  return true;
            }
            return false;
          }
          r2.exports = { printFunction: Q, printArrowFunction: ee, printMethod: V, printReturnStatement: ue, printThrowStatement: Fe, printMethodInternal: j, shouldPrintParamsWithoutParens: W };
        } }), nu = te({ "src/language-js/print/decorators.js"(e2, r2) {
          "use strict";
          ne();
          var { isNonEmptyArray: t2, hasNewline: s5 } = Ue(), { builders: { line: a2, hardline: n, join: u3, breakParent: i2, group: l } } = qe(), { locStart: p5, locEnd: d } = ut(), { getParentExportDeclaration: y } = Ke();
          function g(w, F2, S3) {
            let N = w.getValue();
            return l([u3(a2, w.map(S3, "decorators")), E(N, F2) ? n : a2]);
          }
          function c(w, F2, S3) {
            return [u3(n, w.map(S3, "declaration", "decorators")), n];
          }
          function D2(w, F2, S3) {
            let N = w.getValue(), { decorators: I } = N;
            if (!t2(I) || _2(w.getParentNode()))
              return;
            let P = N.type === "ClassExpression" || N.type === "ClassDeclaration" || E(N, F2);
            return [y(w) ? n : P ? i2 : "", u3(a2, w.map(S3, "decorators")), a2];
          }
          function E(w, F2) {
            return w.decorators.some((S3) => s5(F2.originalText, d(S3)));
          }
          function _2(w) {
            if (w.type !== "ExportDefaultDeclaration" && w.type !== "ExportNamedDeclaration" && w.type !== "DeclareExportDeclaration")
              return false;
            let F2 = w.declaration && w.declaration.decorators;
            return t2(F2) && p5(w) === p5(F2[0]);
          }
          r2.exports = { printDecorators: D2, printClassMemberDecorators: g, printDecoratorsBeforeExport: c, hasDecoratorsBeforeExport: _2 };
        } }), nr = te({ "src/language-js/print/class.js"(e2, r2) {
          "use strict";
          ne();
          var { isNonEmptyArray: t2, createGroupIdMapper: s5 } = Ue(), { printComments: a2, printDanglingComments: n } = et(), { builders: { join: u3, line: i2, hardline: l, softline: p5, group: d, indent: y, ifBreak: g } } = qe(), { hasComment: c, CommentCheckFlags: D2 } = Ke(), { getTypeParametersGroupId: E } = jr(), { printMethod: _2 } = qr(), { printOptionalToken: w, printTypeAnnotation: F2, printDefiniteToken: S3 } = ct(), { printPropertyKey: N } = rr(), { printAssignment: I } = tr3(), { printClassMemberDecorators: P } = nu();
          function $2(b, B, k) {
            let M = b.getValue(), R = [];
            M.declare && R.push("declare "), M.abstract && R.push("abstract "), R.push("class");
            let q2 = M.id && c(M.id, D2.Trailing) || M.typeParameters && c(M.typeParameters, D2.Trailing) || M.superClass && c(M.superClass) || t2(M.extends) || t2(M.mixins) || t2(M.implements), J = [], L = [];
            if (M.id && J.push(" ", k("id")), J.push(k("typeParameters")), M.superClass) {
              let Q = [h4(b, B, k), k("superTypeParameters")], V = b.call((j) => ["extends ", a2(j, Q, B)], "superClass");
              q2 ? L.push(i2, d(V)) : L.push(" ", V);
            } else
              L.push(o(b, B, k, "extends"));
            if (L.push(o(b, B, k, "mixins"), o(b, B, k, "implements")), q2) {
              let Q;
              v(M) ? Q = [...J, y(L)] : Q = y([...J, L]), R.push(d(Q, { id: f3(M) }));
            } else
              R.push(...J, ...L);
            return R.push(" ", k("body")), R;
          }
          var f3 = s5("heritageGroup");
          function T2(b) {
            return g(l, "", { groupId: f3(b) });
          }
          function m2(b) {
            return ["superClass", "extends", "mixins", "implements"].filter((B) => Boolean(b[B])).length > 1;
          }
          function v(b) {
            return b.typeParameters && !c(b.typeParameters, D2.Trailing | D2.Line) && !m2(b);
          }
          function o(b, B, k, M) {
            let R = b.getValue();
            if (!t2(R[M]))
              return "";
            let q2 = n(b, B, true, (J) => {
              let { marker: L } = J;
              return L === M;
            });
            return [v(R) ? g(" ", i2, { groupId: E(R.typeParameters) }) : i2, q2, q2 && l, M, d(y([i2, u3([",", i2], b.map(k, M))]))];
          }
          function h4(b, B, k) {
            let M = k("superClass");
            return b.getParentNode().type === "AssignmentExpression" ? d(g(["(", y([p5, M]), p5, ")"], M)) : M;
          }
          function C(b, B, k) {
            let M = b.getValue(), R = [];
            return t2(M.decorators) && R.push(P(b, B, k)), M.accessibility && R.push(M.accessibility + " "), M.readonly && R.push("readonly "), M.declare && R.push("declare "), M.static && R.push("static "), (M.type === "TSAbstractMethodDefinition" || M.abstract) && R.push("abstract "), M.override && R.push("override "), R.push(_2(b, B, k)), R;
          }
          function x2(b, B, k) {
            let M = b.getValue(), R = [], q2 = B.semi ? ";" : "";
            return t2(M.decorators) && R.push(P(b, B, k)), M.accessibility && R.push(M.accessibility + " "), M.declare && R.push("declare "), M.static && R.push("static "), (M.type === "TSAbstractPropertyDefinition" || M.type === "TSAbstractAccessorProperty" || M.abstract) && R.push("abstract "), M.override && R.push("override "), M.readonly && R.push("readonly "), M.variance && R.push(k("variance")), (M.type === "ClassAccessorProperty" || M.type === "AccessorProperty" || M.type === "TSAbstractAccessorProperty") && R.push("accessor "), R.push(N(b, B, k), w(b), S3(b), F2(b, B, k)), [I(b, B, k, R, " =", "value"), q2];
          }
          r2.exports = { printClass: $2, printClassMethod: C, printClassProperty: x2, printHardlineAfterHeritage: T2 };
        } }), bo = te({ "src/language-js/print/interface.js"(e2, r2) {
          "use strict";
          ne();
          var { isNonEmptyArray: t2 } = Ue(), { builders: { join: s5, line: a2, group: n, indent: u3, ifBreak: i2 } } = qe(), { hasComment: l, identity: p5, CommentCheckFlags: d } = Ke(), { getTypeParametersGroupId: y } = jr(), { printTypeScriptModifiers: g } = ct();
          function c(D2, E, _2) {
            let w = D2.getValue(), F2 = [];
            w.declare && F2.push("declare "), w.type === "TSInterfaceDeclaration" && F2.push(w.abstract ? "abstract " : "", g(D2, E, _2)), F2.push("interface");
            let S3 = [], N = [];
            w.type !== "InterfaceTypeAnnotation" && S3.push(" ", _2("id"), _2("typeParameters"));
            let I = w.typeParameters && !l(w.typeParameters, d.Trailing | d.Line);
            return t2(w.extends) && N.push(I ? i2(" ", a2, { groupId: y(w.typeParameters) }) : a2, "extends ", (w.extends.length === 1 ? p5 : u3)(s5([",", a2], D2.map(_2, "extends")))), w.id && l(w.id, d.Trailing) || t2(w.extends) ? I ? F2.push(n([...S3, u3(N)])) : F2.push(n(u3([...S3, ...N]))) : F2.push(...S3, ...N), F2.push(" ", _2("body")), n(F2);
          }
          r2.exports = { printInterface: c };
        } }), To = te({ "src/language-js/print/module.js"(e2, r2) {
          "use strict";
          ne();
          var { isNonEmptyArray: t2 } = Ue(), { builders: { softline: s5, group: a2, indent: n, join: u3, line: i2, ifBreak: l, hardline: p5 } } = qe(), { printDanglingComments: d } = et(), { hasComment: y, CommentCheckFlags: g, shouldPrintComma: c, needsHardlineAfterDanglingComment: D2, isStringLiteral: E, rawText: _2 } = Ke(), { locStart: w, hasSameLoc: F2 } = ut(), { hasDecoratorsBeforeExport: S3, printDecoratorsBeforeExport: N } = nu();
          function I(x2, b, B) {
            let k = x2.getValue(), M = b.semi ? ";" : "", R = [], { importKind: q2 } = k;
            return R.push("import"), q2 && q2 !== "value" && R.push(" ", q2), R.push(m2(x2, b, B), T2(x2, b, B), o(x2, b, B), M), R;
          }
          function P(x2, b, B) {
            let k = x2.getValue(), M = [];
            S3(k) && M.push(N(x2, b, B));
            let { type: R, exportKind: q2, declaration: J } = k;
            return M.push("export"), (k.default || R === "ExportDefaultDeclaration") && M.push(" default"), y(k, g.Dangling) && (M.push(" ", d(x2, b, true)), D2(k) && M.push(p5)), J ? M.push(" ", B("declaration")) : M.push(q2 === "type" ? " type" : "", m2(x2, b, B), T2(x2, b, B), o(x2, b, B)), f3(k, b) && M.push(";"), M;
          }
          function $2(x2, b, B) {
            let k = x2.getValue(), M = b.semi ? ";" : "", R = [], { exportKind: q2, exported: J } = k;
            return R.push("export"), q2 === "type" && R.push(" type"), R.push(" *"), J && R.push(" as ", B("exported")), R.push(T2(x2, b, B), o(x2, b, B), M), R;
          }
          function f3(x2, b) {
            if (!b.semi)
              return false;
            let { type: B, declaration: k } = x2, M = x2.default || B === "ExportDefaultDeclaration";
            if (!k)
              return true;
            let { type: R } = k;
            return !!(M && R !== "ClassDeclaration" && R !== "FunctionDeclaration" && R !== "TSInterfaceDeclaration" && R !== "DeclareClass" && R !== "DeclareFunction" && R !== "TSDeclareFunction" && R !== "EnumDeclaration");
          }
          function T2(x2, b, B) {
            let k = x2.getValue();
            if (!k.source)
              return "";
            let M = [];
            return v(k, b) || M.push(" from"), M.push(" ", B("source")), M;
          }
          function m2(x2, b, B) {
            let k = x2.getValue();
            if (v(k, b))
              return "";
            let M = [" "];
            if (t2(k.specifiers)) {
              let R = [], q2 = [];
              x2.each(() => {
                let J = x2.getValue().type;
                if (J === "ExportNamespaceSpecifier" || J === "ExportDefaultSpecifier" || J === "ImportNamespaceSpecifier" || J === "ImportDefaultSpecifier")
                  R.push(B());
                else if (J === "ExportSpecifier" || J === "ImportSpecifier")
                  q2.push(B());
                else
                  throw new Error(`Unknown specifier type ${JSON.stringify(J)}`);
              }, "specifiers"), M.push(u3(", ", R)), q2.length > 0 && (R.length > 0 && M.push(", "), q2.length > 1 || R.length > 0 || k.specifiers.some((L) => y(L)) ? M.push(a2(["{", n([b.bracketSpacing ? i2 : s5, u3([",", i2], q2)]), l(c(b) ? "," : ""), b.bracketSpacing ? i2 : s5, "}"])) : M.push(["{", b.bracketSpacing ? " " : "", ...q2, b.bracketSpacing ? " " : "", "}"]));
            } else
              M.push("{}");
            return M;
          }
          function v(x2, b) {
            let { type: B, importKind: k, source: M, specifiers: R } = x2;
            return B !== "ImportDeclaration" || t2(R) || k === "type" ? false : !/{\s*}/.test(b.originalText.slice(w(x2), w(M)));
          }
          function o(x2, b, B) {
            let k = x2.getNode();
            return t2(k.assertions) ? [" assert {", b.bracketSpacing ? " " : "", u3(", ", x2.map(B, "assertions")), b.bracketSpacing ? " " : "", "}"] : "";
          }
          function h4(x2, b, B) {
            let k = x2.getNode(), { type: M } = k, R = [], q2 = M === "ImportSpecifier" ? k.importKind : k.exportKind;
            q2 && q2 !== "value" && R.push(q2, " ");
            let J = M.startsWith("Import"), L = J ? "imported" : "local", Q = J ? "local" : "exported", V = k[L], j = k[Q], Y = "", ie = "";
            return M === "ExportNamespaceSpecifier" || M === "ImportNamespaceSpecifier" ? Y = "*" : V && (Y = B(L)), j && !C(k) && (ie = B(Q)), R.push(Y, Y && ie ? " as " : "", ie), R;
          }
          function C(x2) {
            if (x2.type !== "ImportSpecifier" && x2.type !== "ExportSpecifier")
              return false;
            let { local: b, [x2.type === "ImportSpecifier" ? "imported" : "exported"]: B } = x2;
            if (b.type !== B.type || !F2(b, B))
              return false;
            if (E(b))
              return b.value === B.value && _2(b) === _2(B);
            switch (b.type) {
              case "Identifier":
                return b.name === B.name;
              default:
                return false;
            }
          }
          r2.exports = { printImportDeclaration: I, printExportDeclaration: P, printExportAllDeclaration: $2, printModuleSpecifier: h4 };
        } }), uu = te({ "src/language-js/print/object.js"(e2, r2) {
          "use strict";
          ne();
          var { printDanglingComments: t2 } = et(), { builders: { line: s5, softline: a2, group: n, indent: u3, ifBreak: i2, hardline: l } } = qe(), { getLast: p5, hasNewlineInRange: d, hasNewline: y, isNonEmptyArray: g } = Ue(), { shouldPrintComma: c, hasComment: D2, getComments: E, CommentCheckFlags: _2, isNextLineEmpty: w } = Ke(), { locStart: F2, locEnd: S3 } = ut(), { printOptionalToken: N, printTypeAnnotation: I } = ct(), { shouldHugFunctionParameters: P } = Lr(), { shouldHugType: $2 } = Or(), { printHardlineAfterHeritage: f3 } = nr();
          function T2(m2, v, o) {
            let h4 = v.semi ? ";" : "", C = m2.getValue(), x2;
            C.type === "TSTypeLiteral" ? x2 = "members" : C.type === "TSInterfaceBody" ? x2 = "body" : x2 = "properties";
            let b = C.type === "ObjectTypeAnnotation", B = [x2];
            b && B.push("indexers", "callProperties", "internalSlots");
            let k = B.map((W) => C[W][0]).sort((W, K) => F2(W) - F2(K))[0], M = m2.getParentNode(0), R = b && M && (M.type === "InterfaceDeclaration" || M.type === "DeclareInterface" || M.type === "DeclareClass") && m2.getName() === "body", q2 = C.type === "TSInterfaceBody" || R || C.type === "ObjectPattern" && M.type !== "FunctionDeclaration" && M.type !== "FunctionExpression" && M.type !== "ArrowFunctionExpression" && M.type !== "ObjectMethod" && M.type !== "ClassMethod" && M.type !== "ClassPrivateMethod" && M.type !== "AssignmentPattern" && M.type !== "CatchClause" && C.properties.some((W) => W.value && (W.value.type === "ObjectPattern" || W.value.type === "ArrayPattern")) || C.type !== "ObjectPattern" && k && d(v.originalText, F2(C), F2(k)), J = R ? ";" : C.type === "TSInterfaceBody" || C.type === "TSTypeLiteral" ? i2(h4, ";") : ",", L = C.type === "RecordExpression" ? "#{" : C.exact ? "{|" : "{", Q = C.exact ? "|}" : "}", V = [];
            for (let W of B)
              m2.each((K) => {
                let de = K.getValue();
                V.push({ node: de, printed: o(), loc: F2(de) });
              }, W);
            B.length > 1 && V.sort((W, K) => W.loc - K.loc);
            let j = [], Y = V.map((W) => {
              let K = [...j, n(W.printed)];
              return j = [J, s5], (W.node.type === "TSPropertySignature" || W.node.type === "TSMethodSignature" || W.node.type === "TSConstructSignatureDeclaration") && D2(W.node, _2.PrettierIgnore) && j.shift(), w(W.node, v) && j.push(l), K;
            });
            if (C.inexact) {
              let W;
              if (D2(C, _2.Dangling)) {
                let K = D2(C, _2.Line);
                W = [t2(m2, v, true), K || y(v.originalText, S3(p5(E(C)))) ? l : s5, "..."];
              } else
                W = ["..."];
              Y.push([...j, ...W]);
            }
            let ie = p5(C[x2]), ee = !(C.inexact || ie && ie.type === "RestElement" || ie && (ie.type === "TSPropertySignature" || ie.type === "TSCallSignatureDeclaration" || ie.type === "TSMethodSignature" || ie.type === "TSConstructSignatureDeclaration") && D2(ie, _2.PrettierIgnore)), le;
            if (Y.length === 0) {
              if (!D2(C, _2.Dangling))
                return [L, Q, I(m2, v, o)];
              le = n([L, t2(m2, v), a2, Q, N(m2), I(m2, v, o)]);
            } else
              le = [R && g(C.properties) ? f3(M) : "", L, u3([v.bracketSpacing ? s5 : a2, ...Y]), i2(ee && (J !== "," || c(v)) ? J : ""), v.bracketSpacing ? s5 : a2, Q, N(m2), I(m2, v, o)];
            return m2.match((W) => W.type === "ObjectPattern" && !W.decorators, (W, K, de) => P(W) && (K === "params" || K === "parameters" || K === "this" || K === "rest") && de === 0) || m2.match($2, (W, K) => K === "typeAnnotation", (W, K) => K === "typeAnnotation", (W, K, de) => P(W) && (K === "params" || K === "parameters" || K === "this" || K === "rest") && de === 0) || !q2 && m2.match((W) => W.type === "ObjectPattern", (W) => W.type === "AssignmentExpression" || W.type === "VariableDeclarator") ? le : n(le, { shouldBreak: q2 });
          }
          r2.exports = { printObject: T2 };
        } }), md = te({ "src/language-js/print/flow.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Zt(), { printDanglingComments: s5 } = et(), { printString: a2, printNumber: n } = Ue(), { builders: { hardline: u3, softline: i2, group: l, indent: p5 } } = qe(), { getParentExportDeclaration: d, isFunctionNotation: y, isGetterOrSetter: g, rawText: c, shouldPrintComma: D2 } = Ke(), { locStart: E, locEnd: _2 } = ut(), { replaceTextEndOfLine: w } = Yt(), { printClass: F2 } = nr(), { printOpaqueType: S3, printTypeAlias: N, printIntersectionType: I, printUnionType: P, printFunctionType: $2, printTupleType: f3, printIndexedAccessType: T2 } = Or(), { printInterface: m2 } = bo(), { printTypeParameter: v, printTypeParameters: o } = jr(), { printExportDeclaration: h4, printExportAllDeclaration: C } = To(), { printArrayItems: x2 } = er(), { printObject: b } = uu(), { printPropertyKey: B } = rr(), { printOptionalToken: k, printTypeAnnotation: M, printRestSpread: R } = ct();
          function q2(L, Q, V) {
            let j = L.getValue(), Y = Q.semi ? ";" : "", ie = [];
            switch (j.type) {
              case "DeclareClass":
                return J(L, F2(L, Q, V));
              case "DeclareFunction":
                return J(L, ["function ", V("id"), j.predicate ? " " : "", V("predicate"), Y]);
              case "DeclareModule":
                return J(L, ["module ", V("id"), " ", V("body")]);
              case "DeclareModuleExports":
                return J(L, ["module.exports", ": ", V("typeAnnotation"), Y]);
              case "DeclareVariable":
                return J(L, ["var ", V("id"), Y]);
              case "DeclareOpaqueType":
                return J(L, S3(L, Q, V));
              case "DeclareInterface":
                return J(L, m2(L, Q, V));
              case "DeclareTypeAlias":
                return J(L, N(L, Q, V));
              case "DeclareExportDeclaration":
                return J(L, h4(L, Q, V));
              case "DeclareExportAllDeclaration":
                return J(L, C(L, Q, V));
              case "OpaqueType":
                return S3(L, Q, V);
              case "TypeAlias":
                return N(L, Q, V);
              case "IntersectionTypeAnnotation":
                return I(L, Q, V);
              case "UnionTypeAnnotation":
                return P(L, Q, V);
              case "FunctionTypeAnnotation":
                return $2(L, Q, V);
              case "TupleTypeAnnotation":
                return f3(L, Q, V);
              case "GenericTypeAnnotation":
                return [V("id"), o(L, Q, V, "typeParameters")];
              case "IndexedAccessType":
              case "OptionalIndexedAccessType":
                return T2(L, Q, V);
              case "TypeAnnotation":
                return V("typeAnnotation");
              case "TypeParameter":
                return v(L, Q, V);
              case "TypeofTypeAnnotation":
                return ["typeof ", V("argument")];
              case "ExistsTypeAnnotation":
                return "*";
              case "EmptyTypeAnnotation":
                return "empty";
              case "MixedTypeAnnotation":
                return "mixed";
              case "ArrayTypeAnnotation":
                return [V("elementType"), "[]"];
              case "BooleanLiteralTypeAnnotation":
                return String(j.value);
              case "EnumDeclaration":
                return ["enum ", V("id"), " ", V("body")];
              case "EnumBooleanBody":
              case "EnumNumberBody":
              case "EnumStringBody":
              case "EnumSymbolBody": {
                if (j.type === "EnumSymbolBody" || j.explicitType) {
                  let ee = null;
                  switch (j.type) {
                    case "EnumBooleanBody":
                      ee = "boolean";
                      break;
                    case "EnumNumberBody":
                      ee = "number";
                      break;
                    case "EnumStringBody":
                      ee = "string";
                      break;
                    case "EnumSymbolBody":
                      ee = "symbol";
                      break;
                  }
                  ie.push("of ", ee, " ");
                }
                if (j.members.length === 0 && !j.hasUnknownMembers)
                  ie.push(l(["{", s5(L, Q), i2, "}"]));
                else {
                  let ee = j.members.length > 0 ? [u3, x2(L, Q, "members", V), j.hasUnknownMembers || D2(Q) ? "," : ""] : [];
                  ie.push(l(["{", p5([...ee, ...j.hasUnknownMembers ? [u3, "..."] : []]), s5(L, Q, true), u3, "}"]));
                }
                return ie;
              }
              case "EnumBooleanMember":
              case "EnumNumberMember":
              case "EnumStringMember":
                return [V("id"), " = ", typeof j.init == "object" ? V("init") : String(j.init)];
              case "EnumDefaultedMember":
                return V("id");
              case "FunctionTypeParam": {
                let ee = j.name ? V("name") : L.getParentNode().this === j ? "this" : "";
                return [ee, k(L), ee ? ": " : "", V("typeAnnotation")];
              }
              case "InterfaceDeclaration":
              case "InterfaceTypeAnnotation":
                return m2(L, Q, V);
              case "ClassImplements":
              case "InterfaceExtends":
                return [V("id"), V("typeParameters")];
              case "NullableTypeAnnotation":
                return ["?", V("typeAnnotation")];
              case "Variance": {
                let { kind: ee } = j;
                return t2.ok(ee === "plus" || ee === "minus"), ee === "plus" ? "+" : "-";
              }
              case "ObjectTypeCallProperty":
                return j.static && ie.push("static "), ie.push(V("value")), ie;
              case "ObjectTypeIndexer":
                return [j.static ? "static " : "", j.variance ? V("variance") : "", "[", V("id"), j.id ? ": " : "", V("key"), "]: ", V("value")];
              case "ObjectTypeProperty": {
                let ee = "";
                return j.proto ? ee = "proto " : j.static && (ee = "static "), [ee, g(j) ? j.kind + " " : "", j.variance ? V("variance") : "", B(L, Q, V), k(L), y(j) ? "" : ": ", V("value")];
              }
              case "ObjectTypeAnnotation":
                return b(L, Q, V);
              case "ObjectTypeInternalSlot":
                return [j.static ? "static " : "", "[[", V("id"), "]]", k(L), j.method ? "" : ": ", V("value")];
              case "ObjectTypeSpreadProperty":
                return R(L, Q, V);
              case "QualifiedTypeofIdentifier":
              case "QualifiedTypeIdentifier":
                return [V("qualification"), ".", V("id")];
              case "StringLiteralTypeAnnotation":
                return w(a2(c(j), Q));
              case "NumberLiteralTypeAnnotation":
                t2.strictEqual(typeof j.value, "number");
              case "BigIntLiteralTypeAnnotation":
                return j.extra ? n(j.extra.raw) : n(j.raw);
              case "TypeCastExpression":
                return ["(", V("expression"), M(L, Q, V), ")"];
              case "TypeParameterDeclaration":
              case "TypeParameterInstantiation": {
                let ee = o(L, Q, V, "params");
                if (Q.parser === "flow") {
                  let le = E(j), W = _2(j), K = Q.originalText.lastIndexOf("/*", le), de = Q.originalText.indexOf("*/", W);
                  if (K !== -1 && de !== -1) {
                    let ue = Q.originalText.slice(K + 2, de).trim();
                    if (ue.startsWith("::") && !ue.includes("/*") && !ue.includes("*/"))
                      return ["/*:: ", ee, " */"];
                  }
                }
                return ee;
              }
              case "InferredPredicate":
                return "%checks";
              case "DeclaredPredicate":
                return ["%checks(", V("value"), ")"];
              case "AnyTypeAnnotation":
                return "any";
              case "BooleanTypeAnnotation":
                return "boolean";
              case "BigIntTypeAnnotation":
                return "bigint";
              case "NullLiteralTypeAnnotation":
                return "null";
              case "NumberTypeAnnotation":
                return "number";
              case "SymbolTypeAnnotation":
                return "symbol";
              case "StringTypeAnnotation":
                return "string";
              case "VoidTypeAnnotation":
                return "void";
              case "ThisTypeAnnotation":
                return "this";
              case "Node":
              case "Printable":
              case "SourceLocation":
              case "Position":
              case "Statement":
              case "Function":
              case "Pattern":
              case "Expression":
              case "Declaration":
              case "Specifier":
              case "NamedSpecifier":
              case "Comment":
              case "MemberTypeAnnotation":
              case "Type":
                throw new Error("unprintable type: " + JSON.stringify(j.type));
            }
          }
          function J(L, Q) {
            let V = d(L);
            return V ? (t2.strictEqual(V.type, "DeclareExportDeclaration"), Q) : ["declare ", Q];
          }
          r2.exports = { printFlow: q2 };
        } }), dd3 = te({ "src/language-js/utils/is-ts-keyword-type.js"(e2, r2) {
          "use strict";
          ne();
          function t2(s5) {
            let { type: a2 } = s5;
            return a2.startsWith("TS") && a2.endsWith("Keyword");
          }
          r2.exports = t2;
        } }), Bo = te({ "src/language-js/print/ternary.js"(e2, r2) {
          "use strict";
          ne();
          var { hasNewlineInRange: t2 } = Ue(), { isJsxNode: s5, getComments: a2, isCallExpression: n, isMemberExpression: u3, isTSTypeExpression: i2 } = Ke(), { locStart: l, locEnd: p5 } = ut(), d = Ot(), { builders: { line: y, softline: g, group: c, indent: D2, align: E, ifBreak: _2, dedent: w, breakParent: F2 } } = qe();
          function S3(f3) {
            let T2 = [f3];
            for (let m2 = 0; m2 < T2.length; m2++) {
              let v = T2[m2];
              for (let o of ["test", "consequent", "alternate"]) {
                let h4 = v[o];
                if (s5(h4))
                  return true;
                h4.type === "ConditionalExpression" && T2.push(h4);
              }
            }
            return false;
          }
          function N(f3, T2, m2) {
            let v = f3.getValue(), o = v.type === "ConditionalExpression", h4 = o ? "alternate" : "falseType", C = f3.getParentNode(), x2 = o ? m2("test") : [m2("checkType"), " ", "extends", " ", m2("extendsType")];
            return C.type === v.type && C[h4] === v ? E(2, x2) : x2;
          }
          var I = /* @__PURE__ */ new Map([["AssignmentExpression", "right"], ["VariableDeclarator", "init"], ["ReturnStatement", "argument"], ["ThrowStatement", "argument"], ["UnaryExpression", "argument"], ["YieldExpression", "argument"]]);
          function P(f3) {
            let T2 = f3.getValue();
            if (T2.type !== "ConditionalExpression")
              return false;
            let m2, v = T2;
            for (let o = 0; !m2; o++) {
              let h4 = f3.getParentNode(o);
              if (n(h4) && h4.callee === v || u3(h4) && h4.object === v || h4.type === "TSNonNullExpression" && h4.expression === v) {
                v = h4;
                continue;
              }
              h4.type === "NewExpression" && h4.callee === v || i2(h4) && h4.expression === v ? (m2 = f3.getParentNode(o + 1), v = h4) : m2 = h4;
            }
            return v === T2 ? false : m2[I.get(m2.type)] === v;
          }
          function $2(f3, T2, m2) {
            let v = f3.getValue(), o = v.type === "ConditionalExpression", h4 = o ? "consequent" : "trueType", C = o ? "alternate" : "falseType", x2 = o ? ["test"] : ["checkType", "extendsType"], b = v[h4], B = v[C], k = [], M = false, R = f3.getParentNode(), q2 = R.type === v.type && x2.some((ue) => R[ue] === v), J = R.type === v.type && !q2, L, Q, V = 0;
            do
              Q = L || v, L = f3.getParentNode(V), V++;
            while (L && L.type === v.type && x2.every((ue) => L[ue] !== Q));
            let j = L || R, Y = Q;
            if (o && (s5(v[x2[0]]) || s5(b) || s5(B) || S3(Y))) {
              M = true, J = true;
              let ue = (z2) => [_2("("), D2([g, z2]), g, _2(")")], Fe = (z2) => z2.type === "NullLiteral" || z2.type === "Literal" && z2.value === null || z2.type === "Identifier" && z2.name === "undefined";
              k.push(" ? ", Fe(b) ? m2(h4) : ue(m2(h4)), " : ", B.type === v.type || Fe(B) ? m2(C) : ue(m2(C)));
            } else {
              let ue = [y, "? ", b.type === v.type ? _2("", "(") : "", E(2, m2(h4)), b.type === v.type ? _2("", ")") : "", y, ": ", B.type === v.type ? m2(C) : E(2, m2(C))];
              k.push(R.type !== v.type || R[C] === v || q2 ? ue : T2.useTabs ? w(D2(ue)) : E(Math.max(0, T2.tabWidth - 2), ue));
            }
            let ee = [...x2.map((ue) => a2(v[ue])), a2(b), a2(B)].flat().some((ue) => d(ue) && t2(T2.originalText, l(ue), p5(ue))), le = (ue) => R === j ? c(ue, { shouldBreak: ee }) : ee ? [ue, F2] : ue, W = !M && (u3(R) || R.type === "NGPipeExpression" && R.left === v) && !R.computed, K = P(f3), de = le([N(f3, T2, m2), J ? k : D2(k), o && W && !K ? g : ""]);
            return q2 || K ? c([D2([g, de]), g]) : de;
          }
          r2.exports = { printTernary: $2 };
        } }), No = te({ "src/language-js/print/statement.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { hardline: t2 } } = qe(), s5 = qt(), { getLeftSidePathName: a2, hasNakedLeftSide: n, isJsxNode: u3, isTheOnlyJsxElementInMarkdown: i2, hasComment: l, CommentCheckFlags: p5, isNextLineEmpty: d } = Ke(), { shouldPrintParamsWithoutParens: y } = qr();
          function g(N, I, P, $2) {
            let f3 = N.getValue(), T2 = [], m2 = f3.type === "ClassBody", v = c(f3[$2]);
            return N.each((o, h4, C) => {
              let x2 = o.getValue();
              if (x2.type === "EmptyStatement")
                return;
              let b = P();
              !I.semi && !m2 && !i2(I, o) && D2(o, I) ? l(x2, p5.Leading) ? T2.push(P([], { needsSemi: true })) : T2.push(";", b) : T2.push(b), !I.semi && m2 && F2(x2) && S3(x2, C[h4 + 1]) && T2.push(";"), x2 !== v && (T2.push(t2), d(x2, I) && T2.push(t2));
            }, $2), T2;
          }
          function c(N) {
            for (let I = N.length - 1; I >= 0; I--) {
              let P = N[I];
              if (P.type !== "EmptyStatement")
                return P;
            }
          }
          function D2(N, I) {
            return N.getNode().type !== "ExpressionStatement" ? false : N.call(($2) => E($2, I), "expression");
          }
          function E(N, I) {
            let P = N.getValue();
            switch (P.type) {
              case "ParenthesizedExpression":
              case "TypeCastExpression":
              case "ArrayExpression":
              case "ArrayPattern":
              case "TemplateLiteral":
              case "TemplateElement":
              case "RegExpLiteral":
                return true;
              case "ArrowFunctionExpression": {
                if (!y(N, I))
                  return true;
                break;
              }
              case "UnaryExpression": {
                let { prefix: $2, operator: f3 } = P;
                if ($2 && (f3 === "+" || f3 === "-"))
                  return true;
                break;
              }
              case "BindExpression": {
                if (!P.object)
                  return true;
                break;
              }
              case "Literal": {
                if (P.regex)
                  return true;
                break;
              }
              default:
                if (u3(P))
                  return true;
            }
            return s5(N, I) ? true : n(P) ? N.call(($2) => E($2, I), ...a2(N, P)) : false;
          }
          function _2(N, I, P) {
            return g(N, I, P, "body");
          }
          function w(N, I, P) {
            return g(N, I, P, "consequent");
          }
          var F2 = (N) => {
            let { type: I } = N;
            return I === "ClassProperty" || I === "PropertyDefinition" || I === "ClassPrivateProperty" || I === "ClassAccessorProperty" || I === "AccessorProperty" || I === "TSAbstractPropertyDefinition" || I === "TSAbstractAccessorProperty";
          };
          function S3(N, I) {
            let { type: P, name: $2 } = N.key;
            if (!N.computed && P === "Identifier" && ($2 === "static" || $2 === "get" || $2 === "set" || $2 === "accessor") && !N.value && !N.typeAnnotation)
              return true;
            if (!I || I.static || I.accessibility)
              return false;
            if (!I.computed) {
              let f3 = I.key && I.key.name;
              if (f3 === "in" || f3 === "instanceof")
                return true;
            }
            if (F2(I) && I.variance && !I.static && !I.declare)
              return true;
            switch (I.type) {
              case "ClassProperty":
              case "PropertyDefinition":
              case "TSAbstractPropertyDefinition":
                return I.computed;
              case "MethodDefinition":
              case "TSAbstractMethodDefinition":
              case "ClassMethod":
              case "ClassPrivateMethod": {
                if ((I.value ? I.value.async : I.async) || I.kind === "get" || I.kind === "set")
                  return false;
                let T2 = I.value ? I.value.generator : I.generator;
                return !!(I.computed || T2);
              }
              case "TSIndexSignature":
                return true;
            }
            return false;
          }
          r2.exports = { printBody: _2, printSwitchCaseConsequent: w };
        } }), wo = te({ "src/language-js/print/block.js"(e2, r2) {
          "use strict";
          ne();
          var { printDanglingComments: t2 } = et(), { isNonEmptyArray: s5 } = Ue(), { builders: { hardline: a2, indent: n } } = qe(), { hasComment: u3, CommentCheckFlags: i2, isNextLineEmpty: l } = Ke(), { printHardlineAfterHeritage: p5 } = nr(), { printBody: d } = No();
          function y(c, D2, E) {
            let _2 = c.getValue(), w = [];
            if (_2.type === "StaticBlock" && w.push("static "), _2.type === "ClassBody" && s5(_2.body)) {
              let S3 = c.getParentNode();
              w.push(p5(S3));
            }
            w.push("{");
            let F2 = g(c, D2, E);
            if (F2)
              w.push(n([a2, F2]), a2);
            else {
              let S3 = c.getParentNode(), N = c.getParentNode(1);
              S3.type === "ArrowFunctionExpression" || S3.type === "FunctionExpression" || S3.type === "FunctionDeclaration" || S3.type === "ObjectMethod" || S3.type === "ClassMethod" || S3.type === "ClassPrivateMethod" || S3.type === "ForStatement" || S3.type === "WhileStatement" || S3.type === "DoWhileStatement" || S3.type === "DoExpression" || S3.type === "CatchClause" && !N.finalizer || S3.type === "TSModuleDeclaration" || S3.type === "TSDeclareFunction" || _2.type === "StaticBlock" || _2.type === "ClassBody" || w.push(a2);
            }
            return w.push("}"), w;
          }
          function g(c, D2, E) {
            let _2 = c.getValue(), w = s5(_2.directives), F2 = _2.body.some((I) => I.type !== "EmptyStatement"), S3 = u3(_2, i2.Dangling);
            if (!w && !F2 && !S3)
              return "";
            let N = [];
            if (w && c.each((I, P, $2) => {
              N.push(E()), (P < $2.length - 1 || F2 || S3) && (N.push(a2), l(I.getValue(), D2) && N.push(a2));
            }, "directives"), F2 && N.push(d(c, D2, E)), S3 && N.push(t2(c, D2, true)), _2.type === "Program") {
              let I = c.getParentNode();
              (!I || I.type !== "ModuleExpression") && N.push(a2);
            }
            return N;
          }
          r2.exports = { printBlock: y, printBlockBody: g };
        } }), gd = te({ "src/language-js/print/typescript.js"(e2, r2) {
          "use strict";
          ne();
          var { printDanglingComments: t2 } = et(), { hasNewlineInRange: s5 } = Ue(), { builders: { join: a2, line: n, hardline: u3, softline: i2, group: l, indent: p5, conditionalGroup: d, ifBreak: y } } = qe(), { isStringLiteral: g, getTypeScriptMappedTypeModifier: c, shouldPrintComma: D2, isCallExpression: E, isMemberExpression: _2 } = Ke(), w = dd3(), { locStart: F2, locEnd: S3 } = ut(), { printOptionalToken: N, printTypeScriptModifiers: I } = ct(), { printTernary: P } = Bo(), { printFunctionParameters: $2, shouldGroupFunctionParameters: f3 } = Lr(), { printTemplateLiteral: T2 } = jt(), { printArrayItems: m2 } = er(), { printObject: v } = uu(), { printClassProperty: o, printClassMethod: h4 } = nr(), { printTypeParameter: C, printTypeParameters: x2 } = jr(), { printPropertyKey: b } = rr(), { printFunction: B, printMethodInternal: k } = qr(), { printInterface: M } = bo(), { printBlock: R } = wo(), { printTypeAlias: q2, printIntersectionType: J, printUnionType: L, printFunctionType: Q, printTupleType: V, printIndexedAccessType: j, printJSDocType: Y } = Or();
          function ie(ee, le, W) {
            let K = ee.getValue();
            if (!K.type.startsWith("TS"))
              return;
            if (w(K))
              return K.type.slice(2, -7).toLowerCase();
            let de = le.semi ? ";" : "", ue = [];
            switch (K.type) {
              case "TSThisType":
                return "this";
              case "TSTypeAssertion": {
                let Fe = !(K.expression.type === "ArrayExpression" || K.expression.type === "ObjectExpression"), z2 = l(["<", p5([i2, W("typeAnnotation")]), i2, ">"]), U = [y("("), p5([i2, W("expression")]), i2, y(")")];
                return Fe ? d([[z2, W("expression")], [z2, l(U, { shouldBreak: true })], [z2, W("expression")]]) : l([z2, W("expression")]);
              }
              case "TSDeclareFunction":
                return B(ee, W, le);
              case "TSExportAssignment":
                return ["export = ", W("expression"), de];
              case "TSModuleBlock":
                return R(ee, le, W);
              case "TSInterfaceBody":
              case "TSTypeLiteral":
                return v(ee, le, W);
              case "TSTypeAliasDeclaration":
                return q2(ee, le, W);
              case "TSQualifiedName":
                return a2(".", [W("left"), W("right")]);
              case "TSAbstractMethodDefinition":
              case "TSDeclareMethod":
                return h4(ee, le, W);
              case "TSAbstractAccessorProperty":
              case "TSAbstractPropertyDefinition":
                return o(ee, le, W);
              case "TSInterfaceHeritage":
              case "TSExpressionWithTypeArguments":
                return ue.push(W("expression")), K.typeParameters && ue.push(W("typeParameters")), ue;
              case "TSTemplateLiteralType":
                return T2(ee, W, le);
              case "TSNamedTupleMember":
                return [W("label"), K.optional ? "?" : "", ": ", W("elementType")];
              case "TSRestType":
                return ["...", W("typeAnnotation")];
              case "TSOptionalType":
                return [W("typeAnnotation"), "?"];
              case "TSInterfaceDeclaration":
                return M(ee, le, W);
              case "TSClassImplements":
                return [W("expression"), W("typeParameters")];
              case "TSTypeParameterDeclaration":
              case "TSTypeParameterInstantiation":
                return x2(ee, le, W, "params");
              case "TSTypeParameter":
                return C(ee, le, W);
              case "TSSatisfiesExpression":
              case "TSAsExpression": {
                let Fe = K.type === "TSAsExpression" ? "as" : "satisfies";
                ue.push(W("expression"), ` ${Fe} `, W("typeAnnotation"));
                let z2 = ee.getParentNode();
                return E(z2) && z2.callee === K || _2(z2) && z2.object === K ? l([p5([i2, ...ue]), i2]) : ue;
              }
              case "TSArrayType":
                return [W("elementType"), "[]"];
              case "TSPropertySignature":
                return K.readonly && ue.push("readonly "), ue.push(b(ee, le, W), N(ee)), K.typeAnnotation && ue.push(": ", W("typeAnnotation")), K.initializer && ue.push(" = ", W("initializer")), ue;
              case "TSParameterProperty":
                return K.accessibility && ue.push(K.accessibility + " "), K.export && ue.push("export "), K.static && ue.push("static "), K.override && ue.push("override "), K.readonly && ue.push("readonly "), ue.push(W("parameter")), ue;
              case "TSTypeQuery":
                return ["typeof ", W("exprName"), W("typeParameters")];
              case "TSIndexSignature": {
                let Fe = ee.getParentNode(), z2 = K.parameters.length > 1 ? y(D2(le) ? "," : "") : "", U = l([p5([i2, a2([", ", i2], ee.map(W, "parameters"))]), z2, i2]);
                return [K.export ? "export " : "", K.accessibility ? [K.accessibility, " "] : "", K.static ? "static " : "", K.readonly ? "readonly " : "", K.declare ? "declare " : "", "[", K.parameters ? U : "", K.typeAnnotation ? "]: " : "]", K.typeAnnotation ? W("typeAnnotation") : "", Fe.type === "ClassBody" ? de : ""];
              }
              case "TSTypePredicate":
                return [K.asserts ? "asserts " : "", W("parameterName"), K.typeAnnotation ? [" is ", W("typeAnnotation")] : ""];
              case "TSNonNullExpression":
                return [W("expression"), "!"];
              case "TSImportType":
                return [K.isTypeOf ? "typeof " : "", "import(", W(K.parameter ? "parameter" : "argument"), ")", K.qualifier ? [".", W("qualifier")] : "", x2(ee, le, W, "typeParameters")];
              case "TSLiteralType":
                return W("literal");
              case "TSIndexedAccessType":
                return j(ee, le, W);
              case "TSConstructSignatureDeclaration":
              case "TSCallSignatureDeclaration":
              case "TSConstructorType": {
                if (K.type === "TSConstructorType" && K.abstract && ue.push("abstract "), K.type !== "TSCallSignatureDeclaration" && ue.push("new "), ue.push(l($2(ee, W, le, false, true))), K.returnType || K.typeAnnotation) {
                  let Fe = K.type === "TSConstructorType";
                  ue.push(Fe ? " => " : ": ", W("returnType"), W("typeAnnotation"));
                }
                return ue;
              }
              case "TSTypeOperator":
                return [K.operator, " ", W("typeAnnotation")];
              case "TSMappedType": {
                let Fe = s5(le.originalText, F2(K), S3(K));
                return l(["{", p5([le.bracketSpacing ? n : i2, K.readonly ? [c(K.readonly, "readonly"), " "] : "", I(ee, le, W), W("typeParameter"), K.optional ? c(K.optional, "?") : "", K.typeAnnotation ? ": " : "", W("typeAnnotation"), y(de)]), t2(ee, le, true), le.bracketSpacing ? n : i2, "}"], { shouldBreak: Fe });
              }
              case "TSMethodSignature": {
                let Fe = K.kind && K.kind !== "method" ? `${K.kind} ` : "";
                ue.push(K.accessibility ? [K.accessibility, " "] : "", Fe, K.export ? "export " : "", K.static ? "static " : "", K.readonly ? "readonly " : "", K.abstract ? "abstract " : "", K.declare ? "declare " : "", K.computed ? "[" : "", W("key"), K.computed ? "]" : "", N(ee));
                let z2 = $2(ee, W, le, false, true), U = K.returnType ? "returnType" : "typeAnnotation", Z2 = K[U], se = Z2 ? W(U) : "", De = f3(K, se);
                return ue.push(De ? l(z2) : z2), Z2 && ue.push(": ", l(se)), l(ue);
              }
              case "TSNamespaceExportDeclaration":
                return ue.push("export as namespace ", W("id")), le.semi && ue.push(";"), l(ue);
              case "TSEnumDeclaration":
                return K.declare && ue.push("declare "), K.modifiers && ue.push(I(ee, le, W)), K.const && ue.push("const "), ue.push("enum ", W("id"), " "), K.members.length === 0 ? ue.push(l(["{", t2(ee, le), i2, "}"])) : ue.push(l(["{", p5([u3, m2(ee, le, "members", W), D2(le, "es5") ? "," : ""]), t2(ee, le, true), u3, "}"])), ue;
              case "TSEnumMember":
                return K.computed ? ue.push("[", W("id"), "]") : ue.push(W("id")), K.initializer && ue.push(" = ", W("initializer")), ue;
              case "TSImportEqualsDeclaration":
                return K.isExport && ue.push("export "), ue.push("import "), K.importKind && K.importKind !== "value" && ue.push(K.importKind, " "), ue.push(W("id"), " = ", W("moduleReference")), le.semi && ue.push(";"), l(ue);
              case "TSExternalModuleReference":
                return ["require(", W("expression"), ")"];
              case "TSModuleDeclaration": {
                let Fe = ee.getParentNode(), z2 = g(K.id), U = Fe.type === "TSModuleDeclaration", Z2 = K.body && K.body.type === "TSModuleDeclaration";
                if (U)
                  ue.push(".");
                else {
                  K.declare && ue.push("declare "), ue.push(I(ee, le, W));
                  let se = le.originalText.slice(F2(K), F2(K.id));
                  K.id.type === "Identifier" && K.id.name === "global" && !/namespace|module/.test(se) || ue.push(z2 || /(?:^|\s)module(?:\s|$)/.test(se) ? "module " : "namespace ");
                }
                return ue.push(W("id")), Z2 ? ue.push(W("body")) : K.body ? ue.push(" ", l(W("body"))) : ue.push(de), ue;
              }
              case "TSConditionalType":
                return P(ee, le, W);
              case "TSInferType":
                return ["infer", " ", W("typeParameter")];
              case "TSIntersectionType":
                return J(ee, le, W);
              case "TSUnionType":
                return L(ee, le, W);
              case "TSFunctionType":
                return Q(ee, le, W);
              case "TSTupleType":
                return V(ee, le, W);
              case "TSTypeReference":
                return [W("typeName"), x2(ee, le, W, "typeParameters")];
              case "TSTypeAnnotation":
                return W("typeAnnotation");
              case "TSEmptyBodyFunctionExpression":
                return k(ee, le, W);
              case "TSJSDocAllType":
                return "*";
              case "TSJSDocUnknownType":
                return "?";
              case "TSJSDocNullableType":
                return Y(ee, W, "?");
              case "TSJSDocNonNullableType":
                return Y(ee, W, "!");
              case "TSInstantiationExpression":
                return [W("expression"), W("typeParameters")];
              default:
                throw new Error(`Unknown TypeScript node type: ${JSON.stringify(K.type)}.`);
            }
          }
          r2.exports = { printTypescript: ie };
        } }), yd = te({ "src/language-js/print/comment.js"(e2, r2) {
          "use strict";
          ne();
          var { hasNewline: t2 } = Ue(), { builders: { join: s5, hardline: a2 }, utils: { replaceTextEndOfLine: n } } = qe(), { isLineComment: u3 } = Ke(), { locStart: i2, locEnd: l } = ut(), p5 = Ot();
          function d(c, D2) {
            let E = c.getValue();
            if (u3(E))
              return D2.originalText.slice(i2(E), l(E)).trimEnd();
            if (p5(E)) {
              if (y(E)) {
                let F2 = g(E);
                return E.trailing && !t2(D2.originalText, i2(E), { backwards: true }) ? [a2, F2] : F2;
              }
              let _2 = l(E), w = D2.originalText.slice(_2 - 3, _2) === "*-/";
              return ["/*", n(E.value), w ? "*-/" : "*/"];
            }
            throw new Error("Not a comment: " + JSON.stringify(E));
          }
          function y(c) {
            let D2 = `*${c.value}*`.split(`
`);
            return D2.length > 1 && D2.every((E) => E.trim()[0] === "*");
          }
          function g(c) {
            let D2 = c.value.split(`
`);
            return ["/*", s5(a2, D2.map((E, _2) => _2 === 0 ? E.trimEnd() : " " + (_2 < D2.length - 1 ? E.trim() : E.trimStart()))), "*/"];
          }
          r2.exports = { printComment: d };
        } }), hd = te({ "src/language-js/print/literal.js"(e2, r2) {
          "use strict";
          ne();
          var { printString: t2, printNumber: s5 } = Ue(), { replaceTextEndOfLine: a2 } = Yt(), { printDirective: n } = ct();
          function u3(d, y) {
            let g = d.getNode();
            switch (g.type) {
              case "RegExpLiteral":
                return p5(g);
              case "BigIntLiteral":
                return l(g.bigint || g.extra.raw);
              case "NumericLiteral":
                return s5(g.extra.raw);
              case "StringLiteral":
                return a2(t2(g.extra.raw, y));
              case "NullLiteral":
                return "null";
              case "BooleanLiteral":
                return String(g.value);
              case "DecimalLiteral":
                return s5(g.value) + "m";
              case "Literal": {
                if (g.regex)
                  return p5(g.regex);
                if (g.bigint)
                  return l(g.raw);
                if (g.decimal)
                  return s5(g.decimal) + "m";
                let { value: c } = g;
                return typeof c == "number" ? s5(g.raw) : typeof c == "string" ? i2(d) ? n(g.raw, y) : a2(t2(g.raw, y)) : String(c);
              }
            }
          }
          function i2(d) {
            if (d.getName() !== "expression")
              return;
            let y = d.getParentNode();
            return y.type === "ExpressionStatement" && y.directive;
          }
          function l(d) {
            return d.toLowerCase();
          }
          function p5(d) {
            let { pattern: y, flags: g } = d;
            return g = [...g].sort().join(""), `/${y}/${g}`;
          }
          r2.exports = { printLiteral: u3 };
        } }), vd = te({ "src/language-js/printer-estree.js"(e2, r2) {
          "use strict";
          ne();
          var { printDanglingComments: t2 } = et(), { hasNewline: s5 } = Ue(), { builders: { join: a2, line: n, hardline: u3, softline: i2, group: l, indent: p5 }, utils: { replaceTextEndOfLine: d } } = qe(), y = td(), g = rd(), { insertPragma: c } = Co(), D2 = Eo(), E = qt(), _2 = Fo(), { hasFlowShorthandAnnotationComment: w, hasComment: F2, CommentCheckFlags: S3, isTheOnlyJsxElementInMarkdown: N, isLineComment: I, isNextLineEmpty: P, needsHardlineAfterDanglingComment: $2, hasIgnoreComment: f3, isCallExpression: T2, isMemberExpression: m2, markerForIfWithoutBlockAndSameLineComment: v } = Ke(), { locStart: o, locEnd: h4 } = ut(), C = Ot(), { printHtmlBinding: x2, isVueEventBindingExpression: b } = cd(), { printAngular: B } = pd(), { printJsx: k, hasJsxIgnoreComment: M } = fd(), { printFlow: R } = md(), { printTypescript: q2 } = gd(), { printOptionalToken: J, printBindExpressionCallee: L, printTypeAnnotation: Q, adjustClause: V, printRestSpread: j, printDefiniteToken: Y, printDirective: ie } = ct(), { printImportDeclaration: ee, printExportDeclaration: le, printExportAllDeclaration: W, printModuleSpecifier: K } = To(), { printTernary: de } = Bo(), { printTemplateLiteral: ue } = jt(), { printArray: Fe } = er(), { printObject: z2 } = uu(), { printClass: U, printClassMethod: Z2, printClassProperty: se } = nr(), { printProperty: De } = rr(), { printFunction: ge, printArrowFunction: he2, printMethod: we, printReturnStatement: ke, printThrowStatement: Re } = qr(), { printCallExpression: Ne } = xo(), { printVariableDeclarator: Pe, printAssignmentExpression: oe } = tr3(), { printBinaryishExpression: H } = ru(), { printSwitchCaseConsequent: ce } = No(), { printMemberExpression: X } = So(), { printBlock: pe, printBlockBody: Ae } = wo(), { printComment: Ce } = yd(), { printLiteral: fe } = hd(), { printDecorators: A2 } = nu();
          function G(Ee, Be, ve, ze) {
            let be = re(Ee, Be, ve, ze);
            if (!be)
              return "";
            let Ye = Ee.getValue(), { type: Se } = Ye;
            if (Se === "ClassMethod" || Se === "ClassPrivateMethod" || Se === "ClassProperty" || Se === "ClassAccessorProperty" || Se === "AccessorProperty" || Se === "TSAbstractAccessorProperty" || Se === "PropertyDefinition" || Se === "TSAbstractPropertyDefinition" || Se === "ClassPrivateProperty" || Se === "MethodDefinition" || Se === "TSAbstractMethodDefinition" || Se === "TSDeclareMethod")
              return be;
            let Ie = [be], Oe = A2(Ee, Be, ve), Je = Ye.type === "ClassExpression" && Oe;
            if (Oe && (Ie = [...Oe, be], !Je))
              return l(Ie);
            if (!E(Ee, Be))
              return ze && ze.needsSemi && Ie.unshift(";"), Ie.length === 1 && Ie[0] === be ? be : Ie;
            if (Je && (Ie = [p5([n, ...Ie])]), Ie.unshift("("), ze && ze.needsSemi && Ie.unshift(";"), w(Ye)) {
              let [je] = Ye.trailingComments;
              Ie.push(" /*", je.value.trimStart(), "*/"), je.printed = true;
            }
            return Je && Ie.push(n), Ie.push(")"), Ie;
          }
          function re(Ee, Be, ve, ze) {
            let be = Ee.getValue(), Ye = Be.semi ? ";" : "";
            if (!be)
              return "";
            if (typeof be == "string")
              return be;
            for (let Ie of [fe, x2, B, k, R, q2]) {
              let Oe = Ie(Ee, Be, ve);
              if (typeof Oe < "u")
                return Oe;
            }
            let Se = [];
            switch (be.type) {
              case "JsExpressionRoot":
                return ve("node");
              case "JsonRoot":
                return [ve("node"), u3];
              case "File":
                return be.program && be.program.interpreter && Se.push(ve(["program", "interpreter"])), Se.push(ve("program")), Se;
              case "Program":
                return Ae(Ee, Be, ve);
              case "EmptyStatement":
                return "";
              case "ExpressionStatement": {
                if (Be.parser === "__vue_event_binding" || Be.parser === "__vue_ts_event_binding") {
                  let Oe = Ee.getParentNode();
                  if (Oe.type === "Program" && Oe.body.length === 1 && Oe.body[0] === be)
                    return [ve("expression"), b(be.expression) ? ";" : ""];
                }
                let Ie = t2(Ee, Be, true, (Oe) => {
                  let { marker: Je } = Oe;
                  return Je === v;
                });
                return [ve("expression"), N(Be, Ee) ? "" : Ye, Ie ? [" ", Ie] : ""];
              }
              case "ParenthesizedExpression":
                return !F2(be.expression) && (be.expression.type === "ObjectExpression" || be.expression.type === "ArrayExpression") ? ["(", ve("expression"), ")"] : l(["(", p5([i2, ve("expression")]), i2, ")"]);
              case "AssignmentExpression":
                return oe(Ee, Be, ve);
              case "VariableDeclarator":
                return Pe(Ee, Be, ve);
              case "BinaryExpression":
              case "LogicalExpression":
                return H(Ee, Be, ve);
              case "AssignmentPattern":
                return [ve("left"), " = ", ve("right")];
              case "OptionalMemberExpression":
              case "MemberExpression":
                return X(Ee, Be, ve);
              case "MetaProperty":
                return [ve("meta"), ".", ve("property")];
              case "BindExpression":
                return be.object && Se.push(ve("object")), Se.push(l(p5([i2, L(Ee, Be, ve)]))), Se;
              case "Identifier":
                return [be.name, J(Ee), Y(Ee), Q(Ee, Be, ve)];
              case "V8IntrinsicIdentifier":
                return ["%", be.name];
              case "SpreadElement":
              case "SpreadElementPattern":
              case "SpreadProperty":
              case "SpreadPropertyPattern":
              case "RestElement":
                return j(Ee, Be, ve);
              case "FunctionDeclaration":
              case "FunctionExpression":
                return ge(Ee, ve, Be, ze);
              case "ArrowFunctionExpression":
                return he2(Ee, Be, ve, ze);
              case "YieldExpression":
                return Se.push("yield"), be.delegate && Se.push("*"), be.argument && Se.push(" ", ve("argument")), Se;
              case "AwaitExpression": {
                if (Se.push("await"), be.argument) {
                  Se.push(" ", ve("argument"));
                  let Ie = Ee.getParentNode();
                  if (T2(Ie) && Ie.callee === be || m2(Ie) && Ie.object === be) {
                    Se = [p5([i2, ...Se]), i2];
                    let Oe = Ee.findAncestor((Je) => Je.type === "AwaitExpression" || Je.type === "BlockStatement");
                    if (!Oe || Oe.type !== "AwaitExpression")
                      return l(Se);
                  }
                }
                return Se;
              }
              case "ExportDefaultDeclaration":
              case "ExportNamedDeclaration":
                return le(Ee, Be, ve);
              case "ExportAllDeclaration":
                return W(Ee, Be, ve);
              case "ImportDeclaration":
                return ee(Ee, Be, ve);
              case "ImportSpecifier":
              case "ExportSpecifier":
              case "ImportNamespaceSpecifier":
              case "ExportNamespaceSpecifier":
              case "ImportDefaultSpecifier":
              case "ExportDefaultSpecifier":
                return K(Ee, Be, ve);
              case "ImportAttribute":
                return [ve("key"), ": ", ve("value")];
              case "Import":
                return "import";
              case "BlockStatement":
              case "StaticBlock":
              case "ClassBody":
                return pe(Ee, Be, ve);
              case "ThrowStatement":
                return Re(Ee, Be, ve);
              case "ReturnStatement":
                return ke(Ee, Be, ve);
              case "NewExpression":
              case "ImportExpression":
              case "OptionalCallExpression":
              case "CallExpression":
                return Ne(Ee, Be, ve);
              case "ObjectExpression":
              case "ObjectPattern":
              case "RecordExpression":
                return z2(Ee, Be, ve);
              case "ObjectProperty":
              case "Property":
                return be.method || be.kind === "get" || be.kind === "set" ? we(Ee, Be, ve) : De(Ee, Be, ve);
              case "ObjectMethod":
                return we(Ee, Be, ve);
              case "Decorator":
                return ["@", ve("expression")];
              case "ArrayExpression":
              case "ArrayPattern":
              case "TupleExpression":
                return Fe(Ee, Be, ve);
              case "SequenceExpression": {
                let Ie = Ee.getParentNode(0);
                if (Ie.type === "ExpressionStatement" || Ie.type === "ForStatement") {
                  let Oe = [];
                  return Ee.each((Je, Te) => {
                    Te === 0 ? Oe.push(ve()) : Oe.push(",", p5([n, ve()]));
                  }, "expressions"), l(Oe);
                }
                return l(a2([",", n], Ee.map(ve, "expressions")));
              }
              case "ThisExpression":
                return "this";
              case "Super":
                return "super";
              case "Directive":
                return [ve("value"), Ye];
              case "DirectiveLiteral":
                return ie(be.extra.raw, Be);
              case "UnaryExpression":
                return Se.push(be.operator), /[a-z]$/.test(be.operator) && Se.push(" "), F2(be.argument) ? Se.push(l(["(", p5([i2, ve("argument")]), i2, ")"])) : Se.push(ve("argument")), Se;
              case "UpdateExpression":
                return Se.push(ve("argument"), be.operator), be.prefix && Se.reverse(), Se;
              case "ConditionalExpression":
                return de(Ee, Be, ve);
              case "VariableDeclaration": {
                let Ie = Ee.map(ve, "declarations"), Oe = Ee.getParentNode(), Je = Oe.type === "ForStatement" || Oe.type === "ForInStatement" || Oe.type === "ForOfStatement", Te = be.declarations.some((Me) => Me.init), je;
                return Ie.length === 1 && !F2(be.declarations[0]) ? je = Ie[0] : Ie.length > 0 && (je = p5(Ie[0])), Se = [be.declare ? "declare " : "", be.kind, je ? [" ", je] : "", p5(Ie.slice(1).map((Me) => [",", Te && !Je ? u3 : n, Me]))], Je && Oe.body !== be || Se.push(Ye), l(Se);
              }
              case "WithStatement":
                return l(["with (", ve("object"), ")", V(be.body, ve("body"))]);
              case "IfStatement": {
                let Ie = V(be.consequent, ve("consequent")), Oe = l(["if (", l([p5([i2, ve("test")]), i2]), ")", Ie]);
                if (Se.push(Oe), be.alternate) {
                  let Je = F2(be.consequent, S3.Trailing | S3.Line) || $2(be), Te = be.consequent.type === "BlockStatement" && !Je;
                  Se.push(Te ? " " : u3), F2(be, S3.Dangling) && Se.push(t2(Ee, Be, true), Je ? u3 : " "), Se.push("else", l(V(be.alternate, ve("alternate"), be.alternate.type === "IfStatement")));
                }
                return Se;
              }
              case "ForStatement": {
                let Ie = V(be.body, ve("body")), Oe = t2(Ee, Be, true), Je = Oe ? [Oe, i2] : "";
                return !be.init && !be.test && !be.update ? [Je, l(["for (;;)", Ie])] : [Je, l(["for (", l([p5([i2, ve("init"), ";", n, ve("test"), ";", n, ve("update")]), i2]), ")", Ie])];
              }
              case "WhileStatement":
                return l(["while (", l([p5([i2, ve("test")]), i2]), ")", V(be.body, ve("body"))]);
              case "ForInStatement":
                return l(["for (", ve("left"), " in ", ve("right"), ")", V(be.body, ve("body"))]);
              case "ForOfStatement":
                return l(["for", be.await ? " await" : "", " (", ve("left"), " of ", ve("right"), ")", V(be.body, ve("body"))]);
              case "DoWhileStatement": {
                let Ie = V(be.body, ve("body"));
                return Se = [l(["do", Ie])], be.body.type === "BlockStatement" ? Se.push(" ") : Se.push(u3), Se.push("while (", l([p5([i2, ve("test")]), i2]), ")", Ye), Se;
              }
              case "DoExpression":
                return [be.async ? "async " : "", "do ", ve("body")];
              case "BreakStatement":
                return Se.push("break"), be.label && Se.push(" ", ve("label")), Se.push(Ye), Se;
              case "ContinueStatement":
                return Se.push("continue"), be.label && Se.push(" ", ve("label")), Se.push(Ye), Se;
              case "LabeledStatement":
                return be.body.type === "EmptyStatement" ? [ve("label"), ":;"] : [ve("label"), ": ", ve("body")];
              case "TryStatement":
                return ["try ", ve("block"), be.handler ? [" ", ve("handler")] : "", be.finalizer ? [" finally ", ve("finalizer")] : ""];
              case "CatchClause":
                if (be.param) {
                  let Ie = F2(be.param, (Je) => !C(Je) || Je.leading && s5(Be.originalText, h4(Je)) || Je.trailing && s5(Be.originalText, o(Je), { backwards: true })), Oe = ve("param");
                  return ["catch ", Ie ? ["(", p5([i2, Oe]), i2, ") "] : ["(", Oe, ") "], ve("body")];
                }
                return ["catch ", ve("body")];
              case "SwitchStatement":
                return [l(["switch (", p5([i2, ve("discriminant")]), i2, ")"]), " {", be.cases.length > 0 ? p5([u3, a2(u3, Ee.map((Ie, Oe, Je) => {
                  let Te = Ie.getValue();
                  return [ve(), Oe !== Je.length - 1 && P(Te, Be) ? u3 : ""];
                }, "cases"))]) : "", u3, "}"];
              case "SwitchCase": {
                be.test ? Se.push("case ", ve("test"), ":") : Se.push("default:"), F2(be, S3.Dangling) && Se.push(" ", t2(Ee, Be, true));
                let Ie = be.consequent.filter((Oe) => Oe.type !== "EmptyStatement");
                if (Ie.length > 0) {
                  let Oe = ce(Ee, Be, ve);
                  Se.push(Ie.length === 1 && Ie[0].type === "BlockStatement" ? [" ", Oe] : p5([u3, Oe]));
                }
                return Se;
              }
              case "DebuggerStatement":
                return ["debugger", Ye];
              case "ClassDeclaration":
              case "ClassExpression":
                return U(Ee, Be, ve);
              case "ClassMethod":
              case "ClassPrivateMethod":
              case "MethodDefinition":
                return Z2(Ee, Be, ve);
              case "ClassProperty":
              case "PropertyDefinition":
              case "ClassPrivateProperty":
              case "ClassAccessorProperty":
              case "AccessorProperty":
                return se(Ee, Be, ve);
              case "TemplateElement":
                return d(be.value.raw);
              case "TemplateLiteral":
                return ue(Ee, ve, Be);
              case "TaggedTemplateExpression":
                return [ve("tag"), ve("typeParameters"), ve("quasi")];
              case "PrivateIdentifier":
                return ["#", ve("name")];
              case "PrivateName":
                return ["#", ve("id")];
              case "InterpreterDirective":
                return Se.push("#!", be.value, u3), P(be, Be) && Se.push(u3), Se;
              case "TopicReference":
                return "%";
              case "ArgumentPlaceholder":
                return "?";
              case "ModuleExpression": {
                Se.push("module {");
                let Ie = ve("body");
                return Ie && Se.push(p5([u3, Ie]), u3), Se.push("}"), Se;
              }
              default:
                throw new Error("unknown type: " + JSON.stringify(be.type));
            }
          }
          function ye(Ee) {
            return Ee.type && !C(Ee) && !I(Ee) && Ee.type !== "EmptyStatement" && Ee.type !== "TemplateElement" && Ee.type !== "Import" && Ee.type !== "TSEmptyBodyFunctionExpression";
          }
          r2.exports = { preprocess: _2, print: G, embed: y, insertPragma: c, massageAstNode: g, hasPrettierIgnore(Ee) {
            return f3(Ee) || M(Ee);
          }, willPrintOwnComments: D2.willPrintOwnComments, canAttachComment: ye, printComment: Ce, isBlockComment: C, handleComments: { avoidAstMutation: true, ownLine: D2.handleOwnLineComment, endOfLine: D2.handleEndOfLineComment, remaining: D2.handleRemainingComment }, getCommentChildNodes: D2.getCommentChildNodes };
        } }), Cd = te({ "src/language-js/printer-estree-json.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { hardline: t2, indent: s5, join: a2 } } = qe(), n = Fo();
          function u3(d, y, g) {
            let c = d.getValue();
            switch (c.type) {
              case "JsonRoot":
                return [g("node"), t2];
              case "ArrayExpression": {
                if (c.elements.length === 0)
                  return "[]";
                let D2 = d.map(() => d.getValue() === null ? "null" : g(), "elements");
                return ["[", s5([t2, a2([",", t2], D2)]), t2, "]"];
              }
              case "ObjectExpression":
                return c.properties.length === 0 ? "{}" : ["{", s5([t2, a2([",", t2], d.map(g, "properties"))]), t2, "}"];
              case "ObjectProperty":
                return [g("key"), ": ", g("value")];
              case "UnaryExpression":
                return [c.operator === "+" ? "" : c.operator, g("argument")];
              case "NullLiteral":
                return "null";
              case "BooleanLiteral":
                return c.value ? "true" : "false";
              case "StringLiteral":
                return JSON.stringify(c.value);
              case "NumericLiteral":
                return i2(d) ? JSON.stringify(String(c.value)) : JSON.stringify(c.value);
              case "Identifier":
                return i2(d) ? JSON.stringify(c.name) : c.name;
              case "TemplateLiteral":
                return g(["quasis", 0]);
              case "TemplateElement":
                return JSON.stringify(c.value.cooked);
              default:
                throw new Error("unknown type: " + JSON.stringify(c.type));
            }
          }
          function i2(d) {
            return d.getName() === "key" && d.getParentNode().type === "ObjectProperty";
          }
          var l = /* @__PURE__ */ new Set(["start", "end", "extra", "loc", "comments", "leadingComments", "trailingComments", "innerComments", "errors", "range", "tokens"]);
          function p5(d, y) {
            let { type: g } = d;
            if (g === "ObjectProperty") {
              let { key: c } = d;
              c.type === "Identifier" ? y.key = { type: "StringLiteral", value: c.name } : c.type === "NumericLiteral" && (y.key = { type: "StringLiteral", value: String(c.value) });
              return;
            }
            if (g === "UnaryExpression" && d.operator === "+")
              return y.argument;
            if (g === "ArrayExpression") {
              for (let [c, D2] of d.elements.entries())
                D2 === null && y.elements.splice(c, 0, { type: "NullLiteral" });
              return;
            }
            if (g === "TemplateLiteral")
              return { type: "StringLiteral", value: d.quasis[0].value.cooked };
          }
          p5.ignoredProperties = l, r2.exports = { preprocess: n, print: u3, massageAstNode: p5 };
        } }), Mt = te({ "src/common/common-options.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = "Common";
          r2.exports = { bracketSpacing: { since: "0.0.0", category: t2, type: "boolean", default: true, description: "Print spaces between brackets.", oppositeDescription: "Do not print spaces between brackets." }, singleQuote: { since: "0.0.0", category: t2, type: "boolean", default: false, description: "Use single quotes instead of double quotes." }, proseWrap: { since: "1.8.2", category: t2, type: "choice", default: [{ since: "1.8.2", value: true }, { since: "1.9.0", value: "preserve" }], description: "How to wrap prose.", choices: [{ since: "1.9.0", value: "always", description: "Wrap prose if it exceeds the print width." }, { since: "1.9.0", value: "never", description: "Do not wrap prose." }, { since: "1.9.0", value: "preserve", description: "Wrap prose as-is." }] }, bracketSameLine: { since: "2.4.0", category: t2, type: "boolean", default: false, description: "Put > of opening tags on the last line instead of on a new line." }, singleAttributePerLine: { since: "2.6.0", category: t2, type: "boolean", default: false, description: "Enforce single attribute per line in HTML, Vue and JSX." } };
        } }), Ed = te({ "src/language-js/options.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Mt(), s5 = "JavaScript";
          r2.exports = { arrowParens: { since: "1.9.0", category: s5, type: "choice", default: [{ since: "1.9.0", value: "avoid" }, { since: "2.0.0", value: "always" }], description: "Include parentheses around a sole arrow function parameter.", choices: [{ value: "always", description: "Always include parens. Example: `(x) => x`" }, { value: "avoid", description: "Omit parens when possible. Example: `x => x`" }] }, bracketSameLine: t2.bracketSameLine, bracketSpacing: t2.bracketSpacing, jsxBracketSameLine: { since: "0.17.0", category: s5, type: "boolean", description: "Put > on the last line instead of at a new line.", deprecated: "2.4.0" }, semi: { since: "1.0.0", category: s5, type: "boolean", default: true, description: "Print semicolons.", oppositeDescription: "Do not print semicolons, except at the beginning of lines which may need them." }, singleQuote: t2.singleQuote, jsxSingleQuote: { since: "1.15.0", category: s5, type: "boolean", default: false, description: "Use single quotes in JSX." }, quoteProps: { since: "1.17.0", category: s5, type: "choice", default: "as-needed", description: "Change when properties in objects are quoted.", choices: [{ value: "as-needed", description: "Only add quotes around object properties where required." }, { value: "consistent", description: "If at least one property in an object requires quotes, quote all properties." }, { value: "preserve", description: "Respect the input use of quotes in object properties." }] }, trailingComma: { since: "0.0.0", category: s5, type: "choice", default: [{ since: "0.0.0", value: false }, { since: "0.19.0", value: "none" }, { since: "2.0.0", value: "es5" }], description: "Print trailing commas wherever possible when multi-line.", choices: [{ value: "es5", description: "Trailing commas where valid in ES5 (objects, arrays, etc.)" }, { value: "none", description: "No trailing commas." }, { value: "all", description: "Trailing commas wherever possible (including function arguments)." }] }, singleAttributePerLine: t2.singleAttributePerLine };
        } }), Fd = te({ "src/language-js/parse/parsers.js"() {
          ne();
        } }), Ln = te({ "node_modules/linguist-languages/data/JavaScript.json"(e2, r2) {
          r2.exports = { name: "JavaScript", type: "programming", tmScope: "source.js", aceMode: "javascript", codemirrorMode: "javascript", codemirrorMimeType: "text/javascript", color: "#f1e05a", aliases: ["js", "node"], extensions: [".js", "._js", ".bones", ".cjs", ".es", ".es6", ".frag", ".gs", ".jake", ".javascript", ".jsb", ".jscad", ".jsfl", ".jslib", ".jsm", ".jspre", ".jss", ".jsx", ".mjs", ".njs", ".pac", ".sjs", ".ssjs", ".xsjs", ".xsjslib"], filenames: ["Jakefile"], interpreters: ["chakra", "d8", "gjs", "js", "node", "nodejs", "qjs", "rhino", "v8", "v8-shell"], languageId: 183 };
        } }), Ad = te({ "node_modules/linguist-languages/data/TypeScript.json"(e2, r2) {
          r2.exports = { name: "TypeScript", type: "programming", color: "#3178c6", aliases: ["ts"], interpreters: ["deno", "ts-node"], extensions: [".ts", ".cts", ".mts"], tmScope: "source.ts", aceMode: "typescript", codemirrorMode: "javascript", codemirrorMimeType: "application/typescript", languageId: 378 };
        } }), Sd = te({ "node_modules/linguist-languages/data/TSX.json"(e2, r2) {
          r2.exports = { name: "TSX", type: "programming", color: "#3178c6", group: "TypeScript", extensions: [".tsx"], tmScope: "source.tsx", aceMode: "javascript", codemirrorMode: "jsx", codemirrorMimeType: "text/jsx", languageId: 94901924 };
        } }), wa = te({ "node_modules/linguist-languages/data/JSON.json"(e2, r2) {
          r2.exports = { name: "JSON", type: "data", color: "#292929", tmScope: "source.json", aceMode: "json", codemirrorMode: "javascript", codemirrorMimeType: "application/json", aliases: ["geojson", "jsonl", "topojson"], extensions: [".json", ".4DForm", ".4DProject", ".avsc", ".geojson", ".gltf", ".har", ".ice", ".JSON-tmLanguage", ".jsonl", ".mcmeta", ".tfstate", ".tfstate.backup", ".topojson", ".webapp", ".webmanifest", ".yy", ".yyp"], filenames: [".arcconfig", ".auto-changelog", ".c8rc", ".htmlhintrc", ".imgbotconfig", ".nycrc", ".tern-config", ".tern-project", ".watchmanconfig", "Pipfile.lock", "composer.lock", "mcmod.info"], languageId: 174 };
        } }), xd = te({ "node_modules/linguist-languages/data/JSON with Comments.json"(e2, r2) {
          r2.exports = { name: "JSON with Comments", type: "data", color: "#292929", group: "JSON", tmScope: "source.js", aceMode: "javascript", codemirrorMode: "javascript", codemirrorMimeType: "text/javascript", aliases: ["jsonc"], extensions: [".jsonc", ".code-snippets", ".sublime-build", ".sublime-commands", ".sublime-completions", ".sublime-keymap", ".sublime-macro", ".sublime-menu", ".sublime-mousemap", ".sublime-project", ".sublime-settings", ".sublime-theme", ".sublime-workspace", ".sublime_metrics", ".sublime_session"], filenames: [".babelrc", ".devcontainer.json", ".eslintrc.json", ".jscsrc", ".jshintrc", ".jslintrc", "api-extractor.json", "devcontainer.json", "jsconfig.json", "language-configuration.json", "tsconfig.json", "tslint.json"], languageId: 423 };
        } }), bd = te({ "node_modules/linguist-languages/data/JSON5.json"(e2, r2) {
          r2.exports = { name: "JSON5", type: "data", color: "#267CB9", extensions: [".json5"], tmScope: "source.js", aceMode: "javascript", codemirrorMode: "javascript", codemirrorMimeType: "application/json", languageId: 175 };
        } }), Td = te({ "src/language-js/index.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = _t(), s5 = vd(), a2 = Cd(), n = Ed(), u3 = Fd(), i2 = [t2(Ln(), (p5) => ({ since: "0.0.0", parsers: ["babel", "acorn", "espree", "meriyah", "babel-flow", "babel-ts", "flow", "typescript"], vscodeLanguageIds: ["javascript", "mongo"], interpreters: [...p5.interpreters, "zx"], extensions: [...p5.extensions.filter((d) => d !== ".jsx"), ".wxs"] })), t2(Ln(), () => ({ name: "Flow", since: "0.0.0", parsers: ["flow", "babel-flow"], vscodeLanguageIds: ["javascript"], aliases: [], filenames: [], extensions: [".js.flow"] })), t2(Ln(), () => ({ name: "JSX", since: "0.0.0", parsers: ["babel", "babel-flow", "babel-ts", "flow", "typescript", "espree", "meriyah"], vscodeLanguageIds: ["javascriptreact"], aliases: void 0, filenames: void 0, extensions: [".jsx"], group: "JavaScript", interpreters: void 0, tmScope: "source.js.jsx", aceMode: "javascript", codemirrorMode: "jsx", codemirrorMimeType: "text/jsx", color: void 0 })), t2(Ad(), () => ({ since: "1.4.0", parsers: ["typescript", "babel-ts"], vscodeLanguageIds: ["typescript"] })), t2(Sd(), () => ({ since: "1.4.0", parsers: ["typescript", "babel-ts"], vscodeLanguageIds: ["typescriptreact"] })), t2(wa(), () => ({ name: "JSON.stringify", since: "1.13.0", parsers: ["json-stringify"], vscodeLanguageIds: ["json"], extensions: [".importmap"], filenames: ["package.json", "package-lock.json", "composer.json"] })), t2(wa(), (p5) => ({ since: "1.5.0", parsers: ["json"], vscodeLanguageIds: ["json"], extensions: p5.extensions.filter((d) => d !== ".jsonl") })), t2(xd(), (p5) => ({ since: "1.5.0", parsers: ["json"], vscodeLanguageIds: ["jsonc"], filenames: [...p5.filenames, ".eslintrc", ".swcrc"] })), t2(bd(), () => ({ since: "1.13.0", parsers: ["json5"], vscodeLanguageIds: ["json5"] }))], l = { estree: s5, "estree-json": a2 };
          r2.exports = { languages: i2, options: n, printers: l, parsers: u3 };
        } }), Bd = te({ "src/language-css/clean.js"(e2, r2) {
          "use strict";
          ne();
          var { isFrontMatterNode: t2 } = Ue(), s5 = lt(), a2 = /* @__PURE__ */ new Set(["raw", "raws", "sourceIndex", "source", "before", "after", "trailingComma"]);
          function n(i2, l, p5) {
            if (t2(i2) && i2.lang === "yaml" && delete l.value, i2.type === "css-comment" && p5.type === "css-root" && p5.nodes.length > 0 && ((p5.nodes[0] === i2 || t2(p5.nodes[0]) && p5.nodes[1] === i2) && (delete l.text, /^\*\s*@(?:format|prettier)\s*$/.test(i2.text)) || p5.type === "css-root" && s5(p5.nodes) === i2))
              return null;
            if (i2.type === "value-root" && delete l.text, (i2.type === "media-query" || i2.type === "media-query-list" || i2.type === "media-feature-expression") && delete l.value, i2.type === "css-rule" && delete l.params, i2.type === "selector-combinator" && (l.value = l.value.replace(/\s+/g, " ")), i2.type === "media-feature" && (l.value = l.value.replace(/ /g, "")), (i2.type === "value-word" && (i2.isColor && i2.isHex || ["initial", "inherit", "unset", "revert"].includes(l.value.replace().toLowerCase())) || i2.type === "media-feature" || i2.type === "selector-root-invalid" || i2.type === "selector-pseudo") && (l.value = l.value.toLowerCase()), i2.type === "css-decl" && (l.prop = l.prop.toLowerCase()), (i2.type === "css-atrule" || i2.type === "css-import") && (l.name = l.name.toLowerCase()), i2.type === "value-number" && (l.unit = l.unit.toLowerCase()), (i2.type === "media-feature" || i2.type === "media-keyword" || i2.type === "media-type" || i2.type === "media-unknown" || i2.type === "media-url" || i2.type === "media-value" || i2.type === "selector-attribute" || i2.type === "selector-string" || i2.type === "selector-class" || i2.type === "selector-combinator" || i2.type === "value-string") && l.value && (l.value = u3(l.value)), i2.type === "selector-attribute" && (l.attribute = l.attribute.trim(), l.namespace && typeof l.namespace == "string" && (l.namespace = l.namespace.trim(), l.namespace.length === 0 && (l.namespace = true)), l.value && (l.value = l.value.trim().replace(/^["']|["']$/g, ""), delete l.quoted)), (i2.type === "media-value" || i2.type === "media-type" || i2.type === "value-number" || i2.type === "selector-root-invalid" || i2.type === "selector-class" || i2.type === "selector-combinator" || i2.type === "selector-tag") && l.value && (l.value = l.value.replace(/([\d+.Ee-]+)([A-Za-z]*)/g, (d, y, g) => {
              let c = Number(y);
              return Number.isNaN(c) ? d : c + g.toLowerCase();
            })), i2.type === "selector-tag") {
              let d = i2.value.toLowerCase();
              ["from", "to"].includes(d) && (l.value = d);
            }
            if (i2.type === "css-atrule" && i2.name.toLowerCase() === "supports" && delete l.value, i2.type === "selector-unknown" && delete l.value, i2.type === "value-comma_group") {
              let d = i2.groups.findIndex((y) => y.type === "value-number" && y.unit === "...");
              d !== -1 && (l.groups[d].unit = "", l.groups.splice(d + 1, 0, { type: "value-word", value: "...", isColor: false, isHex: false }));
            }
            if (i2.type === "value-comma_group" && i2.groups.some((d) => d.type === "value-atword" && d.value.endsWith("[") || d.type === "value-word" && d.value.startsWith("]")))
              return { type: "value-atword", value: i2.groups.map((d) => d.value).join(""), group: { open: null, close: null, groups: [], type: "value-paren_group" } };
          }
          n.ignoredProperties = a2;
          function u3(i2) {
            return i2.replace(/'/g, '"').replace(/\\([^\dA-Fa-f])/g, "$1");
          }
          r2.exports = n;
        } }), su = te({ "src/utils/front-matter/print.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { hardline: t2, markAsRoot: s5 } } = qe();
          function a2(n, u3) {
            if (n.lang === "yaml") {
              let i2 = n.value.trim(), l = i2 ? u3(i2, { parser: "yaml" }, { stripTrailingHardline: true }) : "";
              return s5([n.startDelimiter, t2, l, l ? t2 : "", n.endDelimiter]);
            }
          }
          r2.exports = a2;
        } }), Nd = te({ "src/language-css/embed.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { hardline: t2 } } = qe(), s5 = su();
          function a2(n, u3, i2) {
            let l = n.getValue();
            if (l.type === "front-matter") {
              let p5 = s5(l, i2);
              return p5 ? [p5, t2] : "";
            }
          }
          r2.exports = a2;
        } }), _o = te({ "src/utils/front-matter/parse.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = new RegExp("^(?<startDelimiter>-{3}|\\+{3})(?<language>[^\\n]*)\\n(?:|(?<value>.*?)\\n)(?<endDelimiter>\\k<startDelimiter>|\\.{3})[^\\S\\n]*(?:\\n|$)", "s");
          function s5(a2) {
            let n = a2.match(t2);
            if (!n)
              return { content: a2 };
            let { startDelimiter: u3, language: i2, value: l = "", endDelimiter: p5 } = n.groups, d = i2.trim() || "yaml";
            if (u3 === "+++" && (d = "toml"), d !== "yaml" && u3 !== p5)
              return { content: a2 };
            let [y] = n;
            return { frontMatter: { type: "front-matter", lang: d, value: l, startDelimiter: u3, endDelimiter: p5, raw: y.replace(/\n$/, "") }, content: y.replace(/[^\n]/g, " ") + a2.slice(y.length) };
          }
          r2.exports = s5;
        } }), wd = te({ "src/language-css/pragma.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Co(), s5 = _o();
          function a2(u3) {
            return t2.hasPragma(s5(u3).content);
          }
          function n(u3) {
            let { frontMatter: i2, content: l } = s5(u3);
            return (i2 ? i2.raw + `

` : "") + t2.insertPragma(l);
          }
          r2.exports = { hasPragma: a2, insertPragma: n };
        } }), _d2 = te({ "src/language-css/utils/index.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = /* @__PURE__ */ new Set(["red", "green", "blue", "alpha", "a", "rgb", "hue", "h", "saturation", "s", "lightness", "l", "whiteness", "w", "blackness", "b", "tint", "shade", "blend", "blenda", "contrast", "hsl", "hsla", "hwb", "hwba"]);
          function s5(z2, U) {
            let Z2 = Array.isArray(U) ? U : [U], se = -1, De;
            for (; De = z2.getParentNode(++se); )
              if (Z2.includes(De.type))
                return se;
            return -1;
          }
          function a2(z2, U) {
            let Z2 = s5(z2, U);
            return Z2 === -1 ? null : z2.getParentNode(Z2);
          }
          function n(z2) {
            var U;
            let Z2 = a2(z2, "css-decl");
            return Z2 == null || (U = Z2.prop) === null || U === void 0 ? void 0 : U.toLowerCase();
          }
          var u3 = /* @__PURE__ */ new Set(["initial", "inherit", "unset", "revert"]);
          function i2(z2) {
            return u3.has(z2.toLowerCase());
          }
          function l(z2, U) {
            let Z2 = a2(z2, "css-atrule");
            return (Z2 == null ? void 0 : Z2.name) && Z2.name.toLowerCase().endsWith("keyframes") && ["from", "to"].includes(U.toLowerCase());
          }
          function p5(z2) {
            return z2.includes("$") || z2.includes("@") || z2.includes("#") || z2.startsWith("%") || z2.startsWith("--") || z2.startsWith(":--") || z2.includes("(") && z2.includes(")") ? z2 : z2.toLowerCase();
          }
          function d(z2, U) {
            var Z2;
            let se = a2(z2, "value-func");
            return (se == null || (Z2 = se.value) === null || Z2 === void 0 ? void 0 : Z2.toLowerCase()) === U;
          }
          function y(z2) {
            var U;
            let Z2 = a2(z2, "css-rule"), se = Z2 == null || (U = Z2.raws) === null || U === void 0 ? void 0 : U.selector;
            return se && (se.startsWith(":import") || se.startsWith(":export"));
          }
          function g(z2, U) {
            let Z2 = Array.isArray(U) ? U : [U], se = a2(z2, "css-atrule");
            return se && Z2.includes(se.name.toLowerCase());
          }
          function c(z2) {
            let U = z2.getValue(), Z2 = a2(z2, "css-atrule");
            return (Z2 == null ? void 0 : Z2.name) === "import" && U.groups[0].value === "url" && U.groups.length === 2;
          }
          function D2(z2) {
            return z2.type === "value-func" && z2.value.toLowerCase() === "url";
          }
          function E(z2, U) {
            var Z2;
            let se = (Z2 = z2.getParentNode()) === null || Z2 === void 0 ? void 0 : Z2.nodes;
            return se && se.indexOf(U) === se.length - 1;
          }
          function _2(z2) {
            let { selector: U } = z2;
            return U ? typeof U == "string" && /^@.+:.*$/.test(U) || U.value && /^@.+:.*$/.test(U.value) : false;
          }
          function w(z2) {
            return z2.type === "value-word" && ["from", "through", "end"].includes(z2.value);
          }
          function F2(z2) {
            return z2.type === "value-word" && ["and", "or", "not"].includes(z2.value);
          }
          function S3(z2) {
            return z2.type === "value-word" && z2.value === "in";
          }
          function N(z2) {
            return z2.type === "value-operator" && z2.value === "*";
          }
          function I(z2) {
            return z2.type === "value-operator" && z2.value === "/";
          }
          function P(z2) {
            return z2.type === "value-operator" && z2.value === "+";
          }
          function $2(z2) {
            return z2.type === "value-operator" && z2.value === "-";
          }
          function f3(z2) {
            return z2.type === "value-operator" && z2.value === "%";
          }
          function T2(z2) {
            return N(z2) || I(z2) || P(z2) || $2(z2) || f3(z2);
          }
          function m2(z2) {
            return z2.type === "value-word" && ["==", "!="].includes(z2.value);
          }
          function v(z2) {
            return z2.type === "value-word" && ["<", ">", "<=", ">="].includes(z2.value);
          }
          function o(z2) {
            return z2.type === "css-atrule" && ["if", "else", "for", "each", "while"].includes(z2.name);
          }
          function h4(z2) {
            var U;
            return ((U = z2.raws) === null || U === void 0 ? void 0 : U.params) && /^\(\s*\)$/.test(z2.raws.params);
          }
          function C(z2) {
            return z2.name.startsWith("prettier-placeholder");
          }
          function x2(z2) {
            return z2.prop.startsWith("@prettier-placeholder");
          }
          function b(z2, U) {
            return z2.value === "$$" && z2.type === "value-func" && (U == null ? void 0 : U.type) === "value-word" && !U.raws.before;
          }
          function B(z2) {
            var U, Z2;
            return ((U = z2.value) === null || U === void 0 ? void 0 : U.type) === "value-root" && ((Z2 = z2.value.group) === null || Z2 === void 0 ? void 0 : Z2.type) === "value-value" && z2.prop.toLowerCase() === "composes";
          }
          function k(z2) {
            var U, Z2, se;
            return ((U = z2.value) === null || U === void 0 || (Z2 = U.group) === null || Z2 === void 0 || (se = Z2.group) === null || se === void 0 ? void 0 : se.type) === "value-paren_group" && z2.value.group.group.open !== null && z2.value.group.group.close !== null;
          }
          function M(z2) {
            var U;
            return ((U = z2.raws) === null || U === void 0 ? void 0 : U.before) === "";
          }
          function R(z2) {
            var U, Z2;
            return z2.type === "value-comma_group" && ((U = z2.groups) === null || U === void 0 || (Z2 = U[1]) === null || Z2 === void 0 ? void 0 : Z2.type) === "value-colon";
          }
          function q2(z2) {
            var U;
            return z2.type === "value-paren_group" && ((U = z2.groups) === null || U === void 0 ? void 0 : U[0]) && R(z2.groups[0]);
          }
          function J(z2) {
            var U;
            let Z2 = z2.getValue();
            if (Z2.groups.length === 0)
              return false;
            let se = z2.getParentNode(1);
            if (!q2(Z2) && !(se && q2(se)))
              return false;
            let De = a2(z2, "css-decl");
            return !!(De != null && (U = De.prop) !== null && U !== void 0 && U.startsWith("$") || q2(se) || se.type === "value-func");
          }
          function L(z2) {
            return z2.type === "value-comment" && z2.inline;
          }
          function Q(z2) {
            return z2.type === "value-word" && z2.value === "#";
          }
          function V(z2) {
            return z2.type === "value-word" && z2.value === "{";
          }
          function j(z2) {
            return z2.type === "value-word" && z2.value === "}";
          }
          function Y(z2) {
            return ["value-word", "value-atword"].includes(z2.type);
          }
          function ie(z2) {
            return (z2 == null ? void 0 : z2.type) === "value-colon";
          }
          function ee(z2, U) {
            if (!R(U))
              return false;
            let { groups: Z2 } = U, se = Z2.indexOf(z2);
            return se === -1 ? false : ie(Z2[se + 1]);
          }
          function le(z2) {
            return z2.value && ["not", "and", "or"].includes(z2.value.toLowerCase());
          }
          function W(z2) {
            return z2.type !== "value-func" ? false : t2.has(z2.value.toLowerCase());
          }
          function K(z2) {
            return /\/\//.test(z2.split(/[\n\r]/).pop());
          }
          function de(z2) {
            return (z2 == null ? void 0 : z2.type) === "value-atword" && z2.value.startsWith("prettier-placeholder-");
          }
          function ue(z2, U) {
            var Z2, se;
            if (((Z2 = z2.open) === null || Z2 === void 0 ? void 0 : Z2.value) !== "(" || ((se = z2.close) === null || se === void 0 ? void 0 : se.value) !== ")" || z2.groups.some((De) => De.type !== "value-comma_group"))
              return false;
            if (U.type === "value-comma_group") {
              let De = U.groups.indexOf(z2) - 1, ge = U.groups[De];
              if ((ge == null ? void 0 : ge.type) === "value-word" && ge.value === "with")
                return true;
            }
            return false;
          }
          function Fe(z2) {
            var U, Z2;
            return z2.type === "value-paren_group" && ((U = z2.open) === null || U === void 0 ? void 0 : U.value) === "(" && ((Z2 = z2.close) === null || Z2 === void 0 ? void 0 : Z2.value) === ")";
          }
          r2.exports = { getAncestorCounter: s5, getAncestorNode: a2, getPropOfDeclNode: n, maybeToLowerCase: p5, insideValueFunctionNode: d, insideICSSRuleNode: y, insideAtRuleNode: g, insideURLFunctionInImportAtRuleNode: c, isKeyframeAtRuleKeywords: l, isWideKeywords: i2, isLastNode: E, isSCSSControlDirectiveNode: o, isDetachedRulesetDeclarationNode: _2, isRelationalOperatorNode: v, isEqualityOperatorNode: m2, isMultiplicationNode: N, isDivisionNode: I, isAdditionNode: P, isSubtractionNode: $2, isModuloNode: f3, isMathOperatorNode: T2, isEachKeywordNode: S3, isForKeywordNode: w, isURLFunctionNode: D2, isIfElseKeywordNode: F2, hasComposesNode: B, hasParensAroundNode: k, hasEmptyRawBefore: M, isDetachedRulesetCallNode: h4, isTemplatePlaceholderNode: C, isTemplatePropNode: x2, isPostcssSimpleVarNode: b, isKeyValuePairNode: R, isKeyValuePairInParenGroupNode: q2, isKeyInValuePairNode: ee, isSCSSMapItemNode: J, isInlineValueCommentNode: L, isHashNode: Q, isLeftCurlyBraceNode: V, isRightCurlyBraceNode: j, isWordNode: Y, isColonNode: ie, isMediaAndSupportsKeywords: le, isColorAdjusterFuncNode: W, lastLineHasInlineComment: K, isAtWordPlaceholderNode: de, isConfigurationNode: ue, isParenGroupNode: Fe };
        } }), Pd = te({ "src/utils/line-column-to-index.js"(e2, r2) {
          "use strict";
          ne(), r2.exports = function(t2, s5) {
            let a2 = 0;
            for (let n = 0; n < t2.line - 1; ++n)
              a2 = s5.indexOf(`
`, a2) + 1;
            return a2 + t2.column;
          };
        } }), Id = te({ "src/language-css/loc.js"(e2, r2) {
          "use strict";
          ne();
          var { skipEverythingButNewLine: t2 } = Pr(), s5 = lt(), a2 = Pd();
          function n(c, D2) {
            return typeof c.sourceIndex == "number" ? c.sourceIndex : c.source ? a2(c.source.start, D2) - 1 : null;
          }
          function u3(c, D2) {
            if (c.type === "css-comment" && c.inline)
              return t2(D2, c.source.startOffset);
            let E = c.nodes && s5(c.nodes);
            return E && c.source && !c.source.end && (c = E), c.source && c.source.end ? a2(c.source.end, D2) : null;
          }
          function i2(c, D2) {
            c.source && (c.source.startOffset = n(c, D2), c.source.endOffset = u3(c, D2));
            for (let E in c) {
              let _2 = c[E];
              E === "source" || !_2 || typeof _2 != "object" || (_2.type === "value-root" || _2.type === "value-unknown" ? l(_2, p5(c), _2.text || _2.value) : i2(_2, D2));
            }
          }
          function l(c, D2, E) {
            c.source && (c.source.startOffset = n(c, E) + D2, c.source.endOffset = u3(c, E) + D2);
            for (let _2 in c) {
              let w = c[_2];
              _2 === "source" || !w || typeof w != "object" || l(w, D2, E);
            }
          }
          function p5(c) {
            let D2 = c.source.startOffset;
            return typeof c.prop == "string" && (D2 += c.prop.length), c.type === "css-atrule" && typeof c.name == "string" && (D2 += 1 + c.name.length + c.raws.afterName.match(/^\s*:?\s*/)[0].length), c.type !== "css-atrule" && c.raws && typeof c.raws.between == "string" && (D2 += c.raws.between.length), D2;
          }
          function d(c) {
            let D2 = "initial", E = "initial", _2, w = false, F2 = [];
            for (let S3 = 0; S3 < c.length; S3++) {
              let N = c[S3];
              switch (D2) {
                case "initial":
                  if (N === "'") {
                    D2 = "single-quotes";
                    continue;
                  }
                  if (N === '"') {
                    D2 = "double-quotes";
                    continue;
                  }
                  if ((N === "u" || N === "U") && c.slice(S3, S3 + 4).toLowerCase() === "url(") {
                    D2 = "url", S3 += 3;
                    continue;
                  }
                  if (N === "*" && c[S3 - 1] === "/") {
                    D2 = "comment-block";
                    continue;
                  }
                  if (N === "/" && c[S3 - 1] === "/") {
                    D2 = "comment-inline", _2 = S3 - 1;
                    continue;
                  }
                  continue;
                case "single-quotes":
                  if (N === "'" && c[S3 - 1] !== "\\" && (D2 = E, E = "initial"), N === `
` || N === "\r")
                    return c;
                  continue;
                case "double-quotes":
                  if (N === '"' && c[S3 - 1] !== "\\" && (D2 = E, E = "initial"), N === `
` || N === "\r")
                    return c;
                  continue;
                case "url":
                  if (N === ")" && (D2 = "initial"), N === `
` || N === "\r")
                    return c;
                  if (N === "'") {
                    D2 = "single-quotes", E = "url";
                    continue;
                  }
                  if (N === '"') {
                    D2 = "double-quotes", E = "url";
                    continue;
                  }
                  continue;
                case "comment-block":
                  N === "/" && c[S3 - 1] === "*" && (D2 = "initial");
                  continue;
                case "comment-inline":
                  (N === '"' || N === "'" || N === "*") && (w = true), (N === `
` || N === "\r") && (w && F2.push([_2, S3]), D2 = "initial", w = false);
                  continue;
              }
            }
            for (let [S3, N] of F2)
              c = c.slice(0, S3) + c.slice(S3, N).replace(/["'*]/g, " ") + c.slice(N);
            return c;
          }
          function y(c) {
            return c.source.startOffset;
          }
          function g(c) {
            return c.source.endOffset;
          }
          r2.exports = { locStart: y, locEnd: g, calculateLoc: i2, replaceQuotesInInlineComments: d };
        } }), kd = te({ "src/language-css/utils/is-less-parser.js"(e2, r2) {
          "use strict";
          ne();
          function t2(s5) {
            return s5.parser === "css" || s5.parser === "less";
          }
          r2.exports = t2;
        } }), Ld = te({ "src/language-css/utils/is-scss.js"(e2, r2) {
          "use strict";
          ne();
          function t2(s5, a2) {
            return s5 === "less" || s5 === "scss" ? s5 === "scss" : /(?:\w\s*:\s*[^:}]+|#){|@import[^\n]+(?:url|,)/.test(a2);
          }
          r2.exports = t2;
        } }), Od = te({ "src/language-css/utils/css-units.evaluate.js"(e2, r2) {
          r2.exports = { em: "em", rem: "rem", ex: "ex", rex: "rex", cap: "cap", rcap: "rcap", ch: "ch", rch: "rch", ic: "ic", ric: "ric", lh: "lh", rlh: "rlh", vw: "vw", svw: "svw", lvw: "lvw", dvw: "dvw", vh: "vh", svh: "svh", lvh: "lvh", dvh: "dvh", vi: "vi", svi: "svi", lvi: "lvi", dvi: "dvi", vb: "vb", svb: "svb", lvb: "lvb", dvb: "dvb", vmin: "vmin", svmin: "svmin", lvmin: "lvmin", dvmin: "dvmin", vmax: "vmax", svmax: "svmax", lvmax: "lvmax", dvmax: "dvmax", cm: "cm", mm: "mm", q: "Q", in: "in", pt: "pt", pc: "pc", px: "px", deg: "deg", grad: "grad", rad: "rad", turn: "turn", s: "s", ms: "ms", hz: "Hz", khz: "kHz", dpi: "dpi", dpcm: "dpcm", dppx: "dppx", x: "x" };
        } }), jd = te({ "src/language-css/utils/print-unit.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Od();
          function s5(a2) {
            let n = a2.toLowerCase();
            return Object.prototype.hasOwnProperty.call(t2, n) ? t2[n] : a2;
          }
          r2.exports = s5;
        } }), qd = te({ "src/language-css/printer-postcss.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = lt(), { printNumber: s5, printString: a2, hasNewline: n, isFrontMatterNode: u3, isNextLineEmpty: i2, isNonEmptyArray: l } = Ue(), { builders: { join: p5, line: d, hardline: y, softline: g, group: c, fill: D2, indent: E, dedent: _2, ifBreak: w, breakParent: F2 }, utils: { removeLines: S3, getDocParts: N } } = qe(), I = Bd(), P = Nd(), { insertPragma: $2 } = wd(), { getAncestorNode: f3, getPropOfDeclNode: T2, maybeToLowerCase: m2, insideValueFunctionNode: v, insideICSSRuleNode: o, insideAtRuleNode: h4, insideURLFunctionInImportAtRuleNode: C, isKeyframeAtRuleKeywords: x2, isWideKeywords: b, isLastNode: B, isSCSSControlDirectiveNode: k, isDetachedRulesetDeclarationNode: M, isRelationalOperatorNode: R, isEqualityOperatorNode: q2, isMultiplicationNode: J, isDivisionNode: L, isAdditionNode: Q, isSubtractionNode: V, isMathOperatorNode: j, isEachKeywordNode: Y, isForKeywordNode: ie, isURLFunctionNode: ee, isIfElseKeywordNode: le, hasComposesNode: W, hasParensAroundNode: K, hasEmptyRawBefore: de, isKeyValuePairNode: ue, isKeyInValuePairNode: Fe, isDetachedRulesetCallNode: z2, isTemplatePlaceholderNode: U, isTemplatePropNode: Z2, isPostcssSimpleVarNode: se, isSCSSMapItemNode: De, isInlineValueCommentNode: ge, isHashNode: he2, isLeftCurlyBraceNode: we, isRightCurlyBraceNode: ke, isWordNode: Re, isColonNode: Ne, isMediaAndSupportsKeywords: Pe, isColorAdjusterFuncNode: oe, lastLineHasInlineComment: H, isAtWordPlaceholderNode: ce, isConfigurationNode: X, isParenGroupNode: pe } = _d2(), { locStart: Ae, locEnd: Ce } = Id(), fe = kd(), A2 = Ld(), G = jd();
          function re(Te) {
            return Te.trailingComma === "es5" || Te.trailingComma === "all";
          }
          function ye(Te, je, Me) {
            let ae = Te.getValue();
            if (!ae)
              return "";
            if (typeof ae == "string")
              return ae;
            switch (ae.type) {
              case "front-matter":
                return [ae.raw, y];
              case "css-root": {
                let Ve = Ee(Te, je, Me), We = ae.raws.after.trim();
                return We.startsWith(";") && (We = We.slice(1).trim()), [Ve, We ? ` ${We}` : "", N(Ve).length > 0 ? y : ""];
              }
              case "css-comment": {
                let Ve = ae.inline || ae.raws.inline, We = je.originalText.slice(Ae(ae), Ce(ae));
                return Ve ? We.trimEnd() : We;
              }
              case "css-rule":
                return [Me("selector"), ae.important ? " !important" : "", ae.nodes ? [ae.selector && ae.selector.type === "selector-unknown" && H(ae.selector.value) ? d : " ", "{", ae.nodes.length > 0 ? E([y, Ee(Te, je, Me)]) : "", y, "}", M(ae) ? ";" : ""] : ";"];
              case "css-decl": {
                let Ve = Te.getParentNode(), { between: We } = ae.raws, Xe = We.trim(), st = Xe === ":", O = W(ae) ? S3(Me("value")) : Me("value");
                return !st && H(Xe) && (O = E([y, _2(O)])), [ae.raws.before.replace(/[\s;]/g, ""), Ve.type === "css-atrule" && Ve.variable || o(Te) ? ae.prop : m2(ae.prop), Xe.startsWith("//") ? " " : "", Xe, ae.extend ? "" : " ", fe(je) && ae.extend && ae.selector ? ["extend(", Me("selector"), ")"] : "", O, ae.raws.important ? ae.raws.important.replace(/\s*!\s*important/i, " !important") : ae.important ? " !important" : "", ae.raws.scssDefault ? ae.raws.scssDefault.replace(/\s*!default/i, " !default") : ae.scssDefault ? " !default" : "", ae.raws.scssGlobal ? ae.raws.scssGlobal.replace(/\s*!global/i, " !global") : ae.scssGlobal ? " !global" : "", ae.nodes ? [" {", E([g, Ee(Te, je, Me)]), g, "}"] : Z2(ae) && !Ve.raws.semicolon && je.originalText[Ce(ae) - 1] !== ";" ? "" : je.__isHTMLStyleAttribute && B(Te, ae) ? w(";") : ";"];
              }
              case "css-atrule": {
                let Ve = Te.getParentNode(), We = U(ae) && !Ve.raws.semicolon && je.originalText[Ce(ae) - 1] !== ";";
                if (fe(je)) {
                  if (ae.mixin)
                    return [Me("selector"), ae.important ? " !important" : "", We ? "" : ";"];
                  if (ae.function)
                    return [ae.name, Me("params"), We ? "" : ";"];
                  if (ae.variable)
                    return ["@", ae.name, ": ", ae.value ? Me("value") : "", ae.raws.between.trim() ? ae.raws.between.trim() + " " : "", ae.nodes ? ["{", E([ae.nodes.length > 0 ? g : "", Ee(Te, je, Me)]), g, "}"] : "", We ? "" : ";"];
                }
                return ["@", z2(ae) || ae.name.endsWith(":") ? ae.name : m2(ae.name), ae.params ? [z2(ae) ? "" : U(ae) ? ae.raws.afterName === "" ? "" : ae.name.endsWith(":") ? " " : /^\s*\n\s*\n/.test(ae.raws.afterName) ? [y, y] : /^\s*\n/.test(ae.raws.afterName) ? y : " " : " ", Me("params")] : "", ae.selector ? E([" ", Me("selector")]) : "", ae.value ? c([" ", Me("value"), k(ae) ? K(ae) ? " " : d : ""]) : ae.name === "else" ? " " : "", ae.nodes ? [k(ae) ? "" : ae.selector && !ae.selector.nodes && typeof ae.selector.value == "string" && H(ae.selector.value) || !ae.selector && typeof ae.params == "string" && H(ae.params) ? d : " ", "{", E([ae.nodes.length > 0 ? g : "", Ee(Te, je, Me)]), g, "}"] : We ? "" : ";"];
              }
              case "media-query-list": {
                let Ve = [];
                return Te.each((We) => {
                  let Xe = We.getValue();
                  Xe.type === "media-query" && Xe.value === "" || Ve.push(Me());
                }, "nodes"), c(E(p5(d, Ve)));
              }
              case "media-query":
                return [p5(" ", Te.map(Me, "nodes")), B(Te, ae) ? "" : ","];
              case "media-type":
                return Oe(Se(ae.value, je));
              case "media-feature-expression":
                return ae.nodes ? ["(", ...Te.map(Me, "nodes"), ")"] : ae.value;
              case "media-feature":
                return m2(Se(ae.value.replace(/ +/g, " "), je));
              case "media-colon":
                return [ae.value, " "];
              case "media-value":
                return Oe(Se(ae.value, je));
              case "media-keyword":
                return Se(ae.value, je);
              case "media-url":
                return Se(ae.value.replace(/^url\(\s+/gi, "url(").replace(/\s+\)$/g, ")"), je);
              case "media-unknown":
                return ae.value;
              case "selector-root":
                return c([h4(Te, "custom-selector") ? [f3(Te, "css-atrule").customSelector, d] : "", p5([",", h4(Te, ["extend", "custom-selector", "nest"]) ? d : y], Te.map(Me, "nodes"))]);
              case "selector-selector":
                return c(E(Te.map(Me, "nodes")));
              case "selector-comment":
                return ae.value;
              case "selector-string":
                return Se(ae.value, je);
              case "selector-tag": {
                let Ve = Te.getParentNode(), We = Ve && Ve.nodes.indexOf(ae), Xe = We && Ve.nodes[We - 1];
                return [ae.namespace ? [ae.namespace === true ? "" : ae.namespace.trim(), "|"] : "", Xe.type === "selector-nesting" ? ae.value : Oe(x2(Te, ae.value) ? ae.value.toLowerCase() : ae.value)];
              }
              case "selector-id":
                return ["#", ae.value];
              case "selector-class":
                return [".", Oe(Se(ae.value, je))];
              case "selector-attribute": {
                var nt;
                return ["[", ae.namespace ? [ae.namespace === true ? "" : ae.namespace.trim(), "|"] : "", ae.attribute.trim(), (nt = ae.operator) !== null && nt !== void 0 ? nt : "", ae.value ? Ie(Se(ae.value.trim(), je), je) : "", ae.insensitive ? " i" : "", "]"];
              }
              case "selector-combinator": {
                if (ae.value === "+" || ae.value === ">" || ae.value === "~" || ae.value === ">>>") {
                  let Xe = Te.getParentNode();
                  return [Xe.type === "selector-selector" && Xe.nodes[0] === ae ? "" : d, ae.value, B(Te, ae) ? "" : " "];
                }
                let Ve = ae.value.trim().startsWith("(") ? d : "", We = Oe(Se(ae.value.trim(), je)) || d;
                return [Ve, We];
              }
              case "selector-universal":
                return [ae.namespace ? [ae.namespace === true ? "" : ae.namespace.trim(), "|"] : "", ae.value];
              case "selector-pseudo":
                return [m2(ae.value), l(ae.nodes) ? c(["(", E([g, p5([",", d], Te.map(Me, "nodes"))]), g, ")"]) : ""];
              case "selector-nesting":
                return ae.value;
              case "selector-unknown": {
                let Ve = f3(Te, "css-rule");
                if (Ve && Ve.isSCSSNesterProperty)
                  return Oe(Se(m2(ae.value), je));
                let We = Te.getParentNode();
                if (We.raws && We.raws.selector) {
                  let st = Ae(We), O = st + We.raws.selector.length;
                  return je.originalText.slice(st, O).trim();
                }
                let Xe = Te.getParentNode(1);
                if (We.type === "value-paren_group" && Xe && Xe.type === "value-func" && Xe.value === "selector") {
                  let st = Ce(We.open) + 1, O = Ae(We.close), me = je.originalText.slice(st, O).trim();
                  return H(me) ? [F2, me] : me;
                }
                return ae.value;
              }
              case "value-value":
              case "value-root":
                return Me("group");
              case "value-comment":
                return je.originalText.slice(Ae(ae), Ce(ae));
              case "value-comma_group": {
                let Ve = Te.getParentNode(), We = Te.getParentNode(1), Xe = T2(Te), st = Xe && Ve.type === "value-value" && (Xe === "grid" || Xe.startsWith("grid-template")), O = f3(Te, "css-atrule"), me = O && k(O), _e = ae.groups.some((at) => ge(at)), He = Te.map(Me, "groups"), Ge = [], it = v(Te, "url"), Qe = false, rt = false;
                for (let at = 0; at < ae.groups.length; ++at) {
                  var tt;
                  Ge.push(He[at]);
                  let Ze = ae.groups[at - 1], Le = ae.groups[at], $e = ae.groups[at + 1], sr = ae.groups[at + 2];
                  if (it) {
                    ($e && Q($e) || Q(Le)) && Ge.push(" ");
                    continue;
                  }
                  if (h4(Te, "forward") && Le.type === "value-word" && Le.value && Ze !== void 0 && Ze.type === "value-word" && Ze.value === "as" && $e.type === "value-operator" && $e.value === "*" || !$e || Le.type === "value-word" && Le.value.endsWith("-") && ce($e))
                    continue;
                  if (Le.type === "value-string" && Le.quoted) {
                    let $r = Le.value.lastIndexOf("#{"), Vr = Le.value.lastIndexOf("}");
                    $r !== -1 && Vr !== -1 ? Qe = $r > Vr : $r !== -1 ? Qe = true : Vr !== -1 && (Qe = false);
                  }
                  if (Qe || Ne(Le) || Ne($e) || Le.type === "value-atword" && (Le.value === "" || Le.value.endsWith("[")) || $e.type === "value-word" && $e.value.startsWith("]") || Le.value === "~" || Le.value && Le.value.includes("\\") && $e && $e.type !== "value-comment" || Ze && Ze.value && Ze.value.indexOf("\\") === Ze.value.length - 1 && Le.type === "value-operator" && Le.value === "/" || Le.value === "\\" || se(Le, $e) || he2(Le) || we(Le) || ke($e) || we($e) && de($e) || ke(Le) && de($e) || Le.value === "--" && he2($e))
                    continue;
                  let Rr = j(Le), ou = j($e);
                  if ((Rr && he2($e) || ou && ke(Le)) && de($e) || !Ze && L(Le) || v(Te, "calc") && (Q(Le) || Q($e) || V(Le) || V($e)) && de($e))
                    continue;
                  let qo = (Q(Le) || V(Le)) && at === 0 && ($e.type === "value-number" || $e.isHex) && We && oe(We) && !de($e), lu = sr && sr.type === "value-func" || sr && Re(sr) || Le.type === "value-func" || Re(Le), cu = $e.type === "value-func" || Re($e) || Ze && Ze.type === "value-func" || Ze && Re(Ze);
                  if (!(!(J($e) || J(Le)) && !v(Te, "calc") && !qo && (L($e) && !lu || L(Le) && !cu || Q($e) && !lu || Q(Le) && !cu || V($e) || V(Le)) && (de($e) || Rr && (!Ze || Ze && j(Ze)))) && !((je.parser === "scss" || je.parser === "less") && Rr && Le.value === "-" && pe($e) && Ce(Le) === Ae($e.open) && $e.open.value === "(")) {
                    if (ge(Le)) {
                      if (Ve.type === "value-paren_group") {
                        Ge.push(_2(y));
                        continue;
                      }
                      Ge.push(y);
                      continue;
                    }
                    if (me && (q2($e) || R($e) || le($e) || Y(Le) || ie(Le))) {
                      Ge.push(" ");
                      continue;
                    }
                    if (O && O.name.toLowerCase() === "namespace") {
                      Ge.push(" ");
                      continue;
                    }
                    if (st) {
                      Le.source && $e.source && Le.source.start.line !== $e.source.start.line ? (Ge.push(y), rt = true) : Ge.push(" ");
                      continue;
                    }
                    if (ou) {
                      Ge.push(" ");
                      continue;
                    }
                    if (!($e && $e.value === "...") && !(ce(Le) && ce($e) && Ce(Le) === Ae($e))) {
                      if (ce(Le) && pe($e) && Ce(Le) === Ae($e.open)) {
                        Ge.push(g);
                        continue;
                      }
                      if (Le.value === "with" && pe($e)) {
                        Ge.push(" ");
                        continue;
                      }
                      (tt = Le.value) !== null && tt !== void 0 && tt.endsWith("#") && $e.value === "{" && pe($e.group) || Ge.push(d);
                    }
                  }
                }
                return _e && Ge.push(F2), rt && Ge.unshift(y), me ? c(E(Ge)) : C(Te) ? c(D2(Ge)) : c(E(D2(Ge)));
              }
              case "value-paren_group": {
                let Ve = Te.getParentNode();
                if (Ve && ee(Ve) && (ae.groups.length === 1 || ae.groups.length > 0 && ae.groups[0].type === "value-comma_group" && ae.groups[0].groups.length > 0 && ae.groups[0].groups[0].type === "value-word" && ae.groups[0].groups[0].value.startsWith("data:")))
                  return [ae.open ? Me("open") : "", p5(",", Te.map(Me, "groups")), ae.close ? Me("close") : ""];
                if (!ae.open) {
                  let it = Te.map(Me, "groups"), Qe = [];
                  for (let rt = 0; rt < it.length; rt++)
                    rt !== 0 && Qe.push([",", d]), Qe.push(it[rt]);
                  return c(E(D2(Qe)));
                }
                let We = De(Te), Xe = t2(ae.groups), st = Xe && Xe.type === "value-comment", O = Fe(ae, Ve), me = X(ae, Ve), _e = me || We && !O, He = me || O, Ge = c([ae.open ? Me("open") : "", E([g, p5([d], Te.map((it, Qe) => {
                  let rt = it.getValue(), at = Qe === ae.groups.length - 1, Ze = [Me(), at ? "" : ","];
                  if (ue(rt) && rt.type === "value-comma_group" && rt.groups && rt.groups[0].type !== "value-paren_group" && rt.groups[2] && rt.groups[2].type === "value-paren_group") {
                    let Le = N(Ze[0].contents.contents);
                    Le[1] = c(Le[1]), Ze = [c(_2(Ze))];
                  }
                  if (!at && rt.type === "value-comma_group" && l(rt.groups)) {
                    let Le = t2(rt.groups);
                    !Le.source && Le.close && (Le = Le.close), Le.source && i2(je.originalText, Le, Ce) && Ze.push(y);
                  }
                  return Ze;
                }, "groups"))]), w(!st && A2(je.parser, je.originalText) && We && re(je) ? "," : ""), g, ae.close ? Me("close") : ""], { shouldBreak: _e });
                return He ? _2(Ge) : Ge;
              }
              case "value-func":
                return [ae.value, h4(Te, "supports") && Pe(ae) ? " " : "", Me("group")];
              case "value-paren":
                return ae.value;
              case "value-number":
                return [Je(ae.value), G(ae.unit)];
              case "value-operator":
                return ae.value;
              case "value-word":
                return ae.isColor && ae.isHex || b(ae.value) ? ae.value.toLowerCase() : ae.value;
              case "value-colon": {
                let Ve = Te.getParentNode(), We = Ve && Ve.groups.indexOf(ae), Xe = We && Ve.groups[We - 1];
                return [ae.value, Xe && typeof Xe.value == "string" && t2(Xe.value) === "\\" || v(Te, "url") ? "" : d];
              }
              case "value-comma":
                return [ae.value, " "];
              case "value-string":
                return a2(ae.raws.quote + ae.value + ae.raws.quote, je);
              case "value-atword":
                return ["@", ae.value];
              case "value-unicode-range":
                return ae.value;
              case "value-unknown":
                return ae.value;
              default:
                throw new Error(`Unknown postcss type ${JSON.stringify(ae.type)}`);
            }
          }
          function Ee(Te, je, Me) {
            let ae = [];
            return Te.each((nt, tt, Ve) => {
              let We = Ve[tt - 1];
              if (We && We.type === "css-comment" && We.text.trim() === "prettier-ignore") {
                let Xe = nt.getValue();
                ae.push(je.originalText.slice(Ae(Xe), Ce(Xe)));
              } else
                ae.push(Me());
              tt !== Ve.length - 1 && (Ve[tt + 1].type === "css-comment" && !n(je.originalText, Ae(Ve[tt + 1]), { backwards: true }) && !u3(Ve[tt]) || Ve[tt + 1].type === "css-atrule" && Ve[tt + 1].name === "else" && Ve[tt].type !== "css-comment" ? ae.push(" ") : (ae.push(je.__isHTMLStyleAttribute ? d : y), i2(je.originalText, nt.getValue(), Ce) && !u3(Ve[tt]) && ae.push(y)));
            }, "nodes"), ae;
          }
          var Be = /(["'])(?:(?!\1)[^\\]|\\.)*\1/gs, ve = /(?:\d*\.\d+|\d+\.?)(?:[Ee][+-]?\d+)?/g, ze = /[A-Za-z]+/g, be = /[$@]?[A-Z_a-z\u0080-\uFFFF][\w\u0080-\uFFFF-]*/g, Ye = new RegExp(Be.source + `|(${be.source})?(${ve.source})(${ze.source})?`, "g");
          function Se(Te, je) {
            return Te.replace(Be, (Me) => a2(Me, je));
          }
          function Ie(Te, je) {
            let Me = je.singleQuote ? "'" : '"';
            return Te.includes('"') || Te.includes("'") ? Te : Me + Te + Me;
          }
          function Oe(Te) {
            return Te.replace(Ye, (je, Me, ae, nt, tt) => !ae && nt ? Je(nt) + m2(tt || "") : je);
          }
          function Je(Te) {
            return s5(Te).replace(/\.0(?=$|e)/, "");
          }
          r2.exports = { print: ye, embed: P, insertPragma: $2, massageAstNode: I };
        } }), Md = te({ "src/language-css/options.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Mt();
          r2.exports = { singleQuote: t2.singleQuote };
        } }), Rd = te({ "src/language-css/parsers.js"() {
          ne();
        } }), $d = te({ "node_modules/linguist-languages/data/CSS.json"(e2, r2) {
          r2.exports = { name: "CSS", type: "markup", tmScope: "source.css", aceMode: "css", codemirrorMode: "css", codemirrorMimeType: "text/css", color: "#563d7c", extensions: [".css"], languageId: 50 };
        } }), Vd = te({ "node_modules/linguist-languages/data/PostCSS.json"(e2, r2) {
          r2.exports = { name: "PostCSS", type: "markup", color: "#dc3a0c", tmScope: "source.postcss", group: "CSS", extensions: [".pcss", ".postcss"], aceMode: "text", languageId: 262764437 };
        } }), Wd = te({ "node_modules/linguist-languages/data/Less.json"(e2, r2) {
          r2.exports = { name: "Less", type: "markup", color: "#1d365d", aliases: ["less-css"], extensions: [".less"], tmScope: "source.css.less", aceMode: "less", codemirrorMode: "css", codemirrorMimeType: "text/css", languageId: 198 };
        } }), Hd = te({ "node_modules/linguist-languages/data/SCSS.json"(e2, r2) {
          r2.exports = { name: "SCSS", type: "markup", color: "#c6538c", tmScope: "source.css.scss", aceMode: "scss", codemirrorMode: "css", codemirrorMimeType: "text/x-scss", extensions: [".scss"], languageId: 329 };
        } }), Gd = te({ "src/language-css/index.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = _t(), s5 = qd(), a2 = Md(), n = Rd(), u3 = [t2($d(), (l) => ({ since: "1.4.0", parsers: ["css"], vscodeLanguageIds: ["css"], extensions: [...l.extensions, ".wxss"] })), t2(Vd(), () => ({ since: "1.4.0", parsers: ["css"], vscodeLanguageIds: ["postcss"] })), t2(Wd(), () => ({ since: "1.4.0", parsers: ["less"], vscodeLanguageIds: ["less"] })), t2(Hd(), () => ({ since: "1.4.0", parsers: ["scss"], vscodeLanguageIds: ["scss"] }))], i2 = { postcss: s5 };
          r2.exports = { languages: u3, options: a2, printers: i2, parsers: n };
        } }), Ud = te({ "src/language-handlebars/loc.js"(e2, r2) {
          "use strict";
          ne();
          function t2(a2) {
            return a2.loc.start.offset;
          }
          function s5(a2) {
            return a2.loc.end.offset;
          }
          r2.exports = { locStart: t2, locEnd: s5 };
        } }), Jd = te({ "src/language-handlebars/clean.js"(e2, r2) {
          "use strict";
          ne();
          function t2(s5, a2) {
            if (s5.type === "TextNode") {
              let n = s5.chars.trim();
              if (!n)
                return null;
              a2.chars = n.replace(/[\t\n\f\r ]+/g, " ");
            }
            s5.type === "AttrNode" && s5.name.toLowerCase() === "class" && delete a2.value;
          }
          t2.ignoredProperties = /* @__PURE__ */ new Set(["loc", "selfClosing"]), r2.exports = t2;
        } }), zd = te({ "vendors/html-void-elements.json"(e2, r2) {
          r2.exports = { htmlVoidElements: ["area", "base", "basefont", "bgsound", "br", "col", "command", "embed", "frame", "hr", "image", "img", "input", "isindex", "keygen", "link", "menuitem", "meta", "nextid", "param", "source", "track", "wbr"] };
        } }), Xd = te({ "src/language-handlebars/utils.js"(e2, r2) {
          "use strict";
          ne();
          var { htmlVoidElements: t2 } = zd(), s5 = lt();
          function a2(S3) {
            let N = S3.getValue(), I = S3.getParentNode(0);
            return !!(y(S3, ["ElementNode"]) && s5(I.children) === N || y(S3, ["Block"]) && s5(I.body) === N);
          }
          function n(S3) {
            return S3.toUpperCase() === S3;
          }
          function u3(S3) {
            return d(S3, ["ElementNode"]) && typeof S3.tag == "string" && !S3.tag.startsWith(":") && (n(S3.tag[0]) || S3.tag.includes("."));
          }
          var i2 = new Set(t2);
          function l(S3) {
            return i2.has(S3.tag) || S3.selfClosing === true || u3(S3) && S3.children.every((N) => p5(N));
          }
          function p5(S3) {
            return d(S3, ["TextNode"]) && !/\S/.test(S3.chars);
          }
          function d(S3, N) {
            return S3 && N.includes(S3.type);
          }
          function y(S3, N) {
            let I = S3.getParentNode(0);
            return d(I, N);
          }
          function g(S3, N) {
            let I = E(S3);
            return d(I, N);
          }
          function c(S3, N) {
            let I = _2(S3);
            return d(I, N);
          }
          function D2(S3, N) {
            var I, P, $2, f3;
            let T2 = S3.getValue(), m2 = (I = S3.getParentNode(0)) !== null && I !== void 0 ? I : {}, v = (P = ($2 = (f3 = m2.children) !== null && f3 !== void 0 ? f3 : m2.body) !== null && $2 !== void 0 ? $2 : m2.parts) !== null && P !== void 0 ? P : [], o = v.indexOf(T2);
            return o !== -1 && v[o + N];
          }
          function E(S3) {
            let N = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;
            return D2(S3, -N);
          }
          function _2(S3) {
            return D2(S3, 1);
          }
          function w(S3) {
            return d(S3, ["MustacheCommentStatement"]) && typeof S3.value == "string" && S3.value.trim() === "prettier-ignore";
          }
          function F2(S3) {
            let N = S3.getValue(), I = E(S3, 2);
            return w(N) || w(I);
          }
          r2.exports = { getNextNode: _2, getPreviousNode: E, hasPrettierIgnore: F2, isLastNodeOfSiblings: a2, isNextNodeOfSomeType: c, isNodeOfSomeType: d, isParentOfSomeType: y, isPreviousNodeOfSomeType: g, isVoid: l, isWhitespaceNode: p5 };
        } }), Kd = te({ "src/language-handlebars/printer-glimmer.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { dedent: t2, fill: s5, group: a2, hardline: n, ifBreak: u3, indent: i2, join: l, line: p5, softline: d }, utils: { getDocParts: y, replaceTextEndOfLine: g } } = qe(), { getPreferredQuote: c, isNonEmptyArray: D2 } = Ue(), { locStart: E, locEnd: _2 } = Ud(), w = Jd(), { getNextNode: F2, getPreviousNode: S3, hasPrettierIgnore: N, isLastNodeOfSiblings: I, isNextNodeOfSomeType: P, isNodeOfSomeType: $2, isParentOfSomeType: f3, isPreviousNodeOfSomeType: T2, isVoid: m2, isWhitespaceNode: v } = Xd(), o = 2;
          function h4(H, ce, X) {
            let pe = H.getValue();
            if (!pe)
              return "";
            if (N(H))
              return ce.originalText.slice(E(pe), _2(pe));
            let Ae = ce.singleQuote ? "'" : '"';
            switch (pe.type) {
              case "Block":
              case "Program":
              case "Template":
                return a2(H.map(X, "body"));
              case "ElementNode": {
                let Ce = a2(x2(H, X)), fe = ce.htmlWhitespaceSensitivity === "ignore" && P(H, ["ElementNode"]) ? d : "";
                if (m2(pe))
                  return [Ce, fe];
                let A2 = ["</", pe.tag, ">"];
                return pe.children.length === 0 ? [Ce, i2(A2), fe] : ce.htmlWhitespaceSensitivity === "ignore" ? [Ce, i2(b(H, ce, X)), n, i2(A2), fe] : [Ce, i2(a2(b(H, ce, X))), i2(A2), fe];
              }
              case "BlockStatement": {
                let Ce = H.getParentNode(1);
                return Ce && Ce.inverse && Ce.inverse.body.length === 1 && Ce.inverse.body[0] === pe && Ce.inverse.body[0].path.parts[0] === Ce.path.parts[0] ? [ie(H, X, Ce.inverse.body[0].path.parts[0]), de(H, X, ce), ue(H, X, ce)] : [j(H, X), a2([de(H, X, ce), ue(H, X, ce), ee(H, X, ce)])];
              }
              case "ElementModifierStatement":
                return a2(["{{", Re(H, X), "}}"]);
              case "MustacheStatement":
                return a2([k(pe), Re(H, X), M(pe)]);
              case "SubExpression":
                return a2(["(", ke(H, X), d, ")"]);
              case "AttrNode": {
                let Ce = pe.value.type === "TextNode";
                if (Ce && pe.value.chars === "" && E(pe.value) === _2(pe.value))
                  return pe.name;
                let A2 = Ce ? c(pe.value.chars, Ae).quote : pe.value.type === "ConcatStatement" ? c(pe.value.parts.filter((re) => re.type === "TextNode").map((re) => re.chars).join(""), Ae).quote : "", G = X("value");
                return [pe.name, "=", A2, pe.name === "class" && A2 ? a2(i2(G)) : G, A2];
              }
              case "ConcatStatement":
                return H.map(X, "parts");
              case "Hash":
                return l(p5, H.map(X, "pairs"));
              case "HashPair":
                return [pe.key, "=", X("value")];
              case "TextNode": {
                let Ce = pe.chars.replace(/{{/g, "\\{{"), fe = U(H);
                if (fe) {
                  if (fe === "class") {
                    let Ye = Ce.trim().split(/\s+/).join(" "), Se = false, Ie = false;
                    return f3(H, ["ConcatStatement"]) && (T2(H, ["MustacheStatement"]) && /^\s/.test(Ce) && (Se = true), P(H, ["MustacheStatement"]) && /\s$/.test(Ce) && Ye !== "" && (Ie = true)), [Se ? p5 : "", Ye, Ie ? p5 : ""];
                  }
                  return g(Ce);
                }
                let G = /^[\t\n\f\r ]*$/.test(Ce), re = !S3(H), ye = !F2(H);
                if (ce.htmlWhitespaceSensitivity !== "ignore") {
                  let Ye = /^[\t\n\f\r ]*/, Se = /[\t\n\f\r ]*$/, Ie = ye && f3(H, ["Template"]), Oe = re && f3(H, ["Template"]);
                  if (G) {
                    if (Oe || Ie)
                      return "";
                    let ae = [p5], nt = Z2(Ce);
                    return nt && (ae = ge(nt)), I(H) && (ae = ae.map((tt) => t2(tt))), ae;
                  }
                  let [Je] = Ce.match(Ye), [Te] = Ce.match(Se), je = [];
                  if (Je) {
                    je = [p5];
                    let ae = Z2(Je);
                    ae && (je = ge(ae)), Ce = Ce.replace(Ye, "");
                  }
                  let Me = [];
                  if (Te) {
                    if (!Ie) {
                      Me = [p5];
                      let ae = Z2(Te);
                      ae && (Me = ge(ae)), I(H) && (Me = Me.map((nt) => t2(nt)));
                    }
                    Ce = Ce.replace(Se, "");
                  }
                  return [...je, s5(Fe(Ce)), ...Me];
                }
                let Ee = Z2(Ce), Be = se(Ce), ve = De(Ce);
                if ((re || ye) && G && f3(H, ["Block", "ElementNode", "Template"]))
                  return "";
                G && Ee ? (Be = Math.min(Ee, o), ve = 0) : (P(H, ["BlockStatement", "ElementNode"]) && (ve = Math.max(ve, 1)), T2(H, ["BlockStatement", "ElementNode"]) && (Be = Math.max(Be, 1)));
                let ze = "", be = "";
                return ve === 0 && P(H, ["MustacheStatement"]) && (be = " "), Be === 0 && T2(H, ["MustacheStatement"]) && (ze = " "), re && (Be = 0, ze = ""), ye && (ve = 0, be = ""), Ce = Ce.replace(/^[\t\n\f\r ]+/g, ze).replace(/[\t\n\f\r ]+$/, be), [...ge(Be), s5(Fe(Ce)), ...ge(ve)];
              }
              case "MustacheCommentStatement": {
                let Ce = E(pe), fe = _2(pe), A2 = ce.originalText.charAt(Ce + 2) === "~", G = ce.originalText.charAt(fe - 3) === "~", re = pe.value.includes("}}") ? "--" : "";
                return ["{{", A2 ? "~" : "", "!", re, pe.value, re, G ? "~" : "", "}}"];
              }
              case "PathExpression":
                return pe.original;
              case "BooleanLiteral":
                return String(pe.value);
              case "CommentStatement":
                return ["<!--", pe.value, "-->"];
              case "StringLiteral": {
                if (we(H)) {
                  let Ce = ce.singleQuote ? '"' : "'";
                  return he2(pe.value, Ce);
                }
                return he2(pe.value, Ae);
              }
              case "NumberLiteral":
                return String(pe.value);
              case "UndefinedLiteral":
                return "undefined";
              case "NullLiteral":
                return "null";
              default:
                throw new Error("unknown glimmer type: " + JSON.stringify(pe.type));
            }
          }
          function C(H, ce) {
            return E(H) - E(ce);
          }
          function x2(H, ce) {
            let X = H.getValue(), pe = ["attributes", "modifiers", "comments"].filter((Ce) => D2(X[Ce])), Ae = pe.flatMap((Ce) => X[Ce]).sort(C);
            for (let Ce of pe)
              H.each((fe) => {
                let A2 = Ae.indexOf(fe.getValue());
                Ae.splice(A2, 1, [p5, ce()]);
              }, Ce);
            return D2(X.blockParams) && Ae.push(p5, oe(X)), ["<", X.tag, i2(Ae), B(X)];
          }
          function b(H, ce, X) {
            let Ae = H.getValue().children.every((Ce) => v(Ce));
            return ce.htmlWhitespaceSensitivity === "ignore" && Ae ? "" : H.map((Ce, fe) => {
              let A2 = X();
              return fe === 0 && ce.htmlWhitespaceSensitivity === "ignore" ? [d, A2] : A2;
            }, "children");
          }
          function B(H) {
            return m2(H) ? u3([d, "/>"], [" />", d]) : u3([d, ">"], ">");
          }
          function k(H) {
            let ce = H.escaped === false ? "{{{" : "{{", X = H.strip && H.strip.open ? "~" : "";
            return [ce, X];
          }
          function M(H) {
            let ce = H.escaped === false ? "}}}" : "}}";
            return [H.strip && H.strip.close ? "~" : "", ce];
          }
          function R(H) {
            let ce = k(H), X = H.openStrip.open ? "~" : "";
            return [ce, X, "#"];
          }
          function q2(H) {
            let ce = M(H);
            return [H.openStrip.close ? "~" : "", ce];
          }
          function J(H) {
            let ce = k(H), X = H.closeStrip.open ? "~" : "";
            return [ce, X, "/"];
          }
          function L(H) {
            let ce = M(H);
            return [H.closeStrip.close ? "~" : "", ce];
          }
          function Q(H) {
            let ce = k(H), X = H.inverseStrip.open ? "~" : "";
            return [ce, X];
          }
          function V(H) {
            let ce = M(H);
            return [H.inverseStrip.close ? "~" : "", ce];
          }
          function j(H, ce) {
            let X = H.getValue(), pe = R(X), Ae = q2(X), Ce = [Ne(H, ce)], fe = Pe(H, ce);
            if (fe && Ce.push(p5, fe), D2(X.program.blockParams)) {
              let A2 = oe(X.program);
              Ce.push(p5, A2);
            }
            return a2([pe, i2(Ce), d, Ae]);
          }
          function Y(H, ce) {
            return [ce.htmlWhitespaceSensitivity === "ignore" ? n : "", Q(H), "else", V(H)];
          }
          function ie(H, ce, X) {
            let pe = H.getValue(), Ae = [];
            D2(pe.program.blockParams) && (Ae = [p5, oe(pe.program)]);
            let Ce = H.getParentNode(1);
            return a2([Q(Ce), i2(a2([a2(["else", p5, X]), p5, Pe(H, ce)])), i2(Ae), d, V(Ce)]);
          }
          function ee(H, ce, X) {
            let pe = H.getValue();
            return X.htmlWhitespaceSensitivity === "ignore" ? [le(pe) ? d : n, J(pe), ce("path"), L(pe)] : [J(pe), ce("path"), L(pe)];
          }
          function le(H) {
            return $2(H, ["BlockStatement"]) && H.program.body.every((ce) => v(ce));
          }
          function W(H) {
            return K(H) && H.inverse.body.length === 1 && $2(H.inverse.body[0], ["BlockStatement"]) && H.inverse.body[0].path.parts[0] === H.path.parts[0];
          }
          function K(H) {
            return $2(H, ["BlockStatement"]) && H.inverse;
          }
          function de(H, ce, X) {
            let pe = H.getValue();
            if (le(pe))
              return "";
            let Ae = ce("program");
            return X.htmlWhitespaceSensitivity === "ignore" ? i2([n, Ae]) : i2(Ae);
          }
          function ue(H, ce, X) {
            let pe = H.getValue(), Ae = ce("inverse"), Ce = X.htmlWhitespaceSensitivity === "ignore" ? [n, Ae] : Ae;
            return W(pe) ? Ce : K(pe) ? [Y(pe, X), i2(Ce)] : "";
          }
          function Fe(H) {
            return y(l(p5, z2(H)));
          }
          function z2(H) {
            return H.split(/[\t\n\f\r ]+/);
          }
          function U(H) {
            for (let ce = 0; ce < 2; ce++) {
              let X = H.getParentNode(ce);
              if (X && X.type === "AttrNode")
                return X.name.toLowerCase();
            }
          }
          function Z2(H) {
            return H = typeof H == "string" ? H : "", H.split(`
`).length - 1;
          }
          function se(H) {
            H = typeof H == "string" ? H : "";
            let ce = (H.match(/^([^\S\n\r]*[\n\r])+/g) || [])[0] || "";
            return Z2(ce);
          }
          function De(H) {
            H = typeof H == "string" ? H : "";
            let ce = (H.match(/([\n\r][^\S\n\r]*)+$/g) || [])[0] || "";
            return Z2(ce);
          }
          function ge() {
            let H = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
            return Array.from({ length: Math.min(H, o) }).fill(n);
          }
          function he2(H, ce) {
            let { quote: X, regex: pe } = c(H, ce);
            return [X, H.replace(pe, `\\${X}`), X];
          }
          function we(H) {
            let ce = 0, X = H.getParentNode(ce);
            for (; X && $2(X, ["SubExpression"]); )
              ce++, X = H.getParentNode(ce);
            return !!(X && $2(H.getParentNode(ce + 1), ["ConcatStatement"]) && $2(H.getParentNode(ce + 2), ["AttrNode"]));
          }
          function ke(H, ce) {
            let X = Ne(H, ce), pe = Pe(H, ce);
            return pe ? i2([X, p5, a2(pe)]) : X;
          }
          function Re(H, ce) {
            let X = Ne(H, ce), pe = Pe(H, ce);
            return pe ? [i2([X, p5, pe]), d] : X;
          }
          function Ne(H, ce) {
            return ce("path");
          }
          function Pe(H, ce) {
            let X = H.getValue(), pe = [];
            if (X.params.length > 0) {
              let Ae = H.map(ce, "params");
              pe.push(...Ae);
            }
            if (X.hash && X.hash.pairs.length > 0) {
              let Ae = ce("hash");
              pe.push(Ae);
            }
            return pe.length === 0 ? "" : l(p5, pe);
          }
          function oe(H) {
            return ["as |", H.blockParams.join(" "), "|"];
          }
          r2.exports = { print: h4, massageAstNode: w };
        } }), Yd = te({ "src/language-handlebars/parsers.js"() {
          ne();
        } }), Qd = te({ "node_modules/linguist-languages/data/Handlebars.json"(e2, r2) {
          r2.exports = { name: "Handlebars", type: "markup", color: "#f7931e", aliases: ["hbs", "htmlbars"], extensions: [".handlebars", ".hbs"], tmScope: "text.html.handlebars", aceMode: "handlebars", languageId: 155 };
        } }), Zd = te({ "src/language-handlebars/index.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = _t(), s5 = Kd(), a2 = Yd(), n = [t2(Qd(), () => ({ since: "2.3.0", parsers: ["glimmer"], vscodeLanguageIds: ["handlebars"] }))], u3 = { glimmer: s5 };
          r2.exports = { languages: n, printers: u3, parsers: a2 };
        } }), eg = te({ "src/language-graphql/pragma.js"(e2, r2) {
          "use strict";
          ne();
          function t2(a2) {
            return /^\s*#[^\S\n]*@(?:format|prettier)\s*(?:\n|$)/.test(a2);
          }
          function s5(a2) {
            return `# @format

` + a2;
          }
          r2.exports = { hasPragma: t2, insertPragma: s5 };
        } }), tg = te({ "src/language-graphql/loc.js"(e2, r2) {
          "use strict";
          ne();
          function t2(a2) {
            return typeof a2.start == "number" ? a2.start : a2.loc && a2.loc.start;
          }
          function s5(a2) {
            return typeof a2.end == "number" ? a2.end : a2.loc && a2.loc.end;
          }
          r2.exports = { locStart: t2, locEnd: s5 };
        } }), rg = te({ "src/language-graphql/printer-graphql.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { join: t2, hardline: s5, line: a2, softline: n, group: u3, indent: i2, ifBreak: l } } = qe(), { isNextLineEmpty: p5, isNonEmptyArray: d } = Ue(), { insertPragma: y } = eg(), { locStart: g, locEnd: c } = tg();
          function D2(P, $2, f3) {
            let T2 = P.getValue();
            if (!T2)
              return "";
            if (typeof T2 == "string")
              return T2;
            switch (T2.kind) {
              case "Document": {
                let m2 = [];
                return P.each((v, o, h4) => {
                  m2.push(f3()), o !== h4.length - 1 && (m2.push(s5), p5($2.originalText, v.getValue(), c) && m2.push(s5));
                }, "definitions"), [...m2, s5];
              }
              case "OperationDefinition": {
                let m2 = $2.originalText[g(T2)] !== "{", v = Boolean(T2.name);
                return [m2 ? T2.operation : "", m2 && v ? [" ", f3("name")] : "", m2 && !v && d(T2.variableDefinitions) ? " " : "", d(T2.variableDefinitions) ? u3(["(", i2([n, t2([l("", ", "), n], P.map(f3, "variableDefinitions"))]), n, ")"]) : "", E(P, f3, T2), T2.selectionSet ? !m2 && !v ? "" : " " : "", f3("selectionSet")];
              }
              case "FragmentDefinition":
                return ["fragment ", f3("name"), d(T2.variableDefinitions) ? u3(["(", i2([n, t2([l("", ", "), n], P.map(f3, "variableDefinitions"))]), n, ")"]) : "", " on ", f3("typeCondition"), E(P, f3, T2), " ", f3("selectionSet")];
              case "SelectionSet":
                return ["{", i2([s5, t2(s5, _2(P, $2, f3, "selections"))]), s5, "}"];
              case "Field":
                return u3([T2.alias ? [f3("alias"), ": "] : "", f3("name"), T2.arguments.length > 0 ? u3(["(", i2([n, t2([l("", ", "), n], _2(P, $2, f3, "arguments"))]), n, ")"]) : "", E(P, f3, T2), T2.selectionSet ? " " : "", f3("selectionSet")]);
              case "Name":
                return T2.value;
              case "StringValue": {
                if (T2.block) {
                  let m2 = T2.value.replace(/"""/g, "\\$&").split(`
`);
                  return m2.length === 1 && (m2[0] = m2[0].trim()), m2.every((v) => v === "") && (m2.length = 0), t2(s5, ['"""', ...m2, '"""']);
                }
                return ['"', T2.value.replace(/["\\]/g, "\\$&").replace(/\n/g, "\\n"), '"'];
              }
              case "IntValue":
              case "FloatValue":
              case "EnumValue":
                return T2.value;
              case "BooleanValue":
                return T2.value ? "true" : "false";
              case "NullValue":
                return "null";
              case "Variable":
                return ["$", f3("name")];
              case "ListValue":
                return u3(["[", i2([n, t2([l("", ", "), n], P.map(f3, "values"))]), n, "]"]);
              case "ObjectValue":
                return u3(["{", $2.bracketSpacing && T2.fields.length > 0 ? " " : "", i2([n, t2([l("", ", "), n], P.map(f3, "fields"))]), n, l("", $2.bracketSpacing && T2.fields.length > 0 ? " " : ""), "}"]);
              case "ObjectField":
              case "Argument":
                return [f3("name"), ": ", f3("value")];
              case "Directive":
                return ["@", f3("name"), T2.arguments.length > 0 ? u3(["(", i2([n, t2([l("", ", "), n], _2(P, $2, f3, "arguments"))]), n, ")"]) : ""];
              case "NamedType":
                return f3("name");
              case "VariableDefinition":
                return [f3("variable"), ": ", f3("type"), T2.defaultValue ? [" = ", f3("defaultValue")] : "", E(P, f3, T2)];
              case "ObjectTypeExtension":
              case "ObjectTypeDefinition":
                return [f3("description"), T2.description ? s5 : "", T2.kind === "ObjectTypeExtension" ? "extend " : "", "type ", f3("name"), T2.interfaces.length > 0 ? [" implements ", ...S3(P, $2, f3)] : "", E(P, f3, T2), T2.fields.length > 0 ? [" {", i2([s5, t2(s5, _2(P, $2, f3, "fields"))]), s5, "}"] : ""];
              case "FieldDefinition":
                return [f3("description"), T2.description ? s5 : "", f3("name"), T2.arguments.length > 0 ? u3(["(", i2([n, t2([l("", ", "), n], _2(P, $2, f3, "arguments"))]), n, ")"]) : "", ": ", f3("type"), E(P, f3, T2)];
              case "DirectiveDefinition":
                return [f3("description"), T2.description ? s5 : "", "directive ", "@", f3("name"), T2.arguments.length > 0 ? u3(["(", i2([n, t2([l("", ", "), n], _2(P, $2, f3, "arguments"))]), n, ")"]) : "", T2.repeatable ? " repeatable" : "", " on ", t2(" | ", P.map(f3, "locations"))];
              case "EnumTypeExtension":
              case "EnumTypeDefinition":
                return [f3("description"), T2.description ? s5 : "", T2.kind === "EnumTypeExtension" ? "extend " : "", "enum ", f3("name"), E(P, f3, T2), T2.values.length > 0 ? [" {", i2([s5, t2(s5, _2(P, $2, f3, "values"))]), s5, "}"] : ""];
              case "EnumValueDefinition":
                return [f3("description"), T2.description ? s5 : "", f3("name"), E(P, f3, T2)];
              case "InputValueDefinition":
                return [f3("description"), T2.description ? T2.description.block ? s5 : a2 : "", f3("name"), ": ", f3("type"), T2.defaultValue ? [" = ", f3("defaultValue")] : "", E(P, f3, T2)];
              case "InputObjectTypeExtension":
              case "InputObjectTypeDefinition":
                return [f3("description"), T2.description ? s5 : "", T2.kind === "InputObjectTypeExtension" ? "extend " : "", "input ", f3("name"), E(P, f3, T2), T2.fields.length > 0 ? [" {", i2([s5, t2(s5, _2(P, $2, f3, "fields"))]), s5, "}"] : ""];
              case "SchemaExtension":
                return ["extend schema", E(P, f3, T2), ...T2.operationTypes.length > 0 ? [" {", i2([s5, t2(s5, _2(P, $2, f3, "operationTypes"))]), s5, "}"] : []];
              case "SchemaDefinition":
                return [f3("description"), T2.description ? s5 : "", "schema", E(P, f3, T2), " {", T2.operationTypes.length > 0 ? i2([s5, t2(s5, _2(P, $2, f3, "operationTypes"))]) : "", s5, "}"];
              case "OperationTypeDefinition":
                return [f3("operation"), ": ", f3("type")];
              case "InterfaceTypeExtension":
              case "InterfaceTypeDefinition":
                return [f3("description"), T2.description ? s5 : "", T2.kind === "InterfaceTypeExtension" ? "extend " : "", "interface ", f3("name"), T2.interfaces.length > 0 ? [" implements ", ...S3(P, $2, f3)] : "", E(P, f3, T2), T2.fields.length > 0 ? [" {", i2([s5, t2(s5, _2(P, $2, f3, "fields"))]), s5, "}"] : ""];
              case "FragmentSpread":
                return ["...", f3("name"), E(P, f3, T2)];
              case "InlineFragment":
                return ["...", T2.typeCondition ? [" on ", f3("typeCondition")] : "", E(P, f3, T2), " ", f3("selectionSet")];
              case "UnionTypeExtension":
              case "UnionTypeDefinition":
                return u3([f3("description"), T2.description ? s5 : "", u3([T2.kind === "UnionTypeExtension" ? "extend " : "", "union ", f3("name"), E(P, f3, T2), T2.types.length > 0 ? [" =", l("", " "), i2([l([a2, "  "]), t2([a2, "| "], P.map(f3, "types"))])] : ""])]);
              case "ScalarTypeExtension":
              case "ScalarTypeDefinition":
                return [f3("description"), T2.description ? s5 : "", T2.kind === "ScalarTypeExtension" ? "extend " : "", "scalar ", f3("name"), E(P, f3, T2)];
              case "NonNullType":
                return [f3("type"), "!"];
              case "ListType":
                return ["[", f3("type"), "]"];
              default:
                throw new Error("unknown graphql type: " + JSON.stringify(T2.kind));
            }
          }
          function E(P, $2, f3) {
            if (f3.directives.length === 0)
              return "";
            let T2 = t2(a2, P.map($2, "directives"));
            return f3.kind === "FragmentDefinition" || f3.kind === "OperationDefinition" ? u3([a2, T2]) : [" ", u3(i2([n, T2]))];
          }
          function _2(P, $2, f3, T2) {
            return P.map((m2, v, o) => {
              let h4 = f3();
              return v < o.length - 1 && p5($2.originalText, m2.getValue(), c) ? [h4, s5] : h4;
            }, T2);
          }
          function w(P) {
            return P.kind && P.kind !== "Comment";
          }
          function F2(P) {
            let $2 = P.getValue();
            if ($2.kind === "Comment")
              return "#" + $2.value.trimEnd();
            throw new Error("Not a comment: " + JSON.stringify($2));
          }
          function S3(P, $2, f3) {
            let T2 = P.getNode(), m2 = [], { interfaces: v } = T2, o = P.map((h4) => f3(h4), "interfaces");
            for (let h4 = 0; h4 < v.length; h4++) {
              let C = v[h4];
              m2.push(o[h4]);
              let x2 = v[h4 + 1];
              if (x2) {
                let b = $2.originalText.slice(C.loc.end, x2.loc.start), B = b.includes("#"), k = b.replace(/#.*/g, "").trim();
                m2.push(k === "," ? "," : " &", B ? a2 : " ");
              }
            }
            return m2;
          }
          function N(P, $2) {
            P.kind === "StringValue" && P.block && !P.value.includes(`
`) && ($2.value = $2.value.trim());
          }
          N.ignoredProperties = /* @__PURE__ */ new Set(["loc", "comments"]);
          function I(P) {
            var $2;
            let f3 = P.getValue();
            return f3 == null || ($2 = f3.comments) === null || $2 === void 0 ? void 0 : $2.some((T2) => T2.value.trim() === "prettier-ignore");
          }
          r2.exports = { print: D2, massageAstNode: N, hasPrettierIgnore: I, insertPragma: y, printComment: F2, canAttachComment: w };
        } }), ng = te({ "src/language-graphql/options.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Mt();
          r2.exports = { bracketSpacing: t2.bracketSpacing };
        } }), ug = te({ "src/language-graphql/parsers.js"() {
          ne();
        } }), sg = te({ "node_modules/linguist-languages/data/GraphQL.json"(e2, r2) {
          r2.exports = { name: "GraphQL", type: "data", color: "#e10098", extensions: [".graphql", ".gql", ".graphqls"], tmScope: "source.graphql", aceMode: "text", languageId: 139 };
        } }), ig = te({ "src/language-graphql/index.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = _t(), s5 = rg(), a2 = ng(), n = ug(), u3 = [t2(sg(), () => ({ since: "1.5.0", parsers: ["graphql"], vscodeLanguageIds: ["graphql"] }))], i2 = { graphql: s5 };
          r2.exports = { languages: u3, options: a2, printers: i2, parsers: n };
        } }), Po = te({ "node_modules/collapse-white-space/index.js"(e2, r2) {
          "use strict";
          ne(), r2.exports = t2;
          function t2(s5) {
            return String(s5).replace(/\s+/g, " ");
          }
        } }), Io = te({ "src/language-markdown/loc.js"(e2, r2) {
          "use strict";
          ne();
          function t2(a2) {
            return a2.position.start.offset;
          }
          function s5(a2) {
            return a2.position.end.offset;
          }
          r2.exports = { locStart: t2, locEnd: s5 };
        } }), ag = te({ "src/language-markdown/constants.evaluate.js"(e2, r2) {
          r2.exports = { cjkPattern: "(?:[\\u02ea-\\u02eb\\u1100-\\u11ff\\u2e80-\\u2e99\\u2e9b-\\u2ef3\\u2f00-\\u2fd5\\u2ff0-\\u303f\\u3041-\\u3096\\u3099-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u3190-\\u3191\\u3196-\\u31ba\\u31c0-\\u31e3\\u31f0-\\u321e\\u322a-\\u3247\\u3260-\\u327e\\u328a-\\u32b0\\u32c0-\\u32cb\\u32d0-\\u3370\\u337b-\\u337f\\u33e0-\\u33fe\\u3400-\\u4db5\\u4e00-\\u9fef\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufe10-\\ufe1f\\ufe30-\\ufe6f\\uff00-\\uffef]|[\\ud840-\\ud868\\ud86a-\\ud86c\\ud86f-\\ud872\\ud874-\\ud879][\\udc00-\\udfff]|\\ud82c[\\udc00-\\udd1e\\udd50-\\udd52\\udd64-\\udd67]|\\ud83c[\\ude00\\ude50-\\ude51]|\\ud869[\\udc00-\\uded6\\udf00-\\udfff]|\\ud86d[\\udc00-\\udf34\\udf40-\\udfff]|\\ud86e[\\udc00-\\udc1d\\udc20-\\udfff]|\\ud873[\\udc00-\\udea1\\udeb0-\\udfff]|\\ud87a[\\udc00-\\udfe0]|\\ud87e[\\udc00-\\ude1d])(?:[\\ufe00-\\ufe0f]|\\udb40[\\udd00-\\uddef])?", kPattern: "[\\u1100-\\u11ff\\u3001-\\u3003\\u3008-\\u3011\\u3013-\\u301f\\u302e-\\u3030\\u3037\\u30fb\\u3131-\\u318e\\u3200-\\u321e\\u3260-\\u327e\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\ufe45-\\ufe46\\uff61-\\uff65\\uffa0-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc]", punctuationPattern: "[\\u0021-\\u002f\\u003a-\\u0040\\u005b-\\u0060\\u007b-\\u007e\\u00a1\\u00a7\\u00ab\\u00b6-\\u00b7\\u00bb\\u00bf\\u037e\\u0387\\u055a-\\u055f\\u0589-\\u058a\\u05be\\u05c0\\u05c3\\u05c6\\u05f3-\\u05f4\\u0609-\\u060a\\u060c-\\u060d\\u061b\\u061e-\\u061f\\u066a-\\u066d\\u06d4\\u0700-\\u070d\\u07f7-\\u07f9\\u0830-\\u083e\\u085e\\u0964-\\u0965\\u0970\\u09fd\\u0a76\\u0af0\\u0c77\\u0c84\\u0df4\\u0e4f\\u0e5a-\\u0e5b\\u0f04-\\u0f12\\u0f14\\u0f3a-\\u0f3d\\u0f85\\u0fd0-\\u0fd4\\u0fd9-\\u0fda\\u104a-\\u104f\\u10fb\\u1360-\\u1368\\u1400\\u166e\\u169b-\\u169c\\u16eb-\\u16ed\\u1735-\\u1736\\u17d4-\\u17d6\\u17d8-\\u17da\\u1800-\\u180a\\u1944-\\u1945\\u1a1e-\\u1a1f\\u1aa0-\\u1aa6\\u1aa8-\\u1aad\\u1b5a-\\u1b60\\u1bfc-\\u1bff\\u1c3b-\\u1c3f\\u1c7e-\\u1c7f\\u1cc0-\\u1cc7\\u1cd3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205e\\u207d-\\u207e\\u208d-\\u208e\\u2308-\\u230b\\u2329-\\u232a\\u2768-\\u2775\\u27c5-\\u27c6\\u27e6-\\u27ef\\u2983-\\u2998\\u29d8-\\u29db\\u29fc-\\u29fd\\u2cf9-\\u2cfc\\u2cfe-\\u2cff\\u2d70\\u2e00-\\u2e2e\\u2e30-\\u2e4f\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301f\\u3030\\u303d\\u30a0\\u30fb\\ua4fe-\\ua4ff\\ua60d-\\ua60f\\ua673\\ua67e\\ua6f2-\\ua6f7\\ua874-\\ua877\\ua8ce-\\ua8cf\\ua8f8-\\ua8fa\\ua8fc\\ua92e-\\ua92f\\ua95f\\ua9c1-\\ua9cd\\ua9de-\\ua9df\\uaa5c-\\uaa5f\\uaade-\\uaadf\\uaaf0-\\uaaf1\\uabeb\\ufd3e-\\ufd3f\\ufe10-\\ufe19\\ufe30-\\ufe52\\ufe54-\\ufe61\\ufe63\\ufe68\\ufe6a-\\ufe6b\\uff01-\\uff03\\uff05-\\uff0a\\uff0c-\\uff0f\\uff1a-\\uff1b\\uff1f-\\uff20\\uff3b-\\uff3d\\uff3f\\uff5b\\uff5d\\uff5f-\\uff65]|\\ud800[\\udd00-\\udd02\\udf9f\\udfd0]|\\ud801[\\udd6f]|\\ud802[\\udc57\\udd1f\\udd3f\\ude50-\\ude58\\ude7f\\udef0-\\udef6\\udf39-\\udf3f\\udf99-\\udf9c]|\\ud803[\\udf55-\\udf59]|\\ud804[\\udc47-\\udc4d\\udcbb-\\udcbc\\udcbe-\\udcc1\\udd40-\\udd43\\udd74-\\udd75\\uddc5-\\uddc8\\uddcd\\udddb\\udddd-\\udddf\\ude38-\\ude3d\\udea9]|\\ud805[\\udc4b-\\udc4f\\udc5b\\udc5d\\udcc6\\uddc1-\\uddd7\\ude41-\\ude43\\ude60-\\ude6c\\udf3c-\\udf3e]|\\ud806[\\udc3b\\udde2\\ude3f-\\ude46\\ude9a-\\ude9c\\ude9e-\\udea2]|\\ud807[\\udc41-\\udc45\\udc70-\\udc71\\udef7-\\udef8\\udfff]|\\ud809[\\udc70-\\udc74]|\\ud81a[\\ude6e-\\ude6f\\udef5\\udf37-\\udf3b\\udf44]|\\ud81b[\\ude97-\\ude9a\\udfe2]|\\ud82f[\\udc9f]|\\ud836[\\ude87-\\ude8b]|\\ud83a[\\udd5e-\\udd5f]" };
        } }), iu = te({ "src/language-markdown/utils.js"(e2, r2) {
          "use strict";
          ne();
          var { getLast: t2 } = Ue(), { locStart: s5, locEnd: a2 } = Io(), { cjkPattern: n, kPattern: u3, punctuationPattern: i2 } = ag(), l = ["liquidNode", "inlineCode", "emphasis", "esComment", "strong", "delete", "wikiLink", "link", "linkReference", "image", "imageReference", "footnote", "footnoteReference", "sentence", "whitespace", "word", "break", "inlineMath"], p5 = [...l, "tableCell", "paragraph", "heading"], d = new RegExp(u3), y = new RegExp(i2);
          function g(F2, S3) {
            let N = "non-cjk", I = "cj-letter", P = "k-letter", $2 = "cjk-punctuation", f3 = [], T2 = (S3.proseWrap === "preserve" ? F2 : F2.replace(new RegExp(`(${n})
(${n})`, "g"), "$1$2")).split(/([\t\n ]+)/);
            for (let [v, o] of T2.entries()) {
              if (v % 2 === 1) {
                f3.push({ type: "whitespace", value: /\n/.test(o) ? `
` : " " });
                continue;
              }
              if ((v === 0 || v === T2.length - 1) && o === "")
                continue;
              let h4 = o.split(new RegExp(`(${n})`));
              for (let [C, x2] of h4.entries())
                if (!((C === 0 || C === h4.length - 1) && x2 === "")) {
                  if (C % 2 === 0) {
                    x2 !== "" && m2({ type: "word", value: x2, kind: N, hasLeadingPunctuation: y.test(x2[0]), hasTrailingPunctuation: y.test(t2(x2)) });
                    continue;
                  }
                  m2(y.test(x2) ? { type: "word", value: x2, kind: $2, hasLeadingPunctuation: true, hasTrailingPunctuation: true } : { type: "word", value: x2, kind: d.test(x2) ? P : I, hasLeadingPunctuation: false, hasTrailingPunctuation: false });
                }
            }
            return f3;
            function m2(v) {
              let o = t2(f3);
              o && o.type === "word" && (o.kind === N && v.kind === I && !o.hasTrailingPunctuation || o.kind === I && v.kind === N && !v.hasLeadingPunctuation ? f3.push({ type: "whitespace", value: " " }) : !h4(N, $2) && ![o.value, v.value].some((C) => /\u3000/.test(C)) && f3.push({ type: "whitespace", value: "" })), f3.push(v);
              function h4(C, x2) {
                return o.kind === C && v.kind === x2 || o.kind === x2 && v.kind === C;
              }
            }
          }
          function c(F2, S3) {
            let [, N, I, P] = S3.slice(F2.position.start.offset, F2.position.end.offset).match(/^\s*(\d+)(\.|\))(\s*)/);
            return { numberText: N, marker: I, leadingSpaces: P };
          }
          function D2(F2, S3) {
            if (!F2.ordered || F2.children.length < 2)
              return false;
            let N = Number(c(F2.children[0], S3.originalText).numberText), I = Number(c(F2.children[1], S3.originalText).numberText);
            if (N === 0 && F2.children.length > 2) {
              let P = Number(c(F2.children[2], S3.originalText).numberText);
              return I === 1 && P === 1;
            }
            return I === 1;
          }
          function E(F2, S3) {
            let { value: N } = F2;
            return F2.position.end.offset === S3.length && N.endsWith(`
`) && S3.endsWith(`
`) ? N.slice(0, -1) : N;
          }
          function _2(F2, S3) {
            return (function N(I, P, $2) {
              let f3 = Object.assign({}, S3(I, P, $2));
              return f3.children && (f3.children = f3.children.map((T2, m2) => N(T2, m2, [f3, ...$2]))), f3;
            })(F2, null, []);
          }
          function w(F2) {
            if ((F2 == null ? void 0 : F2.type) !== "link" || F2.children.length !== 1)
              return false;
            let [S3] = F2.children;
            return s5(F2) === s5(S3) && a2(F2) === a2(S3);
          }
          r2.exports = { mapAst: _2, splitText: g, punctuationPattern: i2, getFencedCodeBlockValue: E, getOrderedListItemInfo: c, hasGitDiffFriendlyOrderedList: D2, INLINE_NODE_TYPES: l, INLINE_NODE_WRAPPER_TYPES: p5, isAutolink: w };
        } }), og = te({ "src/language-markdown/embed.js"(e2, r2) {
          "use strict";
          ne();
          var { inferParserByLanguage: t2, getMaxContinuousCount: s5 } = Ue(), { builders: { hardline: a2, markAsRoot: n }, utils: { replaceEndOfLine: u3 } } = qe(), i2 = su(), { getFencedCodeBlockValue: l } = iu();
          function p5(d, y, g, c) {
            let D2 = d.getValue();
            if (D2.type === "code" && D2.lang !== null) {
              let E = t2(D2.lang, c);
              if (E) {
                let _2 = c.__inJsTemplate ? "~" : "`", w = _2.repeat(Math.max(3, s5(D2.value, _2) + 1)), F2 = { parser: E };
                D2.lang === "tsx" && (F2.filepath = "dummy.tsx");
                let S3 = g(l(D2, c.originalText), F2, { stripTrailingHardline: true });
                return n([w, D2.lang, D2.meta ? " " + D2.meta : "", a2, u3(S3), a2, w]);
              }
            }
            switch (D2.type) {
              case "front-matter":
                return i2(D2, g);
              case "importExport":
                return [g(D2.value, { parser: "babel" }, { stripTrailingHardline: true }), a2];
              case "jsx":
                return g(`<$>${D2.value}</$>`, { parser: "__js_expression", rootMarker: "mdx" }, { stripTrailingHardline: true });
            }
            return null;
          }
          r2.exports = p5;
        } }), ko = te({ "src/language-markdown/pragma.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = _o(), s5 = ["format", "prettier"];
          function a2(n) {
            let u3 = `@(${s5.join("|")})`, i2 = new RegExp([`<!--\\s*${u3}\\s*-->`, `{\\s*\\/\\*\\s*${u3}\\s*\\*\\/\\s*}`, `<!--.*\r?
[\\s\\S]*(^|
)[^\\S
]*${u3}[^\\S
]*($|
)[\\s\\S]*
.*-->`].join("|"), "m"), l = n.match(i2);
            return (l == null ? void 0 : l.index) === 0;
          }
          r2.exports = { startWithPragma: a2, hasPragma: (n) => a2(t2(n).content.trimStart()), insertPragma: (n) => {
            let u3 = t2(n), i2 = `<!-- @${s5[0]} -->`;
            return u3.frontMatter ? `${u3.frontMatter.raw}

${i2}

${u3.content}` : `${i2}

${u3.content}`;
          } };
        } }), lg = te({ "src/language-markdown/print-preprocess.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = lt(), { getOrderedListItemInfo: s5, mapAst: a2, splitText: n } = iu(), u3 = /^.$/su;
          function i2(w, F2) {
            return w = d(w, F2), w = c(w), w = p5(w, F2), w = E(w, F2), w = _2(w, F2), w = D2(w, F2), w = l(w), w = y(w), w;
          }
          function l(w) {
            return a2(w, (F2) => F2.type !== "import" && F2.type !== "export" ? F2 : Object.assign(Object.assign({}, F2), {}, { type: "importExport" }));
          }
          function p5(w, F2) {
            return a2(w, (S3) => S3.type !== "inlineCode" || F2.proseWrap === "preserve" ? S3 : Object.assign(Object.assign({}, S3), {}, { value: S3.value.replace(/\s+/g, " ") }));
          }
          function d(w, F2) {
            return a2(w, (S3) => S3.type !== "text" || S3.value === "*" || S3.value === "_" || !u3.test(S3.value) || S3.position.end.offset - S3.position.start.offset === S3.value.length ? S3 : Object.assign(Object.assign({}, S3), {}, { value: F2.originalText.slice(S3.position.start.offset, S3.position.end.offset) }));
          }
          function y(w) {
            return g(w, (F2, S3) => F2.type === "importExport" && S3.type === "importExport", (F2, S3) => ({ type: "importExport", value: F2.value + `

` + S3.value, position: { start: F2.position.start, end: S3.position.end } }));
          }
          function g(w, F2, S3) {
            return a2(w, (N) => {
              if (!N.children)
                return N;
              let I = N.children.reduce((P, $2) => {
                let f3 = t2(P);
                return f3 && F2(f3, $2) ? P.splice(-1, 1, S3(f3, $2)) : P.push($2), P;
              }, []);
              return Object.assign(Object.assign({}, N), {}, { children: I });
            });
          }
          function c(w) {
            return g(w, (F2, S3) => F2.type === "text" && S3.type === "text", (F2, S3) => ({ type: "text", value: F2.value + S3.value, position: { start: F2.position.start, end: S3.position.end } }));
          }
          function D2(w, F2) {
            return a2(w, (S3, N, I) => {
              let [P] = I;
              if (S3.type !== "text")
                return S3;
              let { value: $2 } = S3;
              return P.type === "paragraph" && (N === 0 && ($2 = $2.trimStart()), N === P.children.length - 1 && ($2 = $2.trimEnd())), { type: "sentence", position: S3.position, children: n($2, F2) };
            });
          }
          function E(w, F2) {
            return a2(w, (S3, N, I) => {
              if (S3.type === "code") {
                let P = /^\n?(?: {4,}|\t)/.test(F2.originalText.slice(S3.position.start.offset, S3.position.end.offset));
                if (S3.isIndented = P, P)
                  for (let $2 = 0; $2 < I.length; $2++) {
                    let f3 = I[$2];
                    if (f3.hasIndentedCodeblock)
                      break;
                    f3.type === "list" && (f3.hasIndentedCodeblock = true);
                  }
              }
              return S3;
            });
          }
          function _2(w, F2) {
            return a2(w, (I, P, $2) => {
              if (I.type === "list" && I.children.length > 0) {
                for (let f3 = 0; f3 < $2.length; f3++) {
                  let T2 = $2[f3];
                  if (T2.type === "list" && !T2.isAligned)
                    return I.isAligned = false, I;
                }
                I.isAligned = N(I);
              }
              return I;
            });
            function S3(I) {
              return I.children.length === 0 ? -1 : I.children[0].position.start.column - 1;
            }
            function N(I) {
              if (!I.ordered)
                return true;
              let [P, $2] = I.children;
              if (s5(P, F2.originalText).leadingSpaces.length > 1)
                return true;
              let T2 = S3(P);
              if (T2 === -1)
                return false;
              if (I.children.length === 1)
                return T2 % F2.tabWidth === 0;
              let m2 = S3($2);
              return T2 !== m2 ? false : T2 % F2.tabWidth === 0 ? true : s5($2, F2.originalText).leadingSpaces.length > 1;
            }
          }
          r2.exports = i2;
        } }), cg = te({ "src/language-markdown/clean.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Po(), { isFrontMatterNode: s5 } = Ue(), { startWithPragma: a2 } = ko(), n = /* @__PURE__ */ new Set(["position", "raw"]);
          function u3(i2, l, p5) {
            if ((i2.type === "front-matter" || i2.type === "code" || i2.type === "yaml" || i2.type === "import" || i2.type === "export" || i2.type === "jsx") && delete l.value, i2.type === "list" && delete l.isAligned, (i2.type === "list" || i2.type === "listItem") && (delete l.spread, delete l.loose), i2.type === "text" || (i2.type === "inlineCode" && (l.value = i2.value.replace(/[\t\n ]+/g, " ")), i2.type === "wikiLink" && (l.value = i2.value.trim().replace(/[\t\n]+/g, " ")), (i2.type === "definition" || i2.type === "linkReference" || i2.type === "imageReference") && (l.label = t2(i2.label)), (i2.type === "definition" || i2.type === "link" || i2.type === "image") && i2.title && (l.title = i2.title.replace(/\\(["')])/g, "$1")), p5 && p5.type === "root" && p5.children.length > 0 && (p5.children[0] === i2 || s5(p5.children[0]) && p5.children[1] === i2) && i2.type === "html" && a2(i2.value)))
              return null;
          }
          u3.ignoredProperties = n, r2.exports = u3;
        } }), pg = te({ "src/language-markdown/printer-markdown.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Po(), { getLast: s5, getMinNotPresentContinuousCount: a2, getMaxContinuousCount: n, getStringWidth: u3, isNonEmptyArray: i2 } = Ue(), { builders: { breakParent: l, join: p5, line: d, literalline: y, markAsRoot: g, hardline: c, softline: D2, ifBreak: E, fill: _2, align: w, indent: F2, group: S3, hardlineWithoutBreakParent: N }, utils: { normalizeDoc: I, replaceTextEndOfLine: P }, printer: { printDocToString: $2 } } = qe(), f3 = og(), { insertPragma: T2 } = ko(), { locStart: m2, locEnd: v } = Io(), o = lg(), h4 = cg(), { getFencedCodeBlockValue: C, hasGitDiffFriendlyOrderedList: x2, splitText: b, punctuationPattern: B, INLINE_NODE_TYPES: k, INLINE_NODE_WRAPPER_TYPES: M, isAutolink: R } = iu(), q2 = /* @__PURE__ */ new Set(["importExport"]), J = ["heading", "tableCell", "link", "wikiLink"], L = /* @__PURE__ */ new Set(["listItem", "definition", "footnoteDefinition"]);
          function Q(oe, H, ce) {
            let X = oe.getValue();
            if (ge(oe))
              return b(H.originalText.slice(X.position.start.offset, X.position.end.offset), H).map((pe) => pe.type === "word" ? pe.value : pe.value === "" ? "" : W(oe, pe.value, H));
            switch (X.type) {
              case "front-matter":
                return H.originalText.slice(X.position.start.offset, X.position.end.offset);
              case "root":
                return X.children.length === 0 ? "" : [I(de(oe, H, ce)), q2.has(z2(X).type) ? "" : c];
              case "paragraph":
                return ue(oe, H, ce, { postprocessor: _2 });
              case "sentence":
                return ue(oe, H, ce);
              case "word": {
                let pe = X.value.replace(/\*/g, "\\$&").replace(new RegExp([`(^|${B})(_+)`, `(_+)(${B}|$)`].join("|"), "g"), (fe, A2, G, re, ye) => (G ? `${A2}${G}` : `${re}${ye}`).replace(/_/g, "\\_")), Ae = (fe, A2, G) => fe.type === "sentence" && G === 0, Ce = (fe, A2, G) => R(fe.children[G - 1]);
                return pe !== X.value && (oe.match(void 0, Ae, Ce) || oe.match(void 0, Ae, (fe, A2, G) => fe.type === "emphasis" && G === 0, Ce)) && (pe = pe.replace(/^(\\?[*_])+/, (fe) => fe.replace(/\\/g, ""))), pe;
              }
              case "whitespace": {
                let pe = oe.getParentNode(), Ae = pe.children.indexOf(X), Ce = pe.children[Ae + 1], fe = Ce && /^>|^(?:[*+-]|#{1,6}|\d+[).])$/.test(Ce.value) ? "never" : H.proseWrap;
                return W(oe, X.value, { proseWrap: fe });
              }
              case "emphasis": {
                let pe;
                if (R(X.children[0]))
                  pe = H.originalText[X.position.start.offset];
                else {
                  let Ae = oe.getParentNode(), Ce = Ae.children.indexOf(X), fe = Ae.children[Ce - 1], A2 = Ae.children[Ce + 1];
                  pe = fe && fe.type === "sentence" && fe.children.length > 0 && s5(fe.children).type === "word" && !s5(fe.children).hasTrailingPunctuation || A2 && A2.type === "sentence" && A2.children.length > 0 && A2.children[0].type === "word" && !A2.children[0].hasLeadingPunctuation || le(oe, "emphasis") ? "*" : "_";
                }
                return [pe, ue(oe, H, ce), pe];
              }
              case "strong":
                return ["**", ue(oe, H, ce), "**"];
              case "delete":
                return ["~~", ue(oe, H, ce), "~~"];
              case "inlineCode": {
                let pe = a2(X.value, "`"), Ae = "`".repeat(pe || 1), Ce = pe && !/^\s/.test(X.value) ? " " : "";
                return [Ae, Ce, X.value, Ce, Ae];
              }
              case "wikiLink": {
                let pe = "";
                return H.proseWrap === "preserve" ? pe = X.value : pe = X.value.replace(/[\t\n]+/g, " "), ["[[", pe, "]]"];
              }
              case "link":
                switch (H.originalText[X.position.start.offset]) {
                  case "<": {
                    let pe = "mailto:";
                    return ["<", X.url.startsWith(pe) && H.originalText.slice(X.position.start.offset + 1, X.position.start.offset + 1 + pe.length) !== pe ? X.url.slice(pe.length) : X.url, ">"];
                  }
                  case "[":
                    return ["[", ue(oe, H, ce), "](", he2(X.url, ")"), we(X.title, H), ")"];
                  default:
                    return H.originalText.slice(X.position.start.offset, X.position.end.offset);
                }
              case "image":
                return ["![", X.alt || "", "](", he2(X.url, ")"), we(X.title, H), ")"];
              case "blockquote":
                return ["> ", w("> ", ue(oe, H, ce))];
              case "heading":
                return ["#".repeat(X.depth) + " ", ue(oe, H, ce)];
              case "code": {
                if (X.isIndented) {
                  let Ce = " ".repeat(4);
                  return w(Ce, [Ce, ...P(X.value, c)]);
                }
                let pe = H.__inJsTemplate ? "~" : "`", Ae = pe.repeat(Math.max(3, n(X.value, pe) + 1));
                return [Ae, X.lang || "", X.meta ? " " + X.meta : "", c, ...P(C(X, H.originalText), c), c, Ae];
              }
              case "html": {
                let pe = oe.getParentNode(), Ae = pe.type === "root" && s5(pe.children) === X ? X.value.trimEnd() : X.value, Ce = /^<!--.*-->$/s.test(Ae);
                return P(Ae, Ce ? c : g(y));
              }
              case "list": {
                let pe = Y(X, oe.getParentNode()), Ae = x2(X, H);
                return ue(oe, H, ce, { processor: (Ce, fe) => {
                  let A2 = re(), G = Ce.getValue();
                  if (G.children.length === 2 && G.children[1].type === "html" && G.children[0].position.start.column !== G.children[1].position.start.column)
                    return [A2, V(Ce, H, ce, A2)];
                  return [A2, w(" ".repeat(A2.length), V(Ce, H, ce, A2))];
                  function re() {
                    let ye = X.ordered ? (fe === 0 ? X.start : Ae ? 1 : X.start + fe) + (pe % 2 === 0 ? ". " : ") ") : pe % 2 === 0 ? "- " : "* ";
                    return X.isAligned || X.hasIndentedCodeblock ? j(ye, H) : ye;
                  }
                } });
              }
              case "thematicBreak": {
                let pe = ee(oe, "list");
                return pe === -1 ? "---" : Y(oe.getParentNode(pe), oe.getParentNode(pe + 1)) % 2 === 0 ? "***" : "---";
              }
              case "linkReference":
                return ["[", ue(oe, H, ce), "]", X.referenceType === "full" ? Ne(X) : X.referenceType === "collapsed" ? "[]" : ""];
              case "imageReference":
                switch (X.referenceType) {
                  case "full":
                    return ["![", X.alt || "", "]", Ne(X)];
                  default:
                    return ["![", X.alt, "]", X.referenceType === "collapsed" ? "[]" : ""];
                }
              case "definition": {
                let pe = H.proseWrap === "always" ? d : " ";
                return S3([Ne(X), ":", F2([pe, he2(X.url), X.title === null ? "" : [pe, we(X.title, H, false)]])]);
              }
              case "footnote":
                return ["[^", ue(oe, H, ce), "]"];
              case "footnoteReference":
                return Pe(X);
              case "footnoteDefinition": {
                let pe = oe.getParentNode().children[oe.getName() + 1], Ae = X.children.length === 1 && X.children[0].type === "paragraph" && (H.proseWrap === "never" || H.proseWrap === "preserve" && X.children[0].position.start.line === X.children[0].position.end.line);
                return [Pe(X), ": ", Ae ? ue(oe, H, ce) : S3([w(" ".repeat(4), ue(oe, H, ce, { processor: (Ce, fe) => fe === 0 ? S3([D2, ce()]) : ce() })), pe && pe.type === "footnoteDefinition" ? D2 : ""])];
              }
              case "table":
                return K(oe, H, ce);
              case "tableCell":
                return ue(oe, H, ce);
              case "break":
                return /\s/.test(H.originalText[X.position.start.offset]) ? ["  ", g(y)] : ["\\", c];
              case "liquidNode":
                return P(X.value, c);
              case "importExport":
                return [X.value, c];
              case "esComment":
                return ["{/* ", X.value, " */}"];
              case "jsx":
                return X.value;
              case "math":
                return ["$$", c, X.value ? [...P(X.value, c), c] : "", "$$"];
              case "inlineMath":
                return H.originalText.slice(m2(X), v(X));
              case "tableRow":
              case "listItem":
              default:
                throw new Error(`Unknown markdown type ${JSON.stringify(X.type)}`);
            }
          }
          function V(oe, H, ce, X) {
            let pe = oe.getValue(), Ae = pe.checked === null ? "" : pe.checked ? "[x] " : "[ ] ";
            return [Ae, ue(oe, H, ce, { processor: (Ce, fe) => {
              if (fe === 0 && Ce.getValue().type !== "list")
                return w(" ".repeat(Ae.length), ce());
              let A2 = " ".repeat(ke(H.tabWidth - X.length, 0, 3));
              return [A2, w(A2, ce())];
            } })];
          }
          function j(oe, H) {
            let ce = X();
            return oe + " ".repeat(ce >= 4 ? 0 : ce);
            function X() {
              let pe = oe.length % H.tabWidth;
              return pe === 0 ? 0 : H.tabWidth - pe;
            }
          }
          function Y(oe, H) {
            return ie(oe, H, (ce) => ce.ordered === oe.ordered);
          }
          function ie(oe, H, ce) {
            let X = -1;
            for (let pe of H.children)
              if (pe.type === oe.type && ce(pe) ? X++ : X = -1, pe === oe)
                return X;
          }
          function ee(oe, H) {
            let ce = Array.isArray(H) ? H : [H], X = -1, pe;
            for (; pe = oe.getParentNode(++X); )
              if (ce.includes(pe.type))
                return X;
            return -1;
          }
          function le(oe, H) {
            let ce = ee(oe, H);
            return ce === -1 ? null : oe.getParentNode(ce);
          }
          function W(oe, H, ce) {
            if (ce.proseWrap === "preserve" && H === `
`)
              return c;
            let X = ce.proseWrap === "always" && !le(oe, J);
            return H !== "" ? X ? d : " " : X ? D2 : "";
          }
          function K(oe, H, ce) {
            let X = oe.getValue(), pe = [], Ae = oe.map((ye) => ye.map((Ee, Be) => {
              let ve = $2(ce(), H).formatted, ze = u3(ve);
              return pe[Be] = Math.max(pe[Be] || 3, ze), { text: ve, width: ze };
            }, "children"), "children"), Ce = A2(false);
            if (H.proseWrap !== "never")
              return [l, Ce];
            let fe = A2(true);
            return [l, S3(E(fe, Ce))];
            function A2(ye) {
              let Ee = [re(Ae[0], ye), G(ye)];
              return Ae.length > 1 && Ee.push(p5(N, Ae.slice(1).map((Be) => re(Be, ye)))), p5(N, Ee);
            }
            function G(ye) {
              return `| ${pe.map((Be, ve) => {
                let ze = X.align[ve], be = ze === "center" || ze === "left" ? ":" : "-", Ye = ze === "center" || ze === "right" ? ":" : "-", Se = ye ? "-" : "-".repeat(Be - 2);
                return `${be}${Se}${Ye}`;
              }).join(" | ")} |`;
            }
            function re(ye, Ee) {
              return `| ${ye.map((ve, ze) => {
                let { text: be, width: Ye } = ve;
                if (Ee)
                  return be;
                let Se = pe[ze] - Ye, Ie = X.align[ze], Oe = 0;
                Ie === "right" ? Oe = Se : Ie === "center" && (Oe = Math.floor(Se / 2));
                let Je = Se - Oe;
                return `${" ".repeat(Oe)}${be}${" ".repeat(Je)}`;
              }).join(" | ")} |`;
            }
          }
          function de(oe, H, ce) {
            let X = [], pe = null, { children: Ae } = oe.getValue();
            for (let [Ce, fe] of Ae.entries())
              switch (U(fe)) {
                case "start":
                  pe === null && (pe = { index: Ce, offset: fe.position.end.offset });
                  break;
                case "end":
                  pe !== null && (X.push({ start: pe, end: { index: Ce, offset: fe.position.start.offset } }), pe = null);
                  break;
                default:
                  break;
              }
            return ue(oe, H, ce, { processor: (Ce, fe) => {
              if (X.length > 0) {
                let A2 = X[0];
                if (fe === A2.start.index)
                  return [Fe(Ae[A2.start.index]), H.originalText.slice(A2.start.offset, A2.end.offset), Fe(Ae[A2.end.index])];
                if (A2.start.index < fe && fe < A2.end.index)
                  return false;
                if (fe === A2.end.index)
                  return X.shift(), false;
              }
              return ce();
            } });
          }
          function ue(oe, H, ce) {
            let X = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}, { postprocessor: pe } = X, Ae = X.processor || (() => ce()), Ce = oe.getValue(), fe = [], A2;
            return oe.each((G, re) => {
              let ye = G.getValue(), Ee = Ae(G, re);
              if (Ee !== false) {
                let Be = { parts: fe, prevNode: A2, parentNode: Ce, options: H };
                Z2(ye, Be) && (fe.push(c), A2 && q2.has(A2.type) || (se(ye, Be) || De(ye, Be)) && fe.push(c), De(ye, Be) && fe.push(c)), fe.push(Ee), A2 = ye;
              }
            }, "children"), pe ? pe(fe) : fe;
          }
          function Fe(oe) {
            if (oe.type === "html")
              return oe.value;
            if (oe.type === "paragraph" && Array.isArray(oe.children) && oe.children.length === 1 && oe.children[0].type === "esComment")
              return ["{/* ", oe.children[0].value, " */}"];
          }
          function z2(oe) {
            let H = oe;
            for (; i2(H.children); )
              H = s5(H.children);
            return H;
          }
          function U(oe) {
            let H;
            if (oe.type === "html")
              H = oe.value.match(/^<!--\s*prettier-ignore(?:-(start|end))?\s*-->$/);
            else {
              let ce;
              oe.type === "esComment" ? ce = oe : oe.type === "paragraph" && oe.children.length === 1 && oe.children[0].type === "esComment" && (ce = oe.children[0]), ce && (H = ce.value.match(/^prettier-ignore(?:-(start|end))?$/));
            }
            return H ? H[1] || "next" : false;
          }
          function Z2(oe, H) {
            let ce = H.parts.length === 0, X = k.includes(oe.type), pe = oe.type === "html" && M.includes(H.parentNode.type);
            return !ce && !X && !pe;
          }
          function se(oe, H) {
            var ce, X, pe;
            let Ce = (H.prevNode && H.prevNode.type) === oe.type && L.has(oe.type), fe = H.parentNode.type === "listItem" && !H.parentNode.loose, A2 = ((ce = H.prevNode) === null || ce === void 0 ? void 0 : ce.type) === "listItem" && H.prevNode.loose, G = U(H.prevNode) === "next", re = oe.type === "html" && ((X = H.prevNode) === null || X === void 0 ? void 0 : X.type) === "html" && H.prevNode.position.end.line + 1 === oe.position.start.line, ye = oe.type === "html" && H.parentNode.type === "listItem" && ((pe = H.prevNode) === null || pe === void 0 ? void 0 : pe.type) === "paragraph" && H.prevNode.position.end.line + 1 === oe.position.start.line;
            return A2 || !(Ce || fe || G || re || ye);
          }
          function De(oe, H) {
            let ce = H.prevNode && H.prevNode.type === "list", X = oe.type === "code" && oe.isIndented;
            return ce && X;
          }
          function ge(oe) {
            let H = le(oe, ["linkReference", "imageReference"]);
            return H && (H.type !== "linkReference" || H.referenceType !== "full");
          }
          function he2(oe) {
            let H = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [], ce = [" ", ...Array.isArray(H) ? H : [H]];
            return new RegExp(ce.map((X) => `\\${X}`).join("|")).test(oe) ? `<${oe}>` : oe;
          }
          function we(oe, H) {
            let ce = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true;
            if (!oe)
              return "";
            if (ce)
              return " " + we(oe, H, false);
            if (oe = oe.replace(/\\(["')])/g, "$1"), oe.includes('"') && oe.includes("'") && !oe.includes(")"))
              return `(${oe})`;
            let X = oe.split("'").length - 1, pe = oe.split('"').length - 1, Ae = X > pe ? '"' : pe > X || H.singleQuote ? "'" : '"';
            return oe = oe.replace(/\\/, "\\\\"), oe = oe.replace(new RegExp(`(${Ae})`, "g"), "\\$1"), `${Ae}${oe}${Ae}`;
          }
          function ke(oe, H, ce) {
            return oe < H ? H : oe > ce ? ce : oe;
          }
          function Re(oe) {
            let H = Number(oe.getName());
            if (H === 0)
              return false;
            let ce = oe.getParentNode().children[H - 1];
            return U(ce) === "next";
          }
          function Ne(oe) {
            return `[${t2(oe.label)}]`;
          }
          function Pe(oe) {
            return `[^${oe.label}]`;
          }
          r2.exports = { preprocess: o, print: Q, embed: f3, massageAstNode: h4, hasPrettierIgnore: Re, insertPragma: T2 };
        } }), fg = te({ "src/language-markdown/options.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Mt();
          r2.exports = { proseWrap: t2.proseWrap, singleQuote: t2.singleQuote };
        } }), Dg = te({ "src/language-markdown/parsers.js"() {
          ne();
        } }), _a6 = te({ "node_modules/linguist-languages/data/Markdown.json"(e2, r2) {
          r2.exports = { name: "Markdown", type: "prose", color: "#083fa1", aliases: ["pandoc"], aceMode: "markdown", codemirrorMode: "gfm", codemirrorMimeType: "text/x-gfm", wrap: true, extensions: [".md", ".livemd", ".markdown", ".mdown", ".mdwn", ".mdx", ".mkd", ".mkdn", ".mkdown", ".ronn", ".scd", ".workbook"], filenames: ["contents.lr"], tmScope: "source.gfm", languageId: 222 };
        } }), mg = te({ "src/language-markdown/index.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = _t(), s5 = pg(), a2 = fg(), n = Dg(), u3 = [t2(_a6(), (l) => ({ since: "1.8.0", parsers: ["markdown"], vscodeLanguageIds: ["markdown"], filenames: [...l.filenames, "README"], extensions: l.extensions.filter((p5) => p5 !== ".mdx") })), t2(_a6(), () => ({ name: "MDX", since: "1.15.0", parsers: ["mdx"], vscodeLanguageIds: ["mdx"], filenames: [], extensions: [".mdx"] }))], i2 = { mdast: s5 };
          r2.exports = { languages: u3, options: a2, printers: i2, parsers: n };
        } }), dg = te({ "src/language-html/clean.js"(e2, r2) {
          "use strict";
          ne();
          var { isFrontMatterNode: t2 } = Ue(), s5 = /* @__PURE__ */ new Set(["sourceSpan", "startSourceSpan", "endSourceSpan", "nameSpan", "valueSpan"]);
          function a2(n, u3) {
            if (n.type === "text" || n.type === "comment" || t2(n) || n.type === "yaml" || n.type === "toml")
              return null;
            n.type === "attribute" && delete u3.value, n.type === "docType" && delete u3.value;
          }
          a2.ignoredProperties = s5, r2.exports = a2;
        } }), gg = te({ "src/language-html/constants.evaluate.js"(e2, r2) {
          r2.exports = { CSS_DISPLAY_TAGS: { area: "none", base: "none", basefont: "none", datalist: "none", head: "none", link: "none", meta: "none", noembed: "none", noframes: "none", param: "block", rp: "none", script: "block", source: "block", style: "none", template: "inline", track: "block", title: "none", html: "block", body: "block", address: "block", blockquote: "block", center: "block", div: "block", figure: "block", figcaption: "block", footer: "block", form: "block", header: "block", hr: "block", legend: "block", listing: "block", main: "block", p: "block", plaintext: "block", pre: "block", xmp: "block", slot: "contents", ruby: "ruby", rt: "ruby-text", article: "block", aside: "block", h1: "block", h2: "block", h3: "block", h4: "block", h5: "block", h6: "block", hgroup: "block", nav: "block", section: "block", dir: "block", dd: "block", dl: "block", dt: "block", ol: "block", ul: "block", li: "list-item", table: "table", caption: "table-caption", colgroup: "table-column-group", col: "table-column", thead: "table-header-group", tbody: "table-row-group", tfoot: "table-footer-group", tr: "table-row", td: "table-cell", th: "table-cell", fieldset: "block", button: "inline-block", details: "block", summary: "block", dialog: "block", meter: "inline-block", progress: "inline-block", object: "inline-block", video: "inline-block", audio: "inline-block", select: "inline-block", option: "block", optgroup: "block" }, CSS_DISPLAY_DEFAULT: "inline", CSS_WHITE_SPACE_TAGS: { listing: "pre", plaintext: "pre", pre: "pre", xmp: "pre", nobr: "nowrap", table: "initial", textarea: "pre-wrap" }, CSS_WHITE_SPACE_DEFAULT: "normal" };
        } }), yg = te({ "src/language-html/utils/is-unknown-namespace.js"(e2, r2) {
          "use strict";
          ne();
          function t2(s5) {
            return s5.type === "element" && !s5.hasExplicitNamespace && !["html", "svg"].includes(s5.namespace);
          }
          r2.exports = t2;
        } }), Rt = te({ "src/language-html/utils/index.js"(e2, r2) {
          "use strict";
          ne();
          var { inferParserByLanguage: t2, isFrontMatterNode: s5 } = Ue(), { builders: { line: a2, hardline: n, join: u3 }, utils: { getDocParts: i2, replaceTextEndOfLine: l } } = qe(), { CSS_DISPLAY_TAGS: p5, CSS_DISPLAY_DEFAULT: d, CSS_WHITE_SPACE_TAGS: y, CSS_WHITE_SPACE_DEFAULT: g } = gg(), c = yg(), D2 = /* @__PURE__ */ new Set(["	", `
`, "\f", "\r", " "]), E = (A2) => A2.replace(/^[\t\n\f\r ]+/, ""), _2 = (A2) => A2.replace(/[\t\n\f\r ]+$/, ""), w = (A2) => E(_2(A2)), F2 = (A2) => A2.replace(/^[\t\f\r ]*\n/g, ""), S3 = (A2) => F2(_2(A2)), N = (A2) => A2.split(/[\t\n\f\r ]+/), I = (A2) => A2.match(/^[\t\n\f\r ]*/)[0], P = (A2) => {
            let [, G, re, ye] = A2.match(/^([\t\n\f\r ]*)(.*?)([\t\n\f\r ]*)$/s);
            return { leadingWhitespace: G, trailingWhitespace: ye, text: re };
          }, $2 = (A2) => /[\t\n\f\r ]/.test(A2);
          function f3(A2, G) {
            return !!(A2.type === "ieConditionalComment" && A2.lastChild && !A2.lastChild.isSelfClosing && !A2.lastChild.endSourceSpan || A2.type === "ieConditionalComment" && !A2.complete || se(A2) && A2.children.some((re) => re.type !== "text" && re.type !== "interpolation") || X(A2, G) && !o(A2) && A2.type !== "interpolation");
          }
          function T2(A2) {
            return A2.type === "attribute" || !A2.parent || !A2.prev ? false : m2(A2.prev);
          }
          function m2(A2) {
            return A2.type === "comment" && A2.value.trim() === "prettier-ignore";
          }
          function v(A2) {
            return A2.type === "text" || A2.type === "comment";
          }
          function o(A2) {
            return A2.type === "element" && (A2.fullName === "script" || A2.fullName === "style" || A2.fullName === "svg:style" || c(A2) && (A2.name === "script" || A2.name === "style"));
          }
          function h4(A2) {
            return A2.children && !o(A2);
          }
          function C(A2) {
            return o(A2) || A2.type === "interpolation" || x2(A2);
          }
          function x2(A2) {
            return we(A2).startsWith("pre");
          }
          function b(A2, G) {
            let re = ye();
            if (re && !A2.prev && A2.parent && A2.parent.tagDefinition && A2.parent.tagDefinition.ignoreFirstLf)
              return A2.type === "interpolation";
            return re;
            function ye() {
              return s5(A2) ? false : (A2.type === "text" || A2.type === "interpolation") && A2.prev && (A2.prev.type === "text" || A2.prev.type === "interpolation") ? true : !A2.parent || A2.parent.cssDisplay === "none" ? false : se(A2.parent) ? true : !(!A2.prev && (A2.parent.type === "root" || se(A2) && A2.parent || o(A2.parent) || H(A2.parent, G) || !ue(A2.parent.cssDisplay)) || A2.prev && !U(A2.prev.cssDisplay));
            }
          }
          function B(A2, G) {
            return s5(A2) ? false : (A2.type === "text" || A2.type === "interpolation") && A2.next && (A2.next.type === "text" || A2.next.type === "interpolation") ? true : !A2.parent || A2.parent.cssDisplay === "none" ? false : se(A2.parent) ? true : !(!A2.next && (A2.parent.type === "root" || se(A2) && A2.parent || o(A2.parent) || H(A2.parent, G) || !Fe(A2.parent.cssDisplay)) || A2.next && !z2(A2.next.cssDisplay));
          }
          function k(A2) {
            return Z2(A2.cssDisplay) && !o(A2);
          }
          function M(A2) {
            return s5(A2) || A2.next && A2.sourceSpan.end && A2.sourceSpan.end.line + 1 < A2.next.sourceSpan.start.line;
          }
          function R(A2) {
            return q2(A2) || A2.type === "element" && A2.children.length > 0 && (["body", "script", "style"].includes(A2.name) || A2.children.some((G) => ee(G))) || A2.firstChild && A2.firstChild === A2.lastChild && A2.firstChild.type !== "text" && V(A2.firstChild) && (!A2.lastChild.isTrailingSpaceSensitive || j(A2.lastChild));
          }
          function q2(A2) {
            return A2.type === "element" && A2.children.length > 0 && (["html", "head", "ul", "ol", "select"].includes(A2.name) || A2.cssDisplay.startsWith("table") && A2.cssDisplay !== "table-cell");
          }
          function J(A2) {
            return Y(A2) || A2.prev && L(A2.prev) || Q(A2);
          }
          function L(A2) {
            return Y(A2) || A2.type === "element" && A2.fullName === "br" || Q(A2);
          }
          function Q(A2) {
            return V(A2) && j(A2);
          }
          function V(A2) {
            return A2.hasLeadingSpaces && (A2.prev ? A2.prev.sourceSpan.end.line < A2.sourceSpan.start.line : A2.parent.type === "root" || A2.parent.startSourceSpan.end.line < A2.sourceSpan.start.line);
          }
          function j(A2) {
            return A2.hasTrailingSpaces && (A2.next ? A2.next.sourceSpan.start.line > A2.sourceSpan.end.line : A2.parent.type === "root" || A2.parent.endSourceSpan && A2.parent.endSourceSpan.start.line > A2.sourceSpan.end.line);
          }
          function Y(A2) {
            switch (A2.type) {
              case "ieConditionalComment":
              case "comment":
              case "directive":
                return true;
              case "element":
                return ["script", "select"].includes(A2.name);
            }
            return false;
          }
          function ie(A2) {
            return A2.lastChild ? ie(A2.lastChild) : A2;
          }
          function ee(A2) {
            return A2.children && A2.children.some((G) => G.type !== "text");
          }
          function le(A2) {
            let { type: G, lang: re } = A2.attrMap;
            if (G === "module" || G === "text/javascript" || G === "text/babel" || G === "application/javascript" || re === "jsx")
              return "babel";
            if (G === "application/x-typescript" || re === "ts" || re === "tsx")
              return "typescript";
            if (G === "text/markdown")
              return "markdown";
            if (G === "text/html")
              return "html";
            if (G && (G.endsWith("json") || G.endsWith("importmap")) || G === "speculationrules")
              return "json";
            if (G === "text/x-handlebars-template")
              return "glimmer";
          }
          function W(A2, G) {
            let { lang: re } = A2.attrMap;
            if (!re || re === "postcss" || re === "css")
              return "css";
            if (re === "scss")
              return "scss";
            if (re === "less")
              return "less";
            if (re === "stylus")
              return t2("stylus", G);
          }
          function K(A2, G) {
            if (A2.name === "script" && !A2.attrMap.src)
              return !A2.attrMap.lang && !A2.attrMap.type ? "babel" : le(A2);
            if (A2.name === "style")
              return W(A2, G);
            if (G && X(A2, G))
              return le(A2) || !("src" in A2.attrMap) && t2(A2.attrMap.lang, G);
          }
          function de(A2) {
            return A2 === "block" || A2 === "list-item" || A2.startsWith("table");
          }
          function ue(A2) {
            return !de(A2) && A2 !== "inline-block";
          }
          function Fe(A2) {
            return !de(A2) && A2 !== "inline-block";
          }
          function z2(A2) {
            return !de(A2);
          }
          function U(A2) {
            return !de(A2);
          }
          function Z2(A2) {
            return !de(A2) && A2 !== "inline-block";
          }
          function se(A2) {
            return we(A2).startsWith("pre");
          }
          function De(A2, G) {
            let re = 0;
            for (let ye = A2.stack.length - 1; ye >= 0; ye--) {
              let Ee = A2.stack[ye];
              Ee && typeof Ee == "object" && !Array.isArray(Ee) && G(Ee) && re++;
            }
            return re;
          }
          function ge(A2, G) {
            let re = A2;
            for (; re; ) {
              if (G(re))
                return true;
              re = re.parent;
            }
            return false;
          }
          function he2(A2, G) {
            if (A2.prev && A2.prev.type === "comment") {
              let ye = A2.prev.value.match(/^\s*display:\s*([a-z]+)\s*$/);
              if (ye)
                return ye[1];
            }
            let re = false;
            if (A2.type === "element" && A2.namespace === "svg")
              if (ge(A2, (ye) => ye.fullName === "svg:foreignObject"))
                re = true;
              else
                return A2.name === "svg" ? "inline-block" : "block";
            switch (G.htmlWhitespaceSensitivity) {
              case "strict":
                return "inline";
              case "ignore":
                return "block";
              default:
                return G.parser === "vue" && A2.parent && A2.parent.type === "root" ? "block" : A2.type === "element" && (!A2.namespace || re || c(A2)) && p5[A2.name] || d;
            }
          }
          function we(A2) {
            return A2.type === "element" && (!A2.namespace || c(A2)) && y[A2.name] || g;
          }
          function ke(A2) {
            let G = Number.POSITIVE_INFINITY;
            for (let re of A2.split(`
`)) {
              if (re.length === 0)
                continue;
              if (!D2.has(re[0]))
                return 0;
              let ye = I(re).length;
              re.length !== ye && ye < G && (G = ye);
            }
            return G === Number.POSITIVE_INFINITY ? 0 : G;
          }
          function Re(A2) {
            let G = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ke(A2);
            return G === 0 ? A2 : A2.split(`
`).map((re) => re.slice(G)).join(`
`);
          }
          function Ne(A2, G) {
            let re = 0;
            for (let ye = 0; ye < A2.length; ye++)
              A2[ye] === G && re++;
            return re;
          }
          function Pe(A2) {
            return A2.replace(/&apos;/g, "'").replace(/&quot;/g, '"');
          }
          var oe = /* @__PURE__ */ new Set(["template", "style", "script"]);
          function H(A2, G) {
            return ce(A2, G) && !oe.has(A2.fullName);
          }
          function ce(A2, G) {
            return G.parser === "vue" && A2.type === "element" && A2.parent.type === "root" && A2.fullName.toLowerCase() !== "html";
          }
          function X(A2, G) {
            return ce(A2, G) && (H(A2, G) || A2.attrMap.lang && A2.attrMap.lang !== "html");
          }
          function pe(A2) {
            let G = A2.fullName;
            return G.charAt(0) === "#" || G === "slot-scope" || G === "v-slot" || G.startsWith("v-slot:");
          }
          function Ae(A2, G) {
            let re = A2.parent;
            if (!ce(re, G))
              return false;
            let ye = re.fullName, Ee = A2.fullName;
            return ye === "script" && Ee === "setup" || ye === "style" && Ee === "vars";
          }
          function Ce(A2) {
            let G = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : A2.value;
            return A2.parent.isWhitespaceSensitive ? A2.parent.isIndentationSensitive ? l(G) : l(Re(S3(G)), n) : i2(u3(a2, N(G)));
          }
          function fe(A2, G) {
            return ce(A2, G) && A2.name === "script";
          }
          r2.exports = { htmlTrim: w, htmlTrimPreserveIndentation: S3, hasHtmlWhitespace: $2, getLeadingAndTrailingHtmlWhitespace: P, canHaveInterpolation: h4, countChars: Ne, countParents: De, dedentString: Re, forceBreakChildren: q2, forceBreakContent: R, forceNextEmptyLine: M, getLastDescendant: ie, getNodeCssStyleDisplay: he2, getNodeCssStyleWhiteSpace: we, hasPrettierIgnore: T2, inferScriptParser: K, isVueCustomBlock: H, isVueNonHtmlBlock: X, isVueScriptTag: fe, isVueSlotAttribute: pe, isVueSfcBindingsAttribute: Ae, isVueSfcBlock: ce, isDanglingSpaceSensitiveNode: k, isIndentationSensitiveNode: x2, isLeadingSpaceSensitiveNode: b, isPreLikeNode: se, isScriptLikeTag: o, isTextLikeNode: v, isTrailingSpaceSensitiveNode: B, isWhitespaceSensitiveNode: C, isUnknownNamespace: c, preferHardlineAsLeadingSpaces: J, preferHardlineAsTrailingSpaces: L, shouldPreserveContent: f3, unescapeQuoteEntities: Pe, getTextValueParts: Ce };
        } }), hg = te({ "node_modules/angular-html-parser/lib/compiler/src/chars.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true }), e2.$EOF = 0, e2.$BSPACE = 8, e2.$TAB = 9, e2.$LF = 10, e2.$VTAB = 11, e2.$FF = 12, e2.$CR = 13, e2.$SPACE = 32, e2.$BANG = 33, e2.$DQ = 34, e2.$HASH = 35, e2.$$ = 36, e2.$PERCENT = 37, e2.$AMPERSAND = 38, e2.$SQ = 39, e2.$LPAREN = 40, e2.$RPAREN = 41, e2.$STAR = 42, e2.$PLUS = 43, e2.$COMMA = 44, e2.$MINUS = 45, e2.$PERIOD = 46, e2.$SLASH = 47, e2.$COLON = 58, e2.$SEMICOLON = 59, e2.$LT = 60, e2.$EQ = 61, e2.$GT = 62, e2.$QUESTION = 63, e2.$0 = 48, e2.$7 = 55, e2.$9 = 57, e2.$A = 65, e2.$E = 69, e2.$F = 70, e2.$X = 88, e2.$Z = 90, e2.$LBRACKET = 91, e2.$BACKSLASH = 92, e2.$RBRACKET = 93, e2.$CARET = 94, e2.$_ = 95, e2.$a = 97, e2.$b = 98, e2.$e = 101, e2.$f = 102, e2.$n = 110, e2.$r = 114, e2.$t = 116, e2.$u = 117, e2.$v = 118, e2.$x = 120, e2.$z = 122, e2.$LBRACE = 123, e2.$BAR = 124, e2.$RBRACE = 125, e2.$NBSP = 160, e2.$PIPE = 124, e2.$TILDA = 126, e2.$AT = 64, e2.$BT = 96;
          function r2(i2) {
            return i2 >= e2.$TAB && i2 <= e2.$SPACE || i2 == e2.$NBSP;
          }
          e2.isWhitespace = r2;
          function t2(i2) {
            return e2.$0 <= i2 && i2 <= e2.$9;
          }
          e2.isDigit = t2;
          function s5(i2) {
            return i2 >= e2.$a && i2 <= e2.$z || i2 >= e2.$A && i2 <= e2.$Z;
          }
          e2.isAsciiLetter = s5;
          function a2(i2) {
            return i2 >= e2.$a && i2 <= e2.$f || i2 >= e2.$A && i2 <= e2.$F || t2(i2);
          }
          e2.isAsciiHexDigit = a2;
          function n(i2) {
            return i2 === e2.$LF || i2 === e2.$CR;
          }
          e2.isNewLine = n;
          function u3(i2) {
            return e2.$0 <= i2 && i2 <= e2.$7;
          }
          e2.isOctalDigit = u3;
        } }), vg = te({ "node_modules/angular-html-parser/lib/compiler/src/aot/static_symbol.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = class {
            constructor(s5, a2, n) {
              this.filePath = s5, this.name = a2, this.members = n;
            }
            assertNoMembers() {
              if (this.members.length)
                throw new Error(`Illegal state: symbol without members expected, but got ${JSON.stringify(this)}.`);
            }
          };
          e2.StaticSymbol = r2;
          var t2 = class {
            constructor() {
              this.cache = /* @__PURE__ */ new Map();
            }
            get(s5, a2, n) {
              n = n || [];
              let u3 = n.length ? `.${n.join(".")}` : "", i2 = `"${s5}".${a2}${u3}`, l = this.cache.get(i2);
              return l || (l = new r2(s5, a2, n), this.cache.set(i2, l)), l;
            }
          };
          e2.StaticSymbolCache = t2;
        } }), Cg = te({ "node_modules/angular-html-parser/lib/compiler/src/util.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = /-+([a-z0-9])/g;
          function t2(o) {
            return o.replace(r2, function() {
              for (var h4 = arguments.length, C = new Array(h4), x2 = 0; x2 < h4; x2++)
                C[x2] = arguments[x2];
              return C[1].toUpperCase();
            });
          }
          e2.dashCaseToCamelCase = t2;
          function s5(o, h4) {
            return n(o, ":", h4);
          }
          e2.splitAtColon = s5;
          function a2(o, h4) {
            return n(o, ".", h4);
          }
          e2.splitAtPeriod = a2;
          function n(o, h4, C) {
            let x2 = o.indexOf(h4);
            return x2 == -1 ? C : [o.slice(0, x2).trim(), o.slice(x2 + 1).trim()];
          }
          function u3(o, h4, C) {
            return Array.isArray(o) ? h4.visitArray(o, C) : F2(o) ? h4.visitStringMap(o, C) : o == null || typeof o == "string" || typeof o == "number" || typeof o == "boolean" ? h4.visitPrimitive(o, C) : h4.visitOther(o, C);
          }
          e2.visitValue = u3;
          function i2(o) {
            return o != null;
          }
          e2.isDefined = i2;
          function l(o) {
            return o === void 0 ? null : o;
          }
          e2.noUndefined = l;
          var p5 = class {
            visitArray(o, h4) {
              return o.map((C) => u3(C, this, h4));
            }
            visitStringMap(o, h4) {
              let C = {};
              return Object.keys(o).forEach((x2) => {
                C[x2] = u3(o[x2], this, h4);
              }), C;
            }
            visitPrimitive(o, h4) {
              return o;
            }
            visitOther(o, h4) {
              return o;
            }
          };
          e2.ValueTransformer = p5, e2.SyncAsync = { assertSync: (o) => {
            if (P(o))
              throw new Error("Illegal state: value cannot be a promise");
            return o;
          }, then: (o, h4) => P(o) ? o.then(h4) : h4(o), all: (o) => o.some(P) ? Promise.all(o) : o };
          function d(o) {
            throw new Error(`Internal Error: ${o}`);
          }
          e2.error = d;
          function y(o, h4) {
            let C = Error(o);
            return C[g] = true, h4 && (C[c] = h4), C;
          }
          e2.syntaxError = y;
          var g = "ngSyntaxError", c = "ngParseErrors";
          function D2(o) {
            return o[g];
          }
          e2.isSyntaxError = D2;
          function E(o) {
            return o[c] || [];
          }
          e2.getParseErrors = E;
          function _2(o) {
            return o.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1");
          }
          e2.escapeRegExp = _2;
          var w = Object.getPrototypeOf({});
          function F2(o) {
            return typeof o == "object" && o !== null && Object.getPrototypeOf(o) === w;
          }
          function S3(o) {
            let h4 = "";
            for (let C = 0; C < o.length; C++) {
              let x2 = o.charCodeAt(C);
              if (x2 >= 55296 && x2 <= 56319 && o.length > C + 1) {
                let b = o.charCodeAt(C + 1);
                b >= 56320 && b <= 57343 && (C++, x2 = (x2 - 55296 << 10) + b - 56320 + 65536);
              }
              x2 <= 127 ? h4 += String.fromCharCode(x2) : x2 <= 2047 ? h4 += String.fromCharCode(x2 >> 6 & 31 | 192, x2 & 63 | 128) : x2 <= 65535 ? h4 += String.fromCharCode(x2 >> 12 | 224, x2 >> 6 & 63 | 128, x2 & 63 | 128) : x2 <= 2097151 && (h4 += String.fromCharCode(x2 >> 18 & 7 | 240, x2 >> 12 & 63 | 128, x2 >> 6 & 63 | 128, x2 & 63 | 128));
            }
            return h4;
          }
          e2.utf8Encode = S3;
          function N(o) {
            if (typeof o == "string")
              return o;
            if (o instanceof Array)
              return "[" + o.map(N).join(", ") + "]";
            if (o == null)
              return "" + o;
            if (o.overriddenName)
              return `${o.overriddenName}`;
            if (o.name)
              return `${o.name}`;
            if (!o.toString)
              return "object";
            let h4 = o.toString();
            if (h4 == null)
              return "" + h4;
            let C = h4.indexOf(`
`);
            return C === -1 ? h4 : h4.substring(0, C);
          }
          e2.stringify = N;
          function I(o) {
            return typeof o == "function" && o.hasOwnProperty("__forward_ref__") ? o() : o;
          }
          e2.resolveForwardRef = I;
          function P(o) {
            return !!o && typeof o.then == "function";
          }
          e2.isPromise = P;
          var $2 = class {
            constructor(o) {
              this.full = o;
              let h4 = o.split(".");
              this.major = h4[0], this.minor = h4[1], this.patch = h4.slice(2).join(".");
            }
          };
          e2.Version = $2;
          var f3 = typeof window < "u" && window, T2 = typeof self < "u" && typeof WorkerGlobalScope < "u" && self instanceof WorkerGlobalScope && self, m2 = typeof globalThis < "u" && globalThis, v = m2 || f3 || T2;
          e2.global = v;
        } }), Eg = te({ "node_modules/angular-html-parser/lib/compiler/src/compile_metadata.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = vg(), t2 = Cg(), s5 = /^(?:(?:\[([^\]]+)\])|(?:\(([^\)]+)\)))|(\@[-\w]+)$/;
          function a2(C) {
            return C.replace(/\W/g, "_");
          }
          e2.sanitizeIdentifier = a2;
          var n = 0;
          function u3(C) {
            if (!C || !C.reference)
              return null;
            let x2 = C.reference;
            if (x2 instanceof r2.StaticSymbol)
              return x2.name;
            if (x2.__anonymousType)
              return x2.__anonymousType;
            let b = t2.stringify(x2);
            return b.indexOf("(") >= 0 ? (b = `anonymous_${n++}`, x2.__anonymousType = b) : b = a2(b), b;
          }
          e2.identifierName = u3;
          function i2(C) {
            let x2 = C.reference;
            return x2 instanceof r2.StaticSymbol ? x2.filePath : `./${t2.stringify(x2)}`;
          }
          e2.identifierModuleUrl = i2;
          function l(C, x2) {
            return `View_${u3({ reference: C })}_${x2}`;
          }
          e2.viewClassName = l;
          function p5(C) {
            return `RenderType_${u3({ reference: C })}`;
          }
          e2.rendererTypeName = p5;
          function d(C) {
            return `HostView_${u3({ reference: C })}`;
          }
          e2.hostViewClassName = d;
          function y(C) {
            return `${u3({ reference: C })}NgFactory`;
          }
          e2.componentFactoryName = y;
          var g;
          (function(C) {
            C[C.Pipe = 0] = "Pipe", C[C.Directive = 1] = "Directive", C[C.NgModule = 2] = "NgModule", C[C.Injectable = 3] = "Injectable";
          })(g = e2.CompileSummaryKind || (e2.CompileSummaryKind = {}));
          function c(C) {
            return C.value != null ? a2(C.value) : u3(C.identifier);
          }
          e2.tokenName = c;
          function D2(C) {
            return C.identifier != null ? C.identifier.reference : C.value;
          }
          e2.tokenReference = D2;
          var E = class {
            constructor() {
              let { moduleUrl: C, styles: x2, styleUrls: b } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
              this.moduleUrl = C || null, this.styles = P(x2), this.styleUrls = P(b);
            }
          };
          e2.CompileStylesheetMetadata = E;
          var _2 = class {
            constructor(C) {
              let { encapsulation: x2, template: b, templateUrl: B, htmlAst: k, styles: M, styleUrls: R, externalStylesheets: q2, animations: J, ngContentSelectors: L, interpolation: Q, isInline: V, preserveWhitespaces: j } = C;
              if (this.encapsulation = x2, this.template = b, this.templateUrl = B, this.htmlAst = k, this.styles = P(M), this.styleUrls = P(R), this.externalStylesheets = P(q2), this.animations = J ? f3(J) : [], this.ngContentSelectors = L || [], Q && Q.length != 2)
                throw new Error("'interpolation' should have a start and an end symbol.");
              this.interpolation = Q, this.isInline = V, this.preserveWhitespaces = j;
            }
            toSummary() {
              return { ngContentSelectors: this.ngContentSelectors, encapsulation: this.encapsulation, styles: this.styles, animations: this.animations };
            }
          };
          e2.CompileTemplateMetadata = _2;
          var w = class {
            static create(C) {
              let { isHost: x2, type: b, isComponent: B, selector: k, exportAs: M, changeDetection: R, inputs: q2, outputs: J, host: L, providers: Q, viewProviders: V, queries: j, guards: Y, viewQueries: ie, entryComponents: ee, template: le, componentViewType: W, rendererType: K, componentFactory: de } = C, ue = {}, Fe = {}, z2 = {};
              L != null && Object.keys(L).forEach((se) => {
                let De = L[se], ge = se.match(s5);
                ge === null ? z2[se] = De : ge[1] != null ? Fe[ge[1]] = De : ge[2] != null && (ue[ge[2]] = De);
              });
              let U = {};
              q2 != null && q2.forEach((se) => {
                let De = t2.splitAtColon(se, [se, se]);
                U[De[0]] = De[1];
              });
              let Z2 = {};
              return J != null && J.forEach((se) => {
                let De = t2.splitAtColon(se, [se, se]);
                Z2[De[0]] = De[1];
              }), new w({ isHost: x2, type: b, isComponent: !!B, selector: k, exportAs: M, changeDetection: R, inputs: U, outputs: Z2, hostListeners: ue, hostProperties: Fe, hostAttributes: z2, providers: Q, viewProviders: V, queries: j, guards: Y, viewQueries: ie, entryComponents: ee, template: le, componentViewType: W, rendererType: K, componentFactory: de });
            }
            constructor(C) {
              let { isHost: x2, type: b, isComponent: B, selector: k, exportAs: M, changeDetection: R, inputs: q2, outputs: J, hostListeners: L, hostProperties: Q, hostAttributes: V, providers: j, viewProviders: Y, queries: ie, guards: ee, viewQueries: le, entryComponents: W, template: K, componentViewType: de, rendererType: ue, componentFactory: Fe } = C;
              this.isHost = !!x2, this.type = b, this.isComponent = B, this.selector = k, this.exportAs = M, this.changeDetection = R, this.inputs = q2, this.outputs = J, this.hostListeners = L, this.hostProperties = Q, this.hostAttributes = V, this.providers = P(j), this.viewProviders = P(Y), this.queries = P(ie), this.guards = ee, this.viewQueries = P(le), this.entryComponents = P(W), this.template = K, this.componentViewType = de, this.rendererType = ue, this.componentFactory = Fe;
            }
            toSummary() {
              return { summaryKind: g.Directive, type: this.type, isComponent: this.isComponent, selector: this.selector, exportAs: this.exportAs, inputs: this.inputs, outputs: this.outputs, hostListeners: this.hostListeners, hostProperties: this.hostProperties, hostAttributes: this.hostAttributes, providers: this.providers, viewProviders: this.viewProviders, queries: this.queries, guards: this.guards, viewQueries: this.viewQueries, entryComponents: this.entryComponents, changeDetection: this.changeDetection, template: this.template && this.template.toSummary(), componentViewType: this.componentViewType, rendererType: this.rendererType, componentFactory: this.componentFactory };
            }
          };
          e2.CompileDirectiveMetadata = w;
          var F2 = class {
            constructor(C) {
              let { type: x2, name: b, pure: B } = C;
              this.type = x2, this.name = b, this.pure = !!B;
            }
            toSummary() {
              return { summaryKind: g.Pipe, type: this.type, name: this.name, pure: this.pure };
            }
          };
          e2.CompilePipeMetadata = F2;
          var S3 = class {
          };
          e2.CompileShallowModuleMetadata = S3;
          var N = class {
            constructor(C) {
              let { type: x2, providers: b, declaredDirectives: B, exportedDirectives: k, declaredPipes: M, exportedPipes: R, entryComponents: q2, bootstrapComponents: J, importedModules: L, exportedModules: Q, schemas: V, transitiveModule: j, id: Y } = C;
              this.type = x2 || null, this.declaredDirectives = P(B), this.exportedDirectives = P(k), this.declaredPipes = P(M), this.exportedPipes = P(R), this.providers = P(b), this.entryComponents = P(q2), this.bootstrapComponents = P(J), this.importedModules = P(L), this.exportedModules = P(Q), this.schemas = P(V), this.id = Y || null, this.transitiveModule = j || null;
            }
            toSummary() {
              let C = this.transitiveModule;
              return { summaryKind: g.NgModule, type: this.type, entryComponents: C.entryComponents, providers: C.providers, modules: C.modules, exportedDirectives: C.exportedDirectives, exportedPipes: C.exportedPipes };
            }
          };
          e2.CompileNgModuleMetadata = N;
          var I = class {
            constructor() {
              this.directivesSet = /* @__PURE__ */ new Set(), this.directives = [], this.exportedDirectivesSet = /* @__PURE__ */ new Set(), this.exportedDirectives = [], this.pipesSet = /* @__PURE__ */ new Set(), this.pipes = [], this.exportedPipesSet = /* @__PURE__ */ new Set(), this.exportedPipes = [], this.modulesSet = /* @__PURE__ */ new Set(), this.modules = [], this.entryComponentsSet = /* @__PURE__ */ new Set(), this.entryComponents = [], this.providers = [];
            }
            addProvider(C, x2) {
              this.providers.push({ provider: C, module: x2 });
            }
            addDirective(C) {
              this.directivesSet.has(C.reference) || (this.directivesSet.add(C.reference), this.directives.push(C));
            }
            addExportedDirective(C) {
              this.exportedDirectivesSet.has(C.reference) || (this.exportedDirectivesSet.add(C.reference), this.exportedDirectives.push(C));
            }
            addPipe(C) {
              this.pipesSet.has(C.reference) || (this.pipesSet.add(C.reference), this.pipes.push(C));
            }
            addExportedPipe(C) {
              this.exportedPipesSet.has(C.reference) || (this.exportedPipesSet.add(C.reference), this.exportedPipes.push(C));
            }
            addModule(C) {
              this.modulesSet.has(C.reference) || (this.modulesSet.add(C.reference), this.modules.push(C));
            }
            addEntryComponent(C) {
              this.entryComponentsSet.has(C.componentType) || (this.entryComponentsSet.add(C.componentType), this.entryComponents.push(C));
            }
          };
          e2.TransitiveCompileNgModuleMetadata = I;
          function P(C) {
            return C || [];
          }
          var $2 = class {
            constructor(C, x2) {
              let { useClass: b, useValue: B, useExisting: k, useFactory: M, deps: R, multi: q2 } = x2;
              this.token = C, this.useClass = b || null, this.useValue = B, this.useExisting = k, this.useFactory = M || null, this.dependencies = R || null, this.multi = !!q2;
            }
          };
          e2.ProviderMeta = $2;
          function f3(C) {
            return C.reduce((x2, b) => {
              let B = Array.isArray(b) ? f3(b) : b;
              return x2.concat(B);
            }, []);
          }
          e2.flatten = f3;
          function T2(C) {
            return C.replace(/(\w+:\/\/[\w:-]+)?(\/+)?/, "ng:///");
          }
          function m2(C, x2, b) {
            let B;
            return b.isInline ? x2.type.reference instanceof r2.StaticSymbol ? B = `${x2.type.reference.filePath}.${x2.type.reference.name}.html` : B = `${u3(C)}/${u3(x2.type)}.html` : B = b.templateUrl, x2.type.reference instanceof r2.StaticSymbol ? B : T2(B);
          }
          e2.templateSourceUrl = m2;
          function v(C, x2) {
            let b = C.moduleUrl.split(/\/\\/g), B = b[b.length - 1];
            return T2(`css/${x2}${B}.ngstyle.js`);
          }
          e2.sharedStylesheetJitUrl = v;
          function o(C) {
            return T2(`${u3(C.type)}/module.ngfactory.js`);
          }
          e2.ngModuleJitUrl = o;
          function h4(C, x2) {
            return T2(`${u3(C)}/${u3(x2.type)}.ngfactory.js`);
          }
          e2.templateJitUrl = h4;
        } }), Fg = te({ "node_modules/angular-html-parser/lib/compiler/src/parse_util.js"(e2) {
          "use strict";
          ne(), Object.defineProperty(e2, "__esModule", { value: true });
          var r2 = hg(), t2 = Eg(), s5 = class {
            constructor(d, y, g, c) {
              this.file = d, this.offset = y, this.line = g, this.col = c;
            }
            toString() {
              return this.offset != null ? `${this.file.url}@${this.line}:${this.col}` : this.file.url;
            }
            moveBy(d) {
              let y = this.file.content, g = y.length, c = this.offset, D2 = this.line, E = this.col;
              for (; c > 0 && d < 0; )
                if (c--, d++, y.charCodeAt(c) == r2.$LF) {
                  D2--;
                  let w = y.substr(0, c - 1).lastIndexOf(String.fromCharCode(r2.$LF));
                  E = w > 0 ? c - w : c;
                } else
                  E--;
              for (; c < g && d > 0; ) {
                let _2 = y.charCodeAt(c);
                c++, d--, _2 == r2.$LF ? (D2++, E = 0) : E++;
              }
              return new s5(this.file, c, D2, E);
            }
            getContext(d, y) {
              let g = this.file.content, c = this.offset;
              if (c != null) {
                c > g.length - 1 && (c = g.length - 1);
                let D2 = c, E = 0, _2 = 0;
                for (; E < d && c > 0 && (c--, E++, !(g[c] == `
` && ++_2 == y)); )
                  ;
                for (E = 0, _2 = 0; E < d && D2 < g.length - 1 && (D2++, E++, !(g[D2] == `
` && ++_2 == y)); )
                  ;
                return { before: g.substring(c, this.offset), after: g.substring(this.offset, D2 + 1) };
              }
              return null;
            }
          };
          e2.ParseLocation = s5;
          var a2 = class {
            constructor(d, y) {
              this.content = d, this.url = y;
            }
          };
          e2.ParseSourceFile = a2;
          var n = class {
            constructor(d, y) {
              let g = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null;
              this.start = d, this.end = y, this.details = g;
            }
            toString() {
              return this.start.file.content.substring(this.start.offset, this.end.offset);
            }
          };
          e2.ParseSourceSpan = n, e2.EMPTY_PARSE_LOCATION = new s5(new a2("", ""), 0, 0, 0), e2.EMPTY_SOURCE_SPAN = new n(e2.EMPTY_PARSE_LOCATION, e2.EMPTY_PARSE_LOCATION);
          var u3;
          (function(d) {
            d[d.WARNING = 0] = "WARNING", d[d.ERROR = 1] = "ERROR";
          })(u3 = e2.ParseErrorLevel || (e2.ParseErrorLevel = {}));
          var i2 = class {
            constructor(d, y) {
              let g = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : u3.ERROR;
              this.span = d, this.msg = y, this.level = g;
            }
            contextualMessage() {
              let d = this.span.start.getContext(100, 3);
              return d ? `${this.msg} ("${d.before}[${u3[this.level]} ->]${d.after}")` : this.msg;
            }
            toString() {
              let d = this.span.details ? `, ${this.span.details}` : "";
              return `${this.contextualMessage()}: ${this.span.start}${d}`;
            }
          };
          e2.ParseError = i2;
          function l(d, y) {
            let g = t2.identifierModuleUrl(y), c = g != null ? `in ${d} ${t2.identifierName(y)} in ${g}` : `in ${d} ${t2.identifierName(y)}`, D2 = new a2("", c);
            return new n(new s5(D2, -1, -1, -1), new s5(D2, -1, -1, -1));
          }
          e2.typeSourceSpan = l;
          function p5(d, y, g) {
            let c = `in ${d} ${y} in ${g}`, D2 = new a2("", c);
            return new n(new s5(D2, -1, -1, -1), new s5(D2, -1, -1, -1));
          }
          e2.r3JitTypeSourceSpan = p5;
        } }), Ag = te({ "src/language-html/print-preprocess.js"(e2, r2) {
          "use strict";
          ne();
          var { ParseSourceSpan: t2 } = Fg(), { htmlTrim: s5, getLeadingAndTrailingHtmlWhitespace: a2, hasHtmlWhitespace: n, canHaveInterpolation: u3, getNodeCssStyleDisplay: i2, isDanglingSpaceSensitiveNode: l, isIndentationSensitiveNode: p5, isLeadingSpaceSensitiveNode: d, isTrailingSpaceSensitiveNode: y, isWhitespaceSensitiveNode: g, isVueScriptTag: c } = Rt(), D2 = [_2, w, S3, I, P, T2, $2, f3, m2, N, v];
          function E(o, h4) {
            for (let C of D2)
              C(o, h4);
            return o;
          }
          function _2(o) {
            o.walk((h4) => {
              if (h4.type === "element" && h4.tagDefinition.ignoreFirstLf && h4.children.length > 0 && h4.children[0].type === "text" && h4.children[0].value[0] === `
`) {
                let C = h4.children[0];
                C.value.length === 1 ? h4.removeChild(C) : C.value = C.value.slice(1);
              }
            });
          }
          function w(o) {
            let h4 = (C) => C.type === "element" && C.prev && C.prev.type === "ieConditionalStartComment" && C.prev.sourceSpan.end.offset === C.startSourceSpan.start.offset && C.firstChild && C.firstChild.type === "ieConditionalEndComment" && C.firstChild.sourceSpan.start.offset === C.startSourceSpan.end.offset;
            o.walk((C) => {
              if (C.children)
                for (let x2 = 0; x2 < C.children.length; x2++) {
                  let b = C.children[x2];
                  if (!h4(b))
                    continue;
                  let B = b.prev, k = b.firstChild;
                  C.removeChild(B), x2--;
                  let M = new t2(B.sourceSpan.start, k.sourceSpan.end), R = new t2(M.start, b.sourceSpan.end);
                  b.condition = B.condition, b.sourceSpan = R, b.startSourceSpan = M, b.removeChild(k);
                }
            });
          }
          function F2(o, h4, C) {
            o.walk((x2) => {
              if (x2.children)
                for (let b = 0; b < x2.children.length; b++) {
                  let B = x2.children[b];
                  if (B.type !== "text" && !h4(B))
                    continue;
                  B.type !== "text" && (B.type = "text", B.value = C(B));
                  let k = B.prev;
                  !k || k.type !== "text" || (k.value += B.value, k.sourceSpan = new t2(k.sourceSpan.start, B.sourceSpan.end), x2.removeChild(B), b--);
                }
            });
          }
          function S3(o) {
            return F2(o, (h4) => h4.type === "cdata", (h4) => `<![CDATA[${h4.value}]]>`);
          }
          function N(o) {
            let h4 = (C) => C.type === "element" && C.attrs.length === 0 && C.children.length === 1 && C.firstChild.type === "text" && !n(C.children[0].value) && !C.firstChild.hasLeadingSpaces && !C.firstChild.hasTrailingSpaces && C.isLeadingSpaceSensitive && !C.hasLeadingSpaces && C.isTrailingSpaceSensitive && !C.hasTrailingSpaces && C.prev && C.prev.type === "text" && C.next && C.next.type === "text";
            o.walk((C) => {
              if (C.children)
                for (let x2 = 0; x2 < C.children.length; x2++) {
                  let b = C.children[x2];
                  if (!h4(b))
                    continue;
                  let B = b.prev, k = b.next;
                  B.value += `<${b.rawName}>` + b.firstChild.value + `</${b.rawName}>` + k.value, B.sourceSpan = new t2(B.sourceSpan.start, k.sourceSpan.end), B.isTrailingSpaceSensitive = k.isTrailingSpaceSensitive, B.hasTrailingSpaces = k.hasTrailingSpaces, C.removeChild(b), x2--, C.removeChild(k);
                }
            });
          }
          function I(o, h4) {
            if (h4.parser === "html")
              return;
            let C = /{{(.+?)}}/s;
            o.walk((x2) => {
              if (u3(x2))
                for (let b of x2.children) {
                  if (b.type !== "text")
                    continue;
                  let B = b.sourceSpan.start, k = null, M = b.value.split(C);
                  for (let R = 0; R < M.length; R++, B = k) {
                    let q2 = M[R];
                    if (R % 2 === 0) {
                      k = B.moveBy(q2.length), q2.length > 0 && x2.insertChildBefore(b, { type: "text", value: q2, sourceSpan: new t2(B, k) });
                      continue;
                    }
                    k = B.moveBy(q2.length + 4), x2.insertChildBefore(b, { type: "interpolation", sourceSpan: new t2(B, k), children: q2.length === 0 ? [] : [{ type: "text", value: q2, sourceSpan: new t2(B.moveBy(2), k.moveBy(-2)) }] });
                  }
                  x2.removeChild(b);
                }
            });
          }
          function P(o) {
            o.walk((h4) => {
              if (!h4.children)
                return;
              if (h4.children.length === 0 || h4.children.length === 1 && h4.children[0].type === "text" && s5(h4.children[0].value).length === 0) {
                h4.hasDanglingSpaces = h4.children.length > 0, h4.children = [];
                return;
              }
              let C = g(h4), x2 = p5(h4);
              if (!C)
                for (let b = 0; b < h4.children.length; b++) {
                  let B = h4.children[b];
                  if (B.type !== "text")
                    continue;
                  let { leadingWhitespace: k, text: M, trailingWhitespace: R } = a2(B.value), q2 = B.prev, J = B.next;
                  M ? (B.value = M, B.sourceSpan = new t2(B.sourceSpan.start.moveBy(k.length), B.sourceSpan.end.moveBy(-R.length)), k && (q2 && (q2.hasTrailingSpaces = true), B.hasLeadingSpaces = true), R && (B.hasTrailingSpaces = true, J && (J.hasLeadingSpaces = true))) : (h4.removeChild(B), b--, (k || R) && (q2 && (q2.hasTrailingSpaces = true), J && (J.hasLeadingSpaces = true)));
                }
              h4.isWhitespaceSensitive = C, h4.isIndentationSensitive = x2;
            });
          }
          function $2(o) {
            o.walk((h4) => {
              h4.isSelfClosing = !h4.children || h4.type === "element" && (h4.tagDefinition.isVoid || h4.startSourceSpan === h4.endSourceSpan);
            });
          }
          function f3(o, h4) {
            o.walk((C) => {
              C.type === "element" && (C.hasHtmComponentClosingTag = C.endSourceSpan && /^<\s*\/\s*\/\s*>$/.test(h4.originalText.slice(C.endSourceSpan.start.offset, C.endSourceSpan.end.offset)));
            });
          }
          function T2(o, h4) {
            o.walk((C) => {
              C.cssDisplay = i2(C, h4);
            });
          }
          function m2(o, h4) {
            o.walk((C) => {
              let { children: x2 } = C;
              if (x2) {
                if (x2.length === 0) {
                  C.isDanglingSpaceSensitive = l(C);
                  return;
                }
                for (let b of x2)
                  b.isLeadingSpaceSensitive = d(b, h4), b.isTrailingSpaceSensitive = y(b, h4);
                for (let b = 0; b < x2.length; b++) {
                  let B = x2[b];
                  B.isLeadingSpaceSensitive = (b === 0 || B.prev.isTrailingSpaceSensitive) && B.isLeadingSpaceSensitive, B.isTrailingSpaceSensitive = (b === x2.length - 1 || B.next.isLeadingSpaceSensitive) && B.isTrailingSpaceSensitive;
                }
              }
            });
          }
          function v(o, h4) {
            if (h4.parser === "vue") {
              let C = o.children.find((b) => c(b, h4));
              if (!C)
                return;
              let { lang: x2 } = C.attrMap;
              (x2 === "ts" || x2 === "typescript") && (h4.__should_parse_vue_template_with_ts = true);
            }
          }
          r2.exports = E;
        } }), Sg = te({ "src/language-html/pragma.js"(e2, r2) {
          "use strict";
          ne();
          function t2(a2) {
            return /^\s*<!--\s*@(?:format|prettier)\s*-->/.test(a2);
          }
          function s5(a2) {
            return `<!-- @format -->

` + a2.replace(/^\s*\n/, "");
          }
          r2.exports = { hasPragma: t2, insertPragma: s5 };
        } }), au = te({ "src/language-html/loc.js"(e2, r2) {
          "use strict";
          ne();
          function t2(a2) {
            return a2.sourceSpan.start.offset;
          }
          function s5(a2) {
            return a2.sourceSpan.end.offset;
          }
          r2.exports = { locStart: t2, locEnd: s5 };
        } }), ur = te({ "src/language-html/print/tag.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Zt(), { isNonEmptyArray: s5 } = Ue(), { builders: { indent: a2, join: n, line: u3, softline: i2, hardline: l }, utils: { replaceTextEndOfLine: p5 } } = qe(), { locStart: d, locEnd: y } = au(), { isTextLikeNode: g, getLastDescendant: c, isPreLikeNode: D2, hasPrettierIgnore: E, shouldPreserveContent: _2, isVueSfcBlock: w } = Rt();
          function F2(L, Q) {
            return [L.isSelfClosing ? "" : S3(L, Q), N(L, Q)];
          }
          function S3(L, Q) {
            return L.lastChild && o(L.lastChild) ? "" : [I(L, Q), $2(L, Q)];
          }
          function N(L, Q) {
            return (L.next ? m2(L.next) : v(L.parent)) ? "" : [f3(L, Q), P(L, Q)];
          }
          function I(L, Q) {
            return v(L) ? f3(L.lastChild, Q) : "";
          }
          function P(L, Q) {
            return o(L) ? $2(L.parent, Q) : h4(L) ? q2(L.next) : "";
          }
          function $2(L, Q) {
            if (t2(!L.isSelfClosing), T2(L, Q))
              return "";
            switch (L.type) {
              case "ieConditionalComment":
                return "<!";
              case "element":
                if (L.hasHtmComponentClosingTag)
                  return "<//";
              default:
                return `</${L.rawName}`;
            }
          }
          function f3(L, Q) {
            if (T2(L, Q))
              return "";
            switch (L.type) {
              case "ieConditionalComment":
              case "ieConditionalEndComment":
                return "[endif]-->";
              case "ieConditionalStartComment":
                return "]><!-->";
              case "interpolation":
                return "}}";
              case "element":
                if (L.isSelfClosing)
                  return "/>";
              default:
                return ">";
            }
          }
          function T2(L, Q) {
            return !L.isSelfClosing && !L.endSourceSpan && (E(L) || _2(L.parent, Q));
          }
          function m2(L) {
            return L.prev && L.prev.type !== "docType" && !g(L.prev) && L.isLeadingSpaceSensitive && !L.hasLeadingSpaces;
          }
          function v(L) {
            return L.lastChild && L.lastChild.isTrailingSpaceSensitive && !L.lastChild.hasTrailingSpaces && !g(c(L.lastChild)) && !D2(L);
          }
          function o(L) {
            return !L.next && !L.hasTrailingSpaces && L.isTrailingSpaceSensitive && g(c(L));
          }
          function h4(L) {
            return L.next && !g(L.next) && g(L) && L.isTrailingSpaceSensitive && !L.hasTrailingSpaces;
          }
          function C(L) {
            let Q = L.trim().match(/^prettier-ignore-attribute(?:\s+(.+))?$/s);
            return Q ? Q[1] ? Q[1].split(/\s+/) : true : false;
          }
          function x2(L) {
            return !L.prev && L.isLeadingSpaceSensitive && !L.hasLeadingSpaces;
          }
          function b(L, Q, V) {
            let j = L.getValue();
            if (!s5(j.attrs))
              return j.isSelfClosing ? " " : "";
            let Y = j.prev && j.prev.type === "comment" && C(j.prev.value), ie = typeof Y == "boolean" ? () => Y : Array.isArray(Y) ? (ue) => Y.includes(ue.rawName) : () => false, ee = L.map((ue) => {
              let Fe = ue.getValue();
              return ie(Fe) ? p5(Q.originalText.slice(d(Fe), y(Fe))) : V();
            }, "attrs"), le = j.type === "element" && j.fullName === "script" && j.attrs.length === 1 && j.attrs[0].fullName === "src" && j.children.length === 0, K = Q.singleAttributePerLine && j.attrs.length > 1 && !w(j, Q) ? l : u3, de = [a2([le ? " " : u3, n(K, ee)])];
            return j.firstChild && x2(j.firstChild) || j.isSelfClosing && v(j.parent) || le ? de.push(j.isSelfClosing ? " " : "") : de.push(Q.bracketSameLine ? j.isSelfClosing ? " " : "" : j.isSelfClosing ? u3 : i2), de;
          }
          function B(L) {
            return L.firstChild && x2(L.firstChild) ? "" : J(L);
          }
          function k(L, Q, V) {
            let j = L.getValue();
            return [M(j, Q), b(L, Q, V), j.isSelfClosing ? "" : B(j)];
          }
          function M(L, Q) {
            return L.prev && h4(L.prev) ? "" : [R(L, Q), q2(L)];
          }
          function R(L, Q) {
            return x2(L) ? J(L.parent) : m2(L) ? f3(L.prev, Q) : "";
          }
          function q2(L) {
            switch (L.type) {
              case "ieConditionalComment":
              case "ieConditionalStartComment":
                return `<!--[if ${L.condition}`;
              case "ieConditionalEndComment":
                return "<!--<!";
              case "interpolation":
                return "{{";
              case "docType":
                return "<!DOCTYPE";
              case "element":
                if (L.condition)
                  return `<!--[if ${L.condition}]><!--><${L.rawName}`;
              default:
                return `<${L.rawName}`;
            }
          }
          function J(L) {
            switch (t2(!L.isSelfClosing), L.type) {
              case "ieConditionalComment":
                return "]>";
              case "element":
                if (L.condition)
                  return "><!--<![endif]-->";
              default:
                return ">";
            }
          }
          r2.exports = { printClosingTag: F2, printClosingTagStart: S3, printClosingTagStartMarker: $2, printClosingTagEndMarker: f3, printClosingTagSuffix: P, printClosingTagEnd: N, needsToBorrowLastChildClosingTagEndMarker: v, needsToBorrowParentClosingTagStartMarker: o, needsToBorrowPrevClosingTagEndMarker: m2, printOpeningTag: k, printOpeningTagStart: M, printOpeningTagPrefix: R, printOpeningTagStartMarker: q2, printOpeningTagEndMarker: J, needsToBorrowNextOpeningTagStartMarker: h4, needsToBorrowParentOpeningTagEndMarker: x2 };
        } }), xg = te({ "node_modules/parse-srcset/src/parse-srcset.js"(e2, r2) {
          ne(), (function(t2, s5) {
            typeof define == "function" && define.amd ? define([], s5) : typeof r2 == "object" && r2.exports ? r2.exports = s5() : t2.parseSrcset = s5();
          })(e2, function() {
            return function(t2, s5) {
              var a2 = s5 && s5.logger || console;
              function n($2) {
                return $2 === " " || $2 === "	" || $2 === `
` || $2 === "\f" || $2 === "\r";
              }
              function u3($2) {
                var f3, T2 = $2.exec(t2.substring(S3));
                if (T2)
                  return f3 = T2[0], S3 += f3.length, f3;
              }
              for (var i2 = t2.length, l = /^[ \t\n\r\u000c]+/, p5 = /^[, \t\n\r\u000c]+/, d = /^[^ \t\n\r\u000c]+/, y = /[,]+$/, g = /^\d+$/, c = /^-?(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/, D2, E, _2, w, F2, S3 = 0, N = []; ; ) {
                if (u3(p5), S3 >= i2)
                  return N;
                D2 = u3(d), E = [], D2.slice(-1) === "," ? (D2 = D2.replace(y, ""), P()) : I();
              }
              function I() {
                for (u3(l), _2 = "", w = "in descriptor"; ; ) {
                  if (F2 = t2.charAt(S3), w === "in descriptor")
                    if (n(F2))
                      _2 && (E.push(_2), _2 = "", w = "after descriptor");
                    else if (F2 === ",") {
                      S3 += 1, _2 && E.push(_2), P();
                      return;
                    } else if (F2 === "(")
                      _2 = _2 + F2, w = "in parens";
                    else if (F2 === "") {
                      _2 && E.push(_2), P();
                      return;
                    } else
                      _2 = _2 + F2;
                  else if (w === "in parens")
                    if (F2 === ")")
                      _2 = _2 + F2, w = "in descriptor";
                    else if (F2 === "") {
                      E.push(_2), P();
                      return;
                    } else
                      _2 = _2 + F2;
                  else if (w === "after descriptor" && !n(F2))
                    if (F2 === "") {
                      P();
                      return;
                    } else
                      w = "in descriptor", S3 -= 1;
                  S3 += 1;
                }
              }
              function P() {
                var $2 = false, f3, T2, m2, v, o = {}, h4, C, x2, b, B;
                for (v = 0; v < E.length; v++)
                  h4 = E[v], C = h4[h4.length - 1], x2 = h4.substring(0, h4.length - 1), b = parseInt(x2, 10), B = parseFloat(x2), g.test(x2) && C === "w" ? ((f3 || T2) && ($2 = true), b === 0 ? $2 = true : f3 = b) : c.test(x2) && C === "x" ? ((f3 || T2 || m2) && ($2 = true), B < 0 ? $2 = true : T2 = B) : g.test(x2) && C === "h" ? ((m2 || T2) && ($2 = true), b === 0 ? $2 = true : m2 = b) : $2 = true;
                $2 ? a2 && a2.error && a2.error("Invalid srcset descriptor found in '" + t2 + "' at '" + h4 + "'.") : (o.url = D2, f3 && (o.w = f3), T2 && (o.d = T2), m2 && (o.h = m2), N.push(o));
              }
            };
          });
        } }), bg = te({ "src/language-html/syntax-attribute.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = xg(), { builders: { ifBreak: s5, join: a2, line: n } } = qe();
          function u3(l) {
            let p5 = t2(l, { logger: { error(I) {
              throw new Error(I);
            } } }), d = p5.some((I) => {
              let { w: P } = I;
              return P;
            }), y = p5.some((I) => {
              let { h: P } = I;
              return P;
            }), g = p5.some((I) => {
              let { d: P } = I;
              return P;
            });
            if (d + y + g > 1)
              throw new Error("Mixed descriptor in srcset is not supported");
            let c = d ? "w" : y ? "h" : "d", D2 = d ? "w" : y ? "h" : "x", E = (I) => Math.max(...I), _2 = p5.map((I) => I.url), w = E(_2.map((I) => I.length)), F2 = p5.map((I) => I[c]).map((I) => I ? I.toString() : ""), S3 = F2.map((I) => {
              let P = I.indexOf(".");
              return P === -1 ? I.length : P;
            }), N = E(S3);
            return a2([",", n], _2.map((I, P) => {
              let $2 = [I], f3 = F2[P];
              if (f3) {
                let T2 = w - I.length + 1, m2 = N - S3[P], v = " ".repeat(T2 + m2);
                $2.push(s5(v, " "), f3 + D2);
              }
              return $2;
            }));
          }
          function i2(l) {
            return l.trim().split(/\s+/).join(" ");
          }
          r2.exports = { printImgSrcset: u3, printClassNames: i2 };
        } }), Tg = te({ "src/language-html/syntax-vue.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { group: t2 } } = qe();
          function s5(i2, l) {
            let { left: p5, operator: d, right: y } = a2(i2);
            return [t2(l(`function _(${p5}) {}`, { parser: "babel", __isVueForBindingLeft: true })), " ", d, " ", l(y, { parser: "__js_expression" }, { stripTrailingHardline: true })];
          }
          function a2(i2) {
            let l = /(.*?)\s+(in|of)\s+(.*)/s, p5 = /,([^,\]}]*)(?:,([^,\]}]*))?$/, d = /^\(|\)$/g, y = i2.match(l);
            if (!y)
              return;
            let g = {};
            if (g.for = y[3].trim(), !g.for)
              return;
            let c = y[1].trim().replace(d, ""), D2 = c.match(p5);
            D2 ? (g.alias = c.replace(p5, ""), g.iterator1 = D2[1].trim(), D2[2] && (g.iterator2 = D2[2].trim())) : g.alias = c;
            let E = [g.alias, g.iterator1, g.iterator2];
            if (!E.some((_2, w) => !_2 && (w === 0 || E.slice(w + 1).some(Boolean))))
              return { left: E.filter(Boolean).join(","), operator: y[2], right: g.for };
          }
          function n(i2, l) {
            return l(`function _(${i2}) {}`, { parser: "babel", __isVueBindings: true });
          }
          function u3(i2) {
            let l = /^(?:[\w$]+|\([^)]*\))\s*=>|^function\s*\(/, p5 = /^[$A-Z_a-z][\w$]*(?:\.[$A-Z_a-z][\w$]*|\['[^']*']|\["[^"]*"]|\[\d+]|\[[$A-Z_a-z][\w$]*])*$/, d = i2.trim();
            return l.test(d) || p5.test(d);
          }
          r2.exports = { isVueEventBindingExpression: u3, printVueFor: s5, printVueBindings: n };
        } }), Lo = te({ "src/language-html/get-node-content.js"(e2, r2) {
          "use strict";
          ne();
          var { needsToBorrowParentClosingTagStartMarker: t2, printClosingTagStartMarker: s5, needsToBorrowLastChildClosingTagEndMarker: a2, printClosingTagEndMarker: n, needsToBorrowParentOpeningTagEndMarker: u3, printOpeningTagEndMarker: i2 } = ur();
          function l(p5, d) {
            let y = p5.startSourceSpan.end.offset;
            p5.firstChild && u3(p5.firstChild) && (y -= i2(p5).length);
            let g = p5.endSourceSpan.start.offset;
            return p5.lastChild && t2(p5.lastChild) ? g += s5(p5, d).length : a2(p5) && (g -= n(p5.lastChild, d).length), d.originalText.slice(y, g);
          }
          r2.exports = l;
        } }), Bg = te({ "src/language-html/embed.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { breakParent: t2, group: s5, hardline: a2, indent: n, line: u3, fill: i2, softline: l }, utils: { mapDoc: p5, replaceTextEndOfLine: d } } = qe(), y = su(), { printClosingTag: g, printClosingTagSuffix: c, needsToBorrowPrevClosingTagEndMarker: D2, printOpeningTagPrefix: E, printOpeningTag: _2 } = ur(), { printImgSrcset: w, printClassNames: F2 } = bg(), { printVueFor: S3, printVueBindings: N, isVueEventBindingExpression: I } = Tg(), { isScriptLikeTag: P, isVueNonHtmlBlock: $2, inferScriptParser: f3, htmlTrimPreserveIndentation: T2, dedentString: m2, unescapeQuoteEntities: v, isVueSlotAttribute: o, isVueSfcBindingsAttribute: h4, getTextValueParts: C } = Rt(), x2 = Lo();
          function b(k, M, R) {
            let q2 = (ee) => new RegExp(ee.join("|")).test(k.fullName), J = () => v(k.value), L = false, Q = (ee, le) => {
              let W = ee.type === "NGRoot" ? ee.node.type === "NGMicrosyntax" && ee.node.body.length === 1 && ee.node.body[0].type === "NGMicrosyntaxExpression" ? ee.node.body[0].expression : ee.node : ee.type === "JsExpressionRoot" ? ee.node : ee;
              W && (W.type === "ObjectExpression" || W.type === "ArrayExpression" || le.parser === "__vue_expression" && (W.type === "TemplateLiteral" || W.type === "StringLiteral")) && (L = true);
            }, V = (ee) => s5(ee), j = function(ee) {
              let le = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
              return s5([n([l, ee]), le ? l : ""]);
            }, Y = (ee) => L ? V(ee) : j(ee), ie = (ee, le) => M(ee, Object.assign({ __onHtmlBindingRoot: Q, __embeddedInHtml: true }, le));
            if (k.fullName === "srcset" && (k.parent.fullName === "img" || k.parent.fullName === "source"))
              return j(w(J()));
            if (k.fullName === "class" && !R.parentParser) {
              let ee = J();
              if (!ee.includes("{{"))
                return F2(ee);
            }
            if (k.fullName === "style" && !R.parentParser) {
              let ee = J();
              if (!ee.includes("{{"))
                return j(ie(ee, { parser: "css", __isHTMLStyleAttribute: true }));
            }
            if (R.parser === "vue") {
              if (k.fullName === "v-for")
                return S3(J(), ie);
              if (o(k) || h4(k, R))
                return N(J(), ie);
              let ee = ["^@", "^v-on:"], le = ["^:", "^v-bind:"], W = ["^v-"];
              if (q2(ee)) {
                let K = J(), de = I(K) ? "__js_expression" : R.__should_parse_vue_template_with_ts ? "__vue_ts_event_binding" : "__vue_event_binding";
                return Y(ie(K, { parser: de }));
              }
              if (q2(le))
                return Y(ie(J(), { parser: "__vue_expression" }));
              if (q2(W))
                return Y(ie(J(), { parser: "__js_expression" }));
            }
            if (R.parser === "angular") {
              let ee = (z2, U) => ie(z2, Object.assign(Object.assign({}, U), {}, { trailingComma: "none" })), le = ["^\\*"], W = ["^\\(.+\\)$", "^on-"], K = ["^\\[.+\\]$", "^bind(on)?-", "^ng-(if|show|hide|class|style)$"], de = ["^i18n(-.+)?$"];
              if (q2(W))
                return Y(ee(J(), { parser: "__ng_action" }));
              if (q2(K))
                return Y(ee(J(), { parser: "__ng_binding" }));
              if (q2(de)) {
                let z2 = J().trim();
                return j(i2(C(k, z2)), !z2.includes("@@"));
              }
              if (q2(le))
                return Y(ee(J(), { parser: "__ng_directive" }));
              let ue = /{{(.+?)}}/s, Fe = J();
              if (ue.test(Fe)) {
                let z2 = [];
                for (let [U, Z2] of Fe.split(ue).entries())
                  if (U % 2 === 0)
                    z2.push(d(Z2));
                  else
                    try {
                      z2.push(s5(["{{", n([u3, ee(Z2, { parser: "__ng_interpolation", __isInHtmlInterpolation: true })]), u3, "}}"]));
                    } catch {
                      z2.push("{{", d(Z2), "}}");
                    }
                return s5(z2);
              }
            }
            return null;
          }
          function B(k, M, R, q2) {
            let J = k.getValue();
            switch (J.type) {
              case "element": {
                if (P(J) || J.type === "interpolation")
                  return;
                if (!J.isSelfClosing && $2(J, q2)) {
                  let L = f3(J, q2);
                  if (!L)
                    return;
                  let Q = x2(J, q2), V = /^\s*$/.test(Q), j = "";
                  return V || (j = R(T2(Q), { parser: L, __embeddedInHtml: true }, { stripTrailingHardline: true }), V = j === ""), [E(J, q2), s5(_2(k, q2, M)), V ? "" : a2, j, V ? "" : a2, g(J, q2), c(J, q2)];
                }
                break;
              }
              case "text": {
                if (P(J.parent)) {
                  let L = f3(J.parent, q2);
                  if (L) {
                    let Q = L === "markdown" ? m2(J.value.replace(/^[^\S\n]*\n/, "")) : J.value, V = { parser: L, __embeddedInHtml: true };
                    if (q2.parser === "html" && L === "babel") {
                      let j = "script", { attrMap: Y } = J.parent;
                      Y && (Y.type === "module" || Y.type === "text/babel" && Y["data-type"] === "module") && (j = "module"), V.__babelSourceType = j;
                    }
                    return [t2, E(J, q2), R(Q, V, { stripTrailingHardline: true }), c(J, q2)];
                  }
                } else if (J.parent.type === "interpolation") {
                  let L = { __isInHtmlInterpolation: true, __embeddedInHtml: true };
                  return q2.parser === "angular" ? (L.parser = "__ng_interpolation", L.trailingComma = "none") : q2.parser === "vue" ? L.parser = q2.__should_parse_vue_template_with_ts ? "__vue_ts_expression" : "__vue_expression" : L.parser = "__js_expression", [n([u3, R(J.value, L, { stripTrailingHardline: true })]), J.parent.next && D2(J.parent.next) ? " " : u3];
                }
                break;
              }
              case "attribute": {
                if (!J.value)
                  break;
                if (/^PRETTIER_HTML_PLACEHOLDER_\d+_\d+_IN_JS$/.test(q2.originalText.slice(J.valueSpan.start.offset, J.valueSpan.end.offset)))
                  return [J.rawName, "=", J.value];
                if (q2.parser === "lwc" && /^{.*}$/s.test(q2.originalText.slice(J.valueSpan.start.offset, J.valueSpan.end.offset)))
                  return [J.rawName, "=", J.value];
                let L = b(J, (Q, V) => R(Q, Object.assign({ __isInHtmlAttribute: true, __embeddedInHtml: true }, V), { stripTrailingHardline: true }), q2);
                if (L)
                  return [J.rawName, '="', s5(p5(L, (Q) => typeof Q == "string" ? Q.replace(/"/g, "&quot;") : Q)), '"'];
                break;
              }
              case "front-matter":
                return y(J, R);
            }
          }
          r2.exports = B;
        } }), Oo = te({ "src/language-html/print/children.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { breakParent: t2, group: s5, ifBreak: a2, line: n, softline: u3, hardline: i2 }, utils: { replaceTextEndOfLine: l } } = qe(), { locStart: p5, locEnd: d } = au(), { forceBreakChildren: y, forceNextEmptyLine: g, isTextLikeNode: c, hasPrettierIgnore: D2, preferHardlineAsLeadingSpaces: E } = Rt(), { printOpeningTagPrefix: _2, needsToBorrowNextOpeningTagStartMarker: w, printOpeningTagStartMarker: F2, needsToBorrowPrevClosingTagEndMarker: S3, printClosingTagEndMarker: N, printClosingTagSuffix: I, needsToBorrowParentClosingTagStartMarker: P } = ur();
          function $2(m2, v, o) {
            let h4 = m2.getValue();
            return D2(h4) ? [_2(h4, v), ...l(v.originalText.slice(p5(h4) + (h4.prev && w(h4.prev) ? F2(h4).length : 0), d(h4) - (h4.next && S3(h4.next) ? N(h4, v).length : 0))), I(h4, v)] : o();
          }
          function f3(m2, v) {
            return c(m2) && c(v) ? m2.isTrailingSpaceSensitive ? m2.hasTrailingSpaces ? E(v) ? i2 : n : "" : E(v) ? i2 : u3 : w(m2) && (D2(v) || v.firstChild || v.isSelfClosing || v.type === "element" && v.attrs.length > 0) || m2.type === "element" && m2.isSelfClosing && S3(v) ? "" : !v.isLeadingSpaceSensitive || E(v) || S3(v) && m2.lastChild && P(m2.lastChild) && m2.lastChild.lastChild && P(m2.lastChild.lastChild) ? i2 : v.hasLeadingSpaces ? n : u3;
          }
          function T2(m2, v, o) {
            let h4 = m2.getValue();
            if (y(h4))
              return [t2, ...m2.map((x2) => {
                let b = x2.getValue(), B = b.prev ? f3(b.prev, b) : "";
                return [B ? [B, g(b.prev) ? i2 : ""] : "", $2(x2, v, o)];
              }, "children")];
            let C = h4.children.map(() => Symbol(""));
            return m2.map((x2, b) => {
              let B = x2.getValue();
              if (c(B)) {
                if (B.prev && c(B.prev)) {
                  let Q = f3(B.prev, B);
                  if (Q)
                    return g(B.prev) ? [i2, i2, $2(x2, v, o)] : [Q, $2(x2, v, o)];
                }
                return $2(x2, v, o);
              }
              let k = [], M = [], R = [], q2 = [], J = B.prev ? f3(B.prev, B) : "", L = B.next ? f3(B, B.next) : "";
              return J && (g(B.prev) ? k.push(i2, i2) : J === i2 ? k.push(i2) : c(B.prev) ? M.push(J) : M.push(a2("", u3, { groupId: C[b - 1] }))), L && (g(B) ? c(B.next) && q2.push(i2, i2) : L === i2 ? c(B.next) && q2.push(i2) : R.push(L)), [...k, s5([...M, s5([$2(x2, v, o), ...R], { id: C[b] })]), ...q2];
            }, "children");
          }
          r2.exports = { printChildren: T2 };
        } }), Ng = te({ "src/language-html/print/element.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { breakParent: t2, dedentToRoot: s5, group: a2, ifBreak: n, indentIfBreak: u3, indent: i2, line: l, softline: p5 }, utils: { replaceTextEndOfLine: d } } = qe(), y = Lo(), { shouldPreserveContent: g, isScriptLikeTag: c, isVueCustomBlock: D2, countParents: E, forceBreakContent: _2 } = Rt(), { printOpeningTagPrefix: w, printOpeningTag: F2, printClosingTagSuffix: S3, printClosingTag: N, needsToBorrowPrevClosingTagEndMarker: I, needsToBorrowLastChildClosingTagEndMarker: P } = ur(), { printChildren: $2 } = Oo();
          function f3(T2, m2, v) {
            let o = T2.getValue();
            if (g(o, m2))
              return [w(o, m2), a2(F2(T2, m2, v)), ...d(y(o, m2)), ...N(o, m2), S3(o, m2)];
            let h4 = o.children.length === 1 && o.firstChild.type === "interpolation" && o.firstChild.isLeadingSpaceSensitive && !o.firstChild.hasLeadingSpaces && o.lastChild.isTrailingSpaceSensitive && !o.lastChild.hasTrailingSpaces, C = Symbol("element-attr-group-id"), x2 = (M) => a2([a2(F2(T2, m2, v), { id: C }), M, N(o, m2)]), b = (M) => h4 ? u3(M, { groupId: C }) : (c(o) || D2(o, m2)) && o.parent.type === "root" && m2.parser === "vue" && !m2.vueIndentScriptAndStyle ? M : i2(M), B = () => h4 ? n(p5, "", { groupId: C }) : o.firstChild.hasLeadingSpaces && o.firstChild.isLeadingSpaceSensitive ? l : o.firstChild.type === "text" && o.isWhitespaceSensitive && o.isIndentationSensitive ? s5(p5) : p5, k = () => (o.next ? I(o.next) : P(o.parent)) ? o.lastChild.hasTrailingSpaces && o.lastChild.isTrailingSpaceSensitive ? " " : "" : h4 ? n(p5, "", { groupId: C }) : o.lastChild.hasTrailingSpaces && o.lastChild.isTrailingSpaceSensitive ? l : (o.lastChild.type === "comment" || o.lastChild.type === "text" && o.isWhitespaceSensitive && o.isIndentationSensitive) && new RegExp(`\\n[\\t ]{${m2.tabWidth * E(T2, (R) => R.parent && R.parent.type !== "root")}}$`).test(o.lastChild.value) ? "" : p5;
            return o.children.length === 0 ? x2(o.hasDanglingSpaces && o.isDanglingSpaceSensitive ? l : "") : x2([_2(o) ? t2 : "", b([B(), $2(T2, m2, v)]), k()]);
          }
          r2.exports = { printElement: f3 };
        } }), wg = te({ "src/language-html/printer-html.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { fill: t2, group: s5, hardline: a2, literalline: n }, utils: { cleanDoc: u3, getDocParts: i2, isConcat: l, replaceTextEndOfLine: p5 } } = qe(), d = dg(), { countChars: y, unescapeQuoteEntities: g, getTextValueParts: c } = Rt(), D2 = Ag(), { insertPragma: E } = Sg(), { locStart: _2, locEnd: w } = au(), F2 = Bg(), { printClosingTagSuffix: S3, printClosingTagEnd: N, printOpeningTagPrefix: I, printOpeningTagStart: P } = ur(), { printElement: $2 } = Ng(), { printChildren: f3 } = Oo();
          function T2(m2, v, o) {
            let h4 = m2.getValue();
            switch (h4.type) {
              case "front-matter":
                return p5(h4.raw);
              case "root":
                return v.__onHtmlRoot && v.__onHtmlRoot(h4), [s5(f3(m2, v, o)), a2];
              case "element":
              case "ieConditionalComment":
                return $2(m2, v, o);
              case "ieConditionalStartComment":
              case "ieConditionalEndComment":
                return [P(h4), N(h4)];
              case "interpolation":
                return [P(h4, v), ...m2.map(o, "children"), N(h4, v)];
              case "text": {
                if (h4.parent.type === "interpolation") {
                  let x2 = /\n[^\S\n]*$/, b = x2.test(h4.value), B = b ? h4.value.replace(x2, "") : h4.value;
                  return [...p5(B), b ? a2 : ""];
                }
                let C = u3([I(h4, v), ...c(h4), S3(h4, v)]);
                return l(C) || C.type === "fill" ? t2(i2(C)) : C;
              }
              case "docType":
                return [s5([P(h4, v), " ", h4.value.replace(/^html\b/i, "html").replace(/\s+/g, " ")]), N(h4, v)];
              case "comment":
                return [I(h4, v), ...p5(v.originalText.slice(_2(h4), w(h4)), n), S3(h4, v)];
              case "attribute": {
                if (h4.value === null)
                  return h4.rawName;
                let C = g(h4.value), x2 = y(C, "'"), b = y(C, '"'), B = x2 < b ? "'" : '"';
                return [h4.rawName, "=", B, ...p5(B === '"' ? C.replace(/"/g, "&quot;") : C.replace(/'/g, "&apos;")), B];
              }
              default:
                throw new Error(`Unexpected node type ${h4.type}`);
            }
          }
          r2.exports = { preprocess: D2, print: T2, insertPragma: E, massageAstNode: d, embed: F2 };
        } }), _g = te({ "src/language-html/options.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Mt(), s5 = "HTML";
          r2.exports = { bracketSameLine: t2.bracketSameLine, htmlWhitespaceSensitivity: { since: "1.15.0", category: s5, type: "choice", default: "css", description: "How to handle whitespaces in HTML.", choices: [{ value: "css", description: "Respect the default value of CSS display property." }, { value: "strict", description: "Whitespaces are considered sensitive." }, { value: "ignore", description: "Whitespaces are considered insensitive." }] }, singleAttributePerLine: t2.singleAttributePerLine, vueIndentScriptAndStyle: { since: "1.19.0", category: s5, type: "boolean", default: false, description: "Indent script and style tags in Vue files." } };
        } }), Pg = te({ "src/language-html/parsers.js"() {
          ne();
        } }), On = te({ "node_modules/linguist-languages/data/HTML.json"(e2, r2) {
          r2.exports = { name: "HTML", type: "markup", tmScope: "text.html.basic", aceMode: "html", codemirrorMode: "htmlmixed", codemirrorMimeType: "text/html", color: "#e34c26", aliases: ["xhtml"], extensions: [".html", ".hta", ".htm", ".html.hl", ".inc", ".xht", ".xhtml"], languageId: 146 };
        } }), Ig = te({ "node_modules/linguist-languages/data/Vue.json"(e2, r2) {
          r2.exports = { name: "Vue", type: "markup", color: "#41b883", extensions: [".vue"], tmScope: "text.html.vue", aceMode: "html", languageId: 391 };
        } }), kg = te({ "src/language-html/index.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = _t(), s5 = wg(), a2 = _g(), n = Pg(), u3 = [t2(On(), () => ({ name: "Angular", since: "1.15.0", parsers: ["angular"], vscodeLanguageIds: ["html"], extensions: [".component.html"], filenames: [] })), t2(On(), (l) => ({ since: "1.15.0", parsers: ["html"], vscodeLanguageIds: ["html"], extensions: [...l.extensions, ".mjml"] })), t2(On(), () => ({ name: "Lightning Web Components", since: "1.17.0", parsers: ["lwc"], vscodeLanguageIds: ["html"], extensions: [], filenames: [] })), t2(Ig(), () => ({ since: "1.10.0", parsers: ["vue"], vscodeLanguageIds: ["vue"] }))], i2 = { html: s5 };
          r2.exports = { languages: u3, printers: i2, options: a2, parsers: n };
        } }), Lg = te({ "src/language-yaml/pragma.js"(e2, r2) {
          "use strict";
          ne();
          function t2(n) {
            return /^\s*@(?:prettier|format)\s*$/.test(n);
          }
          function s5(n) {
            return /^\s*#[^\S\n]*@(?:prettier|format)\s*?(?:\n|$)/.test(n);
          }
          function a2(n) {
            return `# @format

${n}`;
          }
          r2.exports = { isPragma: t2, hasPragma: s5, insertPragma: a2 };
        } }), Og = te({ "src/language-yaml/loc.js"(e2, r2) {
          "use strict";
          ne();
          function t2(a2) {
            return a2.position.start.offset;
          }
          function s5(a2) {
            return a2.position.end.offset;
          }
          r2.exports = { locStart: t2, locEnd: s5 };
        } }), jg = te({ "src/language-yaml/embed.js"(e2, r2) {
          "use strict";
          ne();
          function t2(s5, a2, n, u3) {
            if (s5.getValue().type === "root" && u3.filepath && /(?:[/\\]|^)\.(?:prettier|stylelint|lintstaged)rc$/.test(u3.filepath))
              return n(u3.originalText, Object.assign(Object.assign({}, u3), {}, { parser: "json" }));
          }
          r2.exports = t2;
        } }), $t = te({ "src/language-yaml/utils.js"(e2, r2) {
          "use strict";
          ne();
          var { getLast: t2, isNonEmptyArray: s5 } = Ue();
          function a2(f3, T2) {
            let m2 = 0, v = f3.stack.length - 1;
            for (let o = 0; o < v; o++) {
              let h4 = f3.stack[o];
              n(h4) && T2(h4) && m2++;
            }
            return m2;
          }
          function n(f3, T2) {
            return f3 && typeof f3.type == "string" && (!T2 || T2.includes(f3.type));
          }
          function u3(f3, T2, m2) {
            return T2("children" in f3 ? Object.assign(Object.assign({}, f3), {}, { children: f3.children.map((v) => u3(v, T2, f3)) }) : f3, m2);
          }
          function i2(f3, T2, m2) {
            Object.defineProperty(f3, T2, { get: m2, enumerable: false });
          }
          function l(f3, T2) {
            let m2 = 0, v = T2.length;
            for (let o = f3.position.end.offset - 1; o < v; o++) {
              let h4 = T2[o];
              if (h4 === `
` && m2++, m2 === 1 && /\S/.test(h4))
                return false;
              if (m2 === 2)
                return true;
            }
            return false;
          }
          function p5(f3) {
            switch (f3.getValue().type) {
              case "tag":
              case "anchor":
              case "comment":
                return false;
            }
            let m2 = f3.stack.length;
            for (let v = 1; v < m2; v++) {
              let o = f3.stack[v], h4 = f3.stack[v - 1];
              if (Array.isArray(h4) && typeof o == "number" && o !== h4.length - 1)
                return false;
            }
            return true;
          }
          function d(f3) {
            return s5(f3.children) ? d(t2(f3.children)) : f3;
          }
          function y(f3) {
            return f3.value.trim() === "prettier-ignore";
          }
          function g(f3) {
            let T2 = f3.getValue();
            if (T2.type === "documentBody") {
              let m2 = f3.getParentNode();
              return S3(m2.head) && y(t2(m2.head.endComments));
            }
            return E(T2) && y(t2(T2.leadingComments));
          }
          function c(f3) {
            return !s5(f3.children) && !D2(f3);
          }
          function D2(f3) {
            return E(f3) || _2(f3) || w(f3) || F2(f3) || S3(f3);
          }
          function E(f3) {
            return s5(f3 == null ? void 0 : f3.leadingComments);
          }
          function _2(f3) {
            return s5(f3 == null ? void 0 : f3.middleComments);
          }
          function w(f3) {
            return f3 == null ? void 0 : f3.indicatorComment;
          }
          function F2(f3) {
            return f3 == null ? void 0 : f3.trailingComment;
          }
          function S3(f3) {
            return s5(f3 == null ? void 0 : f3.endComments);
          }
          function N(f3) {
            let T2 = [], m2;
            for (let v of f3.split(/( +)/))
              v !== " " ? m2 === " " ? T2.push(v) : T2.push((T2.pop() || "") + v) : m2 === void 0 && T2.unshift(""), m2 = v;
            return m2 === " " && T2.push((T2.pop() || "") + " "), T2[0] === "" && (T2.shift(), T2.unshift(" " + (T2.shift() || ""))), T2;
          }
          function I(f3, T2, m2) {
            let v = T2.split(`
`).map((o, h4, C) => h4 === 0 && h4 === C.length - 1 ? o : h4 !== 0 && h4 !== C.length - 1 ? o.trim() : h4 === 0 ? o.trimEnd() : o.trimStart());
            return m2.proseWrap === "preserve" ? v.map((o) => o.length === 0 ? [] : [o]) : v.map((o) => o.length === 0 ? [] : N(o)).reduce((o, h4, C) => C !== 0 && v[C - 1].length > 0 && h4.length > 0 && !(f3 === "quoteDouble" && t2(t2(o)).endsWith("\\")) ? [...o.slice(0, -1), [...t2(o), ...h4]] : [...o, h4], []).map((o) => m2.proseWrap === "never" ? [o.join(" ")] : o);
          }
          function P(f3, T2) {
            let { parentIndent: m2, isLastDescendant: v, options: o } = T2, h4 = f3.position.start.line === f3.position.end.line ? "" : o.originalText.slice(f3.position.start.offset, f3.position.end.offset).match(/^[^\n]*\n(.*)$/s)[1], C;
            if (f3.indent === null) {
              let B = h4.match(/^(?<leadingSpace> *)[^\n\r ]/m);
              C = B ? B.groups.leadingSpace.length : Number.POSITIVE_INFINITY;
            } else
              C = f3.indent - 1 + m2;
            let x2 = h4.split(`
`).map((B) => B.slice(C));
            if (o.proseWrap === "preserve" || f3.type === "blockLiteral")
              return b(x2.map((B) => B.length === 0 ? [] : [B]));
            return b(x2.map((B) => B.length === 0 ? [] : N(B)).reduce((B, k, M) => M !== 0 && x2[M - 1].length > 0 && k.length > 0 && !/^\s/.test(k[0]) && !/^\s|\s$/.test(t2(B)) ? [...B.slice(0, -1), [...t2(B), ...k]] : [...B, k], []).map((B) => B.reduce((k, M) => k.length > 0 && /\s$/.test(t2(k)) ? [...k.slice(0, -1), t2(k) + " " + M] : [...k, M], [])).map((B) => o.proseWrap === "never" ? [B.join(" ")] : B));
            function b(B) {
              if (f3.chomping === "keep")
                return t2(B).length === 0 ? B.slice(0, -1) : B;
              let k = 0;
              for (let M = B.length - 1; M >= 0 && B[M].length === 0; M--)
                k++;
              return k === 0 ? B : k >= 2 && !v ? B.slice(0, -(k - 1)) : B.slice(0, -k);
            }
          }
          function $2(f3) {
            if (!f3)
              return true;
            switch (f3.type) {
              case "plain":
              case "quoteDouble":
              case "quoteSingle":
              case "alias":
              case "flowMapping":
              case "flowSequence":
                return true;
              default:
                return false;
            }
          }
          r2.exports = { getLast: t2, getAncestorCount: a2, isNode: n, isEmptyNode: c, isInlineNode: $2, mapNode: u3, defineShortcut: i2, isNextLineEmpty: l, isLastDescendantNode: p5, getBlockValueLineContents: P, getFlowScalarLineContents: I, getLastDescendantNode: d, hasPrettierIgnore: g, hasLeadingComments: E, hasMiddleComments: _2, hasIndicatorComment: w, hasTrailingComment: F2, hasEndComments: S3 };
        } }), qg = te({ "src/language-yaml/print-preprocess.js"(e2, r2) {
          "use strict";
          ne();
          var { defineShortcut: t2, mapNode: s5 } = $t();
          function a2(u3) {
            return s5(u3, n);
          }
          function n(u3) {
            switch (u3.type) {
              case "document":
                t2(u3, "head", () => u3.children[0]), t2(u3, "body", () => u3.children[1]);
                break;
              case "documentBody":
              case "sequenceItem":
              case "flowSequenceItem":
              case "mappingKey":
              case "mappingValue":
                t2(u3, "content", () => u3.children[0]);
                break;
              case "mappingItem":
              case "flowMappingItem":
                t2(u3, "key", () => u3.children[0]), t2(u3, "value", () => u3.children[1]);
                break;
            }
            return u3;
          }
          r2.exports = a2;
        } }), Mr = te({ "src/language-yaml/print/misc.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { softline: t2, align: s5 } } = qe(), { hasEndComments: a2, isNextLineEmpty: n, isNode: u3 } = $t(), i2 = /* @__PURE__ */ new WeakMap();
          function l(y, g) {
            let c = y.getValue(), D2 = y.stack[0], E;
            return i2.has(D2) ? E = i2.get(D2) : (E = /* @__PURE__ */ new Set(), i2.set(D2, E)), !E.has(c.position.end.line) && (E.add(c.position.end.line), n(c, g) && !p5(y.getParentNode())) ? t2 : "";
          }
          function p5(y) {
            return a2(y) && !u3(y, ["documentHead", "documentBody", "flowMapping", "flowSequence"]);
          }
          function d(y, g) {
            return s5(" ".repeat(y), g);
          }
          r2.exports = { alignWithSpaces: d, shouldPrintEndComments: p5, printNextEmptyLine: l };
        } }), Mg = te({ "src/language-yaml/print/flow-mapping-sequence.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { ifBreak: t2, line: s5, softline: a2, hardline: n, join: u3 } } = qe(), { isEmptyNode: i2, getLast: l, hasEndComments: p5 } = $t(), { printNextEmptyLine: d, alignWithSpaces: y } = Mr();
          function g(D2, E, _2) {
            let w = D2.getValue(), F2 = w.type === "flowMapping", S3 = F2 ? "{" : "[", N = F2 ? "}" : "]", I = a2;
            F2 && w.children.length > 0 && _2.bracketSpacing && (I = s5);
            let P = l(w.children), $2 = P && P.type === "flowMappingItem" && i2(P.key) && i2(P.value);
            return [S3, y(_2.tabWidth, [I, c(D2, E, _2), _2.trailingComma === "none" ? "" : t2(","), p5(w) ? [n, u3(n, D2.map(E, "endComments"))] : ""]), $2 ? "" : I, N];
          }
          function c(D2, E, _2) {
            let w = D2.getValue();
            return D2.map((S3, N) => [E(), N === w.children.length - 1 ? "" : [",", s5, w.children[N].position.start.line !== w.children[N + 1].position.start.line ? d(S3, _2.originalText) : ""]], "children");
          }
          r2.exports = { printFlowMapping: g, printFlowSequence: g };
        } }), Rg = te({ "src/language-yaml/print/mapping-item.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { conditionalGroup: t2, group: s5, hardline: a2, ifBreak: n, join: u3, line: i2 } } = qe(), { hasLeadingComments: l, hasMiddleComments: p5, hasTrailingComment: d, hasEndComments: y, isNode: g, isEmptyNode: c, isInlineNode: D2 } = $t(), { alignWithSpaces: E } = Mr();
          function _2(N, I, P, $2, f3) {
            let { key: T2, value: m2 } = N, v = c(T2), o = c(m2);
            if (v && o)
              return ": ";
            let h4 = $2("key"), C = F2(N) ? " " : "";
            if (o)
              return N.type === "flowMappingItem" && I.type === "flowMapping" ? h4 : N.type === "mappingItem" && w(T2.content, f3) && !d(T2.content) && (!I.tag || I.tag.value !== "tag:yaml.org,2002:set") ? [h4, C, ":"] : ["? ", E(2, h4)];
            let x2 = $2("value");
            if (v)
              return [": ", E(2, x2)];
            if (l(m2) || !D2(T2.content))
              return ["? ", E(2, h4), a2, u3("", P.map($2, "value", "leadingComments").map((q2) => [q2, a2])), ": ", E(2, x2)];
            if (S3(T2.content) && !l(T2.content) && !p5(T2.content) && !d(T2.content) && !y(T2) && !l(m2.content) && !p5(m2.content) && !y(m2) && w(m2.content, f3))
              return [h4, C, ": ", x2];
            let b = Symbol("mappingKey"), B = s5([n("? "), s5(E(2, h4), { id: b })]), k = [a2, ": ", E(2, x2)], M = [C, ":"];
            l(m2.content) || y(m2) && m2.content && !g(m2.content, ["mapping", "sequence"]) || I.type === "mapping" && d(T2.content) && D2(m2.content) || g(m2.content, ["mapping", "sequence"]) && m2.content.tag === null && m2.content.anchor === null ? M.push(a2) : m2.content && M.push(i2), M.push(x2);
            let R = E(f3.tabWidth, M);
            return w(T2.content, f3) && !l(T2.content) && !p5(T2.content) && !y(T2) ? t2([[h4, R]]) : t2([[B, n(k, R, { groupId: b })]]);
          }
          function w(N, I) {
            if (!N)
              return true;
            switch (N.type) {
              case "plain":
              case "quoteSingle":
              case "quoteDouble":
                break;
              case "alias":
                return true;
              default:
                return false;
            }
            if (I.proseWrap === "preserve")
              return N.position.start.line === N.position.end.line;
            if (/\\$/m.test(I.originalText.slice(N.position.start.offset, N.position.end.offset)))
              return false;
            switch (I.proseWrap) {
              case "never":
                return !N.value.includes(`
`);
              case "always":
                return !/[\n ]/.test(N.value);
              default:
                return false;
            }
          }
          function F2(N) {
            return N.key.content && N.key.content.type === "alias";
          }
          function S3(N) {
            if (!N)
              return true;
            switch (N.type) {
              case "plain":
              case "quoteDouble":
              case "quoteSingle":
                return N.position.start.line === N.position.end.line;
              case "alias":
                return true;
              default:
                return false;
            }
          }
          r2.exports = _2;
        } }), $g = te({ "src/language-yaml/print/block.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { dedent: t2, dedentToRoot: s5, fill: a2, hardline: n, join: u3, line: i2, literalline: l, markAsRoot: p5 }, utils: { getDocParts: d } } = qe(), { getAncestorCount: y, getBlockValueLineContents: g, hasIndicatorComment: c, isLastDescendantNode: D2, isNode: E } = $t(), { alignWithSpaces: _2 } = Mr();
          function w(F2, S3, N) {
            let I = F2.getValue(), P = y(F2, (v) => E(v, ["sequence", "mapping"])), $2 = D2(F2), f3 = [I.type === "blockFolded" ? ">" : "|"];
            I.indent !== null && f3.push(I.indent.toString()), I.chomping !== "clip" && f3.push(I.chomping === "keep" ? "+" : "-"), c(I) && f3.push(" ", S3("indicatorComment"));
            let T2 = g(I, { parentIndent: P, isLastDescendant: $2, options: N }), m2 = [];
            for (let [v, o] of T2.entries())
              v === 0 && m2.push(n), m2.push(a2(d(u3(i2, o)))), v !== T2.length - 1 ? m2.push(o.length === 0 ? n : p5(l)) : I.chomping === "keep" && $2 && m2.push(s5(o.length === 0 ? n : l));
            return I.indent === null ? f3.push(t2(_2(N.tabWidth, m2))) : f3.push(s5(_2(I.indent - 1 + P, m2))), f3;
          }
          r2.exports = w;
        } }), Vg = te({ "src/language-yaml/printer-yaml.js"(e2, r2) {
          "use strict";
          ne();
          var { builders: { breakParent: t2, fill: s5, group: a2, hardline: n, join: u3, line: i2, lineSuffix: l, literalline: p5 }, utils: { getDocParts: d, replaceTextEndOfLine: y } } = qe(), { isPreviousLineEmpty: g } = Ue(), { insertPragma: c, isPragma: D2 } = Lg(), { locStart: E } = Og(), _2 = jg(), { getFlowScalarLineContents: w, getLastDescendantNode: F2, hasLeadingComments: S3, hasMiddleComments: N, hasTrailingComment: I, hasEndComments: P, hasPrettierIgnore: $2, isLastDescendantNode: f3, isNode: T2, isInlineNode: m2 } = $t(), v = qg(), { alignWithSpaces: o, printNextEmptyLine: h4, shouldPrintEndComments: C } = Mr(), { printFlowMapping: x2, printFlowSequence: b } = Mg(), B = Rg(), k = $g();
          function M(j, Y, ie) {
            let ee = j.getValue(), le = [];
            ee.type !== "mappingValue" && S3(ee) && le.push([u3(n, j.map(ie, "leadingComments")), n]);
            let { tag: W, anchor: K } = ee;
            W && le.push(ie("tag")), W && K && le.push(" "), K && le.push(ie("anchor"));
            let de = "";
            T2(ee, ["mapping", "sequence", "comment", "directive", "mappingItem", "sequenceItem"]) && !f3(j) && (de = h4(j, Y.originalText)), (W || K) && (T2(ee, ["sequence", "mapping"]) && !N(ee) ? le.push(n) : le.push(" ")), N(ee) && le.push([ee.middleComments.length === 1 ? "" : n, u3(n, j.map(ie, "middleComments")), n]);
            let ue = j.getParentNode();
            return $2(j) ? le.push(y(Y.originalText.slice(ee.position.start.offset, ee.position.end.offset).trimEnd(), p5)) : le.push(a2(R(ee, ue, j, Y, ie))), I(ee) && !T2(ee, ["document", "documentHead"]) && le.push(l([ee.type === "mappingValue" && !ee.content ? "" : " ", ue.type === "mappingKey" && j.getParentNode(2).type === "mapping" && m2(ee) ? "" : t2, ie("trailingComment")])), C(ee) && le.push(o(ee.type === "sequenceItem" ? 2 : 0, [n, u3(n, j.map((Fe) => [g(Y.originalText, Fe.getValue(), E) ? n : "", ie()], "endComments"))])), le.push(de), le;
          }
          function R(j, Y, ie, ee, le) {
            switch (j.type) {
              case "root": {
                let { children: W } = j, K = [];
                ie.each((ue, Fe) => {
                  let z2 = W[Fe], U = W[Fe + 1];
                  Fe !== 0 && K.push(n), K.push(le()), J(z2, U) ? (K.push(n, "..."), I(z2) && K.push(" ", le("trailingComment"))) : U && !I(U.head) && K.push(n, "---");
                }, "children");
                let de = F2(j);
                return (!T2(de, ["blockLiteral", "blockFolded"]) || de.chomping !== "keep") && K.push(n), K;
              }
              case "document": {
                let W = Y.children[ie.getName() + 1], K = [];
                return L(j, W, Y, ee) === "head" && ((j.head.children.length > 0 || j.head.endComments.length > 0) && K.push(le("head")), I(j.head) ? K.push(["---", " ", le(["head", "trailingComment"])]) : K.push("---")), q2(j) && K.push(le("body")), u3(n, K);
              }
              case "documentHead":
                return u3(n, [...ie.map(le, "children"), ...ie.map(le, "endComments")]);
              case "documentBody": {
                let { children: W, endComments: K } = j, de = "";
                if (W.length > 0 && K.length > 0) {
                  let ue = F2(j);
                  T2(ue, ["blockFolded", "blockLiteral"]) ? ue.chomping !== "keep" && (de = [n, n]) : de = n;
                }
                return [u3(n, ie.map(le, "children")), de, u3(n, ie.map(le, "endComments"))];
              }
              case "directive":
                return ["%", u3(" ", [j.name, ...j.parameters])];
              case "comment":
                return ["#", j.value];
              case "alias":
                return ["*", j.value];
              case "tag":
                return ee.originalText.slice(j.position.start.offset, j.position.end.offset);
              case "anchor":
                return ["&", j.value];
              case "plain":
                return Q(j.type, ee.originalText.slice(j.position.start.offset, j.position.end.offset), ee);
              case "quoteDouble":
              case "quoteSingle": {
                let W = "'", K = '"', de = ee.originalText.slice(j.position.start.offset + 1, j.position.end.offset - 1);
                if (j.type === "quoteSingle" && de.includes("\\") || j.type === "quoteDouble" && /\\[^"]/.test(de)) {
                  let Fe = j.type === "quoteDouble" ? K : W;
                  return [Fe, Q(j.type, de, ee), Fe];
                }
                if (de.includes(K))
                  return [W, Q(j.type, j.type === "quoteDouble" ? de.replace(/\\"/g, K).replace(/'/g, W.repeat(2)) : de, ee), W];
                if (de.includes(W))
                  return [K, Q(j.type, j.type === "quoteSingle" ? de.replace(/''/g, W) : de, ee), K];
                let ue = ee.singleQuote ? W : K;
                return [ue, Q(j.type, de, ee), ue];
              }
              case "blockFolded":
              case "blockLiteral":
                return k(ie, le, ee);
              case "mapping":
              case "sequence":
                return u3(n, ie.map(le, "children"));
              case "sequenceItem":
                return ["- ", o(2, j.content ? le("content") : "")];
              case "mappingKey":
              case "mappingValue":
                return j.content ? le("content") : "";
              case "mappingItem":
              case "flowMappingItem":
                return B(j, Y, ie, le, ee);
              case "flowMapping":
                return x2(ie, le, ee);
              case "flowSequence":
                return b(ie, le, ee);
              case "flowSequenceItem":
                return le("content");
              default:
                throw new Error(`Unexpected node type ${j.type}`);
            }
          }
          function q2(j) {
            return j.body.children.length > 0 || P(j.body);
          }
          function J(j, Y) {
            return I(j) || Y && (Y.head.children.length > 0 || P(Y.head));
          }
          function L(j, Y, ie, ee) {
            return ie.children[0] === j && /---(?:\s|$)/.test(ee.originalText.slice(E(j), E(j) + 4)) || j.head.children.length > 0 || P(j.head) || I(j.head) ? "head" : J(j, Y) ? false : Y ? "root" : false;
          }
          function Q(j, Y, ie) {
            let ee = w(j, Y, ie);
            return u3(n, ee.map((le) => s5(d(u3(i2, le)))));
          }
          function V(j, Y) {
            if (T2(Y))
              switch (delete Y.position, Y.type) {
                case "comment":
                  if (D2(Y.value))
                    return null;
                  break;
                case "quoteDouble":
                case "quoteSingle":
                  Y.type = "quote";
                  break;
              }
          }
          r2.exports = { preprocess: v, embed: _2, print: M, massageAstNode: V, insertPragma: c };
        } }), Wg = te({ "src/language-yaml/options.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = Mt();
          r2.exports = { bracketSpacing: t2.bracketSpacing, singleQuote: t2.singleQuote, proseWrap: t2.proseWrap };
        } }), Hg = te({ "src/language-yaml/parsers.js"() {
          ne();
        } }), Gg = te({ "node_modules/linguist-languages/data/YAML.json"(e2, r2) {
          r2.exports = { name: "YAML", type: "data", color: "#cb171e", tmScope: "source.yaml", aliases: ["yml"], extensions: [".yml", ".mir", ".reek", ".rviz", ".sublime-syntax", ".syntax", ".yaml", ".yaml-tmlanguage", ".yaml.sed", ".yml.mysql"], filenames: [".clang-format", ".clang-tidy", ".gemrc", "CITATION.cff", "glide.lock", "yarn.lock"], aceMode: "yaml", codemirrorMode: "yaml", codemirrorMimeType: "text/x-yaml", languageId: 407 };
        } }), Ug = te({ "src/language-yaml/index.js"(e2, r2) {
          "use strict";
          ne();
          var t2 = _t(), s5 = Vg(), a2 = Wg(), n = Hg(), u3 = [t2(Gg(), (i2) => ({ since: "1.14.0", parsers: ["yaml"], vscodeLanguageIds: ["yaml", "ansible", "home-assistant"], filenames: [...i2.filenames.filter((l) => l !== "yarn.lock"), ".prettierrc", ".stylelintrc", ".lintstagedrc"] }))];
          r2.exports = { languages: u3, printers: { yaml: s5 }, options: a2, parsers: n };
        } }), Jg = te({ "src/languages.js"(e2, r2) {
          "use strict";
          ne(), r2.exports = [Td(), Gd(), Zd(), ig(), mg(), kg(), Ug()];
        } });
        ne();
        var { version: zg } = Ia(), Lt = Gm(), { getSupportInfo: Xg } = Xn(), Kg = Um(), Yg = Jg(), Qg = qe();
        function Nt(e2) {
          let r2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;
          return function() {
            for (var t2 = arguments.length, s5 = new Array(t2), a2 = 0; a2 < t2; a2++)
              s5[a2] = arguments[a2];
            let n = s5[r2] || {}, u3 = n.plugins || [];
            return s5[r2] = Object.assign(Object.assign({}, n), {}, { plugins: [...Yg, ...Array.isArray(u3) ? u3 : Object.values(u3)] }), e2(...s5);
          };
        }
        var jn = Nt(Lt.formatWithCursor);
        jo.exports = { formatWithCursor: jn, format(e2, r2) {
          return jn(e2, r2).formatted;
        }, check(e2, r2) {
          let { formatted: t2 } = jn(e2, r2);
          return t2 === e2;
        }, doc: Qg, getSupportInfo: Nt(Xg, 0), version: zg, util: Kg, __debug: { parse: Nt(Lt.parse), formatAST: Nt(Lt.formatAST), formatDoc: Nt(Lt.formatDoc), printToDoc: Nt(Lt.printToDoc), printDocToString: Nt(Lt.printDocToString) } };
      });
      return Zg();
    });
  }
});
var import_standalone = __toESM3(require_standalone(), 1);
var unifiedLatexStringCompiler = function unifiedLatexStringCompiler2(options) {
  const {
    pretty = false,
    printWidth = 80,
    useTabs = true,
    forceNewlineEnding = false
  } = options || {};
  const prettyPrinter = (ast) => {
    let formatted = import_standalone.default.format("_", {
      useTabs,
      printWidth,
      parser: "latex-dummy-parser",
      plugins: [
        {
          languages: [
            {
              name: "latex",
              extensions: [".tex"],
              parsers: ["latex-dummy-parser"]
            }
          ],
          parsers: {
            "latex-dummy-parser": {
              parse: () => ast,
              astFormat: "latex-ast",
              locStart: () => 0,
              locEnd: () => 1
            }
          },
          printers: {
            "latex-ast": {
              print: printLatexAst
            }
          }
        }
      ],
      ...options || {}
    });
    if (forceNewlineEnding && !formatted.endsWith("\n")) {
      formatted += "\n";
    }
    return formatted;
  };
  Object.assign(this, {
    Compiler: (ast) => {
      if (!pretty) {
        return printRaw(ast);
      }
      return prettyPrinter(ast);
    }
  });
};
var processor = unified().use(unifiedLatexStringCompiler, { pretty: true }).freeze();

// ../../node_modules/@unified-latex/unified-latex/index.js
var processLatexToAstViaUnified = () => {
  return unified().use(unifiedLatexFromString).use(unifiedLatexAstComplier);
};

// ../tex-to-myst/dist/tex.js
function parseArgument(node3, next) {
  var _a6, _b, _c;
  if (!node3.args)
    node3.args = [];
  if (next.type === "group") {
    const { type: type2, openMark, closeMark, ...rest } = next;
    node3.args.push({ type: "argument", openMark: "{", closeMark: "}", ...rest });
    return true;
  }
  if (next.type === "string" || next.type === "whitespace" || isSpecialSymbol(next)) {
    if (next.content === "*") {
      node3.star = true;
      if (node3.position && next.position)
        node3.position.end = next.position.end;
      return true;
    }
    const lastArg = node3.args[node3.args.length - 1];
    if (mixed_arg_macros.includes(node3.content) && next.content === "[" || (next.content === "[" && (!lastArg || lastArg.openMark === "[") || next.content === "(" && (!lastArg || lastArg.openMark === ")")) && getArguments(node3, "group").length === 0) {
      node3.args.push({
        type: "argument",
        content: [],
        openMark: next.content,
        // will `closeMark` in next pass
        position: { start: (_a6 = next.position) === null || _a6 === void 0 ? void 0 : _a6.start }
      });
      return true;
    }
    if (!lastArg)
      return false;
    if (!lastArg.closeMark && (next.content === "]" && lastArg.openMark === "[" || next.content === ")" && lastArg.openMark === "(")) {
      lastArg.closeMark = next.content;
      if (lastArg.position)
        lastArg.position.end = (_b = next.position) === null || _b === void 0 ? void 0 : _b.end;
      return true;
    }
    if (!lastArg.closeMark) {
      lastArg.content.push(next);
      if (lastArg.position)
        lastArg.position.end = (_c = next.position) === null || _c === void 0 ? void 0 : _c.end;
      return true;
    }
  }
  return false;
}
var macros17 = {
  citet: 1,
  citep: 1,
  citeauthor: 1,
  Citet: 1,
  Citep: 1,
  Citeauthor: 1,
  citealp: 1,
  citeyear: 1,
  citeyearpar: 1,
  primarypubs: 2,
  eqref: 1,
  nameref: 1,
  subref: 1,
  textsubscript: 1,
  textsuperscript: 1,
  adjustwidth: 2,
  author: 1,
  email: 1,
  affil: 1,
  affiliation: 1,
  framebox: 1,
  epigraph: 2,
  tnote: 1,
  ["table*"]: 1,
  arraystretch: 1,
  multirow: 5,
  multicolumn: 3,
  subfigure: 2,
  wrapfigure: 3,
  tabularx: 2,
  longtable: 2,
  ["longtable*"]: 2,
  supertabular: 1,
  cmidrule: 2,
  cline: 1,
  adjustbox: 1,
  resizebox: 2,
  captionof: 2,
  itemsep: 1,
  // Algorithms and proofs
  algorithm: 1,
  algorithmic: 1,
  For: 1,
  ForAll: 1,
  While: 1,
  If: 1,
  ElsIf: 1,
  Comment: 1,
  Until: 1,
  Procedure: 2,
  Function: 2,
  // SI Units: https://texdoc.org/serve/siunitx/0
  SI: 2,
  si: 1,
  qty: 2,
  tothe: 1,
  raiseto: 1,
  ang: 1,
  unit: 1,
  // Chem
  ce: 1,
  // These are character replacements:
  "`": 1,
  "'": 1,
  "^": 1,
  '"': 1,
  H: 1,
  "~": 1,
  c: 1,
  k: 1,
  l: 1,
  "=": 1,
  b: 1,
  ".": 1,
  d: 1,
  r: 1,
  aa: 1,
  AA: 1,
  t: 1,
  u: 1,
  v: 1,
  // Cancel
  cancel: 1,
  bcancel: 1,
  xcancel: 1
};
var mixed_arg_macros = ["multirow"];
function patchOpenArgument(args) {
  var _a6, _b, _c;
  const i2 = args.length - 1;
  if (((_b = (_a6 = args[i2]) === null || _a6 === void 0 ? void 0 : _a6.content) === null || _b === void 0 ? void 0 : _b.length) === 1 && args[i2].content[0].type === "string" && ((_c = args[i2].content[0].content) === null || _c === void 0 ? void 0 : _c.match(/^\(|\[$/))) {
    args[i2].openMark = args[i2].content[0].content;
    args[i2].closeMark = "";
    args[i2].content = [];
  }
}
function walkLatex(node3) {
  if (Array.isArray(node3.content)) {
    let skipRead = false;
    let skipNextWhitespace = false;
    let content3 = node3.content.map((n) => walkLatex(n)).filter((n) => !!n).reduce((l, n) => {
      var _a6, _b;
      if (n.type === "macro" && n.content === "iffalse") {
        skipRead = true;
        return l;
      }
      if (n.type === "macro" && n.content === "fi") {
        skipRead = false;
        skipNextWhitespace = true;
        return l;
      }
      if (skipRead)
        return l;
      if (skipNextWhitespace && n.type === "whitespace") {
        skipNextWhitespace = false;
        return l;
      }
      skipNextWhitespace = false;
      const last = l[l.length - 1];
      if (!last)
        return [n];
      if (last.type === "macro" && macros17[last.content] != null) {
        const currentArgs = getArguments(last, "group").length;
        const maxArgs = macros17[last.content];
        if (currentArgs < maxArgs) {
          const used = parseArgument(last, n);
          if (used)
            return l;
        }
      }
      if (last.type === "string" && n.type === "string" && ((_a6 = last.content) === null || _a6 === void 0 ? void 0 : _a6.match(/`|'|-/)) && ((_b = n.content) === null || _b === void 0 ? void 0 : _b.match(/`|'|-/))) {
        last.content += n.content;
        return l;
      }
      return [...l, n];
    }, []);
    if (node3.type === "environment" && macros17[node3.env] != null) {
      const currentArgs = getArguments(node3, "group").length;
      const maxArgs = macros17[node3.env];
      let used = true;
      let i2 = 0;
      while (currentArgs < maxArgs && used) {
        used = parseArgument(node3, node3.content[i2]);
        i2 += 1;
      }
      content3 = content3.slice(i2 - 1);
    }
    return { ...node3, content: content3 };
  }
  if (Array.isArray(node3.args)) {
    const args = node3.args.map((n) => walkLatex(n)).filter((n) => !!n);
    patchOpenArgument(args);
    return { ...node3, args };
  }
  return node3;
}
function parseLatex(value) {
  const file = processLatexToAstViaUnified().processSync({ value });
  const tree = file.result;
  const transformed = walkLatex(tree);
  return transformed;
}

// ../tex-to-myst/dist/sections.js
function addHeading(node3, state, depth) {
  var _a6, _b;
  const attrs = { depth };
  const content3 = node3.args[node3.args.length - 1];
  const starredIndex = renderInfoIndex(node3, "starred");
  if (starredIndex !== null && ((_a6 = node3.args[starredIndex].content) === null || _a6 === void 0 ? void 0 : _a6.length) > 0) {
    attrs.enumerated = false;
  }
  const tocTitleIndex = renderInfoIndex(node3, "tocTitle");
  if (tocTitleIndex !== null && ((_b = node3.args[tocTitleIndex].content) === null || _b === void 0 ? void 0 : _b.length) > 0) {
    attrs.alt = texToText(node3.args[tocTitleIndex].content);
  }
  state.renderBlock(content3, "heading", attrs);
}
var SECTION_HANDLERS = {
  macro_section(node3, state) {
    state.closeBlock();
    state.openBlock();
    addHeading(node3, state, 2);
  },
  macro_subsection(node3, state) {
    addHeading(node3, state, 3);
  },
  macro_subsubsection(node3, state) {
    addHeading(node3, state, 4);
  },
  macro_paragraph(node3, state) {
    addHeading(node3, state, 5);
  },
  macro_subparagraph(node3, state) {
    addHeading(node3, state, 6);
  }
};

// ../tex-to-myst/dist/colors.js
var colors = {
  // Standard html colors:
  black: "black",
  // #000000
  blue: "blue",
  // #0000FF
  brown: "brown",
  // #A52A2A
  cyan: "cyan",
  // #00FFFF
  darkgray: "darkgray",
  // #A9A9A9
  gray: "gray",
  // #808080
  green: "green",
  // #008000
  lightgray: "lightgray",
  // #D3D3D3
  lime: "lime",
  // #00FF00
  magenta: "magenta",
  // #FF00FF
  olive: "olive",
  // #808000
  orange: "orange",
  // #FFA500
  pink: "pink",
  // #FFC0CB
  purple: "purple",
  // #800080
  red: "red",
  // #FF0000
  teal: "teal",
  // #008080
  violet: "violet",
  // #EE82EE
  white: "white",
  // #FFFFFF
  yellow: "yellow",
  // #FFFF00
  // Other named latex colors
  Apricot: "#FBB982",
  Aquamarine: "#00B5BE",
  Bittersweet: "#C04F17",
  Black: "#221E1F",
  Blue: "#2D2F92",
  BlueGreen: "#00B3B8",
  BlueViolet: "#473992",
  BrickRed: "#B6321C",
  Brown: "#792500",
  BurntOrange: "#F7921D",
  CadetBlue: "#74729A",
  CarnationPink: "#F282B4",
  Cerulean: "#00A2E3",
  CornflowerBlue: "#41B0E4",
  Cyan: "#00AEEF",
  Dandelion: "#FDBC42",
  DarkOrchid: "#A4538A",
  Emerald: "#00A99D",
  ForestGreen: "#009B55",
  Fuchsia: "#8C368C",
  Goldenrod: "#FFDF42",
  Gray: "#949698",
  Green: "#00A64F",
  GreenYellow: "#DFE674",
  JungleGreen: "#00A99A",
  Lavender: "#F49EC4",
  LimeGreen: "#8DC73E",
  Magenta: "#EC008C",
  Mahogany: "#A9341F",
  Maroon: "#AF3235",
  Melon: "#F89E7B",
  MidnightBlue: "#006795",
  Mulberry: "#A93C93",
  NavyBlue: "#006EB8",
  OliveGreen: "#3C8031",
  Orange: "#F58137",
  OrangeRed: "#ED135A",
  Orchid: "#AF72B0",
  Peach: "#F7965A",
  Periwinkle: "#7977B8",
  PineGreen: "#008B72",
  Plum: "#92268F",
  ProcessBlue: "#00B0F0",
  Purple: "#99479B",
  RawSienna: "#974006",
  Red: "#ED1B23",
  RedOrange: "#F26035",
  RedViolet: "#A1246B",
  Rhodamine: "#EF559F",
  RoyalBlue: "#0071BC",
  RoyalPurple: "#613F99",
  RubineRed: "#ED017D",
  Salmon: "#F69289",
  SeaGreen: "#3FBC9D",
  Sepia: "#671800",
  SkyBlue: "#46C5DD",
  SpringGreen: "#C6DC67",
  Tan: "#DA9D76",
  TealBlue: "#00AEB3",
  Thistle: "#D883B7",
  Turquoise: "#00B4CE",
  Violet: "#58429B",
  VioletRed: "#EF58A0",
  White: "#FFFFFF",
  WildStrawberry: "#EE2967",
  Yellow: "#FFF200",
  YellowGreen: "#98CC70",
  YellowOrange: "#FAA21A"
};
function convertLatexColor(state, node3, kind, color2) {
  var _a6;
  if (!kind || !color2) {
    const myColors = { ...colors, ...state.data.colors };
    const named = (_a6 = myColors[color2]) !== null && _a6 !== void 0 ? _a6 : myColors[kind];
    if (named)
      return named;
    state.warn(`Color is not defined: "${color2}"`, node3, "color", {
      note: "Color names are case sensitive",
      url: "https://en.wikibooks.org/wiki/LaTeX/Colors#Predefined_colors"
    });
    return void 0;
  }
  switch (kind) {
    case "gray": {
      let good = true;
      const gray = Math.floor(Number(color2) * 255);
      if (Number.isNaN(gray) || gray < 0 || gray > 255) {
        good = false;
        state.warn(`Problem with gray color: ${color2}`, node3, "color", {
          note: 'The value when using "gray" the value must be between 0 and 1.'
        });
      }
      return good ? `rgb(${gray}, ${gray}, ${gray})` : void 0;
    }
    case "rgb": {
      let good = true;
      const channels = color2.split(",");
      if (channels.length !== 3) {
        good = false;
        state.warn(`The rgb color must define 3 channels.`, node3, "color", {
          note: "These values are red, green, and blue, each must be between 0 and 1"
        });
      }
      const [r2, g, b] = channels.map((v, i2) => {
        const value = Math.floor(Number(v) * 255);
        if (Number.isNaN(value) || value < 0 || value > 255) {
          good = false;
          state.warn(`Problem with rgb "${["red", "green", "blue"][i2]}" color channel: ${v}`, node3, "color", { note: 'The value when using "rgb" values must be between 0 and 1.' });
        }
        return value;
      });
      return good ? `rgb(${r2}, ${g}, ${b})` : void 0;
    }
    case "RGB": {
      let good = true;
      const channels = color2.split(",");
      if (channels.length !== 3) {
        good = false;
        state.warn(`The RGB color must define 3 channels.`, node3, "color", {
          note: "These values are red, green, and blue, each must be between 0 and 255"
        });
      }
      const [r2, g, b] = channels.map((v, i2) => {
        const value = Math.floor(Number(v));
        if (Number.isNaN(value) || value < 0 || value > 255) {
          good = false;
          state.warn(`Problem with RGB "${["red", "green", "blue"][i2]}" color channel: ${v}`, node3, "color", { note: 'The value when using "RGB" values must be between 0 and 255.' });
        }
        return value;
      });
      return good ? `rgb(${r2},${g},${b})` : void 0;
    }
    case "HTML": {
      let good = true;
      if (!(color2.length === 3 || color2.length === 6 || !color2.match(/^([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/))) {
        good = false;
        state.warn(`Problem with HTML color: ${color2}`, node3, "color", {
          note: 'The value when using "HTML" values must be either 3 or 6 hexadecimal (A-F, 0-9) characters.'
        });
      }
      return good ? `#${color2.toUpperCase()}` : void 0;
    }
    case "cmky": {
      let good = true;
      const channels = color2.split(",");
      if (channels.length !== 4) {
        good = false;
        state.warn(`The cmky color must define 4 channels.`, node3, "color", {
          note: "These values are cyan, magenta, yellow, and black, each must be between 0 and 1"
        });
      }
      const [c, m2, k, y] = channels.map((v, i2) => {
        const value = Math.floor(Number(v) * 100);
        if (Number.isNaN(value) || value < 0 || value > 100) {
          good = false;
          state.warn(`Problem with rgb "${["cyan", "magenta", "yellow", "black"][i2]}" color channel: ${v}`, node3, "color", { note: 'The value when using "cmky" values must be between 0 and 1.' });
        }
        return value;
      });
      return good ? `cmky(${c}%, ${m2}%, ${k}%, ${y}%)` : void 0;
    }
    default:
      state.warn(`Unknown color kind of: "${kind}"`, node3, "color", {
        note: "Use gray, rgb, RGB or cmky"
      });
  }
}
var COLOR_HANDLERS = {
  // https://en.wikibooks.org/wiki/LaTeX/Colors#Color_Models
  macro_color(node3, state) {
    state.openParagraph();
    const kind = texToText(getArguments(node3, "argument"));
    const color2 = texToText(getArguments(node3, "group"));
    const style3 = convertLatexColor(state, node3, kind, color2);
    state.openNode("span", style3 ? { style: { color: style3 } } : void 0);
    state.data.openGroups.push("span");
    state.data.ignoreNextWhitespace = true;
  },
  macro_textcolor(node3, state) {
    state.openParagraph();
    const kind = texToText(getArguments(node3, "argument"));
    const [colorNode, children] = getArguments(node3, "group");
    const color2 = texToText(colorNode);
    const style3 = convertLatexColor(state, node3, kind, color2);
    state.renderInline(children, "span", style3 ? { style: { color: style3 } } : void 0);
  },
  macro_definecolor(node3, state) {
    state.closeParagraph();
    const [name3, kind, spec] = getArguments(node3, "group").map(texToText);
    const color2 = convertLatexColor(state, node3, kind, spec);
    if (color2) {
      state.data.colors[name3] = color2;
    }
  }
};

// ../tex-to-myst/dist/algorithms.js
function addNestingStatement(node3, state, { before, after }) {
  var _a6;
  var _b;
  state.closeParagraph();
  state.openParagraph({ indent: state.data.algorithm_indent });
  state.pushNode(typeof before === "string" ? u2("strong", [u2("text", before)]) : before);
  const args = getArguments(node3, "group");
  const children = args[args.length - 1];
  if (children) {
    state.text(" ");
    state.renderChildren(children);
  }
  if (after) {
    state.text(" ");
    state.pushNode(typeof after === "string" ? u2("strong", [u2("text", after)]) : after);
  }
  state.closeParagraph();
  (_a6 = (_b = state.data).algorithm_indent) !== null && _a6 !== void 0 ? _a6 : _b.algorithm_indent = 0;
  state.data.algorithm_indent += 1;
}
function finishNestingStatement(node3, state, { text: text7 }) {
  var _a6;
  var _b;
  state.closeParagraph();
  (_a6 = (_b = state.data).algorithm_indent) !== null && _a6 !== void 0 ? _a6 : _b.algorithm_indent = 0;
  state.data.algorithm_indent -= 1;
  state.openParagraph({ indent: state.data.algorithm_indent });
  state.pushNode(u2("strong", [u2("text", text7)]));
  const args = getArguments(node3, "group");
  const children = args[args.length - 1];
  if (children) {
    state.text(" ");
    state.renderChildren(children);
  }
  state.closeParagraph();
}
function numberParagraphsAsLines(node3) {
  const paragraphs = selectAll("paragraph", node3);
  paragraphs.forEach((p5, i2) => {
    const l = p5;
    l.type = "algorithmLine";
    l.enumerator = String(i2 + 1);
  });
}
function createTheoremHandler(name3) {
  return function(node3, state) {
    state.closeParagraph();
    state.openNode("proof", { kind: name3, enumerated: true });
    state.renderChildren(node3);
    state.closeParagraph();
    state.closeNode();
  };
}
function createNamedFunctionHandler(name3) {
  return function(node3, state) {
    const args = getArguments(node3, "group");
    const funcName = args.length > 1 ? ` ${texToText(args[0])}` : "";
    const before = funcName ? [u2("strong", [u2("text", name3)]), u2("smallcaps", [u2("text", funcName)]), u2("text", "(")] : `${name3}(`;
    const after = funcName ? u2("text", ")") : ")";
    addNestingStatement(node3, state, { before, after });
  };
}
var ALGORITHM_HANDLERS = {
  env_algorithm(node3, state) {
    var _a6, _b;
    state.closeParagraph();
    state.openNode("proof", { kind: "algorithm" });
    state.renderChildren(node3);
    state.closeParagraph();
    const proof2 = state.top();
    const caption3 = select("caption", proof2);
    if (caption3) {
      caption3.type = "admonitionTitle";
      caption3.children = (_a6 = caption3.children) === null || _a6 === void 0 ? void 0 : _a6[0].children;
    }
    if (caption3 === null || caption3 === void 0 ? void 0 : caption3.label) {
      proof2.label = caption3.label;
      delete caption3.label;
      delete caption3.identifier;
    }
    if (proof2.label) {
      const { label, identifier } = (_b = normalizeLabel(proof2.label)) !== null && _b !== void 0 ? _b : {};
      proof2.label = label;
      proof2.identifier = identifier;
      proof2.enumerated = true;
    }
    numberParagraphsAsLines(proof2);
    state.closeNode();
  },
  env_algorithmic(node3, state) {
    state.closeParagraph();
    const forceProof = state.top().type !== "proof";
    if (forceProof)
      state.openNode("proof", { kind: "algorithm" });
    state.data.algorithm_indent = 0;
    state.renderChildren(node3);
    state.closeParagraph();
    if (forceProof) {
      numberParagraphsAsLines(state.top());
      state.closeNode();
    }
  },
  macro_Loop(node3, state) {
    addNestingStatement(node3, state, { before: "loop" });
  },
  macro_For(node3, state) {
    addNestingStatement(node3, state, { before: "for", after: "do" });
  },
  macro_ForAll(node3, state) {
    addNestingStatement(node3, state, { before: "for all", after: "do" });
  },
  macro_State(node3, state) {
    state.closeParagraph();
    state.openParagraph({ indent: state.data.algorithm_indent });
  },
  macro_Ensure(node3, state) {
    state.closeParagraph();
    state.openParagraph({ indent: state.data.algorithm_indent });
    state.pushNode(u2("strong", [u2("text", "Ensure: ")]));
  },
  macro_Require(node3, state) {
    state.closeParagraph();
    state.openParagraph({ indent: state.data.algorithm_indent });
    state.pushNode(u2("strong", [u2("text", "Require: ")]));
  },
  macro_Repeat(node3, state) {
    addNestingStatement(node3, state, { before: "repeat " });
  },
  macro_Until(node3, state) {
    finishNestingStatement(node3, state, { text: "until" });
  },
  macro_While(node3, state) {
    addNestingStatement(node3, state, { before: "while", after: "do" });
  },
  macro_EndWhile(node3, state) {
    finishNestingStatement(node3, state, { text: "end while" });
  },
  macro_EndFor(node3, state) {
    finishNestingStatement(node3, state, { text: "end for" });
  },
  macro_EndLoop(node3, state) {
    finishNestingStatement(node3, state, { text: "end loop" });
  },
  macro_If(node3, state) {
    addNestingStatement(node3, state, { before: "if", after: "then" });
  },
  macro_ElsIf(node3, state) {
    var _a6;
    var _b;
    (_a6 = (_b = state.data).algorithm_indent) !== null && _a6 !== void 0 ? _a6 : _b.algorithm_indent = 0;
    state.data.algorithm_indent -= 1;
    addNestingStatement(node3, state, { before: "else if", after: "then" });
  },
  macro_Else(node3, state) {
    var _a6;
    var _b;
    finishNestingStatement(node3, state, { text: "else" });
    (_a6 = (_b = state.data).algorithm_indent) !== null && _a6 !== void 0 ? _a6 : _b.algorithm_indent = 0;
    state.data.algorithm_indent += 1;
  },
  macro_EndIf(node3, state) {
    finishNestingStatement(node3, state, { text: "end if" });
  },
  macro_Procedure: createNamedFunctionHandler("procedure"),
  macro_EndProcedure(node3, state) {
    finishNestingStatement(node3, state, { text: "end procedure" });
  },
  macro_Function: createNamedFunctionHandler("function"),
  macro_EndFunction(node3, state) {
    finishNestingStatement(node3, state, { text: "end function" });
  },
  macro_Comment(node3, state) {
    const args = getArguments(node3, "group");
    const children = args[args.length - 1];
    if (!children)
      return;
    state.openNode("span", { style: { float: "right" } });
    state.renderChildren(children);
    state.data.ignoreNextWhitespace = true;
    state.closeNode();
  }
};

// ../tex-to-myst/dist/frontmatter.js
function getContentFromRenderedSpan(node3) {
  var _a6, _b, _c, _d2, _e;
  if (!node3)
    return "";
  const copy2 = mergeTextNodes(copyNode(node3));
  if (((_a6 = copy2 === null || copy2 === void 0 ? void 0 : copy2.children) === null || _a6 === void 0 ? void 0 : _a6.length) === 1 && ((_b = copy2 === null || copy2 === void 0 ? void 0 : copy2.children) === null || _b === void 0 ? void 0 : _b[0].type) === "text") {
    return (_e = (_d2 = (_c = copy2 === null || copy2 === void 0 ? void 0 : copy2.children) === null || _c === void 0 ? void 0 : _c[0].value) === null || _d2 === void 0 ? void 0 : _d2.trim()) !== null && _e !== void 0 ? _e : "";
  } else {
    return copy2 !== null && copy2 !== void 0 ? copy2 : "";
  }
}
function childrenOrString(node3) {
  var _a6;
  if (!node3)
    return "";
  if (typeof node3 === "string")
    return node3;
  if (Array.isArray(node3))
    return node3;
  return (_a6 = node3 === null || node3 === void 0 ? void 0 : node3.children) !== null && _a6 !== void 0 ? _a6 : "";
}
function validateEmail2(email) {
  const re = /^(([^<>()[\]\\.,;:\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,}))$/;
  return re.test(String(email).toLowerCase());
}
function extractEmailFromName(author) {
  const { name: name3 } = author;
  if (!author.email && typeof name3 === "string") {
    const matcher = /(([^<>()[\]\\.,;:\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,}))/;
    const match3 = name3.match(matcher);
    if (match3) {
      author.email = match3[0];
      author.name = name3.replace(matcher, "").trim();
    } else {
      author.name = name3;
    }
  } else {
    author.name = name3;
  }
  return author;
}
function getAuthorOrEmailFromNode(node3) {
  if (typeof node3 === "string")
    return extractEmailFromName({ name: node3 });
  const copy2 = copyNode(node3);
  remove(copy2, "break");
  const author = {};
  selectAll("inlineCode,link", copy2).forEach((n) => {
    const maybeEmail = toText(n);
    if (validateEmail2(maybeEmail)) {
      author.email = maybeEmail;
      n.type = "remove";
      return;
    }
    if (n.url && validateEmail2(n.url.replace(/^mailto:/, ""))) {
      author.email = n.url.replace(/^mailto:/, "");
      n.type = "remove";
    }
  });
  remove(copy2, "remove");
  author.name = getContentFromRenderedSpan(copy2);
  return extractEmailFromName(author);
}
function addAffiliation(node3, state) {
  state.closeParagraph();
  const fm = state.data.frontmatter;
  if (!fm.authors)
    fm.authors = [];
  if (!fm.affiliations)
    fm.affiliations = [];
  const affilNumber = texToText(getArguments(node3, "argument"));
  const [affil] = getArguments(node3, "group");
  state.openNode("span");
  state.renderChildren(affil);
  state.closeParagraph();
  const renderedAffil = state.stack.pop();
  const fmAffil = { id: affilNumber, name: getContentFromRenderedSpan(renderedAffil) };
  if (!affilNumber && fm.authors.length > 0) {
    const lastAuthor = fm.authors[fm.authors.length - 1];
    if (!lastAuthor.affiliations)
      lastAuthor.affiliations = [];
    lastAuthor.affiliations.push(childrenOrString(fmAffil.name));
  } else {
    fm.affiliations.push(fmAffil);
  }
}
function addKnownMacros(state, name3) {
  switch (name3) {
    case "siunitx":
      state.data.macros["\\si"] = "\\mathrm{ #1 }";
      return;
    default:
      break;
  }
}
function cleanMacro(macro2) {
  return macro2.trim().replace(/(^\$)|(\$$)/g, "");
}
function newCommand(opts) {
  return (node3, state) => {
    state.closeParagraph();
    const [nameNode, macroNode] = getArguments(node3, "group");
    getPositionExtents(macroNode);
    const name3 = originalValue(state.tex, { position: getPositionExtents(nameNode) });
    const macro2 = originalValue(state.tex, { position: getPositionExtents(macroNode) });
    if (state.data.macros[name3]) {
      if ((opts === null || opts === void 0 ? void 0 : opts.warn) === "defined") {
        state.warn(`Multiple macros defined with the same value${(opts === null || opts === void 0 ? void 0 : opts.override) ? "; overriding" : ""}: "${name3}": "${macro2}"`, node3);
      }
      if (!(opts === null || opts === void 0 ? void 0 : opts.override))
        return;
    }
    if (!state.data.macros[name3] && (opts === null || opts === void 0 ? void 0 : opts.warn) === "undefined") {
      state.warn(`Attempting to redefine a currently undefined macro: "${name3}": "${macro2}"`, node3);
    }
    state.data.macros[name3] = cleanMacro(macro2);
    const macroName = name3.replace(/^\\/, "");
    state.data.dynamicHandlers[`macro_${macroName}`] = createMacroHandler(name3, macroNode);
  };
}
var FRONTMATTER_HANDLERS = {
  macro_usepackage(node3, state) {
    state.closeParagraph();
    const packages = texToText(getArguments(node3, "group")).split(",").map((p5) => p5.trim()).filter((p5) => !!p5);
    packages.forEach((p5) => {
      if (state.data.packages.indexOf(p5) === -1) {
        addKnownMacros(state, p5);
        state.data.packages.push(p5);
        return;
      }
      state.warn(`Multiple packages imported with the same name: "${p5}"`, node3);
    });
  },
  /** `newcommand` defines a new command, and makes an error if it is already defined. */
  macro_newcommand: newCommand({ warn: "defined", override: true }),
  /** `renewcommand` redefines a predefined command, and makes an error if it is not yet defined. */
  macro_renewcommand: newCommand({ warn: "undefined", override: true }),
  /** `providecommand` defines a new command if it isn't already defined. */
  macro_providecommand: newCommand({ override: false }),
  macro_date(node3, state) {
    state.closeParagraph();
  },
  macro_maketitle(node3, state) {
    state.closeParagraph();
    state.data.maketitle = true;
  },
  macro_tableofcontents(node3, state) {
    state.closeParagraph();
  },
  macro_appendix(node3, state) {
    state.closeParagraph();
    state.closeBlock();
    state.data.appendix = true;
  },
  macro_title(node3, state) {
    state.closeParagraph();
    const [shortTitleNode] = getArguments(node3, "argument");
    const [titleNode] = getArguments(node3, "group");
    state.openNode("span");
    state.renderChildren(titleNode);
    state.closeParagraph();
    if (state.data.frontmatter.title) {
      state.warn("Multiple titles defined in document", node3);
      state.closeNode();
    } else {
      const renderedTitle = state.stack.pop();
      state.data.frontmatter.title = childrenOrString(getContentFromRenderedSpan(renderedTitle));
    }
    if (shortTitleNode) {
      state.openNode("span");
      state.renderChildren(shortTitleNode);
      state.closeParagraph();
      if (state.data.frontmatter.short_title) {
        state.warn("Multiple short titles defined in document", node3);
        state.closeNode();
      } else {
        const renderedShortTitle = state.stack.pop();
        state.data.frontmatter.short_title = childrenOrString(getContentFromRenderedSpan(renderedShortTitle));
      }
    }
  },
  macro_author(node3, state) {
    var _a6;
    state.closeParagraph();
    const fm = state.data.frontmatter;
    if (!fm.authors)
      fm.authors = [];
    const [affilNode, emailNode] = getArguments(node3, "argument");
    const [author] = getArguments(node3, "group");
    state.openNode("span");
    state.data.andCallback = () => {
      var _a7;
      state.closeParagraph();
      const nextAuthor = state.stack.pop();
      const andAuthor = {};
      const { name: name4, email: email2 } = getAuthorOrEmailFromNode(getContentFromRenderedSpan(nextAuthor));
      andAuthor.name = childrenOrString(name4);
      if (email2) {
        andAuthor.corresponding = true;
        andAuthor.email = email2;
      }
      (_a7 = state.data.frontmatter.authors) === null || _a7 === void 0 ? void 0 : _a7.push(andAuthor);
      state.openNode("span");
    };
    state.renderChildren(author);
    delete state.data.andCallback;
    state.closeParagraph();
    const renderedAuthor = state.stack.pop();
    const fmAuthor = {};
    const { name: name3, email } = getAuthorOrEmailFromNode(getContentFromRenderedSpan(renderedAuthor));
    fmAuthor.name = childrenOrString(name3);
    if (email) {
      fmAuthor.corresponding = true;
      fmAuthor.email = email;
    }
    const affilNumber = texToText(affilNode);
    const emailText = texToText(emailNode);
    if (affilNumber) {
      fmAuthor.affiliations = affilNumber.split(/,|;|&/).map((a2) => a2.trim());
    }
    if (emailText) {
      fmAuthor.corresponding = true;
      fmAuthor.email = emailText;
    }
    (_a6 = state.data.frontmatter.authors) === null || _a6 === void 0 ? void 0 : _a6.push(fmAuthor);
  },
  macro_thanks(node3, state) {
    const content3 = getArguments(node3, "group");
    state.text(" ");
    state.renderChildren({ content: content3 });
  },
  macro_affil: addAffiliation,
  macro_affiliation: addAffiliation,
  macro_email(node3, state) {
    var _a6;
    if (state.data.maketitle) {
      return;
    }
    state.closeParagraph();
    const fm = state.data.frontmatter;
    const lastAuthor = (_a6 = fm.authors) === null || _a6 === void 0 ? void 0 : _a6[fm.authors.length - 1];
    const [emailNode] = getArguments(node3, "group");
    state.openNode("span");
    state.renderChildren(emailNode);
    state.closeParagraph();
    const renderedEmail = state.stack.pop();
    const email = childrenOrString(getContentFromRenderedSpan(renderedEmail));
    if (!lastAuthor) {
      state.warn(`Unexpected use of email "${texToText(email)}" without defining authors.`, node3, "email");
      return;
    }
    lastAuthor.corresponding = true;
    lastAuthor.email = email;
  },
  env_abstract(node3, state) {
    state.openBlock({ data: { part: "abstract" } });
    state.renderChildren(node3);
    state.closeBlock();
  },
  macro_keywords(node3, state) {
    state.closeParagraph();
    const keywords = texToText(node3);
    state.data.frontmatter.keywords = keywords.split(/,|;/).map((k) => k.trim()).filter((k) => !!k);
  },
  macro_newtheorem(node3, state) {
    var _a6;
    const [, nameNode, x2, labelNode, y] = (_a6 = node3.args) !== null && _a6 !== void 0 ? _a6 : [];
    const name3 = texToText(nameNode);
    const label = texToText(labelNode);
    const countWith = texToText(x2) || void 0;
    const countAfter = texToText(y) || void 0;
    state.data.theorems[name3] = { label, countWith, countAfter };
    state.data.dynamicHandlers[`env_${name3}`] = createTheoremHandler(name3);
  }
};
FRONTMATTER_HANDLERS.macro_Author = FRONTMATTER_HANDLERS.macro_author;

// ../tex-to-myst/dist/figures.js
function renderCaption(node3, state) {
  state.closeParagraph();
  state.openNode("caption");
  const args = getArguments(node3, "group");
  const children = args[args.length - 1];
  state.openParagraph();
  state.renderChildren(children);
  state.closeParagraph();
  state.closeNode();
}
function centering(node3, state) {
  state.closeParagraph();
  const container4 = state.top();
  if (container4.type === "container") {
    container4.align = "center";
  } else {
    state.warn("Unknown use of centering, currently this only works for containers", node3);
  }
}
function renderFigure(node3, state) {
  state.closeParagraph();
  state.openNode("container", { kind: "figure" });
  state.renderChildren(node3);
  state.closeParagraph();
  state.closeNode();
}
var FIGURE_HANDLERS = {
  env_figure: renderFigure,
  env_subfigure: renderFigure,
  env_wrapfigure: renderFigure,
  env_centering(node3, state) {
    centering(node3, state);
    state.renderChildren(node3);
  },
  macro_centering: centering,
  macro_includegraphics(node3, state) {
    var _a6, _b, _c;
    state.closeParagraph();
    const url = texToText(getArguments(node3, "group"));
    const args = (_c = (_b = (_a6 = getArguments(node3, "argument")) === null || _a6 === void 0 ? void 0 : _a6[0]) === null || _b === void 0 ? void 0 : _b.content) !== null && _c !== void 0 ? _c : [];
    if (args.length === 4 && args[0].content === "width" && args[1].content === "=" && Number.isFinite(Number.parseFloat(args[2].content))) {
      const width = `${Math.round(Number.parseFloat(args[2].content) * 100)}%`;
      state.pushNode(u2("image", { url, width }));
    } else {
      state.pushNode(u2("image", { url }));
    }
  },
  macro_caption: renderCaption,
  macro_captionof: renderCaption,
  macro_framebox(node3, state) {
    state.closeParagraph();
    const [children] = getArguments(node3, "group");
    if (!children)
      return;
    state.openNode("container", { kind: "figure" });
    state.renderChildren(children);
    state.closeParagraph();
    state.closeNode();
  }
};
FIGURE_HANDLERS["env_figure*"] = FIGURE_HANDLERS.env_figure;

// ../tex-to-myst/dist/verbatim.js
function getListingProperty(line2) {
  if (!line2 || !line2.match(/^\s*\[(.*)\]\s*$/))
    return false;
  const props = {};
  ["language", "caption", "label", "numbers", "firstnumber"].forEach((key2) => {
    var _a6;
    let prop = (_a6 = line2.match(new RegExp(`${key2}(?:[\\s]*)?=([^,\\]]*)`))) === null || _a6 === void 0 ? void 0 : _a6[1].trim();
    if (prop === null || prop === void 0 ? void 0 : prop.match(/^{.*}$/))
      prop = prop.slice(1, prop.length - 1);
    props[key2] = prop;
  });
  return props;
}
function parseFirstLine(vfile2, node3) {
  const code7 = node3.content;
  const lines = code7 === null || code7 === void 0 ? void 0 : code7.split("\n");
  const firstLine = lines === null || lines === void 0 ? void 0 : lines[0];
  const props = getListingProperty(firstLine);
  if (!lines || props === false)
    return { value: code7 === null || code7 === void 0 ? void 0 : code7.replace(/(\s)$/, "") };
  const value = lines.slice(1).join("\n").replace(/(\s)$/, "");
  let startingLineNumber = void 0;
  let showLineNumbers = void 0;
  if (props.firstnumber) {
    const number2 = parseInt(props.firstnumber, 10);
    if (isNaN(number2)) {
      fileWarn(vfile2, 'Unknown code option for "firstnumber", should be an integer.', { node: node3 });
    } else {
      startingLineNumber = number2;
    }
  }
  if (props.numbers) {
    if (["none", "left", "right"].includes(props.numbers)) {
      if (props.numbers !== "none")
        showLineNumbers = true;
    } else {
      fileWarn(vfile2, `Unknown code option for "numbers", should be an 'none', 'left' or 'right'.`, { node: node3 });
    }
  }
  return {
    lang: props.language,
    value,
    label: props.label,
    caption: props.caption,
    showLineNumbers,
    startingLineNumber
  };
}
var VERBATIM_HANDLERS = {
  verbatim(node3, state) {
    var _a6;
    if (node3.env === "comment") {
      state.pushNode(u2("comment", { value: (_a6 = node3 === null || node3 === void 0 ? void 0 : node3.content.trim()) !== null && _a6 !== void 0 ? _a6 : "" }));
      return;
    }
    state.closeParagraph();
    const { value, lang, showLineNumbers, startingLineNumber, ...props } = parseFirstLine(state.file, node3);
    const { label, identifier } = normalizeLabel(props.label) || {};
    const code7 = u2("code", { value, lang, showLineNumbers, startingLineNumber });
    if (props.caption) {
      state.pushNode(u2("container", { kind: "code", label, identifier }, [
        code7,
        u2("caption", [u2("paragraph", [u2("text", props.caption)])])
      ]));
      return;
    }
    code7.label = label;
    code7.identifier = identifier;
    state.pushNode(code7);
  }
};

// ../tex-to-myst/dist/misc.js
function pass() {
}
var MISC_HANDLERS = {
  macro_bibliography(node3, state) {
    state.closeParagraph();
    const files = texToText(node3).split(",").map((t2) => t2.trim()).filter((t2) => !!t2);
    state.data.bibliography.push(...files);
  },
  macro_bibliographystyle: pass,
  env_center(node3, state) {
    var _a6;
    state.closeParagraph();
    state.renderChildren(node3);
    const parent2 = state.top();
    const last = (_a6 = parent2 === null || parent2 === void 0 ? void 0 : parent2.children) === null || _a6 === void 0 ? void 0 : _a6.slice(-1)[0];
    if (!last) {
      if (parent2)
        parent2.align = "center";
      return;
    }
    if (!parent2)
      return;
    if (parent2.type === "container") {
      parent2.align = "center";
    } else {
      last.align = "center";
    }
  },
  env_minipage(node3, state) {
    var _a6;
    state.closeParagraph();
    const top = state.top();
    if ((top === null || top === void 0 ? void 0 : top.type) === "container" && (top === null || top === void 0 ? void 0 : top.kind) === "figure" && ((_a6 = top === null || top === void 0 ? void 0 : top.children) === null || _a6 === void 0 ? void 0 : _a6.length)) {
      const topCopy = copyNode({ ...top, children: [] });
      delete topCopy.label;
      delete topCopy.identifier;
      delete topCopy.html_id;
      state.closeNode();
      state.openNode("container", topCopy);
    }
    state.renderChildren(node3);
  },
  env_adjustwidth(node3, state) {
    state.closeParagraph();
    state.renderChildren(node3);
  },
  macro_mbox(node3, state) {
    const [content3] = getArguments(node3, "group");
    state.renderChildren(content3);
  },
  macro_and(node3, state) {
    var _a6, _b;
    (_b = (_a6 = state.data).andCallback) === null || _b === void 0 ? void 0 : _b.call(_a6);
  },
  env_landscape(node3, state) {
    state.closeParagraph();
    state.openBlock({ landscape: true });
    state.renderChildren(node3);
    state.closeParagraph();
    state.closeBlock();
  },
  macro_input(node3, state) {
    const [content3] = getArguments(node3, "group");
    const file = texToText(content3);
    state.addLeaf("include", { file: file.endsWith(".tex") ? file : `${file}.tex` });
  },
  macro_noindent: pass,
  macro_acknowledgments: pass,
  macro_def: pass,
  macro_arraystretch: pass,
  // Some size options, not respecting at the moment
  macro_vspace: pass,
  macro_hfill: pass,
  macro_tiny: pass,
  macro_small: pass,
  macro_footnotesize: pass,
  macro_normalsize: pass,
  macro_large: pass,
  macro_Large: pass,
  macro_LARGE: pass,
  macro_huge: pass,
  // These are sometimes used in tables...
  macro_bgroup: pass,
  macro_egroup: pass,
  // Used with adjustbox...
  macro_textwidth: pass,
  macro_onecolumn: pass,
  macro_linewidth: pass,
  // line numbers
  macro_linenumbers: pass,
  macro_nolinenumbers: pass,
  // counters
  macro_setcounter: pass
};

// ../tex-to-myst/dist/tables.js
var ALIGNMENT_MAP = { c: "center", l: "left", r: "right" };
function getTabularAlignment(arg2) {
  if (!arg2 || !arg2.content.reduce((b, { type: type2 }) => b && ["string", "whitespace"].includes(type2), true)) {
    return;
  }
  const spec = texToText(arg2.content).replace(/[\s|]/g, "");
  if (!spec.match(/([lrc]*)/))
    return;
  return spec.split("").map((a2) => ALIGNMENT_MAP[a2]);
}
function fixTable(vfile2, table5, alignments) {
  if ((table5 === null || table5 === void 0 ? void 0 : table5.type) !== "table")
    return;
  const multirowTracker = {};
  const rowSizes = table5.children.map((tr3) => ({
    tr: tr3,
    size: tr3.children.reduce((size, td) => {
      var _a6;
      return size + ((_a6 = td.colspan) !== null && _a6 !== void 0 ? _a6 : 1);
    }, 0)
  }));
  const uniqueSizes = [...new Set(rowSizes.map(({ size }) => size))];
  if (uniqueSizes.length !== 1) {
    fileWarn(vfile2, `Uneven table found, please check your rows to get an even table.`, {
      node: table5,
      note: `Row sizes are: ${rowSizes.map(({ size }) => size).join(", ")}`
    });
    rowSizes.reduce((rows, row2, index4) => {
      if (index4 > 0 && rowSizes[index4 - 1].size !== row2.size) {
        rows.push({ ...row2, previous: rowSizes[index4 - 1].size });
      }
      return rows;
    }, []).forEach(({ tr: tr3, size, previous }) => {
      fileWarn(vfile2, `Table row of size (${size}) does not match previous row size (${previous})`, {
        node: tr3
      });
    });
  }
  let useAlignments = false;
  if (alignments && uniqueSizes.length === 1 && (uniqueSizes[0] === alignments.length || alignments.length === 1)) {
    useAlignments = true;
  } else if (alignments && uniqueSizes.length === 1 && uniqueSizes[0] !== alignments.length) {
    fileWarn(vfile2, `Table alignment argument does not match number of columns`, { node: table5 });
  }
  table5.children.forEach((tr3, rowIndex) => {
    Object.keys(multirowTracker).forEach((key2) => {
      const colIndex = key2;
      if (multirowTracker[colIndex] > 1) {
        multirowTracker[colIndex]--;
      } else {
        delete multirowTracker[colIndex];
      }
    });
    const columnIndex = tr3.children.reduce((info, td) => {
      var _a6;
      info.columnIndex.push(info.size);
      info.size += (_a6 = td.colspan) !== null && _a6 !== void 0 ? _a6 : 1;
      return info;
    }, { columnIndex: [], size: 0 }).columnIndex;
    tr3.children = tr3.children.filter((td, index4) => {
      var _a6, _b;
      const colIndex = columnIndex[index4];
      if (td.rowspan && td.rowspan > 1) {
        for (let col = 0; col < ((_a6 = td.colspan) !== null && _a6 !== void 0 ? _a6 : 1); col++) {
          multirowTracker[colIndex + col] = td.rowspan;
        }
      }
      if (alignments && useAlignments && !td.align) {
        const align = (_b = alignments[colIndex]) !== null && _b !== void 0 ? _b : alignments[0];
        if (align !== "left")
          td.align = align;
      }
      if (multirowTracker[colIndex] && td.rowspan !== multirowTracker[colIndex]) {
        if (!isEmptyCell(td)) {
          fileWarn(vfile2, `Non-empty placeholder cell found at row ${rowIndex}, column ${colIndex}.`, { node: table5 });
        }
        return false;
      }
      return true;
    });
  });
}
function isEmptyCell(cell3) {
  return toText(cell3).trim() === "";
}
var createTable = (addContainer = false) => {
  return (node3, state) => {
    state.closeParagraph();
    const table5 = {
      rows: [],
      cells: [],
      cell: [],
      // These are used for longtable
      caption: void 0,
      label: void 0,
      firstHead: [],
      head: [],
      foot: [],
      lastFoot: []
    };
    const IGNORE = /* @__PURE__ */ new Set([
      "cline",
      "hline",
      "rule",
      "midrule",
      "cmidrule",
      "toprule",
      "bottomrule",
      "tophline",
      "middlehline",
      "bottomhline"
    ]);
    const alignments = getTabularAlignment(node3.args[node3.args.length - 1]);
    node3.content.forEach((n) => {
      if (n.type === "comment")
        return;
      if (n.type === "macro" && IGNORE.has(n.content))
        return;
      if (n.type === "macro" && n.content === "label" && !table5.label) {
        table5.label = n;
        return;
      }
      if (n.type === "macro" && n.content === "caption") {
        table5.caption = n;
        return;
      }
      if (n.type === "macro" && n.content === "endfirsthead") {
        table5.firstHead = table5.rows;
        table5.rows = [];
        return;
      }
      if (n.type === "macro" && n.content === "endhead") {
        table5.head = table5.rows;
        table5.rows = [];
        return;
      }
      if (n.type === "macro" && n.content === "endfoot") {
        table5.foot = table5.rows;
        table5.rows = [];
        return;
      }
      if (n.type === "macro" && n.content === "endlastfoot") {
        table5.lastFoot = table5.rows;
        table5.rows = [];
        return;
      }
      if (n.type === "macro" && (n.content === "\\" || n.content === "tabularnewline")) {
        table5.cells.push(table5.cell);
        if (table5.cells.flat().length > 0)
          table5.rows.push(table5.cells);
        table5.cell = [];
        table5.cells = [];
        return;
      }
      if (n.type === "string" && n.content === "&") {
        table5.cells.push(table5.cell);
        table5.cell = [];
        return;
      }
      if (table5.cell.length === 0 && (n.type === "whitespace" || n.type === "parbreak"))
        return;
      table5.cell.push(n);
    });
    if (table5.cell.length > 0)
      table5.cells.push(table5.cell);
    if (table5.cells.length > 0)
      table5.rows.push(table5.cells);
    if (table5.firstHead.length > 0) {
      table5.rows.unshift(...table5.firstHead);
    } else {
      table5.rows.unshift(...table5.head);
    }
    if (table5.lastFoot.length > 0) {
      table5.rows.push(...table5.lastFoot);
    } else {
      table5.rows.push(...table5.foot);
    }
    if (addContainer) {
      state.openNode("container", { kind: "table" });
      if (table5.caption) {
        state.renderChildren({ content: [{ type: "group", content: [table5.caption] }] });
      }
      if (table5.label) {
        state.renderChildren({ content: [{ type: "group", content: [table5.label] }] });
      }
    }
    state.openNode("table");
    table5.rows.forEach((row2) => {
      state.openNode("tableRow");
      row2.forEach((cell3) => {
        state.openNode("tableCell");
        state.renderChildren({
          content: [
            {
              // Putting things in a group helps with floating `\bf` commands
              // For example:
              // `& \bf title &` --> `& {\bf title} &`
              type: "group",
              // Ignore ending whitespace "title &" should become "title"
              content: trimWhitespace(cell3)
            }
          ]
        });
        state.closeParagraph();
        unnestParagraphs(state.top(), "tableCell");
        state.closeNode("tableCell");
      });
      state.closeNode("tableRow");
    });
    const tableNode = state.top();
    fixTable(state.file, tableNode, alignments);
    state.closeNode("table");
    if (addContainer) {
      state.closeParagraph();
      state.closeNode();
    }
  };
};
var TABLE_HANDLERS = {
  env_table(node3, state) {
    state.closeParagraph();
    state.openNode("container", { kind: "table" });
    state.renderChildren(node3);
    state.closeParagraph();
    state.closeNode();
  },
  ["env_table*"](node3, state) {
    state.closeParagraph();
    state.openNode("container", { kind: "table" });
    state.renderChildren(node3);
    state.closeParagraph();
    state.closeNode();
  },
  env_tabular: createTable(),
  env_tabularx: createTable(),
  env_supertabular: createTable(),
  env_longtable: createTable(true),
  "env_longtable*": createTable(true),
  env_threeparttable(node3, state) {
    state.closeParagraph();
    const envId = createId();
    const last = state.data.createId;
    state.data.createId = (tnote) => `${envId}-${tnote || createId()}`;
    state.renderChildren(node3);
    state.data.createId = last;
  },
  macro_tnote(node3, state) {
    var _a6, _b;
    const actualLabel = texToText(getArguments(node3, "group"));
    if (!actualLabel) {
      state.error("The tnote must have a label.", node3, "tnote", {
        note: 'For example, "\\tnote{1}"'
      });
      return;
    }
    const label = ((_b = (_a6 = state.data).createId) === null || _b === void 0 ? void 0 : _b.call(_a6, actualLabel)) || actualLabel;
    state.pushNode(u2("footnoteReference", { label }));
  },
  env_tablenotes(node3, state) {
    state.closeParagraph();
    const items = node3.content.reduce((l, n) => {
      const last = l[l.length - 1];
      if (!last && n.type === "whitespace")
        return l;
      if (n.type === "macro" && n.content === "item" || !last) {
        l.push([n]);
      } else {
        last.push(n);
      }
      return l;
    }, []);
    items.forEach((nodes) => {
      var _a6, _b;
      const [item, ...content3] = nodes;
      if (item.type !== "macro" && item.content !== "item") {
        state.warn(`Expected an item not ${item.type} as a child of tablenotes`, item);
        return;
      }
      const actualLabel = texToText(getArguments(item, "argument"));
      if (!actualLabel) {
        state.error("Each tablenote must have a label", node3, "tnote", {
          note: 'For example, "\\item[1]"'
        });
      }
      const label = ((_b = (_a6 = state.data).createId) === null || _b === void 0 ? void 0 : _b.call(_a6, actualLabel)) || actualLabel;
      state.openNode("footnoteDefinition", { label });
      state.renderChildren({ content: content3 });
      state.closeParagraph();
      state.closeNode();
    });
  },
  macro_resizebox(node3, state) {
    const lastArg = getArguments(node3, "group").pop();
    if (lastArg)
      state.renderChildren(lastArg);
  },
  env_adjustbox(node3, state) {
    state.renderChildren(node3);
  },
  macro_makecell(node3, state) {
    state.renderChildren(node3);
  },
  macro_multirow(node3, state) {
    var _a6, _b, _c;
    const nrowArg = ((_a6 = node3.args[0]) === null || _a6 === void 0 ? void 0 : _a6.openMark) === "{" ? node3.args[0] : node3.args[1];
    const rowspan = Number((_c = (_b = nrowArg === null || nrowArg === void 0 ? void 0 : nrowArg.content) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.content);
    const currentNode = state.top();
    if ((currentNode === null || currentNode === void 0 ? void 0 : currentNode.type) === "tableCell" && Number.isInteger(rowspan)) {
      currentNode.rowspan = rowspan;
    }
    const cell3 = node3.args[node3.args.length - 1];
    cell3.content = trimWhitespace(cell3.content);
    state.renderChildren(cell3);
    state.closeParagraph();
  },
  macro_multicolumn(node3, state) {
    var _a6, _b;
    const ncolArg = node3.args[0];
    const colspan = Number((_b = (_a6 = ncolArg === null || ncolArg === void 0 ? void 0 : ncolArg.content) === null || _a6 === void 0 ? void 0 : _a6[0]) === null || _b === void 0 ? void 0 : _b.content);
    const currentNode = state.top();
    const td = (currentNode === null || currentNode === void 0 ? void 0 : currentNode.type) === "tableCell" ? currentNode : void 0;
    if (td && Number.isInteger(colspan)) {
      td.colspan = colspan;
    }
    if (td && node3.args.length === 3) {
      const alignmentText = texToText(node3.args[1].content).replace(/([|\s])/g, "");
      const align = ALIGNMENT_MAP[alignmentText] || void 0;
      if (align && align !== "left") {
        td.align = align;
      }
    }
    const cell3 = node3.args[node3.args.length - 1];
    cell3.content = trimWhitespace(cell3.content);
    state.renderChildren(cell3);
    state.closeNode();
  }
};
function trimWhitespace(content3) {
  var _a6, _b;
  let startIndex = 0;
  let endIndex = content3.length - 1;
  while (startIndex <= endIndex && ((_a6 = content3[startIndex]) === null || _a6 === void 0 ? void 0 : _a6.type) === "whitespace") {
    startIndex++;
  }
  while (endIndex >= startIndex && ((_b = content3[endIndex]) === null || _b === void 0 ? void 0 : _b.type) === "whitespace") {
    endIndex--;
  }
  return content3.slice(startIndex, endIndex + 1);
}

// ../tex-to-myst/dist/footnotes.js
var FOOTNOTE_HANDLERS = {
  macro_footnote(node3, state) {
    const label = texToText(getArguments(node3, "argument")) || createId();
    const [body3] = getArguments(node3, "group");
    state.pushNode(u2("footnoteReference", { label }));
    state.openNode("footnoteDefinition", { label });
    state.renderChildren(body3);
    state.closeParagraph();
    state.closeNode();
  },
  macro_footnotemark(node3, state) {
    const actualLabel = texToText(getArguments(node3, "argument"));
    const label = actualLabel || createId();
    if (!actualLabel)
      state.data.lastFootnoteLabel = label;
    state.pushNode(u2("footnoteReference", { label }));
  },
  macro_footnotetext(node3, state) {
    state.closeParagraph();
    const actualLabel = texToText(getArguments(node3, "argument"));
    const label = actualLabel || state.data.lastFootnoteLabel;
    if (!label) {
      state.error('The footnotetext must come after the "footnotemark"', node3, "footnotetext", {
        note: "Could not find the label for the footnote, it will likely not work."
      });
    }
    if (!actualLabel)
      delete state.data.lastFootnoteLabel;
    const [body3] = getArguments(node3, "group");
    state.openNode("footnoteDefinition", { label });
    state.renderChildren(body3);
    state.closeParagraph();
    state.closeNode();
  }
};

// ../tex-to-myst/dist/siunitx.js
var UNITS = {
  ampere: "A",
  candela: "cd",
  kelvin: "K",
  gram: "g",
  kilogram: "kg",
  metre: "m",
  meter: "m",
  mole: "mol",
  second: "s",
  becquerel: "Bq",
  degreeCelsius: "\u2103",
  coulomb: "C",
  farad: "F",
  gray: "Gy",
  hertz: "Hz",
  henry: "H",
  joule: "J",
  lumen: "lm",
  katal: "kat",
  lux: "lx",
  newton: "N",
  ohm: "\u2126",
  pascal: "Pa",
  radian: "rad",
  siemens: "S",
  sievert: "Sv",
  steradian: "sr",
  tesla: "T",
  volt: "V",
  watt: "W",
  weber: "Wb",
  astronomicalunit: "au",
  bel: "B",
  dalton: "Da",
  day: "d",
  decibel: "dB",
  degree: "\xB0",
  electronvolt: "eV",
  hectare: "ha",
  hour: "h",
  litre: "L",
  liter: "L",
  arcminute: "\u2032",
  // minute (plane angle) U+2032
  minute: "min",
  // minute (time)
  arcsecond: "\u2033",
  // second (plane angle) U+2033
  neper: "Np",
  tonne: "t",
  celsius: "\u2103"
};
var PREFIXES = {
  quecto: "q",
  // -30
  ronto: "r",
  // -27
  yocto: "y",
  // -24
  zepto: "z",
  // -21
  atto: "a",
  // -18
  femto: "f",
  // -15
  pico: "p",
  // -12
  nano: "n",
  // -9
  micro: "\xB5",
  // -6
  milli: "m",
  // -3
  centi: "c",
  // -2
  deci: "d",
  // -1
  deca: "da",
  // 1
  hecto: "h",
  // 2
  kilo: "k",
  // 3
  mega: "M",
  // 6
  giga: "G",
  // 9
  tera: "T",
  // 12
  peta: "P",
  // 15
  exa: "E",
  // 18
  zetta: "Z",
  // 21
  yotta: "Y",
  // 24
  ronna: "R",
  // 27
  quetta: "Q"
  // 30
};
var ABBREVIATIONS = {
  fg: "femto gram",
  pg: "pico gram",
  ng: "nano gram",
  ug: "micro gram",
  mg: "milli gram",
  g: "gram",
  kg: "kilo gram",
  pm: "pico metre",
  nm: "nano metre",
  um: "micro metre",
  mm: "milli metre",
  cm: "centi metre",
  dm: "deci metre",
  m: "metre",
  km: "kilo metre",
  as: "atto second",
  fs: "femto second",
  ps: "pico second",
  ns: "nano second",
  us: "micro second",
  ms: "milli second",
  s: "second",
  fmol: "femto mole",
  pmol: "pico mole",
  nmol: "nano mole",
  umol: "micro mole",
  mmol: "milli mole",
  mol: "mole",
  kmol: "kilo mole",
  pA: "pico ampere",
  nA: "nano ampere",
  uA: "micro ampere",
  mA: "milli ampere",
  A: "ampere",
  kA: "kilo ampere",
  ul: "micro litre",
  ml: "milli litre",
  l: "litre",
  hl: "hecto litre",
  uL: "micro liter",
  mL: "milli liter",
  L: "liter",
  hL: "hecto liter",
  mHz: "milli hertz",
  Hz: "hertz",
  kHz: "kilo hertz",
  MHz: "mega hertz",
  GHz: "giga hertz",
  THz: "tera hertz",
  mN: "milli newton",
  N: "newton",
  kN: "kilo newton",
  MN: "mega newton",
  Pa: "pascal",
  kPa: "kilo pascal",
  MPa: "mega pacal",
  GPa: "giga pascal",
  mohm: "milli ohm",
  kohm: "kilo ohm",
  // kilohm
  Mohm: "mega ohm",
  // megohm
  pV: "pico volt",
  nV: "nano volt",
  uV: "micro volt",
  mV: "milli volt",
  V: "volt",
  kV: "kilo volt",
  W: "watt",
  nW: "nano watt",
  uW: "micro watt",
  mW: "milli watt",
  kW: "kilo watt",
  MW: "mega watt",
  GW: "giga watt",
  J: "joule",
  uJ: "micro joule",
  mJ: "milli joule",
  kJ: "kilo joule",
  eV: "electronvolt",
  meV: "milli electronvolt",
  keV: "kilo electronvolt",
  MeV: "mega electronvolt",
  GeV: "giga electronvolt",
  TeV: "tera electronvolt",
  kWh: "kilo watt hour",
  F: "farad",
  fF: "femto farad",
  pF: "pico farad",
  nF: "nano farad",
  uF: "micro farad",
  mF: "milli farad",
  H: "henry",
  fH: "femto henry",
  pH: "pico henry",
  nH: "nano henry",
  mH: "milli henry",
  uH: "micro henry",
  C: "coulomb",
  nC: "nano coulomb",
  mC: "milli coulomb",
  uC: "micro coulomb",
  K: "kelvin",
  dB: "decibel"
};
var POWERS = {
  per: { before: true, number: -1 },
  square: { before: true, number: 2 },
  squared: { number: 2 },
  cubic: { before: true, number: 3 },
  cubed: { number: 3 }
};
var SUPERSCRIPT = {
  "0": "\u2070",
  "1": "\xB9",
  "2": "\xB2",
  "3": "\xB3",
  "4": "\u2074",
  "5": "\u2075",
  "6": "\u2076",
  "7": "\u2077",
  "8": "\u2078",
  "9": "\u2079",
  ".": "\u22C5",
  "-": "\u207B"
};
function asSuperscript(num) {
  return `${num}`.split("").map((v) => {
    var _a6;
    return (_a6 = SUPERSCRIPT[v]) !== null && _a6 !== void 0 ? _a6 : v;
  }).join("");
}
function unitToString(unit) {
  var _a6, _b;
  const value = `${(_a6 = unit.prefix) !== null && _a6 !== void 0 ? _a6 : ""}${(_b = unit.unit) !== null && _b !== void 0 ? _b : ""}`;
  if (!unit.power)
    return value;
  return `${value}${asSuperscript(unit.power.number)}`;
}
function addPower(orig, next) {
  if (!orig)
    return next;
  if (!next)
    return orig;
  return { number: orig.number * next.number };
}
function createSiUnitNode(file, node3, arg2) {
  const units = getArguments(node3, "group")[arg2].content.map((n) => {
    if (n.type === "group") {
      fileWarn(file, "SI Units do not currently parse groups.", {
        node: node3,
        ruleId: RuleId.texParses
      });
      return n;
    }
    if (n.type !== "string")
      return n;
    if (n.content === "." || n.content === "~")
      return void 0;
    if (n.content === "/")
      return { type: "macro", content: "per" };
    if (n.content.includes("^")) {
      const [before, ...after] = n.content.split("^");
      return [
        { type: "macro", content: before },
        { type: "macro", content: "tothe", args: [{ content: [{ content: after.join("^") }] }] }
      ];
    }
    return { type: "macro", content: n.content };
  }).filter((n) => !!n).flat(1).filter((n) => n.type === "macro").map((n) => {
    var _a6, _b;
    return (_b = (_a6 = ABBREVIATIONS[n.content]) === null || _a6 === void 0 ? void 0 : _a6.split(" ").map((cmd) => ({ type: "macro", content: cmd }))) !== null && _b !== void 0 ? _b : n;
  }).flat(1);
  const organized = units.map((n) => {
    var _a6, _b, _c, _d2, _e, _f, _g, _h;
    const cmd = n.content;
    if (cmd === "raiseto") {
      return { power: { number: Number((_d2 = (_c = (_b = (_a6 = n.args) === null || _a6 === void 0 ? void 0 : _a6[0]) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c[0]) === null || _d2 === void 0 ? void 0 : _d2.content), before: true } };
    }
    if (cmd === "tothe") {
      return { power: { number: Number((_h = (_g = (_f = (_e = n.args) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.content) === null || _g === void 0 ? void 0 : _g[0]) === null || _h === void 0 ? void 0 : _h.content) } };
    }
    if (UNITS[cmd])
      return { unit: UNITS[cmd] };
    if (PREFIXES[cmd])
      return { prefix: PREFIXES[cmd] };
    if (POWERS[cmd])
      return { power: POWERS[cmd] };
    fileWarn(file, `Unknown SI unit: "${cmd}"`, { node: node3, ruleId: RuleId.texParses });
    return { unit: cmd };
  }).reduce((items, next) => {
    var _a6, _b;
    const last = (_a6 = items.slice(-1)) === null || _a6 === void 0 ? void 0 : _a6[0];
    if ("prefix" in next && ((_b = last === null || last === void 0 ? void 0 : last.power) === null || _b === void 0 ? void 0 : _b.before)) {
      return [...items.slice(0, -1), { ...last, prefix: next.prefix }];
    } else if ("prefix" in next) {
      return [...items, { prefix: next.prefix }];
    }
    if ("unit" in next && (last === null || last === void 0 ? void 0 : last.unit)) {
      return [...items, { unit: next.unit }];
    } else if ("unit" in next) {
      return [...items.slice(0, -1), { ...last, unit: next.unit }];
    }
    if (!(last === null || last === void 0 ? void 0 : last.unit)) {
      return [...items.slice(0, -1), { ...last, power: addPower(last === null || last === void 0 ? void 0 : last.power, next.power) }];
    }
    if (next.power.before) {
      return [...items, { power: next.power }];
    }
    return [...items.slice(0, -1), { ...last, power: addPower(last.power, next.power) }];
  }, []);
  return { units, alt: units.map((n) => n.content).join(" "), organized };
}
var SIUNITX_HANDLERS = {
  macro_SI(node3, state) {
    state.openParagraph();
    const { units, alt, organized } = createSiUnitNode(state.file, node3, 1);
    const number2 = texToText(getArguments(node3, "group")[0]);
    const translated = organized.map(unitToString).join(NARROW_NO_BREAK_SPACE);
    const space3 = translated.startsWith("\xB0") ? "" : NARROW_NO_BREAK_SPACE;
    const value = `${number2}${space3}${translated}`;
    state.addLeaf("si", {
      number: number2,
      unit: translated,
      alt,
      units: units.map((n) => n.content),
      value
    });
    return;
  },
  macro_si(node3, state) {
    state.openParagraph();
    const { units, alt, organized } = createSiUnitNode(state.file, node3, 0);
    const translated = organized.map(unitToString).join(NARROW_NO_BREAK_SPACE);
    state.addLeaf("si", {
      unit: translated,
      alt,
      units: units.map((n) => n.content),
      value: translated
    });
    return;
  },
  macro_qty(node3, state) {
    state.openParagraph();
    const { units, alt, organized } = createSiUnitNode(state.file, node3, 1);
    const number2 = texToText(getArguments(node3, "group")[0]);
    const translated = organized.map(unitToString).join(NARROW_NO_BREAK_SPACE);
    const space3 = translated.startsWith("\xB0") ? "" : NARROW_NO_BREAK_SPACE;
    const value = `${number2}${space3}${translated}`;
    state.addLeaf("si", {
      number: number2,
      unit: translated,
      alt,
      units: units.map((n) => n.content),
      value
    });
    return;
  },
  macro_unit(node3, state) {
    state.openParagraph();
    const { units, organized } = createSiUnitNode(state.file, node3, 0);
    const value = organized.map(unitToString).join(NARROW_NO_BREAK_SPACE);
    state.addLeaf("si", { unit: value, units: units.map((n) => n.content), value });
    return;
  },
  macro_ang(node3, state) {
    const numbers2 = texToText(node3.args[0]).split(";").map((n) => {
      if (!n)
        return "";
      const num = Number(n);
      if (!isNaN(num))
        return `${num}`;
      fileWarn(state.file, `Unexpected number for angle: "${n}".`, {
        node: node3,
        ruleId: RuleId.texParses
      });
      return n;
    });
    const angular_units = ["degree", "arcminute", "arcsecond"];
    const alt = numbers2.map((v, i2) => v ? `${v} ${angular_units[i2]}` : "").join(" ");
    const translated = numbers2.map((v, i2) => v ? `${v}${UNITS[angular_units[i2]]}` : "").join("");
    state.addLeaf("si", { alt, value: translated, unit: "degree" });
  }
};

// ../tex-to-myst/dist/chem.js
var CHEM_HANDLERS = {
  macro_ce(node3, state) {
    state.openParagraph();
    const value = texToText(getArguments(node3, "group")[0]);
    state.addLeaf("chemicalFormula", {
      value
    });
    return;
  }
};

// ../tex-to-myst/dist/quotes.js
function quoteHandler(node3, state) {
  state.closeParagraph();
  state.openNode("blockquote");
  state.openParagraph();
  state.renderChildren(node3);
  state.closeParagraph();
  state.closeNode();
}
var QUOTE_HANDLERS = {
  env_quote: quoteHandler,
  env_quotation: quoteHandler,
  env_displayquote: quoteHandler,
  macro_epigraph(node3, state) {
    const [quote, author] = getArguments(node3, "group");
    if (author) {
      state.openNode("container", { kind: "quote" });
    }
    state.openNode("blockquote");
    state.openParagraph();
    state.renderChildren(quote);
    state.closeParagraph();
    state.closeNode();
    if (!author)
      return;
    state.openNode("caption");
    state.openParagraph();
    state.renderChildren(author);
    state.closeParagraph();
    state.closeNode();
    state.closeNode();
  }
};

// ../tex-to-myst/dist/parser.js
var DEFAULT_HANDLERS = {
  ...BASIC_TEXT_HANDLERS,
  ...FRONTMATTER_HANDLERS,
  ...TEXT_MARKS_HANDLERS,
  ...COLOR_HANDLERS,
  ...REF_HANDLERS,
  ...MATH_HANDLERS,
  ...LIST_HANDLERS,
  ...LINK_HANDLERS,
  ...QUOTE_HANDLERS,
  ...CITATION_HANDLERS,
  ...CHARACTER_HANDLERS,
  ...SECTION_HANDLERS,
  ...FIGURE_HANDLERS,
  ...VERBATIM_HANDLERS,
  ...MISC_HANDLERS,
  ...TABLE_HANDLERS,
  ...FOOTNOTE_HANDLERS,
  ...SIUNITX_HANDLERS,
  ...CHEM_HANDLERS,
  ...ALGORITHM_HANDLERS
};
function cleanFrontmatter(frontmatter) {
  var _a6;
  (_a6 = frontmatter.authors) === null || _a6 === void 0 ? void 0 : _a6.forEach((a2) => {
    var _a7;
    a2.affiliations = (_a7 = a2.affiliations) === null || _a7 === void 0 ? void 0 : _a7.map((affil) => {
      var _a8, _b;
      const update = (_a8 = frontmatter.affiliations) === null || _a8 === void 0 ? void 0 : _a8.find(({ id }) => id === affil);
      return (_b = update === null || update === void 0 ? void 0 : update.name) !== null && _b !== void 0 ? _b : affil;
    });
  });
}
var TexParser = class {
  constructor(tex, file, opts) {
    var _a6;
    this.stack = [];
    this.unhandled = [];
    this.tex = tex;
    this.raw = parseLatex(tex);
    this.file = file;
    this.options = opts !== null && opts !== void 0 ? opts : {};
    this.data = {
      bibliography: [],
      openGroups: [],
      packages: [],
      colors: {},
      macros: {},
      frontmatter: {},
      theorems: {},
      dynamicHandlers: {}
    };
    this.stack = [{ type: "root", children: [] }];
    this.handlers = (_a6 = opts === null || opts === void 0 ? void 0 : opts.handlers) !== null && _a6 !== void 0 ? _a6 : DEFAULT_HANDLERS;
    this.renderChildren(this.raw);
    this.closeParagraph();
    this.closeBlock();
    let stack;
    do {
      stack = this.closeNode();
    } while (this.stack.length);
    selectAll("[label]", stack).forEach((node3) => {
      const reference = normalizeLabel(node3.label);
      if (!reference)
        return;
      node3.identifier = reference.identifier;
      node3.label = reference.label;
    });
    cleanFrontmatter(this.data.frontmatter);
    this.ast = stack;
  }
  top() {
    return this.stack[this.stack.length - 1];
  }
  warn(message, node3, source2, opts) {
    fileWarn(this.file, message, {
      ...opts,
      node: node3,
      source: source2 ? `tex-to-myst:${source2}` : "tex-to-myst",
      ruleId: RuleId.texParses
    });
  }
  error(message, node3, source2, opts) {
    fileError(this.file, message, {
      ...opts,
      node: node3,
      source: source2 ? `tex-to-myst:${source2}` : "tex-to-myst",
      ruleId: RuleId.texParses
    });
  }
  pushNode(el) {
    var _a6;
    if (Array.isArray(el)) {
      el.forEach((e2) => {
        this.pushNode(e2);
      });
      return;
    }
    const top = this.top();
    if (this.stack.length && el && "children" in top) {
      if (!el.position)
        el.position = this.currentPosition;
      (_a6 = top.children) === null || _a6 === void 0 ? void 0 : _a6.push(el);
    }
  }
  text(text7, escape5 = true) {
    var _a6, _b;
    const top = this.top();
    const value = escape5 ? replaceTextValue(text7) : text7;
    if (!value || !this.stack.length || !("children" in top))
      return;
    const last = (_a6 = top.children) === null || _a6 === void 0 ? void 0 : _a6[top.children.length - 1];
    if ((last === null || last === void 0 ? void 0 : last.type) === "text") {
      if (last.value && value === "\u202F") {
        last.value = last.value.replace(/\s+$/, "") + "\u202F";
        return last;
      }
      last.value += `${value}`;
      return last;
    }
    const node3 = u2("text", { position: this.currentPosition }, value);
    (_b = top.children) === null || _b === void 0 ? void 0 : _b.push(node3);
    return node3;
  }
  renderChildren(node3) {
    var _a6;
    if (!node3)
      return;
    const children = Array.isArray(node3.content) ? node3.content : void 0;
    this.currentPosition = (_a6 = node3.position) !== null && _a6 !== void 0 ? _a6 : this.currentPosition;
    children === null || children === void 0 ? void 0 : children.forEach((child) => {
      var _a7, _b;
      const kind = child.type === "macro" ? `macro_${child.content}` : child.type === "environment" ? `env_${child.env}` : child.type;
      this.currentPosition = (_a7 = child.position) !== null && _a7 !== void 0 ? _a7 : this.currentPosition;
      const handler = (_b = this.handlers[kind]) !== null && _b !== void 0 ? _b : this.data.dynamicHandlers[kind];
      if (handler) {
        handler(child, this, node3);
      } else {
        this.unhandled.push(kind);
        fileError(this.file, `${UNHANDLED_ERROR_TEXT} for node of "${kind}"`, {
          node: { type: child.type, kind, position: child.position },
          source: "tex-to-myst",
          ruleId: RuleId.texParses
        });
      }
    });
  }
  renderBlock(node3, name3, attributes) {
    var _a6;
    this.closeParagraph();
    this.currentPosition = (_a6 = node3.position) !== null && _a6 !== void 0 ? _a6 : this.currentPosition;
    this.openNode(name3, { ...attributes });
    if ("content" in node3) {
      this.renderChildren(node3);
    } else if ("value" in node3 && node3.value) {
      this.text(node3.value);
    }
    this.closeParagraph();
    this.closeNode();
  }
  renderInline(node3, name3, attributes) {
    var _a6, _b, _c, _d2;
    if (!node3)
      return;
    this.openParagraph();
    this.openNode(name3, { ...attributes });
    if (Array.isArray(node3)) {
      this.currentPosition = (_b = (_a6 = node3[0]) === null || _a6 === void 0 ? void 0 : _a6.position) !== null && _b !== void 0 ? _b : this.currentPosition;
      this.renderChildren({ type: "", content: node3 });
    } else if ("content" in node3) {
      this.currentPosition = (_c = node3 === null || node3 === void 0 ? void 0 : node3.position) !== null && _c !== void 0 ? _c : this.currentPosition;
      this.renderChildren(node3);
    } else if ("value" in node3 && node3.value) {
      this.currentPosition = (_d2 = node3 === null || node3 === void 0 ? void 0 : node3.position) !== null && _d2 !== void 0 ? _d2 : this.currentPosition;
      this.text(node3.value);
    }
    this.closeNode();
  }
  addLeaf(name3, attributes) {
    this.openNode(name3, attributes, true);
    this.closeNode();
  }
  openNode(name3, attributes, isLeaf = false) {
    const node3 = { type: name3, position: this.currentPosition, ...attributes };
    if (!isLeaf)
      node3.children = [];
    this.stack.push(node3);
  }
  openParagraph(attributes) {
    var _a6;
    const inPhrasing = phrasingTypes.has((_a6 = this.top()) === null || _a6 === void 0 ? void 0 : _a6.type);
    if (inPhrasing)
      return;
    this.openNode("paragraph", attributes);
  }
  closeParagraph() {
    var _a6, _b, _c, _d2, _e, _f, _g, _h, _j;
    const top = this.top();
    if ((top === null || top === void 0 ? void 0 : top.type) !== "paragraph")
      return;
    const first2 = (_a6 = top.children) === null || _a6 === void 0 ? void 0 : _a6[0];
    const last = (_c = (_b = top.children) === null || _b === void 0 ? void 0 : _b.slice(-1)) === null || _c === void 0 ? void 0 : _c[0];
    if ((first2 === null || first2 === void 0 ? void 0 : first2.type) === "text") {
      first2.value = (_e = (_d2 = first2.value) === null || _d2 === void 0 ? void 0 : _d2.replace(/^\s+/, "")) !== null && _e !== void 0 ? _e : "";
    }
    if ((last === null || last === void 0 ? void 0 : last.type) === "text") {
      last.value = (_g = (_f = last.value) === null || _f === void 0 ? void 0 : _f.replace(/\s+$/, "")) !== null && _g !== void 0 ? _g : "";
    }
    if (((_h = top.children) === null || _h === void 0 ? void 0 : _h.length) === 0 || ((_j = top.children) === null || _j === void 0 ? void 0 : _j.length) === 1 && top.children[0].type === "text" && !top.children[0].value) {
      this.stack.pop();
      return;
    }
    this.closeNode();
  }
  openBlock(attributes) {
    var _a6;
    this.closeParagraph();
    const inPhrasing = phrasingTypes.has((_a6 = this.top()) === null || _a6 === void 0 ? void 0 : _a6.type);
    if (inPhrasing)
      return;
    this.openNode("block", attributes);
  }
  closeBlock() {
    var _a6;
    this.closeParagraph();
    const top = this.top();
    if ((top === null || top === void 0 ? void 0 : top.type) !== "block")
      return;
    if (((_a6 = top.children) === null || _a6 === void 0 ? void 0 : _a6.length) === 0) {
      this.stack.pop();
      return;
    }
    this.closeNode();
  }
  closeNode(type2) {
    if (type2 && this.top().type !== type2)
      return this.top();
    const node3 = this.stack.pop();
    this.pushNode(node3);
    return node3;
  }
};

// ../myst-spec-ext/dist/types.js
var SourceFileKind;
(function(SourceFileKind2) {
  SourceFileKind2["Article"] = "Article";
  SourceFileKind2["Notebook"] = "Notebook";
  SourceFileKind2["Part"] = "Part";
})(SourceFileKind || (SourceFileKind = {}));

// ../myst-cli/dist/utils/resolveExtension.js
var import_node_fs3 = __toESM(require("fs"), 1);
var import_node_path8 = __toESM(require("path"), 1);
var ImageExtensions;
(function(ImageExtensions2) {
  ImageExtensions2["png"] = ".png";
  ImageExtensions2["jpg"] = ".jpg";
  ImageExtensions2["jpeg"] = ".jpeg";
  ImageExtensions2["svg"] = ".svg";
  ImageExtensions2["gif"] = ".gif";
  ImageExtensions2["tiff"] = ".tiff";
  ImageExtensions2["tif"] = ".tif";
  ImageExtensions2["pdf"] = ".pdf";
  ImageExtensions2["eps"] = ".eps";
  ImageExtensions2["webp"] = ".webp";
  ImageExtensions2["mp4"] = ".mp4";
  ImageExtensions2["mov"] = ".mov";
  ImageExtensions2["avi"] = ".avi";
})(ImageExtensions || (ImageExtensions = {}));
var KNOWN_IMAGE_EXTENSIONS = Object.values(ImageExtensions);
var KNOWN_VIDEO_EXTENSIONS = [".mp4", ".mov", ".avi"];
var VALID_FILE_EXTENSIONS = [".md", ".ipynb", ".tex", ".myst.json"];
var KNOWN_FAST_BUILDS = /* @__PURE__ */ new Set([".ipynb", ".md", ".tex", ".myst.json"]);
function isValidFile(file) {
  const lowerCasePath = file.toLowerCase();
  return VALID_FILE_EXTENSIONS.some((ext2) => lowerCasePath.endsWith(ext2));
}
function parseFilePath(file) {
  const { dir, base: base5, ext: baseExt, name: baseName } = import_node_path8.default.parse(file);
  for (const ext2 of VALID_FILE_EXTENSIONS) {
    if (base5.endsWith(ext2)) {
      const name3 = base5.slice(0, base5.length - ext2.length);
      return { dir, name: name3, ext: ext2 };
    }
  }
  return { dir, name: baseName, ext: baseExt };
}
function resolveExtension(file, warnFn) {
  if (import_node_fs3.default.existsSync(file)) {
    if (!isDirectory(file))
      return file;
    if (warnFn) {
      warnFn(`Folder referenced as file in table of contents: ${file}`, "error", `To add all contents of a folder, you may use "pattern: ${file}/**" in your toc`);
      return;
    }
  }
  const extensions = VALID_FILE_EXTENSIONS.concat(VALID_FILE_EXTENSIONS.map((ext2) => ext2.toUpperCase()));
  const matches4 = extensions.map((ext2) => `${file}${ext2}`).filter((fileExt) => import_node_fs3.default.existsSync(fileExt));
  if (warnFn) {
    const normalizedMatches = [];
    matches4.forEach((match3) => {
      if (!normalizedMatches.map((m2) => m2.toLowerCase()).includes(match3.toLowerCase())) {
        normalizedMatches.push(match3);
      }
    });
    if (normalizedMatches.length === 0 && import_node_path8.default.extname(file)) {
      warnFn(`Table of contents entry does not exist: ${file}`, "error");
    } else if (normalizedMatches.length === 0) {
      warnFn(`Unable to resolve table of contents entry: ${file}`, "error", `Expected one of:
     - ${VALID_FILE_EXTENSIONS.map((ext2) => `${file}${ext2}`).join("\n     - ")}`);
    } else if (normalizedMatches.length === 1) {
      warnFn(`Extension inferred for table of contents entry: ${file}`, "warn", `To ensure consistent behavior, update the toc entry to ${matches4[0]}`);
    } else {
      warnFn(`Multiple files match table of contents entry: ${file}`, "error", `Valid files include: ${normalizedMatches[0]} (currently used in the build), ${normalizedMatches.slice(1).join(", ")}
   Update the toc entry to include the correct extension to ensure consistent behavior.`);
    }
  }
  return matches4[0];
}

// ../myst-cli/dist/process/citations.js
var import_node_fs4 = __toESM(require("fs"), 1);

// ../citation-js-utils/dist/index.js
var import_core4 = __toESM(require_lib6(), 1);
var import_csl = __toESM(require_csl(), 1);
var import_sanitize_html = __toESM(require_sanitize_html(), 1);

// ../../node_modules/@citation-js/plugin-bibtex/lib/index.js
var _core = require_lib6();
var _index = require_input6();
var _config = _interopRequireDefault(require_config3());
var _index2 = _interopRequireDefault(require_output5());
function _interopRequireDefault(e2) {
  return e2 && e2.__esModule ? e2 : { default: e2 };
}
_core.plugins.add(_index.ref, {
  input: _index.formats,
  output: _index2.default,
  config: _config.default
});

// ../../node_modules/@citation-js/plugin-csl/lib/index.js
var _core2 = require_lib6();
var _locales = require_locales2();
var _styles = require_styles2();
var _engines = _interopRequireDefault2(require_engines());
var _bibliography = _interopRequireDefault2(require_bibliography());
var _citation = _interopRequireDefault2(require_citation());
function _interopRequireDefault2(e2) {
  return e2 && e2.__esModule ? e2 : { default: e2 };
}
_core2.plugins.add("@csl", {
  output: {
    bibliography: _bibliography.default,
    citation: _citation.default
  },
  config: {
    engine: _engines.default,
    locales: _locales.locales,
    templates: _styles.templates
  }
});

// ../citation-js-utils/dist/index.js
var config2 = import_core4.plugins.config.get("@bibtex");
config2.format.useIdAsLabel = true;
config2.format.checkLabel = false;
var DOI_IN_TEXT = /(10.\d{4,9}\/[-._;()/:A-Z0-9]*[A-Z0-9])/i;
function createSanitizer() {
  return {
    cleanCitationHtml(htmlStr) {
      return (0, import_sanitize_html.default)(htmlStr, { allowedTags: ["b", "a", "u", "i"] });
    }
  };
}
function cleanRef(citation) {
  const sanitizer = createSanitizer();
  const cleanHtml = sanitizer.cleanCitationHtml(citation).trim();
  return cleanHtml.replace(/^1\./g, "").replace(/&amp;/g, "&").trim();
}
var CitationJSStyles;
(function(CitationJSStyles2) {
  CitationJSStyles2["apa"] = "citation-apa";
  CitationJSStyles2["vancouver"] = "citation-vancouver";
  CitationJSStyles2["harvard"] = "citation-harvard1";
})(CitationJSStyles || (CitationJSStyles = {}));
var InlineCite;
(function(InlineCite2) {
  InlineCite2["p"] = "p";
  InlineCite2["t"] = "t";
})(InlineCite || (InlineCite = {}));
function yearFromCitation(data) {
  var _a6, _b, _c, _d2, _e;
  const date = (_a6 = data.issued) !== null && _a6 !== void 0 ? _a6 : data.accessed;
  let year = (_c = (_b = date === null || date === void 0 ? void 0 : date["date-parts"]) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c[0];
  if (year)
    return year;
  year = (_e = (_d2 = date === null || date === void 0 ? void 0 : date["literal"]) === null || _d2 === void 0 ? void 0 : _d2.match(/\b[12][0-9]{3}\b/)) === null || _e === void 0 ? void 0 : _e[0];
  if (year)
    return year;
  return "n.d.";
}
function getInlineCitation(data, kind, opts) {
  var _a6;
  let authors = data.author;
  if (!authors || authors.length === 0) {
    authors = data.editor;
  }
  const year = yearFromCitation(data);
  const prefix2 = (opts === null || opts === void 0 ? void 0 : opts.prefix) ? `${opts.prefix} ` : "";
  const suffix = (opts === null || opts === void 0 ? void 0 : opts.suffix) ? `, ${opts.suffix}` : "";
  let yearPart = kind === InlineCite.t ? ` (${year}${suffix})` : `, ${year}${suffix}`;
  if ((opts === null || opts === void 0 ? void 0 : opts.partial) === "author")
    yearPart = "";
  if ((opts === null || opts === void 0 ? void 0 : opts.partial) === "year") {
    const onlyYear = kind === InlineCite.t ? `(${year}${suffix})` : `${year}${suffix}`;
    return [{ type: "text", value: onlyYear }];
  }
  if (!authors || authors.length === 0) {
    const text7 = data.publisher || data.title;
    return [{ type: "text", value: `${prefix2}${text7}${yearPart}` }];
  }
  if (authors.length === 1) {
    return [{ type: "text", value: `${prefix2}${authors[0].family}${yearPart}` }];
  }
  if (authors.length === 2) {
    return [
      { type: "text", value: `${prefix2}${authors[0].family} & ${authors[1].family}${yearPart}` }
    ];
  }
  if (authors.length > 2) {
    return [
      { type: "text", value: `${prefix2}${(_a6 = authors[0].family) !== null && _a6 !== void 0 ? _a6 : authors[0].literal} ` },
      { type: "emphasis", children: [{ type: "text", value: "et al." }] },
      { type: "text", value: `${yearPart}` }
    ];
  }
  throw new Error("Unknown number of authors for citation");
}
function doiUrl(doi2) {
  return doi2 ? doi.buildUrl(doi2) : void 0;
}
function wrapWithAnchorTag(url, text7) {
  if (!url)
    return "";
  return `<a target="_blank" rel="noreferrer" href="${url}">${text7 !== null && text7 !== void 0 ? text7 : url}</a>`;
}
function wrapWithDoiAnchorTag(doi2) {
  const url = doiUrl(doi2);
  if (!url)
    return "";
  return wrapWithAnchorTag(url, doi2);
}
var URL_REGEX = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/g;
function replaceUrlsWithAnchorElement(str2, doi2) {
  if (!str2)
    return "";
  const matches4 = [...str2.matchAll(URL_REGEX)];
  let newStr = str2;
  matches4.forEach((match3) => {
    if (doi2 && match3[0].includes(doi2)) {
      newStr = newStr.replace(match3[0], wrapWithDoiAnchorTag(doi2));
    } else {
      newStr = newStr.replace(match3[0], wrapWithAnchorTag(match3[0]));
    }
  });
  return newStr;
}
function firstNonDoiUrl(str2, doi2) {
  if (!str2)
    return;
  const matches4 = [...str2.matchAll(URL_REGEX)];
  return matches4.map((match3) => match3[0]).find((match3) => !doi2 || !match3.includes(doi2));
}
function parseCitationStyle(style3) {
  const [styleType, styleFormat] = style3.split("-");
  if (styleType !== "citation") {
    throw new Error(`unexpected citation style: ${style3}`);
  }
  return styleFormat;
}
function parseBibTeX(source2) {
  return new import_core4.Cite(source2).data;
}
function parseCSLJSON(source2) {
  return (0, import_csl.clean)(source2);
}
function formatLabel(c) {
  const stopWords = /* @__PURE__ */ new Set(["the", "a", "an"]);
  const unsafeChars = /(?:<\/?.*?>|[\u0020-\u002F\u003A-\u0040\u005B-\u005E\u0060\u007B-\u007F])+/g;
  const unicode = /[^\u0020-\u007F]+/g;
  const firstWord = (text7) => {
    var _a6;
    if (!text7) {
      return "";
    } else {
      return (_a6 = text7.normalize("NFKD").replace(unicode, "").split(unsafeChars).find((word) => word.length && !stopWords.has(word.toLowerCase()))) !== null && _a6 !== void 0 ? _a6 : "";
    }
  };
  const { author, issued, suffix, title } = c;
  let label = "";
  if (author && author[0]) {
    label += firstWord(author[0].family || author[0].literal);
  }
  if (issued && issued["date-parts"] && issued["date-parts"][0]) {
    label += issued["date-parts"][0][0];
  }
  if (suffix) {
    label += suffix;
  } else if (title) {
    label += firstWord(title);
  }
  return label;
}
function getCitationRenderers(data) {
  const cite3 = new import_core4.Cite();
  return Object.fromEntries(data.map((c) => {
    var _a6, _b, _c;
    const matchDoi = (_b = (_a6 = c.URL) === null || _a6 === void 0 ? void 0 : _a6.match(DOI_IN_TEXT)) !== null && _b !== void 0 ? _b : (_c = c.note) === null || _c === void 0 ? void 0 : _c.match(DOI_IN_TEXT);
    if (!c.DOI && matchDoi) {
      c.DOI = matchDoi[0];
    }
    if (!c.id) {
      c.id = formatLabel(c);
    }
    [
      "title",
      "note",
      "publisher",
      "page",
      "volume",
      "issue",
      "container-title",
      "DOI",
      "ISSN"
    ].forEach((tag) => {
      if (c[tag] && typeof c[tag] === "string")
        c[tag] = c[tag].trim();
    });
    if (c.URL)
      c.URL = c.URL.replace(/^(%20)*/, "").replace(/(%20)*$/, "");
    return [
      c.id,
      {
        inline(kind = InlineCite.p, opts) {
          return getInlineCitation(c, kind, opts);
        },
        render(style3) {
          return replaceUrlsWithAnchorElement(cleanRef(cite3.set(c).format("bibliography", {
            template: parseCitationStyle(style3 !== null && style3 !== void 0 ? style3 : CitationJSStyles.apa),
            format: "html",
            lang: "en-US"
          })), c.DOI);
        },
        getDOI() {
          return c.DOI || void 0;
        },
        getURL() {
          var _a7;
          return (_a7 = firstNonDoiUrl(cleanRef(cite3.set(c).format("bibliography", {
            template: parseCitationStyle(CitationJSStyles.apa),
            format: "html",
            lang: "en-US"
          })), c.DOI)) !== null && _a7 !== void 0 ? _a7 : doiUrl(c.DOI);
        },
        cite: c,
        getLabel() {
          var _a7;
          const bibtexObjects = cite3.set(c).format("bibtex", { format: "object" });
          return (_a7 = bibtexObjects[0]) === null || _a7 === void 0 ? void 0 : _a7.label;
        },
        exportBibTeX() {
          return cite3.set(c).format("bibtex", { format: "text" });
        }
      }
    ];
  }));
}

// ../myst-cli/dist/process/citations.js
async function loadBibTeXCitationRenderers(session, path45) {
  const toc = tic();
  let data;
  if (isUrl2(path45)) {
    session.log.debug(`Fetching citations at "${path45}"`);
    const res = await session.fetch(path45);
    if (!res.ok) {
      throw new Error(`Error fetching citations from "${path45}": ${res.status} ${res.statusText}`);
    }
    data = await res.text();
    session.log.debug(`Fetched citations from "${path45}" successfully.`);
  } else {
    session.log.debug(`Loading citations at "${path45}"`);
    data = import_node_fs4.default.readFileSync(path45).toString();
  }
  const csl = parseBibTeX(data);
  const renderer = getCitationRenderers(csl);
  session.log.debug(toc(`Read ${plural("%s citation(s)", renderer)} from ${path45} in %s.`));
  return renderer;
}
function combineCitationRenderers(cache, ...files) {
  const combined = {};
  files.forEach((file) => {
    var _a6;
    const renderer = (_a6 = cache.$citationRenderers[file]) !== null && _a6 !== void 0 ? _a6 : {};
    Object.keys(renderer).forEach((key2) => {
      if (combined[key2]) {
        addWarningForFile(cache, file, `Duplicate citation with id: ${key2}`, "warn", {
          ruleId: RuleId.citationIsUnique
        });
      }
      combined[key2] = renderer[key2];
    });
  });
  return combined;
}
function combineProjectCitationRenderers(session, projectPath) {
  const project = selectors_exports.selectLocalProject(session.store.getState(), projectPath);
  const cache = castSession(session);
  if (!(project === null || project === void 0 ? void 0 : project.bibliography))
    return;
  cache.$citationRenderers[projectPath] = combineCitationRenderers(cache, ...project.bibliography);
}

// ../myst-parser/dist/plugins.js
var import_markdown_it_front_matter = __toESM(require_markdown_it_front_matter(), 1);

// ../../node_modules/markdown-it-footnote/index.mjs
function render_footnote_anchor_name(tokens, idx, options, env6) {
  const n = Number(tokens[idx].meta.id + 1).toString();
  let prefix2 = "";
  if (typeof env6.docId === "string") prefix2 = `-${env6.docId}-`;
  return prefix2 + n;
}
function render_footnote_caption(tokens, idx) {
  let n = Number(tokens[idx].meta.id + 1).toString();
  if (tokens[idx].meta.subId > 0) n += `:${tokens[idx].meta.subId}`;
  return `[${n}]`;
}
function render_footnote_ref(tokens, idx, options, env6, slf) {
  const id = slf.rules.footnote_anchor_name(tokens, idx, options, env6, slf);
  const caption3 = slf.rules.footnote_caption(tokens, idx, options, env6, slf);
  let refid = id;
  if (tokens[idx].meta.subId > 0) refid += `:${tokens[idx].meta.subId}`;
  return `<sup class="footnote-ref"><a href="#fn${id}" id="fnref${refid}">${caption3}</a></sup>`;
}
function render_footnote_block_open(tokens, idx, options) {
  return (options.xhtmlOut ? '<hr class="footnotes-sep" />\n' : '<hr class="footnotes-sep">\n') + '<section class="footnotes">\n<ol class="footnotes-list">\n';
}
function render_footnote_block_close() {
  return "</ol>\n</section>\n";
}
function render_footnote_open(tokens, idx, options, env6, slf) {
  let id = slf.rules.footnote_anchor_name(tokens, idx, options, env6, slf);
  if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`;
  return `<li id="fn${id}" class="footnote-item">`;
}
function render_footnote_close() {
  return "</li>\n";
}
function render_footnote_anchor(tokens, idx, options, env6, slf) {
  let id = slf.rules.footnote_anchor_name(tokens, idx, options, env6, slf);
  if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`;
  return ` <a href="#fnref${id}" class="footnote-backref">\u21A9\uFE0E</a>`;
}
function footnote_plugin(md) {
  const parseLinkLabel = md.helpers.parseLinkLabel;
  const isSpace = md.utils.isSpace;
  md.renderer.rules.footnote_ref = render_footnote_ref;
  md.renderer.rules.footnote_block_open = render_footnote_block_open;
  md.renderer.rules.footnote_block_close = render_footnote_block_close;
  md.renderer.rules.footnote_open = render_footnote_open;
  md.renderer.rules.footnote_close = render_footnote_close;
  md.renderer.rules.footnote_anchor = render_footnote_anchor;
  md.renderer.rules.footnote_caption = render_footnote_caption;
  md.renderer.rules.footnote_anchor_name = render_footnote_anchor_name;
  function footnote_def(state, startLine, endLine, silent) {
    const start = state.bMarks[startLine] + state.tShift[startLine];
    const max = state.eMarks[startLine];
    if (start + 4 > max) return false;
    if (state.src.charCodeAt(start) !== 91) return false;
    if (state.src.charCodeAt(start + 1) !== 94) return false;
    let pos;
    for (pos = start + 2; pos < max; pos++) {
      if (state.src.charCodeAt(pos) === 32) return false;
      if (state.src.charCodeAt(pos) === 93) {
        break;
      }
    }
    if (pos === start + 2) return false;
    if (pos + 1 >= max || state.src.charCodeAt(++pos) !== 58) return false;
    if (silent) return true;
    pos++;
    if (!state.env.footnotes) state.env.footnotes = {};
    if (!state.env.footnotes.refs) state.env.footnotes.refs = {};
    const label = state.src.slice(start + 2, pos - 2);
    state.env.footnotes.refs[`:${label}`] = -1;
    const token_fref_o = new state.Token("footnote_reference_open", "", 1);
    token_fref_o.meta = { label };
    token_fref_o.level = state.level++;
    state.tokens.push(token_fref_o);
    const oldBMark = state.bMarks[startLine];
    const oldTShift = state.tShift[startLine];
    const oldSCount = state.sCount[startLine];
    const oldParentType = state.parentType;
    const posAfterColon = pos;
    const initial = state.sCount[startLine] + pos - (state.bMarks[startLine] + state.tShift[startLine]);
    let offset = initial;
    while (pos < max) {
      const ch = state.src.charCodeAt(pos);
      if (isSpace(ch)) {
        if (ch === 9) {
          offset += 4 - offset % 4;
        } else {
          offset++;
        }
      } else {
        break;
      }
      pos++;
    }
    state.tShift[startLine] = pos - posAfterColon;
    state.sCount[startLine] = offset - initial;
    state.bMarks[startLine] = posAfterColon;
    state.blkIndent += 4;
    state.parentType = "footnote";
    if (state.sCount[startLine] < state.blkIndent) {
      state.sCount[startLine] += state.blkIndent;
    }
    state.md.block.tokenize(state, startLine, endLine, true);
    state.parentType = oldParentType;
    state.blkIndent -= 4;
    state.tShift[startLine] = oldTShift;
    state.sCount[startLine] = oldSCount;
    state.bMarks[startLine] = oldBMark;
    const token_fref_c = new state.Token("footnote_reference_close", "", -1);
    token_fref_c.level = --state.level;
    state.tokens.push(token_fref_c);
    return true;
  }
  function footnote_inline(state, silent) {
    const max = state.posMax;
    const start = state.pos;
    if (start + 2 >= max) return false;
    if (state.src.charCodeAt(start) !== 94) return false;
    if (state.src.charCodeAt(start + 1) !== 91) return false;
    const labelStart = start + 2;
    const labelEnd = parseLinkLabel(state, start + 1);
    if (labelEnd < 0) return false;
    if (!silent) {
      if (!state.env.footnotes) state.env.footnotes = {};
      if (!state.env.footnotes.list) state.env.footnotes.list = [];
      const footnoteId = state.env.footnotes.list.length;
      const tokens = [];
      state.md.inline.parse(
        state.src.slice(labelStart, labelEnd),
        state.md,
        state.env,
        tokens
      );
      const token = state.push("footnote_ref", "", 0);
      token.meta = { id: footnoteId };
      state.env.footnotes.list[footnoteId] = {
        content: state.src.slice(labelStart, labelEnd),
        tokens
      };
    }
    state.pos = labelEnd + 1;
    state.posMax = max;
    return true;
  }
  function footnote_ref(state, silent) {
    const max = state.posMax;
    const start = state.pos;
    if (start + 3 > max) return false;
    if (!state.env.footnotes || !state.env.footnotes.refs) return false;
    if (state.src.charCodeAt(start) !== 91) return false;
    if (state.src.charCodeAt(start + 1) !== 94) return false;
    let pos;
    for (pos = start + 2; pos < max; pos++) {
      if (state.src.charCodeAt(pos) === 32) return false;
      if (state.src.charCodeAt(pos) === 10) return false;
      if (state.src.charCodeAt(pos) === 93) {
        break;
      }
    }
    if (pos === start + 2) return false;
    if (pos >= max) return false;
    pos++;
    const label = state.src.slice(start + 2, pos - 1);
    if (typeof state.env.footnotes.refs[`:${label}`] === "undefined") return false;
    if (!silent) {
      if (!state.env.footnotes.list) state.env.footnotes.list = [];
      let footnoteId;
      if (state.env.footnotes.refs[`:${label}`] < 0) {
        footnoteId = state.env.footnotes.list.length;
        state.env.footnotes.list[footnoteId] = { label, count: 0 };
        state.env.footnotes.refs[`:${label}`] = footnoteId;
      } else {
        footnoteId = state.env.footnotes.refs[`:${label}`];
      }
      const footnoteSubId = state.env.footnotes.list[footnoteId].count;
      state.env.footnotes.list[footnoteId].count++;
      const token = state.push("footnote_ref", "", 0);
      token.meta = { id: footnoteId, subId: footnoteSubId, label };
    }
    state.pos = pos;
    state.posMax = max;
    return true;
  }
  function footnote_tail(state) {
    let tokens;
    let current2;
    let currentLabel;
    let insideRef = false;
    const refTokens = {};
    if (!state.env.footnotes) {
      return;
    }
    state.tokens = state.tokens.filter(function(tok) {
      if (tok.type === "footnote_reference_open") {
        insideRef = true;
        current2 = [];
        currentLabel = tok.meta.label;
        return false;
      }
      if (tok.type === "footnote_reference_close") {
        insideRef = false;
        refTokens[":" + currentLabel] = current2;
        return false;
      }
      if (insideRef) {
        current2.push(tok);
      }
      return !insideRef;
    });
    if (!state.env.footnotes.list) {
      return;
    }
    const list6 = state.env.footnotes.list;
    state.tokens.push(new state.Token("footnote_block_open", "", 1));
    for (let i2 = 0, l = list6.length; i2 < l; i2++) {
      const token_fo = new state.Token("footnote_open", "", 1);
      token_fo.meta = { id: i2, label: list6[i2].label };
      state.tokens.push(token_fo);
      if (list6[i2].tokens) {
        tokens = [];
        const token_po = new state.Token("paragraph_open", "p", 1);
        token_po.block = true;
        tokens.push(token_po);
        const token_i = new state.Token("inline", "", 0);
        token_i.children = list6[i2].tokens;
        token_i.content = list6[i2].content;
        tokens.push(token_i);
        const token_pc = new state.Token("paragraph_close", "p", -1);
        token_pc.block = true;
        tokens.push(token_pc);
      } else if (list6[i2].label) {
        tokens = refTokens[`:${list6[i2].label}`];
      }
      if (tokens) state.tokens = state.tokens.concat(tokens);
      let lastParagraph;
      if (state.tokens[state.tokens.length - 1].type === "paragraph_close") {
        lastParagraph = state.tokens.pop();
      } else {
        lastParagraph = null;
      }
      const t2 = list6[i2].count > 0 ? list6[i2].count : 1;
      for (let j = 0; j < t2; j++) {
        const token_a = new state.Token("footnote_anchor", "", 0);
        token_a.meta = { id: i2, subId: j, label: list6[i2].label };
        state.tokens.push(token_a);
      }
      if (lastParagraph) {
        state.tokens.push(lastParagraph);
      }
      state.tokens.push(new state.Token("footnote_close", "", -1));
    }
    state.tokens.push(new state.Token("footnote_block_close", "", -1));
  }
  md.block.ruler.before("reference", "footnote_def", footnote_def, { alt: ["paragraph", "reference"] });
  md.inline.ruler.after("image", "footnote_inline", footnote_inline);
  md.inline.ruler.after("footnote_inline", "footnote_ref", footnote_ref);
  md.core.ruler.after("inline", "footnote_tail", footnote_tail);
}

// ../myst-parser/dist/plugins.js
var import_markdown_it_task_lists = __toESM(require_markdown_it_task_lists(), 1);
var import_markdown_it_deflist = __toESM(require_markdown_it_deflist(), 1);

// ../markdown-it-myst/dist/nestedParse.js
function nestedCoreParse(md, pluginRuleName, src, env6, initLine, includeRule = true, inline) {
  const tempDisabledCore = [];
  for (const rule of [...md.core.ruler.__rules__].reverse()) {
    if (rule.name === pluginRuleName) {
      if (!includeRule) {
        tempDisabledCore.push(rule.name);
      }
      break;
    }
    if (rule.name) {
      tempDisabledCore.push(rule.name);
    }
  }
  md.core.ruler.disable(tempDisabledCore);
  const blockRules = md.block.ruler.__rules__.map(({ name: name3 }) => name3).filter((n) => n !== "paragraph");
  if (inline)
    md.block.ruler.disable(blockRules);
  let tokens = [];
  try {
    tokens = md.parse(src, env6);
  } finally {
    md.core.ruler.enable(tempDisabledCore);
    if (inline)
      md.block.ruler.enable(blockRules);
  }
  for (const token of tokens) {
    token.map = token.map !== null ? [token.map[0] + initLine, token.map[1] + initLine] : token.map;
  }
  return tokens;
}
function nestedPartToTokens(partName, part, lineNumber, state, pluginRuleName, inline) {
  if (!part)
    return [];
  const openToken = new state.Token(`${partName}_open`, "", 1);
  openToken.content = part;
  openToken.hidden = true;
  openToken.map = [lineNumber, lineNumber];
  let nestedTokens = nestedCoreParse(state.md, pluginRuleName, part, state.env, lineNumber, true, inline);
  if (inline && nestedTokens.length === 3 && nestedTokens[0].type === "paragraph_open" && nestedTokens[1].type === "inline" && nestedTokens[2].type === "paragraph_close") {
    nestedTokens = [nestedTokens[1]];
  }
  const closeToken = new state.Token(`${partName}_close`, "", -1);
  closeToken.hidden = true;
  return [openToken, ...nestedTokens, closeToken];
}

// ../markdown-it-myst/dist/inlineAttributes.js
function tokenizeInlineAttributes(header) {
  const pattern = /(\.[A-Za-z0-9_-]+(?:\s|$))|(#[A-Za-z0-9_-]+(?:\s|$))|([a-zA-Z0-9_-]+)="((?:\\.|[^\\"])*)"(?:\s|$)|([a-zA-Z0-9_-]+)=([^\s"']+)(?:\s|$)|([A-Za-z0-9_:-]+)(?:\s|$)|([^\s]+)/g;
  const results = [];
  let match3;
  while ((match3 = pattern.exec(header)) !== null) {
    const [, classGroup, idGroup, attrKeyQuoted, attrValQuoted, attrKeyUnquoted, attrValUnquoted, bareGroup, unknownGroup] = match3;
    if (classGroup) {
      results.push({ kind: "class", value: classGroup.slice(1).trim() });
    } else if (idGroup) {
      results.push({ kind: "id", value: idGroup.slice(1).trim() });
    } else if (attrKeyQuoted && attrValQuoted !== void 0) {
      const unescaped = attrValQuoted.replace(/\\"/g, '"').trim();
      results.push({ kind: "attr", key: attrKeyQuoted, value: unescaped });
    } else if (attrKeyUnquoted && attrValUnquoted !== void 0) {
      results.push({ kind: "attr", key: attrKeyUnquoted, value: attrValUnquoted.trim() });
    } else if (bareGroup) {
      results.push({ kind: "bare", value: bareGroup.trim() });
    } else if (unknownGroup) {
      results.push({ kind: "unknown", value: unknownGroup.trim() });
    }
  }
  return results;
}
function inlineOptionsToTokens(header, lineNumber, state) {
  const tokens = tokenizeInlineAttributes(header);
  if (tokens.length === 0) {
    throw new Error("No inline tokens found");
  }
  let name3 = void 0;
  if (tokens[0].kind === "bare") {
    name3 = tokens[0].value;
    tokens.shift();
  }
  if (tokens.filter(({ kind }) => kind === "id").length > 1) {
    throw new Error("Cannot have more than one ID defined");
  }
  if (tokens.some(({ kind }) => kind === "bare")) {
    throw new Error("No additional bare tokens allowed after the first token");
  }
  const markdownItTokens = tokens.map((opt) => {
    if (opt.kind === "id" && /^[0-9]/.test(opt.value)) {
      throw new Error(`ID cannot start with a number: "${opt.value}"`);
    }
    if (opt.kind === "unknown") {
      if (opt.value.match(/\.[A-Za-z0-9_\-.]+/)) {
        throw new Error(`Unknown token "${opt.value}". Classes must be separated by spaces, try "${opt.value.replace(/\./g, " .").trim()}"`);
      }
      throw new Error(`Unknown token "${opt.value}"`);
    }
    if (opt.kind === "class" || opt.kind === "id" || opt.kind === "bare") {
      const classTokens = [
        new state.Token("myst_option_open", "", 1),
        new state.Token("myst_option_close", "", -1)
      ];
      classTokens[0].info = opt.kind;
      classTokens[0].content = opt.kind === "class" ? `.${opt.value}` : opt.kind === "id" ? `#${opt.value}` : opt.value;
      classTokens[0].meta = { location: "inline", ...opt };
      return classTokens;
    }
    const optTokens = nestedPartToTokens("myst_option", opt.value, lineNumber, state, "run_roles", true);
    if (optTokens.length) {
      optTokens[0].info = opt.key;
      optTokens[0].content = opt.value;
      optTokens[0].meta = { location: "inline", ...opt };
    }
    return optTokens;
  });
  const options = tokens.map((t2) => [
    t2.kind === "attr" ? t2.key : t2.kind === "id" ? "label" : t2.kind,
    t2.value
  ]);
  return { name: name3, tokens: markdownItTokens.flat(), options };
}

// ../markdown-it-myst/dist/roles.js
function rolePlugin(md) {
  md.inline.ruler.before("backticks", "parse_roles", roleRule);
  md.core.ruler.after("text_join", "run_roles", runRoles);
  md.renderer.rules["role"] = (tokens, idx) => {
    const token = tokens[idx];
    return `<span class="role-unhandled"><mark>${token.meta.name}</mark><code>${token.content}</code></span>`;
  };
  md.renderer.rules["role_error"] = (tokens, idx) => {
    const token = tokens[idx];
    let content3 = "";
    if (token.content) {
      content3 = `
---
${token.content}`;
    }
    return `<aside class="role-error">
<header><mark>${token.info}</mark><code> ${token.meta.arg}</code></header>
<pre>${token.meta.error_name}:
${token.meta.error_message}
${content3}</pre></aside>
`;
  };
}
var _x;
try {
  _x = new RegExp("^\\{\\s*([^}]+?)\\s*\\}(`+)(?!`)(.+?)(?<!`)\\2(?!`)");
} catch (err) {
  _x = /^\{\s*([^}]+?)\s*\}(`+)(?!`)(.+?)\2(?!`)/;
}
var ROLE_PATTERN = _x;
function roleRule(state, silent) {
  if (state.src.charCodeAt(state.pos - 1) === 92) {
    return false;
  }
  const match3 = ROLE_PATTERN.exec(state.src.slice(state.pos));
  if (match3 == null)
    return false;
  const [str2, header, , content3] = match3;
  if (!silent) {
    const token = state.push("role", "", 0);
    token.info = header;
    token.content = content3;
    token.col = [state.pos, state.pos + str2.length];
  }
  state.pos += str2.length;
  return true;
}
function runRoles(state) {
  var _a6, _b, _c;
  for (const token of state.tokens) {
    if (token.type === "inline" && token.children) {
      const childTokens = [];
      for (const child of token.children) {
        if (child.type === "role") {
          try {
            const { map: map13 } = token;
            const { content: content3, col } = child;
            const { name: name3, tokens: optTokens } = inlineOptionsToTokens(child.info, (_a6 = map13 === null || map13 === void 0 ? void 0 : map13[0]) !== null && _a6 !== void 0 ? _a6 : 0, state);
            if (!name3) {
              throw new Error('A role name is required, for example, "{sub}`2`"');
            }
            const roleOpen = new state.Token("parsed_role_open", "", 1);
            roleOpen.content = content3;
            roleOpen.hidden = true;
            roleOpen.info = name3;
            roleOpen.meta = { header: child.info };
            roleOpen.block = false;
            roleOpen.map = map13;
            roleOpen.col = col;
            const contentTokens = roleContentToTokens(content3, (_b = map13 === null || map13 === void 0 ? void 0 : map13[0]) !== null && _b !== void 0 ? _b : 0, state);
            const roleClose = new state.Token("parsed_role_close", "", -1);
            roleClose.block = false;
            roleClose.hidden = true;
            roleOpen.info = name3;
            const newTokens = [roleOpen, ...optTokens, ...contentTokens, roleClose];
            childTokens.push(...newTokens);
          } catch (err) {
            const errorToken = new state.Token("role_error", "", 0);
            errorToken.content = child.content;
            errorToken.info = child.info;
            errorToken.meta = (_c = child.meta) !== null && _c !== void 0 ? _c : {};
            errorToken.map = child.map;
            errorToken.meta.error_message = err.message;
            errorToken.meta.error_name = err.name;
            childTokens.push(errorToken);
          }
        } else {
          childTokens.push(child);
        }
      }
      token.children = childTokens;
    }
  }
  return true;
}
function roleContentToTokens(content3, lineNumber, state) {
  return nestedPartToTokens("role_body", content3, lineNumber, state, "run_roles", true);
}

// ../markdown-it-myst/dist/utils.js
function stateWarn(state, message) {
  const vfile2 = state.env.vfile;
  if (!vfile2)
    return;
  return vfile2.message(message);
}
function stateError(state, message) {
  const out = stateWarn(state, message);
  if (out)
    out.fatal = true;
  return out;
}

// ../markdown-it-myst/dist/directives.js
var COLON_OPTION_REGEX = /^:(?<option>[^:\s]+?):(\s*(?<value>.*)){0,1}\s*$/;
function computeBlockTightness(src, map13) {
  const lines = src.split("\n");
  const tightBefore = typeof (map13 === null || map13 === void 0 ? void 0 : map13[0]) === "number" && map13[0] > 0 ? lines[map13[0] - 1].trim() !== "" : false;
  const tightAfter = typeof (map13 === null || map13 === void 0 ? void 0 : map13[1]) === "number" && map13[1] < lines.length ? lines[map13[1]].trim() !== "" : false;
  const tight = tightBefore && tightAfter ? true : tightBefore ? "before" : tightAfter ? "after" : false;
  return tight;
}
function replaceFences(state) {
  for (const token of state.tokens) {
    if (token.type === "fence" || token.type === "colon_fence") {
      const match3 = token.info.match(/^\s*\{\s*([^}]+)\s*\}\s*(.*)$/);
      if (match3) {
        token.type = "directive";
        token.info = match3[1].trim();
        token.meta = { arg: match3[2] };
      }
    }
  }
  return true;
}
function runDirectives(state) {
  var _a6, _b;
  const finalTokens = [];
  for (const token of state.tokens) {
    if (token.type === "directive") {
      try {
        const { info, map: map13 } = token;
        const arg2 = ((_a6 = token.meta.arg) === null || _a6 === void 0 ? void 0 : _a6.trim()) || void 0;
        const { name: name3 = "div", tokens: inlineOptTokens, options: inlineOptions } = inlineOptionsToTokens(info, (_b = map13 === null || map13 === void 0 ? void 0 : map13[0]) !== null && _b !== void 0 ? _b : 0, state);
        const content3 = parseDirectiveContent(token.content.trim() ? token.content.split(/\r?\n/) : [], name3, state);
        const { body: body3, options, optionsLocation } = content3;
        let { bodyOffset } = content3;
        while (body3.length && !body3[0].trim()) {
          body3.shift();
          bodyOffset++;
        }
        const bodyString = body3.join("\n").trimEnd();
        const directiveOpen = new state.Token("parsed_directive_open", "", 1);
        directiveOpen.info = name3;
        directiveOpen.hidden = true;
        directiveOpen.content = bodyString;
        directiveOpen.map = map13;
        directiveOpen.meta = {
          arg: arg2,
          options: getDirectiveOptions([...inlineOptions, ...options !== null && options !== void 0 ? options : []]),
          // Tightness is computed for all directives (are they separated by a newline before/after)
          tight: computeBlockTightness(state.src, token.map)
        };
        const startLineNumber = map13 ? map13[0] : 0;
        const argTokens = directiveArgToTokens(arg2, startLineNumber, state);
        const optsTokens = directiveOptionsToTokens(options || [], startLineNumber + 1, state, optionsLocation);
        const bodyTokens = directiveBodyToTokens(bodyString, startLineNumber + bodyOffset, state);
        const directiveClose = new state.Token("parsed_directive_close", "", -1);
        directiveClose.info = info;
        directiveClose.hidden = true;
        const newTokens = [
          directiveOpen,
          ...inlineOptTokens,
          ...argTokens,
          ...optsTokens,
          ...bodyTokens,
          directiveClose
        ];
        finalTokens.push(...newTokens);
      } catch (err) {
        stateError(state, `Error parsing "${token.info}" directive: ${err.message}`);
        const errorToken = new state.Token("directive_error", "", 0);
        errorToken.content = token.content;
        errorToken.info = token.info;
        errorToken.meta = token.meta;
        errorToken.map = token.map;
        errorToken.meta.error_message = err.message;
        errorToken.meta.error_name = err.name;
        finalTokens.push(errorToken);
      }
    } else {
      finalTokens.push(token);
    }
  }
  state.tokens = finalTokens;
  return true;
}
function parseDirectiveContent(content3, info, state) {
  var _a6;
  let bodyOffset = 1;
  let yamlBlock = null;
  const newContent = [];
  if (content3.length && content3[0].trimEnd() === "---") {
    bodyOffset++;
    yamlBlock = [];
    let foundDivider = false;
    for (const line2 of content3.slice(1)) {
      if (line2.trimEnd() === "---") {
        bodyOffset++;
        foundDivider = true;
        continue;
      }
      if (foundDivider) {
        newContent.push(line2);
      } else {
        bodyOffset++;
        yamlBlock.push(line2);
      }
    }
    try {
      const options = js_yaml_default.load(yamlBlock.join("\n"));
      if (options && typeof options === "object") {
        return {
          body: newContent,
          options: Object.entries(options),
          bodyOffset,
          optionsLocation: "yaml"
        };
      }
    } catch (err) {
      stateWarn(state, `Invalid YAML options in "${info}" directive: ${err.reason}`);
    }
  } else if (content3.length && COLON_OPTION_REGEX.exec(content3[0])) {
    const options = [];
    let foundDivider = false;
    for (const line2 of content3) {
      if (!foundDivider && !COLON_OPTION_REGEX.exec(line2)) {
        foundDivider = true;
        newContent.push(line2);
        continue;
      }
      if (foundDivider) {
        newContent.push(line2);
      } else {
        const match3 = COLON_OPTION_REGEX.exec(line2);
        const { option: option3, value } = (_a6 = match3 === null || match3 === void 0 ? void 0 : match3.groups) !== null && _a6 !== void 0 ? _a6 : {};
        if (option3)
          options.push([option3, value || true]);
        bodyOffset++;
      }
    }
    return { body: newContent, options, bodyOffset, optionsLocation: "colon" };
  }
  return { body: content3, bodyOffset: 1 };
}
function directiveArgToTokens(arg2, lineNumber, state) {
  return nestedPartToTokens("directive_arg", arg2, lineNumber, state, "run_directives", true);
}
function getDirectiveOptions(options) {
  if (!options || options.length === 0)
    return void 0;
  const simplified = {};
  options.forEach(([key2, val]) => {
    if (key2 === "class" && simplified.class) {
      simplified.class += ` ${val}`;
      return;
    }
    if (simplified[key2] !== void 0) {
      return;
    }
    simplified[key2] = val;
  });
  return simplified;
}
function directiveOptionsToTokens(options, lineNumber, state, optionsLocation) {
  const tokens = options.map(([key2, value], index4) => {
    const optTokens = typeof value === "string" ? nestedPartToTokens("myst_option", value, lineNumber + index4, state, "run_directives", true) : [
      new state.Token("myst_option_open", "", 1),
      new state.Token("myst_option_close", "", -1)
    ];
    if (optTokens.length) {
      optTokens[0].info = key2;
      optTokens[0].content = typeof value === "string" ? value : "";
      optTokens[0].meta = { location: optionsLocation, value };
    }
    return optTokens;
  });
  return tokens.flat();
}
function directiveBodyToTokens(body3, lineNumber, state) {
  return nestedPartToTokens("directive_body", body3, lineNumber, state, "run_directives", false);
}
function directivePlugin(md) {
  md.core.ruler.after("block", "fence_to_directive", replaceFences);
  md.core.ruler.after("fence_to_directive", "run_directives", runDirectives);
  md.renderer.rules["directive"] = (tokens, idx) => {
    const token = tokens[idx];
    return `<aside class="directive-unhandled">
<header><mark>${token.info}</mark><code> ${token.meta.arg}</code></header>
<pre>${token.content}</pre></aside>
`;
  };
  md.renderer.rules["directive_error"] = (tokens, idx) => {
    const token = tokens[idx];
    let content3 = "";
    if (token.content) {
      content3 = `
---
${token.content}`;
    }
    return `<aside class="directive-error">
<header><mark>${token.info}</mark><code> ${token.meta.arg}</code></header>
<pre>${token.meta.error_name}:
${token.meta.error_message}
${content3}</pre></aside>
`;
  };
}

// ../markdown-it-myst/dist/citations.js
var citationsPlugin = (md) => {
  const regexes = {
    citation: /^([^^-]|[^^].+?)?(-)?@([\w][\w:.#$%&\-+?<>~/]*)(.+)?$/,
    // Only allow a short [suffix] for in text citations (e.g. 50 characters)
    inText: /^@((?:[\w|{][\w:.#$%&\-+?<>~/]*[\w|}])|\w)(\s*)(\[([^\]]{1,50})\])?/,
    allowedBefore: /^[^a-zA-Z.0-9]$/
  };
  md.inline.ruler.after("emphasis", "citation", (state, silent) => {
    const char = state.src.charCodeAt(state.pos);
    if (char == 64 && (state.pos == 0 || regexes.allowedBefore.test(state.src.slice(state.pos - 1, state.pos)))) {
      const match3 = state.src.slice(state.pos).match(regexes.inText);
      if (match3) {
        const citation = {
          label: trimBraces(match3[1]),
          kind: "narrative"
        };
        let token;
        if (!silent) {
          token = state.push("cite", "cite", 0);
          token.meta = citation;
          token.col = [state.pos];
        }
        if (match3[3]) {
          const suffix = match3[4];
          citation.suffix = state.md.parseInline(suffix, state.env);
          state.pos += match3[0].length;
          if (token) {
            token.content = match3[0];
            token.col.push(state.pos);
          }
        } else {
          state.pos += match3[0].length - match3[2].length;
          if (token) {
            token.content = match3[0];
            token.col.push(state.pos);
          }
        }
        return true;
      }
    } else if (char == 91) {
      const end = state.md.helpers.parseLinkLabel(state, state.pos);
      const charAfter = state.src.codePointAt(end + 1);
      if (end > 0 && charAfter != 40 && charAfter != 91) {
        const str2 = state.src.slice(state.pos + 1, end);
        const parts = str2.split(";").map((x2) => x2.match(regexes.citation));
        if (parts.indexOf(null) >= 0)
          return false;
        let curCol = state.pos + 1;
        const cites = parts.map((x2) => {
          var _a6, _b;
          const suffix = x2[4] ? x2[4].trim().replace(/^,[\s]*/, "") : void 0;
          const colEnd = curCol + x2[0].length;
          const meta2 = {
            label: trimBraces(x2[3]),
            kind: "parenthetical",
            prefix: ((_a6 = x2[1]) === null || _a6 === void 0 ? void 0 : _a6.trim()) ? state.md.parseInline((_b = x2[1]) === null || _b === void 0 ? void 0 : _b.trim(), state.env) : void 0,
            suffix: suffix ? state.md.parseInline(suffix, state.env) : void 0,
            partial: x2[2] ? "year" : void 0,
            content: x2[0].trim(),
            col: [curCol, colEnd]
          };
          curCol = colEnd + 1;
          return meta2;
        });
        if (!silent) {
          const token = state.push("cite_group_open", "span", 1);
          token.content = "[";
          token.meta = { kind: "parenthetical" };
          cites.forEach((citation) => {
            const { content: content3, col, ...meta2 } = citation;
            const cite3 = state.push("cite", "cite", 0);
            cite3.content = content3;
            cite3.col = col;
            cite3.meta = meta2;
          });
          const close2 = state.push("cite_group_close", "span", -1);
          close2.content = "]";
        }
        state.pos = end + 1;
        return true;
      }
      return false;
    }
    return false;
  });
};
function trimBraces(label) {
  return label.replace(/^\{(.*)\}$/, "$1");
}

// ../markdown-it-myst/dist/index.js
function mystPlugin(md) {
  md.use(rolePlugin);
  md.use(directivePlugin);
}

// ../../node_modules/markdown-it-myst-extras/dist/index.js
function mystBlockPlugin(md) {
  md.block.ruler.before("blockquote", "myst_line_comment", parse_line_comment, {
    alt: ["paragraph", "reference", "blockquote", "list", "footnote_def"]
  });
  md.block.ruler.before("hr", "myst_block_break", parse_block_break, {
    alt: ["paragraph", "reference", "blockquote", "list", "footnote_def"]
  });
  md.block.ruler.before("hr", "myst_target", parse_target, {
    alt: ["paragraph", "reference", "blockquote", "list", "footnote_def"]
  });
  md.renderer.rules.myst_line_comment = render_myst_line_comment;
  md.renderer.rules.myst_target = render_myst_target;
}
function parse_line_comment(state, startLine, endLine, silent) {
  let pos = state.bMarks[startLine] + state.tShift[startLine];
  let maximum = state.eMarks[startLine];
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  if (state.src[pos] !== "%") {
    return false;
  }
  if (silent) {
    return true;
  }
  const token = state.push("myst_line_comment", "", 0);
  token.attrSet("class", "myst-line-comment");
  token.content = state.src.slice(pos + 1, maximum).replace(/\s+$/gm, "");
  token.markup = "%";
  let nextLine;
  for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {
    pos = state.bMarks[nextLine] + state.tShift[nextLine];
    maximum = state.eMarks[nextLine];
    if (state.src[pos] !== "%") {
      break;
    }
    token.content += "\n" + state.src.slice(pos + 1, maximum).replace(/\s+$/gm, "");
  }
  state.line = nextLine;
  token.map = [startLine, nextLine];
  return true;
}
function parse_block_break(state, startLine, endLine, silent) {
  let pos = state.bMarks[startLine] + state.tShift[startLine];
  const maximum = state.eMarks[startLine];
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  const marker = state.src.charCodeAt(pos);
  pos += 1;
  if (marker !== 43) {
    return false;
  }
  let cnt = 1;
  while (pos < maximum) {
    const ch = state.src.charCodeAt(pos);
    if (ch !== marker && !state.md.utils.isSpace(ch)) {
      break;
    }
    if (ch === marker) {
      cnt += 1;
    }
    pos += 1;
  }
  if (cnt < 3) {
    return false;
  }
  if (silent) {
    return true;
  }
  state.line = startLine + 1;
  const token = state.push("myst_block_break", "hr", 0);
  token.attrSet("class", "myst-block");
  token.content = state.src.slice(pos, maximum).trim();
  token.map = [startLine, state.line];
  token.markup = state.md.utils.fromCodePoint(marker).repeat(cnt);
  return true;
}
var TARGET_PATTERN = /^\((?<label>[a-zA-Z0-9|@<>*./_\-+:]{1,100})\)=\s*$/;
function parse_target(state, startLine, endLine, silent) {
  const pos = state.bMarks[startLine] + state.tShift[startLine];
  const maximum = state.eMarks[startLine];
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  const match3 = TARGET_PATTERN.exec(state.src.slice(pos, maximum));
  if (!match3) {
    return false;
  }
  if (silent) {
    return true;
  }
  state.line = startLine + 1;
  const token = state.push("myst_target", "", 0);
  token.attrSet("class", "myst-target");
  token.content = match3 && match3.groups ? match3.groups["label"] : "";
  token.map = [startLine, state.line];
  return true;
}
function escapeHtml2(unsafe2) {
  return unsafe2.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
}
function render_myst_line_comment(tokens, idx) {
  const token = tokens[idx];
  const content3 = token.content;
  return `<!-- ${escapeHtml2(content3).trim()} -->`;
}
function render_myst_target(tokens, idx) {
  const token = tokens[idx];
  const className = "myst-target";
  const label = token.content;
  const target = `<a href="#${label}">(${label})=</a>`;
  return `<div class="${className}">${target}</div>`;
}
function colonFencePlugin(md) {
  md.block.ruler.before("fence", "colon_fence", colon_fence_rule, {
    alt: ["paragraph", "reference", "blockquote", "list", "footnote_def"]
  });
}
function colon_fence_rule(state, startLine, endLine, silent) {
  let haveEndMarker = false;
  let pos = state.bMarks[startLine] + state.tShift[startLine];
  let max = state.eMarks[startLine];
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  if (pos + 3 > max) {
    return false;
  }
  const marker = state.src.charCodeAt(pos);
  if (marker !== 58) {
    return false;
  }
  let mem = pos;
  pos = state.skipChars(pos, marker);
  let len = pos - mem;
  if (len < 3) {
    return false;
  }
  const markup = state.src.slice(mem, pos);
  const params = state.src.slice(pos, max);
  if (silent) {
    return true;
  }
  let nextLine = startLine;
  for (; ; ) {
    nextLine++;
    if (nextLine >= endLine) {
      break;
    }
    pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];
    max = state.eMarks[nextLine];
    if (pos < max && state.sCount[nextLine] < state.blkIndent) {
      break;
    }
    if (state.src.charCodeAt(pos) !== marker) {
      continue;
    }
    if (state.sCount[nextLine] - state.blkIndent >= 4) {
      continue;
    }
    pos = state.skipChars(pos, marker);
    if (pos - mem < len) {
      continue;
    }
    pos = state.skipSpaces(pos);
    if (pos < max) {
      continue;
    }
    haveEndMarker = true;
    break;
  }
  len = state.sCount[startLine];
  state.line = nextLine + (haveEndMarker ? 1 : 0);
  const token = state.push("fence", "code", 0);
  token.info = params;
  token.content = state.getLines(startLine + 1, nextLine, len, true);
  token.markup = markup;
  token.map = [startLine, state.line];
  return true;
}

// ../../node_modules/markdown-it-dollarmath/dist/index.js
var import_utils37 = __toESM(require_utils2(), 1);
var OptionDefaults = {
  allow_space: true,
  allow_digits: true,
  double_inline: true,
  allow_labels: true,
  labelNormalizer(label) {
    return label.replace(/[\s]+/g, "-");
  },
  renderer(content3) {
    return (0, import_utils37.escapeHtml)(content3);
  },
  labelRenderer(label) {
    return `<a href="#${label}" class="mathlabel" title="Permalink to this equation">\xB6</a>`;
  }
};
function dollarmathPlugin(md, options) {
  const fullOptions = Object.assign(Object.assign({}, OptionDefaults), options);
  md.inline.ruler.before("escape", "math_inline", math_inline_dollar(fullOptions));
  md.block.ruler.before("fence", "math_block", math_block_dollar(fullOptions));
  const createRule = (opts) => (tokens, idx) => {
    const content3 = tokens[idx].content.trim();
    let res;
    try {
      res = fullOptions.renderer(content3, { displayMode: opts.displayMode });
    } catch (err) {
      res = md.utils.escapeHtml(`${content3}:${err.message}`);
    }
    const className = opts.inline ? "inline" : "block";
    const tag = opts.displayMode ? "div" : "span";
    const newline = opts.inline ? "" : "\n";
    const id = tokens[idx].info;
    const label = opts.hasLabel ? `${fullOptions.labelRenderer(id)}` : "";
    return [
      `<${tag} ${id ? `id="${id}" ` : ""}class="math ${className}">`,
      label,
      res,
      `</${tag}>`
    ].filter((v) => !!v).join(newline) + newline;
  };
  md.renderer.rules["math_inline"] = createRule({
    displayMode: false,
    inline: true
  });
  md.renderer.rules["math_inline_double"] = createRule({
    displayMode: true,
    inline: true
  });
  md.renderer.rules["math_block"] = createRule({
    displayMode: true
  });
  md.renderer.rules["math_block_label"] = createRule({
    displayMode: true,
    hasLabel: true
  });
}
function isEscaped(state, back_pos, mod = 0) {
  let backslashes = 0;
  while (back_pos >= 0) {
    back_pos = back_pos - 1;
    if (state.src.charCodeAt(back_pos) === 92) {
      backslashes += 1;
    } else {
      break;
    }
  }
  if (backslashes === 0) {
    return false;
  }
  if (backslashes % 2 !== mod) {
    return true;
  }
  return false;
}
function math_inline_dollar(options) {
  function math_inline_dollar_rule(state, silent) {
    if (state.src.charCodeAt(state.pos) !== 36) {
      return false;
    }
    if (!options.allow_space) {
      if (state.md.utils.isWhiteSpace(state.src.charCodeAt(state.pos + 1))) {
        return false;
      }
    }
    if (!options.allow_digits) {
      const char = state.src.charAt(state.pos - 1);
      if (!!char && char.trim() !== "" && !isNaN(Number(char))) {
        return false;
      }
    }
    if (isEscaped(state, state.pos)) {
      return false;
    }
    let is_double = false;
    if (options.double_inline && state.src.charCodeAt(state.pos + 1) === 36) {
      is_double = true;
    }
    let pos = state.pos + 1 + (is_double ? 1 : 0);
    let found_closing = false;
    let end = -1;
    while (!found_closing) {
      end = state.src.indexOf("$", pos);
      if (end === -1) {
        return false;
      }
      if (isEscaped(state, end)) {
        pos = end + 1;
        continue;
      }
      if (is_double && state.src.charCodeAt(end + 1) !== 36) {
        pos = end + 1;
        continue;
      }
      if (is_double) {
        end += 1;
      }
      found_closing = true;
    }
    if (!found_closing) {
      return false;
    }
    if (!options.allow_space) {
      const charCode = state.src.charCodeAt(end - 1);
      if (state.md.utils.isWhiteSpace(charCode)) {
        return false;
      }
    }
    if (!options.allow_digits) {
      const char = state.src.charAt(end + 1);
      if (!!char && char.trim() !== "" && !isNaN(Number(char))) {
        return false;
      }
    }
    let text7 = state.src.slice(state.pos + 1, end);
    if (is_double) {
      text7 = state.src.slice(state.pos + 2, end - 1);
    }
    if (!text7) {
      return false;
    }
    if (!silent) {
      const token = state.push(is_double ? "math_inline_double" : "math_inline", "math", 0);
      token.content = text7;
      token.markup = is_double ? "$$" : "$";
    }
    state.pos = end + 1;
    return true;
  }
  return math_inline_dollar_rule;
}
function matchLabel(lineText, end) {
  const eqnoMatch = lineText.split("").reverse().join("").match(/^\s*\)(?<label>[^)$\r\n]+?)\(\s*\${2}/);
  if (eqnoMatch && eqnoMatch.groups) {
    const label = eqnoMatch.groups["label"].split("").reverse().join("");
    end = end - ((eqnoMatch.index || 0) + eqnoMatch[0].length);
    return { label, end };
  }
  return { end };
}
function math_block_dollar(options) {
  function math_block_dollar_rule(state, startLine, endLine, silent) {
    let haveEndMarker = false;
    const startPos = state.bMarks[startLine] + state.tShift[startLine];
    let end = state.eMarks[startLine];
    if (state.sCount[startLine] - state.blkIndent >= 4) {
      return false;
    }
    if (startPos + 2 > end) {
      return false;
    }
    if (state.src.charCodeAt(startPos) != 36 || state.src.charCodeAt(startPos + 1) != 36) {
      return false;
    }
    let nextLine = startLine;
    let label = void 0;
    let lineText = state.src.slice(startPos, end);
    if (lineText.trim().length > 3) {
      if (lineText.trim().endsWith("$$")) {
        haveEndMarker = true;
        end = end - 2 - (lineText.length - lineText.trim().length);
      } else if (options.allow_labels) {
        const output2 = matchLabel(lineText, end);
        if (output2.label !== void 0) {
          haveEndMarker = true;
          label = output2.label;
          end = output2.end;
        }
      }
    }
    let start;
    if (!haveEndMarker) {
      while (nextLine + 1 < endLine) {
        nextLine += 1;
        start = state.bMarks[nextLine] + state.tShift[nextLine];
        end = state.eMarks[nextLine];
        lineText = state.src.slice(start, end);
        if (lineText.trim().endsWith("$$")) {
          haveEndMarker = true;
          end = end - 2 - (lineText.length - lineText.trim().length);
          break;
        }
        if (lineText.trim() == "") {
          break;
        }
        if (options.allow_labels) {
          const output2 = matchLabel(lineText, end);
          if (output2.label !== void 0) {
            haveEndMarker = true;
            label = output2.label;
            end = output2.end;
            break;
          }
        }
      }
    }
    if (!haveEndMarker) {
      return false;
    }
    state.line = nextLine + (haveEndMarker ? 1 : 0);
    const token = state.push(label ? "math_block_label" : "math_block", "math", 0);
    token.block = true;
    token.content = state.src.slice(startPos + 2, end).trim();
    token.markup = "$$";
    token.map = [startLine, state.line];
    if (label) {
      token.info = options.labelNormalizer ? options.labelNormalizer(label) : label;
    }
    return true;
  }
  return math_block_dollar_rule;
}

// ../../node_modules/markdown-it-amsmath/dist/index.js
function amsmathPlugin(md, options) {
  md.block.ruler.before("blockquote", "amsmath", amsmathBlock, {
    alt: ["paragraph", "reference", "blockquote", "list", "footnote_def"]
  });
  const renderer = options === null || options === void 0 ? void 0 : options.renderer;
  if (renderer) {
    md.renderer.rules["amsmath"] = (tokens, idx) => {
      const content3 = tokens[idx].content;
      let res;
      try {
        res = renderer(content3);
      } catch (err) {
        res = md.utils.escapeHtml(`${content3}:${err.message}`);
      }
      return res;
    };
  } else {
    md.renderer.rules["amsmath"] = (tokens, idx) => {
      const content3 = md.utils.escapeHtml(tokens[idx].content);
      return `<div class="math amsmath">
${content3}
</div>
`;
    };
  }
}
var ENVIRONMENTS = [
  // 3.2 single equation with an automatically generated number
  "equation",
  // 3.3 variation equation, used for equations that don’t fit on a single line
  "multline",
  // 3.5 a group of consecutive equations when there is no alignment desired among them
  "gather",
  // 3.6 Used for two or more equations when vertical alignment is desired
  "align",
  // allows the horizontal space between equations to be explicitly specified.
  "alignat",
  // stretches the space between the equation columns to the maximum possible width
  "flalign",
  // 4.1 The pmatrix, bmatrix, Bmatrix, vmatrix and Vmatrix have (respectively)
  // (),[],{},||,and ‖‖ delimiters built in.
  "matrix",
  "pmatrix",
  "bmatrix",
  "Bmatrix",
  "vmatrix",
  "Vmatrix",
  // eqnarray is another math environment, it is not part of amsmath,
  // and note that it is better to use align or equation+split instead
  "eqnarray"
];
var RE_OPEN = new RegExp(`^\\\\begin{(${ENVIRONMENTS.join("|")})([*]?)}`);
function matchEnvironment(string2) {
  const matchOpen = string2.match(RE_OPEN);
  if (!matchOpen)
    return null;
  const [, environment2, numbered2] = matchOpen;
  const end = `\\end{${environment2}${numbered2}}`;
  const matchClose = string2.indexOf(end);
  if (matchClose === -1)
    return null;
  return { environment: environment2, numbered: numbered2, endpos: matchClose + end.length };
}
function amsmathBlock(state, startLine, endLine, silent) {
  if (state.sCount[startLine] - state.blkIndent >= 4)
    return false;
  const begin = state.bMarks[startLine] + state.tShift[startLine];
  const outcome = matchEnvironment(state.src.slice(begin));
  if (!outcome)
    return false;
  const { environment: environment2, numbered: numbered2 } = outcome;
  let { endpos } = outcome;
  endpos += begin;
  let line2 = startLine;
  while (line2 < endLine) {
    if (endpos >= state.bMarks[line2] && endpos <= state.eMarks[line2]) {
      state.line = line2 + 1;
      break;
    }
    line2 += 1;
  }
  if (!silent) {
    const token = state.push("amsmath", "math", 0);
    token.block = true;
    token.content = state.src.slice(begin, endpos);
    token.meta = { environment: environment2, numbered: numbered2 };
    token.map = [startLine, line2];
  }
  return true;
}

// ../myst-parser/dist/math.js
function plugin(md, options) {
  const opts = options === true ? { amsmath: true, dollarmath: true } : options;
  if (opts === null || opts === void 0 ? void 0 : opts.dollarmath)
    dollarmathPlugin(md);
  if (opts === null || opts === void 0 ? void 0 : opts.amsmath)
    amsmathPlugin(md);
}

// ../myst-parser/dist/plugins.js
function convertFrontMatter(md) {
  md.core.ruler.after("block", "convert_front_matter", (state) => {
    if (state.tokens.length && state.tokens[0].type === "front_matter") {
      const replace = new state.Token("fence", "code", 0);
      replace.map = state.tokens[0].map;
      replace.info = "yaml";
      replace.content = state.tokens[0].meta;
      state.tokens[0] = replace;
    }
    return true;
  });
}

// ../myst-parser/dist/myst.js
var import_markdown_it = __toESM(require_markdown_it(), 1);

// ../myst-directives/dist/utils.js
function classDirectiveOption(nodeType = "node") {
  return {
    class: {
      type: String,
      doc: `Annotate the ${nodeType} with a set of space-delimited class names.`
    }
  };
}
function labelDirectiveOption(nodeType = "node") {
  return {
    label: {
      type: String,
      alias: ["name"],
      doc: `Label the ${nodeType} to be cross-referenced or explicitly linked to.`
    }
  };
}
function enumerationDirectiveOptions(nodeType = "node") {
  return {
    enumerated: {
      type: Boolean,
      alias: ["numbered"],
      doc: `Turn on/off the numbering for the specific ${nodeType}`
    },
    enumerator: {
      type: String,
      alias: ["number"],
      doc: `Explicitly set the ${nodeType} number`
    }
  };
}
function commonDirectiveOptions(nodeType = "node") {
  return {
    ...classDirectiveOption(nodeType),
    ...labelDirectiveOption(nodeType),
    ...enumerationDirectiveOptions(nodeType)
  };
}
function addClassOptions(data, node3) {
  var _a6;
  if (typeof ((_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.class) === "string") {
    node3.class = data.options.class;
  }
  return node3;
}
function addLabelOptions(data, node3) {
  var _a6;
  const { label, identifier } = normalizeLabel((_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.label) || {};
  if (label)
    node3.label = label;
  if (identifier)
    node3.identifier = identifier;
  return node3;
}
function addEnumerationOptions(data, node3) {
  var _a6, _b;
  if (typeof ((_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.enumerated) === "boolean") {
    node3.enumerated = data.options.enumerated;
  }
  if ((_b = data.options) === null || _b === void 0 ? void 0 : _b.enumerator) {
    node3.enumerator = data.options.enumerator;
  }
  return node3;
}
function addCommonDirectiveOptions(data, node3) {
  addClassOptions(data, node3);
  addLabelOptions(data, node3);
  addEnumerationOptions(data, node3);
  return node3;
}

// ../myst-directives/dist/admonition.js
var admonitionDirective = {
  name: "admonition",
  doc: 'Callouts, or "admonitions", highlight a particular block of text that exists slightly apart from the narrative of your page, such as a note or a warning. \n\n The admonition kind can be determined by the directive name used (e.g. `:::{tip}` or `:::{note}`).',
  alias: [
    "attention",
    "caution",
    "danger",
    "error",
    "important",
    "hint",
    "note",
    "seealso",
    "tip",
    "warning"
  ],
  arg: {
    type: "myst",
    doc: "The optional title of the admonition, if not supplied the admonition kind will be used.\n\nNote that the argument parsing is different from Sphinx, which does not allow named admonitions to have custom titles."
  },
  options: {
    ...commonDirectiveOptions("admonition"),
    class: {
      type: String,
      doc: `CSS classes to add to your admonition. Special classes include:

- \`dropdown\`: turns the admonition into a \`<details>\` html element
- \`simple\`: an admonition with "simple" styles
- the name of an admonition, the first valid admonition name encountered will be used (e.g. \`tip\`). Note that if you provide conflicting class names, the first valid admonition name will be used.`
    },
    icon: {
      type: Boolean,
      doc: "Setting icon to false will hide the icon."
      // class_option: list of strings?
    },
    open: {
      type: Boolean,
      doc: "Turn the admonition into a dropdown, if it isn't already, and set the open state."
    }
  },
  body: {
    type: "myst",
    doc: "The body of the admonition. If there is no title and the body starts with bold text or a heading, that content will be used as the admonition title."
  },
  run(data) {
    var _a6, _b, _c, _d2, _e;
    const children = [];
    if (data.arg) {
      children.push({
        type: data.body ? "admonitionTitle" : "paragraph",
        children: data.arg
      });
    }
    if (data.body) {
      children.push(...data.body);
    }
    const admonition5 = {
      type: "admonition",
      kind: data.name !== "admonition" ? data.name : void 0,
      children
    };
    if (((_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.icon) === false) {
      admonition5.icon = false;
    }
    addCommonDirectiveOptions(data, admonition5);
    if (typeof ((_b = data.options) === null || _b === void 0 ? void 0 : _b.open) === "boolean") {
      if (!((_c = admonition5.class) === null || _c === void 0 ? void 0 : _c.split(" ").includes("dropdown"))) {
        admonition5.class = `${(_d2 = admonition5.class) !== null && _d2 !== void 0 ? _d2 : ""} dropdown`.trim();
      }
      if ((_e = data.options) === null || _e === void 0 ? void 0 : _e.open)
        admonition5.open = true;
    }
    return [admonition5];
  }
};

// ../myst-directives/dist/bibliography.js
var bibliographyDirective = {
  name: "bibliography",
  options: {
    ...commonDirectiveOptions("bibliography"),
    filter: {
      type: String
    }
  },
  run(data) {
    var _a6;
    const bibliography2 = {
      type: "bibliography",
      filter: (_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.filter
    };
    addCommonDirectiveOptions(data, bibliography2);
    return [bibliography2];
  }
};

// ../myst-directives/dist/code.js
function parseEmphasizeLines(data, vfile2, emphasizeLinesString) {
  const { node: node3 } = data;
  if (!emphasizeLinesString)
    return void 0;
  const result = /* @__PURE__ */ new Set();
  for (const part of emphasizeLinesString.split(",")) {
    const trimmed = part.trim();
    const rangeMatch = trimmed.match(/^(\d+)\s*-\s*(\d+)$/);
    if (rangeMatch) {
      const start = Number(rangeMatch[1]);
      const end = Number(rangeMatch[2]);
      if (start <= end) {
        for (let i2 = start; i2 <= end; i2++) {
          result.add(i2);
        }
        continue;
      } else {
        fileWarn(vfile2, `Invalid emphasize-lines range "${trimmed}" (start > end)`, {
          node: node3,
          source: "code-block:options",
          ruleId: RuleId.directiveOptionsCorrect
        });
        continue;
      }
    }
    if (/^\d+$/.test(trimmed)) {
      result.add(Number(trimmed));
    } else if (trimmed !== "") {
      fileWarn(vfile2, `Invalid emphasize-lines value "${trimmed}"`, {
        node: node3,
        source: "code-block:options",
        ruleId: RuleId.directiveOptionsCorrect
      });
    }
  }
  if (result.size === 0)
    return void 0;
  return Array.from(result).sort((a2, b) => a2 - b);
}
function getCodeBlockOptions(data, vfile2, defaultFilename) {
  var _a6;
  const { options, node: node3 } = data;
  if ((options === null || options === void 0 ? void 0 : options["lineno-start"]) != null && (options === null || options === void 0 ? void 0 : options["number-lines"]) != null) {
    fileWarn(vfile2, 'Cannot use both "lineno-start" and "number-lines"', {
      node: (_a6 = select('mystOption[name="number-lines"]', node3)) !== null && _a6 !== void 0 ? _a6 : node3,
      source: "code-block:options",
      ruleId: RuleId.directiveOptionsCorrect
    });
  }
  const emphasizeLines = parseEmphasizeLines(data, vfile2, options === null || options === void 0 ? void 0 : options["emphasize-lines"]);
  const numberLines = options === null || options === void 0 ? void 0 : options["number-lines"];
  const showLineNumbers = (options === null || options === void 0 ? void 0 : options.linenos) || (options === null || options === void 0 ? void 0 : options["lineno-start"]) || (options === null || options === void 0 ? void 0 : options["lineno-match"]) || numberLines ? true : void 0;
  let startingLineNumber = numberLines != null && numberLines > 1 ? numberLines : options === null || options === void 0 ? void 0 : options["lineno-start"];
  if (options === null || options === void 0 ? void 0 : options["lineno-match"]) {
    startingLineNumber = "match";
  } else if (startingLineNumber == null || startingLineNumber <= 1) {
    startingLineNumber = void 0;
  }
  let filename = options === null || options === void 0 ? void 0 : options["filename"];
  if ((filename === null || filename === void 0 ? void 0 : filename.toLowerCase()) === "false") {
    filename = void 0;
  } else if (!filename && defaultFilename) {
    filename = defaultFilename;
  }
  return {
    emphasizeLines,
    showLineNumbers,
    startingLineNumber,
    filename
  };
}
var CODE_DIRECTIVE_OPTIONS = {
  caption: {
    type: "myst",
    doc: "A parsed caption for the code block."
  },
  linenos: {
    type: Boolean,
    doc: "Show line numbers"
  },
  "lineno-start": {
    type: Number,
    doc: "Start line numbering from a particular value, default is 1. If present, line numbering is activated."
  },
  "number-lines": {
    type: Number,
    doc: 'Alternative for "lineno-start", turns on line numbering and can be an integer that is the start of the line numbering.'
  },
  "emphasize-lines": {
    type: String,
    doc: 'Emphasize particular lines (comma-separated numbers which can include ranges), e.g. "3,5,7-9"'
  },
  filename: {
    type: String,
    doc: "Show the filename in addition to the rendered code. The `include` directive will use the filename by default, to turn off this default set the filename to `false`."
  }
  // dedent: {
  //   type: Number,
  //   doc: 'Strip indentation characters from the code block',
  // },
  // force: {
  //   type: Boolean,
  //   doc: 'Ignore minor errors on highlighting',
  // },
};
function parseTags(input3, vfile2, node3) {
  var _a6, _b;
  if (!input3)
    return void 0;
  if (typeof input3 === "string" && input3.startsWith("[") && input3.endsWith("]")) {
    try {
      return parseTags(js_yaml_default.load(input3), vfile2, node3);
    } catch (error) {
      fileError(vfile2, "Could not load tags for code-cell directive", {
        node: (_a6 = select('mystOption[name="tags"]', node3)) !== null && _a6 !== void 0 ? _a6 : node3,
        source: "code-cell:tags",
        ruleId: RuleId.directiveOptionsCorrect
      });
      return void 0;
    }
  }
  if (typeof input3 === "string") {
    const tags2 = input3.split(/[,\s]/).map((t2) => t2.trim()).filter((t2) => !!t2);
    return tags2.length > 0 ? tags2 : void 0;
  }
  if (!Array.isArray(input3))
    return void 0;
  const tags = input3;
  if (tags && Array.isArray(tags) && tags.every((t2) => typeof t2 === "string")) {
    if (tags.length > 0) {
      return tags.map((t2) => t2.trim()).filter((t2) => !!t2);
    }
  } else if (tags) {
    fileWarn(vfile2, "tags in code-cell directive must be a list of strings", {
      node: (_b = select('mystOption[name="tags"]', node3)) !== null && _b !== void 0 ? _b : node3,
      source: "code-cell:tags",
      ruleId: RuleId.directiveOptionsCorrect
    });
    return void 0;
  }
}
var codeDirective = {
  name: "code",
  doc: "A code-block environment with a language as the argument, and options for highlighting, showing line numbers, and an optional filename.",
  alias: ["code-block", "sourcecode"],
  arg: {
    type: String,
    doc: "Code language, for example `python` or `typescript`"
  },
  options: {
    ...commonDirectiveOptions("code"),
    ...CODE_DIRECTIVE_OPTIONS
  },
  body: {
    type: String,
    doc: "The raw code to display for the code block."
  },
  run(data, vfile2) {
    var _a6;
    const opts = getCodeBlockOptions(data, vfile2);
    const code7 = {
      type: "code",
      lang: data.arg,
      ...opts,
      value: data.body
    };
    if (!((_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.caption)) {
      addCommonDirectiveOptions(data, code7);
      return [code7];
    }
    const caption3 = {
      type: "caption",
      children: [
        {
          type: "paragraph",
          children: data.options.caption
        }
      ]
    };
    const container4 = {
      type: "container",
      kind: "code",
      children: [code7, caption3]
    };
    addCommonDirectiveOptions(data, container4);
    return [container4];
  }
};
var codeCellDirective = {
  name: "code-cell",
  doc: "An executable code cell",
  arg: {
    type: String,
    doc: "Language for execution and display, for example `python`. It will default to the language of the notebook or containing markdown file."
  },
  options: {
    ...commonDirectiveOptions("code-cell"),
    caption: {
      type: "myst",
      doc: "A parsed caption for the code output."
    },
    tags: {
      type: String,
      alias: ["tag"],
      doc: "A comma-separated list of tags to add to the cell, for example, `remove-input` or `hide-cell`."
    }
  },
  body: {
    type: String,
    doc: "The code to be executed and displayed."
  },
  run(data, vfile2) {
    var _a6, _b, _c;
    const code7 = {
      type: "code",
      lang: data.arg,
      executable: true,
      value: (_a6 = data.body) !== null && _a6 !== void 0 ? _a6 : ""
    };
    const output2 = {
      type: "output",
      id: nanoid(),
      data: []
    };
    const block5 = {
      type: "block",
      kind: NotebookCell.code,
      children: [code7, output2],
      data: {}
    };
    addCommonDirectiveOptions(data, block5);
    if ((_b = data.options) === null || _b === void 0 ? void 0 : _b.caption) {
      block5.data.caption = [{ type: "paragraph", children: data.options.caption }];
    }
    const tags = parseTags((_c = data.options) === null || _c === void 0 ? void 0 : _c.tags, vfile2, data.node);
    if (tags)
      block5.data.tags = tags;
    return [block5];
  }
};

// ../myst-directives/dist/dropdown.js
var dropdownDirective = {
  name: "dropdown",
  arg: {
    type: "myst"
  },
  options: {
    ...commonDirectiveOptions("dropdown"),
    // TODO: Add enumeration in future
    open: {
      type: Boolean,
      doc: "When true, the dropdown starts open."
    }
    // Legacy options we may want to implement:
    // color
    // icon
    // animate
    // margin
    // name
    // 'class-container'
    // 'class-title'
    // 'class-body'
  },
  body: {
    type: "myst",
    required: true
  },
  run(data) {
    var _a6;
    const children = [];
    if (data.arg) {
      children.push({ type: "summary", children: data.arg });
    }
    children.push(...data.body);
    const details3 = {
      type: "details",
      open: (_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.open,
      children
    };
    addCommonDirectiveOptions(data, details3);
    return [details3];
  }
};

// ../myst-directives/dist/embed.js
var embedDirective = {
  name: "embed",
  doc: "The embed directive allows you to duplicate content from another part of your project. This can also be done through the figure directive.",
  arg: {
    type: String,
    doc: "The label of the node that you are embedding.",
    required: true
  },
  options: {
    ...commonDirectiveOptions("embed"),
    "remove-input": {
      type: Boolean,
      doc: "If embedding a Jupyter Notebook cell, remove the input of the cell."
    },
    "remove-output": {
      type: Boolean,
      doc: "If embedding a Jupyter Notebook cell, remove the output of the cell."
    }
  },
  run(data) {
    var _a6, _b;
    if (!data.arg)
      return [];
    const argString = data.arg;
    const arg2 = argString.startsWith("#") ? argString.substring(1) : argString;
    const { label } = normalizeLabel(arg2) || {};
    if (!label)
      return [];
    const embed3 = {
      type: "embed",
      source: { label },
      "remove-input": (_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6["remove-input"],
      "remove-output": (_b = data.options) === null || _b === void 0 ? void 0 : _b["remove-output"]
    };
    addCommonDirectiveOptions(data, embed3);
    return [embed3];
  }
};

// ../myst-directives/dist/figure.js
var figureDirective = {
  name: "figure",
  arg: {
    type: String,
    doc: "The filename of an image (e.g. `my-fig.png`), or an ID of a Jupyter Notebook cell (e.g. `#my-cell`)."
  },
  options: {
    ...commonDirectiveOptions("figure"),
    class: {
      type: String,
      alias: ["figclass"],
      doc: `CSS classes to add to your figure. Special classes include:

- \`full-width\`: changes the figure environment to cover two columns in LaTeX`
    },
    height: {
      type: String,
      doc: "The figure height, in CSS units, for example `4em` or `300px`.",
      alias: ["h"]
    },
    width: {
      type: String,
      // TODO: validate that this is a CSS width
      alias: ["w", "figwidth"],
      doc: "The figure width, in CSS units, for example `50%` or `300px`."
    },
    alt: {
      type: String,
      doc: "Alternative text for the image"
    },
    // scale: {
    //   type: Number,
    // },
    // target: {
    //   type: String,
    // },
    align: {
      type: String,
      doc: "The alignment of the image in the figure. Choose one of `left`, `center` or `right`"
      // TODO: this is not implemented below
      // choice(["left", "center", "right"])
    },
    "remove-input": {
      type: Boolean,
      doc: "If the argument is a notebook cell, use this flag to remove the input code from the cell."
    },
    "remove-output": {
      type: Boolean,
      doc: "If the argument is a notebook cell, use this flag to remove the output from the cell."
    },
    placeholder: {
      type: String,
      doc: "A placeholder image when using a notebook cell as the figure contents. This will be shown in place of the Jupyter output until an execution environment is attached. It will also be used in static outputs, such as a PDF output."
    },
    "no-subfigures": {
      type: Boolean,
      doc: "Disallow implicit subfigure creation from child nodes",
      alias: ["no-subfig", "no-subfigure"]
    },
    kind: {
      type: String,
      doc: 'Override the figures "kind", which changes the enumeration to start counting independently for that kind. For example, `kind: "example"`. The default enumeration and referencing will be the capitalized `kind` followed by a number (e.g. "Example 1").'
    }
  },
  body: {
    type: "myst",
    doc: "If an argument is provided to the figure directive, the body will be the figure caption. You may also omit the figure directive argument and provide images in the body of the figure, these will be parsed into sub figures."
  },
  run(data) {
    var _a6, _b, _c, _d2, _e, _f, _g, _h, _j, _k, _l, _m, _o;
    const children = [];
    if (data.arg) {
      children.push({
        type: "image",
        url: data.arg,
        alt: (_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.alt,
        width: (_b = data.options) === null || _b === void 0 ? void 0 : _b.width,
        height: (_c = data.options) === null || _c === void 0 ? void 0 : _c.height,
        align: (_d2 = data.options) === null || _d2 === void 0 ? void 0 : _d2.align,
        // These will pass through if the node is converted to an embed node in the image transform
        "remove-input": (_e = data.options) === null || _e === void 0 ? void 0 : _e["remove-input"],
        "remove-output": (_f = data.options) === null || _f === void 0 ? void 0 : _f["remove-output"]
      });
    }
    if ((_g = data.options) === null || _g === void 0 ? void 0 : _g.placeholder) {
      children.push({
        type: "image",
        placeholder: true,
        url: data.options.placeholder,
        alt: (_h = data.options) === null || _h === void 0 ? void 0 : _h.alt,
        width: (_j = data.options) === null || _j === void 0 ? void 0 : _j.width,
        height: (_k = data.options) === null || _k === void 0 ? void 0 : _k.height,
        align: (_l = data.options) === null || _l === void 0 ? void 0 : _l.align
      });
    }
    if (data.body) {
      children.push(...data.body);
    }
    const container4 = {
      type: "container",
      kind: ((_m = data.options) === null || _m === void 0 ? void 0 : _m.kind) || "figure",
      children
    };
    addCommonDirectiveOptions(data, container4);
    if ((_o = data.options) === null || _o === void 0 ? void 0 : _o["no-subfigures"]) {
      container4.noSubcontainers = true;
    }
    return [container4];
  }
};

// ../myst-directives/dist/iframe.js
var iframeDirective = {
  name: "iframe",
  arg: {
    type: String,
    doc: "The URL source (`src`) of the HTML iframe element.",
    required: true
  },
  options: {
    ...commonDirectiveOptions("iframe"),
    width: {
      type: String,
      doc: "The iframe width, in CSS units, for example `50%` or `300px`."
    },
    align: {
      type: String,
      doc: "The alignment of the iframe in the page. Choose one of `left`, `center` or `right`"
    },
    title: {
      type: String,
      doc: "The title attribute for the iframe element, describing its content for accessibility."
    },
    placeholder: {
      type: String,
      doc: "A placeholder image for the iframe in static exports."
    }
  },
  body: { type: "myst", doc: "If provided, this will be the iframe caption." },
  run(data) {
    var _a6, _b, _c, _d2, _e, _f, _g, _h;
    const iframe4 = {
      type: "iframe",
      src: data.arg,
      width: (_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.width,
      align: (_b = data.options) === null || _b === void 0 ? void 0 : _b.align,
      title: (_c = data.options) === null || _c === void 0 ? void 0 : _c.title
    };
    if ((_d2 = data.options) === null || _d2 === void 0 ? void 0 : _d2.placeholder) {
      iframe4.children = [
        {
          type: "image",
          placeholder: true,
          url: data.options.placeholder,
          alt: (_e = data.options) === null || _e === void 0 ? void 0 : _e.alt,
          width: (_f = data.options) === null || _f === void 0 ? void 0 : _f.width,
          height: (_g = data.options) === null || _g === void 0 ? void 0 : _g.height,
          align: (_h = data.options) === null || _h === void 0 ? void 0 : _h.align
        }
      ];
    }
    if (!data.body) {
      addCommonDirectiveOptions(data, iframe4);
      return [iframe4];
    }
    const container4 = {
      type: "container",
      kind: "figure",
      children: [iframe4, { type: "caption", children: data.body }]
    };
    addCommonDirectiveOptions(data, container4);
    return [container4];
  }
};

// ../myst-directives/dist/image.js
var imageDirective = {
  name: "image",
  arg: {
    type: String,
    doc: "The filename of an image (e.g. `my-fig.png`).",
    required: true
  },
  options: {
    ...commonDirectiveOptions("image"),
    height: {
      type: String,
      doc: "The image height, in CSS units, for example `4em` or `300px`.",
      alias: ["h"]
    },
    width: {
      type: String,
      alias: ["w"],
      doc: "The image width, in CSS units, for example `50%` or `300px`."
    },
    alt: {
      type: String,
      doc: "Alternative text for the image"
    },
    // scale: {
    //   type: Number,
    // },
    // target: {
    //   type: String,
    // },
    align: {
      type: String,
      // choice(["left", "center", "right", "top", "middle", "bottom"])
      doc: "The alignment of the image. Choose one of `left`, `center` or `right`"
    },
    title: {
      type: String,
      doc: "Title text for the image"
    }
  },
  run(data) {
    const { alt, height: height2, width, align, title } = data.options || {};
    const image6 = {
      type: "image",
      url: data.arg,
      alt: alt !== null && alt !== void 0 ? alt : data.body ? toText(data.body) : void 0,
      title,
      height: height2,
      width,
      align: align !== null && align !== void 0 ? align : "center"
    };
    addCommonDirectiveOptions(data, image6);
    return [image6];
  }
};

// ../myst-directives/dist/include.js
var includeDirective = {
  name: "include",
  alias: ["literalinclude"],
  doc: "Allows you to include the source or parsed version of a separate file into your document tree.",
  arg: {
    type: String,
    doc: "The file path, which is relative to the file from which it was referenced.",
    required: true
  },
  options: {
    ...commonDirectiveOptions("include"),
    literal: {
      type: Boolean,
      doc: "Flag the include block as literal, and show the contents as a code block. This can also be set automatically by setting the `language` or using the `literalinclude` directive."
    },
    lang: {
      type: String,
      doc: "The language of the code to be highlighted as. If set, this automatically changes an `include` into a `literalinclude`.",
      alias: ["language", "code"]
    },
    ...CODE_DIRECTIVE_OPTIONS,
    "start-line": {
      type: Number,
      doc: "Only the content starting from this line will be included. The first line has index 0 and negative values count from the end."
    },
    "start-at": {
      type: String,
      doc: "Only the content after and including the first occurrence of the specified text in the external data file will be included."
    },
    "start-after": {
      type: String,
      doc: "Only the content after the first occurrence of the specified text in the external data file will be included."
    },
    "end-line": {
      type: Number,
      doc: "Only the content up to (but excluding) this line will be included."
    },
    "end-at": {
      type: String,
      doc: "Only the content up to and including the first occurrence of the specified text in the external data file (but after any start-after text) will be included."
    },
    "end-before": {
      type: String,
      doc: "Only the content before the first occurrence of the specified text in the external data file (but after any start-after text) will be included."
    },
    lines: {
      type: String,
      doc: "Specify exactly which lines to include from the original file, starting at 1. For example, `1,3,5-10,20-` includes the lines 1, 3, 5 to 10 and lines 20 to the last line of the original file."
    },
    "lineno-match": {
      type: Boolean,
      doc: "Display the original line numbers, correct only when the selection consists of contiguous lines."
    }
  },
  run(data, vfile2) {
    var _a6, _b, _c, _d2, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
    const literal = data.name === "literalinclude" || !!((_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.literal) || !!((_b = data.options) === null || _b === void 0 ? void 0 : _b.lang);
    const file = data.arg;
    const lang = (_d2 = (_c = data.options) === null || _c === void 0 ? void 0 : _c.lang) !== null && _d2 !== void 0 ? _d2 : extToLanguage(file.split(".").pop());
    const opts = literal ? getCodeBlockOptions(
      data,
      vfile2,
      // Set the filename in the literal include by default
      file.split(/\/|\\/).pop()
    ) : {};
    const caption3 = literal ? (_e = data.options) === null || _e === void 0 ? void 0 : _e.caption : void 0;
    const filter6 = {};
    ensureOnlyOneOf(data, vfile2, ["start-at", "start-line", "start-after", "lines"]);
    ensureOnlyOneOf(data, vfile2, ["end-at", "end-line", "end-before", "lines"]);
    filter6.startAt = (_f = data.options) === null || _f === void 0 ? void 0 : _f["start-at"];
    filter6.startAfter = (_g = data.options) === null || _g === void 0 ? void 0 : _g["start-after"];
    filter6.endAt = (_h = data.options) === null || _h === void 0 ? void 0 : _h["end-at"];
    filter6.endBefore = (_j = data.options) === null || _j === void 0 ? void 0 : _j["end-before"];
    if ((_k = data.options) === null || _k === void 0 ? void 0 : _k.lines) {
      filter6.lines = parseLinesString(vfile2, (_l = select('mystOption[name="lines"]', data.node)) !== null && _l !== void 0 ? _l : void 0, (_m = data.options) === null || _m === void 0 ? void 0 : _m.lines);
    } else {
      const startLine = (_o = data.options) === null || _o === void 0 ? void 0 : _o["start-line"];
      const endLine = (_p = data.options) === null || _p === void 0 ? void 0 : _p["end-line"];
      const lines = [];
      if (startLine != null)
        lines.push(startLine);
      if (startLine == null && endLine != null)
        lines.push(0);
      if (endLine != null)
        lines.push(endLine);
      if (lines.length > 0) {
        filter6.lines = [
          lines.map((n) => {
            if (n >= 0)
              return n + 1;
            return n;
          })
        ];
      }
    }
    const usesFilter = Object.values(filter6).some((value) => value !== void 0);
    const include3 = {
      type: "include",
      file,
      literal,
      lang,
      caption: caption3,
      filter: usesFilter ? filter6 : void 0,
      ...opts
    };
    addCommonDirectiveOptions(data, include3);
    return [include3];
  }
};
function parseLinesString(vfile2, node3, linesString) {
  if (!linesString)
    return void 0;
  return linesString.split(",").map((l) => {
    const line2 = l.trim();
    const match3 = line2.match(/^([0-9]+)(?:\s*(-)\s*([0-9]+)?)?$/);
    if (!match3) {
      fileWarn(vfile2, `Unknown lines match "${line2}"`, {
        node: node3,
        ruleId: RuleId.directiveOptionsCorrect
      });
      return void 0;
    }
    const [, first2, dash2, last] = match3;
    if (!dash2 && !last) {
      return Number.parseInt(first2);
    }
    if (dash2 && !last) {
      return [Number.parseInt(first2)];
    }
    return [Number.parseInt(first2), Number.parseInt(last)];
  }).filter((l) => !!l);
}
function ensureOnlyOneOf(data, vfile2, exclusive) {
  const { options, node: node3 } = data;
  if (!options)
    return;
  const set1 = new Set(exclusive);
  const set22 = new Set(Object.keys(options));
  const intersection = new Set([...set1].filter((x2) => set22.has(x2)));
  if (intersection.size > 1) {
    fileWarn(vfile2, `Conflicting options for directive: ["${[...intersection].join('", "')}"]`, {
      node: node3,
      note: `Choose a single option out of ["${[...exclusive].join('", "')}"]`,
      ruleId: RuleId.directiveOptionsCorrect
    });
  }
}
function extToLanguage(ext2) {
  var _a6;
  return (_a6 = {
    ts: "typescript",
    js: "javascript",
    mjs: "javascript",
    tex: "latex",
    py: "python",
    md: "markdown",
    yml: "yaml"
  }[ext2 !== null && ext2 !== void 0 ? ext2 : ""]) !== null && _a6 !== void 0 ? _a6 : ext2;
}

// ../myst-directives/dist/indices.js
function warnOnOptionSyntax(option3, value, vfile2, node3) {
  fileError(vfile2, `Index entry definitions should not use :option: syntax`, {
    node: node3,
    note: `Replace ":${option3}: ${value}" with "${option3}: ${value}"`
  });
}
var indexDirective = {
  name: "index",
  arg: {
    type: String
  },
  options: {
    single: {
      type: String
    },
    pair: {
      type: String
    },
    triple: {
      type: String
    },
    see: {
      type: String
    },
    seealso: {
      type: String,
      alias: ["seeAlso", "see-also"]
    },
    label: {
      type: String,
      alias: ["name"]
    }
  },
  body: {
    type: String
  },
  run(data, vfile2) {
    var _a6, _b, _c, _d2, _e, _f;
    const values = { single: [], pair: [], triple: [], see: [], seealso: [] };
    if (data.arg)
      parseIndexLine(data.arg, values, vfile2, data.node);
    if ((_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.single) {
      warnOnOptionSyntax("single", data.options.single, vfile2, data.node);
      values.single.push(data.options.single);
    }
    if ((_b = data.options) === null || _b === void 0 ? void 0 : _b.pair) {
      warnOnOptionSyntax("pair", data.options.pair, vfile2, data.node);
      values.pair.push(data.options.pair);
    }
    if ((_c = data.options) === null || _c === void 0 ? void 0 : _c.triple) {
      warnOnOptionSyntax("triple", data.options.triple, vfile2, data.node);
      values.triple.push(data.options.triple);
    }
    if ((_d2 = data.options) === null || _d2 === void 0 ? void 0 : _d2.see) {
      warnOnOptionSyntax("see", data.options.see, vfile2, data.node);
      values.see.push(data.options.see);
    }
    if ((_e = data.options) === null || _e === void 0 ? void 0 : _e.seealso) {
      warnOnOptionSyntax("seealso", data.options.seealso, vfile2, data.node);
      values.seealso.push(data.options.seealso);
    }
    if (data.body) {
      data.body.split("\n").forEach((line2) => {
        parseIndexLine(line2, values, vfile2, data.node);
      });
    }
    const entries2 = createIndexEntries(values, vfile2, data.node);
    const output2 = [
      {
        type: "mystTarget",
        label: (_f = data.options) === null || _f === void 0 ? void 0 : _f.label,
        indexEntries: entries2
      }
    ];
    return output2;
  }
};
var genIndexDirective = {
  name: "show-index",
  alias: ["genindex"],
  arg: {
    type: "myst",
    doc: "Heading to be included in index block"
  },
  run(data) {
    var _a6;
    const children = [];
    if (data.arg) {
      const parsedArg = data.arg;
      if (((_a6 = parsedArg[0]) === null || _a6 === void 0 ? void 0 : _a6.type) === "heading") {
        children.push(...parsedArg);
      } else {
        children.push({
          type: "heading",
          depth: 2,
          enumerated: false,
          children: parsedArg
        });
      }
    }
    return [{ type: "genindex", children }];
  }
};

// ../myst-directives/node_modules/csv-parse/dist/esm/sync.js
var global$1 = typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {};
var lookup = [];
var revLookup = [];
var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array;
var inited = false;
function init() {
  inited = true;
  var code7 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  for (var i2 = 0, len = code7.length; i2 < len; ++i2) {
    lookup[i2] = code7[i2];
    revLookup[code7.charCodeAt(i2)] = i2;
  }
  revLookup["-".charCodeAt(0)] = 62;
  revLookup["_".charCodeAt(0)] = 63;
}
function toByteArray(b64) {
  if (!inited) {
    init();
  }
  var i2, j, l, tmp, placeHolders, arr;
  var len = b64.length;
  if (len % 4 > 0) {
    throw new Error("Invalid string. Length must be a multiple of 4");
  }
  placeHolders = b64[len - 2] === "=" ? 2 : b64[len - 1] === "=" ? 1 : 0;
  arr = new Arr(len * 3 / 4 - placeHolders);
  l = placeHolders > 0 ? len - 4 : len;
  var L = 0;
  for (i2 = 0, j = 0; i2 < l; i2 += 4, j += 3) {
    tmp = revLookup[b64.charCodeAt(i2)] << 18 | revLookup[b64.charCodeAt(i2 + 1)] << 12 | revLookup[b64.charCodeAt(i2 + 2)] << 6 | revLookup[b64.charCodeAt(i2 + 3)];
    arr[L++] = tmp >> 16 & 255;
    arr[L++] = tmp >> 8 & 255;
    arr[L++] = tmp & 255;
  }
  if (placeHolders === 2) {
    tmp = revLookup[b64.charCodeAt(i2)] << 2 | revLookup[b64.charCodeAt(i2 + 1)] >> 4;
    arr[L++] = tmp & 255;
  } else if (placeHolders === 1) {
    tmp = revLookup[b64.charCodeAt(i2)] << 10 | revLookup[b64.charCodeAt(i2 + 1)] << 4 | revLookup[b64.charCodeAt(i2 + 2)] >> 2;
    arr[L++] = tmp >> 8 & 255;
    arr[L++] = tmp & 255;
  }
  return arr;
}
function tripletToBase64(num) {
  return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];
}
function encodeChunk(uint8, start, end) {
  var tmp;
  var output2 = [];
  for (var i2 = start; i2 < end; i2 += 3) {
    tmp = (uint8[i2] << 16) + (uint8[i2 + 1] << 8) + uint8[i2 + 2];
    output2.push(tripletToBase64(tmp));
  }
  return output2.join("");
}
function fromByteArray(uint8) {
  if (!inited) {
    init();
  }
  var tmp;
  var len = uint8.length;
  var extraBytes = len % 3;
  var output2 = "";
  var parts = [];
  var maxChunkLength = 16383;
  for (var i2 = 0, len2 = len - extraBytes; i2 < len2; i2 += maxChunkLength) {
    parts.push(encodeChunk(uint8, i2, i2 + maxChunkLength > len2 ? len2 : i2 + maxChunkLength));
  }
  if (extraBytes === 1) {
    tmp = uint8[len - 1];
    output2 += lookup[tmp >> 2];
    output2 += lookup[tmp << 4 & 63];
    output2 += "==";
  } else if (extraBytes === 2) {
    tmp = (uint8[len - 2] << 8) + uint8[len - 1];
    output2 += lookup[tmp >> 10];
    output2 += lookup[tmp >> 4 & 63];
    output2 += lookup[tmp << 2 & 63];
    output2 += "=";
  }
  parts.push(output2);
  return parts.join("");
}
function read(buffer2, offset, isLE, mLen, nBytes) {
  var e2, m2;
  var eLen = nBytes * 8 - mLen - 1;
  var eMax = (1 << eLen) - 1;
  var eBias = eMax >> 1;
  var nBits = -7;
  var i2 = isLE ? nBytes - 1 : 0;
  var d = isLE ? -1 : 1;
  var s5 = buffer2[offset + i2];
  i2 += d;
  e2 = s5 & (1 << -nBits) - 1;
  s5 >>= -nBits;
  nBits += eLen;
  for (; nBits > 0; e2 = e2 * 256 + buffer2[offset + i2], i2 += d, nBits -= 8) {
  }
  m2 = e2 & (1 << -nBits) - 1;
  e2 >>= -nBits;
  nBits += mLen;
  for (; nBits > 0; m2 = m2 * 256 + buffer2[offset + i2], i2 += d, nBits -= 8) {
  }
  if (e2 === 0) {
    e2 = 1 - eBias;
  } else if (e2 === eMax) {
    return m2 ? NaN : (s5 ? -1 : 1) * Infinity;
  } else {
    m2 = m2 + Math.pow(2, mLen);
    e2 = e2 - eBias;
  }
  return (s5 ? -1 : 1) * m2 * Math.pow(2, e2 - mLen);
}
function write(buffer2, value, offset, isLE, mLen, nBytes) {
  var e2, m2, c;
  var eLen = nBytes * 8 - mLen - 1;
  var eMax = (1 << eLen) - 1;
  var eBias = eMax >> 1;
  var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
  var i2 = isLE ? 0 : nBytes - 1;
  var d = isLE ? 1 : -1;
  var s5 = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
  value = Math.abs(value);
  if (isNaN(value) || value === Infinity) {
    m2 = isNaN(value) ? 1 : 0;
    e2 = eMax;
  } else {
    e2 = Math.floor(Math.log(value) / Math.LN2);
    if (value * (c = Math.pow(2, -e2)) < 1) {
      e2--;
      c *= 2;
    }
    if (e2 + eBias >= 1) {
      value += rt / c;
    } else {
      value += rt * Math.pow(2, 1 - eBias);
    }
    if (value * c >= 2) {
      e2++;
      c /= 2;
    }
    if (e2 + eBias >= eMax) {
      m2 = 0;
      e2 = eMax;
    } else if (e2 + eBias >= 1) {
      m2 = (value * c - 1) * Math.pow(2, mLen);
      e2 = e2 + eBias;
    } else {
      m2 = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
      e2 = 0;
    }
  }
  for (; mLen >= 8; buffer2[offset + i2] = m2 & 255, i2 += d, m2 /= 256, mLen -= 8) {
  }
  e2 = e2 << mLen | m2;
  eLen += mLen;
  for (; eLen > 0; buffer2[offset + i2] = e2 & 255, i2 += d, e2 /= 256, eLen -= 8) {
  }
  buffer2[offset + i2 - d] |= s5 * 128;
}
var toString3 = {}.toString;
var isArray = Array.isArray || function(arr) {
  return toString3.call(arr) == "[object Array]";
};
var INSPECT_MAX_BYTES = 50;
Buffer2.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== void 0 ? global$1.TYPED_ARRAY_SUPPORT : true;
kMaxLength();
function kMaxLength() {
  return Buffer2.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823;
}
function createBuffer(that, length) {
  if (kMaxLength() < length) {
    throw new RangeError("Invalid typed array length");
  }
  if (Buffer2.TYPED_ARRAY_SUPPORT) {
    that = new Uint8Array(length);
    that.__proto__ = Buffer2.prototype;
  } else {
    if (that === null) {
      that = new Buffer2(length);
    }
    that.length = length;
  }
  return that;
}
function Buffer2(arg2, encodingOrOffset, length) {
  if (!Buffer2.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer2)) {
    return new Buffer2(arg2, encodingOrOffset, length);
  }
  if (typeof arg2 === "number") {
    if (typeof encodingOrOffset === "string") {
      throw new Error(
        "If encoding is specified then the first argument must be a string"
      );
    }
    return allocUnsafe(this, arg2);
  }
  return from(this, arg2, encodingOrOffset, length);
}
Buffer2.poolSize = 8192;
Buffer2._augment = function(arr) {
  arr.__proto__ = Buffer2.prototype;
  return arr;
};
function from(that, value, encodingOrOffset, length) {
  if (typeof value === "number") {
    throw new TypeError('"value" argument must not be a number');
  }
  if (typeof ArrayBuffer !== "undefined" && value instanceof ArrayBuffer) {
    return fromArrayBuffer(that, value, encodingOrOffset, length);
  }
  if (typeof value === "string") {
    return fromString(that, value, encodingOrOffset);
  }
  return fromObject(that, value);
}
Buffer2.from = function(value, encodingOrOffset, length) {
  return from(null, value, encodingOrOffset, length);
};
if (Buffer2.TYPED_ARRAY_SUPPORT) {
  Buffer2.prototype.__proto__ = Uint8Array.prototype;
  Buffer2.__proto__ = Uint8Array;
  if (typeof Symbol !== "undefined" && Symbol.species && Buffer2[Symbol.species] === Buffer2) ;
}
function assertSize(size) {
  if (typeof size !== "number") {
    throw new TypeError('"size" argument must be a number');
  } else if (size < 0) {
    throw new RangeError('"size" argument must not be negative');
  }
}
function alloc(that, size, fill3, encoding) {
  assertSize(size);
  if (size <= 0) {
    return createBuffer(that, size);
  }
  if (fill3 !== void 0) {
    return typeof encoding === "string" ? createBuffer(that, size).fill(fill3, encoding) : createBuffer(that, size).fill(fill3);
  }
  return createBuffer(that, size);
}
Buffer2.alloc = function(size, fill3, encoding) {
  return alloc(null, size, fill3, encoding);
};
function allocUnsafe(that, size) {
  assertSize(size);
  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);
  if (!Buffer2.TYPED_ARRAY_SUPPORT) {
    for (var i2 = 0; i2 < size; ++i2) {
      that[i2] = 0;
    }
  }
  return that;
}
Buffer2.allocUnsafe = function(size) {
  return allocUnsafe(null, size);
};
Buffer2.allocUnsafeSlow = function(size) {
  return allocUnsafe(null, size);
};
function fromString(that, string2, encoding) {
  if (typeof encoding !== "string" || encoding === "") {
    encoding = "utf8";
  }
  if (!Buffer2.isEncoding(encoding)) {
    throw new TypeError('"encoding" must be a valid string encoding');
  }
  var length = byteLength(string2, encoding) | 0;
  that = createBuffer(that, length);
  var actual = that.write(string2, encoding);
  if (actual !== length) {
    that = that.slice(0, actual);
  }
  return that;
}
function fromArrayLike(that, array) {
  var length = array.length < 0 ? 0 : checked(array.length) | 0;
  that = createBuffer(that, length);
  for (var i2 = 0; i2 < length; i2 += 1) {
    that[i2] = array[i2] & 255;
  }
  return that;
}
function fromArrayBuffer(that, array, byteOffset, length) {
  array.byteLength;
  if (byteOffset < 0 || array.byteLength < byteOffset) {
    throw new RangeError("'offset' is out of bounds");
  }
  if (array.byteLength < byteOffset + (length || 0)) {
    throw new RangeError("'length' is out of bounds");
  }
  if (byteOffset === void 0 && length === void 0) {
    array = new Uint8Array(array);
  } else if (length === void 0) {
    array = new Uint8Array(array, byteOffset);
  } else {
    array = new Uint8Array(array, byteOffset, length);
  }
  if (Buffer2.TYPED_ARRAY_SUPPORT) {
    that = array;
    that.__proto__ = Buffer2.prototype;
  } else {
    that = fromArrayLike(that, array);
  }
  return that;
}
function fromObject(that, obj) {
  if (internalIsBuffer(obj)) {
    var len = checked(obj.length) | 0;
    that = createBuffer(that, len);
    if (that.length === 0) {
      return that;
    }
    obj.copy(that, 0, 0, len);
    return that;
  }
  if (obj) {
    if (typeof ArrayBuffer !== "undefined" && obj.buffer instanceof ArrayBuffer || "length" in obj) {
      if (typeof obj.length !== "number" || isnan(obj.length)) {
        return createBuffer(that, 0);
      }
      return fromArrayLike(that, obj);
    }
    if (obj.type === "Buffer" && isArray(obj.data)) {
      return fromArrayLike(that, obj.data);
    }
  }
  throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.");
}
function checked(length) {
  if (length >= kMaxLength()) {
    throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + kMaxLength().toString(16) + " bytes");
  }
  return length | 0;
}
Buffer2.isBuffer = isBuffer2;
function internalIsBuffer(b) {
  return !!(b != null && b._isBuffer);
}
Buffer2.compare = function compare(a2, b) {
  if (!internalIsBuffer(a2) || !internalIsBuffer(b)) {
    throw new TypeError("Arguments must be Buffers");
  }
  if (a2 === b) return 0;
  var x2 = a2.length;
  var y = b.length;
  for (var i2 = 0, len = Math.min(x2, y); i2 < len; ++i2) {
    if (a2[i2] !== b[i2]) {
      x2 = a2[i2];
      y = b[i2];
      break;
    }
  }
  if (x2 < y) return -1;
  if (y < x2) return 1;
  return 0;
};
Buffer2.isEncoding = function isEncoding(encoding) {
  switch (String(encoding).toLowerCase()) {
    case "hex":
    case "utf8":
    case "utf-8":
    case "ascii":
    case "latin1":
    case "binary":
    case "base64":
    case "ucs2":
    case "ucs-2":
    case "utf16le":
    case "utf-16le":
      return true;
    default:
      return false;
  }
};
Buffer2.concat = function concat(list6, length) {
  if (!isArray(list6)) {
    throw new TypeError('"list" argument must be an Array of Buffers');
  }
  if (list6.length === 0) {
    return Buffer2.alloc(0);
  }
  var i2;
  if (length === void 0) {
    length = 0;
    for (i2 = 0; i2 < list6.length; ++i2) {
      length += list6[i2].length;
    }
  }
  var buffer2 = Buffer2.allocUnsafe(length);
  var pos = 0;
  for (i2 = 0; i2 < list6.length; ++i2) {
    var buf = list6[i2];
    if (!internalIsBuffer(buf)) {
      throw new TypeError('"list" argument must be an Array of Buffers');
    }
    buf.copy(buffer2, pos);
    pos += buf.length;
  }
  return buffer2;
};
function byteLength(string2, encoding) {
  if (internalIsBuffer(string2)) {
    return string2.length;
  }
  if (typeof ArrayBuffer !== "undefined" && typeof ArrayBuffer.isView === "function" && (ArrayBuffer.isView(string2) || string2 instanceof ArrayBuffer)) {
    return string2.byteLength;
  }
  if (typeof string2 !== "string") {
    string2 = "" + string2;
  }
  var len = string2.length;
  if (len === 0) return 0;
  var loweredCase = false;
  for (; ; ) {
    switch (encoding) {
      case "ascii":
      case "latin1":
      case "binary":
        return len;
      case "utf8":
      case "utf-8":
      case void 0:
        return utf8ToBytes(string2).length;
      case "ucs2":
      case "ucs-2":
      case "utf16le":
      case "utf-16le":
        return len * 2;
      case "hex":
        return len >>> 1;
      case "base64":
        return base64ToBytes(string2).length;
      default:
        if (loweredCase) return utf8ToBytes(string2).length;
        encoding = ("" + encoding).toLowerCase();
        loweredCase = true;
    }
  }
}
Buffer2.byteLength = byteLength;
function slowToString(encoding, start, end) {
  var loweredCase = false;
  if (start === void 0 || start < 0) {
    start = 0;
  }
  if (start > this.length) {
    return "";
  }
  if (end === void 0 || end > this.length) {
    end = this.length;
  }
  if (end <= 0) {
    return "";
  }
  end >>>= 0;
  start >>>= 0;
  if (end <= start) {
    return "";
  }
  if (!encoding) encoding = "utf8";
  while (true) {
    switch (encoding) {
      case "hex":
        return hexSlice(this, start, end);
      case "utf8":
      case "utf-8":
        return utf8Slice(this, start, end);
      case "ascii":
        return asciiSlice(this, start, end);
      case "latin1":
      case "binary":
        return latin1Slice(this, start, end);
      case "base64":
        return base64Slice(this, start, end);
      case "ucs2":
      case "ucs-2":
      case "utf16le":
      case "utf-16le":
        return utf16leSlice(this, start, end);
      default:
        if (loweredCase) throw new TypeError("Unknown encoding: " + encoding);
        encoding = (encoding + "").toLowerCase();
        loweredCase = true;
    }
  }
}
Buffer2.prototype._isBuffer = true;
function swap(b, n, m2) {
  var i2 = b[n];
  b[n] = b[m2];
  b[m2] = i2;
}
Buffer2.prototype.swap16 = function swap16() {
  var len = this.length;
  if (len % 2 !== 0) {
    throw new RangeError("Buffer size must be a multiple of 16-bits");
  }
  for (var i2 = 0; i2 < len; i2 += 2) {
    swap(this, i2, i2 + 1);
  }
  return this;
};
Buffer2.prototype.swap32 = function swap32() {
  var len = this.length;
  if (len % 4 !== 0) {
    throw new RangeError("Buffer size must be a multiple of 32-bits");
  }
  for (var i2 = 0; i2 < len; i2 += 4) {
    swap(this, i2, i2 + 3);
    swap(this, i2 + 1, i2 + 2);
  }
  return this;
};
Buffer2.prototype.swap64 = function swap64() {
  var len = this.length;
  if (len % 8 !== 0) {
    throw new RangeError("Buffer size must be a multiple of 64-bits");
  }
  for (var i2 = 0; i2 < len; i2 += 8) {
    swap(this, i2, i2 + 7);
    swap(this, i2 + 1, i2 + 6);
    swap(this, i2 + 2, i2 + 5);
    swap(this, i2 + 3, i2 + 4);
  }
  return this;
};
Buffer2.prototype.toString = function toString4() {
  var length = this.length | 0;
  if (length === 0) return "";
  if (arguments.length === 0) return utf8Slice(this, 0, length);
  return slowToString.apply(this, arguments);
};
Buffer2.prototype.equals = function equals(b) {
  if (!internalIsBuffer(b)) throw new TypeError("Argument must be a Buffer");
  if (this === b) return true;
  return Buffer2.compare(this, b) === 0;
};
Buffer2.prototype.inspect = function inspect2() {
  var str2 = "";
  var max = INSPECT_MAX_BYTES;
  if (this.length > 0) {
    str2 = this.toString("hex", 0, max).match(/.{2}/g).join(" ");
    if (this.length > max) str2 += " ... ";
  }
  return "<Buffer " + str2 + ">";
};
Buffer2.prototype.compare = function compare2(target, start, end, thisStart, thisEnd) {
  if (!internalIsBuffer(target)) {
    throw new TypeError("Argument must be a Buffer");
  }
  if (start === void 0) {
    start = 0;
  }
  if (end === void 0) {
    end = target ? target.length : 0;
  }
  if (thisStart === void 0) {
    thisStart = 0;
  }
  if (thisEnd === void 0) {
    thisEnd = this.length;
  }
  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
    throw new RangeError("out of range index");
  }
  if (thisStart >= thisEnd && start >= end) {
    return 0;
  }
  if (thisStart >= thisEnd) {
    return -1;
  }
  if (start >= end) {
    return 1;
  }
  start >>>= 0;
  end >>>= 0;
  thisStart >>>= 0;
  thisEnd >>>= 0;
  if (this === target) return 0;
  var x2 = thisEnd - thisStart;
  var y = end - start;
  var len = Math.min(x2, y);
  var thisCopy = this.slice(thisStart, thisEnd);
  var targetCopy = target.slice(start, end);
  for (var i2 = 0; i2 < len; ++i2) {
    if (thisCopy[i2] !== targetCopy[i2]) {
      x2 = thisCopy[i2];
      y = targetCopy[i2];
      break;
    }
  }
  if (x2 < y) return -1;
  if (y < x2) return 1;
  return 0;
};
function bidirectionalIndexOf(buffer2, val, byteOffset, encoding, dir) {
  if (buffer2.length === 0) return -1;
  if (typeof byteOffset === "string") {
    encoding = byteOffset;
    byteOffset = 0;
  } else if (byteOffset > 2147483647) {
    byteOffset = 2147483647;
  } else if (byteOffset < -2147483648) {
    byteOffset = -2147483648;
  }
  byteOffset = +byteOffset;
  if (isNaN(byteOffset)) {
    byteOffset = dir ? 0 : buffer2.length - 1;
  }
  if (byteOffset < 0) byteOffset = buffer2.length + byteOffset;
  if (byteOffset >= buffer2.length) {
    if (dir) return -1;
    else byteOffset = buffer2.length - 1;
  } else if (byteOffset < 0) {
    if (dir) byteOffset = 0;
    else return -1;
  }
  if (typeof val === "string") {
    val = Buffer2.from(val, encoding);
  }
  if (internalIsBuffer(val)) {
    if (val.length === 0) {
      return -1;
    }
    return arrayIndexOf(buffer2, val, byteOffset, encoding, dir);
  } else if (typeof val === "number") {
    val = val & 255;
    if (Buffer2.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === "function") {
      if (dir) {
        return Uint8Array.prototype.indexOf.call(buffer2, val, byteOffset);
      } else {
        return Uint8Array.prototype.lastIndexOf.call(buffer2, val, byteOffset);
      }
    }
    return arrayIndexOf(buffer2, [val], byteOffset, encoding, dir);
  }
  throw new TypeError("val must be string, number or Buffer");
}
function arrayIndexOf(arr, val, byteOffset, encoding, dir) {
  var indexSize = 1;
  var arrLength = arr.length;
  var valLength = val.length;
  if (encoding !== void 0) {
    encoding = String(encoding).toLowerCase();
    if (encoding === "ucs2" || encoding === "ucs-2" || encoding === "utf16le" || encoding === "utf-16le") {
      if (arr.length < 2 || val.length < 2) {
        return -1;
      }
      indexSize = 2;
      arrLength /= 2;
      valLength /= 2;
      byteOffset /= 2;
    }
  }
  function read2(buf, i3) {
    if (indexSize === 1) {
      return buf[i3];
    } else {
      return buf.readUInt16BE(i3 * indexSize);
    }
  }
  var i2;
  if (dir) {
    var foundIndex = -1;
    for (i2 = byteOffset; i2 < arrLength; i2++) {
      if (read2(arr, i2) === read2(val, foundIndex === -1 ? 0 : i2 - foundIndex)) {
        if (foundIndex === -1) foundIndex = i2;
        if (i2 - foundIndex + 1 === valLength) return foundIndex * indexSize;
      } else {
        if (foundIndex !== -1) i2 -= i2 - foundIndex;
        foundIndex = -1;
      }
    }
  } else {
    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;
    for (i2 = byteOffset; i2 >= 0; i2--) {
      var found2 = true;
      for (var j = 0; j < valLength; j++) {
        if (read2(arr, i2 + j) !== read2(val, j)) {
          found2 = false;
          break;
        }
      }
      if (found2) return i2;
    }
  }
  return -1;
}
Buffer2.prototype.includes = function includes(val, byteOffset, encoding) {
  return this.indexOf(val, byteOffset, encoding) !== -1;
};
Buffer2.prototype.indexOf = function indexOf(val, byteOffset, encoding) {
  return bidirectionalIndexOf(this, val, byteOffset, encoding, true);
};
Buffer2.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {
  return bidirectionalIndexOf(this, val, byteOffset, encoding, false);
};
function hexWrite(buf, string2, offset, length) {
  offset = Number(offset) || 0;
  var remaining = buf.length - offset;
  if (!length) {
    length = remaining;
  } else {
    length = Number(length);
    if (length > remaining) {
      length = remaining;
    }
  }
  var strLen = string2.length;
  if (strLen % 2 !== 0) throw new TypeError("Invalid hex string");
  if (length > strLen / 2) {
    length = strLen / 2;
  }
  for (var i2 = 0; i2 < length; ++i2) {
    var parsed = parseInt(string2.substr(i2 * 2, 2), 16);
    if (isNaN(parsed)) return i2;
    buf[offset + i2] = parsed;
  }
  return i2;
}
function utf8Write(buf, string2, offset, length) {
  return blitBuffer(utf8ToBytes(string2, buf.length - offset), buf, offset, length);
}
function asciiWrite(buf, string2, offset, length) {
  return blitBuffer(asciiToBytes(string2), buf, offset, length);
}
function latin1Write(buf, string2, offset, length) {
  return asciiWrite(buf, string2, offset, length);
}
function base64Write(buf, string2, offset, length) {
  return blitBuffer(base64ToBytes(string2), buf, offset, length);
}
function ucs2Write(buf, string2, offset, length) {
  return blitBuffer(utf16leToBytes(string2, buf.length - offset), buf, offset, length);
}
Buffer2.prototype.write = function write2(string2, offset, length, encoding) {
  if (offset === void 0) {
    encoding = "utf8";
    length = this.length;
    offset = 0;
  } else if (length === void 0 && typeof offset === "string") {
    encoding = offset;
    length = this.length;
    offset = 0;
  } else if (isFinite(offset)) {
    offset = offset | 0;
    if (isFinite(length)) {
      length = length | 0;
      if (encoding === void 0) encoding = "utf8";
    } else {
      encoding = length;
      length = void 0;
    }
  } else {
    throw new Error(
      "Buffer.write(string, encoding, offset[, length]) is no longer supported"
    );
  }
  var remaining = this.length - offset;
  if (length === void 0 || length > remaining) length = remaining;
  if (string2.length > 0 && (length < 0 || offset < 0) || offset > this.length) {
    throw new RangeError("Attempt to write outside buffer bounds");
  }
  if (!encoding) encoding = "utf8";
  var loweredCase = false;
  for (; ; ) {
    switch (encoding) {
      case "hex":
        return hexWrite(this, string2, offset, length);
      case "utf8":
      case "utf-8":
        return utf8Write(this, string2, offset, length);
      case "ascii":
        return asciiWrite(this, string2, offset, length);
      case "latin1":
      case "binary":
        return latin1Write(this, string2, offset, length);
      case "base64":
        return base64Write(this, string2, offset, length);
      case "ucs2":
      case "ucs-2":
      case "utf16le":
      case "utf-16le":
        return ucs2Write(this, string2, offset, length);
      default:
        if (loweredCase) throw new TypeError("Unknown encoding: " + encoding);
        encoding = ("" + encoding).toLowerCase();
        loweredCase = true;
    }
  }
};
Buffer2.prototype.toJSON = function toJSON() {
  return {
    type: "Buffer",
    data: Array.prototype.slice.call(this._arr || this, 0)
  };
};
function base64Slice(buf, start, end) {
  if (start === 0 && end === buf.length) {
    return fromByteArray(buf);
  } else {
    return fromByteArray(buf.slice(start, end));
  }
}
function utf8Slice(buf, start, end) {
  end = Math.min(buf.length, end);
  var res = [];
  var i2 = start;
  while (i2 < end) {
    var firstByte = buf[i2];
    var codePoint = null;
    var bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;
    if (i2 + bytesPerSequence <= end) {
      var secondByte, thirdByte, fourthByte, tempCodePoint;
      switch (bytesPerSequence) {
        case 1:
          if (firstByte < 128) {
            codePoint = firstByte;
          }
          break;
        case 2:
          secondByte = buf[i2 + 1];
          if ((secondByte & 192) === 128) {
            tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;
            if (tempCodePoint > 127) {
              codePoint = tempCodePoint;
            }
          }
          break;
        case 3:
          secondByte = buf[i2 + 1];
          thirdByte = buf[i2 + 2];
          if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {
            tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;
            if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {
              codePoint = tempCodePoint;
            }
          }
          break;
        case 4:
          secondByte = buf[i2 + 1];
          thirdByte = buf[i2 + 2];
          fourthByte = buf[i2 + 3];
          if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {
            tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;
            if (tempCodePoint > 65535 && tempCodePoint < 1114112) {
              codePoint = tempCodePoint;
            }
          }
      }
    }
    if (codePoint === null) {
      codePoint = 65533;
      bytesPerSequence = 1;
    } else if (codePoint > 65535) {
      codePoint -= 65536;
      res.push(codePoint >>> 10 & 1023 | 55296);
      codePoint = 56320 | codePoint & 1023;
    }
    res.push(codePoint);
    i2 += bytesPerSequence;
  }
  return decodeCodePointsArray(res);
}
var MAX_ARGUMENTS_LENGTH = 4096;
function decodeCodePointsArray(codePoints) {
  var len = codePoints.length;
  if (len <= MAX_ARGUMENTS_LENGTH) {
    return String.fromCharCode.apply(String, codePoints);
  }
  var res = "";
  var i2 = 0;
  while (i2 < len) {
    res += String.fromCharCode.apply(
      String,
      codePoints.slice(i2, i2 += MAX_ARGUMENTS_LENGTH)
    );
  }
  return res;
}
function asciiSlice(buf, start, end) {
  var ret = "";
  end = Math.min(buf.length, end);
  for (var i2 = start; i2 < end; ++i2) {
    ret += String.fromCharCode(buf[i2] & 127);
  }
  return ret;
}
function latin1Slice(buf, start, end) {
  var ret = "";
  end = Math.min(buf.length, end);
  for (var i2 = start; i2 < end; ++i2) {
    ret += String.fromCharCode(buf[i2]);
  }
  return ret;
}
function hexSlice(buf, start, end) {
  var len = buf.length;
  if (!start || start < 0) start = 0;
  if (!end || end < 0 || end > len) end = len;
  var out = "";
  for (var i2 = start; i2 < end; ++i2) {
    out += toHex(buf[i2]);
  }
  return out;
}
function utf16leSlice(buf, start, end) {
  var bytes = buf.slice(start, end);
  var res = "";
  for (var i2 = 0; i2 < bytes.length; i2 += 2) {
    res += String.fromCharCode(bytes[i2] + bytes[i2 + 1] * 256);
  }
  return res;
}
Buffer2.prototype.slice = function slice(start, end) {
  var len = this.length;
  start = ~~start;
  end = end === void 0 ? len : ~~end;
  if (start < 0) {
    start += len;
    if (start < 0) start = 0;
  } else if (start > len) {
    start = len;
  }
  if (end < 0) {
    end += len;
    if (end < 0) end = 0;
  } else if (end > len) {
    end = len;
  }
  if (end < start) end = start;
  var newBuf;
  if (Buffer2.TYPED_ARRAY_SUPPORT) {
    newBuf = this.subarray(start, end);
    newBuf.__proto__ = Buffer2.prototype;
  } else {
    var sliceLen = end - start;
    newBuf = new Buffer2(sliceLen, void 0);
    for (var i2 = 0; i2 < sliceLen; ++i2) {
      newBuf[i2] = this[i2 + start];
    }
  }
  return newBuf;
};
function checkOffset(offset, ext2, length) {
  if (offset % 1 !== 0 || offset < 0) throw new RangeError("offset is not uint");
  if (offset + ext2 > length) throw new RangeError("Trying to access beyond buffer length");
}
Buffer2.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) {
  offset = offset | 0;
  byteLength2 = byteLength2 | 0;
  if (!noAssert) checkOffset(offset, byteLength2, this.length);
  var val = this[offset];
  var mul = 1;
  var i2 = 0;
  while (++i2 < byteLength2 && (mul *= 256)) {
    val += this[offset + i2] * mul;
  }
  return val;
};
Buffer2.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) {
  offset = offset | 0;
  byteLength2 = byteLength2 | 0;
  if (!noAssert) {
    checkOffset(offset, byteLength2, this.length);
  }
  var val = this[offset + --byteLength2];
  var mul = 1;
  while (byteLength2 > 0 && (mul *= 256)) {
    val += this[offset + --byteLength2] * mul;
  }
  return val;
};
Buffer2.prototype.readUInt8 = function readUInt8(offset, noAssert) {
  if (!noAssert) checkOffset(offset, 1, this.length);
  return this[offset];
};
Buffer2.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {
  if (!noAssert) checkOffset(offset, 2, this.length);
  return this[offset] | this[offset + 1] << 8;
};
Buffer2.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {
  if (!noAssert) checkOffset(offset, 2, this.length);
  return this[offset] << 8 | this[offset + 1];
};
Buffer2.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length);
  return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;
};
Buffer2.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length);
  return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);
};
Buffer2.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) {
  offset = offset | 0;
  byteLength2 = byteLength2 | 0;
  if (!noAssert) checkOffset(offset, byteLength2, this.length);
  var val = this[offset];
  var mul = 1;
  var i2 = 0;
  while (++i2 < byteLength2 && (mul *= 256)) {
    val += this[offset + i2] * mul;
  }
  mul *= 128;
  if (val >= mul) val -= Math.pow(2, 8 * byteLength2);
  return val;
};
Buffer2.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) {
  offset = offset | 0;
  byteLength2 = byteLength2 | 0;
  if (!noAssert) checkOffset(offset, byteLength2, this.length);
  var i2 = byteLength2;
  var mul = 1;
  var val = this[offset + --i2];
  while (i2 > 0 && (mul *= 256)) {
    val += this[offset + --i2] * mul;
  }
  mul *= 128;
  if (val >= mul) val -= Math.pow(2, 8 * byteLength2);
  return val;
};
Buffer2.prototype.readInt8 = function readInt8(offset, noAssert) {
  if (!noAssert) checkOffset(offset, 1, this.length);
  if (!(this[offset] & 128)) return this[offset];
  return (255 - this[offset] + 1) * -1;
};
Buffer2.prototype.readInt16LE = function readInt16LE(offset, noAssert) {
  if (!noAssert) checkOffset(offset, 2, this.length);
  var val = this[offset] | this[offset + 1] << 8;
  return val & 32768 ? val | 4294901760 : val;
};
Buffer2.prototype.readInt16BE = function readInt16BE(offset, noAssert) {
  if (!noAssert) checkOffset(offset, 2, this.length);
  var val = this[offset + 1] | this[offset] << 8;
  return val & 32768 ? val | 4294901760 : val;
};
Buffer2.prototype.readInt32LE = function readInt32LE(offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length);
  return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;
};
Buffer2.prototype.readInt32BE = function readInt32BE(offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length);
  return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];
};
Buffer2.prototype.readFloatLE = function readFloatLE(offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length);
  return read(this, offset, true, 23, 4);
};
Buffer2.prototype.readFloatBE = function readFloatBE(offset, noAssert) {
  if (!noAssert) checkOffset(offset, 4, this.length);
  return read(this, offset, false, 23, 4);
};
Buffer2.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {
  if (!noAssert) checkOffset(offset, 8, this.length);
  return read(this, offset, true, 52, 8);
};
Buffer2.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {
  if (!noAssert) checkOffset(offset, 8, this.length);
  return read(this, offset, false, 52, 8);
};
function checkInt(buf, value, offset, ext2, max, min) {
  if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance');
  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds');
  if (offset + ext2 > buf.length) throw new RangeError("Index out of range");
}
Buffer2.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) {
  value = +value;
  offset = offset | 0;
  byteLength2 = byteLength2 | 0;
  if (!noAssert) {
    var maxBytes = Math.pow(2, 8 * byteLength2) - 1;
    checkInt(this, value, offset, byteLength2, maxBytes, 0);
  }
  var mul = 1;
  var i2 = 0;
  this[offset] = value & 255;
  while (++i2 < byteLength2 && (mul *= 256)) {
    this[offset + i2] = value / mul & 255;
  }
  return offset + byteLength2;
};
Buffer2.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) {
  value = +value;
  offset = offset | 0;
  byteLength2 = byteLength2 | 0;
  if (!noAssert) {
    var maxBytes = Math.pow(2, 8 * byteLength2) - 1;
    checkInt(this, value, offset, byteLength2, maxBytes, 0);
  }
  var i2 = byteLength2 - 1;
  var mul = 1;
  this[offset + i2] = value & 255;
  while (--i2 >= 0 && (mul *= 256)) {
    this[offset + i2] = value / mul & 255;
  }
  return offset + byteLength2;
};
Buffer2.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {
  value = +value;
  offset = offset | 0;
  if (!noAssert) checkInt(this, value, offset, 1, 255, 0);
  if (!Buffer2.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
  this[offset] = value & 255;
  return offset + 1;
};
function objectWriteUInt16(buf, value, offset, littleEndian) {
  if (value < 0) value = 65535 + value + 1;
  for (var i2 = 0, j = Math.min(buf.length - offset, 2); i2 < j; ++i2) {
    buf[offset + i2] = (value & 255 << 8 * (littleEndian ? i2 : 1 - i2)) >>> (littleEndian ? i2 : 1 - i2) * 8;
  }
}
Buffer2.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {
  value = +value;
  offset = offset | 0;
  if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);
  if (Buffer2.TYPED_ARRAY_SUPPORT) {
    this[offset] = value & 255;
    this[offset + 1] = value >>> 8;
  } else {
    objectWriteUInt16(this, value, offset, true);
  }
  return offset + 2;
};
Buffer2.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {
  value = +value;
  offset = offset | 0;
  if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);
  if (Buffer2.TYPED_ARRAY_SUPPORT) {
    this[offset] = value >>> 8;
    this[offset + 1] = value & 255;
  } else {
    objectWriteUInt16(this, value, offset, false);
  }
  return offset + 2;
};
function objectWriteUInt32(buf, value, offset, littleEndian) {
  if (value < 0) value = 4294967295 + value + 1;
  for (var i2 = 0, j = Math.min(buf.length - offset, 4); i2 < j; ++i2) {
    buf[offset + i2] = value >>> (littleEndian ? i2 : 3 - i2) * 8 & 255;
  }
}
Buffer2.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {
  value = +value;
  offset = offset | 0;
  if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);
  if (Buffer2.TYPED_ARRAY_SUPPORT) {
    this[offset + 3] = value >>> 24;
    this[offset + 2] = value >>> 16;
    this[offset + 1] = value >>> 8;
    this[offset] = value & 255;
  } else {
    objectWriteUInt32(this, value, offset, true);
  }
  return offset + 4;
};
Buffer2.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {
  value = +value;
  offset = offset | 0;
  if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);
  if (Buffer2.TYPED_ARRAY_SUPPORT) {
    this[offset] = value >>> 24;
    this[offset + 1] = value >>> 16;
    this[offset + 2] = value >>> 8;
    this[offset + 3] = value & 255;
  } else {
    objectWriteUInt32(this, value, offset, false);
  }
  return offset + 4;
};
Buffer2.prototype.writeIntLE = function writeIntLE(value, offset, byteLength2, noAssert) {
  value = +value;
  offset = offset | 0;
  if (!noAssert) {
    var limit = Math.pow(2, 8 * byteLength2 - 1);
    checkInt(this, value, offset, byteLength2, limit - 1, -limit);
  }
  var i2 = 0;
  var mul = 1;
  var sub2 = 0;
  this[offset] = value & 255;
  while (++i2 < byteLength2 && (mul *= 256)) {
    if (value < 0 && sub2 === 0 && this[offset + i2 - 1] !== 0) {
      sub2 = 1;
    }
    this[offset + i2] = (value / mul >> 0) - sub2 & 255;
  }
  return offset + byteLength2;
};
Buffer2.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) {
  value = +value;
  offset = offset | 0;
  if (!noAssert) {
    var limit = Math.pow(2, 8 * byteLength2 - 1);
    checkInt(this, value, offset, byteLength2, limit - 1, -limit);
  }
  var i2 = byteLength2 - 1;
  var mul = 1;
  var sub2 = 0;
  this[offset + i2] = value & 255;
  while (--i2 >= 0 && (mul *= 256)) {
    if (value < 0 && sub2 === 0 && this[offset + i2 + 1] !== 0) {
      sub2 = 1;
    }
    this[offset + i2] = (value / mul >> 0) - sub2 & 255;
  }
  return offset + byteLength2;
};
Buffer2.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {
  value = +value;
  offset = offset | 0;
  if (!noAssert) checkInt(this, value, offset, 1, 127, -128);
  if (!Buffer2.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
  if (value < 0) value = 255 + value + 1;
  this[offset] = value & 255;
  return offset + 1;
};
Buffer2.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {
  value = +value;
  offset = offset | 0;
  if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);
  if (Buffer2.TYPED_ARRAY_SUPPORT) {
    this[offset] = value & 255;
    this[offset + 1] = value >>> 8;
  } else {
    objectWriteUInt16(this, value, offset, true);
  }
  return offset + 2;
};
Buffer2.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {
  value = +value;
  offset = offset | 0;
  if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);
  if (Buffer2.TYPED_ARRAY_SUPPORT) {
    this[offset] = value >>> 8;
    this[offset + 1] = value & 255;
  } else {
    objectWriteUInt16(this, value, offset, false);
  }
  return offset + 2;
};
Buffer2.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {
  value = +value;
  offset = offset | 0;
  if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);
  if (Buffer2.TYPED_ARRAY_SUPPORT) {
    this[offset] = value & 255;
    this[offset + 1] = value >>> 8;
    this[offset + 2] = value >>> 16;
    this[offset + 3] = value >>> 24;
  } else {
    objectWriteUInt32(this, value, offset, true);
  }
  return offset + 4;
};
Buffer2.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {
  value = +value;
  offset = offset | 0;
  if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);
  if (value < 0) value = 4294967295 + value + 1;
  if (Buffer2.TYPED_ARRAY_SUPPORT) {
    this[offset] = value >>> 24;
    this[offset + 1] = value >>> 16;
    this[offset + 2] = value >>> 8;
    this[offset + 3] = value & 255;
  } else {
    objectWriteUInt32(this, value, offset, false);
  }
  return offset + 4;
};
function checkIEEE754(buf, value, offset, ext2, max, min) {
  if (offset + ext2 > buf.length) throw new RangeError("Index out of range");
  if (offset < 0) throw new RangeError("Index out of range");
}
function writeFloat(buf, value, offset, littleEndian, noAssert) {
  if (!noAssert) {
    checkIEEE754(buf, value, offset, 4);
  }
  write(buf, value, offset, littleEndian, 23, 4);
  return offset + 4;
}
Buffer2.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {
  return writeFloat(this, value, offset, true, noAssert);
};
Buffer2.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {
  return writeFloat(this, value, offset, false, noAssert);
};
function writeDouble(buf, value, offset, littleEndian, noAssert) {
  if (!noAssert) {
    checkIEEE754(buf, value, offset, 8);
  }
  write(buf, value, offset, littleEndian, 52, 8);
  return offset + 8;
}
Buffer2.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {
  return writeDouble(this, value, offset, true, noAssert);
};
Buffer2.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {
  return writeDouble(this, value, offset, false, noAssert);
};
Buffer2.prototype.copy = function copy(target, targetStart, start, end) {
  if (!start) start = 0;
  if (!end && end !== 0) end = this.length;
  if (targetStart >= target.length) targetStart = target.length;
  if (!targetStart) targetStart = 0;
  if (end > 0 && end < start) end = start;
  if (end === start) return 0;
  if (target.length === 0 || this.length === 0) return 0;
  if (targetStart < 0) {
    throw new RangeError("targetStart out of bounds");
  }
  if (start < 0 || start >= this.length) throw new RangeError("sourceStart out of bounds");
  if (end < 0) throw new RangeError("sourceEnd out of bounds");
  if (end > this.length) end = this.length;
  if (target.length - targetStart < end - start) {
    end = target.length - targetStart + start;
  }
  var len = end - start;
  var i2;
  if (this === target && start < targetStart && targetStart < end) {
    for (i2 = len - 1; i2 >= 0; --i2) {
      target[i2 + targetStart] = this[i2 + start];
    }
  } else if (len < 1e3 || !Buffer2.TYPED_ARRAY_SUPPORT) {
    for (i2 = 0; i2 < len; ++i2) {
      target[i2 + targetStart] = this[i2 + start];
    }
  } else {
    Uint8Array.prototype.set.call(
      target,
      this.subarray(start, start + len),
      targetStart
    );
  }
  return len;
};
Buffer2.prototype.fill = function fill2(val, start, end, encoding) {
  if (typeof val === "string") {
    if (typeof start === "string") {
      encoding = start;
      start = 0;
      end = this.length;
    } else if (typeof end === "string") {
      encoding = end;
      end = this.length;
    }
    if (val.length === 1) {
      var code7 = val.charCodeAt(0);
      if (code7 < 256) {
        val = code7;
      }
    }
    if (encoding !== void 0 && typeof encoding !== "string") {
      throw new TypeError("encoding must be a string");
    }
    if (typeof encoding === "string" && !Buffer2.isEncoding(encoding)) {
      throw new TypeError("Unknown encoding: " + encoding);
    }
  } else if (typeof val === "number") {
    val = val & 255;
  }
  if (start < 0 || this.length < start || this.length < end) {
    throw new RangeError("Out of range index");
  }
  if (end <= start) {
    return this;
  }
  start = start >>> 0;
  end = end === void 0 ? this.length : end >>> 0;
  if (!val) val = 0;
  var i2;
  if (typeof val === "number") {
    for (i2 = start; i2 < end; ++i2) {
      this[i2] = val;
    }
  } else {
    var bytes = internalIsBuffer(val) ? val : utf8ToBytes(new Buffer2(val, encoding).toString());
    var len = bytes.length;
    for (i2 = 0; i2 < end - start; ++i2) {
      this[i2 + start] = bytes[i2 % len];
    }
  }
  return this;
};
var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g;
function base64clean(str2) {
  str2 = stringtrim(str2).replace(INVALID_BASE64_RE, "");
  if (str2.length < 2) return "";
  while (str2.length % 4 !== 0) {
    str2 = str2 + "=";
  }
  return str2;
}
function stringtrim(str2) {
  if (str2.trim) return str2.trim();
  return str2.replace(/^\s+|\s+$/g, "");
}
function toHex(n) {
  if (n < 16) return "0" + n.toString(16);
  return n.toString(16);
}
function utf8ToBytes(string2, units) {
  units = units || Infinity;
  var codePoint;
  var length = string2.length;
  var leadSurrogate = null;
  var bytes = [];
  for (var i2 = 0; i2 < length; ++i2) {
    codePoint = string2.charCodeAt(i2);
    if (codePoint > 55295 && codePoint < 57344) {
      if (!leadSurrogate) {
        if (codePoint > 56319) {
          if ((units -= 3) > -1) bytes.push(239, 191, 189);
          continue;
        } else if (i2 + 1 === length) {
          if ((units -= 3) > -1) bytes.push(239, 191, 189);
          continue;
        }
        leadSurrogate = codePoint;
        continue;
      }
      if (codePoint < 56320) {
        if ((units -= 3) > -1) bytes.push(239, 191, 189);
        leadSurrogate = codePoint;
        continue;
      }
      codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;
    } else if (leadSurrogate) {
      if ((units -= 3) > -1) bytes.push(239, 191, 189);
    }
    leadSurrogate = null;
    if (codePoint < 128) {
      if ((units -= 1) < 0) break;
      bytes.push(codePoint);
    } else if (codePoint < 2048) {
      if ((units -= 2) < 0) break;
      bytes.push(
        codePoint >> 6 | 192,
        codePoint & 63 | 128
      );
    } else if (codePoint < 65536) {
      if ((units -= 3) < 0) break;
      bytes.push(
        codePoint >> 12 | 224,
        codePoint >> 6 & 63 | 128,
        codePoint & 63 | 128
      );
    } else if (codePoint < 1114112) {
      if ((units -= 4) < 0) break;
      bytes.push(
        codePoint >> 18 | 240,
        codePoint >> 12 & 63 | 128,
        codePoint >> 6 & 63 | 128,
        codePoint & 63 | 128
      );
    } else {
      throw new Error("Invalid code point");
    }
  }
  return bytes;
}
function asciiToBytes(str2) {
  var byteArray = [];
  for (var i2 = 0; i2 < str2.length; ++i2) {
    byteArray.push(str2.charCodeAt(i2) & 255);
  }
  return byteArray;
}
function utf16leToBytes(str2, units) {
  var c, hi, lo;
  var byteArray = [];
  for (var i2 = 0; i2 < str2.length; ++i2) {
    if ((units -= 2) < 0) break;
    c = str2.charCodeAt(i2);
    hi = c >> 8;
    lo = c % 256;
    byteArray.push(lo);
    byteArray.push(hi);
  }
  return byteArray;
}
function base64ToBytes(str2) {
  return toByteArray(base64clean(str2));
}
function blitBuffer(src, dst, offset, length) {
  for (var i2 = 0; i2 < length; ++i2) {
    if (i2 + offset >= dst.length || i2 >= src.length) break;
    dst[i2 + offset] = src[i2];
  }
  return i2;
}
function isnan(val) {
  return val !== val;
}
function isBuffer2(obj) {
  return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj));
}
function isFastBuffer(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" && isFastBuffer(obj.slice(0, 0));
}
var CsvError = class _CsvError extends Error {
  constructor(code7, message, options, ...contexts) {
    if (Array.isArray(message)) message = message.join(" ").trim();
    super(message);
    if (Error.captureStackTrace !== void 0) {
      Error.captureStackTrace(this, _CsvError);
    }
    this.code = code7;
    for (const context of contexts) {
      for (const key2 in context) {
        const value = context[key2];
        this[key2] = isBuffer2(value) ? value.toString(options.encoding) : value == null ? value : JSON.parse(JSON.stringify(value));
      }
    }
  }
};
var is_object = function(obj) {
  return typeof obj === "object" && obj !== null && !Array.isArray(obj);
};
var normalize_columns_array = function(columns) {
  const normalizedColumns = [];
  for (let i2 = 0, l = columns.length; i2 < l; i2++) {
    const column = columns[i2];
    if (column === void 0 || column === null || column === false) {
      normalizedColumns[i2] = { disabled: true };
    } else if (typeof column === "string") {
      normalizedColumns[i2] = { name: column };
    } else if (is_object(column)) {
      if (typeof column.name !== "string") {
        throw new CsvError("CSV_OPTION_COLUMNS_MISSING_NAME", [
          "Option columns missing name:",
          `property "name" is required at position ${i2}`,
          "when column is an object literal"
        ]);
      }
      normalizedColumns[i2] = column;
    } else {
      throw new CsvError("CSV_INVALID_COLUMN_DEFINITION", [
        "Invalid column definition:",
        "expect a string or a literal object,",
        `got ${JSON.stringify(column)} at position ${i2}`
      ]);
    }
  }
  return normalizedColumns;
};
var ResizeableBuffer = class {
  constructor(size = 100) {
    this.size = size;
    this.length = 0;
    this.buf = Buffer2.allocUnsafe(size);
  }
  prepend(val) {
    if (isBuffer2(val)) {
      const length = this.length + val.length;
      if (length >= this.size) {
        this.resize();
        if (length >= this.size) {
          throw Error("INVALID_BUFFER_STATE");
        }
      }
      const buf = this.buf;
      this.buf = Buffer2.allocUnsafe(this.size);
      val.copy(this.buf, 0);
      buf.copy(this.buf, val.length);
      this.length += val.length;
    } else {
      const length = this.length++;
      if (length === this.size) {
        this.resize();
      }
      const buf = this.clone();
      this.buf[0] = val;
      buf.copy(this.buf, 1, 0, length);
    }
  }
  append(val) {
    const length = this.length++;
    if (length === this.size) {
      this.resize();
    }
    this.buf[length] = val;
  }
  clone() {
    return Buffer2.from(this.buf.slice(0, this.length));
  }
  resize() {
    const length = this.length;
    this.size = this.size * 2;
    const buf = Buffer2.allocUnsafe(this.size);
    this.buf.copy(buf, 0, 0, length);
    this.buf = buf;
  }
  toString(encoding) {
    if (encoding) {
      return this.buf.slice(0, this.length).toString(encoding);
    } else {
      return Uint8Array.prototype.slice.call(this.buf.slice(0, this.length));
    }
  }
  toJSON() {
    return this.toString("utf8");
  }
  reset() {
    this.length = 0;
  }
};
var np = 12;
var cr$1 = 13;
var nl$1 = 10;
var space2 = 32;
var tab2 = 9;
var init_state = function(options) {
  return {
    bomSkipped: false,
    bufBytesStart: 0,
    castField: options.cast_function,
    commenting: false,
    // Current error encountered by a record
    error: void 0,
    enabled: options.from_line === 1,
    escaping: false,
    escapeIsQuote: isBuffer2(options.escape) && isBuffer2(options.quote) && Buffer2.compare(options.escape, options.quote) === 0,
    // columns can be `false`, `true`, `Array`
    expectedRecordLength: Array.isArray(options.columns) ? options.columns.length : void 0,
    field: new ResizeableBuffer(20),
    firstLineToHeaders: options.cast_first_line_to_header,
    needMoreDataSize: Math.max(
      // Skip if the remaining buffer smaller than comment
      options.comment !== null ? options.comment.length : 0,
      ...options.delimiter.map((delimiter2) => delimiter2.length),
      // Skip if the remaining buffer can be escape sequence
      options.quote !== null ? options.quote.length : 0
    ),
    previousBuf: void 0,
    quoting: false,
    stop: false,
    rawBuffer: new ResizeableBuffer(100),
    record: [],
    recordHasError: false,
    record_length: 0,
    recordDelimiterMaxLength: options.record_delimiter.length === 0 ? 0 : Math.max(...options.record_delimiter.map((v) => v.length)),
    trimChars: [Buffer2.from(" ", options.encoding)[0], Buffer2.from("	", options.encoding)[0]],
    wasQuoting: false,
    wasRowDelimiter: false,
    timchars: [
      Buffer2.from(Buffer2.from([cr$1], "utf8").toString(), options.encoding),
      Buffer2.from(Buffer2.from([nl$1], "utf8").toString(), options.encoding),
      Buffer2.from(Buffer2.from([np], "utf8").toString(), options.encoding),
      Buffer2.from(Buffer2.from([space2], "utf8").toString(), options.encoding),
      Buffer2.from(Buffer2.from([tab2], "utf8").toString(), options.encoding)
    ]
  };
};
var underscore = function(str2) {
  return str2.replace(/([A-Z])/g, function(_2, match3) {
    return "_" + match3.toLowerCase();
  });
};
var normalize_options = function(opts) {
  const options = {};
  for (const opt in opts) {
    options[underscore(opt)] = opts[opt];
  }
  if (options.encoding === void 0 || options.encoding === true) {
    options.encoding = "utf8";
  } else if (options.encoding === null || options.encoding === false) {
    options.encoding = null;
  } else if (typeof options.encoding !== "string" && options.encoding !== null) {
    throw new CsvError("CSV_INVALID_OPTION_ENCODING", [
      "Invalid option encoding:",
      "encoding must be a string or null to return a buffer,",
      `got ${JSON.stringify(options.encoding)}`
    ], options);
  }
  if (options.bom === void 0 || options.bom === null || options.bom === false) {
    options.bom = false;
  } else if (options.bom !== true) {
    throw new CsvError("CSV_INVALID_OPTION_BOM", [
      "Invalid option bom:",
      "bom must be true,",
      `got ${JSON.stringify(options.bom)}`
    ], options);
  }
  options.cast_function = null;
  if (options.cast === void 0 || options.cast === null || options.cast === false || options.cast === "") {
    options.cast = void 0;
  } else if (typeof options.cast === "function") {
    options.cast_function = options.cast;
    options.cast = true;
  } else if (options.cast !== true) {
    throw new CsvError("CSV_INVALID_OPTION_CAST", [
      "Invalid option cast:",
      "cast must be true or a function,",
      `got ${JSON.stringify(options.cast)}`
    ], options);
  }
  if (options.cast_date === void 0 || options.cast_date === null || options.cast_date === false || options.cast_date === "") {
    options.cast_date = false;
  } else if (options.cast_date === true) {
    options.cast_date = function(value) {
      const date = Date.parse(value);
      return !isNaN(date) ? new Date(date) : value;
    };
  } else if (typeof options.cast_date !== "function") {
    throw new CsvError("CSV_INVALID_OPTION_CAST_DATE", [
      "Invalid option cast_date:",
      "cast_date must be true or a function,",
      `got ${JSON.stringify(options.cast_date)}`
    ], options);
  }
  options.cast_first_line_to_header = null;
  if (options.columns === true) {
    options.cast_first_line_to_header = void 0;
  } else if (typeof options.columns === "function") {
    options.cast_first_line_to_header = options.columns;
    options.columns = true;
  } else if (Array.isArray(options.columns)) {
    options.columns = normalize_columns_array(options.columns);
  } else if (options.columns === void 0 || options.columns === null || options.columns === false) {
    options.columns = false;
  } else {
    throw new CsvError("CSV_INVALID_OPTION_COLUMNS", [
      "Invalid option columns:",
      "expect an array, a function or true,",
      `got ${JSON.stringify(options.columns)}`
    ], options);
  }
  if (options.group_columns_by_name === void 0 || options.group_columns_by_name === null || options.group_columns_by_name === false) {
    options.group_columns_by_name = false;
  } else if (options.group_columns_by_name !== true) {
    throw new CsvError("CSV_INVALID_OPTION_GROUP_COLUMNS_BY_NAME", [
      "Invalid option group_columns_by_name:",
      "expect an boolean,",
      `got ${JSON.stringify(options.group_columns_by_name)}`
    ], options);
  } else if (options.columns === false) {
    throw new CsvError("CSV_INVALID_OPTION_GROUP_COLUMNS_BY_NAME", [
      "Invalid option group_columns_by_name:",
      "the `columns` mode must be activated."
    ], options);
  }
  if (options.comment === void 0 || options.comment === null || options.comment === false || options.comment === "") {
    options.comment = null;
  } else {
    if (typeof options.comment === "string") {
      options.comment = Buffer2.from(options.comment, options.encoding);
    }
    if (!isBuffer2(options.comment)) {
      throw new CsvError("CSV_INVALID_OPTION_COMMENT", [
        "Invalid option comment:",
        "comment must be a buffer or a string,",
        `got ${JSON.stringify(options.comment)}`
      ], options);
    }
  }
  if (options.comment_no_infix === void 0 || options.comment_no_infix === null || options.comment_no_infix === false) {
    options.comment_no_infix = false;
  } else if (options.comment_no_infix !== true) {
    throw new CsvError("CSV_INVALID_OPTION_COMMENT", [
      "Invalid option comment_no_infix:",
      "value must be a boolean,",
      `got ${JSON.stringify(options.comment_no_infix)}`
    ], options);
  }
  const delimiter_json = JSON.stringify(options.delimiter);
  if (!Array.isArray(options.delimiter)) options.delimiter = [options.delimiter];
  if (options.delimiter.length === 0) {
    throw new CsvError("CSV_INVALID_OPTION_DELIMITER", [
      "Invalid option delimiter:",
      "delimiter must be a non empty string or buffer or array of string|buffer,",
      `got ${delimiter_json}`
    ], options);
  }
  options.delimiter = options.delimiter.map(function(delimiter2) {
    if (delimiter2 === void 0 || delimiter2 === null || delimiter2 === false) {
      return Buffer2.from(",", options.encoding);
    }
    if (typeof delimiter2 === "string") {
      delimiter2 = Buffer2.from(delimiter2, options.encoding);
    }
    if (!isBuffer2(delimiter2) || delimiter2.length === 0) {
      throw new CsvError("CSV_INVALID_OPTION_DELIMITER", [
        "Invalid option delimiter:",
        "delimiter must be a non empty string or buffer or array of string|buffer,",
        `got ${delimiter_json}`
      ], options);
    }
    return delimiter2;
  });
  if (options.escape === void 0 || options.escape === true) {
    options.escape = Buffer2.from('"', options.encoding);
  } else if (typeof options.escape === "string") {
    options.escape = Buffer2.from(options.escape, options.encoding);
  } else if (options.escape === null || options.escape === false) {
    options.escape = null;
  }
  if (options.escape !== null) {
    if (!isBuffer2(options.escape)) {
      throw new Error(`Invalid Option: escape must be a buffer, a string or a boolean, got ${JSON.stringify(options.escape)}`);
    }
  }
  if (options.from === void 0 || options.from === null) {
    options.from = 1;
  } else {
    if (typeof options.from === "string" && /\d+/.test(options.from)) {
      options.from = parseInt(options.from);
    }
    if (Number.isInteger(options.from)) {
      if (options.from < 0) {
        throw new Error(`Invalid Option: from must be a positive integer, got ${JSON.stringify(opts.from)}`);
      }
    } else {
      throw new Error(`Invalid Option: from must be an integer, got ${JSON.stringify(options.from)}`);
    }
  }
  if (options.from_line === void 0 || options.from_line === null) {
    options.from_line = 1;
  } else {
    if (typeof options.from_line === "string" && /\d+/.test(options.from_line)) {
      options.from_line = parseInt(options.from_line);
    }
    if (Number.isInteger(options.from_line)) {
      if (options.from_line <= 0) {
        throw new Error(`Invalid Option: from_line must be a positive integer greater than 0, got ${JSON.stringify(opts.from_line)}`);
      }
    } else {
      throw new Error(`Invalid Option: from_line must be an integer, got ${JSON.stringify(opts.from_line)}`);
    }
  }
  if (options.ignore_last_delimiters === void 0 || options.ignore_last_delimiters === null) {
    options.ignore_last_delimiters = false;
  } else if (typeof options.ignore_last_delimiters === "number") {
    options.ignore_last_delimiters = Math.floor(options.ignore_last_delimiters);
    if (options.ignore_last_delimiters === 0) {
      options.ignore_last_delimiters = false;
    }
  } else if (typeof options.ignore_last_delimiters !== "boolean") {
    throw new CsvError("CSV_INVALID_OPTION_IGNORE_LAST_DELIMITERS", [
      "Invalid option `ignore_last_delimiters`:",
      "the value must be a boolean value or an integer,",
      `got ${JSON.stringify(options.ignore_last_delimiters)}`
    ], options);
  }
  if (options.ignore_last_delimiters === true && options.columns === false) {
    throw new CsvError("CSV_IGNORE_LAST_DELIMITERS_REQUIRES_COLUMNS", [
      "The option `ignore_last_delimiters`",
      "requires the activation of the `columns` option"
    ], options);
  }
  if (options.info === void 0 || options.info === null || options.info === false) {
    options.info = false;
  } else if (options.info !== true) {
    throw new Error(`Invalid Option: info must be true, got ${JSON.stringify(options.info)}`);
  }
  if (options.max_record_size === void 0 || options.max_record_size === null || options.max_record_size === false) {
    options.max_record_size = 0;
  } else if (Number.isInteger(options.max_record_size) && options.max_record_size >= 0) ;
  else if (typeof options.max_record_size === "string" && /\d+/.test(options.max_record_size)) {
    options.max_record_size = parseInt(options.max_record_size);
  } else {
    throw new Error(`Invalid Option: max_record_size must be a positive integer, got ${JSON.stringify(options.max_record_size)}`);
  }
  if (options.objname === void 0 || options.objname === null || options.objname === false) {
    options.objname = void 0;
  } else if (isBuffer2(options.objname)) {
    if (options.objname.length === 0) {
      throw new Error(`Invalid Option: objname must be a non empty buffer`);
    }
    if (options.encoding === null) ;
    else {
      options.objname = options.objname.toString(options.encoding);
    }
  } else if (typeof options.objname === "string") {
    if (options.objname.length === 0) {
      throw new Error(`Invalid Option: objname must be a non empty string`);
    }
  } else if (typeof options.objname === "number") ;
  else {
    throw new Error(`Invalid Option: objname must be a string or a buffer, got ${options.objname}`);
  }
  if (options.objname !== void 0) {
    if (typeof options.objname === "number") {
      if (options.columns !== false) {
        throw Error("Invalid Option: objname index cannot be combined with columns or be defined as a field");
      }
    } else {
      if (options.columns === false) {
        throw Error("Invalid Option: objname field must be combined with columns or be defined as an index");
      }
    }
  }
  if (options.on_record === void 0 || options.on_record === null) {
    options.on_record = void 0;
  } else if (typeof options.on_record !== "function") {
    throw new CsvError("CSV_INVALID_OPTION_ON_RECORD", [
      "Invalid option `on_record`:",
      "expect a function,",
      `got ${JSON.stringify(options.on_record)}`
    ], options);
  }
  if (options.quote === null || options.quote === false || options.quote === "") {
    options.quote = null;
  } else {
    if (options.quote === void 0 || options.quote === true) {
      options.quote = Buffer2.from('"', options.encoding);
    } else if (typeof options.quote === "string") {
      options.quote = Buffer2.from(options.quote, options.encoding);
    }
    if (!isBuffer2(options.quote)) {
      throw new Error(`Invalid Option: quote must be a buffer or a string, got ${JSON.stringify(options.quote)}`);
    }
  }
  if (options.raw === void 0 || options.raw === null || options.raw === false) {
    options.raw = false;
  } else if (options.raw !== true) {
    throw new Error(`Invalid Option: raw must be true, got ${JSON.stringify(options.raw)}`);
  }
  if (options.record_delimiter === void 0) {
    options.record_delimiter = [];
  } else if (typeof options.record_delimiter === "string" || isBuffer2(options.record_delimiter)) {
    if (options.record_delimiter.length === 0) {
      throw new CsvError("CSV_INVALID_OPTION_RECORD_DELIMITER", [
        "Invalid option `record_delimiter`:",
        "value must be a non empty string or buffer,",
        `got ${JSON.stringify(options.record_delimiter)}`
      ], options);
    }
    options.record_delimiter = [options.record_delimiter];
  } else if (!Array.isArray(options.record_delimiter)) {
    throw new CsvError("CSV_INVALID_OPTION_RECORD_DELIMITER", [
      "Invalid option `record_delimiter`:",
      "value must be a string, a buffer or array of string|buffer,",
      `got ${JSON.stringify(options.record_delimiter)}`
    ], options);
  }
  options.record_delimiter = options.record_delimiter.map(function(rd, i2) {
    if (typeof rd !== "string" && !isBuffer2(rd)) {
      throw new CsvError("CSV_INVALID_OPTION_RECORD_DELIMITER", [
        "Invalid option `record_delimiter`:",
        "value must be a string, a buffer or array of string|buffer",
        `at index ${i2},`,
        `got ${JSON.stringify(rd)}`
      ], options);
    } else if (rd.length === 0) {
      throw new CsvError("CSV_INVALID_OPTION_RECORD_DELIMITER", [
        "Invalid option `record_delimiter`:",
        "value must be a non empty string or buffer",
        `at index ${i2},`,
        `got ${JSON.stringify(rd)}`
      ], options);
    }
    if (typeof rd === "string") {
      rd = Buffer2.from(rd, options.encoding);
    }
    return rd;
  });
  if (typeof options.relax_column_count === "boolean") ;
  else if (options.relax_column_count === void 0 || options.relax_column_count === null) {
    options.relax_column_count = false;
  } else {
    throw new Error(`Invalid Option: relax_column_count must be a boolean, got ${JSON.stringify(options.relax_column_count)}`);
  }
  if (typeof options.relax_column_count_less === "boolean") ;
  else if (options.relax_column_count_less === void 0 || options.relax_column_count_less === null) {
    options.relax_column_count_less = false;
  } else {
    throw new Error(`Invalid Option: relax_column_count_less must be a boolean, got ${JSON.stringify(options.relax_column_count_less)}`);
  }
  if (typeof options.relax_column_count_more === "boolean") ;
  else if (options.relax_column_count_more === void 0 || options.relax_column_count_more === null) {
    options.relax_column_count_more = false;
  } else {
    throw new Error(`Invalid Option: relax_column_count_more must be a boolean, got ${JSON.stringify(options.relax_column_count_more)}`);
  }
  if (typeof options.relax_quotes === "boolean") ;
  else if (options.relax_quotes === void 0 || options.relax_quotes === null) {
    options.relax_quotes = false;
  } else {
    throw new Error(`Invalid Option: relax_quotes must be a boolean, got ${JSON.stringify(options.relax_quotes)}`);
  }
  if (typeof options.skip_empty_lines === "boolean") ;
  else if (options.skip_empty_lines === void 0 || options.skip_empty_lines === null) {
    options.skip_empty_lines = false;
  } else {
    throw new Error(`Invalid Option: skip_empty_lines must be a boolean, got ${JSON.stringify(options.skip_empty_lines)}`);
  }
  if (typeof options.skip_records_with_empty_values === "boolean") ;
  else if (options.skip_records_with_empty_values === void 0 || options.skip_records_with_empty_values === null) {
    options.skip_records_with_empty_values = false;
  } else {
    throw new Error(`Invalid Option: skip_records_with_empty_values must be a boolean, got ${JSON.stringify(options.skip_records_with_empty_values)}`);
  }
  if (typeof options.skip_records_with_error === "boolean") ;
  else if (options.skip_records_with_error === void 0 || options.skip_records_with_error === null) {
    options.skip_records_with_error = false;
  } else {
    throw new Error(`Invalid Option: skip_records_with_error must be a boolean, got ${JSON.stringify(options.skip_records_with_error)}`);
  }
  if (options.rtrim === void 0 || options.rtrim === null || options.rtrim === false) {
    options.rtrim = false;
  } else if (options.rtrim !== true) {
    throw new Error(`Invalid Option: rtrim must be a boolean, got ${JSON.stringify(options.rtrim)}`);
  }
  if (options.ltrim === void 0 || options.ltrim === null || options.ltrim === false) {
    options.ltrim = false;
  } else if (options.ltrim !== true) {
    throw new Error(`Invalid Option: ltrim must be a boolean, got ${JSON.stringify(options.ltrim)}`);
  }
  if (options.trim === void 0 || options.trim === null || options.trim === false) {
    options.trim = false;
  } else if (options.trim !== true) {
    throw new Error(`Invalid Option: trim must be a boolean, got ${JSON.stringify(options.trim)}`);
  }
  if (options.trim === true && opts.ltrim !== false) {
    options.ltrim = true;
  } else if (options.ltrim !== true) {
    options.ltrim = false;
  }
  if (options.trim === true && opts.rtrim !== false) {
    options.rtrim = true;
  } else if (options.rtrim !== true) {
    options.rtrim = false;
  }
  if (options.to === void 0 || options.to === null) {
    options.to = -1;
  } else {
    if (typeof options.to === "string" && /\d+/.test(options.to)) {
      options.to = parseInt(options.to);
    }
    if (Number.isInteger(options.to)) {
      if (options.to <= 0) {
        throw new Error(`Invalid Option: to must be a positive integer greater than 0, got ${JSON.stringify(opts.to)}`);
      }
    } else {
      throw new Error(`Invalid Option: to must be an integer, got ${JSON.stringify(opts.to)}`);
    }
  }
  if (options.to_line === void 0 || options.to_line === null) {
    options.to_line = -1;
  } else {
    if (typeof options.to_line === "string" && /\d+/.test(options.to_line)) {
      options.to_line = parseInt(options.to_line);
    }
    if (Number.isInteger(options.to_line)) {
      if (options.to_line <= 0) {
        throw new Error(`Invalid Option: to_line must be a positive integer greater than 0, got ${JSON.stringify(opts.to_line)}`);
      }
    } else {
      throw new Error(`Invalid Option: to_line must be an integer, got ${JSON.stringify(opts.to_line)}`);
    }
  }
  return options;
};
var isRecordEmpty = function(record) {
  return record.every((field) => field == null || field.toString && field.toString().trim() === "");
};
var cr = 13;
var nl = 10;
var boms = {
  // Note, the following are equals:
  // Buffer.from("\ufeff")
  // Buffer.from([239, 187, 191])
  // Buffer.from('EFBBBF', 'hex')
  "utf8": Buffer2.from([239, 187, 191]),
  // Note, the following are equals:
  // Buffer.from "\ufeff", 'utf16le
  // Buffer.from([255, 254])
  "utf16le": Buffer2.from([255, 254])
};
var transform2 = function(original_options = {}) {
  const info = {
    bytes: 0,
    comment_lines: 0,
    empty_lines: 0,
    invalid_field_length: 0,
    lines: 1,
    records: 0
  };
  const options = normalize_options(original_options);
  return {
    info,
    original_options,
    options,
    state: init_state(options),
    __needMoreData: function(i2, bufLen, end) {
      if (end) return false;
      const { encoding, escape: escape5, quote } = this.options;
      const { quoting, needMoreDataSize, recordDelimiterMaxLength } = this.state;
      const numOfCharLeft = bufLen - i2 - 1;
      const requiredLength = Math.max(
        needMoreDataSize,
        // Skip if the remaining buffer smaller than record delimiter
        // If "record_delimiter" is yet to be discovered:
        // 1. It is equals to `[]` and "recordDelimiterMaxLength" equals `0`
        // 2. We set the length to windows line ending in the current encoding
        // Note, that encoding is known from user or bom discovery at that point
        // recordDelimiterMaxLength,
        recordDelimiterMaxLength === 0 ? Buffer2.from("\r\n", encoding).length : recordDelimiterMaxLength,
        // Skip if remaining buffer can be an escaped quote
        quoting ? (escape5 === null ? 0 : escape5.length) + quote.length : 0,
        // Skip if remaining buffer can be record delimiter following the closing quote
        quoting ? quote.length + recordDelimiterMaxLength : 0
      );
      return numOfCharLeft < requiredLength;
    },
    // Central parser implementation
    parse: function(nextBuf, end, push, close2) {
      const { bom, comment_no_infix, encoding, from_line, ltrim, max_record_size, raw: raw2, relax_quotes, rtrim, skip_empty_lines, to, to_line } = this.options;
      let { comment: comment7, escape: escape5, quote, record_delimiter } = this.options;
      const { bomSkipped, previousBuf, rawBuffer, escapeIsQuote } = this.state;
      let buf;
      if (previousBuf === void 0) {
        if (nextBuf === void 0) {
          close2();
          return;
        } else {
          buf = nextBuf;
        }
      } else if (previousBuf !== void 0 && nextBuf === void 0) {
        buf = previousBuf;
      } else {
        buf = Buffer2.concat([previousBuf, nextBuf]);
      }
      if (bomSkipped === false) {
        if (bom === false) {
          this.state.bomSkipped = true;
        } else if (buf.length < 3) {
          if (end === false) {
            this.state.previousBuf = buf;
            return;
          }
        } else {
          for (const encoding2 in boms) {
            if (boms[encoding2].compare(buf, 0, boms[encoding2].length) === 0) {
              const bomLength = boms[encoding2].length;
              this.state.bufBytesStart += bomLength;
              buf = buf.slice(bomLength);
              this.options = normalize_options({ ...this.original_options, encoding: encoding2 });
              ({ comment: comment7, escape: escape5, quote } = this.options);
              break;
            }
          }
          this.state.bomSkipped = true;
        }
      }
      const bufLen = buf.length;
      let pos;
      for (pos = 0; pos < bufLen; pos++) {
        if (this.__needMoreData(pos, bufLen, end)) {
          break;
        }
        if (this.state.wasRowDelimiter === true) {
          this.info.lines++;
          this.state.wasRowDelimiter = false;
        }
        if (to_line !== -1 && this.info.lines > to_line) {
          this.state.stop = true;
          close2();
          return;
        }
        if (this.state.quoting === false && record_delimiter.length === 0) {
          const record_delimiterCount = this.__autoDiscoverRecordDelimiter(buf, pos);
          if (record_delimiterCount) {
            record_delimiter = this.options.record_delimiter;
          }
        }
        const chr = buf[pos];
        if (raw2 === true) {
          rawBuffer.append(chr);
        }
        if ((chr === cr || chr === nl) && this.state.wasRowDelimiter === false) {
          this.state.wasRowDelimiter = true;
        }
        if (this.state.escaping === true) {
          this.state.escaping = false;
        } else {
          if (escape5 !== null && this.state.quoting === true && this.__isEscape(buf, pos, chr) && pos + escape5.length < bufLen) {
            if (escapeIsQuote) {
              if (this.__isQuote(buf, pos + escape5.length)) {
                this.state.escaping = true;
                pos += escape5.length - 1;
                continue;
              }
            } else {
              this.state.escaping = true;
              pos += escape5.length - 1;
              continue;
            }
          }
          if (this.state.commenting === false && this.__isQuote(buf, pos)) {
            if (this.state.quoting === true) {
              const nextChr = buf[pos + quote.length];
              const isNextChrTrimable = rtrim && this.__isCharTrimable(buf, pos + quote.length);
              const isNextChrComment = comment7 !== null && this.__compareBytes(comment7, buf, pos + quote.length, nextChr);
              const isNextChrDelimiter = this.__isDelimiter(buf, pos + quote.length, nextChr);
              const isNextChrRecordDelimiter = record_delimiter.length === 0 ? this.__autoDiscoverRecordDelimiter(buf, pos + quote.length) : this.__isRecordDelimiter(nextChr, buf, pos + quote.length);
              if (escape5 !== null && this.__isEscape(buf, pos, chr) && this.__isQuote(buf, pos + escape5.length)) {
                pos += escape5.length - 1;
              } else if (!nextChr || isNextChrDelimiter || isNextChrRecordDelimiter || isNextChrComment || isNextChrTrimable) {
                this.state.quoting = false;
                this.state.wasQuoting = true;
                pos += quote.length - 1;
                continue;
              } else if (relax_quotes === false) {
                const err = this.__error(
                  new CsvError("CSV_INVALID_CLOSING_QUOTE", [
                    "Invalid Closing Quote:",
                    `got "${String.fromCharCode(nextChr)}"`,
                    `at line ${this.info.lines}`,
                    "instead of delimiter, record delimiter, trimable character",
                    "(if activated) or comment"
                  ], this.options, this.__infoField())
                );
                if (err !== void 0) return err;
              } else {
                this.state.quoting = false;
                this.state.wasQuoting = true;
                this.state.field.prepend(quote);
                pos += quote.length - 1;
              }
            } else {
              if (this.state.field.length !== 0) {
                if (relax_quotes === false) {
                  const info2 = this.__infoField();
                  const bom2 = Object.keys(boms).map((b) => boms[b].equals(this.state.field.toString()) ? b : false).filter(Boolean)[0];
                  const err = this.__error(
                    new CsvError("INVALID_OPENING_QUOTE", [
                      "Invalid Opening Quote:",
                      `a quote is found on field ${JSON.stringify(info2.column)} at line ${info2.lines}, value is ${JSON.stringify(this.state.field.toString(encoding))}`,
                      bom2 ? `(${bom2} bom)` : void 0
                    ], this.options, info2, {
                      field: this.state.field
                    })
                  );
                  if (err !== void 0) return err;
                }
              } else {
                this.state.quoting = true;
                pos += quote.length - 1;
                continue;
              }
            }
          }
          if (this.state.quoting === false) {
            const recordDelimiterLength = this.__isRecordDelimiter(chr, buf, pos);
            if (recordDelimiterLength !== 0) {
              const skipCommentLine = this.state.commenting && (this.state.wasQuoting === false && this.state.record.length === 0 && this.state.field.length === 0);
              if (skipCommentLine) {
                this.info.comment_lines++;
              } else {
                if (this.state.enabled === false && this.info.lines + (this.state.wasRowDelimiter === true ? 1 : 0) >= from_line) {
                  this.state.enabled = true;
                  this.__resetField();
                  this.__resetRecord();
                  pos += recordDelimiterLength - 1;
                  continue;
                }
                if (skip_empty_lines === true && this.state.wasQuoting === false && this.state.record.length === 0 && this.state.field.length === 0) {
                  this.info.empty_lines++;
                  pos += recordDelimiterLength - 1;
                  continue;
                }
                this.info.bytes = this.state.bufBytesStart + pos;
                const errField = this.__onField();
                if (errField !== void 0) return errField;
                this.info.bytes = this.state.bufBytesStart + pos + recordDelimiterLength;
                const errRecord = this.__onRecord(push);
                if (errRecord !== void 0) return errRecord;
                if (to !== -1 && this.info.records >= to) {
                  this.state.stop = true;
                  close2();
                  return;
                }
              }
              this.state.commenting = false;
              pos += recordDelimiterLength - 1;
              continue;
            }
            if (this.state.commenting) {
              continue;
            }
            if (comment7 !== null && (comment_no_infix === false || this.state.record.length === 0 && this.state.field.length === 0)) {
              const commentCount = this.__compareBytes(comment7, buf, pos, chr);
              if (commentCount !== 0) {
                this.state.commenting = true;
                continue;
              }
            }
            const delimiterLength = this.__isDelimiter(buf, pos, chr);
            if (delimiterLength !== 0) {
              this.info.bytes = this.state.bufBytesStart + pos;
              const errField = this.__onField();
              if (errField !== void 0) return errField;
              pos += delimiterLength - 1;
              continue;
            }
          }
        }
        if (this.state.commenting === false) {
          if (max_record_size !== 0 && this.state.record_length + this.state.field.length > max_record_size) {
            return this.__error(
              new CsvError("CSV_MAX_RECORD_SIZE", [
                "Max Record Size:",
                "record exceed the maximum number of tolerated bytes",
                `of ${max_record_size}`,
                `at line ${this.info.lines}`
              ], this.options, this.__infoField())
            );
          }
        }
        const lappend = ltrim === false || this.state.quoting === true || this.state.field.length !== 0 || !this.__isCharTrimable(buf, pos);
        const rappend = rtrim === false || this.state.wasQuoting === false;
        if (lappend === true && rappend === true) {
          this.state.field.append(chr);
        } else if (rtrim === true && !this.__isCharTrimable(buf, pos)) {
          return this.__error(
            new CsvError("CSV_NON_TRIMABLE_CHAR_AFTER_CLOSING_QUOTE", [
              "Invalid Closing Quote:",
              "found non trimable byte after quote",
              `at line ${this.info.lines}`
            ], this.options, this.__infoField())
          );
        } else {
          if (lappend === false) {
            pos += this.__isCharTrimable(buf, pos) - 1;
          }
          continue;
        }
      }
      if (end === true) {
        if (this.state.quoting === true) {
          const err = this.__error(
            new CsvError("CSV_QUOTE_NOT_CLOSED", [
              "Quote Not Closed:",
              `the parsing is finished with an opening quote at line ${this.info.lines}`
            ], this.options, this.__infoField())
          );
          if (err !== void 0) return err;
        } else {
          if (this.state.wasQuoting === true || this.state.record.length !== 0 || this.state.field.length !== 0) {
            this.info.bytes = this.state.bufBytesStart + pos;
            const errField = this.__onField();
            if (errField !== void 0) return errField;
            const errRecord = this.__onRecord(push);
            if (errRecord !== void 0) return errRecord;
          } else if (this.state.wasRowDelimiter === true) {
            this.info.empty_lines++;
          } else if (this.state.commenting === true) {
            this.info.comment_lines++;
          }
        }
      } else {
        this.state.bufBytesStart += pos;
        this.state.previousBuf = buf.slice(pos);
      }
      if (this.state.wasRowDelimiter === true) {
        this.info.lines++;
        this.state.wasRowDelimiter = false;
      }
    },
    __onRecord: function(push) {
      const { columns, group_columns_by_name, encoding, info: info2, from: from4, relax_column_count, relax_column_count_less, relax_column_count_more, raw: raw2, skip_records_with_empty_values } = this.options;
      const { enabled, record } = this.state;
      if (enabled === false) {
        return this.__resetRecord();
      }
      const recordLength = record.length;
      if (columns === true) {
        if (skip_records_with_empty_values === true && isRecordEmpty(record)) {
          this.__resetRecord();
          return;
        }
        return this.__firstLineToColumns(record);
      }
      if (columns === false && this.info.records === 0) {
        this.state.expectedRecordLength = recordLength;
      }
      if (recordLength !== this.state.expectedRecordLength) {
        const err = columns === false ? new CsvError("CSV_RECORD_INCONSISTENT_FIELDS_LENGTH", [
          "Invalid Record Length:",
          `expect ${this.state.expectedRecordLength},`,
          `got ${recordLength} on line ${this.info.lines}`
        ], this.options, this.__infoField(), {
          record
        }) : new CsvError("CSV_RECORD_INCONSISTENT_COLUMNS", [
          "Invalid Record Length:",
          `columns length is ${columns.length},`,
          // rename columns
          `got ${recordLength} on line ${this.info.lines}`
        ], this.options, this.__infoField(), {
          record
        });
        if (relax_column_count === true || relax_column_count_less === true && recordLength < this.state.expectedRecordLength || relax_column_count_more === true && recordLength > this.state.expectedRecordLength) {
          this.info.invalid_field_length++;
          this.state.error = err;
        } else {
          const finalErr = this.__error(err);
          if (finalErr) return finalErr;
        }
      }
      if (skip_records_with_empty_values === true && isRecordEmpty(record)) {
        this.__resetRecord();
        return;
      }
      if (this.state.recordHasError === true) {
        this.__resetRecord();
        this.state.recordHasError = false;
        return;
      }
      this.info.records++;
      if (from4 === 1 || this.info.records >= from4) {
        const { objname } = this.options;
        if (columns !== false) {
          const obj = {};
          for (let i2 = 0, l = record.length; i2 < l; i2++) {
            if (columns[i2] === void 0 || columns[i2].disabled) continue;
            if (group_columns_by_name === true && obj[columns[i2].name] !== void 0) {
              if (Array.isArray(obj[columns[i2].name])) {
                obj[columns[i2].name] = obj[columns[i2].name].concat(record[i2]);
              } else {
                obj[columns[i2].name] = [obj[columns[i2].name], record[i2]];
              }
            } else {
              obj[columns[i2].name] = record[i2];
            }
          }
          if (raw2 === true || info2 === true) {
            const extRecord = Object.assign(
              { record: obj },
              raw2 === true ? { raw: this.state.rawBuffer.toString(encoding) } : {},
              info2 === true ? { info: this.__infoRecord() } : {}
            );
            const err = this.__push(
              objname === void 0 ? extRecord : [obj[objname], extRecord],
              push
            );
            if (err) {
              return err;
            }
          } else {
            const err = this.__push(
              objname === void 0 ? obj : [obj[objname], obj],
              push
            );
            if (err) {
              return err;
            }
          }
        } else {
          if (raw2 === true || info2 === true) {
            const extRecord = Object.assign(
              { record },
              raw2 === true ? { raw: this.state.rawBuffer.toString(encoding) } : {},
              info2 === true ? { info: this.__infoRecord() } : {}
            );
            const err = this.__push(
              objname === void 0 ? extRecord : [record[objname], extRecord],
              push
            );
            if (err) {
              return err;
            }
          } else {
            const err = this.__push(
              objname === void 0 ? record : [record[objname], record],
              push
            );
            if (err) {
              return err;
            }
          }
        }
      }
      this.__resetRecord();
    },
    __firstLineToColumns: function(record) {
      const { firstLineToHeaders } = this.state;
      try {
        const headers = firstLineToHeaders === void 0 ? record : firstLineToHeaders.call(null, record);
        if (!Array.isArray(headers)) {
          return this.__error(
            new CsvError("CSV_INVALID_COLUMN_MAPPING", [
              "Invalid Column Mapping:",
              "expect an array from column function,",
              `got ${JSON.stringify(headers)}`
            ], this.options, this.__infoField(), {
              headers
            })
          );
        }
        const normalizedHeaders = normalize_columns_array(headers);
        this.state.expectedRecordLength = normalizedHeaders.length;
        this.options.columns = normalizedHeaders;
        this.__resetRecord();
        return;
      } catch (err) {
        return err;
      }
    },
    __resetRecord: function() {
      if (this.options.raw === true) {
        this.state.rawBuffer.reset();
      }
      this.state.error = void 0;
      this.state.record = [];
      this.state.record_length = 0;
    },
    __onField: function() {
      const { cast, encoding, rtrim, max_record_size } = this.options;
      const { enabled, wasQuoting } = this.state;
      if (enabled === false) {
        return this.__resetField();
      }
      let field = this.state.field.toString(encoding);
      if (rtrim === true && wasQuoting === false) {
        field = field.trimRight();
      }
      if (cast === true) {
        const [err, f3] = this.__cast(field);
        if (err !== void 0) return err;
        field = f3;
      }
      this.state.record.push(field);
      if (max_record_size !== 0 && typeof field === "string") {
        this.state.record_length += field.length;
      }
      this.__resetField();
    },
    __resetField: function() {
      this.state.field.reset();
      this.state.wasQuoting = false;
    },
    __push: function(record, push) {
      const { on_record } = this.options;
      if (on_record !== void 0) {
        const info2 = this.__infoRecord();
        try {
          record = on_record.call(null, record, info2);
        } catch (err) {
          return err;
        }
        if (record === void 0 || record === null) {
          return;
        }
      }
      push(record);
    },
    // Return a tuple with the error and the casted value
    __cast: function(field) {
      const { columns, relax_column_count } = this.options;
      const isColumns = Array.isArray(columns);
      if (isColumns === true && relax_column_count && this.options.columns.length <= this.state.record.length) {
        return [void 0, void 0];
      }
      if (this.state.castField !== null) {
        try {
          const info2 = this.__infoField();
          return [void 0, this.state.castField.call(null, field, info2)];
        } catch (err) {
          return [err];
        }
      }
      if (this.__isFloat(field)) {
        return [void 0, parseFloat(field)];
      } else if (this.options.cast_date !== false) {
        const info2 = this.__infoField();
        return [void 0, this.options.cast_date.call(null, field, info2)];
      }
      return [void 0, field];
    },
    // Helper to test if a character is a space or a line delimiter
    __isCharTrimable: function(buf, pos) {
      const isTrim = (buf2, pos2) => {
        const { timchars } = this.state;
        loop1: for (let i2 = 0; i2 < timchars.length; i2++) {
          const timchar = timchars[i2];
          for (let j = 0; j < timchar.length; j++) {
            if (timchar[j] !== buf2[pos2 + j]) continue loop1;
          }
          return timchar.length;
        }
        return 0;
      };
      return isTrim(buf, pos);
    },
    // Keep it in case we implement the `cast_int` option
    // __isInt(value){
    //   // return Number.isInteger(parseInt(value))
    //   // return !isNaN( parseInt( obj ) );
    //   return /^(\-|\+)?[1-9][0-9]*$/.test(value)
    // }
    __isFloat: function(value) {
      return value - parseFloat(value) + 1 >= 0;
    },
    __compareBytes: function(sourceBuf, targetBuf, targetPos, firstByte) {
      if (sourceBuf[0] !== firstByte) return 0;
      const sourceLength = sourceBuf.length;
      for (let i2 = 1; i2 < sourceLength; i2++) {
        if (sourceBuf[i2] !== targetBuf[targetPos + i2]) return 0;
      }
      return sourceLength;
    },
    __isDelimiter: function(buf, pos, chr) {
      const { delimiter: delimiter2, ignore_last_delimiters } = this.options;
      if (ignore_last_delimiters === true && this.state.record.length === this.options.columns.length - 1) {
        return 0;
      } else if (ignore_last_delimiters !== false && typeof ignore_last_delimiters === "number" && this.state.record.length === ignore_last_delimiters - 1) {
        return 0;
      }
      loop1: for (let i2 = 0; i2 < delimiter2.length; i2++) {
        const del2 = delimiter2[i2];
        if (del2[0] === chr) {
          for (let j = 1; j < del2.length; j++) {
            if (del2[j] !== buf[pos + j]) continue loop1;
          }
          return del2.length;
        }
      }
      return 0;
    },
    __isRecordDelimiter: function(chr, buf, pos) {
      const { record_delimiter } = this.options;
      const recordDelimiterLength = record_delimiter.length;
      loop1: for (let i2 = 0; i2 < recordDelimiterLength; i2++) {
        const rd = record_delimiter[i2];
        const rdLength = rd.length;
        if (rd[0] !== chr) {
          continue;
        }
        for (let j = 1; j < rdLength; j++) {
          if (rd[j] !== buf[pos + j]) {
            continue loop1;
          }
        }
        return rd.length;
      }
      return 0;
    },
    __isEscape: function(buf, pos, chr) {
      const { escape: escape5 } = this.options;
      if (escape5 === null) return false;
      const l = escape5.length;
      if (escape5[0] === chr) {
        for (let i2 = 0; i2 < l; i2++) {
          if (escape5[i2] !== buf[pos + i2]) {
            return false;
          }
        }
        return true;
      }
      return false;
    },
    __isQuote: function(buf, pos) {
      const { quote } = this.options;
      if (quote === null) return false;
      const l = quote.length;
      for (let i2 = 0; i2 < l; i2++) {
        if (quote[i2] !== buf[pos + i2]) {
          return false;
        }
      }
      return true;
    },
    __autoDiscoverRecordDelimiter: function(buf, pos) {
      const { encoding } = this.options;
      const rds = [
        // Important, the windows line ending must be before mac os 9
        Buffer2.from("\r\n", encoding),
        Buffer2.from("\n", encoding),
        Buffer2.from("\r", encoding)
      ];
      loop: for (let i2 = 0; i2 < rds.length; i2++) {
        const l = rds[i2].length;
        for (let j = 0; j < l; j++) {
          if (rds[i2][j] !== buf[pos + j]) {
            continue loop;
          }
        }
        this.options.record_delimiter.push(rds[i2]);
        this.state.recordDelimiterMaxLength = rds[i2].length;
        return rds[i2].length;
      }
      return 0;
    },
    __error: function(msg) {
      const { encoding, raw: raw2, skip_records_with_error } = this.options;
      const err = typeof msg === "string" ? new Error(msg) : msg;
      if (skip_records_with_error) {
        this.state.recordHasError = true;
        if (this.options.on_skip !== void 0) {
          this.options.on_skip(err, raw2 ? this.state.rawBuffer.toString(encoding) : void 0);
        }
        return void 0;
      } else {
        return err;
      }
    },
    __infoDataSet: function() {
      return {
        ...this.info,
        columns: this.options.columns
      };
    },
    __infoRecord: function() {
      const { columns, raw: raw2, encoding } = this.options;
      return {
        ...this.__infoDataSet(),
        error: this.state.error,
        header: columns === true,
        index: this.state.record.length,
        raw: raw2 ? this.state.rawBuffer.toString(encoding) : void 0
      };
    },
    __infoField: function() {
      const { columns } = this.options;
      const isColumns = Array.isArray(columns);
      return {
        ...this.__infoRecord(),
        column: isColumns === true ? columns.length > this.state.record.length ? columns[this.state.record.length].name : null : this.state.record.length,
        quoting: this.state.wasQuoting
      };
    }
  };
};
var parse9 = function(data, opts = {}) {
  if (typeof data === "string") {
    data = Buffer2.from(data);
  }
  const records = opts && opts.objname ? {} : [];
  const parser3 = transform2(opts);
  const push = (record) => {
    if (parser3.options.objname === void 0)
      records.push(record);
    else {
      records[record[0]] = record[1];
    }
  };
  const close2 = () => {
  };
  const err1 = parser3.parse(data, false, push, close2);
  if (err1 !== void 0) throw err1;
  const err2 = parser3.parse(void 0, true, push, close2);
  if (err2 !== void 0) throw err2;
  return records;
};

// ../myst-directives/dist/table.js
var tableDirective = {
  name: "table",
  arg: {
    type: "myst",
    doc: "An optional table caption"
  },
  options: {
    ...commonDirectiveOptions("table"),
    class: {
      type: String,
      // class_option: list of strings?
      doc: `CSS classes to add to your table. Special classes include:

- \`full-width\`: changes the table environment to cover two columns in LaTeX`
    },
    align: {
      type: String
      // choice(['left', 'center', 'right'])
    }
  },
  body: {
    type: "myst",
    required: true
  },
  run(data) {
    const children = [];
    if (data.arg) {
      children.push({
        type: "caption",
        children: [{ type: "paragraph", children: data.arg }]
      });
    }
    children.push(...data.body);
    const container4 = {
      type: "container",
      kind: "table",
      children
    };
    addCommonDirectiveOptions(data, container4);
    return [container4];
  }
};
var listTableDirective = {
  name: "list-table",
  arg: {
    type: "myst",
    doc: "An optional table caption"
  },
  options: {
    ...commonDirectiveOptions("list table"),
    "header-rows": {
      type: Number
      // nonnegative int
    },
    // 'stub-columns': {
    //   type: Number,
    //   // nonnegative int
    // },
    // width: {
    //   type: String,
    //   // length_or_percentage_or_unitless,
    // },
    // widths: {
    //   type: String,
    //   // TODO use correct widths option validator
    // },
    class: {
      type: String,
      // class_option: list of strings?
      doc: `CSS classes to add to your table. Special classes include:

- \`full-width\`: changes the table environment to cover two columns in LaTeX`
    },
    align: {
      type: String
      // choice(['left', 'center', 'right'])
    }
  },
  body: {
    type: "myst",
    required: true
  },
  validate(data, vfile2) {
    var _a6;
    const validatedData = { ...data };
    const parsedBody = data.body;
    if (parsedBody.length !== 1 || parsedBody[0].type !== "list") {
      fileError(vfile2, "list-table directive must have one list as body", {
        node: data.node,
        ruleId: RuleId.directiveBodyCorrect
      });
      validatedData.body = [];
    } else {
      (_a6 = parsedBody[0].children) === null || _a6 === void 0 ? void 0 : _a6.forEach((listItem4) => {
        var _a7, _b;
        if (!validatedData.body.length)
          return;
        if (listItem4.type !== "listItem" || ((_a7 = listItem4.children) === null || _a7 === void 0 ? void 0 : _a7.length) !== 1 || ((_b = listItem4.children[0]) === null || _b === void 0 ? void 0 : _b.type) !== "list") {
          fileError(vfile2, "list-table directive must have a list of lists", {
            node: data.node,
            ruleId: RuleId.directiveBodyCorrect
          });
          validatedData.body = [];
        }
      });
    }
    return validatedData;
  },
  run(data) {
    var _a6, _b, _c;
    const children = [];
    if (data.arg) {
      children.push({
        type: "caption",
        children: [{ type: "paragraph", children: data.arg }]
      });
    }
    const topListChildren = ((_a6 = data.body[0]) === null || _a6 === void 0 ? void 0 : _a6.children) || [];
    let headerCount = ((_b = data.options) === null || _b === void 0 ? void 0 : _b["header-rows"]) || 0;
    const table5 = {
      type: "table",
      align: (_c = data.options) === null || _c === void 0 ? void 0 : _c.align,
      children: topListChildren.map((topListItem) => {
        var _a7, _b2;
        const nestedListChildren = ((_b2 = (_a7 = topListItem.children) === null || _a7 === void 0 ? void 0 : _a7[0]) === null || _b2 === void 0 ? void 0 : _b2.children) || [];
        const row2 = {
          type: "tableRow",
          children: nestedListChildren.map((nestedListItem) => {
            const cell3 = {
              type: "tableCell",
              header: headerCount > 0 ? true : void 0,
              children: nestedListItem.children
            };
            return cell3;
          })
        };
        headerCount -= 1;
        return row2;
      })
    };
    children.push(table5);
    const container4 = {
      type: "container",
      kind: "table",
      children
    };
    addCommonDirectiveOptions(data, container4);
    return [container4];
  }
};
function parseCSV(data, ctx, opts) {
  var _a6, _b, _c;
  const delimiter2 = (_a6 = opts === null || opts === void 0 ? void 0 : opts.delim) !== null && _a6 !== void 0 ? _a6 : ",";
  const records = parse9(data, {
    delimiter: delimiter2 === "tab" ? "	" : delimiter2 === "space" ? " " : delimiter2,
    ltrim: !(opts === null || opts === void 0 ? void 0 : opts.keepspace),
    escape: (_b = opts === null || opts === void 0 ? void 0 : opts.escape) !== null && _b !== void 0 ? _b : '"',
    quote: (_c = opts === null || opts === void 0 ? void 0 : opts.quote) !== null && _c !== void 0 ? _c : '"'
  });
  return records.map((record, recordIndex) => {
    return record.map((cell3) => {
      const mdast2 = ctx.parseMyst(cell3, recordIndex);
      return select("*:root > paragraph:only-child", mdast2);
    });
  });
}
var csvTableDirective = {
  name: "csv-table",
  doc: 'The "csv-table" directive is used to create a table from CSV (comma-separated values) data.',
  arg: {
    type: "myst",
    doc: "An optional table caption"
  },
  options: {
    ...commonDirectiveOptions("CSV table"),
    // file: {
    //   type: String,
    //   doc: 'The local filesystem path to a CSV data file.',
    //   alias: ['url'],
    //  Add this to the description for the directive:
    //  The data may be internal (an integral part of the document) or external (a separate file).
    // },
    header: {
      type: String,
      // nonnegative int
      doc: "Supplemental data for the table header, added independently of and before any header-rows from the main CSV data. Must use the same CSV format as the main CSV data."
    },
    "header-rows": {
      type: Number,
      // nonnegative int
      doc: "The number of rows of CSV data to use in the table header. Defaults to 0."
    },
    class: {
      type: String,
      // class_option: list of strings?
      doc: `CSS classes to add to your table. Special classes include:

- \`full-width\`: changes the table environment to cover two columns in LaTeX`
    },
    align: {
      type: String
      // choice(['left', 'center', 'right'])
    },
    delim: {
      type: String,
      doc: 'The character used to separate data fields. The special values "tab" and "space" are converted to the respective whitespace characters. Defaults to "," (comma)'
    },
    keepspace: {
      type: Boolean,
      doc: "Treat whitespace immediately following the delimiter as significant. The default is to ignore such whitespace."
    },
    quote: {
      type: String,
      doc: 'The character used to quote fields containing special characters, such as the delimiter, quotes, or new-line characters. Must be a single character, defaults to `"` (a double quote)\\\nFor example, `First cell, "These commas, for example, are escaped", Next cell`'
    },
    escape: {
      type: String,
      doc: 'A character used to escape the delimiter or quote characters from the CSV parser. Must be a single character, defaults to `"` (a double quote) default is a double quote\\\nFor example, `First cell, "These quotes"", for example, are escaped", Next cell`'
    }
  },
  body: {
    type: String,
    doc: "The CSV content",
    required: true
  },
  run(data, vfile2, ctx) {
    var _a6, _b, _c, _d2, _e;
    const captions = [];
    if (data.arg) {
      captions.push({
        type: "caption",
        children: [{ type: "paragraph", children: data.arg }]
      });
    }
    const rows = [];
    if (((_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.header) !== void 0) {
      let headerCells = [];
      try {
        headerCells = parseCSV(data.options.header, ctx, data.options);
      } catch (error) {
        fileError(vfile2, "csv-table directive header must be valid CSV-formatted MyST", {
          node: (_b = select('mystOption[name="header"]', data.node)) !== null && _b !== void 0 ? _b : data.node,
          ruleId: RuleId.directiveOptionsCorrect
        });
      }
      rows.push(...headerCells.map((parsedRow) => ({
        type: "tableRow",
        children: parsedRow.map((parsedCell) => {
          var _a7;
          return {
            type: "tableCell",
            header: true,
            children: (_a7 = parsedCell === null || parsedCell === void 0 ? void 0 : parsedCell.children) !== null && _a7 !== void 0 ? _a7 : []
          };
        })
      })));
    }
    let bodyCells = [];
    try {
      bodyCells = parseCSV(data.body, ctx, data.options);
    } catch (error) {
      fileError(vfile2, "csv-table directive body must be valid CSV-formatted MyST", {
        node: (_c = select("mystDirectiveBody", data.node)) !== null && _c !== void 0 ? _c : data.node,
        ruleId: RuleId.directiveBodyCorrect
      });
    }
    let headerCount = ((_d2 = data.options) === null || _d2 === void 0 ? void 0 : _d2["header-rows"]) || 0;
    rows.push(...bodyCells.map((parsedRow) => {
      const row2 = {
        type: "tableRow",
        children: parsedRow.map((parsedCell) => {
          var _a7;
          return {
            type: "tableCell",
            header: headerCount > 0 ? true : void 0,
            children: (_a7 = parsedCell === null || parsedCell === void 0 ? void 0 : parsedCell.children) !== null && _a7 !== void 0 ? _a7 : []
          };
        })
      };
      headerCount -= 1;
      return row2;
    }));
    const table5 = {
      type: "table",
      align: (_e = data.options) === null || _e === void 0 ? void 0 : _e.align,
      children: rows
    };
    const container4 = {
      type: "container",
      kind: "table",
      children: [...captions, table5]
    };
    addCommonDirectiveOptions(data, container4);
    return [container4];
  }
};

// ../myst-directives/dist/aside.js
var asideDirective = {
  name: "aside",
  alias: ["margin", "sidebar", "topic"],
  arg: {
    type: "myst",
    doc: "An optional title"
  },
  options: {
    ...commonDirectiveOptions("aside")
  },
  body: {
    type: "myst",
    required: true
  },
  run(data) {
    const children = [...data.body];
    if (data.arg) {
      children.unshift({
        type: "admonitionTitle",
        children: data.arg
      });
    }
    const aside2 = {
      type: "aside",
      kind: data.name == "aside" || data.name == "margin" ? void 0 : data.name,
      children
    };
    addCommonDirectiveOptions(data, aside2);
    return [aside2];
  }
};

// ../myst-directives/dist/glossary.js
var glossaryDirective = {
  name: "glossary",
  body: {
    type: "myst",
    required: true
  },
  options: {
    ...commonDirectiveOptions("glossary")
  },
  run(data) {
    const glossary = {
      type: "glossary",
      children: data.body
    };
    addCommonDirectiveOptions(data, glossary);
    return [glossary];
  }
};

// ../myst-directives/dist/math.js
var mathDirective = {
  name: "math",
  options: {
    ...commonDirectiveOptions("math"),
    typst: {
      type: String,
      doc: "Typst-specific math content. If not provided, LaTeX content will be converted to Typst."
    }
  },
  body: {
    type: String,
    required: true
  },
  run(data) {
    var _a6;
    const math7 = addCommonDirectiveOptions(data, { type: "math", value: data.body });
    if (data.node.tight) {
      math7.tight = data.node.tight;
    }
    if ((_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.typst) {
      math7.typst = data.options.typst;
    }
    return [math7];
  }
};

// ../myst-directives/dist/mdast.js
var mdastDirective = {
  name: "mdast",
  arg: {
    type: String,
    required: true
  },
  options: {
    ...commonDirectiveOptions("mdast")
  },
  run(data) {
    const mdast2 = {
      type: "mdast",
      id: data.arg
    };
    addCommonDirectiveOptions(data, mdast2);
    return [mdast2];
  }
};

// ../myst-directives/dist/mermaid.js
var mermaidDirective = {
  name: "mermaid",
  options: {
    ...commonDirectiveOptions("mermaid")
  },
  body: {
    type: String,
    required: true
  },
  run(data) {
    return [
      addCommonDirectiveOptions(data, {
        type: "mermaid",
        value: data.body
      })
    ];
  }
};

// ../myst-directives/dist/mystdemo.js
var mystdemoDirective = {
  name: "myst",
  options: {
    ...commonDirectiveOptions("myst"),
    numbering: {
      type: String
    }
  },
  body: {
    type: String,
    required: true
  },
  run(data) {
    var _a6;
    let numbering;
    if ((_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.numbering) {
      try {
        numbering = js_yaml_default.load(data.options.numbering);
      } catch (err) {
      }
    }
    const myst2 = {
      type: "myst",
      numbering,
      value: data.body
    };
    addCommonDirectiveOptions(data, myst2);
    return [myst2];
  }
};

// ../myst-directives/dist/blockquote.js
var import_classnames2 = __toESM(require_classnames(), 1);
var blockquoteDirective = {
  name: "blockquote",
  alias: ["epigraph", "pull-quote"],
  doc: "Block quotes are used to indicate that the enclosed content forms an extended quotation. They may be followed by an inscription or attribution formed of a paragraph beginning with `--`, `---`, or an em-dash.",
  options: {
    ...commonDirectiveOptions("blockquote"),
    // TODO: Add enumeration in future
    class: {
      type: String,
      doc: `CSS classes to add to your blockquote. Special classes include:

- \`pull-quote\`: used for a blockquote node which should attract attention
- \`epigraph\`: used for a blockquote node that are usually found at the beginning of a document`
    }
  },
  body: {
    type: "myst",
    doc: "The body of the quote, which may contain a special attribution paragraph that is turned into a caption"
  },
  run(data) {
    var _a6;
    const children = [];
    if (data.body) {
      children.push(...data.body);
    }
    const container4 = {
      type: "container",
      kind: "quote",
      children: [
        {
          // @ts-expect-error: myst-spec needs updating to support blockquote
          type: "blockquote",
          children
        }
      ]
    };
    addCommonDirectiveOptions(data, container4);
    const className = (_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.class;
    container4.class = (0, import_classnames2.default)({
      [className]: className,
      [data.name]: data.name !== "blockquote"
    });
    return [container4];
  }
};

// ../myst-directives/dist/raw.js
var rawDirective = {
  name: "raw",
  doc: 'Allows you to include non-markdown text in your document. If the argument "latex" is provided, the text will be parsed as latex; otherwise, it will be included as raw text.',
  arg: {
    type: String,
    doc: 'Format of directive content - for now, only "latex" is valid'
  },
  body: {
    type: String,
    doc: "Raw content to be parsed"
  },
  run(data) {
    var _a6, _b;
    const lang = (_a6 = data.arg) !== null && _a6 !== void 0 ? _a6 : "";
    const value = (_b = data.body) !== null && _b !== void 0 ? _b : "";
    const tex = ["tex", "latex"].includes(lang) ? `
${value}
` : void 0;
    const typst = ["typst", "typ"].includes(lang) ? `
${value}
` : void 0;
    return [
      {
        type: "raw",
        lang,
        tex,
        typst,
        value
      }
    ];
  }
};
var rawLatexDirective = {
  name: "raw:latex",
  alias: ["raw:tex"],
  doc: "Allows you to include tex in your document that will only be included in tex exports",
  body: {
    type: String,
    doc: "Raw tex content"
  },
  run(data) {
    const lang = "tex";
    const body3 = data.body;
    const tex = body3 ? `
${body3}
` : "";
    return [
      {
        type: "raw",
        lang,
        tex
      }
    ];
  }
};
var rawTypstDirective = {
  name: "raw:typst",
  alias: ["raw:typ"],
  doc: "Allows you to include typst in your document that will only be included in typst exports",
  body: {
    type: String,
    doc: "Raw typst content"
  },
  run(data) {
    const lang = "typst";
    const body3 = data.body;
    const typst = body3 ? `
${body3}
` : "";
    return [
      {
        type: "raw",
        lang,
        typst
      }
    ];
  }
};

// ../myst-directives/dist/div.js
var divDirective = {
  name: "div",
  options: {
    ...commonDirectiveOptions("div")
  },
  body: {
    type: "myst"
  },
  run(data) {
    const div2 = { type: "div" };
    if (data.body) {
      div2.children = data.body;
    }
    addCommonDirectiveOptions(data, div2);
    return [div2];
  }
};

// ../myst-directives/dist/toc.js
var CONTEXTS = ["project", "page", "section"];
var tocDirective = {
  name: "toc",
  doc: "Inserts table of contents in the page. This may be for the project (each page has an entry), the current page (each heading has an entry), or the current section (only headings in the section have an entry).",
  alias: ["tableofcontents", "table-of-contents", "toctree", "contents"],
  arg: {
    type: "myst",
    doc: "Heading to be included with table of contents"
  },
  options: {
    context: {
      type: String,
      doc: "Table of Contents context; one of project, page, or section",
      alias: ["kind"]
    },
    depth: {
      type: Number,
      doc: "Number of levels to include in Table of Contents; by default, all levels will be included",
      alias: ["maxdepth"]
    },
    ...commonDirectiveOptions("toc")
  },
  run(data, vfile2) {
    var _a6, _b, _c;
    let context = ((_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.context) ? data.options.context : data.name === "contents" ? "section" : "project";
    if (!CONTEXTS.includes(context)) {
      fileError(vfile2, `Unknown context for ${data.name} directive: ${context}`);
      context = "project";
    }
    let depth = (_b = data.options) === null || _b === void 0 ? void 0 : _b.depth;
    if (depth != null && depth < 1) {
      fileError(vfile2, `Table of Contents 'depth' must be a number greater than 0`);
      depth = void 0;
    }
    const children = [];
    if (data.arg) {
      const parsedArg = data.arg;
      if (((_c = parsedArg[0]) === null || _c === void 0 ? void 0 : _c.type) === "heading") {
        children.push(...parsedArg);
      } else {
        children.push({
          type: "heading",
          depth: 2,
          enumerated: false,
          children: parsedArg
        });
      }
    }
    const toc = { type: "toc", kind: context, depth, children };
    addCommonDirectiveOptions(data, toc);
    return [toc];
  }
};

// ../myst-directives/dist/index.js
var defaultDirectives = [
  admonitionDirective,
  bibliographyDirective,
  csvTableDirective,
  codeDirective,
  codeCellDirective,
  dropdownDirective,
  embedDirective,
  blockquoteDirective,
  figureDirective,
  iframeDirective,
  imageDirective,
  includeDirective,
  indexDirective,
  genIndexDirective,
  tableDirective,
  listTableDirective,
  asideDirective,
  glossaryDirective,
  mathDirective,
  mdastDirective,
  mermaidDirective,
  mystdemoDirective,
  rawDirective,
  rawLatexDirective,
  rawTypstDirective,
  divDirective,
  tocDirective
];

// ../myst-roles/dist/utils.js
function classRoleOption(nodeType = "node") {
  return {
    class: {
      type: String,
      doc: `Annotate the ${nodeType} with a set of space-delimited class names.`
    }
  };
}
function labelRoleOption(nodeType = "node") {
  return {
    label: {
      type: String,
      alias: ["name"],
      doc: `Label the ${nodeType} to be cross-referenced or explicitly linked to.`
    }
  };
}
function commonRoleOptions(nodeType = "node") {
  return {
    ...classRoleOption(nodeType),
    ...labelRoleOption(nodeType)
  };
}
function addClassOptions2(data, node3) {
  var _a6;
  if (typeof ((_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.class) === "string") {
    node3.class = data.options.class;
  }
  return node3;
}
function addLabelOptions2(data, node3) {
  var _a6;
  const { label, identifier } = normalizeLabel((_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.label) || {};
  if (label)
    node3.label = label;
  if (identifier)
    node3.identifier = identifier;
  return node3;
}
function addCommonRoleOptions(data, node3) {
  addClassOptions2(data, node3);
  addLabelOptions2(data, node3);
  return node3;
}

// ../myst-roles/dist/span.js
var spanRole = {
  name: "span",
  options: { ...commonRoleOptions("span") },
  body: {
    type: "myst"
  },
  run(data) {
    const node3 = { type: "span" };
    if (data.body) {
      node3.children = data.body;
    }
    addCommonRoleOptions(data, node3);
    return [node3];
  }
};

// ../myst-roles/dist/abbreviation.js
var ABBR_PATTERN = /^(.+?)\(([^()]+)\)$/;
var abbreviationRole = {
  name: "abbreviation",
  alias: ["abbr"],
  options: { ...commonRoleOptions("abbreviation") },
  body: {
    type: String,
    required: true
  },
  run(data) {
    var _a6, _b, _c;
    const body3 = data.body;
    const match3 = ABBR_PATTERN.exec(body3);
    const value = (_b = (_a6 = match3 === null || match3 === void 0 ? void 0 : match3[1]) === null || _a6 === void 0 ? void 0 : _a6.trim()) !== null && _b !== void 0 ? _b : body3.trim();
    const title = (_c = match3 === null || match3 === void 0 ? void 0 : match3[2]) === null || _c === void 0 ? void 0 : _c.trim();
    const abbr = { type: "abbreviation", title, children: [{ type: "text", value }] };
    addCommonRoleOptions(data, abbr);
    return [abbr];
  }
};

// ../myst-roles/dist/chem.js
var chemRole = {
  name: "chemicalFormula",
  alias: ["chem"],
  options: { ...commonRoleOptions("chemicalFormula") },
  body: {
    type: String,
    required: true
  },
  run(data) {
    const chem = { type: "chemicalFormula", value: data.body };
    addCommonRoleOptions(data, chem);
    return [chem];
  }
};

// ../myst-roles/dist/cite.js
var citeRole = {
  name: "cite",
  alias: [
    "cite:p",
    "cite:t",
    // https://sphinxcontrib-bibtex.readthedocs.io/en/latest/usage.html
    "cite:ps",
    "cite:ts",
    "cite:ct",
    "cite:cts",
    "cite:alp",
    "cite:alps",
    "cite:label",
    "cite:labelpar",
    "cite:year",
    "cite:yearpar",
    "cite:author",
    "cite:authors",
    "cite:authorpar",
    "cite:authorpars",
    "cite:cauthor",
    "cite:cauthors"
    // 'cite:empty',
  ],
  options: { ...commonRoleOptions("cite") },
  body: {
    type: String,
    required: true
  },
  run(data) {
    const content3 = data.body;
    const labels = content3.split(/[,;]/).map((s5) => s5.trim());
    const kind = data.name.startsWith("cite:p") || data.name.includes("par") || data.name.includes("cite:alp") ? "parenthetical" : "narrative";
    const children = labels.map((c) => {
      var _a6, _b;
      const groups = /^(?:\{([^{]*)\})?([^{]*)(?:\{([^{]*)\})?$/;
      const [, prefix2, l, suffix] = (_a6 = c.match(groups)) !== null && _a6 !== void 0 ? _a6 : ["", "", c];
      const { label, identifier } = (_b = normalizeLabel(l)) !== null && _b !== void 0 ? _b : {};
      const cite3 = {
        type: "cite",
        kind,
        label: label !== null && label !== void 0 ? label : l,
        identifier
      };
      if (data.name.startsWith("cite:year")) {
        cite3.partial = "year";
      }
      if (data.name.startsWith("cite:author") || data.name.startsWith("cite:cauthor")) {
        cite3.partial = "author";
      }
      if (prefix2)
        cite3.prefix = prefix2.trim();
      if (suffix)
        cite3.suffix = suffix.trim();
      return cite3;
    });
    if (data.name === "cite" && children.length === 1) {
      addCommonRoleOptions(data, children[0]);
      return children;
    }
    if (data.name.includes("cite:alp")) {
      return children;
    }
    const citeGroup3 = { type: "citeGroup", kind, children };
    addCommonRoleOptions(data, citeGroup3);
    return [citeGroup3];
  }
};

// ../myst-roles/dist/delete.js
var deleteRole = {
  name: "delete",
  alias: ["del", "strike"],
  options: { ...commonRoleOptions("delete") },
  body: {
    type: "myst",
    required: true
  },
  run(data) {
    const del2 = { type: "delete", children: data.body };
    addCommonRoleOptions(data, del2);
    return [del2];
  }
};

// ../myst-roles/dist/math.js
var mathRole = {
  name: "math",
  options: {
    ...commonRoleOptions("math"),
    typst: {
      type: String,
      doc: "Typst-specific math content. If not provided, LaTeX content will be converted to Typst."
    }
  },
  body: {
    type: String,
    required: true
  },
  run(data) {
    var _a6;
    const node3 = { type: "inlineMath", value: data.body };
    addCommonRoleOptions(data, node3);
    if ((_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.typst) {
      node3.typst = data.options.typst;
    }
    return [node3];
  }
};

// ../myst-roles/dist/reference.js
var REF_PATTERN = /^(.+?)<([^<>]+)>$/;
var refRole = {
  name: "ref",
  alias: ["eq", "numref", "prf:ref"],
  body: {
    type: String,
    required: true
  },
  run(data) {
    const body3 = data.body;
    const match3 = REF_PATTERN.exec(body3);
    const [, modified, rawLabel] = match3 !== null && match3 !== void 0 ? match3 : [];
    const { label, identifier } = normalizeLabel(rawLabel !== null && rawLabel !== void 0 ? rawLabel : body3) || {};
    const crossRef = { type: "crossReference", kind: data.name, identifier, label };
    if (modified)
      crossRef.children = [{ type: "text", value: modified.trim() }];
    return [crossRef];
  }
};

// ../myst-roles/dist/doc.js
var REF_PATTERN2 = /^(.+?)<([^<>]+)>$/;
var docRole = {
  name: "doc",
  body: {
    type: String,
    required: true
  },
  run(data, vfile2) {
    const body3 = data.body;
    const match3 = REF_PATTERN2.exec(body3);
    const [, modified, rawLabel] = match3 !== null && match3 !== void 0 ? match3 : [];
    const url = rawLabel !== null && rawLabel !== void 0 ? rawLabel : body3;
    fileWarn(vfile2, "Usage of the {doc} role is not recommended, use a markdown link to the file instead.", {
      source: "role:doc",
      node: data.node,
      note: `For {doc}\`${body3}\` use [${modified || ""}](${url})`,
      ruleId: RuleId.roleBodyCorrect
    });
    const link4 = { type: "link", url };
    if (modified)
      link4.children = [{ type: "text", value: modified.trim() }];
    return [link4];
  }
};

// ../myst-roles/dist/download.js
var REF_PATTERN3 = /^(.+?)<([^<>]+)>$/;
var downloadRole = {
  name: "download",
  body: {
    type: String,
    required: true
  },
  run(data) {
    const body3 = data.body;
    const match3 = REF_PATTERN3.exec(body3);
    const [, modified, rawLabel] = match3 !== null && match3 !== void 0 ? match3 : [];
    const url = rawLabel !== null && rawLabel !== void 0 ? rawLabel : body3;
    const link4 = {
      type: "link",
      url,
      static: true
      // Indicate that this should be treated as a static download
    };
    if (modified)
      link4.children = [{ type: "text", value: modified.trim() }];
    return [link4];
  }
};

// ../myst-roles/dist/indices.js
var REF_PATTERN4 = /^(.+?)<([^<>]+)>$/;
var indexRole = {
  name: "index",
  body: {
    type: String,
    required: true
  },
  run(data, vfile2) {
    const body3 = data.body;
    const match3 = REF_PATTERN4.exec(body3);
    const [, modified, indexString] = match3 !== null && match3 !== void 0 ? match3 : [];
    const values = { single: [], pair: [], triple: [], see: [], seealso: [] };
    parseIndexLine(indexString !== null && indexString !== void 0 ? indexString : body3, values, vfile2, data.node);
    const entries2 = createIndexEntries(values, vfile2, data.node);
    const output2 = [
      {
        type: "mystTarget",
        indexEntries: entries2
      },
      {
        type: "span",
        children: [
          {
            type: "text",
            value: modified !== null && modified !== void 0 ? modified : body3
          }
        ]
      }
    ];
    return output2;
  }
};

// ../myst-roles/dist/term.js
var REF_PATTERN5 = /^(.+?)<([^<>]+)>$/;
var termRole = {
  name: "term",
  body: {
    type: String,
    required: true
  },
  run(data, vfile2) {
    var _a6;
    const body3 = data.body;
    const match3 = REF_PATTERN5.exec(body3);
    const [, modified, rawLabel] = match3 !== null && match3 !== void 0 ? match3 : [];
    const { label, identifier } = (_a6 = normalizeLabel(rawLabel !== null && rawLabel !== void 0 ? rawLabel : body3)) !== null && _a6 !== void 0 ? _a6 : {};
    if (!identifier) {
      fileWarn(vfile2, `Unknown {term} role with body: "${body3}"`, {
        source: "role:term",
        node: data.node,
        ruleId: RuleId.roleBodyCorrect
      });
    }
    const crossRef = {
      type: "crossReference",
      label,
      identifier: `term-${identifier}`,
      children: [{ type: "text", value: modified ? modified.trim() : rawLabel !== null && rawLabel !== void 0 ? rawLabel : body3 }]
    };
    return [crossRef];
  }
};

// ../myst-roles/dist/si.js
var siRole = {
  name: "si",
  body: {
    type: String,
    required: true
  },
  run(data) {
    const value = data.body;
    const match3 = value.match(/([0-9]+)\s?<([\\a-zA-Z\s]+)>/);
    if (!match3) {
      return [{ type: "si", error: true, value }];
    }
    const [, number2, commands] = match3;
    const parsed = [...commands.matchAll(/\\([a-zA-Z]+)/g)];
    const units = parsed.filter((c) => !!c).map(([, c]) => c);
    const translated = units.map((c) => {
      var _a6;
      return (_a6 = UNITS2[c]) !== null && _a6 !== void 0 ? _a6 : c;
    });
    const si = {
      type: "si",
      number: number2,
      unit: translated.join(""),
      units,
      alt: units.join(" "),
      value: `${number2} ${translated.join("")}`
    };
    return [si];
  }
};
var UNITS2 = {
  ampere: "A",
  candela: "cd",
  kelvin: "K",
  kilogram: "kg",
  metre: "m",
  meter: "m",
  mole: "mol",
  second: "s",
  becquerel: "Bq",
  degreeCelsius: "\xB0C",
  coulomb: "C",
  farad: "F",
  gray: "Gy",
  hertz: "Hz",
  henry: "H",
  joule: "J",
  lumen: "lm",
  katal: "kat",
  lux: "lx",
  newton: "N",
  ohm: "\u2126",
  pascal: "Pa",
  radian: "rad",
  siemens: "S",
  sievert: "Sv",
  steradian: "sr",
  tesla: "T",
  volt: "V",
  watt: "W",
  weber: "Wb",
  astronomicalunit: "au",
  bel: "B",
  dalton: "Da",
  day: "d",
  decibel: "dB",
  degree: "\xB0",
  electronvolt: "eV",
  hectare: "ha",
  hour: "h",
  litre: "L",
  liter: "L",
  arcminute: "\u2032",
  // minute (plane angle) U+2032
  minute: "min",
  // minute (time)
  arcsecond: "\u2033",
  // second (plane angle) U+2033
  neper: "Np",
  tonne: "t",
  // SI prefixes
  yocto: "y",
  // -24
  zepto: "z",
  // -21
  atto: "a",
  // -18
  femto: "f",
  // -15
  pico: "p",
  // -12
  nano: "n",
  // -9
  micro: "\xB5",
  // -6
  milli: "m",
  // -3
  centi: "c",
  // -2
  deci: "d",
  // -1
  deca: "da",
  // 1
  hecto: "h",
  // 2
  kilo: "k",
  // 3
  mega: "M",
  // 6
  giga: "G",
  // 9
  tera: "T",
  // 12
  peta: "P",
  // 15
  exa: "E",
  // 18
  zetta: "Z",
  // 21
  yotta: "Y",
  // 24
  // Special
  angstrom: "\xC5"
};

// ../myst-roles/dist/inlineExpression.js
var evalRole = {
  name: "eval",
  options: { ...commonRoleOptions("eval") },
  body: {
    type: String,
    required: true
  },
  run(data) {
    const node3 = { type: "inlineExpression", value: data.body };
    addCommonRoleOptions(data, node3);
    return [node3];
  }
};

// ../myst-roles/dist/smallcaps.js
var smallcapsRole = {
  name: "smallcaps",
  alias: ["sc"],
  options: { ...commonRoleOptions("smallcaps") },
  body: {
    type: "myst",
    required: true
  },
  run(data) {
    const node3 = { type: "smallcaps", children: data.body };
    addCommonRoleOptions(data, node3);
    return [node3];
  }
};

// ../myst-roles/dist/subscript.js
var subscriptRole = {
  name: "subscript",
  alias: ["sub"],
  options: { ...commonRoleOptions("subscript") },
  body: {
    type: "myst",
    required: true
  },
  run(data) {
    const node3 = { type: "subscript", children: data.body };
    addCommonRoleOptions(data, node3);
    return [node3];
  }
};

// ../myst-roles/dist/superscript.js
var superscriptRole = {
  name: "superscript",
  alias: ["sup"],
  options: { ...commonRoleOptions("superscript") },
  body: {
    type: "myst",
    required: true
  },
  run(data) {
    const node3 = { type: "superscript", children: data.body };
    addCommonRoleOptions(data, node3);
    return [node3];
  }
};

// ../myst-roles/dist/underline.js
var underlineRole = {
  name: "underline",
  alias: ["u"],
  options: { ...commonRoleOptions("underline") },
  body: {
    type: "myst",
    required: true
  },
  run(data) {
    const node3 = { type: "underline", children: data.body };
    addCommonRoleOptions(data, node3);
    return [node3];
  }
};

// ../myst-roles/dist/keyboard.js
var keyboardRole = {
  name: "keyboard",
  doc: 'The keyboard role denote textual user input from a keyboard, such as "Ctrl" + "Space".',
  alias: ["kbd"],
  options: { ...commonRoleOptions("keyboard") },
  body: {
    type: String,
    required: true
  },
  run(data) {
    const node3 = {
      type: "keyboard",
      children: [{ type: "text", value: data.body }]
    };
    addCommonRoleOptions(data, node3);
    return [node3];
  }
};

// ../myst-roles/dist/raw.js
var rawLatexRole = {
  name: "raw:latex",
  alias: ["raw:tex"],
  doc: "Allows you to include tex in your document that will only be included in tex exports",
  body: {
    type: String,
    doc: "Raw tex content"
  },
  run(data) {
    var _a6;
    const lang = "tex";
    const tex = (_a6 = data.body) !== null && _a6 !== void 0 ? _a6 : "";
    return [
      {
        type: "raw",
        lang,
        tex
      }
    ];
  }
};
var rawTypstRole = {
  name: "raw:typst",
  alias: ["raw:typ"],
  doc: "Allows you to include typst in your document that will only be included in typst exports",
  body: {
    type: String,
    doc: "Raw typst content"
  },
  run(data) {
    var _a6;
    const lang = "typst";
    const typst = (_a6 = data.body) !== null && _a6 !== void 0 ? _a6 : "";
    return [
      {
        type: "raw",
        lang,
        typst
      }
    ];
  }
};

// ../myst-roles/dist/index.js
var defaultRoles = [
  spanRole,
  abbreviationRole,
  chemRole,
  citeRole,
  deleteRole,
  mathRole,
  refRole,
  docRole,
  downloadRole,
  indexRole,
  termRole,
  siRole,
  evalRole,
  smallcapsRole,
  subscriptRole,
  superscriptRole,
  underlineRole,
  keyboardRole,
  rawLatexRole,
  rawTypstRole
];

// ../myst-parser/dist/tlds.js
var tlds = [
  "aarp",
  "abb",
  "abbott",
  "abbvie",
  "abc",
  "able",
  "ac",
  "academy",
  "accountant",
  "accountants",
  "aco",
  "actor",
  "ad",
  "ads",
  "ae",
  "aeg",
  "aero",
  "aetna",
  "af",
  "afl",
  "africa",
  "ag",
  "agakhan",
  "agency",
  "ai",
  "aig",
  "airforce",
  "airtel",
  "akdn",
  "al",
  "allfinanz",
  "ally",
  "alsace",
  "alstom",
  "am",
  "amica",
  "amsterdam",
  "analytics",
  "android",
  "anquan",
  "anz",
  "ao",
  "aol",
  "apartments",
  "app",
  "apple",
  "aq",
  "aquarelle",
  "ar",
  "arab",
  "aramco",
  "archi",
  "army",
  "arpa",
  "art",
  "arte",
  "as",
  "asda",
  "asia",
  "associates",
  "at",
  "athleta",
  "attorney",
  "au",
  "auction",
  "audible",
  "audio",
  "auspost",
  "author",
  "auto",
  "autos",
  "avianca",
  "aw",
  "aws",
  "ax",
  "axa",
  "az",
  "ba",
  "baby",
  "band",
  "bank",
  "bar",
  "barcelona",
  "barefoot",
  "bargains",
  "baseball",
  "basketball",
  "bauhaus",
  "bayern",
  "bb",
  "bbc",
  "bbt",
  "bbva",
  "bcg",
  "bcn",
  "bd",
  "be",
  "beats",
  "beauty",
  "beer",
  "berlin",
  "best",
  "bet",
  "bf",
  "bg",
  "bh",
  "bharti",
  "bi",
  "bible",
  "bid",
  "bike",
  "bing",
  "bingo",
  "bio",
  "biz",
  "bj",
  "black",
  "blackfriday",
  "blog",
  "blue",
  "bm",
  "bms",
  "bmw",
  "bn",
  "bnpparibas",
  "bo",
  "boats",
  "boehringer",
  "bofa",
  "bom",
  "bond",
  "boo",
  "book",
  "booking",
  "bosch",
  "bostik",
  "boston",
  "bot",
  "boutique",
  "box",
  "br",
  "bradesco",
  "bridgestone",
  "broadway",
  "broker",
  "brother",
  "brussels",
  "bs",
  "bt",
  "build",
  "builders",
  "business",
  "buy",
  "buzz",
  "bv",
  "bw",
  "by",
  "bz",
  "bzh",
  "ca",
  "cab",
  "cafe",
  "cal",
  "call",
  "cam",
  "camera",
  "camp",
  "canon",
  "capetown",
  "capital",
  "car",
  "caravan",
  "cards",
  "care",
  "career",
  "careers",
  "cars",
  "casa",
  "case",
  "cash",
  "casino",
  "cat",
  "catering",
  "catholic",
  "cba",
  "cbn",
  "cbre",
  "cc",
  "cd",
  "center",
  "ceo",
  "cern",
  "cf",
  "cfa",
  "cfd",
  "cg",
  "ch",
  "chanel",
  "channel",
  "charity",
  "chase",
  "chat",
  "cheap",
  "chintai",
  "christmas",
  "chrome",
  "church",
  "ci",
  "cipriani",
  "circle",
  "city",
  "ck",
  "cl",
  "claims",
  "cleaning",
  "click",
  "clinic",
  "clinique",
  "clothing",
  "cloud",
  "club",
  "cm",
  "cn",
  "co",
  "coach",
  "codes",
  "coffee",
  "college",
  "cologne",
  "com",
  "commbank",
  "community",
  "company",
  "compare",
  "computer",
  "comsec",
  "condos",
  "construction",
  "consulting",
  "contact",
  "contractors",
  "cooking",
  "cool",
  "coop",
  "corsica",
  "country",
  "coupon",
  "coupons",
  "courses",
  "cpa",
  "cr",
  "credit",
  "creditcard",
  "creditunion",
  "cricket",
  "crown",
  "crs",
  "cruise",
  "cruises",
  "cu",
  "cuisinella",
  "cv",
  "cw",
  "cx",
  "cy",
  "cymru",
  "cyou",
  "cz",
  "dabur",
  "dad",
  "dance",
  "data",
  "date",
  "dating",
  "datsun",
  "day",
  "dclk",
  "dds",
  "de",
  "deal",
  "dealer",
  "deals",
  "degree",
  "delivery",
  "dell",
  "deloitte",
  "delta",
  "democrat",
  "dental",
  "dentist",
  "desi",
  "design",
  "dev",
  "dhl",
  "diamonds",
  "diet",
  "digital",
  "direct",
  "directory",
  "discount",
  "discover",
  "dish",
  "diy",
  "dj",
  "dk",
  "dm",
  "dnp",
  "do",
  "docs",
  "doctor",
  "dog",
  "domains",
  "dot",
  "download",
  "drive",
  "dtv",
  "dubai",
  "dunlop",
  "dupont",
  "durban",
  "dvag",
  "dvr",
  "dz",
  "earth",
  "eat",
  "ec",
  "eco",
  "edeka",
  "edu",
  "education",
  "ee",
  "eg",
  "email",
  "emerck",
  "energy",
  "engineer",
  "engineering",
  "enterprises",
  "epson",
  "equipment",
  "er",
  "ericsson",
  "erni",
  "es",
  "esq",
  "estate",
  "et",
  "eu",
  "eus",
  "events",
  "exchange",
  "expert",
  "exposed",
  "express",
  "extraspace",
  "fage",
  "fail",
  "fairwinds",
  "faith",
  "family",
  "fan",
  "fans",
  "farm",
  "farmers",
  "fashion",
  "fast",
  "fedex",
  "feedback",
  "fi",
  "film",
  "final",
  "finance",
  "financial",
  "fire",
  "firmdale",
  "fish",
  "fishing",
  "fit",
  "fitness",
  "fj",
  "fk",
  "flights",
  "flir",
  "florist",
  "flowers",
  "fly",
  "fm",
  "fo",
  "foo",
  "food",
  "football",
  "ford",
  "forex",
  "forsale",
  "forum",
  "foundation",
  "fox",
  "fr",
  "free",
  "fresenius",
  "frl",
  "frogans",
  "frontier",
  "ftr",
  "fun",
  "fund",
  "furniture",
  "futbol",
  "fyi",
  "ga",
  "gal",
  "gallery",
  "gallo",
  "gallup",
  "game",
  "games",
  "gap",
  "garden",
  "gay",
  "gb",
  "gbiz",
  "gd",
  "gdn",
  "ge",
  "gea",
  "gent",
  "genting",
  "george",
  "gf",
  "gg",
  "ggee",
  "gh",
  "gi",
  "gift",
  "gifts",
  "gives",
  "giving",
  "gl",
  "glass",
  "gle",
  "global",
  "globo",
  "gm",
  "gmail",
  "gmbh",
  "gmo",
  "gmx",
  "gn",
  "gold",
  "golf",
  "goo",
  "gop",
  "got",
  "gov",
  "gp",
  "gq",
  "gr",
  "grainger",
  "graphics",
  "gratis",
  "green",
  "gripe",
  "grocery",
  "group",
  "gs",
  "gt",
  "gu",
  "gucci",
  "guge",
  "guide",
  "guitars",
  "guru",
  "gw",
  "gy",
  "hair",
  "hamburg",
  "haus",
  "health",
  "healthcare",
  "help",
  "here",
  "hermes",
  "hiphop",
  "hiv",
  "hk",
  "hkt",
  "hm",
  "hn",
  "hockey",
  "holdings",
  "holiday",
  "homegoods",
  "homes",
  "honda",
  "horse",
  "hospital",
  "host",
  "hosting",
  "hot",
  "hotels",
  "house",
  "how",
  "hr",
  "hsbc",
  "ht",
  "hu",
  "icbc",
  "ice",
  "icu",
  "id",
  "ie",
  "ieee",
  "ifm",
  "ikano",
  "il",
  "im",
  "imamat",
  "immo",
  "immobilien",
  "in",
  "inc",
  "industries",
  "infiniti",
  "info",
  "ing",
  "ink",
  "institute",
  "insurance",
  "insure",
  "int",
  "international",
  "intuit",
  "investments",
  "io",
  "ipiranga",
  "iq",
  "ir",
  "irish",
  "is",
  "ismaili",
  "ist",
  "istanbul",
  "it",
  "itau",
  "itv",
  "jaguar",
  "java",
  "jcb",
  "je",
  "jeep",
  "jetzt",
  "jewelry",
  "jio",
  "jll",
  "jm",
  "jmp",
  "jnj",
  "jo",
  "jobs",
  "joburg",
  "jot",
  "joy",
  "jp",
  "jprs",
  "juegos",
  "juniper",
  "kaufen",
  "kddi",
  "ke",
  "kerryhotels",
  "kerrylogistics",
  "kerryproperties",
  "kfh",
  "kg",
  "kh",
  "ki",
  "kia",
  "kids",
  "kim",
  "kitchen",
  "kiwi",
  "km",
  "kn",
  "koeln",
  "komatsu",
  "kosher",
  "kp",
  "kpmg",
  "kpn",
  "kr",
  "krd",
  "kred",
  "kuokgroup",
  "kw",
  "ky",
  "kyoto",
  "kz",
  "la",
  "lacaixa",
  "lamborghini",
  "lamer",
  "lancaster",
  "land",
  "landrover",
  "lanxess",
  "lasalle",
  "lat",
  "latino",
  "latrobe",
  "law",
  "lawyer",
  "lb",
  "lc",
  "lds",
  "lease",
  "leclerc",
  "lefrak",
  "legal",
  "lgbt",
  "li",
  "lidl",
  "life",
  "lifeinsurance",
  "lifestyle",
  "lighting",
  "like",
  "lilly",
  "limited",
  "limo",
  "lincoln",
  "link",
  "lipsy",
  "live",
  "living",
  "lk",
  "llc",
  "llp",
  "loan",
  "loans",
  "locker",
  "locus",
  "lol",
  "london",
  "lotte",
  "lotto",
  "love",
  "lr",
  "ls",
  "lt",
  "ltd",
  "ltda",
  "lu",
  "lundbeck",
  "luxe",
  "luxury",
  "lv",
  "ly",
  "ma",
  "madrid",
  "maif",
  "maison",
  "makeup",
  "man",
  "management",
  "mango",
  "map",
  "market",
  "marketing",
  "markets",
  "mattel",
  "mba",
  "mc",
  "md",
  "me",
  "med",
  "media",
  "meet",
  "melbourne",
  "meme",
  "memorial",
  "men",
  "menu",
  "merckmsd",
  "mg",
  "mh",
  "miami",
  "mil",
  "mini",
  "mint",
  "mit",
  "mk",
  "ml",
  "mlb",
  "mls",
  "mm",
  "mma",
  "mn",
  "mo",
  "mobi",
  "mobile",
  "moda",
  "moe",
  "moi",
  "mom",
  "monash",
  "money",
  "monster",
  "mormon",
  "mortgage",
  "moscow",
  "moto",
  "motorcycles",
  "mov",
  "movie",
  "mp",
  "mq",
  "mr",
  "ms",
  "msd",
  "mt",
  "mtn",
  "mtr",
  "mu",
  "museum",
  "music",
  "mv",
  "mw",
  "mx",
  "my",
  "mz",
  "na",
  "nab",
  "nagoya",
  "name",
  "natura",
  "navy",
  "nba",
  "nc",
  "ne",
  "nec",
  "net",
  "network",
  "new",
  "news",
  "next",
  "nextdirect",
  "nexus",
  "nf",
  "nfl",
  "ng",
  "ngo",
  "nhk",
  "ni",
  "nico",
  "ninja",
  "nissay",
  "nl",
  "no",
  "now",
  "nowruz",
  "nowtv",
  "np",
  "nr",
  "nra",
  "nrw",
  "ntt",
  "nu",
  "nyc",
  "nz",
  "obi",
  "observer",
  "office",
  "okinawa",
  "olayan",
  "olayangroup",
  "ollo",
  "om",
  "omega",
  "one",
  "ong",
  "onl",
  "online",
  "ooo",
  "open",
  "orange",
  "org",
  "organic",
  "origins",
  "osaka",
  "otsuka",
  "ott",
  "ovh",
  "pa",
  "page",
  "paris",
  "pars",
  "partners",
  "parts",
  "party",
  "pay",
  "pccw",
  "pe",
  "pet",
  "pf",
  "pg",
  "ph",
  "pharmacy",
  "phd",
  "philips",
  "phone",
  "photo",
  "photography",
  "photos",
  "physio",
  "pics",
  "pictet",
  "pictures",
  "pid",
  "pin",
  "ping",
  "pink",
  "pioneer",
  "pizza",
  "pk",
  "pl",
  "place",
  "play",
  "plumbing",
  "plus",
  "pm",
  "pn",
  "pnc",
  "pohl",
  "poker",
  "politie",
  "post",
  "pr",
  "pramerica",
  "praxi",
  "press",
  "prime",
  "pro",
  "prod",
  "productions",
  "prof",
  "progressive",
  "promo",
  "properties",
  "property",
  "protection",
  "pru",
  "prudential",
  "ps",
  "pt",
  "pub",
  "pw",
  "pwc",
  "py",
  "qa",
  "qpon",
  "quebec",
  "quest",
  "racing",
  "radio",
  "re",
  "read",
  "realestate",
  "realtor",
  "realty",
  "recipes",
  "red",
  "rehab",
  "reise",
  "reisen",
  "reit",
  "reliance",
  "ren",
  "rent",
  "rentals",
  "repair",
  "report",
  "republican",
  "rest",
  "restaurant",
  "review",
  "reviews",
  "rexroth",
  "rich",
  "ricoh",
  "ril",
  "rio",
  "rip",
  "ro",
  "rocks",
  "rodeo",
  "rogers",
  "room",
  "rs",
  "rsvp",
  "ru",
  "rugby",
  "ruhr",
  "run",
  "rw",
  "rwe",
  "ryukyu",
  "sa",
  "saarland",
  "safe",
  "safety",
  "sakura",
  "sale",
  "salon",
  "sanofi",
  "sap",
  "sarl",
  "sas",
  "save",
  "saxo",
  "sb",
  "sbi",
  "sbs",
  "sc",
  "scb",
  "scholarships",
  "school",
  "science",
  "scot",
  "sd",
  "se",
  "search",
  "seat",
  "secure",
  "security",
  "seek",
  "select",
  "sener",
  "services",
  "seven",
  "sew",
  "sfr",
  "sg",
  "sh",
  "shangrila",
  "sharp",
  "shaw",
  "shell",
  "shia",
  "shiksha",
  "shoes",
  "shop",
  "shopping",
  "show",
  "si",
  "silk",
  "sina",
  "singles",
  "site",
  "sj",
  "sk",
  "ski",
  "skin",
  "sky",
  "sl",
  "sling",
  "sm",
  "smart",
  "smile",
  "sn",
  "sncf",
  "so",
  "soccer",
  "social",
  "software",
  "sohu",
  "solar",
  "solutions",
  "song",
  "sony",
  "soy",
  "spa",
  "space",
  "sport",
  "spot",
  "sr",
  "srl",
  "ss",
  "st",
  "stada",
  "star",
  "stockholm",
  "storage",
  "store",
  "stream",
  "studio",
  "study",
  "style",
  "su",
  "sucks",
  "supplies",
  "supply",
  "support",
  "surf",
  "surgery",
  "sv",
  "swatch",
  "swiss",
  "sx",
  "sy",
  "sydney",
  "systems",
  "sz",
  "tab",
  "taipei",
  "talk",
  "taobao",
  "tatar",
  "tattoo",
  "tax",
  "taxi",
  "tc",
  "tci",
  "td",
  "tdk",
  "team",
  "tech",
  "technology",
  "tel",
  "tennis",
  "tf",
  "tg",
  "th",
  "thd",
  "theater",
  "theatre",
  "tickets",
  "tienda",
  "tips",
  "tires",
  "tirol",
  "tjx",
  "tl",
  "tm",
  "tmall",
  "tn",
  "to",
  "today",
  "tokyo",
  "tools",
  "top",
  "total",
  "tours",
  "town",
  "toys",
  "tr",
  "trade",
  "trading",
  "training",
  "travel",
  "travelers",
  "travelersinsurance",
  "trust",
  "trv",
  "tt",
  "tube",
  "tui",
  "tunes",
  "tushu",
  "tv",
  "tvs",
  "tw",
  "tz",
  "ua",
  "ug",
  "uk",
  "university",
  "uno",
  "uol",
  "ups",
  "us",
  "uy",
  "uz",
  "va",
  "vacations",
  "vana",
  "vc",
  "ve",
  "vegas",
  "ventures",
  "vet",
  "vg",
  "vi",
  "viajes",
  "video",
  "vig",
  "viking",
  "villas",
  "vin",
  "vip",
  "vision",
  "viva",
  "vivo",
  "vlaanderen",
  "vn",
  "vodka",
  "volvo",
  "vote",
  "voting",
  "voto",
  "voyage",
  "vu",
  "wales",
  "walter",
  "wang",
  "wanggou",
  "watch",
  "watches",
  "weather",
  "webcam",
  "weber",
  "website",
  "wed",
  "wedding",
  "weibo",
  "weir",
  "wf",
  "whoswho",
  "wien",
  "wiki",
  "win",
  "wine",
  "woodside",
  "work",
  "works",
  "world",
  "wow",
  "ws",
  "wtc",
  "wtf",
  "xin",
  "xyz",
  "yachts",
  "yamaxun",
  "yandex",
  "ye",
  "yoga",
  "you",
  "youtube",
  "yt",
  "yun",
  "za",
  "zappos",
  "zara",
  "zero",
  "zip",
  "zm",
  "zone",
  "zuerich",
  "zw"
];

// ../myst-parser/dist/config.js
var MARKDOWN_IT_CONFIG = {
  options: {
    html: true,
    // Enable HTML tags in source
    xhtmlOut: true,
    // Use '/' to close single tags (<br />)
    breaks: false,
    // Convert '\n' in paragraphs into <br>
    langPrefix: "language-",
    // CSS language prefix for fenced blocks
    linkify: false,
    // autoconvert URL-like texts to links
    // Enable some language-neutral replacements + quotes beautification
    typographer: false,
    // Double + single quotes replacement pairs, when typographer enabled,
    // and smartquotes on. Could be either a String or an Array.
    //
    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,
    // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
    quotes: "\u201C\u201D\u2018\u2019",
    // Highlighter function. Should return escaped HTML,
    // or '' if the source string is not changed and should be escaped externaly.
    // If result starts with <pre... internal wrapper is skipped.
    //
    // function (/*str, lang*/) { return ''; }
    //
    highlight: null,
    maxNesting: 20
    // Internal protection, recursion limit
  },
  components: {
    core: {
      // Adding 'linkify' here is the only change to the MarkdownIt commonmark preset config
      rules: ["normalize", "block", "inline", "linkify", "text_join"]
    },
    block: {
      rules: [
        "blockquote",
        "code",
        "fence",
        "heading",
        "hr",
        "html_block",
        "lheading",
        "list",
        "reference",
        "paragraph"
      ]
    },
    inline: {
      rules: [
        "autolink",
        "backticks",
        "emphasis",
        "entity",
        "escape",
        "html_inline",
        "image",
        "link",
        "newline",
        "text"
      ],
      rules2: ["balance_pairs", "emphasis", "fragments_join"]
    }
  }
};
var EXCLUDE_TLDS = ["py", "md", "dot", "next", "so", "es", "java", "zip"];

// ../myst-parser/dist/tokensToMyst.js
var import_he = __toESM(require_he(), 1);

// ../myst-parser/dist/fromMarkdown.js
var UNHIDDEN_TOKENS = /* @__PURE__ */ new Set([
  "parsed_directive_open",
  "parsed_directive_close",
  "directive_arg_open",
  "directive_arg_close",
  "directive_body_open",
  "directive_body_close",
  "myst_option_open",
  "myst_option_close",
  "parsed_role_open",
  "parsed_role_close",
  "role_body_open",
  "role_body_close"
]);
function withoutTrailingNewline(str2) {
  return str2[str2.length - 1] == "\n" ? str2.slice(0, str2.length - 1) : str2;
}
var MarkdownParseState = class {
  constructor(src, handlers6) {
    this.src = src;
    this.stack = [u2("root", [])];
    this.handlers = getTokenHandlers(handlers6);
  }
  top() {
    return this.stack[this.stack.length - 1];
  }
  addNode(node3) {
    var _a6;
    const top = this.top();
    if (this.stack.length && node3 && "children" in top)
      (_a6 = top.children) === null || _a6 === void 0 ? void 0 : _a6.push(node3);
    return node3;
  }
  addText(text7, token, type2 = "text", attrs) {
    var _a6, _b;
    const top = this.top();
    const value = text7;
    if (!value || !this.stack.length || !type2 || !("children" in top))
      return;
    const last = (_a6 = top.children) === null || _a6 === void 0 ? void 0 : _a6[top.children.length - 1];
    if (type2 === "text" && (last === null || last === void 0 ? void 0 : last.type) === type2) {
      last.value += `${value}`;
      return last;
    }
    const node3 = { type: type2, ...attrs, value };
    (_b = top.children) === null || _b === void 0 ? void 0 : _b.push(node3);
    this.addPositionsToNode(node3, token);
    return node3;
  }
  openNode(type2, token, attrs, isLeaf = false) {
    const node3 = { type: type2, ...attrs };
    this.addPositionsToNode(node3, token);
    if (!isLeaf)
      node3.children = [];
    this.stack.push(node3);
  }
  closeNode() {
    const node3 = this.stack.pop();
    return this.addNode(node3);
  }
  parseTokens(tokens) {
    tokens === null || tokens === void 0 ? void 0 : tokens.forEach((token, index4) => {
      if (token.hidden && !UNHIDDEN_TOKENS.has(token.type))
        return;
      const handler = this.handlers[token.type];
      if (!handler) {
        throw new Error(`Token type ${token.type} not supported by tokensToMyst parser`);
      }
      handler(this, token, tokens, index4);
    });
  }
  addPositionsToNode(node3, token) {
    var _a6;
    const col = (_a6 = token.col) !== null && _a6 !== void 0 ? _a6 : [0, 0];
    if (token.map) {
      node3.position = {
        start: { line: token.map[0] + 1, column: col[0] + 1 },
        end: { line: token.map[1], column: col[1] + 1 }
      };
    } else if (this._lastPosition) {
      node3.position = {
        start: { line: this._lastPosition.start.line, column: col[0] + 1 },
        end: { line: this._lastPosition.start.line, column: col[1] + 1 }
      };
    }
    if (node3.position) {
      this._lastPosition = node3.position;
    }
  }
};
function getAttrs(state, spec, token, tokens, index4) {
  var _a6;
  const attrs = ((_a6 = spec.getAttrs) === null || _a6 === void 0 ? void 0 : _a6.call(spec, token, tokens, index4, state)) || spec.attrs || {};
  if ("type" in attrs)
    throw new Error('You can not have "type" as attrs.');
  if ("children" in attrs)
    throw new Error('You can not have "children" as attrs.');
  return attrs;
}
function noCloseToken(spec, type2) {
  return spec.noCloseToken || type2 == "code_inline" || type2 == "code_block" || type2 == "fence";
}
function getTokenHandlers(specHandlers) {
  const handlers6 = {};
  Object.entries(specHandlers).forEach(([type2, spec]) => {
    const nodeType = spec.type;
    if (noCloseToken(spec, type2)) {
      handlers6[type2] = (state, tok, tokens, i2) => {
        if (spec.isText) {
          state.addText(withoutTrailingNewline(tok.content), tok, spec.type, getAttrs(state, spec, tok, tokens, i2));
          return;
        }
        state.openNode(nodeType, tok, getAttrs(state, spec, tok, tokens, i2), spec.isLeaf);
        state.addText(withoutTrailingNewline(tok.content), tok);
        state.closeNode();
      };
    } else {
      handlers6[type2 + "_open"] = (state, tok, tokens, i2) => state.openNode(nodeType, tok, getAttrs(state, spec, tok, tokens, i2));
      handlers6[type2 + "_close"] = (state) => state.closeNode();
    }
  });
  handlers6.text = (state, tok) => state.addText(tok.content, tok);
  handlers6.inline = (state, tok) => state.parseTokens(tok.children);
  handlers6.softbreak = handlers6.softbreak || ((state, tok) => state.addText("\n", tok));
  return handlers6;
}

// ../myst-parser/dist/transforms/listItemParagraphs.js
function listItemParagraphsTransform(tree) {
  selectAll("listItem", tree).forEach((node3) => {
    if (!node3.children || node3.children.length === 0)
      return;
    const phrasingTypes2 = /* @__PURE__ */ new Set([
      "text",
      "emphasis",
      "strong",
      "delete",
      "link",
      "image",
      "break",
      "subscript",
      "superscript",
      "smallcaps",
      "inlineCode",
      "inlineMath",
      "mystRole",
      "footnoteReference",
      "crossReference",
      "cite",
      "citeGroup",
      "html"
    ]);
    const hasPhrasingContent = node3.children.some((child) => phrasingTypes2.has(child.type));
    if (hasPhrasingContent) {
      const newChildren = [];
      let currentPhrasingGroup = [];
      node3.children.forEach((child) => {
        if (phrasingTypes2.has(child.type)) {
          currentPhrasingGroup.push(child);
        } else {
          if (currentPhrasingGroup.length > 0) {
            newChildren.push({
              type: "paragraph",
              children: currentPhrasingGroup
            });
            currentPhrasingGroup = [];
          }
          newChildren.push(child);
        }
      });
      if (currentPhrasingGroup.length > 0) {
        newChildren.push({
          type: "paragraph",
          children: currentPhrasingGroup
        });
      }
      node3.children = newChildren;
    }
  });
}

// ../myst-parser/dist/tokensToMyst.js
function computeAmsmathTightness(src, map13) {
  var _a6;
  const lines = src.split("\n");
  const tightBefore = typeof (map13 === null || map13 === void 0 ? void 0 : map13[0]) === "number" && map13[0] > 0 ? lines[map13[0] - 1].trim() !== "" : false;
  const last = typeof (map13 === null || map13 === void 0 ? void 0 : map13[1]) === "number" ? (map13 === null || map13 === void 0 ? void 0 : map13[1]) + 1 : void 0;
  const tightAfter = typeof last === "number" && last < lines.length ? ((_a6 = lines[last]) === null || _a6 === void 0 ? void 0 : _a6.trim()) !== "" : false;
  const tight = tightBefore && tightAfter ? true : tightBefore ? "before" : tightAfter ? "after" : false;
  return tight;
}
var NUMBERED_CLASS = /^numbered$/;
var ALIGN_CLASS = /(?:(?:align-)|^)(left|right|center)/;
function getClassName(token, exclude) {
  var _a6, _b, _c;
  const allClasses = /* @__PURE__ */ new Set([
    // Grab the trimmed classes from the token
    ...((_a6 = token.attrGet("class")) !== null && _a6 !== void 0 ? _a6 : "").split(" ").map((c) => c.trim()).filter((c) => c),
    // Add any from the meta information (these are often repeated)
    ...(_c = (_b = token.meta) === null || _b === void 0 ? void 0 : _b.class) !== null && _c !== void 0 ? _c : []
  ]);
  const className = [...allClasses].join(" ");
  if (!className)
    return void 0;
  return className.split(" ").map((c) => c.trim()).filter((c) => {
    if (!c)
      return false;
    if (!exclude)
      return true;
    return !exclude.reduce((doExclude, test2) => doExclude || !!c.match(test2), false);
  }).join(" ") || void 0;
}
function hasClassName(token, matcher) {
  const className = getClassName(token);
  if (!className)
    return false;
  const matches4 = className.split(" ").map((c) => c.match(matcher)).filter((c) => c);
  if (matches4.length === 0)
    return false;
  return matches4[0];
}
function getLang(t2) {
  return import_he.default.decode(t2.info).trim().split(" ")[0].replace("\\", "");
}
function getColAlign(t2) {
  var _a6;
  if ((_a6 = t2.attrs) === null || _a6 === void 0 ? void 0 : _a6.length) {
    for (const attrPair of t2.attrs) {
      if (attrPair[0] === "style") {
        const match3 = attrPair[1].match(/text-align:(left|right|center)/);
        if (match3) {
          return match3[1];
        }
      }
    }
  }
}
var defaultMdast = {
  heading: {
    type: "heading",
    getAttrs(token) {
      var _a6;
      return {
        depth: Number(token.tag[1]),
        enumerated: (_a6 = token.meta) === null || _a6 === void 0 ? void 0 : _a6.enumerated
      };
    }
  },
  s: { type: "delete" },
  hr: {
    type: "thematicBreak",
    noCloseToken: true,
    isLeaf: true
  },
  paragraph: {
    type: "paragraph"
  },
  blockquote: {
    type: "blockquote"
  },
  ordered_list: {
    type: "list",
    getAttrs(token, tokens, index4) {
      var _a6, _b;
      const info = (_a6 = tokens[index4 + 1]) === null || _a6 === void 0 ? void 0 : _a6.info;
      const start = Number((_b = tokens[index4 + 1]) === null || _b === void 0 ? void 0 : _b.info);
      return {
        ordered: true,
        start: isNaN(start) || !info ? 1 : start,
        spread: false
      };
    }
  },
  bullet_list: {
    type: "list",
    attrs: {
      ordered: false,
      spread: false
    }
  },
  list_item: {
    type: "listItem",
    getAttrs(t2) {
      const attrs = { spread: true };
      if (t2.attrGet("class") === "task-list-item") {
        attrs.__taskList = true;
      }
      return attrs;
    }
  },
  em: {
    type: "emphasis"
  },
  strong: {
    type: "strong"
  },
  colon_fence: {
    type: "code",
    isLeaf: true,
    noCloseToken: true,
    getAttrs(t2) {
      return { lang: getLang(t2), value: withoutTrailingNewline(t2.content) };
    }
  },
  fence: {
    type: "code",
    isLeaf: true,
    getAttrs(t2) {
      var _a6, _b, _c, _d2, _e, _f, _g, _h, _j, _k;
      const name3 = ((_a6 = t2.meta) === null || _a6 === void 0 ? void 0 : _a6.name) || void 0;
      const showLineNumbers = !!(((_b = t2.meta) === null || _b === void 0 ? void 0 : _b.linenos) || ((_c = t2.meta) === null || _c === void 0 ? void 0 : _c.linenos) === null || // Weird docutils implementation
      ((_d2 = t2.meta) === null || _d2 === void 0 ? void 0 : _d2["number-lines"]) || // If lineno-start is present, linenos option is also automatically activated
      // https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#directive-option-code-block-lineno-start
      ((_e = t2.meta) === null || _e === void 0 ? void 0 : _e["lineno-start"]));
      const lineno = (_g = (_f = t2.meta) === null || _f === void 0 ? void 0 : _f["lineno-start"]) !== null && _g !== void 0 ? _g : (_h = t2.meta) === null || _h === void 0 ? void 0 : _h["number-lines"];
      const startingLineNumber = lineno && lineno !== 1 && !isNaN(Number(lineno)) ? Number(lineno) : void 0;
      const emphasizeLines = ((_j = t2.meta) === null || _j === void 0 ? void 0 : _j["emphasize-lines"]) ? (_k = t2.meta) === null || _k === void 0 ? void 0 : _k["emphasize-lines"].split(",").map((n) => Number(n.trim())).filter((n) => !isNaN(n) && n > 0) : void 0;
      return {
        lang: getLang(t2),
        ...normalizeLabel(name3),
        class: getClassName(t2),
        showLineNumbers: showLineNumbers || void 0,
        // Only add to MDAST if true
        startingLineNumber: showLineNumbers ? startingLineNumber : void 0,
        // Only if showing line numbers!
        emphasizeLines,
        value: withoutTrailingNewline(t2.content)
      };
    }
  },
  code_block: {
    type: "code",
    isLeaf: true,
    getAttrs(t2) {
      return { lang: getLang(t2), value: withoutTrailingNewline(t2.content) };
    }
  },
  code_inline: {
    type: "inlineCode",
    noCloseToken: true,
    isText: true
  },
  hardbreak: {
    type: "break",
    noCloseToken: true,
    isLeaf: true
  },
  link: {
    type: "link",
    getAttrs(token) {
      var _a6;
      return {
        url: token.attrGet("href"),
        title: (_a6 = token.attrGet("title")) !== null && _a6 !== void 0 ? _a6 : void 0
      };
    }
  },
  image: {
    type: "image",
    noCloseToken: true,
    isLeaf: true,
    getAttrs(token) {
      var _a6;
      const alt = token.attrGet("alt") || ((_a6 = token.children) === null || _a6 === void 0 ? void 0 : _a6.reduce((i2, t2) => i2 + (t2 === null || t2 === void 0 ? void 0 : t2.content), ""));
      const alignMatch = hasClassName(token, ALIGN_CLASS);
      const align = alignMatch ? alignMatch[1] : void 0;
      return {
        url: token.attrGet("src"),
        alt: alt || void 0,
        title: token.attrGet("title") || void 0,
        class: getClassName(token, [ALIGN_CLASS]),
        width: token.attrGet("width") || void 0,
        height: token.attrGet("height") || void 0,
        align
      };
    }
  },
  dl: {
    type: "definitionList"
  },
  dt: {
    type: "definitionTerm"
  },
  dd: {
    type: "definitionDescription"
  },
  table: {
    type: "table",
    getAttrs(token) {
      var _a6, _b, _c;
      const name3 = ((_a6 = token.meta) === null || _a6 === void 0 ? void 0 : _a6.name) || void 0;
      return {
        kind: void 0,
        ...normalizeLabel(name3),
        enumerated: (_b = token.meta) === null || _b === void 0 ? void 0 : _b.enumerated,
        class: getClassName(token, [NUMBERED_CLASS, ALIGN_CLASS]),
        align: ((_c = token.meta) === null || _c === void 0 ? void 0 : _c.align) || void 0
      };
    }
  },
  // table_caption: {
  //   type: 'caption',
  // },
  thead: {
    type: "_lift"
  },
  tbody: {
    type: "_lift"
  },
  tr: {
    type: "tableRow"
  },
  th: {
    type: "tableCell",
    getAttrs(t2) {
      return { header: true, align: getColAlign(t2) || void 0 };
    }
  },
  td: {
    type: "tableCell",
    getAttrs(t2) {
      return { align: getColAlign(t2) || void 0 };
    }
  },
  math_inline: {
    type: "inlineMath",
    noCloseToken: true,
    isText: true
  },
  math_inline_double: {
    type: "math",
    noCloseToken: true,
    isLeaf: true,
    getAttrs(t2) {
      var _a6;
      return {
        value: t2.content.trim(),
        enumerated: (_a6 = t2.meta) === null || _a6 === void 0 ? void 0 : _a6.enumerated
      };
    }
  },
  math_block: {
    type: "math",
    noCloseToken: true,
    isLeaf: true,
    getAttrs(t2) {
      var _a6;
      const name3 = t2.info || void 0;
      return {
        value: t2.content.trim(),
        ...normalizeLabel(name3),
        enumerated: (_a6 = t2.meta) === null || _a6 === void 0 ? void 0 : _a6.enumerated
      };
    }
  },
  math_block_label: {
    type: "math",
    noCloseToken: true,
    isLeaf: true,
    getAttrs(t2) {
      var _a6;
      const name3 = t2.info || void 0;
      return {
        value: t2.content.trim(),
        ...normalizeLabel(name3),
        enumerated: (_a6 = t2.meta) === null || _a6 === void 0 ? void 0 : _a6.enumerated
      };
    }
  },
  amsmath: {
    type: "math",
    noCloseToken: true,
    isLeaf: true,
    getAttrs(t2, tokens, index4, state) {
      var _a6;
      const tight = computeAmsmathTightness(state.src, t2.map);
      const attrs = {
        value: t2.content.trim(),
        enumerated: (_a6 = t2.meta) === null || _a6 === void 0 ? void 0 : _a6.enumerated
      };
      if (tight)
        attrs.tight = tight;
      return attrs;
    }
  },
  footnote_ref: {
    type: "footnoteReference",
    noCloseToken: true,
    isLeaf: true,
    getAttrs(t2) {
      var _a6;
      const { identifier, label } = normalizeLabel((_a6 = t2 === null || t2 === void 0 ? void 0 : t2.meta) === null || _a6 === void 0 ? void 0 : _a6.label) || {};
      return { identifier, label };
    }
  },
  footnote_anchor: {
    type: "_remove",
    noCloseToken: true
  },
  footnote_block: {
    // The footnote block is a view concern, not AST
    // Lift footnotes out of the tree
    type: "_lift"
  },
  footnote: {
    type: "footnoteDefinition",
    getAttrs(t2) {
      var _a6;
      const { identifier, label } = normalizeLabel((_a6 = t2 === null || t2 === void 0 ? void 0 : t2.meta) === null || _a6 === void 0 ? void 0 : _a6.label) || {};
      return { identifier, label };
    }
  },
  cite: {
    type: "cite",
    noCloseToken: true,
    isLeaf: true,
    getAttrs(t2) {
      var _a6, _b, _c;
      const { identifier, label } = normalizeLabel((_a6 = t2 === null || t2 === void 0 ? void 0 : t2.meta) === null || _a6 === void 0 ? void 0 : _a6.label) || {};
      return {
        identifier,
        label,
        kind: t2.meta.kind,
        partial: t2.meta.partial,
        // author or year
        // TODO: can use the parsed version in the future
        prefix: (_b = t2.meta.prefix) === null || _b === void 0 ? void 0 : _b[0].content,
        suffix: (_c = t2.meta.suffix) === null || _c === void 0 ? void 0 : _c[0].content
      };
    }
  },
  cite_group: {
    type: "citeGroup",
    getAttrs(t2) {
      return { kind: t2.meta.kind };
    }
  },
  parsed_directive: {
    type: "mystDirective",
    getAttrs(t2) {
      var _a6, _b, _c;
      return {
        name: t2.info,
        args: (_a6 = t2.meta) === null || _a6 === void 0 ? void 0 : _a6.arg,
        options: (_b = t2.meta) === null || _b === void 0 ? void 0 : _b.options,
        value: t2.content || void 0,
        tight: ((_c = t2.meta) === null || _c === void 0 ? void 0 : _c.tight) || void 0,
        processed: false
      };
    }
  },
  directive_arg: {
    type: "mystDirectiveArg",
    getAttrs(t2) {
      return {
        value: t2.content
      };
    }
  },
  directive_body: {
    type: "mystDirectiveBody",
    getAttrs(t2) {
      return {
        value: t2.content
      };
    }
  },
  directive_error: {
    type: "mystDirectiveError",
    noCloseToken: true,
    getAttrs(t2) {
      var _a6;
      return {
        message: (_a6 = t2.meta) === null || _a6 === void 0 ? void 0 : _a6.error_message
      };
    }
  },
  myst_option: {
    type: "mystOption",
    getAttrs(t2) {
      return {
        name: t2.info,
        location: t2.meta.location,
        value: t2.meta.value
      };
    }
  },
  parsed_role: {
    type: "mystRole",
    getAttrs(t2) {
      return {
        name: t2.info,
        value: t2.content,
        processed: false
      };
    }
  },
  role_body: {
    type: "mystRoleBody",
    getAttrs(t2) {
      return {
        value: t2.content
      };
    }
  },
  role_error: {
    type: "mystRoleError",
    noCloseToken: true,
    isLeaf: true,
    getAttrs(t2) {
      return {
        value: t2.content
      };
    }
  },
  myst_target: {
    type: "mystTarget",
    noCloseToken: true,
    isLeaf: true,
    getAttrs(t2) {
      return {
        label: t2.content
      };
    }
  },
  html_inline: {
    type: "html",
    noCloseToken: true,
    isText: true
  },
  html_block: {
    type: "html",
    noCloseToken: true,
    isText: true
  },
  myst_block_break: {
    type: "blockBreak",
    noCloseToken: true,
    isLeaf: true,
    getAttrs(t2) {
      return {
        meta: t2.content || void 0
      };
    }
  },
  myst_line_comment: {
    type: "comment",
    noCloseToken: true,
    isLeaf: true,
    getAttrs(t2) {
      return {
        value: t2.content.trim() || void 0
      };
    }
  }
};
function hoistSingleImagesOutofParagraphs(tree) {
  visit(tree, "paragraph", (node3) => {
    var _a6, _b;
    if (!(((_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.length) === 1 && ((_b = node3.children) === null || _b === void 0 ? void 0 : _b[0].type) === "image"))
      return;
    const child = node3.children[0];
    Object.keys(node3).forEach((k) => {
      delete node3[k];
    });
    Object.assign(node3, child);
  });
}
function nestSingleImagesIntoParagraphs(tree) {
  tree.children = tree.children.map((node3) => {
    if (node3.type === "image") {
      return { type: "paragraph", children: [node3] };
    } else {
      return node3;
    }
  });
}
var defaultOptions2 = {
  handlers: defaultMdast,
  hoistSingleImagesOutofParagraphs: true,
  listItemParagraphs: true,
  nestBlocks: true
};
function tokensToMyst(src, tokens, options = defaultOptions2) {
  var _a6;
  const opts = {
    ...defaultOptions2,
    ...options,
    handlers: { ...defaultOptions2.handlers, ...options === null || options === void 0 ? void 0 : options.handlers }
  };
  const state = new MarkdownParseState(src, opts.handlers);
  state.parseTokens(tokens);
  let tree;
  do {
    tree = state.closeNode();
  } while (state.stack.length);
  remove(tree, "_remove");
  liftChildren(tree, "_lift");
  selectAll("listItem[__taskList=true]", tree).forEach((node3) => {
    var _a7, _b, _c, _d2;
    delete node3.__taskList;
    const html7 = (_a7 = node3.children) === null || _a7 === void 0 ? void 0 : _a7.slice(0, 1);
    if (html7 && html7[0].type === "html" && ((_b = html7[0].value) === null || _b === void 0 ? void 0 : _b.includes("task-list-item-checkbox"))) {
      node3.checked = html7[0].value.includes('checked=""');
      (_c = node3.children) === null || _c === void 0 ? void 0 : _c.splice(0, 1);
      if (((_d2 = node3.children) === null || _d2 === void 0 ? void 0 : _d2[0].type) === "text") {
        node3.children[0].value = node3.children[0].value.replace(/^\s/, "");
      }
    }
  });
  if (opts.listItemParagraphs) {
    listItemParagraphsTransform(tree);
  }
  visit(tree, "crossReference", (node3) => {
    delete node3.children;
    if (node3.value) {
      setTextAsChild(node3, node3.value);
      delete node3.value;
    }
  });
  if (opts.nestBlocks) {
    const newTree = u2("root", []);
    let lastBlock;
    const pushBlock = () => {
      if (!lastBlock)
        return;
      newTree.children.push(lastBlock);
    };
    (_a6 = tree.children) === null || _a6 === void 0 ? void 0 : _a6.forEach((node3) => {
      var _a7, _b;
      if (node3.type === "blockBreak") {
        pushBlock();
        lastBlock = node3;
        node3.type = "block";
        node3.children = (_a7 = node3.children) !== null && _a7 !== void 0 ? _a7 : [];
        return;
      }
      const stack = lastBlock ? lastBlock : newTree;
      (_b = stack.children) === null || _b === void 0 ? void 0 : _b.push(node3);
    });
    pushBlock();
    tree = newTree;
  }
  if (opts.hoistSingleImagesOutofParagraphs) {
    hoistSingleImagesOutofParagraphs(tree);
  } else {
    nestSingleImagesIntoParagraphs(tree);
  }
  return tree;
}

// ../myst-parser/dist/utils.js
function contentFromNode(node3, spec, vfile2, description, ruleId) {
  const { children, value } = node3;
  if (spec.type === ParseTypesEnum.parsed || spec.type === "myst") {
    if (typeof value !== "string") {
      fileWarn(vfile2, `content is parsed from non-string value for ${description}`, {
        node: node3,
        ruleId
      });
    }
    if (!(children === null || children === void 0 ? void 0 : children.length)) {
      if (spec.required) {
        fileError(vfile2, `no parsed content for required ${description}`, { node: node3, ruleId });
      }
      return void 0;
    }
    return children;
  }
  if (value == null) {
    if (spec.required) {
      fileError(vfile2, `no content for required ${description}`, { node: node3, ruleId });
    }
    return void 0;
  }
  if (spec.type === ParseTypesEnum.string || spec.type === String) {
    if (value === true)
      return "";
    if (typeof value !== "string" && !(value && typeof value === "number" && !isNaN(value))) {
      fileWarn(vfile2, `value is not a string for ${description}`, { node: node3, ruleId });
    }
    return String(value);
  }
  if (spec.type === ParseTypesEnum.number || spec.type === Number) {
    const valueAsNumber = Number(value);
    if (value === true || isNaN(valueAsNumber)) {
      const fileFn = spec.required ? fileError : fileWarn;
      fileFn(vfile2, `number not provided for ${description}`, { node: node3, ruleId });
      return void 0;
    }
    return valueAsNumber;
  }
  if (spec.type === ParseTypesEnum.boolean || spec.type === Boolean) {
    if (typeof value === "string") {
      if (value.toLowerCase() === "false")
        return false;
      if (value.toLowerCase() === "true")
        return true;
    }
    if (typeof value !== "boolean") {
      fileWarn(vfile2, `value is not a boolean for ${description}`, { node: node3, ruleId });
    }
    return !!value;
  }
}

// ../myst-parser/dist/inlineAttributes.js
function parseOptions(name3, node3, vfile2, optionsSpec) {
  var _a6, _b;
  let validationError2 = false;
  const options = {};
  const optionNodes = (_b = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.filter((c) => c.type === "mystOption")) !== null && _b !== void 0 ? _b : [];
  const optionNodeLookup = {};
  optionNodes.forEach((optionNode) => {
    if (optionNode.name === "id" && optionNode.location === "inline") {
      optionNodeLookup.label = optionNode;
      return;
    }
    if (optionNode.name === "class") {
      if (optionNodeLookup.class) {
        optionNodeLookup.class.value += ` ${optionNode.value}`;
      } else {
        optionNodeLookup.class = optionNode;
      }
      return;
    }
    if (optionNodeLookup[optionNode.name]) {
      fileWarn(vfile2, `duplicate option "${optionNode.name}" declared (in ${name3})`, {
        node: optionNode,
        ruleId: RuleId.directiveOptionsCorrect
      });
    } else {
      optionNodeLookup[optionNode.name] = optionNode;
    }
  });
  Object.entries(optionsSpec || {}).forEach(([optionName, optionSpec]) => {
    var _a7;
    let optionNameUsed = optionName;
    let optionNode = optionNodeLookup[optionName];
    (_a7 = optionSpec.alias) === null || _a7 === void 0 ? void 0 : _a7.forEach((alias) => {
      const aliasNode = optionNodeLookup[alias];
      if (!aliasNode)
        return;
      if (!optionNode && aliasNode) {
        optionNode = aliasNode;
        optionNameUsed = alias;
        optionNodeLookup[optionName] = optionNode;
      } else {
        fileWarn(vfile2, `option "${optionNameUsed}" used instead of "${alias}" (in ${name3})`, {
          node: node3,
          ruleId: RuleId.directiveOptionsCorrect
        });
      }
      delete optionNodeLookup[alias];
    });
    if (optionSpec.required && !optionNode) {
      fileError(vfile2, `required option "${optionName}" not provided (in ${name3})`, {
        node: node3,
        ruleId: RuleId.directiveOptionsCorrect
      });
      node3.type = "mystDirectiveError";
      delete node3.children;
      validationError2 = true;
    } else if (optionNode) {
      const content3 = contentFromNode(optionNode, optionSpec, vfile2, `option "${optionName}" (in ${name3})`, RuleId.directiveOptionsCorrect);
      if (content3 != null) {
        options[optionName] = content3;
      } else if (optionSpec.required) {
        validationError2 = true;
      }
      delete optionNodeLookup[optionName];
    }
  });
  Object.values(optionNodeLookup).forEach((optionNode) => {
    fileWarn(vfile2, `unexpected option "${optionNode.name}" provided (in ${name3})`, {
      node: optionNode,
      ruleId: RuleId.directiveOptionsCorrect
    });
  });
  return { valid: validationError2, options: Object.keys(options).length ? options : void 0 };
}

// ../myst-parser/dist/directives.js
function applyDirectives(tree, specs, vfile2, ctx) {
  const specLookup = {};
  specs.forEach((spec) => {
    const names = [spec.name];
    if (spec.alias) {
      names.push(...typeof spec.alias === "string" ? [spec.alias] : spec.alias);
    }
    names.forEach((name3) => {
      if (specLookup[name3]) {
        fileWarn(vfile2, `duplicate directives registered with name: ${name3}`, {
          ruleId: RuleId.directiveRegistered
        });
      } else {
        specLookup[name3] = spec;
      }
    });
  });
  const nodes = selectAll("mystDirective[processed=false]", tree);
  nodes.forEach((node3) => {
    var _a6, _b;
    delete node3.processed;
    const { name: name3 } = node3;
    const spec = specLookup[name3];
    if (!spec) {
      fileError(vfile2, `unknown directive: ${name3}`, { node: node3, ruleId: RuleId.directiveKnown });
      delete node3.children;
      if (node3.options) {
        const optionsString = Object.entries(node3.options).map(([key2, val]) => {
          return `:${key2}: ${val}`;
        }).join("\n");
        const value = node3.value ? `

${node3.value}` : "";
        node3.value = `${optionsString}${value}`;
        delete node3.options;
      }
      return;
    }
    const { arg: argSpec, options: optionsSpec, body: bodySpec, validate: validate5, run } = spec;
    let data = { name: name3, node: node3, options: {} };
    let validationError2 = false;
    const argNode = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.filter((c) => c.type === "mystDirectiveArg")[0];
    if (argSpec) {
      if (argSpec.required && !argNode) {
        const message = `required argument not provided for directive: ${name3}`;
        fileError(vfile2, message, { node: node3, ruleId: RuleId.directiveArgumentCorrect });
        node3.type = "mystDirectiveError";
        node3.message = message;
        delete node3.children;
        validationError2 = true;
      } else if (argNode) {
        data.arg = contentFromNode(argNode, argSpec, vfile2, `argument of directive: ${name3}`, RuleId.directiveArgumentCorrect);
        if (argSpec.required && data.arg == null) {
          validationError2 = true;
        }
      }
    } else if (argNode) {
      const message = `unexpected argument provided for directive: ${name3}`;
      fileWarn(vfile2, message, { node: argNode, ruleId: RuleId.directiveArgumentCorrect });
    }
    const { valid: validOptions, options } = parseOptions(name3, node3, vfile2, optionsSpec);
    data.options = options;
    validationError2 = validationError2 || validOptions;
    const bodyNode = (_b = node3.children) === null || _b === void 0 ? void 0 : _b.filter((c) => c.type === "mystDirectiveBody")[0];
    if (bodySpec) {
      if (bodySpec.required && !bodyNode) {
        const message = `required body not provided for directive: ${name3}`;
        fileError(vfile2, message, { node: node3, ruleId: RuleId.directiveBodyCorrect });
        node3.type = "mystDirectiveError";
        node3.message = message;
        delete node3.children;
        validationError2 = true;
      } else if (bodyNode) {
        data.body = contentFromNode(bodyNode, bodySpec, vfile2, `body of directive: ${name3}`, RuleId.directiveBodyCorrect);
        if (bodySpec.required && data.body == null) {
          validationError2 = true;
        }
      }
    } else if (bodyNode) {
      fileWarn(vfile2, `unexpected body provided for directive: ${name3}`, {
        node: bodyNode,
        ruleId: RuleId.directiveBodyCorrect
      });
    }
    if (validationError2)
      return;
    if (validate5) {
      data = validate5(data, vfile2);
    }
    node3.children = run(data, vfile2, {
      // Implement a parseMyst function that accepts _relative_ line numbers
      parseMyst: (source2, offset = 0) => ctx.parseMyst(source2, offset + node3.position.start.line)
    });
  });
}

// ../myst-parser/dist/roles.js
function applyRoles(tree, specs, vfile2) {
  const specLookup = {};
  specs.forEach((spec) => {
    const names = [spec.name];
    if (spec.alias) {
      names.push(...typeof spec.alias === "string" ? [spec.alias] : spec.alias);
    }
    names.forEach((name3) => {
      if (specLookup[name3]) {
        fileWarn(vfile2, `duplicate roles registered with name: ${name3}`, {
          ruleId: RuleId.roleRegistered
        });
      } else {
        specLookup[name3] = spec;
      }
    });
  });
  const nodes = selectAll("mystRole[processed=false]", tree);
  nodes.forEach((node3) => {
    var _a6;
    delete node3.processed;
    const { name: name3 } = node3;
    const spec = specLookup[name3];
    if (!spec) {
      fileError(vfile2, `unknown role: ${name3}`, { node: node3, ruleId: RuleId.roleKnown });
      delete node3.children;
      return;
    }
    const { body: body3, options: optionsSpec, validate: validate5, run } = spec;
    let data = { name: name3, node: node3, options: {} };
    const { valid: validOptions, options } = parseOptions(name3, node3, vfile2, optionsSpec);
    let validationError2 = validOptions;
    data.options = options;
    node3.options = options;
    const bodyNode = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.find((n) => n.type === "mystRoleBody");
    if (body3) {
      if (body3.required && !bodyNode) {
        fileError(vfile2, `required body not provided for role: ${name3}`, {
          node: node3,
          ruleId: RuleId.roleBodyCorrect
        });
        node3.type = "mystRoleError";
        delete node3.children;
        validationError2 = true;
      } else {
        data.body = contentFromNode(bodyNode, body3, vfile2, `body of role: ${name3}`, RuleId.roleBodyCorrect);
        if (body3.required && data.body == null) {
          validationError2 = true;
        }
      }
    } else if (bodyNode) {
      fileWarn(vfile2, `unexpected body provided for role: ${name3}`, {
        node: bodyNode,
        ruleId: RuleId.roleBodyCorrect
      });
    }
    if (validationError2)
      return;
    if (validate5) {
      data = validate5(data, vfile2);
    }
    node3.children = run(data, vfile2);
  });
}

// ../myst-parser/dist/myst.js
var defaultOptions3 = {
  markdownit: {
    html: true
  },
  extensions: {
    smartquotes: true,
    colonFences: true,
    frontmatter: true,
    math: true,
    footnotes: true,
    citations: true,
    deflist: true,
    tasklist: true,
    tables: true,
    blocks: true,
    strikethrough: false
  },
  mdast: {},
  directives: defaultDirectives,
  roles: defaultRoles
};
function parseOptions2(opts) {
  var _a6, _b, _c;
  const parsedOpts = {
    vfile: (_a6 = opts === null || opts === void 0 ? void 0 : opts.vfile) !== null && _a6 !== void 0 ? _a6 : new VFile(),
    mdast: { ...defaultOptions3.mdast, ...opts === null || opts === void 0 ? void 0 : opts.mdast },
    markdownit: { ...defaultOptions3.markdownit, ...opts === null || opts === void 0 ? void 0 : opts.markdownit },
    extensions: { ...defaultOptions3.extensions, ...opts === null || opts === void 0 ? void 0 : opts.extensions },
    directives: [...defaultOptions3.directives, ...(_b = opts === null || opts === void 0 ? void 0 : opts.directives) !== null && _b !== void 0 ? _b : []],
    roles: [...defaultOptions3.roles, ...(_c = opts === null || opts === void 0 ? void 0 : opts.roles) !== null && _c !== void 0 ? _c : []]
  };
  return parsedOpts;
}
function createTokenizer(opts) {
  const parsedOpts = parseOptions2(opts);
  const { extensions, markdownit } = parsedOpts;
  const tokenizer = (0, import_markdown_it.default)({
    ...MARKDOWN_IT_CONFIG,
    options: {
      ...MARKDOWN_IT_CONFIG.options,
      typographer: extensions.smartquotes ? true : false
    }
  }, markdownit);
  if (markdownit.linkify) {
    tokenizer.linkify.tlds(tlds.filter((tld) => !EXCLUDE_TLDS.includes(tld)));
  }
  if (extensions.strikethrough)
    tokenizer.enable("strikethrough");
  if (extensions.smartquotes)
    tokenizer.enable("smartquotes");
  if (extensions.tables)
    tokenizer.enable("table");
  if (extensions.colonFences)
    tokenizer.use(colonFencePlugin);
  if (extensions.frontmatter)
    tokenizer.use(import_markdown_it_front_matter.default, () => ({})).use(convertFrontMatter);
  if (extensions.blocks)
    tokenizer.use(mystBlockPlugin);
  if (extensions.footnotes)
    tokenizer.use(footnote_plugin).disable("footnote_inline");
  if (extensions.citations)
    tokenizer.use(citationsPlugin);
  tokenizer.use(mystPlugin);
  if (extensions.math)
    tokenizer.use(plugin, extensions.math);
  if (extensions.deflist)
    tokenizer.use(import_markdown_it_deflist.default);
  if (extensions.tasklist)
    tokenizer.use(import_markdown_it_task_lists.default);
  return tokenizer;
}
function mystParse(content3, opts) {
  const { vfile: vfile2 } = opts || {};
  const parsedOpts = parseOptions2(opts);
  const tokenizer = createTokenizer(parsedOpts);
  const tree = tokensToMyst(content3, tokenizer.parse(content3, { vfile: vfile2 }), parsedOpts.mdast);
  applyDirectives(tree, parsedOpts.directives, parsedOpts.vfile, {
    parseMyst: (source2, offset = 0) => {
      const mdast2 = mystParse(source2, opts);
      visit(mdast2, (node3) => {
        if (node3.position) {
          node3.position.start.line += offset;
          node3.position.end.line += offset;
        }
      });
      return mdast2;
    }
  });
  applyRoles(tree, parsedOpts.roles, parsedOpts.vfile);
  return tree;
}

// ../myst-ext-button/dist/index.js
var REF_PATTERN6 = /^(.+?)<([^<>]+)>$/;
var buttonRole = {
  name: "button",
  doc: "Button element with an action to navigate to internal or external links.",
  body: {
    type: String,
    doc: "The body of the button.",
    required: true
  },
  run(data) {
    const body3 = data.body;
    const match3 = REF_PATTERN6.exec(body3);
    const [, modified, rawLabel] = match3 !== null && match3 !== void 0 ? match3 : [];
    const url = rawLabel !== null && rawLabel !== void 0 ? rawLabel : body3;
    const node3 = {
      type: "link",
      url,
      children: [],
      class: "button"
      // TODO: allow users to extend this
    };
    if (modified)
      node3.children = [{ type: "text", value: modified.trim() }];
    return [node3];
  }
};

// ../myst-ext-card/dist/index.js
var HEADER_REGEX = /((?<before>[\s\S]*?)\s+){0,1}\^\^\^(\s+(?<after>[\s\S]*)){0,1}/;
var cardDirective = {
  name: "card",
  alias: ["grid-item-card"],
  arg: {
    type: "myst",
    doc: "The title of the card, usually shown as bolded text at the top of the card."
  },
  options: {
    url: {
      type: String,
      alias: ["link"],
      doc: "Turns the card into a link, can be internal or external."
    },
    header: {
      type: "myst",
      doc: "Adds a header to the card."
    },
    footer: {
      type: "myst",
      doc: "Adds a footer to the card."
    }
    // // https://sphinx-design.readthedocs.io/en/furo-theme/cards.html#card-options
    // width
    // margin
    // padding
    // 'text-align'
    // 'img-top'
    // 'img-background'
    // 'img-bottom'
    // link
    // // This should be removed, it is picked up just as any other link that can also be a reference
    // 'link-type'
    // 'link-alt'
    // // This should just be a class that is recognized (similar to dropdown)
    // shadow
    // 'class-card'
    // // I feel like all of these should *not* be included.
    // // Instead us a css selector on `class`: for example, `.card.my-class > header { customCss: prop; }`
    // 'class-header'
    // 'class-body'
    // 'class-title'
    // 'class-footer'
    // 'class-img-top'
    // 'class-img-bottom'
    // // https://sphinx-design.readthedocs.io/en/furo-theme/grids.html#grid-item-card-options
    // columns
    // 'class-item' // This seems the same as `class-card`?
  },
  body: {
    type: "myst",
    required: true,
    doc: "Main body content of the card."
  },
  run(data) {
    const { url, header, footer: footer2 } = data.options || {};
    let headerChildren;
    let bodyChildren;
    let footerChildren;
    if (header || footer2) {
      headerChildren = header ? [{ type: "paragraph", children: header }] : [];
      bodyChildren = data.body;
      footerChildren = footer2 ? [{ type: "paragraph", children: footer2 }] : [];
    } else {
      const [beforeHeaderDelim, afterHeaderDelim] = splitChildrenOnDelim(data.body);
      headerChildren = afterHeaderDelim.length ? beforeHeaderDelim : [];
      const nonHeaderChildren = afterHeaderDelim.length ? afterHeaderDelim : beforeHeaderDelim;
      [bodyChildren, footerChildren] = splitChildrenOnBlockBreak(nonHeaderChildren);
    }
    const children = [];
    if (headerChildren.length) {
      children.push({
        type: "header",
        children: headerChildren
      });
    }
    if (data.arg) {
      children.push({
        type: "cardTitle",
        children: data.arg
      });
    }
    children.push(...bodyChildren);
    if (footerChildren.length) {
      children.push({
        type: "footer",
        children: footerChildren
      });
    }
    return [
      {
        type: "card",
        url,
        children
      }
    ];
  }
};
function splitParagraphNode(node3) {
  var _a6;
  const preChildren = [];
  const postChildren = [];
  let post = false;
  (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.forEach((child) => {
    var _a7;
    if (post) {
      postChildren.push(child);
      return;
    }
    if (child.type !== "text" || !child.value) {
      preChildren.push(child);
      return;
    }
    const value = child.value;
    const match3 = HEADER_REGEX.exec(value);
    if (!match3) {
      preChildren.push(child);
      return;
    }
    post = true;
    const { before, after } = (_a7 = match3.groups) !== null && _a7 !== void 0 ? _a7 : {};
    if (before) {
      preChildren.push({ type: "text", value: before });
    }
    if (after) {
      postChildren.push({ type: "text", value: after });
    }
  });
  const output2 = {
    before: preChildren.length ? { ...node3, children: preChildren } : null,
    after: postChildren.length ? { ...node3, children: postChildren } : null,
    post
  };
  return output2;
}
function splitChildrenOnDelim(children) {
  const preChildren = [];
  const postChildren = [];
  let post = false;
  children.forEach((child) => {
    if (post) {
      postChildren.push(child);
    } else if (child.type !== "paragraph") {
      preChildren.push(child);
    } else {
      const split2 = splitParagraphNode(child);
      const { before, after } = split2;
      post = split2.post;
      if (before) {
        preChildren.push(before);
      }
      if (after) {
        postChildren.push(after);
      }
    }
  });
  return [preChildren, postChildren];
}
function splitChildrenOnBlockBreak(children) {
  const preChildren = [];
  const postChildren = [];
  let post = false;
  children.forEach((child) => {
    if (post) {
      postChildren.push(child);
    } else if (child.type !== "blockBreak") {
      preChildren.push(child);
    } else {
      post = true;
    }
  });
  return [preChildren, postChildren];
}

// ../myst-ext-grid/dist/index.js
function getColumns(columnString) {
  const columns = (columnString !== null && columnString !== void 0 ? columnString : "1 2 2 3").split(/\s/).map((s5) => Number(s5.trim())).filter((n) => !Number.isNaN(n)).map((n) => Math.min(Math.max(Math.floor(n), 1), 12));
  if (columns.length === 0 || columns.length > 4)
    return [1, 2, 2, 3];
  return columns;
}
var gridDirective = {
  name: "grid",
  arg: {
    type: String
  },
  // options:
  // // https://sphinx-design.readthedocs.io/en/furo-theme/grids.html#grid-options
  // 'class-container'
  // 'class-row'
  // gutter
  // margin
  // padding
  // reverse
  // outline
  options: {
    ...commonDirectiveOptions("grid")
  },
  body: {
    type: "myst",
    required: true
  },
  run(data) {
    const grid = {
      type: "grid",
      columns: getColumns(data.arg),
      children: data.body
    };
    addCommonDirectiveOptions(data, grid);
    return [grid];
  }
};
var gridItemDirective = {
  name: "grid-item",
  options: {
    label: {
      type: String,
      alias: ["name"]
    },
    class: {
      type: String
    }
  },
  body: {
    type: "myst",
    required: true
  },
  run(data) {
    var _a6, _b;
    const { label, identifier } = normalizeLabel((_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.label) || {};
    const div2 = {
      type: "div",
      children: data.body,
      class: (_b = data.options) === null || _b === void 0 ? void 0 : _b.class,
      label,
      identifier
    };
    return [div2];
  }
};
var gridDirectives = [gridDirective, gridItemDirective];

// ../myst-ext-proof/dist/proof.js
var proofDirective = {
  name: "proof",
  alias: [
    "prf:proof",
    "prf:theorem",
    "prf:axiom",
    "prf:lemma",
    "prf:definition",
    "prf:criterion",
    "prf:remark",
    "prf:conjecture",
    "prf:corollary",
    "prf:algorithm",
    "prf:example",
    "prf:property",
    "prf:observation",
    "prf:proposition",
    "prf:assumption"
  ],
  arg: {
    type: "myst"
  },
  options: {
    ...commonDirectiveOptions("proof"),
    nonumber: {
      type: Boolean,
      doc: "Legacy flag to disable numbering of proofs; equivalent to `enumerated: false`"
    }
  },
  body: {
    type: "myst",
    required: true
  },
  run(data) {
    var _a6, _b, _c;
    const children = [];
    if (data.arg) {
      children.push({
        type: "admonitionTitle",
        children: data.arg
      });
    }
    if (data.body) {
      children.push(...data.body);
    }
    let enumerated;
    if (((_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.nonumber) !== void 0) {
      enumerated = !data.options.nonumber;
    } else {
      enumerated = (_c = (_b = data.options) === null || _b === void 0 ? void 0 : _b.enumerated) !== null && _c !== void 0 ? _c : true;
    }
    const proof2 = {
      type: "proof",
      kind: data.name !== "proof" ? data.name.replace("prf:", "") : void 0,
      enumerated,
      children
    };
    addCommonDirectiveOptions(data, proof2);
    return [proof2];
  }
};

// ../myst-ext-exercise/dist/exercise.js
var exerciseDirective = {
  name: "exercise",
  alias: ["exercise-start"],
  arg: {
    type: "myst"
  },
  options: {
    ...commonDirectiveOptions("exercise"),
    nonumber: {
      type: Boolean,
      doc: "Legacy flag to disable numbering of exercises; equivalent to `enumerated: false`"
    },
    hidden: {
      type: Boolean
    }
  },
  body: {
    type: "myst"
  },
  run(data) {
    var _a6, _b, _c, _d2, _e;
    const children = [];
    if (data.arg) {
      children.push({
        type: "admonitionTitle",
        children: data.arg
      });
    }
    if (data.body) {
      children.push(...data.body);
    }
    const exercise = {
      type: "exercise",
      hidden: (_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.hidden,
      children
    };
    addCommonDirectiveOptions(data, exercise);
    if (((_b = data.options) === null || _b === void 0 ? void 0 : _b.nonumber) !== void 0) {
      exercise.enumerated = !data.options.nonumber;
    } else {
      exercise.enumerated = (_d2 = (_c = data.options) === null || _c === void 0 ? void 0 : _c.enumerated) !== null && _d2 !== void 0 ? _d2 : true;
    }
    const backupLabel = exercise.enumerated ? `exercise-${createId()}` : void 0;
    const rawLabel = ((_e = data.options) === null || _e === void 0 ? void 0 : _e.label) || backupLabel;
    const { label, identifier } = normalizeLabel(rawLabel) || {};
    exercise.label = label;
    exercise.identifier = identifier;
    if (data.name.endsWith("-start")) {
      exercise.gate = "start";
    }
    return [exercise];
  }
};
var solutionDirective = {
  name: "solution",
  alias: ["solution-start"],
  arg: {
    type: String,
    required: true
  },
  options: {
    ...commonDirectiveOptions("solution"),
    hidden: {
      type: Boolean
    }
  },
  body: {
    type: "myst"
  },
  run(data) {
    var _a6;
    const children = [];
    if (data.arg) {
      const { label, identifier } = normalizeLabel(data.arg) || {};
      children.push({
        type: "admonitionTitle",
        children: [
          { type: "text", value: "Solution to " },
          { type: "crossReference", label, identifier }
        ]
      });
    }
    if (data.body) {
      children.push(...data.body);
    }
    const solution = {
      type: "solution",
      hidden: (_a6 = data.options) === null || _a6 === void 0 ? void 0 : _a6.hidden,
      children
    };
    addCommonDirectiveOptions(data, solution);
    if (data.name.endsWith("-start")) {
      solution.gate = "start";
    }
    return [solution];
  }
};
var solutionEndDirective = {
  name: "solution-end",
  run: () => [{ type: "solution", gate: "end" }]
};
var exerciseEndDirective = {
  name: "exercise-end",
  run: () => [{ type: "exercise", gate: "end" }]
};
var exerciseDirectives = [
  exerciseDirective,
  exerciseEndDirective,
  solutionDirective,
  solutionEndDirective
];

// ../myst-ext-tabs/dist/index.js
var tabSetDirective = {
  name: "tab-set",
  alias: ["tabSet"],
  options: {
    ...commonDirectiveOptions("tab-set")
  },
  body: {
    type: "myst"
  },
  run(data) {
    const tabSet2 = {
      type: "tabSet",
      children: data.body || []
    };
    addCommonDirectiveOptions(data, tabSet2);
    return [tabSet2];
  }
};
var tabItemDirective = {
  name: "tab-item",
  alias: ["tabItem", "tab"],
  // TODO: A transform is necessary for stray `tab`s
  arg: {
    type: String
  },
  options: {
    ...commonDirectiveOptions("tab-item"),
    sync: {
      type: String
    },
    selected: {
      type: Boolean
    }
  },
  body: {
    type: "myst"
  },
  run(data) {
    var _a6, _b, _c;
    const tabItem3 = {
      type: "tabItem",
      title: (_a6 = data.arg) !== null && _a6 !== void 0 ? _a6 : "Tab Title",
      sync: (_b = data.options) === null || _b === void 0 ? void 0 : _b.sync,
      selected: (_c = data.options) === null || _c === void 0 ? void 0 : _c.selected,
      children: data.body || []
    };
    addCommonDirectiveOptions(data, tabItem3);
    return [tabItem3];
  }
};
var tabDirectives = [tabSetDirective, tabItemDirective];

// ../myst-cli/dist/process/myst.js
function getMystParserOptions(session, opts) {
  var _a6, _b, _c, _d2;
  return {
    markdownit: { linkify: true },
    directives: [
      cardDirective,
      ...gridDirectives,
      proofDirective,
      ...exerciseDirectives,
      ...tabDirectives,
      ...(_b = (_a6 = session.plugins) === null || _a6 === void 0 ? void 0 : _a6.directives) !== null && _b !== void 0 ? _b : []
    ],
    extensions: {
      frontmatter: !(opts === null || opts === void 0 ? void 0 : opts.ignoreFrontmatter)
    },
    roles: [buttonRole, ...(_d2 = (_c = session.plugins) === null || _c === void 0 ? void 0 : _c.roles) !== null && _d2 !== void 0 ? _d2 : []]
  };
}
function parseMyst(session, content3, file, opts) {
  const vfile2 = new VFile();
  vfile2.path = file;
  const parserOptions = getMystParserOptions(session, opts);
  const parsed = mystParse(content3, { ...parserOptions, vfile: vfile2 });
  logMessagesFromVFile(session, vfile2);
  return parsed;
}

// ../../node_modules/nbtx/dist/minify/utils.js
var MAX_CHARS = 25e3;
var TRUNCATED_CHARS_COUNT = 64;
function DEFAULT_HASH_WARNING(content3) {
  console.warn('nbtx is not using a hashing library to create the hash.\nThe IDs generated are random, please provide a `computeHash` function, for example using "crypto".\nSee nbtx README for more information.');
  return `not-a-hash-${Math.random().toString(36).slice(2)}${Math.random().toString(36).slice(2)}`;
}
function isNotNull(arg2) {
  return arg2 != null;
}
function walkOutputs(outputs, func) {
  outputs.forEach((output2) => {
    if ("data" in output2 && output2.data) {
      Object.entries(output2.data).forEach(([, bundle]) => {
        func(bundle);
      });
    } else {
      func(output2);
    }
  });
}
function ensureString(maybeString, joinWith = "") {
  if (!maybeString)
    return "";
  if (typeof maybeString === "string")
    return maybeString;
  if (maybeString.join)
    return maybeString.join(joinWith);
  return maybeString;
}

// ../../node_modules/nbtx/dist/minify/mime.js
function minifyContent(content3, contentType, isBase64Image, outputCache, opts) {
  if (content3.length === 0 || !isBase64Image && content3.length <= opts.maxCharacters) {
    return { content: content3, content_type: contentType };
  }
  let hash;
  if (isBase64Image) {
    const [data] = content3.split(";base64,").reverse();
    hash = opts.computeHash(data);
    outputCache[hash] = [data, { contentType, encoding: "base64" }];
  } else {
    hash = opts.computeHash(content3);
    outputCache[hash] = [content3, { contentType, encoding: "utf8" }];
  }
  return {
    content_type: contentType,
    hash
  };
}
async function minifyMimeOutput(output2, outputCache, opts) {
  const items = await Promise.all(Object.entries(output2.data).map(async ([mimetype, mimeContent]) => {
    let isBase64Image = false;
    let stringContent = "";
    if (mimetype !== "application/javascript" && (mimetype === "application/json" || mimetype.startsWith("application/") && typeof mimeContent === "object")) {
      stringContent = JSON.stringify(mimeContent);
    } else {
      stringContent = ensureString(mimeContent);
    }
    if (!mimetype.startsWith("image/svg") && mimetype.startsWith("image/")) {
      isBase64Image = true;
    }
    return minifyContent(stringContent, mimetype, isBase64Image, outputCache, opts);
  }));
  const data = items.reduce((bundle, item) => ({ ...bundle, [item.content_type]: item }), {});
  return {
    output_type: output2.output_type,
    execution_count: output2.execution_count,
    metadata: output2.metadata,
    data
  };
}

// ../../node_modules/nbtx/dist/minify/text.js
function ensureStringEnsureNewlines(maybeString) {
  return typeof maybeString === "string" ? maybeString : maybeString === null || maybeString === void 0 ? void 0 : maybeString.join("\n");
}
async function minifyStringOutput(output2, fieldName, outputCache, opts) {
  if (!output2[fieldName]) {
    throw Error(`Bad Field name ${fieldName} for output type ${output2.output_type}`);
  }
  const text7 = opts.ensureNewlines ? ensureStringEnsureNewlines(output2[fieldName]) : ensureString(output2[fieldName]);
  if (text7 && text7.length <= opts.maxCharacters) {
    return { ...output2, [fieldName]: text7 };
  }
  const hash = opts.computeHash(text7);
  outputCache[hash] = [text7, { contentType: "text/plain", encoding: "utf8" }];
  return {
    ...output2,
    hash,
    [fieldName]: `${text7.slice(0, opts.truncateTo - 3)}...`
  };
}
var minifyStreamOutput = async (output2, outputCache, opts) => minifyStringOutput(output2, "text", outputCache, opts);
var minifyErrorOutput = async (output2, outputCache, opts) => minifyStringOutput(output2, "traceback", outputCache, {
  ensureNewlines: true,
  ...opts
});

// ../../node_modules/nbtx/dist/minify/minify.js
async function minifyOneOutputItem(output2, outputCache, opts) {
  if (!("output_type" in output2))
    return null;
  switch (output2.output_type) {
    case "stream":
      return minifyStreamOutput(output2, outputCache, opts);
    case "error":
      return minifyErrorOutput(output2, outputCache, opts);
    case "update_display_data":
    case "display_data":
    case "execute_result":
      return minifyMimeOutput(output2, outputCache, opts);
    default:
      return null;
  }
}
async function minifyCellOutput(outputs, outputCache, opts = {}) {
  var _a6, _b, _c;
  const options = {
    maxCharacters: (_a6 = opts.maxCharacters) !== null && _a6 !== void 0 ? _a6 : MAX_CHARS,
    truncateTo: (_b = opts.truncateTo) !== null && _b !== void 0 ? _b : TRUNCATED_CHARS_COUNT,
    computeHash: (_c = opts.computeHash) !== null && _c !== void 0 ? _c : DEFAULT_HASH_WARNING
  };
  const minifiedOrNull = await Promise.all(outputs.map(async (output2) => minifyOneOutputItem(output2, outputCache, options)));
  return minifiedOrNull.filter(isNotNull);
}

// ../../node_modules/nbtx/dist/types.js
var KnownCellOutputMimeTypes;
(function(KnownCellOutputMimeTypes2) {
  KnownCellOutputMimeTypes2["TextPlain"] = "text/plain";
  KnownCellOutputMimeTypes2["TextHtml"] = "text/html";
  KnownCellOutputMimeTypes2["TextLatex"] = "text/latex";
  KnownCellOutputMimeTypes2["ImagePng"] = "image/png";
  KnownCellOutputMimeTypes2["ImageBmp"] = "image/bmp";
  KnownCellOutputMimeTypes2["ImageJpeg"] = "image/jpeg";
  KnownCellOutputMimeTypes2["ImageSvg"] = "image/svg+xml";
  KnownCellOutputMimeTypes2["ImageGif"] = "image/gif";
  KnownCellOutputMimeTypes2["AppJson"] = "application/json";
  KnownCellOutputMimeTypes2["AppGeoJson"] = "application/geo+json";
  KnownCellOutputMimeTypes2["AppPlotly"] = "application/vnd.plotly.v1+json";
  KnownCellOutputMimeTypes2["AppVega"] = "application/vnd.vega.v5+json";
  KnownCellOutputMimeTypes2["AppVegaLite"] = "application/vnd.vegalite.v3+json";
  KnownCellOutputMimeTypes2["AppVirtualDom"] = "application/vdom.v1+json";
  KnownCellOutputMimeTypes2["AppJavascript"] = "application/javascript";
  KnownCellOutputMimeTypes2["AppWidgetView"] = "application/vnd.jupyter.widget-view+json";
  KnownCellOutputMimeTypes2["AppWidgetState"] = "application/vnd.jupyter.widget-state+json";
  KnownCellOutputMimeTypes2["AppBokehLoad"] = "application/vnd.bokehjs_load.v0+json";
  KnownCellOutputMimeTypes2["AppBokehExec"] = "application/vnd.bokehjs_exec.v0+json";
})(KnownCellOutputMimeTypes || (KnownCellOutputMimeTypes = {}));
var CELL_TYPES;
(function(CELL_TYPES2) {
  CELL_TYPES2["raw"] = "raw";
  CELL_TYPES2["markdown"] = "markdown";
  CELL_TYPES2["code"] = "code";
})(CELL_TYPES || (CELL_TYPES = {}));

// ../../node_modules/nbtx/dist/utils.js
function extFromMimeType(mimeType) {
  if (mimeType === KnownCellOutputMimeTypes.TextHtml)
    return ".html";
  if (mimeType === KnownCellOutputMimeTypes.TextLatex)
    return ".tex";
  if (mimeType.startsWith("text/"))
    return ".txt";
  if (mimeType.startsWith("image/")) {
    const suffix = mimeType.split("/")[1];
    const ext2 = suffix.split("+")[0];
    return `.${ext2}`;
  }
  return ".json";
}

// ../myst-cli/dist/transforms/images.js
var import_node_fs12 = __toESM(require("fs"), 1);
var import_mime_types = __toESM(require_mime_types(), 1);
var import_node_path17 = __toESM(require("path"), 1);

// ../myst-cli/dist/version.js
var version2 = "1.6.5";
var version_default2 = version2;

// ../myst-cli/dist/utils/headers.js
var USER_AGENT = `myst-cli/${version_default2}`;
var EXT_REQUEST_HEADERS = {
  "User-Agent": USER_AGENT
};

// ../myst-cli/dist/utils/check.js
var import_check_node_version = __toESM(require_check_node_version(), 1);

// ../myst-cli/dist/docs.js
var docLinks = {
  installNode: "https://nodejs.org/en/download/",
  installLatex: "https://mystmd.org/guide/creating-pdf-documents#install-latex"
};

// ../myst-cli/dist/utils/check.js
var INSTALL_NODE_MESSAGE = `
You can download Node here:

${source_default.bold("https://nodejs.org/en/download/")}

Upgrade your Node Package Manager (npm) using:

${source_default.bold("npm install -g npm@latest")}

Additional Documentation:

${source_default.bold.blue(docLinks.installNode)}
`;
async function getNodeVersion(session) {
  const result = new Promise((resolve9) => {
    (0, import_check_node_version.default)({ node: ">= 18.0.0", npm: ">=8.6.0" }, (error, results) => {
      if (error) {
        session.log.error(error);
        resolve9(null);
        return;
      }
      resolve9(results);
    });
  });
  return result;
}
function logVersions(session, result, debug = true) {
  var _a6;
  const versions = [];
  Object.entries((_a6 = result === null || result === void 0 ? void 0 : result.versions) !== null && _a6 !== void 0 ? _a6 : {}).forEach(([name3, p5]) => {
    var _a7;
    versions.push([
      p5.isSatisfied,
      name3,
      p5.version ? `${p5.version}` : "Package Not Found",
      `Required: ${((_a7 = p5.wanted) === null || _a7 === void 0 ? void 0 : _a7.raw) || ""}`
    ]);
  });
  versions.push([void 0, "myst", version_default2]);
  const versionString = versions.map(([good, n, v, r2]) => {
    var _a7;
    return source_default[good === true ? "green" : good === false ? "red" : "dim"](`
 - ${n.padEnd(25, " ")}${v.padStart(10, " ").padEnd(15, " ")}${(_a7 = r2 === null || r2 === void 0 ? void 0 : r2.padEnd(25)) !== null && _a7 !== void 0 ? _a7 : ""}`);
  }).join("");
  session.log[debug ? "debug" : "info"](`

Myst CLI Versions:${versionString}

`);
}
async function checkNodeVersion(session) {
  const result = await getNodeVersion(session);
  if (!result)
    return false;
  if (result.isSatisfied)
    return true;
  logVersions(session, result, false);
  session.log.error("Please update your Node or NPM versions.\n");
  session.log.info(INSTALL_NODE_MESSAGE);
  return false;
}

// ../myst-cli/dist/utils/createTempFolder.js
var import_node_fs5 = __toESM(require("fs"), 1);
var import_node_path9 = __toESM(require("path"), 1);
var import_os = __toESM(require("os"), 1);
function createTempFolder(session) {
  if (!session)
    return import_node_fs5.default.mkdtempSync(import_node_path9.default.join(import_os.default.tmpdir(), "myst"));
  const tempLocation = import_node_path9.default.join(session.buildPath(), "temp");
  import_node_fs5.default.mkdirSync(tempLocation, { recursive: true });
  return import_node_fs5.default.mkdtempSync(import_node_path9.default.join(tempLocation, "myst"));
}

// ../myst-cli/dist/utils/defined.js
function defined2(value) {
  return value !== void 0;
}
function notNullish(value) {
  return value !== void 0 && value !== null;
}

// ../myst-cli/dist/utils/fileInfo.js
var import_node_path10 = __toESM(require("path"), 1);
function input2name(input3, allowed, join19) {
  let name3 = `\xB6${input3}`.toLowerCase().split("").map((char) => allowed.test(char) ? char : "\xB6").join("").split("").reduce((p5, n) => p5.charAt(p5.length - 1) === "\xB6" && n === "\xB6" ? p5 : p5 + n).slice(1).replace(/¶/g, join19);
  if (join19) {
    name3 = name3.replace(new RegExp(`${join19}+`, "g"), join19);
  }
  if (name3.charAt(0) === join19)
    name3 = name3.slice(1);
  if (name3.charAt(name3.length - 1) === join19)
    name3 = name3.slice(0, name3.length - 1);
  return name3;
}
var title2name = (title) => input2name(title.replace(/&/g, "\xB6and\xB6"), /^[a-z0-9-]/, "-").slice(0, 50);
function removeLeadingEnumeration(s5) {
  if (s5.match(/^([12][0-9]{3})([^0-9])?/)) {
    return s5;
  }
  if (s5.match(/^([0-9]{5})/)) {
    return s5;
  }
  const removed = s5.replace(/^([0-9_.-]+)/, "");
  if (!removed)
    return s5;
  return removed;
}
function createSlug(s5) {
  return title2name(removeLeadingEnumeration(s5));
}
function createTitle(s5) {
  return removeLeadingEnumeration(s5).split(/([A-Z][a-z0-9]+)|_|-/).filter((e2) => e2).join(" ").trim().replace(/\w\S*/g, (w) => w.replace(/^\w/, (c) => c.toUpperCase()));
}
function fileTitle(file) {
  const { name: name3 } = parseFilePath(file);
  return createTitle(name3);
}
function fileInfo2(file, pageSlugs, opts) {
  var _a6;
  const { name: name3, dir } = parseFilePath(file);
  let slug = createSlug(name3);
  if ((opts === null || opts === void 0 ? void 0 : opts.urlFolders) && (opts === null || opts === void 0 ? void 0 : opts.projectPath)) {
    const slugFolders = import_node_path10.default.relative(opts.projectPath, dir).split(import_node_path10.default.sep).filter((folder) => folder !== "");
    if (slugFolders.includes("..")) {
      (_a6 = opts.session) === null || _a6 === void 0 ? void 0 : _a6.log.warn(`URL path will not match folder structure for file outside project: ${file}`);
    } else {
      slug = [...slugFolders.map((folder) => createSlug(folder)), slug].join(".");
    }
  }
  const folderIndexSlug = slug.endsWith(".index");
  const slugKey = folderIndexSlug ? slug.slice(0, -6) : slug;
  if (pageSlugs[slugKey]) {
    pageSlugs[slugKey] += 1;
    slug = `${slugKey}-${pageSlugs[slugKey] - 1}${folderIndexSlug ? ".index" : ""}`;
  } else {
    pageSlugs[slugKey] = 1;
  }
  const title = fileTitle(file);
  return { slug, title };
}

// ../myst-cli/dist/utils/getAllBibtexFiles.js
var import_node_fs6 = __toESM(require("fs"), 1);
var import_node_path11 = __toESM(require("path"), 1);

// ../myst-cli/dist/utils/shouldIgnoreFile.js
function shouldIgnoreFile(session, file) {
  const ignore3 = ["node_modules", "_build"];
  return file.startsWith(".") || ignore3.includes(file);
}

// ../myst-cli/dist/utils/getAllBibtexFiles.js
function getAllBibTexFilesOnPath(session, dir, ignore3) {
  let bibFiles = [];
  const content3 = import_node_fs6.default.readdirSync(dir);
  content3.map((file) => import_node_path11.default.join(dir, file)).filter((file) => {
    const isDir = isDirectory(file);
    if (ignore3 === null || ignore3 === void 0 ? void 0 : ignore3.includes(file))
      return false;
    if (!isDir && import_node_path11.default.extname(file) === ".bib") {
      bibFiles.push(file);
    }
    if (shouldIgnoreFile(session, import_node_path11.default.basename(file))) {
      return false;
    }
    return isDir;
  }).forEach((subdir) => {
    bibFiles = bibFiles.concat(getAllBibTexFilesOnPath(session, subdir, ignore3));
  });
  return bibFiles;
}

// ../myst-cli/dist/utils/nextLevel.js
function nextLevel(level) {
  return level < 5 ? level + 1 : 6;
}

// ../myst-cli/dist/utils/resolveFrontmatterParts.js
function resolveFrontmatterParts(session, pageFrontmatter) {
  const { parts } = pageFrontmatter !== null && pageFrontmatter !== void 0 ? pageFrontmatter : {};
  if (!parts || Object.keys(parts).length === 0)
    return void 0;
  const partsMdast = {};
  Object.entries(parts).forEach(([part, content3]) => {
    var _a6, _b;
    if (content3.length !== 1)
      return;
    const { mdast: mdast2, frontmatter } = (_b = (_a6 = castSession(session).$getMdast(content3[0])) === null || _a6 === void 0 ? void 0 : _a6.post) !== null && _b !== void 0 ? _b : {};
    if (mdast2)
      partsMdast[part] = { mdast: mdast2, frontmatter };
  });
  return partsMdast;
}

// ../myst-cli/dist/utils/toc.js
var import_node_fs7 = __toESM(require("fs"), 1);
var import_node_path12 = require("path");
var TOC_FORMAT = "jb-book";
var TOC_FORMAT_ARTICLE = "jb-article";
var tocFile = (filename) => {
  if ((0, import_node_path12.extname)(filename) === ".yml")
    return filename;
  return (0, import_node_path12.join)(filename, "_toc.yml");
};
function upgradeOldSphinxTOC(oldTOC) {
  const [root6, ...parts] = oldTOC;
  const toc = {
    root: root6.file,
    format: TOC_FORMAT,
    parts: parts.map(({ part, chapters }) => ({
      caption: part,
      chapters
    }))
  };
  return toc;
}
function readSphinxTOC(log, opts) {
  const filename = (0, import_node_path12.join)((opts === null || opts === void 0 ? void 0 : opts.path) || ".", (opts === null || opts === void 0 ? void 0 : opts.filename) || "_toc.yml");
  const toc = js_yaml_default.load(import_node_fs7.default.readFileSync(filename).toString());
  if (Array.isArray(toc)) {
    try {
      const old = upgradeOldSphinxTOC(toc);
      log.warn(`${filename} is out of date: see https://executablebooks.org/en/latest/blog/2021-06-18-update-toc`);
      return old;
    } catch (error) {
      throw new Error(`Could not upgrade toc, please see: https://executablebooks.org/en/latest/blog/2021-06-18-update-toc`);
    }
  }
  const { format, root: root6, sections, chapters, parts } = toc;
  if (![TOC_FORMAT, TOC_FORMAT_ARTICLE].includes(format))
    throw new Error(`The toc.format must be ${TOC_FORMAT} or ${TOC_FORMAT_ARTICLE}`);
  if (!root6)
    throw new Error(`The toc.root must exist`);
  if (+!!sections + +!!chapters + +!!parts !== 1) {
    throw new Error(`The toc must have one and only one sections, chapters, or parts`);
  }
  log.debug("Basic validation of TOC passed");
  return toc;
}
function validateSphinxTOC(session, path45) {
  const filename = tocFile(path45);
  const { dir, base: base5 } = (0, import_node_path12.parse)(filename);
  if (!import_node_fs7.default.existsSync(filename))
    return false;
  try {
    readSphinxTOC(silentLogger(), { filename: base5, path: dir });
    return true;
  } catch (error) {
    const { message } = error;
    addWarningForFile(session, filename, `Table of Contents (ToC) file did not pass validation:
 - ${message}
 - An implicit ToC will be used instead
`, "error", { ruleId: RuleId.validTOCStructure });
    return false;
  }
}

// ../myst-cli/dist/utils/uniqueArray.js
function uniqueArray(array, transform3) {
  if (transform3) {
    const transformedArray = array.map(transform3);
    return array.filter((v, i2) => transformedArray.indexOf(transform3(v)) === i2);
  }
  return array.filter((v, i2) => array.indexOf(v) === i2);
}

// ../myst-cli/dist/utils/github.js
async function getGithubUrl() {
  try {
    const gitUrl = await makeExecutable("git config --get remote.origin.url", null)();
    if (!gitUrl.includes("github.com"))
      return void 0;
    return gitUrl.replace("git@github.com:", "https://github.com/").trim().replace(/\.git$/, "");
  } catch (error) {
    return void 0;
  }
}

// ../myst-cli/dist/utils/whiteLabelling.js
function readableName() {
  if ("MYSTMD_READABLE_NAME" in process.env) {
    const name3 = process.env.MYSTMD_READABLE_NAME;
    return `${name3} (via myst)`;
  } else {
    return "MyST";
  }
}
function binaryName() {
  var _a6;
  return (_a6 = process.env.MYSTMD_BINARY_NAME) !== null && _a6 !== void 0 ? _a6 : "myst";
}
function npmPackageName() {
  var _a6;
  return (_a6 = process.env.MYSTMD_NPM_PACKAGE_NAME) !== null && _a6 !== void 0 ? _a6 : "mystmd";
}
function npmBinaryName() {
  var _a6;
  return (_a6 = process.env.MYSTMD_NPM_BINARY_NAME) !== null && _a6 !== void 0 ? _a6 : "myst";
}
function homeURL() {
  var _a6;
  return (_a6 = process.env.MYSTMD_HOME_URL) !== null && _a6 !== void 0 ? _a6 : "https://mystmd.org";
}
function isWhiteLabelled() {
  return ["MYSTMD_READABLE_NAME", "MYSTMD_BINARY_NAME"].some((name3) => name3 in process.env);
}

// ../myst-cli/dist/utils/fetchWithRetry.js
async function fetchWithRetry(session, url, options, maxRetries = 3, attempt = 1, backoff = 250) {
  try {
    const resp = await session.fetch(url, options);
    if (resp.ok) {
      return resp;
    } else {
      session.log.warn(`Fetch of ${url} failed with HTTP status ${resp.status} for URL: ${url} (Attempt #${attempt})`);
    }
  } catch (error) {
    session.log.warn(`Fetch of ${url} threw an error (Attempt #${attempt})`, error);
  }
  if (attempt < maxRetries) {
    session.log.debug(`Waiting ${backoff}ms before retry #${attempt + 1}...`);
    await new Promise((resolve9) => setTimeout(resolve9, backoff));
    return fetchWithRetry(session, url, options, maxRetries, attempt + 1, backoff * 2);
  }
  throw new Error(`Failed to fetch ${url} after ${maxRetries} attempts.`);
}

// ../myst-cli/dist/utils/ffmpeg.js
var ffmpeg_exports = {};
__export(ffmpeg_exports, {
  convert: () => convert2,
  isFfmpegAvailable: () => isFfmpegAvailable
});
var import_node_fs8 = __toESM(require("fs"), 1);
var import_node_path13 = __toESM(require("path"), 1);
var import_which = __toESM(require_lib15(), 1);
function createFfmpegLogger(session) {
  const logger = {
    debug(data) {
      const line2 = data.trim();
      session.log.debug(line2);
    },
    error(data) {
      const line2 = data.trim();
      if (!line2)
        return;
      session.log.debug(data);
    }
  };
  return logger;
}
function isFfmpegAvailable() {
  return !!import_which.default.sync("ffmpeg", { nothrow: true });
}
async function convert2(inputExtension, outputExtension, session, input3, writeFolder) {
  if (!import_node_fs8.default.existsSync(input3))
    return null;
  const { name: name3, ext: ext2 } = import_node_path13.default.parse(input3);
  if (ext2 !== inputExtension)
    return null;
  const filename = `${name3}${outputExtension}`;
  const output2 = import_node_path13.default.join(writeFolder, filename);
  const inputFormatUpper = inputExtension.slice(1).toUpperCase();
  const outputFormat = outputExtension.slice(1);
  if (import_node_fs8.default.existsSync(output2)) {
    session.log.debug(`Cached file found for converted ${inputFormatUpper}: ${input3}`);
  } else {
    const ffmpegCommand = `ffmpeg -i ${input3} -crf 18 -vf "crop=trunc(iw/2)*2:trunc(ih/2)*2" ${output2}`;
    session.log.debug(`Executing: ${ffmpegCommand}`);
    const exec3 = makeExecutable(ffmpegCommand, createFfmpegLogger(session));
    try {
      await exec3();
    } catch (err) {
      addWarningForFile(session, input3, `Could not convert from ${inputFormatUpper} to ${outputFormat.toUpperCase()} - ${err}`, "error", { ruleId: RuleId.imageFormatConverts });
      return null;
    }
  }
  return filename;
}

// ../myst-cli/dist/utils/imagemagick.js
var imagemagick_exports = {};
__export(imagemagick_exports, {
  convert: () => convert3,
  convertImageToWebp: () => convertImageToWebp,
  convertWebpToPng: () => convertWebpToPng,
  extractFirstFrameOfGif: () => extractFirstFrameOfGif,
  imageMagickCommand: () => imageMagickCommand,
  isDwebpAvailable: () => isDwebpAvailable,
  isGif2webpAvailable: () => isGif2webpAvailable,
  isImageMagickAvailable: () => isImageMagickAvailable,
  isWebpAvailable: () => isWebpAvailable
});
var import_node_fs9 = __toESM(require("fs"), 1);
var import_node_path14 = __toESM(require("path"), 1);
var import_which2 = __toESM(require_lib15(), 1);
function magickCommandAvailable() {
  return !!import_which2.default.sync("magick", { nothrow: true });
}
function convertCommandAvailable() {
  return !!import_which2.default.sync("convert", { nothrow: true });
}
function isImageMagickAvailable() {
  return magickCommandAvailable() || convertCommandAvailable();
}
function imageMagickCommand() {
  if (!magickCommandAvailable() && convertCommandAvailable()) {
    return "convert";
  }
  return "magick";
}
function isWebpAvailable() {
  return !!import_which2.default.sync("cwebp", { nothrow: true });
}
function isDwebpAvailable() {
  return !!import_which2.default.sync("dwebp", { nothrow: true });
}
function isGif2webpAvailable() {
  return !!import_which2.default.sync("gif2webp", { nothrow: true });
}
var LARGE_IMAGE = 1024 * 1024 * 1.5;
function createImagemagikLogger(session) {
  const logger = {
    debug(data) {
      const line2 = data.trim();
      if (!line2)
        return;
      session.log.debug(data);
    },
    error(data) {
      const line2 = data.trim();
      if (!line2)
        return;
      const lower2 = line2.toLowerCase();
      if (lower2.includes("tiffwarnings/951")) {
        session.log.debug(line2);
        return;
      }
      session.log.error(data);
    }
  };
  return logger;
}
async function extractFirstFrameOfGif(session, gif, writeFolder) {
  if (!import_node_fs9.default.existsSync(gif))
    return null;
  const { name: name3, ext: ext2 } = import_node_path14.default.parse(gif);
  if (ext2 !== ".gif")
    return null;
  const pngFile = `${name3}.png`;
  const png = import_node_path14.default.join(writeFolder, pngFile);
  if (import_node_fs9.default.existsSync(png)) {
    session.log.debug(`Cached file found for extracted GIF: ${gif}`);
    return pngFile;
  }
  const executable = `${imageMagickCommand()} -density 600 -colorspace RGB ${gif}[0] ${png}`;
  session.log.debug(`Executing: ${executable}`);
  const exec3 = makeExecutable(executable, session.log);
  try {
    await exec3();
  } catch (err) {
    addWarningForFile(session, gif, `Could not extract an image from gif: ${gif} - ${err}`, "error", {
      ruleId: RuleId.imageFormatConverts
    });
    return null;
  }
  return pngFile;
}
async function convertWebpToPng(session, source2, writeFolder) {
  if (!import_node_fs9.default.existsSync(source2))
    return null;
  const { name: name3, ext: ext2 } = import_node_path14.default.parse(source2);
  if (ext2 !== ".webp")
    return null;
  const pngFile = `${name3}.png`;
  const png = import_node_path14.default.join(writeFolder, pngFile);
  if (import_node_fs9.default.existsSync(png)) {
    session.log.debug(`Cached file found for converted PNG: ${source2}`);
    return pngFile;
  }
  const debugLogger2 = {
    // We cannot destructure the logger here, bunyan complains
    debug(...args) {
      session.log.debug(...args);
    },
    error(...args) {
      session.log.debug(...args);
    }
  };
  const exec3 = makeExecutable(`dwebp "${source2}" -o "${png}"`, debugLogger2);
  try {
    await exec3();
  } catch (err) {
    addWarningForFile(session, source2, `Could not extract a PNG from WEBP: ${source2} - ${err}`, "error", {
      ruleId: RuleId.imageFormatConverts
    });
    return null;
  }
  return pngFile;
}
async function convert3(inputExtension, outputExtension, session, input3, writeFolder, options) {
  if (!import_node_fs9.default.existsSync(input3))
    return null;
  const { name: name3, ext: ext2 } = import_node_path14.default.parse(input3);
  if (ext2 !== inputExtension)
    return null;
  const filename = `${name3}${outputExtension}`;
  const output2 = import_node_path14.default.join(writeFolder, filename);
  const inputFormatUpper = inputExtension.slice(1).toUpperCase();
  const outputFormatUpper = outputExtension.slice(1).toUpperCase();
  if (import_node_fs9.default.existsSync(output2)) {
    session.log.debug(`Cached file found for converted ${inputFormatUpper}: ${input3}`);
    return filename;
  } else {
    const executable = `${imageMagickCommand()} -density 600 -colorspace RGB ${input3}${(options === null || options === void 0 ? void 0 : options.trim) ? " -trim" : ""} ${output2}`;
    session.log.debug(`Executing: ${executable}`);
    const exec3 = makeExecutable(executable, createImagemagikLogger(session));
    try {
      await exec3();
    } catch (err) {
      addWarningForFile(session, input3, `Could not convert from ${inputFormatUpper} to ${outputFormatUpper}: ${input3} - ${err}`, "error", {
        ruleId: RuleId.imageFormatConverts
      });
      return null;
    }
    if (import_node_fs9.default.existsSync(output2))
      return filename;
    const maybeNumbered = output2.replace(new RegExp(`\\${outputExtension}$`), `-0${outputExtension}`);
    if (import_node_fs9.default.existsSync(maybeNumbered)) {
      import_node_fs9.default.renameSync(maybeNumbered, output2);
      return filename;
    }
  }
  return null;
}
async function convertImageToWebp(session, image6, { quality = 80, overwrite = false, maxSize = LARGE_IMAGE }) {
  if (!import_node_fs9.default.existsSync(image6)) {
    session.log.debug(`Image does not exist: "${image6}"`);
    return null;
  }
  const imageExt = import_node_path14.default.extname(image6).toLowerCase();
  const allowedExtensions = [".png", ".jpg", ".jpeg", ".tiff", ".gif", ".pdf"];
  if (!allowedExtensions.includes(imageExt)) {
    session.log.debug(`Skipping webp conversion of "${image6}"`);
    return null;
  }
  const { size } = import_node_fs9.default.statSync(image6);
  if (size > maxSize && !(imageExt === ".pdf" || imageExt === ".tiff")) {
    const inMB = (size / (1024 * 1024)).toLocaleString(void 0, {
      minimumFractionDigits: 2,
      maximumFractionDigits: 2
    });
    addWarningForFile(session, image6, `Image is too large (${inMB} MB) to convert to webp (build will be slow).`, isGif2webpAvailable() && imageExt === ".gif" || isWebpAvailable() ? "warn" : "debug", { ruleId: RuleId.imageFormatOptimizes });
    return null;
  }
  const dirname8 = import_node_path14.default.dirname(image6);
  const basename4 = import_node_path14.default.basename(image6, imageExt);
  const png = import_node_path14.default.join(dirname8, `${basename4}.png`);
  const webp = import_node_path14.default.join(dirname8, `${basename4}.webp`);
  if (!overwrite && import_node_fs9.default.existsSync(webp)) {
    session.log.debug(`Image is already converted ${webp}`);
    return `${basename4}.webp`;
  }
  const toc = tic();
  session.log.debug(`Optimizing image for web: ${webp}`);
  const debugLogger2 = {
    // We cannot destructure the logger here, bunyan complains
    debug(...args) {
      session.log.debug(...args);
    },
    error(...args) {
      session.log.debug(...args);
    }
  };
  const convertImg = makeExecutable(`cwebp -q ${quality} "${image6}" -o "${webp}"`, debugLogger2);
  const convertGif = makeExecutable(`gif2webp -q ${quality} "${image6}" -o "${webp}"`, debugLogger2);
  const convertPdfPng = makeExecutable(`${imageMagickCommand()} -density 600 -colorspace RGB ${image6} -trim ${png}`, debugLogger2);
  const convertPdfWebP = makeExecutable(`cwebp -q ${quality} "${png}" -o "${webp}"`, debugLogger2);
  try {
    if (import_node_path14.default.extname(image6) === ".pdf") {
      if (!isImageMagickAvailable() || !isWebpAvailable()) {
        addWarningForFile(session, image6, `Could not convert from image ${image6} to webp:
imagemagick and cwebp are required
`, "warn", { ruleId: RuleId.imageFormatOptimizes });
        return null;
      }
      await convertPdfPng();
      await convertPdfWebP();
    } else if (import_node_path14.default.extname(image6) === ".gif") {
      if (!isGif2webpAvailable()) {
        addWarningForFile(session, image6, `Could not convert from image ${image6} to webp:
gif2webp is required
`, "debug", { ruleId: RuleId.imageFormatOptimizes });
        return null;
      }
      await convertGif();
    } else {
      if (!isWebpAvailable()) {
        addWarningForFile(session, image6, `Could not convert from image ${image6} to webp:
cwebp is required
`, "debug", { ruleId: RuleId.imageFormatOptimizes });
        return null;
      }
      await convertImg();
    }
  } catch (err) {
    addWarningForFile(session, image6, `Could not convert to webp:
${err}
`, "warn", {
      ruleId: RuleId.imageFormatOptimizes
    });
    return null;
  }
  session.log.debug(toc(`Optimized image for web in %s`));
  return `${basename4}.webp`;
}

// ../myst-cli/dist/utils/inkscape.js
var inkscape_exports = {};
__export(inkscape_exports, {
  convert: () => convert4,
  isInkscapeAvailable: () => isInkscapeAvailable
});
var import_node_fs10 = __toESM(require("fs"), 1);
var import_node_path15 = __toESM(require("path"), 1);
var import_which3 = __toESM(require_lib15(), 1);
function createInkscpapeLogger(session) {
  const logger = {
    debug(data) {
      const line2 = data.trim();
      session.log.debug(line2);
    },
    error(data) {
      const line2 = data.trim();
      if (!line2)
        return;
      if (line2.includes("unsupported target") || line2.includes("writable cache directories")) {
        session.log.debug(line2);
        return;
      }
      session.log.error(data);
    }
  };
  return logger;
}
function isInkscapeAvailable() {
  return !!import_which3.default.sync("inkscape", { nothrow: true });
}
async function convert4(inputExtension, outputExtension, session, input3, writeFolder) {
  if (!import_node_fs10.default.existsSync(input3))
    return null;
  const { name: name3, ext: ext2 } = import_node_path15.default.parse(input3);
  if (ext2 !== inputExtension)
    return null;
  const filename = `${name3}${outputExtension}`;
  const output2 = import_node_path15.default.join(writeFolder, filename);
  const inputFormatUpper = inputExtension.slice(1).toUpperCase();
  const outputFormat = outputExtension.slice(1);
  if (import_node_fs10.default.existsSync(output2)) {
    session.log.debug(`Cached file found for converted ${inputFormatUpper}: ${input3}`);
  } else {
    const inkscapeCommand = `inkscape ${input3} --export-area-drawing --export-type=${outputFormat} --export-filename=${output2}`;
    session.log.debug(`Executing: ${inkscapeCommand}`);
    const exec3 = makeExecutable(inkscapeCommand, createInkscpapeLogger(session));
    try {
      await exec3();
    } catch (err) {
      addWarningForFile(session, input3, `Could not convert from ${inputFormatUpper} to ${outputFormat.toUpperCase()} - ${err}`, "error", { ruleId: RuleId.imageFormatConverts });
      return null;
    }
  }
  return filename;
}

// ../myst-cli/dist/transforms/links.js
var import_node_fs11 = __toESM(require("fs"), 1);
var import_node_path16 = __toESM(require("path"), 1);
var import_p_limit = __toESM(require_p_limit(), 1);
var LINK_MAX_AGE = 30;
var skippedDomains = [
  "www.linkedin.com",
  "linkedin.com",
  "medium.com",
  "twitter.com",
  "en.wikipedia.org",
  // Reserved domains for documentation and examples (RFC 2606)
  "example.com",
  "example.org",
  "example.net",
  "www.example.com",
  "www.example.org",
  "www.example.net"
];
function checkLinkCacheFilename(url) {
  return `checkLink-${computeHash(url)}.json`;
}
async function checkLink(session, url) {
  const cached = selectors_exports.selectLinkStatus(session.store.getState(), url);
  if (cached)
    return cached;
  const link4 = {
    url
  };
  if (url.startsWith("mailto:")) {
    link4.skipped = true;
    session.log.debug(`Skipping: ${url}`);
    session.store.dispatch(links.actions.updateLink(link4));
    return link4;
  }
  try {
    const parsedUrl = new URL(url);
    if (skippedDomains.includes(parsedUrl.hostname)) {
      link4.skipped = true;
      session.log.debug(`Skipping: ${url}`);
      session.store.dispatch(links.actions.updateLink(link4));
      return link4;
    }
    session.log.debug(`Checking that "${url}" exists`);
    const filename = checkLinkCacheFilename(url);
    const linkCache = loadFromCache(session, filename, { maxAge: LINK_MAX_AGE });
    const resp = linkCache ? JSON.parse(linkCache) : await session.fetch(url, { headers: EXT_REQUEST_HEADERS });
    link4.ok = resp.ok;
    link4.status = resp.status;
    link4.statusText = resp.statusText;
    if (link4.ok && !linkCache) {
      writeToCache(session, filename, JSON.stringify(link4));
    }
  } catch (error) {
    session.log.debug(`

${error === null || error === void 0 ? void 0 : error.stack}

`);
    session.log.debug(`Error fetching ${url} ${error.message}`);
    link4.ok = false;
  }
  session.store.dispatch(links.actions.updateLink(link4));
  return link4;
}
function getSourceFolder(link4, sourceFile, projectFolder) {
  return link4.startsWith(import_node_path16.default.sep) ? projectFolder : import_node_path16.default.dirname(sourceFile);
}
function fileFromSourceFolder(pathFromLink, folder) {
  let target;
  [pathFromLink, ...target] = pathFromLink.split("#");
  pathFromLink = decodeURIComponent(pathFromLink);
  if (folder) {
    pathFromLink = import_node_path16.default.resolve(import_node_path16.default.join(folder, pathFromLink));
  }
  if (import_node_fs11.default.existsSync(pathFromLink) && import_node_fs11.default.lstatSync(pathFromLink).isDirectory()) {
    return void 0;
  }
  if (!import_node_fs11.default.existsSync(pathFromLink)) {
    if (import_node_fs11.default.existsSync(`${pathFromLink}.md`)) {
      pathFromLink = `${pathFromLink}.md`;
    } else if (import_node_fs11.default.existsSync(`${pathFromLink}.ipynb`)) {
      pathFromLink = `${pathFromLink}.ipynb`;
    } else {
      return void 0;
    }
  }
  return [pathFromLink, ...target].join("#");
}
var StaticFileTransformer = class {
  constructor(session, filePath) {
    this.protocol = "file";
    this.session = session;
    this.filePath = filePath;
  }
  test(url) {
    if (!url)
      return false;
    const sourceFileFolder = getSourceFolder(url, this.filePath, this.session.sourcePath());
    const linkFileWithTarget = fileFromSourceFolder(url, sourceFileFolder);
    return !!linkFileWithTarget;
  }
  transform(link4, file) {
    const urlSource = link4.urlSource || link4.url;
    const sourceFileFolder = getSourceFolder(urlSource, this.filePath, this.session.sourcePath());
    const linkFileWithTarget = fileFromSourceFolder(urlSource, sourceFileFolder);
    if (!linkFileWithTarget) {
      return false;
    }
    const [linkFile] = linkFileWithTarget.split("#");
    const target = linkFileWithTarget.slice(linkFile.length + 1);
    const reference = normalizeLabel(target);
    const { url, title, dataUrl } = selectors_exports.selectFileInfo(this.session.store.getState(), linkFile) || {};
    if (url != null && link4.static !== true) {
      if (dataUrl)
        link4.dataUrl = dataUrl;
      if (reference) {
        const xref = link4;
        xref.type = "crossReference";
        xref.identifier = reference.identifier;
        xref.label = reference.label;
        xref.url = url;
        xref.remote = true;
        return true;
      } else {
        link4.url = [url, ...target || []].join("#");
        link4.internal = true;
      }
    } else {
      const copiedFile = hashAndCopyStaticFile(this.session, linkFile, this.session.publicPath(), (m2) => {
        fileError(file, m2, {
          node: link4,
          source: "StaticFileTransformer",
          ruleId: RuleId.staticFileCopied
        });
      });
      if (!copiedFile)
        return false;
      link4.url = `/${copiedFile}`;
      link4.static = true;
    }
    updateLinkTextIfEmpty(link4, title || import_node_path16.default.basename(linkFile));
    return true;
  }
};
var limitOutgoingConnections = (0, import_p_limit.default)(25);
async function checkLinksTransform(session, file, mdast2) {
  const linkNodes = selectAll("link,linkBlock,card", mdast2).filter((link4) => !(link4.internal || link4.static));
  if (linkNodes.length === 0)
    return [];
  const toc = tic();
  session.log.info(`\u{1F517} Checking ${plural("%s link(s)", linkNodes)} in ${file}`);
  const linkResults = await Promise.all(linkNodes.map(async (link4) => limitOutgoingConnections(async () => {
    const { position: position6, url, type: type2 } = link4;
    if (type2 === "card" && !url) {
      return "";
    }
    const check2 = await checkLink(session, url);
    if (check2.ok || check2.skipped)
      return url;
    const status = check2.status ? ` (${check2.status}, ${check2.statusText})` : "";
    addWarningForFile(session, file, `Link for "${url}" did not resolve.${status}`, "error", {
      position: position6,
      ruleId: RuleId.linkResolves,
      key: url
    });
    return url;
  })));
  session.log.info(toc(`\u{1F517} Checked ${plural("%s link(s)", linkNodes)} in ${file} in %s`));
  return linkResults;
}

// ../myst-cli/dist/transforms/images.js
var BASE64_HEADER_SPLIT = ";base64,";
function isBase64(data) {
  return data.split(BASE64_HEADER_SPLIT).length === 2;
}
function getGithubRawUrl(url) {
  const GITHUB_BLOB = /^(?:https?:\/\/)?github\.com\/([^/]+)\/([^/]+)\/blob\//;
  if (!(url === null || url === void 0 ? void 0 : url.match(GITHUB_BLOB)))
    return void 0;
  return url.replace(GITHUB_BLOB, "https://raw.githubusercontent.com/$1/$2/");
}
async function writeBase64(session, writeFolder, data, contentType) {
  var _a6;
  const [justData, header] = data.split(BASE64_HEADER_SPLIT).reverse();
  const ext2 = extFromMimeType((_a6 = header === null || header === void 0 ? void 0 : header.replace("data:", "")) !== null && _a6 !== void 0 ? _a6 : contentType);
  const hash = computeHash(justData);
  const file = `${hash}${ext2}`;
  const filePath = import_node_path17.default.join(writeFolder, file);
  session.log.debug(`Writing binary output file ${justData.length} bytes to ${filePath}`);
  if (!import_node_fs12.default.existsSync(writeFolder))
    import_node_fs12.default.mkdirSync(writeFolder, { recursive: true });
  import_node_fs12.default.writeFileSync(filePath, justData, {
    encoding: "base64"
  });
  return file;
}
async function downloadAndSaveImage(session, url, file, fileFolder) {
  const exists2 = import_node_fs12.default.existsSync(fileFolder);
  const fileMatch = exists2 && import_node_fs12.default.readdirSync(fileFolder).find((f3) => import_node_path17.default.parse(f3).name === file);
  if (exists2 && fileMatch) {
    session.log.debug(`Cached image found for: ${url}...`);
    return fileMatch;
  }
  const filePath = import_node_path17.default.join(fileFolder, file);
  session.log.debug(`Fetching image: ${url}...
  -> saving to: ${filePath}`);
  try {
    const github = getGithubRawUrl(url);
    const res = await session.fetch(github !== null && github !== void 0 ? github : url, { headers: EXT_REQUEST_HEADERS });
    const contentType = res.headers.get("content-type") || "";
    const extension = import_mime_types.default.extension(contentType);
    if (!extension || !contentType)
      throw new Error("No content-type for image found.");
    if (!contentType.startsWith("image/")) {
      throw new Error(`ContentType "${contentType}" is not an image`);
    }
    if (!import_node_fs12.default.existsSync(fileFolder))
      import_node_fs12.default.mkdirSync(fileFolder, { recursive: true });
    const fileStream = import_node_fs12.default.createWriteStream(`${filePath}.${extension}`);
    await new Promise((resolve9, reject) => {
      if (!res.body) {
        reject(`no response body from ${url}`);
      } else {
        res.body.pipe(fileStream);
        res.body.on("error", reject);
        fileStream.on("finish", resolve9);
      }
    });
    await new Promise((r2) => setTimeout(r2, 50));
    const fileName = `${file}.${extension}`;
    session.log.debug(`Image successfully saved to: ${fileName}`);
    return fileName;
  } catch (error) {
    session.log.debug(`

${error.stack}

`);
    addWarningForFile(session, file, `Error saving image "${url}": ${error.message}`, "error", { ruleId: RuleId.imageDownloads });
    return void 0;
  }
}
function resolveOutputPath(file, writeFolder, altOutputFolder) {
  if (altOutputFolder == null) {
    return import_node_path17.default.join(writeFolder, file);
  }
  if (altOutputFolder.endsWith("/")) {
    return `${altOutputFolder}${file}`;
  }
  return import_node_path17.default.join(altOutputFolder, file);
}
async function saveImageInStaticFolder(session, urlSource, sourceFile, writeFolder, opts) {
  const sourceFileFolder = getSourceFolder(urlSource, sourceFile, session.sourcePath());
  const imageLocalFile = import_node_path17.default.join(sourceFileFolder, urlSource);
  let file;
  if (isUrl2(urlSource)) {
    file = await downloadAndSaveImage(session, urlSource, computeHash(urlSource), writeFolder);
  } else if (import_node_fs12.default.existsSync(imageLocalFile)) {
    if (import_node_path17.default.resolve(import_node_path17.default.dirname(imageLocalFile)) === import_node_path17.default.resolve(writeFolder)) {
      file = import_node_path17.default.basename(imageLocalFile);
    } else {
      file = hashAndCopyStaticFile(session, imageLocalFile, writeFolder, (m2) => {
        addWarningForFile(session, sourceFile, m2, "error", { ruleId: RuleId.imageCopied });
      });
    }
    if (!file)
      return null;
  } else if (isBase64(urlSource)) {
    file = await writeBase64(session, writeFolder, urlSource);
  } else {
    const message = `Cannot find image "${urlSource}" in ${sourceFileFolder}`;
    addWarningForFile(session, sourceFile, message, "error", {
      position: opts === null || opts === void 0 ? void 0 : opts.position,
      ruleId: RuleId.imageExists
    });
    return null;
  }
  const url = resolveOutputPath(file, writeFolder, opts === null || opts === void 0 ? void 0 : opts.altOutputFolder);
  return { urlSource, url };
}
function transformImagesToEmbed(mdast2) {
  const images = selectAll("image", mdast2);
  images.forEach((image6) => {
    var _a6;
    if (image6.url.startsWith("xref:") || image6.url.startsWith("#")) {
      image6.type = "embed";
      image6.source = { label: image6.url.startsWith("xref:") ? image6.url : image6.url.substring(1) };
      image6["remove-input"] = (_a6 = image6["remove-input"]) !== null && _a6 !== void 0 ? _a6 : true;
      delete image6.url;
      return;
    }
  });
}
function transformImagesWithoutExt(session, mdast2, file, opts) {
  const images = selectAll("image", mdast2);
  images.forEach((image6) => {
    var _a6;
    const wildcardRegex = /\.\*$/;
    const imagePath = import_node_path17.default.join(import_node_path17.default.dirname(file), image6.url).replace(wildcardRegex, "");
    if (!import_node_fs12.default.existsSync(imagePath)) {
      const sortedExtensions = [
        // Valid extensions
        ...(_a6 = opts === null || opts === void 0 ? void 0 : opts.imageExtensions) !== null && _a6 !== void 0 ? _a6 : [],
        // Convertible extensions
        ...Object.keys(conversionFnLookup),
        // All known extensions
        ...KNOWN_IMAGE_EXTENSIONS
      ];
      const extension = sortedExtensions.find((ext2) => import_node_fs12.default.existsSync(imagePath + ext2));
      if (extension) {
        const replacement = image6.url.replace(wildcardRegex, "") + extension;
        session.log.debug(`Resolving ${image6.url} to ${replacement}`);
        image6.url = replacement;
        image6.urlSource = image6.url;
      }
    }
  });
}
async function transformImagesToDisk(session, mdast2, file, writeFolder, opts) {
  const images = selectAll("image", mdast2);
  await Promise.all(images.map(async (image6) => {
    const result = await saveImageInStaticFolder(session, image6.urlSource || image6.url, file, writeFolder, {
      altOutputFolder: opts === null || opts === void 0 ? void 0 : opts.altOutputFolder,
      position: image6.position
    });
    if (result) {
      const { urlSource, url } = result;
      image6.urlSource = urlSource;
      image6.url = url;
    }
  }));
}
var DEFAULT_IMAGE_EXTENSIONS = [ImageExtensions.png, ImageExtensions.jpg, ImageExtensions.jpeg];
function imagemagickConvert(from4, to, options) {
  return async (session, source2, writeFolder, opts) => {
    const { imagemagickAvailable } = opts;
    if (imagemagickAvailable) {
      return imagemagick_exports.convert(from4, to, session, source2, writeFolder, options);
    }
    return null;
  };
}
function ffmpegConvert(from4, to) {
  return async (session, source2, writeFolder, opts) => {
    const { ffmpegAvailable } = opts;
    if (ffmpegAvailable) {
      return ffmpeg_exports.convert(from4, to, session, source2, writeFolder);
    }
    return null;
  };
}
async function svgToPdf(session, source2, writeFolder, opts) {
  const { file, inkscapeAvailable, imagemagickAvailable } = opts;
  if (inkscapeAvailable) {
    return inkscape_exports.convert(ImageExtensions.svg, ImageExtensions.pdf, session, source2, writeFolder);
  } else if (imagemagickAvailable) {
    addWarningForFile(session, file, "To convert .svg images to .pdf, you must install inkscape.", "warn", {
      note: "Images converted to .png as a fallback using imagemagick.",
      ruleId: RuleId.imageFormatConverts
    });
  }
  return null;
}
async function svgToPng(session, source2, writeFolder, opts) {
  const { inkscapeAvailable } = opts;
  if (inkscapeAvailable) {
    return inkscape_exports.convert(ImageExtensions.svg, ImageExtensions.png, session, source2, writeFolder);
  }
  return imagemagickConvert(ImageExtensions.svg, ImageExtensions.png)(session, source2, writeFolder, opts);
}
async function gifToPng(session, source2, writeFolder, opts) {
  const { imagemagickAvailable } = opts;
  if (imagemagickAvailable) {
    return imagemagick_exports.extractFirstFrameOfGif(session, source2, writeFolder);
  }
  return null;
}
async function webpToPng(session, source2, writeFolder, opts) {
  const { dwebpAvailable } = opts;
  if (dwebpAvailable) {
    return imagemagick_exports.convertWebpToPng(session, source2, writeFolder);
  }
  return null;
}
var conversionFnLookup = {
  [ImageExtensions.svg]: {
    [ImageExtensions.pdf]: svgToPdf,
    [ImageExtensions.png]: svgToPng
  },
  [ImageExtensions.pdf]: {
    [ImageExtensions.png]: imagemagickConvert(ImageExtensions.pdf, ImageExtensions.png, {
      trim: true
    })
  },
  [ImageExtensions.gif]: {
    [ImageExtensions.png]: gifToPng
  },
  [ImageExtensions.webp]: {
    [ImageExtensions.png]: webpToPng
  },
  [ImageExtensions.eps]: {
    // Currently the inkscape CLI has a bug which prevents EPS conversions;
    // once that is fixed, we may uncomment the rest of this section to
    // enable better conversions, e.g. EPS -> SVG
    // https://gitlab.com/inkscape/inkscape/-/issues/3524
    [ImageExtensions.png]: imagemagickConvert(ImageExtensions.eps, ImageExtensions.png)
  },
  [ImageExtensions.tiff]: {
    [ImageExtensions.png]: imagemagickConvert(ImageExtensions.tiff, ImageExtensions.png)
  },
  [ImageExtensions.tif]: {
    [ImageExtensions.png]: imagemagickConvert(ImageExtensions.tif, ImageExtensions.png)
  },
  [ImageExtensions.mov]: {
    [ImageExtensions.mp4]: ffmpegConvert(ImageExtensions.mov, ImageExtensions.mp4)
  },
  [ImageExtensions.avi]: {
    [ImageExtensions.mp4]: ffmpegConvert(ImageExtensions.avi, ImageExtensions.mp4)
  }
};
function getConversionFns(imageExt, validExts) {
  if (!conversionFnLookup[imageExt])
    return [];
  const conversionFns = [];
  validExts.forEach((validExt) => {
    const conversionFn = conversionFnLookup[imageExt][validExt];
    if (conversionFn)
      conversionFns.push(conversionFn);
  });
  return conversionFns;
}
async function transformImageFormats(session, mdast2, file, writeFolder, opts) {
  var _a6;
  const images = selectAll("image", mdast2);
  const validExts = (_a6 = opts === null || opts === void 0 ? void 0 : opts.imageExtensions) !== null && _a6 !== void 0 ? _a6 : DEFAULT_IMAGE_EXTENSIONS;
  const invalidImages = {};
  images.forEach((image6) => {
    const ext2 = import_node_path17.default.extname(image6.url).toLowerCase();
    if (validExts.includes(ext2))
      return;
    if (invalidImages[ext2]) {
      invalidImages[ext2].push(image6);
    } else {
      invalidImages[ext2] = [image6];
    }
  });
  if (Object.keys(invalidImages).length === 0)
    return;
  const inkscapeAvailable = inkscape_exports.isInkscapeAvailable();
  const imagemagickAvailable = imagemagick_exports.isImageMagickAvailable();
  const dwebpAvailable = imagemagick_exports.isDwebpAvailable();
  const ffmpegAvailable = ffmpeg_exports.isFfmpegAvailable();
  const convert6 = async (image6, conversionFns) => {
    const inputFile = import_node_path17.default.join(writeFolder, import_node_path17.default.basename(image6.url));
    let outputFile = null;
    for (const conversionFn of conversionFns) {
      if (!outputFile) {
        outputFile = await conversionFn(session, inputFile, writeFolder, {
          file,
          inkscapeAvailable,
          imagemagickAvailable,
          dwebpAvailable,
          ffmpegAvailable
        });
      }
    }
    if (outputFile) {
      image6.url = resolveOutputPath(outputFile, writeFolder, opts === null || opts === void 0 ? void 0 : opts.altOutputFolder);
      session.log.debug(`Successfully converted ${inputFile} -> ${image6.url}`);
    } else {
      session.log.debug(`Failed to convert ${inputFile}`);
      addWarningForFile(session, file, `To convert image "${import_node_path17.default.basename(image6.url)}" you must install imagemagick.`, "error", {
        note: `Image ${import_node_path17.default.basename(image6.url)} may not render correctly`,
        position: image6.position,
        ruleId: RuleId.imageFormatConverts
      });
    }
  };
  const conversionPromises = [];
  const conversionExts = [];
  const unconvertableImages = [];
  Object.entries(invalidImages).forEach(([ext2, imageNodes]) => {
    const conversionFns = getConversionFns(ext2, validExts);
    if (!conversionFns.length) {
      unconvertableImages.push(...imageNodes);
      return;
    }
    conversionExts.push(ext2);
    imageNodes.forEach((node3) => {
      conversionPromises.push(convert6(node3, conversionFns));
    });
  });
  if (conversionPromises.length) {
    session.log.info(`\u{1F320} Converting ${plural("%s image(s) with extension(s)", conversionPromises)} ${conversionExts.join(", ")} to supported ${plural("format(s)", validExts)} ${validExts.join(", ")}`);
  }
  unconvertableImages.forEach((image6) => {
    const badExt = import_node_path17.default.extname(image6.url) || "<no extension>";
    if (badExt === ".*") {
      return;
    }
    addWarningForFile(session, file, `Unsupported image extension "${badExt}" may not correctly render.`, "error", { position: image6.position, ruleId: RuleId.imageFormatConverts });
  });
  return Promise.all(conversionPromises);
}
async function transformThumbnail(session, mdast2, file, frontmatter, writeFolder, opts) {
  let thumbnail = frontmatter.thumbnail;
  if (thumbnail === null) {
    session.log.debug(`${file}#frontmatter.thumbnail is explicitly null, not searching content.`);
    return;
  }
  if (!thumbnail && mdast2) {
    const [image6] = selectAll("image", mdast2).filter((n) => {
      return !KNOWN_VIDEO_EXTENSIONS.find((ext2) => n.url.endsWith(ext2));
    });
    if (!image6) {
      session.log.debug(`${file}#frontmatter.thumbnail is not set, and there are no images.`);
      return;
    }
    session.log.debug(`${file}#frontmatter.thumbnail is being populated by the first image.`);
    thumbnail = image6.urlSource || image6.url;
  }
  if (!thumbnail)
    return;
  session.log.debug(`${file}#frontmatter.thumbnail Saving thumbnail in static folder.`);
  const result = await saveImageInStaticFolder(session, thumbnail, file, writeFolder, {
    altOutputFolder: opts === null || opts === void 0 ? void 0 : opts.altOutputFolder
  });
  if (!result)
    return;
  const { url } = result;
  frontmatter.thumbnail = url;
  const fileMatch = import_node_path17.default.basename(result.url);
  if (opts === null || opts === void 0 ? void 0 : opts.webp) {
    const optimized = await imagemagick_exports.convertImageToWebp(session, import_node_path17.default.join(writeFolder, fileMatch), { maxSize: opts.maxSizeWebp });
    if (optimized) {
      const urlOptimized = url.replace(fileMatch, optimized);
      frontmatter.thumbnailOptimized = urlOptimized;
      return { url, urlOptimized };
    }
  }
  return { url };
}
async function transformBanner(session, file, frontmatter, writeFolder, opts) {
  const banner = frontmatter.banner;
  if (banner === null || !banner) {
    session.log.debug(`${file}#frontmatter.banner is explicitly null, not searching content.`);
    return;
  }
  session.log.debug(`${file}#frontmatter.banner Saving banner in static folder.`);
  const result = await saveImageInStaticFolder(session, banner, file, writeFolder, {
    altOutputFolder: opts === null || opts === void 0 ? void 0 : opts.altOutputFolder
  });
  if (!result)
    return;
  const { url } = result;
  frontmatter.banner = url;
  const fileMatch = import_node_path17.default.basename(result.url);
  if (opts === null || opts === void 0 ? void 0 : opts.webp) {
    const optimized = await imagemagick_exports.convertImageToWebp(session, import_node_path17.default.join(writeFolder, fileMatch), { maxSize: opts.maxSizeWebp });
    if (optimized) {
      const urlOptimized = url.replace(fileMatch, optimized);
      frontmatter.bannerOptimized = urlOptimized;
      return { url, urlOptimized };
    }
  }
  return { url };
}
async function transformWebp(session, opts) {
  var _a6;
  const { file, imageWriteFolder } = opts;
  const cache = castSession(session);
  const postData = (_a6 = cache.$getMdast(opts.file)) === null || _a6 === void 0 ? void 0 : _a6.post;
  if (!postData)
    throw new Error(`Expected mdast to be processed and transformed for ${file}`);
  if (!import_node_fs12.default.existsSync(imageWriteFolder))
    return;
  const writeFolderContents = import_node_fs12.default.readdirSync(imageWriteFolder);
  const { mdast: mdast2, frontmatter } = postData;
  const images = selectAll("image", mdast2);
  await Promise.all(images.map(async (image6) => {
    if (!image6.url)
      return;
    const fileMatch = writeFolderContents.find((item) => image6.url.endsWith(item));
    if (!fileMatch)
      return;
    try {
      const result = await imagemagick_exports.convertImageToWebp(session, import_node_path17.default.join(imageWriteFolder, fileMatch), { maxSize: opts.maxSizeWebp });
      if (result)
        image6.urlOptimized = image6.url.replace(fileMatch, result);
    } catch (error) {
      session.log.debug(`

${error === null || error === void 0 ? void 0 : error.stack}

`);
    }
  }));
  await Promise.all(["thumbnail", "banner"].map(async (attr) => {
    var _a7;
    const attrOptimized = `${attr}Optimized`;
    if (frontmatter[attr]) {
      const fileMatch = writeFolderContents.find((item) => {
        var _a8;
        return (_a8 = frontmatter[attr]) === null || _a8 === void 0 ? void 0 : _a8.endsWith(item);
      });
      if (fileMatch) {
        try {
          const result = await imagemagick_exports.convertImageToWebp(session, import_node_path17.default.join(imageWriteFolder, fileMatch), { maxSize: opts.maxSizeWebp });
          if (result) {
            frontmatter[attrOptimized] = (_a7 = frontmatter[attr]) === null || _a7 === void 0 ? void 0 : _a7.replace(fileMatch, result);
            session.store.dispatch(watch.actions.updateFileInfo({
              path: file,
              [attrOptimized]: frontmatter[attrOptimized]
            }));
          }
        } catch (error) {
          session.log.debug(`

${error === null || error === void 0 ? void 0 : error.stack}

`);
        }
      }
    }
  }));
  const cachedMdast = cache.$getMdast(file);
  if (cachedMdast)
    cachedMdast.post = { ...postData, mdast: mdast2, frontmatter };
}
function isValidImageNode(node3, validExts) {
  return node3.type === "image" && node3.url && validExts.includes(import_node_path17.default.extname(node3.url).toLowerCase());
}
function transformPlaceholderImages(mdast2, opts) {
  var _a6;
  const validExts = (_a6 = opts === null || opts === void 0 ? void 0 : opts.imageExtensions) !== null && _a6 !== void 0 ? _a6 : DEFAULT_IMAGE_EXTENSIONS;
  selectAll("container", mdast2).filter((container4) => container4.kind === "figure").forEach((figure) => {
    var _a7, _b;
    const validContent = (_a7 = figure.children) === null || _a7 === void 0 ? void 0 : _a7.filter((child) => {
      return isValidImageNode(child, validExts) && !child.placeholder;
    });
    const placeholders = (_b = figure.children) === null || _b === void 0 ? void 0 : _b.filter((child) => {
      return isValidImageNode(child, validExts) && child.placeholder;
    });
    if (validContent === null || validContent === void 0 ? void 0 : validContent.length) {
      placeholders === null || placeholders === void 0 ? void 0 : placeholders.forEach((node3) => {
        node3.type = "__remove__";
      });
    } else {
      placeholders === null || placeholders === void 0 ? void 0 : placeholders.forEach((node3) => {
        node3.placeholder = false;
      });
    }
  });
  remove(mdast2, "__remove__");
}
async function transformDeleteBase64UrlSource(mdast2) {
  const images = selectAll("image", mdast2);
  return Promise.all(images.map(async (image6) => {
    if (image6.url && image6.urlSource && isBase64(image6.urlSource)) {
      const [prefix2, suffix] = image6.urlSource.split(BASE64_HEADER_SPLIT);
      if (suffix.length <= 20)
        return;
      image6.urlSource = `${prefix2}${BASE64_HEADER_SPLIT}${suffix.slice(0, 10)}...${suffix.slice(suffix.length - 10)}`;
    }
  }));
}

// ../myst-cli/dist/transforms/inlineExpressions.js
var metadataSection = "user_expressions";
function findExpression(expressions, value) {
  return expressions === null || expressions === void 0 ? void 0 : expressions.find((expr) => expr.expression === value);
}
function processLatex(value) {
  return value.trim().replace(/^\$(\\displaystyle)?/, "").replace(/\$$/, "").trim();
}
function stripTextQuotes(content3) {
  return content3.replace(/^(["'])(.*)\1$/, "$2");
}
function renderExpression(node3, file) {
  const result = node3.result;
  if (!result)
    return [];
  let content3;
  if (result.status === "ok") {
    Object.entries(result.data).forEach(([mimeType, value]) => {
      var _a6, _b;
      if (content3) {
        return;
      } else if (mimeType.startsWith("image/")) {
        content3 = [
          {
            type: "image",
            url: `data:${mimeType}${BASE64_HEADER_SPLIT}${value}`
          }
        ];
      } else if (mimeType === "text/latex") {
        content3 = [{ type: "inlineMath", value: processLatex(value) }];
      } else if (mimeType === "text/html") {
        content3 = [{ type: "html", value }];
      } else if (mimeType === "text/plain") {
        const stripQuotes = (_b = (_a6 = result.metadata) === null || _a6 === void 0 ? void 0 : _a6["strip-quotes"]) !== null && _b !== void 0 ? _b : true;
        content3 = [
          {
            type: "text",
            value: stripQuotes ? stripTextQuotes(value) : value
          }
        ];
      }
    });
    if (content3)
      return content3;
    fileWarn(file, "Unrecognized mime bundle for inline content", {
      node: node3,
      ruleId: RuleId.inlineExpressionRenders
    });
  }
  return [];
}
function transformRenderInlineExpressions(mdast2, file) {
  const inlineNodes = selectAll("inlineExpression", mdast2);
  inlineNodes.forEach((inlineExpression3) => {
    if (!inlineExpression3.result) {
      return;
    }
    inlineExpression3.children = renderExpression(inlineExpression3, file);
  });
}

// ../myst-cli/dist/process/notebook.js
function blockParent(cell3, children) {
  const kind = cell3.cell_type === CELL_TYPES.code ? NotebookCell.code : NotebookCell.content;
  return { type: "block", kind, data: JSON.parse(JSON.stringify(cell3.metadata)), children };
}
function replaceAttachmentsTransform(session, mdast2, attachments, file) {
  const vfile2 = new VFile();
  vfile2.path = file;
  const imageNodes = selectAll("image", mdast2);
  imageNodes.forEach((image6) => {
    var _a6;
    if (!image6.url)
      return;
    const attachmentKey = (_a6 = image6.url.match(/^attachment:(.*)$/)) === null || _a6 === void 0 ? void 0 : _a6[1];
    if (!attachmentKey)
      return;
    try {
      const attachment = Object.entries(attachments[attachmentKey])[0];
      const mimeType = attachment[0];
      const attachmentVal = ensureString(attachment[1]);
      if (!attachmentVal) {
        fileWarn(vfile2, `Unrecognized attachment name in ${file}: ${attachmentKey}`, {
          ruleId: RuleId.notebookAttachmentsResolve
        });
      } else if (attachmentVal.includes(BASE64_HEADER_SPLIT)) {
        image6.url = attachmentVal;
      } else {
        image6.url = `data:${mimeType}${BASE64_HEADER_SPLIT}${attachmentVal}`;
      }
    } catch {
      fileWarn(vfile2, `Unable to resolve attachment in ${file}: ${attachmentKey}`, {
        ruleId: RuleId.notebookAttachmentsResolve
      });
    }
  });
  logMessagesFromVFile(session, vfile2);
}
async function processNotebookFull(session, file, content3) {
  var _a6, _b, _c;
  const { log } = session;
  const { metadata, cells: cells2 } = JSON.parse(content3);
  const language = (_b = (_a6 = metadata === null || metadata === void 0 ? void 0 : metadata.kernelspec) === null || _a6 === void 0 ? void 0 : _a6.language) !== null && _b !== void 0 ? _b : "python";
  log.debug(`Processing Notebook: "${file}"`);
  const vfile2 = new VFile();
  vfile2.path = file;
  const filteredMetadata = filterKeys(metadata !== null && metadata !== void 0 ? metadata : {}, [
    ...PAGE_FRONTMATTER_KEYS,
    // Include aliased entries for page frontmatter keys
    ...Object.entries(FRONTMATTER_ALIASES).filter(([_2, value]) => PAGE_FRONTMATTER_KEYS.includes(value)).map(([key2, _2]) => key2)
  ]);
  const frontmatter = validatePageFrontmatter(filteredMetadata !== null && filteredMetadata !== void 0 ? filteredMetadata : {}, frontmatterValidationOpts(vfile2));
  const widgets = (_c = metadata === null || metadata === void 0 ? void 0 : metadata.widgets) !== null && _c !== void 0 ? _c : {};
  let end = cells2.length;
  if (cells2 && cells2.length > 1 && (cells2 === null || cells2 === void 0 ? void 0 : cells2[cells2.length - 1].source.length) === 0) {
    end = -1;
  }
  const items = await (cells2 === null || cells2 === void 0 ? void 0 : cells2.slice(0, end).reduce(async (P, cell3, index4) => {
    var _a7;
    const acc = await P;
    if (cell3.cell_type === CELL_TYPES.markdown) {
      const cellContent = ensureString(cell3.source);
      const omitBlockDivider = index4 === 0 && cellContent.startsWith("---\n");
      const cellMdast = parseMyst(session, cellContent, file, { ignoreFrontmatter: index4 > 0 });
      if (cell3.attachments) {
        replaceAttachmentsTransform(session, cellMdast, cell3.attachments, file);
      }
      if (omitBlockDivider) {
        return acc.concat(...cellMdast.children);
      }
      const block5 = blockParent(cell3, cellMdast.children);
      const userExpressions = (_a7 = block5.data) === null || _a7 === void 0 ? void 0 : _a7[metadataSection];
      const inlineNodes = selectAll("inlineExpression", block5);
      inlineNodes.forEach((inlineExpression3) => {
        const data = findExpression(userExpressions, inlineExpression3.value);
        if (!data)
          return;
        inlineExpression3.result = data.result;
      });
      return acc.concat(block5);
    }
    if (cell3.cell_type === CELL_TYPES.raw) {
      const raw2 = {
        type: "code",
        lang: "",
        value: ensureString(cell3.source)
      };
      return acc.concat(blockParent(cell3, [raw2]));
    }
    if (cell3.cell_type === CELL_TYPES.code) {
      const code7 = {
        type: "code",
        lang: language,
        executable: true,
        value: ensureString(cell3.source)
      };
      const output2 = {
        type: "output",
        id: nanoid(),
        data: []
      };
      if (cell3.outputs && cell3.outputs.length > 0) {
        output2.data = cell3.outputs;
      }
      return acc.concat(blockParent(cell3, [code7, output2]));
    }
    return acc;
  }, Promise.resolve([])));
  logMessagesFromVFile(session, vfile2);
  const mdast2 = { type: "root", children: items };
  return { mdast: mdast2, frontmatter, widgets };
}

// ../myst-cli/dist/process/file.js
function checkCache2(cache, content3, file) {
  const sha256 = (0, import_node_crypto3.createHash)("sha256").update(content3).digest("hex");
  cache.store.dispatch(watch.actions.markFileChanged({ path: file, sha256 }));
  const mdast2 = cache.$getMdast(file);
  const useCache = (mdast2 === null || mdast2 === void 0 ? void 0 : mdast2.pre) && mdast2.sha256 === sha256;
  return { useCache, sha256 };
}
function loadMdFile(session, content3, file, opts) {
  var _a6;
  const vfile2 = new VFile();
  vfile2.path = file;
  const mdast2 = parseMyst(session, content3, file);
  const { frontmatter, identifiers } = getPageFrontmatter(session, mdast2, vfile2, opts === null || opts === void 0 ? void 0 : opts.preFrontmatter, opts === null || opts === void 0 ? void 0 : opts.keepTitleNode);
  return { kind: (_a6 = opts === null || opts === void 0 ? void 0 : opts.kind) !== null && _a6 !== void 0 ? _a6 : SourceFileKind.Article, mdast: mdast2, frontmatter, identifiers };
}
async function loadNotebookFile(session, content3, file, opts) {
  var _a6;
  const vfile2 = new VFile();
  vfile2.path = file;
  const { mdast: mdast2, frontmatter: nbFrontmatter, widgets } = await processNotebookFull(session, file, content3);
  const { frontmatter: cellFrontmatter, identifiers } = getPageFrontmatter(session, mdast2, vfile2, opts === null || opts === void 0 ? void 0 : opts.preFrontmatter, opts === null || opts === void 0 ? void 0 : opts.keepTitleNode);
  const frontmatter = fillProjectFrontmatter(cellFrontmatter, nbFrontmatter, frontmatterValidationOpts(vfile2));
  return { kind: (_a6 = opts === null || opts === void 0 ? void 0 : opts.kind) !== null && _a6 !== void 0 ? _a6 : SourceFileKind.Notebook, mdast: mdast2, frontmatter, identifiers, widgets };
}
function loadTexFile(session, content3, file, opts) {
  var _a6, _b;
  const vfile2 = new VFile();
  vfile2.path = file;
  const tex = new TexParser(content3, vfile2);
  const frontmatter = validatePageFrontmatter({
    title: toText(tex.data.frontmatter.title),
    short_title: toText(tex.data.frontmatter.short_title),
    authors: tex.data.frontmatter.authors,
    // TODO: affiliations: tex.data.frontmatter.affiliations,
    keywords: tex.data.frontmatter.keywords,
    math: tex.data.macros,
    bibliography: tex.data.bibliography,
    ...(_a6 = opts === null || opts === void 0 ? void 0 : opts.preFrontmatter) !== null && _a6 !== void 0 ? _a6 : {}
  }, frontmatterValidationOpts(vfile2));
  logMessagesFromVFile(session, vfile2);
  return {
    kind: (_b = opts === null || opts === void 0 ? void 0 : opts.kind) !== null && _b !== void 0 ? _b : SourceFileKind.Article,
    mdast: tex.ast,
    frontmatter
  };
}
function mystJSONValidationOpts(vfile2, opts) {
  var _a6;
  return {
    property: (_a6 = opts === null || opts === void 0 ? void 0 : opts.property) !== null && _a6 !== void 0 ? _a6 : "file",
    file: vfile2.path,
    messages: {},
    errorLogFn: (message) => {
      var _a7;
      fileError(vfile2, message, { ruleId: (_a7 = opts === null || opts === void 0 ? void 0 : opts.ruleId) !== null && _a7 !== void 0 ? _a7 : RuleId.mystJsonValid });
    },
    warningLogFn: (message) => {
      var _a7;
      fileWarn(vfile2, message, { ruleId: (_a7 = opts === null || opts === void 0 ? void 0 : opts.ruleId) !== null && _a7 !== void 0 ? _a7 : RuleId.mystJsonValid });
    }
  };
}
function validateMySTJSON(input3, opts) {
  const value = validateObjectKeys(input3, { required: ["mdast"], optional: ["kind", "frontmatter"] }, opts);
  if (value === void 0) {
    return void 0;
  }
  const { mdast: mdast2 } = value;
  let kind;
  if (defined(value.kind)) {
    kind = validateEnum(value.kind, {
      ...incrementOptions("kind", opts),
      enum: SourceFileKind
    });
  }
  let frontmatter;
  if (defined(value.frontmatter)) {
    frontmatter = validatePageFrontmatter(value.frontmatter, incrementOptions("frontmatter", opts));
  }
  return {
    mdast: mdast2,
    kind: kind !== null && kind !== void 0 ? kind : SourceFileKind.Article,
    frontmatter: frontmatter !== null && frontmatter !== void 0 ? frontmatter : {}
  };
}
function loadMySTJSON(session, content3, file, opts) {
  var _a6;
  const vfile2 = new VFile();
  vfile2.path = file;
  const rawData = JSON.parse(content3);
  const result = validateMySTJSON(rawData, mystJSONValidationOpts(vfile2));
  if (result === void 0) {
    logMessagesFromVFile(session, vfile2);
    throw new Error("Unable to load JSON file: error during validation");
  } else {
    const { mdast: mdast2, kind, frontmatter: pageFrontmatter } = result;
    const { frontmatter, identifiers } = getPageFrontmatter(session, mdast2, vfile2, { ...pageFrontmatter, ...opts === null || opts === void 0 ? void 0 : opts.preFrontmatter }, opts === null || opts === void 0 ? void 0 : opts.keepTitleNode);
    logMessagesFromVFile(session, vfile2);
    return { mdast: mdast2, kind: (_a6 = opts === null || opts === void 0 ? void 0 : opts.kind) !== null && _a6 !== void 0 ? _a6 : kind, frontmatter, identifiers };
  }
}
function getLocation(file, projectPath) {
  let location4 = file;
  if (projectPath) {
    location4 = `/${import_node_path18.default.relative(projectPath, file)}`;
  }
  return location4.replaceAll("\\", "/");
}
async function loadFile(session, file, projectPath, extension, opts) {
  var _a6;
  const toc = tic();
  session.store.dispatch(warnings.actions.clearWarnings({ file }));
  const cache = castSession(session);
  let success = true;
  let pre2;
  let successMessage;
  try {
    const content3 = import_node_fs13.default.readFileSync(file).toString();
    const { sha256, useCache } = checkCache2(cache, content3, file);
    if (useCache) {
      successMessage = `loadFile: ${file} already loaded.`;
      pre2 = (_a6 = cache.$getMdast(file)) === null || _a6 === void 0 ? void 0 : _a6.pre;
    } else {
      const ext2 = extension || parseFilePath(file).ext.toLowerCase();
      let loadResult;
      switch (ext2) {
        case ".md": {
          loadResult = loadMdFile(session, content3, file, opts);
          break;
        }
        case ".ipynb": {
          loadResult = await loadNotebookFile(session, content3, file, opts);
          break;
        }
        case ".tex": {
          loadResult = loadTexFile(session, content3, file, opts);
          break;
        }
        case ".bib": {
          const renderers = await loadBibTeXCitationRenderers(session, file);
          cache.$citationRenderers[file] = renderers;
          Object.entries(renderers).forEach(([id, renderer]) => {
            var _a7;
            const normalizedDOI = (_a7 = doi.normalize(renderer.getDOI())) === null || _a7 === void 0 ? void 0 : _a7.toLowerCase();
            if (!normalizedDOI || cache.$doiRenderers[normalizedDOI])
              return;
            cache.$doiRenderers[normalizedDOI] = { id, render: renderer };
          });
          break;
        }
        case ".myst.json": {
          loadResult = loadMySTJSON(session, content3, file);
          break;
        }
        default:
          addWarningForFile(session, file, "Unrecognized extension", "error", {
            ruleId: RuleId.mystFileLoads
          });
          session.log.info(`"${file}": Please rerun the build with "-c" to ensure the built files are cleared.`);
          success = false;
      }
      if (loadResult) {
        pre2 = { file, location: getLocation(file, projectPath), ...loadResult };
        cache.$setMdast(file, {
          sha256,
          pre: pre2
        });
      }
    }
  } catch (error) {
    session.log.debug(`

${error === null || error === void 0 ? void 0 : error.stack}

`);
    addWarningForFile(session, file, `Error reading file: ${error}`, "error", {
      ruleId: RuleId.mystFileLoads
    });
    success = false;
  }
  if (success)
    session.log.debug(successMessage !== null && successMessage !== void 0 ? successMessage : toc(`loadFile: loaded ${file} in %s.`));
  if (pre2 === null || pre2 === void 0 ? void 0 : pre2.frontmatter) {
    pre2.frontmatter.parts = await loadFrontmatterParts(session, file, "parts", pre2.frontmatter, projectPath);
  }
  return pre2;
}
async function loadFrontmatterParts(session, file, property, frontmatter, projectPath) {
  const { parts, ...pageFrontmatter } = frontmatter;
  const vfile2 = new VFile();
  vfile2.path = file;
  const modifiedParts = await Promise.all(Object.entries(parts !== null && parts !== void 0 ? parts : {}).map(async ([part, contents]) => {
    let partFile;
    if (contents.length === 1 && isValidFile(contents[0])) {
      partFile = import_node_path18.default.resolve(import_node_path18.default.dirname(file), contents[0]);
      if (!import_node_fs13.default.existsSync(partFile)) {
        fileWarn(vfile2, `Part file does not exist: ${partFile}`);
        return [part, contents];
      }
      await loadFile(session, partFile, projectPath, void 0, {
        kind: SourceFileKind.Part,
        /** Frontmatter from the source page is prioritized over frontmatter from the part file itself */
        preFrontmatter: pageFrontmatter
      });
      session.store.dispatch(watch.actions.addLocalDependency({
        path: file,
        dependency: partFile
      }));
      const proj = selectors_exports.selectLocalProject(session.store.getState(), projectPath !== null && projectPath !== void 0 ? projectPath : ".");
      if ((proj === null || proj === void 0 ? void 0 : proj.index) === partFile) {
        fileWarn(vfile2, `index file is also used as a part: ${partFile}`);
      } else if (proj) {
        const filteredPages = proj.pages.filter((page) => {
          const { file: pageFile, implicit } = page;
          if (!pageFile)
            return true;
          if (pageFile !== partFile)
            return true;
          if (!implicit) {
            fileWarn(vfile2, `project file is also used as a part: ${partFile}`);
          }
          return !implicit;
        });
        const newProj = { ...proj, pages: filteredPages };
        session.store.dispatch(projects.actions.receive(newProj));
      }
    } else {
      const cache = castSession(session);
      partFile = `${import_node_path18.default.resolve(file)}#${property}.${part}`;
      if (contents.length !== 1 || contents[0] !== partFile || !cache.$getMdast(contents[0])) {
        const mdast2 = {
          type: "root",
          children: contents.map((content3) => {
            const root6 = parseMyst(session, content3, file);
            return {
              type: "block",
              data: { part },
              children: root6.children
            };
          })
        };
        cache.$setMdast(partFile, {
          pre: {
            kind: SourceFileKind.Part,
            file: partFile,
            mdast: mdast2,
            // Same frontmatter as the containing page
            frontmatter: { ...pageFrontmatter },
            location: getLocation(file, projectPath)
          }
        });
      }
      session.store.dispatch(config.actions.receiveFilePart({
        partFile,
        file
      }));
    }
    session.store.dispatch(config.actions.receiveProjectPart({
      partFile,
      path: projectPath !== null && projectPath !== void 0 ? projectPath : "."
    }));
    return [part, [partFile]];
  }));
  logMessagesFromVFile(session, vfile2);
  return Object.fromEntries(modifiedParts);
}
async function bibFilesInDir(session, dir, load2 = true) {
  const bibFiles = await Promise.all(import_node_fs13.default.readdirSync(dir).map(async (f3) => {
    if (import_node_path18.default.extname(f3).toLowerCase() === ".bib") {
      const bibFile = import_node_path18.default.join(dir, f3);
      if (load2)
        await loadFile(session, bibFile);
      return bibFile;
    }
  }));
  return bibFiles.filter((f3) => Boolean(f3));
}
function selectFile(session, file) {
  var _a6;
  const cache = castSession(session);
  if (!cache.$getMdast(file)) {
    addWarningForFile(session, file, `Expected mdast to be processed`, "error", {
      ruleId: RuleId.selectedFileIsProcessed
    });
    return void 0;
  }
  const mdastPost = (_a6 = cache.$getMdast(file)) === null || _a6 === void 0 ? void 0 : _a6.post;
  if (!mdastPost) {
    addWarningForFile(session, file, `Expected mdast to be processed and transformed`, "error", {
      ruleId: RuleId.selectedFileIsProcessed
    });
    return void 0;
  }
  return mdastPost;
}
async function getRawFrontmatterFromFile(session, file, projectPath) {
  const state = session.store.getState();
  if (projectPath && import_node_path18.default.resolve(file) === selectors_exports.selectLocalConfigFile(state, projectPath)) {
    return selectors_exports.selectLocalProjectConfig(state, projectPath);
  }
  const cache = castSession(session);
  if (!cache.$getMdast(file))
    await loadFile(session, file, projectPath);
  const result = cache.$getMdast(file);
  if (!result || !result.pre)
    return void 0;
  return result.pre.frontmatter;
}

// ../myst-cli/dist/config.js
var VERSION = 1;
function emptyConfig() {
  return {
    version: VERSION
  };
}
function defaultConfigFile(session, path45) {
  return (0, import_node_path19.resolve)(path45, session.configFiles[0]);
}
function configFromPath(session, path45) {
  const configs = session.configFiles.map((file) => {
    return (0, import_node_path19.resolve)(path45, file);
  }).filter((file) => {
    return import_node_fs14.default.existsSync(file);
  });
  if (configs.length > 1)
    throw Error(`Multiple config files in ${path45}`);
  if (configs.length === 0)
    return void 0;
  return configs[0];
}
function loadConfigYaml(file) {
  if (!import_node_fs14.default.existsSync(file))
    throw Error(`Cannot find config file: ${file}`);
  let rawConf;
  try {
    rawConf = js_yaml_default.load(import_node_fs14.default.readFileSync(file, "utf-8"));
  } catch (err) {
    const suffix = err.message ? `

${err.message}` : "";
    throw Error(`Unable to read config file ${file} as YAML${suffix}`);
  }
  return rawConf;
}
function configValidationOpts(vfile2, property, ruleId) {
  return {
    file: vfile2.path,
    property,
    messages: {},
    errorLogFn: (message) => {
      fileError(vfile2, message, { ruleId });
    },
    warningLogFn: (message) => {
      fileWarn(vfile2, message, { ruleId });
    }
  };
}
function fillSiteConfig(base5, filler, opts) {
  return fillSiteFrontmatter(base5, filler, opts, Object.keys(filler));
}
function handleDeprecatedFields(conf, file, vfile2) {
  var _a6, _b, _c, _d2;
  if ((_a6 = conf.site) === null || _a6 === void 0 ? void 0 : _a6.frontmatter) {
    fileWarn(vfile2, `Frontmatter fields should be defined directly on site, not nested under "${file}#site.frontmatter"`, { ruleId: RuleId.configHasNoDeprecatedFields });
    const { frontmatter, ...rest } = conf.site;
    conf.site = { ...frontmatter, ...rest };
  }
  if ((_b = conf.project) === null || _b === void 0 ? void 0 : _b.frontmatter) {
    fileWarn(vfile2, `Frontmatter fields should be defined directly on project, not nested under "${file}#project.frontmatter"`, { ruleId: RuleId.configHasNoDeprecatedFields });
    const { frontmatter, ...rest } = conf.project;
    conf.project = { ...frontmatter, ...rest };
  }
  if ((_c = conf.project) === null || _c === void 0 ? void 0 : _c.biblio) {
    fileWarn(vfile2, `biblio is deprecated, please use first_page/last_page/volume/issue fields "${file}#project"`, { ruleId: RuleId.configHasNoDeprecatedFields });
    const { biblio, ...rest } = conf.project;
    conf.project = { ...biblio, ...rest };
  }
  if ((_d2 = conf.site) === null || _d2 === void 0 ? void 0 : _d2.logoText) {
    fileWarn(vfile2, `logoText is deprecated, please use logo_text in "${file}#site"`, {
      ruleId: RuleId.configHasNoDeprecatedFields
    });
    const { logoText, ...rest } = conf.site;
    conf.site = { logo_text: logoText, ...rest };
  }
}
async function getValidatedConfigsFromFile(session, file, vfile2, stack) {
  var _a6;
  if (!vfile2) {
    vfile2 = new VFile();
    vfile2.path = file;
  }
  const opts = configValidationOpts(vfile2, "config", RuleId.validConfigStructure);
  const conf = validateObjectKeys(loadConfigYaml(file), {
    required: ["version"],
    optional: ["site", "project", "extend"],
    alias: { extends: "extend" }
  }, opts);
  if (conf && conf.version !== VERSION) {
    validationError(`"${conf.version}" does not match ${VERSION}`, incrementOptions("version", opts));
  }
  logMessagesFromVFile(session, vfile2);
  if (!conf || opts.messages.errors) {
    throw Error(`Please address invalid config file ${file}`);
  }
  handleDeprecatedFields(conf, file, vfile2);
  let site;
  let project;
  const projectOpts = configValidationOpts(vfile2, "config.project", RuleId.validProjectConfig);
  let extend5;
  if (conf.extend) {
    extend5 = await Promise.all(((_a6 = validateList(conf.extend, { coerce: true, ...incrementOptions("extend", opts) }, (item, index4) => {
      return validateString(item, incrementOptions(`extend.${index4}`, opts));
    })) !== null && _a6 !== void 0 ? _a6 : []).map(async (extendFile) => {
      const resolvedFile = await resolveToAbsolute(session, (0, import_node_path19.dirname)(file), extendFile, {
        allowRemote: true
      });
      return resolvedFile;
    }));
    stack = [...stack !== null && stack !== void 0 ? stack : [], file];
    await Promise.all((extend5 !== null && extend5 !== void 0 ? extend5 : []).map(async (extFile) => {
      if (stack === null || stack === void 0 ? void 0 : stack.includes(extFile)) {
        fileError(vfile2, 'Circular dependency encountered during "config.extend" resolution', {
          ruleId: RuleId.validConfigStructure,
          note: [...stack, extFile].map((f3) => resolveToRelative(session, ".", f3)).join(" > ")
        });
        return;
      }
      const { site: extSite, project: extProject } = await getValidatedConfigsFromFile(session, extFile, vfile2, stack);
      session.store.dispatch(config.actions.receiveConfigExtension({ file: extFile }));
      if (extSite) {
        site = site ? fillSiteConfig(extSite, site, incrementOptions("extend", opts)) : extSite;
      }
      if (extProject) {
        project = project ? fillProjectFrontmatter(extProject, project, projectOpts) : extProject;
      }
    }));
  }
  const { site: rawSite, project: rawProject } = conf !== null && conf !== void 0 ? conf : {};
  const path45 = (0, import_node_path19.dirname)(file);
  if (rawProject) {
    project = fillProjectFrontmatter(await validateProjectConfigAndThrow(session, path45, vfile2, rawProject), project !== null && project !== void 0 ? project : {}, projectOpts);
  }
  if (project) {
    session.log.debug(`Loaded project config from ${file}`);
  } else {
    session.log.debug(`No project config defined in ${file}`);
  }
  if (rawSite) {
    site = fillSiteConfig(await validateSiteConfigAndThrow(session, path45, vfile2, rawSite), site !== null && site !== void 0 ? site : {}, incrementOptions("extend", opts));
  }
  if (site) {
    session.log.debug(`Loaded site config from ${file}`);
  } else {
    session.log.debug(`No site config in ${file}`);
  }
  logMessagesFromVFile(session, vfile2);
  return { site, project, extend: extend5 };
}
async function loadConfig(session, path45, opts) {
  const file = configFromPath(session, path45);
  if (!file) {
    session.log.debug(`No config loaded from path: ${path45}`);
    return;
  }
  const rawConf = loadConfigYaml(file);
  if (!(opts === null || opts === void 0 ? void 0 : opts.reloadProject)) {
    const existingConf = selectors_exports.selectLocalRawConfig(session.store.getState(), path45);
    if (existingConf && JSON.stringify(rawConf) === JSON.stringify(existingConf.raw)) {
      return existingConf.validated;
    }
  }
  const { site, project, extend: extend5 } = await getValidatedConfigsFromFile(session, file);
  const validated = { ...rawConf, site, project, extend: extend5 };
  session.store.dispatch(config.actions.receiveRawConfig({
    path: path45,
    file,
    raw: rawConf,
    validated
  }));
  if (site)
    saveSiteConfig(session, path45, site);
  if (project)
    saveProjectConfig(session, path45, project);
  return validated;
}
async function resolveToAbsolute(session, basePath, relativePath, opts) {
  let message;
  if ((opts === null || opts === void 0 ? void 0 : opts.allowRemote) && isUrl2(relativePath)) {
    const cacheFilename = `config-item-${computeHash(relativePath)}${(0, import_node_path19.extname)(new URL(relativePath).pathname)}`;
    if (!loadFromCache(session, cacheFilename, { maxAge: 30 })) {
      try {
        const resp = await session.fetch(relativePath);
        if (resp.ok) {
          writeToCache(session, cacheFilename, Buffer.from(await resp.arrayBuffer()));
        } else {
          message = `Bad response from config URL: ${relativePath}`;
        }
      } catch {
        message = `Error fetching config URL: ${relativePath}`;
      }
    }
    relativePath = cachePath(session, cacheFilename);
  }
  try {
    const absPath = (0, import_node_path19.resolve)(basePath, relativePath);
    if ((opts === null || opts === void 0 ? void 0 : opts.allowNotExist) || import_node_fs14.default.existsSync(absPath)) {
      return absPath;
    }
    message = message !== null && message !== void 0 ? message : `Does not exist as local path: ${absPath}`;
  } catch {
    message = message !== null && message !== void 0 ? message : `Unable to resolve as local path: ${relativePath}`;
  }
  session.log.debug(message);
  return relativePath;
}
function resolveToRelative(session, basePath, absPath, opts) {
  let message;
  try {
    if ((opts === null || opts === void 0 ? void 0 : opts.allowNotExist) || import_node_fs14.default.existsSync(absPath)) {
      return (0, import_node_path19.relative)(basePath, absPath) || ".";
    }
    message = `Does not exist as local path: ${absPath}`;
  } catch {
    message = `Unable to resolve as relative path: ${absPath}`;
  }
  session.log.debug(message);
  return absPath;
}
async function resolveSiteConfigPaths(session, path45, siteConfig, resolutionFn, file) {
  const resolvedFields = {};
  if (siteConfig.projects) {
    resolvedFields.projects = await Promise.all(siteConfig.projects.map(async (proj) => {
      if (proj.path) {
        return { ...proj, path: await resolutionFn(session, path45, proj.path) };
      }
      return proj;
    }));
  }
  if (siteConfig.parts) {
    resolvedFields.parts = await loadFrontmatterParts(session, file, "site.parts", { parts: siteConfig.parts }, path45);
  }
  return { ...siteConfig, ...resolvedFields };
}
async function resolveProjectConfigPaths(session, path45, projectConfig, resolutionFn, file) {
  const resolvedFields = {};
  if (projectConfig.bibliography) {
    resolvedFields.bibliography = await Promise.all(projectConfig.bibliography.map(async (f3) => {
      const resolved = await resolutionFn(session, path45, f3);
      return resolved;
    }));
  }
  if (projectConfig.index) {
    resolvedFields.index = await resolutionFn(session, path45, projectConfig.index);
  }
  if (projectConfig.plugins) {
    resolvedFields.plugins = await Promise.all(projectConfig.plugins.map(async (info) => {
      const resolved = await resolutionFn(session, path45, info.path, {
        allowRemote: info.type !== "executable"
      });
      if (import_node_fs14.default.existsSync(resolved)) {
        return { ...info, path: resolved };
      } else {
        return info;
      }
    }));
    await session.loadPlugins(resolvedFields.plugins);
  }
  if (projectConfig.parts) {
    resolvedFields.parts = await loadFrontmatterParts(session, file, "project.parts", { parts: projectConfig.parts }, path45);
  }
  return { ...projectConfig, ...resolvedFields };
}
async function validateSiteConfigAndThrow(session, path45, vfile2, rawSite) {
  const site = validateSiteConfig(rawSite, configValidationOpts(vfile2, "config.site", RuleId.validSiteConfig));
  logMessagesFromVFile(session, vfile2);
  if (!site) {
    const errorSuffix = vfile2.path ? ` in ${vfile2.path}` : "";
    throw Error(`Please address invalid site config${errorSuffix}`);
  }
  return resolveSiteConfigPaths(session, path45, site, resolveToAbsolute, vfile2.path);
}
function saveSiteConfig(session, path45, site) {
  session.store.dispatch(config.actions.receiveSiteConfig({ path: path45, ...site }));
}
async function validateProjectConfigAndThrow(session, path45, vfile2, rawProject) {
  const project = validateProjectConfig(rawProject, configValidationOpts(vfile2, "config.project", RuleId.validProjectConfig));
  logMessagesFromVFile(session, vfile2);
  if (!project) {
    const errorSuffix = vfile2.path ? ` in ${vfile2.path}` : "";
    throw Error(`Please address invalid project config${errorSuffix}`);
  }
  return resolveProjectConfigPaths(session, path45, project, resolveToAbsolute, vfile2.path);
}
function saveProjectConfig(session, path45, project) {
  session.store.dispatch(config.actions.receiveProjectConfig({ path: path45, ...project }));
}
async function writeConfigs(session, path45, newConfigs) {
  var _a6;
  let { siteConfig, projectConfig } = newConfigs || {};
  const file = configFromPath(session, path45) || defaultConfigFile(session, path45);
  const vfile2 = new VFile();
  vfile2.path = file;
  if (projectConfig) {
    saveProjectConfig(session, path45, await validateProjectConfigAndThrow(session, path45, vfile2, projectConfig));
  }
  projectConfig = selectors_exports.selectLocalProjectConfig(session.store.getState(), path45);
  if (projectConfig) {
    projectConfig = prepareToWrite(projectConfig);
    projectConfig = await resolveProjectConfigPaths(session, path45, projectConfig, resolveToRelative, file);
  }
  if (siteConfig) {
    saveSiteConfig(session, path45, await validateSiteConfigAndThrow(session, path45, vfile2, siteConfig));
  }
  siteConfig = selectors_exports.selectLocalSiteConfig(session.store.getState(), path45);
  if (siteConfig) {
    siteConfig = await resolveSiteConfigPaths(session, path45, siteConfig, resolveToRelative, file);
  }
  if (!siteConfig && !projectConfig) {
    session.log.debug(`No new config to write to ${file}`);
    return;
  }
  const validatedRawConfig = (_a6 = await loadConfig(session, path45)) !== null && _a6 !== void 0 ? _a6 : emptyConfig();
  let logContent;
  if (siteConfig && projectConfig) {
    logContent = "site and project configs";
  } else if (siteConfig) {
    logContent = "site config";
  } else {
    logContent = "project config";
  }
  session.log.debug(`Writing ${logContent} to ${file}`);
  const newConfig = { ...validatedRawConfig };
  if (siteConfig)
    newConfig.site = { ...validatedRawConfig.site, ...siteConfig };
  if (projectConfig)
    newConfig.project = { ...validatedRawConfig.project, ...projectConfig };
  writeFileToFolder(file, js_yaml_default.dump(newConfig), "utf-8");
}
async function findCurrentProjectAndLoad(session, path45) {
  path45 = (0, import_node_path19.resolve)(path45);
  if (configFromPath(session, path45)) {
    await loadConfig(session, path45);
    const project = selectors_exports.selectLocalProjectConfig(session.store.getState(), path45);
    if (project) {
      session.store.dispatch(config.actions.receiveCurrentProjectPath({ path: path45 }));
      return path45;
    }
  }
  if ((0, import_node_path19.dirname)(path45) === path45) {
    return void 0;
  }
  return findCurrentProjectAndLoad(session, (0, import_node_path19.dirname)(path45));
}
async function findCurrentSiteAndLoad(session, path45) {
  path45 = (0, import_node_path19.resolve)(path45);
  if (configFromPath(session, path45)) {
    await loadConfig(session, path45);
    const site = selectors_exports.selectLocalSiteConfig(session.store.getState(), path45);
    if (site) {
      session.store.dispatch(config.actions.receiveCurrentSitePath({ path: path45 }));
      return path45;
    }
  }
  if ((0, import_node_path19.dirname)(path45) === path45) {
    return void 0;
  }
  return findCurrentSiteAndLoad(session, (0, import_node_path19.dirname)(path45));
}
async function reloadAllConfigsForCurrentSite(session) {
  var _a6;
  const state = session.store.getState();
  const sitePath = selectors_exports.selectCurrentSitePath(state);
  const file = (_a6 = selectors_exports.selectCurrentProjectFile(state)) !== null && _a6 !== void 0 ? _a6 : defaultConfigFile(session, (0, import_node_path19.resolve)("."));
  if (!sitePath) {
    const message = 'Cannot (re)load site config. No configuration file found with "site" property.';
    addWarningForFile(session, file, message, "error", { ruleId: RuleId.siteConfigExists });
    throw Error(message);
  }
  await loadConfig(session, sitePath);
  const siteConfig = selectors_exports.selectCurrentSiteConfig(session.store.getState());
  if (!(siteConfig === null || siteConfig === void 0 ? void 0 : siteConfig.projects))
    return;
  await Promise.all(siteConfig.projects.filter((project) => {
    return Boolean(project.path);
  }).map(async (project) => {
    try {
      await loadConfig(session, project.path);
    } catch (error) {
      session.log.debug(`Failed to find or load project config from "${project.path}"`);
    }
  }));
}

// ../myst-cli/dist/project/load.js
var import_node_fs18 = __toESM(require("fs"), 1);
var import_node_path23 = require("path");

// ../myst-cli/dist/project/fromPath.js
var import_node_fs16 = __toESM(require("fs"), 1);
var import_node_path21 = require("path");

// ../myst-cli/dist/project/fromTOC.js
var import_node_fs15 = __toESM(require("fs"), 1);
var import_node_path20 = require("path");

// ../../node_modules/glob/node_modules/minimatch/dist/mjs/index.js
var import_brace_expansion = __toESM(require_brace_expansion(), 1);

// ../../node_modules/glob/node_modules/minimatch/dist/mjs/assert-valid-pattern.js
var MAX_PATTERN_LENGTH = 1024 * 64;
var assertValidPattern = (pattern) => {
  if (typeof pattern !== "string") {
    throw new TypeError("invalid pattern");
  }
  if (pattern.length > MAX_PATTERN_LENGTH) {
    throw new TypeError("pattern is too long");
  }
};

// ../../node_modules/glob/node_modules/minimatch/dist/mjs/brace-expressions.js
var posixClasses = {
  "[:alnum:]": ["\\p{L}\\p{Nl}\\p{Nd}", true],
  "[:alpha:]": ["\\p{L}\\p{Nl}", true],
  "[:ascii:]": ["\\x00-\\x7f", false],
  "[:blank:]": ["\\p{Zs}\\t", true],
  "[:cntrl:]": ["\\p{Cc}", true],
  "[:digit:]": ["\\p{Nd}", true],
  "[:graph:]": ["\\p{Z}\\p{C}", true, true],
  "[:lower:]": ["\\p{Ll}", true],
  "[:print:]": ["\\p{C}", true],
  "[:punct:]": ["\\p{P}", true],
  "[:space:]": ["\\p{Z}\\t\\r\\n\\v\\f", true],
  "[:upper:]": ["\\p{Lu}", true],
  "[:word:]": ["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}", true],
  "[:xdigit:]": ["A-Fa-f0-9", false]
};
var braceEscape = (s5) => s5.replace(/[[\]\\-]/g, "\\$&");
var regexpEscape = (s5) => s5.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
var rangesToString = (ranges) => ranges.join("");
var parseClass = (glob2, position6) => {
  const pos = position6;
  if (glob2.charAt(pos) !== "[") {
    throw new Error("not in a brace expression");
  }
  const ranges = [];
  const negs = [];
  let i2 = pos + 1;
  let sawStart = false;
  let uflag = false;
  let escaping = false;
  let negate = false;
  let endPos = pos;
  let rangeStart = "";
  WHILE: while (i2 < glob2.length) {
    const c = glob2.charAt(i2);
    if ((c === "!" || c === "^") && i2 === pos + 1) {
      negate = true;
      i2++;
      continue;
    }
    if (c === "]" && sawStart && !escaping) {
      endPos = i2 + 1;
      break;
    }
    sawStart = true;
    if (c === "\\") {
      if (!escaping) {
        escaping = true;
        i2++;
        continue;
      }
    }
    if (c === "[" && !escaping) {
      for (const [cls, [unip, u3, neg]] of Object.entries(posixClasses)) {
        if (glob2.startsWith(cls, i2)) {
          if (rangeStart) {
            return ["$.", false, glob2.length - pos, true];
          }
          i2 += cls.length;
          if (neg)
            negs.push(unip);
          else
            ranges.push(unip);
          uflag = uflag || u3;
          continue WHILE;
        }
      }
    }
    escaping = false;
    if (rangeStart) {
      if (c > rangeStart) {
        ranges.push(braceEscape(rangeStart) + "-" + braceEscape(c));
      } else if (c === rangeStart) {
        ranges.push(braceEscape(c));
      }
      rangeStart = "";
      i2++;
      continue;
    }
    if (glob2.startsWith("-]", i2 + 1)) {
      ranges.push(braceEscape(c + "-"));
      i2 += 2;
      continue;
    }
    if (glob2.startsWith("-", i2 + 1)) {
      rangeStart = c;
      i2 += 2;
      continue;
    }
    ranges.push(braceEscape(c));
    i2++;
  }
  if (endPos < i2) {
    return ["", false, 0, false];
  }
  if (!ranges.length && !negs.length) {
    return ["$.", false, glob2.length - pos, true];
  }
  if (negs.length === 0 && ranges.length === 1 && /^\\?.$/.test(ranges[0]) && !negate) {
    const r2 = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];
    return [regexpEscape(r2), false, endPos - pos, false];
  }
  const sranges = "[" + (negate ? "^" : "") + rangesToString(ranges) + "]";
  const snegs = "[" + (negate ? "" : "^") + rangesToString(negs) + "]";
  const comb = ranges.length && negs.length ? "(" + sranges + "|" + snegs + ")" : ranges.length ? sranges : snegs;
  return [comb, uflag, endPos - pos, true];
};

// ../../node_modules/glob/node_modules/minimatch/dist/mjs/unescape.js
var unescape2 = (s5, { windowsPathsNoEscape = false } = {}) => {
  return windowsPathsNoEscape ? s5.replace(/\[([^\/\\])\]/g, "$1") : s5.replace(/((?!\\).|^)\[([^\/\\])\]/g, "$1$2").replace(/\\([^\/])/g, "$1");
};

// ../../node_modules/glob/node_modules/minimatch/dist/mjs/ast.js
var types2 = /* @__PURE__ */ new Set(["!", "?", "+", "*", "@"]);
var isExtglobType = (c) => types2.has(c);
var startNoTraversal = "(?!(?:^|/)\\.\\.?(?:$|/))";
var startNoDot = "(?!\\.)";
var addPatternStart = /* @__PURE__ */ new Set(["[", "."]);
var justDots = /* @__PURE__ */ new Set(["..", "."]);
var reSpecials = new Set("().*{}+?[]^$\\!");
var regExpEscape = (s5) => s5.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
var qmark = "[^/]";
var star = qmark + "*?";
var starNoEmpty = qmark + "+?";
var _root, _hasMagic, _uflag, _parts, _parent, _parentIndex, _negs, _filledNegs, _options, _toString2, _emptyExt, _AST_instances, fillNegs_fn, _AST_static, parseAST_fn, partsToRegExp_fn, parseGlob_fn;
var _AST = class _AST {
  constructor(type2, parent2, options = {}) {
    __privateAdd(this, _AST_instances);
    __publicField(this, "type");
    __privateAdd(this, _root);
    __privateAdd(this, _hasMagic);
    __privateAdd(this, _uflag, false);
    __privateAdd(this, _parts, []);
    __privateAdd(this, _parent);
    __privateAdd(this, _parentIndex);
    __privateAdd(this, _negs);
    __privateAdd(this, _filledNegs, false);
    __privateAdd(this, _options);
    __privateAdd(this, _toString2);
    // set to true if it's an extglob with no children
    // (which really means one child of '')
    __privateAdd(this, _emptyExt, false);
    this.type = type2;
    if (type2)
      __privateSet(this, _hasMagic, true);
    __privateSet(this, _parent, parent2);
    __privateSet(this, _root, __privateGet(this, _parent) ? __privateGet(__privateGet(this, _parent), _root) : this);
    __privateSet(this, _options, __privateGet(this, _root) === this ? options : __privateGet(__privateGet(this, _root), _options));
    __privateSet(this, _negs, __privateGet(this, _root) === this ? [] : __privateGet(__privateGet(this, _root), _negs));
    if (type2 === "!" && !__privateGet(__privateGet(this, _root), _filledNegs))
      __privateGet(this, _negs).push(this);
    __privateSet(this, _parentIndex, __privateGet(this, _parent) ? __privateGet(__privateGet(this, _parent), _parts).length : 0);
  }
  get hasMagic() {
    if (__privateGet(this, _hasMagic) !== void 0)
      return __privateGet(this, _hasMagic);
    for (const p5 of __privateGet(this, _parts)) {
      if (typeof p5 === "string")
        continue;
      if (p5.type || p5.hasMagic)
        return __privateSet(this, _hasMagic, true);
    }
    return __privateGet(this, _hasMagic);
  }
  // reconstructs the pattern
  toString() {
    if (__privateGet(this, _toString2) !== void 0)
      return __privateGet(this, _toString2);
    if (!this.type) {
      return __privateSet(this, _toString2, __privateGet(this, _parts).map((p5) => String(p5)).join(""));
    } else {
      return __privateSet(this, _toString2, this.type + "(" + __privateGet(this, _parts).map((p5) => String(p5)).join("|") + ")");
    }
  }
  push(...parts) {
    for (const p5 of parts) {
      if (p5 === "")
        continue;
      if (typeof p5 !== "string" && !(p5 instanceof _AST && __privateGet(p5, _parent) === this)) {
        throw new Error("invalid part: " + p5);
      }
      __privateGet(this, _parts).push(p5);
    }
  }
  toJSON() {
    var _a6;
    const ret = this.type === null ? __privateGet(this, _parts).slice().map((p5) => typeof p5 === "string" ? p5 : p5.toJSON()) : [this.type, ...__privateGet(this, _parts).map((p5) => p5.toJSON())];
    if (this.isStart() && !this.type)
      ret.unshift([]);
    if (this.isEnd() && (this === __privateGet(this, _root) || __privateGet(__privateGet(this, _root), _filledNegs) && ((_a6 = __privateGet(this, _parent)) == null ? void 0 : _a6.type) === "!")) {
      ret.push({});
    }
    return ret;
  }
  isStart() {
    var _a6;
    if (__privateGet(this, _root) === this)
      return true;
    if (!((_a6 = __privateGet(this, _parent)) == null ? void 0 : _a6.isStart()))
      return false;
    if (__privateGet(this, _parentIndex) === 0)
      return true;
    const p5 = __privateGet(this, _parent);
    for (let i2 = 0; i2 < __privateGet(this, _parentIndex); i2++) {
      const pp = __privateGet(p5, _parts)[i2];
      if (!(pp instanceof _AST && pp.type === "!")) {
        return false;
      }
    }
    return true;
  }
  isEnd() {
    var _a6, _b, _c;
    if (__privateGet(this, _root) === this)
      return true;
    if (((_a6 = __privateGet(this, _parent)) == null ? void 0 : _a6.type) === "!")
      return true;
    if (!((_b = __privateGet(this, _parent)) == null ? void 0 : _b.isEnd()))
      return false;
    if (!this.type)
      return (_c = __privateGet(this, _parent)) == null ? void 0 : _c.isEnd();
    const pl = __privateGet(this, _parent) ? __privateGet(__privateGet(this, _parent), _parts).length : 0;
    return __privateGet(this, _parentIndex) === pl - 1;
  }
  copyIn(part) {
    if (typeof part === "string")
      this.push(part);
    else
      this.push(part.clone(this));
  }
  clone(parent2) {
    const c = new _AST(this.type, parent2);
    for (const p5 of __privateGet(this, _parts)) {
      c.copyIn(p5);
    }
    return c;
  }
  static fromGlob(pattern, options = {}) {
    var _a6;
    const ast = new _AST(null, void 0, options);
    __privateMethod(_a6 = _AST, _AST_static, parseAST_fn).call(_a6, pattern, ast, 0, options);
    return ast;
  }
  // returns the regular expression if there's magic, or the unescaped
  // string if not.
  toMMPattern() {
    if (this !== __privateGet(this, _root))
      return __privateGet(this, _root).toMMPattern();
    const glob2 = this.toString();
    const [re, body3, hasMagic2, uflag] = this.toRegExpSource();
    const anyMagic = hasMagic2 || __privateGet(this, _hasMagic) || __privateGet(this, _options).nocase && !__privateGet(this, _options).nocaseMagicOnly && glob2.toUpperCase() !== glob2.toLowerCase();
    if (!anyMagic) {
      return body3;
    }
    const flags = (__privateGet(this, _options).nocase ? "i" : "") + (uflag ? "u" : "");
    return Object.assign(new RegExp(`^${re}$`, flags), {
      _src: re,
      _glob: glob2
    });
  }
  // returns the string match, the regexp source, whether there's magic
  // in the regexp (so a regular expression is required) and whether or
  // not the uflag is needed for the regular expression (for posix classes)
  // TODO: instead of injecting the start/end at this point, just return
  // the BODY of the regexp, along with the start/end portions suitable
  // for binding the start/end in either a joined full-path makeRe context
  // (where we bind to (^|/), or a standalone matchPart context (where
  // we bind to ^, and not /).  Otherwise slashes get duped!
  //
  // In part-matching mode, the start is:
  // - if not isStart: nothing
  // - if traversal possible, but not allowed: ^(?!\.\.?$)
  // - if dots allowed or not possible: ^
  // - if dots possible and not allowed: ^(?!\.)
  // end is:
  // - if not isEnd(): nothing
  // - else: $
  //
  // In full-path matching mode, we put the slash at the START of the
  // pattern, so start is:
  // - if first pattern: same as part-matching mode
  // - if not isStart(): nothing
  // - if traversal possible, but not allowed: /(?!\.\.?(?:$|/))
  // - if dots allowed or not possible: /
  // - if dots possible and not allowed: /(?!\.)
  // end is:
  // - if last pattern, same as part-matching mode
  // - else nothing
  //
  // Always put the (?:$|/) on negated tails, though, because that has to be
  // there to bind the end of the negated pattern portion, and it's easier to
  // just stick it in now rather than try to inject it later in the middle of
  // the pattern.
  //
  // We can just always return the same end, and leave it up to the caller
  // to know whether it's going to be used joined or in parts.
  // And, if the start is adjusted slightly, can do the same there:
  // - if not isStart: nothing
  // - if traversal possible, but not allowed: (?:/|^)(?!\.\.?$)
  // - if dots allowed or not possible: (?:/|^)
  // - if dots possible and not allowed: (?:/|^)(?!\.)
  //
  // But it's better to have a simpler binding without a conditional, for
  // performance, so probably better to return both start options.
  //
  // Then the caller just ignores the end if it's not the first pattern,
  // and the start always gets applied.
  //
  // But that's always going to be $ if it's the ending pattern, or nothing,
  // so the caller can just attach $ at the end of the pattern when building.
  //
  // So the todo is:
  // - better detect what kind of start is needed
  // - return both flavors of starting pattern
  // - attach $ at the end of the pattern when creating the actual RegExp
  //
  // Ah, but wait, no, that all only applies to the root when the first pattern
  // is not an extglob. If the first pattern IS an extglob, then we need all
  // that dot prevention biz to live in the extglob portions, because eg
  // +(*|.x*) can match .xy but not .yx.
  //
  // So, return the two flavors if it's #root and the first child is not an
  // AST, otherwise leave it to the child AST to handle it, and there,
  // use the (?:^|/) style of start binding.
  //
  // Even simplified further:
  // - Since the start for a join is eg /(?!\.) and the start for a part
  // is ^(?!\.), we can just prepend (?!\.) to the pattern (either root
  // or start or whatever) and prepend ^ or / at the Regexp construction.
  toRegExpSource(allowDot) {
    var _a6;
    const dot = allowDot ?? !!__privateGet(this, _options).dot;
    if (__privateGet(this, _root) === this)
      __privateMethod(this, _AST_instances, fillNegs_fn).call(this);
    if (!this.type) {
      const noEmpty = this.isStart() && this.isEnd();
      const src = __privateGet(this, _parts).map((p5) => {
        var _a7;
        const [re, _2, hasMagic2, uflag] = typeof p5 === "string" ? __privateMethod(_a7 = _AST, _AST_static, parseGlob_fn).call(_a7, p5, __privateGet(this, _hasMagic), noEmpty) : p5.toRegExpSource(allowDot);
        __privateSet(this, _hasMagic, __privateGet(this, _hasMagic) || hasMagic2);
        __privateSet(this, _uflag, __privateGet(this, _uflag) || uflag);
        return re;
      }).join("");
      let start2 = "";
      if (this.isStart()) {
        if (typeof __privateGet(this, _parts)[0] === "string") {
          const dotTravAllowed = __privateGet(this, _parts).length === 1 && justDots.has(__privateGet(this, _parts)[0]);
          if (!dotTravAllowed) {
            const aps = addPatternStart;
            const needNoTrav = (
              // dots are allowed, and the pattern starts with [ or .
              dot && aps.has(src.charAt(0)) || // the pattern starts with \., and then [ or .
              src.startsWith("\\.") && aps.has(src.charAt(2)) || // the pattern starts with \.\., and then [ or .
              src.startsWith("\\.\\.") && aps.has(src.charAt(4))
            );
            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));
            start2 = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : "";
          }
        }
      }
      let end = "";
      if (this.isEnd() && __privateGet(__privateGet(this, _root), _filledNegs) && ((_a6 = __privateGet(this, _parent)) == null ? void 0 : _a6.type) === "!") {
        end = "(?:$|\\/)";
      }
      const final2 = start2 + src + end;
      return [
        final2,
        unescape2(src),
        __privateSet(this, _hasMagic, !!__privateGet(this, _hasMagic)),
        __privateGet(this, _uflag)
      ];
    }
    const repeated = this.type === "*" || this.type === "+";
    const start = this.type === "!" ? "(?:(?!(?:" : "(?:";
    let body3 = __privateMethod(this, _AST_instances, partsToRegExp_fn).call(this, dot);
    if (this.isStart() && this.isEnd() && !body3 && this.type !== "!") {
      const s5 = this.toString();
      __privateSet(this, _parts, [s5]);
      this.type = null;
      __privateSet(this, _hasMagic, void 0);
      return [s5, unescape2(this.toString()), false, false];
    }
    let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ? "" : __privateMethod(this, _AST_instances, partsToRegExp_fn).call(this, true);
    if (bodyDotAllowed === body3) {
      bodyDotAllowed = "";
    }
    if (bodyDotAllowed) {
      body3 = `(?:${body3})(?:${bodyDotAllowed})*?`;
    }
    let final = "";
    if (this.type === "!" && __privateGet(this, _emptyExt)) {
      final = (this.isStart() && !dot ? startNoDot : "") + starNoEmpty;
    } else {
      const close2 = this.type === "!" ? (
        // !() must match something,but !(x) can match ''
        "))" + (this.isStart() && !dot && !allowDot ? startNoDot : "") + star + ")"
      ) : this.type === "@" ? ")" : this.type === "?" ? ")?" : this.type === "+" && bodyDotAllowed ? ")" : this.type === "*" && bodyDotAllowed ? `)?` : `)${this.type}`;
      final = start + body3 + close2;
    }
    return [
      final,
      unescape2(body3),
      __privateSet(this, _hasMagic, !!__privateGet(this, _hasMagic)),
      __privateGet(this, _uflag)
    ];
  }
};
_root = new WeakMap();
_hasMagic = new WeakMap();
_uflag = new WeakMap();
_parts = new WeakMap();
_parent = new WeakMap();
_parentIndex = new WeakMap();
_negs = new WeakMap();
_filledNegs = new WeakMap();
_options = new WeakMap();
_toString2 = new WeakMap();
_emptyExt = new WeakMap();
_AST_instances = new WeakSet();
fillNegs_fn = function() {
  if (this !== __privateGet(this, _root))
    throw new Error("should only call on root");
  if (__privateGet(this, _filledNegs))
    return this;
  this.toString();
  __privateSet(this, _filledNegs, true);
  let n;
  while (n = __privateGet(this, _negs).pop()) {
    if (n.type !== "!")
      continue;
    let p5 = n;
    let pp = __privateGet(p5, _parent);
    while (pp) {
      for (let i2 = __privateGet(p5, _parentIndex) + 1; !pp.type && i2 < __privateGet(pp, _parts).length; i2++) {
        for (const part of __privateGet(n, _parts)) {
          if (typeof part === "string") {
            throw new Error("string part in extglob AST??");
          }
          part.copyIn(__privateGet(pp, _parts)[i2]);
        }
      }
      p5 = pp;
      pp = __privateGet(p5, _parent);
    }
  }
  return this;
};
_AST_static = new WeakSet();
parseAST_fn = function(str2, ast, pos, opt) {
  var _a6, _b;
  let escaping = false;
  let inBrace = false;
  let braceStart = -1;
  let braceNeg = false;
  if (ast.type === null) {
    let i3 = pos;
    let acc2 = "";
    while (i3 < str2.length) {
      const c = str2.charAt(i3++);
      if (escaping || c === "\\") {
        escaping = !escaping;
        acc2 += c;
        continue;
      }
      if (inBrace) {
        if (i3 === braceStart + 1) {
          if (c === "^" || c === "!") {
            braceNeg = true;
          }
        } else if (c === "]" && !(i3 === braceStart + 2 && braceNeg)) {
          inBrace = false;
        }
        acc2 += c;
        continue;
      } else if (c === "[") {
        inBrace = true;
        braceStart = i3;
        braceNeg = false;
        acc2 += c;
        continue;
      }
      if (!opt.noext && isExtglobType(c) && str2.charAt(i3) === "(") {
        ast.push(acc2);
        acc2 = "";
        const ext2 = new _AST(c, ast);
        i3 = __privateMethod(_a6 = _AST, _AST_static, parseAST_fn).call(_a6, str2, ext2, i3, opt);
        ast.push(ext2);
        continue;
      }
      acc2 += c;
    }
    ast.push(acc2);
    return i3;
  }
  let i2 = pos + 1;
  let part = new _AST(null, ast);
  const parts = [];
  let acc = "";
  while (i2 < str2.length) {
    const c = str2.charAt(i2++);
    if (escaping || c === "\\") {
      escaping = !escaping;
      acc += c;
      continue;
    }
    if (inBrace) {
      if (i2 === braceStart + 1) {
        if (c === "^" || c === "!") {
          braceNeg = true;
        }
      } else if (c === "]" && !(i2 === braceStart + 2 && braceNeg)) {
        inBrace = false;
      }
      acc += c;
      continue;
    } else if (c === "[") {
      inBrace = true;
      braceStart = i2;
      braceNeg = false;
      acc += c;
      continue;
    }
    if (isExtglobType(c) && str2.charAt(i2) === "(") {
      part.push(acc);
      acc = "";
      const ext2 = new _AST(c, part);
      part.push(ext2);
      i2 = __privateMethod(_b = _AST, _AST_static, parseAST_fn).call(_b, str2, ext2, i2, opt);
      continue;
    }
    if (c === "|") {
      part.push(acc);
      acc = "";
      parts.push(part);
      part = new _AST(null, ast);
      continue;
    }
    if (c === ")") {
      if (acc === "" && __privateGet(ast, _parts).length === 0) {
        __privateSet(ast, _emptyExt, true);
      }
      part.push(acc);
      acc = "";
      ast.push(...parts, part);
      return i2;
    }
    acc += c;
  }
  ast.type = null;
  __privateSet(ast, _hasMagic, void 0);
  __privateSet(ast, _parts, [str2.substring(pos - 1)]);
  return i2;
};
partsToRegExp_fn = function(dot) {
  return __privateGet(this, _parts).map((p5) => {
    if (typeof p5 === "string") {
      throw new Error("string type in extglob ast??");
    }
    const [re, _2, _hasMagic2, uflag] = p5.toRegExpSource(dot);
    __privateSet(this, _uflag, __privateGet(this, _uflag) || uflag);
    return re;
  }).filter((p5) => !(this.isStart() && this.isEnd()) || !!p5).join("|");
};
parseGlob_fn = function(glob2, hasMagic2, noEmpty = false) {
  let escaping = false;
  let re = "";
  let uflag = false;
  for (let i2 = 0; i2 < glob2.length; i2++) {
    const c = glob2.charAt(i2);
    if (escaping) {
      escaping = false;
      re += (reSpecials.has(c) ? "\\" : "") + c;
      continue;
    }
    if (c === "\\") {
      if (i2 === glob2.length - 1) {
        re += "\\\\";
      } else {
        escaping = true;
      }
      continue;
    }
    if (c === "[") {
      const [src, needUflag, consumed, magic] = parseClass(glob2, i2);
      if (consumed) {
        re += src;
        uflag = uflag || needUflag;
        i2 += consumed - 1;
        hasMagic2 = hasMagic2 || magic;
        continue;
      }
    }
    if (c === "*") {
      if (noEmpty && glob2 === "*")
        re += starNoEmpty;
      else
        re += star;
      hasMagic2 = true;
      continue;
    }
    if (c === "?") {
      re += qmark;
      hasMagic2 = true;
      continue;
    }
    re += regExpEscape(c);
  }
  return [re, unescape2(glob2), !!hasMagic2, uflag];
};
__privateAdd(_AST, _AST_static);
var AST = _AST;

// ../../node_modules/glob/node_modules/minimatch/dist/mjs/escape.js
var escape3 = (s5, { windowsPathsNoEscape = false } = {}) => {
  return windowsPathsNoEscape ? s5.replace(/[?*()[\]]/g, "[$&]") : s5.replace(/[?*()[\]\\]/g, "\\$&");
};

// ../../node_modules/glob/node_modules/minimatch/dist/mjs/index.js
var minimatch = (p5, pattern, options = {}) => {
  assertValidPattern(pattern);
  if (!options.nocomment && pattern.charAt(0) === "#") {
    return false;
  }
  return new Minimatch(pattern, options).match(p5);
};
var starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/;
var starDotExtTest = (ext2) => (f3) => !f3.startsWith(".") && f3.endsWith(ext2);
var starDotExtTestDot = (ext2) => (f3) => f3.endsWith(ext2);
var starDotExtTestNocase = (ext2) => {
  ext2 = ext2.toLowerCase();
  return (f3) => !f3.startsWith(".") && f3.toLowerCase().endsWith(ext2);
};
var starDotExtTestNocaseDot = (ext2) => {
  ext2 = ext2.toLowerCase();
  return (f3) => f3.toLowerCase().endsWith(ext2);
};
var starDotStarRE = /^\*+\.\*+$/;
var starDotStarTest = (f3) => !f3.startsWith(".") && f3.includes(".");
var starDotStarTestDot = (f3) => f3 !== "." && f3 !== ".." && f3.includes(".");
var dotStarRE = /^\.\*+$/;
var dotStarTest = (f3) => f3 !== "." && f3 !== ".." && f3.startsWith(".");
var starRE = /^\*+$/;
var starTest = (f3) => f3.length !== 0 && !f3.startsWith(".");
var starTestDot = (f3) => f3.length !== 0 && f3 !== "." && f3 !== "..";
var qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/;
var qmarksTestNocase = ([$0, ext2 = ""]) => {
  const noext = qmarksTestNoExt([$0]);
  if (!ext2)
    return noext;
  ext2 = ext2.toLowerCase();
  return (f3) => noext(f3) && f3.toLowerCase().endsWith(ext2);
};
var qmarksTestNocaseDot = ([$0, ext2 = ""]) => {
  const noext = qmarksTestNoExtDot([$0]);
  if (!ext2)
    return noext;
  ext2 = ext2.toLowerCase();
  return (f3) => noext(f3) && f3.toLowerCase().endsWith(ext2);
};
var qmarksTestDot = ([$0, ext2 = ""]) => {
  const noext = qmarksTestNoExtDot([$0]);
  return !ext2 ? noext : (f3) => noext(f3) && f3.endsWith(ext2);
};
var qmarksTest = ([$0, ext2 = ""]) => {
  const noext = qmarksTestNoExt([$0]);
  return !ext2 ? noext : (f3) => noext(f3) && f3.endsWith(ext2);
};
var qmarksTestNoExt = ([$0]) => {
  const len = $0.length;
  return (f3) => f3.length === len && !f3.startsWith(".");
};
var qmarksTestNoExtDot = ([$0]) => {
  const len = $0.length;
  return (f3) => f3.length === len && f3 !== "." && f3 !== "..";
};
var defaultPlatform = typeof process === "object" && process ? typeof process.env === "object" && process.env && process.env.__MINIMATCH_TESTING_PLATFORM__ || process.platform : "posix";
var path15 = {
  win32: { sep: "\\" },
  posix: { sep: "/" }
};
var sep2 = defaultPlatform === "win32" ? path15.win32.sep : path15.posix.sep;
minimatch.sep = sep2;
var GLOBSTAR = Symbol("globstar **");
minimatch.GLOBSTAR = GLOBSTAR;
var qmark2 = "[^/]";
var star2 = qmark2 + "*?";
var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?";
var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?";
var filter = (pattern, options = {}) => (p5) => minimatch(p5, pattern, options);
minimatch.filter = filter;
var ext = (a2, b = {}) => Object.assign({}, a2, b);
var defaults = (def) => {
  if (!def || typeof def !== "object" || !Object.keys(def).length) {
    return minimatch;
  }
  const orig = minimatch;
  const m2 = (p5, pattern, options = {}) => orig(p5, pattern, ext(def, options));
  return Object.assign(m2, {
    Minimatch: class Minimatch extends orig.Minimatch {
      constructor(pattern, options = {}) {
        super(pattern, ext(def, options));
      }
      static defaults(options) {
        return orig.defaults(ext(def, options)).Minimatch;
      }
    },
    AST: class AST extends orig.AST {
      /* c8 ignore start */
      constructor(type2, parent2, options = {}) {
        super(type2, parent2, ext(def, options));
      }
      /* c8 ignore stop */
      static fromGlob(pattern, options = {}) {
        return orig.AST.fromGlob(pattern, ext(def, options));
      }
    },
    unescape: (s5, options = {}) => orig.unescape(s5, ext(def, options)),
    escape: (s5, options = {}) => orig.escape(s5, ext(def, options)),
    filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),
    defaults: (options) => orig.defaults(ext(def, options)),
    makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),
    braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),
    match: (list6, pattern, options = {}) => orig.match(list6, pattern, ext(def, options)),
    sep: orig.sep,
    GLOBSTAR
  });
};
minimatch.defaults = defaults;
var braceExpand = (pattern, options = {}) => {
  assertValidPattern(pattern);
  if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) {
    return [pattern];
  }
  return (0, import_brace_expansion.default)(pattern);
};
minimatch.braceExpand = braceExpand;
var makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();
minimatch.makeRe = makeRe;
var match2 = (list6, pattern, options = {}) => {
  const mm = new Minimatch(pattern, options);
  list6 = list6.filter((f3) => mm.match(f3));
  if (mm.options.nonull && !list6.length) {
    list6.push(pattern);
  }
  return list6;
};
minimatch.match = match2;
var globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/;
var regExpEscape2 = (s5) => s5.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
var Minimatch = class {
  options;
  set;
  pattern;
  windowsPathsNoEscape;
  nonegate;
  negate;
  comment;
  empty;
  preserveMultipleSlashes;
  partial;
  globSet;
  globParts;
  nocase;
  isWindows;
  platform;
  windowsNoMagicRoot;
  regexp;
  constructor(pattern, options = {}) {
    assertValidPattern(pattern);
    options = options || {};
    this.options = options;
    this.pattern = pattern;
    this.platform = options.platform || defaultPlatform;
    this.isWindows = this.platform === "win32";
    this.windowsPathsNoEscape = !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;
    if (this.windowsPathsNoEscape) {
      this.pattern = this.pattern.replace(/\\/g, "/");
    }
    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;
    this.regexp = null;
    this.negate = false;
    this.nonegate = !!options.nonegate;
    this.comment = false;
    this.empty = false;
    this.partial = !!options.partial;
    this.nocase = !!this.options.nocase;
    this.windowsNoMagicRoot = options.windowsNoMagicRoot !== void 0 ? options.windowsNoMagicRoot : !!(this.isWindows && this.nocase);
    this.globSet = [];
    this.globParts = [];
    this.set = [];
    this.make();
  }
  hasMagic() {
    if (this.options.magicalBraces && this.set.length > 1) {
      return true;
    }
    for (const pattern of this.set) {
      for (const part of pattern) {
        if (typeof part !== "string")
          return true;
      }
    }
    return false;
  }
  debug(..._2) {
  }
  make() {
    const pattern = this.pattern;
    const options = this.options;
    if (!options.nocomment && pattern.charAt(0) === "#") {
      this.comment = true;
      return;
    }
    if (!pattern) {
      this.empty = true;
      return;
    }
    this.parseNegate();
    this.globSet = [...new Set(this.braceExpand())];
    if (options.debug) {
      this.debug = (...args) => console.error(...args);
    }
    this.debug(this.pattern, this.globSet);
    const rawGlobParts = this.globSet.map((s5) => this.slashSplit(s5));
    this.globParts = this.preprocess(rawGlobParts);
    this.debug(this.pattern, this.globParts);
    let set3 = this.globParts.map((s5, _2, __) => {
      if (this.isWindows && this.windowsNoMagicRoot) {
        const isUNC = s5[0] === "" && s5[1] === "" && (s5[2] === "?" || !globMagic.test(s5[2])) && !globMagic.test(s5[3]);
        const isDrive = /^[a-z]:/i.test(s5[0]);
        if (isUNC) {
          return [...s5.slice(0, 4), ...s5.slice(4).map((ss) => this.parse(ss))];
        } else if (isDrive) {
          return [s5[0], ...s5.slice(1).map((ss) => this.parse(ss))];
        }
      }
      return s5.map((ss) => this.parse(ss));
    });
    this.debug(this.pattern, set3);
    this.set = set3.filter((s5) => s5.indexOf(false) === -1);
    if (this.isWindows) {
      for (let i2 = 0; i2 < this.set.length; i2++) {
        const p5 = this.set[i2];
        if (p5[0] === "" && p5[1] === "" && this.globParts[i2][2] === "?" && typeof p5[3] === "string" && /^[a-z]:$/i.test(p5[3])) {
          p5[2] = "?";
        }
      }
    }
    this.debug(this.pattern, this.set);
  }
  // various transforms to equivalent pattern sets that are
  // faster to process in a filesystem walk.  The goal is to
  // eliminate what we can, and push all ** patterns as far
  // to the right as possible, even if it increases the number
  // of patterns that we have to process.
  preprocess(globParts) {
    if (this.options.noglobstar) {
      for (let i2 = 0; i2 < globParts.length; i2++) {
        for (let j = 0; j < globParts[i2].length; j++) {
          if (globParts[i2][j] === "**") {
            globParts[i2][j] = "*";
          }
        }
      }
    }
    const { optimizationLevel = 1 } = this.options;
    if (optimizationLevel >= 2) {
      globParts = this.firstPhasePreProcess(globParts);
      globParts = this.secondPhasePreProcess(globParts);
    } else if (optimizationLevel >= 1) {
      globParts = this.levelOneOptimize(globParts);
    } else {
      globParts = this.adjascentGlobstarOptimize(globParts);
    }
    return globParts;
  }
  // just get rid of adjascent ** portions
  adjascentGlobstarOptimize(globParts) {
    return globParts.map((parts) => {
      let gs = -1;
      while (-1 !== (gs = parts.indexOf("**", gs + 1))) {
        let i2 = gs;
        while (parts[i2 + 1] === "**") {
          i2++;
        }
        if (i2 !== gs) {
          parts.splice(gs, i2 - gs);
        }
      }
      return parts;
    });
  }
  // get rid of adjascent ** and resolve .. portions
  levelOneOptimize(globParts) {
    return globParts.map((parts) => {
      parts = parts.reduce((set3, part) => {
        const prev = set3[set3.length - 1];
        if (part === "**" && prev === "**") {
          return set3;
        }
        if (part === "..") {
          if (prev && prev !== ".." && prev !== "." && prev !== "**") {
            set3.pop();
            return set3;
          }
        }
        set3.push(part);
        return set3;
      }, []);
      return parts.length === 0 ? [""] : parts;
    });
  }
  levelTwoFileOptimize(parts) {
    if (!Array.isArray(parts)) {
      parts = this.slashSplit(parts);
    }
    let didSomething = false;
    do {
      didSomething = false;
      if (!this.preserveMultipleSlashes) {
        for (let i2 = 1; i2 < parts.length - 1; i2++) {
          const p5 = parts[i2];
          if (i2 === 1 && p5 === "" && parts[0] === "")
            continue;
          if (p5 === "." || p5 === "") {
            didSomething = true;
            parts.splice(i2, 1);
            i2--;
          }
        }
        if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) {
          didSomething = true;
          parts.pop();
        }
      }
      let dd3 = 0;
      while (-1 !== (dd3 = parts.indexOf("..", dd3 + 1))) {
        const p5 = parts[dd3 - 1];
        if (p5 && p5 !== "." && p5 !== ".." && p5 !== "**") {
          didSomething = true;
          parts.splice(dd3 - 1, 2);
          dd3 -= 2;
        }
      }
    } while (didSomething);
    return parts.length === 0 ? [""] : parts;
  }
  // First phase: single-pattern processing
  // <pre> is 1 or more portions
  // <rest> is 1 or more portions
  // <p> is any portion other than ., .., '', or **
  // <e> is . or ''
  //
  // **/.. is *brutal* for filesystem walking performance, because
  // it effectively resets the recursive walk each time it occurs,
  // and ** cannot be reduced out by a .. pattern part like a regexp
  // or most strings (other than .., ., and '') can be.
  //
  // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}
  // <pre>/<e>/<rest> -> <pre>/<rest>
  // <pre>/<p>/../<rest> -> <pre>/<rest>
  // **/**/<rest> -> **/<rest>
  //
  // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow
  // this WOULD be allowed if ** did follow symlinks, or * didn't
  firstPhasePreProcess(globParts) {
    let didSomething = false;
    do {
      didSomething = false;
      for (let parts of globParts) {
        let gs = -1;
        while (-1 !== (gs = parts.indexOf("**", gs + 1))) {
          let gss = gs;
          while (parts[gss + 1] === "**") {
            gss++;
          }
          if (gss > gs) {
            parts.splice(gs + 1, gss - gs);
          }
          let next = parts[gs + 1];
          const p5 = parts[gs + 2];
          const p22 = parts[gs + 3];
          if (next !== "..")
            continue;
          if (!p5 || p5 === "." || p5 === ".." || !p22 || p22 === "." || p22 === "..") {
            continue;
          }
          didSomething = true;
          parts.splice(gs, 1);
          const other = parts.slice(0);
          other[gs] = "**";
          globParts.push(other);
          gs--;
        }
        if (!this.preserveMultipleSlashes) {
          for (let i2 = 1; i2 < parts.length - 1; i2++) {
            const p5 = parts[i2];
            if (i2 === 1 && p5 === "" && parts[0] === "")
              continue;
            if (p5 === "." || p5 === "") {
              didSomething = true;
              parts.splice(i2, 1);
              i2--;
            }
          }
          if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) {
            didSomething = true;
            parts.pop();
          }
        }
        let dd3 = 0;
        while (-1 !== (dd3 = parts.indexOf("..", dd3 + 1))) {
          const p5 = parts[dd3 - 1];
          if (p5 && p5 !== "." && p5 !== ".." && p5 !== "**") {
            didSomething = true;
            const needDot = dd3 === 1 && parts[dd3 + 1] === "**";
            const splin = needDot ? ["."] : [];
            parts.splice(dd3 - 1, 2, ...splin);
            if (parts.length === 0)
              parts.push("");
            dd3 -= 2;
          }
        }
      }
    } while (didSomething);
    return globParts;
  }
  // second phase: multi-pattern dedupes
  // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest>
  // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest>
  // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest>
  //
  // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest>
  // ^-- not valid because ** doens't follow symlinks
  secondPhasePreProcess(globParts) {
    for (let i2 = 0; i2 < globParts.length - 1; i2++) {
      for (let j = i2 + 1; j < globParts.length; j++) {
        const matched = this.partsMatch(globParts[i2], globParts[j], !this.preserveMultipleSlashes);
        if (!matched)
          continue;
        globParts[i2] = matched;
        globParts[j] = [];
      }
    }
    return globParts.filter((gs) => gs.length);
  }
  partsMatch(a2, b, emptyGSMatch = false) {
    let ai = 0;
    let bi = 0;
    let result = [];
    let which8 = "";
    while (ai < a2.length && bi < b.length) {
      if (a2[ai] === b[bi]) {
        result.push(which8 === "b" ? b[bi] : a2[ai]);
        ai++;
        bi++;
      } else if (emptyGSMatch && a2[ai] === "**" && b[bi] === a2[ai + 1]) {
        result.push(a2[ai]);
        ai++;
      } else if (emptyGSMatch && b[bi] === "**" && a2[ai] === b[bi + 1]) {
        result.push(b[bi]);
        bi++;
      } else if (a2[ai] === "*" && b[bi] && (this.options.dot || !b[bi].startsWith(".")) && b[bi] !== "**") {
        if (which8 === "b")
          return false;
        which8 = "a";
        result.push(a2[ai]);
        ai++;
        bi++;
      } else if (b[bi] === "*" && a2[ai] && (this.options.dot || !a2[ai].startsWith(".")) && a2[ai] !== "**") {
        if (which8 === "a")
          return false;
        which8 = "b";
        result.push(b[bi]);
        ai++;
        bi++;
      } else {
        return false;
      }
    }
    return a2.length === b.length && result;
  }
  parseNegate() {
    if (this.nonegate)
      return;
    const pattern = this.pattern;
    let negate = false;
    let negateOffset = 0;
    for (let i2 = 0; i2 < pattern.length && pattern.charAt(i2) === "!"; i2++) {
      negate = !negate;
      negateOffset++;
    }
    if (negateOffset)
      this.pattern = pattern.slice(negateOffset);
    this.negate = negate;
  }
  // set partial to true to test if, for example,
  // "/a/b" matches the start of "/*/b/*/d"
  // Partial means, if you run out of file before you run
  // out of pattern, then that's fine, as long as all
  // the parts match.
  matchOne(file, pattern, partial = false) {
    const options = this.options;
    if (this.isWindows) {
      const fileDrive = typeof file[0] === "string" && /^[a-z]:$/i.test(file[0]);
      const fileUNC = !fileDrive && file[0] === "" && file[1] === "" && file[2] === "?" && /^[a-z]:$/i.test(file[3]);
      const patternDrive = typeof pattern[0] === "string" && /^[a-z]:$/i.test(pattern[0]);
      const patternUNC = !patternDrive && pattern[0] === "" && pattern[1] === "" && pattern[2] === "?" && typeof pattern[3] === "string" && /^[a-z]:$/i.test(pattern[3]);
      const fdi = fileUNC ? 3 : fileDrive ? 0 : void 0;
      const pdi = patternUNC ? 3 : patternDrive ? 0 : void 0;
      if (typeof fdi === "number" && typeof pdi === "number") {
        const [fd, pd] = [file[fdi], pattern[pdi]];
        if (fd.toLowerCase() === pd.toLowerCase()) {
          pattern[pdi] = fd;
          if (pdi > fdi) {
            pattern = pattern.slice(pdi);
          } else if (fdi > pdi) {
            file = file.slice(fdi);
          }
        }
      }
    }
    const { optimizationLevel = 1 } = this.options;
    if (optimizationLevel >= 2) {
      file = this.levelTwoFileOptimize(file);
    }
    this.debug("matchOne", this, { file, pattern });
    this.debug("matchOne", file.length, pattern.length);
    for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
      this.debug("matchOne loop");
      var p5 = pattern[pi];
      var f3 = file[fi];
      this.debug(pattern, p5, f3);
      if (p5 === false) {
        return false;
      }
      if (p5 === GLOBSTAR) {
        this.debug("GLOBSTAR", [pattern, p5, f3]);
        var fr = fi;
        var pr = pi + 1;
        if (pr === pl) {
          this.debug("** at the end");
          for (; fi < fl; fi++) {
            if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".")
              return false;
          }
          return true;
        }
        while (fr < fl) {
          var swallowee = file[fr];
          this.debug("\nglobstar while", file, fr, pattern, pr, swallowee);
          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
            this.debug("globstar found match!", fr, fl, swallowee);
            return true;
          } else {
            if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") {
              this.debug("dot detected!", file, fr, pattern, pr);
              break;
            }
            this.debug("globstar swallow a segment, and continue");
            fr++;
          }
        }
        if (partial) {
          this.debug("\n>>> no match, partial?", file, fr, pattern, pr);
          if (fr === fl) {
            return true;
          }
        }
        return false;
      }
      let hit;
      if (typeof p5 === "string") {
        hit = f3 === p5;
        this.debug("string match", p5, f3, hit);
      } else {
        hit = p5.test(f3);
        this.debug("pattern match", p5, f3, hit);
      }
      if (!hit)
        return false;
    }
    if (fi === fl && pi === pl) {
      return true;
    } else if (fi === fl) {
      return partial;
    } else if (pi === pl) {
      return fi === fl - 1 && file[fi] === "";
    } else {
      throw new Error("wtf?");
    }
  }
  braceExpand() {
    return braceExpand(this.pattern, this.options);
  }
  parse(pattern) {
    assertValidPattern(pattern);
    const options = this.options;
    if (pattern === "**")
      return GLOBSTAR;
    if (pattern === "")
      return "";
    let m2;
    let fastTest = null;
    if (m2 = pattern.match(starRE)) {
      fastTest = options.dot ? starTestDot : starTest;
    } else if (m2 = pattern.match(starDotExtRE)) {
      fastTest = (options.nocase ? options.dot ? starDotExtTestNocaseDot : starDotExtTestNocase : options.dot ? starDotExtTestDot : starDotExtTest)(m2[1]);
    } else if (m2 = pattern.match(qmarksRE)) {
      fastTest = (options.nocase ? options.dot ? qmarksTestNocaseDot : qmarksTestNocase : options.dot ? qmarksTestDot : qmarksTest)(m2);
    } else if (m2 = pattern.match(starDotStarRE)) {
      fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
    } else if (m2 = pattern.match(dotStarRE)) {
      fastTest = dotStarTest;
    }
    const re = AST.fromGlob(pattern, this.options).toMMPattern();
    return fastTest ? Object.assign(re, { test: fastTest }) : re;
  }
  makeRe() {
    if (this.regexp || this.regexp === false)
      return this.regexp;
    const set3 = this.set;
    if (!set3.length) {
      this.regexp = false;
      return this.regexp;
    }
    const options = this.options;
    const twoStar = options.noglobstar ? star2 : options.dot ? twoStarDot : twoStarNoDot;
    const flags = new Set(options.nocase ? ["i"] : []);
    let re = set3.map((pattern) => {
      const pp = pattern.map((p5) => {
        if (p5 instanceof RegExp) {
          for (const f3 of p5.flags.split(""))
            flags.add(f3);
        }
        return typeof p5 === "string" ? regExpEscape2(p5) : p5 === GLOBSTAR ? GLOBSTAR : p5._src;
      });
      pp.forEach((p5, i2) => {
        const next = pp[i2 + 1];
        const prev = pp[i2 - 1];
        if (p5 !== GLOBSTAR || prev === GLOBSTAR) {
          return;
        }
        if (prev === void 0) {
          if (next !== void 0 && next !== GLOBSTAR) {
            pp[i2 + 1] = "(?:\\/|" + twoStar + "\\/)?" + next;
          } else {
            pp[i2] = twoStar;
          }
        } else if (next === void 0) {
          pp[i2 - 1] = prev + "(?:\\/|" + twoStar + ")?";
        } else if (next !== GLOBSTAR) {
          pp[i2 - 1] = prev + "(?:\\/|\\/" + twoStar + "\\/)" + next;
          pp[i2 + 1] = GLOBSTAR;
        }
      });
      return pp.filter((p5) => p5 !== GLOBSTAR).join("/");
    }).join("|");
    const [open2, close2] = set3.length > 1 ? ["(?:", ")"] : ["", ""];
    re = "^" + open2 + re + close2 + "$";
    if (this.negate)
      re = "^(?!" + re + ").+$";
    try {
      this.regexp = new RegExp(re, [...flags].join(""));
    } catch (ex) {
      this.regexp = false;
    }
    return this.regexp;
  }
  slashSplit(p5) {
    if (this.preserveMultipleSlashes) {
      return p5.split("/");
    } else if (this.isWindows && /^\/\/[^\/]+/.test(p5)) {
      return ["", ...p5.split(/\/+/)];
    } else {
      return p5.split(/\/+/);
    }
  }
  match(f3, partial = this.partial) {
    this.debug("match", f3, this.pattern);
    if (this.comment) {
      return false;
    }
    if (this.empty) {
      return f3 === "";
    }
    if (f3 === "/" && partial) {
      return true;
    }
    const options = this.options;
    if (this.isWindows) {
      f3 = f3.split("\\").join("/");
    }
    const ff = this.slashSplit(f3);
    this.debug(this.pattern, "split", ff);
    const set3 = this.set;
    this.debug(this.pattern, "set", set3);
    let filename = ff[ff.length - 1];
    if (!filename) {
      for (let i2 = ff.length - 2; !filename && i2 >= 0; i2--) {
        filename = ff[i2];
      }
    }
    for (let i2 = 0; i2 < set3.length; i2++) {
      const pattern = set3[i2];
      let file = ff;
      if (options.matchBase && pattern.length === 1) {
        file = [filename];
      }
      const hit = this.matchOne(file, pattern, partial);
      if (hit) {
        if (options.flipNegate) {
          return true;
        }
        return !this.negate;
      }
    }
    if (options.flipNegate) {
      return false;
    }
    return this.negate;
  }
  static defaults(def) {
    return minimatch.defaults(def).Minimatch;
  }
};
minimatch.AST = AST;
minimatch.Minimatch = Minimatch;
minimatch.escape = escape3;
minimatch.unescape = unescape2;

// ../../node_modules/lru-cache/dist/mjs/index.js
var perf = typeof performance === "object" && performance && typeof performance.now === "function" ? performance : Date;
var warned = /* @__PURE__ */ new Set();
var PROCESS = typeof process === "object" && !!process ? process : {};
var emitWarning = (msg, type2, code7, fn) => {
  typeof PROCESS.emitWarning === "function" ? PROCESS.emitWarning(msg, type2, code7, fn) : console.error(`[${code7}] ${type2}: ${msg}`);
};
var AC = globalThis.AbortController;
var AS = globalThis.AbortSignal;
var _a2;
if (typeof AC === "undefined") {
  AS = class AbortSignal {
    onabort;
    _onabort = [];
    reason;
    aborted = false;
    addEventListener(_2, fn) {
      this._onabort.push(fn);
    }
  };
  AC = class AbortController {
    constructor() {
      warnACPolyfill();
    }
    signal = new AS();
    abort(reason) {
      var _a6, _b;
      if (this.signal.aborted)
        return;
      this.signal.reason = reason;
      this.signal.aborted = true;
      for (const fn of this.signal._onabort) {
        fn(reason);
      }
      (_b = (_a6 = this.signal).onabort) == null ? void 0 : _b.call(_a6, reason);
    }
  };
  let printACPolyfillWarning = ((_a2 = PROCESS.env) == null ? void 0 : _a2.LRU_CACHE_IGNORE_AC_WARNING) !== "1";
  const warnACPolyfill = () => {
    if (!printACPolyfillWarning)
      return;
    printACPolyfillWarning = false;
    emitWarning("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.", "NO_ABORT_CONTROLLER", "ENOTSUP", warnACPolyfill);
  };
}
var shouldWarn = (code7) => !warned.has(code7);
var TYPE = Symbol("type");
var isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);
var getUintArray = (max) => !isPosInt(max) ? null : max <= Math.pow(2, 8) ? Uint8Array : max <= Math.pow(2, 16) ? Uint16Array : max <= Math.pow(2, 32) ? Uint32Array : max <= Number.MAX_SAFE_INTEGER ? ZeroArray : null;
var ZeroArray = class extends Array {
  constructor(size) {
    super(size);
    this.fill(0);
  }
};
var Stack = class _Stack {
  heap;
  length;
  // private constructor
  static #constructing = false;
  static create(max) {
    const HeapCls = getUintArray(max);
    if (!HeapCls)
      return [];
    _Stack.#constructing = true;
    const s5 = new _Stack(max, HeapCls);
    _Stack.#constructing = false;
    return s5;
  }
  constructor(max, HeapCls) {
    if (!_Stack.#constructing) {
      throw new TypeError("instantiate Stack using Stack.create(n)");
    }
    this.heap = new HeapCls(max);
    this.length = 0;
  }
  push(n) {
    this.heap[this.length++] = n;
  }
  pop() {
    return this.heap[--this.length];
  }
};
var _max, _maxSize, _dispose, _disposeAfter, _fetchMethod, _size, _calculatedSize, _keyMap, _keyList, _valList, _next, _prev, _head, _tail, _free, _disposed, _sizes, _starts, _ttls, _hasDispose, _hasFetchMethod, _hasDisposeAfter, _LRUCache_instances, initializeTTLTracking_fn, _updateItemAge, _statusTTL, _setItemTTL, _isStale, initializeSizeTracking_fn, _removeItemSize, _addItemSize, _requireSize, indexes_fn, rindexes_fn, isValidIndex_fn, evict_fn, backgroundFetch_fn, isBackgroundFetch_fn, connect_fn, moveToTail_fn;
var _LRUCache = class _LRUCache {
  constructor(options) {
    __privateAdd(this, _LRUCache_instances);
    // properties coming in from the options of these, only max and maxSize
    // really *need* to be protected. The rest can be modified, as they just
    // set defaults for various methods.
    __privateAdd(this, _max);
    __privateAdd(this, _maxSize);
    __privateAdd(this, _dispose);
    __privateAdd(this, _disposeAfter);
    __privateAdd(this, _fetchMethod);
    /**
     * {@link LRUCache.OptionsBase.ttl}
     */
    __publicField(this, "ttl");
    /**
     * {@link LRUCache.OptionsBase.ttlResolution}
     */
    __publicField(this, "ttlResolution");
    /**
     * {@link LRUCache.OptionsBase.ttlAutopurge}
     */
    __publicField(this, "ttlAutopurge");
    /**
     * {@link LRUCache.OptionsBase.updateAgeOnGet}
     */
    __publicField(this, "updateAgeOnGet");
    /**
     * {@link LRUCache.OptionsBase.updateAgeOnHas}
     */
    __publicField(this, "updateAgeOnHas");
    /**
     * {@link LRUCache.OptionsBase.allowStale}
     */
    __publicField(this, "allowStale");
    /**
     * {@link LRUCache.OptionsBase.noDisposeOnSet}
     */
    __publicField(this, "noDisposeOnSet");
    /**
     * {@link LRUCache.OptionsBase.noUpdateTTL}
     */
    __publicField(this, "noUpdateTTL");
    /**
     * {@link LRUCache.OptionsBase.maxEntrySize}
     */
    __publicField(this, "maxEntrySize");
    /**
     * {@link LRUCache.OptionsBase.sizeCalculation}
     */
    __publicField(this, "sizeCalculation");
    /**
     * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}
     */
    __publicField(this, "noDeleteOnFetchRejection");
    /**
     * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}
     */
    __publicField(this, "noDeleteOnStaleGet");
    /**
     * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}
     */
    __publicField(this, "allowStaleOnFetchAbort");
    /**
     * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}
     */
    __publicField(this, "allowStaleOnFetchRejection");
    /**
     * {@link LRUCache.OptionsBase.ignoreFetchAbort}
     */
    __publicField(this, "ignoreFetchAbort");
    // computed properties
    __privateAdd(this, _size);
    __privateAdd(this, _calculatedSize);
    __privateAdd(this, _keyMap);
    __privateAdd(this, _keyList);
    __privateAdd(this, _valList);
    __privateAdd(this, _next);
    __privateAdd(this, _prev);
    __privateAdd(this, _head);
    __privateAdd(this, _tail);
    __privateAdd(this, _free);
    __privateAdd(this, _disposed);
    __privateAdd(this, _sizes);
    __privateAdd(this, _starts);
    __privateAdd(this, _ttls);
    __privateAdd(this, _hasDispose);
    __privateAdd(this, _hasFetchMethod);
    __privateAdd(this, _hasDisposeAfter);
    // conditionally set private methods related to TTL
    __privateAdd(this, _updateItemAge, () => {
    });
    __privateAdd(this, _statusTTL, () => {
    });
    __privateAdd(this, _setItemTTL, () => {
    });
    /* c8 ignore stop */
    __privateAdd(this, _isStale, () => false);
    __privateAdd(this, _removeItemSize, (_i) => {
    });
    __privateAdd(this, _addItemSize, (_i, _s, _st) => {
    });
    __privateAdd(this, _requireSize, (_k, _v, size, sizeCalculation) => {
      if (size || sizeCalculation) {
        throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");
      }
      return 0;
    });
    const { max = 0, ttl: ttl2, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort } = options;
    if (max !== 0 && !isPosInt(max)) {
      throw new TypeError("max option must be a nonnegative integer");
    }
    const UintArray = max ? getUintArray(max) : Array;
    if (!UintArray) {
      throw new Error("invalid max value: " + max);
    }
    __privateSet(this, _max, max);
    __privateSet(this, _maxSize, maxSize);
    this.maxEntrySize = maxEntrySize || __privateGet(this, _maxSize);
    this.sizeCalculation = sizeCalculation;
    if (this.sizeCalculation) {
      if (!__privateGet(this, _maxSize) && !this.maxEntrySize) {
        throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");
      }
      if (typeof this.sizeCalculation !== "function") {
        throw new TypeError("sizeCalculation set to non-function");
      }
    }
    if (fetchMethod !== void 0 && typeof fetchMethod !== "function") {
      throw new TypeError("fetchMethod must be a function if specified");
    }
    __privateSet(this, _fetchMethod, fetchMethod);
    __privateSet(this, _hasFetchMethod, !!fetchMethod);
    __privateSet(this, _keyMap, /* @__PURE__ */ new Map());
    __privateSet(this, _keyList, new Array(max).fill(void 0));
    __privateSet(this, _valList, new Array(max).fill(void 0));
    __privateSet(this, _next, new UintArray(max));
    __privateSet(this, _prev, new UintArray(max));
    __privateSet(this, _head, 0);
    __privateSet(this, _tail, 0);
    __privateSet(this, _free, Stack.create(max));
    __privateSet(this, _size, 0);
    __privateSet(this, _calculatedSize, 0);
    if (typeof dispose === "function") {
      __privateSet(this, _dispose, dispose);
    }
    if (typeof disposeAfter === "function") {
      __privateSet(this, _disposeAfter, disposeAfter);
      __privateSet(this, _disposed, []);
    } else {
      __privateSet(this, _disposeAfter, void 0);
      __privateSet(this, _disposed, void 0);
    }
    __privateSet(this, _hasDispose, !!__privateGet(this, _dispose));
    __privateSet(this, _hasDisposeAfter, !!__privateGet(this, _disposeAfter));
    this.noDisposeOnSet = !!noDisposeOnSet;
    this.noUpdateTTL = !!noUpdateTTL;
    this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;
    this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;
    this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;
    this.ignoreFetchAbort = !!ignoreFetchAbort;
    if (this.maxEntrySize !== 0) {
      if (__privateGet(this, _maxSize) !== 0) {
        if (!isPosInt(__privateGet(this, _maxSize))) {
          throw new TypeError("maxSize must be a positive integer if specified");
        }
      }
      if (!isPosInt(this.maxEntrySize)) {
        throw new TypeError("maxEntrySize must be a positive integer if specified");
      }
      __privateMethod(this, _LRUCache_instances, initializeSizeTracking_fn).call(this);
    }
    this.allowStale = !!allowStale;
    this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;
    this.updateAgeOnGet = !!updateAgeOnGet;
    this.updateAgeOnHas = !!updateAgeOnHas;
    this.ttlResolution = isPosInt(ttlResolution) || ttlResolution === 0 ? ttlResolution : 1;
    this.ttlAutopurge = !!ttlAutopurge;
    this.ttl = ttl2 || 0;
    if (this.ttl) {
      if (!isPosInt(this.ttl)) {
        throw new TypeError("ttl must be a positive integer if specified");
      }
      __privateMethod(this, _LRUCache_instances, initializeTTLTracking_fn).call(this);
    }
    if (__privateGet(this, _max) === 0 && this.ttl === 0 && __privateGet(this, _maxSize) === 0) {
      throw new TypeError("At least one of max, maxSize, or ttl is required");
    }
    if (!this.ttlAutopurge && !__privateGet(this, _max) && !__privateGet(this, _maxSize)) {
      const code7 = "LRU_CACHE_UNBOUNDED";
      if (shouldWarn(code7)) {
        warned.add(code7);
        const msg = "TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.";
        emitWarning(msg, "UnboundedCacheWarning", code7, _LRUCache);
      }
    }
  }
  /**
   * Do not call this method unless you need to inspect the
   * inner workings of the cache.  If anything returned by this
   * object is modified in any way, strange breakage may occur.
   *
   * These fields are private for a reason!
   *
   * @internal
   */
  static unsafeExposeInternals(c) {
    return {
      // properties
      starts: __privateGet(c, _starts),
      ttls: __privateGet(c, _ttls),
      sizes: __privateGet(c, _sizes),
      keyMap: __privateGet(c, _keyMap),
      keyList: __privateGet(c, _keyList),
      valList: __privateGet(c, _valList),
      next: __privateGet(c, _next),
      prev: __privateGet(c, _prev),
      get head() {
        return __privateGet(c, _head);
      },
      get tail() {
        return __privateGet(c, _tail);
      },
      free: __privateGet(c, _free),
      // methods
      isBackgroundFetch: (p5) => {
        var _a6;
        return __privateMethod(_a6 = c, _LRUCache_instances, isBackgroundFetch_fn).call(_a6, p5);
      },
      backgroundFetch: (k, index4, options, context) => {
        var _a6;
        return __privateMethod(_a6 = c, _LRUCache_instances, backgroundFetch_fn).call(_a6, k, index4, options, context);
      },
      moveToTail: (index4) => {
        var _a6;
        return __privateMethod(_a6 = c, _LRUCache_instances, moveToTail_fn).call(_a6, index4);
      },
      indexes: (options) => {
        var _a6;
        return __privateMethod(_a6 = c, _LRUCache_instances, indexes_fn).call(_a6, options);
      },
      rindexes: (options) => {
        var _a6;
        return __privateMethod(_a6 = c, _LRUCache_instances, rindexes_fn).call(_a6, options);
      },
      isStale: (index4) => {
        var _a6;
        return __privateGet(_a6 = c, _isStale).call(_a6, index4);
      }
    };
  }
  // Protected read-only members
  /**
   * {@link LRUCache.OptionsBase.max} (read-only)
   */
  get max() {
    return __privateGet(this, _max);
  }
  /**
   * {@link LRUCache.OptionsBase.maxSize} (read-only)
   */
  get maxSize() {
    return __privateGet(this, _maxSize);
  }
  /**
   * The total computed size of items in the cache (read-only)
   */
  get calculatedSize() {
    return __privateGet(this, _calculatedSize);
  }
  /**
   * The number of items stored in the cache (read-only)
   */
  get size() {
    return __privateGet(this, _size);
  }
  /**
   * {@link LRUCache.OptionsBase.fetchMethod} (read-only)
   */
  get fetchMethod() {
    return __privateGet(this, _fetchMethod);
  }
  /**
   * {@link LRUCache.OptionsBase.dispose} (read-only)
   */
  get dispose() {
    return __privateGet(this, _dispose);
  }
  /**
   * {@link LRUCache.OptionsBase.disposeAfter} (read-only)
   */
  get disposeAfter() {
    return __privateGet(this, _disposeAfter);
  }
  /**
   * Return the remaining TTL time for a given entry key
   */
  getRemainingTTL(key2) {
    return __privateGet(this, _keyMap).has(key2) ? Infinity : 0;
  }
  /**
   * Return a generator yielding `[key, value]` pairs,
   * in order from most recently used to least recently used.
   */
  *entries() {
    for (const i2 of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this)) {
      if (__privateGet(this, _valList)[i2] !== void 0 && __privateGet(this, _keyList)[i2] !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i2])) {
        yield [__privateGet(this, _keyList)[i2], __privateGet(this, _valList)[i2]];
      }
    }
  }
  /**
   * Inverse order version of {@link LRUCache.entries}
   *
   * Return a generator yielding `[key, value]` pairs,
   * in order from least recently used to most recently used.
   */
  *rentries() {
    for (const i2 of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this)) {
      if (__privateGet(this, _valList)[i2] !== void 0 && __privateGet(this, _keyList)[i2] !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i2])) {
        yield [__privateGet(this, _keyList)[i2], __privateGet(this, _valList)[i2]];
      }
    }
  }
  /**
   * Return a generator yielding the keys in the cache,
   * in order from most recently used to least recently used.
   */
  *keys() {
    for (const i2 of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this)) {
      const k = __privateGet(this, _keyList)[i2];
      if (k !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i2])) {
        yield k;
      }
    }
  }
  /**
   * Inverse order version of {@link LRUCache.keys}
   *
   * Return a generator yielding the keys in the cache,
   * in order from least recently used to most recently used.
   */
  *rkeys() {
    for (const i2 of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this)) {
      const k = __privateGet(this, _keyList)[i2];
      if (k !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i2])) {
        yield k;
      }
    }
  }
  /**
   * Return a generator yielding the values in the cache,
   * in order from most recently used to least recently used.
   */
  *values() {
    for (const i2 of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this)) {
      const v = __privateGet(this, _valList)[i2];
      if (v !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i2])) {
        yield __privateGet(this, _valList)[i2];
      }
    }
  }
  /**
   * Inverse order version of {@link LRUCache.values}
   *
   * Return a generator yielding the values in the cache,
   * in order from least recently used to most recently used.
   */
  *rvalues() {
    for (const i2 of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this)) {
      const v = __privateGet(this, _valList)[i2];
      if (v !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i2])) {
        yield __privateGet(this, _valList)[i2];
      }
    }
  }
  /**
   * Iterating over the cache itself yields the same results as
   * {@link LRUCache.entries}
   */
  [Symbol.iterator]() {
    return this.entries();
  }
  /**
   * Find a value for which the supplied fn method returns a truthy value,
   * similar to Array.find().  fn is called as fn(value, key, cache).
   */
  find(fn, getOptions = {}) {
    for (const i2 of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this)) {
      const v = __privateGet(this, _valList)[i2];
      const value = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
      if (value === void 0)
        continue;
      if (fn(value, __privateGet(this, _keyList)[i2], this)) {
        return this.get(__privateGet(this, _keyList)[i2], getOptions);
      }
    }
  }
  /**
   * Call the supplied function on each item in the cache, in order from
   * most recently used to least recently used.  fn is called as
   * fn(value, key, cache).  Does not update age or recenty of use.
   * Does not iterate over stale values.
   */
  forEach(fn, thisp = this) {
    for (const i2 of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this)) {
      const v = __privateGet(this, _valList)[i2];
      const value = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
      if (value === void 0)
        continue;
      fn.call(thisp, value, __privateGet(this, _keyList)[i2], this);
    }
  }
  /**
   * The same as {@link LRUCache.forEach} but items are iterated over in
   * reverse order.  (ie, less recently used items are iterated over first.)
   */
  rforEach(fn, thisp = this) {
    for (const i2 of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this)) {
      const v = __privateGet(this, _valList)[i2];
      const value = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
      if (value === void 0)
        continue;
      fn.call(thisp, value, __privateGet(this, _keyList)[i2], this);
    }
  }
  /**
   * Delete any stale entries. Returns true if anything was removed,
   * false otherwise.
   */
  purgeStale() {
    let deleted = false;
    for (const i2 of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this, { allowStale: true })) {
      if (__privateGet(this, _isStale).call(this, i2)) {
        this.delete(__privateGet(this, _keyList)[i2]);
        deleted = true;
      }
    }
    return deleted;
  }
  /**
   * Return an array of [key, {@link LRUCache.Entry}] tuples which can be
   * passed to cache.load()
   */
  dump() {
    const arr = [];
    for (const i2 of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this, { allowStale: true })) {
      const key2 = __privateGet(this, _keyList)[i2];
      const v = __privateGet(this, _valList)[i2];
      const value = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
      if (value === void 0 || key2 === void 0)
        continue;
      const entry = { value };
      if (__privateGet(this, _ttls) && __privateGet(this, _starts)) {
        entry.ttl = __privateGet(this, _ttls)[i2];
        const age = perf.now() - __privateGet(this, _starts)[i2];
        entry.start = Math.floor(Date.now() - age);
      }
      if (__privateGet(this, _sizes)) {
        entry.size = __privateGet(this, _sizes)[i2];
      }
      arr.unshift([key2, entry]);
    }
    return arr;
  }
  /**
   * Reset the cache and load in the items in entries in the order listed.
   * Note that the shape of the resulting cache may be different if the
   * same options are not used in both caches.
   */
  load(arr) {
    this.clear();
    for (const [key2, entry] of arr) {
      if (entry.start) {
        const age = Date.now() - entry.start;
        entry.start = perf.now() - age;
      }
      this.set(key2, entry.value, entry);
    }
  }
  /**
   * Add a value to the cache.
   *
   * Note: if `undefined` is specified as a value, this is an alias for
   * {@link LRUCache#delete}
   */
  set(k, v, setOptions = {}) {
    var _a6, _b, _c;
    if (v === void 0) {
      this.delete(k);
      return this;
    }
    const { ttl: ttl2 = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status } = setOptions;
    let { noUpdateTTL = this.noUpdateTTL } = setOptions;
    const size = __privateGet(this, _requireSize).call(this, k, v, setOptions.size || 0, sizeCalculation);
    if (this.maxEntrySize && size > this.maxEntrySize) {
      if (status) {
        status.set = "miss";
        status.maxEntrySizeExceeded = true;
      }
      this.delete(k);
      return this;
    }
    let index4 = __privateGet(this, _size) === 0 ? void 0 : __privateGet(this, _keyMap).get(k);
    if (index4 === void 0) {
      index4 = __privateGet(this, _size) === 0 ? __privateGet(this, _tail) : __privateGet(this, _free).length !== 0 ? __privateGet(this, _free).pop() : __privateGet(this, _size) === __privateGet(this, _max) ? __privateMethod(this, _LRUCache_instances, evict_fn).call(this, false) : __privateGet(this, _size);
      __privateGet(this, _keyList)[index4] = k;
      __privateGet(this, _valList)[index4] = v;
      __privateGet(this, _keyMap).set(k, index4);
      __privateGet(this, _next)[__privateGet(this, _tail)] = index4;
      __privateGet(this, _prev)[index4] = __privateGet(this, _tail);
      __privateSet(this, _tail, index4);
      __privateWrapper(this, _size)._++;
      __privateGet(this, _addItemSize).call(this, index4, size, status);
      if (status)
        status.set = "add";
      noUpdateTTL = false;
    } else {
      __privateMethod(this, _LRUCache_instances, moveToTail_fn).call(this, index4);
      const oldVal = __privateGet(this, _valList)[index4];
      if (v !== oldVal) {
        if (__privateGet(this, _hasFetchMethod) && __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, oldVal)) {
          oldVal.__abortController.abort(new Error("replaced"));
        } else if (!noDisposeOnSet) {
          if (__privateGet(this, _hasDispose)) {
            (_a6 = __privateGet(this, _dispose)) == null ? void 0 : _a6.call(this, oldVal, k, "set");
          }
          if (__privateGet(this, _hasDisposeAfter)) {
            (_b = __privateGet(this, _disposed)) == null ? void 0 : _b.push([oldVal, k, "set"]);
          }
        }
        __privateGet(this, _removeItemSize).call(this, index4);
        __privateGet(this, _addItemSize).call(this, index4, size, status);
        __privateGet(this, _valList)[index4] = v;
        if (status) {
          status.set = "replace";
          const oldValue = oldVal && __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, oldVal) ? oldVal.__staleWhileFetching : oldVal;
          if (oldValue !== void 0)
            status.oldValue = oldValue;
        }
      } else if (status) {
        status.set = "update";
      }
    }
    if (ttl2 !== 0 && !__privateGet(this, _ttls)) {
      __privateMethod(this, _LRUCache_instances, initializeTTLTracking_fn).call(this);
    }
    if (__privateGet(this, _ttls)) {
      if (!noUpdateTTL) {
        __privateGet(this, _setItemTTL).call(this, index4, ttl2, start);
      }
      if (status)
        __privateGet(this, _statusTTL).call(this, status, index4);
    }
    if (!noDisposeOnSet && __privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)) {
      const dt3 = __privateGet(this, _disposed);
      let task;
      while (task = dt3 == null ? void 0 : dt3.shift()) {
        (_c = __privateGet(this, _disposeAfter)) == null ? void 0 : _c.call(this, ...task);
      }
    }
    return this;
  }
  /**
   * Evict the least recently used item, returning its value or
   * `undefined` if cache is empty.
   */
  pop() {
    var _a6;
    try {
      while (__privateGet(this, _size)) {
        const val = __privateGet(this, _valList)[__privateGet(this, _head)];
        __privateMethod(this, _LRUCache_instances, evict_fn).call(this, true);
        if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, val)) {
          if (val.__staleWhileFetching) {
            return val.__staleWhileFetching;
          }
        } else if (val !== void 0) {
          return val;
        }
      }
    } finally {
      if (__privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)) {
        const dt3 = __privateGet(this, _disposed);
        let task;
        while (task = dt3 == null ? void 0 : dt3.shift()) {
          (_a6 = __privateGet(this, _disposeAfter)) == null ? void 0 : _a6.call(this, ...task);
        }
      }
    }
  }
  /**
   * Check if a key is in the cache, without updating the recency of use.
   * Will return false if the item is stale, even though it is technically
   * in the cache.
   *
   * Will not update item age unless
   * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.
   */
  has(k, hasOptions = {}) {
    const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;
    const index4 = __privateGet(this, _keyMap).get(k);
    if (index4 !== void 0) {
      const v = __privateGet(this, _valList)[index4];
      if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) && v.__staleWhileFetching === void 0) {
        return false;
      }
      if (!__privateGet(this, _isStale).call(this, index4)) {
        if (updateAgeOnHas) {
          __privateGet(this, _updateItemAge).call(this, index4);
        }
        if (status) {
          status.has = "hit";
          __privateGet(this, _statusTTL).call(this, status, index4);
        }
        return true;
      } else if (status) {
        status.has = "stale";
        __privateGet(this, _statusTTL).call(this, status, index4);
      }
    } else if (status) {
      status.has = "miss";
    }
    return false;
  }
  /**
   * Like {@link LRUCache#get} but doesn't update recency or delete stale
   * items.
   *
   * Returns `undefined` if the item is stale, unless
   * {@link LRUCache.OptionsBase.allowStale} is set.
   */
  peek(k, peekOptions = {}) {
    const { allowStale = this.allowStale } = peekOptions;
    const index4 = __privateGet(this, _keyMap).get(k);
    if (index4 !== void 0 && (allowStale || !__privateGet(this, _isStale).call(this, index4))) {
      const v = __privateGet(this, _valList)[index4];
      return __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
    }
  }
  async fetch(k, fetchOptions = {}) {
    const {
      // get options
      allowStale = this.allowStale,
      updateAgeOnGet = this.updateAgeOnGet,
      noDeleteOnStaleGet = this.noDeleteOnStaleGet,
      // set options
      ttl: ttl2 = this.ttl,
      noDisposeOnSet = this.noDisposeOnSet,
      size = 0,
      sizeCalculation = this.sizeCalculation,
      noUpdateTTL = this.noUpdateTTL,
      // fetch exclusive options
      noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,
      allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,
      ignoreFetchAbort = this.ignoreFetchAbort,
      allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,
      context,
      forceRefresh = false,
      status,
      signal
    } = fetchOptions;
    if (!__privateGet(this, _hasFetchMethod)) {
      if (status)
        status.fetch = "get";
      return this.get(k, {
        allowStale,
        updateAgeOnGet,
        noDeleteOnStaleGet,
        status
      });
    }
    const options = {
      allowStale,
      updateAgeOnGet,
      noDeleteOnStaleGet,
      ttl: ttl2,
      noDisposeOnSet,
      size,
      sizeCalculation,
      noUpdateTTL,
      noDeleteOnFetchRejection,
      allowStaleOnFetchRejection,
      allowStaleOnFetchAbort,
      ignoreFetchAbort,
      status,
      signal
    };
    let index4 = __privateGet(this, _keyMap).get(k);
    if (index4 === void 0) {
      if (status)
        status.fetch = "miss";
      const p5 = __privateMethod(this, _LRUCache_instances, backgroundFetch_fn).call(this, k, index4, options, context);
      return p5.__returned = p5;
    } else {
      const v = __privateGet(this, _valList)[index4];
      if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
        const stale = allowStale && v.__staleWhileFetching !== void 0;
        if (status) {
          status.fetch = "inflight";
          if (stale)
            status.returnedStale = true;
        }
        return stale ? v.__staleWhileFetching : v.__returned = v;
      }
      const isStale = __privateGet(this, _isStale).call(this, index4);
      if (!forceRefresh && !isStale) {
        if (status)
          status.fetch = "hit";
        __privateMethod(this, _LRUCache_instances, moveToTail_fn).call(this, index4);
        if (updateAgeOnGet) {
          __privateGet(this, _updateItemAge).call(this, index4);
        }
        if (status)
          __privateGet(this, _statusTTL).call(this, status, index4);
        return v;
      }
      const p5 = __privateMethod(this, _LRUCache_instances, backgroundFetch_fn).call(this, k, index4, options, context);
      const hasStale = p5.__staleWhileFetching !== void 0;
      const staleVal = hasStale && allowStale;
      if (status) {
        status.fetch = isStale ? "stale" : "refresh";
        if (staleVal && isStale)
          status.returnedStale = true;
      }
      return staleVal ? p5.__staleWhileFetching : p5.__returned = p5;
    }
  }
  /**
   * Return a value from the cache. Will update the recency of the cache
   * entry found.
   *
   * If the key is not found, get() will return `undefined`.
   */
  get(k, getOptions = {}) {
    const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status } = getOptions;
    const index4 = __privateGet(this, _keyMap).get(k);
    if (index4 !== void 0) {
      const value = __privateGet(this, _valList)[index4];
      const fetching = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, value);
      if (status)
        __privateGet(this, _statusTTL).call(this, status, index4);
      if (__privateGet(this, _isStale).call(this, index4)) {
        if (status)
          status.get = "stale";
        if (!fetching) {
          if (!noDeleteOnStaleGet) {
            this.delete(k);
          }
          if (status && allowStale)
            status.returnedStale = true;
          return allowStale ? value : void 0;
        } else {
          if (status && allowStale && value.__staleWhileFetching !== void 0) {
            status.returnedStale = true;
          }
          return allowStale ? value.__staleWhileFetching : void 0;
        }
      } else {
        if (status)
          status.get = "hit";
        if (fetching) {
          return value.__staleWhileFetching;
        }
        __privateMethod(this, _LRUCache_instances, moveToTail_fn).call(this, index4);
        if (updateAgeOnGet) {
          __privateGet(this, _updateItemAge).call(this, index4);
        }
        return value;
      }
    } else if (status) {
      status.get = "miss";
    }
  }
  /**
   * Deletes a key out of the cache.
   * Returns true if the key was deleted, false otherwise.
   */
  delete(k) {
    var _a6, _b, _c, _d2;
    let deleted = false;
    if (__privateGet(this, _size) !== 0) {
      const index4 = __privateGet(this, _keyMap).get(k);
      if (index4 !== void 0) {
        deleted = true;
        if (__privateGet(this, _size) === 1) {
          this.clear();
        } else {
          __privateGet(this, _removeItemSize).call(this, index4);
          const v = __privateGet(this, _valList)[index4];
          if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
            v.__abortController.abort(new Error("deleted"));
          } else if (__privateGet(this, _hasDispose) || __privateGet(this, _hasDisposeAfter)) {
            if (__privateGet(this, _hasDispose)) {
              (_a6 = __privateGet(this, _dispose)) == null ? void 0 : _a6.call(this, v, k, "delete");
            }
            if (__privateGet(this, _hasDisposeAfter)) {
              (_b = __privateGet(this, _disposed)) == null ? void 0 : _b.push([v, k, "delete"]);
            }
          }
          __privateGet(this, _keyMap).delete(k);
          __privateGet(this, _keyList)[index4] = void 0;
          __privateGet(this, _valList)[index4] = void 0;
          if (index4 === __privateGet(this, _tail)) {
            __privateSet(this, _tail, __privateGet(this, _prev)[index4]);
          } else if (index4 === __privateGet(this, _head)) {
            __privateSet(this, _head, __privateGet(this, _next)[index4]);
          } else {
            __privateGet(this, _next)[__privateGet(this, _prev)[index4]] = __privateGet(this, _next)[index4];
            __privateGet(this, _prev)[__privateGet(this, _next)[index4]] = __privateGet(this, _prev)[index4];
          }
          __privateWrapper(this, _size)._--;
          __privateGet(this, _free).push(index4);
        }
      }
    }
    if (__privateGet(this, _hasDisposeAfter) && ((_c = __privateGet(this, _disposed)) == null ? void 0 : _c.length)) {
      const dt3 = __privateGet(this, _disposed);
      let task;
      while (task = dt3 == null ? void 0 : dt3.shift()) {
        (_d2 = __privateGet(this, _disposeAfter)) == null ? void 0 : _d2.call(this, ...task);
      }
    }
    return deleted;
  }
  /**
   * Clear the cache entirely, throwing away all values.
   */
  clear() {
    var _a6, _b, _c;
    for (const index4 of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this, { allowStale: true })) {
      const v = __privateGet(this, _valList)[index4];
      if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
        v.__abortController.abort(new Error("deleted"));
      } else {
        const k = __privateGet(this, _keyList)[index4];
        if (__privateGet(this, _hasDispose)) {
          (_a6 = __privateGet(this, _dispose)) == null ? void 0 : _a6.call(this, v, k, "delete");
        }
        if (__privateGet(this, _hasDisposeAfter)) {
          (_b = __privateGet(this, _disposed)) == null ? void 0 : _b.push([v, k, "delete"]);
        }
      }
    }
    __privateGet(this, _keyMap).clear();
    __privateGet(this, _valList).fill(void 0);
    __privateGet(this, _keyList).fill(void 0);
    if (__privateGet(this, _ttls) && __privateGet(this, _starts)) {
      __privateGet(this, _ttls).fill(0);
      __privateGet(this, _starts).fill(0);
    }
    if (__privateGet(this, _sizes)) {
      __privateGet(this, _sizes).fill(0);
    }
    __privateSet(this, _head, 0);
    __privateSet(this, _tail, 0);
    __privateGet(this, _free).length = 0;
    __privateSet(this, _calculatedSize, 0);
    __privateSet(this, _size, 0);
    if (__privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)) {
      const dt3 = __privateGet(this, _disposed);
      let task;
      while (task = dt3 == null ? void 0 : dt3.shift()) {
        (_c = __privateGet(this, _disposeAfter)) == null ? void 0 : _c.call(this, ...task);
      }
    }
  }
};
_max = new WeakMap();
_maxSize = new WeakMap();
_dispose = new WeakMap();
_disposeAfter = new WeakMap();
_fetchMethod = new WeakMap();
_size = new WeakMap();
_calculatedSize = new WeakMap();
_keyMap = new WeakMap();
_keyList = new WeakMap();
_valList = new WeakMap();
_next = new WeakMap();
_prev = new WeakMap();
_head = new WeakMap();
_tail = new WeakMap();
_free = new WeakMap();
_disposed = new WeakMap();
_sizes = new WeakMap();
_starts = new WeakMap();
_ttls = new WeakMap();
_hasDispose = new WeakMap();
_hasFetchMethod = new WeakMap();
_hasDisposeAfter = new WeakMap();
_LRUCache_instances = new WeakSet();
initializeTTLTracking_fn = function() {
  const ttls = new ZeroArray(__privateGet(this, _max));
  const starts = new ZeroArray(__privateGet(this, _max));
  __privateSet(this, _ttls, ttls);
  __privateSet(this, _starts, starts);
  __privateSet(this, _setItemTTL, (index4, ttl2, start = perf.now()) => {
    starts[index4] = ttl2 !== 0 ? start : 0;
    ttls[index4] = ttl2;
    if (ttl2 !== 0 && this.ttlAutopurge) {
      const t2 = setTimeout(() => {
        if (__privateGet(this, _isStale).call(this, index4)) {
          this.delete(__privateGet(this, _keyList)[index4]);
        }
      }, ttl2 + 1);
      if (t2.unref) {
        t2.unref();
      }
    }
  });
  __privateSet(this, _updateItemAge, (index4) => {
    starts[index4] = ttls[index4] !== 0 ? perf.now() : 0;
  });
  __privateSet(this, _statusTTL, (status, index4) => {
    if (ttls[index4]) {
      const ttl2 = ttls[index4];
      const start = starts[index4];
      status.ttl = ttl2;
      status.start = start;
      status.now = cachedNow || getNow();
      const age = status.now - start;
      status.remainingTTL = ttl2 - age;
    }
  });
  let cachedNow = 0;
  const getNow = () => {
    const n = perf.now();
    if (this.ttlResolution > 0) {
      cachedNow = n;
      const t2 = setTimeout(() => cachedNow = 0, this.ttlResolution);
      if (t2.unref) {
        t2.unref();
      }
    }
    return n;
  };
  this.getRemainingTTL = (key2) => {
    const index4 = __privateGet(this, _keyMap).get(key2);
    if (index4 === void 0) {
      return 0;
    }
    const ttl2 = ttls[index4];
    const start = starts[index4];
    if (ttl2 === 0 || start === 0) {
      return Infinity;
    }
    const age = (cachedNow || getNow()) - start;
    return ttl2 - age;
  };
  __privateSet(this, _isStale, (index4) => {
    return ttls[index4] !== 0 && starts[index4] !== 0 && (cachedNow || getNow()) - starts[index4] > ttls[index4];
  });
};
_updateItemAge = new WeakMap();
_statusTTL = new WeakMap();
_setItemTTL = new WeakMap();
_isStale = new WeakMap();
initializeSizeTracking_fn = function() {
  const sizes = new ZeroArray(__privateGet(this, _max));
  __privateSet(this, _calculatedSize, 0);
  __privateSet(this, _sizes, sizes);
  __privateSet(this, _removeItemSize, (index4) => {
    __privateSet(this, _calculatedSize, __privateGet(this, _calculatedSize) - sizes[index4]);
    sizes[index4] = 0;
  });
  __privateSet(this, _requireSize, (k, v, size, sizeCalculation) => {
    if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
      return 0;
    }
    if (!isPosInt(size)) {
      if (sizeCalculation) {
        if (typeof sizeCalculation !== "function") {
          throw new TypeError("sizeCalculation must be a function");
        }
        size = sizeCalculation(v, k);
        if (!isPosInt(size)) {
          throw new TypeError("sizeCalculation return invalid (expect positive integer)");
        }
      } else {
        throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");
      }
    }
    return size;
  });
  __privateSet(this, _addItemSize, (index4, size, status) => {
    sizes[index4] = size;
    if (__privateGet(this, _maxSize)) {
      const maxSize = __privateGet(this, _maxSize) - sizes[index4];
      while (__privateGet(this, _calculatedSize) > maxSize) {
        __privateMethod(this, _LRUCache_instances, evict_fn).call(this, true);
      }
    }
    __privateSet(this, _calculatedSize, __privateGet(this, _calculatedSize) + sizes[index4]);
    if (status) {
      status.entrySize = size;
      status.totalCalculatedSize = __privateGet(this, _calculatedSize);
    }
  });
};
_removeItemSize = new WeakMap();
_addItemSize = new WeakMap();
_requireSize = new WeakMap();
indexes_fn = function* ({ allowStale = this.allowStale } = {}) {
  if (__privateGet(this, _size)) {
    for (let i2 = __privateGet(this, _tail); true; ) {
      if (!__privateMethod(this, _LRUCache_instances, isValidIndex_fn).call(this, i2)) {
        break;
      }
      if (allowStale || !__privateGet(this, _isStale).call(this, i2)) {
        yield i2;
      }
      if (i2 === __privateGet(this, _head)) {
        break;
      } else {
        i2 = __privateGet(this, _prev)[i2];
      }
    }
  }
};
rindexes_fn = function* ({ allowStale = this.allowStale } = {}) {
  if (__privateGet(this, _size)) {
    for (let i2 = __privateGet(this, _head); true; ) {
      if (!__privateMethod(this, _LRUCache_instances, isValidIndex_fn).call(this, i2)) {
        break;
      }
      if (allowStale || !__privateGet(this, _isStale).call(this, i2)) {
        yield i2;
      }
      if (i2 === __privateGet(this, _tail)) {
        break;
      } else {
        i2 = __privateGet(this, _next)[i2];
      }
    }
  }
};
isValidIndex_fn = function(index4) {
  return index4 !== void 0 && __privateGet(this, _keyMap).get(__privateGet(this, _keyList)[index4]) === index4;
};
evict_fn = function(free) {
  var _a6, _b;
  const head2 = __privateGet(this, _head);
  const k = __privateGet(this, _keyList)[head2];
  const v = __privateGet(this, _valList)[head2];
  if (__privateGet(this, _hasFetchMethod) && __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
    v.__abortController.abort(new Error("evicted"));
  } else if (__privateGet(this, _hasDispose) || __privateGet(this, _hasDisposeAfter)) {
    if (__privateGet(this, _hasDispose)) {
      (_a6 = __privateGet(this, _dispose)) == null ? void 0 : _a6.call(this, v, k, "evict");
    }
    if (__privateGet(this, _hasDisposeAfter)) {
      (_b = __privateGet(this, _disposed)) == null ? void 0 : _b.push([v, k, "evict"]);
    }
  }
  __privateGet(this, _removeItemSize).call(this, head2);
  if (free) {
    __privateGet(this, _keyList)[head2] = void 0;
    __privateGet(this, _valList)[head2] = void 0;
    __privateGet(this, _free).push(head2);
  }
  if (__privateGet(this, _size) === 1) {
    __privateSet(this, _head, __privateSet(this, _tail, 0));
    __privateGet(this, _free).length = 0;
  } else {
    __privateSet(this, _head, __privateGet(this, _next)[head2]);
  }
  __privateGet(this, _keyMap).delete(k);
  __privateWrapper(this, _size)._--;
  return head2;
};
backgroundFetch_fn = function(k, index4, options, context) {
  const v = index4 === void 0 ? void 0 : __privateGet(this, _valList)[index4];
  if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
    return v;
  }
  const ac = new AC();
  const { signal } = options;
  signal == null ? void 0 : signal.addEventListener("abort", () => ac.abort(signal.reason), {
    signal: ac.signal
  });
  const fetchOpts = {
    signal: ac.signal,
    options,
    context
  };
  const cb = (v2, updateCache = false) => {
    const { aborted } = ac.signal;
    const ignoreAbort = options.ignoreFetchAbort && v2 !== void 0;
    if (options.status) {
      if (aborted && !updateCache) {
        options.status.fetchAborted = true;
        options.status.fetchError = ac.signal.reason;
        if (ignoreAbort)
          options.status.fetchAbortIgnored = true;
      } else {
        options.status.fetchResolved = true;
      }
    }
    if (aborted && !ignoreAbort && !updateCache) {
      return fetchFail(ac.signal.reason);
    }
    const bf2 = p5;
    if (__privateGet(this, _valList)[index4] === p5) {
      if (v2 === void 0) {
        if (bf2.__staleWhileFetching) {
          __privateGet(this, _valList)[index4] = bf2.__staleWhileFetching;
        } else {
          this.delete(k);
        }
      } else {
        if (options.status)
          options.status.fetchUpdated = true;
        this.set(k, v2, fetchOpts.options);
      }
    }
    return v2;
  };
  const eb = (er) => {
    if (options.status) {
      options.status.fetchRejected = true;
      options.status.fetchError = er;
    }
    return fetchFail(er);
  };
  const fetchFail = (er) => {
    const { aborted } = ac.signal;
    const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;
    const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;
    const noDelete = allowStale || options.noDeleteOnFetchRejection;
    const bf2 = p5;
    if (__privateGet(this, _valList)[index4] === p5) {
      const del2 = !noDelete || bf2.__staleWhileFetching === void 0;
      if (del2) {
        this.delete(k);
      } else if (!allowStaleAborted) {
        __privateGet(this, _valList)[index4] = bf2.__staleWhileFetching;
      }
    }
    if (allowStale) {
      if (options.status && bf2.__staleWhileFetching !== void 0) {
        options.status.returnedStale = true;
      }
      return bf2.__staleWhileFetching;
    } else if (bf2.__returned === bf2) {
      throw er;
    }
  };
  const pcall = (res, rej) => {
    var _a6;
    const fmp = (_a6 = __privateGet(this, _fetchMethod)) == null ? void 0 : _a6.call(this, k, v, fetchOpts);
    if (fmp && fmp instanceof Promise) {
      fmp.then((v2) => res(v2 === void 0 ? void 0 : v2), rej);
    }
    ac.signal.addEventListener("abort", () => {
      if (!options.ignoreFetchAbort || options.allowStaleOnFetchAbort) {
        res(void 0);
        if (options.allowStaleOnFetchAbort) {
          res = (v2) => cb(v2, true);
        }
      }
    });
  };
  if (options.status)
    options.status.fetchDispatched = true;
  const p5 = new Promise(pcall).then(cb, eb);
  const bf = Object.assign(p5, {
    __abortController: ac,
    __staleWhileFetching: v,
    __returned: void 0
  });
  if (index4 === void 0) {
    this.set(k, bf, { ...fetchOpts.options, status: void 0 });
    index4 = __privateGet(this, _keyMap).get(k);
  } else {
    __privateGet(this, _valList)[index4] = bf;
  }
  return bf;
};
isBackgroundFetch_fn = function(p5) {
  if (!__privateGet(this, _hasFetchMethod))
    return false;
  const b = p5;
  return !!b && b instanceof Promise && b.hasOwnProperty("__staleWhileFetching") && b.__abortController instanceof AC;
};
connect_fn = function(p5, n) {
  __privateGet(this, _prev)[n] = p5;
  __privateGet(this, _next)[p5] = n;
};
moveToTail_fn = function(index4) {
  if (index4 !== __privateGet(this, _tail)) {
    if (index4 === __privateGet(this, _head)) {
      __privateSet(this, _head, __privateGet(this, _next)[index4]);
    } else {
      __privateMethod(this, _LRUCache_instances, connect_fn).call(this, __privateGet(this, _prev)[index4], __privateGet(this, _next)[index4]);
    }
    __privateMethod(this, _LRUCache_instances, connect_fn).call(this, __privateGet(this, _tail), index4);
    __privateSet(this, _tail, index4);
  }
};
var LRUCache = _LRUCache;

// ../../node_modules/path-scurry/dist/mjs/index.js
var import_path2 = require("path");
var import_url2 = require("url");
var actualFS = __toESM(require("fs"), 1);
var import_fs = require("fs");
var import_promises = require("fs/promises");

// ../../node_modules/minipass/dist/esm/index.js
var import_node_events = require("events");
var import_node_stream = __toESM(require("stream"), 1);
var import_node_string_decoder = require("string_decoder");
var proc = typeof process === "object" && process ? process : {
  stdout: null,
  stderr: null
};
var isStream = (s5) => !!s5 && typeof s5 === "object" && (s5 instanceof Minipass || s5 instanceof import_node_stream.default || isReadable(s5) || isWritable(s5));
var isReadable = (s5) => !!s5 && typeof s5 === "object" && s5 instanceof import_node_events.EventEmitter && typeof s5.pipe === "function" && // node core Writable streams have a pipe() method, but it throws
s5.pipe !== import_node_stream.default.Writable.prototype.pipe;
var isWritable = (s5) => !!s5 && typeof s5 === "object" && s5 instanceof import_node_events.EventEmitter && typeof s5.write === "function" && typeof s5.end === "function";
var EOF = Symbol("EOF");
var MAYBE_EMIT_END = Symbol("maybeEmitEnd");
var EMITTED_END = Symbol("emittedEnd");
var EMITTING_END = Symbol("emittingEnd");
var EMITTED_ERROR = Symbol("emittedError");
var CLOSED = Symbol("closed");
var READ = Symbol("read");
var FLUSH = Symbol("flush");
var FLUSHCHUNK = Symbol("flushChunk");
var ENCODING = Symbol("encoding");
var DECODER = Symbol("decoder");
var FLOWING = Symbol("flowing");
var PAUSED = Symbol("paused");
var RESUME = Symbol("resume");
var BUFFER = Symbol("buffer");
var PIPES = Symbol("pipes");
var BUFFERLENGTH = Symbol("bufferLength");
var BUFFERPUSH = Symbol("bufferPush");
var BUFFERSHIFT = Symbol("bufferShift");
var OBJECTMODE = Symbol("objectMode");
var DESTROYED = Symbol("destroyed");
var ERROR = Symbol("error");
var EMITDATA = Symbol("emitData");
var EMITEND = Symbol("emitEnd");
var EMITEND2 = Symbol("emitEnd2");
var ASYNC = Symbol("async");
var ABORT = Symbol("abort");
var ABORTED = Symbol("aborted");
var SIGNAL = Symbol("signal");
var DATALISTENERS = Symbol("dataListeners");
var DISCARDED = Symbol("discarded");
var defer = (fn) => Promise.resolve().then(fn);
var nodefer = (fn) => fn();
var isEndish = (ev) => ev === "end" || ev === "finish" || ev === "prefinish";
var isArrayBufferLike = (b) => b instanceof ArrayBuffer || !!b && typeof b === "object" && b.constructor && b.constructor.name === "ArrayBuffer" && b.byteLength >= 0;
var isArrayBufferView = (b) => !Buffer.isBuffer(b) && ArrayBuffer.isView(b);
var Pipe = class {
  src;
  dest;
  opts;
  ondrain;
  constructor(src, dest, opts) {
    this.src = src;
    this.dest = dest;
    this.opts = opts;
    this.ondrain = () => src[RESUME]();
    this.dest.on("drain", this.ondrain);
  }
  unpipe() {
    this.dest.removeListener("drain", this.ondrain);
  }
  // only here for the prototype
  /* c8 ignore start */
  proxyErrors(_er) {
  }
  /* c8 ignore stop */
  end() {
    this.unpipe();
    if (this.opts.end)
      this.dest.end();
  }
};
var PipeProxyErrors = class extends Pipe {
  unpipe() {
    this.src.removeListener("error", this.proxyErrors);
    super.unpipe();
  }
  constructor(src, dest, opts) {
    super(src, dest, opts);
    this.proxyErrors = (er) => dest.emit("error", er);
    src.on("error", this.proxyErrors);
  }
};
var isObjectModeOptions = (o) => !!o.objectMode;
var isEncodingOptions = (o) => !o.objectMode && !!o.encoding && o.encoding !== "buffer";
var Minipass = class extends import_node_events.EventEmitter {
  [FLOWING] = false;
  [PAUSED] = false;
  [PIPES] = [];
  [BUFFER] = [];
  [OBJECTMODE];
  [ENCODING];
  [ASYNC];
  [DECODER];
  [EOF] = false;
  [EMITTED_END] = false;
  [EMITTING_END] = false;
  [CLOSED] = false;
  [EMITTED_ERROR] = null;
  [BUFFERLENGTH] = 0;
  [DESTROYED] = false;
  [SIGNAL];
  [ABORTED] = false;
  [DATALISTENERS] = 0;
  [DISCARDED] = false;
  /**
   * true if the stream can be written
   */
  writable = true;
  /**
   * true if the stream can be read
   */
  readable = true;
  /**
   * If `RType` is Buffer, then options do not need to be provided.
   * Otherwise, an options object must be provided to specify either
   * {@link Minipass.SharedOptions.objectMode} or
   * {@link Minipass.SharedOptions.encoding}, as appropriate.
   */
  constructor(...args) {
    const options = args[0] || {};
    super();
    if (options.objectMode && typeof options.encoding === "string") {
      throw new TypeError("Encoding and objectMode may not be used together");
    }
    if (isObjectModeOptions(options)) {
      this[OBJECTMODE] = true;
      this[ENCODING] = null;
    } else if (isEncodingOptions(options)) {
      this[ENCODING] = options.encoding;
      this[OBJECTMODE] = false;
    } else {
      this[OBJECTMODE] = false;
      this[ENCODING] = null;
    }
    this[ASYNC] = !!options.async;
    this[DECODER] = this[ENCODING] ? new import_node_string_decoder.StringDecoder(this[ENCODING]) : null;
    if (options && options.debugExposeBuffer === true) {
      Object.defineProperty(this, "buffer", { get: () => this[BUFFER] });
    }
    if (options && options.debugExposePipes === true) {
      Object.defineProperty(this, "pipes", { get: () => this[PIPES] });
    }
    const { signal } = options;
    if (signal) {
      this[SIGNAL] = signal;
      if (signal.aborted) {
        this[ABORT]();
      } else {
        signal.addEventListener("abort", () => this[ABORT]());
      }
    }
  }
  /**
   * The amount of data stored in the buffer waiting to be read.
   *
   * For Buffer strings, this will be the total byte length.
   * For string encoding streams, this will be the string character length,
   * according to JavaScript's `string.length` logic.
   * For objectMode streams, this is a count of the items waiting to be
   * emitted.
   */
  get bufferLength() {
    return this[BUFFERLENGTH];
  }
  /**
   * The `BufferEncoding` currently in use, or `null`
   */
  get encoding() {
    return this[ENCODING];
  }
  /**
   * @deprecated - This is a read only property
   */
  set encoding(_enc) {
    throw new Error("Encoding must be set at instantiation time");
  }
  /**
   * @deprecated - Encoding may only be set at instantiation time
   */
  setEncoding(_enc) {
    throw new Error("Encoding must be set at instantiation time");
  }
  /**
   * True if this is an objectMode stream
   */
  get objectMode() {
    return this[OBJECTMODE];
  }
  /**
   * @deprecated - This is a read-only property
   */
  set objectMode(_om) {
    throw new Error("objectMode must be set at instantiation time");
  }
  /**
   * true if this is an async stream
   */
  get ["async"]() {
    return this[ASYNC];
  }
  /**
   * Set to true to make this stream async.
   *
   * Once set, it cannot be unset, as this would potentially cause incorrect
   * behavior.  Ie, a sync stream can be made async, but an async stream
   * cannot be safely made sync.
   */
  set ["async"](a2) {
    this[ASYNC] = this[ASYNC] || !!a2;
  }
  // drop everything and get out of the flow completely
  [ABORT]() {
    var _a6, _b;
    this[ABORTED] = true;
    this.emit("abort", (_a6 = this[SIGNAL]) == null ? void 0 : _a6.reason);
    this.destroy((_b = this[SIGNAL]) == null ? void 0 : _b.reason);
  }
  /**
   * True if the stream has been aborted.
   */
  get aborted() {
    return this[ABORTED];
  }
  /**
   * No-op setter. Stream aborted status is set via the AbortSignal provided
   * in the constructor options.
   */
  set aborted(_2) {
  }
  write(chunk, encoding, cb) {
    var _a6;
    if (this[ABORTED])
      return false;
    if (this[EOF])
      throw new Error("write after end");
    if (this[DESTROYED]) {
      this.emit("error", Object.assign(new Error("Cannot call write after a stream was destroyed"), { code: "ERR_STREAM_DESTROYED" }));
      return true;
    }
    if (typeof encoding === "function") {
      cb = encoding;
      encoding = "utf8";
    }
    if (!encoding)
      encoding = "utf8";
    const fn = this[ASYNC] ? defer : nodefer;
    if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {
      if (isArrayBufferView(chunk)) {
        chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength);
      } else if (isArrayBufferLike(chunk)) {
        chunk = Buffer.from(chunk);
      } else if (typeof chunk !== "string") {
        throw new Error("Non-contiguous data written to non-objectMode stream");
      }
    }
    if (this[OBJECTMODE]) {
      if (this[FLOWING] && this[BUFFERLENGTH] !== 0)
        this[FLUSH](true);
      if (this[FLOWING])
        this.emit("data", chunk);
      else
        this[BUFFERPUSH](chunk);
      if (this[BUFFERLENGTH] !== 0)
        this.emit("readable");
      if (cb)
        fn(cb);
      return this[FLOWING];
    }
    if (!chunk.length) {
      if (this[BUFFERLENGTH] !== 0)
        this.emit("readable");
      if (cb)
        fn(cb);
      return this[FLOWING];
    }
    if (typeof chunk === "string" && // unless it is a string already ready for us to use
    !(encoding === this[ENCODING] && !((_a6 = this[DECODER]) == null ? void 0 : _a6.lastNeed))) {
      chunk = Buffer.from(chunk, encoding);
    }
    if (Buffer.isBuffer(chunk) && this[ENCODING]) {
      chunk = this[DECODER].write(chunk);
    }
    if (this[FLOWING] && this[BUFFERLENGTH] !== 0)
      this[FLUSH](true);
    if (this[FLOWING])
      this.emit("data", chunk);
    else
      this[BUFFERPUSH](chunk);
    if (this[BUFFERLENGTH] !== 0)
      this.emit("readable");
    if (cb)
      fn(cb);
    return this[FLOWING];
  }
  /**
   * Low-level explicit read method.
   *
   * In objectMode, the argument is ignored, and one item is returned if
   * available.
   *
   * `n` is the number of bytes (or in the case of encoding streams,
   * characters) to consume. If `n` is not provided, then the entire buffer
   * is returned, or `null` is returned if no data is available.
   *
   * If `n` is greater that the amount of data in the internal buffer,
   * then `null` is returned.
   */
  read(n) {
    if (this[DESTROYED])
      return null;
    this[DISCARDED] = false;
    if (this[BUFFERLENGTH] === 0 || n === 0 || n && n > this[BUFFERLENGTH]) {
      this[MAYBE_EMIT_END]();
      return null;
    }
    if (this[OBJECTMODE])
      n = null;
    if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {
      this[BUFFER] = [
        this[ENCODING] ? this[BUFFER].join("") : Buffer.concat(this[BUFFER], this[BUFFERLENGTH])
      ];
    }
    const ret = this[READ](n || null, this[BUFFER][0]);
    this[MAYBE_EMIT_END]();
    return ret;
  }
  [READ](n, chunk) {
    if (this[OBJECTMODE])
      this[BUFFERSHIFT]();
    else {
      const c = chunk;
      if (n === c.length || n === null)
        this[BUFFERSHIFT]();
      else if (typeof c === "string") {
        this[BUFFER][0] = c.slice(n);
        chunk = c.slice(0, n);
        this[BUFFERLENGTH] -= n;
      } else {
        this[BUFFER][0] = c.subarray(n);
        chunk = c.subarray(0, n);
        this[BUFFERLENGTH] -= n;
      }
    }
    this.emit("data", chunk);
    if (!this[BUFFER].length && !this[EOF])
      this.emit("drain");
    return chunk;
  }
  end(chunk, encoding, cb) {
    if (typeof chunk === "function") {
      cb = chunk;
      chunk = void 0;
    }
    if (typeof encoding === "function") {
      cb = encoding;
      encoding = "utf8";
    }
    if (chunk !== void 0)
      this.write(chunk, encoding);
    if (cb)
      this.once("end", cb);
    this[EOF] = true;
    this.writable = false;
    if (this[FLOWING] || !this[PAUSED])
      this[MAYBE_EMIT_END]();
    return this;
  }
  // don't let the internal resume be overwritten
  [RESUME]() {
    if (this[DESTROYED])
      return;
    if (!this[DATALISTENERS] && !this[PIPES].length) {
      this[DISCARDED] = true;
    }
    this[PAUSED] = false;
    this[FLOWING] = true;
    this.emit("resume");
    if (this[BUFFER].length)
      this[FLUSH]();
    else if (this[EOF])
      this[MAYBE_EMIT_END]();
    else
      this.emit("drain");
  }
  /**
   * Resume the stream if it is currently in a paused state
   *
   * If called when there are no pipe destinations or `data` event listeners,
   * this will place the stream in a "discarded" state, where all data will
   * be thrown away. The discarded state is removed if a pipe destination or
   * data handler is added, if pause() is called, or if any synchronous or
   * asynchronous iteration is started.
   */
  resume() {
    return this[RESUME]();
  }
  /**
   * Pause the stream
   */
  pause() {
    this[FLOWING] = false;
    this[PAUSED] = true;
    this[DISCARDED] = false;
  }
  /**
   * true if the stream has been forcibly destroyed
   */
  get destroyed() {
    return this[DESTROYED];
  }
  /**
   * true if the stream is currently in a flowing state, meaning that
   * any writes will be immediately emitted.
   */
  get flowing() {
    return this[FLOWING];
  }
  /**
   * true if the stream is currently in a paused state
   */
  get paused() {
    return this[PAUSED];
  }
  [BUFFERPUSH](chunk) {
    if (this[OBJECTMODE])
      this[BUFFERLENGTH] += 1;
    else
      this[BUFFERLENGTH] += chunk.length;
    this[BUFFER].push(chunk);
  }
  [BUFFERSHIFT]() {
    if (this[OBJECTMODE])
      this[BUFFERLENGTH] -= 1;
    else
      this[BUFFERLENGTH] -= this[BUFFER][0].length;
    return this[BUFFER].shift();
  }
  [FLUSH](noDrain = false) {
    do {
    } while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) && this[BUFFER].length);
    if (!noDrain && !this[BUFFER].length && !this[EOF])
      this.emit("drain");
  }
  [FLUSHCHUNK](chunk) {
    this.emit("data", chunk);
    return this[FLOWING];
  }
  /**
   * Pipe all data emitted by this stream into the destination provided.
   *
   * Triggers the flow of data.
   */
  pipe(dest, opts) {
    if (this[DESTROYED])
      return dest;
    this[DISCARDED] = false;
    const ended = this[EMITTED_END];
    opts = opts || {};
    if (dest === proc.stdout || dest === proc.stderr)
      opts.end = false;
    else
      opts.end = opts.end !== false;
    opts.proxyErrors = !!opts.proxyErrors;
    if (ended) {
      if (opts.end)
        dest.end();
    } else {
      this[PIPES].push(!opts.proxyErrors ? new Pipe(this, dest, opts) : new PipeProxyErrors(this, dest, opts));
      if (this[ASYNC])
        defer(() => this[RESUME]());
      else
        this[RESUME]();
    }
    return dest;
  }
  /**
   * Fully unhook a piped destination stream.
   *
   * If the destination stream was the only consumer of this stream (ie,
   * there are no other piped destinations or `'data'` event listeners)
   * then the flow of data will stop until there is another consumer or
   * {@link Minipass#resume} is explicitly called.
   */
  unpipe(dest) {
    const p5 = this[PIPES].find((p6) => p6.dest === dest);
    if (p5) {
      if (this[PIPES].length === 1) {
        if (this[FLOWING] && this[DATALISTENERS] === 0) {
          this[FLOWING] = false;
        }
        this[PIPES] = [];
      } else
        this[PIPES].splice(this[PIPES].indexOf(p5), 1);
      p5.unpipe();
    }
  }
  /**
   * Alias for {@link Minipass#on}
   */
  addListener(ev, handler) {
    return this.on(ev, handler);
  }
  /**
   * Mostly identical to `EventEmitter.on`, with the following
   * behavior differences to prevent data loss and unnecessary hangs:
   *
   * - Adding a 'data' event handler will trigger the flow of data
   *
   * - Adding a 'readable' event handler when there is data waiting to be read
   *   will cause 'readable' to be emitted immediately.
   *
   * - Adding an 'endish' event handler ('end', 'finish', etc.) which has
   *   already passed will cause the event to be emitted immediately and all
   *   handlers removed.
   *
   * - Adding an 'error' event handler after an error has been emitted will
   *   cause the event to be re-emitted immediately with the error previously
   *   raised.
   */
  on(ev, handler) {
    const ret = super.on(ev, handler);
    if (ev === "data") {
      this[DISCARDED] = false;
      this[DATALISTENERS]++;
      if (!this[PIPES].length && !this[FLOWING]) {
        this[RESUME]();
      }
    } else if (ev === "readable" && this[BUFFERLENGTH] !== 0) {
      super.emit("readable");
    } else if (isEndish(ev) && this[EMITTED_END]) {
      super.emit(ev);
      this.removeAllListeners(ev);
    } else if (ev === "error" && this[EMITTED_ERROR]) {
      const h4 = handler;
      if (this[ASYNC])
        defer(() => h4.call(this, this[EMITTED_ERROR]));
      else
        h4.call(this, this[EMITTED_ERROR]);
    }
    return ret;
  }
  /**
   * Alias for {@link Minipass#off}
   */
  removeListener(ev, handler) {
    return this.off(ev, handler);
  }
  /**
   * Mostly identical to `EventEmitter.off`
   *
   * If a 'data' event handler is removed, and it was the last consumer
   * (ie, there are no pipe destinations or other 'data' event listeners),
   * then the flow of data will stop until there is another consumer or
   * {@link Minipass#resume} is explicitly called.
   */
  off(ev, handler) {
    const ret = super.off(ev, handler);
    if (ev === "data") {
      this[DATALISTENERS] = this.listeners("data").length;
      if (this[DATALISTENERS] === 0 && !this[DISCARDED] && !this[PIPES].length) {
        this[FLOWING] = false;
      }
    }
    return ret;
  }
  /**
   * Mostly identical to `EventEmitter.removeAllListeners`
   *
   * If all 'data' event handlers are removed, and they were the last consumer
   * (ie, there are no pipe destinations), then the flow of data will stop
   * until there is another consumer or {@link Minipass#resume} is explicitly
   * called.
   */
  removeAllListeners(ev) {
    const ret = super.removeAllListeners(ev);
    if (ev === "data" || ev === void 0) {
      this[DATALISTENERS] = 0;
      if (!this[DISCARDED] && !this[PIPES].length) {
        this[FLOWING] = false;
      }
    }
    return ret;
  }
  /**
   * true if the 'end' event has been emitted
   */
  get emittedEnd() {
    return this[EMITTED_END];
  }
  [MAYBE_EMIT_END]() {
    if (!this[EMITTING_END] && !this[EMITTED_END] && !this[DESTROYED] && this[BUFFER].length === 0 && this[EOF]) {
      this[EMITTING_END] = true;
      this.emit("end");
      this.emit("prefinish");
      this.emit("finish");
      if (this[CLOSED])
        this.emit("close");
      this[EMITTING_END] = false;
    }
  }
  /**
   * Mostly identical to `EventEmitter.emit`, with the following
   * behavior differences to prevent data loss and unnecessary hangs:
   *
   * If the stream has been destroyed, and the event is something other
   * than 'close' or 'error', then `false` is returned and no handlers
   * are called.
   *
   * If the event is 'end', and has already been emitted, then the event
   * is ignored. If the stream is in a paused or non-flowing state, then
   * the event will be deferred until data flow resumes. If the stream is
   * async, then handlers will be called on the next tick rather than
   * immediately.
   *
   * If the event is 'close', and 'end' has not yet been emitted, then
   * the event will be deferred until after 'end' is emitted.
   *
   * If the event is 'error', and an AbortSignal was provided for the stream,
   * and there are no listeners, then the event is ignored, matching the
   * behavior of node core streams in the presense of an AbortSignal.
   *
   * If the event is 'finish' or 'prefinish', then all listeners will be
   * removed after emitting the event, to prevent double-firing.
   */
  emit(ev, ...args) {
    const data = args[0];
    if (ev !== "error" && ev !== "close" && ev !== DESTROYED && this[DESTROYED]) {
      return false;
    } else if (ev === "data") {
      return !this[OBJECTMODE] && !data ? false : this[ASYNC] ? (defer(() => this[EMITDATA](data)), true) : this[EMITDATA](data);
    } else if (ev === "end") {
      return this[EMITEND]();
    } else if (ev === "close") {
      this[CLOSED] = true;
      if (!this[EMITTED_END] && !this[DESTROYED])
        return false;
      const ret2 = super.emit("close");
      this.removeAllListeners("close");
      return ret2;
    } else if (ev === "error") {
      this[EMITTED_ERROR] = data;
      super.emit(ERROR, data);
      const ret2 = !this[SIGNAL] || this.listeners("error").length ? super.emit("error", data) : false;
      this[MAYBE_EMIT_END]();
      return ret2;
    } else if (ev === "resume") {
      const ret2 = super.emit("resume");
      this[MAYBE_EMIT_END]();
      return ret2;
    } else if (ev === "finish" || ev === "prefinish") {
      const ret2 = super.emit(ev);
      this.removeAllListeners(ev);
      return ret2;
    }
    const ret = super.emit(ev, ...args);
    this[MAYBE_EMIT_END]();
    return ret;
  }
  [EMITDATA](data) {
    for (const p5 of this[PIPES]) {
      if (p5.dest.write(data) === false)
        this.pause();
    }
    const ret = this[DISCARDED] ? false : super.emit("data", data);
    this[MAYBE_EMIT_END]();
    return ret;
  }
  [EMITEND]() {
    if (this[EMITTED_END])
      return false;
    this[EMITTED_END] = true;
    this.readable = false;
    return this[ASYNC] ? (defer(() => this[EMITEND2]()), true) : this[EMITEND2]();
  }
  [EMITEND2]() {
    if (this[DECODER]) {
      const data = this[DECODER].end();
      if (data) {
        for (const p5 of this[PIPES]) {
          p5.dest.write(data);
        }
        if (!this[DISCARDED])
          super.emit("data", data);
      }
    }
    for (const p5 of this[PIPES]) {
      p5.end();
    }
    const ret = super.emit("end");
    this.removeAllListeners("end");
    return ret;
  }
  /**
   * Return a Promise that resolves to an array of all emitted data once
   * the stream ends.
   */
  async collect() {
    const buf = Object.assign([], {
      dataLength: 0
    });
    if (!this[OBJECTMODE])
      buf.dataLength = 0;
    const p5 = this.promise();
    this.on("data", (c) => {
      buf.push(c);
      if (!this[OBJECTMODE])
        buf.dataLength += c.length;
    });
    await p5;
    return buf;
  }
  /**
   * Return a Promise that resolves to the concatenation of all emitted data
   * once the stream ends.
   *
   * Not allowed on objectMode streams.
   */
  async concat() {
    if (this[OBJECTMODE]) {
      throw new Error("cannot concat in objectMode");
    }
    const buf = await this.collect();
    return this[ENCODING] ? buf.join("") : Buffer.concat(buf, buf.dataLength);
  }
  /**
   * Return a void Promise that resolves once the stream ends.
   */
  async promise() {
    return new Promise((resolve9, reject) => {
      this.on(DESTROYED, () => reject(new Error("stream destroyed")));
      this.on("error", (er) => reject(er));
      this.on("end", () => resolve9());
    });
  }
  /**
   * Asynchronous `for await of` iteration.
   *
   * This will continue emitting all chunks until the stream terminates.
   */
  [Symbol.asyncIterator]() {
    this[DISCARDED] = false;
    let stopped = false;
    const stop = async () => {
      this.pause();
      stopped = true;
      return { value: void 0, done: true };
    };
    const next = () => {
      if (stopped)
        return stop();
      const res = this.read();
      if (res !== null)
        return Promise.resolve({ done: false, value: res });
      if (this[EOF])
        return stop();
      let resolve9;
      let reject;
      const onerr = (er) => {
        this.off("data", ondata);
        this.off("end", onend);
        this.off(DESTROYED, ondestroy);
        stop();
        reject(er);
      };
      const ondata = (value) => {
        this.off("error", onerr);
        this.off("end", onend);
        this.off(DESTROYED, ondestroy);
        this.pause();
        resolve9({ value, done: !!this[EOF] });
      };
      const onend = () => {
        this.off("error", onerr);
        this.off("data", ondata);
        this.off(DESTROYED, ondestroy);
        stop();
        resolve9({ done: true, value: void 0 });
      };
      const ondestroy = () => onerr(new Error("stream destroyed"));
      return new Promise((res2, rej) => {
        reject = rej;
        resolve9 = res2;
        this.once(DESTROYED, ondestroy);
        this.once("error", onerr);
        this.once("end", onend);
        this.once("data", ondata);
      });
    };
    return {
      next,
      throw: stop,
      return: stop,
      [Symbol.asyncIterator]() {
        return this;
      }
    };
  }
  /**
   * Synchronous `for of` iteration.
   *
   * The iteration will terminate when the internal buffer runs out, even
   * if the stream has not yet terminated.
   */
  [Symbol.iterator]() {
    this[DISCARDED] = false;
    let stopped = false;
    const stop = () => {
      this.pause();
      this.off(ERROR, stop);
      this.off(DESTROYED, stop);
      this.off("end", stop);
      stopped = true;
      return { done: true, value: void 0 };
    };
    const next = () => {
      if (stopped)
        return stop();
      const value = this.read();
      return value === null ? stop() : { done: false, value };
    };
    this.once("end", stop);
    this.once(ERROR, stop);
    this.once(DESTROYED, stop);
    return {
      next,
      throw: stop,
      return: stop,
      [Symbol.iterator]() {
        return this;
      }
    };
  }
  /**
   * Destroy a stream, preventing it from being used for any further purpose.
   *
   * If the stream has a `close()` method, then it will be called on
   * destruction.
   *
   * After destruction, any attempt to write data, read data, or emit most
   * events will be ignored.
   *
   * If an error argument is provided, then it will be emitted in an
   * 'error' event.
   */
  destroy(er) {
    if (this[DESTROYED]) {
      if (er)
        this.emit("error", er);
      else
        this.emit(DESTROYED);
      return this;
    }
    this[DESTROYED] = true;
    this[DISCARDED] = true;
    this[BUFFER].length = 0;
    this[BUFFERLENGTH] = 0;
    const wc = this;
    if (typeof wc.close === "function" && !this[CLOSED])
      wc.close();
    if (er)
      this.emit("error", er);
    else
      this.emit(DESTROYED);
    return this;
  }
  /**
   * Alias for {@link isStream}
   *
   * Former export location, maintained for backwards compatibility.
   *
   * @deprecated
   */
  static get isStream() {
    return isStream;
  }
};

// ../../node_modules/path-scurry/dist/mjs/index.js
var realpathSync = import_fs.realpathSync.native;
var defaultFS = {
  lstatSync: import_fs.lstatSync,
  readdir: import_fs.readdir,
  readdirSync: import_fs.readdirSync,
  readlinkSync: import_fs.readlinkSync,
  realpathSync,
  promises: {
    lstat: import_promises.lstat,
    readdir: import_promises.readdir,
    readlink: import_promises.readlink,
    realpath: import_promises.realpath
  }
};
var fsFromOption = (fsOption) => !fsOption || fsOption === defaultFS || fsOption === actualFS ? defaultFS : {
  ...defaultFS,
  ...fsOption,
  promises: {
    ...defaultFS.promises,
    ...fsOption.promises || {}
  }
};
var uncDriveRegexp = /^\\\\\?\\([a-z]:)\\?$/i;
var uncToDrive = (rootPath) => rootPath.replace(/\//g, "\\").replace(uncDriveRegexp, "$1\\");
var eitherSep = /[\\\/]/;
var UNKNOWN = 0;
var IFIFO = 1;
var IFCHR = 2;
var IFDIR = 4;
var IFBLK = 6;
var IFREG = 8;
var IFLNK = 10;
var IFSOCK = 12;
var IFMT = 15;
var IFMT_UNKNOWN = ~IFMT;
var READDIR_CALLED = 16;
var LSTAT_CALLED = 32;
var ENOTDIR = 64;
var ENOENT = 128;
var ENOREADLINK = 256;
var ENOREALPATH = 512;
var ENOCHILD = ENOTDIR | ENOENT | ENOREALPATH;
var TYPEMASK = 1023;
var entToType = (s5) => s5.isFile() ? IFREG : s5.isDirectory() ? IFDIR : s5.isSymbolicLink() ? IFLNK : s5.isCharacterDevice() ? IFCHR : s5.isBlockDevice() ? IFBLK : s5.isSocket() ? IFSOCK : s5.isFIFO() ? IFIFO : UNKNOWN;
var normalizeCache = /* @__PURE__ */ new Map();
var normalize5 = (s5) => {
  const c = normalizeCache.get(s5);
  if (c)
    return c;
  const n = s5.normalize("NFKD");
  normalizeCache.set(s5, n);
  return n;
};
var normalizeNocaseCache = /* @__PURE__ */ new Map();
var normalizeNocase = (s5) => {
  const c = normalizeNocaseCache.get(s5);
  if (c)
    return c;
  const n = normalize5(s5.toLowerCase());
  normalizeNocaseCache.set(s5, n);
  return n;
};
var ResolveCache = class extends LRUCache {
  constructor() {
    super({ max: 256 });
  }
};
var ChildrenCache = class extends LRUCache {
  constructor(maxSize = 16 * 1024) {
    super({
      maxSize,
      // parent + children
      sizeCalculation: (a2) => a2.length + 1
    });
  }
};
var setAsCwd = Symbol("PathScurry setAsCwd");
var _fs, _dev, _mode, _nlink, _uid, _gid, _rdev, _blksize, _ino, _size2, _blocks, _atimeMs, _mtimeMs, _ctimeMs, _birthtimeMs, _atime, _mtime, _ctime, _birthtime, _matchName, _depth, _fullpath, _fullpathPosix, _relative, _relativePosix, _type, _children, _linkTarget, _realpath, _PathBase_instances, resolveParts_fn, readdirSuccess_fn, markENOENT_fn, markChildrenENOENT_fn, markENOREALPATH_fn, markENOTDIR_fn, readdirFail_fn, lstatFail_fn, readlinkFail_fn, readdirAddChild_fn, readdirAddNewChild_fn, readdirMaybePromoteChild_fn, readdirPromoteChild_fn, applyStat_fn, _onReaddirCB, _readdirCBInFlight, callOnReaddirCB_fn, _asyncReaddirInFlight;
var PathBase = class {
  /**
   * Do not create new Path objects directly.  They should always be accessed
   * via the PathScurry class or other methods on the Path class.
   *
   * @internal
   */
  constructor(name3, type2 = UNKNOWN, root6, roots, nocase, children, opts) {
    __privateAdd(this, _PathBase_instances);
    /**
     * the basename of this path
     *
     * **Important**: *always* test the path name against any test string
     * usingthe {@link isNamed} method, and not by directly comparing this
     * string. Otherwise, unicode path strings that the system sees as identical
     * will not be properly treated as the same path, leading to incorrect
     * behavior and possible security issues.
     */
    __publicField(this, "name");
    /**
     * the Path entry corresponding to the path root.
     *
     * @internal
     */
    __publicField(this, "root");
    /**
     * All roots found within the current PathScurry family
     *
     * @internal
     */
    __publicField(this, "roots");
    /**
     * a reference to the parent path, or undefined in the case of root entries
     *
     * @internal
     */
    __publicField(this, "parent");
    /**
     * boolean indicating whether paths are compared case-insensitively
     * @internal
     */
    __publicField(this, "nocase");
    // potential default fs override
    __privateAdd(this, _fs);
    // Stats fields
    __privateAdd(this, _dev);
    __privateAdd(this, _mode);
    __privateAdd(this, _nlink);
    __privateAdd(this, _uid);
    __privateAdd(this, _gid);
    __privateAdd(this, _rdev);
    __privateAdd(this, _blksize);
    __privateAdd(this, _ino);
    __privateAdd(this, _size2);
    __privateAdd(this, _blocks);
    __privateAdd(this, _atimeMs);
    __privateAdd(this, _mtimeMs);
    __privateAdd(this, _ctimeMs);
    __privateAdd(this, _birthtimeMs);
    __privateAdd(this, _atime);
    __privateAdd(this, _mtime);
    __privateAdd(this, _ctime);
    __privateAdd(this, _birthtime);
    __privateAdd(this, _matchName);
    __privateAdd(this, _depth);
    __privateAdd(this, _fullpath);
    __privateAdd(this, _fullpathPosix);
    __privateAdd(this, _relative);
    __privateAdd(this, _relativePosix);
    __privateAdd(this, _type);
    __privateAdd(this, _children);
    __privateAdd(this, _linkTarget);
    __privateAdd(this, _realpath);
    __privateAdd(this, _onReaddirCB, []);
    __privateAdd(this, _readdirCBInFlight, false);
    __privateAdd(this, _asyncReaddirInFlight);
    this.name = name3;
    __privateSet(this, _matchName, nocase ? normalizeNocase(name3) : normalize5(name3));
    __privateSet(this, _type, type2 & TYPEMASK);
    this.nocase = nocase;
    this.roots = roots;
    this.root = root6 || this;
    __privateSet(this, _children, children);
    __privateSet(this, _fullpath, opts.fullpath);
    __privateSet(this, _relative, opts.relative);
    __privateSet(this, _relativePosix, opts.relativePosix);
    this.parent = opts.parent;
    if (this.parent) {
      __privateSet(this, _fs, __privateGet(this.parent, _fs));
    } else {
      __privateSet(this, _fs, fsFromOption(opts.fs));
    }
  }
  get dev() {
    return __privateGet(this, _dev);
  }
  get mode() {
    return __privateGet(this, _mode);
  }
  get nlink() {
    return __privateGet(this, _nlink);
  }
  get uid() {
    return __privateGet(this, _uid);
  }
  get gid() {
    return __privateGet(this, _gid);
  }
  get rdev() {
    return __privateGet(this, _rdev);
  }
  get blksize() {
    return __privateGet(this, _blksize);
  }
  get ino() {
    return __privateGet(this, _ino);
  }
  get size() {
    return __privateGet(this, _size2);
  }
  get blocks() {
    return __privateGet(this, _blocks);
  }
  get atimeMs() {
    return __privateGet(this, _atimeMs);
  }
  get mtimeMs() {
    return __privateGet(this, _mtimeMs);
  }
  get ctimeMs() {
    return __privateGet(this, _ctimeMs);
  }
  get birthtimeMs() {
    return __privateGet(this, _birthtimeMs);
  }
  get atime() {
    return __privateGet(this, _atime);
  }
  get mtime() {
    return __privateGet(this, _mtime);
  }
  get ctime() {
    return __privateGet(this, _ctime);
  }
  get birthtime() {
    return __privateGet(this, _birthtime);
  }
  /**
   * This property is for compatibility with the Dirent class as of
   * Node v20, where Dirent['path'] refers to the path of the directory
   * that was passed to readdir.  So, somewhat counterintuitively, this
   * property refers to the *parent* path, not the path object itself.
   * For root entries, it's the path to the entry itself.
   */
  get path() {
    return (this.parent || this).fullpath();
  }
  /**
   * Returns the depth of the Path object from its root.
   *
   * For example, a path at `/foo/bar` would have a depth of 2.
   */
  depth() {
    if (__privateGet(this, _depth) !== void 0)
      return __privateGet(this, _depth);
    if (!this.parent)
      return __privateSet(this, _depth, 0);
    return __privateSet(this, _depth, this.parent.depth() + 1);
  }
  /**
   * @internal
   */
  childrenCache() {
    return __privateGet(this, _children);
  }
  /**
   * Get the Path object referenced by the string path, resolved from this Path
   */
  resolve(path45) {
    var _a6;
    if (!path45) {
      return this;
    }
    const rootPath = this.getRootString(path45);
    const dir = path45.substring(rootPath.length);
    const dirParts = dir.split(this.splitSep);
    const result = rootPath ? __privateMethod(_a6 = this.getRoot(rootPath), _PathBase_instances, resolveParts_fn).call(_a6, dirParts) : __privateMethod(this, _PathBase_instances, resolveParts_fn).call(this, dirParts);
    return result;
  }
  /**
   * Returns the cached children Path objects, if still available.  If they
   * have fallen out of the cache, then returns an empty array, and resets the
   * READDIR_CALLED bit, so that future calls to readdir() will require an fs
   * lookup.
   *
   * @internal
   */
  children() {
    const cached = __privateGet(this, _children).get(this);
    if (cached) {
      return cached;
    }
    const children = Object.assign([], { provisional: 0 });
    __privateGet(this, _children).set(this, children);
    __privateSet(this, _type, __privateGet(this, _type) & ~READDIR_CALLED);
    return children;
  }
  /**
   * Resolves a path portion and returns or creates the child Path.
   *
   * Returns `this` if pathPart is `''` or `'.'`, or `parent` if pathPart is
   * `'..'`.
   *
   * This should not be called directly.  If `pathPart` contains any path
   * separators, it will lead to unsafe undefined behavior.
   *
   * Use `Path.resolve()` instead.
   *
   * @internal
   */
  child(pathPart, opts) {
    if (pathPart === "" || pathPart === ".") {
      return this;
    }
    if (pathPart === "..") {
      return this.parent || this;
    }
    const children = this.children();
    const name3 = this.nocase ? normalizeNocase(pathPart) : normalize5(pathPart);
    for (const p5 of children) {
      if (__privateGet(p5, _matchName) === name3) {
        return p5;
      }
    }
    const s5 = this.parent ? this.sep : "";
    const fullpath = __privateGet(this, _fullpath) ? __privateGet(this, _fullpath) + s5 + pathPart : void 0;
    const pchild = this.newChild(pathPart, UNKNOWN, {
      ...opts,
      parent: this,
      fullpath
    });
    if (!this.canReaddir()) {
      __privateSet(pchild, _type, __privateGet(pchild, _type) | ENOENT);
    }
    children.push(pchild);
    return pchild;
  }
  /**
   * The relative path from the cwd. If it does not share an ancestor with
   * the cwd, then this ends up being equivalent to the fullpath()
   */
  relative() {
    if (__privateGet(this, _relative) !== void 0) {
      return __privateGet(this, _relative);
    }
    const name3 = this.name;
    const p5 = this.parent;
    if (!p5) {
      return __privateSet(this, _relative, this.name);
    }
    const pv = p5.relative();
    return pv + (!pv || !p5.parent ? "" : this.sep) + name3;
  }
  /**
   * The relative path from the cwd, using / as the path separator.
   * If it does not share an ancestor with
   * the cwd, then this ends up being equivalent to the fullpathPosix()
   * On posix systems, this is identical to relative().
   */
  relativePosix() {
    if (this.sep === "/")
      return this.relative();
    if (__privateGet(this, _relativePosix) !== void 0)
      return __privateGet(this, _relativePosix);
    const name3 = this.name;
    const p5 = this.parent;
    if (!p5) {
      return __privateSet(this, _relativePosix, this.fullpathPosix());
    }
    const pv = p5.relativePosix();
    return pv + (!pv || !p5.parent ? "" : "/") + name3;
  }
  /**
   * The fully resolved path string for this Path entry
   */
  fullpath() {
    if (__privateGet(this, _fullpath) !== void 0) {
      return __privateGet(this, _fullpath);
    }
    const name3 = this.name;
    const p5 = this.parent;
    if (!p5) {
      return __privateSet(this, _fullpath, this.name);
    }
    const pv = p5.fullpath();
    const fp = pv + (!p5.parent ? "" : this.sep) + name3;
    return __privateSet(this, _fullpath, fp);
  }
  /**
   * On platforms other than windows, this is identical to fullpath.
   *
   * On windows, this is overridden to return the forward-slash form of the
   * full UNC path.
   */
  fullpathPosix() {
    if (__privateGet(this, _fullpathPosix) !== void 0)
      return __privateGet(this, _fullpathPosix);
    if (this.sep === "/")
      return __privateSet(this, _fullpathPosix, this.fullpath());
    if (!this.parent) {
      const p6 = this.fullpath().replace(/\\/g, "/");
      if (/^[a-z]:\//i.test(p6)) {
        return __privateSet(this, _fullpathPosix, `//?/${p6}`);
      } else {
        return __privateSet(this, _fullpathPosix, p6);
      }
    }
    const p5 = this.parent;
    const pfpp = p5.fullpathPosix();
    const fpp = pfpp + (!pfpp || !p5.parent ? "" : "/") + this.name;
    return __privateSet(this, _fullpathPosix, fpp);
  }
  /**
   * Is the Path of an unknown type?
   *
   * Note that we might know *something* about it if there has been a previous
   * filesystem operation, for example that it does not exist, or is not a
   * link, or whether it has child entries.
   */
  isUnknown() {
    return (__privateGet(this, _type) & IFMT) === UNKNOWN;
  }
  isType(type2) {
    return this[`is${type2}`]();
  }
  getType() {
    return this.isUnknown() ? "Unknown" : this.isDirectory() ? "Directory" : this.isFile() ? "File" : this.isSymbolicLink() ? "SymbolicLink" : this.isFIFO() ? "FIFO" : this.isCharacterDevice() ? "CharacterDevice" : this.isBlockDevice() ? "BlockDevice" : (
      /* c8 ignore start */
      this.isSocket() ? "Socket" : "Unknown"
    );
  }
  /**
   * Is the Path a regular file?
   */
  isFile() {
    return (__privateGet(this, _type) & IFMT) === IFREG;
  }
  /**
   * Is the Path a directory?
   */
  isDirectory() {
    return (__privateGet(this, _type) & IFMT) === IFDIR;
  }
  /**
   * Is the path a character device?
   */
  isCharacterDevice() {
    return (__privateGet(this, _type) & IFMT) === IFCHR;
  }
  /**
   * Is the path a block device?
   */
  isBlockDevice() {
    return (__privateGet(this, _type) & IFMT) === IFBLK;
  }
  /**
   * Is the path a FIFO pipe?
   */
  isFIFO() {
    return (__privateGet(this, _type) & IFMT) === IFIFO;
  }
  /**
   * Is the path a socket?
   */
  isSocket() {
    return (__privateGet(this, _type) & IFMT) === IFSOCK;
  }
  /**
   * Is the path a symbolic link?
   */
  isSymbolicLink() {
    return (__privateGet(this, _type) & IFLNK) === IFLNK;
  }
  /**
   * Return the entry if it has been subject of a successful lstat, or
   * undefined otherwise.
   *
   * Does not read the filesystem, so an undefined result *could* simply
   * mean that we haven't called lstat on it.
   */
  lstatCached() {
    return __privateGet(this, _type) & LSTAT_CALLED ? this : void 0;
  }
  /**
   * Return the cached link target if the entry has been the subject of a
   * successful readlink, or undefined otherwise.
   *
   * Does not read the filesystem, so an undefined result *could* just mean we
   * don't have any cached data. Only use it if you are very sure that a
   * readlink() has been called at some point.
   */
  readlinkCached() {
    return __privateGet(this, _linkTarget);
  }
  /**
   * Returns the cached realpath target if the entry has been the subject
   * of a successful realpath, or undefined otherwise.
   *
   * Does not read the filesystem, so an undefined result *could* just mean we
   * don't have any cached data. Only use it if you are very sure that a
   * realpath() has been called at some point.
   */
  realpathCached() {
    return __privateGet(this, _realpath);
  }
  /**
   * Returns the cached child Path entries array if the entry has been the
   * subject of a successful readdir(), or [] otherwise.
   *
   * Does not read the filesystem, so an empty array *could* just mean we
   * don't have any cached data. Only use it if you are very sure that a
   * readdir() has been called recently enough to still be valid.
   */
  readdirCached() {
    const children = this.children();
    return children.slice(0, children.provisional);
  }
  /**
   * Return true if it's worth trying to readlink.  Ie, we don't (yet) have
   * any indication that readlink will definitely fail.
   *
   * Returns false if the path is known to not be a symlink, if a previous
   * readlink failed, or if the entry does not exist.
   */
  canReadlink() {
    if (__privateGet(this, _linkTarget))
      return true;
    if (!this.parent)
      return false;
    const ifmt = __privateGet(this, _type) & IFMT;
    return !(ifmt !== UNKNOWN && ifmt !== IFLNK || __privateGet(this, _type) & ENOREADLINK || __privateGet(this, _type) & ENOENT);
  }
  /**
   * Return true if readdir has previously been successfully called on this
   * path, indicating that cachedReaddir() is likely valid.
   */
  calledReaddir() {
    return !!(__privateGet(this, _type) & READDIR_CALLED);
  }
  /**
   * Returns true if the path is known to not exist. That is, a previous lstat
   * or readdir failed to verify its existence when that would have been
   * expected, or a parent entry was marked either enoent or enotdir.
   */
  isENOENT() {
    return !!(__privateGet(this, _type) & ENOENT);
  }
  /**
   * Return true if the path is a match for the given path name.  This handles
   * case sensitivity and unicode normalization.
   *
   * Note: even on case-sensitive systems, it is **not** safe to test the
   * equality of the `.name` property to determine whether a given pathname
   * matches, due to unicode normalization mismatches.
   *
   * Always use this method instead of testing the `path.name` property
   * directly.
   */
  isNamed(n) {
    return !this.nocase ? __privateGet(this, _matchName) === normalize5(n) : __privateGet(this, _matchName) === normalizeNocase(n);
  }
  /**
   * Return the Path object corresponding to the target of a symbolic link.
   *
   * If the Path is not a symbolic link, or if the readlink call fails for any
   * reason, `undefined` is returned.
   *
   * Result is cached, and thus may be outdated if the filesystem is mutated.
   */
  async readlink() {
    const target = __privateGet(this, _linkTarget);
    if (target) {
      return target;
    }
    if (!this.canReadlink()) {
      return void 0;
    }
    if (!this.parent) {
      return void 0;
    }
    try {
      const read2 = await __privateGet(this, _fs).promises.readlink(this.fullpath());
      const linkTarget = this.parent.resolve(read2);
      if (linkTarget) {
        return __privateSet(this, _linkTarget, linkTarget);
      }
    } catch (er) {
      __privateMethod(this, _PathBase_instances, readlinkFail_fn).call(this, er.code);
      return void 0;
    }
  }
  /**
   * Synchronous {@link PathBase.readlink}
   */
  readlinkSync() {
    const target = __privateGet(this, _linkTarget);
    if (target) {
      return target;
    }
    if (!this.canReadlink()) {
      return void 0;
    }
    if (!this.parent) {
      return void 0;
    }
    try {
      const read2 = __privateGet(this, _fs).readlinkSync(this.fullpath());
      const linkTarget = this.parent.resolve(read2);
      if (linkTarget) {
        return __privateSet(this, _linkTarget, linkTarget);
      }
    } catch (er) {
      __privateMethod(this, _PathBase_instances, readlinkFail_fn).call(this, er.code);
      return void 0;
    }
  }
  /**
   * Call lstat() on this Path, and update all known information that can be
   * determined.
   *
   * Note that unlike `fs.lstat()`, the returned value does not contain some
   * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that
   * information is required, you will need to call `fs.lstat` yourself.
   *
   * If the Path refers to a nonexistent file, or if the lstat call fails for
   * any reason, `undefined` is returned.  Otherwise the updated Path object is
   * returned.
   *
   * Results are cached, and thus may be out of date if the filesystem is
   * mutated.
   */
  async lstat() {
    if ((__privateGet(this, _type) & ENOENT) === 0) {
      try {
        __privateMethod(this, _PathBase_instances, applyStat_fn).call(this, await __privateGet(this, _fs).promises.lstat(this.fullpath()));
        return this;
      } catch (er) {
        __privateMethod(this, _PathBase_instances, lstatFail_fn).call(this, er.code);
      }
    }
  }
  /**
   * synchronous {@link PathBase.lstat}
   */
  lstatSync() {
    if ((__privateGet(this, _type) & ENOENT) === 0) {
      try {
        __privateMethod(this, _PathBase_instances, applyStat_fn).call(this, __privateGet(this, _fs).lstatSync(this.fullpath()));
        return this;
      } catch (er) {
        __privateMethod(this, _PathBase_instances, lstatFail_fn).call(this, er.code);
      }
    }
  }
  /**
   * Standard node-style callback interface to get list of directory entries.
   *
   * If the Path cannot or does not contain any children, then an empty array
   * is returned.
   *
   * Results are cached, and thus may be out of date if the filesystem is
   * mutated.
   *
   * @param cb The callback called with (er, entries).  Note that the `er`
   * param is somewhat extraneous, as all readdir() errors are handled and
   * simply result in an empty set of entries being returned.
   * @param allowZalgo Boolean indicating that immediately known results should
   * *not* be deferred with `queueMicrotask`. Defaults to `false`. Release
   * zalgo at your peril, the dark pony lord is devious and unforgiving.
   */
  readdirCB(cb, allowZalgo = false) {
    if (!this.canReaddir()) {
      if (allowZalgo)
        cb(null, []);
      else
        queueMicrotask(() => cb(null, []));
      return;
    }
    const children = this.children();
    if (this.calledReaddir()) {
      const c = children.slice(0, children.provisional);
      if (allowZalgo)
        cb(null, c);
      else
        queueMicrotask(() => cb(null, c));
      return;
    }
    __privateGet(this, _onReaddirCB).push(cb);
    if (__privateGet(this, _readdirCBInFlight)) {
      return;
    }
    __privateSet(this, _readdirCBInFlight, true);
    const fullpath = this.fullpath();
    __privateGet(this, _fs).readdir(fullpath, { withFileTypes: true }, (er, entries2) => {
      if (er) {
        __privateMethod(this, _PathBase_instances, readdirFail_fn).call(this, er.code);
        children.provisional = 0;
      } else {
        for (const e2 of entries2) {
          __privateMethod(this, _PathBase_instances, readdirAddChild_fn).call(this, e2, children);
        }
        __privateMethod(this, _PathBase_instances, readdirSuccess_fn).call(this, children);
      }
      __privateMethod(this, _PathBase_instances, callOnReaddirCB_fn).call(this, children.slice(0, children.provisional));
      return;
    });
  }
  /**
   * Return an array of known child entries.
   *
   * If the Path cannot or does not contain any children, then an empty array
   * is returned.
   *
   * Results are cached, and thus may be out of date if the filesystem is
   * mutated.
   */
  async readdir() {
    if (!this.canReaddir()) {
      return [];
    }
    const children = this.children();
    if (this.calledReaddir()) {
      return children.slice(0, children.provisional);
    }
    const fullpath = this.fullpath();
    if (__privateGet(this, _asyncReaddirInFlight)) {
      await __privateGet(this, _asyncReaddirInFlight);
    } else {
      let resolve9 = () => {
      };
      __privateSet(this, _asyncReaddirInFlight, new Promise((res) => resolve9 = res));
      try {
        for (const e2 of await __privateGet(this, _fs).promises.readdir(fullpath, {
          withFileTypes: true
        })) {
          __privateMethod(this, _PathBase_instances, readdirAddChild_fn).call(this, e2, children);
        }
        __privateMethod(this, _PathBase_instances, readdirSuccess_fn).call(this, children);
      } catch (er) {
        __privateMethod(this, _PathBase_instances, readdirFail_fn).call(this, er.code);
        children.provisional = 0;
      }
      __privateSet(this, _asyncReaddirInFlight, void 0);
      resolve9();
    }
    return children.slice(0, children.provisional);
  }
  /**
   * synchronous {@link PathBase.readdir}
   */
  readdirSync() {
    if (!this.canReaddir()) {
      return [];
    }
    const children = this.children();
    if (this.calledReaddir()) {
      return children.slice(0, children.provisional);
    }
    const fullpath = this.fullpath();
    try {
      for (const e2 of __privateGet(this, _fs).readdirSync(fullpath, {
        withFileTypes: true
      })) {
        __privateMethod(this, _PathBase_instances, readdirAddChild_fn).call(this, e2, children);
      }
      __privateMethod(this, _PathBase_instances, readdirSuccess_fn).call(this, children);
    } catch (er) {
      __privateMethod(this, _PathBase_instances, readdirFail_fn).call(this, er.code);
      children.provisional = 0;
    }
    return children.slice(0, children.provisional);
  }
  canReaddir() {
    if (__privateGet(this, _type) & ENOCHILD)
      return false;
    const ifmt = IFMT & __privateGet(this, _type);
    if (!(ifmt === UNKNOWN || ifmt === IFDIR || ifmt === IFLNK)) {
      return false;
    }
    return true;
  }
  shouldWalk(dirs, walkFilter) {
    return (__privateGet(this, _type) & IFDIR) === IFDIR && !(__privateGet(this, _type) & ENOCHILD) && !dirs.has(this) && (!walkFilter || walkFilter(this));
  }
  /**
   * Return the Path object corresponding to path as resolved
   * by realpath(3).
   *
   * If the realpath call fails for any reason, `undefined` is returned.
   *
   * Result is cached, and thus may be outdated if the filesystem is mutated.
   * On success, returns a Path object.
   */
  async realpath() {
    if (__privateGet(this, _realpath))
      return __privateGet(this, _realpath);
    if ((ENOREALPATH | ENOREADLINK | ENOENT) & __privateGet(this, _type))
      return void 0;
    try {
      const rp = await __privateGet(this, _fs).promises.realpath(this.fullpath());
      return __privateSet(this, _realpath, this.resolve(rp));
    } catch (_2) {
      __privateMethod(this, _PathBase_instances, markENOREALPATH_fn).call(this);
    }
  }
  /**
   * Synchronous {@link realpath}
   */
  realpathSync() {
    if (__privateGet(this, _realpath))
      return __privateGet(this, _realpath);
    if ((ENOREALPATH | ENOREADLINK | ENOENT) & __privateGet(this, _type))
      return void 0;
    try {
      const rp = __privateGet(this, _fs).realpathSync(this.fullpath());
      return __privateSet(this, _realpath, this.resolve(rp));
    } catch (_2) {
      __privateMethod(this, _PathBase_instances, markENOREALPATH_fn).call(this);
    }
  }
  /**
   * Internal method to mark this Path object as the scurry cwd,
   * called by {@link PathScurry#chdir}
   *
   * @internal
   */
  [setAsCwd](oldCwd) {
    if (oldCwd === this)
      return;
    const changed = /* @__PURE__ */ new Set([]);
    let rp = [];
    let p5 = this;
    while (p5 && p5.parent) {
      changed.add(p5);
      __privateSet(p5, _relative, rp.join(this.sep));
      __privateSet(p5, _relativePosix, rp.join("/"));
      p5 = p5.parent;
      rp.push("..");
    }
    p5 = oldCwd;
    while (p5 && p5.parent && !changed.has(p5)) {
      __privateSet(p5, _relative, void 0);
      __privateSet(p5, _relativePosix, void 0);
      p5 = p5.parent;
    }
  }
};
_fs = new WeakMap();
_dev = new WeakMap();
_mode = new WeakMap();
_nlink = new WeakMap();
_uid = new WeakMap();
_gid = new WeakMap();
_rdev = new WeakMap();
_blksize = new WeakMap();
_ino = new WeakMap();
_size2 = new WeakMap();
_blocks = new WeakMap();
_atimeMs = new WeakMap();
_mtimeMs = new WeakMap();
_ctimeMs = new WeakMap();
_birthtimeMs = new WeakMap();
_atime = new WeakMap();
_mtime = new WeakMap();
_ctime = new WeakMap();
_birthtime = new WeakMap();
_matchName = new WeakMap();
_depth = new WeakMap();
_fullpath = new WeakMap();
_fullpathPosix = new WeakMap();
_relative = new WeakMap();
_relativePosix = new WeakMap();
_type = new WeakMap();
_children = new WeakMap();
_linkTarget = new WeakMap();
_realpath = new WeakMap();
_PathBase_instances = new WeakSet();
resolveParts_fn = function(dirParts) {
  let p5 = this;
  for (const part of dirParts) {
    p5 = p5.child(part);
  }
  return p5;
};
readdirSuccess_fn = function(children) {
  var _a6;
  __privateSet(this, _type, __privateGet(this, _type) | READDIR_CALLED);
  for (let p5 = children.provisional; p5 < children.length; p5++) {
    __privateMethod(_a6 = children[p5], _PathBase_instances, markENOENT_fn).call(_a6);
  }
};
markENOENT_fn = function() {
  if (__privateGet(this, _type) & ENOENT)
    return;
  __privateSet(this, _type, (__privateGet(this, _type) | ENOENT) & IFMT_UNKNOWN);
  __privateMethod(this, _PathBase_instances, markChildrenENOENT_fn).call(this);
};
markChildrenENOENT_fn = function() {
  var _a6;
  const children = this.children();
  children.provisional = 0;
  for (const p5 of children) {
    __privateMethod(_a6 = p5, _PathBase_instances, markENOENT_fn).call(_a6);
  }
};
markENOREALPATH_fn = function() {
  __privateSet(this, _type, __privateGet(this, _type) | ENOREALPATH);
  __privateMethod(this, _PathBase_instances, markENOTDIR_fn).call(this);
};
// save the information when we know the entry is not a dir
markENOTDIR_fn = function() {
  if (__privateGet(this, _type) & ENOTDIR)
    return;
  let t2 = __privateGet(this, _type);
  if ((t2 & IFMT) === IFDIR)
    t2 &= IFMT_UNKNOWN;
  __privateSet(this, _type, t2 | ENOTDIR);
  __privateMethod(this, _PathBase_instances, markChildrenENOENT_fn).call(this);
};
readdirFail_fn = function(code7 = "") {
  if (code7 === "ENOTDIR" || code7 === "EPERM") {
    __privateMethod(this, _PathBase_instances, markENOTDIR_fn).call(this);
  } else if (code7 === "ENOENT") {
    __privateMethod(this, _PathBase_instances, markENOENT_fn).call(this);
  } else {
    this.children().provisional = 0;
  }
};
lstatFail_fn = function(code7 = "") {
  var _a6;
  if (code7 === "ENOTDIR") {
    const p5 = this.parent;
    __privateMethod(_a6 = p5, _PathBase_instances, markENOTDIR_fn).call(_a6);
  } else if (code7 === "ENOENT") {
    __privateMethod(this, _PathBase_instances, markENOENT_fn).call(this);
  }
};
readlinkFail_fn = function(code7 = "") {
  var _a6;
  let ter = __privateGet(this, _type);
  ter |= ENOREADLINK;
  if (code7 === "ENOENT")
    ter |= ENOENT;
  if (code7 === "EINVAL" || code7 === "UNKNOWN") {
    ter &= IFMT_UNKNOWN;
  }
  __privateSet(this, _type, ter);
  if (code7 === "ENOTDIR" && this.parent) {
    __privateMethod(_a6 = this.parent, _PathBase_instances, markENOTDIR_fn).call(_a6);
  }
};
readdirAddChild_fn = function(e2, c) {
  return __privateMethod(this, _PathBase_instances, readdirMaybePromoteChild_fn).call(this, e2, c) || __privateMethod(this, _PathBase_instances, readdirAddNewChild_fn).call(this, e2, c);
};
readdirAddNewChild_fn = function(e2, c) {
  const type2 = entToType(e2);
  const child = this.newChild(e2.name, type2, { parent: this });
  const ifmt = __privateGet(child, _type) & IFMT;
  if (ifmt !== IFDIR && ifmt !== IFLNK && ifmt !== UNKNOWN) {
    __privateSet(child, _type, __privateGet(child, _type) | ENOTDIR);
  }
  c.unshift(child);
  c.provisional++;
  return child;
};
readdirMaybePromoteChild_fn = function(e2, c) {
  for (let p5 = c.provisional; p5 < c.length; p5++) {
    const pchild = c[p5];
    const name3 = this.nocase ? normalizeNocase(e2.name) : normalize5(e2.name);
    if (name3 !== __privateGet(pchild, _matchName)) {
      continue;
    }
    return __privateMethod(this, _PathBase_instances, readdirPromoteChild_fn).call(this, e2, pchild, p5, c);
  }
};
readdirPromoteChild_fn = function(e2, p5, index4, c) {
  const v = p5.name;
  __privateSet(p5, _type, __privateGet(p5, _type) & IFMT_UNKNOWN | entToType(e2));
  if (v !== e2.name)
    p5.name = e2.name;
  if (index4 !== c.provisional) {
    if (index4 === c.length - 1)
      c.pop();
    else
      c.splice(index4, 1);
    c.unshift(p5);
  }
  c.provisional++;
  return p5;
};
applyStat_fn = function(st) {
  const { atime, atimeMs, birthtime, birthtimeMs, blksize, blocks: blocks2, ctime, ctimeMs, dev, gid, ino, mode, mtime, mtimeMs, nlink, rdev, size, uid } = st;
  __privateSet(this, _atime, atime);
  __privateSet(this, _atimeMs, atimeMs);
  __privateSet(this, _birthtime, birthtime);
  __privateSet(this, _birthtimeMs, birthtimeMs);
  __privateSet(this, _blksize, blksize);
  __privateSet(this, _blocks, blocks2);
  __privateSet(this, _ctime, ctime);
  __privateSet(this, _ctimeMs, ctimeMs);
  __privateSet(this, _dev, dev);
  __privateSet(this, _gid, gid);
  __privateSet(this, _ino, ino);
  __privateSet(this, _mode, mode);
  __privateSet(this, _mtime, mtime);
  __privateSet(this, _mtimeMs, mtimeMs);
  __privateSet(this, _nlink, nlink);
  __privateSet(this, _rdev, rdev);
  __privateSet(this, _size2, size);
  __privateSet(this, _uid, uid);
  const ifmt = entToType(st);
  __privateSet(this, _type, __privateGet(this, _type) & IFMT_UNKNOWN | ifmt | LSTAT_CALLED);
  if (ifmt !== UNKNOWN && ifmt !== IFDIR && ifmt !== IFLNK) {
    __privateSet(this, _type, __privateGet(this, _type) | ENOTDIR);
  }
};
_onReaddirCB = new WeakMap();
_readdirCBInFlight = new WeakMap();
callOnReaddirCB_fn = function(children) {
  __privateSet(this, _readdirCBInFlight, false);
  const cbs = __privateGet(this, _onReaddirCB).slice();
  __privateGet(this, _onReaddirCB).length = 0;
  cbs.forEach((cb) => cb(null, children));
};
_asyncReaddirInFlight = new WeakMap();
var PathWin32 = class _PathWin32 extends PathBase {
  /**
   * Separator for generating path strings.
   */
  sep = "\\";
  /**
   * Separator for parsing path strings.
   */
  splitSep = eitherSep;
  /**
   * Do not create new Path objects directly.  They should always be accessed
   * via the PathScurry class or other methods on the Path class.
   *
   * @internal
   */
  constructor(name3, type2 = UNKNOWN, root6, roots, nocase, children, opts) {
    super(name3, type2, root6, roots, nocase, children, opts);
  }
  /**
   * @internal
   */
  newChild(name3, type2 = UNKNOWN, opts = {}) {
    return new _PathWin32(name3, type2, this.root, this.roots, this.nocase, this.childrenCache(), opts);
  }
  /**
   * @internal
   */
  getRootString(path45) {
    return import_path2.win32.parse(path45).root;
  }
  /**
   * @internal
   */
  getRoot(rootPath) {
    rootPath = uncToDrive(rootPath.toUpperCase());
    if (rootPath === this.root.name) {
      return this.root;
    }
    for (const [compare3, root6] of Object.entries(this.roots)) {
      if (this.sameRoot(rootPath, compare3)) {
        return this.roots[rootPath] = root6;
      }
    }
    return this.roots[rootPath] = new PathScurryWin32(rootPath, this).root;
  }
  /**
   * @internal
   */
  sameRoot(rootPath, compare3 = this.root.name) {
    rootPath = rootPath.toUpperCase().replace(/\//g, "\\").replace(uncDriveRegexp, "$1\\");
    return rootPath === compare3;
  }
};
var PathPosix = class _PathPosix extends PathBase {
  /**
   * separator for parsing path strings
   */
  splitSep = "/";
  /**
   * separator for generating path strings
   */
  sep = "/";
  /**
   * Do not create new Path objects directly.  They should always be accessed
   * via the PathScurry class or other methods on the Path class.
   *
   * @internal
   */
  constructor(name3, type2 = UNKNOWN, root6, roots, nocase, children, opts) {
    super(name3, type2, root6, roots, nocase, children, opts);
  }
  /**
   * @internal
   */
  getRootString(path45) {
    return path45.startsWith("/") ? "/" : "";
  }
  /**
   * @internal
   */
  getRoot(_rootPath) {
    return this.root;
  }
  /**
   * @internal
   */
  newChild(name3, type2 = UNKNOWN, opts = {}) {
    return new _PathPosix(name3, type2, this.root, this.roots, this.nocase, this.childrenCache(), opts);
  }
};
var _resolveCache, _resolvePosixCache, _children2, _fs2;
var PathScurryBase = class {
  /**
   * This class should not be instantiated directly.
   *
   * Use PathScurryWin32, PathScurryDarwin, PathScurryPosix, or PathScurry
   *
   * @internal
   */
  constructor(cwd2 = process.cwd(), pathImpl, sep5, { nocase, childrenCacheSize = 16 * 1024, fs: fs50 = defaultFS } = {}) {
    /**
     * The root Path entry for the current working directory of this Scurry
     */
    __publicField(this, "root");
    /**
     * The string path for the root of this Scurry's current working directory
     */
    __publicField(this, "rootPath");
    /**
     * A collection of all roots encountered, referenced by rootPath
     */
    __publicField(this, "roots");
    /**
     * The Path entry corresponding to this PathScurry's current working directory.
     */
    __publicField(this, "cwd");
    __privateAdd(this, _resolveCache);
    __privateAdd(this, _resolvePosixCache);
    __privateAdd(this, _children2);
    /**
     * Perform path comparisons case-insensitively.
     *
     * Defaults true on Darwin and Windows systems, false elsewhere.
     */
    __publicField(this, "nocase");
    __privateAdd(this, _fs2);
    __privateSet(this, _fs2, fsFromOption(fs50));
    if (cwd2 instanceof URL || cwd2.startsWith("file://")) {
      cwd2 = (0, import_url2.fileURLToPath)(cwd2);
    }
    const cwdPath = pathImpl.resolve(cwd2);
    this.roots = /* @__PURE__ */ Object.create(null);
    this.rootPath = this.parseRootPath(cwdPath);
    __privateSet(this, _resolveCache, new ResolveCache());
    __privateSet(this, _resolvePosixCache, new ResolveCache());
    __privateSet(this, _children2, new ChildrenCache(childrenCacheSize));
    const split2 = cwdPath.substring(this.rootPath.length).split(sep5);
    if (split2.length === 1 && !split2[0]) {
      split2.pop();
    }
    if (nocase === void 0) {
      throw new TypeError("must provide nocase setting to PathScurryBase ctor");
    }
    this.nocase = nocase;
    this.root = this.newRoot(__privateGet(this, _fs2));
    this.roots[this.rootPath] = this.root;
    let prev = this.root;
    let len = split2.length - 1;
    const joinSep = pathImpl.sep;
    let abs = this.rootPath;
    let sawFirst = false;
    for (const part of split2) {
      const l = len--;
      prev = prev.child(part, {
        relative: new Array(l).fill("..").join(joinSep),
        relativePosix: new Array(l).fill("..").join("/"),
        fullpath: abs += (sawFirst ? "" : joinSep) + part
      });
      sawFirst = true;
    }
    this.cwd = prev;
  }
  /**
   * Get the depth of a provided path, string, or the cwd
   */
  depth(path45 = this.cwd) {
    if (typeof path45 === "string") {
      path45 = this.cwd.resolve(path45);
    }
    return path45.depth();
  }
  /**
   * Return the cache of child entries.  Exposed so subclasses can create
   * child Path objects in a platform-specific way.
   *
   * @internal
   */
  childrenCache() {
    return __privateGet(this, _children2);
  }
  /**
   * Resolve one or more path strings to a resolved string
   *
   * Same interface as require('path').resolve.
   *
   * Much faster than path.resolve() when called multiple times for the same
   * path, because the resolved Path objects are cached.  Much slower
   * otherwise.
   */
  resolve(...paths) {
    let r2 = "";
    for (let i2 = paths.length - 1; i2 >= 0; i2--) {
      const p5 = paths[i2];
      if (!p5 || p5 === ".")
        continue;
      r2 = r2 ? `${p5}/${r2}` : p5;
      if (this.isAbsolute(p5)) {
        break;
      }
    }
    const cached = __privateGet(this, _resolveCache).get(r2);
    if (cached !== void 0) {
      return cached;
    }
    const result = this.cwd.resolve(r2).fullpath();
    __privateGet(this, _resolveCache).set(r2, result);
    return result;
  }
  /**
   * Resolve one or more path strings to a resolved string, returning
   * the posix path.  Identical to .resolve() on posix systems, but on
   * windows will return a forward-slash separated UNC path.
   *
   * Same interface as require('path').resolve.
   *
   * Much faster than path.resolve() when called multiple times for the same
   * path, because the resolved Path objects are cached.  Much slower
   * otherwise.
   */
  resolvePosix(...paths) {
    let r2 = "";
    for (let i2 = paths.length - 1; i2 >= 0; i2--) {
      const p5 = paths[i2];
      if (!p5 || p5 === ".")
        continue;
      r2 = r2 ? `${p5}/${r2}` : p5;
      if (this.isAbsolute(p5)) {
        break;
      }
    }
    const cached = __privateGet(this, _resolvePosixCache).get(r2);
    if (cached !== void 0) {
      return cached;
    }
    const result = this.cwd.resolve(r2).fullpathPosix();
    __privateGet(this, _resolvePosixCache).set(r2, result);
    return result;
  }
  /**
   * find the relative path from the cwd to the supplied path string or entry
   */
  relative(entry = this.cwd) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    }
    return entry.relative();
  }
  /**
   * find the relative path from the cwd to the supplied path string or
   * entry, using / as the path delimiter, even on Windows.
   */
  relativePosix(entry = this.cwd) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    }
    return entry.relativePosix();
  }
  /**
   * Return the basename for the provided string or Path object
   */
  basename(entry = this.cwd) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    }
    return entry.name;
  }
  /**
   * Return the dirname for the provided string or Path object
   */
  dirname(entry = this.cwd) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    }
    return (entry.parent || entry).fullpath();
  }
  async readdir(entry = this.cwd, opts = {
    withFileTypes: true
  }) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    } else if (!(entry instanceof PathBase)) {
      opts = entry;
      entry = this.cwd;
    }
    const { withFileTypes } = opts;
    if (!entry.canReaddir()) {
      return [];
    } else {
      const p5 = await entry.readdir();
      return withFileTypes ? p5 : p5.map((e2) => e2.name);
    }
  }
  readdirSync(entry = this.cwd, opts = {
    withFileTypes: true
  }) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    } else if (!(entry instanceof PathBase)) {
      opts = entry;
      entry = this.cwd;
    }
    const { withFileTypes = true } = opts;
    if (!entry.canReaddir()) {
      return [];
    } else if (withFileTypes) {
      return entry.readdirSync();
    } else {
      return entry.readdirSync().map((e2) => e2.name);
    }
  }
  /**
   * Call lstat() on the string or Path object, and update all known
   * information that can be determined.
   *
   * Note that unlike `fs.lstat()`, the returned value does not contain some
   * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that
   * information is required, you will need to call `fs.lstat` yourself.
   *
   * If the Path refers to a nonexistent file, or if the lstat call fails for
   * any reason, `undefined` is returned.  Otherwise the updated Path object is
   * returned.
   *
   * Results are cached, and thus may be out of date if the filesystem is
   * mutated.
   */
  async lstat(entry = this.cwd) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    }
    return entry.lstat();
  }
  /**
   * synchronous {@link PathScurryBase.lstat}
   */
  lstatSync(entry = this.cwd) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    }
    return entry.lstatSync();
  }
  async readlink(entry = this.cwd, { withFileTypes } = {
    withFileTypes: false
  }) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    } else if (!(entry instanceof PathBase)) {
      withFileTypes = entry.withFileTypes;
      entry = this.cwd;
    }
    const e2 = await entry.readlink();
    return withFileTypes ? e2 : e2 == null ? void 0 : e2.fullpath();
  }
  readlinkSync(entry = this.cwd, { withFileTypes } = {
    withFileTypes: false
  }) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    } else if (!(entry instanceof PathBase)) {
      withFileTypes = entry.withFileTypes;
      entry = this.cwd;
    }
    const e2 = entry.readlinkSync();
    return withFileTypes ? e2 : e2 == null ? void 0 : e2.fullpath();
  }
  async realpath(entry = this.cwd, { withFileTypes } = {
    withFileTypes: false
  }) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    } else if (!(entry instanceof PathBase)) {
      withFileTypes = entry.withFileTypes;
      entry = this.cwd;
    }
    const e2 = await entry.realpath();
    return withFileTypes ? e2 : e2 == null ? void 0 : e2.fullpath();
  }
  realpathSync(entry = this.cwd, { withFileTypes } = {
    withFileTypes: false
  }) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    } else if (!(entry instanceof PathBase)) {
      withFileTypes = entry.withFileTypes;
      entry = this.cwd;
    }
    const e2 = entry.realpathSync();
    return withFileTypes ? e2 : e2 == null ? void 0 : e2.fullpath();
  }
  async walk(entry = this.cwd, opts = {}) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    } else if (!(entry instanceof PathBase)) {
      opts = entry;
      entry = this.cwd;
    }
    const { withFileTypes = true, follow = false, filter: filter6, walkFilter } = opts;
    const results = [];
    if (!filter6 || filter6(entry)) {
      results.push(withFileTypes ? entry : entry.fullpath());
    }
    const dirs = /* @__PURE__ */ new Set();
    const walk2 = (dir, cb) => {
      dirs.add(dir);
      dir.readdirCB((er, entries2) => {
        if (er) {
          return cb(er);
        }
        let len = entries2.length;
        if (!len)
          return cb();
        const next = () => {
          if (--len === 0) {
            cb();
          }
        };
        for (const e2 of entries2) {
          if (!filter6 || filter6(e2)) {
            results.push(withFileTypes ? e2 : e2.fullpath());
          }
          if (follow && e2.isSymbolicLink()) {
            e2.realpath().then((r2) => (r2 == null ? void 0 : r2.isUnknown()) ? r2.lstat() : r2).then((r2) => (r2 == null ? void 0 : r2.shouldWalk(dirs, walkFilter)) ? walk2(r2, next) : next());
          } else {
            if (e2.shouldWalk(dirs, walkFilter)) {
              walk2(e2, next);
            } else {
              next();
            }
          }
        }
      }, true);
    };
    const start = entry;
    return new Promise((res, rej) => {
      walk2(start, (er) => {
        if (er)
          return rej(er);
        res(results);
      });
    });
  }
  walkSync(entry = this.cwd, opts = {}) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    } else if (!(entry instanceof PathBase)) {
      opts = entry;
      entry = this.cwd;
    }
    const { withFileTypes = true, follow = false, filter: filter6, walkFilter } = opts;
    const results = [];
    if (!filter6 || filter6(entry)) {
      results.push(withFileTypes ? entry : entry.fullpath());
    }
    const dirs = /* @__PURE__ */ new Set([entry]);
    for (const dir of dirs) {
      const entries2 = dir.readdirSync();
      for (const e2 of entries2) {
        if (!filter6 || filter6(e2)) {
          results.push(withFileTypes ? e2 : e2.fullpath());
        }
        let r2 = e2;
        if (e2.isSymbolicLink()) {
          if (!(follow && (r2 = e2.realpathSync())))
            continue;
          if (r2.isUnknown())
            r2.lstatSync();
        }
        if (r2.shouldWalk(dirs, walkFilter)) {
          dirs.add(r2);
        }
      }
    }
    return results;
  }
  /**
   * Support for `for await`
   *
   * Alias for {@link PathScurryBase.iterate}
   *
   * Note: As of Node 19, this is very slow, compared to other methods of
   * walking.  Consider using {@link PathScurryBase.stream} if memory overhead
   * and backpressure are concerns, or {@link PathScurryBase.walk} if not.
   */
  [Symbol.asyncIterator]() {
    return this.iterate();
  }
  iterate(entry = this.cwd, options = {}) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    } else if (!(entry instanceof PathBase)) {
      options = entry;
      entry = this.cwd;
    }
    return this.stream(entry, options)[Symbol.asyncIterator]();
  }
  /**
   * Iterating over a PathScurry performs a synchronous walk.
   *
   * Alias for {@link PathScurryBase.iterateSync}
   */
  [Symbol.iterator]() {
    return this.iterateSync();
  }
  *iterateSync(entry = this.cwd, opts = {}) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    } else if (!(entry instanceof PathBase)) {
      opts = entry;
      entry = this.cwd;
    }
    const { withFileTypes = true, follow = false, filter: filter6, walkFilter } = opts;
    if (!filter6 || filter6(entry)) {
      yield withFileTypes ? entry : entry.fullpath();
    }
    const dirs = /* @__PURE__ */ new Set([entry]);
    for (const dir of dirs) {
      const entries2 = dir.readdirSync();
      for (const e2 of entries2) {
        if (!filter6 || filter6(e2)) {
          yield withFileTypes ? e2 : e2.fullpath();
        }
        let r2 = e2;
        if (e2.isSymbolicLink()) {
          if (!(follow && (r2 = e2.realpathSync())))
            continue;
          if (r2.isUnknown())
            r2.lstatSync();
        }
        if (r2.shouldWalk(dirs, walkFilter)) {
          dirs.add(r2);
        }
      }
    }
  }
  stream(entry = this.cwd, opts = {}) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    } else if (!(entry instanceof PathBase)) {
      opts = entry;
      entry = this.cwd;
    }
    const { withFileTypes = true, follow = false, filter: filter6, walkFilter } = opts;
    const results = new Minipass({ objectMode: true });
    if (!filter6 || filter6(entry)) {
      results.write(withFileTypes ? entry : entry.fullpath());
    }
    const dirs = /* @__PURE__ */ new Set();
    const queue = [entry];
    let processing = 0;
    const process11 = () => {
      let paused = false;
      while (!paused) {
        const dir = queue.shift();
        if (!dir) {
          if (processing === 0)
            results.end();
          return;
        }
        processing++;
        dirs.add(dir);
        const onReaddir = (er, entries2, didRealpaths = false) => {
          if (er)
            return results.emit("error", er);
          if (follow && !didRealpaths) {
            const promises = [];
            for (const e2 of entries2) {
              if (e2.isSymbolicLink()) {
                promises.push(e2.realpath().then((r2) => (r2 == null ? void 0 : r2.isUnknown()) ? r2.lstat() : r2));
              }
            }
            if (promises.length) {
              Promise.all(promises).then(() => onReaddir(null, entries2, true));
              return;
            }
          }
          for (const e2 of entries2) {
            if (e2 && (!filter6 || filter6(e2))) {
              if (!results.write(withFileTypes ? e2 : e2.fullpath())) {
                paused = true;
              }
            }
          }
          processing--;
          for (const e2 of entries2) {
            const r2 = e2.realpathCached() || e2;
            if (r2.shouldWalk(dirs, walkFilter)) {
              queue.push(r2);
            }
          }
          if (paused && !results.flowing) {
            results.once("drain", process11);
          } else if (!sync2) {
            process11();
          }
        };
        let sync2 = true;
        dir.readdirCB(onReaddir, true);
        sync2 = false;
      }
    };
    process11();
    return results;
  }
  streamSync(entry = this.cwd, opts = {}) {
    if (typeof entry === "string") {
      entry = this.cwd.resolve(entry);
    } else if (!(entry instanceof PathBase)) {
      opts = entry;
      entry = this.cwd;
    }
    const { withFileTypes = true, follow = false, filter: filter6, walkFilter } = opts;
    const results = new Minipass({ objectMode: true });
    const dirs = /* @__PURE__ */ new Set();
    if (!filter6 || filter6(entry)) {
      results.write(withFileTypes ? entry : entry.fullpath());
    }
    const queue = [entry];
    let processing = 0;
    const process11 = () => {
      let paused = false;
      while (!paused) {
        const dir = queue.shift();
        if (!dir) {
          if (processing === 0)
            results.end();
          return;
        }
        processing++;
        dirs.add(dir);
        const entries2 = dir.readdirSync();
        for (const e2 of entries2) {
          if (!filter6 || filter6(e2)) {
            if (!results.write(withFileTypes ? e2 : e2.fullpath())) {
              paused = true;
            }
          }
        }
        processing--;
        for (const e2 of entries2) {
          let r2 = e2;
          if (e2.isSymbolicLink()) {
            if (!(follow && (r2 = e2.realpathSync())))
              continue;
            if (r2.isUnknown())
              r2.lstatSync();
          }
          if (r2.shouldWalk(dirs, walkFilter)) {
            queue.push(r2);
          }
        }
      }
      if (paused && !results.flowing)
        results.once("drain", process11);
    };
    process11();
    return results;
  }
  chdir(path45 = this.cwd) {
    const oldCwd = this.cwd;
    this.cwd = typeof path45 === "string" ? this.cwd.resolve(path45) : path45;
    this.cwd[setAsCwd](oldCwd);
  }
};
_resolveCache = new WeakMap();
_resolvePosixCache = new WeakMap();
_children2 = new WeakMap();
_fs2 = new WeakMap();
var PathScurryWin32 = class extends PathScurryBase {
  /**
   * separator for generating path strings
   */
  sep = "\\";
  constructor(cwd2 = process.cwd(), opts = {}) {
    const { nocase = true } = opts;
    super(cwd2, import_path2.win32, "\\", { ...opts, nocase });
    this.nocase = nocase;
    for (let p5 = this.cwd; p5; p5 = p5.parent) {
      p5.nocase = this.nocase;
    }
  }
  /**
   * @internal
   */
  parseRootPath(dir) {
    return import_path2.win32.parse(dir).root.toUpperCase();
  }
  /**
   * @internal
   */
  newRoot(fs50) {
    return new PathWin32(this.rootPath, IFDIR, void 0, this.roots, this.nocase, this.childrenCache(), { fs: fs50 });
  }
  /**
   * Return true if the provided path string is an absolute path
   */
  isAbsolute(p5) {
    return p5.startsWith("/") || p5.startsWith("\\") || /^[a-z]:(\/|\\)/i.test(p5);
  }
};
var PathScurryPosix = class extends PathScurryBase {
  /**
   * separator for generating path strings
   */
  sep = "/";
  constructor(cwd2 = process.cwd(), opts = {}) {
    const { nocase = false } = opts;
    super(cwd2, import_path2.posix, "/", { ...opts, nocase });
    this.nocase = nocase;
  }
  /**
   * @internal
   */
  parseRootPath(_dir) {
    return "/";
  }
  /**
   * @internal
   */
  newRoot(fs50) {
    return new PathPosix(this.rootPath, IFDIR, void 0, this.roots, this.nocase, this.childrenCache(), { fs: fs50 });
  }
  /**
   * Return true if the provided path string is an absolute path
   */
  isAbsolute(p5) {
    return p5.startsWith("/");
  }
};
var PathScurryDarwin = class extends PathScurryPosix {
  constructor(cwd2 = process.cwd(), opts = {}) {
    const { nocase = true } = opts;
    super(cwd2, { ...opts, nocase });
  }
};
var Path = process.platform === "win32" ? PathWin32 : PathPosix;
var PathScurry = process.platform === "win32" ? PathScurryWin32 : process.platform === "darwin" ? PathScurryDarwin : PathScurryPosix;

// ../../node_modules/glob/dist/mjs/glob.js
var import_url3 = require("url");

// ../../node_modules/glob/dist/mjs/pattern.js
var isPatternList = (pl) => pl.length >= 1;
var isGlobList = (gl) => gl.length >= 1;
var _patternList, _globList, _index3, _platform, _rest, _globString, _isDrive, _isUNC, _isAbsolute, _followGlobstar;
var _Pattern = class _Pattern {
  constructor(patternList, globList, index4, platform) {
    __privateAdd(this, _patternList);
    __privateAdd(this, _globList);
    __privateAdd(this, _index3);
    __publicField(this, "length");
    __privateAdd(this, _platform);
    __privateAdd(this, _rest);
    __privateAdd(this, _globString);
    __privateAdd(this, _isDrive);
    __privateAdd(this, _isUNC);
    __privateAdd(this, _isAbsolute);
    __privateAdd(this, _followGlobstar, true);
    if (!isPatternList(patternList)) {
      throw new TypeError("empty pattern list");
    }
    if (!isGlobList(globList)) {
      throw new TypeError("empty glob list");
    }
    if (globList.length !== patternList.length) {
      throw new TypeError("mismatched pattern list and glob list lengths");
    }
    this.length = patternList.length;
    if (index4 < 0 || index4 >= this.length) {
      throw new TypeError("index out of range");
    }
    __privateSet(this, _patternList, patternList);
    __privateSet(this, _globList, globList);
    __privateSet(this, _index3, index4);
    __privateSet(this, _platform, platform);
    if (__privateGet(this, _index3) === 0) {
      if (this.isUNC()) {
        const [p0, p1, p22, p32, ...prest] = __privateGet(this, _patternList);
        const [g0, g1, g2, g3, ...grest] = __privateGet(this, _globList);
        if (prest[0] === "") {
          prest.shift();
          grest.shift();
        }
        const p5 = [p0, p1, p22, p32, ""].join("/");
        const g = [g0, g1, g2, g3, ""].join("/");
        __privateSet(this, _patternList, [p5, ...prest]);
        __privateSet(this, _globList, [g, ...grest]);
        this.length = __privateGet(this, _patternList).length;
      } else if (this.isDrive() || this.isAbsolute()) {
        const [p1, ...prest] = __privateGet(this, _patternList);
        const [g1, ...grest] = __privateGet(this, _globList);
        if (prest[0] === "") {
          prest.shift();
          grest.shift();
        }
        const p5 = p1 + "/";
        const g = g1 + "/";
        __privateSet(this, _patternList, [p5, ...prest]);
        __privateSet(this, _globList, [g, ...grest]);
        this.length = __privateGet(this, _patternList).length;
      }
    }
  }
  /**
   * The first entry in the parsed list of patterns
   */
  pattern() {
    return __privateGet(this, _patternList)[__privateGet(this, _index3)];
  }
  /**
   * true of if pattern() returns a string
   */
  isString() {
    return typeof __privateGet(this, _patternList)[__privateGet(this, _index3)] === "string";
  }
  /**
   * true of if pattern() returns GLOBSTAR
   */
  isGlobstar() {
    return __privateGet(this, _patternList)[__privateGet(this, _index3)] === GLOBSTAR;
  }
  /**
   * true if pattern() returns a regexp
   */
  isRegExp() {
    return __privateGet(this, _patternList)[__privateGet(this, _index3)] instanceof RegExp;
  }
  /**
   * The /-joined set of glob parts that make up this pattern
   */
  globString() {
    return __privateSet(this, _globString, __privateGet(this, _globString) || (__privateGet(this, _index3) === 0 ? this.isAbsolute() ? __privateGet(this, _globList)[0] + __privateGet(this, _globList).slice(1).join("/") : __privateGet(this, _globList).join("/") : __privateGet(this, _globList).slice(__privateGet(this, _index3)).join("/")));
  }
  /**
   * true if there are more pattern parts after this one
   */
  hasMore() {
    return this.length > __privateGet(this, _index3) + 1;
  }
  /**
   * The rest of the pattern after this part, or null if this is the end
   */
  rest() {
    if (__privateGet(this, _rest) !== void 0)
      return __privateGet(this, _rest);
    if (!this.hasMore())
      return __privateSet(this, _rest, null);
    __privateSet(this, _rest, new _Pattern(__privateGet(this, _patternList), __privateGet(this, _globList), __privateGet(this, _index3) + 1, __privateGet(this, _platform)));
    __privateSet(__privateGet(this, _rest), _isAbsolute, __privateGet(this, _isAbsolute));
    __privateSet(__privateGet(this, _rest), _isUNC, __privateGet(this, _isUNC));
    __privateSet(__privateGet(this, _rest), _isDrive, __privateGet(this, _isDrive));
    return __privateGet(this, _rest);
  }
  /**
   * true if the pattern represents a //unc/path/ on windows
   */
  isUNC() {
    const pl = __privateGet(this, _patternList);
    return __privateGet(this, _isUNC) !== void 0 ? __privateGet(this, _isUNC) : __privateSet(this, _isUNC, __privateGet(this, _platform) === "win32" && __privateGet(this, _index3) === 0 && pl[0] === "" && pl[1] === "" && typeof pl[2] === "string" && !!pl[2] && typeof pl[3] === "string" && !!pl[3]);
  }
  // pattern like C:/...
  // split = ['C:', ...]
  // XXX: would be nice to handle patterns like `c:*` to test the cwd
  // in c: for *, but I don't know of a way to even figure out what that
  // cwd is without actually chdir'ing into it?
  /**
   * True if the pattern starts with a drive letter on Windows
   */
  isDrive() {
    const pl = __privateGet(this, _patternList);
    return __privateGet(this, _isDrive) !== void 0 ? __privateGet(this, _isDrive) : __privateSet(this, _isDrive, __privateGet(this, _platform) === "win32" && __privateGet(this, _index3) === 0 && this.length > 1 && typeof pl[0] === "string" && /^[a-z]:$/i.test(pl[0]));
  }
  // pattern = '/' or '/...' or '/x/...'
  // split = ['', ''] or ['', ...] or ['', 'x', ...]
  // Drive and UNC both considered absolute on windows
  /**
   * True if the pattern is rooted on an absolute path
   */
  isAbsolute() {
    const pl = __privateGet(this, _patternList);
    return __privateGet(this, _isAbsolute) !== void 0 ? __privateGet(this, _isAbsolute) : __privateSet(this, _isAbsolute, pl[0] === "" && pl.length > 1 || this.isDrive() || this.isUNC());
  }
  /**
   * consume the root of the pattern, and return it
   */
  root() {
    const p5 = __privateGet(this, _patternList)[0];
    return typeof p5 === "string" && this.isAbsolute() && __privateGet(this, _index3) === 0 ? p5 : "";
  }
  /**
   * Check to see if the current globstar pattern is allowed to follow
   * a symbolic link.
   */
  checkFollowGlobstar() {
    return !(__privateGet(this, _index3) === 0 || !this.isGlobstar() || !__privateGet(this, _followGlobstar));
  }
  /**
   * Mark that the current globstar pattern is following a symbolic link
   */
  markFollowGlobstar() {
    if (__privateGet(this, _index3) === 0 || !this.isGlobstar() || !__privateGet(this, _followGlobstar))
      return false;
    __privateSet(this, _followGlobstar, false);
    return true;
  }
};
_patternList = new WeakMap();
_globList = new WeakMap();
_index3 = new WeakMap();
_platform = new WeakMap();
_rest = new WeakMap();
_globString = new WeakMap();
_isDrive = new WeakMap();
_isUNC = new WeakMap();
_isAbsolute = new WeakMap();
_followGlobstar = new WeakMap();
var Pattern = _Pattern;

// ../../node_modules/glob/dist/mjs/ignore.js
var defaultPlatform2 = typeof process === "object" && process && typeof process.platform === "string" ? process.platform : "linux";
var Ignore = class {
  relative;
  relativeChildren;
  absolute;
  absoluteChildren;
  constructor(ignored, { nobrace, nocase, noext, noglobstar, platform = defaultPlatform2 }) {
    this.relative = [];
    this.absolute = [];
    this.relativeChildren = [];
    this.absoluteChildren = [];
    const mmopts = {
      dot: true,
      nobrace,
      nocase,
      noext,
      noglobstar,
      optimizationLevel: 2,
      platform,
      nocomment: true,
      nonegate: true
    };
    for (const ign of ignored) {
      const mm = new Minimatch(ign, mmopts);
      for (let i2 = 0; i2 < mm.set.length; i2++) {
        const parsed = mm.set[i2];
        const globParts = mm.globParts[i2];
        const p5 = new Pattern(parsed, globParts, 0, platform);
        const m2 = new Minimatch(p5.globString(), mmopts);
        const children = globParts[globParts.length - 1] === "**";
        const absolute = p5.isAbsolute();
        if (absolute)
          this.absolute.push(m2);
        else
          this.relative.push(m2);
        if (children) {
          if (absolute)
            this.absoluteChildren.push(m2);
          else
            this.relativeChildren.push(m2);
        }
      }
    }
  }
  ignored(p5) {
    const fullpath = p5.fullpath();
    const fullpaths = `${fullpath}/`;
    const relative6 = p5.relative() || ".";
    const relatives = `${relative6}/`;
    for (const m2 of this.relative) {
      if (m2.match(relative6) || m2.match(relatives))
        return true;
    }
    for (const m2 of this.absolute) {
      if (m2.match(fullpath) || m2.match(fullpaths))
        return true;
    }
    return false;
  }
  childrenIgnored(p5) {
    const fullpath = p5.fullpath() + "/";
    const relative6 = (p5.relative() || ".") + "/";
    for (const m2 of this.relativeChildren) {
      if (m2.match(relative6))
        return true;
    }
    for (const m2 of this.absoluteChildren) {
      if (m2.match(fullpath))
        true;
    }
    return false;
  }
};

// ../../node_modules/glob/dist/mjs/processor.js
var HasWalkedCache = class _HasWalkedCache {
  store;
  constructor(store = /* @__PURE__ */ new Map()) {
    this.store = store;
  }
  copy() {
    return new _HasWalkedCache(new Map(this.store));
  }
  hasWalked(target, pattern) {
    var _a6;
    return (_a6 = this.store.get(target.fullpath())) == null ? void 0 : _a6.has(pattern.globString());
  }
  storeWalked(target, pattern) {
    const fullpath = target.fullpath();
    const cached = this.store.get(fullpath);
    if (cached)
      cached.add(pattern.globString());
    else
      this.store.set(fullpath, /* @__PURE__ */ new Set([pattern.globString()]));
  }
};
var MatchRecord = class {
  store = /* @__PURE__ */ new Map();
  add(target, absolute, ifDir) {
    const n = (absolute ? 2 : 0) | (ifDir ? 1 : 0);
    const current2 = this.store.get(target);
    this.store.set(target, current2 === void 0 ? n : n & current2);
  }
  // match, absolute, ifdir
  entries() {
    return [...this.store.entries()].map(([path45, n]) => [
      path45,
      !!(n & 2),
      !!(n & 1)
    ]);
  }
};
var SubWalks = class {
  store = /* @__PURE__ */ new Map();
  add(target, pattern) {
    if (!target.canReaddir()) {
      return;
    }
    const subs = this.store.get(target);
    if (subs) {
      if (!subs.find((p5) => p5.globString() === pattern.globString())) {
        subs.push(pattern);
      }
    } else
      this.store.set(target, [pattern]);
  }
  get(target) {
    const subs = this.store.get(target);
    if (!subs) {
      throw new Error("attempting to walk unknown path");
    }
    return subs;
  }
  entries() {
    return this.keys().map((k) => [k, this.store.get(k)]);
  }
  keys() {
    return [...this.store.keys()].filter((t2) => t2.canReaddir());
  }
};
var Processor = class _Processor {
  hasWalkedCache;
  matches = new MatchRecord();
  subwalks = new SubWalks();
  patterns;
  follow;
  dot;
  opts;
  constructor(opts, hasWalkedCache) {
    this.opts = opts;
    this.follow = !!opts.follow;
    this.dot = !!opts.dot;
    this.hasWalkedCache = hasWalkedCache ? hasWalkedCache.copy() : new HasWalkedCache();
  }
  processPatterns(target, patterns) {
    this.patterns = patterns;
    const processingSet = patterns.map((p5) => [target, p5]);
    for (let [t2, pattern] of processingSet) {
      this.hasWalkedCache.storeWalked(t2, pattern);
      const root6 = pattern.root();
      const absolute = pattern.isAbsolute() && this.opts.absolute !== false;
      if (root6) {
        t2 = t2.resolve(root6 === "/" && this.opts.root !== void 0 ? this.opts.root : root6);
        const rest2 = pattern.rest();
        if (!rest2) {
          this.matches.add(t2, true, false);
          continue;
        } else {
          pattern = rest2;
        }
      }
      if (t2.isENOENT())
        continue;
      let p5;
      let rest;
      let changed = false;
      while (typeof (p5 = pattern.pattern()) === "string" && (rest = pattern.rest())) {
        const c = t2.resolve(p5);
        if (c.isUnknown() && p5 !== "..")
          break;
        t2 = c;
        pattern = rest;
        changed = true;
      }
      p5 = pattern.pattern();
      rest = pattern.rest();
      if (changed) {
        if (this.hasWalkedCache.hasWalked(t2, pattern))
          continue;
        this.hasWalkedCache.storeWalked(t2, pattern);
      }
      if (typeof p5 === "string") {
        if (!rest) {
          const ifDir = p5 === ".." || p5 === "" || p5 === ".";
          this.matches.add(t2.resolve(p5), absolute, ifDir);
        } else {
          this.subwalks.add(t2, pattern);
        }
        continue;
      } else if (p5 === GLOBSTAR) {
        if (!t2.isSymbolicLink() || this.follow || pattern.checkFollowGlobstar()) {
          this.subwalks.add(t2, pattern);
        }
        const rp = rest == null ? void 0 : rest.pattern();
        const rrest = rest == null ? void 0 : rest.rest();
        if (!rest || (rp === "" || rp === ".") && !rrest) {
          this.matches.add(t2, absolute, rp === "" || rp === ".");
        } else {
          if (rp === "..") {
            const tp = t2.parent || t2;
            if (!rrest)
              this.matches.add(tp, absolute, true);
            else if (!this.hasWalkedCache.hasWalked(tp, rrest)) {
              this.subwalks.add(tp, rrest);
            }
          }
        }
      } else if (p5 instanceof RegExp) {
        this.subwalks.add(t2, pattern);
      }
    }
    return this;
  }
  subwalkTargets() {
    return this.subwalks.keys();
  }
  child() {
    return new _Processor(this.opts, this.hasWalkedCache);
  }
  // return a new Processor containing the subwalks for each
  // child entry, and a set of matches, and
  // a hasWalkedCache that's a copy of this one
  // then we're going to call
  filterEntries(parent2, entries2) {
    const patterns = this.subwalks.get(parent2);
    const results = this.child();
    for (const e2 of entries2) {
      for (const pattern of patterns) {
        const absolute = pattern.isAbsolute();
        const p5 = pattern.pattern();
        const rest = pattern.rest();
        if (p5 === GLOBSTAR) {
          results.testGlobstar(e2, pattern, rest, absolute);
        } else if (p5 instanceof RegExp) {
          results.testRegExp(e2, p5, rest, absolute);
        } else {
          results.testString(e2, p5, rest, absolute);
        }
      }
    }
    return results;
  }
  testGlobstar(e2, pattern, rest, absolute) {
    if (this.dot || !e2.name.startsWith(".")) {
      if (!pattern.hasMore()) {
        this.matches.add(e2, absolute, false);
      }
      if (e2.canReaddir()) {
        if (this.follow || !e2.isSymbolicLink()) {
          this.subwalks.add(e2, pattern);
        } else if (e2.isSymbolicLink()) {
          if (rest && pattern.checkFollowGlobstar()) {
            this.subwalks.add(e2, rest);
          } else if (pattern.markFollowGlobstar()) {
            this.subwalks.add(e2, pattern);
          }
        }
      }
    }
    if (rest) {
      const rp = rest.pattern();
      if (typeof rp === "string" && // dots and empty were handled already
      rp !== ".." && rp !== "" && rp !== ".") {
        this.testString(e2, rp, rest.rest(), absolute);
      } else if (rp === "..") {
        const ep = e2.parent || e2;
        this.subwalks.add(ep, rest);
      } else if (rp instanceof RegExp) {
        this.testRegExp(e2, rp, rest.rest(), absolute);
      }
    }
  }
  testRegExp(e2, p5, rest, absolute) {
    if (!p5.test(e2.name))
      return;
    if (!rest) {
      this.matches.add(e2, absolute, false);
    } else {
      this.subwalks.add(e2, rest);
    }
  }
  testString(e2, p5, rest, absolute) {
    if (!e2.isNamed(p5))
      return;
    if (!rest) {
      this.matches.add(e2, absolute, false);
    } else {
      this.subwalks.add(e2, rest);
    }
  }
};

// ../../node_modules/glob/dist/mjs/walker.js
var makeIgnore = (ignore3, opts) => typeof ignore3 === "string" ? new Ignore([ignore3], opts) : Array.isArray(ignore3) ? new Ignore(ignore3, opts) : ignore3;
var _onResume, _ignore, _sep, _GlobUtil_instances, ignored_fn, childrenIgnored_fn;
var GlobUtil = class {
  constructor(patterns, path45, opts) {
    __privateAdd(this, _GlobUtil_instances);
    __publicField(this, "path");
    __publicField(this, "patterns");
    __publicField(this, "opts");
    __publicField(this, "seen", /* @__PURE__ */ new Set());
    __publicField(this, "paused", false);
    __publicField(this, "aborted", false);
    __privateAdd(this, _onResume, []);
    __privateAdd(this, _ignore);
    __privateAdd(this, _sep);
    __publicField(this, "signal");
    __publicField(this, "maxDepth");
    this.patterns = patterns;
    this.path = path45;
    this.opts = opts;
    __privateSet(this, _sep, !opts.posix && opts.platform === "win32" ? "\\" : "/");
    if (opts.ignore) {
      __privateSet(this, _ignore, makeIgnore(opts.ignore, opts));
    }
    this.maxDepth = opts.maxDepth || Infinity;
    if (opts.signal) {
      this.signal = opts.signal;
      this.signal.addEventListener("abort", () => {
        __privateGet(this, _onResume).length = 0;
      });
    }
  }
  // backpressure mechanism
  pause() {
    this.paused = true;
  }
  resume() {
    var _a6;
    if ((_a6 = this.signal) == null ? void 0 : _a6.aborted)
      return;
    this.paused = false;
    let fn = void 0;
    while (!this.paused && (fn = __privateGet(this, _onResume).shift())) {
      fn();
    }
  }
  onResume(fn) {
    var _a6;
    if ((_a6 = this.signal) == null ? void 0 : _a6.aborted)
      return;
    if (!this.paused) {
      fn();
    } else {
      __privateGet(this, _onResume).push(fn);
    }
  }
  // do the requisite realpath/stat checking, and return the path
  // to add or undefined to filter it out.
  async matchCheck(e2, ifDir) {
    if (ifDir && this.opts.nodir)
      return void 0;
    let rpc;
    if (this.opts.realpath) {
      rpc = e2.realpathCached() || await e2.realpath();
      if (!rpc)
        return void 0;
      e2 = rpc;
    }
    const needStat = e2.isUnknown() || this.opts.stat;
    return this.matchCheckTest(needStat ? await e2.lstat() : e2, ifDir);
  }
  matchCheckTest(e2, ifDir) {
    return e2 && (this.maxDepth === Infinity || e2.depth() <= this.maxDepth) && (!ifDir || e2.canReaddir()) && (!this.opts.nodir || !e2.isDirectory()) && !__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, e2) ? e2 : void 0;
  }
  matchCheckSync(e2, ifDir) {
    if (ifDir && this.opts.nodir)
      return void 0;
    let rpc;
    if (this.opts.realpath) {
      rpc = e2.realpathCached() || e2.realpathSync();
      if (!rpc)
        return void 0;
      e2 = rpc;
    }
    const needStat = e2.isUnknown() || this.opts.stat;
    return this.matchCheckTest(needStat ? e2.lstatSync() : e2, ifDir);
  }
  matchFinish(e2, absolute) {
    if (__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, e2))
      return;
    const abs = this.opts.absolute === void 0 ? absolute : this.opts.absolute;
    this.seen.add(e2);
    const mark2 = this.opts.mark && e2.isDirectory() ? __privateGet(this, _sep) : "";
    if (this.opts.withFileTypes) {
      this.matchEmit(e2);
    } else if (abs) {
      const abs2 = this.opts.posix ? e2.fullpathPosix() : e2.fullpath();
      this.matchEmit(abs2 + mark2);
    } else {
      const rel2 = this.opts.posix ? e2.relativePosix() : e2.relative();
      const pre2 = this.opts.dotRelative && !rel2.startsWith(".." + __privateGet(this, _sep)) ? "." + __privateGet(this, _sep) : "";
      this.matchEmit(!rel2 ? "." + mark2 : pre2 + rel2 + mark2);
    }
  }
  async match(e2, absolute, ifDir) {
    const p5 = await this.matchCheck(e2, ifDir);
    if (p5)
      this.matchFinish(p5, absolute);
  }
  matchSync(e2, absolute, ifDir) {
    const p5 = this.matchCheckSync(e2, ifDir);
    if (p5)
      this.matchFinish(p5, absolute);
  }
  walkCB(target, patterns, cb) {
    var _a6;
    if ((_a6 = this.signal) == null ? void 0 : _a6.aborted)
      cb();
    this.walkCB2(target, patterns, new Processor(this.opts), cb);
  }
  walkCB2(target, patterns, processor2, cb) {
    var _a6;
    if (__privateMethod(this, _GlobUtil_instances, childrenIgnored_fn).call(this, target))
      return cb();
    if ((_a6 = this.signal) == null ? void 0 : _a6.aborted)
      cb();
    if (this.paused) {
      this.onResume(() => this.walkCB2(target, patterns, processor2, cb));
      return;
    }
    processor2.processPatterns(target, patterns);
    let tasks = 1;
    const next = () => {
      if (--tasks === 0)
        cb();
    };
    for (const [m2, absolute, ifDir] of processor2.matches.entries()) {
      if (__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, m2))
        continue;
      tasks++;
      this.match(m2, absolute, ifDir).then(() => next());
    }
    for (const t2 of processor2.subwalkTargets()) {
      if (this.maxDepth !== Infinity && t2.depth() >= this.maxDepth) {
        continue;
      }
      tasks++;
      const childrenCached = t2.readdirCached();
      if (t2.calledReaddir())
        this.walkCB3(t2, childrenCached, processor2, next);
      else {
        t2.readdirCB((_2, entries2) => this.walkCB3(t2, entries2, processor2, next), true);
      }
    }
    next();
  }
  walkCB3(target, entries2, processor2, cb) {
    processor2 = processor2.filterEntries(target, entries2);
    let tasks = 1;
    const next = () => {
      if (--tasks === 0)
        cb();
    };
    for (const [m2, absolute, ifDir] of processor2.matches.entries()) {
      if (__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, m2))
        continue;
      tasks++;
      this.match(m2, absolute, ifDir).then(() => next());
    }
    for (const [target2, patterns] of processor2.subwalks.entries()) {
      tasks++;
      this.walkCB2(target2, patterns, processor2.child(), next);
    }
    next();
  }
  walkCBSync(target, patterns, cb) {
    var _a6;
    if ((_a6 = this.signal) == null ? void 0 : _a6.aborted)
      cb();
    this.walkCB2Sync(target, patterns, new Processor(this.opts), cb);
  }
  walkCB2Sync(target, patterns, processor2, cb) {
    var _a6;
    if (__privateMethod(this, _GlobUtil_instances, childrenIgnored_fn).call(this, target))
      return cb();
    if ((_a6 = this.signal) == null ? void 0 : _a6.aborted)
      cb();
    if (this.paused) {
      this.onResume(() => this.walkCB2Sync(target, patterns, processor2, cb));
      return;
    }
    processor2.processPatterns(target, patterns);
    let tasks = 1;
    const next = () => {
      if (--tasks === 0)
        cb();
    };
    for (const [m2, absolute, ifDir] of processor2.matches.entries()) {
      if (__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, m2))
        continue;
      this.matchSync(m2, absolute, ifDir);
    }
    for (const t2 of processor2.subwalkTargets()) {
      if (this.maxDepth !== Infinity && t2.depth() >= this.maxDepth) {
        continue;
      }
      tasks++;
      const children = t2.readdirSync();
      this.walkCB3Sync(t2, children, processor2, next);
    }
    next();
  }
  walkCB3Sync(target, entries2, processor2, cb) {
    processor2 = processor2.filterEntries(target, entries2);
    let tasks = 1;
    const next = () => {
      if (--tasks === 0)
        cb();
    };
    for (const [m2, absolute, ifDir] of processor2.matches.entries()) {
      if (__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, m2))
        continue;
      this.matchSync(m2, absolute, ifDir);
    }
    for (const [target2, patterns] of processor2.subwalks.entries()) {
      tasks++;
      this.walkCB2Sync(target2, patterns, processor2.child(), next);
    }
    next();
  }
};
_onResume = new WeakMap();
_ignore = new WeakMap();
_sep = new WeakMap();
_GlobUtil_instances = new WeakSet();
ignored_fn = function(path45) {
  var _a6, _b;
  return this.seen.has(path45) || !!((_b = (_a6 = __privateGet(this, _ignore)) == null ? void 0 : _a6.ignored) == null ? void 0 : _b.call(_a6, path45));
};
childrenIgnored_fn = function(path45) {
  var _a6, _b;
  return !!((_b = (_a6 = __privateGet(this, _ignore)) == null ? void 0 : _a6.childrenIgnored) == null ? void 0 : _b.call(_a6, path45));
};
var GlobWalker = class extends GlobUtil {
  matches;
  constructor(patterns, path45, opts) {
    super(patterns, path45, opts);
    this.matches = /* @__PURE__ */ new Set();
  }
  matchEmit(e2) {
    this.matches.add(e2);
  }
  async walk() {
    var _a6;
    if ((_a6 = this.signal) == null ? void 0 : _a6.aborted)
      throw this.signal.reason;
    if (this.path.isUnknown()) {
      await this.path.lstat();
    }
    await new Promise((res, rej) => {
      this.walkCB(this.path, this.patterns, () => {
        var _a7;
        if ((_a7 = this.signal) == null ? void 0 : _a7.aborted) {
          rej(this.signal.reason);
        } else {
          res(this.matches);
        }
      });
    });
    return this.matches;
  }
  walkSync() {
    var _a6;
    if ((_a6 = this.signal) == null ? void 0 : _a6.aborted)
      throw this.signal.reason;
    if (this.path.isUnknown()) {
      this.path.lstatSync();
    }
    this.walkCBSync(this.path, this.patterns, () => {
      var _a7;
      if ((_a7 = this.signal) == null ? void 0 : _a7.aborted)
        throw this.signal.reason;
    });
    return this.matches;
  }
};
var GlobStream = class extends GlobUtil {
  results;
  constructor(patterns, path45, opts) {
    super(patterns, path45, opts);
    this.results = new Minipass({
      signal: this.signal,
      objectMode: true
    });
    this.results.on("drain", () => this.resume());
    this.results.on("resume", () => this.resume());
  }
  matchEmit(e2) {
    this.results.write(e2);
    if (!this.results.flowing)
      this.pause();
  }
  stream() {
    const target = this.path;
    if (target.isUnknown()) {
      target.lstat().then(() => {
        this.walkCB(target, this.patterns, () => this.results.end());
      });
    } else {
      this.walkCB(target, this.patterns, () => this.results.end());
    }
    return this.results;
  }
  streamSync() {
    if (this.path.isUnknown()) {
      this.path.lstatSync();
    }
    this.walkCBSync(this.path, this.patterns, () => this.results.end());
    return this.results;
  }
};

// ../../node_modules/glob/dist/mjs/glob.js
var defaultPlatform3 = typeof process === "object" && process && typeof process.platform === "string" ? process.platform : "linux";
var Glob = class {
  absolute;
  cwd;
  root;
  dot;
  dotRelative;
  follow;
  ignore;
  magicalBraces;
  mark;
  matchBase;
  maxDepth;
  nobrace;
  nocase;
  nodir;
  noext;
  noglobstar;
  pattern;
  platform;
  realpath;
  scurry;
  stat;
  signal;
  windowsPathsNoEscape;
  withFileTypes;
  /**
   * The options provided to the constructor.
   */
  opts;
  /**
   * An array of parsed immutable {@link Pattern} objects.
   */
  patterns;
  /**
   * All options are stored as properties on the `Glob` object.
   *
   * See {@link GlobOptions} for full options descriptions.
   *
   * Note that a previous `Glob` object can be passed as the
   * `GlobOptions` to another `Glob` instantiation to re-use settings
   * and caches with a new pattern.
   *
   * Traversal functions can be called multiple times to run the walk
   * again.
   */
  constructor(pattern, opts) {
    if (!opts)
      throw new TypeError("glob options required");
    this.withFileTypes = !!opts.withFileTypes;
    this.signal = opts.signal;
    this.follow = !!opts.follow;
    this.dot = !!opts.dot;
    this.dotRelative = !!opts.dotRelative;
    this.nodir = !!opts.nodir;
    this.mark = !!opts.mark;
    if (!opts.cwd) {
      this.cwd = "";
    } else if (opts.cwd instanceof URL || opts.cwd.startsWith("file://")) {
      opts.cwd = (0, import_url3.fileURLToPath)(opts.cwd);
    }
    this.cwd = opts.cwd || "";
    this.root = opts.root;
    this.magicalBraces = !!opts.magicalBraces;
    this.nobrace = !!opts.nobrace;
    this.noext = !!opts.noext;
    this.realpath = !!opts.realpath;
    this.absolute = opts.absolute;
    this.noglobstar = !!opts.noglobstar;
    this.matchBase = !!opts.matchBase;
    this.maxDepth = typeof opts.maxDepth === "number" ? opts.maxDepth : Infinity;
    this.stat = !!opts.stat;
    this.ignore = opts.ignore;
    if (this.withFileTypes && this.absolute !== void 0) {
      throw new Error("cannot set absolute and withFileTypes:true");
    }
    if (typeof pattern === "string") {
      pattern = [pattern];
    }
    this.windowsPathsNoEscape = !!opts.windowsPathsNoEscape || opts.allowWindowsEscape === false;
    if (this.windowsPathsNoEscape) {
      pattern = pattern.map((p5) => p5.replace(/\\/g, "/"));
    }
    if (this.matchBase) {
      if (opts.noglobstar) {
        throw new TypeError("base matching requires globstar");
      }
      pattern = pattern.map((p5) => p5.includes("/") ? p5 : `./**/${p5}`);
    }
    this.pattern = pattern;
    this.platform = opts.platform || defaultPlatform3;
    this.opts = { ...opts, platform: this.platform };
    if (opts.scurry) {
      this.scurry = opts.scurry;
      if (opts.nocase !== void 0 && opts.nocase !== opts.scurry.nocase) {
        throw new Error("nocase option contradicts provided scurry option");
      }
    } else {
      const Scurry = opts.platform === "win32" ? PathScurryWin32 : opts.platform === "darwin" ? PathScurryDarwin : opts.platform ? PathScurryPosix : PathScurry;
      this.scurry = new Scurry(this.cwd, {
        nocase: opts.nocase,
        fs: opts.fs
      });
    }
    this.nocase = this.scurry.nocase;
    const nocaseMagicOnly = this.platform === "darwin" || this.platform === "win32";
    const mmo = {
      // default nocase based on platform
      ...opts,
      dot: this.dot,
      matchBase: this.matchBase,
      nobrace: this.nobrace,
      nocase: this.nocase,
      nocaseMagicOnly,
      nocomment: true,
      noext: this.noext,
      nonegate: true,
      optimizationLevel: 2,
      platform: this.platform,
      windowsPathsNoEscape: this.windowsPathsNoEscape,
      debug: !!this.opts.debug
    };
    const mms = this.pattern.map((p5) => new Minimatch(p5, mmo));
    const [matchSet, globParts] = mms.reduce((set3, m2) => {
      set3[0].push(...m2.set);
      set3[1].push(...m2.globParts);
      return set3;
    }, [[], []]);
    this.patterns = matchSet.map((set3, i2) => {
      return new Pattern(set3, globParts[i2], 0, this.platform);
    });
  }
  async walk() {
    return [
      ...await new GlobWalker(this.patterns, this.scurry.cwd, {
        ...this.opts,
        maxDepth: this.maxDepth !== Infinity ? this.maxDepth + this.scurry.cwd.depth() : Infinity,
        platform: this.platform,
        nocase: this.nocase
      }).walk()
    ];
  }
  walkSync() {
    return [
      ...new GlobWalker(this.patterns, this.scurry.cwd, {
        ...this.opts,
        maxDepth: this.maxDepth !== Infinity ? this.maxDepth + this.scurry.cwd.depth() : Infinity,
        platform: this.platform,
        nocase: this.nocase
      }).walkSync()
    ];
  }
  stream() {
    return new GlobStream(this.patterns, this.scurry.cwd, {
      ...this.opts,
      maxDepth: this.maxDepth !== Infinity ? this.maxDepth + this.scurry.cwd.depth() : Infinity,
      platform: this.platform,
      nocase: this.nocase
    }).stream();
  }
  streamSync() {
    return new GlobStream(this.patterns, this.scurry.cwd, {
      ...this.opts,
      maxDepth: this.maxDepth !== Infinity ? this.maxDepth + this.scurry.cwd.depth() : Infinity,
      platform: this.platform,
      nocase: this.nocase
    }).streamSync();
  }
  /**
   * Default sync iteration function. Returns a Generator that
   * iterates over the results.
   */
  iterateSync() {
    return this.streamSync()[Symbol.iterator]();
  }
  [Symbol.iterator]() {
    return this.iterateSync();
  }
  /**
   * Default async iteration function. Returns an AsyncGenerator that
   * iterates over the results.
   */
  iterate() {
    return this.stream()[Symbol.asyncIterator]();
  }
  [Symbol.asyncIterator]() {
    return this.iterate();
  }
};

// ../../node_modules/glob/dist/mjs/has-magic.js
var hasMagic = (pattern, options = {}) => {
  if (!Array.isArray(pattern)) {
    pattern = [pattern];
  }
  for (const p5 of pattern) {
    if (new Minimatch(p5, options).hasMagic())
      return true;
  }
  return false;
};

// ../../node_modules/glob/dist/mjs/index.js
function globStreamSync(pattern, options = {}) {
  return new Glob(pattern, options).streamSync();
}
function globStream(pattern, options = {}) {
  return new Glob(pattern, options).stream();
}
function globSync(pattern, options = {}) {
  return new Glob(pattern, options).walkSync();
}
async function glob_(pattern, options = {}) {
  return new Glob(pattern, options).walk();
}
function globIterateSync(pattern, options = {}) {
  return new Glob(pattern, options).iterateSync();
}
function globIterate(pattern, options = {}) {
  return new Glob(pattern, options).iterate();
}
var streamSync = globStreamSync;
var stream = Object.assign(globStream, { sync: globStreamSync });
var iterateSync = globIterateSync;
var iterate = Object.assign(globIterate, {
  sync: globIterateSync
});
var sync = Object.assign(globSync, {
  stream: globStreamSync,
  iterate: globIterateSync
});
var glob = Object.assign(glob_, {
  glob: glob_,
  globSync,
  sync,
  globStream,
  stream,
  globStreamSync,
  streamSync,
  globIterate,
  iterate,
  globIterateSync,
  iterateSync,
  Glob,
  hasMagic,
  escape: escape3,
  unescape: unescape2
});
glob.glob = glob;

// ../myst-cli/dist/project/fromTOC.js
var DEFAULT_INDEX_FILENAMES = ["index", "readme", "main"];
var DEFAULT_INDEX_WITH_EXT = [".md", ".ipynb", ".myst.json"].map((ext2) => DEFAULT_INDEX_FILENAMES.map((file) => `${file}${ext2}`)).flat();
function comparePaths(a2, b) {
  const aDirName = (0, import_node_path20.dirname)(a2);
  const bDirName = (0, import_node_path20.dirname)(b);
  if (aDirName === bDirName) {
    const aBaseName = (0, import_node_path20.basename)(a2);
    const bBaseName = (0, import_node_path20.basename)(b);
    const aIsIndex = DEFAULT_INDEX_WITH_EXT.includes(aBaseName);
    const bIsIndex = DEFAULT_INDEX_WITH_EXT.includes(bBaseName);
    if (aIsIndex === bIsIndex) {
      return aBaseName.localeCompare(bBaseName, void 0, {
        numeric: true,
        ignorePunctuation: true
      });
    } else if (aIsIndex) {
      return -1;
    } else {
      return 1;
    }
  } else {
    return a2.localeCompare(b, void 0, {
      numeric: true,
      ignorePunctuation: true
    });
  }
}
function listExplicitFiles(entries2, path45) {
  const files = [];
  entries2.forEach((entry) => {
    if (entry.file) {
      files.push((0, import_node_path20.resolve)(path45, entry.file));
    }
    if (entry.children) {
      files.push(...listExplicitFiles(entry.children, path45));
    }
  });
  return files;
}
function patternsToFileEntries(session, entries2, path45, ignore3, file, opts) {
  return entries2.map((entry) => {
    if (isPattern(entry)) {
      const { pattern, ...leftover } = entry;
      const matches4 = globSync(pattern, { cwd: path45, nodir: true, ...opts }).filter((item) => !ignore3 || !ignore3.includes(item)).sort(comparePaths);
      const newEntries = matches4.map((item) => {
        return {
          file: item,
          implicit: true,
          ...leftover
        };
      });
      if (newEntries.length === 0) {
        addWarningForFile(session, file, `Pattern from table of contents did not match any files: ${pattern}`, "error", {
          ruleId: RuleId.tocContentsExist
        });
      }
      ignore3.push(...listExplicitFiles(newEntries, path45));
      return newEntries;
    } else {
      const { children } = entry;
      if (children) {
        const newChildren = patternsToFileEntries(session, children, path45, ignore3, file);
        return { ...entry, children: newChildren };
      } else {
        return entry;
      }
    }
  }).flat();
}
function pagesFromEntries(session, path45, entries2, pages = [], level = 1, pageSlugs, opts) {
  const configFile = selectors_exports.selectLocalConfigFile(session.store.getState(), path45);
  for (const entry of entries2) {
    let entryLevel = level;
    if (isFile(entry)) {
      entryLevel = level < 0 ? 0 : level;
      const { file, ...leftover } = entry;
      const resolvedFile = resolveExtension((0, import_node_path20.resolve)(path45, file), (message, errorLevel, note) => {
        addWarningForFile(session, configFile, message, errorLevel, {
          ruleId: RuleId.tocContentsExist,
          note
        });
      });
      if (resolvedFile && import_node_fs15.default.existsSync(resolvedFile) && !isDirectory(resolvedFile)) {
        const { slug } = fileInfo2(resolvedFile, pageSlugs, { ...opts, session });
        pages.push({ file: resolvedFile, level: entryLevel, slug, ...leftover });
      }
    } else if (isURL(entry)) {
      pages.push({
        url: entry.url,
        title: entry.title || entry.url,
        level: entryLevel,
        open_in_same_tab: entry.open_in_same_tab
      });
    } else {
      entryLevel = level < -1 ? -1 : level;
      pages.push({ level: entryLevel, title: entry.title });
    }
    const parentEntry = entry;
    if (parentEntry.children) {
      pagesFromEntries(session, path45, parentEntry.children, pages, nextLevel(entryLevel), pageSlugs, opts);
    }
  }
  return pages;
}
function getIgnoreFiles(session, path45) {
  var _a6;
  const rootConfigYamls = session.configFiles.map((file) => (0, import_node_path20.join)(path45, file));
  const projectConfig = selectors_exports.selectLocalProjectConfig(session.store.getState(), path45);
  const excludePatterns = (_a6 = projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.exclude) !== null && _a6 !== void 0 ? _a6 : [];
  const excludeFiles = excludePatterns.map((pattern) => {
    const matches4 = globSync(pattern, { cwd: path45, absolute: true });
    return matches4.map((match3) => match3.split("/").join(import_node_path20.sep));
  }).flat();
  return [...rootConfigYamls, ...excludeFiles];
}
function projectFromTOC(session, path45, toc, level = 1, file, opts) {
  var _a6, _b;
  const pageSlugs = {};
  const ignoreFiles = [...getIgnoreFiles(session, path45), ...listExplicitFiles(toc, path45)];
  const warnFile = (_a6 = file !== null && file !== void 0 ? file : selectors_exports.selectLocalConfigFile(session.store.getState(), path45)) !== null && _a6 !== void 0 ? _a6 : (0, import_node_path20.join)(path45, session.configFiles[0]);
  const tocWithoutPatterns = patternsToFileEntries(session, toc, path45, ignoreFiles, warnFile);
  const [root6, ...entries2] = tocWithoutPatterns;
  if (!root6) {
    throw new Error("Project TOC must have at least one item");
  }
  if (!isFile(root6)) {
    throw new Error(`First TOC item must be a file`);
  }
  if ((_b = root6.children) === null || _b === void 0 ? void 0 : _b.length) {
    throw new Error(`First TOC item cannot have children`);
  }
  const indexFile = resolveExtension((0, import_node_path20.resolve)(path45, root6.file), (message, errorLevel, note) => {
    addWarningForFile(session, warnFile, message, errorLevel, {
      ruleId: RuleId.tocContentsExist,
      note
    });
  });
  if (!indexFile) {
    throw Error(`Could not resolve project index file: ${root6.file}`);
  }
  if ((opts === null || opts === void 0 ? void 0 : opts.urlFolders) && !opts.projectPath)
    opts.projectPath = path45;
  const slug = "index";
  pageSlugs[slug] = 1;
  const pages = [];
  pagesFromEntries(session, path45, entries2, pages, level, pageSlugs, opts);
  return { path: path45 || ".", file: indexFile, index: slug, pages };
}
function pagesFromSphinxChapters(session, path45, chapters, pages = [], level = 1, pageSlugs, opts) {
  const filename = tocFile(path45);
  const { dir } = (0, import_node_path20.parse)(filename);
  chapters.forEach((chapter) => {
    const file = chapter.file ? resolveExtension((0, import_node_path20.join)(dir, chapter.file)) : void 0;
    if (file) {
      const { slug } = fileInfo2(file, pageSlugs, { ...opts, session });
      pages.push({ file, level, slug });
    }
    if (!file && chapter.file) {
      addWarningForFile(session, tocFile(path45), `Referenced file not found: ${chapter.file}`, "error", { ruleId: RuleId.tocContentsExist });
    }
    if (!file && chapter.title) {
      pages.push({ level, title: chapter.title });
    }
    if (chapter.sections) {
      pagesFromSphinxChapters(session, path45, chapter.sections, pages, nextLevel(level), pageSlugs, opts);
    }
  });
  return pages;
}
function projectFromSphinxTOC(session, path45, level = 1, opts) {
  const filename = tocFile(path45);
  if (!import_node_fs15.default.existsSync(filename)) {
    throw new Error(`Could not find TOC "${filename}". Please create a '_toc.yml'.`);
  }
  const { dir, base: base5 } = (0, import_node_path20.parse)(filename);
  const toc = readSphinxTOC(session.log, { filename: base5, path: dir });
  const pageSlugs = {};
  const indexFile = resolveExtension((0, import_node_path20.join)(dir, toc.root));
  if (!indexFile) {
    throw Error(`The table of contents defined in "${tocFile(path45)}" could not find file "${toc.root}" defined as the "root:" page. Please ensure that one of these files is defined:
- ${VALID_FILE_EXTENSIONS.map((ext2) => (0, import_node_path20.join)(dir, `${toc.root}${ext2}`)).join("\n- ")}
`);
  }
  if ((opts === null || opts === void 0 ? void 0 : opts.urlFolders) && !opts.projectPath)
    opts.projectPath = path45;
  const { slug } = fileInfo2(indexFile, pageSlugs, { ...opts, session });
  const pages = [];
  if (toc.sections) {
    if (level < 1)
      level = 1;
    pagesFromSphinxChapters(session, path45, toc.sections, pages, level, pageSlugs, opts);
  } else if (toc.chapters) {
    if (level < 0)
      level = 0;
    pagesFromSphinxChapters(session, path45, toc.chapters, pages, level, pageSlugs, opts);
  } else if (toc.parts) {
    if (level < -1)
      level = -1;
    toc.parts.forEach((part, index4) => {
      if (part.caption) {
        pages.push({ title: part.caption || `Part ${index4 + 1}`, level });
      }
      if (part.chapters) {
        pagesFromSphinxChapters(session, path45, part.chapters, pages, nextLevel(level), pageSlugs, opts);
      }
    });
  }
  return { path: dir || ".", file: indexFile, index: slug, pages };
}
function pagesFromSphinxTOC(session, path45, level, opts) {
  const { file, index: index4, pages } = projectFromSphinxTOC(session, path45, nextLevel(level), opts);
  pages.unshift({ file, slug: index4, level });
  return pages;
}

// ../myst-cli/dist/project/fromPath.js
function projectPagesFromPath(session, path45, level, pageSlugs, opts) {
  const { ignore: ignore3, suppressWarnings } = opts || {};
  const contents = import_node_fs16.default.readdirSync(path45).filter((file) => !shouldIgnoreFile(session, file)).map((file) => (0, import_node_path21.join)(path45, file)).filter((file) => !ignore3 || !ignore3.includes(file)).sort(comparePaths);
  if (session.configFiles.filter((file) => contents.includes((0, import_node_path21.join)(path45, file))).length) {
    session.log.debug(`\u{1F50D} Found config file, ignoring subdirectory: ${path45}`);
    return [];
  }
  if (contents.includes((0, import_node_path21.join)(path45, "_toc.yml"))) {
    const prevLevel = level < 2 ? 1 : level - 1;
    try {
      session.log.debug(`Respecting legacy TOC in subdirectory: ${(0, import_node_path21.join)(path45, "_toc.yml")}`);
      return pagesFromSphinxTOC(session, path45, prevLevel, opts);
    } catch {
      if (!suppressWarnings) {
        addWarningForFile(session, (0, import_node_path21.join)(path45, "_toc.yml"), `Invalid table of contents ignored`, "warn", { ruleId: RuleId.validTOC });
      }
    }
  }
  const files = contents.filter((file) => isValidFile(file)).map((file) => {
    return {
      file,
      level,
      slug: fileInfo2(file, pageSlugs, opts).slug,
      implicit: true
    };
  });
  const folders = contents.filter((file) => isDirectory(file)).sort(comparePaths).map((dir) => {
    const projectFolder = {
      title: fileTitle(dir),
      level
    };
    const pages = projectPagesFromPath(session, dir, nextLevel(level), pageSlugs, opts);
    if (!pages.length) {
      return [];
    }
    if (pages[0].level === level) {
      return pages;
    }
    return [projectFolder, ...pages];
  }).flat();
  return files.concat(folders);
}
function indexFileFromPages(pages, path45) {
  let indexFile;
  const files = pages.filter((page) => "file" in page).map((page) => page.file);
  const matcher = (ext2) => {
    let match3;
    DEFAULT_INDEX_FILENAMES.map((index4) => `${index4}${ext2}`).map((index4) => (0, import_node_path21.join)(path45, index4).toLowerCase()).forEach((index4) => {
      if (match3)
        return;
      files.forEach((file) => {
        if (file.toLowerCase() === index4)
          match3 = file;
      });
    });
    return match3;
  };
  if (!indexFile)
    indexFile = matcher(".md");
  if (!indexFile)
    indexFile = matcher(".tex");
  if (!indexFile)
    indexFile = matcher(".ipynb");
  if (!indexFile)
    indexFile = matcher(".myst.json");
  if (!indexFile)
    [indexFile] = files.filter((file) => (0, import_node_path21.extname)(file) === ".md");
  if (!indexFile)
    [indexFile] = files.filter((file) => (0, import_node_path21.extname)(file) === ".tex");
  if (!indexFile)
    [indexFile] = files.filter((file) => (0, import_node_path21.extname)(file) === ".ipynb");
  if (!indexFile)
    [indexFile] = files.filter((file) => file.endsWith(".myst.json"));
  if (!indexFile)
    [indexFile] = files;
  return indexFile;
}
function projectFromPath(session, path45, indexFile, opts) {
  const ext_string = VALID_FILE_EXTENSIONS.join(" or ");
  if (indexFile) {
    if (!isValidFile(indexFile))
      throw Error(`Index file ${indexFile} has invalid extension; must be ${ext_string}}`);
    if (!import_node_fs16.default.existsSync(indexFile))
      throw Error(`Index file ${indexFile} not found`);
  }
  if ((opts === null || opts === void 0 ? void 0 : opts.urlFolders) && !opts.projectPath)
    opts.projectPath = path45;
  const ignoreFiles = getIgnoreFiles(session, path45);
  let implicitIndex = false;
  if (!indexFile) {
    const searchPages = projectPagesFromPath(session, path45, 1, {}, { ...opts, ignore: ignoreFiles, suppressWarnings: true });
    if (!searchPages.length) {
      throw Error(`No valid files with extensions ${ext_string} found in path "${path45}"`);
    }
    indexFile = indexFileFromPages(searchPages, path45);
    if (!indexFile)
      throw Error(`Unable to find any index file in path "${path45}"`);
    implicitIndex = true;
  }
  const pageSlugs = {};
  const { slug } = fileInfo2(indexFile, pageSlugs, { ...opts, session });
  const pages = projectPagesFromPath(session, path45, 1, pageSlugs, {
    ...opts,
    ignore: [indexFile, ...ignoreFiles]
  });
  return { file: indexFile, index: slug, path: path45, pages, implicitIndex };
}

// ../myst-cli/dist/project/toTOC.js
var import_node_fs17 = __toESM(require("fs"), 1);

// ../myst-cli/dist/project/utils.js
function yamlLineIndent(line2) {
  var _a6;
  const prefix2 = (_a6 = line2.match(/^\s*[^\s#]/)) === null || _a6 === void 0 ? void 0 : _a6[0];
  return prefix2 ? prefix2.length - 1 : void 0;
}
function matchesYAMLSection(name3, line2) {
  return !!line2.match(new RegExp(`^\\s*${name3}:\\s*(#.*)?$`));
}
function findYAMLSection(name3, indent2, lines, index4 = 0) {
  let i2 = index4;
  let foundMatch;
  for (; i2 < lines.length; i2++) {
    const thisIndent = yamlLineIndent(lines[i2]);
    if (thisIndent === void 0) {
      continue;
    }
    if (thisIndent < indent2) {
      break;
    } else if (thisIndent > indent2) {
      continue;
    }
    const isMatch = matchesYAMLSection(name3, lines[i2]);
    if (isMatch) {
      foundMatch = true;
      i2++;
      break;
    }
  }
  if (!foundMatch) {
    return void 0;
  }
  const start = i2;
  let childIndent;
  for (; i2 < lines.length; i2++) {
    childIndent = yamlLineIndent(lines[i2]);
    if (childIndent !== void 0) {
      break;
    }
  }
  if (childIndent !== void 0) {
    if (childIndent <= indent2) {
      childIndent = void 0;
    }
  }
  if (childIndent === void 0) {
    return { start, stop: start, indent: void 0 };
  }
  for (; i2 < lines.length; i2++) {
    const thisIndent = yamlLineIndent(lines[i2]);
    if (thisIndent !== void 0 && thisIndent < childIndent) {
      break;
    }
  }
  const stop = i2;
  return { start, stop, indent: childIndent };
}

// ../myst-cli/dist/project/toTOC.js
var import_node_path22 = require("path");
function getRelativeDocumentLink(file, path45) {
  const relativePath = path45 === "." ? file : (0, import_node_path22.relative)(path45, file);
  return relativePath.replace(/\\/g, "/");
}
function tocFromPages(pages, path45) {
  const levels = pages.map((page) => page.level);
  const currentLevel = Math.min(...levels);
  const currentLevelIndices = levels.reduce((inds, val, i2) => {
    if (val === currentLevel) {
      inds.push(i2);
    }
    return inds;
  }, []);
  return currentLevelIndices.map((index4, i2) => {
    let nextPages;
    if (currentLevelIndices[i2 + 1]) {
      nextPages = pages.slice(index4 + 1, currentLevelIndices[i2 + 1]);
    } else {
      nextPages = pages.slice(index4 + 1);
    }
    if ("file" in pages[index4]) {
      const page = pages[index4];
      if (nextPages.length) {
        return {
          file: getRelativeDocumentLink(page.file, path45),
          children: tocFromPages(nextPages, path45)
        };
      } else {
        return {
          file: getRelativeDocumentLink(page.file, path45)
        };
      }
    } else if ("title" in pages[index4]) {
      const page = pages[index4];
      return { title: page.title, children: tocFromPages(nextPages, path45) };
    } else {
      return void 0;
    }
  });
}
function tocFromProject(project, dir = ".") {
  return [
    { file: getRelativeDocumentLink(project.file, dir) },
    ...tocFromPages(project.pages, dir)
  ];
}
var DEFAULT_INDENT = 2;
async function writeTOCToConfigFile(project, srcPath, dstPath) {
  var _a6, _b, _c;
  let lines;
  if (import_node_fs17.default.existsSync(srcPath)) {
    lines = import_node_fs17.default.readFileSync(srcPath, "utf8").split(/\r\n|\r|\n/);
  } else {
    lines = [];
  }
  const indent2 = (_a6 = lines.map(yamlLineIndent).find((item) => item !== void 0)) !== null && _a6 !== void 0 ? _a6 : 0;
  let projectInfo = findYAMLSection("project", indent2, lines);
  if (!projectInfo) {
    const prefix2 = " ".repeat(indent2);
    lines.push(`${prefix2}project:`);
    projectInfo = { start: lines.length, stop: lines.length, indent: indent2 + DEFAULT_INDENT };
  }
  const projectIndent = (_b = projectInfo.indent) !== null && _b !== void 0 ? _b : indent2 + DEFAULT_INDENT;
  let tocInfo = findYAMLSection("toc", projectIndent, lines, projectInfo.start);
  if (!tocInfo) {
    const prefix2 = " ".repeat(projectIndent);
    lines.splice(projectInfo.stop, 0, `${prefix2}toc:`);
    tocInfo = {
      start: projectInfo.stop + 1,
      stop: projectInfo.stop + 1,
      indent: projectIndent + DEFAULT_INDENT
    };
  }
  const tocIndent = (_c = tocInfo.indent) !== null && _c !== void 0 ? _c : projectIndent + DEFAULT_INDENT;
  const tocPrefix = " ".repeat(tocIndent);
  const { dir } = (0, import_node_path22.parse)(srcPath);
  const toc = tocFromProject(project, dir);
  const tocLines = [
    `${tocPrefix}# Auto-generated by \`myst init --write-toc\``,
    ...js_yaml_default.dump(toc).split(/\r\n|\r|\n/).map((line2) => `${tocPrefix}${line2}`)
  ];
  lines.splice(tocInfo.start, tocInfo.stop - tocInfo.start, ...tocLines);
  const newConfigContent = lines.join("\n");
  try {
    js_yaml_default.load(newConfigContent);
  } catch (err) {
    const errorMessage = lines.map((line2) => `    ${line2}`).join("\n");
    throw new Error(`Invalid YAML was generated when attempting to write the table-of-contents to ${dstPath}.
This should not happenm please file a bug report at https://github.com/jupyter-book/mystmd.
The invalid TOC contents are as follows:
${errorMessage}`);
  }
  import_node_fs17.default.writeFileSync(dstPath, newConfigContent);
}

// ../myst-cli/dist/project/load.js
async function loadProjectFromDisk(session, path45, opts) {
  var _a6, _b;
  path45 = path45 || (0, import_node_path23.resolve)(".");
  if (!(opts === null || opts === void 0 ? void 0 : opts.reloadProject)) {
    const cachedProject = selectors_exports.selectLocalProject(session.store.getState(), path45);
    if (cachedProject)
      return cachedProject;
  }
  await loadConfig(session, path45, opts);
  const state = session.store.getState();
  const projectConfig = selectors_exports.selectLocalProjectConfig(state, path45);
  const projectConfigFile = (_a6 = selectors_exports.selectLocalConfigFile(state, path45)) !== null && _a6 !== void 0 ? _a6 : (0, import_node_path23.join)(path45, session.configFiles[0]);
  if (!projectConfig && (opts === null || opts === void 0 ? void 0 : opts.warnOnNoConfig)) {
    addWarningForFile(session, projectConfigFile, `Loading project from path with no config file: ${path45}
Consider running "${binaryName()} init --project" in that directory`, "warn", { ruleId: RuleId.projectConfigExists });
  }
  let newProject;
  let { index: index4, writeTOC } = opts || {};
  let legacyToc = false;
  const siteConfig = selectors_exports.selectLocalSiteConfig(state, path45);
  const folders = !!((_b = siteConfig === null || siteConfig === void 0 ? void 0 : siteConfig.options) === null || _b === void 0 ? void 0 : _b.folders);
  const sphinxTOCFile = validateSphinxTOC(session, path45) ? tocFile(path45) : void 0;
  if ((projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.toc) !== void 0) {
    newProject = projectFromTOC(session, path45, projectConfig.toc, 1, projectConfigFile, {
      urlFolders: folders
    });
    if (sphinxTOCFile) {
      addWarningForFile(session, sphinxTOCFile, `Ignoring legacy Jupyter Book TOC in favor of myst.yml TOC: ${sphinxTOCFile}`, "warn", {
        ruleId: RuleId.encounteredLegacyTOC
      });
    }
    if (writeTOC)
      session.log.warn("Not writing the table of contents, it already exists!");
    writeTOC = false;
  } else if (sphinxTOCFile) {
    legacyToc = true;
    if (!writeTOC) {
      session.log.debug(`Encountered legacy Jupyter Book TOC: ${sphinxTOCFile}`);
      session.log.debug(`To upgrade to a ${readableName()} TOC, try running \`${binaryName()} init --write-toc\``);
    }
    newProject = projectFromSphinxTOC(session, path45, void 0, { urlFolders: folders });
  } else {
    const project2 = selectors_exports.selectLocalProject(state, path45);
    if (!index4 && !(project2 === null || project2 === void 0 ? void 0 : project2.implicitIndex) && (project2 === null || project2 === void 0 ? void 0 : project2.file)) {
      index4 = project2.file;
    }
    newProject = projectFromPath(session, path45, index4, { urlFolders: folders });
  }
  if (!newProject) {
    throw new Error(`Could not load project from ${path45}`);
  }
  if (writeTOC) {
    if (legacyToc) {
      session.log.info(`\u2B06\uFE0F Upgrading legacy Jupyter Book TOC to ${readableName()}: ${tocFile(path45)}`);
    }
    session.log.info(`\u{1F4BE} Writing new TOC to: ${projectConfigFile}`);
    await writeTOCToConfigFile(newProject, projectConfigFile, projectConfigFile);
  }
  const allBibFiles = getAllBibTexFilesOnPath(session, path45, getIgnoreFiles(session, path45));
  let bibliography2;
  if (projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.bibliography) {
    const bibConfigPath = `${projectConfigFile}#bibliography`;
    bibliography2 = projectConfig.bibliography.filter((bib) => {
      if (allBibFiles.includes(bib))
        return true;
      if (isUrl2(bib))
        return true;
      if (import_node_fs18.default.existsSync(bib)) {
        allBibFiles.push(bib);
        return true;
      }
      addWarningForFile(session, projectConfigFile, `Bibliography file ${bib} not found`, "warn", {
        ruleId: RuleId.bibFileExists
      });
      return false;
    });
    allBibFiles.forEach((bib) => {
      if (bibliography2.includes(bib))
        return;
      session.log.debug(`\u{1F50D} ${bib} exists, but the file is not referenced in ${bibConfigPath}`);
    });
  } else {
    bibliography2 = allBibFiles;
  }
  await Promise.all(bibliography2.map((p5) => loadFile(session, p5, path45, ".bib")));
  const project = { ...newProject, bibliography: bibliography2 };
  session.store.dispatch(projects.actions.receive(project));
  combineProjectCitationRenderers(session, path45);
  return project;
}
function filterPages(project) {
  const pages = [
    { file: project.file, slug: project.index, level: 1 },
    ...project.pages.filter((page) => "file" in page)
  ];
  return pages;
}

// ../myst-cli/dist/build/site/prepare.js
var import_node_fs33 = __toESM(require("fs"), 1);

// ../myst-cli/dist/process/site.js
var import_node_path40 = require("path");

// ../../node_modules/intersphinx/dist/intersphinx.js
var import_fs2 = __toESM(require("fs"), 1);
var import_zlib = __toESM(require("zlib"), 1);

// ../../node_modules/node-fetch/src/index.js
var import_node_http2 = __toESM(require("http"), 1);
var import_node_https = __toESM(require("https"), 1);
var import_node_zlib = __toESM(require("zlib"), 1);
var import_node_stream3 = __toESM(require("stream"), 1);
var import_node_buffer2 = require("buffer");

// ../../node_modules/data-uri-to-buffer/dist/index.js
function dataUriToBuffer(uri) {
  if (!/^data:/i.test(uri)) {
    throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")');
  }
  uri = uri.replace(/\r?\n/g, "");
  const firstComma = uri.indexOf(",");
  if (firstComma === -1 || firstComma <= 4) {
    throw new TypeError("malformed data: URI");
  }
  const meta2 = uri.substring(5, firstComma).split(";");
  let charset = "";
  let base64 = false;
  const type2 = meta2[0] || "text/plain";
  let typeFull = type2;
  for (let i2 = 1; i2 < meta2.length; i2++) {
    if (meta2[i2] === "base64") {
      base64 = true;
    } else if (meta2[i2]) {
      typeFull += `;${meta2[i2]}`;
      if (meta2[i2].indexOf("charset=") === 0) {
        charset = meta2[i2].substring(8);
      }
    }
  }
  if (!meta2[0] && !charset.length) {
    typeFull += ";charset=US-ASCII";
    charset = "US-ASCII";
  }
  const encoding = base64 ? "base64" : "ascii";
  const data = unescape(uri.substring(firstComma + 1));
  const buffer2 = Buffer.from(data, encoding);
  buffer2.type = type2;
  buffer2.typeFull = typeFull;
  buffer2.charset = charset;
  return buffer2;
}
var dist_default = dataUriToBuffer;

// ../../node_modules/node-fetch/src/body.js
var import_node_stream2 = __toESM(require("stream"), 1);
var import_node_util = require("util");
var import_node_buffer = require("buffer");
init_fetch_blob();
init_esm_min();

// ../../node_modules/node-fetch/src/errors/base.js
var FetchBaseError = class extends Error {
  constructor(message, type2) {
    super(message);
    Error.captureStackTrace(this, this.constructor);
    this.type = type2;
  }
  get name() {
    return this.constructor.name;
  }
  get [Symbol.toStringTag]() {
    return this.constructor.name;
  }
};

// ../../node_modules/node-fetch/src/errors/fetch-error.js
var FetchError = class extends FetchBaseError {
  /**
   * @param  {string} message -      Error message for human
   * @param  {string} [type] -        Error type for machine
   * @param  {SystemError} [systemError] - For Node.js system error
   */
  constructor(message, type2, systemError) {
    super(message, type2);
    if (systemError) {
      this.code = this.errno = systemError.code;
      this.erroredSysCall = systemError.syscall;
    }
  }
};

// ../../node_modules/node-fetch/src/utils/is.js
var NAME = Symbol.toStringTag;
var isURLSearchParameters = (object) => {
  return typeof object === "object" && typeof object.append === "function" && typeof object.delete === "function" && typeof object.get === "function" && typeof object.getAll === "function" && typeof object.has === "function" && typeof object.set === "function" && typeof object.sort === "function" && object[NAME] === "URLSearchParams";
};
var isBlob = (object) => {
  return object && typeof object === "object" && typeof object.arrayBuffer === "function" && typeof object.type === "string" && typeof object.stream === "function" && typeof object.constructor === "function" && /^(Blob|File)$/.test(object[NAME]);
};
var isAbortSignal = (object) => {
  return typeof object === "object" && (object[NAME] === "AbortSignal" || object[NAME] === "EventTarget");
};
var isDomainOrSubdomain = (destination, original) => {
  const orig = new URL(original).hostname;
  const dest = new URL(destination).hostname;
  return orig === dest || orig.endsWith(`.${dest}`);
};
var isSameProtocol = (destination, original) => {
  const orig = new URL(original).protocol;
  const dest = new URL(destination).protocol;
  return orig === dest;
};

// ../../node_modules/node-fetch/src/body.js
var pipeline = (0, import_node_util.promisify)(import_node_stream2.default.pipeline);
var INTERNALS = Symbol("Body internals");
var Body = class {
  constructor(body3, {
    size = 0
  } = {}) {
    let boundary = null;
    if (body3 === null) {
      body3 = null;
    } else if (isURLSearchParameters(body3)) {
      body3 = import_node_buffer.Buffer.from(body3.toString());
    } else if (isBlob(body3)) {
    } else if (import_node_buffer.Buffer.isBuffer(body3)) {
    } else if (import_node_util.types.isAnyArrayBuffer(body3)) {
      body3 = import_node_buffer.Buffer.from(body3);
    } else if (ArrayBuffer.isView(body3)) {
      body3 = import_node_buffer.Buffer.from(body3.buffer, body3.byteOffset, body3.byteLength);
    } else if (body3 instanceof import_node_stream2.default) {
    } else if (body3 instanceof FormData) {
      body3 = formDataToBlob(body3);
      boundary = body3.type.split("=")[1];
    } else {
      body3 = import_node_buffer.Buffer.from(String(body3));
    }
    let stream3 = body3;
    if (import_node_buffer.Buffer.isBuffer(body3)) {
      stream3 = import_node_stream2.default.Readable.from(body3);
    } else if (isBlob(body3)) {
      stream3 = import_node_stream2.default.Readable.from(body3.stream());
    }
    this[INTERNALS] = {
      body: body3,
      stream: stream3,
      boundary,
      disturbed: false,
      error: null
    };
    this.size = size;
    if (body3 instanceof import_node_stream2.default) {
      body3.on("error", (error_) => {
        const error = error_ instanceof FetchBaseError ? error_ : new FetchError(`Invalid response body while trying to fetch ${this.url}: ${error_.message}`, "system", error_);
        this[INTERNALS].error = error;
      });
    }
  }
  get body() {
    return this[INTERNALS].stream;
  }
  get bodyUsed() {
    return this[INTERNALS].disturbed;
  }
  /**
   * Decode response as ArrayBuffer
   *
   * @return  Promise
   */
  async arrayBuffer() {
    const { buffer: buffer2, byteOffset, byteLength: byteLength2 } = await consumeBody(this);
    return buffer2.slice(byteOffset, byteOffset + byteLength2);
  }
  async formData() {
    const ct = this.headers.get("content-type");
    if (ct.startsWith("application/x-www-form-urlencoded")) {
      const formData = new FormData();
      const parameters = new URLSearchParams(await this.text());
      for (const [name3, value] of parameters) {
        formData.append(name3, value);
      }
      return formData;
    }
    const { toFormData: toFormData2 } = await Promise.resolve().then(() => (init_multipart_parser(), multipart_parser_exports));
    return toFormData2(this.body, ct);
  }
  /**
   * Return raw response as Blob
   *
   * @return Promise
   */
  async blob() {
    const ct = this.headers && this.headers.get("content-type") || this[INTERNALS].body && this[INTERNALS].body.type || "";
    const buf = await this.arrayBuffer();
    return new fetch_blob_default([buf], {
      type: ct
    });
  }
  /**
   * Decode response as json
   *
   * @return  Promise
   */
  async json() {
    const text7 = await this.text();
    return JSON.parse(text7);
  }
  /**
   * Decode response as text
   *
   * @return  Promise
   */
  async text() {
    const buffer2 = await consumeBody(this);
    return new TextDecoder().decode(buffer2);
  }
  /**
   * Decode response as buffer (non-spec api)
   *
   * @return  Promise
   */
  buffer() {
    return consumeBody(this);
  }
};
Body.prototype.buffer = (0, import_node_util.deprecate)(Body.prototype.buffer, "Please use 'response.arrayBuffer()' instead of 'response.buffer()'", "node-fetch#buffer");
Object.defineProperties(Body.prototype, {
  body: { enumerable: true },
  bodyUsed: { enumerable: true },
  arrayBuffer: { enumerable: true },
  blob: { enumerable: true },
  json: { enumerable: true },
  text: { enumerable: true },
  data: { get: (0, import_node_util.deprecate)(
    () => {
    },
    "data doesn't exist, use json(), text(), arrayBuffer(), or body instead",
    "https://github.com/node-fetch/node-fetch/issues/1000 (response)"
  ) }
});
async function consumeBody(data) {
  if (data[INTERNALS].disturbed) {
    throw new TypeError(`body used already for: ${data.url}`);
  }
  data[INTERNALS].disturbed = true;
  if (data[INTERNALS].error) {
    throw data[INTERNALS].error;
  }
  const { body: body3 } = data;
  if (body3 === null) {
    return import_node_buffer.Buffer.alloc(0);
  }
  if (!(body3 instanceof import_node_stream2.default)) {
    return import_node_buffer.Buffer.alloc(0);
  }
  const accum = [];
  let accumBytes = 0;
  try {
    for await (const chunk of body3) {
      if (data.size > 0 && accumBytes + chunk.length > data.size) {
        const error = new FetchError(`content size at ${data.url} over limit: ${data.size}`, "max-size");
        body3.destroy(error);
        throw error;
      }
      accumBytes += chunk.length;
      accum.push(chunk);
    }
  } catch (error) {
    const error_ = error instanceof FetchBaseError ? error : new FetchError(`Invalid response body while trying to fetch ${data.url}: ${error.message}`, "system", error);
    throw error_;
  }
  if (body3.readableEnded === true || body3._readableState.ended === true) {
    try {
      if (accum.every((c) => typeof c === "string")) {
        return import_node_buffer.Buffer.from(accum.join(""));
      }
      return import_node_buffer.Buffer.concat(accum, accumBytes);
    } catch (error) {
      throw new FetchError(`Could not create Buffer from response body for ${data.url}: ${error.message}`, "system", error);
    }
  } else {
    throw new FetchError(`Premature close of server response while trying to fetch ${data.url}`);
  }
}
var clone2 = (instance, highWaterMark) => {
  let p1;
  let p22;
  let { body: body3 } = instance[INTERNALS];
  if (instance.bodyUsed) {
    throw new Error("cannot clone body after it is used");
  }
  if (body3 instanceof import_node_stream2.default && typeof body3.getBoundary !== "function") {
    p1 = new import_node_stream2.PassThrough({ highWaterMark });
    p22 = new import_node_stream2.PassThrough({ highWaterMark });
    body3.pipe(p1);
    body3.pipe(p22);
    instance[INTERNALS].stream = p1;
    body3 = p22;
  }
  return body3;
};
var getNonSpecFormDataBoundary = (0, import_node_util.deprecate)(
  (body3) => body3.getBoundary(),
  "form-data doesn't follow the spec and requires special treatment. Use alternative package",
  "https://github.com/node-fetch/node-fetch/issues/1167"
);
var extractContentType = (body3, request) => {
  if (body3 === null) {
    return null;
  }
  if (typeof body3 === "string") {
    return "text/plain;charset=UTF-8";
  }
  if (isURLSearchParameters(body3)) {
    return "application/x-www-form-urlencoded;charset=UTF-8";
  }
  if (isBlob(body3)) {
    return body3.type || null;
  }
  if (import_node_buffer.Buffer.isBuffer(body3) || import_node_util.types.isAnyArrayBuffer(body3) || ArrayBuffer.isView(body3)) {
    return null;
  }
  if (body3 instanceof FormData) {
    return `multipart/form-data; boundary=${request[INTERNALS].boundary}`;
  }
  if (body3 && typeof body3.getBoundary === "function") {
    return `multipart/form-data;boundary=${getNonSpecFormDataBoundary(body3)}`;
  }
  if (body3 instanceof import_node_stream2.default) {
    return null;
  }
  return "text/plain;charset=UTF-8";
};
var getTotalBytes = (request) => {
  const { body: body3 } = request[INTERNALS];
  if (body3 === null) {
    return 0;
  }
  if (isBlob(body3)) {
    return body3.size;
  }
  if (import_node_buffer.Buffer.isBuffer(body3)) {
    return body3.length;
  }
  if (body3 && typeof body3.getLengthSync === "function") {
    return body3.hasKnownLength && body3.hasKnownLength() ? body3.getLengthSync() : null;
  }
  return null;
};
var writeToStream = async (dest, { body: body3 }) => {
  if (body3 === null) {
    dest.end();
  } else {
    await pipeline(body3, dest);
  }
};

// ../../node_modules/node-fetch/src/headers.js
var import_node_util2 = require("util");
var import_node_http = __toESM(require("http"), 1);
var validateHeaderName = typeof import_node_http.default.validateHeaderName === "function" ? import_node_http.default.validateHeaderName : (name3) => {
  if (!/^[\^`\-\w!#$%&'*+.|~]+$/.test(name3)) {
    const error = new TypeError(`Header name must be a valid HTTP token [${name3}]`);
    Object.defineProperty(error, "code", { value: "ERR_INVALID_HTTP_TOKEN" });
    throw error;
  }
};
var validateHeaderValue = typeof import_node_http.default.validateHeaderValue === "function" ? import_node_http.default.validateHeaderValue : (name3, value) => {
  if (/[^\t\u0020-\u007E\u0080-\u00FF]/.test(value)) {
    const error = new TypeError(`Invalid character in header content ["${name3}"]`);
    Object.defineProperty(error, "code", { value: "ERR_INVALID_CHAR" });
    throw error;
  }
};
var Headers2 = class _Headers extends URLSearchParams {
  /**
   * Headers class
   *
   * @constructor
   * @param {HeadersInit} [init] - Response headers
   */
  constructor(init4) {
    let result = [];
    if (init4 instanceof _Headers) {
      const raw2 = init4.raw();
      for (const [name3, values] of Object.entries(raw2)) {
        result.push(...values.map((value) => [name3, value]));
      }
    } else if (init4 == null) {
    } else if (typeof init4 === "object" && !import_node_util2.types.isBoxedPrimitive(init4)) {
      const method = init4[Symbol.iterator];
      if (method == null) {
        result.push(...Object.entries(init4));
      } else {
        if (typeof method !== "function") {
          throw new TypeError("Header pairs must be iterable");
        }
        result = [...init4].map((pair) => {
          if (typeof pair !== "object" || import_node_util2.types.isBoxedPrimitive(pair)) {
            throw new TypeError("Each header pair must be an iterable object");
          }
          return [...pair];
        }).map((pair) => {
          if (pair.length !== 2) {
            throw new TypeError("Each header pair must be a name/value tuple");
          }
          return [...pair];
        });
      }
    } else {
      throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(sequence<sequence<ByteString>> or record<ByteString, ByteString>)");
    }
    result = result.length > 0 ? result.map(([name3, value]) => {
      validateHeaderName(name3);
      validateHeaderValue(name3, String(value));
      return [String(name3).toLowerCase(), String(value)];
    }) : void 0;
    super(result);
    return new Proxy(this, {
      get(target, p5, receiver) {
        switch (p5) {
          case "append":
          case "set":
            return (name3, value) => {
              validateHeaderName(name3);
              validateHeaderValue(name3, String(value));
              return URLSearchParams.prototype[p5].call(
                target,
                String(name3).toLowerCase(),
                String(value)
              );
            };
          case "delete":
          case "has":
          case "getAll":
            return (name3) => {
              validateHeaderName(name3);
              return URLSearchParams.prototype[p5].call(
                target,
                String(name3).toLowerCase()
              );
            };
          case "keys":
            return () => {
              target.sort();
              return new Set(URLSearchParams.prototype.keys.call(target)).keys();
            };
          default:
            return Reflect.get(target, p5, receiver);
        }
      }
    });
  }
  get [Symbol.toStringTag]() {
    return this.constructor.name;
  }
  toString() {
    return Object.prototype.toString.call(this);
  }
  get(name3) {
    const values = this.getAll(name3);
    if (values.length === 0) {
      return null;
    }
    let value = values.join(", ");
    if (/^content-encoding$/i.test(name3)) {
      value = value.toLowerCase();
    }
    return value;
  }
  forEach(callback, thisArg = void 0) {
    for (const name3 of this.keys()) {
      Reflect.apply(callback, thisArg, [this.get(name3), name3, this]);
    }
  }
  *values() {
    for (const name3 of this.keys()) {
      yield this.get(name3);
    }
  }
  /**
   * @type {() => IterableIterator<[string, string]>}
   */
  *entries() {
    for (const name3 of this.keys()) {
      yield [name3, this.get(name3)];
    }
  }
  [Symbol.iterator]() {
    return this.entries();
  }
  /**
   * Node-fetch non-spec method
   * returning all headers and their values as array
   * @returns {Record<string, string[]>}
   */
  raw() {
    return [...this.keys()].reduce((result, key2) => {
      result[key2] = this.getAll(key2);
      return result;
    }, {});
  }
  /**
   * For better console.log(headers) and also to convert Headers into Node.js Request compatible format
   */
  [Symbol.for("nodejs.util.inspect.custom")]() {
    return [...this.keys()].reduce((result, key2) => {
      const values = this.getAll(key2);
      if (key2 === "host") {
        result[key2] = values[0];
      } else {
        result[key2] = values.length > 1 ? values : values[0];
      }
      return result;
    }, {});
  }
};
Object.defineProperties(
  Headers2.prototype,
  ["get", "entries", "forEach", "values"].reduce((result, property) => {
    result[property] = { enumerable: true };
    return result;
  }, {})
);
function fromRawHeaders(headers = []) {
  return new Headers2(
    headers.reduce((result, value, index4, array) => {
      if (index4 % 2 === 0) {
        result.push(array.slice(index4, index4 + 2));
      }
      return result;
    }, []).filter(([name3, value]) => {
      try {
        validateHeaderName(name3);
        validateHeaderValue(name3, String(value));
        return true;
      } catch {
        return false;
      }
    })
  );
}

// ../../node_modules/node-fetch/src/utils/is-redirect.js
var redirectStatus = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);
var isRedirect = (code7) => {
  return redirectStatus.has(code7);
};

// ../../node_modules/node-fetch/src/response.js
var INTERNALS2 = Symbol("Response internals");
var Response = class _Response extends Body {
  constructor(body3 = null, options = {}) {
    super(body3, options);
    const status = options.status != null ? options.status : 200;
    const headers = new Headers2(options.headers);
    if (body3 !== null && !headers.has("Content-Type")) {
      const contentType = extractContentType(body3, this);
      if (contentType) {
        headers.append("Content-Type", contentType);
      }
    }
    this[INTERNALS2] = {
      type: "default",
      url: options.url,
      status,
      statusText: options.statusText || "",
      headers,
      counter: options.counter,
      highWaterMark: options.highWaterMark
    };
  }
  get type() {
    return this[INTERNALS2].type;
  }
  get url() {
    return this[INTERNALS2].url || "";
  }
  get status() {
    return this[INTERNALS2].status;
  }
  /**
   * Convenience property representing if the request ended normally
   */
  get ok() {
    return this[INTERNALS2].status >= 200 && this[INTERNALS2].status < 300;
  }
  get redirected() {
    return this[INTERNALS2].counter > 0;
  }
  get statusText() {
    return this[INTERNALS2].statusText;
  }
  get headers() {
    return this[INTERNALS2].headers;
  }
  get highWaterMark() {
    return this[INTERNALS2].highWaterMark;
  }
  /**
   * Clone this response
   *
   * @return  Response
   */
  clone() {
    return new _Response(clone2(this, this.highWaterMark), {
      type: this.type,
      url: this.url,
      status: this.status,
      statusText: this.statusText,
      headers: this.headers,
      ok: this.ok,
      redirected: this.redirected,
      size: this.size,
      highWaterMark: this.highWaterMark
    });
  }
  /**
   * @param {string} url    The URL that the new response is to originate from.
   * @param {number} status An optional status code for the response (e.g., 302.)
   * @returns {Response}    A Response object.
   */
  static redirect(url, status = 302) {
    if (!isRedirect(status)) {
      throw new RangeError('Failed to execute "redirect" on "response": Invalid status code');
    }
    return new _Response(null, {
      headers: {
        location: new URL(url).toString()
      },
      status
    });
  }
  static error() {
    const response = new _Response(null, { status: 0, statusText: "" });
    response[INTERNALS2].type = "error";
    return response;
  }
  static json(data = void 0, init4 = {}) {
    const body3 = JSON.stringify(data);
    if (body3 === void 0) {
      throw new TypeError("data is not JSON serializable");
    }
    const headers = new Headers2(init4 && init4.headers);
    if (!headers.has("content-type")) {
      headers.set("content-type", "application/json");
    }
    return new _Response(body3, {
      ...init4,
      headers
    });
  }
  get [Symbol.toStringTag]() {
    return "Response";
  }
};
Object.defineProperties(Response.prototype, {
  type: { enumerable: true },
  url: { enumerable: true },
  status: { enumerable: true },
  ok: { enumerable: true },
  redirected: { enumerable: true },
  statusText: { enumerable: true },
  headers: { enumerable: true },
  clone: { enumerable: true }
});

// ../../node_modules/node-fetch/src/request.js
var import_node_url2 = require("url");
var import_node_util3 = require("util");

// ../../node_modules/node-fetch/src/utils/get-search.js
var getSearch = (parsedURL) => {
  if (parsedURL.search) {
    return parsedURL.search;
  }
  const lastOffset = parsedURL.href.length - 1;
  const hash = parsedURL.hash || (parsedURL.href[lastOffset] === "#" ? "#" : "");
  return parsedURL.href[lastOffset - hash.length] === "?" ? "?" : "";
};

// ../../node_modules/node-fetch/src/utils/referrer.js
var import_node_net = require("net");
function stripURLForUseAsAReferrer(url, originOnly = false) {
  if (url == null) {
    return "no-referrer";
  }
  url = new URL(url);
  if (/^(about|blob|data):$/.test(url.protocol)) {
    return "no-referrer";
  }
  url.username = "";
  url.password = "";
  url.hash = "";
  if (originOnly) {
    url.pathname = "";
    url.search = "";
  }
  return url;
}
var ReferrerPolicy = /* @__PURE__ */ new Set([
  "",
  "no-referrer",
  "no-referrer-when-downgrade",
  "same-origin",
  "origin",
  "strict-origin",
  "origin-when-cross-origin",
  "strict-origin-when-cross-origin",
  "unsafe-url"
]);
var DEFAULT_REFERRER_POLICY = "strict-origin-when-cross-origin";
function validateReferrerPolicy(referrerPolicy) {
  if (!ReferrerPolicy.has(referrerPolicy)) {
    throw new TypeError(`Invalid referrerPolicy: ${referrerPolicy}`);
  }
  return referrerPolicy;
}
function isOriginPotentiallyTrustworthy(url) {
  if (/^(http|ws)s:$/.test(url.protocol)) {
    return true;
  }
  const hostIp = url.host.replace(/(^\[)|(]$)/g, "");
  const hostIPVersion = (0, import_node_net.isIP)(hostIp);
  if (hostIPVersion === 4 && /^127\./.test(hostIp)) {
    return true;
  }
  if (hostIPVersion === 6 && /^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(hostIp)) {
    return true;
  }
  if (url.host === "localhost" || url.host.endsWith(".localhost")) {
    return false;
  }
  if (url.protocol === "file:") {
    return true;
  }
  return false;
}
function isUrlPotentiallyTrustworthy(url) {
  if (/^about:(blank|srcdoc)$/.test(url)) {
    return true;
  }
  if (url.protocol === "data:") {
    return true;
  }
  if (/^(blob|filesystem):$/.test(url.protocol)) {
    return true;
  }
  return isOriginPotentiallyTrustworthy(url);
}
function determineRequestsReferrer(request, { referrerURLCallback, referrerOriginCallback } = {}) {
  if (request.referrer === "no-referrer" || request.referrerPolicy === "") {
    return null;
  }
  const policy = request.referrerPolicy;
  if (request.referrer === "about:client") {
    return "no-referrer";
  }
  const referrerSource = request.referrer;
  let referrerURL = stripURLForUseAsAReferrer(referrerSource);
  let referrerOrigin = stripURLForUseAsAReferrer(referrerSource, true);
  if (referrerURL.toString().length > 4096) {
    referrerURL = referrerOrigin;
  }
  if (referrerURLCallback) {
    referrerURL = referrerURLCallback(referrerURL);
  }
  if (referrerOriginCallback) {
    referrerOrigin = referrerOriginCallback(referrerOrigin);
  }
  const currentURL = new URL(request.url);
  switch (policy) {
    case "no-referrer":
      return "no-referrer";
    case "origin":
      return referrerOrigin;
    case "unsafe-url":
      return referrerURL;
    case "strict-origin":
      if (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) {
        return "no-referrer";
      }
      return referrerOrigin.toString();
    case "strict-origin-when-cross-origin":
      if (referrerURL.origin === currentURL.origin) {
        return referrerURL;
      }
      if (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) {
        return "no-referrer";
      }
      return referrerOrigin;
    case "same-origin":
      if (referrerURL.origin === currentURL.origin) {
        return referrerURL;
      }
      return "no-referrer";
    case "origin-when-cross-origin":
      if (referrerURL.origin === currentURL.origin) {
        return referrerURL;
      }
      return referrerOrigin;
    case "no-referrer-when-downgrade":
      if (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) {
        return "no-referrer";
      }
      return referrerURL;
    default:
      throw new TypeError(`Invalid referrerPolicy: ${policy}`);
  }
}
function parseReferrerPolicyFromHeader(headers) {
  const policyTokens = (headers.get("referrer-policy") || "").split(/[,\s]+/);
  let policy = "";
  for (const token of policyTokens) {
    if (token && ReferrerPolicy.has(token)) {
      policy = token;
    }
  }
  return policy;
}

// ../../node_modules/node-fetch/src/request.js
var INTERNALS3 = Symbol("Request internals");
var isRequest = (object) => {
  return typeof object === "object" && typeof object[INTERNALS3] === "object";
};
var doBadDataWarn = (0, import_node_util3.deprecate)(
  () => {
  },
  ".data is not a valid RequestInit property, use .body instead",
  "https://github.com/node-fetch/node-fetch/issues/1000 (request)"
);
var Request2 = class _Request extends Body {
  constructor(input3, init4 = {}) {
    let parsedURL;
    if (isRequest(input3)) {
      parsedURL = new URL(input3.url);
    } else {
      parsedURL = new URL(input3);
      input3 = {};
    }
    if (parsedURL.username !== "" || parsedURL.password !== "") {
      throw new TypeError(`${parsedURL} is an url with embedded credentials.`);
    }
    let method = init4.method || input3.method || "GET";
    if (/^(delete|get|head|options|post|put)$/i.test(method)) {
      method = method.toUpperCase();
    }
    if (!isRequest(init4) && "data" in init4) {
      doBadDataWarn();
    }
    if ((init4.body != null || isRequest(input3) && input3.body !== null) && (method === "GET" || method === "HEAD")) {
      throw new TypeError("Request with GET/HEAD method cannot have body");
    }
    const inputBody = init4.body ? init4.body : isRequest(input3) && input3.body !== null ? clone2(input3) : null;
    super(inputBody, {
      size: init4.size || input3.size || 0
    });
    const headers = new Headers2(init4.headers || input3.headers || {});
    if (inputBody !== null && !headers.has("Content-Type")) {
      const contentType = extractContentType(inputBody, this);
      if (contentType) {
        headers.set("Content-Type", contentType);
      }
    }
    let signal = isRequest(input3) ? input3.signal : null;
    if ("signal" in init4) {
      signal = init4.signal;
    }
    if (signal != null && !isAbortSignal(signal)) {
      throw new TypeError("Expected signal to be an instanceof AbortSignal or EventTarget");
    }
    let referrer = init4.referrer == null ? input3.referrer : init4.referrer;
    if (referrer === "") {
      referrer = "no-referrer";
    } else if (referrer) {
      const parsedReferrer = new URL(referrer);
      referrer = /^about:(\/\/)?client$/.test(parsedReferrer) ? "client" : parsedReferrer;
    } else {
      referrer = void 0;
    }
    this[INTERNALS3] = {
      method,
      redirect: init4.redirect || input3.redirect || "follow",
      headers,
      parsedURL,
      signal,
      referrer
    };
    this.follow = init4.follow === void 0 ? input3.follow === void 0 ? 20 : input3.follow : init4.follow;
    this.compress = init4.compress === void 0 ? input3.compress === void 0 ? true : input3.compress : init4.compress;
    this.counter = init4.counter || input3.counter || 0;
    this.agent = init4.agent || input3.agent;
    this.highWaterMark = init4.highWaterMark || input3.highWaterMark || 16384;
    this.insecureHTTPParser = init4.insecureHTTPParser || input3.insecureHTTPParser || false;
    this.referrerPolicy = init4.referrerPolicy || input3.referrerPolicy || "";
  }
  /** @returns {string} */
  get method() {
    return this[INTERNALS3].method;
  }
  /** @returns {string} */
  get url() {
    return (0, import_node_url2.format)(this[INTERNALS3].parsedURL);
  }
  /** @returns {Headers} */
  get headers() {
    return this[INTERNALS3].headers;
  }
  get redirect() {
    return this[INTERNALS3].redirect;
  }
  /** @returns {AbortSignal} */
  get signal() {
    return this[INTERNALS3].signal;
  }
  // https://fetch.spec.whatwg.org/#dom-request-referrer
  get referrer() {
    if (this[INTERNALS3].referrer === "no-referrer") {
      return "";
    }
    if (this[INTERNALS3].referrer === "client") {
      return "about:client";
    }
    if (this[INTERNALS3].referrer) {
      return this[INTERNALS3].referrer.toString();
    }
    return void 0;
  }
  get referrerPolicy() {
    return this[INTERNALS3].referrerPolicy;
  }
  set referrerPolicy(referrerPolicy) {
    this[INTERNALS3].referrerPolicy = validateReferrerPolicy(referrerPolicy);
  }
  /**
   * Clone this request
   *
   * @return  Request
   */
  clone() {
    return new _Request(this);
  }
  get [Symbol.toStringTag]() {
    return "Request";
  }
};
Object.defineProperties(Request2.prototype, {
  method: { enumerable: true },
  url: { enumerable: true },
  headers: { enumerable: true },
  redirect: { enumerable: true },
  clone: { enumerable: true },
  signal: { enumerable: true },
  referrer: { enumerable: true },
  referrerPolicy: { enumerable: true }
});
var getNodeRequestOptions = (request) => {
  const { parsedURL } = request[INTERNALS3];
  const headers = new Headers2(request[INTERNALS3].headers);
  if (!headers.has("Accept")) {
    headers.set("Accept", "*/*");
  }
  let contentLengthValue = null;
  if (request.body === null && /^(post|put)$/i.test(request.method)) {
    contentLengthValue = "0";
  }
  if (request.body !== null) {
    const totalBytes = getTotalBytes(request);
    if (typeof totalBytes === "number" && !Number.isNaN(totalBytes)) {
      contentLengthValue = String(totalBytes);
    }
  }
  if (contentLengthValue) {
    headers.set("Content-Length", contentLengthValue);
  }
  if (request.referrerPolicy === "") {
    request.referrerPolicy = DEFAULT_REFERRER_POLICY;
  }
  if (request.referrer && request.referrer !== "no-referrer") {
    request[INTERNALS3].referrer = determineRequestsReferrer(request);
  } else {
    request[INTERNALS3].referrer = "no-referrer";
  }
  if (request[INTERNALS3].referrer instanceof URL) {
    headers.set("Referer", request.referrer);
  }
  if (!headers.has("User-Agent")) {
    headers.set("User-Agent", "node-fetch");
  }
  if (request.compress && !headers.has("Accept-Encoding")) {
    headers.set("Accept-Encoding", "gzip, deflate, br");
  }
  let { agent } = request;
  if (typeof agent === "function") {
    agent = agent(parsedURL);
  }
  const search4 = getSearch(parsedURL);
  const options = {
    // Overwrite search to retain trailing ? (issue #776)
    path: parsedURL.pathname + search4,
    // The following options are not expressed in the URL
    method: request.method,
    headers: headers[Symbol.for("nodejs.util.inspect.custom")](),
    insecureHTTPParser: request.insecureHTTPParser,
    agent
  };
  return {
    /** @type {URL} */
    parsedURL,
    options
  };
};

// ../../node_modules/node-fetch/src/errors/abort-error.js
var AbortError = class extends FetchBaseError {
  constructor(message, type2 = "aborted") {
    super(message, type2);
  }
};

// ../../node_modules/node-fetch/src/index.js
init_esm_min();
init_from();
var supportedSchemas = /* @__PURE__ */ new Set(["data:", "http:", "https:"]);
async function fetch2(url, options_) {
  return new Promise((resolve9, reject) => {
    const request = new Request2(url, options_);
    const { parsedURL, options } = getNodeRequestOptions(request);
    if (!supportedSchemas.has(parsedURL.protocol)) {
      throw new TypeError(`node-fetch cannot load ${url}. URL scheme "${parsedURL.protocol.replace(/:$/, "")}" is not supported.`);
    }
    if (parsedURL.protocol === "data:") {
      const data = dist_default(request.url);
      const response2 = new Response(data, { headers: { "Content-Type": data.typeFull } });
      resolve9(response2);
      return;
    }
    const send = (parsedURL.protocol === "https:" ? import_node_https.default : import_node_http2.default).request;
    const { signal } = request;
    let response = null;
    const abort = () => {
      const error = new AbortError("The operation was aborted.");
      reject(error);
      if (request.body && request.body instanceof import_node_stream3.default.Readable) {
        request.body.destroy(error);
      }
      if (!response || !response.body) {
        return;
      }
      response.body.emit("error", error);
    };
    if (signal && signal.aborted) {
      abort();
      return;
    }
    const abortAndFinalize = () => {
      abort();
      finalize2();
    };
    const request_ = send(parsedURL.toString(), options);
    if (signal) {
      signal.addEventListener("abort", abortAndFinalize);
    }
    const finalize2 = () => {
      request_.abort();
      if (signal) {
        signal.removeEventListener("abort", abortAndFinalize);
      }
    };
    request_.on("error", (error) => {
      reject(new FetchError(`request to ${request.url} failed, reason: ${error.message}`, "system", error));
      finalize2();
    });
    fixResponseChunkedTransferBadEnding(request_, (error) => {
      if (response && response.body) {
        response.body.destroy(error);
      }
    });
    if (process.version < "v14") {
      request_.on("socket", (s5) => {
        let endedWithEventsCount;
        s5.prependListener("end", () => {
          endedWithEventsCount = s5._eventsCount;
        });
        s5.prependListener("close", (hadError) => {
          if (response && endedWithEventsCount < s5._eventsCount && !hadError) {
            const error = new Error("Premature close");
            error.code = "ERR_STREAM_PREMATURE_CLOSE";
            response.body.emit("error", error);
          }
        });
      });
    }
    request_.on("response", (response_) => {
      request_.setTimeout(0);
      const headers = fromRawHeaders(response_.rawHeaders);
      if (isRedirect(response_.statusCode)) {
        const location4 = headers.get("Location");
        let locationURL = null;
        try {
          locationURL = location4 === null ? null : new URL(location4, request.url);
        } catch {
          if (request.redirect !== "manual") {
            reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location4}`, "invalid-redirect"));
            finalize2();
            return;
          }
        }
        switch (request.redirect) {
          case "error":
            reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, "no-redirect"));
            finalize2();
            return;
          case "manual":
            break;
          case "follow": {
            if (locationURL === null) {
              break;
            }
            if (request.counter >= request.follow) {
              reject(new FetchError(`maximum redirect reached at: ${request.url}`, "max-redirect"));
              finalize2();
              return;
            }
            const requestOptions = {
              headers: new Headers2(request.headers),
              follow: request.follow,
              counter: request.counter + 1,
              agent: request.agent,
              compress: request.compress,
              method: request.method,
              body: clone2(request),
              signal: request.signal,
              size: request.size,
              referrer: request.referrer,
              referrerPolicy: request.referrerPolicy
            };
            if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {
              for (const name3 of ["authorization", "www-authenticate", "cookie", "cookie2"]) {
                requestOptions.headers.delete(name3);
              }
            }
            if (response_.statusCode !== 303 && request.body && options_.body instanceof import_node_stream3.default.Readable) {
              reject(new FetchError("Cannot follow redirect with body being a readable stream", "unsupported-redirect"));
              finalize2();
              return;
            }
            if (response_.statusCode === 303 || (response_.statusCode === 301 || response_.statusCode === 302) && request.method === "POST") {
              requestOptions.method = "GET";
              requestOptions.body = void 0;
              requestOptions.headers.delete("content-length");
            }
            const responseReferrerPolicy = parseReferrerPolicyFromHeader(headers);
            if (responseReferrerPolicy) {
              requestOptions.referrerPolicy = responseReferrerPolicy;
            }
            resolve9(fetch2(new Request2(locationURL, requestOptions)));
            finalize2();
            return;
          }
          default:
            return reject(new TypeError(`Redirect option '${request.redirect}' is not a valid value of RequestRedirect`));
        }
      }
      if (signal) {
        response_.once("end", () => {
          signal.removeEventListener("abort", abortAndFinalize);
        });
      }
      let body3 = (0, import_node_stream3.pipeline)(response_, new import_node_stream3.PassThrough(), (error) => {
        if (error) {
          reject(error);
        }
      });
      if (process.version < "v12.10") {
        response_.on("aborted", abortAndFinalize);
      }
      const responseOptions = {
        url: request.url,
        status: response_.statusCode,
        statusText: response_.statusMessage,
        headers,
        size: request.size,
        counter: request.counter,
        highWaterMark: request.highWaterMark
      };
      const codings = headers.get("Content-Encoding");
      if (!request.compress || request.method === "HEAD" || codings === null || response_.statusCode === 204 || response_.statusCode === 304) {
        response = new Response(body3, responseOptions);
        resolve9(response);
        return;
      }
      const zlibOptions = {
        flush: import_node_zlib.default.Z_SYNC_FLUSH,
        finishFlush: import_node_zlib.default.Z_SYNC_FLUSH
      };
      if (codings === "gzip" || codings === "x-gzip") {
        body3 = (0, import_node_stream3.pipeline)(body3, import_node_zlib.default.createGunzip(zlibOptions), (error) => {
          if (error) {
            reject(error);
          }
        });
        response = new Response(body3, responseOptions);
        resolve9(response);
        return;
      }
      if (codings === "deflate" || codings === "x-deflate") {
        const raw2 = (0, import_node_stream3.pipeline)(response_, new import_node_stream3.PassThrough(), (error) => {
          if (error) {
            reject(error);
          }
        });
        raw2.once("data", (chunk) => {
          if ((chunk[0] & 15) === 8) {
            body3 = (0, import_node_stream3.pipeline)(body3, import_node_zlib.default.createInflate(), (error) => {
              if (error) {
                reject(error);
              }
            });
          } else {
            body3 = (0, import_node_stream3.pipeline)(body3, import_node_zlib.default.createInflateRaw(), (error) => {
              if (error) {
                reject(error);
              }
            });
          }
          response = new Response(body3, responseOptions);
          resolve9(response);
        });
        raw2.once("end", () => {
          if (!response) {
            response = new Response(body3, responseOptions);
            resolve9(response);
          }
        });
        return;
      }
      if (codings === "br") {
        body3 = (0, import_node_stream3.pipeline)(body3, import_node_zlib.default.createBrotliDecompress(), (error) => {
          if (error) {
            reject(error);
          }
        });
        response = new Response(body3, responseOptions);
        resolve9(response);
        return;
      }
      response = new Response(body3, responseOptions);
      resolve9(response);
    });
    writeToStream(request_, request).catch(reject);
  });
}
function fixResponseChunkedTransferBadEnding(request, errorCallback) {
  const LAST_CHUNK = import_node_buffer2.Buffer.from("0\r\n\r\n");
  let isChunkedTransfer = false;
  let properLastChunkReceived = false;
  let previousChunk;
  request.on("response", (response) => {
    const { headers } = response;
    isChunkedTransfer = headers["transfer-encoding"] === "chunked" && !headers["content-length"];
  });
  request.on("socket", (socket) => {
    const onSocketClose = () => {
      if (isChunkedTransfer && !properLastChunkReceived) {
        const error = new Error("Premature close");
        error.code = "ERR_STREAM_PREMATURE_CLOSE";
        errorCallback(error);
      }
    };
    const onData = (buf) => {
      properLastChunkReceived = import_node_buffer2.Buffer.compare(buf.slice(-5), LAST_CHUNK) === 0;
      if (!properLastChunkReceived && previousChunk) {
        properLastChunkReceived = import_node_buffer2.Buffer.compare(previousChunk.slice(-3), LAST_CHUNK.slice(0, 3)) === 0 && import_node_buffer2.Buffer.compare(buf.slice(-2), LAST_CHUNK.slice(3)) === 0;
      }
      previousChunk = buf;
    };
    socket.prependListener("close", onSocketClose);
    socket.on("data", onData);
    request.on("close", () => {
      socket.removeListener("close", onSocketClose);
      socket.removeListener("data", onData);
    });
  });
}

// ../../node_modules/intersphinx/node_modules/myst-cli-utils/dist/isUrl.js
function isUrl5(url) {
  if (!url)
    return false;
  try {
    const parsed = new URL(url);
    return parsed.protocol.includes("http");
  } catch (error) {
    return false;
  }
}

// ../../node_modules/intersphinx/dist/intersphinx.js
var DEFAULT_INV_NAME = "objects.inv";
function escape4(string2) {
  var _a6;
  return (_a6 = string2 === null || string2 === void 0 ? void 0 : string2.replace(/\s+/g, " ")) !== null && _a6 !== void 0 ? _a6 : "";
}
var Inventory = class {
  constructor(opts) {
    this.invName = DEFAULT_INV_NAME;
    this._loaded = false;
    if (opts === null || opts === void 0 ? void 0 : opts.id)
      this.id = opts === null || opts === void 0 ? void 0 : opts.id;
    if (opts === null || opts === void 0 ? void 0 : opts.project)
      this.project = opts === null || opts === void 0 ? void 0 : opts.project;
    if (opts === null || opts === void 0 ? void 0 : opts.version)
      this.version = opts === null || opts === void 0 ? void 0 : opts.version;
    if ((opts === null || opts === void 0 ? void 0 : opts.path) && isUrl5(opts === null || opts === void 0 ? void 0 : opts.path)) {
      this.path = opts === null || opts === void 0 ? void 0 : opts.path.replace(/\/$/, "");
      if (this.path.endsWith(".inv") && !(opts === null || opts === void 0 ? void 0 : opts.invName)) {
        const parts = this.path.split("/");
        this.invName = parts.pop();
        this.path = parts.join("/");
      } else {
        this.invName = (opts === null || opts === void 0 ? void 0 : opts.invName) || DEFAULT_INV_NAME;
      }
    } else if (opts === null || opts === void 0 ? void 0 : opts.path) {
      this.path = opts === null || opts === void 0 ? void 0 : opts.path;
    }
    this.data = {};
  }
  /**
   * See https://github.com/sphinx-doc/sphinx/blob/5e9550c78e3421dd7dcab037021d996841178f67/sphinx/util/inventory.py#L154
   */
  write(path45) {
    const header = [
      `# Sphinx inventory version 2`,
      `# Project: ${escape4(this.project)}`,
      `# Version: ${escape4(this.version)}`,
      `# The remainder of this file is compressed using zlib.`
    ].join("\n");
    const priority = -1;
    const references = Object.entries(this.data).map(([domainName, domain]) => {
      return Object.entries(domain).map(([name3, { display, location: location4 }]) => {
        return `${name3} ${domainName} ${priority} ${location4} ${display || "-"}
`;
      });
    }).flat().join("");
    const data = import_zlib.default.deflateSync(references);
    import_fs2.default.writeFileSync(path45, `${header}\r
${data.toString("binary")}`, { encoding: "binary" });
  }
  async load() {
    if (this._loaded)
      return;
    let buffer2;
    if (!this.path) {
      throw new Error("Inventory path must be specified to load an object");
    }
    if (isUrl5(this.path)) {
      const url = `${this.path}/${this.invName}`;
      const res = await fetch2(url);
      if (!res.ok) {
        throw new Error(`Error fetching intersphinx from "${url}": ${res.status} ${res.statusText}`);
      }
      const arrayBuffer = await res.arrayBuffer();
      buffer2 = Buffer.from(arrayBuffer);
    } else {
      buffer2 = import_fs2.default.readFileSync(this.path);
    }
    const str2 = buffer2.toString("binary");
    const [header, projectInfo, versionInfo, zlibInfo, ...rest] = str2.split("\n");
    if (!header.includes("version 2")) {
      throw new Error("Can only read version 2 inv files");
    }
    if (!zlibInfo.includes("compressed using zlib")) {
      throw new Error('Last line of header must include: "compressed using zlib"');
    }
    this.project = projectInfo.slice(11).trim();
    this.version = versionInfo.slice(11).trim();
    const compressed = Buffer.from(rest.join("\n"), "binary");
    const re = import_zlib.default.inflateSync(compressed);
    re.toString().split("\n").forEach((s5) => {
      const pattern = /(.+?)\s+(\S+)\s+(-?\d+)\s+?(\S*)\s+(.*)/;
      const match3 = s5.match(pattern);
      if (!match3)
        return;
      const [, name3, type2, priority, location4, display] = match3;
      if (!type2.includes(":")) {
        return;
      }
      if (type2 === "py:module" && this.getEntry({ type: type2, name: name3 })) {
        return;
      }
      this.setEntry({ type: type2, name: name3, location: location4, display });
    });
    this._loaded = true;
  }
  setEntry(entry) {
    if (!this.data[entry.type])
      this.data[entry.type] = {};
    let resolvedLocation = entry.location;
    if (resolvedLocation.startsWith("/")) {
      resolvedLocation = resolvedLocation.slice(1);
    }
    if (resolvedLocation.endsWith("$")) {
      resolvedLocation = resolvedLocation.slice(0, -1) + entry.name.toLowerCase().replace(/\s+/g, "-");
    }
    const resolvedDisplay = !entry.display || entry.display.trim() === "-" ? void 0 : entry.display.trim();
    this.data[entry.type][entry.name] = { location: resolvedLocation, display: resolvedDisplay };
  }
  getEntry(opts) {
    var _a6;
    if (!opts.type) {
      const type2 = Object.keys(this.data).find((t2) => !!this.data[t2][opts.name]);
      if (!type2)
        return void 0;
      return this.getEntry({ type: type2, name: opts.name });
    }
    const entry = (_a6 = this.data[opts.type]) === null || _a6 === void 0 ? void 0 : _a6[opts.name];
    if (!entry)
      return void 0;
    return { type: opts.type, location: `${this.path}/${entry.location}`, display: entry.display };
  }
  get numEntries() {
    return Object.keys(this.data).reduce((a2, b) => a2 + Object.keys(this.data[b]).length, 0);
  }
};

// ../../node_modules/intersphinx/dist/types.js
var Domains;
(function(Domains2) {
  Domains2["stdDoc"] = "std:doc";
  Domains2["stdLabel"] = "std:label";
  Domains2["stdTerm"] = "std:term";
  Domains2["stdEnvvar"] = "std:envvar";
  Domains2["stdCmdoption"] = "std:cmdoption";
  Domains2["stdOpcode"] = "std:opcode";
  Domains2["stdToken"] = "std:token";
  Domains2["stdPdbcommand"] = "std:pdbcommand";
  Domains2["std2to3fixer"] = "std:2to3fixer";
  Domains2["pyException"] = "py:exception";
  Domains2["pyAttribute"] = "py:attribute";
  Domains2["pyMethod"] = "py:method";
  Domains2["pyData"] = "py:data";
  Domains2["pyModule"] = "py:module";
  Domains2["pyFunction"] = "py:function";
  Domains2["pyClass"] = "py:class";
  Domains2["cVar"] = "c:var";
  Domains2["cType"] = "c:type";
  Domains2["cFunction"] = "c:function";
  Domains2["cMember"] = "c:member";
  Domains2["cMacro"] = "c:macro";
})(Domains || (Domains = {}));

// ../myst-cli/dist/build/site/manifest.js
var import_node_fs25 = __toESM(require("fs"), 1);
var import_node_path30 = __toESM(require("path"), 1);

// ../myst-cli/dist/spec-version.js
var SPEC_VERSION = 2;

// ../myst-cli/dist/build/site/template.js
var import_node_fs23 = __toESM(require("fs"), 1);
var import_node_path27 = require("path");

// ../myst-templates/dist/template.js
var import_node_fs22 = __toESM(require("fs"), 1);
var import_node_path26 = require("path");

// ../myst-templates/dist/download.js
var import_node_fs20 = __toESM(require("fs"), 1);
var import_node_path24 = require("path");
var import_node_crypto4 = require("crypto");
var import_adm_zip = __toESM(require_adm_zip(), 1);
var TEMPLATE_YML = "template.yml";
var KIND_TO_EXT = {
  tex: ".tex",
  typst: ".typ",
  docx: void 0,
  site: void 0
};
var DEFAULT_TEMPLATES = {
  tex: "tex/myst/plain_latex",
  typst: "typst/myst/lapreprint-typst",
  docx: "docx/myst/default",
  site: "site/myst/book-theme"
};
var PARTIAL_TEMPLATE_REGEX = /^[a-zA-Z0-9_-]+$/;
var TEMPLATE_REGEX = /^[a-zA-Z0-9_-]+\/[a-zA-Z0-9_-]+$/;
var FULL_TEMPLATE_REGEX = /^(site|tex|typst|docx)\/[a-zA-Z0-9_-]+\/[a-zA-Z0-9_-]+$/;
function normalizeTemplateName(opts) {
  const { template } = opts;
  const kind = opts.kind;
  if (!template && kind) {
    return DEFAULT_TEMPLATES[kind];
  }
  if ((template === null || template === void 0 ? void 0 : template.match(PARTIAL_TEMPLATE_REGEX)) && kind) {
    return `${kind}/myst/${template}`;
  }
  if ((template === null || template === void 0 ? void 0 : template.match(TEMPLATE_REGEX)) && kind) {
    return `${kind}/${template}`;
  }
  if (template === null || template === void 0 ? void 0 : template.match(FULL_TEMPLATE_REGEX)) {
    return template;
  }
  if (!template || !kind)
    throw new Error('You must specify a template kind, for example, "--tex"');
  return template;
}
function templatesUrl(session) {
  return `${session.API_URL}/templates`;
}
function listingUrl(session, kind) {
  return `${templatesUrl(session)}/${kind !== null && kind !== void 0 ? kind : TemplateKind.tex}`;
}
function defaultUrl(session, template) {
  return `${templatesUrl(session)}/${template}`;
}
function defaultPath(template, hash, opts) {
  const { kind, buildDir } = opts;
  const subdirs = [];
  if (buildDir)
    subdirs.push(buildDir);
  subdirs.push("templates");
  if (hash) {
    if (kind)
      subdirs.push(kind);
    subdirs.push((0, import_node_crypto4.createHash)("sha256").update(template).digest("hex"));
  } else {
    subdirs.push((0, import_node_path24.join)(...template.split("/")));
  }
  return (0, import_node_path24.join)(...subdirs);
}
function resolveInputs(session, opts) {
  let templateUrl;
  let templatePath;
  if (opts.template && import_node_fs20.default.existsSync(opts.template)) {
    const { base: base5, dir } = (0, import_node_path24.parse)(opts.template);
    if (base5 === TEMPLATE_YML || Object.values(KIND_TO_EXT).filter(Boolean).includes((0, import_node_path24.extname)(base5))) {
      templatePath = dir;
    } else if (import_node_fs20.default.lstatSync(opts.template).isDirectory()) {
      if (import_node_fs20.default.existsSync((0, import_node_path24.join)(opts.template, TEMPLATE_YML))) {
        templatePath = opts.template;
      }
    }
    if (templatePath) {
      return { templatePath, templateUrl };
    }
  }
  templateUrl = validateUrl(opts.template, { messages: {}, suppressErrors: true, property: "" });
  if (templateUrl) {
    templatePath = defaultPath(templateUrl, true, opts);
    return { templatePath, templateUrl };
  }
  const templateNormalized = normalizeTemplateName(opts);
  if (templateNormalized) {
    templateUrl = defaultUrl(session, templateNormalized);
    templatePath = defaultPath(templateNormalized, false, opts);
    return { templatePath, templateUrl };
  }
  throw new Error(`Unable to resolve template from: ${opts.template}`);
}
async function unnestTemplate(session, path45) {
  var _a6;
  const content3 = import_node_fs20.default.readdirSync(path45);
  if (content3.includes(TEMPLATE_YML))
    return;
  let nestedPath;
  content3.forEach((dir) => {
    const templateYmlFile2 = (0, import_node_path24.join)(path45, dir, TEMPLATE_YML);
    if (!nestedPath && import_node_fs20.default.existsSync(templateYmlFile2)) {
      nestedPath = (0, import_node_path24.join)(path45, dir);
    }
  });
  if (!nestedPath)
    return;
  const templateYmlFile = (0, import_node_path24.join)(nestedPath, TEMPLATE_YML);
  import_node_fs20.default.copyFileSync(templateYmlFile, (0, import_node_path24.join)(path45, TEMPLATE_YML));
  const templateYml = js_yaml_default.load(import_node_fs20.default.readFileSync(templateYmlFile).toString());
  if ((_a6 = templateYml.files) === null || _a6 === void 0 ? void 0 : _a6.length) {
    await Promise.all(templateYml.files.map(async (file) => {
      const resolvedEntry = [...nestedPath.split(import_node_path24.sep), file].join("/");
      const matches4 = await glob(resolvedEntry);
      matches4.map((match3) => match3.split("/").join(import_node_path24.sep)).filter((match3) => !isDirectory(match3)).forEach((match3) => {
        copyFileMaintainPath(session, match3, nestedPath, path45);
      });
    }));
  }
}
async function downloadTemplate(session, opts) {
  const { templatePath, templateUrl } = opts;
  let downloadUrl;
  if (templateUrl.endsWith(".zip") || templateUrl.endsWith(".git")) {
    downloadUrl = templateUrl;
  } else {
    downloadUrl = await fetchTemplateDownloadLink(session, opts);
  }
  if (downloadUrl.endsWith(".git")) {
    const branch = opts.branch || "main";
    if (branch !== "main") {
      session.log.warn(`\u{1F477} Warning, using a branch: ${branch}`);
    }
    const urlBase = downloadUrl.substring(0, downloadUrl.length - 4);
    downloadUrl = `${urlBase}/archive/refs/heads/${branch}.zip`;
  }
  await downloadAndUnzipTemplate(session, downloadUrl, opts);
  session.log.info(`\u{1F4BE} Saved template to path ${templatePath}`);
}
async function fetchTemplateDownloadLink(session, opts) {
  const { templateUrl } = opts;
  session.log.info(`\u{1F50D} Querying template metadata from ${templateUrl}`);
  const resLink = await session.fetch(templateUrl);
  if (!resLink.ok) {
    throw new Error(`Problem with template link "${templateUrl}": ${resLink.status} ${resLink.statusText}`);
  }
  const { links: links2 } = await resLink.json();
  if (!(links2 === null || links2 === void 0 ? void 0 : links2.download)) {
    throw new Error(`Problem with template link "${templateUrl}": No download link in response`);
  }
  if (!links2.download.endsWith(".zip") && !links2.download.endsWith(".git")) {
    throw new Error(`Problem with template link "${templateUrl}": Download link must zip or git`);
  }
  return links2.download;
}
async function downloadAndUnzipTemplate(session, downloadUrl, opts) {
  session.log.info(`\u{1F415} Fetching template from ${downloadUrl}`);
  const res = await session.fetch(downloadUrl);
  if (!res.ok) {
    throw new Error(`Problem downloading template "${downloadUrl}": ${res.status} ${res.statusText}`);
  }
  const { templatePath } = opts;
  const zipFile = (0, import_node_path24.join)(templatePath, "template.zip");
  (0, import_node_fs20.mkdirSync)(templatePath, { recursive: true });
  const fileStream = (0, import_node_fs20.createWriteStream)(zipFile);
  await new Promise((resolve9, reject) => {
    var _a6, _b;
    (_a6 = res.body) === null || _a6 === void 0 ? void 0 : _a6.pipe(fileStream);
    (_b = res.body) === null || _b === void 0 ? void 0 : _b.on("error", reject);
    fileStream.on("finish", resolve9);
  });
  session.log.debug(`Unzipping template on disk ${zipFile}`);
  const zip2 = new import_adm_zip.default(zipFile);
  zip2.extractAllTo(templatePath);
  await unnestTemplate(session, templatePath);
}
async function fetchPublicTemplate(session, name3, kind) {
  const url = templatesUrl(session);
  const templateUrl = `${url}/${normalizeTemplateName({ template: name3, kind })}`;
  session.log.debug(`Fetching template listing information from ${templateUrl}`);
  const resLink = await session.fetch(templateUrl);
  if (!resLink.ok) {
    throw new Error(`Problem with template link "${templateUrl}": ${resLink.status} ${resLink.statusText}`);
  }
  return await resLink.json();
}
async function listPublicTemplates(session, kind) {
  if (Array.isArray(kind)) {
    return (await Promise.all(kind.map((k) => listPublicTemplates(session, k)))).flat();
  }
  const url = listingUrl(session, kind);
  session.log.debug("Fetching template listing information");
  const resLink = await session.fetch(url);
  if (!resLink.ok) {
    throw new Error(`Problem with template link "${url}": ${resLink.status} ${resLink.statusText}`);
  }
  const templates = await resLink.json();
  return templates.items;
}

// ../myst-templates/dist/frontmatter.js
var ALPHA = "ABCDEFGHIJKLMNOPQURSUVWXYZ";
function indexAndLetter(index4) {
  const value = ALPHA[index4 % ALPHA.length];
  const multiplier = Math.ceil((index4 + 1) / ALPHA.length);
  return { index: index4 + 1, letter: value.repeat(multiplier) };
}
function undefinedIfEmpty(array) {
  if (!array || array.length === 0)
    return void 0;
  return array;
}
function addIndicesToAuthors(authors, affiliationList, collaborationList) {
  const affiliationLookup = {};
  affiliationList.forEach((affil) => {
    affiliationLookup[affil.value.id] = affil;
  });
  const collaborationLookup = {};
  collaborationList.forEach((col) => {
    collaborationLookup[col.value.id] = col;
  });
  let correspondingIndex = 0;
  return authors.map((auth, index4) => {
    var _a6, _b, _c;
    let corresponding;
    if (auth.corresponding) {
      corresponding = {
        value: auth.corresponding,
        ...indexAndLetter(correspondingIndex)
      };
      correspondingIndex += 1;
    } else if (auth.corresponding === false) {
      corresponding = {
        value: false
      };
    }
    let affiliations2 = (_a6 = auth.affiliations) === null || _a6 === void 0 ? void 0 : _a6.filter((value) => Object.keys(affiliationLookup).includes(value)).map((value) => {
      return { ...affiliationLookup[value] };
    });
    if (!affiliations2 || affiliations2.length === 0) {
      affiliations2 = void 0;
    }
    let collaborations = (_b = auth.affiliations) === null || _b === void 0 ? void 0 : _b.filter((value) => Object.keys(collaborationLookup).includes(value)).map((value) => {
      return { ...collaborationLookup[value] };
    });
    if (!collaborations || collaborations.length === 0) {
      collaborations = void 0;
    }
    const [givenName, ...surnameParts] = ((_c = auth.name) === null || _c === void 0 ? void 0 : _c.split(" ")) || ["", ""];
    const surname = surnameParts.join(" ");
    return {
      ...auth,
      ...indexAndLetter(index4),
      corresponding,
      affiliations: affiliations2,
      collaborations,
      given_name: givenName,
      surname
    };
  });
}
function extendFrontmatter(frontmatter) {
  var _a6, _b, _c;
  const datetime = frontmatter.date ? new Date(frontmatter.date) : /* @__PURE__ */ new Date();
  const affIds = [
    ...new Set((_b = (_a6 = frontmatter.authors) === null || _a6 === void 0 ? void 0 : _a6.map((auth) => {
      var _a7;
      return (_a7 = auth.affiliations) !== null && _a7 !== void 0 ? _a7 : [];
    }).flat()) !== null && _b !== void 0 ? _b : [])
  ];
  const affiliations2 = affIds.map((id) => {
    var _a7;
    return (_a7 = frontmatter.affiliations) === null || _a7 === void 0 ? void 0 : _a7.find((aff) => aff.id === id);
  }).filter((aff) => !!(aff === null || aff === void 0 ? void 0 : aff.id) && !aff.collaboration).map((aff, index4) => {
    return { ...aff, value: aff, ...indexAndLetter(index4) };
  });
  const collaborations = affIds.map((id) => {
    var _a7;
    return (_a7 = frontmatter.affiliations) === null || _a7 === void 0 ? void 0 : _a7.find((aff) => aff.id === id);
  }).filter((aff) => !!(aff === null || aff === void 0 ? void 0 : aff.id) && !!aff.collaboration).map((aff, index4) => {
    return { ...aff, value: aff, ...indexAndLetter(index4) };
  });
  const bibtex = ((_c = frontmatter.bibliography) === null || _c === void 0 ? void 0 : _c.length) === 1 && frontmatter.bibliography[0].endsWith(".bib") ? frontmatter.bibliography[0] : void 0;
  const doc = {
    ...frontmatter,
    date: {
      day: String(datetime.getUTCDate()),
      month: String(datetime.getUTCMonth() + 1),
      year: String(datetime.getUTCFullYear())
    },
    authors: addIndicesToAuthors(frontmatter.authors || [], affiliations2, collaborations),
    affiliations: affiliations2,
    collaborations,
    bibliography: undefinedIfEmpty(frontmatter.bibliography),
    bibtex
  };
  return doc;
}

// ../myst-templates/dist/utils.js
function errorLogger(session) {
  return (message) => session.log.error(message);
}
function warningLogger(session) {
  return (message) => session.log.warn(message);
}
function debugLogger(session) {
  return (message) => session.log.debug(message);
}

// ../myst-templates/dist/validators.js
var import_node_fs21 = __toESM(require("fs"), 1);
var import_node_path25 = __toESM(require("path"), 1);
function validateFile(session, input3, opts) {
  const filename = validateString(input3, opts);
  if (!filename)
    return;
  if (opts.allowRemote && isUrl2(filename))
    return filename;
  let resolvedFile;
  if (opts.file) {
    resolvedFile = import_node_path25.default.resolve(import_node_path25.default.dirname(opts.file), filename);
  } else {
    resolvedFile = import_node_path25.default.resolve(filename);
  }
  if (!import_node_fs21.default.existsSync(resolvedFile)) {
    return validationError(`unable to resolve file: ${filename}`, opts);
  }
  const { copyFolder, relativePathFrom } = opts;
  if (copyFolder) {
    const hashedFile = hashAndCopyStaticFile(session, resolvedFile, copyFolder);
    if (!hashedFile) {
      return validationError(`unable to copy file: ${resolvedFile} -> ${copyFolder}`, opts);
    }
    resolvedFile = import_node_path25.default.join(copyFolder, hashedFile);
  }
  if (relativePathFrom) {
    return import_node_path25.default.relative(relativePathFrom, resolvedFile);
  }
  return resolvedFile;
}
function validateTemplateOption(session, input3, optionDefinition, opts) {
  const { type: type2, max_chars, min, max, integer, choices } = optionDefinition;
  switch (type2) {
    case TemplateOptionType.boolean:
      return validateBoolean(input3, opts);
    case TemplateOptionType.string:
      return validateString(input3, { ...opts, maxLength: max_chars });
    case TemplateOptionType.number:
      return validateNumber(input3, { ...opts, min, max, integer });
    case TemplateOptionType.choice:
      return validateChoice(input3, { ...opts, choices: choices || [] });
    case TemplateOptionType.file:
      return validateFile(session, input3, opts);
    default:
      return validationError(`unknown type on option definition: "${type2}"`, opts);
  }
}
var isRequired = (def) => {
  return def.required && def.default === void 0;
};
var conditionMet = (def, lookup2) => {
  if (!def.condition)
    return true;
  const value = lookup2[def.condition.id];
  if (value === void 0)
    return false;
  if (def.condition.value !== void 0 && value !== def.condition.value)
    return false;
  return true;
};
function makeValidateOptionsFunction(reservedKeys) {
  return (session, options, optionDefinitions, opts) => {
    const value = validateObject(options, opts);
    if (value === void 0)
      return void 0;
    const filteredOptions = optionDefinitions.filter((def) => {
      return conditionMet(def, value);
    });
    const required = filteredOptions.filter((def) => isRequired(def)).map((def) => def.id);
    const optional = filteredOptions.filter((def) => !isRequired(def)).map((def) => def.id).concat(reservedKeys);
    validateKeys(value, { optional, required }, { returnInvalidPartial: true, ...opts });
    const output2 = {};
    filteredOptions.forEach((def) => {
      var _a6;
      if (defined(value[def.id]) || def.default) {
        output2[def.id] = validateTemplateOption(session, (_a6 = value[def.id]) !== null && _a6 !== void 0 ? _a6 : def.default, def, incrementOptions(def.id, opts));
      }
    });
    return output2;
  };
}
var validateTemplateOptions = makeValidateOptionsFunction(RESERVED_EXPORT_KEYS);
function validateTemplatePart(part, partDefinition, opts) {
  const { id, max_chars, max_words } = partDefinition;
  const partValue = validateString(part, opts);
  if (max_chars != null && partValue && partValue.length > max_chars) {
    validationError(`part block "${id}" must be less than or equal to ${max_chars} characters`, opts);
  }
  if (max_words != null && partValue && partValue.split(" ").length > max_words) {
    validationError(`part block "${id}" must be less than or equal to ${max_words} words`, opts);
  }
  return partValue;
}
function validateTemplateParts(parts, partsDefinitions, options, opts) {
  const filteredParts = partsDefinitions.filter((def) => conditionMet(def, options));
  const optional = filteredParts.filter((def) => !isRequired(def)).map((def) => def.id);
  const required = filteredParts.filter((def) => isRequired(def)).map((def) => def.id);
  const value = validateObjectKeys(parts, { optional, required }, { returnInvalidPartial: true, ...opts });
  if (value === void 0)
    return void 0;
  const output2 = {};
  filteredParts.forEach((def) => {
    const { id, as_list } = def;
    if (defined(value[id])) {
      let partValue;
      if (as_list) {
        partValue = validateList(value[id], incrementOptions(id, opts), (item, index4) => {
          return validateTemplatePart(item, def, incrementOptions(`${id}.${index4}`, opts));
        });
      } else {
        partValue = validateTemplatePart(value[id], def, incrementOptions(id, opts));
      }
      if (partValue !== void 0)
        output2[def.id] = partValue;
    }
  });
  return output2;
}
function validateTemplateDoc(frontmatter, docDefinitions, options, opts) {
  const output2 = validateProjectFrontmatter(filterKeys(frontmatter, PROJECT_FRONTMATTER_KEYS), opts);
  if (output2 === void 0)
    return void 0;
  const filteredDoc = docDefinitions.filter((def) => {
    return conditionMet(def, { ...options });
  });
  const required = filteredDoc.filter((def) => isRequired(def)).map((def) => def.id);
  validateObjectKeys(output2, { required }, { suppressWarnings: true, ...opts });
  return output2;
}
function validateCondition(input3, opts) {
  const value = validateObjectKeys(input3, { optional: ["value"], required: ["id"] }, opts);
  if (value === void 0)
    return void 0;
  const id = validateString(value.id, incrementOptions("id", opts));
  if (id === void 0)
    return void 0;
  return { id, value: value.value };
}
function validateTemplateDocDefinition(input3, opts) {
  const value = validateObjectKeys(input3, {
    optional: ["title", "description", "required", "condition"],
    required: ["id"]
  }, opts);
  if (value === void 0)
    return void 0;
  const id = validateChoice(value.id, {
    choices: PAGE_FRONTMATTER_KEYS,
    ...incrementOptions("id", opts)
  });
  if (id === void 0)
    return void 0;
  const output2 = { id };
  if (defined(value.title)) {
    output2.title = validateString(value.title, incrementOptions("title", opts));
  }
  if (defined(value.description)) {
    output2.description = validateString(value.description, incrementOptions("description", opts));
  }
  if (defined(value.required)) {
    output2.required = validateBoolean(value.required, incrementOptions("required", opts));
  }
  if (defined(value.condition)) {
    output2.condition = validateCondition(value.condition, incrementOptions("condition", opts));
  }
  return output2;
}
function validateTemplateOptionDefinition(session, input3, opts) {
  const value = validateObjectKeys(input3, {
    optional: [
      "title",
      "description",
      "default",
      "required",
      "choices",
      "min",
      "max",
      "integer",
      "max_chars",
      "condition"
    ],
    required: ["id", "type"]
  }, opts);
  if (value === void 0)
    return void 0;
  const optionType = validateEnum(value.type, {
    ...incrementOptions("type", opts),
    enum: TemplateOptionType
  });
  if (optionType === void 0)
    return void 0;
  if (optionType === TemplateOptionType.choice && !defined(value.choices)) {
    return validationError('"choices" must be defined for option type "choice"', opts);
  }
  const idOpts = incrementOptions("id", opts);
  const id = validateString(value.id, idOpts);
  if (id === void 0)
    return void 0;
  if (RESERVED_EXPORT_KEYS.includes(id)) {
    return validationError(`cannot use reserved export property for template option: "${id}"`, idOpts);
  }
  const output2 = {
    id,
    type: optionType
  };
  if (defined(value.title)) {
    output2.title = validateString(value.title, incrementOptions("title", opts));
  }
  if (defined(value.description)) {
    output2.description = validateString(value.description, incrementOptions("description", opts));
  }
  if (defined(value.required)) {
    output2.required = validateBoolean(value.required, incrementOptions("required", opts));
  }
  if (defined(value.choices)) {
    if (output2.type === "choice") {
      output2.choices = validateList(value.choices, incrementOptions("choices", opts), (val, ind) => {
        return validateString(val, incrementOptions(`choices.${ind}`, opts));
      });
    } else {
      validationError('type must be "choice" to use "choices" option', opts);
    }
  }
  if (defined(value.max_chars)) {
    if (output2.type === "string") {
      output2.max_chars = validateNumber(value.max_chars, {
        min: 0,
        integer: true,
        ...incrementOptions("max_chars", opts)
      });
    } else {
      validationError('type must be "string" to use "max_chars" option', opts);
    }
  }
  if (defined(value.integer)) {
    if (output2.type === "number") {
      output2.integer = validateBoolean(value.integer, incrementOptions("integer", opts));
    } else {
      validationError('type must be "number" to use "integer" option', opts);
    }
  }
  if (defined(value.min)) {
    if (output2.type === "number") {
      output2.min = validateNumber(value.min, {
        ...incrementOptions("min", opts),
        integer: output2.integer
      });
    } else {
      validationError('type must be "number" to use "min" option', opts);
    }
  }
  if (defined(value.max)) {
    if (output2.type === "number") {
      output2.max = validateNumber(value.max, {
        ...incrementOptions("max", opts),
        integer: output2.integer
      });
    } else {
      validationError('type must be "number" to use "max" option', opts);
    }
  }
  if (defined(output2.min) && defined(output2.max) && output2.max < output2.min) {
    validationWarning('"min" and "max" options are flipped', opts);
    const [min, max] = [output2.min, output2.max];
    output2.min = max;
    output2.max = min;
  }
  if (defined(value.condition)) {
    output2.condition = validateCondition(value.condition, incrementOptions("condition", opts));
  }
  if (defined(value.default)) {
    output2.default = validateTemplateOption(session, value.default, output2, incrementOptions("default", opts));
  }
  return output2;
}
function crossValidateConditions(session, optionDefinitions, partsDefinitions, docDefinitions, opts) {
  const optionDefLookup = {};
  optionDefinitions.forEach((def) => {
    if (def.condition && def.condition.id === def.id) {
      validationError(`option id cannot match condition id: ${def.id}`, opts);
    } else {
      optionDefLookup[def.id] = def;
    }
  });
  [...optionDefinitions, ...partsDefinitions, ...docDefinitions].forEach((def) => {
    if (def.condition && optionDefLookup[def.condition.id]) {
      if (defined(def.condition.value)) {
        const val = validateTemplateOption(session, def.condition.value, optionDefLookup[def.condition.id], {
          ...opts,
          suppressErrors: true,
          suppressWarnings: true
        });
        if (val === void 0) {
          validationError(`invalid condition value "${def.condition.value}" for id: ${def.condition.id}`, opts);
        }
      }
    } else if (def.condition && def.condition.id !== def.id) {
      validationError(`unknown condition id: ${def.condition.id}`, opts);
    }
  });
}
function validateTemplatePartDefinition(input3, opts) {
  const value = validateObjectKeys(input3, {
    optional: [
      "title",
      "description",
      "required",
      "plain",
      "as_list",
      "max_chars",
      "max_words",
      "condition"
    ],
    required: ["id"]
  }, opts);
  if (value === void 0)
    return void 0;
  const id = validateString(value.id, incrementOptions("id", opts));
  if (id === void 0)
    return void 0;
  const output2 = { id };
  if (defined(value.title)) {
    output2.title = validateString(value.title, incrementOptions("title", opts));
  }
  if (defined(value.description)) {
    output2.description = validateString(value.description, incrementOptions("description", opts));
  }
  if (defined(value.required)) {
    output2.required = validateBoolean(value.required, incrementOptions("required", opts));
  }
  if (defined(value.plain)) {
    output2.plain = validateBoolean(value.plain, incrementOptions("plain", opts));
  }
  if (defined(value.as_list)) {
    output2.as_list = validateBoolean(value.as_list, incrementOptions("as_list", opts));
  }
  if (defined(value.max_chars)) {
    output2.max_chars = validateNumber(value.max_chars, {
      min: 0,
      integer: true,
      ...incrementOptions("max_chars", opts)
    });
  }
  if (defined(value.max_words)) {
    output2.max_words = validateNumber(value.max_words, {
      min: 0,
      integer: true,
      ...incrementOptions("max_words", opts)
    });
  }
  if (defined(value.condition)) {
    output2.condition = validateCondition(value.condition, incrementOptions("condition", opts));
  }
  return output2;
}
function validateTemplateStyle(input3, opts) {
  const value = validateObjectKeys(input3, { optional: ["citation", "bibliography"] }, opts);
  if (value === void 0)
    return void 0;
  const output2 = {};
  if (defined(value.citation)) {
    output2.citation = validateChoice(value.citation, {
      ...incrementOptions("citation", opts),
      choices: ["numerical-only"]
    });
  }
  if (defined(value.bibliography)) {
    output2.bibliography = validateChoice(value.bibliography, {
      ...incrementOptions("bibliography", opts),
      choices: ["natbib", "biblatex"]
    });
  }
  return output2;
}
function validateTemplateYml(session, input3, opts) {
  var _a6;
  const inputObj = validateObject(input3, opts);
  if (inputObj === void 0)
    return void 0;
  if ((inputObj === null || inputObj === void 0 ? void 0 : inputObj.jtex) && !(inputObj === null || inputObj === void 0 ? void 0 : inputObj.myst)) {
    inputObj.myst = inputObj.jtex;
  }
  const value = validateObjectKeys(inputObj, {
    required: ["myst"],
    optional: [
      "kind",
      "jtex",
      "title",
      "description",
      "version",
      "authors",
      "affiliations",
      "license",
      "tags",
      "source",
      "github",
      "thumbnail",
      "build",
      "style",
      "parts",
      "doc",
      "options",
      "packages",
      "files",
      "template"
    ]
  }, opts);
  if (value === void 0)
    return void 0;
  const myst2 = validateChoice(value.myst, {
    ...incrementOptions("myst", opts),
    choices: ["v1"]
  });
  if (myst2 === void 0)
    return void 0;
  const output2 = { myst: myst2 };
  if (defined(value.kind)) {
    output2.kind = validateEnum(value.kind, {
      ...incrementOptions("kind", opts),
      enum: TemplateKind
    });
  }
  if (defined(value.title)) {
    output2.title = validateString(value.title, incrementOptions("title", opts));
  }
  if (defined(value.description)) {
    output2.description = validateString(value.description, incrementOptions("description", opts));
  }
  if (defined(value.version)) {
    output2.version = validateString(value.version, incrementOptions("version", opts));
  }
  const stash = {};
  if (defined(value.affiliations)) {
    const affiliationsOpts = incrementOptions("affiliations", opts);
    let affiliations2 = value.affiliations;
    if (typeof affiliations2 === "string") {
      affiliations2 = affiliations2.split(";").map((aff) => aff.trim());
    }
    validateList(affiliations2, affiliationsOpts, (aff) => {
      return validateAndStashObject(aff, stash, "affiliations", validateAffiliation, affiliationsOpts);
    });
  }
  if (defined(value.authors)) {
    output2.authors = validateList(value.authors, incrementOptions("authors", opts), (author, index4) => {
      return validateContributor(author, stash, incrementOptions(`authors.${index4}`, opts));
    });
  }
  if (defined(value.license)) {
    output2.license = validateLicenses(value.license, incrementOptions("license", opts));
  }
  if (defined(value.source)) {
    output2.source = validateUrl(value.source, incrementOptions("source", opts));
  }
  if (defined(value.github)) {
    output2.github = validateGithubUrl(value.github, incrementOptions("github", opts));
  }
  if (defined(value.thumbnail)) {
    output2.thumbnail = validateString(value.thumbnail, incrementOptions("thumbnail", opts));
  }
  if (defined(value.tags)) {
    output2.tags = validateList(value.tags, incrementOptions("tags", opts), (file, index4) => {
      return validateString(file, incrementOptions(`tags.${index4}`, opts));
    });
  }
  if (defined(value.build)) {
    output2.build = validateObject(value.build, incrementOptions("build", opts));
  }
  if (defined(value.style)) {
    output2.style = validateTemplateStyle(value.style, incrementOptions("style", opts));
  }
  if (defined(value.parts)) {
    output2.parts = validateList(value.parts, incrementOptions("parts", opts), (val, ind) => {
      return validateTemplatePartDefinition(val, incrementOptions(`parts.${ind}`, opts));
    });
  }
  if (defined(value.doc)) {
    output2.doc = validateList(value.doc, incrementOptions("doc", opts), (val, ind) => {
      return validateTemplateDocDefinition(val, incrementOptions(`doc.${ind}`, opts));
    });
  }
  if (defined(value.options)) {
    output2.options = validateList(value.options, incrementOptions("options", opts), (val, ind) => {
      return validateTemplateOptionDefinition(session, val, incrementOptions(`options.${ind}`, opts));
    });
  }
  if (defined(value.packages)) {
    output2.packages = validateList(value.packages, incrementOptions("packages", opts), (val, ind) => {
      return validateString(val, incrementOptions(`packages.${ind}`, opts));
    });
  }
  if (defined(value.files) && ((_a6 = opts === null || opts === void 0 ? void 0 : opts.validateFiles) !== null && _a6 !== void 0 ? _a6 : true)) {
    output2.files = validateList(value.files, incrementOptions("files", opts), (val, ind) => {
      const fileOpts = incrementOptions(`files.${ind}`, opts);
      const file = validateString(val, fileOpts);
      if (file && opts.templateDir) {
        const filePath = [...opts.templateDir.split(import_node_path25.default.sep), file].join("/");
        const matches4 = globSync(filePath).map((match3) => match3.split("/").join(import_node_path25.default.sep));
        const files = matches4.filter((match3) => !isDirectory(match3));
        if (!matches4.length) {
          validationError(`file does not exist: ${filePath}`, fileOpts);
        } else if (!files.length) {
          validationError(`file must not be directory: ${filePath}`, fileOpts);
        }
      }
      return file;
    });
  }
  if (defined(value.template)) {
    const templateOpts = incrementOptions("template", opts);
    const template = validateString(value.template, templateOpts);
    if (template && output2.kind && import_node_path25.default.extname(template) !== KIND_TO_EXT[output2.kind]) {
      validationError(`template extension "${import_node_path25.default.extname(template)}" must match kind "${KIND_TO_EXT[output2.kind]}"`, templateOpts);
    }
    if (template && opts.templateDir) {
      const templatePath = [...opts.templateDir.split(import_node_path25.default.sep), template].join("/");
      const matches4 = globSync(templatePath).map((match3) => match3.split("/").join(import_node_path25.default.sep));
      const files = matches4.filter((match3) => !isDirectory(match3));
      if (!matches4.length) {
        validationError(`template does not exist: ${templatePath}`, templateOpts);
      } else if (!files.length) {
        validationError(`template must not be directory: ${templatePath}`, templateOpts);
      }
    }
    output2.template = template;
  }
  if (stash.affiliations) {
    output2.affiliations = stash.affiliations;
  }
  crossValidateConditions(session, output2.options || [], output2.parts || [], output2.doc || [], opts);
  return output2;
}

// ../myst-templates/dist/template.js
var TEMPLATE_FILENAME_BASE = "template";
var MystTemplate = class {
  /**
   * MystTemplate class for template download / validation / render preparation
   *
   * Constructor takes a session object for logging and optional template/path.
   * Template may be a path to an existing template on disk, a URL where the zipped
   * template may be downloaded, or the name of a myst-template. Path is the
   * local path where the downloaded template will be saved.
   */
  constructor(session, opts) {
    var _a6, _b, _c, _d2;
    this.session = session;
    const { templatePath, templateUrl } = resolveInputs(this.session, opts || {});
    this.templatePath = templatePath;
    this.templateUrl = templateUrl;
    this.errorLogFn = (_a6 = opts === null || opts === void 0 ? void 0 : opts.errorLogFn) !== null && _a6 !== void 0 ? _a6 : errorLogger(this.session);
    this.warningLogFn = (_b = opts === null || opts === void 0 ? void 0 : opts.warningLogFn) !== null && _b !== void 0 ? _b : warningLogger(this.session);
    this.debugLogFn = (_c = opts === null || opts === void 0 ? void 0 : opts.debugLogFn) !== null && _c !== void 0 ? _c : debugLogger(this.session);
    this.kind = opts.kind;
    this.validateFiles = (_d2 = opts === null || opts === void 0 ? void 0 : opts.validateFiles) !== null && _d2 !== void 0 ? _d2 : true;
  }
  getTemplateYmlPath() {
    return (0, import_node_path26.join)(this.templatePath, TEMPLATE_YML);
  }
  getTemplateYml() {
    const templateYmlPath = this.getTemplateYmlPath();
    if (!import_node_fs22.default.existsSync(templateYmlPath)) {
      throw new Error(`The template yml at "${templateYmlPath}" does not exist`);
    }
    const content3 = import_node_fs22.default.readFileSync(templateYmlPath).toString();
    return js_yaml_default.load(content3);
  }
  getValidatedTemplateYml() {
    var _a6;
    if (this.validatedTemplateYml == null) {
      const opts = {
        file: this.getTemplateYmlPath(),
        property: "template",
        messages: {},
        errorLogFn: this.errorLogFn,
        warningLogFn: this.warningLogFn
      };
      const templateYml = validateTemplateYml(this.session, this.getTemplateYml(), {
        ...opts,
        templateDir: this.templatePath,
        validateFiles: this.validateFiles
      });
      if (((_a6 = opts.messages.errors) === null || _a6 === void 0 ? void 0 : _a6.length) || templateYml === void 0) {
        throw new Error(`Cannot use invalid ${TEMPLATE_YML}: ${this.getTemplateYmlPath()}`);
      }
      this.validatedTemplateYml = templateYml;
    }
    return this.validatedTemplateYml;
  }
  getTemplateFilename() {
    var _a6;
    const templateYml = this.getValidatedTemplateYml();
    return (_a6 = templateYml.template) !== null && _a6 !== void 0 ? _a6 : `${TEMPLATE_FILENAME_BASE}${KIND_TO_EXT[this.kind]}`;
  }
  validateOptions(options, file, fileOpts) {
    const templateYml = this.getValidatedTemplateYml();
    const opts = {
      file,
      property: "options",
      messages: {},
      errorLogFn: this.errorLogFn,
      // Warnings about extra options are just debug messages
      warningLogFn: this.debugLogFn,
      ...fileOpts
    };
    const validatedOptions = validateTemplateOptions(this.session, options, (templateYml === null || templateYml === void 0 ? void 0 : templateYml.options) || [], opts);
    if (validatedOptions === void 0) {
      throw new Error(`Unable to parse options for template ${this.getTemplateYmlPath()}${file ? " from " : ""}${file}`);
    }
    return validatedOptions;
  }
  validateParts(parts, options, file) {
    const templateYml = this.getValidatedTemplateYml();
    const opts = {
      file,
      property: "parts",
      messages: {},
      errorLogFn: this.errorLogFn,
      warningLogFn: this.warningLogFn
    };
    const validatedParts = validateTemplateParts(parts, (templateYml === null || templateYml === void 0 ? void 0 : templateYml.parts) || [], options, opts);
    if (validatedParts === void 0) {
      throw new Error(`Unable to parse "parts" for template ${this.getTemplateYmlPath()}${file ? " from " : ""}${file}`);
    }
    return validatedParts;
  }
  validateDoc(frontmatter, options, bibliography2, file) {
    const templateYml = this.getValidatedTemplateYml();
    const opts = {
      file,
      property: "frontmatter",
      messages: {},
      errorLogFn: this.errorLogFn,
      warningLogFn: this.warningLogFn
    };
    const bibFrontmatter = {
      ...frontmatter,
      bibliography: bibliography2 !== null && bibliography2 !== void 0 ? bibliography2 : frontmatter.bibliography
    };
    const validatedDoc = validateTemplateDoc(bibFrontmatter, (templateYml === null || templateYml === void 0 ? void 0 : templateYml.doc) || [], options, opts);
    if (validatedDoc === void 0) {
      throw new Error(`Unable to read frontmatter${file ? " from " : ""}${file}`);
    }
    return validatedDoc;
  }
  async ensureTemplateExistsOnPath(force) {
    if (!force && import_node_fs22.default.existsSync((0, import_node_path26.join)(this.templatePath, TEMPLATE_YML))) {
      this.session.log.debug(`Template found: ${this.templatePath}`);
    } else if (!this.templateUrl) {
      throw new Error(`No template on path and no download URL to fetch from: ${this.templatePath}`);
    } else {
      try {
        await downloadTemplate(this.session, {
          templatePath: this.templatePath,
          templateUrl: this.templateUrl
        });
      } catch (error) {
        this.session.log.debug(`

${error === null || error === void 0 ? void 0 : error.stack}

`);
        throw new Error(`${error.message}

To list valid templates, try the command "myst templates list"`);
      }
    }
  }
  prepare(opts) {
    if (!import_node_fs22.default.existsSync((0, import_node_path26.join)(this.templatePath, TEMPLATE_YML))) {
      throw new Error(`The template at "${(0, import_node_path26.join)(this.templatePath, TEMPLATE_YML)}" does not exist`);
    }
    const fileOpts = { copyFolder: opts.filesPath };
    if (opts.outputPath) {
      fileOpts.relativePathFrom = (0, import_node_path26.dirname)(opts.outputPath);
    }
    const options = this.validateOptions(opts.options, opts.sourceFile, fileOpts);
    const parts = this.validateParts(opts.parts, options, opts.sourceFile);
    const docFrontmatter = this.validateDoc(opts.frontmatter, options, opts.bibliography ? [opts.bibliography] : [], opts.sourceFile);
    const doc = extendFrontmatter(docFrontmatter);
    return { options, parts, doc };
  }
  copyTemplateFiles(outputDir, opts) {
    var _a6;
    const templateYml = this.getValidatedTemplateYml();
    (_a6 = templateYml.files) === null || _a6 === void 0 ? void 0 : _a6.forEach((file) => {
      if (file === this.getTemplateFilename())
        return;
      const source2 = (0, import_node_path26.join)(this.templatePath, ...file.split("/"));
      const dest = (0, import_node_path26.join)(outputDir, ...file.split("/"));
      if (import_node_fs22.default.existsSync(dest)) {
        if (!(opts === null || opts === void 0 ? void 0 : opts.force)) {
          this.session.log.debug(`Template files ${file} already exists, not copying.`);
          return;
        }
        import_node_fs22.default.rmSync(dest);
      }
      import_node_fs22.default.mkdirSync((0, import_node_path26.dirname)(dest), { recursive: true });
      import_node_fs22.default.copyFileSync(source2, dest);
    });
  }
};
var template_default = MystTemplate;

// ../myst-templates/dist/types.js
var RENDERER_DOC_KEYS = ["affiliations", "collaborations"].concat(PAGE_FRONTMATTER_KEYS);

// ../myst-templates/dist/index.js
var dist_default2 = template_default;

// ../myst-cli/dist/build/site/template.js
var DEFAULT_TEMPLATE = "book-theme";
var DEFAULT_INSTALL_COMMAND = "npm install";
async function getSiteTemplate(session, opts) {
  var _a6, _b, _c, _d2;
  const cache = castSession(session);
  const state = cache.store.getState();
  if (cache.$siteTemplate)
    return cache.$siteTemplate;
  const siteConfig = selectors_exports.selectCurrentSiteConfig(state);
  const file = (_a6 = selectors_exports.selectCurrentSiteFile(state)) !== null && _a6 !== void 0 ? _a6 : session.configFiles[0];
  const mystTemplate = new dist_default2(session, {
    kind: TemplateKind.site,
    template: (_d2 = (_c = (_b = opts === null || opts === void 0 ? void 0 : opts.template) !== null && _b !== void 0 ? _b : siteConfig === null || siteConfig === void 0 ? void 0 : siteConfig.template) !== null && _c !== void 0 ? _c : opts === null || opts === void 0 ? void 0 : opts.defaultTemplate) !== null && _d2 !== void 0 ? _d2 : DEFAULT_TEMPLATE,
    buildDir: session.buildPath(),
    errorLogFn: (message) => {
      addWarningForFile(session, file, message, "error", {
        ruleId: RuleId.validSiteConfig
      });
    },
    warningLogFn: (message) => {
      addWarningForFile(session, file, message, "warn", {
        ruleId: RuleId.validSiteConfig
      });
    },
    validateFiles: (opts === null || opts === void 0 ? void 0 : opts.template) ? false : true
  });
  await mystTemplate.ensureTemplateExistsOnPath();
  cache.$siteTemplate = mystTemplate;
  return mystTemplate;
}
async function installSiteTemplate(session, mystTemplate) {
  var _a6, _b;
  if (import_node_fs23.default.existsSync((0, import_node_path27.join)(mystTemplate.templatePath, "node_modules")))
    return;
  const toc = tic();
  session.log.info("\u2935\uFE0F  Installing web libraries (can take up to 60 s)");
  await makeExecutable((_b = (_a6 = mystTemplate.getValidatedTemplateYml().build) === null || _a6 === void 0 ? void 0 : _a6.install) !== null && _b !== void 0 ? _b : DEFAULT_INSTALL_COMMAND, createNpmLogger(session), {
    cwd: mystTemplate.templatePath
  })();
  session.log.info(toc("\u{1F4E6} Installed web libraries in %s"));
}

// ../myst-cli/dist/build/utils/collectExportOptions.js
var import_node_fs24 = __toESM(require("fs"), 1);
var import_node_path29 = __toESM(require("path"), 1);

// ../myst-cli/dist/build/utils/defaultNames.js
var import_node_path28 = __toESM(require("path"), 1);
function getDefaultExportFilename(session, file, projectPath) {
  const { name: name3 } = parseFilePath(file);
  const slugFromProject = projectPath ? selectPageSlug(session.store.getState(), projectPath, file) : void 0;
  const slug = slugFromProject || createSlug(name3);
  return slug;
}
function getDefaultExportFolder(session, file, format, projectPath) {
  const subpaths = [projectPath || import_node_path28.default.parse(file).dir, "_build", "exports"];
  if (format === ExportFormats.tex) {
    subpaths.push(`${getDefaultExportFilename(session, file, projectPath)}_tex`);
  }
  if (format === ExportFormats.typst) {
    subpaths.push(`${getDefaultExportFilename(session, file, projectPath)}_typst`);
  }
  return import_node_path28.default.join(...subpaths);
}

// ../myst-cli/dist/build/utils/collectExportOptions.js
var SOURCE_EXTENSIONS = [".ipynb", ".md", ".tex", ".myst.json"];
function resolveArticlesFromProject(exp, proj, vfile2) {
  var _a6;
  const { file, pages } = proj;
  const fileAsPage = { file, level: 1 };
  const articles = (pages === null || pages === void 0 ? void 0 : pages.length) ? pages : [fileAsPage];
  if (MULTI_ARTICLE_EXPORT_FORMATS.includes(exp.format)) {
    return { articles };
  }
  if (exp.format === ExportFormats.xml || exp.format === ExportFormats.meca) {
    return {
      articles: [fileAsPage],
      sub_articles: pages.map((page) => page.file).filter((pageFile) => !!pageFile)
    };
  } else {
    if (articles.length > 1) {
      fileError(vfile2, "multiple articles are only supported for 'tex', 'typst', and 'pdf' exports", {
        ruleId: RuleId.validFrontmatterExportList
      });
    }
    return { articles: [(_a6 = singleArticleWithFile(articles)) !== null && _a6 !== void 0 ? _a6 : fileAsPage] };
  }
}
function resolveArticlesFromTOC(session, exp, toc, projectPath, vfile2) {
  const allowLevelLessThanOne = [
    ExportFormats.tex,
    ExportFormats.pdf,
    ExportFormats.pdftex
  ].includes(exp.format);
  let level = 1;
  if (!allowLevelLessThanOne && exp.top_level && exp.top_level !== "sections") {
    fileWarn(vfile2, `top_level cannot be specified for export of format '${exp.format}'`, {
      ruleId: RuleId.validFrontmatterExportList
    });
  } else if (exp.top_level === "parts") {
    level = -1;
  } else if (exp.top_level === "chapters") {
    level = 0;
  }
  const proj = projectFromTOC(session, projectPath, toc, level, vfile2.path);
  return resolveArticlesFromProject(exp, proj, vfile2);
}
function resolveArticlesFromSphinxTOC(session, exp, tocPath, vfile2) {
  const allowLevelLessThanOne = [
    ExportFormats.tex,
    ExportFormats.pdf,
    ExportFormats.pdftex
  ].includes(exp.format);
  const proj = projectFromSphinxTOC(session, tocPath, allowLevelLessThanOne ? -1 : 1);
  return resolveArticlesFromProject(exp, proj, vfile2);
}
function resolveTemplate(sourceFile, exp, disableTemplate) {
  if (disableTemplate)
    return null;
  if (exp.template) {
    const resolvedTemplatePath = import_node_path29.default.resolve(import_node_path29.default.dirname(sourceFile), exp.template);
    if (import_node_fs24.default.existsSync(resolvedTemplatePath)) {
      return resolvedTemplatePath;
    }
  }
  return exp.template;
}
function resolveFormat(vfile2, exp) {
  var _a6, _b, _c;
  if (exp.format && exp.format !== ExportFormats.pdf) {
    return exp.format;
  }
  let suggestedPdfFormat = ExportFormats.pdf;
  let suggestedOutputFormat;
  if (exp.output) {
    const ext2 = import_node_path29.default.extname(exp.output);
    if (!ext2) {
      suggestedPdfFormat = ExportFormats.pdftex;
    } else {
      suggestedOutputFormat = EXT_TO_FORMAT[ext2];
    }
  }
  if ((_a6 = exp.template) === null || _a6 === void 0 ? void 0 : _a6.endsWith("-tex"))
    return suggestedPdfFormat;
  if ((_b = exp.template) === null || _b === void 0 ? void 0 : _b.endsWith("-typst"))
    return ExportFormats.typst;
  if ((_c = exp.template) === null || _c === void 0 ? void 0 : _c.endsWith("-docx"))
    return ExportFormats.docx;
  if (exp.template && import_node_fs24.default.existsSync(exp.template)) {
    const templateFiles = import_node_fs24.default.readdirSync(exp.template);
    const templateTexFiles = templateFiles.filter((file) => file.endsWith(".tex"));
    const templateTypFiles = templateFiles.filter((file) => file.endsWith(".typ"));
    if (templateTexFiles.length && !templateTypFiles.length)
      return suggestedPdfFormat;
    if (!templateTexFiles.length && templateTypFiles.length)
      return ExportFormats.typst;
  }
  if (exp.format)
    return suggestedPdfFormat;
  return suggestedOutputFormat !== null && suggestedOutputFormat !== void 0 ? suggestedOutputFormat : suggestedPdfFormat;
}
function resolveArticles(session, sourceFile, vfile2, exp, projectPath) {
  var _a6, _b, _c, _d2;
  const { articles, sub_articles } = exp;
  projectPath = projectPath !== null && projectPath !== void 0 ? projectPath : ".";
  let resolved = { articles, sub_articles };
  let warnAboutExpTopLevel = !!exp.top_level;
  if (!resolved.articles && !resolved.sub_articles) {
    if (exp.toc) {
      warnAboutExpTopLevel = false;
      resolved = resolveArticlesFromTOC(session, exp, exp.toc, projectPath, vfile2);
    } else if (exp.tocFile && validateSphinxTOC(session, exp.tocFile)) {
      resolved = resolveArticlesFromSphinxTOC(session, exp, exp.tocFile, vfile2);
    }
  }
  if (!resolved.articles && SOURCE_EXTENSIONS.some((ext2) => sourceFile.endsWith(ext2))) {
    resolved.articles = [{ file: import_node_path29.default.resolve(sourceFile) }];
  }
  if (((_a6 = resolved.articles) === null || _a6 === void 0 ? void 0 : _a6.length) === 1 && resolved.articles[0].level == null) {
    resolved.articles[0].level = 0;
  }
  if (!resolved.articles && !resolved.sub_articles) {
    const state = session.store.getState();
    const projectConfig = selectors_exports.selectLocalProjectConfig(state, projectPath);
    if (projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.toc) {
      warnAboutExpTopLevel = false;
      resolved = resolveArticlesFromTOC(session, exp, projectConfig.toc, projectPath, vfile2);
    } else if (validateSphinxTOC(session, projectPath)) {
      resolved = resolveArticlesFromSphinxTOC(session, exp, projectPath, vfile2);
    } else {
      const cachedProject = selectors_exports.selectLocalProject(state, projectPath);
      if (cachedProject) {
        resolved = resolveArticlesFromProject(exp, cachedProject, vfile2);
      }
    }
  }
  if (warnAboutExpTopLevel) {
    fileWarn(vfile2, `top_level may only be used if toc is defined in your export or project config`, {
      ruleId: RuleId.validFrontmatterExportList
    });
  }
  if (!((_b = resolved.articles) === null || _b === void 0 ? void 0 : _b.length) && exp.format !== ExportFormats.meca) {
    fileError(vfile2, `Unable to resolve any 'articles' to export`, {
      ruleId: RuleId.exportArticleExists
    });
    return resolved;
  }
  resolved.articles = (_c = resolved.articles) === null || _c === void 0 ? void 0 : _c.map((article) => {
    if (!article.file)
      return article;
    const resolvedFile = import_node_path29.default.resolve(import_node_path29.default.dirname(sourceFile), article.file);
    if (!import_node_fs24.default.existsSync(resolvedFile)) {
      fileError(vfile2, `Invalid export article - '${article.file}' does not exist`, {
        ruleId: RuleId.exportArticleExists
      });
      return void 0;
    }
    return { ...article, file: resolvedFile };
  }).filter((article) => !!article);
  resolved.sub_articles = (_d2 = resolved.sub_articles) === null || _d2 === void 0 ? void 0 : _d2.map((file) => {
    const resolvedFile = import_node_path29.default.resolve(import_node_path29.default.dirname(sourceFile), file);
    if (!import_node_fs24.default.existsSync(resolvedFile)) {
      fileError(vfile2, `Invalid export sub_article - '${file}' does not exist`, {
        ruleId: RuleId.exportArticleExists
      });
      return void 0;
    } else {
      return resolvedFile;
    }
  }).filter((resolvedFile) => !!resolvedFile);
  return resolved;
}
var ALLOWED_EXTENSIONS = {
  [ExportFormats.docx]: [".doc", ".docx"],
  [ExportFormats.md]: [".md"],
  [ExportFormats.meca]: [".zip", ".meca"],
  [ExportFormats.pdf]: [".pdf"],
  [ExportFormats.pdftex]: [".pdf", ".tex", ".zip"],
  [ExportFormats.tex]: [".tex", ".zip"],
  [ExportFormats.typst]: [".pdf", ".typ", ".typst", ".zip"],
  [ExportFormats.xml]: [".xml", ".jats"],
  [ExportFormats.cff]: [".cff"]
};
function resolveOutput(session, sourceFile, vfile2, exp, projectPath) {
  var _a6, _b, _c, _d2, _e;
  let output2;
  if (exp.output) {
    output2 = import_node_path29.default.resolve(import_node_path29.default.dirname(sourceFile), exp.output);
  } else if (exp.format === ExportFormats.cff && projectPath) {
    output2 = projectPath;
  } else {
    output2 = getDefaultExportFolder(session, sourceFile, exp.format, projectPath);
  }
  if (exp.format === ExportFormats.meca && exp.zip === false) {
    fileWarn(vfile2, `ignoring "zip: false" for export of format "${ExportFormats.meca}"`);
  }
  if (exp.zip && !((_a6 = ALLOWED_EXTENSIONS[exp.format]) === null || _a6 === void 0 ? void 0 : _a6.includes(".zip"))) {
    fileWarn(vfile2, `ignoring "zip: true" for export of format "${exp.format}"`);
    exp.zip = false;
  }
  if (!import_node_path29.default.extname(output2)) {
    let basename4;
    if (exp.format === ExportFormats.cff) {
      basename4 = "CITATION";
    } else {
      basename4 = getDefaultExportFilename(session, (_c = (_b = singleArticleWithFile(exp.articles)) === null || _b === void 0 ? void 0 : _b.file) !== null && _c !== void 0 ? _c : sourceFile, projectPath);
    }
    const ext2 = exp.zip ? ".zip" : (_d2 = ALLOWED_EXTENSIONS[exp.format]) === null || _d2 === void 0 ? void 0 : _d2[0];
    output2 = import_node_path29.default.join(output2, `${basename4}${ext2 !== null && ext2 !== void 0 ? ext2 : ""}`);
  }
  if (!((_e = ALLOWED_EXTENSIONS[exp.format]) === null || _e === void 0 ? void 0 : _e.includes(import_node_path29.default.extname(output2)))) {
    fileError(vfile2, `Output file "${output2}" has invalid extension for export format of "${exp.format}"`, { ruleId: RuleId.exportExtensionCorrect });
    return void 0;
  }
  if (exp.zip && import_node_path29.default.extname(output2) !== ".zip") {
    fileWarn(vfile2, `Output file "${output2}" has non-zip extension but "zip: true" is specified; ignoring "zip: true"`, { ruleId: RuleId.exportExtensionCorrect });
  }
  return output2;
}
async function getExportListFromFile(session, sourceFile, projectPath, opts) {
  const { disableTemplate } = opts;
  const rawFrontmatter = await getRawFrontmatterFromFile(session, sourceFile, projectPath);
  const exportList = getExportListFromRawFrontmatter(session, rawFrontmatter, sourceFile);
  const exportListWithTemplate = exportList.map((exp) => {
    const template = resolveTemplate(sourceFile, exp, disableTemplate);
    return { ...exp, template };
  }).filter((exp) => !!exp);
  return exportListWithTemplate;
}
function resolveExportListFormats(session, sourceFile, formats, exportList) {
  const vfile2 = new VFile();
  vfile2.path = sourceFile;
  const exportListWithFormat = exportList.map((exp) => {
    const format = resolveFormat(vfile2, exp);
    if (!format || !formats.includes(format))
      return void 0;
    return { ...exp, format };
  }).filter((exp) => !!exp);
  logMessagesFromVFile(session, vfile2);
  return exportListWithFormat;
}
var FORMATS_ALLOW_NO_ARTICLES = [ExportFormats.meca, ExportFormats.cff];
function resolveExportListArticles(session, sourceFile, exportList, projectPath, opts) {
  const { renderer } = opts;
  const vfile2 = new VFile();
  vfile2.path = sourceFile;
  const filteredExportOptions = exportList.map((exp) => {
    const { articles, sub_articles } = resolveArticles(session, sourceFile, vfile2, exp, projectPath);
    if (!(articles === null || articles === void 0 ? void 0 : articles.length) && !FORMATS_ALLOW_NO_ARTICLES.includes(exp.format)) {
      return void 0;
    }
    const output2 = resolveOutput(session, sourceFile, vfile2, exp, projectPath);
    if (!output2)
      return void 0;
    return { ...exp, output: output2, articles, sub_articles, renderer };
  }).filter((exp) => !!exp);
  logMessagesFromVFile(session, vfile2);
  return filteredExportOptions;
}
function filterAndMakeUnique(exports2) {
  return exports2.filter((exp) => Boolean(exp)).map((exp, ind, arr) => {
    const nMatch = (a2) => a2.filter((e2) => e2.output === exp.output).length;
    if (nMatch(arr) === 1)
      return { ...exp };
    const { dir, name: name3, ext: ext2 } = import_node_path29.default.parse(exp.output);
    return {
      ...exp,
      output: import_node_path29.default.join(dir, `${name3}_${nMatch(arr.slice(0, ind))}${ext2}`)
    };
  });
}
async function collectExportOptions(session, files, formats, opts) {
  const { projectPath } = opts;
  const sourceFiles = [...files];
  if (projectPath) {
    await loadProjectFromDisk(session, projectPath);
    const configFile = selectors_exports.selectLocalConfigFile(session.store.getState(), projectPath);
    if (configFile)
      sourceFiles.push(configFile);
  }
  const exportOptionsList = [];
  await Promise.all(sourceFiles.map(async (file) => {
    let fileProjectPath;
    if (!projectPath) {
      fileProjectPath = await findCurrentProjectAndLoad(session, import_node_path29.default.dirname(file));
      if (fileProjectPath)
        await loadProjectFromDisk(session, fileProjectPath);
    } else {
      fileProjectPath = projectPath;
    }
    const fileExports = await getExportListFromFile(session, file, fileProjectPath, opts);
    const fileExportsWithFormat = resolveExportListFormats(session, file, formats, fileExports);
    const fileExportsResolved = resolveExportListArticles(session, file, fileExportsWithFormat, fileProjectPath, opts);
    exportOptionsList.push(...fileExportsResolved.map((exportOptions) => {
      return { ...exportOptions, $file: file, $project: fileProjectPath };
    }));
  }));
  return filterAndMakeUnique(exportOptionsList);
}

// ../myst-cli/dist/build/utils/projectManifest.js
async function manifestPagesFromProject(session, projectPath) {
  const state = session.store.getState();
  const proj = selectors_exports.selectLocalProject(state, projectPath);
  if (!proj)
    return [];
  const cache = castSession(session);
  const pages = await Promise.all(proj.pages.map(async (page) => {
    var _a6, _b, _c, _d2, _e, _f, _g, _h, _j, _k;
    if ("hidden" in page && page.hidden)
      return null;
    if ("file" in page) {
      const fileInfo3 = selectors_exports.selectFileInfo(state, page.file);
      const title = fileInfo3.title || fileTitle(page.file);
      const short_title = (_a6 = fileInfo3.short_title) !== null && _a6 !== void 0 ? _a6 : void 0;
      const description = (_b = fileInfo3.description) !== null && _b !== void 0 ? _b : "";
      const thumbnail = (_c = fileInfo3.thumbnail) !== null && _c !== void 0 ? _c : "";
      const thumbnailOptimized = (_d2 = fileInfo3.thumbnailOptimized) !== null && _d2 !== void 0 ? _d2 : "";
      const banner = (_e = fileInfo3.banner) !== null && _e !== void 0 ? _e : "";
      const bannerOptimized = (_f = fileInfo3.bannerOptimized) !== null && _f !== void 0 ? _f : "";
      const date = (_g = fileInfo3.date) !== null && _g !== void 0 ? _g : "";
      const tags = (_h = fileInfo3.tags) !== null && _h !== void 0 ? _h : [];
      const { slug, level, file } = page;
      const { frontmatter } = (_k = (_j = cache.$getMdast(file)) === null || _j === void 0 ? void 0 : _j.post) !== null && _k !== void 0 ? _k : {};
      const projectPage = {
        slug,
        title,
        short_title,
        description,
        date,
        thumbnail,
        thumbnailOptimized,
        banner,
        bannerOptimized,
        tags,
        level,
        enumerator: frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.enumerator
      };
      return projectPage;
    }
    if ("url" in page) {
      const { title, url, open_in_same_tab, level } = page;
      const externalURL = {
        title,
        url,
        open_in_same_tab,
        level
      };
      return externalURL;
    }
    return { ...page };
  }));
  return pages === null || pages === void 0 ? void 0 : pages.filter((p5) => p5 !== null);
}
function manifestTitleFromProject(session, projectPath) {
  const state = session.store.getState();
  const projConfig = selectors_exports.selectLocalProjectConfig(state, projectPath);
  if (projConfig === null || projConfig === void 0 ? void 0 : projConfig.title)
    return projConfig.title;
  const proj = selectors_exports.selectLocalProject(state, projectPath);
  if (!proj)
    return "Untitled";
  const projectFileInfo = selectors_exports.selectFileInfo(session.store.getState(), proj.file);
  return projectFileInfo.title || proj.index || "Untitled";
}
function indexFrontmatterFromProject(session, projectPath) {
  var _a6, _b;
  const state = session.store.getState();
  const cache = castSession(session);
  const proj = selectors_exports.selectLocalProject(state, projectPath);
  if (!proj)
    return {};
  const { file } = proj;
  const { frontmatter } = (_b = (_a6 = cache.$getMdast(file)) === null || _a6 === void 0 ? void 0 : _a6.post) !== null && _b !== void 0 ? _b : {};
  return frontmatter !== null && frontmatter !== void 0 ? frontmatter : {};
}

// ../myst-cli/dist/build/site/manifest.js
async function resolvePageExports(session, file) {
  const exports2 = (await collectExportOptions(session, [file], [
    ExportFormats.docx,
    ExportFormats.pdf,
    ExportFormats.tex,
    ExportFormats.typst,
    ExportFormats.xml,
    ExportFormats.meca
  ], {})).filter((exp) => {
    return [".docx", ".pdf", ".zip", ".xml"].includes(import_node_path30.default.extname(exp.output));
  }).filter((exp) => {
    return import_node_fs25.default.existsSync(exp.output);
  });
  const exportsAsDownloads = exports2.map((exp) => {
    const { format, output: output2 } = exp;
    const fileHash = hashAndCopyStaticFile(session, output2, session.publicPath(), (m2) => {
      addWarningForFile(session, file, m2, "error", {
        ruleId: RuleId.exportFileCopied
      });
    });
    return { format, filename: import_node_path30.default.basename(output2), url: `/${fileHash}` };
  });
  return exportsAsDownloads;
}
async function resolvePageDownloads(session, file, projectPath) {
  var _a6;
  const state = session.store.getState();
  if (!projectPath) {
    projectPath = selectors_exports.selectCurrentProjectPath(state);
  }
  const project = projectPath ? selectors_exports.selectLocalProject(session.store.getState(), projectPath) : void 0;
  const files = project ? filterPages(project).map((page) => page.file) : [file];
  const allExports = await collectExportOptions(session, files, [...Object.values(ExportFormats)], {
    projectPath
  });
  const expLookup = {};
  allExports.forEach((exp) => {
    if (exp.id)
      expLookup[exp.id] = exp;
  });
  const pageFrontmatter = await getRawFrontmatterFromFile(session, file, projectPath);
  const resolvedDownloads = (_a6 = pageFrontmatter === null || pageFrontmatter === void 0 ? void 0 : pageFrontmatter.downloads) === null || _a6 === void 0 ? void 0 : _a6.map((download) => {
    var _a7;
    if (download.id && !expLookup[download.id]) {
      addWarningForFile(session, file, `Unable to locate download file by export id "${download.id}"`, "error", {
        ruleId: RuleId.exportFileCopied
      });
      return void 0;
    }
    const idOrUrl = (_a7 = download.id) !== null && _a7 !== void 0 ? _a7 : download.url;
    if (!idOrUrl)
      return void 0;
    const exp = expLookup[idOrUrl];
    if (exp) {
      download.format = exp.format;
      download.url = exp.output;
      download.static = true;
    }
    if (!download.url)
      return void 0;
    return resolveSiteAction(session, download, file, "downloads");
  }).filter((download) => !!download);
  return resolvedDownloads;
}
async function localToManifestProject(session, projectPath, projectSlug) {
  if (!projectPath)
    return null;
  const state = session.store.getState();
  const projConfig = selectors_exports.selectLocalProjectConfig(state, projectPath);
  const proj = selectors_exports.selectLocalProject(state, projectPath);
  if (!proj)
    return null;
  const { index: index4 } = proj;
  const projectFileInfo = selectors_exports.selectFileInfo(state, proj.file);
  const pages = await manifestPagesFromProject(session, projectPath);
  const projFrontmatter = projConfig ? filterKeys(projConfig, PROJECT_FRONTMATTER_KEYS) : {};
  const projConfigFile = selectors_exports.selectLocalConfigFile(state, projectPath);
  const exports2 = projConfigFile ? await resolvePageExports(session, projConfigFile) : [];
  const downloads = projConfigFile ? await resolvePageDownloads(session, projConfigFile, projectPath) : void 0;
  const parts = resolveFrontmatterParts(session, projFrontmatter);
  const banner = await transformBanner(session, import_node_path30.default.join(projectPath, "myst.yml"), projFrontmatter, session.publicPath(), { altOutputFolder: "/", webp: true });
  const thumbnail = await transformThumbnail(session, null, import_node_path30.default.join(projectPath, "myst.yml"), projFrontmatter, session.publicPath(), { altOutputFolder: "/", webp: true });
  const frontmatter = indexFrontmatterFromProject(session, projectPath);
  return {
    ...projFrontmatter,
    // TODO: a null in the project frontmatter should not fall back to index page
    thumbnail: (thumbnail === null || thumbnail === void 0 ? void 0 : thumbnail.url) || projectFileInfo.thumbnail,
    thumbnailOptimized: (thumbnail === null || thumbnail === void 0 ? void 0 : thumbnail.urlOptimized) || // Do not fall back to optimized page thumbnail if unoptimized project thumbnail exists
    ((thumbnail === null || thumbnail === void 0 ? void 0 : thumbnail.url) ? void 0 : projectFileInfo.thumbnailOptimized) || void 0,
    banner: (banner === null || banner === void 0 ? void 0 : banner.url) || projectFileInfo.banner,
    bannerOptimized: (banner === null || banner === void 0 ? void 0 : banner.urlOptimized) || ((banner === null || banner === void 0 ? void 0 : banner.url) ? void 0 : projectFileInfo.bannerOptimized) || void 0,
    exports: exports2,
    downloads,
    parts,
    bibliography: projFrontmatter.bibliography || [],
    title: manifestTitleFromProject(session, projectPath),
    slug: projectSlug,
    index: index4,
    enumerator: frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.enumerator,
    pages
  };
}
async function resolveTemplateFileOptions(session, mystTemplate, options) {
  var _a6;
  const resolvedOptions = { ...options };
  await Promise.all(((_a6 = mystTemplate.getValidatedTemplateYml().options) !== null && _a6 !== void 0 ? _a6 : []).map(async (option3) => {
    if (option3.type === TemplateOptionType.file && options[option3.id]) {
      const configPath = selectors_exports.selectCurrentSitePath(session.store.getState());
      const absPath = configPath ? await resolveToAbsolute(session, configPath, options[option3.id], { allowRemote: true }) : options[option3.id];
      const fileHash = hashAndCopyStaticFile(session, absPath, session.publicPath(), (m2) => {
        addWarningForFile(session, options[option3.id], m2, "error", {
          ruleId: RuleId.templateFileCopied
        });
      });
      resolvedOptions[option3.id] = `/${fileHash}`;
    }
  }));
  return resolvedOptions;
}
function isInternalUrl(value) {
  return !!value.match("^(/[a-zA-Z0-9._-]+)+$");
}
function isUrl6(value) {
  if (isInternalUrl(value))
    return true;
  try {
    new URL(value);
  } catch {
    return false;
  }
  return true;
}
function resolveSiteAction(session, action, file, property) {
  var _a6, _b, _c;
  const title = action.title;
  if (action.static === false) {
    if (!title) {
      addWarningForFile(session, file, `"title" is required for resource "${action.url}" in ${property}`, "error");
      return void 0;
    }
    return {
      title,
      url: action.url,
      filename: action.filename,
      format: action.format,
      internal: isInternalUrl(action.url),
      static: false
    };
  }
  const resolvedFile = import_node_path30.default.resolve(import_node_path30.default.dirname(file), action.url);
  if (!import_node_fs25.default.existsSync(resolvedFile)) {
    if (action.static) {
      addWarningForFile(session, file, `Could not find static resource at "${action.url}" in ${property}`, "error", { ruleId: RuleId.staticActionFileCopied });
      return void 0;
    }
    if (!isUrl6(action.url)) {
      addWarningForFile(session, file, `Resource "${action.url}" in ${property} should be a URL or path to static file`, "error");
      return void 0;
    }
    if (!title) {
      addWarningForFile(session, file, `"title" is required for resource "${action.url}" in ${property}`, "error");
      return void 0;
    }
    return {
      title,
      url: action.url,
      filename: action.filename,
      format: action.format,
      internal: isInternalUrl(action.url),
      static: false
    };
  }
  if (!action.static && isUrl6(action.url)) {
    addWarningForFile(session, file, `Linking resource "${action.url}" in ${property} to static file; to mark this as a URL instead, use 'static: false'`);
  }
  const fileHash = hashAndCopyStaticFile(session, resolvedFile, session.publicPath(), (m2) => {
    addWarningForFile(session, resolvedFile, m2, "error", {
      ruleId: RuleId.staticActionFileCopied
    });
  });
  if (!title) {
    addWarningForFile(session, file, `using filename for title of resource "${action.url}" in ${property}`);
  }
  const filename = (_a6 = action.filename) !== null && _a6 !== void 0 ? _a6 : import_node_path30.default.basename(resolvedFile);
  return {
    title: (_b = action.title) !== null && _b !== void 0 ? _b : filename,
    url: `/${fileHash}`,
    filename,
    format: (_c = action.format) !== null && _c !== void 0 ? _c : EXT_TO_FORMAT[import_node_path30.default.extname(resolvedFile)],
    static: true
  };
}
async function getSiteManifest(session, opts) {
  var _a6, _b, _c, _d2;
  const state = session.store.getState();
  const siteConfig = selectors_exports.selectCurrentSiteConfig(state);
  const siteConfigFile = selectors_exports.selectCurrentSiteFile(state);
  if (!siteConfig || !siteConfigFile)
    throw Error("no site config defined");
  const siteProjects = (await Promise.all((_b = (_a6 = siteConfig.projects) === null || _a6 === void 0 ? void 0 : _a6.map(async (p5) => localToManifestProject(session, p5.path, p5.slug))) !== null && _b !== void 0 ? _b : [])).filter((p5) => !!p5);
  const { nav } = siteConfig;
  const actions = (_c = siteConfig.actions) === null || _c === void 0 ? void 0 : _c.map((action) => resolveSiteAction(session, action, siteConfigFile, "actions")).filter((action) => !!action);
  const siteFrontmatter = filterKeys(siteConfig, SITE_FRONTMATTER_KEYS);
  const mystTemplate = await getSiteTemplate(session, opts);
  const validatedOptions = mystTemplate.validateOptions((_d2 = siteFrontmatter.options) !== null && _d2 !== void 0 ? _d2 : {}, siteConfigFile, { allowRemote: true });
  const validatedFrontmatter = mystTemplate.validateDoc(siteFrontmatter, validatedOptions, void 0, siteConfigFile);
  const resolvedOptions = await resolveTemplateFileOptions(session, mystTemplate, validatedOptions);
  validatedFrontmatter.options = resolvedOptions;
  const parts = resolveFrontmatterParts(session, validatedFrontmatter);
  const manifest = {
    version: SPEC_VERSION,
    myst: version_default2,
    ...validatedFrontmatter,
    parts,
    nav: nav || [],
    actions: actions || [],
    projects: siteProjects
  };
  return manifest;
}

// ../myst-cli/dist/build/utils/bibtex.js
var import_node_fs26 = __toESM(require("fs"), 1);
var import_node_path31 = __toESM(require("path"), 1);
function writeBibtexFromCitationRenderers(session, output2, content3) {
  const order3 = content3.map(({ references }) => {
    var _a6, _b;
    return (_b = (_a6 = references.cite) === null || _a6 === void 0 ? void 0 : _a6.order) !== null && _b !== void 0 ? _b : [];
  }).flat();
  if (!order3.length)
    return false;
  const cache = castSession(session);
  const citationLookup = {};
  Object.values(cache.$citationRenderers).forEach((renderers) => {
    Object.entries(renderers).forEach(([key2, renderer]) => {
      citationLookup[key2] = renderer.exportBibTeX();
    });
  });
  const bibtexContent = [];
  order3.forEach((key2) => {
    if (bibtexContent.includes(citationLookup[key2]))
      return;
    if (citationLookup[key2]) {
      bibtexContent.push(citationLookup[key2]);
    } else {
      addWarningForFile(session, output2, `unknown citation ${key2}`);
    }
  });
  if (!bibtexContent.length)
    return false;
  if (!import_node_fs26.default.existsSync(output2))
    import_node_fs26.default.mkdirSync(import_node_path31.default.dirname(output2), { recursive: true });
  import_node_fs26.default.writeFileSync(output2, bibtexContent.join("\n"));
  return true;
}
function writeRemoteDOIBibtex(session, output2) {
  var _a6;
  const cache = castSession(session);
  const bibtexContent = [];
  Object.values((_a6 = cache.$citationRenderers[output2]) !== null && _a6 !== void 0 ? _a6 : {}).forEach((render3) => {
    bibtexContent.push(render3.exportBibTeX());
  });
  Object.values(cache.$doiRenderers).forEach(({ render: render3, remote }) => {
    if (!remote)
      return;
    bibtexContent.push(render3.exportBibTeX());
  });
  if (!bibtexContent.length)
    return false;
  bibtexContent.unshift("% AUTOGENERATED FILE - EDITS MAY BE LOST\n% To regenerate, run `myst build --doi-bib`\n");
  if (!import_node_fs26.default.existsSync(output2))
    import_node_fs26.default.mkdirSync(import_node_path31.default.dirname(output2), { recursive: true });
  import_node_fs26.default.writeFileSync(output2, bibtexContent.join("\n"));
  return true;
}

// ../myst-cli/dist/cli/options.js
var MYST_DOI_BIB_FILE = "myst.doi.bib";
function parseInt2(value) {
  const parsedValue = Number.parseInt(value, 10);
  if (isNaN(parsedValue))
    throw new InvalidArgumentError("Not a number.");
  return parsedValue;
}
function makePdfOption(description) {
  return new Option("--pdf", description).default(false);
}
function makeTexOption(description) {
  return new Option("--tex", description).default(false);
}
function makeTypstOption(description) {
  return new Option("--typst", description).default(false);
}
function makeDocxOption(description) {
  return new Option("--word, --docx", description).default(false);
}
function makeMdOption(description) {
  return new Option("--md", description).default(false);
}
function makeJatsOption(description) {
  return new Option("--jats, --xml", description).default(false);
}
function makeMecaOptions(description) {
  return new Option("--meca", description).default(false);
}
function makeCffOption(description) {
  return new Option("--cff", description).default(false);
}
function makeSiteOption(description) {
  return new Option("--site", description).default(false);
}
function makeHtmlOption(description) {
  return new Option("--html", description).default(false);
}
function makeLogsOption(description) {
  return new Option("--logs", description).default(false);
}
function makeCacheOption(description) {
  return new Option("--cache", description).default(false);
}
function makeExecuteOption(description) {
  return new Option("--execute", description).default(false);
}
function makeAllOption(description) {
  return new Option("-a, --all", description).default(false);
}
function makeDOIBibOption() {
  return new Option("--doi-bib", `Generate (or regenerate) ${MYST_DOI_BIB_FILE} file containing bibtex entries for all remotely loaded DOI citations`).default(false).implies({ writeDOIBib: true });
}
function makeWatchOption() {
  return new Option("--watch", "Watch modified files and re-build on change").default(false);
}
function makeNamedExportOption(description) {
  return new Option("-o, --output <output>", description);
}
function makeStrictOption() {
  return new Option("--strict", "Summarize build warnings and stop on any errors.").default(false);
}
function makeForceOption(description) {
  return new Option("--force", description).default(false);
}
function makeCheckLinksOption() {
  return new Option("--check-links", "Check all links to websites resolve.").default(false);
}
function makeKeepHostOption() {
  return new Option("--keep-host", 'The HOST environment variable is changed to "localhost" by default. This flag uses the original environment variable.').default(false);
}
function makeHeadlessOption() {
  return new Option("--headless", "Run the server in headless mode, with only the content server started").default(false);
}
function makePortOption() {
  return new Option("--port <port>", "Run the application server from the specified port number").argParser(parseInt2).env("PORT").default(void 0);
}
function makeServerPortOption() {
  return new Option("--server-port <server-port>", "Run the content server from the specified port number").argParser(parseInt2).env("SERVER_PORT").default(void 0);
}
function makeTemplateOption() {
  return new Option("--template <path-to-template>", "Use this template file, instead of the one specified in the myst.yml manifest").default(void 0);
}
function makeYesOption() {
  return new Option("-y, --yes", "Automatically respond yes to prompts").default(false);
}
function makeCIOption() {
  return new Option("--ci", "Indicate the command is running during automated continuous integration").default(false);
}
function makeMaxSizeWebpOption() {
  return new Option("--max-size-webp <size>", "Max image size to convert to webp format in MB").default(1.5 * 1024 * 1024, "1.5").argParser((value) => {
    if (value == null)
      return void 0;
    const parsedValue = parseFloat(value);
    if (isNaN(parsedValue)) {
      throw new InvalidArgumentError("Must be number");
    }
    return parsedValue * 1024 * 1024;
  });
}
function makeTempOption() {
  return new Option("--temp", "Delete the _build/temp folder where intermediate build artifacts are saved").default(false);
}
function makeExportsOption() {
  return new Option("--exports", "Delete the _build/exports folder where exports are saved by default").default(false);
}
function makeTemplatesOption() {
  return new Option("--templates", "Delete the _build/templates folder where downloaded templates are saved").default(false);
}

// ../myst-cli/dist/process/loadReferences.js
var import_node_fs27 = __toESM(require("fs"), 1);

// ../myst-cli/dist/transforms/crossReferences.js
var XREF_MAX_AGE = 1;
function mystDataFilename(dataUrl) {
  return `myst-${computeHash(dataUrl)}.json`;
}
async function fetchMystData(session, dataUrl, urlSource, vfile2) {
  const onError = (note) => {
    var _a6;
    fileWarn(vfile2, `Unable to resolve link text from external MyST reference: ${(_a6 = urlSource !== null && urlSource !== void 0 ? urlSource : dataUrl) !== null && _a6 !== void 0 ? _a6 : ""}`, {
      ruleId: RuleId.mystLinkValid,
      note
    });
  };
  if (!dataUrl) {
    return onError("Data source URL unavailable");
  }
  const filename = mystDataFilename(dataUrl);
  const cacheData = loadFromCache(session, filename, { maxAge: XREF_MAX_AGE });
  if (cacheData) {
    return JSON.parse(cacheData);
  }
  let data;
  try {
    const resp = await session.fetch(dataUrl);
    if (!resp.ok) {
      return onError("Could not fetch data from URL");
    }
    data = await resp.json();
  } catch {
    return onError("Could not load fetched data");
  }
  writeToCache(session, filename, JSON.stringify(data));
  return data;
}
async function fetchMystLinkData(session, node3, vfile2) {
  return fetchMystData(session, node3.dataUrl, node3.urlSource, vfile2);
}
async function fetchMystXRefData(session, node3, vfile2) {
  let dataUrl;
  if (node3.remoteBaseUrl && node3.dataUrl) {
    dataUrl = `${node3.remoteBaseUrl}${node3.dataUrl}`;
  }
  return fetchMystData(session, dataUrl, node3.urlSource, vfile2);
}
function nodesFromMystXRefData(data, identifier, vfile2, opts) {
  var _a6, _b;
  let targetNodes;
  [data, ...Object.values((_b = (_a6 = data.frontmatter) === null || _a6 === void 0 ? void 0 : _a6.parts) !== null && _b !== void 0 ? _b : {})].forEach(({ mdast: mdast2 }) => {
    if (!mdast2 || (targetNodes === null || targetNodes === void 0 ? void 0 : targetNodes.length))
      return;
    targetNodes = selectMdastNodes(mdast2, identifier, opts === null || opts === void 0 ? void 0 : opts.maxNodes).nodes;
  });
  if (!(targetNodes === null || targetNodes === void 0 ? void 0 : targetNodes.length)) {
    fileWarn(vfile2, `Unable to resolve content from external MyST reference: ${opts === null || opts === void 0 ? void 0 : opts.urlSource}`, {
      ruleId: RuleId.mystLinkValid,
      note: `Could not locate identifier ${identifier} in page content`
    });
    return;
  }
  return targetNodes;
}
async function transformMystXRefs(session, vfile2, mdast2, frontmatter) {
  const toc = tic();
  const nodes = selectAll("link,crossReference", mdast2).filter((node3) => {
    return node3.protocol === "xref:myst" && node3.dataUrl;
  }).filter((node3) => {
    var _a6;
    if (!((_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.length))
      return true;
    return !!node3.identifier;
  });
  if (nodes.length === 0)
    return;
  session.log.debug(`Updating link text for ${plural("%s external MyST reference(s)", nodes)}`);
  let number2 = 0;
  await Promise.all([
    ...nodes.map(async (node3) => {
      var _a6, _b, _c, _d2, _e;
      if (!node3.identifier) {
        const data = await fetchMystLinkData(session, node3, vfile2);
        if (!data)
          return;
        node3.children = [{ type: "text", value: (_c = (_b = (_a6 = data.frontmatter) === null || _a6 === void 0 ? void 0 : _a6.title) !== null && _b !== void 0 ? _b : data.slug) !== null && _c !== void 0 ? _c : "" }];
      } else {
        const data = await fetchMystXRefData(session, node3, vfile2);
        if (!data)
          return;
        const targets = nodesFromMystXRefData(data, node3.identifier, vfile2, {
          urlSource: node3.urlSource,
          maxNodes: 1
        });
        if (targets === null || targets === void 0 ? void 0 : targets.length) {
          addChildrenFromTargetNode(node3, targets[0], frontmatter.numbering, vfile2, (_e = (_d2 = frontmatter.numbering) === null || _d2 === void 0 ? void 0 : _d2.title) === null || _e === void 0 ? void 0 : _e.offset);
        }
      }
      number2 += 1;
    })
  ]);
  const denominator = number2 === nodes.length ? "" : `/${nodes.length}`;
  session.log.info(toc(`\u{1FA84} Updated link text for ${plural(`%s${denominator} external MyST reference(s)`, number2)} in %s`));
}

// ../myst-cli/dist/process/loadReferences.js
var import_node_path32 = require("path");
function inventoryCacheFilename(refKind, id, path45) {
  const hashcontent = `${id}${path45}`;
  const ext2 = refKind === "intersphinx" ? "inv" : "json";
  return `xrefs-${refKind}-${computeHash(hashcontent)}.${ext2}`;
}
async function preloadReference(session, key2, reference) {
  const ref = {
    key: key2,
    url: reference.url,
    kind: reference.kind
  };
  const toc = tic();
  const mystXRefFilename = inventoryCacheFilename("myst", key2, reference.url);
  const mystXRefData = loadFromCache(session, mystXRefFilename, {
    maxAge: XREF_MAX_AGE
  });
  const intersphinxFilename = inventoryCacheFilename("intersphinx", key2, reference.url);
  if ((!ref.kind || ref.kind === "myst") && !!mystXRefData) {
    session.log.debug(`Loading cached inventory file for ${reference.url}: ${mystXRefFilename}`);
    const xrefs = JSON.parse(mystXRefData);
    session.log.info(toc(`\u{1F3EB} Read ${xrefs.references.length} myst references for "${key2}" in %s (cached).`));
    ref.kind = "myst";
    ref.value = xrefs;
  } else if ((!ref.kind || ref.kind === "intersphinx") && checkCache(session, intersphinxFilename, { maxAge: XREF_MAX_AGE })) {
    const inventory = new Inventory({ id: key2, path: reference.url });
    const localInventory = new Inventory({
      id: key2,
      path: cachePath(session, intersphinxFilename)
    });
    session.log.debug(`Loading cached inventory file for ${reference.url}: ${intersphinxFilename}`);
    await localInventory.load();
    inventory.project = localInventory.project;
    inventory.version = localInventory.version;
    inventory.data = localInventory.data;
    inventory._loaded = true;
    session.log.info(toc(`\u{1F3EB} Read ${inventory.numEntries} intersphinx references for "${key2}" in %s (cached).`));
    ref.kind = "intersphinx";
    ref.value = inventory;
  }
  return ref;
}
async function loadReference(session, vfile2, reference) {
  var _a6;
  if (reference.kind === "myst" && reference.value) {
    return reference;
  }
  if (reference.kind === "intersphinx" && ((_a6 = reference.value) === null || _a6 === void 0 ? void 0 : _a6._loaded)) {
    return reference;
  }
  let mystXrefFetchError = false;
  if (!reference.kind || reference.kind === "myst") {
    const mystXRefsUrl = `${reference.url}/myst.xref.json`;
    session.log.debug(`Attempting to load MyST xref file: ${mystXRefsUrl}`);
    const toc = tic();
    let mystXRefsResp;
    try {
      mystXRefsResp = await session.fetch(mystXRefsUrl);
    } catch {
      session.log.debug(`Request to ${mystXRefsUrl} failed`);
    }
    if ((mystXRefsResp === null || mystXRefsResp === void 0 ? void 0 : mystXRefsResp.status) === 200) {
      reference.kind = "myst";
      const mystXRefs = await (mystXRefsResp === null || mystXRefsResp === void 0 ? void 0 : mystXRefsResp.json());
      session.log.debug(`Saving remote myst xref file to cache: ${reference.url}`);
      writeToCache(session, inventoryCacheFilename("myst", reference.key, reference.url), JSON.stringify(mystXRefs));
      reference.value = mystXRefs;
      session.log.info(toc(`\u{1F3EB} Read ${mystXRefs.references.length} myst references for "${reference.key}" in %s.`));
      return reference;
    } else if (reference.kind === "myst") {
      fileError(vfile2, `Problem fetching references entry: ${reference.key} (${mystXRefsUrl})`, {
        ruleId: RuleId.intersphinxReferencesResolve
      });
      return;
    } else {
      mystXrefFetchError = true;
      session.log.debug(`Unable to load reference "${reference.key}" as MyST cross-references`);
    }
  }
  if (!reference.kind || reference.kind === "intersphinx") {
    const inventory = new Inventory({ id: reference.key, path: reference.url });
    const toc = tic();
    try {
      session.log.debug(`Attempting to load inventory file ${inventory.path}/objects.inv`);
      await inventory.load();
    } catch (error) {
      if (reference.kind === "intersphinx") {
        session.log.debug(`

${error === null || error === void 0 ? void 0 : error.stack}

`);
        fileError(vfile2, `Problem fetching references entry: ${inventory.id} (${inventory.path})`, {
          ruleId: RuleId.intersphinxReferencesResolve
        });
      } else {
        fileError(vfile2, `Unable to load reference "${reference.key}" as ${mystXrefFetchError ? `MyST cross-references or ` : ""}intersphinx`, {
          ruleId: RuleId.intersphinxReferencesResolve
        });
      }
      return;
    }
    reference.kind = "intersphinx";
    reference.value = inventory;
    if (inventory.id && inventory.path && isUrl2(inventory.path)) {
      const intersphinxPath = cachePath(session, inventoryCacheFilename("intersphinx", inventory.id, inventory.path));
      if (!import_node_fs27.default.existsSync(intersphinxPath)) {
        session.log.debug(`Saving remote inventory file to cache: ${inventory.path}`);
        import_node_fs27.default.mkdirSync((0, import_node_path32.dirname)(intersphinxPath), { recursive: true });
        inventory.write(intersphinxPath);
      }
    }
    session.log.info(toc(`\u{1F3EB} Read ${inventory.numEntries} intersphinx references for "${inventory.id}" in %s.`));
    return reference;
  }
  fileError(vfile2, `Unable to resolve references: ${reference.key} (${reference.url})`, {
    ruleId: RuleId.intersphinxReferencesResolve
  });
}
async function loadReferences(session, opts) {
  const state = session.store.getState();
  const projectConfig = selectors_exports.selectLocalProjectConfig(state, opts.projectPath);
  const configFile = selectors_exports.selectLocalConfigFile(state, opts.projectPath);
  if (!(projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.references) || !configFile)
    return;
  const vfile2 = new VFile();
  vfile2.path = configFile;
  const cache = castSession(session);
  const references = await Promise.all(Object.entries(projectConfig.references).map(async ([key2, val]) => {
    if (!cache.$externalReferences[key2]) {
      cache.$externalReferences[key2] = await preloadReference(session, key2, val);
    }
    return cache.$externalReferences[key2];
  }).filter((exists2) => !!exists2));
  await Promise.all(references.map(async (ref) => {
    await loadReference(session, vfile2, ref);
  }));
  logMessagesFromVFile(session, vfile2);
}

// ../myst-cli/dist/process/mdast.js
var import_node_path39 = __toESM(require("path"), 1);

// ../myst-cli/dist/transforms/citations.js
function pushCite(references, citeRenderer, label) {
  var _a6, _b, _c;
  if (!references.cite) {
    references.cite = { order: [], data: {} };
  }
  if (!references.cite.data[label]) {
    references.cite.order.push(label);
    references.cite.data[label] = {
      label,
      enumerator: `${references.cite.order.length}`,
      doi: (_a6 = citeRenderer[label]) === null || _a6 === void 0 ? void 0 : _a6.getDOI(),
      html: (_b = citeRenderer[label]) === null || _b === void 0 ? void 0 : _b.render(),
      url: (_c = citeRenderer[label]) === null || _c === void 0 ? void 0 : _c.getURL()
    };
  }
  return references.cite.data[label].enumerator;
}
function addCitationChildren(session, file, cite3, renderer) {
  const render3 = renderer[cite3.label];
  if (!render3) {
    cite3.error = "not found";
    return false;
  }
  let children;
  try {
    children = render3.inline(cite3.kind === "narrative" ? InlineCite.t : InlineCite.p, {
      prefix: cite3.prefix,
      suffix: cite3.suffix,
      partial: cite3.partial
    });
  } catch (error) {
    addWarningForFile(session, file, `Citation failed to render for label: ${cite3.label}`, "error", {
      ruleId: RuleId.citationRenders
    });
    cite3.error = "rendering error";
    return false;
  }
  if (!hasChildren(cite3))
    cite3.children = children;
  delete cite3.error;
  return true;
}
function hasChildren(node3) {
  return node3.children && node3.children.length > 0;
}
function transformCitations(session, file, mdast2, renderer, references) {
  const citations = selectAll("cite", mdast2);
  citations.forEach((cite3) => {
    const citeLabel = cite3.label;
    const success = addCitationChildren(session, file, cite3, renderer);
    if (success)
      cite3.enumerator = pushCite(references, renderer, citeLabel);
  });
}

// ../myst-cli/dist/transforms/code.js
var CELL_OPTION_PREFIX = /^#\s?\| /;
var IPYTHON_MAGIC = /^%%/;
function metadataFromCode(session, file, value, opts) {
  const metaLines = [];
  const outputLines = [];
  let expectIpython = true;
  let inHeader = true;
  value.split("\n").forEach((line2) => {
    if (inHeader) {
      if (expectIpython && line2.match(IPYTHON_MAGIC)) {
        if (opts === null || opts === void 0 ? void 0 : opts.remove)
          outputLines.push(line2);
        expectIpython = false;
      } else if (line2.match(CELL_OPTION_PREFIX)) {
        metaLines.push(line2.replace(CELL_OPTION_PREFIX, ""));
      } else if (line2.trim()) {
        inHeader = false;
      }
    }
    if (!inHeader || !(opts === null || opts === void 0 ? void 0 : opts.remove)) {
      outputLines.push(line2);
    }
  });
  let metadata;
  if (metaLines.length) {
    try {
      metadata = js_yaml_default.load(metaLines.join("\n"));
    } catch {
      fileError(file, `Invalid code cell metadata`, { ruleId: RuleId.codeMetadataLoads });
    }
  }
  if (!metadata) {
    return { value };
  }
  return {
    value: outputLines.join("\n"),
    metadata
  };
}
function liftCodeMetadataToBlock(session, file, mdast2) {
  const blocks2 = selectAll("block", mdast2);
  blocks2.forEach((block5) => {
    const codeNodes = selectAll("code", block5);
    let blockMetadata;
    codeNodes.forEach((node3) => {
      if (!node3.value)
        return;
      const { metadata, value } = metadataFromCode(session, file, node3.value, { remove: true });
      if (blockMetadata && metadata) {
        fileWarn(file, `Multiple code blocks with metadata found in ${file.path}`, {
          node: node3,
          ruleId: RuleId.codeMetadataLifted
        });
      } else {
        blockMetadata = metadata;
      }
      node3.value = value;
    });
    if (blockMetadata) {
      block5.data = block5.data ? { ...block5.data, ...blockMetadata } : blockMetadata;
    }
  });
}
function checkMetaTags(vfile2, node3, tags, filter6) {
  const metaTagsCounter = /* @__PURE__ */ new Map();
  for (const action of ["hide", "remove"]) {
    for (const target of ["cell", "input", "output"]) {
      metaTagsCounter.set(`${action}-${target}`, 0);
    }
  }
  const check2 = (tag) => {
    const isMetaTag = metaTagsCounter.has(tag);
    if (isMetaTag) {
      metaTagsCounter.set(tag, metaTagsCounter.get(tag) + 1);
    }
    return !isMetaTag;
  };
  if (filter6) {
    tags.splice(0, tags.length, ...tags.filter(check2));
  } else {
    tags.forEach(check2);
  }
  const validMetatags = [];
  metaTagsCounter.forEach((value, key2) => {
    if (value >= 2) {
      fileWarn(vfile2, `tag '${key2}' is duplicated`, { node: node3, ruleId: RuleId.codeMetatagsValid });
    }
  });
  for (const target of ["cell", "input", "output"]) {
    const hide = metaTagsCounter.get(`hide-${target}`) > 0;
    const remove3 = metaTagsCounter.get(`remove-${target}`) > 0;
    if (hide && remove3) {
      fileWarn(vfile2, `'hide-${target}' and 'remove-${target}' both exist`, {
        node: node3,
        ruleId: RuleId.codeMetatagsValid
      });
      validMetatags.push(`remove-${target}`);
    } else if (hide) {
      validMetatags.push(`hide-${target}`);
    } else if (remove3) {
      validMetatags.push(`remove-${target}`);
    }
  }
  return validMetatags;
}
function propagateBlockDataToCode(session, vfile2, mdast2) {
  const blocks2 = selectAll("block", mdast2);
  blocks2.forEach((block5) => {
    if (!block5.data)
      return;
    const outputNode = select("output", block5);
    if (block5.data.placeholder && outputNode) {
      if (!outputNode.children)
        outputNode.children = [];
      outputNode.children.push({
        type: "image",
        placeholder: true,
        url: block5.data.placeholder,
        alt: block5.data.alt,
        width: block5.data.width,
        height: block5.data.height,
        align: block5.data.align
      });
    }
    if (!block5.data.tags)
      return;
    if (!Array.isArray(block5.data.tags)) {
      fileError(vfile2, `tags in code-cell directive must be a list of strings`, {
        node: block5,
        ruleId: RuleId.codeMetatagsValid
      });
      return;
    }
    const validMetatags = checkMetaTags(vfile2, block5, block5.data.tags, true);
    const codeNode = select("code[executable=true]", block5);
    validMetatags.forEach((tag) => {
      switch (tag) {
        // should we raise when hide and remove both exist?
        case NotebookCellTags.hideCell:
          block5.visibility = "hide";
          break;
        case NotebookCellTags.removeCell:
          block5.visibility = "remove";
          break;
        case NotebookCellTags.hideInput:
          if (codeNode)
            codeNode.visibility = "hide";
          break;
        case NotebookCellTags.removeInput:
          if (codeNode)
            codeNode.visibility = "remove";
          break;
        case NotebookCellTags.hideOutput:
          if (outputNode)
            outputNode.visibility = "hide";
          break;
        case NotebookCellTags.removeOutput:
          if (outputNode)
            outputNode.visibility = "remove";
          break;
        default:
          session.log.debug(`tag '${tag}' is not valid in code-cell tags'`);
      }
    });
    if (!block5.visibility)
      block5.visibility = "show";
    if (codeNode && !codeNode.visibility)
      codeNode.visibility = "show";
    if (outputNode && !outputNode.visibility)
      outputNode.visibility = "show";
  });
}
function transformLiftCodeBlocksInJupytext(mdast2) {
  const flattened = mdast2.children.reduce((acc, node3) => {
    var _a6, _b;
    if (node3.type !== "block" || !node3.children)
      return [...acc, node3];
    const buriedCodeCells = selectAll("block:has(block)", node3);
    if (buriedCodeCells.length === 0)
      return [...acc, node3];
    const newBlocks = [{ ...node3, children: [] }];
    (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.forEach((child) => {
      var _a7, _b2, _c, _d2;
      if (child.type === "block" && ((_a7 = child.children) === null || _a7 === void 0 ? void 0 : _a7.length) === 2 && ((_b2 = child.children) === null || _b2 === void 0 ? void 0 : _b2[0].type) === "code" && ((_c = child.children) === null || _c === void 0 ? void 0 : _c[1].type) === "output") {
        newBlocks.push(child);
        newBlocks.push({ type: "block", children: [] });
        return;
      }
      (_d2 = newBlocks[newBlocks.length - 1].children) === null || _d2 === void 0 ? void 0 : _d2.push(child);
    });
    if (((_b = newBlocks[newBlocks.length - 1].children) === null || _b === void 0 ? void 0 : _b.length) === 0)
      newBlocks.pop();
    return [...acc, ...newBlocks];
  }, []);
  mdast2.children = flattened;
}

// ../myst-cli/dist/transforms/dois.js
var CSL_JSON_MIMETYPE = "application/vnd.citationstyles.csl+json";
var BIBTEX_MIMETYPE = "application/x-bibtex";
function doiCSLJSONCacheFilename(normalizedDoi) {
  return `doi-${computeHash(normalizedDoi)}.csl.json`;
}
function doiResolvesCacheFilename(normalizedDoi) {
  return `doi-${computeHash(normalizedDoi)}.txt`;
}
async function resolveDOIAsBibTeX(session, url) {
  session.log.debug("Fetching DOI BibTeX from doi.org");
  const response = await session.fetch(url, {
    headers: [["Accept", BIBTEX_MIMETYPE]]
  }).catch(() => {
    session.log.debug(`Request to ${url} failed.`);
    return void 0;
  });
  if (!response || !response.ok) {
    session.log.debug(`doi.org fetch failed for ${url}`);
    return void 0;
  }
  const data = await response.text();
  return parseBibTeX(data);
}
async function resolveDOIAsCSLJSON(session, url) {
  session.log.debug("Fetching DOI CSL JSON from doi.org");
  const response = await session.fetch(url, {
    headers: [["Accept", CSL_JSON_MIMETYPE]]
  }).catch(() => {
    session.log.debug(`Request to ${url} failed.`);
    return void 0;
  });
  if (!response || !response.ok) {
    session.log.debug(`doi.org fetch failed for ${url}`);
    return void 0;
  }
  const data = await response.json();
  return parseCSLJSON([data]);
}
async function resolveDoiOrg(session, doiString) {
  const normalizedDoi = doi.normalize(doiString);
  const url = doi.buildUrl(doiString);
  if (!doi.validate(doiString) || !normalizedDoi || !url)
    return void 0;
  const filename = doiCSLJSONCacheFilename(normalizedDoi);
  const cached = loadFromCache(session, filename);
  if (cached) {
    session.log.debug(`Loaded cached reference CSL-JSON for doi:${normalizedDoi}`);
    return JSON.parse(cached);
  }
  const toc = tic();
  let data;
  try {
    data = await resolveDOIAsBibTeX(session, url);
    if (data) {
      session.log.debug(toc(`Fetched reference BibTeX for doi:${normalizedDoi} in %s`));
    } else {
      session.log.debug(`BibTeX not available from doi.org for doi:${normalizedDoi}, trying CSL-JSON`);
    }
  } catch (error) {
    session.log.debug(`BibTeX from doi.org was malformed for doi:${normalizedDoi}, trying CSL-JSON`);
  }
  if (!data) {
    try {
      data = await resolveDOIAsCSLJSON(session, url);
      if (data) {
        session.log.debug(toc(`Fetched reference CSL-JSON for doi:${normalizedDoi} in %s`));
      } else {
        session.log.debug(`CSL-JSON not available from doi.org for doi:${normalizedDoi}`);
      }
    } catch (error) {
      session.log.debug(`CSL-JSON from doi.org was malformed for doi:${normalizedDoi}`);
    }
  }
  if (!data)
    return void 0;
  session.log.debug(`Saving DOI CSL-JSON to cache ${filename}`);
  writeToCache(session, filename, JSON.stringify(data));
  return data;
}
async function doiOrgResolves(session, doiString) {
  const normalizedDoi = doi.normalize(doiString);
  const url = doi.buildUrl(doiString);
  if (!doi.validate(doiString) || !normalizedDoi || !url)
    return false;
  const filename = doiResolvesCacheFilename(normalizedDoi);
  const cached = loadFromCache(session, filename);
  if (cached) {
    session.log.debug(`Loaded cached resolution result for doi:${normalizedDoi}`);
    return true;
  }
  const toc = tic();
  session.log.debug("Resolving doi existence from doi.org");
  const response = await session.fetch(url).catch(() => {
    session.log.debug(`Request to ${url} failed.`);
    return null;
  });
  if (!response || !response.ok) {
    session.log.debug(`doi.org fetch failed for ${doiString}`);
    return false;
  }
  session.log.debug(toc(`Resolved doi existence for doi:${normalizedDoi} in %s`));
  session.log.debug(`Saving resolution result to cache ${filename}`);
  writeToCache(session, filename, "ok");
  return true;
}
async function getCitation(session, vfile2, doiString, node3) {
  if (!doi.validate(doiString))
    return null;
  const data = await resolveDoiOrg(session, doiString);
  if (!data) {
    const resolves = await doiOrgResolves(session, doiString);
    const normalizedDoi = doi.normalize(doiString);
    let message;
    let note;
    if (resolves) {
      message = `Citation data from doi.org was not available or malformed for doi:${normalizedDoi}`;
      note = `To resolve this error, visit ${doi.buildUrl(doiString)} and add citation info to local BibTeX file`;
    } else {
      message = `Could not find DOI "${doiString}" from doi.org as doi:${normalizedDoi}`;
      note = "Please check the DOI and, if correct, add citation info to local BibTeX file";
    }
    fileError(vfile2, message, {
      node: node3,
      ruleId: RuleId.doiLinkValid,
      note
    });
    return null;
  }
  try {
    const renderer = getCitationRenderers(data);
    const id = Object.keys(renderer)[0];
    const render3 = renderer[id];
    return { id, render: render3, remote: true };
  } catch (error) {
    fileError(vfile2, `Citation data from doi.org was malformed, please edit and add to your local references`, {
      node: node3,
      ruleId: RuleId.doiLinkValid,
      note: `Citation data from ${doiString}:

${JSON.stringify(data)}
`
    });
    return null;
  }
}
async function transformLinkedDOIs(session, vfile2, mdast2, doiRenderer, path45) {
  const toc = tic();
  const renderer = {};
  const linkedDois = [];
  const citeDois = [];
  selectAll("link", mdast2).forEach((node3) => {
    const { url } = node3;
    if (!doi.validate(url))
      return;
    linkedDois.push(node3);
  });
  selectAll("cite", mdast2).forEach((node3) => {
    const { label } = node3;
    if (!doi.validate(label))
      return;
    citeDois.push(node3);
  });
  if (linkedDois.length === 0 && citeDois.length === 0)
    return renderer;
  const total = linkedDois.length + citeDois.length;
  session.log.debug(`Found ${plural("%s DOI(s)", total)} to auto link.`);
  const logData = { total, done: false };
  setTimeout(() => {
    if (!logData.done) {
      session.log.info(`\u23F3 Waiting to resolve up to ${plural("%s DOI(s)", logData.total)} from doi.org...`);
    }
  }, 5e3);
  let number2 = 0;
  await Promise.all([
    ...linkedDois.map((node3) => session.doiLimiter(async () => {
      var _a6;
      const normalized = (_a6 = doi.normalize(node3.url)) === null || _a6 === void 0 ? void 0 : _a6.toLowerCase();
      if (!normalized)
        return false;
      let cite3 = doiRenderer[normalized];
      if (!cite3) {
        cite3 = await getCitation(session, vfile2, node3.url, node3);
        if (cite3)
          number2 += 1;
        else
          return false;
      }
      const label = cite3.render.getLabel();
      if (cite3.remote) {
        renderer[label] = cite3.render;
      }
      doiRenderer[normalized] = cite3;
      const citeNode = node3;
      citeNode.type = "cite";
      citeNode.kind = "narrative";
      citeNode.label = label;
      citeNode.identifier = node3.url;
      if (doi.validate(toText(citeNode.children))) {
        citeNode.children = [];
      }
      return true;
    })),
    ...citeDois.map((node3) => session.doiLimiter(async () => {
      var _a6;
      const normalized = (_a6 = doi.normalize(node3.label)) === null || _a6 === void 0 ? void 0 : _a6.toLowerCase();
      if (!normalized)
        return false;
      let cite3 = doiRenderer[normalized];
      if (!cite3) {
        cite3 = await getCitation(session, vfile2, node3.label, node3);
        if (cite3)
          number2 += 1;
        else
          return false;
      }
      const label = cite3.render.getLabel();
      if (cite3.remote) {
        renderer[label] = cite3.render;
      }
      doiRenderer[normalized] = cite3;
      node3.label = label;
      return true;
    }))
  ]);
  logData.done = true;
  if (number2 > 0) {
    session.log.info(toc(`\u{1FA84}  Linked ${plural("%s DOI(s)", number2)} from doi.org in %s for ${path45}`));
  }
  return renderer;
}

// ../myst-cli/dist/transforms/ror.js
var ROR_MAX_AGE = 30;
function rorCacheFilename(ror) {
  return `ror-${computeHash(ror)}.json`;
}
async function resolveRORAsJSON(session, ror) {
  const url = `https://api.ror.org/organizations/${ror}`;
  session.log.debug(`Fetching ROR JSON from ${url}`);
  const response = await session.fetch(url).catch(() => {
    session.log.debug(`Request to ${url} failed.`);
    return void 0;
  });
  if (!response || !response.ok) {
    session.log.debug(`ROR fetch failed for ${url}`);
    return void 0;
  }
  const data = await response.json();
  return data;
}
async function resolveROR(session, vfile2, node3, ror) {
  if (!ror)
    return void 0;
  const filename = rorCacheFilename(ror);
  const cached = loadFromCache(session, filename, { maxAge: ROR_MAX_AGE });
  if (cached)
    return JSON.parse(cached);
  const toc = tic();
  let data;
  try {
    data = await resolveRORAsJSON(session, ror);
    if (data) {
      session.log.debug(toc(`Fetched ROR JSON for ror:${ror} in %s`));
    } else {
      fileError(vfile2, `Could not find ROR "${ror}" from https://ror.org/${ror}`, {
        node: node3,
        ruleId: RuleId.rorLinkValid,
        note: `Please check the ROR is correct and has a page at https://ror.org/${ror}`
      });
      session.log.debug(`JSON not available from ror.org for ror:${ror}`);
    }
  } catch (error) {
    session.log.debug(`JSON from ror.org was malformed for ror:${ror}`);
  }
  if (!data)
    return void 0;
  writeToCache(session, filename, JSON.stringify(data));
  return data;
}
async function transformLinkedRORs(session, vfile2, mdast2, path45) {
  const toc = tic();
  const linkedRORs = selectAll("link[protocol=ror]", mdast2);
  if (linkedRORs.length === 0)
    return;
  session.log.debug(`Found ${plural("%s ROR(s)", linkedRORs.length)} to auto link.`);
  let number2 = 0;
  await Promise.all([
    ...linkedRORs.map(async (node3) => {
      var _a6;
      const ror = (_a6 = node3.data) === null || _a6 === void 0 ? void 0 : _a6.ror;
      if (!ror)
        return;
      number2 += 1;
      const rorData = await resolveROR(session, vfile2, node3, ror);
      if (rorData && toText(node3.children) === ror) {
        node3.children = [{ type: "text", value: rorData.name }];
      }
      return true;
    })
  ]);
  if (number2 > 0) {
    session.log.info(toc(`\u{1FA84}  Linked ${plural("%s ROR(s)", number2)} in %s for ${path45}`));
  }
  return;
}

// ../myst-cli/dist/transforms/embed.js
var import_node_fs28 = __toESM(require("fs"), 1);
var import_node_path33 = __toESM(require("path"), 1);

// ../../node_modules/unist-util-filter/lib/index.js
var own16 = {}.hasOwnProperty;
var filter2 = (
  /**
   * @type {(
   *  (<Tree extends Node, Check extends Test>(node: Tree, options: Options | null | undefined, test: Check | null | undefined) => import('./complex-types.js').Matches<Tree, Check>) &
   *  (<Tree extends Node, Check extends Test>(node: Tree, test: Check) => import('./complex-types.js').Matches<Tree, Check>) &
   *  (<Tree extends Node>(node: Tree, options?: Options | null | undefined) => Tree)
   * )}
   */
  /**
   * @param {Node} tree
   * @param {Options | Test | null | undefined} [options]
   * @param {Test | null | undefined} [test]
   * @returns {Node | null}
   */
  (function(tree, options, test2) {
    const is4 = convert(test2 || options);
    const cascadeRaw = options && typeof options === "object" && "cascade" in options ? (
      /** @type {boolean | null | undefined} */
      options.cascade
    ) : void 0;
    const cascade = cascadeRaw === void 0 || cascadeRaw === null ? true : cascadeRaw;
    return preorder(tree);
    function preorder(node3, index4, parent2) {
      const children = [];
      if (!is4(node3, index4, parent2)) return null;
      if (node3.children) {
        let childIndex = -1;
        while (++childIndex < node3.children.length) {
          const result = preorder(node3.children[childIndex], childIndex, node3);
          if (result) {
            children.push(result);
          }
        }
        if (cascade && node3.children.length > 0 && children.length === 0)
          return null;
      }
      const next = {};
      let key2;
      for (key2 in node3) {
        if (own16.call(node3, key2)) {
          next[key2] = key2 === "children" ? children : node3[key2];
        }
      }
      return next;
    }
  })
);

// ../myst-cli/dist/transforms/embed.js
function mutateEmbedNode(node3, targetNode, opts) {
  const { url, dataUrl, targetFile, sourceFile } = opts !== null && opts !== void 0 ? opts : {};
  if (targetNode && node3["remove-output"]) {
    targetNode = filter2(targetNode, (n) => {
      var _a6;
      return n.type !== "output" && ((_a6 = n.data) === null || _a6 === void 0 ? void 0 : _a6.type) !== "output";
    });
  }
  if (targetNode && node3["remove-input"]) {
    targetNode = filter2(targetNode, (n, index4, parent2) => {
      var _a6;
      return !(n.type === "code" && ((_a6 = n.data) === null || _a6 === void 0 ? void 0 : _a6.type) !== "output" && (parent2 === null || parent2 === void 0 ? void 0 : parent2.type) === "block" && (parent2 === null || parent2 === void 0 ? void 0 : parent2.kind) === NotebookCell.code);
    });
  }
  selectAll("[identifier],[label],[html_id]", targetNode).forEach((idNode) => {
    if (!isTargetIdentifierNode(idNode))
      return;
    delete idNode.identifier;
    delete idNode.label;
    delete idNode.html_id;
  });
  selectAll("crossReference", targetNode).forEach((targetXRef) => {
    if (!targetXRef.remote) {
      targetXRef.url = url;
      targetXRef.dataUrl = dataUrl;
      targetXRef.remote = true;
    }
  });
  if (targetFile && sourceFile) {
    selectAll("image", targetNode).forEach((imageNode) => {
      if (imageNode.url) {
        const absoluteUrl = import_node_path33.default.resolve(import_node_path33.default.dirname(sourceFile), imageNode.url);
        if (import_node_fs28.default.existsSync(absoluteUrl)) {
          imageNode.url = import_node_path33.default.relative(import_node_path33.default.dirname(targetFile), absoluteUrl);
        }
      }
      if (imageNode.urlSource) {
        const absoluteUrlSource = import_node_path33.default.resolve(import_node_path33.default.dirname(sourceFile), imageNode.urlSource);
        if (import_node_fs28.default.existsSync(absoluteUrlSource)) {
          imageNode.urlSource = import_node_path33.default.relative(import_node_path33.default.dirname(targetFile), absoluteUrlSource);
        }
      }
    });
  }
  if (!targetNode) {
    node3.children = [];
  } else if (targetNode.type === "block") {
    node3.children = targetNode.children;
  } else {
    node3.children = [targetNode];
  }
}
function targetsToTarget(targets) {
  if (targets.length === 1)
    return copyNode(targets[0]);
  return { type: "block", children: copyNode(targets) };
}
async function embedTransform(session, mdast2, file, dependencies, state) {
  const references = Object.values(castSession(session).$externalReferences);
  const mystTransformer = new MystTransformer(references);
  const embedNodes = selectAll("embed", mdast2);
  await Promise.all(embedNodes.map(async (node3) => {
    var _a6, _b, _c, _d2, _e, _f, _g;
    const vfile2 = state.vfile;
    const label = (_a6 = node3.source) === null || _a6 === void 0 ? void 0 : _a6.label;
    if (!label) {
      fileError(vfile2, "Embed node does not have a label", { node: node3 });
      return;
    }
    if (label.startsWith("xref:") || label.startsWith("myst:")) {
      if (!mystTransformer.test(label)) {
        let note;
        const sphinxTransformer = new SphinxTransformer(references);
        if (sphinxTransformer.test(label)) {
          note = "Embed target must be a MyST project, not intersphinx.";
        } else {
          note = "Embed target must be a MyST project and included in your project references.";
        }
        fileError(vfile2, `Cannot embed "${label}"`, { node: node3, note });
        return;
      }
      const referenceLink = {
        type: "link",
        url: label,
        urlSource: label,
        children: []
      };
      const transformed = mystTransformer.transform(referenceLink, vfile2);
      const referenceXRef = referenceLink;
      if (transformed) {
        let data;
        let targetNodes2;
        if (referenceXRef.identifier) {
          data = await fetchMystXRefData(session, referenceXRef, vfile2);
          if (!data)
            return;
          targetNodes2 = nodesFromMystXRefData(data, referenceXRef.identifier, vfile2, {
            urlSource: label
            // TODO: maxNodes - settable via embed directive
          });
        } else {
          data = await fetchMystLinkData(session, referenceLink, vfile2);
          if (!(data === null || data === void 0 ? void 0 : data.mdast))
            return;
          targetNodes2 = data.mdast.children;
        }
        if (!(targetNodes2 === null || targetNodes2 === void 0 ? void 0 : targetNodes2.length))
          return;
        const targetNode = targetsToTarget(targetNodes2);
        selectAll("crossReference", targetNode).forEach((targetXRef) => {
          if (targetXRef.remoteBaseUrl)
            return;
          targetXRef.remoteBaseUrl = referenceXRef.remoteBaseUrl;
        });
        selectAll("link", targetNode).forEach((targetLink) => {
          if (!targetLink.internal)
            return;
          targetLink.internal = false;
          targetLink.url = `${referenceXRef.remoteBaseUrl}${targetLink.url}`;
          if (targetLink.dataUrl) {
            targetLink.dataUrl = `${referenceXRef.remoteBaseUrl}${targetLink.dataUrl}`;
          }
        });
        selectAll("[source]", targetNode).forEach((target2) => {
          if (!target2.source)
            return;
          target2.source.remoteBaseUrl = referenceXRef.remoteBaseUrl;
        });
        mutateEmbedNode(node3, targetNode, referenceXRef);
        const source3 = {
          url: referenceXRef.url,
          remoteBaseUrl: referenceXRef.remoteBaseUrl,
          label
        };
        if (data.kind)
          source3.kind = data.kind;
        if (data.slug)
          source3.slug = data.slug;
        if (data.location)
          source3.location = data.location;
        if ((_b = data.frontmatter) === null || _b === void 0 ? void 0 : _b.title)
          source3.title = data.frontmatter.title;
        if ((_c = data.frontmatter) === null || _c === void 0 ? void 0 : _c.short_title)
          source3.short_title = data.frontmatter.short_title;
        node3.source = source3;
      }
      return;
    }
    let hash = label;
    let linkFile;
    if (label.includes("#")) {
      const sourceFileFolder = getSourceFolder(label, file, session.sourcePath());
      const linkFileWithTarget = fileFromSourceFolder(label, sourceFileFolder);
      if (!linkFileWithTarget)
        return;
      linkFile = linkFileWithTarget.split("#")[0];
      hash = linkFileWithTarget.slice(linkFile.length + 1);
    }
    const { identifier } = (_d2 = normalizeLabel(hash)) !== null && _d2 !== void 0 ? _d2 : {};
    if (!identifier) {
      fileError(vfile2, "Embed node does not have label", { node: node3 });
      return;
    }
    const stateProvider = state.resolveStateProvider(identifier, linkFile);
    if (!stateProvider)
      return;
    const cache = castSession(session);
    const pageMdast = (_f = (_e = cache.$getMdast(stateProvider.filePath)) === null || _e === void 0 ? void 0 : _e.post) === null || _f === void 0 ? void 0 : _f.mdast;
    if (!pageMdast)
      return;
    let targetNodes;
    if (stateProvider.getFileTarget(identifier)) {
      targetNodes = pageMdast.children;
    } else {
      targetNodes = selectMdastNodes(pageMdast, identifier).nodes;
    }
    if (!(targetNodes === null || targetNodes === void 0 ? void 0 : targetNodes.length)) {
      fileError(vfile2, `Embed target for "${label}" not found`, { node: node3 });
      return;
    }
    const target = targetsToTarget(targetNodes);
    if (!state.states) {
      mutateEmbedNode(node3, target);
      return;
    }
    const { url, dataUrl, filePath } = stateProvider;
    mutateEmbedNode(node3, target, { url, dataUrl, targetFile: file, sourceFile: filePath });
    if (!url)
      return;
    const source2 = { url, label };
    if (filePath) {
      session.store.dispatch(watch.actions.addLocalDependency({
        path: file,
        dependency: filePath
      }));
      const { kind, slug, frontmatter, location: location4 } = (_g = selectFile(session, filePath)) !== null && _g !== void 0 ? _g : {};
      if (kind)
        source2.kind = kind;
      if (slug)
        source2.slug = slug;
      if (location4)
        source2.location = location4;
      if (frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.title)
        source2.title = frontmatter.title;
      if (frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.short_title)
        source2.short_title = frontmatter.short_title;
    }
    node3.source = source2;
    if (!dependencies.map((dep) => dep.url).includes(url))
      dependencies.push(source2);
  }));
  const containerNodes = selectAll("container", mdast2);
  containerNodes.forEach((node3) => {
    var _a6, _b;
    const containerEmbeds = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.filter((child) => child.type === "embed");
    if ((containerEmbeds === null || containerEmbeds === void 0 ? void 0 : containerEmbeds.length) === 1) {
      node3.source = { ...containerEmbeds[0].source };
      containerEmbeds[0].type = "_lift";
      if (((_b = containerEmbeds[0].children) === null || _b === void 0 ? void 0 : _b.length) === 1 && containerEmbeds[0].children[0].type === "container") {
        containerEmbeds[0].children[0].type = "_lift";
        remove(containerEmbeds[0].children[0], "caption");
        remove(containerEmbeds[0].children[0], "legend");
      }
    }
  });
  const remainingEmbedNodes = selectAll("embed", mdast2);
  remainingEmbedNodes.forEach((node3) => {
    var _a6;
    if (((_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.length) === 1 && node3.children[0].type === "container") {
      node3.children[0].source = { ...node3.source };
      node3.type = "_lift";
    }
  });
  liftChildren(mdast2, "_lift");
}

// ../myst-cli/dist/transforms/include.js
var import_node_path34 = __toESM(require("path"), 1);
var import_node_fs29 = __toESM(require("fs"), 1);
var makeFileResolver = (baseFile) => (relativeFile, sourceFile, sourcePath, vfile2) => {
  const base5 = sourceFile.toLowerCase().endsWith(".tex") ? baseFile : sourceFile;
  const sourceFolder = getSourceFolder(relativeFile, base5, sourcePath);
  const fullFile = import_node_path34.default.resolve(import_node_path34.default.join(sourceFolder, relativeFile));
  if (!import_node_fs29.default.existsSync(fullFile)) {
    fileError(vfile2, `Include Directive: Could not find "${relativeFile}" relative to "${base5}"`, {
      ruleId: RuleId.includeContentLoads
    });
    return;
  }
  return fullFile;
};
var makeFileLoader = (session, baseFile) => (fullFile) => {
  session.store.dispatch(watch.actions.addLocalDependency({
    path: baseFile,
    dependency: fullFile
  }));
  return import_node_fs29.default.readFileSync(fullFile).toString();
};
var makeContentParser = (session, file) => async (filename, content3) => {
  if (filename.toLowerCase().endsWith(".html")) {
    const mdast2 = { type: "root", children: [{ type: "html", value: content3 }] };
    return { mdast: mdast2, kind: SourceFileKind.Article };
  }
  const opts = { keepTitleNode: true };
  if (filename.toLowerCase().endsWith(".tex")) {
    return loadTexFile(session, content3, file, opts);
  }
  if (filename.toLowerCase().endsWith(".ipynb")) {
    return loadNotebookFile(session, content3, file, opts);
  }
  return loadMdFile(session, content3, file, opts);
};
async function includeFilesTransform(session, baseFile, tree, frontmatter, vfile2) {
  const parseContent = makeContentParser(session, baseFile);
  const loadFile2 = makeFileLoader(session, baseFile);
  const resolveFile = makeFileResolver(baseFile);
  await includeDirectiveTransform(tree, frontmatter, vfile2, {
    resolveFile,
    loadFile: loadFile2,
    parseContent,
    sourceFile: baseFile,
    sourcePath: session.sourcePath()
  });
}

// ../myst-cli/dist/transforms/mdast.js
var import_node_fs30 = __toESM(require("fs"), 1);
var import_node_path35 = require("path");
function importMdastFromJson(session, filename, mdast2) {
  const mdastNodes = selectAll("mdast", mdast2);
  const loadedData = {};
  const dir = (0, import_node_path35.dirname)(filename);
  mdastNodes.forEach((node3) => {
    const [mdastFilename, id] = node3.id.split("#");
    let data = loadedData[mdastFilename];
    if (!data) {
      try {
        data = JSON.parse(import_node_fs30.default.readFileSync((0, import_node_path35.join)(dir, mdastFilename)).toString());
        loadedData[mdastFilename] = data;
      } catch {
        addWarningForFile(session, filename, `Mdast Node import: Could not load ${mdastFilename}`, "error", { ruleId: RuleId.mdastSnippetImports });
        return;
      }
    }
    if (!data[id]) {
      addWarningForFile(session, filename, `Mdast Node import: Could not find ${id} in ${mdastFilename}`, "error", { ruleId: RuleId.mdastSnippetImports });
      return;
    }
    Object.keys(node3).forEach((k) => {
      delete node3[k];
    });
    Object.assign(node3, data[id]);
  });
}

// ../myst-cli/dist/transforms/outputs.js
var import_node_fs31 = __toESM(require("fs"), 1);
var import_node_path36 = require("path");

// ../../node_modules/ansi-regex/index.js
function ansiRegex({ onlyFirst = false } = {}) {
  const pattern = [
    "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
    "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"
  ].join("|");
  return new RegExp(pattern, onlyFirst ? void 0 : "g");
}

// ../../node_modules/strip-ansi/index.js
var regex = ansiRegex();
function stripAnsi(string2) {
  if (typeof string2 !== "string") {
    throw new TypeError(`Expected a \`string\`, got \`${typeof string2}\``);
  }
  return string2.replace(regex, "");
}

// ../myst-cli/dist/transforms/outputs.js
function getFilename(hash, contentType) {
  return `${hash}${extFromMimeType(contentType)}`;
}
function getWriteDestination(hash, contentType, writeFolder) {
  return (0, import_node_path36.join)(writeFolder, getFilename(hash, contentType));
}
async function transformOutputsToCache(session, mdast2, kind, opts) {
  const outputs = selectAll("output", mdast2);
  if (!outputs.length)
    return;
  const cache = castSession(session);
  await Promise.all(outputs.filter((output2) => output2.visibility !== "remove").map(async (output2) => {
    output2.data = await minifyCellOutput(output2.data, cache.$outputs, {
      computeHash,
      maxCharacters: opts === null || opts === void 0 ? void 0 : opts.minifyMaxCharacters
    });
  }));
}
function stringIsMatplotlibOutput(value) {
  if (!value)
    return false;
  const match3 = value.match(/<(Figure|Text|matplotlib)(.*)at ([0-9a-z]+)>/) || value.match(/^<(Figure|Text|AxesSubplot|module)(.*)>$/) || value.match(/^(Text)\((.*)\)$/);
  return !!match3;
}
function transformFilterOutputStreams(mdast2, vfile2, { output_stdout: stdout = "show", output_stderr: stderr = "show", output_matplotlib_strings: mpl = "remove-warn" } = {}) {
  const blocks2 = selectAll("block", mdast2);
  blocks2.forEach((block5) => {
    var _a6;
    const tags = Array.isArray((_a6 = block5.data) === null || _a6 === void 0 ? void 0 : _a6.tags) ? block5.data.tags : [];
    const blockRemoveStderr = tags.includes("remove-stderr");
    const blockRemoveStdout = tags.includes("remove-stdout");
    const outputs = selectAll("output", block5);
    outputs.forEach((output2) => {
      output2.data = output2.data.filter((data) => {
        if ((stderr !== "show" || blockRemoveStderr) && data.output_type === "stream" && data.name === "stderr") {
          const doRemove = stderr.includes("remove") || blockRemoveStderr;
          const doWarn = stderr.includes("warn");
          const doError = stderr.includes("error");
          if (doWarn || doError) {
            (doError ? fileError : fileWarn)(vfile2, doRemove ? "Removing stderr from outputs" : "Output contains stderr", {
              node: output2,
              note: ensureString(data.text)
            });
          }
          return !doRemove;
        }
        if ((stdout !== "show" || blockRemoveStdout) && data.output_type === "stream" && data.name === "stdout") {
          const doRemove = stdout.includes("remove") || blockRemoveStdout;
          const doWarn = stdout.includes("warn");
          const doError = stdout.includes("error");
          if (doWarn || doError) {
            (doError ? fileError : fileWarn)(vfile2, doRemove ? "Removing stdout from outputs" : "Output contains stdout", {
              node: output2,
              note: ensureString(data.text)
            });
          }
          return !doRemove;
        }
        if (mpl !== "show" && data.output_type === "execute_result" && Object.keys(data.data).length === 1 && data.data["text/plain"]) {
          const content3 = data.data["text/plain"].content;
          if (!stringIsMatplotlibOutput(content3))
            return true;
          const doRemove = mpl.includes("remove");
          const doWarn = mpl.includes("warn");
          const doError = mpl.includes("error");
          if (doWarn || doError) {
            (doError ? fileError : fileWarn)(vfile2, doRemove ? "Removing matplotlib string from outputs" : "Output contains matplotlib string", {
              node: output2,
              note: `${content3}
   Fix: Put a semicolon on the last line of your cell or add "output_matplotlib_strings: remove" to the project settings.`
            });
          }
          return !doRemove;
        }
        return true;
      });
    });
  });
}
function writeCachedOutputToFile(session, hash, cachedOutput, writeFolder, opts) {
  const [content3, { contentType, encoding }] = cachedOutput;
  const filename = getFilename(hash, contentType);
  const destination = getWriteDestination(hash, contentType, writeFolder);
  if (import_node_fs31.default.existsSync(destination)) {
    session.log.debug(`Cached file found for notebook output: ${destination}`);
  } else {
    try {
      if (!import_node_fs31.default.existsSync(writeFolder))
        import_node_fs31.default.mkdirSync(writeFolder, { recursive: true });
      import_node_fs31.default.writeFileSync(destination, content3, { encoding });
      session.log.debug(`Notebook output successfully written: ${destination}`);
    } catch {
      if (opts === null || opts === void 0 ? void 0 : opts.vfile) {
        fileError(opts.vfile, `Error writing notebook output: ${destination}`, {
          node: opts.node,
          ruleId: RuleId.notebookOutputCopied
        });
      }
      return void 0;
    }
  }
  return resolveOutputPath(filename, writeFolder, opts === null || opts === void 0 ? void 0 : opts.altOutputFolder);
}
function transformOutputsToFile(session, mdast2, writeFolder, opts) {
  const outputs = selectAll("output", mdast2);
  const cache = castSession(session);
  outputs.forEach((node3) => {
    walkOutputs(node3.data, (obj) => {
      const { hash } = obj;
      if (!hash || !cache.$outputs[hash])
        return void 0;
      obj.path = writeCachedOutputToFile(session, hash, cache.$outputs[hash], writeFolder, {
        ...opts,
        node: node3
      });
    });
  });
}
function isPreferredOutputType(newType, existingType) {
  if (existingType.startsWith("image/"))
    return false;
  if (newType.startsWith("image"))
    return true;
  if (existingType === "text/html")
    return false;
  if (newType === "text/html")
    return true;
  return false;
}
function reduceOutputs(session, mdast2, file, writeFolder, opts) {
  const outputs = selectAll("output", mdast2);
  const cache = castSession(session);
  outputs.forEach((node3) => {
    var _a6, _b, _c;
    if (node3.visibility === "remove" || node3.visibility === "hide") {
      node3.type = "__delete__";
      return;
    }
    if (!((_a6 = node3.data) === null || _a6 === void 0 ? void 0 : _a6.length) && !((_b = node3.children) === null || _b === void 0 ? void 0 : _b.length)) {
      node3.type = "__delete__";
      return;
    }
    node3.type = "__lift__";
    if ((_c = node3.children) === null || _c === void 0 ? void 0 : _c.length)
      return;
    const selectedOutputs = [];
    node3.data.forEach((output2) => {
      let selectedOutput;
      walkOutputs([output2], (obj) => {
        const { output_type, content_type, hash } = obj;
        if (!hash)
          return void 0;
        if (!selectedOutput || isPreferredOutputType(content_type, selectedOutput.content_type)) {
          if (["error", "stream"].includes(output_type)) {
            selectedOutput = { content_type: "text/plain", hash };
          } else if (typeof content_type === "string") {
            if (content_type.startsWith("image/") || content_type === "text/plain" || content_type === "text/html") {
              selectedOutput = { content_type, hash };
            }
          }
        }
      });
      if (selectedOutput)
        selectedOutputs.push(selectedOutput);
    });
    const children = selectedOutputs.map((output2) => {
      const { content_type, hash } = output2 !== null && output2 !== void 0 ? output2 : {};
      if (!hash || !cache.$outputs[hash])
        return void 0;
      if (content_type === "text/html") {
        const htmlTree = {
          type: "root",
          children: [
            {
              type: "html",
              value: cache.$outputs[hash][0]
            }
          ]
        };
        htmlTransform(htmlTree);
        if (selectAll("image", htmlTree).find((htmlImage) => !htmlImage.url)) {
          return void 0;
        }
        return htmlTree.children;
      } else if (content_type.startsWith("image/")) {
        const path45 = writeCachedOutputToFile(session, hash, cache.$outputs[hash], writeFolder, {
          ...opts,
          node: node3
        });
        if (!path45)
          return void 0;
        const relativePath = (0, import_node_path36.relative)((0, import_node_path36.dirname)(file), path45);
        return {
          type: "image",
          data: { type: "output" },
          url: relativePath,
          urlSource: relativePath
        };
      } else if (content_type === "text/plain" && cache.$outputs[hash]) {
        const [content3] = cache.$outputs[hash];
        return {
          type: "code",
          data: { type: "output" },
          value: stripAnsi(content3)
        };
      }
      return void 0;
    }).flat().filter((output2) => !!output2);
    node3.children = children;
  });
  remove(mdast2, "__delete__");
  liftChildren(mdast2, "__lift__");
}

// ../myst-execute/dist/transform.js
var import_node_assert3 = __toESM(require("assert"), 1);
var import_node_crypto5 = require("crypto");

// ../myst-execute/dist/kernel.js
var import_node_path37 = __toESM(require("path"), 1);
var import_node_assert = __toESM(require("assert"), 1);
async function createKernelConnection(sessionManager, basePath, kernelspec, vfile2) {
  const sessionOpts = {
    type: "notebook",
    path: import_node_path37.default.relative(basePath, vfile2.path),
    name: import_node_path37.default.basename(vfile2.path),
    kernel: {
      name: kernelspec.name
    }
  };
  const connection = await sessionManager.startNew(sessionOpts);
  if (connection.kernel === null) {
    return void 0;
  }
  return connection;
}
function IOPubAsOutput(msg) {
  return {
    output_type: msg.header.msg_type,
    ...msg.content
  };
}
async function executeCodeCell(kernel, code7) {
  const future = kernel.requestExecute({
    code: code7
  });
  const outputs = [];
  future.onIOPub = (msg) => {
    if (msg.parent_header.msg_id !== future.msg.header.msg_id || msg.parent_header.msg_type !== "execute_request") {
      return;
    }
    switch (msg.header.msg_type) {
      case "stream":
      case "execute_result":
      case "error":
      case "display_data":
        outputs.push(IOPubAsOutput(msg));
        break;
      default:
        return;
    }
  };
  let status;
  future.onReply = (msg) => {
    status = msg.content.status;
  };
  await future.done;
  (0, import_node_assert.default)(status !== void 0);
  return { status, outputs };
}
async function evaluateInlineExpression(kernel, expr) {
  const future = kernel.requestExecute({
    code: "",
    user_expressions: {
      expr
    }
  });
  let result;
  future.onReply = (msg) => {
    switch (msg.content.status) {
      case "ok":
        result = msg.content.user_expressions["expr"];
        break;
      case "error":
        (0, import_node_assert.default)(false);
    }
  };
  await future.done;
  (0, import_node_assert.default)(result !== void 0);
  return { status: result.status, result };
}

// ../myst-execute/dist/utils.js
function isCellBlock(node3) {
  return node3.type === "block" && select("code", node3) !== null && select("output", node3) !== null;
}
function codeBlockRaisesException(node3) {
  var _a6, _b, _c;
  return !!((_c = (_b = (_a6 = node3.data) === null || _a6 === void 0 ? void 0 : _a6.tags) === null || _b === void 0 ? void 0 : _b.includes) === null || _c === void 0 ? void 0 : _c.call(_b, NotebookCellTags.raisesException));
}
function codeBlockSkipsExecution(node3) {
  var _a6, _b, _c;
  return !!((_c = (_b = (_a6 = node3.data) === null || _a6 === void 0 ? void 0 : _a6.tags) === null || _b === void 0 ? void 0 : _b.includes) === null || _c === void 0 ? void 0 : _c.call(_b, NotebookCellTags.skipExecution));
}
function isInlineExpression(node3) {
  return node3.type === "inlineExpression";
}

// ../myst-execute/dist/execute.js
var import_node_assert2 = __toESM(require("assert"), 1);
async function computeExecutableNodes(kernel, nodes, opts) {
  let errorOccurred = false;
  const results = [];
  for (const matchedNode of nodes) {
    if (isCellBlock(matchedNode)) {
      const code7 = select("code", matchedNode);
      const { status, outputs } = await executeCodeCell(kernel, code7.value);
      results.push(outputs);
      const allowErrors = codeBlockRaisesException(matchedNode);
      if (status === "error" && !allowErrors) {
        const errorMessage = outputs.map((item) => item.traceback).flat().join("\n");
        fileError(opts.vfile, `An exception occurred during code execution, halting further execution:

${errorMessage}`, {
          node: matchedNode,
          ruleId: RuleId.codeCellExecutes
        });
        errorOccurred = true;
        break;
      }
    } else if (isInlineExpression(matchedNode)) {
      const { status, result } = await evaluateInlineExpression(kernel, matchedNode.value);
      if (status === "error") {
        const errorMessage = result.traceback.join("\n");
        fileError(opts.vfile, `An exception occurred during expression evaluation, halting further execution:

${errorMessage}`, { node: matchedNode, ruleId: RuleId.inlineExpressionExecutes });
        errorOccurred = true;
        break;
      }
      results.push(result);
    } else {
      (0, import_node_assert2.default)(false);
    }
  }
  return { results, errorOccurred };
}
function applyComputedOutputsToNodes(nodes, computedResult) {
  for (const matchedNode of nodes) {
    const thisResult = computedResult.shift();
    if (isCellBlock(matchedNode)) {
      const output2 = select("output", matchedNode);
      output2.data = thisResult === void 0 ? [] : thisResult;
    } else if (isInlineExpression(matchedNode)) {
      matchedNode.result = // TODO: FIXME .data
      thisResult === void 0 ? void 0 : thisResult;
    } else {
      throw new Error("Node must be either code block or inline expression.");
    }
  }
}
function getExecutableNodes(tree) {
  return selectAll(`block[kind=${NotebookCell.code}],inlineExpression`, tree).filter((node3) => !(isCellBlock(node3) && codeBlockSkipsExecution(node3)));
}

// ../myst-execute/dist/transform.js
function buildCacheKey(kernelSpec, nodes, envVars) {
  const hashableItems = [];
  for (const node3 of nodes) {
    if (isCellBlock(node3)) {
      hashableItems.push({
        kind: node3.type,
        content: select("code", node3).value,
        raisesException: codeBlockRaisesException(node3)
      });
    } else {
      (0, import_node_assert3.default)(isInlineExpression(node3));
      hashableItems.push({
        kind: node3.type,
        content: node3.value,
        raisesException: false
      });
    }
  }
  const envKeys = Object.keys(envVars).sort();
  const hashableEnv = Object.fromEntries(envKeys.map((n) => [n, envVars[n]]));
  const hash = (0, import_node_crypto5.createHash)("md5").update(kernelSpec.name).update(JSON.stringify(hashableItems));
  if (envKeys.length) {
    hash.update(JSON.stringify(hashableEnv));
  }
  return hash.digest("hex");
}
function getCacheEnvironment(env6) {
  return Object.fromEntries(env6.map((name3) => [name3, process.env[name3]]));
}
async function kernelExecutionTransform(tree, vfile2, opts) {
  var _a6, _b;
  const log = (_a6 = opts.log) !== null && _a6 !== void 0 ? _a6 : console;
  const kernelspec = opts.frontmatter.kernelspec;
  const executeConfig = opts.frontmatter.execute;
  if (kernelspec === void 0) {
    return fileError(vfile2, `Notebook does not declare the necessary 'kernelspec' frontmatter key required for execution`);
  }
  const executableNodes = getExecutableNodes(tree);
  if (executableNodes.length === 0) {
    return;
  }
  const cacheEnv = getCacheEnvironment((_b = executeConfig === null || executeConfig === void 0 ? void 0 : executeConfig.depends_on_env) !== null && _b !== void 0 ? _b : []);
  const cacheKey = buildCacheKey(kernelspec, executableNodes, cacheEnv);
  let cachedResults = opts.cache.get(cacheKey);
  const ignoreCachedDocument = (
    // If we don't globally ignore caching'
    opts.ignoreCache || // If this document hasn't opted out of cache'
    (executeConfig === null || executeConfig === void 0 ? void 0 : executeConfig.cache) === false
  );
  if (!ignoreCachedDocument && // If we have a cached result
  cachedResults !== void 0) {
    log.info(`\u{1F4BE} Adding cached notebook outputs (${vfile2.path})`);
    applyComputedOutputsToNodes(executableNodes, cachedResults);
    return;
  }
  log.info(`\u{1F4BF} Executing notebook (${vfile2.path}) ${ignoreCachedDocument ? "[cache ignored]" : "[no execution cache found]"}`);
  const sessionManager = await opts.sessionFactory();
  if (sessionManager === void 0) {
    fileError(vfile2, `Could not load Jupyter session manager to run executable nodes`, {
      fatal: opts.errorIsFatal
    });
    return;
  }
  const sessionConnection = await createKernelConnection(sessionManager, opts.basePath, kernelspec, vfile2);
  if (sessionConnection === void 0) {
    log.error(`Unable to create a new kernel ${kernelspec.name}`);
    return;
  }
  const { kernel } = sessionConnection;
  log.debug(`Connected to kernel ${kernel.name}`);
  try {
    const { results, errorOccurred } = await computeExecutableNodes(kernel, executableNodes, {
      vfile: vfile2
    });
    if (!errorOccurred) {
      opts.cache.set(cacheKey, results);
    }
    cachedResults = results;
    applyComputedOutputsToNodes(executableNodes, cachedResults);
  } finally {
    if (!sessionConnection.isDisposed) {
      sessionConnection.shutdown();
    }
  }
}

// ../myst-execute/dist/manager.js
var import_which4 = __toESM(require_lib16(), 1);
var import_node_child_process = require("child_process");

// ../myst-execute/node_modules/chalk/source/vendor/ansi-styles/index.js
var ANSI_BACKGROUND_OFFSET3 = 10;
var wrapAnsi163 = (offset = 0) => (code7) => `\x1B[${code7 + offset}m`;
var wrapAnsi2563 = (offset = 0) => (code7) => `\x1B[${38 + offset};5;${code7}m`;
var wrapAnsi16m3 = (offset = 0) => (red, green, blue) => `\x1B[${38 + offset};2;${red};${green};${blue}m`;
var styles6 = {
  modifier: {
    reset: [0, 0],
    // 21 isn't widely supported and 22 does the same thing
    bold: [1, 22],
    dim: [2, 22],
    italic: [3, 23],
    underline: [4, 24],
    overline: [53, 55],
    inverse: [7, 27],
    hidden: [8, 28],
    strikethrough: [9, 29]
  },
  color: {
    black: [30, 39],
    red: [31, 39],
    green: [32, 39],
    yellow: [33, 39],
    blue: [34, 39],
    magenta: [35, 39],
    cyan: [36, 39],
    white: [37, 39],
    // Bright color
    blackBright: [90, 39],
    gray: [90, 39],
    // Alias of `blackBright`
    grey: [90, 39],
    // Alias of `blackBright`
    redBright: [91, 39],
    greenBright: [92, 39],
    yellowBright: [93, 39],
    blueBright: [94, 39],
    magentaBright: [95, 39],
    cyanBright: [96, 39],
    whiteBright: [97, 39]
  },
  bgColor: {
    bgBlack: [40, 49],
    bgRed: [41, 49],
    bgGreen: [42, 49],
    bgYellow: [43, 49],
    bgBlue: [44, 49],
    bgMagenta: [45, 49],
    bgCyan: [46, 49],
    bgWhite: [47, 49],
    // Bright color
    bgBlackBright: [100, 49],
    bgGray: [100, 49],
    // Alias of `bgBlackBright`
    bgGrey: [100, 49],
    // Alias of `bgBlackBright`
    bgRedBright: [101, 49],
    bgGreenBright: [102, 49],
    bgYellowBright: [103, 49],
    bgBlueBright: [104, 49],
    bgMagentaBright: [105, 49],
    bgCyanBright: [106, 49],
    bgWhiteBright: [107, 49]
  }
};
var modifierNames3 = Object.keys(styles6.modifier);
var foregroundColorNames3 = Object.keys(styles6.color);
var backgroundColorNames3 = Object.keys(styles6.bgColor);
var colorNames3 = [...foregroundColorNames3, ...backgroundColorNames3];
function assembleStyles3() {
  const codes = /* @__PURE__ */ new Map();
  for (const [groupName, group3] of Object.entries(styles6)) {
    for (const [styleName, style3] of Object.entries(group3)) {
      styles6[styleName] = {
        open: `\x1B[${style3[0]}m`,
        close: `\x1B[${style3[1]}m`
      };
      group3[styleName] = styles6[styleName];
      codes.set(style3[0], style3[1]);
    }
    Object.defineProperty(styles6, groupName, {
      value: group3,
      enumerable: false
    });
  }
  Object.defineProperty(styles6, "codes", {
    value: codes,
    enumerable: false
  });
  styles6.color.close = "\x1B[39m";
  styles6.bgColor.close = "\x1B[49m";
  styles6.color.ansi = wrapAnsi163();
  styles6.color.ansi256 = wrapAnsi2563();
  styles6.color.ansi16m = wrapAnsi16m3();
  styles6.bgColor.ansi = wrapAnsi163(ANSI_BACKGROUND_OFFSET3);
  styles6.bgColor.ansi256 = wrapAnsi2563(ANSI_BACKGROUND_OFFSET3);
  styles6.bgColor.ansi16m = wrapAnsi16m3(ANSI_BACKGROUND_OFFSET3);
  Object.defineProperties(styles6, {
    rgbToAnsi256: {
      value(red, green, blue) {
        if (red === green && green === blue) {
          if (red < 8) {
            return 16;
          }
          if (red > 248) {
            return 231;
          }
          return Math.round((red - 8) / 247 * 24) + 232;
        }
        return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
      },
      enumerable: false
    },
    hexToRgb: {
      value(hex) {
        const matches4 = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
        if (!matches4) {
          return [0, 0, 0];
        }
        let [colorString] = matches4;
        if (colorString.length === 3) {
          colorString = [...colorString].map((character) => character + character).join("");
        }
        const integer = Number.parseInt(colorString, 16);
        return [
          /* eslint-disable no-bitwise */
          integer >> 16 & 255,
          integer >> 8 & 255,
          integer & 255
          /* eslint-enable no-bitwise */
        ];
      },
      enumerable: false
    },
    hexToAnsi256: {
      value: (hex) => styles6.rgbToAnsi256(...styles6.hexToRgb(hex)),
      enumerable: false
    },
    ansi256ToAnsi: {
      value(code7) {
        if (code7 < 8) {
          return 30 + code7;
        }
        if (code7 < 16) {
          return 90 + (code7 - 8);
        }
        let red;
        let green;
        let blue;
        if (code7 >= 232) {
          red = ((code7 - 232) * 10 + 8) / 255;
          green = red;
          blue = red;
        } else {
          code7 -= 16;
          const remainder = code7 % 36;
          red = Math.floor(code7 / 36) / 5;
          green = Math.floor(remainder / 6) / 5;
          blue = remainder % 6 / 5;
        }
        const value = Math.max(red, green, blue) * 2;
        if (value === 0) {
          return 30;
        }
        let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
        if (value === 2) {
          result += 60;
        }
        return result;
      },
      enumerable: false
    },
    rgbToAnsi: {
      value: (red, green, blue) => styles6.ansi256ToAnsi(styles6.rgbToAnsi256(red, green, blue)),
      enumerable: false
    },
    hexToAnsi: {
      value: (hex) => styles6.ansi256ToAnsi(styles6.hexToAnsi256(hex)),
      enumerable: false
    }
  });
  return styles6;
}
var ansiStyles3 = assembleStyles3();
var ansi_styles_default3 = ansiStyles3;

// ../myst-execute/node_modules/chalk/source/vendor/supports-color/index.js
var import_node_process4 = __toESM(require("process"), 1);
var import_node_os3 = __toESM(require("os"), 1);
var import_node_tty3 = __toESM(require("tty"), 1);
function hasFlag3(flag, argv = globalThis.Deno ? globalThis.Deno.args : import_node_process4.default.argv) {
  const prefix2 = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
  const position6 = argv.indexOf(prefix2 + flag);
  const terminatorPosition = argv.indexOf("--");
  return position6 !== -1 && (terminatorPosition === -1 || position6 < terminatorPosition);
}
var { env: env3 } = import_node_process4.default;
var flagForceColor3;
if (hasFlag3("no-color") || hasFlag3("no-colors") || hasFlag3("color=false") || hasFlag3("color=never")) {
  flagForceColor3 = 0;
} else if (hasFlag3("color") || hasFlag3("colors") || hasFlag3("color=true") || hasFlag3("color=always")) {
  flagForceColor3 = 1;
}
function envForceColor3() {
  if ("FORCE_COLOR" in env3) {
    if (env3.FORCE_COLOR === "true") {
      return 1;
    }
    if (env3.FORCE_COLOR === "false") {
      return 0;
    }
    return env3.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env3.FORCE_COLOR, 10), 3);
  }
}
function translateLevel3(level) {
  if (level === 0) {
    return false;
  }
  return {
    level,
    hasBasic: true,
    has256: level >= 2,
    has16m: level >= 3
  };
}
function _supportsColor3(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
  const noFlagForceColor = envForceColor3();
  if (noFlagForceColor !== void 0) {
    flagForceColor3 = noFlagForceColor;
  }
  const forceColor = sniffFlags ? flagForceColor3 : noFlagForceColor;
  if (forceColor === 0) {
    return 0;
  }
  if (sniffFlags) {
    if (hasFlag3("color=16m") || hasFlag3("color=full") || hasFlag3("color=truecolor")) {
      return 3;
    }
    if (hasFlag3("color=256")) {
      return 2;
    }
  }
  if ("TF_BUILD" in env3 && "AGENT_NAME" in env3) {
    return 1;
  }
  if (haveStream && !streamIsTTY && forceColor === void 0) {
    return 0;
  }
  const min = forceColor || 0;
  if (env3.TERM === "dumb") {
    return min;
  }
  if (import_node_process4.default.platform === "win32") {
    const osRelease = import_node_os3.default.release().split(".");
    if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
      return Number(osRelease[2]) >= 14931 ? 3 : 2;
    }
    return 1;
  }
  if ("CI" in env3) {
    if ("GITHUB_ACTIONS" in env3 || "GITEA_ACTIONS" in env3) {
      return 3;
    }
    if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env3) || env3.CI_NAME === "codeship") {
      return 1;
    }
    return min;
  }
  if ("TEAMCITY_VERSION" in env3) {
    return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env3.TEAMCITY_VERSION) ? 1 : 0;
  }
  if (env3.COLORTERM === "truecolor") {
    return 3;
  }
  if (env3.TERM === "xterm-kitty") {
    return 3;
  }
  if ("TERM_PROGRAM" in env3) {
    const version4 = Number.parseInt((env3.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
    switch (env3.TERM_PROGRAM) {
      case "iTerm.app": {
        return version4 >= 3 ? 3 : 2;
      }
      case "Apple_Terminal": {
        return 2;
      }
    }
  }
  if (/-256(color)?$/i.test(env3.TERM)) {
    return 2;
  }
  if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env3.TERM)) {
    return 1;
  }
  if ("COLORTERM" in env3) {
    return 1;
  }
  return min;
}
function createSupportsColor3(stream3, options = {}) {
  const level = _supportsColor3(stream3, {
    streamIsTTY: stream3 && stream3.isTTY,
    ...options
  });
  return translateLevel3(level);
}
var supportsColor3 = {
  stdout: createSupportsColor3({ isTTY: import_node_tty3.default.isatty(1) }),
  stderr: createSupportsColor3({ isTTY: import_node_tty3.default.isatty(2) })
};
var supports_color_default3 = supportsColor3;

// ../myst-execute/node_modules/chalk/source/utilities.js
function stringReplaceAll3(string2, substring, replacer) {
  let index4 = string2.indexOf(substring);
  if (index4 === -1) {
    return string2;
  }
  const substringLength = substring.length;
  let endIndex = 0;
  let returnValue = "";
  do {
    returnValue += string2.slice(endIndex, index4) + substring + replacer;
    endIndex = index4 + substringLength;
    index4 = string2.indexOf(substring, endIndex);
  } while (index4 !== -1);
  returnValue += string2.slice(endIndex);
  return returnValue;
}
function stringEncaseCRLFWithFirstIndex3(string2, prefix2, postfix, index4) {
  let endIndex = 0;
  let returnValue = "";
  do {
    const gotCR = string2[index4 - 1] === "\r";
    returnValue += string2.slice(endIndex, gotCR ? index4 - 1 : index4) + prefix2 + (gotCR ? "\r\n" : "\n") + postfix;
    endIndex = index4 + 1;
    index4 = string2.indexOf("\n", endIndex);
  } while (index4 !== -1);
  returnValue += string2.slice(endIndex);
  return returnValue;
}

// ../myst-execute/node_modules/chalk/source/index.js
var { stdout: stdoutColor3, stderr: stderrColor3 } = supports_color_default3;
var GENERATOR3 = Symbol("GENERATOR");
var STYLER3 = Symbol("STYLER");
var IS_EMPTY3 = Symbol("IS_EMPTY");
var levelMapping3 = [
  "ansi",
  "ansi",
  "ansi256",
  "ansi16m"
];
var styles7 = /* @__PURE__ */ Object.create(null);
var applyOptions3 = (object, options = {}) => {
  if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
    throw new Error("The `level` option should be an integer from 0 to 3");
  }
  const colorLevel = stdoutColor3 ? stdoutColor3.level : 0;
  object.level = options.level === void 0 ? colorLevel : options.level;
};
var chalkFactory3 = (options) => {
  const chalk6 = (...strings) => strings.join(" ");
  applyOptions3(chalk6, options);
  Object.setPrototypeOf(chalk6, createChalk3.prototype);
  return chalk6;
};
function createChalk3(options) {
  return chalkFactory3(options);
}
Object.setPrototypeOf(createChalk3.prototype, Function.prototype);
for (const [styleName, style3] of Object.entries(ansi_styles_default3)) {
  styles7[styleName] = {
    get() {
      const builder = createBuilder3(this, createStyler3(style3.open, style3.close, this[STYLER3]), this[IS_EMPTY3]);
      Object.defineProperty(this, styleName, { value: builder });
      return builder;
    }
  };
}
styles7.visible = {
  get() {
    const builder = createBuilder3(this, this[STYLER3], true);
    Object.defineProperty(this, "visible", { value: builder });
    return builder;
  }
};
var getModelAnsi3 = (model, level, type2, ...arguments_) => {
  if (model === "rgb") {
    if (level === "ansi16m") {
      return ansi_styles_default3[type2].ansi16m(...arguments_);
    }
    if (level === "ansi256") {
      return ansi_styles_default3[type2].ansi256(ansi_styles_default3.rgbToAnsi256(...arguments_));
    }
    return ansi_styles_default3[type2].ansi(ansi_styles_default3.rgbToAnsi(...arguments_));
  }
  if (model === "hex") {
    return getModelAnsi3("rgb", level, type2, ...ansi_styles_default3.hexToRgb(...arguments_));
  }
  return ansi_styles_default3[type2][model](...arguments_);
};
var usedModels3 = ["rgb", "hex", "ansi256"];
for (const model of usedModels3) {
  styles7[model] = {
    get() {
      const { level } = this;
      return function(...arguments_) {
        const styler = createStyler3(getModelAnsi3(model, levelMapping3[level], "color", ...arguments_), ansi_styles_default3.color.close, this[STYLER3]);
        return createBuilder3(this, styler, this[IS_EMPTY3]);
      };
    }
  };
  const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
  styles7[bgModel] = {
    get() {
      const { level } = this;
      return function(...arguments_) {
        const styler = createStyler3(getModelAnsi3(model, levelMapping3[level], "bgColor", ...arguments_), ansi_styles_default3.bgColor.close, this[STYLER3]);
        return createBuilder3(this, styler, this[IS_EMPTY3]);
      };
    }
  };
}
var proto6 = Object.defineProperties(() => {
}, {
  ...styles7,
  level: {
    enumerable: true,
    get() {
      return this[GENERATOR3].level;
    },
    set(level) {
      this[GENERATOR3].level = level;
    }
  }
});
var createStyler3 = (open2, close2, parent2) => {
  let openAll;
  let closeAll;
  if (parent2 === void 0) {
    openAll = open2;
    closeAll = close2;
  } else {
    openAll = parent2.openAll + open2;
    closeAll = close2 + parent2.closeAll;
  }
  return {
    open: open2,
    close: close2,
    openAll,
    closeAll,
    parent: parent2
  };
};
var createBuilder3 = (self2, _styler, _isEmpty) => {
  const builder = (...arguments_) => applyStyle3(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
  Object.setPrototypeOf(builder, proto6);
  builder[GENERATOR3] = self2;
  builder[STYLER3] = _styler;
  builder[IS_EMPTY3] = _isEmpty;
  return builder;
};
var applyStyle3 = (self2, string2) => {
  if (self2.level <= 0 || !string2) {
    return self2[IS_EMPTY3] ? "" : string2;
  }
  let styler = self2[STYLER3];
  if (styler === void 0) {
    return string2;
  }
  const { openAll, closeAll } = styler;
  if (string2.includes("\x1B")) {
    while (styler !== void 0) {
      string2 = stringReplaceAll3(string2, styler.close, styler.open);
      styler = styler.parent;
    }
  }
  const lfIndex = string2.indexOf("\n");
  if (lfIndex !== -1) {
    string2 = stringEncaseCRLFWithFirstIndex3(string2, closeAll, openAll, lfIndex);
  }
  return openAll + string2 + closeAll;
};
Object.defineProperties(createChalk3.prototype, styles7);
var chalk3 = createChalk3();
var chalkStderr3 = createChalk3({ level: stderrColor3 ? stderrColor3.level : 0 });
var source_default3 = chalk3;

// ../myst-execute/dist/manager.js
async function launchJupyterServer(contentPath, log) {
  log.info(`\u{1F680} ${source_default3.yellowBright("Starting new Jupyter server")}`);
  const pythonPath = import_which4.default.sync("python");
  const proc2 = (0, import_node_child_process.spawn)(pythonPath, ["-m", "jupyter_server", "--ServerApp.root_dir", contentPath]);
  const reader = proc2.stderr;
  let timerID;
  const settings = await new Promise((resolve9, reject) => {
    timerID = setTimeout(() => {
      log.error(`\u{1FA90} ${source_default3.redBright("Jupyter server did not respond")}`);
      reject();
    }, 2e4);
    proc2.on("exit", () => {
      log.error(`\u{1FA90} ${source_default3.redBright("Jupyter server did not start")}`);
      reject();
    });
    reader.on("data", (buf) => {
      const data = buf.toString();
      const match3 = data.match(/([^\s]*?)\?token=([^\s]*)/);
      if (match3 === null) {
        return;
      }
      const [, addr, token] = match3;
      resolve9({
        baseUrl: addr,
        token
      });
    });
  }).finally(
    // Don't keep listening to messages
    () => {
      reader.removeAllListeners("data");
      proc2.removeAllListeners("exit");
      if (timerID !== void 0) {
        clearTimeout(timerID);
      }
    }
  );
  const url = `${settings.baseUrl}?token=${settings.token}`;
  log.info(`\u{1FA90} ${source_default3.greenBright("Jupyter server started")}
   ${source_default3.dim(url)}`);
  return { ...settings, dispose: () => proc2.kill() };
}

// ../myst-execute/dist/cache.js
var import_node_fs32 = require("fs");
var import_node_path38 = __toESM(require("path"), 1);
var LocalDiskCache = class {
  constructor(cachePath2) {
    this._cachePath = cachePath2;
    if (!(0, import_node_fs32.existsSync)(cachePath2)) {
      (0, import_node_fs32.mkdirSync)(cachePath2, { recursive: true });
    }
  }
  _makeKeyPath(key2) {
    return import_node_path38.default.join(this._cachePath, `${key2}.json`);
  }
  test(key2) {
    return (0, import_node_fs32.existsSync)(this._makeKeyPath(key2));
  }
  get(key2) {
    const keyPath = this._makeKeyPath(key2);
    if (!(0, import_node_fs32.existsSync)(keyPath)) {
      return void 0;
    }
    return JSON.parse((0, import_node_fs32.readFileSync)(keyPath, { encoding: "utf8" }));
  }
  set(key2, item) {
    const keyPath = this._makeKeyPath(key2);
    return (0, import_node_fs32.writeFileSync)(keyPath, JSON.stringify(item), { encoding: "utf8" });
  }
};

// ../myst-cli/dist/transforms/raw.js
async function rawDirectiveTransform(tree, vfile2) {
  const rawNodes = selectAll("raw", tree);
  rawNodes.forEach((node3) => {
    if (!node3.value)
      return;
    if (["latex", "tex"].includes(node3.lang)) {
      const state = new TexParser(node3.value, vfile2);
      node3.children = state.ast.children;
    } else {
      if (node3.lang && node3.lang !== "text") {
        fileWarn(vfile2, `unknown format for raw content: ${node3.lang}`, {
          ruleId: RuleId.directiveArgumentCorrect,
          note: "Treating content as text"
        });
      }
      node3.children = [
        { type: "paragraph", children: [{ type: "text", value: node3.value }] }
      ];
    }
  });
}

// ../myst-cli/dist/utils/addEditUrl.js
var import_which5 = __toESM(require_lib15(), 1);
function gitCommandAvailable() {
  return !!import_which5.default.sync("git", { nothrow: true });
}
async function addEditUrl(session, frontmatter, file) {
  if (!frontmatter.github)
    return;
  if (frontmatter.edit_url || frontmatter.edit_url === null)
    return;
  if (!gitCommandAvailable())
    return;
  try {
    const gitLog = silentLogger();
    const getGitBranch = makeExecutable("git rev-parse --abbrev-ref HEAD", gitLog);
    const gitBranch = (await getGitBranch()).trim();
    const getGitRoot = makeExecutable("git rev-parse --show-toplevel", gitLog);
    const gitRoot = (await getGitRoot()).trim();
    if (gitBranch && gitRoot && file.startsWith(gitRoot)) {
      frontmatter.source_url = `${frontmatter.github}/blob/${gitBranch}${file.replace(gitRoot, "")}`;
      frontmatter.edit_url = `${frontmatter.github}/edit/${gitBranch}${file.replace(gitRoot, "")}`;
      session.log.debug(`Added edit URL ${frontmatter.edit_url} to ${file}`);
    }
  } catch {
    session.log.debug(`Unable to add edit URL to ${file}`);
  }
}

// ../myst-cli/dist/process/mdast.js
var LINKS_SELECTOR = "link,card,linkBlock";
var pluginUtils = { select, selectAll };
var htmlHandlers = {
  comment(h4, node3) {
    const result = h4(node3, "comment");
    result.value = node3.value;
    return result;
  }
};
async function transformMdast(session, opts) {
  var _a6, _b, _c, _d2, _e;
  const {
    file,
    projectPath,
    pageSlug,
    projectSlug,
    imageExtensions,
    extraTransforms,
    watchMode = false,
    minifyMaxCharacters,
    index: index4,
    titleDepth,
    // Related to title set in markdown, rather than frontmatter
    offset,
    // Related to multi-page nesting
    execute
  } = opts;
  const toc = tic();
  const { store, log } = session;
  const cache = castSession(session);
  if (!cache.$getMdast(file))
    return;
  const { mdast: mdastPre, kind, frontmatter: preFrontmatter, location: location4, identifiers, widgets } = (_b = (_a6 = cache.$getMdast(file)) === null || _a6 === void 0 ? void 0 : _a6.pre) !== null && _b !== void 0 ? _b : {};
  if (!mdastPre || !kind || !location4)
    throw new Error(`Expected mdast to be parsed for ${file}`);
  log.debug(`Processing "${file}"`);
  const vfile2 = new VFile();
  vfile2.path = file;
  const mdast2 = structuredClone(mdastPre);
  const frontmatter = processPageFrontmatter(session, preFrontmatter !== null && preFrontmatter !== void 0 ? preFrontmatter : {}, {
    property: "frontmatter",
    file,
    messages: {},
    errorLogFn: (message) => {
      fileError(vfile2, message, { ruleId: RuleId.validPageFrontmatter });
    },
    warningLogFn: (message) => {
      fileWarn(vfile2, message, { ruleId: RuleId.validPageFrontmatter });
    }
  }, projectPath);
  if (offset) {
    if (!frontmatter.numbering)
      frontmatter.numbering = {};
    if (!frontmatter.numbering.title)
      frontmatter.numbering.title = {};
    if (frontmatter.numbering.title.offset == null)
      frontmatter.numbering.title.offset = offset;
  }
  await addEditUrl(session, frontmatter, file);
  const references = {
    cite: { order: [], data: {} }
  };
  importMdastFromJson(session, file, mdast2);
  await includeFilesTransform(session, file, mdast2, frontmatter, vfile2);
  rawDirectiveTransform(mdast2, vfile2);
  liftCodeMetadataToBlock(session, vfile2, mdast2);
  if (execute && !((_c = frontmatter.execute) === null || _c === void 0 ? void 0 : _c.skip)) {
    const cachePath2 = import_node_path39.default.join(session.buildPath(), "execute");
    await kernelExecutionTransform(mdast2, vfile2, {
      basePath: session.sourcePath(),
      cache: new LocalDiskCache(cachePath2),
      sessionFactory: () => session.jupyterSessionManager(),
      frontmatter,
      ignoreCache: false,
      errorIsFatal: false,
      log: session.log
    });
  }
  const pipe = unified().use(reconstructHtmlPlugin).use(htmlPlugin, { htmlHandlers }).use(basicTransformationsPlugin, {
    parser: (content3) => parseMyst(session, content3, file),
    firstDepth: (titleDepth !== null && titleDepth !== void 0 ? titleDepth : 1) + (frontmatter.content_includes_title ? 0 : 1)
  }).use(inlineMathSimplificationPlugin, { replaceSymbol: false }).use(mathPlugin, { macros: frontmatter.math });
  (_d2 = session.plugins) === null || _d2 === void 0 ? void 0 : _d2.transforms.forEach((t2) => {
    if (t2.stage !== "document")
      return;
    pipe.use(t2.plugin, void 0, pluginUtils);
  });
  pipe.use(glossaryPlugin).use(abbreviationPlugin, { abbreviations: frontmatter.abbreviations }).use(indexIdentifierPlugin);
  await pipe.run(mdast2, vfile2);
  propagateBlockDataToCode(session, vfile2, mdast2);
  cache.$citationRenderers[file] = await transformLinkedDOIs(session, vfile2, mdast2, cache.$doiRenderers, file);
  const rendererFiles = [file];
  if (projectPath) {
    rendererFiles.unshift(projectPath);
  } else {
    const localFiles = await bibFilesInDir(session, import_node_path39.default.dirname(file)) || [];
    rendererFiles.push(...localFiles);
  }
  const fileCitationRenderer = combineCitationRenderers(cache, ...rendererFiles);
  transformRenderInlineExpressions(mdast2, vfile2);
  await transformOutputsToCache(session, mdast2, kind, { minifyMaxCharacters });
  transformFilterOutputStreams(mdast2, vfile2, frontmatter.settings);
  transformCitations(session, file, mdast2, fileCitationRenderer, references);
  await unified().use(codePlugin, { lang: (_e = frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.kernelspec) === null || _e === void 0 ? void 0 : _e.language }).use(footnotesPlugin).run(mdast2, vfile2);
  transformImagesToEmbed(mdast2);
  transformImagesWithoutExt(session, mdast2, file, { imageExtensions });
  const isJupytext = frontmatter.kernelspec || frontmatter.jupytext;
  if (isJupytext)
    transformLiftCodeBlocksInJupytext(mdast2);
  const sha256 = selectors_exports.selectFileInfo(store.getState(), file).sha256;
  const useSlug = pageSlug !== index4;
  let url;
  let dataUrl;
  if (pageSlug && projectSlug) {
    url = `/${projectSlug}/${useSlug ? pageSlug : ""}`;
    dataUrl = `/${projectSlug}/${pageSlug}.json`;
  } else if (pageSlug) {
    url = `/${useSlug ? pageSlug : ""}`;
    dataUrl = `/${pageSlug}.json`;
  }
  url = slugToUrl(url);
  updateFileInfoFromFrontmatter(session, file, frontmatter, url, dataUrl);
  const data = {
    kind: isJupytext ? SourceFileKind.Notebook : kind,
    file,
    location: location4,
    sha256,
    slug: pageSlug,
    dependencies: [],
    frontmatter,
    mdast: mdast2,
    references,
    identifiers,
    widgets
  };
  const cachedMdast = cache.$getMdast(file);
  if (cachedMdast)
    cachedMdast.post = data;
  if (extraTransforms) {
    await Promise.all(extraTransforms.map(async (transform3) => {
      await transform3(session, opts);
    }));
  }
  logMessagesFromVFile(session, vfile2);
  if (!watchMode)
    log.info(toc(`\u{1F4D6} Built ${file} in %s.`));
}
async function postProcessMdast(session, { file, checkLinks, pageReferenceStates, extraLinkTransformers, site }) {
  var _a6, _b, _c;
  const toc = tic();
  const { log } = session;
  const cache = castSession(session);
  const mdastPost = selectFile(session, file);
  if (!mdastPost)
    return;
  const vfile2 = new VFile();
  vfile2.path = file;
  const { mdast: mdast2, dependencies, frontmatter } = mdastPost;
  const state = new MultiPageReferenceResolver(pageReferenceStates, file, vfile2);
  const externalReferences = Object.values(cache.$externalReferences);
  const storeState = session.store.getState();
  const projectPath = selectors_exports.selectCurrentProjectPath(storeState);
  const siteConfig = selectors_exports.selectCurrentSiteConfig(storeState);
  const projectSlug = (_b = (_a6 = siteConfig === null || siteConfig === void 0 ? void 0 : siteConfig.projects) === null || _a6 === void 0 ? void 0 : _a6.find((proj) => proj.path === projectPath)) === null || _b === void 0 ? void 0 : _b.slug;
  if (site) {
    buildTocTransform(mdast2, vfile2, projectPath ? [
      {
        title: manifestTitleFromProject(session, projectPath),
        level: 1,
        slug: "",
        enumerator: indexFrontmatterFromProject(session, projectPath).enumerator
      },
      ...await manifestPagesFromProject(session, projectPath)
    ] : void 0, projectSlug);
  }
  const transformers = [
    ...extraLinkTransformers || [],
    new WikiTransformer(),
    new GithubTransformer(),
    new RRIDTransformer(),
    new RORTransformer(),
    new DOITransformer(),
    // This also is picked up in the next transform
    new MystTransformer(externalReferences),
    new SphinxTransformer(externalReferences),
    new StaticFileTransformer(session, file)
    // Links static files and internally linked files
  ];
  resolveLinksAndCitationsTransform(mdast2, { state, transformers });
  linksTransform(mdast2, vfile2, {
    transformers,
    selector: LINKS_SELECTOR
  });
  await transformLinkedRORs(session, vfile2, mdast2, file);
  resolveReferencesTransform(mdast2, vfile2, { state, transformers });
  await transformMystXRefs(session, vfile2, mdast2, frontmatter);
  await embedTransform(session, mdast2, file, dependencies, state);
  const pipe = unified();
  (_c = session.plugins) === null || _c === void 0 ? void 0 : _c.transforms.forEach((t2) => {
    if (t2.stage !== "project")
      return;
    pipe.use(t2.plugin, void 0, pluginUtils);
  });
  await pipe.run(mdast2, vfile2);
  keysTransform(mdast2);
  checkLinkTextTransform(mdast2, externalReferences, vfile2);
  logMessagesFromVFile(session, vfile2);
  log.debug(toc(`Transformed mdast cross references and links for "${file}" in %s`));
  if (checkLinks)
    await checkLinksTransform(session, file, mdast2);
}
async function finalizeMdast(session, mdast2, frontmatter, file, { imageWriteFolder, useExistingImages, imageAltOutputFolder, imageExtensions, optimizeWebp, simplifyFigures, processThumbnail, maxSizeWebp }) {
  var _a6, _b;
  const vfile2 = new VFile();
  vfile2.path = file;
  if (simplifyFigures) {
    reduceOutputs(session, mdast2, file, imageWriteFolder, {
      altOutputFolder: simplifyFigures ? void 0 : imageAltOutputFolder
    });
  }
  transformOutputsToFile(session, mdast2, imageWriteFolder, {
    altOutputFolder: simplifyFigures ? void 0 : imageAltOutputFolder,
    vfile: vfile2
  });
  if (!useExistingImages) {
    await transformImagesToDisk(session, mdast2, file, imageWriteFolder, {
      altOutputFolder: imageAltOutputFolder,
      imageExtensions
    });
    await transformImageFormats(session, mdast2, file, imageWriteFolder, {
      altOutputFolder: imageAltOutputFolder,
      imageExtensions
    });
    if (optimizeWebp) {
      await transformWebp(session, { file, imageWriteFolder, maxSizeWebp });
    }
    if (processThumbnail) {
      await transformThumbnail(session, mdast2, file, frontmatter, imageWriteFolder, {
        altOutputFolder: imageAltOutputFolder,
        webp: optimizeWebp,
        maxSizeWebp
      });
      await transformBanner(session, file, frontmatter, imageWriteFolder, {
        altOutputFolder: imageAltOutputFolder,
        webp: optimizeWebp,
        maxSizeWebp
      });
    }
  }
  await transformDeleteBase64UrlSource(mdast2);
  if (simplifyFigures) {
    transformPlaceholderImages(mdast2, { imageExtensions });
  }
  const cache = castSession(session);
  const postData = (_a6 = cache.$getMdast(file)) === null || _a6 === void 0 ? void 0 : _a6.post;
  if (postData) {
    postData.frontmatter = frontmatter;
    postData.mdast = mdast2;
    postData.widgets = (_b = cache.$getMdast(file)) === null || _b === void 0 ? void 0 : _b.pre.widgets;
    updateFileInfoFromFrontmatter(session, file, frontmatter);
  }
  logMessagesFromVFile(session, vfile2);
}

// ../myst-cli/dist/process/search.js
var IGNORED_TYPES = ["myst", "heading"];
var INLINE_BLOCK_TYPES = [
  "strong",
  "emphasis",
  "delete",
  "superscript",
  "underline",
  "subscript",
  "abbreviation",
  "smallcaps",
  "keyboard"
];
function toSectionedParts(content3) {
  const sections = [];
  const newSection = (heading6) => {
    var _a6;
    const info = heading6 ? {
      text: toText(heading6),
      depth: heading6.depth,
      html_id: (_a6 = heading6.html_id) !== null && _a6 !== void 0 ? _a6 : heading6.identifier
    } : void 0;
    sections.push({ heading: info, parts: [] });
  };
  newSection();
  visit(content3, (node3, index4, parent2) => {
    if (node3.type === "heading") {
      newSection(node3);
    }
    if (IGNORED_TYPES.includes(node3.type)) {
      return SKIP;
    }
    const section = sections[sections.length - 1];
    if ("value" in node3 && node3.value) {
      section.parts.push(node3.value);
    }
    if (index4 != null && parent2 != null && // Skip literal nodes
    "children" in node3 && // Skip inline-block nodes
    !INLINE_BLOCK_TYPES.includes(node3.type)) {
      let previousNode;
      for (let i2 = index4 - 1; i2 >= 0; i2--) {
        const maybePreviousNode = parent2.children[i2];
        if (maybePreviousNode.type === "heading") {
          break;
        }
        if (!IGNORED_TYPES.includes(maybePreviousNode.type)) {
          previousNode = maybePreviousNode;
          break;
        }
      }
      if (previousNode !== void 0) {
        section.parts.push("\n\n");
      }
    }
  });
  return sections;
}
function sectionToHeadingLevel(heading6) {
  if (!heading6) {
    return "lvl1";
  }
  switch (heading6.depth) {
    case 1:
      return "lvl1";
    case 2:
      return "lvl2";
    case 3:
      return "lvl3";
    case 4:
      return "lvl4";
    case 5:
      return "lvl5";
    case 6:
      return "lvl6";
    default:
      throw new Error(`unknown heading depth: ${heading6.depth}`);
  }
}
function buildHierarchy(title, sections, index4) {
  const result = { lvl1: title };
  let currentDepth = 100;
  for (let i2 = index4; i2 > 0; i2--) {
    const { heading: heading6 } = sections[i2];
    if (heading6 === void 0) {
      throw new Error();
    }
    if (heading6.depth >= currentDepth) {
      continue;
    }
    const lvl = sectionToHeadingLevel(heading6);
    result[lvl] = heading6.text;
    currentDepth = heading6.depth;
  }
  return result;
}

// ../myst-cli/dist/process/site.js
var WEB_IMAGE_EXTENSIONS = [
  ImageExtensions.mp4,
  ImageExtensions.webp,
  ImageExtensions.svg,
  ImageExtensions.gif,
  ImageExtensions.png,
  ImageExtensions.jpg,
  ImageExtensions.jpeg
];
function changeFile(session, path45, eventType) {
  session.log.debug(`File modified: "${path45}" (${eventType})`);
  const cache = castSession(session);
  session.store.dispatch(watch.actions.markFileChanged({ path: path45 }));
  delete cache.$mdast[path45];
  delete cache.$citationRenderers[path45];
}
async function writeSiteManifest(session, opts) {
  const configPath = (0, import_node_path40.join)(session.sitePath(), "config.json");
  session.log.debug("Writing site config.json");
  const siteManifest = await getSiteManifest(session, opts);
  writeFileToFolder(configPath, JSON.stringify(siteManifest));
}
function getReferenceTitleAsText(targetNode) {
  if (targetNode.type === "heading") {
    return toText(targetNode);
  }
  const caption3 = select("caption > paragraph", targetNode);
  if (caption3)
    return toText(caption3);
}
async function writeMystXRefJson(session, states) {
  const references = states.filter((state) => {
    return !!state.url && !!state.dataUrl;
  }).map((state) => {
    const { url, dataUrl } = state;
    const data = `/content${dataUrl}`;
    const pageRef = { kind: "page", data, url };
    const pageIdRefs = state.identifiers.map((identifier) => {
      return { identifier, kind: "page", data, url };
    });
    const targetRefs = Object.values(state.targets).map((target) => {
      var _a6;
      const { identifier, html_id } = (_a6 = target.node) !== null && _a6 !== void 0 ? _a6 : {};
      return {
        identifier,
        html_id: html_id !== identifier ? html_id : void 0,
        kind: target.kind,
        data,
        url,
        implicit: target.node.implicit
      };
    });
    return [pageRef, ...pageIdRefs, ...targetRefs];
  }).flat();
  const mystXRefs = {
    version: "1",
    myst: version_default2,
    references: [...new Set(references.map((ref) => JSON.stringify(ref)))].map((ref) => {
      return JSON.parse(ref);
    })
  };
  const filename = (0, import_node_path40.join)(session.sitePath(), "myst.xref.json");
  session.log.debug(`Writing myst.xref.json file: ${filename}`);
  writeFileToFolder(filename, JSON.stringify(mystXRefs));
}
async function writeMystSearchJson(session, pages) {
  const records = [...pages].sort((left2, right2) => {
    if (left2.file < right2.file) {
      return -1;
    } else if (left2.file > right2.file) {
      return 1;
    } else {
      return 0;
    }
  }).map((page) => selectFile(session, page.file)).map((file) => {
    var _a6;
    const { mdast: mdast2, slug, frontmatter } = file !== null && file !== void 0 ? file : {};
    if (!mdast2 || !frontmatter || !slug) {
      return [];
    }
    const title = (_a6 = frontmatter.title) !== null && _a6 !== void 0 ? _a6 : "";
    const sections = toSectionedParts(mdast2);
    const pageURL = DEFAULT_INDEX_FILENAMES.includes(slug) ? "/" : `/${slugToUrl(slug)}`;
    return sections.map((section, index4) => {
      var _a7;
      const hierarchy = buildHierarchy(title, sections, index4);
      const recordURL = ((_a7 = section.heading) === null || _a7 === void 0 ? void 0 : _a7.html_id) ? `${pageURL}#${section.heading.html_id}` : pageURL;
      return [
        {
          hierarchy,
          type: sectionToHeadingLevel(section.heading),
          url: recordURL,
          position: 2 * index4
        },
        {
          hierarchy,
          content: section.parts.join(""),
          type: "content",
          url: recordURL,
          position: 2 * index4 + 1
        }
      ];
    }).flat();
  }).flat();
  const data = {
    version: "1",
    records
  };
  const filename = (0, import_node_path40.join)(session.sitePath(), "myst.search.json");
  session.log.debug(`Writing myst.search.json file: ${filename}`);
  writeFileToFolder(filename, JSON.stringify(data));
}
async function writeObjectsInv(session, states, siteConfig) {
  const inv = new Inventory({
    project: siteConfig === null || siteConfig === void 0 ? void 0 : siteConfig.title,
    // TODO: allow a version on the project?!
    version: String(siteConfig === null || siteConfig === void 0 ? void 0 : siteConfig.version)
  });
  states.filter((state) => !!state.url).forEach((state) => {
    var _a6;
    inv.setEntry({
      type: Domains.stdDoc,
      name: state.url.replace(/^\//, ""),
      location: state.url,
      display: (_a6 = state.title) !== null && _a6 !== void 0 ? _a6 : ""
    });
    Object.entries(state.targets).forEach(([name3, target]) => {
      var _a7;
      if (target.node.implicit) {
        return;
      }
      inv.setEntry({
        type: Domains.stdLabel,
        name: name3,
        location: `${state.url}#${(_a7 = target.node.html_id) !== null && _a7 !== void 0 ? _a7 : target.node.identifier}`,
        display: getReferenceTitleAsText(target.node)
      });
    });
  });
  const filename = (0, import_node_path40.join)(session.sitePath(), "objects.inv");
  session.log.debug(`Writing objects.inv file: ${filename}`);
  inv.write(filename);
}
async function loadProject(session, projectPath, opts) {
  const project = await loadProjectFromDisk(session, projectPath, {
    warnOnNoConfig: true,
    ...opts
  });
  const pages = filterPages(project);
  return { project, pages };
}
function warnOnDuplicateIdentifiers(session, states) {
  const collisions = {};
  states.forEach((state) => {
    state.getIdentifiers().forEach((identifier) => {
      var _a6, _b;
      const target = state.getTarget(identifier);
      if ((_a6 = target === null || target === void 0 ? void 0 : target.node) === null || _a6 === void 0 ? void 0 : _a6.implicit)
        return;
      (_b = collisions[identifier]) !== null && _b !== void 0 ? _b : collisions[identifier] = [];
      collisions[identifier].push(state.filePath);
    });
  });
  Object.entries(collisions).forEach(([identifier, files]) => {
    if (files.length <= 1)
      return;
    addWarningForFile(session, files[0], `Duplicate identifier in project "${identifier}"`, "warn", {
      note: `In files: ${files.join(", ")}`,
      ruleId: RuleId.identifierIsUnique
    });
  });
}
function referenceFileFromPartFile(session, partFile) {
  const state = session.store.getState();
  const partDeps = selectors_exports.selectDependentFiles(state, partFile);
  if (partDeps.length > 0)
    return partDeps[0];
  const file = selectors_exports.selectFileFromPart(state, partFile);
  return file !== null && file !== void 0 ? file : partFile;
}
function selectPageReferenceStates(session, pages, opts) {
  const cache = castSession(session);
  let previousCounts;
  const pageReferenceStates = pages.map(({ file, hidden: hidden2 }) => {
    var _a6, _b;
    const { frontmatter, identifiers, mdast: mdast2, kind } = (_b = (_a6 = cache.$getMdast(file)) === null || _a6 === void 0 ? void 0 : _a6.post) !== null && _b !== void 0 ? _b : {};
    const vfile2 = new VFile();
    vfile2.path = file;
    const refFile = kind === SourceFileKind.Part ? referenceFileFromPartFile(session, file) : file;
    const state = new ReferenceState(refFile, {
      frontmatter,
      identifiers,
      previousCounts,
      vfile: vfile2,
      hidden: hidden2
    });
    if (frontmatter && !frontmatter.enumerator) {
      frontmatter.enumerator = state.enumerator;
    }
    if (mdast2)
      enumerateTargetsTransform(mdast2, { state, hidden: hidden2 });
    previousCounts = state.targetCounts;
    logMessagesFromVFile(session, vfile2);
    if (state) {
      const selectedFile = selectors_exports.selectFileInfo(session.store.getState(), state.filePath);
      if (selectedFile === null || selectedFile === void 0 ? void 0 : selectedFile.url)
        state.url = selectedFile.url;
      if (selectedFile === null || selectedFile === void 0 ? void 0 : selectedFile.title)
        state.title = selectedFile.title;
      if (selectedFile === null || selectedFile === void 0 ? void 0 : selectedFile.dataUrl)
        state.dataUrl = selectedFile.dataUrl;
      return state;
    }
    return void 0;
  }).filter((state) => !!state);
  if (!(opts === null || opts === void 0 ? void 0 : opts.suppressWarnings))
    warnOnDuplicateIdentifiers(session, pageReferenceStates);
  pageReferenceStates.forEach((state) => {
    var _a6, _b;
    const { mdast: mdast2 } = (_b = (_a6 = cache.$getMdast(state.filePath)) === null || _a6 === void 0 ? void 0 : _a6.post) !== null && _b !== void 0 ? _b : {};
    if (!mdast2)
      return;
    buildIndexTransform(mdast2, state.vfile, state, new MultiPageReferenceResolver(pageReferenceStates, state.filePath));
    logMessagesFromVFile(session, state.vfile);
  });
  return pageReferenceStates;
}
async function resolvePageSource(session, file) {
  const fileHash = hashAndCopyStaticFile(session, file, session.publicPath(), (m2) => {
    addWarningForFile(session, file, m2, "error", {
      ruleId: RuleId.sourceFileCopied
    });
  });
  return { format: (0, import_node_path40.extname)(file).substring(1), filename: (0, import_node_path40.basename)(file), url: `/${fileHash}` };
}
async function writeFile(session, { file, pageSlug, projectSlug, projectPath }) {
  const toc = tic();
  const selectedFile = selectFile(session, file);
  if (!selectedFile)
    return;
  const { frontmatter, mdast: mdast2, kind, sha256, slug, references, dependencies, location: location4, widgets } = selectedFile;
  const exports2 = await Promise.all([
    resolvePageSource(session, file),
    ...await resolvePageExports(session, file)
  ]);
  const downloads = await resolvePageDownloads(session, file, projectPath);
  const parts = resolveFrontmatterParts(session, frontmatter);
  const frontmatterWithExports = { ...frontmatter, exports: exports2, downloads, parts };
  const mystData = {
    version: SPEC_VERSION,
    kind,
    sha256,
    slug,
    location: location4,
    dependencies,
    frontmatter: frontmatterWithExports,
    widgets,
    mdast: mdast2,
    references
  };
  const jsonFilenameParts = [session.contentPath()];
  if (projectSlug)
    jsonFilenameParts.push(projectSlug);
  jsonFilenameParts.push(`${pageSlug}.json`);
  writeFileToFolder((0, import_node_path40.join)(...jsonFilenameParts), JSON.stringify(mystData));
  session.log.debug(toc(`Wrote "${file}" in %s`));
}
async function fastProcessFile(session, { file, pageSlug, projectPath, projectSlug, imageExtensions, imageWriteFolder, imageAltOutputFolder, extraLinkTransformers, extraTransforms, defaultTemplate, execute, maxSizeWebp }) {
  const toc = tic();
  await loadFile(session, file, projectPath);
  const { project, pages } = await loadProject(session, projectPath);
  const state = session.store.getState();
  const fileParts = selectors_exports.selectFileParts(state, file);
  const projectParts = selectors_exports.selectProjectParts(state, projectPath);
  await Promise.all([file, ...fileParts].map(async (f3) => {
    var _a6;
    const level = (_a6 = pages.find((page) => page.file === file)) === null || _a6 === void 0 ? void 0 : _a6.level;
    return transformMdast(session, {
      file: f3,
      imageExtensions: imageExtensions !== null && imageExtensions !== void 0 ? imageExtensions : WEB_IMAGE_EXTENSIONS,
      projectPath,
      projectSlug,
      pageSlug,
      watchMode: true,
      extraTransforms,
      index: project.index,
      execute,
      offset: level ? level - 1 : void 0
    });
  }));
  const pageReferenceStates = selectPageReferenceStates(session, [
    ...pages,
    ...projectParts.map((part) => {
      return { file: part };
    })
  ]);
  await Promise.all([...pages.map((p5) => p5.file), ...fileParts].map(async (f3) => {
    return postProcessMdast(session, {
      file: f3,
      pageReferenceStates,
      extraLinkTransformers,
      site: true
    });
  }));
  await Promise.all([...pages.map((p5) => p5.file), ...fileParts].map(async (f3) => {
    var _a6, _b;
    const { mdast: mdast2, frontmatter } = (_b = (_a6 = castSession(session).$getMdast(f3)) === null || _a6 === void 0 ? void 0 : _a6.post) !== null && _b !== void 0 ? _b : {};
    if (mdast2 && frontmatter) {
      await finalizeMdast(session, mdast2, frontmatter, f3, {
        imageWriteFolder: imageWriteFolder !== null && imageWriteFolder !== void 0 ? imageWriteFolder : session.publicPath(),
        imageAltOutputFolder: imageAltOutputFolder !== null && imageAltOutputFolder !== void 0 ? imageAltOutputFolder : "/",
        imageExtensions: imageExtensions !== null && imageExtensions !== void 0 ? imageExtensions : WEB_IMAGE_EXTENSIONS,
        optimizeWebp: true,
        processThumbnail: f3 === file,
        maxSizeWebp
      });
    }
  }));
  await Promise.all(pages.map(async (page) => {
    return writeFile(session, {
      file: page.file,
      projectSlug,
      projectPath,
      pageSlug: page.slug
    });
  }));
  session.log.info(toc(`\u{1F4D6} Built ${file} in %s.`));
  await writeSiteManifest(session, { defaultTemplate });
}
async function processProject(session, siteProject, opts) {
  var _a6;
  const toc = tic();
  const { log } = session;
  const { imageWriteFolder, imageAltOutputFolder, imageExtensions, extraLinkTransformers, extraTransforms, watchMode, writeTOC, writeDOIBib, writeFiles = true, reloadProject, execute, maxSizeWebp, checkLinks, strict } = opts || {};
  if (!siteProject.path) {
    const slugSuffix = siteProject.slug ? `: ${siteProject.slug}` : "";
    log.error(`No local path for site project${slugSuffix}`);
    if (siteProject.remote)
      log.error(`Remote path not supported${slugSuffix}`);
    throw Error("Unable to process project");
  }
  const { project, pages } = await loadProject(session, siteProject.path, {
    writeTOC: writeFiles && writeTOC,
    reloadProject
  });
  if (!watchMode) {
    await Promise.all([
      // Load all citations (.bib)
      ...project.bibliography.map((path45) => loadFile(session, path45, siteProject.path, ".bib")),
      // Load all content (.md, .ipynb, .tex, and .myst.json)
      ...pages.map((page) => loadFile(session, page.file, siteProject.path, void 0)),
      // Load up all the intersphinx references
      loadReferences(session, { projectPath: siteProject.path })
    ]);
  }
  combineProjectCitationRenderers(session, siteProject.path);
  const projectParts = selectors_exports.selectProjectParts(session.store.getState(), siteProject.path).map((part) => {
    return { file: part };
  });
  const pagesToTransform = [
    ...pages,
    ...projectParts
  ];
  const usedImageExtensions = imageExtensions !== null && imageExtensions !== void 0 ? imageExtensions : WEB_IMAGE_EXTENSIONS;
  await Promise.all(pagesToTransform.map((page) => transformMdast(session, {
    file: page.file,
    projectPath: project.path,
    projectSlug: siteProject.slug,
    pageSlug: page.slug,
    imageExtensions: usedImageExtensions,
    watchMode,
    execute,
    extraTransforms,
    index: project.index,
    offset: page.level ? page.level - 1 : void 0
  })));
  const pageReferenceStates = selectPageReferenceStates(session, pagesToTransform);
  await Promise.all(pagesToTransform.map((page) => postProcessMdast(session, {
    file: page.file,
    checkLinks: checkLinks || strict,
    pageReferenceStates,
    extraLinkTransformers,
    site: true
  })));
  if (writeFiles) {
    await Promise.all(pagesToTransform.map(async (page) => {
      var _a7, _b;
      const { mdast: mdast2, frontmatter } = (_b = (_a7 = castSession(session).$getMdast(page.file)) === null || _a7 === void 0 ? void 0 : _a7.post) !== null && _b !== void 0 ? _b : {};
      if (mdast2) {
        await finalizeMdast(session, mdast2, frontmatter !== null && frontmatter !== void 0 ? frontmatter : {}, page.file, {
          imageWriteFolder: imageWriteFolder !== null && imageWriteFolder !== void 0 ? imageWriteFolder : session.publicPath(),
          imageAltOutputFolder,
          imageExtensions: usedImageExtensions,
          optimizeWebp: true,
          processThumbnail: true,
          maxSizeWebp
        });
      }
    }));
    await Promise.all(pages.map(async (page) => {
      return writeFile(session, {
        file: page.file,
        projectSlug: siteProject.slug,
        projectPath: siteProject.path,
        pageSlug: page.slug
      });
    }));
  }
  log.info(toc(`\u{1F4DA} Built ${plural("%s page(s)", pages)} for ${(_a6 = siteProject.slug) !== null && _a6 !== void 0 ? _a6 : "project"} in %s.`));
  if (writeDOIBib) {
    const doiBibFile = (0, import_node_path40.join)(siteProject.path, MYST_DOI_BIB_FILE);
    log.info(`\u{1F393} Writing remote DOI citations to ${doiBibFile}`);
    writeRemoteDOIBibtex(session, doiBibFile);
  }
  return project;
}
async function processSite(session, opts) {
  var _a6, _b;
  try {
    await reloadAllConfigsForCurrentSite(session);
  } catch (error) {
    session.log.debug(`

${error === null || error === void 0 ? void 0 : error.stack}

`);
    const prefix2 = (error === null || error === void 0 ? void 0 : error.message) ? error.message : "Error finding or reading configuration files.";
    session.log.error(`${prefix2}
Do you need to run ${source_default.bold("myst init")}?`);
    process.exit(1);
  }
  const siteConfig = selectors_exports.selectCurrentSiteConfig(session.store.getState());
  session.log.debug(`Site Config:

${js_yaml_default.dump(siteConfig)}`);
  if (!((_a6 = siteConfig === null || siteConfig === void 0 ? void 0 : siteConfig.projects) === null || _a6 === void 0 ? void 0 : _a6.length))
    return false;
  const projects2 = await Promise.all(siteConfig.projects.map((siteProject) => processProject(session, siteProject, {
    ...opts,
    imageWriteFolder: session.publicPath(),
    imageAltOutputFolder: "/"
  })));
  if (opts === null || opts === void 0 ? void 0 : opts.strict) {
    const hasWarnings = projects2.map((project) => {
      return [{ file: project.file, slug: project.index }, ...project.pages].map((page) => {
        if (!("slug" in page))
          return [0, 0];
        const buildWarnings = selectors_exports.selectFileWarnings(session.store.getState(), page.file);
        if (!buildWarnings || buildWarnings.length === 0)
          return [0, 0];
        const resp = buildWarnings.map(({ message, kind }) => source_default[kind === "error" ? "red" : "yellow"](message)).join("\n  - ");
        session.log.info(`
${page.file}
  - ${resp}
`);
        return [
          buildWarnings.filter(({ kind }) => kind === "error").length,
          buildWarnings.filter(({ kind }) => kind === "warn").length
        ];
      }).reduce((a2, b) => [a2[0] + b[0], a2[1] + b[1]], [0, 0]);
    }).reduce((a2, b) => [a2[0] + b[0], a2[1] + b[1]], [0, 0]);
    if (hasWarnings[0] > 0) {
      const pluralE = hasWarnings[0] > 1 ? "s" : "";
      const pluralW = hasWarnings[1] > 1 ? "s" : "";
      session.log.error(`Site has ${hasWarnings[0]} error${pluralE} and ${hasWarnings[1]} warning${pluralW}, stopping build.`);
      process.exit(1);
    }
  }
  if ((_b = opts === null || opts === void 0 ? void 0 : opts.writeFiles) !== null && _b !== void 0 ? _b : true) {
    await writeSiteManifest(session, opts);
    const states = [];
    const allPages = [];
    const sessionState = session.store.getState();
    await Promise.all(siteConfig.projects.map(async (project) => {
      if (!project.path)
        return;
      const { pages } = await loadProject(session, project.path);
      allPages.push(...pages);
      const projectParts = selectors_exports.selectProjectParts(sessionState, project.path).map((part) => {
        return { file: part };
      });
      states.push(...selectPageReferenceStates(session, [...pages, ...projectParts], {
        suppressWarnings: true
      }));
    }));
    await writeObjectsInv(session, states, siteConfig);
    await writeMystXRefJson(session, states);
    await writeMystSearchJson(session, allPages);
  }
  return true;
}

// ../myst-cli/dist/build/site/prepare.js
function ensureBuildFoldersExist(session) {
  import_node_fs33.default.mkdirSync(session.contentPath(), { recursive: true });
  import_node_fs33.default.mkdirSync(session.publicPath(), { recursive: true });
  session.log.debug(`Build folders created for site content: ${session.sitePath()}`);
}
async function buildSite(session, opts) {
  ensureBuildFoldersExist(session);
  await processSite(session, opts);
}

// ../myst-cli/dist/build/utils/localArticleExport.js
var import_node_path54 = __toESM(require("path"), 1);
var import_chokidar = __toESM(require_chokidar(), 1);

// ../myst-cli/dist/build/utils/resolveAndLogErrors.js
async function resolveAndLogErrors(session, promises, throwOnFailure) {
  let errors4 = await Promise.all(promises.map((p5) => p5.catch((e2) => e2)));
  errors4 = errors4.filter((e2) => e2 instanceof Error);
  errors4.forEach((e2) => {
    session.log.debug(`

${e2 === null || e2 === void 0 ? void 0 : e2.stack}

`);
    session.log.error(e2);
  });
  if (throwOnFailure && errors4.length > 0)
    throw errors4[0];
  return errors4;
}

// ../myst-cli/dist/build/tex/single.js
var import_adm_zip2 = __toESM(require_adm_zip(), 1);
var import_node_path45 = __toESM(require("path"), 1);

// ../jtex/dist/tex/export.js
var import_node_path41 = __toESM(require("path"), 1);

// ../jtex/dist/utils.js
function createCommand2(baseCommand, logFile) {
  return process.platform === "win32" ? `${baseCommand} 1> ${logFile} 2>&1` : `${baseCommand} &> ${logFile}`;
}

// ../jtex/dist/tex/export.js
function pdfTexExportCommand(texFile, logFile, template) {
  var _a6, _b;
  const templateYml = template === null || template === void 0 ? void 0 : template.getValidatedTemplateYml();
  const engine = (_b = (_a6 = templateYml === null || templateYml === void 0 ? void 0 : templateYml.build) === null || _a6 === void 0 ? void 0 : _a6.engine) !== null && _b !== void 0 ? _b : "-xelatex";
  const baseCommand = `latexmk -f ${engine} -synctex=1 -interaction=batchmode -file-line-error -latexoption="-shell-escape" ${texFile}`;
  return createCommand2(baseCommand, logFile);
}
function texMakeGlossariesCommand(texFile, logFile) {
  const fileNameNoExt = import_node_path41.default.basename(texFile, ".tex");
  const baseCommand = `makeglossaries ${fileNameNoExt}`;
  return createCommand2(baseCommand, logFile);
}

// ../jtex/dist/tex/imports.js
var commentLength = 50;
function createTexImportCommands(commands, existingPackages) {
  const sorted = [...commands].sort();
  const existingSet = new Set(existingPackages);
  const filtered = existingPackages ? sorted.filter((p5) => !existingSet.has(p5)) : sorted;
  return filtered.map((c) => `\\usepackage{${c}}`);
}
function createTexMathCommands(plugins3) {
  if (!plugins3 || Object.keys(plugins3).length === 0)
    return [];
  return Object.entries(plugins3).map(([k, v]) => {
    var _a6, _b;
    const numArgs = (_b = (_a6 = v.match(/#([1-9])/g)) === null || _a6 === void 0 ? void 0 : _a6.length) !== null && _b !== void 0 ? _b : 0;
    if (numArgs === 0)
      return `\\newcommand{${k}}{${v}}`;
    return `\\newcommand{${k}}[${numArgs}]{${v}}`;
  });
}
function renderTexImports(templateImports, existingPackages, preamble) {
  let importsAndCommands;
  if (!templateImports || typeof templateImports === "string") {
    importsAndCommands = templateImports || "";
  } else {
    const packages = new Set(templateImports.imports);
    const imports = writeTexLabelledComment("imports", createTexImportCommands(packages, existingPackages), commentLength);
    const commands = writeTexLabelledComment("math commands", createTexMathCommands(templateImports.commands), commentLength);
    importsAndCommands = `${imports}${commands}`;
  }
  const preambleContent = preamble ? `${preamble}
` : "";
  if (!importsAndCommands)
    return preambleContent;
  const percents = "".padEnd(commentLength, "%");
  return `${percents}
${importsAndCommands}${percents}
${preambleContent}`;
}
function mergeTexTemplateImports(current2, next) {
  var _a6, _b;
  return {
    commands: { ...current2 === null || current2 === void 0 ? void 0 : current2.commands, ...next === null || next === void 0 ? void 0 : next.commands },
    imports: [.../* @__PURE__ */ new Set([...(_a6 = current2 === null || current2 === void 0 ? void 0 : current2.imports) !== null && _a6 !== void 0 ? _a6 : [], ...(_b = next === null || next === void 0 ? void 0 : next.imports) !== null && _b !== void 0 ? _b : []])]
  };
}

// ../jtex/dist/typst/imports.js
var import_node_path42 = __toESM(require("path"), 1);
function renderTypstImports(output2, templateImports, preamble) {
  const { macros: macros18, commands } = templateImports !== null && templateImports !== void 0 ? templateImports : {};
  const importStatements = [];
  const hasMacros = macros18 && macros18.length > 0;
  if (hasMacros)
    importStatements.push('#import "myst-imports.typ": *');
  if (output2 && hasMacros) {
    const mystTypst = import_node_path42.default.join(import_node_path42.default.dirname(output2), "myst-imports.typ");
    writeFileToFolder(mystTypst, macros18.join("\n\n"));
  }
  if (commands && Object.keys(commands).length > 0) {
    importStatements.push("", "/* Math Macros */");
    Object.entries(commands).forEach(([k, v]) => {
      importStatements.push(`#let ${k} = $${v.trim()}$`);
    });
  }
  if (preamble)
    importStatements.push(preamble);
  return importStatements.join("\n");
}
function mergeTypstTemplateImports(current2, next) {
  var _a6, _b;
  return {
    commands: { ...current2 === null || current2 === void 0 ? void 0 : current2.commands, ...next === null || next === void 0 ? void 0 : next.commands },
    macros: [.../* @__PURE__ */ new Set([...(_a6 = current2 === null || current2 === void 0 ? void 0 : current2.macros) !== null && _a6 !== void 0 ? _a6 : [], ...(_b = next === null || next === void 0 ? void 0 : next.macros) !== null && _b !== void 0 ? _b : []])]
  };
}

// ../jtex/dist/jtex.js
var import_node_fs34 = __toESM(require("fs"), 1);
var import_node_path43 = require("path");
var import_nunjucks = __toESM(require_nunjucks(), 1);

// ../jtex/dist/render.js
function renderImports(kind, output2, imports, packages, preamble) {
  if (kind === TemplateKind.tex) {
    return renderTexImports(imports, packages, preamble);
  } else if (kind === TemplateKind.typst) {
    return renderTypstImports(output2, imports, preamble);
  }
}

// ../jtex/dist/version.js
var version3 = "1.0.20";
var version_default3 = version3;

// ../jtex/dist/jtex.js
function ensureDirectoryExists(directory) {
  if (!import_node_fs34.default.existsSync(directory))
    import_node_fs34.default.mkdirSync(directory, { recursive: true });
}
function getDefaultEnv(template) {
  const env6 = import_nunjucks.default.configure(template.templatePath, {
    trimBlocks: true,
    autoescape: false,
    // Ensures that we are not writing to HTML!
    tags: {
      blockStart: "[#",
      blockEnd: "#]",
      variableStart: "[-",
      variableEnd: "-]",
      commentStart: "%#",
      commentEnd: "#%"
    }
  }).addFilter("len", (array) => array.length);
  return env6;
}
function commentSymbol(kind) {
  if (kind === TemplateKind.typst)
    return "//";
  return "%";
}
function renderTemplate(template, opts) {
  const ext2 = KIND_TO_EXT[template.kind];
  if (!ext2) {
    throw new Error(`Cannot render template of kind: ${template.kind}`);
  }
  if ((0, import_node_path43.extname)(opts.outputPath) !== ext2) {
    throw new Error(`outputPath must be a "${ext2}" file, not "${opts.outputPath}"`);
  }
  let content3;
  if (import_node_fs34.default.existsSync(opts.contentOrPath)) {
    template.session.log.debug(`Reading content from ${opts.contentOrPath}`);
    content3 = import_node_fs34.default.readFileSync(opts.contentOrPath).toString();
  } else {
    content3 = opts.contentOrPath;
  }
  const { options, parts, doc } = template.prepare(opts);
  const importsContent = renderImports(template.kind, opts.outputPath, opts.imports, opts.packages, opts.preamble);
  const renderer = {
    CONTENT: content3,
    doc,
    parts,
    options,
    IMPORTS: importsContent
  };
  const env6 = getDefaultEnv(template);
  const rendered = env6.render(template.getTemplateFilename(), renderer);
  const outputDirectory = (0, import_node_path43.dirname)(opts.outputPath);
  ensureDirectoryExists(outputDirectory);
  template.copyTemplateFiles((0, import_node_path43.dirname)(opts.outputPath), { force: opts.force });
  import_node_fs34.default.writeFileSync(opts.outputPath, opts.removeVersionComment ? rendered : `${commentSymbol(template.kind)} Created with jtex v.${version_default3}
${rendered}`);
}

// ../myst-to-tex/dist/types.js
var DEFAULT_IMAGE_WIDTH = 0.7;
var DEFAULT_PAGE_WIDTH_PIXELS = 800;

// ../myst-to-tex/dist/utils.js
function cleanWhitespaceChars(text7, nbsp = " ") {
  return text7.replace(/\u00A0/g, nbsp).replace(/[\u200B-\u200D\uFEFF]/g, "");
}
var BACKSLASH_SPACE = "\u{1F4A5}\u{1F3AF}BACKSLASHSPACE\u{1F3AF}\u{1F4A5}";
var BACKSLASH = "\u{1F4A5}\u{1F3AF}BACKSLASH\u{1F3AF}\u{1F4A5}";
var TILDE = "\u{1F4A5}\u{1F3AF}TILDE\u{1F3AF}\u{1F4A5}";
var hrefOnlyReplacements = {
  // Not allowed characters
  // Latex escaped characters are: \ & % $ # _ { } ~ ^
  "&": "\\&",
  "%": "\\%",
  $: "\\$",
  "#": "\\#",
  _: "\\_",
  "{": "\\{",
  "}": "\\}",
  "^": "\\^"
};
var textOnlyReplacements2 = {
  ...hrefOnlyReplacements,
  // quotes
  "\u2019": "'",
  "\u2018": "`",
  "\u201D": "''",
  "\u201C": "``",
  // guillemots
  "\xBB": ">>",
  // These could be improved
  "\xAB": "<<",
  "\u2026": "\\dots",
  "\u2013": "--",
  "\u2014": "---",
  // Commands gobble fhttps://texfaq.org/FAQ-xspaceollowing space
  // See: https://texfaq.org/FAQ-xspace
  "\xA9": "\\textcopyright ",
  "\xAE": "\\textregistered ",
  "\u2122": "\\texttrademark ",
  "<": "\\textless ",
  ">": "\\textgreater ",
  "\xA0": "~",
  "\u202F": "~",
  "\u2009": "\\,"
};
var arrows = {
  "\u2194": "\\leftrightarrow",
  "\u21D4": "\\Leftrightarrow",
  "\u2192": "\\rightarrow",
  "\u21D2": "\\Rightarrow",
  "\u2190": "\\leftarrow",
  "\u21D0": "\\Leftarrow"
};
var symbols2 = {
  "\u2212": "-",
  // minus
  "-": "-",
  // hyphen minus
  "\uFE63": "-",
  // Small hyphen minus
  "\uFF0D": "-",
  // Full-width Hyphen-minus
  "\uFF0B": "+"
  // Full-width Plus
};
var scripts = {
  "\u2080": "\\textsubscript{0}",
  "\u2081": "\\textsubscript{1}",
  "\u2082": "\\textsubscript{2}",
  "\u2083": "\\textsubscript{3}",
  "\u2084": "\\textsubscript{4}",
  "\u2085": "\\textsubscript{5}",
  "\u2086": "\\textsubscript{6}",
  "\u2087": "\\textsubscript{7}",
  "\u2088": "\\textsubscript{8}",
  "\u2089": "\\textsubscript{9}",
  "\u208A": "\\textsubscript{+}",
  "\u208B": "\\textsubscript{-}",
  "\u208C": "\\textsubscript{=}",
  "\u208D": "\\textsubscript{(}",
  "\u208E": "\\textsubscript{)}",
  "\u2099": "\\textsubscript{n}",
  "\u2070": "\\textsuperscript{0}",
  "\xB9": "\\textsuperscript{1}",
  "\xB2": "\\textsuperscript{2}",
  "\xB3": "\\textsuperscript{3}",
  "\u2074": "\\textsuperscript{4}",
  "\u2075": "\\textsuperscript{5}",
  "\u2076": "\\textsuperscript{6}",
  "\u2077": "\\textsuperscript{7}",
  "\u2078": "\\textsuperscript{8}",
  "\u2079": "\\textsuperscript{9}",
  "\u22C5": "\\textsuperscript{.}",
  "\u207A": "\\textsuperscript{.}",
  "\u207B": "\\textsuperscript{-}",
  "\u207C": "\\textsuperscript{=}",
  "\u207D": "\\textsuperscript{(}",
  "\u207E": "\\textsuperscript{)}",
  \u207F: "\\textsuperscript{n}",
  "\u2071": "\\textsuperscript{i}"
};
var textReplacements = {
  ...textOnlyReplacements2,
  ...arrows,
  ...symbols2,
  ...scripts
};
var mathReplacements = {
  ...arrows,
  ...symbols2,
  "\xBD": "\\frac{1}{2}",
  "\u2153": "\\frac{1}{3}",
  "\u2154": "\\frac{2}{3}",
  "\xBC": "\\frac{1}{4}",
  "\u2155": "\\frac{1}{5}",
  "\u2156": "\\frac{2}{5}",
  "\u2157": "\\frac{3}{5}",
  "\u2158": "\\frac{4}{5}",
  "\u2159": "\\frac{1}{6}",
  "\u215A": "\\frac{5}{6}",
  "\u2150": "\\frac{1}{7}",
  "\u215B": "\\frac{1}{8}",
  "\u215C": "\\frac{3}{8}",
  "\u215D": "\\frac{5}{8}",
  "\u215E": "\\frac{7}{8}",
  "\u2151": "\\frac{1}{9}",
  "\u2152": "\\frac{1}{10}",
  "\xB1": "\\pm",
  "\xD7": "\\times",
  "\u22C6": "\\star",
  \u0391: "A",
  \u03B1: "\\alpha",
  \u0392: "B",
  \u03B2: "\\beta",
  \u00DF: "\\beta",
  \u0393: "\\Gamma",
  \u03B3: "\\gamma",
  \u0394: "\\Delta",
  "\u2206": "\\Delta",
  \u03B4: "\\delta",
  \u0395: "E",
  \u03B5: "\\epsilon",
  \u0396: "Z",
  \u03B6: "\\zeta",
  \u0397: "H",
  \u03B7: "\\eta",
  \u0398: "\\Theta",
  \u03B8: "\\theta",
  \u03D1: "\\vartheta",
  \u0399: "I",
  \u03B9: "\\iota",
  \u039A: "K",
  \u03BA: "\\kappa",
  \u039B: "\\Lambda",
  \u03BB: "\\lambda",
  \u039C: "M",
  \u03BC: "\\mu",
  \u039D: "N",
  \u03BD: "\\nu",
  \u039E: "\\Xi",
  \u03BE: "\\xi",
  \u039F: "O",
  \u03BF: "o",
  \u03A0: "\\Pi",
  \u03C0: "\\pi",
  \u03A1: "P",
  \u03C1: "\\rho",
  \u03A3: "\\Sigma",
  \u03C3: "\\sigma",
  \u03A4: "T",
  \u03C4: "\\tau",
  \u03A5: "\\Upsilon",
  \u03C5: "\\upsilon",
  \u03A6: "\\Phi",
  \u03D5: "\\phi",
  \u03C6: "\\varphi",
  \u03A7: "X",
  \u03C7: "\\chi",
  \u03A8: "\\Psi",
  \u03C8: "\\psi",
  \u03A9: "\\Omega",
  \u03C9: "\\omega",
  "\u2202": "\\partial",
  "\u221E": "\\infty",
  "\u221D": "\\propto",
  "\u29DC": "\\iinfin",
  "\u29DD": "\\tieinfty",
  "\u267E": "\\acidfree",
  "\u2248": "\\approx",
  "\u2260": "\\neq",
  "\u2265": "\\geq",
  "\u2264": "\\leq",
  "\u2022": "\\cdot"
  // '‰': '\\permille',
};
function hrefToLatexText(text7) {
  const replacedArray = Array.from(text7 !== null && text7 !== void 0 ? text7 : "").map((char) => {
    if (hrefOnlyReplacements[char])
      return { kind: "text", text: hrefOnlyReplacements[char] };
    return { kind: "text", text: char };
  });
  const replaced = replacedArray.reduce((arr, next) => {
    const prev = arr.slice(-1)[0];
    if ((prev === null || prev === void 0 ? void 0 : prev.kind) === next.kind)
      prev.text += next.text;
    else
      arr.push(next);
    return arr;
  }, []).reduce((s5, next) => {
    return s5 + next.text;
  }, "");
  return replaced;
}
function stringToLatexText(text7) {
  const escaped = (text7 !== null && text7 !== void 0 ? text7 : "").replace(/\\ /g, BACKSLASH_SPACE).replace(/\\/g, BACKSLASH).replace(/~/g, TILDE);
  const replacedArray = Array.from(escaped).map((char) => {
    if (textReplacements[char])
      return { kind: "text", text: textReplacements[char] };
    if (mathReplacements[char])
      return { kind: "math", text: mathReplacements[char] };
    return { kind: "text", text: char };
  });
  const replaced = replacedArray.reduce((arr, next) => {
    const prev = arr.slice(-1)[0];
    if ((prev === null || prev === void 0 ? void 0 : prev.kind) === next.kind)
      prev.text += next.text;
    else
      arr.push(next);
    return arr;
  }, []).reduce((s5, next) => {
    if (next.kind === "math")
      return `${s5}$${next.text}$`;
    return s5 + next.text;
  }, "");
  const final = replaced.replace(new RegExp(BACKSLASH_SPACE, "g"), "{\\textbackslash}~").replace(new RegExp(BACKSLASH, "g"), "{\\textbackslash}").replace(new RegExp(TILDE, "g"), "{\\textasciitilde}");
  return cleanWhitespaceChars(final, "~");
}
function stringToLatexMath(text7) {
  const replaced = Array.from(text7 !== null && text7 !== void 0 ? text7 : "").reduce((s5, char) => {
    if (mathReplacements[char]) {
      const space3 = s5.slice(-1) === " " ? "" : " ";
      return `${s5}${space3}${mathReplacements[char]}`;
    }
    return s5 + char;
  }, "");
  const final = replaced.trim();
  return cleanWhitespaceChars(final);
}
function getLatexImageWidth(width) {
  if (typeof width === "number" && Number.isNaN(width)) {
    return getLatexImageWidth(DEFAULT_IMAGE_WIDTH);
  }
  if (typeof width === "string") {
    if (width.endsWith("%")) {
      return getLatexImageWidth(Number(width.replace("%", "")));
    } else if (width.endsWith("px")) {
      return getLatexImageWidth(Number(width.replace("px", "")) / DEFAULT_PAGE_WIDTH_PIXELS);
    }
    console.log(`Unknown width ${width} in getLatexImageWidth`);
    return getLatexImageWidth(DEFAULT_IMAGE_WIDTH);
  }
  let lineWidth = width !== null && width !== void 0 ? width : DEFAULT_IMAGE_WIDTH;
  if (lineWidth < 1)
    lineWidth *= 100;
  return `${lineWidth / 100}\\linewidth`;
}
function getClasses(className) {
  var _a6;
  const classes = (_a6 = className === null || className === void 0 ? void 0 : className.split(" ").map((s5) => s5.trim().toLowerCase()).filter((s5) => !!s5)) !== null && _a6 !== void 0 ? _a6 : [];
  return Array.from(new Set(classes));
}
function addIndexEntries(node3, state) {
  var _a6;
  if (!((_a6 = node3.indexEntries) === null || _a6 === void 0 ? void 0 : _a6.length))
    return;
  state.data.hasIndex = true;
  node3.indexEntries.forEach(({ entry, subEntry, emphasis: emphasis4 }) => {
    let indexString = entry;
    if (subEntry === null || subEntry === void 0 ? void 0 : subEntry.value) {
      if ((subEntry === null || subEntry === void 0 ? void 0 : subEntry.kind) === "see") {
        indexString += `|see{${subEntry.value}}`;
      } else if ((subEntry === null || subEntry === void 0 ? void 0 : subEntry.kind) === "seealso") {
        indexString += `|seealso{${subEntry.value}}`;
      } else {
        indexString += `!${subEntry.value}`;
      }
    }
    if (emphasis4) {
      indexString += "|textbf";
    }
    state.write(`\\index{${indexString}}`);
  });
}

// ../myst-to-tex/dist/tables.js
var TOTAL_TABLE_WIDTH = 886;
function renderPColumn(width) {
  if (width === 1)
    return `p{\\dimexpr \\linewidth-2\\tabcolsep}`;
  return `p{\\dimexpr ${width.toFixed(3)}\\linewidth-2\\tabcolsep}`;
}
function getColumnWidths(node3) {
  var _a6, _b, _c;
  let bestMaybeWidths = [];
  let mostNonNulls = 0;
  for (let i2 = 0; i2 < node3.children.length; i2 += 1) {
    const row2 = node3.children[i2];
    const maybeWidths = row2.children.reduce((acc, cell3) => {
      var _a7, _b2;
      const colwidth = new Array((_a7 = cell3.colspan) !== null && _a7 !== void 0 ? _a7 : 1).fill(cell3.width ? cell3.width / ((_b2 = cell3.colspan) !== null && _b2 !== void 0 ? _b2 : 1) : null);
      return [...acc, ...colwidth];
    }, []);
    const nonNulls = maybeWidths.filter((maybeWidth) => maybeWidth > 0).length;
    if (i2 === 0 || nonNulls >= mostNonNulls) {
      mostNonNulls = nonNulls;
      bestMaybeWidths = maybeWidths;
      if (mostNonNulls === maybeWidths.length) {
        break;
      }
    }
  }
  let widths;
  if (mostNonNulls === bestMaybeWidths.length) {
    widths = bestMaybeWidths;
  } else {
    const totalDefinedWidths = bestMaybeWidths.reduce((acc, cur) => cur == null ? acc : acc + cur, 0);
    const remainingSpace = TOTAL_TABLE_WIDTH - totalDefinedWidths;
    const nullCells = bestMaybeWidths.length - mostNonNulls;
    const defaultWidth = Math.floor(remainingSpace / nullCells);
    widths = bestMaybeWidths.map((w) => w == null || w === 0 ? defaultWidth : w);
  }
  const total = widths.reduce((acc, cur) => acc + cur, 0);
  const fractionalWidths = widths.map((w) => w / total);
  const columnSpec = fractionalWidths.map((w) => renderPColumn(w)).join("");
  const numColumns = widths.length > 0 ? widths.length : (_c = (_b = (_a6 = node3 === null || node3 === void 0 ? void 0 : node3.children[0]) === null || _a6 === void 0 ? void 0 : _a6.children) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
  return { widths: fractionalWidths, columnSpec, numColumns };
}
function renderTableCell(state, cell3, i2, spanIdx, widths, childCount) {
  var _a6;
  let renderedSpan = 1;
  const colspan = (_a6 = cell3.colspan) !== null && _a6 !== void 0 ? _a6 : 1;
  if (colspan > 1) {
    let width = 0;
    for (let j = 0; j < colspan; j += 1) {
      width += widths[spanIdx + j];
    }
    state.write(`\\multicolumn{${colspan}}{${renderPColumn(width)}}{`);
    renderedSpan = colspan;
  }
  if (cell3.children.length === 1 && cell3.children[0].type === "paragraph") {
    state.renderChildren(cell3.children[0], true);
  } else {
    state.renderChildren(cell3, true);
  }
  if (colspan > 1)
    state.write("}");
  if (i2 < childCount - 1) {
    state.write(" & ");
  }
  return renderedSpan;
}
function renderNodeToLatex(node3, state) {
  state.usePackages("booktabs");
  const { widths, columnSpec, numColumns } = getColumnWidths(node3);
  if (!numColumns) {
    throw new Error("invalid table format, no columns");
  }
  addIndexEntries(node3, state);
  state.data.isInTable = true;
  if (!state.data.isInContainer) {
    state.write("\\bigskip\\noindent");
  }
  state.ensureNewLine();
  let numHeaderRowsFound = 0;
  if (state.data.longFigure) {
    state.ensureNewLine();
    state.write("\\hline");
    state.ensureNewLine();
    let endHeader = false;
    node3.children.forEach(({ children: rowContent }) => {
      var _a6, _b;
      if (endHeader)
        return;
      if ((_a6 = rowContent[0]) === null || _a6 === void 0 ? void 0 : _a6.header) {
        numHeaderRowsFound += 1;
        let spanIdx = 0;
        rowContent.forEach((cell3, i2) => {
          spanIdx += renderTableCell(state, cell3, i2, spanIdx, widths, rowContent.length);
        });
        state.write(" \\\\");
        state.ensureNewLine();
      }
      if (!((_b = rowContent[0]) === null || _b === void 0 ? void 0 : _b.header)) {
        endHeader = true;
      }
    });
    if (numHeaderRowsFound > 0) {
      state.ensureNewLine();
      state.write("\\hline");
      state.ensureNewLine();
      state.write("\\endfirsthead");
      state.ensureNewLine();
      state.write("\\hline");
      state.ensureNewLine();
      state.write(`\\multicolumn{${numColumns}}{c}{\\tablename\\ \\thetable\\ -- \\textit{Continued from previous page}}\\\\`);
      state.ensureNewLine();
      node3.children.forEach(({ children: rowContent }, index4) => {
        if (index4 >= numHeaderRowsFound)
          return;
        let spanIdx = 0;
        rowContent.forEach((cell3, i2) => {
          spanIdx += renderTableCell(state, cell3, i2, spanIdx, widths, rowContent.length);
        });
        state.write(" \\\\");
        state.ensureNewLine();
      });
      state.ensureNewLine();
      state.write("\\hline");
      state.ensureNewLine();
      state.write("\\endhead");
      state.ensureNewLine();
    }
  } else {
    state.write(`\\begin{tabular}{${columnSpec}}`);
    state.ensureNewLine();
    state.write(`\\toprule`);
    state.ensureNewLine();
  }
  node3.children.forEach(({ children: rowContent }, index4) => {
    var _a6;
    if (index4 < numHeaderRowsFound)
      return;
    let spanIdx = 0;
    rowContent.forEach((cell3, i2) => {
      spanIdx += renderTableCell(state, cell3, i2, spanIdx, widths, rowContent.length);
    });
    state.write(" \\\\");
    state.ensureNewLine();
    if ((_a6 = rowContent[0]) === null || _a6 === void 0 ? void 0 : _a6.header) {
      state.write("\\hline");
      state.ensureNewLine();
    }
  });
  if (state.data.longFigure) {
    state.write("\\hline");
  } else {
    state.write("\\bottomrule");
    state.ensureNewLine();
    state.write("\\end{tabular}");
  }
  state.closeBlock(node3);
  state.data.isInTable = false;
  if (!state.data.isInContainer) {
    state.write("\\bigskip");
  }
}

// ../myst-to-tex/dist/container.js
var CaptionKind;
(function(CaptionKind3) {
  CaptionKind3["fig"] = "fig";
  CaptionKind3["eq"] = "eq";
  CaptionKind3["code"] = "code";
  CaptionKind3["table"] = "table";
})(CaptionKind || (CaptionKind = {}));
function getClasses2(className) {
  var _a6;
  const classes = (_a6 = className === null || className === void 0 ? void 0 : className.split(" ").map((s5) => s5.trim().toLowerCase()).filter((s5) => !!s5)) !== null && _a6 !== void 0 ? _a6 : [];
  return [...new Set(classes)];
}
function switchKind(node3) {
  switch (node3.type) {
    case "iframe":
    case "image":
      return CaptionKind.fig;
    case "table":
      return CaptionKind.table;
    case "code":
      return CaptionKind.code;
    case "math":
      return CaptionKind.eq;
    default:
      return null;
  }
}
function determineCaptionKind(node3) {
  var _a6;
  let kind = switchKind(node3);
  (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.forEach((n) => {
    const nKind = determineCaptionKind(n);
    if (!kind) {
      kind = nKind;
    } else if (nKind) {
      kind = CaptionKind.fig;
    }
  });
  return kind;
}
function nodeToCommand(node3) {
  const kind = determineCaptionKind(node3);
  const classes = getClasses2(node3.class);
  const fullWidth = classes.includes("full-width") || classes.includes("w-full");
  switch (kind) {
    case CaptionKind.fig:
      return fullWidth ? "figure*" : "figure";
    case CaptionKind.table:
      return fullWidth ? "table*" : "table";
    case CaptionKind.code:
      return "figure";
    case CaptionKind.eq:
      return "figure";
    // not sure what to do here.
    default:
      return "figure";
  }
}
function nodeToLaTeXOptions(node3) {
  const kind = determineCaptionKind(node3);
  switch (kind) {
    case CaptionKind.fig:
    case CaptionKind.table:
      return "!htbp";
    case CaptionKind.code:
      return "h";
    case CaptionKind.eq:
    default:
      return void 0;
  }
}
var containerHandler = (node3, state) => {
  var _a6;
  if (state.data.isInTable) {
    state.renderChildren(node3);
    return;
  }
  const table5 = select("table", node3);
  const containsTable = !!table5;
  let tableInfo;
  if (table5 && node3.multipage) {
    tableInfo = getColumnWidths(table5);
  }
  let before;
  let after;
  if (node3.landscape) {
    state.usePackages("pdflscape");
    before = "\\begin{landscape}";
    after = "\\end{landscape}";
  }
  const { enumerated, label, identifier, multipage } = node3;
  const localId = (_a6 = label !== null && label !== void 0 ? label : identifier) !== null && _a6 !== void 0 ? _a6 : void 0;
  const command = containsTable && multipage ? "longtable" : nodeToCommand(node3);
  if (command === "longtable")
    state.usePackages("longtable");
  const commandOpts = containsTable && tableInfo ? tableInfo.columnSpec : void 0;
  const bracketOpts = containsTable ? void 0 : nodeToLaTeXOptions(node3);
  if (before)
    state.write(before);
  const optsInCommand = commandOpts ? `{${commandOpts}}` : "";
  const optsInBrackets = bracketOpts ? `[${bracketOpts}]` : "";
  state.write(`\\begin{${command}}${optsInCommand}${optsInBrackets}
`);
  if (!multipage || !containsTable)
    state.write("\\centering");
  state.ensureNewLine();
  state.data.longFigure = multipage;
  const lastContainer = state.data.isInContainer;
  state.data.isInContainer = true;
  state.data.nextCaptionNumbered = enumerated !== null && enumerated !== void 0 ? enumerated : !!localId;
  state.data.nextCaptionId = localId;
  state.renderChildren(node3);
  state.trimEnd();
  state.data.longFigure = void 0;
  state.data.isInContainer = lastContainer;
  state.write(`
\\end{${command}}`);
  if (after)
    state.write(after);
  addIndexEntries(node3, state);
  state.closeBlock(node3);
};
var captionHandler = (node3, state) => {
  if (state.data.isInTable && node3.type !== CaptionKind.table) {
    return null;
  }
  state.ensureNewLine(true);
  const { nextCaptionNumbered: numbered2, nextCaptionId: id } = state.data;
  const command = numbered2 === false ? "caption*" : "caption[]";
  const after = numbered2 && id ? `\\label{${id}}` : "";
  state.renderInlineEnvironment(node3, command, { after });
};

// ../myst-to-tex/dist/math.js
var TOP_LEVEL_ENVIRONMENTS = [
  "equation",
  "multline",
  "gather",
  "align",
  "alignat",
  "flalign",
  "eqnarray"
];
var RE_OPEN2 = new RegExp(`^\\\\begin{(${TOP_LEVEL_ENVIRONMENTS.join("|")})([*]?)}`);
function isTopLevelAmsmathEnvironment(value) {
  const matchOpen = value.trim().match(RE_OPEN2);
  if (!matchOpen)
    return false;
  const [, environment2, star3] = matchOpen;
  const end = `\\end{${environment2}${star3}}`;
  const matchClose = value.trim().endsWith(end);
  if (!matchClose)
    return false;
  return true;
}
function addMacrosToState(value, state) {
  if (!state.options.math)
    return;
  Object.entries(state.options.math).forEach(([k, v]) => {
    if (value.includes(k))
      state.data.mathPlugins[k] = v.macro;
  });
}
function withRecursiveCommands(state, plugins3 = state.data.mathPlugins) {
  if (!state.options.math)
    return plugins3;
  const pluginsList = Object.entries(plugins3);
  const addedPlugins = {};
  Object.entries(state.options.math).forEach(([k, v]) => {
    if (plugins3[k])
      return;
    pluginsList.forEach(([, value]) => {
      if (value.includes(k))
        addedPlugins[k] = v.macro;
    });
  });
  const newPlugins = { ...addedPlugins, ...plugins3 };
  if (Object.keys(addedPlugins).length === 0)
    return newPlugins;
  return withRecursiveCommands(state, newPlugins);
}
var math4 = (node3, state) => {
  const { label, enumerated } = node3;
  const tightBefore = node3.tight === true || node3.tight === "before";
  const tightAfter = node3.tight === true || node3.tight === "after";
  if (tightBefore) {
    state.ensureNewLine(true);
  }
  state.usePackages("amsmath");
  addMacrosToState(node3.value, state);
  addIndexEntries(node3, state);
  if (state.data.isInTable) {
    state.write("\\(\\displaystyle ");
    state.write(node3.value);
    state.write(" \\)");
  } else {
    const isAmsMath = isTopLevelAmsmathEnvironment(node3.value);
    if (isAmsMath) {
      state.ensureNewLine();
      state.write(node3.value);
      state.ensureNewLine(true);
    } else {
      state.write(`\\begin{equation${enumerated === false ? "*" : ""}}
`);
      if (label) {
        state.write(`\\label{${label}}`);
      }
      state.ensureNewLine();
      state.write(node3.value);
      state.ensureNewLine(true);
      state.write(`\\end{equation${enumerated === false ? "*" : ""}}`);
    }
  }
  if (state.data.isInTable)
    return;
  if (tightAfter) {
    state.ensureNewLine(true);
  } else {
    state.closeBlock(node3);
  }
};
var inlineMath2 = (node3, state) => {
  state.usePackages("amsmath");
  addMacrosToState(node3.value, state);
  state.write("$");
  state.text(node3.value, true);
  state.write("$");
};
var MATH_HANDLERS2 = { math: math4, inlineMath: inlineMath2 };
var math_default = MATH_HANDLERS2;

// ../myst-to-tex/dist/legends.js
function transformLegends(mdast2) {
  const containers = selectAll("container", mdast2);
  containers.forEach((container4) => {
    var _a6;
    const captionsAndLegends = (_a6 = container4.children) === null || _a6 === void 0 ? void 0 : _a6.filter((child) => {
      return child.type === "caption" || child.type === "legend";
    });
    if (!(captionsAndLegends === null || captionsAndLegends === void 0 ? void 0 : captionsAndLegends.length))
      return;
    captionsAndLegends[0].type = "caption";
    captionsAndLegends.slice(1).forEach((node3) => {
      var _a7;
      if (captionsAndLegends[0].children && node3.children) {
        (_a7 = captionsAndLegends[0].children) === null || _a7 === void 0 ? void 0 : _a7.push(...node3.children);
      }
      node3.type = "__delete__";
    });
  });
  remove(mdast2, "__delete__");
}

// ../myst-to-tex/dist/proof.js
function kindToEnvironment(kind) {
  switch (kind) {
    case "theorem":
      return "theorem";
    case "proof":
      return "proof";
    case "proposition":
      return "proposition";
    case "definition":
      return "definition";
    case "example":
      return "example";
    case "remark":
      return "remark";
    case "axiom":
      return "axiom";
    case "conjecture":
      return "conjecture";
    case "lemma":
      return "lemma";
    case "observation":
      return "observation";
    case "corollary":
      return "corollary";
    default:
      return "";
  }
}
var proofHandler = (node3, state) => {
  var _a6;
  state.usePackages("amsthm");
  const p5 = node3;
  const env6 = kindToEnvironment((_a6 = p5.kind) !== null && _a6 !== void 0 ? _a6 : "proof");
  if (!env6) {
    fileError(state.file, `Unhandled LaTeX proof environment "${p5.kind}"`, {
      node: node3,
      source: "myst-to-tex",
      ruleId: RuleId.texRenders
    });
    return;
  }
  const t2 = select("admonitionTitle > text", node3);
  if (t2) {
    t2.type = "__delete__";
  }
  const newNode = remove(node3, "__delete__");
  addIndexEntries(node3, state);
  state.write("\\begin{");
  state.write(env6);
  state.write("}");
  if (t2) {
    state.write("[");
    state.write(t2.value);
    state.write("]");
  }
  if (newNode.identifier && newNode.identifier.length > 0) {
    state.write("\\label{");
    state.write(newNode.identifier);
    state.write("}");
  }
  state.renderChildren(newNode, true);
  state.write("\\end{");
  state.write(env6);
  state.write("}");
  state.data.hasProofs = true;
};
var TexProofSerializer = class _TexProofSerializer {
  constructor() {
    this.preamble = this.renderThmDefinitions();
  }
  renderThmDefinitions() {
    const definitions2 = [
      "\\newtheorem{theorem}{Theorem}[section]",
      "\\newtheorem{corollary}{Corollary}[theorem]",
      "\\newtheorem{lemma}[theorem]{Lemma}",
      "\\newtheorem{proposition}{Proposition}[section]",
      "\\newtheorem{definition}{Definition}[section]",
      "\\newtheorem{example}{Example}[section]",
      "\\newtheorem{remark}{Remark}[section]",
      "\\newtheorem{axiom}{Axiom}[section]",
      "\\newtheorem{conjecture}{Conjecture}[section]",
      "\\newtheorem{observation}{Observation}[section]"
    ];
    const block5 = writeTexLabelledComment("theorem", definitions2, _TexProofSerializer.COMMENT_LENGTH);
    const percents = "".padEnd(_TexProofSerializer.COMMENT_LENGTH, "%");
    return `${percents}
${block5}${percents}
`;
  }
};
TexProofSerializer.COMMENT_LENGTH = 50;

// ../myst-to-tex/dist/preamble.js
var TexGlossaryAndAcronymSerializer = class _TexGlossaryAndAcronymSerializer {
  constructor(glossaryDefinitions, acronymDefinitions) {
    const withGlossary = Object.keys(glossaryDefinitions).length > 0;
    const withAcronym = Object.keys(acronymDefinitions).length > 0;
    if (!withGlossary && !withAcronym) {
      this.printedDefinitions = "";
      this.preamble = "";
    } else {
      this.printedDefinitions = this.renderGlossary();
      this.preamble = [
        this.renderCommonImports(withAcronym),
        this.renderImports("glossary", this.createGlossaryDirectives(glossaryDefinitions)),
        this.renderImports("acronyms", this.createAcronymDirectives(acronymDefinitions))
      ].filter((item) => !!item).join("\n");
    }
  }
  renderGlossary() {
    const block5 = writeTexLabelledComment(
      "acronyms & glossary",
      ["\\printglossaries"],
      // Will print both glossary and abbreviations
      _TexGlossaryAndAcronymSerializer.COMMENT_LENGTH
    );
    const percents = "".padEnd(_TexGlossaryAndAcronymSerializer.COMMENT_LENGTH, "%");
    return `${percents}
${block5}${percents}
`;
  }
  renderCommonImports(withAcronym) {
    const usepackage = withAcronym ? "\\usepackage[acronym]{glossaries}" : "\\usepackage{glossaries}";
    const makeglossaries = "\\makeglossaries";
    return `${usepackage}
${makeglossaries}
`;
  }
  renderImports(commentTitle, directives) {
    if (!directives)
      return "";
    const block5 = writeTexLabelledComment(commentTitle, directives, _TexGlossaryAndAcronymSerializer.COMMENT_LENGTH);
    if (!block5)
      return;
    const percents = "".padEnd(_TexGlossaryAndAcronymSerializer.COMMENT_LENGTH, "%");
    return `${percents}
${block5}${percents}
`;
  }
  createGlossaryDirectives(glossaryDefinitions) {
    const directives = Object.keys(glossaryDefinitions).map((k) => ({
      key: k,
      name: glossaryDefinitions[k][0],
      description: glossaryDefinitions[k][1]
    }));
    const entries2 = directives.map((entry) => `\\newglossaryentry{${entry.key}}{name=${entry.name},description={${entry.description}}}`);
    return entries2;
  }
  createAcronymDirectives(acronymDefinitions) {
    const directives = Object.keys(acronymDefinitions).map((k) => ({
      key: k,
      acronym: acronymDefinitions[k][0],
      expansion: acronymDefinitions[k][1]
    }));
    return directives.map((entry) => `\\newacronym{${entry.key}}{${entry.acronym}}{${entry.expansion}}`);
  }
};
TexGlossaryAndAcronymSerializer.COMMENT_LENGTH = 50;
function generatePreamble(data) {
  const preambleLines = [];
  let suffix = "";
  if (data.hasProofs) {
    preambleLines.push(new TexProofSerializer().preamble);
  }
  if (data.hasIndex) {
    preambleLines.push("\\makeindex");
  }
  if (data.printGlossaries) {
    const glossaryState = new TexGlossaryAndAcronymSerializer(data.glossary, data.abbreviations);
    preambleLines.push(glossaryState.preamble);
    if (glossaryState.printedDefinitions) {
      suffix = `
${glossaryState.printedDefinitions}`;
    }
  }
  return { preamble: preambleLines.join("\n"), suffix };
}
function mergePreambles(current2, next, warningLogFn) {
  const hasProofs = current2.hasProofs || next.hasProofs;
  const hasIndex = current2.hasIndex || next.hasIndex;
  const printGlossaries = current2.printGlossaries || next.printGlossaries;
  Object.keys(next.glossary).forEach((key2) => {
    if (Object.keys(current2.glossary).includes(key2)) {
      warningLogFn(`duplicate glossary entry for '${key2}'`);
    }
  });
  Object.keys(next.abbreviations).forEach((key2) => {
    if (Object.keys(current2.abbreviations).includes(key2)) {
      warningLogFn(`duplicate abbreviation definition for '${key2}'`);
    }
  });
  const glossary = { ...next.glossary, ...current2.glossary };
  const abbreviations = { ...next.abbreviations, ...current2.abbreviations };
  return { hasProofs, hasIndex, printGlossaries, glossary, abbreviations };
}

// ../myst-to-tex/dist/index.js
var glossaryReferenceHandler = (node3, state) => {
  if (!state.printGlossary) {
    state.renderChildren(node3, true);
    return;
  }
  if (!node3.identifier) {
    state.renderChildren(node3, true);
    return;
  }
  const entry = state.glossary[node3.identifier];
  if (!entry) {
    if (node3.identifier.startsWith("index-heading-")) {
      fileWarn(state.file, `Cannot cross-reference index headings in tex export "${node3.identifier}"`, {
        node: node3,
        source: "myst-to-tex",
        ruleId: RuleId.texRenders
      });
    } else {
      fileError(state.file, `Unknown glossary entry identifier "${node3.identifier}"`, {
        node: node3,
        source: "myst-to-tex",
        ruleId: RuleId.texRenders
      });
    }
    const gn = node3;
    state.write(toText(node3).trim() || gn.label || "");
    return;
  }
  state.write("\\gls{");
  state.write(node3.identifier);
  state.write("}");
};
var createFootnoteDefinitions = (tree) => Object.fromEntries(selectAll("footnoteDefinition", tree).map((node3) => {
  const fn = node3;
  return [fn.identifier, fn];
}));
var createGlossaryDefinitions = (tree) => Object.fromEntries(selectAll("glossary > definitionList > *", tree).map((node3, i2, siblings2) => {
  if (node3.type !== "definitionTerm") {
    return [];
  }
  const dt3 = node3;
  if (!dt3.identifier) {
    return [];
  }
  const dd3 = siblings2[i2 + 1];
  if (dd3 === void 0 || dd3.type !== "definitionDescription") {
    throw new Error(`Definition term has no associated description`);
  }
  const termText = toText(dt3);
  const descriptionText = toText(dd3);
  return [dt3.identifier, [termText, descriptionText]];
}).filter((x2) => x2.length > 0));
var createAcronymRef = (input3) => input3.trim().toLowerCase();
var createAcronymDefinitions = (tree) => (
  // Note: Abbreviations contain their resolved values, hence there
  //       can be many duplicates which will be collapsed when
  //       creating the dictionary
  Object.fromEntries(selectAll("abbreviation", tree).map((node3) => {
    const a2 = node3;
    const acronymText = toText(a2);
    if (!acronymText || !a2.title) {
      return [];
    }
    const key2 = createAcronymRef(acronymText);
    return [key2, [acronymText, a2.title]];
  }).filter((x2) => x2.length > 0))
);
var handlers3 = {
  text(node3, state) {
    state.text(node3.value);
  },
  paragraph(node3, state) {
    addIndexEntries(node3, state);
    state.renderChildren(node3);
  },
  heading(node3, state) {
    const { depth, label, enumerated } = node3;
    if (state.data.nextHeadingIsFrameTitle) {
      state.write("\\frametitle{");
      state.data.nextHeadingIsFrameTitle = false;
    } else {
      const star3 = enumerated !== false || state.options.beamer ? "" : "*";
      if (depth === -1)
        state.write(`\\part${star3}{`);
      if (depth === 0)
        state.write(`\\chapter${star3}{`);
      if (depth === 1)
        state.write(`\\section${star3}{`);
      if (depth === 2)
        state.write(`\\subsection${star3}{`);
      if (depth === 3)
        state.write(`\\subsubsection${star3}{`);
      if (depth === 4)
        state.write(`\\paragraph${star3}{`);
      if (depth === 5)
        state.write(`\\subparagraph${star3}{`);
      if (depth === 6)
        state.write(`\\subparagraph${star3}{`);
    }
    state.renderChildren(node3, true);
    state.write("}");
    if (enumerated !== false && label && !node3.implicit) {
      state.write(`\\label{${label}}`);
    }
    addIndexEntries(node3, state);
    state.closeBlock(node3);
  },
  block(node3, state) {
    var _a6, _b, _c;
    const metadataTags = getMetadataTags(node3);
    if (state.options.beamer) {
      if (metadataTags.includes("outline")) {
        state.data.nextHeadingIsFrameTitle = false;
        state.renderChildren(node3, false);
        return;
      }
      if (((_b = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6[0]) === null || _b === void 0 ? void 0 : _b.type) === "heading") {
        state.data.nextHeadingIsFrameTitle = true;
      }
      state.write("\n\n\\begin{frame}\n");
      state.renderChildren(node3, false);
      state.write("\\end{frame}\n\n");
      return;
    }
    if (node3.visibility === "remove" || node3.visibility === "hide")
      return;
    if (metadataTags.includes("no-tex"))
      return;
    if (metadataTags.includes("no-pdf"))
      return;
    if (metadataTags.includes("new-page")) {
      state.write("\\newpage\n");
    } else if (metadataTags.includes("page-break")) {
      state.write("\\pagebreak\n");
    }
    if (((_c = node3.data) === null || _c === void 0 ? void 0 : _c.part) === "index") {
      state.data.hasIndex = true;
      state.usePackages("imakeidx");
      state.write("\\printindex\n");
      return;
    }
    addIndexEntries(node3, state);
    state.renderChildren(node3, false);
  },
  blockquote(node3, state) {
    addIndexEntries(node3, state);
    state.renderEnvironment(node3, "quote");
  },
  definitionList(node3, state) {
    state.write("\\begin{description}\n");
    state.renderChildren(node3, true);
    state.ensureNewLine();
    state.write("\\end{description}");
    state.closeBlock(node3);
  },
  definitionTerm(node3, state) {
    state.ensureNewLine();
    state.write("\\item[");
    state.renderChildren(node3, true);
    state.write("] ");
  },
  definitionDescription(node3, state) {
    state.renderChildren(node3, true);
  },
  code(node3, state) {
    var _a6;
    if (node3.visibility === "remove" || node3.visibility === "hide")
      return;
    addIndexEntries(node3, state);
    let start = "\\begin{verbatim}\n";
    let end = "\n\\end{verbatim}";
    if (state.options.codeStyle === "listings" || getClasses(node3.class).includes("listings") && node3.lang !== void 0) {
      state.usePackages("listings");
      start = `\\begin{lstlisting}[language=${node3.lang}]
`;
      end = "\n\\end{lstlisting}";
    } else if (state.options.codeStyle === "minted" || getClasses(node3.class).includes("minted")) {
      state.usePackages("minted");
      start = `\\begin{minted}[breaklines]{${(_a6 = node3.lang) !== null && _a6 !== void 0 ? _a6 : "text"}}
`;
      end = "\n\\end{minted}";
    }
    state.write(start);
    state.text(node3.value, true);
    state.write(end);
    state.closeBlock(node3);
  },
  list(node3, state) {
    addIndexEntries(node3, state);
    if (state.data.isInTable) {
      node3.children.forEach((child, i2) => {
        state.write(node3.ordered ? `${i2}.~~` : "\\textbullet~~");
        state.renderChildren(child, true);
        state.write("\\newline");
        state.ensureNewLine();
      });
    } else {
      state.renderEnvironment(node3, node3.ordered ? "enumerate" : "itemize", {
        parameters: node3.ordered && node3.start !== 1 ? "resume" : void 0
      });
    }
  },
  listItem(node3, state) {
    var _a6, _b;
    state.write("\\item ");
    if (((_b = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6[0]) === null || _b === void 0 ? void 0 : _b.type) === "paragraph" && node3.children.length === 1) {
      state.renderChildren(node3.children[0], true);
    } else {
      state.renderChildren(node3, true);
    }
    state.write("\n");
  },
  thematicBreak(node3, state) {
    state.write("\n\\bigskip\n\\centerline{\\rule{13cm}{0.4pt}}\n\\bigskip");
    state.closeBlock(node3);
  },
  ...math_default,
  mystRole(node3, state) {
    state.renderChildren(node3, true);
  },
  mystDirective(node3, state) {
    state.renderChildren(node3, false);
  },
  div(node3, state) {
    addIndexEntries(node3, state);
    state.renderChildren(node3, false);
  },
  span(node3, state) {
    state.renderChildren(node3, true);
    addIndexEntries(node3, state);
  },
  comment(node3, state) {
    var _a6, _b;
    state.ensureNewLine();
    state.write(`% ${(_b = (_a6 = node3.value) === null || _a6 === void 0 ? void 0 : _a6.split("\n").join("\n% ")) !== null && _b !== void 0 ? _b : ""}`);
    state.closeBlock(node3);
  },
  strong(node3, state) {
    state.renderInlineEnvironment(node3, "textbf");
  },
  emphasis(node3, state) {
    state.renderInlineEnvironment(node3, "textit");
  },
  underline(node3, state) {
    state.renderInlineEnvironment(node3, "uline");
  },
  inlineCode(node3, state) {
    state.write("\\texttt{");
    state.text(node3.value, false);
    state.write("}");
  },
  subscript(node3, state) {
    state.renderInlineEnvironment(node3, "textsubscript");
  },
  superscript(node3, state) {
    state.renderInlineEnvironment(node3, "textsuperscript");
  },
  delete(node3, state) {
    state.usePackages("ulem");
    state.renderInlineEnvironment(node3, "sout");
  },
  break(node3, state) {
    state.write("\\newline");
    state.ensureNewLine();
  },
  abbreviation(node3, state) {
    if (!state.printGlossary) {
      state.renderChildren(node3, true);
      return;
    }
    const acronymText = toText(node3);
    if (!acronymText) {
      return [];
    }
    const ref = createAcronymRef(acronymText);
    const entry = state.abbreviations[ref];
    if (!entry) {
      fileError(state.file, `Unknown abbreviation entry identifier "${ref}"`, {
        node: node3,
        source: "myst-to-tex",
        ruleId: RuleId.texRenders
      });
      return;
    }
    state.write("\\acrshort{");
    state.write(ref);
    state.write("}");
  },
  glossary() {
  },
  link(node3, state) {
    var _a6;
    state.usePackages("url", "hyperref");
    const href = node3.url;
    if (((_a6 = node3.children[0]) === null || _a6 === void 0 ? void 0 : _a6.value) === href) {
      state.write("\\url{");
      state.write(hrefToLatexText(href));
      state.write("}");
      return;
    }
    state.write("\\href{");
    state.write(hrefToLatexText(href));
    state.write("}{");
    state.renderChildren(node3, true);
    state.write("}");
  },
  admonition(node3, state) {
    addIndexEntries(node3, state);
    state.usePackages("framed");
    state.renderEnvironment(node3, "framed");
  },
  admonitionTitle(node3, state) {
    state.renderInlineEnvironment(node3, "textbf");
    state.write("\\\\\n");
  },
  table: renderNodeToLatex,
  image(node3, state) {
    addIndexEntries(node3, state);
    state.usePackages("graphicx");
    const { width: nodeWidth, url: nodeSrc, align: nodeAlign } = node3;
    const src = nodeSrc;
    const width = getLatexImageWidth(nodeWidth);
    state.write(`\\includegraphics[width=${width}]{${src}}`);
    state.closeBlock(node3);
  },
  container: containerHandler,
  proof: proofHandler,
  caption: captionHandler,
  captionNumber: () => void 0,
  crossReference(node3, state, parent2) {
    var _a6, _b;
    if (node3.kind === "definitionTerm") {
      glossaryReferenceHandler(node3, state, parent2);
      return;
    }
    const usedTemplate = ((_a6 = node3.template) === null || _a6 === void 0 ? void 0 : _a6.includes("%s")) ? node3.template : void 0;
    const text7 = ((_b = usedTemplate !== null && usedTemplate !== void 0 ? usedTemplate : toText(node3)) === null || _b === void 0 ? void 0 : _b.replace(/\s/g, "~")) || "%s";
    const id = node3.label;
    state.write(text7.replace(/%s/g, `\\ref{${id}}`));
  },
  citeGroup(node3, state) {
    if (state.options.citestyle === "numerical-only") {
      state.write("\\cite{");
    } else if (state.options.bibliography === "biblatex") {
      const command = node3.kind === "narrative" ? "textcite" : "parencite";
      state.write(`\\${command}{`);
    } else {
      const tp = node3.kind === "narrative" ? "t" : "p";
      state.write(`\\cite${tp}{`);
    }
    state.renderChildren(node3, true, ", ");
    state.write("}");
  },
  cite(node3, state, parent2) {
    if (!state.options.bibliography) {
      state.usePackages("natbib");
    }
    if (parent2.type === "citeGroup") {
      state.write(node3.label);
    } else if (state.options.bibliography === "biblatex") {
      state.write(`\\textcite{${node3.label}}`);
    } else {
      state.write(`\\cite{${node3.label}}`);
    }
  },
  embed(node3, state) {
    state.renderChildren(node3, true);
  },
  include(node3, state) {
    state.renderChildren(node3, true);
  },
  footnoteReference(node3, state) {
    if (!node3.identifier)
      return;
    const footnote2 = state.footnotes[node3.identifier];
    if (!footnote2) {
      fileError(state.file, `Unknown footnote identifier "${node3.identifier}"`, {
        node: node3,
        source: "myst-to-tex",
        ruleId: RuleId.texRenders
      });
      return;
    }
    state.write("\\footnote{");
    state.renderChildren(footnote2, true);
    state.trimEnd();
    state.write("}");
  },
  footnoteDefinition() {
  },
  si(node3, state) {
    var _a6, _b, _c, _d2;
    state.usePackages("siunitx");
    if (node3.number == null) {
      state.write(`\\unit{${(_b = (_a6 = node3.units) === null || _a6 === void 0 ? void 0 : _a6.map((u3) => `\\${u3}`).join("")) !== null && _b !== void 0 ? _b : ""}}`);
    } else {
      state.write(`\\qty{${node3.number}}{${(_d2 = (_c = node3.units) === null || _c === void 0 ? void 0 : _c.map((u3) => `\\${u3}`).join("")) !== null && _d2 !== void 0 ? _d2 : ""}}`);
    }
  },
  inlineExpression(node3, state) {
    var _a6;
    if ((_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.length) {
      state.renderChildren(node3, true);
    } else {
      state.write("\\texttt{");
      state.text(node3.value, false);
      state.write("}");
    }
  },
  raw(node3, state) {
    var _a6;
    if (node3.tex) {
      state.write(node3.tex);
    } else if ((_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.length) {
      state.renderChildren(node3);
    }
  },
  toc(node3, state) {
    var _a6;
    const title = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6[0];
    if (title) {
      state.write("\\renewcommand{\\contentsname}{");
      state.text(toText(title));
      state.write("}\n");
    }
    if (node3.depth) {
      state.write(`\\setcounter{tocdepth}{${node3.depth}}
`);
    }
    state.write("\\tableofcontents\n");
  }
};
var TexSerializer = class {
  constructor(file, tree, opts) {
    var _a6, _b;
    file.result = "";
    this.file = file;
    this.options = opts !== null && opts !== void 0 ? opts : {};
    this.data = { mathPlugins: {}, imports: /* @__PURE__ */ new Set() };
    this.handlers = (_a6 = opts === null || opts === void 0 ? void 0 : opts.handlers) !== null && _a6 !== void 0 ? _a6 : handlers3;
    this.references = (_b = opts === null || opts === void 0 ? void 0 : opts.references) !== null && _b !== void 0 ? _b : {};
    this.footnotes = createFootnoteDefinitions(tree);
    this.glossary = (opts === null || opts === void 0 ? void 0 : opts.printGlossaries) ? createGlossaryDefinitions(tree) : {};
    this.abbreviations = (opts === null || opts === void 0 ? void 0 : opts.printGlossaries) ? createAcronymDefinitions(tree) : {};
    this.renderChildren(tree);
  }
  get printGlossary() {
    return this.options.printGlossaries === true;
  }
  get out() {
    return this.file.result;
  }
  usePackages(...packageNames) {
    packageNames.forEach((p5) => {
      this.data.imports.add(p5);
    });
  }
  write(value) {
    this.file.result += value;
  }
  text(value, mathMode = false) {
    const escaped = mathMode ? stringToLatexMath(value) : stringToLatexText(value);
    this.write(escaped);
  }
  trimEnd() {
    this.file.result = this.out.trimEnd();
  }
  ensureNewLine(trim2 = false) {
    if (trim2)
      this.trimEnd();
    if (this.out.endsWith("\n"))
      return;
    this.write("\n");
  }
  renderChildren(node3, inline = false, delim = "") {
    var _a6, _b, _c;
    const numChildren = (_b = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.length) !== null && _b !== void 0 ? _b : 0;
    (_c = node3.children) === null || _c === void 0 ? void 0 : _c.forEach((child, index4) => {
      const handler = this.handlers[child.type];
      if (handler) {
        handler(child, this, node3);
      } else {
        fileError(this.file, `Unhandled LaTeX conversion for node of "${child.type}"`, {
          node: child,
          source: "myst-to-tex",
          ruleId: RuleId.texRenders
        });
      }
      if (delim && index4 + 1 < numChildren)
        this.write(delim);
    });
    if (!inline)
      this.closeBlock(node3);
  }
  renderEnvironment(node3, env6, opts) {
    const optsInBrackets = (opts === null || opts === void 0 ? void 0 : opts.parameters) ? `[${opts.parameters}]` : "";
    const optsInBraces = (opts === null || opts === void 0 ? void 0 : opts.arguments) ? `{${opts.arguments.join("}{")}}` : "";
    this.file.result += `\\begin{${env6}}${optsInBrackets}${optsInBraces}
`;
    this.renderChildren(node3, true);
    this.ensureNewLine(true);
    this.file.result += `\\end{${env6}}`;
    this.closeBlock(node3);
  }
  renderInlineEnvironment(node3, env6, opts) {
    this.file.result += `\\${env6}{`;
    this.renderChildren(node3, true);
    this.trimEnd();
    this.file.result += "}";
    if (opts === null || opts === void 0 ? void 0 : opts.after) {
      this.ensureNewLine(true);
      this.write(opts.after);
    }
  }
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
  closeBlock(node3) {
    this.ensureNewLine(true);
    this.file.result += "\n";
  }
};
var plugin2 = function(opts) {
  this.Compiler = (node3, file) => {
    transformLegends(node3);
    const state = new TexSerializer(file, node3, opts !== null && opts !== void 0 ? opts : { handlers: handlers3 });
    const tex = file.result.trim();
    const result = {
      imports: [...state.data.imports],
      preamble: {
        hasProofs: state.data.hasProofs,
        hasIndex: state.data.hasIndex,
        printGlossaries: opts === null || opts === void 0 ? void 0 : opts.printGlossaries,
        glossary: state.glossary,
        abbreviations: state.abbreviations
      },
      commands: withRecursiveCommands(state),
      value: tex
    };
    file.result = result;
    return file;
  };
  return (node3) => {
    return node3;
  };
};
var dist_default3 = plugin2;

// ../myst-cli/dist/build/utils/getFileContent.js
var import_node_path44 = require("path");
async function getFileContent(session, files, { projectPath, imageExtensions, extraLinkTransformers, extraTransforms, titleDepths, preFrontmatters, execute }) {
  const toc = tic();
  files = files.map((file) => (0, import_node_path44.resolve)(file));
  projectPath = projectPath !== null && projectPath !== void 0 ? projectPath : (0, import_node_path44.resolve)(".");
  const { project, pages } = await loadProject(session, projectPath);
  const projectFiles = pages.map((page) => page.file).filter((file) => !files.includes(file));
  await Promise.all([
    // Load all citations (.bib)
    ...project.bibliography.map((path45) => loadFile(session, path45, projectPath, ".bib")),
    // Load all content (.md, .tex, .myst.json, or .ipynb)
    ...[...files, ...projectFiles].map((file, ind) => {
      const preFrontmatter = Array.isArray(preFrontmatters) ? preFrontmatters === null || preFrontmatters === void 0 ? void 0 : preFrontmatters[ind] : preFrontmatters;
      return loadFile(session, file, projectPath, void 0, {
        preFrontmatter
      });
    }),
    // Load up all the intersphinx references
    loadReferences(session, { projectPath })
  ]);
  combineProjectCitationRenderers(session, projectPath);
  const projectParts = selectors_exports.selectProjectParts(session.store.getState(), projectPath);
  const allFiles = [...files, ...projectFiles, ...projectParts];
  await Promise.all(allFiles.map(async (file, ind) => {
    var _a6;
    const pageSlug = (_a6 = pages.find((page) => page.file === file)) === null || _a6 === void 0 ? void 0 : _a6.slug;
    const titleDepth = typeof titleDepths === "number" ? titleDepths : titleDepths === null || titleDepths === void 0 ? void 0 : titleDepths[ind];
    await transformMdast(session, {
      file,
      imageExtensions,
      projectPath,
      pageSlug,
      minifyMaxCharacters: 0,
      index: project.index,
      titleDepth,
      extraTransforms,
      execute
    });
  }));
  const pageReferenceStates = selectPageReferenceStates(session, allFiles.map((file) => {
    return { file };
  }));
  await Promise.all([...files, ...projectParts].map(async (file) => {
    await postProcessMdast(session, {
      file,
      extraLinkTransformers,
      pageReferenceStates
    });
  }));
  const selectedFiles = await Promise.all(files.map(async (file) => {
    const selectedFile = selectFile(session, file);
    if (!selectedFile)
      throw new Error(`Could not load file information for ${file}`);
    return selectedFile;
  }));
  session.log.info(toc(`\u{1F4DA} Built ${plural("%s page(s)", allFiles)} for export (including ${plural("%s dependenc(y|ies)", allFiles.length - files.length)}) from ${projectPath} in %s.`));
  return selectedFiles;
}

// ../myst-cli/dist/build/utils/cleanOutput.js
var import_node_fs35 = __toESM(require("fs"), 1);
function cleanOutput(session, output2) {
  if (import_node_fs35.default.existsSync(output2)) {
    session.log.info(`\u{1F9F9} Cleaning old output at ${output2}`);
    import_node_fs35.default.rmSync(output2, { recursive: true });
  }
}

// ../myst-cli/dist/build/tex/single.js
var DEFAULT_BIB_FILENAME = "main.bib";
var TEX_IMAGE_EXTENSIONS = [
  ImageExtensions.pdf,
  ImageExtensions.png,
  ImageExtensions.jpg,
  ImageExtensions.jpeg
];
function mdastToTex(session, mdast2, references, frontmatter, templateYml, printGlossaries) {
  var _a6, _b, _c;
  const pipe = unified().use(dist_default3, {
    math: frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.math,
    citestyle: (_a6 = templateYml === null || templateYml === void 0 ? void 0 : templateYml.style) === null || _a6 === void 0 ? void 0 : _a6.citation,
    bibliography: (_b = templateYml === null || templateYml === void 0 ? void 0 : templateYml.style) === null || _b === void 0 ? void 0 : _b.bibliography,
    printGlossaries,
    references,
    ...(_c = frontmatter.settings) === null || _c === void 0 ? void 0 : _c.myst_to_tex
  });
  const result = pipe.runSync(mdast2);
  const tex = pipe.stringify(result);
  logMessagesFromVFile(session, tex);
  return tex.result;
}
function extractTexPart(session, mdast2, references, partDefinition, frontmatter, templateYml) {
  var _a6, _b;
  const part = extractPart(mdast2, partDefinition.id, {
    frontmatterParts: resolveFrontmatterParts(session, frontmatter)
  });
  if (!part)
    return void 0;
  if (!partDefinition.as_list) {
    return mdastToTex(session, part, references, frontmatter, templateYml, false);
  }
  if (part.children.length === 1 && ((_b = (_a6 = part.children[0]) === null || _a6 === void 0 ? void 0 : _a6.children) === null || _b === void 0 ? void 0 : _b.length) === 1 && part.children[0].children[0].type === "list") {
    const items = selectAll("listItem", part);
    return items.map((item) => {
      return mdastToTex(session, { type: "root", children: item.children }, references, frontmatter, templateYml, false);
    });
  }
  return part.children.map((block5) => {
    return mdastToTex(session, { type: "root", children: [block5] }, references, frontmatter, templateYml, false);
  });
}
function titleToTexHeading(session, title, depth = 1) {
  const headingMdast = {
    type: "root",
    children: [
      {
        type: "heading",
        depth,
        children: [{ type: "text", value: title }]
      }
    ]
  };
  const content3 = mdastToTex(session, headingMdast, {}, {}, null, false);
  return content3.value;
}
async function localArticleToTexRaw(session, templateOptions, opts) {
  const { articles, output: output2 } = templateOptions;
  const { projectPath, extraLinkTransformers, execute } = opts !== null && opts !== void 0 ? opts : {};
  const fileArticles = articlesWithFile(articles);
  const content3 = await getFileContent(session, fileArticles.map((article) => article.file), {
    projectPath,
    imageExtensions: TEX_IMAGE_EXTENSIONS,
    extraLinkTransformers,
    titleDepths: fileArticles.map((article) => article.level),
    preFrontmatters: fileArticles.map((article) => filterKeys(article, [...PAGE_FRONTMATTER_KEYS, ...Object.keys(FRONTMATTER_ALIASES)])),
    execute
  });
  const toc = tic();
  const results = await Promise.all(content3.map(async ({ mdast: mdast2, frontmatter, references }, ind) => {
    await finalizeMdast(session, mdast2, frontmatter, fileArticles[ind].file, {
      imageWriteFolder: import_node_path45.default.join(import_node_path45.default.dirname(output2), "files"),
      imageAltOutputFolder: "files/",
      imageExtensions: TEX_IMAGE_EXTENSIONS,
      simplifyFigures: true
    });
    return mdastToTex(session, mdast2, references, frontmatter, null, false);
  }));
  session.log.info(toc(`\u{1F4D1} Exported TeX in %s, copying to ${output2}`));
  if (results.length === 1) {
    writeFileToFolder(output2, results[0].value);
  } else {
    let includeContent = "";
    let fileInd = 0;
    const { dir, name: name3, ext: ext2 } = import_node_path45.default.parse(output2);
    articles.forEach((article) => {
      var _a6, _b, _c, _d2, _e;
      if (article.file) {
        const base5 = `${name3}-${(_b = (_a6 = content3[fileInd]) === null || _a6 === void 0 ? void 0 : _a6.slug) !== null && _b !== void 0 ? _b : fileInd}${ext2}`;
        const includeFile = import_node_path45.default.format({ dir, ext: ext2, base: base5 });
        let part = "";
        const { title, content_includes_title } = (_d2 = (_c = content3[fileInd]) === null || _c === void 0 ? void 0 : _c.frontmatter) !== null && _d2 !== void 0 ? _d2 : {};
        if (title && !content_includes_title) {
          part = `${titleToTexHeading(session, title, article.level)}

`;
        }
        writeFileToFolder(includeFile, `${part}${(_e = results[fileInd]) === null || _e === void 0 ? void 0 : _e.value}`);
        includeContent += `\\include{${base5}}

`;
        fileInd++;
      } else if (article.title) {
        includeContent += `${titleToTexHeading(session, article.title, article.level)}

`;
      }
    });
    writeFileToFolder(output2, includeContent);
  }
  return { tempFolders: [] };
}
async function localArticleToTexTemplated(session, file, templateOptions, opts) {
  var _a6;
  const { output: output2, articles, template } = templateOptions;
  const { projectPath, extraLinkTransformers, clean: clean3, ci, execute } = opts !== null && opts !== void 0 ? opts : {};
  const filesPath = import_node_path45.default.join(import_node_path45.default.dirname(output2), "files");
  const fileArticles = articlesWithFile(articles);
  const content3 = await getFileContent(session, fileArticles.map((article) => article.file), {
    projectPath,
    imageExtensions: TEX_IMAGE_EXTENSIONS,
    extraLinkTransformers,
    titleDepths: fileArticles.map((article) => article.level),
    preFrontmatters: fileArticles.map((article) => filterKeys(article, [...PAGE_FRONTMATTER_KEYS, ...Object.keys(FRONTMATTER_ALIASES)])),
    execute
  });
  const bibtexWritten = writeBibtexFromCitationRenderers(session, import_node_path45.default.join(import_node_path45.default.dirname(output2), DEFAULT_BIB_FILENAME), content3);
  const warningLogFn = (message) => {
    addWarningForFile(session, file, message, "warn", {
      ruleId: RuleId.texRenders
    });
  };
  const mystTemplate = new dist_default2(session, {
    kind: TemplateKind.tex,
    template: template || void 0,
    buildDir: session.buildPath(),
    errorLogFn: (message) => {
      addWarningForFile(session, file, message, "error", {
        ruleId: RuleId.texRenders
      });
    },
    warningLogFn
  });
  await mystTemplate.ensureTemplateExistsOnPath();
  const toc = tic();
  const templateYml = mystTemplate.getValidatedTemplateYml();
  const partDefinitions = (templateYml === null || templateYml === void 0 ? void 0 : templateYml.parts) || [];
  const parts = {};
  let collectedImports = { imports: [], commands: {} };
  let preambleData = {
    hasProofs: false,
    printGlossaries: false,
    glossary: {},
    abbreviations: {}
  };
  let hasGlossaries = false;
  const results = await Promise.all(content3.map(async ({ mdast: mdast2, frontmatter: frontmatter2, references }, ind) => {
    await finalizeMdast(session, mdast2, frontmatter2, fileArticles[ind].file, {
      imageWriteFolder: filesPath,
      imageAltOutputFolder: "files/",
      imageExtensions: TEX_IMAGE_EXTENSIONS,
      simplifyFigures: true
    });
    partDefinitions.forEach((def) => {
      var _a7;
      const part = extractTexPart(session, mdast2, references, def, frontmatter2, templateYml);
      if (part && parts[def.id]) {
        addWarningForFile(session, file, `multiple values for part '${def.id}' found; ignoring value from ${fileArticles[ind].file}`, "error", { ruleId: RuleId.texRenders });
      } else if (Array.isArray(part)) {
        part.forEach((item) => {
          collectedImports = mergeTexTemplateImports(collectedImports, item);
        });
        parts[def.id] = part.map(({ value }) => value);
      } else if (part != null) {
        collectedImports = mergeTexTemplateImports(collectedImports, part);
        parts[def.id] = (_a7 = part === null || part === void 0 ? void 0 : part.value) !== null && _a7 !== void 0 ? _a7 : "";
      }
    });
    const result = mdastToTex(session, mdast2, references, frontmatter2, templateYml, true);
    collectedImports = mergeTexTemplateImports(collectedImports, result);
    preambleData = mergePreambles(preambleData, result.preamble, warningLogFn);
    hasGlossaries = hasGlossaries || hasGlossary(mdast2);
    return result;
  }));
  let frontmatter;
  let texContent;
  if (results.length === 1) {
    frontmatter = content3[0].frontmatter;
    texContent = results[0].value;
  } else {
    const state = session.store.getState();
    frontmatter = (_a6 = selectors_exports.selectLocalProjectConfig(state, projectPath !== null && projectPath !== void 0 ? projectPath : ".")) !== null && _a6 !== void 0 ? _a6 : {};
    const { dir, name: name3, ext: ext2 } = import_node_path45.default.parse(output2);
    texContent = "";
    let fileInd = 0;
    articles.forEach((article) => {
      var _a7, _b, _c, _d2;
      if (article.file) {
        const includeFilename = `${name3}-${(_b = (_a7 = content3[fileInd]) === null || _a7 === void 0 ? void 0 : _a7.slug) !== null && _b !== void 0 ? _b : fileInd}`;
        const includeFile = import_node_path45.default.format({ dir, ext: ext2, base: `${includeFilename}${ext2}` });
        let part = "";
        const { title, content_includes_title } = (_d2 = (_c = content3[fileInd]) === null || _c === void 0 ? void 0 : _c.frontmatter) !== null && _d2 !== void 0 ? _d2 : {};
        if (title && !content_includes_title) {
          part = `${titleToTexHeading(session, title, article.level)}

`;
        }
        writeFileToFolder(includeFile, `${part}${results[fileInd].value}`);
        texContent += `\\include{${includeFilename}}

`;
        fileInd++;
      } else if (article.title) {
        texContent += `${titleToTexHeading(session, article.title, article.level)}

`;
      }
    });
  }
  const vfile2 = new VFile();
  vfile2.path = file;
  const exportFrontmatter = validateProjectFrontmatter(filterKeys(templateOptions, [...PROJECT_FRONTMATTER_KEYS, ...Object.keys(FRONTMATTER_ALIASES)]), frontmatterValidationOpts(vfile2));
  logMessagesFromVFile(session, vfile2);
  frontmatter = { ...frontmatter, ...exportFrontmatter };
  session.log.info(toc(`\u{1F4D1} Exported TeX in %s, copying to ${output2}`));
  const { preamble, suffix } = generatePreamble(preambleData);
  renderTemplate(mystTemplate, {
    contentOrPath: texContent + suffix,
    outputPath: output2,
    frontmatter,
    parts,
    options: { ...frontmatter.options, ...templateOptions },
    bibliography: bibtexWritten ? DEFAULT_BIB_FILENAME : void 0,
    sourceFile: file,
    imports: collectedImports,
    preamble,
    force: clean3,
    packages: templateYml.packages,
    filesPath,
    removeVersionComment: ci
  });
  return { tempFolders: [], hasGlossaries };
}
async function runTexExport(session, file, exportOptions, opts) {
  if (opts === null || opts === void 0 ? void 0 : opts.clean)
    cleanOutput(session, exportOptions.output);
  let result;
  if (exportOptions.template === null) {
    result = await localArticleToTexRaw(session, exportOptions, opts);
  } else {
    result = await localArticleToTexTemplated(session, file, exportOptions, opts);
  }
  return result;
}
async function runTexZipExport(session, file, exportOptions, opts) {
  if (opts === null || opts === void 0 ? void 0 : opts.clean)
    cleanOutput(session, exportOptions.output);
  const zipOutput = exportOptions.output;
  const texFolder = createTempFolder(session);
  exportOptions.output = import_node_path45.default.join(texFolder, `${import_node_path45.default.basename(zipOutput, import_node_path45.default.extname(zipOutput))}.tex`);
  await runTexExport(session, file, exportOptions, opts);
  session.log.info(`\u{1F910} Zipping tex outputs to ${zipOutput}`);
  const zip2 = new import_adm_zip2.default();
  zip2.addLocalFolder(texFolder);
  zip2.writeZip(zipOutput);
  return { tempFolders: [texFolder] };
}
function hasGlossary(mdast2) {
  const glossary = select("glossary", mdast2);
  return glossary !== null;
}

// ../myst-cli/dist/build/typst.js
var import_adm_zip3 = __toESM(require_adm_zip(), 1);
var import_node_fs36 = __toESM(require("fs"), 1);
var import_node_path46 = __toESM(require("path"), 1);
var import_which6 = __toESM(require_lib15(), 1);

// ../myst-to-typst/dist/container.js
var CaptionKind2;
(function(CaptionKind3) {
  CaptionKind3["fig"] = "fig";
  CaptionKind3["eq"] = "eq";
  CaptionKind3["code"] = "code";
  CaptionKind3["table"] = "table";
})(CaptionKind2 || (CaptionKind2 = {}));
function renderFigureChild(node3, state) {
  var _a6;
  const bracketNode = node3.type === "div" && ((_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.length) === 1 ? node3.children[0] : node3;
  const useBrackets = bracketNode.type !== "image" && bracketNode.type !== "table";
  if (node3.type === "legend") {
    state.useMacro('#let legendStyle = (fill: black.lighten(20%), size: 8pt, style: "italic")');
    state.write("text(..legendStyle)");
    node3.type = "paragraph";
  }
  if (useBrackets)
    state.write("[\n");
  else
    state.write("\n  ");
  state.renderChildren({ children: [node3] });
  if (useBrackets)
    state.write("\n]");
}
function getDefaultCaptionSupplement(kind) {
  if (kind === "code")
    kind = "program";
  const domain = kind.includes(":") ? kind.split(":")[1] : kind;
  return `${domain.slice(0, 1).toUpperCase()}${domain.slice(1)}`;
}
var containerHandler2 = (node3, state) => {
  var _a6, _b, _c;
  if (state.data.isInTable) {
    fileError(state.file, "Unable to render typst figure inside table", {
      node: node3,
      source: "myst-to-typst"
    });
    return;
  }
  state.ensureNewLine();
  const prevState = state.data.isInFigure;
  state.data.isInFigure = true;
  const { identifier, kind } = node3;
  let label = identifier;
  const captionTypes = node3.kind === "table" ? ["caption"] : ["caption", "legend"];
  const captions = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.filter((child) => {
    return captionTypes.includes(child.type);
  });
  let nonCaptions = (_b = node3.children) === null || _b === void 0 ? void 0 : _b.filter((child) => {
    return !captionTypes.includes(child.type);
  });
  nonCaptions = [
    ...nonCaptions.filter((child) => child.type !== "legend"),
    ...nonCaptions.filter((child) => child.type === "legend")
  ];
  if (!nonCaptions || nonCaptions.length === 0) {
    fileError(state.file, `Figure with no non-caption content: ${label}`, {
      node: node3,
      source: "myst-to-typst"
    });
  }
  const flatCaptions = captions.map((cap2) => cap2.children).filter(Boolean).flat();
  if (node3.kind === "quote") {
    const prevIsInBlockquote = state.data.isInBlockquote;
    state.data.isInBlockquote = true;
    state.write("#quote(block: true");
    if (flatCaptions.length > 0) {
      state.write(", attribution: [");
      state.renderChildren(flatCaptions);
      state.write("])[");
    } else {
      state.write(")[");
    }
    state.renderChildren(nonCaptions);
    state.write("]");
    state.data.isInBlockquote = prevIsInBlockquote;
    return;
  }
  if ((_c = node3.enumerator) === null || _c === void 0 ? void 0 : _c.endsWith(".1")) {
    state.write(`#set figure(numbering: "${node3.enumerator}")
`);
    state.write(`#counter(figure.where(kind: "${kind}")).update(0)

`);
  }
  if (nonCaptions && nonCaptions.length > 1) {
    const allSubFigs = nonCaptions.filter((item) => item.type === "container").length === nonCaptions.length;
    state.useMacro('#import "@preview/subpar:0.1.1"');
    state.useMacro("#let breakableDefault = true");
    state.write(`#show figure: set block(breakable: ${allSubFigs ? "false" : "breakableDefault"})
`);
    state.write("#subpar.grid(");
    let columns = nonCaptions.length <= 3 ? nonCaptions.length : 2;
    nonCaptions.forEach((item) => {
      if (item.type === "container") {
        state.write("figure(\n");
        state.renderChildren(item);
        state.write("\n, caption: []),");
        if (item.identifier) {
          state.write(` <${item.identifier}>,`);
        }
        state.write("\n");
      } else {
        renderFigureChild(item, state);
        state.write(",\n");
        columns = 1;
      }
    });
    state.write(`columns: ${columns},
`);
    if (label) {
      state.write(`label: <${label}>,`);
      label = void 0;
    }
  } else if (nonCaptions && nonCaptions.length === 1) {
    state.useMacro("#let breakableDefault = true");
    state.write("#show figure: set block(breakable: breakableDefault)\n");
    state.write("#figure(");
    renderFigureChild(nonCaptions[0], state);
    state.write(",");
  } else {
    state.useMacro("#let breakableDefault = true");
    state.write("#show figure: set block(breakable: breakableDefault)\n");
    state.write("#figure([\n  ");
    state.renderChildren(node3, 1);
    state.write("],");
  }
  if (captions === null || captions === void 0 ? void 0 : captions.length) {
    state.write("\n  caption: [\n");
    state.renderChildren(flatCaptions);
    state.write("\n],");
  }
  if (kind) {
    const supplement = getDefaultCaptionSupplement(kind);
    state.write(`
  kind: "${kind}",`);
    state.write(`
  supplement: [${supplement}],`);
  }
  state.write("\n)");
  if (label)
    state.write(` <${label}>`);
  state.ensureNewLine(true);
  state.addNewLine();
  state.data.isInFigure = prevState;
};
var captionHandler2 = () => {
};

// ../myst-to-typst/dist/types.js
var DEFAULT_IMAGE_WIDTH2 = 0.9;
var DEFAULT_PAGE_WIDTH_PIXELS2 = 800;

// ../myst-to-typst/dist/utils.js
function cleanWhitespaceChars2(text7, nbsp = " ") {
  return text7.replace(/\u00A0/g, nbsp).replace(/[\u200B-\u200D\uFEFF]/g, "");
}
var BACKSLASH_SPACE2 = "xxxxBACKSLASHSPACExxxx";
var BACKSLASH2 = "xxxxBACKSLASHxxxx";
var COMMENT = "xxxxCOMMENTxxxx";
var COMMENT_SPACE = "xxxxCOMMENTSPACExxxx";
var TILDE2 = "xxxxTILDExxxx";
var hrefOnlyReplacements2 = {
  // Not allowed characters
  // Typst escaped characters are: \ & ` $ # _ * @ { } [ ] ^
  "&": "\\&",
  "`": "\\`",
  $: "\\$",
  "#": "\\#",
  _: "\\_",
  "*": "\\*",
  "{": "\\{",
  "}": "\\}",
  "[": "\\[",
  "]": "\\]",
  "^": "\\^",
  "@": "\\@",
  ";": "\\;"
};
var textOnlyReplacements3 = {
  ...hrefOnlyReplacements2,
  // quotes
  "\u2019": "'",
  "\u2018": "'",
  "\u201D": '"',
  "\u201C": '"',
  // guillemots
  // '»': '>>', // These could be improved
  // '«': '<<',
  // '…': '\\dots',
  // '–': '--',
  // '—': '---',
  // Commands gobble fhttps://texfaq.org/FAQ-xspaceollowing space
  // See: https://texfaq.org/FAQ-xspace
  "\xA9": "#emoji.copyright ",
  "\xAE": "#emoji.reg ",
  "\u2122": "#emoji.tm ",
  "<": "\\<",
  ">": "\\>",
  "\xA0": "~",
  "\u202F": "~"
  // eslint-disable-next-line no-irregular-whitespace
  // ' ': '\\,',
  // ...Object.fromEntries(Object.entries(emoji).map(([k, v]) => [k, `#emoji.${v} `])),
};
var arrows2 = {
  "\u2194": "arrow.l.r",
  "\u21D4": "arrow.l.r.double",
  "\u2192": "arrow.r",
  "\u21D2": "arrow.r.double",
  "\u2190": "arrow.l",
  "\u21D0": "arrow.l.double"
};
var symbols3 = {
  "\u2212": "-",
  // minus
  "-": "-",
  // hyphen minus
  "\uFE63": "-",
  // Small hyphen minus
  "\uFF0D": "-",
  // Full-width Hyphen-minus
  "\uFF0B": "+"
  // Full-width Plus
};
var textReplacements2 = {
  ...textOnlyReplacements3,
  ...arrows2,
  ...symbols3
};
var mathReplacements2 = {
  ...arrows2,
  ...symbols3,
  "\xBD": "1/2",
  "\u2153": "1/3",
  "\u2154": "2/3",
  "\xBC": "1/4",
  "\u2155": "1/5",
  "\u2156": "2/5",
  "\u2157": "3/5",
  "\u2158": "4/5",
  "\u2159": "1/6",
  "\u215A": "5/6",
  "\u2150": "1/7",
  "\u215B": "1/8",
  "\u215C": "3/8",
  "\u215D": "5/8",
  "\u215E": "7/8",
  "\u2151": "1/9",
  "\u2152": "1/10",
  "\xB1": "plus.minus",
  "\xD7": "times",
  \u0391: "A",
  \u03B1: "alpha",
  "\u{1D736}": "alpha",
  \u0392: "B",
  \u03B2: "beta",
  \u00DF: "beta",
  "\u{1D737}": "beta",
  \u0393: "Gamma",
  \u03B3: "gamma",
  \u0394: "Delta",
  "\u2206": "Delta",
  \u03B4: "delta",
  \u0395: "E",
  \u03B5: "epsilon",
  "\u{1D774}": "epsilon",
  \u0396: "Z",
  \u03B6: "zeta",
  \u0397: "H",
  \u03B7: "eta",
  \u0398: "Theta",
  \u03B8: "theta",
  \u03D1: "vartheta",
  \u0399: "I",
  \u03B9: "iota",
  \u039A: "K",
  \u03BA: "kappa",
  \u039B: "Lambda",
  \u03BB: "lambda",
  \u039C: "M",
  \u03BC: "mu",
  \u039D: "N",
  \u03BD: "nu",
  \u039E: "Xi",
  \u03BE: "xi",
  \u039F: "O",
  \u03BF: "o",
  \u03A0: "Pi",
  \u03C0: "pi",
  \u03A1: "P",
  \u03C1: "rho",
  \u03A3: "Sigma",
  \u03C3: "sigma",
  \u03A4: "T",
  \u03C4: "tau",
  \u03A5: "Upsilon",
  \u03C5: "upsilon",
  \u03A6: "Phi",
  \u03D5: "phi.alt",
  \u03C6: "phi",
  \u03A7: "X",
  \u03C7: "chi",
  \u03A8: "Psi",
  \u03C8: "psi",
  \u03A9: "Omega",
  \u03C9: "omega",
  "\u2202": "diff",
  "\u221E": "infty",
  "\u2248": "approx",
  "\u2260": "eq.not",
  "\u2022": "dot.c"
  // '‰': '\\permille',
};
function nodeOnlyHasTextChildren(node3) {
  if (!node3 || !node3.children || node3.children.length === 0)
    return false;
  return node3.children.reduce((previous, { type: type2 }) => previous && type2 === "text", true);
}
function hrefToLatexText2(text7) {
  const replacedArray = Array.from(text7 !== null && text7 !== void 0 ? text7 : "").map((char) => {
    if (hrefOnlyReplacements2[char])
      return { kind: "text", text: hrefOnlyReplacements2[char] };
    return { kind: "text", text: char };
  });
  const replaced = replacedArray.reduce((arr, next) => {
    const prev = arr.slice(-1)[0];
    if ((prev === null || prev === void 0 ? void 0 : prev.kind) === next.kind)
      prev.text += next.text;
    else
      arr.push(next);
    return arr;
  }, []).reduce((s5, next) => {
    return s5 + next.text;
  }, "");
  return replaced;
}
function stringToTypstText(text7) {
  const escaped = (text7 !== null && text7 !== void 0 ? text7 : "").replace(/\\ /g, BACKSLASH_SPACE2).replace(/\\/g, BACKSLASH2).replace(/^\/\//g, COMMENT).replace(/\s\/\//g, COMMENT_SPACE).replace(/~/g, TILDE2);
  const replacedArray = Array.from(escaped).map((char) => {
    if (textReplacements2[char])
      return { kind: "text", text: textReplacements2[char] };
    if (mathReplacements2[char])
      return { kind: "math", text: mathReplacements2[char] };
    return { kind: "text", text: char };
  });
  const replaced = replacedArray.reduce((arr, next) => {
    const prev = arr.slice(-1)[0];
    if ((prev === null || prev === void 0 ? void 0 : prev.kind) === next.kind)
      prev.text += next.text;
    else
      arr.push(next);
    return arr;
  }, []).reduce((s5, next) => {
    if (next.kind === "math")
      return `${s5}$${next.text}$`;
    return s5 + next.text;
  }, "");
  const final = replaced.replace(new RegExp(BACKSLASH_SPACE2, "g"), "\\\\ ").replace(new RegExp(BACKSLASH2, "g"), "\\\\").replace(new RegExp(COMMENT_SPACE, "g"), " \\/\\/").replace(new RegExp(COMMENT, "g"), "\\/\\/").replace(new RegExp(TILDE2, "g"), "$tilde$");
  return cleanWhitespaceChars2(final, "~");
}
function stringToTypstMath(text7) {
  const replaced = Array.from(text7 !== null && text7 !== void 0 ? text7 : "").reduce((s5, char) => {
    if (mathReplacements2[char]) {
      const space3 = s5.slice(-1) === " " ? "" : " ";
      return `${s5}${space3}${mathReplacements2[char]}`;
    }
    return s5 + char;
  }, "");
  const final = replaced.trim();
  return cleanWhitespaceChars2(final);
}
function getLatexImageWidth2(width) {
  if (typeof width === "number" && Number.isNaN(width)) {
    return getLatexImageWidth2(DEFAULT_IMAGE_WIDTH2);
  }
  if (typeof width === "string") {
    if (width.endsWith("%")) {
      return getLatexImageWidth2(Number(width.replace("%", "")));
    } else if (width.endsWith("px")) {
      return getLatexImageWidth2(Number(width.replace("px", "")) / DEFAULT_PAGE_WIDTH_PIXELS2);
    }
    console.log(`Unknown width ${width} in getLatexImageWidth`);
    return getLatexImageWidth2(DEFAULT_IMAGE_WIDTH2);
  }
  let lineWidth = width !== null && width !== void 0 ? width : DEFAULT_IMAGE_WIDTH2;
  if (lineWidth < 1)
    lineWidth *= 100;
  return `${lineWidth}%`;
}

// ../../node_modules/tex-to-typst/dist/utils.js
var BRACKETS = {
  "[": "bracket.l",
  "]": "bracket.r",
  "{": "brace.l",
  "}": "brace.r",
  "(": "paren.l",
  ")": "paren.r",
  "|": "bar.v",
  lfloor: "floor.l",
  "\u230A": "floor.l",
  rfloor: "floor.r",
  "\u230B": "floor.r",
  rceil: "ceil.r",
  "\u2309": "ceil.r",
  lceil: "ceil.l",
  "\u2308": "ceil.l"
};
function areBracketsBalanced(input3) {
  const stack = [];
  const bracketMap = {
    ")": "(",
    "]": "[",
    "}": "{"
  };
  for (const char of input3) {
    if (char === "(" || char === "[" || char === "{") {
      stack.push(char);
    } else if (char === ")" || char === "]" || char === "}") {
      if (!stack.length || bracketMap[char] !== stack.pop()) {
        return false;
      }
    }
  }
  return stack.length === 0;
}

// ../../node_modules/tex-to-typst/dist/macros.js
function isEmptyNode(node3) {
  if (!(node3 === null || node3 === void 0 ? void 0 : node3.content) || node3.content.length === 0)
    return true;
  return false;
}
var typstStrings = {
  ",": (state) => state.data.inFunction && state._currentFunctions.slice(-1)[0] !== "text" ? "comma" : ",",
  "&": (state) => state.data.inArray ? "," : "&",
  "/": "\\/",
  ";": "\\;",
  "~": "med",
  '"': '\\"'
};
function createBrackets(scale) {
  return (state, node3) => {
    var _a6;
    const args = node3.args;
    node3.args = [];
    const b = ((_a6 = args === null || args === void 0 ? void 0 : args[0].content) === null || _a6 === void 0 ? void 0 : _a6[0]).content;
    const typstB = BRACKETS[b];
    if (!typstB)
      throw new Error(`Undefined left bracket: ${b}`);
    return `#scale(x: ${scale}, y: ${scale})[$${typstB}$]`;
  };
}
function splitStrings(node3) {
  var _a6, _b, _c;
  if (((_b = (_a6 = node3.args) === null || _a6 === void 0 ? void 0 : _a6[0].content) === null || _b === void 0 ? void 0 : _b.length) === 1 && ((_c = node3.args) === null || _c === void 0 ? void 0 : _c[0].content)[0].type === "string") {
    node3.args[0].content = node3.args[0].content[0].content.split("").map((l) => ({ type: "string", content: l }));
  }
}
var typstMacros = {
  $: "\\$",
  dfrac: "frac",
  tfrac: "frac",
  cdot: "dot.op",
  to: "arrow.r",
  rightarrow: "arrow.r",
  Rightarrow: "arrow.r.double",
  leftarrow: "arrow.l",
  Leftarrow: "arrow.l.double",
  leftrightarrow: "arrow.l.r",
  Leftrightarrow: "arrow.l.r.double",
  gets: "arrow.l",
  rightharpoonup: "harpoon.rt",
  rightharpoondown: "harpoon.rb",
  rightleftharpoons: "harpoons.rtlb",
  leftharpoonup: "harpoon.lt",
  leftharpoondown: "harpoon.lb",
  leftrightharpoons: "harpoons.ltrb",
  infin: "infinity",
  // This is a mathjax only thing, https://docs.mathjax.org/en/v2.7-latest/tex.html#i
  infty: "infinity",
  // oo
  nonumber: "",
  int: "integral",
  iint: "integral.double",
  iiint: "integral.triple",
  oint: "integral.cont",
  oiint: "integral.surf",
  oiiint: "integral.vol",
  sqrt: (state, node3) => {
    var _a6;
    if (isEmptyNode((_a6 = node3.args) === null || _a6 === void 0 ? void 0 : _a6[0]))
      return "sqrt";
    return "root";
  },
  vec: "arrow",
  check: "caron",
  bar: "macron",
  mathbf: "bold",
  mathsf: "sans",
  boldsymbol: "bold",
  bf: "bold",
  mathrm: "upright",
  textrm: "upright",
  rm: "upright",
  mbox: (state, node3) => {
    var _a6;
    const arg2 = (_a6 = node3.args) === null || _a6 === void 0 ? void 0 : _a6[0];
    node3.args = [];
    state.openFunction("upright");
    state.openFunction("text");
    state.writeChildren(arg2);
    state.closeFunction();
    state.closeFunction();
    return "";
  },
  mathcal: "cal",
  mathfrak: "frak",
  pm: "plus.minus",
  partial: "diff",
  _: (state, node3) => {
    splitStrings(node3);
    return "_";
  },
  "^": (state, node3) => {
    splitStrings(node3);
    return "^";
  },
  big: createBrackets("120%"),
  bigl: createBrackets("120%"),
  bigr: createBrackets("120%"),
  Big: createBrackets("180%"),
  Bigl: createBrackets("180%"),
  Bigr: createBrackets("180%"),
  bigg: createBrackets("240%"),
  biggr: createBrackets("240%"),
  biggl: createBrackets("240%"),
  Bigg: createBrackets("300%"),
  Biggl: createBrackets("300%"),
  Biggr: createBrackets("300%"),
  left: (state, node3) => {
    var _a6;
    const args = node3.args;
    node3.args = [];
    const left2 = ((_a6 = args === null || args === void 0 ? void 0 : args[0].content) === null || _a6 === void 0 ? void 0 : _a6[0]).content;
    if (left2 === "(")
      return "(";
    if (left2 === "[")
      return "[";
    if (left2 === "{")
      return "{";
    if (left2 === "|")
      return "|";
    if (left2 === ".")
      return "";
    if (left2 === "lbrack")
      return "[";
    throw new Error(`Undefined left bracket: ${left2}`);
  },
  lbrack: "[",
  right: (state, node3) => {
    var _a6;
    const args = node3.args;
    node3.args = [];
    const right2 = ((_a6 = args === null || args === void 0 ? void 0 : args[0].content) === null || _a6 === void 0 ? void 0 : _a6[0]).content;
    if (right2 === ")")
      return ")";
    if (right2 === "]")
      return "]";
    if (right2 === "}")
      return "}";
    if (right2 === "|")
      return "|";
    if (right2 === ".")
      return "";
    if (right2 === "rbrack")
      return "]";
    throw new Error(`Undefined right bracket: ${right2}`);
  },
  rbrack: "]",
  operatorname: (state, node3) => {
    var _a6;
    const text7 = (_a6 = node3.args) === null || _a6 === void 0 ? void 0 : _a6.slice(-1)[0];
    node3.args = [{ type: "macro", content: "text", args: [text7] }];
    return "op";
  },
  mathop: "op",
  "\\": (state, node3) => {
    var _a6;
    node3.args = [];
    if (state.data.inArray) {
      state.data.previousMatRows = ((_a6 = state.data.previousMatRows) !== null && _a6 !== void 0 ? _a6 : 0) + 1;
      if (state._value.slice(-1) === "]")
        state.addWhitespace();
      return ";";
    }
    return "\\\n";
  },
  cr: (state, node3) => {
    var _a6;
    node3.args = [];
    if (state.data.inArray) {
      state.data.previousMatRows = ((_a6 = state.data.previousMatRows) !== null && _a6 !== void 0 ? _a6 : 0) + 1;
      if (state._value.slice(-1) === "]")
        state.addWhitespace();
      return ";";
    }
    return "\\\n";
  },
  sim: "tilde",
  cong: "tilde.equiv",
  simeq: "tilde.eq",
  ne: "!=",
  phi: "phi.alt",
  varphi: "phi.alt",
  varepsilon: "epsilon",
  propto: "prop",
  mapsto: "mapsto",
  equiv: "equiv",
  nabla: "nabla",
  emptyset: "emptyset",
  varnothing: "emptyset",
  setminus: "backslash",
  doteq: "dot(eq)",
  ge: "gt.eq",
  geq: "gt.eq",
  geqslant: "gt.eq.slant",
  gg: "gt.double",
  le: "lt.eq",
  leq: "lt.eq",
  leqslant: "lt.eq.slant",
  ll: "lt.double",
  approx: "approx",
  neq: "eq.not",
  otimes: "times.circle",
  odot: "dot.circle",
  oplus: "plus.circle",
  ominus: "minus.circle",
  circ: "compose",
  vert: "bar.v",
  dot: "dot",
  ddot: "dot.double",
  dots: "dots.h",
  ldots: "dots.h",
  vdots: "dots.v",
  ddots: "dots.down",
  subseteq: "subset.eq",
  cdots: "dots.h.c",
  cap: "sect",
  cup: "union",
  widehat: "hat",
  widetilde: "tilde",
  // Spaces
  ",": "thin",
  ":": "med",
  ";": "thick",
  "!": "#h(-1em)",
  quad: "quad",
  qquad: "wide",
  hspace: (state, node3) => {
    var _a6, _b;
    const dimension = (_b = (_a6 = node3.args) === null || _a6 === void 0 ? void 0 : _a6.slice(-1)[0].content) === null || _b === void 0 ? void 0 : _b.map((n) => {
      var _a7;
      return (_a7 = n.content) !== null && _a7 !== void 0 ? _a7 : "";
    }).join("");
    node3.args = [];
    return `#h(${dimension})`;
  },
  wedge: "and",
  sum: "sum",
  prod: "product",
  lfloor: "floor.l",
  rfloor: "floor.r",
  langle: "angle.l",
  rangle: "angle.r",
  implies: "arrow.r.double.long",
  " ": '" "',
  mathbb: (state, node3) => {
    var _a6;
    const arg2 = (_a6 = node3.args) === null || _a6 === void 0 ? void 0 : _a6[0];
    if (!arg2)
      return "";
    const startPos = state._value.length;
    state.writeChildren(arg2);
    const rendered = state._value.substring(startPos);
    state._value = state._value.substring(0, startPos);
    const doubled = rendered.replace(/\b([A-Z])\b/g, "$1$1");
    state._value += doubled;
    node3.args = [];
    return "";
  },
  mathscr: (state) => {
    state.useMacro(`#let scr(it) = text(features: ("ss01",), box($cal(it)$))`);
    return "scr";
  },
  overset: (state, node3) => {
    var _a6;
    state.useMacro('#import "@preview/ouset:0.2.0": *');
    node3.args = (_a6 = node3.args) === null || _a6 === void 0 ? void 0 : _a6.reverse();
    return "overset";
  },
  underset: (state, node3) => {
    var _a6;
    state.useMacro('#import "@preview/ouset:0.2.0": *');
    node3.args = (_a6 = node3.args) === null || _a6 === void 0 ? void 0 : _a6.reverse();
    return "underset";
  },
  overrightarrow: (state, node3) => {
    var _a6;
    (_a6 = node3.args) === null || _a6 === void 0 ? void 0 : _a6.push({ type: "argument", content: [{ type: "macro", content: "arrow" }] });
    return "accent";
  },
  overleftarrow: (state, node3) => {
    var _a6;
    (_a6 = node3.args) === null || _a6 === void 0 ? void 0 : _a6.push({ type: "argument", content: [{ type: "macro", content: "arrow.l" }] });
    return "accent";
  },
  middle: (state) => {
    var _a6;
    return `mat(delim: #("|", none), ${";".repeat((_a6 = state.data.previousMatRows) !== null && _a6 !== void 0 ? _a6 : 1)})`;
  },
  stackrel: (state, node3) => {
    var _a6;
    const args = (_a6 = node3.args) === null || _a6 === void 0 ? void 0 : _a6.reverse();
    node3.args = [];
    state.writeChildren(args === null || args === void 0 ? void 0 : args[0]);
    state.write("^");
    state.writeChildren(args === null || args === void 0 ? void 0 : args[1]);
    return "";
  },
  color: (state, node3) => {
    var _a6, _b, _c;
    const [fill3, children] = (_a6 = node3.args) !== null && _a6 !== void 0 ? _a6 : [];
    const color2 = (_c = (_b = fill3.content) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.content;
    node3.args = [];
    state.openFunction(`#text(fill: ${color2})`, { openToken: "[$", closeToken: "$]" });
    state.writeChildren(children);
    state.closeFunction();
    return "";
  }
};
var matrixEnv = (delim) => (state, node3) => {
  state.data.inArray = true;
  state.data.previousMatRows = 0;
  state.openFunction("mat");
  state.write(`delim: ${delim ? `"${delim}"` : "#none"},`);
  state.writeChildren(node3);
  state.closeFunction();
  state.data.inArray = false;
};
var typstEnvs = {
  array: matrixEnv(),
  matrix: matrixEnv(),
  pmatrix: matrixEnv("("),
  bmatrix: matrixEnv("["),
  Bmatrix: matrixEnv("{"),
  vmatrix: matrixEnv("|"),
  aligned(state, node3) {
    state.writeChildren(node3);
  },
  ["aligned*"](state, node3) {
    state.writeChildren(node3);
  }
};

// ../../node_modules/tex-to-typst/dist/index.js
function parseLatex2(value) {
  const file = unified().use(unifiedLatexFromString, { mode: "math" }).use(unifiedLatexAstComplier).use(unifiedLatexAttachMacroArguments, {
    macros: {
      dfrac: { signature: "m m" },
      tfrac: { signature: "m m" },
      hspace: { signature: "m" },
      vec: { signature: "m" },
      boldsymbol: { signature: "m" },
      left: { signature: "m" },
      right: { signature: "m" },
      big: { signature: "m" },
      bigr: { signature: "m" },
      bigl: { signature: "m" },
      Big: { signature: "m" },
      Bigr: { signature: "m" },
      Bigl: { signature: "m" },
      bigg: { signature: "m" },
      biggr: { signature: "m" },
      biggl: { signature: "m" },
      Bigg: { signature: "m" },
      Biggr: { signature: "m" },
      Biggl: { signature: "m" },
      dot: { signature: "m" },
      ddot: { signature: "m" },
      hat: { signature: "m" },
      tilde: { signature: "m" },
      check: { signature: "m" },
      bar: { signature: "m" },
      widehat: { signature: "m" },
      widetilde: { signature: "m" },
      overset: { signature: "m m" },
      underset: { signature: "m m" },
      overbrace: { signature: "m" },
      overline: { signature: "m" },
      overparen: { signature: "m" },
      underbrace: { signature: "m" },
      underline: { signature: "m" },
      underparen: { signature: "m" },
      overrightarrow: { signature: "m" },
      overleftarrow: { signature: "m" },
      stackrel: { signature: "m m" },
      mathop: { signature: "m" },
      bf: { signature: "m" },
      textstyle: { signature: "m" }
      // color: { signature: 'm m' }, // This doesn't work, changing it below manually
    }
  }).processSync({ value });
  const content3 = file.result.content;
  const tree = { type: "math", content: content3 };
  return tree;
}
function walkLatex2(node3) {
  var _a6, _b, _c, _d2;
  if (node3.type === "whitespace" && !node3.content) {
    if (((_b = (_a6 = node3.position) === null || _a6 === void 0 ? void 0 : _a6.start) === null || _b === void 0 ? void 0 : _b.offset) !== void 0 && ((_d2 = (_c = node3.position) === null || _c === void 0 ? void 0 : _c.end) === null || _d2 === void 0 ? void 0 : _d2.offset) !== void 0) {
      const length = node3.position.end.offset - node3.position.start.offset;
      node3.content = " ".repeat(length);
    }
  }
  delete node3.position;
  if (Array.isArray(node3.content)) {
    const content3 = node3.content.map((n) => walkLatex2(n));
    let skip = 0;
    const parsed = content3.reduce((list6, next, i2, array) => {
      var _a7, _b2, _c2, _d3, _e, _f, _g;
      if (skip > 0) {
        skip -= 1;
        return list6;
      }
      if (next.type === "string" && (next.content === "_" || next.content === "^")) {
        const { args, nodesRemoved } = gobbleArguments(array.slice(i2 + 1), "m");
        next.type = "macro";
        next.args = args;
        skip += nodesRemoved;
      }
      if (next.type === "macro" && next.content === "color") {
        const { args, nodesRemoved } = gobbleArguments(array.slice(i2 + 1), "m");
        next.type = "macro";
        next.args = [...(_b2 = (_a7 = next.args) === null || _a7 === void 0 ? void 0 : _a7.slice(1)) !== null && _b2 !== void 0 ? _b2 : [], ...args];
        skip += nodesRemoved;
      }
      if (next.type === "macro" && next.content === "textstyle") {
        next.content = "text";
      }
      if (next.type === "macro" && (next.content === "overbrace" || next.content === "underbrace")) {
        const { args, nodesRemoved } = gobbleArguments(array.slice(i2 + 1), "m");
        if (args[0].content.length === 1 && args[0].content[0].type === "macro" && (args[0].content[0].content === "^" && next.content === "overbrace" || args[0].content[0].content === "_" && next.content === "underbrace")) {
          next.args = [...(_c2 = next.args) !== null && _c2 !== void 0 ? _c2 : [], ...args[0].content[0].args];
          skip += nodesRemoved;
        }
        if (args[0].content.length === 1 && args[0].content[0].type === "string" && (args[0].content[0].content === "^" && next.content === "overbrace" || args[0].content[0].content === "_" && next.content === "underbrace")) {
          const { args: doubleArgs, nodesRemoved: doubleNodesRemoved } = gobbleArguments(array.slice(i2 + 1), "m m");
          next.args = [...(_d3 = next.args) !== null && _d3 !== void 0 ? _d3 : [], doubleArgs[1]];
          skip += doubleNodesRemoved;
        }
      }
      if (next.type === "macro" && next.content === "middle" && ((_e = array[i2 + 1]) === null || _e === void 0 ? void 0 : _e.content) === "|") {
        skip += 1;
      }
      if (next.type === "group" && ((_g = (_f = next.content) === null || _f === void 0 ? void 0 : _f.find) === null || _g === void 0 ? void 0 : _g.call(_f, (n) => n.type === "macro" && n.content === "over"))) {
        const children = next.content;
        next.type = "macro";
        next.content = "frac";
        const index4 = children.findIndex((n) => n.type === "macro" && n.content === "over");
        next.args = [
          { type: "argument", content: children.slice(0, index4) },
          { type: "argument", content: children.slice(index4 + 1) }
        ];
      }
      list6.push(next);
      return list6;
    }, []);
    node3.content = parsed;
    return { ...node3, content: parsed };
  }
  if (Array.isArray(node3.args)) {
    const args = node3.args.map((n) => walkLatex2(n));
    node3.args = args;
    return { ...node3, args };
  }
  return node3;
}
var State4 = class {
  constructor(opts) {
    var _a6;
    this._scriptsSimplified = false;
    this._closeToken = [];
    this._currentFunctions = [];
    this._value = "";
    this.data = { writeOutBrackets: (_a6 = opts === null || opts === void 0 ? void 0 : opts.writeOutBrackets) !== null && _a6 !== void 0 ? _a6 : false };
  }
  get value() {
    return this._value;
  }
  useMacro(macro2) {
    if (!this.data.macros)
      this.data.macros = /* @__PURE__ */ new Set();
    this.data.macros.add(macro2);
  }
  addWhitespace() {
    const lastChar = this.value.slice(-1);
    if (!this._value)
      return;
    if (lastChar.match(/^(["\s_^{(-])$/))
      return;
    const lastTwoChar = this.value.slice(-2);
    if (!this._value || lastTwoChar === ")[" || lastTwoChar === "[$")
      return;
    this._value += " ";
  }
  write(str2) {
    if (!str2)
      return;
    if (Object.keys(BRACKETS).includes(str2) && this.data.inFunction && this.data.writeOutBrackets) {
      this.addWhitespace();
      this._value += BRACKETS[str2];
      return;
    }
    if (this._scriptsSimplified && str2 === "(") {
      this.addWhitespace();
    } else if (str2.match(/^([})_^.,;!])$/) || str2 === '\\"') {
    } else {
      this.addWhitespace();
    }
    this._scriptsSimplified = false;
    this._value += str2;
  }
  writeChildren(node3) {
    var _a6;
    if (!Array.isArray(node3 === null || node3 === void 0 ? void 0 : node3.content))
      return;
    (_a6 = node3.content) === null || _a6 === void 0 ? void 0 : _a6.forEach((n) => {
      writeTypst(n, this);
    });
  }
  get _currentFunction() {
    return this._currentFunctions.slice(-1)[0];
  }
  get _functionCount() {
    return this._currentFunctions.length;
  }
  openFunction(command, { openToken, closeToken } = {}) {
    if (command === "text") {
      this.addWhitespace();
    } else {
      this.write(command);
    }
    this._currentFunctions.push(command);
    this.data.inFunction = true;
    this._simplify = command === "_" || command === "^";
    this._lastFunction = this._value.length;
    this._value += openToken !== null && openToken !== void 0 ? openToken : command === "text" ? '"' : "(";
    this._closeToken.push(closeToken !== null && closeToken !== void 0 ? closeToken : command === "text" ? '"' : ")");
  }
  closeFunction() {
    this._value += this._closeToken.pop() || ")";
    this._currentFunctions.pop();
    this.data.inFunction = this._functionCount >= 1;
    if (!this._simplify)
      return;
    const simple = this._value.slice(this._lastFunction);
    if (simple.match(/^\([a-zA-Z0-9]*\)$/)) {
      this._value = this._value.slice(0, this._lastFunction) + simple.slice(1, -1);
      this._scriptsSimplified = true;
    }
  }
};
function convert5(state, node3) {
  if (node3.type === "macro" && typeof node3.content === "string") {
    const result = typstMacros[node3.content];
    const converted = typeof result === "function" ? result(state, node3) : result;
    return converted !== null && converted !== void 0 ? converted : node3.content;
  }
  return "";
}
function convertText(state, text7) {
  const result = typstStrings[text7];
  if (typeof result === "function")
    return result(state) || text7;
  return result || text7;
}
function writeTypst(node3, state = new State4()) {
  if (node3.type === "whitespace") {
    if (state._currentFunction === "text") {
      const whitespace4 = typeof node3.content === "string" ? node3.content : " ";
      state._value += whitespace4;
    }
    return state;
  } else if (node3.type === "string") {
    const val = node3.content;
    if (state._currentFunction === "text") {
      state.write(convertText(state, val));
    } else {
      val.split("").forEach((v) => {
        state.write(convertText(state, v));
      });
    }
  } else if (node3.type === "environment" && Array.isArray(node3.content)) {
    const env6 = typstEnvs[node3.env];
    env6 === null || env6 === void 0 ? void 0 : env6(state, node3);
  } else if (Array.isArray(node3.content)) {
    const wrapChildren2 = state.value.match(/([_^])$/) && node3.type === "group";
    if (wrapChildren2)
      state.openFunction("");
    state.writeChildren(node3);
    if (wrapChildren2)
      state.closeFunction();
  } else if (node3.type === "macro" && Array.isArray(node3.args)) {
    const converted = convert5(state, node3);
    if (node3.args.length === 0) {
      state.write(converted);
      return state;
    }
    state.openFunction(converted);
    node3.args.filter((n) => {
      if (Array.isArray(n.content) && n.content.length === 0)
        return false;
      return true;
    }).forEach((n, i2) => {
      if (i2 !== 0)
        state.write(",");
      writeTypst(n, state);
    });
    state.closeFunction();
  } else if (node3.type === "macro" && typeof node3.content === "string") {
    const converted = convert5(state, node3);
    state.write(converted !== null && converted !== void 0 ? converted : node3.content);
  }
  return state;
}
function postProcess(typst) {
  return typst.replace(/^(_|\^)/, '""$1').replace(/"([^"]*)"=/g, '"$1" =').replace(/(\d+)(?:\s+)(?=\d)/g, "$1");
}
function texToTypst(value, options) {
  const tree = parseLatex2(value);
  walkLatex2(tree);
  const state = writeTypst(tree, new State4({ writeOutBrackets: options === null || options === void 0 ? void 0 : options.writeOutBrackets }));
  const typstValue = postProcess(state.value);
  if ((options === null || options === void 0 ? void 0 : options.writeOutBrackets) || areBracketsBalanced(typstValue)) {
    return { value: typstValue, macros: state.data.macros };
  }
  return texToTypst(value, { writeOutBrackets: true });
}

// ../myst-to-typst/dist/math.js
function addMacrosToState2(value, state) {
  if (!state.options.math)
    return;
  Object.entries(state.options.math).forEach(([k, v]) => {
    var _a6;
    const key2 = texToTypst(k).value;
    if (value.includes(key2)) {
      const typstState = texToTypst(v.macro);
      state.data.mathPlugins[key2] = typstState.value;
      (_a6 = typstState.macros) === null || _a6 === void 0 ? void 0 : _a6.forEach((macro2) => {
        state.useMacro(macro2);
      });
    }
  });
}
function findCommandInMacro(macro2, command) {
  const escapedCommand = command.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
  const commandRe = new RegExp(`${escapedCommand}(?![a-zA-Z])`, "g");
  return [...macro2.matchAll(commandRe)].length > 0;
}
function replaceCommandInMacro(macro2, command, replaceValue) {
  const escapedCommand = command.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
  const commandRe = new RegExp(`${escapedCommand}(?![a-zA-Z])`, "g");
  return macro2.replaceAll(commandRe, replaceValue);
}
function resolveRecursiveCommands(plugins3) {
  let pluginsUpdated = false;
  const newPlugins = Object.fromEntries(Object.entries(plugins3).map(([command, value]) => {
    let newMacro = value.macro;
    Object.entries(plugins3).forEach(([c, { macro: m2 }]) => {
      if (findCommandInMacro(newMacro, c)) {
        if (command === c) {
        } else {
          newMacro = replaceCommandInMacro(newMacro, c, m2);
          pluginsUpdated = true;
        }
      }
    });
    return [command, { ...value, macro: newMacro }];
  }));
  if (pluginsUpdated)
    return resolveRecursiveCommands(newPlugins);
  return newPlugins;
}
var math5 = (node3, state) => {
  var _a6, _b;
  const mathValue = node3.typst || node3.value;
  const { value, macros: macros18 } = node3.typst ? { value: mathValue, macros: void 0 } : texToTypst(node3.value);
  macros18 === null || macros18 === void 0 ? void 0 : macros18.forEach((macro2) => {
    state.useMacro(macro2);
  });
  const { identifier: label } = (_a6 = normalizeLabel(node3.label)) !== null && _a6 !== void 0 ? _a6 : {};
  addMacrosToState2(value, state);
  state.ensureNewLine();
  if ((_b = node3.enumerator) === null || _b === void 0 ? void 0 : _b.endsWith(".1")) {
    state.write(`#set math.equation(numbering: "(${node3.enumerator})")
`);
    state.write(`#counter(math.equation).update(0)

`);
  }
  state.write(`$ ${value} $${label ? ` <${label}>` : ""}

`);
  state.ensureNewLine(true);
};
var inlineMath3 = (node3, state) => {
  const mathValue = node3.typst || node3.value;
  const { value, macros: macros18 } = node3.typst ? { value: mathValue, macros: void 0 } : texToTypst(node3.value);
  macros18 === null || macros18 === void 0 ? void 0 : macros18.forEach((macro2) => {
    state.useMacro(macro2);
  });
  addMacrosToState2(value, state);
  state.write(`$${value}$`);
};
var MATH_HANDLERS3 = { math: math5, inlineMath: inlineMath3 };
var math_default2 = MATH_HANDLERS3;

// ../myst-to-typst/dist/table.js
function countColumns(table5) {
  var _a6, _b;
  const firstRow = (_a6 = table5.children) === null || _a6 === void 0 ? void 0 : _a6.find((child) => child.type === "tableRow");
  const columns = (_b = firstRow === null || firstRow === void 0 ? void 0 : firstRow.children) === null || _b === void 0 ? void 0 : _b.filter((cell3) => cell3.type === "tableCell").reduce((val, cell3) => {
    var _a7;
    return val + ((_a7 = cell3.colspan) !== null && _a7 !== void 0 ? _a7 : 1);
  }, 0);
  return columns;
}
function isHeaderRow(node3) {
  var _a6;
  if (node3.type !== "tableRow")
    return false;
  return (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.filter((child) => child.type === "tableCell").every((child) => child.header);
}
function countHeaderRows(table5) {
  var _a6, _b;
  const headerRows = (_a6 = table5.children) === null || _a6 === void 0 ? void 0 : _a6.filter((child) => isHeaderRow(child));
  return (_b = headerRows === null || headerRows === void 0 ? void 0 : headerRows.length) !== null && _b !== void 0 ? _b : 0;
}
var tableHandler = (node3, state) => {
  const prevState = state.data.isInTable;
  state.data.isInTable = true;
  const command = state.data.isInFigure ? "tablex" : "#tablex";
  const columns = countColumns(node3);
  if (!columns) {
    fileError(state.file, "Unable to count table columns", {
      node: node3,
      source: "myst-to-typst"
    });
    return;
  }
  state.useMacro('#import "@preview/tablex:0.0.9": tablex, cellx, hlinex, vlinex');
  state.useMacro("#let tableStyle = (:)");
  state.useMacro("#let columnStyle = (:)");
  state.write(`${command}(columns: ${columns}, header-rows: ${countHeaderRows(node3)}, repeat-header: true, ..tableStyle, ..columnStyle,
`);
  state.renderChildren(node3, 1);
  state.write(")\n");
  state.data.isInTable = prevState;
};
var tableRowHandler = (node3, state) => {
  state.renderChildren(node3, 1);
};
var tableCellHandler = (node3, state) => {
  var _a6, _b;
  if (node3.rowspan || node3.colspan || node3.align || ((_a6 = node3.style) === null || _a6 === void 0 ? void 0 : _a6.backgroundColor)) {
    state.write("cellx(");
    if (node3.rowspan) {
      state.write(`rowspan: ${node3.rowspan}, `);
    }
    if (node3.colspan) {
      state.write(`colspan: ${node3.colspan}, `);
    }
    if (node3.align) {
      state.write(`align: ${node3.align}, `);
    }
    if ((_b = node3.style) === null || _b === void 0 ? void 0 : _b.backgroundColor) {
      const fill3 = node3.style.backgroundColor;
      const rgb = fill3.startsWith("#");
      state.write(`fill: ${rgb ? `rgb("${fill3}")` : fill3}, `);
    }
    state.write(")");
  }
  state.write("[\n");
  state.renderChildren(node3, 1);
  state.write("],\n");
};

// ../myst-to-typst/dist/proofs.js
var proof = `
#let proof(body, heading: [], kind: "proof", supplement: "Proof", labelName: none, color: blue, float: true) = {
  let stroke = 1pt + color.lighten(90%)
  let fill = color.lighten(90%)
  let title
  set figure.caption(position: top)
  set figure(placement: none)
  show figure.caption.where(body: heading): (it) => {
    block(width: 100%, stroke: stroke, fill: fill, inset: 8pt, it)
  }
  place(auto, float: float, block(width: 100%, [
    #figure(kind: kind, supplement: supplement, gap: 0pt, [
      #set align(left);
      #set figure.caption(position: bottom)
      #block(width: 100%, fill: luma(253), stroke: stroke, inset: 8pt)[#body]
    ], caption: heading)
    #if(labelName != none){label(labelName)}
  ]))
}`;
function writeProof(node3, state, kind) {
  state.useMacro(proof);
  const title = select("admonitionTitle", node3);
  const supplement = getDefaultCaptionSupplement(kind);
  state.write(`#proof(kind: "${kind}", supplement: "${supplement}", labelName: ${node3.identifier ? `"${node3.identifier}"` : "none"}`);
  if (title) {
    state.write(", heading: [");
    state.renderChildren(title);
    state.write("])[\n");
  } else {
    state.write(")[\n");
  }
  state.renderChildren(node3);
  state.write("]");
  state.ensureNewLine();
}
var proofHandlers = {
  proof(node3, state) {
    writeProof(node3, state, node3.kind || "proof");
  },
  exercise(node3, state) {
    writeProof(node3, state, "exercise");
  },
  solution(node3, state) {
    writeProof(node3, state, "solution");
  }
};

// ../myst-to-typst/dist/index.js
var admonition2 = `#let admonition(body, heading: none, color: blue) = {
  let stroke = (left: 2pt + color.darken(20%))
  let fill = color.lighten(80%)
  let title
  if heading != none {
    title = block(width: 100%, inset: (x: 8pt, y: 4pt), fill: fill, below: 0pt, radius: (top-right: 2pt))[#text(11pt, weight: "bold")[#heading]]
  }
  block(width: 100%, stroke: stroke, [
    #title
  #block(fill: luma(240), width: 100%, inset: 8pt, radius: (bottom-right: 2pt))[#body]
])
}`;
var admonitionMacros = {
  attention: "#let attentionBlock(body, heading: [Attention]) = admonition(body, heading: heading, color: yellow)",
  caution: "#let cautionBlock(body, heading: [Caution]) = admonition(body, heading: heading, color: yellow)",
  danger: "#let dangerBlock(body, heading: [Danger]) = admonition(body, heading: heading, color: red)",
  error: "#let errorBlock(body, heading: [Error]) = admonition(body, heading: heading, color: red)",
  hint: "#let hintBlock(body, heading: [Hint]) = admonition(body, heading: heading, color: green)",
  important: "#let importantBlock(body, heading: [Important]) = admonition(body, heading: heading, color: blue)",
  note: "#let noteBlock(body, heading: [Note]) = admonition(body, heading: heading, color: blue)",
  seealso: "#let seealsoBlock(body, heading: [See Also]) = admonition(body, heading: heading, color: green)",
  tip: "#let tipBlock(body, heading: [Tip]) = admonition(body, heading: heading, color: green)",
  warning: "#let warningBlock(body, heading: [Warning]) = admonition(body, heading: heading, color: yellow)"
};
var tabSet = `
#let tabSet(body) = {
  block(width: 100%, stroke: luma(240), [#body])
}`;
var tabItem = `
#let tabItem(body, heading: none) = {
  let title
  if heading != none {
    title = block(width: 100%, inset: (x: 8pt, y: 4pt), fill: luma(250))[#text(9pt, weight: "bold")[#heading]]
  }
  block(width: 100%, [
    #title
    #block(width: 100%, inset: (x: 8pt, bottom: 8pt))[#body]
  ])
}`;
var INDENT = "  ";
var linkHandler = (node3, state) => {
  const href = node3.url;
  state.write('#link("');
  state.write(hrefToLatexText2(href));
  state.write('")');
  if (node3.children.length && node3.children[0].value !== href) {
    state.write("[");
    state.renderChildren(node3);
    state.write("]");
  }
};
function prevCharacterIsText(parent2, node3) {
  var _a6, _b;
  const ind = (_a6 = parent2 === null || parent2 === void 0 ? void 0 : parent2.children) === null || _a6 === void 0 ? void 0 : _a6.findIndex((n) => n === node3);
  if (!ind)
    return false;
  const prev = (_b = parent2 === null || parent2 === void 0 ? void 0 : parent2.children) === null || _b === void 0 ? void 0 : _b[ind - 1];
  if (!(prev === null || prev === void 0 ? void 0 : prev.value))
    return false;
  return (prev === null || prev === void 0 ? void 0 : prev.type) === "text" && !!prev.value.match(/[a-zA-Z0-9\-_]$/) || false;
}
function nextCharacterIsText(parent2, node3) {
  var _a6, _b;
  const ind = (_a6 = parent2 === null || parent2 === void 0 ? void 0 : parent2.children) === null || _a6 === void 0 ? void 0 : _a6.findIndex((n) => n === node3);
  if (!ind)
    return false;
  const next = (_b = parent2 === null || parent2 === void 0 ? void 0 : parent2.children) === null || _b === void 0 ? void 0 : _b[ind + 1];
  if (!(next === null || next === void 0 ? void 0 : next.value))
    return false;
  return (next === null || next === void 0 ? void 0 : next.type) === "text" && !!next.value.match(/^[a-zA-Z0-9\-_]/) || false;
}
var handlers4 = {
  text(node3, state) {
    state.text(node3.value.replaceAll("\n", " "));
  },
  paragraph(node3, state) {
    const { identifier } = node3;
    const after = identifier ? ` <${identifier}>` : void 0;
    state.renderChildren(node3, 2, { after });
  },
  heading(node3, state) {
    const { depth, identifier, enumerated } = node3;
    state.write(`${Array(depth).fill("=").join("")} `);
    state.renderChildren(node3);
    if (enumerated !== false && identifier && !state.data.headingIdentifiers.includes(identifier)) {
      state.write(` <${identifier}>`);
      state.data.headingIdentifiers.push(identifier);
    }
    state.write("\n\n");
  },
  block(node3, state) {
    const metadataTags = getMetadataTags(node3);
    if (metadataTags.includes("no-typst"))
      return;
    if (metadataTags.includes("no-pdf"))
      return;
    if (node3.visibility === "remove" || node3.visibility === "hide")
      return;
    if (metadataTags.includes("page-break") || metadataTags.includes("new-page")) {
      state.write("#pagebreak(weak: true)\n");
    }
    state.renderChildren(node3, 2);
  },
  blockquote(node3, state) {
    if (state.data.isInBlockquote) {
      state.renderChildren(node3);
      return;
    }
    state.write("#quote(block: true)[");
    state.renderChildren(node3);
    state.write("]");
  },
  definitionList(node3, state) {
    let dedent = false;
    if (!state.data.definitionIndent) {
      state.data.definitionIndent = 2;
    } else {
      state.write(`#set terms(indent: ${state.data.definitionIndent}em)`);
      state.data.definitionIndent += 2;
      dedent = true;
    }
    state.renderChildren(node3, 1);
    state.data.definitionIndent -= 2;
    if (dedent)
      state.write(`#set terms(indent: ${state.data.definitionIndent - 2}em)
`);
  },
  definitionTerm(node3, state) {
    state.ensureNewLine();
    state.write("/ ");
    state.renderChildren(node3);
    state.write(": ");
  },
  definitionDescription(node3, state) {
    state.renderChildren(node3);
  },
  code(node3, state) {
    var _a6;
    if (node3.visibility === "remove" || node3.visibility === "hide")
      return;
    let ticks = "```";
    while (node3.value.includes(ticks)) {
      ticks += "`";
    }
    const start = `${ticks}${(_a6 = node3.lang) !== null && _a6 !== void 0 ? _a6 : ""}
`;
    const end = `
${ticks}`;
    state.write(start);
    state.write(node3.value);
    state.write(end);
    state.ensureNewLine(true);
    state.addNewLine();
  },
  list(node3, state) {
    var _a6;
    var _b;
    const setStart = node3.ordered && node3.start && node3.start !== 1;
    if (setStart) {
      state.write(`#set enum(start: ${node3.start})`);
    }
    (_a6 = (_b = state.data).list) !== null && _a6 !== void 0 ? _a6 : _b.list = { env: [] };
    state.data.list.env.push(node3.ordered ? "+" : "-");
    state.renderChildren(node3, setStart ? 1 : 2);
    state.data.list.env.pop();
    if (setStart) {
      state.write("#set enum(start: 1)\n\n");
    }
  },
  listItem(node3, state) {
    var _a6, _b, _c;
    const listEnv = (_b = (_a6 = state.data.list) === null || _a6 === void 0 ? void 0 : _a6.env) !== null && _b !== void 0 ? _b : [];
    const tabs = Array(Math.max(listEnv.length - 1, 0)).fill(INDENT).join("");
    const env6 = (_c = listEnv.slice(-1)[0]) !== null && _c !== void 0 ? _c : "-";
    state.ensureNewLine();
    state.write(`${tabs}${env6} `);
    state.renderChildren(node3, 1);
  },
  thematicBreak(node3, state) {
    state.write("#line(length: 100%, stroke: gray)\n\n");
  },
  ...math_default2,
  mystRole(node3, state) {
    state.renderChildren(node3);
  },
  mystDirective(node3, state) {
    state.renderChildren(node3, 2);
  },
  comment(node3, state) {
    var _a6, _b;
    state.ensureNewLine();
    if ((_a6 = node3.value) === null || _a6 === void 0 ? void 0 : _a6.includes("\n")) {
      state.write(`/*
${node3.value}
*/

`);
    } else {
      state.write(`// ${(_b = node3.value) !== null && _b !== void 0 ? _b : ""}

`);
    }
  },
  strong(node3, state, parent2) {
    const prev = prevCharacterIsText(parent2, node3);
    const next = nextCharacterIsText(parent2, node3);
    if (nodeOnlyHasTextChildren(node3) && !(prev || next)) {
      state.write("*");
      state.renderChildren(node3);
      state.write("*");
    } else {
      state.renderInlineEnvironment(node3, "strong");
    }
  },
  emphasis(node3, state, parent2) {
    const prev = prevCharacterIsText(parent2, node3);
    const next = nextCharacterIsText(parent2, node3);
    if (nodeOnlyHasTextChildren(node3) && !prev && !next) {
      state.write("_");
      state.renderChildren(node3);
      state.write("_");
    } else {
      state.renderInlineEnvironment(node3, "emph");
    }
  },
  underline(node3, state) {
    state.renderInlineEnvironment(node3, "underline");
  },
  smallcaps(node3, state) {
    state.renderInlineEnvironment(node3, "smallcaps");
  },
  inlineCode(node3, state) {
    let ticks = "`";
    const value = toText(node3);
    while (ticks === "``" || value.includes(ticks)) {
      ticks += "`";
    }
    state.write(ticks);
    if (value.startsWith("`"))
      state.write(" ");
    state.write(value);
    if (value.endsWith("`"))
      state.write(" ");
    state.write(ticks);
  },
  subscript(node3, state) {
    state.renderInlineEnvironment(node3, "sub");
  },
  superscript(node3, state) {
    state.renderInlineEnvironment(node3, "super");
  },
  delete(node3, state) {
    state.renderInlineEnvironment(node3, "strike");
  },
  break(node3, state) {
    state.write(" \\");
    state.ensureNewLine();
  },
  abbreviation(node3, state) {
    state.renderChildren(node3);
  },
  inlineExpression(node3, state) {
    fileWarn(state.file, "inlineExpression rendering in typst is in beta", {
      node: node3,
      note: "Rendering will work only for text nodes"
    });
    state.renderChildren(node3);
  },
  link: linkHandler,
  admonition(node3, state) {
    state.useMacro(admonition2);
    state.ensureNewLine();
    const title = select("admonitionTitle", node3);
    if (!node3.kind) {
      fileError(state.file, `Unknown admonition kind`, {
        node: node3,
        source: "myst-to-typst"
      });
      return;
    }
    state.useMacro(admonitionMacros[node3.kind]);
    state.write(`#${node3.kind}Block`);
    if (title && toText(title).toLowerCase().replaceAll(" ", "") !== node3.kind) {
      state.write("(heading: [");
      state.renderChildren(title);
      state.write("])");
    }
    state.write("[\n");
    state.renderChildren(node3);
    state.write("\n]\n\n");
  },
  admonitionTitle() {
    return;
  },
  table: tableHandler,
  tableRow: tableRowHandler,
  tableCell: tableCellHandler,
  image(node3, state) {
    const { width: nodeWidth, url: nodeSrc, align } = node3;
    const src = nodeSrc;
    const width = getLatexImageWidth2(nodeWidth);
    const command = state.data.isInTable || !state.data.isInFigure ? "#image" : "image";
    state.write(`${command}("${src}"`);
    if (!state.data.isInTable) {
      state.write(`, width: ${width}`);
    }
    state.write(")\n\n");
  },
  iframe(node3, state) {
    var _a6;
    const image6 = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6[0];
    if (!image6 || image6.placeholder !== true)
      return;
    const { width: nodeWidth, url: nodeSrc, align } = image6;
    const src = nodeSrc;
    const width = getLatexImageWidth2(nodeWidth);
    state.write(`#image("${src}"`);
    if (!state.data.isInTable) {
      state.write(`, width: ${width}`);
    }
    state.write(")\n\n");
  },
  container: containerHandler2,
  caption: captionHandler2,
  legend: captionHandler2,
  captionNumber: () => void 0,
  crossReference(node3, state, parent2) {
    var _a6;
    if (node3.remoteBaseUrl) {
      const url = node3.remoteBaseUrl + (node3.url === "/" ? "" : (_a6 = node3.url) !== null && _a6 !== void 0 ? _a6 : "") + (node3.html_id ? `#${node3.html_id}` : "");
      linkHandler({ ...node3, url }, state);
      return;
    }
    const id = node3.identifier;
    if (node3.children && node3.children.length > 0) {
      state.write(`#link(<${id}>)[`);
      state.renderChildren(node3);
      state.write("]");
    } else {
      const next = nextCharacterIsText(parent2, node3);
      state.write(next ? `#[@${id}]` : `@${id}`);
    }
  },
  citeGroup(node3, state) {
    state.renderChildren(node3, 0, { delim: " " });
  },
  cite(node3, state) {
    const needsLabel = !/^[a-zA-Z0-9_\-:.]+$/.test(node3.label);
    const label = needsLabel ? `label("${node3.label}")` : `<${node3.label}>`;
    state.write(`#cite(${label}`);
    if (node3.kind === "narrative")
      state.write(`, form: "prose"`);
    if (node3.suffix)
      state.write(`, supplement: [${node3.suffix}]`);
    state.write(`)`);
  },
  embed(node3, state) {
    state.renderChildren(node3, 2);
  },
  include(node3, state) {
    state.renderChildren(node3, 2);
  },
  footnoteReference(node3, state) {
    if (!node3.identifier)
      return;
    const footnote2 = state.footnotes[node3.identifier];
    if (!footnote2) {
      fileError(state.file, `Unknown footnote identifier "${node3.identifier}"`, {
        node: node3,
        source: "myst-to-typst"
      });
      return;
    }
    state.write("#footnote[");
    state.renderChildren(footnote2);
    state.write("]");
  },
  footnoteDefinition() {
  },
  // si(node, state) {
  //   // state.useMacro('siunitx');
  //   if (node.number == null) {
  //     state.write(`\\unit{${node.units?.map((u: string) => `\\${u}`).join('') ?? ''}}`);
  //   } else {
  //     state.write(
  //       `\\qty{${node.number}}{${node.units?.map((u: string) => `\\${u}`).join('') ?? ''}}`,
  //     );
  //   }
  // },
  div(node3, state) {
    state.renderChildren(node3, 1);
  },
  span(node3, state) {
    state.renderChildren(node3, 0, { trimEnd: false });
  },
  raw(node3, state) {
    var _a6;
    if (node3.typst) {
      state.write(node3.typst);
    } else if ((_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.length) {
      state.renderChildren(node3, void 0, { trimEnd: false });
    }
  },
  tabSet(node3, state) {
    state.useMacro(tabSet);
    state.write("#tabSet[\n");
    state.renderChildren(node3);
    state.write("\n]\n\n");
  },
  tabItem(node3, state) {
    state.useMacro(tabItem);
    state.ensureNewLine();
    const title = node3.title;
    state.write(`#tabItem(heading: [${title}])[
`);
    state.renderChildren(node3);
    state.write("\n]\n\n");
  },
  toc(node3, state) {
    var _a6;
    const title = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6[0];
    state.write("#outline(");
    if (node3.depth) {
      state.write(`depth: ${node3.depth},
`);
    }
    if (title) {
      state.write("title: [");
      state.text(toText(title));
      state.write("],\n");
    }
    state.write(")\n\n");
  },
  card(node3, state) {
    var _a6;
    if (node3.url) {
      (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.push({ type: "paragraph", children: [{ type: "text", value: node3.url }] });
    }
    state.renderChildren(node3);
    state.ensureNewLine();
    state.write("\n");
  },
  cardTitle(node3, state) {
    state.write("*");
    state.renderChildren(node3);
    state.write("*");
    state.ensureNewLine();
    state.write("\n");
  },
  root(node3, state) {
    state.renderChildren(node3);
  },
  footer() {
    return;
  },
  ...proofHandlers
};
var TypstSerializer = class {
  constructor(file, tree, opts) {
    var _a6;
    file.result = "";
    this.file = file;
    const { math: math7, ...otherOpts } = opts !== null && opts !== void 0 ? opts : {};
    this.options = { ...otherOpts };
    if (math7)
      this.options.math = resolveRecursiveCommands(math7);
    this.data = { mathPlugins: {}, macros: /* @__PURE__ */ new Set(), headingIdentifiers: [] };
    this.handlers = (_a6 = opts === null || opts === void 0 ? void 0 : opts.handlers) !== null && _a6 !== void 0 ? _a6 : handlers4;
    this.footnotes = Object.fromEntries(selectAll("footnoteDefinition", tree).map((node3) => {
      const fn = node3;
      return [fn.identifier, fn];
    }));
    this.renderChildren(tree);
  }
  get out() {
    return this.file.result;
  }
  useMacro(macro2) {
    this.data.macros.add(macro2);
  }
  write(value) {
    this.file.result += value;
  }
  text(value, mathMode = false) {
    const escaped = mathMode ? stringToTypstMath(value) : stringToTypstText(value);
    this.write(escaped);
  }
  trimEnd() {
    this.file.result = this.out.trimEnd();
  }
  addNewLine() {
    this.write("\n");
  }
  ensureNewLine(trim2 = false) {
    if (trim2)
      this.trimEnd();
    if (this.out.endsWith("\n"))
      return;
    this.addNewLine();
  }
  renderChildren(node3, trailingNewLines = 0, opts = {}) {
    var _a6, _b, _c;
    if (Array.isArray(node3)) {
      this.renderChildren({ children: node3 }, trailingNewLines, opts);
      return;
    }
    const { delim = "", trimEnd: trimEnd2 = true, after } = opts;
    const numChildren = (_b = (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.length) !== null && _b !== void 0 ? _b : 0;
    (_c = node3.children) === null || _c === void 0 ? void 0 : _c.forEach((child, index4) => {
      if (!child)
        return;
      const handler = this.handlers[child === null || child === void 0 ? void 0 : child.type];
      if (handler) {
        handler(child, this, node3);
      } else {
        fileError(this.file, `Unhandled Typst conversion for node of "${child === null || child === void 0 ? void 0 : child.type}"`, {
          node: child,
          source: "myst-to-typst"
        });
      }
      if (delim && index4 + 1 < numChildren)
        this.write(delim);
    });
    if (trimEnd2)
      this.trimEnd();
    if (after)
      this.write(after);
    for (let i2 = trailingNewLines; i2--; )
      this.addNewLine();
  }
  renderEnvironment(node3, env6) {
    this.file.result += `#${env6}[
`;
    this.renderChildren(node3, 1);
    this.file.result += `]

`;
  }
  renderInlineEnvironment(node3, env6) {
    this.file.result += `#${env6}[`;
    this.renderChildren(node3);
    this.file.result += "]";
  }
};
var plugin3 = function(opts) {
  this.Compiler = (node3, file) => {
    const state = new TypstSerializer(file, node3, opts !== null && opts !== void 0 ? opts : { handlers: handlers4 });
    const tex = file.result.trim();
    const result = {
      macros: [...state.data.macros],
      commands: state.data.mathPlugins,
      value: tex
    };
    file.result = result;
    return file;
  };
  return (node3) => {
    return node3;
  };
};
var dist_default4 = plugin3;

// ../myst-cli/dist/build/typst.js
var DEFAULT_BIB_FILENAME2 = "main.bib";
var TYPST_IMAGE_EXTENSIONS = [
  ImageExtensions.svg,
  ImageExtensions.png,
  ImageExtensions.jpg,
  ImageExtensions.jpeg
];
function isTypstAvailable() {
  return import_which6.default.sync("typst", { nothrow: true });
}
async function runTypstExecutable(session, typstFile) {
  if (!isTypstAvailable()) {
    throw new Error("The typst CLI must be installed to build PDFs with typst");
  }
  if (import_node_path46.default.extname(typstFile) !== ".typ") {
    throw new Error(`invalid input file for typst executable: ${typstFile}`);
  }
  session.log.debug("Running typst compile");
  await makeExecutable(`typst compile "${typstFile}"`, session.log)();
}
function mdastToTypst(session, mdast2, references, frontmatter, templateYml, printGlossaries) {
  const pipe = unified().use(dist_default4, {
    math: frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.math
    // citestyle: templateYml?.style?.citation,
    // bibliography: templateYml?.style?.bibliography,
    // printGlossaries,
    // references,
    // ...frontmatter.settings?.myst_to_tex,
  });
  const result = pipe.runSync(mdast2);
  const typ = pipe.stringify(result);
  logMessagesFromVFile(session, typ);
  return typ.result;
}
function extractTypstPart(session, mdast2, references, partDefinition, frontmatter, templateYml) {
  var _a6, _b;
  const part = extractPart(mdast2, partDefinition.id, {
    frontmatterParts: resolveFrontmatterParts(session, frontmatter)
  });
  if (!part)
    return void 0;
  if (!partDefinition.as_list) {
    return mdastToTypst(session, part, references, frontmatter, templateYml, false);
  }
  if (part.children.length === 1 && ((_b = (_a6 = part.children[0]) === null || _a6 === void 0 ? void 0 : _a6.children) === null || _b === void 0 ? void 0 : _b.length) === 1 && part.children[0].children[0].type === "list") {
    const items = selectAll("listItem", part);
    return items.map((item) => {
      return mdastToTypst(session, { type: "root", children: item.children }, references, frontmatter, templateYml, false);
    });
  }
  return part.children.map((block5) => {
    return mdastToTypst(session, { type: "root", children: [block5] }, references, frontmatter, templateYml, false);
  });
}
function titleToTypstHeading(session, title, depth = 1) {
  const headingMdast = {
    type: "root",
    children: [
      {
        type: "heading",
        depth,
        children: [{ type: "text", value: title }]
      }
    ]
  };
  const content3 = mdastToTypst(session, headingMdast, {}, {}, null, false);
  return content3.value;
}
async function localArticleToTypstRaw(session, templateOptions, opts) {
  const { articles, output: output2 } = templateOptions;
  const { projectPath, extraLinkTransformers, execute } = opts !== null && opts !== void 0 ? opts : {};
  const fileArticles = articlesWithFile(articles);
  const content3 = await getFileContent(session, fileArticles.map((article) => article.file), {
    projectPath,
    imageExtensions: TYPST_IMAGE_EXTENSIONS,
    extraLinkTransformers,
    titleDepths: fileArticles.map((article) => article.level),
    preFrontmatters: fileArticles.map((article) => filterKeys(article, [...PAGE_FRONTMATTER_KEYS, ...Object.keys(FRONTMATTER_ALIASES)])),
    execute
  });
  const toc = tic();
  const results = await Promise.all(content3.map(async ({ mdast: mdast2, frontmatter, references }, ind) => {
    await finalizeMdast(session, mdast2, frontmatter, fileArticles[ind].file, {
      imageWriteFolder: import_node_path46.default.join(import_node_path46.default.dirname(output2), "files"),
      imageAltOutputFolder: "files/",
      imageExtensions: TYPST_IMAGE_EXTENSIONS,
      simplifyFigures: true
    });
    return mdastToTypst(session, mdast2, references, frontmatter, null, false);
  }));
  session.log.info(toc(`\u{1F4D1} Exported typst in %s, copying to ${output2}`));
  if (results.length === 1) {
    writeFileToFolder(output2, results[0].value);
  } else {
    const { dir, name: name3, ext: ext2 } = import_node_path46.default.parse(output2);
    let includeContent = "";
    let fileInd = 0;
    let addPageBreak = false;
    articles.forEach((article) => {
      var _a6, _b, _c, _d2;
      if (addPageBreak)
        includeContent += "#pagebreak()\n\n";
      addPageBreak = false;
      if (article.file) {
        const base5 = `${name3}-${(_b = (_a6 = content3[fileInd]) === null || _a6 === void 0 ? void 0 : _a6.slug) !== null && _b !== void 0 ? _b : fileInd}${ext2}`;
        const includeFile = import_node_path46.default.format({ dir, ext: ext2, base: base5 });
        let part = "";
        const { title, content_includes_title } = (_d2 = (_c = content3[fileInd]) === null || _c === void 0 ? void 0 : _c.frontmatter) !== null && _d2 !== void 0 ? _d2 : {};
        if (title && !content_includes_title) {
          part = `${titleToTypstHeading(session, title, article.level)}

`;
        }
        writeFileToFolder(includeFile, `${part}${results[fileInd].value}`);
        includeContent += `#include "${base5}"

`;
        fileInd++;
        addPageBreak = true;
      } else if (article.title) {
        includeContent += `${titleToTypstHeading(session, article.title, article.level)}

`;
      }
    });
    writeFileToFolder(output2, includeContent);
  }
  await runTypstExecutable(session, output2);
  return { tempFolders: [] };
}
async function localArticleToTypstTemplated(session, file, templateOptions, opts) {
  var _a6;
  const { output: output2, articles, template } = templateOptions;
  const { projectPath, extraLinkTransformers, clean: clean3, ci, execute } = opts !== null && opts !== void 0 ? opts : {};
  const filesPath = import_node_path46.default.join(import_node_path46.default.dirname(output2), "files");
  const fileArticles = articlesWithFile(articles);
  const content3 = await getFileContent(session, fileArticles.map((article) => article.file), {
    projectPath,
    imageExtensions: TYPST_IMAGE_EXTENSIONS,
    extraLinkTransformers,
    titleDepths: fileArticles.map((article) => article.level),
    preFrontmatters: fileArticles.map((article) => filterKeys(article, [...PAGE_FRONTMATTER_KEYS, ...Object.keys(FRONTMATTER_ALIASES)])),
    execute
  });
  const bibtexWritten = writeBibtexFromCitationRenderers(session, import_node_path46.default.join(import_node_path46.default.dirname(output2), DEFAULT_BIB_FILENAME2), content3);
  const warningLogFn = (message) => {
    addWarningForFile(session, file, message, "warn", {
      ruleId: RuleId.texRenders
    });
  };
  const mystTemplate = new dist_default2(session, {
    kind: TemplateKind.typst,
    template: template || void 0,
    buildDir: session.buildPath(),
    errorLogFn: (message) => {
      addWarningForFile(session, file, message, "error", {
        ruleId: RuleId.texRenders
      });
    },
    warningLogFn
  });
  await mystTemplate.ensureTemplateExistsOnPath();
  const toc = tic();
  const templateYml = mystTemplate.getValidatedTemplateYml();
  const partDefinitions = (templateYml === null || templateYml === void 0 ? void 0 : templateYml.parts) || [];
  const parts = {};
  let collected = {
    macros: [],
    commands: {}
  };
  const state = session.store.getState();
  const projectFrontmatter = (_a6 = selectors_exports.selectLocalProjectConfig(state, projectPath !== null && projectPath !== void 0 ? projectPath : ".")) !== null && _a6 !== void 0 ? _a6 : {};
  if (file === selectors_exports.selectCurrentProjectFile(state)) {
    partDefinitions.forEach((def) => {
      var _a7;
      const part = extractTypstPart(session, { type: "root", children: [] }, {}, def, projectFrontmatter, templateYml);
      if (Array.isArray(part)) {
        part.forEach((item) => {
          collected = mergeTypstTemplateImports(collected, item);
        });
        parts[def.id] = part.map(({ value }) => value);
      } else if (part != null) {
        collected = mergeTypstTemplateImports(collected, part);
        parts[def.id] = (_a7 = part === null || part === void 0 ? void 0 : part.value) !== null && _a7 !== void 0 ? _a7 : "";
      }
    });
  }
  const hasGlossaries = false;
  const results = await Promise.all(content3.map(async ({ mdast: mdast2, frontmatter: frontmatter2, references }, ind) => {
    await finalizeMdast(session, mdast2, frontmatter2, fileArticles[ind].file, {
      imageWriteFolder: filesPath,
      imageAltOutputFolder: "files/",
      imageExtensions: TYPST_IMAGE_EXTENSIONS,
      simplifyFigures: true
    });
    partDefinitions.forEach((def) => {
      var _a7;
      const part = extractTypstPart(session, mdast2, references, def, frontmatter2, templateYml);
      if (part && parts[def.id]) {
        addWarningForFile(session, file, `multiple values for part '${def.id}' found; ignoring value from ${fileArticles[ind].file}`, "error", { ruleId: RuleId.texRenders });
      } else if (Array.isArray(part)) {
        part.forEach((item) => {
          collected = mergeTypstTemplateImports(collected, item);
        });
        parts[def.id] = part.map(({ value }) => value);
      } else if (part != null) {
        collected = mergeTypstTemplateImports(collected, part);
        parts[def.id] = (_a7 = part === null || part === void 0 ? void 0 : part.value) !== null && _a7 !== void 0 ? _a7 : "";
      }
    });
    const result = mdastToTypst(session, mdast2, references, frontmatter2, templateYml, true);
    collected = mergeTypstTemplateImports(collected, result);
    return result;
  }));
  let frontmatter;
  let typstContent;
  const versionComment = ci ? "" : `/* Written by MyST v${version_default2} */

`;
  if (results.length === 1) {
    frontmatter = content3[0].frontmatter;
    typstContent = results[0].value;
  } else {
    frontmatter = projectFrontmatter;
    const { dir, name: name3, ext: ext2 } = import_node_path46.default.parse(output2);
    typstContent = "";
    let fileInd = 0;
    let addPageBreak = false;
    articles.forEach((article) => {
      var _a7, _b, _c, _d2;
      if (addPageBreak)
        typstContent += "#pagebreak()\n\n";
      addPageBreak = false;
      if (article.file) {
        const base5 = `${name3}-${(_b = (_a7 = content3[fileInd]) === null || _a7 === void 0 ? void 0 : _a7.slug) !== null && _b !== void 0 ? _b : fileInd}${ext2}`;
        const includeFile = import_node_path46.default.format({ dir, ext: ext2, base: base5 });
        const exports2 = renderTypstImports(false, collected);
        let part = "";
        const { title, content_includes_title } = (_d2 = (_c = content3[fileInd]) === null || _c === void 0 ? void 0 : _c.frontmatter) !== null && _d2 !== void 0 ? _d2 : {};
        if (title && !content_includes_title) {
          part = `${titleToTypstHeading(session, title, article.level)}

`;
        }
        writeFileToFolder(includeFile, `${versionComment}${exports2}

${part}${results[fileInd].value}`);
        typstContent += `#include "${base5}"

`;
        fileInd++;
        addPageBreak = true;
      } else if (article.title) {
        typstContent += `${titleToTypstHeading(session, article.title, article.level)}

`;
      }
    });
  }
  const vfile2 = new VFile();
  vfile2.path = file;
  const exportFrontmatter = validateProjectFrontmatter(filterKeys(templateOptions, [...PROJECT_FRONTMATTER_KEYS, ...Object.keys(FRONTMATTER_ALIASES)]), frontmatterValidationOpts(vfile2));
  logMessagesFromVFile(session, vfile2);
  frontmatter = { ...frontmatter, ...exportFrontmatter };
  typstContent = `${versionComment}${typstContent}`;
  session.log.info(toc(`\u{1F4D1} Exported typst in %s, copying to ${output2}`));
  renderTemplate(mystTemplate, {
    contentOrPath: typstContent,
    outputPath: output2,
    frontmatter,
    parts,
    options: { ...frontmatter.options, ...templateOptions },
    bibliography: bibtexWritten ? DEFAULT_BIB_FILENAME2 : void 0,
    sourceFile: file,
    imports: collected,
    force: clean3,
    packages: templateYml.packages,
    filesPath,
    removeVersionComment: ci
  });
  await runTypstExecutable(session, output2);
  return { tempFolders: [], hasGlossaries };
}
async function runTypstExport(session, file, exportOptions, opts) {
  if (opts === null || opts === void 0 ? void 0 : opts.clean)
    cleanOutput(session, exportOptions.output);
  let result;
  if (exportOptions.template === null) {
    result = await localArticleToTypstRaw(session, exportOptions, opts);
  } else {
    result = await localArticleToTypstTemplated(session, file, exportOptions, opts);
  }
  return result;
}
async function runTypstZipExport(session, file, exportOptions, opts) {
  if (opts === null || opts === void 0 ? void 0 : opts.clean)
    cleanOutput(session, exportOptions.output);
  const zipOutput = exportOptions.output;
  const typFolder = createTempFolder(session);
  exportOptions.output = import_node_path46.default.join(typFolder, `${import_node_path46.default.basename(zipOutput, import_node_path46.default.extname(zipOutput))}.typ`);
  await runTypstExport(session, file, exportOptions, { ...opts !== null && opts !== void 0 ? opts : {}, clean: false });
  session.log.info(`\u{1F910} Zipping typst outputs to ${zipOutput}`);
  const zip2 = new import_adm_zip3.default();
  zip2.addLocalFolder(typFolder);
  zip2.writeZip(zipOutput);
  return { tempFolders: [typFolder] };
}
async function runTypstPdfExport(session, file, exportOptions, opts) {
  if (opts === null || opts === void 0 ? void 0 : opts.clean)
    cleanOutput(session, exportOptions.output);
  const pdfOutput = exportOptions.output;
  const typFolder = createTempFolder(session);
  exportOptions.output = import_node_path46.default.join(typFolder, `${import_node_path46.default.basename(pdfOutput, import_node_path46.default.extname(pdfOutput))}.typ`);
  await runTypstExport(session, file, exportOptions, { ...opts !== null && opts !== void 0 ? opts : {}, clean: false });
  const writeFolder = import_node_path46.default.dirname(pdfOutput);
  session.log.info(`\u{1F5A8}  Rendering typst pdf to ${pdfOutput}`);
  if (!import_node_fs36.default.existsSync(writeFolder))
    import_node_fs36.default.mkdirSync(writeFolder, { recursive: true });
  import_node_fs36.default.copyFileSync(exportOptions.output.replace(".typ", ".pdf"), pdfOutput);
  return { tempFolders: [typFolder] };
}

// ../myst-cli/dist/build/docx/single.js
var import_node_fs38 = __toESM(require("fs"), 1);
var import_node_path47 = __toESM(require("path"), 1);

// ../myst-to-docx/dist/serializer.js
var import_docx4 = __toESM(require_build(), 1);

// ../myst-to-docx/dist/schema.js
var import_docx3 = __toESM(require_build(), 1);

// ../myst-to-docx/dist/utils.js
var import_docx = __toESM(require_build(), 1);
function createShortId() {
  return Math.random().toString(36).slice(2);
}
function createDocFromState(state, footer2, styles14) {
  const { title, description, keywords } = state.frontmatter;
  const doc = new import_docx.Document({
    title,
    description,
    keywords: keywords === null || keywords === void 0 ? void 0 : keywords.join(", "),
    footnotes: state.footnotes,
    numbering: {
      config: state.numbering
    },
    sections: [
      {
        properties: {
          type: import_docx.SectionType.CONTINUOUS
        },
        children: state.children,
        footers: footer2 ? { default: footer2 } : void 0
      }
    ],
    externalStyles: styles14
  });
  return doc;
}
async function writeDocx(doc, write3) {
  const buffer2 = await import_docx.Packer.toBuffer(doc);
  return write3(buffer2);
}
var DEFAULT_IMAGE_WIDTH3 = 70;
var DEFAULT_PAGE_WIDTH_PIXELS3 = 800;
var MAX_DOCX_IMAGE_WIDTH = 600;
function getImageWidth(width, maxWidth = MAX_DOCX_IMAGE_WIDTH) {
  if (typeof width === "number" && Number.isNaN(width)) {
    return getImageWidth(DEFAULT_IMAGE_WIDTH3);
  }
  if (typeof width === "string") {
    if (width.endsWith("%")) {
      return getImageWidth(Number(width.replace("%", "")));
    } else if (width.endsWith("px")) {
      return getImageWidth(Number(width.replace("px", "")) / DEFAULT_PAGE_WIDTH_PIXELS3);
    }
    console.log(`Unknown width ${width} in getImageWidth`);
    return getImageWidth(DEFAULT_IMAGE_WIDTH3);
  }
  let lineWidth = width !== null && width !== void 0 ? width : DEFAULT_IMAGE_WIDTH3;
  if (lineWidth < 1)
    lineWidth *= 100;
  if (lineWidth > 100)
    lineWidth = 100;
  return lineWidth / 100 * maxWidth;
}
function createReferenceBookmark(id, kind, before, after) {
  const textBefore = before ? [new import_docx.TextRun(before)] : [];
  const textAfter = after ? [new import_docx.TextRun(after)] : [];
  return new import_docx.Bookmark({
    id,
    children: [...textBefore, new import_docx.SequentialIdentifier(kind), ...textAfter]
  });
}
function createReference(id, before, after) {
  const children = [];
  if (before)
    children.push(new import_docx.TextRun(before));
  children.push(new import_docx.SimpleField(`REF ${id} \\h`));
  if (after)
    children.push(new import_docx.TextRun(after));
  const ref = new import_docx.InternalHyperlink({ anchor: id, children });
  return ref;
}

// ../myst-to-docx/dist/numbering.js
var import_docx2 = __toESM(require_build(), 1);
function basicIndentStyle(indent2) {
  return {
    alignment: import_docx2.AlignmentType.START,
    style: {
      paragraph: {
        indent: { left: (0, import_docx2.convertInchesToTwip)(indent2), hanging: (0, import_docx2.convertInchesToTwip)(0.18) }
      }
    }
  };
}
var numbered = Array(3).fill([import_docx2.LevelFormat.DECIMAL, import_docx2.LevelFormat.LOWER_LETTER, import_docx2.LevelFormat.LOWER_ROMAN]).flat().map((format, level) => ({
  level,
  format,
  text: `%${level + 1}.`,
  ...basicIndentStyle((level + 1) / 2)
}));
var bullets = Array(3).fill(["\u25CF", "\u25CB", "\u25A0"]).flat().map((text7, level) => ({
  level,
  format: import_docx2.LevelFormat.BULLET,
  text: text7,
  ...basicIndentStyle((level + 1) / 2)
}));
var styles8 = {
  numbered,
  bullets
};
function createNumbering(reference, style3) {
  return {
    reference,
    levels: styles8[style3]
  };
}

// ../myst-to-docx/dist/schema.js
var import_buffer_image_size = __toESM(require_lib18(), 1);
var text5 = (state, node3) => {
  var _a6;
  state.text((_a6 = node3.value) !== null && _a6 !== void 0 ? _a6 : "");
};
var paragraph2 = (state, node3) => {
  state.renderChildren(node3);
  state.closeBlock();
};
var block3 = (state, node3) => {
  if (node3.visibility === "remove" || node3.visibility === "hide")
    return;
  const metadataTags = getMetadataTags(node3);
  if (metadataTags.includes("page-break") || metadataTags.includes("new-page")) {
    state.current.push(new import_docx3.PageBreak());
  }
  state.renderChildren(node3);
};
var heading4 = (state, node3) => {
  if (!state.options.useFieldsForCrossReferences && node3.enumerator) {
    state.text(`${node3.enumerator}	`);
  } else {
  }
  state.renderChildren(node3);
  const headingLevel = [
    import_docx3.HeadingLevel.HEADING_1,
    import_docx3.HeadingLevel.HEADING_2,
    import_docx3.HeadingLevel.HEADING_3,
    import_docx3.HeadingLevel.HEADING_4,
    import_docx3.HeadingLevel.HEADING_5,
    import_docx3.HeadingLevel.HEADING_6
  ][node3.depth - 1];
  state.closeBlock({ heading: headingLevel });
};
var emphasis2 = (state, node3) => {
  state.addRunOptions({ italics: true });
  state.renderChildren(node3);
};
var strong3 = (state, node3) => {
  state.addRunOptions({ bold: true });
  state.renderChildren(node3);
};
var list4 = (state, node3) => {
  const style3 = node3.ordered ? "numbered" : "bullets";
  if (!state.data.currentNumbering) {
    const nextId = createShortId();
    state.numbering.push(createNumbering(nextId, style3));
    state.data.currentNumbering = { reference: nextId, level: 0 };
  } else {
    const { reference, level } = state.data.currentNumbering;
    state.data.currentNumbering = { reference, level: level + 1 };
  }
  state.renderChildren(node3);
  if (state.data.currentNumbering.level === 0) {
    delete state.data.currentNumbering;
  } else {
    const { reference, level } = state.data.currentNumbering;
    state.data.currentNumbering = { reference, level: level - 1 };
  }
};
var listItem2 = (state, node3, parent2) => {
  if (!state.data.currentNumbering)
    throw new Error("Trying to create a list item without a list?");
  if (state.current.length > 0) {
    state.closeBlock();
  }
  state.addParagraphOptions({ numbering: state.data.currentNumbering });
  state.renderChildren(node3);
  if (parent2.type !== "paragraph") {
    state.closeBlock();
  }
};
var link2 = (state, node3) => {
  const stack = state.current;
  state.addRunOptions({ style: "Hyperlink" });
  state.current = [];
  state.renderChildren(node3);
  const hyperlink = new import_docx3.ExternalHyperlink({
    link: node3.url,
    children: state.current
  });
  state.current = [...stack, hyperlink];
};
var inlineCode3 = (state, node3) => {
  state.text(node3.value, {
    font: {
      name: "Monospace"
    },
    color: "000000",
    shading: {
      type: import_docx3.ShadingType.SOLID,
      color: "D2D3D2",
      fill: "D2D3D2"
    }
  });
};
var _break = (state) => {
  state.addRunOptions({ break: 1 });
};
var thematicBreak2 = (state) => {
  state.closeBlock({ thematicBreak: true });
  state.blankLine();
};
var abbreviation2 = (state, node3) => {
  state.renderChildren(node3);
};
var subscript2 = (state, node3) => {
  state.addRunOptions({ subScript: true });
  state.renderChildren(node3);
};
var superscript2 = (state, node3) => {
  state.addRunOptions({ superScript: true });
  state.renderChildren(node3);
};
var _delete = (state, node3) => {
  state.addRunOptions({ strike: true });
  state.renderChildren(node3);
};
var underline = (state, node3) => {
  state.addRunOptions({ underline: {} });
  state.renderChildren(node3);
};
var smallcaps = (state, node3) => {
  state.addRunOptions({ smallCaps: true });
  state.renderChildren(node3);
};
var blockquote3 = (state, node3) => {
  state.renderChildren(node3, { style: "IntenseQuote" });
};
var code4 = (state, node3) => {
  node3.value.split("\n").forEach((line2) => {
    state.text(line2, {
      font: {
        name: "Monospace"
      }
    });
    state.closeBlock();
  });
};
function getAspect(buffer2, size) {
  if (size)
    return size.height / size.width;
  try {
    const dimensions = (0, import_buffer_image_size.default)(buffer2);
    return dimensions.height / dimensions.width;
  } catch (error) {
    return void 0;
  }
}
var image3 = (state, node3) => {
  var _a6, _b, _c;
  const buffer2 = state.options.getImageBuffer(node3.url);
  const dimensions = (_b = (_a6 = state.options).getImageDimensions) === null || _b === void 0 ? void 0 : _b.call(_a6, node3.url);
  const width = getImageWidth(node3.width, (_c = state.data.maxImageWidth) !== null && _c !== void 0 ? _c : state.options.maxImageWidth);
  const aspect = getAspect(buffer2, dimensions);
  if (!aspect) {
    fileError(state.file, `Error with checking image aspect ratio for "${node3.url}".`, {
      node: node3,
      source: "myst-to-docx:image",
      note: 'Either provide dimensions of the image with "getImageDimensions" or ensure that the result is a Buffer.',
      ruleId: RuleId.docxRenders
    });
  }
  state.current.push(new import_docx3.ImageRun({
    data: buffer2,
    transformation: {
      width,
      height: width * (aspect !== null && aspect !== void 0 ? aspect : 1)
    }
  }));
  let alignment;
  switch (node3.align) {
    case "right":
      alignment = import_docx3.AlignmentType.RIGHT;
      break;
    case "left":
      alignment = import_docx3.AlignmentType.LEFT;
      break;
    default:
      alignment = import_docx3.AlignmentType.CENTER;
  }
  state.addParagraphOptions({
    alignment
  });
  state.closeBlock();
};
var admonitionStyle = {
  border: {
    left: {
      style: import_docx3.BorderStyle.DOUBLE,
      color: "5D85D0"
    }
  },
  indent: { left: (0, import_docx3.convertInchesToTwip)(0.2), right: (0, import_docx3.convertInchesToTwip)(0.2) }
};
var admonition3 = (state, node3) => {
  state.blankLine();
  state.renderChildren(node3, admonitionStyle);
  state.closeBlock();
  state.blankLine();
};
var admonitionTitle2 = (state, node3) => {
  state.renderChildren(node3, {
    ...admonitionStyle,
    shading: {
      type: import_docx3.ShadingType.SOLID,
      color: "5D85D0"
    }
  }, { bold: true, color: "FFFFFF" });
  state.closeBlock();
};
var definitionStyle = {
  border: {
    left: {
      style: import_docx3.BorderStyle.THICK,
      color: "D2D3D2"
    }
  },
  indent: { left: (0, import_docx3.convertInchesToTwip)(0.2), right: (0, import_docx3.convertInchesToTwip)(0.2) }
};
var definitionList2 = (state, node3) => {
  state.renderChildren(node3, definitionStyle);
  state.closeBlock();
  state.blankLine();
};
var definitionTerm2 = (state, node3) => {
  state.renderChildren(node3, {
    ...definitionStyle,
    shading: {
      type: import_docx3.ShadingType.SOLID,
      color: "D2D3D2"
    }
  });
  state.closeBlock();
};
var definitionDescription2 = (state, node3) => {
  state.text("	");
  state.renderChildren(node3, definitionStyle);
  state.closeBlock();
};
var inlineMath4 = (state, node3) => {
  const latex = node3.value;
  state.current.push(new import_docx3.Math({ children: [new import_docx3.MathRun(latex)] }));
};
var math6 = (state, node3) => {
  state.blankLine();
  const latex = node3.value;
  state.current = [
    new import_docx3.TextRun("	"),
    new import_docx3.Math({
      children: [new import_docx3.MathRun(latex)]
    })
  ];
  if (node3.enumerator && node3.identifier && state.options.useFieldsForCrossReferences) {
    state.current.push(new import_docx3.TextRun("	("), createReferenceBookmark(node3.identifier, "Equation"), new import_docx3.TextRun(")"));
  } else if (node3.enumerator) {
    state.current.push(new import_docx3.TextRun(`	(${node3.enumerator})`));
  }
  state.closeBlock({
    tabStops: [
      {
        type: import_docx3.TabStopType.CENTER,
        position: import_docx3.TabStopPosition.MAX / 2
      },
      {
        type: import_docx3.TabStopType.RIGHT,
        position: import_docx3.TabStopPosition.MAX
      }
    ]
  });
  state.blankLine();
};
var crossReference2 = (state, node3) => {
  if (state.options.useFieldsForCrossReferences && node3.identifier) {
    state.current.push(createReference(node3.identifier));
  } else {
    state.renderChildren(node3);
  }
};
var container2 = (state, node3) => {
  state.renderChildren(node3);
};
function figCaptionToWordCaption(file, kind) {
  switch (kind.toLowerCase()) {
    case "figure":
      return "Figure";
    case "table":
      return "Table";
    case "equation":
      return "Equation";
    case "code":
      return "Figure";
    default:
      fileError(file, `Unknown figure caption of kind ${kind}`, {
        ruleId: RuleId.docxRenders
      });
      return "Figure";
  }
}
var captionNumber2 = (state, node3) => {
  if (state.options.useFieldsForCrossReferences) {
    const bookmarkKind = figCaptionToWordCaption(state.file, node3.kind);
    state.current.push(createReferenceBookmark(node3.identifier, bookmarkKind, `${bookmarkKind} `, ": "));
  } else {
    state.renderChildren(node3, void 0, { bold: true });
    state.text(" ");
  }
};
var caption2 = (state, node3) => {
  state.renderChildren(node3, { style: "Caption" });
};
function getFootnoteNumber(node3) {
  var _a6;
  return (_a6 = Number.parseInt(node3.enumerator, 10)) !== null && _a6 !== void 0 ? _a6 : Number(node3.identifier);
}
var footnoteDefinition = (state, node3) => {
  const { children, current: current2 } = state;
  const number2 = getFootnoteNumber(node3);
  state.children = [];
  state.current = [];
  state.renderChildren(node3);
  state.footnotes[number2] = { children: state.children };
  state.children = children;
  state.current = current2;
};
var footnoteReference2 = (state, node3) => {
  const number2 = getFootnoteNumber(node3);
  state.current.push(new import_docx3.FootnoteReferenceRun(number2));
};
var table4 = (state, node3) => {
  var _a6, _b;
  const actualChildren = state.children;
  const rows = [];
  const imageWidth = (_b = (_a6 = state.data.maxImageWidth) !== null && _a6 !== void 0 ? _a6 : state.options.maxImageWidth) !== null && _b !== void 0 ? _b : MAX_DOCX_IMAGE_WIDTH;
  node3.children.forEach(({ children }) => {
    const rowContent = children;
    const cells2 = [];
    let tableHeader = true;
    rowContent.forEach((cell3) => {
      if (cell3.header) {
        tableHeader = false;
      }
    });
    state.data.maxImageWidth = imageWidth / rowContent.length;
    rowContent.forEach((cell3) => {
      var _a7, _b2;
      state.children = [];
      state.renderChildren(cell3);
      state.closeBlock();
      const tableCellOpts = { children: state.children };
      const colspan = (_a7 = cell3.colspan) !== null && _a7 !== void 0 ? _a7 : 1;
      const rowspan = (_b2 = cell3.rowspan) !== null && _b2 !== void 0 ? _b2 : 1;
      if (colspan > 1)
        tableCellOpts.columnSpan = colspan;
      if (rowspan > 1)
        tableCellOpts.rowSpan = rowspan;
      cells2.push(new import_docx3.TableCell(tableCellOpts));
    });
    rows.push(new import_docx3.TableRow({ children: cells2, tableHeader }));
  });
  state.data.maxImageWidth = imageWidth;
  const tableNode = new import_docx3.Table({ rows });
  actualChildren.push(tableNode);
  actualChildren.push(new import_docx3.Paragraph(""));
  state.children = actualChildren;
};
var cite = (state, node3) => {
  state.renderChildren(node3);
};
var citeGroup = (state, node3) => {
  if (node3.kind === "narrative") {
    state.renderChildren(node3);
  } else {
    state.text("(");
    node3.children.forEach((child, ind) => {
      state.render(child);
      if (ind < node3.children.length - 1)
        state.text("; ");
    });
    state.text(")");
  }
};
var embed2 = (state, node3) => {
  state.renderChildren(node3);
};
var include2 = (state, node3) => {
  state.renderChildren(node3);
};
var comment5 = () => {
  return;
};
var mystDirective2 = (state, node3) => {
  state.renderChildren(node3);
};
var mystRole2 = (state, node3) => {
  state.renderChildren(node3);
};
var inlineExpression = (state, node3, parent2) => {
  var _a6;
  if ((_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.length) {
    state.renderChildren(node3);
  } else {
    inlineCode3(state, { ...node3, type: "inlineCode" }, parent2);
  }
};
var defaultHandlers = {
  text: text5,
  paragraph: paragraph2,
  heading: heading4,
  emphasis: emphasis2,
  strong: strong3,
  inlineCode: inlineCode3,
  link: link2,
  break: _break,
  thematicBreak: thematicBreak2,
  list: list4,
  listItem: listItem2,
  abbreviation: abbreviation2,
  subscript: subscript2,
  superscript: superscript2,
  delete: _delete,
  underline,
  smallcaps,
  blockquote: blockquote3,
  code: code4,
  image: image3,
  block: block3,
  comment: comment5,
  mystDirective: mystDirective2,
  mystRole: mystRole2,
  admonition: admonition3,
  admonitionTitle: admonitionTitle2,
  definitionList: definitionList2,
  definitionTerm: definitionTerm2,
  definitionDescription: definitionDescription2,
  math: math6,
  inlineMath: inlineMath4,
  crossReference: crossReference2,
  container: container2,
  caption: caption2,
  captionNumber: captionNumber2,
  footnoteReference: footnoteReference2,
  footnoteDefinition,
  table: table4,
  cite,
  citeGroup,
  embed: embed2,
  include: include2,
  inlineExpression
};

// ../myst-to-docx/dist/serializer.js
var DocxSerializer = class {
  constructor(file, options, frontmatter) {
    var _a6;
    this.footnotes = {};
    this.current = [];
    this.frontmatter = {};
    this.file = file;
    this.data = {};
    this.handlers = (_a6 = options.handlers) !== null && _a6 !== void 0 ? _a6 : defaultHandlers;
    this.options = options !== null && options !== void 0 ? options : {};
    this.children = [];
    this.numbering = [];
    this.frontmatter = frontmatter !== null && frontmatter !== void 0 ? frontmatter : {};
  }
  render(node3, parent2) {
    if (!this.handlers[node3.type]) {
      fileError(this.file, `Node of type "${node3.type}" is not supported by docx renderer`, {
        node: node3,
        source: "myst-to-docx:render",
        ruleId: RuleId.docxRenders
      });
      return;
    }
    this.handlers[node3.type](this, node3, parent2);
  }
  renderChildren(parent2, paragraphOpts, runOpts) {
    if (!("children" in parent2)) {
      const node3 = parent2;
      fileWarn(this.file, `Expected children for node of type ${node3.type}`, {
        node: node3,
        ruleId: RuleId.docxRenders
      });
      return;
    }
    parent2.children.forEach((node3) => {
      if (paragraphOpts)
        this.addParagraphOptions(paragraphOpts);
      if (runOpts)
        this.addRunOptions(runOpts);
      this.render(node3, parent2);
    });
  }
  addParagraphOptions(opts) {
    var _a6;
    this.data.nextParagraphOpts = { ...(_a6 = this.data) === null || _a6 === void 0 ? void 0 : _a6.nextParagraphOpts, ...opts };
  }
  addRunOptions(opts) {
    this.data.nextRunOpts = { ...this.data.nextRunOpts, ...opts };
  }
  text(text7, opts) {
    if (!text7)
      return;
    this.current.push(new import_docx4.TextRun({ text: text7, ...this.data.nextRunOpts, ...opts }));
    delete this.data.nextRunOpts;
  }
  closeBlock(props, force = false) {
    if (this.current.length === 0 && !props && !force) {
      delete this.data.nextParagraphOpts;
      return;
    }
    const paragraph4 = new import_docx4.Paragraph({
      children: this.current,
      ...this.data.nextParagraphOpts,
      ...props
    });
    this.current = [];
    delete this.data.nextParagraphOpts;
    this.children.push(paragraph4);
  }
  blankLine(props) {
    this.closeBlock(props, true);
  }
};

// ../myst-to-docx/dist/plugin.js
var import_docx5 = __toESM(require_build(), 1);

// ../myst-cli/dist/build/docx/footers.js
var import_node_fs37 = __toESM(require("fs"), 1);
var import_docx6 = __toESM(require_build(), 1);
function createFooter(logo) {
  return new import_docx6.Footer({
    children: [
      new import_docx6.Paragraph({
        children: [
          new import_docx6.TextRun("Created with "),
          new import_docx6.ImageRun({
            data: import_node_fs37.default.readFileSync(logo).buffer,
            transformation: {
              width: 1150 / 18,
              height: 200 / 18
            }
          })
        ],
        alignment: import_docx6.AlignmentType.RIGHT
      })
    ]
  });
}

// ../myst-cli/dist/build/docx/titles.js
function createArticleTitle(blockTitle, authors) {
  const headings = [];
  if (blockTitle) {
    headings.push({
      type: "heading",
      depth: 1,
      children: [{ type: "text", value: blockTitle }]
    });
  }
  const authorNames = !authors ? void 0 : authors.map((v) => v.name || "Unknown Author");
  if (authorNames && authorNames.length) {
    headings.push({
      type: "heading",
      depth: 4,
      children: [{ type: "text", value: authorNames.join(", ") }]
    });
  }
  return headings;
}
function createReferenceTitle() {
  return {
    type: "heading",
    depth: 2,
    children: [{ type: "text", value: "References" }]
  };
}

// ../myst-cli/dist/build/docx/single.js
var DOCX_IMAGE_EXTENSIONS = [ImageExtensions.png, ImageExtensions.jpg, ImageExtensions.jpeg];
function defaultWordRenderer(session, data, doc, opts, staticPath, vfile2) {
  var _a6, _b;
  const { mdast: mdast2, frontmatter, references } = data;
  const frontmatterNodes = createArticleTitle(frontmatter.title, frontmatter.authors);
  const serializer = new DocxSerializer(vfile2, {
    getImageBuffer(image6) {
      import_node_fs38.default.readFileSync(image6);
      return Buffer.from(import_node_fs38.default.readFileSync(image6).buffer);
    },
    useFieldsForCrossReferences: false
  }, frontmatter);
  frontmatterNodes.forEach((node3) => {
    serializer.render(node3);
  });
  serializer.renderChildren(mdast2);
  const referencesDocStates = Object.values((_b = (_a6 = references.cite) === null || _a6 === void 0 ? void 0 : _a6.data) !== null && _b !== void 0 ? _b : {}).map(({ html: html7 }) => html7).sort((a2, b) => a2.localeCompare(b)).map((html7) => {
    return { type: "html", value: html7 };
  });
  if (referencesDocStates.length > 0) {
    serializer.render(createReferenceTitle());
    const referencesRoot = htmlTransform({ type: "root", children: referencesDocStates });
    serializer.renderChildren(referencesRoot);
    serializer.closeBlock();
  }
  selectAll("footnoteDefinition", mdast2).forEach((footnote2) => {
    serializer.render(footnote2);
  });
  const logo = import_node_path47.default.join(staticPath, "logo.png");
  const docfooter = import_node_fs38.default.existsSync(logo) && !opts.hideFooter ? createFooter(logo) : void 0;
  const styles14 = import_node_path47.default.join(staticPath, "styles.xml");
  const docstyles = import_node_fs38.default.existsSync(styles14) ? import_node_fs38.default.readFileSync(styles14).toString() : void 0;
  return createDocFromState(serializer, docfooter, docstyles);
}
async function runWordExport(session, file, exportOptions, opts) {
  var _a6;
  const { output: output2, articles } = exportOptions;
  const { clean: clean3, projectPath, extraLinkTransformers, execute } = opts !== null && opts !== void 0 ? opts : {};
  const article = articles[0];
  if (!(article === null || article === void 0 ? void 0 : article.file))
    return { tempFolders: [] };
  if (clean3)
    cleanOutput(session, output2);
  const vfile2 = new VFile();
  vfile2.path = output2;
  const imageWriteFolder = createTempFolder(session);
  const [data] = await getFileContent(session, [article.file], {
    projectPath,
    imageExtensions: DOCX_IMAGE_EXTENSIONS,
    extraLinkTransformers,
    preFrontmatters: [
      filterKeys(article, [...PAGE_FRONTMATTER_KEYS, ...Object.keys(FRONTMATTER_ALIASES)])
    ],
    execute
  });
  const mystTemplate = new dist_default2(session, {
    kind: TemplateKind.docx,
    template: exportOptions.template || void 0,
    buildDir: session.buildPath(),
    errorLogFn: (message) => {
      fileError(vfile2, message, { ruleId: RuleId.docxRenders });
    },
    warningLogFn: (message) => {
      fileWarn(vfile2, message, { ruleId: RuleId.docxRenders });
    }
  });
  await mystTemplate.ensureTemplateExistsOnPath();
  const toc = tic();
  const exportFrontmatter = validateProjectFrontmatter(filterKeys(exportOptions, [...PROJECT_FRONTMATTER_KEYS, ...Object.keys(FRONTMATTER_ALIASES)]), frontmatterValidationOpts(vfile2));
  logMessagesFromVFile(session, vfile2);
  data.frontmatter = { ...data.frontmatter, ...exportFrontmatter };
  const { options, doc } = mystTemplate.prepare({
    frontmatter: data.frontmatter,
    parts: {},
    options: { ...data.frontmatter.options, ...exportOptions },
    sourceFile: file
  });
  const renderer = (_a6 = exportOptions.renderer) !== null && _a6 !== void 0 ? _a6 : defaultWordRenderer;
  await finalizeMdast(session, data.mdast, data.frontmatter, article.file, {
    imageWriteFolder,
    imageExtensions: DOCX_IMAGE_EXTENSIONS,
    simplifyFigures: true
  });
  const docx = renderer(session, data, doc, options, mystTemplate.templatePath, vfile2);
  logMessagesFromVFile(session, vfile2);
  await writeDocx(docx, (buffer2) => writeFileToFolder(output2, buffer2));
  session.log.info(toc(`\u{1F4C4} Exported DOCX in %s, copying to ${output2}`));
  return { tempFolders: [imageWriteFolder] };
}

// ../myst-cli/dist/build/jats/single.js
var import_node_path48 = __toESM(require("path"), 1);

// ../myst-to-jats/dist/index.js
var import_xml_js2 = __toESM(require_lib19(), 1);

// ../../node_modules/jats-tags/dist/elementTags.js
var Tags;
(function(Tags2) {
  Tags2["abbrev"] = "abbrev";
  Tags2["abstract"] = "abstract";
  Tags2["accessDate"] = "access-date";
  Tags2["ack"] = "ack";
  Tags2["addrLine"] = "addr-line";
  Tags2["address"] = "address";
  Tags2["aff"] = "aff";
  Tags2["affAlternatives"] = "aff-alternatives";
  Tags2["ali:free_to_read"] = "ali:free_to_read";
  Tags2["ali:license_ref"] = "ali:license_ref";
  Tags2["altText"] = "alt-text";
  Tags2["altTitle"] = "alt-title";
  Tags2["alternatives"] = "alternatives";
  Tags2["annotation"] = "annotation";
  Tags2["anonymous"] = "anonymous";
  Tags2["answer"] = "answer";
  Tags2["answerSet"] = "answer-set";
  Tags2["app"] = "app";
  Tags2["appGroup"] = "app-group";
  Tags2["array"] = "array";
  Tags2["article"] = "article";
  Tags2["articleMeta"] = "article-meta";
  Tags2["articleTitle"] = "article-title";
  Tags2["articleVersion"] = "article-version";
  Tags2["attrib"] = "attrib";
  Tags2["authorComment"] = "author-comment";
  Tags2["awardDesc"] = "award-desc";
  Tags2["awardGroup"] = "award-group";
  Tags2["awardId"] = "award-id";
  Tags2["awardName"] = "award-name";
  Tags2["back"] = "back";
  Tags2["bio"] = "bio";
  Tags2["body"] = "body";
  Tags2["bold"] = "bold";
  Tags2["boxedText"] = "boxed-text";
  Tags2["break"] = "break";
  Tags2["caption"] = "caption";
  Tags2["chapterTitle"] = "chapter-title";
  Tags2["chemStruct"] = "chem-struct";
  Tags2["chemStructWrap"] = "chem-struct-wrap";
  Tags2["citationAlternatives"] = "citation-alternatives";
  Tags2["city"] = "city";
  Tags2["code"] = "code";
  Tags2["col"] = "col";
  Tags2["colgroup"] = "colgroup";
  Tags2["collab"] = "collab";
  Tags2["collabAlternatives"] = "collab-alternatives";
  Tags2["comment"] = "comment";
  Tags2["compoundKwd"] = "compound-kwd";
  Tags2["compoundKwdPart"] = "compound-kwd-part";
  Tags2["compoundSubject"] = "compound-subject";
  Tags2["compoundSubjectPart"] = "compound-subject-part";
  Tags2["confAcronym"] = "conf-acronym";
  Tags2["confDate"] = "conf-date";
  Tags2["confLoc"] = "conf-loc";
  Tags2["confName"] = "conf-name";
  Tags2["confNum"] = "conf-num";
  Tags2["confSponsor"] = "conf-sponsor";
  Tags2["confTheme"] = "conf-theme";
  Tags2["conference"] = "conference";
  Tags2["contrib"] = "contrib";
  Tags2["contribGroup"] = "contrib-group";
  Tags2["contribId"] = "contrib-id";
  Tags2["contributedResourceGroup"] = "contributed-resource-group";
  Tags2["copyrightHolder"] = "copyright-holder";
  Tags2["copyrightStatement"] = "copyright-statement";
  Tags2["copyrightYear"] = "copyright-year";
  Tags2["country"] = "country";
  Tags2["customMeta"] = "custom-meta";
  Tags2["customMetaGroup"] = "custom-meta-group";
  Tags2["dataTitle"] = "data-title";
  Tags2["date"] = "date";
  Tags2["dateInCitation"] = "date-in-citation";
  Tags2["day"] = "day";
  Tags2["def"] = "def";
  Tags2["defHead"] = "def-head";
  Tags2["defItem"] = "def-item";
  Tags2["defList"] = "def-list";
  Tags2["degrees"] = "degrees";
  Tags2["dispFormula"] = "disp-formula";
  Tags2["dispFormulaGroup"] = "disp-formula-group";
  Tags2["dispQuote"] = "disp-quote";
  Tags2["edition"] = "edition";
  Tags2["elementCitation"] = "element-citation";
  Tags2["elocationId"] = "elocation-id";
  Tags2["email"] = "email";
  Tags2["era"] = "era";
  Tags2["etal"] = "etal";
  Tags2["explanation"] = "explanation";
  Tags2["extLink"] = "ext-link";
  Tags2["extendedBy"] = "extended-by";
  Tags2["fax"] = "fax";
  Tags2["fig"] = "fig";
  Tags2["fixedCase"] = "fixed-case";
  Tags2["fn"] = "fn";
  Tags2["fnGroup"] = "fn-group";
  Tags2["fpage"] = "fpage";
  Tags2["front"] = "front";
  Tags2["fundingGroup"] = "funding-group";
  Tags2["fundingSource"] = "funding-source";
  Tags2["fundingStatement"] = "funding-statement";
  Tags2["givenNames"] = "given-names";
  Tags2["glossary"] = "glossary";
  Tags2["glyphData"] = "glyph-data";
  Tags2["glyphRef"] = "glyph-ref";
  Tags2["gov"] = "gov";
  Tags2["graphic"] = "graphic";
  Tags2["hr"] = "hr";
  Tags2["indexTerm"] = "index-term";
  Tags2["indexTermRangeEnd"] = "index-term-range-end";
  Tags2["inlineFormula"] = "inline-formula";
  Tags2["inlineGraphic"] = "inline-graphic";
  Tags2["inlineMedia"] = "inline-media";
  Tags2["inlineSupplementaryMaterial"] = "inline-supplementary-material";
  Tags2["institution"] = "institution";
  Tags2["institutionId"] = "institution-id";
  Tags2["institutionWrap"] = "institution-wrap";
  Tags2["isbn"] = "isbn";
  Tags2["issn"] = "issn";
  Tags2["issn-l"] = "issn-l";
  Tags2["issue"] = "issue";
  Tags2["issueId"] = "issue-id";
  Tags2["issuePart"] = "issue-part";
  Tags2["issueTitle"] = "issue-title";
  Tags2["italic"] = "italic";
  Tags2["journalId"] = "journal-id";
  Tags2["kwd"] = "kwd";
  Tags2["kwdGroup"] = "kwd-group";
  Tags2["label"] = "label";
  Tags2["license"] = "license";
  Tags2["license-p"] = "license-p";
  Tags2["list"] = "list";
  Tags2["listItem"] = "list-item";
  Tags2["longDesc"] = "long-desc";
  Tags2["lpage"] = "lpage";
  Tags2["media"] = "media";
  Tags2["metaName"] = "meta-name";
  Tags2["metaValue"] = "meta-value";
  Tags2["mixedCitation"] = "mixed-citation";
  Tags2["mml:math"] = "mml:math";
  Tags2["monospace"] = "monospace";
  Tags2["month"] = "month";
  Tags2["name"] = "name";
  Tags2["nameAlternatives"] = "name-alternatives";
  Tags2["namedContent"] = "named-content";
  Tags2["nestedKwd"] = "nested-kwd";
  Tags2["nlmCitation"] = "nlm-citation";
  Tags2["objectId"] = "object-id";
  Tags2["onBehalfOf"] = "on-behalf-of";
  Tags2["openAccess"] = "open-access";
  Tags2["option"] = "option";
  Tags2["overline"] = "overline";
  Tags2["p"] = "p";
  Tags2["pageCount"] = "page-count";
  Tags2["pageRange"] = "page-range";
  Tags2["partTitle"] = "part-title";
  Tags2["patent"] = "patent";
  Tags2["permissions"] = "permissions";
  Tags2["personGroup"] = "person-group";
  Tags2["phone"] = "phone";
  Tags2["postalCode"] = "postal-code";
  Tags2["prefix"] = "prefix";
  Tags2["preformat"] = "preformat";
  Tags2["price"] = "price";
  Tags2["principalAwardRecipient"] = "principal-award-recipient";
  Tags2["principalInvestigator"] = "principal-investigator";
  Tags2["privateChar"] = "private-char";
  Tags2["processingMeta"] = "processing-meta";
  Tags2["product"] = "product";
  Tags2["pubId"] = "pub-id";
  Tags2["publisherLoc"] = "publisher-loc";
  Tags2["publisherName"] = "publisher-name";
  Tags2["question"] = "question";
  Tags2["questionPreamble"] = "question-preamble";
  Tags2["questionWrap"] = "question-wrap";
  Tags2["questionWrapGroup"] = "question-wrap-group";
  Tags2["rb"] = "rb";
  Tags2["ref"] = "ref";
  Tags2["refList"] = "ref-list";
  Tags2["relatedArticle"] = "related-article";
  Tags2["relatedObject"] = "related-object";
  Tags2["resourceGroup"] = "resource-group";
  Tags2["resourceId"] = "resource-id";
  Tags2["resourceName"] = "resource-name";
  Tags2["resourceWrap"] = "resource-wrap";
  Tags2["restrictedBy"] = "restricted-by";
  Tags2["role"] = "role";
  Tags2["roman"] = "roman";
  Tags2["rt"] = "rt";
  Tags2["ruby"] = "ruby";
  Tags2["sansSerif"] = "sans-serif";
  Tags2["sc"] = "sc";
  Tags2["season"] = "season";
  Tags2["sec"] = "sec";
  Tags2["secMeta"] = "sec-meta";
  Tags2["see"] = "see";
  Tags2["seeAlso"] = "see-also";
  Tags2["selfUri"] = "self-uri";
  Tags2["series"] = "series";
  Tags2["size"] = "size";
  Tags2["source"] = "source";
  Tags2["speaker"] = "speaker";
  Tags2["speech"] = "speech";
  Tags2["state"] = "state";
  Tags2["statement"] = "statement";
  Tags2["std"] = "std";
  Tags2["stdOrganization"] = "std-organization";
  Tags2["strike"] = "strike";
  Tags2["stringDate"] = "string-date";
  Tags2["stringName"] = "string-name";
  Tags2["styledContent"] = "styled-content";
  Tags2["sub"] = "sub";
  Tags2["subjGroup"] = "subj-group";
  Tags2["subject"] = "subject";
  Tags2["subtitle"] = "subtitle";
  Tags2["suffix"] = "suffix";
  Tags2["sup"] = "sup";
  Tags2["supplement"] = "supplement";
  Tags2["supplementaryMaterial"] = "supplementary-material";
  Tags2["supportDescription"] = "support-description";
  Tags2["supportGroup"] = "support-group";
  Tags2["supportSource"] = "support-source";
  Tags2["surname"] = "surname";
  Tags2["table"] = "table";
  Tags2["tableWrap"] = "table-wrap";
  Tags2["tableWrapFoot"] = "table-wrap-foot";
  Tags2["target"] = "target";
  Tags2["tbody"] = "tbody";
  Tags2["td"] = "td";
  Tags2["term"] = "term";
  Tags2["termHead"] = "term-head";
  Tags2["textualForm"] = "textual-form";
  Tags2["tfoot"] = "tfoot";
  Tags2["th"] = "th";
  Tags2["thead"] = "thead";
  Tags2["timeStamp"] = "time-stamp";
  Tags2["title"] = "title";
  Tags2["titleGroup"] = "title-group";
  Tags2["tr"] = "tr";
  Tags2["transSource"] = "trans-source";
  Tags2["transTitle"] = "trans-title";
  Tags2["underline"] = "underline";
  Tags2["uri"] = "uri";
  Tags2["verseGroup"] = "verse-group";
  Tags2["verseLine"] = "verse-line";
  Tags2["version"] = "version";
  Tags2["volume"] = "volume";
  Tags2["volumeId"] = "volume-id";
  Tags2["volumeSeries"] = "volume-series";
  Tags2["xref"] = "xref";
  Tags2["year"] = "year";
  Tags2["subArticle"] = "sub-article";
  Tags2["articleId"] = "article-id";
  Tags2["pubDate"] = "pub-date";
  Tags2["articleCategories"] = "article-categories";
  Tags2["journalTitle"] = "journal-title";
})(Tags || (Tags = {}));

// ../../node_modules/jats-tags/dist/refType.js
var RefType;
(function(RefType2) {
  RefType2["aff"] = "aff";
  RefType2["app"] = "app";
  RefType2["authorNote"] = "author-note";
  RefType2["award"] = "award";
  RefType2["bibr"] = "bibr";
  RefType2["bio"] = "bio";
  RefType2["boxedText"] = "boxed-text";
  RefType2["chem"] = "chem";
  RefType2["collab"] = "collab";
  RefType2["contrib"] = "contrib";
  RefType2["corresp"] = "corresp";
  RefType2["custom"] = "custom";
  RefType2["dispFormula"] = "disp-formula";
  RefType2["fig"] = "fig";
  RefType2["fn"] = "fn";
  RefType2["kwd"] = "kwd";
  RefType2["list"] = "list";
  RefType2["plate"] = "plate";
  RefType2["scheme"] = "scheme";
  RefType2["sec"] = "sec";
  RefType2["statement"] = "statement";
  RefType2["supplementaryMaterial"] = "supplementary-material";
  RefType2["table"] = "table";
  RefType2["tableFn"] = "table-fn";
})(RefType || (RefType = {}));

// ../../node_modules/jats-utils/dist/utils.js
function escapeForXML(text7) {
  return text7.replace(/&(?!amp;)/g, "&amp;").replace(/</g, "&lt;");
}

// ../../node_modules/jats-utils/dist/serialize.js
var import_xml_js = __toESM(require_lib19(), 1);
var both = [
  "\\?xml",
  "article",
  "sub-article",
  "front",
  "front-stub",
  "journal-meta",
  "journal-title-group",
  "publisher",
  "article-meta",
  "article-categories",
  "title-group",
  "contrib-group",
  "contrib",
  "institution-wrap",
  "aff",
  "permissions",
  "license",
  "kwd-group",
  "history",
  "self-uri",
  "funding-group",
  "award-group",
  "principal-award-recipient",
  "custom-meta-group",
  "date",
  "pub-date",
  "abstract",
  "counts",
  "body",
  "sec",
  "fig",
  "disp-formula",
  "table-wrap",
  "caption",
  "table",
  "thead",
  "ref-list",
  "ref",
  "back"
];
var first = [
  "journal-id",
  "journal-title",
  "issn",
  "publisher-name",
  "publisher-loc",
  "article-id",
  "article-title",
  "alt-title",
  "subtitle",
  "kwd",
  "name",
  "email",
  "contrib-id",
  "role",
  "institution",
  "institution-id",
  "award-id",
  "meta-name",
  "meta-value",
  "title",
  "p",
  "tr",
  "label",
  "graphic",
  "mixed-citation"
];
function indentXML(xml2) {
  return xml2.replace(RegExp(`<(\\/)?(${both.join("|")})( [^>]*)?>`, "g"), "<$1$2$3>\n").replace(RegExp(`([^
])<(\\/)?(${both.join("|")})( [^>]*)?>`, "g"), "$1\n<$2$3$4>").replace(RegExp(`([^
])<(${first.join("|")})( [^>]*)?>`, "g"), "$1\n<$2$3>").replace(RegExp(`<\\/(${first.join("|")})(\\s*)>([^
])`, "g"), "</$1>\n$3");
}
function serializeJatsXml(element5, opts) {
  const { format } = { format: "pretty", ...opts };
  const xml2 = (0, import_xml_js.js2xml)(element5, {
    compact: false,
    //  No way to write XML with new lines, but no indentation with js2xml.
    // If you use 0 or '', you get a single line.
    spaces: format === "flat" || format === "pretty" ? 0 : format || 1,
    attributeValueFn: escapeForXML
  });
  if (format === 0) {
    return xml2.replace(/\n(\s*)</g, "\n<");
  } else if (format === "pretty") {
    return indentXML(xml2);
  }
  return xml2;
}

// ../myst-to-jats/dist/backmatter.js
function citeToJatsRef(state, key2, data) {
  var _a6, _b, _c, _d2;
  const publicationType = !data.type || data.type === "article-journal" ? "journal" : data.type;
  const elements = [];
  const authors = (_a6 = data.author) === null || _a6 === void 0 ? void 0 : _a6.map((author) => {
    if (!author.given && !author.family)
      return void 0;
    const authorChildren = [];
    if (author.family) {
      authorChildren.push({
        type: "element",
        name: "surname",
        elements: [{ type: "text", text: author.family }]
      });
    }
    if (author.given) {
      authorChildren.push({
        type: "element",
        name: "given-names",
        elements: [{ type: "text", text: author.given }]
      });
    }
    const authorElem = {
      type: "element",
      name: "name",
      elements: authorChildren
    };
    return authorElem;
  }).filter((author) => !!author);
  if (authors && authors.length) {
    elements.push({
      type: "element",
      name: "person-group",
      attributes: { "person-group-type": "author" },
      elements: authors
    });
  }
  if (data["container-title"]) {
    elements.push({
      type: "element",
      name: "source",
      elements: [{ type: "text", text: data["container-title"] }]
    });
  }
  const year = (_d2 = (_c = (_b = data.issued) === null || _b === void 0 ? void 0 : _b["date-parts"]) === null || _c === void 0 ? void 0 : _c[0]) === null || _d2 === void 0 ? void 0 : _d2[0];
  if (year) {
    elements.push({
      type: "element",
      name: "year",
      attributes: { "iso-8601-date": String(year) },
      elements: [{ type: "text", text: String(year) }]
    });
  }
  if (data.DOI) {
    elements.push({
      type: "element",
      name: "pub-id",
      attributes: { "pub-id-type": "doi" },
      elements: [{ type: "text", text: data.DOI }]
    });
  }
  if (data.volume) {
    elements.push({
      type: "element",
      name: "volume",
      elements: [{ type: "text", text: data.volume }]
    });
  }
  if (data.issue) {
    elements.push({
      type: "element",
      name: "issue",
      elements: [{ type: "text", text: data.issue }]
    });
  }
  if (data.page) {
    const [firstPage, lastPage] = data.page.split("-");
    if (firstPage) {
      elements.push({
        type: "element",
        name: "fpage",
        elements: [{ type: "text", text: firstPage }]
      });
    }
    if (lastPage) {
      elements.push({
        type: "element",
        name: "lpage",
        elements: [{ type: "text", text: lastPage }]
      });
    }
  }
  if (data.ISSN) {
    elements.push({
      type: "element",
      name: "issn",
      elements: [{ type: "text", text: data.ISSN }]
    });
  }
  if (data.title || elements.length === 0) {
    elements.unshift({
      type: "element",
      name: "article-title",
      elements: data.title ? [{ type: "text", text: data.title }] : []
    });
  }
  return {
    type: "element",
    name: "ref",
    attributes: { id: key2 },
    elements: [
      {
        type: "element",
        name: "element-citation",
        attributes: { "publication-type": publicationType },
        elements
      }
    ]
  };
}
function getRefList(state, order3, citations) {
  const elements = order3 === null || order3 === void 0 ? void 0 : order3.map((key2) => {
    if (!(citations === null || citations === void 0 ? void 0 : citations[key2])) {
      state.warn(`unknown citation ${key2}`);
      return void 0;
    }
    return citeToJatsRef(state, key2, citations[key2].cite);
  }).filter((e2) => !!e2);
  if (!(elements === null || elements === void 0 ? void 0 : elements.length))
    return [];
  return [{ type: "element", name: "ref-list", elements }];
}
function getFootnotes(footnotes) {
  if (!(footnotes === null || footnotes === void 0 ? void 0 : footnotes.length))
    return [];
  return [{ type: "element", name: "fn-group", elements: footnotes }];
}
function getExpressions(expressions) {
  if (!(expressions === null || expressions === void 0 ? void 0 : expressions.length))
    return [];
  return [
    {
      type: "element",
      name: "notes",
      attributes: { "notes-type": "expressions" },
      elements: expressions
    }
  ];
}
function getBack(state, { citations, footnotes, expressions, referenceOrder }) {
  var _a6;
  const elements = [
    ...(_a6 = state.data.backSections) !== null && _a6 !== void 0 ? _a6 : [],
    ...getRefList(state, referenceOrder, citations),
    ...getFootnotes(footnotes),
    ...getExpressions(expressions),
    ...state.data.acknowledgments ? [state.data.acknowledgments] : []
    // app-group
    // bio
    // glossary
    // notes
  ];
  if (!elements.length)
    return [];
  return [{ type: "element", name: "back", elements }];
}

// ../myst-to-jats/dist/frontmatter.js
function getJournalIds() {
  return [];
}
function getJournalTitleGroup() {
  const elements = [];
  return elements.length ? [{ type: "element", name: "journal-title-group", elements }] : [];
}
function getJournalAffiliations() {
  return [];
}
function getJournalISNs() {
  return [];
}
function getJournalPublisher() {
  return [];
}
function getJournalMeta() {
  const elements = [
    ...getJournalIds(),
    ...getJournalTitleGroup(),
    ...getJournalAffiliations(),
    ...getJournalISNs(),
    ...getJournalPublisher()
    // notes
    // self-url
  ];
  return elements.length ? { type: "element", name: "journal-meta", elements } : null;
}
function getArticleTitle(frontmatter) {
  const title = frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.title;
  const subtitle = frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.subtitle;
  const short_title = frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.short_title;
  if (!title && !subtitle && !short_title)
    return [];
  const articleTitle = [
    {
      type: "element",
      name: "article-title",
      elements: title ? [{ type: "text", text: title }] : []
    }
  ];
  const articleSubtitle = subtitle ? [
    {
      type: "element",
      name: "subtitle",
      elements: [{ type: "text", text: subtitle }]
    }
  ] : [];
  const articleShortTitle = short_title ? [
    {
      type: "element",
      name: "alt-title",
      attributes: { "alt-title-type": "running-head" },
      elements: [{ type: "text", text: short_title }]
    }
  ] : [];
  return [
    {
      type: "element",
      name: "title-group",
      elements: [...articleTitle, ...articleSubtitle, ...articleShortTitle]
    }
  ];
}
function nameElementFromContributor(contrib) {
  var _a6, _b;
  if (contrib.nameParsed && (((_a6 = contrib.nameParsed) === null || _a6 === void 0 ? void 0 : _a6.given) || ((_b = contrib.nameParsed) === null || _b === void 0 ? void 0 : _b.family))) {
    const { given, family, dropping_particle, non_dropping_particle, suffix } = contrib.nameParsed;
    const nameElements = [];
    if (family) {
      nameElements.push({
        type: "element",
        name: "surname",
        elements: [
          {
            type: "text",
            text: non_dropping_particle ? `${non_dropping_particle} ${family}` : family
          }
        ]
      });
    }
    if (given) {
      nameElements.push({
        type: "element",
        name: "given-names",
        elements: [
          {
            type: "text",
            text: dropping_particle ? `${given} ${dropping_particle}` : given
          }
        ]
      });
    }
    if (suffix) {
      nameElements.push({
        type: "element",
        name: "suffix",
        elements: [{ type: "text", text: suffix }]
      });
    }
    return {
      type: "element",
      name: "name",
      attributes: { "name-style": "western" },
      elements: nameElements
    };
  } else if (contrib.name) {
    return {
      type: "element",
      name: "string-name",
      attributes: { "name-style": "western" },
      elements: [{ type: "text", text: contrib.name }]
    };
  }
}
function getArticleAuthors(frontmatter) {
  var _a6;
  const generateContrib = (author, type2) => {
    const attributes = {};
    const elements = [];
    if (type2)
      attributes["contrib-type"] = type2;
    if (author.corresponding)
      attributes.corresp = "yes";
    if (author.deceased)
      attributes["deceased"] = "yes";
    if (author.equal_contributor != null) {
      attributes["equal-contrib"] = author.equal_contributor ? "yes" : "no";
    }
    if (orcid.validate(author.orcid)) {
      elements.push({
        type: "element",
        name: "contrib-id",
        attributes: { "contrib-id-type": "orcid" },
        elements: [{ type: "text", text: orcid.buildUrl(author.orcid) }]
      });
    }
    const name3 = nameElementFromContributor(author);
    if (name3)
      elements.push(name3);
    if (author.roles) {
      elements.push(...author.roles.map((role) => {
        const attrs = {};
        if (validate2(role)) {
          attrs.vocab = "credit";
          attrs["vocab-identifier"] = CREDIT_URL;
          attrs["vocab-term"] = normalize2(role);
          attrs["vocab-term-identifier"] = buildUrl2(role);
        }
        return {
          type: "element",
          name: "role",
          attributes: attrs,
          elements: [{ type: "text", text: role }]
        };
      }));
    }
    if (author.affiliations) {
      elements.push(...author.affiliations.map((aff) => {
        return {
          type: "element",
          name: "xref",
          attributes: { "ref-type": "aff", rid: aff }
        };
      }));
    }
    if (author.email) {
      elements.push({
        type: "element",
        name: "email",
        elements: [{ type: "text", text: author.email }]
      });
    }
    if (author.url) {
      elements.push({
        type: "element",
        name: "ext-link",
        attributes: { "ext-link-type": "uri", "xlink:href": author.url },
        elements: [{ type: "text", text: author.url }]
      });
    }
    return { type: "element", name: "contrib", attributes, elements };
  };
  const authorContribs = ((_a6 = frontmatter.authors) !== null && _a6 !== void 0 ? _a6 : []).map((author) => {
    return generateContrib(author, "author");
  });
  const contribGroups = [];
  if (authorContribs.length) {
    contribGroups.push({ type: "element", name: "contrib-group", elements: authorContribs });
  }
  return contribGroups;
}
function instWrapElementsFromAffiliation(affiliation, includeDept = true) {
  const elements = [];
  const instWrapElements = [];
  if (affiliation.name) {
    instWrapElements.push({
      type: "element",
      name: "institution",
      elements: [{ type: "text", text: affiliation.name }]
    });
  }
  if (affiliation.isni) {
    instWrapElements.push({
      type: "element",
      name: "institution-id",
      attributes: { "institution-id-type": "isni" },
      elements: [{ type: "text", text: affiliation.isni }]
    });
  }
  if (affiliation.ringgold) {
    instWrapElements.push({
      type: "element",
      name: "institution-id",
      attributes: { "institution-id-type": "ringgold" },
      elements: [{ type: "text", text: `${affiliation.ringgold}` }]
    });
  }
  if (affiliation.ror) {
    instWrapElements.push({
      type: "element",
      name: "institution-id",
      attributes: { "institution-id-type": "ror" },
      elements: [{ type: "text", text: affiliation.ror }]
    });
  }
  if (affiliation.doi) {
    const doiAttrs = { "institution-id-type": "doi" };
    const funder = doi.isOpenFunderRegistry(affiliation.doi);
    if (funder) {
      doiAttrs.vocab = "open-funder-registry";
    }
    instWrapElements.push({
      type: "element",
      name: "institution-id",
      attributes: doiAttrs,
      elements: [{ type: "text", text: doi.normalize(affiliation.doi) }]
    });
  }
  if (instWrapElements.length) {
    elements.push({ type: "element", name: "institution-wrap", elements: instWrapElements });
  }
  if (includeDept && affiliation.department) {
    elements.push({
      type: "element",
      name: "institution-wrap",
      elements: [
        {
          type: "element",
          name: "institution",
          attributes: { "content-type": "dept" },
          elements: [{ type: "text", text: affiliation.department }]
        }
      ]
    });
  }
  return elements;
}
function getArticleAffiliations(frontmatter) {
  var _a6, _b, _c;
  if (!((_a6 = frontmatter.affiliations) === null || _a6 === void 0 ? void 0 : _a6.length))
    return [];
  const affIds = [
    ...new Set((_c = (_b = frontmatter.authors) === null || _b === void 0 ? void 0 : _b.map((auth) => {
      var _a7;
      return (_a7 = auth.affiliations) !== null && _a7 !== void 0 ? _a7 : [];
    }).flat()) !== null && _c !== void 0 ? _c : [])
  ];
  if (!(affIds === null || affIds === void 0 ? void 0 : affIds.length))
    return [];
  const affs = affIds.map((id) => {
    var _a7;
    return (_a7 = frontmatter.affiliations) === null || _a7 === void 0 ? void 0 : _a7.find((aff) => aff.id === id);
  }).filter((aff) => !!aff).map((affiliation) => {
    const elements = [];
    const attributes = {};
    if (affiliation.id) {
      attributes.id = affiliation.id;
    }
    elements.push(...instWrapElementsFromAffiliation(affiliation));
    if (affiliation.address) {
      elements.push({
        type: "element",
        name: "addr-line",
        elements: [{ type: "text", text: affiliation.address }]
      });
    }
    if (affiliation.city) {
      elements.push({
        type: "element",
        name: "city",
        elements: [{ type: "text", text: affiliation.city }]
      });
    }
    if (affiliation.state) {
      elements.push({
        type: "element",
        name: "state",
        elements: [{ type: "text", text: affiliation.state }]
      });
    }
    if (affiliation.postal_code) {
      elements.push({
        type: "element",
        name: "postal-code",
        elements: [{ type: "text", text: affiliation.postal_code }]
      });
    }
    if (affiliation.country) {
      elements.push({
        type: "element",
        name: "country",
        elements: [{ type: "text", text: affiliation.country }]
      });
    }
    if (affiliation.phone) {
      elements.push({
        type: "element",
        name: "phone",
        elements: [{ type: "text", text: affiliation.phone }]
      });
    }
    if (affiliation.fax) {
      elements.push({
        type: "element",
        name: "fax",
        elements: [{ type: "text", text: affiliation.fax }]
      });
    }
    if (affiliation.email) {
      elements.push({
        type: "element",
        name: "email",
        elements: [{ type: "text", text: affiliation.email }]
      });
    }
    if (affiliation.url) {
      elements.push({
        type: "element",
        name: "ext-link",
        attributes: { "ext-link-type": "uri", "xlink:href": affiliation.url },
        elements: [{ type: "text", text: affiliation.url }]
      });
    }
    return {
      type: "element",
      name: "aff",
      attributes,
      elements
    };
  });
  return affs ? affs : [];
}
function getArticlePermissions(frontmatter) {
  var _a6, _b, _c, _d2, _e, _f, _g;
  const isCCBY = ((_b = (_a6 = frontmatter.license) === null || _a6 === void 0 ? void 0 : _a6.content) === null || _b === void 0 ? void 0 : _b.id) === "CC-BY-4.0";
  const licenseUrl = (_e = (_d2 = (_c = frontmatter.license) === null || _c === void 0 ? void 0 : _c.content) === null || _d2 === void 0 ? void 0 : _d2.url) !== null && _e !== void 0 ? _e : (_g = (_f = frontmatter.license) === null || _f === void 0 ? void 0 : _f.code) === null || _g === void 0 ? void 0 : _g.url;
  const freeToRead = frontmatter.open_access ? [{ type: "element", name: "ali:free_to_read" }] : [];
  const licenseP = isCCBY ? [
    {
      type: "element",
      name: "license-p",
      elements: [
        {
          type: "text",
          text: `This ${frontmatter.open_access ? "is an open access article" : "article is"} distributed under the terms of the `
        },
        {
          type: "element",
          name: "ext-link",
          attributes: {
            "ext-link-type": "uri",
            "xlink:href": "http://creativecommons.org/licenses/by/4.0/"
          },
          elements: [{ type: "text", text: "Creative Commons Attribution License" }]
        },
        {
          type: "text",
          text: ", which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited."
        }
      ]
    }
  ] : [];
  return licenseUrl ? [
    {
      type: "element",
      name: "permissions",
      elements: [
        ...freeToRead,
        {
          type: "element",
          name: "license",
          attributes: { "xlink:href": licenseUrl },
          elements: [
            {
              type: "element",
              name: "ali:license_ref",
              elements: [{ type: "text", text: licenseUrl }]
            },
            ...licenseP
          ]
        }
      ]
    }
  ] : [];
}
function getKwdGroup(frontmatter) {
  var _a6;
  const kwds = (_a6 = frontmatter.keywords) === null || _a6 === void 0 ? void 0 : _a6.map((keyword) => {
    return { type: "element", name: "kwd", elements: [{ type: "text", text: keyword }] };
  });
  return (kwds === null || kwds === void 0 ? void 0 : kwds.length) ? [{ type: "element", name: "kwd-group", elements: kwds }] : [];
}
function getFundingGroup(frontmatter) {
  var _a6;
  const fundingGroups = (_a6 = frontmatter.funding) === null || _a6 === void 0 ? void 0 : _a6.map((fund) => {
    var _a7;
    const elements = [];
    if ((_a7 = fund.awards) === null || _a7 === void 0 ? void 0 : _a7.length) {
      elements.push(...fund.awards.map((award) => {
        var _a8, _b, _c;
        const awardElements = [];
        const resolvedSources = (_a8 = award.sources) === null || _a8 === void 0 ? void 0 : _a8.map((source2) => {
          var _a9;
          return (_a9 = frontmatter.affiliations) === null || _a9 === void 0 ? void 0 : _a9.find((aff) => aff.id === source2);
        }).filter((source2) => !!source2);
        if (resolvedSources === null || resolvedSources === void 0 ? void 0 : resolvedSources.length) {
          awardElements.push(...resolvedSources.map((source2) => {
            return {
              type: "element",
              name: "funding-source",
              elements: instWrapElementsFromAffiliation(source2, false)
            };
          }));
        }
        if (award.id) {
          awardElements.push({
            type: "element",
            name: "award-id",
            elements: [{ type: "text", text: award.id }]
          });
        }
        if (award.name) {
          awardElements.push({
            type: "element",
            name: "award-name",
            elements: [{ type: "text", text: award.name }]
          });
        }
        if (award.description) {
          awardElements.push({
            type: "element",
            name: "award-desc",
            elements: [{ type: "text", text: award.description }]
          });
        }
        if ((_b = award.recipients) === null || _b === void 0 ? void 0 : _b.length) {
          awardElements.push(...award.recipients.map((recipient) => {
            var _a9, _b2, _c2;
            const recipientElements = [];
            const author = (_c2 = [
              ...(_a9 = frontmatter.authors) !== null && _a9 !== void 0 ? _a9 : [],
              ...(_b2 = frontmatter.contributors) !== null && _b2 !== void 0 ? _b2 : []
            ].find((auth) => auth.id === recipient)) !== null && _c2 !== void 0 ? _c2 : { name: recipient };
            if (orcid.validate(author.orcid)) {
              recipientElements.push({
                type: "element",
                name: "contrib-id",
                attributes: { "contrib-id-type": "orcid" },
                elements: [{ type: "text", text: orcid.buildUrl(author.orcid) }]
              });
            }
            const name3 = nameElementFromContributor(author);
            if (name3)
              recipientElements.push(name3);
            return {
              type: "element",
              name: "principal-award-recipient",
              elements: recipientElements
            };
          }));
        }
        if ((_c = award.investigators) === null || _c === void 0 ? void 0 : _c.length) {
          awardElements.push(...award.investigators.map((investigator) => {
            var _a9, _b2, _c2;
            const investigatorElements = [];
            const author = (_c2 = [
              ...(_a9 = frontmatter.authors) !== null && _a9 !== void 0 ? _a9 : [],
              ...(_b2 = frontmatter.contributors) !== null && _b2 !== void 0 ? _b2 : []
            ].find((auth) => auth.id === investigator)) !== null && _c2 !== void 0 ? _c2 : { name: investigator };
            if (orcid.validate(author.orcid)) {
              investigatorElements.push({
                type: "element",
                name: "contrib-id",
                attributes: { "contrib-id-type": "orcid" },
                elements: [{ type: "text", text: orcid.buildUrl(author.orcid) }]
              });
            }
            const name3 = nameElementFromContributor(author);
            if (name3)
              investigatorElements.push(name3);
            return {
              type: "element",
              name: "principal-investigator",
              elements: investigatorElements
            };
          }));
        }
        return { type: "element", name: "award-group", elements: awardElements };
      }));
    }
    if (fund.statement) {
      elements.push({
        type: "element",
        name: "funding-statement",
        elements: [{ type: "text", text: fund.statement }]
      });
    }
    if (fund.open_access) {
      elements.push({
        type: "element",
        name: "open-access",
        elements: [
          { type: "element", name: "p", elements: [{ type: "text", text: fund.open_access }] }
        ]
      });
    }
    return { type: "element", name: "funding-group", elements };
  });
  return fundingGroups ? fundingGroups : [];
}
function getArticleVolume(frontmatter) {
  var _a6;
  const text7 = (_a6 = frontmatter.volume) === null || _a6 === void 0 ? void 0 : _a6.number;
  return text7 ? [{ type: "element", name: "volume", elements: [{ type: "text", text: `${text7}` }] }] : [];
}
function getArticleIssue(frontmatter) {
  var _a6;
  const text7 = (_a6 = frontmatter.issue) === null || _a6 === void 0 ? void 0 : _a6.number;
  return text7 ? [{ type: "element", name: "issue", elements: [{ type: "text", text: `${text7}` }] }] : [];
}
function getArticlePages(frontmatter) {
  const { first_page, last_page } = frontmatter !== null && frontmatter !== void 0 ? frontmatter : {};
  const pages = [];
  if (first_page) {
    pages.push({
      type: "element",
      name: "fpage",
      elements: [{ type: "text", text: `${first_page}` }]
    });
  }
  if (last_page) {
    pages.push({
      type: "element",
      name: "lpage",
      elements: [{ type: "text", text: `${last_page}` }]
    });
  }
  return pages;
}
function getArticleIds(frontmatter) {
  const ids = [];
  if (doi.validate(frontmatter.doi)) {
    ids.push({
      type: "element",
      name: "article-id",
      attributes: { "pub-id-type": "doi" },
      elements: [{ type: "text", text: doi.normalize(frontmatter.doi) }]
    });
  }
  return ids;
}
function getArticleMeta(frontmatter, state) {
  const elements = [];
  if (frontmatter) {
    elements.push(
      ...getArticleIds(frontmatter),
      ...getArticleTitle(frontmatter),
      ...getArticleAuthors(frontmatter),
      ...getArticleAffiliations(frontmatter),
      ...getArticleVolume(frontmatter),
      ...getArticleIssue(frontmatter),
      ...getArticlePages(frontmatter),
      ...getArticlePermissions(frontmatter)
    );
  }
  if ((state === null || state === void 0 ? void 0 : state.data.abstracts) && state.data.abstracts.length > 0) {
    elements.push(...state.data.abstracts);
  }
  if (frontmatter) {
    elements.push(
      ...getKwdGroup(frontmatter),
      ...getFundingGroup(frontmatter)
    );
  }
  return { type: "element", name: "article-meta", elements };
}
function getFront(frontmatter, state) {
  const elements = [];
  const journalMeta = getJournalMeta();
  if (journalMeta)
    elements.push(journalMeta);
  const articleMeta = getArticleMeta(frontmatter, state);
  elements.push(articleMeta);
  return [{ type: "element", name: "front", elements }];
}

// ../myst-to-jats/dist/types.js
var ACKNOWLEDGMENT_PARTS = ["acknowledgments", "acknowledgements"];
var ABSTRACT_PARTS = ["abstract"];

// ../myst-to-jats/dist/transforms/definitions.js
function definitionTransform(mdast2) {
  const defList = selectAll("definitionList", mdast2);
  defList.forEach((node3) => {
    const children = [];
    let current2 = void 0;
    function pushItem() {
      if (current2 && current2.children.length > 0) {
        children.push(current2);
      }
      current2 = { type: "definitionItem", children: [] };
    }
    node3.children.forEach((child) => {
      if (child.type === "definitionTerm" || !current2) {
        pushItem();
      }
      current2 === null || current2 === void 0 ? void 0 : current2.children.push(child);
    });
    pushItem();
    node3.children = children;
  });
  const defDescriptions = selectAll("definitionDescription", mdast2);
  defDescriptions.forEach((node3) => {
    const allParagraphs = node3.children.reduce((b, n) => b && n.type === "paragraph", true);
    const oneParagraph = !!node3.children.find((n) => n.type === "paragraph");
    if (allParagraphs || !oneParagraph)
      return;
    node3.children = node3.children.map((child) => {
      if (child.type === "paragraph")
        return child;
      return { type: "paragraph", children: [child] };
    });
  });
}

// ../myst-to-jats/dist/transforms/containers.js
function liftCaptionNumber(container4) {
  const caption3 = select("caption", container4);
  const captionNumber3 = select("captionNumber", container4);
  if (caption3)
    remove(caption3, "captionNumber");
  if (captionNumber3)
    container4.children.splice(0, 0, captionNumber3);
}
function containerTransform(mdast2) {
  const figures2 = selectAll("container", mdast2);
  figures2.forEach((container4) => {
    var _a6, _b, _c, _d2;
    liftCaptionNumber(container4);
    if (container4.kind === "quote") {
      const caption4 = select("caption > paragraph", container4);
      const blockquote5 = select("blockquote", container4);
      if (blockquote5 && caption4) {
        const newContainer = container4;
        newContainer.type = "blockquote";
        newContainer.children = blockquote5.children;
        caption4.type = "attrib";
        newContainer.children.push(caption4);
      }
    }
    const caption3 = (_a6 = select("caption", container4)) !== null && _a6 !== void 0 ? _a6 : { type: "caption", children: [] };
    const legends = selectAll("legend", container4);
    if (legends.length) {
      const legendChildren = legends.map((leg) => leg.children).flat();
      caption3.children.push(...legendChildren);
      remove(container4, "legend");
    }
    const { identifier } = (_c = normalizeLabel((_b = container4.source) === null || _b === void 0 ? void 0 : _b.label)) !== null && _c !== void 0 ? _c : {};
    if (identifier && container4.source) {
      caption3.children.push({
        type: "supplementaryMaterial",
        enumerator: container4.enumerator,
        figIdentifier: container4.identifier,
        sourceUrl: container4.source.url,
        sourceSlug: container4.source.slug,
        embedIdentifier: identifier
      });
    }
    if (((_d2 = caption3.children) === null || _d2 === void 0 ? void 0 : _d2.length) && !select("caption", container4)) {
      container4.children.push(caption3);
    }
    if (container4.kind === "figure") {
      container4.children = [
        ...container4.children.filter((child) => child.type.startsWith("caption")),
        ...container4.children.filter((child) => !child.type.startsWith("caption"))
      ];
    }
  });
}

// ../myst-to-jats/dist/transforms/tables.js
function tableTransform(mdast2) {
  const tables = selectAll("table", mdast2);
  tables.forEach((table5) => {
    const head2 = { type: "tableHead", children: [] };
    const body3 = { type: "tableBody", children: [] };
    table5.children.forEach((tr3) => {
      const isHeaderRow2 = tr3.children.reduce((h4, v) => h4 && !!v.header, true);
      if (isHeaderRow2 && body3.children.length === 0) {
        head2.children.push(tr3);
      } else {
        body3.children.push(tr3);
      }
    });
    table5.children = head2.children.length > 0 ? [head2, body3] : [body3];
  });
}

// ../myst-to-jats/dist/transforms/sections.js
function sectionAttrsFromBlock(node3) {
  const output2 = {};
  if (node3.kind) {
    const blockType = node3.kind;
    if (Object.values(NotebookCell).includes(blockType)) {
      output2["sec-type"] = blockType;
    }
  }
  if (node3.identifier)
    output2.id = node3.identifier;
  return output2;
}
function blockIsNotebookCode(node3) {
  return sectionAttrsFromBlock(node3)["sec-type"] === NotebookCell.code;
}
function blockIsNotebookFigure(node3) {
  var _a6;
  return !!((_a6 = node3.data) === null || _a6 === void 0 ? void 0 : _a6["fig-cap"]);
}
function headingsToSections(tree) {
  var _a6;
  const stack = [];
  const children = [];
  function push(child) {
    const top = stack[stack.length - 1];
    if (top) {
      top.children.push(child);
    } else {
      children.push(child);
    }
  }
  function newSection(heading6) {
    const { enumerator, enumerated, ...filtered } = heading6;
    const next = { ...filtered, type: "section", children: [] };
    while (stack[stack.length - 1] && stack[stack.length - 1].depth >= heading6.depth)
      stack.pop();
    push(next);
    stack.push(next);
    return { enumerator, enumerated };
  }
  (_a6 = tree.children) === null || _a6 === void 0 ? void 0 : _a6.forEach((child) => {
    if (child.type === "heading") {
      const { enumerator, enumerated } = newSection(child);
      push({ type: "heading", enumerator, enumerated, children: child.children });
    } else {
      push(child);
    }
  });
  tree.children = children;
}
function sectionTransform(tree, opts) {
  if (opts === null || opts === void 0 ? void 0 : opts.isSubArticle) {
    selectAll("block", tree).forEach((node3) => {
      node3.type = "section";
      node3.depth = 0;
      headingsToSections(node3);
    });
    return;
  }
  selectAll("block", tree).forEach((node3) => {
    if (blockIsNotebookFigure(node3)) {
      node3.type = "section";
    } else if (blockIsNotebookCode(node3)) {
      node3.type = "__delete__";
    }
  });
  const removed = remove(tree, "__delete__");
  if (removed === null) {
    tree.children = [];
  }
  liftChildren(tree, "block");
  headingsToSections(tree);
}

// ../myst-to-jats/dist/transforms/blocks.js
function blocksToKeep(tree, opts) {
  var _a6, _b;
  const keepParts = [...ACKNOWLEDGMENT_PARTS];
  if (opts.extractAbstract) {
    keepParts.push(...(_b = (_a6 = opts.abstractParts) === null || _a6 === void 0 ? void 0 : _a6.map(({ part }) => part).flat()) !== null && _b !== void 0 ? _b : ABSTRACT_PARTS);
  }
  if (opts.backSections) {
    keepParts.push(...opts.backSections.map(({ part }) => part).flat());
  }
  return selectBlockParts(tree, keepParts);
}
function blockTransform(tree, opts) {
  const doNotDelete = blocksToKeep(tree, opts);
  selectAll("[visibility=remove],[visibility=hide]", tree).forEach((node3) => {
    if (node3.visibility === "remove" || node3.visibility === "hide") {
      node3.type = "__delete__";
    }
  });
  doNotDelete.forEach((node3) => {
    node3.type = "block-part";
  });
  const removed = remove(tree, "__delete__");
  if (removed === null) {
    tree.children = [];
  }
}
function restoreBlockPartTypeTransform(tree) {
  selectAll("block-part", tree).forEach((node3) => {
    node3.type = "block";
  });
}

// ../myst-to-jats/dist/transforms/citations.js
function citeGroupTransform(mdast2) {
  const citeGroups = selectAll("citeGroup", mdast2);
  citeGroups.forEach((node3) => {
    if (!node3.children.length || node3.children.filter((child) => child.type !== "cite").length) {
      return;
    }
    const { kind } = node3;
    node3.children.forEach((child) => {
      child.kind = kind;
    });
    const newChildren = [];
    if (kind === "parenthetical") {
      newChildren.push({
        type: "text",
        value: "("
      });
    }
    newChildren.push(node3.children[0]);
    const sep5 = kind === "parenthetical" ? ";" : ",";
    node3.children.slice(1).forEach((child) => {
      newChildren.push({
        type: "text",
        value: `${sep5} `
      }, child);
    });
    if (kind === "parenthetical") {
      newChildren.push({
        type: "text",
        value: ")"
      });
    }
    node3.children = newChildren;
  });
}

// ../myst-to-jats/dist/transforms/references.js
var CONTAINER_KINDS = ["figure", "table", "code", "quote"];
function updateInventory(node3, key2, idPrefix, inventory) {
  var _a6;
  const keyInv = (_a6 = inventory[key2]) !== null && _a6 !== void 0 ? _a6 : { count: 0, lookup: {} };
  keyInv.count += 1;
  const newId = typeof idPrefix === "function" ? idPrefix(keyInv.count) : `${idPrefix}-${keyInv.count}`;
  if (node3.identifier) {
    keyInv.lookup[node3.identifier] = newId;
  }
  node3.identifier = newId;
  inventory[key2] = keyInv;
}
function referenceTargetTransform(mdast2, inventory, citations) {
  const sections = selectAll("section", mdast2);
  sections.forEach((sec) => {
    updateInventory(sec, "section", "sec", inventory);
  });
  const expressions = selectAll("inlineExpression", mdast2);
  expressions.forEach((expr) => {
    updateInventory(expr, "expression", "expr", inventory);
  });
  const equations = selectAll("math", mdast2);
  equations.forEach((eq) => {
    updateInventory(eq, "equation", "eq", inventory);
  });
  const footnotes = selectAll("footnoteDefinition", mdast2);
  footnotes.forEach((fn) => {
    updateInventory(fn, "footnote", "fn", inventory);
  });
  const proofs = selectAll("proof", mdast2);
  proofs.forEach((fn) => {
    updateInventory(fn, "proof", "stm", inventory);
  });
  const containers = selectAll("container", mdast2);
  containers.forEach((container4) => {
    if (!container4.kind || !CONTAINER_KINDS.includes(container4.kind)) {
      return;
    }
    updateInventory(container4, container4.kind, container4.kind, inventory);
  });
  if (!citations)
    return;
  const citationIds = Object.keys(citations);
  citationIds.forEach((citationId) => {
    var _a6;
    (_a6 = inventory.cite) !== null && _a6 !== void 0 ? _a6 : inventory.cite = { count: 0, lookup: {} };
    if (!inventory.cite.lookup[citationId]) {
      inventory.cite.count += 1;
      const newId = `ref-${inventory.cite.count}`;
      inventory.cite.lookup[citationId] = newId;
      citations[newId] = citations[citationId];
    }
    delete citations[citationId];
  });
}
function referenceResolutionTransform(mdast2, inventory) {
  var _a6, _b, _c, _d2, _e, _f, _g, _h;
  const xrefs = selectAll("crossReference", mdast2);
  const lookup2 = {
    ...(_a6 = inventory.section) === null || _a6 === void 0 ? void 0 : _a6.lookup,
    ...(_b = inventory.expression) === null || _b === void 0 ? void 0 : _b.lookup,
    ...(_c = inventory.equation) === null || _c === void 0 ? void 0 : _c.lookup,
    ...(_d2 = inventory.figure) === null || _d2 === void 0 ? void 0 : _d2.lookup,
    ...(_e = inventory.table) === null || _e === void 0 ? void 0 : _e.lookup,
    ...(_f = inventory.code) === null || _f === void 0 ? void 0 : _f.lookup,
    ...(_g = inventory.quote) === null || _g === void 0 ? void 0 : _g.lookup,
    ...(_h = inventory.proof) === null || _h === void 0 ? void 0 : _h.lookup
  };
  xrefs.forEach((xref) => {
    if (xref.identifier && lookup2[xref.identifier]) {
      xref.identifier = lookup2[xref.identifier];
    }
  });
  const supplements = selectAll("supplementaryMaterial", mdast2);
  supplements.forEach((supp) => {
    if (supp.figIdentifier && lookup2[supp.figIdentifier]) {
      supp.figIdentifier = lookup2[supp.figIdentifier];
    }
    if (supp.embedIdentifier && lookup2[supp.embedIdentifier]) {
      supp.embedIdentifier = lookup2[supp.embedIdentifier];
    }
  });
  const footnotes = selectAll("footnoteReference", mdast2);
  footnotes.forEach((fn) => {
    var _a7;
    if (fn.identifier && ((_a7 = inventory.footnote) === null || _a7 === void 0 ? void 0 : _a7.lookup[fn.identifier])) {
      fn.identifier = inventory.footnote.lookup[fn.identifier];
    }
  });
  const citations = selectAll("cite", mdast2);
  citations.forEach((cite3) => {
    var _a7;
    if (cite3.label && ((_a7 = inventory.cite) === null || _a7 === void 0 ? void 0 : _a7.lookup[cite3.label])) {
      cite3.label = inventory.cite.lookup[cite3.label];
    }
  });
}

// ../myst-to-jats/dist/transforms/index.js
function basicTransformations2(tree, opts) {
  blockTransform(tree, opts);
  definitionTransform(tree);
  containerTransform(tree);
  tableTransform(tree);
  sectionTransform(tree, opts);
  citeGroupTransform(tree);
  restoreBlockPartTypeTransform(tree);
}

// ../myst-to-jats/dist/transforms/frontmatter.js
function affiliationIdTransform(frontmatters, idPrefix) {
  let affCount = 0;
  frontmatters.forEach((frontmatter) => {
    var _a6, _b, _c;
    const idLookup = {};
    (_a6 = frontmatter.authors) === null || _a6 === void 0 ? void 0 : _a6.forEach((auth) => {
      var _a7;
      if (!((_a7 = auth.affiliations) === null || _a7 === void 0 ? void 0 : _a7.length))
        return;
      auth.affiliations = auth.affiliations.map((aff) => {
        if (idLookup[aff]) {
          return idLookup[aff];
        } else {
          affCount += 1;
          const id = typeof idPrefix === "function" ? idPrefix(affCount) : `${idPrefix}-${affCount}`;
          idLookup[aff] = id;
          return id;
        }
      });
    });
    (_b = frontmatter.funding) === null || _b === void 0 ? void 0 : _b.forEach((funding) => {
      var _a7;
      (_a7 = funding.awards) === null || _a7 === void 0 ? void 0 : _a7.forEach((award) => {
        if (!award.sources)
          return;
        award.sources = award.sources.map((source2) => {
          if (idLookup[source2])
            return idLookup[source2];
          return source2;
        });
      });
    });
    (_c = frontmatter.affiliations) === null || _c === void 0 ? void 0 : _c.forEach((aff) => {
      if (aff.id && idLookup[aff.id]) {
        aff.id = idLookup[aff.id];
      }
    });
  });
}

// ../myst-to-jats/dist/inlineExpression.js
var inlineExpression2 = (node3, state) => {
  const { identifier, value } = node3;
  state.renderInline(node3, "xref", {
    "ref-type": "custom",
    "custom-type": "expression",
    rid: identifier
  });
  const element5 = {
    type: "element",
    name: "sec",
    attributes: { id: identifier, "sec-type": "expression" },
    elements: [
      {
        type: "element",
        name: "code",
        attributes: { executable: "yes" },
        elements: [{ type: "text", text: value }]
      },
      {
        type: "element",
        name: "sec",
        attributes: { "sec-type": "notebook-output" },
        elements: [{ type: "element", name: "p", elements: [{ type: "text", text: value }] }]
      }
    ]
  };
  state.warn("JATS representations of inline expressions is not complete", node3);
  if (element5)
    state.expressions.push(element5);
};

// ../myst-to-jats/dist/index.js
function escapeForXML2(text7) {
  return text7.replace(/&(?!amp;)/g, "&amp;").replace(/</g, "&lt;").replace(/​/g, "");
}
function referenceKindToRefType(kind) {
  switch (kind === null || kind === void 0 ? void 0 : kind.split(":")[0]) {
    case "heading":
      return RefType.sec;
    case "figure":
      return RefType.fig;
    case "subequation":
    case "equation":
      return RefType.dispFormula;
    case "table":
      return RefType.table;
    case "proof":
      return RefType.statement;
    default:
      return RefType.custom;
  }
}
function renderLabel(node3, state, template = (s5) => s5) {
  const { enumerated, enumerator } = node3;
  if (enumerated !== false && enumerator) {
    state.openNode("label");
    state.text(template(enumerator));
    state.closeNode();
  }
}
function alternativesFromMinifiedOutput(output2, state) {
  var _a6;
  state.openNode("alternatives");
  if (output2.output_type === "error") {
    state.openNode("media", {
      "specific-use": "error",
      mimetype: "text",
      "mime-subtype": "plain",
      "xlink:href": output2.path
    });
    state.openNode("caption");
    state.openNode("title");
    state.text(output2.ename);
    state.closeNode();
    state.openNode("p");
    state.text(output2.evalue);
    state.closeNode();
    state.closeNode();
    state.closeNode();
  } else if (output2.output_type === "stream") {
    state.addLeaf("media", {
      "specific-use": "stream",
      mimetype: "text",
      "mime-subtype": "plain",
      "xlink:href": output2.path
    });
  } else if (["display_data", "execute_result", "update_display_data"].includes(output2.output_type)) {
    Object.entries((_a6 = output2.data) !== null && _a6 !== void 0 ? _a6 : {}).forEach(([mimeType, value]) => {
      let leafType;
      let specificUse;
      if (mimeType.startsWith("image/")) {
        leafType = "graphic";
        specificUse = "print";
      } else if (mimeType === "text/html") {
        leafType = "media";
        specificUse = "web";
      } else if (mimeType === "text/plain") {
        leafType = "media";
        specificUse = "text";
      } else {
        leafType = "media";
        specificUse = "original-format";
      }
      state.addLeaf(leafType, {
        "specific-use": specificUse,
        mimetype: mimeType.split("/")[0],
        "mime-subtype": mimeType.split("/").slice(1).join("/"),
        "xlink:href": value.path
      });
    });
  }
  state.closeNode();
}
function addMmlAndRemoveAnnotation(el) {
  if (el === null || el === void 0 ? void 0 : el.name)
    el.name = `mml:${el.name}`;
  if (!(el === null || el === void 0 ? void 0 : el.elements))
    return;
  el.elements = el.elements.filter((child) => child.name !== "annotation");
  el.elements.forEach((child) => {
    addMmlAndRemoveAnnotation(child);
  });
}
function mathToMml(node3) {
  var _a6, _b, _c, _d2, _e;
  const math7 = copyNode(node3);
  renderEquation(new VFile(), math7, { mathML: true });
  const katexJs = math7.html ? (0, import_xml_js2.xml2js)(math7.html, { compact: false }) : void 0;
  const spanElement = (_a6 = katexJs === null || katexJs === void 0 ? void 0 : katexJs.elements) === null || _a6 === void 0 ? void 0 : _a6[0];
  const mathElement = (_b = spanElement === null || spanElement === void 0 ? void 0 : spanElement.elements) === null || _b === void 0 ? void 0 : _b[0];
  if (!mathElement)
    return;
  const inline = node3.type === "inlineMath";
  if (inline)
    mathElement.attributes = { ...mathElement.attributes, display: "inline" };
  (_c = mathElement.attributes) === null || _c === void 0 ? true : delete _c.xmlns;
  addMmlAndRemoveAnnotation(mathElement);
  if (((_d2 = mathElement === null || mathElement === void 0 ? void 0 : mathElement.elements) === null || _d2 === void 0 ? void 0 : _d2.length) === 1 && mathElement.elements[0].name === "mml:semantics") {
    mathElement.elements = mathElement.elements[0].elements;
  }
  if (((_e = mathElement === null || mathElement === void 0 ? void 0 : mathElement.elements) === null || _e === void 0 ? void 0 : _e.length) === 1 && mathElement.elements[0].name === "mml:mrow") {
    mathElement.elements = mathElement.elements[0].elements;
  }
  return mathElement;
}
function cleanLatex(value) {
  if (!value)
    return;
  return value.split("\n").map((s5) => s5.replace(/%(.*)/, "").trim()).join(" ").trim();
}
function capitalize(kind) {
  if (!kind)
    return "";
  return kind.slice(0, 1).toUpperCase() + kind.slice(1);
}
var handlers5 = {
  text(node3, state) {
    state.text(node3.value);
  },
  paragraph(node3, state) {
    state.renderInline(node3, "p");
  },
  section(node3, state) {
    state.renderInline(node3, "sec", sectionAttrsFromBlock(node3));
  },
  heading(node3, state) {
    renderLabel(node3, state);
    state.renderInline(node3, "title");
  },
  block(node3, state) {
    if (node3.visibility === "remove" || node3.visibility === "hide")
      return;
    state.renderChildren(node3);
  },
  blockquote(node3, state) {
    state.renderInline(node3, "disp-quote");
  },
  definitionList(node3, state) {
    state.renderInline(node3, "def-list");
  },
  definitionItem(node3, state) {
    state.renderInline(node3, "def-item");
  },
  definitionTerm(node3, state) {
    state.renderInline(node3, "term");
  },
  definitionDescription(node3, state) {
    var _a6;
    state.openNode("def");
    if (((_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6[0].type) === "paragraph") {
      state.renderChildren(node3);
    } else {
      state.renderInline(node3, "p");
    }
    state.closeNode();
  },
  code(node3, state) {
    const { lang, executable, identifier } = node3;
    const attrs = { language: lang };
    if (executable)
      attrs.executable = "yes";
    if (identifier)
      attrs.id = identifier;
    state.renderInline(node3, "code", attrs);
  },
  list(node3, state) {
    state.renderInline(node3, "list", { "list-type": node3.ordered ? "order" : "bullet" });
  },
  listItem(node3, state) {
    var _a6;
    state.openNode("list-item");
    if (((_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6[0].type) === "paragraph") {
      state.renderChildren(node3);
    } else {
      state.renderInline(node3, "p");
    }
    state.closeNode();
  },
  thematicBreak(node3, state) {
    state.warn("The use of thematic breaks should be restricted to use inside table cells.", node3, "thematicBreak", {
      url: "https://jats.nlm.nih.gov/archiving/tag-library/1.3/element/hr.html"
    });
  },
  inlineMath(node3, state) {
    const inlineFormulaAttrs = {};
    if (node3.identifier) {
      inlineFormulaAttrs.id = node3.identifier;
    }
    state.openNode("inline-formula", inlineFormulaAttrs);
    state.openNode("alternatives");
    state.pushNode(mathToMml(node3));
    state.openNode("tex-math");
    state.addLeaf("cdata", { cdata: cleanLatex(node3.value) });
    state.closeNode();
    state.closeNode();
    state.closeNode();
  },
  math(node3, state) {
    const dispFormulaAttrs = {};
    if (node3.identifier) {
      dispFormulaAttrs.id = node3.identifier;
    }
    state.openNode("disp-formula", dispFormulaAttrs);
    state.openNode("alternatives");
    state.pushNode(mathToMml(node3));
    state.openNode("tex-math");
    state.addLeaf("cdata", { cdata: cleanLatex(node3.value) });
    state.closeNode();
    state.closeNode();
    renderLabel(node3, state, (enumerator) => `(${enumerator})`);
    state.closeNode();
  },
  mathGroup(node3, state) {
    const attrs = {};
    if (node3.identifier) {
      attrs.id = node3.identifier;
    }
    state.openNode("disp-formula-group", attrs);
    renderLabel(node3, state, (enumerator) => `(${enumerator})`);
    state.renderChildren(node3);
    state.closeNode();
  },
  mystRole(node3, state) {
    state.renderChildren(node3);
  },
  mystDirective(node3, state) {
    state.renderChildren(node3);
  },
  comment() {
  },
  strong(node3, state) {
    state.renderInline(node3, "bold");
  },
  emphasis(node3, state) {
    state.renderInline(node3, "italic");
  },
  underline(node3, state) {
    state.renderInline(node3, "underline");
  },
  inlineCode(node3, state) {
    state.renderInline(node3, "monospace");
  },
  subscript(node3, state) {
    state.renderInline(node3, "sub");
  },
  superscript(node3, state) {
    state.renderInline(node3, "sup");
  },
  delete(node3, state) {
    state.renderInline(node3, "strike");
  },
  smallcaps(node3, state) {
    state.renderInline(node3, "sc");
  },
  span(node3, state) {
    state.renderChildren(node3);
  },
  break(node3, state, parent2) {
    if (parent2.type === "paragraph" || parent2.type === "listItem") {
      state.warn(`There are no breaks allowed in ${parent2.type}s.`, node3, "break", {
        url: "https://jats.nlm.nih.gov/archiving/tag-library/1.3/element/break.html"
      });
      return;
    }
    state.addLeaf("break");
  },
  abbreviation(node3, state) {
    state.renderInline(node3, "abbrev", { alt: node3.title });
  },
  link(node3, state) {
    state.renderInline(node3, "ext-link", {
      "ext-link-type": "uri",
      "xlink:href": node3.url
    });
  },
  admonition(node3, state) {
    state.renderInline(node3, "boxed-text", { "content-type": node3.kind });
  },
  admonitionTitle(node3, state) {
    state.openNode("caption");
    state.renderInline(node3, "title");
    state.closeNode();
  },
  attrib(node3, state) {
    state.renderInline(node3, "attrib");
  },
  table(node3, state) {
    state.renderInline(node3, "table");
  },
  tableHead(node3, state) {
    state.renderInline(node3, "thead");
  },
  tableBody(node3, state) {
    state.renderInline(node3, "tbody");
  },
  tableFooter(node3, state) {
    state.renderInline(node3, "tfoot");
  },
  tableRow(node3, state) {
    state.renderInline(node3, "tr");
  },
  tableCell(node3, state) {
    const { align, colspan, rowspan } = node3;
    state.renderInline(node3, node3.header ? "th" : "td", {
      align,
      colspan: colspan ? String(colspan) : void 0,
      rowspan: rowspan ? String(rowspan) : void 0
    });
  },
  image(node3, state) {
    var _a6, _b, _c;
    if ((_a6 = node3.url) === null || _a6 === void 0 ? void 0 : _a6.startsWith("http")) {
      state.warn(`Image URL is remote (${node3.url})`, node3, "image");
    }
    if (state.data.isInContainer && node3.alt && !((_b = node3.data) === null || _b === void 0 ? void 0 : _b.altTextIsAutoGenerated)) {
      state.openNode("alt-text");
      state.text(node3.alt);
      state.closeNode();
    }
    const attrs = { mimetype: "image" };
    const ext2 = node3.url ? (_c = node3.url.split(".").slice(-1)) === null || _c === void 0 ? void 0 : _c[0] : "";
    if (ext2)
      attrs["mime-subtype"] = ext2;
    attrs["xlink:href"] = node3.url;
    if (node3.placeholder)
      state.openNode("alternatives");
    state.addLeaf("graphic", attrs);
    if (node3.placeholder)
      state.closeNode();
  },
  container(node3, state) {
    state.data.isInContainer = true;
    switch (node3.kind) {
      case "figure": {
        state.renderInline(node3, "fig");
        break;
      }
      case "table": {
        state.renderInline(node3, "table-wrap");
        break;
      }
      case "quote": {
        state.renderChildren(node3);
        break;
      }
      case "code": {
        state.renderInline(node3, "boxed-text", { "content-type": node3.kind });
        break;
      }
      default: {
        state.error(`Unhandled container kind of ${node3.kind}`, node3, "container");
        state.renderChildren(node3);
      }
    }
    delete state.data.isInContainer;
  },
  caption(node3, state) {
    state.renderInline(node3, "caption");
  },
  captionNumber(node3, state) {
    delete node3.identifier;
    state.renderInline(node3, "label");
  },
  crossReference(node3, state) {
    const { identifier, kind } = node3;
    const attrs = { "ref-type": referenceKindToRefType(kind), rid: identifier };
    if (attrs["ref-type"] === RefType.custom && kind) {
      attrs["custom-type"] = kind;
    }
    state.renderInline(node3, "xref", attrs);
  },
  citeGroup(node3, state) {
    state.renderChildren(node3);
  },
  cite(node3, state) {
    const { label } = node3;
    const attrs = {
      "ref-type": "bibr",
      rid: label
    };
    if (!state.referenceOrder.includes(label)) {
      state.referenceOrder.push(label);
    }
    state.renderInline(node3, "xref", attrs);
  },
  footnoteReference(node3, state) {
    const { identifier, enumerator } = node3;
    const attrs = {
      "ref-type": "fn",
      rid: identifier
    };
    state.openNode("xref", attrs);
    state.text(enumerator);
    state.closeNode();
  },
  footnoteDefinition(node3, state) {
    const { identifier, enumerator } = node3;
    state.openNode("fn", { id: identifier });
    state.openNode("label");
    state.text(enumerator);
    state.closeNode();
    state.renderChildren(node3);
    const element5 = state.stack.pop();
    if (element5)
      state.footnotes.push(element5);
  },
  si(node3, state) {
    const hasNumber = node3.number != null;
    if (hasNumber) {
      state.openNode("named-content", { "content-type": "quantity" });
      state.text(`${node3.number} `);
    }
    state.openNode("abbrev", { "content-type": "unit", alt: node3.alt });
    state.text(node3.unit);
    state.closeNode();
    if (hasNumber)
      state.closeNode();
  },
  proof(node3, state) {
    var _a6;
    state.openNode("statement", { "specific-use": node3.kind, id: node3.identifier });
    const [title, ...rest] = (_a6 = node3.children) !== null && _a6 !== void 0 ? _a6 : [];
    const useTitle = title && title.type === "admonitionTitle";
    if (node3.enumerated) {
      state.openNode("label");
      state.text(`${capitalize(node3.kind)} ${node3.enumerator}`);
      state.closeNode();
    }
    if (useTitle) {
      state.openNode("title");
      state.renderChildren(title);
      state.closeNode();
    }
    state.renderChildren(useTitle ? rest : node3.children);
    state.closeNode();
  },
  algorithmLine(node3, state) {
    state.openNode("p", { "specific-use": "line" });
    if (node3.enumerator) {
      state.openNode("x");
      state.text(`${node3.enumerator}: `);
      state.closeNode();
    }
    state.text(Array(node3.indent).fill("\u2003").join(""));
    state.renderChildren(node3);
    state.closeNode();
  },
  output(node3, state) {
    var _a6, _b;
    if (state.data.isInContainer) {
      if (!((_a6 = node3.data) === null || _a6 === void 0 ? void 0 : _a6[0]))
        return;
      alternativesFromMinifiedOutput(node3.data[0], state);
      return;
    }
    const { identifier } = node3;
    const attrs = { "sec-type": "notebook-output" };
    (_b = node3.data) === null || _b === void 0 ? void 0 : _b.forEach((output2, index4) => {
      state.openNode("sec", {
        ...attrs,
        id: identifier && !state.data.isNotebookArticleRep ? `${identifier}-${index4}` : void 0
      });
      alternativesFromMinifiedOutput(output2, state);
      state.closeNode();
    });
  },
  embed(node3, state) {
    if (state.data.isInContainer) {
      return;
    }
    state.renderChildren(node3);
  },
  supplementaryMaterial(node3, state) {
    const smNode = node3;
    state.openNode("p");
    const smAttrs = {};
    if (smNode.figIdentifier) {
      smAttrs.id = `${smNode.figIdentifier}-source`;
    }
    smAttrs["specific-use"] = "notebook";
    state.openNode("supplementary-material", smAttrs);
    renderLabel(node3, state, (s5) => `Figure ${s5} - Notebook.`);
    state.openNode("caption");
    state.openNode("title");
    state.text("Analysis for ");
    if (smNode.figIdentifier) {
      state.openNode("xref", { "ref-type": "fig", rid: smNode.figIdentifier });
    }
    state.text("Figure" + (smNode.enumerator ? ` ${smNode.enumerator}` : ""));
    if (smNode.figIdentifier) {
      state.closeNode();
    }
    state.text(".");
    state.closeNode();
    state.openNode("p");
    state.text("See methods");
    if (smNode.sourceSlug) {
      state.text(" in ");
      state.openNode("xref", {
        "ref-type": "custom",
        "custom-type": "notebook",
        rid: smNode.sourceSlug
      });
      state.text("notebook");
      state.closeNode();
    }
    if (smNode.embedIdentifier) {
      state.text(" from ");
      state.openNode("xref", {
        "ref-type": "custom",
        "custom-type": "notebook-code",
        rid: smNode.embedIdentifier
      });
      state.text("cell");
      state.closeNode();
    }
    state.text(".");
    state.closeNode();
    state.closeNode();
    state.closeNode();
    state.closeNode();
  },
  inlineExpression: inlineExpression2
};
function createText2(text7) {
  return { type: "text", text: escapeForXML2(text7) };
}
function renderPart(vfile2, mdast2, part, opts) {
  const { frontmatterParts, ...otherOpts } = opts !== null && opts !== void 0 ? opts : {};
  const partMdast = extractPart(mdast2, part, {
    removePartData: true,
    frontmatterParts
  });
  if (!partMdast)
    return void 0;
  const serializer = new JatsSerializer(vfile2, partMdast, otherOpts);
  return serializer.render(true).elements();
}
function renderAbstract(vfile2, mdast2, def, opts) {
  const elements = renderPart(vfile2, mdast2, def.part, opts);
  if (!elements)
    return void 0;
  const abstract = { type: "element", name: "abstract", elements };
  if (def.title)
    abstract.elements = [
      { type: "element", name: "title", elements: [{ type: "text", text: def.title }] },
      ...abstract.elements
    ];
  if (def.type)
    abstract.attributes = { "abstract-type": def.type };
  return abstract;
}
function renderAcknowledgments(vfile2, mdast2, opts) {
  const elements = renderPart(vfile2, mdast2, ACKNOWLEDGMENT_PARTS, opts);
  if (!elements)
    return void 0;
  const acknowledgments = { type: "element", name: "ack", elements };
  return acknowledgments;
}
function renderBackSection(vfile2, mdast2, def, opts) {
  const elements = renderPart(vfile2, mdast2, def.part, opts);
  if (!elements)
    return void 0;
  const sec = { type: "element", name: "sec", elements };
  if (def.title)
    sec.elements = [
      { type: "element", name: "title", elements: [{ type: "text", text: def.title }] },
      ...sec.elements
    ];
  if (def.type)
    sec.attributes = { "sec-type": def.type };
  return sec;
}
var JatsSerializer = class {
  constructor(file, mdast2, opts) {
    var _a6;
    this.file = file;
    this.data = {
      isNotebookArticleRep: opts === null || opts === void 0 ? void 0 : opts.isNotebookArticleRep,
      slug: opts === null || opts === void 0 ? void 0 : opts.slug
    };
    this.stack = [{ type: "element", elements: [] }];
    this.footnotes = [];
    this.expressions = [];
    this.referenceOrder = [];
    this.handlers = (_a6 = opts === null || opts === void 0 ? void 0 : opts.handlers) !== null && _a6 !== void 0 ? _a6 : handlers5;
    this.mdast = copyNode(mdast2);
    this.opts = opts !== null && opts !== void 0 ? opts : {};
    basicTransformations2(this.mdast, opts !== null && opts !== void 0 ? opts : {});
  }
  render(ignoreParts) {
    var _a6, _b, _c, _d2;
    if (!ignoreParts) {
      if ((_a6 = this.opts) === null || _a6 === void 0 ? void 0 : _a6.extractAbstract) {
        const abstractParts = (_b = this.opts.abstractParts) !== null && _b !== void 0 ? _b : ABSTRACT_PARTS.map((part) => {
          return { part };
        });
        this.data.abstracts = abstractParts.map((def) => renderAbstract(this.file, this.mdast, def, this.opts)).filter((e2) => !!e2);
      }
      this.data.acknowledgments = renderAcknowledgments(this.file, this.mdast, this.opts);
      const backSections = (_d2 = (_c = this.opts) === null || _c === void 0 ? void 0 : _c.backSections) !== null && _d2 !== void 0 ? _d2 : [];
      this.data.backSections = backSections.map((def) => renderBackSection(this.file, this.mdast, def, this.opts)).filter((e2) => !!e2);
    }
    this.renderChildren(this.mdast);
    while (this.stack.length > 1)
      this.closeNode();
    return this;
  }
  top() {
    return this.stack[this.stack.length - 1];
  }
  warn(message, node3, source2, opts) {
    fileError(this.file, message, {
      ...opts,
      node: node3,
      source: source2 ? `myst-to-jats:${source2}` : "myst-to-jats",
      ruleId: RuleId.jatsRenders
    });
  }
  error(message, node3, source2, opts) {
    fileError(this.file, message, {
      ...opts,
      node: node3,
      source: source2 ? `myst-to-jats:${source2}` : "myst-to-jats",
      ruleId: RuleId.jatsRenders
    });
  }
  pushNode(el) {
    var _a6;
    const top = this.top();
    if (this.stack.length && el && "elements" in top)
      (_a6 = top.elements) === null || _a6 === void 0 ? void 0 : _a6.push(el);
    return el;
  }
  text(text7) {
    var _a6, _b;
    const top = this.top();
    const value = text7;
    if (!value || !this.stack.length || !("elements" in top))
      return;
    const last = (_a6 = top.elements) === null || _a6 === void 0 ? void 0 : _a6[top.elements.length - 1];
    if ((last === null || last === void 0 ? void 0 : last.type) === "text") {
      last.text += `${escapeForXML2(value)}`;
      return last;
    }
    const node3 = createText2(value);
    (_b = top.elements) === null || _b === void 0 ? void 0 : _b.push(node3);
    return node3;
  }
  renderChildren(node3) {
    const parent2 = Array.isArray(node3) ? { children: node3 } : node3;
    const children = Array.isArray(node3) ? node3 : node3.children;
    children === null || children === void 0 ? void 0 : children.forEach((child) => {
      const handler = this.handlers[child.type];
      if (handler) {
        handler(child, this, parent2);
      } else {
        fileError(this.file, `Unhandled JATS conversion for node of "${child.type}"`, {
          node: child,
          source: "myst-to-jats"
        });
      }
    });
  }
  renderInline(node3, name3, attributes) {
    this.openNode(name3, {
      id: name3 !== "xref" && node3.identifier ? node3.identifier : void 0,
      ...attributes
    });
    if ("children" in node3) {
      this.renderChildren(node3);
    } else if ("value" in node3 && node3.value) {
      this.text(node3.value);
    }
    this.closeNode();
  }
  addLeaf(name3, attributes) {
    this.openNode(name3, attributes, true);
    this.closeNode();
  }
  openNode(name3, attributes, isLeaf = false) {
    const node3 = name3 === "cdata" ? { type: "cdata", cdata: attributes === null || attributes === void 0 ? void 0 : attributes.cdata } : { type: "element", name: name3, attributes };
    if (!isLeaf)
      node3.elements = [];
    this.stack.push(node3);
  }
  closeNode() {
    const node3 = this.stack.pop();
    return this.pushNode(node3);
  }
  elements() {
    var _a6;
    return (_a6 = this.stack[0].elements) !== null && _a6 !== void 0 ? _a6 : [];
  }
};
var JatsDocument = class {
  constructor(file, content3, opts) {
    this.file = file;
    this.options = opts !== null && opts !== void 0 ? opts : {};
    this.content = content3;
  }
  article(articleType, specificUse) {
    var _a6, _b;
    const attributes = {
      "xmlns:mml": "http://www.w3.org/1998/Math/MathML",
      "xmlns:xlink": "http://www.w3.org/1999/xlink",
      "xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
      "xmlns:ali": "http://www.niso.org/schemas/ali/1.0/",
      // Used for the licensing
      "dtd-version": "1.3",
      "xml:lang": "en"
    };
    if (articleType)
      attributes["article-type"] = articleType;
    if (specificUse)
      attributes["specific-use"] = specificUse;
    const isNotebookArticleRep = this.content.kind === SourceFileKind.Notebook;
    if (this.content.slug) {
      attributes.id = `${this.content.slug}${isNotebookArticleRep ? "-article" : ""}`;
    }
    const articleState = new JatsSerializer(this.file, this.content.mdast, {
      ...this.options,
      isNotebookArticleRep,
      extractAbstract: true,
      frontmatterParts: (_a6 = this.content.frontmatter) === null || _a6 === void 0 ? void 0 : _a6.parts
    });
    const inventory = {};
    referenceTargetTransform(articleState.mdast, inventory, this.content.citations);
    const subArticles = (_b = this.options.subArticles) !== null && _b !== void 0 ? _b : [];
    if (isNotebookArticleRep) {
      subArticles.unshift({
        mdast: copyNode(this.content.mdast),
        kind: this.content.kind,
        frontmatter: this.content.frontmatter,
        slug: this.content.slug
        // No citations here - don't want duplicates in the jats
      });
    }
    affiliationIdTransform([this.content.frontmatter, ...subArticles.map((a2) => a2.frontmatter)].filter((fm) => !!fm), "aff");
    const subArticleStates = subArticles.map((subArticle, ind) => {
      const subArticleState = this.subArticleState(subArticle, ind === 0 && isNotebookArticleRep);
      referenceTargetTransform(subArticleState.mdast, inventory, subArticle.citations);
      return subArticleState;
    });
    [articleState, ...subArticleStates].forEach((state) => {
      referenceResolutionTransform(state.mdast, inventory);
      state.render();
    });
    const elements = [
      ...getFront(this.content.frontmatter, articleState),
      this.body(articleState),
      ...getBack(articleState, {
        citations: this.content.citations,
        footnotes: articleState.footnotes,
        expressions: articleState.expressions,
        referenceOrder: articleState.referenceOrder
      }),
      ...subArticleStates.map((state, ind) => {
        return this.subArticle(state, subArticles[ind], ind === 0 && isNotebookArticleRep);
      })
    ];
    const article = {
      type: "element",
      name: Tags.article,
      attributes,
      elements
    };
    return article;
  }
  frontStub(frontmatter, state, notebookRep) {
    var _a6, _b;
    const stubFrontmatter = {};
    if (frontmatter) {
      Object.entries(frontmatter).forEach(([key2, val]) => {
        var _a7;
        const articleVal = (_a7 = this.content.frontmatter) === null || _a7 === void 0 ? void 0 : _a7[key2];
        if (articleVal == null || JSON.stringify(val) !== JSON.stringify(articleVal)) {
          stubFrontmatter[key2] = val;
        }
      });
    }
    const articleMeta = getArticleMeta(stubFrontmatter, state);
    let elements = (_a6 = articleMeta === null || articleMeta === void 0 ? void 0 : articleMeta.elements) !== null && _a6 !== void 0 ? _a6 : [];
    if (notebookRep) {
      const articleVersion = {
        type: "element",
        name: "article-version",
        attributes: { "article-version-type": "alt representation" },
        elements: [{ type: "text", text: "notebook" }]
      };
      if (((_b = elements[0]) === null || _b === void 0 ? void 0 : _b.name) === "article-id") {
        elements = [elements[0], articleVersion, ...elements.slice(1)];
      } else {
        elements.unshift(articleVersion);
      }
    }
    return [{ type: "element", name: "front-stub", elements }];
  }
  subArticleState(content3, notebookRep) {
    var _a6;
    return new JatsSerializer(this.file, content3.mdast, {
      ...this.options,
      isNotebookArticleRep: false,
      isSubArticle: true,
      slug: content3.slug,
      extractAbstract: !notebookRep,
      frontmatterParts: (_a6 = content3.frontmatter) === null || _a6 === void 0 ? void 0 : _a6.parts
    });
  }
  subArticle(subArticleState, content3, notebookRep) {
    const elements = [
      ...this.frontStub(content3.frontmatter, subArticleState, notebookRep),
      { type: "element", name: "body", elements: subArticleState.elements() },
      ...getBack(subArticleState, {
        citations: content3.citations,
        footnotes: subArticleState.footnotes,
        expressions: subArticleState.expressions,
        referenceOrder: subArticleState.referenceOrder
      })
    ];
    const attributes = {};
    if (content3.slug)
      attributes.id = content3.slug;
    return { type: "element", name: "sub-article", elements, attributes };
  }
  body(state) {
    if (!state) {
      state = new JatsSerializer(this.file, this.content.mdast, this.options);
      state.render();
    }
    return { type: "element", name: "body", elements: state.elements() };
  }
};
function writeJats(file, content3, opts) {
  const doc = new JatsDocument(file, content3, opts);
  const element5 = (opts === null || opts === void 0 ? void 0 : opts.writeFullArticle) ? {
    type: "element",
    elements: [
      {
        type: "doctype",
        doctype: 'article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD with MathML3 v1.3 20210610//EN" "http://jats.nlm.nih.gov/publishing/1.3/JATS-archivearticle1-3-mathml3.dtd"'
      },
      doc.article()
    ],
    declaration: { attributes: { version: "1.0", encoding: "UTF-8" } }
  } : doc.body();
  const xml2 = serializeJatsXml(element5, opts);
  file.result = xml2;
  return file;
}

// ../myst-cli/dist/build/jats/single.js
async function runJatsExport(session, sourceFile, exportOptions, opts) {
  const toc = tic();
  const { output: output2, articles, sub_articles } = exportOptions;
  const { clean: clean3, projectPath, extraLinkTransformers, execute } = opts !== null && opts !== void 0 ? opts : {};
  const article = articles[0];
  if (!(article === null || article === void 0 ? void 0 : article.file))
    return { tempFolders: [] };
  if (clean3)
    cleanOutput(session, output2);
  const processedContents = (await getFileContent(session, [article.file, ...sub_articles !== null && sub_articles !== void 0 ? sub_articles : []], {
    projectPath,
    imageExtensions: KNOWN_IMAGE_EXTENSIONS,
    extraLinkTransformers,
    preFrontmatters: [
      filterKeys(article, [...PAGE_FRONTMATTER_KEYS, ...Object.keys(FRONTMATTER_ALIASES)])
    ],
    // only apply to article, not sub_articles
    execute
  })).map((content3) => {
    const { kind, file, mdast: mdast2, frontmatter, slug } = content3;
    const rendererFiles = projectPath ? [projectPath, file] : [file];
    const citations = combineCitationRenderers(castSession(session), ...rendererFiles);
    return { mdast: mdast2, kind, frontmatter, citations, slug, file };
  });
  await Promise.all(processedContents.map(({ mdast: mdast2, frontmatter, file }) => {
    return finalizeMdast(session, mdast2, frontmatter, file, {
      imageWriteFolder: import_node_path48.default.join(import_node_path48.default.dirname(output2), "files"),
      imageAltOutputFolder: "files/",
      imageExtensions: KNOWN_IMAGE_EXTENSIONS,
      simplifyFigures: false
    });
  }));
  const [processedArticle, ...processedSubArticles] = processedContents.map(({ frontmatter, ...contents }) => {
    const parts = resolveFrontmatterParts(session, frontmatter);
    return { frontmatter: { ...frontmatter, parts }, ...contents };
  });
  const vfile2 = new VFile();
  vfile2.path = output2;
  const jats = writeJats(vfile2, processedArticle, {
    subArticles: processedSubArticles,
    writeFullArticle: true,
    format: "pretty",
    abstractParts: [
      { part: "abstract" },
      {
        part: [
          "plain-language-summary",
          "plain-language-abstract",
          "summary",
          "plain language summary"
        ],
        type: "plain-language-summary",
        title: "Plain Language Summary"
      },
      { part: "keypoints", type: "key-points", title: "Key Points" }
    ],
    backSections: [
      {
        part: ["data-availability", "data_availability", "availability", "data availability"],
        type: "data-availability",
        title: "Data Availability"
      }
    ]
    // if we want to add templating here, we have access to { ...processedArticle.frontmatter.options, ...exportOptions }
  });
  logMessagesFromVFile(session, jats);
  session.log.info(toc(`\u{1F4D1} Exported JATS in %s, copying to ${output2}`));
  writeFileToFolder(output2, jats.result);
  return { tempFolders: [] };
}

// ../myst-cli/dist/build/pdf/single.js
var import_node_path50 = __toESM(require("path"), 1);

// ../myst-cli/dist/build/pdf/create.js
var import_node_fs39 = __toESM(require("fs"), 1);
var import_node_path49 = __toESM(require("path"), 1);
var import_util5 = __toESM(require("util"), 1);

// ../myst-cli/dist/build/pdf/utils.js
var import_which7 = __toESM(require_lib15(), 1);
function isLatexmkAvailable() {
  return import_which7.default.sync("latexmk", { nothrow: true });
}
function isMakeglossariesAvailable() {
  return import_which7.default.sync("makeglossaries", { nothrow: true });
}

// ../myst-cli/dist/build/pdf/create.js
var copyFile = import_util5.default.promisify(import_node_fs39.default.copyFile);
function copyContents(srcFolder, destFolder) {
  import_node_fs39.default.readdirSync(srcFolder).forEach((item) => {
    const srcItemPath = import_node_path49.default.join(srcFolder, item);
    const destItemPath = import_node_path49.default.join(destFolder, item);
    if (import_node_fs39.default.lstatSync(srcItemPath).isDirectory()) {
      import_node_fs39.default.mkdirSync(destItemPath);
      copyContents(srcItemPath, destItemPath);
    } else {
      import_node_fs39.default.copyFileSync(srcItemPath, destItemPath);
    }
  });
}
function getLogOutputFolder(pdfOutput) {
  const pdfBasename = import_node_path49.default.basename(pdfOutput, import_node_path49.default.extname(pdfOutput));
  return import_node_path49.default.join(import_node_path49.default.dirname(pdfOutput), `${pdfBasename}_pdf_logs`);
}
function getTexOutputFolder(pdfOutput) {
  const pdfBasename = import_node_path49.default.basename(pdfOutput, import_node_path49.default.extname(pdfOutput));
  return import_node_path49.default.join(import_node_path49.default.dirname(pdfOutput), `${pdfBasename}_pdf_tex`);
}
async function createPdfGivenTexExport(session, texExportOptions, pdfOutput, copyLogs, clean3, glossaries) {
  if (clean3)
    cleanOutput(session, pdfOutput);
  const vfile2 = new VFile();
  vfile2.path = pdfOutput;
  const { output: texOutput, template } = texExportOptions;
  const templateLogString = `(${template !== null && template !== void 0 ? template : "default"})`;
  const { buildPath, texFile, texLogFile, pdfBuild, logBuild, texLogBuild, logOutputFolder, logOutput, texLogOutput } = ensurePaths(session, texOutput, pdfOutput);
  if (clean3)
    cleanOutput(session, logOutputFolder);
  const { buildError, toc } = await runCommands(session, template, texFile, texLogFile, templateLogString, pdfBuild, buildPath, vfile2, glossaries);
  const logs = uniqueArray(import_node_fs39.default.readFileSync(logBuild).toString().split("\n").filter((line2) => line2.includes("WARN ") || line2.includes("LaTeX Error") || line2.includes("LaTeX Warning")), (line2) => line2.indexOf("WARN") > -1 ? line2.slice(line2.indexOf("WARN")) : line2).filter((line2) => !line2.includes("Unused global option"));
  const packageErrors = logs.map((line2) => {
    var _a6;
    return line2.includes("LaTeX Error") ? (_a6 = line2.match(/`(.*)\.sty'/)) === null || _a6 === void 0 ? void 0 : _a6[1] : void 0;
  }).filter((sty) => !!sty).map((p5) => `${p5}.sty`);
  session.log.debug(`Unknown style files: "${packageErrors.join('", "')}"`);
  if (logs.length > 0) {
    if (buildError) {
      if (import_node_fs39.default.existsSync(pdfBuild)) {
        session.log.info("\n   Please check your PDF, it may actually be fine? \u{1F937}");
      } else {
        session.log.info("\n   The PDF did not compile, here are the logs:");
      }
    } else {
      session.log.info(`
   LaTeX ${source_default.green("succeeded")} with warnings:`);
    }
    session.log.info(source_default.dim(`
     Console:        ${texLogBuild}
     Detailed logs:  ${logBuild}
     Build path:     ${buildPath}
`));
    session.log.info(`
     ${source_default.dim("Preview:")}
     ${logs.map((line2) => line2.includes("LaTeX Error") ? source_default.red(line2) : source_default.yellowBright(line2)).join("\n     ")}
`);
  }
  const pdfBuildExists = import_node_fs39.default.existsSync(pdfBuild);
  const logBuildExists = import_node_fs39.default.existsSync(logBuild);
  const texLogBuildExists = import_node_fs39.default.existsSync(texLogBuild);
  if (pdfBuildExists && !import_node_fs39.default.existsSync(import_node_path49.default.dirname(pdfOutput))) {
    import_node_fs39.default.mkdirSync(import_node_path49.default.dirname(pdfOutput), { recursive: true });
  }
  if (pdfBuildExists) {
    session.log.info(toc(`\u{1F4C4} Exported PDF ${templateLogString} in %s, copying to ${pdfOutput}`));
    await copyFile(pdfBuild, pdfOutput);
    session.log.debug(`Copied PDF file to ${pdfOutput}`);
  } else {
    fileError(vfile2, `Could not find ${pdfBuild} as expected`, { ruleId: RuleId.pdfBuilds });
  }
  if (copyLogs) {
    if ((logBuildExists || texLogBuildExists) && !import_node_fs39.default.existsSync(import_node_path49.default.dirname(logOutput))) {
      import_node_fs39.default.mkdirSync(import_node_path49.default.dirname(logOutput), { recursive: true });
    }
    if (logBuildExists) {
      session.log.debug(`Copying log file: ${logOutput}`);
      await copyFile(logBuild, logOutput);
    }
    if (texLogBuildExists) {
      session.log.debug(`Copying log file: ${texLogOutput}`);
      await copyFile(texLogBuild, texLogOutput);
    }
  }
  logMessagesFromVFile(session, vfile2);
  const logFiles = copyLogs ? [logOutput, texLogOutput] : [logBuild, texLogBuild];
  if (!import_node_fs39.default.existsSync(pdfOutput)) {
    const err = Error(`Error exporting: ${pdfOutput}`);
    err.logFiles = logFiles;
    throw err;
  }
  return { logFiles, tempFolders: [buildPath] };
}
function ensurePaths(session, texOutput, pdfOutput) {
  const buildPath = createTempFolder(session);
  const texFile = import_node_path49.default.basename(texOutput);
  const texBuild = import_node_path49.default.join(buildPath, texFile);
  copyContents(import_node_path49.default.dirname(texOutput), buildPath);
  if (!import_node_fs39.default.existsSync(texBuild)) {
    throw Error(`Error exporting: ${pdfOutput}
Could not find tex file: ${texOutput}`);
  }
  const pdfBasename = import_node_path49.default.basename(pdfOutput, import_node_path49.default.extname(pdfOutput));
  const pdfFile = `${pdfBasename}.pdf`;
  const pdfBuild = import_node_path49.default.join(buildPath, pdfFile);
  const logFile = `${pdfBasename}.log`;
  const texLogFile = `${pdfBasename}.shell.log`;
  const logBuild = import_node_path49.default.join(buildPath, logFile);
  const texLogBuild = import_node_path49.default.join(buildPath, texLogFile);
  const logOutputFolder = getLogOutputFolder(pdfOutput);
  const logOutput = import_node_path49.default.join(logOutputFolder, logFile);
  const texLogOutput = import_node_path49.default.join(logOutputFolder, texLogFile);
  return {
    buildPath,
    texFile,
    texLogFile,
    pdfBuild,
    logBuild,
    texLogBuild,
    logOutputFolder,
    logOutput,
    texLogOutput
  };
}
async function runCommands(session, template, texFile, texLogFile, templateLogString, pdfBuild, buildPath, vfile2, glossaries) {
  const toc = tic();
  let buildError = await runPdfBuildCommand(session, texFile, texLogFile, templateLogString, template, pdfBuild, buildPath, vfile2);
  if (buildError || !glossaries) {
    return { buildError, toc };
  }
  buildError = await runGlossariesBuildCommand(session, texFile, texLogFile, buildPath);
  if (buildError) {
    return { buildError, toc };
  }
  buildError = await runPdfBuildCommand(session, texFile, texLogFile, templateLogString, template, pdfBuild, buildPath, vfile2, true);
  return { buildError, toc };
}
async function runPdfBuildCommand(session, texFile, texLogFile, templateLogString, template, pdfBuild, buildPath, vfile2, debugLogsOnly) {
  if (!isLatexmkAvailable()) {
    fileError(vfile2, `\u26A0\uFE0F  The "latexmk" command is not available. See documentation on installing LaTeX:

${docLinks.installLatex}`, { ruleId: RuleId.pdfBuildCommandsAvailable });
  }
  let buildCommand;
  if (!template) {
    buildCommand = pdfTexExportCommand(texFile, texLogFile);
  } else {
    const mystTemplate = new dist_default2(session, {
      kind: TemplateKind.tex,
      template: template || void 0,
      buildDir: session.buildPath(),
      errorLogFn: (message) => {
        fileError(vfile2, message, { ruleId: RuleId.pdfBuilds });
      },
      warningLogFn: (message) => {
        fileWarn(vfile2, message, { ruleId: RuleId.pdfBuilds });
      }
    });
    buildCommand = pdfTexExportCommand(texFile, texLogFile, mystTemplate);
  }
  let buildError = false;
  try {
    if (!debugLogsOnly)
      session.log.info(`\u{1F5A8}  Rendering PDF ${templateLogString} to ${pdfBuild}`);
    session.log.debug(`Running command:
> ${buildCommand}`);
    await exec(buildCommand, { cwd: buildPath });
    session.log.debug(`Done building LaTeX.`);
  } catch (err) {
    session.log.debug(err.stack);
    fileError(vfile2, `LaTeX reported an error building your PDF ${templateLogString} for ${texFile}`, { ruleId: RuleId.pdfBuildsWithoutErrors });
    buildError = true;
  }
  return buildError;
}
async function runGlossariesBuildCommand(session, texFile, texLogFile, buildPath) {
  if (!isMakeglossariesAvailable()) {
    session.log.error(`\u26A0\uFE0F  The "makeglossaries" command is not available. See documentation on installing LaTeX:

${docLinks.installLatex}`);
  }
  const buildCommand = texMakeGlossariesCommand(texFile, texLogFile);
  let buildError = false;
  try {
    session.log.info(`\u{1F516} Creating glossaries in ${buildPath}`);
    session.log.debug(`Running command:
> ${buildCommand}`);
    await exec(buildCommand, { cwd: buildPath });
    session.log.debug(`Done building glossaries.`);
  } catch (err) {
    session.log.debug(err.stack);
    session.log.error(`\u{1F6D1} Command makeglossaries reported an error for ${texFile}`);
    buildError = true;
  }
  return buildError;
}

// ../myst-cli/dist/build/pdf/single.js
function texExportOptionsFromPdf(session, pdfExp, keepTex, clean3) {
  const basename4 = import_node_path50.default.basename(pdfExp.output, import_node_path50.default.extname(pdfExp.output));
  const outputTexFile = `${basename4}.tex`;
  let output2;
  if (keepTex) {
    const texOutputFolder = getTexOutputFolder(pdfExp.output);
    if (clean3)
      cleanOutput(session, texOutputFolder);
    output2 = import_node_path50.default.join(texOutputFolder, outputTexFile);
  } else {
    output2 = import_node_path50.default.join(createTempFolder(session), outputTexFile);
  }
  return { ...pdfExp, format: ExportFormats.tex, output: output2 };
}

// ../myst-cli/dist/build/meca/index.js
var import_node_fs40 = __toESM(require("fs"), 1);
var import_node_path51 = __toESM(require("path"), 1);
var import_adm_zip4 = __toESM(require_adm_zip(), 1);
var import_mime_types2 = __toESM(require_mime_types(), 1);

// ../myst-cli/node_modules/meca/dist/manifest.js
var import_xml_js3 = __toESM(require_lib19(), 1);

// ../myst-cli/node_modules/meca/dist/utils.js
function elementWithText(name3, text7, attributes) {
  return { type: "element", name: name3, elements: [{ type: "text", text: text7 }], attributes };
}

// ../myst-cli/node_modules/meca/dist/manifest.js
var ItemTypes;
(function(ItemTypes2) {
  ItemTypes2["articleMetadata"] = "article-metadata";
  ItemTypes2["articleSupportingFile"] = "article-supporting-file";
  ItemTypes2["manuscript"] = "manuscript";
  ItemTypes2["manuscriptSupportingFile"] = "manuscript-supporting-file";
  ItemTypes2["articleSource"] = "article-source";
  ItemTypes2["articleSourceEnvironment"] = "article-source-environment";
  ItemTypes2["articleSourceDirectory"] = "article-source-directory";
  ItemTypes2["transferMetadata"] = "transfer-metadata";
})(ItemTypes || (ItemTypes = {}));
function writeManifestItem(item, opts) {
  const { id, version: version4, href, itemType, mediaType, title, description, fileOrder, metadata } = item;
  return {
    type: "element",
    name: "item",
    attributes: {
      id,
      "item-type": itemType,
      "item-version": version4
    },
    elements: [
      title ? elementWithText("item-title", title) : void 0,
      description ? elementWithText("item-description", description) : void 0,
      fileOrder ? elementWithText("file-order", fileOrder) : void 0,
      metadata && Object.keys(metadata !== null && metadata !== void 0 ? metadata : {}).length > 0 ? {
        type: "element",
        name: "item-metadata",
        elements: Object.entries(metadata).map(([k, v]) => elementWithText("metadata", v, { "metadata-name": k }))
      } : void 0,
      {
        type: "element",
        name: "instance",
        attributes: {
          "media-type": mediaType,
          [(opts === null || opts === void 0 ? void 0 : opts.noXLink) ? "href" : "xlink:href"]: href
        }
      }
    ].filter((e2) => !!e2)
  };
}
function createManifestXml(manifestItems, opts) {
  var _a6;
  const element5 = {
    type: "element",
    elements: [
      {
        type: "doctype",
        doctype: `manifest PUBLIC "-//MECA//DTD Manifest v1.0//en" "${(_a6 = opts === null || opts === void 0 ? void 0 : opts.dtdUrl) !== null && _a6 !== void 0 ? _a6 : "https://meca.zip/manifest-1.0.dtd"}"`
      },
      {
        type: "element",
        name: "manifest",
        attributes: Object.assign({ "manifest-version": "1", xmlns: "https://manuscriptexchange.org/schema/manifest" }, (opts === null || opts === void 0 ? void 0 : opts.noXLink) ? {} : { "xmlns:xlink": "http://www.w3.org/1999/xlink" }),
        elements: manifestItems.map((item) => writeManifestItem(item, opts))
      }
    ],
    declaration: { attributes: { version: "1.0", encoding: "UTF-8" } }
  };
  const manifest = (0, import_xml_js3.js2xml)(element5, {
    compact: false,
    spaces: 2
  });
  return manifest;
}

// ../myst-cli/dist/build/meca/index.js
function mediaTypeFromFile(file) {
  const mediaType = import_mime_types2.default.lookup(file);
  if (mediaType)
    return mediaType;
  const ext2 = import_node_path51.default.extname(file);
  if (ext2 === ".ipynb")
    return "application/x-ipynb+json";
  if (ext2 === ".bib")
    return "application/x-bibtex";
  return "";
}
function addManifestItem(manifestItems, itemType, mecaFolder, file, mediaType) {
  if (!file)
    return;
  const hrefPath = import_node_path51.default.relative(mecaFolder, file).split(import_node_path51.default.sep).join("/");
  const hrefTrail = isDirectory(file) ? "/" : "";
  manifestItems.push({
    href: `${hrefPath}${hrefTrail}`,
    itemType,
    mediaType: mediaType ? mediaType : mediaTypeFromFile(file)
  });
}
function bundleFolder(folder) {
  return import_node_path51.default.join(folder, "bundle");
}
async function copyFilesFromConfig(session, projectPath, mecaFolder, manifestItems, errorLogFn) {
  var _a6, _b;
  const projConfig = selectors_exports.selectLocalProjectConfig(session.store.getState(), projectPath);
  const entries2 = [
    ...((_a6 = projConfig === null || projConfig === void 0 ? void 0 : projConfig.requirements) !== null && _a6 !== void 0 ? _a6 : []).map((entry) => {
      return { itemType: "article-source-environment", entry };
    }),
    ...((_b = projConfig === null || projConfig === void 0 ? void 0 : projConfig.resources) !== null && _b !== void 0 ? _b : []).map((entry) => {
      return { itemType: "article-source", entry };
    })
  ];
  if (entries2.length) {
    await Promise.all(entries2.map(async ({ itemType, entry }) => {
      const resolvedEntry = [...projectPath.split(import_node_path51.default.sep), entry].join("/");
      const matches4 = await glob(resolvedEntry);
      matches4.map((match3) => match3.split("/").join(import_node_path51.default.sep)).filter((match3) => !isDirectory(match3)).forEach((match3) => {
        const destination = copyFileMaintainPath(session, match3, projectPath, bundleFolder(mecaFolder), errorLogFn);
        addManifestItem(manifestItems, itemType, mecaFolder, destination);
      });
    }));
  }
}
async function copyDependentFiles(session, sourceFile, projectPath, mecaFolder, manifestItems, errorLogFn) {
  var _a6;
  const cache = castSession(session);
  if (!cache.$getMdast(sourceFile)) {
    await loadFile(session, sourceFile, projectPath);
  }
  const pre2 = (_a6 = cache.$getMdast(sourceFile)) === null || _a6 === void 0 ? void 0 : _a6.pre;
  if (!pre2)
    return;
  const { mdast: mdast2, frontmatter } = pre2;
  const urlNodes = selectAll("image,link", mdast2);
  const fileNodes = selectAll("include", mdast2);
  const filesToCopy = [
    ...urlNodes.map((node3) => node3.url),
    ...fileNodes.map((node3) => node3.file),
    frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.thumbnail
  ].filter((file) => !!file).map((file) => import_node_path51.default.resolve(import_node_path51.default.dirname(sourceFile), file)).filter((file) => import_node_fs40.default.existsSync(file));
  filesToCopy.forEach((file) => {
    const dependency = copyFileMaintainPath(session, file, projectPath, bundleFolder(mecaFolder), errorLogFn);
    addManifestItem(manifestItems, "article-source", mecaFolder, dependency);
  });
}
function writeMecaManifest(manifestItems, mecaFolder) {
  const manifest = createManifestXml(manifestItems);
  import_node_fs40.default.writeFileSync(import_node_path51.default.join(mecaFolder, "manifest.xml"), manifest);
}
async function runMecaExport(session, sourceFile, exportOptions, opts) {
  var _a6;
  const toc = tic();
  const { output: output2, articles } = exportOptions;
  const { projectPath, clean: clean3, extraLinkTransformers } = opts !== null && opts !== void 0 ? opts : {};
  const articleFile = (_a6 = articles === null || articles === void 0 ? void 0 : articles[0]) === null || _a6 === void 0 ? void 0 : _a6.file;
  const vfile2 = new VFile();
  vfile2.path = output2;
  const fileCopyErrorLogFn = (m2) => {
    fileError(vfile2, m2, { ruleId: RuleId.mecaFilesCopied });
  };
  if (clean3)
    cleanOutput(session, output2);
  const mecaFolder = createTempFolder(session);
  const manifestItems = [];
  const jatsExports = await collectExportOptions(session, articleFile ? [articleFile] : [], [ExportFormats.xml], {
    projectPath
  });
  if (jatsExports.length === 0 && articleFile) {
    const jatsOutput = import_node_path51.default.join(mecaFolder, "article.xml");
    await runJatsExport(session, sourceFile, { ...exportOptions, output: jatsOutput }, { projectPath, clean: clean3, extraLinkTransformers });
    addManifestItem(manifestItems, "article-metadata", mecaFolder, jatsOutput);
    const jatsFiles = import_node_path51.default.join(mecaFolder, "files");
    if (import_node_fs40.default.existsSync(jatsFiles)) {
      import_node_fs40.default.readdirSync(jatsFiles).forEach((file) => {
        addManifestItem(manifestItems, "article-supporting-file", mecaFolder, import_node_path51.default.join(mecaFolder, "files", file));
      });
    }
  } else if (jatsExports.length === 0) {
    fileWarn(vfile2, `No JATS export found for inclusion with MECA bundle`, {
      ruleId: RuleId.mecaIncludesJats
    });
  } else if (jatsExports.length > 1) {
    fileWarn(vfile2, `Multiple JATS exports found for inclusion with MECA bundle
Conventionally, MECA should only have one JATS article`, {
      ruleId: RuleId.mecaIncludesJats
    });
  }
  jatsExports.forEach(({ output: jatsOutput }) => {
    if (!import_node_fs40.default.existsSync(jatsOutput)) {
      fileWarn(vfile2, `Other exports must be built prior to building MECA bundle
To resolve this, run: myst build --all`, {
        ruleId: RuleId.mecaExportsBuilt
      });
    }
    const jatsDest = copyFileToFolder(session, jatsOutput, mecaFolder, fileCopyErrorLogFn);
    if (jatsDest) {
      addManifestItem(manifestItems, "article-metadata", mecaFolder, jatsDest);
    }
    const jatsFiles = import_node_path51.default.join(import_node_path51.default.dirname(jatsOutput), "files");
    if (import_node_fs40.default.existsSync(jatsFiles)) {
      import_node_fs40.default.readdirSync(jatsFiles).forEach((file) => {
        const src = import_node_path51.default.join(jatsFiles, file);
        const fileDest = copyFileToFolder(session, src, import_node_path51.default.join(mecaFolder, "files"), fileCopyErrorLogFn);
        addManifestItem(manifestItems, "article-supporting-file", mecaFolder, fileDest);
      });
    }
  });
  const manuscriptExports = (await collectExportOptions(session, articleFile ? [articleFile] : [], [ExportFormats.docx, ExportFormats.pdf, ExportFormats.tex, ExportFormats.typst], {
    projectPath
  })).filter((exp) => {
    return exp.format !== ExportFormats.tex || import_node_path51.default.extname(exp.output) === ".zip";
  });
  manuscriptExports.forEach(({ output: manuscriptOutput }) => {
    if (!import_node_fs40.default.existsSync(manuscriptOutput)) {
      fileWarn(vfile2, `Other exports must be built prior to building MECA bundle
To resolve this, run: myst build --all`, {
        ruleId: RuleId.mecaExportsBuilt
      });
    }
    const manuscriptDest = copyFileToFolder(session, manuscriptOutput, mecaFolder, fileCopyErrorLogFn);
    addManifestItem(manifestItems, "manuscript", mecaFolder, manuscriptDest);
  });
  const project = projectPath ? selectors_exports.selectLocalProject(session.store.getState(), projectPath) : void 0;
  const bundle = bundleFolder(mecaFolder);
  if (projectPath && project) {
    const configFile = selectors_exports.selectLocalConfigFile(session.store.getState(), projectPath);
    if (configFile) {
      const configDest = copyFileMaintainPath(session, configFile, projectPath, bundle, fileCopyErrorLogFn);
      if (configDest) {
        await writeTOCToConfigFile(project, configFile, configDest);
      }
      addManifestItem(manifestItems, "article-source", mecaFolder, configDest);
      await copyFilesFromConfig(session, projectPath, mecaFolder, manifestItems, fileCopyErrorLogFn);
    }
    const projectPages = [
      { page: project.file, itemType: "article-source" },
      ...project.pages.filter((page) => {
        return !!page.file;
      }).map((page) => {
        return { page: page.file, itemType: "article-source" };
      }),
      ...project.bibliography.map((bib) => {
        return { page: bib, itemType: "article-source" };
      })
    ];
    await Promise.all(projectPages.map(async ({ page, itemType }) => {
      const pageDest = copyFileMaintainPath(session, page, projectPath, bundle, fileCopyErrorLogFn);
      addManifestItem(manifestItems, itemType, mecaFolder, pageDest);
      await copyDependentFiles(session, page, projectPath, mecaFolder, manifestItems, fileCopyErrorLogFn);
    }));
  } else if (articleFile) {
    const articleDest = copyFileToFolder(session, articleFile, bundle, fileCopyErrorLogFn);
    addManifestItem(manifestItems, "article-source", mecaFolder, articleDest);
  }
  if (import_node_fs40.default.existsSync(bundle)) {
    addManifestItem(manifestItems, "article-source-directory", mecaFolder, import_node_path51.default.join(bundle, ""), "application/x-directory");
  }
  writeMecaManifest(manifestItems, mecaFolder);
  const zip2 = new import_adm_zip4.default();
  zip2.addLocalFolder(mecaFolder);
  zip2.writeZip(output2);
  logMessagesFromVFile(session, vfile2);
  session.log.info(toc(`\u{1F910} MECA output copied and zipped to ${output2} in %s`));
  return { tempFolders: [] };
}

// ../myst-cli/dist/build/md/index.js
var import_node_path52 = __toESM(require("path"), 1);

// ../../node_modules/character-entities/index.js
var characterEntities = {
  AElig: "\xC6",
  AMP: "&",
  Aacute: "\xC1",
  Abreve: "\u0102",
  Acirc: "\xC2",
  Acy: "\u0410",
  Afr: "\u{1D504}",
  Agrave: "\xC0",
  Alpha: "\u0391",
  Amacr: "\u0100",
  And: "\u2A53",
  Aogon: "\u0104",
  Aopf: "\u{1D538}",
  ApplyFunction: "\u2061",
  Aring: "\xC5",
  Ascr: "\u{1D49C}",
  Assign: "\u2254",
  Atilde: "\xC3",
  Auml: "\xC4",
  Backslash: "\u2216",
  Barv: "\u2AE7",
  Barwed: "\u2306",
  Bcy: "\u0411",
  Because: "\u2235",
  Bernoullis: "\u212C",
  Beta: "\u0392",
  Bfr: "\u{1D505}",
  Bopf: "\u{1D539}",
  Breve: "\u02D8",
  Bscr: "\u212C",
  Bumpeq: "\u224E",
  CHcy: "\u0427",
  COPY: "\xA9",
  Cacute: "\u0106",
  Cap: "\u22D2",
  CapitalDifferentialD: "\u2145",
  Cayleys: "\u212D",
  Ccaron: "\u010C",
  Ccedil: "\xC7",
  Ccirc: "\u0108",
  Cconint: "\u2230",
  Cdot: "\u010A",
  Cedilla: "\xB8",
  CenterDot: "\xB7",
  Cfr: "\u212D",
  Chi: "\u03A7",
  CircleDot: "\u2299",
  CircleMinus: "\u2296",
  CirclePlus: "\u2295",
  CircleTimes: "\u2297",
  ClockwiseContourIntegral: "\u2232",
  CloseCurlyDoubleQuote: "\u201D",
  CloseCurlyQuote: "\u2019",
  Colon: "\u2237",
  Colone: "\u2A74",
  Congruent: "\u2261",
  Conint: "\u222F",
  ContourIntegral: "\u222E",
  Copf: "\u2102",
  Coproduct: "\u2210",
  CounterClockwiseContourIntegral: "\u2233",
  Cross: "\u2A2F",
  Cscr: "\u{1D49E}",
  Cup: "\u22D3",
  CupCap: "\u224D",
  DD: "\u2145",
  DDotrahd: "\u2911",
  DJcy: "\u0402",
  DScy: "\u0405",
  DZcy: "\u040F",
  Dagger: "\u2021",
  Darr: "\u21A1",
  Dashv: "\u2AE4",
  Dcaron: "\u010E",
  Dcy: "\u0414",
  Del: "\u2207",
  Delta: "\u0394",
  Dfr: "\u{1D507}",
  DiacriticalAcute: "\xB4",
  DiacriticalDot: "\u02D9",
  DiacriticalDoubleAcute: "\u02DD",
  DiacriticalGrave: "`",
  DiacriticalTilde: "\u02DC",
  Diamond: "\u22C4",
  DifferentialD: "\u2146",
  Dopf: "\u{1D53B}",
  Dot: "\xA8",
  DotDot: "\u20DC",
  DotEqual: "\u2250",
  DoubleContourIntegral: "\u222F",
  DoubleDot: "\xA8",
  DoubleDownArrow: "\u21D3",
  DoubleLeftArrow: "\u21D0",
  DoubleLeftRightArrow: "\u21D4",
  DoubleLeftTee: "\u2AE4",
  DoubleLongLeftArrow: "\u27F8",
  DoubleLongLeftRightArrow: "\u27FA",
  DoubleLongRightArrow: "\u27F9",
  DoubleRightArrow: "\u21D2",
  DoubleRightTee: "\u22A8",
  DoubleUpArrow: "\u21D1",
  DoubleUpDownArrow: "\u21D5",
  DoubleVerticalBar: "\u2225",
  DownArrow: "\u2193",
  DownArrowBar: "\u2913",
  DownArrowUpArrow: "\u21F5",
  DownBreve: "\u0311",
  DownLeftRightVector: "\u2950",
  DownLeftTeeVector: "\u295E",
  DownLeftVector: "\u21BD",
  DownLeftVectorBar: "\u2956",
  DownRightTeeVector: "\u295F",
  DownRightVector: "\u21C1",
  DownRightVectorBar: "\u2957",
  DownTee: "\u22A4",
  DownTeeArrow: "\u21A7",
  Downarrow: "\u21D3",
  Dscr: "\u{1D49F}",
  Dstrok: "\u0110",
  ENG: "\u014A",
  ETH: "\xD0",
  Eacute: "\xC9",
  Ecaron: "\u011A",
  Ecirc: "\xCA",
  Ecy: "\u042D",
  Edot: "\u0116",
  Efr: "\u{1D508}",
  Egrave: "\xC8",
  Element: "\u2208",
  Emacr: "\u0112",
  EmptySmallSquare: "\u25FB",
  EmptyVerySmallSquare: "\u25AB",
  Eogon: "\u0118",
  Eopf: "\u{1D53C}",
  Epsilon: "\u0395",
  Equal: "\u2A75",
  EqualTilde: "\u2242",
  Equilibrium: "\u21CC",
  Escr: "\u2130",
  Esim: "\u2A73",
  Eta: "\u0397",
  Euml: "\xCB",
  Exists: "\u2203",
  ExponentialE: "\u2147",
  Fcy: "\u0424",
  Ffr: "\u{1D509}",
  FilledSmallSquare: "\u25FC",
  FilledVerySmallSquare: "\u25AA",
  Fopf: "\u{1D53D}",
  ForAll: "\u2200",
  Fouriertrf: "\u2131",
  Fscr: "\u2131",
  GJcy: "\u0403",
  GT: ">",
  Gamma: "\u0393",
  Gammad: "\u03DC",
  Gbreve: "\u011E",
  Gcedil: "\u0122",
  Gcirc: "\u011C",
  Gcy: "\u0413",
  Gdot: "\u0120",
  Gfr: "\u{1D50A}",
  Gg: "\u22D9",
  Gopf: "\u{1D53E}",
  GreaterEqual: "\u2265",
  GreaterEqualLess: "\u22DB",
  GreaterFullEqual: "\u2267",
  GreaterGreater: "\u2AA2",
  GreaterLess: "\u2277",
  GreaterSlantEqual: "\u2A7E",
  GreaterTilde: "\u2273",
  Gscr: "\u{1D4A2}",
  Gt: "\u226B",
  HARDcy: "\u042A",
  Hacek: "\u02C7",
  Hat: "^",
  Hcirc: "\u0124",
  Hfr: "\u210C",
  HilbertSpace: "\u210B",
  Hopf: "\u210D",
  HorizontalLine: "\u2500",
  Hscr: "\u210B",
  Hstrok: "\u0126",
  HumpDownHump: "\u224E",
  HumpEqual: "\u224F",
  IEcy: "\u0415",
  IJlig: "\u0132",
  IOcy: "\u0401",
  Iacute: "\xCD",
  Icirc: "\xCE",
  Icy: "\u0418",
  Idot: "\u0130",
  Ifr: "\u2111",
  Igrave: "\xCC",
  Im: "\u2111",
  Imacr: "\u012A",
  ImaginaryI: "\u2148",
  Implies: "\u21D2",
  Int: "\u222C",
  Integral: "\u222B",
  Intersection: "\u22C2",
  InvisibleComma: "\u2063",
  InvisibleTimes: "\u2062",
  Iogon: "\u012E",
  Iopf: "\u{1D540}",
  Iota: "\u0399",
  Iscr: "\u2110",
  Itilde: "\u0128",
  Iukcy: "\u0406",
  Iuml: "\xCF",
  Jcirc: "\u0134",
  Jcy: "\u0419",
  Jfr: "\u{1D50D}",
  Jopf: "\u{1D541}",
  Jscr: "\u{1D4A5}",
  Jsercy: "\u0408",
  Jukcy: "\u0404",
  KHcy: "\u0425",
  KJcy: "\u040C",
  Kappa: "\u039A",
  Kcedil: "\u0136",
  Kcy: "\u041A",
  Kfr: "\u{1D50E}",
  Kopf: "\u{1D542}",
  Kscr: "\u{1D4A6}",
  LJcy: "\u0409",
  LT: "<",
  Lacute: "\u0139",
  Lambda: "\u039B",
  Lang: "\u27EA",
  Laplacetrf: "\u2112",
  Larr: "\u219E",
  Lcaron: "\u013D",
  Lcedil: "\u013B",
  Lcy: "\u041B",
  LeftAngleBracket: "\u27E8",
  LeftArrow: "\u2190",
  LeftArrowBar: "\u21E4",
  LeftArrowRightArrow: "\u21C6",
  LeftCeiling: "\u2308",
  LeftDoubleBracket: "\u27E6",
  LeftDownTeeVector: "\u2961",
  LeftDownVector: "\u21C3",
  LeftDownVectorBar: "\u2959",
  LeftFloor: "\u230A",
  LeftRightArrow: "\u2194",
  LeftRightVector: "\u294E",
  LeftTee: "\u22A3",
  LeftTeeArrow: "\u21A4",
  LeftTeeVector: "\u295A",
  LeftTriangle: "\u22B2",
  LeftTriangleBar: "\u29CF",
  LeftTriangleEqual: "\u22B4",
  LeftUpDownVector: "\u2951",
  LeftUpTeeVector: "\u2960",
  LeftUpVector: "\u21BF",
  LeftUpVectorBar: "\u2958",
  LeftVector: "\u21BC",
  LeftVectorBar: "\u2952",
  Leftarrow: "\u21D0",
  Leftrightarrow: "\u21D4",
  LessEqualGreater: "\u22DA",
  LessFullEqual: "\u2266",
  LessGreater: "\u2276",
  LessLess: "\u2AA1",
  LessSlantEqual: "\u2A7D",
  LessTilde: "\u2272",
  Lfr: "\u{1D50F}",
  Ll: "\u22D8",
  Lleftarrow: "\u21DA",
  Lmidot: "\u013F",
  LongLeftArrow: "\u27F5",
  LongLeftRightArrow: "\u27F7",
  LongRightArrow: "\u27F6",
  Longleftarrow: "\u27F8",
  Longleftrightarrow: "\u27FA",
  Longrightarrow: "\u27F9",
  Lopf: "\u{1D543}",
  LowerLeftArrow: "\u2199",
  LowerRightArrow: "\u2198",
  Lscr: "\u2112",
  Lsh: "\u21B0",
  Lstrok: "\u0141",
  Lt: "\u226A",
  Map: "\u2905",
  Mcy: "\u041C",
  MediumSpace: "\u205F",
  Mellintrf: "\u2133",
  Mfr: "\u{1D510}",
  MinusPlus: "\u2213",
  Mopf: "\u{1D544}",
  Mscr: "\u2133",
  Mu: "\u039C",
  NJcy: "\u040A",
  Nacute: "\u0143",
  Ncaron: "\u0147",
  Ncedil: "\u0145",
  Ncy: "\u041D",
  NegativeMediumSpace: "\u200B",
  NegativeThickSpace: "\u200B",
  NegativeThinSpace: "\u200B",
  NegativeVeryThinSpace: "\u200B",
  NestedGreaterGreater: "\u226B",
  NestedLessLess: "\u226A",
  NewLine: "\n",
  Nfr: "\u{1D511}",
  NoBreak: "\u2060",
  NonBreakingSpace: "\xA0",
  Nopf: "\u2115",
  Not: "\u2AEC",
  NotCongruent: "\u2262",
  NotCupCap: "\u226D",
  NotDoubleVerticalBar: "\u2226",
  NotElement: "\u2209",
  NotEqual: "\u2260",
  NotEqualTilde: "\u2242\u0338",
  NotExists: "\u2204",
  NotGreater: "\u226F",
  NotGreaterEqual: "\u2271",
  NotGreaterFullEqual: "\u2267\u0338",
  NotGreaterGreater: "\u226B\u0338",
  NotGreaterLess: "\u2279",
  NotGreaterSlantEqual: "\u2A7E\u0338",
  NotGreaterTilde: "\u2275",
  NotHumpDownHump: "\u224E\u0338",
  NotHumpEqual: "\u224F\u0338",
  NotLeftTriangle: "\u22EA",
  NotLeftTriangleBar: "\u29CF\u0338",
  NotLeftTriangleEqual: "\u22EC",
  NotLess: "\u226E",
  NotLessEqual: "\u2270",
  NotLessGreater: "\u2278",
  NotLessLess: "\u226A\u0338",
  NotLessSlantEqual: "\u2A7D\u0338",
  NotLessTilde: "\u2274",
  NotNestedGreaterGreater: "\u2AA2\u0338",
  NotNestedLessLess: "\u2AA1\u0338",
  NotPrecedes: "\u2280",
  NotPrecedesEqual: "\u2AAF\u0338",
  NotPrecedesSlantEqual: "\u22E0",
  NotReverseElement: "\u220C",
  NotRightTriangle: "\u22EB",
  NotRightTriangleBar: "\u29D0\u0338",
  NotRightTriangleEqual: "\u22ED",
  NotSquareSubset: "\u228F\u0338",
  NotSquareSubsetEqual: "\u22E2",
  NotSquareSuperset: "\u2290\u0338",
  NotSquareSupersetEqual: "\u22E3",
  NotSubset: "\u2282\u20D2",
  NotSubsetEqual: "\u2288",
  NotSucceeds: "\u2281",
  NotSucceedsEqual: "\u2AB0\u0338",
  NotSucceedsSlantEqual: "\u22E1",
  NotSucceedsTilde: "\u227F\u0338",
  NotSuperset: "\u2283\u20D2",
  NotSupersetEqual: "\u2289",
  NotTilde: "\u2241",
  NotTildeEqual: "\u2244",
  NotTildeFullEqual: "\u2247",
  NotTildeTilde: "\u2249",
  NotVerticalBar: "\u2224",
  Nscr: "\u{1D4A9}",
  Ntilde: "\xD1",
  Nu: "\u039D",
  OElig: "\u0152",
  Oacute: "\xD3",
  Ocirc: "\xD4",
  Ocy: "\u041E",
  Odblac: "\u0150",
  Ofr: "\u{1D512}",
  Ograve: "\xD2",
  Omacr: "\u014C",
  Omega: "\u03A9",
  Omicron: "\u039F",
  Oopf: "\u{1D546}",
  OpenCurlyDoubleQuote: "\u201C",
  OpenCurlyQuote: "\u2018",
  Or: "\u2A54",
  Oscr: "\u{1D4AA}",
  Oslash: "\xD8",
  Otilde: "\xD5",
  Otimes: "\u2A37",
  Ouml: "\xD6",
  OverBar: "\u203E",
  OverBrace: "\u23DE",
  OverBracket: "\u23B4",
  OverParenthesis: "\u23DC",
  PartialD: "\u2202",
  Pcy: "\u041F",
  Pfr: "\u{1D513}",
  Phi: "\u03A6",
  Pi: "\u03A0",
  PlusMinus: "\xB1",
  Poincareplane: "\u210C",
  Popf: "\u2119",
  Pr: "\u2ABB",
  Precedes: "\u227A",
  PrecedesEqual: "\u2AAF",
  PrecedesSlantEqual: "\u227C",
  PrecedesTilde: "\u227E",
  Prime: "\u2033",
  Product: "\u220F",
  Proportion: "\u2237",
  Proportional: "\u221D",
  Pscr: "\u{1D4AB}",
  Psi: "\u03A8",
  QUOT: '"',
  Qfr: "\u{1D514}",
  Qopf: "\u211A",
  Qscr: "\u{1D4AC}",
  RBarr: "\u2910",
  REG: "\xAE",
  Racute: "\u0154",
  Rang: "\u27EB",
  Rarr: "\u21A0",
  Rarrtl: "\u2916",
  Rcaron: "\u0158",
  Rcedil: "\u0156",
  Rcy: "\u0420",
  Re: "\u211C",
  ReverseElement: "\u220B",
  ReverseEquilibrium: "\u21CB",
  ReverseUpEquilibrium: "\u296F",
  Rfr: "\u211C",
  Rho: "\u03A1",
  RightAngleBracket: "\u27E9",
  RightArrow: "\u2192",
  RightArrowBar: "\u21E5",
  RightArrowLeftArrow: "\u21C4",
  RightCeiling: "\u2309",
  RightDoubleBracket: "\u27E7",
  RightDownTeeVector: "\u295D",
  RightDownVector: "\u21C2",
  RightDownVectorBar: "\u2955",
  RightFloor: "\u230B",
  RightTee: "\u22A2",
  RightTeeArrow: "\u21A6",
  RightTeeVector: "\u295B",
  RightTriangle: "\u22B3",
  RightTriangleBar: "\u29D0",
  RightTriangleEqual: "\u22B5",
  RightUpDownVector: "\u294F",
  RightUpTeeVector: "\u295C",
  RightUpVector: "\u21BE",
  RightUpVectorBar: "\u2954",
  RightVector: "\u21C0",
  RightVectorBar: "\u2953",
  Rightarrow: "\u21D2",
  Ropf: "\u211D",
  RoundImplies: "\u2970",
  Rrightarrow: "\u21DB",
  Rscr: "\u211B",
  Rsh: "\u21B1",
  RuleDelayed: "\u29F4",
  SHCHcy: "\u0429",
  SHcy: "\u0428",
  SOFTcy: "\u042C",
  Sacute: "\u015A",
  Sc: "\u2ABC",
  Scaron: "\u0160",
  Scedil: "\u015E",
  Scirc: "\u015C",
  Scy: "\u0421",
  Sfr: "\u{1D516}",
  ShortDownArrow: "\u2193",
  ShortLeftArrow: "\u2190",
  ShortRightArrow: "\u2192",
  ShortUpArrow: "\u2191",
  Sigma: "\u03A3",
  SmallCircle: "\u2218",
  Sopf: "\u{1D54A}",
  Sqrt: "\u221A",
  Square: "\u25A1",
  SquareIntersection: "\u2293",
  SquareSubset: "\u228F",
  SquareSubsetEqual: "\u2291",
  SquareSuperset: "\u2290",
  SquareSupersetEqual: "\u2292",
  SquareUnion: "\u2294",
  Sscr: "\u{1D4AE}",
  Star: "\u22C6",
  Sub: "\u22D0",
  Subset: "\u22D0",
  SubsetEqual: "\u2286",
  Succeeds: "\u227B",
  SucceedsEqual: "\u2AB0",
  SucceedsSlantEqual: "\u227D",
  SucceedsTilde: "\u227F",
  SuchThat: "\u220B",
  Sum: "\u2211",
  Sup: "\u22D1",
  Superset: "\u2283",
  SupersetEqual: "\u2287",
  Supset: "\u22D1",
  THORN: "\xDE",
  TRADE: "\u2122",
  TSHcy: "\u040B",
  TScy: "\u0426",
  Tab: "	",
  Tau: "\u03A4",
  Tcaron: "\u0164",
  Tcedil: "\u0162",
  Tcy: "\u0422",
  Tfr: "\u{1D517}",
  Therefore: "\u2234",
  Theta: "\u0398",
  ThickSpace: "\u205F\u200A",
  ThinSpace: "\u2009",
  Tilde: "\u223C",
  TildeEqual: "\u2243",
  TildeFullEqual: "\u2245",
  TildeTilde: "\u2248",
  Topf: "\u{1D54B}",
  TripleDot: "\u20DB",
  Tscr: "\u{1D4AF}",
  Tstrok: "\u0166",
  Uacute: "\xDA",
  Uarr: "\u219F",
  Uarrocir: "\u2949",
  Ubrcy: "\u040E",
  Ubreve: "\u016C",
  Ucirc: "\xDB",
  Ucy: "\u0423",
  Udblac: "\u0170",
  Ufr: "\u{1D518}",
  Ugrave: "\xD9",
  Umacr: "\u016A",
  UnderBar: "_",
  UnderBrace: "\u23DF",
  UnderBracket: "\u23B5",
  UnderParenthesis: "\u23DD",
  Union: "\u22C3",
  UnionPlus: "\u228E",
  Uogon: "\u0172",
  Uopf: "\u{1D54C}",
  UpArrow: "\u2191",
  UpArrowBar: "\u2912",
  UpArrowDownArrow: "\u21C5",
  UpDownArrow: "\u2195",
  UpEquilibrium: "\u296E",
  UpTee: "\u22A5",
  UpTeeArrow: "\u21A5",
  Uparrow: "\u21D1",
  Updownarrow: "\u21D5",
  UpperLeftArrow: "\u2196",
  UpperRightArrow: "\u2197",
  Upsi: "\u03D2",
  Upsilon: "\u03A5",
  Uring: "\u016E",
  Uscr: "\u{1D4B0}",
  Utilde: "\u0168",
  Uuml: "\xDC",
  VDash: "\u22AB",
  Vbar: "\u2AEB",
  Vcy: "\u0412",
  Vdash: "\u22A9",
  Vdashl: "\u2AE6",
  Vee: "\u22C1",
  Verbar: "\u2016",
  Vert: "\u2016",
  VerticalBar: "\u2223",
  VerticalLine: "|",
  VerticalSeparator: "\u2758",
  VerticalTilde: "\u2240",
  VeryThinSpace: "\u200A",
  Vfr: "\u{1D519}",
  Vopf: "\u{1D54D}",
  Vscr: "\u{1D4B1}",
  Vvdash: "\u22AA",
  Wcirc: "\u0174",
  Wedge: "\u22C0",
  Wfr: "\u{1D51A}",
  Wopf: "\u{1D54E}",
  Wscr: "\u{1D4B2}",
  Xfr: "\u{1D51B}",
  Xi: "\u039E",
  Xopf: "\u{1D54F}",
  Xscr: "\u{1D4B3}",
  YAcy: "\u042F",
  YIcy: "\u0407",
  YUcy: "\u042E",
  Yacute: "\xDD",
  Ycirc: "\u0176",
  Ycy: "\u042B",
  Yfr: "\u{1D51C}",
  Yopf: "\u{1D550}",
  Yscr: "\u{1D4B4}",
  Yuml: "\u0178",
  ZHcy: "\u0416",
  Zacute: "\u0179",
  Zcaron: "\u017D",
  Zcy: "\u0417",
  Zdot: "\u017B",
  ZeroWidthSpace: "\u200B",
  Zeta: "\u0396",
  Zfr: "\u2128",
  Zopf: "\u2124",
  Zscr: "\u{1D4B5}",
  aacute: "\xE1",
  abreve: "\u0103",
  ac: "\u223E",
  acE: "\u223E\u0333",
  acd: "\u223F",
  acirc: "\xE2",
  acute: "\xB4",
  acy: "\u0430",
  aelig: "\xE6",
  af: "\u2061",
  afr: "\u{1D51E}",
  agrave: "\xE0",
  alefsym: "\u2135",
  aleph: "\u2135",
  alpha: "\u03B1",
  amacr: "\u0101",
  amalg: "\u2A3F",
  amp: "&",
  and: "\u2227",
  andand: "\u2A55",
  andd: "\u2A5C",
  andslope: "\u2A58",
  andv: "\u2A5A",
  ang: "\u2220",
  ange: "\u29A4",
  angle: "\u2220",
  angmsd: "\u2221",
  angmsdaa: "\u29A8",
  angmsdab: "\u29A9",
  angmsdac: "\u29AA",
  angmsdad: "\u29AB",
  angmsdae: "\u29AC",
  angmsdaf: "\u29AD",
  angmsdag: "\u29AE",
  angmsdah: "\u29AF",
  angrt: "\u221F",
  angrtvb: "\u22BE",
  angrtvbd: "\u299D",
  angsph: "\u2222",
  angst: "\xC5",
  angzarr: "\u237C",
  aogon: "\u0105",
  aopf: "\u{1D552}",
  ap: "\u2248",
  apE: "\u2A70",
  apacir: "\u2A6F",
  ape: "\u224A",
  apid: "\u224B",
  apos: "'",
  approx: "\u2248",
  approxeq: "\u224A",
  aring: "\xE5",
  ascr: "\u{1D4B6}",
  ast: "*",
  asymp: "\u2248",
  asympeq: "\u224D",
  atilde: "\xE3",
  auml: "\xE4",
  awconint: "\u2233",
  awint: "\u2A11",
  bNot: "\u2AED",
  backcong: "\u224C",
  backepsilon: "\u03F6",
  backprime: "\u2035",
  backsim: "\u223D",
  backsimeq: "\u22CD",
  barvee: "\u22BD",
  barwed: "\u2305",
  barwedge: "\u2305",
  bbrk: "\u23B5",
  bbrktbrk: "\u23B6",
  bcong: "\u224C",
  bcy: "\u0431",
  bdquo: "\u201E",
  becaus: "\u2235",
  because: "\u2235",
  bemptyv: "\u29B0",
  bepsi: "\u03F6",
  bernou: "\u212C",
  beta: "\u03B2",
  beth: "\u2136",
  between: "\u226C",
  bfr: "\u{1D51F}",
  bigcap: "\u22C2",
  bigcirc: "\u25EF",
  bigcup: "\u22C3",
  bigodot: "\u2A00",
  bigoplus: "\u2A01",
  bigotimes: "\u2A02",
  bigsqcup: "\u2A06",
  bigstar: "\u2605",
  bigtriangledown: "\u25BD",
  bigtriangleup: "\u25B3",
  biguplus: "\u2A04",
  bigvee: "\u22C1",
  bigwedge: "\u22C0",
  bkarow: "\u290D",
  blacklozenge: "\u29EB",
  blacksquare: "\u25AA",
  blacktriangle: "\u25B4",
  blacktriangledown: "\u25BE",
  blacktriangleleft: "\u25C2",
  blacktriangleright: "\u25B8",
  blank: "\u2423",
  blk12: "\u2592",
  blk14: "\u2591",
  blk34: "\u2593",
  block: "\u2588",
  bne: "=\u20E5",
  bnequiv: "\u2261\u20E5",
  bnot: "\u2310",
  bopf: "\u{1D553}",
  bot: "\u22A5",
  bottom: "\u22A5",
  bowtie: "\u22C8",
  boxDL: "\u2557",
  boxDR: "\u2554",
  boxDl: "\u2556",
  boxDr: "\u2553",
  boxH: "\u2550",
  boxHD: "\u2566",
  boxHU: "\u2569",
  boxHd: "\u2564",
  boxHu: "\u2567",
  boxUL: "\u255D",
  boxUR: "\u255A",
  boxUl: "\u255C",
  boxUr: "\u2559",
  boxV: "\u2551",
  boxVH: "\u256C",
  boxVL: "\u2563",
  boxVR: "\u2560",
  boxVh: "\u256B",
  boxVl: "\u2562",
  boxVr: "\u255F",
  boxbox: "\u29C9",
  boxdL: "\u2555",
  boxdR: "\u2552",
  boxdl: "\u2510",
  boxdr: "\u250C",
  boxh: "\u2500",
  boxhD: "\u2565",
  boxhU: "\u2568",
  boxhd: "\u252C",
  boxhu: "\u2534",
  boxminus: "\u229F",
  boxplus: "\u229E",
  boxtimes: "\u22A0",
  boxuL: "\u255B",
  boxuR: "\u2558",
  boxul: "\u2518",
  boxur: "\u2514",
  boxv: "\u2502",
  boxvH: "\u256A",
  boxvL: "\u2561",
  boxvR: "\u255E",
  boxvh: "\u253C",
  boxvl: "\u2524",
  boxvr: "\u251C",
  bprime: "\u2035",
  breve: "\u02D8",
  brvbar: "\xA6",
  bscr: "\u{1D4B7}",
  bsemi: "\u204F",
  bsim: "\u223D",
  bsime: "\u22CD",
  bsol: "\\",
  bsolb: "\u29C5",
  bsolhsub: "\u27C8",
  bull: "\u2022",
  bullet: "\u2022",
  bump: "\u224E",
  bumpE: "\u2AAE",
  bumpe: "\u224F",
  bumpeq: "\u224F",
  cacute: "\u0107",
  cap: "\u2229",
  capand: "\u2A44",
  capbrcup: "\u2A49",
  capcap: "\u2A4B",
  capcup: "\u2A47",
  capdot: "\u2A40",
  caps: "\u2229\uFE00",
  caret: "\u2041",
  caron: "\u02C7",
  ccaps: "\u2A4D",
  ccaron: "\u010D",
  ccedil: "\xE7",
  ccirc: "\u0109",
  ccups: "\u2A4C",
  ccupssm: "\u2A50",
  cdot: "\u010B",
  cedil: "\xB8",
  cemptyv: "\u29B2",
  cent: "\xA2",
  centerdot: "\xB7",
  cfr: "\u{1D520}",
  chcy: "\u0447",
  check: "\u2713",
  checkmark: "\u2713",
  chi: "\u03C7",
  cir: "\u25CB",
  cirE: "\u29C3",
  circ: "\u02C6",
  circeq: "\u2257",
  circlearrowleft: "\u21BA",
  circlearrowright: "\u21BB",
  circledR: "\xAE",
  circledS: "\u24C8",
  circledast: "\u229B",
  circledcirc: "\u229A",
  circleddash: "\u229D",
  cire: "\u2257",
  cirfnint: "\u2A10",
  cirmid: "\u2AEF",
  cirscir: "\u29C2",
  clubs: "\u2663",
  clubsuit: "\u2663",
  colon: ":",
  colone: "\u2254",
  coloneq: "\u2254",
  comma: ",",
  commat: "@",
  comp: "\u2201",
  compfn: "\u2218",
  complement: "\u2201",
  complexes: "\u2102",
  cong: "\u2245",
  congdot: "\u2A6D",
  conint: "\u222E",
  copf: "\u{1D554}",
  coprod: "\u2210",
  copy: "\xA9",
  copysr: "\u2117",
  crarr: "\u21B5",
  cross: "\u2717",
  cscr: "\u{1D4B8}",
  csub: "\u2ACF",
  csube: "\u2AD1",
  csup: "\u2AD0",
  csupe: "\u2AD2",
  ctdot: "\u22EF",
  cudarrl: "\u2938",
  cudarrr: "\u2935",
  cuepr: "\u22DE",
  cuesc: "\u22DF",
  cularr: "\u21B6",
  cularrp: "\u293D",
  cup: "\u222A",
  cupbrcap: "\u2A48",
  cupcap: "\u2A46",
  cupcup: "\u2A4A",
  cupdot: "\u228D",
  cupor: "\u2A45",
  cups: "\u222A\uFE00",
  curarr: "\u21B7",
  curarrm: "\u293C",
  curlyeqprec: "\u22DE",
  curlyeqsucc: "\u22DF",
  curlyvee: "\u22CE",
  curlywedge: "\u22CF",
  curren: "\xA4",
  curvearrowleft: "\u21B6",
  curvearrowright: "\u21B7",
  cuvee: "\u22CE",
  cuwed: "\u22CF",
  cwconint: "\u2232",
  cwint: "\u2231",
  cylcty: "\u232D",
  dArr: "\u21D3",
  dHar: "\u2965",
  dagger: "\u2020",
  daleth: "\u2138",
  darr: "\u2193",
  dash: "\u2010",
  dashv: "\u22A3",
  dbkarow: "\u290F",
  dblac: "\u02DD",
  dcaron: "\u010F",
  dcy: "\u0434",
  dd: "\u2146",
  ddagger: "\u2021",
  ddarr: "\u21CA",
  ddotseq: "\u2A77",
  deg: "\xB0",
  delta: "\u03B4",
  demptyv: "\u29B1",
  dfisht: "\u297F",
  dfr: "\u{1D521}",
  dharl: "\u21C3",
  dharr: "\u21C2",
  diam: "\u22C4",
  diamond: "\u22C4",
  diamondsuit: "\u2666",
  diams: "\u2666",
  die: "\xA8",
  digamma: "\u03DD",
  disin: "\u22F2",
  div: "\xF7",
  divide: "\xF7",
  divideontimes: "\u22C7",
  divonx: "\u22C7",
  djcy: "\u0452",
  dlcorn: "\u231E",
  dlcrop: "\u230D",
  dollar: "$",
  dopf: "\u{1D555}",
  dot: "\u02D9",
  doteq: "\u2250",
  doteqdot: "\u2251",
  dotminus: "\u2238",
  dotplus: "\u2214",
  dotsquare: "\u22A1",
  doublebarwedge: "\u2306",
  downarrow: "\u2193",
  downdownarrows: "\u21CA",
  downharpoonleft: "\u21C3",
  downharpoonright: "\u21C2",
  drbkarow: "\u2910",
  drcorn: "\u231F",
  drcrop: "\u230C",
  dscr: "\u{1D4B9}",
  dscy: "\u0455",
  dsol: "\u29F6",
  dstrok: "\u0111",
  dtdot: "\u22F1",
  dtri: "\u25BF",
  dtrif: "\u25BE",
  duarr: "\u21F5",
  duhar: "\u296F",
  dwangle: "\u29A6",
  dzcy: "\u045F",
  dzigrarr: "\u27FF",
  eDDot: "\u2A77",
  eDot: "\u2251",
  eacute: "\xE9",
  easter: "\u2A6E",
  ecaron: "\u011B",
  ecir: "\u2256",
  ecirc: "\xEA",
  ecolon: "\u2255",
  ecy: "\u044D",
  edot: "\u0117",
  ee: "\u2147",
  efDot: "\u2252",
  efr: "\u{1D522}",
  eg: "\u2A9A",
  egrave: "\xE8",
  egs: "\u2A96",
  egsdot: "\u2A98",
  el: "\u2A99",
  elinters: "\u23E7",
  ell: "\u2113",
  els: "\u2A95",
  elsdot: "\u2A97",
  emacr: "\u0113",
  empty: "\u2205",
  emptyset: "\u2205",
  emptyv: "\u2205",
  emsp13: "\u2004",
  emsp14: "\u2005",
  emsp: "\u2003",
  eng: "\u014B",
  ensp: "\u2002",
  eogon: "\u0119",
  eopf: "\u{1D556}",
  epar: "\u22D5",
  eparsl: "\u29E3",
  eplus: "\u2A71",
  epsi: "\u03B5",
  epsilon: "\u03B5",
  epsiv: "\u03F5",
  eqcirc: "\u2256",
  eqcolon: "\u2255",
  eqsim: "\u2242",
  eqslantgtr: "\u2A96",
  eqslantless: "\u2A95",
  equals: "=",
  equest: "\u225F",
  equiv: "\u2261",
  equivDD: "\u2A78",
  eqvparsl: "\u29E5",
  erDot: "\u2253",
  erarr: "\u2971",
  escr: "\u212F",
  esdot: "\u2250",
  esim: "\u2242",
  eta: "\u03B7",
  eth: "\xF0",
  euml: "\xEB",
  euro: "\u20AC",
  excl: "!",
  exist: "\u2203",
  expectation: "\u2130",
  exponentiale: "\u2147",
  fallingdotseq: "\u2252",
  fcy: "\u0444",
  female: "\u2640",
  ffilig: "\uFB03",
  fflig: "\uFB00",
  ffllig: "\uFB04",
  ffr: "\u{1D523}",
  filig: "\uFB01",
  fjlig: "fj",
  flat: "\u266D",
  fllig: "\uFB02",
  fltns: "\u25B1",
  fnof: "\u0192",
  fopf: "\u{1D557}",
  forall: "\u2200",
  fork: "\u22D4",
  forkv: "\u2AD9",
  fpartint: "\u2A0D",
  frac12: "\xBD",
  frac13: "\u2153",
  frac14: "\xBC",
  frac15: "\u2155",
  frac16: "\u2159",
  frac18: "\u215B",
  frac23: "\u2154",
  frac25: "\u2156",
  frac34: "\xBE",
  frac35: "\u2157",
  frac38: "\u215C",
  frac45: "\u2158",
  frac56: "\u215A",
  frac58: "\u215D",
  frac78: "\u215E",
  frasl: "\u2044",
  frown: "\u2322",
  fscr: "\u{1D4BB}",
  gE: "\u2267",
  gEl: "\u2A8C",
  gacute: "\u01F5",
  gamma: "\u03B3",
  gammad: "\u03DD",
  gap: "\u2A86",
  gbreve: "\u011F",
  gcirc: "\u011D",
  gcy: "\u0433",
  gdot: "\u0121",
  ge: "\u2265",
  gel: "\u22DB",
  geq: "\u2265",
  geqq: "\u2267",
  geqslant: "\u2A7E",
  ges: "\u2A7E",
  gescc: "\u2AA9",
  gesdot: "\u2A80",
  gesdoto: "\u2A82",
  gesdotol: "\u2A84",
  gesl: "\u22DB\uFE00",
  gesles: "\u2A94",
  gfr: "\u{1D524}",
  gg: "\u226B",
  ggg: "\u22D9",
  gimel: "\u2137",
  gjcy: "\u0453",
  gl: "\u2277",
  glE: "\u2A92",
  gla: "\u2AA5",
  glj: "\u2AA4",
  gnE: "\u2269",
  gnap: "\u2A8A",
  gnapprox: "\u2A8A",
  gne: "\u2A88",
  gneq: "\u2A88",
  gneqq: "\u2269",
  gnsim: "\u22E7",
  gopf: "\u{1D558}",
  grave: "`",
  gscr: "\u210A",
  gsim: "\u2273",
  gsime: "\u2A8E",
  gsiml: "\u2A90",
  gt: ">",
  gtcc: "\u2AA7",
  gtcir: "\u2A7A",
  gtdot: "\u22D7",
  gtlPar: "\u2995",
  gtquest: "\u2A7C",
  gtrapprox: "\u2A86",
  gtrarr: "\u2978",
  gtrdot: "\u22D7",
  gtreqless: "\u22DB",
  gtreqqless: "\u2A8C",
  gtrless: "\u2277",
  gtrsim: "\u2273",
  gvertneqq: "\u2269\uFE00",
  gvnE: "\u2269\uFE00",
  hArr: "\u21D4",
  hairsp: "\u200A",
  half: "\xBD",
  hamilt: "\u210B",
  hardcy: "\u044A",
  harr: "\u2194",
  harrcir: "\u2948",
  harrw: "\u21AD",
  hbar: "\u210F",
  hcirc: "\u0125",
  hearts: "\u2665",
  heartsuit: "\u2665",
  hellip: "\u2026",
  hercon: "\u22B9",
  hfr: "\u{1D525}",
  hksearow: "\u2925",
  hkswarow: "\u2926",
  hoarr: "\u21FF",
  homtht: "\u223B",
  hookleftarrow: "\u21A9",
  hookrightarrow: "\u21AA",
  hopf: "\u{1D559}",
  horbar: "\u2015",
  hscr: "\u{1D4BD}",
  hslash: "\u210F",
  hstrok: "\u0127",
  hybull: "\u2043",
  hyphen: "\u2010",
  iacute: "\xED",
  ic: "\u2063",
  icirc: "\xEE",
  icy: "\u0438",
  iecy: "\u0435",
  iexcl: "\xA1",
  iff: "\u21D4",
  ifr: "\u{1D526}",
  igrave: "\xEC",
  ii: "\u2148",
  iiiint: "\u2A0C",
  iiint: "\u222D",
  iinfin: "\u29DC",
  iiota: "\u2129",
  ijlig: "\u0133",
  imacr: "\u012B",
  image: "\u2111",
  imagline: "\u2110",
  imagpart: "\u2111",
  imath: "\u0131",
  imof: "\u22B7",
  imped: "\u01B5",
  in: "\u2208",
  incare: "\u2105",
  infin: "\u221E",
  infintie: "\u29DD",
  inodot: "\u0131",
  int: "\u222B",
  intcal: "\u22BA",
  integers: "\u2124",
  intercal: "\u22BA",
  intlarhk: "\u2A17",
  intprod: "\u2A3C",
  iocy: "\u0451",
  iogon: "\u012F",
  iopf: "\u{1D55A}",
  iota: "\u03B9",
  iprod: "\u2A3C",
  iquest: "\xBF",
  iscr: "\u{1D4BE}",
  isin: "\u2208",
  isinE: "\u22F9",
  isindot: "\u22F5",
  isins: "\u22F4",
  isinsv: "\u22F3",
  isinv: "\u2208",
  it: "\u2062",
  itilde: "\u0129",
  iukcy: "\u0456",
  iuml: "\xEF",
  jcirc: "\u0135",
  jcy: "\u0439",
  jfr: "\u{1D527}",
  jmath: "\u0237",
  jopf: "\u{1D55B}",
  jscr: "\u{1D4BF}",
  jsercy: "\u0458",
  jukcy: "\u0454",
  kappa: "\u03BA",
  kappav: "\u03F0",
  kcedil: "\u0137",
  kcy: "\u043A",
  kfr: "\u{1D528}",
  kgreen: "\u0138",
  khcy: "\u0445",
  kjcy: "\u045C",
  kopf: "\u{1D55C}",
  kscr: "\u{1D4C0}",
  lAarr: "\u21DA",
  lArr: "\u21D0",
  lAtail: "\u291B",
  lBarr: "\u290E",
  lE: "\u2266",
  lEg: "\u2A8B",
  lHar: "\u2962",
  lacute: "\u013A",
  laemptyv: "\u29B4",
  lagran: "\u2112",
  lambda: "\u03BB",
  lang: "\u27E8",
  langd: "\u2991",
  langle: "\u27E8",
  lap: "\u2A85",
  laquo: "\xAB",
  larr: "\u2190",
  larrb: "\u21E4",
  larrbfs: "\u291F",
  larrfs: "\u291D",
  larrhk: "\u21A9",
  larrlp: "\u21AB",
  larrpl: "\u2939",
  larrsim: "\u2973",
  larrtl: "\u21A2",
  lat: "\u2AAB",
  latail: "\u2919",
  late: "\u2AAD",
  lates: "\u2AAD\uFE00",
  lbarr: "\u290C",
  lbbrk: "\u2772",
  lbrace: "{",
  lbrack: "[",
  lbrke: "\u298B",
  lbrksld: "\u298F",
  lbrkslu: "\u298D",
  lcaron: "\u013E",
  lcedil: "\u013C",
  lceil: "\u2308",
  lcub: "{",
  lcy: "\u043B",
  ldca: "\u2936",
  ldquo: "\u201C",
  ldquor: "\u201E",
  ldrdhar: "\u2967",
  ldrushar: "\u294B",
  ldsh: "\u21B2",
  le: "\u2264",
  leftarrow: "\u2190",
  leftarrowtail: "\u21A2",
  leftharpoondown: "\u21BD",
  leftharpoonup: "\u21BC",
  leftleftarrows: "\u21C7",
  leftrightarrow: "\u2194",
  leftrightarrows: "\u21C6",
  leftrightharpoons: "\u21CB",
  leftrightsquigarrow: "\u21AD",
  leftthreetimes: "\u22CB",
  leg: "\u22DA",
  leq: "\u2264",
  leqq: "\u2266",
  leqslant: "\u2A7D",
  les: "\u2A7D",
  lescc: "\u2AA8",
  lesdot: "\u2A7F",
  lesdoto: "\u2A81",
  lesdotor: "\u2A83",
  lesg: "\u22DA\uFE00",
  lesges: "\u2A93",
  lessapprox: "\u2A85",
  lessdot: "\u22D6",
  lesseqgtr: "\u22DA",
  lesseqqgtr: "\u2A8B",
  lessgtr: "\u2276",
  lesssim: "\u2272",
  lfisht: "\u297C",
  lfloor: "\u230A",
  lfr: "\u{1D529}",
  lg: "\u2276",
  lgE: "\u2A91",
  lhard: "\u21BD",
  lharu: "\u21BC",
  lharul: "\u296A",
  lhblk: "\u2584",
  ljcy: "\u0459",
  ll: "\u226A",
  llarr: "\u21C7",
  llcorner: "\u231E",
  llhard: "\u296B",
  lltri: "\u25FA",
  lmidot: "\u0140",
  lmoust: "\u23B0",
  lmoustache: "\u23B0",
  lnE: "\u2268",
  lnap: "\u2A89",
  lnapprox: "\u2A89",
  lne: "\u2A87",
  lneq: "\u2A87",
  lneqq: "\u2268",
  lnsim: "\u22E6",
  loang: "\u27EC",
  loarr: "\u21FD",
  lobrk: "\u27E6",
  longleftarrow: "\u27F5",
  longleftrightarrow: "\u27F7",
  longmapsto: "\u27FC",
  longrightarrow: "\u27F6",
  looparrowleft: "\u21AB",
  looparrowright: "\u21AC",
  lopar: "\u2985",
  lopf: "\u{1D55D}",
  loplus: "\u2A2D",
  lotimes: "\u2A34",
  lowast: "\u2217",
  lowbar: "_",
  loz: "\u25CA",
  lozenge: "\u25CA",
  lozf: "\u29EB",
  lpar: "(",
  lparlt: "\u2993",
  lrarr: "\u21C6",
  lrcorner: "\u231F",
  lrhar: "\u21CB",
  lrhard: "\u296D",
  lrm: "\u200E",
  lrtri: "\u22BF",
  lsaquo: "\u2039",
  lscr: "\u{1D4C1}",
  lsh: "\u21B0",
  lsim: "\u2272",
  lsime: "\u2A8D",
  lsimg: "\u2A8F",
  lsqb: "[",
  lsquo: "\u2018",
  lsquor: "\u201A",
  lstrok: "\u0142",
  lt: "<",
  ltcc: "\u2AA6",
  ltcir: "\u2A79",
  ltdot: "\u22D6",
  lthree: "\u22CB",
  ltimes: "\u22C9",
  ltlarr: "\u2976",
  ltquest: "\u2A7B",
  ltrPar: "\u2996",
  ltri: "\u25C3",
  ltrie: "\u22B4",
  ltrif: "\u25C2",
  lurdshar: "\u294A",
  luruhar: "\u2966",
  lvertneqq: "\u2268\uFE00",
  lvnE: "\u2268\uFE00",
  mDDot: "\u223A",
  macr: "\xAF",
  male: "\u2642",
  malt: "\u2720",
  maltese: "\u2720",
  map: "\u21A6",
  mapsto: "\u21A6",
  mapstodown: "\u21A7",
  mapstoleft: "\u21A4",
  mapstoup: "\u21A5",
  marker: "\u25AE",
  mcomma: "\u2A29",
  mcy: "\u043C",
  mdash: "\u2014",
  measuredangle: "\u2221",
  mfr: "\u{1D52A}",
  mho: "\u2127",
  micro: "\xB5",
  mid: "\u2223",
  midast: "*",
  midcir: "\u2AF0",
  middot: "\xB7",
  minus: "\u2212",
  minusb: "\u229F",
  minusd: "\u2238",
  minusdu: "\u2A2A",
  mlcp: "\u2ADB",
  mldr: "\u2026",
  mnplus: "\u2213",
  models: "\u22A7",
  mopf: "\u{1D55E}",
  mp: "\u2213",
  mscr: "\u{1D4C2}",
  mstpos: "\u223E",
  mu: "\u03BC",
  multimap: "\u22B8",
  mumap: "\u22B8",
  nGg: "\u22D9\u0338",
  nGt: "\u226B\u20D2",
  nGtv: "\u226B\u0338",
  nLeftarrow: "\u21CD",
  nLeftrightarrow: "\u21CE",
  nLl: "\u22D8\u0338",
  nLt: "\u226A\u20D2",
  nLtv: "\u226A\u0338",
  nRightarrow: "\u21CF",
  nVDash: "\u22AF",
  nVdash: "\u22AE",
  nabla: "\u2207",
  nacute: "\u0144",
  nang: "\u2220\u20D2",
  nap: "\u2249",
  napE: "\u2A70\u0338",
  napid: "\u224B\u0338",
  napos: "\u0149",
  napprox: "\u2249",
  natur: "\u266E",
  natural: "\u266E",
  naturals: "\u2115",
  nbsp: "\xA0",
  nbump: "\u224E\u0338",
  nbumpe: "\u224F\u0338",
  ncap: "\u2A43",
  ncaron: "\u0148",
  ncedil: "\u0146",
  ncong: "\u2247",
  ncongdot: "\u2A6D\u0338",
  ncup: "\u2A42",
  ncy: "\u043D",
  ndash: "\u2013",
  ne: "\u2260",
  neArr: "\u21D7",
  nearhk: "\u2924",
  nearr: "\u2197",
  nearrow: "\u2197",
  nedot: "\u2250\u0338",
  nequiv: "\u2262",
  nesear: "\u2928",
  nesim: "\u2242\u0338",
  nexist: "\u2204",
  nexists: "\u2204",
  nfr: "\u{1D52B}",
  ngE: "\u2267\u0338",
  nge: "\u2271",
  ngeq: "\u2271",
  ngeqq: "\u2267\u0338",
  ngeqslant: "\u2A7E\u0338",
  nges: "\u2A7E\u0338",
  ngsim: "\u2275",
  ngt: "\u226F",
  ngtr: "\u226F",
  nhArr: "\u21CE",
  nharr: "\u21AE",
  nhpar: "\u2AF2",
  ni: "\u220B",
  nis: "\u22FC",
  nisd: "\u22FA",
  niv: "\u220B",
  njcy: "\u045A",
  nlArr: "\u21CD",
  nlE: "\u2266\u0338",
  nlarr: "\u219A",
  nldr: "\u2025",
  nle: "\u2270",
  nleftarrow: "\u219A",
  nleftrightarrow: "\u21AE",
  nleq: "\u2270",
  nleqq: "\u2266\u0338",
  nleqslant: "\u2A7D\u0338",
  nles: "\u2A7D\u0338",
  nless: "\u226E",
  nlsim: "\u2274",
  nlt: "\u226E",
  nltri: "\u22EA",
  nltrie: "\u22EC",
  nmid: "\u2224",
  nopf: "\u{1D55F}",
  not: "\xAC",
  notin: "\u2209",
  notinE: "\u22F9\u0338",
  notindot: "\u22F5\u0338",
  notinva: "\u2209",
  notinvb: "\u22F7",
  notinvc: "\u22F6",
  notni: "\u220C",
  notniva: "\u220C",
  notnivb: "\u22FE",
  notnivc: "\u22FD",
  npar: "\u2226",
  nparallel: "\u2226",
  nparsl: "\u2AFD\u20E5",
  npart: "\u2202\u0338",
  npolint: "\u2A14",
  npr: "\u2280",
  nprcue: "\u22E0",
  npre: "\u2AAF\u0338",
  nprec: "\u2280",
  npreceq: "\u2AAF\u0338",
  nrArr: "\u21CF",
  nrarr: "\u219B",
  nrarrc: "\u2933\u0338",
  nrarrw: "\u219D\u0338",
  nrightarrow: "\u219B",
  nrtri: "\u22EB",
  nrtrie: "\u22ED",
  nsc: "\u2281",
  nsccue: "\u22E1",
  nsce: "\u2AB0\u0338",
  nscr: "\u{1D4C3}",
  nshortmid: "\u2224",
  nshortparallel: "\u2226",
  nsim: "\u2241",
  nsime: "\u2244",
  nsimeq: "\u2244",
  nsmid: "\u2224",
  nspar: "\u2226",
  nsqsube: "\u22E2",
  nsqsupe: "\u22E3",
  nsub: "\u2284",
  nsubE: "\u2AC5\u0338",
  nsube: "\u2288",
  nsubset: "\u2282\u20D2",
  nsubseteq: "\u2288",
  nsubseteqq: "\u2AC5\u0338",
  nsucc: "\u2281",
  nsucceq: "\u2AB0\u0338",
  nsup: "\u2285",
  nsupE: "\u2AC6\u0338",
  nsupe: "\u2289",
  nsupset: "\u2283\u20D2",
  nsupseteq: "\u2289",
  nsupseteqq: "\u2AC6\u0338",
  ntgl: "\u2279",
  ntilde: "\xF1",
  ntlg: "\u2278",
  ntriangleleft: "\u22EA",
  ntrianglelefteq: "\u22EC",
  ntriangleright: "\u22EB",
  ntrianglerighteq: "\u22ED",
  nu: "\u03BD",
  num: "#",
  numero: "\u2116",
  numsp: "\u2007",
  nvDash: "\u22AD",
  nvHarr: "\u2904",
  nvap: "\u224D\u20D2",
  nvdash: "\u22AC",
  nvge: "\u2265\u20D2",
  nvgt: ">\u20D2",
  nvinfin: "\u29DE",
  nvlArr: "\u2902",
  nvle: "\u2264\u20D2",
  nvlt: "<\u20D2",
  nvltrie: "\u22B4\u20D2",
  nvrArr: "\u2903",
  nvrtrie: "\u22B5\u20D2",
  nvsim: "\u223C\u20D2",
  nwArr: "\u21D6",
  nwarhk: "\u2923",
  nwarr: "\u2196",
  nwarrow: "\u2196",
  nwnear: "\u2927",
  oS: "\u24C8",
  oacute: "\xF3",
  oast: "\u229B",
  ocir: "\u229A",
  ocirc: "\xF4",
  ocy: "\u043E",
  odash: "\u229D",
  odblac: "\u0151",
  odiv: "\u2A38",
  odot: "\u2299",
  odsold: "\u29BC",
  oelig: "\u0153",
  ofcir: "\u29BF",
  ofr: "\u{1D52C}",
  ogon: "\u02DB",
  ograve: "\xF2",
  ogt: "\u29C1",
  ohbar: "\u29B5",
  ohm: "\u03A9",
  oint: "\u222E",
  olarr: "\u21BA",
  olcir: "\u29BE",
  olcross: "\u29BB",
  oline: "\u203E",
  olt: "\u29C0",
  omacr: "\u014D",
  omega: "\u03C9",
  omicron: "\u03BF",
  omid: "\u29B6",
  ominus: "\u2296",
  oopf: "\u{1D560}",
  opar: "\u29B7",
  operp: "\u29B9",
  oplus: "\u2295",
  or: "\u2228",
  orarr: "\u21BB",
  ord: "\u2A5D",
  order: "\u2134",
  orderof: "\u2134",
  ordf: "\xAA",
  ordm: "\xBA",
  origof: "\u22B6",
  oror: "\u2A56",
  orslope: "\u2A57",
  orv: "\u2A5B",
  oscr: "\u2134",
  oslash: "\xF8",
  osol: "\u2298",
  otilde: "\xF5",
  otimes: "\u2297",
  otimesas: "\u2A36",
  ouml: "\xF6",
  ovbar: "\u233D",
  par: "\u2225",
  para: "\xB6",
  parallel: "\u2225",
  parsim: "\u2AF3",
  parsl: "\u2AFD",
  part: "\u2202",
  pcy: "\u043F",
  percnt: "%",
  period: ".",
  permil: "\u2030",
  perp: "\u22A5",
  pertenk: "\u2031",
  pfr: "\u{1D52D}",
  phi: "\u03C6",
  phiv: "\u03D5",
  phmmat: "\u2133",
  phone: "\u260E",
  pi: "\u03C0",
  pitchfork: "\u22D4",
  piv: "\u03D6",
  planck: "\u210F",
  planckh: "\u210E",
  plankv: "\u210F",
  plus: "+",
  plusacir: "\u2A23",
  plusb: "\u229E",
  pluscir: "\u2A22",
  plusdo: "\u2214",
  plusdu: "\u2A25",
  pluse: "\u2A72",
  plusmn: "\xB1",
  plussim: "\u2A26",
  plustwo: "\u2A27",
  pm: "\xB1",
  pointint: "\u2A15",
  popf: "\u{1D561}",
  pound: "\xA3",
  pr: "\u227A",
  prE: "\u2AB3",
  prap: "\u2AB7",
  prcue: "\u227C",
  pre: "\u2AAF",
  prec: "\u227A",
  precapprox: "\u2AB7",
  preccurlyeq: "\u227C",
  preceq: "\u2AAF",
  precnapprox: "\u2AB9",
  precneqq: "\u2AB5",
  precnsim: "\u22E8",
  precsim: "\u227E",
  prime: "\u2032",
  primes: "\u2119",
  prnE: "\u2AB5",
  prnap: "\u2AB9",
  prnsim: "\u22E8",
  prod: "\u220F",
  profalar: "\u232E",
  profline: "\u2312",
  profsurf: "\u2313",
  prop: "\u221D",
  propto: "\u221D",
  prsim: "\u227E",
  prurel: "\u22B0",
  pscr: "\u{1D4C5}",
  psi: "\u03C8",
  puncsp: "\u2008",
  qfr: "\u{1D52E}",
  qint: "\u2A0C",
  qopf: "\u{1D562}",
  qprime: "\u2057",
  qscr: "\u{1D4C6}",
  quaternions: "\u210D",
  quatint: "\u2A16",
  quest: "?",
  questeq: "\u225F",
  quot: '"',
  rAarr: "\u21DB",
  rArr: "\u21D2",
  rAtail: "\u291C",
  rBarr: "\u290F",
  rHar: "\u2964",
  race: "\u223D\u0331",
  racute: "\u0155",
  radic: "\u221A",
  raemptyv: "\u29B3",
  rang: "\u27E9",
  rangd: "\u2992",
  range: "\u29A5",
  rangle: "\u27E9",
  raquo: "\xBB",
  rarr: "\u2192",
  rarrap: "\u2975",
  rarrb: "\u21E5",
  rarrbfs: "\u2920",
  rarrc: "\u2933",
  rarrfs: "\u291E",
  rarrhk: "\u21AA",
  rarrlp: "\u21AC",
  rarrpl: "\u2945",
  rarrsim: "\u2974",
  rarrtl: "\u21A3",
  rarrw: "\u219D",
  ratail: "\u291A",
  ratio: "\u2236",
  rationals: "\u211A",
  rbarr: "\u290D",
  rbbrk: "\u2773",
  rbrace: "}",
  rbrack: "]",
  rbrke: "\u298C",
  rbrksld: "\u298E",
  rbrkslu: "\u2990",
  rcaron: "\u0159",
  rcedil: "\u0157",
  rceil: "\u2309",
  rcub: "}",
  rcy: "\u0440",
  rdca: "\u2937",
  rdldhar: "\u2969",
  rdquo: "\u201D",
  rdquor: "\u201D",
  rdsh: "\u21B3",
  real: "\u211C",
  realine: "\u211B",
  realpart: "\u211C",
  reals: "\u211D",
  rect: "\u25AD",
  reg: "\xAE",
  rfisht: "\u297D",
  rfloor: "\u230B",
  rfr: "\u{1D52F}",
  rhard: "\u21C1",
  rharu: "\u21C0",
  rharul: "\u296C",
  rho: "\u03C1",
  rhov: "\u03F1",
  rightarrow: "\u2192",
  rightarrowtail: "\u21A3",
  rightharpoondown: "\u21C1",
  rightharpoonup: "\u21C0",
  rightleftarrows: "\u21C4",
  rightleftharpoons: "\u21CC",
  rightrightarrows: "\u21C9",
  rightsquigarrow: "\u219D",
  rightthreetimes: "\u22CC",
  ring: "\u02DA",
  risingdotseq: "\u2253",
  rlarr: "\u21C4",
  rlhar: "\u21CC",
  rlm: "\u200F",
  rmoust: "\u23B1",
  rmoustache: "\u23B1",
  rnmid: "\u2AEE",
  roang: "\u27ED",
  roarr: "\u21FE",
  robrk: "\u27E7",
  ropar: "\u2986",
  ropf: "\u{1D563}",
  roplus: "\u2A2E",
  rotimes: "\u2A35",
  rpar: ")",
  rpargt: "\u2994",
  rppolint: "\u2A12",
  rrarr: "\u21C9",
  rsaquo: "\u203A",
  rscr: "\u{1D4C7}",
  rsh: "\u21B1",
  rsqb: "]",
  rsquo: "\u2019",
  rsquor: "\u2019",
  rthree: "\u22CC",
  rtimes: "\u22CA",
  rtri: "\u25B9",
  rtrie: "\u22B5",
  rtrif: "\u25B8",
  rtriltri: "\u29CE",
  ruluhar: "\u2968",
  rx: "\u211E",
  sacute: "\u015B",
  sbquo: "\u201A",
  sc: "\u227B",
  scE: "\u2AB4",
  scap: "\u2AB8",
  scaron: "\u0161",
  sccue: "\u227D",
  sce: "\u2AB0",
  scedil: "\u015F",
  scirc: "\u015D",
  scnE: "\u2AB6",
  scnap: "\u2ABA",
  scnsim: "\u22E9",
  scpolint: "\u2A13",
  scsim: "\u227F",
  scy: "\u0441",
  sdot: "\u22C5",
  sdotb: "\u22A1",
  sdote: "\u2A66",
  seArr: "\u21D8",
  searhk: "\u2925",
  searr: "\u2198",
  searrow: "\u2198",
  sect: "\xA7",
  semi: ";",
  seswar: "\u2929",
  setminus: "\u2216",
  setmn: "\u2216",
  sext: "\u2736",
  sfr: "\u{1D530}",
  sfrown: "\u2322",
  sharp: "\u266F",
  shchcy: "\u0449",
  shcy: "\u0448",
  shortmid: "\u2223",
  shortparallel: "\u2225",
  shy: "\xAD",
  sigma: "\u03C3",
  sigmaf: "\u03C2",
  sigmav: "\u03C2",
  sim: "\u223C",
  simdot: "\u2A6A",
  sime: "\u2243",
  simeq: "\u2243",
  simg: "\u2A9E",
  simgE: "\u2AA0",
  siml: "\u2A9D",
  simlE: "\u2A9F",
  simne: "\u2246",
  simplus: "\u2A24",
  simrarr: "\u2972",
  slarr: "\u2190",
  smallsetminus: "\u2216",
  smashp: "\u2A33",
  smeparsl: "\u29E4",
  smid: "\u2223",
  smile: "\u2323",
  smt: "\u2AAA",
  smte: "\u2AAC",
  smtes: "\u2AAC\uFE00",
  softcy: "\u044C",
  sol: "/",
  solb: "\u29C4",
  solbar: "\u233F",
  sopf: "\u{1D564}",
  spades: "\u2660",
  spadesuit: "\u2660",
  spar: "\u2225",
  sqcap: "\u2293",
  sqcaps: "\u2293\uFE00",
  sqcup: "\u2294",
  sqcups: "\u2294\uFE00",
  sqsub: "\u228F",
  sqsube: "\u2291",
  sqsubset: "\u228F",
  sqsubseteq: "\u2291",
  sqsup: "\u2290",
  sqsupe: "\u2292",
  sqsupset: "\u2290",
  sqsupseteq: "\u2292",
  squ: "\u25A1",
  square: "\u25A1",
  squarf: "\u25AA",
  squf: "\u25AA",
  srarr: "\u2192",
  sscr: "\u{1D4C8}",
  ssetmn: "\u2216",
  ssmile: "\u2323",
  sstarf: "\u22C6",
  star: "\u2606",
  starf: "\u2605",
  straightepsilon: "\u03F5",
  straightphi: "\u03D5",
  strns: "\xAF",
  sub: "\u2282",
  subE: "\u2AC5",
  subdot: "\u2ABD",
  sube: "\u2286",
  subedot: "\u2AC3",
  submult: "\u2AC1",
  subnE: "\u2ACB",
  subne: "\u228A",
  subplus: "\u2ABF",
  subrarr: "\u2979",
  subset: "\u2282",
  subseteq: "\u2286",
  subseteqq: "\u2AC5",
  subsetneq: "\u228A",
  subsetneqq: "\u2ACB",
  subsim: "\u2AC7",
  subsub: "\u2AD5",
  subsup: "\u2AD3",
  succ: "\u227B",
  succapprox: "\u2AB8",
  succcurlyeq: "\u227D",
  succeq: "\u2AB0",
  succnapprox: "\u2ABA",
  succneqq: "\u2AB6",
  succnsim: "\u22E9",
  succsim: "\u227F",
  sum: "\u2211",
  sung: "\u266A",
  sup1: "\xB9",
  sup2: "\xB2",
  sup3: "\xB3",
  sup: "\u2283",
  supE: "\u2AC6",
  supdot: "\u2ABE",
  supdsub: "\u2AD8",
  supe: "\u2287",
  supedot: "\u2AC4",
  suphsol: "\u27C9",
  suphsub: "\u2AD7",
  suplarr: "\u297B",
  supmult: "\u2AC2",
  supnE: "\u2ACC",
  supne: "\u228B",
  supplus: "\u2AC0",
  supset: "\u2283",
  supseteq: "\u2287",
  supseteqq: "\u2AC6",
  supsetneq: "\u228B",
  supsetneqq: "\u2ACC",
  supsim: "\u2AC8",
  supsub: "\u2AD4",
  supsup: "\u2AD6",
  swArr: "\u21D9",
  swarhk: "\u2926",
  swarr: "\u2199",
  swarrow: "\u2199",
  swnwar: "\u292A",
  szlig: "\xDF",
  target: "\u2316",
  tau: "\u03C4",
  tbrk: "\u23B4",
  tcaron: "\u0165",
  tcedil: "\u0163",
  tcy: "\u0442",
  tdot: "\u20DB",
  telrec: "\u2315",
  tfr: "\u{1D531}",
  there4: "\u2234",
  therefore: "\u2234",
  theta: "\u03B8",
  thetasym: "\u03D1",
  thetav: "\u03D1",
  thickapprox: "\u2248",
  thicksim: "\u223C",
  thinsp: "\u2009",
  thkap: "\u2248",
  thksim: "\u223C",
  thorn: "\xFE",
  tilde: "\u02DC",
  times: "\xD7",
  timesb: "\u22A0",
  timesbar: "\u2A31",
  timesd: "\u2A30",
  tint: "\u222D",
  toea: "\u2928",
  top: "\u22A4",
  topbot: "\u2336",
  topcir: "\u2AF1",
  topf: "\u{1D565}",
  topfork: "\u2ADA",
  tosa: "\u2929",
  tprime: "\u2034",
  trade: "\u2122",
  triangle: "\u25B5",
  triangledown: "\u25BF",
  triangleleft: "\u25C3",
  trianglelefteq: "\u22B4",
  triangleq: "\u225C",
  triangleright: "\u25B9",
  trianglerighteq: "\u22B5",
  tridot: "\u25EC",
  trie: "\u225C",
  triminus: "\u2A3A",
  triplus: "\u2A39",
  trisb: "\u29CD",
  tritime: "\u2A3B",
  trpezium: "\u23E2",
  tscr: "\u{1D4C9}",
  tscy: "\u0446",
  tshcy: "\u045B",
  tstrok: "\u0167",
  twixt: "\u226C",
  twoheadleftarrow: "\u219E",
  twoheadrightarrow: "\u21A0",
  uArr: "\u21D1",
  uHar: "\u2963",
  uacute: "\xFA",
  uarr: "\u2191",
  ubrcy: "\u045E",
  ubreve: "\u016D",
  ucirc: "\xFB",
  ucy: "\u0443",
  udarr: "\u21C5",
  udblac: "\u0171",
  udhar: "\u296E",
  ufisht: "\u297E",
  ufr: "\u{1D532}",
  ugrave: "\xF9",
  uharl: "\u21BF",
  uharr: "\u21BE",
  uhblk: "\u2580",
  ulcorn: "\u231C",
  ulcorner: "\u231C",
  ulcrop: "\u230F",
  ultri: "\u25F8",
  umacr: "\u016B",
  uml: "\xA8",
  uogon: "\u0173",
  uopf: "\u{1D566}",
  uparrow: "\u2191",
  updownarrow: "\u2195",
  upharpoonleft: "\u21BF",
  upharpoonright: "\u21BE",
  uplus: "\u228E",
  upsi: "\u03C5",
  upsih: "\u03D2",
  upsilon: "\u03C5",
  upuparrows: "\u21C8",
  urcorn: "\u231D",
  urcorner: "\u231D",
  urcrop: "\u230E",
  uring: "\u016F",
  urtri: "\u25F9",
  uscr: "\u{1D4CA}",
  utdot: "\u22F0",
  utilde: "\u0169",
  utri: "\u25B5",
  utrif: "\u25B4",
  uuarr: "\u21C8",
  uuml: "\xFC",
  uwangle: "\u29A7",
  vArr: "\u21D5",
  vBar: "\u2AE8",
  vBarv: "\u2AE9",
  vDash: "\u22A8",
  vangrt: "\u299C",
  varepsilon: "\u03F5",
  varkappa: "\u03F0",
  varnothing: "\u2205",
  varphi: "\u03D5",
  varpi: "\u03D6",
  varpropto: "\u221D",
  varr: "\u2195",
  varrho: "\u03F1",
  varsigma: "\u03C2",
  varsubsetneq: "\u228A\uFE00",
  varsubsetneqq: "\u2ACB\uFE00",
  varsupsetneq: "\u228B\uFE00",
  varsupsetneqq: "\u2ACC\uFE00",
  vartheta: "\u03D1",
  vartriangleleft: "\u22B2",
  vartriangleright: "\u22B3",
  vcy: "\u0432",
  vdash: "\u22A2",
  vee: "\u2228",
  veebar: "\u22BB",
  veeeq: "\u225A",
  vellip: "\u22EE",
  verbar: "|",
  vert: "|",
  vfr: "\u{1D533}",
  vltri: "\u22B2",
  vnsub: "\u2282\u20D2",
  vnsup: "\u2283\u20D2",
  vopf: "\u{1D567}",
  vprop: "\u221D",
  vrtri: "\u22B3",
  vscr: "\u{1D4CB}",
  vsubnE: "\u2ACB\uFE00",
  vsubne: "\u228A\uFE00",
  vsupnE: "\u2ACC\uFE00",
  vsupne: "\u228B\uFE00",
  vzigzag: "\u299A",
  wcirc: "\u0175",
  wedbar: "\u2A5F",
  wedge: "\u2227",
  wedgeq: "\u2259",
  weierp: "\u2118",
  wfr: "\u{1D534}",
  wopf: "\u{1D568}",
  wp: "\u2118",
  wr: "\u2240",
  wreath: "\u2240",
  wscr: "\u{1D4CC}",
  xcap: "\u22C2",
  xcirc: "\u25EF",
  xcup: "\u22C3",
  xdtri: "\u25BD",
  xfr: "\u{1D535}",
  xhArr: "\u27FA",
  xharr: "\u27F7",
  xi: "\u03BE",
  xlArr: "\u27F8",
  xlarr: "\u27F5",
  xmap: "\u27FC",
  xnis: "\u22FB",
  xodot: "\u2A00",
  xopf: "\u{1D569}",
  xoplus: "\u2A01",
  xotime: "\u2A02",
  xrArr: "\u27F9",
  xrarr: "\u27F6",
  xscr: "\u{1D4CD}",
  xsqcup: "\u2A06",
  xuplus: "\u2A04",
  xutri: "\u25B3",
  xvee: "\u22C1",
  xwedge: "\u22C0",
  yacute: "\xFD",
  yacy: "\u044F",
  ycirc: "\u0177",
  ycy: "\u044B",
  yen: "\xA5",
  yfr: "\u{1D536}",
  yicy: "\u0457",
  yopf: "\u{1D56A}",
  yscr: "\u{1D4CE}",
  yucy: "\u044E",
  yuml: "\xFF",
  zacute: "\u017A",
  zcaron: "\u017E",
  zcy: "\u0437",
  zdot: "\u017C",
  zeetrf: "\u2128",
  zeta: "\u03B6",
  zfr: "\u{1D537}",
  zhcy: "\u0436",
  zigrarr: "\u21DD",
  zopf: "\u{1D56B}",
  zscr: "\u{1D4CF}",
  zwj: "\u200D",
  zwnj: "\u200C"
};

// ../../node_modules/decode-named-character-reference/index.js
var own17 = {}.hasOwnProperty;
function decodeNamedCharacterReference(value) {
  return own17.call(characterEntities, value) ? characterEntities[value] : false;
}

// ../../node_modules/micromark-util-decode-numeric-character-reference/index.js
function decodeNumericCharacterReference(value, base5) {
  const code7 = Number.parseInt(value, base5);
  if (
    // C0 except for HT, LF, FF, CR, space.
    code7 < 9 || code7 === 11 || code7 > 13 && code7 < 32 || // Control character (DEL) of C0, and C1 controls.
    code7 > 126 && code7 < 160 || // Lone high surrogates and low surrogates.
    code7 > 55295 && code7 < 57344 || // Noncharacters.
    code7 > 64975 && code7 < 65008 || (code7 & 65535) === 65535 || (code7 & 65535) === 65534 || // Out of range
    code7 > 1114111
  ) {
    return "\uFFFD";
  }
  return String.fromCharCode(code7);
}

// ../../node_modules/micromark-util-decode-string/index.js
var characterEscapeOrReference = /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;
function decodeString(value) {
  return value.replace(characterEscapeOrReference, decode);
}
function decode($0, $1, $2) {
  if ($1) {
    return $1;
  }
  const head2 = $2.charCodeAt(0);
  if (head2 === 35) {
    const head3 = $2.charCodeAt(1);
    const hex = head3 === 120 || head3 === 88;
    return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);
  }
  return decodeNamedCharacterReference($2) || $0;
}

// ../../node_modules/mdast-util-to-markdown/lib/util/association.js
function association(node3) {
  if (node3.label || !node3.identifier) {
    return node3.label || "";
  }
  return decodeString(node3.identifier);
}

// ../../node_modules/mdast-util-to-markdown/lib/util/container-flow.js
function containerFlow(parent2, state, info) {
  const indexStack = state.indexStack;
  const children = parent2.children || [];
  const tracker = state.createTracker(info);
  const results = [];
  let index4 = -1;
  indexStack.push(-1);
  while (++index4 < children.length) {
    const child = children[index4];
    indexStack[indexStack.length - 1] = index4;
    results.push(
      tracker.move(
        state.handle(child, parent2, state, {
          before: "\n",
          after: "\n",
          ...tracker.current()
        })
      )
    );
    if (child.type !== "list") {
      state.bulletLastUsed = void 0;
    }
    if (index4 < children.length - 1) {
      results.push(
        tracker.move(between(child, children[index4 + 1], parent2, state))
      );
    }
  }
  indexStack.pop();
  return results.join("");
}
function between(left2, right2, parent2, state) {
  let index4 = state.join.length;
  while (index4--) {
    const result = state.join[index4](left2, right2, parent2, state);
    if (result === true || result === 1) {
      break;
    }
    if (typeof result === "number") {
      return "\n".repeat(1 + result);
    }
    if (result === false) {
      return "\n\n<!---->\n\n";
    }
  }
  return "\n\n";
}

// ../../node_modules/mdast-util-to-markdown/lib/util/indent-lines.js
var eol = /\r?\n|\r/g;
function indentLines(value, map13) {
  const result = [];
  let start = 0;
  let line2 = 0;
  let match3;
  while (match3 = eol.exec(value)) {
    one8(value.slice(start, match3.index));
    result.push(match3[0]);
    start = match3.index + match3[0].length;
    line2++;
  }
  one8(value.slice(start));
  return result.join("");
  function one8(value2) {
    result.push(map13(value2, line2, !value2));
  }
}

// ../../node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js
function patternCompile(pattern) {
  if (!pattern._compiled) {
    const before = (pattern.atBreak ? "[\\r\\n][\\t ]*" : "") + (pattern.before ? "(?:" + pattern.before + ")" : "");
    pattern._compiled = new RegExp(
      (before ? "(" + before + ")" : "") + (/[|\\{}()[\]^$+*?.-]/.test(pattern.character) ? "\\" : "") + pattern.character + (pattern.after ? "(?:" + pattern.after + ")" : ""),
      "g"
    );
  }
  return pattern._compiled;
}

// ../../node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js
function patternInScope(stack, pattern) {
  return listInScope(stack, pattern.inConstruct, true) && !listInScope(stack, pattern.notInConstruct, false);
}
function listInScope(stack, list6, none) {
  if (typeof list6 === "string") {
    list6 = [list6];
  }
  if (!list6 || list6.length === 0) {
    return none;
  }
  let index4 = -1;
  while (++index4 < list6.length) {
    if (stack.includes(list6[index4])) {
      return true;
    }
  }
  return false;
}

// ../../node_modules/mdast-util-to-markdown/lib/util/safe.js
function safe(state, input3, config3) {
  const value = (config3.before || "") + (input3 || "") + (config3.after || "");
  const positions = [];
  const result = [];
  const infos = {};
  let index4 = -1;
  while (++index4 < state.unsafe.length) {
    const pattern = state.unsafe[index4];
    if (!patternInScope(state.stack, pattern)) {
      continue;
    }
    const expression = patternCompile(pattern);
    let match3;
    while (match3 = expression.exec(value)) {
      const before = "before" in pattern || Boolean(pattern.atBreak);
      const after = "after" in pattern;
      const position6 = match3.index + (before ? match3[1].length : 0);
      if (positions.includes(position6)) {
        if (infos[position6].before && !before) {
          infos[position6].before = false;
        }
        if (infos[position6].after && !after) {
          infos[position6].after = false;
        }
      } else {
        positions.push(position6);
        infos[position6] = { before, after };
      }
    }
  }
  positions.sort(numerical);
  let start = config3.before ? config3.before.length : 0;
  const end = value.length - (config3.after ? config3.after.length : 0);
  index4 = -1;
  while (++index4 < positions.length) {
    const position6 = positions[index4];
    if (position6 < start || position6 >= end) {
      continue;
    }
    if (position6 + 1 < end && positions[index4 + 1] === position6 + 1 && infos[position6].after && !infos[position6 + 1].before && !infos[position6 + 1].after || positions[index4 - 1] === position6 - 1 && infos[position6].before && !infos[position6 - 1].before && !infos[position6 - 1].after) {
      continue;
    }
    if (start !== position6) {
      result.push(escapeBackslashes(value.slice(start, position6), "\\"));
    }
    start = position6;
    if (/[!-/:-@[-`{-~]/.test(value.charAt(position6)) && (!config3.encode || !config3.encode.includes(value.charAt(position6)))) {
      result.push("\\");
    } else {
      result.push(
        "&#x" + value.charCodeAt(position6).toString(16).toUpperCase() + ";"
      );
      start++;
    }
  }
  result.push(escapeBackslashes(value.slice(start, end), config3.after));
  return result.join("");
}
function numerical(a2, b) {
  return a2 - b;
}
function escapeBackslashes(value, after) {
  const expression = /\\(?=[!-/:-@[-`{-~])/g;
  const positions = [];
  const results = [];
  const whole = value + after;
  let index4 = -1;
  let start = 0;
  let match3;
  while (match3 = expression.exec(whole)) {
    positions.push(match3.index);
  }
  while (++index4 < positions.length) {
    if (start !== positions[index4]) {
      results.push(value.slice(start, positions[index4]));
    }
    results.push("\\");
    start = positions[index4];
  }
  results.push(value.slice(start));
  return results.join("");
}

// ../../node_modules/mdast-util-to-markdown/lib/util/track.js
function track(config3) {
  const options = config3 || {};
  const now = options.now || {};
  let lineShift = options.lineShift || 0;
  let line2 = now.line || 1;
  let column = now.column || 1;
  return { move, current: current2, shift };
  function current2() {
    return { now: { line: line2, column }, lineShift };
  }
  function shift(value) {
    lineShift += value;
  }
  function move(input3) {
    const value = input3 || "";
    const chunks = value.split(/\r?\n|\r/g);
    const tail = chunks[chunks.length - 1];
    line2 += chunks.length - 1;
    column = chunks.length === 1 ? column + tail.length : 1 + tail.length + lineShift;
    return value;
  }
}

// ../../node_modules/mdast-util-gfm-footnote/lib/index.js
footnoteReference3.peek = footnoteReferencePeek;
function gfmFootnoteToMarkdown() {
  return {
    // This is on by default already.
    unsafe: [{ character: "[", inConstruct: ["phrasing", "label", "reference"] }],
    handlers: { footnoteDefinition: footnoteDefinition2, footnoteReference: footnoteReference3 }
  };
}
function footnoteReference3(node3, _2, context, safeOptions) {
  const tracker = track(safeOptions);
  let value = tracker.move("[^");
  const exit = context.enter("footnoteReference");
  const subexit = context.enter("reference");
  value += tracker.move(
    safe(context, association(node3), {
      ...tracker.current(),
      before: value,
      after: "]"
    })
  );
  subexit();
  exit();
  value += tracker.move("]");
  return value;
}
function footnoteReferencePeek() {
  return "[";
}
function footnoteDefinition2(node3, _2, context, safeOptions) {
  const tracker = track(safeOptions);
  let value = tracker.move("[^");
  const exit = context.enter("footnoteDefinition");
  const subexit = context.enter("label");
  value += tracker.move(
    safe(context, association(node3), {
      ...tracker.current(),
      before: value,
      after: "]"
    })
  );
  subexit();
  value += tracker.move(
    "]:" + (node3.children && node3.children.length > 0 ? " " : "")
  );
  tracker.shift(4);
  value += tracker.move(
    indentLines(containerFlow(node3, context, tracker.current()), map3)
  );
  exit();
  return value;
}
function map3(line2, index4, blank) {
  if (index4 === 0) {
    return line2;
  }
  return (blank ? "" : "    ") + line2;
}

// ../../node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js
function containerPhrasing(parent2, state, info) {
  const indexStack = state.indexStack;
  const children = parent2.children || [];
  const results = [];
  let index4 = -1;
  let before = info.before;
  indexStack.push(-1);
  let tracker = state.createTracker(info);
  while (++index4 < children.length) {
    const child = children[index4];
    let after;
    indexStack[indexStack.length - 1] = index4;
    if (index4 + 1 < children.length) {
      let handle6 = state.handle.handlers[children[index4 + 1].type];
      if (handle6 && handle6.peek) handle6 = handle6.peek;
      after = handle6 ? handle6(children[index4 + 1], parent2, state, {
        before: "",
        after: "",
        ...tracker.current()
      }).charAt(0) : "";
    } else {
      after = info.after;
    }
    if (results.length > 0 && (before === "\r" || before === "\n") && child.type === "html") {
      results[results.length - 1] = results[results.length - 1].replace(
        /(\r?\n|\r)$/,
        " "
      );
      before = " ";
      tracker = state.createTracker(info);
      tracker.move(results.join(""));
    }
    results.push(
      tracker.move(
        state.handle(child, parent2, state, {
          ...tracker.current(),
          before,
          after
        })
      )
    );
    before = results[results.length - 1].slice(-1);
  }
  indexStack.pop();
  return results.join("");
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js
inlineCode4.peek = inlineCodePeek;
function inlineCode4(node3, _2, state) {
  let value = node3.value || "";
  let sequence = "`";
  let index4 = -1;
  while (new RegExp("(^|[^`])" + sequence + "([^`]|$)").test(value)) {
    sequence += "`";
  }
  if (/[^ \r\n]/.test(value) && (/^[ \r\n]/.test(value) && /[ \r\n]$/.test(value) || /^`|`$/.test(value))) {
    value = " " + value + " ";
  }
  while (++index4 < state.unsafe.length) {
    const pattern = state.unsafe[index4];
    const expression = patternCompile(pattern);
    let match3;
    if (!pattern.atBreak) continue;
    while (match3 = expression.exec(value)) {
      let position6 = match3.index;
      if (value.charCodeAt(position6) === 10 && value.charCodeAt(position6 - 1) === 13) {
        position6--;
      }
      value = value.slice(0, position6) + " " + value.slice(match3.index + 1);
    }
  }
  return sequence + value + sequence;
}
function inlineCodePeek() {
  return "`";
}

// ../../node_modules/markdown-table/index.js
function markdownTable(table5, options = {}) {
  const align = (options.align || []).concat();
  const stringLength = options.stringLength || defaultStringLength;
  const alignments = [];
  const cellMatrix = [];
  const sizeMatrix = [];
  const longestCellByColumn = [];
  let mostCellsPerRow = 0;
  let rowIndex = -1;
  while (++rowIndex < table5.length) {
    const row3 = [];
    const sizes2 = [];
    let columnIndex2 = -1;
    if (table5[rowIndex].length > mostCellsPerRow) {
      mostCellsPerRow = table5[rowIndex].length;
    }
    while (++columnIndex2 < table5[rowIndex].length) {
      const cell3 = serialize2(table5[rowIndex][columnIndex2]);
      if (options.alignDelimiters !== false) {
        const size = stringLength(cell3);
        sizes2[columnIndex2] = size;
        if (longestCellByColumn[columnIndex2] === void 0 || size > longestCellByColumn[columnIndex2]) {
          longestCellByColumn[columnIndex2] = size;
        }
      }
      row3.push(cell3);
    }
    cellMatrix[rowIndex] = row3;
    sizeMatrix[rowIndex] = sizes2;
  }
  let columnIndex = -1;
  if (typeof align === "object" && "length" in align) {
    while (++columnIndex < mostCellsPerRow) {
      alignments[columnIndex] = toAlignment(align[columnIndex]);
    }
  } else {
    const code7 = toAlignment(align);
    while (++columnIndex < mostCellsPerRow) {
      alignments[columnIndex] = code7;
    }
  }
  columnIndex = -1;
  const row2 = [];
  const sizes = [];
  while (++columnIndex < mostCellsPerRow) {
    const code7 = alignments[columnIndex];
    let before = "";
    let after = "";
    if (code7 === 99) {
      before = ":";
      after = ":";
    } else if (code7 === 108) {
      before = ":";
    } else if (code7 === 114) {
      after = ":";
    }
    let size = options.alignDelimiters === false ? 1 : Math.max(
      1,
      longestCellByColumn[columnIndex] - before.length - after.length
    );
    const cell3 = before + "-".repeat(size) + after;
    if (options.alignDelimiters !== false) {
      size = before.length + size + after.length;
      if (size > longestCellByColumn[columnIndex]) {
        longestCellByColumn[columnIndex] = size;
      }
      sizes[columnIndex] = size;
    }
    row2[columnIndex] = cell3;
  }
  cellMatrix.splice(1, 0, row2);
  sizeMatrix.splice(1, 0, sizes);
  rowIndex = -1;
  const lines = [];
  while (++rowIndex < cellMatrix.length) {
    const row3 = cellMatrix[rowIndex];
    const sizes2 = sizeMatrix[rowIndex];
    columnIndex = -1;
    const line2 = [];
    while (++columnIndex < mostCellsPerRow) {
      const cell3 = row3[columnIndex] || "";
      let before = "";
      let after = "";
      if (options.alignDelimiters !== false) {
        const size = longestCellByColumn[columnIndex] - (sizes2[columnIndex] || 0);
        const code7 = alignments[columnIndex];
        if (code7 === 114) {
          before = " ".repeat(size);
        } else if (code7 === 99) {
          if (size % 2) {
            before = " ".repeat(size / 2 + 0.5);
            after = " ".repeat(size / 2 - 0.5);
          } else {
            before = " ".repeat(size / 2);
            after = before;
          }
        } else {
          after = " ".repeat(size);
        }
      }
      if (options.delimiterStart !== false && !columnIndex) {
        line2.push("|");
      }
      if (options.padding !== false && // Don’t add the opening space if we’re not aligning and the cell is
      // empty: there will be a closing space.
      !(options.alignDelimiters === false && cell3 === "") && (options.delimiterStart !== false || columnIndex)) {
        line2.push(" ");
      }
      if (options.alignDelimiters !== false) {
        line2.push(before);
      }
      line2.push(cell3);
      if (options.alignDelimiters !== false) {
        line2.push(after);
      }
      if (options.padding !== false) {
        line2.push(" ");
      }
      if (options.delimiterEnd !== false || columnIndex !== mostCellsPerRow - 1) {
        line2.push("|");
      }
    }
    lines.push(
      options.delimiterEnd === false ? line2.join("").replace(/ +$/, "") : line2.join("")
    );
  }
  return lines.join("\n");
}
function serialize2(value) {
  return value === null || value === void 0 ? "" : String(value);
}
function defaultStringLength(value) {
  return value.length;
}
function toAlignment(value) {
  const code7 = typeof value === "string" ? value.codePointAt(0) : 0;
  return code7 === 67 || code7 === 99 ? 99 : code7 === 76 || code7 === 108 ? 108 : code7 === 82 || code7 === 114 ? 114 : 0;
}

// ../../node_modules/mdast-util-gfm-table/lib/index.js
function gfmTableToMarkdown(options) {
  const settings = options || {};
  const padding2 = settings.tableCellPadding;
  const alignDelimiters = settings.tablePipeAlign;
  const stringLength = settings.stringLength;
  const around = padding2 ? " " : "|";
  return {
    unsafe: [
      { character: "\r", inConstruct: "tableCell" },
      { character: "\n", inConstruct: "tableCell" },
      // A pipe, when followed by a tab or space (padding), or a dash or colon
      // (unpadded delimiter row), could result in a table.
      { atBreak: true, character: "|", after: "[	 :-]" },
      // A pipe in a cell must be encoded.
      { character: "|", inConstruct: "tableCell" },
      // A colon must be followed by a dash, in which case it could start a
      // delimiter row.
      { atBreak: true, character: ":", after: "-" },
      // A delimiter row can also start with a dash, when followed by more
      // dashes, a colon, or a pipe.
      // This is a stricter version than the built in check for lists, thematic
      // breaks, and setex heading underlines though:
      // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>
      { atBreak: true, character: "-", after: "[:|-]" }
    ],
    handlers: {
      table: handleTable,
      tableRow: handleTableRow,
      tableCell: handleTableCell,
      inlineCode: inlineCodeWithTable
    }
  };
  function handleTable(node3, _2, context, safeOptions) {
    return serializeData(
      handleTableAsData(node3, context, safeOptions),
      node3.align
    );
  }
  function handleTableRow(node3, _2, context, safeOptions) {
    const row2 = handleTableRowAsData(node3, context, safeOptions);
    const value = serializeData([row2]);
    return value.slice(0, value.indexOf("\n"));
  }
  function handleTableCell(node3, _2, context, safeOptions) {
    const exit = context.enter("tableCell");
    const subexit = context.enter("phrasing");
    const value = containerPhrasing(node3, context, {
      ...safeOptions,
      before: around,
      after: around
    });
    subexit();
    exit();
    return value;
  }
  function serializeData(matrix, align) {
    return markdownTable(matrix, {
      align,
      // @ts-expect-error: `markdown-table` types should support `null`.
      alignDelimiters,
      // @ts-expect-error: `markdown-table` types should support `null`.
      padding: padding2,
      // @ts-expect-error: `markdown-table` types should support `null`.
      stringLength
    });
  }
  function handleTableAsData(node3, context, safeOptions) {
    const children = node3.children;
    let index4 = -1;
    const result = [];
    const subexit = context.enter("table");
    while (++index4 < children.length) {
      result[index4] = handleTableRowAsData(
        children[index4],
        context,
        safeOptions
      );
    }
    subexit();
    return result;
  }
  function handleTableRowAsData(node3, context, safeOptions) {
    const children = node3.children;
    let index4 = -1;
    const result = [];
    const subexit = context.enter("tableRow");
    while (++index4 < children.length) {
      result[index4] = handleTableCell(
        children[index4],
        node3,
        context,
        safeOptions
      );
    }
    subexit();
    return result;
  }
  function inlineCodeWithTable(node3, parent2, context) {
    let value = inlineCode4(node3, parent2, context);
    if (context.stack.includes("tableCell")) {
      value = value.replace(/\|/g, "\\$&");
    }
    return value;
  }
}

// ../../node_modules/mdast-util-to-markdown/lib/configure.js
function configure(base5, extension) {
  let index4 = -1;
  let key2;
  if (extension.extensions) {
    while (++index4 < extension.extensions.length) {
      configure(base5, extension.extensions[index4]);
    }
  }
  for (key2 in extension) {
    if (key2 === "extensions") {
    } else if (key2 === "unsafe" || key2 === "join") {
      base5[key2] = [...base5[key2] || [], ...extension[key2] || []];
    } else if (key2 === "handlers") {
      base5[key2] = Object.assign(base5[key2], extension[key2] || {});
    } else {
      base5.options[key2] = extension[key2];
    }
  }
  return base5;
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/blockquote.js
function blockquote4(node3, _2, state, info) {
  const exit = state.enter("blockquote");
  const tracker = state.createTracker(info);
  tracker.move("> ");
  tracker.shift(2);
  const value = state.indentLines(
    state.containerFlow(node3, tracker.current()),
    map4
  );
  exit();
  return value;
}
function map4(line2, _2, blank) {
  return ">" + (blank ? "" : " ") + line2;
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/break.js
function hardBreak2(_2, _1, state, info) {
  let index4 = -1;
  while (++index4 < state.unsafe.length) {
    if (state.unsafe[index4].character === "\n" && patternInScope(state.stack, state.unsafe[index4])) {
      return /[ \t]/.test(info.before) ? "" : " ";
    }
  }
  return "\\\n";
}

// ../../node_modules/longest-streak/index.js
function longestStreak(value, substring) {
  const source2 = String(value);
  let index4 = source2.indexOf(substring);
  let expected = index4;
  let count2 = 0;
  let max = 0;
  if (typeof substring !== "string") {
    throw new TypeError("Expected substring");
  }
  while (index4 !== -1) {
    if (index4 === expected) {
      if (++count2 > max) {
        max = count2;
      }
    } else {
      count2 = 1;
    }
    expected = index4 + substring.length;
    index4 = source2.indexOf(substring, expected);
  }
  return max;
}

// ../../node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js
function formatCodeAsIndented(node3, state) {
  return Boolean(
    !state.options.fences && node3.value && // If there’s no info…
    !node3.lang && // And there’s a non-whitespace character…
    /[^ \r\n]/.test(node3.value) && // And the value doesn’t start or end in a blank…
    !/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(node3.value)
  );
}

// ../../node_modules/mdast-util-to-markdown/lib/util/check-fence.js
function checkFence(state) {
  const marker = state.options.fence || "`";
  if (marker !== "`" && marker !== "~") {
    throw new Error(
      "Cannot serialize code with `" + marker + "` for `options.fence`, expected `` ` `` or `~`"
    );
  }
  return marker;
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/code.js
function code5(node3, _2, state, info) {
  const marker = checkFence(state);
  const raw2 = node3.value || "";
  const suffix = marker === "`" ? "GraveAccent" : "Tilde";
  if (formatCodeAsIndented(node3, state)) {
    const exit2 = state.enter("codeIndented");
    const value2 = state.indentLines(raw2, map5);
    exit2();
    return value2;
  }
  const tracker = state.createTracker(info);
  const sequence = marker.repeat(Math.max(longestStreak(raw2, marker) + 1, 3));
  const exit = state.enter("codeFenced");
  let value = tracker.move(sequence);
  if (node3.lang) {
    const subexit = state.enter(`codeFencedLang${suffix}`);
    value += tracker.move(
      state.safe(node3.lang, {
        before: value,
        after: " ",
        encode: ["`"],
        ...tracker.current()
      })
    );
    subexit();
  }
  if (node3.lang && node3.meta) {
    const subexit = state.enter(`codeFencedMeta${suffix}`);
    value += tracker.move(" ");
    value += tracker.move(
      state.safe(node3.meta, {
        before: value,
        after: "\n",
        encode: ["`"],
        ...tracker.current()
      })
    );
    subexit();
  }
  value += tracker.move("\n");
  if (raw2) {
    value += tracker.move(raw2 + "\n");
  }
  value += tracker.move(sequence);
  exit();
  return value;
}
function map5(line2, _2, blank) {
  return (blank ? "" : "    ") + line2;
}

// ../../node_modules/mdast-util-to-markdown/lib/util/check-quote.js
function checkQuote(state) {
  const marker = state.options.quote || '"';
  if (marker !== '"' && marker !== "'") {
    throw new Error(
      "Cannot serialize title with `" + marker + "` for `options.quote`, expected `\"`, or `'`"
    );
  }
  return marker;
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/definition.js
function definition(node3, _2, state, info) {
  const quote = checkQuote(state);
  const suffix = quote === '"' ? "Quote" : "Apostrophe";
  const exit = state.enter("definition");
  let subexit = state.enter("label");
  const tracker = state.createTracker(info);
  let value = tracker.move("[");
  value += tracker.move(
    state.safe(state.associationId(node3), {
      before: value,
      after: "]",
      ...tracker.current()
    })
  );
  value += tracker.move("]: ");
  subexit();
  if (
    // If there’s no url, or…
    !node3.url || // If there are control characters or whitespace.
    /[\0- \u007F]/.test(node3.url)
  ) {
    subexit = state.enter("destinationLiteral");
    value += tracker.move("<");
    value += tracker.move(
      state.safe(node3.url, { before: value, after: ">", ...tracker.current() })
    );
    value += tracker.move(">");
  } else {
    subexit = state.enter("destinationRaw");
    value += tracker.move(
      state.safe(node3.url, {
        before: value,
        after: node3.title ? " " : "\n",
        ...tracker.current()
      })
    );
  }
  subexit();
  if (node3.title) {
    subexit = state.enter(`title${suffix}`);
    value += tracker.move(" " + quote);
    value += tracker.move(
      state.safe(node3.title, {
        before: value,
        after: quote,
        ...tracker.current()
      })
    );
    value += tracker.move(quote);
    subexit();
  }
  exit();
  return value;
}

// ../../node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js
function checkEmphasis(state) {
  const marker = state.options.emphasis || "*";
  if (marker !== "*" && marker !== "_") {
    throw new Error(
      "Cannot serialize emphasis with `" + marker + "` for `options.emphasis`, expected `*`, or `_`"
    );
  }
  return marker;
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/emphasis.js
emphasis3.peek = emphasisPeek;
function emphasis3(node3, _2, state, info) {
  const marker = checkEmphasis(state);
  const exit = state.enter("emphasis");
  const tracker = state.createTracker(info);
  let value = tracker.move(marker);
  value += tracker.move(
    state.containerPhrasing(node3, {
      before: value,
      after: marker,
      ...tracker.current()
    })
  );
  value += tracker.move(marker);
  exit();
  return value;
}
function emphasisPeek(_2, _1, state) {
  return state.options.emphasis || "*";
}

// ../../node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js
function formatHeadingAsSetext(node3, state) {
  let literalWithBreak = false;
  visit(node3, (node4) => {
    if ("value" in node4 && /\r?\n|\r/.test(node4.value) || node4.type === "break") {
      literalWithBreak = true;
      return EXIT;
    }
  });
  return Boolean(
    (!node3.depth || node3.depth < 3) && toString2(node3) && (state.options.setext || literalWithBreak)
  );
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/heading.js
function heading5(node3, _2, state, info) {
  const rank = Math.max(Math.min(6, node3.depth || 1), 1);
  const tracker = state.createTracker(info);
  if (formatHeadingAsSetext(node3, state)) {
    const exit2 = state.enter("headingSetext");
    const subexit2 = state.enter("phrasing");
    const value2 = state.containerPhrasing(node3, {
      ...tracker.current(),
      before: "\n",
      after: "\n"
    });
    subexit2();
    exit2();
    return value2 + "\n" + (rank === 1 ? "=" : "-").repeat(
      // The whole size…
      value2.length - // Minus the position of the character after the last EOL (or
      // 0 if there is none)…
      (Math.max(value2.lastIndexOf("\r"), value2.lastIndexOf("\n")) + 1)
    );
  }
  const sequence = "#".repeat(rank);
  const exit = state.enter("headingAtx");
  const subexit = state.enter("phrasing");
  tracker.move(sequence + " ");
  let value = state.containerPhrasing(node3, {
    before: "# ",
    after: "\n",
    ...tracker.current()
  });
  if (/^[\t ]/.test(value)) {
    value = "&#x" + value.charCodeAt(0).toString(16).toUpperCase() + ";" + value.slice(1);
  }
  value = value ? sequence + " " + value : sequence;
  if (state.options.closeAtx) {
    value += " " + sequence;
  }
  subexit();
  exit();
  return value;
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/html.js
html6.peek = htmlPeek;
function html6(node3) {
  return node3.value || "";
}
function htmlPeek() {
  return "<";
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/image.js
image4.peek = imagePeek;
function image4(node3, _2, state, info) {
  const quote = checkQuote(state);
  const suffix = quote === '"' ? "Quote" : "Apostrophe";
  const exit = state.enter("image");
  let subexit = state.enter("label");
  const tracker = state.createTracker(info);
  let value = tracker.move("![");
  value += tracker.move(
    state.safe(node3.alt, { before: value, after: "]", ...tracker.current() })
  );
  value += tracker.move("](");
  subexit();
  if (
    // If there’s no url but there is a title…
    !node3.url && node3.title || // If there are control characters or whitespace.
    /[\0- \u007F]/.test(node3.url)
  ) {
    subexit = state.enter("destinationLiteral");
    value += tracker.move("<");
    value += tracker.move(
      state.safe(node3.url, { before: value, after: ">", ...tracker.current() })
    );
    value += tracker.move(">");
  } else {
    subexit = state.enter("destinationRaw");
    value += tracker.move(
      state.safe(node3.url, {
        before: value,
        after: node3.title ? " " : ")",
        ...tracker.current()
      })
    );
  }
  subexit();
  if (node3.title) {
    subexit = state.enter(`title${suffix}`);
    value += tracker.move(" " + quote);
    value += tracker.move(
      state.safe(node3.title, {
        before: value,
        after: quote,
        ...tracker.current()
      })
    );
    value += tracker.move(quote);
    subexit();
  }
  value += tracker.move(")");
  exit();
  return value;
}
function imagePeek() {
  return "!";
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/image-reference.js
imageReference2.peek = imageReferencePeek;
function imageReference2(node3, _2, state, info) {
  const type2 = node3.referenceType;
  const exit = state.enter("imageReference");
  let subexit = state.enter("label");
  const tracker = state.createTracker(info);
  let value = tracker.move("![");
  const alt = state.safe(node3.alt, {
    before: value,
    after: "]",
    ...tracker.current()
  });
  value += tracker.move(alt + "][");
  subexit();
  const stack = state.stack;
  state.stack = [];
  subexit = state.enter("reference");
  const reference = state.safe(state.associationId(node3), {
    before: value,
    after: "]",
    ...tracker.current()
  });
  subexit();
  state.stack = stack;
  exit();
  if (type2 === "full" || !alt || alt !== reference) {
    value += tracker.move(reference + "]");
  } else if (type2 === "shortcut") {
    value = value.slice(0, -1);
  } else {
    value += tracker.move("]");
  }
  return value;
}
function imageReferencePeek() {
  return "!";
}

// ../../node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js
function formatLinkAsAutolink(node3, state) {
  const raw2 = toString2(node3);
  return Boolean(
    !state.options.resourceLink && // If there’s a url…
    node3.url && // And there’s a no title…
    !node3.title && // And the content of `node` is a single text node…
    node3.children && node3.children.length === 1 && node3.children[0].type === "text" && // And if the url is the same as the content…
    (raw2 === node3.url || "mailto:" + raw2 === node3.url) && // And that starts w/ a protocol…
    /^[a-z][a-z+.-]+:/i.test(node3.url) && // And that doesn’t contain ASCII control codes (character escapes and
    // references don’t work), space, or angle brackets…
    !/[\0- <>\u007F]/.test(node3.url)
  );
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/link.js
link3.peek = linkPeek;
function link3(node3, _2, state, info) {
  const quote = checkQuote(state);
  const suffix = quote === '"' ? "Quote" : "Apostrophe";
  const tracker = state.createTracker(info);
  let exit;
  let subexit;
  if (formatLinkAsAutolink(node3, state)) {
    const stack = state.stack;
    state.stack = [];
    exit = state.enter("autolink");
    let value2 = tracker.move("<");
    value2 += tracker.move(
      state.containerPhrasing(node3, {
        before: value2,
        after: ">",
        ...tracker.current()
      })
    );
    value2 += tracker.move(">");
    exit();
    state.stack = stack;
    return value2;
  }
  exit = state.enter("link");
  subexit = state.enter("label");
  let value = tracker.move("[");
  value += tracker.move(
    state.containerPhrasing(node3, {
      before: value,
      after: "](",
      ...tracker.current()
    })
  );
  value += tracker.move("](");
  subexit();
  if (
    // If there’s no url but there is a title…
    !node3.url && node3.title || // If there are control characters or whitespace.
    /[\0- \u007F]/.test(node3.url)
  ) {
    subexit = state.enter("destinationLiteral");
    value += tracker.move("<");
    value += tracker.move(
      state.safe(node3.url, { before: value, after: ">", ...tracker.current() })
    );
    value += tracker.move(">");
  } else {
    subexit = state.enter("destinationRaw");
    value += tracker.move(
      state.safe(node3.url, {
        before: value,
        after: node3.title ? " " : ")",
        ...tracker.current()
      })
    );
  }
  subexit();
  if (node3.title) {
    subexit = state.enter(`title${suffix}`);
    value += tracker.move(" " + quote);
    value += tracker.move(
      state.safe(node3.title, {
        before: value,
        after: quote,
        ...tracker.current()
      })
    );
    value += tracker.move(quote);
    subexit();
  }
  value += tracker.move(")");
  exit();
  return value;
}
function linkPeek(node3, _2, state) {
  return formatLinkAsAutolink(node3, state) ? "<" : "[";
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/link-reference.js
linkReference2.peek = linkReferencePeek;
function linkReference2(node3, _2, state, info) {
  const type2 = node3.referenceType;
  const exit = state.enter("linkReference");
  let subexit = state.enter("label");
  const tracker = state.createTracker(info);
  let value = tracker.move("[");
  const text7 = state.containerPhrasing(node3, {
    before: value,
    after: "]",
    ...tracker.current()
  });
  value += tracker.move(text7 + "][");
  subexit();
  const stack = state.stack;
  state.stack = [];
  subexit = state.enter("reference");
  const reference = state.safe(state.associationId(node3), {
    before: value,
    after: "]",
    ...tracker.current()
  });
  subexit();
  state.stack = stack;
  exit();
  if (type2 === "full" || !text7 || text7 !== reference) {
    value += tracker.move(reference + "]");
  } else if (type2 === "shortcut") {
    value = value.slice(0, -1);
  } else {
    value += tracker.move("]");
  }
  return value;
}
function linkReferencePeek() {
  return "[";
}

// ../../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js
function checkBullet(state) {
  const marker = state.options.bullet || "*";
  if (marker !== "*" && marker !== "+" && marker !== "-") {
    throw new Error(
      "Cannot serialize items with `" + marker + "` for `options.bullet`, expected `*`, `+`, or `-`"
    );
  }
  return marker;
}

// ../../node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.js
function checkBulletOther(state) {
  const bullet = checkBullet(state);
  const bulletOther = state.options.bulletOther;
  if (!bulletOther) {
    return bullet === "*" ? "-" : "*";
  }
  if (bulletOther !== "*" && bulletOther !== "+" && bulletOther !== "-") {
    throw new Error(
      "Cannot serialize items with `" + bulletOther + "` for `options.bulletOther`, expected `*`, `+`, or `-`"
    );
  }
  if (bulletOther === bullet) {
    throw new Error(
      "Expected `bullet` (`" + bullet + "`) and `bulletOther` (`" + bulletOther + "`) to be different"
    );
  }
  return bulletOther;
}

// ../../node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.js
function checkBulletOrdered(state) {
  const marker = state.options.bulletOrdered || ".";
  if (marker !== "." && marker !== ")") {
    throw new Error(
      "Cannot serialize items with `" + marker + "` for `options.bulletOrdered`, expected `.` or `)`"
    );
  }
  return marker;
}

// ../../node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered-other.js
function checkBulletOrderedOther(state) {
  const bulletOrdered = checkBulletOrdered(state);
  const bulletOrderedOther = state.options.bulletOrderedOther;
  if (!bulletOrderedOther) {
    return bulletOrdered === "." ? ")" : ".";
  }
  if (bulletOrderedOther !== "." && bulletOrderedOther !== ")") {
    throw new Error(
      "Cannot serialize items with `" + bulletOrderedOther + "` for `options.bulletOrderedOther`, expected `*`, `+`, or `-`"
    );
  }
  if (bulletOrderedOther === bulletOrdered) {
    throw new Error(
      "Expected `bulletOrdered` (`" + bulletOrdered + "`) and `bulletOrderedOther` (`" + bulletOrderedOther + "`) to be different"
    );
  }
  return bulletOrderedOther;
}

// ../../node_modules/mdast-util-to-markdown/lib/util/check-rule.js
function checkRule(state) {
  const marker = state.options.rule || "*";
  if (marker !== "*" && marker !== "-" && marker !== "_") {
    throw new Error(
      "Cannot serialize rules with `" + marker + "` for `options.rule`, expected `*`, `-`, or `_`"
    );
  }
  return marker;
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/list.js
function list5(node3, parent2, state, info) {
  const exit = state.enter("list");
  const bulletCurrent = state.bulletCurrent;
  let bullet = node3.ordered ? checkBulletOrdered(state) : checkBullet(state);
  const bulletOther = node3.ordered ? checkBulletOrderedOther(state) : checkBulletOther(state);
  const bulletLastUsed = state.bulletLastUsed;
  let useDifferentMarker = false;
  if (parent2 && // Explicit `other` set.
  (node3.ordered ? state.options.bulletOrderedOther : state.options.bulletOther) && bulletLastUsed && bullet === bulletLastUsed) {
    useDifferentMarker = true;
  }
  if (!node3.ordered) {
    const firstListItem = node3.children ? node3.children[0] : void 0;
    if (
      // Bullet could be used as a thematic break marker:
      (bullet === "*" || bullet === "-") && // Empty first list item:
      firstListItem && (!firstListItem.children || !firstListItem.children[0]) && // Directly in two other list items:
      state.stack[state.stack.length - 1] === "list" && state.stack[state.stack.length - 2] === "listItem" && state.stack[state.stack.length - 3] === "list" && state.stack[state.stack.length - 4] === "listItem" && // That are each the first child.
      state.indexStack[state.indexStack.length - 1] === 0 && state.indexStack[state.indexStack.length - 2] === 0 && state.indexStack[state.indexStack.length - 3] === 0
    ) {
      useDifferentMarker = true;
    }
    if (checkRule(state) === bullet && firstListItem) {
      let index4 = -1;
      while (++index4 < node3.children.length) {
        const item = node3.children[index4];
        if (item && item.type === "listItem" && item.children && item.children[0] && item.children[0].type === "thematicBreak") {
          useDifferentMarker = true;
          break;
        }
      }
    }
  }
  if (useDifferentMarker) {
    bullet = bulletOther;
  }
  state.bulletCurrent = bullet;
  const value = state.containerFlow(node3, info);
  state.bulletLastUsed = bullet;
  state.bulletCurrent = bulletCurrent;
  exit();
  return value;
}

// ../../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js
function checkListItemIndent(state) {
  const style3 = state.options.listItemIndent || "tab";
  if (style3 === 1 || style3 === "1") {
    return "one";
  }
  if (style3 !== "tab" && style3 !== "one" && style3 !== "mixed") {
    throw new Error(
      "Cannot serialize items with `" + style3 + "` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`"
    );
  }
  return style3;
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/list-item.js
function listItem3(node3, parent2, state, info) {
  const listItemIndent = checkListItemIndent(state);
  let bullet = state.bulletCurrent || checkBullet(state);
  if (parent2 && parent2.type === "list" && parent2.ordered) {
    bullet = (typeof parent2.start === "number" && parent2.start > -1 ? parent2.start : 1) + (state.options.incrementListMarker === false ? 0 : parent2.children.indexOf(node3)) + bullet;
  }
  let size = bullet.length + 1;
  if (listItemIndent === "tab" || listItemIndent === "mixed" && (parent2 && parent2.type === "list" && parent2.spread || node3.spread)) {
    size = Math.ceil(size / 4) * 4;
  }
  const tracker = state.createTracker(info);
  tracker.move(bullet + " ".repeat(size - bullet.length));
  tracker.shift(size);
  const exit = state.enter("listItem");
  const value = state.indentLines(
    state.containerFlow(node3, tracker.current()),
    map13
  );
  exit();
  return value;
  function map13(line2, index4, blank) {
    if (index4) {
      return (blank ? "" : " ".repeat(size)) + line2;
    }
    return (blank ? bullet : bullet + " ".repeat(size - bullet.length)) + line2;
  }
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/paragraph.js
function paragraph3(node3, _2, state, info) {
  const exit = state.enter("paragraph");
  const subexit = state.enter("phrasing");
  const value = state.containerPhrasing(node3, info);
  subexit();
  exit();
  return value;
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/root.js
function root5(node3, _2, state, info) {
  const hasPhrasing = node3.children.some((d) => phrasing2(d));
  const fn = hasPhrasing ? state.containerPhrasing : state.containerFlow;
  return fn.call(state, node3, info);
}

// ../../node_modules/mdast-util-to-markdown/lib/util/check-strong.js
function checkStrong(state) {
  const marker = state.options.strong || "*";
  if (marker !== "*" && marker !== "_") {
    throw new Error(
      "Cannot serialize strong with `" + marker + "` for `options.strong`, expected `*`, or `_`"
    );
  }
  return marker;
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/strong.js
strong4.peek = strongPeek;
function strong4(node3, _2, state, info) {
  const marker = checkStrong(state);
  const exit = state.enter("strong");
  const tracker = state.createTracker(info);
  let value = tracker.move(marker + marker);
  value += tracker.move(
    state.containerPhrasing(node3, {
      before: value,
      after: marker,
      ...tracker.current()
    })
  );
  value += tracker.move(marker + marker);
  exit();
  return value;
}
function strongPeek(_2, _1, state) {
  return state.options.strong || "*";
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/text.js
function text6(node3, _2, state, info) {
  return state.safe(node3.value, info);
}

// ../../node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.js
function checkRuleRepetition(state) {
  const repetition = state.options.ruleRepetition || 3;
  if (repetition < 3) {
    throw new Error(
      "Cannot serialize rules with repetition `" + repetition + "` for `options.ruleRepetition`, expected `3` or more"
    );
  }
  return repetition;
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/thematic-break.js
function thematicBreak3(_2, _1, state) {
  const value = (checkRule(state) + (state.options.ruleSpaces ? " " : "")).repeat(checkRuleRepetition(state));
  return state.options.ruleSpaces ? value.slice(0, -1) : value;
}

// ../../node_modules/mdast-util-to-markdown/lib/handle/index.js
var handle5 = {
  blockquote: blockquote4,
  break: hardBreak2,
  code: code5,
  definition,
  emphasis: emphasis3,
  hardBreak: hardBreak2,
  heading: heading5,
  html: html6,
  image: image4,
  imageReference: imageReference2,
  inlineCode: inlineCode4,
  link: link3,
  linkReference: linkReference2,
  list: list5,
  listItem: listItem3,
  paragraph: paragraph3,
  root: root5,
  strong: strong4,
  text: text6,
  thematicBreak: thematicBreak3
};

// ../../node_modules/mdast-util-to-markdown/lib/join.js
var join13 = [joinDefaults];
function joinDefaults(left2, right2, parent2, state) {
  if (right2.type === "code" && formatCodeAsIndented(right2, state) && (left2.type === "list" || left2.type === right2.type && formatCodeAsIndented(left2, state))) {
    return false;
  }
  if (left2.type === "list" && left2.type === right2.type && Boolean(left2.ordered) === Boolean(right2.ordered) && !(left2.ordered ? state.options.bulletOrderedOther : state.options.bulletOther)) {
    return false;
  }
  if ("spread" in parent2 && typeof parent2.spread === "boolean") {
    if (left2.type === "paragraph" && // Two paragraphs.
    (left2.type === right2.type || right2.type === "definition" || // Paragraph followed by a setext heading.
    right2.type === "heading" && formatHeadingAsSetext(right2, state))) {
      return;
    }
    return parent2.spread ? 1 : 0;
  }
}

// ../../node_modules/mdast-util-to-markdown/lib/unsafe.js
var fullPhrasingSpans = [
  "autolink",
  "destinationLiteral",
  "destinationRaw",
  "reference",
  "titleQuote",
  "titleApostrophe"
];
var unsafe = [
  { character: "	", after: "[\\r\\n]", inConstruct: "phrasing" },
  { character: "	", before: "[\\r\\n]", inConstruct: "phrasing" },
  {
    character: "	",
    inConstruct: ["codeFencedLangGraveAccent", "codeFencedLangTilde"]
  },
  {
    character: "\r",
    inConstruct: [
      "codeFencedLangGraveAccent",
      "codeFencedLangTilde",
      "codeFencedMetaGraveAccent",
      "codeFencedMetaTilde",
      "destinationLiteral",
      "headingAtx"
    ]
  },
  {
    character: "\n",
    inConstruct: [
      "codeFencedLangGraveAccent",
      "codeFencedLangTilde",
      "codeFencedMetaGraveAccent",
      "codeFencedMetaTilde",
      "destinationLiteral",
      "headingAtx"
    ]
  },
  { character: " ", after: "[\\r\\n]", inConstruct: "phrasing" },
  { character: " ", before: "[\\r\\n]", inConstruct: "phrasing" },
  {
    character: " ",
    inConstruct: ["codeFencedLangGraveAccent", "codeFencedLangTilde"]
  },
  // An exclamation mark can start an image, if it is followed by a link or
  // a link reference.
  {
    character: "!",
    after: "\\[",
    inConstruct: "phrasing",
    notInConstruct: fullPhrasingSpans
  },
  // A quote can break out of a title.
  { character: '"', inConstruct: "titleQuote" },
  // A number sign could start an ATX heading if it starts a line.
  { atBreak: true, character: "#" },
  { character: "#", inConstruct: "headingAtx", after: "(?:[\r\n]|$)" },
  // Dollar sign and percentage are not used in markdown.
  // An ampersand could start a character reference.
  { character: "&", after: "[#A-Za-z]", inConstruct: "phrasing" },
  // An apostrophe can break out of a title.
  { character: "'", inConstruct: "titleApostrophe" },
  // A left paren could break out of a destination raw.
  { character: "(", inConstruct: "destinationRaw" },
  // A left paren followed by `]` could make something into a link or image.
  {
    before: "\\]",
    character: "(",
    inConstruct: "phrasing",
    notInConstruct: fullPhrasingSpans
  },
  // A right paren could start a list item or break out of a destination
  // raw.
  { atBreak: true, before: "\\d+", character: ")" },
  { character: ")", inConstruct: "destinationRaw" },
  // An asterisk can start thematic breaks, list items, emphasis, strong.
  { atBreak: true, character: "*", after: "(?:[ 	\r\n*])" },
  { character: "*", inConstruct: "phrasing", notInConstruct: fullPhrasingSpans },
  // A plus sign could start a list item.
  { atBreak: true, character: "+", after: "(?:[ 	\r\n])" },
  // A dash can start thematic breaks, list items, and setext heading
  // underlines.
  { atBreak: true, character: "-", after: "(?:[ 	\r\n-])" },
  // A dot could start a list item.
  { atBreak: true, before: "\\d+", character: ".", after: "(?:[ 	\r\n]|$)" },
  // Slash, colon, and semicolon are not used in markdown for constructs.
  // A less than can start html (flow or text) or an autolink.
  // HTML could start with an exclamation mark (declaration, cdata, comment),
  // slash (closing tag), question mark (instruction), or a letter (tag).
  // An autolink also starts with a letter.
  // Finally, it could break out of a destination literal.
  { atBreak: true, character: "<", after: "[!/?A-Za-z]" },
  {
    character: "<",
    after: "[!/?A-Za-z]",
    inConstruct: "phrasing",
    notInConstruct: fullPhrasingSpans
  },
  { character: "<", inConstruct: "destinationLiteral" },
  // An equals to can start setext heading underlines.
  { atBreak: true, character: "=" },
  // A greater than can start block quotes and it can break out of a
  // destination literal.
  { atBreak: true, character: ">" },
  { character: ">", inConstruct: "destinationLiteral" },
  // Question mark and at sign are not used in markdown for constructs.
  // A left bracket can start definitions, references, labels,
  { atBreak: true, character: "[" },
  { character: "[", inConstruct: "phrasing", notInConstruct: fullPhrasingSpans },
  { character: "[", inConstruct: ["label", "reference"] },
  // A backslash can start an escape (when followed by punctuation) or a
  // hard break (when followed by an eol).
  // Note: typical escapes are handled in `safe`!
  { character: "\\", after: "[\\r\\n]", inConstruct: "phrasing" },
  // A right bracket can exit labels.
  { character: "]", inConstruct: ["label", "reference"] },
  // Caret is not used in markdown for constructs.
  // An underscore can start emphasis, strong, or a thematic break.
  { atBreak: true, character: "_" },
  { character: "_", inConstruct: "phrasing", notInConstruct: fullPhrasingSpans },
  // A grave accent can start code (fenced or text), or it can break out of
  // a grave accent code fence.
  { atBreak: true, character: "`" },
  {
    character: "`",
    inConstruct: ["codeFencedLangGraveAccent", "codeFencedMetaGraveAccent"]
  },
  { character: "`", inConstruct: "phrasing", notInConstruct: fullPhrasingSpans },
  // Left brace, vertical bar, right brace are not used in markdown for
  // constructs.
  // A tilde can start code (fenced).
  { atBreak: true, character: "~" }
];

// ../../node_modules/mdast-util-to-markdown/lib/index.js
function toMarkdown(tree, options = {}) {
  const state = {
    enter,
    indentLines,
    associationId: association,
    containerPhrasing: containerPhrasingBound,
    containerFlow: containerFlowBound,
    createTracker: track,
    safe: safeBound,
    stack: [],
    unsafe: [],
    join: [],
    // @ts-expect-error: we’ll fill it next.
    handlers: {},
    options: {},
    indexStack: [],
    // @ts-expect-error: we’ll add `handle` later.
    handle: void 0
  };
  configure(state, { unsafe, join: join13, handlers: handle5 });
  configure(state, options);
  if (state.options.tightDefinitions) {
    configure(state, { join: [joinDefinition] });
  }
  state.handle = zwitch("type", {
    invalid: invalid2,
    unknown: unknown3,
    handlers: state.handlers
  });
  let result = state.handle(tree, void 0, state, {
    before: "\n",
    after: "\n",
    now: { line: 1, column: 1 },
    lineShift: 0
  });
  if (result && result.charCodeAt(result.length - 1) !== 10 && result.charCodeAt(result.length - 1) !== 13) {
    result += "\n";
  }
  return result;
  function enter(name3) {
    state.stack.push(name3);
    return exit;
    function exit() {
      state.stack.pop();
    }
  }
}
function invalid2(value) {
  throw new Error("Cannot handle value `" + value + "`, expected node");
}
function unknown3(node3) {
  throw new Error("Cannot handle unknown node `" + node3.type + "`");
}
function joinDefinition(left2, right2) {
  if (left2.type === "definition" && left2.type === right2.type) {
    return 0;
  }
}
function containerPhrasingBound(parent2, info) {
  return containerPhrasing(parent2, this, info);
}
function containerFlowBound(parent2, info) {
  return containerFlow(parent2, this, info);
}
function safeBound(value, config3) {
  return safe(this, value, config3);
}

// ../myst-to-md/dist/utils.js
function initializeNestedLevel(state) {
  if (!state.nestedLevels)
    state.nestedLevels = { role: 0, directive: 0 };
  if (!state.nestedMaxLevels)
    state.nestedMaxLevels = { role: 0, directive: 0 };
  return state;
}
function incrementNestedLevel(kind, state, value) {
  const inc = value !== null && value !== void 0 ? value : 1;
  const $state = initializeNestedLevel(state);
  $state.nestedLevels[kind] += inc;
  if ($state.nestedLevels[kind] > $state.nestedMaxLevels[kind]) {
    $state.nestedMaxLevels[kind] = $state.nestedLevels[kind];
  }
}
function popNestedLevel(kind, state, value) {
  const dec = value !== null && value !== void 0 ? value : 1;
  const $state = initializeNestedLevel(state);
  const nesting = $state.nestedMaxLevels[kind] - $state.nestedLevels[kind];
  $state.nestedLevels[kind] -= dec;
  if ($state.nestedLevels[kind] < 0)
    $state.nestedLevels[kind] = 0;
  if (!$state.nestedLevels[kind])
    $state.nestedMaxLevels[kind] = 0;
  return nesting;
}
function unsupportedHandlers(tree, supported, file) {
  const handlers6 = {};
  selectAll("*", tree).forEach((node3) => {
    const { type: type2 } = node3;
    if (supported.includes(type2))
      return;
    handlers6[type2] = (n) => {
      fileError(file, `Unsupported node type: ${type2}`, {
        node: n,
        source: "myst-to-md",
        ruleId: RuleId.mdRenders
      });
      return "";
    };
  });
  return handlers6;
}
function runValidators(tree, validators, file) {
  Object.entries(validators).forEach(([key2, validator]) => {
    selectAll(key2, tree).forEach((node3) => {
      validator(node3, file);
    });
  });
}
function addFrontmatter(page, frontmatter) {
  if (!frontmatter || !Object.keys(frontmatter).length)
    return page;
  const fm = frontmatter.license ? { ...frontmatter, license: simplifyLicenses(frontmatter.license) } : { ...frontmatter };
  return `---
${js_yaml_default.dump(fm)}---
${page}`;
}

// ../myst-to-md/dist/directives.js
var directiveChar = ":";
function argsFromNode(node3, options) {
  const { argsKey } = options || {};
  return argsKey && node3[argsKey] ? node3[argsKey] : "";
}
function optionsFromNode(node3, options) {
  const { keys: keys2, aliases: aliases2, transforms, yaml } = options || {};
  const opts = {};
  (keys2 !== null && keys2 !== void 0 ? keys2 : []).filter((key2) => node3[key2] != null && node3[key2] !== false).forEach((key2) => {
    const optString = (aliases2 === null || aliases2 === void 0 ? void 0 : aliases2[key2]) ? aliases2[key2] : key2;
    const optValue = (transforms === null || transforms === void 0 ? void 0 : transforms[key2]) ? transforms[key2](node3[key2]) : node3[key2];
    opts[optString] = optValue;
  });
  if (yaml && Object.keys(opts).length) {
    return `---
${js_yaml_default.dump(opts)}---`.split("\n");
  }
  const optionsLines = Object.entries(opts).map(([key2, value]) => {
    if (value === true)
      return `:${key2}:`;
    return `:${key2}: ${value}`;
  });
  return optionsLines;
}
function writeStaticDirective(name3, options) {
  return (node3, _2, state, info) => {
    const args = argsFromNode(node3, options);
    const optionsLines = optionsFromNode(node3, options);
    const nodeCopy = { ...node3 };
    delete nodeCopy.meta;
    delete nodeCopy.lang;
    const valueLines = handle5.code(nodeCopy, _2, state, info).split("\n");
    if (optionsLines.length && valueLines.length > 2)
      optionsLines.push("");
    const directiveLines = [
      `${valueLines[0]}{${name3}}${args ? " " : ""}${args ? args : ""}`,
      ...optionsLines,
      ...valueLines.slice(1)
    ];
    return directiveLines.join("\n");
  };
}
function mystDirective3(node3, _2, state, info) {
  return writeStaticDirective(node3.name, { argsKey: "args" })(node3, _2, state, info);
}
var CODE_BLOCK_KEYS = [
  "class",
  "emphasizeLines",
  "label",
  "showLineNumbers",
  "startingLineNumber",
  "caption"
];
function code6(node3, _2, state, info) {
  const nodeCodeBlockKeys = Object.entries(node3).filter(([k, v]) => CODE_BLOCK_KEYS.includes(k) && v != null);
  if (!nodeCodeBlockKeys.length) {
    return handle5.code(node3, _2, state, info);
  }
  const options = {
    argsKey: "lang",
    keys: CODE_BLOCK_KEYS.concat("meta"),
    aliases: {
      label: "name",
      showLineNumbers: "linenos",
      startingLineNumber: "lineno-start",
      emphasizeLines: "emphasize-lines"
    },
    transforms: {
      emphasizeLines: (val) => val.join(",")
    }
  };
  return writeStaticDirective("code-block", options)(node3, _2, state, info);
}
var IMAGE_DIRECTIVE_OPTS = ["class", "width", "align"];
var IMAGE_OPTS = IMAGE_DIRECTIVE_OPTS.concat("title", "alt");
function image5(node3, _2, state, info) {
  var _a6;
  if ((_a6 = node3 === null || node3 === void 0 ? void 0 : node3.data) === null || _a6 === void 0 ? void 0 : _a6.altTextIsAutoGenerated) {
    delete node3.alt;
  }
  const nodeImageDirectiveKeys = Object.keys(node3).filter((k) => IMAGE_DIRECTIVE_OPTS.includes(k));
  if (!nodeImageDirectiveKeys.length)
    return handle5.image(node3, void 0, state, info);
  const options = {
    argsKey: "url",
    keys: IMAGE_OPTS
  };
  return writeStaticDirective("image", options)(node3, _2, state, info);
}
function writeFlowDirective(name3, args, options) {
  return (node3, _2, state, info) => {
    incrementNestedLevel("directive", state);
    const optionsLines = optionsFromNode(node3, options);
    const content3 = state.containerFlow(node3, info);
    const nesting = popNestedLevel("directive", state);
    const marker = directiveChar.repeat(nesting + 3);
    if (optionsLines.length && content3)
      optionsLines.push("");
    const directiveLines = [
      `${marker}{${name3}}${args ? " " : ""}${args ? args : ""}`,
      ...optionsLines
    ];
    if (content3)
      directiveLines.push(content3);
    directiveLines.push(marker);
    return directiveLines.join("\n");
  };
}
function containerValidator(node3, file) {
  const { kind } = node3;
  if (kind === "figure" && !select("image", node3)) {
    fileError(file, "Figure container must have image node child", {
      node: node3,
      source: "myst-to-md",
      ruleId: RuleId.mdRenders
    });
  }
  if (kind === "table" && !select("table", node3)) {
    fileError(file, "Table container must have table node child", {
      node: node3,
      source: "myst-to-md",
      ruleId: RuleId.mdRenders
    });
  }
  if (kind !== "figure" && kind !== "table" && kind !== "code") {
    fileError(file, `Unknown kind on container node: ${kind}`, {
      node: node3,
      source: "myst-to-md",
      ruleId: RuleId.mdRenders
    });
  }
}
var FIGURE_OPTS = ["label", "class", "width", "align", "title", "alt", "placeholder"];
var TABLE_KEYS = ["headerRows", "label", "class", "width", "align"];
function container3(node3, _2, state, info) {
  var _a6, _b, _c, _d2;
  const captionNode = select("caption", node3);
  const legendNode = select("legend", node3);
  const children = [...(captionNode === null || captionNode === void 0 ? void 0 : captionNode.children) || [], ...(legendNode === null || legendNode === void 0 ? void 0 : legendNode.children) || []];
  if (node3.kind === "figure") {
    const imageNodes = selectAll("image", node3);
    const imageNode = imageNodes.find((img2) => !img2.placeholder);
    if ((_a6 = imageNode === null || imageNode === void 0 ? void 0 : imageNode.data) === null || _a6 === void 0 ? void 0 : _a6.altTextIsAutoGenerated) {
      delete imageNode.alt;
    }
    const placeholderNode = imageNodes.find((img2) => img2.placeholder);
    const url = (_c = (_b = imageNode === null || imageNode === void 0 ? void 0 : imageNode.urlSource) !== null && _b !== void 0 ? _b : imageNode === null || imageNode === void 0 ? void 0 : imageNode.url) !== null && _c !== void 0 ? _c : `#${node3.source.label}`;
    if (!url)
      return "";
    const combinedNode = { type: "container", url, children };
    FIGURE_OPTS.forEach((key2) => {
      var _a7;
      const val = (_a7 = node3[key2]) !== null && _a7 !== void 0 ? _a7 : imageNode === null || imageNode === void 0 ? void 0 : imageNode[key2];
      if (val)
        combinedNode[key2] = val;
    });
    if (placeholderNode) {
      combinedNode["placeholder"] = (_d2 = placeholderNode.urlSource) !== null && _d2 !== void 0 ? _d2 : placeholderNode.url;
    }
    const options = {
      argsKey: "url",
      keys: FIGURE_OPTS,
      aliases: { label: "name" }
    };
    const args = argsFromNode(combinedNode, options);
    return writeFlowDirective("figure", args, options)(combinedNode, _2, state, info);
  } else if (node3.kind === "table") {
    const tableNode = select("table", node3);
    if (!tableNode)
      return "";
    let headerRows = 0;
    let inHeader = true;
    const listNodes = selectAll("tableRow", tableNode).map((row2) => {
      const cells2 = selectAll("tableCell", row2);
      if (inHeader) {
        const isHeaderRow2 = cells2.map((cell3) => cell3.header).reduce((val, allHeaders) => val ? allHeaders : false, true);
        if (isHeaderRow2) {
          headerRows += 1;
        } else {
          inHeader = false;
        }
      }
      const listItemNodes = cells2.map((cell3) => {
        return { ...cell3, type: "listItem" };
      });
      return {
        ...row2,
        type: "listItem",
        children: [{ type: "list", children: listItemNodes }]
      };
    });
    const combinedNode = {
      type: "container",
      headerRows,
      children: [{ type: "list", children: listNodes }]
    };
    TABLE_KEYS.forEach((key2) => {
      var _a7;
      const val = (_a7 = node3[key2]) !== null && _a7 !== void 0 ? _a7 : tableNode[key2];
      if (val)
        combinedNode[key2] = val;
    });
    const args = captionNode ? state.containerPhrasing(captionNode, info) : "";
    const options = {
      keys: TABLE_KEYS,
      aliases: {
        headerRows: "header-rows",
        label: "name"
      }
    };
    return writeFlowDirective("list-table", args, options)(combinedNode, _2, state, info);
  } else if (node3.kind === "code") {
    const codeNode = select("code", node3);
    if (!codeNode)
      return "";
    const combinedNode = { ...codeNode };
    CODE_BLOCK_KEYS.forEach((key2) => {
      const val = node3[key2];
      if (val)
        combinedNode[key2] = val;
    });
    const caption3 = toText(children);
    if (caption3)
      combinedNode.caption = caption3;
    return code6(combinedNode, _2, state, info);
  }
  return "";
}
function admonition4(node3, _2, state, info) {
  var _a6;
  const name3 = (_a6 = node3.kind) !== null && _a6 !== void 0 ? _a6 : "admonition";
  const admonitionTitle3 = select("admonitionTitle", node3);
  const args = admonitionTitle3 ? state.containerPhrasing(admonitionTitle3, info) : "";
  const nodeCopy = {
    ...node3,
    children: node3.children.filter((n) => n.type !== "admonitionTitle")
  };
  const options = {
    keys: ["class", "icon"]
  };
  return writeFlowDirective(name3, args, options)(nodeCopy, _2, state, info);
}
function details2(node3, _2, state, info) {
  const summary2 = select("summary", node3);
  const args = summary2 ? state.containerPhrasing(summary2, info) : "";
  const nodeCopy = {
    ...node3,
    children: node3.children.filter((n) => n.type !== "summary")
  };
  const options = {
    keys: ["open"]
  };
  return writeFlowDirective("dropdown", args, options)(nodeCopy, _2, state, info);
}
function card(node3, _2, state, info) {
  const title = select("cardTitle", node3);
  const args = title ? state.containerPhrasing(title, info) : "";
  const header = select("header", node3);
  const footer2 = select("footer", node3);
  const nodeCopy = {
    ...node3,
    children: node3.children.filter((n) => !["cardTitle", "header", "footer"].includes(n.type))
  };
  if (header)
    nodeCopy.header = state.containerFlow(header, info);
  if (footer2)
    nodeCopy.footer = state.containerFlow(footer2, info);
  const options = {
    keys: ["url", "header", "footer"],
    aliases: { url: "link" },
    yaml: true
  };
  return writeFlowDirective("card", args, options)(nodeCopy, _2, state, info);
}
function gridValidator(node3, file) {
  var _a6;
  (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.forEach((child) => {
    if (child.kind !== "card") {
      fileError(file, `Unexpected grid node child is not card: ${child.kind}`, {
        node: node3,
        source: "myst-to-md",
        ruleId: RuleId.mdRenders
      });
    }
  });
}
function tabSetValidator(node3, file) {
  var _a6;
  (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.forEach((child) => {
    if (child.kind !== "tabItem") {
      fileError(file, `Unexpected tabSet node child is not tabItem: ${child.kind}`, {
        node: node3,
        source: "myst-to-md",
        ruleId: RuleId.mdRenders
      });
    }
  });
}
function tabItem2(node3, _2, state, info) {
  const handler = writeFlowDirective("tab-item", node3.title, { keys: ["sync", "selected"] });
  return handler(node3, _2, state, info);
}
function iframe3(node3, _2, state, info) {
  const handler = writeStaticDirective("iframe", { argsKey: "src", keys: IMAGE_DIRECTIVE_OPTS });
  return handler(node3, _2, state, info);
}
function aside(node3, _2, state, info) {
  var _a6;
  const name3 = (_a6 = node3.kind) !== null && _a6 !== void 0 ? _a6 : "aside";
  const admonitionTitle3 = select("admonitionTitle", node3);
  const args = admonitionTitle3 ? state.containerPhrasing(admonitionTitle3, info) : "";
  const nodeCopy = {
    ...node3,
    children: node3.children.filter((n) => n.type !== "admonitionTitle")
  };
  const options = {
    keys: ["class"]
  };
  return writeFlowDirective(name3, args, options)(nodeCopy, _2, state, info);
}
var directiveHandlers2 = {
  code: code6,
  image: image5,
  container: container3,
  admonition: admonition4,
  details: details2,
  iframe: iframe3,
  aside,
  card,
  grid: writeFlowDirective("grid", void 0, {
    keys: ["columns"],
    transforms: { columns: (val) => val.join(" ") }
  }),
  tabSet: writeFlowDirective("tab-set"),
  tabItem: tabItem2,
  math: writeStaticDirective("math", { keys: ["label"] }),
  embed: writeStaticDirective("embed", { argsKey: "label" }),
  include: writeStaticDirective("include", { argsKey: "file" }),
  mermaid: writeStaticDirective("mermaid"),
  mystDirective: mystDirective3
};
var directiveValidators = {
  container: containerValidator,
  grid: gridValidator,
  tabSet: tabSetValidator
};

// ../myst-to-md/dist/misc.js
function comment6(node3, _2, state) {
  return state.indentLines(node3.value, (line2, _1, blank) => {
    return (blank ? "" : "% ") + line2;
  });
}
function block4(node3, _2, state, info) {
  if (node3.visibility === "remove" || node3.visibility === "hide")
    return "";
  const meta2 = node3.meta ? ` ${node3.meta}` : "";
  const content3 = state.containerFlow(node3, info);
  return `+++${meta2}
${content3}`;
}
function definitionListValidator(node3, file) {
  var _a6;
  (_a6 = node3.children) === null || _a6 === void 0 ? void 0 : _a6.forEach((child) => {
    if (!["definitionTerm", "definitionDescription"].includes(child.type)) {
      fileWarn(file, `Unexpected child in definitionList: ${node3.type}`, {
        node: node3,
        source: "myst-to-md",
        ruleId: RuleId.mdRenders
      });
    }
  });
}
function definitionList3(node3, _2, state, info) {
  return state.containerFlow(node3, info);
}
function definitionTerm3(node3, _2, state, info) {
  return state.containerPhrasing(node3, info);
}
function definitionDescription3(node3, _2, state, info) {
  const contentLines = state.containerFlow(node3, info).split("\n");
  const indented = contentLines.map((line2, ind) => {
    if (!line2 && ind)
      return line2;
    const prefix2 = ind ? `    ` : `:   `;
    return `${prefix2}${line2}`;
  });
  return indented.join("\n");
}
var miscHandlers = {
  block: block4,
  comment: comment6,
  definitionList: definitionList3,
  definitionTerm: definitionTerm3,
  definitionDescription: definitionDescription3,
  captionNumber: () => ""
};
var miscValidators = {
  definitionList: definitionListValidator
};

// ../myst-to-md/dist/references.js
function labelWrapper(handler) {
  return (node3, _2, state, info) => {
    var _a6;
    const ident = (_a6 = node3.identifier) !== null && _a6 !== void 0 ? _a6 : node3.label;
    const prefix2 = ident ? `(${ident})=
` : "";
    return `${node3.implicit ? "" : prefix2}${handler(node3, _2, state, info)}`;
  };
}
function crossReference3(node3, _2, state, info) {
  const { urlSource, label, identifier } = node3;
  const nodeCopy = {
    ...node3,
    url: urlSource !== null && urlSource !== void 0 ? urlSource : label ? `#${label}` : identifier ? `#${identifier}` : ""
  };
  return handle5.link(nodeCopy, _2, state, info);
}
var referenceHandlers = {
  crossReference: crossReference3,
  heading: labelWrapper(handle5.heading),
  paragraph: labelWrapper(handle5.paragraph),
  blockquote: labelWrapper(handle5.blockquote),
  list: labelWrapper(handle5.list)
};

// ../myst-to-md/dist/roles.js
function inlineCode5(node3, _2, state) {
  const value = handle5.inlineCode(node3, void 0, state);
  const increment2 = value.startsWith("``") && value.endsWith("``") ? 2 : 1;
  incrementNestedLevel("role", state, increment2);
  popNestedLevel("role", state, increment2);
  return value;
}
function writeStaticRole(name3) {
  return (node3, _2, state) => {
    return `{${name3}}${inlineCode5(node3, _2, state)}`;
  };
}
function mystRole3(node3, _2, state) {
  return writeStaticRole(node3.name)(node3, _2, state);
}
function writePhrasingRole(name3) {
  return (node3, _2, state, info) => {
    incrementNestedLevel("role", state);
    const tracker = state.createTracker(info);
    let content3 = state.containerPhrasing(node3, {
      before: "`",
      after: "`",
      ...tracker.current()
    });
    if (content3.startsWith("`"))
      content3 = " " + content3;
    if (content3.endsWith("`"))
      content3 += " ";
    const nesting = popNestedLevel("role", state);
    const marker = "`".repeat(nesting + 1);
    return tracker.move(`{${name3}}${marker}${content3}${marker}`);
  };
}
function abbreviation3(node3, _2, state, info) {
  incrementNestedLevel("role", state);
  const tracker = state.createTracker(info);
  let content3 = state.containerPhrasing(node3, {
    before: "`",
    after: "`",
    ...tracker.current()
  });
  if (node3.title)
    content3 += ` (${node3.title})`;
  if (content3.startsWith("`"))
    content3 = " " + content3;
  if (content3.endsWith("`"))
    content3 += " ";
  const nesting = popNestedLevel("role", state);
  const marker = "`".repeat(nesting + 1);
  return tracker.move(`{abbr}${marker}${content3}${marker}`);
}
function cite2(node3, _2, state, info) {
  incrementNestedLevel("role", state);
  popNestedLevel("role", state);
  const tracker = state.createTracker(info);
  return tracker.move(`{cite}\`${node3.label}\``);
}
function citeGroup2(node3, _2, state, info) {
  var _a6;
  incrementNestedLevel("role", state);
  popNestedLevel("role", state);
  const tracker = state.createTracker(info);
  const name3 = `cite${node3.kind === "narrative" ? ":t" : ":p"}`;
  const labels = ((_a6 = node3.children) !== null && _a6 !== void 0 ? _a6 : []).filter((n) => n.type === "cite").map((n) => n.label).join(",");
  return tracker.move(`{${name3}}\`${labels}\``);
}
var roleHandlers = {
  subscript: writePhrasingRole("sub"),
  superscript: writePhrasingRole("sup"),
  delete: writePhrasingRole("del"),
  underline: writePhrasingRole("u"),
  smallcaps: writePhrasingRole("sc"),
  abbreviation: abbreviation3,
  inlineMath: writeStaticRole("math"),
  inlineCode: inlineCode5,
  cite: cite2,
  citeGroup: citeGroup2,
  mystRole: mystRole3
};

// ../myst-to-md/dist/index.js
var FOOTNOTE_HANDLER_KEYS = ["footnoteDefinition", "footnoteReference"];
var TABLE_HANDLER_KEYS = ["table", "tableRow", "tableCell"];
function writeMd(file, node3, frontmatter) {
  const handlers6 = {
    ...directiveHandlers2,
    ...roleHandlers,
    ...referenceHandlers,
    ...miscHandlers
  };
  const handlerKeys = [
    ...Object.keys(handlers6),
    ...Object.keys(handle5),
    ...FOOTNOTE_HANDLER_KEYS,
    ...TABLE_HANDLER_KEYS
  ];
  const unsupported = unsupportedHandlers(node3, handlerKeys, file);
  const options = {
    fences: true,
    rule: "-",
    handlers: {
      ...handlers6,
      ...unsupported
    },
    extensions: [gfmFootnoteToMarkdown(), gfmTableToMarkdown()]
  };
  const validators = { ...directiveValidators, ...miscValidators };
  runValidators(node3, validators, file);
  const result = toMarkdown(node3, options).trim();
  file.result = addFrontmatter(result, frontmatter);
  return file;
}

// ../myst-cli/dist/build/md/index.js
async function runMdExport(session, sourceFile, exportOptions, opts) {
  const toc = tic();
  const { output: output2, articles } = exportOptions;
  const { clean: clean3, projectPath, extraLinkTransformers, execute } = opts !== null && opts !== void 0 ? opts : {};
  const article = articles[0];
  if (!(article === null || article === void 0 ? void 0 : article.file))
    return { tempFolders: [] };
  if (clean3)
    cleanOutput(session, output2);
  const [{ mdast: mdast2, frontmatter }] = await getFileContent(session, [article.file], {
    projectPath,
    imageExtensions: KNOWN_IMAGE_EXTENSIONS,
    extraLinkTransformers,
    preFrontmatters: [
      filterKeys(article, [...PAGE_FRONTMATTER_KEYS, ...Object.keys(FRONTMATTER_ALIASES)])
    ],
    execute
  });
  await finalizeMdast(session, mdast2, frontmatter, article.file, {
    imageWriteFolder: import_node_path52.default.join(import_node_path52.default.dirname(output2), "files"),
    imageAltOutputFolder: "files/",
    imageExtensions: KNOWN_IMAGE_EXTENSIONS,
    simplifyFigures: false,
    useExistingImages: true
  });
  const vfile2 = new VFile();
  vfile2.path = output2;
  const mdOut = writeMd(vfile2, mdast2, frontmatter);
  logMessagesFromVFile(session, mdOut);
  session.log.info(toc(`\u{1F4D1} Exported MD in %s, copying to ${output2}`));
  writeFileToFolder(output2, mdOut.result);
  return { tempFolders: [] };
}

// ../myst-cli/dist/build/cff.js
var import_node_path53 = __toESM(require("path"), 1);

// ../../node_modules/cffjs/dist/types.js
var ReferenceType;
(function(ReferenceType2) {
  ReferenceType2["art"] = "art";
  ReferenceType2["article"] = "article";
  ReferenceType2["audiovisual"] = "audiovisual";
  ReferenceType2["bill"] = "bill";
  ReferenceType2["blog"] = "blog";
  ReferenceType2["book"] = "book";
  ReferenceType2["catalogue"] = "catalogue";
  ReferenceType2["conference-paper"] = "conference-paper";
  ReferenceType2["conference"] = "conference";
  ReferenceType2["data"] = "data";
  ReferenceType2["database"] = "database";
  ReferenceType2["dictionary"] = "dictionary";
  ReferenceType2["edited-work"] = "edited-work";
  ReferenceType2["encyclopedia"] = "encyclopedia";
  ReferenceType2["film-broadcast"] = "film-broadcast";
  ReferenceType2["generic"] = "generic";
  ReferenceType2["government-document"] = "government-document";
  ReferenceType2["grant"] = "grant";
  ReferenceType2["hearing"] = "hearing";
  ReferenceType2["historical-work"] = "historical-work";
  ReferenceType2["legal-case"] = "legal-case";
  ReferenceType2["legal-rule"] = "legal-rule";
  ReferenceType2["magazine-article"] = "magazine-article";
  ReferenceType2["manual"] = "manual";
  ReferenceType2["map"] = "map";
  ReferenceType2["multimedia"] = "multimedia";
  ReferenceType2["music"] = "music";
  ReferenceType2["newspaper-article"] = "newspaper-article";
  ReferenceType2["pamphlet"] = "pamphlet";
  ReferenceType2["patent"] = "patent";
  ReferenceType2["personal-communication"] = "personal-communication";
  ReferenceType2["proceedings"] = "proceedings";
  ReferenceType2["report"] = "report";
  ReferenceType2["serial"] = "serial";
  ReferenceType2["slides"] = "slides";
  ReferenceType2["software-code"] = "software-code";
  ReferenceType2["software-container"] = "software-container";
  ReferenceType2["software-executable"] = "software-executable";
  ReferenceType2["software-virtual-machine"] = "software-virtual-machine";
  ReferenceType2["software"] = "software";
  ReferenceType2["sound-recording"] = "sound-recording";
  ReferenceType2["standard"] = "standard";
  ReferenceType2["statute"] = "statute";
  ReferenceType2["thesis"] = "thesis";
  ReferenceType2["unpublished"] = "unpublished";
  ReferenceType2["video"] = "video";
  ReferenceType2["website"] = "website";
})(ReferenceType || (ReferenceType = {}));
var ReferenceStatus;
(function(ReferenceStatus2) {
  ReferenceStatus2["abstract"] = "abstract";
  ReferenceStatus2["advance-online"] = "advance-online";
  ReferenceStatus2["in-preparation"] = "in-preparation";
  ReferenceStatus2["in-press"] = "in-press";
  ReferenceStatus2["preprint"] = "preprint";
  ReferenceStatus2["submitted"] = "submitted";
})(ReferenceStatus || (ReferenceStatus = {}));
var CFF_KEYS = [
  "cff-version",
  "message",
  "preferred-citation",
  "references",
  "type",
  "title",
  "authors",
  "abstract",
  "commit",
  "contact",
  "date-released",
  "doi",
  "identifiers",
  "keywords",
  "license",
  "license-url",
  "repository",
  "repository-artifact",
  "repository-code",
  "url",
  "version"
];

// ../../node_modules/cffjs/dist/myst.js
function authorToCFF(author, affiliations2) {
  var _a6, _b, _c;
  if (author.collaboration) {
    return {
      name: (_b = (_a6 = author.name) !== null && _a6 !== void 0 ? _a6 : author.institution) !== null && _b !== void 0 ? _b : "",
      address: author.address,
      city: author.city,
      region: author.state,
      "post-code": author.postal_code,
      country: author.country,
      email: author.email,
      tel: author.phone,
      fax: author.fax,
      website: author.url
    };
  }
  const { family, given, dropping_particle, non_dropping_particle, suffix } = (_c = author.nameParsed) !== null && _c !== void 0 ? _c : {};
  const affiliation = affiliations2 === null || affiliations2 === void 0 ? void 0 : affiliations2.find((aff) => {
    var _a7, _b2;
    return ((_a7 = author.affiliations) === null || _a7 === void 0 ? void 0 : _a7[0]) && aff.id === ((_b2 = author.affiliations) === null || _b2 === void 0 ? void 0 : _b2[0]);
  });
  return {
    "family-names": `${non_dropping_particle ? `${non_dropping_particle} ` : ""}${family}`,
    "given-names": given !== null && given !== void 0 ? given : "",
    "name-particle": dropping_particle,
    "name-suffix": suffix,
    affiliation: affiliation === null || affiliation === void 0 ? void 0 : affiliation.name,
    address: affiliation === null || affiliation === void 0 ? void 0 : affiliation.address,
    city: affiliation === null || affiliation === void 0 ? void 0 : affiliation.city,
    region: affiliation === null || affiliation === void 0 ? void 0 : affiliation.state,
    "post-code": affiliation === null || affiliation === void 0 ? void 0 : affiliation.postal_code,
    country: affiliation === null || affiliation === void 0 ? void 0 : affiliation.country,
    orcid: author.orcid,
    email: author.email,
    tel: author.phone,
    fax: author.fax,
    website: author.url
  };
}
function frontmatterToCFF(frontmatter, abstract) {
  var _a6, _b, _c, _d2;
  const license = (_b = (_a6 = frontmatter.license) === null || _a6 === void 0 ? void 0 : _a6.content) !== null && _b !== void 0 ? _b : (_c = frontmatter.license) === null || _c === void 0 ? void 0 : _c.code;
  const contact = (_d2 = frontmatter.authors) === null || _d2 === void 0 ? void 0 : _d2.filter((author) => author.corresponding).map((author) => authorToCFF(author, frontmatter.affiliations));
  let dateString;
  if (frontmatter.date) {
    const date = new Date(frontmatter.date);
    dateString = new Date(date.getTime()).toISOString().split("T")[0];
  }
  const { title, authors } = frontmatter;
  if (!title) {
    throw new Error("CFF requires title");
  }
  if (!(authors === null || authors === void 0 ? void 0 : authors.length)) {
    throw new Error("CFF requires at least one author");
  }
  return {
    "cff-version": "1.2.0",
    message: "Please cite the following works when using this project.",
    abstract,
    title,
    authors: authors === null || authors === void 0 ? void 0 : authors.map((author) => authorToCFF(author, frontmatter.affiliations)),
    "date-released": dateString,
    contact: (contact === null || contact === void 0 ? void 0 : contact.length) ? contact : void 0,
    identifiers: frontmatter.doi ? [
      {
        type: "doi",
        value: frontmatter.doi
      }
    ] : void 0,
    keywords: frontmatter.keywords,
    license: license === null || license === void 0 ? void 0 : license.id,
    "license-url": license === null || license === void 0 ? void 0 : license.url,
    url: frontmatter.source,
    repository: frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.github
  };
}

// ../myst-cli/dist/build/cff.js
function exportOptionsToCFF(exportOptions) {
  const exportForCFF = { ...exportOptions, format: void 0 };
  if (exportForCFF["cff-format"]) {
    exportForCFF.format = exportForCFF["cff-format"];
  }
  return filterKeys(exportForCFF, CFF_KEYS);
}
async function runCffExport(session, sourceFile, exportOptions, opts) {
  var _a6;
  const toc = tic();
  const { output: output2, articles } = exportOptions;
  const { clean: clean3, projectPath, extraLinkTransformers } = opts !== null && opts !== void 0 ? opts : {};
  const article = articles[0];
  const state = session.store.getState();
  let frontmatter;
  let abstract;
  if (projectPath && selectors_exports.selectLocalConfigFile(state, projectPath) === sourceFile) {
    await getFileContent(session, [], {
      projectPath,
      imageExtensions: KNOWN_IMAGE_EXTENSIONS,
      extraLinkTransformers
    });
    frontmatter = selectors_exports.selectLocalProjectConfig(state, projectPath);
    const { abstract: frontmatterAbstract } = (_a6 = resolveFrontmatterParts(session, frontmatter)) !== null && _a6 !== void 0 ? _a6 : {};
    if (frontmatterAbstract) {
      abstract = toText(frontmatterAbstract.mdast);
    }
  } else if (article.file) {
    const [content3] = await getFileContent(session, [article.file], {
      projectPath,
      imageExtensions: KNOWN_IMAGE_EXTENSIONS,
      extraLinkTransformers
    });
    frontmatter = content3.frontmatter;
    const abstractMdast = extractPart(content3.mdast, "abstract", {
      frontmatterParts: resolveFrontmatterParts(session, frontmatter)
    });
    if (abstractMdast)
      abstract = toText(abstractMdast);
  }
  if (!frontmatter)
    return { tempFolders: [] };
  if (clean3)
    cleanOutput(session, output2);
  const vfile2 = new VFile();
  vfile2.path = output2;
  if (import_node_path53.default.basename(output2) !== "CITATION.cff") {
    fileWarn(vfile2, `Invalid Citation File Format filename ${import_node_path53.default.basename(output2)} - CFF requires filename 'CITATION.cff'`);
  }
  const cff = {
    ...frontmatterToCFF(frontmatter, abstract),
    ...exportOptionsToCFF(exportOptions)
  };
  logMessagesFromVFile(session, vfile2);
  session.log.info(toc(`\u{1F4D1} Exported CFF in %s, copying to ${output2}`));
  writeFileToFolder(output2, js_yaml_default.dump(cff));
  return { tempFolders: [] };
}

// ../myst-cli/dist/build/utils/localArticleExport.js
async function runExportAndWatch(watch2, exportFn, session, $file, exportOptions, opts) {
  let results = await exportFn(session, $file, exportOptions, opts);
  if (watch2) {
    const articleFiles = articlesWithFile(exportOptions.articles);
    const watchedFiles = /* @__PURE__ */ new Set([
      $file,
      ...articleFiles.map(({ file }) => file),
      ...articleFiles.map(({ file }) => {
        return selectors_exports.selectFileDependencies(session.store.getState(), file);
      }).flat()
    ]);
    import_chokidar.default.watch([...watchedFiles], {
      awaitWriteFinish: { stabilityThreshold: 100, pollInterval: 50 }
    }).on("change", async (eventType, modifiedFile) => {
      const { reloading } = selectors_exports.selectReloadingState(session.store.getState());
      if (reloading) {
        session.store.dispatch(watch.actions.markReloadRequested(true));
        return;
      }
      session.store.dispatch(watch.actions.markReloading(true));
      session.log.debug(`File modified: "${modifiedFile}" (${eventType})`);
      while (selectors_exports.selectReloadingState(session.store.getState()).reloadRequested) {
        session.store.dispatch(watch.actions.markReloadRequested(false));
        results = await exportFn(session, $file, exportOptions, opts);
      }
      session.store.dispatch(watch.actions.markReloading(false));
      results = await exportFn(session, $file, exportOptions, opts);
    });
  }
  return results;
}
async function _localArticleExport(session, exportOptionsList, opts) {
  const { projectPath, watch: watch2 } = opts;
  const errors4 = await resolveAndLogErrors(session, exportOptionsList.map(async (exportOptionsWithFile) => {
    var _a6;
    const { $file, $project, ...exportOptions } = exportOptionsWithFile;
    const { format, output: output2 } = exportOptions;
    const sessionClone = await session.clone();
    const fileProjectPath = (_a6 = projectPath !== null && projectPath !== void 0 ? projectPath : $project) !== null && _a6 !== void 0 ? _a6 : await findCurrentProjectAndLoad(sessionClone, import_node_path54.default.dirname($file));
    if (fileProjectPath) {
      await loadProjectFromDisk(sessionClone, fileProjectPath);
    }
    let exportFn;
    if (format === ExportFormats.tex) {
      if (import_node_path54.default.extname(output2) === ".zip") {
        exportFn = runTexZipExport;
      } else {
        exportFn = runTexExport;
      }
    } else if (format === ExportFormats.typst) {
      if (import_node_path54.default.extname(output2) === ".zip") {
        exportFn = runTypstZipExport;
      } else if (import_node_path54.default.extname(output2) === ".pdf") {
        exportFn = runTypstPdfExport;
      } else {
        exportFn = runTypstExport;
      }
    } else if (format === ExportFormats.docx) {
      exportFn = runWordExport;
    } else if (format === ExportFormats.xml) {
      exportFn = runJatsExport;
    } else if (format === ExportFormats.md) {
      exportFn = runMdExport;
    } else if (format === ExportFormats.meca) {
      exportFn = runMecaExport;
    } else if (format === ExportFormats.cff) {
      exportFn = runCffExport;
    } else {
      const keepTexAndLogs = format === ExportFormats.pdftex;
      exportFn = async (fnSession, fnFile, fnExportOpts, fnOpts) => {
        const texExportOptions = texExportOptionsFromPdf(fnSession, fnExportOpts, keepTexAndLogs, fnOpts === null || fnOpts === void 0 ? void 0 : fnOpts.clean);
        const results = await runTexExport(fnSession, fnFile, texExportOptions, fnOpts);
        await createPdfGivenTexExport(fnSession, texExportOptions, output2, keepTexAndLogs, fnOpts === null || fnOpts === void 0 ? void 0 : fnOpts.clean, results.hasGlossaries);
        return results;
      };
    }
    await runExportAndWatch(!!watch2, exportFn, sessionClone, $file, exportOptions, {
      ...opts,
      projectPath: fileProjectPath
    });
  }), opts.throwOnFailure);
  return errors4;
}
async function localArticleExport(session, exportOptionsList, opts) {
  const errors4 = await _localArticleExport(session, exportOptionsList.filter((expOpts) => expOpts.format !== ExportFormats.meca), { ...opts, throwOnFailure: false });
  await _localArticleExport(session, exportOptionsList.filter((expOpts) => expOpts.format === ExportFormats.meca), opts);
  if (opts.throwOnFailure && errors4.length)
    throw errors4[0];
}

// ../myst-cli/dist/build/html/index.js
var import_fs_extra = __toESM(require_lib20(), 1);
var import_node_path57 = __toESM(require("path"), 1);

// ../myst-cli/dist/build/site/start.js
var import_cors = __toESM(require_lib21(), 1);
var import_express = __toESM(require_express2(), 1);

// ../../node_modules/get-port/index.js
var import_node_net2 = __toESM(require("net"), 1);
var import_node_os4 = __toESM(require("os"), 1);
var Locked = class extends Error {
  constructor(port) {
    super(`${port} is locked`);
  }
};
var lockedPorts = {
  old: /* @__PURE__ */ new Set(),
  young: /* @__PURE__ */ new Set()
};
var releaseOldLockedPortsIntervalMs = 1e3 * 15;
var minPort = 1024;
var maxPort = 65535;
var interval;
var getLocalHosts = () => {
  const interfaces = import_node_os4.default.networkInterfaces();
  const results = /* @__PURE__ */ new Set([void 0, "0.0.0.0"]);
  for (const _interface of Object.values(interfaces)) {
    for (const config3 of _interface) {
      results.add(config3.address);
    }
  }
  return results;
};
var checkAvailablePort = (options) => new Promise((resolve9, reject) => {
  const server = import_node_net2.default.createServer();
  server.unref();
  server.on("error", reject);
  server.listen(options, () => {
    const { port } = server.address();
    server.close(() => {
      resolve9(port);
    });
  });
});
var getAvailablePort = async (options, hosts) => {
  if (options.host || options.port === 0) {
    return checkAvailablePort(options);
  }
  for (const host of hosts) {
    try {
      await checkAvailablePort({ port: options.port, host });
    } catch (error) {
      if (!["EADDRNOTAVAIL", "EINVAL"].includes(error.code)) {
        throw error;
      }
    }
  }
  return options.port;
};
var portCheckSequence = function* (ports) {
  if (ports) {
    yield* ports;
  }
  yield 0;
};
async function getPorts(options) {
  let ports;
  let exclude = /* @__PURE__ */ new Set();
  if (options) {
    if (options.port) {
      ports = typeof options.port === "number" ? [options.port] : options.port;
    }
    if (options.exclude) {
      const excludeIterable = options.exclude;
      if (typeof excludeIterable[Symbol.iterator] !== "function") {
        throw new TypeError("The `exclude` option must be an iterable.");
      }
      for (const element5 of excludeIterable) {
        if (typeof element5 !== "number") {
          throw new TypeError("Each item in the `exclude` option must be a number corresponding to the port you want excluded.");
        }
        if (!Number.isSafeInteger(element5)) {
          throw new TypeError(`Number ${element5} in the exclude option is not a safe integer and can't be used`);
        }
      }
      exclude = new Set(excludeIterable);
    }
  }
  if (interval === void 0) {
    interval = setInterval(() => {
      lockedPorts.old = lockedPorts.young;
      lockedPorts.young = /* @__PURE__ */ new Set();
    }, releaseOldLockedPortsIntervalMs);
    if (interval.unref) {
      interval.unref();
    }
  }
  const hosts = getLocalHosts();
  for (const port of portCheckSequence(ports)) {
    try {
      if (exclude.has(port)) {
        continue;
      }
      let availablePort = await getAvailablePort({ ...options, port }, hosts);
      while (lockedPorts.old.has(availablePort) || lockedPorts.young.has(availablePort)) {
        if (port !== 0) {
          throw new Locked(port);
        }
        availablePort = await getAvailablePort({ ...options, port }, hosts);
      }
      lockedPorts.young.add(availablePort);
      return availablePort;
    } catch (error) {
      if (!["EADDRINUSE", "EACCES"].includes(error.code) && !(error instanceof Locked)) {
        throw error;
      }
    }
  }
  throw new Error("No available ports found");
}
function portNumbers(from4, to) {
  if (!Number.isInteger(from4) || !Number.isInteger(to)) {
    throw new TypeError("`from` and `to` must be integer numbers");
  }
  if (from4 < minPort || from4 > maxPort) {
    throw new RangeError(`'from' must be between ${minPort} and ${maxPort}`);
  }
  if (to < minPort || to > maxPort) {
    throw new RangeError(`'to' must be between ${minPort} and ${maxPort}`);
  }
  if (from4 > to) {
    throw new RangeError("`to` must be greater than or equal to `from`");
  }
  const generator = function* (from5, to2) {
    for (let port = from5; port <= to2; port++) {
      yield port;
    }
  };
  return generator(from4, to);
}

// ../myst-cli/dist/build/site/start.js
var import_node_path56 = require("path");

// ../../node_modules/ws/wrapper.mjs
var import_stream = __toESM(require_stream(), 1);
var import_receiver = __toESM(require_receiver(), 1);
var import_sender = __toESM(require_sender(), 1);
var import_websocket = __toESM(require_websocket(), 1);
var import_websocket_server = __toESM(require_websocket_server(), 1);

// ../myst-cli/dist/build/site/logger.js
function createServerLogger(session, opts) {
  const logger = {
    debug(data) {
      var _a6;
      const line2 = data.trim();
      if (!line2 || line2.startsWith(">") || line2.startsWith("Watching"))
        return;
      if (line2.includes("File changed: app/content"))
        return;
      if (line2.includes("started at http://")) {
        const [, ipAndPort] = line2.split("http://");
        const port = ipAndPort.split(":")[1].replace(/[^0-9]/g, "");
        const local = `http://${opts.host}:${port}`;
        opts.ready();
        session.log.info(`
\u{1F50C} Server started on port ${port}!  \u{1F973} \u{1F389}


	\u{1F449}  ${source_default.green(local)}  \u{1F448}

`);
        (_a6 = session.showUpgradeNotice) === null || _a6 === void 0 ? void 0 : _a6.call(session);
        return;
      }
      session.log.info(line2.replace(/💿/g, "\u{1F680}").replace(/(GET) /, "\u{1F48C} $1  ").replace(/(POST) /, "\u{1F4E6} $1 "));
    },
    error(data) {
      const line2 = data.trim();
      if (!line2)
        return;
      if (line2.includes("is not listed in your package.json dependencies"))
        return;
      if (line2.includes("was not found in your node_modules"))
        return;
      if (line2.includes("--trace-deprecation") || line2.includes("DEP0040"))
        return;
      if (line2.startsWith("Rebuilding")) {
        session.log.debug(line2);
        return;
      }
      if (line2.startsWith("Done in")) {
        session.log.info(`\u26A1\uFE0F ${line2.replace("Done", "Compiled")}`);
        return;
      }
      session.log.error(data);
    }
  };
  return logger;
}

// ../myst-cli/dist/build/site/watch.js
var import_chokidar2 = __toESM(require_chokidar(), 1);
var import_node_path55 = require("path");
function watchConfigAndPublic(session, serverReload, opts) {
  const watchFiles = ["public"];
  const state = session.store.getState();
  const siteConfigFile = selectors_exports.selectCurrentSiteFile(state);
  if (siteConfigFile)
    watchFiles.push(siteConfigFile);
  watchFiles.push(...selectors_exports.selectConfigExtensions(state));
  return import_chokidar2.default.watch(watchFiles, {
    ignoreInitial: true,
    awaitWriteFinish: { stabilityThreshold: 100, pollInterval: 50 }
  }).on("all", watchProcessor(session, null, serverReload, opts));
}
function triggerProjectReload(session, file, eventType, projectPath) {
  const state = session.store.getState();
  const projectConfigFile = projectPath ? selectors_exports.selectLocalConfigFile(state, projectPath) : selectors_exports.selectCurrentProjectFile(state);
  if (selectors_exports.selectConfigExtensions(state).includes(file))
    return true;
  if (file === projectConfigFile || (0, import_node_path55.basename)(file) === "_toc.yml")
    return true;
  if (["add", "unlink"].includes(eventType))
    return true;
  return false;
}
async function processorFn(session, file, eventType, siteProject, serverReload, opts) {
  var _a6;
  if (file) {
    changeFile(session, file, eventType);
    if (KNOWN_FAST_BUILDS.has((0, import_node_path55.extname)(file)) && eventType === "unlink") {
      session.log.info(`\u{1F6AE} File ${file} deleted...`);
    }
  }
  if (!siteProject || !file || !KNOWN_FAST_BUILDS.has((0, import_node_path55.extname)(file)) || ["add", "unlink"].includes(eventType)) {
    let reloadProject = (_a6 = opts === null || opts === void 0 ? void 0 : opts.reloadProject) !== null && _a6 !== void 0 ? _a6 : false;
    if (reloadProject || file && triggerProjectReload(session, file, eventType, siteProject === null || siteProject === void 0 ? void 0 : siteProject.path)) {
      session.log.info("\u{1F4A5} Triggered full project load and site rebuild");
      reloadProject = true;
    } else {
      session.log.info("\u{1F4A5} Triggered full site rebuild");
    }
    await processSite(session, { ...opts, reloadProject });
    serverReload();
    return;
  }
  if (!siteProject.path) {
    session.log.warn(`\u26A0\uFE0F No local project path for file: ${file}`);
    return;
  }
  const projectPath = siteProject.path;
  const state = session.store.getState();
  const pageSlug = selectors_exports.selectPageSlug(state, siteProject.path, file);
  const dependencies = selectors_exports.selectDependentFiles(state, file);
  if (!pageSlug && dependencies.length === 0) {
    session.log.warn(`\u26A0\uFE0F File is not in project: ${file}`);
    return;
  }
  await fastProcessFile(session, {
    file,
    projectPath,
    projectSlug: siteProject.slug,
    pageSlug,
    ...opts
  });
  if (dependencies.length) {
    session.log.info(`\u{1F504} Updating dependent pages for ${file} ${source_default.dim(`[${dependencies.join(", ")}]`)}`);
    const siteConfig = selectors_exports.selectCurrentSiteFile(state);
    const projConfig = selectors_exports.selectCurrentProjectFile(state);
    if (siteConfig && dependencies.includes(siteConfig) || projConfig && dependencies.includes(projConfig)) {
      await processSite(session, { ...opts, reloadProject: true });
    } else {
      await Promise.all([
        dependencies.map(async (dep) => {
          const depSlug = selectors_exports.selectPageSlug(state, projectPath, dep);
          if (!depSlug)
            return void 0;
          return fastProcessFile(session, {
            file: dep,
            projectPath,
            projectSlug: siteProject.slug,
            pageSlug: depSlug,
            ...opts
          });
        })
      ]);
    }
  }
  serverReload();
}
function watchProcessor(session, siteProject, serverReload, opts) {
  return async (eventType, file) => {
    if (file.startsWith("_build") || file.startsWith(".") || file.includes(".ipynb_checkpoints")) {
      session.log.debug(`Ignoring build trigger for ${file} with eventType of "${eventType}"`);
      return;
    }
    const { reloading } = selectors_exports.selectReloadingState(session.store.getState());
    if (reloading) {
      session.store.dispatch(watch.actions.markReloadRequested(true));
      return;
    }
    session.store.dispatch(watch.actions.markReloading(true));
    if (siteProject === null || siteProject === void 0 ? void 0 : siteProject.path)
      file = (0, import_node_path55.resolve)(siteProject.path, file);
    session.log.debug(`File modified: "${file}" (${eventType})`);
    try {
      await processorFn(session, file, eventType, siteProject, serverReload, opts);
      while (selectors_exports.selectReloadingState(session.store.getState()).reloadRequested) {
        session.store.dispatch(watch.actions.markReloadRequested(false));
        await processorFn(session, null, eventType, null, serverReload, {
          ...opts,
          reloadProject: true
        });
      }
    } catch (error) {
      session.log.debug(`

${error === null || error === void 0 ? void 0 : error.stack}

`);
      session.log.error(`Error during reload${error.message ? `:
${error.message}` : ""}`);
    }
    session.store.dispatch(watch.actions.markReloading(false));
  };
}
function watchContent(session, serverReload, opts) {
  const state = session.store.getState();
  const siteConfig = selectors_exports.selectCurrentSiteConfig(state);
  if (!(siteConfig === null || siteConfig === void 0 ? void 0 : siteConfig.projects))
    return;
  const siteConfigFile = selectors_exports.selectCurrentSiteFile(state);
  const localProjects = siteConfig.projects.filter((proj) => {
    return Boolean(proj.path);
  });
  localProjects.forEach((proj) => {
    const ignored = proj.path === "." ? localProjects.filter(({ path: path45 }) => path45 !== ".").map(({ path: path45 }) => (0, import_node_path55.join)(path45, "*")) : [];
    if (siteConfigFile)
      ignored.push(siteConfigFile);
    const projectConfig = selectors_exports.selectLocalProjectConfig(state, proj.path);
    if (projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.exclude)
      ignored.push(...projectConfig.exclude);
    const dependencies = new Set(selectors_exports.selectAllDependencies(state, proj.path));
    import_chokidar2.default.watch([proj.path, ...dependencies], {
      ignoreInitial: true,
      ignored: ["public", "**/_build/**", "**/node_modules/**", "**/.*/**", ...ignored],
      awaitWriteFinish: { stabilityThreshold: 100, pollInterval: 50 },
      cwd: proj.path
    }).on("all", watchProcessor(session, proj, serverReload, opts));
  });
  watchConfigAndPublic(session, serverReload, opts);
}

// ../myst-cli/dist/build/site/start.js
var DEFAULT_HOST = "localhost";
var DEFAULT_START_COMMAND = "npm run start";
async function startContentServer(session, opts) {
  var _a6;
  const host = (opts === null || opts === void 0 ? void 0 : opts.serverHost) || DEFAULT_HOST;
  const port = (_a6 = opts === null || opts === void 0 ? void 0 : opts.serverPort) !== null && _a6 !== void 0 ? _a6 : await getPorts({ port: portNumbers(3100, 3200) });
  const app = (0, import_express.default)();
  app.use((0, import_cors.default)());
  app.get("/", (req, res) => {
    res.json({
      version: version_default2,
      links: {
        site: `http://${host}:${port}/config.json`
      }
    });
  });
  app.use("/", import_express.default.static(session.publicPath()));
  app.use("/content", import_express.default.static(session.contentPath()));
  app.use("/config.json", import_express.default.static((0, import_node_path56.join)(session.sitePath(), "config.json")));
  app.use("/objects.inv", import_express.default.static((0, import_node_path56.join)(session.sitePath(), "objects.inv")));
  app.use("/myst.xref.json", import_express.default.static((0, import_node_path56.join)(session.sitePath(), "myst.xref.json")));
  app.use("/myst.search.json", import_express.default.static((0, import_node_path56.join)(session.sitePath(), "myst.search.json")));
  const server = app.listen(port, host, () => {
    session.log.debug(`Content server listening on port ${port}`);
  });
  const wss = new import_websocket_server.default({
    noServer: true,
    path: "/socket"
  });
  const connections = {};
  wss.on("connection", function connection(ws) {
    const id = nanoid();
    session.log.debug(`Content server websocket connected ${id}`);
    connections[id] = ws;
    ws.on("close", () => {
      session.log.debug(`Content server websocket disconnected ${id}`);
      delete connections[id];
    });
  });
  const sendJson = (data) => {
    Object.entries(connections).forEach(([, ws]) => {
      ws.send(JSON.stringify(data));
    });
  };
  const log = (message) => sendJson({ type: "LOG", message });
  const reload = () => sendJson({ type: "RELOAD" });
  server.on("upgrade", (request, socket, head2) => {
    wss.handleUpgrade(request, socket, head2, (websocket) => {
      wss.emit("connection", websocket, request);
    });
  });
  const stop = () => {
    server.close();
    wss.close();
  };
  return { host, port, reload, log, stop };
}
function warnOnHostEnvironmentVariable(session, opts) {
  if (process.env.READTHEDOCS === "True") {
    session.log.info("Detected ReadTheDocs environment, setting HOST to 127.0.0.1");
    process.env.HOST = "127.0.0.1";
    return "127.0.0.1";
  }
  if (!process.env.HOST || process.env.HOST === "localhost" || process.env.HOST === "127.0.0.1") {
    return process.env.HOST || DEFAULT_HOST;
  }
  if (opts === null || opts === void 0 ? void 0 : opts.keepHost) {
    session.log.warn(`
The HOST environment variable is set to "${process.env.HOST}", this may cause issues for the web server.
`);
    return process.env.HOST;
  }
  session.log.warn(`
The HOST environment variable is set to "${process.env.HOST}", we are overwriting this to "${DEFAULT_HOST}".
To keep this value use the \`--keep-host\` flag.
`);
  process.env.HOST = DEFAULT_HOST;
  return DEFAULT_HOST;
}
async function startServer(session, opts) {
  var _a6;
  await session.reload();
  const host = warnOnHostEnvironmentVariable(session, opts);
  const mystTemplate = await getSiteTemplate(session, opts);
  if (!opts.headless && !opts.template)
    await installSiteTemplate(session, mystTemplate);
  await buildSite(session, opts);
  const server = await startContentServer(session, { ...opts, serverHost: host });
  if (!opts.buildStatic) {
    watchContent(session, server.reload, opts);
  }
  if (opts.headless) {
    const local = source_default.green(`http://${host}:${server.port}`);
    session.log.info(`
\u{1F50C} Content server started on port ${server.port}!  \u{1F973} \u{1F389}


	\u{1F449}  ${local}  \u{1F448}

`);
    return void 0;
  }
  session.log.info(`

	\u2728\u2728\u2728  Starting ${mystTemplate.getValidatedTemplateYml().title}  \u2728\u2728\u2728

`);
  const port = (_a6 = opts === null || opts === void 0 ? void 0 : opts.port) !== null && _a6 !== void 0 ? _a6 : await getPorts({ port: portNumbers(3e3, 3100) });
  const appServer = { port };
  await new Promise((resolve9) => {
    var _a7, _b;
    const start = makeExecutable((_b = (_a7 = mystTemplate.getValidatedTemplateYml().build) === null || _a7 === void 0 ? void 0 : _a7.start) !== null && _b !== void 0 ? _b : DEFAULT_START_COMMAND, createServerLogger(session, { host, ready: resolve9 }), {
      cwd: mystTemplate.templatePath,
      env: {
        ...process.env,
        HOST: host,
        CONTENT_CDN_PORT: String(server.port),
        PORT: String(port),
        MODE: opts.buildStatic ? "static" : "app",
        BASE_URL: opts.baseurl || void 0
      },
      getProcess(process11) {
        appServer.process = process11;
      }
    });
    start().catch((e2) => session.log.debug(e2));
  });
  appServer.stop = () => {
    appServer.process.kill();
    server.stop();
  };
  return appServer;
}

// ../myst-cli/dist/build/html/index.js
var import_p_limit2 = __toESM(require_p_limit(), 1);
var limitConnections = (0, import_p_limit2.default)(5);
async function currentSiteRoutes(session, host, baseurl) {
  var _a6, _b;
  const state = session.store.getState();
  const siteConfig = selectors_exports.selectCurrentSiteConfig(state);
  return (_b = (_a6 = siteConfig === null || siteConfig === void 0 ? void 0 : siteConfig.projects) !== null && _a6 !== void 0 ? _a6 : []) === null || _b === void 0 ? void 0 : _b.map((proj) => {
    var _a7, _b2;
    if (!proj.path)
      return [];
    const localProj = selectors_exports.selectLocalProject(state, proj.path);
    if (!localProj)
      return [];
    const projSlug = proj.slug ? `/${proj.slug}` : "";
    const siteIndex = baseurl ? `/${localProj.index}` : "";
    const pages = localProj.pages.filter((page) => !!page.slug);
    return [
      { url: `${host}${projSlug}${siteIndex}`, path: import_node_path57.default.join((_a7 = proj.slug) !== null && _a7 !== void 0 ? _a7 : "", "index.html") },
      ...pages.map((page) => {
        var _a8;
        const pageSlug = slugToUrl(page.slug);
        return {
          url: `${host}${projSlug}/${pageSlug}`,
          path: import_node_path57.default.join((_a8 = proj.slug) !== null && _a8 !== void 0 ? _a8 : "", `${pageSlug}/index.html`)
        };
      }),
      // Download all of the configured JSON
      {
        url: `${host}${projSlug}/${localProj.index}.json`,
        path: import_node_path57.default.join((_b2 = proj.slug) !== null && _b2 !== void 0 ? _b2 : "", `${localProj.index}.json`)
      },
      ...pages.map((page) => {
        var _a8;
        return {
          url: `${host}${projSlug}/${page.slug}.json`,
          path: import_node_path57.default.join((_a8 = proj.slug) !== null && _a8 !== void 0 ? _a8 : "", `${page.slug}.json`)
        };
      }),
      // Download other assets
      ...["robots.txt", "myst-theme.css"].map((asset) => ({
        url: `${host}/${asset}`,
        path: asset
      })),
      ...["favicon.ico"].map((asset) => ({
        url: `${host}/${asset}`,
        path: asset,
        binary: true
      }))
    ];
  }).flat();
}
var ASSETS_FOLDER = "myst_assets_folder";
function rewriteAssetsFolder(directory, baseurl) {
  import_fs_extra.default.readdirSync(directory).forEach((filename) => {
    const file = import_node_path57.default.join(directory, filename);
    if (import_fs_extra.default.statSync(file).isDirectory()) {
      rewriteAssetsFolder(file, baseurl);
      return;
    }
    if (import_node_path57.default.extname(file) === ".map") {
      import_fs_extra.default.rmSync(file);
      return;
    }
    if (![".html", ".js", ".json"].includes(import_node_path57.default.extname(file)))
      return;
    const data = import_fs_extra.default.readFileSync(file).toString();
    const modified = data.replace(new RegExp(`\\/${ASSETS_FOLDER}\\/`, "g"), `${baseurl || ""}/build/`);
    import_fs_extra.default.writeFileSync(file, modified);
  });
}
function get_baseurl(session) {
  let baseurl;
  if (baseurl = process.env.BASE_URL) {
    session.log.info("BASE_URL environment overwrite is set");
  } else if (baseurl = process.env.READTHEDOCS_CANONICAL_URL) {
    baseurl = new URL(baseurl).pathname.replace(/\/$/, "");
    session.log.info(`Building inside a ReadTheDocs environment for ${process.env.READTHEDOCS_CANONICAL_URL}`);
  }
  if (baseurl) {
    session.log.info(`Building the site with a baseurl of "${baseurl}"`);
  } else {
    session.log.info('Building the base site.\nTo set a baseurl (e.g. GitHub pages) use "BASE_URL" environment variable.');
  }
  return baseurl;
}
async function buildHtml(session, opts) {
  var _a6;
  const template = await getSiteTemplate(session, opts);
  const baseurl = get_baseurl(session);
  const htmlDir = import_node_path57.default.join(session.buildPath(), "html");
  import_fs_extra.default.rmSync(htmlDir, { recursive: true, force: true });
  import_fs_extra.default.mkdirSync(htmlDir, { recursive: true });
  const appServer = await startServer(session, { ...opts, buildStatic: true, baseurl });
  if (!appServer)
    return;
  const host = `http://localhost:${appServer.port}`;
  const routes = await currentSiteRoutes(session, host, baseurl);
  await Promise.all(routes.map(async (route) => limitConnections(async () => {
    const resp = await fetchWithRetry(session, route.url);
    if (!resp.ok) {
      session.log.error(`Error fetching ${route.url}`);
      return;
    }
    if (route.binary && resp.body) {
      await new Promise((resolve9) => {
        const filename = import_node_path57.default.join(htmlDir, route.path);
        if (!import_fs_extra.default.existsSync(filename))
          import_fs_extra.default.mkdirSync(import_node_path57.default.dirname(filename), { recursive: true });
        const fileWriteStream = import_fs_extra.default.createWriteStream(filename);
        resp.body.pipe(fileWriteStream);
        fileWriteStream.on("finish", resolve9);
      });
    } else {
      const content3 = await resp.text();
      writeFileToFolder(import_node_path57.default.join(htmlDir, route.path), content3);
    }
  })));
  appServer.stop();
  const templateBuildDir = import_node_path57.default.join(template.templatePath, "public");
  import_fs_extra.default.copySync(templateBuildDir, htmlDir);
  import_fs_extra.default.copySync(session.publicPath(), import_node_path57.default.join(htmlDir, "build"));
  import_fs_extra.default.copySync(import_node_path57.default.join(session.sitePath(), "config.json"), import_node_path57.default.join(htmlDir, "config.json"));
  import_fs_extra.default.copySync(import_node_path57.default.join(session.sitePath(), "objects.inv"), import_node_path57.default.join(htmlDir, "objects.inv"));
  const xrefs = JSON.parse(import_fs_extra.default.readFileSync(import_node_path57.default.join(session.sitePath(), "myst.xref.json")).toString());
  (_a6 = xrefs.references) === null || _a6 === void 0 ? void 0 : _a6.forEach((ref) => {
    var _a7;
    ref.data = (_a7 = ref.data) === null || _a7 === void 0 ? void 0 : _a7.replace(/^\/content/, "");
  });
  import_fs_extra.default.writeFileSync(import_node_path57.default.join(htmlDir, "myst.xref.json"), JSON.stringify(xrefs));
  import_fs_extra.default.copySync(import_node_path57.default.join(session.sitePath(), "myst.search.json"), import_node_path57.default.join(htmlDir, "myst.search.json"));
  rewriteAssetsFolder(htmlDir, baseurl);
  process.exit(0);
}

// ../myst-cli/dist/build/build.js
function hasAnyExplicitExportFormat(opts) {
  const { docx, pdf, tex, typst, xml: xml2, md, meca, cff } = opts;
  return docx || pdf || tex || typst || xml2 || md || meca || cff || false;
}
function getAllowedExportFormats(opts) {
  const { docx, pdf, tex, typst, xml: xml2, md, meca, cff, all: all10, explicit } = opts;
  const formats = [];
  const any = hasAnyExplicitExportFormat(opts);
  const override = all10 || !any && explicit;
  if (docx || override)
    formats.push(ExportFormats.docx);
  if (pdf || override) {
    formats.push(ExportFormats.pdf, ExportFormats.pdftex, ExportFormats.typst);
  }
  if (tex || override) {
    formats.push(ExportFormats.tex, ExportFormats.pdftex);
  }
  if (typst || override)
    formats.push(ExportFormats.typst);
  if (xml2 || override)
    formats.push(ExportFormats.xml);
  if (md || override)
    formats.push(ExportFormats.md);
  if (meca || override)
    formats.push(ExportFormats.meca);
  if (cff || override)
    formats.push(ExportFormats.cff);
  return [...new Set(formats)];
}
function getRequestedExportFormats(opts) {
  const { docx, pdf, tex, typst, xml: xml2, md, meca, cff } = opts;
  const formats = [];
  if (docx)
    formats.push(ExportFormats.docx);
  if (pdf)
    formats.push(ExportFormats.pdf);
  if (tex)
    formats.push(ExportFormats.tex);
  if (typst)
    formats.push(ExportFormats.typst);
  if (xml2)
    formats.push(ExportFormats.xml);
  if (md)
    formats.push(ExportFormats.md);
  if (meca)
    formats.push(ExportFormats.meca);
  if (cff)
    formats.push(ExportFormats.cff);
  return formats;
}
function exportSite(session, opts) {
  const { force, site, html: html7, all: all10 } = opts;
  const siteConfig = selectors_exports.selectCurrentSiteConfig(session.store.getState());
  return site || html7 || all10 || siteConfig && !force && !hasAnyExplicitExportFormat(opts);
}
function getProjectPaths(session) {
  var _a6, _b, _c;
  const siteConfig = selectors_exports.selectCurrentSiteConfig(session.store.getState());
  const projectPaths = [
    (_a6 = selectors_exports.selectCurrentProjectPath(session.store.getState())) !== null && _a6 !== void 0 ? _a6 : import_node_path58.default.resolve("."),
    ...(_c = (_b = siteConfig === null || siteConfig === void 0 ? void 0 : siteConfig.projects) === null || _b === void 0 ? void 0 : _b.map((proj) => proj.path).filter((projectPath) => !!projectPath)) !== null && _c !== void 0 ? _c : []
  ];
  return uniqueArray(projectPaths);
}
async function collectAllBuildExportOptions(session, files, opts) {
  var _a6;
  const { output: output2 } = opts;
  files = files.map((file) => import_node_path58.default.resolve(file));
  if (output2 && files.length !== 1) {
    throw new Error("When specifying a named output for export, you must list exactly one file.");
  }
  const requestedFormats = getRequestedExportFormats(opts);
  if (output2 && requestedFormats.length > 1) {
    throw new Error(`When specifying output, you can only request one format`);
  }
  let exportOptionsList;
  const projectPath = await findCurrentProjectAndLoad(session, files[0] ? import_node_path58.default.dirname(files[0]) : ".");
  if (projectPath)
    await loadProjectFromDisk(session, projectPath);
  if (output2) {
    session.log.debug(`Exporting formats: "${requestedFormats.join('", "')}"`);
    const format = (_a6 = requestedFormats[0]) !== null && _a6 !== void 0 ? _a6 : EXT_TO_FORMAT[import_node_path58.default.extname(output2)];
    if (!format) {
      throw new Error(`Cannot specify format from output "${output2}" - please specify format option, e.g. --pdf`);
    }
    exportOptionsList = resolveExportListArticles(session, files[0], [{ format, output: import_node_path58.default.resolve(".", output2) }], projectPath, opts).map((exp) => {
      return { ...exp, $file: files[0], $project: projectPath };
    });
  } else if (files.length) {
    const allowedFormats = getAllowedExportFormats({
      ...opts,
      explicit: true
    });
    session.log.debug(`Exporting formats: "${allowedFormats.join('", "')}"`);
    exportOptionsList = (await Promise.all(files.map(async (file) => {
      const fileExportOptionsList = await collectExportOptions(session, [file], allowedFormats, opts);
      if (fileExportOptionsList.length > 0) {
        return fileExportOptionsList;
      }
      return resolveExportListArticles(session, file, requestedFormats.map((format) => {
        return { format };
      }), projectPath, opts).map((exp) => {
        return { ...exp, $file: files[0], $project: projectPath };
      });
    }))).flat();
  } else {
    const allowedFormats = getAllowedExportFormats(opts);
    session.log.debug(`Exporting formats: "${allowedFormats.join('", "')}"`);
    const projectPaths = getProjectPaths(session);
    exportOptionsList = (await Promise.all(projectPaths.map(async (projPath) => {
      try {
        const project = await loadProjectFromDisk(session, projPath);
        files = filterPages(project).map((page) => page.file);
      } catch (err) {
        session.log.debug(`Unable to load any content from project at: ${projPath}
${err}`);
        return [];
      }
      const exportOptions = await collectExportOptions(session, files, allowedFormats, {
        ...opts,
        projectPath: projPath
      });
      return exportOptions;
    }))).flat();
  }
  return exportOptionsList;
}
function extToKind(ext2) {
  if (ext2 === "xml")
    return "jats";
  return ext2;
}
async function build(session, files, opts) {
  const { site, all: all10, watch: watch2, writeDOIBib } = opts;
  const performSiteBuild = all10 || files.length === 0 && exportSite(session, opts) || writeDOIBib;
  const exportOptionsList = await collectAllBuildExportOptions(session, files, opts);
  const buildLog = {
    input: {
      files,
      opts,
      performSiteBuild
    },
    exports: exportOptionsList
  };
  const exportLogList = exportOptionsList.map((exportOptions) => {
    return `${import_node_path58.default.relative(".", exportOptions.$file)} -> ${exportOptions.output}`;
  });
  if (exportLogList.length === 0) {
    if (!(site || performSiteBuild)) {
      const kinds = Object.entries(opts).filter(([k, v]) => ["docx", "pdf", "tex", "typst", "xml", "md", "meca", "cff"].includes(k) && v).map(([k]) => k);
      session.log.info(`\u{1F4ED} No file exports${kinds.length > 0 ? ` with kind "${kinds.map(extToKind).join('", "')}"` : ""} found.`);
      if (kinds.length) {
        session.log.info(source_default.dim(`You may need to add an 'exports' field to the frontmatter of the file(s) you wish to export:

---
exports:
  - format: ${extToKind(kinds[0])}
---`));
      } else {
        session.log.info(source_default.dim(`You may need to specify either:
  - an export format, e.g. \`${binaryName()} build --pdf\`
  - a file to export, e.g. \`${binaryName()} build my-file.md\``));
      }
    }
  } else {
    session.log.info(`\u{1F4EC} Performing exports:
   ${exportLogList.join("\n   ")}`);
    await localArticleExport(session, exportOptionsList, opts);
  }
  if (performSiteBuild) {
    const siteConfig = selectors_exports.selectCurrentSiteConfig(session.store.getState());
    if (!siteConfig) {
      session.log.info("\u{1F30E} No site configuration found.");
      session.log.debug(`To build a site, first run '${binaryName()} init --site'`);
    } else {
      session.log.info(`\u{1F30E} Building ${readableName()} site`);
      if (watch2) {
        session.log.warn(`Site content will not be watched and updated; use '${binaryName()} start' instead`);
      }
      if (opts.html) {
        buildLog.buildHtml = true;
        await buildHtml(session, opts);
      } else {
        buildLog.buildSite = true;
        await buildSite(session, opts);
      }
    }
  }
  writeJsonLogs(session, "myst.build.json", buildLog);
  session.dispose();
}

// ../myst-cli/dist/build/clean.js
var import_node_fs41 = __toESM(require("fs"), 1);
var import_node_path60 = __toESM(require("path"), 1);

// ../../node_modules/inquirer/lib/prompts/list.js
var import_ansi_escapes3 = __toESM(require_ansi_escapes(), 1);
var import_yoctocolors_cjs4 = __toESM(require_yoctocolors_cjs(), 1);

// ../../node_modules/@inquirer/figures/dist/esm/index.js
var import_node_process5 = __toESM(require("process"), 1);
function isUnicodeSupported() {
  if (import_node_process5.default.platform !== "win32") {
    return import_node_process5.default.env["TERM"] !== "linux";
  }
  return Boolean(import_node_process5.default.env["WT_SESSION"]) || // Windows Terminal
  Boolean(import_node_process5.default.env["TERMINUS_SUBLIME"]) || // Terminus (<0.2.27)
  import_node_process5.default.env["ConEmuTask"] === "{cmd::Cmder}" || // ConEmu and cmder
  import_node_process5.default.env["TERM_PROGRAM"] === "Terminus-Sublime" || import_node_process5.default.env["TERM_PROGRAM"] === "vscode" || import_node_process5.default.env["TERM"] === "xterm-256color" || import_node_process5.default.env["TERM"] === "alacritty" || import_node_process5.default.env["TERMINAL_EMULATOR"] === "JetBrains-JediTerm";
}
var common2 = {
  circleQuestionMark: "(?)",
  questionMarkPrefix: "(?)",
  square: "\u2588",
  squareDarkShade: "\u2593",
  squareMediumShade: "\u2592",
  squareLightShade: "\u2591",
  squareTop: "\u2580",
  squareBottom: "\u2584",
  squareLeft: "\u258C",
  squareRight: "\u2590",
  squareCenter: "\u25A0",
  bullet: "\u25CF",
  dot: "\u2024",
  ellipsis: "\u2026",
  pointerSmall: "\u203A",
  triangleUp: "\u25B2",
  triangleUpSmall: "\u25B4",
  triangleDown: "\u25BC",
  triangleDownSmall: "\u25BE",
  triangleLeftSmall: "\u25C2",
  triangleRightSmall: "\u25B8",
  home: "\u2302",
  heart: "\u2665",
  musicNote: "\u266A",
  musicNoteBeamed: "\u266B",
  arrowUp: "\u2191",
  arrowDown: "\u2193",
  arrowLeft: "\u2190",
  arrowRight: "\u2192",
  arrowLeftRight: "\u2194",
  arrowUpDown: "\u2195",
  almostEqual: "\u2248",
  notEqual: "\u2260",
  lessOrEqual: "\u2264",
  greaterOrEqual: "\u2265",
  identical: "\u2261",
  infinity: "\u221E",
  subscriptZero: "\u2080",
  subscriptOne: "\u2081",
  subscriptTwo: "\u2082",
  subscriptThree: "\u2083",
  subscriptFour: "\u2084",
  subscriptFive: "\u2085",
  subscriptSix: "\u2086",
  subscriptSeven: "\u2087",
  subscriptEight: "\u2088",
  subscriptNine: "\u2089",
  oneHalf: "\xBD",
  oneThird: "\u2153",
  oneQuarter: "\xBC",
  oneFifth: "\u2155",
  oneSixth: "\u2159",
  oneEighth: "\u215B",
  twoThirds: "\u2154",
  twoFifths: "\u2156",
  threeQuarters: "\xBE",
  threeFifths: "\u2157",
  threeEighths: "\u215C",
  fourFifths: "\u2158",
  fiveSixths: "\u215A",
  fiveEighths: "\u215D",
  sevenEighths: "\u215E",
  line: "\u2500",
  lineBold: "\u2501",
  lineDouble: "\u2550",
  lineDashed0: "\u2504",
  lineDashed1: "\u2505",
  lineDashed2: "\u2508",
  lineDashed3: "\u2509",
  lineDashed4: "\u254C",
  lineDashed5: "\u254D",
  lineDashed6: "\u2574",
  lineDashed7: "\u2576",
  lineDashed8: "\u2578",
  lineDashed9: "\u257A",
  lineDashed10: "\u257C",
  lineDashed11: "\u257E",
  lineDashed12: "\u2212",
  lineDashed13: "\u2013",
  lineDashed14: "\u2010",
  lineDashed15: "\u2043",
  lineVertical: "\u2502",
  lineVerticalBold: "\u2503",
  lineVerticalDouble: "\u2551",
  lineVerticalDashed0: "\u2506",
  lineVerticalDashed1: "\u2507",
  lineVerticalDashed2: "\u250A",
  lineVerticalDashed3: "\u250B",
  lineVerticalDashed4: "\u254E",
  lineVerticalDashed5: "\u254F",
  lineVerticalDashed6: "\u2575",
  lineVerticalDashed7: "\u2577",
  lineVerticalDashed8: "\u2579",
  lineVerticalDashed9: "\u257B",
  lineVerticalDashed10: "\u257D",
  lineVerticalDashed11: "\u257F",
  lineDownLeft: "\u2510",
  lineDownLeftArc: "\u256E",
  lineDownBoldLeftBold: "\u2513",
  lineDownBoldLeft: "\u2512",
  lineDownLeftBold: "\u2511",
  lineDownDoubleLeftDouble: "\u2557",
  lineDownDoubleLeft: "\u2556",
  lineDownLeftDouble: "\u2555",
  lineDownRight: "\u250C",
  lineDownRightArc: "\u256D",
  lineDownBoldRightBold: "\u250F",
  lineDownBoldRight: "\u250E",
  lineDownRightBold: "\u250D",
  lineDownDoubleRightDouble: "\u2554",
  lineDownDoubleRight: "\u2553",
  lineDownRightDouble: "\u2552",
  lineUpLeft: "\u2518",
  lineUpLeftArc: "\u256F",
  lineUpBoldLeftBold: "\u251B",
  lineUpBoldLeft: "\u251A",
  lineUpLeftBold: "\u2519",
  lineUpDoubleLeftDouble: "\u255D",
  lineUpDoubleLeft: "\u255C",
  lineUpLeftDouble: "\u255B",
  lineUpRight: "\u2514",
  lineUpRightArc: "\u2570",
  lineUpBoldRightBold: "\u2517",
  lineUpBoldRight: "\u2516",
  lineUpRightBold: "\u2515",
  lineUpDoubleRightDouble: "\u255A",
  lineUpDoubleRight: "\u2559",
  lineUpRightDouble: "\u2558",
  lineUpDownLeft: "\u2524",
  lineUpBoldDownBoldLeftBold: "\u252B",
  lineUpBoldDownBoldLeft: "\u2528",
  lineUpDownLeftBold: "\u2525",
  lineUpBoldDownLeftBold: "\u2529",
  lineUpDownBoldLeftBold: "\u252A",
  lineUpDownBoldLeft: "\u2527",
  lineUpBoldDownLeft: "\u2526",
  lineUpDoubleDownDoubleLeftDouble: "\u2563",
  lineUpDoubleDownDoubleLeft: "\u2562",
  lineUpDownLeftDouble: "\u2561",
  lineUpDownRight: "\u251C",
  lineUpBoldDownBoldRightBold: "\u2523",
  lineUpBoldDownBoldRight: "\u2520",
  lineUpDownRightBold: "\u251D",
  lineUpBoldDownRightBold: "\u2521",
  lineUpDownBoldRightBold: "\u2522",
  lineUpDownBoldRight: "\u251F",
  lineUpBoldDownRight: "\u251E",
  lineUpDoubleDownDoubleRightDouble: "\u2560",
  lineUpDoubleDownDoubleRight: "\u255F",
  lineUpDownRightDouble: "\u255E",
  lineDownLeftRight: "\u252C",
  lineDownBoldLeftBoldRightBold: "\u2533",
  lineDownLeftBoldRightBold: "\u252F",
  lineDownBoldLeftRight: "\u2530",
  lineDownBoldLeftBoldRight: "\u2531",
  lineDownBoldLeftRightBold: "\u2532",
  lineDownLeftRightBold: "\u252E",
  lineDownLeftBoldRight: "\u252D",
  lineDownDoubleLeftDoubleRightDouble: "\u2566",
  lineDownDoubleLeftRight: "\u2565",
  lineDownLeftDoubleRightDouble: "\u2564",
  lineUpLeftRight: "\u2534",
  lineUpBoldLeftBoldRightBold: "\u253B",
  lineUpLeftBoldRightBold: "\u2537",
  lineUpBoldLeftRight: "\u2538",
  lineUpBoldLeftBoldRight: "\u2539",
  lineUpBoldLeftRightBold: "\u253A",
  lineUpLeftRightBold: "\u2536",
  lineUpLeftBoldRight: "\u2535",
  lineUpDoubleLeftDoubleRightDouble: "\u2569",
  lineUpDoubleLeftRight: "\u2568",
  lineUpLeftDoubleRightDouble: "\u2567",
  lineUpDownLeftRight: "\u253C",
  lineUpBoldDownBoldLeftBoldRightBold: "\u254B",
  lineUpDownBoldLeftBoldRightBold: "\u2548",
  lineUpBoldDownLeftBoldRightBold: "\u2547",
  lineUpBoldDownBoldLeftRightBold: "\u254A",
  lineUpBoldDownBoldLeftBoldRight: "\u2549",
  lineUpBoldDownLeftRight: "\u2540",
  lineUpDownBoldLeftRight: "\u2541",
  lineUpDownLeftBoldRight: "\u253D",
  lineUpDownLeftRightBold: "\u253E",
  lineUpBoldDownBoldLeftRight: "\u2542",
  lineUpDownLeftBoldRightBold: "\u253F",
  lineUpBoldDownLeftBoldRight: "\u2543",
  lineUpBoldDownLeftRightBold: "\u2544",
  lineUpDownBoldLeftBoldRight: "\u2545",
  lineUpDownBoldLeftRightBold: "\u2546",
  lineUpDoubleDownDoubleLeftDoubleRightDouble: "\u256C",
  lineUpDoubleDownDoubleLeftRight: "\u256B",
  lineUpDownLeftDoubleRightDouble: "\u256A",
  lineCross: "\u2573",
  lineBackslash: "\u2572",
  lineSlash: "\u2571"
};
var specialMainSymbols = {
  tick: "\u2714",
  info: "\u2139",
  warning: "\u26A0",
  cross: "\u2718",
  squareSmall: "\u25FB",
  squareSmallFilled: "\u25FC",
  circle: "\u25EF",
  circleFilled: "\u25C9",
  circleDotted: "\u25CC",
  circleDouble: "\u25CE",
  circleCircle: "\u24DE",
  circleCross: "\u24E7",
  circlePipe: "\u24BE",
  radioOn: "\u25C9",
  radioOff: "\u25EF",
  checkboxOn: "\u2612",
  checkboxOff: "\u2610",
  checkboxCircleOn: "\u24E7",
  checkboxCircleOff: "\u24BE",
  pointer: "\u276F",
  triangleUpOutline: "\u25B3",
  triangleLeft: "\u25C0",
  triangleRight: "\u25B6",
  lozenge: "\u25C6",
  lozengeOutline: "\u25C7",
  hamburger: "\u2630",
  smiley: "\u32E1",
  mustache: "\u0DF4",
  star: "\u2605",
  play: "\u25B6",
  nodejs: "\u2B22",
  oneSeventh: "\u2150",
  oneNinth: "\u2151",
  oneTenth: "\u2152"
};
var specialFallbackSymbols = {
  tick: "\u221A",
  info: "i",
  warning: "\u203C",
  cross: "\xD7",
  squareSmall: "\u25A1",
  squareSmallFilled: "\u25A0",
  circle: "( )",
  circleFilled: "(*)",
  circleDotted: "( )",
  circleDouble: "( )",
  circleCircle: "(\u25CB)",
  circleCross: "(\xD7)",
  circlePipe: "(\u2502)",
  radioOn: "(*)",
  radioOff: "( )",
  checkboxOn: "[\xD7]",
  checkboxOff: "[ ]",
  checkboxCircleOn: "(\xD7)",
  checkboxCircleOff: "( )",
  pointer: ">",
  triangleUpOutline: "\u2206",
  triangleLeft: "\u25C4",
  triangleRight: "\u25BA",
  lozenge: "\u2666",
  lozengeOutline: "\u25CA",
  hamburger: "\u2261",
  smiley: "\u263A",
  mustache: "\u250C\u2500\u2510",
  star: "\u2736",
  play: "\u25BA",
  nodejs: "\u2666",
  oneSeventh: "1/7",
  oneNinth: "1/9",
  oneTenth: "1/10"
};
var mainSymbols = { ...common2, ...specialMainSymbols };
var fallbackSymbols = {
  ...common2,
  ...specialFallbackSymbols
};
var shouldUseMain = isUnicodeSupported();
var figures = shouldUseMain ? mainSymbols : fallbackSymbols;
var esm_default = figures;
var replacements2 = Object.entries(specialMainSymbols);

// ../../node_modules/inquirer/lib/prompts/list.js
var import_run_async2 = __toESM(require_run_async(), 1);
var import_rxjs3 = __toESM(require_cjs3(), 1);

// ../../node_modules/inquirer/lib/utils/events.js
var import_rxjs = __toESM(require_cjs3(), 1);
function normalizeKeypressEvents(value, key2) {
  return { value, key: key2 || {} };
}
function observe(rl) {
  const keypress = (0, import_rxjs.fromEvent)(rl.input, "keypress", normalizeKeypressEvents).pipe((0, import_rxjs.takeUntil)((0, import_rxjs.fromEvent)(rl, "close"))).pipe((0, import_rxjs.filter)(({ key: key2 }) => key2.name !== "enter" && key2.name !== "return"));
  return {
    line: (0, import_rxjs.fromEvent)(rl, "line"),
    keypress,
    normalizedUpKey: keypress.pipe(
      (0, import_rxjs.filter)(
        ({ key: key2 }) => key2.name === "up" || key2.name === "k" || key2.name === "p" && key2.ctrl
      ),
      (0, import_rxjs.share)()
    ),
    normalizedDownKey: keypress.pipe(
      (0, import_rxjs.filter)(
        ({ key: key2 }) => key2.name === "down" || key2.name === "j" || key2.name === "n" && key2.ctrl
      ),
      (0, import_rxjs.share)()
    ),
    numberKey: keypress.pipe(
      (0, import_rxjs.filter)((e2) => e2.value && "123456789".includes(e2.value)),
      (0, import_rxjs.map)((e2) => Number(e2.value)),
      (0, import_rxjs.share)()
    ),
    spaceKey: keypress.pipe(
      (0, import_rxjs.filter)(({ key: key2 }) => key2 && key2.name === "space"),
      (0, import_rxjs.share)()
    ),
    aKey: keypress.pipe(
      (0, import_rxjs.filter)(({ key: key2 }) => key2 && key2.name === "a"),
      (0, import_rxjs.share)()
    ),
    iKey: keypress.pipe(
      (0, import_rxjs.filter)(({ key: key2 }) => key2 && key2.name === "i"),
      (0, import_rxjs.share)()
    )
  };
}

// ../../node_modules/inquirer/lib/utils/paginator.js
var import_yoctocolors_cjs = __toESM(require_yoctocolors_cjs(), 1);
var Paginator = class {
  /**
   * @param {import("./screen-manager")} [screen]
   * @param {{isInfinite?: boolean}} [options]
   */
  constructor(screen, options = {}) {
    const { isInfinite = true } = options;
    this.lastIndex = 0;
    this.screen = screen;
    this.isInfinite = isInfinite;
  }
  paginate(output2, active, pageSize) {
    pageSize || (pageSize = 7);
    let lines = output2.split("\n");
    if (this.screen) {
      lines = this.screen.breakLines(lines);
      active = lines.map((lineParts) => lineParts.length).splice(0, active).reduce((a2, b) => a2 + b, 0);
      lines = lines.flat();
    }
    if (lines.length <= pageSize) {
      return output2;
    }
    const visibleLines = this.isInfinite ? this.getInfiniteLines(lines, active, pageSize) : this.getFiniteLines(lines, active, pageSize);
    this.lastIndex = active;
    return visibleLines.join("\n") + "\n" + import_yoctocolors_cjs.default.dim("(Move up and down to reveal more choices)");
  }
  getInfiniteLines(lines, active, pageSize) {
    if (this.pointer === void 0) {
      this.pointer = 0;
    }
    const middleOfList = Math.floor(pageSize / 2);
    if (this.pointer < middleOfList && this.lastIndex < active && active - this.lastIndex < pageSize) {
      this.pointer = Math.min(middleOfList, this.pointer + active - this.lastIndex);
    }
    const infinite = [lines, lines, lines].flat();
    const topIndex = Math.max(0, active + lines.length - this.pointer);
    return infinite.splice(topIndex, pageSize);
  }
  getFiniteLines(lines, active, pageSize) {
    let topIndex = active - pageSize / 2;
    if (topIndex < 0) {
      topIndex = 0;
    } else if (topIndex + pageSize > lines.length) {
      topIndex = lines.length - pageSize;
    }
    return lines.splice(topIndex, pageSize);
  }
};

// ../../node_modules/inquirer/lib/utils/incrementListIndex.js
function incrementListIndex(current2, dir, opt) {
  const len = opt.choices.realLength;
  const shouldLoop = "loop" in opt ? Boolean(opt.loop) : true;
  if (dir === "up") {
    if (current2 > 0) {
      return current2 - 1;
    }
    return shouldLoop ? len - 1 : current2;
  }
  if (dir === "down") {
    if (current2 < len - 1) {
      return current2 + 1;
    }
    return shouldLoop ? 0 : current2;
  }
  throw new Error("dir must be up or down");
}

// ../../node_modules/inquirer/lib/prompts/base.js
var import_yoctocolors_cjs3 = __toESM(require_yoctocolors_cjs(), 1);
var import_run_async = __toESM(require_run_async(), 1);
var import_rxjs2 = __toESM(require_cjs3(), 1);

// ../../node_modules/inquirer/lib/objects/choices.js
var import_node_assert4 = __toESM(require("assert"), 1);

// ../../node_modules/inquirer/lib/objects/separator.js
var import_yoctocolors_cjs2 = __toESM(require_yoctocolors_cjs(), 1);
var Separator = class {
  constructor(line2) {
    this.type = "separator";
    this.line = import_yoctocolors_cjs2.default.dim(line2 || Array.from({ length: 15 }).join(esm_default.line));
  }
  /**
   * Helper function returning false if object is a separator
   * @param  {Object} obj object to test against
   * @return {Boolean}    `false` if object is a separator
   */
  static exclude(obj) {
    return obj.type !== "separator";
  }
  /**
   * Stringify separator
   * @return {String} the separator display string
   */
  toString() {
    return this.line;
  }
};

// ../../node_modules/inquirer/lib/objects/choice.js
var Choice = class _Choice {
  constructor(val, answers) {
    if (val instanceof _Choice || val.type === "separator") {
      return val;
    }
    if (typeof val === "string" || typeof val === "number") {
      this.name = String(val);
      this.value = val;
      this.short = String(val);
    } else {
      Object.assign(this, val, {
        name: val.name || val.value,
        value: "value" in val ? val.value : val.name,
        short: val.short || val.name || val.value
      });
    }
    this.disabled = typeof val.disabled === "function" ? val.disabled(answers) : val.disabled;
  }
};

// ../../node_modules/inquirer/lib/objects/choices.js
var Choices = class {
  /** @param {Array} choices  All `choice` to keep in the collection */
  constructor(choices, answers) {
    this.choices = choices.map((val) => {
      if (val.type === "separator") {
        if (!(val instanceof Separator)) {
          val = new Separator(val.line);
        }
        return val;
      }
      return new Choice(val, answers);
    });
    this.realChoices = this.choices.filter(Separator.exclude).filter((item) => !item.disabled);
    Object.defineProperty(this, "length", {
      get() {
        return this.choices.length;
      },
      set(val) {
        this.choices.length = val;
      }
    });
    Object.defineProperty(this, "realLength", {
      get() {
        return this.realChoices.length;
      },
      set() {
        throw new Error("Cannot set `realLength` of a Choices collection");
      }
    });
  }
  [Symbol.iterator]() {
    const data = this.choices;
    let index4 = -1;
    return {
      next: () => ({ value: data[++index4], done: !(index4 in data) })
    };
  }
  /**
   * Get a valid choice from the collection
   * @param  {Number} selector  The selected choice index
   * @return {Choice|Undefined} Return the matched choice or undefined
   */
  getChoice(selector) {
    (0, import_node_assert4.default)(typeof selector === "number");
    return this.realChoices[selector];
  }
  /**
   * Get a raw element from the collection
   * @param  {Number} selector  The selected index value
   * @return {Choice|Undefined} Return the matched choice or undefined
   */
  get(selector) {
    (0, import_node_assert4.default)(typeof selector === "number");
    return this.choices[selector];
  }
  /**
   * Match the valid choices against a where clause
   * @param  {Function|Object} whereClause filter function or key-value object to match against
   * @return {Array}              Matching choices or empty array
   */
  where(whereClause) {
    let filterFn;
    if (typeof whereClause === "function") {
      filterFn = whereClause;
    } else {
      const [key2, value] = Object.entries(whereClause)[0];
      filterFn = (choice) => choice[key2] === value;
    }
    return this.realChoices.filter(filterFn);
  }
  /**
   * Pluck a particular key from the choices
   * @param  {String} propertyName Property name to select
   * @return {Array}               Selected properties
   */
  pluck(propertyName) {
    return this.realChoices.map((choice) => choice[propertyName]);
  }
  // Expose usual Array methods
  indexOf(...args) {
    return this.choices.indexOf(...args);
  }
  forEach(...args) {
    return this.choices.forEach(...args);
  }
  filter(...args) {
    return this.choices.filter(...args);
  }
  reduce(...args) {
    return this.choices.reduce(...args);
  }
  find(func) {
    return this.choices.find(func);
  }
  some(func) {
    return this.choices.some(func);
  }
  push(...args) {
    const objs = args.map((val) => new Choice(val));
    this.choices.push(...objs);
    this.realChoices = this.choices.filter(Separator.exclude).filter((item) => !item.disabled);
    return this.choices;
  }
};

// ../../node_modules/inquirer/lib/utils/screen-manager.js
var import_ansi_escapes2 = __toESM(require_ansi_escapes(), 1);
var import_cli_width = __toESM(require_cli_width(), 1);
var import_wrap_ansi = __toESM(require_wrap_ansi(), 1);
var import_strip_ansi2 = __toESM(require_strip_ansi(), 1);
var import_string_width = __toESM(require_string_width(), 1);
var import_ora = __toESM(require_ora(), 1);

// ../../node_modules/inquirer/lib/utils/readline.js
var import_ansi_escapes = __toESM(require_ansi_escapes(), 1);
var left = function(rl, x2) {
  rl.output.write(import_ansi_escapes.default.cursorBackward(x2));
};
var right = function(rl, x2) {
  rl.output.write(import_ansi_escapes.default.cursorForward(x2));
};
var up = function(rl, x2) {
  rl.output.write(import_ansi_escapes.default.cursorUp(x2));
};
var down = function(rl, x2) {
  rl.output.write(import_ansi_escapes.default.cursorDown(x2));
};
var clearLine = function(rl, len) {
  rl.output.write(import_ansi_escapes.default.eraseLines(len));
};

// ../../node_modules/inquirer/lib/utils/screen-manager.js
function height(content3) {
  return content3.split("\n").length;
}
function lastLine(content3) {
  return content3.split("\n").pop();
}
var ScreenManager = class {
  constructor(rl) {
    this.height = 0;
    this.extraLinesUnderPrompt = 0;
    this.rl = rl;
  }
  renderWithSpinner(content3, bottomContent) {
    if (this.spinnerId) {
      clearInterval(this.spinnerId);
    }
    let spinner;
    let contentFunc;
    let bottomContentFunc;
    if (bottomContent) {
      spinner = (0, import_ora.default)(bottomContent);
      contentFunc = () => content3;
      bottomContentFunc = () => spinner.frame();
    } else {
      spinner = (0, import_ora.default)(content3);
      contentFunc = () => spinner.frame();
      bottomContentFunc = () => "";
    }
    this.spinnerId = setInterval(
      () => this.render(contentFunc(), bottomContentFunc(), true),
      spinner.interval
    );
  }
  render(content3, bottomContent, spinning = false) {
    if (this.spinnerId && !spinning) {
      clearInterval(this.spinnerId);
    }
    this.rl.output.unmute();
    this.clean(this.extraLinesUnderPrompt);
    const promptLine = lastLine(content3);
    const rawPromptLine = (0, import_strip_ansi2.default)(promptLine);
    let prompt2 = rawPromptLine;
    if (this.rl.line.length > 0) {
      prompt2 = prompt2.slice(0, -this.rl.line.length);
    }
    this.rl.setPrompt(prompt2);
    const cursorPos = this.rl._getCursorPos();
    const width = this.normalizedCliWidth();
    content3 = this.forceLineReturn(content3, width);
    bottomContent && (bottomContent = this.forceLineReturn(bottomContent, width));
    if (rawPromptLine.length % width === 0) {
      content3 += "\n";
    }
    const fullContent = content3 + (bottomContent ? "\n" + bottomContent : "");
    this.rl.output.write(fullContent);
    const promptLineUpDiff = Math.floor(rawPromptLine.length / width) - cursorPos.rows;
    const bottomContentHeight = promptLineUpDiff + (bottomContent ? height(bottomContent) : 0);
    if (bottomContentHeight > 0) {
      up(this.rl, bottomContentHeight);
    }
    left(this.rl, (0, import_string_width.default)(lastLine(fullContent)));
    if (cursorPos.cols > 0) {
      right(this.rl, cursorPos.cols);
    }
    this.extraLinesUnderPrompt = bottomContentHeight;
    this.height = height(fullContent);
    this.rl.output.mute();
  }
  clean(extraLines) {
    if (extraLines > 0) {
      down(this.rl, extraLines);
    }
    clearLine(this.rl, this.height);
  }
  done() {
    this.rl.setPrompt("");
    this.rl.output.unmute();
    this.rl.output.write(`
${import_ansi_escapes2.default.cursorShow}`);
  }
  releaseCursor() {
    if (this.extraLinesUnderPrompt > 0) {
      down(this.rl, this.extraLinesUnderPrompt);
    }
  }
  normalizedCliWidth() {
    const width = (0, import_cli_width.default)({
      defaultWidth: 80,
      output: this.rl.output
    });
    return width;
  }
  /**
   * @param {string[]} lines
   */
  breakLines(lines, width = this.normalizedCliWidth()) {
    return lines.map(
      (line2) => (0, import_wrap_ansi.default)(line2, width, { trim: false, hard: true }).split("\n")
    );
  }
  /**
   * @param {string} content
   */
  forceLineReturn(content3, width = this.normalizedCliWidth()) {
    return this.breakLines(content3.split("\n"), width).flat().join("\n");
  }
};

// ../../node_modules/inquirer/lib/prompts/base.js
var Prompt = class {
  constructor(question, rl, answers) {
    var _a6;
    Object.assign(this, {
      answers,
      status: "pending"
    });
    this.opt = {
      validate: () => true,
      validatingText: "",
      filter: (val) => val,
      filteringText: "",
      when: () => true,
      suffix: "",
      prefix: import_yoctocolors_cjs3.default.green("?"),
      transformer: (val) => val,
      ...question
    };
    if (!this.opt.name) {
      this.throwParamError("name");
    }
    (_a6 = this.opt).message || (_a6.message = this.opt.name + ":");
    if (Array.isArray(this.opt.choices)) {
      this.opt.choices = new Choices(this.opt.choices, answers);
    }
    this.rl = rl;
    this.screen = new ScreenManager(this.rl);
  }
  /**
   * Start the Inquiry session and manage output value filtering
   * @return {Promise}
   */
  run() {
    return new Promise((resolve9, reject) => {
      this._run(
        (value) => resolve9(value),
        (error) => reject(error)
      );
    });
  }
  // Default noop (this one should be overwritten in prompts)
  _run(cb) {
    cb();
  }
  /**
   * Throw an error telling a required parameter is missing
   * @param  {String} name Name of the missing param
   * @return {Throw Error}
   */
  throwParamError(name3) {
    throw new Error("You must provide a `" + name3 + "` parameter");
  }
  /**
   * Called when the UI closes. Override to do any specific cleanup necessary
   */
  close() {
    this.screen.releaseCursor();
  }
  /**
   * Run the provided validation method each time a submit event occur.
   * @param  {Rx.Observable} submit - submit event flow
   * @return {Object}        Object containing two observables: `success` and `error`
   */
  handleSubmitEvents(submit) {
    const validate5 = (0, import_run_async.default)(this.opt.validate);
    const asyncFilter = (0, import_run_async.default)(this.opt.filter);
    const validation = submit.pipe(
      (0, import_rxjs2.mergeMap)((value) => {
        this.startSpinner(value, this.opt.filteringText);
        return asyncFilter(value, this.answers).then(
          (filteredValue) => {
            this.startSpinner(filteredValue, this.opt.validatingText);
            return validate5(filteredValue, this.answers).then(
              (isValid4) => ({ isValid: isValid4, value: filteredValue }),
              (error_) => ({ isValid: error_, value: filteredValue })
            );
          },
          (error_) => ({ isValid: error_ })
        );
      }),
      (0, import_rxjs2.share)()
    );
    const success = validation.pipe(
      (0, import_rxjs2.filter)((state) => state.isValid === true),
      (0, import_rxjs2.take)(1)
    );
    const error = validation.pipe(
      (0, import_rxjs2.filter)((state) => state.isValid !== true),
      (0, import_rxjs2.takeUntil)(success)
    );
    return {
      success,
      error
    };
  }
  startSpinner(value, bottomContent) {
    value = this.getSpinningValue(value);
    const content3 = bottomContent ? this.getQuestion() + value : this.getQuestion().slice(this.opt.prefix.length + 1) + value;
    this.screen.renderWithSpinner(content3, bottomContent);
  }
  /**
   * Allow override, e.g. for password prompts
   * See: https://github.com/SBoudrias/Inquirer.js/issues/1022
   *
   * @return {String} value to display while spinning
   */
  getSpinningValue(value) {
    return value;
  }
  /**
   * Generate the prompt question string
   * @return {String} prompt question string
   */
  getQuestion() {
    let message = (this.opt.prefix ? this.opt.prefix + " " : "") + import_yoctocolors_cjs3.default.bold(this.opt.message) + this.opt.suffix + import_yoctocolors_cjs3.default.reset(" ");
    if (this.opt.default != null && this.status !== "touched" && this.status !== "answered") {
      message += this.opt.type === "password" ? import_yoctocolors_cjs3.default.italic(import_yoctocolors_cjs3.default.dim("[hidden] ")) : import_yoctocolors_cjs3.default.dim("(" + this.opt.default + ") ");
    }
    return message;
  }
};

// ../../node_modules/inquirer/lib/prompts/list.js
var ListPrompt = class extends Prompt {
  constructor(questions, rl, answers) {
    super(questions, rl, answers);
    if (!this.opt.choices) {
      this.throwParamError("choices");
    }
    this.firstRender = true;
    this.selected = 0;
    const def = this.opt.default;
    if (typeof def === "number" && def >= 0 && def < this.opt.choices.realLength) {
      this.selected = def;
    } else if (typeof def !== "number" && def != null) {
      const index4 = this.opt.choices.realChoices.findIndex(({ value }) => value === def);
      this.selected = Math.max(index4, 0);
    }
    this.opt.default = null;
    const shouldLoop = this.opt.loop === void 0 ? true : this.opt.loop;
    this.paginator = new Paginator(this.screen, { isInfinite: shouldLoop });
  }
  /**
   * Start the Inquiry session
   * @param  {Function} cb      Callback when prompt is done
   * @return {this}
   */
  _run(cb) {
    this.done = cb;
    const events = observe(this.rl);
    events.normalizedUpKey.pipe((0, import_rxjs3.takeUntil)(events.line)).forEach(this.onUpKey.bind(this));
    events.normalizedDownKey.pipe((0, import_rxjs3.takeUntil)(events.line)).forEach(this.onDownKey.bind(this));
    events.numberKey.pipe((0, import_rxjs3.takeUntil)(events.line)).forEach(this.onNumberKey.bind(this));
    events.line.pipe(
      (0, import_rxjs3.take)(1),
      (0, import_rxjs3.map)(this.getCurrentValue.bind(this)),
      (0, import_rxjs3.flatMap)(
        (value) => (0, import_run_async2.default)(this.opt.filter)(value, this.answers).catch((error) => error)
      )
    ).forEach(this.onSubmit.bind(this));
    this.render();
    return this;
  }
  /**
   * Render the prompt to screen
   * @return {ListPrompt} self
   */
  render() {
    let message = this.getQuestion();
    if (this.firstRender) {
      message += import_yoctocolors_cjs4.default.dim("(Use arrow keys)");
    }
    if (this.status === "answered") {
      message += import_yoctocolors_cjs4.default.cyan(this.opt.choices.getChoice(this.selected).short);
    } else {
      const choicesStr = listRender(this.opt.choices, this.selected);
      const indexPosition = this.opt.choices.indexOf(
        this.opt.choices.getChoice(this.selected)
      );
      const realIndexPosition = this.opt.choices.reduce((acc, value, i2) => {
        if (i2 > indexPosition) {
          return acc;
        }
        if (value.type === "separator") {
          return acc + 1;
        }
        let l = value.name;
        if (typeof l !== "string") {
          return acc + 1;
        }
        l = l.split("\n");
        return acc + l.length;
      }, 0) - 1;
      message += "\n" + this.paginator.paginate(choicesStr, realIndexPosition, this.opt.pageSize);
    }
    message += import_ansi_escapes3.default.cursorHide;
    this.firstRender = false;
    this.screen.render(message);
  }
  /**
   * When user press `enter` key
   */
  onSubmit(value) {
    this.status = "answered";
    this.render();
    this.screen.done();
    this.done(value);
  }
  getCurrentValue() {
    return this.opt.choices.getChoice(this.selected).value;
  }
  /**
   * When user press a key
   */
  onUpKey() {
    this.selected = incrementListIndex(this.selected, "up", this.opt);
    this.render();
  }
  onDownKey() {
    this.selected = incrementListIndex(this.selected, "down", this.opt);
    this.render();
  }
  onNumberKey(input3) {
    if (input3 <= this.opt.choices.realLength) {
      this.selected = input3 - 1;
    }
    this.render();
  }
};
function listRender(choices, pointer) {
  let output2 = "";
  let separatorOffset = 0;
  choices.forEach((choice, i2) => {
    if (choice.type === "separator") {
      separatorOffset++;
      output2 += "  " + choice + "\n";
      return;
    }
    if (choice.disabled) {
      separatorOffset++;
      output2 += "  - " + choice.name;
      output2 += ` (${typeof choice.disabled === "string" ? choice.disabled : "Disabled"})`;
      output2 += "\n";
      return;
    }
    const isSelected = i2 - separatorOffset === pointer;
    let line2 = (isSelected ? esm_default.pointer + " " : "  ") + choice.name;
    if (isSelected) {
      line2 = import_yoctocolors_cjs4.default.cyan(line2);
    }
    output2 += line2 + " \n";
  });
  return output2.replaceAll(/\n$/g, "");
}

// ../../node_modules/inquirer/lib/prompts/input.js
var import_yoctocolors_cjs5 = __toESM(require_yoctocolors_cjs(), 1);
var import_rxjs4 = __toESM(require_cjs3(), 1);
var InputPrompt = class extends Prompt {
  /**
   * Start the Inquiry session
   * @param  {Function} cb      Callback when prompt is done
   * @return {this}
   */
  _run(cb) {
    this.done = cb;
    const events = observe(this.rl);
    const submit = events.line.pipe((0, import_rxjs4.map)(this.filterInput.bind(this)));
    const validation = this.handleSubmitEvents(submit);
    validation.success.forEach(this.onEnd.bind(this));
    validation.error.forEach(this.onError.bind(this));
    events.keypress.pipe((0, import_rxjs4.takeUntil)(validation.success)).forEach(this.onKeypress.bind(this));
    this.render();
    return this;
  }
  /**
   * Render the prompt to screen
   * @return {InputPrompt} self
   */
  render(error) {
    let bottomContent = "";
    let appendContent = "";
    let message = this.getQuestion();
    const { transformer } = this.opt;
    const isFinal = this.status === "answered";
    appendContent = isFinal ? this.answer : this.rl.line;
    if (transformer) {
      message += transformer(appendContent, this.answers, { isFinal });
    } else {
      message += isFinal ? import_yoctocolors_cjs5.default.cyan(appendContent) : appendContent;
    }
    if (error) {
      bottomContent = import_yoctocolors_cjs5.default.red(">> ") + error;
    }
    this.screen.render(message, bottomContent);
  }
  /**
   * When user press `enter` key
   */
  filterInput(input3) {
    if (!input3) {
      return this.opt.default == null ? "" : this.opt.default;
    }
    return input3;
  }
  onEnd(state) {
    this.answer = state.value;
    this.status = "answered";
    this.render();
    this.screen.done();
    this.done(state.value);
  }
  onError({ value = "", isValid: isValid4 }) {
    this.rl.line += value;
    this.rl.cursor += value.length;
    this.render(isValid4);
  }
  /**
   * When user press a key
   */
  onKeypress() {
    this.status = "touched";
    this.render();
  }
};

// ../../node_modules/inquirer/lib/prompts/number.js
var NumberPrompt = class extends InputPrompt {
  filterInput(input3) {
    if (input3 && typeof input3 === "string") {
      input3 = input3.trim();
      const numberMatch = input3.match(/(^-?\d+|^-?\d+\.\d*|^\d*\.\d+)(e\d+)?$/);
      if (numberMatch) {
        return Number(numberMatch[0]);
      }
    }
    return this.opt.default == null ? Number.NaN : this.opt.default;
  }
};

// ../../node_modules/inquirer/lib/prompts/confirm.js
var import_yoctocolors_cjs6 = __toESM(require_yoctocolors_cjs(), 1);
var import_rxjs5 = __toESM(require_cjs3(), 1);
var ConfirmPrompt = class extends Prompt {
  constructor(questions, rl, answers) {
    super(questions, rl, answers);
    let rawDefault = true;
    Object.assign(this.opt, {
      filter(input3) {
        if (input3 != null && input3 !== "") {
          if (/^y(es)?/i.test(input3)) return true;
          if (/^n(o)?/i.test(input3)) return false;
        }
        return rawDefault;
      }
    });
    if (this.opt.default != null) {
      rawDefault = Boolean(this.opt.default);
    }
    this.opt.default = rawDefault ? "Y/n" : "y/N";
  }
  /**
   * Start the Inquiry session
   * @param  {Function} cb   Callback when prompt is done
   * @return {this}
   */
  _run(cb) {
    this.done = cb;
    const events = observe(this.rl);
    events.keypress.pipe((0, import_rxjs5.takeUntil)(events.line)).forEach(this.onKeypress.bind(this));
    events.line.pipe((0, import_rxjs5.take)(1)).forEach(this.onEnd.bind(this));
    this.render();
    return this;
  }
  /**
   * Render the prompt to screen
   * @return {ConfirmPrompt} self
   */
  render(answer) {
    let message = this.getQuestion();
    if (typeof answer === "boolean") {
      message += import_yoctocolors_cjs6.default.cyan(answer ? "Yes" : "No");
    } else if (answer) {
      message += answer;
    } else {
      message += this.rl.line;
    }
    this.screen.render(message);
    return this;
  }
  /**
   * When user press `enter` key
   */
  onEnd(input3) {
    this.status = "answered";
    let output2 = this.opt.filter(input3);
    if (this.opt.transformer) {
      output2 = this.opt.transformer(output2);
    }
    this.render(output2);
    this.screen.done();
    this.done(output2);
  }
  /**
   * When user press a key
   */
  onKeypress() {
    this.render();
  }
};

// ../../node_modules/inquirer/lib/prompts/rawlist.js
var import_yoctocolors_cjs7 = __toESM(require_yoctocolors_cjs(), 1);
var import_rxjs6 = __toESM(require_cjs3(), 1);
var RawListPrompt = class extends Prompt {
  constructor(questions, rl, answers) {
    super(questions, rl, answers);
    this.hiddenLine = "";
    this.lastKey = "";
    if (!this.opt.choices) {
      this.throwParamError("choices");
    }
    this.opt.validChoices = this.opt.choices.filter(Separator.exclude);
    this.selected = 0;
    this.rawDefault = 0;
    Object.assign(this.opt, {
      validate(val) {
        return val != null;
      }
    });
    const def = this.opt.default;
    if (typeof def === "number" && def >= 0 && def < this.opt.choices.realLength) {
      this.selected = def;
      this.rawDefault = def;
    } else if (typeof def !== "number" && def != null) {
      const index4 = this.opt.choices.realChoices.findIndex(({ value }) => value === def);
      const safeIndex = Math.max(index4, 0);
      this.selected = safeIndex;
      this.rawDefault = safeIndex;
    }
    this.opt.default = null;
    const shouldLoop = this.opt.loop === void 0 ? true : this.opt.loop;
    this.paginator = new Paginator(void 0, { isInfinite: shouldLoop });
  }
  /**
   * Start the Inquiry session
   * @param  {Function} cb      Callback when prompt is done
   * @return {this}
   */
  _run(cb) {
    this.done = cb;
    const events = observe(this.rl);
    const submit = events.line.pipe((0, import_rxjs6.map)(this.getCurrentValue.bind(this)));
    const validation = this.handleSubmitEvents(submit);
    validation.success.forEach(this.onEnd.bind(this));
    validation.error.forEach(this.onError.bind(this));
    events.normalizedUpKey.pipe((0, import_rxjs6.takeUntil)(validation.success)).forEach(this.onUpKey.bind(this));
    events.normalizedDownKey.pipe((0, import_rxjs6.takeUntil)(validation.success)).forEach(this.onDownKey.bind(this));
    events.keypress.pipe((0, import_rxjs6.takeUntil)(validation.success)).forEach(this.onKeypress.bind(this));
    this.render();
    return this;
  }
  /**
   * Render the prompt to screen
   * @return {RawListPrompt} self
   */
  render(error) {
    let message = this.getQuestion();
    let bottomContent = "";
    if (this.status === "answered") {
      message += import_yoctocolors_cjs7.default.cyan(this.opt.choices.getChoice(this.selected).short);
    } else {
      const choicesStr = renderChoices(this.opt.choices, this.selected);
      message += "\n" + this.paginator.paginate(choicesStr, this.selected, this.opt.pageSize);
      message += "\n  Answer: ";
    }
    message += this.rl.line;
    if (error) {
      bottomContent = "\n" + import_yoctocolors_cjs7.default.red(">> ") + error;
    }
    this.screen.render(message, bottomContent);
  }
  /**
   * When user press `enter` key
   */
  getCurrentValue(index4) {
    if (index4 == null) {
      index4 = this.rawDefault;
    } else if (index4 === "") {
      this.selected = this.selected === void 0 ? -1 : this.selected;
      index4 = this.selected;
    } else {
      index4 -= 1;
    }
    const choice = this.opt.choices.getChoice(index4);
    return choice ? choice.value : null;
  }
  onEnd(state) {
    this.status = "answered";
    this.answer = state.value;
    this.render();
    this.screen.done();
    this.done(state.value);
  }
  onError() {
    this.render("Please enter a valid index");
  }
  /**
   * When user press a key
   */
  onKeypress() {
    let index4;
    if (this.lastKey === "arrow") {
      index4 = this.hiddenLine.length > 0 ? Number(this.hiddenLine) - 1 : 0;
    } else {
      index4 = this.rl.line.length > 0 ? Number(this.rl.line) - 1 : 0;
    }
    this.lastKey = "";
    this.selected = this.opt.choices.getChoice(index4) ? index4 : void 0;
    this.render();
  }
  /**
   * When user press up key
   */
  onUpKey() {
    this.onArrowKey("up");
  }
  /**
   * When user press down key
   */
  onDownKey() {
    this.onArrowKey("down");
  }
  /**
   * When user press up or down key
   * @param {String} type Arrow type: up or down
   */
  onArrowKey(type2) {
    this.selected = incrementListIndex(this.selected, type2, this.opt) || 0;
    this.hiddenLine = String(this.selected + 1);
    this.rl.line = "";
    this.lastKey = "arrow";
  }
};
function renderChoices(choices, pointer) {
  let output2 = "";
  let separatorOffset = 0;
  choices.forEach((choice, i2) => {
    output2 += output2 ? "\n  " : "  ";
    if (choice.type === "separator") {
      separatorOffset++;
      output2 += " " + choice;
      return;
    }
    const index4 = i2 - separatorOffset;
    let display = index4 + 1 + ") " + choice.name;
    if (index4 === pointer) {
      display = import_yoctocolors_cjs7.default.cyan(display);
    }
    output2 += display;
  });
  return output2;
}

// ../../node_modules/inquirer/lib/prompts/expand.js
var import_yoctocolors_cjs8 = __toESM(require_yoctocolors_cjs(), 1);
var import_rxjs7 = __toESM(require_cjs3(), 1);
var ExpandPrompt = class extends Prompt {
  constructor(questions, rl, answers) {
    super(questions, rl, answers);
    if (!this.opt.choices) {
      this.throwParamError("choices");
    }
    this.validateChoices(this.opt.choices);
    this.opt.choices.push({
      key: "h",
      name: "Help, list all options",
      value: "help"
    });
    this.opt.validate = (choice) => {
      if (choice == null) {
        return "Please enter a valid command";
      }
      return choice !== "help";
    };
    this.opt.default = this.generateChoicesString(this.opt.choices, this.opt.default);
    this.paginator = new Paginator(this.screen);
  }
  /**
   * Start the Inquiry session
   * @param  {Function} cb      Callback when prompt is done
   * @return {this}
   */
  _run(cb) {
    this.done = cb;
    const events = observe(this.rl);
    const validation = this.handleSubmitEvents(
      events.line.pipe((0, import_rxjs7.map)(this.getCurrentValue.bind(this)))
    );
    validation.success.forEach(this.onSubmit.bind(this));
    validation.error.forEach(this.onError.bind(this));
    this.keypressObs = events.keypress.pipe((0, import_rxjs7.takeUntil)(validation.success)).forEach(this.onKeypress.bind(this));
    this.render();
    return this;
  }
  /**
   * Render the prompt to screen
   * @return {ExpandPrompt} self
   */
  render(error, hint) {
    let message = this.getQuestion();
    let bottomContent = "";
    if (this.status === "answered") {
      message += import_yoctocolors_cjs8.default.cyan(this.answer);
    } else if (this.status === "expanded") {
      const choicesStr = renderChoices2(this.opt.choices, this.selectedKey);
      message += this.paginator.paginate(choicesStr, this.selectedKey, this.opt.pageSize);
      message += "\n  Answer: ";
    }
    message += this.rl.line;
    if (error) {
      bottomContent = import_yoctocolors_cjs8.default.red(">> ") + error;
    }
    if (hint) {
      bottomContent = import_yoctocolors_cjs8.default.cyan(">> ") + hint;
    }
    this.screen.render(message, bottomContent);
  }
  getCurrentValue(input3) {
    input3 || (input3 = this.rawDefault);
    const selected = this.opt.choices.where({ key: input3.toLowerCase().trim() })[0];
    if (!selected) {
      return null;
    }
    return selected.value;
  }
  /**
   * Generate the prompt choices string
   * @return {String}  Choices string
   */
  getChoices() {
    let output2 = "";
    this.opt.choices.forEach((choice) => {
      output2 += "\n  ";
      if (choice.type === "separator") {
        output2 += " " + choice;
        return;
      }
      let choiceStr = choice.key + ") " + choice.name;
      if (this.selectedKey === choice.key) {
        choiceStr = import_yoctocolors_cjs8.default.cyan(choiceStr);
      }
      output2 += choiceStr;
    });
    return output2;
  }
  onError(state) {
    if (state.value === "help") {
      this.selectedKey = "";
      this.status = "expanded";
      this.render();
      return;
    }
    this.render(state.isValid);
  }
  /**
   * When user press `enter` key
   */
  onSubmit(state) {
    this.status = "answered";
    const choice = this.opt.choices.where({ value: state.value })[0];
    this.answer = choice.short || choice.name;
    this.render();
    this.screen.done();
    this.done(state.value);
  }
  /**
   * When user press a key
   */
  onKeypress() {
    this.selectedKey = this.rl.line.toLowerCase();
    const selected = this.opt.choices.where({ key: this.selectedKey })[0];
    if (this.status === "expanded") {
      this.render();
    } else {
      this.render(null, selected ? selected.name : null);
    }
  }
  /**
   * Validate the choices
   * @param {Array} choices
   */
  validateChoices(choices) {
    let formatError2;
    const errors4 = [];
    const keymap = {};
    choices.filter(Separator.exclude).forEach((choice) => {
      if (!choice.key || choice.key.length !== 1) {
        formatError2 = true;
      }
      choice.key = String(choice.key).toLowerCase();
      if (keymap[choice.key]) {
        errors4.push(choice.key);
      }
      keymap[choice.key] = true;
    });
    if (formatError2) {
      throw new Error(
        "Format error: `key` param must be a single letter and is required."
      );
    }
    if (keymap.h) {
      throw new Error(
        "Reserved key error: `key` param cannot be `h` - this value is reserved."
      );
    }
    if (errors4.length > 0) {
      throw new Error(
        "Duplicate key error: `key` param must be unique. Duplicates: " + [...new Set(errors4)].join(",")
      );
    }
  }
  /**
   * Generate a string out of the choices keys
   * @param  {Array}  choices
   * @param  {Number|String} default - the choice index or name to capitalize
   * @return {String} The rendered choices key string
   */
  generateChoicesString(choices, defaultChoice) {
    let defIndex = choices.realLength - 1;
    if (typeof defaultChoice === "number" && this.opt.choices.getChoice(defaultChoice)) {
      defIndex = defaultChoice;
    } else if (typeof defaultChoice === "string") {
      const index4 = choices.realChoices.findIndex(({ value }) => value === defaultChoice);
      defIndex = index4 === -1 ? defIndex : index4;
    }
    const defStr = this.opt.choices.pluck("key");
    this.rawDefault = defStr[defIndex];
    defStr[defIndex] = String(defStr[defIndex]).toUpperCase();
    return defStr.join("");
  }
};
function renderChoices2(choices, pointer) {
  let output2 = "";
  choices.forEach((choice) => {
    output2 += "\n  ";
    if (choice.type === "separator") {
      output2 += " " + choice;
      return;
    }
    let choiceStr = choice.key + ") " + choice.name;
    if (pointer === choice.key) {
      choiceStr = import_yoctocolors_cjs8.default.cyan(choiceStr);
    }
    output2 += choiceStr;
  });
  return output2;
}

// ../../node_modules/inquirer/lib/prompts/checkbox.js
var import_ansi_escapes4 = __toESM(require_ansi_escapes(), 1);
var import_yoctocolors_cjs9 = __toESM(require_yoctocolors_cjs(), 1);
var import_rxjs8 = __toESM(require_cjs3(), 1);
var CheckboxPrompt = class extends Prompt {
  constructor(questions, rl, answers) {
    super(questions, rl, answers);
    if (!this.opt.choices) {
      this.throwParamError("choices");
    }
    if (Array.isArray(this.opt.default)) {
      for (const choice of this.opt.choices) {
        if (this.opt.default.includes(choice.value)) {
          choice.checked = true;
        }
      }
    }
    this.pointer = 0;
    this.opt.default = null;
    const shouldLoop = this.opt.loop === void 0 ? true : this.opt.loop;
    this.paginator = new Paginator(this.screen, { isInfinite: shouldLoop });
  }
  /**
   * Start the Inquiry session
   * @param  {Function} cb      Callback when prompt is done
   * @return {this}
   */
  _run(cb) {
    this.done = cb;
    const events = observe(this.rl);
    const validation = this.handleSubmitEvents(
      events.line.pipe((0, import_rxjs8.map)(this.getCurrentValue.bind(this)))
    );
    validation.success.forEach(this.onEnd.bind(this));
    validation.error.forEach(this.onError.bind(this));
    events.normalizedUpKey.pipe((0, import_rxjs8.takeUntil)(validation.success)).forEach(this.onUpKey.bind(this));
    events.normalizedDownKey.pipe((0, import_rxjs8.takeUntil)(validation.success)).forEach(this.onDownKey.bind(this));
    events.numberKey.pipe((0, import_rxjs8.takeUntil)(validation.success)).forEach(this.onNumberKey.bind(this));
    events.spaceKey.pipe((0, import_rxjs8.takeUntil)(validation.success)).forEach(this.onSpaceKey.bind(this));
    events.aKey.pipe((0, import_rxjs8.takeUntil)(validation.success)).forEach(this.onAllKey.bind(this));
    events.iKey.pipe((0, import_rxjs8.takeUntil)(validation.success)).forEach(this.onInverseKey.bind(this));
    this.render();
    this.firstRender = false;
    return this;
  }
  /**
   * Render the prompt to screen
   * @return {CheckboxPrompt} self
   */
  render(error) {
    let message = this.getQuestion();
    let bottomContent = "";
    if (!this.dontShowHints) {
      message += "(Press " + import_yoctocolors_cjs9.default.cyan(import_yoctocolors_cjs9.default.bold("<space>")) + " to select, " + import_yoctocolors_cjs9.default.cyan(import_yoctocolors_cjs9.default.bold("<a>")) + " to toggle all, " + import_yoctocolors_cjs9.default.cyan(import_yoctocolors_cjs9.default.bold("<i>")) + " to invert selection, and " + import_yoctocolors_cjs9.default.cyan(import_yoctocolors_cjs9.default.bold("<enter>")) + " to proceed)";
    }
    if (this.status === "answered") {
      message += import_yoctocolors_cjs9.default.cyan(this.selection.join(", "));
    } else {
      const choicesStr = renderChoices3(this.opt.choices, this.pointer);
      const indexPosition = this.opt.choices.indexOf(
        this.opt.choices.getChoice(this.pointer)
      );
      const realIndexPosition = this.opt.choices.reduce((acc, value, i2) => {
        if (i2 > indexPosition) {
          return acc;
        }
        if (value.type === "separator") {
          return acc + 1;
        }
        let l = value.name;
        if (typeof l !== "string") {
          return acc + 1;
        }
        l = l.split("\n");
        return acc + l.length;
      }, 0) - 1;
      message += "\n" + this.paginator.paginate(choicesStr, realIndexPosition, this.opt.pageSize);
    }
    if (error) {
      bottomContent = import_yoctocolors_cjs9.default.red(">> ") + error;
    }
    message += import_ansi_escapes4.default.cursorHide;
    this.screen.render(message, bottomContent);
  }
  /**
   * When user press `enter` key
   */
  onEnd(state) {
    this.status = "answered";
    this.dontShowHints = true;
    this.render();
    this.screen.done();
    this.done(state.value);
  }
  onError(state) {
    this.render(state.isValid);
  }
  getCurrentValue() {
    const choices = this.opt.choices.filter(
      (choice) => Boolean(choice.checked) && !choice.disabled
    );
    this.selection = choices.map((choice) => choice.short);
    return choices.map((choice) => choice.value);
  }
  onUpKey() {
    this.pointer = incrementListIndex(this.pointer, "up", this.opt);
    this.render();
  }
  onDownKey() {
    this.pointer = incrementListIndex(this.pointer, "down", this.opt);
    this.render();
  }
  onNumberKey(input3) {
    if (input3 <= this.opt.choices.realLength) {
      this.pointer = input3 - 1;
      this.toggleChoice(this.pointer);
    }
    this.render();
  }
  onSpaceKey() {
    this.toggleChoice(this.pointer);
    this.render();
  }
  onAllKey() {
    const shouldBeChecked = this.opt.choices.some(
      (choice) => choice.type !== "separator" && !choice.checked
    );
    this.opt.choices.forEach((choice) => {
      if (choice.type !== "separator") {
        choice.checked = shouldBeChecked;
      }
    });
    this.render();
  }
  onInverseKey() {
    this.opt.choices.forEach((choice) => {
      if (choice.type !== "separator") {
        choice.checked = !choice.checked;
      }
    });
    this.render();
  }
  toggleChoice(index4) {
    const item = this.opt.choices.getChoice(index4);
    if (item !== void 0) {
      this.opt.choices.getChoice(index4).checked = !item.checked;
    }
  }
};
function renderChoices3(choices, pointer) {
  let output2 = "";
  let separatorOffset = 0;
  choices.forEach((choice, i2) => {
    if (choice.type === "separator") {
      separatorOffset++;
      output2 += " " + choice + "\n";
      return;
    }
    if (choice.disabled) {
      separatorOffset++;
      output2 += " - " + choice.name;
      output2 += ` (${typeof choice.disabled === "string" ? choice.disabled : "Disabled"})`;
    } else {
      const line2 = getCheckbox(choice.checked) + " " + choice.name;
      output2 += i2 - separatorOffset === pointer ? import_yoctocolors_cjs9.default.cyan(esm_default.pointer + line2) : " " + line2;
    }
    output2 += "\n";
  });
  return output2.replaceAll(/\n$/g, "");
}
function getCheckbox(checked2) {
  return checked2 ? import_yoctocolors_cjs9.default.green(esm_default.radioOn) : esm_default.radioOff;
}

// ../../node_modules/inquirer/lib/prompts/password.js
var import_yoctocolors_cjs10 = __toESM(require_yoctocolors_cjs(), 1);
var import_rxjs9 = __toESM(require_cjs3(), 1);
function mask(input3, maskChar) {
  input3 = String(input3);
  maskChar = typeof maskChar === "string" ? maskChar : "*";
  if (input3.length === 0) {
    return "";
  }
  return Array.from({ length: input3.length + 1 }).join(maskChar);
}
var PasswordPrompt = class extends Prompt {
  /**
   * Start the Inquiry session
   * @param  {Function} cb      Callback when prompt is done
   * @return {this}
   */
  _run(cb) {
    this.done = cb;
    const events = observe(this.rl);
    const submit = events.line.pipe((0, import_rxjs9.map)(this.filterInput.bind(this)));
    const validation = this.handleSubmitEvents(submit);
    validation.success.forEach(this.onEnd.bind(this));
    validation.error.forEach(this.onError.bind(this));
    events.keypress.pipe((0, import_rxjs9.takeUntil)(validation.success)).forEach(this.onKeypress.bind(this));
    this.render();
    return this;
  }
  /**
   * Render the prompt to screen
   * @return {PasswordPrompt} self
   */
  render(error) {
    let message = this.getQuestion();
    let bottomContent = "";
    message += this.status === "answered" ? this.getMaskedValue(this.answer) : this.getMaskedValue(this.rl.line || "");
    if (error) {
      bottomContent = "\n" + import_yoctocolors_cjs10.default.red(">> ") + error;
    }
    this.screen.render(message, bottomContent);
  }
  getMaskedValue(value) {
    if (this.status === "answered") {
      return this.opt.mask ? import_yoctocolors_cjs10.default.cyan(mask(value, this.opt.mask)) : import_yoctocolors_cjs10.default.italic(import_yoctocolors_cjs10.default.dim("[hidden]"));
    }
    return this.opt.mask ? mask(value, this.opt.mask) : import_yoctocolors_cjs10.default.italic(import_yoctocolors_cjs10.default.dim("[input is hidden] "));
  }
  /**
   * Mask value during async filter/validation.
   */
  getSpinningValue(value) {
    return this.getMaskedValue(value);
  }
  /**
   * When user press `enter` key
   */
  filterInput(input3) {
    if (!input3) {
      return this.opt.default == null ? "" : this.opt.default;
    }
    return input3;
  }
  onEnd(state) {
    this.status = "answered";
    this.answer = state.value;
    this.render();
    this.screen.done();
    this.done(state.value);
  }
  onError(state) {
    this.render(state.isValid);
  }
  onKeypress() {
    var _a6;
    (_a6 = this.opt).default && (_a6.default = void 0);
    this.render();
  }
};

// ../../node_modules/inquirer/lib/prompts/editor.js
var import_yoctocolors_cjs11 = __toESM(require_yoctocolors_cjs(), 1);

// ../../node_modules/@inquirer/external-editor/dist/esm/index.js
var import_chardet = __toESM(require_lib24(), 1);
var import_child_process2 = require("child_process");
var import_fs3 = require("fs");
var import_node_path59 = __toESM(require("path"), 1);
var import_node_os5 = __toESM(require("os"), 1);
var import_node_crypto6 = require("crypto");
var import_iconv_lite = __toESM(require_lib25(), 1);

// ../../node_modules/@inquirer/external-editor/dist/esm/errors/CreateFileError.js
var CreateFileError = class extends Error {
  originalError;
  constructor(originalError) {
    super(`Failed to create temporary file. ${originalError.message}`);
    this.originalError = originalError;
  }
};

// ../../node_modules/@inquirer/external-editor/dist/esm/errors/LaunchEditorError.js
var LaunchEditorError = class extends Error {
  originalError;
  constructor(originalError) {
    super(`Failed to launch editor. ${originalError.message}`);
    this.originalError = originalError;
  }
};

// ../../node_modules/@inquirer/external-editor/dist/esm/errors/ReadFileError.js
var ReadFileError = class extends Error {
  originalError;
  constructor(originalError) {
    super(`Failed to read temporary file. ${originalError.message}`);
    this.originalError = originalError;
  }
};

// ../../node_modules/@inquirer/external-editor/dist/esm/errors/RemoveFileError.js
var RemoveFileError = class extends Error {
  originalError;
  constructor(originalError) {
    super(`Failed to remove temporary file. ${originalError.message}`);
    this.originalError = originalError;
  }
};

// ../../node_modules/@inquirer/external-editor/dist/esm/index.js
function editAsync(text7 = "", callback, fileOptions) {
  const editor = new ExternalEditor(text7, fileOptions);
  editor.runAsync((err, result) => {
    if (err) {
      setImmediate(callback, err, void 0);
    } else {
      try {
        editor.cleanup();
        setImmediate(callback, void 0, result);
      } catch (cleanupError) {
        setImmediate(callback, cleanupError, void 0);
      }
    }
  });
}
function sanitizeAffix(affix) {
  if (!affix)
    return "";
  return affix.replace(/[^a-zA-Z0-9_.-]/g, "_");
}
function splitStringBySpace(str2) {
  const pieces = [];
  let currentString = "";
  for (let strIndex = 0; strIndex < str2.length; strIndex++) {
    const currentLetter = str2.charAt(strIndex);
    if (strIndex > 0 && currentLetter === " " && str2[strIndex - 1] !== "\\" && currentString.length > 0) {
      pieces.push(currentString);
      currentString = "";
    } else {
      currentString = `${currentString}${currentLetter}`;
    }
  }
  if (currentString.length > 0) {
    pieces.push(currentString);
  }
  return pieces;
}
var ExternalEditor = class {
  text = "";
  tempFile;
  editor;
  lastExitStatus = 0;
  fileOptions = {};
  get temp_file() {
    console.log("DEPRECATED: temp_file. Use tempFile moving forward.");
    return this.tempFile;
  }
  get last_exit_status() {
    console.log("DEPRECATED: last_exit_status. Use lastExitStatus moving forward.");
    return this.lastExitStatus;
  }
  constructor(text7 = "", fileOptions) {
    this.text = text7;
    if (fileOptions) {
      this.fileOptions = fileOptions;
    }
    this.determineEditor();
    this.createTemporaryFile();
  }
  run() {
    this.launchEditor();
    this.readTemporaryFile();
    return this.text;
  }
  runAsync(callback) {
    try {
      this.launchEditorAsync(() => {
        try {
          this.readTemporaryFile();
          setImmediate(callback, void 0, this.text);
        } catch (readError) {
          setImmediate(callback, readError, void 0);
        }
      });
    } catch (launchError) {
      setImmediate(callback, launchError, void 0);
    }
  }
  cleanup() {
    this.removeTemporaryFile();
  }
  determineEditor() {
    const editor = process.env["VISUAL"] ? process.env["VISUAL"] : process.env["EDITOR"] ? process.env["EDITOR"] : process.platform.startsWith("win") ? "notepad" : "vim";
    const editorOpts = splitStringBySpace(editor).map((piece) => piece.replace("\\ ", " "));
    const bin2 = editorOpts.shift();
    this.editor = { args: editorOpts, bin: bin2 };
  }
  createTemporaryFile() {
    try {
      const baseDir = this.fileOptions.dir ?? import_node_os5.default.tmpdir();
      const id = (0, import_node_crypto6.randomUUID)();
      const prefix2 = sanitizeAffix(this.fileOptions.prefix);
      const postfix = sanitizeAffix(this.fileOptions.postfix);
      const filename = `${prefix2}${id}${postfix}`;
      const candidate = import_node_path59.default.resolve(baseDir, filename);
      const baseResolved = import_node_path59.default.resolve(baseDir) + import_node_path59.default.sep;
      if (!candidate.startsWith(baseResolved)) {
        throw new Error("Resolved temporary file escaped the base directory");
      }
      this.tempFile = candidate;
      const opt = { encoding: "utf8", flag: "wx" };
      if (Object.prototype.hasOwnProperty.call(this.fileOptions, "mode")) {
        opt.mode = this.fileOptions.mode;
      }
      (0, import_fs3.writeFileSync)(this.tempFile, this.text, opt);
    } catch (createFileError) {
      throw new CreateFileError(createFileError);
    }
  }
  readTemporaryFile() {
    try {
      const tempFileBuffer = (0, import_fs3.readFileSync)(this.tempFile);
      if (tempFileBuffer.length === 0) {
        this.text = "";
      } else {
        let encoding = (0, import_chardet.detect)(tempFileBuffer) ?? "utf8";
        if (!import_iconv_lite.default.encodingExists(encoding)) {
          encoding = "utf8";
        }
        this.text = import_iconv_lite.default.decode(tempFileBuffer, encoding);
      }
    } catch (readFileError) {
      throw new ReadFileError(readFileError);
    }
  }
  removeTemporaryFile() {
    try {
      (0, import_fs3.unlinkSync)(this.tempFile);
    } catch (removeFileError) {
      throw new RemoveFileError(removeFileError);
    }
  }
  launchEditor() {
    try {
      const editorProcess = (0, import_child_process2.spawnSync)(this.editor.bin, this.editor.args.concat([this.tempFile]), { stdio: "inherit" });
      this.lastExitStatus = editorProcess.status ?? 0;
    } catch (launchError) {
      throw new LaunchEditorError(launchError);
    }
  }
  launchEditorAsync(callback) {
    try {
      const editorProcess = (0, import_child_process2.spawn)(this.editor.bin, this.editor.args.concat([this.tempFile]), { stdio: "inherit" });
      editorProcess.on("exit", (code7) => {
        this.lastExitStatus = code7;
        setImmediate(callback);
      });
    } catch (launchError) {
      throw new LaunchEditorError(launchError);
    }
  }
};

// ../../node_modules/inquirer/lib/prompts/editor.js
var import_rxjs10 = __toESM(require_cjs3(), 1);
var EditorPrompt = class extends Prompt {
  /**
   * Start the Inquiry session
   * @param  {Function} cb      Callback when prompt is done
   * @return {this}
   */
  _run(cb) {
    this.done = cb;
    this.editorResult = new import_rxjs10.Subject();
    const events = observe(this.rl);
    this.lineSubscription = events.line.subscribe(this.startExternalEditor.bind(this));
    const waitUserInput = this.opt.waitUserInput === void 0 ? true : this.opt.waitUserInput;
    const validation = this.handleSubmitEvents(this.editorResult);
    validation.success.forEach(this.onEnd.bind(this));
    validation.error.forEach(this.onError.bind(this));
    this.currentText = this.opt.default;
    this.opt.default = null;
    if (waitUserInput) {
      this.render();
    } else {
      this.startExternalEditor();
    }
    return this;
  }
  /**
   * Render the prompt to screen
   * @return {EditorPrompt} self
   */
  render(error) {
    let bottomContent = "";
    let message = this.getQuestion();
    message += this.status === "answered" ? import_yoctocolors_cjs11.default.dim("Received") : import_yoctocolors_cjs11.default.dim("Press <enter> to launch your preferred editor.");
    if (error) {
      bottomContent = import_yoctocolors_cjs11.default.red(">> ") + error;
    }
    this.screen.render(message, bottomContent);
  }
  /**
   * Launch $EDITOR on user press enter
   */
  startExternalEditor() {
    this.rl.pause();
    editAsync(this.currentText, this.endExternalEditor.bind(this), {
      postfix: this.opt.postfix ?? ".txt"
    });
  }
  endExternalEditor(error, result) {
    this.rl.resume();
    if (error) {
      this.editorResult.error(error);
    } else {
      this.editorResult.next(result);
    }
  }
  onEnd(state) {
    this.editorResult.unsubscribe();
    this.lineSubscription.unsubscribe();
    this.answer = state.value;
    this.status = "answered";
    this.render();
    this.screen.done();
    this.done(this.answer);
  }
  onError(state) {
    this.render(state.isValid);
  }
};

// ../../node_modules/inquirer/lib/ui/bottom-bar.js
var import_node_stream4 = require("stream");

// ../../node_modules/inquirer/lib/ui/baseUI.js
var import_node_readline = __toESM(require("readline"), 1);
var import_mute_stream = __toESM(require_lib26(), 1);
var UI = class {
  constructor(opt) {
    this.rl || (this.rl = import_node_readline.default.createInterface(setupReadlineOptions(opt)));
    this.rl.resume();
    this.onForceClose = this.onForceClose.bind(this);
    process.on("exit", this.onForceClose);
    this.rl.on("SIGINT", this.onForceClose);
  }
  /**
   * Handle the ^C exit
   * @return {null}
   */
  onForceClose() {
    this.close();
    process.kill(process.pid, "SIGINT");
    console.log("");
  }
  /**
   * Close the interface and cleanup listeners
   */
  close() {
    this.rl.removeListener("SIGINT", this.onForceClose);
    process.removeListener("exit", this.onForceClose);
    this.rl.output.unmute();
    if (this.activePrompt && typeof this.activePrompt.close === "function") {
      this.activePrompt.close();
    }
    this.rl.output.end();
    this.rl.pause();
    this.rl.close();
  }
};
function setupReadlineOptions(opt = {}) {
  opt.skipTTYChecks = opt.skipTTYChecks === void 0 ? true : opt.skipTTYChecks;
  const input3 = opt.input || process.stdin;
  if (!opt.skipTTYChecks && !input3.isTTY) {
    const nonTtyError = new Error(
      "Prompts can not be meaningfully rendered in non-TTY environments"
    );
    nonTtyError.isTtyError = true;
    throw nonTtyError;
  }
  const ms = new import_mute_stream.default();
  ms.pipe(opt.output || process.stdout);
  const output2 = ms;
  return {
    terminal: true,
    ...opt,
    input: input3,
    output: output2
  };
}

// ../../node_modules/inquirer/lib/ui/bottom-bar.js
var BottomBar = class extends UI {
  constructor(opt = {}) {
    super(opt);
    this.log = new import_node_stream4.Writable({
      write: (chunk, encoding, cb) => {
        this.writeLog(chunk);
        cb();
      }
    });
    this.bottomBar = opt.bottomBar || "";
    this.render();
  }
  /**
   * Render the prompt to screen
   * @return {BottomBar} self
   */
  render() {
    this.write(this.bottomBar);
    return this;
  }
  clean() {
    clearLine(this.rl, this.bottomBar.split("\n").length);
    return this;
  }
  /**
   * Update the bottom bar content and rerender
   * @param  {String} bottomBar Bottom bar content
   * @return {BottomBar}           self
   */
  updateBottomBar(bottomBar) {
    clearLine(this.rl, 1);
    this.rl.output.unmute();
    this.clean();
    this.bottomBar = bottomBar;
    this.render();
    this.rl.output.mute();
    return this;
  }
  /**
   * Write out log data
   * @param {String} data - The log data to be output
   * @return {BottomBar} self
   */
  writeLog(data) {
    this.rl.output.unmute();
    this.clean();
    this.rl.output.write(this.enforceLF(data.toString()));
    this.render();
    this.rl.output.mute();
    return this;
  }
  /**
   * Make sure line end on a line feed
   * @param  {String} str Input string
   * @return {String}     The input string with a final line feed
   */
  enforceLF(str2) {
    return /[\n\r]$/.test(str2) ? str2 : str2 + "\n";
  }
  /**
   * Helper for writing message in Prompt
   * @param {String} message - The message to be output
   */
  write(message) {
    const msgLines = message.split(/\n/);
    this.height = msgLines.length;
    this.rl.setPrompt(msgLines.at(-1));
    if (this.rl.output.rows === 0 && this.rl.output.columns === 0) {
      left(this.rl, message.length + this.rl.line.length);
    }
    this.rl.output.write(message);
  }
};

// ../../node_modules/inquirer/lib/ui/prompt.js
var import_rxjs12 = __toESM(require_cjs3(), 1);
var import_run_async4 = __toESM(require_run_async(), 1);

// ../../node_modules/inquirer/lib/utils/utils.js
var import_rxjs11 = __toESM(require_cjs3(), 1);
var import_run_async3 = __toESM(require_run_async(), 1);
var fetchAsyncQuestionProperty = function(question, prop, answers) {
  if (typeof question[prop] !== "function") {
    return (0, import_rxjs11.of)(question);
  }
  return (0, import_rxjs11.from)(
    (0, import_run_async3.default)(question[prop])(answers).then((value) => {
      question[prop] = value;
      return question;
    })
  );
};

// ../../node_modules/inquirer/lib/ui/prompt.js
var _ = {
  set: (obj, path45 = "", value) => {
    let pointer = obj;
    path45.split(".").forEach((key2, index4, arr) => {
      if (key2 === "__proto__" || key2 === "constructor") return;
      if (index4 === arr.length - 1) {
        pointer[key2] = value;
      } else if (!(key2 in pointer) || typeof pointer[key2] !== "object") {
        pointer[key2] = {};
      }
      pointer = pointer[key2];
    });
  },
  get: (obj, path45 = "", defaultValue) => {
    const travel = (regexp) => String.prototype.split.call(path45, regexp).filter(Boolean).reduce(
      // @ts-expect-error implicit any on res[key]
      (res, key2) => res !== null && res !== void 0 ? res[key2] : res,
      obj
    );
    const result = travel(/[,[\]]+?/) || travel(/[,.[\]]+?/);
    return result === void 0 || result === obj ? defaultValue : result;
  }
};
var PromptUI = class extends UI {
  constructor(prompts, opt) {
    super(opt);
    this.prompts = prompts;
  }
  run(questions, answers) {
    this.answers = typeof answers === "object" ? { ...answers } : {};
    let obs;
    if (Array.isArray(questions)) {
      obs = (0, import_rxjs12.from)(questions);
    } else if ((0, import_rxjs12.isObservable)(questions)) {
      obs = questions;
    } else if (Object.values(questions).every(
      (maybeQuestion) => typeof maybeQuestion === "object" && !Array.isArray(maybeQuestion) && maybeQuestion != null
    )) {
      obs = (0, import_rxjs12.from)(
        Object.entries(questions).map(([name3, question]) => ({
          name: name3,
          ...question
        }))
      );
    } else {
      obs = (0, import_rxjs12.from)([questions]);
    }
    this.process = obs.pipe(
      (0, import_rxjs12.concatMap)(this.processQuestion.bind(this)),
      (0, import_rxjs12.publish)()
      // Creates a hot Observable. It prevents duplicating prompts.
    );
    this.process.connect();
    return this.process.pipe(
      (0, import_rxjs12.reduce)((answersObj, answer) => {
        _.set(answersObj, answer.name, answer.answer);
        return answersObj;
      }, this.answers)
    ).toPromise(Promise).then(this.onCompletion.bind(this), this.onError.bind(this));
  }
  /**
   * Once all prompt are over
   */
  onCompletion() {
    this.close();
    return this.answers;
  }
  onError(error) {
    this.close();
    return Promise.reject(error);
  }
  processQuestion(question) {
    question = { ...question };
    return (0, import_rxjs12.defer)(() => {
      const obs = (0, import_rxjs12.of)(question);
      return obs.pipe(
        (0, import_rxjs12.concatMap)(this.setDefaultType.bind(this)),
        (0, import_rxjs12.concatMap)(this.filterIfRunnable.bind(this)),
        (0, import_rxjs12.concatMap)(
          () => fetchAsyncQuestionProperty(question, "message", this.answers)
        ),
        (0, import_rxjs12.concatMap)(
          () => fetchAsyncQuestionProperty(question, "default", this.answers)
        ),
        (0, import_rxjs12.concatMap)(
          () => fetchAsyncQuestionProperty(question, "choices", this.answers)
        ),
        (0, import_rxjs12.concatMap)(this.fetchAnswer.bind(this))
      );
    });
  }
  fetchAnswer(question) {
    const Prompt2 = this.prompts[question.type];
    this.activePrompt = new Prompt2(question, this.rl, this.answers);
    return (0, import_rxjs12.defer)(
      () => (0, import_rxjs12.from)(this.activePrompt.run().then((answer) => ({ name: question.name, answer })))
    );
  }
  setDefaultType(question) {
    if (!this.prompts[question.type]) {
      question.type = "input";
    }
    return (0, import_rxjs12.defer)(() => (0, import_rxjs12.of)(question));
  }
  filterIfRunnable(question) {
    if (question.askAnswered !== true && _.get(this.answers, question.name) !== void 0) {
      return import_rxjs12.EMPTY;
    }
    if (question.when === false) {
      return import_rxjs12.EMPTY;
    }
    if (typeof question.when !== "function") {
      return (0, import_rxjs12.of)(question);
    }
    const { answers } = this;
    return (0, import_rxjs12.defer)(
      () => (0, import_rxjs12.from)(
        (0, import_run_async4.default)(question.when)(answers).then((shouldRun) => {
          if (shouldRun) {
            return question;
          }
        })
      ).pipe((0, import_rxjs12.filter)((val) => val != null))
    );
  }
};

// ../../node_modules/inquirer/lib/index.js
function createPromptModule(opt) {
  const promptModule = function(questions, answers) {
    let uiInstance;
    try {
      uiInstance = new PromptUI(promptModule.prompts, opt);
    } catch (error) {
      return Promise.reject(error);
    }
    const promise = uiInstance.run(questions, answers);
    promise.ui = uiInstance;
    return promise;
  };
  promptModule.prompts = {};
  promptModule.registerPrompt = function(name3, prompt2) {
    promptModule.prompts[name3] = prompt2;
    return this;
  };
  promptModule.restoreDefaultPrompts = function() {
    this.registerPrompt("list", ListPrompt);
    this.registerPrompt("input", InputPrompt);
    this.registerPrompt("number", NumberPrompt);
    this.registerPrompt("confirm", ConfirmPrompt);
    this.registerPrompt("rawlist", RawListPrompt);
    this.registerPrompt("expand", ExpandPrompt);
    this.registerPrompt("checkbox", CheckboxPrompt);
    this.registerPrompt("password", PasswordPrompt);
    this.registerPrompt("editor", EditorPrompt);
  };
  promptModule.restoreDefaultPrompts();
  return promptModule;
}
var prompt = createPromptModule();
function registerPrompt(name3, newPrompt) {
  prompt.registerPrompt(name3, newPrompt);
}
function restoreDefaultPrompts() {
  prompt.restoreDefaultPrompts();
}
var inquirer = {
  prompt,
  ui: {
    BottomBar,
    Prompt: PromptUI
  },
  createPromptModule,
  registerPrompt,
  restoreDefaultPrompts,
  Separator
};
var lib_default2 = inquirer;

// ../myst-cli/dist/build/clean.js
function promptContinue() {
  return {
    name: "cont",
    message: "Would you like to continue?",
    type: "confirm",
    default: true
  };
}
var ALL_OPTS = {
  docx: true,
  pdf: true,
  tex: true,
  xml: true,
  md: true,
  meca: true,
  site: true,
  html: true,
  temp: true,
  logs: true,
  cache: true,
  exports: true,
  execute: true,
  templates: true
};
var DEFAULT_OPTS = {
  docx: true,
  pdf: true,
  tex: true,
  xml: true,
  md: true,
  meca: true,
  site: true,
  html: true,
  temp: true,
  logs: true,
  exports: true,
  execute: true
};
function coerceOpts(opts) {
  const { docx, pdf, tex, xml: xml2, md, meca, site, html: html7, temp, logs, cache, exports: exports2, execute, templates, all: all10 } = opts;
  if (all10)
    return { ...opts, ...ALL_OPTS };
  if (!docx && !pdf && !tex && !xml2 && !md && !meca && !site && !html7 && !temp && !logs && !cache && !exports2 && !execute && !templates) {
    return { ...opts, ...DEFAULT_OPTS };
  }
  return { ...opts };
}
function isSubpath(item, folder) {
  if (item === folder)
    return false;
  const itemParts = item.split(import_node_path60.default.sep);
  const folderParts = folder.split(import_node_path60.default.sep);
  let subpath = true;
  folderParts.forEach((part, index4) => {
    if (itemParts[index4] !== part)
      subpath = false;
  });
  return subpath;
}
function isSubpathOfAny(item, folders) {
  let subpath = false;
  folders.forEach((folder) => {
    if (isSubpath(item, folder))
      subpath = true;
  });
  return subpath;
}
function deduplicatePaths(paths) {
  const uniquePaths = [...new Set(paths)];
  return uniquePaths.filter((item) => !isSubpathOfAny(item, [...uniquePaths]));
}
async function clean2(session, files, opts) {
  opts = coerceOpts(opts);
  const { site, html: html7, temp, logs, cache, exports: exports2, execute, templates, yes } = opts;
  let pathsToDelete = [];
  const exportOptionsList = await collectAllBuildExportOptions(session, files, opts);
  if (exports2) {
    exportOptionsList.forEach((exportOptions) => {
      pathsToDelete.push(exportOptions.output);
      if (exportOptions.format === ExportFormats.pdftex) {
        pathsToDelete.push(getLogOutputFolder(exportOptions.output));
        pathsToDelete.push(getTexOutputFolder(exportOptions.output));
      }
    });
  }
  let buildFolders = [];
  if (temp || logs || cache || exports2 || execute || templates || html7) {
    const projectPaths = [
      ...getProjectPaths(session),
      ...exportOptionsList.map((exp) => exp.$project)
    ];
    projectPaths.filter((projPath) => Boolean(projPath)).forEach((projPath) => {
      buildFolders.push(import_node_path60.default.join(projPath, "_build"));
    });
    buildFolders.push(session.buildPath());
  }
  buildFolders = [...new Set(buildFolders)].sort();
  if (temp || logs || cache || exports2 || templates || execute || html7) {
    buildFolders.forEach((folder) => {
      if (temp)
        pathsToDelete.push(import_node_path60.default.join(folder, "temp"));
      if (logs)
        pathsToDelete.push(import_node_path60.default.join(folder, "logs"));
      if (cache)
        pathsToDelete.push(import_node_path60.default.join(folder, "cache"));
      if (exports2)
        pathsToDelete.push(import_node_path60.default.join(folder, "exports"));
      if (templates)
        pathsToDelete.push(import_node_path60.default.join(folder, "templates"));
      if (html7)
        pathsToDelete.push(import_node_path60.default.join(folder, "html"));
      if (execute)
        pathsToDelete.push(import_node_path60.default.join(folder, "execute"));
    });
  }
  if (site) {
    pathsToDelete.push(session.sitePath());
  }
  pathsToDelete = deduplicatePaths(pathsToDelete.filter((p5) => import_node_fs41.default.existsSync(p5))).sort();
  if (pathsToDelete.length === 0) {
    session.log.info(source_default.yellow(`\u{1F9F9} Your folders are already so clean! \u2728`));
    return;
  }
  session.log.info(`Deleting all the following paths:

  - ${pathsToDelete.join("\n  - ")}
`);
  const cont = yes || (await lib_default2.prompt([promptContinue()])).cont;
  if (cont) {
    pathsToDelete.forEach((pathToDelete) => {
      session.log.info(`\u{1F5D1}  Deleting: ${pathToDelete}`);
      import_node_fs41.default.rmSync(pathToDelete, { recursive: true, force: true });
    });
    buildFolders.forEach((buildFolder) => {
      if (import_node_fs41.default.existsSync(buildFolder) && import_node_fs41.default.readdirSync(buildFolder).length === 0) {
        session.log.debug(`Deleting empty build folder: ${buildFolder}`);
        import_node_fs41.default.rmSync(buildFolder, { recursive: true, force: true });
      }
    });
  }
}

// ../myst-cli/dist/cli/build.js
function makeBuildCommand() {
  const command = new Command("build").description("Build PDF, LaTeX, Word and website exports from MyST files").argument("[files...]", "list of files to export").addOption(makeExecuteOption("Execute Notebooks")).addOption(makePdfOption("Build PDF output")).addOption(makeTexOption("Build LaTeX outputs")).addOption(makeTypstOption("Build Typst outputs")).addOption(makeDocxOption("Build Docx output")).addOption(makeMdOption("Build MD output")).addOption(makeJatsOption("Build JATS xml output")).addOption(makeMecaOptions("Build MECA zip output")).addOption(makeCffOption("Build CFF output")).addOption(makeSiteOption(`Build ${readableName()} site content`)).addOption(makeHtmlOption("Build static HTML site content")).addOption(makeAllOption("Build all exports")).addOption(makeDOIBibOption()).addOption(makeWatchOption()).addOption(makeNamedExportOption("Output file for the export")).addOption(makeForceOption("Build outputs for the given format, even if corresponding exports are not defined in file frontmatter")).addOption(makeCheckLinksOption()).addOption(makeStrictOption()).addOption(makeCIOption()).addOption(makeMaxSizeWebpOption()).addOption(makeKeepHostOption()).addOption(makePortOption());
  return command;
}

// ../myst-cli/dist/cli/clean.js
function makeCleanCommand() {
  const command = new Command("clean").description("Remove exports, temp files and installed templates").argument("[files...]", "list of files to clean corresponding outputs").addOption(makePdfOption("Clean PDF output")).addOption(makeTexOption("Clean LaTeX outputs")).addOption(makeTypstOption("Clean typst output")).addOption(makeDocxOption("Clean Docx output")).addOption(makeMdOption("Clean MD output")).addOption(makeJatsOption("Clean JATS xml output")).addOption(makeMecaOptions("Clean MECA zip output")).addOption(makeCffOption("Clean CFF output")).addOption(makeSiteOption(`Clean ${readableName()} site content`)).addOption(makeHtmlOption("Clean static HTML site content")).addOption(makeExecuteOption("Clean execute cache")).addOption(makeTempOption()).addOption(makeLogsOption("Clean CLI logs")).addOption(makeCacheOption("Clean web request cache")).addOption(makeExportsOption()).addOption(makeTemplatesOption()).addOption(makeAllOption(`Delete all exports, site content, templates, and temp files created by ${readableName()}`)).addOption(makeYesOption());
  return command;
}

// ../myst-cli/dist/cli/start.js
function makeStartCommand() {
  const command = new Command("start").description("Start the current project as a website").addOption(makeExecuteOption("Execute Notebooks")).addOption(makeKeepHostOption()).addOption(makeHeadlessOption()).addOption(makePortOption()).addOption(makeServerPortOption()).addOption(makeTemplateOption()).addOption(makeMaxSizeWebpOption());
  return command;
}

// ../myst-cli/dist/init/init.js
var import_node_fs43 = __toESM(require("fs"), 1);
var import_node_path65 = __toESM(require("path"), 1);

// ../../node_modules/uuid/dist/esm-node/rng.js
var import_crypto = __toESM(require("crypto"));
var rnds8Pool = new Uint8Array(256);
var poolPtr = rnds8Pool.length;
function rng() {
  if (poolPtr > rnds8Pool.length - 16) {
    import_crypto.default.randomFillSync(rnds8Pool);
    poolPtr = 0;
  }
  return rnds8Pool.slice(poolPtr, poolPtr += 16);
}

// ../../node_modules/uuid/dist/esm-node/regex.js
var regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;

// ../../node_modules/uuid/dist/esm-node/validate.js
function validate4(uuid) {
  return typeof uuid === "string" && regex_default.test(uuid);
}
var validate_default = validate4;

// ../../node_modules/uuid/dist/esm-node/stringify.js
var byteToHex = [];
for (let i2 = 0; i2 < 256; ++i2) {
  byteToHex.push((i2 + 256).toString(16).substr(1));
}
function stringify3(arr, offset = 0) {
  const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
  if (!validate_default(uuid)) {
    throw TypeError("Stringified UUID is invalid");
  }
  return uuid;
}
var stringify_default = stringify3;

// ../../node_modules/uuid/dist/esm-node/v4.js
function v4(options, buf, offset) {
  options = options || {};
  const rnds = options.random || (options.rng || rng)();
  rnds[6] = rnds[6] & 15 | 64;
  rnds[8] = rnds[8] & 63 | 128;
  if (buf) {
    offset = offset || 0;
    for (let i2 = 0; i2 < 16; ++i2) {
      buf[offset + i2] = rnds[i2];
    }
    return buf;
  }
  return stringify_default(rnds);
}
var v4_default = v4;

// ../myst-cli/dist/init/gh-actions/index.js
var import_node_fs42 = __toESM(require("fs"), 1);
var import_node_path61 = __toESM(require("path"), 1);

// ../myst-cli/dist/utils/fsExists.js
var import_promises2 = __toESM(require("fs/promises"), 1);
async function fsExists(path45) {
  try {
    await import_promises2.default.access(path45, import_promises2.default.constants.F_OK);
    return true;
  } catch (e2) {
    return false;
  }
}

// ../myst-cli/dist/utils/git.js
async function checkFolderIsGit() {
  try {
    await makeExecutable("git status", null)();
    return true;
  } catch (error) {
    return false;
  }
}
async function checkIgnore(pattern) {
  try {
    await makeExecutable(`git check-ignore ${pattern}`, null)();
    return true;
  } catch (error) {
    return false;
  }
}
async function checkAtGitRoot() {
  return await fsExists(".git");
}

// ../myst-cli/dist/init/gh-actions/index.js
function createGithubPagesAction({ defaultBranch = "main", username = "username", isGithubIO }) {
  return `# This file was created automatically with \`${npmBinaryName()} init --gh-pages\` \u{1FA84} \u{1F49A}
# Ensure your GitHub Pages settings for this repository are set to deploy with **GitHub Actions**.

name: ${readableName()} GitHub Pages Deploy
on:
  push:
    # Runs on pushes targeting the default branch
    branches: [${defaultBranch}]
env:
  # \`BASE_URL\` determines, relative to the root of the domain, the URL that your site is served from.
  # E.g., if your site lives at \`https://mydomain.org/myproject\`, set \`BASE_URL=/myproject\`.
  # If, instead, your site lives at the root of the domain, at \`https://mydomain.org\`, set \`BASE_URL=''\`.
  ${isGithubIO ? `BASE_URL: '' # Not required for '${username}.github.io' domain. Other repos will need to set this!` : "BASE_URL: /${{ github.event.repository.name }}"}

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: 'pages'
  cancel-in-progress: false
jobs:
  deploy:
    environment:
      name: github-pages
      url: \${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Pages
        uses: actions/configure-pages@v3
      - uses: actions/setup-node@v4
        with:
          node-version: 18.x
      - name: Install ${readableName()}
        run: npm install -g ${npmPackageName()}
      - name: Build HTML Assets
        run: ${npmBinaryName()} build --html
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: './_build/html'
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4
`;
}
function createGithubCurvenoteAction({ defaultBranch = "main" }) {
  return `# This file was created automatically with \`${npmBinaryName()} init --gh-curvenote\` \u{1FA84} \u{1F49A}

name: Curvenote Deploy
on:
  push:
    # Runs on pushes targeting the default branch
    branches: [${defaultBranch}]
permissions:
  # Sets permissions of the GITHUB_TOKEN to allow read of private repos
  contents: read
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: 'pages'
  cancel-in-progress: false
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Deploy \u{1F680}
        uses: curvenote/action-myst-publish@v1
        env:
          CURVENOTE_TOKEN: \${{ secrets.CURVENOTE_TOKEN }}
`;
}
async function prelimGitChecks(session) {
  const inGitRepo = await checkFolderIsGit();
  if (!inGitRepo) {
    session.log.info(`${source_default.redBright("Not a git repository")}

To create a GitHub action you must be inside of a git repository.`);
    process.exit(1);
  }
  const inRoot = await checkAtGitRoot();
  if (!inRoot) {
    session.log.info(`${source_default.redBright("Please Run From Root")}

Please run this command from the root of the git repository.`);
    process.exit(1);
  }
  const githubUrl = await getGithubUrl();
  if (!githubUrl) {
    session.log.warn(`Could not read the GitHub URL from your git repository.`);
  }
  return githubUrl;
}
var workflowQuestions = [
  {
    name: "branch",
    message: `What branch would you like to deploy from?`,
    default: "main"
  },
  {
    name: "name",
    message: `What would you like to call the action?`,
    default: "deploy.yml",
    validate(input3) {
      if (!input3.endsWith(".yml"))
        return "The GitHub Action name must end in `.yml`";
      const exists2 = import_node_fs42.default.existsSync(import_node_path61.default.join(".github", "workflows", input3));
      if (exists2)
        return "The workflow file already exists, please choose another name.";
      return true;
    }
  }
];
async function githubPagesAction(session) {
  const githubUrl = await prelimGitChecks(session);
  session.log.info(`\u{1F4DD} Creating a GitHub Action to deploy your MyST Site
`);
  const prompt2 = await lib_default2.prompt(workflowQuestions);
  const [repo, org] = githubUrl ? githubUrl.split("/").reverse() : [];
  const action = createGithubPagesAction({
    isGithubIO: githubUrl === null || githubUrl === void 0 ? void 0 : githubUrl.endsWith(".github.io"),
    username: org,
    defaultBranch: prompt2.branch
  });
  const filename = import_node_path61.default.join(".github", "workflows", prompt2.name);
  writeFileToFolder(filename, action);
  const githubPagesUrl = githubUrl ? `https://${org}.github.io/${repo}` : void 0;
  session.log.info(`
\u{1F389} GitHub Action is configured:

${filename}

\u2705 ${source_default.bold.green("Next Steps")}

1. Navigate to your GitHub Pages settings${githubUrl ? `

    ${githubUrl}/settings/pages
` : ""}
2. ${source_default.blue.bold("Enable GitHub Pages")}
3. Use ${source_default.blue.bold("GitHub Actions")} as the source
4. Push these changes (and/or merge to ${prompt2.branch})
5. Look for a new action to start${githubUrl ? `

    ${githubUrl}/actions
` : ""}
6. Once the action completes, your site should be deployed ${githubPagesUrl ? `at:

    ${githubPagesUrl}
` : "on your https://{{ organization }}.github.io/{{ repo }} domain"}
7. \u{1F389} Celebrate and tell us about your site on BlueSky or Mastodon! \u{1F426} \u{1F418}
`);
}
async function githubCurvenoteAction(session) {
  const githubUrl = await prelimGitChecks(session);
  session.log.info(`\u{1F4DD} Creating a GitHub Action to deploy your site to Curvenote
`);
  const prompt2 = await lib_default2.prompt(workflowQuestions);
  const action = createGithubCurvenoteAction({ defaultBranch: prompt2.branch });
  const filename = import_node_path61.default.join(".github", "workflows", prompt2.name);
  writeFileToFolder(filename, action);
  session.log.info(`
\u{1F389} GitHub Action is configured:

${filename}

\u2705 ${source_default.bold.green("Next Steps")}

1. Ensure you have a domain set in your site configuration

    site:
      domains:
        - username.curve.space

2. Create a new Curvenote API token

    https://curvenote.com/profile?settings=true&tab=profile-api

3. Navigate to your GitHub settings for action secrets${githubUrl ? `

    ${githubUrl}/settings/secrets/actions
` : ""}
4. Add a new repository secret

    Name: ${source_default.blue.bold("CURVENOTE_TOKEN")}
    Secret: Your Curvenote API Token

5. Push these changes (and/or merge to ${prompt2.branch})
6. Look for a new action to start${githubUrl ? `

    ${githubUrl}/actions
` : ""}
7. Once the action completes, your site should be deployed
8. \u{1F389} Celebrate and tell us about your site on BlueSky or Mastodon! \u{1F426} \u{1F418}
`);
}

// ../myst-cli/dist/init/jupyter-book/upgrade.js
var import_promises4 = __toESM(require("fs/promises"), 1);

// ../../node_modules/zod/lib/index.mjs
var util3;
(function(util4) {
  util4.assertEqual = (val) => val;
  function assertIs(_arg) {
  }
  util4.assertIs = assertIs;
  function assertNever3(_x2) {
    throw new Error();
  }
  util4.assertNever = assertNever3;
  util4.arrayToEnum = (items) => {
    const obj = {};
    for (const item of items) {
      obj[item] = item;
    }
    return obj;
  };
  util4.getValidEnumValues = (obj) => {
    const validKeys = util4.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== "number");
    const filtered = {};
    for (const k of validKeys) {
      filtered[k] = obj[k];
    }
    return util4.objectValues(filtered);
  };
  util4.objectValues = (obj) => {
    return util4.objectKeys(obj).map(function(e2) {
      return obj[e2];
    });
  };
  util4.objectKeys = typeof Object.keys === "function" ? (obj) => Object.keys(obj) : (object) => {
    const keys2 = [];
    for (const key2 in object) {
      if (Object.prototype.hasOwnProperty.call(object, key2)) {
        keys2.push(key2);
      }
    }
    return keys2;
  };
  util4.find = (arr, checker) => {
    for (const item of arr) {
      if (checker(item))
        return item;
    }
    return void 0;
  };
  util4.isInteger = typeof Number.isInteger === "function" ? (val) => Number.isInteger(val) : (val) => typeof val === "number" && isFinite(val) && Math.floor(val) === val;
  function joinValues(array, separator = " | ") {
    return array.map((val) => typeof val === "string" ? `'${val}'` : val).join(separator);
  }
  util4.joinValues = joinValues;
  util4.jsonStringifyReplacer = (_2, value) => {
    if (typeof value === "bigint") {
      return value.toString();
    }
    return value;
  };
})(util3 || (util3 = {}));
var objectUtil;
(function(objectUtil2) {
  objectUtil2.mergeShapes = (first2, second) => {
    return {
      ...first2,
      ...second
      // second overwrites first
    };
  };
})(objectUtil || (objectUtil = {}));
var ZodParsedType = util3.arrayToEnum([
  "string",
  "nan",
  "number",
  "integer",
  "float",
  "boolean",
  "date",
  "bigint",
  "symbol",
  "function",
  "undefined",
  "null",
  "array",
  "object",
  "unknown",
  "promise",
  "void",
  "never",
  "map",
  "set"
]);
var getParsedType = (data) => {
  const t2 = typeof data;
  switch (t2) {
    case "undefined":
      return ZodParsedType.undefined;
    case "string":
      return ZodParsedType.string;
    case "number":
      return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;
    case "boolean":
      return ZodParsedType.boolean;
    case "function":
      return ZodParsedType.function;
    case "bigint":
      return ZodParsedType.bigint;
    case "symbol":
      return ZodParsedType.symbol;
    case "object":
      if (Array.isArray(data)) {
        return ZodParsedType.array;
      }
      if (data === null) {
        return ZodParsedType.null;
      }
      if (data.then && typeof data.then === "function" && data.catch && typeof data.catch === "function") {
        return ZodParsedType.promise;
      }
      if (typeof Map !== "undefined" && data instanceof Map) {
        return ZodParsedType.map;
      }
      if (typeof Set !== "undefined" && data instanceof Set) {
        return ZodParsedType.set;
      }
      if (typeof Date !== "undefined" && data instanceof Date) {
        return ZodParsedType.date;
      }
      return ZodParsedType.object;
    default:
      return ZodParsedType.unknown;
  }
};
var ZodIssueCode = util3.arrayToEnum([
  "invalid_type",
  "invalid_literal",
  "custom",
  "invalid_union",
  "invalid_union_discriminator",
  "invalid_enum_value",
  "unrecognized_keys",
  "invalid_arguments",
  "invalid_return_type",
  "invalid_date",
  "invalid_string",
  "too_small",
  "too_big",
  "invalid_intersection_types",
  "not_multiple_of",
  "not_finite"
]);
var quotelessJson = (obj) => {
  const json2 = JSON.stringify(obj, null, 2);
  return json2.replace(/"([^"]+)":/g, "$1:");
};
var ZodError = class _ZodError extends Error {
  constructor(issues) {
    super();
    this.issues = [];
    this.addIssue = (sub2) => {
      this.issues = [...this.issues, sub2];
    };
    this.addIssues = (subs = []) => {
      this.issues = [...this.issues, ...subs];
    };
    const actualProto = new.target.prototype;
    if (Object.setPrototypeOf) {
      Object.setPrototypeOf(this, actualProto);
    } else {
      this.__proto__ = actualProto;
    }
    this.name = "ZodError";
    this.issues = issues;
  }
  get errors() {
    return this.issues;
  }
  format(_mapper) {
    const mapper = _mapper || function(issue) {
      return issue.message;
    };
    const fieldErrors = { _errors: [] };
    const processError = (error) => {
      for (const issue of error.issues) {
        if (issue.code === "invalid_union") {
          issue.unionErrors.map(processError);
        } else if (issue.code === "invalid_return_type") {
          processError(issue.returnTypeError);
        } else if (issue.code === "invalid_arguments") {
          processError(issue.argumentsError);
        } else if (issue.path.length === 0) {
          fieldErrors._errors.push(mapper(issue));
        } else {
          let curr = fieldErrors;
          let i2 = 0;
          while (i2 < issue.path.length) {
            const el = issue.path[i2];
            const terminal = i2 === issue.path.length - 1;
            if (!terminal) {
              curr[el] = curr[el] || { _errors: [] };
            } else {
              curr[el] = curr[el] || { _errors: [] };
              curr[el]._errors.push(mapper(issue));
            }
            curr = curr[el];
            i2++;
          }
        }
      }
    };
    processError(this);
    return fieldErrors;
  }
  static assert(value) {
    if (!(value instanceof _ZodError)) {
      throw new Error(`Not a ZodError: ${value}`);
    }
  }
  toString() {
    return this.message;
  }
  get message() {
    return JSON.stringify(this.issues, util3.jsonStringifyReplacer, 2);
  }
  get isEmpty() {
    return this.issues.length === 0;
  }
  flatten(mapper = (issue) => issue.message) {
    const fieldErrors = {};
    const formErrors = [];
    for (const sub2 of this.issues) {
      if (sub2.path.length > 0) {
        fieldErrors[sub2.path[0]] = fieldErrors[sub2.path[0]] || [];
        fieldErrors[sub2.path[0]].push(mapper(sub2));
      } else {
        formErrors.push(mapper(sub2));
      }
    }
    return { formErrors, fieldErrors };
  }
  get formErrors() {
    return this.flatten();
  }
};
ZodError.create = (issues) => {
  const error = new ZodError(issues);
  return error;
};
var errorMap = (issue, _ctx) => {
  let message;
  switch (issue.code) {
    case ZodIssueCode.invalid_type:
      if (issue.received === ZodParsedType.undefined) {
        message = "Required";
      } else {
        message = `Expected ${issue.expected}, received ${issue.received}`;
      }
      break;
    case ZodIssueCode.invalid_literal:
      message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util3.jsonStringifyReplacer)}`;
      break;
    case ZodIssueCode.unrecognized_keys:
      message = `Unrecognized key(s) in object: ${util3.joinValues(issue.keys, ", ")}`;
      break;
    case ZodIssueCode.invalid_union:
      message = `Invalid input`;
      break;
    case ZodIssueCode.invalid_union_discriminator:
      message = `Invalid discriminator value. Expected ${util3.joinValues(issue.options)}`;
      break;
    case ZodIssueCode.invalid_enum_value:
      message = `Invalid enum value. Expected ${util3.joinValues(issue.options)}, received '${issue.received}'`;
      break;
    case ZodIssueCode.invalid_arguments:
      message = `Invalid function arguments`;
      break;
    case ZodIssueCode.invalid_return_type:
      message = `Invalid function return type`;
      break;
    case ZodIssueCode.invalid_date:
      message = `Invalid date`;
      break;
    case ZodIssueCode.invalid_string:
      if (typeof issue.validation === "object") {
        if ("includes" in issue.validation) {
          message = `Invalid input: must include "${issue.validation.includes}"`;
          if (typeof issue.validation.position === "number") {
            message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;
          }
        } else if ("startsWith" in issue.validation) {
          message = `Invalid input: must start with "${issue.validation.startsWith}"`;
        } else if ("endsWith" in issue.validation) {
          message = `Invalid input: must end with "${issue.validation.endsWith}"`;
        } else {
          util3.assertNever(issue.validation);
        }
      } else if (issue.validation !== "regex") {
        message = `Invalid ${issue.validation}`;
      } else {
        message = "Invalid";
      }
      break;
    case ZodIssueCode.too_small:
      if (issue.type === "array")
        message = `Array must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;
      else if (issue.type === "string")
        message = `String must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;
      else if (issue.type === "number")
        message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;
      else if (issue.type === "date")
        message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;
      else
        message = "Invalid input";
      break;
    case ZodIssueCode.too_big:
      if (issue.type === "array")
        message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;
      else if (issue.type === "string")
        message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;
      else if (issue.type === "number")
        message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;
      else if (issue.type === "bigint")
        message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;
      else if (issue.type === "date")
        message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;
      else
        message = "Invalid input";
      break;
    case ZodIssueCode.custom:
      message = `Invalid input`;
      break;
    case ZodIssueCode.invalid_intersection_types:
      message = `Intersection results could not be merged`;
      break;
    case ZodIssueCode.not_multiple_of:
      message = `Number must be a multiple of ${issue.multipleOf}`;
      break;
    case ZodIssueCode.not_finite:
      message = "Number must be finite";
      break;
    default:
      message = _ctx.defaultError;
      util3.assertNever(issue);
  }
  return { message };
};
var overrideErrorMap = errorMap;
function setErrorMap(map13) {
  overrideErrorMap = map13;
}
function getErrorMap() {
  return overrideErrorMap;
}
var makeIssue = (params) => {
  const { data, path: path45, errorMaps, issueData } = params;
  const fullPath2 = [...path45, ...issueData.path || []];
  const fullIssue = {
    ...issueData,
    path: fullPath2
  };
  if (issueData.message !== void 0) {
    return {
      ...issueData,
      path: fullPath2,
      message: issueData.message
    };
  }
  let errorMessage = "";
  const maps = errorMaps.filter((m2) => !!m2).slice().reverse();
  for (const map13 of maps) {
    errorMessage = map13(fullIssue, { data, defaultError: errorMessage }).message;
  }
  return {
    ...issueData,
    path: fullPath2,
    message: errorMessage
  };
};
var EMPTY_PATH = [];
function addIssueToContext(ctx, issueData) {
  const overrideMap = getErrorMap();
  const issue = makeIssue({
    issueData,
    data: ctx.data,
    path: ctx.path,
    errorMaps: [
      ctx.common.contextualErrorMap,
      ctx.schemaErrorMap,
      overrideMap,
      overrideMap === errorMap ? void 0 : errorMap
      // then global default map
    ].filter((x2) => !!x2)
  });
  ctx.common.issues.push(issue);
}
var ParseStatus = class _ParseStatus {
  constructor() {
    this.value = "valid";
  }
  dirty() {
    if (this.value === "valid")
      this.value = "dirty";
  }
  abort() {
    if (this.value !== "aborted")
      this.value = "aborted";
  }
  static mergeArray(status, results) {
    const arrayValue = [];
    for (const s5 of results) {
      if (s5.status === "aborted")
        return INVALID;
      if (s5.status === "dirty")
        status.dirty();
      arrayValue.push(s5.value);
    }
    return { status: status.value, value: arrayValue };
  }
  static async mergeObjectAsync(status, pairs2) {
    const syncPairs = [];
    for (const pair of pairs2) {
      const key2 = await pair.key;
      const value = await pair.value;
      syncPairs.push({
        key: key2,
        value
      });
    }
    return _ParseStatus.mergeObjectSync(status, syncPairs);
  }
  static mergeObjectSync(status, pairs2) {
    const finalObject = {};
    for (const pair of pairs2) {
      const { key: key2, value } = pair;
      if (key2.status === "aborted")
        return INVALID;
      if (value.status === "aborted")
        return INVALID;
      if (key2.status === "dirty")
        status.dirty();
      if (value.status === "dirty")
        status.dirty();
      if (key2.value !== "__proto__" && (typeof value.value !== "undefined" || pair.alwaysSet)) {
        finalObject[key2.value] = value.value;
      }
    }
    return { status: status.value, value: finalObject };
  }
};
var INVALID = Object.freeze({
  status: "aborted"
});
var DIRTY = (value) => ({ status: "dirty", value });
var OK = (value) => ({ status: "valid", value });
var isAborted = (x2) => x2.status === "aborted";
var isDirty = (x2) => x2.status === "dirty";
var isValid3 = (x2) => x2.status === "valid";
var isAsync = (x2) => typeof Promise !== "undefined" && x2 instanceof Promise;
function __classPrivateFieldGet(receiver, state, kind, f3) {
  if (kind === "a" && !f3) throw new TypeError("Private accessor was defined without a getter");
  if (typeof state === "function" ? receiver !== state || !f3 : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
  return kind === "m" ? f3 : kind === "a" ? f3.call(receiver) : f3 ? f3.value : state.get(receiver);
}
function __classPrivateFieldSet(receiver, state, value, kind, f3) {
  if (kind === "m") throw new TypeError("Private method is not writable");
  if (kind === "a" && !f3) throw new TypeError("Private accessor was defined without a setter");
  if (typeof state === "function" ? receiver !== state || !f3 : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
  return kind === "a" ? f3.call(receiver, value) : f3 ? f3.value = value : state.set(receiver, value), value;
}
var errorUtil;
(function(errorUtil2) {
  errorUtil2.errToObj = (message) => typeof message === "string" ? { message } : message || {};
  errorUtil2.toString = (message) => typeof message === "string" ? message : message === null || message === void 0 ? void 0 : message.message;
})(errorUtil || (errorUtil = {}));
var _ZodEnum_cache;
var _ZodNativeEnum_cache;
var ParseInputLazyPath = class {
  constructor(parent2, value, path45, key2) {
    this._cachedPath = [];
    this.parent = parent2;
    this.data = value;
    this._path = path45;
    this._key = key2;
  }
  get path() {
    if (!this._cachedPath.length) {
      if (this._key instanceof Array) {
        this._cachedPath.push(...this._path, ...this._key);
      } else {
        this._cachedPath.push(...this._path, this._key);
      }
    }
    return this._cachedPath;
  }
};
var handleResult = (ctx, result) => {
  if (isValid3(result)) {
    return { success: true, data: result.value };
  } else {
    if (!ctx.common.issues.length) {
      throw new Error("Validation failed but no issues detected.");
    }
    return {
      success: false,
      get error() {
        if (this._error)
          return this._error;
        const error = new ZodError(ctx.common.issues);
        this._error = error;
        return this._error;
      }
    };
  }
};
function processCreateParams(params) {
  if (!params)
    return {};
  const { errorMap: errorMap2, invalid_type_error, required_error, description } = params;
  if (errorMap2 && (invalid_type_error || required_error)) {
    throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);
  }
  if (errorMap2)
    return { errorMap: errorMap2, description };
  const customMap = (iss, ctx) => {
    var _a6, _b;
    const { message } = params;
    if (iss.code === "invalid_enum_value") {
      return { message: message !== null && message !== void 0 ? message : ctx.defaultError };
    }
    if (typeof ctx.data === "undefined") {
      return { message: (_a6 = message !== null && message !== void 0 ? message : required_error) !== null && _a6 !== void 0 ? _a6 : ctx.defaultError };
    }
    if (iss.code !== "invalid_type")
      return { message: ctx.defaultError };
    return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };
  };
  return { errorMap: customMap, description };
}
var ZodType = class {
  constructor(def) {
    this.spa = this.safeParseAsync;
    this._def = def;
    this.parse = this.parse.bind(this);
    this.safeParse = this.safeParse.bind(this);
    this.parseAsync = this.parseAsync.bind(this);
    this.safeParseAsync = this.safeParseAsync.bind(this);
    this.spa = this.spa.bind(this);
    this.refine = this.refine.bind(this);
    this.refinement = this.refinement.bind(this);
    this.superRefine = this.superRefine.bind(this);
    this.optional = this.optional.bind(this);
    this.nullable = this.nullable.bind(this);
    this.nullish = this.nullish.bind(this);
    this.array = this.array.bind(this);
    this.promise = this.promise.bind(this);
    this.or = this.or.bind(this);
    this.and = this.and.bind(this);
    this.transform = this.transform.bind(this);
    this.brand = this.brand.bind(this);
    this.default = this.default.bind(this);
    this.catch = this.catch.bind(this);
    this.describe = this.describe.bind(this);
    this.pipe = this.pipe.bind(this);
    this.readonly = this.readonly.bind(this);
    this.isNullable = this.isNullable.bind(this);
    this.isOptional = this.isOptional.bind(this);
  }
  get description() {
    return this._def.description;
  }
  _getType(input3) {
    return getParsedType(input3.data);
  }
  _getOrReturnCtx(input3, ctx) {
    return ctx || {
      common: input3.parent.common,
      data: input3.data,
      parsedType: getParsedType(input3.data),
      schemaErrorMap: this._def.errorMap,
      path: input3.path,
      parent: input3.parent
    };
  }
  _processInputParams(input3) {
    return {
      status: new ParseStatus(),
      ctx: {
        common: input3.parent.common,
        data: input3.data,
        parsedType: getParsedType(input3.data),
        schemaErrorMap: this._def.errorMap,
        path: input3.path,
        parent: input3.parent
      }
    };
  }
  _parseSync(input3) {
    const result = this._parse(input3);
    if (isAsync(result)) {
      throw new Error("Synchronous parse encountered promise.");
    }
    return result;
  }
  _parseAsync(input3) {
    const result = this._parse(input3);
    return Promise.resolve(result);
  }
  parse(data, params) {
    const result = this.safeParse(data, params);
    if (result.success)
      return result.data;
    throw result.error;
  }
  safeParse(data, params) {
    var _a6;
    const ctx = {
      common: {
        issues: [],
        async: (_a6 = params === null || params === void 0 ? void 0 : params.async) !== null && _a6 !== void 0 ? _a6 : false,
        contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap
      },
      path: (params === null || params === void 0 ? void 0 : params.path) || [],
      schemaErrorMap: this._def.errorMap,
      parent: null,
      data,
      parsedType: getParsedType(data)
    };
    const result = this._parseSync({ data, path: ctx.path, parent: ctx });
    return handleResult(ctx, result);
  }
  async parseAsync(data, params) {
    const result = await this.safeParseAsync(data, params);
    if (result.success)
      return result.data;
    throw result.error;
  }
  async safeParseAsync(data, params) {
    const ctx = {
      common: {
        issues: [],
        contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,
        async: true
      },
      path: (params === null || params === void 0 ? void 0 : params.path) || [],
      schemaErrorMap: this._def.errorMap,
      parent: null,
      data,
      parsedType: getParsedType(data)
    };
    const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });
    const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));
    return handleResult(ctx, result);
  }
  refine(check2, message) {
    const getIssueProperties = (val) => {
      if (typeof message === "string" || typeof message === "undefined") {
        return { message };
      } else if (typeof message === "function") {
        return message(val);
      } else {
        return message;
      }
    };
    return this._refinement((val, ctx) => {
      const result = check2(val);
      const setError = () => ctx.addIssue({
        code: ZodIssueCode.custom,
        ...getIssueProperties(val)
      });
      if (typeof Promise !== "undefined" && result instanceof Promise) {
        return result.then((data) => {
          if (!data) {
            setError();
            return false;
          } else {
            return true;
          }
        });
      }
      if (!result) {
        setError();
        return false;
      } else {
        return true;
      }
    });
  }
  refinement(check2, refinementData) {
    return this._refinement((val, ctx) => {
      if (!check2(val)) {
        ctx.addIssue(typeof refinementData === "function" ? refinementData(val, ctx) : refinementData);
        return false;
      } else {
        return true;
      }
    });
  }
  _refinement(refinement) {
    return new ZodEffects({
      schema: this,
      typeName: ZodFirstPartyTypeKind.ZodEffects,
      effect: { type: "refinement", refinement }
    });
  }
  superRefine(refinement) {
    return this._refinement(refinement);
  }
  optional() {
    return ZodOptional.create(this, this._def);
  }
  nullable() {
    return ZodNullable.create(this, this._def);
  }
  nullish() {
    return this.nullable().optional();
  }
  array() {
    return ZodArray.create(this, this._def);
  }
  promise() {
    return ZodPromise.create(this, this._def);
  }
  or(option3) {
    return ZodUnion.create([this, option3], this._def);
  }
  and(incoming) {
    return ZodIntersection.create(this, incoming, this._def);
  }
  transform(transform3) {
    return new ZodEffects({
      ...processCreateParams(this._def),
      schema: this,
      typeName: ZodFirstPartyTypeKind.ZodEffects,
      effect: { type: "transform", transform: transform3 }
    });
  }
  default(def) {
    const defaultValueFunc = typeof def === "function" ? def : () => def;
    return new ZodDefault({
      ...processCreateParams(this._def),
      innerType: this,
      defaultValue: defaultValueFunc,
      typeName: ZodFirstPartyTypeKind.ZodDefault
    });
  }
  brand() {
    return new ZodBranded({
      typeName: ZodFirstPartyTypeKind.ZodBranded,
      type: this,
      ...processCreateParams(this._def)
    });
  }
  catch(def) {
    const catchValueFunc = typeof def === "function" ? def : () => def;
    return new ZodCatch({
      ...processCreateParams(this._def),
      innerType: this,
      catchValue: catchValueFunc,
      typeName: ZodFirstPartyTypeKind.ZodCatch
    });
  }
  describe(description) {
    const This = this.constructor;
    return new This({
      ...this._def,
      description
    });
  }
  pipe(target) {
    return ZodPipeline.create(this, target);
  }
  readonly() {
    return ZodReadonly.create(this);
  }
  isOptional() {
    return this.safeParse(void 0).success;
  }
  isNullable() {
    return this.safeParse(null).success;
  }
};
var cuidRegex = /^c[^\s-]{8,}$/i;
var cuid2Regex = /^[0-9a-z]+$/;
var ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/;
var uuidRegex = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i;
var nanoidRegex = /^[a-z0-9_-]{21}$/i;
var durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/;
var emailRegex = /^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i;
var _emojiRegex = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;
var emojiRegex;
var ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;
var ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;
var base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
var dateRegexSource = `((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`;
var dateRegex = new RegExp(`^${dateRegexSource}$`);
function timeRegexSource(args) {
  let regex2 = `([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d`;
  if (args.precision) {
    regex2 = `${regex2}\\.\\d{${args.precision}}`;
  } else if (args.precision == null) {
    regex2 = `${regex2}(\\.\\d+)?`;
  }
  return regex2;
}
function timeRegex(args) {
  return new RegExp(`^${timeRegexSource(args)}$`);
}
function datetimeRegex(args) {
  let regex2 = `${dateRegexSource}T${timeRegexSource(args)}`;
  const opts = [];
  opts.push(args.local ? `Z?` : `Z`);
  if (args.offset)
    opts.push(`([+-]\\d{2}:?\\d{2})`);
  regex2 = `${regex2}(${opts.join("|")})`;
  return new RegExp(`^${regex2}$`);
}
function isValidIP(ip, version4) {
  if ((version4 === "v4" || !version4) && ipv4Regex.test(ip)) {
    return true;
  }
  if ((version4 === "v6" || !version4) && ipv6Regex.test(ip)) {
    return true;
  }
  return false;
}
var ZodString = class _ZodString extends ZodType {
  _parse(input3) {
    if (this._def.coerce) {
      input3.data = String(input3.data);
    }
    const parsedType = this._getType(input3);
    if (parsedType !== ZodParsedType.string) {
      const ctx2 = this._getOrReturnCtx(input3);
      addIssueToContext(ctx2, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.string,
        received: ctx2.parsedType
      });
      return INVALID;
    }
    const status = new ParseStatus();
    let ctx = void 0;
    for (const check2 of this._def.checks) {
      if (check2.kind === "min") {
        if (input3.data.length < check2.value) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.too_small,
            minimum: check2.value,
            type: "string",
            inclusive: true,
            exact: false,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "max") {
        if (input3.data.length > check2.value) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.too_big,
            maximum: check2.value,
            type: "string",
            inclusive: true,
            exact: false,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "length") {
        const tooBig = input3.data.length > check2.value;
        const tooSmall = input3.data.length < check2.value;
        if (tooBig || tooSmall) {
          ctx = this._getOrReturnCtx(input3, ctx);
          if (tooBig) {
            addIssueToContext(ctx, {
              code: ZodIssueCode.too_big,
              maximum: check2.value,
              type: "string",
              inclusive: true,
              exact: true,
              message: check2.message
            });
          } else if (tooSmall) {
            addIssueToContext(ctx, {
              code: ZodIssueCode.too_small,
              minimum: check2.value,
              type: "string",
              inclusive: true,
              exact: true,
              message: check2.message
            });
          }
          status.dirty();
        }
      } else if (check2.kind === "email") {
        if (!emailRegex.test(input3.data)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            validation: "email",
            code: ZodIssueCode.invalid_string,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "emoji") {
        if (!emojiRegex) {
          emojiRegex = new RegExp(_emojiRegex, "u");
        }
        if (!emojiRegex.test(input3.data)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            validation: "emoji",
            code: ZodIssueCode.invalid_string,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "uuid") {
        if (!uuidRegex.test(input3.data)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            validation: "uuid",
            code: ZodIssueCode.invalid_string,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "nanoid") {
        if (!nanoidRegex.test(input3.data)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            validation: "nanoid",
            code: ZodIssueCode.invalid_string,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "cuid") {
        if (!cuidRegex.test(input3.data)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            validation: "cuid",
            code: ZodIssueCode.invalid_string,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "cuid2") {
        if (!cuid2Regex.test(input3.data)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            validation: "cuid2",
            code: ZodIssueCode.invalid_string,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "ulid") {
        if (!ulidRegex.test(input3.data)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            validation: "ulid",
            code: ZodIssueCode.invalid_string,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "url") {
        try {
          new URL(input3.data);
        } catch (_a6) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            validation: "url",
            code: ZodIssueCode.invalid_string,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "regex") {
        check2.regex.lastIndex = 0;
        const testResult = check2.regex.test(input3.data);
        if (!testResult) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            validation: "regex",
            code: ZodIssueCode.invalid_string,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "trim") {
        input3.data = input3.data.trim();
      } else if (check2.kind === "includes") {
        if (!input3.data.includes(check2.value, check2.position)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.invalid_string,
            validation: { includes: check2.value, position: check2.position },
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "toLowerCase") {
        input3.data = input3.data.toLowerCase();
      } else if (check2.kind === "toUpperCase") {
        input3.data = input3.data.toUpperCase();
      } else if (check2.kind === "startsWith") {
        if (!input3.data.startsWith(check2.value)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.invalid_string,
            validation: { startsWith: check2.value },
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "endsWith") {
        if (!input3.data.endsWith(check2.value)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.invalid_string,
            validation: { endsWith: check2.value },
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "datetime") {
        const regex2 = datetimeRegex(check2);
        if (!regex2.test(input3.data)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.invalid_string,
            validation: "datetime",
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "date") {
        const regex2 = dateRegex;
        if (!regex2.test(input3.data)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.invalid_string,
            validation: "date",
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "time") {
        const regex2 = timeRegex(check2);
        if (!regex2.test(input3.data)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.invalid_string,
            validation: "time",
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "duration") {
        if (!durationRegex.test(input3.data)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            validation: "duration",
            code: ZodIssueCode.invalid_string,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "ip") {
        if (!isValidIP(input3.data, check2.version)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            validation: "ip",
            code: ZodIssueCode.invalid_string,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "base64") {
        if (!base64Regex.test(input3.data)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            validation: "base64",
            code: ZodIssueCode.invalid_string,
            message: check2.message
          });
          status.dirty();
        }
      } else {
        util3.assertNever(check2);
      }
    }
    return { status: status.value, value: input3.data };
  }
  _regex(regex2, validation, message) {
    return this.refinement((data) => regex2.test(data), {
      validation,
      code: ZodIssueCode.invalid_string,
      ...errorUtil.errToObj(message)
    });
  }
  _addCheck(check2) {
    return new _ZodString({
      ...this._def,
      checks: [...this._def.checks, check2]
    });
  }
  email(message) {
    return this._addCheck({ kind: "email", ...errorUtil.errToObj(message) });
  }
  url(message) {
    return this._addCheck({ kind: "url", ...errorUtil.errToObj(message) });
  }
  emoji(message) {
    return this._addCheck({ kind: "emoji", ...errorUtil.errToObj(message) });
  }
  uuid(message) {
    return this._addCheck({ kind: "uuid", ...errorUtil.errToObj(message) });
  }
  nanoid(message) {
    return this._addCheck({ kind: "nanoid", ...errorUtil.errToObj(message) });
  }
  cuid(message) {
    return this._addCheck({ kind: "cuid", ...errorUtil.errToObj(message) });
  }
  cuid2(message) {
    return this._addCheck({ kind: "cuid2", ...errorUtil.errToObj(message) });
  }
  ulid(message) {
    return this._addCheck({ kind: "ulid", ...errorUtil.errToObj(message) });
  }
  base64(message) {
    return this._addCheck({ kind: "base64", ...errorUtil.errToObj(message) });
  }
  ip(options) {
    return this._addCheck({ kind: "ip", ...errorUtil.errToObj(options) });
  }
  datetime(options) {
    var _a6, _b;
    if (typeof options === "string") {
      return this._addCheck({
        kind: "datetime",
        precision: null,
        offset: false,
        local: false,
        message: options
      });
    }
    return this._addCheck({
      kind: "datetime",
      precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === "undefined" ? null : options === null || options === void 0 ? void 0 : options.precision,
      offset: (_a6 = options === null || options === void 0 ? void 0 : options.offset) !== null && _a6 !== void 0 ? _a6 : false,
      local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,
      ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message)
    });
  }
  date(message) {
    return this._addCheck({ kind: "date", message });
  }
  time(options) {
    if (typeof options === "string") {
      return this._addCheck({
        kind: "time",
        precision: null,
        message: options
      });
    }
    return this._addCheck({
      kind: "time",
      precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === "undefined" ? null : options === null || options === void 0 ? void 0 : options.precision,
      ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message)
    });
  }
  duration(message) {
    return this._addCheck({ kind: "duration", ...errorUtil.errToObj(message) });
  }
  regex(regex2, message) {
    return this._addCheck({
      kind: "regex",
      regex: regex2,
      ...errorUtil.errToObj(message)
    });
  }
  includes(value, options) {
    return this._addCheck({
      kind: "includes",
      value,
      position: options === null || options === void 0 ? void 0 : options.position,
      ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message)
    });
  }
  startsWith(value, message) {
    return this._addCheck({
      kind: "startsWith",
      value,
      ...errorUtil.errToObj(message)
    });
  }
  endsWith(value, message) {
    return this._addCheck({
      kind: "endsWith",
      value,
      ...errorUtil.errToObj(message)
    });
  }
  min(minLength, message) {
    return this._addCheck({
      kind: "min",
      value: minLength,
      ...errorUtil.errToObj(message)
    });
  }
  max(maxLength, message) {
    return this._addCheck({
      kind: "max",
      value: maxLength,
      ...errorUtil.errToObj(message)
    });
  }
  length(len, message) {
    return this._addCheck({
      kind: "length",
      value: len,
      ...errorUtil.errToObj(message)
    });
  }
  /**
   * @deprecated Use z.string().min(1) instead.
   * @see {@link ZodString.min}
   */
  nonempty(message) {
    return this.min(1, errorUtil.errToObj(message));
  }
  trim() {
    return new _ZodString({
      ...this._def,
      checks: [...this._def.checks, { kind: "trim" }]
    });
  }
  toLowerCase() {
    return new _ZodString({
      ...this._def,
      checks: [...this._def.checks, { kind: "toLowerCase" }]
    });
  }
  toUpperCase() {
    return new _ZodString({
      ...this._def,
      checks: [...this._def.checks, { kind: "toUpperCase" }]
    });
  }
  get isDatetime() {
    return !!this._def.checks.find((ch) => ch.kind === "datetime");
  }
  get isDate() {
    return !!this._def.checks.find((ch) => ch.kind === "date");
  }
  get isTime() {
    return !!this._def.checks.find((ch) => ch.kind === "time");
  }
  get isDuration() {
    return !!this._def.checks.find((ch) => ch.kind === "duration");
  }
  get isEmail() {
    return !!this._def.checks.find((ch) => ch.kind === "email");
  }
  get isURL() {
    return !!this._def.checks.find((ch) => ch.kind === "url");
  }
  get isEmoji() {
    return !!this._def.checks.find((ch) => ch.kind === "emoji");
  }
  get isUUID() {
    return !!this._def.checks.find((ch) => ch.kind === "uuid");
  }
  get isNANOID() {
    return !!this._def.checks.find((ch) => ch.kind === "nanoid");
  }
  get isCUID() {
    return !!this._def.checks.find((ch) => ch.kind === "cuid");
  }
  get isCUID2() {
    return !!this._def.checks.find((ch) => ch.kind === "cuid2");
  }
  get isULID() {
    return !!this._def.checks.find((ch) => ch.kind === "ulid");
  }
  get isIP() {
    return !!this._def.checks.find((ch) => ch.kind === "ip");
  }
  get isBase64() {
    return !!this._def.checks.find((ch) => ch.kind === "base64");
  }
  get minLength() {
    let min = null;
    for (const ch of this._def.checks) {
      if (ch.kind === "min") {
        if (min === null || ch.value > min)
          min = ch.value;
      }
    }
    return min;
  }
  get maxLength() {
    let max = null;
    for (const ch of this._def.checks) {
      if (ch.kind === "max") {
        if (max === null || ch.value < max)
          max = ch.value;
      }
    }
    return max;
  }
};
ZodString.create = (params) => {
  var _a6;
  return new ZodString({
    checks: [],
    typeName: ZodFirstPartyTypeKind.ZodString,
    coerce: (_a6 = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a6 !== void 0 ? _a6 : false,
    ...processCreateParams(params)
  });
};
function floatSafeRemainder(val, step) {
  const valDecCount = (val.toString().split(".")[1] || "").length;
  const stepDecCount = (step.toString().split(".")[1] || "").length;
  const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;
  const valInt = parseInt(val.toFixed(decCount).replace(".", ""));
  const stepInt = parseInt(step.toFixed(decCount).replace(".", ""));
  return valInt % stepInt / Math.pow(10, decCount);
}
var ZodNumber = class _ZodNumber extends ZodType {
  constructor() {
    super(...arguments);
    this.min = this.gte;
    this.max = this.lte;
    this.step = this.multipleOf;
  }
  _parse(input3) {
    if (this._def.coerce) {
      input3.data = Number(input3.data);
    }
    const parsedType = this._getType(input3);
    if (parsedType !== ZodParsedType.number) {
      const ctx2 = this._getOrReturnCtx(input3);
      addIssueToContext(ctx2, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.number,
        received: ctx2.parsedType
      });
      return INVALID;
    }
    let ctx = void 0;
    const status = new ParseStatus();
    for (const check2 of this._def.checks) {
      if (check2.kind === "int") {
        if (!util3.isInteger(input3.data)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.invalid_type,
            expected: "integer",
            received: "float",
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "min") {
        const tooSmall = check2.inclusive ? input3.data < check2.value : input3.data <= check2.value;
        if (tooSmall) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.too_small,
            minimum: check2.value,
            type: "number",
            inclusive: check2.inclusive,
            exact: false,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "max") {
        const tooBig = check2.inclusive ? input3.data > check2.value : input3.data >= check2.value;
        if (tooBig) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.too_big,
            maximum: check2.value,
            type: "number",
            inclusive: check2.inclusive,
            exact: false,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "multipleOf") {
        if (floatSafeRemainder(input3.data, check2.value) !== 0) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.not_multiple_of,
            multipleOf: check2.value,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "finite") {
        if (!Number.isFinite(input3.data)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.not_finite,
            message: check2.message
          });
          status.dirty();
        }
      } else {
        util3.assertNever(check2);
      }
    }
    return { status: status.value, value: input3.data };
  }
  gte(value, message) {
    return this.setLimit("min", value, true, errorUtil.toString(message));
  }
  gt(value, message) {
    return this.setLimit("min", value, false, errorUtil.toString(message));
  }
  lte(value, message) {
    return this.setLimit("max", value, true, errorUtil.toString(message));
  }
  lt(value, message) {
    return this.setLimit("max", value, false, errorUtil.toString(message));
  }
  setLimit(kind, value, inclusive, message) {
    return new _ZodNumber({
      ...this._def,
      checks: [
        ...this._def.checks,
        {
          kind,
          value,
          inclusive,
          message: errorUtil.toString(message)
        }
      ]
    });
  }
  _addCheck(check2) {
    return new _ZodNumber({
      ...this._def,
      checks: [...this._def.checks, check2]
    });
  }
  int(message) {
    return this._addCheck({
      kind: "int",
      message: errorUtil.toString(message)
    });
  }
  positive(message) {
    return this._addCheck({
      kind: "min",
      value: 0,
      inclusive: false,
      message: errorUtil.toString(message)
    });
  }
  negative(message) {
    return this._addCheck({
      kind: "max",
      value: 0,
      inclusive: false,
      message: errorUtil.toString(message)
    });
  }
  nonpositive(message) {
    return this._addCheck({
      kind: "max",
      value: 0,
      inclusive: true,
      message: errorUtil.toString(message)
    });
  }
  nonnegative(message) {
    return this._addCheck({
      kind: "min",
      value: 0,
      inclusive: true,
      message: errorUtil.toString(message)
    });
  }
  multipleOf(value, message) {
    return this._addCheck({
      kind: "multipleOf",
      value,
      message: errorUtil.toString(message)
    });
  }
  finite(message) {
    return this._addCheck({
      kind: "finite",
      message: errorUtil.toString(message)
    });
  }
  safe(message) {
    return this._addCheck({
      kind: "min",
      inclusive: true,
      value: Number.MIN_SAFE_INTEGER,
      message: errorUtil.toString(message)
    })._addCheck({
      kind: "max",
      inclusive: true,
      value: Number.MAX_SAFE_INTEGER,
      message: errorUtil.toString(message)
    });
  }
  get minValue() {
    let min = null;
    for (const ch of this._def.checks) {
      if (ch.kind === "min") {
        if (min === null || ch.value > min)
          min = ch.value;
      }
    }
    return min;
  }
  get maxValue() {
    let max = null;
    for (const ch of this._def.checks) {
      if (ch.kind === "max") {
        if (max === null || ch.value < max)
          max = ch.value;
      }
    }
    return max;
  }
  get isInt() {
    return !!this._def.checks.find((ch) => ch.kind === "int" || ch.kind === "multipleOf" && util3.isInteger(ch.value));
  }
  get isFinite() {
    let max = null, min = null;
    for (const ch of this._def.checks) {
      if (ch.kind === "finite" || ch.kind === "int" || ch.kind === "multipleOf") {
        return true;
      } else if (ch.kind === "min") {
        if (min === null || ch.value > min)
          min = ch.value;
      } else if (ch.kind === "max") {
        if (max === null || ch.value < max)
          max = ch.value;
      }
    }
    return Number.isFinite(min) && Number.isFinite(max);
  }
};
ZodNumber.create = (params) => {
  return new ZodNumber({
    checks: [],
    typeName: ZodFirstPartyTypeKind.ZodNumber,
    coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,
    ...processCreateParams(params)
  });
};
var ZodBigInt = class _ZodBigInt extends ZodType {
  constructor() {
    super(...arguments);
    this.min = this.gte;
    this.max = this.lte;
  }
  _parse(input3) {
    if (this._def.coerce) {
      input3.data = BigInt(input3.data);
    }
    const parsedType = this._getType(input3);
    if (parsedType !== ZodParsedType.bigint) {
      const ctx2 = this._getOrReturnCtx(input3);
      addIssueToContext(ctx2, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.bigint,
        received: ctx2.parsedType
      });
      return INVALID;
    }
    let ctx = void 0;
    const status = new ParseStatus();
    for (const check2 of this._def.checks) {
      if (check2.kind === "min") {
        const tooSmall = check2.inclusive ? input3.data < check2.value : input3.data <= check2.value;
        if (tooSmall) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.too_small,
            type: "bigint",
            minimum: check2.value,
            inclusive: check2.inclusive,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "max") {
        const tooBig = check2.inclusive ? input3.data > check2.value : input3.data >= check2.value;
        if (tooBig) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.too_big,
            type: "bigint",
            maximum: check2.value,
            inclusive: check2.inclusive,
            message: check2.message
          });
          status.dirty();
        }
      } else if (check2.kind === "multipleOf") {
        if (input3.data % check2.value !== BigInt(0)) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.not_multiple_of,
            multipleOf: check2.value,
            message: check2.message
          });
          status.dirty();
        }
      } else {
        util3.assertNever(check2);
      }
    }
    return { status: status.value, value: input3.data };
  }
  gte(value, message) {
    return this.setLimit("min", value, true, errorUtil.toString(message));
  }
  gt(value, message) {
    return this.setLimit("min", value, false, errorUtil.toString(message));
  }
  lte(value, message) {
    return this.setLimit("max", value, true, errorUtil.toString(message));
  }
  lt(value, message) {
    return this.setLimit("max", value, false, errorUtil.toString(message));
  }
  setLimit(kind, value, inclusive, message) {
    return new _ZodBigInt({
      ...this._def,
      checks: [
        ...this._def.checks,
        {
          kind,
          value,
          inclusive,
          message: errorUtil.toString(message)
        }
      ]
    });
  }
  _addCheck(check2) {
    return new _ZodBigInt({
      ...this._def,
      checks: [...this._def.checks, check2]
    });
  }
  positive(message) {
    return this._addCheck({
      kind: "min",
      value: BigInt(0),
      inclusive: false,
      message: errorUtil.toString(message)
    });
  }
  negative(message) {
    return this._addCheck({
      kind: "max",
      value: BigInt(0),
      inclusive: false,
      message: errorUtil.toString(message)
    });
  }
  nonpositive(message) {
    return this._addCheck({
      kind: "max",
      value: BigInt(0),
      inclusive: true,
      message: errorUtil.toString(message)
    });
  }
  nonnegative(message) {
    return this._addCheck({
      kind: "min",
      value: BigInt(0),
      inclusive: true,
      message: errorUtil.toString(message)
    });
  }
  multipleOf(value, message) {
    return this._addCheck({
      kind: "multipleOf",
      value,
      message: errorUtil.toString(message)
    });
  }
  get minValue() {
    let min = null;
    for (const ch of this._def.checks) {
      if (ch.kind === "min") {
        if (min === null || ch.value > min)
          min = ch.value;
      }
    }
    return min;
  }
  get maxValue() {
    let max = null;
    for (const ch of this._def.checks) {
      if (ch.kind === "max") {
        if (max === null || ch.value < max)
          max = ch.value;
      }
    }
    return max;
  }
};
ZodBigInt.create = (params) => {
  var _a6;
  return new ZodBigInt({
    checks: [],
    typeName: ZodFirstPartyTypeKind.ZodBigInt,
    coerce: (_a6 = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a6 !== void 0 ? _a6 : false,
    ...processCreateParams(params)
  });
};
var ZodBoolean = class extends ZodType {
  _parse(input3) {
    if (this._def.coerce) {
      input3.data = Boolean(input3.data);
    }
    const parsedType = this._getType(input3);
    if (parsedType !== ZodParsedType.boolean) {
      const ctx = this._getOrReturnCtx(input3);
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.boolean,
        received: ctx.parsedType
      });
      return INVALID;
    }
    return OK(input3.data);
  }
};
ZodBoolean.create = (params) => {
  return new ZodBoolean({
    typeName: ZodFirstPartyTypeKind.ZodBoolean,
    coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,
    ...processCreateParams(params)
  });
};
var ZodDate = class _ZodDate extends ZodType {
  _parse(input3) {
    if (this._def.coerce) {
      input3.data = new Date(input3.data);
    }
    const parsedType = this._getType(input3);
    if (parsedType !== ZodParsedType.date) {
      const ctx2 = this._getOrReturnCtx(input3);
      addIssueToContext(ctx2, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.date,
        received: ctx2.parsedType
      });
      return INVALID;
    }
    if (isNaN(input3.data.getTime())) {
      const ctx2 = this._getOrReturnCtx(input3);
      addIssueToContext(ctx2, {
        code: ZodIssueCode.invalid_date
      });
      return INVALID;
    }
    const status = new ParseStatus();
    let ctx = void 0;
    for (const check2 of this._def.checks) {
      if (check2.kind === "min") {
        if (input3.data.getTime() < check2.value) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.too_small,
            message: check2.message,
            inclusive: true,
            exact: false,
            minimum: check2.value,
            type: "date"
          });
          status.dirty();
        }
      } else if (check2.kind === "max") {
        if (input3.data.getTime() > check2.value) {
          ctx = this._getOrReturnCtx(input3, ctx);
          addIssueToContext(ctx, {
            code: ZodIssueCode.too_big,
            message: check2.message,
            inclusive: true,
            exact: false,
            maximum: check2.value,
            type: "date"
          });
          status.dirty();
        }
      } else {
        util3.assertNever(check2);
      }
    }
    return {
      status: status.value,
      value: new Date(input3.data.getTime())
    };
  }
  _addCheck(check2) {
    return new _ZodDate({
      ...this._def,
      checks: [...this._def.checks, check2]
    });
  }
  min(minDate, message) {
    return this._addCheck({
      kind: "min",
      value: minDate.getTime(),
      message: errorUtil.toString(message)
    });
  }
  max(maxDate, message) {
    return this._addCheck({
      kind: "max",
      value: maxDate.getTime(),
      message: errorUtil.toString(message)
    });
  }
  get minDate() {
    let min = null;
    for (const ch of this._def.checks) {
      if (ch.kind === "min") {
        if (min === null || ch.value > min)
          min = ch.value;
      }
    }
    return min != null ? new Date(min) : null;
  }
  get maxDate() {
    let max = null;
    for (const ch of this._def.checks) {
      if (ch.kind === "max") {
        if (max === null || ch.value < max)
          max = ch.value;
      }
    }
    return max != null ? new Date(max) : null;
  }
};
ZodDate.create = (params) => {
  return new ZodDate({
    checks: [],
    coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,
    typeName: ZodFirstPartyTypeKind.ZodDate,
    ...processCreateParams(params)
  });
};
var ZodSymbol = class extends ZodType {
  _parse(input3) {
    const parsedType = this._getType(input3);
    if (parsedType !== ZodParsedType.symbol) {
      const ctx = this._getOrReturnCtx(input3);
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.symbol,
        received: ctx.parsedType
      });
      return INVALID;
    }
    return OK(input3.data);
  }
};
ZodSymbol.create = (params) => {
  return new ZodSymbol({
    typeName: ZodFirstPartyTypeKind.ZodSymbol,
    ...processCreateParams(params)
  });
};
var ZodUndefined = class extends ZodType {
  _parse(input3) {
    const parsedType = this._getType(input3);
    if (parsedType !== ZodParsedType.undefined) {
      const ctx = this._getOrReturnCtx(input3);
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.undefined,
        received: ctx.parsedType
      });
      return INVALID;
    }
    return OK(input3.data);
  }
};
ZodUndefined.create = (params) => {
  return new ZodUndefined({
    typeName: ZodFirstPartyTypeKind.ZodUndefined,
    ...processCreateParams(params)
  });
};
var ZodNull = class extends ZodType {
  _parse(input3) {
    const parsedType = this._getType(input3);
    if (parsedType !== ZodParsedType.null) {
      const ctx = this._getOrReturnCtx(input3);
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.null,
        received: ctx.parsedType
      });
      return INVALID;
    }
    return OK(input3.data);
  }
};
ZodNull.create = (params) => {
  return new ZodNull({
    typeName: ZodFirstPartyTypeKind.ZodNull,
    ...processCreateParams(params)
  });
};
var ZodAny = class extends ZodType {
  constructor() {
    super(...arguments);
    this._any = true;
  }
  _parse(input3) {
    return OK(input3.data);
  }
};
ZodAny.create = (params) => {
  return new ZodAny({
    typeName: ZodFirstPartyTypeKind.ZodAny,
    ...processCreateParams(params)
  });
};
var ZodUnknown = class extends ZodType {
  constructor() {
    super(...arguments);
    this._unknown = true;
  }
  _parse(input3) {
    return OK(input3.data);
  }
};
ZodUnknown.create = (params) => {
  return new ZodUnknown({
    typeName: ZodFirstPartyTypeKind.ZodUnknown,
    ...processCreateParams(params)
  });
};
var ZodNever = class extends ZodType {
  _parse(input3) {
    const ctx = this._getOrReturnCtx(input3);
    addIssueToContext(ctx, {
      code: ZodIssueCode.invalid_type,
      expected: ZodParsedType.never,
      received: ctx.parsedType
    });
    return INVALID;
  }
};
ZodNever.create = (params) => {
  return new ZodNever({
    typeName: ZodFirstPartyTypeKind.ZodNever,
    ...processCreateParams(params)
  });
};
var ZodVoid = class extends ZodType {
  _parse(input3) {
    const parsedType = this._getType(input3);
    if (parsedType !== ZodParsedType.undefined) {
      const ctx = this._getOrReturnCtx(input3);
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.void,
        received: ctx.parsedType
      });
      return INVALID;
    }
    return OK(input3.data);
  }
};
ZodVoid.create = (params) => {
  return new ZodVoid({
    typeName: ZodFirstPartyTypeKind.ZodVoid,
    ...processCreateParams(params)
  });
};
var ZodArray = class _ZodArray extends ZodType {
  _parse(input3) {
    const { ctx, status } = this._processInputParams(input3);
    const def = this._def;
    if (ctx.parsedType !== ZodParsedType.array) {
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.array,
        received: ctx.parsedType
      });
      return INVALID;
    }
    if (def.exactLength !== null) {
      const tooBig = ctx.data.length > def.exactLength.value;
      const tooSmall = ctx.data.length < def.exactLength.value;
      if (tooBig || tooSmall) {
        addIssueToContext(ctx, {
          code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,
          minimum: tooSmall ? def.exactLength.value : void 0,
          maximum: tooBig ? def.exactLength.value : void 0,
          type: "array",
          inclusive: true,
          exact: true,
          message: def.exactLength.message
        });
        status.dirty();
      }
    }
    if (def.minLength !== null) {
      if (ctx.data.length < def.minLength.value) {
        addIssueToContext(ctx, {
          code: ZodIssueCode.too_small,
          minimum: def.minLength.value,
          type: "array",
          inclusive: true,
          exact: false,
          message: def.minLength.message
        });
        status.dirty();
      }
    }
    if (def.maxLength !== null) {
      if (ctx.data.length > def.maxLength.value) {
        addIssueToContext(ctx, {
          code: ZodIssueCode.too_big,
          maximum: def.maxLength.value,
          type: "array",
          inclusive: true,
          exact: false,
          message: def.maxLength.message
        });
        status.dirty();
      }
    }
    if (ctx.common.async) {
      return Promise.all([...ctx.data].map((item, i2) => {
        return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i2));
      })).then((result2) => {
        return ParseStatus.mergeArray(status, result2);
      });
    }
    const result = [...ctx.data].map((item, i2) => {
      return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i2));
    });
    return ParseStatus.mergeArray(status, result);
  }
  get element() {
    return this._def.type;
  }
  min(minLength, message) {
    return new _ZodArray({
      ...this._def,
      minLength: { value: minLength, message: errorUtil.toString(message) }
    });
  }
  max(maxLength, message) {
    return new _ZodArray({
      ...this._def,
      maxLength: { value: maxLength, message: errorUtil.toString(message) }
    });
  }
  length(len, message) {
    return new _ZodArray({
      ...this._def,
      exactLength: { value: len, message: errorUtil.toString(message) }
    });
  }
  nonempty(message) {
    return this.min(1, message);
  }
};
ZodArray.create = (schema2, params) => {
  return new ZodArray({
    type: schema2,
    minLength: null,
    maxLength: null,
    exactLength: null,
    typeName: ZodFirstPartyTypeKind.ZodArray,
    ...processCreateParams(params)
  });
};
function deepPartialify(schema2) {
  if (schema2 instanceof ZodObject) {
    const newShape = {};
    for (const key2 in schema2.shape) {
      const fieldSchema = schema2.shape[key2];
      newShape[key2] = ZodOptional.create(deepPartialify(fieldSchema));
    }
    return new ZodObject({
      ...schema2._def,
      shape: () => newShape
    });
  } else if (schema2 instanceof ZodArray) {
    return new ZodArray({
      ...schema2._def,
      type: deepPartialify(schema2.element)
    });
  } else if (schema2 instanceof ZodOptional) {
    return ZodOptional.create(deepPartialify(schema2.unwrap()));
  } else if (schema2 instanceof ZodNullable) {
    return ZodNullable.create(deepPartialify(schema2.unwrap()));
  } else if (schema2 instanceof ZodTuple) {
    return ZodTuple.create(schema2.items.map((item) => deepPartialify(item)));
  } else {
    return schema2;
  }
}
var ZodObject = class _ZodObject extends ZodType {
  constructor() {
    super(...arguments);
    this._cached = null;
    this.nonstrict = this.passthrough;
    this.augment = this.extend;
  }
  _getCached() {
    if (this._cached !== null)
      return this._cached;
    const shape = this._def.shape();
    const keys2 = util3.objectKeys(shape);
    return this._cached = { shape, keys: keys2 };
  }
  _parse(input3) {
    const parsedType = this._getType(input3);
    if (parsedType !== ZodParsedType.object) {
      const ctx2 = this._getOrReturnCtx(input3);
      addIssueToContext(ctx2, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.object,
        received: ctx2.parsedType
      });
      return INVALID;
    }
    const { status, ctx } = this._processInputParams(input3);
    const { shape, keys: shapeKeys } = this._getCached();
    const extraKeys = [];
    if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === "strip")) {
      for (const key2 in ctx.data) {
        if (!shapeKeys.includes(key2)) {
          extraKeys.push(key2);
        }
      }
    }
    const pairs2 = [];
    for (const key2 of shapeKeys) {
      const keyValidator = shape[key2];
      const value = ctx.data[key2];
      pairs2.push({
        key: { status: "valid", value: key2 },
        value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key2)),
        alwaysSet: key2 in ctx.data
      });
    }
    if (this._def.catchall instanceof ZodNever) {
      const unknownKeys = this._def.unknownKeys;
      if (unknownKeys === "passthrough") {
        for (const key2 of extraKeys) {
          pairs2.push({
            key: { status: "valid", value: key2 },
            value: { status: "valid", value: ctx.data[key2] }
          });
        }
      } else if (unknownKeys === "strict") {
        if (extraKeys.length > 0) {
          addIssueToContext(ctx, {
            code: ZodIssueCode.unrecognized_keys,
            keys: extraKeys
          });
          status.dirty();
        }
      } else if (unknownKeys === "strip") ;
      else {
        throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);
      }
    } else {
      const catchall = this._def.catchall;
      for (const key2 of extraKeys) {
        const value = ctx.data[key2];
        pairs2.push({
          key: { status: "valid", value: key2 },
          value: catchall._parse(
            new ParseInputLazyPath(ctx, value, ctx.path, key2)
            //, ctx.child(key), value, getParsedType(value)
          ),
          alwaysSet: key2 in ctx.data
        });
      }
    }
    if (ctx.common.async) {
      return Promise.resolve().then(async () => {
        const syncPairs = [];
        for (const pair of pairs2) {
          const key2 = await pair.key;
          const value = await pair.value;
          syncPairs.push({
            key: key2,
            value,
            alwaysSet: pair.alwaysSet
          });
        }
        return syncPairs;
      }).then((syncPairs) => {
        return ParseStatus.mergeObjectSync(status, syncPairs);
      });
    } else {
      return ParseStatus.mergeObjectSync(status, pairs2);
    }
  }
  get shape() {
    return this._def.shape();
  }
  strict(message) {
    errorUtil.errToObj;
    return new _ZodObject({
      ...this._def,
      unknownKeys: "strict",
      ...message !== void 0 ? {
        errorMap: (issue, ctx) => {
          var _a6, _b, _c, _d2;
          const defaultError = (_c = (_b = (_a6 = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a6, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;
          if (issue.code === "unrecognized_keys")
            return {
              message: (_d2 = errorUtil.errToObj(message).message) !== null && _d2 !== void 0 ? _d2 : defaultError
            };
          return {
            message: defaultError
          };
        }
      } : {}
    });
  }
  strip() {
    return new _ZodObject({
      ...this._def,
      unknownKeys: "strip"
    });
  }
  passthrough() {
    return new _ZodObject({
      ...this._def,
      unknownKeys: "passthrough"
    });
  }
  // const AugmentFactory =
  //   <Def extends ZodObjectDef>(def: Def) =>
  //   <Augmentation extends ZodRawShape>(
  //     augmentation: Augmentation
  //   ): ZodObject<
  //     extendShape<ReturnType<Def["shape"]>, Augmentation>,
  //     Def["unknownKeys"],
  //     Def["catchall"]
  //   > => {
  //     return new ZodObject({
  //       ...def,
  //       shape: () => ({
  //         ...def.shape(),
  //         ...augmentation,
  //       }),
  //     }) as any;
  //   };
  extend(augmentation) {
    return new _ZodObject({
      ...this._def,
      shape: () => ({
        ...this._def.shape(),
        ...augmentation
      })
    });
  }
  /**
   * Prior to zod@1.0.12 there was a bug in the
   * inferred type of merged objects. Please
   * upgrade if you are experiencing issues.
   */
  merge(merging) {
    const merged = new _ZodObject({
      unknownKeys: merging._def.unknownKeys,
      catchall: merging._def.catchall,
      shape: () => ({
        ...this._def.shape(),
        ...merging._def.shape()
      }),
      typeName: ZodFirstPartyTypeKind.ZodObject
    });
    return merged;
  }
  // merge<
  //   Incoming extends AnyZodObject,
  //   Augmentation extends Incoming["shape"],
  //   NewOutput extends {
  //     [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation
  //       ? Augmentation[k]["_output"]
  //       : k extends keyof Output
  //       ? Output[k]
  //       : never;
  //   },
  //   NewInput extends {
  //     [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation
  //       ? Augmentation[k]["_input"]
  //       : k extends keyof Input
  //       ? Input[k]
  //       : never;
  //   }
  // >(
  //   merging: Incoming
  // ): ZodObject<
  //   extendShape<T, ReturnType<Incoming["_def"]["shape"]>>,
  //   Incoming["_def"]["unknownKeys"],
  //   Incoming["_def"]["catchall"],
  //   NewOutput,
  //   NewInput
  // > {
  //   const merged: any = new ZodObject({
  //     unknownKeys: merging._def.unknownKeys,
  //     catchall: merging._def.catchall,
  //     shape: () =>
  //       objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),
  //     typeName: ZodFirstPartyTypeKind.ZodObject,
  //   }) as any;
  //   return merged;
  // }
  setKey(key2, schema2) {
    return this.augment({ [key2]: schema2 });
  }
  // merge<Incoming extends AnyZodObject>(
  //   merging: Incoming
  // ): //ZodObject<T & Incoming["_shape"], UnknownKeys, Catchall> = (merging) => {
  // ZodObject<
  //   extendShape<T, ReturnType<Incoming["_def"]["shape"]>>,
  //   Incoming["_def"]["unknownKeys"],
  //   Incoming["_def"]["catchall"]
  // > {
  //   // const mergedShape = objectUtil.mergeShapes(
  //   //   this._def.shape(),
  //   //   merging._def.shape()
  //   // );
  //   const merged: any = new ZodObject({
  //     unknownKeys: merging._def.unknownKeys,
  //     catchall: merging._def.catchall,
  //     shape: () =>
  //       objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),
  //     typeName: ZodFirstPartyTypeKind.ZodObject,
  //   }) as any;
  //   return merged;
  // }
  catchall(index4) {
    return new _ZodObject({
      ...this._def,
      catchall: index4
    });
  }
  pick(mask2) {
    const shape = {};
    util3.objectKeys(mask2).forEach((key2) => {
      if (mask2[key2] && this.shape[key2]) {
        shape[key2] = this.shape[key2];
      }
    });
    return new _ZodObject({
      ...this._def,
      shape: () => shape
    });
  }
  omit(mask2) {
    const shape = {};
    util3.objectKeys(this.shape).forEach((key2) => {
      if (!mask2[key2]) {
        shape[key2] = this.shape[key2];
      }
    });
    return new _ZodObject({
      ...this._def,
      shape: () => shape
    });
  }
  /**
   * @deprecated
   */
  deepPartial() {
    return deepPartialify(this);
  }
  partial(mask2) {
    const newShape = {};
    util3.objectKeys(this.shape).forEach((key2) => {
      const fieldSchema = this.shape[key2];
      if (mask2 && !mask2[key2]) {
        newShape[key2] = fieldSchema;
      } else {
        newShape[key2] = fieldSchema.optional();
      }
    });
    return new _ZodObject({
      ...this._def,
      shape: () => newShape
    });
  }
  required(mask2) {
    const newShape = {};
    util3.objectKeys(this.shape).forEach((key2) => {
      if (mask2 && !mask2[key2]) {
        newShape[key2] = this.shape[key2];
      } else {
        const fieldSchema = this.shape[key2];
        let newField = fieldSchema;
        while (newField instanceof ZodOptional) {
          newField = newField._def.innerType;
        }
        newShape[key2] = newField;
      }
    });
    return new _ZodObject({
      ...this._def,
      shape: () => newShape
    });
  }
  keyof() {
    return createZodEnum(util3.objectKeys(this.shape));
  }
};
ZodObject.create = (shape, params) => {
  return new ZodObject({
    shape: () => shape,
    unknownKeys: "strip",
    catchall: ZodNever.create(),
    typeName: ZodFirstPartyTypeKind.ZodObject,
    ...processCreateParams(params)
  });
};
ZodObject.strictCreate = (shape, params) => {
  return new ZodObject({
    shape: () => shape,
    unknownKeys: "strict",
    catchall: ZodNever.create(),
    typeName: ZodFirstPartyTypeKind.ZodObject,
    ...processCreateParams(params)
  });
};
ZodObject.lazycreate = (shape, params) => {
  return new ZodObject({
    shape,
    unknownKeys: "strip",
    catchall: ZodNever.create(),
    typeName: ZodFirstPartyTypeKind.ZodObject,
    ...processCreateParams(params)
  });
};
var ZodUnion = class extends ZodType {
  _parse(input3) {
    const { ctx } = this._processInputParams(input3);
    const options = this._def.options;
    function handleResults(results) {
      for (const result of results) {
        if (result.result.status === "valid") {
          return result.result;
        }
      }
      for (const result of results) {
        if (result.result.status === "dirty") {
          ctx.common.issues.push(...result.ctx.common.issues);
          return result.result;
        }
      }
      const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_union,
        unionErrors
      });
      return INVALID;
    }
    if (ctx.common.async) {
      return Promise.all(options.map(async (option3) => {
        const childCtx = {
          ...ctx,
          common: {
            ...ctx.common,
            issues: []
          },
          parent: null
        };
        return {
          result: await option3._parseAsync({
            data: ctx.data,
            path: ctx.path,
            parent: childCtx
          }),
          ctx: childCtx
        };
      })).then(handleResults);
    } else {
      let dirty = void 0;
      const issues = [];
      for (const option3 of options) {
        const childCtx = {
          ...ctx,
          common: {
            ...ctx.common,
            issues: []
          },
          parent: null
        };
        const result = option3._parseSync({
          data: ctx.data,
          path: ctx.path,
          parent: childCtx
        });
        if (result.status === "valid") {
          return result;
        } else if (result.status === "dirty" && !dirty) {
          dirty = { result, ctx: childCtx };
        }
        if (childCtx.common.issues.length) {
          issues.push(childCtx.common.issues);
        }
      }
      if (dirty) {
        ctx.common.issues.push(...dirty.ctx.common.issues);
        return dirty.result;
      }
      const unionErrors = issues.map((issues2) => new ZodError(issues2));
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_union,
        unionErrors
      });
      return INVALID;
    }
  }
  get options() {
    return this._def.options;
  }
};
ZodUnion.create = (types6, params) => {
  return new ZodUnion({
    options: types6,
    typeName: ZodFirstPartyTypeKind.ZodUnion,
    ...processCreateParams(params)
  });
};
var getDiscriminator = (type2) => {
  if (type2 instanceof ZodLazy) {
    return getDiscriminator(type2.schema);
  } else if (type2 instanceof ZodEffects) {
    return getDiscriminator(type2.innerType());
  } else if (type2 instanceof ZodLiteral) {
    return [type2.value];
  } else if (type2 instanceof ZodEnum) {
    return type2.options;
  } else if (type2 instanceof ZodNativeEnum) {
    return util3.objectValues(type2.enum);
  } else if (type2 instanceof ZodDefault) {
    return getDiscriminator(type2._def.innerType);
  } else if (type2 instanceof ZodUndefined) {
    return [void 0];
  } else if (type2 instanceof ZodNull) {
    return [null];
  } else if (type2 instanceof ZodOptional) {
    return [void 0, ...getDiscriminator(type2.unwrap())];
  } else if (type2 instanceof ZodNullable) {
    return [null, ...getDiscriminator(type2.unwrap())];
  } else if (type2 instanceof ZodBranded) {
    return getDiscriminator(type2.unwrap());
  } else if (type2 instanceof ZodReadonly) {
    return getDiscriminator(type2.unwrap());
  } else if (type2 instanceof ZodCatch) {
    return getDiscriminator(type2._def.innerType);
  } else {
    return [];
  }
};
var ZodDiscriminatedUnion = class _ZodDiscriminatedUnion extends ZodType {
  _parse(input3) {
    const { ctx } = this._processInputParams(input3);
    if (ctx.parsedType !== ZodParsedType.object) {
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.object,
        received: ctx.parsedType
      });
      return INVALID;
    }
    const discriminator = this.discriminator;
    const discriminatorValue = ctx.data[discriminator];
    const option3 = this.optionsMap.get(discriminatorValue);
    if (!option3) {
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_union_discriminator,
        options: Array.from(this.optionsMap.keys()),
        path: [discriminator]
      });
      return INVALID;
    }
    if (ctx.common.async) {
      return option3._parseAsync({
        data: ctx.data,
        path: ctx.path,
        parent: ctx
      });
    } else {
      return option3._parseSync({
        data: ctx.data,
        path: ctx.path,
        parent: ctx
      });
    }
  }
  get discriminator() {
    return this._def.discriminator;
  }
  get options() {
    return this._def.options;
  }
  get optionsMap() {
    return this._def.optionsMap;
  }
  /**
   * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.
   * However, it only allows a union of objects, all of which need to share a discriminator property. This property must
   * have a different value for each object in the union.
   * @param discriminator the name of the discriminator property
   * @param types an array of object schemas
   * @param params
   */
  static create(discriminator, options, params) {
    const optionsMap = /* @__PURE__ */ new Map();
    for (const type2 of options) {
      const discriminatorValues = getDiscriminator(type2.shape[discriminator]);
      if (!discriminatorValues.length) {
        throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`);
      }
      for (const value of discriminatorValues) {
        if (optionsMap.has(value)) {
          throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);
        }
        optionsMap.set(value, type2);
      }
    }
    return new _ZodDiscriminatedUnion({
      typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,
      discriminator,
      options,
      optionsMap,
      ...processCreateParams(params)
    });
  }
};
function mergeValues(a2, b) {
  const aType = getParsedType(a2);
  const bType = getParsedType(b);
  if (a2 === b) {
    return { valid: true, data: a2 };
  } else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {
    const bKeys = util3.objectKeys(b);
    const sharedKeys = util3.objectKeys(a2).filter((key2) => bKeys.indexOf(key2) !== -1);
    const newObj = { ...a2, ...b };
    for (const key2 of sharedKeys) {
      const sharedValue = mergeValues(a2[key2], b[key2]);
      if (!sharedValue.valid) {
        return { valid: false };
      }
      newObj[key2] = sharedValue.data;
    }
    return { valid: true, data: newObj };
  } else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {
    if (a2.length !== b.length) {
      return { valid: false };
    }
    const newArray = [];
    for (let index4 = 0; index4 < a2.length; index4++) {
      const itemA = a2[index4];
      const itemB = b[index4];
      const sharedValue = mergeValues(itemA, itemB);
      if (!sharedValue.valid) {
        return { valid: false };
      }
      newArray.push(sharedValue.data);
    }
    return { valid: true, data: newArray };
  } else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a2 === +b) {
    return { valid: true, data: a2 };
  } else {
    return { valid: false };
  }
}
var ZodIntersection = class extends ZodType {
  _parse(input3) {
    const { status, ctx } = this._processInputParams(input3);
    const handleParsed = (parsedLeft, parsedRight) => {
      if (isAborted(parsedLeft) || isAborted(parsedRight)) {
        return INVALID;
      }
      const merged = mergeValues(parsedLeft.value, parsedRight.value);
      if (!merged.valid) {
        addIssueToContext(ctx, {
          code: ZodIssueCode.invalid_intersection_types
        });
        return INVALID;
      }
      if (isDirty(parsedLeft) || isDirty(parsedRight)) {
        status.dirty();
      }
      return { status: status.value, value: merged.data };
    };
    if (ctx.common.async) {
      return Promise.all([
        this._def.left._parseAsync({
          data: ctx.data,
          path: ctx.path,
          parent: ctx
        }),
        this._def.right._parseAsync({
          data: ctx.data,
          path: ctx.path,
          parent: ctx
        })
      ]).then(([left2, right2]) => handleParsed(left2, right2));
    } else {
      return handleParsed(this._def.left._parseSync({
        data: ctx.data,
        path: ctx.path,
        parent: ctx
      }), this._def.right._parseSync({
        data: ctx.data,
        path: ctx.path,
        parent: ctx
      }));
    }
  }
};
ZodIntersection.create = (left2, right2, params) => {
  return new ZodIntersection({
    left: left2,
    right: right2,
    typeName: ZodFirstPartyTypeKind.ZodIntersection,
    ...processCreateParams(params)
  });
};
var ZodTuple = class _ZodTuple extends ZodType {
  _parse(input3) {
    const { status, ctx } = this._processInputParams(input3);
    if (ctx.parsedType !== ZodParsedType.array) {
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.array,
        received: ctx.parsedType
      });
      return INVALID;
    }
    if (ctx.data.length < this._def.items.length) {
      addIssueToContext(ctx, {
        code: ZodIssueCode.too_small,
        minimum: this._def.items.length,
        inclusive: true,
        exact: false,
        type: "array"
      });
      return INVALID;
    }
    const rest = this._def.rest;
    if (!rest && ctx.data.length > this._def.items.length) {
      addIssueToContext(ctx, {
        code: ZodIssueCode.too_big,
        maximum: this._def.items.length,
        inclusive: true,
        exact: false,
        type: "array"
      });
      status.dirty();
    }
    const items = [...ctx.data].map((item, itemIndex) => {
      const schema2 = this._def.items[itemIndex] || this._def.rest;
      if (!schema2)
        return null;
      return schema2._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));
    }).filter((x2) => !!x2);
    if (ctx.common.async) {
      return Promise.all(items).then((results) => {
        return ParseStatus.mergeArray(status, results);
      });
    } else {
      return ParseStatus.mergeArray(status, items);
    }
  }
  get items() {
    return this._def.items;
  }
  rest(rest) {
    return new _ZodTuple({
      ...this._def,
      rest
    });
  }
};
ZodTuple.create = (schemas, params) => {
  if (!Array.isArray(schemas)) {
    throw new Error("You must pass an array of schemas to z.tuple([ ... ])");
  }
  return new ZodTuple({
    items: schemas,
    typeName: ZodFirstPartyTypeKind.ZodTuple,
    rest: null,
    ...processCreateParams(params)
  });
};
var ZodRecord = class _ZodRecord extends ZodType {
  get keySchema() {
    return this._def.keyType;
  }
  get valueSchema() {
    return this._def.valueType;
  }
  _parse(input3) {
    const { status, ctx } = this._processInputParams(input3);
    if (ctx.parsedType !== ZodParsedType.object) {
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.object,
        received: ctx.parsedType
      });
      return INVALID;
    }
    const pairs2 = [];
    const keyType = this._def.keyType;
    const valueType = this._def.valueType;
    for (const key2 in ctx.data) {
      pairs2.push({
        key: keyType._parse(new ParseInputLazyPath(ctx, key2, ctx.path, key2)),
        value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key2], ctx.path, key2)),
        alwaysSet: key2 in ctx.data
      });
    }
    if (ctx.common.async) {
      return ParseStatus.mergeObjectAsync(status, pairs2);
    } else {
      return ParseStatus.mergeObjectSync(status, pairs2);
    }
  }
  get element() {
    return this._def.valueType;
  }
  static create(first2, second, third) {
    if (second instanceof ZodType) {
      return new _ZodRecord({
        keyType: first2,
        valueType: second,
        typeName: ZodFirstPartyTypeKind.ZodRecord,
        ...processCreateParams(third)
      });
    }
    return new _ZodRecord({
      keyType: ZodString.create(),
      valueType: first2,
      typeName: ZodFirstPartyTypeKind.ZodRecord,
      ...processCreateParams(second)
    });
  }
};
var ZodMap = class extends ZodType {
  get keySchema() {
    return this._def.keyType;
  }
  get valueSchema() {
    return this._def.valueType;
  }
  _parse(input3) {
    const { status, ctx } = this._processInputParams(input3);
    if (ctx.parsedType !== ZodParsedType.map) {
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.map,
        received: ctx.parsedType
      });
      return INVALID;
    }
    const keyType = this._def.keyType;
    const valueType = this._def.valueType;
    const pairs2 = [...ctx.data.entries()].map(([key2, value], index4) => {
      return {
        key: keyType._parse(new ParseInputLazyPath(ctx, key2, ctx.path, [index4, "key"])),
        value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index4, "value"]))
      };
    });
    if (ctx.common.async) {
      const finalMap = /* @__PURE__ */ new Map();
      return Promise.resolve().then(async () => {
        for (const pair of pairs2) {
          const key2 = await pair.key;
          const value = await pair.value;
          if (key2.status === "aborted" || value.status === "aborted") {
            return INVALID;
          }
          if (key2.status === "dirty" || value.status === "dirty") {
            status.dirty();
          }
          finalMap.set(key2.value, value.value);
        }
        return { status: status.value, value: finalMap };
      });
    } else {
      const finalMap = /* @__PURE__ */ new Map();
      for (const pair of pairs2) {
        const key2 = pair.key;
        const value = pair.value;
        if (key2.status === "aborted" || value.status === "aborted") {
          return INVALID;
        }
        if (key2.status === "dirty" || value.status === "dirty") {
          status.dirty();
        }
        finalMap.set(key2.value, value.value);
      }
      return { status: status.value, value: finalMap };
    }
  }
};
ZodMap.create = (keyType, valueType, params) => {
  return new ZodMap({
    valueType,
    keyType,
    typeName: ZodFirstPartyTypeKind.ZodMap,
    ...processCreateParams(params)
  });
};
var ZodSet = class _ZodSet extends ZodType {
  _parse(input3) {
    const { status, ctx } = this._processInputParams(input3);
    if (ctx.parsedType !== ZodParsedType.set) {
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.set,
        received: ctx.parsedType
      });
      return INVALID;
    }
    const def = this._def;
    if (def.minSize !== null) {
      if (ctx.data.size < def.minSize.value) {
        addIssueToContext(ctx, {
          code: ZodIssueCode.too_small,
          minimum: def.minSize.value,
          type: "set",
          inclusive: true,
          exact: false,
          message: def.minSize.message
        });
        status.dirty();
      }
    }
    if (def.maxSize !== null) {
      if (ctx.data.size > def.maxSize.value) {
        addIssueToContext(ctx, {
          code: ZodIssueCode.too_big,
          maximum: def.maxSize.value,
          type: "set",
          inclusive: true,
          exact: false,
          message: def.maxSize.message
        });
        status.dirty();
      }
    }
    const valueType = this._def.valueType;
    function finalizeSet(elements2) {
      const parsedSet = /* @__PURE__ */ new Set();
      for (const element5 of elements2) {
        if (element5.status === "aborted")
          return INVALID;
        if (element5.status === "dirty")
          status.dirty();
        parsedSet.add(element5.value);
      }
      return { status: status.value, value: parsedSet };
    }
    const elements = [...ctx.data.values()].map((item, i2) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i2)));
    if (ctx.common.async) {
      return Promise.all(elements).then((elements2) => finalizeSet(elements2));
    } else {
      return finalizeSet(elements);
    }
  }
  min(minSize, message) {
    return new _ZodSet({
      ...this._def,
      minSize: { value: minSize, message: errorUtil.toString(message) }
    });
  }
  max(maxSize, message) {
    return new _ZodSet({
      ...this._def,
      maxSize: { value: maxSize, message: errorUtil.toString(message) }
    });
  }
  size(size, message) {
    return this.min(size, message).max(size, message);
  }
  nonempty(message) {
    return this.min(1, message);
  }
};
ZodSet.create = (valueType, params) => {
  return new ZodSet({
    valueType,
    minSize: null,
    maxSize: null,
    typeName: ZodFirstPartyTypeKind.ZodSet,
    ...processCreateParams(params)
  });
};
var ZodFunction = class _ZodFunction extends ZodType {
  constructor() {
    super(...arguments);
    this.validate = this.implement;
  }
  _parse(input3) {
    const { ctx } = this._processInputParams(input3);
    if (ctx.parsedType !== ZodParsedType.function) {
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.function,
        received: ctx.parsedType
      });
      return INVALID;
    }
    function makeArgsIssue(args, error) {
      return makeIssue({
        data: args,
        path: ctx.path,
        errorMaps: [
          ctx.common.contextualErrorMap,
          ctx.schemaErrorMap,
          getErrorMap(),
          errorMap
        ].filter((x2) => !!x2),
        issueData: {
          code: ZodIssueCode.invalid_arguments,
          argumentsError: error
        }
      });
    }
    function makeReturnsIssue(returns, error) {
      return makeIssue({
        data: returns,
        path: ctx.path,
        errorMaps: [
          ctx.common.contextualErrorMap,
          ctx.schemaErrorMap,
          getErrorMap(),
          errorMap
        ].filter((x2) => !!x2),
        issueData: {
          code: ZodIssueCode.invalid_return_type,
          returnTypeError: error
        }
      });
    }
    const params = { errorMap: ctx.common.contextualErrorMap };
    const fn = ctx.data;
    if (this._def.returns instanceof ZodPromise) {
      const me = this;
      return OK(async function(...args) {
        const error = new ZodError([]);
        const parsedArgs = await me._def.args.parseAsync(args, params).catch((e2) => {
          error.addIssue(makeArgsIssue(args, e2));
          throw error;
        });
        const result = await Reflect.apply(fn, this, parsedArgs);
        const parsedReturns = await me._def.returns._def.type.parseAsync(result, params).catch((e2) => {
          error.addIssue(makeReturnsIssue(result, e2));
          throw error;
        });
        return parsedReturns;
      });
    } else {
      const me = this;
      return OK(function(...args) {
        const parsedArgs = me._def.args.safeParse(args, params);
        if (!parsedArgs.success) {
          throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);
        }
        const result = Reflect.apply(fn, this, parsedArgs.data);
        const parsedReturns = me._def.returns.safeParse(result, params);
        if (!parsedReturns.success) {
          throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);
        }
        return parsedReturns.data;
      });
    }
  }
  parameters() {
    return this._def.args;
  }
  returnType() {
    return this._def.returns;
  }
  args(...items) {
    return new _ZodFunction({
      ...this._def,
      args: ZodTuple.create(items).rest(ZodUnknown.create())
    });
  }
  returns(returnType) {
    return new _ZodFunction({
      ...this._def,
      returns: returnType
    });
  }
  implement(func) {
    const validatedFunc = this.parse(func);
    return validatedFunc;
  }
  strictImplement(func) {
    const validatedFunc = this.parse(func);
    return validatedFunc;
  }
  static create(args, returns, params) {
    return new _ZodFunction({
      args: args ? args : ZodTuple.create([]).rest(ZodUnknown.create()),
      returns: returns || ZodUnknown.create(),
      typeName: ZodFirstPartyTypeKind.ZodFunction,
      ...processCreateParams(params)
    });
  }
};
var ZodLazy = class extends ZodType {
  get schema() {
    return this._def.getter();
  }
  _parse(input3) {
    const { ctx } = this._processInputParams(input3);
    const lazySchema = this._def.getter();
    return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });
  }
};
ZodLazy.create = (getter, params) => {
  return new ZodLazy({
    getter,
    typeName: ZodFirstPartyTypeKind.ZodLazy,
    ...processCreateParams(params)
  });
};
var ZodLiteral = class extends ZodType {
  _parse(input3) {
    if (input3.data !== this._def.value) {
      const ctx = this._getOrReturnCtx(input3);
      addIssueToContext(ctx, {
        received: ctx.data,
        code: ZodIssueCode.invalid_literal,
        expected: this._def.value
      });
      return INVALID;
    }
    return { status: "valid", value: input3.data };
  }
  get value() {
    return this._def.value;
  }
};
ZodLiteral.create = (value, params) => {
  return new ZodLiteral({
    value,
    typeName: ZodFirstPartyTypeKind.ZodLiteral,
    ...processCreateParams(params)
  });
};
function createZodEnum(values, params) {
  return new ZodEnum({
    values,
    typeName: ZodFirstPartyTypeKind.ZodEnum,
    ...processCreateParams(params)
  });
}
var ZodEnum = class _ZodEnum extends ZodType {
  constructor() {
    super(...arguments);
    _ZodEnum_cache.set(this, void 0);
  }
  _parse(input3) {
    if (typeof input3.data !== "string") {
      const ctx = this._getOrReturnCtx(input3);
      const expectedValues = this._def.values;
      addIssueToContext(ctx, {
        expected: util3.joinValues(expectedValues),
        received: ctx.parsedType,
        code: ZodIssueCode.invalid_type
      });
      return INVALID;
    }
    if (!__classPrivateFieldGet(this, _ZodEnum_cache, "f")) {
      __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), "f");
    }
    if (!__classPrivateFieldGet(this, _ZodEnum_cache, "f").has(input3.data)) {
      const ctx = this._getOrReturnCtx(input3);
      const expectedValues = this._def.values;
      addIssueToContext(ctx, {
        received: ctx.data,
        code: ZodIssueCode.invalid_enum_value,
        options: expectedValues
      });
      return INVALID;
    }
    return OK(input3.data);
  }
  get options() {
    return this._def.values;
  }
  get enum() {
    const enumValues = {};
    for (const val of this._def.values) {
      enumValues[val] = val;
    }
    return enumValues;
  }
  get Values() {
    const enumValues = {};
    for (const val of this._def.values) {
      enumValues[val] = val;
    }
    return enumValues;
  }
  get Enum() {
    const enumValues = {};
    for (const val of this._def.values) {
      enumValues[val] = val;
    }
    return enumValues;
  }
  extract(values, newDef = this._def) {
    return _ZodEnum.create(values, {
      ...this._def,
      ...newDef
    });
  }
  exclude(values, newDef = this._def) {
    return _ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {
      ...this._def,
      ...newDef
    });
  }
};
_ZodEnum_cache = /* @__PURE__ */ new WeakMap();
ZodEnum.create = createZodEnum;
var ZodNativeEnum = class extends ZodType {
  constructor() {
    super(...arguments);
    _ZodNativeEnum_cache.set(this, void 0);
  }
  _parse(input3) {
    const nativeEnumValues = util3.getValidEnumValues(this._def.values);
    const ctx = this._getOrReturnCtx(input3);
    if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {
      const expectedValues = util3.objectValues(nativeEnumValues);
      addIssueToContext(ctx, {
        expected: util3.joinValues(expectedValues),
        received: ctx.parsedType,
        code: ZodIssueCode.invalid_type
      });
      return INVALID;
    }
    if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, "f")) {
      __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util3.getValidEnumValues(this._def.values)), "f");
    }
    if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, "f").has(input3.data)) {
      const expectedValues = util3.objectValues(nativeEnumValues);
      addIssueToContext(ctx, {
        received: ctx.data,
        code: ZodIssueCode.invalid_enum_value,
        options: expectedValues
      });
      return INVALID;
    }
    return OK(input3.data);
  }
  get enum() {
    return this._def.values;
  }
};
_ZodNativeEnum_cache = /* @__PURE__ */ new WeakMap();
ZodNativeEnum.create = (values, params) => {
  return new ZodNativeEnum({
    values,
    typeName: ZodFirstPartyTypeKind.ZodNativeEnum,
    ...processCreateParams(params)
  });
};
var ZodPromise = class extends ZodType {
  unwrap() {
    return this._def.type;
  }
  _parse(input3) {
    const { ctx } = this._processInputParams(input3);
    if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.promise,
        received: ctx.parsedType
      });
      return INVALID;
    }
    const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);
    return OK(promisified.then((data) => {
      return this._def.type.parseAsync(data, {
        path: ctx.path,
        errorMap: ctx.common.contextualErrorMap
      });
    }));
  }
};
ZodPromise.create = (schema2, params) => {
  return new ZodPromise({
    type: schema2,
    typeName: ZodFirstPartyTypeKind.ZodPromise,
    ...processCreateParams(params)
  });
};
var ZodEffects = class extends ZodType {
  innerType() {
    return this._def.schema;
  }
  sourceType() {
    return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects ? this._def.schema.sourceType() : this._def.schema;
  }
  _parse(input3) {
    const { status, ctx } = this._processInputParams(input3);
    const effect = this._def.effect || null;
    const checkCtx = {
      addIssue: (arg2) => {
        addIssueToContext(ctx, arg2);
        if (arg2.fatal) {
          status.abort();
        } else {
          status.dirty();
        }
      },
      get path() {
        return ctx.path;
      }
    };
    checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);
    if (effect.type === "preprocess") {
      const processed = effect.transform(ctx.data, checkCtx);
      if (ctx.common.async) {
        return Promise.resolve(processed).then(async (processed2) => {
          if (status.value === "aborted")
            return INVALID;
          const result = await this._def.schema._parseAsync({
            data: processed2,
            path: ctx.path,
            parent: ctx
          });
          if (result.status === "aborted")
            return INVALID;
          if (result.status === "dirty")
            return DIRTY(result.value);
          if (status.value === "dirty")
            return DIRTY(result.value);
          return result;
        });
      } else {
        if (status.value === "aborted")
          return INVALID;
        const result = this._def.schema._parseSync({
          data: processed,
          path: ctx.path,
          parent: ctx
        });
        if (result.status === "aborted")
          return INVALID;
        if (result.status === "dirty")
          return DIRTY(result.value);
        if (status.value === "dirty")
          return DIRTY(result.value);
        return result;
      }
    }
    if (effect.type === "refinement") {
      const executeRefinement = (acc) => {
        const result = effect.refinement(acc, checkCtx);
        if (ctx.common.async) {
          return Promise.resolve(result);
        }
        if (result instanceof Promise) {
          throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");
        }
        return acc;
      };
      if (ctx.common.async === false) {
        const inner2 = this._def.schema._parseSync({
          data: ctx.data,
          path: ctx.path,
          parent: ctx
        });
        if (inner2.status === "aborted")
          return INVALID;
        if (inner2.status === "dirty")
          status.dirty();
        executeRefinement(inner2.value);
        return { status: status.value, value: inner2.value };
      } else {
        return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner2) => {
          if (inner2.status === "aborted")
            return INVALID;
          if (inner2.status === "dirty")
            status.dirty();
          return executeRefinement(inner2.value).then(() => {
            return { status: status.value, value: inner2.value };
          });
        });
      }
    }
    if (effect.type === "transform") {
      if (ctx.common.async === false) {
        const base5 = this._def.schema._parseSync({
          data: ctx.data,
          path: ctx.path,
          parent: ctx
        });
        if (!isValid3(base5))
          return base5;
        const result = effect.transform(base5.value, checkCtx);
        if (result instanceof Promise) {
          throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);
        }
        return { status: status.value, value: result };
      } else {
        return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base5) => {
          if (!isValid3(base5))
            return base5;
          return Promise.resolve(effect.transform(base5.value, checkCtx)).then((result) => ({ status: status.value, value: result }));
        });
      }
    }
    util3.assertNever(effect);
  }
};
ZodEffects.create = (schema2, effect, params) => {
  return new ZodEffects({
    schema: schema2,
    typeName: ZodFirstPartyTypeKind.ZodEffects,
    effect,
    ...processCreateParams(params)
  });
};
ZodEffects.createWithPreprocess = (preprocess, schema2, params) => {
  return new ZodEffects({
    schema: schema2,
    effect: { type: "preprocess", transform: preprocess },
    typeName: ZodFirstPartyTypeKind.ZodEffects,
    ...processCreateParams(params)
  });
};
var ZodOptional = class extends ZodType {
  _parse(input3) {
    const parsedType = this._getType(input3);
    if (parsedType === ZodParsedType.undefined) {
      return OK(void 0);
    }
    return this._def.innerType._parse(input3);
  }
  unwrap() {
    return this._def.innerType;
  }
};
ZodOptional.create = (type2, params) => {
  return new ZodOptional({
    innerType: type2,
    typeName: ZodFirstPartyTypeKind.ZodOptional,
    ...processCreateParams(params)
  });
};
var ZodNullable = class extends ZodType {
  _parse(input3) {
    const parsedType = this._getType(input3);
    if (parsedType === ZodParsedType.null) {
      return OK(null);
    }
    return this._def.innerType._parse(input3);
  }
  unwrap() {
    return this._def.innerType;
  }
};
ZodNullable.create = (type2, params) => {
  return new ZodNullable({
    innerType: type2,
    typeName: ZodFirstPartyTypeKind.ZodNullable,
    ...processCreateParams(params)
  });
};
var ZodDefault = class extends ZodType {
  _parse(input3) {
    const { ctx } = this._processInputParams(input3);
    let data = ctx.data;
    if (ctx.parsedType === ZodParsedType.undefined) {
      data = this._def.defaultValue();
    }
    return this._def.innerType._parse({
      data,
      path: ctx.path,
      parent: ctx
    });
  }
  removeDefault() {
    return this._def.innerType;
  }
};
ZodDefault.create = (type2, params) => {
  return new ZodDefault({
    innerType: type2,
    typeName: ZodFirstPartyTypeKind.ZodDefault,
    defaultValue: typeof params.default === "function" ? params.default : () => params.default,
    ...processCreateParams(params)
  });
};
var ZodCatch = class extends ZodType {
  _parse(input3) {
    const { ctx } = this._processInputParams(input3);
    const newCtx = {
      ...ctx,
      common: {
        ...ctx.common,
        issues: []
      }
    };
    const result = this._def.innerType._parse({
      data: newCtx.data,
      path: newCtx.path,
      parent: {
        ...newCtx
      }
    });
    if (isAsync(result)) {
      return result.then((result2) => {
        return {
          status: "valid",
          value: result2.status === "valid" ? result2.value : this._def.catchValue({
            get error() {
              return new ZodError(newCtx.common.issues);
            },
            input: newCtx.data
          })
        };
      });
    } else {
      return {
        status: "valid",
        value: result.status === "valid" ? result.value : this._def.catchValue({
          get error() {
            return new ZodError(newCtx.common.issues);
          },
          input: newCtx.data
        })
      };
    }
  }
  removeCatch() {
    return this._def.innerType;
  }
};
ZodCatch.create = (type2, params) => {
  return new ZodCatch({
    innerType: type2,
    typeName: ZodFirstPartyTypeKind.ZodCatch,
    catchValue: typeof params.catch === "function" ? params.catch : () => params.catch,
    ...processCreateParams(params)
  });
};
var ZodNaN = class extends ZodType {
  _parse(input3) {
    const parsedType = this._getType(input3);
    if (parsedType !== ZodParsedType.nan) {
      const ctx = this._getOrReturnCtx(input3);
      addIssueToContext(ctx, {
        code: ZodIssueCode.invalid_type,
        expected: ZodParsedType.nan,
        received: ctx.parsedType
      });
      return INVALID;
    }
    return { status: "valid", value: input3.data };
  }
};
ZodNaN.create = (params) => {
  return new ZodNaN({
    typeName: ZodFirstPartyTypeKind.ZodNaN,
    ...processCreateParams(params)
  });
};
var BRAND = Symbol("zod_brand");
var ZodBranded = class extends ZodType {
  _parse(input3) {
    const { ctx } = this._processInputParams(input3);
    const data = ctx.data;
    return this._def.type._parse({
      data,
      path: ctx.path,
      parent: ctx
    });
  }
  unwrap() {
    return this._def.type;
  }
};
var ZodPipeline = class _ZodPipeline extends ZodType {
  _parse(input3) {
    const { status, ctx } = this._processInputParams(input3);
    if (ctx.common.async) {
      const handleAsync = async () => {
        const inResult = await this._def.in._parseAsync({
          data: ctx.data,
          path: ctx.path,
          parent: ctx
        });
        if (inResult.status === "aborted")
          return INVALID;
        if (inResult.status === "dirty") {
          status.dirty();
          return DIRTY(inResult.value);
        } else {
          return this._def.out._parseAsync({
            data: inResult.value,
            path: ctx.path,
            parent: ctx
          });
        }
      };
      return handleAsync();
    } else {
      const inResult = this._def.in._parseSync({
        data: ctx.data,
        path: ctx.path,
        parent: ctx
      });
      if (inResult.status === "aborted")
        return INVALID;
      if (inResult.status === "dirty") {
        status.dirty();
        return {
          status: "dirty",
          value: inResult.value
        };
      } else {
        return this._def.out._parseSync({
          data: inResult.value,
          path: ctx.path,
          parent: ctx
        });
      }
    }
  }
  static create(a2, b) {
    return new _ZodPipeline({
      in: a2,
      out: b,
      typeName: ZodFirstPartyTypeKind.ZodPipeline
    });
  }
};
var ZodReadonly = class extends ZodType {
  _parse(input3) {
    const result = this._def.innerType._parse(input3);
    const freeze2 = (data) => {
      if (isValid3(data)) {
        data.value = Object.freeze(data.value);
      }
      return data;
    };
    return isAsync(result) ? result.then((data) => freeze2(data)) : freeze2(result);
  }
  unwrap() {
    return this._def.innerType;
  }
};
ZodReadonly.create = (type2, params) => {
  return new ZodReadonly({
    innerType: type2,
    typeName: ZodFirstPartyTypeKind.ZodReadonly,
    ...processCreateParams(params)
  });
};
function custom(check2, params = {}, fatal) {
  if (check2)
    return ZodAny.create().superRefine((data, ctx) => {
      var _a6, _b;
      if (!check2(data)) {
        const p5 = typeof params === "function" ? params(data) : typeof params === "string" ? { message: params } : params;
        const _fatal = (_b = (_a6 = p5.fatal) !== null && _a6 !== void 0 ? _a6 : fatal) !== null && _b !== void 0 ? _b : true;
        const p22 = typeof p5 === "string" ? { message: p5 } : p5;
        ctx.addIssue({ code: "custom", ...p22, fatal: _fatal });
      }
    });
  return ZodAny.create();
}
var late = {
  object: ZodObject.lazycreate
};
var ZodFirstPartyTypeKind;
(function(ZodFirstPartyTypeKind2) {
  ZodFirstPartyTypeKind2["ZodString"] = "ZodString";
  ZodFirstPartyTypeKind2["ZodNumber"] = "ZodNumber";
  ZodFirstPartyTypeKind2["ZodNaN"] = "ZodNaN";
  ZodFirstPartyTypeKind2["ZodBigInt"] = "ZodBigInt";
  ZodFirstPartyTypeKind2["ZodBoolean"] = "ZodBoolean";
  ZodFirstPartyTypeKind2["ZodDate"] = "ZodDate";
  ZodFirstPartyTypeKind2["ZodSymbol"] = "ZodSymbol";
  ZodFirstPartyTypeKind2["ZodUndefined"] = "ZodUndefined";
  ZodFirstPartyTypeKind2["ZodNull"] = "ZodNull";
  ZodFirstPartyTypeKind2["ZodAny"] = "ZodAny";
  ZodFirstPartyTypeKind2["ZodUnknown"] = "ZodUnknown";
  ZodFirstPartyTypeKind2["ZodNever"] = "ZodNever";
  ZodFirstPartyTypeKind2["ZodVoid"] = "ZodVoid";
  ZodFirstPartyTypeKind2["ZodArray"] = "ZodArray";
  ZodFirstPartyTypeKind2["ZodObject"] = "ZodObject";
  ZodFirstPartyTypeKind2["ZodUnion"] = "ZodUnion";
  ZodFirstPartyTypeKind2["ZodDiscriminatedUnion"] = "ZodDiscriminatedUnion";
  ZodFirstPartyTypeKind2["ZodIntersection"] = "ZodIntersection";
  ZodFirstPartyTypeKind2["ZodTuple"] = "ZodTuple";
  ZodFirstPartyTypeKind2["ZodRecord"] = "ZodRecord";
  ZodFirstPartyTypeKind2["ZodMap"] = "ZodMap";
  ZodFirstPartyTypeKind2["ZodSet"] = "ZodSet";
  ZodFirstPartyTypeKind2["ZodFunction"] = "ZodFunction";
  ZodFirstPartyTypeKind2["ZodLazy"] = "ZodLazy";
  ZodFirstPartyTypeKind2["ZodLiteral"] = "ZodLiteral";
  ZodFirstPartyTypeKind2["ZodEnum"] = "ZodEnum";
  ZodFirstPartyTypeKind2["ZodEffects"] = "ZodEffects";
  ZodFirstPartyTypeKind2["ZodNativeEnum"] = "ZodNativeEnum";
  ZodFirstPartyTypeKind2["ZodOptional"] = "ZodOptional";
  ZodFirstPartyTypeKind2["ZodNullable"] = "ZodNullable";
  ZodFirstPartyTypeKind2["ZodDefault"] = "ZodDefault";
  ZodFirstPartyTypeKind2["ZodCatch"] = "ZodCatch";
  ZodFirstPartyTypeKind2["ZodPromise"] = "ZodPromise";
  ZodFirstPartyTypeKind2["ZodBranded"] = "ZodBranded";
  ZodFirstPartyTypeKind2["ZodPipeline"] = "ZodPipeline";
  ZodFirstPartyTypeKind2["ZodReadonly"] = "ZodReadonly";
})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));
var instanceOfType = (cls, params = {
  message: `Input not instance of ${cls.name}`
}) => custom((data) => data instanceof cls, params);
var stringType = ZodString.create;
var numberType = ZodNumber.create;
var nanType = ZodNaN.create;
var bigIntType = ZodBigInt.create;
var booleanType = ZodBoolean.create;
var dateType = ZodDate.create;
var symbolType = ZodSymbol.create;
var undefinedType = ZodUndefined.create;
var nullType = ZodNull.create;
var anyType = ZodAny.create;
var unknownType = ZodUnknown.create;
var neverType = ZodNever.create;
var voidType = ZodVoid.create;
var arrayType = ZodArray.create;
var objectType = ZodObject.create;
var strictObjectType = ZodObject.strictCreate;
var unionType = ZodUnion.create;
var discriminatedUnionType = ZodDiscriminatedUnion.create;
var intersectionType = ZodIntersection.create;
var tupleType = ZodTuple.create;
var recordType = ZodRecord.create;
var mapType = ZodMap.create;
var setType = ZodSet.create;
var functionType = ZodFunction.create;
var lazyType = ZodLazy.create;
var literalType = ZodLiteral.create;
var enumType = ZodEnum.create;
var nativeEnumType = ZodNativeEnum.create;
var promiseType = ZodPromise.create;
var effectsType = ZodEffects.create;
var optionalType = ZodOptional.create;
var nullableType = ZodNullable.create;
var preprocessType = ZodEffects.createWithPreprocess;
var pipelineType = ZodPipeline.create;
var ostring = () => stringType().optional();
var onumber = () => numberType().optional();
var oboolean = () => booleanType().optional();
var coerce = {
  string: ((arg2) => ZodString.create({ ...arg2, coerce: true })),
  number: ((arg2) => ZodNumber.create({ ...arg2, coerce: true })),
  boolean: ((arg2) => ZodBoolean.create({
    ...arg2,
    coerce: true
  })),
  bigint: ((arg2) => ZodBigInt.create({ ...arg2, coerce: true })),
  date: ((arg2) => ZodDate.create({ ...arg2, coerce: true }))
};
var NEVER = INVALID;
var z = /* @__PURE__ */ Object.freeze({
  __proto__: null,
  defaultErrorMap: errorMap,
  setErrorMap,
  getErrorMap,
  makeIssue,
  EMPTY_PATH,
  addIssueToContext,
  ParseStatus,
  INVALID,
  DIRTY,
  OK,
  isAborted,
  isDirty,
  isValid: isValid3,
  isAsync,
  get util() {
    return util3;
  },
  get objectUtil() {
    return objectUtil;
  },
  ZodParsedType,
  getParsedType,
  ZodType,
  datetimeRegex,
  ZodString,
  ZodNumber,
  ZodBigInt,
  ZodBoolean,
  ZodDate,
  ZodSymbol,
  ZodUndefined,
  ZodNull,
  ZodAny,
  ZodUnknown,
  ZodNever,
  ZodVoid,
  ZodArray,
  ZodObject,
  ZodUnion,
  ZodDiscriminatedUnion,
  ZodIntersection,
  ZodTuple,
  ZodRecord,
  ZodMap,
  ZodSet,
  ZodFunction,
  ZodLazy,
  ZodLiteral,
  ZodEnum,
  ZodNativeEnum,
  ZodPromise,
  ZodEffects,
  ZodTransformer: ZodEffects,
  ZodOptional,
  ZodNullable,
  ZodDefault,
  ZodCatch,
  ZodNaN,
  BRAND,
  ZodBranded,
  ZodPipeline,
  ZodReadonly,
  custom,
  Schema: ZodType,
  ZodSchema: ZodType,
  late,
  get ZodFirstPartyTypeKind() {
    return ZodFirstPartyTypeKind;
  },
  coerce,
  any: anyType,
  array: arrayType,
  bigint: bigIntType,
  boolean: booleanType,
  date: dateType,
  discriminatedUnion: discriminatedUnionType,
  effect: effectsType,
  "enum": enumType,
  "function": functionType,
  "instanceof": instanceOfType,
  intersection: intersectionType,
  lazy: lazyType,
  literal: literalType,
  map: mapType,
  nan: nanType,
  nativeEnum: nativeEnumType,
  never: neverType,
  "null": nullType,
  nullable: nullableType,
  number: numberType,
  object: objectType,
  oboolean,
  onumber,
  optional: optionalType,
  ostring,
  pipeline: pipelineType,
  preprocess: preprocessType,
  promise: promiseType,
  record: recordType,
  set: setType,
  strictObject: strictObjectType,
  string: stringType,
  symbol: symbolType,
  transformer: effectsType,
  tuple: tupleType,
  "undefined": undefinedType,
  union: unionType,
  unknown: unknownType,
  "void": voidType,
  NEVER,
  ZodIssueCode,
  quotelessJson,
  ZodError
});

// ../myst-cli/dist/init/jupyter-book/config.js
var import_node_path62 = require("path");
var JupyterBookConfig = z.object({
  title: z.string().nullish(),
  author: z.string().nullish(),
  copyright: z.string().nullish(),
  logo: z.string().nullish(),
  exclude_patterns: z.array(z.string()).nullish(),
  parse: z.object({
    myst_enable_extensions: z.union([z.null(), z.array(z.string())]).nullish(),
    myst_url_schemes: z.union([z.null(), z.array(z.string())]).nullish(),
    myst_dmath_double_inline: z.boolean().default(true)
  }).nullish(),
  execute: z.object({
    eval_regex: z.string().default("^.*$"),
    raise_on_error: z.boolean().default(false),
    show_tb: z.boolean().default(false),
    execute_notebooks: z.union([
      z.literal("auto"),
      z.literal("cache"),
      z.literal("force"),
      z.literal("inline"),
      z.literal("off"),
      z.literal(false)
    ]).default("auto"),
    cache: z.string().nullish(),
    timeout: z.number().gte(-1).default(30),
    allow_errors: z.boolean().default(false),
    stderr_output: z.enum(["show", "remove", "remove-warn", "warn", "error", "severe"]).default("show"),
    run_in_temp: z.boolean().default(false),
    exclude_patterns: z.array(z.string()).nullish()
  }).nullish(),
  html: z.object({
    favicon: z.string().nullish(),
    use_edit_page_button: z.boolean().nullish(),
    use_repository_button: z.boolean().nullish(),
    use_issues_button: z.boolean().nullish(),
    extra_footer: z.string().nullish(),
    // Legacy analytics field
    google_analytics_id: z.string().nullish(),
    analytics: z.object({
      plausible_analytics_domain: z.string().nullish(),
      google_analytics_id: z.string().nullish()
    }).nullish(),
    home_page_in_navbar: z.boolean().nullish(),
    baseurl: z.string().nullish(),
    comments: z.object({
      hypothesis: z.union([z.boolean(), z.record(z.any())]).nullish(),
      utterances: z.union([z.boolean(), z.record(z.any())]).nullish()
    }).nullish(),
    announcement: z.string().nullish()
  }).nullish(),
  latex: z.object({
    latex_engine: z.string().default("pdflatex"),
    use_jupyterbook_latex: z.boolean().nullish(),
    latex_documents: z.object({
      targetname: z.string().nullish()
    }).nullish()
  }).nullish(),
  bibtex_bibfiles: z.array(z.string()).nullish(),
  launch_buttons: z.object({
    notebook_interface: z.string().nullish(),
    binderhub_url: z.string().nullish(),
    jupyterhub_url: z.string().nullish(),
    thebe: z.boolean().nullish(),
    colab_url: z.string().nullish()
  }).nullish(),
  repository: z.object({
    url: z.string().nullish(),
    path_to_book: z.string().nullish(),
    branch: z.string().nullish()
  }).nullish(),
  sphinx: z.object({
    extra_extensions: z.union([z.null(), z.array(z.string())]).nullish(),
    local_extensions: z.union([z.null(), z.record(z.any())]).nullish(),
    recursive_update: z.boolean().nullish(),
    config: z.union([z.null(), z.record(z.any())]).nullish()
  }).nullish()
});
function validateJupyterBookConfig(config3) {
  const result = JupyterBookConfig.safeParse(config3);
  if (!result.success) {
    const errors4 = result.error.errors.map((issue) => `${issue.path.join(".")}: ${issue.message} (${issue.code})`);
    throw new Error(`Error(s) in parsing Jupyter Book configuration:
${errors4}`);
  } else {
    return result.data;
  }
}
function parseGitHubRepoURL(url) {
  const match3 = url.match(/(?:git@|https:\/\/)github.com[:\/](.*)(?:.git)?/);
  if (!match3) {
    return void 0;
  }
  return match3[1];
}
function upgradeConfig(data) {
  var _a6, _b, _c, _d2, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
  const project = {};
  const siteOptions = {};
  const site = {
    options: siteOptions,
    template: "book-theme"
  };
  if (notNullish(data.title)) {
    project.title = data.title;
  }
  if (notNullish(data.author)) {
    const authors = data.author.split(/,\s*(?:and\s)?\s*|\s+and\s+/);
    if (authors.length === 1) {
      project.authors = [{ name: data.author }];
    } else {
      project.authors = authors.map((name3) => ({ name: name3 }));
    }
  }
  if (notNullish(data.copyright)) {
    project.copyright = data.copyright;
  }
  if (notNullish(data.logo)) {
    siteOptions.logo = data.logo;
  }
  if (notNullish(data.exclude_patterns)) {
    project.exclude = data.exclude_patterns;
  }
  if (notNullish((_a6 = data.html) === null || _a6 === void 0 ? void 0 : _a6.favicon)) {
    siteOptions.favicon = data.html.favicon;
  }
  if (notNullish((_c = (_b = data.html) === null || _b === void 0 ? void 0 : _b.analytics) === null || _c === void 0 ? void 0 : _c.google_analytics_id)) {
    siteOptions.analytics_google = data.html.analytics.google_analytics_id;
  } else if (notNullish((_d2 = data.html) === null || _d2 === void 0 ? void 0 : _d2.google_analytics_id)) {
    siteOptions.analytics_google = data.html.google_analytics_id;
  }
  if (notNullish((_f = (_e = data.html) === null || _e === void 0 ? void 0 : _e.analytics) === null || _f === void 0 ? void 0 : _f.plausible_analytics_domain)) {
    siteOptions.analytics_plausible = data.html.analytics.plausible_analytics_domain;
  }
  const repo = notNullish((_g = data.repository) === null || _g === void 0 ? void 0 : _g.url) ? parseGitHubRepoURL((_h = data.repository) === null || _h === void 0 ? void 0 : _h.url) : void 0;
  if (notNullish(repo)) {
    project.github = repo;
  }
  if (notNullish(repo) && (notNullish((_j = data.launch_buttons) === null || _j === void 0 ? void 0 : _j.binderhub_url) || !!((_k = data.launch_buttons) === null || _k === void 0 ? void 0 : _k.thebe))) {
    project.thebe = {
      binder: {
        repo,
        provider: "github",
        url: (_m = (_l = data.launch_buttons) === null || _l === void 0 ? void 0 : _l.binderhub_url) !== null && _m !== void 0 ? _m : void 0,
        ref: (_p = (_o = data.repository) === null || _o === void 0 ? void 0 : _o.branch) !== null && _p !== void 0 ? _p : void 0
      }
    };
  }
  if (notNullish(data.bibtex_bibfiles)) {
    project.bibliography = data.bibtex_bibfiles;
  }
  if (notNullish((_r = (_q = data.latex) === null || _q === void 0 ? void 0 : _q.latex_documents) === null || _r === void 0 ? void 0 : _r.targetname)) {
    project.exports = (_s = project.exports) !== null && _s !== void 0 ? _s : [];
    const { name: name3 } = (0, import_node_path62.parse)(data.latex.latex_documents.targetname);
    project.exports.push({
      format: ExportFormats.pdf,
      template: "plain_latex_book",
      output: `exports/${name3}.pdf`
    });
  }
  return { project, site };
}

// ../myst-cli/dist/init/jupyter-book/toc.js
var import_node_path63 = require("path");
var import_node_process6 = require("process");
var TOCTreeOptions = z.object({
  caption: z.string(),
  hidden: z.boolean(),
  maxdepth: z.number(),
  numbered: z.boolean(),
  reversed: z.boolean(),
  titlesonly: z.boolean()
}).partial();
var FileEntry = z.object({
  file: z.string(),
  title: z.string().optional()
});
var URLEntry = z.object({
  url: z.string(),
  title: z.string().optional()
});
var GlobEntry = z.object({
  glob: z.string()
});
var NoFormatSubtree = TOCTreeOptions.extend({
  entries: z.lazy(() => NoFormatEntry.array())
});
var NoFormatShorthandSubtree = z.object({
  entries: z.lazy(() => NoFormatEntry.array()),
  options: TOCTreeOptions.optional()
});
var NoFormatHasSubtrees = z.object({
  subtrees: NoFormatSubtree.array()
});
var NoFormatEntry = z.union([
  FileEntry.and(NoFormatShorthandSubtree),
  FileEntry.merge(NoFormatHasSubtrees),
  FileEntry,
  URLEntry,
  GlobEntry
]);
var NoFormatTOCBase = z.object({
  root: z.string(),
  defaults: TOCTreeOptions.optional()
});
var NoFormatTOC = z.union([
  NoFormatTOCBase.and(NoFormatShorthandSubtree),
  NoFormatTOCBase.merge(NoFormatHasSubtrees).strict(),
  NoFormatTOCBase.strict()
]);
var ArticleSubtree = TOCTreeOptions.extend({
  sections: z.lazy(() => ArticleEntry.array())
});
var ArticleShorthandSubtree = z.object({
  sections: z.lazy(() => ArticleEntry.array()),
  options: TOCTreeOptions.optional()
});
var ArticleHasSubtrees = z.object({
  subtrees: ArticleSubtree.array()
});
var ArticleEntry = z.union([
  FileEntry.and(ArticleShorthandSubtree),
  FileEntry.merge(ArticleHasSubtrees),
  FileEntry,
  URLEntry,
  GlobEntry
]);
var ArticleTOCBase = z.object({
  root: z.string(),
  format: z.literal("jb-article"),
  defaults: TOCTreeOptions.optional()
});
var ArticleTOC = z.union([
  ArticleTOCBase.and(ArticleShorthandSubtree),
  ArticleTOCBase.merge(ArticleHasSubtrees).strict(),
  ArticleTOCBase.strict()
]);
var BookOuterSubtree = TOCTreeOptions.extend({
  chapters: z.lazy(() => BookEntry.array())
});
var BookInnerSubtree = TOCTreeOptions.extend({
  sections: z.lazy(() => BookEntry.array())
});
var BookShorthandOuterSubtree = z.object({
  chapters: z.lazy(() => BookEntry.array()),
  options: TOCTreeOptions.optional()
});
var BookShorthandInnerSubtree = z.object({
  sections: z.lazy(() => BookEntry.array()),
  options: TOCTreeOptions.optional()
});
var BookHasOuterSubtrees = z.object({
  parts: BookOuterSubtree.array()
});
var BookHasInnerSubtrees = z.object({
  subtrees: BookInnerSubtree.array()
});
var BookEntry = z.union([
  FileEntry.and(BookShorthandInnerSubtree),
  FileEntry.merge(BookHasInnerSubtrees),
  FileEntry,
  URLEntry,
  GlobEntry
]);
var BookTOCBase = z.object({
  root: z.string(),
  format: z.literal("jb-book"),
  defaults: TOCTreeOptions.optional()
});
var BookTOC = z.union([
  BookTOCBase.and(BookShorthandOuterSubtree),
  BookTOCBase.merge(BookHasOuterSubtrees).strict(),
  BookTOCBase.strict()
]);
var SphinxExternalTOC = z.union([ArticleTOC, BookTOC, NoFormatTOC]);
function validateSphinxExternalTOC(toc) {
  const result = SphinxExternalTOC.safeParse(toc);
  if (!result.success) {
    const errors4 = result.error.errors.map((issue) => `${issue.path.join(".")}: ${issue.message} (${issue.code})`);
    throw new Error(`Error(s) in parsing Jupyter Book TOC:
${errors4}`);
  } else {
    return result.data;
  }
}
function assertNever2() {
  throw new Error("unreachable code");
}
function maybeResolveDocument(dir, name3, session) {
  const resolved = resolveExtension((0, import_node_path63.join)(dir, name3));
  if (resolved) {
    return (0, import_node_path63.relative)(dir, resolved);
  }
  session.log.error(`Could not find a file named ${name3} (declared in table of contents)`);
  return name3;
}
function convertNoFormat(session, dir, data) {
  const rootEntry = { file: maybeResolveDocument(dir, data.root, session) };
  const convertEntry = (item) => {
    let entry;
    if ("file" in item) {
      entry = {
        file: maybeResolveDocument(dir, item.file, session),
        title: item.title
      };
    } else if ("url" in item) {
      entry = {
        url: item.url,
        title: item.title
      };
    } else if ("glob" in item) {
      entry = {
        pattern: item.glob
      };
    } else {
      assertNever2();
    }
    if ("subtrees" in item || "entries" in item) {
      const children = convertHasOrIsSubtree(item);
      entry = { ...entry, children };
    }
    return entry;
  };
  const convertSubtree = (item, options, index4) => {
    var _a6;
    return {
      title: (_a6 = options === null || options === void 0 ? void 0 : options.caption) !== null && _a6 !== void 0 ? _a6 : `Subtree ${index4}`,
      children: item.entries.map(convertEntry)
    };
  };
  const convertHasOrIsSubtree = (item) => {
    if ("subtrees" in item) {
      return item.subtrees.map((subtree, i2) => convertSubtree(subtree, subtree, i2));
    } else {
      const subtree = convertSubtree(item, item.options, 0);
      return subtree.children;
    }
  };
  const entries2 = [rootEntry];
  if ("subtrees" in data || "entries" in data) {
    entries2.push(...convertHasOrIsSubtree(data));
  }
  return entries2;
}
function convertBookToNoFormat(data) {
  const convertEntry = (item) => {
    let { sections, subtrees, ...result2 } = item;
    if ("sections" in item || "subtrees" in item) {
      result2 = { ...result2, ...convertHasOrIsInnerSubtree(item) };
    }
    return result2;
  };
  const convertInnerSubtree = (item) => {
    const { sections, ...result2 } = item;
    return { ...result2, entries: sections.map(convertEntry) };
  };
  const convertHasOrIsInnerSubtree = (item) => {
    if ("subtrees" in item) {
      const { subtrees, ...rest2 } = item;
      return { ...rest2, subtrees: subtrees.map(convertInnerSubtree) };
    } else {
      const { options, ...rest2 } = item;
      return { options, ...convertInnerSubtree(rest2) };
    }
  };
  const convertOuterSubtree = (item) => {
    const { chapters, ...rest2 } = item;
    return { ...rest2, entries: chapters.map(convertEntry) };
  };
  const convertHasOrIsOuterSubtree = (item) => {
    if ("parts" in item) {
      const { parts, ...rest2 } = item;
      return { ...rest2, subtrees: parts.map(convertOuterSubtree) };
    } else {
      const { options, ...rest2 } = item;
      return { options, ...convertOuterSubtree(rest2) };
    }
  };
  const { root: root6, defaults: defaults3, format: _2, ...rest } = data;
  let result = {
    root: root6,
    defaults: defaults3
  };
  if ("chapters" in rest || "parts" in rest) {
    result = { ...result, ...convertHasOrIsOuterSubtree(rest) };
  }
  return result;
}
function convertArticleToNoFormat(data) {
  const convertEntry = (item) => {
    let { sections, subtrees, ...result2 } = item;
    if ("sections" in item || "subtrees" in item) {
      result2 = { ...result2, ...convertHasOrIsSubtree(item) };
    }
    return result2;
  };
  const convertSubtree = (item) => {
    const { sections, ...result2 } = item;
    return { ...result2, entries: sections.map(convertEntry) };
  };
  const convertHasOrIsSubtree = (item) => {
    if ("subtrees" in item) {
      const { subtrees, ...rest2 } = item;
      return { ...rest2, subtrees: subtrees.map(convertSubtree) };
    } else {
      const { options, ...rest2 } = item;
      return { options, ...convertSubtree(rest2) };
    }
  };
  const { root: root6, defaults: defaults3, format: _2, ...rest } = data;
  let result = {
    root: root6,
    defaults: defaults3
  };
  if ("sections" in rest || "subtrees" in rest) {
    result = { ...result, ...convertHasOrIsSubtree(rest) };
  }
  return result;
}
function upgradeTOC(session, data) {
  const dir = (0, import_node_process6.cwd)();
  let dataNoFormat;
  if ("format" in data) {
    switch (data.format) {
      case "jb-book":
        {
          dataNoFormat = convertBookToNoFormat(data);
        }
        break;
      case "jb-article":
        {
          dataNoFormat = convertArticleToNoFormat(data);
        }
        break;
    }
  } else {
    dataNoFormat = data;
  }
  return convertNoFormat(session, dir, dataNoFormat);
}

// ../myst-cli/dist/init/jupyter-book/syntax.js
var import_promises3 = __toESM(require("fs/promises"), 1);
var import_node_path64 = require("path");
var SPLIT_PATTERN = /\r\n|\r|\n/;
async function upgradeProjectSyntax(session) {
  let documentPaths;
  session.log.debug(source_default.dim(`Upgrading legacy-formatted files in a temporary location`));
  try {
    const allFiles = (await makeExecutable("git ls-files", null)()).split(SPLIT_PATTERN);
    documentPaths = allFiles.filter((path45) => {
      const { ext: ext2 } = (0, import_node_path64.parse)(path45);
      return ext2 == ".md" || ext2 == ".ipynb";
    });
  } catch (error) {
    documentPaths = await glob("**/*.{md,ipynb}");
  }
  const tmpPath = createTempFolder(session);
  const maybeUpgradedPaths = await Promise.all(documentPaths.map((path45) => upgradeDocument(session, path45, tmpPath, process.cwd())));
  session.log.debug(source_default.dim(`Copying upgraded files into project`));
  await Promise.all(maybeUpgradedPaths.filter((item) => item !== void 0).map((fn) => fn()));
}
async function upgradeDocument(session, path45, tmpPath, basePath) {
  const relativePath = (0, import_node_path64.relative)(basePath, path45);
  const upgradeFilePath = (0, import_node_path64.join)(tmpPath, relativePath);
  const { dir: temporaryFileDir } = (0, import_node_path64.parse)(upgradeFilePath);
  await import_promises3.default.mkdir(temporaryFileDir, { recursive: true });
  const { base: base5, ext: ext2, dir: originalDir } = (0, import_node_path64.parse)(path45);
  const performUpgrade = async () => {
    const backupFilePath = (0, import_node_path64.join)(originalDir, `.${base5}.bak`);
    await import_promises3.default.rename(path45, backupFilePath);
    await import_promises3.default.rename(upgradeFilePath, path45);
  };
  switch (ext2) {
    case ".md":
      {
        const data = (await import_promises3.default.readFile(path45)).toString();
        const maybeNewLines = await upgradeContent(data.split(SPLIT_PATTERN));
        if (maybeNewLines !== void 0) {
          await import_promises3.default.writeFile(upgradeFilePath, maybeNewLines.join("\n"));
          session.log.info(source_default.dim(`Upgraded ${source_default.blue(path45)}`));
          return performUpgrade;
        }
      }
      break;
    case ".ipynb":
      {
        const data = (await import_promises3.default.readFile(path45)).toString();
        const notebook = JSON.parse(data);
        const cellDidUpgrade = await Promise.all(notebook.cells.filter((cell3) => cell3.cell_type === "markdown").map(async (cell3) => {
          const maybeNewLines = await upgradeContent(cell3.source.map((line2) => line2.replace("\n", "")));
          if (maybeNewLines !== void 0) {
            cell3.source = maybeNewLines.map((line2) => `${line2}
`);
            return true;
          } else {
            return false;
          }
        }));
        if (cellDidUpgrade.some((x2) => x2)) {
          const newData = JSON.stringify(notebook);
          await import_promises3.default.writeFile(upgradeFilePath, newData);
          session.log.info(source_default.dim(`Upgraded ${source_default.blue(path45)}`));
          return performUpgrade;
        }
      }
      return void 0;
  }
}
async function upgradeContent(documentLines) {
  let didUpgrade = false;
  for (const transform3 of [upgradeGlossary, upgradeNotes]) {
    const nextLines = await transform3(documentLines);
    didUpgrade = didUpgrade || nextLines !== void 0;
    documentLines = nextLines !== null && nextLines !== void 0 ? nextLines : documentLines;
  }
  return didUpgrade ? documentLines : void 0;
}
var admonitionPattern = /^(attention|caution|danger|error|important|hint|note|seealso|tip|warning)$/;
async function upgradeNotes(documentLines) {
  const data = documentLines.join("\n");
  const mdast2 = mystParse(data);
  const caseInsensitivePattern = new RegExp(admonitionPattern.source, admonitionPattern.flags + "i");
  const directiveNodes = selectAll("mystDirective", mdast2);
  const mixedCaseAdmonitions = directiveNodes.filter((item) => {
    const name3 = item.name;
    return name3.match(caseInsensitivePattern) && !name3.match(admonitionPattern);
  });
  mixedCaseAdmonitions.forEach((node3) => {
    const start = node3.position.start.line;
    const newLine = documentLines[start - 1].replace(
      // Find :::{fOo} or ```{fOo}
      // eslint-disable-next-line no-useless-escape
      /^(:{3,}|`{3,})\s*\{([^\}]+)\}/,
      // Replace it with :::{foo} or ```{foo}
      (_2, prefix2, name3) => `${prefix2}{${name3.toLowerCase()}}`
    );
    documentLines[start - 1] = newLine;
  });
  if (mixedCaseAdmonitions.length) {
    return documentLines;
  } else {
    return void 0;
  }
}
async function upgradeGlossary(documentLines) {
  var _a6, _b, _c, _d2;
  const data = documentLines.join("\n");
  const mdast2 = mystParse(data);
  const glossaryNodes = selectAll("mystDirective[name=glossary]", mdast2);
  let editOffset = 0;
  for (const node3 of glossaryNodes) {
    const nodeLines = node3.value.split(SPLIT_PATTERN);
    let inDefinition = false;
    let indentSize = 0;
    const entries2 = [];
    for (let i2 = 0; i2 < nodeLines.length; i2++) {
      const line2 = nodeLines[i2];
      if (/^\.\.\s/.test(line2) || !line2.length) {
        continue;
      } else if (/^[^\s]/.test(line2[0])) {
        if (line2.startsWith(".. ")) {
          continue;
        }
        if (inDefinition || !entries2.length) {
          entries2.push({
            definitionLines: [],
            termLines: [{ content: line2, offset: i2 }]
          });
          inDefinition = false;
        } else if (entries2.length) {
          entries2[entries2.length - 1].termLines.push({ content: line2, offset: i2 });
        }
      } else {
        inDefinition = true;
        indentSize = line2.length - line2.replace(/^\s+/, "").length;
        if (entries2.length) {
          entries2[entries2.length - 1].definitionLines.push({
            content: line2.slice(indentSize),
            offset: i2
          });
        }
      }
    }
    const newLines = [];
    for (let i2 = 0; i2 < entries2.length; i2++) {
      const entry = entries2[i2];
      const { termLines, definitionLines } = entry;
      const [firstDefinitionLine, ...restDefinitionLines] = definitionLines;
      const [firstTerm, ...restTerms] = termLines;
      const firstTermValue = firstTerm.content.split(/\s+:\s+/, 1)[0];
      newLines.push(firstTermValue, `: ${firstDefinitionLine.content}`, ...restDefinitionLines.map((line2) => `  ${line2.content}`));
      if (restTerms) {
        const parsedTerm = mystParse(firstTermValue);
        const termName = toText(parsedTerm);
        for (const { content: content3 } of restTerms) {
          const term = content3.split(/\s+:\s+/, 1)[0];
          newLines.push(
            // Separate from parent term
            "",
            term,
            `: {term}\`${termName}\``
          );
        }
      }
      const isFinalEntry = i2 === entries2.length - 1;
      if (!isFinalEntry) {
        newLines.push("");
      }
    }
    const nodeSpan = { start: (_b = (_a6 = node3.position) === null || _a6 === void 0 ? void 0 : _a6.start) === null || _b === void 0 ? void 0 : _b.line, stop: (_d2 = (_c = node3.position) === null || _c === void 0 ? void 0 : _c.end) === null || _d2 === void 0 ? void 0 : _d2.line };
    const spanLength = nodeSpan.stop - nodeSpan.start - 1;
    documentLines.splice(nodeSpan.start + editOffset, spanLength, ...newLines);
    editOffset += newLines.length - spanLength;
  }
  if (glossaryNodes.length) {
    return documentLines;
  } else {
    return void 0;
  }
}

// ../myst-cli/dist/init/jupyter-book/upgrade.js
async function upgradeJupyterBook(session, configFile) {
  var _a6, _b;
  const config3 = {
    version: 1,
    project: {}
  };
  if (!await fsExists("_config.yml")) {
    throw new Error(`${source_default.blue("_config.yml")} is a required Jupyter Book configuration file`);
  }
  const configContent = await import_promises4.default.readFile("_config.yml", { encoding: "utf-8" });
  const configData2 = validateJupyterBookConfig(js_yaml_default.load(configContent));
  if (defined2(configData2)) {
    session.log.info(`Migrating Jupyter Book configuration to ${source_default.blue("myst.yml")}`);
    ({ site: config3.site, project: config3.project } = upgradeConfig(configData2));
  }
  if (!await fsExists("_toc.yml")) {
    throw new Error(`${source_default.blue("_toc.yml")} is a required Jupyter Book configuration file`);
  }
  const tocContent = await import_promises4.default.readFile("_toc.yml", { encoding: "utf-8" });
  const tocData = validateSphinxExternalTOC(js_yaml_default.load(tocContent));
  if (defined2(tocData)) {
    session.log.info(`Migrating TOC to ${source_default.blue("myst.yml")}`);
    config3.project.toc = upgradeTOC(session, tocData);
  }
  config3.site = (_a6 = config3.site) !== null && _a6 !== void 0 ? _a6 : {};
  config3.site.options = (_b = config3.site.options) !== null && _b !== void 0 ? _b : {};
  session.log.debug(source_default.dim(`Setting ${source_default.blue("site.options.folders")} to ${source_default.blue("true")}`));
  config3.site.options.folders = true;
  await upgradeProjectSyntax(session);
  await import_promises4.default.writeFile(configFile, js_yaml_default.dump(config3));
  await import_promises4.default.rename("_config.yml", "._config.yml.bak");
  session.log.debug(source_default.dim(`Renamed ${source_default.blue("_config.yml")} to ${source_default.blue("._config.yml.bak")}`));
  await import_promises4.default.rename("_toc.yml", "._toc.yml.bak");
  session.log.debug(source_default.dim(`Renamed ${source_default.blue("_toc.yml")} to ${source_default.blue("._toc.yml.bak")}`));
}

// ../myst-cli/dist/init/init.js
var VERSION_CONFIG = "# See docs at: https://mystmd.org/guide/frontmatter\nversion: 1\n";
function createProjectConfig({ github } = {}) {
  return `project:
  id: ${v4_default()}
  # title:
  # description:
  # keywords: []
  # authors: []
  ${github ? `github: ${github}` : "# github:"}
  # To autogenerate a Table of Contents, run "${binaryName()} init --write-toc"
`;
}
var SITE_CONFIG = `site:
  template: book-theme
  # options:
  #   favicon: favicon.ico
  #   logo: site_logo.png
`;
var IGNORED_PATTERNS = ["_build"];
var GITIGNORE = `# ${readableName()} build outputs
${IGNORED_PATTERNS.join("\n")}
`;
var WELCOME = () => `
${source_default.bold.yellowBright.italic(`Welcome to the ${readableName()} CLI!`)} \u{1F389} \u{1F680}

${source_default.bold.green(`${binaryName()} init`)} walks you through creating a ${source_default.bold.blue("myst.yml")} file.

You can use ${readableName()} to:

 - create interactive ${source_default.bold.magenta("websites")} from markdown and Jupyter Notebooks \u{1F4C8}
 - ${source_default.bold.magenta("build & export")} professional PDFs and Word documents \u{1F4C4}

Learn more about this CLI and MyST Markdown at: ${source_default.bold(homeURL())}

`;
async function writeGitignore(session) {
  const inGit = await checkFolderIsGit();
  if (!inGit)
    return;
  const allIgnored = (await Promise.all(IGNORED_PATTERNS.map(checkIgnore))).every((x2) => x2);
  if (allIgnored)
    return;
  if (import_node_fs43.default.existsSync(".gitignore")) {
    session.log.info("\u{1F4BE} Updating .gitignore");
    const contents = import_node_fs43.default.readFileSync(".gitignore").toString();
    import_node_fs43.default.writeFileSync(".gitignore", `${contents}
${GITIGNORE}`);
  } else {
    session.log.info("\u{1F4BE} Writing default .gitignore");
    import_node_fs43.default.writeFileSync(".gitignore", GITIGNORE);
  }
}
async function init2(session, opts) {
  const { project, site, writeTOC, ghPages, ghCurvenote } = opts;
  if (ghPages)
    return githubPagesAction(session);
  if (ghCurvenote)
    return githubCurvenoteAction(session);
  if (!project && !site && !writeTOC) {
    session.log.info(WELCOME());
  }
  await writeGitignore(session);
  await loadConfig(session, ".");
  const state = session.store.getState();
  const existingRawConfig = selectors_exports.selectLocalRawConfig(state, ".");
  const existingProjectConfig = selectors_exports.selectLocalProjectConfig(state, ".");
  const existingSiteConfig = selectors_exports.selectLocalSiteConfig(state, ".");
  const existingConfigFile = selectors_exports.selectLocalConfigFile(state, ".");
  const github = await getGithubUrl();
  if (existingRawConfig) {
    let projectConfig;
    let siteConfig;
    if (project || !site && !project) {
      if (existingProjectConfig) {
        session.log.info(`\u2705 Project already initialized with config file: ${existingConfigFile}`);
      } else {
        projectConfig = js_yaml_default.load(createProjectConfig({ github })).project;
      }
    }
    if (site || !site && !project) {
      if (existingSiteConfig) {
        session.log.info(`\u2705 Site already initialized with config file: ${existingConfigFile}`);
      } else {
        siteConfig = js_yaml_default.load(SITE_CONFIG).site;
      }
    }
    if (siteConfig || projectConfig) {
      session.log.info(`\u{1F4BE} Updating config file: ${existingConfigFile}`);
      await writeConfigs(session, ".", { siteConfig, projectConfig });
    }
  } else {
    let didUpgrade = false;
    if (await fsExists("_config.yml")) {
      const configFile = defaultConfigFile(session, ".");
      const promptUpgrade = await lib_default2.prompt([
        {
          name: "upgrade",
          message: [
            `\u{1F4D8} Found a legacy Jupyter Book. To proceed, myst needs to perform an upgrade which will:
`,
            source_default.dim(`\u2023 Upgrade any Sphinx-style glossaries to MyST-style glossaries
\u2023 Upgrade any case-insensitive admonition names to lowercase (${source_default.blue("Note")} \u2192 ${source_default.blue("note")})
\u2023 Migrate configuration from ${source_default.blue("_config.yml")} and (if applicable) ${source_default.blue("_toc.yml")} files
\u2023 Rename any modified or unneeded files so that they are hidden

`),
            // Just for a few months while people get used to JB2. Remove after Feb 2026.
            source_default.dim(`If you prefer to continue using Jupyter Book 1.x, run: ${source_default.blue('pip install "jupyter-book<2"')}

`),
            `Are you willing to proceed with the upgrade?`
          ].join(""),
          type: "confirm",
          default: true
        }
      ]);
      if (!promptUpgrade.upgrade) {
        return;
      }
      session.log.info(`\u{1F4BE} Writing new config file: ${source_default.blue(import_node_path65.default.resolve(configFile))}`);
      try {
        await upgradeJupyterBook(session, configFile);
        didUpgrade = true;
      } catch (err) {
        session.log.error(`\u274C An error occurred during Jupyter Book upgrade:

${err}

`);
        session.log.warn(`Ignoring Jupyter Book configuration!`);
      }
    }
    if (!didUpgrade) {
      const configFile = defaultConfigFile(session, ".");
      let configData2;
      let configDoc;
      if (site && !project) {
        configData2 = `${VERSION_CONFIG}${SITE_CONFIG}`;
        configDoc = "site";
      } else if (project && !site) {
        configData2 = `${VERSION_CONFIG}${createProjectConfig({ github })}`;
        configDoc = "project";
      } else {
        configData2 = `${VERSION_CONFIG}${createProjectConfig({ github })}${SITE_CONFIG}`;
        configDoc = "project and site";
      }
      session.log.info(`\u{1F4BE} Writing new ${configDoc} config file: ${source_default.blue(import_node_path65.default.resolve(configFile))}`);
      import_node_fs43.default.writeFileSync(configFile, configData2);
    }
  }
  if (writeTOC) {
    await loadConfig(session, ".");
    await loadProjectFromDisk(session, ".", { writeTOC });
  }
  if (writeTOC || project || site)
    return;
  session.log.info("");
  const promptStart = await lib_default2.prompt([
    {
      name: "start",
      message: `Would you like to run ${source_default.green(`${binaryName()} start`)} now?`,
      type: "confirm",
      default: true
    }
  ]);
  if (!promptStart.start) {
    session.log.info(source_default.dim(`
You can start the ${readableName()} web server later with:`), source_default.bold(`${binaryName()} start`), source_default.dim("\nYou can build all content with:"), source_default.bold(`${binaryName()} build --all`));
    process.exit(0);
  }
  await startServer(session, {});
}

// ../myst-cli/dist/plugins.js
var import_node_fs44 = __toESM(require("fs"), 1);
var import_node_url3 = require("url");

// ../myst-cli/dist/executablePlugin.js
var import_node_child_process2 = require("child_process");
function executeSyncParser(session, name3, data, path45, kind) {
  const { stdout, status, stderr } = (0, import_node_child_process2.spawnSync)(path45, [`--${kind}`, name3], {
    input: JSON.stringify(data),
    encoding: "utf-8",
    stdio: ["pipe", "pipe", "pipe"]
  });
  if (status) {
    throw new Error(`Non-zero error code after running executable "${path45}" during execution of ${kind} '${name3}'

${stderr}`);
  } else {
    if (stderr.length) {
      session.log.debug(`

${stderr}

`);
    }
    return JSON.parse(stdout);
  }
}
async function executeAsyncParser(session, name3, data, path45, kind) {
  const proc2 = (0, import_node_child_process2.spawn)(path45, [`--${kind}`, name3]);
  proc2.stdin.write(JSON.stringify(data));
  proc2.stdin.end();
  const stdoutBuffers = [];
  proc2.stdout.on("data", (chunk) => {
    stdoutBuffers.push(chunk);
  });
  const stderrBuffers = [];
  proc2.stderr.on("data", (chunk) => {
    stderrBuffers.push(chunk);
  });
  const exitCode = await new Promise((resolve9) => {
    proc2.on("close", (code7) => resolve9(code7));
  });
  if (exitCode) {
    const stderr = Buffer.concat(stderrBuffers).toString();
    throw new Error(`Non-zero error code after running executable "${path45}" during execution of ${kind} '${name3}'

${stderr}`);
  } else if (stderrBuffers.length) {
    const stderr = Buffer.concat(stderrBuffers).toString();
    session.log.debug(`

${stderr}

`);
  }
  const stdout = Buffer.concat(stdoutBuffers).toString();
  return JSON.parse(stdout);
}
function wrapDirective(session, directive, path45) {
  return {
    ...directive,
    run: (data) => {
      return executeSyncParser(session, directive.name, data, path45, "directive");
    }
  };
}
function wrapRole(session, role, path45) {
  return {
    ...role,
    run: (data) => {
      return executeSyncParser(session, role.name, data, path45, "role");
    }
  };
}
function wrapTransform(session, transform3, path45) {
  return {
    ...transform3,
    plugin: () => {
      return async (node3) => {
        const result = await executeAsyncParser(session, transform3.name, node3, path45, "transform");
        Object.assign(node3, result);
      };
    }
  };
}
async function loadExecutablePlugin(session, path45) {
  var _a6, _b, _c;
  const proc2 = (0, import_node_child_process2.spawn)(path45, []);
  const stdoutBuffers = [];
  proc2.stdout.on("data", (chunk) => {
    stdoutBuffers.push(chunk);
  });
  const stderrBuffers = [];
  proc2.stderr.on("data", (chunk) => {
    stderrBuffers.push(chunk);
  });
  const exitCode = await new Promise((resolve9) => {
    proc2.on("close", (code7) => resolve9(code7));
  });
  if (exitCode) {
    const stderr = Buffer.concat(stderrBuffers).toString();
    session.log.debug(`

${stderr}

`);
    return void 0;
  }
  const stdout = Buffer.concat(stdoutBuffers).toString();
  const spec = JSON.parse(stdout);
  return {
    ...spec,
    directives: ((_a6 = spec.directives) !== null && _a6 !== void 0 ? _a6 : []).map((directive) => wrapDirective(session, directive, path45)),
    roles: ((_b = spec.roles) !== null && _b !== void 0 ? _b : []).map((role) => wrapRole(session, role, path45)),
    transforms: ((_c = spec.transforms) !== null && _c !== void 0 ? _c : []).map((transform3) => wrapTransform(session, transform3, path45))
  };
}

// ../myst-cli/dist/plugins.js
async function loadPlugins(session, plugins3) {
  var _a6;
  const loadedPlugins = (_a6 = session.plugins) !== null && _a6 !== void 0 ? _a6 : {
    directives: [],
    roles: [],
    transforms: [],
    paths: []
  };
  const newPlugins = [...new Map(plugins3.map((info) => [info.path, info])).values()].filter(
    // ...and filter out already loaded plugins
    ({ path: path45 }) => !loadedPlugins.paths.includes(path45)
  );
  if (newPlugins.length === 0) {
    return loadedPlugins;
  }
  session.log.debug(`Loading plugins: "${newPlugins.map((info) => `${info.path} (${info.type})`).join('", "')}"`);
  const modules = await Promise.all(newPlugins.map(async (info) => {
    var _a7, _b;
    const { type: type2, path: path45 } = info;
    switch (type2) {
      case "executable": {
        if (!((_a7 = import_node_fs44.default.statSync(path45, { throwIfNoEntry: false })) === null || _a7 === void 0 ? void 0 : _a7.isFile())) {
          addWarningForFile(session, path45, `Unknown plugin "${path45}", it must be an executable file`, "error", {
            ruleId: RuleId.pluginLoads
          });
          return null;
        }
        try {
          import_node_fs44.default.accessSync(path45, import_node_fs44.default.constants.X_OK);
        } catch (err) {
          addWarningForFile(session, path45, `Plugin "${path45}" is not executable`, "error", {
            ruleId: RuleId.pluginLoads
          });
          return null;
        }
        const plugin5 = await loadExecutablePlugin(session, info.path);
        if (plugin5 === void 0) {
          addWarningForFile(session, path45, `Non-zero exit code after querying executable "${path45}" for plugin specification`, "error", {
            ruleId: RuleId.pluginLoads
          });
          return null;
        }
        return { path: path45, module: { plugin: plugin5 } };
      }
      case "javascript": {
        if (!((_b = import_node_fs44.default.statSync(path45, { throwIfNoEntry: false })) === null || _b === void 0 ? void 0 : _b.isFile()) || !path45.endsWith(".mjs")) {
          addWarningForFile(session, path45, `Unknown plugin "${path45}", it must be an mjs file`, "error", {
            ruleId: RuleId.pluginLoads
          });
          return null;
        }
        let module2;
        const pathURL = (0, import_node_url3.pathToFileURL)(path45);
        try {
          module2 = await import(pathURL.toString());
        } catch (error) {
          session.log.debug(`

${error === null || error === void 0 ? void 0 : error.stack}

`);
          addWarningForFile(session, path45, `Error reading plugin: ${error}`, "error", {
            ruleId: RuleId.pluginLoads
          });
          return null;
        }
        return { path: path45, module: module2 };
      }
    }
  }));
  modules.forEach((pluginLoader) => {
    var _a7;
    if (!pluginLoader)
      return;
    const plugin5 = pluginLoader.module.default || pluginLoader.module.plugin;
    const directives = plugin5.directives || pluginLoader.module.directives;
    const roles = plugin5.roles || pluginLoader.module.roles;
    const transforms = plugin5.transforms || pluginLoader.module.transforms;
    session.log.info(`\u{1F50C} ${(_a7 = plugin5 === null || plugin5 === void 0 ? void 0 : plugin5.name) !== null && _a7 !== void 0 ? _a7 : "Unnamed Plugin"} (${pluginLoader.path}) loaded: ${plural("%s directive(s)", directives)}, ${plural("%s role(s)", roles)}, ${plural("%s transform(s)", transforms)}`);
    if (directives) {
      loadedPlugins.directives.push(...directives);
    }
    if (roles) {
      loadedPlugins.roles.push(...roles);
    }
    if (transforms) {
      loadedPlugins.transforms.push(...transforms);
    }
    loadedPlugins.paths.push(pluginLoader.path);
  });
  session.plugins = loadedPlugins;
  session.log.debug("Plugins loaded");
  return loadedPlugins;
}

// ../myst-cli/dist/session/session.js
var import_node_path66 = __toESM(require("path"), 1);

// ../../node_modules/package-json/index.js
var import_node_http5 = require("http");
var import_node_https3 = require("https");

// ../../node_modules/@sindresorhus/is/dist/index.js
var typedArrayTypeNames = [
  "Int8Array",
  "Uint8Array",
  "Uint8ClampedArray",
  "Int16Array",
  "Uint16Array",
  "Int32Array",
  "Uint32Array",
  "Float32Array",
  "Float64Array",
  "BigInt64Array",
  "BigUint64Array"
];
function isTypedArrayName(name3) {
  return typedArrayTypeNames.includes(name3);
}
var objectTypeNames = [
  "Function",
  "Generator",
  "AsyncGenerator",
  "GeneratorFunction",
  "AsyncGeneratorFunction",
  "AsyncFunction",
  "Observable",
  "Array",
  "Buffer",
  "Blob",
  "Object",
  "RegExp",
  "Date",
  "Error",
  "Map",
  "Set",
  "WeakMap",
  "WeakSet",
  "WeakRef",
  "ArrayBuffer",
  "SharedArrayBuffer",
  "DataView",
  "Promise",
  "URL",
  "FormData",
  "URLSearchParams",
  "HTMLElement",
  "NaN",
  ...typedArrayTypeNames
];
function isObjectTypeName(name3) {
  return objectTypeNames.includes(name3);
}
var primitiveTypeNames = [
  "null",
  "undefined",
  "string",
  "number",
  "bigint",
  "boolean",
  "symbol"
];
function isPrimitiveTypeName(name3) {
  return primitiveTypeNames.includes(name3);
}
function isOfType(type2) {
  return (value) => typeof value === type2;
}
var { toString: toString5 } = Object.prototype;
var getObjectType = (value) => {
  const objectTypeName = toString5.call(value).slice(8, -1);
  if (/HTML\w+Element/.test(objectTypeName) && is3.domElement(value)) {
    return "HTMLElement";
  }
  if (isObjectTypeName(objectTypeName)) {
    return objectTypeName;
  }
  return void 0;
};
var isObjectOfType = (type2) => (value) => getObjectType(value) === type2;
function is3(value) {
  if (value === null) {
    return "null";
  }
  switch (typeof value) {
    case "undefined": {
      return "undefined";
    }
    case "string": {
      return "string";
    }
    case "number": {
      return Number.isNaN(value) ? "NaN" : "number";
    }
    case "boolean": {
      return "boolean";
    }
    case "function": {
      return "Function";
    }
    case "bigint": {
      return "bigint";
    }
    case "symbol": {
      return "symbol";
    }
    default:
  }
  if (is3.observable(value)) {
    return "Observable";
  }
  if (is3.array(value)) {
    return "Array";
  }
  if (is3.buffer(value)) {
    return "Buffer";
  }
  const tagType = getObjectType(value);
  if (tagType) {
    return tagType;
  }
  if (value instanceof String || value instanceof Boolean || value instanceof Number) {
    throw new TypeError("Please don't use object wrappers for primitive types");
  }
  return "Object";
}
is3.undefined = isOfType("undefined");
is3.string = isOfType("string");
var isNumberType = isOfType("number");
is3.number = (value) => isNumberType(value) && !is3.nan(value);
is3.bigint = isOfType("bigint");
is3.function_ = isOfType("function");
is3.null_ = (value) => value === null;
is3.class_ = (value) => is3.function_(value) && value.toString().startsWith("class ");
is3.boolean = (value) => value === true || value === false;
is3.symbol = isOfType("symbol");
is3.numericString = (value) => is3.string(value) && !is3.emptyStringOrWhitespace(value) && !Number.isNaN(Number(value));
is3.array = (value, assertion) => {
  if (!Array.isArray(value)) {
    return false;
  }
  if (!is3.function_(assertion)) {
    return true;
  }
  return value.every((element5) => assertion(element5));
};
is3.buffer = (value) => {
  var _a6, _b;
  return ((_b = (_a6 = value == null ? void 0 : value.constructor) == null ? void 0 : _a6.isBuffer) == null ? void 0 : _b.call(_a6, value)) ?? false;
};
is3.blob = (value) => isObjectOfType("Blob")(value);
is3.nullOrUndefined = (value) => is3.null_(value) || is3.undefined(value);
is3.object = (value) => !is3.null_(value) && (typeof value === "object" || is3.function_(value));
is3.iterable = (value) => is3.function_(value == null ? void 0 : value[Symbol.iterator]);
is3.asyncIterable = (value) => is3.function_(value == null ? void 0 : value[Symbol.asyncIterator]);
is3.generator = (value) => is3.iterable(value) && is3.function_(value == null ? void 0 : value.next) && is3.function_(value == null ? void 0 : value.throw);
is3.asyncGenerator = (value) => is3.asyncIterable(value) && is3.function_(value.next) && is3.function_(value.throw);
is3.nativePromise = (value) => isObjectOfType("Promise")(value);
var hasPromiseApi = (value) => is3.function_(value == null ? void 0 : value.then) && is3.function_(value == null ? void 0 : value.catch);
is3.promise = (value) => is3.nativePromise(value) || hasPromiseApi(value);
is3.generatorFunction = isObjectOfType("GeneratorFunction");
is3.asyncGeneratorFunction = (value) => getObjectType(value) === "AsyncGeneratorFunction";
is3.asyncFunction = (value) => getObjectType(value) === "AsyncFunction";
is3.boundFunction = (value) => is3.function_(value) && !value.hasOwnProperty("prototype");
is3.regExp = isObjectOfType("RegExp");
is3.date = isObjectOfType("Date");
is3.error = isObjectOfType("Error");
is3.map = (value) => isObjectOfType("Map")(value);
is3.set = (value) => isObjectOfType("Set")(value);
is3.weakMap = (value) => isObjectOfType("WeakMap")(value);
is3.weakSet = (value) => isObjectOfType("WeakSet")(value);
is3.weakRef = (value) => isObjectOfType("WeakRef")(value);
is3.int8Array = isObjectOfType("Int8Array");
is3.uint8Array = isObjectOfType("Uint8Array");
is3.uint8ClampedArray = isObjectOfType("Uint8ClampedArray");
is3.int16Array = isObjectOfType("Int16Array");
is3.uint16Array = isObjectOfType("Uint16Array");
is3.int32Array = isObjectOfType("Int32Array");
is3.uint32Array = isObjectOfType("Uint32Array");
is3.float32Array = isObjectOfType("Float32Array");
is3.float64Array = isObjectOfType("Float64Array");
is3.bigInt64Array = isObjectOfType("BigInt64Array");
is3.bigUint64Array = isObjectOfType("BigUint64Array");
is3.arrayBuffer = isObjectOfType("ArrayBuffer");
is3.sharedArrayBuffer = isObjectOfType("SharedArrayBuffer");
is3.dataView = isObjectOfType("DataView");
is3.enumCase = (value, targetEnum) => Object.values(targetEnum).includes(value);
is3.directInstanceOf = (instance, class_) => Object.getPrototypeOf(instance) === class_.prototype;
is3.urlInstance = (value) => isObjectOfType("URL")(value);
is3.urlString = (value) => {
  if (!is3.string(value)) {
    return false;
  }
  try {
    new URL(value);
    return true;
  } catch {
    return false;
  }
};
is3.truthy = (value) => Boolean(value);
is3.falsy = (value) => !value;
is3.nan = (value) => Number.isNaN(value);
is3.primitive = (value) => is3.null_(value) || isPrimitiveTypeName(typeof value);
is3.integer = (value) => Number.isInteger(value);
is3.safeInteger = (value) => Number.isSafeInteger(value);
is3.plainObject = (value) => {
  if (typeof value !== "object" || value === null) {
    return false;
  }
  const prototype = Object.getPrototypeOf(value);
  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);
};
is3.typedArray = (value) => isTypedArrayName(getObjectType(value));
var isValidLength = (value) => is3.safeInteger(value) && value >= 0;
is3.arrayLike = (value) => !is3.nullOrUndefined(value) && !is3.function_(value) && isValidLength(value.length);
is3.inRange = (value, range) => {
  if (is3.number(range)) {
    return value >= Math.min(0, range) && value <= Math.max(range, 0);
  }
  if (is3.array(range) && range.length === 2) {
    return value >= Math.min(...range) && value <= Math.max(...range);
  }
  throw new TypeError(`Invalid range: ${JSON.stringify(range)}`);
};
var NODE_TYPE_ELEMENT = 1;
var DOM_PROPERTIES_TO_CHECK = [
  "innerHTML",
  "ownerDocument",
  "style",
  "attributes",
  "nodeValue"
];
is3.domElement = (value) => is3.object(value) && value.nodeType === NODE_TYPE_ELEMENT && is3.string(value.nodeName) && !is3.plainObject(value) && DOM_PROPERTIES_TO_CHECK.every((property) => property in value);
is3.observable = (value) => {
  var _a6, _b;
  if (!value) {
    return false;
  }
  if (value === ((_a6 = value[Symbol.observable]) == null ? void 0 : _a6.call(value))) {
    return true;
  }
  if (value === ((_b = value["@@observable"]) == null ? void 0 : _b.call(value))) {
    return true;
  }
  return false;
};
is3.nodeStream = (value) => is3.object(value) && is3.function_(value.pipe) && !is3.observable(value);
is3.infinite = (value) => value === Number.POSITIVE_INFINITY || value === Number.NEGATIVE_INFINITY;
var isAbsoluteMod2 = (remainder) => (value) => is3.integer(value) && Math.abs(value % 2) === remainder;
is3.evenInteger = isAbsoluteMod2(0);
is3.oddInteger = isAbsoluteMod2(1);
is3.emptyArray = (value) => is3.array(value) && value.length === 0;
is3.nonEmptyArray = (value) => is3.array(value) && value.length > 0;
is3.emptyString = (value) => is3.string(value) && value.length === 0;
var isWhiteSpaceString = (value) => is3.string(value) && !/\S/.test(value);
is3.emptyStringOrWhitespace = (value) => is3.emptyString(value) || isWhiteSpaceString(value);
is3.nonEmptyString = (value) => is3.string(value) && value.length > 0;
is3.nonEmptyStringAndNotWhitespace = (value) => is3.string(value) && !is3.emptyStringOrWhitespace(value);
is3.emptyObject = (value) => is3.object(value) && !is3.map(value) && !is3.set(value) && Object.keys(value).length === 0;
is3.nonEmptyObject = (value) => is3.object(value) && !is3.map(value) && !is3.set(value) && Object.keys(value).length > 0;
is3.emptySet = (value) => is3.set(value) && value.size === 0;
is3.nonEmptySet = (value) => is3.set(value) && value.size > 0;
is3.emptyMap = (value) => is3.map(value) && value.size === 0;
is3.nonEmptyMap = (value) => is3.map(value) && value.size > 0;
is3.propertyKey = (value) => is3.any([is3.string, is3.number, is3.symbol], value);
is3.formData = (value) => isObjectOfType("FormData")(value);
is3.urlSearchParams = (value) => isObjectOfType("URLSearchParams")(value);
var predicateOnArray = (method, predicate, values) => {
  if (!is3.function_(predicate)) {
    throw new TypeError(`Invalid predicate: ${JSON.stringify(predicate)}`);
  }
  if (values.length === 0) {
    throw new TypeError("Invalid number of values");
  }
  return method.call(values, predicate);
};
is3.any = (predicate, ...values) => {
  const predicates = is3.array(predicate) ? predicate : [predicate];
  return predicates.some((singlePredicate) => predicateOnArray(Array.prototype.some, singlePredicate, values));
};
is3.all = (predicate, ...values) => predicateOnArray(Array.prototype.every, predicate, values);
var assertType = (condition, description, value, options = {}) => {
  if (!condition) {
    const { multipleValues } = options;
    const valuesMessage = multipleValues ? `received values of types ${[
      ...new Set(value.map((singleValue) => `\`${is3(singleValue)}\``))
    ].join(", ")}` : `received value of type \`${is3(value)}\``;
    throw new TypeError(`Expected value which is \`${description}\`, ${valuesMessage}.`);
  }
};
var assert7 = {
  // Unknowns.
  undefined: (value) => assertType(is3.undefined(value), "undefined", value),
  string: (value) => assertType(is3.string(value), "string", value),
  number: (value) => assertType(is3.number(value), "number", value),
  bigint: (value) => assertType(is3.bigint(value), "bigint", value),
  // eslint-disable-next-line @typescript-eslint/ban-types
  function_: (value) => assertType(is3.function_(value), "Function", value),
  null_: (value) => assertType(is3.null_(value), "null", value),
  class_: (value) => assertType(is3.class_(value), "Class", value),
  boolean: (value) => assertType(is3.boolean(value), "boolean", value),
  symbol: (value) => assertType(is3.symbol(value), "symbol", value),
  numericString: (value) => assertType(is3.numericString(value), "string with a number", value),
  array: (value, assertion) => {
    const assert8 = assertType;
    assert8(is3.array(value), "Array", value);
    if (assertion) {
      value.forEach(assertion);
    }
  },
  buffer: (value) => assertType(is3.buffer(value), "Buffer", value),
  blob: (value) => assertType(is3.blob(value), "Blob", value),
  nullOrUndefined: (value) => assertType(is3.nullOrUndefined(value), "null or undefined", value),
  object: (value) => assertType(is3.object(value), "Object", value),
  iterable: (value) => assertType(is3.iterable(value), "Iterable", value),
  asyncIterable: (value) => assertType(is3.asyncIterable(value), "AsyncIterable", value),
  generator: (value) => assertType(is3.generator(value), "Generator", value),
  asyncGenerator: (value) => assertType(is3.asyncGenerator(value), "AsyncGenerator", value),
  nativePromise: (value) => assertType(is3.nativePromise(value), "native Promise", value),
  promise: (value) => assertType(is3.promise(value), "Promise", value),
  generatorFunction: (value) => assertType(is3.generatorFunction(value), "GeneratorFunction", value),
  asyncGeneratorFunction: (value) => assertType(is3.asyncGeneratorFunction(value), "AsyncGeneratorFunction", value),
  // eslint-disable-next-line @typescript-eslint/ban-types
  asyncFunction: (value) => assertType(is3.asyncFunction(value), "AsyncFunction", value),
  // eslint-disable-next-line @typescript-eslint/ban-types
  boundFunction: (value) => assertType(is3.boundFunction(value), "Function", value),
  regExp: (value) => assertType(is3.regExp(value), "RegExp", value),
  date: (value) => assertType(is3.date(value), "Date", value),
  error: (value) => assertType(is3.error(value), "Error", value),
  map: (value) => assertType(is3.map(value), "Map", value),
  set: (value) => assertType(is3.set(value), "Set", value),
  weakMap: (value) => assertType(is3.weakMap(value), "WeakMap", value),
  weakSet: (value) => assertType(is3.weakSet(value), "WeakSet", value),
  weakRef: (value) => assertType(is3.weakRef(value), "WeakRef", value),
  int8Array: (value) => assertType(is3.int8Array(value), "Int8Array", value),
  uint8Array: (value) => assertType(is3.uint8Array(value), "Uint8Array", value),
  uint8ClampedArray: (value) => assertType(is3.uint8ClampedArray(value), "Uint8ClampedArray", value),
  int16Array: (value) => assertType(is3.int16Array(value), "Int16Array", value),
  uint16Array: (value) => assertType(is3.uint16Array(value), "Uint16Array", value),
  int32Array: (value) => assertType(is3.int32Array(value), "Int32Array", value),
  uint32Array: (value) => assertType(is3.uint32Array(value), "Uint32Array", value),
  float32Array: (value) => assertType(is3.float32Array(value), "Float32Array", value),
  float64Array: (value) => assertType(is3.float64Array(value), "Float64Array", value),
  bigInt64Array: (value) => assertType(is3.bigInt64Array(value), "BigInt64Array", value),
  bigUint64Array: (value) => assertType(is3.bigUint64Array(value), "BigUint64Array", value),
  arrayBuffer: (value) => assertType(is3.arrayBuffer(value), "ArrayBuffer", value),
  sharedArrayBuffer: (value) => assertType(is3.sharedArrayBuffer(value), "SharedArrayBuffer", value),
  dataView: (value) => assertType(is3.dataView(value), "DataView", value),
  enumCase: (value, targetEnum) => assertType(is3.enumCase(value, targetEnum), "EnumCase", value),
  urlInstance: (value) => assertType(is3.urlInstance(value), "URL", value),
  urlString: (value) => assertType(is3.urlString(value), "string with a URL", value),
  truthy: (value) => assertType(is3.truthy(value), "truthy", value),
  falsy: (value) => assertType(is3.falsy(value), "falsy", value),
  nan: (value) => assertType(is3.nan(value), "NaN", value),
  primitive: (value) => assertType(is3.primitive(value), "primitive", value),
  integer: (value) => assertType(is3.integer(value), "integer", value),
  safeInteger: (value) => assertType(is3.safeInteger(value), "integer", value),
  plainObject: (value) => assertType(is3.plainObject(value), "plain object", value),
  typedArray: (value) => assertType(is3.typedArray(value), "TypedArray", value),
  arrayLike: (value) => assertType(is3.arrayLike(value), "array-like", value),
  domElement: (value) => assertType(is3.domElement(value), "HTMLElement", value),
  observable: (value) => assertType(is3.observable(value), "Observable", value),
  nodeStream: (value) => assertType(is3.nodeStream(value), "Node.js Stream", value),
  infinite: (value) => assertType(is3.infinite(value), "infinite number", value),
  emptyArray: (value) => assertType(is3.emptyArray(value), "empty array", value),
  nonEmptyArray: (value) => assertType(is3.nonEmptyArray(value), "non-empty array", value),
  emptyString: (value) => assertType(is3.emptyString(value), "empty string", value),
  emptyStringOrWhitespace: (value) => assertType(is3.emptyStringOrWhitespace(value), "empty string or whitespace", value),
  nonEmptyString: (value) => assertType(is3.nonEmptyString(value), "non-empty string", value),
  nonEmptyStringAndNotWhitespace: (value) => assertType(is3.nonEmptyStringAndNotWhitespace(value), "non-empty string and not whitespace", value),
  emptyObject: (value) => assertType(is3.emptyObject(value), "empty object", value),
  nonEmptyObject: (value) => assertType(is3.nonEmptyObject(value), "non-empty object", value),
  emptySet: (value) => assertType(is3.emptySet(value), "empty set", value),
  nonEmptySet: (value) => assertType(is3.nonEmptySet(value), "non-empty set", value),
  emptyMap: (value) => assertType(is3.emptyMap(value), "empty map", value),
  nonEmptyMap: (value) => assertType(is3.nonEmptyMap(value), "non-empty map", value),
  propertyKey: (value) => assertType(is3.propertyKey(value), "PropertyKey", value),
  formData: (value) => assertType(is3.formData(value), "FormData", value),
  urlSearchParams: (value) => assertType(is3.urlSearchParams(value), "URLSearchParams", value),
  // Numbers.
  evenInteger: (value) => assertType(is3.evenInteger(value), "even integer", value),
  oddInteger: (value) => assertType(is3.oddInteger(value), "odd integer", value),
  // Two arguments.
  directInstanceOf: (instance, class_) => assertType(is3.directInstanceOf(instance, class_), "T", instance),
  inRange: (value, range) => assertType(is3.inRange(value, range), "in range", value),
  // Variadic functions.
  any: (predicate, ...values) => assertType(is3.any(predicate, ...values), "predicate returns truthy for any value", values, { multipleValues: true }),
  all: (predicate, ...values) => assertType(is3.all(predicate, ...values), "predicate returns truthy for all values", values, { multipleValues: true })
};
Object.defineProperties(is3, {
  class: {
    value: is3.class_
  },
  function: {
    value: is3.function_
  },
  null: {
    value: is3.null_
  }
});
Object.defineProperties(assert7, {
  class: {
    value: assert7.class_
  },
  function: {
    value: assert7.function_
  },
  null: {
    value: assert7.null_
  }
});
var dist_default5 = is3;

// ../../node_modules/got/dist/source/as-promise/index.js
var import_node_events3 = require("events");

// ../../node_modules/p-cancelable/index.js
var CancelError = class extends Error {
  constructor(reason) {
    super(reason || "Promise was canceled");
    this.name = "CancelError";
  }
  get isCanceled() {
    return true;
  }
};
var PCancelable = class _PCancelable {
  static fn(userFunction) {
    return (...arguments_) => {
      return new _PCancelable((resolve9, reject, onCancel) => {
        arguments_.push(onCancel);
        userFunction(...arguments_).then(resolve9, reject);
      });
    };
  }
  constructor(executor) {
    this._cancelHandlers = [];
    this._isPending = true;
    this._isCanceled = false;
    this._rejectOnCancel = true;
    this._promise = new Promise((resolve9, reject) => {
      this._reject = reject;
      const onResolve = (value) => {
        if (!this._isCanceled || !onCancel.shouldReject) {
          this._isPending = false;
          resolve9(value);
        }
      };
      const onReject = (error) => {
        this._isPending = false;
        reject(error);
      };
      const onCancel = (handler) => {
        if (!this._isPending) {
          throw new Error("The `onCancel` handler was attached after the promise settled.");
        }
        this._cancelHandlers.push(handler);
      };
      Object.defineProperties(onCancel, {
        shouldReject: {
          get: () => this._rejectOnCancel,
          set: (boolean2) => {
            this._rejectOnCancel = boolean2;
          }
        }
      });
      executor(onResolve, onReject, onCancel);
    });
  }
  then(onFulfilled, onRejected) {
    return this._promise.then(onFulfilled, onRejected);
  }
  catch(onRejected) {
    return this._promise.catch(onRejected);
  }
  finally(onFinally) {
    return this._promise.finally(onFinally);
  }
  cancel(reason) {
    if (!this._isPending || this._isCanceled) {
      return;
    }
    this._isCanceled = true;
    if (this._cancelHandlers.length > 0) {
      try {
        for (const handler of this._cancelHandlers) {
          handler();
        }
      } catch (error) {
        this._reject(error);
        return;
      }
    }
    if (this._rejectOnCancel) {
      this._reject(new CancelError(reason));
    }
  }
  get isCanceled() {
    return this._isCanceled;
  }
};
Object.setPrototypeOf(PCancelable.prototype, Promise.prototype);

// ../../node_modules/got/dist/source/core/errors.js
function isRequest2(x2) {
  return dist_default5.object(x2) && "_onResponse" in x2;
}
var RequestError = class extends Error {
  constructor(message, error, self2) {
    var _a6;
    super(message);
    Object.defineProperty(this, "input", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "code", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "stack", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "response", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "request", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "timings", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Error.captureStackTrace(this, this.constructor);
    this.name = "RequestError";
    this.code = error.code ?? "ERR_GOT_REQUEST_ERROR";
    this.input = error.input;
    if (isRequest2(self2)) {
      Object.defineProperty(this, "request", {
        enumerable: false,
        value: self2
      });
      Object.defineProperty(this, "response", {
        enumerable: false,
        value: self2.response
      });
      this.options = self2.options;
    } else {
      this.options = self2;
    }
    this.timings = (_a6 = this.request) == null ? void 0 : _a6.timings;
    if (dist_default5.string(error.stack) && dist_default5.string(this.stack)) {
      const indexOfMessage = this.stack.indexOf(this.message) + this.message.length;
      const thisStackTrace = this.stack.slice(indexOfMessage).split("\n").reverse();
      const errorStackTrace = error.stack.slice(error.stack.indexOf(error.message) + error.message.length).split("\n").reverse();
      while (errorStackTrace.length > 0 && errorStackTrace[0] === thisStackTrace[0]) {
        thisStackTrace.shift();
      }
      this.stack = `${this.stack.slice(0, indexOfMessage)}${thisStackTrace.reverse().join("\n")}${errorStackTrace.reverse().join("\n")}`;
    }
  }
};
var MaxRedirectsError = class extends RequestError {
  constructor(request) {
    super(`Redirected ${request.options.maxRedirects} times. Aborting.`, {}, request);
    this.name = "MaxRedirectsError";
    this.code = "ERR_TOO_MANY_REDIRECTS";
  }
};
var HTTPError = class extends RequestError {
  constructor(response) {
    super(`Response code ${response.statusCode} (${response.statusMessage})`, {}, response.request);
    this.name = "HTTPError";
    this.code = "ERR_NON_2XX_3XX_RESPONSE";
  }
};
var CacheError = class extends RequestError {
  constructor(error, request) {
    super(error.message, error, request);
    this.name = "CacheError";
    this.code = this.code === "ERR_GOT_REQUEST_ERROR" ? "ERR_CACHE_ACCESS" : this.code;
  }
};
var UploadError = class extends RequestError {
  constructor(error, request) {
    super(error.message, error, request);
    this.name = "UploadError";
    this.code = this.code === "ERR_GOT_REQUEST_ERROR" ? "ERR_UPLOAD" : this.code;
  }
};
var TimeoutError = class extends RequestError {
  constructor(error, timings, request) {
    super(error.message, error, request);
    Object.defineProperty(this, "timings", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "event", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    this.name = "TimeoutError";
    this.event = error.event;
    this.timings = timings;
  }
};
var ReadError = class extends RequestError {
  constructor(error, request) {
    super(error.message, error, request);
    this.name = "ReadError";
    this.code = this.code === "ERR_GOT_REQUEST_ERROR" ? "ERR_READING_RESPONSE_STREAM" : this.code;
  }
};
var RetryError = class extends RequestError {
  constructor(request) {
    super("Retrying", {}, request);
    this.name = "RetryError";
    this.code = "ERR_RETRYING";
  }
};
var AbortError2 = class extends RequestError {
  constructor(request) {
    super("This operation was aborted.", {}, request);
    this.code = "ERR_ABORTED";
    this.name = "AbortError";
  }
};

// ../../node_modules/got/dist/source/core/index.js
var import_node_process8 = __toESM(require("process"), 1);
var import_node_buffer4 = require("buffer");
var import_node_stream7 = require("stream");
var import_node_url6 = require("url");
var import_node_http4 = __toESM(require("http"), 1);

// ../../node_modules/@szmarczak/http-timer/dist/source/index.js
var import_events9 = require("events");
var import_util6 = require("util");
var import_defer_to_connect = __toESM(require_source3(), 1);
var timer = (request) => {
  if (request.timings) {
    return request.timings;
  }
  const timings = {
    start: Date.now(),
    socket: void 0,
    lookup: void 0,
    connect: void 0,
    secureConnect: void 0,
    upload: void 0,
    response: void 0,
    end: void 0,
    error: void 0,
    abort: void 0,
    phases: {
      wait: void 0,
      dns: void 0,
      tcp: void 0,
      tls: void 0,
      request: void 0,
      firstByte: void 0,
      download: void 0,
      total: void 0
    }
  };
  request.timings = timings;
  const handleError = (origin) => {
    origin.once(import_events9.errorMonitor, () => {
      timings.error = Date.now();
      timings.phases.total = timings.error - timings.start;
    });
  };
  handleError(request);
  const onAbort = () => {
    timings.abort = Date.now();
    timings.phases.total = timings.abort - timings.start;
  };
  request.prependOnceListener("abort", onAbort);
  const onSocket = (socket) => {
    timings.socket = Date.now();
    timings.phases.wait = timings.socket - timings.start;
    if (import_util6.types.isProxy(socket)) {
      return;
    }
    const lookupListener = () => {
      timings.lookup = Date.now();
      timings.phases.dns = timings.lookup - timings.socket;
    };
    socket.prependOnceListener("lookup", lookupListener);
    (0, import_defer_to_connect.default)(socket, {
      connect: () => {
        timings.connect = Date.now();
        if (timings.lookup === void 0) {
          socket.removeListener("lookup", lookupListener);
          timings.lookup = timings.connect;
          timings.phases.dns = timings.lookup - timings.socket;
        }
        timings.phases.tcp = timings.connect - timings.lookup;
      },
      secureConnect: () => {
        timings.secureConnect = Date.now();
        timings.phases.tls = timings.secureConnect - timings.connect;
      }
    });
  };
  if (request.socket) {
    onSocket(request.socket);
  } else {
    request.prependOnceListener("socket", onSocket);
  }
  const onUpload = () => {
    timings.upload = Date.now();
    timings.phases.request = timings.upload - (timings.secureConnect ?? timings.connect);
  };
  if (request.writableFinished) {
    onUpload();
  } else {
    request.prependOnceListener("finish", onUpload);
  }
  request.prependOnceListener("response", (response) => {
    timings.response = Date.now();
    timings.phases.firstByte = timings.response - timings.upload;
    response.timings = timings;
    handleError(response);
    response.prependOnceListener("end", () => {
      request.off("abort", onAbort);
      response.off("aborted", onAbort);
      if (timings.phases.total) {
        return;
      }
      timings.end = Date.now();
      timings.phases.download = timings.end - timings.response;
      timings.phases.total = timings.end - timings.start;
    });
    response.prependOnceListener("aborted", onAbort);
  });
  return timings;
};
var source_default4 = timer;

// ../../node_modules/cacheable-request/dist/index.js
var import_node_events2 = __toESM(require("events"), 1);
var import_node_url4 = __toESM(require("url"), 1);
var import_node_crypto7 = __toESM(require("crypto"), 1);
var import_node_stream6 = __toESM(require("stream"), 1);

// ../../node_modules/normalize-url/index.js
var DATA_URL_DEFAULT_MIME_TYPE = "text/plain";
var DATA_URL_DEFAULT_CHARSET = "us-ascii";
var testParameter = (name3, filters) => filters.some((filter6) => filter6 instanceof RegExp ? filter6.test(name3) : filter6 === name3);
var supportedProtocols = /* @__PURE__ */ new Set([
  "https:",
  "http:",
  "file:"
]);
var hasCustomProtocol = (urlString) => {
  try {
    const { protocol } = new URL(urlString);
    return protocol.endsWith(":") && !supportedProtocols.has(protocol);
  } catch {
    return false;
  }
};
var normalizeDataURL = (urlString, { stripHash }) => {
  var _a6;
  const match3 = /^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(urlString);
  if (!match3) {
    throw new Error(`Invalid URL: ${urlString}`);
  }
  let { type: type2, data, hash } = match3.groups;
  const mediaType = type2.split(";");
  hash = stripHash ? "" : hash;
  let isBase642 = false;
  if (mediaType[mediaType.length - 1] === "base64") {
    mediaType.pop();
    isBase642 = true;
  }
  const mimeType = ((_a6 = mediaType.shift()) == null ? void 0 : _a6.toLowerCase()) ?? "";
  const attributes = mediaType.map((attribute2) => {
    let [key2, value = ""] = attribute2.split("=").map((string2) => string2.trim());
    if (key2 === "charset") {
      value = value.toLowerCase();
      if (value === DATA_URL_DEFAULT_CHARSET) {
        return "";
      }
    }
    return `${key2}${value ? `=${value}` : ""}`;
  }).filter(Boolean);
  const normalizedMediaType = [
    ...attributes
  ];
  if (isBase642) {
    normalizedMediaType.push("base64");
  }
  if (normalizedMediaType.length > 0 || mimeType && mimeType !== DATA_URL_DEFAULT_MIME_TYPE) {
    normalizedMediaType.unshift(mimeType);
  }
  return `data:${normalizedMediaType.join(";")},${isBase642 ? data.trim() : data}${hash ? `#${hash}` : ""}`;
};
function normalizeUrl(urlString, options) {
  options = {
    defaultProtocol: "http",
    normalizeProtocol: true,
    forceHttp: false,
    forceHttps: false,
    stripAuthentication: true,
    stripHash: false,
    stripTextFragment: true,
    stripWWW: true,
    removeQueryParameters: [/^utm_\w+/i],
    removeTrailingSlash: true,
    removeSingleSlash: true,
    removeDirectoryIndex: false,
    removeExplicitPort: false,
    sortQueryParameters: true,
    ...options
  };
  if (typeof options.defaultProtocol === "string" && !options.defaultProtocol.endsWith(":")) {
    options.defaultProtocol = `${options.defaultProtocol}:`;
  }
  urlString = urlString.trim();
  if (/^data:/i.test(urlString)) {
    return normalizeDataURL(urlString, options);
  }
  if (hasCustomProtocol(urlString)) {
    return urlString;
  }
  const hasRelativeProtocol = urlString.startsWith("//");
  const isRelativeUrl = !hasRelativeProtocol && /^\.*\//.test(urlString);
  if (!isRelativeUrl) {
    urlString = urlString.replace(/^(?!(?:\w+:)?\/\/)|^\/\//, options.defaultProtocol);
  }
  const urlObject = new URL(urlString);
  if (options.forceHttp && options.forceHttps) {
    throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");
  }
  if (options.forceHttp && urlObject.protocol === "https:") {
    urlObject.protocol = "http:";
  }
  if (options.forceHttps && urlObject.protocol === "http:") {
    urlObject.protocol = "https:";
  }
  if (options.stripAuthentication) {
    urlObject.username = "";
    urlObject.password = "";
  }
  if (options.stripHash) {
    urlObject.hash = "";
  } else if (options.stripTextFragment) {
    urlObject.hash = urlObject.hash.replace(/#?:~:text.*?$/i, "");
  }
  if (urlObject.pathname) {
    const protocolRegex = /\b[a-z][a-z\d+\-.]{1,50}:\/\//g;
    let lastIndex = 0;
    let result = "";
    for (; ; ) {
      const match3 = protocolRegex.exec(urlObject.pathname);
      if (!match3) {
        break;
      }
      const protocol = match3[0];
      const protocolAtIndex = match3.index;
      const intermediate = urlObject.pathname.slice(lastIndex, protocolAtIndex);
      result += intermediate.replace(/\/{2,}/g, "/");
      result += protocol;
      lastIndex = protocolAtIndex + protocol.length;
    }
    const remnant = urlObject.pathname.slice(lastIndex, urlObject.pathname.length);
    result += remnant.replace(/\/{2,}/g, "/");
    urlObject.pathname = result;
  }
  if (urlObject.pathname) {
    try {
      urlObject.pathname = decodeURI(urlObject.pathname);
    } catch {
    }
  }
  if (options.removeDirectoryIndex === true) {
    options.removeDirectoryIndex = [/^index\.[a-z]+$/];
  }
  if (Array.isArray(options.removeDirectoryIndex) && options.removeDirectoryIndex.length > 0) {
    let pathComponents = urlObject.pathname.split("/");
    const lastComponent = pathComponents[pathComponents.length - 1];
    if (testParameter(lastComponent, options.removeDirectoryIndex)) {
      pathComponents = pathComponents.slice(0, -1);
      urlObject.pathname = pathComponents.slice(1).join("/") + "/";
    }
  }
  if (urlObject.hostname) {
    urlObject.hostname = urlObject.hostname.replace(/\.$/, "");
    if (options.stripWWW && /^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(urlObject.hostname)) {
      urlObject.hostname = urlObject.hostname.replace(/^www\./, "");
    }
  }
  if (Array.isArray(options.removeQueryParameters)) {
    for (const key2 of [...urlObject.searchParams.keys()]) {
      if (testParameter(key2, options.removeQueryParameters)) {
        urlObject.searchParams.delete(key2);
      }
    }
  }
  if (!Array.isArray(options.keepQueryParameters) && options.removeQueryParameters === true) {
    urlObject.search = "";
  }
  if (Array.isArray(options.keepQueryParameters) && options.keepQueryParameters.length > 0) {
    for (const key2 of [...urlObject.searchParams.keys()]) {
      if (!testParameter(key2, options.keepQueryParameters)) {
        urlObject.searchParams.delete(key2);
      }
    }
  }
  if (options.sortQueryParameters) {
    urlObject.searchParams.sort();
    try {
      urlObject.search = decodeURIComponent(urlObject.search);
    } catch {
    }
  }
  if (options.removeTrailingSlash) {
    urlObject.pathname = urlObject.pathname.replace(/\/$/, "");
  }
  if (options.removeExplicitPort && urlObject.port) {
    urlObject.port = "";
  }
  const oldUrlString = urlString;
  urlString = urlObject.toString();
  if (!options.removeSingleSlash && urlObject.pathname === "/" && !oldUrlString.endsWith("/") && urlObject.hash === "") {
    urlString = urlString.replace(/\/$/, "");
  }
  if ((options.removeTrailingSlash || urlObject.pathname === "/") && urlObject.hash === "" && options.removeSingleSlash) {
    urlString = urlString.replace(/\/$/, "");
  }
  if (hasRelativeProtocol && !options.normalizeProtocol) {
    urlString = urlString.replace(/^http:\/\//, "//");
  }
  if (options.stripProtocol) {
    urlString = urlString.replace(/^(?:https?:)?\/\//, "");
  }
  return urlString;
}

// ../../node_modules/cacheable-request/dist/index.js
var import_get_stream = __toESM(require_get_stream(), 1);
var import_http_cache_semantics = __toESM(require_http_cache_semantics(), 1);

// ../../node_modules/responselike/index.js
var import_node_stream5 = require("stream");

// ../../node_modules/lowercase-keys/index.js
function lowercaseKeys(object) {
  return Object.fromEntries(Object.entries(object).map(([key2, value]) => [key2.toLowerCase(), value]));
}

// ../../node_modules/responselike/index.js
var Response2 = class extends import_node_stream5.Readable {
  statusCode;
  headers;
  body;
  url;
  constructor({ statusCode, headers, body: body3, url }) {
    if (typeof statusCode !== "number") {
      throw new TypeError("Argument `statusCode` should be a number");
    }
    if (typeof headers !== "object") {
      throw new TypeError("Argument `headers` should be an object");
    }
    if (!(body3 instanceof Uint8Array)) {
      throw new TypeError("Argument `body` should be a buffer");
    }
    if (typeof url !== "string") {
      throw new TypeError("Argument `url` should be a string");
    }
    super({
      read() {
        this.push(body3);
        this.push(null);
      }
    });
    this.statusCode = statusCode;
    this.headers = lowercaseKeys(headers);
    this.body = body3;
    this.url = url;
  }
};

// ../../node_modules/cacheable-request/dist/index.js
var import_keyv = __toESM(require_src5(), 1);

// ../../node_modules/mimic-response/index.js
var knownProperties = [
  "aborted",
  "complete",
  "headers",
  "httpVersion",
  "httpVersionMinor",
  "httpVersionMajor",
  "method",
  "rawHeaders",
  "rawTrailers",
  "setTimeout",
  "socket",
  "statusCode",
  "statusMessage",
  "trailers",
  "url"
];
function mimicResponse(fromStream, toStream) {
  if (toStream._readableState.autoDestroy) {
    throw new Error("The second stream must have the `autoDestroy` option set to `false`");
  }
  const fromProperties = /* @__PURE__ */ new Set([...Object.keys(fromStream), ...knownProperties]);
  const properties = {};
  for (const property of fromProperties) {
    if (property in toStream) {
      continue;
    }
    properties[property] = {
      get() {
        const value = fromStream[property];
        const isFunction2 = typeof value === "function";
        return isFunction2 ? value.bind(fromStream) : value;
      },
      set(value) {
        fromStream[property] = value;
      },
      enumerable: true,
      configurable: false
    };
  }
  Object.defineProperties(toStream, properties);
  fromStream.once("aborted", () => {
    toStream.destroy();
    toStream.emit("aborted");
  });
  fromStream.once("close", () => {
    if (fromStream.complete) {
      if (toStream.readable) {
        toStream.once("end", () => {
          toStream.emit("close");
        });
      } else {
        toStream.emit("close");
      }
    } else {
      toStream.emit("close");
    }
  });
  return toStream;
}

// ../../node_modules/cacheable-request/dist/types.js
var RequestError2 = class extends Error {
  constructor(error) {
    super(error.message);
    Object.assign(this, error);
  }
};
var CacheError2 = class extends Error {
  constructor(error) {
    super(error.message);
    Object.assign(this, error);
  }
};

// ../../node_modules/cacheable-request/dist/index.js
var CacheableRequest = class {
  constructor(cacheRequest, cacheAdapter) {
    this.hooks = /* @__PURE__ */ new Map();
    this.request = () => (options, cb) => {
      let url;
      if (typeof options === "string") {
        url = normalizeUrlObject(import_node_url4.default.parse(options));
        options = {};
      } else if (options instanceof import_node_url4.default.URL) {
        url = normalizeUrlObject(import_node_url4.default.parse(options.toString()));
        options = {};
      } else {
        const [pathname, ...searchParts] = (options.path ?? "").split("?");
        const search4 = searchParts.length > 0 ? `?${searchParts.join("?")}` : "";
        url = normalizeUrlObject({ ...options, pathname, search: search4 });
      }
      options = {
        headers: {},
        method: "GET",
        cache: true,
        strictTtl: false,
        automaticFailover: false,
        ...options,
        ...urlObjectToRequestOptions(url)
      };
      options.headers = Object.fromEntries(entries(options.headers).map(([key3, value]) => [key3.toLowerCase(), value]));
      const ee = new import_node_events2.default();
      const normalizedUrlString = normalizeUrl(import_node_url4.default.format(url), {
        stripWWW: false,
        removeTrailingSlash: false,
        stripAuthentication: false
      });
      let key2 = `${options.method}:${normalizedUrlString}`;
      if (options.body && options.method !== void 0 && ["POST", "PATCH", "PUT"].includes(options.method)) {
        if (options.body instanceof import_node_stream6.default.Readable) {
          options.cache = false;
        } else {
          key2 += `:${import_node_crypto7.default.createHash("md5").update(options.body).digest("hex")}`;
        }
      }
      let revalidate = false;
      let madeRequest = false;
      const makeRequest = (options_) => {
        madeRequest = true;
        let requestErrored = false;
        let requestErrorCallback = () => {
        };
        const requestErrorPromise = new Promise((resolve9) => {
          requestErrorCallback = () => {
            if (!requestErrored) {
              requestErrored = true;
              resolve9();
            }
          };
        });
        const handler = async (response) => {
          if (revalidate) {
            response.status = response.statusCode;
            const revalidatedPolicy = import_http_cache_semantics.default.fromObject(revalidate.cachePolicy).revalidatedPolicy(options_, response);
            if (!revalidatedPolicy.modified) {
              response.resume();
              await new Promise((resolve9) => {
                response.once("end", resolve9);
              });
              const headers = convertHeaders(revalidatedPolicy.policy.responseHeaders());
              response = new Response2({ statusCode: revalidate.statusCode, headers, body: revalidate.body, url: revalidate.url });
              response.cachePolicy = revalidatedPolicy.policy;
              response.fromCache = true;
            }
          }
          if (!response.fromCache) {
            response.cachePolicy = new import_http_cache_semantics.default(options_, response, options_);
            response.fromCache = false;
          }
          let clonedResponse;
          if (options_.cache && response.cachePolicy.storable()) {
            clonedResponse = cloneResponse(response);
            (async () => {
              try {
                const bodyPromise = import_get_stream.default.buffer(response);
                await Promise.race([
                  requestErrorPromise,
                  new Promise((resolve9) => response.once("end", resolve9)),
                  new Promise((resolve9) => response.once("close", resolve9))
                  // eslint-disable-line no-promise-executor-return
                ]);
                const body3 = await bodyPromise;
                let value = {
                  url: response.url,
                  statusCode: response.fromCache ? revalidate.statusCode : response.statusCode,
                  body: body3,
                  cachePolicy: response.cachePolicy.toObject()
                };
                let ttl2 = options_.strictTtl ? response.cachePolicy.timeToLive() : void 0;
                if (options_.maxTtl) {
                  ttl2 = ttl2 ? Math.min(ttl2, options_.maxTtl) : options_.maxTtl;
                }
                if (this.hooks.size > 0) {
                  for (const key_ of this.hooks.keys()) {
                    value = await this.runHook(key_, value, response);
                  }
                }
                await this.cache.set(key2, value, ttl2);
              } catch (error) {
                ee.emit("error", new CacheError2(error));
              }
            })();
          } else if (options_.cache && revalidate) {
            (async () => {
              try {
                await this.cache.delete(key2);
              } catch (error) {
                ee.emit("error", new CacheError2(error));
              }
            })();
          }
          ee.emit("response", clonedResponse ?? response);
          if (typeof cb === "function") {
            cb(clonedResponse ?? response);
          }
        };
        try {
          const request_ = this.cacheRequest(options_, handler);
          request_.once("error", requestErrorCallback);
          request_.once("abort", requestErrorCallback);
          request_.once("destroy", requestErrorCallback);
          ee.emit("request", request_);
        } catch (error) {
          ee.emit("error", new RequestError2(error));
        }
      };
      (async () => {
        const get = async (options_) => {
          await Promise.resolve();
          const cacheEntry = options_.cache ? await this.cache.get(key2) : void 0;
          if (cacheEntry === void 0 && !options_.forceRefresh) {
            makeRequest(options_);
            return;
          }
          const policy = import_http_cache_semantics.default.fromObject(cacheEntry.cachePolicy);
          if (policy.satisfiesWithoutRevalidation(options_) && !options_.forceRefresh) {
            const headers = convertHeaders(policy.responseHeaders());
            const response = new Response2({ statusCode: cacheEntry.statusCode, headers, body: cacheEntry.body, url: cacheEntry.url });
            response.cachePolicy = policy;
            response.fromCache = true;
            ee.emit("response", response);
            if (typeof cb === "function") {
              cb(response);
            }
          } else if (policy.satisfiesWithoutRevalidation(options_) && Date.now() >= policy.timeToLive() && options_.forceRefresh) {
            await this.cache.delete(key2);
            options_.headers = policy.revalidationHeaders(options_);
            makeRequest(options_);
          } else {
            revalidate = cacheEntry;
            options_.headers = policy.revalidationHeaders(options_);
            makeRequest(options_);
          }
        };
        const errorHandler = (error) => ee.emit("error", new CacheError2(error));
        if (this.cache instanceof import_keyv.default) {
          const cachek = this.cache;
          cachek.once("error", errorHandler);
          ee.on("error", () => cachek.removeListener("error", errorHandler));
          ee.on("response", () => cachek.removeListener("error", errorHandler));
        }
        try {
          await get(options);
        } catch (error) {
          if (options.automaticFailover && !madeRequest) {
            makeRequest(options);
          }
          ee.emit("error", new CacheError2(error));
        }
      })();
      return ee;
    };
    this.addHook = (name3, fn) => {
      if (!this.hooks.has(name3)) {
        this.hooks.set(name3, fn);
      }
    };
    this.removeHook = (name3) => this.hooks.delete(name3);
    this.getHook = (name3) => this.hooks.get(name3);
    this.runHook = async (name3, ...args) => {
      var _a6;
      return (_a6 = this.hooks.get(name3)) == null ? void 0 : _a6(...args);
    };
    if (cacheAdapter instanceof import_keyv.default) {
      this.cache = cacheAdapter;
    } else if (typeof cacheAdapter === "string") {
      this.cache = new import_keyv.default({
        uri: cacheAdapter,
        namespace: "cacheable-request"
      });
    } else {
      this.cache = new import_keyv.default({
        store: cacheAdapter,
        namespace: "cacheable-request"
      });
    }
    this.request = this.request.bind(this);
    this.cacheRequest = cacheRequest;
  }
};
var entries = Object.entries;
var cloneResponse = (response) => {
  const clone3 = new import_node_stream6.PassThrough({ autoDestroy: false });
  mimicResponse(response, clone3);
  return response.pipe(clone3);
};
var urlObjectToRequestOptions = (url) => {
  const options = { ...url };
  options.path = `${url.pathname || "/"}${url.search || ""}`;
  delete options.pathname;
  delete options.search;
  return options;
};
var normalizeUrlObject = (url) => (
  // If url was parsed by url.parse or new URL:
  // - hostname will be set
  // - host will be hostname[:port]
  // - port will be set if it was explicit in the parsed string
  // Otherwise, url was from request options:
  // - hostname or host may be set
  // - host shall not have port encoded
  {
    protocol: url.protocol,
    auth: url.auth,
    hostname: url.hostname || url.host || "localhost",
    port: url.port,
    pathname: url.pathname,
    search: url.search
  }
);
var convertHeaders = (headers) => {
  const result = [];
  for (const name3 of Object.keys(headers)) {
    result[name3.toLowerCase()] = headers[name3];
  }
  return result;
};
var dist_default6 = CacheableRequest;

// ../../node_modules/got/dist/source/core/index.js
var import_decompress_response = __toESM(require_decompress_response(), 1);
var import_get_stream2 = __toESM(require_get_stream(), 1);

// ../../node_modules/form-data-encoder/lib/util/isFunction.js
var isFunction = (value) => typeof value === "function";

// ../../node_modules/form-data-encoder/lib/util/getStreamIterator.js
var isAsyncIterable = (value) => isFunction(value[Symbol.asyncIterator]);
async function* readStream(readable) {
  const reader = readable.getReader();
  while (true) {
    const { done, value } = await reader.read();
    if (done) {
      break;
    }
    yield value;
  }
}
var getStreamIterator = (source2) => {
  if (isAsyncIterable(source2)) {
    return source2;
  }
  if (isFunction(source2.getReader)) {
    return readStream(source2);
  }
  throw new TypeError("Unsupported data source: Expected either ReadableStream or async iterable.");
};

// ../../node_modules/form-data-encoder/lib/util/createBoundary.js
var alphabet = "abcdefghijklmnopqrstuvwxyz0123456789";
function createBoundary() {
  let size = 16;
  let res = "";
  while (size--) {
    res += alphabet[Math.random() * alphabet.length << 0];
  }
  return res;
}

// ../../node_modules/form-data-encoder/lib/util/normalizeValue.js
var normalizeValue = (value) => String(value).replace(/\r|\n/g, (match3, i2, str2) => {
  if (match3 === "\r" && str2[i2 + 1] !== "\n" || match3 === "\n" && str2[i2 - 1] !== "\r") {
    return "\r\n";
  }
  return match3;
});

// ../../node_modules/form-data-encoder/lib/util/isPlainObject.js
var getType2 = (value) => Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
function isPlainObject4(value) {
  if (getType2(value) !== "object") {
    return false;
  }
  const pp = Object.getPrototypeOf(value);
  if (pp === null || pp === void 0) {
    return true;
  }
  const Ctor = pp.constructor && pp.constructor.toString();
  return Ctor === Object.toString();
}

// ../../node_modules/form-data-encoder/lib/util/proxyHeaders.js
function getProperty(target, prop) {
  if (typeof prop === "string") {
    for (const [name3, value] of Object.entries(target)) {
      if (prop.toLowerCase() === name3.toLowerCase()) {
        return value;
      }
    }
  }
  return void 0;
}
var proxyHeaders = (object) => new Proxy(object, {
  get: (target, prop) => getProperty(target, prop),
  has: (target, prop) => getProperty(target, prop) !== void 0
});

// ../../node_modules/form-data-encoder/lib/util/isFormData.js
var isFormData = (value) => Boolean(value && isFunction(value.constructor) && value[Symbol.toStringTag] === "FormData" && isFunction(value.append) && isFunction(value.getAll) && isFunction(value.entries) && isFunction(value[Symbol.iterator]));

// ../../node_modules/form-data-encoder/lib/util/escapeName.js
var escapeName = (name3) => String(name3).replace(/\r/g, "%0D").replace(/\n/g, "%0A").replace(/"/g, "%22");

// ../../node_modules/form-data-encoder/lib/util/isFile.js
var isFile3 = (value) => Boolean(value && typeof value === "object" && isFunction(value.constructor) && value[Symbol.toStringTag] === "File" && isFunction(value.stream) && value.name != null);

// ../../node_modules/form-data-encoder/lib/FormDataEncoder.js
var __classPrivateFieldSet2 = function(receiver, state, value, kind, f3) {
  if (kind === "m") throw new TypeError("Private method is not writable");
  if (kind === "a" && !f3) throw new TypeError("Private accessor was defined without a setter");
  if (typeof state === "function" ? receiver !== state || !f3 : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
  return kind === "a" ? f3.call(receiver, value) : f3 ? f3.value = value : state.set(receiver, value), value;
};
var __classPrivateFieldGet2 = function(receiver, state, kind, f3) {
  if (kind === "a" && !f3) throw new TypeError("Private accessor was defined without a getter");
  if (typeof state === "function" ? receiver !== state || !f3 : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
  return kind === "m" ? f3 : kind === "a" ? f3.call(receiver) : f3 ? f3.value : state.get(receiver);
};
var _FormDataEncoder_instances;
var _FormDataEncoder_CRLF;
var _FormDataEncoder_CRLF_BYTES;
var _FormDataEncoder_CRLF_BYTES_LENGTH;
var _FormDataEncoder_DASHES;
var _FormDataEncoder_encoder;
var _FormDataEncoder_footer;
var _FormDataEncoder_form;
var _FormDataEncoder_options;
var _FormDataEncoder_getFieldHeader;
var _FormDataEncoder_getContentLength;
var defaultOptions4 = {
  enableAdditionalHeaders: false
};
var readonlyProp = { writable: false, configurable: false };
var FormDataEncoder = class {
  constructor(form, boundaryOrOptions, options) {
    _FormDataEncoder_instances.add(this);
    _FormDataEncoder_CRLF.set(this, "\r\n");
    _FormDataEncoder_CRLF_BYTES.set(this, void 0);
    _FormDataEncoder_CRLF_BYTES_LENGTH.set(this, void 0);
    _FormDataEncoder_DASHES.set(this, "-".repeat(2));
    _FormDataEncoder_encoder.set(this, new TextEncoder());
    _FormDataEncoder_footer.set(this, void 0);
    _FormDataEncoder_form.set(this, void 0);
    _FormDataEncoder_options.set(this, void 0);
    if (!isFormData(form)) {
      throw new TypeError("Expected first argument to be a FormData instance.");
    }
    let boundary;
    if (isPlainObject4(boundaryOrOptions)) {
      options = boundaryOrOptions;
    } else {
      boundary = boundaryOrOptions;
    }
    if (!boundary) {
      boundary = createBoundary();
    }
    if (typeof boundary !== "string") {
      throw new TypeError("Expected boundary argument to be a string.");
    }
    if (options && !isPlainObject4(options)) {
      throw new TypeError("Expected options argument to be an object.");
    }
    __classPrivateFieldSet2(this, _FormDataEncoder_form, Array.from(form.entries()), "f");
    __classPrivateFieldSet2(this, _FormDataEncoder_options, { ...defaultOptions4, ...options }, "f");
    __classPrivateFieldSet2(this, _FormDataEncoder_CRLF_BYTES, __classPrivateFieldGet2(this, _FormDataEncoder_encoder, "f").encode(__classPrivateFieldGet2(this, _FormDataEncoder_CRLF, "f")), "f");
    __classPrivateFieldSet2(this, _FormDataEncoder_CRLF_BYTES_LENGTH, __classPrivateFieldGet2(this, _FormDataEncoder_CRLF_BYTES, "f").byteLength, "f");
    this.boundary = `form-data-boundary-${boundary}`;
    this.contentType = `multipart/form-data; boundary=${this.boundary}`;
    __classPrivateFieldSet2(this, _FormDataEncoder_footer, __classPrivateFieldGet2(this, _FormDataEncoder_encoder, "f").encode(`${__classPrivateFieldGet2(this, _FormDataEncoder_DASHES, "f")}${this.boundary}${__classPrivateFieldGet2(this, _FormDataEncoder_DASHES, "f")}${__classPrivateFieldGet2(this, _FormDataEncoder_CRLF, "f").repeat(2)}`), "f");
    const headers = {
      "Content-Type": this.contentType
    };
    const contentLength = __classPrivateFieldGet2(this, _FormDataEncoder_instances, "m", _FormDataEncoder_getContentLength).call(this);
    if (contentLength) {
      this.contentLength = contentLength;
      headers["Content-Length"] = contentLength;
    }
    this.headers = proxyHeaders(Object.freeze(headers));
    Object.defineProperties(this, {
      boundary: readonlyProp,
      contentType: readonlyProp,
      contentLength: readonlyProp,
      headers: readonlyProp
    });
  }
  getContentLength() {
    return this.contentLength == null ? void 0 : Number(this.contentLength);
  }
  *values() {
    for (const [name3, raw2] of __classPrivateFieldGet2(this, _FormDataEncoder_form, "f")) {
      const value = isFile3(raw2) ? raw2 : __classPrivateFieldGet2(this, _FormDataEncoder_encoder, "f").encode(normalizeValue(raw2));
      yield __classPrivateFieldGet2(this, _FormDataEncoder_instances, "m", _FormDataEncoder_getFieldHeader).call(this, name3, value);
      yield value;
      yield __classPrivateFieldGet2(this, _FormDataEncoder_CRLF_BYTES, "f");
    }
    yield __classPrivateFieldGet2(this, _FormDataEncoder_footer, "f");
  }
  async *encode() {
    for (const part of this.values()) {
      if (isFile3(part)) {
        yield* getStreamIterator(part.stream());
      } else {
        yield part;
      }
    }
  }
  [(_FormDataEncoder_CRLF = /* @__PURE__ */ new WeakMap(), _FormDataEncoder_CRLF_BYTES = /* @__PURE__ */ new WeakMap(), _FormDataEncoder_CRLF_BYTES_LENGTH = /* @__PURE__ */ new WeakMap(), _FormDataEncoder_DASHES = /* @__PURE__ */ new WeakMap(), _FormDataEncoder_encoder = /* @__PURE__ */ new WeakMap(), _FormDataEncoder_footer = /* @__PURE__ */ new WeakMap(), _FormDataEncoder_form = /* @__PURE__ */ new WeakMap(), _FormDataEncoder_options = /* @__PURE__ */ new WeakMap(), _FormDataEncoder_instances = /* @__PURE__ */ new WeakSet(), _FormDataEncoder_getFieldHeader = function _FormDataEncoder_getFieldHeader2(name3, value) {
    let header = "";
    header += `${__classPrivateFieldGet2(this, _FormDataEncoder_DASHES, "f")}${this.boundary}${__classPrivateFieldGet2(this, _FormDataEncoder_CRLF, "f")}`;
    header += `Content-Disposition: form-data; name="${escapeName(name3)}"`;
    if (isFile3(value)) {
      header += `; filename="${escapeName(value.name)}"${__classPrivateFieldGet2(this, _FormDataEncoder_CRLF, "f")}`;
      header += `Content-Type: ${value.type || "application/octet-stream"}`;
    }
    const size = isFile3(value) ? value.size : value.byteLength;
    if (__classPrivateFieldGet2(this, _FormDataEncoder_options, "f").enableAdditionalHeaders === true && size != null && !isNaN(size)) {
      header += `${__classPrivateFieldGet2(this, _FormDataEncoder_CRLF, "f")}Content-Length: ${isFile3(value) ? value.size : value.byteLength}`;
    }
    return __classPrivateFieldGet2(this, _FormDataEncoder_encoder, "f").encode(`${header}${__classPrivateFieldGet2(this, _FormDataEncoder_CRLF, "f").repeat(2)}`);
  }, _FormDataEncoder_getContentLength = function _FormDataEncoder_getContentLength2() {
    let length = 0;
    for (const [name3, raw2] of __classPrivateFieldGet2(this, _FormDataEncoder_form, "f")) {
      const value = isFile3(raw2) ? raw2 : __classPrivateFieldGet2(this, _FormDataEncoder_encoder, "f").encode(normalizeValue(raw2));
      const size = isFile3(value) ? value.size : value.byteLength;
      if (size == null || isNaN(size)) {
        return void 0;
      }
      length += __classPrivateFieldGet2(this, _FormDataEncoder_instances, "m", _FormDataEncoder_getFieldHeader).call(this, name3, value).byteLength;
      length += size;
      length += __classPrivateFieldGet2(this, _FormDataEncoder_CRLF_BYTES_LENGTH, "f");
    }
    return String(length + __classPrivateFieldGet2(this, _FormDataEncoder_footer, "f").byteLength);
  }, Symbol.iterator)]() {
    return this.values();
  }
  [Symbol.asyncIterator]() {
    return this.encode();
  }
};

// ../../node_modules/got/dist/source/core/utils/get-body-size.js
var import_node_buffer3 = require("buffer");
var import_node_util4 = require("util");

// ../../node_modules/got/dist/source/core/utils/is-form-data.js
function isFormData2(body3) {
  return dist_default5.nodeStream(body3) && dist_default5.function_(body3.getBoundary);
}

// ../../node_modules/got/dist/source/core/utils/get-body-size.js
async function getBodySize(body3, headers) {
  if (headers && "content-length" in headers) {
    return Number(headers["content-length"]);
  }
  if (!body3) {
    return 0;
  }
  if (dist_default5.string(body3)) {
    return import_node_buffer3.Buffer.byteLength(body3);
  }
  if (dist_default5.buffer(body3)) {
    return body3.length;
  }
  if (isFormData2(body3)) {
    return (0, import_node_util4.promisify)(body3.getLength.bind(body3))();
  }
  return void 0;
}

// ../../node_modules/got/dist/source/core/utils/proxy-events.js
function proxyEvents(from4, to, events) {
  const eventFunctions = {};
  for (const event of events) {
    const eventFunction = (...args) => {
      to.emit(event, ...args);
    };
    eventFunctions[event] = eventFunction;
    from4.on(event, eventFunction);
  }
  return () => {
    for (const [event, eventFunction] of Object.entries(eventFunctions)) {
      from4.off(event, eventFunction);
    }
  };
}

// ../../node_modules/got/dist/source/core/timed-out.js
var import_node_net3 = __toESM(require("net"), 1);

// ../../node_modules/got/dist/source/core/utils/unhandle.js
function unhandle() {
  const handlers6 = [];
  return {
    once(origin, event, fn) {
      origin.once(event, fn);
      handlers6.push({ origin, event, fn });
    },
    unhandleAll() {
      for (const handler of handlers6) {
        const { origin, event, fn } = handler;
        origin.removeListener(event, fn);
      }
      handlers6.length = 0;
    }
  };
}

// ../../node_modules/got/dist/source/core/timed-out.js
var reentry = Symbol("reentry");
var noop3 = () => {
};
var TimeoutError2 = class extends Error {
  constructor(threshold, event) {
    super(`Timeout awaiting '${event}' for ${threshold}ms`);
    Object.defineProperty(this, "event", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: event
    });
    Object.defineProperty(this, "code", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    this.name = "TimeoutError";
    this.code = "ETIMEDOUT";
  }
};
function timedOut(request, delays, options) {
  if (reentry in request) {
    return noop3;
  }
  request[reentry] = true;
  const cancelers = [];
  const { once, unhandleAll } = unhandle();
  const addTimeout = (delay2, callback, event) => {
    var _a6;
    const timeout = setTimeout(callback, delay2, delay2, event);
    (_a6 = timeout.unref) == null ? void 0 : _a6.call(timeout);
    const cancel = () => {
      clearTimeout(timeout);
    };
    cancelers.push(cancel);
    return cancel;
  };
  const { host, hostname } = options;
  const timeoutHandler = (delay2, event) => {
    request.destroy(new TimeoutError2(delay2, event));
  };
  const cancelTimeouts = () => {
    for (const cancel of cancelers) {
      cancel();
    }
    unhandleAll();
  };
  request.once("error", (error) => {
    cancelTimeouts();
    if (request.listenerCount("error") === 0) {
      throw error;
    }
  });
  if (typeof delays.request !== "undefined") {
    const cancelTimeout = addTimeout(delays.request, timeoutHandler, "request");
    once(request, "response", (response) => {
      once(response, "end", cancelTimeout);
    });
  }
  if (typeof delays.socket !== "undefined") {
    const { socket } = delays;
    const socketTimeoutHandler = () => {
      timeoutHandler(socket, "socket");
    };
    request.setTimeout(socket, socketTimeoutHandler);
    cancelers.push(() => {
      request.removeListener("timeout", socketTimeoutHandler);
    });
  }
  const hasLookup = typeof delays.lookup !== "undefined";
  const hasConnect = typeof delays.connect !== "undefined";
  const hasSecureConnect = typeof delays.secureConnect !== "undefined";
  const hasSend = typeof delays.send !== "undefined";
  if (hasLookup || hasConnect || hasSecureConnect || hasSend) {
    once(request, "socket", (socket) => {
      const { socketPath } = request;
      if (socket.connecting) {
        const hasPath = Boolean(socketPath ?? import_node_net3.default.isIP(hostname ?? host ?? "") !== 0);
        if (hasLookup && !hasPath && typeof socket.address().address === "undefined") {
          const cancelTimeout = addTimeout(delays.lookup, timeoutHandler, "lookup");
          once(socket, "lookup", cancelTimeout);
        }
        if (hasConnect) {
          const timeConnect = () => addTimeout(delays.connect, timeoutHandler, "connect");
          if (hasPath) {
            once(socket, "connect", timeConnect());
          } else {
            once(socket, "lookup", (error) => {
              if (error === null) {
                once(socket, "connect", timeConnect());
              }
            });
          }
        }
        if (hasSecureConnect && options.protocol === "https:") {
          once(socket, "connect", () => {
            const cancelTimeout = addTimeout(delays.secureConnect, timeoutHandler, "secureConnect");
            once(socket, "secureConnect", cancelTimeout);
          });
        }
      }
      if (hasSend) {
        const timeRequest = () => addTimeout(delays.send, timeoutHandler, "send");
        if (socket.connecting) {
          once(socket, "connect", () => {
            once(request, "upload-complete", timeRequest());
          });
        } else {
          once(request, "upload-complete", timeRequest());
        }
      }
    });
  }
  if (typeof delays.response !== "undefined") {
    once(request, "upload-complete", () => {
      const cancelTimeout = addTimeout(delays.response, timeoutHandler, "response");
      once(request, "response", cancelTimeout);
    });
  }
  if (typeof delays.read !== "undefined") {
    once(request, "response", (response) => {
      const cancelTimeout = addTimeout(delays.read, timeoutHandler, "read");
      once(response, "end", cancelTimeout);
    });
  }
  return cancelTimeouts;
}

// ../../node_modules/got/dist/source/core/utils/url-to-options.js
function urlToOptions(url) {
  url = url;
  const options = {
    protocol: url.protocol,
    hostname: dist_default5.string(url.hostname) && url.hostname.startsWith("[") ? url.hostname.slice(1, -1) : url.hostname,
    host: url.host,
    hash: url.hash,
    search: url.search,
    pathname: url.pathname,
    href: url.href,
    path: `${url.pathname || ""}${url.search || ""}`
  };
  if (dist_default5.string(url.port) && url.port.length > 0) {
    options.port = Number(url.port);
  }
  if (url.username || url.password) {
    options.auth = `${url.username || ""}:${url.password || ""}`;
  }
  return options;
}

// ../../node_modules/got/dist/source/core/utils/weakable-map.js
var WeakableMap = class {
  constructor() {
    Object.defineProperty(this, "weakMap", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "map", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    this.weakMap = /* @__PURE__ */ new WeakMap();
    this.map = /* @__PURE__ */ new Map();
  }
  set(key2, value) {
    if (typeof key2 === "object") {
      this.weakMap.set(key2, value);
    } else {
      this.map.set(key2, value);
    }
  }
  get(key2) {
    if (typeof key2 === "object") {
      return this.weakMap.get(key2);
    }
    return this.map.get(key2);
  }
  has(key2) {
    if (typeof key2 === "object") {
      return this.weakMap.has(key2);
    }
    return this.map.has(key2);
  }
};

// ../../node_modules/got/dist/source/core/calculate-retry-delay.js
var calculateRetryDelay = ({ attemptCount, retryOptions, error, retryAfter, computedValue }) => {
  if (error.name === "RetryError") {
    return 1;
  }
  if (attemptCount > retryOptions.limit) {
    return 0;
  }
  const hasMethod = retryOptions.methods.includes(error.options.method);
  const hasErrorCode = retryOptions.errorCodes.includes(error.code);
  const hasStatusCode = error.response && retryOptions.statusCodes.includes(error.response.statusCode);
  if (!hasMethod || !hasErrorCode && !hasStatusCode) {
    return 0;
  }
  if (error.response) {
    if (retryAfter) {
      if (retryAfter > computedValue) {
        return 0;
      }
      return retryAfter;
    }
    if (error.response.statusCode === 413) {
      return 0;
    }
  }
  const noise = Math.random() * retryOptions.noise;
  return Math.min(2 ** (attemptCount - 1) * 1e3, retryOptions.backoffLimit) + noise;
};
var calculate_retry_delay_default = calculateRetryDelay;

// ../../node_modules/got/dist/source/core/options.js
var import_node_process7 = __toESM(require("process"), 1);
var import_node_util6 = require("util");
var import_node_url5 = require("url");
var import_node_tls = require("tls");
var import_node_http3 = __toESM(require("http"), 1);
var import_node_https2 = __toESM(require("https"), 1);

// ../../node_modules/cacheable-lookup/source/index.js
var import_node_dns = require("dns");
var import_node_util5 = require("util");
var import_node_os6 = __toESM(require("os"), 1);
var { Resolver: AsyncResolver } = import_node_dns.promises;
var kCacheableLookupCreateConnection = Symbol("cacheableLookupCreateConnection");
var kCacheableLookupInstance = Symbol("cacheableLookupInstance");
var kExpires = Symbol("expires");
var supportsALL = typeof import_node_dns.ALL === "number";
var verifyAgent = (agent) => {
  if (!(agent && typeof agent.createConnection === "function")) {
    throw new Error("Expected an Agent instance as the first argument");
  }
};
var map4to6 = (entries2) => {
  for (const entry of entries2) {
    if (entry.family === 6) {
      continue;
    }
    entry.address = `::ffff:${entry.address}`;
    entry.family = 6;
  }
};
var getIfaceInfo = () => {
  let has4 = false;
  let has6 = false;
  for (const device of Object.values(import_node_os6.default.networkInterfaces())) {
    for (const iface of device) {
      if (iface.internal) {
        continue;
      }
      if (iface.family === "IPv6") {
        has6 = true;
      } else {
        has4 = true;
      }
      if (has4 && has6) {
        return { has4, has6 };
      }
    }
  }
  return { has4, has6 };
};
var isIterable = (map13) => {
  return Symbol.iterator in map13;
};
var ignoreNoResultErrors = (dnsPromise) => {
  return dnsPromise.catch((error) => {
    if (error.code === "ENODATA" || error.code === "ENOTFOUND" || error.code === "ENOENT") {
      return [];
    }
    throw error;
  });
};
var ttl = { ttl: true };
var all9 = { all: true };
var all42 = { all: true, family: 4 };
var all62 = { all: true, family: 6 };
var CacheableLookup = class {
  constructor({
    cache = /* @__PURE__ */ new Map(),
    maxTtl = Infinity,
    fallbackDuration = 3600,
    errorTtl = 0.15,
    resolver = new AsyncResolver(),
    lookup: lookup2 = import_node_dns.lookup
  } = {}) {
    this.maxTtl = maxTtl;
    this.errorTtl = errorTtl;
    this._cache = cache;
    this._resolver = resolver;
    this._dnsLookup = lookup2 && (0, import_node_util5.promisify)(lookup2);
    this.stats = {
      cache: 0,
      query: 0
    };
    if (this._resolver instanceof AsyncResolver) {
      this._resolve4 = this._resolver.resolve4.bind(this._resolver);
      this._resolve6 = this._resolver.resolve6.bind(this._resolver);
    } else {
      this._resolve4 = (0, import_node_util5.promisify)(this._resolver.resolve4.bind(this._resolver));
      this._resolve6 = (0, import_node_util5.promisify)(this._resolver.resolve6.bind(this._resolver));
    }
    this._iface = getIfaceInfo();
    this._pending = {};
    this._nextRemovalTime = false;
    this._hostnamesToFallback = /* @__PURE__ */ new Set();
    this.fallbackDuration = fallbackDuration;
    if (fallbackDuration > 0) {
      const interval2 = setInterval(() => {
        this._hostnamesToFallback.clear();
      }, fallbackDuration * 1e3);
      if (interval2.unref) {
        interval2.unref();
      }
      this._fallbackInterval = interval2;
    }
    this.lookup = this.lookup.bind(this);
    this.lookupAsync = this.lookupAsync.bind(this);
  }
  set servers(servers) {
    this.clear();
    this._resolver.setServers(servers);
  }
  get servers() {
    return this._resolver.getServers();
  }
  lookup(hostname, options, callback) {
    if (typeof options === "function") {
      callback = options;
      options = {};
    } else if (typeof options === "number") {
      options = {
        family: options
      };
    }
    if (!callback) {
      throw new Error("Callback must be a function.");
    }
    this.lookupAsync(hostname, options).then((result) => {
      if (options.all) {
        callback(null, result);
      } else {
        callback(null, result.address, result.family, result.expires, result.ttl, result.source);
      }
    }, callback);
  }
  async lookupAsync(hostname, options = {}) {
    if (typeof options === "number") {
      options = {
        family: options
      };
    }
    let cached = await this.query(hostname);
    if (options.family === 6) {
      const filtered = cached.filter((entry) => entry.family === 6);
      if (options.hints & import_node_dns.V4MAPPED) {
        if (supportsALL && options.hints & import_node_dns.ALL || filtered.length === 0) {
          map4to6(cached);
        } else {
          cached = filtered;
        }
      } else {
        cached = filtered;
      }
    } else if (options.family === 4) {
      cached = cached.filter((entry) => entry.family === 4);
    }
    if (options.hints & import_node_dns.ADDRCONFIG) {
      const { _iface } = this;
      cached = cached.filter((entry) => entry.family === 6 ? _iface.has6 : _iface.has4);
    }
    if (cached.length === 0) {
      const error = new Error(`cacheableLookup ENOTFOUND ${hostname}`);
      error.code = "ENOTFOUND";
      error.hostname = hostname;
      throw error;
    }
    if (options.all) {
      return cached;
    }
    return cached[0];
  }
  async query(hostname) {
    let source2 = "cache";
    let cached = await this._cache.get(hostname);
    if (cached) {
      this.stats.cache++;
    }
    if (!cached) {
      const pending = this._pending[hostname];
      if (pending) {
        this.stats.cache++;
        cached = await pending;
      } else {
        source2 = "query";
        const newPromise = this.queryAndCache(hostname);
        this._pending[hostname] = newPromise;
        this.stats.query++;
        try {
          cached = await newPromise;
        } finally {
          delete this._pending[hostname];
        }
      }
    }
    cached = cached.map((entry) => {
      return { ...entry, source: source2 };
    });
    return cached;
  }
  async _resolve(hostname) {
    const [A2, AAAA] = await Promise.all([
      ignoreNoResultErrors(this._resolve4(hostname, ttl)),
      ignoreNoResultErrors(this._resolve6(hostname, ttl))
    ]);
    let aTtl = 0;
    let aaaaTtl = 0;
    let cacheTtl = 0;
    const now = Date.now();
    for (const entry of A2) {
      entry.family = 4;
      entry.expires = now + entry.ttl * 1e3;
      aTtl = Math.max(aTtl, entry.ttl);
    }
    for (const entry of AAAA) {
      entry.family = 6;
      entry.expires = now + entry.ttl * 1e3;
      aaaaTtl = Math.max(aaaaTtl, entry.ttl);
    }
    if (A2.length > 0) {
      if (AAAA.length > 0) {
        cacheTtl = Math.min(aTtl, aaaaTtl);
      } else {
        cacheTtl = aTtl;
      }
    } else {
      cacheTtl = aaaaTtl;
    }
    return {
      entries: [
        ...A2,
        ...AAAA
      ],
      cacheTtl
    };
  }
  async _lookup(hostname) {
    try {
      const [A2, AAAA] = await Promise.all([
        // Passing {all: true} doesn't return all IPv4 and IPv6 entries.
        // See https://github.com/szmarczak/cacheable-lookup/issues/42
        ignoreNoResultErrors(this._dnsLookup(hostname, all42)),
        ignoreNoResultErrors(this._dnsLookup(hostname, all62))
      ]);
      return {
        entries: [
          ...A2,
          ...AAAA
        ],
        cacheTtl: 0
      };
    } catch {
      return {
        entries: [],
        cacheTtl: 0
      };
    }
  }
  async _set(hostname, data, cacheTtl) {
    if (this.maxTtl > 0 && cacheTtl > 0) {
      cacheTtl = Math.min(cacheTtl, this.maxTtl) * 1e3;
      data[kExpires] = Date.now() + cacheTtl;
      try {
        await this._cache.set(hostname, data, cacheTtl);
      } catch (error) {
        this.lookupAsync = async () => {
          const cacheError = new Error("Cache Error. Please recreate the CacheableLookup instance.");
          cacheError.cause = error;
          throw cacheError;
        };
      }
      if (isIterable(this._cache)) {
        this._tick(cacheTtl);
      }
    }
  }
  async queryAndCache(hostname) {
    if (this._hostnamesToFallback.has(hostname)) {
      return this._dnsLookup(hostname, all9);
    }
    let query = await this._resolve(hostname);
    if (query.entries.length === 0 && this._dnsLookup) {
      query = await this._lookup(hostname);
      if (query.entries.length !== 0 && this.fallbackDuration > 0) {
        this._hostnamesToFallback.add(hostname);
      }
    }
    const cacheTtl = query.entries.length === 0 ? this.errorTtl : query.cacheTtl;
    await this._set(hostname, query.entries, cacheTtl);
    return query.entries;
  }
  _tick(ms) {
    const nextRemovalTime = this._nextRemovalTime;
    if (!nextRemovalTime || ms < nextRemovalTime) {
      clearTimeout(this._removalTimeout);
      this._nextRemovalTime = ms;
      this._removalTimeout = setTimeout(() => {
        this._nextRemovalTime = false;
        let nextExpiry = Infinity;
        const now = Date.now();
        for (const [hostname, entries2] of this._cache) {
          const expires = entries2[kExpires];
          if (now >= expires) {
            this._cache.delete(hostname);
          } else if (expires < nextExpiry) {
            nextExpiry = expires;
          }
        }
        if (nextExpiry !== Infinity) {
          this._tick(nextExpiry - now);
        }
      }, ms);
      if (this._removalTimeout.unref) {
        this._removalTimeout.unref();
      }
    }
  }
  install(agent) {
    verifyAgent(agent);
    if (kCacheableLookupCreateConnection in agent) {
      throw new Error("CacheableLookup has been already installed");
    }
    agent[kCacheableLookupCreateConnection] = agent.createConnection;
    agent[kCacheableLookupInstance] = this;
    agent.createConnection = (options, callback) => {
      if (!("lookup" in options)) {
        options.lookup = this.lookup;
      }
      return agent[kCacheableLookupCreateConnection](options, callback);
    };
  }
  uninstall(agent) {
    verifyAgent(agent);
    if (agent[kCacheableLookupCreateConnection]) {
      if (agent[kCacheableLookupInstance] !== this) {
        throw new Error("The agent is not owned by this CacheableLookup instance");
      }
      agent.createConnection = agent[kCacheableLookupCreateConnection];
      delete agent[kCacheableLookupCreateConnection];
      delete agent[kCacheableLookupInstance];
    }
  }
  updateInterfaceInfo() {
    const { _iface } = this;
    this._iface = getIfaceInfo();
    if (_iface.has4 && !this._iface.has4 || _iface.has6 && !this._iface.has6) {
      this._cache.clear();
    }
  }
  clear(hostname) {
    if (hostname) {
      this._cache.delete(hostname);
      return;
    }
    this._cache.clear();
  }
};

// ../../node_modules/got/dist/source/core/options.js
var import_http2_wrapper = __toESM(require_source4(), 1);

// ../../node_modules/got/dist/source/core/parse-link-header.js
function parseLinkHeader(link4) {
  const parsed = [];
  const items = link4.split(",");
  for (const item of items) {
    const [rawUriReference, ...rawLinkParameters] = item.split(";");
    const trimmedUriReference = rawUriReference.trim();
    if (trimmedUriReference[0] !== "<" || trimmedUriReference[trimmedUriReference.length - 1] !== ">") {
      throw new Error(`Invalid format of the Link header reference: ${trimmedUriReference}`);
    }
    const reference = trimmedUriReference.slice(1, -1);
    const parameters = {};
    if (rawLinkParameters.length === 0) {
      throw new Error(`Unexpected end of Link header parameters: ${rawLinkParameters.join(";")}`);
    }
    for (const rawParameter of rawLinkParameters) {
      const trimmedRawParameter = rawParameter.trim();
      const center = trimmedRawParameter.indexOf("=");
      if (center === -1) {
        throw new Error(`Failed to parse Link header: ${link4}`);
      }
      const name3 = trimmedRawParameter.slice(0, center).trim();
      const value = trimmedRawParameter.slice(center + 1).trim();
      parameters[name3] = value;
    }
    parsed.push({
      reference,
      parameters
    });
  }
  return parsed;
}

// ../../node_modules/got/dist/source/core/options.js
var [major, minor] = import_node_process7.default.versions.node.split(".").map(Number);
function validateSearchParameters(searchParameters) {
  for (const key2 in searchParameters) {
    const value = searchParameters[key2];
    assert7.any([dist_default5.string, dist_default5.number, dist_default5.boolean, dist_default5.null_, dist_default5.undefined], value);
  }
}
var globalCache = /* @__PURE__ */ new Map();
var globalDnsCache;
var getGlobalDnsCache = () => {
  if (globalDnsCache) {
    return globalDnsCache;
  }
  globalDnsCache = new CacheableLookup();
  return globalDnsCache;
};
var defaultInternals = {
  request: void 0,
  agent: {
    http: void 0,
    https: void 0,
    http2: void 0
  },
  h2session: void 0,
  decompress: true,
  timeout: {
    connect: void 0,
    lookup: void 0,
    read: void 0,
    request: void 0,
    response: void 0,
    secureConnect: void 0,
    send: void 0,
    socket: void 0
  },
  prefixUrl: "",
  body: void 0,
  form: void 0,
  json: void 0,
  cookieJar: void 0,
  ignoreInvalidCookies: false,
  searchParams: void 0,
  dnsLookup: void 0,
  dnsCache: void 0,
  context: {},
  hooks: {
    init: [],
    beforeRequest: [],
    beforeError: [],
    beforeRedirect: [],
    beforeRetry: [],
    afterResponse: []
  },
  followRedirect: true,
  maxRedirects: 10,
  cache: void 0,
  throwHttpErrors: true,
  username: "",
  password: "",
  http2: false,
  allowGetBody: false,
  headers: {
    "user-agent": "got (https://github.com/sindresorhus/got)"
  },
  methodRewriting: false,
  dnsLookupIpVersion: void 0,
  parseJson: JSON.parse,
  stringifyJson: JSON.stringify,
  retry: {
    limit: 2,
    methods: [
      "GET",
      "PUT",
      "HEAD",
      "DELETE",
      "OPTIONS",
      "TRACE"
    ],
    statusCodes: [
      408,
      413,
      429,
      500,
      502,
      503,
      504,
      521,
      522,
      524
    ],
    errorCodes: [
      "ETIMEDOUT",
      "ECONNRESET",
      "EADDRINUSE",
      "ECONNREFUSED",
      "EPIPE",
      "ENOTFOUND",
      "ENETUNREACH",
      "EAI_AGAIN"
    ],
    maxRetryAfter: void 0,
    calculateDelay: ({ computedValue }) => computedValue,
    backoffLimit: Number.POSITIVE_INFINITY,
    noise: 100
  },
  localAddress: void 0,
  method: "GET",
  createConnection: void 0,
  cacheOptions: {
    shared: void 0,
    cacheHeuristic: void 0,
    immutableMinTimeToLive: void 0,
    ignoreCargoCult: void 0
  },
  https: {
    alpnProtocols: void 0,
    rejectUnauthorized: void 0,
    checkServerIdentity: void 0,
    certificateAuthority: void 0,
    key: void 0,
    certificate: void 0,
    passphrase: void 0,
    pfx: void 0,
    ciphers: void 0,
    honorCipherOrder: void 0,
    minVersion: void 0,
    maxVersion: void 0,
    signatureAlgorithms: void 0,
    tlsSessionLifetime: void 0,
    dhparam: void 0,
    ecdhCurve: void 0,
    certificateRevocationLists: void 0
  },
  encoding: void 0,
  resolveBodyOnly: false,
  isStream: false,
  responseType: "text",
  url: void 0,
  pagination: {
    transform(response) {
      if (response.request.options.responseType === "json") {
        return response.body;
      }
      return JSON.parse(response.body);
    },
    paginate({ response }) {
      const rawLinkHeader = response.headers.link;
      if (typeof rawLinkHeader !== "string" || rawLinkHeader.trim() === "") {
        return false;
      }
      const parsed = parseLinkHeader(rawLinkHeader);
      const next = parsed.find((entry) => entry.parameters.rel === "next" || entry.parameters.rel === '"next"');
      if (next) {
        return {
          url: new import_node_url5.URL(next.reference, response.url)
        };
      }
      return false;
    },
    filter: () => true,
    shouldContinue: () => true,
    countLimit: Number.POSITIVE_INFINITY,
    backoff: 0,
    requestLimit: 1e4,
    stackAllItems: false
  },
  setHost: true,
  maxHeaderSize: void 0,
  signal: void 0,
  enableUnixSockets: true
};
var cloneInternals = (internals) => {
  const { hooks, retry } = internals;
  const result = {
    ...internals,
    context: { ...internals.context },
    cacheOptions: { ...internals.cacheOptions },
    https: { ...internals.https },
    agent: { ...internals.agent },
    headers: { ...internals.headers },
    retry: {
      ...retry,
      errorCodes: [...retry.errorCodes],
      methods: [...retry.methods],
      statusCodes: [...retry.statusCodes]
    },
    timeout: { ...internals.timeout },
    hooks: {
      init: [...hooks.init],
      beforeRequest: [...hooks.beforeRequest],
      beforeError: [...hooks.beforeError],
      beforeRedirect: [...hooks.beforeRedirect],
      beforeRetry: [...hooks.beforeRetry],
      afterResponse: [...hooks.afterResponse]
    },
    searchParams: internals.searchParams ? new import_node_url5.URLSearchParams(internals.searchParams) : void 0,
    pagination: { ...internals.pagination }
  };
  if (result.url !== void 0) {
    result.prefixUrl = "";
  }
  return result;
};
var cloneRaw = (raw2) => {
  const { hooks, retry } = raw2;
  const result = { ...raw2 };
  if (dist_default5.object(raw2.context)) {
    result.context = { ...raw2.context };
  }
  if (dist_default5.object(raw2.cacheOptions)) {
    result.cacheOptions = { ...raw2.cacheOptions };
  }
  if (dist_default5.object(raw2.https)) {
    result.https = { ...raw2.https };
  }
  if (dist_default5.object(raw2.cacheOptions)) {
    result.cacheOptions = { ...result.cacheOptions };
  }
  if (dist_default5.object(raw2.agent)) {
    result.agent = { ...raw2.agent };
  }
  if (dist_default5.object(raw2.headers)) {
    result.headers = { ...raw2.headers };
  }
  if (dist_default5.object(retry)) {
    result.retry = { ...retry };
    if (dist_default5.array(retry.errorCodes)) {
      result.retry.errorCodes = [...retry.errorCodes];
    }
    if (dist_default5.array(retry.methods)) {
      result.retry.methods = [...retry.methods];
    }
    if (dist_default5.array(retry.statusCodes)) {
      result.retry.statusCodes = [...retry.statusCodes];
    }
  }
  if (dist_default5.object(raw2.timeout)) {
    result.timeout = { ...raw2.timeout };
  }
  if (dist_default5.object(hooks)) {
    result.hooks = {
      ...hooks
    };
    if (dist_default5.array(hooks.init)) {
      result.hooks.init = [...hooks.init];
    }
    if (dist_default5.array(hooks.beforeRequest)) {
      result.hooks.beforeRequest = [...hooks.beforeRequest];
    }
    if (dist_default5.array(hooks.beforeError)) {
      result.hooks.beforeError = [...hooks.beforeError];
    }
    if (dist_default5.array(hooks.beforeRedirect)) {
      result.hooks.beforeRedirect = [...hooks.beforeRedirect];
    }
    if (dist_default5.array(hooks.beforeRetry)) {
      result.hooks.beforeRetry = [...hooks.beforeRetry];
    }
    if (dist_default5.array(hooks.afterResponse)) {
      result.hooks.afterResponse = [...hooks.afterResponse];
    }
  }
  if (dist_default5.object(raw2.pagination)) {
    result.pagination = { ...raw2.pagination };
  }
  return result;
};
var getHttp2TimeoutOption = (internals) => {
  const delays = [internals.timeout.socket, internals.timeout.connect, internals.timeout.lookup, internals.timeout.request, internals.timeout.secureConnect].filter((delay2) => typeof delay2 === "number");
  if (delays.length > 0) {
    return Math.min(...delays);
  }
  return void 0;
};
var init3 = (options, withOptions, self2) => {
  var _a6;
  const initHooks = (_a6 = options.hooks) == null ? void 0 : _a6.init;
  if (initHooks) {
    for (const hook of initHooks) {
      hook(withOptions, self2);
    }
  }
};
var Options2 = class _Options {
  constructor(input3, options, defaults3) {
    Object.defineProperty(this, "_unixOptions", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_internals", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_merging", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_init", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    assert7.any([dist_default5.string, dist_default5.urlInstance, dist_default5.object, dist_default5.undefined], input3);
    assert7.any([dist_default5.object, dist_default5.undefined], options);
    assert7.any([dist_default5.object, dist_default5.undefined], defaults3);
    if (input3 instanceof _Options || options instanceof _Options) {
      throw new TypeError("The defaults must be passed as the third argument");
    }
    this._internals = cloneInternals((defaults3 == null ? void 0 : defaults3._internals) ?? defaults3 ?? defaultInternals);
    this._init = [...(defaults3 == null ? void 0 : defaults3._init) ?? []];
    this._merging = false;
    this._unixOptions = void 0;
    try {
      if (dist_default5.plainObject(input3)) {
        try {
          this.merge(input3);
          this.merge(options);
        } finally {
          this.url = input3.url;
        }
      } else {
        try {
          this.merge(options);
        } finally {
          if ((options == null ? void 0 : options.url) !== void 0) {
            if (input3 === void 0) {
              this.url = options.url;
            } else {
              throw new TypeError("The `url` option is mutually exclusive with the `input` argument");
            }
          } else if (input3 !== void 0) {
            this.url = input3;
          }
        }
      }
    } catch (error) {
      error.options = this;
      throw error;
    }
  }
  merge(options) {
    if (!options) {
      return;
    }
    if (options instanceof _Options) {
      for (const init4 of options._init) {
        this.merge(init4);
      }
      return;
    }
    options = cloneRaw(options);
    init3(this, options, this);
    init3(options, options, this);
    this._merging = true;
    if ("isStream" in options) {
      this.isStream = options.isStream;
    }
    try {
      let push = false;
      for (const key2 in options) {
        if (key2 === "mutableDefaults" || key2 === "handlers") {
          continue;
        }
        if (key2 === "url") {
          continue;
        }
        if (!(key2 in this)) {
          throw new Error(`Unexpected option: ${key2}`);
        }
        this[key2] = options[key2];
        push = true;
      }
      if (push) {
        this._init.push(options);
      }
    } finally {
      this._merging = false;
    }
  }
  /**
      Custom request function.
      The main purpose of this is to [support HTTP2 using a wrapper](https://github.com/szmarczak/http2-wrapper).
  
      @default http.request | https.request
      */
  get request() {
    return this._internals.request;
  }
  set request(value) {
    assert7.any([dist_default5.function_, dist_default5.undefined], value);
    this._internals.request = value;
  }
  /**
      An object representing `http`, `https` and `http2` keys for [`http.Agent`](https://nodejs.org/api/http.html#http_class_http_agent), [`https.Agent`](https://nodejs.org/api/https.html#https_class_https_agent) and [`http2wrapper.Agent`](https://github.com/szmarczak/http2-wrapper#new-http2agentoptions) instance.
      This is necessary because a request to one protocol might redirect to another.
      In such a scenario, Got will switch over to the right protocol agent for you.
  
      If a key is not present, it will default to a global agent.
  
      @example
      ```
      import got from 'got';
      import HttpAgent from 'agentkeepalive';
  
      const {HttpsAgent} = HttpAgent;
  
      await got('https://sindresorhus.com', {
          agent: {
              http: new HttpAgent(),
              https: new HttpsAgent()
          }
      });
      ```
      */
  get agent() {
    return this._internals.agent;
  }
  set agent(value) {
    assert7.plainObject(value);
    for (const key2 in value) {
      if (!(key2 in this._internals.agent)) {
        throw new TypeError(`Unexpected agent option: ${key2}`);
      }
      assert7.any([dist_default5.object, dist_default5.undefined], value[key2]);
    }
    if (this._merging) {
      Object.assign(this._internals.agent, value);
    } else {
      this._internals.agent = { ...value };
    }
  }
  get h2session() {
    return this._internals.h2session;
  }
  set h2session(value) {
    this._internals.h2session = value;
  }
  /**
      Decompress the response automatically.
  
      This will set the `accept-encoding` header to `gzip, deflate, br` unless you set it yourself.
  
      If this is disabled, a compressed response is returned as a `Buffer`.
      This may be useful if you want to handle decompression yourself or stream the raw compressed data.
  
      @default true
      */
  get decompress() {
    return this._internals.decompress;
  }
  set decompress(value) {
    assert7.boolean(value);
    this._internals.decompress = value;
  }
  /**
      Milliseconds to wait for the server to end the response before aborting the request with `got.TimeoutError` error (a.k.a. `request` property).
      By default, there's no timeout.
  
      This also accepts an `object` with the following fields to constrain the duration of each phase of the request lifecycle:
  
      - `lookup` starts when a socket is assigned and ends when the hostname has been resolved.
          Does not apply when using a Unix domain socket.
      - `connect` starts when `lookup` completes (or when the socket is assigned if lookup does not apply to the request) and ends when the socket is connected.
      - `secureConnect` starts when `connect` completes and ends when the handshaking process completes (HTTPS only).
      - `socket` starts when the socket is connected. See [request.setTimeout](https://nodejs.org/api/http.html#http_request_settimeout_timeout_callback).
      - `response` starts when the request has been written to the socket and ends when the response headers are received.
      - `send` starts when the socket is connected and ends with the request has been written to the socket.
      - `request` starts when the request is initiated and ends when the response's end event fires.
      */
  get timeout() {
    return this._internals.timeout;
  }
  set timeout(value) {
    assert7.plainObject(value);
    for (const key2 in value) {
      if (!(key2 in this._internals.timeout)) {
        throw new Error(`Unexpected timeout option: ${key2}`);
      }
      assert7.any([dist_default5.number, dist_default5.undefined], value[key2]);
    }
    if (this._merging) {
      Object.assign(this._internals.timeout, value);
    } else {
      this._internals.timeout = { ...value };
    }
  }
  /**
      When specified, `prefixUrl` will be prepended to `url`.
      The prefix can be any valid URL, either relative or absolute.
      A trailing slash `/` is optional - one will be added automatically.
  
      __Note__: `prefixUrl` will be ignored if the `url` argument is a URL instance.
  
      __Note__: Leading slashes in `input` are disallowed when using this option to enforce consistency and avoid confusion.
      For example, when the prefix URL is `https://example.com/foo` and the input is `/bar`, there's ambiguity whether the resulting URL would become `https://example.com/foo/bar` or `https://example.com/bar`.
      The latter is used by browsers.
  
      __Tip__: Useful when used with `got.extend()` to create niche-specific Got instances.
  
      __Tip__: You can change `prefixUrl` using hooks as long as the URL still includes the `prefixUrl`.
      If the URL doesn't include it anymore, it will throw.
  
      @example
      ```
      import got from 'got';
  
      await got('unicorn', {prefixUrl: 'https://cats.com'});
      //=> 'https://cats.com/unicorn'
  
      const instance = got.extend({
          prefixUrl: 'https://google.com'
      });
  
      await instance('unicorn', {
          hooks: {
              beforeRequest: [
                  options => {
                      options.prefixUrl = 'https://cats.com';
                  }
              ]
          }
      });
      //=> 'https://cats.com/unicorn'
      ```
      */
  get prefixUrl() {
    return this._internals.prefixUrl;
  }
  set prefixUrl(value) {
    assert7.any([dist_default5.string, dist_default5.urlInstance], value);
    if (value === "") {
      this._internals.prefixUrl = "";
      return;
    }
    value = value.toString();
    if (!value.endsWith("/")) {
      value += "/";
    }
    if (this._internals.prefixUrl && this._internals.url) {
      const { href } = this._internals.url;
      this._internals.url.href = value + href.slice(this._internals.prefixUrl.length);
    }
    this._internals.prefixUrl = value;
  }
  /**
      __Note #1__: The `body` option cannot be used with the `json` or `form` option.
  
      __Note #2__: If you provide this option, `got.stream()` will be read-only.
  
      __Note #3__: If you provide a payload with the `GET` or `HEAD` method, it will throw a `TypeError` unless the method is `GET` and the `allowGetBody` option is set to `true`.
  
      __Note #4__: This option is not enumerable and will not be merged with the instance defaults.
  
      The `content-length` header will be automatically set if `body` is a `string` / `Buffer` / [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) / [`form-data` instance](https://github.com/form-data/form-data), and `content-length` and `transfer-encoding` are not manually set in `options.headers`.
  
      Since Got 12, the `content-length` is not automatically set when `body` is a `fs.createReadStream`.
      */
  get body() {
    return this._internals.body;
  }
  set body(value) {
    assert7.any([dist_default5.string, dist_default5.buffer, dist_default5.nodeStream, dist_default5.generator, dist_default5.asyncGenerator, isFormData, dist_default5.undefined], value);
    if (dist_default5.nodeStream(value)) {
      assert7.truthy(value.readable);
    }
    if (value !== void 0) {
      assert7.undefined(this._internals.form);
      assert7.undefined(this._internals.json);
    }
    this._internals.body = value;
  }
  /**
      The form body is converted to a query string using [`(new URLSearchParams(object)).toString()`](https://nodejs.org/api/url.html#url_constructor_new_urlsearchparams_obj).
  
      If the `Content-Type` header is not present, it will be set to `application/x-www-form-urlencoded`.
  
      __Note #1__: If you provide this option, `got.stream()` will be read-only.
  
      __Note #2__: This option is not enumerable and will not be merged with the instance defaults.
      */
  get form() {
    return this._internals.form;
  }
  set form(value) {
    assert7.any([dist_default5.plainObject, dist_default5.undefined], value);
    if (value !== void 0) {
      assert7.undefined(this._internals.body);
      assert7.undefined(this._internals.json);
    }
    this._internals.form = value;
  }
  /**
      JSON body. If the `Content-Type` header is not set, it will be set to `application/json`.
  
      __Note #1__: If you provide this option, `got.stream()` will be read-only.
  
      __Note #2__: This option is not enumerable and will not be merged with the instance defaults.
      */
  get json() {
    return this._internals.json;
  }
  set json(value) {
    if (value !== void 0) {
      assert7.undefined(this._internals.body);
      assert7.undefined(this._internals.form);
    }
    this._internals.json = value;
  }
  /**
      The URL to request, as a string, a [`https.request` options object](https://nodejs.org/api/https.html#https_https_request_options_callback), or a [WHATWG `URL`](https://nodejs.org/api/url.html#url_class_url).
  
      Properties from `options` will override properties in the parsed `url`.
  
      If no protocol is specified, it will throw a `TypeError`.
  
      __Note__: The query string is **not** parsed as search params.
  
      @example
      ```
      await got('https://example.com/?query=a b'); //=> https://example.com/?query=a%20b
      await got('https://example.com/', {searchParams: {query: 'a b'}}); //=> https://example.com/?query=a+b
  
      // The query string is overridden by `searchParams`
      await got('https://example.com/?query=a b', {searchParams: {query: 'a b'}}); //=> https://example.com/?query=a+b
      ```
      */
  get url() {
    return this._internals.url;
  }
  set url(value) {
    assert7.any([dist_default5.string, dist_default5.urlInstance, dist_default5.undefined], value);
    if (value === void 0) {
      this._internals.url = void 0;
      return;
    }
    if (dist_default5.string(value) && value.startsWith("/")) {
      throw new Error("`url` must not start with a slash");
    }
    const urlString = `${this.prefixUrl}${value.toString()}`;
    const url = new import_node_url5.URL(urlString);
    this._internals.url = url;
    if (url.protocol === "unix:") {
      url.href = `http://unix${url.pathname}${url.search}`;
    }
    if (url.protocol !== "http:" && url.protocol !== "https:") {
      const error = new Error(`Unsupported protocol: ${url.protocol}`);
      error.code = "ERR_UNSUPPORTED_PROTOCOL";
      throw error;
    }
    if (this._internals.username) {
      url.username = this._internals.username;
      this._internals.username = "";
    }
    if (this._internals.password) {
      url.password = this._internals.password;
      this._internals.password = "";
    }
    if (this._internals.searchParams) {
      url.search = this._internals.searchParams.toString();
      this._internals.searchParams = void 0;
    }
    if (url.hostname === "unix") {
      if (!this._internals.enableUnixSockets) {
        throw new Error("Using UNIX domain sockets but option `enableUnixSockets` is not enabled");
      }
      const matches4 = /(?<socketPath>.+?):(?<path>.+)/.exec(`${url.pathname}${url.search}`);
      if (matches4 == null ? void 0 : matches4.groups) {
        const { socketPath, path: path45 } = matches4.groups;
        this._unixOptions = {
          socketPath,
          path: path45,
          host: ""
        };
      } else {
        this._unixOptions = void 0;
      }
      return;
    }
    this._unixOptions = void 0;
  }
  /**
      Cookie support. You don't have to care about parsing or how to store them.
  
      __Note__: If you provide this option, `options.headers.cookie` will be overridden.
      */
  get cookieJar() {
    return this._internals.cookieJar;
  }
  set cookieJar(value) {
    assert7.any([dist_default5.object, dist_default5.undefined], value);
    if (value === void 0) {
      this._internals.cookieJar = void 0;
      return;
    }
    let { setCookie, getCookieString } = value;
    assert7.function_(setCookie);
    assert7.function_(getCookieString);
    if (setCookie.length === 4 && getCookieString.length === 0) {
      setCookie = (0, import_node_util6.promisify)(setCookie.bind(value));
      getCookieString = (0, import_node_util6.promisify)(getCookieString.bind(value));
      this._internals.cookieJar = {
        setCookie,
        getCookieString
      };
    } else {
      this._internals.cookieJar = value;
    }
  }
  /**
      You can abort the `request` using [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController).
  
      *Requires Node.js 16 or later.*
  
      @example
      ```
      import got from 'got';
  
      const abortController = new AbortController();
  
      const request = got('https://httpbin.org/anything', {
          signal: abortController.signal
      });
  
      setTimeout(() => {
          abortController.abort();
      }, 100);
      ```
      */
  // TODO: Replace `any` with `AbortSignal` when targeting Node 16.
  get signal() {
    return this._internals.signal;
  }
  // TODO: Replace `any` with `AbortSignal` when targeting Node 16.
  set signal(value) {
    assert7.object(value);
    this._internals.signal = value;
  }
  /**
      Ignore invalid cookies instead of throwing an error.
      Only useful when the `cookieJar` option has been set. Not recommended.
  
      @default false
      */
  get ignoreInvalidCookies() {
    return this._internals.ignoreInvalidCookies;
  }
  set ignoreInvalidCookies(value) {
    assert7.boolean(value);
    this._internals.ignoreInvalidCookies = value;
  }
  /**
      Query string that will be added to the request URL.
      This will override the query string in `url`.
  
      If you need to pass in an array, you can do it using a `URLSearchParams` instance.
  
      @example
      ```
      import got from 'got';
  
      const searchParams = new URLSearchParams([['key', 'a'], ['key', 'b']]);
  
      await got('https://example.com', {searchParams});
  
      console.log(searchParams.toString());
      //=> 'key=a&key=b'
      ```
      */
  get searchParams() {
    if (this._internals.url) {
      return this._internals.url.searchParams;
    }
    if (this._internals.searchParams === void 0) {
      this._internals.searchParams = new import_node_url5.URLSearchParams();
    }
    return this._internals.searchParams;
  }
  set searchParams(value) {
    assert7.any([dist_default5.string, dist_default5.object, dist_default5.undefined], value);
    const url = this._internals.url;
    if (value === void 0) {
      this._internals.searchParams = void 0;
      if (url) {
        url.search = "";
      }
      return;
    }
    const searchParameters = this.searchParams;
    let updated;
    if (dist_default5.string(value)) {
      updated = new import_node_url5.URLSearchParams(value);
    } else if (value instanceof import_node_url5.URLSearchParams) {
      updated = value;
    } else {
      validateSearchParameters(value);
      updated = new import_node_url5.URLSearchParams();
      for (const key2 in value) {
        const entry = value[key2];
        if (entry === null) {
          updated.append(key2, "");
        } else if (entry === void 0) {
          searchParameters.delete(key2);
        } else {
          updated.append(key2, entry);
        }
      }
    }
    if (this._merging) {
      for (const key2 of updated.keys()) {
        searchParameters.delete(key2);
      }
      for (const [key2, value2] of updated) {
        searchParameters.append(key2, value2);
      }
    } else if (url) {
      url.search = searchParameters.toString();
    } else {
      this._internals.searchParams = searchParameters;
    }
  }
  get searchParameters() {
    throw new Error("The `searchParameters` option does not exist. Use `searchParams` instead.");
  }
  set searchParameters(_value) {
    throw new Error("The `searchParameters` option does not exist. Use `searchParams` instead.");
  }
  get dnsLookup() {
    return this._internals.dnsLookup;
  }
  set dnsLookup(value) {
    assert7.any([dist_default5.function_, dist_default5.undefined], value);
    this._internals.dnsLookup = value;
  }
  /**
      An instance of [`CacheableLookup`](https://github.com/szmarczak/cacheable-lookup) used for making DNS lookups.
      Useful when making lots of requests to different *public* hostnames.
  
      `CacheableLookup` uses `dns.resolver4(..)` and `dns.resolver6(...)` under the hood and fall backs to `dns.lookup(...)` when the first two fail, which may lead to additional delay.
  
      __Note__: This should stay disabled when making requests to internal hostnames such as `localhost`, `database.local` etc.
  
      @default false
      */
  get dnsCache() {
    return this._internals.dnsCache;
  }
  set dnsCache(value) {
    assert7.any([dist_default5.object, dist_default5.boolean, dist_default5.undefined], value);
    if (value === true) {
      this._internals.dnsCache = getGlobalDnsCache();
    } else if (value === false) {
      this._internals.dnsCache = void 0;
    } else {
      this._internals.dnsCache = value;
    }
  }
  /**
      User data. `context` is shallow merged and enumerable. If it contains non-enumerable properties they will NOT be merged.
  
      @example
      ```
      import got from 'got';
  
      const instance = got.extend({
          hooks: {
              beforeRequest: [
                  options => {
                      if (!options.context || !options.context.token) {
                          throw new Error('Token required');
                      }
  
                      options.headers.token = options.context.token;
                  }
              ]
          }
      });
  
      const context = {
          token: 'secret'
      };
  
      const response = await instance('https://httpbin.org/headers', {context});
  
      // Let's see the headers
      console.log(response.body);
      ```
      */
  get context() {
    return this._internals.context;
  }
  set context(value) {
    assert7.object(value);
    if (this._merging) {
      Object.assign(this._internals.context, value);
    } else {
      this._internals.context = { ...value };
    }
  }
  /**
  Hooks allow modifications during the request lifecycle.
  Hook functions may be async and are run serially.
  */
  get hooks() {
    return this._internals.hooks;
  }
  set hooks(value) {
    assert7.object(value);
    for (const knownHookEvent in value) {
      if (!(knownHookEvent in this._internals.hooks)) {
        throw new Error(`Unexpected hook event: ${knownHookEvent}`);
      }
      const typedKnownHookEvent = knownHookEvent;
      const hooks = value[typedKnownHookEvent];
      assert7.any([dist_default5.array, dist_default5.undefined], hooks);
      if (hooks) {
        for (const hook of hooks) {
          assert7.function_(hook);
        }
      }
      if (this._merging) {
        if (hooks) {
          this._internals.hooks[typedKnownHookEvent].push(...hooks);
        }
      } else {
        if (!hooks) {
          throw new Error(`Missing hook event: ${knownHookEvent}`);
        }
        this._internals.hooks[knownHookEvent] = [...hooks];
      }
    }
  }
  /**
      Defines if redirect responses should be followed automatically.
  
      Note that if a `303` is sent by the server in response to any request type (`POST`, `DELETE`, etc.), Got will automatically request the resource pointed to in the location header via `GET`.
      This is in accordance with [the spec](https://tools.ietf.org/html/rfc7231#section-6.4.4). You can optionally turn on this behavior also for other redirect codes - see `methodRewriting`.
  
      @default true
      */
  get followRedirect() {
    return this._internals.followRedirect;
  }
  set followRedirect(value) {
    assert7.boolean(value);
    this._internals.followRedirect = value;
  }
  get followRedirects() {
    throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");
  }
  set followRedirects(_value) {
    throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");
  }
  /**
      If exceeded, the request will be aborted and a `MaxRedirectsError` will be thrown.
  
      @default 10
      */
  get maxRedirects() {
    return this._internals.maxRedirects;
  }
  set maxRedirects(value) {
    assert7.number(value);
    this._internals.maxRedirects = value;
  }
  /**
      A cache adapter instance for storing cached response data.
  
      @default false
      */
  get cache() {
    return this._internals.cache;
  }
  set cache(value) {
    assert7.any([dist_default5.object, dist_default5.string, dist_default5.boolean, dist_default5.undefined], value);
    if (value === true) {
      this._internals.cache = globalCache;
    } else if (value === false) {
      this._internals.cache = void 0;
    } else {
      this._internals.cache = value;
    }
  }
  /**
      Determines if a `got.HTTPError` is thrown for unsuccessful responses.
  
      If this is disabled, requests that encounter an error status code will be resolved with the `response` instead of throwing.
      This may be useful if you are checking for resource availability and are expecting error responses.
  
      @default true
      */
  get throwHttpErrors() {
    return this._internals.throwHttpErrors;
  }
  set throwHttpErrors(value) {
    assert7.boolean(value);
    this._internals.throwHttpErrors = value;
  }
  get username() {
    const url = this._internals.url;
    const value = url ? url.username : this._internals.username;
    return decodeURIComponent(value);
  }
  set username(value) {
    assert7.string(value);
    const url = this._internals.url;
    const fixedValue = encodeURIComponent(value);
    if (url) {
      url.username = fixedValue;
    } else {
      this._internals.username = fixedValue;
    }
  }
  get password() {
    const url = this._internals.url;
    const value = url ? url.password : this._internals.password;
    return decodeURIComponent(value);
  }
  set password(value) {
    assert7.string(value);
    const url = this._internals.url;
    const fixedValue = encodeURIComponent(value);
    if (url) {
      url.password = fixedValue;
    } else {
      this._internals.password = fixedValue;
    }
  }
  /**
      If set to `true`, Got will additionally accept HTTP2 requests.
  
      It will choose either HTTP/1.1 or HTTP/2 depending on the ALPN protocol.
  
      __Note__: This option requires Node.js 15.10.0 or newer as HTTP/2 support on older Node.js versions is very buggy.
  
      __Note__: Overriding `options.request` will disable HTTP2 support.
  
      @default false
  
      @example
      ```
      import got from 'got';
  
      const {headers} = await got('https://nghttp2.org/httpbin/anything', {http2: true});
  
      console.log(headers.via);
      //=> '2 nghttpx'
      ```
      */
  get http2() {
    return this._internals.http2;
  }
  set http2(value) {
    assert7.boolean(value);
    this._internals.http2 = value;
  }
  /**
      Set this to `true` to allow sending body for the `GET` method.
      However, the [HTTP/2 specification](https://tools.ietf.org/html/rfc7540#section-8.1.3) says that `An HTTP GET request includes request header fields and no payload body`, therefore when using the HTTP/2 protocol this option will have no effect.
      This option is only meant to interact with non-compliant servers when you have no other choice.
  
      __Note__: The [RFC 7231](https://tools.ietf.org/html/rfc7231#section-4.3.1) doesn't specify any particular behavior for the GET method having a payload, therefore __it's considered an [anti-pattern](https://en.wikipedia.org/wiki/Anti-pattern)__.
  
      @default false
      */
  get allowGetBody() {
    return this._internals.allowGetBody;
  }
  set allowGetBody(value) {
    assert7.boolean(value);
    this._internals.allowGetBody = value;
  }
  /**
      Request headers.
  
      Existing headers will be overwritten. Headers set to `undefined` will be omitted.
  
      @default {}
      */
  get headers() {
    return this._internals.headers;
  }
  set headers(value) {
    assert7.plainObject(value);
    if (this._merging) {
      Object.assign(this._internals.headers, lowercaseKeys(value));
    } else {
      this._internals.headers = lowercaseKeys(value);
    }
  }
  /**
      Specifies if the HTTP request method should be [rewritten as `GET`](https://tools.ietf.org/html/rfc7231#section-6.4) on redirects.
  
      As the [specification](https://tools.ietf.org/html/rfc7231#section-6.4) prefers to rewrite the HTTP method only on `303` responses, this is Got's default behavior.
      Setting `methodRewriting` to `true` will also rewrite `301` and `302` responses, as allowed by the spec. This is the behavior followed by `curl` and browsers.
  
      __Note__: Got never performs method rewriting on `307` and `308` responses, as this is [explicitly prohibited by the specification](https://www.rfc-editor.org/rfc/rfc7231#section-6.4.7).
  
      @default false
      */
  get methodRewriting() {
    return this._internals.methodRewriting;
  }
  set methodRewriting(value) {
    assert7.boolean(value);
    this._internals.methodRewriting = value;
  }
  /**
      Indicates which DNS record family to use.
  
      Values:
      - `undefined`: IPv4 (if present) or IPv6
      - `4`: Only IPv4
      - `6`: Only IPv6
  
      @default undefined
      */
  get dnsLookupIpVersion() {
    return this._internals.dnsLookupIpVersion;
  }
  set dnsLookupIpVersion(value) {
    if (value !== void 0 && value !== 4 && value !== 6) {
      throw new TypeError(`Invalid DNS lookup IP version: ${value}`);
    }
    this._internals.dnsLookupIpVersion = value;
  }
  /**
      A function used to parse JSON responses.
  
      @example
      ```
      import got from 'got';
      import Bourne from '@hapi/bourne';
  
      const parsed = await got('https://example.com', {
          parseJson: text => Bourne.parse(text)
      }).json();
  
      console.log(parsed);
      ```
      */
  get parseJson() {
    return this._internals.parseJson;
  }
  set parseJson(value) {
    assert7.function_(value);
    this._internals.parseJson = value;
  }
  /**
      A function used to stringify the body of JSON requests.
  
      @example
      ```
      import got from 'got';
  
      await got.post('https://example.com', {
          stringifyJson: object => JSON.stringify(object, (key, value) => {
              if (key.startsWith('_')) {
                  return;
              }
  
              return value;
          }),
          json: {
              some: 'payload',
              _ignoreMe: 1234
          }
      });
      ```
  
      @example
      ```
      import got from 'got';
  
      await got.post('https://example.com', {
          stringifyJson: object => JSON.stringify(object, (key, value) => {
              if (typeof value === 'number') {
                  return value.toString();
              }
  
              return value;
          }),
          json: {
              some: 'payload',
              number: 1
          }
      });
      ```
      */
  get stringifyJson() {
    return this._internals.stringifyJson;
  }
  set stringifyJson(value) {
    assert7.function_(value);
    this._internals.stringifyJson = value;
  }
  /**
      An object representing `limit`, `calculateDelay`, `methods`, `statusCodes`, `maxRetryAfter` and `errorCodes` fields for maximum retry count, retry handler, allowed methods, allowed status codes, maximum [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) time and allowed error codes.
  
      Delays between retries counts with function `1000 * Math.pow(2, retry) + Math.random() * 100`, where `retry` is attempt number (starts from 1).
  
      The `calculateDelay` property is a `function` that receives an object with `attemptCount`, `retryOptions`, `error` and `computedValue` properties for current retry count, the retry options, error and default computed value.
      The function must return a delay in milliseconds (or a Promise resolving with it) (`0` return value cancels retry).
  
      By default, it retries *only* on the specified methods, status codes, and on these network errors:
  
      - `ETIMEDOUT`: One of the [timeout](#timeout) limits were reached.
      - `ECONNRESET`: Connection was forcibly closed by a peer.
      - `EADDRINUSE`: Could not bind to any free port.
      - `ECONNREFUSED`: Connection was refused by the server.
      - `EPIPE`: The remote side of the stream being written has been closed.
      - `ENOTFOUND`: Couldn't resolve the hostname to an IP address.
      - `ENETUNREACH`: No internet connection.
      - `EAI_AGAIN`: DNS lookup timed out.
  
      __Note__: If `maxRetryAfter` is set to `undefined`, it will use `options.timeout`.
      __Note__: If [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) header is greater than `maxRetryAfter`, it will cancel the request.
      */
  get retry() {
    return this._internals.retry;
  }
  set retry(value) {
    assert7.plainObject(value);
    assert7.any([dist_default5.function_, dist_default5.undefined], value.calculateDelay);
    assert7.any([dist_default5.number, dist_default5.undefined], value.maxRetryAfter);
    assert7.any([dist_default5.number, dist_default5.undefined], value.limit);
    assert7.any([dist_default5.array, dist_default5.undefined], value.methods);
    assert7.any([dist_default5.array, dist_default5.undefined], value.statusCodes);
    assert7.any([dist_default5.array, dist_default5.undefined], value.errorCodes);
    assert7.any([dist_default5.number, dist_default5.undefined], value.noise);
    if (value.noise && Math.abs(value.noise) > 100) {
      throw new Error(`The maximum acceptable retry noise is +/- 100ms, got ${value.noise}`);
    }
    for (const key2 in value) {
      if (!(key2 in this._internals.retry)) {
        throw new Error(`Unexpected retry option: ${key2}`);
      }
    }
    if (this._merging) {
      Object.assign(this._internals.retry, value);
    } else {
      this._internals.retry = { ...value };
    }
    const { retry } = this._internals;
    retry.methods = [...new Set(retry.methods.map((method) => method.toUpperCase()))];
    retry.statusCodes = [...new Set(retry.statusCodes)];
    retry.errorCodes = [...new Set(retry.errorCodes)];
  }
  /**
      From `http.RequestOptions`.
  
      The IP address used to send the request from.
      */
  get localAddress() {
    return this._internals.localAddress;
  }
  set localAddress(value) {
    assert7.any([dist_default5.string, dist_default5.undefined], value);
    this._internals.localAddress = value;
  }
  /**
      The HTTP method used to make the request.
  
      @default 'GET'
      */
  get method() {
    return this._internals.method;
  }
  set method(value) {
    assert7.string(value);
    this._internals.method = value.toUpperCase();
  }
  get createConnection() {
    return this._internals.createConnection;
  }
  set createConnection(value) {
    assert7.any([dist_default5.function_, dist_default5.undefined], value);
    this._internals.createConnection = value;
  }
  /**
      From `http-cache-semantics`
  
      @default {}
      */
  get cacheOptions() {
    return this._internals.cacheOptions;
  }
  set cacheOptions(value) {
    assert7.plainObject(value);
    assert7.any([dist_default5.boolean, dist_default5.undefined], value.shared);
    assert7.any([dist_default5.number, dist_default5.undefined], value.cacheHeuristic);
    assert7.any([dist_default5.number, dist_default5.undefined], value.immutableMinTimeToLive);
    assert7.any([dist_default5.boolean, dist_default5.undefined], value.ignoreCargoCult);
    for (const key2 in value) {
      if (!(key2 in this._internals.cacheOptions)) {
        throw new Error(`Cache option \`${key2}\` does not exist`);
      }
    }
    if (this._merging) {
      Object.assign(this._internals.cacheOptions, value);
    } else {
      this._internals.cacheOptions = { ...value };
    }
  }
  /**
  Options for the advanced HTTPS API.
  */
  get https() {
    return this._internals.https;
  }
  set https(value) {
    assert7.plainObject(value);
    assert7.any([dist_default5.boolean, dist_default5.undefined], value.rejectUnauthorized);
    assert7.any([dist_default5.function_, dist_default5.undefined], value.checkServerIdentity);
    assert7.any([dist_default5.string, dist_default5.object, dist_default5.array, dist_default5.undefined], value.certificateAuthority);
    assert7.any([dist_default5.string, dist_default5.object, dist_default5.array, dist_default5.undefined], value.key);
    assert7.any([dist_default5.string, dist_default5.object, dist_default5.array, dist_default5.undefined], value.certificate);
    assert7.any([dist_default5.string, dist_default5.undefined], value.passphrase);
    assert7.any([dist_default5.string, dist_default5.buffer, dist_default5.array, dist_default5.undefined], value.pfx);
    assert7.any([dist_default5.array, dist_default5.undefined], value.alpnProtocols);
    assert7.any([dist_default5.string, dist_default5.undefined], value.ciphers);
    assert7.any([dist_default5.string, dist_default5.buffer, dist_default5.undefined], value.dhparam);
    assert7.any([dist_default5.string, dist_default5.undefined], value.signatureAlgorithms);
    assert7.any([dist_default5.string, dist_default5.undefined], value.minVersion);
    assert7.any([dist_default5.string, dist_default5.undefined], value.maxVersion);
    assert7.any([dist_default5.boolean, dist_default5.undefined], value.honorCipherOrder);
    assert7.any([dist_default5.number, dist_default5.undefined], value.tlsSessionLifetime);
    assert7.any([dist_default5.string, dist_default5.undefined], value.ecdhCurve);
    assert7.any([dist_default5.string, dist_default5.buffer, dist_default5.array, dist_default5.undefined], value.certificateRevocationLists);
    for (const key2 in value) {
      if (!(key2 in this._internals.https)) {
        throw new Error(`HTTPS option \`${key2}\` does not exist`);
      }
    }
    if (this._merging) {
      Object.assign(this._internals.https, value);
    } else {
      this._internals.https = { ...value };
    }
  }
  /**
      [Encoding](https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings) to be used on `setEncoding` of the response data.
  
      To get a [`Buffer`](https://nodejs.org/api/buffer.html), you need to set `responseType` to `buffer` instead.
      Don't set this option to `null`.
  
      __Note__: This doesn't affect streams! Instead, you need to do `got.stream(...).setEncoding(encoding)`.
  
      @default 'utf-8'
      */
  get encoding() {
    return this._internals.encoding;
  }
  set encoding(value) {
    if (value === null) {
      throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");
    }
    assert7.any([dist_default5.string, dist_default5.undefined], value);
    this._internals.encoding = value;
  }
  /**
      When set to `true` the promise will return the Response body instead of the Response object.
  
      @default false
      */
  get resolveBodyOnly() {
    return this._internals.resolveBodyOnly;
  }
  set resolveBodyOnly(value) {
    assert7.boolean(value);
    this._internals.resolveBodyOnly = value;
  }
  /**
      Returns a `Stream` instead of a `Promise`.
      This is equivalent to calling `got.stream(url, options?)`.
  
      @default false
      */
  get isStream() {
    return this._internals.isStream;
  }
  set isStream(value) {
    assert7.boolean(value);
    this._internals.isStream = value;
  }
  /**
      The parsing method.
  
      The promise also has `.text()`, `.json()` and `.buffer()` methods which return another Got promise for the parsed body.
  
      It's like setting the options to `{responseType: 'json', resolveBodyOnly: true}` but without affecting the main Got promise.
  
      __Note__: When using streams, this option is ignored.
  
      @example
      ```
      const responsePromise = got(url);
      const bufferPromise = responsePromise.buffer();
      const jsonPromise = responsePromise.json();
  
      const [response, buffer, json] = Promise.all([responsePromise, bufferPromise, jsonPromise]);
      // `response` is an instance of Got Response
      // `buffer` is an instance of Buffer
      // `json` is an object
      ```
  
      @example
      ```
      // This
      const body = await got(url).json();
  
      // is semantically the same as this
      const body = await got(url, {responseType: 'json', resolveBodyOnly: true});
      ```
      */
  get responseType() {
    return this._internals.responseType;
  }
  set responseType(value) {
    if (value === void 0) {
      this._internals.responseType = "text";
      return;
    }
    if (value !== "text" && value !== "buffer" && value !== "json") {
      throw new Error(`Invalid \`responseType\` option: ${value}`);
    }
    this._internals.responseType = value;
  }
  get pagination() {
    return this._internals.pagination;
  }
  set pagination(value) {
    assert7.object(value);
    if (this._merging) {
      Object.assign(this._internals.pagination, value);
    } else {
      this._internals.pagination = value;
    }
  }
  get auth() {
    throw new Error("Parameter `auth` is deprecated. Use `username` / `password` instead.");
  }
  set auth(_value) {
    throw new Error("Parameter `auth` is deprecated. Use `username` / `password` instead.");
  }
  get setHost() {
    return this._internals.setHost;
  }
  set setHost(value) {
    assert7.boolean(value);
    this._internals.setHost = value;
  }
  get maxHeaderSize() {
    return this._internals.maxHeaderSize;
  }
  set maxHeaderSize(value) {
    assert7.any([dist_default5.number, dist_default5.undefined], value);
    this._internals.maxHeaderSize = value;
  }
  get enableUnixSockets() {
    return this._internals.enableUnixSockets;
  }
  set enableUnixSockets(value) {
    assert7.boolean(value);
    this._internals.enableUnixSockets = value;
  }
  // eslint-disable-next-line @typescript-eslint/naming-convention
  toJSON() {
    return { ...this._internals };
  }
  [Symbol.for("nodejs.util.inspect.custom")](_depth2, options) {
    return (0, import_node_util6.inspect)(this._internals, options);
  }
  createNativeRequestOptions() {
    var _a6;
    const internals = this._internals;
    const url = internals.url;
    let agent;
    if (url.protocol === "https:") {
      agent = internals.http2 ? internals.agent : internals.agent.https;
    } else {
      agent = internals.agent.http;
    }
    const { https: https3 } = internals;
    let { pfx } = https3;
    if (dist_default5.array(pfx) && dist_default5.plainObject(pfx[0])) {
      pfx = pfx.map((object) => ({
        buf: object.buffer,
        passphrase: object.passphrase
      }));
    }
    return {
      ...internals.cacheOptions,
      ...this._unixOptions,
      // HTTPS options
      // eslint-disable-next-line @typescript-eslint/naming-convention
      ALPNProtocols: https3.alpnProtocols,
      ca: https3.certificateAuthority,
      cert: https3.certificate,
      key: https3.key,
      passphrase: https3.passphrase,
      pfx: https3.pfx,
      rejectUnauthorized: https3.rejectUnauthorized,
      checkServerIdentity: https3.checkServerIdentity ?? import_node_tls.checkServerIdentity,
      ciphers: https3.ciphers,
      honorCipherOrder: https3.honorCipherOrder,
      minVersion: https3.minVersion,
      maxVersion: https3.maxVersion,
      sigalgs: https3.signatureAlgorithms,
      sessionTimeout: https3.tlsSessionLifetime,
      dhparam: https3.dhparam,
      ecdhCurve: https3.ecdhCurve,
      crl: https3.certificateRevocationLists,
      // HTTP options
      lookup: internals.dnsLookup ?? ((_a6 = internals.dnsCache) == null ? void 0 : _a6.lookup),
      family: internals.dnsLookupIpVersion,
      agent,
      setHost: internals.setHost,
      method: internals.method,
      maxHeaderSize: internals.maxHeaderSize,
      localAddress: internals.localAddress,
      headers: internals.headers,
      createConnection: internals.createConnection,
      timeout: internals.http2 ? getHttp2TimeoutOption(internals) : void 0,
      // HTTP/2 options
      h2session: internals.h2session
    };
  }
  getRequestFunction() {
    const url = this._internals.url;
    const { request } = this._internals;
    if (!request && url) {
      return this.getFallbackRequestFunction();
    }
    return request;
  }
  getFallbackRequestFunction() {
    const url = this._internals.url;
    if (!url) {
      return;
    }
    if (url.protocol === "https:") {
      if (this._internals.http2) {
        if (major < 15 || major === 15 && minor < 10) {
          const error = new Error("To use the `http2` option, install Node.js 15.10.0 or above");
          error.code = "EUNSUPPORTED";
          throw error;
        }
        return import_http2_wrapper.default.auto;
      }
      return import_node_https2.default.request;
    }
    return import_node_http3.default.request;
  }
  freeze() {
    const options = this._internals;
    Object.freeze(options);
    Object.freeze(options.hooks);
    Object.freeze(options.hooks.afterResponse);
    Object.freeze(options.hooks.beforeError);
    Object.freeze(options.hooks.beforeRedirect);
    Object.freeze(options.hooks.beforeRequest);
    Object.freeze(options.hooks.beforeRetry);
    Object.freeze(options.hooks.init);
    Object.freeze(options.https);
    Object.freeze(options.cacheOptions);
    Object.freeze(options.agent);
    Object.freeze(options.headers);
    Object.freeze(options.timeout);
    Object.freeze(options.retry);
    Object.freeze(options.retry.errorCodes);
    Object.freeze(options.retry.methods);
    Object.freeze(options.retry.statusCodes);
  }
};

// ../../node_modules/got/dist/source/core/response.js
var isResponseOk = (response) => {
  const { statusCode } = response;
  const limitStatusCode = response.request.options.followRedirect ? 299 : 399;
  return statusCode >= 200 && statusCode <= limitStatusCode || statusCode === 304;
};
var ParseError2 = class extends RequestError {
  constructor(error, response) {
    const { options } = response.request;
    super(`${error.message} in "${options.url.toString()}"`, error, response.request);
    this.name = "ParseError";
    this.code = "ERR_BODY_PARSE_FAILURE";
  }
};
var parseBody = (response, responseType, parseJson, encoding) => {
  const { rawBody } = response;
  try {
    if (responseType === "text") {
      return rawBody.toString(encoding);
    }
    if (responseType === "json") {
      return rawBody.length === 0 ? "" : parseJson(rawBody.toString(encoding));
    }
    if (responseType === "buffer") {
      return rawBody;
    }
  } catch (error) {
    throw new ParseError2(error, response);
  }
  throw new ParseError2({
    message: `Unknown body type '${responseType}'`,
    name: "Error"
  }, response);
};

// ../../node_modules/got/dist/source/core/utils/is-client-request.js
function isClientRequest(clientRequest) {
  return clientRequest.writable && !clientRequest.writableEnded;
}
var is_client_request_default = isClientRequest;

// ../../node_modules/got/dist/source/core/utils/is-unix-socket-url.js
function isUnixSocketURL(url) {
  return url.protocol === "unix:" || url.hostname === "unix";
}

// ../../node_modules/got/dist/source/core/index.js
var { buffer: getBuffer } = import_get_stream2.default;
var supportsBrotli = dist_default5.string(import_node_process8.default.versions.brotli);
var methodsWithoutBody = /* @__PURE__ */ new Set(["GET", "HEAD"]);
var cacheableStore = new WeakableMap();
var redirectCodes = /* @__PURE__ */ new Set([300, 301, 302, 303, 304, 307, 308]);
var proxiedRequestEvents = [
  "socket",
  "connect",
  "continue",
  "information",
  "upgrade"
];
var noop4 = () => {
};
var Request3 = class _Request extends import_node_stream7.Duplex {
  constructor(url, options, defaults3) {
    super({
      // Don't destroy immediately, as the error may be emitted on unsuccessful retry
      autoDestroy: false,
      // It needs to be zero because we're just proxying the data to another stream
      highWaterMark: 0
    });
    Object.defineProperty(this, "constructor", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_noPipe", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "options", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "response", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "requestUrl", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "redirectUrls", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "retryCount", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_stopRetry", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_downloadedSize", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_uploadedSize", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_stopReading", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_pipedServerResponses", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_request", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_responseSize", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_bodySize", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_unproxyEvents", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_isFromCache", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_cannotHaveBody", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_triggerRead", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_cancelTimeouts", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_removeListeners", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_nativeResponse", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_flushed", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_aborted", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    Object.defineProperty(this, "_requestInitialized", {
      enumerable: true,
      configurable: true,
      writable: true,
      value: void 0
    });
    this._downloadedSize = 0;
    this._uploadedSize = 0;
    this._stopReading = false;
    this._pipedServerResponses = /* @__PURE__ */ new Set();
    this._cannotHaveBody = false;
    this._unproxyEvents = noop4;
    this._triggerRead = false;
    this._cancelTimeouts = noop4;
    this._removeListeners = noop4;
    this._jobs = [];
    this._flushed = false;
    this._requestInitialized = false;
    this._aborted = false;
    this.redirectUrls = [];
    this.retryCount = 0;
    this._stopRetry = noop4;
    this.on("pipe", (source2) => {
      if (source2 == null ? void 0 : source2.headers) {
        Object.assign(this.options.headers, source2.headers);
      }
    });
    this.on("newListener", (event) => {
      if (event === "retry" && this.listenerCount("retry") > 0) {
        throw new Error("A retry listener has been attached already.");
      }
    });
    try {
      this.options = new Options2(url, options, defaults3);
      if (!this.options.url) {
        if (this.options.prefixUrl === "") {
          throw new TypeError("Missing `url` property");
        }
        this.options.url = "";
      }
      this.requestUrl = this.options.url;
    } catch (error) {
      const { options: options2 } = error;
      if (options2) {
        this.options = options2;
      }
      this.flush = async () => {
        this.flush = async () => {
        };
        this.destroy(error);
      };
      return;
    }
    const { body: body3 } = this.options;
    if (dist_default5.nodeStream(body3)) {
      body3.once("error", (error) => {
        if (this._flushed) {
          this._beforeError(new UploadError(error, this));
        } else {
          this.flush = async () => {
            this.flush = async () => {
            };
            this._beforeError(new UploadError(error, this));
          };
        }
      });
    }
    if (this.options.signal) {
      const abort = () => {
        this.destroy(new AbortError2(this));
      };
      if (this.options.signal.aborted) {
        abort();
      } else {
        this.options.signal.addEventListener("abort", abort);
        this._removeListeners = () => {
          this.options.signal.removeEventListener("abort", abort);
        };
      }
    }
  }
  async flush() {
    var _a6;
    if (this._flushed) {
      return;
    }
    this._flushed = true;
    try {
      await this._finalizeBody();
      if (this.destroyed) {
        return;
      }
      await this._makeRequest();
      if (this.destroyed) {
        (_a6 = this._request) == null ? void 0 : _a6.destroy();
        return;
      }
      for (const job of this._jobs) {
        job();
      }
      this._jobs.length = 0;
      this._requestInitialized = true;
    } catch (error) {
      this._beforeError(error);
    }
  }
  _beforeError(error) {
    if (this._stopReading) {
      return;
    }
    const { response, options } = this;
    const attemptCount = this.retryCount + (error.name === "RetryError" ? 0 : 1);
    this._stopReading = true;
    if (!(error instanceof RequestError)) {
      error = new RequestError(error.message, error, this);
    }
    const typedError = error;
    void (async () => {
      var _a6, _b;
      if ((response == null ? void 0 : response.readable) && !response.rawBody && !((_b = (_a6 = this._request) == null ? void 0 : _a6.socket) == null ? void 0 : _b.destroyed)) {
        response.setEncoding(this.readableEncoding);
        const success = await this._setRawBody(response);
        if (success) {
          response.body = response.rawBody.toString();
        }
      }
      if (this.listenerCount("retry") !== 0) {
        let backoff;
        try {
          let retryAfter;
          if (response && "retry-after" in response.headers) {
            retryAfter = Number(response.headers["retry-after"]);
            if (Number.isNaN(retryAfter)) {
              retryAfter = Date.parse(response.headers["retry-after"]) - Date.now();
              if (retryAfter <= 0) {
                retryAfter = 1;
              }
            } else {
              retryAfter *= 1e3;
            }
          }
          const retryOptions = options.retry;
          backoff = await retryOptions.calculateDelay({
            attemptCount,
            retryOptions,
            error: typedError,
            retryAfter,
            computedValue: calculate_retry_delay_default({
              attemptCount,
              retryOptions,
              error: typedError,
              retryAfter,
              computedValue: retryOptions.maxRetryAfter ?? options.timeout.request ?? Number.POSITIVE_INFINITY
            })
          });
        } catch (error_) {
          void this._error(new RequestError(error_.message, error_, this));
          return;
        }
        if (backoff) {
          await new Promise((resolve9) => {
            const timeout = setTimeout(resolve9, backoff);
            this._stopRetry = () => {
              clearTimeout(timeout);
              resolve9();
            };
          });
          if (this.destroyed) {
            return;
          }
          try {
            for (const hook of this.options.hooks.beforeRetry) {
              await hook(typedError, this.retryCount + 1);
            }
          } catch (error_) {
            void this._error(new RequestError(error_.message, error, this));
            return;
          }
          if (this.destroyed) {
            return;
          }
          this.destroy();
          this.emit("retry", this.retryCount + 1, error, (updatedOptions) => {
            const request = new _Request(options.url, updatedOptions, options);
            request.retryCount = this.retryCount + 1;
            import_node_process8.default.nextTick(() => {
              void request.flush();
            });
            return request;
          });
          return;
        }
      }
      void this._error(typedError);
    })();
  }
  _read() {
    this._triggerRead = true;
    const { response } = this;
    if (response && !this._stopReading) {
      if (response.readableLength) {
        this._triggerRead = false;
      }
      let data;
      while ((data = response.read()) !== null) {
        this._downloadedSize += data.length;
        const progress = this.downloadProgress;
        if (progress.percent < 1) {
          this.emit("downloadProgress", progress);
        }
        this.push(data);
      }
    }
  }
  _write(chunk, encoding, callback) {
    const write3 = () => {
      this._writeRequest(chunk, encoding, callback);
    };
    if (this._requestInitialized) {
      write3();
    } else {
      this._jobs.push(write3);
    }
  }
  _final(callback) {
    const endRequest = () => {
      if (!this._request || this._request.destroyed) {
        callback();
        return;
      }
      this._request.end((error) => {
        var _a6;
        if ((_a6 = this._request._writableState) == null ? void 0 : _a6.errored) {
          return;
        }
        if (!error) {
          this._bodySize = this._uploadedSize;
          this.emit("uploadProgress", this.uploadProgress);
          this._request.emit("upload-complete");
        }
        callback(error);
      });
    };
    if (this._requestInitialized) {
      endRequest();
    } else {
      this._jobs.push(endRequest);
    }
  }
  _destroy(error, callback) {
    this._stopReading = true;
    this.flush = async () => {
    };
    this._stopRetry();
    this._cancelTimeouts();
    this._removeListeners();
    if (this.options) {
      const { body: body3 } = this.options;
      if (dist_default5.nodeStream(body3)) {
        body3.destroy();
      }
    }
    if (this._request) {
      this._request.destroy();
    }
    if (error !== null && !dist_default5.undefined(error) && !(error instanceof RequestError)) {
      error = new RequestError(error.message, error, this);
    }
    callback(error);
  }
  pipe(destination, options) {
    if (destination instanceof import_node_http4.ServerResponse) {
      this._pipedServerResponses.add(destination);
    }
    return super.pipe(destination, options);
  }
  unpipe(destination) {
    if (destination instanceof import_node_http4.ServerResponse) {
      this._pipedServerResponses.delete(destination);
    }
    super.unpipe(destination);
    return this;
  }
  async _finalizeBody() {
    const { options } = this;
    const { headers } = options;
    const isForm = !dist_default5.undefined(options.form);
    const isJSON = !dist_default5.undefined(options.json);
    const isBody = !dist_default5.undefined(options.body);
    const cannotHaveBody = methodsWithoutBody.has(options.method) && !(options.method === "GET" && options.allowGetBody);
    this._cannotHaveBody = cannotHaveBody;
    if (isForm || isJSON || isBody) {
      if (cannotHaveBody) {
        throw new TypeError(`The \`${options.method}\` method cannot be used with a body`);
      }
      const noContentType = !dist_default5.string(headers["content-type"]);
      if (isBody) {
        if (isFormData(options.body)) {
          const encoder = new FormDataEncoder(options.body);
          if (noContentType) {
            headers["content-type"] = encoder.headers["Content-Type"];
          }
          if ("Content-Length" in encoder.headers) {
            headers["content-length"] = encoder.headers["Content-Length"];
          }
          options.body = encoder.encode();
        }
        if (isFormData2(options.body) && noContentType) {
          headers["content-type"] = `multipart/form-data; boundary=${options.body.getBoundary()}`;
        }
      } else if (isForm) {
        if (noContentType) {
          headers["content-type"] = "application/x-www-form-urlencoded";
        }
        const { form } = options;
        options.form = void 0;
        options.body = new import_node_url6.URLSearchParams(form).toString();
      } else {
        if (noContentType) {
          headers["content-type"] = "application/json";
        }
        const { json: json2 } = options;
        options.json = void 0;
        options.body = options.stringifyJson(json2);
      }
      const uploadBodySize = await getBodySize(options.body, options.headers);
      if (dist_default5.undefined(headers["content-length"]) && dist_default5.undefined(headers["transfer-encoding"]) && !cannotHaveBody && !dist_default5.undefined(uploadBodySize)) {
        headers["content-length"] = String(uploadBodySize);
      }
    }
    if (options.responseType === "json" && !("accept" in options.headers)) {
      options.headers.accept = "application/json";
    }
    this._bodySize = Number(headers["content-length"]) || void 0;
  }
  async _onResponseBase(response) {
    if (this.isAborted) {
      return;
    }
    const { options } = this;
    const { url } = options;
    this._nativeResponse = response;
    if (options.decompress) {
      response = (0, import_decompress_response.default)(response);
    }
    const statusCode = response.statusCode;
    const typedResponse = response;
    typedResponse.statusMessage = typedResponse.statusMessage ?? import_node_http4.default.STATUS_CODES[statusCode];
    typedResponse.url = options.url.toString();
    typedResponse.requestUrl = this.requestUrl;
    typedResponse.redirectUrls = this.redirectUrls;
    typedResponse.request = this;
    typedResponse.isFromCache = this._nativeResponse.fromCache ?? false;
    typedResponse.ip = this.ip;
    typedResponse.retryCount = this.retryCount;
    typedResponse.ok = isResponseOk(typedResponse);
    this._isFromCache = typedResponse.isFromCache;
    this._responseSize = Number(response.headers["content-length"]) || void 0;
    this.response = typedResponse;
    response.once("end", () => {
      this._responseSize = this._downloadedSize;
      this.emit("downloadProgress", this.downloadProgress);
    });
    response.once("error", (error) => {
      this._aborted = true;
      response.destroy();
      this._beforeError(new ReadError(error, this));
    });
    response.once("aborted", () => {
      this._aborted = true;
      this._beforeError(new ReadError({
        name: "Error",
        message: "The server aborted pending request",
        code: "ECONNRESET"
      }, this));
    });
    this.emit("downloadProgress", this.downloadProgress);
    const rawCookies = response.headers["set-cookie"];
    if (dist_default5.object(options.cookieJar) && rawCookies) {
      let promises = rawCookies.map(async (rawCookie) => options.cookieJar.setCookie(rawCookie, url.toString()));
      if (options.ignoreInvalidCookies) {
        promises = promises.map(async (promise) => {
          try {
            await promise;
          } catch {
          }
        });
      }
      try {
        await Promise.all(promises);
      } catch (error) {
        this._beforeError(error);
        return;
      }
    }
    if (this.isAborted) {
      return;
    }
    if (options.followRedirect && response.headers.location && redirectCodes.has(statusCode)) {
      response.resume();
      this._cancelTimeouts();
      this._unproxyEvents();
      if (this.redirectUrls.length >= options.maxRedirects) {
        this._beforeError(new MaxRedirectsError(this));
        return;
      }
      this._request = void 0;
      const updatedOptions = new Options2(void 0, void 0, this.options);
      const serverRequestedGet = statusCode === 303 && updatedOptions.method !== "GET" && updatedOptions.method !== "HEAD";
      const canRewrite = statusCode !== 307 && statusCode !== 308;
      const userRequestedGet = updatedOptions.methodRewriting && canRewrite;
      if (serverRequestedGet || userRequestedGet) {
        updatedOptions.method = "GET";
        updatedOptions.body = void 0;
        updatedOptions.json = void 0;
        updatedOptions.form = void 0;
        delete updatedOptions.headers["content-length"];
      }
      try {
        const redirectBuffer = import_node_buffer4.Buffer.from(response.headers.location, "binary").toString();
        const redirectUrl = new import_node_url6.URL(redirectBuffer, url);
        if (!isUnixSocketURL(url) && isUnixSocketURL(redirectUrl)) {
          this._beforeError(new RequestError("Cannot redirect to UNIX socket", {}, this));
          return;
        }
        if (redirectUrl.hostname !== url.hostname || redirectUrl.port !== url.port) {
          if ("host" in updatedOptions.headers) {
            delete updatedOptions.headers.host;
          }
          if ("cookie" in updatedOptions.headers) {
            delete updatedOptions.headers.cookie;
          }
          if ("authorization" in updatedOptions.headers) {
            delete updatedOptions.headers.authorization;
          }
          if (updatedOptions.username || updatedOptions.password) {
            updatedOptions.username = "";
            updatedOptions.password = "";
          }
        } else {
          redirectUrl.username = updatedOptions.username;
          redirectUrl.password = updatedOptions.password;
        }
        this.redirectUrls.push(redirectUrl);
        updatedOptions.prefixUrl = "";
        updatedOptions.url = redirectUrl;
        for (const hook of updatedOptions.hooks.beforeRedirect) {
          await hook(updatedOptions, typedResponse);
        }
        this.emit("redirect", updatedOptions, typedResponse);
        this.options = updatedOptions;
        await this._makeRequest();
      } catch (error) {
        this._beforeError(error);
        return;
      }
      return;
    }
    if (options.isStream && options.throwHttpErrors && !isResponseOk(typedResponse)) {
      this._beforeError(new HTTPError(typedResponse));
      return;
    }
    response.on("readable", () => {
      if (this._triggerRead) {
        this._read();
      }
    });
    this.on("resume", () => {
      response.resume();
    });
    this.on("pause", () => {
      response.pause();
    });
    response.once("end", () => {
      this.push(null);
    });
    if (this._noPipe) {
      const success = await this._setRawBody();
      if (success) {
        this.emit("response", response);
      }
      return;
    }
    this.emit("response", response);
    for (const destination of this._pipedServerResponses) {
      if (destination.headersSent) {
        continue;
      }
      for (const key2 in response.headers) {
        const isAllowed = options.decompress ? key2 !== "content-encoding" : true;
        const value = response.headers[key2];
        if (isAllowed) {
          destination.setHeader(key2, value);
        }
      }
      destination.statusCode = statusCode;
    }
  }
  async _setRawBody(from4 = this) {
    if (from4.readableEnded) {
      return false;
    }
    try {
      const rawBody = await getBuffer(from4);
      if (!this.isAborted) {
        this.response.rawBody = rawBody;
        return true;
      }
    } catch {
    }
    return false;
  }
  async _onResponse(response) {
    try {
      await this._onResponseBase(response);
    } catch (error) {
      this._beforeError(error);
    }
  }
  _onRequest(request) {
    const { options } = this;
    const { timeout, url } = options;
    source_default4(request);
    if (this.options.http2) {
      request.setTimeout(0);
    }
    this._cancelTimeouts = timedOut(request, timeout, url);
    const responseEventName = options.cache ? "cacheableResponse" : "response";
    request.once(responseEventName, (response) => {
      void this._onResponse(response);
    });
    request.once("error", (error) => {
      this._aborted = true;
      request.destroy();
      error = error instanceof TimeoutError2 ? new TimeoutError(error, this.timings, this) : new RequestError(error.message, error, this);
      this._beforeError(error);
    });
    this._unproxyEvents = proxyEvents(request, this, proxiedRequestEvents);
    this._request = request;
    this.emit("uploadProgress", this.uploadProgress);
    this._sendBody();
    this.emit("request", request);
  }
  async _asyncWrite(chunk) {
    return new Promise((resolve9, reject) => {
      super.write(chunk, (error) => {
        if (error) {
          reject(error);
          return;
        }
        resolve9();
      });
    });
  }
  _sendBody() {
    const { body: body3 } = this.options;
    const currentRequest = this.redirectUrls.length === 0 ? this : this._request ?? this;
    if (dist_default5.nodeStream(body3)) {
      body3.pipe(currentRequest);
    } else if (dist_default5.generator(body3) || dist_default5.asyncGenerator(body3)) {
      (async () => {
        try {
          for await (const chunk of body3) {
            await this._asyncWrite(chunk);
          }
          super.end();
        } catch (error) {
          this._beforeError(error);
        }
      })();
    } else if (!dist_default5.undefined(body3)) {
      this._writeRequest(body3, void 0, () => {
      });
      currentRequest.end();
    } else if (this._cannotHaveBody || this._noPipe) {
      currentRequest.end();
    }
  }
  _prepareCache(cache) {
    if (!cacheableStore.has(cache)) {
      const cacheableRequest = new dist_default6(((requestOptions, handler) => {
        const result = requestOptions._request(requestOptions, handler);
        if (dist_default5.promise(result)) {
          result.once = (event, handler2) => {
            if (event === "error") {
              (async () => {
                try {
                  await result;
                } catch (error) {
                  handler2(error);
                }
              })();
            } else if (event === "abort") {
              (async () => {
                try {
                  const request = await result;
                  request.once("abort", handler2);
                } catch {
                }
              })();
            } else {
              throw new Error(`Unknown HTTP2 promise event: ${event}`);
            }
            return result;
          };
        }
        return result;
      }), cache);
      cacheableStore.set(cache, cacheableRequest.request());
    }
  }
  async _createCacheableRequest(url, options) {
    return new Promise((resolve9, reject) => {
      Object.assign(options, urlToOptions(url));
      let request;
      const cacheRequest = cacheableStore.get(options.cache)(options, async (response) => {
        response._readableState.autoDestroy = false;
        if (request) {
          const fix = () => {
            if (response.req) {
              response.complete = response.req.res.complete;
            }
          };
          response.prependOnceListener("end", fix);
          fix();
          (await request).emit("cacheableResponse", response);
        }
        resolve9(response);
      });
      cacheRequest.once("error", reject);
      cacheRequest.once("request", async (requestOrPromise) => {
        request = requestOrPromise;
        resolve9(request);
      });
    });
  }
  async _makeRequest() {
    const { options } = this;
    const { headers, username, password } = options;
    const cookieJar = options.cookieJar;
    for (const key2 in headers) {
      if (dist_default5.undefined(headers[key2])) {
        delete headers[key2];
      } else if (dist_default5.null_(headers[key2])) {
        throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${key2}\` header`);
      }
    }
    if (options.decompress && dist_default5.undefined(headers["accept-encoding"])) {
      headers["accept-encoding"] = supportsBrotli ? "gzip, deflate, br" : "gzip, deflate";
    }
    if (username || password) {
      const credentials = import_node_buffer4.Buffer.from(`${username}:${password}`).toString("base64");
      headers.authorization = `Basic ${credentials}`;
    }
    if (cookieJar) {
      const cookieString = await cookieJar.getCookieString(options.url.toString());
      if (dist_default5.nonEmptyString(cookieString)) {
        headers.cookie = cookieString;
      }
    }
    options.prefixUrl = "";
    let request;
    for (const hook of options.hooks.beforeRequest) {
      const result = await hook(options);
      if (!dist_default5.undefined(result)) {
        request = () => result;
        break;
      }
    }
    if (!request) {
      request = options.getRequestFunction();
    }
    const url = options.url;
    this._requestOptions = options.createNativeRequestOptions();
    if (options.cache) {
      this._requestOptions._request = request;
      this._requestOptions.cache = options.cache;
      this._requestOptions.body = options.body;
      this._prepareCache(options.cache);
    }
    const fn = options.cache ? this._createCacheableRequest : request;
    try {
      let requestOrResponse = fn(url, this._requestOptions);
      if (dist_default5.promise(requestOrResponse)) {
        requestOrResponse = await requestOrResponse;
      }
      if (dist_default5.undefined(requestOrResponse)) {
        requestOrResponse = options.getFallbackRequestFunction()(url, this._requestOptions);
        if (dist_default5.promise(requestOrResponse)) {
          requestOrResponse = await requestOrResponse;
        }
      }
      if (is_client_request_default(requestOrResponse)) {
        this._onRequest(requestOrResponse);
      } else if (this.writable) {
        this.once("finish", () => {
          void this._onResponse(requestOrResponse);
        });
        this._sendBody();
      } else {
        void this._onResponse(requestOrResponse);
      }
    } catch (error) {
      if (error instanceof CacheError2) {
        throw new CacheError(error, this);
      }
      throw error;
    }
  }
  async _error(error) {
    try {
      if (error instanceof HTTPError && !this.options.throwHttpErrors) {
      } else {
        for (const hook of this.options.hooks.beforeError) {
          error = await hook(error);
        }
      }
    } catch (error_) {
      error = new RequestError(error_.message, error_, this);
    }
    this.destroy(error);
  }
  _writeRequest(chunk, encoding, callback) {
    if (!this._request || this._request.destroyed) {
      return;
    }
    this._request.write(chunk, encoding, (error) => {
      if (!error && !this._request.destroyed) {
        this._uploadedSize += import_node_buffer4.Buffer.byteLength(chunk, encoding);
        const progress = this.uploadProgress;
        if (progress.percent < 1) {
          this.emit("uploadProgress", progress);
        }
      }
      callback(error);
    });
  }
  /**
  The remote IP address.
  */
  get ip() {
    var _a6;
    return (_a6 = this.socket) == null ? void 0 : _a6.remoteAddress;
  }
  /**
  Indicates whether the request has been aborted or not.
  */
  get isAborted() {
    return this._aborted;
  }
  get socket() {
    var _a6;
    return ((_a6 = this._request) == null ? void 0 : _a6.socket) ?? void 0;
  }
  /**
  Progress event for downloading (receiving a response).
  */
  get downloadProgress() {
    let percent;
    if (this._responseSize) {
      percent = this._downloadedSize / this._responseSize;
    } else if (this._responseSize === this._downloadedSize) {
      percent = 1;
    } else {
      percent = 0;
    }
    return {
      percent,
      transferred: this._downloadedSize,
      total: this._responseSize
    };
  }
  /**
  Progress event for uploading (sending a request).
  */
  get uploadProgress() {
    let percent;
    if (this._bodySize) {
      percent = this._uploadedSize / this._bodySize;
    } else if (this._bodySize === this._uploadedSize) {
      percent = 1;
    } else {
      percent = 0;
    }
    return {
      percent,
      transferred: this._uploadedSize,
      total: this._bodySize
    };
  }
  /**
      The object contains the following properties:
  
      - `start` - Time when the request started.
      - `socket` - Time when a socket was assigned to the request.
      - `lookup` - Time when the DNS lookup finished.
      - `connect` - Time when the socket successfully connected.
      - `secureConnect` - Time when the socket securely connected.
      - `upload` - Time when the request finished uploading.
      - `response` - Time when the request fired `response` event.
      - `end` - Time when the response fired `end` event.
      - `error` - Time when the request fired `error` event.
      - `abort` - Time when the request fired `abort` event.
      - `phases`
          - `wait` - `timings.socket - timings.start`
          - `dns` - `timings.lookup - timings.socket`
          - `tcp` - `timings.connect - timings.lookup`
          - `tls` - `timings.secureConnect - timings.connect`
          - `request` - `timings.upload - (timings.secureConnect || timings.connect)`
          - `firstByte` - `timings.response - timings.upload`
          - `download` - `timings.end - timings.response`
          - `total` - `(timings.end || timings.error || timings.abort) - timings.start`
  
      If something has not been measured yet, it will be `undefined`.
  
      __Note__: The time is a `number` representing the milliseconds elapsed since the UNIX epoch.
      */
  get timings() {
    var _a6;
    return (_a6 = this._request) == null ? void 0 : _a6.timings;
  }
  /**
  Whether the response was retrieved from the cache.
  */
  get isFromCache() {
    return this._isFromCache;
  }
  get reusedSocket() {
    var _a6;
    return (_a6 = this._request) == null ? void 0 : _a6.reusedSocket;
  }
};

// ../../node_modules/got/dist/source/as-promise/types.js
var CancelError2 = class extends RequestError {
  constructor(request) {
    super("Promise was canceled", {}, request);
    this.name = "CancelError";
    this.code = "ERR_CANCELED";
  }
  /**
  Whether the promise is canceled.
  */
  get isCanceled() {
    return true;
  }
};

// ../../node_modules/got/dist/source/as-promise/index.js
var proxiedRequestEvents2 = [
  "request",
  "response",
  "redirect",
  "uploadProgress",
  "downloadProgress"
];
function asPromise(firstRequest) {
  let globalRequest;
  let globalResponse;
  let normalizedOptions;
  const emitter = new import_node_events3.EventEmitter();
  const promise = new PCancelable((resolve9, reject, onCancel) => {
    onCancel(() => {
      globalRequest.destroy();
    });
    onCancel.shouldReject = false;
    onCancel(() => {
      reject(new CancelError2(globalRequest));
    });
    const makeRequest = (retryCount) => {
      var _a6;
      onCancel(() => {
      });
      const request = firstRequest ?? new Request3(void 0, void 0, normalizedOptions);
      request.retryCount = retryCount;
      request._noPipe = true;
      globalRequest = request;
      request.once("response", async (response) => {
        const contentEncoding = (response.headers["content-encoding"] ?? "").toLowerCase();
        const isCompressed = contentEncoding === "gzip" || contentEncoding === "deflate" || contentEncoding === "br";
        const { options } = request;
        if (isCompressed && !options.decompress) {
          response.body = response.rawBody;
        } else {
          try {
            response.body = parseBody(response, options.responseType, options.parseJson, options.encoding);
          } catch (error) {
            response.body = response.rawBody.toString();
            if (isResponseOk(response)) {
              request._beforeError(error);
              return;
            }
          }
        }
        try {
          const hooks = options.hooks.afterResponse;
          for (const [index4, hook] of hooks.entries()) {
            response = await hook(response, async (updatedOptions) => {
              options.merge(updatedOptions);
              options.prefixUrl = "";
              if (updatedOptions.url) {
                options.url = updatedOptions.url;
              }
              options.hooks.afterResponse = options.hooks.afterResponse.slice(0, index4);
              throw new RetryError(request);
            });
            if (!(dist_default5.object(response) && dist_default5.number(response.statusCode) && !dist_default5.nullOrUndefined(response.body))) {
              throw new TypeError("The `afterResponse` hook returned an invalid value");
            }
          }
        } catch (error) {
          request._beforeError(error);
          return;
        }
        globalResponse = response;
        if (!isResponseOk(response)) {
          request._beforeError(new HTTPError(response));
          return;
        }
        request.destroy();
        resolve9(request.options.resolveBodyOnly ? response.body : response);
      });
      const onError = (error) => {
        if (promise.isCanceled) {
          return;
        }
        const { options } = request;
        if (error instanceof HTTPError && !options.throwHttpErrors) {
          const { response } = error;
          request.destroy();
          resolve9(request.options.resolveBodyOnly ? response.body : response);
          return;
        }
        reject(error);
      };
      request.once("error", onError);
      const previousBody = (_a6 = request.options) == null ? void 0 : _a6.body;
      request.once("retry", (newRetryCount, error) => {
        firstRequest = void 0;
        const newBody = request.options.body;
        if (previousBody === newBody && dist_default5.nodeStream(newBody)) {
          error.message = "Cannot retry with consumed body stream";
          onError(error);
          return;
        }
        normalizedOptions = request.options;
        makeRequest(newRetryCount);
      });
      proxyEvents(request, emitter, proxiedRequestEvents2);
      if (dist_default5.undefined(firstRequest)) {
        void request.flush();
      }
    };
    makeRequest(0);
  });
  promise.on = (event, fn) => {
    emitter.on(event, fn);
    return promise;
  };
  promise.off = (event, fn) => {
    emitter.off(event, fn);
    return promise;
  };
  const shortcut = (responseType) => {
    const newPromise = (async () => {
      await promise;
      const { options } = globalResponse.request;
      return parseBody(globalResponse, responseType, options.parseJson, options.encoding);
    })();
    Object.defineProperties(newPromise, Object.getOwnPropertyDescriptors(promise));
    return newPromise;
  };
  promise.json = () => {
    if (globalRequest.options) {
      const { headers } = globalRequest.options;
      if (!globalRequest.writableFinished && !("accept" in headers)) {
        headers.accept = "application/json";
      }
    }
    return shortcut("json");
  };
  promise.buffer = () => shortcut("buffer");
  promise.text = () => shortcut("text");
  return promise;
}

// ../../node_modules/got/dist/source/create.js
var delay = async (ms) => new Promise((resolve9) => {
  setTimeout(resolve9, ms);
});
var isGotInstance = (value) => dist_default5.function_(value);
var aliases = [
  "get",
  "post",
  "put",
  "patch",
  "head",
  "delete"
];
var create2 = (defaults3) => {
  defaults3 = {
    options: new Options2(void 0, void 0, defaults3.options),
    handlers: [...defaults3.handlers],
    mutableDefaults: defaults3.mutableDefaults
  };
  Object.defineProperty(defaults3, "mutableDefaults", {
    enumerable: true,
    configurable: false,
    writable: false
  });
  const got2 = ((url, options, defaultOptions5 = defaults3.options) => {
    const request = new Request3(url, options, defaultOptions5);
    let promise;
    const lastHandler = (normalized) => {
      request.options = normalized;
      request._noPipe = !normalized.isStream;
      void request.flush();
      if (normalized.isStream) {
        return request;
      }
      if (!promise) {
        promise = asPromise(request);
      }
      return promise;
    };
    let iteration = 0;
    const iterateHandlers = (newOptions) => {
      const handler = defaults3.handlers[iteration++] ?? lastHandler;
      const result = handler(newOptions, iterateHandlers);
      if (dist_default5.promise(result) && !request.options.isStream) {
        if (!promise) {
          promise = asPromise(request);
        }
        if (result !== promise) {
          const descriptors = Object.getOwnPropertyDescriptors(promise);
          for (const key2 in descriptors) {
            if (key2 in result) {
              delete descriptors[key2];
            }
          }
          Object.defineProperties(result, descriptors);
          result.cancel = promise.cancel;
        }
      }
      return result;
    };
    return iterateHandlers(request.options);
  });
  got2.extend = (...instancesOrOptions) => {
    const options = new Options2(void 0, void 0, defaults3.options);
    const handlers6 = [...defaults3.handlers];
    let mutableDefaults;
    for (const value of instancesOrOptions) {
      if (isGotInstance(value)) {
        options.merge(value.defaults.options);
        handlers6.push(...value.defaults.handlers);
        mutableDefaults = value.defaults.mutableDefaults;
      } else {
        options.merge(value);
        if (value.handlers) {
          handlers6.push(...value.handlers);
        }
        mutableDefaults = value.mutableDefaults;
      }
    }
    return create2({
      options,
      handlers: handlers6,
      mutableDefaults: Boolean(mutableDefaults)
    });
  };
  const paginateEach = (async function* (url, options) {
    let normalizedOptions = new Options2(url, options, defaults3.options);
    normalizedOptions.resolveBodyOnly = false;
    const { pagination } = normalizedOptions;
    assert7.function_(pagination.transform);
    assert7.function_(pagination.shouldContinue);
    assert7.function_(pagination.filter);
    assert7.function_(pagination.paginate);
    assert7.number(pagination.countLimit);
    assert7.number(pagination.requestLimit);
    assert7.number(pagination.backoff);
    const allItems = [];
    let { countLimit } = pagination;
    let numberOfRequests = 0;
    while (numberOfRequests < pagination.requestLimit) {
      if (numberOfRequests !== 0) {
        await delay(pagination.backoff);
      }
      const response = await got2(void 0, void 0, normalizedOptions);
      const parsed = await pagination.transform(response);
      const currentItems = [];
      assert7.array(parsed);
      for (const item of parsed) {
        if (pagination.filter({ item, currentItems, allItems })) {
          if (!pagination.shouldContinue({ item, currentItems, allItems })) {
            return;
          }
          yield item;
          if (pagination.stackAllItems) {
            allItems.push(item);
          }
          currentItems.push(item);
          if (--countLimit <= 0) {
            return;
          }
        }
      }
      const optionsToMerge = pagination.paginate({
        response,
        currentItems,
        allItems
      });
      if (optionsToMerge === false) {
        return;
      }
      if (optionsToMerge === response.request.options) {
        normalizedOptions = response.request.options;
      } else {
        normalizedOptions.merge(optionsToMerge);
        assert7.any([dist_default5.urlInstance, dist_default5.undefined], optionsToMerge.url);
        if (optionsToMerge.url !== void 0) {
          normalizedOptions.prefixUrl = "";
          normalizedOptions.url = optionsToMerge.url;
        }
      }
      numberOfRequests++;
    }
  });
  got2.paginate = paginateEach;
  got2.paginate.all = (async (url, options) => {
    const results = [];
    for await (const item of paginateEach(url, options)) {
      results.push(item);
    }
    return results;
  });
  got2.paginate.each = paginateEach;
  got2.stream = ((url, options) => got2(url, { ...options, isStream: true }));
  for (const method of aliases) {
    got2[method] = ((url, options) => got2(url, { ...options, method }));
    got2.stream[method] = ((url, options) => got2(url, { ...options, method, isStream: true }));
  }
  if (!defaults3.mutableDefaults) {
    Object.freeze(defaults3.handlers);
    defaults3.options.freeze();
  }
  Object.defineProperty(got2, "defaults", {
    value: defaults3,
    writable: false,
    configurable: false,
    enumerable: true
  });
  return got2;
};
var create_default = create2;

// ../../node_modules/got/dist/source/index.js
var defaults2 = {
  options: new Options2(),
  handlers: [],
  mutableDefaults: false
};
var got = create_default(defaults2);
var source_default5 = got;

// ../../node_modules/registry-url/index.js
var import_rc = __toESM(require_rc(), 1);
function registryUrl(scope2) {
  const result = (0, import_rc.default)("npm", { registry: "https://registry.npmjs.org/" });
  const url = result[`${scope2}:registry`] || result.config_registry || result.registry;
  return url.slice(-1) === "/" ? url : `${url}/`;
}

// ../../node_modules/package-json/index.js
var import_registry_auth_token = __toESM(require_registry_auth_token(), 1);
var import_semver = __toESM(require_semver3(), 1);
var agentOptions = {
  keepAlive: true,
  maxSockets: 50
};
var httpAgent = new import_node_http5.Agent(agentOptions);
var httpsAgent = new import_node_https3.Agent(agentOptions);
var PackageNotFoundError = class extends Error {
  constructor(packageName) {
    super(`Package \`${packageName}\` could not be found`);
    this.name = "PackageNotFoundError";
  }
};
var VersionNotFoundError = class extends Error {
  constructor(packageName, version4) {
    super(`Version \`${version4}\` for package \`${packageName}\` could not be found`);
    this.name = "VersionNotFoundError";
  }
};
async function packageJson(packageName, options) {
  var _a6;
  options = {
    version: "latest",
    ...options
  };
  const scope2 = packageName.split("/")[0];
  const registryUrl_ = options.registryUrl || registryUrl(scope2);
  const packageUrl = new URL(encodeURIComponent(packageName).replace(/^%40/, "@"), registryUrl_);
  const authInfo = (0, import_registry_auth_token.default)(registryUrl_.toString(), { recursive: true });
  const headers = {
    accept: "application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"
  };
  if (options.fullMetadata) {
    delete headers.accept;
  }
  if (authInfo) {
    headers.authorization = `${authInfo.type} ${authInfo.token}`;
  }
  const gotOptions = {
    headers,
    agent: {
      http: httpAgent,
      https: httpsAgent
    }
  };
  if (options.agent) {
    gotOptions.agent = options.agent;
  }
  let data;
  try {
    data = await source_default5(packageUrl, gotOptions).json();
  } catch (error) {
    if (((_a6 = error == null ? void 0 : error.response) == null ? void 0 : _a6.statusCode) === 404) {
      throw new PackageNotFoundError(packageName);
    }
    throw error;
  }
  if (options.allVersions) {
    return data;
  }
  let { version: version4 } = options;
  const versionError = new VersionNotFoundError(packageName, version4);
  if (data["dist-tags"][version4]) {
    const time = data.time;
    data = data.versions[data["dist-tags"][version4]];
    data.time = time;
  } else if (version4) {
    if (!data.versions[version4]) {
      const versions = Object.keys(data.versions);
      version4 = import_semver.default.maxSatisfying(versions, version4);
      if (!version4) {
        throw versionError;
      }
    }
    const time = data.time;
    data = data.versions[version4];
    data.time = time;
    if (!data) {
      throw versionError;
    }
  }
  return data;
}

// ../../node_modules/latest-version/index.js
async function latestVersion(packageName, options) {
  const { version: version4 } = await packageJson(packageName.toLowerCase(), options);
  return version4;
}

// ../../node_modules/boxen/index.js
var import_node_process10 = __toESM(require("process"), 1);

// ../../node_modules/string-width/index.js
var import_eastasianwidth = __toESM(require_eastasianwidth(), 1);
var import_emoji_regex = __toESM(require_emoji_regex2(), 1);
function stringWidth2(string2, options = {}) {
  if (typeof string2 !== "string" || string2.length === 0) {
    return 0;
  }
  options = {
    ambiguousIsNarrow: true,
    ...options
  };
  string2 = stripAnsi(string2);
  if (string2.length === 0) {
    return 0;
  }
  string2 = string2.replace((0, import_emoji_regex.default)(), "  ");
  const ambiguousCharacterWidth = options.ambiguousIsNarrow ? 1 : 2;
  let width = 0;
  for (const character of string2) {
    const codePoint = character.codePointAt(0);
    if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
      continue;
    }
    if (codePoint >= 768 && codePoint <= 879) {
      continue;
    }
    const code7 = import_eastasianwidth.default.eastAsianWidth(character);
    switch (code7) {
      case "F":
      case "W":
        width += 2;
        break;
      case "A":
        width += ambiguousCharacterWidth;
        break;
      default:
        width += 1;
    }
  }
  return width;
}

// ../../node_modules/boxen/node_modules/chalk/source/vendor/ansi-styles/index.js
var ANSI_BACKGROUND_OFFSET4 = 10;
var wrapAnsi164 = (offset = 0) => (code7) => `\x1B[${code7 + offset}m`;
var wrapAnsi2564 = (offset = 0) => (code7) => `\x1B[${38 + offset};5;${code7}m`;
var wrapAnsi16m4 = (offset = 0) => (red, green, blue) => `\x1B[${38 + offset};2;${red};${green};${blue}m`;
var styles9 = {
  modifier: {
    reset: [0, 0],
    // 21 isn't widely supported and 22 does the same thing
    bold: [1, 22],
    dim: [2, 22],
    italic: [3, 23],
    underline: [4, 24],
    overline: [53, 55],
    inverse: [7, 27],
    hidden: [8, 28],
    strikethrough: [9, 29]
  },
  color: {
    black: [30, 39],
    red: [31, 39],
    green: [32, 39],
    yellow: [33, 39],
    blue: [34, 39],
    magenta: [35, 39],
    cyan: [36, 39],
    white: [37, 39],
    // Bright color
    blackBright: [90, 39],
    gray: [90, 39],
    // Alias of `blackBright`
    grey: [90, 39],
    // Alias of `blackBright`
    redBright: [91, 39],
    greenBright: [92, 39],
    yellowBright: [93, 39],
    blueBright: [94, 39],
    magentaBright: [95, 39],
    cyanBright: [96, 39],
    whiteBright: [97, 39]
  },
  bgColor: {
    bgBlack: [40, 49],
    bgRed: [41, 49],
    bgGreen: [42, 49],
    bgYellow: [43, 49],
    bgBlue: [44, 49],
    bgMagenta: [45, 49],
    bgCyan: [46, 49],
    bgWhite: [47, 49],
    // Bright color
    bgBlackBright: [100, 49],
    bgGray: [100, 49],
    // Alias of `bgBlackBright`
    bgGrey: [100, 49],
    // Alias of `bgBlackBright`
    bgRedBright: [101, 49],
    bgGreenBright: [102, 49],
    bgYellowBright: [103, 49],
    bgBlueBright: [104, 49],
    bgMagentaBright: [105, 49],
    bgCyanBright: [106, 49],
    bgWhiteBright: [107, 49]
  }
};
var modifierNames4 = Object.keys(styles9.modifier);
var foregroundColorNames4 = Object.keys(styles9.color);
var backgroundColorNames4 = Object.keys(styles9.bgColor);
var colorNames4 = [...foregroundColorNames4, ...backgroundColorNames4];
function assembleStyles4() {
  const codes = /* @__PURE__ */ new Map();
  for (const [groupName, group3] of Object.entries(styles9)) {
    for (const [styleName, style3] of Object.entries(group3)) {
      styles9[styleName] = {
        open: `\x1B[${style3[0]}m`,
        close: `\x1B[${style3[1]}m`
      };
      group3[styleName] = styles9[styleName];
      codes.set(style3[0], style3[1]);
    }
    Object.defineProperty(styles9, groupName, {
      value: group3,
      enumerable: false
    });
  }
  Object.defineProperty(styles9, "codes", {
    value: codes,
    enumerable: false
  });
  styles9.color.close = "\x1B[39m";
  styles9.bgColor.close = "\x1B[49m";
  styles9.color.ansi = wrapAnsi164();
  styles9.color.ansi256 = wrapAnsi2564();
  styles9.color.ansi16m = wrapAnsi16m4();
  styles9.bgColor.ansi = wrapAnsi164(ANSI_BACKGROUND_OFFSET4);
  styles9.bgColor.ansi256 = wrapAnsi2564(ANSI_BACKGROUND_OFFSET4);
  styles9.bgColor.ansi16m = wrapAnsi16m4(ANSI_BACKGROUND_OFFSET4);
  Object.defineProperties(styles9, {
    rgbToAnsi256: {
      value(red, green, blue) {
        if (red === green && green === blue) {
          if (red < 8) {
            return 16;
          }
          if (red > 248) {
            return 231;
          }
          return Math.round((red - 8) / 247 * 24) + 232;
        }
        return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
      },
      enumerable: false
    },
    hexToRgb: {
      value(hex) {
        const matches4 = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
        if (!matches4) {
          return [0, 0, 0];
        }
        let [colorString] = matches4;
        if (colorString.length === 3) {
          colorString = [...colorString].map((character) => character + character).join("");
        }
        const integer = Number.parseInt(colorString, 16);
        return [
          /* eslint-disable no-bitwise */
          integer >> 16 & 255,
          integer >> 8 & 255,
          integer & 255
          /* eslint-enable no-bitwise */
        ];
      },
      enumerable: false
    },
    hexToAnsi256: {
      value: (hex) => styles9.rgbToAnsi256(...styles9.hexToRgb(hex)),
      enumerable: false
    },
    ansi256ToAnsi: {
      value(code7) {
        if (code7 < 8) {
          return 30 + code7;
        }
        if (code7 < 16) {
          return 90 + (code7 - 8);
        }
        let red;
        let green;
        let blue;
        if (code7 >= 232) {
          red = ((code7 - 232) * 10 + 8) / 255;
          green = red;
          blue = red;
        } else {
          code7 -= 16;
          const remainder = code7 % 36;
          red = Math.floor(code7 / 36) / 5;
          green = Math.floor(remainder / 6) / 5;
          blue = remainder % 6 / 5;
        }
        const value = Math.max(red, green, blue) * 2;
        if (value === 0) {
          return 30;
        }
        let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
        if (value === 2) {
          result += 60;
        }
        return result;
      },
      enumerable: false
    },
    rgbToAnsi: {
      value: (red, green, blue) => styles9.ansi256ToAnsi(styles9.rgbToAnsi256(red, green, blue)),
      enumerable: false
    },
    hexToAnsi: {
      value: (hex) => styles9.ansi256ToAnsi(styles9.hexToAnsi256(hex)),
      enumerable: false
    }
  });
  return styles9;
}
var ansiStyles4 = assembleStyles4();
var ansi_styles_default4 = ansiStyles4;

// ../../node_modules/boxen/node_modules/chalk/source/vendor/supports-color/index.js
var import_node_process9 = __toESM(require("process"), 1);
var import_node_os7 = __toESM(require("os"), 1);
var import_node_tty4 = __toESM(require("tty"), 1);
function hasFlag4(flag, argv = globalThis.Deno ? globalThis.Deno.args : import_node_process9.default.argv) {
  const prefix2 = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
  const position6 = argv.indexOf(prefix2 + flag);
  const terminatorPosition = argv.indexOf("--");
  return position6 !== -1 && (terminatorPosition === -1 || position6 < terminatorPosition);
}
var { env: env4 } = import_node_process9.default;
var flagForceColor4;
if (hasFlag4("no-color") || hasFlag4("no-colors") || hasFlag4("color=false") || hasFlag4("color=never")) {
  flagForceColor4 = 0;
} else if (hasFlag4("color") || hasFlag4("colors") || hasFlag4("color=true") || hasFlag4("color=always")) {
  flagForceColor4 = 1;
}
function envForceColor4() {
  if ("FORCE_COLOR" in env4) {
    if (env4.FORCE_COLOR === "true") {
      return 1;
    }
    if (env4.FORCE_COLOR === "false") {
      return 0;
    }
    return env4.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env4.FORCE_COLOR, 10), 3);
  }
}
function translateLevel4(level) {
  if (level === 0) {
    return false;
  }
  return {
    level,
    hasBasic: true,
    has256: level >= 2,
    has16m: level >= 3
  };
}
function _supportsColor4(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
  const noFlagForceColor = envForceColor4();
  if (noFlagForceColor !== void 0) {
    flagForceColor4 = noFlagForceColor;
  }
  const forceColor = sniffFlags ? flagForceColor4 : noFlagForceColor;
  if (forceColor === 0) {
    return 0;
  }
  if (sniffFlags) {
    if (hasFlag4("color=16m") || hasFlag4("color=full") || hasFlag4("color=truecolor")) {
      return 3;
    }
    if (hasFlag4("color=256")) {
      return 2;
    }
  }
  if ("TF_BUILD" in env4 && "AGENT_NAME" in env4) {
    return 1;
  }
  if (haveStream && !streamIsTTY && forceColor === void 0) {
    return 0;
  }
  const min = forceColor || 0;
  if (env4.TERM === "dumb") {
    return min;
  }
  if (import_node_process9.default.platform === "win32") {
    const osRelease = import_node_os7.default.release().split(".");
    if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
      return Number(osRelease[2]) >= 14931 ? 3 : 2;
    }
    return 1;
  }
  if ("CI" in env4) {
    if ("GITHUB_ACTIONS" in env4 || "GITEA_ACTIONS" in env4) {
      return 3;
    }
    if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env4) || env4.CI_NAME === "codeship") {
      return 1;
    }
    return min;
  }
  if ("TEAMCITY_VERSION" in env4) {
    return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env4.TEAMCITY_VERSION) ? 1 : 0;
  }
  if (env4.COLORTERM === "truecolor") {
    return 3;
  }
  if (env4.TERM === "xterm-kitty") {
    return 3;
  }
  if ("TERM_PROGRAM" in env4) {
    const version4 = Number.parseInt((env4.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
    switch (env4.TERM_PROGRAM) {
      case "iTerm.app": {
        return version4 >= 3 ? 3 : 2;
      }
      case "Apple_Terminal": {
        return 2;
      }
    }
  }
  if (/-256(color)?$/i.test(env4.TERM)) {
    return 2;
  }
  if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env4.TERM)) {
    return 1;
  }
  if ("COLORTERM" in env4) {
    return 1;
  }
  return min;
}
function createSupportsColor4(stream3, options = {}) {
  const level = _supportsColor4(stream3, {
    streamIsTTY: stream3 && stream3.isTTY,
    ...options
  });
  return translateLevel4(level);
}
var supportsColor4 = {
  stdout: createSupportsColor4({ isTTY: import_node_tty4.default.isatty(1) }),
  stderr: createSupportsColor4({ isTTY: import_node_tty4.default.isatty(2) })
};
var supports_color_default4 = supportsColor4;

// ../../node_modules/boxen/node_modules/chalk/source/utilities.js
function stringReplaceAll4(string2, substring, replacer) {
  let index4 = string2.indexOf(substring);
  if (index4 === -1) {
    return string2;
  }
  const substringLength = substring.length;
  let endIndex = 0;
  let returnValue = "";
  do {
    returnValue += string2.slice(endIndex, index4) + substring + replacer;
    endIndex = index4 + substringLength;
    index4 = string2.indexOf(substring, endIndex);
  } while (index4 !== -1);
  returnValue += string2.slice(endIndex);
  return returnValue;
}
function stringEncaseCRLFWithFirstIndex4(string2, prefix2, postfix, index4) {
  let endIndex = 0;
  let returnValue = "";
  do {
    const gotCR = string2[index4 - 1] === "\r";
    returnValue += string2.slice(endIndex, gotCR ? index4 - 1 : index4) + prefix2 + (gotCR ? "\r\n" : "\n") + postfix;
    endIndex = index4 + 1;
    index4 = string2.indexOf("\n", endIndex);
  } while (index4 !== -1);
  returnValue += string2.slice(endIndex);
  return returnValue;
}

// ../../node_modules/boxen/node_modules/chalk/source/index.js
var { stdout: stdoutColor4, stderr: stderrColor4 } = supports_color_default4;
var GENERATOR4 = Symbol("GENERATOR");
var STYLER4 = Symbol("STYLER");
var IS_EMPTY4 = Symbol("IS_EMPTY");
var levelMapping4 = [
  "ansi",
  "ansi",
  "ansi256",
  "ansi16m"
];
var styles10 = /* @__PURE__ */ Object.create(null);
var applyOptions4 = (object, options = {}) => {
  if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
    throw new Error("The `level` option should be an integer from 0 to 3");
  }
  const colorLevel = stdoutColor4 ? stdoutColor4.level : 0;
  object.level = options.level === void 0 ? colorLevel : options.level;
};
var chalkFactory4 = (options) => {
  const chalk6 = (...strings) => strings.join(" ");
  applyOptions4(chalk6, options);
  Object.setPrototypeOf(chalk6, createChalk4.prototype);
  return chalk6;
};
function createChalk4(options) {
  return chalkFactory4(options);
}
Object.setPrototypeOf(createChalk4.prototype, Function.prototype);
for (const [styleName, style3] of Object.entries(ansi_styles_default4)) {
  styles10[styleName] = {
    get() {
      const builder = createBuilder4(this, createStyler4(style3.open, style3.close, this[STYLER4]), this[IS_EMPTY4]);
      Object.defineProperty(this, styleName, { value: builder });
      return builder;
    }
  };
}
styles10.visible = {
  get() {
    const builder = createBuilder4(this, this[STYLER4], true);
    Object.defineProperty(this, "visible", { value: builder });
    return builder;
  }
};
var getModelAnsi4 = (model, level, type2, ...arguments_) => {
  if (model === "rgb") {
    if (level === "ansi16m") {
      return ansi_styles_default4[type2].ansi16m(...arguments_);
    }
    if (level === "ansi256") {
      return ansi_styles_default4[type2].ansi256(ansi_styles_default4.rgbToAnsi256(...arguments_));
    }
    return ansi_styles_default4[type2].ansi(ansi_styles_default4.rgbToAnsi(...arguments_));
  }
  if (model === "hex") {
    return getModelAnsi4("rgb", level, type2, ...ansi_styles_default4.hexToRgb(...arguments_));
  }
  return ansi_styles_default4[type2][model](...arguments_);
};
var usedModels4 = ["rgb", "hex", "ansi256"];
for (const model of usedModels4) {
  styles10[model] = {
    get() {
      const { level } = this;
      return function(...arguments_) {
        const styler = createStyler4(getModelAnsi4(model, levelMapping4[level], "color", ...arguments_), ansi_styles_default4.color.close, this[STYLER4]);
        return createBuilder4(this, styler, this[IS_EMPTY4]);
      };
    }
  };
  const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
  styles10[bgModel] = {
    get() {
      const { level } = this;
      return function(...arguments_) {
        const styler = createStyler4(getModelAnsi4(model, levelMapping4[level], "bgColor", ...arguments_), ansi_styles_default4.bgColor.close, this[STYLER4]);
        return createBuilder4(this, styler, this[IS_EMPTY4]);
      };
    }
  };
}
var proto7 = Object.defineProperties(() => {
}, {
  ...styles10,
  level: {
    enumerable: true,
    get() {
      return this[GENERATOR4].level;
    },
    set(level) {
      this[GENERATOR4].level = level;
    }
  }
});
var createStyler4 = (open2, close2, parent2) => {
  let openAll;
  let closeAll;
  if (parent2 === void 0) {
    openAll = open2;
    closeAll = close2;
  } else {
    openAll = parent2.openAll + open2;
    closeAll = close2 + parent2.closeAll;
  }
  return {
    open: open2,
    close: close2,
    openAll,
    closeAll,
    parent: parent2
  };
};
var createBuilder4 = (self2, _styler, _isEmpty) => {
  const builder = (...arguments_) => applyStyle4(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
  Object.setPrototypeOf(builder, proto7);
  builder[GENERATOR4] = self2;
  builder[STYLER4] = _styler;
  builder[IS_EMPTY4] = _isEmpty;
  return builder;
};
var applyStyle4 = (self2, string2) => {
  if (self2.level <= 0 || !string2) {
    return self2[IS_EMPTY4] ? "" : string2;
  }
  let styler = self2[STYLER4];
  if (styler === void 0) {
    return string2;
  }
  const { openAll, closeAll } = styler;
  if (string2.includes("\x1B")) {
    while (styler !== void 0) {
      string2 = stringReplaceAll4(string2, styler.close, styler.open);
      styler = styler.parent;
    }
  }
  const lfIndex = string2.indexOf("\n");
  if (lfIndex !== -1) {
    string2 = stringEncaseCRLFWithFirstIndex4(string2, closeAll, openAll, lfIndex);
  }
  return openAll + string2 + closeAll;
};
Object.defineProperties(createChalk4.prototype, styles10);
var chalk4 = createChalk4();
var chalkStderr4 = createChalk4({ level: stderrColor4 ? stderrColor4.level : 0 });
var source_default6 = chalk4;

// ../../node_modules/widest-line/index.js
function widestLine(string2) {
  let lineWidth = 0;
  for (const line2 of string2.split("\n")) {
    lineWidth = Math.max(lineWidth, stringWidth2(line2));
  }
  return lineWidth;
}

// ../../node_modules/boxen/index.js
var import_cli_boxes = __toESM(require_cli_boxes(), 1);

// ../../node_modules/camelcase/index.js
var UPPERCASE = /[\p{Lu}]/u;
var LOWERCASE = /[\p{Ll}]/u;
var LEADING_CAPITAL = /^[\p{Lu}](?![\p{Lu}])/gu;
var IDENTIFIER = /([\p{Alpha}\p{N}_]|$)/u;
var SEPARATORS = /[_.\- ]+/;
var LEADING_SEPARATORS = new RegExp("^" + SEPARATORS.source);
var SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, "gu");
var NUMBERS_AND_IDENTIFIER = new RegExp("\\d+" + IDENTIFIER.source, "gu");
var preserveCamelCase = (string2, toLowerCase, toUpperCase, preserveConsecutiveUppercase2) => {
  let isLastCharLower = false;
  let isLastCharUpper = false;
  let isLastLastCharUpper = false;
  let isLastLastCharPreserved = false;
  for (let index4 = 0; index4 < string2.length; index4++) {
    const character = string2[index4];
    isLastLastCharPreserved = index4 > 2 ? string2[index4 - 3] === "-" : true;
    if (isLastCharLower && UPPERCASE.test(character)) {
      string2 = string2.slice(0, index4) + "-" + string2.slice(index4);
      isLastCharLower = false;
      isLastLastCharUpper = isLastCharUpper;
      isLastCharUpper = true;
      index4++;
    } else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character) && (!isLastLastCharPreserved || preserveConsecutiveUppercase2)) {
      string2 = string2.slice(0, index4 - 1) + "-" + string2.slice(index4 - 1);
      isLastLastCharUpper = isLastCharUpper;
      isLastCharUpper = false;
      isLastCharLower = true;
    } else {
      isLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;
      isLastLastCharUpper = isLastCharUpper;
      isLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;
    }
  }
  return string2;
};
var preserveConsecutiveUppercase = (input3, toLowerCase) => {
  LEADING_CAPITAL.lastIndex = 0;
  return input3.replace(LEADING_CAPITAL, (m1) => toLowerCase(m1));
};
var postProcess2 = (input3, toUpperCase) => {
  SEPARATORS_AND_IDENTIFIER.lastIndex = 0;
  NUMBERS_AND_IDENTIFIER.lastIndex = 0;
  return input3.replace(SEPARATORS_AND_IDENTIFIER, (_2, identifier) => toUpperCase(identifier)).replace(NUMBERS_AND_IDENTIFIER, (m2) => toUpperCase(m2));
};
function camelCase(input3, options) {
  if (!(typeof input3 === "string" || Array.isArray(input3))) {
    throw new TypeError("Expected the input to be `string | string[]`");
  }
  options = {
    pascalCase: false,
    preserveConsecutiveUppercase: false,
    ...options
  };
  if (Array.isArray(input3)) {
    input3 = input3.map((x2) => x2.trim()).filter((x2) => x2.length).join("-");
  } else {
    input3 = input3.trim();
  }
  if (input3.length === 0) {
    return "";
  }
  const toLowerCase = options.locale === false ? (string2) => string2.toLowerCase() : (string2) => string2.toLocaleLowerCase(options.locale);
  const toUpperCase = options.locale === false ? (string2) => string2.toUpperCase() : (string2) => string2.toLocaleUpperCase(options.locale);
  if (input3.length === 1) {
    if (SEPARATORS.test(input3)) {
      return "";
    }
    return options.pascalCase ? toUpperCase(input3) : toLowerCase(input3);
  }
  const hasUpperCase = input3 !== toLowerCase(input3);
  if (hasUpperCase) {
    input3 = preserveCamelCase(input3, toLowerCase, toUpperCase, options.preserveConsecutiveUppercase);
  }
  input3 = input3.replace(LEADING_SEPARATORS, "");
  input3 = options.preserveConsecutiveUppercase ? preserveConsecutiveUppercase(input3, toLowerCase) : toLowerCase(input3);
  if (options.pascalCase) {
    input3 = toUpperCase(input3.charAt(0)) + input3.slice(1);
  }
  return postProcess2(input3, toUpperCase);
}

// ../../node_modules/boxen/index.js
var import_ansi_align = __toESM(require_ansi_align(), 1);

// ../../node_modules/wrap-ansi/node_modules/ansi-styles/index.js
var ANSI_BACKGROUND_OFFSET5 = 10;
var wrapAnsi165 = (offset = 0) => (code7) => `\x1B[${code7 + offset}m`;
var wrapAnsi2565 = (offset = 0) => (code7) => `\x1B[${38 + offset};5;${code7}m`;
var wrapAnsi16m5 = (offset = 0) => (red, green, blue) => `\x1B[${38 + offset};2;${red};${green};${blue}m`;
var styles11 = {
  modifier: {
    reset: [0, 0],
    // 21 isn't widely supported and 22 does the same thing
    bold: [1, 22],
    dim: [2, 22],
    italic: [3, 23],
    underline: [4, 24],
    overline: [53, 55],
    inverse: [7, 27],
    hidden: [8, 28],
    strikethrough: [9, 29]
  },
  color: {
    black: [30, 39],
    red: [31, 39],
    green: [32, 39],
    yellow: [33, 39],
    blue: [34, 39],
    magenta: [35, 39],
    cyan: [36, 39],
    white: [37, 39],
    // Bright color
    blackBright: [90, 39],
    gray: [90, 39],
    // Alias of `blackBright`
    grey: [90, 39],
    // Alias of `blackBright`
    redBright: [91, 39],
    greenBright: [92, 39],
    yellowBright: [93, 39],
    blueBright: [94, 39],
    magentaBright: [95, 39],
    cyanBright: [96, 39],
    whiteBright: [97, 39]
  },
  bgColor: {
    bgBlack: [40, 49],
    bgRed: [41, 49],
    bgGreen: [42, 49],
    bgYellow: [43, 49],
    bgBlue: [44, 49],
    bgMagenta: [45, 49],
    bgCyan: [46, 49],
    bgWhite: [47, 49],
    // Bright color
    bgBlackBright: [100, 49],
    bgGray: [100, 49],
    // Alias of `bgBlackBright`
    bgGrey: [100, 49],
    // Alias of `bgBlackBright`
    bgRedBright: [101, 49],
    bgGreenBright: [102, 49],
    bgYellowBright: [103, 49],
    bgBlueBright: [104, 49],
    bgMagentaBright: [105, 49],
    bgCyanBright: [106, 49],
    bgWhiteBright: [107, 49]
  }
};
var modifierNames5 = Object.keys(styles11.modifier);
var foregroundColorNames5 = Object.keys(styles11.color);
var backgroundColorNames5 = Object.keys(styles11.bgColor);
var colorNames5 = [...foregroundColorNames5, ...backgroundColorNames5];
function assembleStyles5() {
  const codes = /* @__PURE__ */ new Map();
  for (const [groupName, group3] of Object.entries(styles11)) {
    for (const [styleName, style3] of Object.entries(group3)) {
      styles11[styleName] = {
        open: `\x1B[${style3[0]}m`,
        close: `\x1B[${style3[1]}m`
      };
      group3[styleName] = styles11[styleName];
      codes.set(style3[0], style3[1]);
    }
    Object.defineProperty(styles11, groupName, {
      value: group3,
      enumerable: false
    });
  }
  Object.defineProperty(styles11, "codes", {
    value: codes,
    enumerable: false
  });
  styles11.color.close = "\x1B[39m";
  styles11.bgColor.close = "\x1B[49m";
  styles11.color.ansi = wrapAnsi165();
  styles11.color.ansi256 = wrapAnsi2565();
  styles11.color.ansi16m = wrapAnsi16m5();
  styles11.bgColor.ansi = wrapAnsi165(ANSI_BACKGROUND_OFFSET5);
  styles11.bgColor.ansi256 = wrapAnsi2565(ANSI_BACKGROUND_OFFSET5);
  styles11.bgColor.ansi16m = wrapAnsi16m5(ANSI_BACKGROUND_OFFSET5);
  Object.defineProperties(styles11, {
    rgbToAnsi256: {
      value: (red, green, blue) => {
        if (red === green && green === blue) {
          if (red < 8) {
            return 16;
          }
          if (red > 248) {
            return 231;
          }
          return Math.round((red - 8) / 247 * 24) + 232;
        }
        return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
      },
      enumerable: false
    },
    hexToRgb: {
      value: (hex) => {
        const matches4 = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
        if (!matches4) {
          return [0, 0, 0];
        }
        let [colorString] = matches4;
        if (colorString.length === 3) {
          colorString = [...colorString].map((character) => character + character).join("");
        }
        const integer = Number.parseInt(colorString, 16);
        return [
          /* eslint-disable no-bitwise */
          integer >> 16 & 255,
          integer >> 8 & 255,
          integer & 255
          /* eslint-enable no-bitwise */
        ];
      },
      enumerable: false
    },
    hexToAnsi256: {
      value: (hex) => styles11.rgbToAnsi256(...styles11.hexToRgb(hex)),
      enumerable: false
    },
    ansi256ToAnsi: {
      value: (code7) => {
        if (code7 < 8) {
          return 30 + code7;
        }
        if (code7 < 16) {
          return 90 + (code7 - 8);
        }
        let red;
        let green;
        let blue;
        if (code7 >= 232) {
          red = ((code7 - 232) * 10 + 8) / 255;
          green = red;
          blue = red;
        } else {
          code7 -= 16;
          const remainder = code7 % 36;
          red = Math.floor(code7 / 36) / 5;
          green = Math.floor(remainder / 6) / 5;
          blue = remainder % 6 / 5;
        }
        const value = Math.max(red, green, blue) * 2;
        if (value === 0) {
          return 30;
        }
        let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
        if (value === 2) {
          result += 60;
        }
        return result;
      },
      enumerable: false
    },
    rgbToAnsi: {
      value: (red, green, blue) => styles11.ansi256ToAnsi(styles11.rgbToAnsi256(red, green, blue)),
      enumerable: false
    },
    hexToAnsi: {
      value: (hex) => styles11.ansi256ToAnsi(styles11.hexToAnsi256(hex)),
      enumerable: false
    }
  });
  return styles11;
}
var ansiStyles5 = assembleStyles5();
var ansi_styles_default5 = ansiStyles5;

// ../../node_modules/wrap-ansi/index.js
var ESCAPES = /* @__PURE__ */ new Set([
  "\x1B",
  "\x9B"
]);
var END_CODE = 39;
var ANSI_ESCAPE_BELL = "\x07";
var ANSI_CSI = "[";
var ANSI_OSC = "]";
var ANSI_SGR_TERMINATOR = "m";
var ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;
var wrapAnsiCode = (code7) => `${ESCAPES.values().next().value}${ANSI_CSI}${code7}${ANSI_SGR_TERMINATOR}`;
var wrapAnsiHyperlink = (uri) => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${ANSI_ESCAPE_BELL}`;
var wordLengths = (string2) => string2.split(" ").map((character) => stringWidth2(character));
var wrapWord = (rows, word, columns) => {
  const characters2 = [...word];
  let isInsideEscape = false;
  let isInsideLinkEscape = false;
  let visible = stringWidth2(stripAnsi(rows[rows.length - 1]));
  for (const [index4, character] of characters2.entries()) {
    const characterLength = stringWidth2(character);
    if (visible + characterLength <= columns) {
      rows[rows.length - 1] += character;
    } else {
      rows.push(character);
      visible = 0;
    }
    if (ESCAPES.has(character)) {
      isInsideEscape = true;
      isInsideLinkEscape = characters2.slice(index4 + 1).join("").startsWith(ANSI_ESCAPE_LINK);
    }
    if (isInsideEscape) {
      if (isInsideLinkEscape) {
        if (character === ANSI_ESCAPE_BELL) {
          isInsideEscape = false;
          isInsideLinkEscape = false;
        }
      } else if (character === ANSI_SGR_TERMINATOR) {
        isInsideEscape = false;
      }
      continue;
    }
    visible += characterLength;
    if (visible === columns && index4 < characters2.length - 1) {
      rows.push("");
      visible = 0;
    }
  }
  if (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {
    rows[rows.length - 2] += rows.pop();
  }
};
var stringVisibleTrimSpacesRight = (string2) => {
  const words = string2.split(" ");
  let last = words.length;
  while (last > 0) {
    if (stringWidth2(words[last - 1]) > 0) {
      break;
    }
    last--;
  }
  if (last === words.length) {
    return string2;
  }
  return words.slice(0, last).join(" ") + words.slice(last).join("");
};
var exec2 = (string2, columns, options = {}) => {
  if (options.trim !== false && string2.trim() === "") {
    return "";
  }
  let returnValue = "";
  let escapeCode;
  let escapeUrl;
  const lengths = wordLengths(string2);
  let rows = [""];
  for (const [index4, word] of string2.split(" ").entries()) {
    if (options.trim !== false) {
      rows[rows.length - 1] = rows[rows.length - 1].trimStart();
    }
    let rowLength = stringWidth2(rows[rows.length - 1]);
    if (index4 !== 0) {
      if (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {
        rows.push("");
        rowLength = 0;
      }
      if (rowLength > 0 || options.trim === false) {
        rows[rows.length - 1] += " ";
        rowLength++;
      }
    }
    if (options.hard && lengths[index4] > columns) {
      const remainingColumns = columns - rowLength;
      const breaksStartingThisLine = 1 + Math.floor((lengths[index4] - remainingColumns - 1) / columns);
      const breaksStartingNextLine = Math.floor((lengths[index4] - 1) / columns);
      if (breaksStartingNextLine < breaksStartingThisLine) {
        rows.push("");
      }
      wrapWord(rows, word, columns);
      continue;
    }
    if (rowLength + lengths[index4] > columns && rowLength > 0 && lengths[index4] > 0) {
      if (options.wordWrap === false && rowLength < columns) {
        wrapWord(rows, word, columns);
        continue;
      }
      rows.push("");
    }
    if (rowLength + lengths[index4] > columns && options.wordWrap === false) {
      wrapWord(rows, word, columns);
      continue;
    }
    rows[rows.length - 1] += word;
  }
  if (options.trim !== false) {
    rows = rows.map((row2) => stringVisibleTrimSpacesRight(row2));
  }
  const pre2 = [...rows.join("\n")];
  for (const [index4, character] of pre2.entries()) {
    returnValue += character;
    if (ESCAPES.has(character)) {
      const { groups } = new RegExp(`(?:\\${ANSI_CSI}(?<code>\\d+)m|\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(pre2.slice(index4).join("")) || { groups: {} };
      if (groups.code !== void 0) {
        const code8 = Number.parseFloat(groups.code);
        escapeCode = code8 === END_CODE ? void 0 : code8;
      } else if (groups.uri !== void 0) {
        escapeUrl = groups.uri.length === 0 ? void 0 : groups.uri;
      }
    }
    const code7 = ansi_styles_default5.codes.get(Number(escapeCode));
    if (pre2[index4 + 1] === "\n") {
      if (escapeUrl) {
        returnValue += wrapAnsiHyperlink("");
      }
      if (escapeCode && code7) {
        returnValue += wrapAnsiCode(code7);
      }
    } else if (character === "\n") {
      if (escapeCode && code7) {
        returnValue += wrapAnsiCode(escapeCode);
      }
      if (escapeUrl) {
        returnValue += wrapAnsiHyperlink(escapeUrl);
      }
    }
  }
  return returnValue;
};
function wrapAnsi2(string2, columns, options) {
  return String(string2).normalize().replace(/\r\n/g, "\n").split("\n").map((line2) => exec2(line2, columns, options)).join("\n");
}

// ../../node_modules/boxen/index.js
var import_cli_boxes2 = __toESM(require_cli_boxes(), 1);
var NEWLINE = "\n";
var PAD = " ";
var NONE = "none";
var terminalColumns = () => {
  const { env: env6, stdout, stderr } = import_node_process10.default;
  if (stdout == null ? void 0 : stdout.columns) {
    return stdout.columns;
  }
  if (stderr == null ? void 0 : stderr.columns) {
    return stderr.columns;
  }
  if (env6.COLUMNS) {
    return Number.parseInt(env6.COLUMNS, 10);
  }
  return 80;
};
var getObject = (detail) => typeof detail === "number" ? {
  top: detail,
  right: detail * 3,
  bottom: detail,
  left: detail * 3
} : {
  top: 0,
  right: 0,
  bottom: 0,
  left: 0,
  ...detail
};
var getBorderWidth = (borderStyle) => borderStyle === NONE ? 0 : 2;
var getBorderChars = (borderStyle) => {
  const sides = [
    "topLeft",
    "topRight",
    "bottomRight",
    "bottomLeft",
    "left",
    "right",
    "top",
    "bottom"
  ];
  let characters2;
  if (borderStyle === NONE) {
    borderStyle = {};
    for (const side of sides) {
      borderStyle[side] = "";
    }
  }
  if (typeof borderStyle === "string") {
    characters2 = import_cli_boxes.default[borderStyle];
    if (!characters2) {
      throw new TypeError(`Invalid border style: ${borderStyle}`);
    }
  } else {
    if (typeof (borderStyle == null ? void 0 : borderStyle.vertical) === "string") {
      borderStyle.left = borderStyle.vertical;
      borderStyle.right = borderStyle.vertical;
    }
    if (typeof (borderStyle == null ? void 0 : borderStyle.horizontal) === "string") {
      borderStyle.top = borderStyle.horizontal;
      borderStyle.bottom = borderStyle.horizontal;
    }
    for (const side of sides) {
      if (borderStyle[side] === null || typeof borderStyle[side] !== "string") {
        throw new TypeError(`Invalid border style: ${side}`);
      }
    }
    characters2 = borderStyle;
  }
  return characters2;
};
var makeTitle = (text7, horizontal, alignment) => {
  let title = "";
  const textWidth = stringWidth2(text7);
  switch (alignment) {
    case "left": {
      title = text7 + horizontal.slice(textWidth);
      break;
    }
    case "right": {
      title = horizontal.slice(textWidth) + text7;
      break;
    }
    default: {
      horizontal = horizontal.slice(textWidth);
      if (horizontal.length % 2 === 1) {
        horizontal = horizontal.slice(Math.floor(horizontal.length / 2));
        title = horizontal.slice(1) + text7 + horizontal;
      } else {
        horizontal = horizontal.slice(horizontal.length / 2);
        title = horizontal + text7 + horizontal;
      }
      break;
    }
  }
  return title;
};
var makeContentText = (text7, { padding: padding2, width, textAlignment, height: height2 }) => {
  text7 = (0, import_ansi_align.default)(text7, { align: textAlignment });
  let lines = text7.split(NEWLINE);
  const textWidth = widestLine(text7);
  const max = width - padding2.left - padding2.right;
  if (textWidth > max) {
    const newLines = [];
    for (const line2 of lines) {
      const createdLines = wrapAnsi2(line2, max, { hard: true });
      const alignedLines = (0, import_ansi_align.default)(createdLines, { align: textAlignment });
      const alignedLinesArray = alignedLines.split("\n");
      const longestLength = Math.max(...alignedLinesArray.map((s5) => stringWidth2(s5)));
      for (const alignedLine of alignedLinesArray) {
        let paddedLine;
        switch (textAlignment) {
          case "center": {
            paddedLine = PAD.repeat((max - longestLength) / 2) + alignedLine;
            break;
          }
          case "right": {
            paddedLine = PAD.repeat(max - longestLength) + alignedLine;
            break;
          }
          default: {
            paddedLine = alignedLine;
            break;
          }
        }
        newLines.push(paddedLine);
      }
    }
    lines = newLines;
  }
  if (textAlignment === "center" && textWidth < max) {
    lines = lines.map((line2) => PAD.repeat((max - textWidth) / 2) + line2);
  } else if (textAlignment === "right" && textWidth < max) {
    lines = lines.map((line2) => PAD.repeat(max - textWidth) + line2);
  }
  const paddingLeft = PAD.repeat(padding2.left);
  const paddingRight = PAD.repeat(padding2.right);
  lines = lines.map((line2) => paddingLeft + line2 + paddingRight);
  lines = lines.map((line2) => {
    if (width - stringWidth2(line2) > 0) {
      switch (textAlignment) {
        case "center": {
          return line2 + PAD.repeat(width - stringWidth2(line2));
        }
        case "right": {
          return line2 + PAD.repeat(width - stringWidth2(line2));
        }
        default: {
          return line2 + PAD.repeat(width - stringWidth2(line2));
        }
      }
    }
    return line2;
  });
  if (padding2.top > 0) {
    lines = [...Array.from({ length: padding2.top }).fill(PAD.repeat(width)), ...lines];
  }
  if (padding2.bottom > 0) {
    lines = [...lines, ...Array.from({ length: padding2.bottom }).fill(PAD.repeat(width))];
  }
  if (height2 && lines.length > height2) {
    lines = lines.slice(0, height2);
  } else if (height2 && lines.length < height2) {
    lines = [...lines, ...Array.from({ length: height2 - lines.length }).fill(PAD.repeat(width))];
  }
  return lines.join(NEWLINE);
};
var boxContent = (content3, contentWidth, options) => {
  const colorizeBorder = (border) => {
    const newBorder = options.borderColor ? getColorFn(options.borderColor)(border) : border;
    return options.dimBorder ? source_default6.dim(newBorder) : newBorder;
  };
  const colorizeContent = (content4) => options.backgroundColor ? getBGColorFn(options.backgroundColor)(content4) : content4;
  const chars = getBorderChars(options.borderStyle);
  const columns = terminalColumns();
  let marginLeft = PAD.repeat(options.margin.left);
  if (options.float === "center") {
    const marginWidth = Math.max((columns - contentWidth - getBorderWidth(options.borderStyle)) / 2, 0);
    marginLeft = PAD.repeat(marginWidth);
  } else if (options.float === "right") {
    const marginWidth = Math.max(columns - contentWidth - options.margin.right - getBorderWidth(options.borderStyle), 0);
    marginLeft = PAD.repeat(marginWidth);
  }
  let result = "";
  if (options.margin.top) {
    result += NEWLINE.repeat(options.margin.top);
  }
  if (options.borderStyle !== NONE || options.title) {
    result += colorizeBorder(marginLeft + chars.topLeft + (options.title ? makeTitle(options.title, chars.top.repeat(contentWidth), options.titleAlignment) : chars.top.repeat(contentWidth)) + chars.topRight) + NEWLINE;
  }
  const lines = content3.split(NEWLINE);
  result += lines.map((line2) => marginLeft + colorizeBorder(chars.left) + colorizeContent(line2) + colorizeBorder(chars.right)).join(NEWLINE);
  if (options.borderStyle !== NONE) {
    result += NEWLINE + colorizeBorder(marginLeft + chars.bottomLeft + chars.bottom.repeat(contentWidth) + chars.bottomRight);
  }
  if (options.margin.bottom) {
    result += NEWLINE.repeat(options.margin.bottom);
  }
  return result;
};
var sanitizeOptions = (options) => {
  var _a6;
  if (options.fullscreen && ((_a6 = import_node_process10.default) == null ? void 0 : _a6.stdout)) {
    let newDimensions = [import_node_process10.default.stdout.columns, import_node_process10.default.stdout.rows];
    if (typeof options.fullscreen === "function") {
      newDimensions = options.fullscreen(...newDimensions);
    }
    if (!options.width) {
      options.width = newDimensions[0];
    }
    if (!options.height) {
      options.height = newDimensions[1];
    }
  }
  if (options.width) {
    options.width = Math.max(1, options.width - getBorderWidth(options.borderStyle));
  }
  if (options.height) {
    options.height = Math.max(1, options.height - getBorderWidth(options.borderStyle));
  }
  return options;
};
var formatTitle = (title, borderStyle) => borderStyle === NONE ? title : ` ${title} `;
var determineDimensions = (text7, options) => {
  options = sanitizeOptions(options);
  const widthOverride = options.width !== void 0;
  const columns = terminalColumns();
  const borderWidth = getBorderWidth(options.borderStyle);
  const maxWidth = columns - options.margin.left - options.margin.right - borderWidth;
  const widest = widestLine(wrapAnsi2(text7, columns - borderWidth, { hard: true, trim: false })) + options.padding.left + options.padding.right;
  if (options.title && widthOverride) {
    options.title = options.title.slice(0, Math.max(0, options.width - 2));
    if (options.title) {
      options.title = formatTitle(options.title, options.borderStyle);
    }
  } else if (options.title) {
    options.title = options.title.slice(0, Math.max(0, maxWidth - 2));
    if (options.title) {
      options.title = formatTitle(options.title, options.borderStyle);
      if (stringWidth2(options.title) > widest) {
        options.width = stringWidth2(options.title);
      }
    }
  }
  options.width = options.width ? options.width : widest;
  if (!widthOverride) {
    if (options.margin.left && options.margin.right && options.width > maxWidth) {
      const spaceForMargins = columns - options.width - borderWidth;
      const multiplier = spaceForMargins / (options.margin.left + options.margin.right);
      options.margin.left = Math.max(0, Math.floor(options.margin.left * multiplier));
      options.margin.right = Math.max(0, Math.floor(options.margin.right * multiplier));
    }
    options.width = Math.min(options.width, columns - borderWidth - options.margin.left - options.margin.right);
  }
  if (options.width - (options.padding.left + options.padding.right) <= 0) {
    options.padding.left = 0;
    options.padding.right = 0;
  }
  if (options.height && options.height - (options.padding.top + options.padding.bottom) <= 0) {
    options.padding.top = 0;
    options.padding.bottom = 0;
  }
  return options;
};
var isHex = (color2) => color2.match(/^#(?:[0-f]{3}){1,2}$/i);
var isColorValid = (color2) => typeof color2 === "string" && (source_default6[color2] ?? isHex(color2));
var getColorFn = (color2) => isHex(color2) ? source_default6.hex(color2) : source_default6[color2];
var getBGColorFn = (color2) => isHex(color2) ? source_default6.bgHex(color2) : source_default6[camelCase(["bg", color2])];
function boxen(text7, options) {
  options = {
    padding: 0,
    borderStyle: "single",
    dimBorder: false,
    textAlignment: "left",
    float: "left",
    titleAlignment: "left",
    ...options
  };
  if (options.align) {
    options.textAlignment = options.align;
  }
  if (options.borderColor && !isColorValid(options.borderColor)) {
    throw new Error(`${options.borderColor} is not a valid borderColor`);
  }
  if (options.backgroundColor && !isColorValid(options.backgroundColor)) {
    throw new Error(`${options.backgroundColor} is not a valid backgroundColor`);
  }
  options.padding = getObject(options.padding);
  options.margin = getObject(options.margin);
  options = determineDimensions(text7, options);
  text7 = makeContentText(text7, options);
  return boxContent(text7, options.width, options);
}

// ../myst-cli/dist/session/session.js
var import_https_proxy_agent = __toESM(require_dist5(), 1);
var import_p_limit3 = __toESM(require_p_limit(), 1);
var import_services = __toESM(require_lib29(), 1);
if (!globalThis.fetch) {
  globalThis.fetch = fetch2;
  globalThis.Headers = Headers2;
  globalThis.Request = Request2;
  globalThis.Response = Response;
}
var CONFIG_FILES = ["myst.yml"];
var API_URL = "https://api.mystmd.org";
var NPM_COMMAND = "npm i -g mystmd@latest";
var PIP_COMMAND = "pip install -U mystmd";
var LOCALHOSTS = ["localhost", "127.0.0.1", "::1"];
function socialLink({ twitter, bsky }) {
  if (bsky) {
    return `Follow ${source_default.yellowBright(`@${bsky}`)} for updates!
https://bsky.app/profile/${bsky}`;
  }
  if (twitter) {
    return `Follow ${source_default.yellowBright(`@${twitter}`)} for updates!
https://x.com/${twitter}`;
  }
  return "";
}
function logUpdateAvailable({ current: current2, latest: latest2, upgradeCommand, twitter, bsky }) {
  return boxen(`Update available! ${source_default.dim(`v${current2}`)} \u226B ${source_default.green.bold(`v${latest2}`)}

Run \`${source_default.cyanBright.bold(upgradeCommand)}\` to update.

${socialLink({ bsky, twitter })}`, {
    padding: 1,
    margin: 1,
    borderColor: "green",
    borderStyle: "round",
    textAlignment: "center"
  });
}
var Session = class _Session {
  get log() {
    return this.$logger;
  }
  constructor(opts = {}) {
    var _a6, _b;
    this._shownUpgrade = false;
    this._clones = [];
    this.API_URL = API_URL;
    this.configFiles = (opts.configFiles ? opts.configFiles : CONFIG_FILES).slice();
    this.$logger = (_a6 = opts.logger) !== null && _a6 !== void 0 ? _a6 : chalkLogger(LogLevel.info, process.cwd());
    this.doiLimiter = (_b = opts.doiLimiter) !== null && _b !== void 0 ? _b : (0, import_p_limit3.default)(3);
    const proxyUrl = process.env.HTTPS_PROXY;
    if (proxyUrl)
      this.proxyAgent = new import_https_proxy_agent.HttpsProxyAgent(proxyUrl);
    this.store = createStore(rootReducer);
    latestVersion("mystmd").then((latest2) => {
      this._latestVersion = latest2;
    }).catch(() => null);
  }
  showUpgradeNotice() {
    if (this._shownUpgrade || !this._latestVersion || version_default2 === this._latestVersion || isWhiteLabelled())
      return;
    this.log.info(logUpdateAvailable({
      current: version_default2,
      latest: this._latestVersion,
      upgradeCommand: process.env.MYST_LANG === "PYTHON" ? PIP_COMMAND : NPM_COMMAND,
      bsky: "mystmd.org"
    }));
    this._shownUpgrade = true;
  }
  async reload() {
    await findCurrentProjectAndLoad(this, ".");
    await findCurrentSiteAndLoad(this, ".");
    if (selectors_exports.selectCurrentSitePath(this.store.getState())) {
      await reloadAllConfigsForCurrentSite(this);
    }
    return this;
  }
  async fetch(url, init4) {
    var _a6;
    const urlOnly = new URL((_a6 = url.url) !== null && _a6 !== void 0 ? _a6 : url);
    this.log.debug(`Fetching: ${urlOnly}`);
    if (this.proxyAgent && !LOCALHOSTS.includes(urlOnly.hostname)) {
      if (!init4)
        init4 = {};
      init4 = { agent: this.proxyAgent, ...init4 };
      this.log.debug(`Using HTTPS proxy: ${this.proxyAgent.proxy}`);
    }
    const logData = { url: urlOnly, done: false };
    setTimeout(() => {
      if (!logData.done)
        this.log.info(`\u23F3 Waiting for response from ${url}`);
    }, 5e3);
    const resp = await fetch2(url, init4);
    logData.done = true;
    return resp;
  }
  async loadPlugins(plugins3) {
    this.plugins = await loadPlugins(this, plugins3);
    return this.plugins;
  }
  sourcePath() {
    var _a6;
    const state = this.store.getState();
    const sitePath = selectors_exports.selectCurrentSitePath(state);
    const projectPath = selectors_exports.selectCurrentProjectPath(state);
    const root6 = (_a6 = sitePath !== null && sitePath !== void 0 ? sitePath : projectPath) !== null && _a6 !== void 0 ? _a6 : ".";
    return import_node_path66.default.resolve(root6);
  }
  buildPath() {
    return import_node_path66.default.join(this.sourcePath(), "_build");
  }
  sitePath() {
    return import_node_path66.default.join(this.buildPath(), "site");
  }
  contentPath() {
    return import_node_path66.default.join(this.sitePath(), "content");
  }
  publicPath() {
    return import_node_path66.default.join(this.sitePath(), "public");
  }
  async clone() {
    const cloneSession = new _Session({
      logger: this.log,
      doiLimiter: this.doiLimiter,
      configFiles: this.configFiles
    });
    await cloneSession.reload();
    cloneSession._jupyterSessionManagerPromise = this._jupyterSessionManagerPromise;
    this._clones.push(cloneSession);
    return cloneSession;
  }
  getAllWarnings(ruleId) {
    const stringWarnings = [];
    const warnings2 = [];
    [this, ...this._clones].forEach((session) => {
      const sessionWarnings = selectors_exports.selectFileWarningsByRule(session.store.getState(), ruleId);
      sessionWarnings.forEach((warning2) => {
        const stringWarning = JSON.stringify(Object.entries(warning2).sort());
        if (!stringWarnings.includes(stringWarning)) {
          stringWarnings.push(stringWarning);
          warnings2.push(warning2);
        }
      });
    });
    return warnings2;
  }
  jupyterSessionManager() {
    if (this._jupyterSessionManagerPromise === void 0) {
      this._jupyterSessionManagerPromise = this.createJupyterSessionManager();
    }
    return this._jupyterSessionManagerPromise;
  }
  async createJupyterSessionManager() {
    try {
      let partialServerSettings;
      if (process.env.JUPYTER_BASE_URL !== void 0) {
        partialServerSettings = {
          baseUrl: process.env.JUPYTER_BASE_URL,
          token: process.env.JUPYTER_TOKEN
        };
      } else {
        this.log.debug(`Launching jupyter server on ${this.sourcePath()}`);
        partialServerSettings = await launchJupyterServer(this.sourcePath(), this.log);
      }
      const serverSettings = import_services.ServerConnection.makeSettings(partialServerSettings);
      const kernelManager = new import_services.KernelManager({ serverSettings });
      const manager = new import_services.SessionManager({ kernelManager, serverSettings });
      manager.disposed.connect(() => {
        var _a6;
        kernelManager.dispose();
        (_a6 = partialServerSettings === null || partialServerSettings === void 0 ? void 0 : partialServerSettings.dispose) === null || _a6 === void 0 ? void 0 : _a6.call(partialServerSettings);
      });
      return manager;
    } catch (err) {
      this.log.error("Unable to instantiate connection to Jupyter Server", err);
      return void 0;
    }
  }
  dispose() {
    this._clones.forEach((session) => {
      session.dispose();
    });
    if (this._jupyterSessionManagerPromise) {
      this._jupyterSessionManagerPromise.then((manager) => {
        var _a6;
        return (_a6 = manager === null || manager === void 0 ? void 0 : manager.dispose) === null || _a6 === void 0 ? void 0 : _a6.call(manager);
      });
      this._jupyterSessionManagerPromise = void 0;
    }
  }
};

// src/clirun.ts
function clirun2(sessionClass, func, program3, runOptions) {
  return async (...args) => {
    var _a6;
    const opts = program3.opts();
    const logger = chalkLogger((opts == null ? void 0 : opts.debug) ? LogLevel.debug : LogLevel.info, process.cwd());
    const configFiles = (opts == null ? void 0 : opts.config) ? [opts.config] : null;
    const session = new sessionClass({ logger, configFiles });
    await session.reload();
    const versions = await getNodeVersion(session);
    logVersions(session, versions);
    const versionsInstalled = await checkNodeVersion(session);
    if (!versionsInstalled) process.exit(1);
    try {
      await func(session, ...args.slice(0, runOptions == null ? void 0 : runOptions.nArgs));
    } catch (error) {
      session.log.debug(`

${error == null ? void 0 : error.stack}

`);
      session.log.error(error.message);
      logVersions(session, versions, false);
      process.exit(1);
    }
    (_a6 = session.showUpgradeNotice) == null ? void 0 : _a6.call(session);
    if (typeof (runOptions == null ? void 0 : runOptions.keepAlive) === "function") {
      if (!runOptions.keepAlive(...args)) process.exit(0);
    } else if (!(runOptions == null ? void 0 : runOptions.keepAlive)) {
      process.exit(0);
    }
  };
}

// src/build.ts
function makeBuildCLI(program3) {
  const command = makeBuildCommand().action(
    clirun2(Session, build, program3, {
      keepAlive: (_2, opts) => !!opts.watch
    })
  );
  return command;
}

// src/clean.ts
function makeCleanCLI(program3) {
  const command = makeCleanCommand().action(clirun2(Session, clean2, program3));
  return command;
}

// node_modules/chalk/source/vendor/ansi-styles/index.js
var ANSI_BACKGROUND_OFFSET6 = 10;
var wrapAnsi166 = (offset = 0) => (code7) => `\x1B[${code7 + offset}m`;
var wrapAnsi2566 = (offset = 0) => (code7) => `\x1B[${38 + offset};5;${code7}m`;
var wrapAnsi16m6 = (offset = 0) => (red, green, blue) => `\x1B[${38 + offset};2;${red};${green};${blue}m`;
var styles12 = {
  modifier: {
    reset: [0, 0],
    // 21 isn't widely supported and 22 does the same thing
    bold: [1, 22],
    dim: [2, 22],
    italic: [3, 23],
    underline: [4, 24],
    overline: [53, 55],
    inverse: [7, 27],
    hidden: [8, 28],
    strikethrough: [9, 29]
  },
  color: {
    black: [30, 39],
    red: [31, 39],
    green: [32, 39],
    yellow: [33, 39],
    blue: [34, 39],
    magenta: [35, 39],
    cyan: [36, 39],
    white: [37, 39],
    // Bright color
    blackBright: [90, 39],
    gray: [90, 39],
    // Alias of `blackBright`
    grey: [90, 39],
    // Alias of `blackBright`
    redBright: [91, 39],
    greenBright: [92, 39],
    yellowBright: [93, 39],
    blueBright: [94, 39],
    magentaBright: [95, 39],
    cyanBright: [96, 39],
    whiteBright: [97, 39]
  },
  bgColor: {
    bgBlack: [40, 49],
    bgRed: [41, 49],
    bgGreen: [42, 49],
    bgYellow: [43, 49],
    bgBlue: [44, 49],
    bgMagenta: [45, 49],
    bgCyan: [46, 49],
    bgWhite: [47, 49],
    // Bright color
    bgBlackBright: [100, 49],
    bgGray: [100, 49],
    // Alias of `bgBlackBright`
    bgGrey: [100, 49],
    // Alias of `bgBlackBright`
    bgRedBright: [101, 49],
    bgGreenBright: [102, 49],
    bgYellowBright: [103, 49],
    bgBlueBright: [104, 49],
    bgMagentaBright: [105, 49],
    bgCyanBright: [106, 49],
    bgWhiteBright: [107, 49]
  }
};
var modifierNames6 = Object.keys(styles12.modifier);
var foregroundColorNames6 = Object.keys(styles12.color);
var backgroundColorNames6 = Object.keys(styles12.bgColor);
var colorNames6 = [...foregroundColorNames6, ...backgroundColorNames6];
function assembleStyles6() {
  const codes = /* @__PURE__ */ new Map();
  for (const [groupName, group3] of Object.entries(styles12)) {
    for (const [styleName, style3] of Object.entries(group3)) {
      styles12[styleName] = {
        open: `\x1B[${style3[0]}m`,
        close: `\x1B[${style3[1]}m`
      };
      group3[styleName] = styles12[styleName];
      codes.set(style3[0], style3[1]);
    }
    Object.defineProperty(styles12, groupName, {
      value: group3,
      enumerable: false
    });
  }
  Object.defineProperty(styles12, "codes", {
    value: codes,
    enumerable: false
  });
  styles12.color.close = "\x1B[39m";
  styles12.bgColor.close = "\x1B[49m";
  styles12.color.ansi = wrapAnsi166();
  styles12.color.ansi256 = wrapAnsi2566();
  styles12.color.ansi16m = wrapAnsi16m6();
  styles12.bgColor.ansi = wrapAnsi166(ANSI_BACKGROUND_OFFSET6);
  styles12.bgColor.ansi256 = wrapAnsi2566(ANSI_BACKGROUND_OFFSET6);
  styles12.bgColor.ansi16m = wrapAnsi16m6(ANSI_BACKGROUND_OFFSET6);
  Object.defineProperties(styles12, {
    rgbToAnsi256: {
      value(red, green, blue) {
        if (red === green && green === blue) {
          if (red < 8) {
            return 16;
          }
          if (red > 248) {
            return 231;
          }
          return Math.round((red - 8) / 247 * 24) + 232;
        }
        return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
      },
      enumerable: false
    },
    hexToRgb: {
      value(hex) {
        const matches4 = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
        if (!matches4) {
          return [0, 0, 0];
        }
        let [colorString] = matches4;
        if (colorString.length === 3) {
          colorString = [...colorString].map((character) => character + character).join("");
        }
        const integer = Number.parseInt(colorString, 16);
        return [
          /* eslint-disable no-bitwise */
          integer >> 16 & 255,
          integer >> 8 & 255,
          integer & 255
          /* eslint-enable no-bitwise */
        ];
      },
      enumerable: false
    },
    hexToAnsi256: {
      value: (hex) => styles12.rgbToAnsi256(...styles12.hexToRgb(hex)),
      enumerable: false
    },
    ansi256ToAnsi: {
      value(code7) {
        if (code7 < 8) {
          return 30 + code7;
        }
        if (code7 < 16) {
          return 90 + (code7 - 8);
        }
        let red;
        let green;
        let blue;
        if (code7 >= 232) {
          red = ((code7 - 232) * 10 + 8) / 255;
          green = red;
          blue = red;
        } else {
          code7 -= 16;
          const remainder = code7 % 36;
          red = Math.floor(code7 / 36) / 5;
          green = Math.floor(remainder / 6) / 5;
          blue = remainder % 6 / 5;
        }
        const value = Math.max(red, green, blue) * 2;
        if (value === 0) {
          return 30;
        }
        let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
        if (value === 2) {
          result += 60;
        }
        return result;
      },
      enumerable: false
    },
    rgbToAnsi: {
      value: (red, green, blue) => styles12.ansi256ToAnsi(styles12.rgbToAnsi256(red, green, blue)),
      enumerable: false
    },
    hexToAnsi: {
      value: (hex) => styles12.ansi256ToAnsi(styles12.hexToAnsi256(hex)),
      enumerable: false
    }
  });
  return styles12;
}
var ansiStyles6 = assembleStyles6();
var ansi_styles_default6 = ansiStyles6;

// node_modules/chalk/source/vendor/supports-color/index.js
var import_node_process11 = __toESM(require("process"), 1);
var import_node_os8 = __toESM(require("os"), 1);
var import_node_tty5 = __toESM(require("tty"), 1);
function hasFlag5(flag, argv = globalThis.Deno ? globalThis.Deno.args : import_node_process11.default.argv) {
  const prefix2 = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
  const position6 = argv.indexOf(prefix2 + flag);
  const terminatorPosition = argv.indexOf("--");
  return position6 !== -1 && (terminatorPosition === -1 || position6 < terminatorPosition);
}
var { env: env5 } = import_node_process11.default;
var flagForceColor5;
if (hasFlag5("no-color") || hasFlag5("no-colors") || hasFlag5("color=false") || hasFlag5("color=never")) {
  flagForceColor5 = 0;
} else if (hasFlag5("color") || hasFlag5("colors") || hasFlag5("color=true") || hasFlag5("color=always")) {
  flagForceColor5 = 1;
}
function envForceColor5() {
  if ("FORCE_COLOR" in env5) {
    if (env5.FORCE_COLOR === "true") {
      return 1;
    }
    if (env5.FORCE_COLOR === "false") {
      return 0;
    }
    return env5.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env5.FORCE_COLOR, 10), 3);
  }
}
function translateLevel5(level) {
  if (level === 0) {
    return false;
  }
  return {
    level,
    hasBasic: true,
    has256: level >= 2,
    has16m: level >= 3
  };
}
function _supportsColor5(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
  const noFlagForceColor = envForceColor5();
  if (noFlagForceColor !== void 0) {
    flagForceColor5 = noFlagForceColor;
  }
  const forceColor = sniffFlags ? flagForceColor5 : noFlagForceColor;
  if (forceColor === 0) {
    return 0;
  }
  if (sniffFlags) {
    if (hasFlag5("color=16m") || hasFlag5("color=full") || hasFlag5("color=truecolor")) {
      return 3;
    }
    if (hasFlag5("color=256")) {
      return 2;
    }
  }
  if ("TF_BUILD" in env5 && "AGENT_NAME" in env5) {
    return 1;
  }
  if (haveStream && !streamIsTTY && forceColor === void 0) {
    return 0;
  }
  const min = forceColor || 0;
  if (env5.TERM === "dumb") {
    return min;
  }
  if (import_node_process11.default.platform === "win32") {
    const osRelease = import_node_os8.default.release().split(".");
    if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
      return Number(osRelease[2]) >= 14931 ? 3 : 2;
    }
    return 1;
  }
  if ("CI" in env5) {
    if ("GITHUB_ACTIONS" in env5 || "GITEA_ACTIONS" in env5) {
      return 3;
    }
    if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env5) || env5.CI_NAME === "codeship") {
      return 1;
    }
    return min;
  }
  if ("TEAMCITY_VERSION" in env5) {
    return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env5.TEAMCITY_VERSION) ? 1 : 0;
  }
  if (env5.COLORTERM === "truecolor") {
    return 3;
  }
  if (env5.TERM === "xterm-kitty") {
    return 3;
  }
  if ("TERM_PROGRAM" in env5) {
    const version4 = Number.parseInt((env5.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
    switch (env5.TERM_PROGRAM) {
      case "iTerm.app": {
        return version4 >= 3 ? 3 : 2;
      }
      case "Apple_Terminal": {
        return 2;
      }
    }
  }
  if (/-256(color)?$/i.test(env5.TERM)) {
    return 2;
  }
  if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env5.TERM)) {
    return 1;
  }
  if ("COLORTERM" in env5) {
    return 1;
  }
  return min;
}
function createSupportsColor5(stream3, options = {}) {
  const level = _supportsColor5(stream3, {
    streamIsTTY: stream3 && stream3.isTTY,
    ...options
  });
  return translateLevel5(level);
}
var supportsColor5 = {
  stdout: createSupportsColor5({ isTTY: import_node_tty5.default.isatty(1) }),
  stderr: createSupportsColor5({ isTTY: import_node_tty5.default.isatty(2) })
};
var supports_color_default5 = supportsColor5;

// node_modules/chalk/source/utilities.js
function stringReplaceAll5(string2, substring, replacer) {
  let index4 = string2.indexOf(substring);
  if (index4 === -1) {
    return string2;
  }
  const substringLength = substring.length;
  let endIndex = 0;
  let returnValue = "";
  do {
    returnValue += string2.slice(endIndex, index4) + substring + replacer;
    endIndex = index4 + substringLength;
    index4 = string2.indexOf(substring, endIndex);
  } while (index4 !== -1);
  returnValue += string2.slice(endIndex);
  return returnValue;
}
function stringEncaseCRLFWithFirstIndex5(string2, prefix2, postfix, index4) {
  let endIndex = 0;
  let returnValue = "";
  do {
    const gotCR = string2[index4 - 1] === "\r";
    returnValue += string2.slice(endIndex, gotCR ? index4 - 1 : index4) + prefix2 + (gotCR ? "\r\n" : "\n") + postfix;
    endIndex = index4 + 1;
    index4 = string2.indexOf("\n", endIndex);
  } while (index4 !== -1);
  returnValue += string2.slice(endIndex);
  return returnValue;
}

// node_modules/chalk/source/index.js
var { stdout: stdoutColor5, stderr: stderrColor5 } = supports_color_default5;
var GENERATOR5 = Symbol("GENERATOR");
var STYLER5 = Symbol("STYLER");
var IS_EMPTY5 = Symbol("IS_EMPTY");
var levelMapping5 = [
  "ansi",
  "ansi",
  "ansi256",
  "ansi16m"
];
var styles13 = /* @__PURE__ */ Object.create(null);
var applyOptions5 = (object, options = {}) => {
  if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
    throw new Error("The `level` option should be an integer from 0 to 3");
  }
  const colorLevel = stdoutColor5 ? stdoutColor5.level : 0;
  object.level = options.level === void 0 ? colorLevel : options.level;
};
var chalkFactory5 = (options) => {
  const chalk6 = (...strings) => strings.join(" ");
  applyOptions5(chalk6, options);
  Object.setPrototypeOf(chalk6, createChalk5.prototype);
  return chalk6;
};
function createChalk5(options) {
  return chalkFactory5(options);
}
Object.setPrototypeOf(createChalk5.prototype, Function.prototype);
for (const [styleName, style3] of Object.entries(ansi_styles_default6)) {
  styles13[styleName] = {
    get() {
      const builder = createBuilder5(this, createStyler5(style3.open, style3.close, this[STYLER5]), this[IS_EMPTY5]);
      Object.defineProperty(this, styleName, { value: builder });
      return builder;
    }
  };
}
styles13.visible = {
  get() {
    const builder = createBuilder5(this, this[STYLER5], true);
    Object.defineProperty(this, "visible", { value: builder });
    return builder;
  }
};
var getModelAnsi5 = (model, level, type2, ...arguments_) => {
  if (model === "rgb") {
    if (level === "ansi16m") {
      return ansi_styles_default6[type2].ansi16m(...arguments_);
    }
    if (level === "ansi256") {
      return ansi_styles_default6[type2].ansi256(ansi_styles_default6.rgbToAnsi256(...arguments_));
    }
    return ansi_styles_default6[type2].ansi(ansi_styles_default6.rgbToAnsi(...arguments_));
  }
  if (model === "hex") {
    return getModelAnsi5("rgb", level, type2, ...ansi_styles_default6.hexToRgb(...arguments_));
  }
  return ansi_styles_default6[type2][model](...arguments_);
};
var usedModels5 = ["rgb", "hex", "ansi256"];
for (const model of usedModels5) {
  styles13[model] = {
    get() {
      const { level } = this;
      return function(...arguments_) {
        const styler = createStyler5(getModelAnsi5(model, levelMapping5[level], "color", ...arguments_), ansi_styles_default6.color.close, this[STYLER5]);
        return createBuilder5(this, styler, this[IS_EMPTY5]);
      };
    }
  };
  const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
  styles13[bgModel] = {
    get() {
      const { level } = this;
      return function(...arguments_) {
        const styler = createStyler5(getModelAnsi5(model, levelMapping5[level], "bgColor", ...arguments_), ansi_styles_default6.bgColor.close, this[STYLER5]);
        return createBuilder5(this, styler, this[IS_EMPTY5]);
      };
    }
  };
}
var proto8 = Object.defineProperties(() => {
}, {
  ...styles13,
  level: {
    enumerable: true,
    get() {
      return this[GENERATOR5].level;
    },
    set(level) {
      this[GENERATOR5].level = level;
    }
  }
});
var createStyler5 = (open2, close2, parent2) => {
  let openAll;
  let closeAll;
  if (parent2 === void 0) {
    openAll = open2;
    closeAll = close2;
  } else {
    openAll = parent2.openAll + open2;
    closeAll = close2 + parent2.closeAll;
  }
  return {
    open: open2,
    close: close2,
    openAll,
    closeAll,
    parent: parent2
  };
};
var createBuilder5 = (self2, _styler, _isEmpty) => {
  const builder = (...arguments_) => applyStyle5(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
  Object.setPrototypeOf(builder, proto8);
  builder[GENERATOR5] = self2;
  builder[STYLER5] = _styler;
  builder[IS_EMPTY5] = _isEmpty;
  return builder;
};
var applyStyle5 = (self2, string2) => {
  if (self2.level <= 0 || !string2) {
    return self2[IS_EMPTY5] ? "" : string2;
  }
  let styler = self2[STYLER5];
  if (styler === void 0) {
    return string2;
  }
  const { openAll, closeAll } = styler;
  if (string2.includes("\x1B")) {
    while (styler !== void 0) {
      string2 = stringReplaceAll5(string2, styler.close, styler.open);
      styler = styler.parent;
    }
  }
  const lfIndex = string2.indexOf("\n");
  if (lfIndex !== -1) {
    string2 = stringEncaseCRLFWithFirstIndex5(string2, closeAll, openAll, lfIndex);
  }
  return openAll + string2 + closeAll;
};
Object.defineProperties(createChalk5.prototype, styles13);
var chalk5 = createChalk5();
var chalkStderr5 = createChalk5({ level: stderrColor5 ? stderrColor5.level : 0 });
var source_default7 = chalk5;

// src/options.ts
function makeProjectOption(description) {
  return new Option("--project", description).default(false);
}
function makeWriteTOCOption() {
  return new Option(
    "--write-toc",
    "Generate editable table of contents within your myst.yml file, if it does not exist"
  ).default(false).implies({ writeTOC: true });
}
function makeGithubPagesOption() {
  return new Option(
    "--gh-pages",
    "Creates a GitHub action that will deploy your site to GitHub pages"
  ).default(false);
}
function makeGithubCurvenoteOption() {
  return new Option(
    "--gh-curvenote",
    "Creates a GitHub action that will deploy your site to Curvenote"
  ).default(false);
}

// src/init.ts
function makeInitCLI(program3) {
  const command = new Command("init").description(`Initialize a ${readableName()} project in the current directory`).addOption(makeProjectOption(`Initialize config for ${readableName()} project content`)).addOption(makeSiteOption(`Initialize config for ${readableName()} site`)).addOption(makeWriteTOCOption()).addOption(makeGithubPagesOption()).addOption(makeGithubCurvenoteOption()).action(clirun2(Session, init2, program3, { keepAlive: true }));
  return command;
}
function addDefaultCommand(program3) {
  program3.action(async (...args) => {
    if (program3.args.length === 0) return clirun2(Session, init2, program3, { keepAlive: true })(args);
    console.error(
      `${source_default7.red(`Invalid command: `)}${source_default7.bold(program3.args.join(" "))}

${source_default7.dim(
        "See --help for a list of available commands.\n"
      )}`
    );
    console.log(program3.helpInformation());
    process.exit(1);
  });
}

// src/start.ts
function makeStartCLI(program3) {
  const command = makeStartCommand().action(
    clirun2(Session, startServer, program3, { keepAlive: true })
  );
  return command;
}

// src/templates.ts
var import_node_fs45 = __toESM(require("fs"), 1);
var import_node_path67 = require("path");
var allTemplates = [TemplateKind.tex, TemplateKind.typst, TemplateKind.docx, TemplateKind.site];
function getKindFromName(name3) {
  var _a6;
  return ((_a6 = name3.match(/^(tex|typst|docx|site)\//)) == null ? void 0 : _a6[1]) ?? void 0;
}
function getKind(session, kinds) {
  if (!kinds) return void 0;
  const { pdf, tex, typst, docx, site } = kinds;
  if (pdf) session.log.warn('PDF templates may be either "tex" or "typst", including both.');
  const flags = {
    [TemplateKind.tex]: (tex || pdf) ?? false,
    [TemplateKind.typst]: (typst || pdf) ?? false,
    [TemplateKind.docx]: docx ?? false,
    [TemplateKind.site]: site ?? false
  };
  const filteredKinds = Object.entries(flags).filter(([, v]) => !!v).map(([k]) => k);
  if (!filteredKinds || filteredKinds.length === 0) return void 0;
  return filteredKinds;
}
async function downloadTemplateCLI(session, template, path45, opts) {
  const templateKind = getKindFromName(template);
  const kinds = templateKind ? [templateKind] : getKind(session, opts);
  if (!(kinds == null ? void 0 : kinds.length)) {
    throw new Error("Cannot lookup a template without specifying a kind (e.g. typst).");
  }
  if (kinds.length > 1) {
    throw new Error("Cannot lookup a template when more than one kind is specified.");
  }
  const kind = kinds[0];
  const { templatePath: defaultTemplatePath, templateUrl } = resolveInputs(session, {
    template,
    kind,
    buildDir: session.buildPath()
  });
  const templatePath = path45 || defaultTemplatePath;
  if (!templateUrl) {
    throw new Error(`Unresolved template URL for "${template}"`);
  }
  if (import_node_fs45.default.existsSync(templatePath)) {
    if (!(opts == null ? void 0 : opts.force)) {
      session.log.error(`The template download path already exists: "${templatePath}"`);
      process.exit(1);
    }
    session.log.info(`\u{1F5D1}  Deleting path ${templatePath} due to "force" option`);
    import_node_fs45.default.rmSync(templatePath, { recursive: true });
  }
  await downloadTemplate(session, { templatePath, templateUrl });
}
async function listTemplatesCLI(session, name3, opts) {
  var _a6, _b, _c, _d2;
  const toc = tic();
  const kinds = getKind(session, opts);
  if (name3) {
    if (kinds && (kinds == null ? void 0 : kinds.length) > 1) {
      throw new Error("Cannot lookup a template with more than one kind.");
    }
    const isLocal = import_node_fs45.default.existsSync(name3) ? name3.endsWith(".yml") ? name3 : (0, import_node_path67.join)(name3, TEMPLATE_YML) : false;
    const template = isLocal ? js_yaml_default.load(import_node_fs45.default.readFileSync(isLocal).toString()) : await fetchPublicTemplate(session, name3, kinds == null ? void 0 : kinds[0]);
    if (!template.id) template.id = name3;
    session.log.debug(toc(`Found ${template.id} template in %s`));
    session.log.info(
      `${source_default7.bold.green((template.title ?? "").padEnd(30))}${source_default7.bold.blueBright(
        template.id.replace(/^(tex|typst|site|docx)\//, "").replace(/^myst\//, "")
      )}`
    );
    session.log.info(
      `ID: ${source_default7.dim(template.id)}
Version: ${source_default7.dim(template.version ?? "")}`
    );
    session.log.info(
      `Authors: ${source_default7.dim(((_a6 = template.authors) == null ? void 0 : _a6.map((a2) => a2.name).join(", ")) ?? "")}`
    );
    session.log.info(`Description: ${source_default7.dim(template.description ?? "")}`);
    session.log.info(`Tags: ${source_default7.dim(((_b = template.tags) == null ? void 0 : _b.join(", ")) ?? "")}`);
    session.log.info(source_default7.bold.blueBright(`
Parts:`));
    (_c = template.parts) == null ? void 0 : _c.map(
      (p5) => {
        var _a7;
        return session.log.info(
          `${source_default7.cyan(p5.id)}${p5.required ? source_default7.dim(" (required)") : ""} - ${(_a7 = p5.description) == null ? void 0 : _a7.trim().replace(/\n/g, "\n	")}`
        );
      }
    );
    session.log.info(source_default7.bold.blueBright(`
Options:`));
    (_d2 = template.options) == null ? void 0 : _d2.map(
      (p5) => {
        var _a7;
        return session.log.info(
          `${source_default7.cyan(p5.id)} (${p5.type})${p5.required ? source_default7.dim(" (required)") : ""} - ${(_a7 = p5.description) == null ? void 0 : _a7.trim().replace(/\n/g, "\n	")}`
        );
      }
    );
    return;
  }
  const templates = await listPublicTemplates(session, kinds ?? allTemplates);
  let filtered = templates;
  if (opts == null ? void 0 : opts.tag) {
    const tags = opts.tag.split(",").map((t2) => t2.trim());
    filtered = templates.filter((t2) => {
      const templateTags = new Set(t2.tags);
      const intersection = tags.filter((x2) => templateTags.has(x2));
      return intersection.length > 0;
    });
  }
  session.log.debug(
    toc(
      `Found ${templates.length} templates in %s${(opts == null ? void 0 : opts.tag) ? `, filtered by ${opts == null ? void 0 : opts.tag} to ${filtered.length}` : ""}`
    )
  );
  if (filtered.length === 0) {
    session.log.error(
      `No templates found for kinds "${(kinds ?? allTemplates).join(", ")}"${(opts == null ? void 0 : opts.tag) ? ` and tag "${opts.tag}"` : ""}`
    );
    process.exit(1);
  }
  filtered.forEach((template) => {
    var _a7;
    session.log.info(
      `
${source_default7.bold.green((template.title ?? "").padEnd(30))}${source_default7.bold.blueBright(
        template.id.replace(/^(tex|typst|site|docx)\//, "").replace(/^myst\//, "")
      )}
Description: ${source_default7.dim(template.description ?? "")}
Tags: ${source_default7.dim(
        ((_a7 = template.tags) == null ? void 0 : _a7.join(", ")) ?? ""
      )}`
    );
  });
}
function makeDownloadCLI(program3) {
  const command = new Command("download").description("Download a public template to a path").argument("<template>", "The template URL or name").argument("[path]", "A folder to download and unzip the template to").addOption(makePdfOption("Download PDF template")).addOption(makeTexOption("Download LaTeX template")).addOption(makeTypstOption("Download Typst template")).addOption(makeDocxOption("Download Docx template")).addOption(makeSiteOption("Download Site template")).addOption(makeForceOption("Overwrite existing downloaded templates")).action(clirun2(Session, downloadTemplateCLI, program3));
  return command;
}
function makeListCLI(program3) {
  const command = new Command("list").description("List, filter or lookup details on public templates").argument("[name]", "The optional name to list about a specific template").addOption(makePdfOption("List PDF templates")).addOption(makeTexOption("List LaTeX templates")).addOption(makeTypstOption("List Typst templates")).addOption(makeDocxOption("List Docx templates")).addOption(makeSiteOption("List Site templates")).option(
    "--tag <tag>",
    "Any tags to filter the list by multiple tags can be joined with a comma."
  ).action(clirun2(Session, listTemplatesCLI, program3));
  return command;
}
function makeTemplatesCLI(program3) {
  const command = new Command("templates").description("List and download templates").addCommand(makeListCLI(program3)).addCommand(makeDownloadCLI(program3));
  return command;
}

// src/index.ts
var { emit: originalEmit } = process;
function suppressor(event, error) {
  return event === "warning" && error.name === "DeprecationWarning" ? false : (
    // eslint-disable-next-line prefer-rest-params
    originalEmit.apply(process, arguments)
  );
}
process.emit = suppressor;
var program2 = new Command();
if (isWhiteLabelled()) {
  program2.description(
    `${readableName()} is powered by ${source_default7.blue("mystmd")}. See https://mystmd.org for more information.`
  );
}
program2.addCommand(makeInitCLI(program2));
program2.addCommand(makeBuildCLI(program2));
program2.addCommand(makeStartCLI(program2));
program2.addCommand(makeCleanCLI(program2));
program2.addCommand(makeTemplatesCLI(program2));
program2.version(`v${version_default}`, "-v, --version", `Print the current version of ${readableName()}`);
program2.option("-d, --debug", "Log out any errors to the console");
program2.option(
  "--config <config-file>",
  "Use an alternate YAML config file, named relative to the project directory"
);
addDefaultCommand(program2);
program2.parse(process.argv);
/**
 * @license
 * citations.js file is adapted from `markdown-it-citations` (Sept 2023)
 * MIT License - Martin Ring <@martinring>
 * https://github.com/martinring/markdown-it-citations
 */
/*! Bundled license information:

is-buffer/index.js:
  (*!
   * Determine if an object is a Buffer
   *
   * @author   Feross Aboukhadijeh <https://feross.org>
   * @license  MIT
   *)

classnames/index.js:
  (*!
  	Copyright (c) 2018 Jed Watson.
  	Licensed under the MIT License (MIT), see
  	http://jedwatson.github.io/classnames
  *)

is-plain-object/dist/is-plain-object.js:
  (*!
   * is-plain-object <https://github.com/jonschlinkert/is-plain-object>
   *
   * Copyright (c) 2014-2017, Jon Schlinkert.
   * Released under the MIT License.
   *)

he/he.js:
  (*! https://mths.be/he v1.2.0 by @mathias | MIT license *)

mime-db/index.js:
  (*!
   * mime-db
   * Copyright(c) 2014 Jonathan Ong
   * Copyright(c) 2015-2022 Douglas Christopher Wilson
   * MIT Licensed
   *)

mime-types/index.js:
  (*!
   * mime-types
   * Copyright(c) 2014 Jonathan Ong
   * Copyright(c) 2015 Douglas Christopher Wilson
   * MIT Licensed
   *)

queue-microtask/index.js:
  (*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)

run-parallel/index.js:
  (*! run-parallel. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)

fetch-blob/index.js:
  (*! fetch-blob. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> *)

formdata-polyfill/esm.min.js:
  (*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> *)

node-domexception/index.js:
  (*! node-domexception. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> *)

normalize-path/index.js:
  (*!
   * normalize-path <https://github.com/jonschlinkert/normalize-path>
   *
   * Copyright (c) 2014-2018, Jon Schlinkert.
   * Released under the MIT License.
   *)

is-extglob/index.js:
  (*!
   * is-extglob <https://github.com/jonschlinkert/is-extglob>
   *
   * Copyright (c) 2014-2016, Jon Schlinkert.
   * Licensed under the MIT License.
   *)

is-glob/index.js:
  (*!
   * is-glob <https://github.com/jonschlinkert/is-glob>
   *
   * Copyright (c) 2014-2017, Jon Schlinkert.
   * Released under the MIT License.
   *)

is-number/index.js:
  (*!
   * is-number <https://github.com/jonschlinkert/is-number>
   *
   * Copyright (c) 2014-present, Jon Schlinkert.
   * Released under the MIT License.
   *)

to-regex-range/index.js:
  (*!
   * to-regex-range <https://github.com/micromatch/to-regex-range>
   *
   * Copyright (c) 2015-present, Jon Schlinkert.
   * Released under the MIT License.
   *)

fill-range/index.js:
  (*!
   * fill-range <https://github.com/jonschlinkert/fill-range>
   *
   * Copyright (c) 2014-present, Jon Schlinkert.
   * Licensed under the MIT License.
   *)

docx/build/index.js:
  (*! For license information please see index.js.LICENSE.txt *)

sax/lib/sax.js:
  (*! http://mths.be/fromcodepoint v0.1.0 by @mathias *)

object-assign/index.js:
  (*
  object-assign
  (c) Sindre Sorhus
  @license MIT
  *)

vary/index.js:
  (*!
   * vary
   * Copyright(c) 2014-2017 Douglas Christopher Wilson
   * MIT Licensed
   *)

depd/index.js:
  (*!
   * depd
   * Copyright(c) 2014-2018 Douglas Christopher Wilson
   * MIT Licensed
   *)

bytes/index.js:
  (*!
   * bytes
   * Copyright(c) 2012-2014 TJ Holowaychuk
   * Copyright(c) 2015 Jed Watson
   * MIT Licensed
   *)

content-type/index.js:
  (*!
   * content-type
   * Copyright(c) 2015 Douglas Christopher Wilson
   * MIT Licensed
   *)

statuses/index.js:
  (*!
   * statuses
   * Copyright(c) 2014 Jonathan Ong
   * Copyright(c) 2016 Douglas Christopher Wilson
   * MIT Licensed
   *)

toidentifier/index.js:
  (*!
   * toidentifier
   * Copyright(c) 2016 Douglas Christopher Wilson
   * MIT Licensed
   *)

http-errors/index.js:
  (*!
   * http-errors
   * Copyright(c) 2014 Jonathan Ong
   * Copyright(c) 2016 Douglas Christopher Wilson
   * MIT Licensed
   *)

destroy/index.js:
  (*!
   * destroy
   * Copyright(c) 2014 Jonathan Ong
   * Copyright(c) 2015-2022 Douglas Christopher Wilson
   * MIT Licensed
   *)

unpipe/index.js:
  (*!
   * unpipe
   * Copyright(c) 2015 Douglas Christopher Wilson
   * MIT Licensed
   *)

raw-body/index.js:
  (*!
   * raw-body
   * Copyright(c) 2013-2014 Jonathan Ong
   * Copyright(c) 2014-2022 Douglas Christopher Wilson
   * MIT Licensed
   *)

ee-first/index.js:
  (*!
   * ee-first
   * Copyright(c) 2014 Jonathan Ong
   * MIT Licensed
   *)

on-finished/index.js:
  (*!
   * on-finished
   * Copyright(c) 2013 Jonathan Ong
   * Copyright(c) 2014 Douglas Christopher Wilson
   * MIT Licensed
   *)

body-parser/lib/read.js:
body-parser/lib/types/raw.js:
body-parser/lib/types/text.js:
body-parser/index.js:
  (*!
   * body-parser
   * Copyright(c) 2014-2015 Douglas Christopher Wilson
   * MIT Licensed
   *)

media-typer/index.js:
  (*!
   * media-typer
   * Copyright(c) 2014 Douglas Christopher Wilson
   * MIT Licensed
   *)

type-is/index.js:
  (*!
   * type-is
   * Copyright(c) 2014 Jonathan Ong
   * Copyright(c) 2014-2015 Douglas Christopher Wilson
   * MIT Licensed
   *)

body-parser/lib/types/json.js:
body-parser/lib/types/urlencoded.js:
  (*!
   * body-parser
   * Copyright(c) 2014 Jonathan Ong
   * Copyright(c) 2014-2015 Douglas Christopher Wilson
   * MIT Licensed
   *)

merge-descriptors/index.js:
  (*!
   * merge-descriptors
   * Copyright(c) 2014 Jonathan Ong
   * Copyright(c) 2015 Douglas Christopher Wilson
   * MIT Licensed
   *)

encodeurl/index.js:
encodeurl/index.js:
  (*!
   * encodeurl
   * Copyright(c) 2016 Douglas Christopher Wilson
   * MIT Licensed
   *)

escape-html/index.js:
  (*!
   * escape-html
   * Copyright(c) 2012-2013 TJ Holowaychuk
   * Copyright(c) 2015 Andreas Lubbe
   * Copyright(c) 2015 Tiancheng "Timothy" Gu
   * MIT Licensed
   *)

parseurl/index.js:
  (*!
   * parseurl
   * Copyright(c) 2014 Jonathan Ong
   * Copyright(c) 2014-2017 Douglas Christopher Wilson
   * MIT Licensed
   *)

finalhandler/index.js:
  (*!
   * finalhandler
   * Copyright(c) 2014-2022 Douglas Christopher Wilson
   * MIT Licensed
   *)

express/lib/router/layer.js:
express/lib/router/route.js:
express/lib/router/index.js:
express/lib/middleware/init.js:
express/lib/middleware/query.js:
express/lib/view.js:
express/lib/application.js:
express/lib/request.js:
express/lib/express.js:
express/index.js:
  (*!
   * express
   * Copyright(c) 2009-2013 TJ Holowaychuk
   * Copyright(c) 2013 Roman Shtylman
   * Copyright(c) 2014-2015 Douglas Christopher Wilson
   * MIT Licensed
   *)

methods/index.js:
  (*!
   * methods
   * Copyright(c) 2013-2014 TJ Holowaychuk
   * Copyright(c) 2015-2016 Douglas Christopher Wilson
   * MIT Licensed
   *)

safe-buffer/index.js:
  (*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)

content-disposition/index.js:
  (*!
   * content-disposition
   * Copyright(c) 2014-2017 Douglas Christopher Wilson
   * MIT Licensed
   *)

etag/index.js:
  (*!
   * etag
   * Copyright(c) 2014-2016 Douglas Christopher Wilson
   * MIT Licensed
   *)

fresh/index.js:
  (*!
   * fresh
   * Copyright(c) 2012 TJ Holowaychuk
   * Copyright(c) 2016-2017 Douglas Christopher Wilson
   * MIT Licensed
   *)

range-parser/index.js:
  (*!
   * range-parser
   * Copyright(c) 2012-2014 TJ Holowaychuk
   * Copyright(c) 2015-2016 Douglas Christopher Wilson
   * MIT Licensed
   *)

send/index.js:
  (*!
   * send
   * Copyright(c) 2012 TJ Holowaychuk
   * Copyright(c) 2014-2022 Douglas Christopher Wilson
   * MIT Licensed
   *)

forwarded/index.js:
  (*!
   * forwarded
   * Copyright(c) 2014-2017 Douglas Christopher Wilson
   * MIT Licensed
   *)

proxy-addr/index.js:
  (*!
   * proxy-addr
   * Copyright(c) 2014-2016 Douglas Christopher Wilson
   * MIT Licensed
   *)

express/lib/utils.js:
express/lib/response.js:
  (*!
   * express
   * Copyright(c) 2009-2013 TJ Holowaychuk
   * Copyright(c) 2014-2015 Douglas Christopher Wilson
   * MIT Licensed
   *)

negotiator/index.js:
  (*!
   * negotiator
   * Copyright(c) 2012 Federico Romero
   * Copyright(c) 2012-2014 Isaac Z. Schlueter
   * Copyright(c) 2015 Douglas Christopher Wilson
   * MIT Licensed
   *)

accepts/index.js:
  (*!
   * accepts
   * Copyright(c) 2014 Jonathan Ong
   * Copyright(c) 2015 Douglas Christopher Wilson
   * MIT Licensed
   *)

cookie/index.js:
  (*!
   * cookie
   * Copyright(c) 2012-2014 Roman Shtylman
   * Copyright(c) 2015 Douglas Christopher Wilson
   * MIT Licensed
   *)

serve-static/index.js:
  (*!
   * serve-static
   * Copyright(c) 2010 Sencha Inc.
   * Copyright(c) 2011 TJ Holowaychuk
   * Copyright(c) 2014-2016 Douglas Christopher Wilson
   * MIT Licensed
   *)

deep-extend/lib/deep-extend.js:
  (*!
   * @description Recursive object extending
   * @author Viacheslav Lotsmanov <lotsmanov89@gmail.com>
   * @license MIT
   *
   * The MIT License (MIT)
   *
   * Copyright (c) 2013-2018 Viacheslav Lotsmanov
   *
   * 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.
   *)

js-yaml/dist/js-yaml.mjs:
  (*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT *)
*/
